@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,235 @@
1
+ import path from "node:path";
2
+ import { readJson, updateJsonFile } from "./fs-utils.js";
3
+ const MCP_CONFIG_TARGETS = {
4
+ "claude-cli": {
5
+ target: "claude",
6
+ relativePath: ".mcp.json",
7
+ supportsWorkspaceScope: true,
8
+ },
9
+ claude: {
10
+ target: "claude",
11
+ relativePath: ".mcp.json",
12
+ supportsWorkspaceScope: true,
13
+ },
14
+ "codex-cli": {
15
+ target: "codex",
16
+ relativePath: ".codex/mcp.json",
17
+ supportsWorkspaceScope: true,
18
+ },
19
+ codex: {
20
+ target: "codex",
21
+ relativePath: ".codex/mcp.json",
22
+ supportsWorkspaceScope: true,
23
+ },
24
+ "cursor-cli": {
25
+ target: "cursor",
26
+ relativePath: ".cursor/mcp.json",
27
+ supportsWorkspaceScope: true,
28
+ },
29
+ cursor: {
30
+ target: "cursor",
31
+ relativePath: ".cursor/mcp.json",
32
+ supportsWorkspaceScope: true,
33
+ },
34
+ "vscode-agent": {
35
+ target: "vscode",
36
+ relativePath: ".vscode/mcp.json",
37
+ supportsWorkspaceScope: true,
38
+ },
39
+ vscode: {
40
+ target: "vscode",
41
+ relativePath: ".vscode/mcp.json",
42
+ supportsWorkspaceScope: true,
43
+ },
44
+ "windsurf-cli": {
45
+ target: "windsurf",
46
+ relativePath: ".windsurf/mcp_config.json",
47
+ supportsWorkspaceScope: true,
48
+ },
49
+ windsurf: {
50
+ target: "windsurf",
51
+ relativePath: ".windsurf/mcp_config.json",
52
+ supportsWorkspaceScope: true,
53
+ },
54
+ generic: {
55
+ target: "generic",
56
+ relativePath: ".agent-workflow/mcp.json",
57
+ supportsWorkspaceScope: true,
58
+ },
59
+ };
60
+ export function resolveMcpRuntimeConfigTarget({ root, runtime, scope, }) {
61
+ const entry = MCP_CONFIG_TARGETS[runtime] ?? MCP_CONFIG_TARGETS.generic;
62
+ const resolvedScope = scope ?? (entry.supportsWorkspaceScope ? "workspace" : "user");
63
+ if (resolvedScope !== "workspace") {
64
+ throw new Error("user-scoped MCP config writes require explicit support");
65
+ }
66
+ return {
67
+ runtime,
68
+ target: entry.target,
69
+ scope: resolvedScope,
70
+ relativePath: entry.relativePath,
71
+ configPath: path.join(root, entry.relativePath),
72
+ supportsWorkspaceScope: entry.supportsWorkspaceScope,
73
+ };
74
+ }
75
+ export async function writeScopedMcpServerConfig({ root, runtime, server, scope, }) {
76
+ validateServerConfig(server);
77
+ const target = resolveMcpRuntimeConfigTarget({
78
+ root,
79
+ runtime,
80
+ ...(scope ? { scope } : {}),
81
+ });
82
+ const nextConfig = await updateJsonFile(target.configPath, {}, (current) => ({
83
+ ...current,
84
+ mcpServers: {
85
+ ...serverMap(current),
86
+ [server.id]: redactServerConfig(server),
87
+ },
88
+ }));
89
+ const written = serverMap(nextConfig)[server.id];
90
+ return {
91
+ id: server.id,
92
+ runtime: target.runtime,
93
+ scope: target.scope,
94
+ state: stateFromServerConfig(written),
95
+ detail: detailForState(stateFromServerConfig(written)),
96
+ configPath: target.configPath,
97
+ };
98
+ }
99
+ export async function listScopedMcpServerStatuses({ root, runtime = "generic", scope = "workspace", }) {
100
+ const target = resolveMcpRuntimeConfigTarget({ root, runtime, scope });
101
+ const config = await readJson(target.configPath, {});
102
+ return Object.entries(serverMap(config)).map(([id, raw]) => {
103
+ const server = normalizeServerConfig(id, raw);
104
+ const state = stateFromServerConfig(server);
105
+ return {
106
+ id,
107
+ runtime: target.runtime,
108
+ scope: target.scope,
109
+ state,
110
+ detail: detailForState(state),
111
+ configPath: target.configPath,
112
+ ...(server.oauth?.diagnostic
113
+ ? { diagnostic: redactMcpDiagnostic(server.oauth.diagnostic) }
114
+ : {}),
115
+ };
116
+ });
117
+ }
118
+ export function redactMcpDiagnostic(value) {
119
+ return value
120
+ .replace(/Bearer\s+[A-Za-z0-9._~+/=-]+/g, "Bearer [REDACTED]")
121
+ .replace(/\b(access_token|refresh_token|id_token|token|code)=([^&\s]+)/gi, "$1=[REDACTED]")
122
+ .replace(/\b(api[_-]?key|client_secret|secret)[=:]\s*[\w.+/=-]+/gi, "$1=[REDACTED]")
123
+ .replace(/https:\/\/[^\s?]+[^\s]*[?&](code|token|access_token|refresh_token)=[^\s]+/gi, "https://[REDACTED_URL]");
124
+ }
125
+ function validateServerConfig(server) {
126
+ if (!server.id || !/^[a-z0-9][a-z0-9._-]*$/i.test(server.id)) {
127
+ throw new Error("MCP server id must be alphanumeric with ._- separators");
128
+ }
129
+ if (!server.command && !server.url) {
130
+ throw new Error("MCP server config requires command or url");
131
+ }
132
+ if (server.url && !server.url.startsWith("https://")) {
133
+ throw new Error("MCP HTTP server url must use https");
134
+ }
135
+ if (server.command?.includes("/") || server.command?.includes("\\")) {
136
+ throw new Error("MCP command must be a command name, not a path");
137
+ }
138
+ }
139
+ function serverMap(config) {
140
+ return isRecord(config.mcpServers) ? config.mcpServers : {};
141
+ }
142
+ function normalizeServerConfig(id, value) {
143
+ const raw = isRecord(value) ? value : {};
144
+ const oauth = isRecord(raw.oauth) ? raw.oauth : undefined;
145
+ return {
146
+ id,
147
+ ...(typeof raw.command === "string" ? { command: raw.command } : {}),
148
+ ...(Array.isArray(raw.args)
149
+ ? {
150
+ args: raw.args.filter((arg) => typeof arg === "string"),
151
+ }
152
+ : {}),
153
+ ...(typeof raw.url === "string" ? { url: raw.url } : {}),
154
+ ...(oauth
155
+ ? {
156
+ oauth: {
157
+ ...(typeof oauth.required === "boolean"
158
+ ? { required: oauth.required }
159
+ : {}),
160
+ ...(typeof oauth.authenticated === "boolean"
161
+ ? { authenticated: oauth.authenticated }
162
+ : {}),
163
+ ...(typeof oauth.expiresAt === "string"
164
+ ? { expiresAt: oauth.expiresAt }
165
+ : {}),
166
+ ...(typeof oauth.revoked === "boolean"
167
+ ? { revoked: oauth.revoked }
168
+ : {}),
169
+ ...(typeof oauth.unavailable === "boolean"
170
+ ? { unavailable: oauth.unavailable }
171
+ : {}),
172
+ ...(typeof oauth.diagnostic === "string"
173
+ ? { diagnostic: oauth.diagnostic }
174
+ : {}),
175
+ },
176
+ }
177
+ : {}),
178
+ };
179
+ }
180
+ function redactServerConfig(server) {
181
+ return {
182
+ ...(server.command ? { command: server.command } : {}),
183
+ ...(server.args ? { args: server.args } : {}),
184
+ ...(server.url ? { url: server.url } : {}),
185
+ ...(server.env ? { env: redactEnv(server.env) } : {}),
186
+ ...(server.oauth
187
+ ? {
188
+ oauth: {
189
+ ...server.oauth,
190
+ ...(server.oauth.diagnostic
191
+ ? { diagnostic: redactMcpDiagnostic(server.oauth.diagnostic) }
192
+ : {}),
193
+ },
194
+ }
195
+ : {}),
196
+ };
197
+ }
198
+ function redactEnv(env) {
199
+ return Object.fromEntries(Object.entries(env).map(([key, value]) => [
200
+ key,
201
+ /token|secret|key|password/i.test(key) ? "[REDACTED]" : value,
202
+ ]));
203
+ }
204
+ function stateFromServerConfig(server) {
205
+ if (!server)
206
+ return "unavailable";
207
+ if (server.oauth?.unavailable)
208
+ return "unavailable";
209
+ if (server.oauth?.revoked)
210
+ return "revoked";
211
+ if (server.oauth?.expiresAt &&
212
+ Date.parse(server.oauth.expiresAt) <= Date.now()) {
213
+ return "expired";
214
+ }
215
+ if (server.oauth?.authenticated)
216
+ return "authenticated";
217
+ if (server.command || server.url)
218
+ return "installed";
219
+ return "configured";
220
+ }
221
+ function detailForState(state) {
222
+ const details = {
223
+ configured: "MCP server is present in scoped config",
224
+ installed: "MCP server transport is installed but authentication is not confirmed",
225
+ authenticated: "MCP server is configured and OAuth is authenticated",
226
+ expired: "MCP OAuth token is expired and needs reauthorization or refresh",
227
+ revoked: "MCP OAuth authorization appears revoked; reauthorize before use",
228
+ unavailable: "MCP server is unavailable in the scoped runtime config",
229
+ };
230
+ return details[state];
231
+ }
232
+ function isRecord(value) {
233
+ return typeof value === "object" && value !== null && !Array.isArray(value);
234
+ }
235
+ //# sourceMappingURL=mcp-runtime-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-runtime-config.js","sourceRoot":"","sources":["../src/mcp-runtime-config.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { removeUndefined } from "./command-utils.js";
2
+ import { redactMcpDiagnostic } from "./mcp-runtime-config.js";
2
3
  import { appendEvent } from "./workspace.js";
3
4
  import { authorizeWebAction } from "./web-action-security.js";
4
5
  export async function invokeMcpTool(root, request) {
@@ -35,10 +36,7 @@ export async function invokeMcpTool(root, request) {
35
36
  }
36
37
  export function redactedMcpError(error) {
37
38
  const message = error instanceof Error ? error.message : String(error);
38
- return message
39
- .replace(/Bearer\s+[A-Za-z0-9._-]+/g, "Bearer [REDACTED]")
40
- .replace(/api[_-]?key[=:]\s*[\w.-]+/gi, "api_key=[REDACTED]")
41
- .replace(/token[=:]\s*[\w.-]+/gi, "token=[REDACTED]");
39
+ return redactMcpDiagnostic(message);
42
40
  }
43
41
  function validateMcpToolInvocation(request) {
44
42
  if (!request.integrationId)
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-tool-adapter.js","sourceRoot":"","sources":["../src/mcp-tool-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-tool-adapter.js","sourceRoot":"","sources":["../src/mcp-tool-adapter.ts"],"names":[],"mappings":"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"}
@@ -96,8 +96,17 @@ export const DEFAULT_PHASE_PLAYBOOKS = {
96
96
  "- Reject fragmented acceptance criteria before planning tests. Role names, phase names, headings, or partial clauses are not executable criteria.",
97
97
  "- Confirm changed behavior, regression areas, edge cases, data setup, and environment assumptions.",
98
98
  "- Build an AC-to-evidence matrix. Each row must name the acceptance criterion, test type, fixture/setup, command or artifact, expected observable result, actual result, and pass/fail/deferred status.",
99
+ "- Define concrete test scenarios before approving evidence. Each scenario must include setup, action, expected outcome, and one or more assertions that prove the product behavior.",
100
+ "- Before approving a QA handoff, explicitly reason through potential scenarios, expected results, the target environment or product surface, how actual results will be collected, and whether the evidence proves the acceptance criteria.",
101
+ "- Choose evidence based on the real execution environment: cloud service, database, CLI, API, web app, mobile app, desktop app, workflow/runtime, integration, generated artifact, or local sandbox. Record why the selected surface is sufficient.",
102
+ "- For agent/chat changes, assert the agent answered the expected intent, preserved required constraints, and used or rejected inherited Orchestra skills, rules, task context, and guardrails as expected.",
103
+ "- For API changes, assert status code, response schema, response body, persisted receiver-side state, errors, and redaction behavior match the contract.",
104
+ "- For CLI changes, assert exit code, stdout/stderr or JSON shape, generated files/events, and user-safe failure text.",
105
+ "- For workflow changes, assert parent actions, lifecycle events, phase transitions, gate behavior, resume behavior, and handoff/evidence artifacts using structured state instead of parsing human prose.",
106
+ "- For generated artifacts, assert the expected files exist, content matches the requested scenario, metadata/provenance is correct, and unsafe or wrong-target content is excluded.",
99
107
  "- Challenge whether the test fixture actually triggers the risk. If the bug is about split detection, handoffs, failback, queues, gates, or specialist roles, require a scenario large or risky enough to exercise that behavior.",
100
108
  "- For any product surface, use isolated fixtures that create the required users, data, project state, tasks, roles, acceptance criteria, devices/environments, expected files, events, and artifacts. Use the configured E2E fixture path, sandbox org, emulator, container, device farm, or test environment when provided; otherwise default local disposable fixtures to `/tmp`.",
109
+ "- For release-impacting work, map validation to the release-blocking E2E battery catalog from #380/#428. Select the relevant product-risk layer (installed CLI, browser console, workflow lifecycle, runtime delegation, security boundary, acceptance evidence, recovery/repair, provider-backed delegation, docs/site, or packaging) and state whether each P0 battery passed, is out of scope, deferred with owner/rationale, or blocks release.",
101
110
  "- Do not approve a weaker surrogate. If the requested behavior is workflow, CLI, API, integration, generated artifact, mobile, desktop, or data behavior, validate that surface directly instead of substituting a generic browser or smoke test.",
102
111
  "- For generated skills, rules, runtime guidance, or Markdown artifacts, validate the full integration flow: detected or explicit context, command execution, generated paths, managed metadata, target-specific content, refresh/drift behavior, user-content preservation, and wrong-target exclusion.",
103
112
  "- Record exact commands, pass/fail result, artifacts, known gaps, and release recommendation.",
@@ -1 +1 @@
1
- {"version":3,"file":"phase-playbooks.js","sourceRoot":"","sources":["../src/phase-playbooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"phase-playbooks.js","sourceRoot":"","sources":["../src/phase-playbooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { EventEntry, HandoffInput, PhaseStructuredOutput, Task } from "./types.js";
2
+ export interface RealEvidenceTransition {
3
+ phase: string;
4
+ nextPhase: string;
5
+ fromRole: string;
6
+ toRole: string;
7
+ }
8
+ export interface RealEvidenceAssessmentInput {
9
+ task: Task | undefined;
10
+ transition: RealEvidenceTransition;
11
+ events?: EventEntry[];
12
+ output?: PhaseStructuredOutput;
13
+ handoff?: Pick<HandoffInput, "changed" | "behavior" | "tests" | "commands">;
14
+ }
15
+ export interface RealEvidenceAssessment {
16
+ required: boolean;
17
+ passed: boolean;
18
+ missing: string[];
19
+ detail: string;
20
+ }
21
+ export declare function assessRealEvidence(input: RealEvidenceAssessmentInput): RealEvidenceAssessment;
22
+ export declare function taskRequiresRealProductEvidence(task: Task | undefined): boolean;
23
+ export declare function isRealEvidenceEvent(event: EventEntry): boolean;
@@ -0,0 +1,182 @@
1
+ const PRODUCT_EVIDENCE_TEXT_PATTERN = /\b(changed files?|schema validation|command output|api behavior|endpoint|cli output|ui evidence|browser|responsive|artifact|generated file|test command|exit code|stdout|stderr|ci|workflow|release gate|tag readiness)\b/i;
2
+ const PRODUCT_EVIDENCE_PATH_PATTERN = /^(src|test|e2e|web-console|site|scripts|bin|schemas|\.github)(?:\/|$)|^(package|package-lock|tsconfig|eslint|playwright)\b/i;
3
+ const COMMAND_TEXT_PATTERN = /\b(node --test|npm (run|test)|playwright|curl |gh |orchestra |tsc|eslint|prettier|vite|mocha|jest)\b/i;
4
+ const ARTIFACT_TEXT_PATTERN = /\b(src\/|test\/|e2e\/|web-console\/|site\/|scripts\/|bin\/|schemas\/|\.github\/|docs\/|\.agent-workflow\/|artifact|screenshot|trace|video|report)\b/i;
5
+ const ASSERTION_TEXT_PATTERN = /\b(asserted|verified|validated|proved|covered|ac\d+|acceptance criteri(?:a|on)|actual result|pass|fail|blocked|go\/no-go|go no-go|risk reviewed|decision recorded|rollback)\b/i;
6
+ const SIMULATED_ONLY_PATTERN = /\b(deterministic workflow state|workflow state only|simulated|phase completed|see phase task evidence|handoff ready|parent-agent fallback)\b/i;
7
+ const PLANNING_EVIDENCE_SCOPE_PATTERN = /\b(command output|artifact evidence|workflow-state-only|simulated evidence|handoff\/gate validation|handoff validation|gate validation|real evidence)\b/i;
8
+ export function assessRealEvidence(input) {
9
+ const transitionLabel = renderTransition(input.transition);
10
+ const taskId = input.task?.id ?? "unknown-task";
11
+ if (!transitionRequiresRealEvidence(input)) {
12
+ return {
13
+ required: false,
14
+ passed: true,
15
+ missing: [],
16
+ detail: `${transitionLabel} ${taskId}: real product evidence not required for advisory or documentation-only scope.`,
17
+ };
18
+ }
19
+ if (hasAcceptedRealEvidenceDeferral(input)) {
20
+ return {
21
+ required: true,
22
+ passed: true,
23
+ missing: [],
24
+ detail: `${transitionLabel} ${taskId}: real product evidence deferred with accepted owner and rationale.`,
25
+ };
26
+ }
27
+ if (hasRealEvidenceEvent(input.events ?? [], taskId)) {
28
+ return {
29
+ required: true,
30
+ passed: true,
31
+ missing: [],
32
+ detail: `${transitionLabel} ${taskId}: real product evidence event recorded.`,
33
+ };
34
+ }
35
+ if (hasRealEvidenceText(input)) {
36
+ return {
37
+ required: true,
38
+ passed: true,
39
+ missing: [],
40
+ detail: `${transitionLabel} ${taskId}: handoff includes concrete command, artifact, and assertion evidence.`,
41
+ };
42
+ }
43
+ return {
44
+ required: true,
45
+ passed: false,
46
+ missing: ["realProductProof"],
47
+ detail: `Gap: ${transitionLabel} for ${taskId} is missing real product evidence; attach command/file/artifact evidence with assertions or record accepted deferral with owner and rationale.`,
48
+ };
49
+ }
50
+ export function taskRequiresRealProductEvidence(task) {
51
+ if (!task)
52
+ return false;
53
+ const paths = task.paths ?? [];
54
+ if (paths.some((path) => PRODUCT_EVIDENCE_PATH_PATTERN.test(path))) {
55
+ return true;
56
+ }
57
+ if (isDocumentationOnlyAdvisoryTask(task)) {
58
+ return false;
59
+ }
60
+ return PRODUCT_EVIDENCE_TEXT_PATTERN.test(taskSearchText(task));
61
+ }
62
+ export function isRealEvidenceEvent(event) {
63
+ const automation = event.metadata.automation;
64
+ if (!automation || typeof automation !== "object") {
65
+ return false;
66
+ }
67
+ const record = automation;
68
+ if (record.observableOutcome !== true) {
69
+ return false;
70
+ }
71
+ const hasCommand = stringMetadata(event.metadata, "command") !== undefined;
72
+ const hasPath = stringMetadata(event.metadata, "path") !== undefined;
73
+ const hasArtifact = (event.artifacts ?? []).length > 0;
74
+ const hasAssertions = stringMetadata(record, "assertions") !== undefined;
75
+ const hasExternalValidation = stringMetadata(record, "externalValidation") !== undefined;
76
+ return ((hasCommand || hasPath || hasArtifact) &&
77
+ (hasAssertions || hasExternalValidation));
78
+ }
79
+ function transitionRequiresRealEvidence(input) {
80
+ const transition = input.transition;
81
+ if (isPlanningReadinessTransition(transition)) {
82
+ return (planningTaskRequiresRealEvidence(input.task) &&
83
+ hasSimulatedEvidence(input));
84
+ }
85
+ const guarded = new Set([
86
+ "architect",
87
+ "developer",
88
+ "docs_review",
89
+ "qa",
90
+ "release",
91
+ "release_manager",
92
+ "security",
93
+ "technical_writer",
94
+ ]);
95
+ return ((guarded.has(transition.phase) || guarded.has(transition.fromRole)) &&
96
+ taskRequiresRealProductEvidence(input.task) &&
97
+ ((isQaReleaseTransition(transition) && input.events !== undefined) ||
98
+ taskHasRealEvidenceGateSignal(input.task)));
99
+ }
100
+ function hasRealEvidenceEvent(events, taskId) {
101
+ return events.some((event) => event.taskId === taskId &&
102
+ event.type === "EVIDENCE_ADDED" &&
103
+ isRealEvidenceEvent(event));
104
+ }
105
+ function hasRealEvidenceText(input) {
106
+ const text = evidenceText(input);
107
+ if (SIMULATED_ONLY_PATTERN.test(text) && !COMMAND_TEXT_PATTERN.test(text)) {
108
+ return false;
109
+ }
110
+ return (COMMAND_TEXT_PATTERN.test(text) &&
111
+ ARTIFACT_TEXT_PATTERN.test(text) &&
112
+ ASSERTION_TEXT_PATTERN.test(text));
113
+ }
114
+ function hasSimulatedEvidence(input) {
115
+ return SIMULATED_ONLY_PATTERN.test(evidenceText(input));
116
+ }
117
+ function evidenceText(input) {
118
+ return [
119
+ input.output?.summary,
120
+ input.output?.notes,
121
+ input.output?.handoff,
122
+ ...(input.output?.findings ?? []),
123
+ ...(input.output?.decisions ?? []),
124
+ ...(input.output?.evidence ?? []),
125
+ input.handoff?.changed,
126
+ input.handoff?.behavior,
127
+ input.handoff?.tests,
128
+ input.handoff?.commands,
129
+ ]
130
+ .filter(Boolean)
131
+ .join(" ");
132
+ }
133
+ function isPlanningReadinessTransition(transition) {
134
+ const planningRoles = new Set(["business_analyst", "product_owner"]);
135
+ return transition.phase === "po" || planningRoles.has(transition.fromRole);
136
+ }
137
+ function planningTaskRequiresRealEvidence(task) {
138
+ if (!task)
139
+ return false;
140
+ return PLANNING_EVIDENCE_SCOPE_PATTERN.test(taskSearchText(task));
141
+ }
142
+ function taskHasRealEvidenceGateSignal(task) {
143
+ if (!task)
144
+ return false;
145
+ return PLANNING_EVIDENCE_SCOPE_PATTERN.test(taskSearchText(task));
146
+ }
147
+ function isQaReleaseTransition(transition) {
148
+ return transition.phase === "qa" && transition.nextPhase === "release";
149
+ }
150
+ function hasAcceptedRealEvidenceDeferral(input) {
151
+ const text = [
152
+ input.output?.notes,
153
+ input.output?.handoff,
154
+ ...(input.output?.decisions ?? []),
155
+ input.handoff?.behavior,
156
+ input.handoff?.commands,
157
+ ]
158
+ .filter(Boolean)
159
+ .join(" ");
160
+ return (/\bdefer(?:red|ral)?\b/i.test(text) &&
161
+ /\b(owner|owned by|deferred owner|po|product owner|release manager|risk owner|security)\b/i.test(text) &&
162
+ /\b(rationale|reason|accepted by|risk accepted|approved by|acceptance)\b/i.test(text));
163
+ }
164
+ function isDocumentationOnlyAdvisoryTask(task) {
165
+ const paths = task.paths ?? [];
166
+ return (paths.length > 0 &&
167
+ paths.every((path) => /^(docs|README|CHANGELOG|AGENTS|CLAUDE|ORCHESTRA)/i.test(path)) &&
168
+ !PRODUCT_EVIDENCE_TEXT_PATTERN.test(taskSearchText(task)));
169
+ }
170
+ function taskSearchText(task) {
171
+ return [task.title, task.goal, task.scope, ...(task.acceptanceCriteria ?? [])]
172
+ .filter(Boolean)
173
+ .join(" ");
174
+ }
175
+ function renderTransition(transition) {
176
+ return `${transition.phase}->${transition.nextPhase} (${transition.fromRole}->${transition.toRole})`;
177
+ }
178
+ function stringMetadata(metadata, key) {
179
+ const value = metadata[key];
180
+ return typeof value === "string" && value.trim() ? value : undefined;
181
+ }
182
+ //# sourceMappingURL=real-evidence-gates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"real-evidence-gates.js","sourceRoot":"","sources":["../src/real-evidence-gates.ts"],"names":[],"mappings":"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"}
@@ -14,3 +14,6 @@ export declare function releaseCheckCommand(options: CliOptions, io: CliIo): Pro
14
14
  export declare function releaseCandidateCommand(options: CliOptions, io: CliIo): Promise<void>;
15
15
  export declare function releaseTagCommand(options: CliOptions, io: CliIo): Promise<void>;
16
16
  export declare function releaseEvidenceCommand(options: CliOptions, io: CliIo): Promise<void>;
17
+ export declare function releaseInclusionCommand(options: CliOptions, io: CliIo): Promise<void>;
18
+ export declare function releaseNotesCommand(options: CliOptions, io: CliIo): Promise<void>;
19
+ export declare function releaseReadinessCommand(options: CliOptions, io: CliIo): Promise<void>;