adom-vscode-macos
Public Made by Adomby adom
macOS Hydrogen line of adom-vscode: the same CLI + VS Code extension (same extension id, same :8821 API) built natively for the arm64 Linux workspace Hydrogen runs on a Mac, minus the AI title bar (Hydrogen's agent bar and AI accounts popup own the title bar there). Installs over adom/adom-vscode; Hydrogen keeps this line registered. Upstream: adom-inc/adom-vscode.
name: adom-vscode-extensions description: "Query and manage VS Code extensions in the Adom container: list installed with versions and running state, get one extension's detail plus whether a newer gallery version exists, update one or all, search, install. Includes the AI assistant summary (claude = anthropic.claude-code, codex = openai.chatgpt, kimi = moonshot-ai.kimi-code). Trigger words: is claude installed, claude extension version, codex extension, kimi extension, list extensions, extension version, update extension, extension update pending, install extension, search extensions, extension running, extension state, workbench extensions, open-vsx latest, update claude code extension."
Parent skill: adom-vscode
adom-vscode-extensions, query and update extensions
List and query
adom-vscode extensions list # non-builtin extensions + the AI summary
adom-vscode extensions list --all # include VS Code builtins
adom-vscode extensions status anthropic.claude-code # version + active state
adom-vscode extensions status anthropic.claude-code --latest # + gallery check
listreturns{count, ai, extensions}. Each entry:{id, displayName, version, active, builtin, path}.activeis whether the extension host has activated it (running), not merely installed.- The
aiobject maps the AI assistants directly,nullwhen absent: claudeanthropic.claude-code, codexopenai.chatgpt, kimimoonshot-ai.kimi-code, antigravitygoogle.google-antigravity.GET /ai/providersis the authoritative list (it also reports each provider's command, surfaces and CLI). --latestqueries the Open VSX gallery (code-server's registry) and returnslatestVersion+updateAvailable. Best-effort with a 3s cap:latestVersion: nullmeans the gallery was unreachable or the extension is not published there, NOT that it is current.
HTTP: GET /extensions, GET /extensions?all=1, GET /extensions?id=<id>&latest=1.
Update
adom-vscode extensions update anthropic.claude-code # one extension
adom-vscode extensions update # all extensions
Updates download in the background; the NEW version only activates on a window
reload. So the honest report to a user is "update requested, activates on
reload", and extensions status <id> keeps showing the running (old) version
until then. Warn before reloading: adom-vscode reload kills active Claude
Code sessions.
HTTP: POST /extensions/update {id?} (omit id for all).
Search and install
adom-vscode extensions search "python" # opens the Extensions sidebar with the query
adom-vscode extensions install ms-python.python # install by marketplace id
HTTP: POST /extensions/search {query}, POST /extensions/install {id}.
AI buttons in the editor title bar (macOS line)
The macOS line of adom-vscode ships NO title-bar script: the AI buttons next to VS Code's layout
controls come from Hydrogen's own agent-bar extension (one button per signed-in agent), and which
buttons and activity-bar icons show at all is Hydrogen's editor chrome policy (GET/POST /agents/chrome on the Hydrogen control port; the AI accounts popup's "Editor buttons & sidebar"
section edits it). adom-vscode contributes nothing to those two surfaces and has no icon settings.
Upstream adom-vscode (John's Windows line) still draws its own title bar via browser/ai-titlebar.js;
the macOS installer strips that block if an upstream install left one behind.
For callers:
adom-vscode ai providers # installed? command? icon shown?
adom-vscode ai new '{"type":"codex"}' # a Codex thread in the active group
adom-vscode ai new '{"type":"claude","group":2}' # in editor group 2 (1-based)
adom-vscode ai new '{"type":"claude","tui":true}' # the Claude CLI in a terminal tab
adom-vscode tabs close '{"label":"Claude Code"}' # clean up after a test (exact label, or kind)
adom-vscode tabs reload # close + reopen the active (else first) Codex tab
adom-vscode tabs reload '{"resource_contains":"local/<threadId>"}' # one conversation by resource
Package updates from the editor (1.1.99). The Adom sidebar's Packages section shows the
countdown to the next background package check (adom/hook's cron runs on the hour and the half
hour) and the last run's time and verdict. Its Update now button, the palette entry "Update Adom
packages now", or POST /packages/update runs adom-wiki pkg update in a terminal named "Adom packages"
so the whole stream is visible; nothing is captured or parsed. An updated adom-vscode activates
only on the next window reload: adom-vscode install now asks the running host (POST /notify
with actions: [{label, command}]) to show a toast with a Reload now button, and until the
reload the old version keeps running.
"Codex could not start its user interface": reload that tab, nothing else (John 2026-09-18:
"just reload the tab seems to do the trick"). POST /tabs/reload (the verb above) closes the
Codex tab and reopens the same conversation in the same column; the user has the same action on
the tab's right-click menu as Reload Codex tab (1.1.94). Nothing polls for the error: the menu
entry is declarative and the verb runs only when called, so never add a watcher around it.
POST /ai/new answers {ok, type, command, tab_seen, label, group, placed, ms}; placed is
stayed or moved a -> b. Antigravity answers surface: "tab" (its extension's editor-panel
mode, a new conversation in the tab while the side bar keeps its own; two conversations is the
ceiling) or, with surface:"sidebar" in the body, moves it back to the side bar. /ai/providers
lists surfaces per AI. An AI that is not installed answers ok:false with the provider
list, so never guess: read installed. Hydrogen's /ai-threads/new remains the route for
anything that also wants tags, names, the AI picker, or a run-prompt job.
Gotchas
- An extension can be installed but
active: false(activates lazily). For the AI assistants, active = the assistant's panel/agent is actually live. - Version directories accumulate on disk (
~/.local/share/code-server/extensions/); theversionreported by these verbs is the RUNNING one, trust it overls.
---
name: adom-vscode-extensions
description: "Query and manage VS Code extensions in the Adom container: list installed with versions and running state, get one extension's detail plus whether a newer gallery version exists, update one or all, search, install. Includes the AI assistant summary (claude = anthropic.claude-code, codex = openai.chatgpt, kimi = moonshot-ai.kimi-code). Trigger words: is claude installed, claude extension version, codex extension, kimi extension, list extensions, extension version, update extension, extension update pending, install extension, search extensions, extension running, extension state, workbench extensions, open-vsx latest, update claude code extension."
---
Parent skill: **adom-vscode**
# adom-vscode-extensions, query and update extensions
## List and query
```bash
adom-vscode extensions list # non-builtin extensions + the AI summary
adom-vscode extensions list --all # include VS Code builtins
adom-vscode extensions status anthropic.claude-code # version + active state
adom-vscode extensions status anthropic.claude-code --latest # + gallery check
```
- `list` returns `{count, ai, extensions}`. Each entry: `{id, displayName,
version, active, builtin, path}`. `active` is whether the extension host has
activated it (running), not merely installed.
- The `ai` object maps the AI assistants directly, `null` when absent: claude
`anthropic.claude-code`, codex `openai.chatgpt`, kimi `moonshot-ai.kimi-code`,
antigravity `google.google-antigravity`. `GET /ai/providers` is the authoritative
list (it also reports each provider's command, surfaces and CLI).
- `--latest` queries the Open VSX gallery (code-server's registry) and returns
`latestVersion` + `updateAvailable`. Best-effort with a 3s cap: `latestVersion:
null` means the gallery was unreachable or the extension is not published
there, NOT that it is current.
HTTP: `GET /extensions`, `GET /extensions?all=1`, `GET /extensions?id=<id>&latest=1`.
## Update
```bash
adom-vscode extensions update anthropic.claude-code # one extension
adom-vscode extensions update # all extensions
```
Updates download in the background; the NEW version only activates on a window
reload. So the honest report to a user is "update requested, activates on
reload", and `extensions status <id>` keeps showing the running (old) version
until then. Warn before reloading: `adom-vscode reload` kills active Claude
Code sessions.
HTTP: `POST /extensions/update {id?}` (omit `id` for all).
## Search and install
```bash
adom-vscode extensions search "python" # opens the Extensions sidebar with the query
adom-vscode extensions install ms-python.python # install by marketplace id
```
HTTP: `POST /extensions/search {query}`, `POST /extensions/install {id}`.
## AI buttons in the editor title bar (macOS line)
The macOS line of adom-vscode ships NO title-bar script: the AI buttons next to VS Code's layout
controls come from Hydrogen's own agent-bar extension (one button per signed-in agent), and which
buttons and activity-bar icons show at all is Hydrogen's **editor chrome policy** (`GET/POST
/agents/chrome` on the Hydrogen control port; the AI accounts popup's "Editor buttons & sidebar"
section edits it). adom-vscode contributes nothing to those two surfaces and has no icon settings.
Upstream adom-vscode (John's Windows line) still draws its own title bar via `browser/ai-titlebar.js`;
the macOS installer strips that block if an upstream install left one behind.
For callers:
```bash
adom-vscode ai providers # installed? command? icon shown?
adom-vscode ai new '{"type":"codex"}' # a Codex thread in the active group
adom-vscode ai new '{"type":"claude","group":2}' # in editor group 2 (1-based)
adom-vscode ai new '{"type":"claude","tui":true}' # the Claude CLI in a terminal tab
adom-vscode tabs close '{"label":"Claude Code"}' # clean up after a test (exact label, or kind)
adom-vscode tabs reload # close + reopen the active (else first) Codex tab
adom-vscode tabs reload '{"resource_contains":"local/<threadId>"}' # one conversation by resource
```
**Package updates from the editor (1.1.99).** The Adom sidebar's Packages section shows the
countdown to the next background package check (adom/hook's cron runs on the hour and the half
hour) and the last run's time and verdict. Its Update now button, the palette entry "Update Adom
packages now", or `POST /packages/update` runs `adom-wiki pkg update` in a terminal named "Adom packages"
so the whole stream is visible; nothing is captured or parsed. An updated adom-vscode activates
only on the next window reload: `adom-vscode install` now asks the running host (`POST /notify`
with `actions: [{label, command}]`) to show a toast with a **Reload now** button, and until the
reload the old version keeps running.
**"Codex could not start its user interface"**: reload that tab, nothing else (John 2026-09-18:
"just reload the tab seems to do the trick"). `POST /tabs/reload` (the verb above) closes the
Codex tab and reopens the same conversation in the same column; the user has the same action on
the tab's right-click menu as **Reload Codex tab** (1.1.94). Nothing polls for the error: the menu
entry is declarative and the verb runs only when called, so never add a watcher around it.
`POST /ai/new` answers `{ok, type, command, tab_seen, label, group, placed, ms}`; `placed` is
`stayed` or `moved a -> b`. Antigravity answers `surface: "tab"` (its extension's editor-panel
mode, a new conversation in the tab while the side bar keeps its own; two conversations is the
ceiling) or, with `surface:"sidebar"` in the body, moves it back to the side bar. `/ai/providers`
lists `surfaces` per AI. An AI that is not installed answers `ok:false` with the provider
list, so never guess: read `installed`. Hydrogen's `/ai-threads/new` remains the route for
anything that also wants tags, names, the AI picker, or a run-prompt job.
## Gotchas
- An extension can be installed but `active: false` (activates lazily). For the
AI assistants, active = the assistant's panel/agent is actually live.
- Version directories accumulate on disk (`~/.local/share/code-server/extensions/`);
the `version` reported by these verbs is the RUNNING one, trust it over `ls`.