opensip-cli 0.1.6 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bootstrap/admit-tool-package.d.ts.map +1 -1
- package/dist/bootstrap/admit-tool-package.js +8 -3
- package/dist/bootstrap/admit-tool-package.js.map +1 -1
- package/dist/bootstrap/bind-tool-context.d.ts.map +1 -1
- package/dist/bootstrap/bind-tool-context.js +5 -3
- package/dist/bootstrap/bind-tool-context.js.map +1 -1
- package/dist/bootstrap/build-command-registration-input.d.ts +7 -0
- package/dist/bootstrap/build-command-registration-input.d.ts.map +1 -1
- package/dist/bootstrap/build-command-registration-input.js +11 -4
- package/dist/bootstrap/build-command-registration-input.js.map +1 -1
- package/dist/bootstrap/build-per-run-scope.d.ts +12 -0
- package/dist/bootstrap/build-per-run-scope.d.ts.map +1 -1
- package/dist/bootstrap/build-per-run-scope.js +84 -9
- package/dist/bootstrap/build-per-run-scope.js.map +1 -1
- package/dist/bootstrap/bundled-manifest.d.ts +5 -0
- package/dist/bootstrap/bundled-manifest.d.ts.map +1 -0
- package/dist/bootstrap/bundled-manifest.js +13 -0
- package/dist/bootstrap/bundled-manifest.js.map +1 -0
- package/dist/bootstrap/bundled-tools.manifest.json +19 -1
- package/dist/bootstrap/config-and-capabilities.d.ts.map +1 -1
- package/dist/bootstrap/config-and-capabilities.js +5 -4
- package/dist/bootstrap/config-and-capabilities.js.map +1 -1
- package/dist/bootstrap/constants.d.ts +3 -0
- package/dist/bootstrap/constants.d.ts.map +1 -0
- package/dist/bootstrap/constants.js +3 -0
- package/dist/bootstrap/constants.js.map +1 -0
- package/dist/bootstrap/decorate-tool-primary.d.ts +50 -0
- package/dist/bootstrap/decorate-tool-primary.d.ts.map +1 -0
- package/dist/bootstrap/decorate-tool-primary.js +111 -0
- package/dist/bootstrap/decorate-tool-primary.js.map +1 -0
- package/dist/bootstrap/execute-post-bailout-bootstrap.d.ts.map +1 -1
- package/dist/bootstrap/execute-post-bailout-bootstrap.js +10 -0
- package/dist/bootstrap/execute-post-bailout-bootstrap.js.map +1 -1
- package/dist/bootstrap/index.d.ts +1 -1
- package/dist/bootstrap/index.d.ts.map +1 -1
- package/dist/bootstrap/index.js +1 -4
- package/dist/bootstrap/index.js.map +1 -1
- package/dist/bootstrap/io-plane.d.ts +47 -0
- package/dist/bootstrap/io-plane.d.ts.map +1 -0
- package/dist/bootstrap/io-plane.js +73 -0
- package/dist/bootstrap/io-plane.js.map +1 -0
- package/dist/bootstrap/load-tool-capabilities.d.ts.map +1 -1
- package/dist/bootstrap/load-tool-capabilities.js +18 -2
- package/dist/bootstrap/load-tool-capabilities.js.map +1 -1
- package/dist/bootstrap/owning-tool-init.d.ts.map +1 -1
- package/dist/bootstrap/owning-tool-init.js +7 -4
- package/dist/bootstrap/owning-tool-init.js.map +1 -1
- package/dist/bootstrap/phase-map.d.ts +20 -0
- package/dist/bootstrap/phase-map.d.ts.map +1 -0
- package/dist/bootstrap/phase-map.js +108 -0
- package/dist/bootstrap/phase-map.js.map +1 -0
- package/dist/bootstrap/pre-action-hook.d.ts.map +1 -1
- package/dist/bootstrap/pre-action-hook.js +19 -2
- package/dist/bootstrap/pre-action-hook.js.map +1 -1
- package/dist/bootstrap/register-tools-discovery.d.ts +38 -39
- package/dist/bootstrap/register-tools-discovery.d.ts.map +1 -1
- package/dist/bootstrap/register-tools-discovery.js +132 -83
- package/dist/bootstrap/register-tools-discovery.js.map +1 -1
- package/dist/bootstrap/register-tools-mount.d.ts +18 -1
- package/dist/bootstrap/register-tools-mount.d.ts.map +1 -1
- package/dist/bootstrap/register-tools-mount.js +118 -18
- package/dist/bootstrap/register-tools-mount.js.map +1 -1
- package/dist/bootstrap/register-tools.d.ts +58 -14
- package/dist/bootstrap/register-tools.d.ts.map +1 -1
- package/dist/bootstrap/register-tools.js +185 -14
- package/dist/bootstrap/register-tools.js.map +1 -1
- package/dist/bootstrap/root-version.d.ts +26 -0
- package/dist/bootstrap/root-version.d.ts.map +1 -0
- package/dist/bootstrap/root-version.js +36 -0
- package/dist/bootstrap/root-version.js.map +1 -0
- package/dist/bootstrap/scope-access.d.ts +11 -0
- package/dist/bootstrap/scope-access.d.ts.map +1 -1
- package/dist/bootstrap/scope-access.js +26 -0
- package/dist/bootstrap/scope-access.js.map +1 -1
- package/dist/bootstrap/tool-lifecycle.d.ts +0 -22
- package/dist/bootstrap/tool-lifecycle.d.ts.map +1 -1
- package/dist/bootstrap/tool-lifecycle.js +0 -23
- package/dist/bootstrap/tool-lifecycle.js.map +1 -1
- package/dist/bootstrap/validate-tool.d.ts +10 -4
- package/dist/bootstrap/validate-tool.d.ts.map +1 -1
- package/dist/bootstrap/validate-tool.js +76 -22
- package/dist/bootstrap/validate-tool.js.map +1 -1
- package/dist/cli-context.d.ts +2 -2
- package/dist/cli-context.d.ts.map +1 -1
- package/dist/cli-context.js +20 -35
- package/dist/cli-context.js.map +1 -1
- package/dist/commands/agent-catalog.d.ts +29 -0
- package/dist/commands/agent-catalog.d.ts.map +1 -1
- package/dist/commands/agent-catalog.js +77 -36
- package/dist/commands/agent-catalog.js.map +1 -1
- package/dist/commands/clear.d.ts.map +1 -1
- package/dist/commands/clear.js +0 -1
- package/dist/commands/clear.js.map +1 -1
- package/dist/commands/command-scope-index.d.ts +15 -1
- package/dist/commands/command-scope-index.d.ts.map +1 -1
- package/dist/commands/command-scope-index.js +10 -1
- package/dist/commands/command-scope-index.js.map +1 -1
- package/dist/commands/completion.d.ts +67 -6
- package/dist/commands/completion.d.ts.map +1 -1
- package/dist/commands/completion.js +84 -12
- package/dist/commands/completion.js.map +1 -1
- package/dist/commands/configure.d.ts.map +1 -1
- package/dist/commands/configure.js +0 -1
- package/dist/commands/configure.js.map +1 -1
- package/dist/commands/host-command-specs.d.ts +16 -9
- package/dist/commands/host-command-specs.d.ts.map +1 -1
- package/dist/commands/host-command-specs.js +45 -19
- package/dist/commands/host-command-specs.js.map +1 -1
- package/dist/commands/host-config-flag.d.ts +21 -0
- package/dist/commands/host-config-flag.d.ts.map +1 -0
- package/dist/commands/host-config-flag.js +21 -0
- package/dist/commands/host-config-flag.js.map +1 -0
- package/dist/commands/host-subcommand-groups.d.ts +46 -5
- package/dist/commands/host-subcommand-groups.d.ts.map +1 -1
- package/dist/commands/host-subcommand-groups.js +97 -65
- package/dist/commands/host-subcommand-groups.js.map +1 -1
- package/dist/commands/index.d.ts +1 -1
- package/dist/commands/index.js +1 -1
- package/dist/commands/internal-command-visibility.d.ts +42 -0
- package/dist/commands/internal-command-visibility.d.ts.map +1 -0
- package/dist/commands/internal-command-visibility.js +54 -0
- package/dist/commands/internal-command-visibility.js.map +1 -0
- package/dist/commands/mount-command-action.d.ts +5 -0
- package/dist/commands/mount-command-action.d.ts.map +1 -1
- package/dist/commands/mount-command-action.js +26 -2
- package/dist/commands/mount-command-action.js.map +1 -1
- package/dist/commands/mount-command-spec.d.ts +9 -2
- package/dist/commands/mount-command-spec.d.ts.map +1 -1
- package/dist/commands/mount-command-spec.js +9 -1
- package/dist/commands/mount-command-spec.js.map +1 -1
- package/dist/commands/plugin/domain-resolution.d.ts +12 -13
- package/dist/commands/plugin/domain-resolution.d.ts.map +1 -1
- package/dist/commands/plugin/domain-resolution.js +12 -58
- package/dist/commands/plugin/domain-resolution.js.map +1 -1
- package/dist/commands/plugin/host-dir.d.ts +0 -1
- package/dist/commands/plugin/host-dir.d.ts.map +1 -1
- package/dist/commands/plugin/host-dir.js +1 -1
- package/dist/commands/plugin/host-dir.js.map +1 -1
- package/dist/commands/plugin.d.ts +20 -14
- package/dist/commands/plugin.d.ts.map +1 -1
- package/dist/commands/plugin.js +39 -47
- package/dist/commands/plugin.js.map +1 -1
- package/dist/commands/render-outcome.d.ts.map +1 -1
- package/dist/commands/render-outcome.js.map +1 -1
- package/dist/commands/shared.d.ts +9 -0
- package/dist/commands/shared.d.ts.map +1 -1
- package/dist/commands/tools/create.d.ts +11 -0
- package/dist/commands/tools/create.d.ts.map +1 -0
- package/dist/commands/tools/create.js +84 -0
- package/dist/commands/tools/create.js.map +1 -0
- package/dist/commands/tools/index.d.ts.map +1 -1
- package/dist/commands/tools/index.js +31 -0
- package/dist/commands/tools/index.js.map +1 -1
- package/dist/commands/tools/runtime-probe-entry.d.ts.map +1 -1
- package/dist/commands/tools/runtime-probe-entry.js +4 -2
- package/dist/commands/tools/runtime-probe-entry.js.map +1 -1
- package/dist/commands/tools/validate.d.ts.map +1 -1
- package/dist/commands/tools/validate.js +12 -5
- package/dist/commands/tools/validate.js.map +1 -1
- package/dist/commands/uninstall.d.ts.map +1 -1
- package/dist/commands/uninstall.js +0 -1
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/env/host-env-specs.d.ts +18 -0
- package/dist/env/host-env-specs.d.ts.map +1 -1
- package/dist/env/host-env-specs.js +36 -2
- package/dist/env/host-env-specs.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -6
- package/dist/index.js.map +1 -1
- package/dist/report-compose.d.ts.map +1 -1
- package/dist/report-compose.js +2 -2
- package/dist/report-compose.js.map +1 -1
- package/dist/session-replay-registry.d.ts +1 -1
- package/dist/session-replay-registry.d.ts.map +1 -1
- package/dist/session-replay-registry.js +3 -1
- package/dist/session-replay-registry.js.map +1 -1
- package/dist/ui/result-to-view.d.ts +27 -7
- package/dist/ui/result-to-view.d.ts.map +1 -1
- package/dist/ui/result-to-view.js +68 -75
- package/dist/ui/result-to-view.js.map +1 -1
- package/dist/ui/views/misc-views.d.ts.map +1 -1
- package/dist/ui/views/misc-views.js +3 -1
- package/dist/ui/views/misc-views.js.map +1 -1
- package/dist/ui/views/tools-views.d.ts +2 -1
- package/dist/ui/views/tools-views.d.ts.map +1 -1
- package/dist/ui/views/tools-views.js +21 -0
- package/dist/ui/views/tools-views.js.map +1 -1
- package/package.json +32 -32
- package/dist/bootstrap/authored-tool-admission.d.ts +0 -23
- package/dist/bootstrap/authored-tool-admission.d.ts.map +0 -1
- package/dist/bootstrap/authored-tool-admission.js +0 -54
- package/dist/bootstrap/authored-tool-admission.js.map +0 -1
- package/dist/bootstrap/egress-plane.d.ts +0 -22
- package/dist/bootstrap/egress-plane.d.ts.map +0 -1
- package/dist/bootstrap/egress-plane.js +0 -37
- package/dist/bootstrap/egress-plane.js.map +0 -1
- package/dist/bootstrap/installed-tool-admission.d.ts +0 -20
- package/dist/bootstrap/installed-tool-admission.d.ts.map +0 -1
- package/dist/bootstrap/installed-tool-admission.js +0 -60
- package/dist/bootstrap/installed-tool-admission.js.map +0 -1
- package/dist/bootstrap/live-plane.d.ts +0 -51
- package/dist/bootstrap/live-plane.d.ts.map +0 -1
- package/dist/bootstrap/live-plane.js +0 -72
- package/dist/bootstrap/live-plane.js.map +0 -1
- package/dist/bootstrap/register-tools-bundled.d.ts +0 -28
- package/dist/bootstrap/register-tools-bundled.d.ts.map +0 -1
- package/dist/bootstrap/register-tools-bundled.js +0 -107
- package/dist/bootstrap/register-tools-bundled.js.map +0 -1
- package/dist/bootstrap/register-tools-shared.d.ts +0 -40
- package/dist/bootstrap/register-tools-shared.d.ts.map +0 -1
- package/dist/bootstrap/register-tools-shared.js +0 -98
- package/dist/bootstrap/register-tools-shared.js.map +0 -1
|
@@ -48,8 +48,6 @@
|
|
|
48
48
|
* one ordered entry point. The driver is intentionally THIN: it sequences the
|
|
49
49
|
* pre-existing helpers, it does not reimplement them.
|
|
50
50
|
*/
|
|
51
|
-
import type { CliProgram } from '@opensip-cli/contracts';
|
|
52
|
-
import type { ToolCliContext, ToolRegistry } from '@opensip-cli/core';
|
|
53
51
|
/**
|
|
54
52
|
* Canonical, ordered tool-lifecycle steps (launch, §5.4). The numeric
|
|
55
53
|
* values are the step ordinals used in the JSDoc above and in
|
|
@@ -79,24 +77,4 @@ export declare const TOOL_LIFECYCLE_STEPS: {
|
|
|
79
77
|
/** 10 — Commander dispatches the action body through the mount pipeline. */
|
|
80
78
|
readonly dispatch: 10;
|
|
81
79
|
};
|
|
82
|
-
/**
|
|
83
|
-
* Drive the STARTUP-phase command-mount step (step 8) for every registered
|
|
84
|
-
* tool. By the time this runs, steps 1-4 have already populated `registry`
|
|
85
|
-
* inside {@link bootstrapCli} (provenance no longer matters — bundled and
|
|
86
|
-
* installed tools mount identically). This is the single ordered entry point
|
|
87
|
-
* the composition root calls for step 8, replacing the bare
|
|
88
|
-
* `mountAllToolCommands(...)` call so the lifecycle has one named seam.
|
|
89
|
-
*
|
|
90
|
-
* Kept THIN deliberately: it delegates straight to
|
|
91
|
-
* {@link mountAllToolCommands}, which mounts each tool's declared `commandSpecs`
|
|
92
|
-
* (the one command surface, launch) with per-tool failure isolation. The naming +
|
|
93
|
-
* ordering is the value here, not new logic.
|
|
94
|
-
*
|
|
95
|
-
* @param registry The per-invocation tool registry, already populated by
|
|
96
|
-
* steps 1-4.
|
|
97
|
-
* @param program The root Commander program (host-owned; passed in since the tool
|
|
98
|
-
* context no longer carries it, §8).
|
|
99
|
-
* @param ctx The per-invocation handler context handed to each mounted command.
|
|
100
|
-
*/
|
|
101
|
-
export declare function mountToolCommands(registry: ToolRegistry, program: CliProgram, ctx: ToolCliContext): void;
|
|
102
80
|
//# sourceMappingURL=tool-lifecycle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-lifecycle.d.ts","sourceRoot":"","sources":["../../src/bootstrap/tool-lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;
|
|
1
|
+
{"version":3,"file":"tool-lifecycle.d.ts","sourceRoot":"","sources":["../../src/bootstrap/tool-lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB;IAC/B,oDAAoD;;IAEpD,mEAAmE;;IAEnE,0EAA0E;;IAE1E,uEAAuE;;IAEvE,+DAA+D;;IAE/D,sDAAsD;;IAEtD,gFAAgF;;IAEhF,mDAAmD;;IAEnD,0EAA0E;;IAE1E,4EAA4E;;CAEpE,CAAC"}
|
|
@@ -48,7 +48,6 @@
|
|
|
48
48
|
* one ordered entry point. The driver is intentionally THIN: it sequences the
|
|
49
49
|
* pre-existing helpers, it does not reimplement them.
|
|
50
50
|
*/
|
|
51
|
-
import { mountAllToolCommands } from './register-tools.js';
|
|
52
51
|
/**
|
|
53
52
|
* Canonical, ordered tool-lifecycle steps (launch, §5.4). The numeric
|
|
54
53
|
* values are the step ordinals used in the JSDoc above and in
|
|
@@ -78,26 +77,4 @@ export const TOOL_LIFECYCLE_STEPS = {
|
|
|
78
77
|
/** 10 — Commander dispatches the action body through the mount pipeline. */
|
|
79
78
|
dispatch: 10,
|
|
80
79
|
};
|
|
81
|
-
/**
|
|
82
|
-
* Drive the STARTUP-phase command-mount step (step 8) for every registered
|
|
83
|
-
* tool. By the time this runs, steps 1-4 have already populated `registry`
|
|
84
|
-
* inside {@link bootstrapCli} (provenance no longer matters — bundled and
|
|
85
|
-
* installed tools mount identically). This is the single ordered entry point
|
|
86
|
-
* the composition root calls for step 8, replacing the bare
|
|
87
|
-
* `mountAllToolCommands(...)` call so the lifecycle has one named seam.
|
|
88
|
-
*
|
|
89
|
-
* Kept THIN deliberately: it delegates straight to
|
|
90
|
-
* {@link mountAllToolCommands}, which mounts each tool's declared `commandSpecs`
|
|
91
|
-
* (the one command surface, launch) with per-tool failure isolation. The naming +
|
|
92
|
-
* ordering is the value here, not new logic.
|
|
93
|
-
*
|
|
94
|
-
* @param registry The per-invocation tool registry, already populated by
|
|
95
|
-
* steps 1-4.
|
|
96
|
-
* @param program The root Commander program (host-owned; passed in since the tool
|
|
97
|
-
* context no longer carries it, §8).
|
|
98
|
-
* @param ctx The per-invocation handler context handed to each mounted command.
|
|
99
|
-
*/
|
|
100
|
-
export function mountToolCommands(registry, program, ctx) {
|
|
101
|
-
mountAllToolCommands(registry, program, ctx);
|
|
102
|
-
}
|
|
103
80
|
//# sourceMappingURL=tool-lifecycle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-lifecycle.js","sourceRoot":"","sources":["../../src/bootstrap/tool-lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH
|
|
1
|
+
{"version":3,"file":"tool-lifecycle.js","sourceRoot":"","sources":["../../src/bootstrap/tool-lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,oDAAoD;IACpD,QAAQ,EAAE,CAAC;IACX,mEAAmE;IACnE,MAAM,EAAE,CAAC;IACT,0EAA0E;IAC1E,KAAK,EAAE,CAAC;IACR,uEAAuE;IACvE,MAAM,EAAE,CAAC;IACT,+DAA+D;IAC/D,MAAM,EAAE,CAAC;IACT,sDAAsD;IACtD,KAAK,EAAE,CAAC;IACR,gFAAgF;IAChF,YAAY,EAAE,CAAC;IACf,mDAAmD;IACnD,KAAK,EAAE,CAAC;IACR,0EAA0E;IAC1E,UAAU,EAAE,CAAC;IACb,4EAA4E;IAC5E,QAAQ,EAAE,EAAE;CACJ,CAAC"}
|
|
@@ -4,11 +4,12 @@
|
|
|
4
4
|
* an arbitrary npm package and inspects whatever it exports.
|
|
5
5
|
*
|
|
6
6
|
* Verifies the minimal contract the registry depends on: a
|
|
7
|
-
* `metadata.id` string (used for dedupe + listing), a
|
|
8
|
-
*
|
|
7
|
+
* `metadata.id` string (used for dedupe + listing), and a command surface —
|
|
8
|
+
* a non-empty `commandSpecs` array (the one command
|
|
9
9
|
* surface as of launch; `register()` was removed). A tool with no `commandSpecs`
|
|
10
|
-
* cannot mount any command, so it fails the shape check.
|
|
11
|
-
* `
|
|
10
|
+
* cannot mount any command, so it fails the shape check. Lifecycle hooks belong
|
|
11
|
+
* under `extensionPoints` only — top-level hooks are rejected with an actionable
|
|
12
|
+
* diagnostic.
|
|
12
13
|
*
|
|
13
14
|
* Ordering vs. the admission gate: this shape check runs AFTER a
|
|
14
15
|
* tool's module is imported. The compatibility gate (`admitTool`) and the
|
|
@@ -18,5 +19,10 @@
|
|
|
18
19
|
* and never reaches `isValidTool`.
|
|
19
20
|
*/
|
|
20
21
|
import { type Tool } from '@opensip-cli/core';
|
|
22
|
+
/**
|
|
23
|
+
* Human-readable rejection reason for an exported `tool` value.
|
|
24
|
+
* `undefined` means the export satisfies {@link isValidTool}.
|
|
25
|
+
*/
|
|
26
|
+
export declare function toolValidationFailure(value: unknown): string | undefined;
|
|
21
27
|
export declare function isValidTool(value: unknown): value is Tool;
|
|
22
28
|
//# sourceMappingURL=validate-tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-tool.d.ts","sourceRoot":"","sources":["../../src/bootstrap/validate-tool.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"validate-tool.d.ts","sourceRoot":"","sources":["../../src/bootstrap/validate-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAuB,KAAK,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAuDnE;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAqBxE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,IAAI,CAEzD"}
|
|
@@ -4,11 +4,12 @@
|
|
|
4
4
|
* an arbitrary npm package and inspects whatever it exports.
|
|
5
5
|
*
|
|
6
6
|
* Verifies the minimal contract the registry depends on: a
|
|
7
|
-
* `metadata.id` string (used for dedupe + listing), a
|
|
8
|
-
*
|
|
7
|
+
* `metadata.id` string (used for dedupe + listing), and a command surface —
|
|
8
|
+
* a non-empty `commandSpecs` array (the one command
|
|
9
9
|
* surface as of launch; `register()` was removed). A tool with no `commandSpecs`
|
|
10
|
-
* cannot mount any command, so it fails the shape check.
|
|
11
|
-
* `
|
|
10
|
+
* cannot mount any command, so it fails the shape check. Lifecycle hooks belong
|
|
11
|
+
* under `extensionPoints` only — top-level hooks are rejected with an actionable
|
|
12
|
+
* diagnostic.
|
|
12
13
|
*
|
|
13
14
|
* Ordering vs. the admission gate: this shape check runs AFTER a
|
|
14
15
|
* tool's module is imported. The compatibility gate (`admitTool`) and the
|
|
@@ -18,25 +19,78 @@
|
|
|
18
19
|
* and never reaches `isValidTool`.
|
|
19
20
|
*/
|
|
20
21
|
import { validateCommandSpec } from '@opensip-cli/core';
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
/** Top-level hook keys removed in the tool-author-simplify contract. */
|
|
23
|
+
const LEGACY_TOP_LEVEL_HOOK_KEYS = [
|
|
24
|
+
'initialize',
|
|
25
|
+
'contributeScope',
|
|
26
|
+
'collectReportData',
|
|
27
|
+
'sessionReplay',
|
|
28
|
+
'config',
|
|
29
|
+
'capabilityRegistrars',
|
|
30
|
+
'fingerprintStrategy',
|
|
31
|
+
'scaffoldExamples',
|
|
32
|
+
'stableExampleIds',
|
|
33
|
+
'scaffoldConfigBlock',
|
|
34
|
+
];
|
|
35
|
+
function legacyTopLevelHookKeys(candidate) {
|
|
36
|
+
return LEGACY_TOP_LEVEL_HOOK_KEYS.filter((key) => candidate[key] !== undefined);
|
|
37
|
+
}
|
|
38
|
+
function metadataValidationFailure(metadata) {
|
|
39
|
+
if (typeof metadata !== 'object' || metadata === null) {
|
|
40
|
+
return 'tool.metadata is missing or not an object';
|
|
41
|
+
}
|
|
42
|
+
if (typeof metadata.id !== 'string') {
|
|
43
|
+
return 'tool.metadata.id must be a string';
|
|
44
|
+
}
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
function commandSpecsValidationFailure(commandSpecs) {
|
|
48
|
+
if (!Array.isArray(commandSpecs) || commandSpecs.length === 0) {
|
|
49
|
+
return 'tool.commandSpecs must be a non-empty array (the declarative command surface)';
|
|
50
|
+
}
|
|
51
|
+
for (const spec of commandSpecs) {
|
|
52
|
+
if (!validateCommandSpec(spec)) {
|
|
53
|
+
return 'tool.commandSpecs contains an invalid CommandSpec';
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
function optionalCommandsValidationFailure(commands) {
|
|
59
|
+
if (!Array.isArray(commands))
|
|
60
|
+
return undefined;
|
|
61
|
+
for (const cmd of commands) {
|
|
62
|
+
if (typeof cmd !== 'object' || cmd === null) {
|
|
63
|
+
return 'tool.commands contains a non-object entry';
|
|
64
|
+
}
|
|
65
|
+
if (typeof cmd.name !== 'string') {
|
|
66
|
+
return 'tool.commands entries must include a string name';
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Human-readable rejection reason for an exported `tool` value.
|
|
73
|
+
* `undefined` means the export satisfies {@link isValidTool}.
|
|
74
|
+
*/
|
|
75
|
+
export function toolValidationFailure(value) {
|
|
76
|
+
if (typeof value !== 'object' || value === null) {
|
|
77
|
+
return 'tool export is not an object';
|
|
78
|
+
}
|
|
24
79
|
const candidate = value;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
if (
|
|
30
|
-
return
|
|
31
|
-
|
|
32
|
-
// array (the one command surface, launch — `register()` was removed). A tool
|
|
33
|
-
// with no commandSpecs cannot contribute any command and is rejected.
|
|
34
|
-
if (!Array.isArray(candidate.commandSpecs) || candidate.commandSpecs.length === 0)
|
|
35
|
-
return false;
|
|
36
|
-
for (const spec of candidate.commandSpecs) {
|
|
37
|
-
if (!validateCommandSpec(spec))
|
|
38
|
-
return false;
|
|
80
|
+
const metadataFailure = metadataValidationFailure(candidate.metadata);
|
|
81
|
+
if (metadataFailure !== undefined)
|
|
82
|
+
return metadataFailure;
|
|
83
|
+
const legacy = legacyTopLevelHookKeys(candidate);
|
|
84
|
+
if (legacy.length > 0) {
|
|
85
|
+
return (`tool declares deprecated top-level hooks [${legacy.join(', ')}]; ` +
|
|
86
|
+
'move them under extensionPoints (see opensip tool authoring docs)');
|
|
39
87
|
}
|
|
40
|
-
|
|
88
|
+
const specsFailure = commandSpecsValidationFailure(candidate.commandSpecs);
|
|
89
|
+
if (specsFailure !== undefined)
|
|
90
|
+
return specsFailure;
|
|
91
|
+
return optionalCommandsValidationFailure(candidate.commands);
|
|
92
|
+
}
|
|
93
|
+
export function isValidTool(value) {
|
|
94
|
+
return toolValidationFailure(value) === undefined;
|
|
41
95
|
}
|
|
42
96
|
//# sourceMappingURL=validate-tool.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-tool.js","sourceRoot":"","sources":["../../src/bootstrap/validate-tool.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"validate-tool.js","sourceRoot":"","sources":["../../src/bootstrap/validate-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,mBAAmB,EAAa,MAAM,mBAAmB,CAAC;AAEnE,wEAAwE;AACxE,MAAM,0BAA0B,GAAG;IACjC,YAAY;IACZ,iBAAiB;IACjB,mBAAmB;IACnB,eAAe;IACf,QAAQ;IACR,sBAAsB;IACtB,qBAAqB;IACrB,kBAAkB;IAClB,kBAAkB;IAClB,qBAAqB;CACb,CAAC;AAEX,SAAS,sBAAsB,CAAC,SAAkC;IAChE,OAAO,0BAA0B,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,yBAAyB,CAAC,QAAiB;IAClD,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtD,OAAO,2CAA2C,CAAC;IACrD,CAAC;IACD,IAAI,OAAQ,QAA6B,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QAC1D,OAAO,mCAAmC,CAAC;IAC7C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,6BAA6B,CAAC,YAAqB;IAC1D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9D,OAAO,+EAA+E,CAAC;IACzF,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,OAAO,mDAAmD,CAAC;QAC7D,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,iCAAiC,CAAC,QAAiB;IAC1D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/C,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAC5C,OAAO,2CAA2C,CAAC;QACrD,CAAC;QACD,IAAI,OAAQ,GAA0B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzD,OAAO,kDAAkD,CAAC;QAC5D,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,8BAA8B,CAAC;IACxC,CAAC;IACD,MAAM,SAAS,GAAG,KAAgC,CAAC;IAEnD,MAAM,eAAe,GAAG,yBAAyB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACtE,IAAI,eAAe,KAAK,SAAS;QAAE,OAAO,eAAe,CAAC;IAE1D,MAAM,MAAM,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;IACjD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,CACL,6CAA6C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;YACnE,mEAAmE,CACpE,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,6BAA6B,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC3E,IAAI,YAAY,KAAK,SAAS;QAAE,OAAO,YAAY,CAAC;IAEpD,OAAO,iCAAiC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC;AACpD,CAAC"}
|
package/dist/cli-context.d.ts
CHANGED
|
@@ -17,10 +17,10 @@
|
|
|
17
17
|
* `.runtime/datastore.sqlite`.
|
|
18
18
|
*/
|
|
19
19
|
import { type Logger, type ToolCliContext } from '@opensip-cli/core';
|
|
20
|
-
import { type LiveViewRegistry } from './bootstrap/
|
|
20
|
+
import { type LiveViewRegistry } from './bootstrap/io-plane.js';
|
|
21
21
|
import type { CommandResult } from '@opensip-cli/contracts';
|
|
22
22
|
export { buildDatastoreThunk, getCurrentProjectRoot, getOrOpenDatastore, } from './bootstrap/scope-access.js';
|
|
23
|
-
export { createLiveViewRegistry, type LiveViewRegistry } from './bootstrap/
|
|
23
|
+
export { createLiveViewRegistry, type LiveViewRegistry } from './bootstrap/io-plane.js';
|
|
24
24
|
export interface BuildToolCliContextOptions {
|
|
25
25
|
readonly render: (result: CommandResult) => Promise<void>;
|
|
26
26
|
readonly liveViews: LiveViewRegistry;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-context.d.ts","sourceRoot":"","sources":["../src/cli-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAGL,KAAK,MAAM,EACX,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli-context.d.ts","sourceRoot":"","sources":["../src/cli-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAGL,KAAK,MAAM,EACX,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EAAiB,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAW/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAmB5D,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,sBAAsB,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAExF,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC,QAAQ,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE;QAC/B,aAAa,EAAE,OAAO,CAAC;QACvB,UAAU,EAAE,OAAO,CAAC;KACrB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CAChD;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,0BAA0B,GAAG,oBAAoB,CAgF1F"}
|
package/dist/cli-context.js
CHANGED
|
@@ -18,15 +18,12 @@
|
|
|
18
18
|
*/
|
|
19
19
|
import { logger as defaultLogger, } from '@opensip-cli/core';
|
|
20
20
|
import { buildBaselineSeams } from './bootstrap/baseline-seams.js';
|
|
21
|
-
import { createEgressPlane } from './bootstrap/egress-plane.js';
|
|
22
21
|
import { buildHostPlanes } from './bootstrap/host-planes.js';
|
|
23
|
-
import {
|
|
22
|
+
import { createIoPlane } from './bootstrap/io-plane.js';
|
|
24
23
|
import { createOutputPlane } from './bootstrap/output-plane.js';
|
|
25
24
|
import { createRunActionHooks, createRunPlaneFactory, createRunSessionSeam, } from './bootstrap/run-plane.js';
|
|
26
|
-
import {
|
|
25
|
+
import { createDatastoreResolver, readScope } from './bootstrap/scope-access.js';
|
|
27
26
|
import { buildStateSeams } from './bootstrap/state-seams.js';
|
|
28
|
-
/** Structured-log `module` tag for this composition-root module. */
|
|
29
|
-
const MODULE_TAG = 'cli:context';
|
|
30
27
|
// ---------------------------------------------------------------------------
|
|
31
28
|
// No module-global bootstrap-handoff bag.
|
|
32
29
|
//
|
|
@@ -40,11 +37,11 @@ const MODULE_TAG = 'cli:context';
|
|
|
40
37
|
// `currentScope()?.toolProvenance` / `?.toolManifests`.
|
|
41
38
|
// ---------------------------------------------------------------------------
|
|
42
39
|
// Per-run scope + datastore readers live in `bootstrap/scope-access.ts`; the
|
|
43
|
-
// live-view registry lives in `bootstrap/
|
|
40
|
+
// live-view registry lives in `bootstrap/io-plane.ts`. Both are re-exported
|
|
44
41
|
// here so existing importers (`main()` + the dynamic-import tests) keep their
|
|
45
42
|
// stable `cli-context.js` entry point while this module focuses on assembly.
|
|
46
43
|
export { buildDatastoreThunk, getCurrentProjectRoot, getOrOpenDatastore, } from './bootstrap/scope-access.js';
|
|
47
|
-
export { createLiveViewRegistry } from './bootstrap/
|
|
44
|
+
export { createLiveViewRegistry } from './bootstrap/io-plane.js';
|
|
48
45
|
export function buildToolCliContext(opts) {
|
|
49
46
|
const log = opts.logger ?? defaultLogger;
|
|
50
47
|
// Output plane owns the single `process.exitCode` write path + the four
|
|
@@ -56,34 +53,16 @@ export function buildToolCliContext(opts) {
|
|
|
56
53
|
// - durable per-tool keyed JSON state (ADR-0042);
|
|
57
54
|
// - governance / entitlements / audit (H1-H3);
|
|
58
55
|
// - effectful egress (cloud sync + `--report-to` + SARIF file sink).
|
|
59
|
-
const
|
|
60
|
-
const
|
|
61
|
-
const
|
|
62
|
-
const
|
|
56
|
+
const projectDatastore = createDatastoreResolver('project-seam', log);
|
|
57
|
+
const baselineSeams = buildBaselineSeams({ getDatastore: projectDatastore, logger: log });
|
|
58
|
+
const stateSeams = buildStateSeams({ getDatastore: projectDatastore });
|
|
59
|
+
const hostPlanes = buildHostPlanes({ getDatastore: projectDatastore, logger: log });
|
|
63
60
|
// Host run-lifecycle plane (host-owned-run-timing Phase 1). The FACTORY holds
|
|
64
61
|
// stable deps only — it must NOT start a lifecycle here. The lifecycle is
|
|
65
62
|
// created inside the command action (mount-command-spec calls `beginRun()`
|
|
66
63
|
// after RunScope entry, before the handler) or lazily on first `timing` read.
|
|
67
64
|
const runPlane = createRunPlaneFactory({
|
|
68
|
-
|
|
69
|
-
// global access). Returns undefined when no project/datastore is in scope.
|
|
70
|
-
getDatastore: () => {
|
|
71
|
-
try {
|
|
72
|
-
const thunk = readScope().datastore;
|
|
73
|
-
return thunk ? thunk() : undefined;
|
|
74
|
-
}
|
|
75
|
-
catch (error) {
|
|
76
|
-
// @swallow-ok no entered scope / no datastore in scope is normal for
|
|
77
|
-
// non-project commands and tests; degrade to "no datastore" (the run
|
|
78
|
-
// plane then no-ops). Debug-log for diagnosability.
|
|
79
|
-
log.debug?.({
|
|
80
|
-
evt: 'cli.context.datastore_unavailable',
|
|
81
|
-
module: MODULE_TAG,
|
|
82
|
-
error: error instanceof Error ? error.message : String(error),
|
|
83
|
-
});
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
},
|
|
65
|
+
getDatastore: createDatastoreResolver('best-effort', log),
|
|
87
66
|
logger: log,
|
|
88
67
|
});
|
|
89
68
|
// Public run seam (display-only timing) + internal action hooks (the mount
|
|
@@ -95,7 +74,13 @@ export function buildToolCliContext(opts) {
|
|
|
95
74
|
// Live plane binds the per-invocation registry (built in `main()`) to the run
|
|
96
75
|
// plane so `renderLive` owns the live run lifecycle: it times the TTY
|
|
97
76
|
// occupancy and persists the renderer's returned `session` contribution.
|
|
98
|
-
const
|
|
77
|
+
const ioPlane = createIoPlane({
|
|
78
|
+
setExitCode: outputPlane.setExitCode,
|
|
79
|
+
logger: log,
|
|
80
|
+
liveViews: opts.liveViews,
|
|
81
|
+
runPlane,
|
|
82
|
+
runSession,
|
|
83
|
+
});
|
|
99
84
|
const ctx = {
|
|
100
85
|
get scope() {
|
|
101
86
|
// The pre-action-hook (or explicit runWithScope in tests) enters the
|
|
@@ -105,14 +90,14 @@ export function buildToolCliContext(opts) {
|
|
|
105
90
|
return readScope();
|
|
106
91
|
},
|
|
107
92
|
render: (result) => opts.render(result),
|
|
108
|
-
registerLiveView:
|
|
109
|
-
renderLive:
|
|
93
|
+
registerLiveView: ioPlane.register,
|
|
94
|
+
renderLive: ioPlane.renderLive,
|
|
110
95
|
maybeOpenReport: opts.maybeOpenReport,
|
|
111
96
|
logger: log,
|
|
112
97
|
setExitCode: outputPlane.setExitCode,
|
|
113
98
|
...outputPlane.emits, // emitJson / emitEnvelope / emitError / emitRaw
|
|
114
|
-
deliverSignals:
|
|
115
|
-
writeSarif:
|
|
99
|
+
deliverSignals: ioPlane.deliverSignals,
|
|
100
|
+
writeSarif: ioPlane.writeSarif,
|
|
116
101
|
// Host baseline/ratchet plane seams (ADR-0036) — persistence + diff + exports.
|
|
117
102
|
saveBaseline: baselineSeams.saveBaseline,
|
|
118
103
|
compareBaseline: baselineSeams.compareBaseline,
|
package/dist/cli-context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-context.js","sourceRoot":"","sources":["../src/cli-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAEL,MAAM,IAAI,aAAa,GAGxB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli-context.js","sourceRoot":"","sources":["../src/cli-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,28 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Future: can be made more dynamic by introspecting live CommandSpecs
|
|
9
9
|
* (see completion.ts for precedent).
|
|
10
|
+
*
|
|
11
|
+
* Command taxonomy (tool-command-surface-taxonomy):
|
|
12
|
+
* - Entry points are keyed by the PUBLIC command path. A `parent`-nested tool
|
|
13
|
+
* verb (the `<tool> <verb>` grammar enabled by `CommandSpec.parent` — e.g.
|
|
14
|
+
* `graph export`, `fit list`) is catalogued UNDER its tool's entry point
|
|
15
|
+
* (the `<tool> <verb>` form), NOT as a separate root entry point.
|
|
16
|
+
* - Tier-3 `visibility: 'internal'` commands (`*-run-worker`, `*-shard-worker`,
|
|
17
|
+
* `*-equivalence-check`) are NEVER catalogued here — the agent-catalog
|
|
18
|
+
* primary surface excludes internal workers (the host-owned tiering pass
|
|
19
|
+
* formalized in Phase 1 filters them when this surface becomes spec-derived).
|
|
20
|
+
* In Phase 0 no tool declares `parent`/`visibility`, so the static catalog below
|
|
21
|
+
* already satisfies both rules (no nested verb, no internal worker is listed).
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* The command-taxonomy tier an entry point belongs to
|
|
25
|
+
* (tool-command-surface-taxonomy). `'platform'` = host-owned Tier-1 commands
|
|
26
|
+
* (`init`, `sessions`, `agent-catalog`, …); `'tool'` = a Tier-2 tool verb
|
|
27
|
+
* (`fit`, `graph`, `sim`, and their `<tool> <verb>` sub-verbs). `'internal'`
|
|
28
|
+
* (Tier-3 workers) is part of the union for completeness ONLY — the agent-catalog
|
|
29
|
+
* NEVER emits an `internal` entry point (its primary surface excludes Tier-3).
|
|
10
30
|
*/
|
|
31
|
+
export type CommandTier = 'platform' | 'tool' | 'internal';
|
|
11
32
|
export interface AgentCatalog {
|
|
12
33
|
readonly version: string;
|
|
13
34
|
readonly description: string;
|
|
@@ -15,6 +36,14 @@ export interface AgentCatalog {
|
|
|
15
36
|
readonly command: string;
|
|
16
37
|
readonly description: string;
|
|
17
38
|
readonly examples: readonly string[];
|
|
39
|
+
/**
|
|
40
|
+
* Taxonomy tier of this entry point (tool-command-surface-taxonomy). Additive
|
|
41
|
+
* (optional) so existing consumers of the `entryPoints` shape are unaffected;
|
|
42
|
+
* present on every entry the catalog ships so an agent sees the predictable
|
|
43
|
+
* Tier-1/Tier-2 structure. NEVER `'internal'` — Tier-3 is excluded from this
|
|
44
|
+
* surface by construction (see {@link assertNoInternalEntryPoints}).
|
|
45
|
+
*/
|
|
46
|
+
readonly tier?: CommandTier;
|
|
18
47
|
}[];
|
|
19
48
|
readonly commonPatterns: readonly {
|
|
20
49
|
readonly name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-catalog.d.ts","sourceRoot":"","sources":["../../src/commands/agent-catalog.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"agent-catalog.d.ts","sourceRoot":"","sources":["../../src/commands/agent-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,CAAC;AAE3D,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,SAAS;QAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;QACrC;;;;;;WAMG;QACH,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC;KAC7B,EAAE,CAAC;IACJ,QAAQ,CAAC,cAAc,EAAE,SAAS;QAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;KAC1B,EAAE,CAAC;IACJ,QAAQ,CAAC,YAAY,EAAE;QACrB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAkCD,wBAAgB,iBAAiB,IAAI,YAAY,CA8GhD;AAED,wBAAgB,mBAAmB,CAAC,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO;;;;;;;;;;EA8BhE"}
|
|
@@ -1,45 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal (Tier-3) command-name shapes the agent-catalog must NEVER surface:
|
|
3
|
+
* the IPC/CI workers and the equivalence gate. The guard checks both the name
|
|
4
|
+
* shape AND an explicit `tier: 'internal'` so a future edit can't slip one in by
|
|
5
|
+
* either route. This is the by-construction complement to the Phase 4 test.
|
|
6
|
+
*/
|
|
7
|
+
const INTERNAL_COMMAND_NAME_RE = /(?:-run-worker|-shard-worker|-equivalence-check)\b/;
|
|
8
|
+
/**
|
|
9
|
+
* Throw if any entry point is a Tier-3 internal command (by name shape or by an
|
|
10
|
+
* explicit `tier: 'internal'`). Called at catalog-build time so a regression that
|
|
11
|
+
* pastes an internal command into `entryPoints` fails loudly the first time the
|
|
12
|
+
* catalog is built, not silently at the agent boundary.
|
|
13
|
+
*
|
|
14
|
+
* @throws {Error} When an entry point is a Tier-3 internal command — by an
|
|
15
|
+
* explicit `tier: 'internal'` or by an internal command-name shape
|
|
16
|
+
* (`*-run-worker` / `*-shard-worker` / `*-equivalence-check`).
|
|
17
|
+
*/
|
|
18
|
+
function assertNoInternalEntryPoints(entryPoints) {
|
|
19
|
+
const leaked = entryPoints.find((e) => e.tier === 'internal' || INTERNAL_COMMAND_NAME_RE.test(e.command));
|
|
20
|
+
if (leaked !== undefined) {
|
|
21
|
+
throw new Error(`agent-catalog: Tier-3 internal command '${leaked.command}' must not appear in the ` +
|
|
22
|
+
'agent-catalog primary surface (tool-command-surface-taxonomy). Remove it from entryPoints.');
|
|
23
|
+
}
|
|
24
|
+
}
|
|
1
25
|
export function buildAgentCatalog() {
|
|
26
|
+
// tool-command-surface-taxonomy Task 1.4: every entry point is annotated with
|
|
27
|
+
// its taxonomy `tier` so an agent sees the predictable Tier-1/Tier-2 shape, and
|
|
28
|
+
// NO Tier-3 internal worker is catalogued. The static list below is the
|
|
29
|
+
// primary surface; `assertNoInternalEntryPoints` guards (by construction)
|
|
30
|
+
// against a future edit pasting an internal command in (the Phase 4 test
|
|
31
|
+
// also asserts this).
|
|
32
|
+
const entryPoints = [
|
|
33
|
+
{
|
|
34
|
+
command: 'fit',
|
|
35
|
+
description: 'Run fitness checks. Use --json for machine output (SignalEnvelope).',
|
|
36
|
+
examples: ['opensip fit --recipe default --json', 'opensip fit --check some-check --json'],
|
|
37
|
+
tier: 'tool',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
command: 'graph',
|
|
41
|
+
description: 'Build static call graph + rules. --json yields SignalEnvelope.',
|
|
42
|
+
examples: ['opensip graph --json', 'opensip graph --sarif out.sarif'],
|
|
43
|
+
tier: 'tool',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
command: 'sessions list',
|
|
47
|
+
description: 'List stored sessions. --summary-only is agent-friendly (omits heavy payloads).',
|
|
48
|
+
examples: [
|
|
49
|
+
'opensip sessions list --json --summary-only',
|
|
50
|
+
'opensip sessions list --json --tool fit --limit 5',
|
|
51
|
+
],
|
|
52
|
+
tier: 'platform',
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
command: 'sessions show',
|
|
56
|
+
description: 'Retrieve a prior run as SessionReplayResult (includes projected SignalEnvelope). ' +
|
|
57
|
+
'Supports latest + --tool and rich filtering.',
|
|
58
|
+
examples: [
|
|
59
|
+
'opensip sessions show latest --tool fit --json',
|
|
60
|
+
'opensip sessions show latest --tool fit --json --filter errors-only --filter top:20',
|
|
61
|
+
'opensip sessions show GRAPH_01... --json --raw',
|
|
62
|
+
'opensip sessions show previous --tool graph --json',
|
|
63
|
+
],
|
|
64
|
+
tier: 'platform',
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
command: 'agent-catalog',
|
|
68
|
+
description: 'This command. Self-describing catalog for agents (JSON preferred).',
|
|
69
|
+
examples: ['opensip agent-catalog --json'],
|
|
70
|
+
tier: 'platform',
|
|
71
|
+
},
|
|
72
|
+
];
|
|
73
|
+
assertNoInternalEntryPoints(entryPoints);
|
|
2
74
|
return {
|
|
3
75
|
version: '1.0.0',
|
|
4
76
|
description: 'Stable, machine-oriented surface for AI agents using OpenSIP CLI. ' +
|
|
5
77
|
'Focus on --json paths, sessions for historical results, and composable filters. ' +
|
|
6
78
|
'Human UX (tables, banners) is preserved unchanged.',
|
|
7
|
-
entryPoints
|
|
8
|
-
{
|
|
9
|
-
command: 'fit',
|
|
10
|
-
description: 'Run fitness checks. Use --json for machine output (SignalEnvelope).',
|
|
11
|
-
examples: ['opensip fit --recipe default --json', 'opensip fit --check some-check --json'],
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
command: 'graph',
|
|
15
|
-
description: 'Build static call graph + rules. --json yields SignalEnvelope.',
|
|
16
|
-
examples: ['opensip graph --json', 'opensip graph --sarif out.sarif'],
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
command: 'sessions list',
|
|
20
|
-
description: 'List stored sessions. --summary-only is agent-friendly (omits heavy payloads).',
|
|
21
|
-
examples: [
|
|
22
|
-
'opensip sessions list --json --summary-only',
|
|
23
|
-
'opensip sessions list --json --tool fit --limit 5',
|
|
24
|
-
],
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
command: 'sessions show',
|
|
28
|
-
description: 'Retrieve a prior run as SessionReplayResult (includes projected SignalEnvelope). ' +
|
|
29
|
-
'Supports latest + --tool and rich filtering.',
|
|
30
|
-
examples: [
|
|
31
|
-
'opensip sessions show latest --tool fit --json',
|
|
32
|
-
'opensip sessions show latest --tool fit --json --filter errors-only --filter top:20',
|
|
33
|
-
'opensip sessions show GRAPH_01... --json --raw',
|
|
34
|
-
'opensip sessions show previous --tool graph --json',
|
|
35
|
-
],
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
command: 'agent-catalog',
|
|
39
|
-
description: 'This command. Self-describing catalog for agents (JSON preferred).',
|
|
40
|
-
examples: ['opensip agent-catalog --json'],
|
|
41
|
-
},
|
|
42
|
-
],
|
|
79
|
+
entryPoints,
|
|
43
80
|
commonPatterns: [
|
|
44
81
|
{
|
|
45
82
|
name: 'Inspect latest fit with focus on errors',
|
|
@@ -73,6 +110,10 @@ export function buildAgentCatalog() {
|
|
|
73
110
|
'filtersApplied, originalSignalCount, returnedSignalCount appear when --filter is used.',
|
|
74
111
|
'The fidelity field on replays is always "projection" (rebuilt from persisted data).',
|
|
75
112
|
'Human-readable output (no --json) uses the same tables/banners as before — unchanged.',
|
|
113
|
+
// Uniform tool-primary surface (host-guaranteed; decorateToolPrimary).
|
|
114
|
+
'Every tool primary (fit/graph/sim and any third-party tool) accepts `<tool> --version` ' +
|
|
115
|
+
'(prints the TOOL version, e.g. `fit 0.1.6`; distinct from `opensip --version`, the CLI), ' +
|
|
116
|
+
'plus the guaranteed baseline flags --cwd, --json, --config, --quiet, --verbose.',
|
|
76
117
|
'Dogfood gate requires 0 errors + 0 warnings on fit:ci and graph:ci after any change.',
|
|
77
118
|
// Hygiene invariant (host-planes-scope-seams-hygiene Phases 2-4): everything runs inside an
|
|
78
119
|
// entered RunScope; the only sanctioned seams for output, delivery, baselines, toolState,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-catalog.js","sourceRoot":"","sources":["../../src/commands/agent-catalog.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent-catalog.js","sourceRoot":"","sources":["../../src/commands/agent-catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clear.d.ts","sourceRoot":"","sources":["../../src/commands/clear.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;
|
|
1
|
+
{"version":3,"file":"clear.d.ts","sourceRoot":"","sources":["../../src/commands/clear.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,SAAS,CAAC;CACtB;AAYD;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CAyC/E"}
|
package/dist/commands/clear.js
CHANGED
|
@@ -11,7 +11,6 @@
|
|
|
11
11
|
* Banners and result lines route through the Ink renderer via the
|
|
12
12
|
* `clear-done` `CommandResult` shape — no raw ANSI escapes here.
|
|
13
13
|
*/
|
|
14
|
-
// @fitness-ignore-file only-documented-toolcli-seams -- interactive TTY confirmation: the pre-prompt notes printed before "Continue? (y/n)" are human-readable readline UX, not machine run output through a ToolCliContext seam (mirrors the ESLint exemption for this file). Result lines route through the Ink `clear-done` CommandResult. (Architecture review finding 5.)
|
|
15
14
|
import { createInterface } from 'node:readline';
|
|
16
15
|
import { SessionRepo } from '@opensip-cli/session-store';
|
|
17
16
|
function ask(question) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clear.js","sourceRoot":"","sources":["../../src/commands/clear.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH
|
|
1
|
+
{"version":3,"file":"clear.js","sourceRoot":"","sources":["../../src/commands/clear.ts"],"names":[],"mappings":"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"}
|