@jterrats/open-orchestra 0.1.0 → 0.2.1

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 (187) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/README.md +17 -2
  3. package/dist/assets/web-console.js +743 -0
  4. package/dist/cli.js +157 -4
  5. package/dist/cli.js.map +1 -1
  6. package/dist/collaboration-flows.d.ts +5 -0
  7. package/dist/collaboration-flows.js +256 -0
  8. package/dist/collaboration-flows.js.map +1 -0
  9. package/dist/command-manifest.d.ts +11 -0
  10. package/dist/command-manifest.js +52 -0
  11. package/dist/command-manifest.js.map +1 -0
  12. package/dist/commands.d.ts +31 -0
  13. package/dist/commands.js +644 -2
  14. package/dist/commands.js.map +1 -1
  15. package/dist/constants.d.ts +4 -0
  16. package/dist/constants.js +22 -0
  17. package/dist/constants.js.map +1 -1
  18. package/dist/defaults.d.ts +7 -11
  19. package/dist/defaults.js +7 -625
  20. package/dist/defaults.js.map +1 -1
  21. package/dist/delegation-decision.d.ts +14 -0
  22. package/dist/delegation-decision.js +391 -0
  23. package/dist/delegation-decision.js.map +1 -0
  24. package/dist/detect-commands.d.ts +3 -0
  25. package/dist/detect-commands.js +28 -0
  26. package/dist/detect-commands.js.map +1 -0
  27. package/dist/diagram-validation.d.ts +36 -0
  28. package/dist/diagram-validation.js +118 -0
  29. package/dist/diagram-validation.js.map +1 -0
  30. package/dist/fs-utils.d.ts +2 -0
  31. package/dist/fs-utils.js +75 -6
  32. package/dist/fs-utils.js.map +1 -1
  33. package/dist/health-checks.d.ts +28 -0
  34. package/dist/health-checks.js +219 -0
  35. package/dist/health-checks.js.map +1 -0
  36. package/dist/health-commands.d.ts +2 -0
  37. package/dist/health-commands.js +18 -0
  38. package/dist/health-commands.js.map +1 -0
  39. package/dist/instruction-apply.d.ts +34 -0
  40. package/dist/instruction-apply.js +150 -0
  41. package/dist/instruction-apply.js.map +1 -0
  42. package/dist/instruction-blocks.d.ts +22 -0
  43. package/dist/instruction-blocks.js +120 -0
  44. package/dist/instruction-blocks.js.map +1 -0
  45. package/dist/instruction-imports.d.ts +12 -0
  46. package/dist/instruction-imports.js +45 -0
  47. package/dist/instruction-imports.js.map +1 -0
  48. package/dist/instruction-stale.d.ts +9 -0
  49. package/dist/instruction-stale.js +106 -0
  50. package/dist/instruction-stale.js.map +1 -0
  51. package/dist/instruction-types.d.ts +66 -0
  52. package/dist/instruction-types.js +2 -0
  53. package/dist/instruction-types.js.map +1 -0
  54. package/dist/instruction-updates.d.ts +4 -0
  55. package/dist/instruction-updates.js +5 -0
  56. package/dist/instruction-updates.js.map +1 -0
  57. package/dist/knowledge-base.d.ts +10 -0
  58. package/dist/knowledge-base.js +117 -0
  59. package/dist/knowledge-base.js.map +1 -0
  60. package/dist/mcp-oauth-proxy.d.ts +39 -0
  61. package/dist/mcp-oauth-proxy.js +80 -0
  62. package/dist/mcp-oauth-proxy.js.map +1 -0
  63. package/dist/pr-review.d.ts +20 -0
  64. package/dist/pr-review.js +142 -0
  65. package/dist/pr-review.js.map +1 -0
  66. package/dist/project-detection.d.ts +22 -0
  67. package/dist/project-detection.js +174 -0
  68. package/dist/project-detection.js.map +1 -0
  69. package/dist/prompt-registry.d.ts +56 -0
  70. package/dist/prompt-registry.js +163 -0
  71. package/dist/prompt-registry.js.map +1 -0
  72. package/dist/release-candidate.d.ts +41 -0
  73. package/dist/release-candidate.js +196 -0
  74. package/dist/release-candidate.js.map +1 -0
  75. package/dist/release-commands.d.ts +4 -0
  76. package/dist/release-commands.js +50 -0
  77. package/dist/release-commands.js.map +1 -0
  78. package/dist/roles/ai-support-roles.d.ts +11 -0
  79. package/dist/roles/ai-support-roles.js +67 -0
  80. package/dist/roles/ai-support-roles.js.map +1 -0
  81. package/dist/roles/core-roles.d.ts +11 -0
  82. package/dist/roles/core-roles.js +144 -0
  83. package/dist/roles/core-roles.js.map +1 -0
  84. package/dist/roles/engineering-roles.d.ts +11 -0
  85. package/dist/roles/engineering-roles.js +176 -0
  86. package/dist/roles/engineering-roles.js.map +1 -0
  87. package/dist/roles/governance-roles.d.ts +11 -0
  88. package/dist/roles/governance-roles.js +117 -0
  89. package/dist/roles/governance-roles.js.map +1 -0
  90. package/dist/roles/index.d.ts +11 -0
  91. package/dist/roles/index.js +17 -0
  92. package/dist/roles/index.js.map +1 -0
  93. package/dist/roles/platform-ops-roles.d.ts +11 -0
  94. package/dist/roles/platform-ops-roles.js +158 -0
  95. package/dist/roles/platform-ops-roles.js.map +1 -0
  96. package/dist/roles/qa-ux-roles.d.ts +11 -0
  97. package/dist/roles/qa-ux-roles.js +193 -0
  98. package/dist/roles/qa-ux-roles.js.map +1 -0
  99. package/dist/roles/release-ops-roles.d.ts +11 -0
  100. package/dist/roles/release-ops-roles.js +109 -0
  101. package/dist/roles/release-ops-roles.js.map +1 -0
  102. package/dist/runtime-adapters.d.ts +6 -0
  103. package/dist/runtime-adapters.js +88 -0
  104. package/dist/runtime-adapters.js.map +1 -0
  105. package/dist/runtime-bootstrap.d.ts +12 -0
  106. package/dist/runtime-bootstrap.js +85 -0
  107. package/dist/runtime-bootstrap.js.map +1 -0
  108. package/dist/skills.d.ts +36 -0
  109. package/dist/skills.js +665 -0
  110. package/dist/skills.js.map +1 -0
  111. package/dist/subagent-protocol.d.ts +41 -0
  112. package/dist/subagent-protocol.js +179 -0
  113. package/dist/subagent-protocol.js.map +1 -0
  114. package/dist/telemetry-consent.d.ts +24 -0
  115. package/dist/telemetry-consent.js +95 -0
  116. package/dist/telemetry-consent.js.map +1 -0
  117. package/dist/telemetry-export.d.ts +14 -0
  118. package/dist/telemetry-export.js +126 -0
  119. package/dist/telemetry-export.js.map +1 -0
  120. package/dist/telemetry-records.d.ts +3 -0
  121. package/dist/telemetry-records.js +96 -0
  122. package/dist/telemetry-records.js.map +1 -0
  123. package/dist/telemetry-redaction.d.ts +9 -0
  124. package/dist/telemetry-redaction.js +55 -0
  125. package/dist/telemetry-redaction.js.map +1 -0
  126. package/dist/telemetry-types.d.ts +52 -0
  127. package/dist/telemetry-types.js +2 -0
  128. package/dist/telemetry-types.js.map +1 -0
  129. package/dist/telemetry.d.ts +4 -0
  130. package/dist/telemetry.js +4 -0
  131. package/dist/telemetry.js.map +1 -0
  132. package/dist/types.d.ts +176 -1
  133. package/dist/validation.d.ts +3 -1
  134. package/dist/validation.js +28 -5
  135. package/dist/validation.js.map +1 -1
  136. package/dist/web-api.js +167 -3
  137. package/dist/web-api.js.map +1 -1
  138. package/dist/web-console.js +6 -160
  139. package/dist/web-console.js.map +1 -1
  140. package/dist/workflow-gates.js +4 -2
  141. package/dist/workflow-gates.js.map +1 -1
  142. package/dist/workflow-services.js +125 -67
  143. package/dist/workflow-services.js.map +1 -1
  144. package/dist/workflow-templates.d.ts +10 -0
  145. package/dist/workflow-templates.js +141 -0
  146. package/dist/workflow-templates.js.map +1 -0
  147. package/dist/workspace-classification.d.ts +5 -0
  148. package/dist/workspace-classification.js +127 -0
  149. package/dist/workspace-classification.js.map +1 -0
  150. package/dist/workspace-validator.js +11 -1
  151. package/dist/workspace-validator.js.map +1 -1
  152. package/dist/workspace.d.ts +8 -4
  153. package/dist/workspace.js +111 -4
  154. package/dist/workspace.js.map +1 -1
  155. package/docs/dev-team-specialist-role-profiles.md +171 -0
  156. package/docs/mcp-oauth-proxy-evaluation.md +44 -0
  157. package/docs/multi-agent-orchestrator-backlog.md +413 -1
  158. package/docs/open-orchestra-dogfooding-findings.md +66 -0
  159. package/docs/orchestra-mvp.md +46 -1
  160. package/docs/runtime-adapters.md +86 -0
  161. package/docs/runtime-llm-flow.md +124 -0
  162. package/docs/setup-agents-dogfooding-findings.md +101 -0
  163. package/docs/skill-loading-strategy.md +114 -0
  164. package/docs/source-of-truth-and-agent-learning.md +83 -0
  165. package/package.json +9 -5
  166. package/rules/agent-roles.mdc +30 -0
  167. package/rules/ai-assisted-development.mdc +22 -0
  168. package/skills/agent-learning/SKILL.md +24 -0
  169. package/skills/agent-learning/manifest.json +40 -0
  170. package/skills/backlog-sync/SKILL.md +24 -0
  171. package/skills/backlog-sync/manifest.json +41 -0
  172. package/skills/diagram-export/SKILL.md +35 -0
  173. package/skills/diagram-export/manifest.json +40 -0
  174. package/skills/model-evaluation/SKILL.md +25 -0
  175. package/skills/model-evaluation/manifest.json +41 -0
  176. package/skills/playwright-evidence/SKILL.md +28 -0
  177. package/skills/playwright-evidence/manifest.json +46 -0
  178. package/skills/pr-review/SKILL.md +23 -0
  179. package/skills/pr-review/manifest.json +43 -0
  180. package/skills/prompt-registry/SKILL.md +24 -0
  181. package/skills/prompt-registry/manifest.json +45 -0
  182. package/skills/release-readiness/SKILL.md +25 -0
  183. package/skills/release-readiness/manifest.json +45 -0
  184. package/skills/source-of-truth/SKILL.md +24 -0
  185. package/skills/source-of-truth/manifest.json +47 -0
  186. package/skills/static-analysis/SKILL.md +26 -0
  187. package/skills/static-analysis/manifest.json +46 -0
@@ -0,0 +1,96 @@
1
+ import { FILES } from "./constants.js";
2
+ import { readJson, resolveWorkflowPath } from "./fs-utils.js";
3
+ import { planSkillsForTask } from "./skills.js";
4
+ import { readEvents } from "./workspace.js";
5
+ import { consentReference } from "./telemetry-consent.js";
6
+ export async function buildTelemetryRecords(root, consent, recordType) {
7
+ const tasks = await readJson(resolveWorkflowPath(root, FILES.tasks), []);
8
+ const events = await readEvents(root);
9
+ const provenance = events
10
+ .filter((event) => event.type === "MODEL_PROVENANCE_RECORDED")
11
+ .map((event) => event.metadata);
12
+ const records = [];
13
+ for (const task of tasks) {
14
+ const skills = await planSkillsForTask(task.id, root);
15
+ const taskEvents = events.filter((event) => event.taskId === task.id);
16
+ const qualityLabels = qualityLabelsForTask(task, taskEvents);
17
+ const promptFields = promptFieldsForLevel(consent.level, task);
18
+ records.push(removeUndefinedTelemetryRecord({
19
+ schemaVersion: 1,
20
+ recordType,
21
+ taskId: task.id,
22
+ taskTitle: task.title,
23
+ taskStatus: task.status,
24
+ ownerRole: task.ownerRole,
25
+ selectedRoles: Array.from(new Set([task.ownerRole, ...taskEvents.map((event) => event.actor)])),
26
+ selectedSkills: skills.selected.map((item) => item.skill.id),
27
+ sourceGroups: skills.sourceGroups,
28
+ providerMetadata: provenance
29
+ .filter((record) => record.task === task.id)
30
+ .map((record) => ({
31
+ role: record.role,
32
+ provider: record.provider,
33
+ model: record.model,
34
+ promptId: record.promptId,
35
+ responseId: record.responseId,
36
+ inputTokens: record.inputTokens,
37
+ outputTokens: record.outputTokens,
38
+ estimatedCostUsd: record.estimatedCostUsd,
39
+ })),
40
+ qualityOutcome: {
41
+ reviews: taskEvents.filter((event) => event.type === "REVIEW_RECORDED").length,
42
+ evidence: taskEvents.filter((event) => event.type === "EVIDENCE_ADDED").length,
43
+ gatesPassed: taskEvents.filter((event) => event.type === "GATE_PASSED").length,
44
+ gatesBlocked: taskEvents.filter((event) => event.type === "GATE_BLOCKED").length,
45
+ },
46
+ ...promptFields,
47
+ expectedBehavior: recordType === "eval-dataset-item"
48
+ ? (task.acceptanceCriteria ?? []).join("; ")
49
+ : undefined,
50
+ qualityLabels,
51
+ consent: consentReference(consent),
52
+ redaction: { redactedFields: [], blockedFields: [] },
53
+ }));
54
+ }
55
+ return records;
56
+ }
57
+ function promptFieldsForLevel(level, task) {
58
+ if (level === "prompt-summary" ||
59
+ level === "prompt-sample" ||
60
+ level === "eval-dataset") {
61
+ const promptSummary = [
62
+ task.goal,
63
+ task.scope,
64
+ task.blockedReason,
65
+ ...(task.acceptanceCriteria ?? []),
66
+ ]
67
+ .filter(Boolean)
68
+ .join("; ");
69
+ if (level === "prompt-sample" || level === "eval-dataset") {
70
+ return { promptSummary, promptSample: promptSummary };
71
+ }
72
+ return { promptSummary };
73
+ }
74
+ return {};
75
+ }
76
+ function qualityLabelsForTask(task, events) {
77
+ const labels = new Set();
78
+ if (task.status === "approved" || task.status === "done") {
79
+ labels.add("approved");
80
+ }
81
+ if (events.some((event) => event.type === "REVIEW_RECORDED" &&
82
+ event.summary.toLowerCase().includes("approve"))) {
83
+ labels.add("approved");
84
+ }
85
+ if (events.some((event) => event.type === "GATE_BLOCKED")) {
86
+ labels.add("blocked");
87
+ }
88
+ if (events.some((event) => event.type === "EVIDENCE_ADDED")) {
89
+ labels.add("evidence-backed");
90
+ }
91
+ return Array.from(labels);
92
+ }
93
+ function removeUndefinedTelemetryRecord(value) {
94
+ return Object.fromEntries(Object.entries(value).filter((entry) => entry[1] !== undefined));
95
+ }
96
+ //# sourceMappingURL=telemetry-records.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-records.js","sourceRoot":"","sources":["../src/telemetry-records.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export interface TelemetryRedactionReport {
2
+ redactedFields: string[];
3
+ blockedFields: string[];
4
+ }
5
+ export declare function redactTelemetryData<T>(value: T): {
6
+ value: T;
7
+ report: TelemetryRedactionReport;
8
+ };
9
+ export declare function mergeRedactionReports(reports: TelemetryRedactionReport[]): TelemetryRedactionReport;
@@ -0,0 +1,55 @@
1
+ export function redactTelemetryData(value) {
2
+ const report = {
3
+ redactedFields: [],
4
+ blockedFields: [],
5
+ };
6
+ const redacted = redactValue(value, [], report);
7
+ return { value: redacted, report };
8
+ }
9
+ function redactValue(value, pathSegments, report) {
10
+ if (typeof value === "string") {
11
+ return redactString(value, pathSegments.join("."), report);
12
+ }
13
+ if (Array.isArray(value)) {
14
+ return value.map((item, index) => redactValue(item, pathSegments.concat(String(index)), report));
15
+ }
16
+ if (value && typeof value === "object") {
17
+ return Object.fromEntries(Object.entries(value).map(([key, entry]) => [
18
+ key,
19
+ redactValue(entry, pathSegments.concat(key), report),
20
+ ]));
21
+ }
22
+ return value;
23
+ }
24
+ function redactString(value, fieldPath, report) {
25
+ const lower = fieldPath.toLowerCase();
26
+ if (lower.includes(".env") || lower.includes("credential")) {
27
+ report.blockedFields.push(fieldPath);
28
+ return "[BLOCKED]";
29
+ }
30
+ let output = value;
31
+ const replacements = [
32
+ [/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}/gi, "[REDACTED_EMAIL]"],
33
+ [/(sk|ghp|github_pat)_[A-Za-z0-9_-]{12,}/g, "[REDACTED_TOKEN]"],
34
+ [/Bearer\s+[A-Za-z0-9._-]+/gi, "Bearer [REDACTED_TOKEN]"],
35
+ [
36
+ /\b[A-Za-z0-9_-]{24,}\.[A-Za-z0-9_-]{24,}\.[A-Za-z0-9_-]{24,}\b/g,
37
+ "[REDACTED_TOKEN]",
38
+ ],
39
+ [/\/Users\/[^\s/]+/g, "/Users/[REDACTED_USER]"],
40
+ ];
41
+ for (const [pattern, replacement] of replacements) {
42
+ output = output.replace(pattern, replacement);
43
+ }
44
+ if (output !== value) {
45
+ report.redactedFields.push(fieldPath);
46
+ }
47
+ return output;
48
+ }
49
+ export function mergeRedactionReports(reports) {
50
+ return {
51
+ redactedFields: Array.from(new Set(reports.flatMap((report) => report.redactedFields))),
52
+ blockedFields: Array.from(new Set(reports.flatMap((report) => report.blockedFields))),
53
+ };
54
+ }
55
+ //# sourceMappingURL=telemetry-redaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-redaction.js","sourceRoot":"","sources":["../src/telemetry-redaction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import type { TelemetryLevel } from "./types.js";
2
+ import type { TelemetryConsentReference } from "./telemetry-consent.js";
3
+ import type { TelemetryRedactionReport } from "./telemetry-redaction.js";
4
+ export interface TelemetryExportRecord {
5
+ schemaVersion: 1;
6
+ recordType: "workflow-task" | "eval-dataset-item";
7
+ taskId: string;
8
+ taskTitle: string;
9
+ taskStatus: string;
10
+ ownerRole: string;
11
+ selectedRoles: string[];
12
+ selectedSkills: string[];
13
+ sourceGroups: string[];
14
+ providerMetadata: Array<{
15
+ role: string;
16
+ provider: string;
17
+ model: string;
18
+ promptId: string;
19
+ responseId: string;
20
+ inputTokens: number;
21
+ outputTokens: number;
22
+ estimatedCostUsd: number;
23
+ }>;
24
+ qualityOutcome: {
25
+ reviews: number;
26
+ evidence: number;
27
+ gatesPassed: number;
28
+ gatesBlocked: number;
29
+ };
30
+ promptSummary?: string;
31
+ promptSample?: string;
32
+ expectedBehavior?: string;
33
+ qualityLabels?: string[];
34
+ consent: TelemetryConsentReference;
35
+ redaction: TelemetryRedactionReport;
36
+ }
37
+ export interface TelemetryExportSummary {
38
+ dryRun: boolean;
39
+ level: TelemetryLevel;
40
+ file?: string;
41
+ recordCount: number;
42
+ redaction: TelemetryRedactionReport;
43
+ }
44
+ export interface TelemetrySubmissionAudit {
45
+ endpoint: string;
46
+ file: string;
47
+ fileHash: string;
48
+ consent: TelemetryConsentReference;
49
+ submittedAt: string;
50
+ result: "recorded" | "failed";
51
+ message: string;
52
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=telemetry-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-types.js","sourceRoot":"","sources":["../src/telemetry-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export * from "./telemetry-consent.js";
2
+ export * from "./telemetry-redaction.js";
3
+ export * from "./telemetry-export.js";
4
+ export type * from "./telemetry-types.js";
@@ -0,0 +1,4 @@
1
+ export * from "./telemetry-consent.js";
2
+ export * from "./telemetry-redaction.js";
3
+ export * from "./telemetry-export.js";
4
+ //# sourceMappingURL=telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC"}
package/dist/types.d.ts CHANGED
@@ -2,6 +2,133 @@ export type TaskStatus = "pending" | "ready" | "in_progress" | "blocked" | "revi
2
2
  export type ReviewResult = "approve" | "block" | "changes";
3
3
  export type Severity = "info" | "low" | "medium" | "high" | "critical";
4
4
  export type EvidenceType = "command" | "file" | "screenshot" | "trace" | "video" | "log" | "report";
5
+ export type SkillLoadBudget = "small" | "normal" | "large";
6
+ export type SkillRenderTarget = "generic" | "claude" | "cursor" | "codex" | "vscode" | "windsurf";
7
+ export type RuntimeAdapterKind = "llm" | "ide" | "cli";
8
+ export interface RuntimeAdapter {
9
+ target: SkillRenderTarget;
10
+ label: string;
11
+ kind: RuntimeAdapterKind;
12
+ defaultInstructionFiles: string[];
13
+ supportsStructuredPayload: boolean;
14
+ supportsManagedBlocks: boolean;
15
+ supportsImports: boolean;
16
+ guidance: string;
17
+ }
18
+ export type WorkspaceClassificationKind = "project" | "advisory" | "unsafe" | "unknown";
19
+ export type WorkspaceWritePolicy = "allow" | "confirm_required" | "blocked";
20
+ export interface WorkspaceClassification {
21
+ root: string;
22
+ normalizedRoot: string;
23
+ kind: WorkspaceClassificationKind;
24
+ confidence: "high" | "medium" | "low";
25
+ signals: string[];
26
+ reasons: string[];
27
+ writePolicy: WorkspaceWritePolicy;
28
+ recommendedAction: string;
29
+ supportedTargets: SkillRenderTarget[];
30
+ }
31
+ export interface Skill {
32
+ id: string;
33
+ name: string;
34
+ summary: string;
35
+ triggers: string[];
36
+ roles: string[];
37
+ capabilities: string[];
38
+ riskAreas: string[];
39
+ sourceGroups: string[];
40
+ entry: string;
41
+ assets: string[];
42
+ evidence: EvidenceType[];
43
+ loadBudget: SkillLoadBudget;
44
+ instructions: string[];
45
+ }
46
+ export interface SkillPlanItem {
47
+ skill: Skill;
48
+ score: number;
49
+ rationale: string[];
50
+ }
51
+ export interface SkillPlan {
52
+ taskId: string;
53
+ selected: SkillPlanItem[];
54
+ skipped: SkillPlanItem[];
55
+ sourceGroups: string[];
56
+ }
57
+ export interface SkillValidationReport {
58
+ valid: boolean;
59
+ errors: string[];
60
+ warnings: string[];
61
+ }
62
+ export interface CollaborationFlowStep {
63
+ from: string;
64
+ to: string;
65
+ purpose: string;
66
+ requiredContext: string[];
67
+ requiredArtifacts: string[];
68
+ exitCriteria: string[];
69
+ }
70
+ export interface CollaborationFlow {
71
+ id: string;
72
+ name: string;
73
+ summary: string;
74
+ triggers: string[];
75
+ roles: string[];
76
+ riskAreas: string[];
77
+ requiredContext: string[];
78
+ requiredArtifacts: string[];
79
+ exitCriteria: string[];
80
+ optionalReviewers: string[];
81
+ steps: CollaborationFlowStep[];
82
+ }
83
+ export interface CollaborationFlowRecommendation {
84
+ flow: CollaborationFlow;
85
+ score: number;
86
+ rationale: string[];
87
+ missingArtifacts: string[];
88
+ requiredHandoffFields: string[];
89
+ optionalReviewers: string[];
90
+ }
91
+ export interface WorkflowTemplate {
92
+ id: string;
93
+ name: string;
94
+ summary: string;
95
+ triggers: string[];
96
+ roles: string[];
97
+ riskAreas: string[];
98
+ inputs: string[];
99
+ outputs: string[];
100
+ evidenceRequirements: EvidenceType[];
101
+ gates: string[];
102
+ compatibleSkills: string[];
103
+ steps: string[];
104
+ }
105
+ export interface WorkflowTemplateSelection {
106
+ template: WorkflowTemplate;
107
+ score: number;
108
+ rationale: string[];
109
+ missingEvidence: EvidenceType[];
110
+ }
111
+ export interface RenderedWorkflowTemplate {
112
+ target: SkillRenderTarget;
113
+ taskId?: string;
114
+ selected: WorkflowTemplateSelection[];
115
+ content: string;
116
+ }
117
+ export interface AgentLessonInput {
118
+ taskId?: string;
119
+ actor: string;
120
+ operation: string;
121
+ failedAction: string;
122
+ errorSignature: string;
123
+ rootCause: string;
124
+ fix: string;
125
+ prevention: string;
126
+ appliesTo: string[];
127
+ verifiedBy: string[];
128
+ }
129
+ export interface AgentLesson extends AgentLessonInput {
130
+ timestamp: string;
131
+ }
5
132
  export interface Role {
6
133
  id: string;
7
134
  name: string;
@@ -28,7 +155,7 @@ export interface QaGateMetadata {
28
155
  deferredRationale?: string;
29
156
  deferredOwner?: string;
30
157
  }
31
- export type RiskImpactArea = "security" | "sre" | "dba" | "devops" | "compliance" | "ux";
158
+ export type RiskImpactArea = "security" | "sre" | "dba" | "data" | "devops" | "compliance" | "accessibility" | "ux";
32
159
  export interface RiskAcceptance {
33
160
  acceptedBy?: string;
34
161
  rationale?: string;
@@ -207,11 +334,20 @@ export interface BudgetPolicy {
207
334
  byRole: Record<string, BudgetLimit>;
208
335
  byTask: Record<string, BudgetLimit>;
209
336
  }
337
+ export type TelemetryLevel = "off" | "metadata" | "prompt-summary" | "prompt-sample" | "eval-dataset";
338
+ export interface TelemetryConsentState {
339
+ enabled: boolean;
340
+ level: TelemetryLevel;
341
+ policyVersion: string;
342
+ actor: string;
343
+ updatedAt?: string;
344
+ }
210
345
  export interface WorkflowConfig {
211
346
  version: number;
212
347
  providers: WorkflowProvidersConfig;
213
348
  budgets?: BudgetPolicy;
214
349
  tools: Record<string, ToolConfig>;
350
+ telemetry?: TelemetryConsentState;
215
351
  staticAnalysis: {
216
352
  preCommit: {
217
353
  required: boolean;
@@ -323,6 +459,18 @@ export interface TaskGraphPlan {
323
459
  locked: TaskGraphLockedItem[];
324
460
  complete: TaskGraphCompleteItem[];
325
461
  }
462
+ export interface PullRequestReviewAnalysis {
463
+ behaviorSummary: string;
464
+ changedFiles: string[];
465
+ testEvidence: string[];
466
+ unresolvedQuestions: string[];
467
+ requiredReviewers: string[];
468
+ missingReviewers: string[];
469
+ checklist: string[];
470
+ evidenceGaps: string[];
471
+ mergeBlocked: boolean;
472
+ mergeBlockers: string[];
473
+ }
326
474
  export interface PullRequestSummary {
327
475
  task: Task;
328
476
  handoffs: EventEntry[];
@@ -333,6 +481,7 @@ export interface PullRequestSummary {
333
481
  risks: string[];
334
482
  rollout: string;
335
483
  rollback: string;
484
+ review: PullRequestReviewAnalysis;
336
485
  }
337
486
  export interface PlaywrightScenario {
338
487
  name: string;
@@ -433,6 +582,27 @@ export interface DecisionInput {
433
582
  export interface DecisionRecord extends DecisionInput {
434
583
  artifact: string;
435
584
  }
585
+ export type DelegationRecommendation = "local" | "single_delegate" | "parallel_delegate" | "review_delegate" | "no_delegation";
586
+ export type DelegationMode = "execute" | "review";
587
+ export interface DelegationAssignment {
588
+ role: string;
589
+ mode: DelegationMode;
590
+ rationale: string[];
591
+ writeScopes: string[];
592
+ expectedOutputs: string[];
593
+ }
594
+ export interface DelegationDecision {
595
+ taskId: string;
596
+ recommendation: DelegationRecommendation;
597
+ complexityScore: number;
598
+ urgency: "normal" | "high";
599
+ rationale: string[];
600
+ blockingConditions: string[];
601
+ contextBundle: string[];
602
+ expectedOutputs: string[];
603
+ delegates: DelegationAssignment[];
604
+ disjointWriteScopes: boolean;
605
+ }
436
606
  export interface TaskContext {
437
607
  task: Task;
438
608
  dependencies: DependencyReport;
@@ -443,7 +613,12 @@ export interface TaskContext {
443
613
  evidence: EventEntry[];
444
614
  gates: EventEntry[];
445
615
  modelProvenance: ModelProvenanceRecord[];
616
+ skills: SkillPlan;
617
+ telemetry: TelemetryConsentState;
446
618
  risks: string[];
619
+ delegation?: DelegationDecision;
620
+ collaborationFlow: CollaborationFlowRecommendation | null;
621
+ workflowTemplates: WorkflowTemplateSelection[];
447
622
  }
448
623
  export interface ExecutionPlanStep {
449
624
  id: string;
@@ -1,4 +1,4 @@
1
- import type { EvidenceInput, ReadinessReport, ReviewInput, Task } from "./types.js";
1
+ import type { EvidenceInput, EvidenceType, ReadinessReport, ReviewInput, Task } from "./types.js";
2
2
  export declare function assertObject(value: unknown, name: string): asserts value is Record<string, unknown>;
3
3
  export declare function validateLocks(locks: unknown, taskIds: Set<string>, roleIds: Set<string>): void;
4
4
  export declare function taskIdsFor(tasks: Task[]): Set<string>;
@@ -6,5 +6,7 @@ export declare function assertNonEmptyString(value: unknown, name: string): asse
6
6
  export declare function validateRoles(roles: unknown): Set<string>;
7
7
  export declare function validateTasks(tasks: unknown, roleIds: Set<string>): void;
8
8
  export declare function validateReviewInput(input: ReviewInput, roleIds: Set<string>): void;
9
+ export declare function normalizeReviewRole(role: string, roleIds: Set<string>): string | undefined;
9
10
  export declare function validateEvidenceInput(input: EvidenceInput, roleIds: Set<string>): void;
11
+ export declare function normalizeEvidenceType(type: string): EvidenceType | undefined;
10
12
  export declare function validateReadiness(task: Task): ReadinessReport;
@@ -1,4 +1,4 @@
1
- import { EVIDENCE_TYPES, REVIEW_RESULTS, SEVERITIES, TASK_STATUSES, } from "./constants.js";
1
+ import { EVIDENCE_TYPE_ALIASES, EVIDENCE_TYPES, REVIEW_RESULTS, REVIEW_ROLE_ALIASES, SEVERITIES, TASK_STATUSES, } from "./constants.js";
2
2
  export function assertObject(value, name) {
3
3
  if (!value || typeof value !== "object" || Array.isArray(value)) {
4
4
  throw new Error(`${name} must be an object`);
@@ -115,8 +115,8 @@ function validateOptionalStringArray(value, name) {
115
115
  export function validateReviewInput(input, roleIds) {
116
116
  assertNonEmptyString(input.task, "task");
117
117
  assertNonEmptyString(input.role, "role");
118
- if (!roleIds.has(input.role)) {
119
- throw new Error(`unknown reviewer role: ${input.role}`);
118
+ if (!normalizeReviewRole(input.role, roleIds)) {
119
+ throw new Error(`unknown reviewer role: ${input.role}; accepted roles: ${Array.from(roleIds).sort().join(", ")}; aliases: ${reviewRoleAliasList()}`);
120
120
  }
121
121
  if (!REVIEW_RESULTS.includes(input.result)) {
122
122
  throw new Error(`result must be one of: ${REVIEW_RESULTS.join(", ")}`);
@@ -127,17 +127,40 @@ export function validateReviewInput(input, roleIds) {
127
127
  assertNonEmptyString(input.findings, "findings");
128
128
  assertNonEmptyString(input.recommendation, "recommendation");
129
129
  }
130
+ export function normalizeReviewRole(role, roleIds) {
131
+ if (roleIds.has(role)) {
132
+ return role;
133
+ }
134
+ const alias = REVIEW_ROLE_ALIASES[role];
135
+ return alias && roleIds.has(alias) ? alias : undefined;
136
+ }
137
+ function reviewRoleAliasList() {
138
+ return Object.entries(REVIEW_ROLE_ALIASES)
139
+ .map(([alias, role]) => `${alias}=${role}`)
140
+ .join(", ");
141
+ }
130
142
  export function validateEvidenceInput(input, roleIds) {
131
143
  assertNonEmptyString(input.task, "task");
132
144
  assertNonEmptyString(input.role, "role");
133
145
  if (!roleIds.has(input.role)) {
134
146
  throw new Error(`unknown evidence role: ${input.role}`);
135
147
  }
136
- if (!EVIDENCE_TYPES.includes(input.type)) {
137
- throw new Error(`type must be one of: ${EVIDENCE_TYPES.join(", ")}`);
148
+ if (!normalizeEvidenceType(input.type)) {
149
+ throw new Error(`valid evidence types: ${EVIDENCE_TYPES.join(", ")}; aliases: ${evidenceTypeAliasList()}`);
138
150
  }
139
151
  assertNonEmptyString(input.summary, "summary");
140
152
  }
153
+ export function normalizeEvidenceType(type) {
154
+ if (EVIDENCE_TYPES.includes(type)) {
155
+ return type;
156
+ }
157
+ return EVIDENCE_TYPE_ALIASES[type];
158
+ }
159
+ function evidenceTypeAliasList() {
160
+ return Object.entries(EVIDENCE_TYPE_ALIASES)
161
+ .map(([alias, type]) => `${alias}=${type}`)
162
+ .join(", ");
163
+ }
141
164
  export function validateReadiness(task) {
142
165
  const missing = [];
143
166
  const fields = [
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}