Skip to content

chore: version packages - #378

Closed
github-actions[bot] wants to merge 1 commit into
masterfrom
changeset-release/master
Closed

chore: version packages#378
github-actions[bot] wants to merge 1 commit into
masterfrom
changeset-release/master

Conversation

@github-actions

Copy link
Copy Markdown

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to master, this PR will be updated.

Releases

aicodeman@1.25.0

Minor Changes

  • 4830e66: CLI backends are now a data-driven registry instead of a hardcoded set of run modes. Every
    CLI (Claude Code, Terminal/Shell, OpenCode, Codex, Gemini, Antigravity, Pi, Grok, DeepSeek
    Harness and OMP) is a CliEntry in src/config/cli-registry/, and the code that used to
    branch on a CLI's name now reads capability flags off that entry instead.

    This is an internal refactor with no behaviour change: no new endpoints, no new settings,
    no change to any request or response shape, and the spawn command every CLI receives is
    byte-identical to what the hand-written builders produced. test/cli-registry-spawn-golden.test.ts
    pins those command lines as literal strings, captured from the previous builders before they
    were removed, and test/location-overlay-commands.test.ts does the same for every remote and
    in-container pane command.

    What the registry owns: binary discovery (search paths, version and identity probes), the
    launch argv template, environment handling (exports, tmux setenv keys, the env-override
    allowlist), the multi-user privileged-parameter and privileged-env-key clamps, the
    remote/docker location overlays, and the behavioural capabilities the rest of the app reads
    (isExternalCliMode, isAltScreenStripMode, hooksAvailableForMode, alt-screen strip class,
    echo policy, transcript format, and friends). codeman doctor's per-CLI rows are generated
    from the same entries, so its version rules and the run modes' resolvers can no longer
    disagree about whether a given binary counts as installed.

    Registry data is resolved at call time, never frozen at module import: session-mode and
    env-prefix validation, the doctor's tool list, and each resolver's search directories all
    re-read the catalog, so a CLI enabled while the server is running moves every surface at once
    rather than only the run menu.

    Four user-visible changes, all small and all deliberate:

    • probeDockerCliVersion() derives the in-container binary name from the registry rather
      than assuming it equals the mode name. Only Claude reaches that path today, so nothing was
      broken in practice, but antigravity runs agy and the assumption would not have survived
      the next CLI that needs a version.
    • The remote CLI version probe now covers Grok and DeepSeek, which the hardcoded map it
      replaces simply omitted — its own comment said the rule was "every mode except shell", so
      the two were an oversight from when those CLIs were added, and a remote session in either
      mode reported no version at all.
    • OMP now requires tmux like its seven siblings. session.ts carried a hand-written list of
      modes with no direct-PTY fallback and omp was missing from it, even though CLAUDE.md's own
      text says "all eight require tmux" — so an omp session whose mux creation failed silently
      fell back to a direct PTY. requiresMux comes off the entry now, so the list cannot drift
      from the rule again.
    • codeman doctor's CLI rows come from the registry, so Claude's install hint is now the
      documented install command rather than a docs URL, five CLIs gain install hints they never
      had, and the row order follows the catalog (Claude now sorts below tmux).

    A user-editable ~/.codeman/clis.json can override any stock entry or add a custom CLI. It
    is READ-ONLY in this release — nothing writes it, so importing the registry has no filesystem
    side effects. Config never contains shell text: an entry declares typed argv tokens, every
    literal is validated against a safe-word pattern at load, and values resolve through named
    patterns that live in code, so a clis.json cannot widen its own validation.
    test/cli-registry-no-id-branching.test.ts fails the build if per-CLI-id branching reappears
    outside the stock catalog, in any of its four shapes (===, !==, switch/case, and
    includes).

@github-actions
github-actionsBotforce-pushed the changeset-release/master branch from 146a2de to 7bf50f4CompareSeptember 4, 2026 12:00
@github-actions
github-actionsBotforce-pushed the changeset-release/master branch from 7bf50f4 to 0328b86CompareSeptember 4, 2026 12:02
@Ark0N

Ark0N commented Sep 4, 2026

Copy link
Copy Markdown
Owner

Closing: 1.24.6 was released manually from master (commit 8062656), which already consumed this changeset. Master is a strict superset of this PR: package.json is at 1.24.6, .changeset/cli-registry-core.md is gone, and CHANGELOG.md carries the #347 entry (folded into one patch-level note together with #355 and #356). Merging this would re-apply a stale, narrower changelog.

@Ark0NArk0N closed this Sep 4, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@Ark0N