@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,58 +0,0 @@
|
|
|
1
|
-
import { writeFileSync, mkdirSync, renameSync, readFileSync } from "node:fs";
|
|
2
|
-
import { join } from "node:path";
|
|
3
|
-
const ONI_DIR = ".oni";
|
|
4
|
-
const TASKS_FILE = "scheduled_tasks.json";
|
|
5
|
-
const CURRENT_VERSION = 1;
|
|
6
|
-
const DEFAULT_AUTO_EXPIRY_MS = 3 * 24 * 60 * 60 * 1000; // 3 days
|
|
7
|
-
/**
|
|
8
|
-
* Load persisted jobs from `<rootDir>/.oni/scheduled_tasks.json`.
|
|
9
|
-
* Filters out expired jobs and jobs with missing required fields.
|
|
10
|
-
* Returns empty array if file is missing or corrupt.
|
|
11
|
-
*/
|
|
12
|
-
export function loadPersistedJobs(rootDir, opts) {
|
|
13
|
-
try {
|
|
14
|
-
const filePath = join(rootDir, ONI_DIR, TASKS_FILE);
|
|
15
|
-
const raw = readFileSync(filePath, "utf-8");
|
|
16
|
-
const data = JSON.parse(raw);
|
|
17
|
-
if (!data || !Array.isArray(data.jobs))
|
|
18
|
-
return [];
|
|
19
|
-
const now = Date.now();
|
|
20
|
-
const expiryMs = opts?.autoExpiryMs ?? DEFAULT_AUTO_EXPIRY_MS;
|
|
21
|
-
return data.jobs.filter((j) => {
|
|
22
|
-
// Validate required fields
|
|
23
|
-
if (!j.id || !j.cron || !j.prompt || typeof j.createdAt !== "number" || typeof j.recurring !== "boolean") {
|
|
24
|
-
return false;
|
|
25
|
-
}
|
|
26
|
-
// Filter expired
|
|
27
|
-
return (now - j.createdAt) <= expiryMs;
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
catch {
|
|
31
|
-
return [];
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
export function persistJobs(rootDir, jobs) {
|
|
35
|
-
try {
|
|
36
|
-
const dir = join(rootDir, ONI_DIR);
|
|
37
|
-
mkdirSync(dir, { recursive: true });
|
|
38
|
-
const data = {
|
|
39
|
-
version: CURRENT_VERSION,
|
|
40
|
-
jobs: jobs.map((j) => ({
|
|
41
|
-
id: j.id,
|
|
42
|
-
cron: j.cron,
|
|
43
|
-
prompt: j.prompt,
|
|
44
|
-
recurring: j.recurring,
|
|
45
|
-
createdAt: j.createdAt,
|
|
46
|
-
humanSchedule: j.humanSchedule,
|
|
47
|
-
})),
|
|
48
|
-
};
|
|
49
|
-
const filePath = join(dir, TASKS_FILE);
|
|
50
|
-
const tmpPath = filePath + ".tmp";
|
|
51
|
-
writeFileSync(tmpPath, JSON.stringify(data, null, 2), "utf-8");
|
|
52
|
-
renameSync(tmpPath, filePath);
|
|
53
|
-
}
|
|
54
|
-
catch {
|
|
55
|
-
// Fire-and-forget — write errors must not crash the scheduler
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
//# sourceMappingURL=persistence.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../../src/oni-code/cron/persistence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,MAAM,OAAO,GAAG,MAAM,CAAC;AACvB,MAAM,UAAU,GAAG,sBAAsB,CAAC;AAC1C,MAAM,eAAe,GAAG,CAAC,CAAC;AAiB1B,MAAM,sBAAsB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,SAAS;AAOjE;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe,EAAE,IAAkB;IACnE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QACpD,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAkB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE5C,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QAElD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,IAAI,EAAE,YAAY,IAAI,sBAAsB,CAAC;QAE9D,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YAC5B,2BAA2B;YAC3B,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBACzG,OAAO,KAAK,CAAC;YACf,CAAC;YACD,iBAAiB;YACjB,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,IAAe;IAC1D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACnC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEpC,MAAM,IAAI,GAAkB;YAC1B,OAAO,EAAE,eAAe;YACxB,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACrB,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,aAAa,EAAE,CAAC,CAAC,aAAa;aAC/B,CAAC,CAAC;SACJ,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;QAClC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC/D,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,8DAA8D;IAChE,CAAC;AACH,CAAC"}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import type { CronJob, CronJobInput } from "./store.js";
|
|
2
|
-
export interface CronSchedulerConfig {
|
|
3
|
-
/** Callback: fires a prompt into the agent loop. */
|
|
4
|
-
onFire: (prompt: string, jobId: string) => void;
|
|
5
|
-
/** Callback: returns true if the agent is currently busy. */
|
|
6
|
-
isBusy: () => boolean;
|
|
7
|
-
/** Override tick interval for testing (default 1000ms). */
|
|
8
|
-
tickIntervalMs?: number;
|
|
9
|
-
/** Override auto-expiry duration for testing (default 3 days). */
|
|
10
|
-
autoExpiryMs?: number;
|
|
11
|
-
/** Optional callback fired after create() and cancel().
|
|
12
|
-
* Receives the current job list. Errors are swallowed.
|
|
13
|
-
* NOT fired on dispose() — persisted state should survive session exit. */
|
|
14
|
-
onMutate?: (jobs: CronJob[]) => void;
|
|
15
|
-
}
|
|
16
|
-
export declare class CronScheduler {
|
|
17
|
-
private store;
|
|
18
|
-
private timer;
|
|
19
|
-
private config;
|
|
20
|
-
private tickIntervalMs;
|
|
21
|
-
private autoExpiryMs;
|
|
22
|
-
/** Track the last minute we fired for each job to avoid double-firing within the same minute. */
|
|
23
|
-
private lastFiredMinute;
|
|
24
|
-
constructor(config: CronSchedulerConfig);
|
|
25
|
-
/** Create and schedule a new job. Returns the job. */
|
|
26
|
-
create(input: CronJobInput): CronJob;
|
|
27
|
-
/** Cancel a job by ID. Returns true if found. */
|
|
28
|
-
cancel(id: string): boolean;
|
|
29
|
-
/** List all active jobs. */
|
|
30
|
-
list(): CronJob[];
|
|
31
|
-
/** Get a job by ID. */
|
|
32
|
-
get(id: string): CronJob | undefined;
|
|
33
|
-
/** Number of active jobs. */
|
|
34
|
-
get size(): number;
|
|
35
|
-
/** Start the tick loop. Idempotent. */
|
|
36
|
-
start(): void;
|
|
37
|
-
/** Stop the tick loop. Idempotent. */
|
|
38
|
-
stop(): void;
|
|
39
|
-
/** Stop and clear all jobs. */
|
|
40
|
-
dispose(): void;
|
|
41
|
-
/** Bulk-restore persisted jobs. Preserves original createdAt.
|
|
42
|
-
* Does NOT fire onMutate — avoids N redundant disk writes at startup.
|
|
43
|
-
* Silently skips jobs that fail (e.g., at capacity). */
|
|
44
|
-
restore(jobs: Array<{
|
|
45
|
-
id: string;
|
|
46
|
-
cron: string;
|
|
47
|
-
prompt: string;
|
|
48
|
-
recurring: boolean;
|
|
49
|
-
createdAt: number;
|
|
50
|
-
humanSchedule?: string;
|
|
51
|
-
}>): void;
|
|
52
|
-
/** Whether the tick loop is running. */
|
|
53
|
-
get running(): boolean;
|
|
54
|
-
private notifyMutate;
|
|
55
|
-
/** Single tick: check all jobs, fire ready ones (if idle). */
|
|
56
|
-
private tick;
|
|
57
|
-
/** Fire a job's prompt. */
|
|
58
|
-
private fire;
|
|
59
|
-
/** Compute and store the next fire time for a job (approximate — used for display). */
|
|
60
|
-
private computeNextFireTime;
|
|
61
|
-
/** Exposed for testing: manually invoke one tick cycle. */
|
|
62
|
-
_tick(): void;
|
|
63
|
-
}
|
|
64
|
-
//# sourceMappingURL=scheduler.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../../src/oni-code/cron/scheduler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAWxD,MAAM,WAAW,mBAAmB;IAClC,oDAAoD;IACpD,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,6DAA6D;IAC7D,MAAM,EAAE,MAAM,OAAO,CAAC;IACtB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;gFAE4E;IAC5E,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACtC;AAID,qBAAa,aAAa;IACxB,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,YAAY,CAAS;IAC7B,iGAAiG;IACjG,OAAO,CAAC,eAAe,CAA6B;gBAExC,MAAM,EAAE,mBAAmB;IAMvC,sDAAsD;IACtD,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO;IAkBpC,iDAAiD;IACjD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAa3B,4BAA4B;IAC5B,IAAI,IAAI,OAAO,EAAE;IAIjB,uBAAuB;IACvB,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAIpC,6BAA6B;IAC7B,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,uCAAuC;IACvC,KAAK,IAAI,IAAI;IASb,sCAAsC;IACtC,IAAI,IAAI,IAAI;IAOZ,+BAA+B;IAC/B,OAAO,IAAI,IAAI;IAMf;;6DAEyD;IACzD,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI;IAqBvI,wCAAwC;IACxC,IAAI,OAAO,IAAI,OAAO,CAErB;IAID,OAAO,CAAC,YAAY;IAWpB,8DAA8D;IAC9D,OAAO,CAAC,IAAI;IA0CZ,2BAA2B;IAC3B,OAAO,CAAC,IAAI;IAQZ,uFAAuF;IACvF,OAAO,CAAC,mBAAmB;IAe3B,2DAA2D;IAC3D,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
import { CronStore } from "./store.js";
|
|
2
|
-
import { cronMatches } from "./matcher.js";
|
|
3
|
-
import { humanizeCron } from "./humanize.js";
|
|
4
|
-
// ── Constants ────────────────────────────────────────────────
|
|
5
|
-
const TICK_INTERVAL_MS = 1_000;
|
|
6
|
-
const AUTO_EXPIRY_MS = 259_200_000; // 3 days (72 hours)
|
|
7
|
-
// ── Scheduler ────────────────────────────────────────────────
|
|
8
|
-
export class CronScheduler {
|
|
9
|
-
store = new CronStore();
|
|
10
|
-
timer = null;
|
|
11
|
-
config;
|
|
12
|
-
tickIntervalMs;
|
|
13
|
-
autoExpiryMs;
|
|
14
|
-
/** Track the last minute we fired for each job to avoid double-firing within the same minute. */
|
|
15
|
-
lastFiredMinute = new Map();
|
|
16
|
-
constructor(config) {
|
|
17
|
-
this.config = config;
|
|
18
|
-
this.tickIntervalMs = config.tickIntervalMs ?? TICK_INTERVAL_MS;
|
|
19
|
-
this.autoExpiryMs = config.autoExpiryMs ?? AUTO_EXPIRY_MS;
|
|
20
|
-
}
|
|
21
|
-
/** Create and schedule a new job. Returns the job. */
|
|
22
|
-
create(input) {
|
|
23
|
-
const job = this.store.add({
|
|
24
|
-
...input,
|
|
25
|
-
humanSchedule: input.humanSchedule ?? humanizeCron(input.cron),
|
|
26
|
-
});
|
|
27
|
-
// Compute initial nextFireTime
|
|
28
|
-
this.computeNextFireTime(job);
|
|
29
|
-
// Auto-start ticking if not already running
|
|
30
|
-
if (!this.timer) {
|
|
31
|
-
this.start();
|
|
32
|
-
}
|
|
33
|
-
this.notifyMutate();
|
|
34
|
-
return job;
|
|
35
|
-
}
|
|
36
|
-
/** Cancel a job by ID. Returns true if found. */
|
|
37
|
-
cancel(id) {
|
|
38
|
-
this.lastFiredMinute.delete(id);
|
|
39
|
-
const removed = this.store.remove(id);
|
|
40
|
-
// Stop ticking if no more jobs
|
|
41
|
-
if (this.store.size === 0) {
|
|
42
|
-
this.stop();
|
|
43
|
-
}
|
|
44
|
-
this.notifyMutate();
|
|
45
|
-
return removed;
|
|
46
|
-
}
|
|
47
|
-
/** List all active jobs. */
|
|
48
|
-
list() {
|
|
49
|
-
return this.store.list();
|
|
50
|
-
}
|
|
51
|
-
/** Get a job by ID. */
|
|
52
|
-
get(id) {
|
|
53
|
-
return this.store.get(id);
|
|
54
|
-
}
|
|
55
|
-
/** Number of active jobs. */
|
|
56
|
-
get size() {
|
|
57
|
-
return this.store.size;
|
|
58
|
-
}
|
|
59
|
-
/** Start the tick loop. Idempotent. */
|
|
60
|
-
start() {
|
|
61
|
-
if (this.timer)
|
|
62
|
-
return;
|
|
63
|
-
this.timer = setInterval(() => this.tick(), this.tickIntervalMs);
|
|
64
|
-
// Don't prevent process exit
|
|
65
|
-
if (this.timer && typeof this.timer === "object" && "unref" in this.timer) {
|
|
66
|
-
this.timer.unref();
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
/** Stop the tick loop. Idempotent. */
|
|
70
|
-
stop() {
|
|
71
|
-
if (this.timer) {
|
|
72
|
-
clearInterval(this.timer);
|
|
73
|
-
this.timer = null;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
/** Stop and clear all jobs. */
|
|
77
|
-
dispose() {
|
|
78
|
-
this.stop();
|
|
79
|
-
this.store.clear();
|
|
80
|
-
this.lastFiredMinute.clear();
|
|
81
|
-
}
|
|
82
|
-
/** Bulk-restore persisted jobs. Preserves original createdAt.
|
|
83
|
-
* Does NOT fire onMutate — avoids N redundant disk writes at startup.
|
|
84
|
-
* Silently skips jobs that fail (e.g., at capacity). */
|
|
85
|
-
restore(jobs) {
|
|
86
|
-
for (const pj of jobs) {
|
|
87
|
-
try {
|
|
88
|
-
const job = this.store.add({
|
|
89
|
-
cron: pj.cron,
|
|
90
|
-
prompt: pj.prompt,
|
|
91
|
-
recurring: pj.recurring,
|
|
92
|
-
createdAt: pj.createdAt,
|
|
93
|
-
humanSchedule: pj.humanSchedule ?? humanizeCron(pj.cron),
|
|
94
|
-
});
|
|
95
|
-
this.computeNextFireTime(job);
|
|
96
|
-
}
|
|
97
|
-
catch {
|
|
98
|
-
// Skip jobs that fail to restore (e.g., at capacity)
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
if (this.store.size > 0 && !this.timer) {
|
|
102
|
-
this.start();
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
/** Whether the tick loop is running. */
|
|
106
|
-
get running() {
|
|
107
|
-
return this.timer !== null;
|
|
108
|
-
}
|
|
109
|
-
// ── Private helpers ─────────────────────────────────────────
|
|
110
|
-
notifyMutate() {
|
|
111
|
-
if (!this.config.onMutate)
|
|
112
|
-
return;
|
|
113
|
-
try {
|
|
114
|
-
this.config.onMutate(this.store.list());
|
|
115
|
-
}
|
|
116
|
-
catch {
|
|
117
|
-
// Mutation callback errors must not crash the scheduler
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
// ── Internal ───────────────────────────────────────────────
|
|
121
|
-
/** Single tick: check all jobs, fire ready ones (if idle). */
|
|
122
|
-
tick() {
|
|
123
|
-
if (this.config.isBusy())
|
|
124
|
-
return;
|
|
125
|
-
const now = Date.now();
|
|
126
|
-
const currentDate = new Date(now);
|
|
127
|
-
const currentMinute = Math.floor(now / 60_000);
|
|
128
|
-
for (const job of this.store.list()) {
|
|
129
|
-
// Check cron match
|
|
130
|
-
if (!cronMatches(job.cron, currentDate))
|
|
131
|
-
continue;
|
|
132
|
-
// Avoid double-firing within the same minute
|
|
133
|
-
if (this.lastFiredMinute.get(job.id) === currentMinute)
|
|
134
|
-
continue;
|
|
135
|
-
// Check auto-expiry (3 days)
|
|
136
|
-
const age = now - job.createdAt;
|
|
137
|
-
if (age > this.autoExpiryMs) {
|
|
138
|
-
// Fire one final time, then delete
|
|
139
|
-
this.lastFiredMinute.set(job.id, currentMinute);
|
|
140
|
-
this.fire(job);
|
|
141
|
-
this.store.remove(job.id);
|
|
142
|
-
this.lastFiredMinute.delete(job.id);
|
|
143
|
-
continue;
|
|
144
|
-
}
|
|
145
|
-
// Fire!
|
|
146
|
-
this.lastFiredMinute.set(job.id, currentMinute);
|
|
147
|
-
this.fire(job);
|
|
148
|
-
// One-shot: delete after firing
|
|
149
|
-
if (!job.recurring) {
|
|
150
|
-
this.store.remove(job.id);
|
|
151
|
-
this.lastFiredMinute.delete(job.id);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
// Auto-stop if all jobs gone
|
|
155
|
-
if (this.store.size === 0) {
|
|
156
|
-
this.stop();
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
/** Fire a job's prompt. */
|
|
160
|
-
fire(job) {
|
|
161
|
-
try {
|
|
162
|
-
this.config.onFire(job.prompt, job.id);
|
|
163
|
-
}
|
|
164
|
-
catch {
|
|
165
|
-
// Fire callback errors must not crash the scheduler
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
/** Compute and store the next fire time for a job (approximate — used for display). */
|
|
169
|
-
computeNextFireTime(job) {
|
|
170
|
-
const now = new Date();
|
|
171
|
-
// Scan forward up to 24 hours to find the next matching minute
|
|
172
|
-
for (let i = 1; i <= 1440; i++) {
|
|
173
|
-
const candidate = new Date(now.getTime() + i * 60_000);
|
|
174
|
-
candidate.setSeconds(0, 0);
|
|
175
|
-
if (cronMatches(job.cron, candidate)) {
|
|
176
|
-
this.store.updateFireTime(job.id, candidate.getTime());
|
|
177
|
-
return;
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
// Fallback: 1 minute from now
|
|
181
|
-
this.store.updateFireTime(job.id, now.getTime() + 60_000);
|
|
182
|
-
}
|
|
183
|
-
/** Exposed for testing: manually invoke one tick cycle. */
|
|
184
|
-
_tick() {
|
|
185
|
-
this.tick();
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
//# sourceMappingURL=scheduler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../../src/oni-code/cron/scheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
export interface CronJob {
|
|
2
|
-
/** 8-character hex ID */
|
|
3
|
-
id: string;
|
|
4
|
-
/** 5-field cron expression */
|
|
5
|
-
cron: string;
|
|
6
|
-
/** Prompt to fire into the agent loop */
|
|
7
|
-
prompt: string;
|
|
8
|
-
/** If true, reschedule after firing. If false, delete after firing. */
|
|
9
|
-
recurring: boolean;
|
|
10
|
-
/** Creation timestamp (ms) */
|
|
11
|
-
createdAt: number;
|
|
12
|
-
/** Next computed fire time (ms). Updated after each fire. */
|
|
13
|
-
nextFireTime: number;
|
|
14
|
-
/** Human-readable schedule description */
|
|
15
|
-
humanSchedule?: string;
|
|
16
|
-
}
|
|
17
|
-
export interface CronJobInput {
|
|
18
|
-
cron: string;
|
|
19
|
-
prompt: string;
|
|
20
|
-
recurring?: boolean;
|
|
21
|
-
humanSchedule?: string;
|
|
22
|
-
/** Optional creation timestamp (ms). Preserved when restoring persisted jobs. */
|
|
23
|
-
createdAt?: number;
|
|
24
|
-
}
|
|
25
|
-
export declare class CronStore {
|
|
26
|
-
private jobs;
|
|
27
|
-
/** Generate an 8-char hex ID */
|
|
28
|
-
private generateId;
|
|
29
|
-
/** Add a new job. Returns the created job. Throws if at capacity. */
|
|
30
|
-
add(input: CronJobInput): CronJob;
|
|
31
|
-
/** Remove a job by ID. Returns true if found and removed. */
|
|
32
|
-
remove(id: string): boolean;
|
|
33
|
-
/** Get a job by ID. */
|
|
34
|
-
get(id: string): CronJob | undefined;
|
|
35
|
-
/** List all jobs. */
|
|
36
|
-
list(): CronJob[];
|
|
37
|
-
/** Get all jobs whose nextFireTime <= now. */
|
|
38
|
-
getReady(now: number): CronJob[];
|
|
39
|
-
/** Update a job's nextFireTime. */
|
|
40
|
-
updateFireTime(id: string, nextFireTime: number): void;
|
|
41
|
-
/** Number of active jobs. */
|
|
42
|
-
get size(): number;
|
|
43
|
-
/** Clear all jobs. */
|
|
44
|
-
clear(): void;
|
|
45
|
-
}
|
|
46
|
-
//# sourceMappingURL=store.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/oni-code/cron/store.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,OAAO;IACtB,yBAAyB;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,SAAS,EAAE,OAAO,CAAC;IACnB,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,YAAY,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAQD,qBAAa,SAAS;IACpB,OAAO,CAAC,IAAI,CAA8B;IAE1C,gCAAgC;IAChC,OAAO,CAAC,UAAU;IAIlB,qEAAqE;IACrE,GAAG,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO;IAqBjC,6DAA6D;IAC7D,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI3B,uBAAuB;IACvB,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAIpC,qBAAqB;IACrB,IAAI,IAAI,OAAO,EAAE;IAIjB,8CAA8C;IAC9C,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,EAAE;IAUhC,mCAAmC;IACnC,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAOtD,6BAA6B;IAC7B,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,sBAAsB;IACtB,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { randomBytes } from "node:crypto";
|
|
2
|
-
// ── Constants ────────────────────────────────────────────────
|
|
3
|
-
const MAX_JOBS = 50;
|
|
4
|
-
// ── Store ────────────────────────────────────────────────────
|
|
5
|
-
export class CronStore {
|
|
6
|
-
jobs = new Map();
|
|
7
|
-
/** Generate an 8-char hex ID */
|
|
8
|
-
generateId() {
|
|
9
|
-
return randomBytes(4).toString("hex");
|
|
10
|
-
}
|
|
11
|
-
/** Add a new job. Returns the created job. Throws if at capacity. */
|
|
12
|
-
add(input) {
|
|
13
|
-
if (this.jobs.size >= MAX_JOBS) {
|
|
14
|
-
throw new Error(`Maximum of ${MAX_JOBS} concurrent scheduled jobs reached`);
|
|
15
|
-
}
|
|
16
|
-
const id = this.generateId();
|
|
17
|
-
const now = Date.now();
|
|
18
|
-
const job = {
|
|
19
|
-
id,
|
|
20
|
-
cron: input.cron,
|
|
21
|
-
prompt: input.prompt,
|
|
22
|
-
recurring: input.recurring ?? true,
|
|
23
|
-
createdAt: input.createdAt ?? now,
|
|
24
|
-
nextFireTime: 0, // Will be computed by scheduler
|
|
25
|
-
humanSchedule: input.humanSchedule,
|
|
26
|
-
};
|
|
27
|
-
this.jobs.set(id, job);
|
|
28
|
-
return job;
|
|
29
|
-
}
|
|
30
|
-
/** Remove a job by ID. Returns true if found and removed. */
|
|
31
|
-
remove(id) {
|
|
32
|
-
return this.jobs.delete(id);
|
|
33
|
-
}
|
|
34
|
-
/** Get a job by ID. */
|
|
35
|
-
get(id) {
|
|
36
|
-
return this.jobs.get(id);
|
|
37
|
-
}
|
|
38
|
-
/** List all jobs. */
|
|
39
|
-
list() {
|
|
40
|
-
return [...this.jobs.values()];
|
|
41
|
-
}
|
|
42
|
-
/** Get all jobs whose nextFireTime <= now. */
|
|
43
|
-
getReady(now) {
|
|
44
|
-
const ready = [];
|
|
45
|
-
for (const job of this.jobs.values()) {
|
|
46
|
-
if (job.nextFireTime > 0 && job.nextFireTime <= now) {
|
|
47
|
-
ready.push(job);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
return ready;
|
|
51
|
-
}
|
|
52
|
-
/** Update a job's nextFireTime. */
|
|
53
|
-
updateFireTime(id, nextFireTime) {
|
|
54
|
-
const job = this.jobs.get(id);
|
|
55
|
-
if (job) {
|
|
56
|
-
job.nextFireTime = nextFireTime;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
/** Number of active jobs. */
|
|
60
|
-
get size() {
|
|
61
|
-
return this.jobs.size;
|
|
62
|
-
}
|
|
63
|
-
/** Clear all jobs. */
|
|
64
|
-
clear() {
|
|
65
|
-
this.jobs.clear();
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
//# sourceMappingURL=store.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/oni-code/cron/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AA8B1C,gEAAgE;AAEhE,MAAM,QAAQ,GAAG,EAAE,CAAC;AAEpB,gEAAgE;AAEhE,MAAM,OAAO,SAAS;IACZ,IAAI,GAAG,IAAI,GAAG,EAAmB,CAAC;IAE1C,gCAAgC;IACxB,UAAU;QAChB,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,qEAAqE;IACrE,GAAG,CAAC,KAAmB;QACrB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,cAAc,QAAQ,oCAAoC,CAAC,CAAC;QAC9E,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,GAAG,GAAY;YACnB,EAAE;YACF,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;YAClC,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,GAAG;YACjC,YAAY,EAAE,CAAC,EAAE,gCAAgC;YACjD,aAAa,EAAE,KAAK,CAAC,aAAa;SACnC,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACvB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,6DAA6D;IAC7D,MAAM,CAAC,EAAU;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,uBAAuB;IACvB,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAED,qBAAqB;IACrB,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,8CAA8C;IAC9C,QAAQ,CAAC,GAAW;QAClB,MAAM,KAAK,GAAc,EAAE,CAAC;QAC5B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACrC,IAAI,GAAG,CAAC,YAAY,GAAG,CAAC,IAAI,GAAG,CAAC,YAAY,IAAI,GAAG,EAAE,CAAC;gBACpD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,mCAAmC;IACnC,cAAc,CAAC,EAAU,EAAE,YAAoB;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,GAAG,EAAE,CAAC;YACR,GAAG,CAAC,YAAY,GAAG,YAAY,CAAC;QAClC,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC;IAED,sBAAsB;IACtB,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;CACF"}
|
package/dist/oni-code/env.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Load environment variables from the target project, current working directory,
|
|
3
|
-
* and the user's global ONI env directory.
|
|
4
|
-
*
|
|
5
|
-
* Precedence:
|
|
6
|
-
* 1. Existing shell environment
|
|
7
|
-
* 2. Explicit project directory (`--dir`)
|
|
8
|
-
* 3. Current working directory
|
|
9
|
-
* 4. Global ONI directory (`~/.oni`)
|
|
10
|
-
* 5. Home directory (`~`)
|
|
11
|
-
* 6. `.env.local` before `.env` inside each directory
|
|
12
|
-
*/
|
|
13
|
-
export declare function loadProjectEnv(projectDir?: string, options?: {
|
|
14
|
-
cwd?: string;
|
|
15
|
-
homeDir?: string;
|
|
16
|
-
}): string[];
|
|
17
|
-
//# sourceMappingURL=env.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/oni-code/env.ts"],"names":[],"mappings":"AAsBA;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAC5B,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C,MAAM,EAAE,CAoBV"}
|
package/dist/oni-code/env.js
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { existsSync } from "node:fs";
|
|
2
|
-
import { homedir } from "node:os";
|
|
3
|
-
import { join, resolve } from "node:path";
|
|
4
|
-
import { config as dotenvConfig } from "dotenv";
|
|
5
|
-
const ENV_FILES = [".env.local", ".env"];
|
|
6
|
-
function uniqueDirs(dirs) {
|
|
7
|
-
const seen = new Set();
|
|
8
|
-
const ordered = [];
|
|
9
|
-
for (const dir of dirs) {
|
|
10
|
-
if (!dir)
|
|
11
|
-
continue;
|
|
12
|
-
const resolved = resolve(dir);
|
|
13
|
-
if (seen.has(resolved))
|
|
14
|
-
continue;
|
|
15
|
-
seen.add(resolved);
|
|
16
|
-
ordered.push(resolved);
|
|
17
|
-
}
|
|
18
|
-
return ordered;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Load environment variables from the target project, current working directory,
|
|
22
|
-
* and the user's global ONI env directory.
|
|
23
|
-
*
|
|
24
|
-
* Precedence:
|
|
25
|
-
* 1. Existing shell environment
|
|
26
|
-
* 2. Explicit project directory (`--dir`)
|
|
27
|
-
* 3. Current working directory
|
|
28
|
-
* 4. Global ONI directory (`~/.oni`)
|
|
29
|
-
* 5. Home directory (`~`)
|
|
30
|
-
* 6. `.env.local` before `.env` inside each directory
|
|
31
|
-
*/
|
|
32
|
-
export function loadProjectEnv(projectDir, options) {
|
|
33
|
-
const loaded = [];
|
|
34
|
-
const cwd = options?.cwd ?? process.cwd();
|
|
35
|
-
const homeDir = options?.homeDir ?? homedir();
|
|
36
|
-
const dirs = uniqueDirs([projectDir, cwd, join(homeDir, ".oni"), homeDir]);
|
|
37
|
-
for (const dir of dirs) {
|
|
38
|
-
for (const file of ENV_FILES) {
|
|
39
|
-
const path = join(dir, file);
|
|
40
|
-
if (!existsSync(path))
|
|
41
|
-
continue;
|
|
42
|
-
const result = dotenvConfig({ path, quiet: true });
|
|
43
|
-
if (result.error) {
|
|
44
|
-
throw new Error(`Failed to load environment file: ${path}`);
|
|
45
|
-
}
|
|
46
|
-
loaded.push(path);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
return loaded;
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=env.js.map
|
package/dist/oni-code/env.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/oni-code/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEhD,MAAM,SAAS,GAAG,CAAC,YAAY,EAAE,MAAM,CAAU,CAAC;AAElD,SAAS,UAAU,CAAC,IAA+B;IACjD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,SAAS;QACjC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,cAAc,CAC5B,UAAmB,EACnB,OAA4C;IAE5C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1C,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,CAAC;IAC9C,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAE3E,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBAAE,SAAS;YAEhC,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,oCAAoC,IAAI,EAAE,CAAC,CAAC;YAC9D,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
export interface ExtractedContent {
|
|
2
|
-
/** Extracted text content */
|
|
3
|
-
content: string;
|
|
4
|
-
/** Detected format (e.g. "docx", "pdf", "xlsx", "image") */
|
|
5
|
-
format: string;
|
|
6
|
-
/** Additional metadata (page count, sheet names, image dimensions, etc.) */
|
|
7
|
-
metadata?: Record<string, unknown>;
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Parse ZIP local file headers and extract deflated entries as UTF-8 strings.
|
|
11
|
-
* Returns a Map<filename, decompressedContent>.
|
|
12
|
-
*
|
|
13
|
-
* This is a minimal parser — it reads local headers sequentially
|
|
14
|
-
* and decompresses deflate (method 8) or stores (method 0) entries.
|
|
15
|
-
* Sufficient for Office Open XML formats.
|
|
16
|
-
*/
|
|
17
|
-
export declare function parseZipEntries(buf: Buffer): Map<string, string>;
|
|
18
|
-
/**
|
|
19
|
-
* Extract text content from a file based on its extension.
|
|
20
|
-
* Returns structured content for binary formats, or reads as UTF-8 for text files.
|
|
21
|
-
*/
|
|
22
|
-
export declare function extractFileContent(absPath: string): ExtractedContent;
|
|
23
|
-
/**
|
|
24
|
-
* Returns true if the file extension indicates a binary format
|
|
25
|
-
* that extractFileContent can handle (not a plain text file).
|
|
26
|
-
*/
|
|
27
|
-
export declare function isBinaryFormat(absPath: string): boolean;
|
|
28
|
-
//# sourceMappingURL=file-reader.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-reader.d.ts","sourceRoot":"","sources":["../../src/oni-code/file-reader.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,gBAAgB;IAC/B,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AA0CD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CA0ChE;AAkQD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAuCpE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGvD"}
|