Files
Michał Pierzchała 2ec4e91b11 refactor(core): move the command descriptor registry into its own workspace package (#2348)
* refactor(core): move the command descriptor registry into its own package

`src/core/command-descriptor/`, `src/command-catalog.ts`, `src/core/wait-positionals.ts`
and `src/core/parse-timeout.ts` move as git renames into a new private package
`@agent-device/command-registry` (deps: contracts, selectors). One subpath per module
points straight at the moved file; no `index.ts`, no re-export at the old path. Every
consumer switches to the owning specifier.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jqfa11D8QsCMuL17SsLvDz

* test(host-kit): pin the command-registry package inside the daemon code graph

The daemon reaches the registry and its catalog only by workspace specifier. A walk
that stopped at the package boundary would report an unchanged signature after a
descriptor edit, and the client would keep reusing a daemon running the superseded
policy. The manifest is asserted beside the sources because its `exports` map is what
chose them. The cache doc comment quoting the old ~800-module graph is corrected.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jqfa11D8QsCMuL17SsLvDz

* chore(gates): point the descriptor-registry gates at the package path

R66's `COMMAND_DESCRIPTOR_MODULE`, R16's record-runtime join subject and the Fallow
`AssertTrue` totality-guard key follow the registry to its package. The two descriptor
hubs leave `HUB_ENTRY_FILES` because the package manifest now publishes them, so the
eager-closure gate discovers them as facades and one entry gets one rule; this also
flips `denyPlatformImplementations` from false (hub) to true (package entry) for both,
which is intentional and stricter. `command-registry` joins the ranked spine at rank 1.

No `APPROVED_OVER_CEILING` row: rename detection carries every moved entry's merge-base
baseline, so all twelve fall under the no-growth rule rather than a ceiling.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jqfa11D8QsCMuL17SsLvDz

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-09-06 12:55:14 +02:00

26 lines
1.2 KiB
JSON

{
"extends": "../../tsconfig.json",
"compilerOptions": {
"paths": {
"agent-device": ["../../src/sdk/index.ts"],
"agent-device/io": ["../../src/sdk/io.ts"],
"agent-device/artifacts": ["../../src/sdk/artifacts.ts"],
"agent-device/metro": ["../../src/sdk/metro.ts"],
"agent-device/batch": ["../../src/sdk/batch.ts"],
"agent-device/remote-config": ["../../src/sdk/remote-config.ts"],
"agent-device/install-source": ["../../src/sdk/install-source.ts"],
"agent-device/android-adb": ["../../src/sdk/android-adb.ts"],
"agent-device/contracts": ["../../src/sdk/contracts.ts"],
"agent-device/finders": ["../../src/sdk/finders.ts"],
"agent-device/ai-sdk": ["../../src/ai-sdk/index.ts"]
}
},
// Scoped to this directory only: these examples import `agent-device/...`
// by package name (the published export map), and `paths` above resolves
// those specifiers straight to `src/sdk/` so CI typechecks them without a
// prior build, workspace link, or publish step. Running an example for real
// still resolves `agent-device` as a self-referencing package (needs
// `pnpm build`), matching how a real consumer would import it.
"include": [".", "../../packages/command-registry/src/global.d.ts"]
}