@oni.bot/core 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (453) hide show
  1. package/package.json +1 -1
  2. package/dist/oni-code/agent-registry.d.ts +0 -73
  3. package/dist/oni-code/agent-registry.d.ts.map +0 -1
  4. package/dist/oni-code/agent-registry.js +0 -151
  5. package/dist/oni-code/agent-registry.js.map +0 -1
  6. package/dist/oni-code/bin.d.ts +0 -18
  7. package/dist/oni-code/bin.d.ts.map +0 -1
  8. package/dist/oni-code/bin.js +0 -78
  9. package/dist/oni-code/bin.js.map +0 -1
  10. package/dist/oni-code/change-tracking.d.ts +0 -28
  11. package/dist/oni-code/change-tracking.d.ts.map +0 -1
  12. package/dist/oni-code/change-tracking.js +0 -77
  13. package/dist/oni-code/change-tracking.js.map +0 -1
  14. package/dist/oni-code/cli.d.ts +0 -6
  15. package/dist/oni-code/cli.d.ts.map +0 -1
  16. package/dist/oni-code/cli.js +0 -30
  17. package/dist/oni-code/cli.js.map +0 -1
  18. package/dist/oni-code/conductor.d.ts +0 -203
  19. package/dist/oni-code/conductor.d.ts.map +0 -1
  20. package/dist/oni-code/conductor.js +0 -1547
  21. package/dist/oni-code/conductor.js.map +0 -1
  22. package/dist/oni-code/config.d.ts +0 -130
  23. package/dist/oni-code/config.d.ts.map +0 -1
  24. package/dist/oni-code/config.js +0 -264
  25. package/dist/oni-code/config.js.map +0 -1
  26. package/dist/oni-code/context-files.d.ts +0 -22
  27. package/dist/oni-code/context-files.d.ts.map +0 -1
  28. package/dist/oni-code/context-files.js +0 -156
  29. package/dist/oni-code/context-files.js.map +0 -1
  30. package/dist/oni-code/cron/humanize.d.ts +0 -26
  31. package/dist/oni-code/cron/humanize.d.ts.map +0 -1
  32. package/dist/oni-code/cron/humanize.js +0 -83
  33. package/dist/oni-code/cron/humanize.js.map +0 -1
  34. package/dist/oni-code/cron/index.d.ts +0 -10
  35. package/dist/oni-code/cron/index.d.ts.map +0 -1
  36. package/dist/oni-code/cron/index.js +0 -7
  37. package/dist/oni-code/cron/index.js.map +0 -1
  38. package/dist/oni-code/cron/matcher.d.ts +0 -29
  39. package/dist/oni-code/cron/matcher.d.ts.map +0 -1
  40. package/dist/oni-code/cron/matcher.js +0 -73
  41. package/dist/oni-code/cron/matcher.js.map +0 -1
  42. package/dist/oni-code/cron/parser.d.ts +0 -27
  43. package/dist/oni-code/cron/parser.d.ts.map +0 -1
  44. package/dist/oni-code/cron/parser.js +0 -149
  45. package/dist/oni-code/cron/parser.js.map +0 -1
  46. package/dist/oni-code/cron/persistence.d.ts +0 -21
  47. package/dist/oni-code/cron/persistence.d.ts.map +0 -1
  48. package/dist/oni-code/cron/persistence.js +0 -58
  49. package/dist/oni-code/cron/persistence.js.map +0 -1
  50. package/dist/oni-code/cron/scheduler.d.ts +0 -64
  51. package/dist/oni-code/cron/scheduler.d.ts.map +0 -1
  52. package/dist/oni-code/cron/scheduler.js +0 -188
  53. package/dist/oni-code/cron/scheduler.js.map +0 -1
  54. package/dist/oni-code/cron/store.d.ts +0 -46
  55. package/dist/oni-code/cron/store.d.ts.map +0 -1
  56. package/dist/oni-code/cron/store.js +0 -68
  57. package/dist/oni-code/cron/store.js.map +0 -1
  58. package/dist/oni-code/env.d.ts +0 -17
  59. package/dist/oni-code/env.d.ts.map +0 -1
  60. package/dist/oni-code/env.js +0 -51
  61. package/dist/oni-code/env.js.map +0 -1
  62. package/dist/oni-code/file-reader.d.ts +0 -28
  63. package/dist/oni-code/file-reader.d.ts.map +0 -1
  64. package/dist/oni-code/file-reader.js +0 -368
  65. package/dist/oni-code/file-reader.js.map +0 -1
  66. package/dist/oni-code/file-watcher.d.ts +0 -66
  67. package/dist/oni-code/file-watcher.d.ts.map +0 -1
  68. package/dist/oni-code/file-watcher.js +0 -167
  69. package/dist/oni-code/file-watcher.js.map +0 -1
  70. package/dist/oni-code/loop-detector.d.ts +0 -64
  71. package/dist/oni-code/loop-detector.d.ts.map +0 -1
  72. package/dist/oni-code/loop-detector.js +0 -163
  73. package/dist/oni-code/loop-detector.js.map +0 -1
  74. package/dist/oni-code/permissions.d.ts +0 -43
  75. package/dist/oni-code/permissions.d.ts.map +0 -1
  76. package/dist/oni-code/permissions.js +0 -98
  77. package/dist/oni-code/permissions.js.map +0 -1
  78. package/dist/oni-code/planner.d.ts +0 -26
  79. package/dist/oni-code/planner.d.ts.map +0 -1
  80. package/dist/oni-code/planner.js +0 -86
  81. package/dist/oni-code/planner.js.map +0 -1
  82. package/dist/oni-code/plugin-loader.d.ts +0 -103
  83. package/dist/oni-code/plugin-loader.d.ts.map +0 -1
  84. package/dist/oni-code/plugin-loader.js +0 -171
  85. package/dist/oni-code/plugin-loader.js.map +0 -1
  86. package/dist/oni-code/process-tree.d.ts +0 -44
  87. package/dist/oni-code/process-tree.d.ts.map +0 -1
  88. package/dist/oni-code/process-tree.js +0 -107
  89. package/dist/oni-code/process-tree.js.map +0 -1
  90. package/dist/oni-code/progress-tracker.d.ts +0 -40
  91. package/dist/oni-code/progress-tracker.d.ts.map +0 -1
  92. package/dist/oni-code/progress-tracker.js +0 -375
  93. package/dist/oni-code/progress-tracker.js.map +0 -1
  94. package/dist/oni-code/scheduler.d.ts +0 -56
  95. package/dist/oni-code/scheduler.d.ts.map +0 -1
  96. package/dist/oni-code/scheduler.js +0 -105
  97. package/dist/oni-code/scheduler.js.map +0 -1
  98. package/dist/oni-code/session-fork.d.ts +0 -146
  99. package/dist/oni-code/session-fork.d.ts.map +0 -1
  100. package/dist/oni-code/session-fork.js +0 -238
  101. package/dist/oni-code/session-fork.js.map +0 -1
  102. package/dist/oni-code/session-stats.d.ts +0 -72
  103. package/dist/oni-code/session-stats.d.ts.map +0 -1
  104. package/dist/oni-code/session-stats.js +0 -141
  105. package/dist/oni-code/session-stats.js.map +0 -1
  106. package/dist/oni-code/session-title.d.ts +0 -25
  107. package/dist/oni-code/session-title.d.ts.map +0 -1
  108. package/dist/oni-code/session-title.js +0 -67
  109. package/dist/oni-code/session-title.js.map +0 -1
  110. package/dist/oni-code/shell-parser.d.ts +0 -112
  111. package/dist/oni-code/shell-parser.d.ts.map +0 -1
  112. package/dist/oni-code/shell-parser.js +0 -657
  113. package/dist/oni-code/shell-parser.js.map +0 -1
  114. package/dist/oni-code/summarizer.d.ts +0 -27
  115. package/dist/oni-code/summarizer.d.ts.map +0 -1
  116. package/dist/oni-code/summarizer.js +0 -70
  117. package/dist/oni-code/summarizer.js.map +0 -1
  118. package/dist/oni-code/swarm-checkpoint.d.ts +0 -52
  119. package/dist/oni-code/swarm-checkpoint.d.ts.map +0 -1
  120. package/dist/oni-code/swarm-checkpoint.js +0 -71
  121. package/dist/oni-code/swarm-checkpoint.js.map +0 -1
  122. package/dist/oni-code/swarm-runner.d.ts +0 -173
  123. package/dist/oni-code/swarm-runner.d.ts.map +0 -1
  124. package/dist/oni-code/swarm-runner.js +0 -873
  125. package/dist/oni-code/swarm-runner.js.map +0 -1
  126. package/dist/oni-code/system-prompt.d.ts +0 -13
  127. package/dist/oni-code/system-prompt.d.ts.map +0 -1
  128. package/dist/oni-code/system-prompt.js +0 -64
  129. package/dist/oni-code/system-prompt.js.map +0 -1
  130. package/dist/oni-code/task-evaluator.d.ts +0 -73
  131. package/dist/oni-code/task-evaluator.d.ts.map +0 -1
  132. package/dist/oni-code/task-evaluator.js +0 -172
  133. package/dist/oni-code/task-evaluator.js.map +0 -1
  134. package/dist/oni-code/tools/batch.d.ts +0 -12
  135. package/dist/oni-code/tools/batch.d.ts.map +0 -1
  136. package/dist/oni-code/tools/batch.js +0 -116
  137. package/dist/oni-code/tools/batch.js.map +0 -1
  138. package/dist/oni-code/tools/coding.d.ts +0 -10
  139. package/dist/oni-code/tools/coding.d.ts.map +0 -1
  140. package/dist/oni-code/tools/coding.js +0 -557
  141. package/dist/oni-code/tools/coding.js.map +0 -1
  142. package/dist/oni-code/tools/cron.d.ts +0 -4
  143. package/dist/oni-code/tools/cron.d.ts.map +0 -1
  144. package/dist/oni-code/tools/cron.js +0 -120
  145. package/dist/oni-code/tools/cron.js.map +0 -1
  146. package/dist/oni-code/tools/custom.d.ts +0 -43
  147. package/dist/oni-code/tools/custom.d.ts.map +0 -1
  148. package/dist/oni-code/tools/custom.js +0 -115
  149. package/dist/oni-code/tools/custom.js.map +0 -1
  150. package/dist/oni-code/tools/patch.d.ts +0 -58
  151. package/dist/oni-code/tools/patch.d.ts.map +0 -1
  152. package/dist/oni-code/tools/patch.js +0 -247
  153. package/dist/oni-code/tools/patch.js.map +0 -1
  154. package/dist/oni-code/tools/plan.d.ts +0 -17
  155. package/dist/oni-code/tools/plan.d.ts.map +0 -1
  156. package/dist/oni-code/tools/plan.js +0 -48
  157. package/dist/oni-code/tools/plan.js.map +0 -1
  158. package/dist/oni-code/tools/question.d.ts +0 -17
  159. package/dist/oni-code/tools/question.d.ts.map +0 -1
  160. package/dist/oni-code/tools/question.js +0 -46
  161. package/dist/oni-code/tools/question.js.map +0 -1
  162. package/dist/oni-code/tools/skill.d.ts +0 -36
  163. package/dist/oni-code/tools/skill.d.ts.map +0 -1
  164. package/dist/oni-code/tools/skill.js +0 -132
  165. package/dist/oni-code/tools/skill.js.map +0 -1
  166. package/dist/oni-code/tools/spawn-agents.d.ts +0 -37
  167. package/dist/oni-code/tools/spawn-agents.d.ts.map +0 -1
  168. package/dist/oni-code/tools/spawn-agents.js +0 -91
  169. package/dist/oni-code/tools/spawn-agents.js.map +0 -1
  170. package/dist/oni-code/tools/spawn-swarm.d.ts +0 -70
  171. package/dist/oni-code/tools/spawn-swarm.d.ts.map +0 -1
  172. package/dist/oni-code/tools/spawn-swarm.js +0 -129
  173. package/dist/oni-code/tools/spawn-swarm.js.map +0 -1
  174. package/dist/oni-code/tools/web.d.ts +0 -11
  175. package/dist/oni-code/tools/web.d.ts.map +0 -1
  176. package/dist/oni-code/tools/web.js +0 -375
  177. package/dist/oni-code/tools/web.js.map +0 -1
  178. package/dist/oni-code/topology-agent-builder.d.ts +0 -22
  179. package/dist/oni-code/topology-agent-builder.d.ts.map +0 -1
  180. package/dist/oni-code/topology-agent-builder.js +0 -220
  181. package/dist/oni-code/topology-agent-builder.js.map +0 -1
  182. package/dist/oni-code/topology-selector.d.ts +0 -85
  183. package/dist/oni-code/topology-selector.d.ts.map +0 -1
  184. package/dist/oni-code/topology-selector.js +0 -338
  185. package/dist/oni-code/topology-selector.js.map +0 -1
  186. package/dist/oni-code/ui/App.d.ts +0 -10
  187. package/dist/oni-code/ui/App.d.ts.map +0 -1
  188. package/dist/oni-code/ui/App.js +0 -395
  189. package/dist/oni-code/ui/App.js.map +0 -1
  190. package/dist/oni-code/ui/FooterPanel.d.ts +0 -16
  191. package/dist/oni-code/ui/FooterPanel.d.ts.map +0 -1
  192. package/dist/oni-code/ui/FooterPanel.js +0 -56
  193. package/dist/oni-code/ui/FooterPanel.js.map +0 -1
  194. package/dist/oni-code/ui/Header.d.ts +0 -21
  195. package/dist/oni-code/ui/Header.d.ts.map +0 -1
  196. package/dist/oni-code/ui/Header.js +0 -105
  197. package/dist/oni-code/ui/Header.js.map +0 -1
  198. package/dist/oni-code/ui/InputArea.d.ts +0 -11
  199. package/dist/oni-code/ui/InputArea.d.ts.map +0 -1
  200. package/dist/oni-code/ui/InputArea.js +0 -82
  201. package/dist/oni-code/ui/InputArea.js.map +0 -1
  202. package/dist/oni-code/ui/MessageBlock.d.ts +0 -11
  203. package/dist/oni-code/ui/MessageBlock.d.ts.map +0 -1
  204. package/dist/oni-code/ui/MessageBlock.js +0 -103
  205. package/dist/oni-code/ui/MessageBlock.js.map +0 -1
  206. package/dist/oni-code/ui/OutputPane.d.ts +0 -12
  207. package/dist/oni-code/ui/OutputPane.d.ts.map +0 -1
  208. package/dist/oni-code/ui/OutputPane.js +0 -8
  209. package/dist/oni-code/ui/OutputPane.js.map +0 -1
  210. package/dist/oni-code/ui/PermissionPrompt.d.ts +0 -11
  211. package/dist/oni-code/ui/PermissionPrompt.d.ts.map +0 -1
  212. package/dist/oni-code/ui/PermissionPrompt.js +0 -48
  213. package/dist/oni-code/ui/PermissionPrompt.js.map +0 -1
  214. package/dist/oni-code/ui/QuestionPrompt.d.ts +0 -8
  215. package/dist/oni-code/ui/QuestionPrompt.d.ts.map +0 -1
  216. package/dist/oni-code/ui/QuestionPrompt.js +0 -9
  217. package/dist/oni-code/ui/QuestionPrompt.js.map +0 -1
  218. package/dist/oni-code/ui/StatusLine.d.ts +0 -14
  219. package/dist/oni-code/ui/StatusLine.d.ts.map +0 -1
  220. package/dist/oni-code/ui/StatusLine.js +0 -23
  221. package/dist/oni-code/ui/StatusLine.js.map +0 -1
  222. package/dist/oni-code/ui/SwarmPanel.d.ts +0 -9
  223. package/dist/oni-code/ui/SwarmPanel.d.ts.map +0 -1
  224. package/dist/oni-code/ui/SwarmPanel.js +0 -52
  225. package/dist/oni-code/ui/SwarmPanel.js.map +0 -1
  226. package/dist/oni-code/ui/ToolCallBlock.d.ts +0 -10
  227. package/dist/oni-code/ui/ToolCallBlock.d.ts.map +0 -1
  228. package/dist/oni-code/ui/ToolCallBlock.js +0 -21
  229. package/dist/oni-code/ui/ToolCallBlock.js.map +0 -1
  230. package/dist/oni-code/ui/Toolbar.d.ts +0 -8
  231. package/dist/oni-code/ui/Toolbar.d.ts.map +0 -1
  232. package/dist/oni-code/ui/Toolbar.js +0 -11
  233. package/dist/oni-code/ui/Toolbar.js.map +0 -1
  234. package/dist/oni-code/ui/WelcomeBanner.d.ts +0 -12
  235. package/dist/oni-code/ui/WelcomeBanner.d.ts.map +0 -1
  236. package/dist/oni-code/ui/WelcomeBanner.js +0 -24
  237. package/dist/oni-code/ui/WelcomeBanner.js.map +0 -1
  238. package/dist/oni-code/ui/activity.d.ts +0 -15
  239. package/dist/oni-code/ui/activity.d.ts.map +0 -1
  240. package/dist/oni-code/ui/activity.js +0 -252
  241. package/dist/oni-code/ui/activity.js.map +0 -1
  242. package/dist/oni-code/ui/banner.d.ts +0 -16
  243. package/dist/oni-code/ui/banner.d.ts.map +0 -1
  244. package/dist/oni-code/ui/banner.js +0 -132
  245. package/dist/oni-code/ui/banner.js.map +0 -1
  246. package/dist/oni-code/ui/command-menu.d.ts +0 -7
  247. package/dist/oni-code/ui/command-menu.d.ts.map +0 -1
  248. package/dist/oni-code/ui/command-menu.js +0 -20
  249. package/dist/oni-code/ui/command-menu.js.map +0 -1
  250. package/dist/oni-code/ui/diff.d.ts +0 -17
  251. package/dist/oni-code/ui/diff.d.ts.map +0 -1
  252. package/dist/oni-code/ui/diff.js +0 -37
  253. package/dist/oni-code/ui/diff.js.map +0 -1
  254. package/dist/oni-code/ui/format.d.ts +0 -41
  255. package/dist/oni-code/ui/format.d.ts.map +0 -1
  256. package/dist/oni-code/ui/format.js +0 -223
  257. package/dist/oni-code/ui/format.js.map +0 -1
  258. package/dist/oni-code/ui/input.d.ts +0 -28
  259. package/dist/oni-code/ui/input.d.ts.map +0 -1
  260. package/dist/oni-code/ui/input.js +0 -216
  261. package/dist/oni-code/ui/input.js.map +0 -1
  262. package/dist/oni-code/ui/insights.d.ts +0 -39
  263. package/dist/oni-code/ui/insights.d.ts.map +0 -1
  264. package/dist/oni-code/ui/insights.js +0 -193
  265. package/dist/oni-code/ui/insights.js.map +0 -1
  266. package/dist/oni-code/ui/markdown.d.ts +0 -9
  267. package/dist/oni-code/ui/markdown.d.ts.map +0 -1
  268. package/dist/oni-code/ui/markdown.js +0 -44
  269. package/dist/oni-code/ui/markdown.js.map +0 -1
  270. package/dist/oni-code/ui/panels.d.ts +0 -39
  271. package/dist/oni-code/ui/panels.d.ts.map +0 -1
  272. package/dist/oni-code/ui/panels.js +0 -209
  273. package/dist/oni-code/ui/panels.js.map +0 -1
  274. package/dist/oni-code/ui/paste.d.ts +0 -17
  275. package/dist/oni-code/ui/paste.d.ts.map +0 -1
  276. package/dist/oni-code/ui/paste.js +0 -45
  277. package/dist/oni-code/ui/paste.js.map +0 -1
  278. package/dist/oni-code/ui/raw-spinner.d.ts +0 -37
  279. package/dist/oni-code/ui/raw-spinner.d.ts.map +0 -1
  280. package/dist/oni-code/ui/raw-spinner.js +0 -121
  281. package/dist/oni-code/ui/raw-spinner.js.map +0 -1
  282. package/dist/oni-code/ui/session.d.ts +0 -44
  283. package/dist/oni-code/ui/session.d.ts.map +0 -1
  284. package/dist/oni-code/ui/session.js +0 -93
  285. package/dist/oni-code/ui/session.js.map +0 -1
  286. package/dist/oni-code/ui/spinner.d.ts +0 -7
  287. package/dist/oni-code/ui/spinner.d.ts.map +0 -1
  288. package/dist/oni-code/ui/spinner.js +0 -20
  289. package/dist/oni-code/ui/spinner.js.map +0 -1
  290. package/dist/oni-code/ui/swarm-activity.d.ts +0 -50
  291. package/dist/oni-code/ui/swarm-activity.d.ts.map +0 -1
  292. package/dist/oni-code/ui/swarm-activity.js +0 -233
  293. package/dist/oni-code/ui/swarm-activity.js.map +0 -1
  294. package/dist/oni-code/ui/terminal-size.d.ts +0 -18
  295. package/dist/oni-code/ui/terminal-size.d.ts.map +0 -1
  296. package/dist/oni-code/ui/terminal-size.js +0 -45
  297. package/dist/oni-code/ui/terminal-size.js.map +0 -1
  298. package/dist/oni-code/ui/theme.d.ts +0 -82
  299. package/dist/oni-code/ui/theme.d.ts.map +0 -1
  300. package/dist/oni-code/ui/theme.js +0 -101
  301. package/dist/oni-code/ui/theme.js.map +0 -1
  302. package/dist/oni-code/ui/tool-utils.d.ts +0 -10
  303. package/dist/oni-code/ui/tool-utils.d.ts.map +0 -1
  304. package/dist/oni-code/ui/tool-utils.js +0 -82
  305. package/dist/oni-code/ui/tool-utils.js.map +0 -1
  306. package/dist/oni-code/ui/useTerminalSize.d.ts +0 -3
  307. package/dist/oni-code/ui/useTerminalSize.d.ts.map +0 -1
  308. package/dist/oni-code/ui/useTerminalSize.js +0 -16
  309. package/dist/oni-code/ui/useTerminalSize.js.map +0 -1
  310. package/dist/oni-code/workspace/change-tracker.d.ts +0 -18
  311. package/dist/oni-code/workspace/change-tracker.d.ts.map +0 -1
  312. package/dist/oni-code/workspace/change-tracker.js +0 -67
  313. package/dist/oni-code/workspace/change-tracker.js.map +0 -1
  314. package/dist/oni-code/workspace/conflict-detector.d.ts +0 -12
  315. package/dist/oni-code/workspace/conflict-detector.d.ts.map +0 -1
  316. package/dist/oni-code/workspace/conflict-detector.js +0 -24
  317. package/dist/oni-code/workspace/conflict-detector.js.map +0 -1
  318. package/dist/oni-code/workspace/file-snapshots.d.ts +0 -39
  319. package/dist/oni-code/workspace/file-snapshots.d.ts.map +0 -1
  320. package/dist/oni-code/workspace/file-snapshots.js +0 -77
  321. package/dist/oni-code/workspace/file-snapshots.js.map +0 -1
  322. package/dist/oni-code/workspace/index.d.ts +0 -5
  323. package/dist/oni-code/workspace/index.d.ts.map +0 -1
  324. package/dist/oni-code/workspace/index.js +0 -5
  325. package/dist/oni-code/workspace/index.js.map +0 -1
  326. package/dist/oni-code/workspace/project-map.d.ts +0 -14
  327. package/dist/oni-code/workspace/project-map.d.ts.map +0 -1
  328. package/dist/oni-code/workspace/project-map.js +0 -91
  329. package/dist/oni-code/workspace/project-map.js.map +0 -1
  330. package/dist/sentinel/config/index.d.ts +0 -2
  331. package/dist/sentinel/config/index.d.ts.map +0 -1
  332. package/dist/sentinel/config/index.js +0 -2
  333. package/dist/sentinel/config/index.js.map +0 -1
  334. package/dist/sentinel/config/schema.d.ts +0 -4
  335. package/dist/sentinel/config/schema.d.ts.map +0 -1
  336. package/dist/sentinel/config/schema.js +0 -42
  337. package/dist/sentinel/config/schema.js.map +0 -1
  338. package/dist/sentinel/debate/index.d.ts +0 -6
  339. package/dist/sentinel/debate/index.d.ts.map +0 -1
  340. package/dist/sentinel/debate/index.js +0 -64
  341. package/dist/sentinel/debate/index.js.map +0 -1
  342. package/dist/sentinel/debate/prompts.d.ts +0 -4
  343. package/dist/sentinel/debate/prompts.d.ts.map +0 -1
  344. package/dist/sentinel/debate/prompts.js +0 -13
  345. package/dist/sentinel/debate/prompts.js.map +0 -1
  346. package/dist/sentinel/fix/index.d.ts +0 -6
  347. package/dist/sentinel/fix/index.d.ts.map +0 -1
  348. package/dist/sentinel/fix/index.js +0 -27
  349. package/dist/sentinel/fix/index.js.map +0 -1
  350. package/dist/sentinel/fix/strategies.d.ts +0 -9
  351. package/dist/sentinel/fix/strategies.d.ts.map +0 -1
  352. package/dist/sentinel/fix/strategies.js +0 -40
  353. package/dist/sentinel/fix/strategies.js.map +0 -1
  354. package/dist/sentinel/index.d.ts +0 -14
  355. package/dist/sentinel/index.d.ts.map +0 -1
  356. package/dist/sentinel/index.js +0 -22
  357. package/dist/sentinel/index.js.map +0 -1
  358. package/dist/sentinel/integrations/cli.d.ts +0 -10
  359. package/dist/sentinel/integrations/cli.d.ts.map +0 -1
  360. package/dist/sentinel/integrations/cli.js +0 -24
  361. package/dist/sentinel/integrations/cli.js.map +0 -1
  362. package/dist/sentinel/integrations/index.d.ts +0 -2
  363. package/dist/sentinel/integrations/index.d.ts.map +0 -1
  364. package/dist/sentinel/integrations/index.js +0 -2
  365. package/dist/sentinel/integrations/index.js.map +0 -1
  366. package/dist/sentinel/memory/index.d.ts +0 -16
  367. package/dist/sentinel/memory/index.d.ts.map +0 -1
  368. package/dist/sentinel/memory/index.js +0 -60
  369. package/dist/sentinel/memory/index.js.map +0 -1
  370. package/dist/sentinel/report/console.d.ts +0 -3
  371. package/dist/sentinel/report/console.d.ts.map +0 -1
  372. package/dist/sentinel/report/console.js +0 -27
  373. package/dist/sentinel/report/console.js.map +0 -1
  374. package/dist/sentinel/report/github.d.ts +0 -3
  375. package/dist/sentinel/report/github.d.ts.map +0 -1
  376. package/dist/sentinel/report/github.js +0 -36
  377. package/dist/sentinel/report/github.js.map +0 -1
  378. package/dist/sentinel/report/index.d.ts +0 -6
  379. package/dist/sentinel/report/index.d.ts.map +0 -1
  380. package/dist/sentinel/report/index.js +0 -15
  381. package/dist/sentinel/report/index.js.map +0 -1
  382. package/dist/sentinel/report/sarif.d.ts +0 -3
  383. package/dist/sentinel/report/sarif.d.ts.map +0 -1
  384. package/dist/sentinel/report/sarif.js +0 -29
  385. package/dist/sentinel/report/sarif.js.map +0 -1
  386. package/dist/sentinel/sentinel.d.ts +0 -17
  387. package/dist/sentinel/sentinel.d.ts.map +0 -1
  388. package/dist/sentinel/sentinel.js +0 -111
  389. package/dist/sentinel/sentinel.js.map +0 -1
  390. package/dist/sentinel/swarm/agents.d.ts +0 -6
  391. package/dist/sentinel/swarm/agents.d.ts.map +0 -1
  392. package/dist/sentinel/swarm/agents.js +0 -36
  393. package/dist/sentinel/swarm/agents.js.map +0 -1
  394. package/dist/sentinel/swarm/index.d.ts +0 -8
  395. package/dist/sentinel/swarm/index.d.ts.map +0 -1
  396. package/dist/sentinel/swarm/index.js +0 -74
  397. package/dist/sentinel/swarm/index.js.map +0 -1
  398. package/dist/sentinel/swarm/prompts.d.ts +0 -2
  399. package/dist/sentinel/swarm/prompts.d.ts.map +0 -1
  400. package/dist/sentinel/swarm/prompts.js +0 -24
  401. package/dist/sentinel/swarm/prompts.js.map +0 -1
  402. package/dist/sentinel/swarm/topology.d.ts +0 -10
  403. package/dist/sentinel/swarm/topology.d.ts.map +0 -1
  404. package/dist/sentinel/swarm/topology.js +0 -38
  405. package/dist/sentinel/swarm/topology.js.map +0 -1
  406. package/dist/sentinel/triage/analyzers/complexity-analyzer.d.ts +0 -7
  407. package/dist/sentinel/triage/analyzers/complexity-analyzer.d.ts.map +0 -1
  408. package/dist/sentinel/triage/analyzers/complexity-analyzer.js +0 -94
  409. package/dist/sentinel/triage/analyzers/complexity-analyzer.js.map +0 -1
  410. package/dist/sentinel/triage/analyzers/custom-analyzer.d.ts +0 -19
  411. package/dist/sentinel/triage/analyzers/custom-analyzer.d.ts.map +0 -1
  412. package/dist/sentinel/triage/analyzers/custom-analyzer.js +0 -268
  413. package/dist/sentinel/triage/analyzers/custom-analyzer.js.map +0 -1
  414. package/dist/sentinel/triage/analyzers/dependency-analyzer.d.ts +0 -26
  415. package/dist/sentinel/triage/analyzers/dependency-analyzer.d.ts.map +0 -1
  416. package/dist/sentinel/triage/analyzers/dependency-analyzer.js +0 -220
  417. package/dist/sentinel/triage/analyzers/dependency-analyzer.js.map +0 -1
  418. package/dist/sentinel/triage/analyzers/diff-analyzer.d.ts +0 -12
  419. package/dist/sentinel/triage/analyzers/diff-analyzer.d.ts.map +0 -1
  420. package/dist/sentinel/triage/analyzers/diff-analyzer.js +0 -19
  421. package/dist/sentinel/triage/analyzers/diff-analyzer.js.map +0 -1
  422. package/dist/sentinel/triage/analyzers/index.d.ts +0 -14
  423. package/dist/sentinel/triage/analyzers/index.d.ts.map +0 -1
  424. package/dist/sentinel/triage/analyzers/index.js +0 -25
  425. package/dist/sentinel/triage/analyzers/index.js.map +0 -1
  426. package/dist/sentinel/triage/analyzers/pattern-analyzer.d.ts +0 -7
  427. package/dist/sentinel/triage/analyzers/pattern-analyzer.d.ts.map +0 -1
  428. package/dist/sentinel/triage/analyzers/pattern-analyzer.js +0 -180
  429. package/dist/sentinel/triage/analyzers/pattern-analyzer.js.map +0 -1
  430. package/dist/sentinel/triage/analyzers/security-analyzer.d.ts +0 -7
  431. package/dist/sentinel/triage/analyzers/security-analyzer.d.ts.map +0 -1
  432. package/dist/sentinel/triage/analyzers/security-analyzer.js +0 -96
  433. package/dist/sentinel/triage/analyzers/security-analyzer.js.map +0 -1
  434. package/dist/sentinel/triage/analyzers/ts-parser.d.ts +0 -71
  435. package/dist/sentinel/triage/analyzers/ts-parser.d.ts.map +0 -1
  436. package/dist/sentinel/triage/analyzers/ts-parser.js +0 -323
  437. package/dist/sentinel/triage/analyzers/ts-parser.js.map +0 -1
  438. package/dist/sentinel/triage/analyzers/typescript-analyzer.d.ts +0 -7
  439. package/dist/sentinel/triage/analyzers/typescript-analyzer.d.ts.map +0 -1
  440. package/dist/sentinel/triage/analyzers/typescript-analyzer.js +0 -68
  441. package/dist/sentinel/triage/analyzers/typescript-analyzer.js.map +0 -1
  442. package/dist/sentinel/triage/index.d.ts +0 -10
  443. package/dist/sentinel/triage/index.d.ts.map +0 -1
  444. package/dist/sentinel/triage/index.js +0 -39
  445. package/dist/sentinel/triage/index.js.map +0 -1
  446. package/dist/sentinel/triage/scorer.d.ts +0 -9
  447. package/dist/sentinel/triage/scorer.d.ts.map +0 -1
  448. package/dist/sentinel/triage/scorer.js +0 -28
  449. package/dist/sentinel/triage/scorer.js.map +0 -1
  450. package/dist/sentinel/types.d.ts +0 -125
  451. package/dist/sentinel/types.d.ts.map +0 -1
  452. package/dist/sentinel/types.js +0 -6
  453. 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"}