@roj-ai/sdk 0.1.36 → 0.2.2

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 (925) 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 +25 -13
  134. package/dist/index.d.ts.map +1 -1
  135. package/dist/index.js +23 -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/index.d.ts +1 -0
  233. package/dist/plugins/git-status/index.d.ts.map +1 -1
  234. package/dist/plugins/git-status/plugin.d.ts +38 -7
  235. package/dist/plugins/git-status/plugin.d.ts.map +1 -1
  236. package/dist/plugins/git-status/plugin.js +169 -64
  237. package/dist/plugins/git-status/plugin.js.map +1 -1
  238. package/dist/plugins/llm-debug/plugin.d.ts.map +1 -1
  239. package/dist/plugins/llm-debug/plugin.js +1 -0
  240. package/dist/plugins/llm-debug/plugin.js.map +1 -1
  241. package/dist/plugins/logs/plugin.d.ts +1 -4
  242. package/dist/plugins/logs/plugin.d.ts.map +1 -1
  243. package/dist/plugins/logs/plugin.js +7 -0
  244. package/dist/plugins/logs/plugin.js.map +1 -1
  245. package/dist/plugins/mailbox/helpers.d.ts +2 -2
  246. package/dist/plugins/mailbox/helpers.js +1 -1
  247. package/dist/plugins/mailbox/plugin.d.ts.map +1 -1
  248. package/dist/plugins/mailbox/plugin.js +38 -43
  249. package/dist/plugins/mailbox/plugin.js.map +1 -1
  250. package/dist/plugins/mailbox/query.d.ts +7 -2
  251. package/dist/plugins/mailbox/query.d.ts.map +1 -1
  252. package/dist/plugins/mailbox/query.js +14 -7
  253. package/dist/plugins/mailbox/query.js.map +1 -1
  254. package/dist/plugins/mailbox/state.d.ts +5 -4
  255. package/dist/plugins/mailbox/state.d.ts.map +1 -1
  256. package/dist/plugins/mailbox/state.js +6 -5
  257. package/dist/plugins/mailbox/state.js.map +1 -1
  258. package/dist/plugins/resources/filename.d.ts +4 -0
  259. package/dist/plugins/resources/filename.d.ts.map +1 -0
  260. package/dist/plugins/resources/filename.js +18 -0
  261. package/dist/plugins/resources/filename.js.map +1 -0
  262. package/dist/plugins/resources/plugin.d.ts +3 -0
  263. package/dist/plugins/resources/plugin.d.ts.map +1 -1
  264. package/dist/plugins/resources/plugin.js +97 -60
  265. package/dist/plugins/resources/plugin.js.map +1 -1
  266. package/dist/plugins/resources/state.d.ts +1 -1
  267. package/dist/plugins/resources/state.js +1 -1
  268. package/dist/plugins/result-eviction/plugin.d.ts.map +1 -1
  269. package/dist/plugins/result-eviction/plugin.js +6 -1
  270. package/dist/plugins/result-eviction/plugin.js.map +1 -1
  271. package/dist/plugins/services/plugin.d.ts +4 -1
  272. package/dist/plugins/services/plugin.d.ts.map +1 -1
  273. package/dist/plugins/services/plugin.js +251 -100
  274. package/dist/plugins/services/plugin.js.map +1 -1
  275. package/dist/plugins/services/prompt.d.ts.map +1 -1
  276. package/dist/plugins/services/prompt.js +1 -4
  277. package/dist/plugins/services/prompt.js.map +1 -1
  278. package/dist/plugins/services/schema.d.ts +15 -5
  279. package/dist/plugins/services/schema.d.ts.map +1 -1
  280. package/dist/plugins/services/service.d.ts +100 -18
  281. package/dist/plugins/services/service.d.ts.map +1 -1
  282. package/dist/plugins/services/service.js +680 -230
  283. package/dist/plugins/services/service.js.map +1 -1
  284. package/dist/plugins/session-lifecycle/plugin.d.ts +21 -1
  285. package/dist/plugins/session-lifecycle/plugin.d.ts.map +1 -1
  286. package/dist/plugins/session-lifecycle/plugin.js +53 -40
  287. package/dist/plugins/session-lifecycle/plugin.js.map +1 -1
  288. package/dist/plugins/session-state/plugin.d.ts +21 -13
  289. package/dist/plugins/session-state/plugin.d.ts.map +1 -1
  290. package/dist/plugins/session-state/plugin.js +214 -79
  291. package/dist/plugins/session-state/plugin.js.map +1 -1
  292. package/dist/plugins/session-stats/plugin.d.ts.map +1 -1
  293. package/dist/plugins/session-stats/plugin.js +1 -0
  294. package/dist/plugins/session-stats/plugin.js.map +1 -1
  295. package/dist/plugins/shell/executor.d.ts +17 -15
  296. package/dist/plugins/shell/executor.d.ts.map +1 -1
  297. package/dist/plugins/shell/executor.js +130 -195
  298. package/dist/plugins/shell/executor.js.map +1 -1
  299. package/dist/plugins/shell/index.d.ts +2 -2
  300. package/dist/plugins/shell/index.d.ts.map +1 -1
  301. package/dist/plugins/shell/index.js +2 -2
  302. package/dist/plugins/shell/index.js.map +1 -1
  303. package/dist/plugins/shell/plugin.d.ts +5 -4
  304. package/dist/plugins/shell/plugin.d.ts.map +1 -1
  305. package/dist/plugins/shell/plugin.js +4 -8
  306. package/dist/plugins/shell/plugin.js.map +1 -1
  307. package/dist/plugins/skills/discovery.d.ts.map +1 -1
  308. package/dist/plugins/skills/discovery.js +10 -8
  309. package/dist/plugins/skills/discovery.js.map +1 -1
  310. package/dist/plugins/skills/index.d.ts +1 -1
  311. package/dist/plugins/skills/index.d.ts.map +1 -1
  312. package/dist/plugins/skills/plugin.d.ts +1 -1
  313. package/dist/plugins/skills/plugin.d.ts.map +1 -1
  314. package/dist/plugins/skills/plugin.js +23 -30
  315. package/dist/plugins/skills/plugin.js.map +1 -1
  316. package/dist/plugins/skills/prompts.d.ts +3 -3
  317. package/dist/plugins/skills/prompts.d.ts.map +1 -1
  318. package/dist/plugins/skills/prompts.js.map +1 -1
  319. package/dist/plugins/skills/schema.d.ts +4 -2
  320. package/dist/plugins/skills/schema.d.ts.map +1 -1
  321. package/dist/plugins/todo/schema.d.ts +1 -1
  322. package/dist/plugins/uploads/plugin.d.ts +11 -4
  323. package/dist/plugins/uploads/plugin.d.ts.map +1 -1
  324. package/dist/plugins/uploads/plugin.js +891 -225
  325. package/dist/plugins/uploads/plugin.js.map +1 -1
  326. package/dist/plugins/uploads/preprocessor.d.ts +14 -0
  327. package/dist/plugins/uploads/preprocessor.d.ts.map +1 -1
  328. package/dist/plugins/uploads/preprocessor.js +11 -0
  329. package/dist/plugins/uploads/preprocessor.js.map +1 -1
  330. package/dist/plugins/uploads/preprocessors/image-classifier.d.ts +1 -1
  331. package/dist/plugins/uploads/preprocessors/image-classifier.d.ts.map +1 -1
  332. package/dist/plugins/uploads/preprocessors/image-classifier.js +51 -26
  333. package/dist/plugins/uploads/preprocessors/image-classifier.js.map +1 -1
  334. package/dist/plugins/uploads/preprocessors/markitdown-preprocessor.d.ts +2 -2
  335. package/dist/plugins/uploads/preprocessors/markitdown-preprocessor.d.ts.map +1 -1
  336. package/dist/plugins/uploads/preprocessors/markitdown-preprocessor.js +41 -16
  337. package/dist/plugins/uploads/preprocessors/markitdown-preprocessor.js.map +1 -1
  338. package/dist/plugins/uploads/preprocessors/pdf-preprocessor.d.ts +1 -1
  339. package/dist/plugins/uploads/preprocessors/pdf-preprocessor.d.ts.map +1 -1
  340. package/dist/plugins/uploads/preprocessors/pdf-preprocessor.js +29 -14
  341. package/dist/plugins/uploads/preprocessors/pdf-preprocessor.js.map +1 -1
  342. package/dist/plugins/uploads/preprocessors/zip-preprocessor.d.ts +1 -1
  343. package/dist/plugins/uploads/preprocessors/zip-preprocessor.d.ts.map +1 -1
  344. package/dist/plugins/uploads/preprocessors/zip-preprocessor.js +62 -34
  345. package/dist/plugins/uploads/preprocessors/zip-preprocessor.js.map +1 -1
  346. package/dist/plugins/uploads/schema.d.ts +25 -2
  347. package/dist/plugins/uploads/schema.d.ts.map +1 -1
  348. package/dist/plugins/uploads/schema.js +24 -3
  349. package/dist/plugins/uploads/schema.js.map +1 -1
  350. package/dist/plugins/uploads/state.d.ts +13 -1
  351. package/dist/plugins/uploads/state.d.ts.map +1 -1
  352. package/dist/plugins/uploads/state.js +4 -1
  353. package/dist/plugins/uploads/state.js.map +1 -1
  354. package/dist/plugins/user-chat/plugin.d.ts +12 -5
  355. package/dist/plugins/user-chat/plugin.d.ts.map +1 -1
  356. package/dist/plugins/user-chat/plugin.js +141 -32
  357. package/dist/plugins/user-chat/plugin.js.map +1 -1
  358. package/dist/plugins/workers/context.d.ts +35 -13
  359. package/dist/plugins/workers/context.d.ts.map +1 -1
  360. package/dist/plugins/workers/context.js +82 -32
  361. package/dist/plugins/workers/context.js.map +1 -1
  362. package/dist/plugins/workers/definition.d.ts +7 -0
  363. package/dist/plugins/workers/definition.d.ts.map +1 -1
  364. package/dist/plugins/workers/definition.js.map +1 -1
  365. package/dist/plugins/workers/index.d.ts +4 -4
  366. package/dist/plugins/workers/index.d.ts.map +1 -1
  367. package/dist/plugins/workers/index.js +2 -2
  368. package/dist/plugins/workers/index.js.map +1 -1
  369. package/dist/plugins/workers/plugin.d.ts +10 -57
  370. package/dist/plugins/workers/plugin.d.ts.map +1 -1
  371. package/dist/plugins/workers/plugin.js +385 -123
  372. package/dist/plugins/workers/plugin.js.map +1 -1
  373. package/dist/plugins/workers/state.d.ts +69 -0
  374. package/dist/plugins/workers/state.d.ts.map +1 -0
  375. package/dist/plugins/workers/state.js +52 -0
  376. package/dist/plugins/workers/state.js.map +1 -0
  377. package/dist/plugins/workers/worker.d.ts +15 -4
  378. package/dist/plugins/workers/worker.d.ts.map +1 -1
  379. package/dist/testing/conformance.d.ts +106 -0
  380. package/dist/testing/conformance.d.ts.map +1 -0
  381. package/dist/testing/conformance.js +1463 -0
  382. package/dist/testing/conformance.js.map +1 -0
  383. package/dist/testing/node-platform.d.ts.map +1 -1
  384. package/dist/testing/node-platform.js +5 -0
  385. package/dist/testing/node-platform.js.map +1 -1
  386. package/dist/testing/test-harness.d.ts +11 -1
  387. package/dist/testing/test-harness.d.ts.map +1 -1
  388. package/dist/testing/test-harness.js +17 -37
  389. package/dist/testing/test-harness.js.map +1 -1
  390. package/dist/testing/wait-helpers.d.ts.map +1 -1
  391. package/dist/testing/wait-helpers.js +1 -3
  392. package/dist/testing/wait-helpers.js.map +1 -1
  393. package/dist/transport/adapter/client-adapter.d.ts +6 -0
  394. package/dist/transport/adapter/client-adapter.d.ts.map +1 -1
  395. package/dist/transport/adapter/client-adapter.js +50 -3
  396. package/dist/transport/adapter/client-adapter.js.map +1 -1
  397. package/dist/transport/adapter/heartbeat.d.ts +16 -0
  398. package/dist/transport/adapter/heartbeat.d.ts.map +1 -0
  399. package/dist/transport/adapter/heartbeat.js +41 -0
  400. package/dist/transport/adapter/heartbeat.js.map +1 -0
  401. package/dist/transport/adapter/server-adapter.d.ts.map +1 -1
  402. package/dist/transport/adapter/server-adapter.js +6 -0
  403. package/dist/transport/adapter/server-adapter.js.map +1 -1
  404. package/dist/transport/http/app.d.ts +3 -30
  405. package/dist/transport/http/app.d.ts.map +1 -1
  406. package/dist/transport/http/app.js +3 -7
  407. package/dist/transport/http/app.js.map +1 -1
  408. package/dist/transport/http/context.d.ts +40 -0
  409. package/dist/transport/http/context.d.ts.map +1 -0
  410. package/dist/transport/http/context.js +17 -0
  411. package/dist/transport/http/context.js.map +1 -0
  412. package/dist/transport/http/fetch-guard.d.ts +49 -0
  413. package/dist/transport/http/fetch-guard.d.ts.map +1 -0
  414. package/dist/transport/http/fetch-guard.js +312 -0
  415. package/dist/transport/http/fetch-guard.js.map +1 -0
  416. package/dist/transport/http/index.d.ts +1 -1
  417. package/dist/transport/http/index.d.ts.map +1 -1
  418. package/dist/transport/http/middleware/bearer-auth.d.ts +1 -1
  419. package/dist/transport/http/middleware/bearer-auth.d.ts.map +1 -1
  420. package/dist/transport/http/middleware/error-handler.d.ts +2 -2
  421. package/dist/transport/http/middleware/error-handler.d.ts.map +1 -1
  422. package/dist/transport/http/path-containment.d.ts +20 -0
  423. package/dist/transport/http/path-containment.d.ts.map +1 -0
  424. package/dist/transport/http/path-containment.js +31 -0
  425. package/dist/transport/http/path-containment.js.map +1 -0
  426. package/dist/transport/http/responses.d.ts +30 -0
  427. package/dist/transport/http/responses.d.ts.map +1 -0
  428. package/dist/transport/http/responses.js +5 -0
  429. package/dist/transport/http/responses.js.map +1 -0
  430. package/dist/transport/http/routes/files.d.ts +1 -1
  431. package/dist/transport/http/routes/files.d.ts.map +1 -1
  432. package/dist/transport/http/routes/files.js +54 -155
  433. package/dist/transport/http/routes/files.js.map +1 -1
  434. package/dist/transport/http/routes/resources.d.ts +1 -1
  435. package/dist/transport/http/routes/resources.d.ts.map +1 -1
  436. package/dist/transport/http/routes/resources.js +92 -57
  437. package/dist/transport/http/routes/resources.js.map +1 -1
  438. package/dist/transport/http/routes/rpc.d.ts +6 -1
  439. package/dist/transport/http/routes/rpc.d.ts.map +1 -1
  440. package/dist/transport/http/routes/rpc.js +51 -21
  441. package/dist/transport/http/routes/rpc.js.map +1 -1
  442. package/dist/transport/http/routes/upload.d.ts +1 -1
  443. package/dist/transport/http/routes/upload.d.ts.map +1 -1
  444. package/dist/transport/http/routes/upload.js +256 -169
  445. package/dist/transport/http/routes/upload.js.map +1 -1
  446. package/dist/user-config.d.ts +34 -7
  447. package/dist/user-config.d.ts.map +1 -1
  448. package/dist/user-config.js +71 -0
  449. package/dist/user-config.js.map +1 -1
  450. package/package.json +17 -7
  451. package/src/bootstrap.ts +119 -35
  452. package/src/bun-platform/fs.ts +1 -0
  453. package/src/bun-platform/index.ts +18 -1
  454. package/src/bun-platform/server-lifecycle.ts +218 -0
  455. package/src/bun-platform/shell.ts +362 -0
  456. package/src/config.ts +130 -0
  457. package/src/core/agents/agent.ts +210 -92
  458. package/src/core/agents/config.ts +8 -0
  459. package/src/core/agents/retry.ts +16 -17
  460. package/src/core/agents/state.ts +2 -0
  461. package/src/core/events/base-event-store.ts +24 -16
  462. package/src/core/events/file.ts +198 -22
  463. package/src/core/file-store/containment.ts +75 -0
  464. package/src/core/file-store/file-store.ts +106 -25
  465. package/src/core/file-store/types.ts +14 -1
  466. package/src/core/image/image-processor.ts +3 -1
  467. package/src/core/image/types.ts +2 -0
  468. package/src/core/image/vips-resizer.ts +102 -37
  469. package/src/core/llm/anthropic.ts +63 -79
  470. package/src/core/llm/logger.ts +175 -37
  471. package/src/core/llm/openrouter.ts +57 -72
  472. package/src/core/llm/provider-request.ts +40 -0
  473. package/src/core/llm/provider.ts +28 -0
  474. package/src/core/plugins/plugin-builder.ts +106 -14
  475. package/src/core/preset/preset-builder.ts +12 -22
  476. package/src/core/sessions/context.ts +18 -0
  477. package/src/core/sessions/runtime-activity.ts +78 -0
  478. package/src/core/sessions/schema.ts +29 -3
  479. package/src/core/sessions/session-manager.ts +560 -140
  480. package/src/core/sessions/session-store.ts +38 -0
  481. package/src/core/sessions/session.ts +187 -47
  482. package/src/core/sessions/state.ts +11 -0
  483. package/src/core/system.ts +15 -0
  484. package/src/core/wake-key.ts +65 -0
  485. package/src/index.ts +32 -12
  486. package/src/lib/archive/archive-inspection.fixtures.ts +138 -0
  487. package/src/lib/archive/archive-inspection.ts +359 -0
  488. package/src/lib/archive/index.ts +17 -0
  489. package/src/lib/logger/console.ts +7 -57
  490. package/src/lib/logger/file.ts +28 -50
  491. package/src/lib/logger/index.ts +3 -1
  492. package/src/lib/logger/jsonl.ts +36 -0
  493. package/src/lib/logger/logger.ts +48 -0
  494. package/src/lib/logger/session-log.ts +42 -0
  495. package/src/lib/utils/concurrency.ts +37 -8
  496. package/src/lib/utils/fs-batch.ts +49 -0
  497. package/src/lib/utils/result.ts +7 -31
  498. package/src/lib/utils/sleep.ts +23 -0
  499. package/src/platform/fs-revision.ts +21 -0
  500. package/src/platform/fs.ts +109 -1
  501. package/src/platform/git.ts +67 -0
  502. package/src/platform/index.ts +51 -1
  503. package/src/platform/llm-call-log.ts +86 -0
  504. package/src/platform/scheduler.ts +71 -0
  505. package/src/platform/session-log.ts +39 -0
  506. package/src/platform/shell.ts +89 -0
  507. package/src/plugins/agent-status/plugin.ts +1 -0
  508. package/src/plugins/agents/plugin.ts +134 -81
  509. package/src/plugins/filesystem/listing.ts +70 -12
  510. package/src/plugins/filesystem/plugin.ts +8 -6
  511. package/src/plugins/git-status/index.ts +1 -0
  512. package/src/plugins/git-status/plugin.ts +211 -77
  513. package/src/plugins/llm-debug/plugin.ts +1 -0
  514. package/src/plugins/logs/plugin.ts +9 -0
  515. package/src/plugins/mailbox/plugin.ts +46 -64
  516. package/src/plugins/mailbox/query.ts +15 -7
  517. package/src/plugins/mailbox/state.ts +1 -0
  518. package/src/plugins/resources/filename.ts +19 -0
  519. package/src/plugins/resources/plugin.ts +111 -59
  520. package/src/plugins/result-eviction/plugin.ts +6 -1
  521. package/src/plugins/services/plugin.ts +254 -98
  522. package/src/plugins/services/prompt.ts +1 -6
  523. package/src/plugins/services/schema.ts +17 -3
  524. package/src/plugins/services/service.ts +702 -252
  525. package/src/plugins/session-lifecycle/plugin.ts +56 -41
  526. package/src/plugins/session-state/plugin.ts +242 -88
  527. package/src/plugins/session-stats/plugin.ts +1 -0
  528. package/src/plugins/shell/executor.ts +144 -226
  529. package/src/plugins/shell/index.ts +1 -4
  530. package/src/plugins/shell/plugin.ts +7 -9
  531. package/src/plugins/skills/discovery.ts +10 -8
  532. package/src/plugins/skills/index.ts +1 -1
  533. package/src/plugins/skills/plugin.ts +19 -27
  534. package/src/plugins/skills/prompts.ts +3 -3
  535. package/src/plugins/skills/schema.ts +5 -2
  536. package/src/plugins/uploads/plugin.ts +991 -273
  537. package/src/plugins/uploads/preprocessor.ts +25 -0
  538. package/src/plugins/uploads/preprocessors/image-classifier.ts +56 -25
  539. package/src/plugins/uploads/preprocessors/markitdown-preprocessor.ts +41 -15
  540. package/src/plugins/uploads/preprocessors/pdf-preprocessor.ts +32 -16
  541. package/src/plugins/uploads/preprocessors/zip-preprocessor.ts +67 -38
  542. package/src/plugins/uploads/schema.ts +30 -3
  543. package/src/plugins/uploads/state.ts +12 -0
  544. package/src/plugins/user-chat/plugin.ts +196 -40
  545. package/src/plugins/workers/context.ts +102 -39
  546. package/src/plugins/workers/definition.ts +7 -0
  547. package/src/plugins/workers/index.ts +4 -4
  548. package/src/plugins/workers/plugin.ts +461 -151
  549. package/src/plugins/workers/state.ts +64 -0
  550. package/src/plugins/workers/worker.ts +15 -4
  551. package/src/testing/conformance.ts +1751 -0
  552. package/src/testing/node-platform.ts +5 -0
  553. package/src/testing/test-harness.ts +21 -38
  554. package/src/testing/wait-helpers.ts +1 -4
  555. package/src/transport/adapter/client-adapter.ts +60 -3
  556. package/src/transport/adapter/heartbeat.ts +50 -0
  557. package/src/transport/adapter/server-adapter.ts +6 -0
  558. package/src/transport/http/app.ts +7 -35
  559. package/src/transport/http/context.ts +46 -0
  560. package/src/transport/http/fetch-guard.ts +318 -0
  561. package/src/transport/http/index.ts +1 -1
  562. package/src/transport/http/middleware/bearer-auth.ts +1 -1
  563. package/src/transport/http/middleware/error-handler.ts +1 -1
  564. package/src/transport/http/path-containment.ts +44 -0
  565. package/src/transport/http/responses.ts +20 -0
  566. package/src/transport/http/routes/files.ts +69 -159
  567. package/src/transport/http/routes/resources.ts +124 -93
  568. package/src/transport/http/routes/rpc.ts +63 -26
  569. package/src/transport/http/routes/upload.ts +327 -258
  570. package/src/user-config.ts +93 -7
  571. package/dist/config.test.d.ts +0 -2
  572. package/dist/config.test.d.ts.map +0 -1
  573. package/dist/config.test.js +0 -155
  574. package/dist/config.test.js.map +0 -1
  575. package/dist/core/agent-loop.integration.test.d.ts +0 -2
  576. package/dist/core/agent-loop.integration.test.d.ts.map +0 -1
  577. package/dist/core/agent-loop.integration.test.js +0 -414
  578. package/dist/core/agent-loop.integration.test.js.map +0 -1
  579. package/dist/core/agents/agent-config.test.d.ts +0 -2
  580. package/dist/core/agents/agent-config.test.d.ts.map +0 -1
  581. package/dist/core/agents/agent-config.test.js +0 -194
  582. package/dist/core/agents/agent-config.test.js.map +0 -1
  583. package/dist/core/agents/agent-shutdown.test.d.ts +0 -6
  584. package/dist/core/agents/agent-shutdown.test.d.ts.map +0 -1
  585. package/dist/core/agents/agent-shutdown.test.js +0 -180
  586. package/dist/core/agents/agent-shutdown.test.js.map +0 -1
  587. package/dist/core/agents/agent.test.d.ts +0 -2
  588. package/dist/core/agents/agent.test.d.ts.map +0 -1
  589. package/dist/core/agents/agent.test.js +0 -313
  590. package/dist/core/agents/agent.test.js.map +0 -1
  591. package/dist/core/agents/communicator.d.ts +0 -3
  592. package/dist/core/agents/communicator.d.ts.map +0 -1
  593. package/dist/core/agents/communicator.js +0 -13
  594. package/dist/core/agents/communicator.js.map +0 -1
  595. package/dist/core/agents/handler-events.test.d.ts +0 -5
  596. package/dist/core/agents/handler-events.test.d.ts.map +0 -1
  597. package/dist/core/agents/handler-events.test.js +0 -115
  598. package/dist/core/agents/handler-events.test.js.map +0 -1
  599. package/dist/core/agents/response-sanitizer.test.d.ts +0 -2
  600. package/dist/core/agents/response-sanitizer.test.d.ts.map +0 -1
  601. package/dist/core/agents/response-sanitizer.test.js +0 -101
  602. package/dist/core/agents/response-sanitizer.test.js.map +0 -1
  603. package/dist/core/error-recovery.integration.test.d.ts +0 -2
  604. package/dist/core/error-recovery.integration.test.d.ts.map +0 -1
  605. package/dist/core/error-recovery.integration.test.js +0 -288
  606. package/dist/core/error-recovery.integration.test.js.map +0 -1
  607. package/dist/core/event-sourcing.integration.test.d.ts +0 -2
  608. package/dist/core/event-sourcing.integration.test.d.ts.map +0 -1
  609. package/dist/core/event-sourcing.integration.test.js +0 -154
  610. package/dist/core/event-sourcing.integration.test.js.map +0 -1
  611. package/dist/core/events/file.test.d.ts +0 -2
  612. package/dist/core/events/file.test.d.ts.map +0 -1
  613. package/dist/core/events/file.test.js +0 -284
  614. package/dist/core/events/file.test.js.map +0 -1
  615. package/dist/core/events/memory.test.d.ts +0 -2
  616. package/dist/core/events/memory.test.d.ts.map +0 -1
  617. package/dist/core/events/memory.test.js +0 -502
  618. package/dist/core/events/memory.test.js.map +0 -1
  619. package/dist/core/image/image-processor.test.d.ts +0 -2
  620. package/dist/core/image/image-processor.test.d.ts.map +0 -1
  621. package/dist/core/image/image-processor.test.js +0 -171
  622. package/dist/core/image/image-processor.test.js.map +0 -1
  623. package/dist/core/image/vips-resizer.test.d.ts +0 -2
  624. package/dist/core/image/vips-resizer.test.d.ts.map +0 -1
  625. package/dist/core/image/vips-resizer.test.js +0 -336
  626. package/dist/core/image/vips-resizer.test.js.map +0 -1
  627. package/dist/core/llm/anthropic.test.d.ts +0 -2
  628. package/dist/core/llm/anthropic.test.d.ts.map +0 -1
  629. package/dist/core/llm/anthropic.test.js +0 -464
  630. package/dist/core/llm/anthropic.test.js.map +0 -1
  631. package/dist/core/llm/cache-breakpoints.test.d.ts +0 -2
  632. package/dist/core/llm/cache-breakpoints.test.d.ts.map +0 -1
  633. package/dist/core/llm/cache-breakpoints.test.js +0 -69
  634. package/dist/core/llm/cache-breakpoints.test.js.map +0 -1
  635. package/dist/core/llm/cache-live.test.d.ts +0 -16
  636. package/dist/core/llm/cache-live.test.d.ts.map +0 -1
  637. package/dist/core/llm/cache-live.test.js +0 -137
  638. package/dist/core/llm/cache-live.test.js.map +0 -1
  639. package/dist/core/llm/logger.test.d.ts +0 -7
  640. package/dist/core/llm/logger.test.d.ts.map +0 -1
  641. package/dist/core/llm/logger.test.js +0 -228
  642. package/dist/core/llm/logger.test.js.map +0 -1
  643. package/dist/core/llm/message-sanitization.test.d.ts +0 -2
  644. package/dist/core/llm/message-sanitization.test.d.ts.map +0 -1
  645. package/dist/core/llm/message-sanitization.test.js +0 -181
  646. package/dist/core/llm/message-sanitization.test.js.map +0 -1
  647. package/dist/core/llm/mock.test.d.ts +0 -2
  648. package/dist/core/llm/mock.test.d.ts.map +0 -1
  649. package/dist/core/llm/mock.test.js +0 -318
  650. package/dist/core/llm/mock.test.js.map +0 -1
  651. package/dist/core/llm/model-shortlist-live.test.d.ts +0 -35
  652. package/dist/core/llm/model-shortlist-live.test.d.ts.map +0 -1
  653. package/dist/core/llm/model-shortlist-live.test.js +0 -452
  654. package/dist/core/llm/model-shortlist-live.test.js.map +0 -1
  655. package/dist/core/llm/openrouter-mapping.test.d.ts +0 -2
  656. package/dist/core/llm/openrouter-mapping.test.d.ts.map +0 -1
  657. package/dist/core/llm/openrouter-mapping.test.js +0 -190
  658. package/dist/core/llm/openrouter-mapping.test.js.map +0 -1
  659. package/dist/core/llm/openrouter.test.d.ts +0 -2
  660. package/dist/core/llm/openrouter.test.d.ts.map +0 -1
  661. package/dist/core/llm/openrouter.test.js +0 -377
  662. package/dist/core/llm/openrouter.test.js.map +0 -1
  663. package/dist/core/llm/provider-integration.test.d.ts +0 -12
  664. package/dist/core/llm/provider-integration.test.d.ts.map +0 -1
  665. package/dist/core/llm/provider-integration.test.js +0 -350
  666. package/dist/core/llm/provider-integration.test.js.map +0 -1
  667. package/dist/core/llm/reasoning-details.test.d.ts +0 -2
  668. package/dist/core/llm/reasoning-details.test.d.ts.map +0 -1
  669. package/dist/core/llm/reasoning-details.test.js +0 -144
  670. package/dist/core/llm/reasoning-details.test.js.map +0 -1
  671. package/dist/core/llm/routing-provider.test.d.ts +0 -2
  672. package/dist/core/llm/routing-provider.test.d.ts.map +0 -1
  673. package/dist/core/llm/routing-provider.test.js +0 -94
  674. package/dist/core/llm/routing-provider.test.js.map +0 -1
  675. package/dist/core/llm/snapshot-middleware.test.d.ts +0 -2
  676. package/dist/core/llm/snapshot-middleware.test.d.ts.map +0 -1
  677. package/dist/core/llm/snapshot-middleware.test.js +0 -144
  678. package/dist/core/llm/snapshot-middleware.test.js.map +0 -1
  679. package/dist/core/llm/thinking-blocks.test.d.ts +0 -2
  680. package/dist/core/llm/thinking-blocks.test.d.ts.map +0 -1
  681. package/dist/core/llm/thinking-blocks.test.js +0 -291
  682. package/dist/core/llm/thinking-blocks.test.js.map +0 -1
  683. package/dist/core/multi-agent.integration.test.d.ts +0 -2
  684. package/dist/core/multi-agent.integration.test.d.ts.map +0 -1
  685. package/dist/core/multi-agent.integration.test.js +0 -298
  686. package/dist/core/multi-agent.integration.test.js.map +0 -1
  687. package/dist/core/plugin-hooks.integration.test.d.ts +0 -2
  688. package/dist/core/plugin-hooks.integration.test.d.ts.map +0 -1
  689. package/dist/core/plugin-hooks.integration.test.js +0 -458
  690. package/dist/core/plugin-hooks.integration.test.js.map +0 -1
  691. package/dist/core/reasoning-round-trip.integration.test.d.ts +0 -2
  692. package/dist/core/reasoning-round-trip.integration.test.d.ts.map +0 -1
  693. package/dist/core/reasoning-round-trip.integration.test.js +0 -150
  694. package/dist/core/reasoning-round-trip.integration.test.js.map +0 -1
  695. package/dist/core/session-lifecycle.integration.test.d.ts +0 -2
  696. package/dist/core/session-lifecycle.integration.test.d.ts.map +0 -1
  697. package/dist/core/session-lifecycle.integration.test.js +0 -159
  698. package/dist/core/session-lifecycle.integration.test.js.map +0 -1
  699. package/dist/core/sessions/fork-utils.test.d.ts +0 -2
  700. package/dist/core/sessions/fork-utils.test.d.ts.map +0 -1
  701. package/dist/core/sessions/fork-utils.test.js +0 -129
  702. package/dist/core/sessions/fork-utils.test.js.map +0 -1
  703. package/dist/core/sessions/session-overrides.integration.test.d.ts +0 -2
  704. package/dist/core/sessions/session-overrides.integration.test.d.ts.map +0 -1
  705. package/dist/core/sessions/session-overrides.integration.test.js +0 -154
  706. package/dist/core/sessions/session-overrides.integration.test.js.map +0 -1
  707. package/dist/core/sessions/session.test.d.ts +0 -2
  708. package/dist/core/sessions/session.test.d.ts.map +0 -1
  709. package/dist/core/sessions/session.test.js +0 -1100
  710. package/dist/core/sessions/session.test.js.map +0 -1
  711. package/dist/core/tools/executor.test.d.ts +0 -2
  712. package/dist/core/tools/executor.test.d.ts.map +0 -1
  713. package/dist/core/tools/executor.test.js +0 -144
  714. package/dist/core/tools/executor.test.js.map +0 -1
  715. package/dist/lib/logger/console.test.d.ts +0 -2
  716. package/dist/lib/logger/console.test.d.ts.map +0 -1
  717. package/dist/lib/logger/console.test.js +0 -258
  718. package/dist/lib/logger/console.test.js.map +0 -1
  719. package/dist/lib/never.d.ts +0 -2
  720. package/dist/lib/never.d.ts.map +0 -1
  721. package/dist/lib/never.js +0 -4
  722. package/dist/lib/never.js.map +0 -1
  723. package/dist/lib/utils/concurrency.test.d.ts +0 -2
  724. package/dist/lib/utils/concurrency.test.d.ts.map +0 -1
  725. package/dist/lib/utils/concurrency.test.js +0 -135
  726. package/dist/lib/utils/concurrency.test.js.map +0 -1
  727. package/dist/plugins/agent-status/agent-status.test.d.ts +0 -2
  728. package/dist/plugins/agent-status/agent-status.test.d.ts.map +0 -1
  729. package/dist/plugins/agent-status/agent-status.test.js +0 -136
  730. package/dist/plugins/agent-status/agent-status.test.js.map +0 -1
  731. package/dist/plugins/agents/agents.integration.test.d.ts +0 -2
  732. package/dist/plugins/agents/agents.integration.test.d.ts.map +0 -1
  733. package/dist/plugins/agents/agents.integration.test.js +0 -830
  734. package/dist/plugins/agents/agents.integration.test.js.map +0 -1
  735. package/dist/plugins/agents/supervision.integration.test.d.ts +0 -2
  736. package/dist/plugins/agents/supervision.integration.test.d.ts.map +0 -1
  737. package/dist/plugins/agents/supervision.integration.test.js +0 -215
  738. package/dist/plugins/agents/supervision.integration.test.js.map +0 -1
  739. package/dist/plugins/context-compact/compaction-live.test.d.ts +0 -17
  740. package/dist/plugins/context-compact/compaction-live.test.d.ts.map +0 -1
  741. package/dist/plugins/context-compact/compaction-live.test.js +0 -177
  742. package/dist/plugins/context-compact/compaction-live.test.js.map +0 -1
  743. package/dist/plugins/context-compact/context-compact.integration.test.d.ts +0 -2
  744. package/dist/plugins/context-compact/context-compact.integration.test.d.ts.map +0 -1
  745. package/dist/plugins/context-compact/context-compact.integration.test.js +0 -364
  746. package/dist/plugins/context-compact/context-compact.integration.test.js.map +0 -1
  747. package/dist/plugins/context-compact/context-compactor.test.d.ts +0 -2
  748. package/dist/plugins/context-compact/context-compactor.test.d.ts.map +0 -1
  749. package/dist/plugins/context-compact/context-compactor.test.js +0 -858
  750. package/dist/plugins/context-compact/context-compactor.test.js.map +0 -1
  751. package/dist/plugins/context-compact/history-offloader.test.d.ts +0 -2
  752. package/dist/plugins/context-compact/history-offloader.test.d.ts.map +0 -1
  753. package/dist/plugins/context-compact/history-offloader.test.js +0 -77
  754. package/dist/plugins/context-compact/history-offloader.test.js.map +0 -1
  755. package/dist/plugins/filesystem/filesystem.integration.test.d.ts +0 -2
  756. package/dist/plugins/filesystem/filesystem.integration.test.d.ts.map +0 -1
  757. package/dist/plugins/filesystem/filesystem.integration.test.js +0 -447
  758. package/dist/plugins/filesystem/filesystem.integration.test.js.map +0 -1
  759. package/dist/plugins/filesystem/schema.d.ts +0 -7
  760. package/dist/plugins/filesystem/schema.d.ts.map +0 -1
  761. package/dist/plugins/filesystem/schema.js +0 -2
  762. package/dist/plugins/filesystem/schema.js.map +0 -1
  763. package/dist/plugins/limits-guard/limit-guard.test.d.ts +0 -2
  764. package/dist/plugins/limits-guard/limit-guard.test.d.ts.map +0 -1
  765. package/dist/plugins/limits-guard/limit-guard.test.js +0 -194
  766. package/dist/plugins/limits-guard/limit-guard.test.js.map +0 -1
  767. package/dist/plugins/limits-guard/limits-guard.integration.test.d.ts +0 -2
  768. package/dist/plugins/limits-guard/limits-guard.integration.test.d.ts.map +0 -1
  769. package/dist/plugins/limits-guard/limits-guard.integration.test.js +0 -887
  770. package/dist/plugins/limits-guard/limits-guard.integration.test.js.map +0 -1
  771. package/dist/plugins/llm-debug/llm-debug.integration.test.d.ts +0 -2
  772. package/dist/plugins/llm-debug/llm-debug.integration.test.d.ts.map +0 -1
  773. package/dist/plugins/llm-debug/llm-debug.integration.test.js +0 -157
  774. package/dist/plugins/llm-debug/llm-debug.integration.test.js.map +0 -1
  775. package/dist/plugins/mailbox/mailbox.integration.test.d.ts +0 -2
  776. package/dist/plugins/mailbox/mailbox.integration.test.d.ts.map +0 -1
  777. package/dist/plugins/mailbox/mailbox.integration.test.js +0 -678
  778. package/dist/plugins/mailbox/mailbox.integration.test.js.map +0 -1
  779. package/dist/plugins/resources/resources.integration.test.d.ts +0 -2
  780. package/dist/plugins/resources/resources.integration.test.d.ts.map +0 -1
  781. package/dist/plugins/resources/resources.integration.test.js +0 -62
  782. package/dist/plugins/resources/resources.integration.test.js.map +0 -1
  783. package/dist/plugins/result-eviction/result-eviction.integration.test.d.ts +0 -2
  784. package/dist/plugins/result-eviction/result-eviction.integration.test.d.ts.map +0 -1
  785. package/dist/plugins/result-eviction/result-eviction.integration.test.js +0 -294
  786. package/dist/plugins/result-eviction/result-eviction.integration.test.js.map +0 -1
  787. package/dist/plugins/services/pid-registry.test.d.ts +0 -2
  788. package/dist/plugins/services/pid-registry.test.d.ts.map +0 -1
  789. package/dist/plugins/services/pid-registry.test.js +0 -161
  790. package/dist/plugins/services/pid-registry.test.js.map +0 -1
  791. package/dist/plugins/services/services.integration.test.d.ts +0 -2
  792. package/dist/plugins/services/services.integration.test.d.ts.map +0 -1
  793. package/dist/plugins/services/services.integration.test.js +0 -1057
  794. package/dist/plugins/services/services.integration.test.js.map +0 -1
  795. package/dist/plugins/session-lifecycle/session-lifecycle.integration.test.d.ts +0 -2
  796. package/dist/plugins/session-lifecycle/session-lifecycle.integration.test.d.ts.map +0 -1
  797. package/dist/plugins/session-lifecycle/session-lifecycle.integration.test.js +0 -498
  798. package/dist/plugins/session-lifecycle/session-lifecycle.integration.test.js.map +0 -1
  799. package/dist/plugins/session-stats/plugin.test.d.ts +0 -2
  800. package/dist/plugins/session-stats/plugin.test.d.ts.map +0 -1
  801. package/dist/plugins/session-stats/plugin.test.js +0 -145
  802. package/dist/plugins/session-stats/plugin.test.js.map +0 -1
  803. package/dist/plugins/shell/shell.integration.test.d.ts +0 -2
  804. package/dist/plugins/shell/shell.integration.test.d.ts.map +0 -1
  805. package/dist/plugins/shell/shell.integration.test.js +0 -234
  806. package/dist/plugins/shell/shell.integration.test.js.map +0 -1
  807. package/dist/plugins/shell/shell.test.d.ts +0 -2
  808. package/dist/plugins/shell/shell.test.d.ts.map +0 -1
  809. package/dist/plugins/shell/shell.test.js +0 -236
  810. package/dist/plugins/shell/shell.test.js.map +0 -1
  811. package/dist/plugins/skills/discovery.test.d.ts +0 -2
  812. package/dist/plugins/skills/discovery.test.d.ts.map +0 -1
  813. package/dist/plugins/skills/discovery.test.js +0 -312
  814. package/dist/plugins/skills/discovery.test.js.map +0 -1
  815. package/dist/plugins/skills/skills.integration.test.d.ts +0 -2
  816. package/dist/plugins/skills/skills.integration.test.d.ts.map +0 -1
  817. package/dist/plugins/skills/skills.integration.test.js +0 -475
  818. package/dist/plugins/skills/skills.integration.test.js.map +0 -1
  819. package/dist/plugins/todo/todo.integration.test.d.ts +0 -2
  820. package/dist/plugins/todo/todo.integration.test.d.ts.map +0 -1
  821. package/dist/plugins/todo/todo.integration.test.js +0 -605
  822. package/dist/plugins/todo/todo.integration.test.js.map +0 -1
  823. package/dist/plugins/uploads/preprocessors/image-classifier.test.d.ts +0 -2
  824. package/dist/plugins/uploads/preprocessors/image-classifier.test.d.ts.map +0 -1
  825. package/dist/plugins/uploads/preprocessors/image-classifier.test.js +0 -113
  826. package/dist/plugins/uploads/preprocessors/image-classifier.test.js.map +0 -1
  827. package/dist/plugins/uploads/uploads.integration.test.d.ts +0 -2
  828. package/dist/plugins/uploads/uploads.integration.test.d.ts.map +0 -1
  829. package/dist/plugins/uploads/uploads.integration.test.js +0 -639
  830. package/dist/plugins/uploads/uploads.integration.test.js.map +0 -1
  831. package/dist/plugins/user-chat/user-chat.integration.test.d.ts +0 -2
  832. package/dist/plugins/user-chat/user-chat.integration.test.d.ts.map +0 -1
  833. package/dist/plugins/user-chat/user-chat.integration.test.js +0 -754
  834. package/dist/plugins/user-chat/user-chat.integration.test.js.map +0 -1
  835. package/dist/plugins/workers/workers.integration.test.d.ts +0 -2
  836. package/dist/plugins/workers/workers.integration.test.d.ts.map +0 -1
  837. package/dist/plugins/workers/workers.integration.test.js +0 -629
  838. package/dist/plugins/workers/workers.integration.test.js.map +0 -1
  839. package/dist/prompts/macros.test.d.ts +0 -2
  840. package/dist/prompts/macros.test.d.ts.map +0 -1
  841. package/dist/prompts/macros.test.js +0 -80
  842. package/dist/prompts/macros.test.js.map +0 -1
  843. package/dist/testing/test-harness.test.d.ts +0 -2
  844. package/dist/testing/test-harness.test.d.ts.map +0 -1
  845. package/dist/testing/test-harness.test.js +0 -92
  846. package/dist/testing/test-harness.test.js.map +0 -1
  847. package/dist/transport/http/routes/rpc.integration.test.d.ts +0 -2
  848. package/dist/transport/http/routes/rpc.integration.test.d.ts.map +0 -1
  849. package/dist/transport/http/routes/rpc.integration.test.js +0 -189
  850. package/dist/transport/http/routes/rpc.integration.test.js.map +0 -1
  851. package/dist/transport/http/routes/rpc.test.d.ts +0 -2
  852. package/dist/transport/http/routes/rpc.test.d.ts.map +0 -1
  853. package/dist/transport/http/routes/rpc.test.js +0 -316
  854. package/dist/transport/http/routes/rpc.test.js.map +0 -1
  855. package/src/config.test.ts +0 -174
  856. package/src/core/agent-loop.integration.test.ts +0 -503
  857. package/src/core/agents/agent-config.test.ts +0 -240
  858. package/src/core/agents/agent-shutdown.test.ts +0 -236
  859. package/src/core/agents/agent.test.ts +0 -387
  860. package/src/core/agents/communicator.ts +0 -16
  861. package/src/core/agents/handler-events.test.ts +0 -167
  862. package/src/core/agents/response-sanitizer.test.ts +0 -137
  863. package/src/core/error-recovery.integration.test.ts +0 -343
  864. package/src/core/event-sourcing.integration.test.ts +0 -191
  865. package/src/core/events/file.test.ts +0 -436
  866. package/src/core/events/memory.test.ts +0 -741
  867. package/src/core/image/image-processor.test.ts +0 -218
  868. package/src/core/image/vips-resizer.test.ts +0 -388
  869. package/src/core/llm/anthropic.test.ts +0 -546
  870. package/src/core/llm/cache-breakpoints.test.ts +0 -85
  871. package/src/core/llm/cache-live.test.ts +0 -155
  872. package/src/core/llm/logger.test.ts +0 -270
  873. package/src/core/llm/message-sanitization.test.ts +0 -217
  874. package/src/core/llm/mock.test.ts +0 -402
  875. package/src/core/llm/model-shortlist-live.test.ts +0 -577
  876. package/src/core/llm/openrouter-mapping.test.ts +0 -234
  877. package/src/core/llm/openrouter.test.ts +0 -499
  878. package/src/core/llm/provider-integration.test.ts +0 -408
  879. package/src/core/llm/reasoning-details.test.ts +0 -177
  880. package/src/core/llm/routing-provider.test.ts +0 -113
  881. package/src/core/llm/snapshot-middleware.test.ts +0 -168
  882. package/src/core/llm/thinking-blocks.test.ts +0 -345
  883. package/src/core/multi-agent.integration.test.ts +0 -340
  884. package/src/core/plugin-hooks.integration.test.ts +0 -568
  885. package/src/core/reasoning-round-trip.integration.test.ts +0 -188
  886. package/src/core/session-lifecycle.integration.test.ts +0 -202
  887. package/src/core/sessions/fork-utils.test.ts +0 -158
  888. package/src/core/sessions/session-overrides.integration.test.ts +0 -210
  889. package/src/core/sessions/session.test.ts +0 -1736
  890. package/src/core/tools/executor.test.ts +0 -161
  891. package/src/lib/logger/console.test.ts +0 -348
  892. package/src/lib/never.ts +0 -3
  893. package/src/lib/utils/concurrency.test.ts +0 -169
  894. package/src/plugins/agent-status/agent-status.test.ts +0 -164
  895. package/src/plugins/agents/agents.integration.test.ts +0 -976
  896. package/src/plugins/agents/supervision.integration.test.ts +0 -249
  897. package/src/plugins/context-compact/compaction-live.test.ts +0 -221
  898. package/src/plugins/context-compact/context-compact.integration.test.ts +0 -418
  899. package/src/plugins/context-compact/context-compactor.test.ts +0 -1036
  900. package/src/plugins/context-compact/history-offloader.test.ts +0 -100
  901. package/src/plugins/filesystem/filesystem.integration.test.ts +0 -529
  902. package/src/plugins/filesystem/schema.ts +0 -6
  903. package/src/plugins/limits-guard/limit-guard.test.ts +0 -253
  904. package/src/plugins/limits-guard/limits-guard.integration.test.ts +0 -1012
  905. package/src/plugins/llm-debug/llm-debug.integration.test.ts +0 -192
  906. package/src/plugins/mailbox/mailbox.integration.test.ts +0 -794
  907. package/src/plugins/resources/resources.integration.test.ts +0 -68
  908. package/src/plugins/result-eviction/result-eviction.integration.test.ts +0 -332
  909. package/src/plugins/services/pid-registry.test.ts +0 -180
  910. package/src/plugins/services/services.integration.test.ts +0 -1223
  911. package/src/plugins/session-lifecycle/session-lifecycle.integration.test.ts +0 -639
  912. package/src/plugins/session-stats/plugin.test.ts +0 -160
  913. package/src/plugins/shell/shell.integration.test.ts +0 -273
  914. package/src/plugins/shell/shell.test.ts +0 -314
  915. package/src/plugins/skills/discovery.test.ts +0 -395
  916. package/src/plugins/skills/skills.integration.test.ts +0 -580
  917. package/src/plugins/todo/todo.integration.test.ts +0 -687
  918. package/src/plugins/uploads/preprocessors/image-classifier.test.ts +0 -142
  919. package/src/plugins/uploads/uploads.integration.test.ts +0 -831
  920. package/src/plugins/user-chat/user-chat.integration.test.ts +0 -893
  921. package/src/plugins/workers/workers.integration.test.ts +0 -778
  922. package/src/prompts/macros.test.ts +0 -107
  923. package/src/testing/test-harness.test.ts +0 -114
  924. package/src/transport/http/routes/rpc.integration.test.ts +0 -243
  925. package/src/transport/http/routes/rpc.test.ts +0 -372
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Framing for the liveness probe an agent sends and its host answers.
3
+ *
4
+ * Both directions carry a complete `WireMessage`, and each side reads the other's
5
+ * frame before acting on it: an envelope missing its payload is indistinguishable
6
+ * from silence, which is exactly what the sender's missed-beat count notices.
7
+ */
8
+ export const HEARTBEAT_TYPE = 'heartbeat';
9
+ export const HEARTBEAT_ACK_TYPE = 'heartbeat_ack';
10
+ function encode(type) {
11
+ const ts = Date.now();
12
+ const message = { type, payload: { ts }, ts };
13
+ return JSON.stringify(message);
14
+ }
15
+ export const encodeProbe = () => encode(HEARTBEAT_TYPE);
16
+ export const encodeAck = () => encode(HEARTBEAT_ACK_TYPE);
17
+ function hasSendTime(payload) {
18
+ return typeof payload === 'object' && payload !== null && 'ts' in payload && typeof payload.ts === 'number';
19
+ }
20
+ /** Reads a probe off the wire. An incomplete frame is not one, so it goes unanswered. */
21
+ export function isProbeFrame(raw) {
22
+ let parsed;
23
+ try {
24
+ parsed = JSON.parse(raw);
25
+ }
26
+ catch {
27
+ return false;
28
+ }
29
+ if (typeof parsed !== 'object' || parsed === null)
30
+ return false;
31
+ if (!('type' in parsed) || parsed.type !== HEARTBEAT_TYPE)
32
+ return false;
33
+ if (!('ts' in parsed) || typeof parsed.ts !== 'number')
34
+ return false;
35
+ return 'payload' in parsed && hasSendTime(parsed.payload);
36
+ }
37
+ /** Reads an ack the router has already unwrapped into `(type, payload)`. */
38
+ export function isAckFrame(type, payload) {
39
+ return type === HEARTBEAT_ACK_TYPE && hasSendTime(payload);
40
+ }
41
+ //# sourceMappingURL=heartbeat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../../src/transport/adapter/heartbeat.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAA;AACzC,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAA;AAOjD,SAAS,MAAM,CAAC,IAAY;IAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACrB,MAAM,OAAO,GAAkC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAA;IAC5E,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;AAC/B,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,GAAW,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;AAE/D,MAAM,CAAC,MAAM,SAAS,GAAG,GAAW,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAA;AAEjE,SAAS,WAAW,CAAC,OAAgB;IACpC,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,EAAE,KAAK,QAAQ,CAAA;AAC5G,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,YAAY,CAAC,GAAW;IACvC,IAAI,MAAe,CAAA;IACnB,IAAI,CAAC;QACJ,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAA;IACb,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IAC/D,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc;QAAE,OAAO,KAAK,CAAA;IACvE,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IACpE,OAAO,SAAS,IAAI,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;AAC1D,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,OAAgB;IACxD,OAAO,IAAI,KAAK,kBAAkB,IAAI,WAAW,CAAC,OAAO,CAAC,CAAA;AAC3D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"server-adapter.d.ts","sourceRoot":"","sources":["../../../src/transport/adapter/server-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAe,MAAM,mBAAmB,CAAA;AACtE,OAAO,EAAE,iBAAiB,EAAoB,MAAM,0BAA0B,CAAA;AAC9E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAErE,MAAM,WAAW,mBAAmB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,aAAc,YAAW,eAAe;IACpD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA0C;gBAE/D,MAAM,GAAE,mBAAwB;IAKtC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,SAAS,CAAC,YAAY,EAAE,kBAAkB,GAAG,IAAI;IAgBjD,UAAU,CAAC,EAAE,EAAE,gBAAgB,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAmB1D,WAAW,CAAC,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IASrE,aAAa,CAAC,EAAE,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAK1D,WAAW,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAItD,oBAAoB,IAAI,iBAAiB;CAGzC"}
1
+ {"version":3,"file":"server-adapter.d.ts","sourceRoot":"","sources":["../../../src/transport/adapter/server-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAe,MAAM,mBAAmB,CAAA;AACtE,OAAO,EAAE,iBAAiB,EAAoB,MAAM,0BAA0B,CAAA;AAC9E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAExD,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAErE,MAAM,WAAW,mBAAmB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,aAAc,YAAW,eAAe;IACpD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA0C;gBAE/D,MAAM,GAAE,mBAAwB;IAKtC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,SAAS,CAAC,YAAY,EAAE,kBAAkB,GAAG,IAAI;IAgBjD,UAAU,CAAC,EAAE,EAAE,gBAAgB,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAmB1D,WAAW,CAAC,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IASrE,aAAa,CAAC,EAAE,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAU1D,WAAW,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAItD,oBAAoB,IAAI,iBAAiB;CAGzC"}
@@ -6,6 +6,7 @@
6
6
  * User messages and answers are handled via REST API.
7
7
  */
8
8
  import { ConnectionManager, ServerConnection } from '@roj-ai/transport/server';
9
+ import { encodeAck, isProbeFrame } from './heartbeat.js';
9
10
  export class ServerAdapter {
10
11
  connectionManager;
11
12
  logger;
@@ -60,6 +61,11 @@ export class ServerAdapter {
60
61
  }
61
62
  }
62
63
  handleMessage(ws, message) {
64
+ // Answered here, not in the router: the probe carries no session and has no handler.
65
+ if (isProbeFrame(message)) {
66
+ ws.send(encodeAck());
67
+ return;
68
+ }
63
69
  // Forward message to the connection's onmessage handler
64
70
  ws.onmessage?.(message);
65
71
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server-adapter.js","sourceRoot":"","sources":["../../../src/transport/adapter/server-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server-adapter.js","sourceRoot":"","sources":["../../../src/transport/adapter/server-adapter.ts"],"names":[],"mappings":"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"}
@@ -4,36 +4,9 @@
4
4
  * Creates the main HTTP application with middleware and routes.
5
5
  */
6
6
  import { Hono } from 'hono';
7
- import type { PreprocessorRegistry } from '../../plugins/uploads/preprocessor.js';
8
- import type { Services } from '../../bootstrap.js';
9
- import type { SessionManager } from '../../core/sessions/session-manager.js';
10
- /**
11
- * Extended services with SessionManager for HTTP routes.
12
- */
13
- export type AppServices = Services & {
14
- sessionRuntime: SessionManager;
15
- /** Bearer token for authenticating HTTP requests. Optional - only used in worker mode. */
16
- agentToken?: string;
17
- /** File preprocessor registry for upload routes. Optional - only available when uploads plugin is configured. */
18
- preprocessorRegistry?: PreprocessorRegistry;
19
- };
20
- /**
21
- * Environment type for Hono app with injected services.
22
- */
23
- export type AppEnv = {
24
- Variables: {
25
- services: AppServices;
26
- };
27
- };
28
- /**
29
- * Hono context type for routes.
30
- */
31
- export type AppContext = import('hono').Context<AppEnv>;
32
- /**
33
- * Type-safe accessor for services from Hono context.
34
- * Guarantees services are present (set by middleware).
35
- */
36
- export declare function getServices(c: AppContext): AppServices;
7
+ import type { AppEnv, AppServices } from './context.js';
8
+ export type { AppContext, AppEnv, AppServices } from './context.js';
9
+ export { getServices } from './context.js';
37
10
  /**
38
11
  * Creates the Hono application with all middleware and routes.
39
12
  */
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/transport/http/app.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAA;AAC7E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAA;AAQ5E;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG;IACpC,cAAc,EAAE,cAAc,CAAA;IAC9B,0FAA0F;IAC1F,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iHAAiH;IACjH,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;CAC3C,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG;IACpB,SAAS,EAAE;QACV,QAAQ,EAAE,WAAW,CAAA;KACrB,CAAA;CACD,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;AAEvD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,UAAU,GAAG,WAAW,CAEtD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CA8E7D"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/transport/http/app.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAWvD,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE1C;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CA+E7D"}
@@ -6,19 +6,14 @@
6
6
  import { Hono } from 'hono';
7
7
  import { cors } from 'hono/cors';
8
8
  import { SDK_VERSION } from '../../info.js';
9
+ import { getServices } from './context.js';
9
10
  import { createBearerAuth } from './middleware/bearer-auth.js';
10
11
  import { errorHandler } from './middleware/error-handler.js';
11
12
  import { createFileRoutes } from './routes/files.js';
12
13
  import { createResourceRoutes } from './routes/resources.js';
13
14
  import { createRpcRoutes } from './routes/rpc.js';
14
15
  import { createUploadRoutes } from './routes/upload.js';
15
- /**
16
- * Type-safe accessor for services from Hono context.
17
- * Guarantees services are present (set by middleware).
18
- */
19
- export function getServices(c) {
20
- return c.get('services');
21
- }
16
+ export { getServices } from './context.js';
22
17
  /**
23
18
  * Creates the Hono application with all middleware and routes.
24
19
  */
@@ -54,6 +49,7 @@ export function createApp(services) {
54
49
  },
55
50
  stats: {
56
51
  sessionCount: stats.sessionCount,
52
+ loadedSessionCount: stats.loadedSessionCount,
57
53
  pendingAgents: stats.pendingAgents,
58
54
  processingAgents: stats.processingAgents,
59
55
  },
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/transport/http/app.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAIvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AA2BvD;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,CAAa;IACxC,OAAO,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,QAAqB;IAC9C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAU,CAAA;IAE9B,aAAa;IACb,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAA;IACpB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;QAC9B,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAC3B,MAAM,IAAI,EAAE,CAAA;IACb,CAAC,CAAC,CAAA;IAEF,gBAAgB;IAChB,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;IAEzB,2CAA2C;IAC3C,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;QACxB,OAAO,CAAC,CAAC,IAAI,CAAC;YACb,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACrB,CAAC,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,mCAAmC;IACnC,MAAM,UAAU,GAAG,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;IAExD,6CAA6C;IAC7C,kFAAkF;IAClF,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC1C,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;QACjD,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,CAAA;QAE7C,OAAO,CAAC,CAAC,IAAI,CAAC;YACb,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,QAAQ,EAAE;gBACT,GAAG,EAAE,WAAW;gBAChB,OAAO,EAAE,MAAM,CAAC,YAAY,IAAI,IAAI;aACpC;YACD,KAAK,EAAE;gBACN,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,aAAa,EAAE,KAAK,CAAC,aAAa;gBAClC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;aACxC;YACD,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAClC,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,OAAO,EAAE,CAAC,CAAC,OAAO;aAClB,CAAC,CAAC;YACH,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACrB,CAAC,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,mBAAmB;IACnB,MAAM,SAAS,GAAG,eAAe,EAAE,CAAA;IACnC,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAA;IACzC,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAA;IAC7C,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAA;IAErC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;IAC7B,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC,CAAA;IAClC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAC5B,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;IACpC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,cAAc,CAAC,CAAA;IACtC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;IAElC,cAAc;IACd,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE;QAClB,OAAO,CAAC,CAAC,IAAI,CACZ;YACC,KAAK,EAAE;gBACN,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,oBAAoB,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE;aACzD;SACD,EACD,GAAG,CACH,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACX,CAAC"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/transport/http/app.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Hono context types and the services accessor.
3
+ *
4
+ * Kept out of app.ts on purpose. The route factories need `getServices` — a
5
+ * runtime value, not just a type — while app.ts imports every route factory to
6
+ * mount them. With both in app.ts the ESM module graph really does contain a
7
+ * cycle (app -> routes/* -> app), not merely a type-shape artifact. This module
8
+ * imports nothing from app.ts, so the graph stays acyclic.
9
+ */
10
+ import type { PreprocessorRegistry } from '../../plugins/uploads/preprocessor.js';
11
+ import type { Services } from '../../bootstrap.js';
12
+ import type { SessionManager } from '../../core/sessions/session-manager.js';
13
+ /**
14
+ * Extended services with SessionManager for HTTP routes.
15
+ */
16
+ export type AppServices = Services & {
17
+ sessionRuntime: SessionManager;
18
+ /** Bearer token for authenticating HTTP requests. Optional - only used in worker mode. */
19
+ agentToken?: string;
20
+ /** File preprocessor registry for upload routes. Optional - only available when uploads plugin is configured. */
21
+ preprocessorRegistry?: PreprocessorRegistry;
22
+ };
23
+ /**
24
+ * Environment type for Hono app with injected services.
25
+ */
26
+ export type AppEnv = {
27
+ Variables: {
28
+ services: AppServices;
29
+ };
30
+ };
31
+ /**
32
+ * Hono context type for routes.
33
+ */
34
+ export type AppContext = import('hono').Context<AppEnv>;
35
+ /**
36
+ * Type-safe accessor for services from Hono context.
37
+ * Guarantees services are present (set by middleware).
38
+ */
39
+ export declare function getServices(c: AppContext): AppServices;
40
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/transport/http/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAA;AAC7E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAA;AAE5E;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG;IACpC,cAAc,EAAE,cAAc,CAAA;IAC9B,0FAA0F;IAC1F,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iHAAiH;IACjH,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;CAC3C,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG;IACpB,SAAS,EAAE;QACV,QAAQ,EAAE,WAAW,CAAA;KACrB,CAAA;CACD,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;AAEvD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,UAAU,GAAG,WAAW,CAEtD"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Hono context types and the services accessor.
3
+ *
4
+ * Kept out of app.ts on purpose. The route factories need `getServices` — a
5
+ * runtime value, not just a type — while app.ts imports every route factory to
6
+ * mount them. With both in app.ts the ESM module graph really does contain a
7
+ * cycle (app -> routes/* -> app), not merely a type-shape artifact. This module
8
+ * imports nothing from app.ts, so the graph stays acyclic.
9
+ */
10
+ /**
11
+ * Type-safe accessor for services from Hono context.
12
+ * Guarantees services are present (set by middleware).
13
+ */
14
+ export function getServices(c) {
15
+ return c.get('services');
16
+ }
17
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/transport/http/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA+BH;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,CAAa;IACxC,OAAO,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;AACzB,CAAC"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Guard for the two routes that fetch a caller-supplied URL.
3
+ *
4
+ * `upload-from-url` and `inject-resource` are twins: both pull an arbitrary URL
5
+ * from inside the agent host, so an unguarded fetch turns the server into an
6
+ * SSRF proxy onto loopback, RFC1918 and the cloud metadata endpoint — and both
7
+ * reflect the status and the extracted content back to the caller. Every fetch
8
+ * on those paths must go through `safeFetch`, redirects included.
9
+ *
10
+ * It validates a hostname and then hands that name to `fetch` rather than the
11
+ * address it checked, so DNS rebinding stays open. Read it as a filter on where
12
+ * a request may point, not as a guarantee of where the connection lands.
13
+ */
14
+ import { type DomainError } from '../../core/errors.js';
15
+ import type { Result } from '../../lib/utils/result.js';
16
+ export interface FetchGuardOptions {
17
+ /**
18
+ * Hosts to accept even though they land in a blocked range (e.g. an internal
19
+ * object store). Omitting it means an empty allowlist, so a caller that
20
+ * forgets to pass one fails closed. Comes from `Config.remoteFetchAllowedHosts`,
21
+ * whose `host[:port]` format `parseAllowedHostEntry` owns.
22
+ */
23
+ allowedHosts?: readonly string[];
24
+ /**
25
+ * Resolver for a hostname that is not an IP literal, returning every address
26
+ * it maps to. Defaults to the platform DNS resolver; tests inject their own.
27
+ */
28
+ resolveHost?: (hostname: string) => Promise<readonly string[]>;
29
+ }
30
+ /** Accept a URL only when it is http(s) and its host literal is not one we refuse to reach. */
31
+ export declare function assertFetchableUrl(raw: string, options?: FetchGuardOptions): Result<URL, DomainError>;
32
+ /**
33
+ * Fetch a caller-supplied URL, re-checking every redirect hop.
34
+ *
35
+ * `redirect: 'manual'` is the point: the platform's own redirect following would
36
+ * land on a blocked host without ever handing us the intermediate URL.
37
+ */
38
+ export declare function safeFetch(raw: string, options: FetchGuardOptions & {
39
+ timeoutMs: number;
40
+ }): Promise<Result<Response, DomainError>>;
41
+ /**
42
+ * Read a response body, giving up once it passes `maxBytes`. Null means over the cap.
43
+ *
44
+ * `Content-Length` is the sender's claim, and `arrayBuffer()` materialises the whole
45
+ * body before anything can check it — so a chunked response that declares no length
46
+ * is buffered in full before it is rejected. Streaming caps it at the real byte count.
47
+ */
48
+ export declare function readBodyWithLimit(response: Response, maxBytes: number): Promise<Buffer | null>;
49
+ //# sourceMappingURL=fetch-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-guard.d.ts","sourceRoot":"","sources":["../../../src/transport/http/fetch-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAOnD,MAAM,WAAW,iBAAiB;IACjC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAA;CAC9D;AAqJD,+FAA+F;AAC/F,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,CAgBrG;AAmCD;;;;;GAKG;AACH,wBAAsB,SAAS,CAC9B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,iBAAiB,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAChD,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAsCxC;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsBpG"}
@@ -0,0 +1,312 @@
1
+ /**
2
+ * Guard for the two routes that fetch a caller-supplied URL.
3
+ *
4
+ * `upload-from-url` and `inject-resource` are twins: both pull an arbitrary URL
5
+ * from inside the agent host, so an unguarded fetch turns the server into an
6
+ * SSRF proxy onto loopback, RFC1918 and the cloud metadata endpoint — and both
7
+ * reflect the status and the extracted content back to the caller. Every fetch
8
+ * on those paths must go through `safeFetch`, redirects included.
9
+ *
10
+ * It validates a hostname and then hands that name to `fetch` rather than the
11
+ * address it checked, so DNS rebinding stays open. Read it as a filter on where
12
+ * a request may point, not as a guarantee of where the connection lands.
13
+ */
14
+ import { lookup } from 'node:dns/promises';
15
+ import { parseAllowedHostEntry } from '../../config.js';
16
+ import { createDomainError } from '../../core/errors.js';
17
+ import { Err, Ok } from '../../lib/utils/result.js';
18
+ /** Redirect hops followed before giving up. Every hop is re-checked. */
19
+ const MAX_REDIRECTS = 5;
20
+ const fetchError = (message) => createDomainError('fetch_error', message, 400);
21
+ const IPV4_PATTERN = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
22
+ /** Parse a dotted-quad literal into its four octets, or null when it is not one. */
23
+ function parseIPv4(host) {
24
+ const match = IPV4_PATTERN.exec(host);
25
+ if (!match)
26
+ return null;
27
+ const octets = match.slice(1).map(part => Number(part));
28
+ return octets.every(octet => octet <= 255) ? octets : null;
29
+ }
30
+ function isBlockedIPv4(octets) {
31
+ const [a, b, c] = octets;
32
+ if (a === 0)
33
+ return true; // 0.0.0.0/8 — reaches the local host on Linux
34
+ if (a === 127)
35
+ return true; // loopback
36
+ if (a === 10)
37
+ return true; // RFC1918
38
+ if (a === 172 && b >= 16 && b <= 31)
39
+ return true; // RFC1918
40
+ if (a === 192 && b === 168)
41
+ return true; // RFC1918
42
+ if (a === 169 && b === 254)
43
+ return true; // link-local, incl. the metadata endpoint
44
+ if (a === 100 && b >= 64 && b <= 127)
45
+ return true; // 100.64.0.0/10 CGNAT — carries a metadata endpoint too
46
+ if (a === 192 && b === 0 && c === 0)
47
+ return true; // 192.0.0.0/24 IETF protocol assignments
48
+ if (a === 198 && (b === 18 || b === 19))
49
+ return true; // 198.18.0.0/15 benchmarking
50
+ if (a >= 224)
51
+ return true; // 224.0.0.0/4 multicast plus 240.0.0.0/4 reserved, incl. 255.255.255.255
52
+ return false;
53
+ }
54
+ /** Expand an IPv6 literal to its eight 16-bit groups, or null when it is not one. */
55
+ function expandIPv6(host) {
56
+ const zoneless = host.split('%')[0];
57
+ if (!zoneless.includes(':'))
58
+ return null;
59
+ const halves = zoneless.split('::');
60
+ if (halves.length > 2)
61
+ return null;
62
+ const toGroups = (part) => {
63
+ if (part === '')
64
+ return [];
65
+ const groups = [];
66
+ const pieces = part.split(':');
67
+ for (const [index, piece] of pieces.entries()) {
68
+ // A trailing dotted quad (`::ffff:1.2.3.4`) fills the last two groups.
69
+ if (index === pieces.length - 1 && piece.includes('.')) {
70
+ const octets = parseIPv4(piece);
71
+ if (!octets)
72
+ return null;
73
+ groups.push((octets[0] << 8) | octets[1], (octets[2] << 8) | octets[3]);
74
+ continue;
75
+ }
76
+ if (!/^[0-9a-f]{1,4}$/.test(piece))
77
+ return null;
78
+ groups.push(Number.parseInt(piece, 16));
79
+ }
80
+ return groups;
81
+ };
82
+ const head = toGroups(halves[0]);
83
+ if (!head)
84
+ return null;
85
+ if (halves.length === 1)
86
+ return head.length === 8 ? head : null;
87
+ const tail = toGroups(halves[1]);
88
+ if (!tail)
89
+ return null;
90
+ const fill = 8 - head.length - tail.length;
91
+ if (fill < 1)
92
+ return null;
93
+ return [...head, ...Array(fill).fill(0), ...tail];
94
+ }
95
+ /**
96
+ * The IPv4 destination an IPv6 address really carries, or null when it has none.
97
+ *
98
+ * Every transition mechanism here reaches an IPv4 host, so the address that
99
+ * decides the verdict is the embedded one, not the v6 prefix in front of it.
100
+ */
101
+ function embeddedIPv4(groups) {
102
+ const [g0, g1, g2, g3, g4, g5, g6, g7] = groups;
103
+ const trailingQuad = [g6 >> 8, g6 & 0xff, g7 >> 8, g7 & 0xff];
104
+ const leadingZeros = (count) => groups.slice(0, count).every(group => group === 0);
105
+ if (leadingZeros(5) && g5 === 0xffff)
106
+ return trailingQuad; // ::ffff:a.b.c.d IPv4-mapped
107
+ if (leadingZeros(4) && g4 === 0xffff && g5 === 0)
108
+ return trailingQuad; // ::ffff:0:a.b.c.d IPv4-translated
109
+ if (leadingZeros(6))
110
+ return trailingQuad; // ::a.b.c.d IPv4-compatible, which covers :: and ::1
111
+ if (g0 === 0x0064 && g1 === 0xff9b && g2 === 0 && g3 === 0 && g4 === 0 && g5 === 0)
112
+ return trailingQuad; // 64:ff9b::/96 NAT64
113
+ if (g0 === 0x2002)
114
+ return [g1 >> 8, g1 & 0xff, g2 >> 8, g2 & 0xff]; // 2002::/16 6to4
115
+ return null;
116
+ }
117
+ function isBlockedIPv6(groups) {
118
+ const [g0] = groups;
119
+ const embedded = embeddedIPv4(groups);
120
+ if (embedded)
121
+ return isBlockedIPv4(embedded);
122
+ if ((g0 & 0xfe00) === 0xfc00)
123
+ return true; // fc00::/7 unique-local
124
+ if ((g0 & 0xffc0) === 0xfe80)
125
+ return true; // fe80::/10 link-local
126
+ if ((g0 & 0xff00) === 0xff00)
127
+ return true; // ff00::/8 multicast
128
+ return false;
129
+ }
130
+ /** `URL.hostname` keeps the brackets around an IPv6 literal and any trailing root dots. */
131
+ function normalizeHost(hostname) {
132
+ const host = hostname.toLowerCase().replace(/\.+$/, '');
133
+ return host.startsWith('[') && host.endsWith(']') ? host.slice(1, -1) : host;
134
+ }
135
+ /** Parse a host as an IP literal in either family, or null when it is a name. */
136
+ function parseAddress(host) {
137
+ const ipv4 = parseIPv4(host);
138
+ if (ipv4)
139
+ return { family: 4, groups: ipv4 };
140
+ const ipv6 = expandIPv6(host);
141
+ if (ipv6)
142
+ return { family: 6, groups: ipv6 };
143
+ return null;
144
+ }
145
+ function isBlockedAddress(host) {
146
+ const address = parseAddress(host);
147
+ if (!address)
148
+ return true; // Not a literal where one was required — fail closed.
149
+ return address.family === 4 ? isBlockedIPv4(address.groups) : isBlockedIPv6(address.groups);
150
+ }
151
+ function isBlockedHost(host) {
152
+ if (host === '')
153
+ return true;
154
+ if (host === 'localhost' || host.endsWith('.localhost'))
155
+ return true;
156
+ const address = parseAddress(host);
157
+ if (address)
158
+ return address.family === 4 ? isBlockedIPv4(address.groups) : isBlockedIPv6(address.groups);
159
+ // A name. `assertFetchableTarget` resolves it and checks the addresses it maps to.
160
+ return false;
161
+ }
162
+ /** The port a request actually goes to; `URL.port` is empty for the scheme default. */
163
+ function effectivePort(url) {
164
+ if (url.port !== '')
165
+ return Number(url.port);
166
+ return url.protocol === 'https:' ? 443 : 80;
167
+ }
168
+ function isAllowlisted(url, options) {
169
+ const host = normalizeHost(url.hostname);
170
+ if (host === '')
171
+ return false;
172
+ const port = effectivePort(url);
173
+ for (const raw of options?.allowedHosts ?? []) {
174
+ const entry = parseAllowedHostEntry(raw);
175
+ if (!entry || entry.host !== host)
176
+ continue;
177
+ if (entry.port === undefined || entry.port === port)
178
+ return true;
179
+ }
180
+ return false;
181
+ }
182
+ async function defaultResolveHost(hostname) {
183
+ const records = await lookup(hostname, { all: true, verbatim: true });
184
+ return records.map(record => record.address);
185
+ }
186
+ /** Accept a URL only when it is http(s) and its host literal is not one we refuse to reach. */
187
+ export function assertFetchableUrl(raw, options) {
188
+ let url;
189
+ try {
190
+ url = new URL(raw);
191
+ }
192
+ catch {
193
+ return Err(fetchError('Invalid URL'));
194
+ }
195
+ if (url.protocol !== 'http:' && url.protocol !== 'https:') {
196
+ return Err(fetchError('URL scheme must be http or https'));
197
+ }
198
+ if (isAllowlisted(url, options))
199
+ return Ok(url);
200
+ if (isBlockedHost(normalizeHost(url.hostname)))
201
+ return Err(fetchError('URL host is not allowed'));
202
+ return Ok(url);
203
+ }
204
+ /**
205
+ * `assertFetchableUrl` plus DNS: resolve a hostname and refuse every address it maps to.
206
+ *
207
+ * Without this, one attacker-controlled DNS record (`169.254.169.254.nip.io`)
208
+ * walks past every literal test. Resolving here closes that; the residual gap is
209
+ * DNS rebinding, where the record changes between this lookup and the one
210
+ * `fetch` does — closing that needs socket-level pinning, which is out of scope.
211
+ */
212
+ async function assertFetchableTarget(raw, options) {
213
+ const checked = assertFetchableUrl(raw, options);
214
+ if (!checked.ok)
215
+ return checked;
216
+ // An allowlisted host is the operator's explicit statement of trust — it exists to
217
+ // name a host in a blocked range, so resolving it would only block it again.
218
+ if (isAllowlisted(checked.value, options))
219
+ return checked;
220
+ const host = normalizeHost(checked.value.hostname);
221
+ if (parseAddress(host))
222
+ return checked;
223
+ let addresses;
224
+ try {
225
+ addresses = await (options?.resolveHost ?? defaultResolveHost)(host);
226
+ }
227
+ catch {
228
+ return Err(fetchError('URL host could not be resolved'));
229
+ }
230
+ if (addresses.length === 0)
231
+ return Err(fetchError('URL host could not be resolved'));
232
+ if (addresses.some(address => isBlockedAddress(normalizeHost(address)))) {
233
+ return Err(fetchError('URL host is not allowed'));
234
+ }
235
+ return checked;
236
+ }
237
+ /**
238
+ * Fetch a caller-supplied URL, re-checking every redirect hop.
239
+ *
240
+ * `redirect: 'manual'` is the point: the platform's own redirect following would
241
+ * land on a blocked host without ever handing us the intermediate URL.
242
+ */
243
+ export async function safeFetch(raw, options) {
244
+ let target = await assertFetchableTarget(raw, options);
245
+ if (!target.ok)
246
+ return target;
247
+ const signal = AbortSignal.timeout(options.timeoutMs);
248
+ for (let hop = 0; hop <= MAX_REDIRECTS; hop++) {
249
+ let response;
250
+ try {
251
+ response = await fetch(target.value, { redirect: 'manual', signal });
252
+ }
253
+ catch (err) {
254
+ return Err(fetchError(`Failed to fetch URL: ${err instanceof Error ? err.message : String(err)}`));
255
+ }
256
+ if (response.status < 300 || response.status > 399)
257
+ return Ok(response);
258
+ const location = response.headers.get('Location');
259
+ if (!location)
260
+ return Err(fetchError(`URL returned ${response.status}`));
261
+ try {
262
+ await response.body?.cancel();
263
+ }
264
+ catch {
265
+ // The hop's body is discarded either way.
266
+ }
267
+ let next;
268
+ try {
269
+ next = new URL(location, target.value);
270
+ }
271
+ catch {
272
+ return Err(fetchError('Invalid redirect location'));
273
+ }
274
+ const checked = await assertFetchableTarget(next.href, options);
275
+ if (!checked.ok)
276
+ return checked;
277
+ target = checked;
278
+ }
279
+ return Err(fetchError('Too many redirects'));
280
+ }
281
+ /**
282
+ * Read a response body, giving up once it passes `maxBytes`. Null means over the cap.
283
+ *
284
+ * `Content-Length` is the sender's claim, and `arrayBuffer()` materialises the whole
285
+ * body before anything can check it — so a chunked response that declares no length
286
+ * is buffered in full before it is rejected. Streaming caps it at the real byte count.
287
+ */
288
+ export async function readBodyWithLimit(response, maxBytes) {
289
+ const reader = response.body?.getReader();
290
+ if (!reader)
291
+ return Buffer.alloc(0);
292
+ const chunks = [];
293
+ let total = 0;
294
+ try {
295
+ while (true) {
296
+ const { done, value } = await reader.read();
297
+ if (done)
298
+ break;
299
+ total += value.byteLength;
300
+ if (total > maxBytes) {
301
+ await reader.cancel();
302
+ return null;
303
+ }
304
+ chunks.push(value);
305
+ }
306
+ }
307
+ finally {
308
+ reader.releaseLock();
309
+ }
310
+ return Buffer.concat(chunks);
311
+ }
312
+ //# sourceMappingURL=fetch-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-guard.js","sourceRoot":"","sources":["../../../src/transport/http/fetch-guard.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,6 @@
2
2
  * HTTP module exports
3
3
  */
4
4
  export { createApp } from './app.js';
5
- export type { AppEnv } from './app.js';
5
+ export type { AppEnv } from './context.js';
6
6
  export { errorHandler } from './middleware/error-handler.js';
7
7
  //# sourceMappingURL=index.d.ts.map