@roackb2/heddle 1.3.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (936) hide show
  1. package/README.md +12 -4
  2. package/dist/examples/conversation-engine.js +2 -2
  3. package/dist/examples/conversation-engine.js.map +1 -1
  4. package/dist/examples/cyberloop-observer.js +2 -2
  5. package/dist/examples/cyberloop-observer.js.map +1 -1
  6. package/dist/examples/heartbeat-scheduler.js +15 -11
  7. package/dist/examples/heartbeat-scheduler.js.map +1 -1
  8. package/dist/examples/heartbeat.js +5 -5
  9. package/dist/examples/heartbeat.js.map +1 -1
  10. package/dist/examples/host-events.js +4 -4
  11. package/dist/examples/host-events.js.map +1 -1
  12. package/dist/examples/programmatic-loop.js +5 -6
  13. package/dist/examples/programmatic-loop.js.map +1 -1
  14. package/dist/examples/repo-investigator.js +2 -2
  15. package/dist/examples/repo-investigator.js.map +1 -1
  16. package/dist/src/cli/ask.d.ts +1 -1
  17. package/dist/src/cli/ask.d.ts.map +1 -1
  18. package/dist/src/cli/ask.js +8 -8
  19. package/dist/src/cli/ask.js.map +1 -1
  20. package/dist/src/cli/chat/adapters/slash-command-context.d.ts.map +1 -1
  21. package/dist/src/cli/chat/adapters/slash-command-context.js +7 -7
  22. package/dist/src/cli/chat/adapters/slash-command-context.js.map +1 -1
  23. package/dist/src/cli/chat/components/RuntimeHostInterstitial.d.ts +1 -1
  24. package/dist/src/cli/chat/components/RuntimeHostInterstitial.d.ts.map +1 -1
  25. package/dist/src/cli/chat/hooks/controllers/run/tui-agent-turn-result.d.ts.map +1 -1
  26. package/dist/src/cli/chat/hooks/controllers/run/tui-agent-turn-result.js +4 -4
  27. package/dist/src/cli/chat/hooks/controllers/run/tui-agent-turn-result.js.map +1 -1
  28. package/dist/src/cli/chat/hooks/controllers/run/tui-compaction-status.d.ts +2 -3
  29. package/dist/src/cli/chat/hooks/controllers/run/tui-compaction-status.d.ts.map +1 -1
  30. package/dist/src/cli/chat/hooks/controllers/run/tui-compaction-status.js.map +1 -1
  31. package/dist/src/cli/chat/hooks/controllers/run/tui-direct-shell-result.d.ts.map +1 -1
  32. package/dist/src/cli/chat/hooks/controllers/run/tui-direct-shell-result.js +12 -8
  33. package/dist/src/cli/chat/hooks/controllers/run/tui-direct-shell-result.js.map +1 -1
  34. package/dist/src/cli/chat/hooks/controllers/run/tui-direct-shell.d.ts +1 -2
  35. package/dist/src/cli/chat/hooks/controllers/run/tui-direct-shell.d.ts.map +1 -1
  36. package/dist/src/cli/chat/hooks/controllers/run/tui-direct-shell.js +6 -7
  37. package/dist/src/cli/chat/hooks/controllers/run/tui-direct-shell.js.map +1 -1
  38. package/dist/src/cli/chat/hooks/controllers/run/tui-ordinary-turn.d.ts.map +1 -1
  39. package/dist/src/cli/chat/hooks/controllers/run/tui-ordinary-turn.js +16 -12
  40. package/dist/src/cli/chat/hooks/controllers/run/tui-ordinary-turn.js.map +1 -1
  41. package/dist/src/cli/chat/hooks/controllers/run/tui-run-loop-events.d.ts +1 -1
  42. package/dist/src/cli/chat/hooks/controllers/run/tui-run-loop-events.d.ts.map +1 -1
  43. package/dist/src/cli/chat/hooks/controllers/run/tui-tool-approval.d.ts +5 -4
  44. package/dist/src/cli/chat/hooks/controllers/run/tui-tool-approval.d.ts.map +1 -1
  45. package/dist/src/cli/chat/hooks/controllers/run/tui-tool-approval.js +7 -8
  46. package/dist/src/cli/chat/hooks/controllers/run/tui-tool-approval.js.map +1 -1
  47. package/dist/src/cli/chat/hooks/controllers/useAgentRunController.d.ts.map +1 -1
  48. package/dist/src/cli/chat/hooks/controllers/useAgentRunController.js +13 -14
  49. package/dist/src/cli/chat/hooks/controllers/useAgentRunController.js.map +1 -1
  50. package/dist/src/cli/chat/hooks/controllers/useChatAppController.d.ts.map +1 -1
  51. package/dist/src/cli/chat/hooks/controllers/useChatAppController.js +11 -7
  52. package/dist/src/cli/chat/hooks/controllers/useChatAppController.js.map +1 -1
  53. package/dist/src/cli/chat/hooks/useChatSessions.js +2 -2
  54. package/dist/src/cli/chat/hooks/useChatSessions.js.map +1 -1
  55. package/dist/src/cli/chat/hooks/useChatStatusSummary.d.ts +10 -4
  56. package/dist/src/cli/chat/hooks/useChatStatusSummary.d.ts.map +1 -1
  57. package/dist/src/cli/chat/hooks/useChatStatusSummary.js +2 -2
  58. package/dist/src/cli/chat/hooks/useChatStatusSummary.js.map +1 -1
  59. package/dist/src/cli/chat/hooks/useProjectApprovals.d.ts +2 -2
  60. package/dist/src/cli/chat/hooks/useProjectApprovals.d.ts.map +1 -1
  61. package/dist/src/cli/chat/hooks/useProjectApprovals.js +17 -8
  62. package/dist/src/cli/chat/hooks/useProjectApprovals.js.map +1 -1
  63. package/dist/src/cli/chat/state/compaction.d.ts +2 -1
  64. package/dist/src/cli/chat/state/compaction.d.ts.map +1 -1
  65. package/dist/src/cli/chat/state/compaction.js +1 -1
  66. package/dist/src/cli/chat/state/compaction.js.map +1 -1
  67. package/dist/src/cli/chat/submit.d.ts.map +1 -1
  68. package/dist/src/cli/chat/submit.js +13 -11
  69. package/dist/src/cli/chat/submit.js.map +1 -1
  70. package/dist/src/cli/chat/utils/format.d.ts +0 -4
  71. package/dist/src/cli/chat/utils/format.d.ts.map +1 -1
  72. package/dist/src/cli/chat/utils/format.js +0 -5
  73. package/dist/src/cli/chat/utils/format.js.map +1 -1
  74. package/dist/src/cli/chat/utils/runtime.d.ts +2 -4
  75. package/dist/src/cli/chat/utils/runtime.d.ts.map +1 -1
  76. package/dist/src/cli/chat/utils/runtime.js +8 -10
  77. package/dist/src/cli/chat/utils/runtime.js.map +1 -1
  78. package/dist/src/cli/heartbeat/output.d.ts +2 -2
  79. package/dist/src/cli/heartbeat/output.d.ts.map +1 -1
  80. package/dist/src/cli/heartbeat/output.js +7 -5
  81. package/dist/src/cli/heartbeat/output.js.map +1 -1
  82. package/dist/src/cli/heartbeat/store.js +2 -2
  83. package/dist/src/cli/heartbeat/store.js.map +1 -1
  84. package/dist/src/cli/heartbeat/task-commands.js +42 -30
  85. package/dist/src/cli/heartbeat/task-commands.js.map +1 -1
  86. package/dist/src/cli/heartbeat/types.d.ts +1 -1
  87. package/dist/src/cli/heartbeat/types.d.ts.map +1 -1
  88. package/dist/src/cli/heartbeat/worker.d.ts.map +1 -1
  89. package/dist/src/cli/heartbeat/worker.js +26 -17
  90. package/dist/src/cli/heartbeat/worker.js.map +1 -1
  91. package/dist/src/cli/main.js +13 -34
  92. package/dist/src/cli/main.js.map +1 -1
  93. package/dist/src/cli/remote/control-plane-client.d.ts +10 -10
  94. package/dist/src/cli/remote/control-plane-client.d.ts.map +1 -1
  95. package/dist/src/core/agent/constants.d.ts +4 -0
  96. package/dist/src/core/agent/constants.d.ts.map +1 -0
  97. package/dist/src/core/agent/constants.js +4 -0
  98. package/dist/src/core/agent/constants.js.map +1 -0
  99. package/dist/src/core/agent/context/index.d.ts +3 -0
  100. package/dist/src/core/agent/context/index.d.ts.map +1 -0
  101. package/dist/src/core/agent/context/index.js +2 -0
  102. package/dist/src/core/agent/context/index.js.map +1 -0
  103. package/dist/src/core/agent/context/run-context-builder.d.ts +11 -0
  104. package/dist/src/core/agent/context/run-context-builder.d.ts.map +1 -0
  105. package/dist/src/core/agent/context/run-context-builder.js +76 -0
  106. package/dist/src/core/agent/context/run-context-builder.js.map +1 -0
  107. package/dist/src/core/agent/context/types.d.ts +11 -0
  108. package/dist/src/core/agent/context/types.d.ts.map +1 -0
  109. package/dist/src/core/agent/context/types.js +2 -0
  110. package/dist/src/core/agent/context/types.js.map +1 -0
  111. package/dist/src/core/agent/finish/index.d.ts +3 -0
  112. package/dist/src/core/agent/finish/index.d.ts.map +1 -0
  113. package/dist/src/core/agent/finish/index.js +2 -0
  114. package/dist/src/core/agent/finish/index.js.map +1 -0
  115. package/dist/src/core/agent/finish/run-finisher.d.ts +16 -0
  116. package/dist/src/core/agent/finish/run-finisher.d.ts.map +1 -0
  117. package/dist/src/core/agent/finish/run-finisher.js +67 -0
  118. package/dist/src/core/agent/finish/run-finisher.js.map +1 -0
  119. package/dist/src/core/agent/finish/types.d.ts +23 -0
  120. package/dist/src/core/agent/finish/types.d.ts.map +1 -0
  121. package/dist/src/core/agent/finish/types.js +2 -0
  122. package/dist/src/core/agent/finish/types.js.map +1 -0
  123. package/dist/src/core/agent/history/history-sanitizer.d.ts +15 -0
  124. package/dist/src/core/agent/history/history-sanitizer.d.ts.map +1 -0
  125. package/dist/src/core/agent/history/history-sanitizer.js +40 -0
  126. package/dist/src/core/agent/history/history-sanitizer.js.map +1 -0
  127. package/dist/src/core/agent/history/index.d.ts +3 -0
  128. package/dist/src/core/agent/history/index.d.ts.map +1 -0
  129. package/dist/src/core/agent/history/index.js +2 -0
  130. package/dist/src/core/agent/history/index.js.map +1 -0
  131. package/dist/src/core/agent/history/types.d.ts +16 -0
  132. package/dist/src/core/agent/history/types.d.ts.map +1 -0
  133. package/dist/src/core/agent/history/types.js +2 -0
  134. package/dist/src/core/agent/history/types.js.map +1 -0
  135. package/dist/src/core/agent/index.d.ts +3 -0
  136. package/dist/src/core/agent/index.d.ts.map +1 -0
  137. package/dist/src/core/agent/index.js +2 -0
  138. package/dist/src/core/agent/index.js.map +1 -0
  139. package/dist/src/core/agent/memory/index.d.ts +3 -0
  140. package/dist/src/core/agent/memory/index.d.ts.map +1 -0
  141. package/dist/src/core/agent/memory/index.js +2 -0
  142. package/dist/src/core/agent/memory/index.js.map +1 -0
  143. package/dist/src/core/agent/memory/memory-checkpoint-tracker.d.ts +16 -0
  144. package/dist/src/core/agent/memory/memory-checkpoint-tracker.d.ts.map +1 -0
  145. package/dist/src/core/agent/memory/memory-checkpoint-tracker.js +92 -0
  146. package/dist/src/core/agent/memory/memory-checkpoint-tracker.js.map +1 -0
  147. package/dist/src/core/agent/memory/types.d.ts +13 -0
  148. package/dist/src/core/agent/memory/types.d.ts.map +1 -0
  149. package/dist/src/core/agent/memory/types.js +2 -0
  150. package/dist/src/core/agent/memory/types.js.map +1 -0
  151. package/dist/src/core/agent/model/index.d.ts +3 -0
  152. package/dist/src/core/agent/model/index.d.ts.map +1 -0
  153. package/dist/src/core/agent/model/index.js +2 -0
  154. package/dist/src/core/agent/model/index.js.map +1 -0
  155. package/dist/src/core/agent/model/model-turn-service.d.ts +12 -0
  156. package/dist/src/core/agent/model/model-turn-service.d.ts.map +1 -0
  157. package/dist/src/core/agent/model/model-turn-service.js +103 -0
  158. package/dist/src/core/agent/model/model-turn-service.js.map +1 -0
  159. package/dist/src/core/agent/model/types.d.ts +12 -0
  160. package/dist/src/core/agent/model/types.d.ts.map +1 -0
  161. package/dist/src/core/agent/model/types.js +2 -0
  162. package/dist/src/core/agent/model/types.js.map +1 -0
  163. package/dist/src/core/agent/mutation/index.d.ts +3 -0
  164. package/dist/src/core/agent/mutation/index.d.ts.map +1 -0
  165. package/dist/src/core/agent/mutation/index.js +2 -0
  166. package/dist/src/core/agent/mutation/index.js.map +1 -0
  167. package/dist/src/core/agent/mutation/mutation-tracker.d.ts +20 -0
  168. package/dist/src/core/agent/mutation/mutation-tracker.d.ts.map +1 -0
  169. package/dist/src/core/agent/mutation/mutation-tracker.js +75 -0
  170. package/dist/src/core/agent/mutation/mutation-tracker.js.map +1 -0
  171. package/dist/src/core/agent/mutation/types.d.ts +13 -0
  172. package/dist/src/core/agent/mutation/types.d.ts.map +1 -0
  173. package/dist/src/core/agent/mutation/types.js +2 -0
  174. package/dist/src/core/agent/mutation/types.js.map +1 -0
  175. package/dist/src/core/agent/planning/index.d.ts +3 -0
  176. package/dist/src/core/agent/planning/index.d.ts.map +1 -0
  177. package/dist/src/core/agent/planning/index.js +2 -0
  178. package/dist/src/core/agent/planning/index.js.map +1 -0
  179. package/dist/src/core/agent/planning/plan-state-parser.d.ts +9 -0
  180. package/dist/src/core/agent/planning/plan-state-parser.d.ts.map +1 -0
  181. package/dist/src/core/agent/planning/plan-state-parser.js +35 -0
  182. package/dist/src/core/agent/planning/plan-state-parser.js.map +1 -0
  183. package/dist/src/core/agent/planning/types.d.ts +7 -0
  184. package/dist/src/core/agent/planning/types.d.ts.map +1 -0
  185. package/dist/src/core/agent/planning/types.js +2 -0
  186. package/dist/src/core/agent/planning/types.js.map +1 -0
  187. package/dist/src/core/agent/service.d.ts +10 -0
  188. package/dist/src/core/agent/service.d.ts.map +1 -0
  189. package/dist/src/core/agent/service.js +44 -0
  190. package/dist/src/core/agent/service.js.map +1 -0
  191. package/dist/src/core/agent/tools/index.d.ts +4 -0
  192. package/dist/src/core/agent/tools/index.d.ts.map +1 -0
  193. package/dist/src/core/agent/tools/index.js +3 -0
  194. package/dist/src/core/agent/tools/index.js.map +1 -0
  195. package/dist/src/core/agent/tools/tool-dispatcher.d.ts +47 -0
  196. package/dist/src/core/agent/tools/tool-dispatcher.d.ts.map +1 -0
  197. package/dist/src/core/agent/tools/tool-dispatcher.js +123 -0
  198. package/dist/src/core/agent/tools/tool-dispatcher.js.map +1 -0
  199. package/dist/src/core/agent/tools/tool-turn-service.d.ts +13 -0
  200. package/dist/src/core/agent/tools/tool-turn-service.d.ts.map +1 -0
  201. package/dist/src/core/agent/tools/tool-turn-service.js +129 -0
  202. package/dist/src/core/agent/tools/tool-turn-service.js.map +1 -0
  203. package/dist/src/core/agent/tools/types.d.ts +19 -0
  204. package/dist/src/core/agent/tools/types.d.ts.map +1 -0
  205. package/dist/src/core/agent/tools/types.js +2 -0
  206. package/dist/src/core/agent/tools/types.js.map +1 -0
  207. package/dist/src/core/agent/types.d.ts +83 -0
  208. package/dist/src/core/agent/types.d.ts.map +1 -0
  209. package/dist/src/core/agent/types.js +2 -0
  210. package/dist/src/core/agent/types.js.map +1 -0
  211. package/dist/src/core/agent/utils/abort.d.ts +2 -0
  212. package/dist/src/core/agent/utils/abort.d.ts.map +1 -0
  213. package/dist/src/core/agent/utils/abort.js +9 -0
  214. package/dist/src/core/agent/utils/abort.js.map +1 -0
  215. package/dist/src/core/agent/utils/index.d.ts +4 -0
  216. package/dist/src/core/agent/utils/index.d.ts.map +1 -0
  217. package/dist/src/core/agent/utils/index.js +4 -0
  218. package/dist/src/core/agent/utils/index.js.map +1 -0
  219. package/dist/src/core/agent/utils/serialization.d.ts +2 -0
  220. package/dist/src/core/agent/utils/serialization.d.ts.map +1 -0
  221. package/dist/src/core/agent/utils/serialization.js +11 -0
  222. package/dist/src/core/agent/utils/serialization.js.map +1 -0
  223. package/dist/src/core/agent/utils/tool-input.d.ts +3 -0
  224. package/dist/src/core/agent/utils/tool-input.d.ts.map +1 -0
  225. package/dist/src/core/agent/{util.js → utils/tool-input.js} +1 -28
  226. package/dist/src/core/agent/utils/tool-input.js.map +1 -0
  227. package/dist/src/core/approvals/index.d.ts +5 -0
  228. package/dist/src/core/approvals/index.d.ts.map +1 -0
  229. package/dist/src/core/approvals/index.js +4 -0
  230. package/dist/src/core/approvals/index.js.map +1 -0
  231. package/dist/src/core/approvals/pending-approval.d.ts +17 -0
  232. package/dist/src/core/approvals/pending-approval.d.ts.map +1 -0
  233. package/dist/src/core/approvals/pending-approval.js +27 -0
  234. package/dist/src/core/approvals/pending-approval.js.map +1 -0
  235. package/dist/src/core/approvals/policies.d.ts +20 -0
  236. package/dist/src/core/approvals/policies.d.ts.map +1 -0
  237. package/dist/src/core/approvals/policies.js +56 -0
  238. package/dist/src/core/approvals/policies.js.map +1 -0
  239. package/dist/src/core/approvals/remembered-rules/codec.d.ts +17 -0
  240. package/dist/src/core/approvals/remembered-rules/codec.d.ts.map +1 -0
  241. package/dist/src/core/approvals/remembered-rules/codec.js +117 -0
  242. package/dist/src/core/approvals/remembered-rules/codec.js.map +1 -0
  243. package/dist/src/core/approvals/remembered-rules/index.d.ts +5 -0
  244. package/dist/src/core/approvals/remembered-rules/index.d.ts.map +1 -0
  245. package/dist/src/core/approvals/remembered-rules/index.js +4 -0
  246. package/dist/src/core/approvals/remembered-rules/index.js.map +1 -0
  247. package/dist/src/core/approvals/remembered-rules/repository.d.ts +11 -0
  248. package/dist/src/core/approvals/remembered-rules/repository.d.ts.map +1 -0
  249. package/dist/src/core/approvals/remembered-rules/repository.js +29 -0
  250. package/dist/src/core/approvals/remembered-rules/repository.js.map +1 -0
  251. package/dist/src/core/approvals/remembered-rules/schemas.d.ts +55 -0
  252. package/dist/src/core/approvals/remembered-rules/schemas.d.ts.map +1 -0
  253. package/dist/src/core/approvals/remembered-rules/schemas.js +24 -0
  254. package/dist/src/core/approvals/remembered-rules/schemas.js.map +1 -0
  255. package/dist/src/core/approvals/remembered-rules/service.d.ts +28 -0
  256. package/dist/src/core/approvals/remembered-rules/service.d.ts.map +1 -0
  257. package/dist/src/core/approvals/remembered-rules/service.js +200 -0
  258. package/dist/src/core/approvals/remembered-rules/service.js.map +1 -0
  259. package/dist/src/core/approvals/remembered-rules/types.d.ts +12 -0
  260. package/dist/src/core/approvals/remembered-rules/types.d.ts.map +1 -0
  261. package/dist/src/core/approvals/remembered-rules/types.js +2 -0
  262. package/dist/src/core/approvals/remembered-rules/types.js.map +1 -0
  263. package/dist/src/core/approvals/service.d.ts +13 -0
  264. package/dist/src/core/approvals/service.d.ts.map +1 -0
  265. package/dist/src/core/approvals/service.js +45 -0
  266. package/dist/src/core/approvals/service.js.map +1 -0
  267. package/dist/src/core/approvals/types.d.ts +24 -1
  268. package/dist/src/core/approvals/types.d.ts.map +1 -1
  269. package/dist/src/core/chat/engine/compaction/constants.d.ts +15 -0
  270. package/dist/src/core/chat/engine/compaction/constants.d.ts.map +1 -0
  271. package/dist/src/core/chat/engine/compaction/constants.js +15 -0
  272. package/dist/src/core/chat/engine/compaction/constants.js.map +1 -0
  273. package/dist/src/core/chat/engine/compaction/context-builder.d.ts +10 -0
  274. package/dist/src/core/chat/engine/compaction/context-builder.d.ts.map +1 -0
  275. package/dist/src/core/chat/engine/compaction/context-builder.js +47 -0
  276. package/dist/src/core/chat/engine/compaction/context-builder.js.map +1 -0
  277. package/dist/src/core/chat/engine/compaction/index.d.ts +3 -0
  278. package/dist/src/core/chat/engine/compaction/index.d.ts.map +1 -0
  279. package/dist/src/core/chat/engine/compaction/index.js +2 -0
  280. package/dist/src/core/chat/engine/compaction/index.js.map +1 -0
  281. package/dist/src/core/chat/engine/compaction/service.d.ts +21 -0
  282. package/dist/src/core/chat/engine/compaction/service.d.ts.map +1 -0
  283. package/dist/src/core/chat/engine/compaction/service.js +189 -0
  284. package/dist/src/core/chat/engine/compaction/service.js.map +1 -0
  285. package/dist/src/core/chat/engine/compaction/split-policy.d.ts +14 -0
  286. package/dist/src/core/chat/engine/compaction/split-policy.d.ts.map +1 -0
  287. package/dist/src/core/chat/engine/compaction/split-policy.js +52 -0
  288. package/dist/src/core/chat/engine/compaction/split-policy.js.map +1 -0
  289. package/dist/src/core/chat/engine/compaction/summarizer/context-builder.d.ts +9 -0
  290. package/dist/src/core/chat/engine/compaction/summarizer/context-builder.d.ts.map +1 -0
  291. package/dist/src/core/chat/engine/compaction/summarizer/context-builder.js +35 -0
  292. package/dist/src/core/chat/engine/compaction/summarizer/context-builder.js.map +1 -0
  293. package/dist/src/core/chat/engine/compaction/summarizer/index.d.ts +3 -0
  294. package/dist/src/core/chat/engine/compaction/summarizer/index.d.ts.map +1 -0
  295. package/dist/src/core/chat/engine/compaction/summarizer/index.js +2 -0
  296. package/dist/src/core/chat/engine/compaction/summarizer/index.js.map +1 -0
  297. package/dist/src/core/chat/engine/compaction/summarizer/prompt.d.ts +2 -0
  298. package/dist/src/core/chat/engine/compaction/summarizer/prompt.d.ts.map +1 -0
  299. package/dist/src/core/chat/engine/compaction/summarizer/prompt.js +31 -0
  300. package/dist/src/core/chat/engine/compaction/summarizer/prompt.js.map +1 -0
  301. package/dist/src/core/chat/engine/compaction/summarizer/service.d.ts +14 -0
  302. package/dist/src/core/chat/engine/compaction/summarizer/service.d.ts.map +1 -0
  303. package/dist/src/core/chat/engine/compaction/summarizer/service.js +70 -0
  304. package/dist/src/core/chat/engine/compaction/summarizer/service.js.map +1 -0
  305. package/dist/src/core/chat/engine/compaction/summarizer/types.d.ts +19 -0
  306. package/dist/src/core/chat/engine/compaction/summarizer/types.d.ts.map +1 -0
  307. package/dist/src/core/chat/engine/compaction/summarizer/types.js +2 -0
  308. package/dist/src/core/chat/engine/compaction/summarizer/types.js.map +1 -0
  309. package/dist/src/core/chat/engine/compaction/summary-message.d.ts +18 -0
  310. package/dist/src/core/chat/engine/compaction/summary-message.d.ts.map +1 -0
  311. package/dist/src/core/chat/engine/compaction/summary-message.js +46 -0
  312. package/dist/src/core/chat/engine/compaction/summary-message.js.map +1 -0
  313. package/dist/src/core/chat/engine/compaction/text.d.ts +9 -0
  314. package/dist/src/core/chat/engine/compaction/text.d.ts.map +1 -0
  315. package/dist/src/core/chat/engine/compaction/text.js +26 -0
  316. package/dist/src/core/chat/engine/compaction/text.js.map +1 -0
  317. package/dist/src/core/chat/engine/compaction/token-estimator.d.ts +14 -0
  318. package/dist/src/core/chat/engine/compaction/token-estimator.d.ts.map +1 -0
  319. package/dist/src/core/chat/engine/compaction/token-estimator.js +41 -0
  320. package/dist/src/core/chat/engine/compaction/token-estimator.js.map +1 -0
  321. package/dist/src/core/chat/engine/compaction/transcript-renderer.d.ts +10 -0
  322. package/dist/src/core/chat/engine/compaction/transcript-renderer.d.ts.map +1 -0
  323. package/dist/src/core/chat/engine/compaction/transcript-renderer.js +62 -0
  324. package/dist/src/core/chat/engine/compaction/transcript-renderer.js.map +1 -0
  325. package/dist/src/core/chat/engine/compaction/types.d.ts +66 -0
  326. package/dist/src/core/chat/engine/compaction/types.d.ts.map +1 -0
  327. package/dist/src/core/chat/engine/compaction/types.js +2 -0
  328. package/dist/src/core/chat/engine/compaction/types.js.map +1 -0
  329. package/dist/src/core/chat/engine/index.d.ts +2 -2
  330. package/dist/src/core/chat/engine/index.d.ts.map +1 -1
  331. package/dist/src/core/chat/engine/index.js +1 -1
  332. package/dist/src/core/chat/engine/index.js.map +1 -1
  333. package/dist/src/core/chat/engine/sessions/archives/file-chat-archive-repository.d.ts +27 -0
  334. package/dist/src/core/chat/engine/sessions/archives/file-chat-archive-repository.d.ts.map +1 -0
  335. package/dist/src/core/chat/engine/sessions/archives/file-chat-archive-repository.js +146 -0
  336. package/dist/src/core/chat/engine/sessions/archives/file-chat-archive-repository.js.map +1 -0
  337. package/dist/src/core/chat/engine/sessions/archives/index.d.ts +3 -0
  338. package/dist/src/core/chat/engine/sessions/archives/index.d.ts.map +1 -0
  339. package/dist/src/core/chat/engine/sessions/archives/index.js +2 -0
  340. package/dist/src/core/chat/engine/sessions/archives/index.js.map +1 -0
  341. package/dist/src/core/chat/engine/sessions/archives/types.d.ts +19 -0
  342. package/dist/src/core/chat/engine/sessions/archives/types.d.ts.map +1 -0
  343. package/dist/src/core/chat/engine/sessions/archives/types.js +2 -0
  344. package/dist/src/core/chat/engine/sessions/archives/types.js.map +1 -0
  345. package/dist/src/core/chat/engine/sessions/leases/index.d.ts +3 -0
  346. package/dist/src/core/chat/engine/sessions/leases/index.d.ts.map +1 -0
  347. package/dist/src/core/chat/engine/sessions/leases/index.js +2 -0
  348. package/dist/src/core/chat/engine/sessions/leases/index.js.map +1 -0
  349. package/dist/src/core/chat/engine/sessions/leases/leases.d.ts +25 -0
  350. package/dist/src/core/chat/engine/sessions/leases/leases.d.ts.map +1 -0
  351. package/dist/src/core/chat/engine/sessions/leases/leases.js +74 -0
  352. package/dist/src/core/chat/engine/sessions/leases/leases.js.map +1 -0
  353. package/dist/src/core/chat/engine/sessions/leases/types.d.ts +12 -0
  354. package/dist/src/core/chat/engine/sessions/leases/types.d.ts.map +1 -0
  355. package/dist/src/core/chat/engine/sessions/leases/types.js +2 -0
  356. package/dist/src/core/chat/engine/sessions/leases/types.js.map +1 -0
  357. package/dist/src/core/chat/engine/sessions/preferences/service.d.ts +2 -2
  358. package/dist/src/core/chat/engine/sessions/preferences/service.d.ts.map +1 -1
  359. package/dist/src/core/chat/engine/sessions/preferences/service.js +1 -1
  360. package/dist/src/core/chat/engine/sessions/preferences/service.js.map +1 -1
  361. package/dist/src/core/chat/engine/sessions/records/conversation-lines.d.ts +12 -0
  362. package/dist/src/core/chat/engine/sessions/records/conversation-lines.d.ts.map +1 -0
  363. package/dist/src/core/chat/engine/sessions/records/conversation-lines.js +28 -0
  364. package/dist/src/core/chat/engine/sessions/records/conversation-lines.js.map +1 -0
  365. package/dist/src/core/chat/engine/sessions/records/index.d.ts +5 -0
  366. package/dist/src/core/chat/engine/sessions/records/index.d.ts.map +1 -0
  367. package/dist/src/core/chat/engine/sessions/records/index.js +4 -0
  368. package/dist/src/core/chat/engine/sessions/records/index.js.map +1 -0
  369. package/dist/src/core/chat/engine/sessions/records/records.d.ts +21 -0
  370. package/dist/src/core/chat/engine/sessions/records/records.d.ts.map +1 -0
  371. package/dist/src/core/chat/engine/sessions/records/records.js +91 -0
  372. package/dist/src/core/chat/engine/sessions/records/records.js.map +1 -0
  373. package/dist/src/core/chat/engine/sessions/records/titles.d.ts +15 -0
  374. package/dist/src/core/chat/engine/sessions/records/titles.d.ts.map +1 -0
  375. package/dist/src/core/chat/engine/sessions/records/titles.js +19 -0
  376. package/dist/src/core/chat/engine/sessions/records/titles.js.map +1 -0
  377. package/dist/src/core/chat/engine/sessions/records/types.d.ts +35 -0
  378. package/dist/src/core/chat/engine/sessions/records/types.d.ts.map +1 -0
  379. package/dist/src/core/chat/engine/sessions/records/types.js +2 -0
  380. package/dist/src/core/chat/engine/sessions/records/types.js.map +1 -0
  381. package/dist/src/core/chat/engine/sessions/repository/chat-session-codec.d.ts +23 -0
  382. package/dist/src/core/chat/engine/sessions/repository/chat-session-codec.d.ts.map +1 -0
  383. package/dist/src/core/chat/engine/sessions/repository/chat-session-codec.js +61 -0
  384. package/dist/src/core/chat/engine/sessions/repository/chat-session-codec.js.map +1 -0
  385. package/dist/src/core/chat/engine/sessions/repository/chat-session-schemas.d.ts +369 -0
  386. package/dist/src/core/chat/engine/sessions/repository/chat-session-schemas.d.ts.map +1 -0
  387. package/dist/src/core/chat/engine/sessions/repository/chat-session-schemas.js +262 -0
  388. package/dist/src/core/chat/engine/sessions/repository/chat-session-schemas.js.map +1 -0
  389. package/dist/src/core/chat/engine/sessions/repository/file-chat-session-repository.d.ts +22 -34
  390. package/dist/src/core/chat/engine/sessions/repository/file-chat-session-repository.d.ts.map +1 -1
  391. package/dist/src/core/chat/engine/sessions/repository/file-chat-session-repository.js +168 -439
  392. package/dist/src/core/chat/engine/sessions/repository/file-chat-session-repository.js.map +1 -1
  393. package/dist/src/core/chat/engine/sessions/repository/index.d.ts +3 -0
  394. package/dist/src/core/chat/engine/sessions/repository/index.d.ts.map +1 -0
  395. package/dist/src/core/chat/engine/sessions/repository/index.js +2 -0
  396. package/dist/src/core/chat/engine/sessions/repository/index.js.map +1 -0
  397. package/dist/src/core/chat/engine/sessions/repository/types.d.ts +33 -0
  398. package/dist/src/core/chat/engine/sessions/repository/types.d.ts.map +1 -0
  399. package/dist/src/core/chat/engine/sessions/repository/types.js +2 -0
  400. package/dist/src/core/chat/engine/sessions/repository/types.js.map +1 -0
  401. package/dist/src/core/chat/engine/sessions/service.d.ts +3 -5
  402. package/dist/src/core/chat/engine/sessions/service.d.ts.map +1 -1
  403. package/dist/src/core/chat/engine/sessions/service.js +22 -26
  404. package/dist/src/core/chat/engine/sessions/service.js.map +1 -1
  405. package/dist/src/core/chat/engine/sessions/types.d.ts +6 -0
  406. package/dist/src/core/chat/engine/sessions/types.d.ts.map +1 -0
  407. package/dist/src/core/chat/engine/sessions/types.js +2 -0
  408. package/dist/src/core/chat/engine/sessions/types.js.map +1 -0
  409. package/dist/src/core/chat/engine/turns/context/index.d.ts +3 -0
  410. package/dist/src/core/chat/engine/turns/context/index.d.ts.map +1 -0
  411. package/dist/src/core/chat/engine/turns/context/index.js +2 -0
  412. package/dist/src/core/chat/engine/turns/context/index.js.map +1 -0
  413. package/dist/src/core/chat/engine/turns/context/turn-context-builder.d.ts +8 -0
  414. package/dist/src/core/chat/engine/turns/context/turn-context-builder.d.ts.map +1 -0
  415. package/dist/src/core/chat/engine/turns/context/turn-context-builder.js +36 -0
  416. package/dist/src/core/chat/engine/turns/context/turn-context-builder.js.map +1 -0
  417. package/dist/src/core/chat/engine/turns/context/types.d.ts +28 -0
  418. package/dist/src/core/chat/engine/turns/context/types.d.ts.map +1 -0
  419. package/dist/src/core/chat/engine/turns/context/types.js +2 -0
  420. package/dist/src/core/chat/engine/turns/context/types.js.map +1 -0
  421. package/dist/src/core/chat/engine/turns/failure/failure-message-formatter.d.ts +10 -0
  422. package/dist/src/core/chat/engine/turns/failure/failure-message-formatter.d.ts.map +1 -0
  423. package/dist/src/core/chat/engine/turns/failure/failure-message-formatter.js +29 -0
  424. package/dist/src/core/chat/engine/turns/failure/failure-message-formatter.js.map +1 -0
  425. package/dist/src/core/chat/engine/turns/failure/index.d.ts +3 -0
  426. package/dist/src/core/chat/engine/turns/failure/index.d.ts.map +1 -0
  427. package/dist/src/core/chat/engine/turns/failure/index.js +2 -0
  428. package/dist/src/core/chat/engine/turns/failure/index.js.map +1 -0
  429. package/dist/src/core/chat/engine/turns/failure/types.d.ts +5 -0
  430. package/dist/src/core/chat/engine/turns/failure/types.d.ts.map +1 -0
  431. package/dist/src/core/chat/engine/turns/failure/types.js +2 -0
  432. package/dist/src/core/chat/engine/turns/failure/types.js.map +1 -0
  433. package/dist/src/core/chat/engine/turns/host/host-normalizer.d.ts +9 -0
  434. package/dist/src/core/chat/engine/turns/host/host-normalizer.d.ts.map +1 -0
  435. package/dist/src/core/chat/engine/turns/host/host-normalizer.js +51 -0
  436. package/dist/src/core/chat/engine/turns/host/host-normalizer.js.map +1 -0
  437. package/dist/src/core/chat/engine/turns/host/index.d.ts +3 -0
  438. package/dist/src/core/chat/engine/turns/host/index.d.ts.map +1 -0
  439. package/dist/src/core/chat/engine/turns/host/index.js +2 -0
  440. package/dist/src/core/chat/engine/turns/host/index.js.map +1 -0
  441. package/dist/src/core/chat/engine/turns/host/types.d.ts +17 -0
  442. package/dist/src/core/chat/engine/turns/host/types.d.ts.map +1 -0
  443. package/dist/src/core/chat/engine/turns/host/types.js +2 -0
  444. package/dist/src/core/chat/engine/turns/host/types.js.map +1 -0
  445. package/dist/src/core/chat/engine/turns/memory/index.d.ts +3 -0
  446. package/dist/src/core/chat/engine/turns/memory/index.d.ts.map +1 -0
  447. package/dist/src/core/chat/engine/turns/memory/index.js +2 -0
  448. package/dist/src/core/chat/engine/turns/memory/index.js.map +1 -0
  449. package/dist/src/core/chat/engine/turns/memory/turn-memory-maintenance.d.ts +17 -0
  450. package/dist/src/core/chat/engine/turns/memory/turn-memory-maintenance.d.ts.map +1 -0
  451. package/dist/src/core/chat/engine/turns/memory/turn-memory-maintenance.js +126 -0
  452. package/dist/src/core/chat/engine/turns/memory/turn-memory-maintenance.js.map +1 -0
  453. package/dist/src/core/chat/engine/turns/memory/types.d.ts +29 -0
  454. package/dist/src/core/chat/engine/turns/memory/types.d.ts.map +1 -0
  455. package/dist/src/core/chat/engine/turns/memory/types.js +2 -0
  456. package/dist/src/core/chat/engine/turns/memory/types.js.map +1 -0
  457. package/dist/src/core/chat/engine/turns/persistence/index.d.ts +4 -0
  458. package/dist/src/core/chat/engine/turns/persistence/index.d.ts.map +1 -0
  459. package/dist/src/core/chat/engine/turns/persistence/index.js +3 -0
  460. package/dist/src/core/chat/engine/turns/persistence/index.js.map +1 -0
  461. package/dist/src/core/chat/engine/turns/persistence/turn-artifacts.d.ts +9 -0
  462. package/dist/src/core/chat/engine/turns/persistence/turn-artifacts.d.ts.map +1 -0
  463. package/dist/src/core/chat/engine/turns/persistence/turn-artifacts.js +60 -0
  464. package/dist/src/core/chat/engine/turns/persistence/turn-artifacts.js.map +1 -0
  465. package/dist/src/core/chat/engine/turns/persistence/turn-persistence-service.d.ts +10 -0
  466. package/dist/src/core/chat/engine/turns/persistence/turn-persistence-service.d.ts.map +1 -0
  467. package/dist/src/core/chat/engine/turns/persistence/turn-persistence-service.js +50 -0
  468. package/dist/src/core/chat/engine/turns/persistence/turn-persistence-service.js.map +1 -0
  469. package/dist/src/core/chat/engine/turns/persistence/types.d.ts +69 -0
  470. package/dist/src/core/chat/engine/turns/persistence/types.d.ts.map +1 -0
  471. package/dist/src/core/chat/engine/turns/persistence/types.js +2 -0
  472. package/dist/src/core/chat/engine/turns/persistence/types.js.map +1 -0
  473. package/dist/src/core/chat/engine/turns/preflight/index.d.ts +3 -0
  474. package/dist/src/core/chat/engine/turns/preflight/index.d.ts.map +1 -0
  475. package/dist/src/core/chat/engine/turns/preflight/index.js +2 -0
  476. package/dist/src/core/chat/engine/turns/preflight/index.js.map +1 -0
  477. package/dist/src/core/chat/engine/turns/preflight/turn-preflight-service.d.ts +14 -0
  478. package/dist/src/core/chat/engine/turns/preflight/turn-preflight-service.d.ts.map +1 -0
  479. package/dist/src/core/chat/engine/turns/preflight/turn-preflight-service.js +85 -0
  480. package/dist/src/core/chat/engine/turns/preflight/turn-preflight-service.js.map +1 -0
  481. package/dist/src/core/chat/engine/turns/preflight/types.d.ts +48 -0
  482. package/dist/src/core/chat/engine/turns/preflight/types.d.ts.map +1 -0
  483. package/dist/src/core/chat/engine/turns/preflight/types.js +2 -0
  484. package/dist/src/core/chat/engine/turns/preflight/types.js.map +1 -0
  485. package/dist/src/core/chat/engine/turns/runtime/index.d.ts +3 -0
  486. package/dist/src/core/chat/engine/turns/runtime/index.d.ts.map +1 -0
  487. package/dist/src/core/chat/engine/turns/runtime/index.js +2 -0
  488. package/dist/src/core/chat/engine/turns/runtime/index.js.map +1 -0
  489. package/dist/src/core/chat/engine/turns/runtime/runtime-resolver.d.ts +14 -0
  490. package/dist/src/core/chat/engine/turns/runtime/runtime-resolver.d.ts.map +1 -0
  491. package/dist/src/core/chat/engine/turns/runtime/runtime-resolver.js +69 -0
  492. package/dist/src/core/chat/engine/turns/runtime/runtime-resolver.js.map +1 -0
  493. package/dist/src/core/chat/engine/turns/runtime/types.d.ts +24 -0
  494. package/dist/src/core/chat/engine/turns/runtime/types.d.ts.map +1 -0
  495. package/dist/src/core/chat/engine/turns/runtime/types.js +2 -0
  496. package/dist/src/core/chat/engine/turns/runtime/types.js.map +1 -0
  497. package/dist/src/core/chat/engine/turns/service.d.ts +8 -2
  498. package/dist/src/core/chat/engine/turns/service.d.ts.map +1 -1
  499. package/dist/src/core/chat/engine/turns/service.js +139 -25
  500. package/dist/src/core/chat/engine/turns/service.js.map +1 -1
  501. package/dist/src/core/chat/engine/turns/trace/index.d.ts +3 -0
  502. package/dist/src/core/chat/engine/turns/trace/index.d.ts.map +1 -0
  503. package/dist/src/core/chat/engine/turns/trace/index.js +2 -0
  504. package/dist/src/core/chat/engine/turns/trace/index.js.map +1 -0
  505. package/dist/src/core/chat/engine/turns/trace/trace-writer.d.ts +8 -0
  506. package/dist/src/core/chat/engine/turns/trace/trace-writer.d.ts.map +1 -0
  507. package/dist/src/core/chat/engine/turns/trace/trace-writer.js +14 -0
  508. package/dist/src/core/chat/engine/turns/trace/trace-writer.js.map +1 -0
  509. package/dist/src/core/chat/engine/turns/trace/types.d.ts +6 -0
  510. package/dist/src/core/chat/engine/turns/trace/types.d.ts.map +1 -0
  511. package/dist/src/core/chat/engine/turns/trace/types.js +2 -0
  512. package/dist/src/core/chat/engine/turns/trace/types.js.map +1 -0
  513. package/dist/src/core/chat/engine/turns/types.d.ts +44 -0
  514. package/dist/src/core/chat/engine/turns/types.d.ts.map +1 -0
  515. package/dist/src/core/chat/engine/turns/types.js +2 -0
  516. package/dist/src/core/chat/engine/turns/types.js.map +1 -0
  517. package/dist/src/core/chat/engine/types.d.ts +11 -16
  518. package/dist/src/core/chat/engine/types.d.ts.map +1 -1
  519. package/dist/src/core/chat/types.d.ts +18 -14
  520. package/dist/src/core/chat/types.d.ts.map +1 -1
  521. package/dist/src/core/commands/slash/modules/context.d.ts +2 -2
  522. package/dist/src/core/commands/slash/modules/context.d.ts.map +1 -1
  523. package/dist/src/core/commands/slash/modules/heartbeat/heartbeat-commands.d.ts +1 -1
  524. package/dist/src/core/commands/slash/modules/heartbeat/heartbeat-commands.d.ts.map +1 -1
  525. package/dist/src/core/commands/slash/modules/heartbeat/heartbeat-commands.js +20 -18
  526. package/dist/src/core/commands/slash/modules/heartbeat/heartbeat-commands.js.map +1 -1
  527. package/dist/src/core/heartbeat/checkpoint/index.d.ts +4 -0
  528. package/dist/src/core/heartbeat/checkpoint/index.d.ts.map +1 -0
  529. package/dist/src/core/heartbeat/checkpoint/index.js +3 -0
  530. package/dist/src/core/heartbeat/checkpoint/index.js.map +1 -0
  531. package/dist/src/core/heartbeat/checkpoint/repository.d.ts +9 -0
  532. package/dist/src/core/heartbeat/checkpoint/repository.d.ts.map +1 -0
  533. package/dist/src/core/heartbeat/checkpoint/repository.js +33 -0
  534. package/dist/src/core/heartbeat/checkpoint/repository.js.map +1 -0
  535. package/dist/src/core/heartbeat/checkpoint/service.d.ts +5 -0
  536. package/dist/src/core/heartbeat/checkpoint/service.d.ts.map +1 -0
  537. package/dist/src/core/heartbeat/checkpoint/service.js +24 -0
  538. package/dist/src/core/heartbeat/checkpoint/service.js.map +1 -0
  539. package/dist/src/core/heartbeat/checkpoint/types.d.ts +17 -0
  540. package/dist/src/core/heartbeat/checkpoint/types.d.ts.map +1 -0
  541. package/dist/src/core/heartbeat/checkpoint/types.js +2 -0
  542. package/dist/src/core/heartbeat/checkpoint/types.js.map +1 -0
  543. package/dist/src/core/heartbeat/index.d.ts +11 -0
  544. package/dist/src/core/heartbeat/index.d.ts.map +1 -0
  545. package/dist/src/core/heartbeat/index.js +6 -0
  546. package/dist/src/core/heartbeat/index.js.map +1 -0
  547. package/dist/src/core/heartbeat/scheduler/index.d.ts +4 -0
  548. package/dist/src/core/heartbeat/scheduler/index.d.ts.map +1 -0
  549. package/dist/src/core/heartbeat/scheduler/index.js +3 -0
  550. package/dist/src/core/heartbeat/scheduler/index.js.map +1 -0
  551. package/dist/src/core/heartbeat/scheduler/runner.d.ts +19 -0
  552. package/dist/src/core/heartbeat/scheduler/runner.d.ts.map +1 -0
  553. package/dist/src/core/heartbeat/scheduler/runner.js +16 -0
  554. package/dist/src/core/heartbeat/scheduler/runner.js.map +1 -0
  555. package/dist/src/core/heartbeat/scheduler/service.d.ts +8 -0
  556. package/dist/src/core/heartbeat/scheduler/service.d.ts.map +1 -0
  557. package/dist/src/core/heartbeat/scheduler/service.js +125 -0
  558. package/dist/src/core/heartbeat/scheduler/service.js.map +1 -0
  559. package/dist/src/core/{runtime/heartbeat-scheduler.d.ts → heartbeat/scheduler/types.d.ts} +5 -18
  560. package/dist/src/core/heartbeat/scheduler/types.d.ts.map +1 -0
  561. package/dist/src/core/heartbeat/scheduler/types.js +2 -0
  562. package/dist/src/core/heartbeat/scheduler/types.js.map +1 -0
  563. package/dist/src/core/heartbeat/tasks/index.d.ts +4 -0
  564. package/dist/src/core/heartbeat/tasks/index.d.ts.map +1 -0
  565. package/dist/src/core/heartbeat/tasks/index.js +3 -0
  566. package/dist/src/core/heartbeat/tasks/index.js.map +1 -0
  567. package/dist/src/core/heartbeat/tasks/repository.d.ts +24 -0
  568. package/dist/src/core/heartbeat/tasks/repository.d.ts.map +1 -0
  569. package/dist/src/core/heartbeat/tasks/repository.js +116 -0
  570. package/dist/src/core/heartbeat/tasks/repository.js.map +1 -0
  571. package/dist/src/core/heartbeat/tasks/schemas.d.ts +212 -0
  572. package/dist/src/core/heartbeat/tasks/schemas.d.ts.map +1 -0
  573. package/dist/src/core/heartbeat/tasks/schemas.js +78 -0
  574. package/dist/src/core/heartbeat/tasks/schemas.js.map +1 -0
  575. package/dist/src/core/heartbeat/tasks/task-state.d.ts +33 -0
  576. package/dist/src/core/heartbeat/tasks/task-state.d.ts.map +1 -0
  577. package/dist/src/core/heartbeat/tasks/task-state.js +122 -0
  578. package/dist/src/core/heartbeat/tasks/task-state.js.map +1 -0
  579. package/dist/src/core/{runtime/heartbeat-task-store.d.ts → heartbeat/tasks/types.d.ts} +24 -29
  580. package/dist/src/core/heartbeat/tasks/types.d.ts.map +1 -0
  581. package/dist/src/core/heartbeat/tasks/types.js +2 -0
  582. package/dist/src/core/heartbeat/tasks/types.js.map +1 -0
  583. package/dist/src/core/heartbeat/views/index.d.ts +4 -0
  584. package/dist/src/core/heartbeat/views/index.d.ts.map +1 -0
  585. package/dist/src/core/heartbeat/views/index.js +3 -0
  586. package/dist/src/core/heartbeat/views/index.js.map +1 -0
  587. package/dist/src/core/heartbeat/views/lucid-presenter.d.ts +20 -0
  588. package/dist/src/core/heartbeat/views/lucid-presenter.d.ts.map +1 -0
  589. package/dist/src/core/heartbeat/views/lucid-presenter.js +112 -0
  590. package/dist/src/core/heartbeat/views/lucid-presenter.js.map +1 -0
  591. package/dist/src/core/heartbeat/views/presenter.d.ts +22 -0
  592. package/dist/src/core/heartbeat/views/presenter.d.ts.map +1 -0
  593. package/dist/src/core/heartbeat/views/presenter.js +50 -0
  594. package/dist/src/core/heartbeat/views/presenter.js.map +1 -0
  595. package/dist/src/core/{runtime/heartbeat-lucid.d.ts → heartbeat/views/types.d.ts} +24 -8
  596. package/dist/src/core/heartbeat/views/types.d.ts.map +1 -0
  597. package/dist/src/core/heartbeat/views/types.js +2 -0
  598. package/dist/src/core/heartbeat/views/types.js.map +1 -0
  599. package/dist/src/core/heartbeat/wake/decision.d.ts +13 -0
  600. package/dist/src/core/heartbeat/wake/decision.d.ts.map +1 -0
  601. package/dist/src/core/heartbeat/wake/decision.js +24 -0
  602. package/dist/src/core/heartbeat/wake/decision.js.map +1 -0
  603. package/dist/src/core/heartbeat/wake/index.d.ts +5 -0
  604. package/dist/src/core/heartbeat/wake/index.d.ts.map +1 -0
  605. package/dist/src/core/heartbeat/wake/index.js +4 -0
  606. package/dist/src/core/heartbeat/wake/index.js.map +1 -0
  607. package/dist/src/core/heartbeat/wake/prompt.d.ts +11 -0
  608. package/dist/src/core/heartbeat/wake/prompt.d.ts.map +1 -0
  609. package/dist/src/core/heartbeat/wake/prompt.js +39 -0
  610. package/dist/src/core/heartbeat/wake/prompt.js.map +1 -0
  611. package/dist/src/core/heartbeat/wake/service.d.ts +6 -0
  612. package/dist/src/core/heartbeat/wake/service.d.ts.map +1 -0
  613. package/dist/src/core/heartbeat/wake/service.js +75 -0
  614. package/dist/src/core/heartbeat/wake/service.js.map +1 -0
  615. package/dist/src/core/heartbeat/wake/types.d.ts +33 -0
  616. package/dist/src/core/heartbeat/wake/types.d.ts.map +1 -0
  617. package/dist/src/core/heartbeat/wake/types.js +2 -0
  618. package/dist/src/core/heartbeat/wake/types.js.map +1 -0
  619. package/dist/src/core/llm/factory.js +2 -2
  620. package/dist/src/core/llm/factory.js.map +1 -1
  621. package/dist/src/core/llm/model-policy.d.ts +1 -1
  622. package/dist/src/core/llm/model-policy.d.ts.map +1 -1
  623. package/dist/src/core/memory/maintainer.js +2 -2
  624. package/dist/src/core/memory/maintainer.js.map +1 -1
  625. package/dist/src/core/observability/conversation-activity.d.ts +1 -1
  626. package/dist/src/core/observability/conversation-activity.d.ts.map +1 -1
  627. package/dist/src/core/runtime/credentials/index.d.ts +3 -0
  628. package/dist/src/core/runtime/credentials/index.d.ts.map +1 -0
  629. package/dist/src/core/runtime/credentials/index.js +2 -0
  630. package/dist/src/core/runtime/credentials/index.js.map +1 -0
  631. package/dist/src/core/runtime/credentials/service.d.ts +22 -0
  632. package/dist/src/core/runtime/credentials/service.d.ts.map +1 -0
  633. package/dist/src/core/runtime/credentials/service.js +83 -0
  634. package/dist/src/core/runtime/credentials/service.js.map +1 -0
  635. package/dist/src/core/runtime/credentials/types.d.ts +22 -0
  636. package/dist/src/core/runtime/credentials/types.d.ts.map +1 -0
  637. package/dist/src/core/runtime/credentials/types.js +2 -0
  638. package/dist/src/core/runtime/credentials/types.js.map +1 -0
  639. package/dist/src/core/runtime/daemon/host-resolver.d.ts +7 -0
  640. package/dist/src/core/runtime/daemon/host-resolver.d.ts.map +1 -0
  641. package/dist/src/core/runtime/daemon/host-resolver.js +61 -0
  642. package/dist/src/core/runtime/daemon/host-resolver.js.map +1 -0
  643. package/dist/src/core/runtime/daemon/index.d.ts +6 -0
  644. package/dist/src/core/runtime/daemon/index.d.ts.map +1 -0
  645. package/dist/src/core/runtime/daemon/index.js +5 -0
  646. package/dist/src/core/runtime/daemon/index.js.map +1 -0
  647. package/dist/src/core/runtime/daemon/messages.d.ts +13 -0
  648. package/dist/src/core/runtime/daemon/messages.d.ts.map +1 -0
  649. package/dist/src/core/runtime/daemon/messages.js +43 -0
  650. package/dist/src/core/runtime/daemon/messages.js.map +1 -0
  651. package/dist/src/core/runtime/daemon/registry-repository.d.ts +12 -0
  652. package/dist/src/core/runtime/daemon/registry-repository.d.ts.map +1 -0
  653. package/dist/src/core/runtime/daemon/registry-repository.js +33 -0
  654. package/dist/src/core/runtime/daemon/registry-repository.js.map +1 -0
  655. package/dist/src/core/runtime/daemon/registry-service.d.ts +16 -0
  656. package/dist/src/core/runtime/daemon/registry-service.d.ts.map +1 -0
  657. package/dist/src/core/runtime/daemon/registry-service.js +141 -0
  658. package/dist/src/core/runtime/daemon/registry-service.js.map +1 -0
  659. package/dist/src/core/runtime/daemon/schemas.d.ts +96 -0
  660. package/dist/src/core/runtime/daemon/schemas.d.ts.map +1 -0
  661. package/dist/src/core/runtime/daemon/schemas.js +36 -0
  662. package/dist/src/core/runtime/daemon/schemas.js.map +1 -0
  663. package/dist/src/core/runtime/daemon/types.d.ts +66 -0
  664. package/dist/src/core/runtime/daemon/types.d.ts.map +1 -0
  665. package/dist/src/core/runtime/daemon/types.js +2 -0
  666. package/dist/src/core/runtime/daemon/types.js.map +1 -0
  667. package/dist/src/core/runtime/loop/checkpoint.d.ts +33 -0
  668. package/dist/src/core/runtime/loop/checkpoint.d.ts.map +1 -0
  669. package/dist/src/core/runtime/loop/checkpoint.js +69 -0
  670. package/dist/src/core/runtime/loop/checkpoint.js.map +1 -0
  671. package/dist/src/core/runtime/loop/index.d.ts +4 -0
  672. package/dist/src/core/runtime/loop/index.d.ts.map +1 -0
  673. package/dist/src/core/runtime/loop/index.js +3 -0
  674. package/dist/src/core/runtime/loop/index.js.map +1 -0
  675. package/dist/src/core/runtime/loop/service.d.ts +11 -0
  676. package/dist/src/core/runtime/loop/service.d.ts.map +1 -0
  677. package/dist/src/core/runtime/loop/service.js +179 -0
  678. package/dist/src/core/runtime/loop/service.js.map +1 -0
  679. package/dist/src/core/runtime/{events.d.ts → loop/types.d.ts} +38 -38
  680. package/dist/src/core/runtime/loop/types.d.ts.map +1 -0
  681. package/dist/src/core/runtime/loop/types.js +2 -0
  682. package/dist/src/core/runtime/loop/types.js.map +1 -0
  683. package/dist/src/core/runtime/tools/index.d.ts +3 -0
  684. package/dist/src/core/runtime/tools/index.d.ts.map +1 -0
  685. package/dist/src/core/runtime/tools/index.js +2 -0
  686. package/dist/src/core/runtime/tools/index.js.map +1 -0
  687. package/dist/src/core/runtime/tools/service.d.ts +11 -0
  688. package/dist/src/core/runtime/tools/service.d.ts.map +1 -0
  689. package/dist/src/core/runtime/tools/service.js +54 -0
  690. package/dist/src/core/runtime/tools/service.js.map +1 -0
  691. package/dist/src/core/runtime/{default-tools.d.ts → tools/types.d.ts} +2 -4
  692. package/dist/src/core/runtime/tools/types.d.ts.map +1 -0
  693. package/dist/src/core/runtime/tools/types.js +2 -0
  694. package/dist/src/core/runtime/tools/types.js.map +1 -0
  695. package/dist/src/core/runtime/workspaces/index.d.ts +5 -0
  696. package/dist/src/core/runtime/workspaces/index.d.ts.map +1 -0
  697. package/dist/src/core/runtime/workspaces/index.js +4 -0
  698. package/dist/src/core/runtime/workspaces/index.js.map +1 -0
  699. package/dist/src/core/runtime/workspaces/repository.d.ts +14 -0
  700. package/dist/src/core/runtime/workspaces/repository.d.ts.map +1 -0
  701. package/dist/src/core/runtime/workspaces/repository.js +38 -0
  702. package/dist/src/core/runtime/workspaces/repository.js.map +1 -0
  703. package/dist/src/core/runtime/workspaces/schemas.d.ts +42 -0
  704. package/dist/src/core/runtime/workspaces/schemas.d.ts.map +1 -0
  705. package/dist/src/core/runtime/workspaces/schemas.js +26 -0
  706. package/dist/src/core/runtime/workspaces/schemas.js.map +1 -0
  707. package/dist/src/core/runtime/workspaces/service.d.ts +15 -0
  708. package/dist/src/core/runtime/workspaces/service.d.ts.map +1 -0
  709. package/dist/src/core/runtime/workspaces/service.js +177 -0
  710. package/dist/src/core/runtime/workspaces/service.js.map +1 -0
  711. package/dist/src/core/runtime/workspaces/types.d.ts +42 -0
  712. package/dist/src/core/runtime/workspaces/types.d.ts.map +1 -0
  713. package/dist/src/core/runtime/workspaces/types.js +2 -0
  714. package/dist/src/core/runtime/workspaces/types.js.map +1 -0
  715. package/dist/src/core/tools/toolkit.d.ts +1 -1
  716. package/dist/src/core/tools/toolkit.d.ts.map +1 -1
  717. package/dist/src/core/tools/toolkits/external-context/view-image.d.ts +1 -1
  718. package/dist/src/core/tools/toolkits/external-context/view-image.d.ts.map +1 -1
  719. package/dist/src/core/tools/toolkits/external-context/view-image.js +2 -2
  720. package/dist/src/core/tools/toolkits/external-context/view-image.js.map +1 -1
  721. package/dist/src/core/tools/toolkits/external-context/web-search.d.ts +1 -1
  722. package/dist/src/core/tools/toolkits/external-context/web-search.d.ts.map +1 -1
  723. package/dist/src/core/tools/toolkits/external-context/web-search.js +2 -2
  724. package/dist/src/core/tools/toolkits/external-context/web-search.js.map +1 -1
  725. package/dist/src/core/types.d.ts +1 -1
  726. package/dist/src/index.d.ts +26 -28
  727. package/dist/src/index.d.ts.map +1 -1
  728. package/dist/src/index.js +13 -15
  729. package/dist/src/index.js.map +1 -1
  730. package/dist/src/integrations/cyberloop.d.ts +5 -4
  731. package/dist/src/integrations/cyberloop.d.ts.map +1 -1
  732. package/dist/src/integrations/cyberloop.js.map +1 -1
  733. package/dist/src/server/app.js +5 -5
  734. package/dist/src/server/app.js.map +1 -1
  735. package/dist/src/server/features/control-plane/controllers/ask.js +3 -3
  736. package/dist/src/server/features/control-plane/controllers/ask.js.map +1 -1
  737. package/dist/src/server/features/control-plane/controllers/chat-session-events.d.ts +1 -1
  738. package/dist/src/server/features/control-plane/controllers/chat-session-events.d.ts.map +1 -1
  739. package/dist/src/server/features/control-plane/controllers/chat-session-presenter.d.ts.map +1 -1
  740. package/dist/src/server/features/control-plane/controllers/chat-session-presenter.js +38 -12
  741. package/dist/src/server/features/control-plane/controllers/chat-session-presenter.js.map +1 -1
  742. package/dist/src/server/features/control-plane/controllers/chat-sessions-controller.d.ts +2 -2
  743. package/dist/src/server/features/control-plane/controllers/chat-sessions-controller.d.ts.map +1 -1
  744. package/dist/src/server/features/control-plane/controllers/chat-sessions-controller.js +24 -23
  745. package/dist/src/server/features/control-plane/controllers/chat-sessions-controller.js.map +1 -1
  746. package/dist/src/server/features/control-plane/controllers/control-plane-state.js +7 -7
  747. package/dist/src/server/features/control-plane/controllers/control-plane-state.js.map +1 -1
  748. package/dist/src/server/features/control-plane/controllers/heartbeat.d.ts +6 -5
  749. package/dist/src/server/features/control-plane/controllers/heartbeat.d.ts.map +1 -1
  750. package/dist/src/server/features/control-plane/controllers/heartbeat.js +31 -19
  751. package/dist/src/server/features/control-plane/controllers/heartbeat.js.map +1 -1
  752. package/dist/src/server/features/control-plane/router.d.ts +7 -7
  753. package/dist/src/server/features/control-plane/router.js +9 -9
  754. package/dist/src/server/features/control-plane/router.js.map +1 -1
  755. package/dist/src/server/features/control-plane/types.d.ts +28 -16
  756. package/dist/src/server/features/control-plane/types.d.ts.map +1 -1
  757. package/dist/src/server/index.d.ts.map +1 -1
  758. package/dist/src/server/index.js +7 -7
  759. package/dist/src/server/index.js.map +1 -1
  760. package/dist/src/server/router.d.ts +9 -9
  761. package/dist/src/server/types.d.ts +2 -2
  762. package/dist/src/server/types.d.ts.map +1 -1
  763. package/dist/src/web/assets/{MonacoDiffViewer-D0Ed6GCN.js → MonacoDiffViewer-F3AOHIps.js} +1 -1
  764. package/dist/src/web/assets/{index-B_9nk8kS.js → index-D6aK1OFb.js} +2 -2
  765. package/dist/src/web/index.html +1 -1
  766. package/package.json +7 -7
  767. package/dist/src/cli/chat/state/approval-rules.d.ts +0 -3
  768. package/dist/src/cli/chat/state/approval-rules.d.ts.map +0 -1
  769. package/dist/src/cli/chat/state/approval-rules.js +0 -2
  770. package/dist/src/cli/chat/state/approval-rules.js.map +0 -1
  771. package/dist/src/cli/session.d.ts +0 -11
  772. package/dist/src/cli/session.d.ts.map +0 -1
  773. package/dist/src/cli/session.js +0 -30
  774. package/dist/src/cli/session.js.map +0 -1
  775. package/dist/src/core/agent/history.d.ts +0 -3
  776. package/dist/src/core/agent/history.d.ts.map +0 -1
  777. package/dist/src/core/agent/history.js +0 -36
  778. package/dist/src/core/agent/history.js.map +0 -1
  779. package/dist/src/core/agent/mutation-tracking.d.ts +0 -13
  780. package/dist/src/core/agent/mutation-tracking.d.ts.map +0 -1
  781. package/dist/src/core/agent/mutation-tracking.js +0 -71
  782. package/dist/src/core/agent/mutation-tracking.js.map +0 -1
  783. package/dist/src/core/agent/post-mutation.d.ts +0 -8
  784. package/dist/src/core/agent/post-mutation.d.ts.map +0 -1
  785. package/dist/src/core/agent/post-mutation.js +0 -9
  786. package/dist/src/core/agent/post-mutation.js.map +0 -1
  787. package/dist/src/core/agent/progress-reminders.d.ts +0 -10
  788. package/dist/src/core/agent/progress-reminders.d.ts.map +0 -1
  789. package/dist/src/core/agent/progress-reminders.js +0 -13
  790. package/dist/src/core/agent/progress-reminders.js.map +0 -1
  791. package/dist/src/core/agent/run-agent.d.ts +0 -41
  792. package/dist/src/core/agent/run-agent.d.ts.map +0 -1
  793. package/dist/src/core/agent/run-agent.js +0 -490
  794. package/dist/src/core/agent/run-agent.js.map +0 -1
  795. package/dist/src/core/agent/tool-dispatch.d.ts +0 -36
  796. package/dist/src/core/agent/tool-dispatch.d.ts.map +0 -1
  797. package/dist/src/core/agent/tool-dispatch.js +0 -120
  798. package/dist/src/core/agent/tool-dispatch.js.map +0 -1
  799. package/dist/src/core/agent/util.d.ts +0 -6
  800. package/dist/src/core/agent/util.d.ts.map +0 -1
  801. package/dist/src/core/agent/util.js.map +0 -1
  802. package/dist/src/core/approvals/default-policies.d.ts +0 -10
  803. package/dist/src/core/approvals/default-policies.d.ts.map +0 -1
  804. package/dist/src/core/approvals/default-policies.js +0 -37
  805. package/dist/src/core/approvals/default-policies.js.map +0 -1
  806. package/dist/src/core/approvals/policy-chain.d.ts +0 -9
  807. package/dist/src/core/approvals/policy-chain.d.ts.map +0 -1
  808. package/dist/src/core/approvals/policy-chain.js +0 -36
  809. package/dist/src/core/approvals/policy-chain.js.map +0 -1
  810. package/dist/src/core/approvals/remembered-rules.d.ts +0 -22
  811. package/dist/src/core/approvals/remembered-rules.d.ts.map +0 -1
  812. package/dist/src/core/approvals/remembered-rules.js +0 -284
  813. package/dist/src/core/approvals/remembered-rules.js.map +0 -1
  814. package/dist/src/core/approvals/surface.d.ts +0 -20
  815. package/dist/src/core/approvals/surface.d.ts.map +0 -1
  816. package/dist/src/core/approvals/surface.js +0 -22
  817. package/dist/src/core/approvals/surface.js.map +0 -1
  818. package/dist/src/core/chat/engine/history/compaction.d.ts +0 -56
  819. package/dist/src/core/chat/engine/history/compaction.d.ts.map +0 -1
  820. package/dist/src/core/chat/engine/history/compaction.js +0 -546
  821. package/dist/src/core/chat/engine/history/compaction.js.map +0 -1
  822. package/dist/src/core/chat/engine/sessions/archive.d.ts +0 -19
  823. package/dist/src/core/chat/engine/sessions/archive.d.ts.map +0 -1
  824. package/dist/src/core/chat/engine/sessions/archive.js +0 -129
  825. package/dist/src/core/chat/engine/sessions/archive.js.map +0 -1
  826. package/dist/src/core/chat/engine/sessions/conversation-lines.d.ts +0 -4
  827. package/dist/src/core/chat/engine/sessions/conversation-lines.d.ts.map +0 -1
  828. package/dist/src/core/chat/engine/sessions/conversation-lines.js +0 -26
  829. package/dist/src/core/chat/engine/sessions/conversation-lines.js.map +0 -1
  830. package/dist/src/core/chat/engine/sessions/lease.d.ts +0 -23
  831. package/dist/src/core/chat/engine/sessions/lease.d.ts.map +0 -1
  832. package/dist/src/core/chat/engine/sessions/lease.js +0 -72
  833. package/dist/src/core/chat/engine/sessions/lease.js.map +0 -1
  834. package/dist/src/core/chat/engine/sessions/session-record.d.ts +0 -16
  835. package/dist/src/core/chat/engine/sessions/session-record.d.ts.map +0 -1
  836. package/dist/src/core/chat/engine/sessions/session-record.js +0 -60
  837. package/dist/src/core/chat/engine/sessions/session-record.js.map +0 -1
  838. package/dist/src/core/chat/engine/sessions/title.d.ts +0 -15
  839. package/dist/src/core/chat/engine/sessions/title.d.ts.map +0 -1
  840. package/dist/src/core/chat/engine/sessions/title.js +0 -17
  841. package/dist/src/core/chat/engine/sessions/title.js.map +0 -1
  842. package/dist/src/core/chat/engine/turns/context.d.ts +0 -27
  843. package/dist/src/core/chat/engine/turns/context.d.ts.map +0 -1
  844. package/dist/src/core/chat/engine/turns/context.js +0 -42
  845. package/dist/src/core/chat/engine/turns/context.js.map +0 -1
  846. package/dist/src/core/chat/engine/turns/host-bridge.d.ts +0 -37
  847. package/dist/src/core/chat/engine/turns/host-bridge.d.ts.map +0 -1
  848. package/dist/src/core/chat/engine/turns/host-bridge.js +0 -20
  849. package/dist/src/core/chat/engine/turns/host-bridge.js.map +0 -1
  850. package/dist/src/core/chat/engine/turns/host.d.ts +0 -3
  851. package/dist/src/core/chat/engine/turns/host.d.ts.map +0 -1
  852. package/dist/src/core/chat/engine/turns/host.js +0 -42
  853. package/dist/src/core/chat/engine/turns/host.js.map +0 -1
  854. package/dist/src/core/chat/engine/turns/memory-maintenance.d.ts +0 -33
  855. package/dist/src/core/chat/engine/turns/memory-maintenance.d.ts.map +0 -1
  856. package/dist/src/core/chat/engine/turns/memory-maintenance.js +0 -121
  857. package/dist/src/core/chat/engine/turns/memory-maintenance.js.map +0 -1
  858. package/dist/src/core/chat/engine/turns/persistence.d.ts +0 -25
  859. package/dist/src/core/chat/engine/turns/persistence.d.ts.map +0 -1
  860. package/dist/src/core/chat/engine/turns/persistence.js +0 -46
  861. package/dist/src/core/chat/engine/turns/persistence.js.map +0 -1
  862. package/dist/src/core/chat/engine/turns/preflight.d.ts +0 -56
  863. package/dist/src/core/chat/engine/turns/preflight.d.ts.map +0 -1
  864. package/dist/src/core/chat/engine/turns/preflight.js +0 -97
  865. package/dist/src/core/chat/engine/turns/preflight.js.map +0 -1
  866. package/dist/src/core/chat/engine/turns/result.d.ts +0 -38
  867. package/dist/src/core/chat/engine/turns/result.d.ts.map +0 -1
  868. package/dist/src/core/chat/engine/turns/result.js +0 -62
  869. package/dist/src/core/chat/engine/turns/result.js.map +0 -1
  870. package/dist/src/core/chat/engine/turns/run-conversation-turn.d.ts +0 -47
  871. package/dist/src/core/chat/engine/turns/run-conversation-turn.d.ts.map +0 -1
  872. package/dist/src/core/chat/engine/turns/run-conversation-turn.js +0 -136
  873. package/dist/src/core/chat/engine/turns/run-conversation-turn.js.map +0 -1
  874. package/dist/src/core/chat/engine/turns/runtime.d.ts +0 -28
  875. package/dist/src/core/chat/engine/turns/runtime.d.ts.map +0 -1
  876. package/dist/src/core/chat/engine/turns/runtime.js +0 -62
  877. package/dist/src/core/chat/engine/turns/runtime.js.map +0 -1
  878. package/dist/src/core/chat/engine/turns/trace.d.ts +0 -3
  879. package/dist/src/core/chat/engine/turns/trace.d.ts.map +0 -1
  880. package/dist/src/core/chat/engine/turns/trace.js +0 -9
  881. package/dist/src/core/chat/engine/turns/trace.js.map +0 -1
  882. package/dist/src/core/chat/failure-messages.d.ts +0 -6
  883. package/dist/src/core/chat/failure-messages.d.ts.map +0 -1
  884. package/dist/src/core/chat/failure-messages.js +0 -24
  885. package/dist/src/core/chat/failure-messages.js.map +0 -1
  886. package/dist/src/core/runtime/agent-loop.d.ts +0 -45
  887. package/dist/src/core/runtime/agent-loop.d.ts.map +0 -1
  888. package/dist/src/core/runtime/agent-loop.js +0 -200
  889. package/dist/src/core/runtime/agent-loop.js.map +0 -1
  890. package/dist/src/core/runtime/api-keys.d.ts +0 -35
  891. package/dist/src/core/runtime/api-keys.d.ts.map +0 -1
  892. package/dist/src/core/runtime/api-keys.js +0 -78
  893. package/dist/src/core/runtime/api-keys.js.map +0 -1
  894. package/dist/src/core/runtime/daemon-registry.d.ts +0 -44
  895. package/dist/src/core/runtime/daemon-registry.d.ts.map +0 -1
  896. package/dist/src/core/runtime/daemon-registry.js +0 -147
  897. package/dist/src/core/runtime/daemon-registry.js.map +0 -1
  898. package/dist/src/core/runtime/default-tools.d.ts.map +0 -1
  899. package/dist/src/core/runtime/default-tools.js +0 -49
  900. package/dist/src/core/runtime/default-tools.js.map +0 -1
  901. package/dist/src/core/runtime/events.d.ts.map +0 -1
  902. package/dist/src/core/runtime/events.js +0 -41
  903. package/dist/src/core/runtime/events.js.map +0 -1
  904. package/dist/src/core/runtime/heartbeat-lucid.d.ts.map +0 -1
  905. package/dist/src/core/runtime/heartbeat-lucid.js +0 -188
  906. package/dist/src/core/runtime/heartbeat-lucid.js.map +0 -1
  907. package/dist/src/core/runtime/heartbeat-scheduler.d.ts.map +0 -1
  908. package/dist/src/core/runtime/heartbeat-scheduler.js +0 -135
  909. package/dist/src/core/runtime/heartbeat-scheduler.js.map +0 -1
  910. package/dist/src/core/runtime/heartbeat-store.d.ts +0 -20
  911. package/dist/src/core/runtime/heartbeat-store.d.ts.map +0 -1
  912. package/dist/src/core/runtime/heartbeat-store.js +0 -42
  913. package/dist/src/core/runtime/heartbeat-store.js.map +0 -1
  914. package/dist/src/core/runtime/heartbeat-task-state.d.ts +0 -5
  915. package/dist/src/core/runtime/heartbeat-task-state.d.ts.map +0 -1
  916. package/dist/src/core/runtime/heartbeat-task-state.js +0 -81
  917. package/dist/src/core/runtime/heartbeat-task-state.js.map +0 -1
  918. package/dist/src/core/runtime/heartbeat-task-store.d.ts.map +0 -1
  919. package/dist/src/core/runtime/heartbeat-task-store.js +0 -96
  920. package/dist/src/core/runtime/heartbeat-task-store.js.map +0 -1
  921. package/dist/src/core/runtime/heartbeat-views.d.ts +0 -52
  922. package/dist/src/core/runtime/heartbeat-views.d.ts.map +0 -1
  923. package/dist/src/core/runtime/heartbeat-views.js +0 -62
  924. package/dist/src/core/runtime/heartbeat-views.js.map +0 -1
  925. package/dist/src/core/runtime/heartbeat.d.ts +0 -41
  926. package/dist/src/core/runtime/heartbeat.d.ts.map +0 -1
  927. package/dist/src/core/runtime/heartbeat.js +0 -113
  928. package/dist/src/core/runtime/heartbeat.js.map +0 -1
  929. package/dist/src/core/runtime/runtime-hosts.d.ts +0 -30
  930. package/dist/src/core/runtime/runtime-hosts.d.ts.map +0 -1
  931. package/dist/src/core/runtime/runtime-hosts.js +0 -95
  932. package/dist/src/core/runtime/runtime-hosts.js.map +0 -1
  933. package/dist/src/core/runtime/workspaces.d.ts +0 -55
  934. package/dist/src/core/runtime/workspaces.d.ts.map +0 -1
  935. package/dist/src/core/runtime/workspaces.js +0 -168
  936. package/dist/src/core/runtime/workspaces.js.map +0 -1
@@ -1,476 +1,205 @@
1
1
  /**
2
2
  * File-backed chat session repository.
3
3
  *
4
- * Owns file paths, migration, serialization, deserialization, and orphan-file
5
- * cleanup for chat sessions. Session services should depend on this module
6
- * rather than embedding file I/O logic themselves.
4
+ * Owns file paths, serialization, deserialization, and orphan-file cleanup for
5
+ * chat sessions. Session services should depend on this class rather than
6
+ * embedding file I/O logic themselves.
7
7
  *
8
8
  * Current compromise:
9
- * some older host or test paths may still import repository functions directly.
9
+ * some older host or test paths still instantiate this repository directly.
10
10
  * The intended direction is host -> service -> repository -> files.
11
11
  */
12
12
  import { existsSync, mkdirSync, readdirSync, readFileSync, unlinkSync, writeFileSync } from 'node:fs';
13
13
  import { basename, dirname, join } from 'node:path';
14
- import { createChatSession, createInitialMessages } from '../session-record.js';
15
- export function createFileChatSessionRepository(args) {
16
- const { sessionStoragePath } = args;
17
- return {
18
- list(apiKeyPresent) {
19
- return loadChatSessions(sessionStoragePath, apiKeyPresent);
20
- },
21
- readCatalog() {
22
- return readChatSessionCatalog(sessionStoragePath);
23
- },
24
- read(sessionId, apiKeyPresent) {
25
- return readChatSession(sessionStoragePath, sessionId, apiKeyPresent);
26
- },
27
- migrateLegacy(apiKeyPresent) {
28
- return migrateLegacyChatSessions(sessionStoragePath, apiKeyPresent);
29
- },
30
- save(sessions) {
31
- saveChatSessions(sessionStoragePath, sessions);
32
- },
33
- deriveStoragePaths() {
34
- return deriveSessionStoragePaths(sessionStoragePath);
35
- },
36
- };
37
- }
38
- export function loadChatSessions(sessionsPath, apiKeyPresent) {
39
- const resolved = loadChatSessionsFromCurrentStorage(sessionsPath, apiKeyPresent);
40
- if (resolved.length > 0) {
41
- return resolved;
42
- }
43
- const migrated = migrateLegacyChatSessions(sessionsPath, apiKeyPresent);
44
- if (migrated.length > 0) {
45
- return migrated;
46
- }
47
- return [
48
- createChatSession({
49
- id: 'session-1',
50
- name: 'Session 1',
51
- apiKeyPresent,
52
- }),
53
- ];
54
- }
55
- export function readChatSessionCatalog(sessionsPath) {
56
- const paths = deriveSessionStoragePaths(sessionsPath);
57
- const catalog = readCatalog(paths.catalogPath);
58
- return catalog?.sessions.sort((left, right) => right.updatedAt.localeCompare(left.updatedAt)) ?? [];
59
- }
60
- export function readChatSession(sessionsPath, sessionId, apiKeyPresent) {
61
- const paths = deriveSessionStoragePaths(sessionsPath);
62
- const catalog = readCatalog(paths.catalogPath);
63
- const entry = catalog?.sessions.find((candidate) => candidate.id === sessionId);
64
- if (!entry) {
65
- return undefined;
66
- }
67
- return readSessionFile(paths.sessionsDir, entry, apiKeyPresent)[0];
68
- }
69
- export function migrateLegacyChatSessions(sessionsPath, apiKeyPresent) {
70
- const legacySessions = loadLegacyChatSessions(sessionsPath, apiKeyPresent);
71
- if (legacySessions.length === 0) {
72
- return [];
73
- }
74
- saveChatSessions(sessionsPath, legacySessions);
75
- return legacySessions.sort((left, right) => right.updatedAt.localeCompare(left.updatedAt));
76
- }
77
- export function saveChatSessions(sessionsPath, sessions) {
78
- mkdirSync(dirname(sessionsPath), { recursive: true });
79
- const paths = deriveSessionStoragePaths(sessionsPath);
80
- mkdirSync(paths.sessionsDir, { recursive: true });
81
- const sorted = dedupeSessionsById(sessions).sort((left, right) => right.updatedAt.localeCompare(left.updatedAt));
82
- const previousCatalog = readCatalog(paths.catalogPath);
83
- const previousSessionBodies = new Map();
84
- for (const entry of previousCatalog?.sessions ?? []) {
85
- const body = readSessionFileContents(paths.sessionsDir, entry.id);
86
- if (body !== undefined) {
87
- previousSessionBodies.set(entry.id, body);
14
+ import { ChatSessionRecords } from '../records/index.js';
15
+ import { ChatSessionCodec } from './chat-session-codec.js';
16
+ export class FileChatSessionRepository {
17
+ sessionStoragePath;
18
+ storagePaths;
19
+ constructor(args) {
20
+ this.sessionStoragePath = args.sessionStoragePath;
21
+ this.storagePaths = FileChatSessionRepository.deriveStoragePaths(args.sessionStoragePath);
22
+ }
23
+ list(apiKeyPresent) {
24
+ const resolved = this.loadFromCurrentStorage(apiKeyPresent);
25
+ if (resolved.length > 0) {
26
+ return resolved;
88
27
  }
28
+ return [
29
+ ChatSessionRecords.create({
30
+ id: 'session-1',
31
+ name: 'Session 1',
32
+ apiKeyPresent,
33
+ }),
34
+ ];
35
+ }
36
+ readCatalog() {
37
+ const catalog = FileChatSessionRepository.readCatalogFile(this.deriveStoragePaths().catalogPath);
38
+ return catalog?.sessions.sort((left, right) => right.updatedAt.localeCompare(left.updatedAt)) ?? [];
39
+ }
40
+ read(sessionId, apiKeyPresent) {
41
+ const paths = this.deriveStoragePaths();
42
+ const catalog = FileChatSessionRepository.readCatalogFile(paths.catalogPath);
43
+ const entry = catalog?.sessions.find((candidate) => candidate.id === sessionId);
44
+ if (!entry) {
45
+ return undefined;
46
+ }
47
+ return FileChatSessionRepository.readSessionFile(paths.sessionsDir, entry, apiKeyPresent)[0];
89
48
  }
90
- for (const session of sorted) {
91
- writeSessionFileIfChanged(paths.sessionsDir, session, previousSessionBodies.get(session.id));
92
- }
93
- const catalog = {
94
- version: 1,
95
- sessions: sorted.map((session) => projectCatalogEntry(session)),
96
- };
97
- writeCatalogIfChanged(paths.catalogPath, catalog, previousCatalog);
98
- removeOrphanedSessionFiles(paths.sessionsDir, catalog.sessions.map((session) => session.id));
99
- }
100
- export function deriveSessionStoragePaths(storagePath) {
101
- const stateDir = dirname(storagePath);
102
- const fileName = basename(storagePath);
103
- const catalogSuffix = '.catalog.json';
104
- const legacySuffix = '.json';
105
- if (fileName.endsWith(catalogSuffix)) {
106
- const catalogStem = fileName.slice(0, -catalogSuffix.length);
107
- return {
108
- // Current layout: preserve the configured catalog path exactly.
109
- catalogPath: storagePath,
110
- // Legacy fallback: older callers may still look for a flat JSON file.
111
- legacyPath: join(stateDir, `${catalogStem}${legacySuffix}`),
112
- sessionsDir: join(stateDir, catalogStem),
49
+ save(sessions) {
50
+ mkdirSync(dirname(this.sessionStoragePath), { recursive: true });
51
+ const paths = this.deriveStoragePaths();
52
+ mkdirSync(paths.sessionsDir, { recursive: true });
53
+ const sorted = FileChatSessionRepository.dedupeSessionsById(sessions)
54
+ .sort((left, right) => right.updatedAt.localeCompare(left.updatedAt));
55
+ const previousCatalog = FileChatSessionRepository.readCatalogFile(paths.catalogPath);
56
+ const previousSessionBodies = new Map();
57
+ for (const entry of previousCatalog?.sessions ?? []) {
58
+ const body = FileChatSessionRepository.readSessionFileContents(paths.sessionsDir, entry.id);
59
+ if (body !== undefined) {
60
+ previousSessionBodies.set(entry.id, body);
61
+ }
62
+ }
63
+ for (const session of sorted) {
64
+ FileChatSessionRepository.writeSessionFileIfChanged(paths.sessionsDir, session, previousSessionBodies.get(session.id));
65
+ }
66
+ const catalog = {
67
+ version: 1,
68
+ sessions: sorted.map((session) => ChatSessionCodec.projectCatalogEntry(session)),
113
69
  };
114
- }
115
- if (fileName.endsWith(legacySuffix)) {
116
- const catalogStem = fileName.slice(0, -legacySuffix.length);
70
+ FileChatSessionRepository.writeCatalogIfChanged(paths.catalogPath, catalog, previousCatalog);
71
+ FileChatSessionRepository.removeOrphanedSessionFiles(paths.sessionsDir, catalog.sessions.map((session) => session.id));
72
+ }
73
+ deriveStoragePaths() {
74
+ return this.storagePaths;
75
+ }
76
+ static deriveStoragePaths(storagePath) {
77
+ const stateDir = dirname(storagePath);
78
+ const fileName = basename(storagePath);
79
+ const catalogSuffix = '.catalog.json';
80
+ if (fileName.endsWith(catalogSuffix)) {
81
+ const catalogStem = fileName.slice(0, -catalogSuffix.length);
82
+ return {
83
+ // Current layout: preserve the configured catalog path exactly.
84
+ catalogPath: storagePath,
85
+ sessionsDir: join(stateDir, catalogStem),
86
+ };
87
+ }
117
88
  return {
118
- // Current layout: upgrade legacy flat JSON paths to sibling catalog files.
119
- catalogPath: join(stateDir, `${catalogStem}${catalogSuffix}`),
120
- // Legacy fallback: keep reading and migrating from the original flat JSON path.
121
- legacyPath: storagePath,
122
- sessionsDir: join(stateDir, catalogStem),
89
+ // Non-standard inputs are explicit catalog paths. Preserve them without
90
+ // scanning sibling files or trying to upgrade older layouts.
91
+ catalogPath: storagePath,
92
+ sessionsDir: join(stateDir, fileName),
123
93
  };
124
94
  }
125
- return {
126
- // Non-JSON inputs are already explicit. Preserve them without inventing
127
- // extra fallback paths.
128
- catalogPath: storagePath,
129
- legacyPath: storagePath,
130
- sessionsDir: join(stateDir, fileName),
131
- };
132
- }
133
- function loadChatSessionsFromCurrentStorage(sessionsPath, apiKeyPresent) {
134
- const paths = deriveSessionStoragePaths(sessionsPath);
135
- return loadSessionsFromCatalog(paths, apiKeyPresent);
136
- }
137
- function loadSessionsFromCatalog(paths, apiKeyPresent) {
138
- if (!existsSync(paths.catalogPath)) {
139
- return [];
95
+ loadFromCurrentStorage(apiKeyPresent) {
96
+ return this.loadSessionsFromCatalog(this.deriveStoragePaths(), apiKeyPresent);
140
97
  }
141
- try {
142
- const raw = JSON.parse(readFileSync(paths.catalogPath, 'utf8'));
143
- const catalog = parseCatalog(raw);
144
- if (!catalog) {
98
+ loadSessionsFromCatalog(paths, apiKeyPresent) {
99
+ if (!existsSync(paths.catalogPath)) {
100
+ return [];
101
+ }
102
+ try {
103
+ const raw = JSON.parse(readFileSync(paths.catalogPath, 'utf8'));
104
+ const catalog = ChatSessionCodec.parseCatalog(raw);
105
+ if (!catalog) {
106
+ return [];
107
+ }
108
+ const sessions = catalog.sessions.flatMap((entry) => FileChatSessionRepository.readSessionFile(paths.sessionsDir, entry, apiKeyPresent));
109
+ return sessions.sort((left, right) => right.updatedAt.localeCompare(left.updatedAt));
110
+ }
111
+ catch (error) {
112
+ process.stderr.write(`Failed to load chat session catalog from ${paths.catalogPath}: ${error instanceof Error ? error.message : String(error)}\n`);
145
113
  return [];
146
114
  }
147
- const sessions = catalog.sessions.flatMap((entry) => readSessionFile(paths.sessionsDir, entry, apiKeyPresent));
148
- return sessions.sort((left, right) => right.updatedAt.localeCompare(left.updatedAt));
149
- }
150
- catch (error) {
151
- process.stderr.write(`Failed to load chat session catalog from ${paths.catalogPath}: ${error instanceof Error ? error.message : String(error)}\n`);
152
- return [];
153
115
  }
154
- }
155
- function loadLegacyChatSessions(sessionsPath, apiKeyPresent) {
156
- try {
157
- if (!existsSync(sessionsPath)) {
116
+ static readSessionFile(sessionsDir, entry, apiKeyPresent) {
117
+ const path = FileChatSessionRepository.sessionFilePath(sessionsDir, entry.id);
118
+ if (!existsSync(path)) {
158
119
  return [];
159
120
  }
160
- const raw = readFileSync(sessionsPath, 'utf8');
161
- const parsed = JSON.parse(raw);
162
- if (!Array.isArray(parsed)) {
163
- throw new Error('Expected session array');
121
+ try {
122
+ const parsed = JSON.parse(readFileSync(path, 'utf8'));
123
+ return ChatSessionCodec.parseSessionBody(parsed, { entry, apiKeyPresent });
164
124
  }
165
- return parsed
166
- .flatMap((value) => parseSavedSession(value, apiKeyPresent))
167
- .sort((left, right) => right.updatedAt.localeCompare(left.updatedAt));
168
- }
169
- catch (error) {
170
- process.stderr.write(`Failed to load chat sessions from ${sessionsPath}: ${error instanceof Error ? error.message : String(error)}\n`);
171
- return [];
172
- }
173
- }
174
- function parseCatalog(value) {
175
- if (!value || typeof value !== 'object' || Array.isArray(value)) {
176
- return undefined;
177
- }
178
- const candidate = value;
179
- if (candidate.version !== 1 || !Array.isArray(candidate.sessions)) {
180
- return undefined;
181
- }
182
- const sessions = candidate.sessions.flatMap(parseCatalogEntry);
183
- return { version: 1, sessions };
184
- }
185
- function parseCatalogEntry(value) {
186
- if (!value || typeof value !== 'object' || Array.isArray(value)) {
187
- return [];
188
- }
189
- const candidate = value;
190
- if (typeof candidate.id !== 'string' || typeof candidate.name !== 'string') {
191
- return [];
192
- }
193
- const createdAt = typeof candidate.createdAt === 'string' ? candidate.createdAt : new Date().toISOString();
194
- const updatedAt = typeof candidate.updatedAt === 'string' ? candidate.updatedAt : createdAt;
195
- return [{
196
- id: candidate.id,
197
- name: candidate.name,
198
- retention: parseRetention(candidate.retention),
199
- workspaceId: typeof candidate.workspaceId === 'string' ? candidate.workspaceId : undefined,
200
- createdAt,
201
- updatedAt,
202
- model: typeof candidate.model === 'string' ? candidate.model : undefined,
203
- reasoningEffort: candidate.reasoningEffort === 'low' || candidate.reasoningEffort === 'medium' || candidate.reasoningEffort === 'high' || candidate.reasoningEffort === 'ultrahigh' ?
204
- candidate.reasoningEffort
205
- : undefined,
206
- driftEnabled: typeof candidate.driftEnabled === 'boolean' ? candidate.driftEnabled : false,
207
- lastContinuePrompt: typeof candidate.lastContinuePrompt === 'string' ? candidate.lastContinuePrompt : undefined,
208
- context: isChatContextStats(candidate.context) ? candidate.context : undefined,
209
- archives: Array.isArray(candidate.archives) ? candidate.archives.flatMap(parseArchiveRecord) : undefined,
210
- lease: parseLease(candidate.lease),
211
- }];
212
- }
213
- function projectCatalogEntry(session) {
214
- return {
215
- id: session.id,
216
- name: session.name,
217
- retention: session.retention,
218
- workspaceId: session.workspaceId,
219
- createdAt: session.createdAt,
220
- updatedAt: session.updatedAt,
221
- model: session.model,
222
- reasoningEffort: session.reasoningEffort,
223
- driftEnabled: session.driftEnabled,
224
- lastContinuePrompt: session.lastContinuePrompt,
225
- context: session.context,
226
- archives: session.archives,
227
- lease: session.lease,
228
- };
229
- }
230
- function readSessionFile(sessionsDir, entry, apiKeyPresent) {
231
- const path = sessionFilePath(sessionsDir, entry.id);
232
- if (!existsSync(path)) {
233
- return [];
234
- }
235
- try {
236
- const parsed = JSON.parse(readFileSync(path, 'utf8'));
237
- const payload = readObjectRecord(parsed);
238
- if (!payload) {
125
+ catch (error) {
126
+ process.stderr.write(`Failed to load chat session file ${path}: ${error instanceof Error ? error.message : String(error)}\n`);
239
127
  return [];
240
128
  }
241
- return [{
242
- id: entry.id,
243
- name: entry.name,
244
- retention: entry.retention,
245
- workspaceId: entry.workspaceId,
246
- createdAt: entry.createdAt,
247
- updatedAt: entry.updatedAt,
248
- model: entry.model,
249
- reasoningEffort: entry.reasoningEffort,
250
- driftEnabled: entry.driftEnabled,
251
- lastContinuePrompt: entry.lastContinuePrompt,
252
- context: entry.context,
253
- archives: entry.archives,
254
- lease: entry.lease,
255
- history: Array.isArray(payload.history) ? payload.history : [],
256
- messages: Array.isArray(payload.messages) && payload.messages.length > 0 ?
257
- payload.messages.filter(isConversationLine)
258
- : createInitialMessages(apiKeyPresent),
259
- turns: Array.isArray(payload.turns) ? payload.turns.filter(isTurnSummary) : [],
260
- }];
261
- }
262
- catch (error) {
263
- process.stderr.write(`Failed to load chat session file ${path}: ${error instanceof Error ? error.message : String(error)}\n`);
264
- return [];
265
- }
266
- }
267
- function writeSessionFileIfChanged(sessionsDir, session, previousContent) {
268
- const path = sessionFilePath(sessionsDir, session.id);
269
- const nextContent = serializeSessionBody(session);
270
- if (previousContent === nextContent) {
271
- return;
272
129
  }
273
- writeFileSync(path, nextContent);
274
- }
275
- function writeCatalogIfChanged(catalogPath, catalog, previousCatalog) {
276
- const nextContent = `${JSON.stringify(catalog, null, 2)}\n`;
277
- const previousContent = previousCatalog ? `${JSON.stringify(previousCatalog, null, 2)}\n` : undefined;
278
- if (previousContent === nextContent) {
279
- return;
280
- }
281
- writeFileSync(catalogPath, nextContent);
282
- }
283
- function serializeSessionBody(session) {
284
- return `${JSON.stringify({
285
- id: session.id,
286
- retention: session.retention,
287
- workspaceId: session.workspaceId,
288
- history: session.history,
289
- messages: session.messages,
290
- turns: session.turns,
291
- archives: session.archives,
292
- lease: session.lease,
293
- }, null, 2)}\n`;
294
- }
295
- function readSessionFileContents(sessionsDir, sessionId) {
296
- const path = sessionFilePath(sessionsDir, sessionId);
297
- if (!existsSync(path)) {
298
- return undefined;
299
- }
300
- try {
301
- return readFileSync(path, 'utf8');
302
- }
303
- catch {
304
- return undefined;
305
- }
306
- }
307
- function readCatalog(catalogPath) {
308
- if (!existsSync(catalogPath)) {
309
- return undefined;
310
- }
311
- try {
312
- return parseCatalog(JSON.parse(readFileSync(catalogPath, 'utf8')));
313
- }
314
- catch {
315
- return undefined;
316
- }
317
- }
318
- function dedupeSessionsById(sessions) {
319
- const seen = new Set();
320
- const deduped = [];
321
- for (const session of sessions) {
322
- if (seen.has(session.id)) {
323
- continue;
130
+ static writeSessionFileIfChanged(sessionsDir, session, previousContent) {
131
+ const path = FileChatSessionRepository.sessionFilePath(sessionsDir, session.id);
132
+ const nextContent = ChatSessionCodec.serializeSessionBody(session);
133
+ if (previousContent === nextContent) {
134
+ return;
324
135
  }
325
- seen.add(session.id);
326
- deduped.push(session);
136
+ writeFileSync(path, nextContent);
327
137
  }
328
- return deduped;
329
- }
330
- function sessionFilePath(sessionsDir, sessionId) {
331
- return join(sessionsDir, `${sessionId}.json`);
332
- }
333
- function removeOrphanedSessionFiles(sessionsDir, activeSessionIds) {
334
- if (!existsSync(sessionsDir)) {
335
- return;
336
- }
337
- const allowed = new Set(activeSessionIds.map((id) => `${id}.json`));
338
- for (const name of safeReadDirFiles(sessionsDir)) {
339
- if (allowed.has(name) || !name.endsWith('.json')) {
340
- continue;
138
+ static writeCatalogIfChanged(catalogPath, catalog, previousCatalog) {
139
+ const nextContent = ChatSessionCodec.serializeCatalog(catalog);
140
+ const previousContent = previousCatalog ? ChatSessionCodec.serializeCatalog(previousCatalog) : undefined;
141
+ if (previousContent === nextContent) {
142
+ return;
341
143
  }
342
- unlinkSync(join(sessionsDir, name));
343
- }
344
- }
345
- function safeReadDirFiles(path) {
346
- try {
347
- return readdirSync(path);
348
- }
349
- catch {
350
- return [];
351
- }
352
- }
353
- function parseSavedSession(value, apiKeyPresent) {
354
- if (!value || typeof value !== 'object' || Array.isArray(value)) {
355
- return [];
356
- }
357
- const candidate = value;
358
- if (typeof candidate.id !== 'string' || typeof candidate.name !== 'string') {
359
- return [];
144
+ writeFileSync(catalogPath, nextContent);
360
145
  }
361
- const createdAt = typeof candidate.createdAt === 'string' ? candidate.createdAt : new Date().toISOString();
362
- const updatedAt = typeof candidate.updatedAt === 'string' ? candidate.updatedAt : createdAt;
363
- return [{
364
- id: candidate.id,
365
- name: candidate.name,
366
- retention: parseRetention(candidate.retention),
367
- workspaceId: typeof candidate.workspaceId === 'string' ? candidate.workspaceId : undefined,
368
- history: Array.isArray(candidate.history) ? candidate.history : [],
369
- messages: Array.isArray(candidate.messages) && candidate.messages.length > 0 ?
370
- candidate.messages.filter(isConversationLine)
371
- : createInitialMessages(apiKeyPresent),
372
- turns: Array.isArray(candidate.turns) ? candidate.turns.filter(isTurnSummary) : [],
373
- createdAt,
374
- updatedAt,
375
- model: typeof candidate.model === 'string' ? candidate.model : undefined,
376
- reasoningEffort: candidate.reasoningEffort === 'low' || candidate.reasoningEffort === 'medium' || candidate.reasoningEffort === 'high' || candidate.reasoningEffort === 'ultrahigh' ?
377
- candidate.reasoningEffort
378
- : undefined,
379
- driftEnabled: typeof candidate.driftEnabled === 'boolean' ? candidate.driftEnabled : false,
380
- lastContinuePrompt: typeof candidate.lastContinuePrompt === 'string' ? candidate.lastContinuePrompt : undefined,
381
- context: isChatContextStats(candidate.context) ? candidate.context : undefined,
382
- archives: Array.isArray(candidate.archives) ? candidate.archives.flatMap(parseArchiveRecord) : undefined,
383
- lease: parseLease(candidate.lease),
384
- }];
385
- }
386
- function parseRetention(value) {
387
- return value === 'reusable' || value === 'one_off' ? value : undefined;
388
- }
389
- function parseLease(value) {
390
- if (!value || typeof value !== 'object' || Array.isArray(value)) {
391
- return undefined;
392
- }
393
- const candidate = value;
394
- if ((candidate.ownerKind !== 'tui' && candidate.ownerKind !== 'daemon' && candidate.ownerKind !== 'ask') ||
395
- typeof candidate.ownerId !== 'string' ||
396
- typeof candidate.acquiredAt !== 'string' ||
397
- typeof candidate.lastSeenAt !== 'string') {
398
- return undefined;
146
+ static readSessionFileContents(sessionsDir, sessionId) {
147
+ const path = FileChatSessionRepository.sessionFilePath(sessionsDir, sessionId);
148
+ if (!existsSync(path)) {
149
+ return undefined;
150
+ }
151
+ try {
152
+ return readFileSync(path, 'utf8');
153
+ }
154
+ catch {
155
+ return undefined;
156
+ }
399
157
  }
400
- return {
401
- ownerKind: candidate.ownerKind,
402
- ownerId: candidate.ownerId,
403
- acquiredAt: candidate.acquiredAt,
404
- lastSeenAt: candidate.lastSeenAt,
405
- clientLabel: typeof candidate.clientLabel === 'string' ? candidate.clientLabel : undefined,
406
- };
407
- }
408
- function isConversationLine(value) {
409
- if (!value || typeof value !== 'object' || Array.isArray(value)) {
410
- return false;
158
+ static readCatalogFile(catalogPath) {
159
+ if (!existsSync(catalogPath)) {
160
+ return undefined;
161
+ }
162
+ try {
163
+ return ChatSessionCodec.parseCatalog(JSON.parse(readFileSync(catalogPath, 'utf8')));
164
+ }
165
+ catch {
166
+ return undefined;
167
+ }
411
168
  }
412
- const candidate = value;
413
- return (typeof candidate.id === 'string' &&
414
- (candidate.role === 'user' || candidate.role === 'assistant') &&
415
- typeof candidate.text === 'string');
416
- }
417
- function isTurnSummary(value) {
418
- if (!value || typeof value !== 'object' || Array.isArray(value)) {
419
- return false;
169
+ static dedupeSessionsById(sessions) {
170
+ const seen = new Set();
171
+ const deduped = [];
172
+ for (const session of sessions) {
173
+ if (seen.has(session.id)) {
174
+ continue;
175
+ }
176
+ seen.add(session.id);
177
+ deduped.push(session);
178
+ }
179
+ return deduped;
420
180
  }
421
- const candidate = value;
422
- return (typeof candidate.id === 'string' &&
423
- typeof candidate.prompt === 'string' &&
424
- typeof candidate.outcome === 'string' &&
425
- typeof candidate.summary === 'string' &&
426
- typeof candidate.steps === 'number' &&
427
- typeof candidate.traceFile === 'string' &&
428
- Array.isArray(candidate.events) &&
429
- candidate.events.every((event) => typeof event === 'string'));
430
- }
431
- function isChatContextStats(value) {
432
- if (!value || typeof value !== 'object' || Array.isArray(value)) {
433
- return false;
181
+ static sessionFilePath(sessionsDir, sessionId) {
182
+ return join(sessionsDir, `${sessionId}.json`);
434
183
  }
435
- const candidate = value;
436
- return (typeof candidate.estimatedHistoryTokens === 'number' &&
437
- (candidate.estimatedRequestTokens === undefined || typeof candidate.estimatedRequestTokens === 'number') &&
438
- (candidate.lastRunInputTokens === undefined || typeof candidate.lastRunInputTokens === 'number') &&
439
- (candidate.lastRunOutputTokens === undefined || typeof candidate.lastRunOutputTokens === 'number') &&
440
- (candidate.lastRunTotalTokens === undefined || typeof candidate.lastRunTotalTokens === 'number') &&
441
- (candidate.cachedInputTokens === undefined || typeof candidate.cachedInputTokens === 'number') &&
442
- (candidate.reasoningTokens === undefined || typeof candidate.reasoningTokens === 'number') &&
443
- (candidate.compactedMessages === undefined || typeof candidate.compactedMessages === 'number') &&
444
- (candidate.compactedAt === undefined || typeof candidate.compactedAt === 'string') &&
445
- (candidate.compactionStatus === undefined || candidate.compactionStatus === 'idle' || candidate.compactionStatus === 'running' || candidate.compactionStatus === 'failed') &&
446
- (candidate.compactionError === undefined || typeof candidate.compactionError === 'string') &&
447
- (candidate.archiveCount === undefined || typeof candidate.archiveCount === 'number') &&
448
- (candidate.currentSummaryPath === undefined || typeof candidate.currentSummaryPath === 'string') &&
449
- (candidate.lastArchivePath === undefined || typeof candidate.lastArchivePath === 'string'));
450
- }
451
- function parseArchiveRecord(value) {
452
- if (!value || typeof value !== 'object' || Array.isArray(value)) {
453
- return [];
184
+ static removeOrphanedSessionFiles(sessionsDir, activeSessionIds) {
185
+ if (!existsSync(sessionsDir)) {
186
+ return;
187
+ }
188
+ const allowed = new Set(activeSessionIds.map((id) => `${id}.json`));
189
+ for (const name of FileChatSessionRepository.safeReadDirFiles(sessionsDir)) {
190
+ if (allowed.has(name) || !name.endsWith('.json')) {
191
+ continue;
192
+ }
193
+ unlinkSync(join(sessionsDir, name));
194
+ }
454
195
  }
455
- const candidate = value;
456
- if (typeof candidate.id !== 'string'
457
- || typeof candidate.path !== 'string'
458
- || typeof candidate.summaryPath !== 'string'
459
- || typeof candidate.messageCount !== 'number'
460
- || typeof candidate.createdAt !== 'string') {
461
- return [];
196
+ static safeReadDirFiles(path) {
197
+ try {
198
+ return readdirSync(path);
199
+ }
200
+ catch {
201
+ return [];
202
+ }
462
203
  }
463
- return [{
464
- id: candidate.id,
465
- path: candidate.path,
466
- summaryPath: candidate.summaryPath,
467
- shortDescription: typeof candidate.shortDescription === 'string' ? candidate.shortDescription : undefined,
468
- messageCount: candidate.messageCount,
469
- createdAt: candidate.createdAt,
470
- summaryModel: typeof candidate.summaryModel === 'string' ? candidate.summaryModel : undefined,
471
- }];
472
- }
473
- function readObjectRecord(value) {
474
- return value && typeof value === 'object' && !Array.isArray(value) ? value : undefined;
475
204
  }
476
205
  //# sourceMappingURL=file-chat-session-repository.js.map