@roj-ai/sdk 0.1.35 → 0.2.1

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 (908) hide show
  1. package/dist/bootstrap.d.ts +420 -26
  2. package/dist/bootstrap.d.ts.map +1 -1
  3. package/dist/bootstrap.js +55 -24
  4. package/dist/bootstrap.js.map +1 -1
  5. package/dist/bun-platform/fs.d.ts.map +1 -1
  6. package/dist/bun-platform/fs.js +1 -0
  7. package/dist/bun-platform/fs.js.map +1 -1
  8. package/dist/bun-platform/index.d.ts +4 -1
  9. package/dist/bun-platform/index.d.ts.map +1 -1
  10. package/dist/bun-platform/index.js +7 -1
  11. package/dist/bun-platform/index.js.map +1 -1
  12. package/dist/bun-platform/server-lifecycle.d.ts +30 -0
  13. package/dist/bun-platform/server-lifecycle.d.ts.map +1 -0
  14. package/dist/bun-platform/server-lifecycle.js +182 -0
  15. package/dist/bun-platform/server-lifecycle.js.map +1 -0
  16. package/dist/bun-platform/shell.d.ts +33 -0
  17. package/dist/bun-platform/shell.d.ts.map +1 -0
  18. package/dist/bun-platform/shell.js +322 -0
  19. package/dist/bun-platform/shell.js.map +1 -0
  20. package/dist/config.d.ts +34 -0
  21. package/dist/config.d.ts.map +1 -1
  22. package/dist/config.js +97 -0
  23. package/dist/config.js.map +1 -1
  24. package/dist/core/agents/agent.d.ts +42 -7
  25. package/dist/core/agents/agent.d.ts.map +1 -1
  26. package/dist/core/agents/agent.js +209 -90
  27. package/dist/core/agents/agent.js.map +1 -1
  28. package/dist/core/agents/config.d.ts +8 -1
  29. package/dist/core/agents/config.d.ts.map +1 -1
  30. package/dist/core/agents/config.js +5 -1
  31. package/dist/core/agents/config.js.map +1 -1
  32. package/dist/core/agents/retry.d.ts +1 -1
  33. package/dist/core/agents/retry.d.ts.map +1 -1
  34. package/dist/core/agents/retry.js +14 -16
  35. package/dist/core/agents/retry.js.map +1 -1
  36. package/dist/core/agents/state.d.ts +27 -1
  37. package/dist/core/agents/state.d.ts.map +1 -1
  38. package/dist/core/agents/state.js +1 -1
  39. package/dist/core/agents/state.js.map +1 -1
  40. package/dist/core/context/state.d.ts +3 -3
  41. package/dist/core/context/state.d.ts.map +1 -1
  42. package/dist/core/context/state.js +6 -2
  43. package/dist/core/context/state.js.map +1 -1
  44. package/dist/core/events/base-event-store.d.ts.map +1 -1
  45. package/dist/core/events/base-event-store.js +22 -14
  46. package/dist/core/events/base-event-store.js.map +1 -1
  47. package/dist/core/events/file.d.ts +39 -1
  48. package/dist/core/events/file.d.ts.map +1 -1
  49. package/dist/core/events/file.js +159 -20
  50. package/dist/core/events/file.js.map +1 -1
  51. package/dist/core/events/types.d.ts +1 -1
  52. package/dist/core/file-store/containment.d.ts +19 -0
  53. package/dist/core/file-store/containment.d.ts.map +1 -0
  54. package/dist/core/file-store/containment.js +62 -0
  55. package/dist/core/file-store/containment.js.map +1 -0
  56. package/dist/core/file-store/file-store.d.ts +22 -2
  57. package/dist/core/file-store/file-store.d.ts.map +1 -1
  58. package/dist/core/file-store/file-store.js +88 -20
  59. package/dist/core/file-store/file-store.js.map +1 -1
  60. package/dist/core/file-store/types.d.ts +13 -1
  61. package/dist/core/file-store/types.d.ts.map +1 -1
  62. package/dist/core/image/image-processor.d.ts.map +1 -1
  63. package/dist/core/image/image-processor.js +3 -1
  64. package/dist/core/image/image-processor.js.map +1 -1
  65. package/dist/core/image/types.d.ts +2 -0
  66. package/dist/core/image/types.d.ts.map +1 -1
  67. package/dist/core/image/vips-resizer.d.ts.map +1 -1
  68. package/dist/core/image/vips-resizer.js +81 -33
  69. package/dist/core/image/vips-resizer.js.map +1 -1
  70. package/dist/core/llm/anthropic.d.ts +0 -1
  71. package/dist/core/llm/anthropic.d.ts.map +1 -1
  72. package/dist/core/llm/anthropic.js +101 -74
  73. package/dist/core/llm/anthropic.js.map +1 -1
  74. package/dist/core/llm/logger.d.ts +14 -2
  75. package/dist/core/llm/logger.d.ts.map +1 -1
  76. package/dist/core/llm/logger.js +161 -36
  77. package/dist/core/llm/logger.js.map +1 -1
  78. package/dist/core/llm/openrouter.d.ts +0 -1
  79. package/dist/core/llm/openrouter.d.ts.map +1 -1
  80. package/dist/core/llm/openrouter.js +70 -74
  81. package/dist/core/llm/openrouter.js.map +1 -1
  82. package/dist/core/llm/provider-request.d.ts +10 -0
  83. package/dist/core/llm/provider-request.d.ts.map +1 -0
  84. package/dist/core/llm/provider-request.js +41 -0
  85. package/dist/core/llm/provider-request.js.map +1 -0
  86. package/dist/core/llm/provider.d.ts +45 -3
  87. package/dist/core/llm/provider.d.ts.map +1 -1
  88. package/dist/core/llm/provider.js +26 -0
  89. package/dist/core/llm/provider.js.map +1 -1
  90. package/dist/core/llm/state.d.ts +4 -2
  91. package/dist/core/llm/state.d.ts.map +1 -1
  92. package/dist/core/llm/state.js +15 -4
  93. package/dist/core/llm/state.js.map +1 -1
  94. package/dist/core/plugins/plugin-builder.d.ts +57 -3
  95. package/dist/core/plugins/plugin-builder.d.ts.map +1 -1
  96. package/dist/core/plugins/plugin-builder.js +68 -14
  97. package/dist/core/plugins/plugin-builder.js.map +1 -1
  98. package/dist/core/preset/preset-builder.d.ts +3 -2
  99. package/dist/core/preset/preset-builder.d.ts.map +1 -1
  100. package/dist/core/preset/preset-builder.js +7 -16
  101. package/dist/core/preset/preset-builder.js.map +1 -1
  102. package/dist/core/sessions/context.d.ts +23 -5
  103. package/dist/core/sessions/context.d.ts.map +1 -1
  104. package/dist/core/sessions/runtime-activity.d.ts +33 -0
  105. package/dist/core/sessions/runtime-activity.d.ts.map +1 -0
  106. package/dist/core/sessions/runtime-activity.js +55 -0
  107. package/dist/core/sessions/runtime-activity.js.map +1 -0
  108. package/dist/core/sessions/schema.d.ts +23 -2
  109. package/dist/core/sessions/schema.d.ts.map +1 -1
  110. package/dist/core/sessions/schema.js +24 -3
  111. package/dist/core/sessions/schema.js.map +1 -1
  112. package/dist/core/sessions/session-manager.d.ts +83 -6
  113. package/dist/core/sessions/session-manager.d.ts.map +1 -1
  114. package/dist/core/sessions/session-manager.js +517 -118
  115. package/dist/core/sessions/session-manager.js.map +1 -1
  116. package/dist/core/sessions/session-store.d.ts +18 -0
  117. package/dist/core/sessions/session-store.d.ts.map +1 -1
  118. package/dist/core/sessions/session-store.js +33 -0
  119. package/dist/core/sessions/session-store.js.map +1 -1
  120. package/dist/core/sessions/session.d.ts +42 -6
  121. package/dist/core/sessions/session.d.ts.map +1 -1
  122. package/dist/core/sessions/session.js +176 -44
  123. package/dist/core/sessions/session.js.map +1 -1
  124. package/dist/core/sessions/state.d.ts +10 -1
  125. package/dist/core/sessions/state.d.ts.map +1 -1
  126. package/dist/core/sessions/state.js +16 -1
  127. package/dist/core/sessions/state.js.map +1 -1
  128. package/dist/core/system.d.ts +9 -0
  129. package/dist/core/system.d.ts.map +1 -1
  130. package/dist/core/system.js +4 -1
  131. package/dist/core/system.js.map +1 -1
  132. package/dist/core/tools/executor.d.ts +1 -1
  133. package/dist/core/wake-key.d.ts +34 -0
  134. package/dist/core/wake-key.d.ts.map +1 -0
  135. package/dist/core/wake-key.js +51 -0
  136. package/dist/core/wake-key.js.map +1 -0
  137. package/dist/index.d.ts +24 -13
  138. package/dist/index.d.ts.map +1 -1
  139. package/dist/index.js +22 -8
  140. package/dist/index.js.map +1 -1
  141. package/dist/lib/archive/archive-inspection.d.ts +48 -0
  142. package/dist/lib/archive/archive-inspection.d.ts.map +1 -0
  143. package/dist/lib/archive/archive-inspection.fixtures.d.ts +7 -0
  144. package/dist/lib/archive/archive-inspection.fixtures.d.ts.map +1 -0
  145. package/dist/lib/archive/archive-inspection.fixtures.js +134 -0
  146. package/dist/lib/archive/archive-inspection.fixtures.js.map +1 -0
  147. package/dist/lib/archive/archive-inspection.js +253 -0
  148. package/dist/lib/archive/archive-inspection.js.map +1 -0
  149. package/dist/lib/archive/index.d.ts +3 -0
  150. package/dist/lib/archive/index.d.ts.map +1 -0
  151. package/dist/lib/archive/index.js +2 -0
  152. package/dist/lib/archive/index.js.map +1 -0
  153. package/dist/lib/logger/console.d.ts +5 -12
  154. package/dist/lib/logger/console.d.ts.map +1 -1
  155. package/dist/lib/logger/console.js +5 -47
  156. package/dist/lib/logger/console.js.map +1 -1
  157. package/dist/lib/logger/file.d.ts +8 -11
  158. package/dist/lib/logger/file.d.ts.map +1 -1
  159. package/dist/lib/logger/file.js +26 -37
  160. package/dist/lib/logger/file.js.map +1 -1
  161. package/dist/lib/logger/index.d.ts +3 -1
  162. package/dist/lib/logger/index.d.ts.map +1 -1
  163. package/dist/lib/logger/index.js +3 -1
  164. package/dist/lib/logger/index.js.map +1 -1
  165. package/dist/lib/logger/jsonl.d.ts +21 -0
  166. package/dist/lib/logger/jsonl.d.ts.map +1 -0
  167. package/dist/lib/logger/jsonl.js +29 -0
  168. package/dist/lib/logger/jsonl.js.map +1 -0
  169. package/dist/lib/logger/logger.d.ts +22 -0
  170. package/dist/lib/logger/logger.d.ts.map +1 -1
  171. package/dist/lib/logger/logger.js +37 -0
  172. package/dist/lib/logger/logger.js.map +1 -1
  173. package/dist/lib/logger/session-log.d.ts +21 -0
  174. package/dist/lib/logger/session-log.d.ts.map +1 -0
  175. package/dist/lib/logger/session-log.js +37 -0
  176. package/dist/lib/logger/session-log.js.map +1 -0
  177. package/dist/lib/utils/concurrency.d.ts +1 -1
  178. package/dist/lib/utils/concurrency.d.ts.map +1 -1
  179. package/dist/lib/utils/concurrency.js +30 -7
  180. package/dist/lib/utils/concurrency.js.map +1 -1
  181. package/dist/lib/utils/fs-batch.d.ts +17 -0
  182. package/dist/lib/utils/fs-batch.d.ts.map +1 -0
  183. package/dist/lib/utils/fs-batch.js +38 -0
  184. package/dist/lib/utils/fs-batch.js.map +1 -0
  185. package/dist/lib/utils/result.d.ts +7 -22
  186. package/dist/lib/utils/result.d.ts.map +1 -1
  187. package/dist/lib/utils/result.js +6 -17
  188. package/dist/lib/utils/result.js.map +1 -1
  189. package/dist/lib/utils/sleep.d.ts +10 -0
  190. package/dist/lib/utils/sleep.d.ts.map +1 -0
  191. package/dist/lib/utils/sleep.js +26 -0
  192. package/dist/lib/utils/sleep.js.map +1 -0
  193. package/dist/platform/fs-revision.d.ts +21 -0
  194. package/dist/platform/fs-revision.d.ts.map +1 -0
  195. package/dist/platform/fs-revision.js +9 -0
  196. package/dist/platform/fs-revision.js.map +1 -0
  197. package/dist/platform/fs.d.ts +104 -1
  198. package/dist/platform/fs.d.ts.map +1 -1
  199. package/dist/platform/git.d.ts +59 -0
  200. package/dist/platform/git.d.ts.map +1 -0
  201. package/dist/platform/git.js +8 -0
  202. package/dist/platform/git.js.map +1 -0
  203. package/dist/platform/index.d.ts +40 -1
  204. package/dist/platform/index.d.ts.map +1 -1
  205. package/dist/platform/index.js +1 -1
  206. package/dist/platform/index.js.map +1 -1
  207. package/dist/platform/llm-call-log.d.ts +80 -0
  208. package/dist/platform/llm-call-log.d.ts.map +1 -0
  209. package/dist/platform/llm-call-log.js +12 -0
  210. package/dist/platform/llm-call-log.js.map +1 -0
  211. package/dist/platform/scheduler.d.ts +32 -0
  212. package/dist/platform/scheduler.d.ts.map +1 -0
  213. package/dist/platform/scheduler.js +46 -0
  214. package/dist/platform/scheduler.js.map +1 -0
  215. package/dist/platform/session-log.d.ts +36 -0
  216. package/dist/platform/session-log.d.ts.map +1 -0
  217. package/dist/platform/session-log.js +12 -0
  218. package/dist/platform/session-log.js.map +1 -0
  219. package/dist/platform/shell.d.ts +83 -0
  220. package/dist/platform/shell.d.ts.map +1 -0
  221. package/dist/platform/shell.js +13 -0
  222. package/dist/platform/shell.js.map +1 -0
  223. package/dist/plugins/agent-status/plugin.d.ts.map +1 -1
  224. package/dist/plugins/agent-status/plugin.js +1 -0
  225. package/dist/plugins/agent-status/plugin.js.map +1 -1
  226. package/dist/plugins/agents/plugin.d.ts.map +1 -1
  227. package/dist/plugins/agents/plugin.js +129 -62
  228. package/dist/plugins/agents/plugin.js.map +1 -1
  229. package/dist/plugins/filesystem/listing.d.ts +3 -0
  230. package/dist/plugins/filesystem/listing.d.ts.map +1 -1
  231. package/dist/plugins/filesystem/listing.js +66 -10
  232. package/dist/plugins/filesystem/listing.js.map +1 -1
  233. package/dist/plugins/filesystem/plugin.d.ts.map +1 -1
  234. package/dist/plugins/filesystem/plugin.js +8 -6
  235. package/dist/plugins/filesystem/plugin.js.map +1 -1
  236. package/dist/plugins/git-status/plugin.d.ts +34 -7
  237. package/dist/plugins/git-status/plugin.d.ts.map +1 -1
  238. package/dist/plugins/git-status/plugin.js +168 -64
  239. package/dist/plugins/git-status/plugin.js.map +1 -1
  240. package/dist/plugins/llm-debug/plugin.d.ts.map +1 -1
  241. package/dist/plugins/llm-debug/plugin.js +1 -0
  242. package/dist/plugins/llm-debug/plugin.js.map +1 -1
  243. package/dist/plugins/logs/plugin.d.ts +1 -4
  244. package/dist/plugins/logs/plugin.d.ts.map +1 -1
  245. package/dist/plugins/logs/plugin.js +7 -0
  246. package/dist/plugins/logs/plugin.js.map +1 -1
  247. package/dist/plugins/mailbox/helpers.d.ts +2 -2
  248. package/dist/plugins/mailbox/helpers.js +1 -1
  249. package/dist/plugins/mailbox/plugin.d.ts.map +1 -1
  250. package/dist/plugins/mailbox/plugin.js +38 -43
  251. package/dist/plugins/mailbox/plugin.js.map +1 -1
  252. package/dist/plugins/mailbox/query.d.ts +7 -2
  253. package/dist/plugins/mailbox/query.d.ts.map +1 -1
  254. package/dist/plugins/mailbox/query.js +14 -7
  255. package/dist/plugins/mailbox/query.js.map +1 -1
  256. package/dist/plugins/mailbox/state.d.ts +5 -4
  257. package/dist/plugins/mailbox/state.d.ts.map +1 -1
  258. package/dist/plugins/mailbox/state.js +6 -5
  259. package/dist/plugins/mailbox/state.js.map +1 -1
  260. package/dist/plugins/resources/filename.d.ts +4 -0
  261. package/dist/plugins/resources/filename.d.ts.map +1 -0
  262. package/dist/plugins/resources/filename.js +18 -0
  263. package/dist/plugins/resources/filename.js.map +1 -0
  264. package/dist/plugins/resources/plugin.d.ts +3 -0
  265. package/dist/plugins/resources/plugin.d.ts.map +1 -1
  266. package/dist/plugins/resources/plugin.js +97 -60
  267. package/dist/plugins/resources/plugin.js.map +1 -1
  268. package/dist/plugins/resources/state.d.ts +1 -1
  269. package/dist/plugins/resources/state.js +1 -1
  270. package/dist/plugins/result-eviction/plugin.d.ts.map +1 -1
  271. package/dist/plugins/result-eviction/plugin.js +6 -1
  272. package/dist/plugins/result-eviction/plugin.js.map +1 -1
  273. package/dist/plugins/services/plugin.d.ts +4 -1
  274. package/dist/plugins/services/plugin.d.ts.map +1 -1
  275. package/dist/plugins/services/plugin.js +251 -100
  276. package/dist/plugins/services/plugin.js.map +1 -1
  277. package/dist/plugins/services/prompt.d.ts.map +1 -1
  278. package/dist/plugins/services/prompt.js +1 -4
  279. package/dist/plugins/services/prompt.js.map +1 -1
  280. package/dist/plugins/services/schema.d.ts +15 -5
  281. package/dist/plugins/services/schema.d.ts.map +1 -1
  282. package/dist/plugins/services/service.d.ts +100 -18
  283. package/dist/plugins/services/service.d.ts.map +1 -1
  284. package/dist/plugins/services/service.js +680 -230
  285. package/dist/plugins/services/service.js.map +1 -1
  286. package/dist/plugins/session-lifecycle/plugin.d.ts +21 -1
  287. package/dist/plugins/session-lifecycle/plugin.d.ts.map +1 -1
  288. package/dist/plugins/session-lifecycle/plugin.js +53 -40
  289. package/dist/plugins/session-lifecycle/plugin.js.map +1 -1
  290. package/dist/plugins/session-state/plugin.d.ts +21 -13
  291. package/dist/plugins/session-state/plugin.d.ts.map +1 -1
  292. package/dist/plugins/session-state/plugin.js +214 -79
  293. package/dist/plugins/session-state/plugin.js.map +1 -1
  294. package/dist/plugins/session-stats/plugin.d.ts.map +1 -1
  295. package/dist/plugins/session-stats/plugin.js +1 -0
  296. package/dist/plugins/session-stats/plugin.js.map +1 -1
  297. package/dist/plugins/shell/executor.d.ts +17 -15
  298. package/dist/plugins/shell/executor.d.ts.map +1 -1
  299. package/dist/plugins/shell/executor.js +130 -195
  300. package/dist/plugins/shell/executor.js.map +1 -1
  301. package/dist/plugins/shell/index.d.ts +2 -2
  302. package/dist/plugins/shell/index.d.ts.map +1 -1
  303. package/dist/plugins/shell/index.js +2 -2
  304. package/dist/plugins/shell/index.js.map +1 -1
  305. package/dist/plugins/shell/plugin.d.ts +5 -4
  306. package/dist/plugins/shell/plugin.d.ts.map +1 -1
  307. package/dist/plugins/shell/plugin.js +4 -8
  308. package/dist/plugins/shell/plugin.js.map +1 -1
  309. package/dist/plugins/skills/discovery.d.ts.map +1 -1
  310. package/dist/plugins/skills/discovery.js +10 -8
  311. package/dist/plugins/skills/discovery.js.map +1 -1
  312. package/dist/plugins/skills/index.d.ts +1 -1
  313. package/dist/plugins/skills/index.d.ts.map +1 -1
  314. package/dist/plugins/skills/plugin.d.ts +1 -1
  315. package/dist/plugins/skills/plugin.d.ts.map +1 -1
  316. package/dist/plugins/skills/plugin.js +23 -30
  317. package/dist/plugins/skills/plugin.js.map +1 -1
  318. package/dist/plugins/skills/prompts.d.ts +3 -3
  319. package/dist/plugins/skills/prompts.d.ts.map +1 -1
  320. package/dist/plugins/skills/prompts.js.map +1 -1
  321. package/dist/plugins/skills/schema.d.ts +4 -2
  322. package/dist/plugins/skills/schema.d.ts.map +1 -1
  323. package/dist/plugins/todo/schema.d.ts +1 -1
  324. package/dist/plugins/uploads/plugin.d.ts +11 -4
  325. package/dist/plugins/uploads/plugin.d.ts.map +1 -1
  326. package/dist/plugins/uploads/plugin.js +891 -225
  327. package/dist/plugins/uploads/plugin.js.map +1 -1
  328. package/dist/plugins/uploads/preprocessor.d.ts +14 -0
  329. package/dist/plugins/uploads/preprocessor.d.ts.map +1 -1
  330. package/dist/plugins/uploads/preprocessor.js +11 -0
  331. package/dist/plugins/uploads/preprocessor.js.map +1 -1
  332. package/dist/plugins/uploads/preprocessors/image-classifier.d.ts +1 -1
  333. package/dist/plugins/uploads/preprocessors/image-classifier.d.ts.map +1 -1
  334. package/dist/plugins/uploads/preprocessors/image-classifier.js +51 -26
  335. package/dist/plugins/uploads/preprocessors/image-classifier.js.map +1 -1
  336. package/dist/plugins/uploads/preprocessors/markitdown-preprocessor.d.ts +2 -2
  337. package/dist/plugins/uploads/preprocessors/markitdown-preprocessor.d.ts.map +1 -1
  338. package/dist/plugins/uploads/preprocessors/markitdown-preprocessor.js +41 -16
  339. package/dist/plugins/uploads/preprocessors/markitdown-preprocessor.js.map +1 -1
  340. package/dist/plugins/uploads/preprocessors/pdf-preprocessor.d.ts +1 -1
  341. package/dist/plugins/uploads/preprocessors/pdf-preprocessor.d.ts.map +1 -1
  342. package/dist/plugins/uploads/preprocessors/pdf-preprocessor.js +29 -14
  343. package/dist/plugins/uploads/preprocessors/pdf-preprocessor.js.map +1 -1
  344. package/dist/plugins/uploads/preprocessors/zip-preprocessor.d.ts +1 -1
  345. package/dist/plugins/uploads/preprocessors/zip-preprocessor.d.ts.map +1 -1
  346. package/dist/plugins/uploads/preprocessors/zip-preprocessor.js +62 -34
  347. package/dist/plugins/uploads/preprocessors/zip-preprocessor.js.map +1 -1
  348. package/dist/plugins/uploads/schema.d.ts +25 -2
  349. package/dist/plugins/uploads/schema.d.ts.map +1 -1
  350. package/dist/plugins/uploads/schema.js +24 -3
  351. package/dist/plugins/uploads/schema.js.map +1 -1
  352. package/dist/plugins/uploads/state.d.ts +13 -1
  353. package/dist/plugins/uploads/state.d.ts.map +1 -1
  354. package/dist/plugins/uploads/state.js +4 -1
  355. package/dist/plugins/uploads/state.js.map +1 -1
  356. package/dist/plugins/user-chat/plugin.d.ts +12 -5
  357. package/dist/plugins/user-chat/plugin.d.ts.map +1 -1
  358. package/dist/plugins/user-chat/plugin.js +141 -32
  359. package/dist/plugins/user-chat/plugin.js.map +1 -1
  360. package/dist/plugins/workers/context.d.ts +35 -13
  361. package/dist/plugins/workers/context.d.ts.map +1 -1
  362. package/dist/plugins/workers/context.js +82 -32
  363. package/dist/plugins/workers/context.js.map +1 -1
  364. package/dist/plugins/workers/definition.d.ts +7 -0
  365. package/dist/plugins/workers/definition.d.ts.map +1 -1
  366. package/dist/plugins/workers/definition.js.map +1 -1
  367. package/dist/plugins/workers/index.d.ts +4 -4
  368. package/dist/plugins/workers/index.d.ts.map +1 -1
  369. package/dist/plugins/workers/index.js +2 -2
  370. package/dist/plugins/workers/index.js.map +1 -1
  371. package/dist/plugins/workers/plugin.d.ts +10 -57
  372. package/dist/plugins/workers/plugin.d.ts.map +1 -1
  373. package/dist/plugins/workers/plugin.js +385 -123
  374. package/dist/plugins/workers/plugin.js.map +1 -1
  375. package/dist/plugins/workers/state.d.ts +69 -0
  376. package/dist/plugins/workers/state.d.ts.map +1 -0
  377. package/dist/plugins/workers/state.js +52 -0
  378. package/dist/plugins/workers/state.js.map +1 -0
  379. package/dist/plugins/workers/worker.d.ts +15 -4
  380. package/dist/plugins/workers/worker.d.ts.map +1 -1
  381. package/dist/testing/conformance.d.ts +106 -0
  382. package/dist/testing/conformance.d.ts.map +1 -0
  383. package/dist/testing/conformance.js +1463 -0
  384. package/dist/testing/conformance.js.map +1 -0
  385. package/dist/testing/node-platform.d.ts.map +1 -1
  386. package/dist/testing/node-platform.js +5 -0
  387. package/dist/testing/node-platform.js.map +1 -1
  388. package/dist/testing/test-harness.d.ts +11 -1
  389. package/dist/testing/test-harness.d.ts.map +1 -1
  390. package/dist/testing/test-harness.js +17 -37
  391. package/dist/testing/test-harness.js.map +1 -1
  392. package/dist/testing/wait-helpers.d.ts.map +1 -1
  393. package/dist/testing/wait-helpers.js +1 -3
  394. package/dist/testing/wait-helpers.js.map +1 -1
  395. package/dist/transport/adapter/client-adapter.d.ts +6 -0
  396. package/dist/transport/adapter/client-adapter.d.ts.map +1 -1
  397. package/dist/transport/adapter/client-adapter.js +50 -3
  398. package/dist/transport/adapter/client-adapter.js.map +1 -1
  399. package/dist/transport/adapter/heartbeat.d.ts +16 -0
  400. package/dist/transport/adapter/heartbeat.d.ts.map +1 -0
  401. package/dist/transport/adapter/heartbeat.js +41 -0
  402. package/dist/transport/adapter/heartbeat.js.map +1 -0
  403. package/dist/transport/adapter/server-adapter.d.ts.map +1 -1
  404. package/dist/transport/adapter/server-adapter.js +6 -0
  405. package/dist/transport/adapter/server-adapter.js.map +1 -1
  406. package/dist/transport/http/app.d.ts +3 -30
  407. package/dist/transport/http/app.d.ts.map +1 -1
  408. package/dist/transport/http/app.js +3 -7
  409. package/dist/transport/http/app.js.map +1 -1
  410. package/dist/transport/http/context.d.ts +40 -0
  411. package/dist/transport/http/context.d.ts.map +1 -0
  412. package/dist/transport/http/context.js +17 -0
  413. package/dist/transport/http/context.js.map +1 -0
  414. package/dist/transport/http/fetch-guard.d.ts +49 -0
  415. package/dist/transport/http/fetch-guard.d.ts.map +1 -0
  416. package/dist/transport/http/fetch-guard.js +312 -0
  417. package/dist/transport/http/fetch-guard.js.map +1 -0
  418. package/dist/transport/http/index.d.ts +1 -1
  419. package/dist/transport/http/index.d.ts.map +1 -1
  420. package/dist/transport/http/middleware/bearer-auth.d.ts +1 -1
  421. package/dist/transport/http/middleware/bearer-auth.d.ts.map +1 -1
  422. package/dist/transport/http/middleware/error-handler.d.ts +2 -2
  423. package/dist/transport/http/middleware/error-handler.d.ts.map +1 -1
  424. package/dist/transport/http/path-containment.d.ts +20 -0
  425. package/dist/transport/http/path-containment.d.ts.map +1 -0
  426. package/dist/transport/http/path-containment.js +31 -0
  427. package/dist/transport/http/path-containment.js.map +1 -0
  428. package/dist/transport/http/responses.d.ts +30 -0
  429. package/dist/transport/http/responses.d.ts.map +1 -0
  430. package/dist/transport/http/responses.js +5 -0
  431. package/dist/transport/http/responses.js.map +1 -0
  432. package/dist/transport/http/routes/files.d.ts +1 -1
  433. package/dist/transport/http/routes/files.d.ts.map +1 -1
  434. package/dist/transport/http/routes/files.js +54 -155
  435. package/dist/transport/http/routes/files.js.map +1 -1
  436. package/dist/transport/http/routes/resources.d.ts +1 -1
  437. package/dist/transport/http/routes/resources.d.ts.map +1 -1
  438. package/dist/transport/http/routes/resources.js +92 -57
  439. package/dist/transport/http/routes/resources.js.map +1 -1
  440. package/dist/transport/http/routes/rpc.d.ts +6 -1
  441. package/dist/transport/http/routes/rpc.d.ts.map +1 -1
  442. package/dist/transport/http/routes/rpc.js +51 -21
  443. package/dist/transport/http/routes/rpc.js.map +1 -1
  444. package/dist/transport/http/routes/upload.d.ts +1 -1
  445. package/dist/transport/http/routes/upload.d.ts.map +1 -1
  446. package/dist/transport/http/routes/upload.js +256 -169
  447. package/dist/transport/http/routes/upload.js.map +1 -1
  448. package/dist/user-config.d.ts +34 -7
  449. package/dist/user-config.d.ts.map +1 -1
  450. package/dist/user-config.js +71 -0
  451. package/dist/user-config.js.map +1 -1
  452. package/package.json +18 -8
  453. package/src/bootstrap.ts +119 -35
  454. package/src/bun-platform/fs.ts +1 -0
  455. package/src/bun-platform/index.ts +18 -1
  456. package/src/bun-platform/server-lifecycle.ts +218 -0
  457. package/src/bun-platform/shell.ts +362 -0
  458. package/src/config.ts +130 -0
  459. package/src/core/agents/agent.ts +219 -95
  460. package/src/core/agents/config.ts +8 -0
  461. package/src/core/agents/retry.ts +16 -17
  462. package/src/core/agents/state.ts +28 -0
  463. package/src/core/context/state.ts +4 -0
  464. package/src/core/events/base-event-store.ts +24 -16
  465. package/src/core/events/file.ts +198 -22
  466. package/src/core/file-store/containment.ts +75 -0
  467. package/src/core/file-store/file-store.ts +106 -25
  468. package/src/core/file-store/types.ts +14 -1
  469. package/src/core/image/image-processor.ts +3 -1
  470. package/src/core/image/types.ts +2 -0
  471. package/src/core/image/vips-resizer.ts +102 -37
  472. package/src/core/llm/anthropic.ts +127 -82
  473. package/src/core/llm/logger.ts +175 -37
  474. package/src/core/llm/openrouter.ts +82 -81
  475. package/src/core/llm/provider-request.ts +40 -0
  476. package/src/core/llm/provider.ts +72 -3
  477. package/src/core/llm/state.ts +12 -0
  478. package/src/core/plugins/plugin-builder.ts +106 -14
  479. package/src/core/preset/preset-builder.ts +12 -22
  480. package/src/core/sessions/context.ts +18 -0
  481. package/src/core/sessions/runtime-activity.ts +78 -0
  482. package/src/core/sessions/schema.ts +29 -3
  483. package/src/core/sessions/session-manager.ts +560 -140
  484. package/src/core/sessions/session-store.ts +38 -0
  485. package/src/core/sessions/session.ts +187 -47
  486. package/src/core/sessions/state.ts +16 -0
  487. package/src/core/system.ts +15 -0
  488. package/src/core/wake-key.ts +65 -0
  489. package/src/index.ts +31 -12
  490. package/src/lib/archive/archive-inspection.fixtures.ts +138 -0
  491. package/src/lib/archive/archive-inspection.ts +359 -0
  492. package/src/lib/archive/index.ts +17 -0
  493. package/src/lib/logger/console.ts +7 -57
  494. package/src/lib/logger/file.ts +28 -50
  495. package/src/lib/logger/index.ts +3 -1
  496. package/src/lib/logger/jsonl.ts +36 -0
  497. package/src/lib/logger/logger.ts +48 -0
  498. package/src/lib/logger/session-log.ts +42 -0
  499. package/src/lib/utils/concurrency.ts +37 -8
  500. package/src/lib/utils/fs-batch.ts +49 -0
  501. package/src/lib/utils/result.ts +7 -31
  502. package/src/lib/utils/sleep.ts +23 -0
  503. package/src/platform/fs-revision.ts +21 -0
  504. package/src/platform/fs.ts +109 -1
  505. package/src/platform/git.ts +67 -0
  506. package/src/platform/index.ts +51 -1
  507. package/src/platform/llm-call-log.ts +86 -0
  508. package/src/platform/scheduler.ts +71 -0
  509. package/src/platform/session-log.ts +39 -0
  510. package/src/platform/shell.ts +89 -0
  511. package/src/plugins/agent-status/plugin.ts +1 -0
  512. package/src/plugins/agents/plugin.ts +134 -81
  513. package/src/plugins/filesystem/listing.ts +70 -12
  514. package/src/plugins/filesystem/plugin.ts +8 -6
  515. package/src/plugins/git-status/plugin.ts +204 -77
  516. package/src/plugins/llm-debug/plugin.ts +1 -0
  517. package/src/plugins/logs/plugin.ts +9 -0
  518. package/src/plugins/mailbox/plugin.ts +46 -64
  519. package/src/plugins/mailbox/query.ts +15 -7
  520. package/src/plugins/mailbox/state.ts +1 -0
  521. package/src/plugins/resources/filename.ts +19 -0
  522. package/src/plugins/resources/plugin.ts +111 -59
  523. package/src/plugins/result-eviction/plugin.ts +6 -1
  524. package/src/plugins/services/plugin.ts +254 -98
  525. package/src/plugins/services/prompt.ts +1 -6
  526. package/src/plugins/services/schema.ts +17 -3
  527. package/src/plugins/services/service.ts +702 -252
  528. package/src/plugins/session-lifecycle/plugin.ts +56 -41
  529. package/src/plugins/session-state/plugin.ts +242 -88
  530. package/src/plugins/session-stats/plugin.ts +1 -0
  531. package/src/plugins/shell/executor.ts +144 -226
  532. package/src/plugins/shell/index.ts +1 -4
  533. package/src/plugins/shell/plugin.ts +7 -9
  534. package/src/plugins/skills/discovery.ts +10 -8
  535. package/src/plugins/skills/index.ts +1 -1
  536. package/src/plugins/skills/plugin.ts +19 -27
  537. package/src/plugins/skills/prompts.ts +3 -3
  538. package/src/plugins/skills/schema.ts +5 -2
  539. package/src/plugins/uploads/plugin.ts +991 -273
  540. package/src/plugins/uploads/preprocessor.ts +25 -0
  541. package/src/plugins/uploads/preprocessors/image-classifier.ts +56 -25
  542. package/src/plugins/uploads/preprocessors/markitdown-preprocessor.ts +41 -15
  543. package/src/plugins/uploads/preprocessors/pdf-preprocessor.ts +32 -16
  544. package/src/plugins/uploads/preprocessors/zip-preprocessor.ts +67 -38
  545. package/src/plugins/uploads/schema.ts +30 -3
  546. package/src/plugins/uploads/state.ts +12 -0
  547. package/src/plugins/user-chat/plugin.ts +196 -40
  548. package/src/plugins/workers/context.ts +102 -39
  549. package/src/plugins/workers/definition.ts +7 -0
  550. package/src/plugins/workers/index.ts +4 -4
  551. package/src/plugins/workers/plugin.ts +461 -151
  552. package/src/plugins/workers/state.ts +64 -0
  553. package/src/plugins/workers/worker.ts +15 -4
  554. package/src/testing/conformance.ts +1751 -0
  555. package/src/testing/node-platform.ts +5 -0
  556. package/src/testing/test-harness.ts +21 -38
  557. package/src/testing/wait-helpers.ts +1 -4
  558. package/src/transport/adapter/client-adapter.ts +60 -3
  559. package/src/transport/adapter/heartbeat.ts +50 -0
  560. package/src/transport/adapter/server-adapter.ts +6 -0
  561. package/src/transport/http/app.ts +7 -35
  562. package/src/transport/http/context.ts +46 -0
  563. package/src/transport/http/fetch-guard.ts +318 -0
  564. package/src/transport/http/index.ts +1 -1
  565. package/src/transport/http/middleware/bearer-auth.ts +1 -1
  566. package/src/transport/http/middleware/error-handler.ts +1 -1
  567. package/src/transport/http/path-containment.ts +44 -0
  568. package/src/transport/http/responses.ts +20 -0
  569. package/src/transport/http/routes/files.ts +69 -159
  570. package/src/transport/http/routes/resources.ts +124 -93
  571. package/src/transport/http/routes/rpc.ts +63 -26
  572. package/src/transport/http/routes/upload.ts +327 -258
  573. package/src/user-config.ts +93 -7
  574. package/dist/config.test.d.ts +0 -2
  575. package/dist/config.test.d.ts.map +0 -1
  576. package/dist/config.test.js +0 -155
  577. package/dist/config.test.js.map +0 -1
  578. package/dist/core/agent-loop.integration.test.d.ts +0 -2
  579. package/dist/core/agent-loop.integration.test.d.ts.map +0 -1
  580. package/dist/core/agent-loop.integration.test.js +0 -414
  581. package/dist/core/agent-loop.integration.test.js.map +0 -1
  582. package/dist/core/agents/agent-config.test.d.ts +0 -2
  583. package/dist/core/agents/agent-config.test.d.ts.map +0 -1
  584. package/dist/core/agents/agent-config.test.js +0 -194
  585. package/dist/core/agents/agent-config.test.js.map +0 -1
  586. package/dist/core/agents/agent-shutdown.test.d.ts +0 -6
  587. package/dist/core/agents/agent-shutdown.test.d.ts.map +0 -1
  588. package/dist/core/agents/agent-shutdown.test.js +0 -180
  589. package/dist/core/agents/agent-shutdown.test.js.map +0 -1
  590. package/dist/core/agents/agent.test.d.ts +0 -2
  591. package/dist/core/agents/agent.test.d.ts.map +0 -1
  592. package/dist/core/agents/agent.test.js +0 -313
  593. package/dist/core/agents/agent.test.js.map +0 -1
  594. package/dist/core/agents/communicator.d.ts +0 -3
  595. package/dist/core/agents/communicator.d.ts.map +0 -1
  596. package/dist/core/agents/communicator.js +0 -13
  597. package/dist/core/agents/communicator.js.map +0 -1
  598. package/dist/core/agents/handler-events.test.d.ts +0 -5
  599. package/dist/core/agents/handler-events.test.d.ts.map +0 -1
  600. package/dist/core/agents/handler-events.test.js +0 -115
  601. package/dist/core/agents/handler-events.test.js.map +0 -1
  602. package/dist/core/agents/response-sanitizer.test.d.ts +0 -2
  603. package/dist/core/agents/response-sanitizer.test.d.ts.map +0 -1
  604. package/dist/core/agents/response-sanitizer.test.js +0 -101
  605. package/dist/core/agents/response-sanitizer.test.js.map +0 -1
  606. package/dist/core/error-recovery.integration.test.d.ts +0 -2
  607. package/dist/core/error-recovery.integration.test.d.ts.map +0 -1
  608. package/dist/core/error-recovery.integration.test.js +0 -288
  609. package/dist/core/error-recovery.integration.test.js.map +0 -1
  610. package/dist/core/event-sourcing.integration.test.d.ts +0 -2
  611. package/dist/core/event-sourcing.integration.test.d.ts.map +0 -1
  612. package/dist/core/event-sourcing.integration.test.js +0 -154
  613. package/dist/core/event-sourcing.integration.test.js.map +0 -1
  614. package/dist/core/events/file.test.d.ts +0 -2
  615. package/dist/core/events/file.test.d.ts.map +0 -1
  616. package/dist/core/events/file.test.js +0 -284
  617. package/dist/core/events/file.test.js.map +0 -1
  618. package/dist/core/events/memory.test.d.ts +0 -2
  619. package/dist/core/events/memory.test.d.ts.map +0 -1
  620. package/dist/core/events/memory.test.js +0 -502
  621. package/dist/core/events/memory.test.js.map +0 -1
  622. package/dist/core/image/image-processor.test.d.ts +0 -2
  623. package/dist/core/image/image-processor.test.d.ts.map +0 -1
  624. package/dist/core/image/image-processor.test.js +0 -171
  625. package/dist/core/image/image-processor.test.js.map +0 -1
  626. package/dist/core/image/vips-resizer.test.d.ts +0 -2
  627. package/dist/core/image/vips-resizer.test.d.ts.map +0 -1
  628. package/dist/core/image/vips-resizer.test.js +0 -336
  629. package/dist/core/image/vips-resizer.test.js.map +0 -1
  630. package/dist/core/llm/anthropic.test.d.ts +0 -2
  631. package/dist/core/llm/anthropic.test.d.ts.map +0 -1
  632. package/dist/core/llm/anthropic.test.js +0 -464
  633. package/dist/core/llm/anthropic.test.js.map +0 -1
  634. package/dist/core/llm/cache-breakpoints.test.d.ts +0 -2
  635. package/dist/core/llm/cache-breakpoints.test.d.ts.map +0 -1
  636. package/dist/core/llm/cache-breakpoints.test.js +0 -69
  637. package/dist/core/llm/cache-breakpoints.test.js.map +0 -1
  638. package/dist/core/llm/cache-live.test.d.ts +0 -16
  639. package/dist/core/llm/cache-live.test.d.ts.map +0 -1
  640. package/dist/core/llm/cache-live.test.js +0 -137
  641. package/dist/core/llm/cache-live.test.js.map +0 -1
  642. package/dist/core/llm/logger.test.d.ts +0 -7
  643. package/dist/core/llm/logger.test.d.ts.map +0 -1
  644. package/dist/core/llm/logger.test.js +0 -228
  645. package/dist/core/llm/logger.test.js.map +0 -1
  646. package/dist/core/llm/message-sanitization.test.d.ts +0 -2
  647. package/dist/core/llm/message-sanitization.test.d.ts.map +0 -1
  648. package/dist/core/llm/message-sanitization.test.js +0 -181
  649. package/dist/core/llm/message-sanitization.test.js.map +0 -1
  650. package/dist/core/llm/mock.test.d.ts +0 -2
  651. package/dist/core/llm/mock.test.d.ts.map +0 -1
  652. package/dist/core/llm/mock.test.js +0 -318
  653. package/dist/core/llm/mock.test.js.map +0 -1
  654. package/dist/core/llm/openrouter-mapping.test.d.ts +0 -2
  655. package/dist/core/llm/openrouter-mapping.test.d.ts.map +0 -1
  656. package/dist/core/llm/openrouter-mapping.test.js +0 -172
  657. package/dist/core/llm/openrouter-mapping.test.js.map +0 -1
  658. package/dist/core/llm/openrouter.test.d.ts +0 -2
  659. package/dist/core/llm/openrouter.test.d.ts.map +0 -1
  660. package/dist/core/llm/openrouter.test.js +0 -377
  661. package/dist/core/llm/openrouter.test.js.map +0 -1
  662. package/dist/core/llm/provider-integration.test.d.ts +0 -12
  663. package/dist/core/llm/provider-integration.test.d.ts.map +0 -1
  664. package/dist/core/llm/provider-integration.test.js +0 -350
  665. package/dist/core/llm/provider-integration.test.js.map +0 -1
  666. package/dist/core/llm/routing-provider.test.d.ts +0 -2
  667. package/dist/core/llm/routing-provider.test.d.ts.map +0 -1
  668. package/dist/core/llm/routing-provider.test.js +0 -94
  669. package/dist/core/llm/routing-provider.test.js.map +0 -1
  670. package/dist/core/llm/snapshot-middleware.test.d.ts +0 -2
  671. package/dist/core/llm/snapshot-middleware.test.d.ts.map +0 -1
  672. package/dist/core/llm/snapshot-middleware.test.js +0 -144
  673. package/dist/core/llm/snapshot-middleware.test.js.map +0 -1
  674. package/dist/core/multi-agent.integration.test.d.ts +0 -2
  675. package/dist/core/multi-agent.integration.test.d.ts.map +0 -1
  676. package/dist/core/multi-agent.integration.test.js +0 -298
  677. package/dist/core/multi-agent.integration.test.js.map +0 -1
  678. package/dist/core/plugin-hooks.integration.test.d.ts +0 -2
  679. package/dist/core/plugin-hooks.integration.test.d.ts.map +0 -1
  680. package/dist/core/plugin-hooks.integration.test.js +0 -458
  681. package/dist/core/plugin-hooks.integration.test.js.map +0 -1
  682. package/dist/core/session-lifecycle.integration.test.d.ts +0 -2
  683. package/dist/core/session-lifecycle.integration.test.d.ts.map +0 -1
  684. package/dist/core/session-lifecycle.integration.test.js +0 -159
  685. package/dist/core/session-lifecycle.integration.test.js.map +0 -1
  686. package/dist/core/sessions/fork-utils.test.d.ts +0 -2
  687. package/dist/core/sessions/fork-utils.test.d.ts.map +0 -1
  688. package/dist/core/sessions/fork-utils.test.js +0 -129
  689. package/dist/core/sessions/fork-utils.test.js.map +0 -1
  690. package/dist/core/sessions/session-overrides.integration.test.d.ts +0 -2
  691. package/dist/core/sessions/session-overrides.integration.test.d.ts.map +0 -1
  692. package/dist/core/sessions/session-overrides.integration.test.js +0 -154
  693. package/dist/core/sessions/session-overrides.integration.test.js.map +0 -1
  694. package/dist/core/sessions/session.test.d.ts +0 -2
  695. package/dist/core/sessions/session.test.d.ts.map +0 -1
  696. package/dist/core/sessions/session.test.js +0 -1100
  697. package/dist/core/sessions/session.test.js.map +0 -1
  698. package/dist/core/tools/executor.test.d.ts +0 -2
  699. package/dist/core/tools/executor.test.d.ts.map +0 -1
  700. package/dist/core/tools/executor.test.js +0 -144
  701. package/dist/core/tools/executor.test.js.map +0 -1
  702. package/dist/lib/logger/console.test.d.ts +0 -2
  703. package/dist/lib/logger/console.test.d.ts.map +0 -1
  704. package/dist/lib/logger/console.test.js +0 -258
  705. package/dist/lib/logger/console.test.js.map +0 -1
  706. package/dist/lib/never.d.ts +0 -2
  707. package/dist/lib/never.d.ts.map +0 -1
  708. package/dist/lib/never.js +0 -4
  709. package/dist/lib/never.js.map +0 -1
  710. package/dist/lib/utils/concurrency.test.d.ts +0 -2
  711. package/dist/lib/utils/concurrency.test.d.ts.map +0 -1
  712. package/dist/lib/utils/concurrency.test.js +0 -135
  713. package/dist/lib/utils/concurrency.test.js.map +0 -1
  714. package/dist/plugins/agent-status/agent-status.test.d.ts +0 -2
  715. package/dist/plugins/agent-status/agent-status.test.d.ts.map +0 -1
  716. package/dist/plugins/agent-status/agent-status.test.js +0 -136
  717. package/dist/plugins/agent-status/agent-status.test.js.map +0 -1
  718. package/dist/plugins/agents/agents.integration.test.d.ts +0 -2
  719. package/dist/plugins/agents/agents.integration.test.d.ts.map +0 -1
  720. package/dist/plugins/agents/agents.integration.test.js +0 -830
  721. package/dist/plugins/agents/agents.integration.test.js.map +0 -1
  722. package/dist/plugins/agents/supervision.integration.test.d.ts +0 -2
  723. package/dist/plugins/agents/supervision.integration.test.d.ts.map +0 -1
  724. package/dist/plugins/agents/supervision.integration.test.js +0 -215
  725. package/dist/plugins/agents/supervision.integration.test.js.map +0 -1
  726. package/dist/plugins/context-compact/compaction-live.test.d.ts +0 -17
  727. package/dist/plugins/context-compact/compaction-live.test.d.ts.map +0 -1
  728. package/dist/plugins/context-compact/compaction-live.test.js +0 -177
  729. package/dist/plugins/context-compact/compaction-live.test.js.map +0 -1
  730. package/dist/plugins/context-compact/context-compact.integration.test.d.ts +0 -2
  731. package/dist/plugins/context-compact/context-compact.integration.test.d.ts.map +0 -1
  732. package/dist/plugins/context-compact/context-compact.integration.test.js +0 -364
  733. package/dist/plugins/context-compact/context-compact.integration.test.js.map +0 -1
  734. package/dist/plugins/context-compact/context-compactor.test.d.ts +0 -2
  735. package/dist/plugins/context-compact/context-compactor.test.d.ts.map +0 -1
  736. package/dist/plugins/context-compact/context-compactor.test.js +0 -858
  737. package/dist/plugins/context-compact/context-compactor.test.js.map +0 -1
  738. package/dist/plugins/context-compact/history-offloader.test.d.ts +0 -2
  739. package/dist/plugins/context-compact/history-offloader.test.d.ts.map +0 -1
  740. package/dist/plugins/context-compact/history-offloader.test.js +0 -77
  741. package/dist/plugins/context-compact/history-offloader.test.js.map +0 -1
  742. package/dist/plugins/filesystem/filesystem.integration.test.d.ts +0 -2
  743. package/dist/plugins/filesystem/filesystem.integration.test.d.ts.map +0 -1
  744. package/dist/plugins/filesystem/filesystem.integration.test.js +0 -447
  745. package/dist/plugins/filesystem/filesystem.integration.test.js.map +0 -1
  746. package/dist/plugins/filesystem/schema.d.ts +0 -7
  747. package/dist/plugins/filesystem/schema.d.ts.map +0 -1
  748. package/dist/plugins/filesystem/schema.js +0 -2
  749. package/dist/plugins/filesystem/schema.js.map +0 -1
  750. package/dist/plugins/limits-guard/limit-guard.test.d.ts +0 -2
  751. package/dist/plugins/limits-guard/limit-guard.test.d.ts.map +0 -1
  752. package/dist/plugins/limits-guard/limit-guard.test.js +0 -194
  753. package/dist/plugins/limits-guard/limit-guard.test.js.map +0 -1
  754. package/dist/plugins/limits-guard/limits-guard.integration.test.d.ts +0 -2
  755. package/dist/plugins/limits-guard/limits-guard.integration.test.d.ts.map +0 -1
  756. package/dist/plugins/limits-guard/limits-guard.integration.test.js +0 -887
  757. package/dist/plugins/limits-guard/limits-guard.integration.test.js.map +0 -1
  758. package/dist/plugins/llm-debug/llm-debug.integration.test.d.ts +0 -2
  759. package/dist/plugins/llm-debug/llm-debug.integration.test.d.ts.map +0 -1
  760. package/dist/plugins/llm-debug/llm-debug.integration.test.js +0 -157
  761. package/dist/plugins/llm-debug/llm-debug.integration.test.js.map +0 -1
  762. package/dist/plugins/mailbox/mailbox.integration.test.d.ts +0 -2
  763. package/dist/plugins/mailbox/mailbox.integration.test.d.ts.map +0 -1
  764. package/dist/plugins/mailbox/mailbox.integration.test.js +0 -678
  765. package/dist/plugins/mailbox/mailbox.integration.test.js.map +0 -1
  766. package/dist/plugins/resources/resources.integration.test.d.ts +0 -2
  767. package/dist/plugins/resources/resources.integration.test.d.ts.map +0 -1
  768. package/dist/plugins/resources/resources.integration.test.js +0 -62
  769. package/dist/plugins/resources/resources.integration.test.js.map +0 -1
  770. package/dist/plugins/result-eviction/result-eviction.integration.test.d.ts +0 -2
  771. package/dist/plugins/result-eviction/result-eviction.integration.test.d.ts.map +0 -1
  772. package/dist/plugins/result-eviction/result-eviction.integration.test.js +0 -294
  773. package/dist/plugins/result-eviction/result-eviction.integration.test.js.map +0 -1
  774. package/dist/plugins/services/pid-registry.test.d.ts +0 -2
  775. package/dist/plugins/services/pid-registry.test.d.ts.map +0 -1
  776. package/dist/plugins/services/pid-registry.test.js +0 -161
  777. package/dist/plugins/services/pid-registry.test.js.map +0 -1
  778. package/dist/plugins/services/services.integration.test.d.ts +0 -2
  779. package/dist/plugins/services/services.integration.test.d.ts.map +0 -1
  780. package/dist/plugins/services/services.integration.test.js +0 -1057
  781. package/dist/plugins/services/services.integration.test.js.map +0 -1
  782. package/dist/plugins/session-lifecycle/session-lifecycle.integration.test.d.ts +0 -2
  783. package/dist/plugins/session-lifecycle/session-lifecycle.integration.test.d.ts.map +0 -1
  784. package/dist/plugins/session-lifecycle/session-lifecycle.integration.test.js +0 -498
  785. package/dist/plugins/session-lifecycle/session-lifecycle.integration.test.js.map +0 -1
  786. package/dist/plugins/session-stats/plugin.test.d.ts +0 -2
  787. package/dist/plugins/session-stats/plugin.test.d.ts.map +0 -1
  788. package/dist/plugins/session-stats/plugin.test.js +0 -145
  789. package/dist/plugins/session-stats/plugin.test.js.map +0 -1
  790. package/dist/plugins/shell/shell.integration.test.d.ts +0 -2
  791. package/dist/plugins/shell/shell.integration.test.d.ts.map +0 -1
  792. package/dist/plugins/shell/shell.integration.test.js +0 -234
  793. package/dist/plugins/shell/shell.integration.test.js.map +0 -1
  794. package/dist/plugins/shell/shell.test.d.ts +0 -2
  795. package/dist/plugins/shell/shell.test.d.ts.map +0 -1
  796. package/dist/plugins/shell/shell.test.js +0 -236
  797. package/dist/plugins/shell/shell.test.js.map +0 -1
  798. package/dist/plugins/skills/discovery.test.d.ts +0 -2
  799. package/dist/plugins/skills/discovery.test.d.ts.map +0 -1
  800. package/dist/plugins/skills/discovery.test.js +0 -312
  801. package/dist/plugins/skills/discovery.test.js.map +0 -1
  802. package/dist/plugins/skills/skills.integration.test.d.ts +0 -2
  803. package/dist/plugins/skills/skills.integration.test.d.ts.map +0 -1
  804. package/dist/plugins/skills/skills.integration.test.js +0 -475
  805. package/dist/plugins/skills/skills.integration.test.js.map +0 -1
  806. package/dist/plugins/todo/todo.integration.test.d.ts +0 -2
  807. package/dist/plugins/todo/todo.integration.test.d.ts.map +0 -1
  808. package/dist/plugins/todo/todo.integration.test.js +0 -605
  809. package/dist/plugins/todo/todo.integration.test.js.map +0 -1
  810. package/dist/plugins/uploads/preprocessors/image-classifier.test.d.ts +0 -2
  811. package/dist/plugins/uploads/preprocessors/image-classifier.test.d.ts.map +0 -1
  812. package/dist/plugins/uploads/preprocessors/image-classifier.test.js +0 -113
  813. package/dist/plugins/uploads/preprocessors/image-classifier.test.js.map +0 -1
  814. package/dist/plugins/uploads/uploads.integration.test.d.ts +0 -2
  815. package/dist/plugins/uploads/uploads.integration.test.d.ts.map +0 -1
  816. package/dist/plugins/uploads/uploads.integration.test.js +0 -639
  817. package/dist/plugins/uploads/uploads.integration.test.js.map +0 -1
  818. package/dist/plugins/user-chat/user-chat.integration.test.d.ts +0 -2
  819. package/dist/plugins/user-chat/user-chat.integration.test.d.ts.map +0 -1
  820. package/dist/plugins/user-chat/user-chat.integration.test.js +0 -754
  821. package/dist/plugins/user-chat/user-chat.integration.test.js.map +0 -1
  822. package/dist/plugins/workers/workers.integration.test.d.ts +0 -2
  823. package/dist/plugins/workers/workers.integration.test.d.ts.map +0 -1
  824. package/dist/plugins/workers/workers.integration.test.js +0 -629
  825. package/dist/plugins/workers/workers.integration.test.js.map +0 -1
  826. package/dist/prompts/macros.test.d.ts +0 -2
  827. package/dist/prompts/macros.test.d.ts.map +0 -1
  828. package/dist/prompts/macros.test.js +0 -80
  829. package/dist/prompts/macros.test.js.map +0 -1
  830. package/dist/testing/test-harness.test.d.ts +0 -2
  831. package/dist/testing/test-harness.test.d.ts.map +0 -1
  832. package/dist/testing/test-harness.test.js +0 -92
  833. package/dist/testing/test-harness.test.js.map +0 -1
  834. package/dist/transport/http/routes/rpc.integration.test.d.ts +0 -2
  835. package/dist/transport/http/routes/rpc.integration.test.d.ts.map +0 -1
  836. package/dist/transport/http/routes/rpc.integration.test.js +0 -189
  837. package/dist/transport/http/routes/rpc.integration.test.js.map +0 -1
  838. package/dist/transport/http/routes/rpc.test.d.ts +0 -2
  839. package/dist/transport/http/routes/rpc.test.d.ts.map +0 -1
  840. package/dist/transport/http/routes/rpc.test.js +0 -316
  841. package/dist/transport/http/routes/rpc.test.js.map +0 -1
  842. package/src/config.test.ts +0 -174
  843. package/src/core/agent-loop.integration.test.ts +0 -503
  844. package/src/core/agents/agent-config.test.ts +0 -240
  845. package/src/core/agents/agent-shutdown.test.ts +0 -236
  846. package/src/core/agents/agent.test.ts +0 -387
  847. package/src/core/agents/communicator.ts +0 -16
  848. package/src/core/agents/handler-events.test.ts +0 -167
  849. package/src/core/agents/response-sanitizer.test.ts +0 -137
  850. package/src/core/error-recovery.integration.test.ts +0 -343
  851. package/src/core/event-sourcing.integration.test.ts +0 -191
  852. package/src/core/events/file.test.ts +0 -436
  853. package/src/core/events/memory.test.ts +0 -741
  854. package/src/core/image/image-processor.test.ts +0 -218
  855. package/src/core/image/vips-resizer.test.ts +0 -388
  856. package/src/core/llm/anthropic.test.ts +0 -546
  857. package/src/core/llm/cache-breakpoints.test.ts +0 -85
  858. package/src/core/llm/cache-live.test.ts +0 -155
  859. package/src/core/llm/logger.test.ts +0 -270
  860. package/src/core/llm/message-sanitization.test.ts +0 -217
  861. package/src/core/llm/mock.test.ts +0 -402
  862. package/src/core/llm/openrouter-mapping.test.ts +0 -210
  863. package/src/core/llm/openrouter.test.ts +0 -499
  864. package/src/core/llm/provider-integration.test.ts +0 -408
  865. package/src/core/llm/routing-provider.test.ts +0 -113
  866. package/src/core/llm/snapshot-middleware.test.ts +0 -168
  867. package/src/core/multi-agent.integration.test.ts +0 -340
  868. package/src/core/plugin-hooks.integration.test.ts +0 -568
  869. package/src/core/session-lifecycle.integration.test.ts +0 -202
  870. package/src/core/sessions/fork-utils.test.ts +0 -158
  871. package/src/core/sessions/session-overrides.integration.test.ts +0 -210
  872. package/src/core/sessions/session.test.ts +0 -1736
  873. package/src/core/tools/executor.test.ts +0 -161
  874. package/src/lib/logger/console.test.ts +0 -348
  875. package/src/lib/never.ts +0 -3
  876. package/src/lib/utils/concurrency.test.ts +0 -169
  877. package/src/plugins/agent-status/agent-status.test.ts +0 -164
  878. package/src/plugins/agents/agents.integration.test.ts +0 -976
  879. package/src/plugins/agents/supervision.integration.test.ts +0 -249
  880. package/src/plugins/context-compact/compaction-live.test.ts +0 -221
  881. package/src/plugins/context-compact/context-compact.integration.test.ts +0 -418
  882. package/src/plugins/context-compact/context-compactor.test.ts +0 -1036
  883. package/src/plugins/context-compact/history-offloader.test.ts +0 -100
  884. package/src/plugins/filesystem/filesystem.integration.test.ts +0 -529
  885. package/src/plugins/filesystem/schema.ts +0 -6
  886. package/src/plugins/limits-guard/limit-guard.test.ts +0 -253
  887. package/src/plugins/limits-guard/limits-guard.integration.test.ts +0 -1012
  888. package/src/plugins/llm-debug/llm-debug.integration.test.ts +0 -192
  889. package/src/plugins/mailbox/mailbox.integration.test.ts +0 -794
  890. package/src/plugins/resources/resources.integration.test.ts +0 -68
  891. package/src/plugins/result-eviction/result-eviction.integration.test.ts +0 -332
  892. package/src/plugins/services/pid-registry.test.ts +0 -180
  893. package/src/plugins/services/services.integration.test.ts +0 -1223
  894. package/src/plugins/session-lifecycle/session-lifecycle.integration.test.ts +0 -639
  895. package/src/plugins/session-stats/plugin.test.ts +0 -160
  896. package/src/plugins/shell/shell.integration.test.ts +0 -273
  897. package/src/plugins/shell/shell.test.ts +0 -314
  898. package/src/plugins/skills/discovery.test.ts +0 -395
  899. package/src/plugins/skills/skills.integration.test.ts +0 -580
  900. package/src/plugins/todo/todo.integration.test.ts +0 -687
  901. package/src/plugins/uploads/preprocessors/image-classifier.test.ts +0 -142
  902. package/src/plugins/uploads/uploads.integration.test.ts +0 -831
  903. package/src/plugins/user-chat/user-chat.integration.test.ts +0 -893
  904. package/src/plugins/workers/workers.integration.test.ts +0 -778
  905. package/src/prompts/macros.test.ts +0 -107
  906. package/src/testing/test-harness.test.ts +0 -114
  907. package/src/transport/http/routes/rpc.integration.test.ts +0 -243
  908. package/src/transport/http/routes/rpc.test.ts +0 -372
@@ -1,3 +1,4 @@
1
+ import { sessionMetadataSchema } from '../../core/sessions/schema.js';
1
2
  import { EventStoreError } from './event-store.js';
2
3
  import { computeMetadataFromEvents, needsReconciliation } from './metadata-utils.js';
3
4
  /**
@@ -35,13 +36,18 @@ export class BaseEventStore {
35
36
  }
36
37
  async updateMetadata(sessionId, update) {
37
38
  const existing = await this.readMetadata(sessionId);
38
- const metadata = {
39
+ const merged = {
39
40
  ...existing,
40
41
  ...update,
41
42
  sessionId,
42
43
  lastActivityAt: update.lastActivityAt ?? Date.now(),
43
44
  };
44
- await this.writeMetadata(sessionId, metadata);
45
+ // A merge over a missing or unreadable record can be incomplete, and writing that
46
+ // only replaces one unparseable meta.json with another — the read already reported it.
47
+ const metadata = sessionMetadataSchema.safeParse(merged);
48
+ if (!metadata.success)
49
+ return;
50
+ await this.writeMetadata(sessionId, metadata.data);
45
51
  }
46
52
  async listSessionsWithMetadata(options) {
47
53
  let sessions = await this.getAllSessionMetadata();
@@ -97,18 +103,20 @@ export class BaseEventStore {
97
103
  if (events.length === 0)
98
104
  return;
99
105
  const metadata = await this.readMetadata(sessionId);
100
- // Start with current metrics or defaults
101
- let metrics = metadata?.metrics ?? {
102
- totalEvents: 0,
103
- totalAgents: 0,
104
- totalTokens: 0,
105
- totalLLMCalls: 0,
106
- inputTokens: 0,
107
- outputTokens: 0,
108
- totalCost: 0,
109
- totalMessages: 0,
110
- totalToolCalls: 0,
111
- };
106
+ // Copied: the record may be a store's own cached object and the counters below mutate in place.
107
+ let metrics = metadata?.metrics
108
+ ? { ...metadata.metrics }
109
+ : {
110
+ totalEvents: 0,
111
+ totalAgents: 0,
112
+ totalTokens: 0,
113
+ totalLLMCalls: 0,
114
+ inputTokens: 0,
115
+ outputTokens: 0,
116
+ totalCost: 0,
117
+ totalMessages: 0,
118
+ totalToolCalls: 0,
119
+ };
112
120
  const update = {};
113
121
  // Process all events and aggregate metrics
114
122
  for (const event of events) {
@@ -1 +1 @@
1
- {"version":3,"file":"base-event-store.js","sourceRoot":"","sources":["../../../src/core/events/base-event-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-event-store.js","sourceRoot":"","sources":["../../../src/core/events/base-event-store.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAEjE,OAAO,EAAE,eAAe,EAAgE,MAAM,kBAAkB,CAAA;AAEhH,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAEpF;;;GAGG;AACH,SAAS,mBAAmB,CAAC,KAAkB;IAC9C,OAAO,KAAK,CAAC,IAAI,KAAK,yBAAyB,IAAI,KAAK,CAAC,IAAI,KAAK,2BAA2B,CAAA;AAC9F,CAAC;AAED;;;;;GAKG;AACH,MAAM,OAAgB,cAAc;IACnC,wDAAwD;IAExD,KAAK,CAAC,MAAM,CAAC,SAAoB,EAAE,KAAkB;QACpD,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;QAClD,CAAC;QACD,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IACtC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,SAAoB,EAAE,MAAqB;QAC5D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAC/B,IAAI,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QACjD,CAAC;QACD,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IAC5C,CAAC;IAiBD,iCAAiC;IAEjC,KAAK,CAAC,WAAW,CAAC,SAAoB;QACrC,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,cAAc,CACnB,SAAoB,EACpB,MAAgC;QAEhC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;QACnD,MAAM,MAAM,GAAG;YACd,GAAG,QAAQ;YACX,GAAG,MAAM;YACT,SAAS;YACT,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC,GAAG,EAAE;SACnD,CAAA;QAED,kFAAkF;QAClF,uFAAuF;QACvF,MAAM,QAAQ,GAAG,qBAAqB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QACxD,IAAI,CAAC,QAAQ,CAAC,OAAO;YAAE,OAAM;QAE7B,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;IACnD,CAAC;IAED,KAAK,CAAC,wBAAwB,CAC7B,OAA6B;QAE7B,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAEjD,mBAAmB;QACnB,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;YACrB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;QAC/D,CAAC;QAED,iBAAiB;QACjB,IAAI,OAAO,EAAE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAK,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACvF,CAAC;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAA;QAE7B,OAAO;QACP,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,WAAW,CAAA;QAC/C,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,MAAM,CAAA;QACtC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACtB,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YAC5B,OAAO,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAA;QACnD,CAAC,CAAC,CAAA;QAEF,aAAa;QACb,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,CAAC,CAAA;QACnC,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,QAAQ,CAAC,MAAM,CAAA;QAC/C,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAA;QAEjD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;IAC3B,CAAC;IAED,KAAK,CAAC,iBAAiB,CACtB,SAAoB,EACpB,MAAqB;QAErB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAA;QAErC,MAAM,QAAQ,GAAG,yBAAyB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QAC7D,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAA;QAE3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;QAEjD,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC5C,OAAO,KAAK,CAAA;QACb,CAAC;QAED,wDAAwD;QACxD,4DAA4D;QAC5D,MAAM,UAAU,GAAoB;YACnC,GAAG,QAAQ;YACX,IAAI,EAAE,MAAM,EAAE,IAAI;YAClB,IAAI,EAAE,MAAM,EAAE,IAAI;YAClB,MAAM,EAAE,MAAM,EAAE,MAAM;SACtB,CAAA;QAED,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;QAC/C,OAAO,IAAI,CAAA;IACZ,CAAC;IAED;;;OAGG;IACO,KAAK,CAAC,wBAAwB,CACvC,SAAoB,EACpB,MAAqB;QAErB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAE/B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;QAEnD,gGAAgG;QAChG,IAAI,OAAO,GAA2B,QAAQ,EAAE,OAAO;YACtD,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE;YACzB,CAAC,CAAC;gBACD,WAAW,EAAE,CAAC;gBACd,WAAW,EAAE,CAAC;gBACd,WAAW,EAAE,CAAC;gBACd,aAAa,EAAE,CAAC;gBAChB,WAAW,EAAE,CAAC;gBACd,YAAY,EAAE,CAAC;gBACf,SAAS,EAAE,CAAC;gBACZ,aAAa,EAAE,CAAC;gBAChB,cAAc,EAAE,CAAC;aACjB,CAAA;QAEF,MAAM,MAAM,GAA6B,EAAE,CAAA;QAE3C,2CAA2C;QAC3C,KAAK,MAAM,KAAK,IAAI,MAAyB,EAAE,CAAC;YAC/C,MAAM,CAAC,cAAc,GAAG,KAAK,CAAC,SAAS,CAAA;YAEvC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACpB,KAAK,iBAAiB;oBACrB,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAA;oBAClC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;oBAChC,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAA;oBACxB,OAAO,GAAG;wBACT,WAAW,EAAE,CAAC;wBACd,WAAW,EAAE,CAAC;wBACd,WAAW,EAAE,CAAC;wBACd,aAAa,EAAE,CAAC;wBAChB,WAAW,EAAE,CAAC;wBACd,YAAY,EAAE,CAAC;wBACf,SAAS,EAAE,CAAC;wBACZ,aAAa,EAAE,CAAC;wBAChB,cAAc,EAAE,CAAC;qBACjB,CAAA;oBACD,MAAK;gBAEN,KAAK,gBAAgB;oBACpB,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAA;oBACxB,OAAO,CAAC,WAAW,IAAI,CAAC,CAAA;oBACxB,MAAK;gBAEN,KAAK,kBAAkB;oBACtB,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAA;oBACxB,OAAO,CAAC,WAAW,IAAI,CAAC,CAAA;oBACxB,MAAK;gBAEN,KAAK,eAAe;oBACnB,OAAO,CAAC,WAAW,IAAI,CAAC,CAAA;oBACxB,OAAO,CAAC,WAAW,IAAI,CAAC,CAAA;oBACxB,MAAK;gBAEN,yEAAyE;gBACzE,KAAK,qBAAqB,CAAC;gBAC3B,KAAK,+BAA+B;oBACnC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;wBACnB,OAAO,CAAC,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,CAAA;wBACrD,OAAO,CAAC,WAAW,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,CAAC,CAAA;wBACpF,OAAO,CAAC,YAAY,GAAG,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAA;wBAC1F,OAAO,CAAC,SAAS,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAA;wBACxE,OAAO,CAAC,aAAa,IAAI,CAAC,CAAA;oBAC3B,CAAC;oBACD,OAAO,CAAC,WAAW,IAAI,CAAC,CAAA;oBACxB,MAAK;gBAEN,KAAK,iBAAiB;oBACrB,OAAO,CAAC,aAAa,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;oBACxD,OAAO,CAAC,WAAW,IAAI,CAAC,CAAA;oBACxB,MAAK;gBAEN,KAAK,cAAc;oBAClB,OAAO,CAAC,cAAc,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;oBAC1D,OAAO,CAAC,WAAW,IAAI,CAAC,CAAA;oBACxB,MAAK;gBAEN;oBACC,OAAO,CAAC,WAAW,IAAI,CAAC,CAAA;YAC1B,CAAC;QACF,CAAC;QAED,MAAM,CAAC,OAAO,GAAG,OAAO,CAAA;QACxB,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IAC7C,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACO,KAAK,CAAC,kBAAkB,CAAC,SAAoB,EAAE,MAAqB;QAC7E,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAA;QACpD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAElC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;QACnD,IAAI,QAAQ,EAAE,MAAM,KAAK,QAAQ;YAAE,OAAM;QAEzC,MAAM,cAAc,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC9D,MAAM,IAAI,eAAe,CACxB,oEAAoE,SAAS,YAAY,cAAc,KAAK;cACzG,0GAA0G,EAC7G,SAAS,CACT,CAAA;IACF,CAAC;CACD"}
@@ -1,4 +1,5 @@
1
1
  import type { DomainEvent } from '../../core/events/types.js';
2
+ import { type Logger } from '../../lib/logger/logger.js';
2
3
  import type { FileSystem } from '../../platform/fs.js';
3
4
  import { SessionId } from '../../core/sessions/schema.js';
4
5
  import type { SessionMetadata } from '../../core/sessions/schema.js';
@@ -26,8 +27,24 @@ import type { LoadRangeOptions, LoadRangeResult } from './event-store.js';
26
27
  export declare class FileEventStore extends BaseEventStore {
27
28
  private readonly basePath;
28
29
  private readonly fs;
30
+ private readonly logger;
29
31
  private readonly sessionLocks;
30
- constructor(basePath: string, fs: FileSystem);
32
+ /**
33
+ * Parsed meta.json per session, so a `/status` poll costs one readdir instead of
34
+ * one readFile per session directory that ever existed. An `invalid` entry records
35
+ * bytes that exist but do not parse, so a corrupt record is reported once rather
36
+ * than once per poll, and is re-read as soon as those bytes change.
37
+ *
38
+ * Coherence rule: writes win. writeMetadata is the only writer, and a read stores
39
+ * its result only if the entry did not move while the read was in flight — a read
40
+ * is a snapshot of older bytes, so it must never overwrite a newer write. A full
41
+ * listing prunes the map to the readdir set, which keeps deletion and out-of-band
42
+ * creation self-healing.
43
+ */
44
+ private readonly metadataCache;
45
+ /** Last reported read failure per session, so a permanent EACCES is not logged on every poll. */
46
+ private readonly reportedReadFailures;
47
+ constructor(basePath: string, fs: FileSystem, logger?: Logger);
31
48
  /**
32
49
  * Get or create a mutex for a specific session.
33
50
  * Ensures serialized access to each session's event file.
@@ -44,7 +61,28 @@ export declare class FileEventStore extends BaseEventStore {
44
61
  listSessions(): Promise<SessionId[]>;
45
62
  loadRange(sessionId: SessionId, options?: LoadRangeOptions): Promise<LoadRangeResult>;
46
63
  protected readMetadata(sessionId: SessionId): Promise<SessionMetadata | null>;
64
+ /**
65
+ * Cache what the read found, unless a write landed while it was in flight.
66
+ *
67
+ * A read only ever sees the bytes it started from, so the concurrent writer holds the
68
+ * newer record and the reader reports that one instead of overwriting it with its own.
69
+ */
70
+ private commitRead;
71
+ private readMetadataSource;
72
+ /** Reports a read that failed for anything but a missing file, once per failure kind. */
73
+ private reportReadFailure;
74
+ /**
75
+ * Strict on write, tolerant on read.
76
+ *
77
+ * meta.json is written non-atomically and its schema tightened over time, so a
78
+ * single truncated or legacy record must not take the whole listing down with it.
79
+ */
80
+ private parseMetadata;
47
81
  protected writeMetadata(sessionId: SessionId, metadata: SessionMetadata): Promise<void>;
48
82
  protected getAllSessionMetadata(): Promise<SessionMetadata[]>;
83
+ /** One unreadable session must not take the listing down for every other one. */
84
+ private readMetadataOrSkip;
85
+ private forgetMissing;
86
+ private forgetAll;
49
87
  }
50
88
  //# sourceMappingURL=file.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../src/core/events/file.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAqB,SAAS,EAAyB,MAAM,2BAA2B,CAAA;AAC/F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AA8FzE;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,cAAe,SAAQ,cAAc;IAGrC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAAU,OAAO,CAAC,QAAQ,CAAC,EAAE;IAFlE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmC;gBAEnC,QAAQ,EAAE,MAAM,EAAmB,EAAE,EAAE,UAAU;IAI9E;;;OAGG;IACH,OAAO,CAAC,OAAO;IASf,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,WAAW;cAIH,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;cAsBjE,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBnF,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAiClD,MAAM,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAI9C,YAAY,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAgBpC,SAAS,CACd,SAAS,EAAE,SAAS,EACpB,OAAO,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC;cAqEX,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;cAgBnE,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;cAM7E,qBAAqB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;CAsBnE"}
1
+ {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../src/core/events/file.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,KAAK,EAAU,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAAuC,SAAS,EAAyB,MAAM,2BAA2B,CAAA;AACjH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAgIzE;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,cAAe,SAAQ,cAAc;IAqBhD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAtBxB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmC;IAEhE;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA2C;IAEzE,iGAAiG;IACjG,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA+B;gBAGlD,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,UAAU,EACd,MAAM,GAAE,MAAqB;IAK/C;;;OAGG;IACH,OAAO,CAAC,OAAO;IASf,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,WAAW;cAIH,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;cAsBjE,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBnF,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAiClD,MAAM,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAI9C,YAAY,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAiBpC,SAAS,CACd,SAAS,EAAE,SAAS,EACpB,OAAO,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC;cAqEX,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IA6BnF;;;;;OAKG;IACH,OAAO,CAAC,UAAU;YAYJ,kBAAkB;IAKhC,yFAAyF;IACzF,OAAO,CAAC,iBAAiB;IAYzB;;;;;OAKG;IACH,OAAO,CAAC,aAAa;cAkBL,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;cAkB7E,qBAAqB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAkCnE,iFAAiF;YACnE,kBAAkB;IAQhC,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,SAAS;CAIjB"}
@@ -1,5 +1,6 @@
1
1
  import { dirname, join } from 'node:path';
2
- import { domainEventSchema, sessionMetadataSchema } from '../../core/sessions/schema.js';
2
+ import { silentLogger } from '../../lib/logger/logger.js';
3
+ import { domainEventSchema, isValidSessionId, SessionId, sessionMetadataSchema } from '../../core/sessions/schema.js';
3
4
  import { BaseEventStore } from './base-event-store.js';
4
5
  import { EventAppendError, EventStoreError } from './event-store.js';
5
6
  /**
@@ -83,6 +84,28 @@ async function readLastLines(fs, filePath, lineCount) {
83
84
  await file.close();
84
85
  }
85
86
  }
87
+ function isSameSource(a, b) {
88
+ return a.mtimeMs === b.mtimeMs && a.size === b.size;
89
+ }
90
+ function errorCode(error) {
91
+ return error instanceof Error && 'code' in error && typeof error.code === 'string' ? error.code : undefined;
92
+ }
93
+ function isNotFound(error) {
94
+ return errorCode(error) === 'ENOENT';
95
+ }
96
+ /** Before the cache every read parsed fresh JSON — keep that, so a mutating caller cannot corrupt it. */
97
+ function copyMetadata(metadata) {
98
+ if (!metadata)
99
+ return null;
100
+ const copy = { ...metadata };
101
+ if (metadata.metrics)
102
+ copy.metrics = { ...metadata.metrics };
103
+ if (metadata.tags)
104
+ copy.tags = [...metadata.tags];
105
+ if (metadata.custom)
106
+ copy.custom = { ...metadata.custom };
107
+ return copy;
108
+ }
86
109
  /**
87
110
  * FileEventStore - Persists domain events to JSONL files.
88
111
  *
@@ -105,11 +128,28 @@ async function readLastLines(fs, filePath, lineCount) {
105
128
  export class FileEventStore extends BaseEventStore {
106
129
  basePath;
107
130
  fs;
131
+ logger;
108
132
  sessionLocks = new Map();
109
- constructor(basePath, fs) {
133
+ /**
134
+ * Parsed meta.json per session, so a `/status` poll costs one readdir instead of
135
+ * one readFile per session directory that ever existed. An `invalid` entry records
136
+ * bytes that exist but do not parse, so a corrupt record is reported once rather
137
+ * than once per poll, and is re-read as soon as those bytes change.
138
+ *
139
+ * Coherence rule: writes win. writeMetadata is the only writer, and a read stores
140
+ * its result only if the entry did not move while the read was in flight — a read
141
+ * is a snapshot of older bytes, so it must never overwrite a newer write. A full
142
+ * listing prunes the map to the readdir set, which keeps deletion and out-of-band
143
+ * creation self-healing.
144
+ */
145
+ metadataCache = new Map();
146
+ /** Last reported read failure per session, so a permanent EACCES is not logged on every poll. */
147
+ reportedReadFailures = new Map();
148
+ constructor(basePath, fs, logger = silentLogger) {
110
149
  super();
111
150
  this.basePath = basePath;
112
151
  this.fs = fs;
152
+ this.logger = logger;
113
153
  }
114
154
  /**
115
155
  * Get or create a mutex for a specific session.
@@ -208,12 +248,13 @@ export class FileEventStore extends BaseEventStore {
208
248
  const sessionsDir = join(this.basePath, 'sessions');
209
249
  try {
210
250
  const entries = await this.fs.readdir(sessionsDir, { withFileTypes: true });
251
+ // A directory whose name is not a valid id is not a session — the metadata listing drops it too.
211
252
  return entries
212
- .filter((entry) => entry.isDirectory())
213
- .map((entry) => entry.name);
253
+ .filter((entry) => entry.isDirectory() && isValidSessionId(entry.name))
254
+ .map((entry) => SessionId(entry.name));
214
255
  }
215
256
  catch (error) {
216
- if (error.code === 'ENOENT') {
257
+ if (isNotFound(error)) {
217
258
  return [];
218
259
  }
219
260
  throw error;
@@ -276,45 +317,143 @@ export class FileEventStore extends BaseEventStore {
276
317
  // Metadata storage primitives
277
318
  // =========================================================================
278
319
  async readMetadata(sessionId) {
320
+ const cached = this.metadataCache.get(sessionId);
321
+ if (cached?.kind === 'record')
322
+ return copyMetadata(cached.record);
279
323
  const path = this.getMetaPath(sessionId);
280
324
  try {
325
+ // Stat before the read, so a verdict is never keyed to bytes newer than the ones it judged.
326
+ const source = await this.readMetadataSource(path);
327
+ // A rejected record stays rejected only for the bytes that were rejected, so a repair is picked up.
328
+ if (cached && isSameSource(cached.source, source))
329
+ return null;
281
330
  const content = await this.fs.readFile(path, 'utf-8');
282
- const parsed = JSON.parse(content);
283
- const validated = sessionMetadataSchema.parse(parsed);
284
- return validated;
331
+ const record = this.parseMetadata(sessionId, content);
332
+ this.reportedReadFailures.delete(sessionId);
333
+ return copyMetadata(this.commitRead(sessionId, cached, record ? { kind: 'record', record } : { kind: 'invalid', source }));
285
334
  }
286
335
  catch (error) {
287
- if (error.code === 'ENOENT') {
336
+ if (isNotFound(error)) {
337
+ // A missing file is never cached — unknown ids must not be able to grow the map.
288
338
  return null;
289
339
  }
340
+ this.reportReadFailure(sessionId, error);
290
341
  throw error;
291
342
  }
292
343
  }
344
+ /**
345
+ * Cache what the read found, unless a write landed while it was in flight.
346
+ *
347
+ * A read only ever sees the bytes it started from, so the concurrent writer holds the
348
+ * newer record and the reader reports that one instead of overwriting it with its own.
349
+ */
350
+ commitRead(sessionId, before, entry) {
351
+ const current = this.metadataCache.get(sessionId);
352
+ if (current !== before)
353
+ return current?.kind === 'record' ? current.record : null;
354
+ this.metadataCache.set(sessionId, entry);
355
+ return entry.kind === 'record' ? entry.record : null;
356
+ }
357
+ async readMetadataSource(path) {
358
+ const stats = await this.fs.stat(path);
359
+ return { mtimeMs: stats.mtimeMs, size: stats.size };
360
+ }
361
+ /** Reports a read that failed for anything but a missing file, once per failure kind. */
362
+ reportReadFailure(sessionId, error) {
363
+ const code = errorCode(error) ?? 'unknown';
364
+ if (this.reportedReadFailures.get(sessionId) === code)
365
+ return;
366
+ this.reportedReadFailures.set(sessionId, code);
367
+ this.logger.error('Failed to read session metadata', error instanceof Error ? error : new Error(String(error)), { sessionId });
368
+ }
369
+ /**
370
+ * Strict on write, tolerant on read.
371
+ *
372
+ * meta.json is written non-atomically and its schema tightened over time, so a
373
+ * single truncated or legacy record must not take the whole listing down with it.
374
+ */
375
+ parseMetadata(sessionId, content) {
376
+ let raw;
377
+ try {
378
+ raw = JSON.parse(content);
379
+ }
380
+ catch (error) {
381
+ this.logger.warn('Skipping unreadable session metadata', { sessionId, reason: String(error) });
382
+ return null;
383
+ }
384
+ const parsed = sessionMetadataSchema.safeParse(raw);
385
+ if (!parsed.success) {
386
+ this.logger.warn('Skipping invalid session metadata', { sessionId, reason: parsed.error.message });
387
+ return null;
388
+ }
389
+ return parsed.data;
390
+ }
293
391
  async writeMetadata(sessionId, metadata) {
294
392
  const path = this.getMetaPath(sessionId);
295
393
  await this.fs.mkdir(dirname(path), { recursive: true });
296
394
  await this.fs.writeFile(path, JSON.stringify(metadata, null, 2));
395
+ // The cache may only hold what a read would return, so the record goes in through the same schema.
396
+ const parsed = sessionMetadataSchema.safeParse(metadata);
397
+ if (!parsed.success) {
398
+ this.logger.warn('Not caching invalid session metadata', { sessionId, reason: parsed.error.message });
399
+ this.metadataCache.delete(sessionId);
400
+ return;
401
+ }
402
+ // Cached only once the write lands, so a failed write leaves no phantom value.
403
+ this.metadataCache.set(sessionId, { kind: 'record', record: parsed.data });
404
+ this.reportedReadFailures.delete(sessionId);
297
405
  }
298
406
  async getAllSessionMetadata() {
299
407
  const sessionsDir = join(this.basePath, 'sessions');
408
+ let entries;
300
409
  try {
301
- const entries = await this.fs.readdir(sessionsDir, { withFileTypes: true });
302
- const sessions = [];
303
- for (const entry of entries) {
304
- if (!entry.isDirectory())
305
- continue;
306
- const metadata = await this.readMetadata(entry.name);
307
- if (metadata)
308
- sessions.push(metadata);
309
- }
310
- return sessions;
410
+ entries = await this.fs.readdir(sessionsDir, { withFileTypes: true });
311
411
  }
312
412
  catch (error) {
313
- if (error.code === 'ENOENT') {
413
+ if (isNotFound(error)) {
414
+ // The data root is gone, so every session cached from it is gone with it.
415
+ this.forgetAll();
314
416
  return [];
315
417
  }
316
418
  throw error;
317
419
  }
420
+ const sessions = [];
421
+ const present = new Set();
422
+ for (const entry of entries) {
423
+ if (!entry.isDirectory())
424
+ continue;
425
+ const sessionId = SessionId(entry.name);
426
+ present.add(sessionId);
427
+ const metadata = await this.readMetadataOrSkip(sessionId);
428
+ if (metadata)
429
+ sessions.push(metadata);
430
+ }
431
+ // The directory listing is the only thing that can remove a session, so prune here.
432
+ this.forgetMissing(present);
433
+ return sessions;
434
+ }
435
+ /** One unreadable session must not take the listing down for every other one. */
436
+ async readMetadataOrSkip(sessionId) {
437
+ try {
438
+ return await this.readMetadata(sessionId);
439
+ }
440
+ catch {
441
+ return null; // already reported by readMetadata
442
+ }
443
+ }
444
+ forgetMissing(present) {
445
+ for (const sessionId of this.metadataCache.keys()) {
446
+ if (!present.has(sessionId))
447
+ this.metadataCache.delete(sessionId);
448
+ }
449
+ for (const sessionId of this.reportedReadFailures.keys()) {
450
+ if (!present.has(sessionId))
451
+ this.reportedReadFailures.delete(sessionId);
452
+ }
453
+ }
454
+ forgetAll() {
455
+ this.metadataCache.clear();
456
+ this.reportedReadFailures.clear();
318
457
  }
319
458
  }
320
459
  //# sourceMappingURL=file.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file.js","sourceRoot":"","sources":["../../../src/core/events/file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../../../src/core/events/file.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import z4 from 'zod/v4';
2
- import { SessionId } from '../../core/sessions/schema';
2
+ import { SessionId } from '../../core/sessions/schema.js';
3
3
  declare const __brand: unique symbol;
4
4
  type TheBrand<B> = {
5
5
  [__brand]: B;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Containment check for paths that are about to be handed to the filesystem.
3
+ *
4
+ * A lexical check (`resolve()` then a prefix compare) only sees the path string,
5
+ * so a link inside a root can still point anywhere the process can reach. Both
6
+ * ends are canonicalized here instead. Links are not banned — one whose target
7
+ * lands back inside a root stays usable.
8
+ */
9
+ import type { FileSystem } from '../../platform/fs.js';
10
+ /**
11
+ * Where a path's real target sits.
12
+ *
13
+ * `unresolvable` is a path that exists but cannot be canonicalized — a link with
14
+ * no target, a link loop. Only an operation that would create through it has to
15
+ * refuse; the ones that merely follow it fail on their own.
16
+ */
17
+ export type Containment = 'inside' | 'outside' | 'unresolvable';
18
+ export declare function containmentOf(fs: FileSystem, roots: readonly string[], path: string): Promise<Containment>;
19
+ //# sourceMappingURL=containment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containment.d.ts","sourceRoot":"","sources":["../../../src/core/file-store/containment.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,cAAc,CAAA;AAE/D,wBAAsB,aAAa,CAClC,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,IAAI,EAAE,MAAM,GACV,OAAO,CAAC,WAAW,CAAC,CAYtB"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Containment check for paths that are about to be handed to the filesystem.
3
+ *
4
+ * A lexical check (`resolve()` then a prefix compare) only sees the path string,
5
+ * so a link inside a root can still point anywhere the process can reach. Both
6
+ * ends are canonicalized here instead. Links are not banned — one whose target
7
+ * lands back inside a root stays usable.
8
+ */
9
+ import { basename, dirname, isAbsolute, join, relative, sep } from 'node:path';
10
+ export async function containmentOf(fs, roots, path) {
11
+ // A path that is one of its own roots is inside it whatever it resolves to.
12
+ if (roots.includes(path))
13
+ return 'inside';
14
+ const target = await canonicalize(fs, path);
15
+ if (target === null)
16
+ return 'unresolvable';
17
+ for (const root of roots) {
18
+ const canonicalRoot = await canonicalize(fs, root);
19
+ if (canonicalRoot !== null && isUnder(canonicalRoot, target))
20
+ return 'inside';
21
+ }
22
+ return 'outside';
23
+ }
24
+ function isUnder(root, target) {
25
+ const rel = relative(root, target);
26
+ return rel === '' || (!isAbsolute(rel) && rel !== '..' && !rel.startsWith(`..${sep}`));
27
+ }
28
+ /**
29
+ * Canonical form of `path`, resolving through its deepest existing ancestor so
30
+ * a not-yet-created file is judged by the directory it would land in.
31
+ * Null when a component exists but cannot be resolved.
32
+ */
33
+ async function canonicalize(fs, path) {
34
+ const missing = [];
35
+ let current = path;
36
+ for (;;) {
37
+ try {
38
+ const real = await fs.realpath(current);
39
+ return missing.length > 0 ? join(real, ...missing) : real;
40
+ }
41
+ catch {
42
+ if (await entryExists(fs, current))
43
+ return null;
44
+ const parent = dirname(current);
45
+ if (parent === current)
46
+ return null;
47
+ missing.unshift(basename(current));
48
+ current = parent;
49
+ }
50
+ }
51
+ }
52
+ /** Anything `lstat` rejects counts as absent, an unreadable parent included — the caller's own operation then reports it. */
53
+ async function entryExists(fs, path) {
54
+ try {
55
+ await fs.lstat(path);
56
+ return true;
57
+ }
58
+ catch {
59
+ return false;
60
+ }
61
+ }
62
+ //# sourceMappingURL=containment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containment.js","sourceRoot":"","sources":["../../../src/core/file-store/containment.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAY9E,MAAM,CAAC,KAAK,UAAU,aAAa,CAClC,EAAc,EACd,KAAwB,EACxB,IAAY;IAEZ,4EAA4E;IAC5E,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAA;IAEzC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;IAC3C,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,cAAc,CAAA;IAE1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QAClD,IAAI,aAAa,KAAK,IAAI,IAAI,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC;YAAE,OAAO,QAAQ,CAAA;IAC9E,CAAC;IACD,OAAO,SAAS,CAAA;AACjB,CAAC;AAED,SAAS,OAAO,CAAC,IAAY,EAAE,MAAc;IAC5C,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAClC,OAAO,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAA;AACvF,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,YAAY,CAAC,EAAc,EAAE,IAAY;IACvD,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,IAAI,OAAO,GAAG,IAAI,CAAA;IAClB,SAAS,CAAC;QACT,IAAI,CAAC;YACJ,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;YACvC,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAC1D,CAAC;QAAC,MAAM,CAAC;YACR,IAAI,MAAM,WAAW,CAAC,EAAE,EAAE,OAAO,CAAC;gBAAE,OAAO,IAAI,CAAA;YAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;YAC/B,IAAI,MAAM,KAAK,OAAO;gBAAE,OAAO,IAAI,CAAA;YACnC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAA;YAClC,OAAO,GAAG,MAAM,CAAA;QACjB,CAAC;IACF,CAAC;AACF,CAAC;AAED,6HAA6H;AAC7H,KAAK,UAAU,WAAW,CAAC,EAAc,EAAE,IAAY;IACtD,IAAI,CAAC;QACJ,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACpB,OAAO,IAAI,CAAA;IACZ,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAA;IACb,CAAC;AACF,CAAC"}
@@ -5,6 +5,11 @@
5
5
  * validation, agent-visible path mapping). Replaces the separate path-resolver
6
6
  * functions for FileStore consumers.
7
7
  *
8
+ * Every operation resolves the path lexically and then checks that its real
9
+ * target is still inside the area the store may touch — session and workspace
10
+ * together, or whatever root a `scoped()` sub-store was carved out of. Links
11
+ * are not banned: one whose target lands back inside stays usable.
12
+ *
8
13
  * Three scopes:
9
14
  * - 'full': accepts agent-visible paths (/home/user/session/... or real paths)
10
15
  * - 'session': paths relative to sessionDir
@@ -20,7 +25,11 @@ export declare class SessionFileStore implements FileStore {
20
25
  private readonly sandboxed;
21
26
  private readonly fs;
22
27
  private readonly scope;
23
- constructor(sessionDir: string, workspaceDir: string | undefined, sandboxed: boolean, fs: FileSystem, scope?: FileStoreScope);
28
+ /** Set by `scoped()` so a sub-store cannot escape the roots it was carved out of. */
29
+ private readonly containmentRoots?;
30
+ constructor(sessionDir: string, workspaceDir: string | undefined, sandboxed: boolean, fs: FileSystem, scope?: FileStoreScope,
31
+ /** Set by `scoped()` so a sub-store cannot escape the roots it was carved out of. */
32
+ containmentRoots?: readonly string[] | undefined);
24
33
  /** Create a session-scoped FileStore (relative paths → sessionDir) */
25
34
  get session(): SessionFileStore;
26
35
  /** Create a workspace-scoped FileStore (relative paths → workspaceDir), or undefined if no workspace */
@@ -44,9 +53,20 @@ export declare class SessionFileStore implements FileStore {
44
53
  session: string;
45
54
  workspace?: string;
46
55
  };
56
+ /** Lexical resolution only — despite the name it never follows a symlink. See FileStore.realPath. */
47
57
  realPath(path: string): Result<string, string>;
58
+ /** See FileStore.containedPath. */
59
+ containedPath(path: string): Promise<Result<string, string>>;
60
+ /** Throws on a path it cannot resolve — never hand it unvalidated request data; use `realPath` there. */
48
61
  scoped(basePath: string): SessionFileStore;
49
- private resolvePath;
62
+ /**
63
+ * Lexical resolution, plus a check that the real target has not left the roots.
64
+ * `mode` says what the operation does with the final link — see ContainmentMode.
65
+ */
66
+ private resolveContained;
67
+ /** The area this store may touch — both roots where a workspace is configured. */
68
+ private allowedRoots;
69
+ private resolveScoped;
50
70
  /** Resolve a relative path within a root directory */
51
71
  private resolveRelativePath;
52
72
  /** Resolve an agent-visible path to real filesystem path (handles sandboxed virtual paths) */
@@ -1 +1 @@
1
- {"version":3,"file":"file-store.d.ts","sourceRoot":"","sources":["../../../src/core/file-store/file-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAMnD,KAAK,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,CAAA;AAEtD,qBAAa,gBAAiB,YAAW,SAAS;IAEhD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAJL,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,SAAS,EAAE,OAAO,EAClB,EAAE,EAAE,UAAU,EACd,KAAK,GAAE,cAAuB;IAGhD,sEAAsE;IACtE,IAAI,OAAO,IAAI,gBAAgB,CAE9B;IAED,wGAAwG;IACxG,IAAI,SAAS,IAAI,gBAAgB,GAAG,SAAS,CAG5C;IAEK,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,MAAM,CAAC,CAAC;IAUxF,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAe7E,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAOtD,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAgBtD,IAAI,CACT,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAClD,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC;YAgBzB,QAAQ;IA8BhB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAYzD,QAAQ,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;IAanD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAI9C,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB;IAa1C,OAAO,CAAC,WAAW;IAYnB,sDAAsD;IACtD,OAAO,CAAC,mBAAmB;IAY3B,8FAA8F;IAC9F,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,oBAAoB;IAuB5B,OAAO,CAAC,uBAAuB;IAgB/B,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,WAAW;CAsBnB"}
1
+ {"version":3,"file":"file-store.d.ts","sourceRoot":"","sources":["../../../src/core/file-store/file-store.ts"],"names":[],"mappings":"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"}