@caupulican/pi-adaptative 0.81.41 → 0.81.43

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 (1480) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/dist/bun/cli.d.ts.map +1 -1
  3. package/dist/bun/cli.js.map +1 -1
  4. package/dist/bun/register-bedrock.d.ts.map +1 -1
  5. package/dist/bun/restore-sandbox-env.d.ts.map +1 -1
  6. package/dist/bun/restore-sandbox-env.js.map +1 -1
  7. package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.d.ts.map +1 -1
  8. package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.js.map +1 -1
  9. package/dist/bundled-resources/extensions/tmux-agent-manager/index.d.ts.map +1 -1
  10. package/dist/bundled-resources/extensions/tmux-agent-manager/index.js +52 -49
  11. package/dist/bundled-resources/extensions/tmux-agent-manager/index.js.map +1 -1
  12. package/dist/bundled-resources/extensions/tmux-agent-manager/index.ts +62 -57
  13. package/dist/bundled-resources/prompts/skillify.md +1 -1
  14. package/dist/bundled-resources/runtimes/pi-shell-engine/commands/fs.py +16 -19
  15. package/dist/bundled-resources/runtimes/pi-shell-engine/commands/search.py +12 -26
  16. package/dist/bundled-resources/runtimes/pi-shell-engine/commands/strings.py +15 -121
  17. package/dist/bundled-resources/runtimes/pi-shell-engine/commands/text.py +57 -80
  18. package/dist/bundled-resources/runtimes/pi-shell-engine/context.py +3 -3
  19. package/dist/bundled-resources/runtimes/pi-shell-engine/errors.py +8 -0
  20. package/dist/bundled-resources/runtimes/pi-shell-engine/escapes.py +70 -0
  21. package/dist/bundled-resources/runtimes/pi-shell-engine/exec.py +135 -63
  22. package/dist/bundled-resources/runtimes/pi-shell-engine/expand.py +3 -0
  23. package/dist/bundled-resources/runtimes/pi-shell-engine/main.py +108 -22
  24. package/dist/bundled-resources/runtimes/pi-shell-engine/paths.py +10 -0
  25. package/dist/bundled-resources/runtimes/pi-shell-engine/proc.py +12 -4
  26. package/dist/bundled-resources/runtimes/pi-shell-engine/shell_args.py +22 -0
  27. package/dist/bundled-resources/runtimes/pi-shell-engine/state.py +10 -2
  28. package/dist/bundled-resources/runtimes/pi-shell-engine/tokens.py +131 -259
  29. package/dist/bundled-resources/skills/authorized-web-security-audit/SKILL.md +187 -0
  30. package/dist/bundled-resources/skills/authorized-web-security-audit/references/assessment-contract.md +92 -0
  31. package/dist/bundled-resources/skills/deduplicate-by-evidence/SKILL.md +134 -0
  32. package/dist/bundled-resources/skills/evidence-gated-tdd/SKILL.md +93 -0
  33. package/dist/bundled-resources/skills/evidence-gated-tdd/references/evidence-model.md +27 -0
  34. package/dist/bundled-resources/skills/evidence-gated-tdd/references/security-scanners.md +24 -0
  35. package/dist/bundled-resources/skills/harness-self-adaptation/SKILL.md +4 -2
  36. package/dist/bundled-resources/skills/secure-agent-tool-surfaces/SKILL.md +217 -0
  37. package/dist/bundled-resources/skills/secure-agent-tool-surfaces/references/defensive-exploit-catalogue.md +175 -0
  38. package/dist/bundled-resources/skills/secure-agent-tool-surfaces/references/tool-boundary-checklist.md +87 -0
  39. package/dist/bundled-resources/skills/skill-architect/SKILL.md +2 -2
  40. package/dist/bundled-resources/skills/skill-creator/SKILL.md +188 -0
  41. package/dist/bundled-resources/skills/skill-creator/references/pi-skill-contract.md +73 -0
  42. package/dist/bundled-resources/skills/skill-creator/scripts/init-skill.mjs +142 -0
  43. package/dist/bundled-resources/skills/skill-creator/scripts/validate-skill.mjs +122 -0
  44. package/dist/cli/args.d.ts.map +1 -1
  45. package/dist/cli/args.js.map +1 -1
  46. package/dist/cli/config-selector.d.ts.map +1 -1
  47. package/dist/cli/config-selector.js.map +1 -1
  48. package/dist/cli/file-processor.d.ts.map +1 -1
  49. package/dist/cli/file-processor.js +8 -8
  50. package/dist/cli/file-processor.js.map +1 -1
  51. package/dist/cli/initial-message.d.ts +1 -1
  52. package/dist/cli/initial-message.d.ts.map +1 -1
  53. package/dist/cli/initial-message.js.map +1 -1
  54. package/dist/cli/list-models.d.ts.map +1 -1
  55. package/dist/cli/list-models.js.map +1 -1
  56. package/dist/cli/piped-stdin.d.ts +4 -0
  57. package/dist/cli/piped-stdin.d.ts.map +1 -0
  58. package/dist/cli/piped-stdin.js +13 -0
  59. package/dist/cli/piped-stdin.js.map +1 -0
  60. package/dist/cli/session-picker.d.ts.map +1 -1
  61. package/dist/cli/session-picker.js.map +1 -1
  62. package/dist/cli.d.ts.map +1 -1
  63. package/dist/cli.js.map +1 -1
  64. package/dist/config.d.ts.map +1 -1
  65. package/dist/config.js +9 -14
  66. package/dist/config.js.map +1 -1
  67. package/dist/core/agent-directory-layout.d.ts.map +1 -1
  68. package/dist/core/agent-directory-layout.js.map +1 -1
  69. package/dist/core/agent-paths.d.ts +32 -0
  70. package/dist/core/agent-paths.d.ts.map +1 -1
  71. package/dist/core/agent-paths.js +65 -0
  72. package/dist/core/agent-paths.js.map +1 -1
  73. package/dist/core/agent-session-contracts.d.ts +24 -10
  74. package/dist/core/agent-session-contracts.d.ts.map +1 -1
  75. package/dist/core/agent-session-contracts.js +1 -12
  76. package/dist/core/agent-session-contracts.js.map +1 -1
  77. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  78. package/dist/core/agent-session-runtime.js +10 -25
  79. package/dist/core/agent-session-runtime.js.map +1 -1
  80. package/dist/core/agent-session-services.d.ts.map +1 -1
  81. package/dist/core/agent-session-services.js.map +1 -1
  82. package/dist/core/agent-session.d.ts +24 -1
  83. package/dist/core/agent-session.d.ts.map +1 -1
  84. package/dist/core/agent-session.js +214 -246
  85. package/dist/core/agent-session.js.map +1 -1
  86. package/dist/core/auth-guidance.d.ts.map +1 -1
  87. package/dist/core/auth-guidance.js.map +1 -1
  88. package/dist/core/auth-storage.d.ts +4 -1
  89. package/dist/core/auth-storage.d.ts.map +1 -1
  90. package/dist/core/auth-storage.js +13 -39
  91. package/dist/core/auth-storage.js.map +1 -1
  92. package/dist/core/autonomy/approval-gate.d.ts.map +1 -1
  93. package/dist/core/autonomy/approval-gate.js.map +1 -1
  94. package/dist/core/autonomy/bounded-completion.d.ts.map +1 -1
  95. package/dist/core/autonomy/bounded-completion.js.map +1 -1
  96. package/dist/core/autonomy/contracts.d.ts +2 -0
  97. package/dist/core/autonomy/contracts.d.ts.map +1 -1
  98. package/dist/core/autonomy/contracts.js.map +1 -1
  99. package/dist/core/autonomy/envelope-enforcement.d.ts.map +1 -1
  100. package/dist/core/autonomy/envelope-enforcement.js +4 -9
  101. package/dist/core/autonomy/envelope-enforcement.js.map +1 -1
  102. package/dist/core/autonomy/evidence-finding-projection.d.ts +11 -0
  103. package/dist/core/autonomy/evidence-finding-projection.d.ts.map +1 -0
  104. package/dist/core/autonomy/evidence-finding-projection.js +37 -0
  105. package/dist/core/autonomy/evidence-finding-projection.js.map +1 -0
  106. package/dist/core/autonomy/foreground-envelope.d.ts.map +1 -1
  107. package/dist/core/autonomy/foreground-envelope.js.map +1 -1
  108. package/dist/core/autonomy/gates.d.ts.map +1 -1
  109. package/dist/core/autonomy/gates.js.map +1 -1
  110. package/dist/core/autonomy/lane-private-paths.d.ts.map +1 -1
  111. package/dist/core/autonomy/lane-private-paths.js.map +1 -1
  112. package/dist/core/autonomy/lane-tool-surface.d.ts +3 -1
  113. package/dist/core/autonomy/lane-tool-surface.d.ts.map +1 -1
  114. package/dist/core/autonomy/lane-tool-surface.js +17 -4
  115. package/dist/core/autonomy/lane-tool-surface.js.map +1 -1
  116. package/dist/core/autonomy/lane-tracker.d.ts.map +1 -1
  117. package/dist/core/autonomy/lane-tracker.js +2 -3
  118. package/dist/core/autonomy/lane-tracker.js.map +1 -1
  119. package/dist/core/autonomy/path-scope.d.ts +14 -0
  120. package/dist/core/autonomy/path-scope.d.ts.map +1 -1
  121. package/dist/core/autonomy/path-scope.js +37 -6
  122. package/dist/core/autonomy/path-scope.js.map +1 -1
  123. package/dist/core/autonomy/risk-assessment.d.ts.map +1 -1
  124. package/dist/core/autonomy/session-lane-record.d.ts.map +1 -1
  125. package/dist/core/autonomy/session-lane-record.js.map +1 -1
  126. package/dist/core/autonomy/status.d.ts.map +1 -1
  127. package/dist/core/autonomy/status.js.map +1 -1
  128. package/dist/core/autonomy/subagent-prompt.d.ts.map +1 -1
  129. package/dist/core/autonomy/subagent-prompt.js.map +1 -1
  130. package/dist/core/autonomy/telemetry-events.d.ts.map +1 -1
  131. package/dist/core/autonomy/telemetry-events.js.map +1 -1
  132. package/dist/core/autonomy-telemetry.d.ts.map +1 -1
  133. package/dist/core/autonomy-telemetry.js +2 -4
  134. package/dist/core/autonomy-telemetry.js.map +1 -1
  135. package/dist/core/background-lane-controller.d.ts +27 -1
  136. package/dist/core/background-lane-controller.d.ts.map +1 -1
  137. package/dist/core/background-lane-controller.js +34 -16
  138. package/dist/core/background-lane-controller.js.map +1 -1
  139. package/dist/core/background-tool-task-controller.d.ts +88 -0
  140. package/dist/core/background-tool-task-controller.d.ts.map +1 -0
  141. package/dist/core/background-tool-task-controller.js +470 -0
  142. package/dist/core/background-tool-task-controller.js.map +1 -0
  143. package/dist/core/bash-execution-controller.d.ts +1 -0
  144. package/dist/core/bash-execution-controller.d.ts.map +1 -1
  145. package/dist/core/bash-execution-controller.js +5 -4
  146. package/dist/core/bash-execution-controller.js.map +1 -1
  147. package/dist/core/bash-executor.d.ts.map +1 -1
  148. package/dist/core/bash-executor.js.map +1 -1
  149. package/dist/core/bedrock-sso-login.d.ts.map +1 -1
  150. package/dist/core/bedrock-sso-login.js.map +1 -1
  151. package/dist/core/billing-failover-controller.d.ts.map +1 -1
  152. package/dist/core/billing-failover-controller.js +3 -3
  153. package/dist/core/billing-failover-controller.js.map +1 -1
  154. package/dist/core/billing-failover.d.ts.map +1 -1
  155. package/dist/core/billing-failover.js.map +1 -1
  156. package/dist/core/capability-contract.d.ts.map +1 -1
  157. package/dist/core/catalog-manager.d.ts.map +1 -1
  158. package/dist/core/catalog-manager.js +0 -0
  159. package/dist/core/catalog-manager.js.map +1 -1
  160. package/dist/core/compaction-controller.d.ts +2 -0
  161. package/dist/core/compaction-controller.d.ts.map +1 -1
  162. package/dist/core/compaction-controller.js +21 -8
  163. package/dist/core/compaction-controller.js.map +1 -1
  164. package/dist/core/compaction-support.d.ts +8 -0
  165. package/dist/core/compaction-support.d.ts.map +1 -1
  166. package/dist/core/compaction-support.js +0 -2
  167. package/dist/core/compaction-support.js.map +1 -1
  168. package/dist/core/context/artifact-retrieval.d.ts.map +1 -1
  169. package/dist/core/context/artifact-retrieval.js.map +1 -1
  170. package/dist/core/context/brain-curator.d.ts.map +1 -1
  171. package/dist/core/context/brain-curator.js +14 -33
  172. package/dist/core/context/brain-curator.js.map +1 -1
  173. package/dist/core/context/context-artifacts.d.ts.map +1 -1
  174. package/dist/core/context/context-artifacts.js +16 -24
  175. package/dist/core/context/context-artifacts.js.map +1 -1
  176. package/dist/core/context/context-audit.d.ts.map +1 -1
  177. package/dist/core/context/context-audit.js +3 -17
  178. package/dist/core/context/context-audit.js.map +1 -1
  179. package/dist/core/context/context-composition.d.ts.map +1 -1
  180. package/dist/core/context/context-composition.js.map +1 -1
  181. package/dist/core/context/context-item.d.ts.map +1 -1
  182. package/dist/core/context/context-item.js.map +1 -1
  183. package/dist/core/context/context-prompt-enforcement.d.ts.map +1 -1
  184. package/dist/core/context/context-prompt-enforcement.js +3 -16
  185. package/dist/core/context/context-prompt-enforcement.js.map +1 -1
  186. package/dist/core/context/context-prompt-policy.d.ts.map +1 -1
  187. package/dist/core/context/context-prompt-policy.js.map +1 -1
  188. package/dist/core/context/context-retention.d.ts.map +1 -1
  189. package/dist/core/context/context-retention.js.map +1 -1
  190. package/dist/core/context/context-store-retention.d.ts.map +1 -1
  191. package/dist/core/context/context-store-retention.js.map +1 -1
  192. package/dist/core/context/context-store.d.ts.map +1 -1
  193. package/dist/core/context/context-store.js.map +1 -1
  194. package/dist/core/context/context-tool-result.d.ts +4 -0
  195. package/dist/core/context/context-tool-result.d.ts.map +1 -0
  196. package/dist/core/context/context-tool-result.js +15 -0
  197. package/dist/core/context/context-tool-result.js.map +1 -0
  198. package/dist/core/context/current-work-memory.d.ts.map +1 -1
  199. package/dist/core/context/current-work-memory.js.map +1 -1
  200. package/dist/core/context/file-store-memory-provider.d.ts.map +1 -1
  201. package/dist/core/context/file-store-memory-provider.js +7 -28
  202. package/dist/core/context/file-store-memory-provider.js.map +1 -1
  203. package/dist/core/context/local-memory-search.d.ts +11 -0
  204. package/dist/core/context/local-memory-search.d.ts.map +1 -0
  205. package/dist/core/context/local-memory-search.js +37 -0
  206. package/dist/core/context/local-memory-search.js.map +1 -0
  207. package/dist/core/context/long-term-memory-trigger.d.ts.map +1 -1
  208. package/dist/core/context/long-term-memory-trigger.js.map +1 -1
  209. package/dist/core/context/memory-diagnostics.d.ts.map +1 -1
  210. package/dist/core/context/memory-diagnostics.js.map +1 -1
  211. package/dist/core/context/memory-index-store.d.ts.map +1 -1
  212. package/dist/core/context/memory-index-store.js.map +1 -1
  213. package/dist/core/context/memory-prompt-block.d.ts.map +1 -1
  214. package/dist/core/context/memory-prompt-block.js.map +1 -1
  215. package/dist/core/context/memory-prompt-budget.d.ts.map +1 -1
  216. package/dist/core/context/memory-prompt-budget.js.map +1 -1
  217. package/dist/core/context/memory-provider-contract.d.ts.map +1 -1
  218. package/dist/core/context/memory-provider-contract.js.map +1 -1
  219. package/dist/core/context/memory-retrieval.d.ts.map +1 -1
  220. package/dist/core/context/memory-retrieval.js.map +1 -1
  221. package/dist/core/context/memory-tier-composer.d.ts.map +1 -1
  222. package/dist/core/context/memory-tier-composer.js.map +1 -1
  223. package/dist/core/context/message-text.d.ts +7 -0
  224. package/dist/core/context/message-text.d.ts.map +1 -0
  225. package/dist/core/context/message-text.js +68 -0
  226. package/dist/core/context/message-text.js.map +1 -0
  227. package/dist/core/context/okf-memory-provider.d.ts.map +1 -1
  228. package/dist/core/context/okf-memory-provider.js +4 -30
  229. package/dist/core/context/okf-memory-provider.js.map +1 -1
  230. package/dist/core/context/okf-memory.d.ts.map +1 -1
  231. package/dist/core/context/okf-memory.js.map +1 -1
  232. package/dist/core/context/policy-engine.d.ts.map +1 -1
  233. package/dist/core/context/policy-engine.js.map +1 -1
  234. package/dist/core/context/policy-types.d.ts.map +1 -1
  235. package/dist/core/context/sqlite-runtime-index.d.ts.map +1 -1
  236. package/dist/core/context/sqlite-runtime-index.js.map +1 -1
  237. package/dist/core/context/storage-authority.d.ts.map +1 -1
  238. package/dist/core/context/tool-output-packer.d.ts.map +1 -1
  239. package/dist/core/context/tool-output-packer.js.map +1 -1
  240. package/dist/core/context-gc.d.ts.map +1 -1
  241. package/dist/core/context-gc.js +14 -21
  242. package/dist/core/context-gc.js.map +1 -1
  243. package/dist/core/context-pipeline.d.ts +1 -3
  244. package/dist/core/context-pipeline.d.ts.map +1 -1
  245. package/dist/core/context-pipeline.js +64 -145
  246. package/dist/core/context-pipeline.js.map +1 -1
  247. package/dist/core/cost/cost-summary.d.ts.map +1 -1
  248. package/dist/core/cost/cost-summary.js.map +1 -1
  249. package/dist/core/cost/daily-usage.d.ts.map +1 -1
  250. package/dist/core/cost/daily-usage.js.map +1 -1
  251. package/dist/core/cost/session-usage.d.ts.map +1 -1
  252. package/dist/core/cost/session-usage.js.map +1 -1
  253. package/dist/core/cost-guard.d.ts.map +1 -1
  254. package/dist/core/cost-guard.js.map +1 -1
  255. package/dist/core/default-tool-surface.d.ts.map +1 -1
  256. package/dist/core/default-tool-surface.js +1 -0
  257. package/dist/core/default-tool-surface.js.map +1 -1
  258. package/dist/core/defaults.d.ts.map +1 -1
  259. package/dist/core/delegation/managed-lane-controller.d.ts +11 -1
  260. package/dist/core/delegation/managed-lane-controller.d.ts.map +1 -1
  261. package/dist/core/delegation/managed-lane-controller.js +85 -46
  262. package/dist/core/delegation/managed-lane-controller.js.map +1 -1
  263. package/dist/core/delegation/session-worker-claim.d.ts.map +1 -1
  264. package/dist/core/delegation/session-worker-claim.js +4 -3
  265. package/dist/core/delegation/session-worker-claim.js.map +1 -1
  266. package/dist/core/delegation/worker-action-journal.d.ts +73 -0
  267. package/dist/core/delegation/worker-action-journal.d.ts.map +1 -0
  268. package/dist/core/delegation/worker-action-journal.js +293 -0
  269. package/dist/core/delegation/worker-action-journal.js.map +1 -0
  270. package/dist/core/delegation/worker-actions.d.ts +36 -1
  271. package/dist/core/delegation/worker-actions.d.ts.map +1 -1
  272. package/dist/core/delegation/worker-actions.js +171 -46
  273. package/dist/core/delegation/worker-actions.js.map +1 -1
  274. package/dist/core/delegation/worker-agent-control-coordinator.d.ts +76 -0
  275. package/dist/core/delegation/worker-agent-control-coordinator.d.ts.map +1 -0
  276. package/dist/core/delegation/worker-agent-control-coordinator.js +216 -0
  277. package/dist/core/delegation/worker-agent-control-coordinator.js.map +1 -0
  278. package/dist/core/delegation/worker-agent-control.d.ts +66 -0
  279. package/dist/core/delegation/worker-agent-control.d.ts.map +1 -0
  280. package/dist/core/delegation/worker-agent-control.js +160 -0
  281. package/dist/core/delegation/worker-agent-control.js.map +1 -0
  282. package/dist/core/delegation/worker-attempt-executor.d.ts +80 -0
  283. package/dist/core/delegation/worker-attempt-executor.d.ts.map +1 -0
  284. package/dist/core/delegation/worker-attempt-executor.js +343 -0
  285. package/dist/core/delegation/worker-attempt-executor.js.map +1 -0
  286. package/dist/core/delegation/worker-claim.d.ts +30 -0
  287. package/dist/core/delegation/worker-claim.d.ts.map +1 -1
  288. package/dist/core/delegation/worker-claim.js +205 -53
  289. package/dist/core/delegation/worker-claim.js.map +1 -1
  290. package/dist/core/delegation/worker-conversation-store.d.ts +116 -0
  291. package/dist/core/delegation/worker-conversation-store.d.ts.map +1 -0
  292. package/dist/core/delegation/worker-conversation-store.js +440 -0
  293. package/dist/core/delegation/worker-conversation-store.js.map +1 -0
  294. package/dist/core/delegation/worker-delegation-controller.d.ts +21 -5
  295. package/dist/core/delegation/worker-delegation-controller.d.ts.map +1 -1
  296. package/dist/core/delegation/worker-delegation-controller.js +386 -260
  297. package/dist/core/delegation/worker-delegation-controller.js.map +1 -1
  298. package/dist/core/delegation/worker-delegation-request.d.ts +14 -0
  299. package/dist/core/delegation/worker-delegation-request.d.ts.map +1 -1
  300. package/dist/core/delegation/worker-delegation-request.js.map +1 -1
  301. package/dist/core/delegation/worker-dispatch-scheduler.d.ts +4 -2
  302. package/dist/core/delegation/worker-dispatch-scheduler.d.ts.map +1 -1
  303. package/dist/core/delegation/worker-dispatch-scheduler.js +20 -11
  304. package/dist/core/delegation/worker-dispatch-scheduler.js.map +1 -1
  305. package/dist/core/delegation/worker-execution-policy.d.ts +2 -1
  306. package/dist/core/delegation/worker-execution-policy.d.ts.map +1 -1
  307. package/dist/core/delegation/worker-execution-policy.js +5 -7
  308. package/dist/core/delegation/worker-execution-policy.js.map +1 -1
  309. package/dist/core/delegation/worker-lane-projection.d.ts.map +1 -1
  310. package/dist/core/delegation/worker-lane-projection.js.map +1 -1
  311. package/dist/core/delegation/worker-lifecycle.d.ts +44 -1
  312. package/dist/core/delegation/worker-lifecycle.d.ts.map +1 -1
  313. package/dist/core/delegation/worker-lifecycle.js +119 -2
  314. package/dist/core/delegation/worker-lifecycle.js.map +1 -1
  315. package/dist/core/delegation/worker-notification-coordinator.d.ts.map +1 -1
  316. package/dist/core/delegation/worker-notification-coordinator.js +4 -5
  317. package/dist/core/delegation/worker-notification-coordinator.js.map +1 -1
  318. package/dist/core/delegation/worker-process-owner.d.ts +18 -0
  319. package/dist/core/delegation/worker-process-owner.d.ts.map +1 -0
  320. package/dist/core/delegation/worker-process-owner.js +54 -0
  321. package/dist/core/delegation/worker-process-owner.js.map +1 -0
  322. package/dist/core/delegation/worker-profile-resolver.d.ts +5 -1
  323. package/dist/core/delegation/worker-profile-resolver.d.ts.map +1 -1
  324. package/dist/core/delegation/worker-profile-resolver.js +9 -2
  325. package/dist/core/delegation/worker-profile-resolver.js.map +1 -1
  326. package/dist/core/delegation/worker-recovery-coordinator.d.ts +54 -0
  327. package/dist/core/delegation/worker-recovery-coordinator.d.ts.map +1 -0
  328. package/dist/core/delegation/worker-recovery-coordinator.js +180 -0
  329. package/dist/core/delegation/worker-recovery-coordinator.js.map +1 -0
  330. package/dist/core/delegation/worker-resource-catalog.d.ts +32 -0
  331. package/dist/core/delegation/worker-resource-catalog.d.ts.map +1 -0
  332. package/dist/core/delegation/worker-resource-catalog.js +116 -0
  333. package/dist/core/delegation/worker-resource-catalog.js.map +1 -0
  334. package/dist/core/delegation/worker-resource-materializer.d.ts +47 -0
  335. package/dist/core/delegation/worker-resource-materializer.d.ts.map +1 -0
  336. package/dist/core/delegation/worker-resource-materializer.js +134 -0
  337. package/dist/core/delegation/worker-resource-materializer.js.map +1 -0
  338. package/dist/core/delegation/worker-runner.d.ts +5 -5
  339. package/dist/core/delegation/worker-runner.d.ts.map +1 -1
  340. package/dist/core/delegation/worker-runner.js +193 -70
  341. package/dist/core/delegation/worker-runner.js.map +1 -1
  342. package/dist/core/delegation/worker-task-label.d.ts.map +1 -1
  343. package/dist/core/delegation/worker-task-label.js.map +1 -1
  344. package/dist/core/delegation/worker-terminal-finalizer.d.ts +23 -0
  345. package/dist/core/delegation/worker-terminal-finalizer.d.ts.map +1 -0
  346. package/dist/core/delegation/worker-terminal-finalizer.js +12 -0
  347. package/dist/core/delegation/worker-terminal-finalizer.js.map +1 -0
  348. package/dist/core/delegation/worker-write-reservation-coordinator.d.ts +38 -0
  349. package/dist/core/delegation/worker-write-reservation-coordinator.d.ts.map +1 -0
  350. package/dist/core/delegation/worker-write-reservation-coordinator.js +104 -0
  351. package/dist/core/delegation/worker-write-reservation-coordinator.js.map +1 -0
  352. package/dist/core/delegation/worker-write-reservation.d.ts +90 -0
  353. package/dist/core/delegation/worker-write-reservation.d.ts.map +1 -0
  354. package/dist/core/delegation/worker-write-reservation.js +346 -0
  355. package/dist/core/delegation/worker-write-reservation.js.map +1 -0
  356. package/dist/core/diagnostics.d.ts.map +1 -1
  357. package/dist/core/doctor.d.ts.map +1 -1
  358. package/dist/core/doctor.js.map +1 -1
  359. package/dist/core/event-bus.d.ts.map +1 -1
  360. package/dist/core/event-bus.js.map +1 -1
  361. package/dist/core/exec.d.ts.map +1 -1
  362. package/dist/core/exec.js +26 -7
  363. package/dist/core/exec.js.map +1 -1
  364. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
  365. package/dist/core/export-html/ansi-to-html.js +21 -74
  366. package/dist/core/export-html/ansi-to-html.js.map +1 -1
  367. package/dist/core/export-html/index.d.ts.map +1 -1
  368. package/dist/core/export-html/index.js +4 -0
  369. package/dist/core/export-html/index.js.map +1 -1
  370. package/dist/core/export-html/session-tree-foundations.d.mts +67 -0
  371. package/dist/core/export-html/session-tree-foundations.mjs +313 -0
  372. package/dist/core/export-html/template.css +14 -41
  373. package/dist/core/export-html/template.html +3 -1
  374. package/dist/core/export-html/template.js +26 -435
  375. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  376. package/dist/core/export-html/tool-renderer.js.map +1 -1
  377. package/dist/core/extension-import-authority.d.ts.map +1 -1
  378. package/dist/core/extension-import-authority.js.map +1 -1
  379. package/dist/core/extension-metadata.d.ts.map +1 -1
  380. package/dist/core/extension-metadata.js.map +1 -1
  381. package/dist/core/extensions/builtin.d.ts +17 -0
  382. package/dist/core/extensions/builtin.d.ts.map +1 -1
  383. package/dist/core/extensions/builtin.js +18 -54
  384. package/dist/core/extensions/builtin.js.map +1 -1
  385. package/dist/core/extensions/entry-resolution.d.ts +3 -0
  386. package/dist/core/extensions/entry-resolution.d.ts.map +1 -0
  387. package/dist/core/extensions/entry-resolution.js +17 -0
  388. package/dist/core/extensions/entry-resolution.js.map +1 -0
  389. package/dist/core/extensions/index.d.ts.map +1 -1
  390. package/dist/core/extensions/loader.d.ts.map +1 -1
  391. package/dist/core/extensions/loader.js +76 -21
  392. package/dist/core/extensions/loader.js.map +1 -1
  393. package/dist/core/extensions/runner.d.ts +2 -0
  394. package/dist/core/extensions/runner.d.ts.map +1 -1
  395. package/dist/core/extensions/runner.js +41 -112
  396. package/dist/core/extensions/runner.js.map +1 -1
  397. package/dist/core/extensions/stale-context.d.ts.map +1 -1
  398. package/dist/core/extensions/storage.d.ts.map +1 -1
  399. package/dist/core/extensions/storage.js.map +1 -1
  400. package/dist/core/extensions/types.d.ts.map +1 -1
  401. package/dist/core/extensions/types.js.map +1 -1
  402. package/dist/core/extensions/wrapper.d.ts.map +1 -1
  403. package/dist/core/extensions/wrapper.js.map +1 -1
  404. package/dist/core/failure-corpus.d.ts.map +1 -1
  405. package/dist/core/failure-corpus.js +2 -5
  406. package/dist/core/failure-corpus.js.map +1 -1
  407. package/dist/core/footer-data-provider.d.ts.map +1 -1
  408. package/dist/core/footer-data-provider.js +27 -33
  409. package/dist/core/footer-data-provider.js.map +1 -1
  410. package/dist/core/foreground-recovery-controller.d.ts.map +1 -1
  411. package/dist/core/foreground-recovery-controller.js +0 -4
  412. package/dist/core/foreground-recovery-controller.js.map +1 -1
  413. package/dist/core/gateways/channel-provider.d.ts.map +1 -1
  414. package/dist/core/gateways/channel-provider.js +7 -5
  415. package/dist/core/gateways/channel-provider.js.map +1 -1
  416. package/dist/core/goal-loop-controller.d.ts.map +1 -1
  417. package/dist/core/goal-loop-controller.js +0 -1
  418. package/dist/core/goal-loop-controller.js.map +1 -1
  419. package/dist/core/goals/compact-goal-context.d.ts.map +1 -1
  420. package/dist/core/goals/compact-goal-context.js +2 -4
  421. package/dist/core/goals/compact-goal-context.js.map +1 -1
  422. package/dist/core/goals/goal-acceptance.d.ts.map +1 -1
  423. package/dist/core/goals/goal-acceptance.js.map +1 -1
  424. package/dist/core/goals/goal-auto-continue-controller.d.ts.map +1 -1
  425. package/dist/core/goals/goal-auto-continue-controller.js +1 -3
  426. package/dist/core/goals/goal-auto-continue-controller.js.map +1 -1
  427. package/dist/core/goals/goal-continuation-controller.d.ts.map +1 -1
  428. package/dist/core/goals/goal-continuation-controller.js.map +1 -1
  429. package/dist/core/goals/goal-continuation-defaults.d.ts.map +1 -1
  430. package/dist/core/goals/goal-continuation-prompt.d.ts.map +1 -1
  431. package/dist/core/goals/goal-continuation-prompt.js.map +1 -1
  432. package/dist/core/goals/goal-lifecycle.d.ts.map +1 -1
  433. package/dist/core/goals/goal-lifecycle.js.map +1 -1
  434. package/dist/core/goals/goal-record.d.ts.map +1 -1
  435. package/dist/core/goals/goal-record.js.map +1 -1
  436. package/dist/core/goals/goal-runtime-snapshot.d.ts.map +1 -1
  437. package/dist/core/goals/goal-runtime-snapshot.js.map +1 -1
  438. package/dist/core/goals/goal-session-controller.d.ts +15 -0
  439. package/dist/core/goals/goal-session-controller.d.ts.map +1 -1
  440. package/dist/core/goals/goal-session-controller.js +27 -3
  441. package/dist/core/goals/goal-session-controller.js.map +1 -1
  442. package/dist/core/goals/goal-state.d.ts.map +1 -1
  443. package/dist/core/goals/goal-state.js +35 -51
  444. package/dist/core/goals/goal-state.js.map +1 -1
  445. package/dist/core/goals/goal-tool-core.d.ts.map +1 -1
  446. package/dist/core/goals/goal-tool-core.js.map +1 -1
  447. package/dist/core/goals/natural-language-goal.d.ts +9 -0
  448. package/dist/core/goals/natural-language-goal.d.ts.map +1 -0
  449. package/dist/core/goals/natural-language-goal.js +23 -0
  450. package/dist/core/goals/natural-language-goal.js.map +1 -0
  451. package/dist/core/goals/session-goal-state.d.ts.map +1 -1
  452. package/dist/core/goals/session-goal-state.js.map +1 -1
  453. package/dist/core/http-dispatcher.d.ts.map +1 -1
  454. package/dist/core/http-dispatcher.js.map +1 -1
  455. package/dist/core/human-input-controller.d.ts.map +1 -1
  456. package/dist/core/human-input-controller.js +2 -3
  457. package/dist/core/human-input-controller.js.map +1 -1
  458. package/dist/core/human-input.d.ts.map +1 -1
  459. package/dist/core/human-input.js.map +1 -1
  460. package/dist/core/improvement-loop.d.ts.map +1 -1
  461. package/dist/core/improvement-loop.js +11 -11
  462. package/dist/core/improvement-loop.js.map +1 -1
  463. package/dist/core/index.d.ts.map +1 -1
  464. package/dist/core/install-telemetry.d.ts.map +1 -1
  465. package/dist/core/install-telemetry.js.map +1 -1
  466. package/dist/core/isolated-text-completion.d.ts +17 -0
  467. package/dist/core/isolated-text-completion.d.ts.map +1 -0
  468. package/dist/core/isolated-text-completion.js +15 -0
  469. package/dist/core/isolated-text-completion.js.map +1 -0
  470. package/dist/core/keybindings.d.ts +47 -2
  471. package/dist/core/keybindings.d.ts.map +1 -1
  472. package/dist/core/keybindings.js +12 -1
  473. package/dist/core/keybindings.js.map +1 -1
  474. package/dist/core/learning/learning-audit.d.ts.map +1 -1
  475. package/dist/core/learning/learning-audit.js.map +1 -1
  476. package/dist/core/learning/learning-gate.d.ts.map +1 -1
  477. package/dist/core/learning/learning-gate.js.map +1 -1
  478. package/dist/core/learning/observation-store.d.ts.map +1 -1
  479. package/dist/core/learning/observation-store.js +0 -2
  480. package/dist/core/learning/observation-store.js.map +1 -1
  481. package/dist/core/learning/reflection-engine.d.ts +1 -1
  482. package/dist/core/learning/reflection-engine.d.ts.map +1 -1
  483. package/dist/core/learning/reflection-engine.js +3 -0
  484. package/dist/core/learning/reflection-engine.js.map +1 -1
  485. package/dist/core/learning/reflection-turn-analysis.d.ts +20 -0
  486. package/dist/core/learning/reflection-turn-analysis.d.ts.map +1 -0
  487. package/dist/core/learning/reflection-turn-analysis.js +136 -0
  488. package/dist/core/learning/reflection-turn-analysis.js.map +1 -0
  489. package/dist/core/learning/session-learning-decision.d.ts.map +1 -1
  490. package/dist/core/learning/session-learning-decision.js.map +1 -1
  491. package/dist/core/learning/skill-curator.d.ts.map +1 -1
  492. package/dist/core/learning/skill-curator.js +0 -3
  493. package/dist/core/learning/skill-curator.js.map +1 -1
  494. package/dist/core/local-runtime-controller.d.ts +39 -0
  495. package/dist/core/local-runtime-controller.d.ts.map +1 -1
  496. package/dist/core/local-runtime-controller.js +41 -62
  497. package/dist/core/local-runtime-controller.js.map +1 -1
  498. package/dist/core/memory/effectiveness-tracker.d.ts.map +1 -1
  499. package/dist/core/memory/effectiveness-tracker.js +4 -2
  500. package/dist/core/memory/effectiveness-tracker.js.map +1 -1
  501. package/dist/core/memory/memory-manager.d.ts.map +1 -1
  502. package/dist/core/memory/memory-manager.js +7 -7
  503. package/dist/core/memory/memory-manager.js.map +1 -1
  504. package/dist/core/memory/memory-provider.d.ts.map +1 -1
  505. package/dist/core/memory/providers/file-store.d.ts +7 -0
  506. package/dist/core/memory/providers/file-store.d.ts.map +1 -1
  507. package/dist/core/memory/providers/file-store.js +48 -13
  508. package/dist/core/memory/providers/file-store.js.map +1 -1
  509. package/dist/core/memory/providers/transcript-recall-worker-protocol.d.ts +47 -0
  510. package/dist/core/memory/providers/transcript-recall-worker-protocol.d.ts.map +1 -0
  511. package/dist/core/memory/providers/transcript-recall-worker-protocol.js +50 -0
  512. package/dist/core/memory/providers/transcript-recall-worker-protocol.js.map +1 -0
  513. package/dist/core/memory/providers/transcript-recall-worker.d.ts +2 -0
  514. package/dist/core/memory/providers/transcript-recall-worker.d.ts.map +1 -0
  515. package/dist/core/memory/providers/transcript-recall-worker.js +143 -0
  516. package/dist/core/memory/providers/transcript-recall-worker.js.map +1 -0
  517. package/dist/core/memory/providers/transcript-recall.d.ts +24 -13
  518. package/dist/core/memory/providers/transcript-recall.d.ts.map +1 -1
  519. package/dist/core/memory/providers/transcript-recall.js +143 -141
  520. package/dist/core/memory/providers/transcript-recall.js.map +1 -1
  521. package/dist/core/memory/providers/user-memory-archive.d.ts +39 -0
  522. package/dist/core/memory/providers/user-memory-archive.d.ts.map +1 -0
  523. package/dist/core/memory/providers/user-memory-archive.js +258 -0
  524. package/dist/core/memory/providers/user-memory-archive.js.map +1 -0
  525. package/dist/core/memory/transcript-index.d.ts.map +1 -1
  526. package/dist/core/memory/transcript-index.js +1 -1
  527. package/dist/core/memory/transcript-index.js.map +1 -1
  528. package/dist/core/memory-controller.d.ts +9 -0
  529. package/dist/core/memory-controller.d.ts.map +1 -1
  530. package/dist/core/memory-controller.js +57 -16
  531. package/dist/core/memory-controller.js.map +1 -1
  532. package/dist/core/model-capability.d.ts.map +1 -1
  533. package/dist/core/model-capability.js.map +1 -1
  534. package/dist/core/model-output-json.d.ts +10 -0
  535. package/dist/core/model-output-json.d.ts.map +1 -0
  536. package/dist/core/model-output-json.js +43 -0
  537. package/dist/core/model-output-json.js.map +1 -0
  538. package/dist/core/model-registry.d.ts +8 -8
  539. package/dist/core/model-registry.d.ts.map +1 -1
  540. package/dist/core/model-registry.js +29 -52
  541. package/dist/core/model-registry.js.map +1 -1
  542. package/dist/core/model-resolver.d.ts.map +1 -1
  543. package/dist/core/model-resolver.js +1 -1
  544. package/dist/core/model-resolver.js.map +1 -1
  545. package/dist/core/model-router/config-diagnostics.d.ts.map +1 -1
  546. package/dist/core/model-router/config-diagnostics.js.map +1 -1
  547. package/dist/core/model-router/executor-route.d.ts.map +1 -1
  548. package/dist/core/model-router/executor-route.js.map +1 -1
  549. package/dist/core/model-router/fitness-gate.d.ts.map +1 -1
  550. package/dist/core/model-router/fitness-gate.js.map +1 -1
  551. package/dist/core/model-router/intent-classifier.d.ts.map +1 -1
  552. package/dist/core/model-router/route-judge.d.ts.map +1 -1
  553. package/dist/core/model-router/route-judge.js +18 -36
  554. package/dist/core/model-router/route-judge.js.map +1 -1
  555. package/dist/core/model-router/session-buffer.d.ts.map +1 -1
  556. package/dist/core/model-router/session-buffer.js.map +1 -1
  557. package/dist/core/model-router/status.d.ts.map +1 -1
  558. package/dist/core/model-router/status.js.map +1 -1
  559. package/dist/core/model-router/tool-escalation.d.ts.map +1 -1
  560. package/dist/core/model-router/tool-escalation.js.map +1 -1
  561. package/dist/core/model-router-controller.d.ts +1 -0
  562. package/dist/core/model-router-controller.d.ts.map +1 -1
  563. package/dist/core/model-router-controller.js +25 -56
  564. package/dist/core/model-router-controller.js.map +1 -1
  565. package/dist/core/model-selection-controller.d.ts +10 -0
  566. package/dist/core/model-selection-controller.d.ts.map +1 -1
  567. package/dist/core/model-selection-controller.js +0 -1
  568. package/dist/core/model-selection-controller.js.map +1 -1
  569. package/dist/core/model-tool-protocol.d.ts.map +1 -1
  570. package/dist/core/model-tool-protocol.js.map +1 -1
  571. package/dist/core/models/adaptation-store.d.ts.map +1 -1
  572. package/dist/core/models/adaptation-store.js +0 -1
  573. package/dist/core/models/adaptation-store.js.map +1 -1
  574. package/dist/core/models/context-sizing.d.ts.map +1 -1
  575. package/dist/core/models/context-sizing.js.map +1 -1
  576. package/dist/core/models/default-model-suggestions.d.ts.map +1 -1
  577. package/dist/core/models/default-model-suggestions.js.map +1 -1
  578. package/dist/core/models/fitness-store.d.ts.map +1 -1
  579. package/dist/core/models/fitness-store.js +0 -1
  580. package/dist/core/models/fitness-store.js.map +1 -1
  581. package/dist/core/models/host-state-store.d.ts.map +1 -1
  582. package/dist/core/models/host-state-store.js +1 -6
  583. package/dist/core/models/host-state-store.js.map +1 -1
  584. package/dist/core/models/llamacpp-runtime.d.ts +4 -19
  585. package/dist/core/models/llamacpp-runtime.d.ts.map +1 -1
  586. package/dist/core/models/llamacpp-runtime.js +32 -136
  587. package/dist/core/models/llamacpp-runtime.js.map +1 -1
  588. package/dist/core/models/local-registration.d.ts.map +1 -1
  589. package/dist/core/models/local-registration.js +82 -115
  590. package/dist/core/models/local-registration.js.map +1 -1
  591. package/dist/core/models/local-runtime.d.ts +12 -18
  592. package/dist/core/models/local-runtime.d.ts.map +1 -1
  593. package/dist/core/models/local-runtime.js +60 -204
  594. package/dist/core/models/local-runtime.js.map +1 -1
  595. package/dist/core/models/model-endpoint.d.ts +3 -0
  596. package/dist/core/models/model-endpoint.d.ts.map +1 -0
  597. package/dist/core/models/model-endpoint.js +11 -0
  598. package/dist/core/models/model-endpoint.js.map +1 -0
  599. package/dist/core/models/model-ref.d.ts.map +1 -1
  600. package/dist/core/models/model-ref.js.map +1 -1
  601. package/dist/core/models/needle-runtime.d.ts +7 -3
  602. package/dist/core/models/needle-runtime.d.ts.map +1 -1
  603. package/dist/core/models/needle-runtime.js +16 -92
  604. package/dist/core/models/needle-runtime.js.map +1 -1
  605. package/dist/core/models/perf-profile.d.ts +1 -1
  606. package/dist/core/models/perf-profile.d.ts.map +1 -1
  607. package/dist/core/models/perf-profile.js +6 -13
  608. package/dist/core/models/perf-profile.js.map +1 -1
  609. package/dist/core/models/prism-llamacpp-lifecycle.d.ts.map +1 -1
  610. package/dist/core/models/prism-llamacpp-lifecycle.js.map +1 -1
  611. package/dist/core/models/runtime-arbiter.d.ts.map +1 -1
  612. package/dist/core/models/runtime-arbiter.js +3 -15
  613. package/dist/core/models/runtime-arbiter.js.map +1 -1
  614. package/dist/core/models/runtime-process.d.ts +100 -0
  615. package/dist/core/models/runtime-process.d.ts.map +1 -0
  616. package/dist/core/models/runtime-process.js +183 -0
  617. package/dist/core/models/runtime-process.js.map +1 -0
  618. package/dist/core/orchestration/agent-resume.d.ts +2 -0
  619. package/dist/core/orchestration/agent-resume.d.ts.map +1 -1
  620. package/dist/core/orchestration/agent-resume.js +7 -0
  621. package/dist/core/orchestration/agent-resume.js.map +1 -1
  622. package/dist/core/orchestration/attempt-usage.d.ts +28 -0
  623. package/dist/core/orchestration/attempt-usage.d.ts.map +1 -0
  624. package/dist/core/orchestration/attempt-usage.js +168 -0
  625. package/dist/core/orchestration/attempt-usage.js.map +1 -0
  626. package/dist/core/orchestration/capability-gateway.d.ts +19 -1
  627. package/dist/core/orchestration/capability-gateway.d.ts.map +1 -1
  628. package/dist/core/orchestration/capability-gateway.js +120 -34
  629. package/dist/core/orchestration/capability-gateway.js.map +1 -1
  630. package/dist/core/orchestration/contracts.d.ts +35 -0
  631. package/dist/core/orchestration/contracts.d.ts.map +1 -1
  632. package/dist/core/orchestration/contracts.js +17 -0
  633. package/dist/core/orchestration/contracts.js.map +1 -1
  634. package/dist/core/orchestration/delegation-ledger.d.ts +17 -2
  635. package/dist/core/orchestration/delegation-ledger.d.ts.map +1 -1
  636. package/dist/core/orchestration/delegation-ledger.js +78 -5
  637. package/dist/core/orchestration/delegation-ledger.js.map +1 -1
  638. package/dist/core/orchestration/event-store.d.ts +1 -0
  639. package/dist/core/orchestration/event-store.d.ts.map +1 -1
  640. package/dist/core/orchestration/event-store.js +79 -52
  641. package/dist/core/orchestration/event-store.js.map +1 -1
  642. package/dist/core/orchestration/lane-tool-manifests.d.ts.map +1 -1
  643. package/dist/core/orchestration/lane-tool-manifests.js.map +1 -1
  644. package/dist/core/orchestration/model-binding.d.ts.map +1 -1
  645. package/dist/core/orchestration/model-binding.js.map +1 -1
  646. package/dist/core/orchestration/policy-compiler.d.ts.map +1 -1
  647. package/dist/core/orchestration/policy-compiler.js +0 -3
  648. package/dist/core/orchestration/policy-compiler.js.map +1 -1
  649. package/dist/core/orchestration/policy-gate.d.ts.map +1 -1
  650. package/dist/core/orchestration/policy-gate.js +0 -2
  651. package/dist/core/orchestration/policy-gate.js.map +1 -1
  652. package/dist/core/orchestration/profile-registry.d.ts.map +1 -1
  653. package/dist/core/orchestration/profile-registry.js +82 -42
  654. package/dist/core/orchestration/profile-registry.js.map +1 -1
  655. package/dist/core/orchestration/profile-store.d.ts.map +1 -1
  656. package/dist/core/orchestration/profile-store.js +18 -7
  657. package/dist/core/orchestration/profile-store.js.map +1 -1
  658. package/dist/core/orchestration/risk-budget.d.ts +2 -0
  659. package/dist/core/orchestration/risk-budget.d.ts.map +1 -1
  660. package/dist/core/orchestration/risk-budget.js +26 -0
  661. package/dist/core/orchestration/risk-budget.js.map +1 -1
  662. package/dist/core/orchestration/task-runtime.d.ts +14 -1
  663. package/dist/core/orchestration/task-runtime.d.ts.map +1 -1
  664. package/dist/core/orchestration/task-runtime.js +153 -57
  665. package/dist/core/orchestration/task-runtime.js.map +1 -1
  666. package/dist/core/orchestration/work-state-projection.d.ts.map +1 -1
  667. package/dist/core/orchestration/work-state-projection.js.map +1 -1
  668. package/dist/core/orchestration/worker-execution-contract.d.ts +3 -1
  669. package/dist/core/orchestration/worker-execution-contract.d.ts.map +1 -1
  670. package/dist/core/orchestration/worker-execution-contract.js +75 -23
  671. package/dist/core/orchestration/worker-execution-contract.js.map +1 -1
  672. package/dist/core/orchestration/worker-result-adapter.d.ts +9 -3
  673. package/dist/core/orchestration/worker-result-adapter.d.ts.map +1 -1
  674. package/dist/core/orchestration/worker-result-adapter.js +167 -14
  675. package/dist/core/orchestration/worker-result-adapter.js.map +1 -1
  676. package/dist/core/output-guard.d.ts.map +1 -1
  677. package/dist/core/output-guard.js.map +1 -1
  678. package/dist/core/package-manager.d.ts +3 -0
  679. package/dist/core/package-manager.d.ts.map +1 -1
  680. package/dist/core/package-manager.js +88 -353
  681. package/dist/core/package-manager.js.map +1 -1
  682. package/dist/core/process-identity.d.ts.map +1 -1
  683. package/dist/core/process-identity.js.map +1 -1
  684. package/dist/core/process-liveness.d.ts +3 -0
  685. package/dist/core/process-liveness.d.ts.map +1 -0
  686. package/dist/core/process-liveness.js +17 -0
  687. package/dist/core/process-liveness.js.map +1 -0
  688. package/dist/core/process-matrix/codes.d.ts.map +1 -1
  689. package/dist/core/process-matrix/resume-launcher.d.ts.map +1 -1
  690. package/dist/core/process-matrix/resume-launcher.js.map +1 -1
  691. package/dist/core/process-matrix/runtime.d.ts.map +1 -1
  692. package/dist/core/process-matrix/runtime.js.map +1 -1
  693. package/dist/core/process-matrix/store.d.ts.map +1 -1
  694. package/dist/core/process-matrix/store.js.map +1 -1
  695. package/dist/core/process-matrix/supervisor.d.ts.map +1 -1
  696. package/dist/core/process-matrix/supervisor.js.map +1 -1
  697. package/dist/core/profile-filter-controller.d.ts.map +1 -1
  698. package/dist/core/profile-filter-controller.js +7 -8
  699. package/dist/core/profile-filter-controller.js.map +1 -1
  700. package/dist/core/profile-registry.d.ts.map +1 -1
  701. package/dist/core/profile-registry.js +1 -2
  702. package/dist/core/profile-registry.js.map +1 -1
  703. package/dist/core/profile-resource-selection.d.ts.map +1 -1
  704. package/dist/core/profile-resource-selection.js +18 -59
  705. package/dist/core/profile-resource-selection.js.map +1 -1
  706. package/dist/core/prompt-markup.d.ts +3 -0
  707. package/dist/core/prompt-markup.d.ts.map +1 -0
  708. package/dist/core/prompt-markup.js +7 -0
  709. package/dist/core/prompt-markup.js.map +1 -0
  710. package/dist/core/prompt-templates.d.ts.map +1 -1
  711. package/dist/core/prompt-templates.js +13 -39
  712. package/dist/core/prompt-templates.js.map +1 -1
  713. package/dist/core/provider-display-names.d.ts.map +1 -1
  714. package/dist/core/python-runtime.d.ts.map +1 -1
  715. package/dist/core/python-runtime.js.map +1 -1
  716. package/dist/core/reflection-controller.d.ts +23 -2
  717. package/dist/core/reflection-controller.d.ts.map +1 -1
  718. package/dist/core/reflection-controller.js +233 -79
  719. package/dist/core/reflection-controller.js.map +1 -1
  720. package/dist/core/reload-blockers.d.ts +2 -1
  721. package/dist/core/reload-blockers.d.ts.map +1 -1
  722. package/dist/core/reload-blockers.js +4 -14
  723. package/dist/core/reload-blockers.js.map +1 -1
  724. package/dist/core/request-auth.d.ts.map +1 -1
  725. package/dist/core/request-auth.js.map +1 -1
  726. package/dist/core/research/automata-provider.d.ts.map +1 -1
  727. package/dist/core/research/automata-provider.js.map +1 -1
  728. package/dist/core/research/evidence-bundle.d.ts +20 -0
  729. package/dist/core/research/evidence-bundle.d.ts.map +1 -1
  730. package/dist/core/research/evidence-bundle.js +173 -69
  731. package/dist/core/research/evidence-bundle.js.map +1 -1
  732. package/dist/core/research/lane-model-resolver.d.ts.map +1 -1
  733. package/dist/core/research/lane-model-resolver.js +0 -1
  734. package/dist/core/research/lane-model-resolver.js.map +1 -1
  735. package/dist/core/research/model-fitness-controller.d.ts.map +1 -1
  736. package/dist/core/research/model-fitness-controller.js +17 -33
  737. package/dist/core/research/model-fitness-controller.js.map +1 -1
  738. package/dist/core/research/model-fitness.d.ts.map +1 -1
  739. package/dist/core/research/model-fitness.js +4 -25
  740. package/dist/core/research/model-fitness.js.map +1 -1
  741. package/dist/core/research/research-gate.d.ts.map +1 -1
  742. package/dist/core/research/research-gate.js.map +1 -1
  743. package/dist/core/research/research-lane-controller.d.ts.map +1 -1
  744. package/dist/core/research/research-lane-controller.js +5 -10
  745. package/dist/core/research/research-lane-controller.js.map +1 -1
  746. package/dist/core/research/research-runner.d.ts +2 -4
  747. package/dist/core/research/research-runner.d.ts.map +1 -1
  748. package/dist/core/research/research-runner.js +17 -48
  749. package/dist/core/research/research-runner.js.map +1 -1
  750. package/dist/core/research/session-evidence-bundle.d.ts.map +1 -1
  751. package/dist/core/research/session-evidence-bundle.js.map +1 -1
  752. package/dist/core/research/workspace-collector.d.ts.map +1 -1
  753. package/dist/core/research/workspace-collector.js.map +1 -1
  754. package/dist/core/resolve-config-value.d.ts.map +1 -1
  755. package/dist/core/resolve-config-value.js.map +1 -1
  756. package/dist/core/resource-ignore.d.ts +6 -0
  757. package/dist/core/resource-ignore.d.ts.map +1 -0
  758. package/dist/core/resource-ignore.js +44 -0
  759. package/dist/core/resource-ignore.js.map +1 -0
  760. package/dist/core/resource-loader.d.ts +0 -1
  761. package/dist/core/resource-loader.d.ts.map +1 -1
  762. package/dist/core/resource-loader.js +52 -187
  763. package/dist/core/resource-loader.js.map +1 -1
  764. package/dist/core/resource-profile-blocks.d.ts +3 -1
  765. package/dist/core/resource-profile-blocks.d.ts.map +1 -1
  766. package/dist/core/resource-profile-blocks.js +8 -5
  767. package/dist/core/resource-profile-blocks.js.map +1 -1
  768. package/dist/core/resource-profile-equality.d.ts.map +1 -1
  769. package/dist/core/resource-profile-equality.js.map +1 -1
  770. package/dist/core/resource-traversal.d.ts +43 -0
  771. package/dist/core/resource-traversal.d.ts.map +1 -0
  772. package/dist/core/resource-traversal.js +84 -0
  773. package/dist/core/resource-traversal.js.map +1 -0
  774. package/dist/core/risk-classifier.d.ts.map +1 -1
  775. package/dist/core/risk-classifier.js.map +1 -1
  776. package/dist/core/runtime-builder.d.ts +11 -1
  777. package/dist/core/runtime-builder.d.ts.map +1 -1
  778. package/dist/core/runtime-builder.js +40 -51
  779. package/dist/core/runtime-builder.js.map +1 -1
  780. package/dist/core/scout-controller.d.ts.map +1 -1
  781. package/dist/core/scout-controller.js +0 -1
  782. package/dist/core/scout-controller.js.map +1 -1
  783. package/dist/core/sdk.d.ts.map +1 -1
  784. package/dist/core/sdk.js.map +1 -1
  785. package/dist/core/secrets/credential-exposure-guard.d.ts.map +1 -1
  786. package/dist/core/secrets/credential-exposure-guard.js +70 -44
  787. package/dist/core/secrets/credential-exposure-guard.js.map +1 -1
  788. package/dist/core/secrets/secret-dotenv.d.ts.map +1 -1
  789. package/dist/core/secrets/secret-dotenv.js +0 -1
  790. package/dist/core/secrets/secret-dotenv.js.map +1 -1
  791. package/dist/core/secrets/secret-vault-format.d.ts.map +1 -1
  792. package/dist/core/secrets/secret-vault-format.js +0 -1
  793. package/dist/core/secrets/secret-vault-format.js.map +1 -1
  794. package/dist/core/secrets/secret-vault.d.ts.map +1 -1
  795. package/dist/core/secrets/secret-vault.js +2 -10
  796. package/dist/core/secrets/secret-vault.js.map +1 -1
  797. package/dist/core/security/secret-text.d.ts.map +1 -1
  798. package/dist/core/security/secret-text.js.map +1 -1
  799. package/dist/core/security/untrusted-boundary.d.ts.map +1 -1
  800. package/dist/core/security/untrusted-boundary.js.map +1 -1
  801. package/dist/core/session-analytics.d.ts.map +1 -1
  802. package/dist/core/session-analytics.js +18 -50
  803. package/dist/core/session-analytics.js.map +1 -1
  804. package/dist/core/session-artifact-bundle.d.ts +35 -0
  805. package/dist/core/session-artifact-bundle.d.ts.map +1 -0
  806. package/dist/core/session-artifact-bundle.js +61 -0
  807. package/dist/core/session-artifact-bundle.js.map +1 -0
  808. package/dist/core/session-cwd.d.ts.map +1 -1
  809. package/dist/core/session-cwd.js +0 -1
  810. package/dist/core/session-cwd.js.map +1 -1
  811. package/dist/core/session-entry-index.d.ts +8 -0
  812. package/dist/core/session-entry-index.d.ts.map +1 -0
  813. package/dist/core/session-entry-index.js +16 -0
  814. package/dist/core/session-entry-index.js.map +1 -0
  815. package/dist/core/session-image-store.d.ts.map +1 -1
  816. package/dist/core/session-image-store.js +0 -3
  817. package/dist/core/session-image-store.js.map +1 -1
  818. package/dist/core/session-jsonl-writer.d.ts +3 -0
  819. package/dist/core/session-jsonl-writer.d.ts.map +1 -0
  820. package/dist/core/session-jsonl-writer.js +38 -0
  821. package/dist/core/session-jsonl-writer.js.map +1 -0
  822. package/dist/core/session-manager-factory.d.ts.map +1 -1
  823. package/dist/core/session-manager-factory.js.map +1 -1
  824. package/dist/core/session-role.d.ts.map +1 -1
  825. package/dist/core/session-role.js.map +1 -1
  826. package/dist/core/session-snapshot.d.ts.map +1 -1
  827. package/dist/core/session-snapshot.js.map +1 -1
  828. package/dist/core/session-supervision-runtime.d.ts.map +1 -1
  829. package/dist/core/session-supervision-runtime.js +1 -4
  830. package/dist/core/session-supervision-runtime.js.map +1 -1
  831. package/dist/core/session-tree-navigator.d.ts.map +1 -1
  832. package/dist/core/session-tree-navigator.js +0 -1
  833. package/dist/core/session-tree-navigator.js.map +1 -1
  834. package/dist/core/settings-manager.d.ts +2 -1
  835. package/dist/core/settings-manager.d.ts.map +1 -1
  836. package/dist/core/settings-manager.js +64 -162
  837. package/dist/core/settings-manager.js.map +1 -1
  838. package/dist/core/skill-block.d.mts +8 -0
  839. package/dist/core/skill-block.mjs +52 -0
  840. package/dist/core/skill-discovery.d.ts +5 -0
  841. package/dist/core/skill-discovery.d.ts.map +1 -0
  842. package/dist/core/skill-discovery.js +34 -0
  843. package/dist/core/skill-discovery.js.map +1 -0
  844. package/dist/core/skills.d.ts.map +1 -1
  845. package/dist/core/skills.js +23 -159
  846. package/dist/core/skills.js.map +1 -1
  847. package/dist/core/slash-commands.d.ts.map +1 -1
  848. package/dist/core/source-info.d.ts.map +1 -1
  849. package/dist/core/source-info.js.map +1 -1
  850. package/dist/core/spawned-usage.d.ts +21 -0
  851. package/dist/core/spawned-usage.d.ts.map +1 -0
  852. package/dist/core/spawned-usage.js +29 -0
  853. package/dist/core/spawned-usage.js.map +1 -0
  854. package/dist/core/system-prompt-builder.d.ts +4 -0
  855. package/dist/core/system-prompt-builder.d.ts.map +1 -1
  856. package/dist/core/system-prompt-builder.js +15 -8
  857. package/dist/core/system-prompt-builder.js.map +1 -1
  858. package/dist/core/system-prompt.d.ts.map +1 -1
  859. package/dist/core/system-prompt.js +52 -35
  860. package/dist/core/system-prompt.js.map +1 -1
  861. package/dist/core/tasks/session-task-state.d.ts.map +1 -1
  862. package/dist/core/tasks/session-task-state.js.map +1 -1
  863. package/dist/core/tasks/task-command.d.ts.map +1 -1
  864. package/dist/core/tasks/task-command.js.map +1 -1
  865. package/dist/core/tasks/task-contract-monitor.d.ts.map +1 -1
  866. package/dist/core/tasks/task-contract-monitor.js.map +1 -1
  867. package/dist/core/tasks/task-projection.d.ts.map +1 -1
  868. package/dist/core/tasks/task-projection.js.map +1 -1
  869. package/dist/core/tasks/task-state.d.ts.map +1 -1
  870. package/dist/core/tasks/task-state.js.map +1 -1
  871. package/dist/core/text-preview.d.ts +4 -0
  872. package/dist/core/text-preview.d.ts.map +1 -0
  873. package/dist/core/text-preview.js +33 -0
  874. package/dist/core/text-preview.js.map +1 -0
  875. package/dist/core/timings.d.ts.map +1 -1
  876. package/dist/core/timings.js.map +1 -1
  877. package/dist/core/tool-capability-policy.d.ts.map +1 -1
  878. package/dist/core/tool-capability-policy.js.map +1 -1
  879. package/dist/core/tool-gate-controller.d.ts.map +1 -1
  880. package/dist/core/tool-gate-controller.js +86 -87
  881. package/dist/core/tool-gate-controller.js.map +1 -1
  882. package/dist/core/tool-protocol-controller.d.ts +4 -1
  883. package/dist/core/tool-protocol-controller.d.ts.map +1 -1
  884. package/dist/core/tool-protocol-controller.js +19 -23
  885. package/dist/core/tool-protocol-controller.js.map +1 -1
  886. package/dist/core/tool-recovery-log-records.d.ts.map +1 -1
  887. package/dist/core/tool-recovery-log-records.js.map +1 -1
  888. package/dist/core/tool-recovery-log-worker.d.ts.map +1 -1
  889. package/dist/core/tool-recovery-log-worker.js.map +1 -1
  890. package/dist/core/tool-recovery-logger.d.ts.map +1 -1
  891. package/dist/core/tool-recovery-logger.js +12 -24
  892. package/dist/core/tool-recovery-logger.js.map +1 -1
  893. package/dist/core/tool-recovery-stats.d.ts.map +1 -1
  894. package/dist/core/tool-recovery-stats.js +16 -22
  895. package/dist/core/tool-recovery-stats.js.map +1 -1
  896. package/dist/core/tool-repair-health.d.ts.map +1 -1
  897. package/dist/core/tool-repair-health.js.map +1 -1
  898. package/dist/core/tool-repair-settings.d.ts.map +1 -1
  899. package/dist/core/tool-repair-settings.js.map +1 -1
  900. package/dist/core/tool-selection/expected-utility.d.ts.map +1 -1
  901. package/dist/core/tool-selection/expected-utility.js.map +1 -1
  902. package/dist/core/tool-selection/promotion.d.ts.map +1 -1
  903. package/dist/core/tool-selection/promotion.js.map +1 -1
  904. package/dist/core/tool-selection/tool-performance-store.d.ts +2 -0
  905. package/dist/core/tool-selection/tool-performance-store.d.ts.map +1 -1
  906. package/dist/core/tool-selection/tool-performance-store.js +49 -7
  907. package/dist/core/tool-selection/tool-performance-store.js.map +1 -1
  908. package/dist/core/tool-selection/tool-phase-timing.d.ts +19 -0
  909. package/dist/core/tool-selection/tool-phase-timing.d.ts.map +1 -0
  910. package/dist/core/tool-selection/tool-phase-timing.js +63 -0
  911. package/dist/core/tool-selection/tool-phase-timing.js.map +1 -0
  912. package/dist/core/tool-selection/tool-selection-controller.d.ts +2 -5
  913. package/dist/core/tool-selection/tool-selection-controller.d.ts.map +1 -1
  914. package/dist/core/tool-selection/tool-selection-controller.js +50 -30
  915. package/dist/core/tool-selection/tool-selection-controller.js.map +1 -1
  916. package/dist/core/toolkit/reflex-interpreter.d.ts +16 -0
  917. package/dist/core/toolkit/reflex-interpreter.d.ts.map +1 -1
  918. package/dist/core/toolkit/reflex-interpreter.js +21 -0
  919. package/dist/core/toolkit/reflex-interpreter.js.map +1 -1
  920. package/dist/core/toolkit/script-registry.d.ts.map +1 -1
  921. package/dist/core/toolkit/script-registry.js.map +1 -1
  922. package/dist/core/toolkit/script-runner.d.ts.map +1 -1
  923. package/dist/core/toolkit/script-runner.js.map +1 -1
  924. package/dist/core/tools/artifact-retrieve.d.ts.map +1 -1
  925. package/dist/core/tools/artifact-retrieve.js.map +1 -1
  926. package/dist/core/tools/ask-question.d.ts +2 -3
  927. package/dist/core/tools/ask-question.d.ts.map +1 -1
  928. package/dist/core/tools/ask-question.js +14 -40
  929. package/dist/core/tools/ask-question.js.map +1 -1
  930. package/dist/core/tools/bash.d.ts +2 -0
  931. package/dist/core/tools/bash.d.ts.map +1 -1
  932. package/dist/core/tools/bash.js +83 -30
  933. package/dist/core/tools/bash.js.map +1 -1
  934. package/dist/core/tools/context-scout.d.ts.map +1 -1
  935. package/dist/core/tools/context-scout.js.map +1 -1
  936. package/dist/core/tools/delegate-status.d.ts +6 -1
  937. package/dist/core/tools/delegate-status.d.ts.map +1 -1
  938. package/dist/core/tools/delegate-status.js +109 -25
  939. package/dist/core/tools/delegate-status.js.map +1 -1
  940. package/dist/core/tools/delegate.d.ts +9 -1
  941. package/dist/core/tools/delegate.d.ts.map +1 -1
  942. package/dist/core/tools/delegate.js +329 -67
  943. package/dist/core/tools/delegate.js.map +1 -1
  944. package/dist/core/tools/edit-diff.d.ts.map +1 -1
  945. package/dist/core/tools/edit-diff.js.map +1 -1
  946. package/dist/core/tools/edit.d.ts.map +1 -1
  947. package/dist/core/tools/edit.js.map +1 -1
  948. package/dist/core/tools/extensionify.d.ts.map +1 -1
  949. package/dist/core/tools/extensionify.js.map +1 -1
  950. package/dist/core/tools/fff-search-backend.d.ts +19 -0
  951. package/dist/core/tools/fff-search-backend.d.ts.map +1 -1
  952. package/dist/core/tools/fff-search-backend.js +28 -2
  953. package/dist/core/tools/fff-search-backend.js.map +1 -1
  954. package/dist/core/tools/file-encoding-policy.d.ts.map +1 -1
  955. package/dist/core/tools/file-encoding-policy.js.map +1 -1
  956. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
  957. package/dist/core/tools/file-mutation-queue.js.map +1 -1
  958. package/dist/core/tools/find.d.ts +1 -1
  959. package/dist/core/tools/find.d.ts.map +1 -1
  960. package/dist/core/tools/find.js +44 -108
  961. package/dist/core/tools/find.js.map +1 -1
  962. package/dist/core/tools/git-filter.d.ts.map +1 -1
  963. package/dist/core/tools/git-filter.js.map +1 -1
  964. package/dist/core/tools/goal.d.ts.map +1 -1
  965. package/dist/core/tools/goal.js +7 -7
  966. package/dist/core/tools/goal.js.map +1 -1
  967. package/dist/core/tools/grep.d.ts +1 -1
  968. package/dist/core/tools/grep.d.ts.map +1 -1
  969. package/dist/core/tools/grep.js +42 -102
  970. package/dist/core/tools/grep.js.map +1 -1
  971. package/dist/core/tools/index.d.ts.map +1 -1
  972. package/dist/core/tools/index.js.map +1 -1
  973. package/dist/core/tools/ls.d.ts.map +1 -1
  974. package/dist/core/tools/ls.js +20 -36
  975. package/dist/core/tools/ls.js.map +1 -1
  976. package/dist/core/tools/model-fitness.d.ts.map +1 -1
  977. package/dist/core/tools/model-fitness.js.map +1 -1
  978. package/dist/core/tools/orchestration-panel.d.ts +5 -0
  979. package/dist/core/tools/orchestration-panel.d.ts.map +1 -1
  980. package/dist/core/tools/orchestration-panel.js +5 -5
  981. package/dist/core/tools/orchestration-panel.js.map +1 -1
  982. package/dist/core/tools/output-accumulator.d.ts +2 -0
  983. package/dist/core/tools/output-accumulator.d.ts.map +1 -1
  984. package/dist/core/tools/output-accumulator.js +24 -36
  985. package/dist/core/tools/output-accumulator.js.map +1 -1
  986. package/dist/core/tools/path-utils.d.ts.map +1 -1
  987. package/dist/core/tools/path-utils.js.map +1 -1
  988. package/dist/core/tools/persistent-process-coordinator.d.ts +31 -0
  989. package/dist/core/tools/persistent-process-coordinator.d.ts.map +1 -0
  990. package/dist/core/tools/persistent-process-coordinator.js +123 -0
  991. package/dist/core/tools/persistent-process-coordinator.js.map +1 -0
  992. package/dist/core/tools/python.d.ts.map +1 -1
  993. package/dist/core/tools/python.js.map +1 -1
  994. package/dist/core/tools/read.d.ts.map +1 -1
  995. package/dist/core/tools/read.js +14 -13
  996. package/dist/core/tools/read.js.map +1 -1
  997. package/dist/core/tools/render-utils.d.ts +29 -0
  998. package/dist/core/tools/render-utils.d.ts.map +1 -1
  999. package/dist/core/tools/render-utils.js +31 -1
  1000. package/dist/core/tools/render-utils.js.map +1 -1
  1001. package/dist/core/tools/run-process.d.ts +1 -1
  1002. package/dist/core/tools/run-process.d.ts.map +1 -1
  1003. package/dist/core/tools/run-process.js +69 -9
  1004. package/dist/core/tools/run-process.js.map +1 -1
  1005. package/dist/core/tools/run-toolkit-script.d.ts.map +1 -1
  1006. package/dist/core/tools/run-toolkit-script.js.map +1 -1
  1007. package/dist/core/tools/search-command-guard.d.ts +10 -0
  1008. package/dist/core/tools/search-command-guard.d.ts.map +1 -1
  1009. package/dist/core/tools/search-command-guard.js +118 -31
  1010. package/dist/core/tools/search-command-guard.js.map +1 -1
  1011. package/dist/core/tools/search-router.d.ts.map +1 -1
  1012. package/dist/core/tools/search-router.js.map +1 -1
  1013. package/dist/core/tools/search-tool-runtime.d.ts +19 -0
  1014. package/dist/core/tools/search-tool-runtime.d.ts.map +1 -0
  1015. package/dist/core/tools/search-tool-runtime.js +12 -0
  1016. package/dist/core/tools/search-tool-runtime.js.map +1 -0
  1017. package/dist/core/tools/secret-store.d.ts.map +1 -1
  1018. package/dist/core/tools/secret-store.js.map +1 -1
  1019. package/dist/core/tools/shell-command-parser.d.ts.map +1 -1
  1020. package/dist/core/tools/shell-command-parser.js.map +1 -1
  1021. package/dist/core/tools/shell-contract-router.d.ts.map +1 -1
  1022. package/dist/core/tools/shell-contract-router.js +16 -6
  1023. package/dist/core/tools/shell-contract-router.js.map +1 -1
  1024. package/dist/core/tools/shell-execution-session.d.ts +4 -0
  1025. package/dist/core/tools/shell-execution-session.d.ts.map +1 -0
  1026. package/dist/core/tools/shell-execution-session.js +11 -0
  1027. package/dist/core/tools/shell-execution-session.js.map +1 -0
  1028. package/dist/core/tools/shell-output-projection.d.ts +49 -0
  1029. package/dist/core/tools/shell-output-projection.d.ts.map +1 -0
  1030. package/dist/core/tools/shell-output-projection.js +381 -0
  1031. package/dist/core/tools/shell-output-projection.js.map +1 -0
  1032. package/dist/core/tools/shell-session.d.ts +2 -13
  1033. package/dist/core/tools/shell-session.d.ts.map +1 -1
  1034. package/dist/core/tools/shell-session.js +36 -136
  1035. package/dist/core/tools/shell-session.js.map +1 -1
  1036. package/dist/core/tools/skill-audit.d.ts.map +1 -1
  1037. package/dist/core/tools/skill-audit.js.map +1 -1
  1038. package/dist/core/tools/skillify.d.ts.map +1 -1
  1039. package/dist/core/tools/skillify.js.map +1 -1
  1040. package/dist/core/tools/task-steps.d.ts +8 -8
  1041. package/dist/core/tools/task-steps.d.ts.map +1 -1
  1042. package/dist/core/tools/task-steps.js +17 -18
  1043. package/dist/core/tools/task-steps.js.map +1 -1
  1044. package/dist/core/tools/tmux-dispatch.d.ts.map +1 -1
  1045. package/dist/core/tools/tmux-dispatch.js.map +1 -1
  1046. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  1047. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  1048. package/dist/core/tools/tool-task.d.ts +23 -0
  1049. package/dist/core/tools/tool-task.d.ts.map +1 -0
  1050. package/dist/core/tools/tool-task.js +93 -0
  1051. package/dist/core/tools/tool-task.js.map +1 -0
  1052. package/dist/core/tools/windows-shell-engine.d.ts +17 -11
  1053. package/dist/core/tools/windows-shell-engine.d.ts.map +1 -1
  1054. package/dist/core/tools/windows-shell-engine.js +339 -117
  1055. package/dist/core/tools/windows-shell-engine.js.map +1 -1
  1056. package/dist/core/tools/windows-shell-state.d.ts.map +1 -1
  1057. package/dist/core/tools/windows-shell-state.js.map +1 -1
  1058. package/dist/core/tools/worktree-sync.d.ts.map +1 -1
  1059. package/dist/core/tools/worktree-sync.js +8 -12
  1060. package/dist/core/tools/worktree-sync.js.map +1 -1
  1061. package/dist/core/tools/write.d.ts.map +1 -1
  1062. package/dist/core/tools/write.js +0 -1
  1063. package/dist/core/tools/write.js.map +1 -1
  1064. package/dist/core/trust-manager.d.ts.map +1 -1
  1065. package/dist/core/trust-manager.js +7 -40
  1066. package/dist/core/trust-manager.js.map +1 -1
  1067. package/dist/core/util/atomic-file.d.ts +19 -0
  1068. package/dist/core/util/atomic-file.d.ts.map +1 -1
  1069. package/dist/core/util/atomic-file.js +50 -15
  1070. package/dist/core/util/atomic-file.js.map +1 -1
  1071. package/dist/core/util/bounded-file.d.ts +15 -0
  1072. package/dist/core/util/bounded-file.d.ts.map +1 -0
  1073. package/dist/core/util/bounded-file.js +120 -0
  1074. package/dist/core/util/bounded-file.js.map +1 -0
  1075. package/dist/core/util/bounded-jsonl.d.ts.map +1 -1
  1076. package/dist/core/util/bounded-jsonl.js +112 -9
  1077. package/dist/core/util/bounded-jsonl.js.map +1 -1
  1078. package/dist/core/util/bounded-value.d.ts +3 -0
  1079. package/dist/core/util/bounded-value.d.ts.map +1 -0
  1080. package/dist/core/util/bounded-value.js +12 -0
  1081. package/dist/core/util/bounded-value.js.map +1 -0
  1082. package/dist/core/util/json-size.d.ts +3 -0
  1083. package/dist/core/util/json-size.d.ts.map +1 -0
  1084. package/dist/core/util/json-size.js +95 -0
  1085. package/dist/core/util/json-size.js.map +1 -0
  1086. package/dist/core/util/minimatch-cache.d.ts.map +1 -1
  1087. package/dist/core/util/minimatch-cache.js.map +1 -1
  1088. package/dist/core/util/value-guards.d.ts +2 -0
  1089. package/dist/core/util/value-guards.d.ts.map +1 -1
  1090. package/dist/core/util/value-guards.js +5 -0
  1091. package/dist/core/util/value-guards.js.map +1 -1
  1092. package/dist/core/worktree-sync/codes.d.ts.map +1 -1
  1093. package/dist/core/worktree-sync/git-engine.d.ts.map +1 -1
  1094. package/dist/core/worktree-sync/git-engine.js +20 -36
  1095. package/dist/core/worktree-sync/git-engine.js.map +1 -1
  1096. package/dist/core/worktree-sync/lane-gate.d.ts.map +1 -1
  1097. package/dist/core/worktree-sync/lane-gate.js +1 -4
  1098. package/dist/core/worktree-sync/lane-gate.js.map +1 -1
  1099. package/dist/core/worktree-sync/runtime.d.ts.map +1 -1
  1100. package/dist/core/worktree-sync/runtime.js.map +1 -1
  1101. package/dist/core/worktree-sync/store.d.ts.map +1 -1
  1102. package/dist/core/worktree-sync/store.js.map +1 -1
  1103. package/dist/core/worktree-sync/watcher.d.ts.map +1 -1
  1104. package/dist/core/worktree-sync/watcher.js.map +1 -1
  1105. package/dist/index.d.ts.map +1 -1
  1106. package/dist/index.js.map +1 -1
  1107. package/dist/main.d.ts.map +1 -1
  1108. package/dist/main.js +10 -32
  1109. package/dist/main.js.map +1 -1
  1110. package/dist/migrations.d.ts.map +1 -1
  1111. package/dist/migrations.js +6 -19
  1112. package/dist/migrations.js.map +1 -1
  1113. package/dist/modes/index.d.ts.map +1 -1
  1114. package/dist/modes/interactive/auth-dialogs-controller.d.ts +3 -0
  1115. package/dist/modes/interactive/auth-dialogs-controller.d.ts.map +1 -1
  1116. package/dist/modes/interactive/auth-dialogs-controller.js +96 -132
  1117. package/dist/modes/interactive/auth-dialogs-controller.js.map +1 -1
  1118. package/dist/modes/interactive/auto-learn-controller.d.ts +1 -31
  1119. package/dist/modes/interactive/auto-learn-controller.d.ts.map +1 -1
  1120. package/dist/modes/interactive/auto-learn-controller.js +86 -307
  1121. package/dist/modes/interactive/auto-learn-controller.js.map +1 -1
  1122. package/dist/modes/interactive/autocomplete-provider.d.ts.map +1 -1
  1123. package/dist/modes/interactive/autocomplete-provider.js.map +1 -1
  1124. package/dist/modes/interactive/autonomy-commands.d.ts.map +1 -1
  1125. package/dist/modes/interactive/autonomy-commands.js +2 -8
  1126. package/dist/modes/interactive/autonomy-commands.js.map +1 -1
  1127. package/dist/modes/interactive/clipboard-input.d.ts +5 -1
  1128. package/dist/modes/interactive/clipboard-input.d.ts.map +1 -1
  1129. package/dist/modes/interactive/clipboard-input.js +17 -0
  1130. package/dist/modes/interactive/clipboard-input.js.map +1 -1
  1131. package/dist/modes/interactive/compaction-queue.d.ts.map +1 -1
  1132. package/dist/modes/interactive/compaction-queue.js +13 -18
  1133. package/dist/modes/interactive/compaction-queue.js.map +1 -1
  1134. package/dist/modes/interactive/components/activity-lane.d.ts.map +1 -1
  1135. package/dist/modes/interactive/components/activity-lane.js +6 -10
  1136. package/dist/modes/interactive/components/activity-lane.js.map +1 -1
  1137. package/dist/modes/interactive/components/armin.d.ts +1 -0
  1138. package/dist/modes/interactive/components/armin.d.ts.map +1 -1
  1139. package/dist/modes/interactive/components/armin.js +10 -21
  1140. package/dist/modes/interactive/components/armin.js.map +1 -1
  1141. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  1142. package/dist/modes/interactive/components/assistant-message.js +1 -6
  1143. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  1144. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  1145. package/dist/modes/interactive/components/bash-execution.js +4 -9
  1146. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  1147. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  1148. package/dist/modes/interactive/components/bordered-loader.js +0 -3
  1149. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  1150. package/dist/modes/interactive/components/branch-summary-message.d.ts +3 -8
  1151. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  1152. package/dist/modes/interactive/components/branch-summary-message.js +13 -35
  1153. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  1154. package/dist/modes/interactive/components/compaction-summary-message.d.ts +3 -8
  1155. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  1156. package/dist/modes/interactive/components/compaction-summary-message.js +14 -36
  1157. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  1158. package/dist/modes/interactive/components/config-selector.d.ts +1 -0
  1159. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  1160. package/dist/modes/interactive/components/config-selector.js +20 -43
  1161. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  1162. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  1163. package/dist/modes/interactive/components/countdown-timer.js +0 -5
  1164. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  1165. package/dist/modes/interactive/components/custom-editor.d.ts +2 -0
  1166. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  1167. package/dist/modes/interactive/components/custom-editor.js +4 -8
  1168. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  1169. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  1170. package/dist/modes/interactive/components/custom-message.js +1 -6
  1171. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  1172. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
  1173. package/dist/modes/interactive/components/daxnuts.js +6 -8
  1174. package/dist/modes/interactive/components/daxnuts.js.map +1 -1
  1175. package/dist/modes/interactive/components/diff.d.ts.map +1 -1
  1176. package/dist/modes/interactive/components/diff.js.map +1 -1
  1177. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  1178. package/dist/modes/interactive/components/dynamic-border.js +0 -1
  1179. package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  1180. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -1
  1181. package/dist/modes/interactive/components/earendil-announcement.js.map +1 -1
  1182. package/dist/modes/interactive/components/expandable-markdown-message.d.ts +21 -0
  1183. package/dist/modes/interactive/components/expandable-markdown-message.d.ts.map +1 -0
  1184. package/dist/modes/interactive/components/expandable-markdown-message.js +48 -0
  1185. package/dist/modes/interactive/components/expandable-markdown-message.js.map +1 -0
  1186. package/dist/modes/interactive/components/expandable-text.d.ts.map +1 -1
  1187. package/dist/modes/interactive/components/expandable-text.js +0 -2
  1188. package/dist/modes/interactive/components/expandable-text.js.map +1 -1
  1189. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  1190. package/dist/modes/interactive/components/extension-editor.js +1 -9
  1191. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  1192. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  1193. package/dist/modes/interactive/components/extension-input.js +2 -8
  1194. package/dist/modes/interactive/components/extension-input.js.map +1 -1
  1195. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  1196. package/dist/modes/interactive/components/extension-selector.js +5 -20
  1197. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  1198. package/dist/modes/interactive/components/fitness-role-selector.d.ts.map +1 -1
  1199. package/dist/modes/interactive/components/fitness-role-selector.js +0 -1
  1200. package/dist/modes/interactive/components/fitness-role-selector.js.map +1 -1
  1201. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  1202. package/dist/modes/interactive/components/footer.js +1 -5
  1203. package/dist/modes/interactive/components/footer.js.map +1 -1
  1204. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  1205. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  1206. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  1207. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  1208. package/dist/modes/interactive/components/login-dialog.js +4 -10
  1209. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  1210. package/dist/modes/interactive/components/model-selector.d.ts +2 -2
  1211. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  1212. package/dist/modes/interactive/components/model-selector.js +21 -44
  1213. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  1214. package/dist/modes/interactive/components/model-suggestion-selector.d.ts.map +1 -1
  1215. package/dist/modes/interactive/components/model-suggestion-selector.js +0 -1
  1216. package/dist/modes/interactive/components/model-suggestion-selector.js.map +1 -1
  1217. package/dist/modes/interactive/components/oauth-selector.d.ts +1 -1
  1218. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  1219. package/dist/modes/interactive/components/oauth-selector.js +16 -32
  1220. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  1221. package/dist/modes/interactive/components/profile-resource-editor.d.ts +3 -4
  1222. package/dist/modes/interactive/components/profile-resource-editor.d.ts.map +1 -1
  1223. package/dist/modes/interactive/components/profile-resource-editor.js +34 -93
  1224. package/dist/modes/interactive/components/profile-resource-editor.js.map +1 -1
  1225. package/dist/modes/interactive/components/profile-selector.d.ts.map +1 -1
  1226. package/dist/modes/interactive/components/profile-selector.js +0 -1
  1227. package/dist/modes/interactive/components/profile-selector.js.map +1 -1
  1228. package/dist/modes/interactive/components/scoped-models-selector.d.ts +3 -4
  1229. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  1230. package/dist/modes/interactive/components/scoped-models-selector.js +34 -79
  1231. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  1232. package/dist/modes/interactive/components/selector-list.d.ts +63 -0
  1233. package/dist/modes/interactive/components/selector-list.d.ts.map +1 -0
  1234. package/dist/modes/interactive/components/selector-list.js +186 -0
  1235. package/dist/modes/interactive/components/selector-list.js.map +1 -0
  1236. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
  1237. package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  1238. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  1239. package/dist/modes/interactive/components/session-selector.js +61 -103
  1240. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  1241. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  1242. package/dist/modes/interactive/components/settings-selector.js +40 -138
  1243. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  1244. package/dist/modes/interactive/components/show-images-selector.d.ts +2 -4
  1245. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
  1246. package/dist/modes/interactive/components/show-images-selector.js +9 -28
  1247. package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
  1248. package/dist/modes/interactive/components/skill-invocation-message.d.ts +3 -8
  1249. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  1250. package/dist/modes/interactive/components/skill-invocation-message.js +12 -40
  1251. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  1252. package/dist/modes/interactive/components/theme-selector.d.ts +2 -5
  1253. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  1254. package/dist/modes/interactive/components/theme-selector.js +11 -37
  1255. package/dist/modes/interactive/components/theme-selector.js.map +1 -1
  1256. package/dist/modes/interactive/components/thinking-selector.d.ts +2 -4
  1257. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  1258. package/dist/modes/interactive/components/thinking-selector.js +9 -31
  1259. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  1260. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  1261. package/dist/modes/interactive/components/tool-execution.js +9 -28
  1262. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  1263. package/dist/modes/interactive/components/tool-group.d.ts.map +1 -1
  1264. package/dist/modes/interactive/components/tool-group.js +2 -3
  1265. package/dist/modes/interactive/components/tool-group.js.map +1 -1
  1266. package/dist/modes/interactive/components/tool-panel-registry.d.ts.map +1 -1
  1267. package/dist/modes/interactive/components/tool-panel-registry.js +5 -3
  1268. package/dist/modes/interactive/components/tool-panel-registry.js.map +1 -1
  1269. package/dist/modes/interactive/components/tool-title.d.ts.map +1 -1
  1270. package/dist/modes/interactive/components/tool-title.js +0 -4
  1271. package/dist/modes/interactive/components/tool-title.js.map +1 -1
  1272. package/dist/modes/interactive/components/transcript-pager.d.ts +26 -0
  1273. package/dist/modes/interactive/components/transcript-pager.d.ts.map +1 -0
  1274. package/dist/modes/interactive/components/transcript-pager.js +81 -0
  1275. package/dist/modes/interactive/components/transcript-pager.js.map +1 -0
  1276. package/dist/modes/interactive/components/tree-selector.d.ts +1 -12
  1277. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  1278. package/dist/modes/interactive/components/tree-selector.js +42 -402
  1279. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  1280. package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -1
  1281. package/dist/modes/interactive/components/trust-selector.js +4 -16
  1282. package/dist/modes/interactive/components/trust-selector.js.map +1 -1
  1283. package/dist/modes/interactive/components/usage-action-selector.d.ts.map +1 -1
  1284. package/dist/modes/interactive/components/usage-action-selector.js +2 -10
  1285. package/dist/modes/interactive/components/usage-action-selector.js.map +1 -1
  1286. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  1287. package/dist/modes/interactive/components/user-message-selector.js +3 -6
  1288. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  1289. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  1290. package/dist/modes/interactive/components/user-message.js +0 -1
  1291. package/dist/modes/interactive/components/user-message.js.map +1 -1
  1292. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
  1293. package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
  1294. package/dist/modes/interactive/config-backup.d.ts.map +1 -1
  1295. package/dist/modes/interactive/config-backup.js.map +1 -1
  1296. package/dist/modes/interactive/editor-overlay-host.d.ts.map +1 -1
  1297. package/dist/modes/interactive/editor-overlay-host.js +0 -3
  1298. package/dist/modes/interactive/editor-overlay-host.js.map +1 -1
  1299. package/dist/modes/interactive/extension-ui-host.d.ts +2 -0
  1300. package/dist/modes/interactive/extension-ui-host.d.ts.map +1 -1
  1301. package/dist/modes/interactive/extension-ui-host.js +51 -72
  1302. package/dist/modes/interactive/extension-ui-host.js.map +1 -1
  1303. package/dist/modes/interactive/external-editor.d.ts.map +1 -1
  1304. package/dist/modes/interactive/external-editor.js +2 -15
  1305. package/dist/modes/interactive/external-editor.js.map +1 -1
  1306. package/dist/modes/interactive/history-reload-math.d.ts.map +1 -1
  1307. package/dist/modes/interactive/history-reload-math.js.map +1 -1
  1308. package/dist/modes/interactive/interactive-event-controller.d.ts.map +1 -1
  1309. package/dist/modes/interactive/interactive-event-controller.js +23 -16
  1310. package/dist/modes/interactive/interactive-event-controller.js.map +1 -1
  1311. package/dist/modes/interactive/interactive-mode.d.ts +13 -4
  1312. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  1313. package/dist/modes/interactive/interactive-mode.js +123 -204
  1314. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  1315. package/dist/modes/interactive/interactive-selection-prompts.d.ts +20 -0
  1316. package/dist/modes/interactive/interactive-selection-prompts.d.ts.map +1 -0
  1317. package/dist/modes/interactive/interactive-selection-prompts.js +43 -0
  1318. package/dist/modes/interactive/interactive-selection-prompts.js.map +1 -0
  1319. package/dist/modes/interactive/key-handlers.d.ts +2 -1
  1320. package/dist/modes/interactive/key-handlers.d.ts.map +1 -1
  1321. package/dist/modes/interactive/key-handlers.js +4 -2
  1322. package/dist/modes/interactive/key-handlers.js.map +1 -1
  1323. package/dist/modes/interactive/loaded-resources-view.d.ts.map +1 -1
  1324. package/dist/modes/interactive/loaded-resources-view.js.map +1 -1
  1325. package/dist/modes/interactive/local-model-commands.d.ts.map +1 -1
  1326. package/dist/modes/interactive/local-model-commands.js +4 -9
  1327. package/dist/modes/interactive/local-model-commands.js.map +1 -1
  1328. package/dist/modes/interactive/model-fitness-presentation.d.ts +21 -0
  1329. package/dist/modes/interactive/model-fitness-presentation.d.ts.map +1 -0
  1330. package/dist/modes/interactive/model-fitness-presentation.js +13 -0
  1331. package/dist/modes/interactive/model-fitness-presentation.js.map +1 -0
  1332. package/dist/modes/interactive/profile-menu-controller.d.ts +2 -0
  1333. package/dist/modes/interactive/profile-menu-controller.d.ts.map +1 -1
  1334. package/dist/modes/interactive/profile-menu-controller.js +79 -171
  1335. package/dist/modes/interactive/profile-menu-controller.js.map +1 -1
  1336. package/dist/modes/interactive/report-commands.d.ts +2 -0
  1337. package/dist/modes/interactive/report-commands.d.ts.map +1 -1
  1338. package/dist/modes/interactive/report-commands.js +12 -6
  1339. package/dist/modes/interactive/report-commands.js.map +1 -1
  1340. package/dist/modes/interactive/resource-display.d.ts.map +1 -1
  1341. package/dist/modes/interactive/resource-display.js.map +1 -1
  1342. package/dist/modes/interactive/resource-shell-commands.d.ts.map +1 -1
  1343. package/dist/modes/interactive/resource-shell-commands.js +6 -23
  1344. package/dist/modes/interactive/resource-shell-commands.js.map +1 -1
  1345. package/dist/modes/interactive/session-flow-commands.d.ts.map +1 -1
  1346. package/dist/modes/interactive/session-flow-commands.js +21 -25
  1347. package/dist/modes/interactive/session-flow-commands.js.map +1 -1
  1348. package/dist/modes/interactive/session-io-commands.d.ts.map +1 -1
  1349. package/dist/modes/interactive/session-io-commands.js.map +1 -1
  1350. package/dist/modes/interactive/session-replacement-errors.d.ts.map +1 -1
  1351. package/dist/modes/interactive/session-replacement-errors.js.map +1 -1
  1352. package/dist/modes/interactive/settings-selector-flow.d.ts.map +1 -1
  1353. package/dist/modes/interactive/settings-selector-flow.js.map +1 -1
  1354. package/dist/modes/interactive/signal-lifecycle.d.ts.map +1 -1
  1355. package/dist/modes/interactive/signal-lifecycle.js.map +1 -1
  1356. package/dist/modes/interactive/startup-checks.d.ts.map +1 -1
  1357. package/dist/modes/interactive/startup-checks.js +12 -8
  1358. package/dist/modes/interactive/startup-checks.js.map +1 -1
  1359. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  1360. package/dist/modes/interactive/theme/theme.js +10 -76
  1361. package/dist/modes/interactive/theme/theme.js.map +1 -1
  1362. package/dist/modes/interactive/usage-commands.d.ts.map +1 -1
  1363. package/dist/modes/interactive/usage-commands.js.map +1 -1
  1364. package/dist/modes/print-mode.d.ts.map +1 -1
  1365. package/dist/modes/print-mode.js +5 -22
  1366. package/dist/modes/print-mode.js.map +1 -1
  1367. package/dist/modes/rpc/jsonl.d.ts.map +1 -1
  1368. package/dist/modes/rpc/jsonl.js +1 -1
  1369. package/dist/modes/rpc/jsonl.js.map +1 -1
  1370. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  1371. package/dist/modes/rpc/rpc-client.js +7 -8
  1372. package/dist/modes/rpc/rpc-client.js.map +1 -1
  1373. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  1374. package/dist/modes/rpc/rpc-mode.js +5 -20
  1375. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  1376. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  1377. package/dist/modes/rpc/rpc-types.js.map +1 -1
  1378. package/dist/modes/termination-signals.d.ts +4 -0
  1379. package/dist/modes/termination-signals.d.ts.map +1 -0
  1380. package/dist/modes/termination-signals.js +21 -0
  1381. package/dist/modes/termination-signals.js.map +1 -0
  1382. package/dist/package-manager-cli.d.ts.map +1 -1
  1383. package/dist/package-manager-cli.js.map +1 -1
  1384. package/dist/utils/ansi-colors.d.ts +5 -0
  1385. package/dist/utils/ansi-colors.d.ts.map +1 -0
  1386. package/dist/utils/ansi-colors.js +38 -0
  1387. package/dist/utils/ansi-colors.js.map +1 -0
  1388. package/dist/utils/ansi.d.ts.map +1 -1
  1389. package/dist/utils/ansi.js.map +1 -1
  1390. package/dist/utils/changelog.d.ts.map +1 -1
  1391. package/dist/utils/changelog.js.map +1 -1
  1392. package/dist/utils/child-process.d.ts.map +1 -1
  1393. package/dist/utils/child-process.js.map +1 -1
  1394. package/dist/utils/clipboard-image.d.ts.map +1 -1
  1395. package/dist/utils/clipboard-image.js.map +1 -1
  1396. package/dist/utils/clipboard-native.d.ts.map +1 -1
  1397. package/dist/utils/clipboard-native.js.map +1 -1
  1398. package/dist/utils/clipboard.d.ts.map +1 -1
  1399. package/dist/utils/clipboard.js.map +1 -1
  1400. package/dist/utils/deprecation.d.ts.map +1 -1
  1401. package/dist/utils/deprecation.js.map +1 -1
  1402. package/dist/utils/exif-orientation.d.ts.map +1 -1
  1403. package/dist/utils/exif-orientation.js.map +1 -1
  1404. package/dist/utils/external-editor-command.d.ts.map +1 -1
  1405. package/dist/utils/external-editor-command.js.map +1 -1
  1406. package/dist/utils/frontmatter.d.ts.map +1 -1
  1407. package/dist/utils/frontmatter.js.map +1 -1
  1408. package/dist/utils/fs-watch.d.ts.map +1 -1
  1409. package/dist/utils/fs-watch.js.map +1 -1
  1410. package/dist/utils/git.d.ts.map +1 -1
  1411. package/dist/utils/git.js +20 -28
  1412. package/dist/utils/git.js.map +1 -1
  1413. package/dist/utils/highlight-js-languages.d.ts.map +1 -1
  1414. package/dist/utils/html.d.ts.map +1 -1
  1415. package/dist/utils/html.js.map +1 -1
  1416. package/dist/utils/image-convert.d.ts.map +1 -1
  1417. package/dist/utils/image-convert.js.map +1 -1
  1418. package/dist/utils/image-resize-core.d.ts.map +1 -1
  1419. package/dist/utils/image-resize-core.js.map +1 -1
  1420. package/dist/utils/image-resize-worker.d.ts.map +1 -1
  1421. package/dist/utils/image-resize-worker.js.map +1 -1
  1422. package/dist/utils/image-resize.d.ts.map +1 -1
  1423. package/dist/utils/image-resize.js.map +1 -1
  1424. package/dist/utils/json.d.ts.map +1 -1
  1425. package/dist/utils/json.js.map +1 -1
  1426. package/dist/utils/mime.d.ts.map +1 -1
  1427. package/dist/utils/mime.js.map +1 -1
  1428. package/dist/utils/open-browser.d.ts.map +1 -1
  1429. package/dist/utils/open-browser.js.map +1 -1
  1430. package/dist/utils/paths.d.ts.map +1 -1
  1431. package/dist/utils/paths.js.map +1 -1
  1432. package/dist/utils/photon.d.ts.map +1 -1
  1433. package/dist/utils/photon.js.map +1 -1
  1434. package/dist/utils/pi-user-agent.d.ts.map +1 -1
  1435. package/dist/utils/pi-user-agent.js.map +1 -1
  1436. package/dist/utils/platform.d.ts.map +1 -1
  1437. package/dist/utils/platform.js.map +1 -1
  1438. package/dist/utils/process-memory.d.ts.map +1 -1
  1439. package/dist/utils/process-memory.js.map +1 -1
  1440. package/dist/utils/safe-write-stream.d.ts.map +1 -1
  1441. package/dist/utils/safe-write-stream.js.map +1 -1
  1442. package/dist/utils/shell.d.ts.map +1 -1
  1443. package/dist/utils/shell.js.map +1 -1
  1444. package/dist/utils/sleep.d.ts.map +1 -1
  1445. package/dist/utils/sleep.js +2 -15
  1446. package/dist/utils/sleep.js.map +1 -1
  1447. package/dist/utils/stdin-events.d.ts +8 -0
  1448. package/dist/utils/stdin-events.d.ts.map +1 -0
  1449. package/dist/utils/stdin-events.js +19 -0
  1450. package/dist/utils/stdin-events.js.map +1 -0
  1451. package/dist/utils/syntax-highlight.d.ts.map +1 -1
  1452. package/dist/utils/syntax-highlight.js +20 -13
  1453. package/dist/utils/syntax-highlight.js.map +1 -1
  1454. package/dist/utils/tools-manager.d.ts.map +1 -1
  1455. package/dist/utils/tools-manager.js.map +1 -1
  1456. package/dist/utils/version-check.d.ts.map +1 -1
  1457. package/dist/utils/version-check.js.map +1 -1
  1458. package/dist/utils/windows-self-update.d.ts.map +1 -1
  1459. package/dist/utils/windows-self-update.js.map +1 -1
  1460. package/dist/utils/work-directory.d.ts.map +1 -1
  1461. package/dist/utils/work-directory.js.map +1 -1
  1462. package/docs/compaction.md +11 -3
  1463. package/docs/sessions.md +6 -0
  1464. package/docs/settings.md +1 -1
  1465. package/docs/tool-repair.md +3 -0
  1466. package/docs/windows.md +29 -2
  1467. package/docs/work-directory.md +9 -1
  1468. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  1469. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  1470. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  1471. package/examples/extensions/sandbox/package-lock.json +2 -2
  1472. package/examples/extensions/sandbox/package.json +1 -1
  1473. package/examples/extensions/with-deps/package-lock.json +2 -2
  1474. package/examples/extensions/with-deps/package.json +1 -1
  1475. package/npm-shrinkwrap.json +16 -16
  1476. package/package.json +10 -10
  1477. package/dist/utils/streaming-lines.d.ts +0 -20
  1478. package/dist/utils/streaming-lines.d.ts.map +0 -1
  1479. package/dist/utils/streaming-lines.js +0 -79
  1480. package/dist/utils/streaming-lines.js.map +0 -1
@@ -1,14 +1,26 @@
1
1
  import { createHash, randomUUID } from "node:crypto";
2
- import { existsSync, readdirSync, readFileSync, statSync, unlinkSync } from "node:fs";
2
+ import { existsSync, statSync, unlinkSync } from "node:fs";
3
3
  import { join } from "node:path";
4
- import { stateFile } from "../agent-paths.js";
4
+ import { orchestrationEventStoreDir } from "../agent-paths.js";
5
5
  import { withFileLockSync, writeFileAtomicSync } from "../util/atomic-file.js";
6
+ import { readBoundedDirectoryNamesSync, readBoundedTextFileSync } from "../util/bounded-file.js";
6
7
  import { isOrchestrationEvent, ORCHESTRATION_SCHEMA_VERSION, } from "./contracts.js";
7
8
  const EVENT_FILE_PATTERN = /^(\d{16})\.json$/;
8
9
  const SNAPSHOT_FILE_PATTERN = /^(\d{16})\.json$/;
9
10
  const DEFAULT_MAX_TAIL_EVENTS = 256;
10
11
  const DEFAULT_MAX_TAIL_BYTES = 4 * 1024 * 1024;
11
12
  const DEFAULT_MAX_IDEMPOTENCY_EVENTS = 512;
13
+ const MAX_CONFIGURED_TAIL_EVENTS = 1_024;
14
+ const MAX_CONFIGURED_TAIL_BYTES = 16 * 1024 * 1024;
15
+ const MAX_CONFIGURED_IDEMPOTENCY_EVENTS = 1_024;
16
+ const MAX_EVENT_DIRECTORY_ENTRIES = 2_048;
17
+ const MAX_IDEMPOTENCY_DIRECTORY_ENTRIES = 2_048;
18
+ const MAX_SNAPSHOT_DIRECTORY_ENTRIES = 8;
19
+ const MAX_CURSOR_BYTES = 64 * 1024;
20
+ const MAX_BASELINE_BYTES = 64 * 1024;
21
+ const MAX_IDEMPOTENCY_MARKER_BYTES = 64 * 1024;
22
+ /** Full current task state plus retained idempotency evidence; intentionally above the 16MiB tail cap. */
23
+ const MAX_PROJECTION_SNAPSHOT_BYTES = 32 * 1024 * 1024;
12
24
  export class OrchestrationEventStoreError extends Error {
13
25
  constructor(message) {
14
26
  super(message);
@@ -22,23 +34,24 @@ export class OrchestrationConcurrencyError extends OrchestrationEventStoreError
22
34
  }
23
35
  }
24
36
  export class OrchestrationSnapshotRequiredError extends OrchestrationEventStoreError {
25
- throughOrdinal;
26
37
  constructor(throughOrdinal) {
27
38
  super(`Orchestration projection snapshot through ordinal ${throughOrdinal} is required.`);
28
39
  this.name = "OrchestrationSnapshotRequiredError";
29
40
  this.throughOrdinal = throughOrdinal;
30
41
  }
31
42
  }
32
- function safeSessionDirectoryName(sessionId) {
33
- const readable = encodeURIComponent(sessionId).replaceAll("%", "_").slice(0, 80) || "session";
34
- const digest = createHash("sha256").update(sessionId).digest("hex").slice(0, 16);
35
- return `${readable}-${digest}`;
36
- }
37
43
  function parseCursor(filePath) {
38
44
  if (!existsSync(filePath))
39
45
  return undefined;
46
+ let content;
40
47
  try {
41
- const parsed = JSON.parse(readFileSync(filePath, "utf-8"));
48
+ content = readBoundedTextFileSync(filePath, MAX_CURSOR_BYTES, "Orchestration cursor");
49
+ }
50
+ catch (error) {
51
+ throw new OrchestrationEventStoreError(`Failed to read orchestration cursor: ${error instanceof Error ? error.message : String(error)}`);
52
+ }
53
+ try {
54
+ const parsed = JSON.parse(content);
42
55
  if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
43
56
  return undefined;
44
57
  const record = parsed;
@@ -61,17 +74,26 @@ function parseCursor(filePath) {
61
74
  function serialize(value) {
62
75
  return `${JSON.stringify(value, null, "\t")}\n`;
63
76
  }
77
+ function serializeBounded(value, maxBytes, label, oversizedMessage = `${label} exceeds its byte limit.`) {
78
+ const serialized = serialize(value);
79
+ if (Buffer.byteLength(serialized, "utf-8") > maxBytes) {
80
+ throw new OrchestrationEventStoreError(oversizedMessage);
81
+ }
82
+ return serialized;
83
+ }
64
84
  function eventFileName(ordinal) {
65
85
  return `${String(ordinal).padStart(16, "0")}.json`;
66
86
  }
67
87
  function snapshotDigest(content) {
68
88
  return createHash("sha256").update(JSON.stringify(content)).digest("hex");
69
89
  }
70
- function positiveSafeInteger(value, fallback, label) {
90
+ function positiveSafeInteger(value, fallback, maximum, label) {
71
91
  const resolved = value ?? fallback;
72
92
  if (!Number.isSafeInteger(resolved) || resolved < 1) {
73
93
  throw new OrchestrationEventStoreError(`${label} must be a positive safe integer.`);
74
94
  }
95
+ if (resolved > maximum)
96
+ throw new OrchestrationEventStoreError(`${label} must not exceed ${maximum}.`);
75
97
  return resolved;
76
98
  }
77
99
  /**
@@ -81,21 +103,9 @@ function positiveSafeInteger(value, fallback, label) {
81
103
  * or the new verified snapshot authoritative; ordinals never reset.
82
104
  */
83
105
  export class OrchestrationEventStore {
84
- rootDir;
85
- eventsDir;
86
- idempotencyDir;
87
- cursorPath;
88
- snapshotsDir;
89
- baselinePath;
90
- now;
91
- createEventId;
92
- maxTailEvents;
93
- maxTailBytes;
94
- maxIdempotencyEvents;
95
- listeners = new Set();
96
- verifiedSnapshotBaseline;
97
106
  constructor(options) {
98
- this.rootDir = stateFile(options.agentDir, "orchestration", safeSessionDirectoryName(options.sessionId));
107
+ this.listeners = new Set();
108
+ this.rootDir = orchestrationEventStoreDir(options.agentDir, options.sessionId);
99
109
  this.eventsDir = join(this.rootDir, "events");
100
110
  this.idempotencyDir = join(this.rootDir, "idempotency");
101
111
  this.cursorPath = join(this.rootDir, "cursor.json");
@@ -103,9 +113,9 @@ export class OrchestrationEventStore {
103
113
  this.baselinePath = join(this.rootDir, "projection-baseline.json");
104
114
  this.now = options.now ?? (() => new Date().toISOString());
105
115
  this.createEventId = options.createEventId ?? randomUUID;
106
- this.maxTailEvents = positiveSafeInteger(options.maxTailEvents, DEFAULT_MAX_TAIL_EVENTS, "maxTailEvents");
107
- this.maxTailBytes = positiveSafeInteger(options.maxTailBytes, DEFAULT_MAX_TAIL_BYTES, "maxTailBytes");
108
- this.maxIdempotencyEvents = positiveSafeInteger(options.maxIdempotencyEvents, DEFAULT_MAX_IDEMPOTENCY_EVENTS, "maxIdempotencyEvents");
116
+ this.maxTailEvents = positiveSafeInteger(options.maxTailEvents, DEFAULT_MAX_TAIL_EVENTS, MAX_CONFIGURED_TAIL_EVENTS, "maxTailEvents");
117
+ this.maxTailBytes = positiveSafeInteger(options.maxTailBytes, DEFAULT_MAX_TAIL_BYTES, MAX_CONFIGURED_TAIL_BYTES, "maxTailBytes");
118
+ this.maxIdempotencyEvents = positiveSafeInteger(options.maxIdempotencyEvents, DEFAULT_MAX_IDEMPOTENCY_EVENTS, MAX_CONFIGURED_IDEMPOTENCY_EVENTS, "maxIdempotencyEvents");
109
119
  }
110
120
  append(input, options = {}) {
111
121
  const committed = withFileLockSync(this.cursorPath, () => {
@@ -135,15 +145,20 @@ export class OrchestrationEventStore {
135
145
  ...(input.idempotencyKey ? { idempotencyKey: input.idempotencyKey } : {}),
136
146
  payload: structuredClone(input.payload),
137
147
  };
138
- const serializedEvent = serialize(next);
139
- writeFileAtomicSync(join(this.eventsDir, eventFileName(ordinal)), serializedEvent);
140
- if (input.idempotencyKey)
141
- this.writeIdempotencyMarkerUnlocked(input.idempotencyKey, ordinal);
142
- writeFileAtomicSync(this.cursorPath, serialize({
148
+ const serializedEvent = serializeBounded(next, this.maxTailBytes, "Orchestration event", "Orchestration event exceeds its configured tail byte limit.");
149
+ const serializedMarker = input.idempotencyKey
150
+ ? this.serializeIdempotencyMarker(input.idempotencyKey, ordinal)
151
+ : undefined;
152
+ const serializedCursor = serializeBounded({
143
153
  version: 1,
144
154
  lastOrdinal: ordinal,
145
155
  tailBytes: cursor.tailBytes + Buffer.byteLength(serializedEvent),
146
- }));
156
+ }, MAX_CURSOR_BYTES, "Orchestration cursor");
157
+ writeFileAtomicSync(join(this.eventsDir, eventFileName(ordinal)), serializedEvent);
158
+ if (input.idempotencyKey && serializedMarker) {
159
+ this.writeIdempotencyMarkerUnlocked(input.idempotencyKey, serializedMarker);
160
+ }
161
+ writeFileAtomicSync(this.cursorPath, serializedCursor);
147
162
  return { event: next, appended: true };
148
163
  });
149
164
  if (committed.appended) {
@@ -229,8 +244,11 @@ export class OrchestrationEventStore {
229
244
  };
230
245
  const digest = snapshotDigest(content);
231
246
  const snapshotFile = eventFileName(throughOrdinal);
232
- writeFileAtomicSync(join(this.snapshotsDir, snapshotFile), serialize({ ...content, digest }));
233
- writeFileAtomicSync(this.baselinePath, serialize({ version: 1, throughOrdinal, digest, snapshotFile }));
247
+ const serializedSnapshot = serializeBounded({ ...content, digest }, MAX_PROJECTION_SNAPSHOT_BYTES, "Orchestration projection snapshot");
248
+ const serializedBaseline = serializeBounded({ version: 1, throughOrdinal, digest, snapshotFile }, MAX_BASELINE_BYTES, "Orchestration snapshot baseline");
249
+ const serializedCursor = serializeBounded({ version: 1, lastOrdinal: throughOrdinal, tailBytes: 0 }, MAX_CURSOR_BYTES, "Orchestration cursor");
250
+ writeFileAtomicSync(join(this.snapshotsDir, snapshotFile), serializedSnapshot);
251
+ writeFileAtomicSync(this.baselinePath, serializedBaseline);
234
252
  for (const name of this.idempotencyFileNamesUnlocked()) {
235
253
  this.unlinkManagedFile(join(this.idempotencyDir, name));
236
254
  }
@@ -243,7 +261,7 @@ export class OrchestrationEventStore {
243
261
  if (name !== snapshotFile)
244
262
  this.unlinkManagedFile(join(this.snapshotsDir, name));
245
263
  }
246
- writeFileAtomicSync(this.cursorPath, serialize({ version: 1, lastOrdinal: throughOrdinal, tailBytes: 0 }));
264
+ writeFileAtomicSync(this.cursorPath, serializedCursor);
247
265
  return true;
248
266
  });
249
267
  }
@@ -275,7 +293,7 @@ export class OrchestrationEventStore {
275
293
  }
276
294
  eventFileNamesUnlocked() {
277
295
  try {
278
- return readdirSync(this.eventsDir)
296
+ return readBoundedDirectoryNamesSync(this.eventsDir, MAX_EVENT_DIRECTORY_ENTRIES, "Orchestration events directory")
279
297
  .filter((candidate) => EVENT_FILE_PATTERN.test(candidate))
280
298
  .sort();
281
299
  }
@@ -287,20 +305,24 @@ export class OrchestrationEventStore {
287
305
  }
288
306
  idempotencyFileNamesUnlocked() {
289
307
  try {
290
- return readdirSync(this.idempotencyDir).filter((candidate) => candidate.endsWith(".json"));
308
+ return readBoundedDirectoryNamesSync(this.idempotencyDir, MAX_IDEMPOTENCY_DIRECTORY_ENTRIES, "Orchestration idempotency directory").filter((candidate) => candidate.endsWith(".json"));
291
309
  }
292
- catch {
293
- return [];
310
+ catch (error) {
311
+ if (error.code === "ENOENT")
312
+ return [];
313
+ throw error;
294
314
  }
295
315
  }
296
316
  snapshotFileNamesUnlocked() {
297
317
  try {
298
- return readdirSync(this.snapshotsDir)
318
+ return readBoundedDirectoryNamesSync(this.snapshotsDir, MAX_SNAPSHOT_DIRECTORY_ENTRIES, "Orchestration snapshots directory")
299
319
  .filter((candidate) => SNAPSHOT_FILE_PATTERN.test(candidate))
300
320
  .sort();
301
321
  }
302
- catch {
303
- return [];
322
+ catch (error) {
323
+ if (error.code === "ENOENT")
324
+ return [];
325
+ throw error;
304
326
  }
305
327
  }
306
328
  /** Event files are a contiguous append-only tail after the published snapshot. */
@@ -332,7 +354,7 @@ export class OrchestrationEventStore {
332
354
  return undefined;
333
355
  let parsed;
334
356
  try {
335
- parsed = JSON.parse(readFileSync(this.baselinePath, "utf-8"));
357
+ parsed = JSON.parse(readBoundedTextFileSync(this.baselinePath, MAX_BASELINE_BYTES, "Orchestration snapshot baseline"));
336
358
  }
337
359
  catch (error) {
338
360
  throw new OrchestrationEventStoreError(`Failed to parse orchestration snapshot baseline: ${error instanceof Error ? error.message : String(error)}`);
@@ -364,7 +386,7 @@ export class OrchestrationEventStore {
364
386
  return undefined;
365
387
  let parsed;
366
388
  try {
367
- parsed = JSON.parse(readFileSync(join(this.snapshotsDir, baseline.snapshotFile), "utf-8"));
389
+ parsed = JSON.parse(readBoundedTextFileSync(join(this.snapshotsDir, baseline.snapshotFile), MAX_PROJECTION_SNAPSHOT_BYTES, "Orchestration projection snapshot"));
368
390
  }
369
391
  catch (error) {
370
392
  throw new OrchestrationEventStoreError(`Failed to parse orchestration projection snapshot: ${error instanceof Error ? error.message : String(error)}`);
@@ -381,6 +403,7 @@ export class OrchestrationEventStore {
381
403
  typeof snapshot.projection !== "object" ||
382
404
  Array.isArray(snapshot.projection) ||
383
405
  !Array.isArray(snapshot.idempotencyEvents) ||
406
+ snapshot.idempotencyEvents.length > this.maxIdempotencyEvents ||
384
407
  !snapshot.idempotencyEvents.every(isOrchestrationEvent) ||
385
408
  !snapshot.idempotencyEvents.every((event) => event.ordinal <= baseline.throughOrdinal && event.idempotencyKey !== undefined) ||
386
409
  new Set(snapshot.idempotencyEvents.map((event) => event.idempotencyKey)).size !==
@@ -459,7 +482,7 @@ export class OrchestrationEventStore {
459
482
  readEventFileUnlocked(name) {
460
483
  let parsed;
461
484
  try {
462
- parsed = JSON.parse(readFileSync(join(this.eventsDir, name), "utf-8"));
485
+ parsed = JSON.parse(readBoundedTextFileSync(join(this.eventsDir, name), this.maxTailBytes, `Orchestration event ${name}`));
463
486
  }
464
487
  catch (error) {
465
488
  throw new OrchestrationEventStoreError(`Failed to parse orchestration event ${name}: ${error instanceof Error ? error.message : String(error)}`);
@@ -472,8 +495,11 @@ export class OrchestrationEventStore {
472
495
  idempotencyPath(key) {
473
496
  return join(this.idempotencyDir, `${createHash("sha256").update(key).digest("hex")}.json`);
474
497
  }
475
- writeIdempotencyMarkerUnlocked(key, ordinal) {
476
- writeFileAtomicSync(this.idempotencyPath(key), serialize({ version: 1, key, ordinal }));
498
+ serializeIdempotencyMarker(key, ordinal) {
499
+ return serializeBounded({ version: 1, key, ordinal }, MAX_IDEMPOTENCY_MARKER_BYTES, "Orchestration idempotency marker");
500
+ }
501
+ writeIdempotencyMarkerUnlocked(key, serializedMarker) {
502
+ writeFileAtomicSync(this.idempotencyPath(key), serializedMarker);
477
503
  }
478
504
  readIdempotentEventUnlocked(key) {
479
505
  const markerPath = this.idempotencyPath(key);
@@ -482,7 +508,7 @@ export class OrchestrationEventStore {
482
508
  }
483
509
  let parsed;
484
510
  try {
485
- parsed = JSON.parse(readFileSync(markerPath, "utf-8"));
511
+ parsed = JSON.parse(readBoundedTextFileSync(markerPath, MAX_IDEMPOTENCY_MARKER_BYTES, "Orchestration idempotency marker"));
486
512
  }
487
513
  catch (error) {
488
514
  throw new OrchestrationEventStoreError(`Failed to parse orchestration idempotency marker: ${error instanceof Error ? error.message : String(error)}`);
@@ -539,8 +565,9 @@ export class OrchestrationEventStore {
539
565
  if (event.ordinal !== ordinal) {
540
566
  throw new OrchestrationEventStoreError(`Event ordinal does not match file name: ${name}`);
541
567
  }
542
- if (event.idempotencyKey)
543
- this.writeIdempotencyMarkerUnlocked(event.idempotencyKey, ordinal);
568
+ if (event.idempotencyKey) {
569
+ this.writeIdempotencyMarkerUnlocked(event.idempotencyKey, this.serializeIdempotencyMarker(event.idempotencyKey, ordinal));
570
+ }
544
571
  }
545
572
  const tailBytes = names.reduce((total, name) => {
546
573
  const ordinal = Number(EVENT_FILE_PATTERN.exec(name)?.[1] ?? 0);
@@ -553,7 +580,7 @@ export class OrchestrationEventStore {
553
580
  return total;
554
581
  }
555
582
  }, 0);
556
- writeFileAtomicSync(this.cursorPath, serialize({ version: 1, lastOrdinal: highest, tailBytes }));
583
+ writeFileAtomicSync(this.cursorPath, serializeBounded({ version: 1, lastOrdinal: highest, tailBytes }, MAX_CURSOR_BYTES, "Orchestration cursor"));
557
584
  return { lastOrdinal: highest, tailBytes };
558
585
  }
559
586
  }
@@ -1 +1 @@
1
- {"version":3,"file":"event-store.js","sourceRoot":"","sources":["../../../src/core/orchestration/event-store.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash, randomUUID } from \"node:crypto\";\nimport { existsSync, readdirSync, readFileSync, statSync, unlinkSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { stateFile } from \"../agent-paths.ts\";\nimport type { JsonObject } from \"../autonomy/contracts.ts\";\nimport { withFileLockSync, writeFileAtomicSync } from \"../util/atomic-file.ts\";\nimport {\n\ttype AppendOrchestrationEventInput,\n\tisOrchestrationEvent,\n\tORCHESTRATION_SCHEMA_VERSION,\n\ttype OrchestrationEvent,\n} from \"./contracts.ts\";\n\nconst EVENT_FILE_PATTERN = /^(\\d{16})\\.json$/;\nconst SNAPSHOT_FILE_PATTERN = /^(\\d{16})\\.json$/;\nconst DEFAULT_MAX_TAIL_EVENTS = 256;\nconst DEFAULT_MAX_TAIL_BYTES = 4 * 1024 * 1024;\nconst DEFAULT_MAX_IDEMPOTENCY_EVENTS = 512;\n\ninterface EventCursor {\n\tversion: 1;\n\tlastOrdinal: number;\n\ttailBytes?: number;\n}\n\ninterface SynchronizedIndexes {\n\tlastOrdinal: number;\n\ttailBytes: number;\n}\n\ninterface IdempotencyMarker {\n\tversion: 1;\n\tkey: string;\n\tordinal: number;\n}\n\ninterface ProjectionSnapshotContent {\n\tversion: 1;\n\tschemaVersion: typeof ORCHESTRATION_SCHEMA_VERSION;\n\tthroughOrdinal: number;\n\tcreatedAt: string;\n\tprojection: JsonObject;\n\tidempotencyEvents: OrchestrationEvent[];\n}\n\ninterface ProjectionSnapshot extends ProjectionSnapshotContent {\n\tdigest: string;\n}\n\ninterface SnapshotBaseline {\n\tversion: 1;\n\tthroughOrdinal: number;\n\tdigest: string;\n\tsnapshotFile: string;\n}\n\ninterface SnapshotFileSignature {\n\tsize: number;\n\tmtimeMs: number;\n\tctimeMs: number;\n}\n\ninterface VerifiedSnapshotBaseline {\n\tbaseline: SnapshotBaseline;\n\tsignature: SnapshotFileSignature;\n}\n\nexport interface OrchestrationEventStoreOptions {\n\tagentDir: string;\n\tsessionId: string;\n\tnow?: () => string;\n\tcreateEventId?: () => string;\n\tmaxTailEvents?: number;\n\tmaxTailBytes?: number;\n\tmaxIdempotencyEvents?: number;\n}\n\nexport class OrchestrationEventStoreError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"OrchestrationEventStoreError\";\n\t}\n}\n\nexport class OrchestrationConcurrencyError extends OrchestrationEventStoreError {\n\tconstructor(expected: number, actual: number) {\n\t\tsuper(`Orchestration event cursor changed: expected ${expected}, actual ${actual}.`);\n\t\tthis.name = \"OrchestrationConcurrencyError\";\n\t}\n}\n\nexport class OrchestrationSnapshotRequiredError extends OrchestrationEventStoreError {\n\treadonly throughOrdinal: number;\n\n\tconstructor(throughOrdinal: number) {\n\t\tsuper(`Orchestration projection snapshot through ordinal ${throughOrdinal} is required.`);\n\t\tthis.name = \"OrchestrationSnapshotRequiredError\";\n\t\tthis.throughOrdinal = throughOrdinal;\n\t}\n}\n\nfunction safeSessionDirectoryName(sessionId: string): string {\n\tconst readable = encodeURIComponent(sessionId).replaceAll(\"%\", \"_\").slice(0, 80) || \"session\";\n\tconst digest = createHash(\"sha256\").update(sessionId).digest(\"hex\").slice(0, 16);\n\treturn `${readable}-${digest}`;\n}\n\nfunction parseCursor(filePath: string): EventCursor | undefined {\n\tif (!existsSync(filePath)) return undefined;\n\ttry {\n\t\tconst parsed: unknown = JSON.parse(readFileSync(filePath, \"utf-8\"));\n\t\tif (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) return undefined;\n\t\tconst record = parsed as Record<string, unknown>;\n\t\tif (record.version !== 1 || !Number.isSafeInteger(record.lastOrdinal) || Number(record.lastOrdinal) < 0) {\n\t\t\treturn undefined;\n\t\t}\n\t\tif (record.tailBytes !== undefined && (!Number.isSafeInteger(record.tailBytes) || Number(record.tailBytes) < 0)) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn {\n\t\t\tversion: 1,\n\t\t\tlastOrdinal: Number(record.lastOrdinal),\n\t\t\t...(record.tailBytes !== undefined ? { tailBytes: Number(record.tailBytes) } : {}),\n\t\t};\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nfunction serialize(value: unknown): string {\n\treturn `${JSON.stringify(value, null, \"\\t\")}\\n`;\n}\n\nfunction eventFileName(ordinal: number): string {\n\treturn `${String(ordinal).padStart(16, \"0\")}.json`;\n}\n\nfunction snapshotDigest(content: ProjectionSnapshotContent): string {\n\treturn createHash(\"sha256\").update(JSON.stringify(content)).digest(\"hex\");\n}\n\nfunction positiveSafeInteger(value: number | undefined, fallback: number, label: string): number {\n\tconst resolved = value ?? fallback;\n\tif (!Number.isSafeInteger(resolved) || resolved < 1) {\n\t\tthrow new OrchestrationEventStoreError(`${label} must be a positive safe integer.`);\n\t}\n\treturn resolved;\n}\n\n/**\n * Append-only event tail with a replaceable full-state projection snapshot. Atomic rename prevents\n * torn records. Snapshot publication is two-phase (payload, then small baseline pointer), after which\n * covered event/idempotency files are pruned. A crash at any point leaves either the old replay prefix\n * or the new verified snapshot authoritative; ordinals never reset.\n */\nexport class OrchestrationEventStore {\n\treadonly rootDir: string;\n\treadonly eventsDir: string;\n\treadonly idempotencyDir: string;\n\treadonly cursorPath: string;\n\treadonly snapshotsDir: string;\n\treadonly baselinePath: string;\n\tprivate readonly now: () => string;\n\tprivate readonly createEventId: () => string;\n\tprivate readonly maxTailEvents: number;\n\tprivate readonly maxTailBytes: number;\n\tprivate readonly maxIdempotencyEvents: number;\n\tprivate readonly listeners = new Set<(event: OrchestrationEvent) => void>();\n\tprivate verifiedSnapshotBaseline: VerifiedSnapshotBaseline | undefined;\n\n\tconstructor(options: OrchestrationEventStoreOptions) {\n\t\tthis.rootDir = stateFile(options.agentDir, \"orchestration\", safeSessionDirectoryName(options.sessionId));\n\t\tthis.eventsDir = join(this.rootDir, \"events\");\n\t\tthis.idempotencyDir = join(this.rootDir, \"idempotency\");\n\t\tthis.cursorPath = join(this.rootDir, \"cursor.json\");\n\t\tthis.snapshotsDir = join(this.rootDir, \"snapshots\");\n\t\tthis.baselinePath = join(this.rootDir, \"projection-baseline.json\");\n\t\tthis.now = options.now ?? (() => new Date().toISOString());\n\t\tthis.createEventId = options.createEventId ?? randomUUID;\n\t\tthis.maxTailEvents = positiveSafeInteger(options.maxTailEvents, DEFAULT_MAX_TAIL_EVENTS, \"maxTailEvents\");\n\t\tthis.maxTailBytes = positiveSafeInteger(options.maxTailBytes, DEFAULT_MAX_TAIL_BYTES, \"maxTailBytes\");\n\t\tthis.maxIdempotencyEvents = positiveSafeInteger(\n\t\t\toptions.maxIdempotencyEvents,\n\t\t\tDEFAULT_MAX_IDEMPOTENCY_EVENTS,\n\t\t\t\"maxIdempotencyEvents\",\n\t\t);\n\t}\n\n\tappend(input: AppendOrchestrationEventInput, options: { expectedLastOrdinal?: number } = {}): OrchestrationEvent {\n\t\tconst committed = withFileLockSync(this.cursorPath, (): { event: OrchestrationEvent; appended: boolean } => {\n\t\t\tconst cursor = this.synchronizeIndexesUnlocked();\n\t\t\tconst actual = cursor.lastOrdinal;\n\t\t\tif (input.idempotencyKey) {\n\t\t\t\tconst existing = this.readIdempotentEventUnlocked(input.idempotencyKey);\n\t\t\t\tif (existing) return { event: existing, appended: false };\n\t\t\t}\n\t\t\tif (options.expectedLastOrdinal !== undefined) {\n\t\t\t\tif (actual !== options.expectedLastOrdinal) {\n\t\t\t\t\tthrow new OrchestrationConcurrencyError(options.expectedLastOrdinal, actual);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst ordinal = actual + 1;\n\t\t\tconst next: OrchestrationEvent = {\n\t\t\t\tschemaVersion: ORCHESTRATION_SCHEMA_VERSION,\n\t\t\t\tordinal,\n\t\t\t\teventId: this.createEventId(),\n\t\t\t\ttype: input.type,\n\t\t\t\taggregateId: input.aggregateId,\n\t\t\t\tactor: input.actor,\n\t\t\t\toccurredAt: this.now(),\n\t\t\t\t...(input.correlationId ? { correlationId: input.correlationId } : {}),\n\t\t\t\t...(input.causationId ? { causationId: input.causationId } : {}),\n\t\t\t\t...(input.idempotencyKey ? { idempotencyKey: input.idempotencyKey } : {}),\n\t\t\t\tpayload: structuredClone(input.payload),\n\t\t\t};\n\t\t\tconst serializedEvent = serialize(next);\n\t\t\twriteFileAtomicSync(join(this.eventsDir, eventFileName(ordinal)), serializedEvent);\n\t\t\tif (input.idempotencyKey) this.writeIdempotencyMarkerUnlocked(input.idempotencyKey, ordinal);\n\t\t\twriteFileAtomicSync(\n\t\t\t\tthis.cursorPath,\n\t\t\t\tserialize({\n\t\t\t\t\tversion: 1,\n\t\t\t\t\tlastOrdinal: ordinal,\n\t\t\t\t\ttailBytes: cursor.tailBytes + Buffer.byteLength(serializedEvent),\n\t\t\t\t} satisfies EventCursor),\n\t\t\t);\n\t\t\treturn { event: next, appended: true };\n\t\t});\n\n\t\tif (committed.appended) {\n\t\t\tfor (const listener of this.listeners) listener(structuredClone(committed.event));\n\t\t}\n\t\treturn structuredClone(committed.event);\n\t}\n\n\treadAll(): OrchestrationEvent[] {\n\t\treturn this.readAllUnlocked();\n\t}\n\n\treadAfter(ordinal: number): OrchestrationEvent[] {\n\t\tconst baseline = this.readBaselineUnlocked();\n\t\tif (baseline && ordinal < baseline.throughOrdinal) {\n\t\t\tthrow new OrchestrationSnapshotRequiredError(baseline.throughOrdinal);\n\t\t}\n\t\tconst events: OrchestrationEvent[] = [];\n\t\tconst names = this.eventFileNamesUnlocked();\n\t\tthis.assertReadableTailUnlocked(names, baseline?.throughOrdinal ?? 0);\n\t\tlet previousOrdinal = ordinal;\n\t\tfor (const name of names) {\n\t\t\tconst match = EVENT_FILE_PATTERN.exec(name);\n\t\t\tif (!match) continue;\n\t\t\tconst fileOrdinal = Number(match[1]);\n\t\t\tif (fileOrdinal <= ordinal) continue;\n\t\t\tconst event = this.readEventFileUnlocked(name);\n\t\t\tif (event.ordinal !== fileOrdinal || event.ordinal <= previousOrdinal) {\n\t\t\t\tthrow new OrchestrationEventStoreError(`Non-monotonic orchestration event ordinal in ${name}`);\n\t\t\t}\n\t\t\tpreviousOrdinal = event.ordinal;\n\t\t\tevents.push(structuredClone(event));\n\t\t}\n\t\treturn events;\n\t}\n\n\treadProjectionSnapshot(): { throughOrdinal: number; projection: JsonObject } | undefined {\n\t\tconst snapshot = this.readProjectionSnapshotUnlocked();\n\t\treturn snapshot\n\t\t\t? { throughOrdinal: snapshot.throughOrdinal, projection: structuredClone(snapshot.projection) }\n\t\t\t: undefined;\n\t}\n\n\t/** Replace a large replay prefix with one verified current-state snapshot and a bounded tail. */\n\tcompactIfNeeded(throughOrdinal: number, projection: () => JsonObject): boolean {\n\t\tconst baselineBeforeLock = this.readBaselineUnlocked()?.throughOrdinal ?? 0;\n\t\tconst cursorBeforeLock = parseCursor(this.cursorPath);\n\t\tif (\n\t\t\tcursorBeforeLock?.lastOrdinal === throughOrdinal &&\n\t\t\tcursorBeforeLock.tailBytes !== undefined &&\n\t\t\tthroughOrdinal - baselineBeforeLock < this.maxTailEvents &&\n\t\t\tcursorBeforeLock.tailBytes < this.maxTailBytes\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\treturn withFileLockSync(this.cursorPath, () => {\n\t\t\tconst cursor = this.synchronizeIndexesUnlocked();\n\t\t\tif (cursor.lastOrdinal !== throughOrdinal) return false;\n\t\t\tconst baselineOrdinal = this.readBaselineUnlocked()?.throughOrdinal ?? 0;\n\t\t\tconst tailNames = this.eventFileNamesUnlocked().filter(\n\t\t\t\t(name) => Number(EVENT_FILE_PATTERN.exec(name)?.[1] ?? 0) > baselineOrdinal,\n\t\t\t);\n\t\t\tif (tailNames.length < this.maxTailEvents && cursor.tailBytes < this.maxTailBytes) return false;\n\n\t\t\tconst retainedByKey = new Map<string, OrchestrationEvent>();\n\t\t\tfor (const event of this.readProjectionSnapshotUnlocked()?.idempotencyEvents ?? []) {\n\t\t\t\tif (event.idempotencyKey) retainedByKey.set(event.idempotencyKey, event);\n\t\t\t}\n\t\t\tfor (const name of tailNames) {\n\t\t\t\tconst event = this.readEventFileUnlocked(name);\n\t\t\t\tif (event.ordinal <= throughOrdinal && event.idempotencyKey) {\n\t\t\t\t\tretainedByKey.set(event.idempotencyKey, event);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst idempotencyEvents = [...retainedByKey.values()]\n\t\t\t\t.sort((left, right) => left.ordinal - right.ordinal)\n\t\t\t\t.slice(-this.maxIdempotencyEvents)\n\t\t\t\t.map((event) => structuredClone(event));\n\t\t\tconst content: ProjectionSnapshotContent = {\n\t\t\t\tversion: 1,\n\t\t\t\tschemaVersion: ORCHESTRATION_SCHEMA_VERSION,\n\t\t\t\tthroughOrdinal,\n\t\t\t\tcreatedAt: this.now(),\n\t\t\t\tprojection: structuredClone(projection()),\n\t\t\t\tidempotencyEvents,\n\t\t\t};\n\t\t\tconst digest = snapshotDigest(content);\n\t\t\tconst snapshotFile = eventFileName(throughOrdinal);\n\t\t\twriteFileAtomicSync(\n\t\t\t\tjoin(this.snapshotsDir, snapshotFile),\n\t\t\t\tserialize({ ...content, digest } satisfies ProjectionSnapshot),\n\t\t\t);\n\t\t\twriteFileAtomicSync(\n\t\t\t\tthis.baselinePath,\n\t\t\t\tserialize({ version: 1, throughOrdinal, digest, snapshotFile } satisfies SnapshotBaseline),\n\t\t\t);\n\n\t\t\tfor (const name of this.idempotencyFileNamesUnlocked()) {\n\t\t\t\tthis.unlinkManagedFile(join(this.idempotencyDir, name));\n\t\t\t}\n\t\t\tfor (const name of this.eventFileNamesUnlocked()) {\n\t\t\t\tconst ordinal = Number(EVENT_FILE_PATTERN.exec(name)?.[1] ?? 0);\n\t\t\t\tif (ordinal <= throughOrdinal) this.unlinkManagedFile(join(this.eventsDir, name));\n\t\t\t}\n\t\t\tfor (const name of this.snapshotFileNamesUnlocked()) {\n\t\t\t\tif (name !== snapshotFile) this.unlinkManagedFile(join(this.snapshotsDir, name));\n\t\t\t}\n\t\t\twriteFileAtomicSync(\n\t\t\t\tthis.cursorPath,\n\t\t\t\tserialize({ version: 1, lastOrdinal: throughOrdinal, tailBytes: 0 } satisfies EventCursor),\n\t\t\t);\n\t\t\treturn true;\n\t\t});\n\t}\n\n\tsubscribe(listener: (event: OrchestrationEvent) => void): () => void {\n\t\tthis.listeners.add(listener);\n\t\treturn () => this.listeners.delete(listener);\n\t}\n\n\tprivate readAllUnlocked(): OrchestrationEvent[] {\n\t\tconst names = this.eventFileNamesUnlocked();\n\t\tconst events: OrchestrationEvent[] = [];\n\t\tconst baselineOrdinal = this.readProjectionSnapshotUnlocked()?.throughOrdinal ?? 0;\n\t\tthis.assertReadableTailUnlocked(names, baselineOrdinal);\n\t\tlet previousOrdinal = baselineOrdinal;\n\t\tfor (const name of names) {\n\t\t\tconst match = EVENT_FILE_PATTERN.exec(name);\n\t\t\tif (!match) continue;\n\t\t\tconst fileOrdinal = Number(match[1]);\n\t\t\tif (fileOrdinal <= baselineOrdinal) continue;\n\t\t\tconst parsed = this.readEventFileUnlocked(name);\n\t\t\tif (parsed.ordinal !== fileOrdinal || parsed.ordinal <= previousOrdinal) {\n\t\t\t\tthrow new OrchestrationEventStoreError(`Non-monotonic orchestration event ordinal in ${name}`);\n\t\t\t}\n\t\t\tpreviousOrdinal = parsed.ordinal;\n\t\t\tevents.push(structuredClone(parsed));\n\t\t}\n\t\treturn events;\n\t}\n\n\tprivate eventFileNamesUnlocked(): string[] {\n\t\ttry {\n\t\t\treturn readdirSync(this.eventsDir)\n\t\t\t\t.filter((candidate) => EVENT_FILE_PATTERN.test(candidate))\n\t\t\t\t.sort();\n\t\t} catch (error) {\n\t\t\tif ((error as NodeJS.ErrnoException).code === \"ENOENT\") return [];\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tprivate idempotencyFileNamesUnlocked(): string[] {\n\t\ttry {\n\t\t\treturn readdirSync(this.idempotencyDir).filter((candidate) => candidate.endsWith(\".json\"));\n\t\t} catch {\n\t\t\treturn [];\n\t\t}\n\t}\n\n\tprivate snapshotFileNamesUnlocked(): string[] {\n\t\ttry {\n\t\t\treturn readdirSync(this.snapshotsDir)\n\t\t\t\t.filter((candidate) => SNAPSHOT_FILE_PATTERN.test(candidate))\n\t\t\t\t.sort();\n\t\t} catch {\n\t\t\treturn [];\n\t\t}\n\t}\n\n\t/** Event files are a contiguous append-only tail after the published snapshot. */\n\tprivate assertContiguousTailOrdinalsUnlocked(names: readonly string[], baselineOrdinal: number): void {\n\t\tlet expectedOrdinal = baselineOrdinal + 1;\n\t\tfor (const name of names) {\n\t\t\tconst ordinal = Number(EVENT_FILE_PATTERN.exec(name)?.[1] ?? 0);\n\t\t\t// A crash after publishing the baseline but before pruning is safe: the snapshot covers these files.\n\t\t\tif (ordinal <= baselineOrdinal) continue;\n\t\t\tif (ordinal !== expectedOrdinal) {\n\t\t\t\tthrow new OrchestrationEventStoreError(\n\t\t\t\t\t`Missing orchestration event ordinal ${expectedOrdinal} before ${name}.`,\n\t\t\t\t);\n\t\t\t}\n\t\t\texpectedOrdinal++;\n\t\t}\n\t}\n\n\t/** A valid cursor may lag a newly published snapshot, but it must never lead its committed tail. */\n\tprivate assertReadableTailUnlocked(names: readonly string[], baselineOrdinal: number): void {\n\t\tthis.assertContiguousTailOrdinalsUnlocked(names, baselineOrdinal);\n\t\tconst highestEventOrdinal = names.length > 0 ? Number(EVENT_FILE_PATTERN.exec(names.at(-1)!)?.[1] ?? 0) : 0;\n\t\tconst highestCommittedOrdinal = Math.max(baselineOrdinal, highestEventOrdinal);\n\t\tconst cursor = parseCursor(this.cursorPath);\n\t\tif (cursor && cursor.lastOrdinal > highestCommittedOrdinal) {\n\t\t\tthrow new OrchestrationEventStoreError(\n\t\t\t\t`Orchestration cursor ${cursor.lastOrdinal} is ahead of the last committed event ${highestCommittedOrdinal}.`,\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate readBaselineUnlocked(): SnapshotBaseline | undefined {\n\t\tif (!existsSync(this.baselinePath)) return undefined;\n\t\tlet parsed: unknown;\n\t\ttry {\n\t\t\tparsed = JSON.parse(readFileSync(this.baselinePath, \"utf-8\"));\n\t\t} catch (error) {\n\t\t\tthrow new OrchestrationEventStoreError(\n\t\t\t\t`Failed to parse orchestration snapshot baseline: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t);\n\t\t}\n\t\tif (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n\t\t\tthrow new OrchestrationEventStoreError(\"Invalid orchestration snapshot baseline.\");\n\t\t}\n\t\tconst baseline = parsed as Record<string, unknown>;\n\t\tif (\n\t\t\tbaseline.version !== 1 ||\n\t\t\t!Number.isSafeInteger(baseline.throughOrdinal) ||\n\t\t\tNumber(baseline.throughOrdinal) < 1 ||\n\t\t\ttypeof baseline.digest !== \"string\" ||\n\t\t\tbaseline.digest.length === 0 ||\n\t\t\ttypeof baseline.snapshotFile !== \"string\" ||\n\t\t\t!SNAPSHOT_FILE_PATTERN.test(baseline.snapshotFile) ||\n\t\t\tNumber(SNAPSHOT_FILE_PATTERN.exec(baseline.snapshotFile)?.[1] ?? 0) !== Number(baseline.throughOrdinal)\n\t\t) {\n\t\t\tthrow new OrchestrationEventStoreError(\"Invalid orchestration snapshot baseline.\");\n\t\t}\n\t\treturn {\n\t\t\tversion: 1,\n\t\t\tthroughOrdinal: Number(baseline.throughOrdinal),\n\t\t\tdigest: baseline.digest,\n\t\t\tsnapshotFile: baseline.snapshotFile,\n\t\t};\n\t}\n\n\tprivate readProjectionSnapshotUnlocked(): ProjectionSnapshot | undefined {\n\t\tconst baseline = this.readBaselineUnlocked();\n\t\tif (!baseline) return undefined;\n\t\tlet parsed: unknown;\n\t\ttry {\n\t\t\tparsed = JSON.parse(readFileSync(join(this.snapshotsDir, baseline.snapshotFile), \"utf-8\"));\n\t\t} catch (error) {\n\t\t\tthrow new OrchestrationEventStoreError(\n\t\t\t\t`Failed to parse orchestration projection snapshot: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t);\n\t\t}\n\t\tif (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n\t\t\tthrow new OrchestrationEventStoreError(\"Invalid orchestration projection snapshot.\");\n\t\t}\n\t\tconst snapshot = parsed as Record<string, unknown>;\n\t\tif (\n\t\t\tsnapshot.version !== 1 ||\n\t\t\tsnapshot.schemaVersion !== ORCHESTRATION_SCHEMA_VERSION ||\n\t\t\tsnapshot.throughOrdinal !== baseline.throughOrdinal ||\n\t\t\ttypeof snapshot.createdAt !== \"string\" ||\n\t\t\t!snapshot.projection ||\n\t\t\ttypeof snapshot.projection !== \"object\" ||\n\t\t\tArray.isArray(snapshot.projection) ||\n\t\t\t!Array.isArray(snapshot.idempotencyEvents) ||\n\t\t\t!snapshot.idempotencyEvents.every(isOrchestrationEvent) ||\n\t\t\t!snapshot.idempotencyEvents.every(\n\t\t\t\t(event) => event.ordinal <= baseline.throughOrdinal && event.idempotencyKey !== undefined,\n\t\t\t) ||\n\t\t\tnew Set(snapshot.idempotencyEvents.map((event) => event.idempotencyKey)).size !==\n\t\t\t\tsnapshot.idempotencyEvents.length ||\n\t\t\ttypeof snapshot.digest !== \"string\" ||\n\t\t\tsnapshot.digest !== baseline.digest\n\t\t) {\n\t\t\tthrow new OrchestrationEventStoreError(\"Invalid orchestration projection snapshot.\");\n\t\t}\n\t\tconst content: ProjectionSnapshotContent = {\n\t\t\tversion: 1,\n\t\t\tschemaVersion: ORCHESTRATION_SCHEMA_VERSION,\n\t\t\tthroughOrdinal: baseline.throughOrdinal,\n\t\t\tcreatedAt: snapshot.createdAt,\n\t\t\tprojection: structuredClone(snapshot.projection) as JsonObject,\n\t\t\tidempotencyEvents: snapshot.idempotencyEvents.map((event) => structuredClone(event)),\n\t\t};\n\t\tif (snapshotDigest(content) !== baseline.digest) {\n\t\t\tthrow new OrchestrationEventStoreError(\"Orchestration projection snapshot digest mismatch.\");\n\t\t}\n\t\treturn { ...content, digest: baseline.digest };\n\t}\n\n\t/**\n\t * Appends need a verified snapshot baseline but must not deserialize its projection on every event.\n\t * The baseline pointer remains small and is reread each time; an immutable snapshot is reparsed only\n\t * when its pointer or filesystem identity changes.\n\t */\n\tprivate readVerifiedSnapshotBaselineUnlocked(): SnapshotBaseline | undefined {\n\t\tconst baseline = this.readBaselineUnlocked();\n\t\tif (!baseline) {\n\t\t\tthis.verifiedSnapshotBaseline = undefined;\n\t\t\treturn undefined;\n\t\t}\n\t\tconst signature = this.snapshotFileSignatureUnlocked(baseline);\n\t\tconst cached = this.verifiedSnapshotBaseline;\n\t\tif (\n\t\t\tcached &&\n\t\t\tcached.baseline.throughOrdinal === baseline.throughOrdinal &&\n\t\t\tcached.baseline.digest === baseline.digest &&\n\t\t\tcached.baseline.snapshotFile === baseline.snapshotFile &&\n\t\t\tcached.signature.size === signature.size &&\n\t\t\tcached.signature.mtimeMs === signature.mtimeMs &&\n\t\t\tcached.signature.ctimeMs === signature.ctimeMs\n\t\t) {\n\t\t\treturn baseline;\n\t\t}\n\t\tthis.readProjectionSnapshotUnlocked();\n\t\tconst verifiedSignature = this.snapshotFileSignatureUnlocked(baseline);\n\t\tif (\n\t\t\tverifiedSignature.size !== signature.size ||\n\t\t\tverifiedSignature.mtimeMs !== signature.mtimeMs ||\n\t\t\tverifiedSignature.ctimeMs !== signature.ctimeMs\n\t\t) {\n\t\t\tthrow new OrchestrationEventStoreError(\"Orchestration projection snapshot changed while being verified.\");\n\t\t}\n\t\tthis.verifiedSnapshotBaseline = { baseline, signature };\n\t\treturn baseline;\n\t}\n\n\tprivate snapshotFileSignatureUnlocked(baseline: SnapshotBaseline): SnapshotFileSignature {\n\t\ttry {\n\t\t\tconst stats = statSync(join(this.snapshotsDir, baseline.snapshotFile));\n\t\t\tif (!stats.isFile())\n\t\t\t\tthrow new OrchestrationEventStoreError(\"Orchestration projection snapshot is not a file.\");\n\t\t\treturn { size: stats.size, mtimeMs: stats.mtimeMs, ctimeMs: stats.ctimeMs };\n\t\t} catch (error) {\n\t\t\tif (error instanceof OrchestrationEventStoreError) throw error;\n\t\t\tthrow new OrchestrationEventStoreError(\n\t\t\t\t`Failed to parse orchestration projection snapshot: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate unlinkManagedFile(filePath: string): void {\n\t\ttry {\n\t\t\tunlinkSync(filePath);\n\t\t} catch (error) {\n\t\t\tif ((error as NodeJS.ErrnoException).code !== \"ENOENT\") throw error;\n\t\t}\n\t}\n\n\tprivate readEventFileUnlocked(name: string): OrchestrationEvent {\n\t\tlet parsed: unknown;\n\t\ttry {\n\t\t\tparsed = JSON.parse(readFileSync(join(this.eventsDir, name), \"utf-8\"));\n\t\t} catch (error) {\n\t\t\tthrow new OrchestrationEventStoreError(\n\t\t\t\t`Failed to parse orchestration event ${name}: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t);\n\t\t}\n\t\tif (!isOrchestrationEvent(parsed)) {\n\t\t\tthrow new OrchestrationEventStoreError(`Invalid orchestration event record: ${name}`);\n\t\t}\n\t\treturn parsed;\n\t}\n\n\tprivate idempotencyPath(key: string): string {\n\t\treturn join(this.idempotencyDir, `${createHash(\"sha256\").update(key).digest(\"hex\")}.json`);\n\t}\n\n\tprivate writeIdempotencyMarkerUnlocked(key: string, ordinal: number): void {\n\t\twriteFileAtomicSync(\n\t\t\tthis.idempotencyPath(key),\n\t\t\tserialize({ version: 1, key, ordinal } satisfies IdempotencyMarker),\n\t\t);\n\t}\n\n\tprivate readIdempotentEventUnlocked(key: string): OrchestrationEvent | undefined {\n\t\tconst markerPath = this.idempotencyPath(key);\n\t\tif (!existsSync(markerPath)) {\n\t\t\treturn this.readProjectionSnapshotUnlocked()?.idempotencyEvents.find((event) => event.idempotencyKey === key);\n\t\t}\n\t\tlet parsed: unknown;\n\t\ttry {\n\t\t\tparsed = JSON.parse(readFileSync(markerPath, \"utf-8\"));\n\t\t} catch (error) {\n\t\t\tthrow new OrchestrationEventStoreError(\n\t\t\t\t`Failed to parse orchestration idempotency marker: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t);\n\t\t}\n\t\tif (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n\t\t\tthrow new OrchestrationEventStoreError(\"Invalid orchestration idempotency marker.\");\n\t\t}\n\t\tconst marker = parsed as Record<string, unknown>;\n\t\tif (\n\t\t\tmarker.version !== 1 ||\n\t\t\tmarker.key !== key ||\n\t\t\t!Number.isSafeInteger(marker.ordinal) ||\n\t\t\tNumber(marker.ordinal) < 1\n\t\t) {\n\t\t\tthrow new OrchestrationEventStoreError(\"Invalid orchestration idempotency marker.\");\n\t\t}\n\t\tconst ordinal = Number(marker.ordinal);\n\t\tif (!existsSync(join(this.eventsDir, eventFileName(ordinal)))) {\n\t\t\tconst retained = this.readProjectionSnapshotUnlocked()?.idempotencyEvents.find(\n\t\t\t\t(event) => event.idempotencyKey === key && event.ordinal === ordinal,\n\t\t\t);\n\t\t\tif (retained) return retained;\n\t\t}\n\t\tconst event = this.readEventFileUnlocked(eventFileName(ordinal));\n\t\tif (event.ordinal !== ordinal || event.idempotencyKey !== key) {\n\t\t\tthrow new OrchestrationEventStoreError(\"Orchestration idempotency marker does not match its event.\");\n\t\t}\n\t\treturn event;\n\t}\n\n\t/**\n\t * Reconcile only the crash tail when an event rename committed before its marker/cursor. Normal\n\t * appends read directory metadata plus one marker, never the accumulated event payload prefix.\n\t */\n\tprivate synchronizeIndexesUnlocked(): SynchronizedIndexes {\n\t\tconst names = this.eventFileNamesUnlocked();\n\t\tconst baselineOrdinal = this.readVerifiedSnapshotBaselineUnlocked()?.throughOrdinal ?? 0;\n\t\tthis.assertReadableTailUnlocked(names, baselineOrdinal);\n\t\tconst highestEventOrdinal = names.length > 0 ? Number(EVENT_FILE_PATTERN.exec(names.at(-1)!)?.[1] ?? 0) : 0;\n\t\tconst highest = Math.max(baselineOrdinal, highestEventOrdinal);\n\t\tconst cursor = parseCursor(this.cursorPath);\n\t\tif (\n\t\t\tcursor?.lastOrdinal === highest &&\n\t\t\tcursor.tailBytes !== undefined &&\n\t\t\t(highest > baselineOrdinal || cursor.tailBytes === 0)\n\t\t) {\n\t\t\treturn { lastOrdinal: highest, tailBytes: cursor.tailBytes };\n\t\t}\n\t\tif (cursor && cursor.lastOrdinal > highest) {\n\t\t\tthrow new OrchestrationEventStoreError(\n\t\t\t\t`Orchestration cursor ${cursor.lastOrdinal} is ahead of the last committed event ${highest}.`,\n\t\t\t);\n\t\t}\n\t\tconst rebuildFrom = Math.max(\n\t\t\tbaselineOrdinal + 1,\n\t\t\tcursor && cursor.lastOrdinal >= baselineOrdinal && cursor.lastOrdinal <= highest\n\t\t\t\t? cursor.lastOrdinal + 1\n\t\t\t\t: baselineOrdinal + 1,\n\t\t);\n\t\tfor (const name of names) {\n\t\t\tconst ordinal = Number(EVENT_FILE_PATTERN.exec(name)?.[1] ?? 0);\n\t\t\tif (ordinal < rebuildFrom || ordinal <= baselineOrdinal) continue;\n\t\t\tconst event = this.readEventFileUnlocked(name);\n\t\t\tif (event.ordinal !== ordinal) {\n\t\t\t\tthrow new OrchestrationEventStoreError(`Event ordinal does not match file name: ${name}`);\n\t\t\t}\n\t\t\tif (event.idempotencyKey) this.writeIdempotencyMarkerUnlocked(event.idempotencyKey, ordinal);\n\t\t}\n\t\tconst tailBytes = names.reduce((total, name) => {\n\t\t\tconst ordinal = Number(EVENT_FILE_PATTERN.exec(name)?.[1] ?? 0);\n\t\t\tif (ordinal <= baselineOrdinal) return total;\n\t\t\ttry {\n\t\t\t\treturn total + statSync(join(this.eventsDir, name)).size;\n\t\t\t} catch {\n\t\t\t\treturn total;\n\t\t\t}\n\t\t}, 0);\n\t\twriteFileAtomicSync(\n\t\t\tthis.cursorPath,\n\t\t\tserialize({ version: 1, lastOrdinal: highest, tailBytes } satisfies EventCursor),\n\t\t);\n\t\treturn { lastOrdinal: highest, tailBytes };\n\t}\n}\n"]}
1
+ {"version":3,"file":"event-store.js","sourceRoot":"","sources":["../../../src/core/orchestration/event-store.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash, randomUUID } from \"node:crypto\";\nimport { existsSync, statSync, unlinkSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { orchestrationEventStoreDir } from \"../agent-paths.ts\";\nimport type { JsonObject } from \"../autonomy/contracts.ts\";\nimport { withFileLockSync, writeFileAtomicSync } from \"../util/atomic-file.ts\";\nimport { readBoundedDirectoryNamesSync, readBoundedTextFileSync } from \"../util/bounded-file.ts\";\nimport {\n\ttype AppendOrchestrationEventInput,\n\tisOrchestrationEvent,\n\tORCHESTRATION_SCHEMA_VERSION,\n\ttype OrchestrationEvent,\n} from \"./contracts.ts\";\n\nconst EVENT_FILE_PATTERN = /^(\\d{16})\\.json$/;\nconst SNAPSHOT_FILE_PATTERN = /^(\\d{16})\\.json$/;\nconst DEFAULT_MAX_TAIL_EVENTS = 256;\nconst DEFAULT_MAX_TAIL_BYTES = 4 * 1024 * 1024;\nconst DEFAULT_MAX_IDEMPOTENCY_EVENTS = 512;\nconst MAX_CONFIGURED_TAIL_EVENTS = 1_024;\nconst MAX_CONFIGURED_TAIL_BYTES = 16 * 1024 * 1024;\nconst MAX_CONFIGURED_IDEMPOTENCY_EVENTS = 1_024;\nconst MAX_EVENT_DIRECTORY_ENTRIES = 2_048;\nconst MAX_IDEMPOTENCY_DIRECTORY_ENTRIES = 2_048;\nconst MAX_SNAPSHOT_DIRECTORY_ENTRIES = 8;\nconst MAX_CURSOR_BYTES = 64 * 1024;\nconst MAX_BASELINE_BYTES = 64 * 1024;\nconst MAX_IDEMPOTENCY_MARKER_BYTES = 64 * 1024;\n/** Full current task state plus retained idempotency evidence; intentionally above the 16MiB tail cap. */\nconst MAX_PROJECTION_SNAPSHOT_BYTES = 32 * 1024 * 1024;\n\ninterface EventCursor {\n\tversion: 1;\n\tlastOrdinal: number;\n\ttailBytes?: number;\n}\n\ninterface SynchronizedIndexes {\n\tlastOrdinal: number;\n\ttailBytes: number;\n}\n\ninterface IdempotencyMarker {\n\tversion: 1;\n\tkey: string;\n\tordinal: number;\n}\n\ninterface ProjectionSnapshotContent {\n\tversion: 1;\n\tschemaVersion: typeof ORCHESTRATION_SCHEMA_VERSION;\n\tthroughOrdinal: number;\n\tcreatedAt: string;\n\tprojection: JsonObject;\n\tidempotencyEvents: OrchestrationEvent[];\n}\n\ninterface ProjectionSnapshot extends ProjectionSnapshotContent {\n\tdigest: string;\n}\n\ninterface SnapshotBaseline {\n\tversion: 1;\n\tthroughOrdinal: number;\n\tdigest: string;\n\tsnapshotFile: string;\n}\n\ninterface SnapshotFileSignature {\n\tsize: number;\n\tmtimeMs: number;\n\tctimeMs: number;\n}\n\ninterface VerifiedSnapshotBaseline {\n\tbaseline: SnapshotBaseline;\n\tsignature: SnapshotFileSignature;\n}\n\nexport interface OrchestrationEventStoreOptions {\n\tagentDir: string;\n\tsessionId: string;\n\tnow?: () => string;\n\tcreateEventId?: () => string;\n\tmaxTailEvents?: number;\n\tmaxTailBytes?: number;\n\tmaxIdempotencyEvents?: number;\n}\n\nexport class OrchestrationEventStoreError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"OrchestrationEventStoreError\";\n\t}\n}\n\nexport class OrchestrationConcurrencyError extends OrchestrationEventStoreError {\n\tconstructor(expected: number, actual: number) {\n\t\tsuper(`Orchestration event cursor changed: expected ${expected}, actual ${actual}.`);\n\t\tthis.name = \"OrchestrationConcurrencyError\";\n\t}\n}\n\nexport class OrchestrationSnapshotRequiredError extends OrchestrationEventStoreError {\n\treadonly throughOrdinal: number;\n\n\tconstructor(throughOrdinal: number) {\n\t\tsuper(`Orchestration projection snapshot through ordinal ${throughOrdinal} is required.`);\n\t\tthis.name = \"OrchestrationSnapshotRequiredError\";\n\t\tthis.throughOrdinal = throughOrdinal;\n\t}\n}\n\nfunction parseCursor(filePath: string): EventCursor | undefined {\n\tif (!existsSync(filePath)) return undefined;\n\tlet content: string;\n\ttry {\n\t\tcontent = readBoundedTextFileSync(filePath, MAX_CURSOR_BYTES, \"Orchestration cursor\");\n\t} catch (error) {\n\t\tthrow new OrchestrationEventStoreError(\n\t\t\t`Failed to read orchestration cursor: ${error instanceof Error ? error.message : String(error)}`,\n\t\t);\n\t}\n\ttry {\n\t\tconst parsed: unknown = JSON.parse(content);\n\t\tif (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) return undefined;\n\t\tconst record = parsed as Record<string, unknown>;\n\t\tif (record.version !== 1 || !Number.isSafeInteger(record.lastOrdinal) || Number(record.lastOrdinal) < 0) {\n\t\t\treturn undefined;\n\t\t}\n\t\tif (record.tailBytes !== undefined && (!Number.isSafeInteger(record.tailBytes) || Number(record.tailBytes) < 0)) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn {\n\t\t\tversion: 1,\n\t\t\tlastOrdinal: Number(record.lastOrdinal),\n\t\t\t...(record.tailBytes !== undefined ? { tailBytes: Number(record.tailBytes) } : {}),\n\t\t};\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nfunction serialize(value: unknown): string {\n\treturn `${JSON.stringify(value, null, \"\\t\")}\\n`;\n}\n\nfunction serializeBounded(\n\tvalue: unknown,\n\tmaxBytes: number,\n\tlabel: string,\n\toversizedMessage = `${label} exceeds its byte limit.`,\n): string {\n\tconst serialized = serialize(value);\n\tif (Buffer.byteLength(serialized, \"utf-8\") > maxBytes) {\n\t\tthrow new OrchestrationEventStoreError(oversizedMessage);\n\t}\n\treturn serialized;\n}\n\nfunction eventFileName(ordinal: number): string {\n\treturn `${String(ordinal).padStart(16, \"0\")}.json`;\n}\n\nfunction snapshotDigest(content: ProjectionSnapshotContent): string {\n\treturn createHash(\"sha256\").update(JSON.stringify(content)).digest(\"hex\");\n}\n\nfunction positiveSafeInteger(value: number | undefined, fallback: number, maximum: number, label: string): number {\n\tconst resolved = value ?? fallback;\n\tif (!Number.isSafeInteger(resolved) || resolved < 1) {\n\t\tthrow new OrchestrationEventStoreError(`${label} must be a positive safe integer.`);\n\t}\n\tif (resolved > maximum) throw new OrchestrationEventStoreError(`${label} must not exceed ${maximum}.`);\n\treturn resolved;\n}\n\n/**\n * Append-only event tail with a replaceable full-state projection snapshot. Atomic rename prevents\n * torn records. Snapshot publication is two-phase (payload, then small baseline pointer), after which\n * covered event/idempotency files are pruned. A crash at any point leaves either the old replay prefix\n * or the new verified snapshot authoritative; ordinals never reset.\n */\nexport class OrchestrationEventStore {\n\treadonly rootDir: string;\n\treadonly eventsDir: string;\n\treadonly idempotencyDir: string;\n\treadonly cursorPath: string;\n\treadonly snapshotsDir: string;\n\treadonly baselinePath: string;\n\tprivate readonly now: () => string;\n\tprivate readonly createEventId: () => string;\n\tprivate readonly maxTailEvents: number;\n\tprivate readonly maxTailBytes: number;\n\tprivate readonly maxIdempotencyEvents: number;\n\tprivate readonly listeners = new Set<(event: OrchestrationEvent) => void>();\n\tprivate verifiedSnapshotBaseline: VerifiedSnapshotBaseline | undefined;\n\n\tconstructor(options: OrchestrationEventStoreOptions) {\n\t\tthis.rootDir = orchestrationEventStoreDir(options.agentDir, options.sessionId);\n\t\tthis.eventsDir = join(this.rootDir, \"events\");\n\t\tthis.idempotencyDir = join(this.rootDir, \"idempotency\");\n\t\tthis.cursorPath = join(this.rootDir, \"cursor.json\");\n\t\tthis.snapshotsDir = join(this.rootDir, \"snapshots\");\n\t\tthis.baselinePath = join(this.rootDir, \"projection-baseline.json\");\n\t\tthis.now = options.now ?? (() => new Date().toISOString());\n\t\tthis.createEventId = options.createEventId ?? randomUUID;\n\t\tthis.maxTailEvents = positiveSafeInteger(\n\t\t\toptions.maxTailEvents,\n\t\t\tDEFAULT_MAX_TAIL_EVENTS,\n\t\t\tMAX_CONFIGURED_TAIL_EVENTS,\n\t\t\t\"maxTailEvents\",\n\t\t);\n\t\tthis.maxTailBytes = positiveSafeInteger(\n\t\t\toptions.maxTailBytes,\n\t\t\tDEFAULT_MAX_TAIL_BYTES,\n\t\t\tMAX_CONFIGURED_TAIL_BYTES,\n\t\t\t\"maxTailBytes\",\n\t\t);\n\t\tthis.maxIdempotencyEvents = positiveSafeInteger(\n\t\t\toptions.maxIdempotencyEvents,\n\t\t\tDEFAULT_MAX_IDEMPOTENCY_EVENTS,\n\t\t\tMAX_CONFIGURED_IDEMPOTENCY_EVENTS,\n\t\t\t\"maxIdempotencyEvents\",\n\t\t);\n\t}\n\n\tappend(input: AppendOrchestrationEventInput, options: { expectedLastOrdinal?: number } = {}): OrchestrationEvent {\n\t\tconst committed = withFileLockSync(this.cursorPath, (): { event: OrchestrationEvent; appended: boolean } => {\n\t\t\tconst cursor = this.synchronizeIndexesUnlocked();\n\t\t\tconst actual = cursor.lastOrdinal;\n\t\t\tif (input.idempotencyKey) {\n\t\t\t\tconst existing = this.readIdempotentEventUnlocked(input.idempotencyKey);\n\t\t\t\tif (existing) return { event: existing, appended: false };\n\t\t\t}\n\t\t\tif (options.expectedLastOrdinal !== undefined) {\n\t\t\t\tif (actual !== options.expectedLastOrdinal) {\n\t\t\t\t\tthrow new OrchestrationConcurrencyError(options.expectedLastOrdinal, actual);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst ordinal = actual + 1;\n\t\t\tconst next: OrchestrationEvent = {\n\t\t\t\tschemaVersion: ORCHESTRATION_SCHEMA_VERSION,\n\t\t\t\tordinal,\n\t\t\t\teventId: this.createEventId(),\n\t\t\t\ttype: input.type,\n\t\t\t\taggregateId: input.aggregateId,\n\t\t\t\tactor: input.actor,\n\t\t\t\toccurredAt: this.now(),\n\t\t\t\t...(input.correlationId ? { correlationId: input.correlationId } : {}),\n\t\t\t\t...(input.causationId ? { causationId: input.causationId } : {}),\n\t\t\t\t...(input.idempotencyKey ? { idempotencyKey: input.idempotencyKey } : {}),\n\t\t\t\tpayload: structuredClone(input.payload),\n\t\t\t};\n\t\t\tconst serializedEvent = serializeBounded(\n\t\t\t\tnext,\n\t\t\t\tthis.maxTailBytes,\n\t\t\t\t\"Orchestration event\",\n\t\t\t\t\"Orchestration event exceeds its configured tail byte limit.\",\n\t\t\t);\n\t\t\tconst serializedMarker = input.idempotencyKey\n\t\t\t\t? this.serializeIdempotencyMarker(input.idempotencyKey, ordinal)\n\t\t\t\t: undefined;\n\t\t\tconst serializedCursor = serializeBounded(\n\t\t\t\t{\n\t\t\t\t\tversion: 1,\n\t\t\t\t\tlastOrdinal: ordinal,\n\t\t\t\t\ttailBytes: cursor.tailBytes + Buffer.byteLength(serializedEvent),\n\t\t\t\t} satisfies EventCursor,\n\t\t\t\tMAX_CURSOR_BYTES,\n\t\t\t\t\"Orchestration cursor\",\n\t\t\t);\n\t\t\twriteFileAtomicSync(join(this.eventsDir, eventFileName(ordinal)), serializedEvent);\n\t\t\tif (input.idempotencyKey && serializedMarker) {\n\t\t\t\tthis.writeIdempotencyMarkerUnlocked(input.idempotencyKey, serializedMarker);\n\t\t\t}\n\t\t\twriteFileAtomicSync(this.cursorPath, serializedCursor);\n\t\t\treturn { event: next, appended: true };\n\t\t});\n\n\t\tif (committed.appended) {\n\t\t\tfor (const listener of this.listeners) listener(structuredClone(committed.event));\n\t\t}\n\t\treturn structuredClone(committed.event);\n\t}\n\n\treadAll(): OrchestrationEvent[] {\n\t\treturn this.readAllUnlocked();\n\t}\n\n\treadAfter(ordinal: number): OrchestrationEvent[] {\n\t\tconst baseline = this.readBaselineUnlocked();\n\t\tif (baseline && ordinal < baseline.throughOrdinal) {\n\t\t\tthrow new OrchestrationSnapshotRequiredError(baseline.throughOrdinal);\n\t\t}\n\t\tconst events: OrchestrationEvent[] = [];\n\t\tconst names = this.eventFileNamesUnlocked();\n\t\tthis.assertReadableTailUnlocked(names, baseline?.throughOrdinal ?? 0);\n\t\tlet previousOrdinal = ordinal;\n\t\tfor (const name of names) {\n\t\t\tconst match = EVENT_FILE_PATTERN.exec(name);\n\t\t\tif (!match) continue;\n\t\t\tconst fileOrdinal = Number(match[1]);\n\t\t\tif (fileOrdinal <= ordinal) continue;\n\t\t\tconst event = this.readEventFileUnlocked(name);\n\t\t\tif (event.ordinal !== fileOrdinal || event.ordinal <= previousOrdinal) {\n\t\t\t\tthrow new OrchestrationEventStoreError(`Non-monotonic orchestration event ordinal in ${name}`);\n\t\t\t}\n\t\t\tpreviousOrdinal = event.ordinal;\n\t\t\tevents.push(structuredClone(event));\n\t\t}\n\t\treturn events;\n\t}\n\n\treadProjectionSnapshot(): { throughOrdinal: number; projection: JsonObject } | undefined {\n\t\tconst snapshot = this.readProjectionSnapshotUnlocked();\n\t\treturn snapshot\n\t\t\t? { throughOrdinal: snapshot.throughOrdinal, projection: structuredClone(snapshot.projection) }\n\t\t\t: undefined;\n\t}\n\n\t/** Replace a large replay prefix with one verified current-state snapshot and a bounded tail. */\n\tcompactIfNeeded(throughOrdinal: number, projection: () => JsonObject): boolean {\n\t\tconst baselineBeforeLock = this.readBaselineUnlocked()?.throughOrdinal ?? 0;\n\t\tconst cursorBeforeLock = parseCursor(this.cursorPath);\n\t\tif (\n\t\t\tcursorBeforeLock?.lastOrdinal === throughOrdinal &&\n\t\t\tcursorBeforeLock.tailBytes !== undefined &&\n\t\t\tthroughOrdinal - baselineBeforeLock < this.maxTailEvents &&\n\t\t\tcursorBeforeLock.tailBytes < this.maxTailBytes\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\treturn withFileLockSync(this.cursorPath, () => {\n\t\t\tconst cursor = this.synchronizeIndexesUnlocked();\n\t\t\tif (cursor.lastOrdinal !== throughOrdinal) return false;\n\t\t\tconst baselineOrdinal = this.readBaselineUnlocked()?.throughOrdinal ?? 0;\n\t\t\tconst tailNames = this.eventFileNamesUnlocked().filter(\n\t\t\t\t(name) => Number(EVENT_FILE_PATTERN.exec(name)?.[1] ?? 0) > baselineOrdinal,\n\t\t\t);\n\t\t\tif (tailNames.length < this.maxTailEvents && cursor.tailBytes < this.maxTailBytes) return false;\n\n\t\t\tconst retainedByKey = new Map<string, OrchestrationEvent>();\n\t\t\tfor (const event of this.readProjectionSnapshotUnlocked()?.idempotencyEvents ?? []) {\n\t\t\t\tif (event.idempotencyKey) retainedByKey.set(event.idempotencyKey, event);\n\t\t\t}\n\t\t\tfor (const name of tailNames) {\n\t\t\t\tconst event = this.readEventFileUnlocked(name);\n\t\t\t\tif (event.ordinal <= throughOrdinal && event.idempotencyKey) {\n\t\t\t\t\tretainedByKey.set(event.idempotencyKey, event);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst idempotencyEvents = [...retainedByKey.values()]\n\t\t\t\t.sort((left, right) => left.ordinal - right.ordinal)\n\t\t\t\t.slice(-this.maxIdempotencyEvents)\n\t\t\t\t.map((event) => structuredClone(event));\n\t\t\tconst content: ProjectionSnapshotContent = {\n\t\t\t\tversion: 1,\n\t\t\t\tschemaVersion: ORCHESTRATION_SCHEMA_VERSION,\n\t\t\t\tthroughOrdinal,\n\t\t\t\tcreatedAt: this.now(),\n\t\t\t\tprojection: structuredClone(projection()),\n\t\t\t\tidempotencyEvents,\n\t\t\t};\n\t\t\tconst digest = snapshotDigest(content);\n\t\t\tconst snapshotFile = eventFileName(throughOrdinal);\n\t\t\tconst serializedSnapshot = serializeBounded(\n\t\t\t\t{ ...content, digest } satisfies ProjectionSnapshot,\n\t\t\t\tMAX_PROJECTION_SNAPSHOT_BYTES,\n\t\t\t\t\"Orchestration projection snapshot\",\n\t\t\t);\n\t\t\tconst serializedBaseline = serializeBounded(\n\t\t\t\t{ version: 1, throughOrdinal, digest, snapshotFile } satisfies SnapshotBaseline,\n\t\t\t\tMAX_BASELINE_BYTES,\n\t\t\t\t\"Orchestration snapshot baseline\",\n\t\t\t);\n\t\t\tconst serializedCursor = serializeBounded(\n\t\t\t\t{ version: 1, lastOrdinal: throughOrdinal, tailBytes: 0 } satisfies EventCursor,\n\t\t\t\tMAX_CURSOR_BYTES,\n\t\t\t\t\"Orchestration cursor\",\n\t\t\t);\n\t\t\twriteFileAtomicSync(join(this.snapshotsDir, snapshotFile), serializedSnapshot);\n\t\t\twriteFileAtomicSync(this.baselinePath, serializedBaseline);\n\n\t\t\tfor (const name of this.idempotencyFileNamesUnlocked()) {\n\t\t\t\tthis.unlinkManagedFile(join(this.idempotencyDir, name));\n\t\t\t}\n\t\t\tfor (const name of this.eventFileNamesUnlocked()) {\n\t\t\t\tconst ordinal = Number(EVENT_FILE_PATTERN.exec(name)?.[1] ?? 0);\n\t\t\t\tif (ordinal <= throughOrdinal) this.unlinkManagedFile(join(this.eventsDir, name));\n\t\t\t}\n\t\t\tfor (const name of this.snapshotFileNamesUnlocked()) {\n\t\t\t\tif (name !== snapshotFile) this.unlinkManagedFile(join(this.snapshotsDir, name));\n\t\t\t}\n\t\t\twriteFileAtomicSync(this.cursorPath, serializedCursor);\n\t\t\treturn true;\n\t\t});\n\t}\n\n\tsubscribe(listener: (event: OrchestrationEvent) => void): () => void {\n\t\tthis.listeners.add(listener);\n\t\treturn () => this.listeners.delete(listener);\n\t}\n\n\tprivate readAllUnlocked(): OrchestrationEvent[] {\n\t\tconst names = this.eventFileNamesUnlocked();\n\t\tconst events: OrchestrationEvent[] = [];\n\t\tconst baselineOrdinal = this.readProjectionSnapshotUnlocked()?.throughOrdinal ?? 0;\n\t\tthis.assertReadableTailUnlocked(names, baselineOrdinal);\n\t\tlet previousOrdinal = baselineOrdinal;\n\t\tfor (const name of names) {\n\t\t\tconst match = EVENT_FILE_PATTERN.exec(name);\n\t\t\tif (!match) continue;\n\t\t\tconst fileOrdinal = Number(match[1]);\n\t\t\tif (fileOrdinal <= baselineOrdinal) continue;\n\t\t\tconst parsed = this.readEventFileUnlocked(name);\n\t\t\tif (parsed.ordinal !== fileOrdinal || parsed.ordinal <= previousOrdinal) {\n\t\t\t\tthrow new OrchestrationEventStoreError(`Non-monotonic orchestration event ordinal in ${name}`);\n\t\t\t}\n\t\t\tpreviousOrdinal = parsed.ordinal;\n\t\t\tevents.push(structuredClone(parsed));\n\t\t}\n\t\treturn events;\n\t}\n\n\tprivate eventFileNamesUnlocked(): string[] {\n\t\ttry {\n\t\t\treturn readBoundedDirectoryNamesSync(\n\t\t\t\tthis.eventsDir,\n\t\t\t\tMAX_EVENT_DIRECTORY_ENTRIES,\n\t\t\t\t\"Orchestration events directory\",\n\t\t\t)\n\t\t\t\t.filter((candidate) => EVENT_FILE_PATTERN.test(candidate))\n\t\t\t\t.sort();\n\t\t} catch (error) {\n\t\t\tif ((error as NodeJS.ErrnoException).code === \"ENOENT\") return [];\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tprivate idempotencyFileNamesUnlocked(): string[] {\n\t\ttry {\n\t\t\treturn readBoundedDirectoryNamesSync(\n\t\t\t\tthis.idempotencyDir,\n\t\t\t\tMAX_IDEMPOTENCY_DIRECTORY_ENTRIES,\n\t\t\t\t\"Orchestration idempotency directory\",\n\t\t\t).filter((candidate) => candidate.endsWith(\".json\"));\n\t\t} catch (error) {\n\t\t\tif ((error as NodeJS.ErrnoException).code === \"ENOENT\") return [];\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tprivate snapshotFileNamesUnlocked(): string[] {\n\t\ttry {\n\t\t\treturn readBoundedDirectoryNamesSync(\n\t\t\t\tthis.snapshotsDir,\n\t\t\t\tMAX_SNAPSHOT_DIRECTORY_ENTRIES,\n\t\t\t\t\"Orchestration snapshots directory\",\n\t\t\t)\n\t\t\t\t.filter((candidate) => SNAPSHOT_FILE_PATTERN.test(candidate))\n\t\t\t\t.sort();\n\t\t} catch (error) {\n\t\t\tif ((error as NodeJS.ErrnoException).code === \"ENOENT\") return [];\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\t/** Event files are a contiguous append-only tail after the published snapshot. */\n\tprivate assertContiguousTailOrdinalsUnlocked(names: readonly string[], baselineOrdinal: number): void {\n\t\tlet expectedOrdinal = baselineOrdinal + 1;\n\t\tfor (const name of names) {\n\t\t\tconst ordinal = Number(EVENT_FILE_PATTERN.exec(name)?.[1] ?? 0);\n\t\t\t// A crash after publishing the baseline but before pruning is safe: the snapshot covers these files.\n\t\t\tif (ordinal <= baselineOrdinal) continue;\n\t\t\tif (ordinal !== expectedOrdinal) {\n\t\t\t\tthrow new OrchestrationEventStoreError(\n\t\t\t\t\t`Missing orchestration event ordinal ${expectedOrdinal} before ${name}.`,\n\t\t\t\t);\n\t\t\t}\n\t\t\texpectedOrdinal++;\n\t\t}\n\t}\n\n\t/** A valid cursor may lag a newly published snapshot, but it must never lead its committed tail. */\n\tprivate assertReadableTailUnlocked(names: readonly string[], baselineOrdinal: number): void {\n\t\tthis.assertContiguousTailOrdinalsUnlocked(names, baselineOrdinal);\n\t\tconst highestEventOrdinal = names.length > 0 ? Number(EVENT_FILE_PATTERN.exec(names.at(-1)!)?.[1] ?? 0) : 0;\n\t\tconst highestCommittedOrdinal = Math.max(baselineOrdinal, highestEventOrdinal);\n\t\tconst cursor = parseCursor(this.cursorPath);\n\t\tif (cursor && cursor.lastOrdinal > highestCommittedOrdinal) {\n\t\t\tthrow new OrchestrationEventStoreError(\n\t\t\t\t`Orchestration cursor ${cursor.lastOrdinal} is ahead of the last committed event ${highestCommittedOrdinal}.`,\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate readBaselineUnlocked(): SnapshotBaseline | undefined {\n\t\tif (!existsSync(this.baselinePath)) return undefined;\n\t\tlet parsed: unknown;\n\t\ttry {\n\t\t\tparsed = JSON.parse(\n\t\t\t\treadBoundedTextFileSync(this.baselinePath, MAX_BASELINE_BYTES, \"Orchestration snapshot baseline\"),\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tthrow new OrchestrationEventStoreError(\n\t\t\t\t`Failed to parse orchestration snapshot baseline: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t);\n\t\t}\n\t\tif (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n\t\t\tthrow new OrchestrationEventStoreError(\"Invalid orchestration snapshot baseline.\");\n\t\t}\n\t\tconst baseline = parsed as Record<string, unknown>;\n\t\tif (\n\t\t\tbaseline.version !== 1 ||\n\t\t\t!Number.isSafeInteger(baseline.throughOrdinal) ||\n\t\t\tNumber(baseline.throughOrdinal) < 1 ||\n\t\t\ttypeof baseline.digest !== \"string\" ||\n\t\t\tbaseline.digest.length === 0 ||\n\t\t\ttypeof baseline.snapshotFile !== \"string\" ||\n\t\t\t!SNAPSHOT_FILE_PATTERN.test(baseline.snapshotFile) ||\n\t\t\tNumber(SNAPSHOT_FILE_PATTERN.exec(baseline.snapshotFile)?.[1] ?? 0) !== Number(baseline.throughOrdinal)\n\t\t) {\n\t\t\tthrow new OrchestrationEventStoreError(\"Invalid orchestration snapshot baseline.\");\n\t\t}\n\t\treturn {\n\t\t\tversion: 1,\n\t\t\tthroughOrdinal: Number(baseline.throughOrdinal),\n\t\t\tdigest: baseline.digest,\n\t\t\tsnapshotFile: baseline.snapshotFile,\n\t\t};\n\t}\n\n\tprivate readProjectionSnapshotUnlocked(): ProjectionSnapshot | undefined {\n\t\tconst baseline = this.readBaselineUnlocked();\n\t\tif (!baseline) return undefined;\n\t\tlet parsed: unknown;\n\t\ttry {\n\t\t\tparsed = JSON.parse(\n\t\t\t\treadBoundedTextFileSync(\n\t\t\t\t\tjoin(this.snapshotsDir, baseline.snapshotFile),\n\t\t\t\t\tMAX_PROJECTION_SNAPSHOT_BYTES,\n\t\t\t\t\t\"Orchestration projection snapshot\",\n\t\t\t\t),\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tthrow new OrchestrationEventStoreError(\n\t\t\t\t`Failed to parse orchestration projection snapshot: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t);\n\t\t}\n\t\tif (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n\t\t\tthrow new OrchestrationEventStoreError(\"Invalid orchestration projection snapshot.\");\n\t\t}\n\t\tconst snapshot = parsed as Record<string, unknown>;\n\t\tif (\n\t\t\tsnapshot.version !== 1 ||\n\t\t\tsnapshot.schemaVersion !== ORCHESTRATION_SCHEMA_VERSION ||\n\t\t\tsnapshot.throughOrdinal !== baseline.throughOrdinal ||\n\t\t\ttypeof snapshot.createdAt !== \"string\" ||\n\t\t\t!snapshot.projection ||\n\t\t\ttypeof snapshot.projection !== \"object\" ||\n\t\t\tArray.isArray(snapshot.projection) ||\n\t\t\t!Array.isArray(snapshot.idempotencyEvents) ||\n\t\t\tsnapshot.idempotencyEvents.length > this.maxIdempotencyEvents ||\n\t\t\t!snapshot.idempotencyEvents.every(isOrchestrationEvent) ||\n\t\t\t!snapshot.idempotencyEvents.every(\n\t\t\t\t(event) => event.ordinal <= baseline.throughOrdinal && event.idempotencyKey !== undefined,\n\t\t\t) ||\n\t\t\tnew Set(snapshot.idempotencyEvents.map((event) => event.idempotencyKey)).size !==\n\t\t\t\tsnapshot.idempotencyEvents.length ||\n\t\t\ttypeof snapshot.digest !== \"string\" ||\n\t\t\tsnapshot.digest !== baseline.digest\n\t\t) {\n\t\t\tthrow new OrchestrationEventStoreError(\"Invalid orchestration projection snapshot.\");\n\t\t}\n\t\tconst content: ProjectionSnapshotContent = {\n\t\t\tversion: 1,\n\t\t\tschemaVersion: ORCHESTRATION_SCHEMA_VERSION,\n\t\t\tthroughOrdinal: baseline.throughOrdinal,\n\t\t\tcreatedAt: snapshot.createdAt,\n\t\t\tprojection: structuredClone(snapshot.projection) as JsonObject,\n\t\t\tidempotencyEvents: snapshot.idempotencyEvents.map((event) => structuredClone(event)),\n\t\t};\n\t\tif (snapshotDigest(content) !== baseline.digest) {\n\t\t\tthrow new OrchestrationEventStoreError(\"Orchestration projection snapshot digest mismatch.\");\n\t\t}\n\t\treturn { ...content, digest: baseline.digest };\n\t}\n\n\t/**\n\t * Appends need a verified snapshot baseline but must not deserialize its projection on every event.\n\t * The baseline pointer remains small and is reread each time; an immutable snapshot is reparsed only\n\t * when its pointer or filesystem identity changes.\n\t */\n\tprivate readVerifiedSnapshotBaselineUnlocked(): SnapshotBaseline | undefined {\n\t\tconst baseline = this.readBaselineUnlocked();\n\t\tif (!baseline) {\n\t\t\tthis.verifiedSnapshotBaseline = undefined;\n\t\t\treturn undefined;\n\t\t}\n\t\tconst signature = this.snapshotFileSignatureUnlocked(baseline);\n\t\tconst cached = this.verifiedSnapshotBaseline;\n\t\tif (\n\t\t\tcached &&\n\t\t\tcached.baseline.throughOrdinal === baseline.throughOrdinal &&\n\t\t\tcached.baseline.digest === baseline.digest &&\n\t\t\tcached.baseline.snapshotFile === baseline.snapshotFile &&\n\t\t\tcached.signature.size === signature.size &&\n\t\t\tcached.signature.mtimeMs === signature.mtimeMs &&\n\t\t\tcached.signature.ctimeMs === signature.ctimeMs\n\t\t) {\n\t\t\treturn baseline;\n\t\t}\n\t\tthis.readProjectionSnapshotUnlocked();\n\t\tconst verifiedSignature = this.snapshotFileSignatureUnlocked(baseline);\n\t\tif (\n\t\t\tverifiedSignature.size !== signature.size ||\n\t\t\tverifiedSignature.mtimeMs !== signature.mtimeMs ||\n\t\t\tverifiedSignature.ctimeMs !== signature.ctimeMs\n\t\t) {\n\t\t\tthrow new OrchestrationEventStoreError(\"Orchestration projection snapshot changed while being verified.\");\n\t\t}\n\t\tthis.verifiedSnapshotBaseline = { baseline, signature };\n\t\treturn baseline;\n\t}\n\n\tprivate snapshotFileSignatureUnlocked(baseline: SnapshotBaseline): SnapshotFileSignature {\n\t\ttry {\n\t\t\tconst stats = statSync(join(this.snapshotsDir, baseline.snapshotFile));\n\t\t\tif (!stats.isFile())\n\t\t\t\tthrow new OrchestrationEventStoreError(\"Orchestration projection snapshot is not a file.\");\n\t\t\treturn { size: stats.size, mtimeMs: stats.mtimeMs, ctimeMs: stats.ctimeMs };\n\t\t} catch (error) {\n\t\t\tif (error instanceof OrchestrationEventStoreError) throw error;\n\t\t\tthrow new OrchestrationEventStoreError(\n\t\t\t\t`Failed to parse orchestration projection snapshot: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate unlinkManagedFile(filePath: string): void {\n\t\ttry {\n\t\t\tunlinkSync(filePath);\n\t\t} catch (error) {\n\t\t\tif ((error as NodeJS.ErrnoException).code !== \"ENOENT\") throw error;\n\t\t}\n\t}\n\n\tprivate readEventFileUnlocked(name: string): OrchestrationEvent {\n\t\tlet parsed: unknown;\n\t\ttry {\n\t\t\tparsed = JSON.parse(\n\t\t\t\treadBoundedTextFileSync(join(this.eventsDir, name), this.maxTailBytes, `Orchestration event ${name}`),\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tthrow new OrchestrationEventStoreError(\n\t\t\t\t`Failed to parse orchestration event ${name}: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t);\n\t\t}\n\t\tif (!isOrchestrationEvent(parsed)) {\n\t\t\tthrow new OrchestrationEventStoreError(`Invalid orchestration event record: ${name}`);\n\t\t}\n\t\treturn parsed;\n\t}\n\n\tprivate idempotencyPath(key: string): string {\n\t\treturn join(this.idempotencyDir, `${createHash(\"sha256\").update(key).digest(\"hex\")}.json`);\n\t}\n\n\tprivate serializeIdempotencyMarker(key: string, ordinal: number): string {\n\t\treturn serializeBounded(\n\t\t\t{ version: 1, key, ordinal } satisfies IdempotencyMarker,\n\t\t\tMAX_IDEMPOTENCY_MARKER_BYTES,\n\t\t\t\"Orchestration idempotency marker\",\n\t\t);\n\t}\n\n\tprivate writeIdempotencyMarkerUnlocked(key: string, serializedMarker: string): void {\n\t\twriteFileAtomicSync(this.idempotencyPath(key), serializedMarker);\n\t}\n\n\tprivate readIdempotentEventUnlocked(key: string): OrchestrationEvent | undefined {\n\t\tconst markerPath = this.idempotencyPath(key);\n\t\tif (!existsSync(markerPath)) {\n\t\t\treturn this.readProjectionSnapshotUnlocked()?.idempotencyEvents.find((event) => event.idempotencyKey === key);\n\t\t}\n\t\tlet parsed: unknown;\n\t\ttry {\n\t\t\tparsed = JSON.parse(\n\t\t\t\treadBoundedTextFileSync(markerPath, MAX_IDEMPOTENCY_MARKER_BYTES, \"Orchestration idempotency marker\"),\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tthrow new OrchestrationEventStoreError(\n\t\t\t\t`Failed to parse orchestration idempotency marker: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t);\n\t\t}\n\t\tif (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n\t\t\tthrow new OrchestrationEventStoreError(\"Invalid orchestration idempotency marker.\");\n\t\t}\n\t\tconst marker = parsed as Record<string, unknown>;\n\t\tif (\n\t\t\tmarker.version !== 1 ||\n\t\t\tmarker.key !== key ||\n\t\t\t!Number.isSafeInteger(marker.ordinal) ||\n\t\t\tNumber(marker.ordinal) < 1\n\t\t) {\n\t\t\tthrow new OrchestrationEventStoreError(\"Invalid orchestration idempotency marker.\");\n\t\t}\n\t\tconst ordinal = Number(marker.ordinal);\n\t\tif (!existsSync(join(this.eventsDir, eventFileName(ordinal)))) {\n\t\t\tconst retained = this.readProjectionSnapshotUnlocked()?.idempotencyEvents.find(\n\t\t\t\t(event) => event.idempotencyKey === key && event.ordinal === ordinal,\n\t\t\t);\n\t\t\tif (retained) return retained;\n\t\t}\n\t\tconst event = this.readEventFileUnlocked(eventFileName(ordinal));\n\t\tif (event.ordinal !== ordinal || event.idempotencyKey !== key) {\n\t\t\tthrow new OrchestrationEventStoreError(\"Orchestration idempotency marker does not match its event.\");\n\t\t}\n\t\treturn event;\n\t}\n\n\t/**\n\t * Reconcile only the crash tail when an event rename committed before its marker/cursor. Normal\n\t * appends read directory metadata plus one marker, never the accumulated event payload prefix.\n\t */\n\tprivate synchronizeIndexesUnlocked(): SynchronizedIndexes {\n\t\tconst names = this.eventFileNamesUnlocked();\n\t\tconst baselineOrdinal = this.readVerifiedSnapshotBaselineUnlocked()?.throughOrdinal ?? 0;\n\t\tthis.assertReadableTailUnlocked(names, baselineOrdinal);\n\t\tconst highestEventOrdinal = names.length > 0 ? Number(EVENT_FILE_PATTERN.exec(names.at(-1)!)?.[1] ?? 0) : 0;\n\t\tconst highest = Math.max(baselineOrdinal, highestEventOrdinal);\n\t\tconst cursor = parseCursor(this.cursorPath);\n\t\tif (\n\t\t\tcursor?.lastOrdinal === highest &&\n\t\t\tcursor.tailBytes !== undefined &&\n\t\t\t(highest > baselineOrdinal || cursor.tailBytes === 0)\n\t\t) {\n\t\t\treturn { lastOrdinal: highest, tailBytes: cursor.tailBytes };\n\t\t}\n\t\tif (cursor && cursor.lastOrdinal > highest) {\n\t\t\tthrow new OrchestrationEventStoreError(\n\t\t\t\t`Orchestration cursor ${cursor.lastOrdinal} is ahead of the last committed event ${highest}.`,\n\t\t\t);\n\t\t}\n\t\tconst rebuildFrom = Math.max(\n\t\t\tbaselineOrdinal + 1,\n\t\t\tcursor && cursor.lastOrdinal >= baselineOrdinal && cursor.lastOrdinal <= highest\n\t\t\t\t? cursor.lastOrdinal + 1\n\t\t\t\t: baselineOrdinal + 1,\n\t\t);\n\t\tfor (const name of names) {\n\t\t\tconst ordinal = Number(EVENT_FILE_PATTERN.exec(name)?.[1] ?? 0);\n\t\t\tif (ordinal < rebuildFrom || ordinal <= baselineOrdinal) continue;\n\t\t\tconst event = this.readEventFileUnlocked(name);\n\t\t\tif (event.ordinal !== ordinal) {\n\t\t\t\tthrow new OrchestrationEventStoreError(`Event ordinal does not match file name: ${name}`);\n\t\t\t}\n\t\t\tif (event.idempotencyKey) {\n\t\t\t\tthis.writeIdempotencyMarkerUnlocked(\n\t\t\t\t\tevent.idempotencyKey,\n\t\t\t\t\tthis.serializeIdempotencyMarker(event.idempotencyKey, ordinal),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tconst tailBytes = names.reduce((total, name) => {\n\t\t\tconst ordinal = Number(EVENT_FILE_PATTERN.exec(name)?.[1] ?? 0);\n\t\t\tif (ordinal <= baselineOrdinal) return total;\n\t\t\ttry {\n\t\t\t\treturn total + statSync(join(this.eventsDir, name)).size;\n\t\t\t} catch {\n\t\t\t\treturn total;\n\t\t\t}\n\t\t}, 0);\n\t\twriteFileAtomicSync(\n\t\t\tthis.cursorPath,\n\t\t\tserializeBounded(\n\t\t\t\t{ version: 1, lastOrdinal: highest, tailBytes } satisfies EventCursor,\n\t\t\t\tMAX_CURSOR_BYTES,\n\t\t\t\t\"Orchestration cursor\",\n\t\t\t),\n\t\t);\n\t\treturn { lastOrdinal: highest, tailBytes };\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"lane-tool-manifests.d.ts","sourceRoot":"","sources":["../../../src/core/orchestration/lane-tool-manifests.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAEnF,eAAO,MAAM,0BAA0B,mFAS7B,CAAC;AACX,eAAO,MAAM,gCAAgC,kHAA0E,CAAC;AAExH;;;GAGG;AACH,wBAAgB,sBAAsB,CACrC,OAAO,EAAE,oBAAoB,EAC7B,gBAAgB,EAAE,SAAS,MAAM,EAAE,GACjC,sBAAsB,EAAE,CAkB1B","sourcesContent":["import { getToolCapabilityPolicy, resolveProfileToolCapability } from \"../tool-capability-policy.ts\";\nimport type { OrchestrationProfile, ToolCapabilityManifest } from \"./contracts.ts\";\n\nexport const CLASSIFIED_LANE_TOOL_NAMES = [\n\t\"read\",\n\t\"grep\",\n\t\"find\",\n\t\"ls\",\n\t\"write\",\n\t\"edit\",\n\t\"memory\",\n\t\"run_process\",\n] as const;\nexport const ORCHESTRATION_PROFILE_TOOL_NAMES = [...CLASSIFIED_LANE_TOOL_NAMES, \"delegate\", \"delegate_status\"] as const;\n\n/**\n * Manifest-only lane catalogue. It contains no tool factories, so policy compilation can omit\n * denied tools before their executable implementations are constructed.\n */\nexport function buildLaneToolManifests(\n\tprofile: OrchestrationProfile,\n\tenabledToolNames: readonly string[],\n): ToolCapabilityManifest[] {\n\tconst enabled = new Set(enabledToolNames);\n\tconst manifests: ToolCapabilityManifest[] = [];\n\n\tfor (const toolName of profile.toolNames) {\n\t\tif (!enabled.has(toolName)) continue;\n\t\tconst policy = getToolCapabilityPolicy(toolName);\n\t\tconst capability = resolveProfileToolCapability(profile, toolName);\n\t\tif (!capability || !policy) continue;\n\t\tmanifests.push({\n\t\t\ttoolName,\n\t\t\tmoduleSpecifier: `../tools/${toolName}.ts`,\n\t\t\tcapabilities: [capability],\n\t\t\troles: [profile.role],\n\t\t\tenforcements: [policy.enforcement],\n\t\t});\n\t}\n\treturn manifests;\n}\n"]}
1
+ {"version":3,"file":"lane-tool-manifests.d.ts","sourceRoot":"","sources":["../../../src/core/orchestration/lane-tool-manifests.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAEnF,eAAO,MAAM,0BAA0B,YACtC,MAAM,EACN,MAAM,EACN,MAAM,EACN,IAAI,EACJ,OAAO,EACP,MAAM,EACN,QAAQ,EACR,aAAa,CACJ,CAAC;AACX,eAAO,MAAM,gCAAgC,kHAA0E,CAAC;AAExH;;;GAGG;AACH,wBAAgB,sBAAsB,CACrC,OAAO,EAAE,oBAAoB,EAC7B,gBAAgB,EAAE,SAAS,MAAM,EAAE,GACjC,sBAAsB,EAAE,CAkB1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"lane-tool-manifests.js","sourceRoot":"","sources":["../../../src/core/orchestration/lane-tool-manifests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAGrG,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACzC,MAAM;IACN,MAAM;IACN,MAAM;IACN,IAAI;IACJ,OAAO;IACP,MAAM;IACN,QAAQ;IACR,aAAa;CACJ,CAAC;AACX,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,GAAG,0BAA0B,EAAE,UAAU,EAAE,iBAAiB,CAAU,CAAC;AAExH;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACrC,OAA6B,EAC7B,gBAAmC,EACR;IAC3B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC1C,MAAM,SAAS,GAA6B,EAAE,CAAC;IAE/C,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,SAAS;QACrC,MAAM,MAAM,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,4BAA4B,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACnE,IAAI,CAAC,UAAU,IAAI,CAAC,MAAM;YAAE,SAAS;QACrC,SAAS,CAAC,IAAI,CAAC;YACd,QAAQ;YACR,eAAe,EAAE,YAAY,QAAQ,KAAK;YAC1C,YAAY,EAAE,CAAC,UAAU,CAAC;YAC1B,KAAK,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;YACrB,YAAY,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC;SAClC,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AAAA,CACjB","sourcesContent":["import { getToolCapabilityPolicy, resolveProfileToolCapability } from \"../tool-capability-policy.ts\";\nimport type { OrchestrationProfile, ToolCapabilityManifest } from \"./contracts.ts\";\n\nexport const CLASSIFIED_LANE_TOOL_NAMES = [\n\t\"read\",\n\t\"grep\",\n\t\"find\",\n\t\"ls\",\n\t\"write\",\n\t\"edit\",\n\t\"memory\",\n\t\"run_process\",\n] as const;\nexport const ORCHESTRATION_PROFILE_TOOL_NAMES = [...CLASSIFIED_LANE_TOOL_NAMES, \"delegate\", \"delegate_status\"] as const;\n\n/**\n * Manifest-only lane catalogue. It contains no tool factories, so policy compilation can omit\n * denied tools before their executable implementations are constructed.\n */\nexport function buildLaneToolManifests(\n\tprofile: OrchestrationProfile,\n\tenabledToolNames: readonly string[],\n): ToolCapabilityManifest[] {\n\tconst enabled = new Set(enabledToolNames);\n\tconst manifests: ToolCapabilityManifest[] = [];\n\n\tfor (const toolName of profile.toolNames) {\n\t\tif (!enabled.has(toolName)) continue;\n\t\tconst policy = getToolCapabilityPolicy(toolName);\n\t\tconst capability = resolveProfileToolCapability(profile, toolName);\n\t\tif (!capability || !policy) continue;\n\t\tmanifests.push({\n\t\t\ttoolName,\n\t\t\tmoduleSpecifier: `../tools/${toolName}.ts`,\n\t\t\tcapabilities: [capability],\n\t\t\troles: [profile.role],\n\t\t\tenforcements: [policy.enforcement],\n\t\t});\n\t}\n\treturn manifests;\n}\n"]}
1
+ {"version":3,"file":"lane-tool-manifests.js","sourceRoot":"","sources":["../../../src/core/orchestration/lane-tool-manifests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAGrG,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACzC,MAAM;IACN,MAAM;IACN,MAAM;IACN,IAAI;IACJ,OAAO;IACP,MAAM;IACN,QAAQ;IACR,aAAa;CACJ,CAAC;AACX,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,GAAG,0BAA0B,EAAE,UAAU,EAAE,iBAAiB,CAAU,CAAC;AAExH;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACrC,OAA6B,EAC7B,gBAAmC;IAEnC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC1C,MAAM,SAAS,GAA6B,EAAE,CAAC;IAE/C,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,SAAS;QACrC,MAAM,MAAM,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,4BAA4B,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACnE,IAAI,CAAC,UAAU,IAAI,CAAC,MAAM;YAAE,SAAS;QACrC,SAAS,CAAC,IAAI,CAAC;YACd,QAAQ;YACR,eAAe,EAAE,YAAY,QAAQ,KAAK;YAC1C,YAAY,EAAE,CAAC,UAAU,CAAC;YAC1B,KAAK,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;YACrB,YAAY,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC;SAClC,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC","sourcesContent":["import { getToolCapabilityPolicy, resolveProfileToolCapability } from \"../tool-capability-policy.ts\";\nimport type { OrchestrationProfile, ToolCapabilityManifest } from \"./contracts.ts\";\n\nexport const CLASSIFIED_LANE_TOOL_NAMES = [\n\t\"read\",\n\t\"grep\",\n\t\"find\",\n\t\"ls\",\n\t\"write\",\n\t\"edit\",\n\t\"memory\",\n\t\"run_process\",\n] as const;\nexport const ORCHESTRATION_PROFILE_TOOL_NAMES = [...CLASSIFIED_LANE_TOOL_NAMES, \"delegate\", \"delegate_status\"] as const;\n\n/**\n * Manifest-only lane catalogue. It contains no tool factories, so policy compilation can omit\n * denied tools before their executable implementations are constructed.\n */\nexport function buildLaneToolManifests(\n\tprofile: OrchestrationProfile,\n\tenabledToolNames: readonly string[],\n): ToolCapabilityManifest[] {\n\tconst enabled = new Set(enabledToolNames);\n\tconst manifests: ToolCapabilityManifest[] = [];\n\n\tfor (const toolName of profile.toolNames) {\n\t\tif (!enabled.has(toolName)) continue;\n\t\tconst policy = getToolCapabilityPolicy(toolName);\n\t\tconst capability = resolveProfileToolCapability(profile, toolName);\n\t\tif (!capability || !policy) continue;\n\t\tmanifests.push({\n\t\t\ttoolName,\n\t\t\tmoduleSpecifier: `../tools/${toolName}.ts`,\n\t\t\tcapabilities: [capability],\n\t\t\troles: [profile.role],\n\t\t\tenforcements: [policy.enforcement],\n\t\t});\n\t}\n\treturn manifests;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"model-binding.d.ts","sourceRoot":"","sources":["../../../src/core/orchestration/model-binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAA8B,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtF,MAAM,WAAW,0BAA0B;IAC1C,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,OAAO,EAAE,yBAAyB,CAAC;CACnC;AAED,wBAAgB,+BAA+B,CAC9C,OAAO,EAAE,yBAAyB,EAClC,aAAa,EAAE,aAAa,EAC5B,aAAa,GAAE,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,OAAqB,GACzD,0BAA0B,GAAG,SAAS,CAWxC;AAED;;;;GAIG;AACH,wBAAgB,mCAAmC,CAClD,OAAO,EAAE,oBAAoB,EAC7B,aAAa,EAAE,aAAa,EAC5B,aAAa,GAAE,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,OAAqB,GACzD,0BAA0B,GAAG,SAAS,CAUxC","sourcesContent":["import { type Api, getSupportedThinkingLevels, type Model } from \"@caupulican/pi-ai\";\nimport type { ModelRegistry } from \"../model-registry.ts\";\nimport type { OrchestrationModelBinding, OrchestrationProfile } from \"./contracts.ts\";\n\nexport interface ResolvedOrchestrationModel {\n\tmodel: Model<Api>;\n\tbinding: OrchestrationModelBinding;\n}\n\nexport function resolvePinnedOrchestrationModel(\n\tbinding: OrchestrationModelBinding,\n\tmodelRegistry: ModelRegistry,\n\tisUnavailable: (model: Model<Api>) => boolean = () => false,\n): ResolvedOrchestrationModel | undefined {\n\tconst model = modelRegistry.find(binding.provider, binding.modelId);\n\tif (\n\t\t!model ||\n\t\t!modelRegistry.hasConfiguredAuth(model) ||\n\t\tisUnavailable(model) ||\n\t\t!getSupportedThinkingLevels(model).includes(binding.thinkingLevel)\n\t) {\n\t\treturn undefined;\n\t}\n\treturn { model, binding: structuredClone(binding) };\n}\n\n/**\n * Resolve an owner-authored model policy without weakening it. Fixed policies never fall through;\n * ordered policies use only their declared order, and every candidate must have configured auth\n * plus exact support for its pinned thinking level.\n */\nexport function resolveConfiguredOrchestrationModel(\n\tprofile: OrchestrationProfile,\n\tmodelRegistry: ModelRegistry,\n\tisUnavailable: (model: Model<Api>) => boolean = () => false,\n): ResolvedOrchestrationModel | undefined {\n\tfor (const binding of profile.modelPolicy.candidates) {\n\t\tconst resolved = resolvePinnedOrchestrationModel(binding, modelRegistry, isUnavailable);\n\t\tif (!resolved) {\n\t\t\tif (profile.modelPolicy.mode === \"fixed\") return undefined;\n\t\t\tcontinue;\n\t\t}\n\t\treturn resolved;\n\t}\n\treturn undefined;\n}\n"]}
1
+ {"version":3,"file":"model-binding.d.ts","sourceRoot":"","sources":["../../../src/core/orchestration/model-binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAA8B,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtF,MAAM,WAAW,0BAA0B;IAC1C,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,OAAO,EAAE,yBAAyB,CAAC;CACnC;AAED,wBAAgB,+BAA+B,CAC9C,OAAO,EAAE,yBAAyB,EAClC,aAAa,EAAE,aAAa,EAC5B,aAAa,GAAE,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,OAAqB,GACzD,0BAA0B,GAAG,SAAS,CAWxC;AAED;;;;GAIG;AACH,wBAAgB,mCAAmC,CAClD,OAAO,EAAE,oBAAoB,EAC7B,aAAa,EAAE,aAAa,EAC5B,aAAa,GAAE,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,OAAqB,GACzD,0BAA0B,GAAG,SAAS,CAUxC"}
@@ -1 +1 @@
1
- {"version":3,"file":"model-binding.js","sourceRoot":"","sources":["../../../src/core/orchestration/model-binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,0BAA0B,EAAc,MAAM,mBAAmB,CAAC;AASrF,MAAM,UAAU,+BAA+B,CAC9C,OAAkC,EAClC,aAA4B,EAC5B,aAAa,GAAmC,GAAG,EAAE,CAAC,KAAK,EAClB;IACzC,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACpE,IACC,CAAC,KAAK;QACN,CAAC,aAAa,CAAC,iBAAiB,CAAC,KAAK,CAAC;QACvC,aAAa,CAAC,KAAK,CAAC;QACpB,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,EACjE,CAAC;QACF,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;AAAA,CACpD;AAED;;;;GAIG;AACH,MAAM,UAAU,mCAAmC,CAClD,OAA6B,EAC7B,aAA4B,EAC5B,aAAa,GAAmC,GAAG,EAAE,CAAC,KAAK,EAClB;IACzC,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;QACtD,MAAM,QAAQ,GAAG,+BAA+B,CAAC,OAAO,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;QACxF,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,KAAK,OAAO;gBAAE,OAAO,SAAS,CAAC;YAC3D,SAAS;QACV,CAAC;QACD,OAAO,QAAQ,CAAC;IACjB,CAAC;IACD,OAAO,SAAS,CAAC;AAAA,CACjB","sourcesContent":["import { type Api, getSupportedThinkingLevels, type Model } from \"@caupulican/pi-ai\";\nimport type { ModelRegistry } from \"../model-registry.ts\";\nimport type { OrchestrationModelBinding, OrchestrationProfile } from \"./contracts.ts\";\n\nexport interface ResolvedOrchestrationModel {\n\tmodel: Model<Api>;\n\tbinding: OrchestrationModelBinding;\n}\n\nexport function resolvePinnedOrchestrationModel(\n\tbinding: OrchestrationModelBinding,\n\tmodelRegistry: ModelRegistry,\n\tisUnavailable: (model: Model<Api>) => boolean = () => false,\n): ResolvedOrchestrationModel | undefined {\n\tconst model = modelRegistry.find(binding.provider, binding.modelId);\n\tif (\n\t\t!model ||\n\t\t!modelRegistry.hasConfiguredAuth(model) ||\n\t\tisUnavailable(model) ||\n\t\t!getSupportedThinkingLevels(model).includes(binding.thinkingLevel)\n\t) {\n\t\treturn undefined;\n\t}\n\treturn { model, binding: structuredClone(binding) };\n}\n\n/**\n * Resolve an owner-authored model policy without weakening it. Fixed policies never fall through;\n * ordered policies use only their declared order, and every candidate must have configured auth\n * plus exact support for its pinned thinking level.\n */\nexport function resolveConfiguredOrchestrationModel(\n\tprofile: OrchestrationProfile,\n\tmodelRegistry: ModelRegistry,\n\tisUnavailable: (model: Model<Api>) => boolean = () => false,\n): ResolvedOrchestrationModel | undefined {\n\tfor (const binding of profile.modelPolicy.candidates) {\n\t\tconst resolved = resolvePinnedOrchestrationModel(binding, modelRegistry, isUnavailable);\n\t\tif (!resolved) {\n\t\t\tif (profile.modelPolicy.mode === \"fixed\") return undefined;\n\t\t\tcontinue;\n\t\t}\n\t\treturn resolved;\n\t}\n\treturn undefined;\n}\n"]}
1
+ {"version":3,"file":"model-binding.js","sourceRoot":"","sources":["../../../src/core/orchestration/model-binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,0BAA0B,EAAc,MAAM,mBAAmB,CAAC;AASrF,MAAM,UAAU,+BAA+B,CAC9C,OAAkC,EAClC,aAA4B,EAC5B,aAAa,GAAmC,GAAG,EAAE,CAAC,KAAK;IAE3D,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACpE,IACC,CAAC,KAAK;QACN,CAAC,aAAa,CAAC,iBAAiB,CAAC,KAAK,CAAC;QACvC,aAAa,CAAC,KAAK,CAAC;QACpB,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,EACjE,CAAC;QACF,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;AACrD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mCAAmC,CAClD,OAA6B,EAC7B,aAA4B,EAC5B,aAAa,GAAmC,GAAG,EAAE,CAAC,KAAK;IAE3D,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;QACtD,MAAM,QAAQ,GAAG,+BAA+B,CAAC,OAAO,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;QACxF,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,KAAK,OAAO;gBAAE,OAAO,SAAS,CAAC;YAC3D,SAAS;QACV,CAAC;QACD,OAAO,QAAQ,CAAC;IACjB,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC","sourcesContent":["import { type Api, getSupportedThinkingLevels, type Model } from \"@caupulican/pi-ai\";\nimport type { ModelRegistry } from \"../model-registry.ts\";\nimport type { OrchestrationModelBinding, OrchestrationProfile } from \"./contracts.ts\";\n\nexport interface ResolvedOrchestrationModel {\n\tmodel: Model<Api>;\n\tbinding: OrchestrationModelBinding;\n}\n\nexport function resolvePinnedOrchestrationModel(\n\tbinding: OrchestrationModelBinding,\n\tmodelRegistry: ModelRegistry,\n\tisUnavailable: (model: Model<Api>) => boolean = () => false,\n): ResolvedOrchestrationModel | undefined {\n\tconst model = modelRegistry.find(binding.provider, binding.modelId);\n\tif (\n\t\t!model ||\n\t\t!modelRegistry.hasConfiguredAuth(model) ||\n\t\tisUnavailable(model) ||\n\t\t!getSupportedThinkingLevels(model).includes(binding.thinkingLevel)\n\t) {\n\t\treturn undefined;\n\t}\n\treturn { model, binding: structuredClone(binding) };\n}\n\n/**\n * Resolve an owner-authored model policy without weakening it. Fixed policies never fall through;\n * ordered policies use only their declared order, and every candidate must have configured auth\n * plus exact support for its pinned thinking level.\n */\nexport function resolveConfiguredOrchestrationModel(\n\tprofile: OrchestrationProfile,\n\tmodelRegistry: ModelRegistry,\n\tisUnavailable: (model: Model<Api>) => boolean = () => false,\n): ResolvedOrchestrationModel | undefined {\n\tfor (const binding of profile.modelPolicy.candidates) {\n\t\tconst resolved = resolvePinnedOrchestrationModel(binding, modelRegistry, isUnavailable);\n\t\tif (!resolved) {\n\t\t\tif (profile.modelPolicy.mode === \"fixed\") return undefined;\n\t\t\tcontinue;\n\t\t}\n\t\treturn resolved;\n\t}\n\treturn undefined;\n}\n"]}