helixmind 0.1.0
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.
Potentially problematic release.
This version of helixmind might be problematic. Click here for more details.
- package/LICENSE +20 -0
- package/README.md +207 -0
- package/dist/cli/agent/autonomous.d.ts +10 -0
- package/dist/cli/agent/autonomous.d.ts.map +1 -0
- package/dist/cli/agent/autonomous.js +172 -0
- package/dist/cli/agent/autonomous.js.map +1 -0
- package/dist/cli/agent/loop.d.ts +76 -0
- package/dist/cli/agent/loop.d.ts.map +1 -0
- package/dist/cli/agent/loop.js +333 -0
- package/dist/cli/agent/loop.js.map +1 -0
- package/dist/cli/agent/permissions.d.ts +28 -0
- package/dist/cli/agent/permissions.d.ts.map +1 -0
- package/dist/cli/agent/permissions.js +180 -0
- package/dist/cli/agent/permissions.js.map +1 -0
- package/dist/cli/agent/sandbox.d.ts +17 -0
- package/dist/cli/agent/sandbox.d.ts.map +1 -0
- package/dist/cli/agent/sandbox.js +124 -0
- package/dist/cli/agent/sandbox.js.map +1 -0
- package/dist/cli/agent/tools/edit-file.d.ts +2 -0
- package/dist/cli/agent/tools/edit-file.d.ts.map +1 -0
- package/dist/cli/agent/tools/edit-file.js +49 -0
- package/dist/cli/agent/tools/edit-file.js.map +1 -0
- package/dist/cli/agent/tools/find.d.ts +2 -0
- package/dist/cli/agent/tools/find.d.ts.map +1 -0
- package/dist/cli/agent/tools/find.js +35 -0
- package/dist/cli/agent/tools/find.js.map +1 -0
- package/dist/cli/agent/tools/git-commit.d.ts +2 -0
- package/dist/cli/agent/tools/git-commit.d.ts.map +1 -0
- package/dist/cli/agent/tools/git-commit.js +51 -0
- package/dist/cli/agent/tools/git-commit.js.map +1 -0
- package/dist/cli/agent/tools/git-diff.d.ts +2 -0
- package/dist/cli/agent/tools/git-diff.d.ts.map +1 -0
- package/dist/cli/agent/tools/git-diff.js +36 -0
- package/dist/cli/agent/tools/git-diff.js.map +1 -0
- package/dist/cli/agent/tools/git-log.d.ts +2 -0
- package/dist/cli/agent/tools/git-log.d.ts.map +1 -0
- package/dist/cli/agent/tools/git-log.js +32 -0
- package/dist/cli/agent/tools/git-log.js.map +1 -0
- package/dist/cli/agent/tools/git-status.d.ts +2 -0
- package/dist/cli/agent/tools/git-status.d.ts.map +1 -0
- package/dist/cli/agent/tools/git-status.js +38 -0
- package/dist/cli/agent/tools/git-status.js.map +1 -0
- package/dist/cli/agent/tools/list-dir.d.ts +2 -0
- package/dist/cli/agent/tools/list-dir.d.ts.map +1 -0
- package/dist/cli/agent/tools/list-dir.js +73 -0
- package/dist/cli/agent/tools/list-dir.js.map +1 -0
- package/dist/cli/agent/tools/read-file.d.ts +2 -0
- package/dist/cli/agent/tools/read-file.d.ts.map +1 -0
- package/dist/cli/agent/tools/read-file.js +45 -0
- package/dist/cli/agent/tools/read-file.js.map +1 -0
- package/dist/cli/agent/tools/registry.d.ts +18 -0
- package/dist/cli/agent/tools/registry.d.ts.map +1 -0
- package/dist/cli/agent/tools/registry.js +31 -0
- package/dist/cli/agent/tools/registry.js.map +1 -0
- package/dist/cli/agent/tools/run-command.d.ts +2 -0
- package/dist/cli/agent/tools/run-command.d.ts.map +1 -0
- package/dist/cli/agent/tools/run-command.js +79 -0
- package/dist/cli/agent/tools/run-command.js.map +1 -0
- package/dist/cli/agent/tools/search.d.ts +2 -0
- package/dist/cli/agent/tools/search.d.ts.map +1 -0
- package/dist/cli/agent/tools/search.js +104 -0
- package/dist/cli/agent/tools/search.js.map +1 -0
- package/dist/cli/agent/tools/spiral-query.d.ts +2 -0
- package/dist/cli/agent/tools/spiral-query.d.ts.map +1 -0
- package/dist/cli/agent/tools/spiral-query.js +52 -0
- package/dist/cli/agent/tools/spiral-query.js.map +1 -0
- package/dist/cli/agent/tools/spiral-store.d.ts +2 -0
- package/dist/cli/agent/tools/spiral-store.d.ts.map +1 -0
- package/dist/cli/agent/tools/spiral-store.js +37 -0
- package/dist/cli/agent/tools/spiral-store.js.map +1 -0
- package/dist/cli/agent/tools/web-research.d.ts +2 -0
- package/dist/cli/agent/tools/web-research.d.ts.map +1 -0
- package/dist/cli/agent/tools/web-research.js +96 -0
- package/dist/cli/agent/tools/web-research.js.map +1 -0
- package/dist/cli/agent/tools/write-file.d.ts +2 -0
- package/dist/cli/agent/tools/write-file.d.ts.map +1 -0
- package/dist/cli/agent/tools/write-file.js +91 -0
- package/dist/cli/agent/tools/write-file.js.map +1 -0
- package/dist/cli/agent/undo.d.ts +30 -0
- package/dist/cli/agent/undo.d.ts.map +1 -0
- package/dist/cli/agent/undo.js +48 -0
- package/dist/cli/agent/undo.js.map +1 -0
- package/dist/cli/auth/callback-server.d.ts +15 -0
- package/dist/cli/auth/callback-server.d.ts.map +1 -0
- package/dist/cli/auth/callback-server.js +168 -0
- package/dist/cli/auth/callback-server.js.map +1 -0
- package/dist/cli/auth/feature-gate.d.ts +19 -0
- package/dist/cli/auth/feature-gate.d.ts.map +1 -0
- package/dist/cli/auth/feature-gate.js +74 -0
- package/dist/cli/auth/feature-gate.js.map +1 -0
- package/dist/cli/auth/guard.d.ts +10 -0
- package/dist/cli/auth/guard.d.ts.map +1 -0
- package/dist/cli/auth/guard.js +46 -0
- package/dist/cli/auth/guard.js.map +1 -0
- package/dist/cli/auth/login.d.ts +22 -0
- package/dist/cli/auth/login.d.ts.map +1 -0
- package/dist/cli/auth/login.js +194 -0
- package/dist/cli/auth/login.js.map +1 -0
- package/dist/cli/auth/logout.d.ts +6 -0
- package/dist/cli/auth/logout.d.ts.map +1 -0
- package/dist/cli/auth/logout.js +36 -0
- package/dist/cli/auth/logout.js.map +1 -0
- package/dist/cli/bench/dataset.d.ts +13 -0
- package/dist/cli/bench/dataset.d.ts.map +1 -0
- package/dist/cli/bench/dataset.js +97 -0
- package/dist/cli/bench/dataset.js.map +1 -0
- package/dist/cli/bench/harness.d.ts +7 -0
- package/dist/cli/bench/harness.d.ts.map +1 -0
- package/dist/cli/bench/harness.js +135 -0
- package/dist/cli/bench/harness.js.map +1 -0
- package/dist/cli/bench/metrics.d.ts +15 -0
- package/dist/cli/bench/metrics.d.ts.map +1 -0
- package/dist/cli/bench/metrics.js +98 -0
- package/dist/cli/bench/metrics.js.map +1 -0
- package/dist/cli/bench/output.d.ts +42 -0
- package/dist/cli/bench/output.d.ts.map +1 -0
- package/dist/cli/bench/output.js +140 -0
- package/dist/cli/bench/output.js.map +1 -0
- package/dist/cli/bench/prompt.d.ts +13 -0
- package/dist/cli/bench/prompt.d.ts.map +1 -0
- package/dist/cli/bench/prompt.js +106 -0
- package/dist/cli/bench/prompt.js.map +1 -0
- package/dist/cli/bench/runner.d.ts +14 -0
- package/dist/cli/bench/runner.d.ts.map +1 -0
- package/dist/cli/bench/runner.js +334 -0
- package/dist/cli/bench/runner.js.map +1 -0
- package/dist/cli/bench/types.d.ts +109 -0
- package/dist/cli/bench/types.d.ts.map +1 -0
- package/dist/cli/bench/types.js +2 -0
- package/dist/cli/bench/types.js.map +1 -0
- package/dist/cli/bench/ui.d.ts +12 -0
- package/dist/cli/bench/ui.d.ts.map +1 -0
- package/dist/cli/bench/ui.js +126 -0
- package/dist/cli/bench/ui.js.map +1 -0
- package/dist/cli/brain/archive.d.ts +33 -0
- package/dist/cli/brain/archive.d.ts.map +1 -0
- package/dist/cli/brain/archive.js +159 -0
- package/dist/cli/brain/archive.js.map +1 -0
- package/dist/cli/brain/control-protocol.d.ts +159 -0
- package/dist/cli/brain/control-protocol.d.ts.map +1 -0
- package/dist/cli/brain/control-protocol.js +41 -0
- package/dist/cli/brain/control-protocol.js.map +1 -0
- package/dist/cli/brain/exporter.d.ts +34 -0
- package/dist/cli/brain/exporter.d.ts.map +1 -0
- package/dist/cli/brain/exporter.js +37 -0
- package/dist/cli/brain/exporter.js.map +1 -0
- package/dist/cli/brain/generator.d.ts +67 -0
- package/dist/cli/brain/generator.d.ts.map +1 -0
- package/dist/cli/brain/generator.js +239 -0
- package/dist/cli/brain/generator.js.map +1 -0
- package/dist/cli/brain/relay-client.d.ts +8 -0
- package/dist/cli/brain/relay-client.d.ts.map +1 -0
- package/dist/cli/brain/relay-client.js +173 -0
- package/dist/cli/brain/relay-client.js.map +1 -0
- package/dist/cli/brain/server.d.ts +34 -0
- package/dist/cli/brain/server.d.ts.map +1 -0
- package/dist/cli/brain/server.js +425 -0
- package/dist/cli/brain/server.js.map +1 -0
- package/dist/cli/brain/template.d.ts +3 -0
- package/dist/cli/brain/template.d.ts.map +1 -0
- package/dist/cli/brain/template.js +2072 -0
- package/dist/cli/brain/template.js.map +1 -0
- package/dist/cli/checkpoints/browser.d.ts +27 -0
- package/dist/cli/checkpoints/browser.d.ts.map +1 -0
- package/dist/cli/checkpoints/browser.js +238 -0
- package/dist/cli/checkpoints/browser.js.map +1 -0
- package/dist/cli/checkpoints/keybinding.d.ts +22 -0
- package/dist/cli/checkpoints/keybinding.d.ts.map +1 -0
- package/dist/cli/checkpoints/keybinding.js +43 -0
- package/dist/cli/checkpoints/keybinding.js.map +1 -0
- package/dist/cli/checkpoints/revert.d.ts +37 -0
- package/dist/cli/checkpoints/revert.d.ts.map +1 -0
- package/dist/cli/checkpoints/revert.js +144 -0
- package/dist/cli/checkpoints/revert.js.map +1 -0
- package/dist/cli/checkpoints/store.d.ts +48 -0
- package/dist/cli/checkpoints/store.d.ts.map +1 -0
- package/dist/cli/checkpoints/store.js +188 -0
- package/dist/cli/checkpoints/store.js.map +1 -0
- package/dist/cli/commands/archive.d.ts +7 -0
- package/dist/cli/commands/archive.d.ts.map +1 -0
- package/dist/cli/commands/archive.js +66 -0
- package/dist/cli/commands/archive.js.map +1 -0
- package/dist/cli/commands/auth.d.ts +10 -0
- package/dist/cli/commands/auth.d.ts.map +1 -0
- package/dist/cli/commands/auth.js +44 -0
- package/dist/cli/commands/auth.js.map +1 -0
- package/dist/cli/commands/bench.d.ts +25 -0
- package/dist/cli/commands/bench.d.ts.map +1 -0
- package/dist/cli/commands/bench.js +114 -0
- package/dist/cli/commands/bench.js.map +1 -0
- package/dist/cli/commands/chat.d.ts +11 -0
- package/dist/cli/commands/chat.d.ts.map +1 -0
- package/dist/cli/commands/chat.js +2321 -0
- package/dist/cli/commands/chat.js.map +1 -0
- package/dist/cli/commands/config.d.ts +4 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +41 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/feed.d.ts +6 -0
- package/dist/cli/commands/feed.d.ts.map +1 -0
- package/dist/cli/commands/feed.js +95 -0
- package/dist/cli/commands/feed.js.map +1 -0
- package/dist/cli/commands/helix-menu.d.ts +4 -0
- package/dist/cli/commands/helix-menu.d.ts.map +1 -0
- package/dist/cli/commands/helix-menu.js +400 -0
- package/dist/cli/commands/helix-menu.js.map +1 -0
- package/dist/cli/commands/init.d.ts +2 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +26 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/setup.d.ts +20 -0
- package/dist/cli/commands/setup.d.ts.map +1 -0
- package/dist/cli/commands/setup.js +314 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/commands/spiral.d.ts +4 -0
- package/dist/cli/commands/spiral.d.ts.map +1 -0
- package/dist/cli/commands/spiral.js +81 -0
- package/dist/cli/commands/spiral.js.map +1 -0
- package/dist/cli/config/store.d.ts +72 -0
- package/dist/cli/config/store.d.ts.map +1 -0
- package/dist/cli/config/store.js +241 -0
- package/dist/cli/config/store.js.map +1 -0
- package/dist/cli/context/assembler.d.ts +8 -0
- package/dist/cli/context/assembler.d.ts.map +1 -0
- package/dist/cli/context/assembler.js +124 -0
- package/dist/cli/context/assembler.js.map +1 -0
- package/dist/cli/context/project.d.ts +13 -0
- package/dist/cli/context/project.d.ts.map +1 -0
- package/dist/cli/context/project.js +126 -0
- package/dist/cli/context/project.js.map +1 -0
- package/dist/cli/context/session-buffer.d.ts +57 -0
- package/dist/cli/context/session-buffer.d.ts.map +1 -0
- package/dist/cli/context/session-buffer.js +268 -0
- package/dist/cli/context/session-buffer.js.map +1 -0
- package/dist/cli/context/trimmer.d.ts +26 -0
- package/dist/cli/context/trimmer.d.ts.map +1 -0
- package/dist/cli/context/trimmer.js +105 -0
- package/dist/cli/context/trimmer.js.map +1 -0
- package/dist/cli/feed/analyzer.d.ts +17 -0
- package/dist/cli/feed/analyzer.d.ts.map +1 -0
- package/dist/cli/feed/analyzer.js +220 -0
- package/dist/cli/feed/analyzer.js.map +1 -0
- package/dist/cli/feed/intent.d.ts +8 -0
- package/dist/cli/feed/intent.d.ts.map +1 -0
- package/dist/cli/feed/intent.js +70 -0
- package/dist/cli/feed/intent.js.map +1 -0
- package/dist/cli/feed/parser.d.ts +23 -0
- package/dist/cli/feed/parser.d.ts.map +1 -0
- package/dist/cli/feed/parser.js +166 -0
- package/dist/cli/feed/parser.js.map +1 -0
- package/dist/cli/feed/pipeline.d.ts +32 -0
- package/dist/cli/feed/pipeline.d.ts.map +1 -0
- package/dist/cli/feed/pipeline.js +242 -0
- package/dist/cli/feed/pipeline.js.map +1 -0
- package/dist/cli/feed/reader.d.ts +10 -0
- package/dist/cli/feed/reader.d.ts.map +1 -0
- package/dist/cli/feed/reader.js +61 -0
- package/dist/cli/feed/reader.js.map +1 -0
- package/dist/cli/feed/scanner.d.ts +10 -0
- package/dist/cli/feed/scanner.d.ts.map +1 -0
- package/dist/cli/feed/scanner.js +124 -0
- package/dist/cli/feed/scanner.js.map +1 -0
- package/dist/cli/feed/watcher.d.ts +14 -0
- package/dist/cli/feed/watcher.d.ts.map +1 -0
- package/dist/cli/feed/watcher.js +76 -0
- package/dist/cli/feed/watcher.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +204 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/providers/anthropic.d.ts +10 -0
- package/dist/cli/providers/anthropic.d.ts.map +1 -0
- package/dist/cli/providers/anthropic.js +117 -0
- package/dist/cli/providers/anthropic.js.map +1 -0
- package/dist/cli/providers/ollama.d.ts +37 -0
- package/dist/cli/providers/ollama.d.ts.map +1 -0
- package/dist/cli/providers/ollama.js +151 -0
- package/dist/cli/providers/ollama.js.map +1 -0
- package/dist/cli/providers/openai.d.ts +13 -0
- package/dist/cli/providers/openai.d.ts.map +1 -0
- package/dist/cli/providers/openai.js +283 -0
- package/dist/cli/providers/openai.js.map +1 -0
- package/dist/cli/providers/rate-limiter.d.ts +51 -0
- package/dist/cli/providers/rate-limiter.d.ts.map +1 -0
- package/dist/cli/providers/rate-limiter.js +164 -0
- package/dist/cli/providers/rate-limiter.js.map +1 -0
- package/dist/cli/providers/registry.d.ts +16 -0
- package/dist/cli/providers/registry.d.ts.map +1 -0
- package/dist/cli/providers/registry.js +99 -0
- package/dist/cli/providers/registry.js.map +1 -0
- package/dist/cli/providers/types.d.ts +61 -0
- package/dist/cli/providers/types.d.ts.map +1 -0
- package/dist/cli/providers/types.js +2 -0
- package/dist/cli/providers/types.js.map +1 -0
- package/dist/cli/sessions/manager.d.ts +69 -0
- package/dist/cli/sessions/manager.d.ts.map +1 -0
- package/dist/cli/sessions/manager.js +200 -0
- package/dist/cli/sessions/manager.js.map +1 -0
- package/dist/cli/sessions/session.d.ts +54 -0
- package/dist/cli/sessions/session.d.ts.map +1 -0
- package/dist/cli/sessions/session.js +70 -0
- package/dist/cli/sessions/session.js.map +1 -0
- package/dist/cli/sessions/tab-view.d.ts +18 -0
- package/dist/cli/sessions/tab-view.d.ts.map +1 -0
- package/dist/cli/sessions/tab-view.js +134 -0
- package/dist/cli/sessions/tab-view.js.map +1 -0
- package/dist/cli/ui/activity.d.ts +82 -0
- package/dist/cli/ui/activity.d.ts.map +1 -0
- package/dist/cli/ui/activity.js +309 -0
- package/dist/cli/ui/activity.js.map +1 -0
- package/dist/cli/ui/chat-view.d.ts +10 -0
- package/dist/cli/ui/chat-view.d.ts.map +1 -0
- package/dist/cli/ui/chat-view.js +165 -0
- package/dist/cli/ui/chat-view.js.map +1 -0
- package/dist/cli/ui/command-suggest.d.ts +22 -0
- package/dist/cli/ui/command-suggest.d.ts.map +1 -0
- package/dist/cli/ui/command-suggest.js +115 -0
- package/dist/cli/ui/command-suggest.js.map +1 -0
- package/dist/cli/ui/logo.d.ts +3 -0
- package/dist/cli/ui/logo.d.ts.map +1 -0
- package/dist/cli/ui/logo.js +25 -0
- package/dist/cli/ui/logo.js.map +1 -0
- package/dist/cli/ui/progress.d.ts +21 -0
- package/dist/cli/ui/progress.d.ts.map +1 -0
- package/dist/cli/ui/progress.js +125 -0
- package/dist/cli/ui/progress.js.map +1 -0
- package/dist/cli/ui/select-menu.d.ts +22 -0
- package/dist/cli/ui/select-menu.d.ts.map +1 -0
- package/dist/cli/ui/select-menu.js +152 -0
- package/dist/cli/ui/select-menu.js.map +1 -0
- package/dist/cli/ui/spinner.d.ts +3 -0
- package/dist/cli/ui/spinner.d.ts.map +1 -0
- package/dist/cli/ui/spinner.js +14 -0
- package/dist/cli/ui/spinner.js.map +1 -0
- package/dist/cli/ui/statusbar.d.ts +65 -0
- package/dist/cli/ui/statusbar.d.ts.map +1 -0
- package/dist/cli/ui/statusbar.js +272 -0
- package/dist/cli/ui/statusbar.js.map +1 -0
- package/dist/cli/ui/theme.d.ts +20 -0
- package/dist/cli/ui/theme.d.ts.map +1 -0
- package/dist/cli/ui/theme.js +25 -0
- package/dist/cli/ui/theme.js.map +1 -0
- package/dist/cli/ui/tool-output.d.ts +25 -0
- package/dist/cli/ui/tool-output.d.ts.map +1 -0
- package/dist/cli/ui/tool-output.js +171 -0
- package/dist/cli/ui/tool-output.js.map +1 -0
- package/dist/cli/validation/autofix.d.ts +32 -0
- package/dist/cli/validation/autofix.d.ts.map +1 -0
- package/dist/cli/validation/autofix.js +148 -0
- package/dist/cli/validation/autofix.js.map +1 -0
- package/dist/cli/validation/classifier.d.ts +17 -0
- package/dist/cli/validation/classifier.d.ts.map +1 -0
- package/dist/cli/validation/classifier.js +174 -0
- package/dist/cli/validation/classifier.js.map +1 -0
- package/dist/cli/validation/criteria.d.ts +22 -0
- package/dist/cli/validation/criteria.d.ts.map +1 -0
- package/dist/cli/validation/criteria.js +188 -0
- package/dist/cli/validation/criteria.js.map +1 -0
- package/dist/cli/validation/dynamic-checks.d.ts +16 -0
- package/dist/cli/validation/dynamic-checks.d.ts.map +1 -0
- package/dist/cli/validation/dynamic-checks.js +109 -0
- package/dist/cli/validation/dynamic-checks.js.map +1 -0
- package/dist/cli/validation/model.d.ts +16 -0
- package/dist/cli/validation/model.d.ts.map +1 -0
- package/dist/cli/validation/model.js +59 -0
- package/dist/cli/validation/model.js.map +1 -0
- package/dist/cli/validation/reporter.d.ts +18 -0
- package/dist/cli/validation/reporter.d.ts.map +1 -0
- package/dist/cli/validation/reporter.js +167 -0
- package/dist/cli/validation/reporter.js.map +1 -0
- package/dist/cli/validation/spiral-checks.d.ts +12 -0
- package/dist/cli/validation/spiral-checks.d.ts.map +1 -0
- package/dist/cli/validation/spiral-checks.js +167 -0
- package/dist/cli/validation/spiral-checks.js.map +1 -0
- package/dist/cli/validation/static-checks.d.ts +26 -0
- package/dist/cli/validation/static-checks.d.ts.map +1 -0
- package/dist/cli/validation/static-checks.js +492 -0
- package/dist/cli/validation/static-checks.js.map +1 -0
- package/dist/cli/validation/stats.d.ts +29 -0
- package/dist/cli/validation/stats.d.ts.map +1 -0
- package/dist/cli/validation/stats.js +137 -0
- package/dist/cli/validation/stats.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/dist/server.d.ts +8 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +43 -0
- package/dist/server.js.map +1 -0
- package/dist/spiral/cloud/content-extractor.d.ts +27 -0
- package/dist/spiral/cloud/content-extractor.d.ts.map +1 -0
- package/dist/spiral/cloud/content-extractor.js +175 -0
- package/dist/spiral/cloud/content-extractor.js.map +1 -0
- package/dist/spiral/cloud/search-provider.d.ts +22 -0
- package/dist/spiral/cloud/search-provider.d.ts.map +1 -0
- package/dist/spiral/cloud/search-provider.js +212 -0
- package/dist/spiral/cloud/search-provider.js.map +1 -0
- package/dist/spiral/cloud/topic-detector.d.ts +25 -0
- package/dist/spiral/cloud/topic-detector.d.ts.map +1 -0
- package/dist/spiral/cloud/topic-detector.js +196 -0
- package/dist/spiral/cloud/topic-detector.js.map +1 -0
- package/dist/spiral/cloud/web-enricher.d.ts +58 -0
- package/dist/spiral/cloud/web-enricher.d.ts.map +1 -0
- package/dist/spiral/cloud/web-enricher.js +170 -0
- package/dist/spiral/cloud/web-enricher.js.map +1 -0
- package/dist/spiral/compression.d.ts +54 -0
- package/dist/spiral/compression.d.ts.map +1 -0
- package/dist/spiral/compression.js +175 -0
- package/dist/spiral/compression.js.map +1 -0
- package/dist/spiral/embeddings.d.ts +24 -0
- package/dist/spiral/embeddings.d.ts.map +1 -0
- package/dist/spiral/embeddings.js +69 -0
- package/dist/spiral/embeddings.js.map +1 -0
- package/dist/spiral/engine.d.ts +95 -0
- package/dist/spiral/engine.d.ts.map +1 -0
- package/dist/spiral/engine.js +271 -0
- package/dist/spiral/engine.js.map +1 -0
- package/dist/spiral/injection.d.ts +29 -0
- package/dist/spiral/injection.d.ts.map +1 -0
- package/dist/spiral/injection.js +164 -0
- package/dist/spiral/injection.js.map +1 -0
- package/dist/spiral/relevance.d.ts +37 -0
- package/dist/spiral/relevance.d.ts.map +1 -0
- package/dist/spiral/relevance.js +75 -0
- package/dist/spiral/relevance.js.map +1 -0
- package/dist/storage/database.d.ts +11 -0
- package/dist/storage/database.d.ts.map +1 -0
- package/dist/storage/database.js +141 -0
- package/dist/storage/database.js.map +1 -0
- package/dist/storage/edges.d.ts +25 -0
- package/dist/storage/edges.d.ts.map +1 -0
- package/dist/storage/edges.js +69 -0
- package/dist/storage/edges.js.map +1 -0
- package/dist/storage/nodes.d.ts +45 -0
- package/dist/storage/nodes.d.ts.map +1 -0
- package/dist/storage/nodes.js +124 -0
- package/dist/storage/nodes.js.map +1 -0
- package/dist/storage/vectors.d.ts +25 -0
- package/dist/storage/vectors.d.ts.map +1 -0
- package/dist/storage/vectors.js +110 -0
- package/dist/storage/vectors.js.map +1 -0
- package/dist/tools/spiral-compact.d.ts +14 -0
- package/dist/tools/spiral-compact.d.ts.map +1 -0
- package/dist/tools/spiral-compact.js +14 -0
- package/dist/tools/spiral-compact.js.map +1 -0
- package/dist/tools/spiral-query.d.ts +18 -0
- package/dist/tools/spiral-query.d.ts.map +1 -0
- package/dist/tools/spiral-query.js +16 -0
- package/dist/tools/spiral-query.js.map +1 -0
- package/dist/tools/spiral-relate.d.ts +21 -0
- package/dist/tools/spiral-relate.d.ts.map +1 -0
- package/dist/tools/spiral-relate.js +21 -0
- package/dist/tools/spiral-relate.js.map +1 -0
- package/dist/tools/spiral-status.d.ts +8 -0
- package/dist/tools/spiral-status.d.ts.map +1 -0
- package/dist/tools/spiral-status.js +10 -0
- package/dist/tools/spiral-status.js.map +1 -0
- package/dist/tools/spiral-store.d.ts +41 -0
- package/dist/tools/spiral-store.d.ts.map +1 -0
- package/dist/tools/spiral-store.js +22 -0
- package/dist/tools/spiral-store.js.map +1 -0
- package/dist/types.d.ts +92 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +9 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/config.d.ts +14 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +44 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/logger.d.ts +10 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +40 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/tokens.d.ts +21 -0
- package/dist/utils/tokens.d.ts.map +1 -0
- package/dist/utils/tokens.js +33 -0
- package/dist/utils/tokens.js.map +1 -0
- package/package.json +90 -0
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { resolve, normalize, sep } from 'node:path';
|
|
2
|
+
import { statSync } from 'node:fs';
|
|
3
|
+
/** Maximum file size in bytes (10MB) */
|
|
4
|
+
const MAX_FILE_SIZE = 10 * 1024 * 1024;
|
|
5
|
+
/** Maximum content length in characters (5MB) */
|
|
6
|
+
const MAX_CONTENT_LENGTH = 5 * 1024 * 1024;
|
|
7
|
+
/** Sensitive files that should never be read or written by the agent */
|
|
8
|
+
const BLOCKED_FILES = [
|
|
9
|
+
'.env', '.env.local', '.env.production', '.env.staging',
|
|
10
|
+
'id_rsa', 'id_ed25519', 'id_ecdsa',
|
|
11
|
+
'.ssh/config', '.npmrc', '.pypirc',
|
|
12
|
+
'credentials.json', 'serviceAccountKey.json',
|
|
13
|
+
];
|
|
14
|
+
/** Dangerous command patterns that require extra confirmation */
|
|
15
|
+
const DANGEROUS_PATTERNS = [
|
|
16
|
+
/\brm\s+(-rf?|--recursive)/,
|
|
17
|
+
/\bsudo\b/,
|
|
18
|
+
/\bchmod\b.*777/,
|
|
19
|
+
/\bdd\b\s/,
|
|
20
|
+
/\b>\s*\/dev\//,
|
|
21
|
+
/\bcurl\b.*\|\s*(ba)?sh/,
|
|
22
|
+
/\bwget\b.*\|\s*(ba)?sh/,
|
|
23
|
+
/\bnpm\s+publish/,
|
|
24
|
+
/\bgit\s+push\s+.*--force/,
|
|
25
|
+
/\bdrop\s+(database|table)/i,
|
|
26
|
+
/\btruncate\s+table/i,
|
|
27
|
+
/\bformat\s+[a-z]:/i,
|
|
28
|
+
/\bdel\s+\/[sq]/i,
|
|
29
|
+
/\brmdir\s+\/s/i,
|
|
30
|
+
];
|
|
31
|
+
export class SecurityError extends Error {
|
|
32
|
+
constructor(message) {
|
|
33
|
+
super(message);
|
|
34
|
+
this.name = 'SecurityError';
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Validate that a requested path is within the project root
|
|
39
|
+
* and not a sensitive file. Returns the resolved absolute path.
|
|
40
|
+
*/
|
|
41
|
+
export function validatePath(requestedPath, projectRoot) {
|
|
42
|
+
// Normalize the requested path to handle . and .. sequences
|
|
43
|
+
let normalizedPath = normalize(requestedPath);
|
|
44
|
+
// Resolve against project root
|
|
45
|
+
const resolved = resolve(projectRoot, normalizedPath);
|
|
46
|
+
// Ensure the resolved path starts with the normalized project root
|
|
47
|
+
const normalizedRoot = normalize(projectRoot);
|
|
48
|
+
if (!resolved.startsWith(normalizedRoot)) {
|
|
49
|
+
throw new SecurityError(`Access denied: ${requestedPath} is outside the project directory`);
|
|
50
|
+
}
|
|
51
|
+
// Check for path traversal attempts (multiple consecutive separators)
|
|
52
|
+
if (normalizedPath.split(sep).length > 10) {
|
|
53
|
+
throw new SecurityError(`Access denied: Path too deep: ${requestedPath}`);
|
|
54
|
+
}
|
|
55
|
+
// Normalize for case-insensitive blocked file check
|
|
56
|
+
const lower = resolved.toLowerCase().replace(/\\/g, '/');
|
|
57
|
+
for (const blocked of BLOCKED_FILES) {
|
|
58
|
+
if (lower.endsWith('/' + blocked) || lower.endsWith('\\' + blocked) || lower === blocked) {
|
|
59
|
+
throw new SecurityError(`Access denied: ${requestedPath} is a sensitive file`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// Check if path exists and is not a symlink (follow symlinks could bypass security)
|
|
63
|
+
try {
|
|
64
|
+
const stats = statSync(resolved);
|
|
65
|
+
if (stats.isSymbolicLink()) {
|
|
66
|
+
throw new SecurityError(`Access denied: Symlinks are not allowed`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
// Path doesn't exist yet, that's fine for new files
|
|
71
|
+
if (err.code !== 'ENOENT') {
|
|
72
|
+
throw new SecurityError(`Access denied: Invalid path: ${requestedPath}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Verify the directory exists (or can be created)
|
|
76
|
+
try {
|
|
77
|
+
const dirStats = statSync(normalizedRoot);
|
|
78
|
+
if (!dirStats.isDirectory()) {
|
|
79
|
+
throw new SecurityError(`Access denied: Project root is not a directory`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
throw new SecurityError(`Access denied: Project root not accessible: ${projectRoot}`);
|
|
84
|
+
}
|
|
85
|
+
return resolved;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Classify a shell command's danger level.
|
|
89
|
+
*/
|
|
90
|
+
export function classifyCommand(cmd) {
|
|
91
|
+
// Sanitize command: remove shell metacharacters
|
|
92
|
+
const sanitized = cmd
|
|
93
|
+
.replace(/[^\w\s|;&<>()]/g, '') // Remove dangerous characters
|
|
94
|
+
.trim();
|
|
95
|
+
if (!sanitized || sanitized.length === 0) {
|
|
96
|
+
throw new SecurityError('Command cannot be empty');
|
|
97
|
+
}
|
|
98
|
+
// Check for command injection attempts
|
|
99
|
+
if (sanitized.length > 10000) {
|
|
100
|
+
throw new SecurityError('Command too long');
|
|
101
|
+
}
|
|
102
|
+
// Check for blocked commands
|
|
103
|
+
if (isBlockedCommand(sanitized)) {
|
|
104
|
+
throw new SecurityError('This command is blocked');
|
|
105
|
+
}
|
|
106
|
+
// Check for dangerous patterns
|
|
107
|
+
if (DANGEROUS_PATTERNS.some(p => p.test(sanitized)))
|
|
108
|
+
return 'dangerous';
|
|
109
|
+
// Check for potentially dangerous operations
|
|
110
|
+
if (/\brm\s/.test(sanitized) || /\bmv\s/.test(sanitized) || /\bgit\s+push/.test(sanitized))
|
|
111
|
+
return 'ask';
|
|
112
|
+
return 'safe';
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Check if a command is blocked entirely (should never run).
|
|
116
|
+
*/
|
|
117
|
+
export function isBlockedCommand(cmd) {
|
|
118
|
+
const blocked = [
|
|
119
|
+
/\bformat\s+c:/i,
|
|
120
|
+
/:\(\)\s*\{[^}]*\|\s*:.*&\s*\}\s*;/, // fork bomb
|
|
121
|
+
];
|
|
122
|
+
return blocked.some(p => p.test(cmd));
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=sandbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../../src/cli/agent/sandbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit-file.d.ts","sourceRoot":"","sources":["../../../../src/cli/agent/tools/edit-file.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { readFileSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { randomUUID } from 'node:crypto';
|
|
3
|
+
import { registerTool } from './registry.js';
|
|
4
|
+
import { validatePath } from '../sandbox.js';
|
|
5
|
+
registerTool({
|
|
6
|
+
definition: {
|
|
7
|
+
name: 'edit_file',
|
|
8
|
+
description: 'Make targeted edits to a file. Replaces a specific string with a new string. The old_string must appear exactly once in the file for a precise match.',
|
|
9
|
+
input_schema: {
|
|
10
|
+
type: 'object',
|
|
11
|
+
properties: {
|
|
12
|
+
path: { type: 'string', description: 'Relative path to the file' },
|
|
13
|
+
old_string: { type: 'string', description: 'The exact string to find and replace (must be unique in the file)' },
|
|
14
|
+
new_string: { type: 'string', description: 'The replacement string (empty string to delete)' },
|
|
15
|
+
},
|
|
16
|
+
required: ['path', 'old_string', 'new_string'],
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
async execute(input, ctx) {
|
|
20
|
+
const filePath = validatePath(input.path, ctx.projectRoot);
|
|
21
|
+
const oldStr = input.old_string;
|
|
22
|
+
const newStr = input.new_string;
|
|
23
|
+
const original = readFileSync(filePath, 'utf-8');
|
|
24
|
+
const occurrences = original.split(oldStr).length - 1;
|
|
25
|
+
if (occurrences === 0) {
|
|
26
|
+
return `Error: old_string not found in ${input.path}. The exact text does not exist in the file.`;
|
|
27
|
+
}
|
|
28
|
+
if (occurrences > 1) {
|
|
29
|
+
return `Error: old_string found ${occurrences} times in ${input.path}. It must be unique. Provide more surrounding context to make it unique.`;
|
|
30
|
+
}
|
|
31
|
+
const updated = original.replace(oldStr, newStr);
|
|
32
|
+
// Write the file
|
|
33
|
+
writeFileSync(filePath, updated, 'utf-8');
|
|
34
|
+
// Push to undo stack
|
|
35
|
+
ctx.undoStack.push({
|
|
36
|
+
id: randomUUID(),
|
|
37
|
+
timestamp: Date.now(),
|
|
38
|
+
tool: 'edit_file',
|
|
39
|
+
path: filePath,
|
|
40
|
+
originalContent: original,
|
|
41
|
+
newContent: updated,
|
|
42
|
+
});
|
|
43
|
+
// Generate a simple diff description
|
|
44
|
+
const oldLines = oldStr.split('\n');
|
|
45
|
+
const newLines = newStr.split('\n');
|
|
46
|
+
return `File edited: ${input.path}\n Replaced ${oldLines.length} line(s) with ${newLines.length} line(s).`;
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
//# sourceMappingURL=edit-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit-file.js","sourceRoot":"","sources":["../../../../src/cli/agent/tools/edit-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,YAAY,CAAC;IACX,UAAU,EAAE;QACV,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,uJAAuJ;QACpK,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE;gBAClE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mEAAmE,EAAE;gBAChH,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iDAAiD,EAAE;aAC/F;YACD,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC;SAC/C;KACF;IAED,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG;QACtB,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,IAAc,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,KAAK,CAAC,UAAoB,CAAC;QAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,UAAoB,CAAC;QAE1C,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAEtD,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,kCAAkC,KAAK,CAAC,IAAI,8CAA8C,CAAC;QACpG,CAAC;QAED,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpB,OAAO,2BAA2B,WAAW,aAAa,KAAK,CAAC,IAAI,0EAA0E,CAAC;QACjJ,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEjD,iBAAiB;QACjB,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAE1C,qBAAqB;QACrB,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;YACjB,EAAE,EAAE,UAAU,EAAE;YAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,QAAQ;YACd,eAAe,EAAE,QAAQ;YACzB,UAAU,EAAE,OAAO;SACpB,CAAC,CAAC;QAEH,qCAAqC;QACrC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEpC,OAAO,gBAAgB,KAAK,CAAC,IAAI,gBAAgB,QAAQ,CAAC,MAAM,iBAAiB,QAAQ,CAAC,MAAM,WAAW,CAAC;IAC9G,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../../../../src/cli/agent/tools/find.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import fg from 'fast-glob';
|
|
2
|
+
import { registerTool } from './registry.js';
|
|
3
|
+
import { validatePath } from '../sandbox.js';
|
|
4
|
+
registerTool({
|
|
5
|
+
definition: {
|
|
6
|
+
name: 'find_files',
|
|
7
|
+
description: 'Find files by name pattern using glob. For example "**/*.test.ts" finds all test files.',
|
|
8
|
+
input_schema: {
|
|
9
|
+
type: 'object',
|
|
10
|
+
properties: {
|
|
11
|
+
pattern: { type: 'string', description: 'Glob pattern (e.g. "**/*.ts", "src/**/*.test.ts")' },
|
|
12
|
+
path: { type: 'string', description: 'Base directory to search in (default: project root)' },
|
|
13
|
+
},
|
|
14
|
+
required: ['pattern'],
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
async execute(input, ctx) {
|
|
18
|
+
const baseDir = validatePath(input.path || '.', ctx.projectRoot);
|
|
19
|
+
const pattern = input.pattern;
|
|
20
|
+
const files = await fg(pattern, {
|
|
21
|
+
cwd: baseDir,
|
|
22
|
+
ignore: ['node_modules/**', '.git/**', 'dist/**', 'coverage/**'],
|
|
23
|
+
onlyFiles: true,
|
|
24
|
+
dot: false,
|
|
25
|
+
});
|
|
26
|
+
if (files.length === 0) {
|
|
27
|
+
return `No files found matching pattern: ${pattern}`;
|
|
28
|
+
}
|
|
29
|
+
const sorted = files.sort();
|
|
30
|
+
const display = sorted.slice(0, 100).join('\n');
|
|
31
|
+
const extra = sorted.length > 100 ? `\n... and ${sorted.length - 100} more` : '';
|
|
32
|
+
return `Found ${sorted.length} file(s) matching "${pattern}":\n\n${display}${extra}`;
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
//# sourceMappingURL=find.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find.js","sourceRoot":"","sources":["../../../../src/cli/agent/tools/find.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,WAAW,CAAC;AAE3B,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,YAAY,CAAC;IACX,UAAU,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,yFAAyF;QACtG,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mDAAmD,EAAE;gBAC7F,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qDAAqD,EAAE;aAC7F;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;IAED,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG;QACtB,MAAM,OAAO,GAAG,YAAY,CAAE,KAAK,CAAC,IAAe,IAAI,GAAG,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;QAC7E,MAAM,OAAO,GAAG,KAAK,CAAC,OAAiB,CAAC;QAExC,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,EAAE;YAC9B,GAAG,EAAE,OAAO;YACZ,MAAM,EAAE,CAAC,iBAAiB,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,CAAC;YAChE,SAAS,EAAE,IAAI;YACf,GAAG,EAAE,KAAK;SACX,CAAC,CAAC;QAEH,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,oCAAoC,OAAO,EAAE,CAAC;QACvD,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,aAAa,MAAM,CAAC,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAEjF,OAAO,SAAS,MAAM,CAAC,MAAM,sBAAsB,OAAO,SAAS,OAAO,GAAG,KAAK,EAAE,CAAC;IACvF,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-commit.d.ts","sourceRoot":"","sources":["../../../../src/cli/agent/tools/git-commit.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { execSync } from 'node:child_process';
|
|
2
|
+
import { registerTool } from './registry.js';
|
|
3
|
+
registerTool({
|
|
4
|
+
definition: {
|
|
5
|
+
name: 'git_commit',
|
|
6
|
+
description: 'Stage files and create a git commit. If no files specified, stages all modified files.',
|
|
7
|
+
input_schema: {
|
|
8
|
+
type: 'object',
|
|
9
|
+
properties: {
|
|
10
|
+
message: { type: 'string', description: 'Commit message' },
|
|
11
|
+
files: {
|
|
12
|
+
type: 'array',
|
|
13
|
+
items: { type: 'string' },
|
|
14
|
+
description: 'Specific files to stage (default: all modified files)',
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
required: ['message'],
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
async execute(input, ctx) {
|
|
21
|
+
try {
|
|
22
|
+
const message = input.message;
|
|
23
|
+
const files = input.files;
|
|
24
|
+
// Stage files
|
|
25
|
+
if (files && files.length > 0) {
|
|
26
|
+
for (const file of files) {
|
|
27
|
+
execSync(`git add "${file}"`, { cwd: ctx.projectRoot });
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
execSync('git add -A', { cwd: ctx.projectRoot });
|
|
32
|
+
}
|
|
33
|
+
// Check if there's anything staged
|
|
34
|
+
const staged = execSync('git diff --cached --stat', { cwd: ctx.projectRoot, encoding: 'utf-8' }).trim();
|
|
35
|
+
if (!staged) {
|
|
36
|
+
return 'Nothing to commit (no staged changes).';
|
|
37
|
+
}
|
|
38
|
+
// Commit
|
|
39
|
+
execSync(`git commit -m "${message.replace(/"/g, '\\"')}"`, {
|
|
40
|
+
cwd: ctx.projectRoot,
|
|
41
|
+
encoding: 'utf-8',
|
|
42
|
+
});
|
|
43
|
+
const hash = execSync('git rev-parse --short HEAD', { cwd: ctx.projectRoot, encoding: 'utf-8' }).trim();
|
|
44
|
+
return `Committed: ${hash} — ${message}\n\n${staged}`;
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
return `Error: ${err}`;
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
//# sourceMappingURL=git-commit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-commit.js","sourceRoot":"","sources":["../../../../src/cli/agent/tools/git-commit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,YAAY,CAAC;IACX,UAAU,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,wFAAwF;QACrG,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE;gBAC1D,KAAK,EAAE;oBACL,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACzB,WAAW,EAAE,uDAAuD;iBACrE;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;IAED,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG;QACtB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,KAAK,CAAC,OAAiB,CAAC;YACxC,MAAM,KAAK,GAAG,KAAK,CAAC,KAA6B,CAAC;YAElD,cAAc;YACd,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,QAAQ,CAAC,YAAY,IAAI,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YACnD,CAAC;YAED,mCAAmC;YACnC,MAAM,MAAM,GAAG,QAAQ,CAAC,0BAA0B,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACxG,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,wCAAwC,CAAC;YAClD,CAAC;YAED,SAAS;YACT,QAAQ,CAAC,kBAAkB,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE;gBAC1D,GAAG,EAAE,GAAG,CAAC,WAAW;gBACpB,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,QAAQ,CAAC,4BAA4B,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACxG,OAAO,cAAc,IAAI,MAAM,OAAO,OAAO,MAAM,EAAE,CAAC;QACxD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,UAAU,GAAG,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-diff.d.ts","sourceRoot":"","sources":["../../../../src/cli/agent/tools/git-diff.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { execSync } from 'node:child_process';
|
|
2
|
+
import { registerTool } from './registry.js';
|
|
3
|
+
registerTool({
|
|
4
|
+
definition: {
|
|
5
|
+
name: 'git_diff',
|
|
6
|
+
description: 'Show git diff for a specific file or all changes. Shows unified diff format.',
|
|
7
|
+
input_schema: {
|
|
8
|
+
type: 'object',
|
|
9
|
+
properties: {
|
|
10
|
+
path: { type: 'string', description: 'Specific file to diff (optional, default: all)' },
|
|
11
|
+
staged: { type: 'boolean', description: 'Show staged changes (default: false)' },
|
|
12
|
+
},
|
|
13
|
+
required: [],
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
async execute(input, ctx) {
|
|
17
|
+
try {
|
|
18
|
+
const staged = input.staged ? '--cached' : '';
|
|
19
|
+
const filePath = input.path ? ` -- "${input.path}"` : '';
|
|
20
|
+
const cmd = `git diff ${staged}${filePath}`.trim();
|
|
21
|
+
const diff = execSync(cmd, { cwd: ctx.projectRoot, encoding: 'utf-8', maxBuffer: 1024 * 1024 }).trim();
|
|
22
|
+
if (!diff) {
|
|
23
|
+
return staged ? 'No staged changes.' : 'No unstaged changes.';
|
|
24
|
+
}
|
|
25
|
+
// Truncate very long diffs
|
|
26
|
+
if (diff.length > 15000) {
|
|
27
|
+
return diff.slice(0, 15000) + `\n\n... diff truncated (${diff.length} chars total)`;
|
|
28
|
+
}
|
|
29
|
+
return diff;
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
return `Error: ${err}`;
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=git-diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-diff.js","sourceRoot":"","sources":["../../../../src/cli/agent/tools/git-diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,YAAY,CAAC;IACX,UAAU,EAAE;QACV,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,8EAA8E;QAC3F,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gDAAgD,EAAE;gBACvF,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,sCAAsC,EAAE;aACjF;YACD,QAAQ,EAAE,EAAE;SACb;KACF;IAED,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG;QACtB,IAAI,CAAC;YACH,MAAM,MAAM,GAAI,KAAK,CAAC,MAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,MAAM,GAAG,GAAG,YAAY,MAAM,GAAG,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;YAEnD,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAEvG,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,sBAAsB,CAAC;YAChE,CAAC;YAED,2BAA2B;YAC3B,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;gBACxB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,2BAA2B,IAAI,CAAC,MAAM,eAAe,CAAC;YACtF,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,UAAU,GAAG,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-log.d.ts","sourceRoot":"","sources":["../../../../src/cli/agent/tools/git-log.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { execSync } from 'node:child_process';
|
|
2
|
+
import { registerTool } from './registry.js';
|
|
3
|
+
registerTool({
|
|
4
|
+
definition: {
|
|
5
|
+
name: 'git_log',
|
|
6
|
+
description: 'Show recent git commit history with hash, message, author, and date.',
|
|
7
|
+
input_schema: {
|
|
8
|
+
type: 'object',
|
|
9
|
+
properties: {
|
|
10
|
+
count: { type: 'number', description: 'Number of commits to show (default: 10)' },
|
|
11
|
+
file: { type: 'string', description: 'Show history for a specific file (optional)' },
|
|
12
|
+
},
|
|
13
|
+
required: [],
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
async execute(input, ctx) {
|
|
17
|
+
try {
|
|
18
|
+
const count = input.count ?? 10;
|
|
19
|
+
const filePath = input.file ? ` -- "${input.file}"` : '';
|
|
20
|
+
const format = '--format=%h %s (%ar) <%an>';
|
|
21
|
+
const log = execSync(`git log -${count} "${format}"${filePath}`, { cwd: ctx.projectRoot, encoding: 'utf-8' }).trim();
|
|
22
|
+
if (!log) {
|
|
23
|
+
return 'No commits found.';
|
|
24
|
+
}
|
|
25
|
+
return `Recent commits:\n\n${log}`;
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
return `Error: ${err}`;
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
//# sourceMappingURL=git-log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-log.js","sourceRoot":"","sources":["../../../../src/cli/agent/tools/git-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,YAAY,CAAC;IACX,UAAU,EAAE;QACV,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,sEAAsE;QACnF,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yCAAyC,EAAE;gBACjF,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6CAA6C,EAAE;aACrF;YACD,QAAQ,EAAE,EAAE;SACb;KACF;IAED,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG;QACtB,IAAI,CAAC;YACH,MAAM,KAAK,GAAI,KAAK,CAAC,KAAgB,IAAI,EAAE,CAAC;YAC5C,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,MAAM,MAAM,GAAG,+BAA+B,CAAC;YAE/C,MAAM,GAAG,GAAG,QAAQ,CAClB,YAAY,KAAK,KAAK,MAAM,IAAI,QAAQ,EAAE,EAC1C,EAAE,GAAG,EAAE,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,CAC5C,CAAC,IAAI,EAAE,CAAC;YAET,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,OAAO,mBAAmB,CAAC;YAC7B,CAAC;YAED,OAAO,sBAAsB,GAAG,EAAE,CAAC;QACrC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,UAAU,GAAG,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-status.d.ts","sourceRoot":"","sources":["../../../../src/cli/agent/tools/git-status.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { execSync } from 'node:child_process';
|
|
2
|
+
import { registerTool } from './registry.js';
|
|
3
|
+
registerTool({
|
|
4
|
+
definition: {
|
|
5
|
+
name: 'git_status',
|
|
6
|
+
description: 'Show current git status — modified, added, deleted files, current branch, and tracking info.',
|
|
7
|
+
input_schema: {
|
|
8
|
+
type: 'object',
|
|
9
|
+
properties: {},
|
|
10
|
+
required: [],
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
async execute(_input, ctx) {
|
|
14
|
+
try {
|
|
15
|
+
const branch = execSync('git branch --show-current', { cwd: ctx.projectRoot, encoding: 'utf-8' }).trim();
|
|
16
|
+
const status = execSync('git status --short', { cwd: ctx.projectRoot, encoding: 'utf-8' }).trim();
|
|
17
|
+
const ahead = execSync('git rev-list --count @{upstream}..HEAD 2>/dev/null || echo 0', { cwd: ctx.projectRoot, encoding: 'utf-8', shell: 'bash' }).trim();
|
|
18
|
+
const behind = execSync('git rev-list --count HEAD..@{upstream} 2>/dev/null || echo 0', { cwd: ctx.projectRoot, encoding: 'utf-8', shell: 'bash' }).trim();
|
|
19
|
+
let result = `Branch: ${branch}`;
|
|
20
|
+
if (ahead !== '0')
|
|
21
|
+
result += ` (${ahead} ahead)`;
|
|
22
|
+
if (behind !== '0')
|
|
23
|
+
result += ` (${behind} behind)`;
|
|
24
|
+
result += '\n';
|
|
25
|
+
if (status) {
|
|
26
|
+
result += `\nChanges:\n${status}`;
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
result += '\nWorking tree clean';
|
|
30
|
+
}
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
return `Error: Not a git repository or git not available. ${err}`;
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
//# sourceMappingURL=git-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-status.js","sourceRoot":"","sources":["../../../../src/cli/agent/tools/git-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,YAAY,CAAC;IACX,UAAU,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,8FAA8F;QAC3G,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE;SACb;KACF;IAED,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG;QACvB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,QAAQ,CAAC,2BAA2B,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACzG,MAAM,MAAM,GAAG,QAAQ,CAAC,oBAAoB,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAClG,MAAM,KAAK,GAAG,QAAQ,CAAC,8DAA8D,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC1J,MAAM,MAAM,GAAG,QAAQ,CAAC,8DAA8D,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAE3J,IAAI,MAAM,GAAG,WAAW,MAAM,EAAE,CAAC;YACjC,IAAI,KAAK,KAAK,GAAG;gBAAE,MAAM,IAAI,KAAK,KAAK,SAAS,CAAC;YACjD,IAAI,MAAM,KAAK,GAAG;gBAAE,MAAM,IAAI,KAAK,MAAM,UAAU,CAAC;YACpD,MAAM,IAAI,IAAI,CAAC;YAEf,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,IAAI,eAAe,MAAM,EAAE,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,sBAAsB,CAAC;YACnC,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,qDAAqD,GAAG,EAAE,CAAC;QACpE,CAAC;IACH,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-dir.d.ts","sourceRoot":"","sources":["../../../../src/cli/agent/tools/list-dir.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { readdirSync, statSync } from 'node:fs';
|
|
2
|
+
import { join, relative } from 'node:path';
|
|
3
|
+
import { registerTool } from './registry.js';
|
|
4
|
+
import { validatePath } from '../sandbox.js';
|
|
5
|
+
registerTool({
|
|
6
|
+
definition: {
|
|
7
|
+
name: 'list_directory',
|
|
8
|
+
description: 'List files and directories at the given path. Shows file sizes and types. Use for understanding project structure.',
|
|
9
|
+
input_schema: {
|
|
10
|
+
type: 'object',
|
|
11
|
+
properties: {
|
|
12
|
+
path: { type: 'string', description: 'Relative path to the directory (default: project root)' },
|
|
13
|
+
recursive: { type: 'boolean', description: 'List recursively (default: false)' },
|
|
14
|
+
max_depth: { type: 'number', description: 'Maximum recursion depth (default: 2)' },
|
|
15
|
+
},
|
|
16
|
+
required: [],
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
async execute(input, ctx) {
|
|
20
|
+
const dirPath = validatePath(input.path || '.', ctx.projectRoot);
|
|
21
|
+
const recursive = input.recursive ?? false;
|
|
22
|
+
const maxDepth = input.max_depth ?? 2;
|
|
23
|
+
// Check if the directory exists before listing
|
|
24
|
+
try {
|
|
25
|
+
const stat = statSync(dirPath);
|
|
26
|
+
if (!stat.isDirectory()) {
|
|
27
|
+
return `Error: "${input.path || '.'}" is not a directory (it's a file). Use read_file instead.`;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return `Error: Directory "${input.path || '.'}" does not exist in ${ctx.projectRoot}`;
|
|
32
|
+
}
|
|
33
|
+
const entries = [];
|
|
34
|
+
const IGNORE = new Set(['node_modules', '.git', 'dist', '.next', '__pycache__', '.venv', 'target']);
|
|
35
|
+
function listDir(dir, depth, prefix) {
|
|
36
|
+
if (depth > maxDepth)
|
|
37
|
+
return;
|
|
38
|
+
let items;
|
|
39
|
+
try {
|
|
40
|
+
items = readdirSync(dir).sort();
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
for (const item of items) {
|
|
46
|
+
if (IGNORE.has(item))
|
|
47
|
+
continue;
|
|
48
|
+
const fullPath = join(dir, item);
|
|
49
|
+
let stat;
|
|
50
|
+
try {
|
|
51
|
+
stat = statSync(fullPath);
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
if (stat.isDirectory()) {
|
|
57
|
+
entries.push(`${prefix}${item}/`);
|
|
58
|
+
if (recursive && depth < maxDepth) {
|
|
59
|
+
listDir(fullPath, depth + 1, prefix + ' ');
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
const sizeKB = (stat.size / 1024).toFixed(1);
|
|
64
|
+
entries.push(`${prefix}${item} (${sizeKB} KB)`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
listDir(dirPath, 0, '');
|
|
69
|
+
const relPath = relative(ctx.projectRoot, dirPath) || '.';
|
|
70
|
+
return `Directory: ${relPath}/\n${entries.length} entries\n\n${entries.join('\n')}`;
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
//# sourceMappingURL=list-dir.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-dir.js","sourceRoot":"","sources":["../../../../src/cli/agent/tools/list-dir.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-file.d.ts","sourceRoot":"","sources":["../../../../src/cli/agent/tools/read-file.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { readFileSync, statSync } from 'node:fs';
|
|
2
|
+
import { registerTool } from './registry.js';
|
|
3
|
+
import { validatePath } from '../sandbox.js';
|
|
4
|
+
registerTool({
|
|
5
|
+
definition: {
|
|
6
|
+
name: 'read_file',
|
|
7
|
+
description: 'Read the contents of a file. Returns content with line numbers. Can read specific line ranges.',
|
|
8
|
+
input_schema: {
|
|
9
|
+
type: 'object',
|
|
10
|
+
properties: {
|
|
11
|
+
path: { type: 'string', description: 'Relative path to the file' },
|
|
12
|
+
start_line: { type: 'number', description: 'Start line (1-based, optional)' },
|
|
13
|
+
end_line: { type: 'number', description: 'End line (inclusive, optional)' },
|
|
14
|
+
},
|
|
15
|
+
required: ['path'],
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
async execute(input, ctx) {
|
|
19
|
+
const filePath = validatePath(input.path, ctx.projectRoot);
|
|
20
|
+
const stat = statSync(filePath);
|
|
21
|
+
if (stat.isDirectory()) {
|
|
22
|
+
return `Error: ${input.path} is a directory, not a file. Use list_directory instead.`;
|
|
23
|
+
}
|
|
24
|
+
if (stat.size > 1024 * 1024) {
|
|
25
|
+
return `Error: File is too large (${(stat.size / 1024).toFixed(0)} KB). Use start_line/end_line to read a portion.`;
|
|
26
|
+
}
|
|
27
|
+
const content = readFileSync(filePath, 'utf-8');
|
|
28
|
+
const lines = content.split('\n');
|
|
29
|
+
const startLine = input.start_line ?? 1;
|
|
30
|
+
const endLine = input.end_line ?? lines.length;
|
|
31
|
+
const start = Math.max(1, startLine) - 1;
|
|
32
|
+
const end = Math.min(lines.length, endLine);
|
|
33
|
+
const selectedLines = lines.slice(start, end);
|
|
34
|
+
const numbered = selectedLines.map((line, i) => {
|
|
35
|
+
const lineNum = String(start + i + 1).padStart(4);
|
|
36
|
+
return `${lineNum} │ ${line}`;
|
|
37
|
+
}).join('\n');
|
|
38
|
+
const header = `File: ${input.path} (${lines.length} lines, ${(stat.size / 1024).toFixed(1)} KB)`;
|
|
39
|
+
if (start > 0 || end < lines.length) {
|
|
40
|
+
return `${header}\nShowing lines ${start + 1}-${end} of ${lines.length}\n\n${numbered}`;
|
|
41
|
+
}
|
|
42
|
+
return `${header}\n\n${numbered}`;
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=read-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-file.js","sourceRoot":"","sources":["../../../../src/cli/agent/tools/read-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,YAAY,CAAC;IACX,UAAU,EAAE;QACV,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,gGAAgG;QAC7G,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE;gBAClE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gCAAgC,EAAE;gBAC7E,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gCAAgC,EAAE;aAC5E;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;KACF;IAED,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG;QACtB,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,IAAc,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;QACrE,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEhC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,OAAO,UAAU,KAAK,CAAC,IAAI,0DAA0D,CAAC;QACxF,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;YAC5B,OAAO,6BAA6B,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,kDAAkD,CAAC;QACtH,CAAC;QAED,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,SAAS,GAAI,KAAK,CAAC,UAAiC,IAAI,CAAC,CAAC;QAChE,MAAM,OAAO,GAAI,KAAK,CAAC,QAA+B,IAAI,KAAK,CAAC,MAAM,CAAC;QAEvE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5C,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAE9C,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YAC7C,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAClD,OAAO,GAAG,OAAO,MAAM,IAAI,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,MAAM,MAAM,GAAG,SAAS,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QAClG,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YACpC,OAAO,GAAG,MAAM,mBAAmB,KAAK,GAAG,CAAC,IAAI,GAAG,OAAO,KAAK,CAAC,MAAM,OAAO,QAAQ,EAAE,CAAC;QAC1F,CAAC;QACD,OAAO,GAAG,MAAM,OAAO,QAAQ,EAAE,CAAC;IACpC,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ToolDefinition } from '../../providers/types.js';
|
|
2
|
+
import type { UndoStack } from '../undo.js';
|
|
3
|
+
export interface ToolContext {
|
|
4
|
+
projectRoot: string;
|
|
5
|
+
undoStack: UndoStack;
|
|
6
|
+
spiralEngine?: any;
|
|
7
|
+
}
|
|
8
|
+
export interface ToolHandler {
|
|
9
|
+
definition: ToolDefinition;
|
|
10
|
+
execute: (input: Record<string, unknown>, ctx: ToolContext) => Promise<string>;
|
|
11
|
+
}
|
|
12
|
+
export declare function registerTool(handler: ToolHandler): void;
|
|
13
|
+
export declare function getTool(name: string): ToolHandler | undefined;
|
|
14
|
+
export declare function getAllToolDefinitions(): ToolDefinition[];
|
|
15
|
+
export declare function getAllToolNames(): string[];
|
|
16
|
+
/** Initialize all tools by importing their modules */
|
|
17
|
+
export declare function initializeTools(): Promise<void>;
|
|
18
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/cli/agent/tools/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,CAAC,EAAE,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,cAAc,CAAC;IAC3B,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAChF;AAID,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAEvD;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAE7D;AAED,wBAAgB,qBAAqB,IAAI,cAAc,EAAE,CAExD;AAED,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAE1C;AAED,sDAAsD;AACtD,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAerD"}
|