@plazmodium/odin 0.3.2-beta

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 (219) hide show
  1. package/README.md +306 -0
  2. package/dist/adapters/archive/supabase.d.ts +19 -0
  3. package/dist/adapters/archive/supabase.d.ts.map +1 -0
  4. package/dist/adapters/archive/supabase.js +121 -0
  5. package/dist/adapters/archive/supabase.js.map +1 -0
  6. package/dist/adapters/archive/types.d.ts +26 -0
  7. package/dist/adapters/archive/types.d.ts.map +1 -0
  8. package/dist/adapters/archive/types.js +6 -0
  9. package/dist/adapters/archive/types.js.map +1 -0
  10. package/dist/adapters/formal-verification/tla-precheck.d.ts +22 -0
  11. package/dist/adapters/formal-verification/tla-precheck.d.ts.map +1 -0
  12. package/dist/adapters/formal-verification/tla-precheck.js +270 -0
  13. package/dist/adapters/formal-verification/tla-precheck.js.map +1 -0
  14. package/dist/adapters/formal-verification/types.d.ts +37 -0
  15. package/dist/adapters/formal-verification/types.d.ts.map +1 -0
  16. package/dist/adapters/formal-verification/types.js +6 -0
  17. package/dist/adapters/formal-verification/types.js.map +1 -0
  18. package/dist/adapters/review/semgrep.d.ts +12 -0
  19. package/dist/adapters/review/semgrep.d.ts.map +1 -0
  20. package/dist/adapters/review/semgrep.js +175 -0
  21. package/dist/adapters/review/semgrep.js.map +1 -0
  22. package/dist/adapters/review/types.d.ts +14 -0
  23. package/dist/adapters/review/types.d.ts.map +1 -0
  24. package/dist/adapters/review/types.js +6 -0
  25. package/dist/adapters/review/types.js.map +1 -0
  26. package/dist/adapters/skills/filesystem.d.ts +18 -0
  27. package/dist/adapters/skills/filesystem.d.ts.map +1 -0
  28. package/dist/adapters/skills/filesystem.js +398 -0
  29. package/dist/adapters/skills/filesystem.js.map +1 -0
  30. package/dist/adapters/skills/types.d.ts +19 -0
  31. package/dist/adapters/skills/types.d.ts.map +1 -0
  32. package/dist/adapters/skills/types.js +6 -0
  33. package/dist/adapters/skills/types.js.map +1 -0
  34. package/dist/adapters/sql-executor/direct-postgres.d.ts +15 -0
  35. package/dist/adapters/sql-executor/direct-postgres.d.ts.map +1 -0
  36. package/dist/adapters/sql-executor/direct-postgres.js +33 -0
  37. package/dist/adapters/sql-executor/direct-postgres.js.map +1 -0
  38. package/dist/adapters/sql-executor/supabase-management-api.d.ts +17 -0
  39. package/dist/adapters/sql-executor/supabase-management-api.d.ts.map +1 -0
  40. package/dist/adapters/sql-executor/supabase-management-api.js +40 -0
  41. package/dist/adapters/sql-executor/supabase-management-api.js.map +1 -0
  42. package/dist/adapters/sql-executor/types.d.ts +15 -0
  43. package/dist/adapters/sql-executor/types.d.ts.map +1 -0
  44. package/dist/adapters/sql-executor/types.js +6 -0
  45. package/dist/adapters/sql-executor/types.js.map +1 -0
  46. package/dist/adapters/workflow-state/in-memory.d.ts +69 -0
  47. package/dist/adapters/workflow-state/in-memory.d.ts.map +1 -0
  48. package/dist/adapters/workflow-state/in-memory.js +444 -0
  49. package/dist/adapters/workflow-state/in-memory.js.map +1 -0
  50. package/dist/adapters/workflow-state/supabase.d.ts +55 -0
  51. package/dist/adapters/workflow-state/supabase.d.ts.map +1 -0
  52. package/dist/adapters/workflow-state/supabase.js +823 -0
  53. package/dist/adapters/workflow-state/supabase.js.map +1 -0
  54. package/dist/adapters/workflow-state/types.d.ts +55 -0
  55. package/dist/adapters/workflow-state/types.d.ts.map +1 -0
  56. package/dist/adapters/workflow-state/types.js +6 -0
  57. package/dist/adapters/workflow-state/types.js.map +1 -0
  58. package/dist/cli.d.ts +3 -0
  59. package/dist/cli.d.ts.map +1 -0
  60. package/dist/cli.js +52 -0
  61. package/dist/cli.js.map +1 -0
  62. package/dist/config.d.ts +44 -0
  63. package/dist/config.d.ts.map +1 -0
  64. package/dist/config.js +115 -0
  65. package/dist/config.js.map +1 -0
  66. package/dist/domain/actors.d.ts +10 -0
  67. package/dist/domain/actors.d.ts.map +1 -0
  68. package/dist/domain/actors.js +60 -0
  69. package/dist/domain/actors.js.map +1 -0
  70. package/dist/domain/development-evals.d.ts +9 -0
  71. package/dist/domain/development-evals.d.ts.map +1 -0
  72. package/dist/domain/development-evals.js +164 -0
  73. package/dist/domain/development-evals.js.map +1 -0
  74. package/dist/domain/matching.d.ts +8 -0
  75. package/dist/domain/matching.d.ts.map +1 -0
  76. package/dist/domain/matching.js +24 -0
  77. package/dist/domain/matching.js.map +1 -0
  78. package/dist/domain/phases.d.ts +10 -0
  79. package/dist/domain/phases.d.ts.map +1 -0
  80. package/dist/domain/phases.js +165 -0
  81. package/dist/domain/phases.js.map +1 -0
  82. package/dist/domain/quality-gates.d.ts +7 -0
  83. package/dist/domain/quality-gates.d.ts.map +1 -0
  84. package/dist/domain/quality-gates.js +8 -0
  85. package/dist/domain/quality-gates.js.map +1 -0
  86. package/dist/domain/resonance.d.ts +33 -0
  87. package/dist/domain/resonance.d.ts.map +1 -0
  88. package/dist/domain/resonance.js +100 -0
  89. package/dist/domain/resonance.js.map +1 -0
  90. package/dist/domain/tasks.d.ts +9 -0
  91. package/dist/domain/tasks.d.ts.map +1 -0
  92. package/dist/domain/tasks.js +57 -0
  93. package/dist/domain/tasks.js.map +1 -0
  94. package/dist/init.d.ts +7 -0
  95. package/dist/init.d.ts.map +1 -0
  96. package/dist/init.js +387 -0
  97. package/dist/init.js.map +1 -0
  98. package/dist/schemas.d.ts +366 -0
  99. package/dist/schemas.d.ts.map +1 -0
  100. package/dist/schemas.js +184 -0
  101. package/dist/schemas.js.map +1 -0
  102. package/dist/server.d.ts +7 -0
  103. package/dist/server.d.ts.map +1 -0
  104. package/dist/server.js +243 -0
  105. package/dist/server.js.map +1 -0
  106. package/dist/tools/apply-migrations.d.ts +21 -0
  107. package/dist/tools/apply-migrations.d.ts.map +1 -0
  108. package/dist/tools/apply-migrations.js +286 -0
  109. package/dist/tools/apply-migrations.js.map +1 -0
  110. package/dist/tools/archive-feature-release.d.ts +13 -0
  111. package/dist/tools/archive-feature-release.d.ts.map +1 -0
  112. package/dist/tools/archive-feature-release.js +182 -0
  113. package/dist/tools/archive-feature-release.js.map +1 -0
  114. package/dist/tools/capture-learning.d.ts +9 -0
  115. package/dist/tools/capture-learning.d.ts.map +1 -0
  116. package/dist/tools/capture-learning.js +53 -0
  117. package/dist/tools/capture-learning.js.map +1 -0
  118. package/dist/tools/explore-knowledge.d.ts +9 -0
  119. package/dist/tools/explore-knowledge.d.ts.map +1 -0
  120. package/dist/tools/explore-knowledge.js +142 -0
  121. package/dist/tools/explore-knowledge.js.map +1 -0
  122. package/dist/tools/get-claims-needing-review.d.ts +8 -0
  123. package/dist/tools/get-claims-needing-review.d.ts.map +1 -0
  124. package/dist/tools/get-claims-needing-review.js +21 -0
  125. package/dist/tools/get-claims-needing-review.js.map +1 -0
  126. package/dist/tools/get-development-eval-status.d.ts +8 -0
  127. package/dist/tools/get-development-eval-status.d.ts.map +1 -0
  128. package/dist/tools/get-development-eval-status.js +49 -0
  129. package/dist/tools/get-development-eval-status.js.map +1 -0
  130. package/dist/tools/get-feature-status.d.ts +8 -0
  131. package/dist/tools/get-feature-status.d.ts.map +1 -0
  132. package/dist/tools/get-feature-status.js +68 -0
  133. package/dist/tools/get-feature-status.js.map +1 -0
  134. package/dist/tools/get-next-phase.d.ts +8 -0
  135. package/dist/tools/get-next-phase.d.ts.map +1 -0
  136. package/dist/tools/get-next-phase.js +26 -0
  137. package/dist/tools/get-next-phase.js.map +1 -0
  138. package/dist/tools/prepare-phase-context.d.ts +9 -0
  139. package/dist/tools/prepare-phase-context.d.ts.map +1 -0
  140. package/dist/tools/prepare-phase-context.js +151 -0
  141. package/dist/tools/prepare-phase-context.js.map +1 -0
  142. package/dist/tools/record-commit.d.ts +8 -0
  143. package/dist/tools/record-commit.d.ts.map +1 -0
  144. package/dist/tools/record-commit.js +28 -0
  145. package/dist/tools/record-commit.js.map +1 -0
  146. package/dist/tools/record-eval-plan.d.ts +8 -0
  147. package/dist/tools/record-eval-plan.d.ts.map +1 -0
  148. package/dist/tools/record-eval-plan.js +40 -0
  149. package/dist/tools/record-eval-plan.js.map +1 -0
  150. package/dist/tools/record-eval-run.d.ts +8 -0
  151. package/dist/tools/record-eval-run.d.ts.map +1 -0
  152. package/dist/tools/record-eval-run.js +42 -0
  153. package/dist/tools/record-eval-run.js.map +1 -0
  154. package/dist/tools/record-merge.d.ts +8 -0
  155. package/dist/tools/record-merge.d.ts.map +1 -0
  156. package/dist/tools/record-merge.js +16 -0
  157. package/dist/tools/record-merge.js.map +1 -0
  158. package/dist/tools/record-phase-artifact.d.ts +8 -0
  159. package/dist/tools/record-phase-artifact.d.ts.map +1 -0
  160. package/dist/tools/record-phase-artifact.js +26 -0
  161. package/dist/tools/record-phase-artifact.js.map +1 -0
  162. package/dist/tools/record-phase-result.d.ts +9 -0
  163. package/dist/tools/record-phase-result.d.ts.map +1 -0
  164. package/dist/tools/record-phase-result.js +122 -0
  165. package/dist/tools/record-phase-result.js.map +1 -0
  166. package/dist/tools/record-pull-request.d.ts +8 -0
  167. package/dist/tools/record-pull-request.d.ts.map +1 -0
  168. package/dist/tools/record-pull-request.js +16 -0
  169. package/dist/tools/record-pull-request.js.map +1 -0
  170. package/dist/tools/record-quality-gate.d.ts +8 -0
  171. package/dist/tools/record-quality-gate.d.ts.map +1 -0
  172. package/dist/tools/record-quality-gate.js +26 -0
  173. package/dist/tools/record-quality-gate.js.map +1 -0
  174. package/dist/tools/record-watcher-review.d.ts +8 -0
  175. package/dist/tools/record-watcher-review.d.ts.map +1 -0
  176. package/dist/tools/record-watcher-review.js +18 -0
  177. package/dist/tools/record-watcher-review.js.map +1 -0
  178. package/dist/tools/run-policy-checks.d.ts +8 -0
  179. package/dist/tools/run-policy-checks.d.ts.map +1 -0
  180. package/dist/tools/run-policy-checks.js +38 -0
  181. package/dist/tools/run-policy-checks.js.map +1 -0
  182. package/dist/tools/run-review-checks.d.ts +9 -0
  183. package/dist/tools/run-review-checks.d.ts.map +1 -0
  184. package/dist/tools/run-review-checks.js +45 -0
  185. package/dist/tools/run-review-checks.js.map +1 -0
  186. package/dist/tools/start-feature.d.ts +8 -0
  187. package/dist/tools/start-feature.d.ts.map +1 -0
  188. package/dist/tools/start-feature.js +33 -0
  189. package/dist/tools/start-feature.js.map +1 -0
  190. package/dist/tools/submit-claim.d.ts +8 -0
  191. package/dist/tools/submit-claim.d.ts.map +1 -0
  192. package/dist/tools/submit-claim.js +45 -0
  193. package/dist/tools/submit-claim.js.map +1 -0
  194. package/dist/tools/verify-claims.d.ts +8 -0
  195. package/dist/tools/verify-claims.d.ts.map +1 -0
  196. package/dist/tools/verify-claims.js +39 -0
  197. package/dist/tools/verify-claims.js.map +1 -0
  198. package/dist/tools/verify-design.d.ts +8 -0
  199. package/dist/tools/verify-design.d.ts.map +1 -0
  200. package/dist/tools/verify-design.js +31 -0
  201. package/dist/tools/verify-design.js.map +1 -0
  202. package/dist/types.d.ts +333 -0
  203. package/dist/types.d.ts.map +1 -0
  204. package/dist/types.js +52 -0
  205. package/dist/types.js.map +1 -0
  206. package/dist/utils.d.ts +24 -0
  207. package/dist/utils.d.ts.map +1 -0
  208. package/dist/utils.js +50 -0
  209. package/dist/utils.js.map +1 -0
  210. package/migrations/001_schema.sql +795 -0
  211. package/migrations/002_functions.sql +2126 -0
  212. package/migrations/003_views.sql +599 -0
  213. package/migrations/004_seed.sql +106 -0
  214. package/migrations/005_odin_v2_schema.sql +217 -0
  215. package/migrations/006_odin_v2_functions.sql +671 -0
  216. package/migrations/007_odin_v2_phase_alignment.sql +554 -0
  217. package/migrations/008_related_learnings.sql +80 -0
  218. package/migrations/README.md +23 -0
  219. package/package.json +63 -0
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Get Next Phase Tool
3
+ * Version: 0.1.0
4
+ */
5
+ import type { WorkflowStateAdapter } from '../adapters/workflow-state/types.js';
6
+ import type { GetNextPhaseInput } from '../schemas.js';
7
+ export declare function handleGetNextPhase(adapter: WorkflowStateAdapter, input: GetNextPhaseInput): Promise<import("../utils.js").ToolResult>;
8
+ //# sourceMappingURL=get-next-phase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-next-phase.d.ts","sourceRoot":"","sources":["../../src/tools/get-next-phase.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAEhF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGvD,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,oBAAoB,EAC7B,KAAK,EAAE,iBAAiB,6CAwBzB"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Get Next Phase Tool
3
+ * Version: 0.1.0
4
+ */
5
+ import { getNextPhaseId, getPhaseContract } from '../domain/phases.js';
6
+ import { createErrorResult, createTextResult } from '../utils.js';
7
+ export async function handleGetNextPhase(adapter, input) {
8
+ const feature = await adapter.getFeature(input.feature_id);
9
+ if (feature == null) {
10
+ return createErrorResult(`Feature ${input.feature_id} was not found.`, {
11
+ feature_id: input.feature_id,
12
+ });
13
+ }
14
+ const current_phase = getPhaseContract(feature.current_phase);
15
+ const next_phase_id = getNextPhaseId(feature.current_phase);
16
+ const next_phase = next_phase_id == null ? null : getPhaseContract(next_phase_id);
17
+ return createTextResult(next_phase == null
18
+ ? `Feature ${feature.id} is at the terminal phase ${current_phase.name}.`
19
+ : `Feature ${feature.id} is at ${current_phase.name}; next phase is ${next_phase.name}.`, {
20
+ feature_id: feature.id,
21
+ current_phase: current_phase,
22
+ next_phase,
23
+ blocked: feature.status === 'BLOCKED',
24
+ });
25
+ }
26
+ //# sourceMappingURL=get-next-phase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-next-phase.js","sourceRoot":"","sources":["../../src/tools/get-next-phase.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAElE,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAA6B,EAC7B,KAAwB;IAExB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC3D,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACpB,OAAO,iBAAiB,CAAC,WAAW,KAAK,CAAC,UAAU,iBAAiB,EAAE;YACrE,UAAU,EAAE,KAAK,CAAC,UAAU;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9D,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAElF,OAAO,gBAAgB,CACrB,UAAU,IAAI,IAAI;QAChB,CAAC,CAAC,WAAW,OAAO,CAAC,EAAE,6BAA6B,aAAa,CAAC,IAAI,GAAG;QACzE,CAAC,CAAC,WAAW,OAAO,CAAC,EAAE,UAAU,aAAa,CAAC,IAAI,mBAAmB,UAAU,CAAC,IAAI,GAAG,EAC1F;QACE,UAAU,EAAE,OAAO,CAAC,EAAE;QACtB,aAAa,EAAE,aAAa;QAC5B,UAAU;QACV,OAAO,EAAE,OAAO,CAAC,MAAM,KAAK,SAAS;KACtC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Prepare Phase Context Tool
3
+ * Version: 0.1.0
4
+ */
5
+ import type { SkillAdapter } from '../adapters/skills/types.js';
6
+ import type { WorkflowStateAdapter } from '../adapters/workflow-state/types.js';
7
+ import type { PreparePhaseContextInput } from '../schemas.js';
8
+ export declare function handlePreparePhaseContext(adapter: WorkflowStateAdapter, skill_adapter: SkillAdapter, input: PreparePhaseContextInput): Promise<import("../utils.js").ToolResult>;
9
+ //# sourceMappingURL=prepare-phase-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare-phase-context.d.ts","sourceRoot":"","sources":["../../src/tools/prepare-phase-context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAMhF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AA+B9D,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,oBAAoB,EAC7B,aAAa,EAAE,YAAY,EAC3B,KAAK,EAAE,wBAAwB,6CAwIhC"}
@@ -0,0 +1,151 @@
1
+ /**
2
+ * Prepare Phase Context Tool
3
+ * Version: 0.1.0
4
+ */
5
+ import { resolveWorkflowActorName } from '../domain/actors.js';
6
+ import { appendDevelopmentEvalChecks, buildDevelopmentEvalContext } from '../domain/development-evals.js';
7
+ import { getPhaseAgentInstructions, getPhaseContract, isWatchedPhase } from '../domain/phases.js';
8
+ import { formatOpenGateSummary } from '../domain/quality-gates.js';
9
+ import { computeResonance } from '../domain/resonance.js';
10
+ import { createErrorResult, createTextResult } from '../utils.js';
11
+ const ARTIFACT_KEYS = [
12
+ 'prd',
13
+ 'requirements',
14
+ 'spec',
15
+ 'tasks',
16
+ 'review',
17
+ 'documentation',
18
+ 'release_notes',
19
+ 'design_verification',
20
+ 'eval_plan',
21
+ 'eval_run',
22
+ ];
23
+ function buildArtifactLineage(artifacts) {
24
+ const lineage = {};
25
+ for (const output_type of ARTIFACT_KEYS) {
26
+ const matching = artifacts.filter((artifact) => artifact.output_type === output_type);
27
+ const latest = matching.at(-1);
28
+ if (latest != null) {
29
+ lineage[output_type] = latest;
30
+ }
31
+ }
32
+ return lineage;
33
+ }
34
+ export async function handlePreparePhaseContext(adapter, skill_adapter, input) {
35
+ const feature = await adapter.getFeature(input.feature_id);
36
+ if (feature == null) {
37
+ return createErrorResult(`Feature ${input.feature_id} was not found.`, {
38
+ feature_id: input.feature_id,
39
+ });
40
+ }
41
+ const all_artifacts = await adapter.listPhaseArtifacts(input.feature_id);
42
+ const artifacts = input.include_artifacts ? all_artifacts : [];
43
+ const [feature_learnings, related_learnings] = input.include_learnings
44
+ ? await Promise.all([
45
+ adapter.listLearnings(input.feature_id),
46
+ adapter.listRelatedLearnings(input.feature_id, 5),
47
+ ])
48
+ : [[], []];
49
+ const [open_blockers, open_gate_records, open_findings, pending_claims, claims_needing_review] = await Promise.all([
50
+ adapter.listOpenBlockers(input.feature_id),
51
+ adapter.listOpenGateRecords(input.feature_id),
52
+ adapter.listOpenFindings(input.feature_id),
53
+ adapter.listPendingClaims(input.feature_id),
54
+ adapter.listClaimsNeedingReview(input.feature_id),
55
+ ]);
56
+ const open_gates = open_gate_records.map(formatOpenGateSummary);
57
+ const phase = getPhaseContract(input.phase);
58
+ const agent = getPhaseAgentInstructions(input.phase);
59
+ const actor_name = resolveWorkflowActorName(input.phase, input.agent_name ?? agent.name);
60
+ const development_evals = buildDevelopmentEvalContext(feature, input.phase, all_artifacts, open_gate_records);
61
+ const watcher_constraints = isWatchedPhase(input.phase) && claims_needing_review.length > 0
62
+ ? [
63
+ 'Outstanding claims need watcher review: call odin.get_claims_needing_review, have watcher-agent review each claim, record results with odin.record_watcher_review, then re-run odin.verify_claims before closing the watched phase.',
64
+ ]
65
+ : [];
66
+ const resolved_skills = input.include_skills
67
+ ? await skill_adapter.resolveSkills({ feature, artifacts: all_artifacts, phase: input.phase })
68
+ : { resolved: [], fallback_used: false };
69
+ const skill_paths = resolved_skills.resolved.map((skill) => `${skill.category}/${skill.name}`);
70
+ const existing_invocation = await adapter.findOpenAgentInvocation(feature.id, input.phase, actor_name);
71
+ const invocation = existing_invocation ??
72
+ (input.phase === '10'
73
+ ? null
74
+ : await adapter.startAgentInvocation(feature.id, input.phase, actor_name, `Phase ${input.phase}: ${phase.name}`, skill_paths.length > 0 ? skill_paths : undefined));
75
+ const bundle = {
76
+ feature,
77
+ phase,
78
+ agent: {
79
+ ...agent,
80
+ name: actor_name,
81
+ constraints: [...new Set([...agent.constraints, ...development_evals.harness_prompt_block, ...watcher_constraints])],
82
+ },
83
+ invocation: invocation == null
84
+ ? null
85
+ : {
86
+ id: invocation.id,
87
+ agent_name: invocation.agent_name,
88
+ started_at: invocation.started_at,
89
+ skills_used: invocation.skills_used,
90
+ },
91
+ workflow: {
92
+ open_blockers,
93
+ open_gates,
94
+ open_gate_records,
95
+ open_findings,
96
+ pending_claims,
97
+ claims_needing_review_count: claims_needing_review.length,
98
+ },
99
+ artifacts: buildArtifactLineage(artifacts),
100
+ development_evals,
101
+ skills: {
102
+ resolved: resolved_skills.resolved,
103
+ fallback_used: resolved_skills.fallback_used,
104
+ },
105
+ verification: {
106
+ watched_phase: isWatchedPhase(input.phase),
107
+ required_claims: isWatchedPhase(input.phase) ? ['CODE_MODIFIED'] : [],
108
+ required_checks: appendDevelopmentEvalChecks(input.phase === '6'
109
+ ? ['security review', 'unit test evaluation']
110
+ : isWatchedPhase(input.phase)
111
+ ? ['build', 'tests', 'policy checks', ...(claims_needing_review.length > 0 ? ['watcher review resolution'] : [])]
112
+ : [], input.phase),
113
+ review_mode: input.phase === '6' ? 'security' : isWatchedPhase(input.phase) ? 'watched_phase' : 'none',
114
+ },
115
+ learnings: [
116
+ ...feature_learnings.map((learning) => ({
117
+ id: learning.id,
118
+ title: learning.title,
119
+ category: learning.category,
120
+ summary: learning.content.slice(0, 200),
121
+ source: 'feature',
122
+ })),
123
+ ...(() => {
124
+ const resonance_inputs = related_learnings.map((l) => ({
125
+ id: l.id,
126
+ category: l.category,
127
+ confidence_score: l.confidence_score,
128
+ source_feature_id: l.source_feature_id,
129
+ shared_domains: l.shared_domains,
130
+ created_at: new Date().toISOString(),
131
+ }));
132
+ const scores = computeResonance(resonance_inputs);
133
+ const score_map = new Map(scores.map((s) => [s.learning_id, s.combined]));
134
+ return related_learnings
135
+ .slice()
136
+ .sort((a, b) => (score_map.get(b.id) ?? 0) - (score_map.get(a.id) ?? 0))
137
+ .map((learning) => ({
138
+ id: learning.id,
139
+ title: learning.title,
140
+ category: learning.category,
141
+ summary: learning.content.slice(0, 200),
142
+ source: 'related',
143
+ source_feature_id: learning.source_feature_id,
144
+ shared_domains: learning.shared_domains,
145
+ }));
146
+ })(),
147
+ ],
148
+ };
149
+ return createTextResult(`Prepared ${phase.name} context for feature ${feature.id}.`, { context: bundle });
150
+ }
151
+ //# sourceMappingURL=prepare-phase-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare-phase-context.js","sourceRoot":"","sources":["../../src/tools/prepare-phase-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Record Commit Tool
3
+ * Version: 0.1.0
4
+ */
5
+ import type { WorkflowStateAdapter } from '../adapters/workflow-state/types.js';
6
+ import type { RecordCommitInput } from '../schemas.js';
7
+ export declare function handleRecordCommit(adapter: WorkflowStateAdapter, input: RecordCommitInput): Promise<import("../utils.js").ToolResult>;
8
+ //# sourceMappingURL=record-commit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-commit.d.ts","sourceRoot":"","sources":["../../src/tools/record-commit.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAGhF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGvD,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,oBAAoB,EAC7B,KAAK,EAAE,iBAAiB,6CA6BzB"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Record Commit Tool
3
+ * Version: 0.1.0
4
+ */
5
+ import { resolveWorkflowActorName } from '../domain/actors.js';
6
+ import { getPhaseAgentInstructions } from '../domain/phases.js';
7
+ import { createErrorResult, createTextResult } from '../utils.js';
8
+ export async function handleRecordCommit(adapter, input) {
9
+ const feature = await adapter.getFeature(input.feature_id);
10
+ if (feature == null) {
11
+ return createErrorResult(`Feature ${input.feature_id} was not found.`, {
12
+ feature_id: input.feature_id,
13
+ });
14
+ }
15
+ const committed_by = resolveWorkflowActorName(input.phase, input.committed_by ?? getPhaseAgentInstructions(input.phase).name);
16
+ const commit = await adapter.recordCommit({
17
+ feature_id: input.feature_id,
18
+ commit_hash: input.commit_hash,
19
+ phase: input.phase,
20
+ message: input.message,
21
+ files_changed: input.files_changed,
22
+ insertions: input.insertions,
23
+ deletions: input.deletions,
24
+ committed_by,
25
+ });
26
+ return createTextResult(`Recorded commit ${commit.commit_hash} for feature ${commit.feature_id}.`, { commit });
27
+ }
28
+ //# sourceMappingURL=record-commit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-commit.js","sourceRoot":"","sources":["../../src/tools/record-commit.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAElE,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAA6B,EAC7B,KAAwB;IAExB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC3D,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACpB,OAAO,iBAAiB,CAAC,WAAW,KAAK,CAAC,UAAU,iBAAiB,EAAE;YACrE,UAAU,EAAE,KAAK,CAAC,UAAU;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,MAAM,YAAY,GAAG,wBAAwB,CAC3C,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,YAAY,IAAI,yBAAyB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAClE,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC;QACxC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,YAAY;KACb,CAAC,CAAC;IAEH,OAAO,gBAAgB,CACrB,mBAAmB,MAAM,CAAC,WAAW,gBAAgB,MAAM,CAAC,UAAU,GAAG,EACzE,EAAE,MAAM,EAAE,CACX,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Record Eval Plan Tool
3
+ * Version: 0.1.0
4
+ */
5
+ import type { WorkflowStateAdapter } from '../adapters/workflow-state/types.js';
6
+ import type { RecordEvalPlanInput } from '../schemas.js';
7
+ export declare function handleRecordEvalPlan(adapter: WorkflowStateAdapter, input: RecordEvalPlanInput): Promise<import("../utils.js").ToolResult>;
8
+ //# sourceMappingURL=record-eval-plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-eval-plan.d.ts","sourceRoot":"","sources":["../../src/tools/record-eval-plan.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAEhF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAGzD,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,oBAAoB,EAC7B,KAAK,EAAE,mBAAmB,6CAmC3B"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Record Eval Plan Tool
3
+ * Version: 0.1.0
4
+ */
5
+ import { resolveWorkflowActorName } from '../domain/actors.js';
6
+ import { createErrorResult, createId, createTextResult } from '../utils.js';
7
+ export async function handleRecordEvalPlan(adapter, input) {
8
+ const feature = await adapter.getFeature(input.feature_id);
9
+ if (feature == null) {
10
+ return createErrorResult(`Feature ${input.feature_id} was not found.`, {
11
+ feature_id: input.feature_id,
12
+ });
13
+ }
14
+ const created_by = resolveWorkflowActorName('3', input.created_by);
15
+ const artifact = await adapter.recordPhaseArtifact({
16
+ id: createId('artifact'),
17
+ feature_id: input.feature_id,
18
+ phase: '3',
19
+ output_type: 'eval_plan',
20
+ content: {
21
+ scope: input.scope,
22
+ success_criteria: input.success_criteria,
23
+ non_goals: input.non_goals,
24
+ capability_evals: input.capability_evals,
25
+ regression_evals: input.regression_evals,
26
+ transcript_review_plan: input.transcript_review_plan,
27
+ solvability_note: input.solvability_note,
28
+ },
29
+ created_by,
30
+ created_at: new Date().toISOString(),
31
+ });
32
+ return createTextResult(`Recorded eval_plan for feature ${input.feature_id}.`, {
33
+ artifact,
34
+ counts: {
35
+ capability_evals: input.capability_evals.length,
36
+ regression_evals: input.regression_evals.length,
37
+ },
38
+ });
39
+ }
40
+ //# sourceMappingURL=record-eval-plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-eval-plan.js","sourceRoot":"","sources":["../../src/tools/record-eval-plan.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE5E,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAA6B,EAC7B,KAA0B;IAE1B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC3D,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACpB,OAAO,iBAAiB,CAAC,WAAW,KAAK,CAAC,UAAU,iBAAiB,EAAE;YACrE,UAAU,EAAE,KAAK,CAAC,UAAU;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,MAAM,UAAU,GAAG,wBAAwB,CAAC,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,mBAAmB,CAAC;QACjD,EAAE,EAAE,QAAQ,CAAC,UAAU,CAAC;QACxB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,WAAW;QACxB,OAAO,EAAE;YACP,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;YACxC,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;YACxC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;YACxC,sBAAsB,EAAE,KAAK,CAAC,sBAAsB;YACpD,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;SACzC;QACD,UAAU;QACV,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACrC,CAAC,CAAC;IAEH,OAAO,gBAAgB,CAAC,kCAAkC,KAAK,CAAC,UAAU,GAAG,EAAE;QAC7E,QAAQ;QACR,MAAM,EAAE;YACN,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,CAAC,MAAM;YAC/C,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,CAAC,MAAM;SAChD;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Record Eval Run Tool
3
+ * Version: 0.1.0
4
+ */
5
+ import type { WorkflowStateAdapter } from '../adapters/workflow-state/types.js';
6
+ import type { RecordEvalRunInput } from '../schemas.js';
7
+ export declare function handleRecordEvalRun(adapter: WorkflowStateAdapter, input: RecordEvalRunInput): Promise<import("../utils.js").ToolResult>;
8
+ //# sourceMappingURL=record-eval-run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-eval-run.d.ts","sourceRoot":"","sources":["../../src/tools/record-eval-run.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAEhF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAGxD,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,oBAAoB,EAC7B,KAAK,EAAE,kBAAkB,6CAqC1B"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Record Eval Run Tool
3
+ * Version: 0.1.0
4
+ */
5
+ import { resolveWorkflowActorName } from '../domain/actors.js';
6
+ import { createErrorResult, createId, createTextResult } from '../utils.js';
7
+ export async function handleRecordEvalRun(adapter, input) {
8
+ const feature = await adapter.getFeature(input.feature_id);
9
+ if (feature == null) {
10
+ return createErrorResult(`Feature ${input.feature_id} was not found.`, {
11
+ feature_id: input.feature_id,
12
+ });
13
+ }
14
+ const created_by = resolveWorkflowActorName(input.phase, input.created_by);
15
+ const artifact = await adapter.recordPhaseArtifact({
16
+ id: createId('artifact'),
17
+ feature_id: input.feature_id,
18
+ phase: input.phase,
19
+ output_type: 'eval_run',
20
+ content: {
21
+ status: input.status,
22
+ cases_run: input.cases_run,
23
+ important_failures: input.important_failures,
24
+ manual_review_notes: input.manual_review_notes,
25
+ transcript_review_observations: input.transcript_review_observations,
26
+ follow_up: input.follow_up,
27
+ environment_summary: input.environment_summary,
28
+ },
29
+ created_by,
30
+ created_at: new Date().toISOString(),
31
+ });
32
+ return createTextResult(`Recorded eval_run for feature ${input.feature_id}.`, {
33
+ artifact,
34
+ eval_run: {
35
+ status: input.status,
36
+ phase: input.phase,
37
+ cases_run: input.cases_run.length,
38
+ important_failures: input.important_failures.length,
39
+ },
40
+ });
41
+ }
42
+ //# sourceMappingURL=record-eval-run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-eval-run.js","sourceRoot":"","sources":["../../src/tools/record-eval-run.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE5E,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAA6B,EAC7B,KAAyB;IAEzB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC3D,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACpB,OAAO,iBAAiB,CAAC,WAAW,KAAK,CAAC,UAAU,iBAAiB,EAAE;YACrE,UAAU,EAAE,KAAK,CAAC,UAAU;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,MAAM,UAAU,GAAG,wBAAwB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAC3E,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,mBAAmB,CAAC;QACjD,EAAE,EAAE,QAAQ,CAAC,UAAU,CAAC;QACxB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,WAAW,EAAE,UAAU;QACvB,OAAO,EAAE;YACP,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;YAC5C,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;YAC9C,8BAA8B,EAAE,KAAK,CAAC,8BAA8B;YACpE,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;SAC/C;QACD,UAAU;QACV,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACrC,CAAC,CAAC;IAEH,OAAO,gBAAgB,CAAC,iCAAiC,KAAK,CAAC,UAAU,GAAG,EAAE;QAC5E,QAAQ;QACR,QAAQ,EAAE;YACR,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM;YACjC,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,CAAC,MAAM;SACpD;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Record Merge Tool
3
+ * Version: 0.1.0
4
+ */
5
+ import type { WorkflowStateAdapter } from '../adapters/workflow-state/types.js';
6
+ import type { RecordMergeInput } from '../schemas.js';
7
+ export declare function handleRecordMerge(adapter: WorkflowStateAdapter, input: RecordMergeInput): Promise<import("../utils.js").ToolResult>;
8
+ //# sourceMappingURL=record-merge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-merge.d.ts","sourceRoot":"","sources":["../../src/tools/record-merge.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGtD,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,oBAAoB,EAC7B,KAAK,EAAE,gBAAgB,6CAexB"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Record Merge Tool
3
+ * Version: 0.1.0
4
+ */
5
+ import { createErrorResult, createTextResult } from '../utils.js';
6
+ export async function handleRecordMerge(adapter, input) {
7
+ const feature = await adapter.getFeature(input.feature_id);
8
+ if (feature == null) {
9
+ return createErrorResult(`Feature ${input.feature_id} was not found.`, {
10
+ feature_id: input.feature_id,
11
+ });
12
+ }
13
+ const merge = await adapter.recordMerge(input.feature_id, input.merged_by);
14
+ return createTextResult(`Recorded merge for feature ${merge.feature_id}.`, { merge });
15
+ }
16
+ //# sourceMappingURL=record-merge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-merge.js","sourceRoot":"","sources":["../../src/tools/record-merge.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAElE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAA6B,EAC7B,KAAuB;IAEvB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC3D,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACpB,OAAO,iBAAiB,CAAC,WAAW,KAAK,CAAC,UAAU,iBAAiB,EAAE;YACrE,UAAU,EAAE,KAAK,CAAC,UAAU;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAE3E,OAAO,gBAAgB,CACrB,8BAA8B,KAAK,CAAC,UAAU,GAAG,EACjD,EAAE,KAAK,EAAE,CACV,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Record Phase Artifact Tool
3
+ * Version: 0.1.0
4
+ */
5
+ import type { WorkflowStateAdapter } from '../adapters/workflow-state/types.js';
6
+ import type { RecordPhaseArtifactInput } from '../schemas.js';
7
+ export declare function handleRecordPhaseArtifact(adapter: WorkflowStateAdapter, input: RecordPhaseArtifactInput): Promise<import("../utils.js").ToolResult>;
8
+ //# sourceMappingURL=record-phase-artifact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-phase-artifact.d.ts","sourceRoot":"","sources":["../../src/tools/record-phase-artifact.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAEhF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAG9D,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,oBAAoB,EAC7B,KAAK,EAAE,wBAAwB,6CAyBhC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Record Phase Artifact Tool
3
+ * Version: 0.1.0
4
+ */
5
+ import { resolveWorkflowActorName } from '../domain/actors.js';
6
+ import { createId, createErrorResult, createTextResult } from '../utils.js';
7
+ export async function handleRecordPhaseArtifact(adapter, input) {
8
+ const feature = await adapter.getFeature(input.feature_id);
9
+ if (feature == null) {
10
+ return createErrorResult(`Feature ${input.feature_id} was not found.`, {
11
+ feature_id: input.feature_id,
12
+ });
13
+ }
14
+ const created_by = resolveWorkflowActorName(input.phase, input.created_by);
15
+ const artifact = await adapter.recordPhaseArtifact({
16
+ id: createId('artifact'),
17
+ feature_id: input.feature_id,
18
+ phase: input.phase,
19
+ output_type: input.output_type,
20
+ content: input.content,
21
+ created_by,
22
+ created_at: new Date().toISOString(),
23
+ });
24
+ return createTextResult(`Recorded ${artifact.output_type} artifact for feature ${artifact.feature_id}.`, { artifact });
25
+ }
26
+ //# sourceMappingURL=record-phase-artifact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-phase-artifact.js","sourceRoot":"","sources":["../../src/tools/record-phase-artifact.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE5E,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,OAA6B,EAC7B,KAA+B;IAE/B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC3D,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACpB,OAAO,iBAAiB,CAAC,WAAW,KAAK,CAAC,UAAU,iBAAiB,EAAE;YACrE,UAAU,EAAE,KAAK,CAAC,UAAU;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,MAAM,UAAU,GAAG,wBAAwB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAE3E,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,mBAAmB,CAAC;QACjD,EAAE,EAAE,QAAQ,CAAC,UAAU,CAAC;QACxB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,UAAU;QACV,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACrC,CAAC,CAAC;IAEH,OAAO,gBAAgB,CACrB,YAAY,QAAQ,CAAC,WAAW,yBAAyB,QAAQ,CAAC,UAAU,GAAG,EAC/E,EAAE,QAAQ,EAAE,CACb,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Record Phase Result Tool
3
+ * Version: 0.1.0
4
+ */
5
+ import type { ArchiveAdapter } from '../adapters/archive/types.js';
6
+ import type { WorkflowStateAdapter } from '../adapters/workflow-state/types.js';
7
+ import type { RecordPhaseResultInput } from '../schemas.js';
8
+ export declare function handleRecordPhaseResult(adapter: WorkflowStateAdapter, archive_adapter: ArchiveAdapter | null, input: RecordPhaseResultInput): Promise<import("../utils.js").ToolResult>;
9
+ //# sourceMappingURL=record-phase-result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-phase-result.d.ts","sourceRoot":"","sources":["../../src/tools/record-phase-result.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAIhF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAiC5D,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,oBAAoB,EAC7B,eAAe,EAAE,cAAc,GAAG,IAAI,EACtC,KAAK,EAAE,sBAAsB,6CA8H9B"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Record Phase Result Tool
3
+ * Version: 0.1.0
4
+ */
5
+ import { resolveWorkflowActorName } from '../domain/actors.js';
6
+ import { getNextPhaseId, getPhaseContract } from '../domain/phases.js';
7
+ import { completeTaskArtifactContent } from '../domain/tasks.js';
8
+ import { createErrorResult, createId, createTextResult } from '../utils.js';
9
+ import { autoArchiveFeature } from './archive-feature-release.js';
10
+ async function completeBuilderTasks(adapter, feature_id, created_by) {
11
+ const artifacts = await adapter.listPhaseArtifacts(feature_id);
12
+ const latest_tasks = artifacts.filter((artifact) => artifact.output_type === 'tasks').at(-1);
13
+ if (latest_tasks == null) {
14
+ return;
15
+ }
16
+ const completed = completeTaskArtifactContent(latest_tasks.content);
17
+ if (!completed.changed) {
18
+ return;
19
+ }
20
+ await adapter.recordPhaseArtifact({
21
+ id: createId('artifact'),
22
+ feature_id,
23
+ phase: latest_tasks.phase,
24
+ output_type: latest_tasks.output_type,
25
+ content: completed.content,
26
+ created_by,
27
+ created_at: new Date().toISOString(),
28
+ });
29
+ }
30
+ export async function handleRecordPhaseResult(adapter, archive_adapter, input) {
31
+ const feature = await adapter.getFeature(input.feature_id);
32
+ if (feature == null) {
33
+ return createErrorResult(`Feature ${input.feature_id} was not found.`, {
34
+ feature_id: input.feature_id,
35
+ });
36
+ }
37
+ if (feature.current_phase !== input.phase) {
38
+ return createErrorResult(`Feature ${input.feature_id} is currently in phase ${feature.current_phase}, not ${input.phase}.`, {
39
+ feature_id: input.feature_id,
40
+ expected_phase: feature.current_phase,
41
+ provided_phase: input.phase,
42
+ });
43
+ }
44
+ const next_phase = input.outcome === 'completed' ? input.next_phase ?? getNextPhaseId(input.phase) : input.next_phase ?? null;
45
+ const workflow_actor = resolveWorkflowActorName(input.phase, input.created_by);
46
+ if (input.phase === '5' && input.outcome === 'completed') {
47
+ await completeBuilderTasks(adapter, input.feature_id, workflow_actor);
48
+ }
49
+ let invocation_id = (await adapter.findOpenAgentInvocation(input.feature_id, input.phase, workflow_actor))?.id ?? null;
50
+ if (invocation_id == null && input.phase !== '10') {
51
+ try {
52
+ const phase_contract = getPhaseContract(input.phase);
53
+ const invocation = await adapter.startAgentInvocation(input.feature_id, input.phase, workflow_actor, `Phase ${input.phase}: ${phase_contract.name} (fallback)`);
54
+ invocation_id = invocation.id;
55
+ }
56
+ catch {
57
+ console.error(`[Odin Runtime] Failed to start agent invocation for ${input.feature_id} phase ${input.phase}`);
58
+ }
59
+ }
60
+ const updated_feature = await adapter.recordPhaseResult({
61
+ id: createId('result'),
62
+ feature_id: input.feature_id,
63
+ phase: input.phase,
64
+ outcome: input.outcome,
65
+ summary: input.summary,
66
+ next_phase,
67
+ blockers: input.blockers,
68
+ created_by: workflow_actor,
69
+ created_at: new Date().toISOString(),
70
+ });
71
+ // GAP-1: Complete the agent invocation
72
+ if (invocation_id != null) {
73
+ try {
74
+ await adapter.completeAgentInvocation(invocation_id);
75
+ }
76
+ catch {
77
+ console.error(`[Odin Runtime] Failed to complete agent invocation ${invocation_id}`);
78
+ }
79
+ }
80
+ // GAP-2: Record quality gate when phase completes
81
+ if (input.outcome === 'completed') {
82
+ try {
83
+ const phase_contract = getPhaseContract(input.phase);
84
+ await adapter.recordQualityGate(input.feature_id, `${phase_contract.name.toLowerCase()}_phase_complete`, 'APPROVED', workflow_actor, input.summary, input.phase);
85
+ }
86
+ catch {
87
+ console.error(`[Odin Runtime] Failed to record quality gate for ${input.feature_id} phase ${input.phase}`);
88
+ }
89
+ }
90
+ if (updated_feature == null) {
91
+ return createErrorResult(`Feature ${input.feature_id} could not be updated.`, {
92
+ feature_id: input.feature_id,
93
+ });
94
+ }
95
+ // GAP-3: Compute feature eval when feature completes
96
+ let feature_eval = null;
97
+ let auto_archive = null;
98
+ if (updated_feature.status === 'COMPLETED') {
99
+ try {
100
+ feature_eval = await adapter.computeFeatureEval(input.feature_id);
101
+ }
102
+ catch {
103
+ console.error(`[Odin Runtime] Failed to compute feature eval for ${input.feature_id}`);
104
+ }
105
+ // GAP-5: Auto-archive artifacts when feature completes
106
+ if (archive_adapter != null) {
107
+ try {
108
+ auto_archive = await autoArchiveFeature(adapter, archive_adapter, input.feature_id, input.summary, input.created_by);
109
+ }
110
+ catch {
111
+ console.error(`[Odin Runtime] Failed to auto-archive feature ${input.feature_id}`);
112
+ }
113
+ }
114
+ }
115
+ return createTextResult(`Recorded ${input.outcome} result for phase ${input.phase} on feature ${input.feature_id}.`, {
116
+ feature: updated_feature,
117
+ next_phase,
118
+ ...(feature_eval != null ? { feature_eval } : {}),
119
+ ...(auto_archive != null ? { auto_archive } : {}),
120
+ });
121
+ }
122
+ //# sourceMappingURL=record-phase-result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-phase-result.js","sourceRoot":"","sources":["../../src/tools/record-phase-result.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Record Pull Request Tool
3
+ * Version: 0.1.0
4
+ */
5
+ import type { WorkflowStateAdapter } from '../adapters/workflow-state/types.js';
6
+ import type { RecordPullRequestInput } from '../schemas.js';
7
+ export declare function handleRecordPullRequest(adapter: WorkflowStateAdapter, input: RecordPullRequestInput): Promise<import("../utils.js").ToolResult>;
8
+ //# sourceMappingURL=record-pull-request.d.ts.map