conatus 0.1.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 (1059) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +189 -0
  3. package/dist/adapter-layer.d.ts +67 -0
  4. package/dist/adapter-layer.d.ts.map +1 -0
  5. package/dist/adapter-layer.js +50 -0
  6. package/dist/adapter-layer.js.map +1 -0
  7. package/dist/adapters/a2a-adapter.d.ts +49 -0
  8. package/dist/adapters/a2a-adapter.d.ts.map +1 -0
  9. package/dist/adapters/a2a-adapter.js +211 -0
  10. package/dist/adapters/a2a-adapter.js.map +1 -0
  11. package/dist/adapters/a2a-client.d.ts +28 -0
  12. package/dist/adapters/a2a-client.d.ts.map +1 -0
  13. package/dist/adapters/a2a-client.js +178 -0
  14. package/dist/adapters/a2a-client.js.map +1 -0
  15. package/dist/adapters/browser-use-cli.d.ts +19 -0
  16. package/dist/adapters/browser-use-cli.d.ts.map +1 -0
  17. package/dist/adapters/browser-use-cli.js +112 -0
  18. package/dist/adapters/browser-use-cli.js.map +1 -0
  19. package/dist/adapters/claude-api.d.ts +10 -0
  20. package/dist/adapters/claude-api.d.ts.map +1 -0
  21. package/dist/adapters/claude-api.js +63 -0
  22. package/dist/adapters/claude-api.js.map +1 -0
  23. package/dist/adapters/claude-code-cli.d.ts +14 -0
  24. package/dist/adapters/claude-code-cli.d.ts.map +1 -0
  25. package/dist/adapters/claude-code-cli.js +99 -0
  26. package/dist/adapters/claude-code-cli.js.map +1 -0
  27. package/dist/adapters/file-existence-datasource.d.ts +16 -0
  28. package/dist/adapters/file-existence-datasource.d.ts.map +1 -0
  29. package/dist/adapters/file-existence-datasource.js +71 -0
  30. package/dist/adapters/file-existence-datasource.js.map +1 -0
  31. package/dist/adapters/github-issue-datasource.d.ts +45 -0
  32. package/dist/adapters/github-issue-datasource.d.ts.map +1 -0
  33. package/dist/adapters/github-issue-datasource.js +329 -0
  34. package/dist/adapters/github-issue-datasource.js.map +1 -0
  35. package/dist/adapters/github-issue.d.ts +87 -0
  36. package/dist/adapters/github-issue.d.ts.map +1 -0
  37. package/dist/adapters/github-issue.js +497 -0
  38. package/dist/adapters/github-issue.js.map +1 -0
  39. package/dist/adapters/openai-codex.d.ts +26 -0
  40. package/dist/adapters/openai-codex.d.ts.map +1 -0
  41. package/dist/adapters/openai-codex.js +112 -0
  42. package/dist/adapters/openai-codex.js.map +1 -0
  43. package/dist/adapters/shell-datasource.d.ts +36 -0
  44. package/dist/adapters/shell-datasource.d.ts.map +1 -0
  45. package/dist/adapters/shell-datasource.js +138 -0
  46. package/dist/adapters/shell-datasource.js.map +1 -0
  47. package/dist/capability-detector.d.ts +124 -0
  48. package/dist/capability-detector.d.ts.map +1 -0
  49. package/dist/capability-detector.js +576 -0
  50. package/dist/capability-detector.js.map +1 -0
  51. package/dist/character-config.d.ts +34 -0
  52. package/dist/character-config.d.ts.map +1 -0
  53. package/dist/character-config.js +53 -0
  54. package/dist/character-config.js.map +1 -0
  55. package/dist/cli/cli-logger.d.ts +3 -0
  56. package/dist/cli/cli-logger.d.ts.map +1 -0
  57. package/dist/cli/cli-logger.js +12 -0
  58. package/dist/cli/cli-logger.js.map +1 -0
  59. package/dist/cli/commands/config.d.ts +12 -0
  60. package/dist/cli/commands/config.d.ts.map +1 -0
  61. package/dist/cli/commands/config.js +345 -0
  62. package/dist/cli/commands/config.js.map +1 -0
  63. package/dist/cli/commands/daemon.d.ts +6 -0
  64. package/dist/cli/commands/daemon.d.ts.map +1 -0
  65. package/dist/cli/commands/daemon.js +99 -0
  66. package/dist/cli/commands/daemon.js.map +1 -0
  67. package/dist/cli/commands/goal-raw.d.ts +7 -0
  68. package/dist/cli/commands/goal-raw.d.ts.map +1 -0
  69. package/dist/cli/commands/goal-raw.js +93 -0
  70. package/dist/cli/commands/goal-raw.js.map +1 -0
  71. package/dist/cli/commands/goal-utils.d.ts +41 -0
  72. package/dist/cli/commands/goal-utils.d.ts.map +1 -0
  73. package/dist/cli/commands/goal-utils.js +184 -0
  74. package/dist/cli/commands/goal-utils.js.map +1 -0
  75. package/dist/cli/commands/goal.d.ts +22 -0
  76. package/dist/cli/commands/goal.d.ts.map +1 -0
  77. package/dist/cli/commands/goal.js +382 -0
  78. package/dist/cli/commands/goal.js.map +1 -0
  79. package/dist/cli/commands/plugin.d.ts +9 -0
  80. package/dist/cli/commands/plugin.d.ts.map +1 -0
  81. package/dist/cli/commands/plugin.js +336 -0
  82. package/dist/cli/commands/plugin.js.map +1 -0
  83. package/dist/cli/commands/report.d.ts +3 -0
  84. package/dist/cli/commands/report.d.ts.map +1 -0
  85. package/dist/cli/commands/report.js +29 -0
  86. package/dist/cli/commands/report.js.map +1 -0
  87. package/dist/cli/commands/run.d.ts +10 -0
  88. package/dist/cli/commands/run.d.ts.map +1 -0
  89. package/dist/cli/commands/run.js +159 -0
  90. package/dist/cli/commands/run.js.map +1 -0
  91. package/dist/cli/commands/suggest.d.ts +7 -0
  92. package/dist/cli/commands/suggest.d.ts.map +1 -0
  93. package/dist/cli/commands/suggest.js +466 -0
  94. package/dist/cli/commands/suggest.js.map +1 -0
  95. package/dist/cli/ensure-api-key.d.ts +14 -0
  96. package/dist/cli/ensure-api-key.d.ts.map +1 -0
  97. package/dist/cli/ensure-api-key.js +28 -0
  98. package/dist/cli/ensure-api-key.js.map +1 -0
  99. package/dist/cli/setup.d.ts +18 -0
  100. package/dist/cli/setup.d.ts.map +1 -0
  101. package/dist/cli/setup.js +147 -0
  102. package/dist/cli/setup.js.map +1 -0
  103. package/dist/cli/utils.d.ts +9 -0
  104. package/dist/cli/utils.d.ts.map +1 -0
  105. package/dist/cli/utils.js +113 -0
  106. package/dist/cli/utils.js.map +1 -0
  107. package/dist/cli-runner.d.ts +32 -0
  108. package/dist/cli-runner.d.ts.map +1 -0
  109. package/dist/cli-runner.js +467 -0
  110. package/dist/cli-runner.js.map +1 -0
  111. package/dist/codex-llm-client.d.ts +47 -0
  112. package/dist/codex-llm-client.d.ts.map +1 -0
  113. package/dist/codex-llm-client.js +193 -0
  114. package/dist/codex-llm-client.js.map +1 -0
  115. package/dist/context-provider.d.ts +16 -0
  116. package/dist/context-provider.d.ts.map +1 -0
  117. package/dist/context-provider.js +107 -0
  118. package/dist/context-provider.js.map +1 -0
  119. package/dist/context-providers/workspace-context.d.ts +8 -0
  120. package/dist/context-providers/workspace-context.d.ts.map +1 -0
  121. package/dist/context-providers/workspace-context.js +217 -0
  122. package/dist/context-providers/workspace-context.js.map +1 -0
  123. package/dist/core/suggest/repo-context.d.ts +8 -0
  124. package/dist/core/suggest/repo-context.d.ts.map +1 -0
  125. package/dist/core/suggest/repo-context.js +154 -0
  126. package/dist/core/suggest/repo-context.js.map +1 -0
  127. package/dist/core-loop.d.ts +63 -0
  128. package/dist/core-loop.d.ts.map +1 -0
  129. package/dist/core-loop.js +521 -0
  130. package/dist/core-loop.js.map +1 -0
  131. package/dist/cross-goal-portfolio.d.ts +153 -0
  132. package/dist/cross-goal-portfolio.d.ts.map +1 -0
  133. package/dist/cross-goal-portfolio.js +790 -0
  134. package/dist/cross-goal-portfolio.js.map +1 -0
  135. package/dist/curiosity-engine.d.ts +177 -0
  136. package/dist/curiosity-engine.d.ts.map +1 -0
  137. package/dist/curiosity-engine.js +736 -0
  138. package/dist/curiosity-engine.js.map +1 -0
  139. package/dist/daemon-runner.d.ts +109 -0
  140. package/dist/daemon-runner.d.ts.map +1 -0
  141. package/dist/daemon-runner.js +389 -0
  142. package/dist/daemon-runner.js.map +1 -0
  143. package/dist/data-source-adapter.d.ts +42 -0
  144. package/dist/data-source-adapter.d.ts.map +1 -0
  145. package/dist/data-source-adapter.js +223 -0
  146. package/dist/data-source-adapter.js.map +1 -0
  147. package/dist/drive/drive-scorer.d.ts +96 -0
  148. package/dist/drive/drive-scorer.d.ts.map +1 -0
  149. package/dist/drive/drive-scorer.js +240 -0
  150. package/dist/drive/drive-scorer.js.map +1 -0
  151. package/dist/drive/drive-system.d.ts +99 -0
  152. package/dist/drive/drive-system.d.ts.map +1 -0
  153. package/dist/drive/drive-system.js +344 -0
  154. package/dist/drive/drive-system.js.map +1 -0
  155. package/dist/drive/gap-calculator.d.ts +80 -0
  156. package/dist/drive/gap-calculator.d.ts.map +1 -0
  157. package/dist/drive/gap-calculator.js +219 -0
  158. package/dist/drive/gap-calculator.js.map +1 -0
  159. package/dist/drive/reward-log.d.ts +51 -0
  160. package/dist/drive/reward-log.d.ts.map +1 -0
  161. package/dist/drive/reward-log.js +48 -0
  162. package/dist/drive/reward-log.js.map +1 -0
  163. package/dist/drive/satisficing-helpers.d.ts +28 -0
  164. package/dist/drive/satisficing-helpers.d.ts.map +1 -0
  165. package/dist/drive/satisficing-helpers.js +111 -0
  166. package/dist/drive/satisficing-helpers.js.map +1 -0
  167. package/dist/drive/satisficing-judge.d.ts +140 -0
  168. package/dist/drive/satisficing-judge.d.ts.map +1 -0
  169. package/dist/drive/satisficing-judge.js +432 -0
  170. package/dist/drive/satisficing-judge.js.map +1 -0
  171. package/dist/drive/satisficing-propagation.d.ts +30 -0
  172. package/dist/drive/satisficing-propagation.d.ts.map +1 -0
  173. package/dist/drive/satisficing-propagation.js +196 -0
  174. package/dist/drive/satisficing-propagation.js.map +1 -0
  175. package/dist/drive/stall-detector.d.ts +113 -0
  176. package/dist/drive/stall-detector.d.ts.map +1 -0
  177. package/dist/drive/stall-detector.js +378 -0
  178. package/dist/drive/stall-detector.js.map +1 -0
  179. package/dist/drive-scorer.d.ts +96 -0
  180. package/dist/drive-scorer.d.ts.map +1 -0
  181. package/dist/drive-scorer.js +235 -0
  182. package/dist/drive-scorer.js.map +1 -0
  183. package/dist/drive-system.d.ts +92 -0
  184. package/dist/drive-system.d.ts.map +1 -0
  185. package/dist/drive-system.js +325 -0
  186. package/dist/drive-system.js.map +1 -0
  187. package/dist/embedding-client.d.ts +49 -0
  188. package/dist/embedding-client.d.ts.map +1 -0
  189. package/dist/embedding-client.js +141 -0
  190. package/dist/embedding-client.js.map +1 -0
  191. package/dist/ethics-gate.d.ts +70 -0
  192. package/dist/ethics-gate.d.ts.map +1 -0
  193. package/dist/ethics-gate.js +567 -0
  194. package/dist/ethics-gate.js.map +1 -0
  195. package/dist/event-server.d.ts +23 -0
  196. package/dist/event-server.d.ts.map +1 -0
  197. package/dist/event-server.js +69 -0
  198. package/dist/event-server.js.map +1 -0
  199. package/dist/execution/adapter-layer.d.ts +88 -0
  200. package/dist/execution/adapter-layer.d.ts.map +1 -0
  201. package/dist/execution/adapter-layer.js +123 -0
  202. package/dist/execution/adapter-layer.js.map +1 -0
  203. package/dist/execution/checkpoint-manager.d.ts +49 -0
  204. package/dist/execution/checkpoint-manager.d.ts.map +1 -0
  205. package/dist/execution/checkpoint-manager.js +143 -0
  206. package/dist/execution/checkpoint-manager.js.map +1 -0
  207. package/dist/execution/context-budget.d.ts +35 -0
  208. package/dist/execution/context-budget.d.ts.map +1 -0
  209. package/dist/execution/context-budget.js +73 -0
  210. package/dist/execution/context-budget.js.map +1 -0
  211. package/dist/execution/dimension-selector.d.ts +22 -0
  212. package/dist/execution/dimension-selector.d.ts.map +1 -0
  213. package/dist/execution/dimension-selector.js +57 -0
  214. package/dist/execution/dimension-selector.js.map +1 -0
  215. package/dist/execution/impact-analyzer.d.ts +24 -0
  216. package/dist/execution/impact-analyzer.d.ts.map +1 -0
  217. package/dist/execution/impact-analyzer.js +88 -0
  218. package/dist/execution/impact-analyzer.js.map +1 -0
  219. package/dist/execution/parallel-executor.d.ts +35 -0
  220. package/dist/execution/parallel-executor.d.ts.map +1 -0
  221. package/dist/execution/parallel-executor.js +162 -0
  222. package/dist/execution/parallel-executor.js.map +1 -0
  223. package/dist/execution/pipeline-executor.d.ts +54 -0
  224. package/dist/execution/pipeline-executor.d.ts.map +1 -0
  225. package/dist/execution/pipeline-executor.js +250 -0
  226. package/dist/execution/pipeline-executor.js.map +1 -0
  227. package/dist/execution/reflection-generator.d.ts +24 -0
  228. package/dist/execution/reflection-generator.d.ts.map +1 -0
  229. package/dist/execution/reflection-generator.js +143 -0
  230. package/dist/execution/reflection-generator.js.map +1 -0
  231. package/dist/execution/result-reconciler.d.ts +23 -0
  232. package/dist/execution/result-reconciler.d.ts.map +1 -0
  233. package/dist/execution/result-reconciler.js +109 -0
  234. package/dist/execution/result-reconciler.js.map +1 -0
  235. package/dist/execution/session-manager.d.ts +182 -0
  236. package/dist/execution/session-manager.d.ts.map +1 -0
  237. package/dist/execution/session-manager.js +506 -0
  238. package/dist/execution/session-manager.js.map +1 -0
  239. package/dist/execution/task-approval-check.d.ts +9 -0
  240. package/dist/execution/task-approval-check.d.ts.map +1 -0
  241. package/dist/execution/task-approval-check.js +14 -0
  242. package/dist/execution/task-approval-check.js.map +1 -0
  243. package/dist/execution/task-approval.d.ts +37 -0
  244. package/dist/execution/task-approval.d.ts.map +1 -0
  245. package/dist/execution/task-approval.js +147 -0
  246. package/dist/execution/task-approval.js.map +1 -0
  247. package/dist/execution/task-execution-types.d.ts +14 -0
  248. package/dist/execution/task-execution-types.d.ts.map +1 -0
  249. package/dist/execution/task-execution-types.js +2 -0
  250. package/dist/execution/task-execution-types.js.map +1 -0
  251. package/dist/execution/task-executor.d.ts +30 -0
  252. package/dist/execution/task-executor.d.ts.map +1 -0
  253. package/dist/execution/task-executor.js +196 -0
  254. package/dist/execution/task-executor.js.map +1 -0
  255. package/dist/execution/task-generation.d.ts +154 -0
  256. package/dist/execution/task-generation.d.ts.map +1 -0
  257. package/dist/execution/task-generation.js +406 -0
  258. package/dist/execution/task-generation.js.map +1 -0
  259. package/dist/execution/task-health-check.d.ts +38 -0
  260. package/dist/execution/task-health-check.d.ts.map +1 -0
  261. package/dist/execution/task-health-check.js +66 -0
  262. package/dist/execution/task-health-check.js.map +1 -0
  263. package/dist/execution/task-lifecycle.d.ts +122 -0
  264. package/dist/execution/task-lifecycle.d.ts.map +1 -0
  265. package/dist/execution/task-lifecycle.js +303 -0
  266. package/dist/execution/task-lifecycle.js.map +1 -0
  267. package/dist/execution/task-pipeline-cycle.d.ts +45 -0
  268. package/dist/execution/task-pipeline-cycle.d.ts.map +1 -0
  269. package/dist/execution/task-pipeline-cycle.js +134 -0
  270. package/dist/execution/task-pipeline-cycle.js.map +1 -0
  271. package/dist/execution/task-prompt-builder.d.ts +9 -0
  272. package/dist/execution/task-prompt-builder.d.ts.map +1 -0
  273. package/dist/execution/task-prompt-builder.js +165 -0
  274. package/dist/execution/task-prompt-builder.js.map +1 -0
  275. package/dist/execution/task-verifier.d.ts +112 -0
  276. package/dist/execution/task-verifier.d.ts.map +1 -0
  277. package/dist/execution/task-verifier.js +782 -0
  278. package/dist/execution/task-verifier.js.map +1 -0
  279. package/dist/gap-calculator.d.ts +80 -0
  280. package/dist/gap-calculator.d.ts.map +1 -0
  281. package/dist/gap-calculator.js +218 -0
  282. package/dist/gap-calculator.js.map +1 -0
  283. package/dist/goal/goal-decomposer.d.ts +30 -0
  284. package/dist/goal/goal-decomposer.d.ts.map +1 -0
  285. package/dist/goal/goal-decomposer.js +167 -0
  286. package/dist/goal/goal-decomposer.js.map +1 -0
  287. package/dist/goal/goal-dependency-graph.d.ts +119 -0
  288. package/dist/goal/goal-dependency-graph.d.ts.map +1 -0
  289. package/dist/goal/goal-dependency-graph.js +322 -0
  290. package/dist/goal/goal-dependency-graph.js.map +1 -0
  291. package/dist/goal/goal-negotiator.d.ts +66 -0
  292. package/dist/goal/goal-negotiator.d.ts.map +1 -0
  293. package/dist/goal/goal-negotiator.js +260 -0
  294. package/dist/goal/goal-negotiator.js.map +1 -0
  295. package/dist/goal/goal-suggest.d.ts +85 -0
  296. package/dist/goal/goal-suggest.d.ts.map +1 -0
  297. package/dist/goal/goal-suggest.js +178 -0
  298. package/dist/goal/goal-suggest.js.map +1 -0
  299. package/dist/goal/goal-tree-manager.d.ts +71 -0
  300. package/dist/goal/goal-tree-manager.d.ts.map +1 -0
  301. package/dist/goal/goal-tree-manager.js +580 -0
  302. package/dist/goal/goal-tree-manager.js.map +1 -0
  303. package/dist/goal/goal-tree-pruner.d.ts +25 -0
  304. package/dist/goal/goal-tree-pruner.d.ts.map +1 -0
  305. package/dist/goal/goal-tree-pruner.js +93 -0
  306. package/dist/goal/goal-tree-pruner.js.map +1 -0
  307. package/dist/goal/goal-tree-quality.d.ts +22 -0
  308. package/dist/goal/goal-tree-quality.d.ts.map +1 -0
  309. package/dist/goal/goal-tree-quality.js +183 -0
  310. package/dist/goal/goal-tree-quality.js.map +1 -0
  311. package/dist/goal/goal-validation.d.ts +20 -0
  312. package/dist/goal/goal-validation.d.ts.map +1 -0
  313. package/dist/goal/goal-validation.js +93 -0
  314. package/dist/goal/goal-validation.js.map +1 -0
  315. package/dist/goal/negotiator-context.d.ts +13 -0
  316. package/dist/goal/negotiator-context.d.ts.map +1 -0
  317. package/dist/goal/negotiator-context.js +119 -0
  318. package/dist/goal/negotiator-context.js.map +1 -0
  319. package/dist/goal/negotiator-prompts.d.ts +31 -0
  320. package/dist/goal/negotiator-prompts.d.ts.map +1 -0
  321. package/dist/goal/negotiator-prompts.js +65 -0
  322. package/dist/goal/negotiator-prompts.js.map +1 -0
  323. package/dist/goal/negotiator-steps.d.ts +59 -0
  324. package/dist/goal/negotiator-steps.d.ts.map +1 -0
  325. package/dist/goal/negotiator-steps.js +269 -0
  326. package/dist/goal/negotiator-steps.js.map +1 -0
  327. package/dist/goal/state-aggregator.d.ts +89 -0
  328. package/dist/goal/state-aggregator.d.ts.map +1 -0
  329. package/dist/goal/state-aggregator.js +292 -0
  330. package/dist/goal/state-aggregator.js.map +1 -0
  331. package/dist/goal/tree-loop-orchestrator.d.ts +79 -0
  332. package/dist/goal/tree-loop-orchestrator.d.ts.map +1 -0
  333. package/dist/goal/tree-loop-orchestrator.js +230 -0
  334. package/dist/goal/tree-loop-orchestrator.js.map +1 -0
  335. package/dist/goal-dependency-graph.d.ts +112 -0
  336. package/dist/goal-dependency-graph.d.ts.map +1 -0
  337. package/dist/goal-dependency-graph.js +291 -0
  338. package/dist/goal-dependency-graph.js.map +1 -0
  339. package/dist/goal-negotiator.d.ts +109 -0
  340. package/dist/goal-negotiator.d.ts.map +1 -0
  341. package/dist/goal-negotiator.js +1044 -0
  342. package/dist/goal-negotiator.js.map +1 -0
  343. package/dist/goal-tree-manager.d.ts +120 -0
  344. package/dist/goal-tree-manager.d.ts.map +1 -0
  345. package/dist/goal-tree-manager.js +954 -0
  346. package/dist/goal-tree-manager.js.map +1 -0
  347. package/dist/guardrail-runner.d.ts +29 -0
  348. package/dist/guardrail-runner.d.ts.map +1 -0
  349. package/dist/guardrail-runner.js +81 -0
  350. package/dist/guardrail-runner.js.map +1 -0
  351. package/dist/index.d.ts +95 -0
  352. package/dist/index.d.ts.map +1 -0
  353. package/dist/index.js +75 -0
  354. package/dist/index.js.map +1 -0
  355. package/dist/knowledge/drive-score-adapter.d.ts +39 -0
  356. package/dist/knowledge/drive-score-adapter.d.ts.map +1 -0
  357. package/dist/knowledge/drive-score-adapter.js +32 -0
  358. package/dist/knowledge/drive-score-adapter.js.map +1 -0
  359. package/dist/knowledge/embedding-client.d.ts +49 -0
  360. package/dist/knowledge/embedding-client.d.ts.map +1 -0
  361. package/dist/knowledge/embedding-client.js +141 -0
  362. package/dist/knowledge/embedding-client.js.map +1 -0
  363. package/dist/knowledge/knowledge-decisions.d.ts +41 -0
  364. package/dist/knowledge/knowledge-decisions.d.ts.map +1 -0
  365. package/dist/knowledge/knowledge-decisions.js +191 -0
  366. package/dist/knowledge/knowledge-decisions.js.map +1 -0
  367. package/dist/knowledge/knowledge-graph.d.ts +74 -0
  368. package/dist/knowledge/knowledge-graph.d.ts.map +1 -0
  369. package/dist/knowledge/knowledge-graph.js +207 -0
  370. package/dist/knowledge/knowledge-graph.js.map +1 -0
  371. package/dist/knowledge/knowledge-manager.d.ts +138 -0
  372. package/dist/knowledge/knowledge-manager.d.ts.map +1 -0
  373. package/dist/knowledge/knowledge-manager.js +497 -0
  374. package/dist/knowledge/knowledge-manager.js.map +1 -0
  375. package/dist/knowledge/knowledge-revalidation.d.ts +27 -0
  376. package/dist/knowledge/knowledge-revalidation.d.ts.map +1 -0
  377. package/dist/knowledge/knowledge-revalidation.js +130 -0
  378. package/dist/knowledge/knowledge-revalidation.js.map +1 -0
  379. package/dist/knowledge/knowledge-search.d.ts +49 -0
  380. package/dist/knowledge/knowledge-search.d.ts.map +1 -0
  381. package/dist/knowledge/knowledge-search.js +108 -0
  382. package/dist/knowledge/knowledge-search.js.map +1 -0
  383. package/dist/knowledge/knowledge-transfer-prompts.d.ts +45 -0
  384. package/dist/knowledge/knowledge-transfer-prompts.d.ts.map +1 -0
  385. package/dist/knowledge/knowledge-transfer-prompts.js +72 -0
  386. package/dist/knowledge/knowledge-transfer-prompts.js.map +1 -0
  387. package/dist/knowledge/knowledge-transfer.d.ts +148 -0
  388. package/dist/knowledge/knowledge-transfer.d.ts.map +1 -0
  389. package/dist/knowledge/knowledge-transfer.js +718 -0
  390. package/dist/knowledge/knowledge-transfer.js.map +1 -0
  391. package/dist/knowledge/learning-cross-goal.d.ts +19 -0
  392. package/dist/knowledge/learning-cross-goal.d.ts.map +1 -0
  393. package/dist/knowledge/learning-cross-goal.js +173 -0
  394. package/dist/knowledge/learning-cross-goal.js.map +1 -0
  395. package/dist/knowledge/learning-feedback.d.ts +26 -0
  396. package/dist/knowledge/learning-feedback.d.ts.map +1 -0
  397. package/dist/knowledge/learning-feedback.js +183 -0
  398. package/dist/knowledge/learning-feedback.js.map +1 -0
  399. package/dist/knowledge/learning-pipeline-prompts.d.ts +134 -0
  400. package/dist/knowledge/learning-pipeline-prompts.d.ts.map +1 -0
  401. package/dist/knowledge/learning-pipeline-prompts.js +103 -0
  402. package/dist/knowledge/learning-pipeline-prompts.js.map +1 -0
  403. package/dist/knowledge/learning-pipeline.d.ts +108 -0
  404. package/dist/knowledge/learning-pipeline.d.ts.map +1 -0
  405. package/dist/knowledge/learning-pipeline.js +467 -0
  406. package/dist/knowledge/learning-pipeline.js.map +1 -0
  407. package/dist/knowledge/memory-compression.d.ts +44 -0
  408. package/dist/knowledge/memory-compression.d.ts.map +1 -0
  409. package/dist/knowledge/memory-compression.js +289 -0
  410. package/dist/knowledge/memory-compression.js.map +1 -0
  411. package/dist/knowledge/memory-distill.d.ts +31 -0
  412. package/dist/knowledge/memory-distill.d.ts.map +1 -0
  413. package/dist/knowledge/memory-distill.js +170 -0
  414. package/dist/knowledge/memory-distill.js.map +1 -0
  415. package/dist/knowledge/memory-index.d.ts +11 -0
  416. package/dist/knowledge/memory-index.d.ts.map +1 -0
  417. package/dist/knowledge/memory-index.js +134 -0
  418. package/dist/knowledge/memory-index.js.map +1 -0
  419. package/dist/knowledge/memory-lifecycle.d.ts +172 -0
  420. package/dist/knowledge/memory-lifecycle.d.ts.map +1 -0
  421. package/dist/knowledge/memory-lifecycle.js +398 -0
  422. package/dist/knowledge/memory-lifecycle.js.map +1 -0
  423. package/dist/knowledge/memory-persistence.d.ts +30 -0
  424. package/dist/knowledge/memory-persistence.d.ts.map +1 -0
  425. package/dist/knowledge/memory-persistence.js +120 -0
  426. package/dist/knowledge/memory-persistence.js.map +1 -0
  427. package/dist/knowledge/memory-phases.d.ts +14 -0
  428. package/dist/knowledge/memory-phases.d.ts.map +1 -0
  429. package/dist/knowledge/memory-phases.js +14 -0
  430. package/dist/knowledge/memory-phases.js.map +1 -0
  431. package/dist/knowledge/memory-query.d.ts +4 -0
  432. package/dist/knowledge/memory-query.d.ts.map +1 -0
  433. package/dist/knowledge/memory-query.js +64 -0
  434. package/dist/knowledge/memory-query.js.map +1 -0
  435. package/dist/knowledge/memory-selection.d.ts +80 -0
  436. package/dist/knowledge/memory-selection.d.ts.map +1 -0
  437. package/dist/knowledge/memory-selection.js +356 -0
  438. package/dist/knowledge/memory-selection.js.map +1 -0
  439. package/dist/knowledge/memory-stats.d.ts +7 -0
  440. package/dist/knowledge/memory-stats.d.ts.map +1 -0
  441. package/dist/knowledge/memory-stats.js +162 -0
  442. package/dist/knowledge/memory-stats.js.map +1 -0
  443. package/dist/knowledge/memory-tier.d.ts +47 -0
  444. package/dist/knowledge/memory-tier.d.ts.map +1 -0
  445. package/dist/knowledge/memory-tier.js +212 -0
  446. package/dist/knowledge/memory-tier.js.map +1 -0
  447. package/dist/knowledge/transfer-trust.d.ts +40 -0
  448. package/dist/knowledge/transfer-trust.d.ts.map +1 -0
  449. package/dist/knowledge/transfer-trust.js +137 -0
  450. package/dist/knowledge/transfer-trust.js.map +1 -0
  451. package/dist/knowledge/vector-index.d.ts +65 -0
  452. package/dist/knowledge/vector-index.d.ts.map +1 -0
  453. package/dist/knowledge/vector-index.js +153 -0
  454. package/dist/knowledge/vector-index.js.map +1 -0
  455. package/dist/knowledge-graph.d.ts +70 -0
  456. package/dist/knowledge-graph.d.ts.map +1 -0
  457. package/dist/knowledge-graph.js +194 -0
  458. package/dist/knowledge-graph.js.map +1 -0
  459. package/dist/knowledge-manager.d.ts +110 -0
  460. package/dist/knowledge-manager.d.ts.map +1 -0
  461. package/dist/knowledge-manager.js +544 -0
  462. package/dist/knowledge-manager.js.map +1 -0
  463. package/dist/knowledge-transfer.d.ts +101 -0
  464. package/dist/knowledge-transfer.d.ts.map +1 -0
  465. package/dist/knowledge-transfer.js +484 -0
  466. package/dist/knowledge-transfer.js.map +1 -0
  467. package/dist/learning-pipeline.d.ts +107 -0
  468. package/dist/learning-pipeline.d.ts.map +1 -0
  469. package/dist/learning-pipeline.js +840 -0
  470. package/dist/learning-pipeline.js.map +1 -0
  471. package/dist/llm/base-llm-client.d.ts +20 -0
  472. package/dist/llm/base-llm-client.d.ts.map +1 -0
  473. package/dist/llm/base-llm-client.js +48 -0
  474. package/dist/llm/base-llm-client.js.map +1 -0
  475. package/dist/llm/codex-llm-client.d.ts +41 -0
  476. package/dist/llm/codex-llm-client.d.ts.map +1 -0
  477. package/dist/llm/codex-llm-client.js +188 -0
  478. package/dist/llm/codex-llm-client.js.map +1 -0
  479. package/dist/llm/llm-client.d.ts +54 -0
  480. package/dist/llm/llm-client.d.ts.map +1 -0
  481. package/dist/llm/llm-client.js +148 -0
  482. package/dist/llm/llm-client.js.map +1 -0
  483. package/dist/llm/ollama-client.d.ts +24 -0
  484. package/dist/llm/ollama-client.d.ts.map +1 -0
  485. package/dist/llm/ollama-client.js +94 -0
  486. package/dist/llm/ollama-client.js.map +1 -0
  487. package/dist/llm/openai-client.d.ts +34 -0
  488. package/dist/llm/openai-client.d.ts.map +1 -0
  489. package/dist/llm/openai-client.js +140 -0
  490. package/dist/llm/openai-client.js.map +1 -0
  491. package/dist/llm/provider-config.d.ts +55 -0
  492. package/dist/llm/provider-config.d.ts.map +1 -0
  493. package/dist/llm/provider-config.js +136 -0
  494. package/dist/llm/provider-config.js.map +1 -0
  495. package/dist/llm/provider-factory.d.ts +25 -0
  496. package/dist/llm/provider-factory.d.ts.map +1 -0
  497. package/dist/llm/provider-factory.js +111 -0
  498. package/dist/llm/provider-factory.js.map +1 -0
  499. package/dist/llm-client.d.ts +65 -0
  500. package/dist/llm-client.d.ts.map +1 -0
  501. package/dist/llm-client.js +151 -0
  502. package/dist/llm-client.js.map +1 -0
  503. package/dist/logger.d.ts +30 -0
  504. package/dist/logger.d.ts.map +1 -0
  505. package/dist/logger.js +121 -0
  506. package/dist/logger.js.map +1 -0
  507. package/dist/loop/core-loop-capability.d.ts +19 -0
  508. package/dist/loop/core-loop-capability.d.ts.map +1 -0
  509. package/dist/loop/core-loop-capability.js +107 -0
  510. package/dist/loop/core-loop-capability.js.map +1 -0
  511. package/dist/loop/core-loop-learning.d.ts +34 -0
  512. package/dist/loop/core-loop-learning.d.ts.map +1 -0
  513. package/dist/loop/core-loop-learning.js +78 -0
  514. package/dist/loop/core-loop-learning.js.map +1 -0
  515. package/dist/loop/core-loop-phases-b.d.ts +25 -0
  516. package/dist/loop/core-loop-phases-b.d.ts.map +1 -0
  517. package/dist/loop/core-loop-phases-b.js +510 -0
  518. package/dist/loop/core-loop-phases-b.js.map +1 -0
  519. package/dist/loop/core-loop-phases.d.ts +40 -0
  520. package/dist/loop/core-loop-phases.d.ts.map +1 -0
  521. package/dist/loop/core-loop-phases.js +228 -0
  522. package/dist/loop/core-loop-phases.js.map +1 -0
  523. package/dist/loop/core-loop-types.d.ts +202 -0
  524. package/dist/loop/core-loop-types.d.ts.map +1 -0
  525. package/dist/loop/core-loop-types.js +38 -0
  526. package/dist/loop/core-loop-types.js.map +1 -0
  527. package/dist/loop/tree-loop-runner.d.ts +24 -0
  528. package/dist/loop/tree-loop-runner.d.ts.map +1 -0
  529. package/dist/loop/tree-loop-runner.js +116 -0
  530. package/dist/loop/tree-loop-runner.js.map +1 -0
  531. package/dist/memory-lifecycle.d.ts +244 -0
  532. package/dist/memory-lifecycle.d.ts.map +1 -0
  533. package/dist/memory-lifecycle.js +1328 -0
  534. package/dist/memory-lifecycle.js.map +1 -0
  535. package/dist/notification-dispatcher.d.ts +36 -0
  536. package/dist/notification-dispatcher.d.ts.map +1 -0
  537. package/dist/notification-dispatcher.js +363 -0
  538. package/dist/notification-dispatcher.js.map +1 -0
  539. package/dist/observation/capability-dependencies.d.ts +45 -0
  540. package/dist/observation/capability-dependencies.d.ts.map +1 -0
  541. package/dist/observation/capability-dependencies.js +208 -0
  542. package/dist/observation/capability-dependencies.js.map +1 -0
  543. package/dist/observation/capability-detector.d.ts +72 -0
  544. package/dist/observation/capability-detector.d.ts.map +1 -0
  545. package/dist/observation/capability-detector.js +372 -0
  546. package/dist/observation/capability-detector.js.map +1 -0
  547. package/dist/observation/capability-registry.d.ts +48 -0
  548. package/dist/observation/capability-registry.d.ts.map +1 -0
  549. package/dist/observation/capability-registry.js +131 -0
  550. package/dist/observation/capability-registry.js.map +1 -0
  551. package/dist/observation/context-provider.d.ts +39 -0
  552. package/dist/observation/context-provider.d.ts.map +1 -0
  553. package/dist/observation/context-provider.js +177 -0
  554. package/dist/observation/context-provider.js.map +1 -0
  555. package/dist/observation/data-source-adapter.d.ts +42 -0
  556. package/dist/observation/data-source-adapter.d.ts.map +1 -0
  557. package/dist/observation/data-source-adapter.js +227 -0
  558. package/dist/observation/data-source-adapter.js.map +1 -0
  559. package/dist/observation/observation-apply.d.ts +18 -0
  560. package/dist/observation/observation-apply.d.ts.map +1 -0
  561. package/dist/observation/observation-apply.js +138 -0
  562. package/dist/observation/observation-apply.js.map +1 -0
  563. package/dist/observation/observation-datasource.d.ts +21 -0
  564. package/dist/observation/observation-datasource.d.ts.map +1 -0
  565. package/dist/observation/observation-datasource.js +96 -0
  566. package/dist/observation/observation-datasource.js.map +1 -0
  567. package/dist/observation/observation-engine.d.ts +156 -0
  568. package/dist/observation/observation-engine.d.ts.map +1 -0
  569. package/dist/observation/observation-engine.js +359 -0
  570. package/dist/observation/observation-engine.js.map +1 -0
  571. package/dist/observation/observation-helpers.d.ts +112 -0
  572. package/dist/observation/observation-helpers.d.ts.map +1 -0
  573. package/dist/observation/observation-helpers.js +173 -0
  574. package/dist/observation/observation-helpers.js.map +1 -0
  575. package/dist/observation/observation-llm.d.ts +46 -0
  576. package/dist/observation/observation-llm.d.ts.map +1 -0
  577. package/dist/observation/observation-llm.js +220 -0
  578. package/dist/observation/observation-llm.js.map +1 -0
  579. package/dist/observation/observation-task.d.ts +29 -0
  580. package/dist/observation/observation-task.d.ts.map +1 -0
  581. package/dist/observation/observation-task.js +51 -0
  582. package/dist/observation/observation-task.js.map +1 -0
  583. package/dist/observation/workspace-context.d.ts +8 -0
  584. package/dist/observation/workspace-context.d.ts.map +1 -0
  585. package/dist/observation/workspace-context.js +229 -0
  586. package/dist/observation/workspace-context.js.map +1 -0
  587. package/dist/observation-engine.d.ts +218 -0
  588. package/dist/observation-engine.d.ts.map +1 -0
  589. package/dist/observation-engine.js +711 -0
  590. package/dist/observation-engine.js.map +1 -0
  591. package/dist/ollama-client.d.ts +30 -0
  592. package/dist/ollama-client.d.ts.map +1 -0
  593. package/dist/ollama-client.js +112 -0
  594. package/dist/ollama-client.js.map +1 -0
  595. package/dist/openai-client.d.ts +40 -0
  596. package/dist/openai-client.d.ts.map +1 -0
  597. package/dist/openai-client.js +155 -0
  598. package/dist/openai-client.js.map +1 -0
  599. package/dist/pid-manager.d.ts +18 -0
  600. package/dist/pid-manager.d.ts.map +1 -0
  601. package/dist/pid-manager.js +64 -0
  602. package/dist/pid-manager.js.map +1 -0
  603. package/dist/portfolio-manager.d.ts +147 -0
  604. package/dist/portfolio-manager.d.ts.map +1 -0
  605. package/dist/portfolio-manager.js +371 -0
  606. package/dist/portfolio-manager.js.map +1 -0
  607. package/dist/portfolio-rebalance.d.ts +75 -0
  608. package/dist/portfolio-rebalance.d.ts.map +1 -0
  609. package/dist/portfolio-rebalance.js +254 -0
  610. package/dist/portfolio-rebalance.js.map +1 -0
  611. package/dist/prompt/context-assembler.d.ts +70 -0
  612. package/dist/prompt/context-assembler.d.ts.map +1 -0
  613. package/dist/prompt/context-assembler.js +346 -0
  614. package/dist/prompt/context-assembler.js.map +1 -0
  615. package/dist/prompt/formatters.d.ts +49 -0
  616. package/dist/prompt/formatters.d.ts.map +1 -0
  617. package/dist/prompt/formatters.js +136 -0
  618. package/dist/prompt/formatters.js.map +1 -0
  619. package/dist/prompt/gateway.d.ts +30 -0
  620. package/dist/prompt/gateway.d.ts.map +1 -0
  621. package/dist/prompt/gateway.js +43 -0
  622. package/dist/prompt/gateway.js.map +1 -0
  623. package/dist/prompt/index.d.ts +12 -0
  624. package/dist/prompt/index.d.ts.map +1 -0
  625. package/dist/prompt/index.js +9 -0
  626. package/dist/prompt/index.js.map +1 -0
  627. package/dist/prompt/purposes/capability.d.ts +64 -0
  628. package/dist/prompt/purposes/capability.d.ts.map +1 -0
  629. package/dist/prompt/purposes/capability.js +38 -0
  630. package/dist/prompt/purposes/capability.js.map +1 -0
  631. package/dist/prompt/purposes/checkpoint.d.ts +22 -0
  632. package/dist/prompt/purposes/checkpoint.d.ts.map +1 -0
  633. package/dist/prompt/purposes/checkpoint.js +17 -0
  634. package/dist/prompt/purposes/checkpoint.js.map +1 -0
  635. package/dist/prompt/purposes/curiosity.d.ts +41 -0
  636. package/dist/prompt/purposes/curiosity.d.ts.map +1 -0
  637. package/dist/prompt/purposes/curiosity.js +20 -0
  638. package/dist/prompt/purposes/curiosity.js.map +1 -0
  639. package/dist/prompt/purposes/dependency.d.ts +34 -0
  640. package/dist/prompt/purposes/dependency.d.ts.map +1 -0
  641. package/dist/prompt/purposes/dependency.js +21 -0
  642. package/dist/prompt/purposes/dependency.js.map +1 -0
  643. package/dist/prompt/purposes/ethics.d.ts +47 -0
  644. package/dist/prompt/purposes/ethics.d.ts.map +1 -0
  645. package/dist/prompt/purposes/ethics.js +89 -0
  646. package/dist/prompt/purposes/ethics.js.map +1 -0
  647. package/dist/prompt/purposes/final-migration.d.ts +15 -0
  648. package/dist/prompt/purposes/final-migration.d.ts.map +1 -0
  649. package/dist/prompt/purposes/final-migration.js +15 -0
  650. package/dist/prompt/purposes/final-migration.js.map +1 -0
  651. package/dist/prompt/purposes/goal-decomposition.d.ts +46 -0
  652. package/dist/prompt/purposes/goal-decomposition.d.ts.map +1 -0
  653. package/dist/prompt/purposes/goal-decomposition.js +20 -0
  654. package/dist/prompt/purposes/goal-decomposition.js.map +1 -0
  655. package/dist/prompt/purposes/goal-quality.d.ts +61 -0
  656. package/dist/prompt/purposes/goal-quality.d.ts.map +1 -0
  657. package/dist/prompt/purposes/goal-quality.js +37 -0
  658. package/dist/prompt/purposes/goal-quality.js.map +1 -0
  659. package/dist/prompt/purposes/index.d.ts +29 -0
  660. package/dist/prompt/purposes/index.d.ts.map +1 -0
  661. package/dist/prompt/purposes/index.js +320 -0
  662. package/dist/prompt/purposes/index.js.map +1 -0
  663. package/dist/prompt/purposes/knowledge-transfer.d.ts +81 -0
  664. package/dist/prompt/purposes/knowledge-transfer.d.ts.map +1 -0
  665. package/dist/prompt/purposes/knowledge-transfer.js +33 -0
  666. package/dist/prompt/purposes/knowledge-transfer.js.map +1 -0
  667. package/dist/prompt/purposes/knowledge.d.ts +88 -0
  668. package/dist/prompt/purposes/knowledge.d.ts.map +1 -0
  669. package/dist/prompt/purposes/knowledge.js +59 -0
  670. package/dist/prompt/purposes/knowledge.js.map +1 -0
  671. package/dist/prompt/purposes/learning.d.ts +70 -0
  672. package/dist/prompt/purposes/learning.d.ts.map +1 -0
  673. package/dist/prompt/purposes/learning.js +32 -0
  674. package/dist/prompt/purposes/learning.js.map +1 -0
  675. package/dist/prompt/purposes/memory-distill.d.ts +75 -0
  676. package/dist/prompt/purposes/memory-distill.d.ts.map +1 -0
  677. package/dist/prompt/purposes/memory-distill.js +27 -0
  678. package/dist/prompt/purposes/memory-distill.js.map +1 -0
  679. package/dist/prompt/purposes/observation.d.ts +25 -0
  680. package/dist/prompt/purposes/observation.d.ts.map +1 -0
  681. package/dist/prompt/purposes/observation.js +17 -0
  682. package/dist/prompt/purposes/observation.js.map +1 -0
  683. package/dist/prompt/purposes/strategy-template.d.ts +57 -0
  684. package/dist/prompt/purposes/strategy-template.d.ts.map +1 -0
  685. package/dist/prompt/purposes/strategy-template.js +31 -0
  686. package/dist/prompt/purposes/strategy-template.js.map +1 -0
  687. package/dist/prompt/purposes/strategy.d.ts +41 -0
  688. package/dist/prompt/purposes/strategy.d.ts.map +1 -0
  689. package/dist/prompt/purposes/strategy.js +19 -0
  690. package/dist/prompt/purposes/strategy.js.map +1 -0
  691. package/dist/prompt/purposes/task-generation.d.ts +26 -0
  692. package/dist/prompt/purposes/task-generation.d.ts.map +1 -0
  693. package/dist/prompt/purposes/task-generation.js +22 -0
  694. package/dist/prompt/purposes/task-generation.js.map +1 -0
  695. package/dist/prompt/purposes/verification.d.ts +25 -0
  696. package/dist/prompt/purposes/verification.d.ts.map +1 -0
  697. package/dist/prompt/purposes/verification.js +17 -0
  698. package/dist/prompt/purposes/verification.js.map +1 -0
  699. package/dist/prompt/slot-definitions 2.d.ts +33 -0
  700. package/dist/prompt/slot-definitions 2.d.ts.map +1 -0
  701. package/dist/prompt/slot-definitions 2.js +332 -0
  702. package/dist/prompt/slot-definitions 2.js.map +1 -0
  703. package/dist/prompt/slot-definitions.d.ts +33 -0
  704. package/dist/prompt/slot-definitions.d.ts.map +1 -0
  705. package/dist/prompt/slot-definitions.js +383 -0
  706. package/dist/prompt/slot-definitions.js.map +1 -0
  707. package/dist/provider-config.d.ts +43 -0
  708. package/dist/provider-config.d.ts.map +1 -0
  709. package/dist/provider-config.js +131 -0
  710. package/dist/provider-config.js.map +1 -0
  711. package/dist/provider-factory.d.ts +23 -0
  712. package/dist/provider-factory.d.ts.map +1 -0
  713. package/dist/provider-factory.js +83 -0
  714. package/dist/provider-factory.js.map +1 -0
  715. package/dist/reporting-engine.d.ts +58 -0
  716. package/dist/reporting-engine.d.ts.map +1 -0
  717. package/dist/reporting-engine.js +592 -0
  718. package/dist/reporting-engine.js.map +1 -0
  719. package/dist/runtime/daemon-runner.d.ts +147 -0
  720. package/dist/runtime/daemon-runner.d.ts.map +1 -0
  721. package/dist/runtime/daemon-runner.js +549 -0
  722. package/dist/runtime/daemon-runner.js.map +1 -0
  723. package/dist/runtime/event-server.d.ts +50 -0
  724. package/dist/runtime/event-server.d.ts.map +1 -0
  725. package/dist/runtime/event-server.js +192 -0
  726. package/dist/runtime/event-server.js.map +1 -0
  727. package/dist/runtime/logger.d.ts +57 -0
  728. package/dist/runtime/logger.d.ts.map +1 -0
  729. package/dist/runtime/logger.js +254 -0
  730. package/dist/runtime/logger.js.map +1 -0
  731. package/dist/runtime/notification-dispatcher.d.ts +49 -0
  732. package/dist/runtime/notification-dispatcher.d.ts.map +1 -0
  733. package/dist/runtime/notification-dispatcher.js +444 -0
  734. package/dist/runtime/notification-dispatcher.js.map +1 -0
  735. package/dist/runtime/notifier-registry.d.ts +26 -0
  736. package/dist/runtime/notifier-registry.d.ts.map +1 -0
  737. package/dist/runtime/notifier-registry.js +36 -0
  738. package/dist/runtime/notifier-registry.js.map +1 -0
  739. package/dist/runtime/pid-manager.d.ts +18 -0
  740. package/dist/runtime/pid-manager.d.ts.map +1 -0
  741. package/dist/runtime/pid-manager.js +61 -0
  742. package/dist/runtime/pid-manager.js.map +1 -0
  743. package/dist/runtime/plugin-loader.d.ts +78 -0
  744. package/dist/runtime/plugin-loader.d.ts.map +1 -0
  745. package/dist/runtime/plugin-loader.js +349 -0
  746. package/dist/runtime/plugin-loader.js.map +1 -0
  747. package/dist/satisficing-judge.d.ts +113 -0
  748. package/dist/satisficing-judge.d.ts.map +1 -0
  749. package/dist/satisficing-judge.js +592 -0
  750. package/dist/satisficing-judge.js.map +1 -0
  751. package/dist/session-manager.d.ts +159 -0
  752. package/dist/session-manager.d.ts.map +1 -0
  753. package/dist/session-manager.js +458 -0
  754. package/dist/session-manager.js.map +1 -0
  755. package/dist/stall-detector.d.ts +100 -0
  756. package/dist/stall-detector.d.ts.map +1 -0
  757. package/dist/stall-detector.js +306 -0
  758. package/dist/stall-detector.js.map +1 -0
  759. package/dist/state-aggregator.d.ts +89 -0
  760. package/dist/state-aggregator.d.ts.map +1 -0
  761. package/dist/state-aggregator.js +290 -0
  762. package/dist/state-aggregator.js.map +1 -0
  763. package/dist/state-manager.d.ts +121 -0
  764. package/dist/state-manager.d.ts.map +1 -0
  765. package/dist/state-manager.js +547 -0
  766. package/dist/state-manager.js.map +1 -0
  767. package/dist/strategy/cross-goal-portfolio.d.ts +118 -0
  768. package/dist/strategy/cross-goal-portfolio.d.ts.map +1 -0
  769. package/dist/strategy/cross-goal-portfolio.js +431 -0
  770. package/dist/strategy/cross-goal-portfolio.js.map +1 -0
  771. package/dist/strategy/portfolio-allocation.d.ts +36 -0
  772. package/dist/strategy/portfolio-allocation.d.ts.map +1 -0
  773. package/dist/strategy/portfolio-allocation.js +215 -0
  774. package/dist/strategy/portfolio-allocation.js.map +1 -0
  775. package/dist/strategy/portfolio-momentum.d.ts +11 -0
  776. package/dist/strategy/portfolio-momentum.d.ts.map +1 -0
  777. package/dist/strategy/portfolio-momentum.js +64 -0
  778. package/dist/strategy/portfolio-momentum.js.map +1 -0
  779. package/dist/strategy/portfolio-scheduling.d.ts +25 -0
  780. package/dist/strategy/portfolio-scheduling.d.ts.map +1 -0
  781. package/dist/strategy/portfolio-scheduling.js +133 -0
  782. package/dist/strategy/portfolio-scheduling.js.map +1 -0
  783. package/dist/strategy/strategy-helpers.d.ts +109 -0
  784. package/dist/strategy/strategy-helpers.d.ts.map +1 -0
  785. package/dist/strategy/strategy-helpers.js +125 -0
  786. package/dist/strategy/strategy-helpers.js.map +1 -0
  787. package/dist/strategy/strategy-manager-base.d.ts +95 -0
  788. package/dist/strategy/strategy-manager-base.d.ts.map +1 -0
  789. package/dist/strategy/strategy-manager-base.js +363 -0
  790. package/dist/strategy/strategy-manager-base.js.map +1 -0
  791. package/dist/strategy/strategy-manager.d.ts +65 -0
  792. package/dist/strategy/strategy-manager.d.ts.map +1 -0
  793. package/dist/strategy/strategy-manager.js +226 -0
  794. package/dist/strategy/strategy-manager.js.map +1 -0
  795. package/dist/strategy/strategy-template-registry.d.ts +84 -0
  796. package/dist/strategy/strategy-template-registry.d.ts.map +1 -0
  797. package/dist/strategy/strategy-template-registry.js +350 -0
  798. package/dist/strategy/strategy-template-registry.js.map +1 -0
  799. package/dist/strategy-manager.d.ts +128 -0
  800. package/dist/strategy-manager.d.ts.map +1 -0
  801. package/dist/strategy-manager.js +579 -0
  802. package/dist/strategy-manager.js.map +1 -0
  803. package/dist/strategy-template-registry.d.ts +80 -0
  804. package/dist/strategy-template-registry.d.ts.map +1 -0
  805. package/dist/strategy-template-registry.js +320 -0
  806. package/dist/strategy-template-registry.js.map +1 -0
  807. package/dist/task-lifecycle.d.ts +167 -0
  808. package/dist/task-lifecycle.d.ts.map +1 -0
  809. package/dist/task-lifecycle.js +1161 -0
  810. package/dist/task-lifecycle.js.map +1 -0
  811. package/dist/traits/character-config.d.ts +34 -0
  812. package/dist/traits/character-config.d.ts.map +1 -0
  813. package/dist/traits/character-config.js +53 -0
  814. package/dist/traits/character-config.js.map +1 -0
  815. package/dist/traits/curiosity-engine.d.ts +185 -0
  816. package/dist/traits/curiosity-engine.d.ts.map +1 -0
  817. package/dist/traits/curiosity-engine.js +530 -0
  818. package/dist/traits/curiosity-engine.js.map +1 -0
  819. package/dist/traits/curiosity-proposals.d.ts +38 -0
  820. package/dist/traits/curiosity-proposals.d.ts.map +1 -0
  821. package/dist/traits/curiosity-proposals.js +259 -0
  822. package/dist/traits/curiosity-proposals.js.map +1 -0
  823. package/dist/traits/curiosity-transfer.d.ts +27 -0
  824. package/dist/traits/curiosity-transfer.d.ts.map +1 -0
  825. package/dist/traits/curiosity-transfer.js +50 -0
  826. package/dist/traits/curiosity-transfer.js.map +1 -0
  827. package/dist/traits/ethics-gate.d.ts +72 -0
  828. package/dist/traits/ethics-gate.d.ts.map +1 -0
  829. package/dist/traits/ethics-gate.js +591 -0
  830. package/dist/traits/ethics-gate.js.map +1 -0
  831. package/dist/traits/trust-manager.d.ts +90 -0
  832. package/dist/traits/trust-manager.d.ts.map +1 -0
  833. package/dist/traits/trust-manager.js +276 -0
  834. package/dist/traits/trust-manager.js.map +1 -0
  835. package/dist/tree-loop-orchestrator.d.ts +79 -0
  836. package/dist/tree-loop-orchestrator.d.ts.map +1 -0
  837. package/dist/tree-loop-orchestrator.js +225 -0
  838. package/dist/tree-loop-orchestrator.js.map +1 -0
  839. package/dist/trust-manager.d.ts +67 -0
  840. package/dist/trust-manager.d.ts.map +1 -0
  841. package/dist/trust-manager.js +201 -0
  842. package/dist/trust-manager.js.map +1 -0
  843. package/dist/tui/actions.d.ts +38 -0
  844. package/dist/tui/actions.d.ts.map +1 -0
  845. package/dist/tui/actions.js +229 -0
  846. package/dist/tui/actions.js.map +1 -0
  847. package/dist/tui/app.d.ts +24 -0
  848. package/dist/tui/app.d.ts.map +1 -0
  849. package/dist/tui/app.js +159 -0
  850. package/dist/tui/app.js.map +1 -0
  851. package/dist/tui/approval-overlay.d.ts +8 -0
  852. package/dist/tui/approval-overlay.d.ts.map +1 -0
  853. package/dist/tui/approval-overlay.js +20 -0
  854. package/dist/tui/approval-overlay.js.map +1 -0
  855. package/dist/tui/chat.d.ts +15 -0
  856. package/dist/tui/chat.d.ts.map +1 -0
  857. package/dist/tui/chat.js +196 -0
  858. package/dist/tui/chat.js.map +1 -0
  859. package/dist/tui/dashboard.d.ts +9 -0
  860. package/dist/tui/dashboard.d.ts.map +1 -0
  861. package/dist/tui/dashboard.js +69 -0
  862. package/dist/tui/dashboard.js.map +1 -0
  863. package/dist/tui/entry.d.ts +3 -0
  864. package/dist/tui/entry.d.ts.map +1 -0
  865. package/dist/tui/entry.js +222 -0
  866. package/dist/tui/entry.js.map +1 -0
  867. package/dist/tui/fuzzy.d.ts +22 -0
  868. package/dist/tui/fuzzy.d.ts.map +1 -0
  869. package/dist/tui/fuzzy.js +66 -0
  870. package/dist/tui/fuzzy.js.map +1 -0
  871. package/dist/tui/help-overlay.d.ts +6 -0
  872. package/dist/tui/help-overlay.d.ts.map +1 -0
  873. package/dist/tui/help-overlay.js +12 -0
  874. package/dist/tui/help-overlay.js.map +1 -0
  875. package/dist/tui/intent-recognizer.d.ts +19 -0
  876. package/dist/tui/intent-recognizer.d.ts.map +1 -0
  877. package/dist/tui/intent-recognizer.js +125 -0
  878. package/dist/tui/intent-recognizer.js.map +1 -0
  879. package/dist/tui/markdown-renderer.d.ts +37 -0
  880. package/dist/tui/markdown-renderer.d.ts.map +1 -0
  881. package/dist/tui/markdown-renderer.js +220 -0
  882. package/dist/tui/markdown-renderer.js.map +1 -0
  883. package/dist/tui/report-view.d.ts +6 -0
  884. package/dist/tui/report-view.d.ts.map +1 -0
  885. package/dist/tui/report-view.js +79 -0
  886. package/dist/tui/report-view.js.map +1 -0
  887. package/dist/tui/use-loop.d.ts +54 -0
  888. package/dist/tui/use-loop.d.ts.map +1 -0
  889. package/dist/tui/use-loop.js +185 -0
  890. package/dist/tui/use-loop.js.map +1 -0
  891. package/dist/types/a2a.d.ts +972 -0
  892. package/dist/types/a2a.d.ts.map +1 -0
  893. package/dist/types/a2a.js +130 -0
  894. package/dist/types/a2a.js.map +1 -0
  895. package/dist/types/capability.d.ts +292 -0
  896. package/dist/types/capability.d.ts.map +1 -0
  897. package/dist/types/capability.js +53 -0
  898. package/dist/types/capability.js.map +1 -0
  899. package/dist/types/character.d.ts +20 -0
  900. package/dist/types/character.d.ts.map +1 -0
  901. package/dist/types/character.js +10 -0
  902. package/dist/types/character.js.map +1 -0
  903. package/dist/types/checkpoint.d.ts +109 -0
  904. package/dist/types/checkpoint.d.ts.map +1 -0
  905. package/dist/types/checkpoint.js +27 -0
  906. package/dist/types/checkpoint.js.map +1 -0
  907. package/dist/types/core.d.ts +175 -0
  908. package/dist/types/core.d.ts.map +1 -0
  909. package/dist/types/core.js +154 -0
  910. package/dist/types/core.js.map +1 -0
  911. package/dist/types/cross-portfolio.d.ts +378 -0
  912. package/dist/types/cross-portfolio.d.ts.map +1 -0
  913. package/dist/types/cross-portfolio.js +155 -0
  914. package/dist/types/cross-portfolio.js.map +1 -0
  915. package/dist/types/curiosity.d.ts +443 -0
  916. package/dist/types/curiosity.d.ts.map +1 -0
  917. package/dist/types/curiosity.js +86 -0
  918. package/dist/types/curiosity.js.map +1 -0
  919. package/dist/types/daemon.d.ts +111 -0
  920. package/dist/types/daemon.d.ts.map +1 -0
  921. package/dist/types/daemon.js +37 -0
  922. package/dist/types/daemon.js.map +1 -0
  923. package/dist/types/data-source.d.ts +311 -0
  924. package/dist/types/data-source.d.ts.map +1 -0
  925. package/dist/types/data-source.js +53 -0
  926. package/dist/types/data-source.js.map +1 -0
  927. package/dist/types/dependency.d.ts +108 -0
  928. package/dist/types/dependency.d.ts.map +1 -0
  929. package/dist/types/dependency.js +21 -0
  930. package/dist/types/dependency.js.map +1 -0
  931. package/dist/types/drive.d.ts +194 -0
  932. package/dist/types/drive.d.ts.map +1 -0
  933. package/dist/types/drive.js +77 -0
  934. package/dist/types/drive.js.map +1 -0
  935. package/dist/types/embedding.d.ts +59 -0
  936. package/dist/types/embedding.d.ts.map +1 -0
  937. package/dist/types/embedding.js +22 -0
  938. package/dist/types/embedding.js.map +1 -0
  939. package/dist/types/ethics.d.ts +169 -0
  940. package/dist/types/ethics.d.ts.map +1 -0
  941. package/dist/types/ethics.js +47 -0
  942. package/dist/types/ethics.js.map +1 -0
  943. package/dist/types/gap.d.ts +146 -0
  944. package/dist/types/gap.d.ts.map +1 -0
  945. package/dist/types/gap.js +41 -0
  946. package/dist/types/gap.js.map +1 -0
  947. package/dist/types/goal-tree.d.ts +180 -0
  948. package/dist/types/goal-tree.d.ts.map +1 -0
  949. package/dist/types/goal-tree.js +73 -0
  950. package/dist/types/goal-tree.js.map +1 -0
  951. package/dist/types/goal.d.ts +1233 -0
  952. package/dist/types/goal.d.ts.map +1 -0
  953. package/dist/types/goal.js +119 -0
  954. package/dist/types/goal.js.map +1 -0
  955. package/dist/types/guardrail.d.ts +104 -0
  956. package/dist/types/guardrail.d.ts.map +1 -0
  957. package/dist/types/guardrail.js +34 -0
  958. package/dist/types/guardrail.js.map +1 -0
  959. package/dist/types/index.d.ts +31 -0
  960. package/dist/types/index.d.ts.map +1 -0
  961. package/dist/types/index.js +31 -0
  962. package/dist/types/index.js.map +1 -0
  963. package/dist/types/knowledge.d.ts +402 -0
  964. package/dist/types/knowledge.d.ts.map +1 -0
  965. package/dist/types/knowledge.js +116 -0
  966. package/dist/types/knowledge.js.map +1 -0
  967. package/dist/types/learning.d.ts +292 -0
  968. package/dist/types/learning.d.ts.map +1 -0
  969. package/dist/types/learning.js +120 -0
  970. package/dist/types/learning.js.map +1 -0
  971. package/dist/types/memory-lifecycle.d.ts +617 -0
  972. package/dist/types/memory-lifecycle.d.ts.map +1 -0
  973. package/dist/types/memory-lifecycle.js +159 -0
  974. package/dist/types/memory-lifecycle.js.map +1 -0
  975. package/dist/types/negotiation.d.ts +450 -0
  976. package/dist/types/negotiation.d.ts.map +1 -0
  977. package/dist/types/negotiation.js +84 -0
  978. package/dist/types/negotiation.js.map +1 -0
  979. package/dist/types/notification.d.ts +879 -0
  980. package/dist/types/notification.d.ts.map +1 -0
  981. package/dist/types/notification.js +75 -0
  982. package/dist/types/notification.js.map +1 -0
  983. package/dist/types/pipeline.d.ts +191 -0
  984. package/dist/types/pipeline.d.ts.map +1 -0
  985. package/dist/types/pipeline.js +62 -0
  986. package/dist/types/pipeline.js.map +1 -0
  987. package/dist/types/plugin.d.ts +335 -0
  988. package/dist/types/plugin.d.ts.map +1 -0
  989. package/dist/types/plugin.js +61 -0
  990. package/dist/types/plugin.js.map +1 -0
  991. package/dist/types/portfolio.d.ts +146 -0
  992. package/dist/types/portfolio.d.ts.map +1 -0
  993. package/dist/types/portfolio.js +55 -0
  994. package/dist/types/portfolio.js.map +1 -0
  995. package/dist/types/reflection.d.ts +34 -0
  996. package/dist/types/reflection.d.ts.map +1 -0
  997. package/dist/types/reflection.js +14 -0
  998. package/dist/types/reflection.js.map +1 -0
  999. package/dist/types/report.d.ts +205 -0
  1000. package/dist/types/report.d.ts.map +1 -0
  1001. package/dist/types/report.js +59 -0
  1002. package/dist/types/report.js.map +1 -0
  1003. package/dist/types/satisficing.d.ts +130 -0
  1004. package/dist/types/satisficing.d.ts.map +1 -0
  1005. package/dist/types/satisficing.js +54 -0
  1006. package/dist/types/satisficing.js.map +1 -0
  1007. package/dist/types/session.d.ts +95 -0
  1008. package/dist/types/session.d.ts.map +1 -0
  1009. package/dist/types/session.js +36 -0
  1010. package/dist/types/session.js.map +1 -0
  1011. package/dist/types/stall.d.ts +68 -0
  1012. package/dist/types/stall.d.ts.map +1 -0
  1013. package/dist/types/stall.js +28 -0
  1014. package/dist/types/stall.js.map +1 -0
  1015. package/dist/types/state.d.ts +245 -0
  1016. package/dist/types/state.d.ts.map +1 -0
  1017. package/dist/types/state.js +36 -0
  1018. package/dist/types/state.js.map +1 -0
  1019. package/dist/types/strategy.d.ts +541 -0
  1020. package/dist/types/strategy.d.ts.map +1 -0
  1021. package/dist/types/strategy.js +55 -0
  1022. package/dist/types/strategy.js.map +1 -0
  1023. package/dist/types/suggest.d.ts +92 -0
  1024. package/dist/types/suggest.d.ts.map +1 -0
  1025. package/dist/types/suggest.js +15 -0
  1026. package/dist/types/suggest.js.map +1 -0
  1027. package/dist/types/task-group.d.ts +231 -0
  1028. package/dist/types/task-group.d.ts.map +1 -0
  1029. package/dist/types/task-group.js +14 -0
  1030. package/dist/types/task-group.js.map +1 -0
  1031. package/dist/types/task.d.ts +258 -0
  1032. package/dist/types/task.d.ts.map +1 -0
  1033. package/dist/types/task.js +66 -0
  1034. package/dist/types/task.js.map +1 -0
  1035. package/dist/types/trust.d.ts +126 -0
  1036. package/dist/types/trust.d.ts.map +1 -0
  1037. package/dist/types/trust.js +38 -0
  1038. package/dist/types/trust.js.map +1 -0
  1039. package/dist/utils/errors.d.ts +17 -0
  1040. package/dist/utils/errors.d.ts.map +1 -0
  1041. package/dist/utils/errors.js +34 -0
  1042. package/dist/utils/errors.js.map +1 -0
  1043. package/dist/utils/json-io.d.ts +28 -0
  1044. package/dist/utils/json-io.d.ts.map +1 -0
  1045. package/dist/utils/json-io.js +71 -0
  1046. package/dist/utils/json-io.js.map +1 -0
  1047. package/dist/utils/paths.d.ts +14 -0
  1048. package/dist/utils/paths.d.ts.map +1 -0
  1049. package/dist/utils/paths.js +38 -0
  1050. package/dist/utils/paths.js.map +1 -0
  1051. package/dist/utils/sleep.d.ts +2 -0
  1052. package/dist/utils/sleep.d.ts.map +1 -0
  1053. package/dist/utils/sleep.js +4 -0
  1054. package/dist/utils/sleep.js.map +1 -0
  1055. package/dist/vector-index.d.ts +39 -0
  1056. package/dist/vector-index.d.ts.map +1 -0
  1057. package/dist/vector-index.js +111 -0
  1058. package/dist/vector-index.js.map +1 -0
  1059. package/package.json +78 -0
@@ -0,0 +1,782 @@
1
+ /**
2
+ * task-verifier.ts
3
+ *
4
+ * Verification logic extracted from TaskLifecycle:
5
+ * - verifyTask
6
+ * - handleVerdict
7
+ * - handleFailure
8
+ *
9
+ * All functions are standalone and receive explicit dependencies instead of
10
+ * relying on `this`. TaskLifecycle keeps thin wrapper methods for backward
11
+ * compatibility.
12
+ */
13
+ import { z } from "zod";
14
+ import { VerificationResultSchema } from "../types/task.js";
15
+ import { wrapXmlTag, formatKnowledge } from "../prompt/formatters.js";
16
+ // ─── CompletionJudgerResponseSchema: Zod schema for LLM completion judgment response ───
17
+ const CompletionJudgerResponseSchema = z.object({
18
+ verdict: z.enum(["pass", "partial", "fail"]).default("fail"),
19
+ reasoning: z.string().default(""),
20
+ criteria_met: z.number().int().min(0).optional(),
21
+ criteria_total: z.number().int().min(0).optional(),
22
+ });
23
+ // ─── verifyTask ───
24
+ /**
25
+ * Verify task execution results using 3-layer verification.
26
+ *
27
+ * Layer 1: Mechanical verification (via adapter in review session)
28
+ * Layer 2: LLM task reviewer (independent, no self-report)
29
+ * Layer 3: Executor self-report (reference only)
30
+ *
31
+ * Contradiction resolution:
32
+ * - L1 PASS + L2 PASS → pass
33
+ * - L1 PASS + L2 FAIL → re-review; if still FAIL → fail
34
+ * - L1 FAIL + L2 PASS → fail (mechanical priority)
35
+ * - L1 FAIL + L2 FAIL → fail
36
+ * - L1 SKIP → use L2 only (lower confidence)
37
+ */
38
+ export async function verifyTask(deps, task, executionResult) {
39
+ // ─── Short-circuit: GitHub issue URL evidence ───
40
+ // When execution succeeded and output contains a GitHub issue URL,
41
+ // treat as mechanical pass without running full L1/L2 verification.
42
+ // Dimension updates are left to ObservationEngine (next loop iteration).
43
+ const githubIssueUrlPattern = /github\.com\/.+\/issues\/\d+/;
44
+ if (executionResult.success === true &&
45
+ executionResult.output &&
46
+ githubIssueUrlPattern.test(executionResult.output)) {
47
+ const scResult = VerificationResultSchema.parse({
48
+ task_id: task.id,
49
+ verdict: "pass",
50
+ confidence: 0.95,
51
+ evidence: [
52
+ {
53
+ layer: "mechanical",
54
+ description: "GitHub issue URL found in execution output — mechanical evidence of successful issue creation",
55
+ confidence: 0.95,
56
+ },
57
+ ],
58
+ dimension_updates: [],
59
+ timestamp: new Date().toISOString(),
60
+ });
61
+ return scResult;
62
+ }
63
+ // ─── Layer 1: Mechanical verification ───
64
+ const l1Result = await runMechanicalVerification(deps, task);
65
+ // ─── Build optional enrichment blocks for LLM review ───
66
+ let knowledgeBlock = "";
67
+ if (deps.knowledgeManager?.getRelevantKnowledge) {
68
+ try {
69
+ const entries = await deps.knowledgeManager.getRelevantKnowledge(task.goal_id);
70
+ if (entries.length > 0) {
71
+ knowledgeBlock = wrapXmlTag("relevant_knowledge", formatKnowledge(entries.map((e) => ({ question: e.question, answer: e.answer, confidence: e.confidence }))));
72
+ }
73
+ }
74
+ catch { /* knowledge enrichment is optional */ }
75
+ }
76
+ let stateBlock = "";
77
+ try {
78
+ const goalDataForState = await deps.stateManager.readRaw(`goals/${task.goal_id}/goal.json`);
79
+ if (goalDataForState && typeof goalDataForState === "object") {
80
+ const dims = goalDataForState.dimensions;
81
+ const primaryDim = dims?.find((d) => d.name === task.primary_dimension);
82
+ if (primaryDim) {
83
+ const currentValue = typeof primaryDim.current_value === "number" ? primaryDim.current_value : undefined;
84
+ const threshold = primaryDim.threshold;
85
+ if (currentValue !== undefined) {
86
+ stateBlock = wrapXmlTag("current_state", `Dimension: ${task.primary_dimension}, current value: ${currentValue}${threshold !== undefined ? `, target: ${JSON.stringify(threshold)}` : ""}`);
87
+ }
88
+ }
89
+ }
90
+ }
91
+ catch { /* state enrichment is optional */ }
92
+ // ─── Layer 2: LLM task reviewer (independent) ───
93
+ const l2Result = await runLLMReview(deps, task, executionResult, knowledgeBlock, stateBlock);
94
+ // ─── Layer 3: Executor self-report (reference only) ───
95
+ const executorReport = parseExecutorReport(executionResult);
96
+ // ─── Contradiction resolution ───
97
+ let verdict;
98
+ let confidence;
99
+ let l2Retry;
100
+ if (l1Result.applicable) {
101
+ if (l1Result.passed && l2Result.passed) {
102
+ verdict = "pass";
103
+ confidence = 0.9;
104
+ }
105
+ else if (l1Result.passed && l2Result.partial) {
106
+ // L1 pass + L2 partial → partial
107
+ verdict = "partial";
108
+ confidence = 0.7;
109
+ }
110
+ else if (l1Result.passed && !l2Result.passed && !l2Result.partial) {
111
+ // L1 pass + L2 fail → re-review
112
+ l2Retry = await runLLMReview(deps, task, executionResult, knowledgeBlock, stateBlock);
113
+ if (l2Retry.passed) {
114
+ verdict = "pass";
115
+ confidence = 0.75;
116
+ }
117
+ else if (l2Retry.partial) {
118
+ verdict = "partial";
119
+ confidence = 0.65;
120
+ }
121
+ else {
122
+ verdict = "fail";
123
+ confidence = 0.8;
124
+ }
125
+ }
126
+ else if (!l1Result.passed && l2Result.passed) {
127
+ // Mechanical verification takes priority
128
+ verdict = "fail";
129
+ confidence = 0.85;
130
+ }
131
+ else {
132
+ // Both fail (or L1 fail + L2 partial → fail, mechanical priority)
133
+ verdict = "fail";
134
+ confidence = 0.9;
135
+ }
136
+ }
137
+ else {
138
+ // L1 skipped — use L2 only with lower confidence
139
+ if (l2Result.passed) {
140
+ verdict = "pass";
141
+ confidence = 0.6;
142
+ }
143
+ else if (l2Result.partial) {
144
+ verdict = "partial";
145
+ confidence = 0.5;
146
+ }
147
+ else {
148
+ verdict = "fail";
149
+ confidence = 0.6;
150
+ }
151
+ }
152
+ // Handle partial from L2 when L1 is applicable but didn't fail
153
+ if (l1Result.applicable && l2Result.partial && verdict !== "fail") {
154
+ verdict = "partial";
155
+ }
156
+ // Use retry result for evidence when a retry occurred, to keep audit trail accurate
157
+ const effectiveL2 = l2Retry ?? l2Result;
158
+ const now = new Date().toISOString();
159
+ const evidence = [
160
+ ...(l1Result.applicable
161
+ ? [
162
+ {
163
+ layer: "mechanical",
164
+ description: l1Result.description,
165
+ confidence: 0.9,
166
+ },
167
+ ]
168
+ : []),
169
+ {
170
+ layer: "independent_review",
171
+ description: effectiveL2.description,
172
+ confidence: effectiveL2.confidence,
173
+ },
174
+ {
175
+ layer: "self_report",
176
+ description: executorReport.summary,
177
+ confidence: 0.3, // self-report has lowest confidence
178
+ },
179
+ ];
180
+ // Build dimension_updates from task's target dimensions based on verdict.
181
+ // pass: significant progress (+0.2), partial: moderate progress (+0.15), fail: no update.
182
+ const progressByVerdict = {
183
+ pass: 0.2,
184
+ partial: 0.15,
185
+ fail: 0,
186
+ };
187
+ const progressDelta = progressByVerdict[verdict] ?? 0;
188
+ // Read goal state to get actual current dimension values for previous_value / new_value.
189
+ const goalDataForUpdate = await deps.stateManager.readRaw(`goals/${task.goal_id}/goal.json`);
190
+ const goalDimsForUpdate = goalDataForUpdate && typeof goalDataForUpdate === "object"
191
+ ? goalDataForUpdate.dimensions
192
+ : undefined;
193
+ const dimension_updates = verdict === "fail"
194
+ ? []
195
+ : task.target_dimensions.map((dimName) => {
196
+ const dim = goalDimsForUpdate?.find((d) => d.name === dimName);
197
+ const prevVal = dim !== undefined && typeof dim.current_value === "number"
198
+ ? dim.current_value
199
+ : null;
200
+ const newVal = prevVal !== null
201
+ ? Math.min(1, Math.max(0, prevVal + progressDelta))
202
+ : progressDelta;
203
+ return {
204
+ dimension_name: dimName,
205
+ previous_value: prevVal,
206
+ new_value: newVal,
207
+ confidence,
208
+ };
209
+ });
210
+ const verificationResult = VerificationResultSchema.parse({
211
+ task_id: task.id,
212
+ verdict,
213
+ confidence,
214
+ evidence,
215
+ dimension_updates,
216
+ timestamp: now,
217
+ });
218
+ // Persist verification result — include criteria fields from LLM review for failure context
219
+ await deps.stateManager.writeRaw(`verification/${task.id}/verification-result.json`, {
220
+ ...verificationResult,
221
+ criteria_met: effectiveL2.criteria_met,
222
+ criteria_total: effectiveL2.criteria_total,
223
+ });
224
+ return verificationResult;
225
+ }
226
+ // ─── handleVerdict ───
227
+ /**
228
+ * Handle a verification verdict (pass/partial/fail).
229
+ */
230
+ export async function handleVerdict(deps, task, verificationResult) {
231
+ // P0: Progress-verdict contradiction check (§4.1)
232
+ // If dimension values worsened but verdict is "pass", override to "partial"
233
+ // "Worsened" is threshold-type-aware: min-type expects increase, max-type expects decrease.
234
+ if (verificationResult.verdict === "pass" && verificationResult.dimension_updates?.length > 0) {
235
+ // Load goal dimensions to determine threshold type per dimension
236
+ const goalRawForGuard = await deps.stateManager.readRaw(`goals/${task.goal_id}/goal.json`);
237
+ const goalDimsForGuard = (goalRawForGuard &&
238
+ typeof goalRawForGuard === "object" &&
239
+ Array.isArray(goalRawForGuard.dimensions)
240
+ ? goalRawForGuard.dimensions
241
+ : []);
242
+ const anyWorsened = verificationResult.dimension_updates.some((u) => {
243
+ const prev = typeof u.previous_value === "number" ? u.previous_value : null;
244
+ const next = typeof u.new_value === "number" ? u.new_value : null;
245
+ if (prev === null || next === null)
246
+ return false;
247
+ // Determine threshold type for this dimension
248
+ const dimMeta = goalDimsForGuard.find((d) => d.name === u.dimension_name);
249
+ const thresholdType = dimMeta && typeof dimMeta.threshold === "object" && dimMeta.threshold !== null
250
+ ? dimMeta.threshold.type
251
+ : undefined;
252
+ // For min-type: lower value is worse (decrease = worsened)
253
+ // For max-type: higher value is worse (increase = worsened)
254
+ // For range/present/match or unknown: skip (can't determine direction safely)
255
+ if (thresholdType === "min") {
256
+ return next < prev - 0.05;
257
+ }
258
+ else if (thresholdType === "max") {
259
+ return next > prev + 0.05;
260
+ }
261
+ return false;
262
+ });
263
+ if (anyWorsened) {
264
+ deps.logger?.warn("progress-verdict contradiction: dimension value moved away from target but verdict was pass. Overriding to partial.");
265
+ verificationResult = { ...verificationResult, verdict: "partial" };
266
+ }
267
+ }
268
+ // Save failure context for fail/partial verdicts (§4.7)
269
+ if (verificationResult.verdict === "fail" || verificationResult.verdict === "partial") {
270
+ const firstEvidence = verificationResult.evidence?.[0];
271
+ const reasoning = typeof firstEvidence?.description === "string" ? firstEvidence.description : "";
272
+ // Read criteria_met/criteria_total from the persisted verification result (written by verifyTask)
273
+ let criteria_met;
274
+ let criteria_total;
275
+ try {
276
+ const raw = await deps.stateManager.readRaw(`verification/${task.id}/verification-result.json`);
277
+ if (raw && typeof raw.criteria_met === "number")
278
+ criteria_met = raw.criteria_met;
279
+ if (raw && typeof raw.criteria_total === "number")
280
+ criteria_total = raw.criteria_total;
281
+ }
282
+ catch {
283
+ // Non-fatal: criteria fields are best-effort
284
+ }
285
+ const failureContext = {
286
+ prev_task_description: task.work_description,
287
+ verdict: verificationResult.verdict,
288
+ reasoning,
289
+ criteria_met,
290
+ criteria_total,
291
+ timestamp: new Date().toISOString(),
292
+ };
293
+ try {
294
+ await deps.stateManager.writeRaw(`tasks/${task.goal_id}/last-failure-context.json`, failureContext);
295
+ }
296
+ catch {
297
+ // Non-fatal: failure context saving is best-effort
298
+ }
299
+ }
300
+ switch (verificationResult.verdict) {
301
+ case "pass": {
302
+ // Clear stale failure context (pass means previous failures are no longer relevant)
303
+ try {
304
+ await deps.stateManager.writeRaw(`tasks/${task.goal_id}/last-failure-context.json`, null);
305
+ }
306
+ catch {
307
+ // Non-fatal: clearing failure context is best-effort
308
+ }
309
+ // Record success
310
+ deps.trustManager.recordSuccess(task.task_category);
311
+ const now = new Date().toISOString();
312
+ // Reset consecutive failure count
313
+ const completedTask = {
314
+ ...task,
315
+ consecutive_failure_count: 0,
316
+ status: "completed",
317
+ completed_at: now,
318
+ };
319
+ await deps.stateManager.writeRaw(`tasks/${task.goal_id}/${task.id}.json`, completedTask);
320
+ // Apply dimension_updates and update last_updated for the primary dimension.
321
+ const goalData = await deps.stateManager.readRaw(`goals/${task.goal_id}/goal.json`);
322
+ if (goalData && typeof goalData === "object") {
323
+ const goal = goalData;
324
+ const dimensions = goal.dimensions;
325
+ if (dimensions) {
326
+ for (const dim of dimensions) {
327
+ // Apply current_value updates from verification result
328
+ const update = verificationResult.dimension_updates.find((u) => u.dimension_name === dim.name);
329
+ if (update !== undefined && typeof update.new_value === "number") {
330
+ const prev = typeof dim.current_value === "number" ? dim.current_value : 0;
331
+ if (!checkDimensionDirection(task.intended_direction, prev, update.new_value, deps.logger, String(dim.name))) {
332
+ continue;
333
+ }
334
+ dim.current_value = clampDimensionUpdate(prev, update.new_value, deps.logger, String(dim.name));
335
+ }
336
+ // Update last_updated for the primary dimension
337
+ if (dim.name === task.primary_dimension) {
338
+ dim.last_updated = now;
339
+ }
340
+ }
341
+ await deps.stateManager.writeRaw(`goals/${task.goal_id}/goal.json`, goal);
342
+ }
343
+ }
344
+ // Update task history
345
+ await appendTaskHistory(deps, task.goal_id, completedTask);
346
+ // Notify portfolio manager of task completion
347
+ if (deps.onTaskComplete && completedTask.strategy_id) {
348
+ deps.onTaskComplete(completedTask.strategy_id);
349
+ }
350
+ return { action: "completed", task: completedTask };
351
+ }
352
+ case "partial": {
353
+ // Check direction from evidence
354
+ const directionCorrect = isDirectionCorrect(verificationResult);
355
+ if (directionCorrect) {
356
+ // Apply partial dimension_updates to goal state
357
+ const goalDataPartial = await deps.stateManager.readRaw(`goals/${task.goal_id}/goal.json`);
358
+ if (goalDataPartial && typeof goalDataPartial === "object") {
359
+ const goal = goalDataPartial;
360
+ const dimensions = goal.dimensions;
361
+ if (dimensions) {
362
+ for (const dim of dimensions) {
363
+ const update = verificationResult.dimension_updates.find((u) => u.dimension_name === dim.name);
364
+ if (update !== undefined && typeof update.new_value === "number") {
365
+ const prev = typeof dim.current_value === "number" ? dim.current_value : 0;
366
+ if (!checkDimensionDirection(task.intended_direction, prev, update.new_value, deps.logger, String(dim.name))) {
367
+ continue;
368
+ }
369
+ dim.current_value = clampDimensionUpdate(prev, update.new_value, deps.logger, String(dim.name));
370
+ }
371
+ }
372
+ await deps.stateManager.writeRaw(`goals/${task.goal_id}/goal.json`, goal);
373
+ }
374
+ }
375
+ await appendTaskHistory(deps, task.goal_id, task);
376
+ return { action: "keep", task };
377
+ }
378
+ // Direction wrong — delegate to handleFailure
379
+ return handleFailure(deps, task, verificationResult);
380
+ }
381
+ case "fail": {
382
+ return handleFailure(deps, task, verificationResult);
383
+ }
384
+ }
385
+ }
386
+ // ─── handleFailure ───
387
+ /**
388
+ * Handle a task failure: increment failure count, record failure,
389
+ * decide keep/discard/escalate.
390
+ */
391
+ export async function handleFailure(deps, task, verificationResult) {
392
+ // Increment consecutive_failure_count
393
+ const updatedTask = {
394
+ ...task,
395
+ consecutive_failure_count: task.consecutive_failure_count + 1,
396
+ };
397
+ // Record failure with TrustManager
398
+ deps.trustManager.recordFailure(task.task_category);
399
+ // Persist updated task
400
+ await deps.stateManager.writeRaw(`tasks/${task.goal_id}/${task.id}.json`, updatedTask);
401
+ // Check escalation threshold
402
+ if (updatedTask.consecutive_failure_count >= 3) {
403
+ deps.stallDetector.checkConsecutiveFailures(task.goal_id, task.primary_dimension, updatedTask.consecutive_failure_count);
404
+ await appendTaskHistory(deps, task.goal_id, updatedTask);
405
+ return { action: "escalate", task: updatedTask };
406
+ }
407
+ // Direction check
408
+ const directionCorrect = isDirectionCorrect(verificationResult);
409
+ if (directionCorrect) {
410
+ await appendTaskHistory(deps, task.goal_id, updatedTask);
411
+ return { action: "keep", task: updatedTask };
412
+ }
413
+ // Direction wrong
414
+ if (updatedTask.reversibility === "reversible") {
415
+ // Attempt revert
416
+ const revertSuccess = await attemptRevert(deps, updatedTask);
417
+ if (revertSuccess) {
418
+ await appendTaskHistory(deps, task.goal_id, updatedTask);
419
+ return { action: "discard", task: updatedTask };
420
+ }
421
+ // Revert failed — set state_integrity to "uncertain" and escalate
422
+ await setDimensionIntegrity(deps, task.goal_id, task.primary_dimension, "uncertain");
423
+ await appendTaskHistory(deps, task.goal_id, updatedTask);
424
+ return { action: "escalate", task: updatedTask };
425
+ }
426
+ // irreversible or unknown → escalate
427
+ await appendTaskHistory(deps, task.goal_id, updatedTask);
428
+ return { action: "escalate", task: updatedTask };
429
+ }
430
+ // ─── Private helpers (module-local) ───
431
+ /**
432
+ * Wrap a promise with a timeout. Rejects with a TimeoutError if the promise
433
+ * does not resolve within `ms` milliseconds.
434
+ */
435
+ function withTimeout(promise, ms) {
436
+ return new Promise((resolve, reject) => {
437
+ const timer = setTimeout(() => {
438
+ reject(new Error(`completion_judger timeout after ${ms}ms`));
439
+ }, ms);
440
+ promise.then((value) => { clearTimeout(timer); resolve(value); }, (err) => { clearTimeout(timer); reject(err); });
441
+ });
442
+ }
443
+ /**
444
+ * Call an async function with retry + exponential backoff.
445
+ * On each failure (including timeout), wait `backoffMs * 2^attempt` before retrying.
446
+ * After `maxRetries` retries, the last error is re-thrown.
447
+ */
448
+ async function withRetry(fn, maxRetries, backoffMs, logger, label) {
449
+ let lastErr;
450
+ for (let attempt = 0; attempt <= maxRetries; attempt++) {
451
+ try {
452
+ return await fn();
453
+ }
454
+ catch (err) {
455
+ lastErr = err;
456
+ if (attempt < maxRetries) {
457
+ const delay = backoffMs * Math.pow(2, attempt);
458
+ const msg = err instanceof Error ? err.message : String(err);
459
+ logger?.warn(`[completion_judger] ${label ?? "LLM call"} failed (attempt ${attempt + 1}/${maxRetries + 1}): ${msg} — retrying in ${delay}ms`);
460
+ await new Promise((res) => setTimeout(res, delay));
461
+ }
462
+ }
463
+ }
464
+ throw lastErr;
465
+ }
466
+ async function runMechanicalVerification(deps, task) {
467
+ // Mechanical prefixes that indicate a command can be run directly
468
+ const mechanicalPrefixes = ["npm", "npx", "pytest", "sh", "bash", "node", "make", "cargo", "go ", "gh "];
469
+ // Find the first success criterion with a mechanically-verifiable verification_method
470
+ const mechanicalCriterion = task.success_criteria.find((c) => {
471
+ const method = c.verification_method.toLowerCase().trim();
472
+ return mechanicalPrefixes.some((prefix) => method.startsWith(prefix));
473
+ });
474
+ if (!mechanicalCriterion) {
475
+ return {
476
+ applicable: false,
477
+ passed: false,
478
+ description: "No mechanical verification criteria applicable",
479
+ };
480
+ }
481
+ // If no adapter registry is available, fall back to assumed pass (backward compat)
482
+ if (!deps.adapterRegistry) {
483
+ return {
484
+ applicable: true,
485
+ passed: true,
486
+ description: "Mechanical verification criteria detected (no adapter: assumed pass)",
487
+ };
488
+ }
489
+ // Select the first available adapter from the registry for command execution
490
+ const availableAdapters = deps.adapterRegistry.listAdapters();
491
+ if (availableAdapters.length === 0) {
492
+ return {
493
+ applicable: true,
494
+ passed: true,
495
+ description: "Mechanical verification criteria detected (no adapters registered: assumed pass)",
496
+ };
497
+ }
498
+ const adapterType = availableAdapters[0];
499
+ let adapter;
500
+ try {
501
+ adapter = deps.adapterRegistry.getAdapter(adapterType);
502
+ }
503
+ catch {
504
+ return {
505
+ applicable: true,
506
+ passed: true,
507
+ description: "Mechanical verification criteria detected (adapter lookup failed: assumed pass)",
508
+ };
509
+ }
510
+ // Execute the verification command via the adapter
511
+ const verificationCommand = mechanicalCriterion.verification_method.trim();
512
+ const verificationTimeoutMs = 30_000; // 30 seconds default for L1 mechanical checks
513
+ const agentTask = {
514
+ prompt: verificationCommand,
515
+ timeout_ms: verificationTimeoutMs,
516
+ adapter_type: adapterType,
517
+ };
518
+ let result;
519
+ try {
520
+ result = await adapter.execute(agentTask);
521
+ }
522
+ catch (err) {
523
+ const errMsg = err instanceof Error ? err.message : String(err);
524
+ deps.logger?.error("runMechanicalVerification: adapter.execute() threw", { error: errMsg });
525
+ return {
526
+ applicable: true,
527
+ passed: false,
528
+ description: `Mechanical verification command threw: ${errMsg}`,
529
+ };
530
+ }
531
+ if (result.stopped_reason === "timeout") {
532
+ return {
533
+ applicable: true,
534
+ passed: false,
535
+ description: `Mechanical verification timed out after ${verificationTimeoutMs}ms (command: ${verificationCommand})`,
536
+ };
537
+ }
538
+ const passed = result.exit_code === 0 && result.success;
539
+ const description = passed
540
+ ? `Mechanical verification passed (exit 0): ${verificationCommand}`
541
+ : `Mechanical verification failed (exit ${result.exit_code ?? "null"}): ${verificationCommand}${result.error ? ` — ${result.error}` : ""}`;
542
+ return { applicable: true, passed, description };
543
+ }
544
+ async function runLLMReview(deps, task, executionResult, knowledgeBlock = "", stateBlock = "") {
545
+ const timeoutMs = deps.completionJudgerConfig?.timeoutMs ?? 30_000;
546
+ const maxRetries = deps.completionJudgerConfig?.maxRetries ?? 2;
547
+ const retryBackoffMs = deps.completionJudgerConfig?.retryBackoffMs ?? 1_000;
548
+ // Create review session
549
+ const reviewSession = await deps.sessionManager.createSession("task_review", task.goal_id, task.id);
550
+ // Build review context (excludes executor self-report for bias prevention)
551
+ const reviewContext = deps.sessionManager.buildTaskReviewContext(task.goal_id, task.id);
552
+ const criteriaList = task.success_criteria
553
+ .map((c, i) => `${i + 1}. ${c.description} (blocking: ${c.is_blocking}, method: ${c.verification_method})`)
554
+ .join("\n");
555
+ const enrichmentBlocks = [knowledgeBlock, stateBlock].filter(Boolean).join("\n");
556
+ const prompt = `Evaluate task execution against success criteria.
557
+
558
+ Task: ${task.work_description}
559
+ Approach: ${task.approach}
560
+
561
+ Criteria:
562
+ ${criteriaList}
563
+ ${enrichmentBlocks ? `\n${enrichmentBlocks}\n` : ""}
564
+ Output (first 2000 chars):
565
+ ${executionResult.output.slice(0, 2000)}
566
+
567
+ Status: ${executionResult.stopped_reason} | Success: ${executionResult.success}
568
+ Context: ${reviewContext.map((s) => s.content).join(" ")}
569
+
570
+ Return JSON:
571
+ {"verdict": "pass"|"partial"|"fail", "reasoning": "...", "criteria_met": #, "criteria_total": #}`;
572
+ // Gateway path: route through PromptGateway when available
573
+ if (deps.gateway) {
574
+ let parsed;
575
+ try {
576
+ parsed = await withRetry(() => withTimeout(deps.gateway.execute({
577
+ purpose: "verification",
578
+ goalId: task.goal_id,
579
+ additionalContext: { review_prompt: prompt },
580
+ responseSchema: CompletionJudgerResponseSchema,
581
+ maxTokens: 1024,
582
+ }), timeoutMs), maxRetries, retryBackoffMs, deps.logger, `completion_judger for task ${task.id}`);
583
+ }
584
+ catch (err) {
585
+ const msg = err instanceof Error ? err.message : String(err);
586
+ deps.logger?.error(`[completion_judger] All retries exhausted for task ${task.id}: ${msg}`);
587
+ await deps.sessionManager.endSession(reviewSession.id, `completion_judger failed: ${msg}`);
588
+ return {
589
+ passed: false,
590
+ partial: false,
591
+ description: `completion_judger failed after ${maxRetries + 1} attempt(s): ${msg}`,
592
+ confidence: 0.0,
593
+ };
594
+ }
595
+ const verdictStr = parsed.verdict;
596
+ const result = {
597
+ passed: verdictStr === "pass",
598
+ partial: verdictStr === "partial",
599
+ description: parsed.reasoning || "LLM review completed",
600
+ confidence: verdictStr === "pass" ? 0.8 : verdictStr === "partial" ? 0.6 : 0.8,
601
+ criteria_met: parsed.criteria_met,
602
+ criteria_total: parsed.criteria_total,
603
+ };
604
+ await deps.sessionManager.endSession(reviewSession.id, `LLM review: ${verdictStr}`);
605
+ return result;
606
+ }
607
+ // Direct LLM path (fallback when no gateway)
608
+ let response;
609
+ try {
610
+ response = await withRetry(() => withTimeout((deps.reviewerLlmClient ?? deps.llmClient).sendMessage([{ role: "user", content: prompt }], {
611
+ system: "Review task results objectively against criteria. Ignore executor self-assessment.",
612
+ max_tokens: 1024,
613
+ }), timeoutMs), maxRetries, retryBackoffMs, deps.logger, `completion_judger for task ${task.id}`);
614
+ }
615
+ catch (err) {
616
+ const msg = err instanceof Error ? err.message : String(err);
617
+ deps.logger?.error(`[completion_judger] All retries exhausted for task ${task.id}: ${msg}`);
618
+ await deps.sessionManager.endSession(reviewSession.id, `completion_judger failed: ${msg}`);
619
+ return {
620
+ passed: false,
621
+ partial: false,
622
+ description: `completion_judger failed after ${maxRetries + 1} attempt(s): ${msg}`,
623
+ confidence: 0.0,
624
+ };
625
+ }
626
+ try {
627
+ const rawJson = response.content.replace(/```json\n?/g, "").replace(/```/g, "").trim();
628
+ const parseResult = CompletionJudgerResponseSchema.safeParse(JSON.parse(rawJson));
629
+ if (!parseResult.success) {
630
+ deps.logger?.warn(`[completion_judger] Zod parse failed for task ${task.id}: ${parseResult.error.message}`);
631
+ await deps.sessionManager.endSession(reviewSession.id, "Failed to parse LLM review result");
632
+ return {
633
+ passed: false,
634
+ partial: false,
635
+ description: "Failed to parse LLM review result",
636
+ confidence: 0.3,
637
+ };
638
+ }
639
+ const parsed = parseResult.data;
640
+ const verdictStr = parsed.verdict;
641
+ const result = {
642
+ passed: verdictStr === "pass",
643
+ partial: verdictStr === "partial",
644
+ description: parsed.reasoning || "LLM review completed",
645
+ confidence: verdictStr === "pass" ? 0.8 : verdictStr === "partial" ? 0.6 : 0.8,
646
+ criteria_met: parsed.criteria_met,
647
+ criteria_total: parsed.criteria_total,
648
+ };
649
+ await deps.sessionManager.endSession(reviewSession.id, `LLM review: ${verdictStr}`);
650
+ return result;
651
+ }
652
+ catch {
653
+ deps.logger?.warn(`[completion_judger] JSON.parse failed for task ${task.id}`);
654
+ await deps.sessionManager.endSession(reviewSession.id, "Failed to parse LLM review result");
655
+ return {
656
+ passed: false,
657
+ partial: false,
658
+ description: "Failed to parse LLM review result",
659
+ confidence: 0.3,
660
+ };
661
+ }
662
+ }
663
+ function parseExecutorReport(executionResult) {
664
+ // Parse executor's output for self-assessment (reference only)
665
+ return {
666
+ completed: executionResult.success,
667
+ summary: executionResult.output.slice(0, 500),
668
+ partial_results: [],
669
+ blockers: executionResult.error ? [executionResult.error] : [],
670
+ };
671
+ }
672
+ function isDirectionCorrect(verificationResult) {
673
+ // Direction is correct when the verdict is "partial" (some criteria met)
674
+ // Direction is wrong when the verdict is "fail" (no criteria met / wrong approach)
675
+ return verificationResult.verdict === "partial";
676
+ }
677
+ async function attemptRevert(deps, task) {
678
+ // Attempt to revert a task's changes
679
+ // In MVP, we create a revert prompt and check if it succeeds
680
+ // This is called only for reversible tasks
681
+ try {
682
+ const revertSession = await deps.sessionManager.createSession("task_execution", task.goal_id, task.id);
683
+ const revertPrompt = `Revert task "${task.work_description}". Undo all changes in: ${task.scope_boundary.in_scope.join(", ")}.
684
+
685
+ Return JSON: {"success": true|false, "reason": "..."}`;
686
+ const response = await deps.llmClient.sendMessage([{ role: "user", content: revertPrompt }], { system: "Revert failed task changes. Respond with JSON only.", max_tokens: 512 });
687
+ await deps.sessionManager.endSession(revertSession.id, response.content);
688
+ // Parse structured JSON response
689
+ try {
690
+ const parsed = deps.llmClient.parseJSON(response.content, z.object({ success: z.boolean(), reason: z.string() }));
691
+ return parsed.success;
692
+ }
693
+ catch {
694
+ // If parse fails, assume revert failed
695
+ return false;
696
+ }
697
+ }
698
+ catch {
699
+ return false;
700
+ }
701
+ }
702
+ async function setDimensionIntegrity(deps, goalId, dimensionName, integrity) {
703
+ // Attempt to update the dimension's state_integrity flag
704
+ // Read the goal, find the dimension, update integrity
705
+ const goalData = await deps.stateManager.readRaw(`goals/${goalId}/goal.json`);
706
+ if (goalData && typeof goalData === "object") {
707
+ const goal = goalData;
708
+ const dimensions = goal.dimensions;
709
+ if (dimensions) {
710
+ for (const dim of dimensions) {
711
+ if (dim.name === dimensionName) {
712
+ dim.state_integrity = integrity;
713
+ }
714
+ }
715
+ await deps.stateManager.writeRaw(`goals/${goalId}/goal.json`, goal);
716
+ }
717
+ }
718
+ }
719
+ async function appendTaskHistory(deps, goalId, task) {
720
+ const historyPath = `tasks/${goalId}/task-history.json`;
721
+ const existing = await deps.stateManager.readRaw(historyPath);
722
+ const history = Array.isArray(existing) ? existing : [];
723
+ const actual_elapsed_ms = task.started_at && task.completed_at
724
+ ? new Date(task.completed_at).getTime() - new Date(task.started_at).getTime()
725
+ : null;
726
+ const estimated_duration_ms = task.estimated_duration
727
+ ? deps.durationToMs(task.estimated_duration)
728
+ : null;
729
+ history.push({
730
+ task_id: task.id,
731
+ status: task.status,
732
+ primary_dimension: task.primary_dimension,
733
+ consecutive_failure_count: task.consecutive_failure_count,
734
+ completed_at: task.completed_at ?? new Date().toISOString(),
735
+ actual_elapsed_ms,
736
+ estimated_duration_ms,
737
+ });
738
+ await deps.stateManager.writeRaw(historyPath, history);
739
+ }
740
+ // ─── P0 Guard 1: dimension_updates change magnitude limit (§3.2) ───
741
+ /**
742
+ * Clamp a proposed dimension update to within ±30% absolute or ±30% relative
743
+ * of the current value (whichever is larger). Logs a warning when clamping occurs.
744
+ *
745
+ * Exported for unit testing.
746
+ */
747
+ export function clampDimensionUpdate(current, proposed, logger, dimName) {
748
+ const absLimit = 0.3;
749
+ const relLimit = Math.abs(current) * 0.3;
750
+ const maxDelta = Math.max(absLimit, relLimit);
751
+ const clamped = Math.max(current - maxDelta, Math.min(current + maxDelta, proposed));
752
+ if (clamped !== proposed) {
753
+ logger?.warn(`dimension_update clamped: dim=${dimName}, proposed=${proposed}, applied=${clamped}, current=${current}`);
754
+ }
755
+ return clamped;
756
+ }
757
+ // ─── §4.5 Guard: dimension_updates direction check ───
758
+ /**
759
+ * Check whether a proposed dimension update moves in the intended direction.
760
+ * Returns true if the update should be applied, false if it should be skipped.
761
+ *
762
+ * Exported for unit testing.
763
+ */
764
+ export function checkDimensionDirection(intendedDirection, currentValue, proposedValue, logger, dimName) {
765
+ if (!intendedDirection || intendedDirection === "neutral")
766
+ return true;
767
+ const actualDirection = proposedValue > currentValue
768
+ ? "increase"
769
+ : proposedValue < currentValue
770
+ ? "decrease"
771
+ : "neutral";
772
+ if (intendedDirection === "increase" && actualDirection === "decrease") {
773
+ logger?.warn(`dimension_update direction mismatch: task intended ${intendedDirection}, but update suggests ${actualDirection} for dim ${dimName ?? "unknown"}`);
774
+ return false;
775
+ }
776
+ if (intendedDirection === "decrease" && actualDirection === "increase") {
777
+ logger?.warn(`dimension_update direction mismatch: task intended ${intendedDirection}, but update suggests ${actualDirection} for dim ${dimName ?? "unknown"}`);
778
+ return false;
779
+ }
780
+ return true;
781
+ }
782
+ //# sourceMappingURL=task-verifier.js.map