@miller-tech/uap 1.94.0 → 1.96.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/benchmarks/benchmark.d.ts +4 -4
  3. package/dist/benchmarks/paired/types.d.ts +2 -2
  4. package/dist/bin/cli.js +18 -2
  5. package/dist/bin/cli.js.map +1 -1
  6. package/dist/cli/deliver.d.ts +5 -0
  7. package/dist/cli/deliver.d.ts.map +1 -1
  8. package/dist/cli/deliver.js +275 -14
  9. package/dist/cli/deliver.js.map +1 -1
  10. package/dist/cli/task.d.ts +1 -1
  11. package/dist/cli/task.d.ts.map +1 -1
  12. package/dist/cli/task.js +64 -0
  13. package/dist/cli/task.js.map +1 -1
  14. package/dist/coordination/reactor.d.ts.map +1 -1
  15. package/dist/coordination/reactor.js +14 -0
  16. package/dist/coordination/reactor.js.map +1 -1
  17. package/dist/delivery/applier.d.ts.map +1 -1
  18. package/dist/delivery/applier.js +3 -0
  19. package/dist/delivery/applier.js.map +1 -1
  20. package/dist/delivery/auto-mine.d.ts +30 -0
  21. package/dist/delivery/auto-mine.d.ts.map +1 -0
  22. package/dist/delivery/auto-mine.js +132 -0
  23. package/dist/delivery/auto-mine.js.map +1 -0
  24. package/dist/delivery/auto-optimizer.d.ts +6 -2
  25. package/dist/delivery/auto-optimizer.d.ts.map +1 -1
  26. package/dist/delivery/auto-optimizer.js +12 -5
  27. package/dist/delivery/auto-optimizer.js.map +1 -1
  28. package/dist/delivery/candidate-workspace.d.ts +32 -0
  29. package/dist/delivery/candidate-workspace.d.ts.map +1 -0
  30. package/dist/delivery/candidate-workspace.js +117 -0
  31. package/dist/delivery/candidate-workspace.js.map +1 -0
  32. package/dist/delivery/convergence-loop.d.ts +55 -0
  33. package/dist/delivery/convergence-loop.d.ts.map +1 -1
  34. package/dist/delivery/convergence-loop.js +105 -3
  35. package/dist/delivery/convergence-loop.js.map +1 -1
  36. package/dist/delivery/decompose.d.ts +45 -0
  37. package/dist/delivery/decompose.d.ts.map +1 -0
  38. package/dist/delivery/decompose.js +122 -0
  39. package/dist/delivery/decompose.js.map +1 -0
  40. package/dist/delivery/escalation.d.ts +2 -0
  41. package/dist/delivery/escalation.d.ts.map +1 -1
  42. package/dist/delivery/escalation.js +5 -0
  43. package/dist/delivery/escalation.js.map +1 -1
  44. package/dist/delivery/explorer.d.ts +9 -0
  45. package/dist/delivery/explorer.d.ts.map +1 -1
  46. package/dist/delivery/explorer.js +83 -23
  47. package/dist/delivery/explorer.js.map +1 -1
  48. package/dist/delivery/index.d.ts +6 -1
  49. package/dist/delivery/index.d.ts.map +1 -1
  50. package/dist/delivery/index.js +5 -0
  51. package/dist/delivery/index.js.map +1 -1
  52. package/dist/delivery/run-state.d.ts +44 -0
  53. package/dist/delivery/run-state.d.ts.map +1 -0
  54. package/dist/delivery/run-state.js +169 -0
  55. package/dist/delivery/run-state.js.map +1 -0
  56. package/dist/delivery/task-sync.d.ts +47 -0
  57. package/dist/delivery/task-sync.d.ts.map +1 -0
  58. package/dist/delivery/task-sync.js +148 -0
  59. package/dist/delivery/task-sync.js.map +1 -0
  60. package/dist/mcp-router/tools/deliver.d.ts +48 -0
  61. package/dist/mcp-router/tools/deliver.d.ts.map +1 -1
  62. package/dist/mcp-router/tools/deliver.js +64 -4
  63. package/dist/mcp-router/tools/deliver.js.map +1 -1
  64. package/dist/observability/halo-exporter.d.ts +6 -3
  65. package/dist/observability/halo-exporter.d.ts.map +1 -1
  66. package/dist/observability/halo-exporter.js +40 -6
  67. package/dist/observability/halo-exporter.js.map +1 -1
  68. package/dist/state/manifest.d.ts +34 -0
  69. package/dist/state/manifest.d.ts.map +1 -0
  70. package/dist/state/manifest.js +152 -0
  71. package/dist/state/manifest.js.map +1 -0
  72. package/dist/state/reactor-inject.d.ts +14 -0
  73. package/dist/state/reactor-inject.d.ts.map +1 -0
  74. package/dist/state/reactor-inject.js +25 -0
  75. package/dist/state/reactor-inject.js.map +1 -0
  76. package/dist/tasks/beads-sync.d.ts +38 -0
  77. package/dist/tasks/beads-sync.d.ts.map +1 -0
  78. package/dist/tasks/beads-sync.js +122 -0
  79. package/dist/tasks/beads-sync.js.map +1 -0
  80. package/dist/tasks/service.d.ts +7 -0
  81. package/dist/tasks/service.d.ts.map +1 -1
  82. package/dist/tasks/service.js +23 -0
  83. package/dist/tasks/service.js.map +1 -1
  84. package/package.json +1 -1
  85. package/src/policies/enforcers/__pycache__/_common.cpython-312.pyc +0 -0
  86. package/src/policies/enforcers/delivery_enforcement.py +1 -1
  87. package/templates/hooks/deliver_autoroute.py +60 -10
  88. package/tools/agents/scripts/__pycache__/toolcall_path_normalizer.cpython-312.pyc +0 -0
@@ -68,26 +68,20 @@ export async function exploreAndCommit(task, basePrompt, executor, config) {
68
68
  return { seed, output: '', error: err instanceof Error ? err.message : String(err) };
69
69
  }
70
70
  }));
71
- // 2. Evaluate sequentially on the same baseline via apply verify → rollback
72
- const candidates = [];
73
- for (let i = 0; i < generations.length; i++) {
74
- const { seed, output, error } = generations[i];
75
- const id = `c${i + 1}`;
76
- if (error) {
77
- const candidate = {
78
- id,
79
- strategy: seed.id,
80
- output: '',
81
- applyResult: null,
82
- ladder: null,
83
- error,
84
- passed: false,
85
- score: 0,
86
- };
87
- candidates.push(candidate);
88
- config.onCandidate?.(candidate);
89
- continue;
90
- }
71
+ // 2. Evaluate candidates. With a workspace provider each candidate gets an
72
+ // isolated tree and they run CONCURRENTLY; otherwise fall back to the
73
+ // sequential in-tree apply verify rollback on the shared baseline.
74
+ const errorCandidate = (id, strategy, error) => ({
75
+ id,
76
+ strategy,
77
+ output: '',
78
+ applyResult: null,
79
+ ladder: null,
80
+ error,
81
+ passed: false,
82
+ score: 0,
83
+ });
84
+ const evaluateInTree = async (id, seed, output) => {
91
85
  const { result: applyResult, restore } = applyRevertible(output, config.projectRoot, config.applyOptions);
92
86
  let ladder = null;
93
87
  try {
@@ -98,7 +92,7 @@ export async function exploreAndCommit(task, basePrompt, executor, config) {
98
92
  finally {
99
93
  restore();
100
94
  }
101
- const candidate = {
95
+ return {
102
96
  id,
103
97
  strategy: seed.id,
104
98
  output,
@@ -107,8 +101,74 @@ export async function exploreAndCommit(task, basePrompt, executor, config) {
107
101
  passed: ladder?.passed ?? false,
108
102
  score: ladder?.score ?? 0,
109
103
  };
110
- candidates.push(candidate);
111
- config.onCandidate?.(candidate);
104
+ };
105
+ const evaluateInWorkspace = async (id, seed, output) => {
106
+ let workspace = null;
107
+ try {
108
+ workspace = config.workspaceProvider();
109
+ }
110
+ catch {
111
+ workspace = null;
112
+ }
113
+ if (!workspace)
114
+ return null; // fall back to the sequential path
115
+ try {
116
+ const applyResult = await apply(output, workspace.root, config.applyOptions);
117
+ let ladder = null;
118
+ if (!applyResult.error && applyResult.filesWritten.length > 0) {
119
+ ladder = await ladderRunner(config.rungs, workspace.root, config.ladderOptions);
120
+ }
121
+ return {
122
+ id,
123
+ strategy: seed.id,
124
+ output,
125
+ applyResult,
126
+ ladder,
127
+ passed: ladder?.passed ?? false,
128
+ score: ladder?.score ?? 0,
129
+ };
130
+ }
131
+ catch (err) {
132
+ return errorCandidate(id, seed.id, err instanceof Error ? err.message : String(err));
133
+ }
134
+ finally {
135
+ workspace.cleanup();
136
+ }
137
+ };
138
+ let candidates;
139
+ if (config.workspaceProvider) {
140
+ // Parallel pass in isolated workspaces. A candidate whose workspace could
141
+ // not be created falls back to the shared tree — those MUST run
142
+ // sequentially (after the parallel batch), or their gates would race.
143
+ const evaluated = await Promise.all(generations.map(async ({ seed, output, error }, i) => {
144
+ const id = `c${i + 1}`;
145
+ const candidate = error
146
+ ? errorCandidate(id, seed.id, error)
147
+ : await evaluateInWorkspace(id, seed, output);
148
+ if (candidate)
149
+ config.onCandidate?.(candidate); // stream progress as each finishes
150
+ return candidate;
151
+ }));
152
+ candidates = [];
153
+ for (let i = 0; i < evaluated.length; i++) {
154
+ const { seed, output } = generations[i];
155
+ let candidate = evaluated[i];
156
+ if (!candidate) {
157
+ candidate = await evaluateInTree(`c${i + 1}`, seed, output);
158
+ config.onCandidate?.(candidate);
159
+ }
160
+ candidates.push(candidate);
161
+ }
162
+ }
163
+ else {
164
+ candidates = [];
165
+ for (let i = 0; i < generations.length; i++) {
166
+ const { seed, output, error } = generations[i];
167
+ const id = `c${i + 1}`;
168
+ const candidate = error ? errorCandidate(id, seed.id, error) : await evaluateInTree(id, seed, output);
169
+ candidates.push(candidate);
170
+ config.onCandidate?.(candidate);
171
+ }
112
172
  }
113
173
  // Only candidates that wrote files and reached a real ladder run are
114
174
  // committable; anything else (executor error, no/rejected blocks) cannot
@@ -1 +1 @@
1
- {"version":3,"file":"explorer.js","sourceRoot":"","sources":["../../src/delivery/explorer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"explorer.js","sourceRoot":"","sources":["../../src/delivery/explorer.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,12 @@
5
5
  * iterations against the project's real completion gates until delivery
6
6
  * is achieved.
7
7
  */
8
- export { ConvergenceLoop, composeIterationHooks, defaultPromptBuilder, type CandidateSummary, type ConvergenceConfig, type DeliveryResult, type ExplorerSettings, type IterationDirective, type IterationRecord, type LoopExecutor, type LadderRunner, type OnIteration, type PracticeProvider, type PromptBuilder, type PromptContext, } from './convergence-loop.js';
8
+ export { ConvergenceLoop, composeIterationHooks, defaultPromptBuilder, type CandidateSummary, type ConvergenceConfig, type DeliveryResult, type ExplorerSettings, type IterationDirective, type IterationRecord, type LoopExecutor, type LadderRunner, type OnIteration, type PracticeProvider, type PromptBuilder, type PromptContext, type LoopCheckpoint, } from './convergence-loop.js';
9
+ export { saveRunState, loadRunState, newRunId, isValidRunId, deliverRunsDir, type DeliverRunState, type DeliverRunStatus, } from './run-state.js';
10
+ export { planDeliveryPhases, parsePhaseArray, phaseInstruction, shouldDecompose, type DeliveryPhase, } from './decompose.js';
11
+ export { autoMineHaloTraces, summarizeWeaknesses, isAutoMineEnabled, weaknessGuidance, loadPersistedWeaknesses, type AutoMineResult, } from './auto-mine.js';
12
+ export { createGitWorktreeProvider, isParallelExploreEnabled, type CandidateWorkspace, type WorkspaceProvider, } from './candidate-workspace.js';
13
+ export { openDeliveryTask, completeDeliveryTask, recordDeliveryOutcome, hasTaskDb, type DeliveryTaskHandle, } from './task-sync.js';
9
14
  export { createEscalationController, defaultEscalationLadder, type DefaultLadderOptions, type EscalationConfig, type EscalationController, type EscalationTier, } from './escalation.js';
10
15
  export { InMemoryPracticeStore, FilePracticeStore, extractKeywords, distillPractice, defaultPracticePath, retrievePracticesSemantic, type PracticeCard, type PracticeInput, type PracticeStore, type SemanticRetriever, type SemanticRetrieveOptions, } from './practice.js';
11
16
  export { exploreAndCommit, DEFAULT_STRATEGY_SEEDS, MAX_CANDIDATES, type CandidateResult, type ExplorationResult, type ExplorerConfig, type StrategySeed, } from './explorer.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/delivery/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,oBAAoB,EACpB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,cAAc,GACpB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,yBAAyB,EACzB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,GAC7B,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,YAAY,GAClB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,KAAK,KAAK,EACV,KAAK,cAAc,EACnB,KAAK,YAAY,GAClB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,EACX,SAAS,EACT,OAAO,EACP,cAAc,EACd,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,aAAa,GACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,eAAe,EACf,2BAA2B,EAC3B,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,EACd,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,eAAe,GACrB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,oBAAoB,EACpB,8BAA8B,EAC9B,KAAK,QAAQ,EACb,KAAK,kBAAkB,GACxB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,0BAA0B,EAC1B,KAAK,iBAAiB,EACtB,KAAK,cAAc,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,KAAK,kBAAkB,EACvB,KAAK,eAAe,GACrB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,KAAK,eAAe,GACrB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,wBAAwB,EACxB,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,GAC/B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,KAAK,cAAc,EACnB,KAAK,qBAAqB,GAC3B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,MAAM,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/delivery/index.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,11 @@
6
6
  * is achieved.
7
7
  */
8
8
  export { ConvergenceLoop, composeIterationHooks, defaultPromptBuilder, } from './convergence-loop.js';
9
+ export { saveRunState, loadRunState, newRunId, isValidRunId, deliverRunsDir, } from './run-state.js';
10
+ export { planDeliveryPhases, parsePhaseArray, phaseInstruction, shouldDecompose, } from './decompose.js';
11
+ export { autoMineHaloTraces, summarizeWeaknesses, isAutoMineEnabled, weaknessGuidance, loadPersistedWeaknesses, } from './auto-mine.js';
12
+ export { createGitWorktreeProvider, isParallelExploreEnabled, } from './candidate-workspace.js';
13
+ export { openDeliveryTask, completeDeliveryTask, recordDeliveryOutcome, hasTaskDb, } from './task-sync.js';
9
14
  export { createEscalationController, defaultEscalationLadder, } from './escalation.js';
10
15
  export { InMemoryPracticeStore, FilePracticeStore, extractKeywords, distillPractice, defaultPracticePath, retrievePracticesSemantic, } from './practice.js';
11
16
  export { exploreAndCommit, DEFAULT_STRATEGY_SEEDS, MAX_CANDIDATES, } from './explorer.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/delivery/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,oBAAoB,GAarB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,GAKxB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,yBAAyB,GAM1B,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,GAKf,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,gBAAgB,EAChB,WAAW,GAIZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,iBAAiB,EACjB,YAAY,GAIb,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,EACX,SAAS,EACT,OAAO,EACP,cAAc,GAMf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,eAAe,EACf,2BAA2B,EAC3B,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,GAMf,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,oBAAoB,EACpB,8BAA8B,GAG/B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,0BAA0B,GAG3B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,GAGb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,cAAc,GAEf,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,wBAAwB,GAGzB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,GAGpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,kBAAkB,EAAkC,MAAM,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/delivery/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,oBAAoB,GAcrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,cAAc,GAGf,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,eAAe,GAEhB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,GAExB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,yBAAyB,EACzB,wBAAwB,GAGzB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,SAAS,GAEV,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,GAKxB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,yBAAyB,GAM1B,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,GAKf,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,gBAAgB,EAChB,WAAW,GAIZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,iBAAiB,EACjB,YAAY,GAIb,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,EACX,SAAS,EACT,OAAO,EACP,cAAc,GAMf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,eAAe,EACf,2BAA2B,EAC3B,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,GAMf,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,oBAAoB,EACpB,8BAA8B,GAG/B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,0BAA0B,GAG3B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,GAGb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,cAAc,GAEf,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,wBAAwB,GAGzB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,GAGpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,kBAAkB,EAAkC,MAAM,mCAAmC,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Durable Delivery Runs — persist convergence-loop state across process
3
+ * boundaries so very long missions survive interruption (crash, timeout,
4
+ * operator stop) and resume exactly where they left off.
5
+ *
6
+ * One directory per run under `<projectRoot>/.uap/deliver-runs/<runId>/` with
7
+ * a single `state.json`: run metadata + the loop's last LoopCheckpoint (and,
8
+ * for decomposed runs, the phase plan + cursor). Writes are atomic
9
+ * (tmp + rename) and fail-soft — persistence must never break a run.
10
+ */
11
+ import type { LoopCheckpoint } from './convergence-loop.js';
12
+ import type { DeliveryPhase } from './decompose.js';
13
+ export type DeliverRunStatus = 'running' | 'delivered' | 'failed' | 'interrupted';
14
+ export interface DeliverRunState {
15
+ runId: string;
16
+ instruction: string;
17
+ presetId: string;
18
+ projectRoot: string;
19
+ status: DeliverRunStatus;
20
+ createdAt: string;
21
+ updatedAt: string;
22
+ /** Loop state after the last completed turn (absent before turn 1). */
23
+ checkpoint?: LoopCheckpoint;
24
+ /** Decomposed missions: the phase plan and the index of the phase in flight. */
25
+ phases?: DeliveryPhase[];
26
+ phaseIndex?: number;
27
+ /** One-line summaries of completed phases (harness-owned, injected into later phases). */
28
+ phaseSummaries?: string[];
29
+ /** Task-DB id opened for this mission, so --resume reuses it instead of duplicating. */
30
+ taskId?: string;
31
+ }
32
+ export declare function deliverRunsDir(projectRoot: string): string;
33
+ export declare function newRunId(): string;
34
+ /** Run ids are path components; refuse anything that is not a plain slug. */
35
+ export declare function isValidRunId(id: string): boolean;
36
+ /** Persist run state atomically. Fail-soft: returns false on any error. */
37
+ export declare function saveRunState(state: DeliverRunState): boolean;
38
+ /**
39
+ * Load a run for resumption. `'latest'` resolves to the most recently updated
40
+ * non-delivered run (an interrupted process leaves status 'running' behind —
41
+ * that IS the resumable state). Returns null when nothing resumable exists.
42
+ */
43
+ export declare function loadRunState(projectRoot: string, runId: string): DeliverRunState | null;
44
+ //# sourceMappingURL=run-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-state.d.ts","sourceRoot":"","sources":["../../src/delivery/run-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,aAAa,CAAC;AAElF,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,gFAAgF;IAChF,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0FAA0F;IAC1F,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,wFAAwF;IACxF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,QAAQ,IAAI,MAAM,CAGjC;AAED,6EAA6E;AAC7E,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAY5D;AAwFD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAqBvF"}
@@ -0,0 +1,169 @@
1
+ /**
2
+ * Durable Delivery Runs — persist convergence-loop state across process
3
+ * boundaries so very long missions survive interruption (crash, timeout,
4
+ * operator stop) and resume exactly where they left off.
5
+ *
6
+ * One directory per run under `<projectRoot>/.uap/deliver-runs/<runId>/` with
7
+ * a single `state.json`: run metadata + the loop's last LoopCheckpoint (and,
8
+ * for decomposed runs, the phase plan + cursor). Writes are atomic
9
+ * (tmp + rename) and fail-soft — persistence must never break a run.
10
+ */
11
+ import { existsSync, mkdirSync, readFileSync, readdirSync, renameSync, writeFileSync } from 'fs';
12
+ import { join } from 'path';
13
+ import { randomBytes } from 'crypto';
14
+ export function deliverRunsDir(projectRoot) {
15
+ return join(projectRoot, '.uap', 'deliver-runs');
16
+ }
17
+ export function newRunId() {
18
+ const stamp = new Date().toISOString().replace(/[-:]/g, '').replace(/\..+/, '');
19
+ return `run-${stamp}-${randomBytes(3).toString('hex')}`;
20
+ }
21
+ /** Run ids are path components; refuse anything that is not a plain slug. */
22
+ export function isValidRunId(id) {
23
+ return /^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/.test(id) && !id.includes('..');
24
+ }
25
+ /** Persist run state atomically. Fail-soft: returns false on any error. */
26
+ export function saveRunState(state) {
27
+ try {
28
+ const dir = join(deliverRunsDir(state.projectRoot), state.runId);
29
+ mkdirSync(dir, { recursive: true });
30
+ const path = join(dir, 'state.json');
31
+ const tmp = `${path}.tmp`;
32
+ writeFileSync(tmp, JSON.stringify({ ...state, updatedAt: new Date().toISOString() }, null, 2), 'utf-8');
33
+ renameSync(tmp, path);
34
+ return true;
35
+ }
36
+ catch {
37
+ return false;
38
+ }
39
+ }
40
+ const VALID_STATUSES = new Set(['running', 'delivered', 'failed', 'interrupted']);
41
+ const MAX_INSTRUCTION_CHARS = 8000;
42
+ const MAX_PHASES = 5;
43
+ const MAX_SUMMARY_CHARS = 300;
44
+ /**
45
+ * Read + SANITIZE a persisted run state. The state file lives inside the
46
+ * target project tree, i.e. on the untrusted side of the boundary (a generator
47
+ * model or repo content could seed one), so nothing loaded here is trusted:
48
+ * the runId is forced back to the validated directory name (a planted
49
+ * traversal runId would otherwise steer every later save), text fields are
50
+ * length-clamped, phases re-validated against the planner's own limits, and
51
+ * unknown statuses rejected.
52
+ */
53
+ function readState(projectRoot, runId) {
54
+ try {
55
+ const path = join(deliverRunsDir(projectRoot), runId, 'state.json');
56
+ if (!existsSync(path))
57
+ return null;
58
+ const parsed = JSON.parse(readFileSync(path, 'utf-8'));
59
+ if (!parsed || typeof parsed.instruction !== 'string' || !parsed.instruction.trim()) {
60
+ return null;
61
+ }
62
+ if (!VALID_STATUSES.has(parsed.status))
63
+ return null;
64
+ // The directory name is the validated identity; never trust the embedded id.
65
+ parsed.runId = runId;
66
+ parsed.projectRoot = projectRoot;
67
+ parsed.instruction = parsed.instruction.slice(0, MAX_INSTRUCTION_CHARS);
68
+ if (typeof parsed.updatedAt !== 'string' || Number.isNaN(Date.parse(parsed.updatedAt))) {
69
+ parsed.updatedAt = new Date(0).toISOString(); // sorts last for 'latest'
70
+ }
71
+ if (parsed.phases !== undefined) {
72
+ if (!Array.isArray(parsed.phases))
73
+ return null;
74
+ const phases = [];
75
+ for (const ph of parsed.phases.slice(0, MAX_PHASES)) {
76
+ if (typeof ph !== 'object' || ph === null)
77
+ return null;
78
+ const { id, title, goal } = ph;
79
+ if (typeof id !== 'string' || typeof title !== 'string' || typeof goal !== 'string')
80
+ return null;
81
+ if (!/^[a-z0-9][a-z0-9-]{0,47}$/.test(id))
82
+ return null;
83
+ phases.push({ id, title: title.slice(0, 120), goal: goal.slice(0, 600) });
84
+ }
85
+ parsed.phases = phases;
86
+ }
87
+ if (parsed.phaseSummaries !== undefined) {
88
+ if (!Array.isArray(parsed.phaseSummaries))
89
+ return null;
90
+ parsed.phaseSummaries = parsed.phaseSummaries
91
+ .slice(0, MAX_PHASES * 2)
92
+ .filter((x) => typeof x === 'string')
93
+ .map((x) => x.slice(0, MAX_SUMMARY_CHARS));
94
+ }
95
+ if (parsed.taskId !== undefined && (typeof parsed.taskId !== 'string' || !/^uap-[0-9a-f]{8}$/.test(parsed.taskId))) {
96
+ delete parsed.taskId;
97
+ }
98
+ if (parsed.checkpoint) {
99
+ const cp = parsed.checkpoint;
100
+ // Seeds are re-injected verbatim into every candidate prompt on resume —
101
+ // enforce the same bounds the ideation generator does at creation time.
102
+ if (cp.seeds !== undefined) {
103
+ if (!Array.isArray(cp.seeds)) {
104
+ delete cp.seeds;
105
+ }
106
+ else {
107
+ const seeds = [];
108
+ for (const seed of cp.seeds.slice(0, 8)) {
109
+ if (typeof seed !== 'object' || seed === null)
110
+ continue;
111
+ const { id, hint } = seed;
112
+ if (typeof id !== 'string' || typeof hint !== 'string')
113
+ continue;
114
+ if (!/^[a-z0-9][a-z0-9-]{0,47}$/.test(id))
115
+ continue;
116
+ seeds.push({ id, hint: hint.slice(0, 400) });
117
+ }
118
+ cp.seeds = seeds.length >= 2 ? seeds : undefined;
119
+ }
120
+ }
121
+ if (cp.candidates !== undefined) {
122
+ cp.candidates =
123
+ typeof cp.candidates === 'number' && Number.isFinite(cp.candidates)
124
+ ? Math.min(8, Math.max(2, Math.round(cp.candidates)))
125
+ : undefined;
126
+ }
127
+ cp.criticEnabled = cp.criticEnabled === undefined ? undefined : Boolean(cp.criticEnabled);
128
+ cp.modelEscalated = cp.modelEscalated === undefined ? undefined : Boolean(cp.modelEscalated);
129
+ }
130
+ return parsed;
131
+ }
132
+ catch {
133
+ return null;
134
+ }
135
+ }
136
+ /**
137
+ * Load a run for resumption. `'latest'` resolves to the most recently updated
138
+ * non-delivered run (an interrupted process leaves status 'running' behind —
139
+ * that IS the resumable state). Returns null when nothing resumable exists.
140
+ */
141
+ export function loadRunState(projectRoot, runId) {
142
+ if (runId !== 'latest') {
143
+ if (!isValidRunId(runId))
144
+ return null;
145
+ return readState(projectRoot, runId);
146
+ }
147
+ const dir = deliverRunsDir(projectRoot);
148
+ if (!existsSync(dir))
149
+ return null;
150
+ let entries;
151
+ try {
152
+ entries = readdirSync(dir);
153
+ }
154
+ catch {
155
+ return null;
156
+ }
157
+ let best = null;
158
+ for (const id of entries) {
159
+ if (!isValidRunId(id))
160
+ continue;
161
+ const state = readState(projectRoot, id);
162
+ if (!state || state.status === 'delivered')
163
+ continue;
164
+ if (!best || state.updatedAt > best.updatedAt)
165
+ best = state;
166
+ }
167
+ return best;
168
+ }
169
+ //# sourceMappingURL=run-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-state.js","sourceRoot":"","sources":["../../src/delivery/run-state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Delivery ↔ Task/Memory sync — every `uap deliver` run leaves a durable,
3
+ * queryable trail: a task in the project's task DB (opened in_progress at run
4
+ * start, closed on success, reopened-with-notes on failure) and a structured
5
+ * `decision`/`lesson` short-term memory entry describing the outcome.
6
+ *
7
+ * This is how the memory/task system becomes the live "what is actually
8
+ * happening / what actually happened" record instead of a stale import:
9
+ * agents read `uap task ready` + `uap memory query` and see real deliveries.
10
+ *
11
+ * Everything here is fail-soft by contract: task/memory persistence must
12
+ * never block or break a delivery.
13
+ */
14
+ import type { DeliveryResult } from './convergence-loop.js';
15
+ export interface DeliveryTaskHandle {
16
+ id: string;
17
+ /** Kept so completion reuses the same service/DB the open call bound to. */
18
+ service: import('../tasks/service.js').TaskService;
19
+ }
20
+ /** Only sync tasks for projects that already track tasks — never scaffold a
21
+ * task DB into an arbitrary target repo as a side effect of a delivery. */
22
+ export declare function hasTaskDb(projectRoot: string): boolean;
23
+ /**
24
+ * Open (and claim) a task for this delivery run. Returns null when the
25
+ * project has no task DB or anything fails.
26
+ */
27
+ export declare function openDeliveryTask(instruction: string, projectRoot: string, parentId?: string): Promise<DeliveryTaskHandle | null>;
28
+ /**
29
+ * Re-bind to an existing mission task on --resume (instead of opening a
30
+ * duplicate) and mark it active again. Returns null when the task or DB is
31
+ * gone — callers fall back to leaving the trail incomplete rather than failing.
32
+ */
33
+ export declare function reopenDeliveryTask(taskId: string, projectRoot: string): Promise<DeliveryTaskHandle | null>;
34
+ /**
35
+ * Record the run's outcome on its task: close as done on success; on failure
36
+ * reopen (status 'open') with the failure context in notes so the work
37
+ * surfaces in `uap task ready` instead of rotting as in_progress.
38
+ */
39
+ export declare function completeDeliveryTask(handle: DeliveryTaskHandle | null, result: DeliveryResult): void;
40
+ /**
41
+ * Record a structured outcome memory (`decision` on success, `lesson` on
42
+ * failure) so future sessions see what was actually built and how it went —
43
+ * not just session-end heartbeats. Only writes when the project already has
44
+ * a short-term memory DB (never scaffolds one into a target repo).
45
+ */
46
+ export declare function recordDeliveryOutcome(instruction: string, projectRoot: string, result: DeliveryResult, modelId: string): Promise<void>;
47
+ //# sourceMappingURL=task-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-sync.d.ts","sourceRoot":"","sources":["../../src/delivery/task-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,4EAA4E;IAC5E,OAAO,EAAE,OAAO,qBAAqB,EAAE,WAAW,CAAC;CACpD;AAMD;2EAC2E;AAC3E,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAEtD;AAsBD;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAkBpC;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAapC;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,kBAAkB,GAAG,IAAI,EACjC,MAAM,EAAE,cAAc,GACrB,IAAI,CAmBN;AAMD;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAiBf"}
@@ -0,0 +1,148 @@
1
+ /**
2
+ * Delivery ↔ Task/Memory sync — every `uap deliver` run leaves a durable,
3
+ * queryable trail: a task in the project's task DB (opened in_progress at run
4
+ * start, closed on success, reopened-with-notes on failure) and a structured
5
+ * `decision`/`lesson` short-term memory entry describing the outcome.
6
+ *
7
+ * This is how the memory/task system becomes the live "what is actually
8
+ * happening / what actually happened" record instead of a stale import:
9
+ * agents read `uap task ready` + `uap memory query` and see real deliveries.
10
+ *
11
+ * Everything here is fail-soft by contract: task/memory persistence must
12
+ * never block or break a delivery.
13
+ */
14
+ import { existsSync } from 'fs';
15
+ import { join } from 'path';
16
+ function taskDbPath(projectRoot) {
17
+ return join(projectRoot, '.uap', 'tasks', 'tasks.db');
18
+ }
19
+ /** Only sync tasks for projects that already track tasks — never scaffold a
20
+ * task DB into an arbitrary target repo as a side effect of a delivery. */
21
+ export function hasTaskDb(projectRoot) {
22
+ return existsSync(taskDbPath(projectRoot));
23
+ }
24
+ /**
25
+ * TaskDatabase is a process-wide singleton keyed by the FIRST dbPath opened;
26
+ * if some other DB is already bound in this process, writing "here" would
27
+ * silently land in the wrong project. Verify the binding and skip sync when
28
+ * it doesn't match. Fail-soft: verification errors mean "don't sync".
29
+ */
30
+ async function taskDbBindsTo(projectRoot) {
31
+ try {
32
+ const { TaskDatabase } = await import('../tasks/database.js');
33
+ const { realpathSync } = await import('fs');
34
+ const db = TaskDatabase.getInstance(taskDbPath(projectRoot)).getDatabase();
35
+ const list = db.pragma('database_list');
36
+ const main = list.find((d) => d.name === 'main');
37
+ if (!main?.file)
38
+ return false;
39
+ return realpathSync(main.file) === realpathSync(taskDbPath(projectRoot));
40
+ }
41
+ catch {
42
+ return false;
43
+ }
44
+ }
45
+ /**
46
+ * Open (and claim) a task for this delivery run. Returns null when the
47
+ * project has no task DB or anything fails.
48
+ */
49
+ export async function openDeliveryTask(instruction, projectRoot, parentId) {
50
+ if (!hasTaskDb(projectRoot))
51
+ return null;
52
+ if (!(await taskDbBindsTo(projectRoot)))
53
+ return null;
54
+ try {
55
+ const { TaskService } = await import('../tasks/service.js');
56
+ const service = new TaskService({ dbPath: taskDbPath(projectRoot), agentId: 'uap-deliver' });
57
+ const task = service.create({
58
+ title: `deliver: ${instruction.slice(0, 100)}`,
59
+ description: instruction.slice(0, 2000),
60
+ type: 'task',
61
+ labels: ['deliver'],
62
+ parentId,
63
+ });
64
+ service.update(task.id, { status: 'in_progress', assignee: 'uap-deliver' });
65
+ return { id: task.id, service };
66
+ }
67
+ catch {
68
+ return null;
69
+ }
70
+ }
71
+ /**
72
+ * Re-bind to an existing mission task on --resume (instead of opening a
73
+ * duplicate) and mark it active again. Returns null when the task or DB is
74
+ * gone — callers fall back to leaving the trail incomplete rather than failing.
75
+ */
76
+ export async function reopenDeliveryTask(taskId, projectRoot) {
77
+ if (!hasTaskDb(projectRoot))
78
+ return null;
79
+ if (!(await taskDbBindsTo(projectRoot)))
80
+ return null;
81
+ try {
82
+ const { TaskService } = await import('../tasks/service.js');
83
+ const service = new TaskService({ dbPath: taskDbPath(projectRoot), agentId: 'uap-deliver' });
84
+ const task = service.get(taskId);
85
+ if (!task)
86
+ return null;
87
+ service.update(taskId, { status: 'in_progress', assignee: 'uap-deliver' });
88
+ return { id: taskId, service };
89
+ }
90
+ catch {
91
+ return null;
92
+ }
93
+ }
94
+ /**
95
+ * Record the run's outcome on its task: close as done on success; on failure
96
+ * reopen (status 'open') with the failure context in notes so the work
97
+ * surfaces in `uap task ready` instead of rotting as in_progress.
98
+ */
99
+ export function completeDeliveryTask(handle, result) {
100
+ if (!handle)
101
+ return;
102
+ try {
103
+ if (result.success) {
104
+ handle.service.close(handle.id, result.alreadyDelivered
105
+ ? 'already delivered (baseline green)'
106
+ : `delivered in ${result.turns} turn(s)`);
107
+ }
108
+ else {
109
+ handle.service.update(handle.id, {
110
+ status: 'open',
111
+ notes: `deliver failed after ${result.turns} turn(s); best ${Math.round(result.bestScore * 100)}% of gates (turn ${result.bestTurn}). ${result.finalFeedback.slice(0, 500)}`,
112
+ });
113
+ }
114
+ }
115
+ catch {
116
+ // task sync is best-effort
117
+ }
118
+ }
119
+ function memoryDbPath(projectRoot) {
120
+ return join(projectRoot, 'agents', 'data', 'memory', 'short_term.db');
121
+ }
122
+ /**
123
+ * Record a structured outcome memory (`decision` on success, `lesson` on
124
+ * failure) so future sessions see what was actually built and how it went —
125
+ * not just session-end heartbeats. Only writes when the project already has
126
+ * a short-term memory DB (never scaffolds one into a target repo).
127
+ */
128
+ export async function recordDeliveryOutcome(instruction, projectRoot, result, modelId) {
129
+ if (!existsSync(memoryDbPath(projectRoot)))
130
+ return;
131
+ try {
132
+ const { SQLiteShortTermMemory } = await import('../memory/short-term/sqlite.js');
133
+ const memory = new SQLiteShortTermMemory({ dbPath: memoryDbPath(projectRoot) });
134
+ const type = result.success ? 'decision' : 'lesson';
135
+ const verdict = result.success
136
+ ? result.alreadyDelivered
137
+ ? 'already delivered (baseline green)'
138
+ : `delivered in ${result.turns} turn(s)`
139
+ : `NOT delivered after ${result.turns} turn(s), best ${Math.round(result.bestScore * 100)}% of gates`;
140
+ const content = `[deliver] ${verdict} — model ${modelId} — task: ${instruction.slice(0, 300)}`;
141
+ await memory.store(type, content, result.success ? 6 : 7);
142
+ await memory.close?.();
143
+ }
144
+ catch {
145
+ // memory recording is best-effort
146
+ }
147
+ }
148
+ //# sourceMappingURL=task-sync.js.map