opensip-cli 0.1.14 → 0.1.16

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.
Files changed (110) hide show
  1. package/dist/bootstrap/artifact-retention.d.ts +62 -0
  2. package/dist/bootstrap/artifact-retention.d.ts.map +1 -0
  3. package/dist/bootstrap/artifact-retention.js +117 -0
  4. package/dist/bootstrap/artifact-retention.js.map +1 -0
  5. package/dist/bootstrap/artifact-seams.d.ts +21 -1
  6. package/dist/bootstrap/artifact-seams.d.ts.map +1 -1
  7. package/dist/bootstrap/artifact-seams.js +76 -4
  8. package/dist/bootstrap/artifact-seams.js.map +1 -1
  9. package/dist/bootstrap/atomic-artifact-write.d.ts.map +1 -1
  10. package/dist/bootstrap/atomic-artifact-write.js +7 -2
  11. package/dist/bootstrap/atomic-artifact-write.js.map +1 -1
  12. package/dist/bootstrap/bundled-tools.manifest.json +2 -1
  13. package/dist/bootstrap/dispatch-fork-core.d.ts +15 -2
  14. package/dist/bootstrap/dispatch-fork-core.d.ts.map +1 -1
  15. package/dist/bootstrap/dispatch-fork-core.js +22 -4
  16. package/dist/bootstrap/dispatch-fork-core.js.map +1 -1
  17. package/dist/bootstrap/dispatch-host-rpc-handler.d.ts.map +1 -1
  18. package/dist/bootstrap/dispatch-host-rpc-handler.js +10 -0
  19. package/dist/bootstrap/dispatch-host-rpc-handler.js.map +1 -1
  20. package/dist/bootstrap/load-tool-capabilities.js +11 -4
  21. package/dist/bootstrap/load-tool-capabilities.js.map +1 -1
  22. package/dist/bootstrap/pre-action-messages.js +1 -1
  23. package/dist/bootstrap/pre-action-messages.js.map +1 -1
  24. package/dist/bootstrap/run-plane.d.ts +10 -0
  25. package/dist/bootstrap/run-plane.d.ts.map +1 -1
  26. package/dist/bootstrap/run-plane.js +20 -0
  27. package/dist/bootstrap/run-plane.js.map +1 -1
  28. package/dist/bootstrap/tool-command-dispatch-types.d.ts +15 -0
  29. package/dist/bootstrap/tool-command-dispatch-types.d.ts.map +1 -1
  30. package/dist/bootstrap/tool-command-worker-context.d.ts +5 -4
  31. package/dist/bootstrap/tool-command-worker-context.d.ts.map +1 -1
  32. package/dist/bootstrap/tool-command-worker-context.js +6 -4
  33. package/dist/bootstrap/tool-command-worker-context.js.map +1 -1
  34. package/dist/bootstrap/tool-command-worker-entry.d.ts.map +1 -1
  35. package/dist/bootstrap/tool-command-worker-entry.js +30 -5
  36. package/dist/bootstrap/tool-command-worker-entry.js.map +1 -1
  37. package/dist/bootstrap/tool-command-worker-rpc.d.ts.map +1 -1
  38. package/dist/bootstrap/tool-command-worker-rpc.js +23 -1
  39. package/dist/bootstrap/tool-command-worker-rpc.js.map +1 -1
  40. package/dist/cli-context.d.ts.map +1 -1
  41. package/dist/cli-context.js +26 -3
  42. package/dist/cli-context.js.map +1 -1
  43. package/dist/commands/agent-catalog.d.ts +9 -56
  44. package/dist/commands/agent-catalog.d.ts.map +1 -1
  45. package/dist/commands/agent-catalog.js +8 -199
  46. package/dist/commands/agent-catalog.js.map +1 -1
  47. package/dist/commands/assemble-opts.d.ts +13 -0
  48. package/dist/commands/assemble-opts.d.ts.map +1 -0
  49. package/dist/commands/assemble-opts.js +85 -0
  50. package/dist/commands/assemble-opts.js.map +1 -0
  51. package/dist/commands/history.d.ts +7 -11
  52. package/dist/commands/history.d.ts.map +1 -1
  53. package/dist/commands/history.js +7 -39
  54. package/dist/commands/history.js.map +1 -1
  55. package/dist/commands/host-subcommand-groups.d.ts.map +1 -1
  56. package/dist/commands/host-subcommand-groups.js +12 -1
  57. package/dist/commands/host-subcommand-groups.js.map +1 -1
  58. package/dist/commands/init/agents-md.d.ts.map +1 -1
  59. package/dist/commands/init/agents-md.js +6 -0
  60. package/dist/commands/init/agents-md.js.map +1 -1
  61. package/dist/commands/mount-command-spec-wiring.d.ts +1 -0
  62. package/dist/commands/mount-command-spec-wiring.d.ts.map +1 -1
  63. package/dist/commands/mount-command-spec-wiring.js +5 -5
  64. package/dist/commands/mount-command-spec-wiring.js.map +1 -1
  65. package/dist/commands/session-show.d.ts.map +1 -1
  66. package/dist/commands/session-show.js +14 -41
  67. package/dist/commands/session-show.js.map +1 -1
  68. package/dist/commands/shared.d.ts +3 -1
  69. package/dist/commands/shared.d.ts.map +1 -1
  70. package/dist/commands/suite/capturing-context.d.ts +19 -0
  71. package/dist/commands/suite/capturing-context.d.ts.map +1 -0
  72. package/dist/commands/suite/capturing-context.js +62 -0
  73. package/dist/commands/suite/capturing-context.js.map +1 -0
  74. package/dist/commands/suite/orchestrator.d.ts +12 -0
  75. package/dist/commands/suite/orchestrator.d.ts.map +1 -0
  76. package/dist/commands/suite/orchestrator.js +216 -0
  77. package/dist/commands/suite/orchestrator.js.map +1 -0
  78. package/dist/commands/suite/suite-add.d.ts +18 -0
  79. package/dist/commands/suite/suite-add.d.ts.map +1 -0
  80. package/dist/commands/suite/suite-add.js +130 -0
  81. package/dist/commands/suite/suite-add.js.map +1 -0
  82. package/dist/commands/suite/suite-command-specs.d.ts +4 -0
  83. package/dist/commands/suite/suite-command-specs.d.ts.map +1 -0
  84. package/dist/commands/suite/suite-command-specs.js +150 -0
  85. package/dist/commands/suite/suite-command-specs.js.map +1 -0
  86. package/dist/commands/suite/validate-suite.d.ts +21 -0
  87. package/dist/commands/suite/validate-suite.d.ts.map +1 -0
  88. package/dist/commands/suite/validate-suite.js +89 -0
  89. package/dist/commands/suite/validate-suite.js.map +1 -0
  90. package/dist/commands/tools/list.d.ts.map +1 -1
  91. package/dist/commands/tools/list.js +54 -31
  92. package/dist/commands/tools/list.js.map +1 -1
  93. package/dist/index.js +1 -0
  94. package/dist/index.js.map +1 -1
  95. package/dist/report-compose.js +2 -2
  96. package/dist/report-compose.js.map +1 -1
  97. package/dist/ui/result-to-view.d.ts.map +1 -1
  98. package/dist/ui/result-to-view.js +22 -0
  99. package/dist/ui/result-to-view.js.map +1 -1
  100. package/dist/ui/views/misc-views.d.ts.map +1 -1
  101. package/dist/ui/views/misc-views.js +30 -7
  102. package/dist/ui/views/misc-views.js.map +1 -1
  103. package/dist/ui/views/suite-views.d.ts +6 -0
  104. package/dist/ui/views/suite-views.d.ts.map +1 -0
  105. package/dist/ui/views/suite-views.js +70 -0
  106. package/dist/ui/views/suite-views.js.map +1 -0
  107. package/dist/ui/views/tools-views.d.ts.map +1 -1
  108. package/dist/ui/views/tools-views.js +2 -0
  109. package/dist/ui/views/tools-views.js.map +1 -1
  110. package/package.json +34 -33
@@ -1,69 +1,22 @@
1
1
  /**
2
- * Structured catalog for AI agents.
3
- * Provides stable entry points, recommended patterns (including the new
4
- * agent ergonomics like --filter, --raw, --summary-only), and example shapes.
5
- * This is intentionally a small, self-contained surface so agents can
6
- * bootstrap their usage without parsing --help text or source.
2
+ * `agent-catalog` command adapter.
7
3
  *
8
- * Command taxonomy (tool-command-surface-taxonomy):
9
- * - Entry points are keyed by the PUBLIC command path. A `parent`-nested tool
10
- * verb (the `<tool> <verb>` grammar enabled by `CommandSpec.parent` e.g.
11
- * `graph export`, `fit list`) is catalogued UNDER its tool's entry point
12
- * (the `<tool> <verb>` form), NOT as a separate root entry point.
13
- * - Tier-3 `visibility: 'internal'` commands (`*-run-worker`, `*-shard-worker`,
14
- * `*-equivalence-check`) are NEVER catalogued here — the agent-catalog
15
- * primary surface excludes internal workers (the host-owned tiering pass
16
- * formalized in Phase 1 filters them when this surface becomes spec-derived).
4
+ * The catalog projection (`buildAgentCatalog` + its `AgentCatalog` / `CommandTier`
5
+ * types) was re-homed into `@opensip-cli/contracts` (ADR-0084) so
6
+ * `@opensip-cli/mcp` can serve the same surface without importing the
7
+ * composition root. This module re-exports it for existing call sites/tests and
8
+ * keeps the host rendering wrapper (`executeAgentCatalog`).
17
9
  */
18
10
  import type { ToolRegistry } from '@opensip-cli/core';
19
- /**
20
- * The command-taxonomy tier an entry point belongs to
21
- * (tool-command-surface-taxonomy). `'platform'` = host-owned Tier-1 commands
22
- * (`init`, `sessions`, `agent-catalog`, …); `'tool'` = a Tier-2 tool verb
23
- * (`fit`, `graph`, `sim`, and their `<tool> <verb>` sub-verbs). `'internal'`
24
- * (Tier-3 workers) is part of the union for completeness ONLY — the agent-catalog
25
- * NEVER emits an `internal` entry point (its primary surface excludes Tier-3).
26
- */
27
- export type CommandTier = 'platform' | 'tool' | 'internal';
28
- export interface AgentCatalog {
29
- readonly version: string;
30
- readonly description: string;
31
- readonly entryPoints: readonly {
32
- readonly command: string;
33
- readonly description: string;
34
- readonly examples: readonly string[];
35
- /**
36
- * Taxonomy tier of this entry point (tool-command-surface-taxonomy). Additive
37
- * (optional) so existing consumers of the `entryPoints` shape are unaffected;
38
- * present on every entry the catalog ships so an agent sees the predictable
39
- * Tier-1/Tier-2 structure. NEVER `'internal'` — Tier-3 is excluded from this
40
- * surface by construction (see {@link assertNoInternalEntryPoints}).
41
- */
42
- readonly tier?: CommandTier;
43
- }[];
44
- readonly commonPatterns: readonly {
45
- readonly name: string;
46
- readonly description: string;
47
- readonly example: string;
48
- }[];
49
- readonly outputShapes: {
50
- readonly signalEnvelope: string;
51
- readonly sessionReplay: string;
52
- readonly history: string;
53
- };
54
- readonly notes: readonly string[];
55
- }
56
- export declare function buildAgentCatalog(input?: {
57
- readonly tools?: ToolRegistry;
58
- readonly internalCommands?: ReadonlySet<string>;
59
- }): AgentCatalog;
11
+ export { buildAgentCatalog } from '@opensip-cli/contracts';
12
+ export type { AgentCatalog, CommandTier } from '@opensip-cli/contracts';
60
13
  export declare function executeAgentCatalog(opts?: {
61
14
  readonly json?: boolean;
62
15
  readonly tools?: ToolRegistry;
63
16
  readonly internalCommands?: ReadonlySet<string>;
64
17
  }): {
65
18
  type: string;
66
- catalog: AgentCatalog;
19
+ catalog: import("@opensip-cli/contracts").AgentCatalog;
67
20
  title?: undefined;
68
21
  lines?: undefined;
69
22
  } | {
@@ -1 +1 @@
1
- {"version":3,"file":"agent-catalog.d.ts","sourceRoot":"","sources":["../../src/commands/agent-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAqB,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACzE;;;;;;;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;AAkJD,wBAAgB,iBAAiB,CAC/B,KAAK,GAAE;IACL,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC5C,GACL,YAAY,CAmFd;AAED,wBAAgB,mBAAmB,CACjC,IAAI,GAAE;IACJ,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC5C;;;;;;;;;;EAkCP"}
1
+ {"version":3,"file":"agent-catalog.d.ts","sourceRoot":"","sources":["../../src/commands/agent-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAExE,wBAAgB,mBAAmB,CACjC,IAAI,GAAE;IACJ,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC5C;;;;;;;;;;EAkCP"}
@@ -1,205 +1,14 @@
1
1
  /**
2
- * Structured catalog for AI agents.
3
- * Provides stable entry points, recommended patterns (including the new
4
- * agent ergonomics like --filter, --raw, --summary-only), and example shapes.
5
- * This is intentionally a small, self-contained surface so agents can
6
- * bootstrap their usage without parsing --help text or source.
2
+ * `agent-catalog` command adapter.
7
3
  *
8
- * Command taxonomy (tool-command-surface-taxonomy):
9
- * - Entry points are keyed by the PUBLIC command path. A `parent`-nested tool
10
- * verb (the `<tool> <verb>` grammar enabled by `CommandSpec.parent` e.g.
11
- * `graph export`, `fit list`) is catalogued UNDER its tool's entry point
12
- * (the `<tool> <verb>` form), NOT as a separate root entry point.
13
- * - Tier-3 `visibility: 'internal'` commands (`*-run-worker`, `*-shard-worker`,
14
- * `*-equivalence-check`) are NEVER catalogued here — the agent-catalog
15
- * primary surface excludes internal workers (the host-owned tiering pass
16
- * formalized in Phase 1 filters them when this surface becomes spec-derived).
4
+ * The catalog projection (`buildAgentCatalog` + its `AgentCatalog` / `CommandTier`
5
+ * types) was re-homed into `@opensip-cli/contracts` (ADR-0084) so
6
+ * `@opensip-cli/mcp` can serve the same surface without importing the
7
+ * composition root. This module re-exports it for existing call sites/tests and
8
+ * keeps the host rendering wrapper (`executeAgentCatalog`).
17
9
  */
18
- /**
19
- * Internal (Tier-3) command-name shapes the agent-catalog must NEVER surface:
20
- * the IPC/CI workers and the equivalence gate. The guard checks both the name
21
- * shape AND an explicit `tier: 'internal'` so a future edit can't slip one in by
22
- * either route. This is the by-construction complement to the Phase 4 test.
23
- */
24
- const INTERNAL_COMMAND_NAME_RE = /(?:-run-worker|-shard-worker|-equivalence-check)\b/;
25
- function compareCodePoint(left, right) {
26
- if (left < right)
27
- return -1;
28
- if (left > right)
29
- return 1;
30
- return 0;
31
- }
32
- /**
33
- * Throw if any entry point is a Tier-3 internal command (by name shape or by an
34
- * explicit `tier: 'internal'`). Called at catalog-build time so a regression that
35
- * pastes an internal command into `entryPoints` fails loudly the first time the
36
- * catalog is built, not silently at the agent boundary.
37
- *
38
- * @throws {Error} When an entry point is a Tier-3 internal command — by an
39
- * explicit `tier: 'internal'` or by an internal command-name shape
40
- * (`*-run-worker` / `*-shard-worker` / `*-equivalence-check`).
41
- */
42
- function assertNoInternalEntryPoints(entryPoints) {
43
- const leaked = entryPoints.find((e) => e.tier === 'internal' || INTERNAL_COMMAND_NAME_RE.test(e.command));
44
- if (leaked !== undefined) {
45
- throw new Error(`agent-catalog: Tier-3 internal command '${leaked.command}' must not appear in the ` +
46
- 'agent-catalog primary surface (tool-command-surface-taxonomy). Remove it from entryPoints.');
47
- }
48
- }
49
- const TOOL_ENTRY_OVERLAYS = {
50
- fitness: {
51
- description: 'Run fitness checks. Use --json for machine output (SignalEnvelope). Agent recipes: agent-fast, agent-risk, agent-final.',
52
- examples: [
53
- 'opensip fit --recipe agent-fast --json --filter errors-only',
54
- 'opensip fit --changed --include-impacted --json',
55
- 'opensip fit --recipe agent-final --gate-compare',
56
- ],
57
- },
58
- graph: {
59
- description: 'Build static call graph + rules. --json yields SignalEnvelope. Use graph impact for change-aware blast radius.',
60
- examples: [
61
- 'opensip graph --json',
62
- 'opensip graph impact --changed --json --top 20',
63
- 'opensip graph --recipe agent-risk --json --filter high-impact',
64
- ],
65
- },
66
- sim: {
67
- description: 'Run simulation scenarios. Use --json for machine output (SignalEnvelope).',
68
- examples: ['opensip sim --json', 'opensip sim --scenario default --json'],
69
- },
70
- yagni: {
71
- description: 'Run YAGNI reduction audit detectors. Advisory findings; --json yields SignalEnvelope.',
72
- examples: ['opensip yagni --json', 'opensip yagni --json packages/yagni/engine'],
73
- },
74
- };
75
- const PLATFORM_ENTRY_POINTS = [
76
- {
77
- command: 'sessions list',
78
- description: 'List stored sessions. --summary-only is agent-friendly (omits heavy payloads).',
79
- examples: [
80
- 'opensip sessions list --json --summary-only',
81
- 'opensip sessions list --json --tool fitness --limit 5',
82
- ],
83
- tier: 'platform',
84
- },
85
- {
86
- command: 'sessions show',
87
- description: 'Retrieve a prior run as SessionReplayResult (includes projected SignalEnvelope). ' +
88
- 'Supports latest + --tool and rich filtering.',
89
- examples: [
90
- 'opensip sessions show latest --tool fitness --json',
91
- 'opensip sessions show latest --tool fit --json --filter errors-only --filter top:20',
92
- 'opensip sessions show GRAPH_01... --json --raw',
93
- 'opensip sessions show previous --tool graph --json',
94
- ],
95
- tier: 'platform',
96
- },
97
- {
98
- command: 'agent-catalog',
99
- description: 'This command. Self-describing catalog for agents (JSON preferred).',
100
- examples: ['opensip agent-catalog --json'],
101
- tier: 'platform',
102
- },
103
- ];
104
- function publicPrimaryCommand(tool, internalCommands) {
105
- return (tool.commandSpecs ?? []).find((spec) => spec.parent === undefined &&
106
- spec.visibility !== 'internal' &&
107
- !internalCommands.has(spec.name) &&
108
- !INTERNAL_COMMAND_NAME_RE.test(spec.name));
109
- }
110
- function entryPointForTool(tool, internalCommands) {
111
- const primary = publicPrimaryCommand(tool, internalCommands);
112
- if (primary === undefined)
113
- return undefined;
114
- const overlay = TOOL_ENTRY_OVERLAYS[primary.name] ?? TOOL_ENTRY_OVERLAYS[tool.metadata.name];
115
- return {
116
- command: primary.name,
117
- description: overlay?.description ??
118
- `${primary.description} Use --json when available for machine output.`,
119
- examples: overlay?.examples ?? [`opensip ${primary.name} --json`],
120
- tier: 'tool',
121
- };
122
- }
123
- function deriveToolEntryPoints(tools, internalCommands) {
124
- return (tools?.list() ?? [])
125
- .map((tool) => entryPointForTool(tool, internalCommands))
126
- .filter((entry) => entry !== undefined)
127
- .sort((a, b) => compareCodePoint(a.command, b.command));
128
- }
129
- export function buildAgentCatalog(input = {}) {
130
- const entryPoints = [
131
- ...deriveToolEntryPoints(input.tools, input.internalCommands ?? new Set()),
132
- ...PLATFORM_ENTRY_POINTS,
133
- ];
134
- assertNoInternalEntryPoints(entryPoints);
135
- return {
136
- version: '1.0.0',
137
- description: 'Stable, machine-oriented surface for AI agents using OpenSIP CLI. ' +
138
- 'Focus on --json paths, sessions for historical results, and composable filters. ' +
139
- 'Human UX (tables, banners) is preserved unchanged.',
140
- entryPoints,
141
- commonPatterns: [
142
- {
143
- name: 'Read latest result first (read-latest-result)',
144
- description: 'When the user says a tool already reported findings, inspect the latest stored result before re-running.',
145
- example: 'opensip sessions show latest --tool fit --json --filter errors-only --filter top:20',
146
- },
147
- {
148
- name: 'Agent edit loop',
149
- description: 'Fast check → impact analysis → changed-only fit → final gate.',
150
- example: 'opensip fit --recipe agent-fast --json && opensip graph impact --changed --json && opensip fit --changed --include-impacted --json',
151
- },
152
- {
153
- name: 'Inspect latest fit with focus on errors',
154
- description: 'After a fit run, pull only actionable errors (high severity) and limit count.',
155
- example: 'opensip sessions show latest --tool fit --json --filter errors-only --filter top:10',
156
- },
157
- {
158
- name: 'Lean session menu for agents',
159
- description: 'Get pointers to interesting sessions without downloading full historical payloads.',
160
- example: 'opensip sessions list --json --summary-only --tool fit',
161
- },
162
- {
163
- name: 'Minimal raw envelope for token-sensitive agents',
164
- description: 'Bypass the standard CommandResult wrapper when you only need the core data.',
165
- example: 'opensip sessions show latest --tool graph --json --raw',
166
- },
167
- {
168
- name: 'Relative navigation',
169
- description: 'Walk backwards through recent runs of a specific tool without tracking IDs.',
170
- example: 'opensip sessions show previous --tool fit --json --filter warnings-only',
171
- },
172
- ],
173
- outputShapes: {
174
- signalEnvelope: 'The canonical cross-tool currency (schemaVersion, tool, runId, verdict, units, signals). ' +
175
- 'Every fit/graph/sim result (live or replayed) carries one. See contracts for full type.',
176
- sessionReplay: 'For sessions show: { session: {id,tool,startedAt,completedAt,score,passed,...}, fidelity: "projection", envelope: SignalEnvelope, filtersApplied?, ...counts }',
177
- history: 'For sessions list: { type: "history", sessions: HistorySession[] } where each has showCommand + optional summary.',
178
- },
179
- notes: [
180
- 'Agent recipes (when present): fit agent-fast / agent-risk / agent-final; graph agent-risk / agent-final.',
181
- 'Live runs support --filter/--top/--raw on fit/graph/sim --json (same engine as sessions show).',
182
- 'graph impact answers changed→impacted without a separate git diff dance.',
183
- 'All machine output is under --json. Use --raw on show for the smallest possible payload.',
184
- 'filtersApplied, originalSignalCount, returnedSignalCount appear when --filter is used.',
185
- 'The fidelity field on replays is always "projection" (rebuilt from persisted data).',
186
- 'Human-readable output (no --json) uses the same tables/banners as before — unchanged.',
187
- // Uniform tool-primary surface (host-guaranteed; decorateToolPrimary).
188
- 'Every tool primary (fit/graph/sim/yagni and any third-party tool) accepts `<tool> --version` ' +
189
- '(prints the TOOL version, e.g. `fit 0.1.6`; distinct from `opensip --version`, the CLI), ' +
190
- 'plus the guaranteed baseline flags --cwd, --json, --config, --quiet, --verbose.',
191
- 'Dogfood gate requires 0 errors + 0 warnings on fit:ci and graph:ci after any change.',
192
- // Hygiene invariant (host-planes-scope-seams-hygiene Phases 2-4): everything runs inside an
193
- // entered RunScope; the only sanctioned seams for output, delivery, baselines, toolState,
194
- // and hostPlanes (governance/audit/entitlements) are the documented methods on ToolCliContext
195
- // (render, emitJson, emitEnvelope, deliverSignals, writeArtifact, writeSarif, + the
196
- // baseline/toolState/hostPlanes accessors). Direct stdout, the old pre-scope holder, or
197
- // raw datastore from handlers is forbidden and caught by ESLint + fitness check + runtime
198
- // guards. Bootstrap root is exempted.
199
- 'Only the methods on the ToolCliContext you receive are allowed for emission/state/planes.',
200
- ],
201
- };
202
- }
10
+ import { buildAgentCatalog } from '@opensip-cli/contracts';
11
+ export { buildAgentCatalog } from '@opensip-cli/contracts';
203
12
  export function executeAgentCatalog(opts = {}) {
204
13
  const catalog = buildAgentCatalog({
205
14
  tools: opts.tools,
@@ -1 +1 @@
1
- {"version":3,"file":"agent-catalog.js","sourceRoot":"","sources":["../../src/commands/agent-catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-catalog.js","sourceRoot":"","sources":["../../src/commands/agent-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAI3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAG3D,MAAM,UAAU,mBAAmB,CACjC,OAII,EAAE;IAEN,MAAM,OAAO,GAAG,iBAAiB,CAAC;QAChC,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;KACxC,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,wDAAwD;QACxD,sEAAsE;QACtE,gEAAgE;QAChE,OAAO;YACL,IAAI,EAAE,eAAe;YACrB,OAAO;SACR,CAAC;IACJ,CAAC;IAED,qDAAqD;IACrD,MAAM,KAAK,GAAa;QACtB,kEAAkE;QAClE,EAAE;QACF,8BAA8B;QAC9B,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;QACnE,EAAE;QACF,oBAAoB,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3E,EAAE;QACF,sEAAsE;KACvE,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,eAAe;QACtB,KAAK;KACN,CAAC;AACJ,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { type OptionSpec } from '@opensip-cli/core';
2
+ export interface AssembleOptsInput {
3
+ readonly options: readonly OptionSpec[] | undefined;
4
+ readonly suppliedValues?: Readonly<Record<string, unknown>>;
5
+ }
6
+ export interface AssembledOpts {
7
+ readonly opts: Record<string, unknown>;
8
+ readonly knownKeys: ReadonlySet<string>;
9
+ }
10
+ export declare function optionKey(spec: OptionSpec): string;
11
+ export declare function assembleOptsFromSpec(input: AssembleOptsInput): AssembledOpts;
12
+ export declare function optionDefaultValue(spec: OptionSpec): unknown;
13
+ //# sourceMappingURL=assemble-opts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assemble-opts.d.ts","sourceRoot":"","sources":["../../src/commands/assemble-opts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIxE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,CAAC;IACpD,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACzC;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAQlD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,iBAAiB,GAAG,aAAa,CAe5E;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAK5D"}
@@ -0,0 +1,85 @@
1
+ import { ConfigurationError } from '@opensip-cli/core';
2
+ const NO_PREVIOUS_VALUE = undefined;
3
+ export function optionKey(spec) {
4
+ const long = spec.flag
5
+ .split(',')
6
+ .map((part) => part.trim())
7
+ .find((part) => part.startsWith('--'));
8
+ const token = long ?? spec.flag.trim().split(/\s+/)[0] ?? '';
9
+ const withoutPrefix = token.replace(/^--no-/, '').replace(/^--/, '');
10
+ return withoutPrefix.replace(/-([a-z0-9])/g, (_, c) => c.toUpperCase());
11
+ }
12
+ export function assembleOptsFromSpec(input) {
13
+ const supplied = input.suppliedValues ?? {};
14
+ const opts = {};
15
+ const knownKeys = new Set();
16
+ for (const spec of input.options ?? []) {
17
+ const key = optionKey(spec);
18
+ knownKeys.add(key);
19
+ const value = parseOptionValue(spec, initialOptionValue(spec, supplied, key));
20
+ validateChoices(key, spec, value);
21
+ validateRequired(key, spec, value);
22
+ assignIfPresent(opts, key, value);
23
+ }
24
+ return { opts, knownKeys };
25
+ }
26
+ export function optionDefaultValue(spec) {
27
+ if (spec.arrayDefault !== undefined)
28
+ return [...spec.arrayDefault];
29
+ if (spec.default !== undefined)
30
+ return spec.default;
31
+ if (spec.negatable === true)
32
+ return true;
33
+ return undefined;
34
+ }
35
+ function initialOptionValue(spec, supplied, key) {
36
+ return Object.prototype.hasOwnProperty.call(supplied, key)
37
+ ? supplied[key]
38
+ : optionDefaultValue(spec);
39
+ }
40
+ function parseOptionValue(spec, value) {
41
+ if (value === undefined || spec.parse === undefined)
42
+ return value;
43
+ if (!Array.isArray(value))
44
+ return spec.parse(stringifyOptionValue(value), NO_PREVIOUS_VALUE);
45
+ let previous = spec.arrayDefault === undefined ? undefined : [...spec.arrayDefault];
46
+ for (const item of value) {
47
+ previous = spec.parse(stringifyOptionValue(item), previous);
48
+ }
49
+ return previous;
50
+ }
51
+ function validateChoices(key, spec, value) {
52
+ if (value === undefined || spec.choices === undefined || spec.choices.length === 0)
53
+ return;
54
+ const values = Array.isArray(value) ? value : [value];
55
+ for (const candidate of values) {
56
+ const text = stringifyOptionValue(candidate);
57
+ if (!spec.choices.includes(text)) {
58
+ throw new ConfigurationError(`Invalid value for option '${key}': ${text}. Expected one of: ${spec.choices.join(', ')}`, { code: 'CONFIG.SUITE.OPTION_CHOICE' });
59
+ }
60
+ }
61
+ }
62
+ function validateRequired(key, spec, value) {
63
+ if (spec.required !== true || (value !== undefined && value !== ''))
64
+ return;
65
+ throw new ConfigurationError(`Missing required option '${key}'.`, {
66
+ code: 'CONFIG.SUITE.OPTION_REQUIRED',
67
+ });
68
+ }
69
+ function assignIfPresent(opts, key, value) {
70
+ if (value !== undefined)
71
+ opts[key] = value;
72
+ }
73
+ function stringifyOptionValue(value) {
74
+ if (typeof value === 'string')
75
+ return value;
76
+ if (typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint') {
77
+ return String(value);
78
+ }
79
+ if (value === null)
80
+ return 'null';
81
+ throw new ConfigurationError(`Invalid non-scalar value for option parsing.`, {
82
+ code: 'CONFIG.SUITE.OPTION_VALUE_TYPE',
83
+ });
84
+ }
85
+ //# sourceMappingURL=assemble-opts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assemble-opts.js","sourceRoot":"","sources":["../../src/commands/assemble-opts.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,11 @@
1
1
  /**
2
2
  * history command — show run history.
3
+ *
4
+ * The read-only list projection was re-homed into `@opensip-cli/session-store`
5
+ * (ADR-0084) so `@opensip-cli/mcp` can list runs without importing the
6
+ * composition root. This module is now a thin adapter: it re-exports the
7
+ * extracted function under the historical `showHistory` name so the command
8
+ * registration + tests are unchanged.
3
9
  */
4
- import type { HistoryResult } from '@opensip-cli/contracts';
5
- import type { ToolRegistry, ToolShortId } from '@opensip-cli/core';
6
- import type { DataStore } from '@opensip-cli/datastore';
7
- export interface ShowHistoryOptions {
8
- readonly tool?: ToolShortId;
9
- readonly limit?: number;
10
- readonly summaryOnly?: boolean;
11
- /** When set, session list displays canonical tool names. */
12
- readonly registry?: ToolRegistry;
13
- }
14
- export declare function showHistory(datastore: DataStore, opts?: ShowHistoryOptions): HistoryResult;
10
+ export { listSessionSummaries as showHistory, type ListSessionSummariesOptions as ShowHistoryOptions, } from '@opensip-cli/session-store';
15
11
  //# sourceMappingURL=history.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAiC,MAAM,wBAAwB,CAAC;AAC3F,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,4DAA4D;IAC5D,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;CAClC;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,GAAE,kBAAuB,GAAG,aAAa,CAS9F"}
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,oBAAoB,IAAI,WAAW,EACnC,KAAK,2BAA2B,IAAI,kBAAkB,GACvD,MAAM,4BAA4B,CAAC"}
@@ -1,43 +1,11 @@
1
1
  /**
2
2
  * history command — show run history.
3
+ *
4
+ * The read-only list projection was re-homed into `@opensip-cli/session-store`
5
+ * (ADR-0084) so `@opensip-cli/mcp` can list runs without importing the
6
+ * composition root. This module is now a thin adapter: it re-exports the
7
+ * extracted function under the historical `showHistory` name so the command
8
+ * registration + tests are unchanged.
3
9
  */
4
- import { buildToolIdentityIndex } from '@opensip-cli/core';
5
- import { SessionRepo } from '@opensip-cli/session-store';
6
- export function showHistory(datastore, opts = {}) {
7
- const repo = new SessionRepo(datastore);
8
- const identityIndex = opts.registry === undefined ? undefined : buildToolIdentityIndex(opts.registry);
9
- const sessions = repo.list(opts).map((s) => toHistorySession(s, opts.summaryOnly, identityIndex));
10
- return {
11
- type: 'history',
12
- sessions,
13
- };
14
- }
15
- function toHistorySession(session, summaryOnly = false, identityIndex) {
16
- const summary = sessionSummary(session.payload);
17
- const { payload, tool, ...rest } = session;
18
- const displayTool = identityIndex === undefined ? tool : identityIndex.canonicalForStoredTool(tool);
19
- return {
20
- ...rest,
21
- tool: displayTool,
22
- ...(summaryOnly ? {} : { payload }),
23
- ...(summary === undefined ? {} : { summary }),
24
- showCommand: `opensip sessions show ${session.id} --json`,
25
- };
26
- }
27
- function sessionSummary(payload) {
28
- if (payload === null || typeof payload !== 'object')
29
- return undefined;
30
- const summary = payload.summary;
31
- if (summary === null || typeof summary !== 'object')
32
- return undefined;
33
- const { total, passed, failed, errors, warnings } = summary;
34
- if (typeof total !== 'number' ||
35
- typeof passed !== 'number' ||
36
- typeof failed !== 'number' ||
37
- typeof errors !== 'number' ||
38
- typeof warnings !== 'number') {
39
- return undefined;
40
- }
41
- return { total, passed, failed, errors, warnings };
42
- }
10
+ export { listSessionSummaries as showHistory, } from '@opensip-cli/session-store';
43
11
  //# sourceMappingURL=history.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAczD,MAAM,UAAU,WAAW,CAAC,SAAoB,EAAE,OAA2B,EAAE;IAC7E,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,aAAa,GACjB,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC;IAClG,OAAO;QACL,IAAI,EAAE,SAAS;QACf,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CACvB,OAAsB,EACtB,WAAW,GAAG,KAAK,EACnB,aAAyD;IAEzD,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAC3C,MAAM,WAAW,GACf,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAClF,OAAO;QACL,GAAG,IAAI;QACP,IAAI,EAAE,WAAW;QACjB,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;QACnC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;QAC7C,WAAW,EAAE,yBAAyB,OAAO,CAAC,EAAE,SAAS;KAC1D,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,OAAgB;IACtC,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IACtE,MAAM,OAAO,GAAI,OAAiC,CAAC,OAAO,CAAC;IAC3D,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IACtE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAkC,CAAC;IACvF,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,MAAM,KAAK,QAAQ;QAC1B,OAAO,MAAM,KAAK,QAAQ;QAC1B,OAAO,MAAM,KAAK,QAAQ;QAC1B,OAAO,QAAQ,KAAK,QAAQ,EAC5B,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACrD,CAAC"}
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,oBAAoB,IAAI,WAAW,GAEpC,MAAM,4BAA4B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"host-subcommand-groups.d.ts","sourceRoot":"","sources":["../../src/commands/host-subcommand-groups.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAG5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,YAAY,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,KAAK,eAAe,GACrB,MAAM,8BAA8B,CAAC;AAEtC;iDACiD;AACjD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,CAAC;CACtC;AAED;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAA6C,CAAC;AAElG,gEAAgE;AAChE,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,kBAAkB,GAAG,SAAS,mBAAmB,EAAE,CAkBjG;AAsBD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;CACxE;AAED,qFAAqF;AACrF,wBAAgB,yBAAyB,IAAI,oBAAoB,CAMhE"}
1
+ {"version":3,"file":"host-subcommand-groups.d.ts","sourceRoot":"","sources":["../../src/commands/host-subcommand-groups.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAI5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,YAAY,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,KAAK,eAAe,GACrB,MAAM,8BAA8B,CAAC;AAEtC;iDACiD;AACjD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,CAAC;CACtC;AAED;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAK1C,CAAC;AAEX,gEAAgE;AAChE,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,kBAAkB,GAAG,SAAS,mBAAmB,EAAE,CAuBjG;AAsBD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;CACxE;AAED,qFAAqF;AACrF,wBAAgB,yBAAyB,IAAI,oBAAoB,CAMhE"}
@@ -19,6 +19,7 @@
19
19
  */
20
20
  import { buildConfigGroupLeaves } from './host-subcommand-config.js';
21
21
  import { buildSessionsGroupLeaves } from './host-subcommand-sessions.js';
22
+ import { buildSuiteGroupLeaves } from './suite/suite-command-specs.js';
22
23
  import { buildToolsGroupLeaves } from './tools/index.js';
23
24
  export { effectiveCwd } from './host-subcommand-shared.js';
24
25
  export { buildToolPluginLeaves, buildToolPluginGroups, mountToolPluginGroups, } from './host-subcommand-plugins.js';
@@ -28,7 +29,12 @@ export { buildToolPluginLeaves, buildToolPluginGroups, mountToolPluginGroups, }
28
29
  * This is the FINITE, NAMED set the Phase 7 `command-surface-parity` guardrail
29
30
  * allow-lists as documented host exceptions. Every other host command IS a spec.
30
31
  */
31
- export const HOST_SUBCOMMAND_GROUPS = ['config', 'sessions', 'tools'];
32
+ export const HOST_SUBCOMMAND_GROUPS = [
33
+ 'config',
34
+ 'sessions',
35
+ 'suite',
36
+ 'tools',
37
+ ];
32
38
  /** Build the subcommand-group parents with their leaf specs. */
33
39
  export function buildHostSubcommandGroups(ctx) {
34
40
  return [
@@ -42,6 +48,11 @@ export function buildHostSubcommandGroups(ctx) {
42
48
  description: 'Manage session data',
43
49
  leaves: buildSessionsGroupLeaves(ctx),
44
50
  },
51
+ {
52
+ name: 'suite',
53
+ description: 'Run configured tool suites',
54
+ leaves: buildSuiteGroupLeaves(ctx),
55
+ },
45
56
  {
46
57
  name: 'tools',
47
58
  description: 'Manage whole Tool plugins (list, validate, install, uninstall)',
@@ -1 +1 @@
1
- {"version":3,"file":"host-subcommand-groups.js","sourceRoot":"","sources":["../../src/commands/host-subcommand-groups.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAKzD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,GAEtB,MAAM,8BAA8B,CAAC;AAUtC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAsB,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAU,CAAC;AAElG,gEAAgE;AAChE,MAAM,UAAU,yBAAyB,CAAC,GAAuB;IAC/D,OAAO;QACL;YACE,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,6CAA6C;YAC1D,MAAM,EAAE,sBAAsB,CAAC,GAAG,CAAC;SACpC;QACD;YACE,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,qBAAqB;YAClC,MAAM,EAAE,wBAAwB,CAAC,GAAG,CAAC;SACtC;QACD;YACE,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,gEAAgE;YAC7E,MAAM,EAAE,qBAAqB,CAAC,GAAG,CAAC;SACnC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,aAAa,GAAuB;IACxC,WAAW,EAAE,GAAG,EAAE;QAChB,uDAAuD;IACzD,CAAC;IACD,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;IAC/B,QAAQ,EAAE,GAAG,EAAE;QACb,uDAAuD;IACzD,CAAC;IACD,OAAO,EAAE,GAAG,EAAE;QACZ,uDAAuD;IACzD,CAAC;IACD,SAAS,EAAE,GAAG,EAAE;QACd,uDAAuD;IACzD,CAAC;IACD,aAAa,EAAE,EAAE;IACjB,aAAa,EAAE,EAAE;IACjB,8HAA8H;IAC9H,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS;CAC3B,CAAC;AAMF,qFAAqF;AACrF,MAAM,UAAU,yBAAyB;IACvC,MAAM,gBAAgB,GAAsC,EAAE,CAAC;IAC/D,KAAK,MAAM,KAAK,IAAI,yBAAyB,CAAC,aAAa,CAAC,EAAE,CAAC;QAC7D,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"host-subcommand-groups.js","sourceRoot":"","sources":["../../src/commands/host-subcommand-groups.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAKzD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,GAEtB,MAAM,8BAA8B,CAAC;AAUtC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAsB;IACvD,QAAQ;IACR,UAAU;IACV,OAAO;IACP,OAAO;CACC,CAAC;AAEX,gEAAgE;AAChE,MAAM,UAAU,yBAAyB,CAAC,GAAuB;IAC/D,OAAO;QACL;YACE,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,6CAA6C;YAC1D,MAAM,EAAE,sBAAsB,CAAC,GAAG,CAAC;SACpC;QACD;YACE,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,qBAAqB;YAClC,MAAM,EAAE,wBAAwB,CAAC,GAAG,CAAC;SACtC;QACD;YACE,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,4BAA4B;YACzC,MAAM,EAAE,qBAAqB,CAAC,GAAG,CAAC;SACnC;QACD;YACE,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,gEAAgE;YAC7E,MAAM,EAAE,qBAAqB,CAAC,GAAG,CAAC;SACnC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,aAAa,GAAuB;IACxC,WAAW,EAAE,GAAG,EAAE;QAChB,uDAAuD;IACzD,CAAC;IACD,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;IAC/B,QAAQ,EAAE,GAAG,EAAE;QACb,uDAAuD;IACzD,CAAC;IACD,OAAO,EAAE,GAAG,EAAE;QACZ,uDAAuD;IACzD,CAAC;IACD,SAAS,EAAE,GAAG,EAAE;QACd,uDAAuD;IACzD,CAAC;IACD,aAAa,EAAE,EAAE;IACjB,aAAa,EAAE,EAAE;IACjB,8HAA8H;IAC9H,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS;CAC3B,CAAC;AAMF,qFAAqF;AACrF,MAAM,UAAU,yBAAyB;IACvC,MAAM,gBAAgB,GAAsC,EAAE,CAAC;IAC/D,KAAK,MAAM,KAAK,IAAI,yBAAyB,CAAC,aAAa,CAAC,EAAE,CAAC;QAC7D,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAC9B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"agents-md.d.ts","sourceRoot":"","sources":["../../../src/commands/init/agents-md.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAyDjD,8EAA8E;AAC9E,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE;IAAE,QAAQ,CAAC,aAAa,EAAE,SAAS,YAAY,EAAE,CAAA;CAAE,GACxD,OAAO,CAKT"}
1
+ {"version":3,"file":"agents-md.d.ts","sourceRoot":"","sources":["../../../src/commands/init/agents-md.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AA+DjD,8EAA8E;AAC9E,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE;IAAE,QAAQ,CAAC,aAAa,EAAE,SAAS,YAAY,EAAE,CAAA;CAAE,GACxD,OAAO,CAKT"}
@@ -13,6 +13,12 @@ function buildPlaybook(toolScaffolds) {
13
13
  '',
14
14
  'Machine-first workflow for coding agents using OpenSIP CLI.',
15
15
  '',
16
+ '## Product intent',
17
+ '',
18
+ 'OpenSIP is the guardrail layer for trustworthy AI-assisted development. It does not call models or autonomously change code; it gives agents and humans deterministic evidence through checks, graph context, sessions, gates, and MCP.',
19
+ '',
20
+ 'Treat failures as product feedback. Do not bypass guardrails to make a task pass. Fix the code, narrow the scope, or ask for a documented rule change.',
21
+ '',
16
22
  '## Discover',
17
23
  '',
18
24
  '```bash',
@@ -1 +1 @@
1
- {"version":3,"file":"agents-md.js","sourceRoot":"","sources":["../../../src/commands/init/agents-md.ts"],"names":[],"mappings":"AAAA,wJAAwJ;AACxJ;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,SAAS,YAAY,CAAC,aAAsC;IAC1D,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,aAAa,CAAC,aAAsC;IAC3D,MAAM,KAAK,GAAG;QACZ,0BAA0B;QAC1B,EAAE;QACF,6DAA6D;QAC7D,EAAE;QACF,aAAa;QACb,EAAE;QACF,SAAS;QACT,8BAA8B;QAC9B,KAAK;QACL,EAAE;QACF,8BAA8B;QAC9B,EAAE;QACF,iGAAiG;QACjG,EAAE;QACF,SAAS;QACT,qFAAqF;QACrF,KAAK;QACL,EAAE;QACF,cAAc;QACd,EAAE;KACH,CAAC;IAEF,IAAI,YAAY,CAAC,aAAa,CAAC,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CACR,SAAS,EACT,6DAA6D,EAC7D,gDAAgD,EAChD,iDAAiD,EACjD,KAAK,CACN,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,gDAAgD,EAAE,KAAK,CAAC,CAAC;IACjF,CAAC;IAED,KAAK,CAAC,IAAI,CACR,EAAE,EACF,kBAAkB,EAClB,EAAE,EACF,SAAS,EACT,YAAY,CAAC,aAAa,CAAC;QACzB,CAAC,CAAC,iDAAiD;QACnD,CAAC,CAAC,mDAAmD,EACvD,KAAK,EACL,EAAE,CACH,CAAC;IAEF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,cAAc,CAC5B,GAAW,EACX,IAAyD;IAEzD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACpC,IAAI,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/D,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"agents-md.js","sourceRoot":"","sources":["../../../src/commands/init/agents-md.ts"],"names":[],"mappings":"AAAA,wJAAwJ;AACxJ;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,SAAS,YAAY,CAAC,aAAsC;IAC1D,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,aAAa,CAAC,aAAsC;IAC3D,MAAM,KAAK,GAAG;QACZ,0BAA0B;QAC1B,EAAE;QACF,6DAA6D;QAC7D,EAAE;QACF,mBAAmB;QACnB,EAAE;QACF,yOAAyO;QACzO,EAAE;QACF,wJAAwJ;QACxJ,EAAE;QACF,aAAa;QACb,EAAE;QACF,SAAS;QACT,8BAA8B;QAC9B,KAAK;QACL,EAAE;QACF,8BAA8B;QAC9B,EAAE;QACF,iGAAiG;QACjG,EAAE;QACF,SAAS;QACT,qFAAqF;QACrF,KAAK;QACL,EAAE;QACF,cAAc;QACd,EAAE;KACH,CAAC;IAEF,IAAI,YAAY,CAAC,aAAa,CAAC,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CACR,SAAS,EACT,6DAA6D,EAC7D,gDAAgD,EAChD,iDAAiD,EACjD,KAAK,CACN,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,gDAAgD,EAAE,KAAK,CAAC,CAAC;IACjF,CAAC;IAED,KAAK,CAAC,IAAI,CACR,EAAE,EACF,kBAAkB,EAClB,EAAE,EACF,SAAS,EACT,YAAY,CAAC,aAAa,CAAC;QACzB,CAAC,CAAC,iDAAiD;QACnD,CAAC,CAAC,mDAAmD,EACvD,KAAK,EACL,EAAE,CACH,CAAC;IAEF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,cAAc,CAC5B,GAAW,EACX,IAAyD;IAEzD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACpC,IAAI,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/D,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -6,6 +6,7 @@
6
6
  */
7
7
  import { Option } from 'commander';
8
8
  import type { ArgSpec, OptionSpec } from '@opensip-cli/core';
9
+ export { optionKey } from './assemble-opts.js';
9
10
  /**
10
11
  * Build a Commander {@link Option} from an {@link OptionSpec}, covering every
11
12
  * shape in the first-party flag corpus: boolean / value, negatable `--no-`,
@@ -1 +1 @@
1
- {"version":3,"file":"mount-command-spec-wiring.d.ts","sourceRoot":"","sources":["../../src/commands/mount-command-spec-wiring.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE7D;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CA+BzE;AAiBD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAGpD"}
1
+ {"version":3,"file":"mount-command-spec-wiring.d.ts","sourceRoot":"","sources":["../../src/commands/mount-command-spec-wiring.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAInC,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE7D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CA8BzE;AAiBD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAGpD"}