@namzu/sdk 38.1.0 → 39.0.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 (534) hide show
  1. package/CHANGELOG.md +758 -0
  2. package/dist/advisory/executor.d.ts +10 -1
  3. package/dist/advisory/executor.d.ts.map +1 -1
  4. package/dist/advisory/executor.js +5 -26
  5. package/dist/advisory/executor.js.map +1 -1
  6. package/dist/advisory/history.d.ts +9 -0
  7. package/dist/advisory/history.d.ts.map +1 -0
  8. package/dist/advisory/history.js +120 -0
  9. package/dist/advisory/history.js.map +1 -0
  10. package/dist/advisory/index.d.ts +1 -1
  11. package/dist/advisory/index.d.ts.map +1 -1
  12. package/dist/advisory/index.js.map +1 -1
  13. package/dist/agents/ReactiveAgent.d.ts.map +1 -1
  14. package/dist/agents/ReactiveAgent.js +3 -0
  15. package/dist/agents/ReactiveAgent.js.map +1 -1
  16. package/dist/agents/runAgent.d.ts +10 -0
  17. package/dist/agents/runAgent.d.ts.map +1 -1
  18. package/dist/agents/runAgent.js +3 -0
  19. package/dist/agents/runAgent.js.map +1 -1
  20. package/dist/compaction/manual.d.ts +6 -0
  21. package/dist/compaction/manual.d.ts.map +1 -1
  22. package/dist/compaction/manual.js +21 -2
  23. package/dist/compaction/manual.js.map +1 -1
  24. package/dist/compaction/summary.d.ts.map +1 -1
  25. package/dist/compaction/summary.js +4 -1
  26. package/dist/compaction/summary.js.map +1 -1
  27. package/dist/config/runtime.js +2 -2
  28. package/dist/config/runtime.js.map +1 -1
  29. package/dist/contracts/schemas.js +1 -1
  30. package/dist/contracts/schemas.js.map +1 -1
  31. package/dist/eval/harness-protection.d.ts +18 -0
  32. package/dist/eval/harness-protection.d.ts.map +1 -0
  33. package/dist/eval/harness-protection.js +58 -0
  34. package/dist/eval/harness-protection.js.map +1 -0
  35. package/dist/eval/harness-verification.d.ts +6 -1
  36. package/dist/eval/harness-verification.d.ts.map +1 -1
  37. package/dist/eval/harness-verification.js +19 -2
  38. package/dist/eval/harness-verification.js.map +1 -1
  39. package/dist/eval/index.d.ts +1 -0
  40. package/dist/eval/index.d.ts.map +1 -1
  41. package/dist/eval/index.js.map +1 -1
  42. package/dist/manager/resident/activity.d.ts +50 -0
  43. package/dist/manager/resident/activity.d.ts.map +1 -0
  44. package/dist/manager/resident/activity.js +125 -0
  45. package/dist/manager/resident/activity.js.map +1 -0
  46. package/dist/manager/resident/agenda.d.ts +137 -0
  47. package/dist/manager/resident/agenda.d.ts.map +1 -0
  48. package/dist/manager/resident/agenda.js +586 -0
  49. package/dist/manager/resident/agenda.js.map +1 -0
  50. package/dist/manager/resident/consumption.d.ts +104 -0
  51. package/dist/manager/resident/consumption.d.ts.map +1 -0
  52. package/dist/manager/resident/consumption.js +233 -0
  53. package/dist/manager/resident/consumption.js.map +1 -0
  54. package/dist/manager/resident/delivery-window.d.ts +22 -0
  55. package/dist/manager/resident/delivery-window.d.ts.map +1 -0
  56. package/dist/manager/resident/delivery-window.js +78 -0
  57. package/dist/manager/resident/delivery-window.js.map +1 -0
  58. package/dist/manager/resident/evidence-recall.d.ts +24 -0
  59. package/dist/manager/resident/evidence-recall.d.ts.map +1 -0
  60. package/dist/manager/resident/evidence-recall.js +295 -0
  61. package/dist/manager/resident/evidence-recall.js.map +1 -0
  62. package/dist/manager/resident/history-disk.d.ts +10 -0
  63. package/dist/manager/resident/history-disk.d.ts.map +1 -0
  64. package/dist/manager/resident/history-disk.js +50 -0
  65. package/dist/manager/resident/history-disk.js.map +1 -0
  66. package/dist/manager/resident/history.d.ts +79 -0
  67. package/dist/manager/resident/history.d.ts.map +1 -0
  68. package/dist/manager/resident/history.js +203 -0
  69. package/dist/manager/resident/history.js.map +1 -0
  70. package/dist/manager/resident/host.d.ts +78 -0
  71. package/dist/manager/resident/host.d.ts.map +1 -0
  72. package/dist/manager/resident/host.js +252 -0
  73. package/dist/manager/resident/host.js.map +1 -0
  74. package/dist/manager/resident/initiative.d.ts +111 -0
  75. package/dist/manager/resident/initiative.d.ts.map +1 -0
  76. package/dist/manager/resident/initiative.js +129 -0
  77. package/dist/manager/resident/initiative.js.map +1 -0
  78. package/dist/manager/resident/learning-cycle.d.ts +131 -0
  79. package/dist/manager/resident/learning-cycle.d.ts.map +1 -0
  80. package/dist/manager/resident/learning-cycle.js +306 -0
  81. package/dist/manager/resident/learning-cycle.js.map +1 -0
  82. package/dist/manager/resident/learning-observation.d.ts +80 -0
  83. package/dist/manager/resident/learning-observation.d.ts.map +1 -0
  84. package/dist/manager/resident/learning-observation.js +22 -0
  85. package/dist/manager/resident/learning-observation.js.map +1 -0
  86. package/dist/manager/resident/learning-store.d.ts +106 -0
  87. package/dist/manager/resident/learning-store.d.ts.map +1 -0
  88. package/dist/manager/resident/learning-store.js +598 -0
  89. package/dist/manager/resident/learning-store.js.map +1 -0
  90. package/dist/manager/resident/learning.d.ts +726 -0
  91. package/dist/manager/resident/learning.d.ts.map +1 -0
  92. package/dist/manager/resident/learning.js +353 -0
  93. package/dist/manager/resident/learning.js.map +1 -0
  94. package/dist/manager/resident/loop.d.ts +31 -0
  95. package/dist/manager/resident/loop.d.ts.map +1 -0
  96. package/dist/manager/resident/loop.js +69 -0
  97. package/dist/manager/resident/loop.js.map +1 -0
  98. package/dist/manager/resident/outbox.d.ts +180 -0
  99. package/dist/manager/resident/outbox.d.ts.map +1 -0
  100. package/dist/manager/resident/outbox.js +214 -0
  101. package/dist/manager/resident/outbox.js.map +1 -0
  102. package/dist/manager/resident/proposal.d.ts +91 -0
  103. package/dist/manager/resident/proposal.d.ts.map +1 -0
  104. package/dist/manager/resident/proposal.js +75 -0
  105. package/dist/manager/resident/proposal.js.map +1 -0
  106. package/dist/manager/resident/store.d.ts +182 -0
  107. package/dist/manager/resident/store.d.ts.map +1 -0
  108. package/dist/manager/resident/store.js +199 -0
  109. package/dist/manager/resident/store.js.map +1 -0
  110. package/dist/manager/resident/tool-evidence.d.ts +71 -0
  111. package/dist/manager/resident/tool-evidence.d.ts.map +1 -0
  112. package/dist/manager/resident/tool-evidence.js +285 -0
  113. package/dist/manager/resident/tool-evidence.js.map +1 -0
  114. package/dist/manager/run/persistence.d.ts.map +1 -1
  115. package/dist/manager/run/persistence.js +6 -0
  116. package/dist/manager/run/persistence.js.map +1 -1
  117. package/dist/plugin/loader.d.ts.map +1 -1
  118. package/dist/plugin/loader.js +5 -3
  119. package/dist/plugin/loader.js.map +1 -1
  120. package/dist/prompt/coding-agent-doctrine.d.ts +1 -1
  121. package/dist/prompt/coding-agent-doctrine.d.ts.map +1 -1
  122. package/dist/prompt/coding-agent-doctrine.js +2 -0
  123. package/dist/prompt/coding-agent-doctrine.js.map +1 -1
  124. package/dist/prompt/contributions.d.ts +5 -2
  125. package/dist/prompt/contributions.d.ts.map +1 -1
  126. package/dist/prompt/contributions.js.map +1 -1
  127. package/dist/prompt/index.d.ts +4 -0
  128. package/dist/prompt/index.d.ts.map +1 -1
  129. package/dist/prompt/index.js +2 -0
  130. package/dist/prompt/index.js.map +1 -1
  131. package/dist/prompt/resident-learning.d.ts +19 -0
  132. package/dist/prompt/resident-learning.d.ts.map +1 -0
  133. package/dist/prompt/resident-learning.js +125 -0
  134. package/dist/prompt/resident-learning.js.map +1 -0
  135. package/dist/prompt/resident-step.d.ts +36 -0
  136. package/dist/prompt/resident-step.d.ts.map +1 -0
  137. package/dist/prompt/resident-step.js +135 -0
  138. package/dist/prompt/resident-step.js.map +1 -0
  139. package/dist/provider/collect-chat-completion.d.ts +2 -1
  140. package/dist/provider/collect-chat-completion.d.ts.map +1 -1
  141. package/dist/provider/collect-chat-completion.js +7 -6
  142. package/dist/provider/collect-chat-completion.js.map +1 -1
  143. package/dist/provider/fallback.d.ts.map +1 -1
  144. package/dist/provider/fallback.js +2 -1
  145. package/dist/provider/fallback.js.map +1 -1
  146. package/dist/provider/stream-text.d.ts +16 -0
  147. package/dist/provider/stream-text.d.ts.map +1 -0
  148. package/dist/provider/stream-text.js +51 -0
  149. package/dist/provider/stream-text.js.map +1 -0
  150. package/dist/public-runtime.d.ts +22 -3
  151. package/dist/public-runtime.d.ts.map +1 -1
  152. package/dist/public-runtime.js +21 -3
  153. package/dist/public-runtime.js.map +1 -1
  154. package/dist/public-tools.d.ts +2 -0
  155. package/dist/public-tools.d.ts.map +1 -1
  156. package/dist/public-tools.js +2 -0
  157. package/dist/public-tools.js.map +1 -1
  158. package/dist/public-types.d.ts +29 -3
  159. package/dist/public-types.d.ts.map +1 -1
  160. package/dist/registry/index.d.ts +1 -1
  161. package/dist/registry/index.d.ts.map +1 -1
  162. package/dist/registry/tool/execute.d.ts +18 -0
  163. package/dist/registry/tool/execute.d.ts.map +1 -1
  164. package/dist/registry/tool/execute.js +43 -6
  165. package/dist/registry/tool/execute.js.map +1 -1
  166. package/dist/run/LimitChecker.js +3 -3
  167. package/dist/run/LimitChecker.js.map +1 -1
  168. package/dist/run/evidence-query.d.ts +41 -0
  169. package/dist/run/evidence-query.d.ts.map +1 -0
  170. package/dist/run/evidence-query.js +270 -0
  171. package/dist/run/evidence-query.js.map +1 -0
  172. package/dist/run/evidence-recall.d.ts +99 -0
  173. package/dist/run/evidence-recall.d.ts.map +1 -0
  174. package/dist/run/evidence-recall.js +633 -0
  175. package/dist/run/evidence-recall.js.map +1 -0
  176. package/dist/run/index.d.ts +2 -0
  177. package/dist/run/index.d.ts.map +1 -1
  178. package/dist/run/index.js +1 -0
  179. package/dist/run/index.js.map +1 -1
  180. package/dist/run/json-claim-verifier.d.ts +83 -0
  181. package/dist/run/json-claim-verifier.d.ts.map +1 -0
  182. package/dist/run/json-claim-verifier.js +200 -0
  183. package/dist/run/json-claim-verifier.js.map +1 -0
  184. package/dist/run/preparation-context-error.d.ts +10 -0
  185. package/dist/run/preparation-context-error.d.ts.map +1 -0
  186. package/dist/run/preparation-context-error.js +15 -0
  187. package/dist/run/preparation-context-error.js.map +1 -0
  188. package/dist/run-query/index.d.ts +3 -1
  189. package/dist/run-query/index.d.ts.map +1 -1
  190. package/dist/runtime/query/callback-inference.d.ts +8 -0
  191. package/dist/runtime/query/callback-inference.d.ts.map +1 -0
  192. package/dist/runtime/query/callback-inference.js +89 -0
  193. package/dist/runtime/query/callback-inference.js.map +1 -0
  194. package/dist/runtime/query/checkpoint.d.ts +4 -0
  195. package/dist/runtime/query/checkpoint.d.ts.map +1 -1
  196. package/dist/runtime/query/checkpoint.js +13 -0
  197. package/dist/runtime/query/checkpoint.js.map +1 -1
  198. package/dist/runtime/query/events.d.ts +7 -1
  199. package/dist/runtime/query/events.d.ts.map +1 -1
  200. package/dist/runtime/query/events.js +39 -12
  201. package/dist/runtime/query/events.js.map +1 -1
  202. package/dist/runtime/query/executor.d.ts +7 -1
  203. package/dist/runtime/query/executor.d.ts.map +1 -1
  204. package/dist/runtime/query/executor.js +38 -7
  205. package/dist/runtime/query/executor.js.map +1 -1
  206. package/dist/runtime/query/file-evidence-context.d.ts +5 -0
  207. package/dist/runtime/query/file-evidence-context.d.ts.map +1 -0
  208. package/dist/runtime/query/file-evidence-context.js +64 -0
  209. package/dist/runtime/query/file-evidence-context.js.map +1 -0
  210. package/dist/runtime/query/guard.d.ts.map +1 -1
  211. package/dist/runtime/query/guard.js +4 -0
  212. package/dist/runtime/query/guard.js.map +1 -1
  213. package/dist/runtime/query/index.d.ts +10 -1
  214. package/dist/runtime/query/index.d.ts.map +1 -1
  215. package/dist/runtime/query/index.js +40 -25
  216. package/dist/runtime/query/index.js.map +1 -1
  217. package/dist/runtime/query/iteration/index.d.ts +9 -31
  218. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  219. package/dist/runtime/query/iteration/index.js +231 -93
  220. package/dist/runtime/query/iteration/index.js.map +1 -1
  221. package/dist/runtime/query/iteration/phases/advisory.d.ts +2 -1
  222. package/dist/runtime/query/iteration/phases/advisory.d.ts.map +1 -1
  223. package/dist/runtime/query/iteration/phases/advisory.js +2 -1
  224. package/dist/runtime/query/iteration/phases/advisory.js.map +1 -1
  225. package/dist/runtime/query/iteration/phases/context.d.ts +2 -1
  226. package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
  227. package/dist/runtime/query/iteration/phases/context.js.map +1 -1
  228. package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
  229. package/dist/runtime/query/iteration/phases/tool-review.js +3 -0
  230. package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
  231. package/dist/runtime/query/iteration/provider-rejected-image.d.ts +2 -1
  232. package/dist/runtime/query/iteration/provider-rejected-image.d.ts.map +1 -1
  233. package/dist/runtime/query/iteration/provider-rejected-image.js +5 -2
  234. package/dist/runtime/query/iteration/provider-rejected-image.js.map +1 -1
  235. package/dist/runtime/query/iteration/stream-turn.d.ts +4 -1
  236. package/dist/runtime/query/iteration/stream-turn.d.ts.map +1 -1
  237. package/dist/runtime/query/iteration/stream-turn.js +22 -8
  238. package/dist/runtime/query/iteration/stream-turn.js.map +1 -1
  239. package/dist/runtime/query/prompt-cache.d.ts.map +1 -1
  240. package/dist/runtime/query/prompt-cache.js +21 -42
  241. package/dist/runtime/query/prompt-cache.js.map +1 -1
  242. package/dist/runtime/query/resume-pending.d.ts +18 -33
  243. package/dist/runtime/query/resume-pending.d.ts.map +1 -1
  244. package/dist/runtime/query/resume-pending.js +59 -42
  245. package/dist/runtime/query/resume-pending.js.map +1 -1
  246. package/dist/runtime/query/review-policy.d.ts +4 -4
  247. package/dist/runtime/query/review-policy.d.ts.map +1 -1
  248. package/dist/runtime/query/review-policy.js +10 -9
  249. package/dist/runtime/query/review-policy.js.map +1 -1
  250. package/dist/runtime/query/sandbox-lifecycle.d.ts.map +1 -1
  251. package/dist/runtime/query/sandbox-lifecycle.js +4 -0
  252. package/dist/runtime/query/sandbox-lifecycle.js.map +1 -1
  253. package/dist/runtime/query/tool-output-budget.d.ts +10 -6
  254. package/dist/runtime/query/tool-output-budget.d.ts.map +1 -1
  255. package/dist/runtime/query/tool-output-budget.js +54 -12
  256. package/dist/runtime/query/tool-output-budget.js.map +1 -1
  257. package/dist/runtime/query/tooling.d.ts +3 -1
  258. package/dist/runtime/query/tooling.d.ts.map +1 -1
  259. package/dist/runtime/query/tooling.js +4 -0
  260. package/dist/runtime/query/tooling.js.map +1 -1
  261. package/dist/scheduler/completion-inbox.d.ts +3 -0
  262. package/dist/scheduler/completion-inbox.d.ts.map +1 -1
  263. package/dist/scheduler/completion-inbox.js +28 -0
  264. package/dist/scheduler/completion-inbox.js.map +1 -1
  265. package/dist/store/evidence/compaction-archive.d.ts +109 -0
  266. package/dist/store/evidence/compaction-archive.d.ts.map +1 -0
  267. package/dist/store/evidence/compaction-archive.js +125 -0
  268. package/dist/store/evidence/compaction-archive.js.map +1 -0
  269. package/dist/store/evidence/compaction-provenance.d.ts +7 -0
  270. package/dist/store/evidence/compaction-provenance.d.ts.map +1 -0
  271. package/dist/store/evidence/compaction-provenance.js +49 -0
  272. package/dist/store/evidence/compaction-provenance.js.map +1 -0
  273. package/dist/store/evidence/compaction-text.d.ts +16 -0
  274. package/dist/store/evidence/compaction-text.d.ts.map +1 -0
  275. package/dist/store/evidence/compaction-text.js +51 -0
  276. package/dist/store/evidence/compaction-text.js.map +1 -0
  277. package/dist/store/evidence/disk.d.ts +11 -0
  278. package/dist/store/evidence/disk.d.ts.map +1 -0
  279. package/dist/store/evidence/disk.js +367 -0
  280. package/dist/store/evidence/disk.js.map +1 -0
  281. package/dist/store/evidence/format.d.ts +25 -0
  282. package/dist/store/evidence/format.d.ts.map +1 -0
  283. package/dist/store/evidence/format.js +115 -0
  284. package/dist/store/evidence/format.js.map +1 -0
  285. package/dist/store/evidence/index-page.d.ts +208 -0
  286. package/dist/store/evidence/index-page.d.ts.map +1 -0
  287. package/dist/store/evidence/index-page.js +262 -0
  288. package/dist/store/evidence/index-page.js.map +1 -0
  289. package/dist/store/evidence/io.d.ts +24 -0
  290. package/dist/store/evidence/io.d.ts.map +1 -0
  291. package/dist/store/evidence/io.js +69 -0
  292. package/dist/store/evidence/io.js.map +1 -0
  293. package/dist/store/evidence/linked.d.ts +9 -0
  294. package/dist/store/evidence/linked.d.ts.map +1 -0
  295. package/dist/store/evidence/linked.js +314 -0
  296. package/dist/store/evidence/linked.js.map +1 -0
  297. package/dist/store/evidence/passages.d.ts +15 -0
  298. package/dist/store/evidence/passages.d.ts.map +1 -0
  299. package/dist/store/evidence/passages.js +72 -0
  300. package/dist/store/evidence/passages.js.map +1 -0
  301. package/dist/store/evidence/record-chain.d.ts +42 -0
  302. package/dist/store/evidence/record-chain.d.ts.map +1 -0
  303. package/dist/store/evidence/record-chain.js +111 -0
  304. package/dist/store/evidence/record-chain.js.map +1 -0
  305. package/dist/store/evidence/search-input.d.ts +21 -0
  306. package/dist/store/evidence/search-input.d.ts.map +1 -0
  307. package/dist/store/evidence/search-input.js +44 -0
  308. package/dist/store/evidence/search-input.js.map +1 -0
  309. package/dist/store/evidence/selection.d.ts +9 -0
  310. package/dist/store/evidence/selection.d.ts.map +1 -0
  311. package/dist/store/evidence/selection.js +17 -0
  312. package/dist/store/evidence/selection.js.map +1 -0
  313. package/dist/store/evidence/source-kind.d.ts +11 -0
  314. package/dist/store/evidence/source-kind.d.ts.map +1 -0
  315. package/dist/store/evidence/source-kind.js +26 -0
  316. package/dist/store/evidence/source-kind.js.map +1 -0
  317. package/dist/store/evidence/source-text.d.ts +51 -0
  318. package/dist/store/evidence/source-text.d.ts.map +1 -0
  319. package/dist/store/evidence/source-text.js +213 -0
  320. package/dist/store/evidence/source-text.js.map +1 -0
  321. package/dist/store/evidence/types.d.ts +162 -0
  322. package/dist/store/evidence/types.d.ts.map +1 -0
  323. package/dist/store/evidence/types.js +2 -0
  324. package/dist/store/evidence/types.js.map +1 -0
  325. package/dist/store/memory/disk.d.ts +2 -0
  326. package/dist/store/memory/disk.d.ts.map +1 -1
  327. package/dist/store/memory/disk.js +2 -1
  328. package/dist/store/memory/disk.js.map +1 -1
  329. package/dist/store/run/disk.d.ts +10 -0
  330. package/dist/store/run/disk.d.ts.map +1 -1
  331. package/dist/store/run/disk.js +87 -7
  332. package/dist/store/run/disk.js.map +1 -1
  333. package/dist/store/run/memory.d.ts +1 -0
  334. package/dist/store/run/memory.d.ts.map +1 -1
  335. package/dist/store/run/memory.js +10 -0
  336. package/dist/store/run/memory.js.map +1 -1
  337. package/dist/store/run/tool-executions.d.ts +13 -0
  338. package/dist/store/run/tool-executions.d.ts.map +1 -0
  339. package/dist/store/run/tool-executions.js +99 -0
  340. package/dist/store/run/tool-executions.js.map +1 -0
  341. package/dist/store/session/index.d.ts +2 -0
  342. package/dist/store/session/index.d.ts.map +1 -1
  343. package/dist/store/session/index.js +1 -0
  344. package/dist/store/session/index.js.map +1 -1
  345. package/dist/store/session/sqlite.d.ts +57 -0
  346. package/dist/store/session/sqlite.d.ts.map +1 -0
  347. package/dist/store/session/sqlite.js +430 -0
  348. package/dist/store/session/sqlite.js.map +1 -0
  349. package/dist/tools/builtins/job.d.ts.map +1 -1
  350. package/dist/tools/builtins/job.js +4 -5
  351. package/dist/tools/builtins/job.js.map +1 -1
  352. package/dist/tools/builtins/write-file.js +2 -2
  353. package/dist/tools/builtins/write-file.js.map +1 -1
  354. package/dist/tools/defineTool.d.ts +2 -1
  355. package/dist/tools/defineTool.d.ts.map +1 -1
  356. package/dist/tools/defineTool.js +1 -1
  357. package/dist/tools/defineTool.js.map +1 -1
  358. package/dist/tools/file-read-tracker.d.ts.map +1 -1
  359. package/dist/tools/file-read-tracker.js +12 -3
  360. package/dist/tools/file-read-tracker.js.map +1 -1
  361. package/dist/tools/resident-history.d.ts +10 -0
  362. package/dist/tools/resident-history.d.ts.map +1 -0
  363. package/dist/tools/resident-history.js +80 -0
  364. package/dist/tools/resident-history.js.map +1 -0
  365. package/dist/tools/resident-tool-evidence.d.ts +5 -0
  366. package/dist/tools/resident-tool-evidence.d.ts.map +1 -0
  367. package/dist/tools/resident-tool-evidence.js +57 -0
  368. package/dist/tools/resident-tool-evidence.js.map +1 -0
  369. package/dist/types/advisory/config.d.ts +7 -0
  370. package/dist/types/advisory/config.d.ts.map +1 -1
  371. package/dist/types/agent/reactive.d.ts +1 -0
  372. package/dist/types/agent/reactive.d.ts.map +1 -1
  373. package/dist/types/authorization/index.d.ts +9 -9
  374. package/dist/types/authorization/index.d.ts.map +1 -1
  375. package/dist/types/authorization/index.js +1 -1
  376. package/dist/types/authorization/index.js.map +1 -1
  377. package/dist/types/hitl/index.d.ts +4 -0
  378. package/dist/types/hitl/index.d.ts.map +1 -1
  379. package/dist/types/hitl/index.js.map +1 -1
  380. package/dist/types/message/index.d.ts +16 -2
  381. package/dist/types/message/index.d.ts.map +1 -1
  382. package/dist/types/message/index.js +8 -1
  383. package/dist/types/message/index.js.map +1 -1
  384. package/dist/types/provider/chat.d.ts +2 -0
  385. package/dist/types/provider/chat.d.ts.map +1 -1
  386. package/dist/types/provider/stream.d.ts +4 -0
  387. package/dist/types/provider/stream.d.ts.map +1 -1
  388. package/dist/types/run/answer-review.d.ts +34 -3
  389. package/dist/types/run/answer-review.d.ts.map +1 -1
  390. package/dist/types/run/config.d.ts +3 -0
  391. package/dist/types/run/config.d.ts.map +1 -1
  392. package/dist/types/run/entity.d.ts +7 -0
  393. package/dist/types/run/entity.d.ts.map +1 -1
  394. package/dist/types/run/events.d.ts +31 -8
  395. package/dist/types/run/events.d.ts.map +1 -1
  396. package/dist/types/run/events.js.map +1 -1
  397. package/dist/types/run/prepare-step.d.ts +53 -8
  398. package/dist/types/run/prepare-step.d.ts.map +1 -1
  399. package/dist/types/run/store.d.ts +29 -4
  400. package/dist/types/run/store.d.ts.map +1 -1
  401. package/dist/types/run/store.js +0 -28
  402. package/dist/types/run/store.js.map +1 -1
  403. package/dist/types/tool/index.d.ts +15 -1
  404. package/dist/types/tool/index.d.ts.map +1 -1
  405. package/dist/types/tool/index.js.map +1 -1
  406. package/dist/utils/await-with-abort.d.ts +8 -0
  407. package/dist/utils/await-with-abort.d.ts.map +1 -0
  408. package/dist/utils/await-with-abort.js +28 -0
  409. package/dist/utils/await-with-abort.js.map +1 -0
  410. package/dist/utils/evidence-time.d.ts +3 -0
  411. package/dist/utils/evidence-time.d.ts.map +1 -0
  412. package/dist/utils/evidence-time.js +10 -0
  413. package/dist/utils/evidence-time.js.map +1 -0
  414. package/dist/utils/evidence-tokens.d.ts +13 -0
  415. package/dist/utils/evidence-tokens.d.ts.map +1 -0
  416. package/dist/utils/evidence-tokens.js +29 -0
  417. package/dist/utils/evidence-tokens.js.map +1 -0
  418. package/package.json +1 -1
  419. package/src/advisory/executor.ts +15 -30
  420. package/src/advisory/history.ts +126 -0
  421. package/src/advisory/index.ts +5 -1
  422. package/src/agents/ReactiveAgent.ts +3 -0
  423. package/src/agents/runAgent.ts +14 -1
  424. package/src/compaction/manual.ts +30 -2
  425. package/src/compaction/summary.ts +4 -1
  426. package/src/config/runtime.ts +2 -2
  427. package/src/contracts/schemas.ts +1 -1
  428. package/src/eval/harness-protection.ts +79 -0
  429. package/src/eval/harness-verification.ts +31 -1
  430. package/src/eval/index.ts +1 -0
  431. package/src/manager/resident/activity.ts +187 -0
  432. package/src/manager/resident/agenda.ts +907 -0
  433. package/src/manager/resident/consumption.ts +311 -0
  434. package/src/manager/resident/delivery-window.ts +93 -0
  435. package/src/manager/resident/evidence-recall.ts +363 -0
  436. package/src/manager/resident/history-disk.ts +63 -0
  437. package/src/manager/resident/history.ts +312 -0
  438. package/src/manager/resident/host.ts +356 -0
  439. package/src/manager/resident/initiative.ts +205 -0
  440. package/src/manager/resident/learning-cycle.ts +499 -0
  441. package/src/manager/resident/learning-observation.ts +39 -0
  442. package/src/manager/resident/learning-store.ts +813 -0
  443. package/src/manager/resident/learning.ts +493 -0
  444. package/src/manager/resident/loop.ts +101 -0
  445. package/src/manager/resident/outbox.ts +307 -0
  446. package/src/manager/resident/proposal.ts +105 -0
  447. package/src/manager/resident/store.ts +257 -0
  448. package/src/manager/resident/tool-evidence.ts +412 -0
  449. package/src/manager/run/persistence.ts +6 -0
  450. package/src/plugin/loader.ts +8 -3
  451. package/src/prompt/coding-agent-doctrine.ts +2 -0
  452. package/src/prompt/contributions.ts +5 -2
  453. package/src/prompt/index.ts +4 -0
  454. package/src/prompt/resident-learning.ts +143 -0
  455. package/src/prompt/resident-step.ts +176 -0
  456. package/src/provider/collect-chat-completion.ts +7 -6
  457. package/src/provider/fallback.ts +2 -1
  458. package/src/provider/stream-text.ts +56 -0
  459. package/src/public-runtime.ts +44 -0
  460. package/src/public-tools.ts +3 -0
  461. package/src/public-types.ts +165 -0
  462. package/src/registry/index.ts +1 -1
  463. package/src/registry/tool/execute.ts +56 -9
  464. package/src/run/LimitChecker.ts +3 -3
  465. package/src/run/evidence-query.ts +333 -0
  466. package/src/run/evidence-recall.ts +854 -0
  467. package/src/run/index.ts +11 -0
  468. package/src/run/json-claim-verifier.ts +298 -0
  469. package/src/run/preparation-context-error.ts +16 -0
  470. package/src/run-query/index.ts +1 -1
  471. package/src/runtime/query/callback-inference.ts +94 -0
  472. package/src/runtime/query/checkpoint.ts +14 -0
  473. package/src/runtime/query/events.ts +46 -14
  474. package/src/runtime/query/executor.ts +51 -9
  475. package/src/runtime/query/file-evidence-context.ts +65 -0
  476. package/src/runtime/query/guard.ts +2 -0
  477. package/src/runtime/query/index.ts +50 -27
  478. package/src/runtime/query/iteration/index.ts +269 -86
  479. package/src/runtime/query/iteration/phases/advisory.ts +3 -0
  480. package/src/runtime/query/iteration/phases/context.ts +2 -0
  481. package/src/runtime/query/iteration/phases/tool-review.ts +3 -0
  482. package/src/runtime/query/iteration/provider-rejected-image.ts +6 -1
  483. package/src/runtime/query/iteration/stream-turn.ts +35 -8
  484. package/src/runtime/query/prompt-cache.ts +24 -47
  485. package/src/runtime/query/resume-pending.ts +65 -40
  486. package/src/runtime/query/review-policy.ts +13 -9
  487. package/src/runtime/query/sandbox-lifecycle.ts +3 -0
  488. package/src/runtime/query/tool-output-budget.ts +65 -13
  489. package/src/runtime/query/tooling.ts +7 -1
  490. package/src/scheduler/completion-inbox.ts +26 -0
  491. package/src/store/evidence/compaction-archive.ts +139 -0
  492. package/src/store/evidence/compaction-provenance.ts +52 -0
  493. package/src/store/evidence/compaction-text.ts +61 -0
  494. package/src/store/evidence/disk.ts +461 -0
  495. package/src/store/evidence/format.ts +126 -0
  496. package/src/store/evidence/index-page.ts +292 -0
  497. package/src/store/evidence/io.ts +95 -0
  498. package/src/store/evidence/linked.ts +365 -0
  499. package/src/store/evidence/passages.ts +88 -0
  500. package/src/store/evidence/record-chain.ts +108 -0
  501. package/src/store/evidence/search-input.ts +62 -0
  502. package/src/store/evidence/selection.ts +25 -0
  503. package/src/store/evidence/source-kind.ts +36 -0
  504. package/src/store/evidence/source-text.ts +285 -0
  505. package/src/store/evidence/types.ts +177 -0
  506. package/src/store/memory/disk.ts +4 -1
  507. package/src/store/run/disk.ts +110 -8
  508. package/src/store/run/memory.ts +10 -0
  509. package/src/store/run/tool-executions.ts +112 -0
  510. package/src/store/session/index.ts +2 -0
  511. package/src/store/session/sqlite.ts +584 -0
  512. package/src/tools/builtins/job.ts +4 -5
  513. package/src/tools/builtins/write-file.ts +2 -2
  514. package/src/tools/defineTool.ts +4 -2
  515. package/src/tools/file-read-tracker.ts +8 -2
  516. package/src/tools/resident-history.ts +86 -0
  517. package/src/tools/resident-tool-evidence.ts +68 -0
  518. package/src/types/advisory/config.ts +7 -0
  519. package/src/types/agent/reactive.ts +1 -0
  520. package/src/types/authorization/index.ts +2 -2
  521. package/src/types/hitl/index.ts +4 -0
  522. package/src/types/message/index.ts +20 -0
  523. package/src/types/provider/chat.ts +2 -0
  524. package/src/types/provider/stream.ts +4 -0
  525. package/src/types/run/answer-review.ts +34 -3
  526. package/src/types/run/config.ts +3 -0
  527. package/src/types/run/entity.ts +7 -0
  528. package/src/types/run/events.ts +31 -8
  529. package/src/types/run/prepare-step.ts +59 -8
  530. package/src/types/run/store.ts +35 -4
  531. package/src/types/tool/index.ts +19 -1
  532. package/src/utils/await-with-abort.ts +26 -0
  533. package/src/utils/evidence-time.ts +9 -0
  534. package/src/utils/evidence-tokens.ts +32 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"learning.d.ts","sourceRoot":"","sources":["../../../src/manager/resident/learning.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,353 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { z } from 'zod';
3
+ import { normalizeHarnessProtection, } from '../../eval/harness-protection.js';
4
+ import { reviewHarnessCandidate, } from '../../eval/harness-verification.js';
5
+ const label = z.string().trim().min(1).max(256);
6
+ const name = z.string().regex(/^[a-z0-9][a-z0-9_-]{0,63}$/);
7
+ const digest = z.string().regex(/^[a-f0-9]{64}$/);
8
+ export const residentLearningEvidenceSchema = z.object({
9
+ key: label,
10
+ source: label,
11
+ reason: z.string().trim().min(1).max(1_000),
12
+ });
13
+ const sourceSchema = z.object({ key: label, revision: label });
14
+ const sourcesSchema = z
15
+ .array(sourceSchema)
16
+ .min(1)
17
+ .max(8)
18
+ .superRefine((sources, context) => {
19
+ if (new Set(sources.map((source) => source.key)).size !== sources.length)
20
+ context.addIssue({ code: z.ZodIssueCode.custom, message: 'Duplicate learning source keys.' });
21
+ })
22
+ .transform((sources) => sources.sort((a, b) => (a.key < b.key ? -1 : a.key > b.key ? 1 : 0)));
23
+ const candidateSchema = z.object({
24
+ name,
25
+ /** Omitted means ordinary task guidance; exploration policies require explicit projection. */
26
+ purpose: z.enum(['task', 'exploration']).optional(),
27
+ description: z.string().trim().min(1).max(1_000),
28
+ body: z.string().trim().min(1).max(4_000),
29
+ /** Optional dependencies whose revisions must still match before projection. */
30
+ sources: sourcesSchema.optional(),
31
+ });
32
+ /** Internal canonical snapshot, including immutable source bindings. */
33
+ export function normalizeResidentSkill(input) {
34
+ const candidate = candidateSchema.parse(input);
35
+ return Object.freeze({
36
+ ...candidate,
37
+ ...(candidate.sources
38
+ ? { sources: Object.freeze(candidate.sources.map((source) => Object.freeze(source))) }
39
+ : {}),
40
+ });
41
+ }
42
+ const learnedSkillSchema = candidateSchema.extend({
43
+ hash: digest,
44
+ evidence: residentLearningEvidenceSchema,
45
+ verification: z.object({
46
+ baselineHash: z.union([digest, z.literal('none')]),
47
+ candidateHash: digest,
48
+ evidenceDigest: digest,
49
+ verificationTasks: z.number().int().min(5).max(64),
50
+ confirmationTasks: z.number().int().min(5).max(64),
51
+ /** Absent only on historical activations made before protection was required. */
52
+ protection: z
53
+ .object({
54
+ verificationTasks: z.number().int().min(1).max(63),
55
+ confirmationTasks: z.number().int().min(1).max(63),
56
+ planDigest: digest,
57
+ })
58
+ .optional(),
59
+ }),
60
+ });
61
+ export const residentLearningSchema = z
62
+ .object({
63
+ revision: z.number().int().positive().safe(),
64
+ identity: z
65
+ .object({
66
+ text: z.string().trim().min(1).max(4_000),
67
+ evidence: residentLearningEvidenceSchema,
68
+ })
69
+ .optional(),
70
+ preferences: z
71
+ .array(z.object({
72
+ key: name,
73
+ value: z.string().trim().min(1).max(1_000),
74
+ evidence: residentLearningEvidenceSchema,
75
+ }))
76
+ .max(32),
77
+ skills: z.array(learnedSkillSchema).max(16),
78
+ lastChange: residentLearningEvidenceSchema,
79
+ })
80
+ .superRefine((state, context) => {
81
+ if (new Set(state.preferences.map((p) => p.key)).size !== state.preferences.length ||
82
+ new Set(state.skills.map((s) => s.name)).size !== state.skills.length ||
83
+ state.skills.some((skill) => skill.hash !== hashResidentSkill(skill) ||
84
+ skill.verification.candidateHash !== skill.hash))
85
+ context.addIssue({
86
+ code: z.ZodIssueCode.custom,
87
+ message: 'Invalid resident learning identity or content digest.',
88
+ });
89
+ });
90
+ /** Internal immutable snapshot used by storage and admitted context. */
91
+ export function freezeResidentLearning(input) {
92
+ const state = residentLearningSchema.parse(input);
93
+ return Object.freeze({
94
+ ...state,
95
+ ...(state.identity
96
+ ? {
97
+ identity: Object.freeze({
98
+ ...state.identity,
99
+ evidence: Object.freeze(state.identity.evidence),
100
+ }),
101
+ }
102
+ : {}),
103
+ preferences: Object.freeze(state.preferences.map((p) => Object.freeze({ ...p, evidence: Object.freeze(p.evidence) }))),
104
+ skills: Object.freeze(state.skills.map((skill) => Object.freeze({
105
+ ...skill,
106
+ ...(skill.sources
107
+ ? { sources: Object.freeze(skill.sources.map((source) => Object.freeze(source))) }
108
+ : {}),
109
+ evidence: Object.freeze(skill.evidence),
110
+ verification: Object.freeze({
111
+ ...skill.verification,
112
+ ...(skill.verification.protection
113
+ ? { protection: Object.freeze(skill.verification.protection) }
114
+ : {}),
115
+ }),
116
+ }))),
117
+ lastChange: Object.freeze(state.lastChange),
118
+ });
119
+ }
120
+ function evidenceFor(current, input) {
121
+ const evidence = residentLearningEvidenceSchema.parse(input);
122
+ const used = [
123
+ current?.lastChange,
124
+ current?.identity?.evidence,
125
+ ...(current?.preferences.map((p) => p.evidence) ?? []),
126
+ ...(current?.skills.map((s) => s.evidence) ?? []),
127
+ ];
128
+ if (used.some((old) => old?.key === evidence.key))
129
+ throw new Error('A learning change requires a fresh evidence key.');
130
+ return evidence;
131
+ }
132
+ function base(current, evidence) {
133
+ const checked = current ? freezeResidentLearning(current) : undefined;
134
+ return {
135
+ ...checked,
136
+ revision: (checked?.revision ?? 0) + 1,
137
+ preferences: checked?.preferences ?? [],
138
+ skills: checked?.skills ?? [],
139
+ lastChange: evidence,
140
+ };
141
+ }
142
+ /** Internal pure profile transition; storage owns exact agenda CAS and idle admission. */
143
+ export function reviseResidentProfile(current, input) {
144
+ const checked = z
145
+ .object({
146
+ identity: z.string().trim().min(1).max(4_000).optional(),
147
+ preferences: z
148
+ .array(z.object({
149
+ key: name,
150
+ value: z.string().trim().min(1).max(1_000),
151
+ supersedes: label.nullable(),
152
+ }))
153
+ .max(32)
154
+ .optional(),
155
+ evidence: residentLearningEvidenceSchema,
156
+ })
157
+ .parse(input);
158
+ if (checked.identity === undefined && !checked.preferences?.length)
159
+ throw new Error('A profile change must change identity or preferences.');
160
+ if (new Set(checked.preferences?.map((p) => p.key)).size !== checked.preferences?.length &&
161
+ checked.preferences !== undefined)
162
+ throw new Error('Duplicate preference corrections are not allowed.');
163
+ const evidence = evidenceFor(current, checked.evidence);
164
+ const next = base(current, evidence);
165
+ const preferences = [...next.preferences];
166
+ for (const change of checked.preferences ?? []) {
167
+ const index = preferences.findIndex((p) => p.key === change.key);
168
+ const previous = index >= 0 ? preferences[index] : undefined;
169
+ if (change.supersedes !== (previous?.evidence.key ?? null))
170
+ throw new Error('Preference correction does not supersede its current evidence.');
171
+ const updated = { key: change.key, value: change.value, evidence };
172
+ if (index < 0)
173
+ preferences.push(updated);
174
+ else
175
+ preferences[index] = updated;
176
+ }
177
+ return freezeResidentLearning({
178
+ ...next,
179
+ preferences,
180
+ ...(checked.identity !== undefined ? { identity: { text: checked.identity, evidence } } : {}),
181
+ });
182
+ }
183
+ /** @experimental Bind evaluation to normalized content and any declared source dependencies. */
184
+ export function hashResidentSkill(input) {
185
+ const candidate = candidateSchema.parse(input);
186
+ return createHash('sha256')
187
+ .update(JSON.stringify([
188
+ candidate.name,
189
+ candidate.description,
190
+ candidate.body,
191
+ ...(candidate.sources ? [candidate.sources] : []),
192
+ ...(candidate.purpose === 'exploration' ? [{ purpose: candidate.purpose }] : []),
193
+ ]))
194
+ .digest('hex');
195
+ }
196
+ /** Internal pure activation; reuse the kernel's conservative two-round verification gate. */
197
+ export function promoteResidentSkill(current, input, evaluation, inputEvidence) {
198
+ const protection = normalizeHarnessProtection(evaluation.protection);
199
+ const candidate = candidateSchema.parse(input);
200
+ const hash = hashResidentSkill(candidate);
201
+ const baseline = current?.skills.find((s) => s.name === candidate.name);
202
+ if (baseline && (baseline.purpose ?? 'task') !== (candidate.purpose ?? 'task'))
203
+ throw new Error('A skill cannot change learning purpose; use a distinct skill name.');
204
+ const baselineHash = baseline?.hash ?? 'none';
205
+ const evidence = evidenceFor(current, inputEvidence);
206
+ for (const batch of [evaluation.verification, evaluation.confirmation]) {
207
+ if (!batch)
208
+ continue;
209
+ if (batch.baselineRevision !== baselineHash || batch.candidateRevision !== hash)
210
+ throw new Error('Skill evaluation does not match the active baseline and candidate digests.');
211
+ if (batch.baseline.length > 128 ||
212
+ batch.candidate.length > 128 ||
213
+ batch.attributions.length > 128)
214
+ throw new Error('Resident skill evaluation is bounded to 64 tasks per round.');
215
+ // Recorded evidence must consistently identify success and complete measurements.
216
+ for (const trial of [...batch.baseline, ...batch.candidate]) {
217
+ if (trial.result.passed !== (trial.result.status === 'passed') ||
218
+ (trial.result.status === 'passed' && trial.result.failedGates?.length))
219
+ throw new Error('Inconsistent recorded skill evaluation outcome.');
220
+ }
221
+ }
222
+ const review = reviewHarnessCandidate(evaluation.verification, evaluation.confirmation, protection);
223
+ if (review.decision !== 'accept')
224
+ throw new Error(`Resident skill promotion ${review.decision}: ${review.reason}`);
225
+ const skill = {
226
+ ...candidate,
227
+ hash,
228
+ evidence,
229
+ verification: {
230
+ baselineHash,
231
+ candidateHash: hash,
232
+ evidenceDigest: createHash('sha256')
233
+ .update(JSON.stringify({ ...evaluation, protection }))
234
+ .digest('hex'),
235
+ verificationTasks: review.verification.tasks.length,
236
+ confirmationTasks: review.confirmation?.tasks.length ?? 0,
237
+ protection: {
238
+ verificationTasks: protection.verification.length,
239
+ confirmationTasks: protection.confirmation.length,
240
+ planDigest: createHash('sha256').update(JSON.stringify(protection)).digest('hex'),
241
+ },
242
+ },
243
+ };
244
+ const next = base(current, evidence);
245
+ return freezeResidentLearning({
246
+ ...next,
247
+ skills: [...next.skills.filter((s) => s.name !== candidate.name), skill],
248
+ });
249
+ }
250
+ /** Internal rollback appends a new learning version while preserving current profile values. */
251
+ export function restoreResidentSkill(current, historical, skillName, inputEvidence) {
252
+ name.parse(skillName);
253
+ if (!current?.skills.some((s) => s.name === skillName))
254
+ throw new Error('No active resident skill to roll back.');
255
+ const next = base(current, evidenceFor(current, inputEvidence));
256
+ const previous = historical
257
+ ? freezeResidentLearning(historical).skills.find((s) => s.name === skillName)
258
+ : undefined;
259
+ return freezeResidentLearning({
260
+ ...next,
261
+ skills: [...next.skills.filter((s) => s.name !== skillName), ...(previous ? [previous] : [])],
262
+ });
263
+ }
264
+ /** @experimental Bounded context data; never registers tools, loads files or executes a skill. */
265
+ export function projectResidentLearning(current, options) {
266
+ if (!Number.isSafeInteger(options.maxChars) || options.maxChars < 0 || options.maxChars > 64_000)
267
+ throw new TypeError('Resident learning context requires maxChars between 0 and 64000.');
268
+ const selected = z.array(name).max(16).parse(options.skillNames);
269
+ const purpose = z.enum(['task', 'exploration']).parse(options.purpose ?? 'task');
270
+ if (new Set(selected).size !== selected.length)
271
+ throw new Error('Duplicate selected skill names.');
272
+ const sources = z
273
+ .array(sourceSchema)
274
+ .max(128)
275
+ .parse(options.sources ?? []);
276
+ if (new Set(sources.map((source) => source.key)).size !== sources.length)
277
+ throw new Error('Duplicate observed learning source keys.');
278
+ const observed = new Map(sources.map((source) => [source.key, source.revision]));
279
+ if (!current)
280
+ return Object.freeze({
281
+ text: '',
282
+ revision: null,
283
+ includedSkills: Object.freeze([]),
284
+ omitted: selected.length,
285
+ withheldSkills: Object.freeze([]),
286
+ });
287
+ const state = freezeResidentLearning(current);
288
+ const pieces = [];
289
+ const includedSkills = [];
290
+ const withheldSkills = [];
291
+ let omitted = 0;
292
+ let length = 0;
293
+ const add = (value) => {
294
+ const part = JSON.stringify(value);
295
+ const size = part.length + (pieces.length ? 1 : 0);
296
+ if (length + size > options.maxChars) {
297
+ omitted++;
298
+ return false;
299
+ }
300
+ pieces.push(part);
301
+ length += size;
302
+ return true;
303
+ };
304
+ if (state.identity)
305
+ add({ kind: 'self-description', ...state.identity });
306
+ for (const preference of state.preferences)
307
+ add({ kind: 'preference', ...preference });
308
+ for (const skillName of selected) {
309
+ const skill = state.skills.find((s) => s.name === skillName);
310
+ if (!skill) {
311
+ omitted++;
312
+ continue;
313
+ }
314
+ if ((skill.purpose ?? 'task') !== purpose) {
315
+ omitted++;
316
+ withheldSkills.push(Object.freeze({
317
+ name: skill.name,
318
+ reason: 'different-purpose',
319
+ sourceKeys: Object.freeze([]),
320
+ }));
321
+ continue;
322
+ }
323
+ const mismatched = skill.sources?.filter((source) => observed.get(source.key) !== source.revision) ?? [];
324
+ if (mismatched.length) {
325
+ omitted++;
326
+ withheldSkills.push(Object.freeze({
327
+ name: skill.name,
328
+ reason: mismatched.some((source) => observed.has(source.key))
329
+ ? 'changed-source'
330
+ : 'unverified-source',
331
+ sourceKeys: Object.freeze(mismatched.map((source) => source.key)),
332
+ }));
333
+ continue;
334
+ }
335
+ if (add({
336
+ kind: 'evaluated-guidance',
337
+ name: skill.name,
338
+ description: skill.description,
339
+ body: skill.body,
340
+ hash: skill.hash,
341
+ evidence: skill.evidence,
342
+ }))
343
+ includedSkills.push(skill.name);
344
+ }
345
+ return Object.freeze({
346
+ text: pieces.join('\n'),
347
+ revision: state.revision,
348
+ includedSkills: Object.freeze(includedSkills),
349
+ omitted,
350
+ withheldSkills: Object.freeze(withheldSkills),
351
+ });
352
+ }
353
+ //# sourceMappingURL=learning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"learning.js","sourceRoot":"","sources":["../../../src/manager/resident/learning.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { type ResidentDecision, type ResidentExecutionStore, type ResidentState } from './store.js';
2
+ /** @experimental Developer-owned step; bind providers, tools and budgets in the host. */
3
+ export type ResidentStep = (state: ResidentState, signal: AbortSignal) => Promise<ResidentDecision>;
4
+ /** @experimental No model is invoked for an idle, terminal or unresolved resident. */
5
+ export type ResidentStepResult = {
6
+ status: 'settled';
7
+ state: ResidentState;
8
+ } | {
9
+ status: 'idle';
10
+ reason: 'not-due' | 'terminal' | 'unresolved' | 'contended';
11
+ state: ResidentState;
12
+ };
13
+ /** @experimental A failed/aborted callback leaves its durable claim unresolved. */
14
+ export declare function stepResident(store: ResidentExecutionStore, step: ResidentStep, signal: AbortSignal, now?: () => number): Promise<ResidentStepResult>;
15
+ /** @experimental Bounded local driver; not a daemon, process recovery service or notification transport. */
16
+ export interface ResidentLoopOptions {
17
+ readonly store: ResidentExecutionStore;
18
+ readonly step: ResidentStep;
19
+ readonly signal: AbortSignal;
20
+ /** Required finite admission cap for this invocation, independent of provider token limits. */
21
+ readonly maxSteps: number;
22
+ /** Maximum single idle wait, default 60 seconds. Longer waits return control to the host. */
23
+ readonly maxIdleMs?: number;
24
+ }
25
+ /**
26
+ * @experimental Continue a pursuit without a new user message. Null wake times
27
+ * and terminal states stop immediately; cancellation also interrupts idle waits.
28
+ * An abort cannot undo callback effects or forcibly stop a callback ignoring its signal.
29
+ */
30
+ export declare function runResident(options: ResidentLoopOptions): Promise<ResidentStepResult>;
31
+ //# sourceMappingURL=loop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../../src/manager/resident/loop.ts"],"names":[],"mappings":"AACA,OAAO,EAEN,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,MAAM,YAAY,CAAA;AAEnB,yFAAyF;AACzF,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAA;AAEnG,sFAAsF;AACtF,MAAM,MAAM,kBAAkB,GAC3B;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GAC3C;IACA,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,WAAW,CAAA;IAC3D,KAAK,EAAE,aAAa,CAAA;CACnB,CAAA;AAEJ,mFAAmF;AACnF,wBAAsB,YAAY,CACjC,KAAK,EAAE,sBAAsB,EAC7B,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,WAAW,EACnB,GAAG,GAAE,MAAM,MAAiB,GAC1B,OAAO,CAAC,kBAAkB,CAAC,CA2B7B;AAED,4GAA4G;AAC5G,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAA;IACtC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAA;IAC3B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,+FAA+F;IAC/F,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,6FAA6F;IAC7F,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA6B3F"}
@@ -0,0 +1,69 @@
1
+ import { setTimeout as sleep } from 'node:timers/promises';
2
+ import { ResidentConflictError, } from './store.js';
3
+ /** @experimental A failed/aborted callback leaves its durable claim unresolved. */
4
+ export async function stepResident(store, step, signal, now = Date.now) {
5
+ signal.throwIfAborted();
6
+ const state = await store.read();
7
+ signal.throwIfAborted();
8
+ if (!state)
9
+ throw new Error('Create the resident before running it.');
10
+ if (state.phase === 'running')
11
+ return { status: 'idle', reason: 'unresolved', state };
12
+ if (state.phase !== 'waiting')
13
+ return { status: 'idle', reason: 'terminal', state };
14
+ if (state.wakeAt === null || state.wakeAt > now())
15
+ return { status: 'idle', reason: 'not-due', state };
16
+ let claim;
17
+ try {
18
+ claim = await store.claim(state, now());
19
+ }
20
+ catch (error) {
21
+ if (!(error instanceof ResidentConflictError))
22
+ throw error;
23
+ return {
24
+ status: 'idle',
25
+ reason: 'contended',
26
+ state: (await store.read()) ?? state,
27
+ };
28
+ }
29
+ signal.throwIfAborted();
30
+ const decision = await step(claim, signal);
31
+ signal.throwIfAborted();
32
+ return {
33
+ status: 'settled',
34
+ state: await store.settle(claim, decision, now()),
35
+ };
36
+ }
37
+ /**
38
+ * @experimental Continue a pursuit without a new user message. Null wake times
39
+ * and terminal states stop immediately; cancellation also interrupts idle waits.
40
+ * An abort cannot undo callback effects or forcibly stop a callback ignoring its signal.
41
+ */
42
+ export async function runResident(options) {
43
+ const maxIdleMs = options.maxIdleMs ?? 60_000;
44
+ if (!Number.isSafeInteger(options.maxSteps) ||
45
+ options.maxSteps < 1 ||
46
+ !Number.isSafeInteger(maxIdleMs) ||
47
+ maxIdleMs < 0 ||
48
+ maxIdleMs > 2_147_483_647) {
49
+ throw new TypeError('Resident loop requires positive finite maxSteps and bounded nonnegative maxIdleMs.');
50
+ }
51
+ let admitted = 0;
52
+ while (true) {
53
+ const result = await stepResident(options.store, options.step, options.signal);
54
+ if (result.status === 'settled')
55
+ admitted++;
56
+ if (admitted >= options.maxSteps)
57
+ return result;
58
+ const { state } = result;
59
+ if (state.phase !== 'waiting' ||
60
+ state.wakeAt === null ||
61
+ (result.status === 'idle' && result.reason !== 'not-due'))
62
+ return result;
63
+ const delay = Math.max(0, state.wakeAt - Date.now());
64
+ if (delay > maxIdleMs)
65
+ return result;
66
+ await sleep(Math.max(1, delay), undefined, { signal: options.signal });
67
+ }
68
+ }
69
+ //# sourceMappingURL=loop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../../src/manager/resident/loop.ts"],"names":[],"mappings":"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"}