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,140 @@
|
|
|
1
|
+
import { appendFileSync, writeFileSync, readFileSync, readdirSync, existsSync, mkdirSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
/**
|
|
4
|
+
* Append a single prediction to the JSONL file (SWE-bench compatible).
|
|
5
|
+
*/
|
|
6
|
+
export function appendPrediction(outputDir, prediction) {
|
|
7
|
+
mkdirSync(outputDir, { recursive: true });
|
|
8
|
+
appendFileSync(join(outputDir, 'predictions.jsonl'), JSON.stringify(prediction) + '\n', 'utf-8');
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Append a task result to the detailed results JSONL.
|
|
12
|
+
*/
|
|
13
|
+
export function appendTaskResult(outputDir, result) {
|
|
14
|
+
mkdirSync(outputDir, { recursive: true });
|
|
15
|
+
// Write a compact version without the full patch/agentText
|
|
16
|
+
const compact = {
|
|
17
|
+
instance_id: result.instance_id,
|
|
18
|
+
status: result.status,
|
|
19
|
+
tokens: result.tokens,
|
|
20
|
+
toolCalls: result.toolCalls,
|
|
21
|
+
durationMs: result.durationMs,
|
|
22
|
+
errors: result.errors,
|
|
23
|
+
stepCount: result.steps.length,
|
|
24
|
+
};
|
|
25
|
+
appendFileSync(join(outputDir, 'results.jsonl'), JSON.stringify(compact) + '\n', 'utf-8');
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Write the final run summary.
|
|
29
|
+
*/
|
|
30
|
+
export function writeSummary(outputDir, metrics) {
|
|
31
|
+
mkdirSync(outputDir, { recursive: true });
|
|
32
|
+
// Don't include taskResults in summary (too large)
|
|
33
|
+
const { taskResults: _, ...summary } = metrics;
|
|
34
|
+
writeFileSync(join(outputDir, 'summary.json'), JSON.stringify(summary, null, 2), 'utf-8');
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* List all past benchmark runs from the bench/runs/ directory.
|
|
38
|
+
*/
|
|
39
|
+
export function listRuns(benchDir) {
|
|
40
|
+
const runsDir = join(benchDir, 'runs');
|
|
41
|
+
if (!existsSync(runsDir))
|
|
42
|
+
return [];
|
|
43
|
+
const runs = [];
|
|
44
|
+
try {
|
|
45
|
+
const dirs = readdirSync(runsDir, { withFileTypes: true })
|
|
46
|
+
.filter(d => d.isDirectory())
|
|
47
|
+
.map(d => d.name)
|
|
48
|
+
.sort()
|
|
49
|
+
.reverse(); // Newest first
|
|
50
|
+
for (const dir of dirs) {
|
|
51
|
+
const summaryPath = join(runsDir, dir, 'summary.json');
|
|
52
|
+
if (!existsSync(summaryPath))
|
|
53
|
+
continue;
|
|
54
|
+
try {
|
|
55
|
+
const data = JSON.parse(readFileSync(summaryPath, 'utf-8'));
|
|
56
|
+
runs.push({
|
|
57
|
+
runId: data.runId ?? dir,
|
|
58
|
+
timestamp: data.timestamp ?? '',
|
|
59
|
+
dataset: data.dataset ?? '',
|
|
60
|
+
provider: data.provider ?? '',
|
|
61
|
+
model: data.model ?? '',
|
|
62
|
+
resolved: data.resolved ?? 0,
|
|
63
|
+
totalTasks: data.totalTasks ?? 0,
|
|
64
|
+
resolutionRate: data.resolutionRate ?? 0,
|
|
65
|
+
totalCostEstimate: data.totalCostEstimate ?? 0,
|
|
66
|
+
spiralMode: data.spiralMode,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
// Corrupted summary, skip
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// Runs directory doesn't exist or can't be read
|
|
76
|
+
}
|
|
77
|
+
return runs;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Get IDs of tasks that were already completed (resolved/failed) in a previous run.
|
|
81
|
+
* Reads results.jsonl line by line and returns Set of instance_ids.
|
|
82
|
+
*/
|
|
83
|
+
export function getCompletedTaskIds(outputDir) {
|
|
84
|
+
const resultsPath = join(outputDir, 'results.jsonl');
|
|
85
|
+
const completed = new Set();
|
|
86
|
+
if (!existsSync(resultsPath))
|
|
87
|
+
return completed;
|
|
88
|
+
try {
|
|
89
|
+
const lines = readFileSync(resultsPath, 'utf-8').split('\n').filter(l => l.trim());
|
|
90
|
+
for (const line of lines) {
|
|
91
|
+
try {
|
|
92
|
+
const data = JSON.parse(line);
|
|
93
|
+
// Only skip tasks that actually completed (resolved or failed)
|
|
94
|
+
// Re-run errored/timed-out tasks (they might succeed with budget)
|
|
95
|
+
if (data.instance_id && (data.status === 'resolved' || data.status === 'failed')) {
|
|
96
|
+
completed.add(data.instance_id);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
catch { /* skip malformed lines */ }
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
catch { /* file read error */ }
|
|
103
|
+
return completed;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Load previous run's task results for merging into resumed run.
|
|
107
|
+
*/
|
|
108
|
+
export function loadPreviousResults(outputDir) {
|
|
109
|
+
const resultsPath = join(outputDir, 'results.jsonl');
|
|
110
|
+
if (!existsSync(resultsPath))
|
|
111
|
+
return [];
|
|
112
|
+
const results = [];
|
|
113
|
+
try {
|
|
114
|
+
const lines = readFileSync(resultsPath, 'utf-8').split('\n').filter(l => l.trim());
|
|
115
|
+
for (const line of lines) {
|
|
116
|
+
try {
|
|
117
|
+
results.push(JSON.parse(line));
|
|
118
|
+
}
|
|
119
|
+
catch { /* skip */ }
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
catch { /* ignore */ }
|
|
123
|
+
return results;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Load a specific run's summary metrics.
|
|
127
|
+
*/
|
|
128
|
+
export function loadRunSummary(benchDir, runId) {
|
|
129
|
+
const summaryPath = join(benchDir, 'runs', runId, 'summary.json');
|
|
130
|
+
if (!existsSync(summaryPath))
|
|
131
|
+
return null;
|
|
132
|
+
try {
|
|
133
|
+
const data = JSON.parse(readFileSync(summaryPath, 'utf-8'));
|
|
134
|
+
return { ...data, taskResults: [] };
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../../src/cli/bench/output.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { SWETask } from './types.js';
|
|
2
|
+
import type { SpiralQueryResult } from '../../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Build a system prompt optimized for SWE-bench task resolution.
|
|
5
|
+
* Focused on minimal, targeted bug fixes.
|
|
6
|
+
*/
|
|
7
|
+
export declare function buildBenchSystemPrompt(task: SWETask, projectRoot: string): string;
|
|
8
|
+
/**
|
|
9
|
+
* Build a system prompt with Spiral Memory context for enhanced SWE-bench solving.
|
|
10
|
+
* Combines standard bench instructions with spiral context sections.
|
|
11
|
+
*/
|
|
12
|
+
export declare function buildBenchSystemPromptWithSpiral(task: SWETask, projectRoot: string, spiralContext: SpiralQueryResult): string;
|
|
13
|
+
//# sourceMappingURL=prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../../src/cli/bench/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CA0CjF;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,OAAO,EACb,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,iBAAiB,GAC/B,MAAM,CAmER"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build a system prompt optimized for SWE-bench task resolution.
|
|
3
|
+
* Focused on minimal, targeted bug fixes.
|
|
4
|
+
*/
|
|
5
|
+
export function buildBenchSystemPrompt(task, projectRoot) {
|
|
6
|
+
const sections = [];
|
|
7
|
+
sections.push(`You are an expert software engineer. Your task is to fix a GitHub issue in a real codebase.
|
|
8
|
+
|
|
9
|
+
## Repository
|
|
10
|
+
- Repo: ${task.repo}
|
|
11
|
+
- Working directory: ${projectRoot}
|
|
12
|
+
- The repository has been checked out at the exact commit where the issue exists.
|
|
13
|
+
|
|
14
|
+
## Issue to Fix
|
|
15
|
+
${task.problem_statement}`);
|
|
16
|
+
if (task.hints_text && task.hints_text.trim()) {
|
|
17
|
+
sections.push(`## Hints
|
|
18
|
+
${task.hints_text}`);
|
|
19
|
+
}
|
|
20
|
+
sections.push(`## Instructions
|
|
21
|
+
1. Read the issue carefully and understand what is expected.
|
|
22
|
+
2. Explore the codebase to find the relevant files using search_files and find_files.
|
|
23
|
+
3. Read and understand the existing code before making changes.
|
|
24
|
+
4. Make the MINIMAL changes needed to fix the issue. Do not refactor, do not add features.
|
|
25
|
+
5. Do NOT modify any test files. Only fix the source code.
|
|
26
|
+
6. After making changes, verify your fix by reading the modified files.
|
|
27
|
+
7. Do NOT run the test suite — that happens automatically after your fix.
|
|
28
|
+
|
|
29
|
+
## Rules
|
|
30
|
+
- Change as few files as possible.
|
|
31
|
+
- Change as few lines as possible.
|
|
32
|
+
- Do not add type annotations, docstrings, or comments unless they are part of the fix.
|
|
33
|
+
- Do not rename variables or move code unless required by the fix.
|
|
34
|
+
- Do not use git commit — just edit the files directly.
|
|
35
|
+
- If the issue mentions a specific file, start there.
|
|
36
|
+
- If unsure, search for error messages or class/function names from the issue.`);
|
|
37
|
+
sections.push(`## Available Tools
|
|
38
|
+
You have: read_file, write_file, edit_file, list_directory, search_files, find_files, run_command, git_status, git_diff, git_log.
|
|
39
|
+
|
|
40
|
+
Use edit_file for targeted changes. Use search_files to find relevant code. Use run_command for exploring (e.g., grep, python -c).`);
|
|
41
|
+
return sections.join('\n\n');
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Build a system prompt with Spiral Memory context for enhanced SWE-bench solving.
|
|
45
|
+
* Combines standard bench instructions with spiral context sections.
|
|
46
|
+
*/
|
|
47
|
+
export function buildBenchSystemPromptWithSpiral(task, projectRoot, spiralContext) {
|
|
48
|
+
const sections = [];
|
|
49
|
+
sections.push(`You are an expert software engineer with access to a spiral memory system that provides contextual knowledge from similar codebases and past bug fixes.
|
|
50
|
+
|
|
51
|
+
## Repository
|
|
52
|
+
- Repo: ${task.repo}
|
|
53
|
+
- Working directory: ${projectRoot}
|
|
54
|
+
- The repository has been checked out at the exact commit where the issue exists.
|
|
55
|
+
|
|
56
|
+
## Issue to Fix
|
|
57
|
+
${task.problem_statement}`);
|
|
58
|
+
if (task.hints_text && task.hints_text.trim()) {
|
|
59
|
+
sections.push(`## Hints
|
|
60
|
+
${task.hints_text}`);
|
|
61
|
+
}
|
|
62
|
+
// Inject spiral context if available
|
|
63
|
+
if (spiralContext.node_count > 0) {
|
|
64
|
+
const spiralSections = ['## Spiral Memory Context\nRelevant knowledge from the spiral memory system:'];
|
|
65
|
+
const levelMap = [
|
|
66
|
+
{ label: 'Focus (highly relevant)', nodes: spiralContext.level_1 },
|
|
67
|
+
{ label: 'Active (recent patterns)', nodes: spiralContext.level_2 },
|
|
68
|
+
{ label: 'Reference (background)', nodes: spiralContext.level_3 },
|
|
69
|
+
];
|
|
70
|
+
for (const { label, nodes } of levelMap) {
|
|
71
|
+
if (nodes.length > 0) {
|
|
72
|
+
spiralSections.push(`### ${label}:`);
|
|
73
|
+
for (const node of nodes) {
|
|
74
|
+
spiralSections.push(`- [${node.type}] ${node.content}`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
sections.push(spiralSections.join('\n'));
|
|
79
|
+
}
|
|
80
|
+
sections.push(`## Instructions
|
|
81
|
+
1. Read the issue carefully and understand what is expected.
|
|
82
|
+
2. Review the Spiral Memory Context above for relevant patterns and prior fixes.
|
|
83
|
+
3. Explore the codebase to find the relevant files using search_files and find_files.
|
|
84
|
+
4. Read and understand the existing code before making changes.
|
|
85
|
+
5. Make the MINIMAL changes needed to fix the issue. Do not refactor, do not add features.
|
|
86
|
+
6. Do NOT modify any test files. Only fix the source code.
|
|
87
|
+
7. After making changes, verify your fix by reading the modified files.
|
|
88
|
+
8. Do NOT run the test suite — that happens automatically after your fix.
|
|
89
|
+
9. Use spiral_query to search for similar patterns or fixes if stuck.
|
|
90
|
+
10. Use spiral_store to save important patterns you discover for future tasks.
|
|
91
|
+
|
|
92
|
+
## Rules
|
|
93
|
+
- Change as few files as possible.
|
|
94
|
+
- Change as few lines as possible.
|
|
95
|
+
- Do not add type annotations, docstrings, or comments unless they are part of the fix.
|
|
96
|
+
- Do not rename variables or move code unless required by the fix.
|
|
97
|
+
- Do not use git commit — just edit the files directly.
|
|
98
|
+
- If the issue mentions a specific file, start there.
|
|
99
|
+
- If unsure, search for error messages or class/function names from the issue.`);
|
|
100
|
+
sections.push(`## Available Tools
|
|
101
|
+
You have: read_file, write_file, edit_file, list_directory, search_files, find_files, run_command, git_status, git_diff, git_log, spiral_query, spiral_store.
|
|
102
|
+
|
|
103
|
+
Use edit_file for targeted changes. Use search_files to find relevant code. Use spiral_query to leverage memory from similar fixes. Use spiral_store to save fix patterns for future reference.`);
|
|
104
|
+
return sections.join('\n\n');
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../../src/cli/bench/prompt.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAa,EAAE,WAAmB;IACvE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,QAAQ,CAAC,IAAI,CAAC;;;UAGN,IAAI,CAAC,IAAI;uBACI,WAAW;;;;EAIhC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAE1B,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;QAC9C,QAAQ,CAAC,IAAI,CAAC;EAChB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IACnB,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;+EAgB+D,CAAC,CAAC;IAE/E,QAAQ,CAAC,IAAI,CAAC;;;mIAGmH,CAAC,CAAC;IAEnI,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gCAAgC,CAC9C,IAAa,EACb,WAAmB,EACnB,aAAgC;IAEhC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,QAAQ,CAAC,IAAI,CAAC;;;UAGN,IAAI,CAAC,IAAI;uBACI,WAAW;;;;EAIhC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAE1B,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;QAC9C,QAAQ,CAAC,IAAI,CAAC;EAChB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IACnB,CAAC;IAED,qCAAqC;IACrC,IAAI,aAAa,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,cAAc,GAAa,CAAC,6EAA6E,CAAC,CAAC;QAEjH,MAAM,QAAQ,GAAkE;YAC9E,EAAE,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,aAAa,CAAC,OAAO,EAAE;YAClE,EAAE,KAAK,EAAE,0BAA0B,EAAE,KAAK,EAAE,aAAa,CAAC,OAAO,EAAE;YACnE,EAAE,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,aAAa,CAAC,OAAO,EAAE;SAClE,CAAC;QAEF,KAAK,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,QAAQ,EAAE,CAAC;YACxC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,cAAc,CAAC,IAAI,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC;gBACrC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,cAAc,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;QACH,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;+EAmB+D,CAAC,CAAC;IAE/E,QAAQ,CAAC,IAAI,CAAC;;;gMAGgL,CAAC,CAAC;IAEhM,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { SpiralEngine } from '../../spiral/engine.js';
|
|
2
|
+
import type { SWETask, BenchConfig, TaskResult, TaskProgressEvent } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Execute a single SWE-bench task headlessly.
|
|
5
|
+
* 1. Clone repo at base_commit
|
|
6
|
+
* 2. (Optional) Initialize/use Spiral Memory
|
|
7
|
+
* 3. Run agent loop with problem_statement
|
|
8
|
+
* 4. Extract git diff as patch
|
|
9
|
+
* 5. Cleanup
|
|
10
|
+
*
|
|
11
|
+
* @param sharedSpiral - Pre-initialized SpiralEngine for 'learning' mode (shared across tasks)
|
|
12
|
+
*/
|
|
13
|
+
export declare function runSingleTask(task: SWETask, config: BenchConfig, onProgress?: (event: TaskProgressEvent) => void, sharedSpiral?: SpiralEngine): Promise<TaskResult>;
|
|
14
|
+
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/cli/bench/runner.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAItF;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,WAAW,EACnB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,EAC/C,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,UAAU,CAAC,CA+NrB"}
|
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
import { execSync } from 'node:child_process';
|
|
2
|
+
import { mkdirSync, rmSync, existsSync, readdirSync, readFileSync } from 'node:fs';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { tmpdir } from 'node:os';
|
|
5
|
+
import { createProvider } from '../providers/registry.js';
|
|
6
|
+
import { runAgentLoop, AgentAbortError, AgentController } from '../agent/loop.js';
|
|
7
|
+
import { PermissionManager } from '../agent/permissions.js';
|
|
8
|
+
import { UndoStack } from '../agent/undo.js';
|
|
9
|
+
import { initializeTools } from '../agent/tools/registry.js';
|
|
10
|
+
import { SessionBuffer } from '../context/session-buffer.js';
|
|
11
|
+
import { buildBenchSystemPrompt, buildBenchSystemPromptWithSpiral } from './prompt.js';
|
|
12
|
+
import { SpiralEngine } from '../../spiral/engine.js';
|
|
13
|
+
import { loadConfig as loadSpiralConfig } from '../../utils/config.js';
|
|
14
|
+
let toolsInitialized = false;
|
|
15
|
+
/**
|
|
16
|
+
* Execute a single SWE-bench task headlessly.
|
|
17
|
+
* 1. Clone repo at base_commit
|
|
18
|
+
* 2. (Optional) Initialize/use Spiral Memory
|
|
19
|
+
* 3. Run agent loop with problem_statement
|
|
20
|
+
* 4. Extract git diff as patch
|
|
21
|
+
* 5. Cleanup
|
|
22
|
+
*
|
|
23
|
+
* @param sharedSpiral - Pre-initialized SpiralEngine for 'learning' mode (shared across tasks)
|
|
24
|
+
*/
|
|
25
|
+
export async function runSingleTask(task, config, onProgress, sharedSpiral) {
|
|
26
|
+
const startTime = Date.now();
|
|
27
|
+
// Ensure tools are loaded once
|
|
28
|
+
if (!toolsInitialized) {
|
|
29
|
+
await initializeTools();
|
|
30
|
+
toolsInitialized = true;
|
|
31
|
+
}
|
|
32
|
+
// Create isolated working directory
|
|
33
|
+
const taskDir = join(tmpdir(), 'helixmind-bench', config.runId, task.instance_id.replace(/\//g, '__'));
|
|
34
|
+
mkdirSync(taskDir, { recursive: true });
|
|
35
|
+
const repoDir = join(taskDir, 'repo');
|
|
36
|
+
try {
|
|
37
|
+
// Step 1: Clone repository
|
|
38
|
+
onProgress?.({ type: 'status', message: 'Cloning repository...' });
|
|
39
|
+
try {
|
|
40
|
+
execSync(`git clone --quiet https://github.com/${task.repo}.git repo`, { cwd: taskDir, timeout: 300_000, stdio: 'pipe' });
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
return makeErrorResult(task, startTime, `Clone failed: ${err}`);
|
|
44
|
+
}
|
|
45
|
+
// Checkout the specific base commit
|
|
46
|
+
try {
|
|
47
|
+
execSync(`git checkout --quiet ${task.base_commit}`, {
|
|
48
|
+
cwd: repoDir,
|
|
49
|
+
timeout: 30_000,
|
|
50
|
+
stdio: 'pipe',
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
return makeErrorResult(task, startTime, `Checkout failed: ${err}`);
|
|
55
|
+
}
|
|
56
|
+
// Step 2: Initialize Spiral if enabled
|
|
57
|
+
let spiralEngine = null;
|
|
58
|
+
let ownedSpiral = false; // Track if we created the spiral (for cleanup)
|
|
59
|
+
if (config.withSpiral) {
|
|
60
|
+
onProgress?.({ type: 'status', message: 'Initializing spiral memory...' });
|
|
61
|
+
if (config.spiralMode === 'learning' && sharedSpiral) {
|
|
62
|
+
// Learning mode: reuse shared spiral across tasks
|
|
63
|
+
spiralEngine = sharedSpiral;
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
// Fresh mode: create new spiral per task
|
|
67
|
+
const spiralDataDir = join(taskDir, 'spiral');
|
|
68
|
+
mkdirSync(spiralDataDir, { recursive: true });
|
|
69
|
+
const spiralConfig = loadSpiralConfig(spiralDataDir);
|
|
70
|
+
spiralEngine = new SpiralEngine(spiralConfig);
|
|
71
|
+
await spiralEngine.initialize();
|
|
72
|
+
ownedSpiral = true;
|
|
73
|
+
}
|
|
74
|
+
// Pre-seed spiral with repo context
|
|
75
|
+
await preSeedSpiral(spiralEngine, repoDir, task);
|
|
76
|
+
onProgress?.({ type: 'status', message: 'Spiral memory ready' });
|
|
77
|
+
}
|
|
78
|
+
// Step 3: Run agent loop
|
|
79
|
+
onProgress?.({ type: 'status', message: 'Agent working...' });
|
|
80
|
+
const provider = createProvider(config.provider, config.apiKey, config.model, config.baseURL);
|
|
81
|
+
const permissions = new PermissionManager();
|
|
82
|
+
permissions.setYolo(true); // No interactive prompts
|
|
83
|
+
const undoStack = new UndoStack();
|
|
84
|
+
const controller = new AgentController();
|
|
85
|
+
const sessionBuffer = new SessionBuffer();
|
|
86
|
+
// Build system prompt: with or without spiral context
|
|
87
|
+
let systemPrompt;
|
|
88
|
+
if (spiralEngine) {
|
|
89
|
+
const spiralContext = await spiralEngine.query(task.problem_statement, 40000);
|
|
90
|
+
systemPrompt = buildBenchSystemPromptWithSpiral(task, repoDir, spiralContext);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
systemPrompt = buildBenchSystemPrompt(task, repoDir);
|
|
94
|
+
}
|
|
95
|
+
const toolContext = {
|
|
96
|
+
projectRoot: repoDir,
|
|
97
|
+
undoStack,
|
|
98
|
+
spiralEngine: spiralEngine ?? undefined,
|
|
99
|
+
};
|
|
100
|
+
let tokensInput = 0;
|
|
101
|
+
let tokensOutput = 0;
|
|
102
|
+
// Set up timeout
|
|
103
|
+
const timeoutHandle = setTimeout(() => {
|
|
104
|
+
controller.abort();
|
|
105
|
+
}, config.timeoutSeconds * 1000);
|
|
106
|
+
let agentResult;
|
|
107
|
+
try {
|
|
108
|
+
agentResult = await runAgentLoop(task.problem_statement, [], {
|
|
109
|
+
provider,
|
|
110
|
+
systemPrompt,
|
|
111
|
+
permissions,
|
|
112
|
+
toolContext,
|
|
113
|
+
sessionBuffer,
|
|
114
|
+
onTokensUsed: (inp, out) => {
|
|
115
|
+
tokensInput += inp;
|
|
116
|
+
tokensOutput += out;
|
|
117
|
+
onProgress?.({ type: 'tokens', input: inp, output: out });
|
|
118
|
+
},
|
|
119
|
+
onToolCall: (name) => {
|
|
120
|
+
onProgress?.({ type: 'tool', name });
|
|
121
|
+
},
|
|
122
|
+
maxIterations: config.maxIterations,
|
|
123
|
+
}, controller);
|
|
124
|
+
}
|
|
125
|
+
catch (err) {
|
|
126
|
+
clearTimeout(timeoutHandle);
|
|
127
|
+
// Store timeout/error learnings in spiral (learning mode)
|
|
128
|
+
if (spiralEngine && config.spiralMode === 'learning') {
|
|
129
|
+
try {
|
|
130
|
+
const isTimeout = err instanceof AgentAbortError;
|
|
131
|
+
await spiralEngine.store(`${isTimeout ? 'Timeout' : 'Error'} on ${task.instance_id} (${task.repo}): ${String(err).slice(0, 200)}. Problem: ${task.problem_statement.slice(0, 150)}`, 'pattern', { tags: [isTimeout ? 'timeout' : 'error', task.repo], file: task.instance_id });
|
|
132
|
+
}
|
|
133
|
+
catch { /* non-critical */ }
|
|
134
|
+
}
|
|
135
|
+
if (err instanceof AgentAbortError) {
|
|
136
|
+
return makeResult(task, startTime, 'timeout', '', tokensInput, tokensOutput, 0, [], ['Timeout reached']);
|
|
137
|
+
}
|
|
138
|
+
return makeErrorResult(task, startTime, `Agent error: ${err}`);
|
|
139
|
+
}
|
|
140
|
+
clearTimeout(timeoutHandle);
|
|
141
|
+
// Step 3: Extract patch
|
|
142
|
+
onProgress?.({ type: 'status', message: 'Extracting patch...' });
|
|
143
|
+
let patch = '';
|
|
144
|
+
try {
|
|
145
|
+
patch = execSync(`git diff ${task.base_commit}`, {
|
|
146
|
+
cwd: repoDir,
|
|
147
|
+
encoding: 'utf-8',
|
|
148
|
+
maxBuffer: 10 * 1024 * 1024,
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
// Also try unstaged diff as fallback
|
|
153
|
+
try {
|
|
154
|
+
patch = execSync('git diff', {
|
|
155
|
+
cwd: repoDir,
|
|
156
|
+
encoding: 'utf-8',
|
|
157
|
+
maxBuffer: 10 * 1024 * 1024,
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
patch = '';
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
const status = patch.trim() ? 'resolved' : 'failed';
|
|
165
|
+
const steps = agentResult.steps.map(s => ({
|
|
166
|
+
tool: s.tool,
|
|
167
|
+
label: s.label,
|
|
168
|
+
status: s.status,
|
|
169
|
+
}));
|
|
170
|
+
// Store learnings in spiral (learning mode) — fixes, errors, and failures
|
|
171
|
+
if (spiralEngine && config.spiralMode === 'learning') {
|
|
172
|
+
try {
|
|
173
|
+
if (patch.trim()) {
|
|
174
|
+
// Successful fix: store the pattern
|
|
175
|
+
const patchSummary = patch.split('\n').slice(0, 5).join(' ').slice(0, 200);
|
|
176
|
+
await spiralEngine.store(`Fixed ${task.instance_id}: ${patchSummary}`, 'pattern', { tags: ['fix', task.repo], file: task.instance_id });
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
// Failed attempt: store what the agent tried so future tasks can learn
|
|
180
|
+
const agentSummary = agentResult.text?.slice(0, 300) ?? 'No output';
|
|
181
|
+
const errorSummary = agentResult.errors?.slice(0, 3).join('; ') ?? '';
|
|
182
|
+
await spiralEngine.store(`Failed ${task.instance_id} (${task.repo}): ${agentSummary}${errorSummary ? ` Errors: ${errorSummary}` : ''}`, 'pattern', { tags: ['failed_attempt', task.repo], file: task.instance_id });
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
catch {
|
|
186
|
+
// Non-critical: don't fail the task if spiral store fails
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
// Cleanup owned spiral (fresh mode)
|
|
190
|
+
if (ownedSpiral && spiralEngine) {
|
|
191
|
+
try {
|
|
192
|
+
spiralEngine.close();
|
|
193
|
+
}
|
|
194
|
+
catch {
|
|
195
|
+
// ignore
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return makeResult(task, startTime, status, patch, tokensInput, tokensOutput, agentResult.toolCalls, steps, agentResult.errors, agentResult.text);
|
|
199
|
+
}
|
|
200
|
+
finally {
|
|
201
|
+
// Step 5: Cleanup
|
|
202
|
+
try {
|
|
203
|
+
rmSync(taskDir, { recursive: true, force: true });
|
|
204
|
+
}
|
|
205
|
+
catch {
|
|
206
|
+
// EBUSY on Windows — ignore
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
function makeResult(task, startTime, status, patch, tokensIn, tokensOut, toolCalls, steps, errors, agentText = '') {
|
|
211
|
+
return {
|
|
212
|
+
instance_id: task.instance_id,
|
|
213
|
+
status,
|
|
214
|
+
model_patch: patch,
|
|
215
|
+
tokens: { input: tokensIn, output: tokensOut },
|
|
216
|
+
toolCalls,
|
|
217
|
+
steps,
|
|
218
|
+
errors,
|
|
219
|
+
durationMs: Date.now() - startTime,
|
|
220
|
+
agentText,
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
function makeErrorResult(task, startTime, error) {
|
|
224
|
+
return makeResult(task, startTime, 'error', '', 0, 0, 0, [], [error]);
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Deep-feed a SpiralEngine with repo files for contextual knowledge.
|
|
228
|
+
* Scans: config files, README, source directories, __init__.py, key modules.
|
|
229
|
+
* Much more thorough than just top-level files — mirrors `/feed` behavior.
|
|
230
|
+
*/
|
|
231
|
+
async function preSeedSpiral(spiral, repoDir, task) {
|
|
232
|
+
const keyFiles = [];
|
|
233
|
+
const seen = new Set();
|
|
234
|
+
const add = (relPath) => {
|
|
235
|
+
if (!seen.has(relPath)) {
|
|
236
|
+
seen.add(relPath);
|
|
237
|
+
keyFiles.push(relPath);
|
|
238
|
+
}
|
|
239
|
+
};
|
|
240
|
+
// 1. Priority config/readme files at root
|
|
241
|
+
const priorityNames = [
|
|
242
|
+
'README.md', 'README.rst', 'README.txt',
|
|
243
|
+
'setup.py', 'pyproject.toml', 'setup.cfg',
|
|
244
|
+
'Makefile', 'tox.ini', 'MANIFEST.in',
|
|
245
|
+
'requirements.txt', 'requirements-dev.txt',
|
|
246
|
+
'CONTRIBUTING.md', 'CHANGES.rst', 'CHANGELOG.md',
|
|
247
|
+
];
|
|
248
|
+
for (const name of priorityNames) {
|
|
249
|
+
if (existsSync(join(repoDir, name)))
|
|
250
|
+
add(name);
|
|
251
|
+
}
|
|
252
|
+
// 2. Top-level .py files
|
|
253
|
+
try {
|
|
254
|
+
const entries = readdirSync(repoDir);
|
|
255
|
+
for (const e of entries) {
|
|
256
|
+
if (e.endsWith('.py'))
|
|
257
|
+
add(e);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
catch { /* ignore */ }
|
|
261
|
+
// 3. Recursively scan source directories for key files (max ~80 files total)
|
|
262
|
+
const MAX_FILES = 80;
|
|
263
|
+
const sourceExtensions = ['.py', '.pyx', '.pxd'];
|
|
264
|
+
const importantNames = ['__init__.py', 'models.py', 'views.py', 'urls.py', 'admin.py',
|
|
265
|
+
'serializers.py', 'forms.py', 'signals.py', 'middleware.py', 'managers.py',
|
|
266
|
+
'utils.py', 'helpers.py', 'exceptions.py', 'constants.py', 'types.py',
|
|
267
|
+
'conf.py', 'settings.py', 'apps.py'];
|
|
268
|
+
function scanDir(dir, relPrefix, depth) {
|
|
269
|
+
if (depth > 5 || keyFiles.length >= MAX_FILES)
|
|
270
|
+
return;
|
|
271
|
+
try {
|
|
272
|
+
const entries = readdirSync(dir, { withFileTypes: true });
|
|
273
|
+
// Add __init__.py first (package markers)
|
|
274
|
+
for (const entry of entries) {
|
|
275
|
+
if (keyFiles.length >= MAX_FILES)
|
|
276
|
+
return;
|
|
277
|
+
if (entry.isFile() && entry.name === '__init__.py') {
|
|
278
|
+
add(relPrefix ? `${relPrefix}/${entry.name}` : entry.name);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
// Add important module names
|
|
282
|
+
for (const entry of entries) {
|
|
283
|
+
if (keyFiles.length >= MAX_FILES)
|
|
284
|
+
return;
|
|
285
|
+
if (entry.isFile() && importantNames.includes(entry.name)) {
|
|
286
|
+
add(relPrefix ? `${relPrefix}/${entry.name}` : entry.name);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
// Add remaining source files
|
|
290
|
+
for (const entry of entries) {
|
|
291
|
+
if (keyFiles.length >= MAX_FILES)
|
|
292
|
+
return;
|
|
293
|
+
if (entry.isFile() && sourceExtensions.some(ext => entry.name.endsWith(ext))) {
|
|
294
|
+
add(relPrefix ? `${relPrefix}/${entry.name}` : entry.name);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
// Recurse into subdirectories (skip hidden, __pycache__, .git, node_modules, etc.)
|
|
298
|
+
for (const entry of entries) {
|
|
299
|
+
if (keyFiles.length >= MAX_FILES)
|
|
300
|
+
return;
|
|
301
|
+
if (entry.isDirectory() && !entry.name.startsWith('.') &&
|
|
302
|
+
entry.name !== '__pycache__' && entry.name !== 'node_modules' &&
|
|
303
|
+
entry.name !== '.git' && entry.name !== 'venv' && entry.name !== '.tox') {
|
|
304
|
+
scanDir(join(dir, entry.name), relPrefix ? `${relPrefix}/${entry.name}` : entry.name, depth + 1);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
catch { /* permission error or similar */ }
|
|
309
|
+
}
|
|
310
|
+
// Detect source directories (common patterns)
|
|
311
|
+
const repo_name = task.repo.split('/')[1]?.replace(/-/g, '_');
|
|
312
|
+
const sourceDirs = ['src', 'lib', repo_name ?? '', task.repo.split('/')[1] ?? ''];
|
|
313
|
+
for (const dir of sourceDirs) {
|
|
314
|
+
if (dir && existsSync(join(repoDir, dir))) {
|
|
315
|
+
scanDir(join(repoDir, dir), dir, 0);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
// Also scan root level (some repos have source directly in root)
|
|
319
|
+
scanDir(repoDir, '', 0);
|
|
320
|
+
// 4. Store each file in spiral
|
|
321
|
+
for (const fileName of keyFiles) {
|
|
322
|
+
try {
|
|
323
|
+
const filePath = join(repoDir, fileName);
|
|
324
|
+
const content = readFileSync(filePath, 'utf-8');
|
|
325
|
+
// Truncate large files
|
|
326
|
+
const truncated = content.length > 4000 ? content.slice(0, 4000) + '\n... (truncated)' : content;
|
|
327
|
+
await spiral.store(`[${task.repo}] ${fileName}:\n${truncated}`, 'code', { tags: ['repo_context', task.repo], file: fileName });
|
|
328
|
+
}
|
|
329
|
+
catch {
|
|
330
|
+
// Skip files that can't be read
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
//# sourceMappingURL=runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/cli/bench/runner.ts"],"names":[],"mappings":"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"}
|