@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,120 +0,0 @@
|
|
|
1
|
-
import { defineTool } from "../../tools/define.js";
|
|
2
|
-
import { intervalToCron } from "../cron/parser.js";
|
|
3
|
-
// ── Tool Factory ─────────────────────────────────────────────
|
|
4
|
-
export function makeCronTools(scheduler) {
|
|
5
|
-
// ── cron_create ──────────────────────────────────────────
|
|
6
|
-
const cronCreate = defineTool({
|
|
7
|
-
name: "cron_create",
|
|
8
|
-
description: "Schedule a recurring or one-shot prompt. Accepts a cron expression " +
|
|
9
|
-
"or a simple interval (5m, 2h, 3d). Returns a job ID for cancellation.",
|
|
10
|
-
parallelSafe: true,
|
|
11
|
-
schema: {
|
|
12
|
-
type: "object",
|
|
13
|
-
properties: {
|
|
14
|
-
cron: {
|
|
15
|
-
type: "string",
|
|
16
|
-
description: "5-field cron expression (e.g. '*/5 * * * *') OR simple interval (e.g. '5m', '2h', '3d')",
|
|
17
|
-
},
|
|
18
|
-
prompt: {
|
|
19
|
-
type: "string",
|
|
20
|
-
description: "The prompt/task to execute on each fire",
|
|
21
|
-
},
|
|
22
|
-
recurring: {
|
|
23
|
-
type: "boolean",
|
|
24
|
-
description: "If true (default), reschedule after each fire. If false, fire once and delete.",
|
|
25
|
-
},
|
|
26
|
-
},
|
|
27
|
-
required: ["cron", "prompt"],
|
|
28
|
-
},
|
|
29
|
-
execute: (input) => {
|
|
30
|
-
if (!input.cron || typeof input.cron !== "string") {
|
|
31
|
-
return { error: "Missing required parameter: cron (string)" };
|
|
32
|
-
}
|
|
33
|
-
if (!input.prompt || typeof input.prompt !== "string") {
|
|
34
|
-
return { error: "Missing required parameter: prompt (string)" };
|
|
35
|
-
}
|
|
36
|
-
// Try to parse as simple interval first, fall back to raw cron
|
|
37
|
-
let cronExpr;
|
|
38
|
-
try {
|
|
39
|
-
cronExpr = intervalToCron(input.cron);
|
|
40
|
-
}
|
|
41
|
-
catch {
|
|
42
|
-
// Not a simple interval — validate as cron expression
|
|
43
|
-
const fields = input.cron.trim().split(/\s+/);
|
|
44
|
-
if (fields.length !== 5) {
|
|
45
|
-
return { error: `Invalid cron expression: expected 5 fields, got ${fields.length}. Examples: '*/5 * * * *' (every 5 min), '0 9 * * *' (daily at 9am)` };
|
|
46
|
-
}
|
|
47
|
-
cronExpr = input.cron.trim();
|
|
48
|
-
}
|
|
49
|
-
try {
|
|
50
|
-
const job = scheduler.create({
|
|
51
|
-
cron: cronExpr,
|
|
52
|
-
prompt: input.prompt,
|
|
53
|
-
recurring: input.recurring,
|
|
54
|
-
});
|
|
55
|
-
return {
|
|
56
|
-
id: job.id,
|
|
57
|
-
cron: job.cron,
|
|
58
|
-
humanSchedule: job.humanSchedule,
|
|
59
|
-
recurring: job.recurring,
|
|
60
|
-
nextFireTime: new Date(job.nextFireTime).toISOString(),
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
catch (e) {
|
|
64
|
-
return { error: e instanceof Error ? e.message : String(e) };
|
|
65
|
-
}
|
|
66
|
-
},
|
|
67
|
-
});
|
|
68
|
-
// ── cron_delete ──────────────────────────────────────────
|
|
69
|
-
const cronDelete = defineTool({
|
|
70
|
-
name: "cron_delete",
|
|
71
|
-
description: "Cancel a scheduled job by its ID.",
|
|
72
|
-
parallelSafe: true,
|
|
73
|
-
schema: {
|
|
74
|
-
type: "object",
|
|
75
|
-
properties: {
|
|
76
|
-
id: { type: "string", description: "Job ID to cancel" },
|
|
77
|
-
},
|
|
78
|
-
required: ["id"],
|
|
79
|
-
},
|
|
80
|
-
execute: (input) => {
|
|
81
|
-
if (!input.id || typeof input.id !== "string") {
|
|
82
|
-
return { error: "Missing required parameter: id (string)" };
|
|
83
|
-
}
|
|
84
|
-
const removed = scheduler.cancel(input.id);
|
|
85
|
-
if (!removed) {
|
|
86
|
-
return { error: `No scheduled job found with ID: ${input.id}` };
|
|
87
|
-
}
|
|
88
|
-
return { success: true, cancelled: input.id };
|
|
89
|
-
},
|
|
90
|
-
});
|
|
91
|
-
// ── cron_list ────────────────────────────────────────────
|
|
92
|
-
const cronList = defineTool({
|
|
93
|
-
name: "cron_list",
|
|
94
|
-
description: "List all active scheduled jobs with their cron expressions and next fire times.",
|
|
95
|
-
parallelSafe: true,
|
|
96
|
-
schema: {
|
|
97
|
-
type: "object",
|
|
98
|
-
properties: {},
|
|
99
|
-
},
|
|
100
|
-
execute: () => {
|
|
101
|
-
const jobs = scheduler.list();
|
|
102
|
-
return {
|
|
103
|
-
count: jobs.length,
|
|
104
|
-
jobs: jobs.map((j) => ({
|
|
105
|
-
id: j.id,
|
|
106
|
-
cron: j.cron,
|
|
107
|
-
prompt: j.prompt.length > 80 ? j.prompt.slice(0, 77) + "..." : j.prompt,
|
|
108
|
-
humanSchedule: j.humanSchedule,
|
|
109
|
-
recurring: j.recurring,
|
|
110
|
-
nextFireTime: j.nextFireTime > 0
|
|
111
|
-
? new Date(j.nextFireTime).toISOString()
|
|
112
|
-
: "pending",
|
|
113
|
-
createdAt: new Date(j.createdAt).toISOString(),
|
|
114
|
-
})),
|
|
115
|
-
};
|
|
116
|
-
},
|
|
117
|
-
});
|
|
118
|
-
return [cronCreate, cronDelete, cronList];
|
|
119
|
-
}
|
|
120
|
-
//# sourceMappingURL=cron.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cron.js","sourceRoot":"","sources":["../../../src/oni-code/tools/cron.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Custom Tool Loader — discovers and loads user-defined tools from project directories.
|
|
3
|
-
*
|
|
4
|
-
* Scans `.oni/tools/` for `.js` and `.mjs` files, dynamically imports them,
|
|
5
|
-
* and extracts ToolDefinition-shaped exports. Custom tools are available to
|
|
6
|
-
* all execution tiers: conductor, subagents, and swarm agents.
|
|
7
|
-
*
|
|
8
|
-
* File format:
|
|
9
|
-
* - Default export: tool name is the export's `name` field, or the filename
|
|
10
|
-
* - Named exports: each export with `execute` function is treated as a tool
|
|
11
|
-
* - Non-tool exports (no `execute` function) are silently skipped
|
|
12
|
-
*
|
|
13
|
-
* Name conflict resolution: if a custom tool's name conflicts with a built-in
|
|
14
|
-
* tool, it is prefixed with `custom_` to avoid shadowing.
|
|
15
|
-
*/
|
|
16
|
-
import type { ToolDefinition } from "../../tools/types.js";
|
|
17
|
-
/**
|
|
18
|
-
* Find all loadable tool files in the project's `.oni/tools/` directory.
|
|
19
|
-
* Returns absolute paths to `.js` and `.mjs` files.
|
|
20
|
-
*/
|
|
21
|
-
export declare function scanToolFiles(rootDir: string): string[];
|
|
22
|
-
/**
|
|
23
|
-
* Extract ToolDefinition-shaped objects from a module's exports.
|
|
24
|
-
*
|
|
25
|
-
* - `default` export uses the tool's `name` field, or the filename stem
|
|
26
|
-
* - Named exports use the tool's `name` field, or `filename_exportName`
|
|
27
|
-
* - Non-tool exports (no `execute`) are silently skipped
|
|
28
|
-
*/
|
|
29
|
-
export declare function extractToolDefinitions(mod: Record<string, unknown>, filenameStem: string): ToolDefinition[];
|
|
30
|
-
export interface LoadCustomToolsOptions {
|
|
31
|
-
/** Set of built-in tool names to check for conflicts */
|
|
32
|
-
builtinNames?: Set<string>;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Scan `.oni/tools/` for JS files, import them, extract tool definitions.
|
|
36
|
-
* Returns an array of ToolDefinition ready to register with the Conductor.
|
|
37
|
-
*
|
|
38
|
-
* - Files that fail to import are silently skipped (logged in debug)
|
|
39
|
-
* - Tools with names conflicting with built-in tools get `custom_` prefix
|
|
40
|
-
* - Available to all execution tiers (conductor, subagents, swarm agents)
|
|
41
|
-
*/
|
|
42
|
-
export declare function loadCustomTools(rootDir: string, options?: LoadCustomToolsOptions): Promise<ToolDefinition[]>;
|
|
43
|
-
//# sourceMappingURL=custom.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"custom.d.ts","sourceRoot":"","sources":["../../../src/oni-code/tools/custom.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAS3D;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAevD;AAiBD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,YAAY,EAAE,MAAM,GACnB,cAAc,EAAE,CAsBlB;AAID,MAAM,WAAW,sBAAsB;IACrC,wDAAwD;IACxD,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC5B;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,cAAc,EAAE,CAAC,CA+B3B"}
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Custom Tool Loader — discovers and loads user-defined tools from project directories.
|
|
3
|
-
*
|
|
4
|
-
* Scans `.oni/tools/` for `.js` and `.mjs` files, dynamically imports them,
|
|
5
|
-
* and extracts ToolDefinition-shaped exports. Custom tools are available to
|
|
6
|
-
* all execution tiers: conductor, subagents, and swarm agents.
|
|
7
|
-
*
|
|
8
|
-
* File format:
|
|
9
|
-
* - Default export: tool name is the export's `name` field, or the filename
|
|
10
|
-
* - Named exports: each export with `execute` function is treated as a tool
|
|
11
|
-
* - Non-tool exports (no `execute` function) are silently skipped
|
|
12
|
-
*
|
|
13
|
-
* Name conflict resolution: if a custom tool's name conflicts with a built-in
|
|
14
|
-
* tool, it is prefixed with `custom_` to avoid shadowing.
|
|
15
|
-
*/
|
|
16
|
-
import { join, basename, extname } from "node:path";
|
|
17
|
-
import { readdirSync, existsSync } from "node:fs";
|
|
18
|
-
import { pathToFileURL } from "node:url";
|
|
19
|
-
// ── Constants ─────────────────────────────────────────────────
|
|
20
|
-
const TOOLS_DIR = ".oni/tools";
|
|
21
|
-
const VALID_EXTENSIONS = new Set([".js", ".mjs"]);
|
|
22
|
-
// ── scanToolFiles ─────────────────────────────────────────────
|
|
23
|
-
/**
|
|
24
|
-
* Find all loadable tool files in the project's `.oni/tools/` directory.
|
|
25
|
-
* Returns absolute paths to `.js` and `.mjs` files.
|
|
26
|
-
*/
|
|
27
|
-
export function scanToolFiles(rootDir) {
|
|
28
|
-
const toolsPath = join(rootDir, TOOLS_DIR);
|
|
29
|
-
if (!existsSync(toolsPath)) {
|
|
30
|
-
return [];
|
|
31
|
-
}
|
|
32
|
-
try {
|
|
33
|
-
const entries = readdirSync(toolsPath, { withFileTypes: true });
|
|
34
|
-
return entries
|
|
35
|
-
.filter((e) => e.isFile() && VALID_EXTENSIONS.has(extname(e.name)))
|
|
36
|
-
.map((e) => join(toolsPath, e.name));
|
|
37
|
-
}
|
|
38
|
-
catch {
|
|
39
|
-
return [];
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
// ── isToolLike ────────────────────────────────────────────────
|
|
43
|
-
function isToolLike(value) {
|
|
44
|
-
if (typeof value !== "object" || value === null)
|
|
45
|
-
return false;
|
|
46
|
-
const obj = value;
|
|
47
|
-
return typeof obj.execute === "function";
|
|
48
|
-
}
|
|
49
|
-
// ── extractToolDefinitions ────────────────────────────────────
|
|
50
|
-
/**
|
|
51
|
-
* Extract ToolDefinition-shaped objects from a module's exports.
|
|
52
|
-
*
|
|
53
|
-
* - `default` export uses the tool's `name` field, or the filename stem
|
|
54
|
-
* - Named exports use the tool's `name` field, or `filename_exportName`
|
|
55
|
-
* - Non-tool exports (no `execute`) are silently skipped
|
|
56
|
-
*/
|
|
57
|
-
export function extractToolDefinitions(mod, filenameStem) {
|
|
58
|
-
const tools = [];
|
|
59
|
-
for (const [key, value] of Object.entries(mod)) {
|
|
60
|
-
if (!isToolLike(value))
|
|
61
|
-
continue;
|
|
62
|
-
let name;
|
|
63
|
-
if (key === "default") {
|
|
64
|
-
name = value.name ?? filenameStem;
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
name = value.name ?? `${filenameStem}_${key}`;
|
|
68
|
-
}
|
|
69
|
-
tools.push({
|
|
70
|
-
name,
|
|
71
|
-
description: value.description ?? `Custom tool: ${name}`,
|
|
72
|
-
schema: value.schema ?? { type: "object", properties: {} },
|
|
73
|
-
execute: value.execute,
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
return tools;
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Scan `.oni/tools/` for JS files, import them, extract tool definitions.
|
|
80
|
-
* Returns an array of ToolDefinition ready to register with the Conductor.
|
|
81
|
-
*
|
|
82
|
-
* - Files that fail to import are silently skipped (logged in debug)
|
|
83
|
-
* - Tools with names conflicting with built-in tools get `custom_` prefix
|
|
84
|
-
* - Available to all execution tiers (conductor, subagents, swarm agents)
|
|
85
|
-
*/
|
|
86
|
-
export async function loadCustomTools(rootDir, options) {
|
|
87
|
-
const files = scanToolFiles(rootDir);
|
|
88
|
-
if (files.length === 0)
|
|
89
|
-
return [];
|
|
90
|
-
const builtinNames = options?.builtinNames ?? new Set();
|
|
91
|
-
const tools = [];
|
|
92
|
-
for (const filePath of files) {
|
|
93
|
-
try {
|
|
94
|
-
// Use file:// URL for cross-platform dynamic import
|
|
95
|
-
const fileUrl = pathToFileURL(filePath).href;
|
|
96
|
-
const mod = await import(fileUrl);
|
|
97
|
-
const stem = basename(filePath, extname(filePath));
|
|
98
|
-
const extracted = extractToolDefinitions(mod, stem);
|
|
99
|
-
for (const tool of extracted) {
|
|
100
|
-
// Resolve name conflicts with built-in tools
|
|
101
|
-
if (builtinNames.has(tool.name)) {
|
|
102
|
-
tool.name = `custom_${tool.name}`;
|
|
103
|
-
}
|
|
104
|
-
tools.push(tool);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
catch {
|
|
108
|
-
// Silently skip files that fail to import
|
|
109
|
-
// In debug mode, the caller could log this
|
|
110
|
-
continue;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
return tools;
|
|
114
|
-
}
|
|
115
|
-
//# sourceMappingURL=custom.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"custom.js","sourceRoot":"","sources":["../../../src/oni-code/tools/custom.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Unified Diff Patch Parser & Applier
|
|
3
|
-
*
|
|
4
|
-
* Parses standard unified diff format and applies hunks to files.
|
|
5
|
-
* Supports:
|
|
6
|
-
* - Multiple files per patch
|
|
7
|
-
* - Multiple hunks per file
|
|
8
|
-
* - Context line validation with fuzzy matching (whitespace normalization)
|
|
9
|
-
* - File create (--- /dev/null) and delete (+++ /dev/null)
|
|
10
|
-
* - Pre-verification: all hunks validated before any writes
|
|
11
|
-
* - Offset tolerance: hunks can shift ±maxOffset lines from stated position
|
|
12
|
-
*/
|
|
13
|
-
export interface PatchHunk {
|
|
14
|
-
oldStart: number;
|
|
15
|
-
oldCount: number;
|
|
16
|
-
newStart: number;
|
|
17
|
-
newCount: number;
|
|
18
|
-
lines: HunkLine[];
|
|
19
|
-
}
|
|
20
|
-
export interface HunkLine {
|
|
21
|
-
type: "context" | "add" | "remove";
|
|
22
|
-
content: string;
|
|
23
|
-
}
|
|
24
|
-
export interface FilePatch {
|
|
25
|
-
oldPath: string | null;
|
|
26
|
-
newPath: string | null;
|
|
27
|
-
hunks: PatchHunk[];
|
|
28
|
-
}
|
|
29
|
-
export interface ApplyResult {
|
|
30
|
-
path: string;
|
|
31
|
-
operation: "create" | "edit" | "delete";
|
|
32
|
-
hunksApplied: number;
|
|
33
|
-
}
|
|
34
|
-
export interface ApplyError {
|
|
35
|
-
path: string;
|
|
36
|
-
hunkIndex: number;
|
|
37
|
-
message: string;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Parse a unified diff text into per-file patch objects.
|
|
41
|
-
*/
|
|
42
|
-
export declare function parsePatch(patchText: string): FilePatch[];
|
|
43
|
-
/**
|
|
44
|
-
* Apply a single file's hunks to its content.
|
|
45
|
-
* Returns the new file content, or throws on context mismatch.
|
|
46
|
-
*
|
|
47
|
-
* @param content - Original file content
|
|
48
|
-
* @param hunks - Parsed hunks to apply
|
|
49
|
-
* @param filePath - For error messages
|
|
50
|
-
* @param maxOffset - Maximum line offset tolerance for fuzzy seeking (default 50)
|
|
51
|
-
*/
|
|
52
|
-
export declare function applyHunks(content: string, hunks: PatchHunk[], filePath: string, maxOffset?: number): string;
|
|
53
|
-
export declare class PatchError extends Error {
|
|
54
|
-
readonly filePath: string;
|
|
55
|
-
readonly hunkIndex: number;
|
|
56
|
-
constructor(filePath: string, hunkIndex: number, message: string);
|
|
57
|
-
}
|
|
58
|
-
//# sourceMappingURL=patch.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"patch.d.ts","sourceRoot":"","sources":["../../../src/oni-code/tools/patch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IACxC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAID;;GAEG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,CAkFzD;AAsCD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,SAAS,EAAE,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,MAAW,GACrB,MAAM,CAoFR;AAoED,qBAAa,UAAW,SAAQ,KAAK;aAEjB,QAAQ,EAAE,MAAM;aAChB,SAAS,EAAE,MAAM;gBADjB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjC,OAAO,EAAE,MAAM;CAKlB"}
|
|
@@ -1,247 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Unified Diff Patch Parser & Applier
|
|
3
|
-
*
|
|
4
|
-
* Parses standard unified diff format and applies hunks to files.
|
|
5
|
-
* Supports:
|
|
6
|
-
* - Multiple files per patch
|
|
7
|
-
* - Multiple hunks per file
|
|
8
|
-
* - Context line validation with fuzzy matching (whitespace normalization)
|
|
9
|
-
* - File create (--- /dev/null) and delete (+++ /dev/null)
|
|
10
|
-
* - Pre-verification: all hunks validated before any writes
|
|
11
|
-
* - Offset tolerance: hunks can shift ±maxOffset lines from stated position
|
|
12
|
-
*/
|
|
13
|
-
// ── Parser ───────────────────────────────────────────────────
|
|
14
|
-
/**
|
|
15
|
-
* Parse a unified diff text into per-file patch objects.
|
|
16
|
-
*/
|
|
17
|
-
export function parsePatch(patchText) {
|
|
18
|
-
const lines = patchText.split("\n");
|
|
19
|
-
const patches = [];
|
|
20
|
-
let i = 0;
|
|
21
|
-
while (i < lines.length) {
|
|
22
|
-
// Find next --- line (file header)
|
|
23
|
-
if (!lines[i].startsWith("--- ")) {
|
|
24
|
-
i++;
|
|
25
|
-
continue;
|
|
26
|
-
}
|
|
27
|
-
const oldLine = lines[i];
|
|
28
|
-
i++;
|
|
29
|
-
// Must be followed by +++ line
|
|
30
|
-
if (i >= lines.length || !lines[i].startsWith("+++ ")) {
|
|
31
|
-
continue;
|
|
32
|
-
}
|
|
33
|
-
const newLine = lines[i];
|
|
34
|
-
i++;
|
|
35
|
-
const oldPath = extractPath(oldLine.slice(4));
|
|
36
|
-
const newPath = extractPath(newLine.slice(4));
|
|
37
|
-
const hunks = [];
|
|
38
|
-
// Parse all hunks for this file
|
|
39
|
-
while (i < lines.length) {
|
|
40
|
-
// Skip blank lines between hunks
|
|
41
|
-
while (i < lines.length && lines[i] === "")
|
|
42
|
-
i++;
|
|
43
|
-
if (i >= lines.length || !lines[i].startsWith("@@ "))
|
|
44
|
-
break;
|
|
45
|
-
const hunkHeader = parseHunkHeader(lines[i]);
|
|
46
|
-
if (!hunkHeader) {
|
|
47
|
-
i++;
|
|
48
|
-
continue;
|
|
49
|
-
}
|
|
50
|
-
i++;
|
|
51
|
-
const hunkLines = [];
|
|
52
|
-
// Read hunk content lines
|
|
53
|
-
while (i < lines.length) {
|
|
54
|
-
const line = lines[i];
|
|
55
|
-
// Detect new file header (--- followed by +++) — stop hunk parsing
|
|
56
|
-
if (line.startsWith("--- ") &&
|
|
57
|
-
i + 1 < lines.length &&
|
|
58
|
-
lines[i + 1].startsWith("+++ ")) {
|
|
59
|
-
break;
|
|
60
|
-
}
|
|
61
|
-
if (line.startsWith(" ")) {
|
|
62
|
-
hunkLines.push({ type: "context", content: line.slice(1) });
|
|
63
|
-
i++;
|
|
64
|
-
}
|
|
65
|
-
else if (line.startsWith("+")) {
|
|
66
|
-
hunkLines.push({ type: "add", content: line.slice(1) });
|
|
67
|
-
i++;
|
|
68
|
-
}
|
|
69
|
-
else if (line.startsWith("-")) {
|
|
70
|
-
hunkLines.push({ type: "remove", content: line.slice(1) });
|
|
71
|
-
i++;
|
|
72
|
-
}
|
|
73
|
-
else if (line === "\") {
|
|
74
|
-
i++;
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
break;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
hunks.push({
|
|
81
|
-
...hunkHeader,
|
|
82
|
-
lines: hunkLines,
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
if (hunks.length > 0 || oldPath === null || newPath === null) {
|
|
86
|
-
patches.push({ oldPath, newPath, hunks });
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
return patches;
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Extract file path from diff header line content.
|
|
93
|
-
* Handles: "a/path/to/file", "/dev/null", "path/to/file"
|
|
94
|
-
*/
|
|
95
|
-
function extractPath(raw) {
|
|
96
|
-
const trimmed = raw.trim();
|
|
97
|
-
if (trimmed === "/dev/null")
|
|
98
|
-
return null;
|
|
99
|
-
// Strip a/ or b/ prefix (git diff convention)
|
|
100
|
-
if (trimmed.startsWith("a/") || trimmed.startsWith("b/")) {
|
|
101
|
-
return trimmed.slice(2);
|
|
102
|
-
}
|
|
103
|
-
return trimmed;
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Parse hunk header: @@ -oldStart,oldCount +newStart,newCount @@
|
|
107
|
-
*/
|
|
108
|
-
function parseHunkHeader(line) {
|
|
109
|
-
const match = line.match(/^@@\s+-(\d+)(?:,(\d+))?\s+\+(\d+)(?:,(\d+))?\s+@@/);
|
|
110
|
-
if (!match)
|
|
111
|
-
return null;
|
|
112
|
-
return {
|
|
113
|
-
oldStart: parseInt(match[1], 10),
|
|
114
|
-
oldCount: match[2] !== undefined ? parseInt(match[2], 10) : 1,
|
|
115
|
-
newStart: parseInt(match[3], 10),
|
|
116
|
-
newCount: match[4] !== undefined ? parseInt(match[4], 10) : 1,
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
// ── Applier ──────────────────────────────────────────────────
|
|
120
|
-
/**
|
|
121
|
-
* Apply a single file's hunks to its content.
|
|
122
|
-
* Returns the new file content, or throws on context mismatch.
|
|
123
|
-
*
|
|
124
|
-
* @param content - Original file content
|
|
125
|
-
* @param hunks - Parsed hunks to apply
|
|
126
|
-
* @param filePath - For error messages
|
|
127
|
-
* @param maxOffset - Maximum line offset tolerance for fuzzy seeking (default 50)
|
|
128
|
-
*/
|
|
129
|
-
export function applyHunks(content, hunks, filePath, maxOffset = 50) {
|
|
130
|
-
// Split into lines, preserving the trailing newline state
|
|
131
|
-
const originalLines = content.split("\n");
|
|
132
|
-
// If content ends with \n, the split produces an empty trailing element
|
|
133
|
-
const hadTrailingNewline = content.length > 0 && content.endsWith("\n");
|
|
134
|
-
if (hadTrailingNewline && originalLines[originalLines.length - 1] === "") {
|
|
135
|
-
originalLines.pop();
|
|
136
|
-
}
|
|
137
|
-
// Build replacements: [{startLine, removeCount, insertLines}]
|
|
138
|
-
const replacements = [];
|
|
139
|
-
for (let hunkIdx = 0; hunkIdx < hunks.length; hunkIdx++) {
|
|
140
|
-
const hunk = hunks[hunkIdx];
|
|
141
|
-
// Extract old lines (context + remove) and new lines (context + add)
|
|
142
|
-
const oldLines = [];
|
|
143
|
-
const newLines = [];
|
|
144
|
-
for (const line of hunk.lines) {
|
|
145
|
-
if (line.type === "context") {
|
|
146
|
-
oldLines.push(line.content);
|
|
147
|
-
newLines.push(line.content);
|
|
148
|
-
}
|
|
149
|
-
else if (line.type === "remove") {
|
|
150
|
-
oldLines.push(line.content);
|
|
151
|
-
}
|
|
152
|
-
else if (line.type === "add") {
|
|
153
|
-
newLines.push(line.content);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
// Find where old lines match in the file
|
|
157
|
-
// Start searching from hunk's stated position (1-based → 0-based)
|
|
158
|
-
const statedStart = hunk.oldStart - 1;
|
|
159
|
-
const matchStart = seekMatch(originalLines, oldLines, statedStart, maxOffset);
|
|
160
|
-
if (matchStart === -1) {
|
|
161
|
-
const preview = oldLines.slice(0, 3).join("\n");
|
|
162
|
-
throw new PatchError(filePath, hunkIdx, `Context mismatch at hunk ${hunkIdx + 1}: could not find expected lines near line ${hunk.oldStart}:\n${preview}`);
|
|
163
|
-
}
|
|
164
|
-
replacements.push({
|
|
165
|
-
startLine: matchStart,
|
|
166
|
-
removeCount: oldLines.length,
|
|
167
|
-
insertLines: newLines,
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
// Validate no overlapping replacements
|
|
171
|
-
const sorted = [...replacements].sort((a, b) => a.startLine - b.startLine);
|
|
172
|
-
for (let i = 1; i < sorted.length; i++) {
|
|
173
|
-
const prev = sorted[i - 1];
|
|
174
|
-
const curr = sorted[i];
|
|
175
|
-
if (curr.startLine < prev.startLine + prev.removeCount) {
|
|
176
|
-
throw new PatchError(filePath, -1, `Overlapping hunks at lines ${prev.startLine + 1} and ${curr.startLine + 1}`);
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
// Apply replacements in reverse order to preserve line indices
|
|
180
|
-
const resultLines = [...originalLines];
|
|
181
|
-
for (let i = sorted.length - 1; i >= 0; i--) {
|
|
182
|
-
const r = sorted[i];
|
|
183
|
-
resultLines.splice(r.startLine, r.removeCount, ...r.insertLines);
|
|
184
|
-
}
|
|
185
|
-
// Reconstruct content with proper trailing newline
|
|
186
|
-
return resultLines.join("\n") + (hadTrailingNewline || resultLines.length > 0 ? "\n" : "");
|
|
187
|
-
}
|
|
188
|
-
// ── Context Matching ─────────────────────────────────────────
|
|
189
|
-
/**
|
|
190
|
-
* Seek a sequence of old lines in the file content, starting near `startLine`.
|
|
191
|
-
* Searches outward from startLine with increasing offset.
|
|
192
|
-
* Uses multi-pass fuzzy matching (exact → trimmed whitespace).
|
|
193
|
-
*
|
|
194
|
-
* Returns the 0-based line index where the match starts, or -1.
|
|
195
|
-
*/
|
|
196
|
-
function seekMatch(fileLines, oldLines, startLine, maxOffset) {
|
|
197
|
-
if (oldLines.length === 0) {
|
|
198
|
-
// Empty old lines = pure insertion at the stated position
|
|
199
|
-
return Math.min(Math.max(startLine, 0), fileLines.length);
|
|
200
|
-
}
|
|
201
|
-
// Try exact match first, then fuzzy
|
|
202
|
-
for (const matcher of [matchExact, matchTrimmed]) {
|
|
203
|
-
for (let offset = 0; offset <= maxOffset; offset++) {
|
|
204
|
-
// Try at startLine + offset
|
|
205
|
-
const fwd = startLine + offset;
|
|
206
|
-
if (fwd >= 0 && fwd + oldLines.length <= fileLines.length) {
|
|
207
|
-
if (matcher(fileLines, oldLines, fwd))
|
|
208
|
-
return fwd;
|
|
209
|
-
}
|
|
210
|
-
// Try at startLine - offset (skip 0 to avoid double-check)
|
|
211
|
-
if (offset > 0) {
|
|
212
|
-
const bwd = startLine - offset;
|
|
213
|
-
if (bwd >= 0 && bwd + oldLines.length <= fileLines.length) {
|
|
214
|
-
if (matcher(fileLines, oldLines, bwd))
|
|
215
|
-
return bwd;
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
return -1;
|
|
221
|
-
}
|
|
222
|
-
function matchExact(fileLines, oldLines, start) {
|
|
223
|
-
for (let i = 0; i < oldLines.length; i++) {
|
|
224
|
-
if (fileLines[start + i] !== oldLines[i])
|
|
225
|
-
return false;
|
|
226
|
-
}
|
|
227
|
-
return true;
|
|
228
|
-
}
|
|
229
|
-
function matchTrimmed(fileLines, oldLines, start) {
|
|
230
|
-
for (let i = 0; i < oldLines.length; i++) {
|
|
231
|
-
if (fileLines[start + i].trimEnd() !== oldLines[i].trimEnd())
|
|
232
|
-
return false;
|
|
233
|
-
}
|
|
234
|
-
return true;
|
|
235
|
-
}
|
|
236
|
-
// ── Error ────────────────────────────────────────────────────
|
|
237
|
-
export class PatchError extends Error {
|
|
238
|
-
filePath;
|
|
239
|
-
hunkIndex;
|
|
240
|
-
constructor(filePath, hunkIndex, message) {
|
|
241
|
-
super(message);
|
|
242
|
-
this.filePath = filePath;
|
|
243
|
-
this.hunkIndex = hunkIndex;
|
|
244
|
-
this.name = "PatchError";
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
//# sourceMappingURL=patch.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"patch.js","sourceRoot":"","sources":["../../../src/oni-code/tools/patch.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Plan Mode Tools — switch between build (full access) and plan (read-only) agents.
|
|
3
|
-
*
|
|
4
|
-
* plan_enter: Switch to plan mode for read-only exploration and planning.
|
|
5
|
-
* plan_exit: Switch back to build mode for implementation.
|
|
6
|
-
*
|
|
7
|
-
* The switch takes effect on the next chat() invocation. The current turn
|
|
8
|
-
* completes normally, and subsequent turns use the new agent's system prompt
|
|
9
|
-
* and tool scoping. Write tools are also blocked in plan mode via the
|
|
10
|
-
* Conductor's PreToolUse hook for double enforcement.
|
|
11
|
-
*/
|
|
12
|
-
import type { ToolDefinition } from "../../tools/types.js";
|
|
13
|
-
export interface PlanToolHost {
|
|
14
|
-
switchAgent: (name: string) => void;
|
|
15
|
-
}
|
|
16
|
-
export declare function makePlanTools(host: PlanToolHost): ToolDefinition[];
|
|
17
|
-
//# sourceMappingURL=plan.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../src/oni-code/tools/plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,cAAc,EAAE,CAwClE"}
|