@roj-ai/sdk 0.1.36 → 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 (922) 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 +202 -87
  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 +3 -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.js +2 -2
  42. package/dist/core/events/base-event-store.d.ts.map +1 -1
  43. package/dist/core/events/base-event-store.js +22 -14
  44. package/dist/core/events/base-event-store.js.map +1 -1
  45. package/dist/core/events/file.d.ts +39 -1
  46. package/dist/core/events/file.d.ts.map +1 -1
  47. package/dist/core/events/file.js +159 -20
  48. package/dist/core/events/file.js.map +1 -1
  49. package/dist/core/events/types.d.ts +1 -1
  50. package/dist/core/file-store/containment.d.ts +19 -0
  51. package/dist/core/file-store/containment.d.ts.map +1 -0
  52. package/dist/core/file-store/containment.js +62 -0
  53. package/dist/core/file-store/containment.js.map +1 -0
  54. package/dist/core/file-store/file-store.d.ts +22 -2
  55. package/dist/core/file-store/file-store.d.ts.map +1 -1
  56. package/dist/core/file-store/file-store.js +88 -20
  57. package/dist/core/file-store/file-store.js.map +1 -1
  58. package/dist/core/file-store/types.d.ts +13 -1
  59. package/dist/core/file-store/types.d.ts.map +1 -1
  60. package/dist/core/image/image-processor.d.ts.map +1 -1
  61. package/dist/core/image/image-processor.js +3 -1
  62. package/dist/core/image/image-processor.js.map +1 -1
  63. package/dist/core/image/types.d.ts +2 -0
  64. package/dist/core/image/types.d.ts.map +1 -1
  65. package/dist/core/image/vips-resizer.d.ts.map +1 -1
  66. package/dist/core/image/vips-resizer.js +81 -33
  67. package/dist/core/image/vips-resizer.js.map +1 -1
  68. package/dist/core/llm/anthropic.d.ts +0 -1
  69. package/dist/core/llm/anthropic.d.ts.map +1 -1
  70. package/dist/core/llm/anthropic.js +58 -72
  71. package/dist/core/llm/anthropic.js.map +1 -1
  72. package/dist/core/llm/logger.d.ts +14 -2
  73. package/dist/core/llm/logger.d.ts.map +1 -1
  74. package/dist/core/llm/logger.js +161 -36
  75. package/dist/core/llm/logger.js.map +1 -1
  76. package/dist/core/llm/openrouter.d.ts +0 -1
  77. package/dist/core/llm/openrouter.d.ts.map +1 -1
  78. package/dist/core/llm/openrouter.js +53 -66
  79. package/dist/core/llm/openrouter.js.map +1 -1
  80. package/dist/core/llm/provider-request.d.ts +10 -0
  81. package/dist/core/llm/provider-request.d.ts.map +1 -0
  82. package/dist/core/llm/provider-request.js +41 -0
  83. package/dist/core/llm/provider-request.js.map +1 -0
  84. package/dist/core/llm/provider.d.ts +11 -0
  85. package/dist/core/llm/provider.d.ts.map +1 -1
  86. package/dist/core/llm/provider.js +26 -0
  87. package/dist/core/llm/provider.js.map +1 -1
  88. package/dist/core/llm/state.d.ts +2 -2
  89. package/dist/core/llm/state.js +4 -4
  90. package/dist/core/plugins/plugin-builder.d.ts +57 -3
  91. package/dist/core/plugins/plugin-builder.d.ts.map +1 -1
  92. package/dist/core/plugins/plugin-builder.js +68 -14
  93. package/dist/core/plugins/plugin-builder.js.map +1 -1
  94. package/dist/core/preset/preset-builder.d.ts +3 -2
  95. package/dist/core/preset/preset-builder.d.ts.map +1 -1
  96. package/dist/core/preset/preset-builder.js +7 -16
  97. package/dist/core/preset/preset-builder.js.map +1 -1
  98. package/dist/core/sessions/context.d.ts +23 -5
  99. package/dist/core/sessions/context.d.ts.map +1 -1
  100. package/dist/core/sessions/runtime-activity.d.ts +33 -0
  101. package/dist/core/sessions/runtime-activity.d.ts.map +1 -0
  102. package/dist/core/sessions/runtime-activity.js +55 -0
  103. package/dist/core/sessions/runtime-activity.js.map +1 -0
  104. package/dist/core/sessions/schema.d.ts +23 -2
  105. package/dist/core/sessions/schema.d.ts.map +1 -1
  106. package/dist/core/sessions/schema.js +24 -3
  107. package/dist/core/sessions/schema.js.map +1 -1
  108. package/dist/core/sessions/session-manager.d.ts +83 -6
  109. package/dist/core/sessions/session-manager.d.ts.map +1 -1
  110. package/dist/core/sessions/session-manager.js +517 -118
  111. package/dist/core/sessions/session-manager.js.map +1 -1
  112. package/dist/core/sessions/session-store.d.ts +18 -0
  113. package/dist/core/sessions/session-store.d.ts.map +1 -1
  114. package/dist/core/sessions/session-store.js +33 -0
  115. package/dist/core/sessions/session-store.js.map +1 -1
  116. package/dist/core/sessions/session.d.ts +42 -6
  117. package/dist/core/sessions/session.d.ts.map +1 -1
  118. package/dist/core/sessions/session.js +176 -44
  119. package/dist/core/sessions/session.js.map +1 -1
  120. package/dist/core/sessions/state.d.ts +10 -1
  121. package/dist/core/sessions/state.d.ts.map +1 -1
  122. package/dist/core/sessions/state.js +11 -1
  123. package/dist/core/sessions/state.js.map +1 -1
  124. package/dist/core/system.d.ts +9 -0
  125. package/dist/core/system.d.ts.map +1 -1
  126. package/dist/core/system.js +4 -1
  127. package/dist/core/system.js.map +1 -1
  128. package/dist/core/tools/executor.d.ts +1 -1
  129. package/dist/core/wake-key.d.ts +34 -0
  130. package/dist/core/wake-key.d.ts.map +1 -0
  131. package/dist/core/wake-key.js +51 -0
  132. package/dist/core/wake-key.js.map +1 -0
  133. package/dist/index.d.ts +23 -13
  134. package/dist/index.d.ts.map +1 -1
  135. package/dist/index.js +22 -8
  136. package/dist/index.js.map +1 -1
  137. package/dist/lib/archive/archive-inspection.d.ts +48 -0
  138. package/dist/lib/archive/archive-inspection.d.ts.map +1 -0
  139. package/dist/lib/archive/archive-inspection.fixtures.d.ts +7 -0
  140. package/dist/lib/archive/archive-inspection.fixtures.d.ts.map +1 -0
  141. package/dist/lib/archive/archive-inspection.fixtures.js +134 -0
  142. package/dist/lib/archive/archive-inspection.fixtures.js.map +1 -0
  143. package/dist/lib/archive/archive-inspection.js +253 -0
  144. package/dist/lib/archive/archive-inspection.js.map +1 -0
  145. package/dist/lib/archive/index.d.ts +3 -0
  146. package/dist/lib/archive/index.d.ts.map +1 -0
  147. package/dist/lib/archive/index.js +2 -0
  148. package/dist/lib/archive/index.js.map +1 -0
  149. package/dist/lib/logger/console.d.ts +5 -12
  150. package/dist/lib/logger/console.d.ts.map +1 -1
  151. package/dist/lib/logger/console.js +5 -47
  152. package/dist/lib/logger/console.js.map +1 -1
  153. package/dist/lib/logger/file.d.ts +8 -11
  154. package/dist/lib/logger/file.d.ts.map +1 -1
  155. package/dist/lib/logger/file.js +26 -37
  156. package/dist/lib/logger/file.js.map +1 -1
  157. package/dist/lib/logger/index.d.ts +3 -1
  158. package/dist/lib/logger/index.d.ts.map +1 -1
  159. package/dist/lib/logger/index.js +3 -1
  160. package/dist/lib/logger/index.js.map +1 -1
  161. package/dist/lib/logger/jsonl.d.ts +21 -0
  162. package/dist/lib/logger/jsonl.d.ts.map +1 -0
  163. package/dist/lib/logger/jsonl.js +29 -0
  164. package/dist/lib/logger/jsonl.js.map +1 -0
  165. package/dist/lib/logger/logger.d.ts +22 -0
  166. package/dist/lib/logger/logger.d.ts.map +1 -1
  167. package/dist/lib/logger/logger.js +37 -0
  168. package/dist/lib/logger/logger.js.map +1 -1
  169. package/dist/lib/logger/session-log.d.ts +21 -0
  170. package/dist/lib/logger/session-log.d.ts.map +1 -0
  171. package/dist/lib/logger/session-log.js +37 -0
  172. package/dist/lib/logger/session-log.js.map +1 -0
  173. package/dist/lib/utils/concurrency.d.ts +1 -1
  174. package/dist/lib/utils/concurrency.d.ts.map +1 -1
  175. package/dist/lib/utils/concurrency.js +30 -7
  176. package/dist/lib/utils/concurrency.js.map +1 -1
  177. package/dist/lib/utils/fs-batch.d.ts +17 -0
  178. package/dist/lib/utils/fs-batch.d.ts.map +1 -0
  179. package/dist/lib/utils/fs-batch.js +38 -0
  180. package/dist/lib/utils/fs-batch.js.map +1 -0
  181. package/dist/lib/utils/result.d.ts +7 -22
  182. package/dist/lib/utils/result.d.ts.map +1 -1
  183. package/dist/lib/utils/result.js +6 -17
  184. package/dist/lib/utils/result.js.map +1 -1
  185. package/dist/lib/utils/sleep.d.ts +10 -0
  186. package/dist/lib/utils/sleep.d.ts.map +1 -0
  187. package/dist/lib/utils/sleep.js +26 -0
  188. package/dist/lib/utils/sleep.js.map +1 -0
  189. package/dist/platform/fs-revision.d.ts +21 -0
  190. package/dist/platform/fs-revision.d.ts.map +1 -0
  191. package/dist/platform/fs-revision.js +9 -0
  192. package/dist/platform/fs-revision.js.map +1 -0
  193. package/dist/platform/fs.d.ts +104 -1
  194. package/dist/platform/fs.d.ts.map +1 -1
  195. package/dist/platform/git.d.ts +59 -0
  196. package/dist/platform/git.d.ts.map +1 -0
  197. package/dist/platform/git.js +8 -0
  198. package/dist/platform/git.js.map +1 -0
  199. package/dist/platform/index.d.ts +40 -1
  200. package/dist/platform/index.d.ts.map +1 -1
  201. package/dist/platform/index.js +1 -1
  202. package/dist/platform/index.js.map +1 -1
  203. package/dist/platform/llm-call-log.d.ts +80 -0
  204. package/dist/platform/llm-call-log.d.ts.map +1 -0
  205. package/dist/platform/llm-call-log.js +12 -0
  206. package/dist/platform/llm-call-log.js.map +1 -0
  207. package/dist/platform/scheduler.d.ts +32 -0
  208. package/dist/platform/scheduler.d.ts.map +1 -0
  209. package/dist/platform/scheduler.js +46 -0
  210. package/dist/platform/scheduler.js.map +1 -0
  211. package/dist/platform/session-log.d.ts +36 -0
  212. package/dist/platform/session-log.d.ts.map +1 -0
  213. package/dist/platform/session-log.js +12 -0
  214. package/dist/platform/session-log.js.map +1 -0
  215. package/dist/platform/shell.d.ts +83 -0
  216. package/dist/platform/shell.d.ts.map +1 -0
  217. package/dist/platform/shell.js +13 -0
  218. package/dist/platform/shell.js.map +1 -0
  219. package/dist/plugins/agent-status/plugin.d.ts.map +1 -1
  220. package/dist/plugins/agent-status/plugin.js +1 -0
  221. package/dist/plugins/agent-status/plugin.js.map +1 -1
  222. package/dist/plugins/agents/plugin.d.ts.map +1 -1
  223. package/dist/plugins/agents/plugin.js +129 -62
  224. package/dist/plugins/agents/plugin.js.map +1 -1
  225. package/dist/plugins/filesystem/listing.d.ts +3 -0
  226. package/dist/plugins/filesystem/listing.d.ts.map +1 -1
  227. package/dist/plugins/filesystem/listing.js +66 -10
  228. package/dist/plugins/filesystem/listing.js.map +1 -1
  229. package/dist/plugins/filesystem/plugin.d.ts.map +1 -1
  230. package/dist/plugins/filesystem/plugin.js +8 -6
  231. package/dist/plugins/filesystem/plugin.js.map +1 -1
  232. package/dist/plugins/git-status/plugin.d.ts +34 -7
  233. package/dist/plugins/git-status/plugin.d.ts.map +1 -1
  234. package/dist/plugins/git-status/plugin.js +168 -64
  235. package/dist/plugins/git-status/plugin.js.map +1 -1
  236. package/dist/plugins/llm-debug/plugin.d.ts.map +1 -1
  237. package/dist/plugins/llm-debug/plugin.js +1 -0
  238. package/dist/plugins/llm-debug/plugin.js.map +1 -1
  239. package/dist/plugins/logs/plugin.d.ts +1 -4
  240. package/dist/plugins/logs/plugin.d.ts.map +1 -1
  241. package/dist/plugins/logs/plugin.js +7 -0
  242. package/dist/plugins/logs/plugin.js.map +1 -1
  243. package/dist/plugins/mailbox/helpers.d.ts +2 -2
  244. package/dist/plugins/mailbox/helpers.js +1 -1
  245. package/dist/plugins/mailbox/plugin.d.ts.map +1 -1
  246. package/dist/plugins/mailbox/plugin.js +38 -43
  247. package/dist/plugins/mailbox/plugin.js.map +1 -1
  248. package/dist/plugins/mailbox/query.d.ts +7 -2
  249. package/dist/plugins/mailbox/query.d.ts.map +1 -1
  250. package/dist/plugins/mailbox/query.js +14 -7
  251. package/dist/plugins/mailbox/query.js.map +1 -1
  252. package/dist/plugins/mailbox/state.d.ts +5 -4
  253. package/dist/plugins/mailbox/state.d.ts.map +1 -1
  254. package/dist/plugins/mailbox/state.js +6 -5
  255. package/dist/plugins/mailbox/state.js.map +1 -1
  256. package/dist/plugins/resources/filename.d.ts +4 -0
  257. package/dist/plugins/resources/filename.d.ts.map +1 -0
  258. package/dist/plugins/resources/filename.js +18 -0
  259. package/dist/plugins/resources/filename.js.map +1 -0
  260. package/dist/plugins/resources/plugin.d.ts +3 -0
  261. package/dist/plugins/resources/plugin.d.ts.map +1 -1
  262. package/dist/plugins/resources/plugin.js +97 -60
  263. package/dist/plugins/resources/plugin.js.map +1 -1
  264. package/dist/plugins/resources/state.d.ts +1 -1
  265. package/dist/plugins/resources/state.js +1 -1
  266. package/dist/plugins/result-eviction/plugin.d.ts.map +1 -1
  267. package/dist/plugins/result-eviction/plugin.js +6 -1
  268. package/dist/plugins/result-eviction/plugin.js.map +1 -1
  269. package/dist/plugins/services/plugin.d.ts +4 -1
  270. package/dist/plugins/services/plugin.d.ts.map +1 -1
  271. package/dist/plugins/services/plugin.js +251 -100
  272. package/dist/plugins/services/plugin.js.map +1 -1
  273. package/dist/plugins/services/prompt.d.ts.map +1 -1
  274. package/dist/plugins/services/prompt.js +1 -4
  275. package/dist/plugins/services/prompt.js.map +1 -1
  276. package/dist/plugins/services/schema.d.ts +15 -5
  277. package/dist/plugins/services/schema.d.ts.map +1 -1
  278. package/dist/plugins/services/service.d.ts +100 -18
  279. package/dist/plugins/services/service.d.ts.map +1 -1
  280. package/dist/plugins/services/service.js +680 -230
  281. package/dist/plugins/services/service.js.map +1 -1
  282. package/dist/plugins/session-lifecycle/plugin.d.ts +21 -1
  283. package/dist/plugins/session-lifecycle/plugin.d.ts.map +1 -1
  284. package/dist/plugins/session-lifecycle/plugin.js +53 -40
  285. package/dist/plugins/session-lifecycle/plugin.js.map +1 -1
  286. package/dist/plugins/session-state/plugin.d.ts +21 -13
  287. package/dist/plugins/session-state/plugin.d.ts.map +1 -1
  288. package/dist/plugins/session-state/plugin.js +214 -79
  289. package/dist/plugins/session-state/plugin.js.map +1 -1
  290. package/dist/plugins/session-stats/plugin.d.ts.map +1 -1
  291. package/dist/plugins/session-stats/plugin.js +1 -0
  292. package/dist/plugins/session-stats/plugin.js.map +1 -1
  293. package/dist/plugins/shell/executor.d.ts +17 -15
  294. package/dist/plugins/shell/executor.d.ts.map +1 -1
  295. package/dist/plugins/shell/executor.js +130 -195
  296. package/dist/plugins/shell/executor.js.map +1 -1
  297. package/dist/plugins/shell/index.d.ts +2 -2
  298. package/dist/plugins/shell/index.d.ts.map +1 -1
  299. package/dist/plugins/shell/index.js +2 -2
  300. package/dist/plugins/shell/index.js.map +1 -1
  301. package/dist/plugins/shell/plugin.d.ts +5 -4
  302. package/dist/plugins/shell/plugin.d.ts.map +1 -1
  303. package/dist/plugins/shell/plugin.js +4 -8
  304. package/dist/plugins/shell/plugin.js.map +1 -1
  305. package/dist/plugins/skills/discovery.d.ts.map +1 -1
  306. package/dist/plugins/skills/discovery.js +10 -8
  307. package/dist/plugins/skills/discovery.js.map +1 -1
  308. package/dist/plugins/skills/index.d.ts +1 -1
  309. package/dist/plugins/skills/index.d.ts.map +1 -1
  310. package/dist/plugins/skills/plugin.d.ts +1 -1
  311. package/dist/plugins/skills/plugin.d.ts.map +1 -1
  312. package/dist/plugins/skills/plugin.js +23 -30
  313. package/dist/plugins/skills/plugin.js.map +1 -1
  314. package/dist/plugins/skills/prompts.d.ts +3 -3
  315. package/dist/plugins/skills/prompts.d.ts.map +1 -1
  316. package/dist/plugins/skills/prompts.js.map +1 -1
  317. package/dist/plugins/skills/schema.d.ts +4 -2
  318. package/dist/plugins/skills/schema.d.ts.map +1 -1
  319. package/dist/plugins/todo/schema.d.ts +1 -1
  320. package/dist/plugins/uploads/plugin.d.ts +11 -4
  321. package/dist/plugins/uploads/plugin.d.ts.map +1 -1
  322. package/dist/plugins/uploads/plugin.js +891 -225
  323. package/dist/plugins/uploads/plugin.js.map +1 -1
  324. package/dist/plugins/uploads/preprocessor.d.ts +14 -0
  325. package/dist/plugins/uploads/preprocessor.d.ts.map +1 -1
  326. package/dist/plugins/uploads/preprocessor.js +11 -0
  327. package/dist/plugins/uploads/preprocessor.js.map +1 -1
  328. package/dist/plugins/uploads/preprocessors/image-classifier.d.ts +1 -1
  329. package/dist/plugins/uploads/preprocessors/image-classifier.d.ts.map +1 -1
  330. package/dist/plugins/uploads/preprocessors/image-classifier.js +51 -26
  331. package/dist/plugins/uploads/preprocessors/image-classifier.js.map +1 -1
  332. package/dist/plugins/uploads/preprocessors/markitdown-preprocessor.d.ts +2 -2
  333. package/dist/plugins/uploads/preprocessors/markitdown-preprocessor.d.ts.map +1 -1
  334. package/dist/plugins/uploads/preprocessors/markitdown-preprocessor.js +41 -16
  335. package/dist/plugins/uploads/preprocessors/markitdown-preprocessor.js.map +1 -1
  336. package/dist/plugins/uploads/preprocessors/pdf-preprocessor.d.ts +1 -1
  337. package/dist/plugins/uploads/preprocessors/pdf-preprocessor.d.ts.map +1 -1
  338. package/dist/plugins/uploads/preprocessors/pdf-preprocessor.js +29 -14
  339. package/dist/plugins/uploads/preprocessors/pdf-preprocessor.js.map +1 -1
  340. package/dist/plugins/uploads/preprocessors/zip-preprocessor.d.ts +1 -1
  341. package/dist/plugins/uploads/preprocessors/zip-preprocessor.d.ts.map +1 -1
  342. package/dist/plugins/uploads/preprocessors/zip-preprocessor.js +62 -34
  343. package/dist/plugins/uploads/preprocessors/zip-preprocessor.js.map +1 -1
  344. package/dist/plugins/uploads/schema.d.ts +25 -2
  345. package/dist/plugins/uploads/schema.d.ts.map +1 -1
  346. package/dist/plugins/uploads/schema.js +24 -3
  347. package/dist/plugins/uploads/schema.js.map +1 -1
  348. package/dist/plugins/uploads/state.d.ts +13 -1
  349. package/dist/plugins/uploads/state.d.ts.map +1 -1
  350. package/dist/plugins/uploads/state.js +4 -1
  351. package/dist/plugins/uploads/state.js.map +1 -1
  352. package/dist/plugins/user-chat/plugin.d.ts +12 -5
  353. package/dist/plugins/user-chat/plugin.d.ts.map +1 -1
  354. package/dist/plugins/user-chat/plugin.js +141 -32
  355. package/dist/plugins/user-chat/plugin.js.map +1 -1
  356. package/dist/plugins/workers/context.d.ts +35 -13
  357. package/dist/plugins/workers/context.d.ts.map +1 -1
  358. package/dist/plugins/workers/context.js +82 -32
  359. package/dist/plugins/workers/context.js.map +1 -1
  360. package/dist/plugins/workers/definition.d.ts +7 -0
  361. package/dist/plugins/workers/definition.d.ts.map +1 -1
  362. package/dist/plugins/workers/definition.js.map +1 -1
  363. package/dist/plugins/workers/index.d.ts +4 -4
  364. package/dist/plugins/workers/index.d.ts.map +1 -1
  365. package/dist/plugins/workers/index.js +2 -2
  366. package/dist/plugins/workers/index.js.map +1 -1
  367. package/dist/plugins/workers/plugin.d.ts +10 -57
  368. package/dist/plugins/workers/plugin.d.ts.map +1 -1
  369. package/dist/plugins/workers/plugin.js +385 -123
  370. package/dist/plugins/workers/plugin.js.map +1 -1
  371. package/dist/plugins/workers/state.d.ts +69 -0
  372. package/dist/plugins/workers/state.d.ts.map +1 -0
  373. package/dist/plugins/workers/state.js +52 -0
  374. package/dist/plugins/workers/state.js.map +1 -0
  375. package/dist/plugins/workers/worker.d.ts +15 -4
  376. package/dist/plugins/workers/worker.d.ts.map +1 -1
  377. package/dist/testing/conformance.d.ts +106 -0
  378. package/dist/testing/conformance.d.ts.map +1 -0
  379. package/dist/testing/conformance.js +1463 -0
  380. package/dist/testing/conformance.js.map +1 -0
  381. package/dist/testing/node-platform.d.ts.map +1 -1
  382. package/dist/testing/node-platform.js +5 -0
  383. package/dist/testing/node-platform.js.map +1 -1
  384. package/dist/testing/test-harness.d.ts +11 -1
  385. package/dist/testing/test-harness.d.ts.map +1 -1
  386. package/dist/testing/test-harness.js +17 -37
  387. package/dist/testing/test-harness.js.map +1 -1
  388. package/dist/testing/wait-helpers.d.ts.map +1 -1
  389. package/dist/testing/wait-helpers.js +1 -3
  390. package/dist/testing/wait-helpers.js.map +1 -1
  391. package/dist/transport/adapter/client-adapter.d.ts +6 -0
  392. package/dist/transport/adapter/client-adapter.d.ts.map +1 -1
  393. package/dist/transport/adapter/client-adapter.js +50 -3
  394. package/dist/transport/adapter/client-adapter.js.map +1 -1
  395. package/dist/transport/adapter/heartbeat.d.ts +16 -0
  396. package/dist/transport/adapter/heartbeat.d.ts.map +1 -0
  397. package/dist/transport/adapter/heartbeat.js +41 -0
  398. package/dist/transport/adapter/heartbeat.js.map +1 -0
  399. package/dist/transport/adapter/server-adapter.d.ts.map +1 -1
  400. package/dist/transport/adapter/server-adapter.js +6 -0
  401. package/dist/transport/adapter/server-adapter.js.map +1 -1
  402. package/dist/transport/http/app.d.ts +3 -30
  403. package/dist/transport/http/app.d.ts.map +1 -1
  404. package/dist/transport/http/app.js +3 -7
  405. package/dist/transport/http/app.js.map +1 -1
  406. package/dist/transport/http/context.d.ts +40 -0
  407. package/dist/transport/http/context.d.ts.map +1 -0
  408. package/dist/transport/http/context.js +17 -0
  409. package/dist/transport/http/context.js.map +1 -0
  410. package/dist/transport/http/fetch-guard.d.ts +49 -0
  411. package/dist/transport/http/fetch-guard.d.ts.map +1 -0
  412. package/dist/transport/http/fetch-guard.js +312 -0
  413. package/dist/transport/http/fetch-guard.js.map +1 -0
  414. package/dist/transport/http/index.d.ts +1 -1
  415. package/dist/transport/http/index.d.ts.map +1 -1
  416. package/dist/transport/http/middleware/bearer-auth.d.ts +1 -1
  417. package/dist/transport/http/middleware/bearer-auth.d.ts.map +1 -1
  418. package/dist/transport/http/middleware/error-handler.d.ts +2 -2
  419. package/dist/transport/http/middleware/error-handler.d.ts.map +1 -1
  420. package/dist/transport/http/path-containment.d.ts +20 -0
  421. package/dist/transport/http/path-containment.d.ts.map +1 -0
  422. package/dist/transport/http/path-containment.js +31 -0
  423. package/dist/transport/http/path-containment.js.map +1 -0
  424. package/dist/transport/http/responses.d.ts +30 -0
  425. package/dist/transport/http/responses.d.ts.map +1 -0
  426. package/dist/transport/http/responses.js +5 -0
  427. package/dist/transport/http/responses.js.map +1 -0
  428. package/dist/transport/http/routes/files.d.ts +1 -1
  429. package/dist/transport/http/routes/files.d.ts.map +1 -1
  430. package/dist/transport/http/routes/files.js +54 -155
  431. package/dist/transport/http/routes/files.js.map +1 -1
  432. package/dist/transport/http/routes/resources.d.ts +1 -1
  433. package/dist/transport/http/routes/resources.d.ts.map +1 -1
  434. package/dist/transport/http/routes/resources.js +92 -57
  435. package/dist/transport/http/routes/resources.js.map +1 -1
  436. package/dist/transport/http/routes/rpc.d.ts +6 -1
  437. package/dist/transport/http/routes/rpc.d.ts.map +1 -1
  438. package/dist/transport/http/routes/rpc.js +51 -21
  439. package/dist/transport/http/routes/rpc.js.map +1 -1
  440. package/dist/transport/http/routes/upload.d.ts +1 -1
  441. package/dist/transport/http/routes/upload.d.ts.map +1 -1
  442. package/dist/transport/http/routes/upload.js +256 -169
  443. package/dist/transport/http/routes/upload.js.map +1 -1
  444. package/dist/user-config.d.ts +34 -7
  445. package/dist/user-config.d.ts.map +1 -1
  446. package/dist/user-config.js +71 -0
  447. package/dist/user-config.js.map +1 -1
  448. package/package.json +17 -7
  449. package/src/bootstrap.ts +119 -35
  450. package/src/bun-platform/fs.ts +1 -0
  451. package/src/bun-platform/index.ts +18 -1
  452. package/src/bun-platform/server-lifecycle.ts +218 -0
  453. package/src/bun-platform/shell.ts +362 -0
  454. package/src/config.ts +130 -0
  455. package/src/core/agents/agent.ts +210 -92
  456. package/src/core/agents/config.ts +8 -0
  457. package/src/core/agents/retry.ts +16 -17
  458. package/src/core/agents/state.ts +2 -0
  459. package/src/core/events/base-event-store.ts +24 -16
  460. package/src/core/events/file.ts +198 -22
  461. package/src/core/file-store/containment.ts +75 -0
  462. package/src/core/file-store/file-store.ts +106 -25
  463. package/src/core/file-store/types.ts +14 -1
  464. package/src/core/image/image-processor.ts +3 -1
  465. package/src/core/image/types.ts +2 -0
  466. package/src/core/image/vips-resizer.ts +102 -37
  467. package/src/core/llm/anthropic.ts +63 -79
  468. package/src/core/llm/logger.ts +175 -37
  469. package/src/core/llm/openrouter.ts +57 -72
  470. package/src/core/llm/provider-request.ts +40 -0
  471. package/src/core/llm/provider.ts +28 -0
  472. package/src/core/plugins/plugin-builder.ts +106 -14
  473. package/src/core/preset/preset-builder.ts +12 -22
  474. package/src/core/sessions/context.ts +18 -0
  475. package/src/core/sessions/runtime-activity.ts +78 -0
  476. package/src/core/sessions/schema.ts +29 -3
  477. package/src/core/sessions/session-manager.ts +560 -140
  478. package/src/core/sessions/session-store.ts +38 -0
  479. package/src/core/sessions/session.ts +187 -47
  480. package/src/core/sessions/state.ts +11 -0
  481. package/src/core/system.ts +15 -0
  482. package/src/core/wake-key.ts +65 -0
  483. package/src/index.ts +30 -12
  484. package/src/lib/archive/archive-inspection.fixtures.ts +138 -0
  485. package/src/lib/archive/archive-inspection.ts +359 -0
  486. package/src/lib/archive/index.ts +17 -0
  487. package/src/lib/logger/console.ts +7 -57
  488. package/src/lib/logger/file.ts +28 -50
  489. package/src/lib/logger/index.ts +3 -1
  490. package/src/lib/logger/jsonl.ts +36 -0
  491. package/src/lib/logger/logger.ts +48 -0
  492. package/src/lib/logger/session-log.ts +42 -0
  493. package/src/lib/utils/concurrency.ts +37 -8
  494. package/src/lib/utils/fs-batch.ts +49 -0
  495. package/src/lib/utils/result.ts +7 -31
  496. package/src/lib/utils/sleep.ts +23 -0
  497. package/src/platform/fs-revision.ts +21 -0
  498. package/src/platform/fs.ts +109 -1
  499. package/src/platform/git.ts +67 -0
  500. package/src/platform/index.ts +51 -1
  501. package/src/platform/llm-call-log.ts +86 -0
  502. package/src/platform/scheduler.ts +71 -0
  503. package/src/platform/session-log.ts +39 -0
  504. package/src/platform/shell.ts +89 -0
  505. package/src/plugins/agent-status/plugin.ts +1 -0
  506. package/src/plugins/agents/plugin.ts +134 -81
  507. package/src/plugins/filesystem/listing.ts +70 -12
  508. package/src/plugins/filesystem/plugin.ts +8 -6
  509. package/src/plugins/git-status/plugin.ts +204 -77
  510. package/src/plugins/llm-debug/plugin.ts +1 -0
  511. package/src/plugins/logs/plugin.ts +9 -0
  512. package/src/plugins/mailbox/plugin.ts +46 -64
  513. package/src/plugins/mailbox/query.ts +15 -7
  514. package/src/plugins/mailbox/state.ts +1 -0
  515. package/src/plugins/resources/filename.ts +19 -0
  516. package/src/plugins/resources/plugin.ts +111 -59
  517. package/src/plugins/result-eviction/plugin.ts +6 -1
  518. package/src/plugins/services/plugin.ts +254 -98
  519. package/src/plugins/services/prompt.ts +1 -6
  520. package/src/plugins/services/schema.ts +17 -3
  521. package/src/plugins/services/service.ts +702 -252
  522. package/src/plugins/session-lifecycle/plugin.ts +56 -41
  523. package/src/plugins/session-state/plugin.ts +242 -88
  524. package/src/plugins/session-stats/plugin.ts +1 -0
  525. package/src/plugins/shell/executor.ts +144 -226
  526. package/src/plugins/shell/index.ts +1 -4
  527. package/src/plugins/shell/plugin.ts +7 -9
  528. package/src/plugins/skills/discovery.ts +10 -8
  529. package/src/plugins/skills/index.ts +1 -1
  530. package/src/plugins/skills/plugin.ts +19 -27
  531. package/src/plugins/skills/prompts.ts +3 -3
  532. package/src/plugins/skills/schema.ts +5 -2
  533. package/src/plugins/uploads/plugin.ts +991 -273
  534. package/src/plugins/uploads/preprocessor.ts +25 -0
  535. package/src/plugins/uploads/preprocessors/image-classifier.ts +56 -25
  536. package/src/plugins/uploads/preprocessors/markitdown-preprocessor.ts +41 -15
  537. package/src/plugins/uploads/preprocessors/pdf-preprocessor.ts +32 -16
  538. package/src/plugins/uploads/preprocessors/zip-preprocessor.ts +67 -38
  539. package/src/plugins/uploads/schema.ts +30 -3
  540. package/src/plugins/uploads/state.ts +12 -0
  541. package/src/plugins/user-chat/plugin.ts +196 -40
  542. package/src/plugins/workers/context.ts +102 -39
  543. package/src/plugins/workers/definition.ts +7 -0
  544. package/src/plugins/workers/index.ts +4 -4
  545. package/src/plugins/workers/plugin.ts +461 -151
  546. package/src/plugins/workers/state.ts +64 -0
  547. package/src/plugins/workers/worker.ts +15 -4
  548. package/src/testing/conformance.ts +1751 -0
  549. package/src/testing/node-platform.ts +5 -0
  550. package/src/testing/test-harness.ts +21 -38
  551. package/src/testing/wait-helpers.ts +1 -4
  552. package/src/transport/adapter/client-adapter.ts +60 -3
  553. package/src/transport/adapter/heartbeat.ts +50 -0
  554. package/src/transport/adapter/server-adapter.ts +6 -0
  555. package/src/transport/http/app.ts +7 -35
  556. package/src/transport/http/context.ts +46 -0
  557. package/src/transport/http/fetch-guard.ts +318 -0
  558. package/src/transport/http/index.ts +1 -1
  559. package/src/transport/http/middleware/bearer-auth.ts +1 -1
  560. package/src/transport/http/middleware/error-handler.ts +1 -1
  561. package/src/transport/http/path-containment.ts +44 -0
  562. package/src/transport/http/responses.ts +20 -0
  563. package/src/transport/http/routes/files.ts +69 -159
  564. package/src/transport/http/routes/resources.ts +124 -93
  565. package/src/transport/http/routes/rpc.ts +63 -26
  566. package/src/transport/http/routes/upload.ts +327 -258
  567. package/src/user-config.ts +93 -7
  568. package/dist/config.test.d.ts +0 -2
  569. package/dist/config.test.d.ts.map +0 -1
  570. package/dist/config.test.js +0 -155
  571. package/dist/config.test.js.map +0 -1
  572. package/dist/core/agent-loop.integration.test.d.ts +0 -2
  573. package/dist/core/agent-loop.integration.test.d.ts.map +0 -1
  574. package/dist/core/agent-loop.integration.test.js +0 -414
  575. package/dist/core/agent-loop.integration.test.js.map +0 -1
  576. package/dist/core/agents/agent-config.test.d.ts +0 -2
  577. package/dist/core/agents/agent-config.test.d.ts.map +0 -1
  578. package/dist/core/agents/agent-config.test.js +0 -194
  579. package/dist/core/agents/agent-config.test.js.map +0 -1
  580. package/dist/core/agents/agent-shutdown.test.d.ts +0 -6
  581. package/dist/core/agents/agent-shutdown.test.d.ts.map +0 -1
  582. package/dist/core/agents/agent-shutdown.test.js +0 -180
  583. package/dist/core/agents/agent-shutdown.test.js.map +0 -1
  584. package/dist/core/agents/agent.test.d.ts +0 -2
  585. package/dist/core/agents/agent.test.d.ts.map +0 -1
  586. package/dist/core/agents/agent.test.js +0 -313
  587. package/dist/core/agents/agent.test.js.map +0 -1
  588. package/dist/core/agents/communicator.d.ts +0 -3
  589. package/dist/core/agents/communicator.d.ts.map +0 -1
  590. package/dist/core/agents/communicator.js +0 -13
  591. package/dist/core/agents/communicator.js.map +0 -1
  592. package/dist/core/agents/handler-events.test.d.ts +0 -5
  593. package/dist/core/agents/handler-events.test.d.ts.map +0 -1
  594. package/dist/core/agents/handler-events.test.js +0 -115
  595. package/dist/core/agents/handler-events.test.js.map +0 -1
  596. package/dist/core/agents/response-sanitizer.test.d.ts +0 -2
  597. package/dist/core/agents/response-sanitizer.test.d.ts.map +0 -1
  598. package/dist/core/agents/response-sanitizer.test.js +0 -101
  599. package/dist/core/agents/response-sanitizer.test.js.map +0 -1
  600. package/dist/core/error-recovery.integration.test.d.ts +0 -2
  601. package/dist/core/error-recovery.integration.test.d.ts.map +0 -1
  602. package/dist/core/error-recovery.integration.test.js +0 -288
  603. package/dist/core/error-recovery.integration.test.js.map +0 -1
  604. package/dist/core/event-sourcing.integration.test.d.ts +0 -2
  605. package/dist/core/event-sourcing.integration.test.d.ts.map +0 -1
  606. package/dist/core/event-sourcing.integration.test.js +0 -154
  607. package/dist/core/event-sourcing.integration.test.js.map +0 -1
  608. package/dist/core/events/file.test.d.ts +0 -2
  609. package/dist/core/events/file.test.d.ts.map +0 -1
  610. package/dist/core/events/file.test.js +0 -284
  611. package/dist/core/events/file.test.js.map +0 -1
  612. package/dist/core/events/memory.test.d.ts +0 -2
  613. package/dist/core/events/memory.test.d.ts.map +0 -1
  614. package/dist/core/events/memory.test.js +0 -502
  615. package/dist/core/events/memory.test.js.map +0 -1
  616. package/dist/core/image/image-processor.test.d.ts +0 -2
  617. package/dist/core/image/image-processor.test.d.ts.map +0 -1
  618. package/dist/core/image/image-processor.test.js +0 -171
  619. package/dist/core/image/image-processor.test.js.map +0 -1
  620. package/dist/core/image/vips-resizer.test.d.ts +0 -2
  621. package/dist/core/image/vips-resizer.test.d.ts.map +0 -1
  622. package/dist/core/image/vips-resizer.test.js +0 -336
  623. package/dist/core/image/vips-resizer.test.js.map +0 -1
  624. package/dist/core/llm/anthropic.test.d.ts +0 -2
  625. package/dist/core/llm/anthropic.test.d.ts.map +0 -1
  626. package/dist/core/llm/anthropic.test.js +0 -464
  627. package/dist/core/llm/anthropic.test.js.map +0 -1
  628. package/dist/core/llm/cache-breakpoints.test.d.ts +0 -2
  629. package/dist/core/llm/cache-breakpoints.test.d.ts.map +0 -1
  630. package/dist/core/llm/cache-breakpoints.test.js +0 -69
  631. package/dist/core/llm/cache-breakpoints.test.js.map +0 -1
  632. package/dist/core/llm/cache-live.test.d.ts +0 -16
  633. package/dist/core/llm/cache-live.test.d.ts.map +0 -1
  634. package/dist/core/llm/cache-live.test.js +0 -137
  635. package/dist/core/llm/cache-live.test.js.map +0 -1
  636. package/dist/core/llm/logger.test.d.ts +0 -7
  637. package/dist/core/llm/logger.test.d.ts.map +0 -1
  638. package/dist/core/llm/logger.test.js +0 -228
  639. package/dist/core/llm/logger.test.js.map +0 -1
  640. package/dist/core/llm/message-sanitization.test.d.ts +0 -2
  641. package/dist/core/llm/message-sanitization.test.d.ts.map +0 -1
  642. package/dist/core/llm/message-sanitization.test.js +0 -181
  643. package/dist/core/llm/message-sanitization.test.js.map +0 -1
  644. package/dist/core/llm/mock.test.d.ts +0 -2
  645. package/dist/core/llm/mock.test.d.ts.map +0 -1
  646. package/dist/core/llm/mock.test.js +0 -318
  647. package/dist/core/llm/mock.test.js.map +0 -1
  648. package/dist/core/llm/model-shortlist-live.test.d.ts +0 -35
  649. package/dist/core/llm/model-shortlist-live.test.d.ts.map +0 -1
  650. package/dist/core/llm/model-shortlist-live.test.js +0 -452
  651. package/dist/core/llm/model-shortlist-live.test.js.map +0 -1
  652. package/dist/core/llm/openrouter-mapping.test.d.ts +0 -2
  653. package/dist/core/llm/openrouter-mapping.test.d.ts.map +0 -1
  654. package/dist/core/llm/openrouter-mapping.test.js +0 -190
  655. package/dist/core/llm/openrouter-mapping.test.js.map +0 -1
  656. package/dist/core/llm/openrouter.test.d.ts +0 -2
  657. package/dist/core/llm/openrouter.test.d.ts.map +0 -1
  658. package/dist/core/llm/openrouter.test.js +0 -377
  659. package/dist/core/llm/openrouter.test.js.map +0 -1
  660. package/dist/core/llm/provider-integration.test.d.ts +0 -12
  661. package/dist/core/llm/provider-integration.test.d.ts.map +0 -1
  662. package/dist/core/llm/provider-integration.test.js +0 -350
  663. package/dist/core/llm/provider-integration.test.js.map +0 -1
  664. package/dist/core/llm/reasoning-details.test.d.ts +0 -2
  665. package/dist/core/llm/reasoning-details.test.d.ts.map +0 -1
  666. package/dist/core/llm/reasoning-details.test.js +0 -144
  667. package/dist/core/llm/reasoning-details.test.js.map +0 -1
  668. package/dist/core/llm/routing-provider.test.d.ts +0 -2
  669. package/dist/core/llm/routing-provider.test.d.ts.map +0 -1
  670. package/dist/core/llm/routing-provider.test.js +0 -94
  671. package/dist/core/llm/routing-provider.test.js.map +0 -1
  672. package/dist/core/llm/snapshot-middleware.test.d.ts +0 -2
  673. package/dist/core/llm/snapshot-middleware.test.d.ts.map +0 -1
  674. package/dist/core/llm/snapshot-middleware.test.js +0 -144
  675. package/dist/core/llm/snapshot-middleware.test.js.map +0 -1
  676. package/dist/core/llm/thinking-blocks.test.d.ts +0 -2
  677. package/dist/core/llm/thinking-blocks.test.d.ts.map +0 -1
  678. package/dist/core/llm/thinking-blocks.test.js +0 -291
  679. package/dist/core/llm/thinking-blocks.test.js.map +0 -1
  680. package/dist/core/multi-agent.integration.test.d.ts +0 -2
  681. package/dist/core/multi-agent.integration.test.d.ts.map +0 -1
  682. package/dist/core/multi-agent.integration.test.js +0 -298
  683. package/dist/core/multi-agent.integration.test.js.map +0 -1
  684. package/dist/core/plugin-hooks.integration.test.d.ts +0 -2
  685. package/dist/core/plugin-hooks.integration.test.d.ts.map +0 -1
  686. package/dist/core/plugin-hooks.integration.test.js +0 -458
  687. package/dist/core/plugin-hooks.integration.test.js.map +0 -1
  688. package/dist/core/reasoning-round-trip.integration.test.d.ts +0 -2
  689. package/dist/core/reasoning-round-trip.integration.test.d.ts.map +0 -1
  690. package/dist/core/reasoning-round-trip.integration.test.js +0 -150
  691. package/dist/core/reasoning-round-trip.integration.test.js.map +0 -1
  692. package/dist/core/session-lifecycle.integration.test.d.ts +0 -2
  693. package/dist/core/session-lifecycle.integration.test.d.ts.map +0 -1
  694. package/dist/core/session-lifecycle.integration.test.js +0 -159
  695. package/dist/core/session-lifecycle.integration.test.js.map +0 -1
  696. package/dist/core/sessions/fork-utils.test.d.ts +0 -2
  697. package/dist/core/sessions/fork-utils.test.d.ts.map +0 -1
  698. package/dist/core/sessions/fork-utils.test.js +0 -129
  699. package/dist/core/sessions/fork-utils.test.js.map +0 -1
  700. package/dist/core/sessions/session-overrides.integration.test.d.ts +0 -2
  701. package/dist/core/sessions/session-overrides.integration.test.d.ts.map +0 -1
  702. package/dist/core/sessions/session-overrides.integration.test.js +0 -154
  703. package/dist/core/sessions/session-overrides.integration.test.js.map +0 -1
  704. package/dist/core/sessions/session.test.d.ts +0 -2
  705. package/dist/core/sessions/session.test.d.ts.map +0 -1
  706. package/dist/core/sessions/session.test.js +0 -1100
  707. package/dist/core/sessions/session.test.js.map +0 -1
  708. package/dist/core/tools/executor.test.d.ts +0 -2
  709. package/dist/core/tools/executor.test.d.ts.map +0 -1
  710. package/dist/core/tools/executor.test.js +0 -144
  711. package/dist/core/tools/executor.test.js.map +0 -1
  712. package/dist/lib/logger/console.test.d.ts +0 -2
  713. package/dist/lib/logger/console.test.d.ts.map +0 -1
  714. package/dist/lib/logger/console.test.js +0 -258
  715. package/dist/lib/logger/console.test.js.map +0 -1
  716. package/dist/lib/never.d.ts +0 -2
  717. package/dist/lib/never.d.ts.map +0 -1
  718. package/dist/lib/never.js +0 -4
  719. package/dist/lib/never.js.map +0 -1
  720. package/dist/lib/utils/concurrency.test.d.ts +0 -2
  721. package/dist/lib/utils/concurrency.test.d.ts.map +0 -1
  722. package/dist/lib/utils/concurrency.test.js +0 -135
  723. package/dist/lib/utils/concurrency.test.js.map +0 -1
  724. package/dist/plugins/agent-status/agent-status.test.d.ts +0 -2
  725. package/dist/plugins/agent-status/agent-status.test.d.ts.map +0 -1
  726. package/dist/plugins/agent-status/agent-status.test.js +0 -136
  727. package/dist/plugins/agent-status/agent-status.test.js.map +0 -1
  728. package/dist/plugins/agents/agents.integration.test.d.ts +0 -2
  729. package/dist/plugins/agents/agents.integration.test.d.ts.map +0 -1
  730. package/dist/plugins/agents/agents.integration.test.js +0 -830
  731. package/dist/plugins/agents/agents.integration.test.js.map +0 -1
  732. package/dist/plugins/agents/supervision.integration.test.d.ts +0 -2
  733. package/dist/plugins/agents/supervision.integration.test.d.ts.map +0 -1
  734. package/dist/plugins/agents/supervision.integration.test.js +0 -215
  735. package/dist/plugins/agents/supervision.integration.test.js.map +0 -1
  736. package/dist/plugins/context-compact/compaction-live.test.d.ts +0 -17
  737. package/dist/plugins/context-compact/compaction-live.test.d.ts.map +0 -1
  738. package/dist/plugins/context-compact/compaction-live.test.js +0 -177
  739. package/dist/plugins/context-compact/compaction-live.test.js.map +0 -1
  740. package/dist/plugins/context-compact/context-compact.integration.test.d.ts +0 -2
  741. package/dist/plugins/context-compact/context-compact.integration.test.d.ts.map +0 -1
  742. package/dist/plugins/context-compact/context-compact.integration.test.js +0 -364
  743. package/dist/plugins/context-compact/context-compact.integration.test.js.map +0 -1
  744. package/dist/plugins/context-compact/context-compactor.test.d.ts +0 -2
  745. package/dist/plugins/context-compact/context-compactor.test.d.ts.map +0 -1
  746. package/dist/plugins/context-compact/context-compactor.test.js +0 -858
  747. package/dist/plugins/context-compact/context-compactor.test.js.map +0 -1
  748. package/dist/plugins/context-compact/history-offloader.test.d.ts +0 -2
  749. package/dist/plugins/context-compact/history-offloader.test.d.ts.map +0 -1
  750. package/dist/plugins/context-compact/history-offloader.test.js +0 -77
  751. package/dist/plugins/context-compact/history-offloader.test.js.map +0 -1
  752. package/dist/plugins/filesystem/filesystem.integration.test.d.ts +0 -2
  753. package/dist/plugins/filesystem/filesystem.integration.test.d.ts.map +0 -1
  754. package/dist/plugins/filesystem/filesystem.integration.test.js +0 -447
  755. package/dist/plugins/filesystem/filesystem.integration.test.js.map +0 -1
  756. package/dist/plugins/filesystem/schema.d.ts +0 -7
  757. package/dist/plugins/filesystem/schema.d.ts.map +0 -1
  758. package/dist/plugins/filesystem/schema.js +0 -2
  759. package/dist/plugins/filesystem/schema.js.map +0 -1
  760. package/dist/plugins/limits-guard/limit-guard.test.d.ts +0 -2
  761. package/dist/plugins/limits-guard/limit-guard.test.d.ts.map +0 -1
  762. package/dist/plugins/limits-guard/limit-guard.test.js +0 -194
  763. package/dist/plugins/limits-guard/limit-guard.test.js.map +0 -1
  764. package/dist/plugins/limits-guard/limits-guard.integration.test.d.ts +0 -2
  765. package/dist/plugins/limits-guard/limits-guard.integration.test.d.ts.map +0 -1
  766. package/dist/plugins/limits-guard/limits-guard.integration.test.js +0 -887
  767. package/dist/plugins/limits-guard/limits-guard.integration.test.js.map +0 -1
  768. package/dist/plugins/llm-debug/llm-debug.integration.test.d.ts +0 -2
  769. package/dist/plugins/llm-debug/llm-debug.integration.test.d.ts.map +0 -1
  770. package/dist/plugins/llm-debug/llm-debug.integration.test.js +0 -157
  771. package/dist/plugins/llm-debug/llm-debug.integration.test.js.map +0 -1
  772. package/dist/plugins/mailbox/mailbox.integration.test.d.ts +0 -2
  773. package/dist/plugins/mailbox/mailbox.integration.test.d.ts.map +0 -1
  774. package/dist/plugins/mailbox/mailbox.integration.test.js +0 -678
  775. package/dist/plugins/mailbox/mailbox.integration.test.js.map +0 -1
  776. package/dist/plugins/resources/resources.integration.test.d.ts +0 -2
  777. package/dist/plugins/resources/resources.integration.test.d.ts.map +0 -1
  778. package/dist/plugins/resources/resources.integration.test.js +0 -62
  779. package/dist/plugins/resources/resources.integration.test.js.map +0 -1
  780. package/dist/plugins/result-eviction/result-eviction.integration.test.d.ts +0 -2
  781. package/dist/plugins/result-eviction/result-eviction.integration.test.d.ts.map +0 -1
  782. package/dist/plugins/result-eviction/result-eviction.integration.test.js +0 -294
  783. package/dist/plugins/result-eviction/result-eviction.integration.test.js.map +0 -1
  784. package/dist/plugins/services/pid-registry.test.d.ts +0 -2
  785. package/dist/plugins/services/pid-registry.test.d.ts.map +0 -1
  786. package/dist/plugins/services/pid-registry.test.js +0 -161
  787. package/dist/plugins/services/pid-registry.test.js.map +0 -1
  788. package/dist/plugins/services/services.integration.test.d.ts +0 -2
  789. package/dist/plugins/services/services.integration.test.d.ts.map +0 -1
  790. package/dist/plugins/services/services.integration.test.js +0 -1057
  791. package/dist/plugins/services/services.integration.test.js.map +0 -1
  792. package/dist/plugins/session-lifecycle/session-lifecycle.integration.test.d.ts +0 -2
  793. package/dist/plugins/session-lifecycle/session-lifecycle.integration.test.d.ts.map +0 -1
  794. package/dist/plugins/session-lifecycle/session-lifecycle.integration.test.js +0 -498
  795. package/dist/plugins/session-lifecycle/session-lifecycle.integration.test.js.map +0 -1
  796. package/dist/plugins/session-stats/plugin.test.d.ts +0 -2
  797. package/dist/plugins/session-stats/plugin.test.d.ts.map +0 -1
  798. package/dist/plugins/session-stats/plugin.test.js +0 -145
  799. package/dist/plugins/session-stats/plugin.test.js.map +0 -1
  800. package/dist/plugins/shell/shell.integration.test.d.ts +0 -2
  801. package/dist/plugins/shell/shell.integration.test.d.ts.map +0 -1
  802. package/dist/plugins/shell/shell.integration.test.js +0 -234
  803. package/dist/plugins/shell/shell.integration.test.js.map +0 -1
  804. package/dist/plugins/shell/shell.test.d.ts +0 -2
  805. package/dist/plugins/shell/shell.test.d.ts.map +0 -1
  806. package/dist/plugins/shell/shell.test.js +0 -236
  807. package/dist/plugins/shell/shell.test.js.map +0 -1
  808. package/dist/plugins/skills/discovery.test.d.ts +0 -2
  809. package/dist/plugins/skills/discovery.test.d.ts.map +0 -1
  810. package/dist/plugins/skills/discovery.test.js +0 -312
  811. package/dist/plugins/skills/discovery.test.js.map +0 -1
  812. package/dist/plugins/skills/skills.integration.test.d.ts +0 -2
  813. package/dist/plugins/skills/skills.integration.test.d.ts.map +0 -1
  814. package/dist/plugins/skills/skills.integration.test.js +0 -475
  815. package/dist/plugins/skills/skills.integration.test.js.map +0 -1
  816. package/dist/plugins/todo/todo.integration.test.d.ts +0 -2
  817. package/dist/plugins/todo/todo.integration.test.d.ts.map +0 -1
  818. package/dist/plugins/todo/todo.integration.test.js +0 -605
  819. package/dist/plugins/todo/todo.integration.test.js.map +0 -1
  820. package/dist/plugins/uploads/preprocessors/image-classifier.test.d.ts +0 -2
  821. package/dist/plugins/uploads/preprocessors/image-classifier.test.d.ts.map +0 -1
  822. package/dist/plugins/uploads/preprocessors/image-classifier.test.js +0 -113
  823. package/dist/plugins/uploads/preprocessors/image-classifier.test.js.map +0 -1
  824. package/dist/plugins/uploads/uploads.integration.test.d.ts +0 -2
  825. package/dist/plugins/uploads/uploads.integration.test.d.ts.map +0 -1
  826. package/dist/plugins/uploads/uploads.integration.test.js +0 -639
  827. package/dist/plugins/uploads/uploads.integration.test.js.map +0 -1
  828. package/dist/plugins/user-chat/user-chat.integration.test.d.ts +0 -2
  829. package/dist/plugins/user-chat/user-chat.integration.test.d.ts.map +0 -1
  830. package/dist/plugins/user-chat/user-chat.integration.test.js +0 -754
  831. package/dist/plugins/user-chat/user-chat.integration.test.js.map +0 -1
  832. package/dist/plugins/workers/workers.integration.test.d.ts +0 -2
  833. package/dist/plugins/workers/workers.integration.test.d.ts.map +0 -1
  834. package/dist/plugins/workers/workers.integration.test.js +0 -629
  835. package/dist/plugins/workers/workers.integration.test.js.map +0 -1
  836. package/dist/prompts/macros.test.d.ts +0 -2
  837. package/dist/prompts/macros.test.d.ts.map +0 -1
  838. package/dist/prompts/macros.test.js +0 -80
  839. package/dist/prompts/macros.test.js.map +0 -1
  840. package/dist/testing/test-harness.test.d.ts +0 -2
  841. package/dist/testing/test-harness.test.d.ts.map +0 -1
  842. package/dist/testing/test-harness.test.js +0 -92
  843. package/dist/testing/test-harness.test.js.map +0 -1
  844. package/dist/transport/http/routes/rpc.integration.test.d.ts +0 -2
  845. package/dist/transport/http/routes/rpc.integration.test.d.ts.map +0 -1
  846. package/dist/transport/http/routes/rpc.integration.test.js +0 -189
  847. package/dist/transport/http/routes/rpc.integration.test.js.map +0 -1
  848. package/dist/transport/http/routes/rpc.test.d.ts +0 -2
  849. package/dist/transport/http/routes/rpc.test.d.ts.map +0 -1
  850. package/dist/transport/http/routes/rpc.test.js +0 -316
  851. package/dist/transport/http/routes/rpc.test.js.map +0 -1
  852. package/src/config.test.ts +0 -174
  853. package/src/core/agent-loop.integration.test.ts +0 -503
  854. package/src/core/agents/agent-config.test.ts +0 -240
  855. package/src/core/agents/agent-shutdown.test.ts +0 -236
  856. package/src/core/agents/agent.test.ts +0 -387
  857. package/src/core/agents/communicator.ts +0 -16
  858. package/src/core/agents/handler-events.test.ts +0 -167
  859. package/src/core/agents/response-sanitizer.test.ts +0 -137
  860. package/src/core/error-recovery.integration.test.ts +0 -343
  861. package/src/core/event-sourcing.integration.test.ts +0 -191
  862. package/src/core/events/file.test.ts +0 -436
  863. package/src/core/events/memory.test.ts +0 -741
  864. package/src/core/image/image-processor.test.ts +0 -218
  865. package/src/core/image/vips-resizer.test.ts +0 -388
  866. package/src/core/llm/anthropic.test.ts +0 -546
  867. package/src/core/llm/cache-breakpoints.test.ts +0 -85
  868. package/src/core/llm/cache-live.test.ts +0 -155
  869. package/src/core/llm/logger.test.ts +0 -270
  870. package/src/core/llm/message-sanitization.test.ts +0 -217
  871. package/src/core/llm/mock.test.ts +0 -402
  872. package/src/core/llm/model-shortlist-live.test.ts +0 -577
  873. package/src/core/llm/openrouter-mapping.test.ts +0 -234
  874. package/src/core/llm/openrouter.test.ts +0 -499
  875. package/src/core/llm/provider-integration.test.ts +0 -408
  876. package/src/core/llm/reasoning-details.test.ts +0 -177
  877. package/src/core/llm/routing-provider.test.ts +0 -113
  878. package/src/core/llm/snapshot-middleware.test.ts +0 -168
  879. package/src/core/llm/thinking-blocks.test.ts +0 -345
  880. package/src/core/multi-agent.integration.test.ts +0 -340
  881. package/src/core/plugin-hooks.integration.test.ts +0 -568
  882. package/src/core/reasoning-round-trip.integration.test.ts +0 -188
  883. package/src/core/session-lifecycle.integration.test.ts +0 -202
  884. package/src/core/sessions/fork-utils.test.ts +0 -158
  885. package/src/core/sessions/session-overrides.integration.test.ts +0 -210
  886. package/src/core/sessions/session.test.ts +0 -1736
  887. package/src/core/tools/executor.test.ts +0 -161
  888. package/src/lib/logger/console.test.ts +0 -348
  889. package/src/lib/never.ts +0 -3
  890. package/src/lib/utils/concurrency.test.ts +0 -169
  891. package/src/plugins/agent-status/agent-status.test.ts +0 -164
  892. package/src/plugins/agents/agents.integration.test.ts +0 -976
  893. package/src/plugins/agents/supervision.integration.test.ts +0 -249
  894. package/src/plugins/context-compact/compaction-live.test.ts +0 -221
  895. package/src/plugins/context-compact/context-compact.integration.test.ts +0 -418
  896. package/src/plugins/context-compact/context-compactor.test.ts +0 -1036
  897. package/src/plugins/context-compact/history-offloader.test.ts +0 -100
  898. package/src/plugins/filesystem/filesystem.integration.test.ts +0 -529
  899. package/src/plugins/filesystem/schema.ts +0 -6
  900. package/src/plugins/limits-guard/limit-guard.test.ts +0 -253
  901. package/src/plugins/limits-guard/limits-guard.integration.test.ts +0 -1012
  902. package/src/plugins/llm-debug/llm-debug.integration.test.ts +0 -192
  903. package/src/plugins/mailbox/mailbox.integration.test.ts +0 -794
  904. package/src/plugins/resources/resources.integration.test.ts +0 -68
  905. package/src/plugins/result-eviction/result-eviction.integration.test.ts +0 -332
  906. package/src/plugins/services/pid-registry.test.ts +0 -180
  907. package/src/plugins/services/services.integration.test.ts +0 -1223
  908. package/src/plugins/session-lifecycle/session-lifecycle.integration.test.ts +0 -639
  909. package/src/plugins/session-stats/plugin.test.ts +0 -160
  910. package/src/plugins/shell/shell.integration.test.ts +0 -273
  911. package/src/plugins/shell/shell.test.ts +0 -314
  912. package/src/plugins/skills/discovery.test.ts +0 -395
  913. package/src/plugins/skills/skills.integration.test.ts +0 -580
  914. package/src/plugins/todo/todo.integration.test.ts +0 -687
  915. package/src/plugins/uploads/preprocessors/image-classifier.test.ts +0 -142
  916. package/src/plugins/uploads/uploads.integration.test.ts +0 -831
  917. package/src/plugins/user-chat/user-chat.integration.test.ts +0 -893
  918. package/src/plugins/workers/workers.integration.test.ts +0 -778
  919. package/src/prompts/macros.test.ts +0 -107
  920. package/src/testing/test-harness.test.ts +0 -114
  921. package/src/transport/http/routes/rpc.integration.test.ts +0 -243
  922. package/src/transport/http/routes/rpc.test.ts +0 -372
@@ -0,0 +1,322 @@
1
+ /**
2
+ * Bun/Node ShellRunner — spawns one command line and buffers what it prints.
3
+ *
4
+ * Confinement is `paths`: bubblewrap mounts exactly the paths the caller
5
+ * granted, at the location the caller says the command sees them.
6
+ */
7
+ import { resolve } from 'node:path';
8
+ import { createBunProcessRunner } from './process.js';
9
+ /** Maximum output size per stream in bytes (1 MB) */
10
+ const MAX_OUTPUT_BYTES = 1_048_576;
11
+ /** Default cap on what a confined command may write (200 MB). */
12
+ const DEFAULT_FILE_SIZE_BYTES = 209_715_200;
13
+ /** Default process cap. Namespace-local only on Linux 5.14+; older kernels count per host uid. */
14
+ const DEFAULT_PROCESSES = 64;
15
+ /** POSIX counts `ulimit -f` in 512-byte blocks; a shell counting 1024 caps at twice the request. */
16
+ const FILE_SIZE_BLOCK_BYTES = 512;
17
+ /** Marks a limit the shell refused, so the host hears about it and the agent's stderr stays clean */
18
+ const LIMIT_NOTICE_PREFIX = 'roj-shell: limit unavailable:';
19
+ const reportedLimits = new Set();
20
+ /** Grace period before SIGKILL after SIGTERM (ms) */
21
+ const GRACEFUL_KILL_DELAY_MS = 5000;
22
+ /** Host environment a command inherits; everything else stays out of it. */
23
+ const SAFE_ENV_VARS = ['PATH', 'HOME', 'USER', 'SHELL', 'TERM', 'LANG', 'LC_ALL', 'TZ'];
24
+ function getSafeEnv() {
25
+ return Object.fromEntries(SAFE_ENV_VARS
26
+ .filter(key => process.env[key])
27
+ .map(key => [key, process.env[key]]));
28
+ }
29
+ /** A command the host could not run, carrying whatever it managed to observe. */
30
+ class ShellRunFailure extends Error {
31
+ details;
32
+ constructor(message, details) {
33
+ super(message);
34
+ this.details = details;
35
+ this.name = 'ShellRunFailure';
36
+ }
37
+ }
38
+ export function buildBwrapArgs(opts) {
39
+ const args = [
40
+ '--ro-bind',
41
+ '/',
42
+ '/',
43
+ '--dev',
44
+ '/dev',
45
+ '--proc',
46
+ '/proc',
47
+ '--tmpfs',
48
+ '/tmp',
49
+ ];
50
+ // Overrides --ro-bind / / for these paths, keeping user home dirs and root out of reach
51
+ args.push('--tmpfs', '/home');
52
+ args.push('--tmpfs', '/root');
53
+ for (const grant of opts.grants ?? []) {
54
+ args.push(grant.mode === 'ro' ? '--ro-bind' : '--bind', resolve(grant.source ?? grant.path), grant.path);
55
+ }
56
+ args.push('--unshare-all');
57
+ if (opts.network) {
58
+ args.push('--share-net');
59
+ }
60
+ args.push('--die-with-parent');
61
+ // Set working directory inside the namespace
62
+ args.push('--chdir', opts.cwd);
63
+ args.push('/bin/sh', '-c', opts.command);
64
+ return args;
65
+ }
66
+ /**
67
+ * Resource limits for a confined command, one statement at a time: dash fails a single
68
+ * `ulimit` call carrying several flags, and spells the process cap `-p`, not `-u`.
69
+ * `-v` and `-t` stay unset; the shell port documents why.
70
+ */
71
+ export function buildLimitPrefix(limits = {}) {
72
+ const fileSizeBytes = limits.fileSizeBytes === undefined ? DEFAULT_FILE_SIZE_BYTES : limits.fileSizeBytes;
73
+ const processes = limits.processes === undefined ? DEFAULT_PROCESSES : limits.processes;
74
+ const statements = [];
75
+ if (fileSizeBytes !== null) {
76
+ statements.push(['file size', `ulimit -f ${Math.ceil(fileSizeBytes / FILE_SIZE_BLOCK_BYTES)}`]);
77
+ }
78
+ if (processes !== null) {
79
+ statements.push(['process count', `{ ulimit -u ${processes} 2>/dev/null || ulimit -p ${processes} 2>/dev/null; }`]);
80
+ }
81
+ return statements
82
+ .map(([name, attempt]) => `${attempt} || echo '${LIMIT_NOTICE_PREFIX} ${name}' >&2`)
83
+ .join('\n');
84
+ }
85
+ /** Every limit turned off leaves no prefix, and the command must not gain a blank first line. */
86
+ function prefixCommand(prefix, command) {
87
+ return prefix === '' ? command : `${prefix}\n${command}`;
88
+ }
89
+ /** Split the notices the prefix wrote from the command's own stderr. */
90
+ export function splitLimitNotices(stderr) {
91
+ const unavailable = [];
92
+ const lines = stderr.split('\n');
93
+ let index = 0;
94
+ while (index < lines.length && lines[index].startsWith(LIMIT_NOTICE_PREFIX)) {
95
+ unavailable.push(lines[index].slice(LIMIT_NOTICE_PREFIX.length).trim());
96
+ index++;
97
+ }
98
+ return { stderr: lines.slice(index).join('\n'), unavailable };
99
+ }
100
+ function reportUnavailableLimits(names, warn) {
101
+ for (const name of names) {
102
+ if (reportedLimits.has(name))
103
+ continue;
104
+ reportedLimits.add(name);
105
+ warn(`shell: this shell applies no ${name} limit; commands run without it`);
106
+ }
107
+ }
108
+ /** Host directory the bwrap process itself starts from; the namespace has its own cwd. */
109
+ function hostStartDir(options) {
110
+ const first = options.grants?.[0];
111
+ return first ? first.source ?? first.path : undefined;
112
+ }
113
+ function runCommand(processRunner, options, warn) {
114
+ // The grants are the confinement request: without them the command runs unconfined.
115
+ const confined = options.grants !== undefined;
116
+ const startTime = Date.now();
117
+ return new Promise((settleResult, failResult) => {
118
+ let stdout = '';
119
+ let stderr = '';
120
+ let timedOut = false;
121
+ let processClosed = false;
122
+ let processError;
123
+ let exitCode = null;
124
+ let exitSignal = null;
125
+ let stdinSettled = options.stdin === undefined;
126
+ let stdinError;
127
+ let settled = false;
128
+ const env = { ...getSafeEnv(), ...options.env };
129
+ let child;
130
+ if (confined) {
131
+ // The prefix runs in the command's own shell: wrap it in a subshell and it limits nothing.
132
+ const bwrapArgs = buildBwrapArgs({
133
+ command: prefixCommand(buildLimitPrefix(options.limits), options.command),
134
+ cwd: options.cwd,
135
+ grants: options.grants,
136
+ network: options.network,
137
+ });
138
+ child = processRunner.spawn('bwrap', bwrapArgs, {
139
+ cwd: hostStartDir(options),
140
+ env,
141
+ detached: true,
142
+ });
143
+ }
144
+ else {
145
+ const shell = options.shell ?? (process.platform === 'win32' ? 'cmd.exe' : '/bin/sh');
146
+ const shellFlag = process.platform === 'win32' ? '/c' : '-c';
147
+ child = processRunner.spawn(shell, [shellFlag, options.command], {
148
+ cwd: options.cwd,
149
+ env,
150
+ detached: true,
151
+ });
152
+ }
153
+ // Collect stdout with size cap
154
+ let stdoutBytes = 0;
155
+ let stdoutTruncated = false;
156
+ child.stdout?.on('data', (data) => {
157
+ if (stdoutTruncated)
158
+ return;
159
+ const remaining = MAX_OUTPUT_BYTES - stdoutBytes;
160
+ if (data.length > remaining) {
161
+ stdout += data.toString('utf-8', 0, remaining);
162
+ stdoutBytes = MAX_OUTPUT_BYTES;
163
+ stdoutTruncated = true;
164
+ stdout += '\n[stdout truncated at 1 MB]';
165
+ }
166
+ else {
167
+ stdout += data.toString();
168
+ stdoutBytes += data.length;
169
+ }
170
+ });
171
+ // Collect stderr with size cap
172
+ let stderrBytes = 0;
173
+ let stderrTruncated = false;
174
+ child.stderr?.on('data', (data) => {
175
+ if (stderrTruncated)
176
+ return;
177
+ const remaining = MAX_OUTPUT_BYTES - stderrBytes;
178
+ if (data.length > remaining) {
179
+ stderr += data.toString('utf-8', 0, remaining);
180
+ stderrBytes = MAX_OUTPUT_BYTES;
181
+ stderrTruncated = true;
182
+ stderr += '\n[stderr truncated at 1 MB]';
183
+ }
184
+ else {
185
+ stderr += data.toString();
186
+ stderrBytes += data.length;
187
+ }
188
+ });
189
+ // Timeout handler — SIGTERM first, then SIGKILL after grace period
190
+ let killTimeoutId;
191
+ const clearTimers = () => {
192
+ clearTimeout(timeoutId);
193
+ if (killTimeoutId)
194
+ clearTimeout(killTimeoutId);
195
+ };
196
+ const finishExecution = () => {
197
+ if (settled)
198
+ return;
199
+ if (!processClosed)
200
+ return;
201
+ const durationMs = Date.now() - startTime;
202
+ if (processError) {
203
+ settled = true;
204
+ clearTimers();
205
+ failResult(new ShellRunFailure(`Failed to execute command: ${processError.message}`, { durationMs }));
206
+ return;
207
+ }
208
+ if (!stdinSettled)
209
+ return;
210
+ settled = true;
211
+ clearTimers();
212
+ const notices = splitLimitNotices(stderr);
213
+ reportUnavailableLimits(notices.unavailable, warn);
214
+ const commandStderr = notices.stderr.trim();
215
+ if (stdinError) {
216
+ failResult(new ShellRunFailure(`Failed to deliver command stdin: ${stdinError.message}`, {
217
+ stdout: stdout.trim(),
218
+ stderr: commandStderr,
219
+ durationMs,
220
+ exitCode: exitCode ?? -1,
221
+ signal: exitSignal ?? undefined,
222
+ timedOut,
223
+ }));
224
+ return;
225
+ }
226
+ settleResult({
227
+ stdout: stdout.trim(),
228
+ stderr: commandStderr,
229
+ exitCode: exitCode ?? -1,
230
+ signal: exitSignal ?? undefined,
231
+ timedOut,
232
+ truncated: stdoutTruncated || stderrTruncated,
233
+ });
234
+ };
235
+ const timeoutId = setTimeout(() => {
236
+ timedOut = true;
237
+ try {
238
+ process.kill(-child.pid, 'SIGTERM');
239
+ }
240
+ catch {
241
+ child.kill('SIGTERM');
242
+ }
243
+ killTimeoutId = setTimeout(() => {
244
+ try {
245
+ process.kill(-child.pid, 'SIGKILL');
246
+ }
247
+ catch {
248
+ try {
249
+ child.kill('SIGKILL');
250
+ }
251
+ catch { /* already dead */ }
252
+ }
253
+ }, GRACEFUL_KILL_DELAY_MS);
254
+ }, options.timeoutMs);
255
+ // Process exit
256
+ child.on('close', (code, signal) => {
257
+ processClosed = true;
258
+ exitCode = code;
259
+ exitSignal = signal;
260
+ if (options.stdin !== undefined && !stdinSettled) {
261
+ if (child.stdin?.writableFinished) {
262
+ stdinSettled = true;
263
+ }
264
+ else {
265
+ stdinError = new Error('child process closed before accepting all stdin input');
266
+ stdinSettled = true;
267
+ }
268
+ }
269
+ finishExecution();
270
+ });
271
+ // Process error
272
+ child.on('error', (error) => {
273
+ processError = error;
274
+ finishExecution();
275
+ });
276
+ // A failed stdin write must not be hidden by a successful process exit.
277
+ if (options.stdin !== undefined) {
278
+ if (!child.stdin) {
279
+ stdinError = new Error('child process stdin is unavailable');
280
+ stdinSettled = true;
281
+ }
282
+ else {
283
+ child.stdin.once('finish', () => {
284
+ if (stdinSettled)
285
+ return;
286
+ stdinSettled = true;
287
+ finishExecution();
288
+ });
289
+ child.stdin.on('error', (error) => {
290
+ if (stdinSettled)
291
+ return;
292
+ stdinError = error;
293
+ stdinSettled = true;
294
+ finishExecution();
295
+ });
296
+ child.stdin.once('close', () => {
297
+ if (stdinSettled)
298
+ return;
299
+ stdinError = new Error('child process stdin closed before accepting all input');
300
+ stdinSettled = true;
301
+ finishExecution();
302
+ });
303
+ child.stdin.end(options.stdin);
304
+ }
305
+ }
306
+ else {
307
+ // Keep late pipe errors contained when no input delivery was requested.
308
+ child.stdin?.on('error', () => { });
309
+ child.stdin?.end();
310
+ }
311
+ finishExecution();
312
+ });
313
+ }
314
+ export function createBunShellRunner(processRunner = createBunProcessRunner(),
315
+ /** Where a limit this shell refused is reported; the command's own stderr never carries it. */
316
+ warn = (message) => console.warn(message)) {
317
+ return {
318
+ confinement: 'paths',
319
+ run: (options) => runCommand(processRunner, options, warn),
320
+ };
321
+ }
322
+ //# sourceMappingURL=shell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/bun-platform/shell.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -2,6 +2,7 @@
2
2
  * Configuration for the Agent Server
3
3
  */
4
4
  import type { MockInferenceHandler } from './core/llm/mock.js';
5
+ import type { ArchiveLimitOverrides } from './lib/archive/index.js';
5
6
  import type { LogLevel } from './lib/logger/logger.js';
6
7
  /**
7
8
  * Server configuration
@@ -20,6 +21,25 @@ export interface Config {
20
21
  llmLoggingEnabled?: boolean;
21
22
  /** Max concurrent vision LLM calls when classifying uploaded images. Default 10. */
22
23
  imageClassifierConcurrency?: number;
24
+ /**
25
+ * Hosts that `upload-from-url` and `inject-resource` may reach even though
26
+ * they land in a range the fetch guard blocks (loopback, RFC1918,
27
+ * link-local) — e.g. an internal object store. Absent blocks all of them.
28
+ *
29
+ * Entries are `host` or `host:port` (`[::1]` / `[::1]:9000` for IPv6). A
30
+ * bare host opens every port on it, so pin the port unless you mean that.
31
+ */
32
+ remoteFetchAllowedHosts?: readonly string[];
33
+ /** Aggregate limits across every ZIP nested in one attachment upload. */
34
+ uploadArchiveLimits?: ArchiveLimitOverrides;
35
+ /** Per-archive limits for resource ZIP injection. */
36
+ resourceArchiveLimits?: ArchiveLimitOverrides;
37
+ /**
38
+ * Resident session idle timeout. Zero or absent disables runtime eviction.
39
+ * `loadConfig()` leaves this unset unless SESSION_IDLE_TIMEOUT_MS is given —
40
+ * each runtime picks its own default (standalone-server uses 10 minutes).
41
+ */
42
+ sessionIdleTimeoutMs?: number;
23
43
  /**
24
44
  * Identity of the application embedding this SDK. Reported via `/status`
25
45
  * so platform health-checks can surface "what's actually running" in debug
@@ -49,4 +69,18 @@ export declare const loadConfig: () => Config;
49
69
  * Validate configuration and return errors if any.
50
70
  */
51
71
  export declare const validateConfig: (config: Config) => string[];
72
+ /** One parsed `remoteFetchAllowedHosts` entry. `port` absent means the host is open on every port. */
73
+ export interface AllowedHostEntry {
74
+ host: string;
75
+ port?: number;
76
+ }
77
+ /**
78
+ * Parse one `remoteFetchAllowedHosts` entry into the form the fetch guard matches.
79
+ *
80
+ * The guard compares against `URL.hostname`, so the entry is normalised the same
81
+ * way here — lowercased, IPv6 brackets dropped, trailing root dots stripped.
82
+ * Returns null for anything that could never match, which `validateConfig`
83
+ * reports rather than leaving as a silently dead entry.
84
+ */
85
+ export declare const parseAllowedHostEntry: (raw: string) => AllowedHostEntry | null;
52
86
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEtD;;GAEG;AACH,MAAM,WAAW,MAAM;IAEtB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IAGZ,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,GAAG,QAAQ,CAAA;IAI9B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,oBAAoB,CAAA;IAC9B,mFAAmF;IACnF,cAAc,CAAC,EAAE,MAAM,CAAA;IAGvB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAE3B,oFAAoF;IACpF,0BAA0B,CAAC,EAAE,MAAM,CAAA;IAEnC;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE;QACd,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,EAAE,MAAM,CAAA;KACf,CAAA;IAGD,QAAQ,EAAE,QAAQ,CAAA;IAClB,SAAS,EAAE,SAAS,GAAG,MAAM,CAAA;IAG7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IAGnB,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,QAAO,MAuB7B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,KAAG,MAAM,EA2BrD,CAAA"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AACnE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEtD;;GAEG;AACH,MAAM,WAAW,MAAM;IAEtB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IAGZ,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,GAAG,QAAQ,CAAA;IAI9B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,oBAAoB,CAAA;IAC9B,mFAAmF;IACnF,cAAc,CAAC,EAAE,MAAM,CAAA;IAGvB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAE3B,oFAAoF;IACpF,0BAA0B,CAAC,EAAE,MAAM,CAAA;IAEnC;;;;;;;OAOG;IACH,uBAAuB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAE3C,yEAAyE;IACzE,mBAAmB,CAAC,EAAE,qBAAqB,CAAA;IAC3C,qDAAqD;IACrD,qBAAqB,CAAC,EAAE,qBAAqB,CAAA;IAC7C;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAE7B;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE;QACd,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,EAAE,MAAM,CAAA;KACf,CAAA;IAGD,QAAQ,EAAE,QAAQ,CAAA;IAClB,SAAS,EAAE,SAAS,GAAG,MAAM,CAAA;IAG7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IAGnB,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,QAAO,MAiC7B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,KAAG,MAAM,EAwCrD,CAAA;AAED,sGAAsG;AACtG,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;CACb;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,GAAI,KAAK,MAAM,KAAG,gBAAgB,GAAG,IAoCtE,CAAA"}
package/dist/config.js CHANGED
@@ -6,6 +6,7 @@ import { resolve } from 'node:path';
6
6
  * Load configuration from environment variables.
7
7
  */
8
8
  export const loadConfig = () => {
9
+ const sessionIdleTimeout = process.env.SESSION_IDLE_TIMEOUT_MS;
9
10
  return {
10
11
  port: parseInt(process.env.PORT ?? '2486', 10),
11
12
  host: process.env.HOST ?? '0.0.0.0',
@@ -19,6 +20,15 @@ export const loadConfig = () => {
19
20
  imageClassifierConcurrency: process.env.IMAGE_CLASSIFIER_CONCURRENCY
20
21
  ? parseInt(process.env.IMAGE_CLASSIFIER_CONCURRENCY, 10)
21
22
  : undefined,
23
+ remoteFetchAllowedHosts: hostListFromEnv('REMOTE_FETCH_ALLOWED_HOSTS'),
24
+ uploadArchiveLimits: archiveLimitsFromEnv('UPLOAD_ARCHIVE'),
25
+ resourceArchiveLimits: archiveLimitsFromEnv('RESOURCE_ARCHIVE'),
26
+ // Left undefined when unset: loadConfig() is a public export, so baking a
27
+ // default here silently switches eviction on for every embedder that calls it
28
+ // (sandbox-runtime among them). Runtimes that want eviction opt in themselves.
29
+ sessionIdleTimeoutMs: sessionIdleTimeout === undefined
30
+ ? undefined
31
+ : sessionIdleTimeout.trim() === '' ? Number.NaN : Number(sessionIdleTimeout),
22
32
  logLevel: (process.env.LOG_LEVEL ?? 'info'),
23
33
  logFormat: (process.env.LOG_FORMAT ?? 'console'),
24
34
  workerUrl: process.env.WORKER_URL,
@@ -52,6 +62,93 @@ export const validateConfig = (config) => {
52
62
  if (!validPersistence.includes(config.persistence)) {
53
63
  errors.push(`Invalid persistence type: ${config.persistence}`);
54
64
  }
65
+ for (const host of config.remoteFetchAllowedHosts ?? []) {
66
+ // An entry the guard cannot parse silently never matches, leaving the fetch blocked.
67
+ if (parseAllowedHostEntry(host) === null) {
68
+ errors.push(`Invalid remoteFetchAllowedHosts entry: ${host}`);
69
+ }
70
+ }
71
+ validateArchiveLimitOverrides('uploadArchiveLimits', config.uploadArchiveLimits, errors);
72
+ validateArchiveLimitOverrides('resourceArchiveLimits', config.resourceArchiveLimits, errors);
73
+ if (config.sessionIdleTimeoutMs !== undefined && (!Number.isSafeInteger(config.sessionIdleTimeoutMs) || config.sessionIdleTimeoutMs < 0)) {
74
+ errors.push(`Invalid sessionIdleTimeoutMs: ${config.sessionIdleTimeoutMs}`);
75
+ }
55
76
  return errors;
56
77
  };
78
+ /**
79
+ * Parse one `remoteFetchAllowedHosts` entry into the form the fetch guard matches.
80
+ *
81
+ * The guard compares against `URL.hostname`, so the entry is normalised the same
82
+ * way here — lowercased, IPv6 brackets dropped, trailing root dots stripped.
83
+ * Returns null for anything that could never match, which `validateConfig`
84
+ * reports rather than leaving as a silently dead entry.
85
+ */
86
+ export const parseAllowedHostEntry = (raw) => {
87
+ const entry = raw.trim().toLowerCase();
88
+ if (entry === '' || /[\s/]/.test(entry))
89
+ return null;
90
+ const normalizeHostPart = (value) => {
91
+ const host = value.replace(/\.+$/, '');
92
+ return host === '' || host.includes('[') || host.includes(']') ? null : host;
93
+ };
94
+ const parsePort = (value) => {
95
+ if (!/^\d{1,5}$/.test(value))
96
+ return null;
97
+ const port = Number(value);
98
+ return port >= 1 && port <= 65535 ? port : null;
99
+ };
100
+ if (entry.startsWith('[')) {
101
+ const close = entry.indexOf(']');
102
+ if (close === -1)
103
+ return null;
104
+ const host = normalizeHostPart(entry.slice(1, close));
105
+ const rest = entry.slice(close + 1);
106
+ if (host === null)
107
+ return null;
108
+ if (rest === '')
109
+ return { host };
110
+ if (!rest.startsWith(':'))
111
+ return null;
112
+ const port = parsePort(rest.slice(1));
113
+ return port === null ? null : { host, port };
114
+ }
115
+ // An unbracketed IPv6 literal has several colons and carries no port.
116
+ const colon = entry.lastIndexOf(':');
117
+ if (colon !== -1 && entry.indexOf(':') === colon) {
118
+ const host = normalizeHostPart(entry.slice(0, colon));
119
+ const port = parsePort(entry.slice(colon + 1));
120
+ return host === null || port === null ? null : { host, port };
121
+ }
122
+ const host = normalizeHostPart(entry);
123
+ return host === null ? null : { host };
124
+ };
125
+ /** Split a comma-separated env var into entries, or undefined when it holds none. */
126
+ function hostListFromEnv(name) {
127
+ const raw = process.env[name];
128
+ if (raw === undefined)
129
+ return undefined;
130
+ const hosts = raw.split(',').map(entry => entry.trim()).filter(entry => entry !== '');
131
+ return hosts.length > 0 ? hosts : undefined;
132
+ }
133
+ function archiveLimitsFromEnv(prefix) {
134
+ const maxEntries = process.env[`${prefix}_MAX_ENTRIES`];
135
+ const maxTotalUncompressedSize = process.env[`${prefix}_MAX_UNCOMPRESSED_BYTES`];
136
+ if (maxEntries === undefined && maxTotalUncompressedSize === undefined)
137
+ return undefined;
138
+ return {
139
+ maxEntries: maxEntries === undefined ? undefined : parseInt(maxEntries, 10),
140
+ maxTotalUncompressedSize: maxTotalUncompressedSize === undefined
141
+ ? undefined
142
+ : parseInt(maxTotalUncompressedSize, 10),
143
+ };
144
+ }
145
+ function validateArchiveLimitOverrides(name, limits, errors) {
146
+ if (!limits)
147
+ return;
148
+ for (const [field, value] of Object.entries(limits)) {
149
+ if (value !== undefined && (!Number.isSafeInteger(value) || value < 0)) {
150
+ errors.push(`Invalid ${name}.${field}: ${value}`);
151
+ }
152
+ }
153
+ }
57
154
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,8 @@
8
8
  */
9
9
  import z from 'zod/v4';
10
10
  import { DebounceCallback } from '../../core/agents/debounce.js';
11
- import type { AgentId } from '../../core/agents/schema.js';
11
+ import { AgentId } from '../../core/agents/schema.js';
12
+ import { type AgentWakeKind } from '../../core/wake-key.js';
12
13
  import type { AgentState } from '../../core/agents/state.js';
13
14
  import type { FileStore } from '../../core/file-store/types.js';
14
15
  import { type CacheTtlConfig } from '../../core/llm/cache-breakpoints.js';
@@ -62,7 +63,7 @@ export interface AgentConfig<TInput = unknown> {
62
63
  */
63
64
  export interface AgentDependencies {
64
65
  id: AgentId;
65
- sessionContext: SessionContext;
66
+ getSessionContext: () => SessionContext;
66
67
  store: SessionStore;
67
68
  llmProvider: LLMProvider;
68
69
  /** Named provider instances, passed to InferenceContext for middleware routing */
@@ -96,7 +97,7 @@ export interface AgentDependencies {
96
97
  export declare class Agent {
97
98
  readonly id: AgentId;
98
99
  private readonly config;
99
- private readonly sessionContext;
100
+ private readonly getSessionContext;
100
101
  private readonly store;
101
102
  private readonly logger;
102
103
  private readonly llmProvider;
@@ -111,15 +112,25 @@ export declare class Agent {
111
112
  private readonly scheduleCallback?;
112
113
  /** Merged tools map: config tools + plugin tools (plugins override). Rebuilt each processing cycle. */
113
114
  private tools;
114
- private debounceTimer?;
115
- private errorRetryTimer?;
115
+ /** Poll timer for the debounceCallback path only — see scheduleProcessing(). */
116
+ private debounceCheckTimer?;
117
+ /** Whether a retry wake is armed. In-memory: a fresh process re-arms from replayed state. */
118
+ private errorRetryArmed;
119
+ private releaseScheduledLease?;
120
+ /** Host scheduler, resolved once — the platform never changes for a session. */
121
+ private scheduler?;
116
122
  private processing;
117
123
  private scheduled;
118
124
  private pendingReschedule;
125
+ /** In-flight continue() calls, so disposal can drain a turn instead of racing it. */
126
+ private readonly inFlightContinues;
119
127
  private readonly abortController;
120
- /** Track conversation turn number for handler context */
121
- private turnNumber;
122
128
  constructor(deps: AgentDependencies);
129
+ /**
130
+ * Turn the agent is working on: committed turns plus the one in flight.
131
+ * Read from persisted state so a reload or a compaction can't reset it.
132
+ */
133
+ private get turnNumber();
123
134
  /**
124
135
  * Get the current agent state from store.
125
136
  */
@@ -135,16 +146,32 @@ export declare class Agent {
135
146
  * mid-turn — abort controllers, debounce timers and mailbox state included.
136
147
  */
137
148
  private resolveModel;
149
+ /** Drop the scheduled lease. Idempotent — the release closure self-guards. */
150
+ private dropScheduledLease;
138
151
  /**
139
152
  * Unified processing entry point - decides what to do next.
140
153
  * Safe to call multiple times; skips if already processing.
141
154
  */
142
155
  continue(): Promise<void>;
156
+ /**
157
+ * Await the turn that is currently running, if any — including work it starts
158
+ * while draining. Never rejects: callers use it to drain before teardown, not
159
+ * to observe processing errors.
160
+ */
161
+ waitForIdle(): Promise<void>;
162
+ private runContinue;
143
163
  /**
144
164
  * Schedule processing with debounce.
145
165
  * Use this when receiving new messages or after tool execution.
146
166
  */
147
167
  scheduleProcessing(): void;
168
+ /**
169
+ * Run the continuation a due wake stands for — the one entry point for a host,
170
+ * whether this process armed the delay or an alarm held it across an eviction.
171
+ */
172
+ deliverWake(kind: AgentWakeKind): Promise<void>;
173
+ /** One debounce-callback check. Never rejects: on error it cancels the schedule. */
174
+ private runDebounceCheck;
148
175
  /**
149
176
  * Shutdown the agent - cancel any scheduled processing.
150
177
  */
@@ -203,6 +230,14 @@ export declare class Agent {
203
230
  * Cancel any scheduled processing.
204
231
  */
205
232
  private cancelSchedule;
233
+ /** The host scheduler, or null once the runtime is gone — a disposed session builds no context. */
234
+ private tryGetScheduler;
235
+ /**
236
+ * Arm a wake without awaiting the host: scheduleProcessing() and shutdown() are
237
+ * synchronous, while a host may persist the wake asynchronously.
238
+ */
239
+ private armWake;
240
+ private cancelWake;
206
241
  /**
207
242
  * Execute a single tool call.
208
243
  */