Files
AgentHub/server/data/ai-tools/README.md
T
nntrivi2001 f8d07dab61 feat(ai-tools): omp shared + OpenCode/omp sessions, tokens, subagents; Grok hooks; resume by id
- omp-usage.js / opencode-usage.js: poll each CLI's own session store into
  sessions (tool omp/opencode), token_usage per model and subagent agents;
  transcript routes read them (omp journals, OpenCode's opencode.db).
- Grok runs the Claude hooks in ~/.claude/settings.json: its hooks are now
  recognised (hookEventName + workspaceRoot), tagged tool=grok, and their
  transcript_path dropped instead of being parsed as a Claude transcript.
- Catalog `resumeById`: omp/Grok/Cursor `--resume <id>`, OpenCode
  `--session <id>`; session ids may carry `_`. The client offers Resume for
  any tool that resumes by id.
- Kimi Code and GitHub Copilot leave the catalog (their session stores could
  not be verified).
2026-10-19 16:49:59 +07:00

43 lines
2.1 KiB
Markdown

# AI Tools catalog
One JSON file per AI coding CLI AgentHub can run in a lane. Loaded by
`server/lib/ai-tools.js`; the fields are described in
`docs/superpowers/specs/2026-09-28-ai-tools-a1-design.md` § 1. A file in
`DASHBOARD_AI_TOOLS_DIR` with the same `id` replaces the built-in one (it may
not set `launcher`).
## Resume by id
`resumeById` (string array, e.g. `["--resume"]`): the flag(s) a NAMED session's
id follows, as one more argv element — `pty-run.js` emits them in place of
`resume` when a start carries `resumeSessionId`, and only for an id that starts
with a letter or digit. A tool without it (and without a `launcher`) refuses a
resume by id (`EUNSUPPORTED`) rather than start fresh under a "resume".
Built-in: omp, Grok and Cursor (`--resume`), OpenCode (`--session`). A session id may carry `_` (OpenCode's `ses_…`).
## Install / update (A2)
Two optional fields, honoured only in built-in files and in the copy of the
newest release's catalog that `server/lib/ai-tools-sync.js` keeps in
`<data dir>/runtime/ai-tools-remote/` — a file in `DASHBOARD_AI_TOOLS_DIR`
carrying either is rejected, because an Install click would run what it names:
- `install`: `{ "kind": "npm", "package": "<npm name>" }` (runs
`npm install -g <package>@latest` with the login shell's npm) or
`{ "kind": "script", "url": "https://…" }` (https, same site — last two host
labels — as `homepageUrl`; downloaded by the server, run as `bash <file>`).
- `update`: `{ "kind": "npm" }` or `{ "kind": "script" }` (reuse `install`),
or `{ "kind": "self", "args": ["update"] }` (the tool's own updater).
Before adding an npm package, check its owner (`npm view <pkg> maintainers
repository.url`) and that its `bin` matches `detect`: a squatted name would
install a stranger's code on every machine that clicks Install.
## Attribution
The commands, prompt modes, permission-bypass flags and homepages of the tools
other than Claude Code, Codex and Antigravity come from Orca
(<https://github.com/stablyai/orca>, MIT License, Copyright (c) Stably AI):
`src/renderer/src/lib/agent-catalog.tsx`, `src/shared/tui-agent-config.ts` and
`src/shared/tui-agent-permissions.ts`.