@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.
- package/CHANGELOG.md +20 -0
- package/SECURITY.md +2 -2
- package/dist/agents/context.d.ts +0 -2
- package/dist/agents/context.d.ts.map +1 -1
- package/dist/agents/context.js +1 -3
- package/dist/agents/context.js.map +1 -1
- package/dist/agents/define-agent.d.ts.map +1 -1
- package/dist/agents/define-agent.js +92 -39
- package/dist/agents/define-agent.js.map +1 -1
- package/dist/agents/functional-agent.d.ts.map +1 -1
- package/dist/agents/functional-agent.js +0 -7
- package/dist/agents/functional-agent.js.map +1 -1
- package/dist/agents/types.d.ts +0 -2
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/checkpointers/postgres.js +4 -4
- package/dist/checkpointers/postgres.js.map +1 -1
- package/dist/checkpointers/sqlite.js +4 -4
- package/dist/checkpointers/sqlite.js.map +1 -1
- package/dist/cli/router.js +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +23 -1
- package/dist/config/loader.js.map +1 -1
- package/dist/context.d.ts +20 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js.map +1 -1
- package/dist/coordination/request-reply.d.ts +1 -0
- package/dist/coordination/request-reply.d.ts.map +1 -1
- package/dist/coordination/request-reply.js +13 -1
- package/dist/coordination/request-reply.js.map +1 -1
- package/dist/graph.d.ts.map +1 -1
- package/dist/graph.js +17 -2
- package/dist/graph.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/mcp/client.js +1 -1
- package/dist/pregel.d.ts +2 -0
- package/dist/pregel.d.ts.map +1 -1
- package/dist/pregel.js +415 -341
- package/dist/pregel.js.map +1 -1
- package/dist/store/index.d.ts +1 -1
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js +28 -5
- package/dist/store/index.js.map +1 -1
- package/dist/streaming.d.ts +5 -2
- package/dist/streaming.d.ts.map +1 -1
- package/dist/streaming.js +9 -8
- package/dist/streaming.js.map +1 -1
- package/dist/swarm/graph.d.ts +1 -0
- package/dist/swarm/graph.d.ts.map +1 -1
- package/dist/swarm/graph.js +162 -40
- package/dist/swarm/graph.js.map +1 -1
- package/dist/swarm/pool.d.ts.map +1 -1
- package/dist/swarm/pool.js +12 -4
- package/dist/swarm/pool.js.map +1 -1
- package/dist/tools/define.d.ts.map +1 -1
- package/dist/tools/define.js +1 -0
- package/dist/tools/define.js.map +1 -1
- package/dist/tools/types.d.ts +2 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/package.json +7 -1
- package/dist/oni-code/agent-registry.d.ts +0 -73
- package/dist/oni-code/agent-registry.d.ts.map +0 -1
- package/dist/oni-code/agent-registry.js +0 -151
- package/dist/oni-code/agent-registry.js.map +0 -1
- package/dist/oni-code/bin.d.ts +0 -18
- package/dist/oni-code/bin.d.ts.map +0 -1
- package/dist/oni-code/bin.js +0 -78
- package/dist/oni-code/bin.js.map +0 -1
- package/dist/oni-code/change-tracking.d.ts +0 -28
- package/dist/oni-code/change-tracking.d.ts.map +0 -1
- package/dist/oni-code/change-tracking.js +0 -77
- package/dist/oni-code/change-tracking.js.map +0 -1
- package/dist/oni-code/cli.d.ts +0 -6
- package/dist/oni-code/cli.d.ts.map +0 -1
- package/dist/oni-code/cli.js +0 -30
- package/dist/oni-code/cli.js.map +0 -1
- package/dist/oni-code/conductor.d.ts +0 -203
- package/dist/oni-code/conductor.d.ts.map +0 -1
- package/dist/oni-code/conductor.js +0 -1547
- package/dist/oni-code/conductor.js.map +0 -1
- package/dist/oni-code/config.d.ts +0 -130
- package/dist/oni-code/config.d.ts.map +0 -1
- package/dist/oni-code/config.js +0 -264
- package/dist/oni-code/config.js.map +0 -1
- package/dist/oni-code/context-files.d.ts +0 -22
- package/dist/oni-code/context-files.d.ts.map +0 -1
- package/dist/oni-code/context-files.js +0 -156
- package/dist/oni-code/context-files.js.map +0 -1
- package/dist/oni-code/cron/humanize.d.ts +0 -26
- package/dist/oni-code/cron/humanize.d.ts.map +0 -1
- package/dist/oni-code/cron/humanize.js +0 -83
- package/dist/oni-code/cron/humanize.js.map +0 -1
- package/dist/oni-code/cron/index.d.ts +0 -10
- package/dist/oni-code/cron/index.d.ts.map +0 -1
- package/dist/oni-code/cron/index.js +0 -7
- package/dist/oni-code/cron/index.js.map +0 -1
- package/dist/oni-code/cron/matcher.d.ts +0 -29
- package/dist/oni-code/cron/matcher.d.ts.map +0 -1
- package/dist/oni-code/cron/matcher.js +0 -73
- package/dist/oni-code/cron/matcher.js.map +0 -1
- package/dist/oni-code/cron/parser.d.ts +0 -27
- package/dist/oni-code/cron/parser.d.ts.map +0 -1
- package/dist/oni-code/cron/parser.js +0 -149
- package/dist/oni-code/cron/parser.js.map +0 -1
- package/dist/oni-code/cron/persistence.d.ts +0 -21
- package/dist/oni-code/cron/persistence.d.ts.map +0 -1
- package/dist/oni-code/cron/persistence.js +0 -58
- package/dist/oni-code/cron/persistence.js.map +0 -1
- package/dist/oni-code/cron/scheduler.d.ts +0 -64
- package/dist/oni-code/cron/scheduler.d.ts.map +0 -1
- package/dist/oni-code/cron/scheduler.js +0 -188
- package/dist/oni-code/cron/scheduler.js.map +0 -1
- package/dist/oni-code/cron/store.d.ts +0 -46
- package/dist/oni-code/cron/store.d.ts.map +0 -1
- package/dist/oni-code/cron/store.js +0 -68
- package/dist/oni-code/cron/store.js.map +0 -1
- package/dist/oni-code/env.d.ts +0 -17
- package/dist/oni-code/env.d.ts.map +0 -1
- package/dist/oni-code/env.js +0 -51
- package/dist/oni-code/env.js.map +0 -1
- package/dist/oni-code/file-reader.d.ts +0 -28
- package/dist/oni-code/file-reader.d.ts.map +0 -1
- package/dist/oni-code/file-reader.js +0 -368
- package/dist/oni-code/file-reader.js.map +0 -1
- package/dist/oni-code/file-watcher.d.ts +0 -66
- package/dist/oni-code/file-watcher.d.ts.map +0 -1
- package/dist/oni-code/file-watcher.js +0 -167
- package/dist/oni-code/file-watcher.js.map +0 -1
- package/dist/oni-code/loop-detector.d.ts +0 -64
- package/dist/oni-code/loop-detector.d.ts.map +0 -1
- package/dist/oni-code/loop-detector.js +0 -163
- package/dist/oni-code/loop-detector.js.map +0 -1
- package/dist/oni-code/permissions.d.ts +0 -43
- package/dist/oni-code/permissions.d.ts.map +0 -1
- package/dist/oni-code/permissions.js +0 -98
- package/dist/oni-code/permissions.js.map +0 -1
- package/dist/oni-code/planner.d.ts +0 -26
- package/dist/oni-code/planner.d.ts.map +0 -1
- package/dist/oni-code/planner.js +0 -86
- package/dist/oni-code/planner.js.map +0 -1
- package/dist/oni-code/plugin-loader.d.ts +0 -103
- package/dist/oni-code/plugin-loader.d.ts.map +0 -1
- package/dist/oni-code/plugin-loader.js +0 -171
- package/dist/oni-code/plugin-loader.js.map +0 -1
- package/dist/oni-code/process-tree.d.ts +0 -44
- package/dist/oni-code/process-tree.d.ts.map +0 -1
- package/dist/oni-code/process-tree.js +0 -107
- package/dist/oni-code/process-tree.js.map +0 -1
- package/dist/oni-code/progress-tracker.d.ts +0 -40
- package/dist/oni-code/progress-tracker.d.ts.map +0 -1
- package/dist/oni-code/progress-tracker.js +0 -375
- package/dist/oni-code/progress-tracker.js.map +0 -1
- package/dist/oni-code/scheduler.d.ts +0 -56
- package/dist/oni-code/scheduler.d.ts.map +0 -1
- package/dist/oni-code/scheduler.js +0 -105
- package/dist/oni-code/scheduler.js.map +0 -1
- package/dist/oni-code/session-fork.d.ts +0 -146
- package/dist/oni-code/session-fork.d.ts.map +0 -1
- package/dist/oni-code/session-fork.js +0 -238
- package/dist/oni-code/session-fork.js.map +0 -1
- package/dist/oni-code/session-stats.d.ts +0 -72
- package/dist/oni-code/session-stats.d.ts.map +0 -1
- package/dist/oni-code/session-stats.js +0 -141
- package/dist/oni-code/session-stats.js.map +0 -1
- package/dist/oni-code/session-title.d.ts +0 -25
- package/dist/oni-code/session-title.d.ts.map +0 -1
- package/dist/oni-code/session-title.js +0 -67
- package/dist/oni-code/session-title.js.map +0 -1
- package/dist/oni-code/shell-parser.d.ts +0 -112
- package/dist/oni-code/shell-parser.d.ts.map +0 -1
- package/dist/oni-code/shell-parser.js +0 -657
- package/dist/oni-code/shell-parser.js.map +0 -1
- package/dist/oni-code/summarizer.d.ts +0 -27
- package/dist/oni-code/summarizer.d.ts.map +0 -1
- package/dist/oni-code/summarizer.js +0 -70
- package/dist/oni-code/summarizer.js.map +0 -1
- package/dist/oni-code/swarm-checkpoint.d.ts +0 -52
- package/dist/oni-code/swarm-checkpoint.d.ts.map +0 -1
- package/dist/oni-code/swarm-checkpoint.js +0 -71
- package/dist/oni-code/swarm-checkpoint.js.map +0 -1
- package/dist/oni-code/swarm-runner.d.ts +0 -173
- package/dist/oni-code/swarm-runner.d.ts.map +0 -1
- package/dist/oni-code/swarm-runner.js +0 -873
- package/dist/oni-code/swarm-runner.js.map +0 -1
- package/dist/oni-code/system-prompt.d.ts +0 -13
- package/dist/oni-code/system-prompt.d.ts.map +0 -1
- package/dist/oni-code/system-prompt.js +0 -64
- package/dist/oni-code/system-prompt.js.map +0 -1
- package/dist/oni-code/task-evaluator.d.ts +0 -73
- package/dist/oni-code/task-evaluator.d.ts.map +0 -1
- package/dist/oni-code/task-evaluator.js +0 -172
- package/dist/oni-code/task-evaluator.js.map +0 -1
- package/dist/oni-code/tools/batch.d.ts +0 -12
- package/dist/oni-code/tools/batch.d.ts.map +0 -1
- package/dist/oni-code/tools/batch.js +0 -116
- package/dist/oni-code/tools/batch.js.map +0 -1
- package/dist/oni-code/tools/coding.d.ts +0 -10
- package/dist/oni-code/tools/coding.d.ts.map +0 -1
- package/dist/oni-code/tools/coding.js +0 -557
- package/dist/oni-code/tools/coding.js.map +0 -1
- package/dist/oni-code/tools/cron.d.ts +0 -4
- package/dist/oni-code/tools/cron.d.ts.map +0 -1
- package/dist/oni-code/tools/cron.js +0 -120
- package/dist/oni-code/tools/cron.js.map +0 -1
- package/dist/oni-code/tools/custom.d.ts +0 -43
- package/dist/oni-code/tools/custom.d.ts.map +0 -1
- package/dist/oni-code/tools/custom.js +0 -115
- package/dist/oni-code/tools/custom.js.map +0 -1
- package/dist/oni-code/tools/patch.d.ts +0 -58
- package/dist/oni-code/tools/patch.d.ts.map +0 -1
- package/dist/oni-code/tools/patch.js +0 -247
- package/dist/oni-code/tools/patch.js.map +0 -1
- package/dist/oni-code/tools/plan.d.ts +0 -17
- package/dist/oni-code/tools/plan.d.ts.map +0 -1
- package/dist/oni-code/tools/plan.js +0 -48
- package/dist/oni-code/tools/plan.js.map +0 -1
- package/dist/oni-code/tools/question.d.ts +0 -17
- package/dist/oni-code/tools/question.d.ts.map +0 -1
- package/dist/oni-code/tools/question.js +0 -46
- package/dist/oni-code/tools/question.js.map +0 -1
- package/dist/oni-code/tools/skill.d.ts +0 -36
- package/dist/oni-code/tools/skill.d.ts.map +0 -1
- package/dist/oni-code/tools/skill.js +0 -132
- package/dist/oni-code/tools/skill.js.map +0 -1
- package/dist/oni-code/tools/spawn-agents.d.ts +0 -37
- package/dist/oni-code/tools/spawn-agents.d.ts.map +0 -1
- package/dist/oni-code/tools/spawn-agents.js +0 -91
- package/dist/oni-code/tools/spawn-agents.js.map +0 -1
- package/dist/oni-code/tools/spawn-swarm.d.ts +0 -70
- package/dist/oni-code/tools/spawn-swarm.d.ts.map +0 -1
- package/dist/oni-code/tools/spawn-swarm.js +0 -129
- package/dist/oni-code/tools/spawn-swarm.js.map +0 -1
- package/dist/oni-code/tools/web.d.ts +0 -11
- package/dist/oni-code/tools/web.d.ts.map +0 -1
- package/dist/oni-code/tools/web.js +0 -375
- package/dist/oni-code/tools/web.js.map +0 -1
- package/dist/oni-code/topology-agent-builder.d.ts +0 -22
- package/dist/oni-code/topology-agent-builder.d.ts.map +0 -1
- package/dist/oni-code/topology-agent-builder.js +0 -220
- package/dist/oni-code/topology-agent-builder.js.map +0 -1
- package/dist/oni-code/topology-selector.d.ts +0 -85
- package/dist/oni-code/topology-selector.d.ts.map +0 -1
- package/dist/oni-code/topology-selector.js +0 -338
- package/dist/oni-code/topology-selector.js.map +0 -1
- package/dist/oni-code/ui/App.d.ts +0 -10
- package/dist/oni-code/ui/App.d.ts.map +0 -1
- package/dist/oni-code/ui/App.js +0 -395
- package/dist/oni-code/ui/App.js.map +0 -1
- package/dist/oni-code/ui/FooterPanel.d.ts +0 -16
- package/dist/oni-code/ui/FooterPanel.d.ts.map +0 -1
- package/dist/oni-code/ui/FooterPanel.js +0 -56
- package/dist/oni-code/ui/FooterPanel.js.map +0 -1
- package/dist/oni-code/ui/Header.d.ts +0 -21
- package/dist/oni-code/ui/Header.d.ts.map +0 -1
- package/dist/oni-code/ui/Header.js +0 -105
- package/dist/oni-code/ui/Header.js.map +0 -1
- package/dist/oni-code/ui/InputArea.d.ts +0 -11
- package/dist/oni-code/ui/InputArea.d.ts.map +0 -1
- package/dist/oni-code/ui/InputArea.js +0 -82
- package/dist/oni-code/ui/InputArea.js.map +0 -1
- package/dist/oni-code/ui/MessageBlock.d.ts +0 -11
- package/dist/oni-code/ui/MessageBlock.d.ts.map +0 -1
- package/dist/oni-code/ui/MessageBlock.js +0 -103
- package/dist/oni-code/ui/MessageBlock.js.map +0 -1
- package/dist/oni-code/ui/OutputPane.d.ts +0 -12
- package/dist/oni-code/ui/OutputPane.d.ts.map +0 -1
- package/dist/oni-code/ui/OutputPane.js +0 -8
- package/dist/oni-code/ui/OutputPane.js.map +0 -1
- package/dist/oni-code/ui/PermissionPrompt.d.ts +0 -11
- package/dist/oni-code/ui/PermissionPrompt.d.ts.map +0 -1
- package/dist/oni-code/ui/PermissionPrompt.js +0 -48
- package/dist/oni-code/ui/PermissionPrompt.js.map +0 -1
- package/dist/oni-code/ui/QuestionPrompt.d.ts +0 -8
- package/dist/oni-code/ui/QuestionPrompt.d.ts.map +0 -1
- package/dist/oni-code/ui/QuestionPrompt.js +0 -9
- package/dist/oni-code/ui/QuestionPrompt.js.map +0 -1
- package/dist/oni-code/ui/StatusLine.d.ts +0 -14
- package/dist/oni-code/ui/StatusLine.d.ts.map +0 -1
- package/dist/oni-code/ui/StatusLine.js +0 -23
- package/dist/oni-code/ui/StatusLine.js.map +0 -1
- package/dist/oni-code/ui/SwarmPanel.d.ts +0 -9
- package/dist/oni-code/ui/SwarmPanel.d.ts.map +0 -1
- package/dist/oni-code/ui/SwarmPanel.js +0 -52
- package/dist/oni-code/ui/SwarmPanel.js.map +0 -1
- package/dist/oni-code/ui/ToolCallBlock.d.ts +0 -10
- package/dist/oni-code/ui/ToolCallBlock.d.ts.map +0 -1
- package/dist/oni-code/ui/ToolCallBlock.js +0 -21
- package/dist/oni-code/ui/ToolCallBlock.js.map +0 -1
- package/dist/oni-code/ui/Toolbar.d.ts +0 -8
- package/dist/oni-code/ui/Toolbar.d.ts.map +0 -1
- package/dist/oni-code/ui/Toolbar.js +0 -11
- package/dist/oni-code/ui/Toolbar.js.map +0 -1
- package/dist/oni-code/ui/WelcomeBanner.d.ts +0 -12
- package/dist/oni-code/ui/WelcomeBanner.d.ts.map +0 -1
- package/dist/oni-code/ui/WelcomeBanner.js +0 -24
- package/dist/oni-code/ui/WelcomeBanner.js.map +0 -1
- package/dist/oni-code/ui/activity.d.ts +0 -15
- package/dist/oni-code/ui/activity.d.ts.map +0 -1
- package/dist/oni-code/ui/activity.js +0 -252
- package/dist/oni-code/ui/activity.js.map +0 -1
- package/dist/oni-code/ui/banner.d.ts +0 -16
- package/dist/oni-code/ui/banner.d.ts.map +0 -1
- package/dist/oni-code/ui/banner.js +0 -132
- package/dist/oni-code/ui/banner.js.map +0 -1
- package/dist/oni-code/ui/command-menu.d.ts +0 -7
- package/dist/oni-code/ui/command-menu.d.ts.map +0 -1
- package/dist/oni-code/ui/command-menu.js +0 -20
- package/dist/oni-code/ui/command-menu.js.map +0 -1
- package/dist/oni-code/ui/diff.d.ts +0 -17
- package/dist/oni-code/ui/diff.d.ts.map +0 -1
- package/dist/oni-code/ui/diff.js +0 -37
- package/dist/oni-code/ui/diff.js.map +0 -1
- package/dist/oni-code/ui/format.d.ts +0 -41
- package/dist/oni-code/ui/format.d.ts.map +0 -1
- package/dist/oni-code/ui/format.js +0 -223
- package/dist/oni-code/ui/format.js.map +0 -1
- package/dist/oni-code/ui/input.d.ts +0 -28
- package/dist/oni-code/ui/input.d.ts.map +0 -1
- package/dist/oni-code/ui/input.js +0 -216
- package/dist/oni-code/ui/input.js.map +0 -1
- package/dist/oni-code/ui/insights.d.ts +0 -39
- package/dist/oni-code/ui/insights.d.ts.map +0 -1
- package/dist/oni-code/ui/insights.js +0 -193
- package/dist/oni-code/ui/insights.js.map +0 -1
- package/dist/oni-code/ui/markdown.d.ts +0 -9
- package/dist/oni-code/ui/markdown.d.ts.map +0 -1
- package/dist/oni-code/ui/markdown.js +0 -44
- package/dist/oni-code/ui/markdown.js.map +0 -1
- package/dist/oni-code/ui/panels.d.ts +0 -39
- package/dist/oni-code/ui/panels.d.ts.map +0 -1
- package/dist/oni-code/ui/panels.js +0 -209
- package/dist/oni-code/ui/panels.js.map +0 -1
- package/dist/oni-code/ui/paste.d.ts +0 -17
- package/dist/oni-code/ui/paste.d.ts.map +0 -1
- package/dist/oni-code/ui/paste.js +0 -45
- package/dist/oni-code/ui/paste.js.map +0 -1
- package/dist/oni-code/ui/raw-spinner.d.ts +0 -37
- package/dist/oni-code/ui/raw-spinner.d.ts.map +0 -1
- package/dist/oni-code/ui/raw-spinner.js +0 -121
- package/dist/oni-code/ui/raw-spinner.js.map +0 -1
- package/dist/oni-code/ui/session.d.ts +0 -44
- package/dist/oni-code/ui/session.d.ts.map +0 -1
- package/dist/oni-code/ui/session.js +0 -93
- package/dist/oni-code/ui/session.js.map +0 -1
- package/dist/oni-code/ui/spinner.d.ts +0 -7
- package/dist/oni-code/ui/spinner.d.ts.map +0 -1
- package/dist/oni-code/ui/spinner.js +0 -20
- package/dist/oni-code/ui/spinner.js.map +0 -1
- package/dist/oni-code/ui/swarm-activity.d.ts +0 -50
- package/dist/oni-code/ui/swarm-activity.d.ts.map +0 -1
- package/dist/oni-code/ui/swarm-activity.js +0 -233
- package/dist/oni-code/ui/swarm-activity.js.map +0 -1
- package/dist/oni-code/ui/terminal-size.d.ts +0 -18
- package/dist/oni-code/ui/terminal-size.d.ts.map +0 -1
- package/dist/oni-code/ui/terminal-size.js +0 -45
- package/dist/oni-code/ui/terminal-size.js.map +0 -1
- package/dist/oni-code/ui/theme.d.ts +0 -82
- package/dist/oni-code/ui/theme.d.ts.map +0 -1
- package/dist/oni-code/ui/theme.js +0 -101
- package/dist/oni-code/ui/theme.js.map +0 -1
- package/dist/oni-code/ui/tool-utils.d.ts +0 -10
- package/dist/oni-code/ui/tool-utils.d.ts.map +0 -1
- package/dist/oni-code/ui/tool-utils.js +0 -82
- package/dist/oni-code/ui/tool-utils.js.map +0 -1
- package/dist/oni-code/ui/useTerminalSize.d.ts +0 -3
- package/dist/oni-code/ui/useTerminalSize.d.ts.map +0 -1
- package/dist/oni-code/ui/useTerminalSize.js +0 -16
- package/dist/oni-code/ui/useTerminalSize.js.map +0 -1
- package/dist/oni-code/workspace/change-tracker.d.ts +0 -18
- package/dist/oni-code/workspace/change-tracker.d.ts.map +0 -1
- package/dist/oni-code/workspace/change-tracker.js +0 -67
- package/dist/oni-code/workspace/change-tracker.js.map +0 -1
- package/dist/oni-code/workspace/conflict-detector.d.ts +0 -12
- package/dist/oni-code/workspace/conflict-detector.d.ts.map +0 -1
- package/dist/oni-code/workspace/conflict-detector.js +0 -24
- package/dist/oni-code/workspace/conflict-detector.js.map +0 -1
- package/dist/oni-code/workspace/file-snapshots.d.ts +0 -39
- package/dist/oni-code/workspace/file-snapshots.d.ts.map +0 -1
- package/dist/oni-code/workspace/file-snapshots.js +0 -77
- package/dist/oni-code/workspace/file-snapshots.js.map +0 -1
- package/dist/oni-code/workspace/index.d.ts +0 -5
- package/dist/oni-code/workspace/index.d.ts.map +0 -1
- package/dist/oni-code/workspace/index.js +0 -5
- package/dist/oni-code/workspace/index.js.map +0 -1
- package/dist/oni-code/workspace/project-map.d.ts +0 -14
- package/dist/oni-code/workspace/project-map.d.ts.map +0 -1
- package/dist/oni-code/workspace/project-map.js +0 -91
- package/dist/oni-code/workspace/project-map.js.map +0 -1
- package/dist/sentinel/config/index.d.ts +0 -2
- package/dist/sentinel/config/index.d.ts.map +0 -1
- package/dist/sentinel/config/index.js +0 -2
- package/dist/sentinel/config/index.js.map +0 -1
- package/dist/sentinel/config/schema.d.ts +0 -4
- package/dist/sentinel/config/schema.d.ts.map +0 -1
- package/dist/sentinel/config/schema.js +0 -42
- package/dist/sentinel/config/schema.js.map +0 -1
- package/dist/sentinel/debate/index.d.ts +0 -6
- package/dist/sentinel/debate/index.d.ts.map +0 -1
- package/dist/sentinel/debate/index.js +0 -64
- package/dist/sentinel/debate/index.js.map +0 -1
- package/dist/sentinel/debate/prompts.d.ts +0 -4
- package/dist/sentinel/debate/prompts.d.ts.map +0 -1
- package/dist/sentinel/debate/prompts.js +0 -13
- package/dist/sentinel/debate/prompts.js.map +0 -1
- package/dist/sentinel/fix/index.d.ts +0 -6
- package/dist/sentinel/fix/index.d.ts.map +0 -1
- package/dist/sentinel/fix/index.js +0 -27
- package/dist/sentinel/fix/index.js.map +0 -1
- package/dist/sentinel/fix/strategies.d.ts +0 -9
- package/dist/sentinel/fix/strategies.d.ts.map +0 -1
- package/dist/sentinel/fix/strategies.js +0 -40
- package/dist/sentinel/fix/strategies.js.map +0 -1
- package/dist/sentinel/index.d.ts +0 -14
- package/dist/sentinel/index.d.ts.map +0 -1
- package/dist/sentinel/index.js +0 -22
- package/dist/sentinel/index.js.map +0 -1
- package/dist/sentinel/integrations/cli.d.ts +0 -10
- package/dist/sentinel/integrations/cli.d.ts.map +0 -1
- package/dist/sentinel/integrations/cli.js +0 -24
- package/dist/sentinel/integrations/cli.js.map +0 -1
- package/dist/sentinel/integrations/index.d.ts +0 -2
- package/dist/sentinel/integrations/index.d.ts.map +0 -1
- package/dist/sentinel/integrations/index.js +0 -2
- package/dist/sentinel/integrations/index.js.map +0 -1
- package/dist/sentinel/memory/index.d.ts +0 -16
- package/dist/sentinel/memory/index.d.ts.map +0 -1
- package/dist/sentinel/memory/index.js +0 -60
- package/dist/sentinel/memory/index.js.map +0 -1
- package/dist/sentinel/report/console.d.ts +0 -3
- package/dist/sentinel/report/console.d.ts.map +0 -1
- package/dist/sentinel/report/console.js +0 -27
- package/dist/sentinel/report/console.js.map +0 -1
- package/dist/sentinel/report/github.d.ts +0 -3
- package/dist/sentinel/report/github.d.ts.map +0 -1
- package/dist/sentinel/report/github.js +0 -36
- package/dist/sentinel/report/github.js.map +0 -1
- package/dist/sentinel/report/index.d.ts +0 -6
- package/dist/sentinel/report/index.d.ts.map +0 -1
- package/dist/sentinel/report/index.js +0 -15
- package/dist/sentinel/report/index.js.map +0 -1
- package/dist/sentinel/report/sarif.d.ts +0 -3
- package/dist/sentinel/report/sarif.d.ts.map +0 -1
- package/dist/sentinel/report/sarif.js +0 -29
- package/dist/sentinel/report/sarif.js.map +0 -1
- package/dist/sentinel/sentinel.d.ts +0 -17
- package/dist/sentinel/sentinel.d.ts.map +0 -1
- package/dist/sentinel/sentinel.js +0 -111
- package/dist/sentinel/sentinel.js.map +0 -1
- package/dist/sentinel/swarm/agents.d.ts +0 -6
- package/dist/sentinel/swarm/agents.d.ts.map +0 -1
- package/dist/sentinel/swarm/agents.js +0 -36
- package/dist/sentinel/swarm/agents.js.map +0 -1
- package/dist/sentinel/swarm/index.d.ts +0 -8
- package/dist/sentinel/swarm/index.d.ts.map +0 -1
- package/dist/sentinel/swarm/index.js +0 -74
- package/dist/sentinel/swarm/index.js.map +0 -1
- package/dist/sentinel/swarm/prompts.d.ts +0 -2
- package/dist/sentinel/swarm/prompts.d.ts.map +0 -1
- package/dist/sentinel/swarm/prompts.js +0 -24
- package/dist/sentinel/swarm/prompts.js.map +0 -1
- package/dist/sentinel/swarm/topology.d.ts +0 -10
- package/dist/sentinel/swarm/topology.d.ts.map +0 -1
- package/dist/sentinel/swarm/topology.js +0 -38
- package/dist/sentinel/swarm/topology.js.map +0 -1
- package/dist/sentinel/triage/analyzers/complexity-analyzer.d.ts +0 -7
- package/dist/sentinel/triage/analyzers/complexity-analyzer.d.ts.map +0 -1
- package/dist/sentinel/triage/analyzers/complexity-analyzer.js +0 -94
- package/dist/sentinel/triage/analyzers/complexity-analyzer.js.map +0 -1
- package/dist/sentinel/triage/analyzers/custom-analyzer.d.ts +0 -19
- package/dist/sentinel/triage/analyzers/custom-analyzer.d.ts.map +0 -1
- package/dist/sentinel/triage/analyzers/custom-analyzer.js +0 -268
- package/dist/sentinel/triage/analyzers/custom-analyzer.js.map +0 -1
- package/dist/sentinel/triage/analyzers/dependency-analyzer.d.ts +0 -26
- package/dist/sentinel/triage/analyzers/dependency-analyzer.d.ts.map +0 -1
- package/dist/sentinel/triage/analyzers/dependency-analyzer.js +0 -220
- package/dist/sentinel/triage/analyzers/dependency-analyzer.js.map +0 -1
- package/dist/sentinel/triage/analyzers/diff-analyzer.d.ts +0 -12
- package/dist/sentinel/triage/analyzers/diff-analyzer.d.ts.map +0 -1
- package/dist/sentinel/triage/analyzers/diff-analyzer.js +0 -19
- package/dist/sentinel/triage/analyzers/diff-analyzer.js.map +0 -1
- package/dist/sentinel/triage/analyzers/index.d.ts +0 -14
- package/dist/sentinel/triage/analyzers/index.d.ts.map +0 -1
- package/dist/sentinel/triage/analyzers/index.js +0 -25
- package/dist/sentinel/triage/analyzers/index.js.map +0 -1
- package/dist/sentinel/triage/analyzers/pattern-analyzer.d.ts +0 -7
- package/dist/sentinel/triage/analyzers/pattern-analyzer.d.ts.map +0 -1
- package/dist/sentinel/triage/analyzers/pattern-analyzer.js +0 -180
- package/dist/sentinel/triage/analyzers/pattern-analyzer.js.map +0 -1
- package/dist/sentinel/triage/analyzers/security-analyzer.d.ts +0 -7
- package/dist/sentinel/triage/analyzers/security-analyzer.d.ts.map +0 -1
- package/dist/sentinel/triage/analyzers/security-analyzer.js +0 -96
- package/dist/sentinel/triage/analyzers/security-analyzer.js.map +0 -1
- package/dist/sentinel/triage/analyzers/ts-parser.d.ts +0 -71
- package/dist/sentinel/triage/analyzers/ts-parser.d.ts.map +0 -1
- package/dist/sentinel/triage/analyzers/ts-parser.js +0 -323
- package/dist/sentinel/triage/analyzers/ts-parser.js.map +0 -1
- package/dist/sentinel/triage/analyzers/typescript-analyzer.d.ts +0 -7
- package/dist/sentinel/triage/analyzers/typescript-analyzer.d.ts.map +0 -1
- package/dist/sentinel/triage/analyzers/typescript-analyzer.js +0 -68
- package/dist/sentinel/triage/analyzers/typescript-analyzer.js.map +0 -1
- package/dist/sentinel/triage/index.d.ts +0 -10
- package/dist/sentinel/triage/index.d.ts.map +0 -1
- package/dist/sentinel/triage/index.js +0 -39
- package/dist/sentinel/triage/index.js.map +0 -1
- package/dist/sentinel/triage/scorer.d.ts +0 -9
- package/dist/sentinel/triage/scorer.d.ts.map +0 -1
- package/dist/sentinel/triage/scorer.js +0 -28
- package/dist/sentinel/triage/scorer.js.map +0 -1
- package/dist/sentinel/types.d.ts +0 -125
- package/dist/sentinel/types.d.ts.map +0 -1
- package/dist/sentinel/types.js +0 -6
- 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":"AAAA;;;;;;;;;;GAUG;AAEH,+DAA+D;AAE/D,kEAAkE;AAClE,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAE3C,+DAA+D;AAE/D,wEAAwE;AACxE,MAAM,WAAW,GAAG,aAAa,CAAC;AAElC;;GAEG;AACH,MAAM,aAAa,GAA2B;IAC5C,MAAM,EAAE,GAAG;IACX,OAAO,EAAE,GAAG;IACZ,MAAM,EAAE,GAAG;IACX,OAAO,EAAE,GAAG;IACZ,IAAI,EAAE,GAAG;IACT,KAAK,EAAE,GAAG;IACV,GAAG,EAAE,GAAG;IACR,IAAI,EAAE,GAAG;CACV,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,iBAAiB,GACrB,6EAA6E,CAAC;AAEhF,+DAA+D;AAE/D;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IAIxC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACzD,CAAC;IAED,oEAAoE;IACpE,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC9C,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,OAAO;gBACL,QAAQ,EAAE,UAAU;gBACpB,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE;aAC3C,CAAC;QACJ,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB;QACrD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC;QAE9D,wDAAwD;QACxD,2EAA2E;QAC3E,IAAI,WAAW,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,WAAW;gBACtB,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE;gBAC3B,CAAC,CAAC,aAAa,CAAC,QAAS,CAAC,WAAW,EAAE,CAAC,CAAC;YAE3C,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO;oBACL,QAAQ,EAAE,GAAG,GAAG,GAAG,IAAI,EAAE;oBACzB,MAAM,EAAE,UAAU;iBACnB,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,0DAA0D;IAC1D,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC9D,CAAC;AAED,yDAAyD;AACzD,2DAA2D;AAC3D,0DAA0D;AAC1D,gEAAgE;AAChE,8DAA8D;AAC9D,EAAE;AACF,2BAA2B;AAC3B,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,qBAAqB,QAAQ,iDAAiD,CAC/E,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAEtB,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,qBAAqB,QAAQ,iCAAiC,CAC/D,CAAC;IACJ,CAAC;IAED,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,GAAG,CAAC,CAAC,CAAC;YACT,kEAAkE;YAClE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;YACtC,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC;gBACjB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;gBACtC,OAAO,OAAO,KAAK,QAAQ,CAAC;YAC9B,CAAC;YACD,OAAO,KAAK,OAAO,UAAU,CAAC;QAChC,CAAC;QACD,KAAK,GAAG,CAAC,CAAC,CAAC;YACT,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;gBAChB,OAAO,KAAK,KAAK,UAAU,CAAC;YAC9B,CAAC;YACD,iCAAiC;YACjC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;YACpC,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;gBAChB,OAAO,OAAO,KAAK,QAAQ,CAAC;YAC9B,CAAC;YACD,8BAA8B;YAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;YACnC,OAAO,SAAS,IAAI,MAAM,CAAC;QAC7B,CAAC;QACD,KAAK,GAAG,CAAC,CAAC,CAAC;YACT,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;gBAChB,OAAO,OAAO,KAAK,QAAQ,CAAC;YAC9B,CAAC;YACD,8BAA8B;YAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;YACnC,OAAO,SAAS,IAAI,MAAM,CAAC;QAC7B,CAAC;QACD,KAAK,GAAG,CAAC,CAAC,CAAC;YACT,OAAO,SAAS,KAAK,MAAM,CAAC;QAC9B,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,GAAG,CAAC,CAAC;IACvD,CAAC;AACH,CAAC"}
|
|
@@ -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"}
|