@jterrats/open-orchestra 1.1.1 → 1.2.0

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 (124) hide show
  1. package/AGENTS.md +30 -5
  2. package/CHANGELOG.md +48 -0
  3. package/CLAUDE.md +23 -4
  4. package/README.md +21 -6
  5. package/dist/benchmark.js +54 -6
  6. package/dist/benchmark.js.map +1 -1
  7. package/dist/capability-commands.d.ts +2 -0
  8. package/dist/capability-commands.js +82 -0
  9. package/dist/capability-commands.js.map +1 -0
  10. package/dist/capture-commands.d.ts +16 -0
  11. package/dist/capture-commands.js +70 -0
  12. package/dist/capture-commands.js.map +1 -0
  13. package/dist/chat-api-service.js +3 -0
  14. package/dist/chat-api-service.js.map +1 -1
  15. package/dist/cli-capability-catalog.d.ts +10 -0
  16. package/dist/cli-capability-catalog.js +110 -0
  17. package/dist/cli-capability-catalog.js.map +1 -0
  18. package/dist/cli-capability-data.d.ts +2 -0
  19. package/dist/cli-capability-data.js +203 -0
  20. package/dist/cli-capability-data.js.map +1 -0
  21. package/dist/cli-capability-renderer.d.ts +2 -0
  22. package/dist/cli-capability-renderer.js +43 -0
  23. package/dist/cli-capability-renderer.js.map +1 -0
  24. package/dist/cli-capability-types.d.ts +30 -0
  25. package/dist/cli-capability-types.js +2 -0
  26. package/dist/cli-capability-types.js.map +1 -0
  27. package/dist/cli.js +7 -1
  28. package/dist/cli.js.map +1 -1
  29. package/dist/command-manifest.d.ts +3 -0
  30. package/dist/command-manifest.js +90 -1
  31. package/dist/command-manifest.js.map +1 -1
  32. package/dist/command-routes.js +12 -2
  33. package/dist/command-routes.js.map +1 -1
  34. package/dist/commands.d.ts +3 -1
  35. package/dist/commands.js +6 -1
  36. package/dist/commands.js.map +1 -1
  37. package/dist/constants.js +2 -0
  38. package/dist/constants.js.map +1 -1
  39. package/dist/delivery-dashboard-charts.js +7 -3
  40. package/dist/delivery-dashboard-charts.js.map +1 -1
  41. package/dist/delivery-dashboard-types.d.ts +4 -0
  42. package/dist/delivery-dashboard.js +6 -0
  43. package/dist/delivery-dashboard.js.map +1 -1
  44. package/dist/effort-classification.d.ts +1 -0
  45. package/dist/effort-classification.js +15 -0
  46. package/dist/effort-classification.js.map +1 -1
  47. package/dist/mcp-integrations.d.ts +9 -2
  48. package/dist/mcp-integrations.js +50 -13
  49. package/dist/mcp-integrations.js.map +1 -1
  50. package/dist/mcp-oauth-proxy.d.ts +8 -0
  51. package/dist/mcp-oauth-proxy.js +25 -0
  52. package/dist/mcp-oauth-proxy.js.map +1 -1
  53. package/dist/mcp-runtime-config.d.ts +55 -0
  54. package/dist/mcp-runtime-config.js +235 -0
  55. package/dist/mcp-runtime-config.js.map +1 -0
  56. package/dist/mcp-tool-adapter.js +2 -4
  57. package/dist/mcp-tool-adapter.js.map +1 -1
  58. package/dist/phase-playbooks.js +9 -0
  59. package/dist/phase-playbooks.js.map +1 -1
  60. package/dist/real-evidence-gates.d.ts +23 -0
  61. package/dist/real-evidence-gates.js +182 -0
  62. package/dist/real-evidence-gates.js.map +1 -0
  63. package/dist/release-commands.d.ts +3 -0
  64. package/dist/release-commands.js +85 -0
  65. package/dist/release-commands.js.map +1 -1
  66. package/dist/release-inclusion.d.ts +115 -0
  67. package/dist/release-inclusion.js +378 -0
  68. package/dist/release-inclusion.js.map +1 -0
  69. package/dist/runtime-bootstrap.js +1 -0
  70. package/dist/runtime-bootstrap.js.map +1 -1
  71. package/dist/runtime-child-prompt.js +30 -2
  72. package/dist/runtime-child-prompt.js.map +1 -1
  73. package/dist/runtime-commands.d.ts +3 -0
  74. package/dist/runtime-commands.js +96 -0
  75. package/dist/runtime-commands.js.map +1 -1
  76. package/dist/runtime-events.d.ts +48 -0
  77. package/dist/runtime-events.js +255 -0
  78. package/dist/runtime-events.js.map +1 -0
  79. package/dist/runtime-execution-renderer.js +11 -3
  80. package/dist/runtime-execution-renderer.js.map +1 -1
  81. package/dist/runtime-execution.js +6 -2
  82. package/dist/runtime-execution.js.map +1 -1
  83. package/dist/runtime-parent-actions.js +40 -6
  84. package/dist/runtime-parent-actions.js.map +1 -1
  85. package/dist/runtime-spawn-bridge.js +15 -5
  86. package/dist/runtime-spawn-bridge.js.map +1 -1
  87. package/dist/sprint-metrics.js +7 -1
  88. package/dist/sprint-metrics.js.map +1 -1
  89. package/dist/tool-commands.js +34 -12
  90. package/dist/tool-commands.js.map +1 -1
  91. package/dist/types/metrics.d.ts +5 -1
  92. package/dist/types/runtime.d.ts +8 -2
  93. package/dist/types/workflow-run.d.ts +2 -0
  94. package/dist/types.d.ts +1 -0
  95. package/dist/web-api-read-routes.d.ts +1 -0
  96. package/dist/web-api-read-routes.js +6 -1
  97. package/dist/web-api-read-routes.js.map +1 -1
  98. package/dist/web-api.js +284 -2
  99. package/dist/web-api.js.map +1 -1
  100. package/dist/web-chat-routes.js +11 -0
  101. package/dist/web-chat-routes.js.map +1 -1
  102. package/dist/web-console/assets/index-Cip-y4WE.css +1 -0
  103. package/dist/web-console/assets/index-CuWjFxss.js +11 -0
  104. package/dist/web-console/index.html +2 -2
  105. package/dist/workflow-gates.js +49 -3
  106. package/dist/workflow-gates.js.map +1 -1
  107. package/dist/workflow-handoff-contract.js +30 -2
  108. package/dist/workflow-handoff-contract.js.map +1 -1
  109. package/dist/workflow-run-commands.js +11 -1
  110. package/dist/workflow-run-commands.js.map +1 -1
  111. package/dist/workflow-services.js +5 -3
  112. package/dist/workflow-services.js.map +1 -1
  113. package/docs/autonomous-workflow.md +6 -0
  114. package/docs/ci-self-hosted-runners.md +76 -0
  115. package/docs/command-contracts.md +21 -0
  116. package/docs/e2e-test-batteries.md +74 -16
  117. package/docs/release-inclusion-manifest.md +142 -0
  118. package/docs/runtime-adapters.md +8 -4
  119. package/docs/security-env-vars.md +1 -0
  120. package/package.json +6 -2
  121. package/site/dist/assets/{index-Bi8l6tCE.js → index-B1Xsl_Kg.js} +1 -1
  122. package/site/dist/index.html +1 -1
  123. package/dist/web-console/assets/index-CJup1cIA.css +0 -1
  124. package/dist/web-console/assets/index-CVDOfipu.js +0 -11
@@ -0,0 +1,70 @@
1
+ import { requireArg } from "./args.js";
2
+ import { parseCsv, removeUndefined, stringOption, targetRootOption, } from "./command-utils.js";
3
+ import { addEvidence } from "./workflow-evidence-service.js";
4
+ import { addTask } from "./workflow-services.js";
5
+ export async function captureCommand(options, io) {
6
+ const root = targetRootOption(options);
7
+ const result = await captureConversationalChange(removeUndefined({
8
+ id: stringOption(options.id),
9
+ title: requireArg(options, "title"),
10
+ summary: requireArg(options, "summary"),
11
+ owner: stringOption(options.owner),
12
+ paths: parseCsv(options.paths),
13
+ acceptanceCriteria: parseCsv(options.acceptance),
14
+ }), root);
15
+ if (options.json) {
16
+ io.log(JSON.stringify(result, null, 2));
17
+ return;
18
+ }
19
+ io.log(`Captured task ${result.task.id}`);
20
+ io.log(`Evidence: ${result.evidence.artifact}`);
21
+ io.log(result.warning);
22
+ }
23
+ export async function captureConversationalChange(input, root = process.cwd()) {
24
+ const ownerRole = input.owner ?? "developer";
25
+ const task = await addTask(removeUndefined({
26
+ id: input.id ?? captureTaskId(input.title),
27
+ title: input.title,
28
+ ownerRole,
29
+ dependencies: [],
30
+ goal: "Retroactively capture a small conversational or emergent change for traceability.",
31
+ scope: "Trace-only capture. Continue through normal workflow gates before treating non-trivial work as done.",
32
+ paths: input.paths,
33
+ acceptanceCriteria: input.acceptanceCriteria.length > 0
34
+ ? input.acceptanceCriteria
35
+ : ["Captured change has task and evidence records"],
36
+ assumptions: [
37
+ "Change was small or already emerged during an agent conversation",
38
+ ],
39
+ risks: [
40
+ "Capture does not replace QA, release, security, or architecture gates",
41
+ ],
42
+ testStrategy: "Use recorded evidence as traceability only; add normal validation evidence before release.",
43
+ }), root);
44
+ const evidence = await addEvidence({
45
+ task: task.id,
46
+ role: ownerRole,
47
+ type: "file",
48
+ summary: captureEvidenceSummary(input.summary, input.paths),
49
+ }, root);
50
+ return {
51
+ task,
52
+ evidence,
53
+ mode: "trace-only",
54
+ warning: "Capture recorded traceability only; it does not approve QA, release, or risk gates.",
55
+ };
56
+ }
57
+ function captureTaskId(title) {
58
+ const slug = title
59
+ .trim()
60
+ .toUpperCase()
61
+ .replace(/[^A-Z0-9]+/g, "-")
62
+ .replace(/^-|-$/g, "")
63
+ .slice(0, 36);
64
+ return `CAPTURE-${slug || "CHANGE"}-${Date.now()}`;
65
+ }
66
+ function captureEvidenceSummary(summary, paths) {
67
+ const touchedFiles = paths.length > 0 ? paths.join(", ") : "no paths supplied";
68
+ return `${summary} Touched files: ${touchedFiles}. Captured at ${new Date().toISOString()}. Trace-only capture; normal validation evidence is still required before release.`;
69
+ }
70
+ //# sourceMappingURL=capture-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture-commands.js","sourceRoot":"","sources":["../src/capture-commands.ts"],"names":[],"mappings":"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"}
@@ -49,6 +49,9 @@ export class ChatApiService {
49
49
  }
50
50
  async listMessages(input) {
51
51
  const requestId = requestIdFor(input.requestId);
52
+ const thread = await this.storage.getThread(input.scope, input.threadId);
53
+ if (!thread)
54
+ throw notFound("thread_not_found", requestId);
52
55
  const result = await safeCursorList(async () => {
53
56
  const storedMessages = await this.listAllStoredMessages(input.scope, input.threadId);
54
57
  const workflowMessages = await listWorkflowTimelineMessages({
@@ -1 +1 @@
1
- {"version":3,"file":"chat-api-service.js","sourceRoot":"","sources":["../src/chat-api-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-api-service.js","sourceRoot":"","sources":["../src/chat-api-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { Task } from "./types.js";
2
+ import type { CliCapability, CliCapabilityExposure } from "./cli-capability-types.js";
3
+ export type { CliCapability, CliCapabilityApprovalPolicy, CliCapabilityExposure, CliCapabilityExposureItem, CliCapabilityOmission, CliCapabilityRiskLevel, } from "./cli-capability-types.js";
4
+ export { renderCliCapabilityExposureMarkdown } from "./cli-capability-renderer.js";
5
+ export declare function listCliCapabilities(): CliCapability[];
6
+ export declare function selectCliCapabilityExposure({ role, phase, task, }: {
7
+ role: string;
8
+ phase?: string;
9
+ task: Task;
10
+ }): CliCapabilityExposure;
@@ -0,0 +1,110 @@
1
+ import { CLI_CAPABILITY_CATALOG } from "./cli-capability-data.js";
2
+ import { listCommandManifest } from "./command-manifest.js";
3
+ export { renderCliCapabilityExposureMarkdown } from "./cli-capability-renderer.js";
4
+ const ROLE_ALIASES = {
5
+ release: ["release_manager"],
6
+ release_manager: ["release"],
7
+ };
8
+ const COMMAND_IDS = new Set(listCommandManifest().map((entry) => entry.id));
9
+ export function listCliCapabilities() {
10
+ assertCatalogCommandsExist();
11
+ return CLI_CAPABILITY_CATALOG.map(cloneCapability);
12
+ }
13
+ export function selectCliCapabilityExposure({ role, phase, task, }) {
14
+ assertCatalogCommandsExist();
15
+ const exposed = [];
16
+ const omitted = [];
17
+ const normalizedRole = normalizeRole(role);
18
+ const normalizedPhase = phase ? normalizeRole(phase) : undefined;
19
+ const taskText = taskSignalsText(task);
20
+ for (const capability of CLI_CAPABILITY_CATALOG) {
21
+ const omission = capabilityOmission({
22
+ capability,
23
+ role,
24
+ normalizedRole,
25
+ normalizedPhase,
26
+ taskText,
27
+ });
28
+ if (omission) {
29
+ omitted.push(omission);
30
+ continue;
31
+ }
32
+ exposed.push({
33
+ capability: cloneCapability(capability),
34
+ reason: signalMatchesCapability(capability, taskText)
35
+ ? "exposed: role allowed and task signals match"
36
+ : "exposed: role allowed and phase matches",
37
+ });
38
+ }
39
+ return { exposed, omitted };
40
+ }
41
+ function capabilityOmission({ capability, role, normalizedRole, normalizedPhase, taskText, }) {
42
+ if (!roleMatches(capability, normalizedRole)) {
43
+ return {
44
+ capabilityId: capability.id,
45
+ commandId: capability.commandId,
46
+ reason: `omitted: role ${role} is not allowed`,
47
+ };
48
+ }
49
+ const phaseMatches = !normalizedPhase || phaseMatchesCapability(capability, normalizedPhase);
50
+ if (phaseMatches || signalMatchesCapability(capability, taskText)) {
51
+ return undefined;
52
+ }
53
+ return {
54
+ capabilityId: capability.id,
55
+ commandId: capability.commandId,
56
+ reason: `omitted: no matching phase or task signal for ${role}`,
57
+ };
58
+ }
59
+ function cloneCapability(capability) {
60
+ return {
61
+ ...capability,
62
+ argsTemplate: [...capability.argsTemplate],
63
+ allowedRoles: [...capability.allowedRoles],
64
+ requiredContext: [...capability.requiredContext],
65
+ ...(capability.phases ? { phases: [...capability.phases] } : {}),
66
+ ...(capability.taskSignals
67
+ ? { taskSignals: [...capability.taskSignals] }
68
+ : {}),
69
+ };
70
+ }
71
+ function assertCatalogCommandsExist() {
72
+ const missing = CLI_CAPABILITY_CATALOG.filter((capability) => !COMMAND_IDS.has(capability.commandId));
73
+ if (missing.length > 0) {
74
+ throw new Error(`CLI capability catalog references unknown command ids: ${missing
75
+ .map((capability) => `${capability.id}:${capability.commandId}`)
76
+ .join(", ")}`);
77
+ }
78
+ }
79
+ function normalizeRole(value) {
80
+ return value.trim().toLowerCase().replace(/-/g, "_");
81
+ }
82
+ function roleMatches(capability, role) {
83
+ const roles = new Set(capability.allowedRoles.flatMap((item) => [
84
+ normalizeRole(item),
85
+ ...(ROLE_ALIASES[normalizeRole(item)] ?? []),
86
+ ]));
87
+ return (roles.has(role) ||
88
+ (ROLE_ALIASES[role] ?? []).some((alias) => roles.has(alias)));
89
+ }
90
+ function phaseMatchesCapability(capability, phase) {
91
+ return Boolean(capability.phases?.some((item) => normalizeRole(item) === phase));
92
+ }
93
+ function signalMatchesCapability(capability, taskText) {
94
+ return Boolean(capability.taskSignals?.some((signal) => taskText.includes(signal.toLowerCase())));
95
+ }
96
+ function taskSignalsText(task) {
97
+ return [
98
+ task.id,
99
+ task.title,
100
+ task.goal,
101
+ task.scope,
102
+ ...(task.acceptanceCriteria ?? []),
103
+ ...(task.paths ?? []),
104
+ ...(task.risks ?? []),
105
+ ]
106
+ .filter(Boolean)
107
+ .join(" ")
108
+ .toLowerCase();
109
+ }
110
+ //# sourceMappingURL=cli-capability-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-capability-catalog.js","sourceRoot":"","sources":["../src/cli-capability-catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { CliCapability } from "./cli-capability-types.js";
2
+ export declare const CLI_CAPABILITY_CATALOG: CliCapability[];
@@ -0,0 +1,203 @@
1
+ export const CLI_CAPABILITY_CATALOG = [
2
+ {
3
+ id: "architect-diagram-lint",
4
+ commandId: "diagrams-lint",
5
+ executable: "orchestra",
6
+ argsTemplate: [
7
+ "diagrams",
8
+ "lint",
9
+ "--file",
10
+ "<file>",
11
+ "--task",
12
+ "<task-id>",
13
+ "--json",
14
+ ],
15
+ purpose: "Validate Mermaid architecture, workflow, and sequence diagrams before handoff.",
16
+ allowedRoles: ["architect", "developer", "technical_writer"],
17
+ requiredContext: [
18
+ "diagram artifact path",
19
+ "task id when recording evidence",
20
+ ],
21
+ outputContract: "JSON lint result with validity, diagnostics, optional install hint, and evidence metadata when task is supplied.",
22
+ evidenceType: "command",
23
+ riskLevel: "low",
24
+ approvalPolicy: "none",
25
+ phases: ["architect", "architecture_challenge", "developer", "docs_review"],
26
+ taskSignals: ["diagram", "mermaid", "architecture", "template"],
27
+ },
28
+ {
29
+ id: "architect-workflow-template-render",
30
+ commandId: "workflow-render",
31
+ executable: "orchestra",
32
+ argsTemplate: [
33
+ "workflow",
34
+ "render",
35
+ "--task",
36
+ "<task-id>",
37
+ "--phase",
38
+ "<phase>",
39
+ "--target",
40
+ "<runtime-target>",
41
+ "--json",
42
+ ],
43
+ purpose: "Render official workflow template guidance for the current task and phase.",
44
+ allowedRoles: [
45
+ "architect",
46
+ "product_owner",
47
+ "product_manager",
48
+ "developer",
49
+ "qa",
50
+ ],
51
+ requiredContext: ["task id", "phase", "runtime target"],
52
+ outputContract: "JSON workflow template selection and rendered guidance for scoped agent consumption.",
53
+ evidenceType: "report",
54
+ riskLevel: "low",
55
+ approvalPolicy: "none",
56
+ phases: ["pm", "po", "architect", "developer", "qa"],
57
+ taskSignals: ["template", "workflow", "architecture", "phase", "plan"],
58
+ },
59
+ {
60
+ id: "qa-playwright-plan",
61
+ commandId: "playwright-plan",
62
+ executable: "orchestra",
63
+ argsTemplate: ["playwright", "plan", "--task", "<task-id>", "--json"],
64
+ purpose: "Plan Playwright scenarios for browser-based E2E, smoke, and regression validation.",
65
+ allowedRoles: ["qa", "developer"],
66
+ requiredContext: ["task id", "acceptance criteria"],
67
+ outputContract: "JSON scenario plan mapped to task acceptance criteria and target surfaces.",
68
+ evidenceType: "report",
69
+ riskLevel: "low",
70
+ approvalPolicy: "none",
71
+ phases: ["qa", "developer"],
72
+ taskSignals: ["e2e", "playwright", "browser", "smoke", "regression"],
73
+ },
74
+ {
75
+ id: "qa-evidence-check",
76
+ commandId: "qa-evidence-check",
77
+ executable: "orchestra",
78
+ argsTemplate: [
79
+ "qa",
80
+ "evidence-check",
81
+ "--surface",
82
+ "<surface>",
83
+ "--type",
84
+ "<type>",
85
+ "--path",
86
+ "<file>",
87
+ "--json",
88
+ ],
89
+ purpose: "Validate observable QA evidence shape before recording or handing it off.",
90
+ allowedRoles: ["qa", "developer", "release_manager"],
91
+ requiredContext: [
92
+ "surface",
93
+ "evidence type",
94
+ "artifact path or command result",
95
+ ],
96
+ outputContract: "JSON evidence validation status with missing fields and deferred evidence guidance.",
97
+ evidenceType: "report",
98
+ riskLevel: "low",
99
+ approvalPolicy: "none",
100
+ phases: ["qa", "developer", "release"],
101
+ taskSignals: ["qa", "evidence", "e2e", "test", "coverage", "acceptance"],
102
+ },
103
+ {
104
+ id: "qa-playwright-evidence",
105
+ commandId: "playwright-evidence",
106
+ executable: "orchestra",
107
+ argsTemplate: [
108
+ "playwright",
109
+ "evidence",
110
+ "--task",
111
+ "<task-id>",
112
+ "--kind",
113
+ "<kind>",
114
+ "--path",
115
+ "<file>",
116
+ "--summary",
117
+ "<summary>",
118
+ ],
119
+ purpose: "Attach screenshots, traces, videos, or reports from Playwright validation to the workflow evidence stream.",
120
+ allowedRoles: ["qa", "developer"],
121
+ requiredContext: [
122
+ "task id",
123
+ "artifact kind",
124
+ "artifact path",
125
+ "evidence summary",
126
+ ],
127
+ outputContract: "Recorded workflow evidence artifact reference for browser validation evidence.",
128
+ evidenceType: "screenshot",
129
+ riskLevel: "low",
130
+ approvalPolicy: "none",
131
+ phases: ["qa", "developer"],
132
+ taskSignals: [
133
+ "e2e",
134
+ "playwright",
135
+ "browser",
136
+ "screenshot",
137
+ "trace",
138
+ "video",
139
+ "evidence",
140
+ ],
141
+ },
142
+ {
143
+ id: "release-check",
144
+ commandId: "release-check",
145
+ executable: "orchestra",
146
+ argsTemplate: ["release", "check", "--json"],
147
+ purpose: "Check current release readiness gates before a release decision.",
148
+ allowedRoles: ["release_manager", "qa", "developer"],
149
+ requiredContext: [
150
+ "workspace release state",
151
+ "recorded evidence and reviews",
152
+ ],
153
+ outputContract: "JSON release readiness status with blockers, warnings, and checked gates.",
154
+ evidenceType: "command",
155
+ riskLevel: "medium",
156
+ approvalPolicy: "workflow-gate",
157
+ phases: ["release", "qa"],
158
+ taskSignals: ["release", "readiness", "go/no-go", "ship"],
159
+ },
160
+ {
161
+ id: "release-readiness",
162
+ commandId: "release-readiness",
163
+ executable: "orchestra",
164
+ argsTemplate: [
165
+ "release",
166
+ "readiness",
167
+ "--version",
168
+ "<version>",
169
+ "--manifest",
170
+ "<file>",
171
+ "--json",
172
+ ],
173
+ purpose: "Block tag readiness when included release manifest items are missing evidence.",
174
+ allowedRoles: ["release_manager", "qa"],
175
+ requiredContext: [
176
+ "version",
177
+ "release inclusion manifest",
178
+ "release evidence",
179
+ ],
180
+ outputContract: "JSON tag-readiness result with missing evidence and blocking release items.",
181
+ evidenceType: "report",
182
+ riskLevel: "medium",
183
+ approvalPolicy: "workflow-gate",
184
+ phases: ["release", "qa"],
185
+ taskSignals: ["release", "readiness", "tag", "manifest", "benchmark"],
186
+ },
187
+ {
188
+ id: "release-benchmark-task",
189
+ commandId: "benchmark-task",
190
+ executable: "orchestra",
191
+ argsTemplate: ["benchmark", "--task", "<task-id>", "--json"],
192
+ purpose: "Benchmark completed task effort and quality signals after delivery evidence exists.",
193
+ allowedRoles: ["release_manager", "qa", "architect"],
194
+ requiredContext: ["task id", "completed workflow evidence"],
195
+ outputContract: "JSON benchmark result with task sizing, quality signals, and calibration data.",
196
+ evidenceType: "report",
197
+ riskLevel: "low",
198
+ approvalPolicy: "none",
199
+ phases: ["release", "qa", "architect"],
200
+ taskSignals: ["benchmark", "release", "readiness", "completion"],
201
+ },
202
+ ];
203
+ //# sourceMappingURL=cli-capability-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-capability-data.js","sourceRoot":"","sources":["../src/cli-capability-data.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { CliCapabilityExposure } from "./cli-capability-types.js";
2
+ export declare function renderCliCapabilityExposureMarkdown(exposure: CliCapabilityExposure | undefined): string[];
@@ -0,0 +1,43 @@
1
+ export function renderCliCapabilityExposureMarkdown(exposure) {
2
+ if (!exposure || exposure.exposed.length === 0) {
3
+ return [
4
+ "## Scoped CLI Capabilities",
5
+ "",
6
+ "- none exposed",
7
+ "- Guidance: if an official Orchestra command applies, use the command manifest and structured argv arrays before creating ad hoc scripts.",
8
+ ];
9
+ }
10
+ return [
11
+ "## Scoped CLI Capabilities",
12
+ "",
13
+ "- Guidance: if an official Orchestra command applies, use the exposed capability and structured argv array before creating ad hoc scripts.",
14
+ "- Command construction contract: pass executable and args as separate argv entries; do not build shell strings with interpolation.",
15
+ "",
16
+ "### Exposed",
17
+ "",
18
+ ...exposure.exposed.flatMap(({ capability, reason }) => [
19
+ `- ${capability.id}`,
20
+ ` - commandId: ${capability.commandId}`,
21
+ ` - executable: ${capability.executable}`,
22
+ ` - argsTemplate: ${JSON.stringify(capability.argsTemplate)}`,
23
+ ` - purpose: ${capability.purpose}`,
24
+ ` - allowedRoles: ${capability.allowedRoles.join(", ")}`,
25
+ ` - requiredContext: ${capability.requiredContext.join(", ")}`,
26
+ ` - outputContract: ${capability.outputContract}`,
27
+ ` - evidenceType: ${capability.evidenceType}`,
28
+ ` - riskLevel: ${capability.riskLevel}`,
29
+ ` - approvalPolicy: ${capability.approvalPolicy}`,
30
+ ` - reason: ${reason}`,
31
+ ]),
32
+ "",
33
+ "### Omitted",
34
+ "",
35
+ ...omittedCapabilityLines(exposure.omitted),
36
+ ];
37
+ }
38
+ function omittedCapabilityLines(omitted) {
39
+ if (omitted.length === 0)
40
+ return ["- none omitted"];
41
+ return omitted.map((item) => `- ${item.capabilityId} (${item.commandId}): ${item.reason}`);
42
+ }
43
+ //# sourceMappingURL=cli-capability-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-capability-renderer.js","sourceRoot":"","sources":["../src/cli-capability-renderer.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,mCAAmC,CACjD,QAA2C;IAE3C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/C,OAAO;YACL,4BAA4B;YAC5B,EAAE;YACF,gBAAgB;YAChB,2IAA2I;SAC5I,CAAC;IACJ,CAAC;IACD,OAAO;QACL,4BAA4B;QAC5B,EAAE;QACF,4IAA4I;QAC5I,oIAAoI;QACpI,EAAE;QACF,aAAa;QACb,EAAE;QACF,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;YACtD,KAAK,UAAU,CAAC,EAAE,EAAE;YACpB,kBAAkB,UAAU,CAAC,SAAS,EAAE;YACxC,mBAAmB,UAAU,CAAC,UAAU,EAAE;YAC1C,qBAAqB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;YAC9D,gBAAgB,UAAU,CAAC,OAAO,EAAE;YACpC,qBAAqB,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACzD,wBAAwB,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC/D,uBAAuB,UAAU,CAAC,cAAc,EAAE;YAClD,qBAAqB,UAAU,CAAC,YAAY,EAAE;YAC9C,kBAAkB,UAAU,CAAC,SAAS,EAAE;YACxC,uBAAuB,UAAU,CAAC,cAAc,EAAE;YAClD,eAAe,MAAM,EAAE;SACxB,CAAC;QACF,EAAE;QACF,aAAa;QACb,EAAE;QACF,GAAG,sBAAsB,CAAC,QAAQ,CAAC,OAAO,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAgC;IAC9D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACpD,OAAO,OAAO,CAAC,GAAG,CAChB,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,SAAS,MAAM,IAAI,CAAC,MAAM,EAAE,CACvE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,30 @@
1
+ export type CliCapabilityRiskLevel = "low" | "medium" | "high";
2
+ export type CliCapabilityApprovalPolicy = "none" | "user-approval" | "workflow-gate";
3
+ export interface CliCapability {
4
+ id: string;
5
+ commandId: string;
6
+ executable: "orchestra";
7
+ argsTemplate: string[];
8
+ purpose: string;
9
+ allowedRoles: string[];
10
+ requiredContext: string[];
11
+ outputContract: string;
12
+ evidenceType: "command" | "file" | "screenshot" | "trace" | "video" | "log" | "report";
13
+ riskLevel: CliCapabilityRiskLevel;
14
+ approvalPolicy: CliCapabilityApprovalPolicy;
15
+ phases?: string[];
16
+ taskSignals?: string[];
17
+ }
18
+ export interface CliCapabilityExposureItem {
19
+ capability: CliCapability;
20
+ reason: string;
21
+ }
22
+ export interface CliCapabilityOmission {
23
+ capabilityId: string;
24
+ commandId: string;
25
+ reason: string;
26
+ }
27
+ export interface CliCapabilityExposure {
28
+ exposed: CliCapabilityExposureItem[];
29
+ omitted: CliCapabilityOmission[];
30
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cli-capability-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-capability-types.js","sourceRoot":"","sources":["../src/cli-capability-types.ts"],"names":[],"mappings":""}
package/dist/cli.js CHANGED
@@ -2,7 +2,7 @@ import { parseArgs } from "./args.js";
2
2
  import { dispatchCommandRoute } from "./command-routes.js";
3
3
  import { checkPackageUpdate, renderPackageUpdateWarning, } from "./package-update-check.js";
4
4
  import { readPackageInfo } from "./package-info.js";
5
- import { renderCommandHelp, renderHelpTopic } from "./command-manifest.js";
5
+ import { hasCommandHelpEntry, hasCommandNamespaceHelp, renderCommandHelp, renderCommandNamespaceHelp, renderHelpTopic, } from "./command-manifest.js";
6
6
  async function runCliCommand(argv, io = console) {
7
7
  const [command, subcommand] = argv;
8
8
  if (!command || command === "--help" || command === "-h") {
@@ -13,6 +13,12 @@ async function runCliCommand(argv, io = console) {
13
13
  io.log(renderHelpTopic(subcommand));
14
14
  return;
15
15
  }
16
+ if (subcommand === "--help" || subcommand === "-h") {
17
+ if (hasCommandNamespaceHelp(command) || !hasCommandHelpEntry(command)) {
18
+ io.log(renderCommandNamespaceHelp(command));
19
+ return;
20
+ }
21
+ }
16
22
  if (command === "--version" || command === "-v") {
17
23
  return versionCommand([], io);
18
24
  }
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -25,4 +25,7 @@ export declare const COMMAND_HELP_INTRO = "First visible value: orchestra init,
25
25
  export declare function listCommandManifest(): CommandManifestEntry[];
26
26
  export declare function renderCommandHelp(): string;
27
27
  export declare function renderCommandCatalogHelp(): string;
28
+ export declare function renderCommandNamespaceHelp(namespace: string): string;
29
+ export declare function hasCommandNamespaceHelp(namespace: string): boolean;
30
+ export declare function hasCommandHelpEntry(command: string): boolean;
28
31
  export declare function renderHelpTopic(topic?: string): string;