@oni.bot/core 0.8.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (689) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +59 -373
  3. package/dist/checkpointers/sqlite.d.ts.map +1 -1
  4. package/dist/checkpointers/sqlite.js +23 -8
  5. package/dist/checkpointers/sqlite.js.map +1 -1
  6. package/dist/cli/build.d.ts +11 -0
  7. package/dist/cli/build.d.ts.map +1 -0
  8. package/dist/cli/build.js +61 -0
  9. package/dist/cli/build.js.map +1 -0
  10. package/dist/cli/dev.d.ts +5 -0
  11. package/dist/cli/dev.d.ts.map +1 -0
  12. package/dist/cli/dev.js +54 -0
  13. package/dist/cli/dev.js.map +1 -0
  14. package/dist/cli/index.js +16 -27
  15. package/dist/cli/index.js.map +1 -1
  16. package/dist/cli/init.d.ts +2 -0
  17. package/dist/cli/init.d.ts.map +1 -1
  18. package/dist/cli/init.js +18 -1
  19. package/dist/cli/init.js.map +1 -1
  20. package/dist/cli/inspect.d.ts +5 -0
  21. package/dist/cli/inspect.d.ts.map +1 -0
  22. package/dist/cli/inspect.js +85 -0
  23. package/dist/cli/inspect.js.map +1 -0
  24. package/dist/cli/router.d.ts +14 -0
  25. package/dist/cli/router.d.ts.map +1 -0
  26. package/dist/cli/router.js +107 -0
  27. package/dist/cli/router.js.map +1 -0
  28. package/dist/cli/run.d.ts +5 -0
  29. package/dist/cli/run.d.ts.map +1 -0
  30. package/dist/cli/run.js +53 -0
  31. package/dist/cli/run.js.map +1 -0
  32. package/dist/cli/templates.d.ts +1 -0
  33. package/dist/cli/templates.d.ts.map +1 -1
  34. package/dist/cli/templates.js +106 -66
  35. package/dist/cli/templates.js.map +1 -1
  36. package/dist/cli/test.d.ts +3 -0
  37. package/dist/cli/test.d.ts.map +1 -0
  38. package/dist/cli/test.js +29 -0
  39. package/dist/cli/test.js.map +1 -0
  40. package/dist/config/index.d.ts +3 -0
  41. package/dist/config/index.d.ts.map +1 -0
  42. package/dist/config/index.js +3 -0
  43. package/dist/config/index.js.map +1 -0
  44. package/dist/config/loader.d.ts +37 -0
  45. package/dist/config/loader.d.ts.map +1 -0
  46. package/dist/config/loader.js +180 -0
  47. package/dist/config/loader.js.map +1 -0
  48. package/dist/config/types.d.ts +74 -0
  49. package/dist/config/types.d.ts.map +1 -0
  50. package/dist/config/types.js +5 -0
  51. package/dist/config/types.js.map +1 -0
  52. package/dist/coordination/pubsub.d.ts +4 -0
  53. package/dist/coordination/pubsub.d.ts.map +1 -1
  54. package/dist/coordination/pubsub.js +8 -0
  55. package/dist/coordination/pubsub.js.map +1 -1
  56. package/dist/coordination/request-reply.d.ts +3 -1
  57. package/dist/coordination/request-reply.d.ts.map +1 -1
  58. package/dist/coordination/request-reply.js +11 -2
  59. package/dist/coordination/request-reply.js.map +1 -1
  60. package/dist/errors.d.ts +7 -1
  61. package/dist/errors.d.ts.map +1 -1
  62. package/dist/errors.js +18 -3
  63. package/dist/errors.js.map +1 -1
  64. package/dist/events/bridge.d.ts +17 -0
  65. package/dist/events/bridge.d.ts.map +1 -0
  66. package/dist/events/bridge.js +67 -0
  67. package/dist/events/bridge.js.map +1 -0
  68. package/dist/events/bus.d.ts +9 -0
  69. package/dist/events/bus.d.ts.map +1 -1
  70. package/dist/events/bus.js +39 -4
  71. package/dist/events/bus.js.map +1 -1
  72. package/dist/events/index.d.ts +2 -1
  73. package/dist/events/index.d.ts.map +1 -1
  74. package/dist/events/index.js +2 -0
  75. package/dist/events/index.js.map +1 -1
  76. package/dist/events/types.d.ts +123 -1
  77. package/dist/events/types.d.ts.map +1 -1
  78. package/dist/graph.d.ts.map +1 -1
  79. package/dist/graph.js +16 -8
  80. package/dist/graph.js.map +1 -1
  81. package/dist/guardrails/types.d.ts +1 -1
  82. package/dist/guardrails/types.d.ts.map +1 -1
  83. package/dist/harness/agent-loop.d.ts.map +1 -1
  84. package/dist/harness/agent-loop.js +226 -29
  85. package/dist/harness/agent-loop.js.map +1 -1
  86. package/dist/harness/context-compactor.d.ts +21 -2
  87. package/dist/harness/context-compactor.d.ts.map +1 -1
  88. package/dist/harness/context-compactor.js +45 -6
  89. package/dist/harness/context-compactor.js.map +1 -1
  90. package/dist/harness/hooks-engine.d.ts +7 -1
  91. package/dist/harness/hooks-engine.d.ts.map +1 -1
  92. package/dist/harness/hooks-engine.js.map +1 -1
  93. package/dist/harness/index.d.ts +3 -2
  94. package/dist/harness/index.d.ts.map +1 -1
  95. package/dist/harness/index.js +2 -0
  96. package/dist/harness/index.js.map +1 -1
  97. package/dist/harness/skill-loader.d.ts +14 -1
  98. package/dist/harness/skill-loader.d.ts.map +1 -1
  99. package/dist/harness/skill-loader.js +33 -3
  100. package/dist/harness/skill-loader.js.map +1 -1
  101. package/dist/harness/types.d.ts +24 -2
  102. package/dist/harness/types.d.ts.map +1 -1
  103. package/dist/harness/types.js.map +1 -1
  104. package/dist/harness/validate-args.d.ts +16 -0
  105. package/dist/harness/validate-args.d.ts.map +1 -0
  106. package/dist/harness/validate-args.js +132 -0
  107. package/dist/harness/validate-args.js.map +1 -0
  108. package/dist/index.d.ts +3 -3
  109. package/dist/index.d.ts.map +1 -1
  110. package/dist/index.js +12 -12
  111. package/dist/index.js.map +1 -1
  112. package/dist/internal/timeout.d.ts +2 -0
  113. package/dist/internal/timeout.d.ts.map +1 -0
  114. package/dist/internal/timeout.js +16 -0
  115. package/dist/internal/timeout.js.map +1 -0
  116. package/dist/lsp/client.d.ts +70 -0
  117. package/dist/lsp/client.d.ts.map +1 -0
  118. package/dist/lsp/client.js +421 -0
  119. package/dist/lsp/client.js.map +1 -0
  120. package/dist/lsp/index.d.ts +77 -0
  121. package/dist/lsp/index.d.ts.map +1 -0
  122. package/dist/lsp/index.js +183 -0
  123. package/dist/lsp/index.js.map +1 -0
  124. package/dist/lsp/servers.d.ts +48 -0
  125. package/dist/lsp/servers.d.ts.map +1 -0
  126. package/dist/lsp/servers.js +108 -0
  127. package/dist/lsp/servers.js.map +1 -0
  128. package/dist/lsp/types.d.ts +142 -0
  129. package/dist/lsp/types.d.ts.map +1 -0
  130. package/dist/lsp/types.js +16 -0
  131. package/dist/lsp/types.js.map +1 -0
  132. package/dist/mcp/client.d.ts +56 -0
  133. package/dist/mcp/client.d.ts.map +1 -0
  134. package/dist/mcp/client.js +170 -0
  135. package/dist/mcp/client.js.map +1 -0
  136. package/dist/mcp/convert.d.ts +26 -0
  137. package/dist/mcp/convert.d.ts.map +1 -0
  138. package/dist/mcp/convert.js +56 -0
  139. package/dist/mcp/convert.js.map +1 -0
  140. package/dist/mcp/index.d.ts +21 -0
  141. package/dist/mcp/index.d.ts.map +1 -0
  142. package/dist/mcp/index.js +19 -0
  143. package/dist/mcp/index.js.map +1 -0
  144. package/dist/mcp/transport.d.ts +56 -0
  145. package/dist/mcp/transport.d.ts.map +1 -0
  146. package/dist/mcp/transport.js +204 -0
  147. package/dist/mcp/transport.js.map +1 -0
  148. package/dist/mcp/types.d.ts +96 -0
  149. package/dist/mcp/types.d.ts.map +1 -0
  150. package/dist/mcp/types.js +11 -0
  151. package/dist/mcp/types.js.map +1 -0
  152. package/dist/models/anthropic.d.ts.map +1 -1
  153. package/dist/models/anthropic.js +78 -41
  154. package/dist/models/anthropic.js.map +1 -1
  155. package/dist/models/google.d.ts.map +1 -1
  156. package/dist/models/google.js +47 -46
  157. package/dist/models/google.js.map +1 -1
  158. package/dist/models/http-error.d.ts +16 -0
  159. package/dist/models/http-error.d.ts.map +1 -0
  160. package/dist/models/http-error.js +67 -0
  161. package/dist/models/http-error.js.map +1 -0
  162. package/dist/models/index.d.ts +3 -0
  163. package/dist/models/index.d.ts.map +1 -1
  164. package/dist/models/index.js +2 -0
  165. package/dist/models/index.js.map +1 -1
  166. package/dist/models/ollama.d.ts.map +1 -1
  167. package/dist/models/ollama.js +4 -3
  168. package/dist/models/ollama.js.map +1 -1
  169. package/dist/models/openai.d.ts.map +1 -1
  170. package/dist/models/openai.js +36 -44
  171. package/dist/models/openai.js.map +1 -1
  172. package/dist/models/openrouter.d.ts +13 -0
  173. package/dist/models/openrouter.d.ts.map +1 -1
  174. package/dist/models/openrouter.js +86 -47
  175. package/dist/models/openrouter.js.map +1 -1
  176. package/dist/models/sse.d.ts +9 -0
  177. package/dist/models/sse.d.ts.map +1 -0
  178. package/dist/models/sse.js +45 -0
  179. package/dist/models/sse.js.map +1 -0
  180. package/dist/models/types.d.ts +10 -0
  181. package/dist/models/types.d.ts.map +1 -1
  182. package/dist/oni-code/agent-registry.d.ts +73 -0
  183. package/dist/oni-code/agent-registry.d.ts.map +1 -0
  184. package/dist/oni-code/agent-registry.js +151 -0
  185. package/dist/oni-code/agent-registry.js.map +1 -0
  186. package/dist/oni-code/bin.d.ts +18 -0
  187. package/dist/oni-code/bin.d.ts.map +1 -0
  188. package/dist/oni-code/bin.js +78 -0
  189. package/dist/oni-code/bin.js.map +1 -0
  190. package/dist/oni-code/change-tracking.d.ts +28 -0
  191. package/dist/oni-code/change-tracking.d.ts.map +1 -0
  192. package/dist/oni-code/change-tracking.js +77 -0
  193. package/dist/oni-code/change-tracking.js.map +1 -0
  194. package/dist/oni-code/cli.d.ts +6 -0
  195. package/dist/oni-code/cli.d.ts.map +1 -0
  196. package/dist/oni-code/cli.js +30 -0
  197. package/dist/oni-code/cli.js.map +1 -0
  198. package/dist/oni-code/conductor.d.ts +203 -0
  199. package/dist/oni-code/conductor.d.ts.map +1 -0
  200. package/dist/oni-code/conductor.js +1547 -0
  201. package/dist/oni-code/conductor.js.map +1 -0
  202. package/dist/oni-code/config.d.ts +130 -0
  203. package/dist/oni-code/config.d.ts.map +1 -0
  204. package/dist/oni-code/config.js +264 -0
  205. package/dist/oni-code/config.js.map +1 -0
  206. package/dist/oni-code/context-files.d.ts +22 -0
  207. package/dist/oni-code/context-files.d.ts.map +1 -0
  208. package/dist/oni-code/context-files.js +156 -0
  209. package/dist/oni-code/context-files.js.map +1 -0
  210. package/dist/oni-code/cron/humanize.d.ts +26 -0
  211. package/dist/oni-code/cron/humanize.d.ts.map +1 -0
  212. package/dist/oni-code/cron/humanize.js +83 -0
  213. package/dist/oni-code/cron/humanize.js.map +1 -0
  214. package/dist/oni-code/cron/index.d.ts +10 -0
  215. package/dist/oni-code/cron/index.d.ts.map +1 -0
  216. package/dist/oni-code/cron/index.js +7 -0
  217. package/dist/oni-code/cron/index.js.map +1 -0
  218. package/dist/oni-code/cron/matcher.d.ts +29 -0
  219. package/dist/oni-code/cron/matcher.d.ts.map +1 -0
  220. package/dist/oni-code/cron/matcher.js +73 -0
  221. package/dist/oni-code/cron/matcher.js.map +1 -0
  222. package/dist/oni-code/cron/parser.d.ts +27 -0
  223. package/dist/oni-code/cron/parser.d.ts.map +1 -0
  224. package/dist/oni-code/cron/parser.js +149 -0
  225. package/dist/oni-code/cron/parser.js.map +1 -0
  226. package/dist/oni-code/cron/persistence.d.ts +21 -0
  227. package/dist/oni-code/cron/persistence.d.ts.map +1 -0
  228. package/dist/oni-code/cron/persistence.js +58 -0
  229. package/dist/oni-code/cron/persistence.js.map +1 -0
  230. package/dist/oni-code/cron/scheduler.d.ts +64 -0
  231. package/dist/oni-code/cron/scheduler.d.ts.map +1 -0
  232. package/dist/oni-code/cron/scheduler.js +188 -0
  233. package/dist/oni-code/cron/scheduler.js.map +1 -0
  234. package/dist/oni-code/cron/store.d.ts +46 -0
  235. package/dist/oni-code/cron/store.d.ts.map +1 -0
  236. package/dist/oni-code/cron/store.js +68 -0
  237. package/dist/oni-code/cron/store.js.map +1 -0
  238. package/dist/oni-code/env.d.ts +17 -0
  239. package/dist/oni-code/env.d.ts.map +1 -0
  240. package/dist/oni-code/env.js +51 -0
  241. package/dist/oni-code/env.js.map +1 -0
  242. package/dist/oni-code/file-reader.d.ts +28 -0
  243. package/dist/oni-code/file-reader.d.ts.map +1 -0
  244. package/dist/oni-code/file-reader.js +368 -0
  245. package/dist/oni-code/file-reader.js.map +1 -0
  246. package/dist/oni-code/file-watcher.d.ts +66 -0
  247. package/dist/oni-code/file-watcher.d.ts.map +1 -0
  248. package/dist/oni-code/file-watcher.js +167 -0
  249. package/dist/oni-code/file-watcher.js.map +1 -0
  250. package/dist/oni-code/loop-detector.d.ts +64 -0
  251. package/dist/oni-code/loop-detector.d.ts.map +1 -0
  252. package/dist/oni-code/loop-detector.js +163 -0
  253. package/dist/oni-code/loop-detector.js.map +1 -0
  254. package/dist/oni-code/permissions.d.ts +43 -0
  255. package/dist/oni-code/permissions.d.ts.map +1 -0
  256. package/dist/oni-code/permissions.js +98 -0
  257. package/dist/oni-code/permissions.js.map +1 -0
  258. package/dist/oni-code/planner.d.ts +26 -0
  259. package/dist/oni-code/planner.d.ts.map +1 -0
  260. package/dist/oni-code/planner.js +86 -0
  261. package/dist/oni-code/planner.js.map +1 -0
  262. package/dist/oni-code/plugin-loader.d.ts +103 -0
  263. package/dist/oni-code/plugin-loader.d.ts.map +1 -0
  264. package/dist/oni-code/plugin-loader.js +171 -0
  265. package/dist/oni-code/plugin-loader.js.map +1 -0
  266. package/dist/oni-code/process-tree.d.ts +44 -0
  267. package/dist/oni-code/process-tree.d.ts.map +1 -0
  268. package/dist/oni-code/process-tree.js +107 -0
  269. package/dist/oni-code/process-tree.js.map +1 -0
  270. package/dist/oni-code/progress-tracker.d.ts +40 -0
  271. package/dist/oni-code/progress-tracker.d.ts.map +1 -0
  272. package/dist/oni-code/progress-tracker.js +375 -0
  273. package/dist/oni-code/progress-tracker.js.map +1 -0
  274. package/dist/oni-code/scheduler.d.ts +56 -0
  275. package/dist/oni-code/scheduler.d.ts.map +1 -0
  276. package/dist/oni-code/scheduler.js +105 -0
  277. package/dist/oni-code/scheduler.js.map +1 -0
  278. package/dist/oni-code/session-fork.d.ts +146 -0
  279. package/dist/oni-code/session-fork.d.ts.map +1 -0
  280. package/dist/oni-code/session-fork.js +238 -0
  281. package/dist/oni-code/session-fork.js.map +1 -0
  282. package/dist/oni-code/session-stats.d.ts +72 -0
  283. package/dist/oni-code/session-stats.d.ts.map +1 -0
  284. package/dist/oni-code/session-stats.js +141 -0
  285. package/dist/oni-code/session-stats.js.map +1 -0
  286. package/dist/oni-code/session-title.d.ts +25 -0
  287. package/dist/oni-code/session-title.d.ts.map +1 -0
  288. package/dist/oni-code/session-title.js +67 -0
  289. package/dist/oni-code/session-title.js.map +1 -0
  290. package/dist/oni-code/shell-parser.d.ts +112 -0
  291. package/dist/oni-code/shell-parser.d.ts.map +1 -0
  292. package/dist/oni-code/shell-parser.js +657 -0
  293. package/dist/oni-code/shell-parser.js.map +1 -0
  294. package/dist/oni-code/summarizer.d.ts +27 -0
  295. package/dist/oni-code/summarizer.d.ts.map +1 -0
  296. package/dist/oni-code/summarizer.js +70 -0
  297. package/dist/oni-code/summarizer.js.map +1 -0
  298. package/dist/oni-code/swarm-checkpoint.d.ts +52 -0
  299. package/dist/oni-code/swarm-checkpoint.d.ts.map +1 -0
  300. package/dist/oni-code/swarm-checkpoint.js +71 -0
  301. package/dist/oni-code/swarm-checkpoint.js.map +1 -0
  302. package/dist/oni-code/swarm-runner.d.ts +173 -0
  303. package/dist/oni-code/swarm-runner.d.ts.map +1 -0
  304. package/dist/oni-code/swarm-runner.js +873 -0
  305. package/dist/oni-code/swarm-runner.js.map +1 -0
  306. package/dist/oni-code/system-prompt.d.ts +13 -0
  307. package/dist/oni-code/system-prompt.d.ts.map +1 -0
  308. package/dist/oni-code/system-prompt.js +64 -0
  309. package/dist/oni-code/system-prompt.js.map +1 -0
  310. package/dist/oni-code/task-evaluator.d.ts +73 -0
  311. package/dist/oni-code/task-evaluator.d.ts.map +1 -0
  312. package/dist/oni-code/task-evaluator.js +172 -0
  313. package/dist/oni-code/task-evaluator.js.map +1 -0
  314. package/dist/oni-code/tools/batch.d.ts +12 -0
  315. package/dist/oni-code/tools/batch.d.ts.map +1 -0
  316. package/dist/oni-code/tools/batch.js +116 -0
  317. package/dist/oni-code/tools/batch.js.map +1 -0
  318. package/dist/oni-code/tools/coding.d.ts +10 -0
  319. package/dist/oni-code/tools/coding.d.ts.map +1 -0
  320. package/dist/oni-code/tools/coding.js +557 -0
  321. package/dist/oni-code/tools/coding.js.map +1 -0
  322. package/dist/oni-code/tools/cron.d.ts +4 -0
  323. package/dist/oni-code/tools/cron.d.ts.map +1 -0
  324. package/dist/oni-code/tools/cron.js +120 -0
  325. package/dist/oni-code/tools/cron.js.map +1 -0
  326. package/dist/oni-code/tools/custom.d.ts +43 -0
  327. package/dist/oni-code/tools/custom.d.ts.map +1 -0
  328. package/dist/oni-code/tools/custom.js +115 -0
  329. package/dist/oni-code/tools/custom.js.map +1 -0
  330. package/dist/oni-code/tools/patch.d.ts +58 -0
  331. package/dist/oni-code/tools/patch.d.ts.map +1 -0
  332. package/dist/oni-code/tools/patch.js +247 -0
  333. package/dist/oni-code/tools/patch.js.map +1 -0
  334. package/dist/oni-code/tools/plan.d.ts +17 -0
  335. package/dist/oni-code/tools/plan.d.ts.map +1 -0
  336. package/dist/oni-code/tools/plan.js +48 -0
  337. package/dist/oni-code/tools/plan.js.map +1 -0
  338. package/dist/oni-code/tools/question.d.ts +17 -0
  339. package/dist/oni-code/tools/question.d.ts.map +1 -0
  340. package/dist/oni-code/tools/question.js +46 -0
  341. package/dist/oni-code/tools/question.js.map +1 -0
  342. package/dist/oni-code/tools/skill.d.ts +36 -0
  343. package/dist/oni-code/tools/skill.d.ts.map +1 -0
  344. package/dist/oni-code/tools/skill.js +132 -0
  345. package/dist/oni-code/tools/skill.js.map +1 -0
  346. package/dist/oni-code/tools/spawn-agents.d.ts +37 -0
  347. package/dist/oni-code/tools/spawn-agents.d.ts.map +1 -0
  348. package/dist/oni-code/tools/spawn-agents.js +91 -0
  349. package/dist/oni-code/tools/spawn-agents.js.map +1 -0
  350. package/dist/oni-code/tools/spawn-swarm.d.ts +70 -0
  351. package/dist/oni-code/tools/spawn-swarm.d.ts.map +1 -0
  352. package/dist/oni-code/tools/spawn-swarm.js +129 -0
  353. package/dist/oni-code/tools/spawn-swarm.js.map +1 -0
  354. package/dist/oni-code/tools/web.d.ts +11 -0
  355. package/dist/oni-code/tools/web.d.ts.map +1 -0
  356. package/dist/oni-code/tools/web.js +375 -0
  357. package/dist/oni-code/tools/web.js.map +1 -0
  358. package/dist/oni-code/topology-agent-builder.d.ts +22 -0
  359. package/dist/oni-code/topology-agent-builder.d.ts.map +1 -0
  360. package/dist/oni-code/topology-agent-builder.js +220 -0
  361. package/dist/oni-code/topology-agent-builder.js.map +1 -0
  362. package/dist/oni-code/topology-selector.d.ts +85 -0
  363. package/dist/oni-code/topology-selector.d.ts.map +1 -0
  364. package/dist/oni-code/topology-selector.js +338 -0
  365. package/dist/oni-code/topology-selector.js.map +1 -0
  366. package/dist/oni-code/ui/App.d.ts +10 -0
  367. package/dist/oni-code/ui/App.d.ts.map +1 -0
  368. package/dist/oni-code/ui/App.js +395 -0
  369. package/dist/oni-code/ui/App.js.map +1 -0
  370. package/dist/oni-code/ui/FooterPanel.d.ts +16 -0
  371. package/dist/oni-code/ui/FooterPanel.d.ts.map +1 -0
  372. package/dist/oni-code/ui/FooterPanel.js +56 -0
  373. package/dist/oni-code/ui/FooterPanel.js.map +1 -0
  374. package/dist/oni-code/ui/Header.d.ts +21 -0
  375. package/dist/oni-code/ui/Header.d.ts.map +1 -0
  376. package/dist/oni-code/ui/Header.js +105 -0
  377. package/dist/oni-code/ui/Header.js.map +1 -0
  378. package/dist/oni-code/ui/InputArea.d.ts +11 -0
  379. package/dist/oni-code/ui/InputArea.d.ts.map +1 -0
  380. package/dist/oni-code/ui/InputArea.js +82 -0
  381. package/dist/oni-code/ui/InputArea.js.map +1 -0
  382. package/dist/oni-code/ui/MessageBlock.d.ts +11 -0
  383. package/dist/oni-code/ui/MessageBlock.d.ts.map +1 -0
  384. package/dist/oni-code/ui/MessageBlock.js +103 -0
  385. package/dist/oni-code/ui/MessageBlock.js.map +1 -0
  386. package/dist/oni-code/ui/OutputPane.d.ts +12 -0
  387. package/dist/oni-code/ui/OutputPane.d.ts.map +1 -0
  388. package/dist/oni-code/ui/OutputPane.js +8 -0
  389. package/dist/oni-code/ui/OutputPane.js.map +1 -0
  390. package/dist/oni-code/ui/PermissionPrompt.d.ts +11 -0
  391. package/dist/oni-code/ui/PermissionPrompt.d.ts.map +1 -0
  392. package/dist/oni-code/ui/PermissionPrompt.js +48 -0
  393. package/dist/oni-code/ui/PermissionPrompt.js.map +1 -0
  394. package/dist/oni-code/ui/QuestionPrompt.d.ts +8 -0
  395. package/dist/oni-code/ui/QuestionPrompt.d.ts.map +1 -0
  396. package/dist/oni-code/ui/QuestionPrompt.js +9 -0
  397. package/dist/oni-code/ui/QuestionPrompt.js.map +1 -0
  398. package/dist/oni-code/ui/StatusLine.d.ts +14 -0
  399. package/dist/oni-code/ui/StatusLine.d.ts.map +1 -0
  400. package/dist/oni-code/ui/StatusLine.js +23 -0
  401. package/dist/oni-code/ui/StatusLine.js.map +1 -0
  402. package/dist/oni-code/ui/SwarmPanel.d.ts +9 -0
  403. package/dist/oni-code/ui/SwarmPanel.d.ts.map +1 -0
  404. package/dist/oni-code/ui/SwarmPanel.js +52 -0
  405. package/dist/oni-code/ui/SwarmPanel.js.map +1 -0
  406. package/dist/oni-code/ui/ToolCallBlock.d.ts +10 -0
  407. package/dist/oni-code/ui/ToolCallBlock.d.ts.map +1 -0
  408. package/dist/oni-code/ui/ToolCallBlock.js +21 -0
  409. package/dist/oni-code/ui/ToolCallBlock.js.map +1 -0
  410. package/dist/oni-code/ui/Toolbar.d.ts +8 -0
  411. package/dist/oni-code/ui/Toolbar.d.ts.map +1 -0
  412. package/dist/oni-code/ui/Toolbar.js +11 -0
  413. package/dist/oni-code/ui/Toolbar.js.map +1 -0
  414. package/dist/oni-code/ui/WelcomeBanner.d.ts +12 -0
  415. package/dist/oni-code/ui/WelcomeBanner.d.ts.map +1 -0
  416. package/dist/oni-code/ui/WelcomeBanner.js +24 -0
  417. package/dist/oni-code/ui/WelcomeBanner.js.map +1 -0
  418. package/dist/oni-code/ui/activity.d.ts +15 -0
  419. package/dist/oni-code/ui/activity.d.ts.map +1 -0
  420. package/dist/oni-code/ui/activity.js +252 -0
  421. package/dist/oni-code/ui/activity.js.map +1 -0
  422. package/dist/oni-code/ui/banner.d.ts +16 -0
  423. package/dist/oni-code/ui/banner.d.ts.map +1 -0
  424. package/dist/oni-code/ui/banner.js +132 -0
  425. package/dist/oni-code/ui/banner.js.map +1 -0
  426. package/dist/oni-code/ui/command-menu.d.ts +7 -0
  427. package/dist/oni-code/ui/command-menu.d.ts.map +1 -0
  428. package/dist/oni-code/ui/command-menu.js +20 -0
  429. package/dist/oni-code/ui/command-menu.js.map +1 -0
  430. package/dist/oni-code/ui/diff.d.ts +17 -0
  431. package/dist/oni-code/ui/diff.d.ts.map +1 -0
  432. package/dist/oni-code/ui/diff.js +37 -0
  433. package/dist/oni-code/ui/diff.js.map +1 -0
  434. package/dist/oni-code/ui/format.d.ts +41 -0
  435. package/dist/oni-code/ui/format.d.ts.map +1 -0
  436. package/dist/oni-code/ui/format.js +223 -0
  437. package/dist/oni-code/ui/format.js.map +1 -0
  438. package/dist/oni-code/ui/input.d.ts +28 -0
  439. package/dist/oni-code/ui/input.d.ts.map +1 -0
  440. package/dist/oni-code/ui/input.js +216 -0
  441. package/dist/oni-code/ui/input.js.map +1 -0
  442. package/dist/oni-code/ui/insights.d.ts +39 -0
  443. package/dist/oni-code/ui/insights.d.ts.map +1 -0
  444. package/dist/oni-code/ui/insights.js +193 -0
  445. package/dist/oni-code/ui/insights.js.map +1 -0
  446. package/dist/oni-code/ui/markdown.d.ts +9 -0
  447. package/dist/oni-code/ui/markdown.d.ts.map +1 -0
  448. package/dist/oni-code/ui/markdown.js +44 -0
  449. package/dist/oni-code/ui/markdown.js.map +1 -0
  450. package/dist/oni-code/ui/panels.d.ts +39 -0
  451. package/dist/oni-code/ui/panels.d.ts.map +1 -0
  452. package/dist/oni-code/ui/panels.js +209 -0
  453. package/dist/oni-code/ui/panels.js.map +1 -0
  454. package/dist/oni-code/ui/paste.d.ts +17 -0
  455. package/dist/oni-code/ui/paste.d.ts.map +1 -0
  456. package/dist/oni-code/ui/paste.js +45 -0
  457. package/dist/oni-code/ui/paste.js.map +1 -0
  458. package/dist/oni-code/ui/raw-spinner.d.ts +37 -0
  459. package/dist/oni-code/ui/raw-spinner.d.ts.map +1 -0
  460. package/dist/oni-code/ui/raw-spinner.js +121 -0
  461. package/dist/oni-code/ui/raw-spinner.js.map +1 -0
  462. package/dist/oni-code/ui/session.d.ts +44 -0
  463. package/dist/oni-code/ui/session.d.ts.map +1 -0
  464. package/dist/oni-code/ui/session.js +93 -0
  465. package/dist/oni-code/ui/session.js.map +1 -0
  466. package/dist/oni-code/ui/spinner.d.ts +7 -0
  467. package/dist/oni-code/ui/spinner.d.ts.map +1 -0
  468. package/dist/oni-code/ui/spinner.js +20 -0
  469. package/dist/oni-code/ui/spinner.js.map +1 -0
  470. package/dist/oni-code/ui/swarm-activity.d.ts +50 -0
  471. package/dist/oni-code/ui/swarm-activity.d.ts.map +1 -0
  472. package/dist/oni-code/ui/swarm-activity.js +233 -0
  473. package/dist/oni-code/ui/swarm-activity.js.map +1 -0
  474. package/dist/oni-code/ui/terminal-size.d.ts +18 -0
  475. package/dist/oni-code/ui/terminal-size.d.ts.map +1 -0
  476. package/dist/oni-code/ui/terminal-size.js +45 -0
  477. package/dist/oni-code/ui/terminal-size.js.map +1 -0
  478. package/dist/oni-code/ui/theme.d.ts +82 -0
  479. package/dist/oni-code/ui/theme.d.ts.map +1 -0
  480. package/dist/oni-code/ui/theme.js +101 -0
  481. package/dist/oni-code/ui/theme.js.map +1 -0
  482. package/dist/oni-code/ui/tool-utils.d.ts +10 -0
  483. package/dist/oni-code/ui/tool-utils.d.ts.map +1 -0
  484. package/dist/oni-code/ui/tool-utils.js +82 -0
  485. package/dist/oni-code/ui/tool-utils.js.map +1 -0
  486. package/dist/oni-code/ui/useTerminalSize.d.ts +3 -0
  487. package/dist/oni-code/ui/useTerminalSize.d.ts.map +1 -0
  488. package/dist/oni-code/ui/useTerminalSize.js +16 -0
  489. package/dist/oni-code/ui/useTerminalSize.js.map +1 -0
  490. package/dist/oni-code/workspace/change-tracker.d.ts +18 -0
  491. package/dist/oni-code/workspace/change-tracker.d.ts.map +1 -0
  492. package/dist/oni-code/workspace/change-tracker.js +67 -0
  493. package/dist/oni-code/workspace/change-tracker.js.map +1 -0
  494. package/dist/oni-code/workspace/conflict-detector.d.ts +12 -0
  495. package/dist/oni-code/workspace/conflict-detector.d.ts.map +1 -0
  496. package/dist/oni-code/workspace/conflict-detector.js +24 -0
  497. package/dist/oni-code/workspace/conflict-detector.js.map +1 -0
  498. package/dist/oni-code/workspace/file-snapshots.d.ts +39 -0
  499. package/dist/oni-code/workspace/file-snapshots.d.ts.map +1 -0
  500. package/dist/oni-code/workspace/file-snapshots.js +77 -0
  501. package/dist/oni-code/workspace/file-snapshots.js.map +1 -0
  502. package/dist/oni-code/workspace/index.d.ts +5 -0
  503. package/dist/oni-code/workspace/index.d.ts.map +1 -0
  504. package/dist/oni-code/workspace/index.js +5 -0
  505. package/dist/oni-code/workspace/index.js.map +1 -0
  506. package/dist/oni-code/workspace/project-map.d.ts +14 -0
  507. package/dist/oni-code/workspace/project-map.d.ts.map +1 -0
  508. package/dist/oni-code/workspace/project-map.js +91 -0
  509. package/dist/oni-code/workspace/project-map.js.map +1 -0
  510. package/dist/pregel.d.ts +4 -0
  511. package/dist/pregel.d.ts.map +1 -1
  512. package/dist/pregel.js +121 -54
  513. package/dist/pregel.js.map +1 -1
  514. package/dist/retry.d.ts.map +1 -1
  515. package/dist/retry.js +10 -3
  516. package/dist/retry.js.map +1 -1
  517. package/dist/sentinel/config/index.d.ts +2 -0
  518. package/dist/sentinel/config/index.d.ts.map +1 -0
  519. package/dist/sentinel/config/index.js +2 -0
  520. package/dist/sentinel/config/index.js.map +1 -0
  521. package/dist/sentinel/config/schema.d.ts +4 -0
  522. package/dist/sentinel/config/schema.d.ts.map +1 -0
  523. package/dist/sentinel/config/schema.js +42 -0
  524. package/dist/sentinel/config/schema.js.map +1 -0
  525. package/dist/sentinel/debate/index.d.ts +6 -0
  526. package/dist/sentinel/debate/index.d.ts.map +1 -0
  527. package/dist/sentinel/debate/index.js +64 -0
  528. package/dist/sentinel/debate/index.js.map +1 -0
  529. package/dist/sentinel/debate/prompts.d.ts +4 -0
  530. package/dist/sentinel/debate/prompts.d.ts.map +1 -0
  531. package/dist/sentinel/debate/prompts.js +13 -0
  532. package/dist/sentinel/debate/prompts.js.map +1 -0
  533. package/dist/sentinel/fix/index.d.ts +6 -0
  534. package/dist/sentinel/fix/index.d.ts.map +1 -0
  535. package/dist/sentinel/fix/index.js +27 -0
  536. package/dist/sentinel/fix/index.js.map +1 -0
  537. package/dist/sentinel/fix/strategies.d.ts +9 -0
  538. package/dist/sentinel/fix/strategies.d.ts.map +1 -0
  539. package/dist/sentinel/fix/strategies.js +40 -0
  540. package/dist/sentinel/fix/strategies.js.map +1 -0
  541. package/dist/sentinel/index.d.ts +14 -0
  542. package/dist/sentinel/index.d.ts.map +1 -0
  543. package/dist/sentinel/index.js +22 -0
  544. package/dist/sentinel/index.js.map +1 -0
  545. package/dist/sentinel/integrations/cli.d.ts +10 -0
  546. package/dist/sentinel/integrations/cli.d.ts.map +1 -0
  547. package/dist/sentinel/integrations/cli.js +24 -0
  548. package/dist/sentinel/integrations/cli.js.map +1 -0
  549. package/dist/sentinel/integrations/index.d.ts +2 -0
  550. package/dist/sentinel/integrations/index.d.ts.map +1 -0
  551. package/dist/sentinel/integrations/index.js +2 -0
  552. package/dist/sentinel/integrations/index.js.map +1 -0
  553. package/dist/sentinel/memory/index.d.ts +16 -0
  554. package/dist/sentinel/memory/index.d.ts.map +1 -0
  555. package/dist/sentinel/memory/index.js +60 -0
  556. package/dist/sentinel/memory/index.js.map +1 -0
  557. package/dist/sentinel/report/console.d.ts +3 -0
  558. package/dist/sentinel/report/console.d.ts.map +1 -0
  559. package/dist/sentinel/report/console.js +27 -0
  560. package/dist/sentinel/report/console.js.map +1 -0
  561. package/dist/sentinel/report/github.d.ts +3 -0
  562. package/dist/sentinel/report/github.d.ts.map +1 -0
  563. package/dist/sentinel/report/github.js +36 -0
  564. package/dist/sentinel/report/github.js.map +1 -0
  565. package/dist/sentinel/report/index.d.ts +6 -0
  566. package/dist/sentinel/report/index.d.ts.map +1 -0
  567. package/dist/sentinel/report/index.js +15 -0
  568. package/dist/sentinel/report/index.js.map +1 -0
  569. package/dist/sentinel/report/sarif.d.ts +3 -0
  570. package/dist/sentinel/report/sarif.d.ts.map +1 -0
  571. package/dist/sentinel/report/sarif.js +29 -0
  572. package/dist/sentinel/report/sarif.js.map +1 -0
  573. package/dist/sentinel/sentinel.d.ts +17 -0
  574. package/dist/sentinel/sentinel.d.ts.map +1 -0
  575. package/dist/sentinel/sentinel.js +111 -0
  576. package/dist/sentinel/sentinel.js.map +1 -0
  577. package/dist/sentinel/swarm/agents.d.ts +6 -0
  578. package/dist/sentinel/swarm/agents.d.ts.map +1 -0
  579. package/dist/sentinel/swarm/agents.js +36 -0
  580. package/dist/sentinel/swarm/agents.js.map +1 -0
  581. package/dist/sentinel/swarm/index.d.ts +8 -0
  582. package/dist/sentinel/swarm/index.d.ts.map +1 -0
  583. package/dist/sentinel/swarm/index.js +74 -0
  584. package/dist/sentinel/swarm/index.js.map +1 -0
  585. package/dist/sentinel/swarm/prompts.d.ts +2 -0
  586. package/dist/sentinel/swarm/prompts.d.ts.map +1 -0
  587. package/dist/sentinel/swarm/prompts.js +24 -0
  588. package/dist/sentinel/swarm/prompts.js.map +1 -0
  589. package/dist/sentinel/swarm/topology.d.ts +10 -0
  590. package/dist/sentinel/swarm/topology.d.ts.map +1 -0
  591. package/dist/sentinel/swarm/topology.js +38 -0
  592. package/dist/sentinel/swarm/topology.js.map +1 -0
  593. package/dist/sentinel/triage/analyzers/complexity-analyzer.d.ts +7 -0
  594. package/dist/sentinel/triage/analyzers/complexity-analyzer.d.ts.map +1 -0
  595. package/dist/sentinel/triage/analyzers/complexity-analyzer.js +94 -0
  596. package/dist/sentinel/triage/analyzers/complexity-analyzer.js.map +1 -0
  597. package/dist/sentinel/triage/analyzers/custom-analyzer.d.ts +19 -0
  598. package/dist/sentinel/triage/analyzers/custom-analyzer.d.ts.map +1 -0
  599. package/dist/sentinel/triage/analyzers/custom-analyzer.js +268 -0
  600. package/dist/sentinel/triage/analyzers/custom-analyzer.js.map +1 -0
  601. package/dist/sentinel/triage/analyzers/dependency-analyzer.d.ts +26 -0
  602. package/dist/sentinel/triage/analyzers/dependency-analyzer.d.ts.map +1 -0
  603. package/dist/sentinel/triage/analyzers/dependency-analyzer.js +220 -0
  604. package/dist/sentinel/triage/analyzers/dependency-analyzer.js.map +1 -0
  605. package/dist/sentinel/triage/analyzers/diff-analyzer.d.ts +12 -0
  606. package/dist/sentinel/triage/analyzers/diff-analyzer.d.ts.map +1 -0
  607. package/dist/sentinel/triage/analyzers/diff-analyzer.js +19 -0
  608. package/dist/sentinel/triage/analyzers/diff-analyzer.js.map +1 -0
  609. package/dist/sentinel/triage/analyzers/index.d.ts +14 -0
  610. package/dist/sentinel/triage/analyzers/index.d.ts.map +1 -0
  611. package/dist/sentinel/triage/analyzers/index.js +25 -0
  612. package/dist/sentinel/triage/analyzers/index.js.map +1 -0
  613. package/dist/sentinel/triage/analyzers/pattern-analyzer.d.ts +7 -0
  614. package/dist/sentinel/triage/analyzers/pattern-analyzer.d.ts.map +1 -0
  615. package/dist/sentinel/triage/analyzers/pattern-analyzer.js +180 -0
  616. package/dist/sentinel/triage/analyzers/pattern-analyzer.js.map +1 -0
  617. package/dist/sentinel/triage/analyzers/security-analyzer.d.ts +7 -0
  618. package/dist/sentinel/triage/analyzers/security-analyzer.d.ts.map +1 -0
  619. package/dist/sentinel/triage/analyzers/security-analyzer.js +96 -0
  620. package/dist/sentinel/triage/analyzers/security-analyzer.js.map +1 -0
  621. package/dist/sentinel/triage/analyzers/ts-parser.d.ts +71 -0
  622. package/dist/sentinel/triage/analyzers/ts-parser.d.ts.map +1 -0
  623. package/dist/sentinel/triage/analyzers/ts-parser.js +323 -0
  624. package/dist/sentinel/triage/analyzers/ts-parser.js.map +1 -0
  625. package/dist/sentinel/triage/analyzers/typescript-analyzer.d.ts +7 -0
  626. package/dist/sentinel/triage/analyzers/typescript-analyzer.d.ts.map +1 -0
  627. package/dist/sentinel/triage/analyzers/typescript-analyzer.js +68 -0
  628. package/dist/sentinel/triage/analyzers/typescript-analyzer.js.map +1 -0
  629. package/dist/sentinel/triage/index.d.ts +10 -0
  630. package/dist/sentinel/triage/index.d.ts.map +1 -0
  631. package/dist/sentinel/triage/index.js +39 -0
  632. package/dist/sentinel/triage/index.js.map +1 -0
  633. package/dist/sentinel/triage/scorer.d.ts +9 -0
  634. package/dist/sentinel/triage/scorer.d.ts.map +1 -0
  635. package/dist/sentinel/triage/scorer.js +28 -0
  636. package/dist/sentinel/triage/scorer.js.map +1 -0
  637. package/dist/sentinel/types.d.ts +125 -0
  638. package/dist/sentinel/types.d.ts.map +1 -0
  639. package/dist/sentinel/types.js +6 -0
  640. package/dist/sentinel/types.js.map +1 -0
  641. package/dist/store/index.d.ts +3 -0
  642. package/dist/store/index.d.ts.map +1 -1
  643. package/dist/store/index.js +17 -0
  644. package/dist/store/index.js.map +1 -1
  645. package/dist/streaming.d.ts +4 -1
  646. package/dist/streaming.d.ts.map +1 -1
  647. package/dist/streaming.js +21 -7
  648. package/dist/streaming.js.map +1 -1
  649. package/dist/swarm/graph.d.ts +81 -2
  650. package/dist/swarm/graph.d.ts.map +1 -1
  651. package/dist/swarm/graph.js +517 -32
  652. package/dist/swarm/graph.js.map +1 -1
  653. package/dist/swarm/index.d.ts +10 -2
  654. package/dist/swarm/index.d.ts.map +1 -1
  655. package/dist/swarm/index.js +6 -1
  656. package/dist/swarm/index.js.map +1 -1
  657. package/dist/swarm/mermaid.d.ts +10 -0
  658. package/dist/swarm/mermaid.d.ts.map +1 -0
  659. package/dist/swarm/mermaid.js +64 -0
  660. package/dist/swarm/mermaid.js.map +1 -0
  661. package/dist/swarm/pool.d.ts +9 -1
  662. package/dist/swarm/pool.d.ts.map +1 -1
  663. package/dist/swarm/pool.js +58 -10
  664. package/dist/swarm/pool.js.map +1 -1
  665. package/dist/swarm/registry.d.ts +11 -1
  666. package/dist/swarm/registry.d.ts.map +1 -1
  667. package/dist/swarm/registry.js +17 -3
  668. package/dist/swarm/registry.js.map +1 -1
  669. package/dist/swarm/scaling.d.ts +95 -0
  670. package/dist/swarm/scaling.d.ts.map +1 -0
  671. package/dist/swarm/scaling.js +214 -0
  672. package/dist/swarm/scaling.js.map +1 -0
  673. package/dist/swarm/snapshot.d.ts +51 -0
  674. package/dist/swarm/snapshot.d.ts.map +1 -0
  675. package/dist/swarm/snapshot.js +115 -0
  676. package/dist/swarm/snapshot.js.map +1 -0
  677. package/dist/swarm/supervisor.d.ts.map +1 -1
  678. package/dist/swarm/supervisor.js +82 -0
  679. package/dist/swarm/supervisor.js.map +1 -1
  680. package/dist/swarm/tracer.d.ts +57 -0
  681. package/dist/swarm/tracer.d.ts.map +1 -0
  682. package/dist/swarm/tracer.js +138 -0
  683. package/dist/swarm/tracer.js.map +1 -0
  684. package/dist/swarm/types.d.ts +23 -1
  685. package/dist/swarm/types.d.ts.map +1 -1
  686. package/dist/swarm/types.js.map +1 -1
  687. package/dist/tools/types.d.ts +2 -0
  688. package/dist/tools/types.d.ts.map +1 -1
  689. package/package.json +160 -141
package/CHANGELOG.md CHANGED
@@ -5,6 +5,21 @@ All notable changes to @oni.bot/core are documented here.
5
5
  Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
6
6
  This project uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.0.0] — 2026-03-13
9
+
10
+ ### Breaking Changes
11
+ - `oni-code` AI coding assistant extracted to `@oni.bot/code` (separate package)
12
+ - `sentinel` code analysis engine extracted to `@oni.bot/sentinel` (separate package)
13
+ - `oni` and `oni-code` CLI binaries removed from this package (install `@oni.bot/code` for the CLI)
14
+
15
+ ### Added
16
+ - `./config` sub-module export (`@oni.bot/core/config`) — JSONC config loader with env var substitution and hierarchical merge
17
+ - `"sideEffects": false` — enables full tree shaking in bundlers
18
+
19
+ ### Framework
20
+ - 5 model adapters (anthropic, openai, openrouter, google, ollama) — zero runtime dependencies
21
+ - 21 total exports: root + 20 named subpaths
22
+
8
23
  ## [0.7.0] - 2026-03-08
9
24
 
10
25
  ### Added
package/README.md CHANGED
@@ -2,422 +2,108 @@
2
2
  <strong>@oni.bot/core</strong>
3
3
  </p>
4
4
 
5
- <h3 align="center">The graph execution engine for agent swarms.</h3>
6
-
7
- <p align="center">
8
- Production-grade orchestration with zero dependencies.
9
- </p>
5
+ <h3 align="center">The graph execution engine for production agent swarms.</h3>
10
6
 
11
7
  <p align="center">
12
8
  <a href="https://www.npmjs.com/package/@oni.bot/core"><img src="https://img.shields.io/npm/v/@oni.bot/core.svg" alt="npm version" /></a>
13
- <a href="https://github.com/oni-bot/core/actions"><img src="https://img.shields.io/github/actions/workflow/status/oni-bot/core/ci.yml?label=tests" alt="tests" /></a>
14
- <img src="https://img.shields.io/badge/dependencies-0-brightgreen" alt="zero dependencies" />
15
- <img src="https://img.shields.io/badge/TypeScript-strict-blue" alt="TypeScript strict" />
16
9
  <a href="./LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="MIT License" /></a>
10
+ <img src="https://img.shields.io/badge/dependencies-0-brightgreen" alt="zero dependencies" />
17
11
  </p>
18
12
 
19
13
  ---
20
14
 
21
- ## Why ONI
22
-
23
- Most agent frameworks make the easy things easy and the hard things impossible. You can spin up a chatbot in ten lines, but the moment you need four agents coordinating with retries, circuit breakers, and human approval gates, you're writing glue code from scratch.
24
-
25
- ONI was built for the hard things:
26
-
27
- - **Multi-agent orchestration is a first-class primitive.** Seven swarm templates ship out of the box -- hierarchical, fan-out, pipeline, peer-network, map-reduce, debate, and hierarchical-mesh. Pick one, plug in your agents, and go.
28
- - **Zero runtime dependencies.** The entire engine is self-contained TypeScript. No framework lock-in, no transitive supply-chain risk. Runs in Node, serverless functions, and edge runtimes without adaptation.
29
- - **Production-grade from day one.** Circuit breakers, node timeouts, dead letter queues, retry with exponential backoff, OpenTelemetry tracing, and checkpointing with time-travel debugging. These aren't afterthoughts -- they're wired into the execution engine.
30
- - **Type-safe end to end.** Full generics on state, channels, and node returns. TypeScript strict mode. If your graph compiles, it runs.
31
-
32
- ---
33
-
34
- ## Quick Start
15
+ ## Install
35
16
 
36
17
  ```bash
37
18
  npm install @oni.bot/core
38
19
  ```
39
20
 
40
- ```ts
41
- import { StateGraph, START, END, lastValue, appendList } from "@oni.bot/core";
42
-
43
- type State = { query: string; answer: string; log: string[] };
44
-
45
- const graph = new StateGraph<State>({
46
- channels: {
47
- query: lastValue(() => ""),
48
- answer: lastValue(() => ""),
49
- log: appendList(() => []),
50
- },
51
- });
52
-
53
- graph.addNode("think", async (state) => {
54
- return { answer: `Processed: ${state.query}`, log: ["think ran"] };
55
- });
56
-
57
- graph.addEdge(START, "think");
58
- graph.addEdge("think", END);
59
-
60
- const app = graph.compile();
61
- const result = await app.invoke({ query: "What is ONI?" });
62
- console.log(result.answer); // "Processed: What is ONI?"
63
- ```
21
+ - **Zero runtime dependencies.** Self-contained TypeScript. No transitive supply-chain risk. Runs in Node.js 18+, serverless functions, and edge runtimes without adaptation.
22
+ - **5 model adapters via raw HTTP.** Anthropic, OpenAI, OpenRouter, Google, and Ollama no vendor SDKs required.
23
+ - **21 exports.** Root package plus 20 named subpaths for precise tree shaking.
64
24
 
65
25
  ---
66
26
 
67
- ## Multi-Agent Swarm
68
-
69
- Build coordinated agent teams with a single function call:
70
-
71
- ```ts
72
- import { SwarmGraph } from "@oni.bot/core/swarm";
73
- import { defineAgent } from "@oni.bot/core/agents";
74
- import { anthropic } from "@oni.bot/core/models";
75
-
76
- const researcher = defineAgent({
77
- name: "researcher",
78
- model: anthropic("claude-sonnet-4-6"),
79
- systemPrompt: "You research topics thoroughly.",
80
- tools: [webSearch],
81
- });
82
-
83
- const writer = defineAgent({
84
- name: "writer",
85
- model: anthropic("claude-sonnet-4-6"),
86
- systemPrompt: "You write compelling content from research notes.",
87
- });
88
-
89
- const swarm = SwarmGraph.hierarchical({
90
- supervisor: { model: anthropic("claude-sonnet-4-6"), strategy: "llm", maxRounds: 10 },
91
- agents: [researcher, writer],
92
- });
93
-
94
- const app = swarm.compile();
95
- const result = await app.invoke({ task: "Write a technical brief on quantum error correction" });
96
- ```
97
-
98
- No boilerplate routing, no manual state plumbing. The supervisor decides which agent runs next, results flow back through typed channels, and the swarm terminates when the task is complete.
99
-
100
- ---
101
-
102
- ## Features
103
-
104
- | Category | Feature | Description |
105
- |---|---|---|
106
- | **Engine** | Pregel execution | Superstep-parallel graph engine with deterministic state merging |
107
- | | Typed channels | `lastValue`, `appendList`, `mergeObject`, `ephemeralValue` reducers |
108
- | | Command routing | State update + routing in a single return value |
109
- | | Send API | Dynamic fan-out to nodes with per-instance payloads |
110
- | | Subgraphs | Nested compiled graphs with `Command.PARENT` state bridging |
111
- | **Swarm** | 7 templates | Hierarchical, fan-out, pipeline, peer-network, map-reduce, debate, mesh |
112
- | | Supervisor | LLM-based or rule-based routing strategies |
113
- | | Handoff | Agent-to-agent delegation with context transfer |
114
- | | Coordination | `RequestReplyBroker`, `PubSub` for inter-agent messaging |
115
- | **Models** | 5 LLM adapters | Anthropic, OpenAI, Google, Ollama, OpenRouter |
116
- | | Unified interface | `ONIModel` with chat, streaming, and tool calling |
117
- | | Mock model | Deterministic test doubles with call history |
118
- | **Streaming** | 5 modes | `values`, `updates`, `debug`, `messages`, `custom` |
119
- | | Token streaming | Character-level LLM output via `messages` mode |
120
- | | Custom events | Emit named events from any node via `StreamWriter` |
121
- | | Multi-mode | Subscribe to multiple stream modes simultaneously |
122
- | **Reliability** | Circuit breakers | Automatic failure detection with configurable thresholds |
123
- | | Node timeouts | Per-node deadline enforcement |
124
- | | Dead letter queues | Capture and inspect failed executions |
125
- | | Retry + backoff | Configurable per-node retry with exponential backoff |
126
- | **Persistence** | Checkpointing | Memory, SQLite, PostgreSQL backends |
127
- | | Time travel | `getHistory`, `getStateAt`, `forkFrom` |
128
- | | Cross-thread store | Namespaced KV with semantic search for agent memory |
129
- | **HITL** | Interrupts | `interrupt()`, `getUserInput()`, `getUserApproval()` |
130
- | | Session management | Typed resume values, multi-step approval flows |
131
- | **Guardrails** | Budget tracking | Token and cost limits with automatic enforcement |
132
- | | Content filters | PII detection, topic filtering, custom validators |
133
- | | Permissions | Per-tool permission checks with audit logging |
134
- | | Audit log | Structured logging of all guardrail decisions |
135
- | **Observability** | OpenTelemetry | Zero-dep adapter -- bring your own tracer |
136
- | | Graph inspection | Topology descriptors, Mermaid diagrams, cycle detection |
137
- | **Testing** | `mockModel()` | Deterministic model stubs with call history tracking |
138
- | | `assertGraph()` | Structural assertions on graph topology |
139
- | | `createTestHarness()` | Pre-wired test runner with auto-checkpointing |
140
- | **API Styles** | Builder pattern | `StateGraph` + `addNode` + `addEdge` + `compile` |
141
- | | Functional | `task()`, `entrypoint()`, `pipe()`, `branch()` |
142
- | | Prebuilt | `createReactAgent()`, `defineAgent()` |
143
-
144
- ---
145
-
146
- ## Swarm Templates
147
-
148
- | Template | Pattern | When to use it |
149
- |---|---|---|
150
- | `SwarmGraph.hierarchical()` | Supervisor routes to workers | General multi-agent tasks with centralized control |
151
- | `SwarmGraph.fanOut()` | Parallel execution + aggregation | Independent subtasks that can run concurrently |
152
- | `SwarmGraph.pipeline()` | Sequential A -> B -> C chain | Ordered processing stages (ETL, content pipelines) |
153
- | `SwarmGraph.peerNetwork()` | Dynamic peer-to-peer handoff | Agents self-organize based on capabilities |
154
- | `SwarmGraph.mapReduce()` | Split -> Pool -> Reduce | Distributing N items across a worker pool |
155
- | `SwarmGraph.debate()` | Judge -> Debaters -> Consensus | Multi-perspective reasoning, red-teaming |
156
- | `SwarmGraph.hierarchicalMesh()` | Coordinator -> Team subgraphs | Nested teams with inter-team coordination |
157
-
158
- Each template handles routing, error recovery, and termination automatically. See `examples/swarm/` for runnable examples.
159
-
160
- ---
161
-
162
- ## Architecture
163
-
164
- ```
165
- @oni.bot/core v0.7.0
166
-
167
- +--------------------------+
168
- | Your Application |
169
- +--------------------------+
170
- |
171
- +--------------------+--------------------+
172
- | | |
173
- defineAgent() StateGraph SwarmGraph
174
- (single agent) (custom graph) (7 templates)
175
- | | |
176
- +--------------------+--------------------+
177
- |
178
- +-----------+-----------+
179
- | ONIPregelRunner |
180
- | (execution engine) |
181
- +-----------+-----------+
182
- |
183
- +----------+----------+-------+-------+----------+----------+
184
- | | | | | |
185
- Channels Streaming Checkpoint Circuit Runtime Telemetry
186
- (reducers) (5 modes) (3 backends) Breaker Context (OTel)
187
- + Retry (AsyncLocal)
188
- + DLQ
189
- ```
190
-
191
- Entry points at every level of abstraction:
192
-
193
- - **`ONIModel`** -- Call an LLM directly
194
- - **`defineAgent()`** -- Single agent with tools and system prompt
195
- - **`StateGraph`** -- Custom graph with full control over nodes and edges
196
- - **`SwarmGraph`** -- Multi-agent orchestration from templates
197
-
198
- ---
199
-
200
- ## Sub-module Imports
201
-
202
- Tree-shakeable sub-module imports for bundle optimization:
203
-
204
- ```ts
205
- import { StateGraph, START, END } from "@oni.bot/core"; // Core engine
206
- import { createReactAgent } from "@oni.bot/core/prebuilt"; // Prebuilt agents
207
- import { SwarmGraph } from "@oni.bot/core/swarm"; // Swarm templates
208
- import { interrupt } from "@oni.bot/core/hitl"; // Human-in-the-loop
209
- import { InMemoryStore } from "@oni.bot/core/store"; // Cross-thread store
210
- import { messagesChannel } from "@oni.bot/core/messages"; // Message handling
211
- import { SqliteCheckpointer } from "@oni.bot/core/checkpointers";// Persistence
212
- import { entrypoint, task } from "@oni.bot/core/functional"; // Functional API
213
- import { buildGraphDescriptor } from "@oni.bot/core/inspect"; // Graph inspection
214
- import { emitToken } from "@oni.bot/core/streaming"; // Token streaming
215
- import { anthropic, openai } from "@oni.bot/core/models"; // LLM adapters
216
- import { defineAgent } from "@oni.bot/core/agents"; // Agent builder
217
- import { RequestReplyBroker } from "@oni.bot/core/coordination"; // Agent messaging
218
- import { BudgetTracker } from "@oni.bot/core/guardrails"; // Safety controls
219
- import { defineTool } from "@oni.bot/core/tools"; // Tool definitions
220
- import { mockModel } from "@oni.bot/core/testing"; // Test utilities
221
- ```
222
-
223
- 16 entry points. Import only what you use.
224
-
225
- ---
226
-
227
- ## Production Features
228
-
229
- ### Circuit Breakers
230
-
231
- ```ts
232
- const app = graph.compile({
233
- circuitBreaker: { threshold: 5, resetAfter: 30_000 },
234
- });
235
- ```
236
-
237
- After 5 consecutive failures, the circuit opens and fast-fails all requests. After 30 seconds, it transitions to half-open and lets one request through to test recovery.
238
-
239
- ### Node Timeouts
27
+ ## Quick Start
240
28
 
241
29
  ```ts
242
- graph.addNode("llm_call", handler, { timeout: 10_000 }); // 10s deadline
243
- ```
30
+ import { StateGraph, START, END, lastValue, anthropic } from "@oni.bot/core";
244
31
 
245
- Nodes that exceed their timeout are killed and routed through the error recovery path.
32
+ type State = {
33
+ question: string;
34
+ answer: string;
35
+ };
246
36
 
247
- ### Retry with Backoff
37
+ const model = anthropic("claude-sonnet-4-6");
248
38
 
249
- ```ts
250
- graph.addNode("flaky_api", handler, {
251
- retry: { maxAttempts: 3, backoff: "exponential", initialDelay: 1000 },
39
+ const graph = new StateGraph<State>({
40
+ channels: {
41
+ question: lastValue<string>(() => ""),
42
+ answer: lastValue<string>(() => ""),
43
+ },
252
44
  });
253
- ```
254
-
255
- ### Dead Letter Queue
256
-
257
- ```ts
258
- const dlq = new DeadLetterQueue();
259
- const app = graph.compile({ dlq });
260
-
261
- // Later: inspect failures
262
- const failures = dlq.list();
263
- ```
264
-
265
- ### OpenTelemetry Tracing
266
-
267
- ```ts
268
- import { ONITracer } from "@oni.bot/core";
269
- import { trace } from "@opentelemetry/api";
270
-
271
- const tracer = new ONITracer(trace.getTracer("my-app"));
272
- const app = graph.compile({ tracer });
273
- ```
274
-
275
- Zero-dep adapter that wraps any OpenTelemetry-compatible tracer. Emits spans for graph execution, node runs, tool calls, model invocations, and checkpoint operations.
276
-
277
- ### Checkpointing + Time Travel
278
-
279
- ```ts
280
- import { SqliteCheckpointer } from "@oni.bot/core/checkpointers";
281
-
282
- const checkpointer = new SqliteCheckpointer("./state.db");
283
- const app = graph.compile({ checkpointer });
284
-
285
- // Resume from any point
286
- const history = await app.getHistory("thread-1");
287
- const forked = await app.forkFrom("thread-1", history[2].checkpoint);
288
- ```
289
-
290
- Three built-in backends: `MemoryCheckpointer` (dev), `SqliteCheckpointer` (single-node), `PostgresCheckpointer` (distributed). Or implement `ONICheckpointer` for your own.
291
45
 
292
- ---
293
-
294
- ## Human-in-the-Loop
295
-
296
- ```ts
297
- import { interrupt, getUserApproval } from "@oni.bot/core/hitl";
298
-
299
- graph.addNode("review", async (state) => {
300
- const approved = await getUserApproval("Publish this draft?", {
301
- payload: state.draft,
46
+ graph.addNode("answer", async (state) => {
47
+ const response = await model.chat({
48
+ messages: [{ role: "user", content: state.question }],
302
49
  });
303
- if (!approved) return { status: "rejected" };
304
- return { status: "published" };
50
+ return { answer: response.content as string };
305
51
  });
306
- ```
307
-
308
- Execution pauses, the interrupt is surfaced to your application, and the graph resumes exactly where it left off when the user responds.
309
-
310
- ---
311
52
 
312
- ## Streaming
53
+ graph.addEdge(START, "answer");
54
+ graph.addEdge("answer", END);
313
55
 
314
- ```ts
315
- // Single mode
316
- for await (const event of app.stream(input, { streamMode: "updates" })) {
317
- console.log(event.node, event.data);
318
- }
56
+ const app = graph.compile();
319
57
 
320
- // Multiple modes simultaneously
321
- for await (const event of app.stream(input, { streamMode: ["values", "messages"] })) {
322
- if (event.mode === "messages") {
323
- process.stdout.write(event.data.chunk); // Token-by-token LLM output
324
- }
58
+ for await (const chunk of app.stream(
59
+ { question: "What is a Pregel execution model?" },
60
+ { streamMode: "values" },
61
+ )) {
62
+ console.log(chunk.answer);
325
63
  }
326
-
327
- // Custom events from inside a node
328
- import { getStreamWriter } from "@oni.bot/core";
329
-
330
- graph.addNode("agent", async (state) => {
331
- const writer = getStreamWriter();
332
- writer.emit("progress", { step: 1, message: "Searching..." });
333
- // ...
334
- });
335
- ```
336
-
337
- ---
338
-
339
- ## Functional API
340
-
341
- For simpler use cases, skip the builder pattern entirely:
342
-
343
- ```ts
344
- import { entrypoint, task } from "@oni.bot/core/functional";
345
- import { lastValue } from "@oni.bot/core";
346
-
347
- const summarize = task("summarize", async (text: string) => {
348
- return await llm.chat({ messages: [{ role: "user", content: `Summarize: ${text}` }] });
349
- });
350
-
351
- const app = entrypoint(
352
- { channels: { query: lastValue(() => ""), answer: lastValue(() => "") } },
353
- async (state) => ({ answer: await summarize(state.query) }),
354
- );
355
-
356
- const result = await app.invoke({ query: "Explain quantum computing" });
357
64
  ```
358
65
 
359
66
  ---
360
67
 
361
- ## Testing
68
+ ## Sub-modules
362
69
 
363
- ```ts
364
- import { mockModel, assertGraph, createTestHarness } from "@oni.bot/core/testing";
70
+ 21 entry points — import only what you use.
365
71
 
366
- // Deterministic model responses
367
- const model = mockModel([
368
- { role: "assistant", content: "Hello!" },
369
- { role: "assistant", content: "Goodbye!", toolCalls: [{ id: "1", name: "search", args: {} }] },
370
- ]);
371
-
372
- // Structural graph assertions
373
- assertGraph(graph, {
374
- hasNode: ["agent", "tools"],
375
- hasEdge: [["__start__", "agent"]],
376
- nodeCount: 2,
377
- });
378
-
379
- // Pre-wired test harness
380
- const harness = createTestHarness(graph);
381
- const result = await harness.invoke({ query: "test" });
382
- const events = await harness.collectStream({ query: "test" }, "updates");
383
- ```
384
-
385
- ---
386
-
387
- ## Documentation
388
-
389
- | Resource | Description |
72
+ | Subpath | Description |
390
73
  |---|---|
391
- | **[Developer Guide](docs/GUIDE.md)** | Progressive tutorial from zero to advanced -- 19 sections covering every feature |
392
- | **[API Reference](docs/API.md)** | Complete reference for all 130+ public exports |
393
- | **[Examples](examples/)** | 30+ runnable example files covering every feature |
74
+ | `@oni.bot/core` | Core engine: `StateGraph`, `START`, `END`, channels, `Command`, `Send` |
75
+ | `@oni.bot/core/prebuilt` | Prebuilt agents: `createReactAgent`, `defineAgent` |
76
+ | `@oni.bot/core/swarm` | Swarm templates: `SwarmGraph` (hierarchical, fan-out, pipeline, peer-network, map-reduce, debate, mesh) |
77
+ | `@oni.bot/core/hitl` | Human-in-the-loop: `interrupt`, `getUserInput`, `getUserApproval` |
78
+ | `@oni.bot/core/store` | Cross-thread KV store: `InMemoryStore`, `BaseStore`, `NamespacedStore` |
79
+ | `@oni.bot/core/messages` | Message channel primitives: `messagesChannel`, `MessageAnnotation` |
80
+ | `@oni.bot/core/checkpointers` | Persistence backends: `MemoryCheckpointer`, `SqliteCheckpointer` |
81
+ | `@oni.bot/core/functional` | Functional API: `task`, `entrypoint`, `pipe`, `branch` |
82
+ | `@oni.bot/core/inspect` | Graph inspection: `buildGraphDescriptor`, `toMermaid`, cycle detection |
83
+ | `@oni.bot/core/streaming` | Token streaming: `emitToken`, `getStreamWriter`, `StreamWriter` |
84
+ | `@oni.bot/core/models` | LLM adapters: `anthropic`, `openai`, `openrouter`, `google`, `ollama` |
85
+ | `@oni.bot/core/tools` | Tool definition: `defineTool`, `ToolSchema`, `ToolResult` |
86
+ | `@oni.bot/core/agents` | Agent builder: `defineAgent`, `AgentDefinition` |
87
+ | `@oni.bot/core/coordination` | Inter-agent messaging: `RequestReplyBroker`, `PubSub` |
88
+ | `@oni.bot/core/events` | Event bus: `EventBus`, 10 lifecycle event types |
89
+ | `@oni.bot/core/guardrails` | Budget and safety: `BudgetTracker`, `ContentFilter`, `PermissionGuard` |
90
+ | `@oni.bot/core/testing` | Test utilities: `mockModel`, `assertGraph`, `createTestHarness` |
91
+ | `@oni.bot/core/harness` | Agentic loop: `ONIHarness`, `AgentLoop`, `HooksEngine`, `ContextCompactor` |
92
+ | `@oni.bot/core/mcp` | MCP client: JSON-RPC/stdio tool bridge |
93
+ | `@oni.bot/core/lsp` | LSP client: language server protocol primitives |
94
+ | `@oni.bot/core/config` | Config loader: JSONC parsing, environment variable resolution |
394
95
 
395
96
  ---
396
97
 
397
- ## Optional Peer Dependencies
98
+ ## Ecosystem
398
99
 
399
- The core engine has zero runtime dependencies. Optional packages unlock additional backends:
100
+ **Built on @oni.bot/core:**
400
101
 
401
- ```bash
402
- npm install better-sqlite3 # SqliteCheckpointer
403
- npm install pg # PostgresCheckpointer
404
- ```
405
-
406
- ---
407
-
408
- ## Contributing
409
-
410
- Contributions are welcome. Please open an issue to discuss significant changes before submitting a PR.
411
-
412
- ```bash
413
- git clone https://github.com/oni-bot/core.git
414
- cd core
415
- npm install
416
- npm test
417
- ```
102
+ - [`@oni.bot/code`](https://github.com/AP3X-Dev) — AI coding assistant CLI *(coming soon)*
103
+ - [`@oni.bot/sentinel`](https://github.com/AP3X-Dev) — Code analysis and review engine *(coming soon)*
418
104
 
419
105
  ---
420
106
 
421
107
  ## License
422
108
 
423
- MIT -- [ONI Platform](https://github.com/oni-bot)
109
+ MIT [AP3X Dev](https://github.com/AP3X-Dev)
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/checkpointers/sqlite.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAQzF,qBAAa,kBAAkB,CAAC,CAAC,CAAE,YAAW,eAAe,CAAC,CAAC,CAAC;IAC1C,OAAO,CAAC,QAAQ,CAAC,EAAE;IAAvC,OAAO;WAEM,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IA4BhE,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAOvD,GAAG,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAaxC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IA6BjF,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAK7E,KAAK,IAAI,IAAI;IAEb,OAAO,CAAC,WAAW;CAapB"}
1
+ {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/checkpointers/sqlite.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AASzF,qBAAa,kBAAkB,CAAC,CAAC,CAAE,YAAW,eAAe,CAAC,CAAC,CAAC;IAC1C,OAAO,CAAC,QAAQ,CAAC,EAAE;IAAvC,OAAO;WAEM,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IA4BhE,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAOvD,GAAG,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAaxC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IA6BjF,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAK7E,KAAK,IAAI,IAAI;IAEb,OAAO,CAAC,WAAW;CA4BpB"}
@@ -6,6 +6,7 @@
6
6
  // npm install better-sqlite3
7
7
  // npm install -D @types/better-sqlite3
8
8
  // ============================================================
9
+ import { CheckpointCorruptError } from "../errors.js";
9
10
  export class SqliteCheckpointer {
10
11
  db;
11
12
  constructor(db) {
@@ -84,16 +85,30 @@ export class SqliteCheckpointer {
84
85
  }
85
86
  close() { this.db.close(); }
86
87
  deserialize(row) {
88
+ const threadId = row["thread_id"];
89
+ const safeParse = (field, raw) => {
90
+ try {
91
+ return JSON.parse(raw);
92
+ }
93
+ catch {
94
+ throw new CheckpointCorruptError(threadId, `failed to parse "${field}" — data may be truncated or corrupted`);
95
+ }
96
+ };
97
+ const step = Number(row["step"]);
98
+ const timestamp = Number(row["timestamp"]);
99
+ if (!Number.isFinite(step) || !Number.isFinite(timestamp)) {
100
+ throw new CheckpointCorruptError(threadId, "step or timestamp is not a valid number");
101
+ }
87
102
  return {
88
- threadId: row["thread_id"],
89
- step: row["step"],
103
+ threadId,
104
+ step,
90
105
  agentId: row["agent_id"] ?? undefined,
91
- state: JSON.parse(row["state"]),
92
- nextNodes: JSON.parse(row["next_nodes"]),
93
- pendingSends: JSON.parse(row["pending_sends"]),
94
- metadata: row["metadata"] ? JSON.parse(row["metadata"]) : undefined,
95
- pendingWrites: row["pending_writes"] ? JSON.parse(row["pending_writes"]) : undefined,
96
- timestamp: row["timestamp"],
106
+ state: safeParse("state", row["state"]),
107
+ nextNodes: safeParse("next_nodes", row["next_nodes"]),
108
+ pendingSends: safeParse("pending_sends", row["pending_sends"]),
109
+ metadata: row["metadata"] ? safeParse("metadata", row["metadata"]) : undefined,
110
+ pendingWrites: row["pending_writes"] ? safeParse("pending_writes", row["pending_writes"]) : undefined,
111
+ timestamp,
97
112
  };
98
113
  }
99
114
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/checkpointers/sqlite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/checkpointers/sqlite.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { ParsedArgs } from "./router.js";
2
+ interface PackageExports {
3
+ exports?: Record<string, {
4
+ import?: string;
5
+ types?: string;
6
+ } | string>;
7
+ }
8
+ export declare function validateExports(pkg: PackageExports): string[];
9
+ export declare function buildCommand(args: ParsedArgs): Promise<void>;
10
+ export {};
11
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/cli/build.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,UAAU,cAAc;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC,CAAC;CACxE;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,EAAE,CAe7D;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA2ClE"}
@@ -0,0 +1,61 @@
1
+ // ============================================================
2
+ // @oni.bot/core CLI — build command
3
+ // TypeScript build + export validation
4
+ // ============================================================
5
+ import { spawn } from "node:child_process";
6
+ import { readFile } from "node:fs/promises";
7
+ import { resolve } from "node:path";
8
+ export function validateExports(pkg) {
9
+ const errors = [];
10
+ if (!pkg.exports)
11
+ return errors;
12
+ for (const [path, value] of Object.entries(pkg.exports)) {
13
+ if (typeof value === "string")
14
+ continue;
15
+ if (!value.types) {
16
+ errors.push(`Export "${path}" is missing "types" field`);
17
+ }
18
+ if (!value.import) {
19
+ errors.push(`Export "${path}" is missing "import" field`);
20
+ }
21
+ }
22
+ return errors;
23
+ }
24
+ export async function buildCommand(args) {
25
+ const noCheck = args.flags["no-check"] === "true";
26
+ const cwd = process.cwd();
27
+ console.log("\n Building...\n");
28
+ // Step 1: Run tsc
29
+ const tscArgs = noCheck ? ["tsc", "--noEmit", "false"] : ["tsc"];
30
+ const child = spawn("npx", tscArgs, {
31
+ stdio: "inherit",
32
+ shell: true,
33
+ });
34
+ const exitCode = await new Promise((r) => child.on("close", r));
35
+ if (exitCode && exitCode !== 0) {
36
+ console.error("\n Build failed — TypeScript compilation errors");
37
+ process.exitCode = exitCode;
38
+ return;
39
+ }
40
+ console.log(" TypeScript compilation successful");
41
+ // Step 2: Validate package.json exports
42
+ try {
43
+ const pkgPath = resolve(cwd, "package.json");
44
+ const pkgJson = JSON.parse(await readFile(pkgPath, "utf-8"));
45
+ const errors = validateExports(pkgJson);
46
+ if (errors.length > 0) {
47
+ console.log("\n Export validation warnings:");
48
+ for (const err of errors) {
49
+ console.log(` ! ${err}`);
50
+ }
51
+ }
52
+ else {
53
+ console.log(" Export validation passed");
54
+ }
55
+ }
56
+ catch {
57
+ // No package.json or can't read — skip validation
58
+ }
59
+ console.log("\n Build complete!\n");
60
+ }
61
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/cli/build.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,oCAAoC;AACpC,uCAAuC;AACvC,+DAA+D;AAE/D,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,MAAM,UAAU,eAAe,CAAC,GAAmB;IACjD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,CAAC,GAAG,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC;IAEhC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACxD,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,SAAS;QACxC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,4BAA4B,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,6BAA6B,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAgB;IACjD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,MAAM,CAAC;IAClD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAEjC,kBAAkB;IAClB,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAEjE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE;QAClC,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,IAAI,OAAO,CAAgB,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IAE/E,IAAI,QAAQ,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAClE,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IAEnD,wCAAwC;IACxC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAmB,CAAC;QAC/E,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QAExC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;YAC/C,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,kDAAkD;IACpD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AACvC,CAAC"}