diff --git a/docs/dependency-graph-findings.md b/docs/dependency-graph-findings.md index 5890e98888..348531670e 100644 --- a/docs/dependency-graph-findings.md +++ b/docs/dependency-graph-findings.md @@ -111,7 +111,7 @@ with `command`/`positionals` `Pick`ed from the wire so they cannot drift from it resolver already read only those three, in two spellings (the full type and a `Pick` of it); one narrow name replaced both. -**The remaining 5 are positions, not debt** — each for a mechanical reason, not an appeal to an ADR: +**The remaining 4 are positions, not debt** — each for a mechanical reason, not an appeal to an ADR: - **4 × `AgentDeviceClient`** (`commands/command-contract.ts`, `commands/command-surface.ts`, `commands/family/types.ts`, `mcp/command-tools.ts`). The zone-level type cycle this bullet used to @@ -120,11 +120,13 @@ narrow name replaced both. facade above `commands/` is the remaining argument: a narrower port does not exist — 4 files *name* the facade, but 26 call sites use methods across 13 of its namespaces, so any port would re-declare it. -- **1 × `DaemonCommandRoute`** (`commands/command-explain.ts`). The union lives in core so - descriptors can name a route without importing the daemon, and the handler table covers it with - `satisfies Record`. `command-explain.ts` still type-imports the re-export - from `daemon-command-registry.ts` to key an exhaustive owner-file map; that remaining inversion - is the commands-zone consumer, not a second source of truth for the union. + +Retired by #2543: the **1 × `DaemonCommandRoute`** inversion whose only commands-zone consumer was +`command-explain.ts`. The union lives in core so descriptors can name a route without importing the +daemon; the explainer only type-imported the `daemon-command-registry.ts` re-export to key an +exhaustive owner-file map. #2543 relocated `command-explain.ts` to the `cli/` zone — above +`daemon-server` — so that consumer's type import no longer outranks its target, and the +`commands -> daemon-server` R6 pair fell to zero. All remaining inversions are argued here. R6 (`scripts/layering/type-inversion-ratchet.ts`) records no numbers of its own: its reference is the same count taken at the merge-base with `origin/main`, diff --git a/packages/command-registry/package.json b/packages/command-registry/package.json index c959f6a287..3fef336010 100644 --- a/packages/command-registry/package.json +++ b/packages/command-registry/package.json @@ -87,6 +87,10 @@ "types": "./src/command-text.ts", "default": "./src/command-text.ts" }, + "./command-schema": { + "types": "./src/command-schema.ts", + "default": "./src/command-schema.ts" + }, "./cli-command-aliases": { "types": "./src/cli-command-aliases.ts", "default": "./src/cli-command-aliases.ts" diff --git a/src/cli-schema/types.ts b/packages/command-registry/src/command-schema.ts similarity index 91% rename from src/cli-schema/types.ts rename to packages/command-registry/src/command-schema.ts index 61a2bdd22a..c4e03c1fd4 100644 --- a/src/cli-schema/types.ts +++ b/packages/command-registry/src/command-schema.ts @@ -1,5 +1,5 @@ -import type { FlagKey } from '@agent-device/command-registry/flag-types'; -import type { CommandText } from '@agent-device/command-registry/command-text'; +import type { FlagKey } from './flag-types.ts'; +import type { CommandText } from './command-text.ts'; /** * Command grammar plus its resolved text. Prose lives entirely in `text`; everything else here diff --git a/scripts/explain-command.ts b/scripts/explain-command.ts index 003ef59e50..e0d5a4e279 100644 --- a/scripts/explain-command.ts +++ b/scripts/explain-command.ts @@ -1,7 +1,7 @@ import fs from 'node:fs'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; -import { explainCommand, formatCommandExplanation } from '../src/commands/command-explain.ts'; +import { explainCommand, formatCommandExplanation } from '../src/cli/command-explain.ts'; import { getDaemonRouteOwnerFiles } from '../src/daemon/route-owner-files.ts'; const repoRoot = path.resolve(import.meta.dirname, '..'); diff --git a/scripts/layering/check.ts b/scripts/layering/check.ts index 55ca538d9d..4f41cbf9cf 100644 --- a/scripts/layering/check.ts +++ b/scripts/layering/check.ts @@ -7,6 +7,9 @@ // ◄ { client, daemon-server } ◄ daemon-client ◄ cli // (authoritative ranks: `TARGET_DAG_RANK` in model.ts. The former rank-0 kernel // zone lives in packages/kernel since #1490 W0; R11 owns its boundary.) +// `commands` and `cli-schema` share a rank, so the spine cannot order them; R2 declares the +// direction instead — cli-schema renders the command facets and reads them, commands never +// imports cli-schema (#2543). // // This gate enforces five things, across four scopes: // - GLOBALLY, across every production source file: the remaining R2 move rule and diff --git a/scripts/layering/zone-policy.test.ts b/scripts/layering/zone-policy.test.ts index 3b999bc630..315a44a4a2 100644 --- a/scripts/layering/zone-policy.test.ts +++ b/scripts/layering/zone-policy.test.ts @@ -44,6 +44,22 @@ test('R2 commands-floor closes the remaining zones below the command surface, wh assert.deepEqual(firing(edge('src/mcp/tools.ts', 'mcp', 'commands')), []); }); +test('R2 commands-floor places commands below the cli-schema layer, whatever the kind', () => { + // #2543: cli-schema renders the facets commands authors, so it reads commands and commands never + // reads it back. The direction holds for value, type-only, and dynamic forms alike. + for (const kind of [{}, { typeOnly: true }, { dynamic: true }]) { + assert.ok( + firing(edge('src/commands/thing.ts', 'commands', 'cli-schema', kind)).includes( + 'R2 commands-floor', + ), + `commands -> cli-schema ${JSON.stringify(kind)} must violate R2`, + ); + } + + // The declared direction — cli-schema reading the facets — must stay silent. + assert.deepEqual(firing(edge('src/cli-schema/command-schema.ts', 'cli-schema', 'commands')), []); +}); + test('the retired R3 platforms seam has no zone-policy declaration', () => { assert.equal( ZONE_POLICIES.some(({ rule }) => rule === 'R3 platforms-seam'), diff --git a/scripts/layering/zone-policy.ts b/scripts/layering/zone-policy.ts index 8d4a79da45..c14d48fd12 100644 --- a/scripts/layering/zone-policy.ts +++ b/scripts/layering/zone-policy.ts @@ -43,6 +43,11 @@ export type ZonePolicy = { * R1 kernel-sink retired 2026-07-30 (#1490 W0): the kernel moved to * packages/kernel, where package resolution and R11 package-boundaries enforce * the sink property physically — a package cannot import root src at all. + * + * The two rows share `R2 commands-floor`: both state that commands sits at a floor and is read + * from above. The first keeps `core`/`daemon` below it; the second places `cli-schema` above it, + * so commands may not import the schema layer that renders its facets (#2543 declared the + * direction after the shared schema grammar moved down to the command registry). */ export const ZONE_POLICIES: readonly ZonePolicy[] = [ { @@ -53,6 +58,15 @@ export const ZONE_POLICIES: readonly ZonePolicy[] = [ 'commands/ is the command surface, above these zones. Depend on shared kernel/contracts ' + 'instead; if two zones need the same rule, put the rule below both of them.', }, + { + rule: 'R2 commands-floor', + from: ['commands'], + to: ['cli-schema'], + hint: + 'cli-schema is the CLI/MCP schema layer that renders the command facets, so it sits above ' + + 'commands and reads them; commands must not import it back. The shared CommandSchema type and ' + + 'flag grammar live in @agent-device/command-registry, below both zones.', + }, ]; function kindOf(imp: ImportEdge): 'type-only' | 'dynamic' | 'value' { diff --git a/src/cli-schema/cli-config.ts b/src/cli-schema/cli-config.ts index 7049e81036..4ae111632e 100644 --- a/src/cli-schema/cli-config.ts +++ b/src/cli-schema/cli-config.ts @@ -4,7 +4,7 @@ import path from 'node:path'; import { AppError } from '@agent-device/kernel/errors'; import { mergeDefinedFlags } from './merge-flags.ts'; import { type FlagKey } from '@agent-device/command-registry/flag-types'; -import { projectConfigFlagKeys } from './command-schema.ts'; +import { projectConfigFlagKeys } from '@agent-device/command-registry/flag-registry'; import { expandUserHomePath, resolveUserPath } from '@agent-device/host-kit/file'; import { getConfigurableOptionSpecs, diff --git a/src/cli-schema/command-overrides.ts b/src/cli-schema/command-overrides.ts index a6db46f202..9b51baab1b 100644 --- a/src/cli-schema/command-overrides.ts +++ b/src/cli-schema/command-overrides.ts @@ -1,7 +1,7 @@ import type { CommandName } from '../commands/command-metadata.ts'; import { listCommandFamilyCliSchemas } from '../commands/family/registry.ts'; import type { LocalCliCommandName } from '@agent-device/command-registry/catalog'; -import type { CommandSchema } from './types.ts'; +import type { CommandSchema } from '@agent-device/command-registry/command-schema'; import { COMMON_COMMAND_SUPPORTED_FLAG_KEYS, METRO_PREPARE_FLAGS, diff --git a/src/cli-schema/command-schema.ts b/src/cli-schema/command-schema.ts index 3f71dd50ba..ba02aa4593 100644 --- a/src/cli-schema/command-schema.ts +++ b/src/cli-schema/command-schema.ts @@ -1,11 +1,10 @@ import type { CliCommandName } from '@agent-device/command-registry/catalog'; import { listCommandMetadata } from '../commands/command-metadata.ts'; -import type { CommandSchema } from './types.ts'; +import type { CommandSchema } from '@agent-device/command-registry/command-schema'; import { getCliCommandOverride, getSchemaOnlyCliCommandSchema } from './command-overrides.ts'; import { getFlagDefinition, getFlagDefinitions, - projectConfigFlagKeys, } from '@agent-device/command-registry/flag-registry'; import { COMMON_COMMAND_SUPPORTED_FLAG_KEYS, @@ -17,13 +16,7 @@ import { AppError } from '@agent-device/kernel/errors'; export type { FlagDefinition, FlagKey }; export type { CommandSchema }; -export { - DEVICE_SELECTION_FLAG_KEYS, - getFlagDefinition, - getFlagDefinitions, - GLOBAL_FLAG_KEYS, - projectConfigFlagKeys, -}; +export { DEVICE_SELECTION_FLAG_KEYS, getFlagDefinition, getFlagDefinitions, GLOBAL_FLAG_KEYS }; // Bases hold only the flags every command supports; prose arrives with the facet's schema, // which always carries a complete `text`. diff --git a/src/commands/__tests__/command-explain.test.ts b/src/cli/__tests__/command-explain.test.ts similarity index 100% rename from src/commands/__tests__/command-explain.test.ts rename to src/cli/__tests__/command-explain.test.ts diff --git a/src/commands/command-explain.ts b/src/cli/command-explain.ts similarity index 99% rename from src/commands/command-explain.ts rename to src/cli/command-explain.ts index 5070d0c4ad..cf966e69e5 100644 --- a/src/commands/command-explain.ts +++ b/src/cli/command-explain.ts @@ -16,7 +16,7 @@ import { type FlagDefinition, type FlagKey, } from '../cli-schema/command-schema.ts'; -import { commandFamilies, type CommandFamilyMetadata } from './family/registry.ts'; +import { commandFamilies, type CommandFamilyMetadata } from '../commands/family/registry.ts'; export type CommandFlagExplanation = { key: FlagKey; diff --git a/src/commands/__tests__/command-surface-metadata.test.ts b/src/commands/__tests__/command-surface-metadata.test.ts index d067291531..1fb4ca173d 100644 --- a/src/commands/__tests__/command-surface-metadata.test.ts +++ b/src/commands/__tests__/command-surface-metadata.test.ts @@ -21,7 +21,7 @@ import { } from '../family/registry.ts'; import { listExecutableCommandNames } from '../command-surface.ts'; import { helpBody, mcpBody } from '@agent-device/command-registry/command-text'; -import { explainCommand } from '../command-explain.ts'; +import { explainCommand } from '../../cli/command-explain.ts'; import { getDaemonRouteOwnerFiles } from '../../daemon/route-owner-files.ts'; test('MCP exposed command names have metadata and executable command definitions', () => { diff --git a/src/commands/batch/index.ts b/src/commands/batch/index.ts index 7f09d9c698..04f090ad9d 100644 --- a/src/commands/batch/index.ts +++ b/src/commands/batch/index.ts @@ -1,5 +1,5 @@ import type { BatchRunOptions } from '@agent-device/contracts/client'; -import type { CommandSchemaOverride } from '../../cli-schema/types.ts'; +import type { CommandSchemaOverride } from '@agent-device/command-registry/command-schema'; import { commonInputFromFlags } from '../cli-grammar/common.ts'; import type { CliReader } from '../cli-grammar/types.ts'; import { defineCommandFacet, defineCommandFamilyFromFacets } from '../family/types.ts'; diff --git a/src/commands/capture/settings.ts b/src/commands/capture/settings.ts index d6fa688409..24c6b762cf 100644 --- a/src/commands/capture/settings.ts +++ b/src/commands/capture/settings.ts @@ -1,7 +1,7 @@ import { PUBLIC_COMMANDS } from '@agent-device/command-registry/catalog'; import type { SettingsUpdateOptions } from '@agent-device/contracts/client'; import { SETTINGS_USAGE_OVERRIDE } from '@agent-device/contracts/settings'; -import type { CommandSchemaOverride } from '../../cli-schema/types.ts'; +import type { CommandSchemaOverride } from '@agent-device/command-registry/command-schema'; import type { CliFlags } from '@agent-device/contracts/command'; import { AppError } from '@agent-device/kernel/errors'; import { readLocationCoordinate } from '@agent-device/kernel/location-coordinates'; diff --git a/src/commands/debugging/index.ts b/src/commands/debugging/index.ts index 5cd3cabbd2..8975e2fe39 100644 --- a/src/commands/debugging/index.ts +++ b/src/commands/debugging/index.ts @@ -1,5 +1,5 @@ import { AppError } from '@agent-device/kernel/errors'; -import type { CommandSchemaOverride } from '../../cli-schema/types.ts'; +import type { CommandSchemaOverride } from '@agent-device/command-registry/command-schema'; import { enumField, requiredField, stringField } from '../command-input.ts'; import { defineCommandFacet, defineCommandFamilyFromFacets } from '../family/types.ts'; import { defineFieldCommandMetadata } from '../field-command-contract.ts'; diff --git a/src/commands/family/registry.ts b/src/commands/family/registry.ts index 7e012e77f7..bfd564c7f7 100644 --- a/src/commands/family/registry.ts +++ b/src/commands/family/registry.ts @@ -12,7 +12,7 @@ import { reactNativeCommandFamily } from '../react-native/index.ts'; import { recordingCommandFamily } from '../recording/index.ts'; import { replayCommandFamily } from '../replay/index.ts'; import { systemCommandFamily } from '../system/index.ts'; -import type { CommandSchema } from '../../cli-schema/types.ts'; +import type { CommandSchema } from '@agent-device/command-registry/command-schema'; import { type CommandFamilyFacet } from './types.ts'; type CommandFamilyRecordMap = { diff --git a/src/commands/family/types.ts b/src/commands/family/types.ts index 4ca984a75c..7946e1f331 100644 --- a/src/commands/family/types.ts +++ b/src/commands/family/types.ts @@ -1,5 +1,8 @@ import type { AgentDeviceClient } from '../../client/client-types.ts'; -import type { CommandSchema, CommandSchemaOverride } from '../../cli-schema/types.ts'; +import type { + CommandSchema, + CommandSchemaOverride, +} from '@agent-device/command-registry/command-schema'; import type { AnyDaemonWriter, CliReader } from '../cli-grammar/types.ts'; import type { CommandMetadata, JsonSchema } from '../command-contract.ts'; import type { CliOutputFormatter } from '../output-common.ts'; diff --git a/src/commands/interaction/index.ts b/src/commands/interaction/index.ts index 7dd5671f72..52ff2d5391 100644 --- a/src/commands/interaction/index.ts +++ b/src/commands/interaction/index.ts @@ -19,7 +19,7 @@ import type { TransformGestureOptions, TypeTextOptions, } from '@agent-device/contracts/client'; -import type { CommandSchemaOverride } from '../../cli-schema/types.ts'; +import type { CommandSchemaOverride } from '@agent-device/command-registry/command-schema'; import { REPEATED_TOUCH_FLAGS, SELECTOR_SNAPSHOT_FLAGS, diff --git a/src/commands/management/app.ts b/src/commands/management/app.ts index b6e350011b..b209f4f263 100644 --- a/src/commands/management/app.ts +++ b/src/commands/management/app.ts @@ -1,7 +1,7 @@ import { PUBLIC_COMMANDS } from '@agent-device/command-registry/catalog'; import type { AppCloseOptions, AppOpenOptions } from '@agent-device/contracts/client'; import { SESSION_SURFACES } from '@agent-device/contracts/session'; -import type { CommandSchemaOverride } from '../../cli-schema/types.ts'; +import type { CommandSchemaOverride } from '@agent-device/command-registry/command-schema'; import { assertResolvedAppsFilter } from './app-inventory-contract.ts'; import { booleanField, diff --git a/src/commands/management/artifacts.ts b/src/commands/management/artifacts.ts index 04d536b1ea..11cea82c1b 100644 --- a/src/commands/management/artifacts.ts +++ b/src/commands/management/artifacts.ts @@ -1,5 +1,5 @@ import { PUBLIC_COMMANDS } from '@agent-device/command-registry/catalog'; -import type { CommandSchemaOverride } from '../../cli-schema/types.ts'; +import type { CommandSchemaOverride } from '@agent-device/command-registry/command-schema'; import { stringField } from '../command-input.ts'; import { commonInputFromFlags, direct } from '../cli-grammar/common.ts'; import type { CliReader, DaemonWriter } from '../cli-grammar/types.ts'; diff --git a/src/commands/management/device.ts b/src/commands/management/device.ts index 393751d291..f8fe6eb39d 100644 --- a/src/commands/management/device.ts +++ b/src/commands/management/device.ts @@ -1,5 +1,5 @@ import { PUBLIC_COMMANDS } from '@agent-device/command-registry/catalog'; -import type { CommandSchemaOverride } from '../../cli-schema/types.ts'; +import type { CommandSchemaOverride } from '@agent-device/command-registry/command-schema'; import { booleanField } from '../command-input.ts'; import { commonInputFromFlags, direct } from '../cli-grammar/common.ts'; import type { CliReader, DaemonWriter } from '../cli-grammar/types.ts'; diff --git a/src/commands/management/doctor.ts b/src/commands/management/doctor.ts index aedffbab70..e9860c668f 100644 --- a/src/commands/management/doctor.ts +++ b/src/commands/management/doctor.ts @@ -1,5 +1,5 @@ import { PUBLIC_COMMANDS } from '@agent-device/command-registry/catalog'; -import type { CommandSchemaOverride } from '../../cli-schema/types.ts'; +import type { CommandSchemaOverride } from '@agent-device/command-registry/command-schema'; import * as commandInput from '../command-input.ts'; import { commonInputFromFlags, direct } from '../cli-grammar/common.ts'; import type { CliReader, DaemonWriter } from '../cli-grammar/types.ts'; diff --git a/src/commands/management/install.ts b/src/commands/management/install.ts index 5741850f52..7155d10e09 100644 --- a/src/commands/management/install.ts +++ b/src/commands/management/install.ts @@ -1,7 +1,7 @@ import { INTERNAL_COMMANDS, PUBLIC_COMMANDS } from '@agent-device/command-registry/catalog'; import type { DaemonInstallSource } from '@agent-device/kernel/contracts'; import type { CliFlags } from '@agent-device/contracts/command'; -import type { CommandSchemaOverride } from '../../cli-schema/types.ts'; +import type { CommandSchemaOverride } from '@agent-device/command-registry/command-schema'; import { AppError } from '@agent-device/kernel/errors'; import { parseGitHubActionsArtifactInstallSourceSpec } from '@agent-device/provision-kit/install-source-config'; import { diff --git a/src/commands/management/prepare.ts b/src/commands/management/prepare.ts index 20ab55ad29..c126ad5b9d 100644 --- a/src/commands/management/prepare.ts +++ b/src/commands/management/prepare.ts @@ -1,5 +1,5 @@ import { PUBLIC_COMMANDS } from '@agent-device/command-registry/catalog'; -import type { CommandSchemaOverride } from '../../cli-schema/types.ts'; +import type { CommandSchemaOverride } from '@agent-device/command-registry/command-schema'; import { enumField, integerField, requiredField } from '../command-input.ts'; import { commonInputFromFlags, diff --git a/src/commands/management/push.ts b/src/commands/management/push.ts index 4b99bd8ef2..541a00fbb1 100644 --- a/src/commands/management/push.ts +++ b/src/commands/management/push.ts @@ -3,7 +3,7 @@ import type { AppTriggerEventOptions, JsonObject, } from '@agent-device/contracts/client'; -import type { CommandSchemaOverride } from '../../cli-schema/types.ts'; +import type { CommandSchemaOverride } from '@agent-device/command-registry/command-schema'; import { PUBLIC_COMMANDS } from '@agent-device/command-registry/catalog'; import { commonInputFromFlags, diff --git a/src/commands/management/session.ts b/src/commands/management/session.ts index 122a621729..40011ffdc7 100644 --- a/src/commands/management/session.ts +++ b/src/commands/management/session.ts @@ -1,5 +1,5 @@ import { AppError } from '@agent-device/kernel/errors'; -import type { CommandSchemaOverride } from '../../cli-schema/types.ts'; +import type { CommandSchemaOverride } from '@agent-device/command-registry/command-schema'; import { booleanField, enumField, stringField } from '../command-input.ts'; import { commonInputFromFlags } from '../cli-grammar/common.ts'; import type { CliReader } from '../cli-grammar/types.ts'; diff --git a/src/commands/management/viewport.ts b/src/commands/management/viewport.ts index fc9614bad1..1025f4b8f2 100644 --- a/src/commands/management/viewport.ts +++ b/src/commands/management/viewport.ts @@ -1,7 +1,7 @@ import { PUBLIC_COMMANDS } from '@agent-device/command-registry/catalog'; import type { ViewportCommandOptions } from '@agent-device/contracts/client'; import { readViewportDimensions } from '@agent-device/contracts/capture'; -import type { CommandSchemaOverride } from '../../cli-schema/types.ts'; +import type { CommandSchemaOverride } from '@agent-device/command-registry/command-schema'; import { integerField, requiredField } from '../command-input.ts'; import { commonInputFromFlags, direct } from '../cli-grammar/common.ts'; import type { CliReader, DaemonWriter } from '../cli-grammar/types.ts'; diff --git a/src/commands/metro/index.ts b/src/commands/metro/index.ts index 620d282ce2..78f9d0078d 100644 --- a/src/commands/metro/index.ts +++ b/src/commands/metro/index.ts @@ -5,7 +5,7 @@ import type { MetroReloadResult, } from '@agent-device/contracts/remote'; import { AppError } from '@agent-device/kernel/errors'; -import type { CommandSchemaOverride } from '../../cli-schema/types.ts'; +import type { CommandSchemaOverride } from '@agent-device/command-registry/command-schema'; import { booleanField, enumField, diff --git a/src/commands/observability/index.ts b/src/commands/observability/index.ts index ecfdd67881..cd34adf6b0 100644 --- a/src/commands/observability/index.ts +++ b/src/commands/observability/index.ts @@ -7,7 +7,7 @@ import type { import { NETWORK_INCLUDE_MODES, type NetworkIncludeMode } from '@agent-device/kernel/contracts'; import { AppError } from '@agent-device/kernel/errors'; import { parseStringMember } from './string-enum.ts'; -import type { CommandSchemaOverride } from '../../cli-schema/types.ts'; +import type { CommandSchemaOverride } from '@agent-device/command-registry/command-schema'; import { defineCommandFacet, defineCommandFamilyFromFacets } from '../family/types.ts'; import { booleanField, enumField, integerField, stringField } from '../command-input.ts'; import { defineFieldCommandMetadata } from '../field-command-contract.ts'; diff --git a/src/commands/perf/index.ts b/src/commands/perf/index.ts index 0c863f815f..481f1b2ee2 100644 --- a/src/commands/perf/index.ts +++ b/src/commands/perf/index.ts @@ -1,6 +1,6 @@ import type { PerfOptions } from '@agent-device/contracts/client'; import { AppError } from '@agent-device/kernel/errors'; -import type { CommandSchemaOverride } from '../../cli-schema/types.ts'; +import type { CommandSchemaOverride } from '@agent-device/command-registry/command-schema'; import { enumField, requiredField, stringField } from '../command-input.ts'; import { defineCommandFacet, defineCommandFamilyFromFacets } from '../family/types.ts'; import { defineFieldCommandMetadata } from '../field-command-contract.ts'; diff --git a/src/commands/react-native/index.ts b/src/commands/react-native/index.ts index cace39ccd9..b329c90db5 100644 --- a/src/commands/react-native/index.ts +++ b/src/commands/react-native/index.ts @@ -1,5 +1,5 @@ import { AppError } from '@agent-device/kernel/errors'; -import type { CommandSchemaOverride } from '../../cli-schema/types.ts'; +import type { CommandSchemaOverride } from '@agent-device/command-registry/command-schema'; import { defineCommandFacet, defineCommandFamilyFromFacets } from '../family/types.ts'; import { enumField, requiredField } from '../command-input.ts'; import { defineFieldCommandMetadata } from '../field-command-contract.ts'; diff --git a/src/commands/recording/index.ts b/src/commands/recording/index.ts index 4d092ded73..c402fa223c 100644 --- a/src/commands/recording/index.ts +++ b/src/commands/recording/index.ts @@ -8,7 +8,7 @@ import { RECORDING_SCOPE_VALUES, } from '@agent-device/contracts/recording'; import { AppError } from '@agent-device/kernel/errors'; -import type { CommandSchemaOverride } from '../../cli-schema/types.ts'; +import type { CommandSchemaOverride } from '@agent-device/command-registry/command-schema'; import { commonInputFromFlags, direct, optionalString } from '../cli-grammar/common.ts'; import type { CliReader, DaemonWriter } from '../cli-grammar/types.ts'; import { diff --git a/src/commands/replay/index.ts b/src/commands/replay/index.ts index 1f1d9b2728..1881384ca7 100644 --- a/src/commands/replay/index.ts +++ b/src/commands/replay/index.ts @@ -1,4 +1,4 @@ -import type { CommandSchemaOverride } from '../../cli-schema/types.ts'; +import type { CommandSchemaOverride } from '@agent-device/command-registry/command-schema'; import { defineCommandFacet, defineCommandFamilyFromFacets } from '../family/types.ts'; import { booleanField, diff --git a/src/commands/system/index.ts b/src/commands/system/index.ts index a410001a65..d7ce9e96b7 100644 --- a/src/commands/system/index.ts +++ b/src/commands/system/index.ts @@ -8,7 +8,7 @@ import { tvRemoteDurationMode, } from '@agent-device/contracts/tv-remote'; import { AppError } from '@agent-device/kernel/errors'; -import type { CommandSchemaOverride } from '../../cli-schema/types.ts'; +import type { CommandSchemaOverride } from '@agent-device/command-registry/command-schema'; import { commonInputFromFlags, direct,