first commit

This commit is contained in:
aygea committed 2026-10-19 22:00:17 -07:00
commit 9ad073d4fc
3 files changed
+1051

No files matched your search

+99
View File
@@ -0,0 +1,99 @@
# mcode-status
Aygea-branded **z.ai GLM usage** segment for the [MiniMax Code](https://codex.minimaxi.com) statusline — shows your current 5-hour token-window burn right in the TUI:
```
🔥 23% · 4:12p(2h14m)
```
Styled with the Aygea palette (blue → lavender → pink as the window fills), rendered via mcode's `colorMode: ansi` statusline option, with plain-text fallback.
## Install (one line)
```bash
curl -fsSL https://git.itsaygea.com/admin/mcode-sl/raw/branch/main/install.sh | bash
```
The installer is self-contained (the statusline script is embedded in it) and:
1. installs `~/.local/bin/mcode-zai-usage`
2. checks SecretVault for your `zai_api_key` secret (never prints it)
3. merges the `tui:` section into `~/.minimax/config.yaml` — atomic write, timestamped backup, refuses ambiguous structures, everything outside the `tui:` block stays byte-identical
4. primes the quota cache so the segment appears immediately
Then **restart the MiniMax Code TUI**.
## Secret setup (once per machine)
This looks like an example entry, but it's the actual setup: create a SecretVault secret named `zai_api_key` holding your z.ai API key (for `https://api.z.ai`):
- via the SecretVault MCP `create_secret` tool in any agent session, or your usual SecretVault flow
No key in the repo, no key in argv, no key in the config file — the statusline reads it at runtime with `secretvault run`. A legacy `~/.secretvault/credential.json` (`url` + `clientKey`, the Claude-statusline layout) also works as a fallback.
## No cron, no systemd
MiniMax Code re-runs the command every `intervalSeconds` — mcode *is* the scheduler. The script never blocks the TUI on the network: display comes from a local cache, and a detached, flock-guarded background job refreshes it when the cache is >150s old (sharing `~/.cache/aygea-sl/quota.json` with the Aygea Claude statusline if both are installed).
## Config (managed in `~/.minimax/config.yaml`)
```yaml
tui:
statusLine:
- current-dir
- git-branch
- approval-mode
- model-with-reasoning
- context-remaining
- custom-command
customStatusLine:
command: /home/you/.local/bin/mcode-zai-usage
intervalSeconds: 60
timeoutMs: 10000
colorMode: ansi
```
Installer env overrides: `MCODE_SL_ITEMS` (item list), `MCODE_SL_INTERVAL`, `MCODE_SL_TIMEOUT`, `MCODE_SL_SECRET`.
## Script env tunables
| Variable | Default | Meaning |
|---|---|---|
| `AYGEA_SL_SECRET_NAME` | `zai_api_key` | SecretVault secret name |
| `AYGEA_SL_URL` | `https://api.z.ai` | quota API base URL |
| `AYGEA_SL_NO_VAULT=1` | off | skip SecretVault, use credential.json |
| `AYGEA_SL_QUOTA_CACHE` | `~/.cache/aygea-sl/quota.json` | cache path |
| `AYGEA_SL_REFRESH_AFTER` | `150` | refresh when cache older (sec) |
| `AYGEA_SL_MAX_AGE` | `360` | hide when cache older (sec) |
| `AYGEA_SL_CURL_TIMEOUT` | `6` | per-fetch curl `--max-time` |
| `AYGEA_SL_ONLY_GLM=1` | off | show only for glm models |
| `AYGEA_SL_MEM=1` | off | prepend an 🧠 memory segment (Linux/macOS) |
| `NO_COLOR` | — | plain text output |
## Uninstall
```bash
curl -fsSL https://git.itsaygea.com/admin/mcode-sl/raw/branch/main/install.sh | bash -s -- --uninstall
```
## Development
Requires `jq` + `curl`; `secretvault` optional (fallback: credential.json); `python3` for the config merge. Test locally:
```bash
printf '{}' | ./zai-usage.sh # statusline preview
./zai-usage.sh --refresh # one foreground refresh
```
`install.sh` embeds a copy of `zai-usage.sh` for `curl | bash` installs; checkout installs prefer the sibling file. After editing `zai-usage.sh`, regenerate the embedded copy:
```bash
python3 - <<'EOF'
import re
src = open('zai-usage.sh').read(); assert src.endswith("\n")
ins = open('install.sh').read()
new = re.sub(r"(cat <<'ZAI_EMBED_EOF'\n).*?ZAI_EMBED_EOF\n",
lambda m: m.group(1) + src + "ZAI_EMBED_EOF\n", ins, flags=re.S)
open('install.sh', 'w').write(new)
EOF
```