@oni.bot/core 1.0.0 → 1.0.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 (511) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/SECURITY.md +2 -2
  3. package/dist/agents/context.d.ts +0 -2
  4. package/dist/agents/context.d.ts.map +1 -1
  5. package/dist/agents/context.js +1 -3
  6. package/dist/agents/context.js.map +1 -1
  7. package/dist/agents/define-agent.d.ts.map +1 -1
  8. package/dist/agents/define-agent.js +92 -39
  9. package/dist/agents/define-agent.js.map +1 -1
  10. package/dist/agents/functional-agent.d.ts.map +1 -1
  11. package/dist/agents/functional-agent.js +0 -7
  12. package/dist/agents/functional-agent.js.map +1 -1
  13. package/dist/agents/types.d.ts +0 -2
  14. package/dist/agents/types.d.ts.map +1 -1
  15. package/dist/checkpointers/postgres.js +4 -4
  16. package/dist/checkpointers/postgres.js.map +1 -1
  17. package/dist/checkpointers/sqlite.js +4 -4
  18. package/dist/checkpointers/sqlite.js.map +1 -1
  19. package/dist/cli/router.js +1 -1
  20. package/dist/config/loader.d.ts.map +1 -1
  21. package/dist/config/loader.js +23 -1
  22. package/dist/config/loader.js.map +1 -1
  23. package/dist/context.d.ts +20 -0
  24. package/dist/context.d.ts.map +1 -1
  25. package/dist/context.js.map +1 -1
  26. package/dist/coordination/request-reply.d.ts +1 -0
  27. package/dist/coordination/request-reply.d.ts.map +1 -1
  28. package/dist/coordination/request-reply.js +13 -1
  29. package/dist/coordination/request-reply.js.map +1 -1
  30. package/dist/graph.d.ts.map +1 -1
  31. package/dist/graph.js +17 -2
  32. package/dist/graph.js.map +1 -1
  33. package/dist/index.js +1 -1
  34. package/dist/mcp/client.js +1 -1
  35. package/dist/pregel.d.ts +2 -0
  36. package/dist/pregel.d.ts.map +1 -1
  37. package/dist/pregel.js +415 -341
  38. package/dist/pregel.js.map +1 -1
  39. package/dist/store/index.d.ts +1 -1
  40. package/dist/store/index.d.ts.map +1 -1
  41. package/dist/store/index.js +28 -5
  42. package/dist/store/index.js.map +1 -1
  43. package/dist/streaming.d.ts +5 -2
  44. package/dist/streaming.d.ts.map +1 -1
  45. package/dist/streaming.js +9 -8
  46. package/dist/streaming.js.map +1 -1
  47. package/dist/swarm/graph.d.ts +1 -0
  48. package/dist/swarm/graph.d.ts.map +1 -1
  49. package/dist/swarm/graph.js +162 -40
  50. package/dist/swarm/graph.js.map +1 -1
  51. package/dist/swarm/pool.d.ts.map +1 -1
  52. package/dist/swarm/pool.js +12 -4
  53. package/dist/swarm/pool.js.map +1 -1
  54. package/dist/tools/define.d.ts.map +1 -1
  55. package/dist/tools/define.js +1 -0
  56. package/dist/tools/define.js.map +1 -1
  57. package/dist/tools/types.d.ts +2 -0
  58. package/dist/tools/types.d.ts.map +1 -1
  59. package/package.json +7 -1
  60. package/dist/oni-code/agent-registry.d.ts +0 -73
  61. package/dist/oni-code/agent-registry.d.ts.map +0 -1
  62. package/dist/oni-code/agent-registry.js +0 -151
  63. package/dist/oni-code/agent-registry.js.map +0 -1
  64. package/dist/oni-code/bin.d.ts +0 -18
  65. package/dist/oni-code/bin.d.ts.map +0 -1
  66. package/dist/oni-code/bin.js +0 -78
  67. package/dist/oni-code/bin.js.map +0 -1
  68. package/dist/oni-code/change-tracking.d.ts +0 -28
  69. package/dist/oni-code/change-tracking.d.ts.map +0 -1
  70. package/dist/oni-code/change-tracking.js +0 -77
  71. package/dist/oni-code/change-tracking.js.map +0 -1
  72. package/dist/oni-code/cli.d.ts +0 -6
  73. package/dist/oni-code/cli.d.ts.map +0 -1
  74. package/dist/oni-code/cli.js +0 -30
  75. package/dist/oni-code/cli.js.map +0 -1
  76. package/dist/oni-code/conductor.d.ts +0 -203
  77. package/dist/oni-code/conductor.d.ts.map +0 -1
  78. package/dist/oni-code/conductor.js +0 -1547
  79. package/dist/oni-code/conductor.js.map +0 -1
  80. package/dist/oni-code/config.d.ts +0 -130
  81. package/dist/oni-code/config.d.ts.map +0 -1
  82. package/dist/oni-code/config.js +0 -264
  83. package/dist/oni-code/config.js.map +0 -1
  84. package/dist/oni-code/context-files.d.ts +0 -22
  85. package/dist/oni-code/context-files.d.ts.map +0 -1
  86. package/dist/oni-code/context-files.js +0 -156
  87. package/dist/oni-code/context-files.js.map +0 -1
  88. package/dist/oni-code/cron/humanize.d.ts +0 -26
  89. package/dist/oni-code/cron/humanize.d.ts.map +0 -1
  90. package/dist/oni-code/cron/humanize.js +0 -83
  91. package/dist/oni-code/cron/humanize.js.map +0 -1
  92. package/dist/oni-code/cron/index.d.ts +0 -10
  93. package/dist/oni-code/cron/index.d.ts.map +0 -1
  94. package/dist/oni-code/cron/index.js +0 -7
  95. package/dist/oni-code/cron/index.js.map +0 -1
  96. package/dist/oni-code/cron/matcher.d.ts +0 -29
  97. package/dist/oni-code/cron/matcher.d.ts.map +0 -1
  98. package/dist/oni-code/cron/matcher.js +0 -73
  99. package/dist/oni-code/cron/matcher.js.map +0 -1
  100. package/dist/oni-code/cron/parser.d.ts +0 -27
  101. package/dist/oni-code/cron/parser.d.ts.map +0 -1
  102. package/dist/oni-code/cron/parser.js +0 -149
  103. package/dist/oni-code/cron/parser.js.map +0 -1
  104. package/dist/oni-code/cron/persistence.d.ts +0 -21
  105. package/dist/oni-code/cron/persistence.d.ts.map +0 -1
  106. package/dist/oni-code/cron/persistence.js +0 -58
  107. package/dist/oni-code/cron/persistence.js.map +0 -1
  108. package/dist/oni-code/cron/scheduler.d.ts +0 -64
  109. package/dist/oni-code/cron/scheduler.d.ts.map +0 -1
  110. package/dist/oni-code/cron/scheduler.js +0 -188
  111. package/dist/oni-code/cron/scheduler.js.map +0 -1
  112. package/dist/oni-code/cron/store.d.ts +0 -46
  113. package/dist/oni-code/cron/store.d.ts.map +0 -1
  114. package/dist/oni-code/cron/store.js +0 -68
  115. package/dist/oni-code/cron/store.js.map +0 -1
  116. package/dist/oni-code/env.d.ts +0 -17
  117. package/dist/oni-code/env.d.ts.map +0 -1
  118. package/dist/oni-code/env.js +0 -51
  119. package/dist/oni-code/env.js.map +0 -1
  120. package/dist/oni-code/file-reader.d.ts +0 -28
  121. package/dist/oni-code/file-reader.d.ts.map +0 -1
  122. package/dist/oni-code/file-reader.js +0 -368
  123. package/dist/oni-code/file-reader.js.map +0 -1
  124. package/dist/oni-code/file-watcher.d.ts +0 -66
  125. package/dist/oni-code/file-watcher.d.ts.map +0 -1
  126. package/dist/oni-code/file-watcher.js +0 -167
  127. package/dist/oni-code/file-watcher.js.map +0 -1
  128. package/dist/oni-code/loop-detector.d.ts +0 -64
  129. package/dist/oni-code/loop-detector.d.ts.map +0 -1
  130. package/dist/oni-code/loop-detector.js +0 -163
  131. package/dist/oni-code/loop-detector.js.map +0 -1
  132. package/dist/oni-code/permissions.d.ts +0 -43
  133. package/dist/oni-code/permissions.d.ts.map +0 -1
  134. package/dist/oni-code/permissions.js +0 -98
  135. package/dist/oni-code/permissions.js.map +0 -1
  136. package/dist/oni-code/planner.d.ts +0 -26
  137. package/dist/oni-code/planner.d.ts.map +0 -1
  138. package/dist/oni-code/planner.js +0 -86
  139. package/dist/oni-code/planner.js.map +0 -1
  140. package/dist/oni-code/plugin-loader.d.ts +0 -103
  141. package/dist/oni-code/plugin-loader.d.ts.map +0 -1
  142. package/dist/oni-code/plugin-loader.js +0 -171
  143. package/dist/oni-code/plugin-loader.js.map +0 -1
  144. package/dist/oni-code/process-tree.d.ts +0 -44
  145. package/dist/oni-code/process-tree.d.ts.map +0 -1
  146. package/dist/oni-code/process-tree.js +0 -107
  147. package/dist/oni-code/process-tree.js.map +0 -1
  148. package/dist/oni-code/progress-tracker.d.ts +0 -40
  149. package/dist/oni-code/progress-tracker.d.ts.map +0 -1
  150. package/dist/oni-code/progress-tracker.js +0 -375
  151. package/dist/oni-code/progress-tracker.js.map +0 -1
  152. package/dist/oni-code/scheduler.d.ts +0 -56
  153. package/dist/oni-code/scheduler.d.ts.map +0 -1
  154. package/dist/oni-code/scheduler.js +0 -105
  155. package/dist/oni-code/scheduler.js.map +0 -1
  156. package/dist/oni-code/session-fork.d.ts +0 -146
  157. package/dist/oni-code/session-fork.d.ts.map +0 -1
  158. package/dist/oni-code/session-fork.js +0 -238
  159. package/dist/oni-code/session-fork.js.map +0 -1
  160. package/dist/oni-code/session-stats.d.ts +0 -72
  161. package/dist/oni-code/session-stats.d.ts.map +0 -1
  162. package/dist/oni-code/session-stats.js +0 -141
  163. package/dist/oni-code/session-stats.js.map +0 -1
  164. package/dist/oni-code/session-title.d.ts +0 -25
  165. package/dist/oni-code/session-title.d.ts.map +0 -1
  166. package/dist/oni-code/session-title.js +0 -67
  167. package/dist/oni-code/session-title.js.map +0 -1
  168. package/dist/oni-code/shell-parser.d.ts +0 -112
  169. package/dist/oni-code/shell-parser.d.ts.map +0 -1
  170. package/dist/oni-code/shell-parser.js +0 -657
  171. package/dist/oni-code/shell-parser.js.map +0 -1
  172. package/dist/oni-code/summarizer.d.ts +0 -27
  173. package/dist/oni-code/summarizer.d.ts.map +0 -1
  174. package/dist/oni-code/summarizer.js +0 -70
  175. package/dist/oni-code/summarizer.js.map +0 -1
  176. package/dist/oni-code/swarm-checkpoint.d.ts +0 -52
  177. package/dist/oni-code/swarm-checkpoint.d.ts.map +0 -1
  178. package/dist/oni-code/swarm-checkpoint.js +0 -71
  179. package/dist/oni-code/swarm-checkpoint.js.map +0 -1
  180. package/dist/oni-code/swarm-runner.d.ts +0 -173
  181. package/dist/oni-code/swarm-runner.d.ts.map +0 -1
  182. package/dist/oni-code/swarm-runner.js +0 -873
  183. package/dist/oni-code/swarm-runner.js.map +0 -1
  184. package/dist/oni-code/system-prompt.d.ts +0 -13
  185. package/dist/oni-code/system-prompt.d.ts.map +0 -1
  186. package/dist/oni-code/system-prompt.js +0 -64
  187. package/dist/oni-code/system-prompt.js.map +0 -1
  188. package/dist/oni-code/task-evaluator.d.ts +0 -73
  189. package/dist/oni-code/task-evaluator.d.ts.map +0 -1
  190. package/dist/oni-code/task-evaluator.js +0 -172
  191. package/dist/oni-code/task-evaluator.js.map +0 -1
  192. package/dist/oni-code/tools/batch.d.ts +0 -12
  193. package/dist/oni-code/tools/batch.d.ts.map +0 -1
  194. package/dist/oni-code/tools/batch.js +0 -116
  195. package/dist/oni-code/tools/batch.js.map +0 -1
  196. package/dist/oni-code/tools/coding.d.ts +0 -10
  197. package/dist/oni-code/tools/coding.d.ts.map +0 -1
  198. package/dist/oni-code/tools/coding.js +0 -557
  199. package/dist/oni-code/tools/coding.js.map +0 -1
  200. package/dist/oni-code/tools/cron.d.ts +0 -4
  201. package/dist/oni-code/tools/cron.d.ts.map +0 -1
  202. package/dist/oni-code/tools/cron.js +0 -120
  203. package/dist/oni-code/tools/cron.js.map +0 -1
  204. package/dist/oni-code/tools/custom.d.ts +0 -43
  205. package/dist/oni-code/tools/custom.d.ts.map +0 -1
  206. package/dist/oni-code/tools/custom.js +0 -115
  207. package/dist/oni-code/tools/custom.js.map +0 -1
  208. package/dist/oni-code/tools/patch.d.ts +0 -58
  209. package/dist/oni-code/tools/patch.d.ts.map +0 -1
  210. package/dist/oni-code/tools/patch.js +0 -247
  211. package/dist/oni-code/tools/patch.js.map +0 -1
  212. package/dist/oni-code/tools/plan.d.ts +0 -17
  213. package/dist/oni-code/tools/plan.d.ts.map +0 -1
  214. package/dist/oni-code/tools/plan.js +0 -48
  215. package/dist/oni-code/tools/plan.js.map +0 -1
  216. package/dist/oni-code/tools/question.d.ts +0 -17
  217. package/dist/oni-code/tools/question.d.ts.map +0 -1
  218. package/dist/oni-code/tools/question.js +0 -46
  219. package/dist/oni-code/tools/question.js.map +0 -1
  220. package/dist/oni-code/tools/skill.d.ts +0 -36
  221. package/dist/oni-code/tools/skill.d.ts.map +0 -1
  222. package/dist/oni-code/tools/skill.js +0 -132
  223. package/dist/oni-code/tools/skill.js.map +0 -1
  224. package/dist/oni-code/tools/spawn-agents.d.ts +0 -37
  225. package/dist/oni-code/tools/spawn-agents.d.ts.map +0 -1
  226. package/dist/oni-code/tools/spawn-agents.js +0 -91
  227. package/dist/oni-code/tools/spawn-agents.js.map +0 -1
  228. package/dist/oni-code/tools/spawn-swarm.d.ts +0 -70
  229. package/dist/oni-code/tools/spawn-swarm.d.ts.map +0 -1
  230. package/dist/oni-code/tools/spawn-swarm.js +0 -129
  231. package/dist/oni-code/tools/spawn-swarm.js.map +0 -1
  232. package/dist/oni-code/tools/web.d.ts +0 -11
  233. package/dist/oni-code/tools/web.d.ts.map +0 -1
  234. package/dist/oni-code/tools/web.js +0 -375
  235. package/dist/oni-code/tools/web.js.map +0 -1
  236. package/dist/oni-code/topology-agent-builder.d.ts +0 -22
  237. package/dist/oni-code/topology-agent-builder.d.ts.map +0 -1
  238. package/dist/oni-code/topology-agent-builder.js +0 -220
  239. package/dist/oni-code/topology-agent-builder.js.map +0 -1
  240. package/dist/oni-code/topology-selector.d.ts +0 -85
  241. package/dist/oni-code/topology-selector.d.ts.map +0 -1
  242. package/dist/oni-code/topology-selector.js +0 -338
  243. package/dist/oni-code/topology-selector.js.map +0 -1
  244. package/dist/oni-code/ui/App.d.ts +0 -10
  245. package/dist/oni-code/ui/App.d.ts.map +0 -1
  246. package/dist/oni-code/ui/App.js +0 -395
  247. package/dist/oni-code/ui/App.js.map +0 -1
  248. package/dist/oni-code/ui/FooterPanel.d.ts +0 -16
  249. package/dist/oni-code/ui/FooterPanel.d.ts.map +0 -1
  250. package/dist/oni-code/ui/FooterPanel.js +0 -56
  251. package/dist/oni-code/ui/FooterPanel.js.map +0 -1
  252. package/dist/oni-code/ui/Header.d.ts +0 -21
  253. package/dist/oni-code/ui/Header.d.ts.map +0 -1
  254. package/dist/oni-code/ui/Header.js +0 -105
  255. package/dist/oni-code/ui/Header.js.map +0 -1
  256. package/dist/oni-code/ui/InputArea.d.ts +0 -11
  257. package/dist/oni-code/ui/InputArea.d.ts.map +0 -1
  258. package/dist/oni-code/ui/InputArea.js +0 -82
  259. package/dist/oni-code/ui/InputArea.js.map +0 -1
  260. package/dist/oni-code/ui/MessageBlock.d.ts +0 -11
  261. package/dist/oni-code/ui/MessageBlock.d.ts.map +0 -1
  262. package/dist/oni-code/ui/MessageBlock.js +0 -103
  263. package/dist/oni-code/ui/MessageBlock.js.map +0 -1
  264. package/dist/oni-code/ui/OutputPane.d.ts +0 -12
  265. package/dist/oni-code/ui/OutputPane.d.ts.map +0 -1
  266. package/dist/oni-code/ui/OutputPane.js +0 -8
  267. package/dist/oni-code/ui/OutputPane.js.map +0 -1
  268. package/dist/oni-code/ui/PermissionPrompt.d.ts +0 -11
  269. package/dist/oni-code/ui/PermissionPrompt.d.ts.map +0 -1
  270. package/dist/oni-code/ui/PermissionPrompt.js +0 -48
  271. package/dist/oni-code/ui/PermissionPrompt.js.map +0 -1
  272. package/dist/oni-code/ui/QuestionPrompt.d.ts +0 -8
  273. package/dist/oni-code/ui/QuestionPrompt.d.ts.map +0 -1
  274. package/dist/oni-code/ui/QuestionPrompt.js +0 -9
  275. package/dist/oni-code/ui/QuestionPrompt.js.map +0 -1
  276. package/dist/oni-code/ui/StatusLine.d.ts +0 -14
  277. package/dist/oni-code/ui/StatusLine.d.ts.map +0 -1
  278. package/dist/oni-code/ui/StatusLine.js +0 -23
  279. package/dist/oni-code/ui/StatusLine.js.map +0 -1
  280. package/dist/oni-code/ui/SwarmPanel.d.ts +0 -9
  281. package/dist/oni-code/ui/SwarmPanel.d.ts.map +0 -1
  282. package/dist/oni-code/ui/SwarmPanel.js +0 -52
  283. package/dist/oni-code/ui/SwarmPanel.js.map +0 -1
  284. package/dist/oni-code/ui/ToolCallBlock.d.ts +0 -10
  285. package/dist/oni-code/ui/ToolCallBlock.d.ts.map +0 -1
  286. package/dist/oni-code/ui/ToolCallBlock.js +0 -21
  287. package/dist/oni-code/ui/ToolCallBlock.js.map +0 -1
  288. package/dist/oni-code/ui/Toolbar.d.ts +0 -8
  289. package/dist/oni-code/ui/Toolbar.d.ts.map +0 -1
  290. package/dist/oni-code/ui/Toolbar.js +0 -11
  291. package/dist/oni-code/ui/Toolbar.js.map +0 -1
  292. package/dist/oni-code/ui/WelcomeBanner.d.ts +0 -12
  293. package/dist/oni-code/ui/WelcomeBanner.d.ts.map +0 -1
  294. package/dist/oni-code/ui/WelcomeBanner.js +0 -24
  295. package/dist/oni-code/ui/WelcomeBanner.js.map +0 -1
  296. package/dist/oni-code/ui/activity.d.ts +0 -15
  297. package/dist/oni-code/ui/activity.d.ts.map +0 -1
  298. package/dist/oni-code/ui/activity.js +0 -252
  299. package/dist/oni-code/ui/activity.js.map +0 -1
  300. package/dist/oni-code/ui/banner.d.ts +0 -16
  301. package/dist/oni-code/ui/banner.d.ts.map +0 -1
  302. package/dist/oni-code/ui/banner.js +0 -132
  303. package/dist/oni-code/ui/banner.js.map +0 -1
  304. package/dist/oni-code/ui/command-menu.d.ts +0 -7
  305. package/dist/oni-code/ui/command-menu.d.ts.map +0 -1
  306. package/dist/oni-code/ui/command-menu.js +0 -20
  307. package/dist/oni-code/ui/command-menu.js.map +0 -1
  308. package/dist/oni-code/ui/diff.d.ts +0 -17
  309. package/dist/oni-code/ui/diff.d.ts.map +0 -1
  310. package/dist/oni-code/ui/diff.js +0 -37
  311. package/dist/oni-code/ui/diff.js.map +0 -1
  312. package/dist/oni-code/ui/format.d.ts +0 -41
  313. package/dist/oni-code/ui/format.d.ts.map +0 -1
  314. package/dist/oni-code/ui/format.js +0 -223
  315. package/dist/oni-code/ui/format.js.map +0 -1
  316. package/dist/oni-code/ui/input.d.ts +0 -28
  317. package/dist/oni-code/ui/input.d.ts.map +0 -1
  318. package/dist/oni-code/ui/input.js +0 -216
  319. package/dist/oni-code/ui/input.js.map +0 -1
  320. package/dist/oni-code/ui/insights.d.ts +0 -39
  321. package/dist/oni-code/ui/insights.d.ts.map +0 -1
  322. package/dist/oni-code/ui/insights.js +0 -193
  323. package/dist/oni-code/ui/insights.js.map +0 -1
  324. package/dist/oni-code/ui/markdown.d.ts +0 -9
  325. package/dist/oni-code/ui/markdown.d.ts.map +0 -1
  326. package/dist/oni-code/ui/markdown.js +0 -44
  327. package/dist/oni-code/ui/markdown.js.map +0 -1
  328. package/dist/oni-code/ui/panels.d.ts +0 -39
  329. package/dist/oni-code/ui/panels.d.ts.map +0 -1
  330. package/dist/oni-code/ui/panels.js +0 -209
  331. package/dist/oni-code/ui/panels.js.map +0 -1
  332. package/dist/oni-code/ui/paste.d.ts +0 -17
  333. package/dist/oni-code/ui/paste.d.ts.map +0 -1
  334. package/dist/oni-code/ui/paste.js +0 -45
  335. package/dist/oni-code/ui/paste.js.map +0 -1
  336. package/dist/oni-code/ui/raw-spinner.d.ts +0 -37
  337. package/dist/oni-code/ui/raw-spinner.d.ts.map +0 -1
  338. package/dist/oni-code/ui/raw-spinner.js +0 -121
  339. package/dist/oni-code/ui/raw-spinner.js.map +0 -1
  340. package/dist/oni-code/ui/session.d.ts +0 -44
  341. package/dist/oni-code/ui/session.d.ts.map +0 -1
  342. package/dist/oni-code/ui/session.js +0 -93
  343. package/dist/oni-code/ui/session.js.map +0 -1
  344. package/dist/oni-code/ui/spinner.d.ts +0 -7
  345. package/dist/oni-code/ui/spinner.d.ts.map +0 -1
  346. package/dist/oni-code/ui/spinner.js +0 -20
  347. package/dist/oni-code/ui/spinner.js.map +0 -1
  348. package/dist/oni-code/ui/swarm-activity.d.ts +0 -50
  349. package/dist/oni-code/ui/swarm-activity.d.ts.map +0 -1
  350. package/dist/oni-code/ui/swarm-activity.js +0 -233
  351. package/dist/oni-code/ui/swarm-activity.js.map +0 -1
  352. package/dist/oni-code/ui/terminal-size.d.ts +0 -18
  353. package/dist/oni-code/ui/terminal-size.d.ts.map +0 -1
  354. package/dist/oni-code/ui/terminal-size.js +0 -45
  355. package/dist/oni-code/ui/terminal-size.js.map +0 -1
  356. package/dist/oni-code/ui/theme.d.ts +0 -82
  357. package/dist/oni-code/ui/theme.d.ts.map +0 -1
  358. package/dist/oni-code/ui/theme.js +0 -101
  359. package/dist/oni-code/ui/theme.js.map +0 -1
  360. package/dist/oni-code/ui/tool-utils.d.ts +0 -10
  361. package/dist/oni-code/ui/tool-utils.d.ts.map +0 -1
  362. package/dist/oni-code/ui/tool-utils.js +0 -82
  363. package/dist/oni-code/ui/tool-utils.js.map +0 -1
  364. package/dist/oni-code/ui/useTerminalSize.d.ts +0 -3
  365. package/dist/oni-code/ui/useTerminalSize.d.ts.map +0 -1
  366. package/dist/oni-code/ui/useTerminalSize.js +0 -16
  367. package/dist/oni-code/ui/useTerminalSize.js.map +0 -1
  368. package/dist/oni-code/workspace/change-tracker.d.ts +0 -18
  369. package/dist/oni-code/workspace/change-tracker.d.ts.map +0 -1
  370. package/dist/oni-code/workspace/change-tracker.js +0 -67
  371. package/dist/oni-code/workspace/change-tracker.js.map +0 -1
  372. package/dist/oni-code/workspace/conflict-detector.d.ts +0 -12
  373. package/dist/oni-code/workspace/conflict-detector.d.ts.map +0 -1
  374. package/dist/oni-code/workspace/conflict-detector.js +0 -24
  375. package/dist/oni-code/workspace/conflict-detector.js.map +0 -1
  376. package/dist/oni-code/workspace/file-snapshots.d.ts +0 -39
  377. package/dist/oni-code/workspace/file-snapshots.d.ts.map +0 -1
  378. package/dist/oni-code/workspace/file-snapshots.js +0 -77
  379. package/dist/oni-code/workspace/file-snapshots.js.map +0 -1
  380. package/dist/oni-code/workspace/index.d.ts +0 -5
  381. package/dist/oni-code/workspace/index.d.ts.map +0 -1
  382. package/dist/oni-code/workspace/index.js +0 -5
  383. package/dist/oni-code/workspace/index.js.map +0 -1
  384. package/dist/oni-code/workspace/project-map.d.ts +0 -14
  385. package/dist/oni-code/workspace/project-map.d.ts.map +0 -1
  386. package/dist/oni-code/workspace/project-map.js +0 -91
  387. package/dist/oni-code/workspace/project-map.js.map +0 -1
  388. package/dist/sentinel/config/index.d.ts +0 -2
  389. package/dist/sentinel/config/index.d.ts.map +0 -1
  390. package/dist/sentinel/config/index.js +0 -2
  391. package/dist/sentinel/config/index.js.map +0 -1
  392. package/dist/sentinel/config/schema.d.ts +0 -4
  393. package/dist/sentinel/config/schema.d.ts.map +0 -1
  394. package/dist/sentinel/config/schema.js +0 -42
  395. package/dist/sentinel/config/schema.js.map +0 -1
  396. package/dist/sentinel/debate/index.d.ts +0 -6
  397. package/dist/sentinel/debate/index.d.ts.map +0 -1
  398. package/dist/sentinel/debate/index.js +0 -64
  399. package/dist/sentinel/debate/index.js.map +0 -1
  400. package/dist/sentinel/debate/prompts.d.ts +0 -4
  401. package/dist/sentinel/debate/prompts.d.ts.map +0 -1
  402. package/dist/sentinel/debate/prompts.js +0 -13
  403. package/dist/sentinel/debate/prompts.js.map +0 -1
  404. package/dist/sentinel/fix/index.d.ts +0 -6
  405. package/dist/sentinel/fix/index.d.ts.map +0 -1
  406. package/dist/sentinel/fix/index.js +0 -27
  407. package/dist/sentinel/fix/index.js.map +0 -1
  408. package/dist/sentinel/fix/strategies.d.ts +0 -9
  409. package/dist/sentinel/fix/strategies.d.ts.map +0 -1
  410. package/dist/sentinel/fix/strategies.js +0 -40
  411. package/dist/sentinel/fix/strategies.js.map +0 -1
  412. package/dist/sentinel/index.d.ts +0 -14
  413. package/dist/sentinel/index.d.ts.map +0 -1
  414. package/dist/sentinel/index.js +0 -22
  415. package/dist/sentinel/index.js.map +0 -1
  416. package/dist/sentinel/integrations/cli.d.ts +0 -10
  417. package/dist/sentinel/integrations/cli.d.ts.map +0 -1
  418. package/dist/sentinel/integrations/cli.js +0 -24
  419. package/dist/sentinel/integrations/cli.js.map +0 -1
  420. package/dist/sentinel/integrations/index.d.ts +0 -2
  421. package/dist/sentinel/integrations/index.d.ts.map +0 -1
  422. package/dist/sentinel/integrations/index.js +0 -2
  423. package/dist/sentinel/integrations/index.js.map +0 -1
  424. package/dist/sentinel/memory/index.d.ts +0 -16
  425. package/dist/sentinel/memory/index.d.ts.map +0 -1
  426. package/dist/sentinel/memory/index.js +0 -60
  427. package/dist/sentinel/memory/index.js.map +0 -1
  428. package/dist/sentinel/report/console.d.ts +0 -3
  429. package/dist/sentinel/report/console.d.ts.map +0 -1
  430. package/dist/sentinel/report/console.js +0 -27
  431. package/dist/sentinel/report/console.js.map +0 -1
  432. package/dist/sentinel/report/github.d.ts +0 -3
  433. package/dist/sentinel/report/github.d.ts.map +0 -1
  434. package/dist/sentinel/report/github.js +0 -36
  435. package/dist/sentinel/report/github.js.map +0 -1
  436. package/dist/sentinel/report/index.d.ts +0 -6
  437. package/dist/sentinel/report/index.d.ts.map +0 -1
  438. package/dist/sentinel/report/index.js +0 -15
  439. package/dist/sentinel/report/index.js.map +0 -1
  440. package/dist/sentinel/report/sarif.d.ts +0 -3
  441. package/dist/sentinel/report/sarif.d.ts.map +0 -1
  442. package/dist/sentinel/report/sarif.js +0 -29
  443. package/dist/sentinel/report/sarif.js.map +0 -1
  444. package/dist/sentinel/sentinel.d.ts +0 -17
  445. package/dist/sentinel/sentinel.d.ts.map +0 -1
  446. package/dist/sentinel/sentinel.js +0 -111
  447. package/dist/sentinel/sentinel.js.map +0 -1
  448. package/dist/sentinel/swarm/agents.d.ts +0 -6
  449. package/dist/sentinel/swarm/agents.d.ts.map +0 -1
  450. package/dist/sentinel/swarm/agents.js +0 -36
  451. package/dist/sentinel/swarm/agents.js.map +0 -1
  452. package/dist/sentinel/swarm/index.d.ts +0 -8
  453. package/dist/sentinel/swarm/index.d.ts.map +0 -1
  454. package/dist/sentinel/swarm/index.js +0 -74
  455. package/dist/sentinel/swarm/index.js.map +0 -1
  456. package/dist/sentinel/swarm/prompts.d.ts +0 -2
  457. package/dist/sentinel/swarm/prompts.d.ts.map +0 -1
  458. package/dist/sentinel/swarm/prompts.js +0 -24
  459. package/dist/sentinel/swarm/prompts.js.map +0 -1
  460. package/dist/sentinel/swarm/topology.d.ts +0 -10
  461. package/dist/sentinel/swarm/topology.d.ts.map +0 -1
  462. package/dist/sentinel/swarm/topology.js +0 -38
  463. package/dist/sentinel/swarm/topology.js.map +0 -1
  464. package/dist/sentinel/triage/analyzers/complexity-analyzer.d.ts +0 -7
  465. package/dist/sentinel/triage/analyzers/complexity-analyzer.d.ts.map +0 -1
  466. package/dist/sentinel/triage/analyzers/complexity-analyzer.js +0 -94
  467. package/dist/sentinel/triage/analyzers/complexity-analyzer.js.map +0 -1
  468. package/dist/sentinel/triage/analyzers/custom-analyzer.d.ts +0 -19
  469. package/dist/sentinel/triage/analyzers/custom-analyzer.d.ts.map +0 -1
  470. package/dist/sentinel/triage/analyzers/custom-analyzer.js +0 -268
  471. package/dist/sentinel/triage/analyzers/custom-analyzer.js.map +0 -1
  472. package/dist/sentinel/triage/analyzers/dependency-analyzer.d.ts +0 -26
  473. package/dist/sentinel/triage/analyzers/dependency-analyzer.d.ts.map +0 -1
  474. package/dist/sentinel/triage/analyzers/dependency-analyzer.js +0 -220
  475. package/dist/sentinel/triage/analyzers/dependency-analyzer.js.map +0 -1
  476. package/dist/sentinel/triage/analyzers/diff-analyzer.d.ts +0 -12
  477. package/dist/sentinel/triage/analyzers/diff-analyzer.d.ts.map +0 -1
  478. package/dist/sentinel/triage/analyzers/diff-analyzer.js +0 -19
  479. package/dist/sentinel/triage/analyzers/diff-analyzer.js.map +0 -1
  480. package/dist/sentinel/triage/analyzers/index.d.ts +0 -14
  481. package/dist/sentinel/triage/analyzers/index.d.ts.map +0 -1
  482. package/dist/sentinel/triage/analyzers/index.js +0 -25
  483. package/dist/sentinel/triage/analyzers/index.js.map +0 -1
  484. package/dist/sentinel/triage/analyzers/pattern-analyzer.d.ts +0 -7
  485. package/dist/sentinel/triage/analyzers/pattern-analyzer.d.ts.map +0 -1
  486. package/dist/sentinel/triage/analyzers/pattern-analyzer.js +0 -180
  487. package/dist/sentinel/triage/analyzers/pattern-analyzer.js.map +0 -1
  488. package/dist/sentinel/triage/analyzers/security-analyzer.d.ts +0 -7
  489. package/dist/sentinel/triage/analyzers/security-analyzer.d.ts.map +0 -1
  490. package/dist/sentinel/triage/analyzers/security-analyzer.js +0 -96
  491. package/dist/sentinel/triage/analyzers/security-analyzer.js.map +0 -1
  492. package/dist/sentinel/triage/analyzers/ts-parser.d.ts +0 -71
  493. package/dist/sentinel/triage/analyzers/ts-parser.d.ts.map +0 -1
  494. package/dist/sentinel/triage/analyzers/ts-parser.js +0 -323
  495. package/dist/sentinel/triage/analyzers/ts-parser.js.map +0 -1
  496. package/dist/sentinel/triage/analyzers/typescript-analyzer.d.ts +0 -7
  497. package/dist/sentinel/triage/analyzers/typescript-analyzer.d.ts.map +0 -1
  498. package/dist/sentinel/triage/analyzers/typescript-analyzer.js +0 -68
  499. package/dist/sentinel/triage/analyzers/typescript-analyzer.js.map +0 -1
  500. package/dist/sentinel/triage/index.d.ts +0 -10
  501. package/dist/sentinel/triage/index.d.ts.map +0 -1
  502. package/dist/sentinel/triage/index.js +0 -39
  503. package/dist/sentinel/triage/index.js.map +0 -1
  504. package/dist/sentinel/triage/scorer.d.ts +0 -9
  505. package/dist/sentinel/triage/scorer.d.ts.map +0 -1
  506. package/dist/sentinel/triage/scorer.js +0 -28
  507. package/dist/sentinel/triage/scorer.js.map +0 -1
  508. package/dist/sentinel/types.d.ts +0 -125
  509. package/dist/sentinel/types.d.ts.map +0 -1
  510. package/dist/sentinel/types.js +0 -6
  511. package/dist/sentinel/types.js.map +0 -1
@@ -1,156 +0,0 @@
1
- /**
2
- * Context File Loader — discovers and loads project-specific instructions.
3
- *
4
- * Scans for CLAUDE.md, AGENTS.md, and .cursorrules files in the project tree.
5
- * Includes injection threat scanning to block malicious content.
6
- *
7
- * Inspired by hermes-agent's prompt_builder.py context file system.
8
- */
9
- import { readFileSync, readdirSync, existsSync } from "node:fs";
10
- import { join, relative } from "node:path";
11
- // ── Constants ────────────────────────────────────────────────
12
- const MAX_CHARS = 20_000;
13
- const HEAD_RATIO = 0.7;
14
- const TAIL_RATIO = 0.2;
15
- /** Directories to skip during recursive scan */
16
- const SKIP_DIRS = new Set([
17
- "node_modules",
18
- ".git",
19
- "dist",
20
- "build",
21
- "coverage",
22
- ".cache",
23
- "__pycache__",
24
- "venv",
25
- ".venv",
26
- ]);
27
- /** Files to discover at root only */
28
- const ROOT_FILES = ["CLAUDE.md", "claude.md", ".cursorrules"];
29
- /** Files to discover recursively */
30
- const RECURSIVE_FILES = new Set(["AGENTS.md", "agents.md"]);
31
- // ── Injection Threat Scanning ────────────────────────────────
32
- const THREAT_PATTERNS = [
33
- { id: "prompt_injection", pattern: /ignore\s+(previous|all|above|prior)\s+instructions/i },
34
- { id: "prompt_override", pattern: /system\s+prompt\s+override/i },
35
- { id: "disregard_rules", pattern: /disregard\s+(your|all|any)\s+(instructions|rules|guidelines)/i },
36
- { id: "deception", pattern: /do\s+not\s+tell\s+the\s+user/i },
37
- { id: "html_injection", pattern: /<!--[^>]*(?:ignore|override|system|secret|hidden)[^>]*-->/i },
38
- { id: "hidden_div", pattern: /<\s*div\s+style\s*=\s*["'].*display\s*:\s*none/i },
39
- { id: "code_injection", pattern: /translate\s+.*\s+into\s+.*\s+and\s+(execute|run|eval)/i },
40
- { id: "exfiltration_curl", pattern: /curl\s+[^\n]*\$\{?\w*(KEY|TOKEN|SECRET|PASSWORD|CREDENTIAL|API)/i },
41
- { id: "exfiltration_cat", pattern: /cat\s+[^\n]*(\.env|credentials|\.netrc|\.pgpass)/i },
42
- ];
43
- const INVISIBLE_CHARS = new Set([
44
- "\u200b", "\u200c", "\u200d", "\u2060", "\ufeff",
45
- "\u202a", "\u202b", "\u202c", "\u202d", "\u202e",
46
- ]);
47
- /**
48
- * Scan content for injection threats. Returns array of threat IDs found.
49
- */
50
- export function scanForThreats(content) {
51
- const threats = [];
52
- for (const { id, pattern } of THREAT_PATTERNS) {
53
- if (pattern.test(content)) {
54
- threats.push(id);
55
- }
56
- }
57
- // Check for invisible unicode
58
- for (const char of content) {
59
- if (INVISIBLE_CHARS.has(char)) {
60
- threats.push("invisible_unicode");
61
- break;
62
- }
63
- }
64
- return threats;
65
- }
66
- // ── Truncation ───────────────────────────────────────────────
67
- /**
68
- * Truncate long content, preserving head (70%) and tail (20%).
69
- */
70
- export function truncateContent(content, filename, maxChars = MAX_CHARS) {
71
- if (content.length <= maxChars)
72
- return content;
73
- const headChars = Math.floor(maxChars * HEAD_RATIO);
74
- const tailChars = Math.floor(maxChars * TAIL_RATIO);
75
- const head = content.slice(0, headChars);
76
- const tail = content.slice(-tailChars);
77
- const marker = `\n\n[...truncated ${filename}: kept ${headChars}+${tailChars} of ${content.length} chars.]\n\n`;
78
- return head + marker + tail;
79
- }
80
- // ── File Discovery ───────────────────────────────────────────
81
- function walkForFiles(dir, rootDir) {
82
- const results = [];
83
- let entries;
84
- try {
85
- entries = readdirSync(dir, { withFileTypes: true });
86
- }
87
- catch {
88
- return results;
89
- }
90
- for (const entry of entries) {
91
- if (entry.isDirectory()) {
92
- if (SKIP_DIRS.has(entry.name) || entry.name.startsWith("."))
93
- continue;
94
- results.push(...walkForFiles(join(dir, entry.name), rootDir));
95
- }
96
- else if (entry.isFile() && RECURSIVE_FILES.has(entry.name)) {
97
- const fullPath = join(dir, entry.name);
98
- try {
99
- const content = readFileSync(fullPath, "utf-8");
100
- const relPath = relative(rootDir, fullPath).replace(/\\/g, "/");
101
- results.push({ relPath, content });
102
- }
103
- catch {
104
- // skip unreadable files
105
- }
106
- }
107
- }
108
- return results;
109
- }
110
- // ── Main Loader ──────────────────────────────────────────────
111
- /**
112
- * Load project context files from rootDir. Returns formatted context
113
- * string to append to the system prompt, or empty string if none found.
114
- */
115
- export function loadContextFiles(rootDir) {
116
- const sections = [];
117
- // 1. Root-only files (CLAUDE.md, .cursorrules)
118
- for (const filename of ROOT_FILES) {
119
- const filePath = join(rootDir, filename);
120
- if (!existsSync(filePath))
121
- continue;
122
- try {
123
- let content = readFileSync(filePath, "utf-8").trim();
124
- if (!content)
125
- continue;
126
- const threats = scanForThreats(content);
127
- if (threats.length > 0) {
128
- sections.push(`## ${filename}\n\n[BLOCKED: ${filename} contained potential prompt injection (${threats.join(", ")}). Content not loaded.]`);
129
- continue;
130
- }
131
- content = truncateContent(content, filename);
132
- sections.push(`## ${filename}\n\n${content}`);
133
- }
134
- catch {
135
- // skip unreadable files
136
- }
137
- }
138
- // 2. Recursive files (AGENTS.md)
139
- const agentsFiles = walkForFiles(rootDir, rootDir);
140
- agentsFiles.sort((a, b) => a.relPath.length - b.relPath.length);
141
- for (const { relPath, content: rawContent } of agentsFiles) {
142
- if (!rawContent.trim())
143
- continue;
144
- const threats = scanForThreats(rawContent);
145
- if (threats.length > 0) {
146
- sections.push(`## ${relPath}\n\n[BLOCKED: ${relPath} contained potential prompt injection (${threats.join(", ")}). Content not loaded.]`);
147
- continue;
148
- }
149
- const content = truncateContent(rawContent.trim(), relPath);
150
- sections.push(`## ${relPath}\n\n${content}`);
151
- }
152
- if (sections.length === 0)
153
- return "";
154
- return `# Project Context\n\nFollow these project-specific instructions:\n\n${sections.join("\n\n")}`;
155
- }
156
- //# sourceMappingURL=context-files.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context-files.js","sourceRoot":"","sources":["../../src/oni-code/context-files.ts"],"names":[],"mappings":"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"}
@@ -1,26 +0,0 @@
1
- /**
2
- * Cron expression humanizer — pure-function module, zero dependencies.
3
- *
4
- * Converts a standard 5-field cron expression into human-readable text.
5
- *
6
- * Supported patterns:
7
- * * /N * * * * → "Every N minutes"
8
- * 0 * /N * * * → "Every N hours"
9
- * M H * * * → "Daily at H:MM AM/PM"
10
- * M H * * 1-5 → "Weekdays at H:MM AM/PM"
11
- * M H * * 0,6 → "Weekends at H:MM AM/PM"
12
- * 0 0 * /N * * → "Every N days at midnight"
13
- * (anything else) → raw expression returned as-is
14
- */
15
- /**
16
- * Format hour + minute into 12-hour human-readable time.
17
- * Special cases: midnight (0:00), noon (12:00).
18
- */
19
- export declare function formatTime(hour: number, minute: number): string;
20
- /**
21
- * Convert a 5-field cron expression to human-readable text.
22
- *
23
- * Returns the raw expression unchanged if the pattern is not recognized.
24
- */
25
- export declare function humanizeCron(expr: string): string;
26
- //# sourceMappingURL=humanize.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"humanize.d.ts","sourceRoot":"","sources":["../../../src/oni-code/cron/humanize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAS/D;AAID;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAuDjD"}
@@ -1,83 +0,0 @@
1
- /**
2
- * Cron expression humanizer — pure-function module, zero dependencies.
3
- *
4
- * Converts a standard 5-field cron expression into human-readable text.
5
- *
6
- * Supported patterns:
7
- * * /N * * * * → "Every N minutes"
8
- * 0 * /N * * * → "Every N hours"
9
- * M H * * * → "Daily at H:MM AM/PM"
10
- * M H * * 1-5 → "Weekdays at H:MM AM/PM"
11
- * M H * * 0,6 → "Weekends at H:MM AM/PM"
12
- * 0 0 * /N * * → "Every N days at midnight"
13
- * (anything else) → raw expression returned as-is
14
- */
15
- // ── Helpers ─────────────────────────────────────────────
16
- /**
17
- * Format hour + minute into 12-hour human-readable time.
18
- * Special cases: midnight (0:00), noon (12:00).
19
- */
20
- export function formatTime(hour, minute) {
21
- if (hour === 0 && minute === 0)
22
- return "midnight";
23
- if (hour === 12 && minute === 0)
24
- return "noon";
25
- const period = hour < 12 ? "AM" : "PM";
26
- const displayHour = hour === 0 ? 12 : hour > 12 ? hour - 12 : hour;
27
- const displayMinute = String(minute).padStart(2, "0");
28
- return `${displayHour}:${displayMinute} ${period}`;
29
- }
30
- // ── Main ────────────────────────────────────────────────
31
- /**
32
- * Convert a 5-field cron expression to human-readable text.
33
- *
34
- * Returns the raw expression unchanged if the pattern is not recognized.
35
- */
36
- export function humanizeCron(expr) {
37
- const fields = expr.trim().split(/\s+/);
38
- if (fields.length !== 5)
39
- return expr;
40
- const [minute, hour, dom, month, dow] = fields;
41
- // ── Every N minutes: */N * * * * ──
42
- if (minute.startsWith("*/") && hour === "*" && dom === "*" && month === "*" && dow === "*") {
43
- const n = Number(minute.slice(2));
44
- if (!Number.isNaN(n) && n > 0) {
45
- return n === 1 ? "Every minute" : `Every ${n} minutes`;
46
- }
47
- }
48
- // ── Every N hours: 0 */N * * * ──
49
- if (minute === "0" && hour.startsWith("*/") && dom === "*" && month === "*" && dow === "*") {
50
- const n = Number(hour.slice(2));
51
- if (!Number.isNaN(n) && n > 0) {
52
- return n === 1 ? "Every hour" : `Every ${n} hours`;
53
- }
54
- }
55
- // ── Exact minute + hour ──
56
- const exactMinute = Number(minute);
57
- const exactHour = Number(hour);
58
- if (!Number.isNaN(exactMinute) && !Number.isNaN(exactHour) && dom === "*" && month === "*") {
59
- const time = formatTime(exactHour, exactMinute);
60
- // Weekdays: dow 1-5
61
- if (dow === "1-5") {
62
- return `Weekdays at ${time}`;
63
- }
64
- // Weekends: dow 0,6
65
- if (dow === "0,6") {
66
- return `Weekends at ${time}`;
67
- }
68
- // Daily: dow *
69
- if (dow === "*") {
70
- return `Daily at ${time}`;
71
- }
72
- }
73
- // ── Every N days at midnight: 0 0 */N * * ──
74
- if (minute === "0" && hour === "0" && dom.startsWith("*/") && month === "*" && dow === "*") {
75
- const n = Number(dom.slice(2));
76
- if (!Number.isNaN(n) && n > 0) {
77
- return n === 1 ? "Daily at midnight" : `Every ${n} days at midnight`;
78
- }
79
- }
80
- // ── Fallback: return raw expression ──
81
- return expr;
82
- }
83
- //# sourceMappingURL=humanize.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"humanize.js","sourceRoot":"","sources":["../../../src/oni-code/cron/humanize.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- export { CronScheduler } from "./scheduler.js";
2
- export type { CronSchedulerConfig } from "./scheduler.js";
3
- export { CronStore } from "./store.js";
4
- export type { CronJob, CronJobInput } from "./store.js";
5
- export { cronMatches, fieldMatches } from "./matcher.js";
6
- export { parseLoopInput, intervalToCron, DEFAULT_LOOP_INTERVAL } from "./parser.js";
7
- export { humanizeCron } from "./humanize.js";
8
- export { persistJobs, loadPersistedJobs } from "./persistence.js";
9
- export type { PersistedJob, LoadOptions } from "./persistence.js";
10
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/oni-code/cron/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAClE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,7 +0,0 @@
1
- export { CronScheduler } from "./scheduler.js";
2
- export { CronStore } from "./store.js";
3
- export { cronMatches, fieldMatches } from "./matcher.js";
4
- export { parseLoopInput, intervalToCron, DEFAULT_LOOP_INTERVAL } from "./parser.js";
5
- export { humanizeCron } from "./humanize.js";
6
- export { persistJobs, loadPersistedJobs } from "./persistence.js";
7
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/oni-code/cron/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,29 +0,0 @@
1
- /**
2
- * Cron expression matcher — pure-function module, zero dependencies.
3
- *
4
- * Supports standard 5-field cron expressions:
5
- * minute (0-59) hour (0-23) day-of-month (1-31) month (1-12) day-of-week (0-6, 0=Sunday)
6
- *
7
- * Field syntax:
8
- * * — matches any value
9
- * N — exact match
10
- * N-M — inclusive range
11
- * * /N — step (value % N === 0)
12
- * N,M,O — list (any sub-pattern matching = true)
13
- *
14
- * Combinations are supported: `1-5,10,* /3` splits by comma, any match = true.
15
- */
16
- /**
17
- * Match a cron field (may contain commas) against a value.
18
- * Splits by comma and returns true if any sub-pattern matches.
19
- */
20
- export declare function fieldMatches(field: string, value: number): boolean;
21
- /**
22
- * Match a 5-field cron expression against a Date.
23
- *
24
- * Fields: minute hour day-of-month month day-of-week
25
- *
26
- * Returns `false` for malformed expressions (field count !== 5).
27
- */
28
- export declare function cronMatches(expr: string, date: Date): boolean;
29
- //# sourceMappingURL=matcher.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"matcher.d.ts","sourceRoot":"","sources":["../../../src/oni-code/cron/matcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA+BH;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAGlE;AAID;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAa7D"}
@@ -1,73 +0,0 @@
1
- /**
2
- * Cron expression matcher — pure-function module, zero dependencies.
3
- *
4
- * Supports standard 5-field cron expressions:
5
- * minute (0-59) hour (0-23) day-of-month (1-31) month (1-12) day-of-week (0-6, 0=Sunday)
6
- *
7
- * Field syntax:
8
- * * — matches any value
9
- * N — exact match
10
- * N-M — inclusive range
11
- * * /N — step (value % N === 0)
12
- * N,M,O — list (any sub-pattern matching = true)
13
- *
14
- * Combinations are supported: `1-5,10,* /3` splits by comma, any match = true.
15
- */
16
- // ── Field matching ───────────────────────────────────────
17
- /**
18
- * Match a single sub-pattern (no commas) against a numeric value.
19
- */
20
- function subPatternMatches(pattern, value) {
21
- // Step: */N
22
- if (pattern.startsWith("*/")) {
23
- const step = Number(pattern.slice(2));
24
- if (Number.isNaN(step) || step <= 0)
25
- return false;
26
- return value % step === 0;
27
- }
28
- // Range: N-M
29
- if (pattern.includes("-")) {
30
- const [lo, hi] = pattern.split("-").map(Number);
31
- if (Number.isNaN(lo) || Number.isNaN(hi))
32
- return false;
33
- return value >= lo && value <= hi;
34
- }
35
- // Wildcard
36
- if (pattern === "*")
37
- return true;
38
- // Exact
39
- const exact = Number(pattern);
40
- if (Number.isNaN(exact))
41
- return false;
42
- return value === exact;
43
- }
44
- /**
45
- * Match a cron field (may contain commas) against a value.
46
- * Splits by comma and returns true if any sub-pattern matches.
47
- */
48
- export function fieldMatches(field, value) {
49
- const parts = field.split(",");
50
- return parts.some((p) => subPatternMatches(p.trim(), value));
51
- }
52
- // ── Full expression matching ─────────────────────────────
53
- /**
54
- * Match a 5-field cron expression against a Date.
55
- *
56
- * Fields: minute hour day-of-month month day-of-week
57
- *
58
- * Returns `false` for malformed expressions (field count !== 5).
59
- */
60
- export function cronMatches(expr, date) {
61
- const fields = expr.trim().split(/\s+/);
62
- if (fields.length !== 5)
63
- return false;
64
- const values = [
65
- date.getMinutes(), // 0-59
66
- date.getHours(), // 0-23
67
- date.getDate(), // 1-31
68
- date.getMonth() + 1, // 1-12
69
- date.getDay(), // 0-6, 0=Sunday
70
- ];
71
- return fields.every((field, i) => fieldMatches(field, values[i]));
72
- }
73
- //# sourceMappingURL=matcher.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"matcher.js","sourceRoot":"","sources":["../../../src/oni-code/cron/matcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,4DAA4D;AAE5D;;GAEG;AACH,SAAS,iBAAiB,CAAC,OAAe,EAAE,KAAa;IACvD,YAAY;IACZ,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAClD,OAAO,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,aAAa;IACb,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAAE,OAAO,KAAK,CAAC;QACvD,OAAO,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE,CAAC;IACpC,CAAC;IAED,WAAW;IACX,IAAI,OAAO,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IAEjC,QAAQ;IACR,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtC,OAAO,KAAK,KAAK,KAAK,CAAC;AACzB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,KAAa;IACvD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,4DAA4D;AAE5D;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,IAAU;IAClD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACxC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEtC,MAAM,MAAM,GAAG;QACb,IAAI,CAAC,UAAU,EAAE,EAAQ,OAAO;QAChC,IAAI,CAAC,QAAQ,EAAE,EAAU,OAAO;QAChC,IAAI,CAAC,OAAO,EAAE,EAAW,OAAO;QAChC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAM,OAAO;QAChC,IAAI,CAAC,MAAM,EAAE,EAAY,gBAAgB;KAC1C,CAAC;IAEF,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC"}
@@ -1,27 +0,0 @@
1
- /**
2
- * Cron Parser — pure-function module for parsing loop/cron inputs.
3
- *
4
- * Zero dependencies. Converts human-friendly interval strings ("5m", "2h")
5
- * into structured interval+prompt pairs and 5-field cron expressions.
6
- *
7
- * Priority rules for parseLoopInput:
8
- * 1. Leading token: first token matches ^\d+[smhd]$ → interval, rest is prompt
9
- * 2. Trailing "every" clause: ends with "every <N><unit>" or "every <N> <unit_word>"
10
- * 3. Default: interval="10m", full input is prompt
11
- */
12
- /** Default interval when no time expression is found in input. */
13
- export declare const DEFAULT_LOOP_INTERVAL = "10m";
14
- /**
15
- * Parse raw user input into a structured interval + prompt pair.
16
- *
17
- * @example
18
- * parseLoopInput("5m check deploys") // { interval: "5m", prompt: "check deploys" }
19
- * parseLoopInput("check deploys every 20m") // { interval: "20m", prompt: "check deploys" }
20
- * parseLoopInput("babysit all my PRs") // { interval: "10m", prompt: "babysit all my PRs" }
21
- */
22
- export declare function parseLoopInput(raw: string): {
23
- interval: string;
24
- prompt: string;
25
- };
26
- export declare function intervalToCron(interval: string): string;
27
- //# sourceMappingURL=parser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/oni-code/cron/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,kEAAkE;AAClE,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAuC3C;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,CA4CA;AASD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAsDvD"}
@@ -1,149 +0,0 @@
1
- /**
2
- * Cron Parser — pure-function module for parsing loop/cron inputs.
3
- *
4
- * Zero dependencies. Converts human-friendly interval strings ("5m", "2h")
5
- * into structured interval+prompt pairs and 5-field cron expressions.
6
- *
7
- * Priority rules for parseLoopInput:
8
- * 1. Leading token: first token matches ^\d+[smhd]$ → interval, rest is prompt
9
- * 2. Trailing "every" clause: ends with "every <N><unit>" or "every <N> <unit_word>"
10
- * 3. Default: interval="10m", full input is prompt
11
- */
12
- // ── Constants ───────────────────────────────────────────────
13
- /** Default interval when no time expression is found in input. */
14
- export const DEFAULT_LOOP_INTERVAL = "10m";
15
- // ── Helpers ─────────────────────────────────────────────────
16
- /** Pattern for a compact interval token: digits followed by s/m/h/d. */
17
- const INTERVAL_RE = /^\d+[smhd]$/;
18
- /**
19
- * Maps unit words (with optional trailing 's') to their single-char abbreviation.
20
- */
21
- const UNIT_WORD_MAP = {
22
- second: "s",
23
- seconds: "s",
24
- minute: "m",
25
- minutes: "m",
26
- hour: "h",
27
- hours: "h",
28
- day: "d",
29
- days: "d",
30
- };
31
- /**
32
- * Trailing "every" clause pattern.
33
- *
34
- * Matches input ending with:
35
- * - "every <N><unit>" (e.g., "every 20m")
36
- * - "every <N> <unit_word>" (e.g., "every 5 minutes")
37
- *
38
- * Captures:
39
- * [1] = everything before "every"
40
- * [2] = the number
41
- * [3] = compact unit (s/m/h/d) OR undefined
42
- * [4] = unit word (seconds/minutes/...) OR undefined
43
- */
44
- const TRAILING_EVERY_RE = /^(.*?)\s+every\s+(\d+)\s*([smhd])?\s*(seconds?|minutes?|hours?|days?)?\s*$/i;
45
- // ── Public API ──────────────────────────────────────────────
46
- /**
47
- * Parse raw user input into a structured interval + prompt pair.
48
- *
49
- * @example
50
- * parseLoopInput("5m check deploys") // { interval: "5m", prompt: "check deploys" }
51
- * parseLoopInput("check deploys every 20m") // { interval: "20m", prompt: "check deploys" }
52
- * parseLoopInput("babysit all my PRs") // { interval: "10m", prompt: "babysit all my PRs" }
53
- */
54
- export function parseLoopInput(raw) {
55
- const trimmed = raw.trim();
56
- if (!trimmed) {
57
- return { interval: DEFAULT_LOOP_INTERVAL, prompt: "" };
58
- }
59
- // Rule 1: Leading token is an interval like "5m", "2h", "30s", "1d"
60
- const spaceIdx = trimmed.indexOf(" ");
61
- if (spaceIdx !== -1) {
62
- const firstToken = trimmed.slice(0, spaceIdx);
63
- if (INTERVAL_RE.test(firstToken)) {
64
- return {
65
- interval: firstToken,
66
- prompt: trimmed.slice(spaceIdx + 1).trim(),
67
- };
68
- }
69
- }
70
- // Rule 2: Trailing "every <time>" clause
71
- const match = TRAILING_EVERY_RE.exec(trimmed);
72
- if (match) {
73
- const promptPart = match[1].trim();
74
- const num = match[2];
75
- const compactUnit = match[3]; // s/m/h/d or undefined
76
- const wordUnit = match[4]; // seconds/minutes/... or undefined
77
- // Must have a valid unit — either compact or word form.
78
- // This prevents matching "check every PR" (no unit after "every <token>").
79
- if (compactUnit || wordUnit) {
80
- const unit = compactUnit
81
- ? compactUnit.toLowerCase()
82
- : UNIT_WORD_MAP[wordUnit.toLowerCase()];
83
- if (unit) {
84
- return {
85
- interval: `${num}${unit}`,
86
- prompt: promptPart,
87
- };
88
- }
89
- }
90
- }
91
- // Rule 3: No time expression found — use default interval
92
- return { interval: DEFAULT_LOOP_INTERVAL, prompt: trimmed };
93
- }
94
- // intervalToCron("5m") → "* /5 * * * *" (every 5 min)
95
- // intervalToCron("2h") → "0 * /2 * * *" (every 2 hours)
96
- // intervalToCron("3d") → "0 0 * /3 * *" (every 3 days)
97
- // intervalToCron("90s") → "* /2 * * * *" (ceil 90/60 = 2 min)
98
- // intervalToCron("120m") → "0 * /2 * * *" (120min = 2 hours)
99
- //
100
- // Throws on invalid input.
101
- export function intervalToCron(interval) {
102
- const match = /^(\d+)([smhd])$/.exec(interval);
103
- if (!match) {
104
- throw new Error(`Invalid interval "${interval}": expected format like "5m", "2h", "3d", "90s"`);
105
- }
106
- const value = parseInt(match[1], 10);
107
- const unit = match[2];
108
- if (value <= 0) {
109
- throw new Error(`Invalid interval "${interval}": value must be greater than 0`);
110
- }
111
- switch (unit) {
112
- case "s": {
113
- // Seconds: ceil to minutes (cron minimum granularity is 1 minute)
114
- const minutes = Math.ceil(value / 60);
115
- if (minutes > 59) {
116
- const hours = Math.ceil(minutes / 60);
117
- return `0 */${hours} * * *`;
118
- }
119
- return `*/${minutes} * * * *`;
120
- }
121
- case "m": {
122
- if (value <= 59) {
123
- return `*/${value} * * * *`;
124
- }
125
- // 60+ minutes → convert to hours
126
- const hours = Math.ceil(value / 60);
127
- if (hours <= 23) {
128
- return `0 */${hours} * * *`;
129
- }
130
- // 24+ hours → convert to days
131
- const days = Math.ceil(hours / 24);
132
- return `0 0 */${days} * *`;
133
- }
134
- case "h": {
135
- if (value <= 23) {
136
- return `0 */${value} * * *`;
137
- }
138
- // 24+ hours → convert to days
139
- const days = Math.ceil(value / 24);
140
- return `0 0 */${days} * *`;
141
- }
142
- case "d": {
143
- return `0 0 */${value} * *`;
144
- }
145
- default:
146
- throw new Error(`Invalid interval unit "${unit}"`);
147
- }
148
- }
149
- //# sourceMappingURL=parser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/oni-code/cron/parser.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- import type { CronJob } from "./store.js";
2
- export interface PersistedJob {
3
- id: string;
4
- cron: string;
5
- prompt: string;
6
- recurring: boolean;
7
- createdAt: number;
8
- humanSchedule?: string;
9
- }
10
- export interface LoadOptions {
11
- /** Override auto-expiry duration (default 3 days). */
12
- autoExpiryMs?: number;
13
- }
14
- /**
15
- * Load persisted jobs from `<rootDir>/.oni/scheduled_tasks.json`.
16
- * Filters out expired jobs and jobs with missing required fields.
17
- * Returns empty array if file is missing or corrupt.
18
- */
19
- export declare function loadPersistedJobs(rootDir: string, opts?: LoadOptions): PersistedJob[];
20
- export declare function persistJobs(rootDir: string, jobs: CronJob[]): void;
21
- //# sourceMappingURL=persistence.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../../src/oni-code/cron/persistence.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAM1C,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CAExB;AASD,MAAM,WAAW,WAAW;IAC1B,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,YAAY,EAAE,CAsBrF;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAwBlE"}