@jterrats/open-orchestra 0.5.7 → 1.0.2

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 (260) hide show
  1. package/AGENTS.md +9 -8
  2. package/CLAUDE.md +13 -11
  3. package/README.md +78 -11
  4. package/dist/assets/web-console.js +169 -32
  5. package/dist/automation-evidence.d.ts +23 -0
  6. package/dist/automation-evidence.js +97 -0
  7. package/dist/automation-evidence.js.map +1 -0
  8. package/dist/autonomous-run-store.js +3 -3
  9. package/dist/autonomous-run-store.js.map +1 -1
  10. package/dist/benchmark.d.ts +4 -1
  11. package/dist/benchmark.js +93 -4
  12. package/dist/benchmark.js.map +1 -1
  13. package/dist/cli.js +73 -2
  14. package/dist/cli.js.map +1 -1
  15. package/dist/collaboration-flows.js +3 -5
  16. package/dist/collaboration-flows.js.map +1 -1
  17. package/dist/collection-utils.d.ts +3 -0
  18. package/dist/collection-utils.js +10 -0
  19. package/dist/collection-utils.js.map +1 -0
  20. package/dist/command-manifest.d.ts +12 -1
  21. package/dist/command-manifest.js +213 -10
  22. package/dist/command-manifest.js.map +1 -1
  23. package/dist/commands.d.ts +10 -5
  24. package/dist/commands.js +16 -6
  25. package/dist/commands.js.map +1 -1
  26. package/dist/config-migrations.d.ts +24 -0
  27. package/dist/config-migrations.js +102 -0
  28. package/dist/config-migrations.js.map +1 -0
  29. package/dist/constants.d.ts +2 -0
  30. package/dist/constants.js +23 -0
  31. package/dist/constants.js.map +1 -1
  32. package/dist/dashboard-commands.d.ts +2 -0
  33. package/dist/dashboard-commands.js +14 -0
  34. package/dist/dashboard-commands.js.map +1 -0
  35. package/dist/defaults.d.ts +13 -0
  36. package/dist/defaults.js +13 -0
  37. package/dist/defaults.js.map +1 -1
  38. package/dist/delegation-decision.js +23 -8
  39. package/dist/delegation-decision.js.map +1 -1
  40. package/dist/delivery-commands.js +5 -0
  41. package/dist/delivery-commands.js.map +1 -1
  42. package/dist/delivery-dashboard-charts.d.ts +4 -0
  43. package/dist/delivery-dashboard-charts.js +156 -0
  44. package/dist/delivery-dashboard-charts.js.map +1 -0
  45. package/dist/delivery-dashboard-html.d.ts +2 -0
  46. package/dist/delivery-dashboard-html.js +115 -0
  47. package/dist/delivery-dashboard-html.js.map +1 -0
  48. package/dist/delivery-dashboard-types.d.ts +78 -0
  49. package/dist/delivery-dashboard-types.js +2 -0
  50. package/dist/delivery-dashboard-types.js.map +1 -0
  51. package/dist/delivery-dashboard.d.ts +8 -0
  52. package/dist/delivery-dashboard.js +124 -0
  53. package/dist/delivery-dashboard.js.map +1 -0
  54. package/dist/effort-classification.d.ts +7 -0
  55. package/dist/effort-classification.js +72 -0
  56. package/dist/effort-classification.js.map +1 -0
  57. package/dist/extension-commands.d.ts +3 -0
  58. package/dist/extension-commands.js +40 -0
  59. package/dist/extension-commands.js.map +1 -0
  60. package/dist/extensions.d.ts +22 -0
  61. package/dist/extensions.js +126 -0
  62. package/dist/extensions.js.map +1 -0
  63. package/dist/github.d.ts +2 -0
  64. package/dist/github.js +15 -3
  65. package/dist/github.js.map +1 -1
  66. package/dist/health-checks.js +51 -0
  67. package/dist/health-checks.js.map +1 -1
  68. package/dist/lucid-story-map.d.ts +73 -0
  69. package/dist/lucid-story-map.js +112 -0
  70. package/dist/lucid-story-map.js.map +1 -0
  71. package/dist/mcp-integrations.d.ts +19 -0
  72. package/dist/mcp-integrations.js +58 -0
  73. package/dist/mcp-integrations.js.map +1 -0
  74. package/dist/mcp-tool-adapter.d.ts +21 -0
  75. package/dist/mcp-tool-adapter.js +56 -0
  76. package/dist/mcp-tool-adapter.js.map +1 -0
  77. package/dist/memory.js +18 -8
  78. package/dist/memory.js.map +1 -1
  79. package/dist/metrics-commands.js +47 -13
  80. package/dist/metrics-commands.js.map +1 -1
  81. package/dist/model-commands.d.ts +5 -0
  82. package/dist/model-commands.js +101 -3
  83. package/dist/model-commands.js.map +1 -1
  84. package/dist/model-providers.js +13 -1
  85. package/dist/model-providers.js.map +1 -1
  86. package/dist/package-update-check.d.ts +18 -0
  87. package/dist/package-update-check.js +20 -0
  88. package/dist/package-update-check.js.map +1 -1
  89. package/dist/phase-executor.d.ts +1 -0
  90. package/dist/phase-executor.js +118 -14
  91. package/dist/phase-executor.js.map +1 -1
  92. package/dist/phase-playbooks.d.ts +15 -0
  93. package/dist/phase-playbooks.js +82 -0
  94. package/dist/phase-playbooks.js.map +1 -1
  95. package/dist/planning-commands.d.ts +1 -0
  96. package/dist/planning-commands.js +24 -1
  97. package/dist/planning-commands.js.map +1 -1
  98. package/dist/project-detection.js +9 -7
  99. package/dist/project-detection.js.map +1 -1
  100. package/dist/prompt-registry-update.d.ts +2 -0
  101. package/dist/prompt-registry-update.js +25 -1
  102. package/dist/prompt-registry-update.js.map +1 -1
  103. package/dist/prompt-registry-validation.js +39 -2
  104. package/dist/prompt-registry-validation.js.map +1 -1
  105. package/dist/qa-commands.d.ts +2 -0
  106. package/dist/qa-commands.js +18 -0
  107. package/dist/qa-commands.js.map +1 -0
  108. package/dist/qa-coverage.d.ts +24 -0
  109. package/dist/qa-coverage.js +198 -0
  110. package/dist/qa-coverage.js.map +1 -0
  111. package/dist/qa-readiness.d.ts +5 -0
  112. package/dist/qa-readiness.js +26 -0
  113. package/dist/qa-readiness.js.map +1 -0
  114. package/dist/refresh-generated.d.ts +10 -1
  115. package/dist/refresh-generated.js +83 -6
  116. package/dist/refresh-generated.js.map +1 -1
  117. package/dist/release-candidate.d.ts +9 -1
  118. package/dist/release-candidate.js +52 -1
  119. package/dist/release-candidate.js.map +1 -1
  120. package/dist/release-commands.js +202 -12
  121. package/dist/release-commands.js.map +1 -1
  122. package/dist/release-readiness.d.ts +36 -1
  123. package/dist/release-readiness.js +217 -6
  124. package/dist/release-readiness.js.map +1 -1
  125. package/dist/runtime-bootstrap.js +1 -1
  126. package/dist/runtime-bootstrap.js.map +1 -1
  127. package/dist/runtime-commands.d.ts +2 -0
  128. package/dist/runtime-commands.js +77 -0
  129. package/dist/runtime-commands.js.map +1 -1
  130. package/dist/runtime-execution-renderer.d.ts +3 -2
  131. package/dist/runtime-execution-renderer.js +19 -1
  132. package/dist/runtime-execution-renderer.js.map +1 -1
  133. package/dist/runtime-execution.d.ts +2 -1
  134. package/dist/runtime-execution.js +71 -11
  135. package/dist/runtime-execution.js.map +1 -1
  136. package/dist/runtime-guardrails.d.ts +26 -0
  137. package/dist/runtime-guardrails.js +168 -0
  138. package/dist/runtime-guardrails.js.map +1 -0
  139. package/dist/setup-agents-import.js +5 -3
  140. package/dist/setup-agents-import.js.map +1 -1
  141. package/dist/skills-catalog.js +63 -0
  142. package/dist/skills-catalog.js.map +1 -1
  143. package/dist/skills-commands.d.ts +4 -0
  144. package/dist/skills-commands.js +55 -2
  145. package/dist/skills-commands.js.map +1 -1
  146. package/dist/skills-memory.d.ts +36 -2
  147. package/dist/skills-memory.js +165 -6
  148. package/dist/skills-memory.js.map +1 -1
  149. package/dist/skills-planning.js +2 -4
  150. package/dist/skills-planning.js.map +1 -1
  151. package/dist/skills-render.js +2 -4
  152. package/dist/skills-render.js.map +1 -1
  153. package/dist/skills.d.ts +1 -1
  154. package/dist/skills.js +1 -1
  155. package/dist/skills.js.map +1 -1
  156. package/dist/sprint-commands.js +2 -1
  157. package/dist/sprint-commands.js.map +1 -1
  158. package/dist/subagent-protocol.js +3 -5
  159. package/dist/subagent-protocol.js.map +1 -1
  160. package/dist/support-commands.d.ts +2 -0
  161. package/dist/support-commands.js +18 -0
  162. package/dist/support-commands.js.map +1 -0
  163. package/dist/support-diagnostics.d.ts +49 -0
  164. package/dist/support-diagnostics.js +86 -0
  165. package/dist/support-diagnostics.js.map +1 -0
  166. package/dist/task-graph-commands.js +5 -3
  167. package/dist/task-graph-commands.js.map +1 -1
  168. package/dist/telemetry-redaction.js +8 -1
  169. package/dist/telemetry-redaction.js.map +1 -1
  170. package/dist/tool-commands.d.ts +3 -0
  171. package/dist/tool-commands.js +62 -0
  172. package/dist/tool-commands.js.map +1 -1
  173. package/dist/tracker-adapters.d.ts +71 -0
  174. package/dist/tracker-adapters.js +186 -0
  175. package/dist/tracker-adapters.js.map +1 -0
  176. package/dist/tracker-commands.d.ts +2 -0
  177. package/dist/tracker-commands.js +119 -0
  178. package/dist/tracker-commands.js.map +1 -0
  179. package/dist/types/metrics.d.ts +24 -0
  180. package/dist/types/model-config.d.ts +39 -0
  181. package/dist/types/runtime.d.ts +56 -0
  182. package/dist/types/skills.d.ts +2 -0
  183. package/dist/types/tasks.d.ts +6 -0
  184. package/dist/types/workflow-run.d.ts +17 -0
  185. package/dist/types.d.ts +4 -4
  186. package/dist/types.js.map +1 -1
  187. package/dist/upgrade-commands.js +13 -4
  188. package/dist/upgrade-commands.js.map +1 -1
  189. package/dist/validation.js +2 -2
  190. package/dist/validation.js.map +1 -1
  191. package/dist/visual-validation.d.ts +81 -0
  192. package/dist/visual-validation.js +290 -0
  193. package/dist/visual-validation.js.map +1 -0
  194. package/dist/web-action-security.d.ts +11 -0
  195. package/dist/web-action-security.js +45 -0
  196. package/dist/web-action-security.js.map +1 -0
  197. package/dist/web-api-read-routes.js +101 -1
  198. package/dist/web-api-read-routes.js.map +1 -1
  199. package/dist/web-api.js +507 -5
  200. package/dist/web-api.js.map +1 -1
  201. package/dist/web-artifacts.d.ts +55 -0
  202. package/dist/web-artifacts.js +222 -0
  203. package/dist/web-artifacts.js.map +1 -0
  204. package/dist/web-console/assets/index-BNESIVvk.js +11 -0
  205. package/dist/web-console/assets/index-jxCY5eEc.css +1 -0
  206. package/dist/web-console/index.html +13 -0
  207. package/dist/web-console.js +9 -3
  208. package/dist/web-console.js.map +1 -1
  209. package/dist/web-recovery.d.ts +30 -0
  210. package/dist/web-recovery.js +163 -0
  211. package/dist/web-recovery.js.map +1 -0
  212. package/dist/web-workflow-progress.d.ts +41 -0
  213. package/dist/web-workflow-progress.js +114 -0
  214. package/dist/web-workflow-progress.js.map +1 -0
  215. package/dist/workflow-approval-service.d.ts +2 -1
  216. package/dist/workflow-approval-service.js +72 -0
  217. package/dist/workflow-approval-service.js.map +1 -1
  218. package/dist/workflow-evidence-service.js +8 -1
  219. package/dist/workflow-evidence-service.js.map +1 -1
  220. package/dist/workflow-gates.d.ts +2 -0
  221. package/dist/workflow-gates.js +221 -0
  222. package/dist/workflow-gates.js.map +1 -1
  223. package/dist/workflow-run-commands.js +13 -1
  224. package/dist/workflow-run-commands.js.map +1 -1
  225. package/dist/workflow-services.d.ts +16 -12
  226. package/dist/workflow-services.js +313 -253
  227. package/dist/workflow-services.js.map +1 -1
  228. package/dist/workflow-task-service.d.ts +11 -0
  229. package/dist/workflow-task-service.js +242 -0
  230. package/dist/workflow-task-service.js.map +1 -0
  231. package/dist/workspace-validator.js +109 -3
  232. package/dist/workspace-validator.js.map +1 -1
  233. package/dist/workspace.js +8 -2
  234. package/dist/workspace.js.map +1 -1
  235. package/docs/adoption-guide.md +147 -0
  236. package/docs/autonomous-workflow.md +118 -27
  237. package/docs/benchmark.md +15 -7
  238. package/docs/command-contracts.md +18 -1
  239. package/docs/core-command-surface.md +59 -13
  240. package/docs/end-to-end-demo.md +1 -0
  241. package/docs/extension-contracts.md +83 -0
  242. package/docs/orchestra-mvp.md +83 -3
  243. package/docs/persona-workflows.md +32 -0
  244. package/docs/release-test-matrix.md +42 -0
  245. package/docs/runtime-adapters.md +92 -0
  246. package/docs/runtime-llm-flow.md +13 -0
  247. package/docs/setup-agents-applicability-review.md +173 -0
  248. package/docs/skill-loading-strategy.md +1 -0
  249. package/docs/source-of-truth-and-agent-learning.md +14 -0
  250. package/docs/traceability-flow.md +16 -1
  251. package/docs/tracker-adapter-contract.md +10 -1
  252. package/docs/web-console-qa.md +35 -0
  253. package/package.json +12 -6
  254. package/rules/development-engineering.mdc +68 -0
  255. package/rules/devops-tooling.mdc +1 -0
  256. package/rules/dry-clean-code.mdc +1 -0
  257. package/rules/performance-reliability.mdc +1 -0
  258. package/rules/testing-discipline.mdc +4 -1
  259. package/skills/collection-standards/SKILL.md +63 -0
  260. package/skills/collection-standards/manifest.json +69 -0
@@ -0,0 +1,186 @@
1
+ const TRACKER_CONTRACTS = [
2
+ contract("github", "gh", "github-mcp"),
3
+ contract("jira", "jira", "jira-mcp"),
4
+ contract("gitlab", "glab", "gitlab-mcp"),
5
+ contract("bitbucket", "bb", "bitbucket-mcp"),
6
+ ];
7
+ export function listTrackerAdapterContracts() {
8
+ return TRACKER_CONTRACTS.map((item) => ({
9
+ ...item,
10
+ operations: [...item.operations],
11
+ }));
12
+ }
13
+ export function getTrackerAdapterContract(tracker) {
14
+ const normalized = normalizeTrackerProvider(tracker);
15
+ const contract = TRACKER_CONTRACTS.find((item) => item.tracker === normalized);
16
+ if (!contract) {
17
+ throw new Error(`unsupported tracker: ${tracker}`);
18
+ }
19
+ return { ...contract, operations: [...contract.operations] };
20
+ }
21
+ export function selectTrackerTransport({ tracker, requestedTransport, cliAvailable, mcpSkillAvailable, }) {
22
+ const contract = getTrackerAdapterContract(tracker);
23
+ if (requestedTransport === "cli") {
24
+ if (!cliAvailable) {
25
+ throw new Error(`${contract.tracker} CLI transport requires ${contract.nativeCli}`);
26
+ }
27
+ return {
28
+ tracker: contract.tracker,
29
+ transport: "cli",
30
+ reason: `${contract.nativeCli} CLI selected explicitly`,
31
+ };
32
+ }
33
+ if (requestedTransport === "mcp-skill") {
34
+ if (!mcpSkillAvailable) {
35
+ throw new Error(`${contract.tracker} MCP skill transport requires ${contract.mcpSkill}`);
36
+ }
37
+ return {
38
+ tracker: contract.tracker,
39
+ transport: "mcp-skill",
40
+ reason: `${contract.mcpSkill} selected explicitly`,
41
+ };
42
+ }
43
+ if (cliAvailable) {
44
+ return {
45
+ tracker: contract.tracker,
46
+ transport: "cli",
47
+ reason: `${contract.nativeCli} CLI available`,
48
+ };
49
+ }
50
+ if (mcpSkillAvailable) {
51
+ return {
52
+ tracker: contract.tracker,
53
+ transport: "mcp-skill",
54
+ reason: `${contract.nativeCli} unavailable; ${contract.mcpSkill} fallback available`,
55
+ };
56
+ }
57
+ throw new Error(`${contract.tracker} tracker sync requires ${contract.nativeCli} CLI or ${contract.mcpSkill} MCP skill`);
58
+ }
59
+ export function normalizeTrackerIssue(input) {
60
+ const tracker = normalizeTrackerProvider(input.tracker);
61
+ const state = normalizeTrackerIssueState(input.state);
62
+ if (typeof input.title !== "string" || input.title.trim() === "") {
63
+ throw new Error("tracker issue title is required");
64
+ }
65
+ return {
66
+ tracker,
67
+ remoteId: String(input.remoteId),
68
+ ...(typeof input.url === "string" && input.url.trim()
69
+ ? { url: input.url }
70
+ : {}),
71
+ title: input.title,
72
+ ...(typeof input.body === "string" ? { body: input.body } : {}),
73
+ ...(state ? { state } : {}),
74
+ labels: stringArray(input.labels),
75
+ assignees: stringArray(input.assignees),
76
+ acceptanceCriteria: stringArray(input.acceptanceCriteria),
77
+ ...(typeof input.updatedAt === "string" && input.updatedAt.trim()
78
+ ? { updatedAt: input.updatedAt }
79
+ : {}),
80
+ };
81
+ }
82
+ export function defaultTrackerTaskId(issue) {
83
+ return `${issue.tracker.toUpperCase()}-${issue.remoteId.replace(/[^a-z0-9]+/gi, "-").replace(/^-|-$/g, "")}`;
84
+ }
85
+ export function trackerIssueTaskFields(issue) {
86
+ const goal = issue.body ? firstSection(issue.body, "User Story") : undefined;
87
+ return {
88
+ title: issue.title,
89
+ backlogItem: issue.url ?? `${issue.tracker}:${issue.remoteId}`,
90
+ ...(goal ? { goal } : {}),
91
+ ...(issue.acceptanceCriteria.length > 0
92
+ ? { acceptanceCriteria: issue.acceptanceCriteria }
93
+ : {}),
94
+ ...(issue.labels.length > 0 ? { risks: issue.labels } : {}),
95
+ ...(issue.state ? { status: trackerStateToTaskStatus(issue.state) } : {}),
96
+ };
97
+ }
98
+ export function planTrackerSync(input) {
99
+ const taskId = input.taskId ?? defaultTrackerTaskId(input.issue);
100
+ const fields = trackerIssueTaskFields(input.issue);
101
+ if (!input.existingTask) {
102
+ return {
103
+ tracker: input.issue.tracker,
104
+ remoteId: input.issue.remoteId,
105
+ taskId,
106
+ action: "create",
107
+ conflicts: [],
108
+ mappedFields: mappedTrackerFields(fields),
109
+ };
110
+ }
111
+ const conflicts = [];
112
+ if (input.existingTask.backlogItem &&
113
+ input.existingTask.backlogItem !== fields.backlogItem) {
114
+ conflicts.push(`task ${taskId} is already linked to ${input.existingTask.backlogItem}`);
115
+ }
116
+ return {
117
+ tracker: input.issue.tracker,
118
+ remoteId: input.issue.remoteId,
119
+ taskId,
120
+ action: conflicts.length > 0
121
+ ? "conflict"
122
+ : input.existingTask.title === fields.title
123
+ ? "none"
124
+ : "update",
125
+ conflicts,
126
+ mappedFields: mappedTrackerFields(fields),
127
+ };
128
+ }
129
+ function contract(tracker, nativeCli, mcpSkill) {
130
+ return {
131
+ tracker,
132
+ nativeCli,
133
+ mcpSkill,
134
+ operations: ["issue-read", "comment-upsert", "close"],
135
+ };
136
+ }
137
+ function normalizeTrackerProvider(tracker) {
138
+ const normalized = tracker.toLowerCase().trim();
139
+ if (normalized === "github" ||
140
+ normalized === "jira" ||
141
+ normalized === "gitlab" ||
142
+ normalized === "bitbucket") {
143
+ return normalized;
144
+ }
145
+ throw new Error(`unsupported tracker: ${tracker}`);
146
+ }
147
+ function normalizeTrackerIssueState(value) {
148
+ if (typeof value !== "string") {
149
+ return undefined;
150
+ }
151
+ const normalized = value
152
+ .toLowerCase()
153
+ .trim()
154
+ .replace(/[-\s]+/g, "_");
155
+ if (normalized === "open" ||
156
+ normalized === "in_progress" ||
157
+ normalized === "blocked" ||
158
+ normalized === "done") {
159
+ return normalized;
160
+ }
161
+ return undefined;
162
+ }
163
+ function trackerStateToTaskStatus(state) {
164
+ if (state === "open")
165
+ return "pending";
166
+ return state;
167
+ }
168
+ function stringArray(value) {
169
+ return Array.isArray(value)
170
+ ? value.filter((item) => typeof item === "string")
171
+ : [];
172
+ }
173
+ function mappedTrackerFields(fields) {
174
+ return Object.entries(fields)
175
+ .filter(([, value]) => Array.isArray(value) ? value.length > 0 : value !== undefined)
176
+ .map(([key]) => key);
177
+ }
178
+ function firstSection(body, heading) {
179
+ const pattern = new RegExp(`##\\s+${escapeRegExp(heading)}\\s*\\n([\\s\\S]*?)(?=\\n##\\s+|$)`, "i");
180
+ const match = body.match(pattern);
181
+ return match?.[1]?.trim();
182
+ }
183
+ function escapeRegExp(value) {
184
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
185
+ }
186
+ //# sourceMappingURL=tracker-adapters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracker-adapters.js","sourceRoot":"","sources":["../src/tracker-adapters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { CliIo, CliOptions } from "./types.js";
2
+ export declare function trackerSyncCommand(options: CliOptions, io: CliIo): Promise<void>;
@@ -0,0 +1,119 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { requireArg } from "./args.js";
4
+ import { removeUndefined, stringOption, targetRootOption, } from "./command-utils.js";
5
+ import { normalizeTaskStatus } from "./constants.js";
6
+ import { resolveWorkspaceWritePath } from "./fs-utils.js";
7
+ import { normalizeTrackerIssue, defaultTrackerTaskId, planTrackerSync, trackerIssueTaskFields, } from "./tracker-adapters.js";
8
+ import { addEvidence, addTask, listTasks, updateTask, } from "./workflow-services.js";
9
+ export async function trackerSyncCommand(options, io) {
10
+ const root = targetRootOption(options);
11
+ const tracker = requireArg(options, "tracker");
12
+ const remoteId = requireArg(options, "remote");
13
+ const issueFile = stringOption(options["issue-file"]);
14
+ if (!issueFile) {
15
+ throw new Error("tracker sync requires --issue-file with normalized tracker issue JSON; live provider runners must inject an adapter");
16
+ }
17
+ const payload = await readIssuePayload(root, issueFile);
18
+ const issue = normalizeTrackerIssue({
19
+ tracker,
20
+ remoteId,
21
+ title: payload.title,
22
+ url: payload.url,
23
+ body: payload.body,
24
+ state: payload.state,
25
+ labels: payload.labels,
26
+ assignees: payload.assignees,
27
+ acceptanceCriteria: payload.acceptanceCriteria,
28
+ updatedAt: payload.updatedAt,
29
+ });
30
+ const tasks = await listTasks(root);
31
+ const taskId = stringOption(options.task);
32
+ const effectiveTaskId = taskId ?? undefined;
33
+ const existing = tasks.find((task) => task.id === (effectiveTaskId ?? defaultTrackerTaskId(issue)) ||
34
+ task.backlogItem === (issue.url ?? `${issue.tracker}:${issue.remoteId}`));
35
+ const plan = planTrackerSync({
36
+ issue,
37
+ ...(effectiveTaskId ? { taskId: effectiveTaskId } : {}),
38
+ ...(existing
39
+ ? {
40
+ existingTask: {
41
+ title: existing.title,
42
+ ...(existing.backlogItem
43
+ ? { backlogItem: existing.backlogItem }
44
+ : {}),
45
+ },
46
+ }
47
+ : {}),
48
+ });
49
+ if (plan.action === "conflict") {
50
+ throw new Error(`tracker sync conflict: ${plan.conflicts.join("; ")}`);
51
+ }
52
+ const fields = trackerIssueTaskFields(issue);
53
+ const ownerRole = stringOption(options.owner) ?? existing?.ownerRole ?? "developer";
54
+ const status = parseTaskStatus(stringOption(options.status)) ?? fields.status;
55
+ const taskInput = removeUndefined({
56
+ id: plan.taskId,
57
+ title: fields.title,
58
+ ownerRole,
59
+ dependencies: existing?.dependencies ?? [],
60
+ status,
61
+ backlogItem: fields.backlogItem,
62
+ goal: fields.goal ?? existing?.goal,
63
+ acceptanceCriteria: fields.acceptanceCriteria ?? existing?.acceptanceCriteria,
64
+ risks: fields.risks ?? existing?.risks,
65
+ qaGate: existing?.qaGate ??
66
+ defaultQaPlanForImportedExecution(status, issue.tracker, issue.remoteId),
67
+ });
68
+ if (!options["dry-run"]) {
69
+ if (plan.action === "create") {
70
+ await addTask(taskInput, root);
71
+ if (status && status !== "pending") {
72
+ await updateTask({ id: taskInput.id, status }, root);
73
+ }
74
+ }
75
+ else if (plan.action === "update") {
76
+ await updateTask(taskInput, root);
77
+ }
78
+ await addEvidence({
79
+ task: plan.taskId,
80
+ role: "developer",
81
+ type: "report",
82
+ summary: `${issue.tracker} issue ${issue.remoteId} synchronized from normalized tracker adapter (${plan.action})`,
83
+ }, root);
84
+ }
85
+ const result = {
86
+ ...plan,
87
+ dryRun: Boolean(options["dry-run"]),
88
+ task: taskInput,
89
+ issue,
90
+ };
91
+ if (options.json) {
92
+ io.log(JSON.stringify(result, null, 2));
93
+ return;
94
+ }
95
+ io.log(`${plan.tracker} ${plan.remoteId} -> ${plan.taskId}: ${plan.action}`);
96
+ }
97
+ async function readIssuePayload(root, issueFile) {
98
+ const issuePath = resolveWorkspaceWritePath(root, path.normalize(issueFile));
99
+ return JSON.parse(await readFile(issuePath, "utf8"));
100
+ }
101
+ function parseTaskStatus(value) {
102
+ if (!value) {
103
+ return undefined;
104
+ }
105
+ const status = normalizeTaskStatus(value);
106
+ if (!status) {
107
+ throw new Error(`invalid task status: ${value}`);
108
+ }
109
+ return status;
110
+ }
111
+ function defaultQaPlanForImportedExecution(status, tracker, remoteId) {
112
+ if (status !== "ready" && status !== "in_progress") {
113
+ return undefined;
114
+ }
115
+ return {
116
+ plan: `Validate imported ${tracker} issue ${remoteId} against mapped acceptance criteria, regression risk, and synchronization evidence before release.`,
117
+ };
118
+ }
119
+ //# sourceMappingURL=tracker-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracker-commands.js","sourceRoot":"","sources":["../src/tracker-commands.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ export interface EstimateRecord {
8
8
  sizingLabel: SizingLabel;
9
9
  soloEstimateDays: number;
10
10
  aiUnguidedEstimateDays: number;
11
+ aiGuidedEstimateDays: number;
11
12
  confidence: EstimateConfidence;
12
13
  declaredBy: string;
13
14
  declaredAt: string;
@@ -17,9 +18,18 @@ export interface EstimateInput {
17
18
  sizingLabel: SizingLabel;
18
19
  soloEstimateDays: number;
19
20
  aiUnguidedEstimateDays: number;
21
+ aiGuidedEstimateDays: number;
20
22
  confidence: EstimateConfidence;
21
23
  declaredBy: string;
22
24
  }
25
+ export interface EstimateCalibration {
26
+ baselineEstimateDays: number;
27
+ historicalMedian: number | null;
28
+ variance: number | null;
29
+ calibrationNote: string;
30
+ sampleSize: number;
31
+ ignored: boolean;
32
+ }
23
33
  export interface BenchmarkQualitySignals {
24
34
  reviewCount: number;
25
35
  blockingReviews: number;
@@ -30,18 +40,30 @@ export interface BenchmarkQualitySignals {
30
40
  totalOutputTokens: number;
31
41
  estimatedCostUsd: number;
32
42
  }
43
+ export interface EffortBreakdown {
44
+ aiAutonomousMinutes: number;
45
+ aiSupervisedMinutes: number;
46
+ aiCalibrationBaselineMinutes: number;
47
+ humanReviewMinutes: number;
48
+ humanManualMinutes: number;
49
+ classification: "ai_autonomous" | "ai_supervised" | "human_manual" | "pending";
50
+ notes: string[];
51
+ }
33
52
  export interface BenchmarkResult {
34
53
  taskId: string;
35
54
  sizingLabel: SizingLabel;
36
55
  soloEstimateDays: number;
37
56
  aiUnguidedEstimateDays: number;
57
+ aiGuidedEstimateDays: number;
38
58
  actualSource: "phase-timeline" | "task-lifecycle" | "task-timestamps" | "none";
39
59
  actualDays: number | null;
40
60
  actualHours: number | null;
41
61
  vsSoloPct: number | null;
42
62
  vsAiUnguidedPct: number | null;
63
+ vsAiGuidedPct: number | null;
43
64
  qaIterations: number;
44
65
  phaseDurations: BenchmarkPhaseDuration[];
66
+ effortBreakdown: EffortBreakdown;
45
67
  quality: BenchmarkQualitySignals;
46
68
  status: "pending" | "complete";
47
69
  }
@@ -50,6 +72,7 @@ export interface BenchmarkSummary {
50
72
  totalWithActuals: number;
51
73
  avgVsSoloPct: number | null;
52
74
  avgVsAiUnguidedPct: number | null;
75
+ avgVsAiGuidedPct: number | null;
53
76
  }
54
77
  export interface VelocityWeek {
55
78
  week: string;
@@ -62,6 +85,7 @@ export interface VelocityReport {
62
85
  avgActualDaysPerStory: number | null;
63
86
  avgVsSoloPct: number | null;
64
87
  avgVsAiUnguidedPct: number | null;
88
+ avgVsAiGuidedPct: number | null;
65
89
  weeks: VelocityWeek[];
66
90
  trend: "improving" | "stable" | "declining" | "insufficient_data";
67
91
  }
@@ -54,7 +54,10 @@ export interface ModelProviderError {
54
54
  }
55
55
  export interface ProviderFailureDetail {
56
56
  provider: string;
57
+ code: "provider_error" | "timeout" | "permission_denied" | "policy_blocked";
57
58
  reason: string;
59
+ retryable: boolean;
60
+ attempts: number;
58
61
  }
59
62
  export interface ProviderFallbackResult {
60
63
  provider: string;
@@ -73,6 +76,10 @@ export interface ModelProvenanceInput {
73
76
  inputTokens: number;
74
77
  outputTokens: number;
75
78
  estimatedCostUsd: number;
79
+ usageSource?: "provider" | "runtime" | "estimated" | "unavailable";
80
+ costSource?: "provider" | "pricing_estimate" | "free" | "unavailable";
81
+ usageUnavailableRationale?: string;
82
+ costUnavailableRationale?: string;
76
83
  finishReason: ModelResponse["finishReason"];
77
84
  }
78
85
  export interface ModelProvenanceRecord extends ModelProvenanceInput {
@@ -102,6 +109,7 @@ export interface PhaseStructuredOutput {
102
109
  decisions: string[];
103
110
  evidence: string[];
104
111
  handoff: string;
112
+ noOpRationale?: string;
105
113
  architecturalConcerns?: {
106
114
  inherited: string[];
107
115
  selfImposed: string[];
@@ -145,12 +153,43 @@ export interface ProviderRouting {
145
153
  export interface WorkflowProvidersConfig {
146
154
  defaults: ProviderRouting;
147
155
  byRole: Record<string, ProviderRouting>;
156
+ profiles?: Record<string, ProviderRuntimeProfile>;
157
+ activeProfile?: string;
148
158
  }
149
159
  export interface ProviderPolicyConfig {
150
160
  allowedProviders?: string[];
151
161
  blockedProviders?: string[];
152
162
  allowVendorFallbackWithoutApproval?: boolean;
153
163
  }
164
+ export interface ProviderRuntimeProfile {
165
+ description?: string;
166
+ defaults?: ProviderRouting;
167
+ byRole: Record<string, ProviderRouting>;
168
+ budgets?: BudgetPolicy;
169
+ providerPolicy?: ProviderPolicyConfig;
170
+ requiredEnv?: string[];
171
+ }
172
+ export interface ProviderRuntimeProfileSummary {
173
+ name: string;
174
+ active: boolean;
175
+ description?: string;
176
+ roles: string[];
177
+ defaultProvider?: string;
178
+ defaultModel?: string;
179
+ requiredEnv: string[];
180
+ }
181
+ export interface ProviderProfileSmokeCheck {
182
+ scope: string;
183
+ provider: string;
184
+ model: string;
185
+ status: "pass" | "fail";
186
+ detail: string;
187
+ }
188
+ export interface ProviderProfileSmokeResult {
189
+ profile: string;
190
+ passed: boolean;
191
+ checks: ProviderProfileSmokeCheck[];
192
+ }
154
193
  export interface ProviderCredentialConfig {
155
194
  apiKeyFile?: string;
156
195
  apiKeyFileEnv?: string;
@@ -67,6 +67,7 @@ export interface RuntimeExecutorConfig {
67
67
  export interface RuntimeDelegationPolicy {
68
68
  mode: RuntimeDelegationMode;
69
69
  allowDirectProviderApi: boolean;
70
+ guardrails?: RuntimeDelegationGuardrails;
70
71
  }
71
72
  export interface RuntimeExecutionPolicy {
72
73
  defaults?: RuntimeExecutorConfig;
@@ -87,6 +88,59 @@ export interface RuntimeDelegationAssignment {
87
88
  allowedCommands: string[];
88
89
  expectedArtifacts: string[];
89
90
  }
91
+ export type RuntimeDelegationLimitAction = "queue" | "reject";
92
+ export interface RuntimeDelegationGuardrails {
93
+ maxConcurrentDelegates: number;
94
+ maxDelegationDepth: number;
95
+ maxSpawnsPerTask: number;
96
+ spawnBudgetTokens: number;
97
+ contextBudgetTokens: number;
98
+ timeoutMs: number;
99
+ staleClaimTtlMs: number;
100
+ allowNestedDelegation: boolean;
101
+ limitAction: RuntimeDelegationLimitAction;
102
+ handoffMaxChars: number;
103
+ }
104
+ export type RuntimeDelegationGuardrailStatus = "allow" | "queue" | "reject";
105
+ export interface RuntimeDelegationGuardrailEvaluation {
106
+ status: RuntimeDelegationGuardrailStatus;
107
+ reasons: string[];
108
+ policy: RuntimeDelegationGuardrails;
109
+ activeSessions: number;
110
+ requestedSpawns: number;
111
+ delegationDepth: number;
112
+ contextBudgetTokens: number;
113
+ spawnBudgetTokens: number;
114
+ staleSessions: string[];
115
+ }
116
+ export type RuntimeDelegationSessionStatus = "planned" | "spawned" | "active" | "suspended" | "completed" | "failed" | "timed_out" | "canceled" | "closed";
117
+ export interface RuntimeDelegationSessionSummary {
118
+ sessionId: string;
119
+ taskId: string;
120
+ runtime?: RuntimeExecutionId | string;
121
+ mode?: RuntimeDelegationMode;
122
+ roles: string[];
123
+ status: RuntimeDelegationSessionStatus;
124
+ lastEventType: string;
125
+ updatedAt: string;
126
+ ageMs: number;
127
+ active: boolean;
128
+ stale: boolean;
129
+ artifacts: string[];
130
+ }
131
+ export interface RuntimeDelegationOperationsReport {
132
+ generatedAt: string;
133
+ taskId?: string;
134
+ policy: RuntimeDelegationGuardrails;
135
+ counts: {
136
+ total: number;
137
+ active: number;
138
+ stale: number;
139
+ suspended: number;
140
+ terminal: number;
141
+ };
142
+ sessions: RuntimeDelegationSessionSummary[];
143
+ }
90
144
  export interface RuntimeBrief {
91
145
  taskId: string;
92
146
  runtime: RuntimeExecutionId;
@@ -98,6 +152,7 @@ export interface RuntimeBrief {
98
152
  }
99
153
  export interface RuntimeDelegationPacket {
100
154
  taskId: string;
155
+ sessionId: string;
101
156
  runtime: RuntimeExecutionId;
102
157
  artifact: string;
103
158
  content: string;
@@ -106,6 +161,7 @@ export interface RuntimeDelegationPacket {
106
161
  assignments: RuntimeDelegationAssignment[];
107
162
  requiresApproval: boolean;
108
163
  contextBudget: ContextBudgetMetadata;
164
+ guardrails: RuntimeDelegationGuardrailEvaluation;
109
165
  }
110
166
  export interface RuntimeInvocationPlan {
111
167
  runtime: RuntimeExecutionId;
@@ -111,6 +111,8 @@ export interface AgentLessonInput {
111
111
  export interface AgentLesson extends AgentLessonInput {
112
112
  id: string;
113
113
  timestamp: string;
114
+ archivedAt?: string;
115
+ archiveReason?: string;
114
116
  }
115
117
  export type MemoryHookPoint = "before_plan" | "before_implementation" | "before_handoff" | "before_final" | "after_failure";
116
118
  export interface MemoryLessonSnippet {
@@ -108,6 +108,7 @@ export interface UpdateTaskInput {
108
108
  testStrategy?: string;
109
109
  status?: TaskStatus;
110
110
  blockedReason?: string;
111
+ qaGate?: QaGateMetadata;
111
112
  claimedAt?: string;
112
113
  doneAt?: string;
113
114
  }
@@ -149,6 +150,11 @@ export interface EvidenceInput {
149
150
  path?: string | boolean | string[];
150
151
  command?: string | boolean | string[];
151
152
  exitCode?: string | boolean | string[];
153
+ surface?: string | boolean | string[];
154
+ assertions?: string | boolean | string[];
155
+ externalValidation?: string | boolean | string[];
156
+ deferredOwner?: string | boolean | string[];
157
+ deferredRationale?: string | boolean | string[];
152
158
  }
153
159
  export interface PlaywrightEvidenceInput {
154
160
  task: string;
@@ -41,6 +41,23 @@ export interface WorkflowGateApprovalResult {
41
41
  approvedAt: string;
42
42
  alreadyApproved: boolean;
43
43
  }
44
+ export type WorkflowGateDecisionResult = "approve" | "block" | "changes";
45
+ export interface WorkflowGateDecisionInput {
46
+ runId: string;
47
+ gateId: string;
48
+ reviewer: string;
49
+ rationale: string;
50
+ result: WorkflowGateDecisionResult;
51
+ }
52
+ export interface WorkflowGateDecisionRecord {
53
+ run: AutonomousRun;
54
+ gateId: string;
55
+ reviewer: string;
56
+ rationale: string;
57
+ result: WorkflowGateDecisionResult;
58
+ decidedAt: string;
59
+ alreadyApproved: boolean;
60
+ }
44
61
  export interface AutonomousRun {
45
62
  id: string;
46
63
  taskId: string;
package/dist/types.d.ts CHANGED
@@ -3,12 +3,12 @@ import type { ModelProvenanceRecord, TelemetryConsentState } from "./types/model
3
3
  import type { CollaborationFlowRecommendation, MemoryPacket, SkillPlan, SkillRenderTarget, WorkflowTemplateSelection } from "./types/skills.js";
4
4
  import type { EventEntry, LockEntry, Task, TaskStatus } from "./types/tasks.js";
5
5
  export type { ContextBudgetMetadata, ContextBudgetSection, } from "./types/context.js";
6
- export type { BudgetLimit, BudgetPolicy, ConfiguredProviderSummary, GitHubConfig, GitHubNotificationConfig, ModelMessage, ModelProvider, ModelProviderCapabilities, ModelProviderError, ModelProvenanceInput, ModelProvenanceRecord, ModelRequest, ModelResponse, ModelStreamEvent, NotificationChannelResult, NotificationsConfig, PhaseExecutionMode, PhaseExecutorPhase, PhaseLlmResult, PhaseOutcome, PhaseStructuredOutput, ProviderFallbackResult, ProviderFailureDetail, ProviderCredentialConfig, ProviderCredentialsConfig, ProviderPolicyConfig, ProviderRouting, SlackNotificationConfig, TelemetryConsentState, TelemetryLevel, ToolConfig, WorkflowConfig, WorkflowProvidersConfig, } from "./types/model-config.js";
7
- export type { RuntimeAdapter, RuntimeAdapterCatalogEntry, RuntimeAdapterKind, RuntimeBrief, RuntimeDelegationAssignment, RuntimeDelegationMode, RuntimeDelegationPacket, RuntimeDelegationPolicy, RuntimeExecutionAdapter, RuntimeExecutionCapabilities, RuntimeExecutionId, RuntimeExecutionPolicy, RuntimeExecutorConfig, RuntimeInvocationPlan, RuntimeSelection, RuntimeSubagentCapabilities, } from "./types/runtime.js";
6
+ export type { BudgetLimit, BudgetPolicy, ConfiguredProviderSummary, GitHubConfig, GitHubNotificationConfig, ModelMessage, ModelProvider, ModelProviderCapabilities, ModelProviderError, ModelProvenanceInput, ModelProvenanceRecord, ModelRequest, ModelResponse, ModelStreamEvent, NotificationChannelResult, NotificationsConfig, PhaseExecutionMode, PhaseExecutorPhase, PhaseLlmResult, PhaseOutcome, PhaseStructuredOutput, ProviderFallbackResult, ProviderFailureDetail, ProviderProfileSmokeCheck, ProviderProfileSmokeResult, ProviderCredentialConfig, ProviderCredentialsConfig, ProviderPolicyConfig, ProviderRuntimeProfile, ProviderRuntimeProfileSummary, ProviderRouting, SlackNotificationConfig, TelemetryConsentState, TelemetryLevel, ToolConfig, WorkflowConfig, WorkflowProvidersConfig, } from "./types/model-config.js";
7
+ export type { RuntimeAdapter, RuntimeAdapterCatalogEntry, RuntimeAdapterKind, RuntimeBrief, RuntimeDelegationAssignment, RuntimeDelegationGuardrailEvaluation, RuntimeDelegationGuardrailStatus, RuntimeDelegationGuardrails, RuntimeDelegationLimitAction, RuntimeDelegationMode, RuntimeDelegationOperationsReport, RuntimeDelegationPacket, RuntimeDelegationPolicy, RuntimeDelegationSessionStatus, RuntimeDelegationSessionSummary, RuntimeExecutionAdapter, RuntimeExecutionCapabilities, RuntimeExecutionId, RuntimeExecutionPolicy, RuntimeExecutorConfig, RuntimeInvocationPlan, RuntimeSelection, RuntimeSubagentCapabilities, } from "./types/runtime.js";
8
8
  export type { AgentLesson, AgentLessonInput, CollaborationFlow, CollaborationFlowRecommendation, CollaborationFlowStep, MemoryHookPoint, MemoryLessonSnippet, MemoryPacket, MemoryPromptSnippet, MemorySectionReport, Skill, SkillLoadBudget, SkillPlan, SkillPlanItem, SkillRenderTarget, PhasePlaybook, SkillValidationReport, RenderedWorkflowTemplate, WorkflowTemplate, WorkflowTemplateSelection, } from "./types/skills.js";
9
- export { SIZING_LABELS, type BenchmarkQualitySignals, type BenchmarkResult, type BenchmarkSummary, type BurndownPoint, type BurndownSeries, type CalibrationReport, type CalibrationRoleReport, type EstimateConfidence, type EstimateInput, type EstimateRecord, type SizingLabel, type SprintRecord, type SprintVelocity, type SprintVelocityReport, type TaskEstimateBreakdown, type VelocityReport, type VelocityWeek, } from "./types/metrics.js";
9
+ export { SIZING_LABELS, type BenchmarkQualitySignals, type BenchmarkResult, type BenchmarkSummary, type BurndownPoint, type BurndownSeries, type CalibrationReport, type CalibrationRoleReport, type EffortBreakdown, type EstimateCalibration, type EstimateConfidence, type EstimateInput, type EstimateRecord, type SizingLabel, type SprintRecord, type SprintVelocity, type SprintVelocityReport, type TaskEstimateBreakdown, type VelocityReport, type VelocityWeek, } from "./types/metrics.js";
10
10
  export type { AddTaskInput, ArchitectureApproval, ArtifactResult, ClaimLockInput, DecisionInput, DecisionRecord, EventEntry, EventInput, EvidenceInput, EvidenceType, ExternalTaskReferences, HandoffInput, LockEntry, MechanicalOverride, PlaywrightEvidenceInput, QaGateMetadata, ReviewInput, ReviewResult, RiskAcceptance, RiskGateMetadata, RiskImpactArea, SetupAgentsTaskReference, Severity, Task, TaskStatus, UpdateTaskInput, } from "./types/tasks.js";
11
- export type { AutonomousGateMode, AutonomousPhase, AutonomousPhaseStatus, AutonomousRun, AutonomousRunResult, BenchmarkPhaseDuration, ClarificationAnswerInput, ClarificationInput, ClarificationRecord, ClarificationStatus, ClarificationTarget, PhaseProviderProgress, WorkflowGateApprovalInput, WorkflowGateApprovalResult, WorkflowRunMode, } from "./types/workflow-run.js";
11
+ export type { AutonomousGateMode, AutonomousPhase, AutonomousPhaseStatus, AutonomousRun, AutonomousRunResult, BenchmarkPhaseDuration, ClarificationAnswerInput, ClarificationInput, ClarificationRecord, ClarificationStatus, ClarificationTarget, PhaseProviderProgress, WorkflowGateApprovalInput, WorkflowGateApprovalResult, WorkflowGateDecisionInput, WorkflowGateDecisionRecord, WorkflowGateDecisionResult, WorkflowRunMode, } from "./types/workflow-run.js";
12
12
  export type WorkspaceClassificationKind = "project" | "advisory" | "unsafe" | "unknown";
13
13
  export type WorkspaceWritePolicy = "allow" | "confirm_required" | "blocked";
14
14
  export interface WorkspaceClassification {
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAiGA,OAAO,EACL,aAAa,GAkBd,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AA4GA,OAAO,EACL,aAAa,GAoBd,MAAM,oBAAoB,CAAC"}