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.
- 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
package/LICENSE
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
GNU AFFERO GENERAL PUBLIC LICENSE
|
|
2
|
+
Version 3, 19 November 2007
|
|
3
|
+
|
|
4
|
+
Copyright (C) 2025 HelixMind
|
|
5
|
+
|
|
6
|
+
This program is free software: you can redistribute it and/or modify
|
|
7
|
+
it under the terms of the GNU Affero General Public License as published
|
|
8
|
+
by the Free Software Foundation, either version 3 of the License, or
|
|
9
|
+
(at your option) any later version.
|
|
10
|
+
|
|
11
|
+
This program is distributed in the hope that it will be useful,
|
|
12
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
|
+
GNU Affero General Public License for more details.
|
|
15
|
+
|
|
16
|
+
You should have received a copy of the GNU Affero General Public License
|
|
17
|
+
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
18
|
+
|
|
19
|
+
For the full license text, see:
|
|
20
|
+
https://www.gnu.org/licenses/agpl-3.0.txt
|
package/README.md
ADDED
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# 🧠 HelixMind
|
|
4
|
+
|
|
5
|
+
**AI Coding Assistant with Persistent Spiral Memory**
|
|
6
|
+
|
|
7
|
+
[](https://www.npmjs.com/package/helixmind)
|
|
8
|
+
[](LICENSE)
|
|
9
|
+
[](https://nodejs.org)
|
|
10
|
+
[](https://www.typescriptlang.org/)
|
|
11
|
+
|
|
12
|
+
*Remembers context across sessions. Learns from every interaction.*
|
|
13
|
+
|
|
14
|
+
[Installation](#-installation) • [Features](#-features) • [Quick Start](#-quick-start) • [Documentation](#-documentation)
|
|
15
|
+
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## ✨ Features
|
|
21
|
+
|
|
22
|
+
<table>
|
|
23
|
+
<tr>
|
|
24
|
+
<td width="50%">
|
|
25
|
+
|
|
26
|
+
### 🔄 Spiral Memory
|
|
27
|
+
**5-level hierarchical memory** that persists across sessions. Context flows between levels based on relevance and recency.
|
|
28
|
+
|
|
29
|
+
</td>
|
|
30
|
+
<td width="50%">
|
|
31
|
+
|
|
32
|
+
### 🤖 Multi-Provider
|
|
33
|
+
**Claude, GPT-4, Ollama** and more. Switch seamlessly between AI providers.
|
|
34
|
+
|
|
35
|
+
</td>
|
|
36
|
+
</tr>
|
|
37
|
+
<tr>
|
|
38
|
+
<td width="50%">
|
|
39
|
+
|
|
40
|
+
### ⚡ Autonomous Mode
|
|
41
|
+
AI can **edit files, run commands, and commit changes** — fully autonomous when needed.
|
|
42
|
+
|
|
43
|
+
</td>
|
|
44
|
+
<td width="50%">
|
|
45
|
+
|
|
46
|
+
### 🎯 Smart Context
|
|
47
|
+
**Auto-assembles relevant code** from your project. Understands dependencies and patterns.
|
|
48
|
+
|
|
49
|
+
</td>
|
|
50
|
+
</tr>
|
|
51
|
+
</table>
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 🚀 Installation
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
# Run directly (no install needed)
|
|
59
|
+
npx helixmind
|
|
60
|
+
|
|
61
|
+
# Or install globally
|
|
62
|
+
npm install -g helixmind
|
|
63
|
+
helixmind
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## 🎮 Quick Start
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
# Start interactive chat
|
|
72
|
+
npx helixmind
|
|
73
|
+
|
|
74
|
+
# Initialize in current project
|
|
75
|
+
npx helixmind init
|
|
76
|
+
|
|
77
|
+
# Run autonomous task
|
|
78
|
+
npx helixmind "fix all lint errors in src/"
|
|
79
|
+
|
|
80
|
+
# Continue last session
|
|
81
|
+
npx helixmind --continue
|
|
82
|
+
|
|
83
|
+
# Use specific model
|
|
84
|
+
npx helixmind --model claude-sonnet-4-20250514
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## 📋 Commands
|
|
90
|
+
|
|
91
|
+
| Command | Description |
|
|
92
|
+
|:--------|:------------|
|
|
93
|
+
| `helixmind` | 🎯 Start interactive chat |
|
|
94
|
+
| `helixmind init` | ⚙️ Initialize HelixMind in project |
|
|
95
|
+
| `helixmind --continue` | ▶️ Resume last session |
|
|
96
|
+
| `helixmind --model <name>` | 🤖 Use specific model |
|
|
97
|
+
| `helixmind --help` | ❓ Show all options |
|
|
98
|
+
|
|
99
|
+
### ⌨️ Keyboard Shortcuts
|
|
100
|
+
|
|
101
|
+
| Key | Action |
|
|
102
|
+
|:----|:-------|
|
|
103
|
+
| `Ctrl+C` | 🛑 Exit |
|
|
104
|
+
| `Ctrl+L` | 🧹 Clear screen |
|
|
105
|
+
| `Ctrl+D` | 🐛 Toggle debug mode |
|
|
106
|
+
| `Tab` | ✨ Autocomplete command |
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## 🧠 Memory Architecture
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
┌─────────────────────────────────────────────────────┐
|
|
114
|
+
│ Level 1 — 🔍 Focus │
|
|
115
|
+
│ Most relevant, recent context │
|
|
116
|
+
├─────────────────────────────────────────────────────┤
|
|
117
|
+
│ Level 2 — ⚡ Active │
|
|
118
|
+
│ Related files, dependencies │
|
|
119
|
+
├─────────────────────────────────────────────────────┤
|
|
120
|
+
│ Level 3 — 📚 Reference │
|
|
121
|
+
│ Decisions, patterns, code structure │
|
|
122
|
+
├─────────────────────────────────────────────────────┤
|
|
123
|
+
│ Level 4 — 📦 Archive │
|
|
124
|
+
│ Compressed summaries, old sessions │
|
|
125
|
+
├─────────────────────────────────────────────────────┤
|
|
126
|
+
│ Level 5 — 🗄️ Deep Archive │
|
|
127
|
+
│ Long-term knowledge, project history │
|
|
128
|
+
└─────────────────────────────────────────────────────┘
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Context automatically flows between levels based on relevance and recency.
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## ⚙️ Configuration
|
|
136
|
+
|
|
137
|
+
Create `.helixmind/config.json` in your project:
|
|
138
|
+
|
|
139
|
+
```json
|
|
140
|
+
{
|
|
141
|
+
"provider": "anthropic",
|
|
142
|
+
"model": "claude-sonnet-4-20250514",
|
|
143
|
+
"brainEnabled": true,
|
|
144
|
+
"permissions": {
|
|
145
|
+
"writeFiles": true,
|
|
146
|
+
"runCommands": true,
|
|
147
|
+
"gitCommit": true
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### 🔑 Environment Variables
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
ANTHROPIC_API_KEY=sk-ant-... # For Claude
|
|
156
|
+
OPENAI_API_KEY=sk-... # For OpenAI/GPT
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## 🛠️ Tech Stack
|
|
162
|
+
|
|
163
|
+
| Category | Technology |
|
|
164
|
+
|:---------|:-----------|
|
|
165
|
+
| Language |  |
|
|
166
|
+
| AI SDKs |   |
|
|
167
|
+
| Database |  |
|
|
168
|
+
| Embeddings |  |
|
|
169
|
+
| Testing |  |
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## 🏗️ Development
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
# Clone repo
|
|
177
|
+
git clone https://github.com/DancingTedDanson011/HelixMind.git
|
|
178
|
+
cd HelixMind
|
|
179
|
+
|
|
180
|
+
# Install dependencies
|
|
181
|
+
npm install
|
|
182
|
+
|
|
183
|
+
# Build
|
|
184
|
+
npm run build
|
|
185
|
+
|
|
186
|
+
# Run in dev mode
|
|
187
|
+
npm run dev
|
|
188
|
+
|
|
189
|
+
# Run tests
|
|
190
|
+
npm test
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## 📄 License
|
|
196
|
+
|
|
197
|
+
[AGPL-3.0](LICENSE) — Free for open-source use. Commercial licenses available.
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
<div align="center">
|
|
202
|
+
|
|
203
|
+
**Made with ❤️ by [HelixMind](https://github.com/DancingTedDanson011)**
|
|
204
|
+
|
|
205
|
+
[⬆ Back to Top](#-helixmind)
|
|
206
|
+
|
|
207
|
+
</div>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const SECURITY_PROMPT = "Perform a comprehensive SECURITY AUDIT of this codebase.\n\nCheck every file systematically for:\n1. **Command Injection** \u2014 user input passed to shell commands without sanitization\n2. **Path Traversal** \u2014 user-controlled paths that could escape the project root\n3. **XSS / Injection** \u2014 unsanitized output in HTML/templates\n4. **Hardcoded Secrets** \u2014 API keys, passwords, tokens in source code\n5. **Insecure Dependencies** \u2014 check package.json for known vulnerable packages\n6. **Missing Input Validation** \u2014 unvalidated user input at boundaries\n7. **Unsafe File Operations** \u2014 writing to arbitrary paths, following symlinks\n8. **Information Disclosure** \u2014 verbose error messages, debug endpoints\n9. **Authentication Issues** \u2014 missing auth checks, weak token generation\n10. **Race Conditions** \u2014 TOCTOU, concurrent access without locks\n\nFor EACH finding, report:\n- **Severity**: CRITICAL / HIGH / MEDIUM / LOW\n- **File**: exact file path and line number\n- **Issue**: what's wrong and why it's dangerous\n- **Fix**: specific code change needed\n\nAfter the report, automatically fix all CRITICAL and HIGH severity issues.";
|
|
2
|
+
export interface AutonomousCallbacks {
|
|
3
|
+
sendMessage: (prompt: string) => Promise<string>;
|
|
4
|
+
isAborted: () => boolean;
|
|
5
|
+
onRoundStart: (round: number) => void;
|
|
6
|
+
onRoundEnd: (round: number, summary: string) => void;
|
|
7
|
+
updateStatus: () => void;
|
|
8
|
+
}
|
|
9
|
+
export declare function runAutonomousLoop(callbacks: AutonomousCallbacks, initialGoal?: string): Promise<number>;
|
|
10
|
+
//# sourceMappingURL=autonomous.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autonomous.d.ts","sourceRoot":"","sources":["../../../src/cli/agent/autonomous.ts"],"names":[],"mappings":"AAqCA,eAAO,MAAM,eAAe,sqCAoB+C,CAAC;AAE5E,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACjD,SAAS,EAAE,MAAM,OAAO,CAAC;IACzB,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AA+BD,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,mBAAmB,EAC9B,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CAiFjB"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Autonomous work mode — HelixMind continuously scans and fixes issues.
|
|
3
|
+
* Runs until nothing more to optimize or /stop is called.
|
|
4
|
+
*/
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
import { renderInfo } from '../ui/chat-view.js';
|
|
7
|
+
const SCAN_PROMPT = `You are in AUTONOMOUS MODE. Scan this repository thoroughly for the most impactful issue to fix.
|
|
8
|
+
|
|
9
|
+
Priority order:
|
|
10
|
+
1. CRITICAL bugs or logic errors that cause crashes or wrong behavior
|
|
11
|
+
2. Security vulnerabilities (injection, path traversal, hardcoded secrets)
|
|
12
|
+
3. Missing error handling that could cause unhandled exceptions
|
|
13
|
+
4. Broken or missing tests for important functionality
|
|
14
|
+
5. Performance bottlenecks
|
|
15
|
+
6. Dead code, unused imports, inconsistent patterns
|
|
16
|
+
7. Code quality improvements
|
|
17
|
+
|
|
18
|
+
RULES:
|
|
19
|
+
- Pick ONE issue — the most impactful one
|
|
20
|
+
- Fix it completely (code + test if applicable)
|
|
21
|
+
- End with a single-line summary starting with "DONE:" describing what you fixed
|
|
22
|
+
- If you genuinely cannot find ANY issue worth fixing, respond with exactly: ALL_TASKS_COMPLETE`;
|
|
23
|
+
function continuePrompt(completed) {
|
|
24
|
+
return `You are in AUTONOMOUS MODE (round ${completed.length + 1}).
|
|
25
|
+
|
|
26
|
+
Already completed:
|
|
27
|
+
${completed.map((t, i) => ` ${i + 1}. ${t}`).join('\n')}
|
|
28
|
+
|
|
29
|
+
Continue scanning for MORE issues in DIFFERENT areas of the codebase.
|
|
30
|
+
Pick the next most impactful issue and fix it completely.
|
|
31
|
+
|
|
32
|
+
End with a single-line summary starting with "DONE:" describing what you fixed.
|
|
33
|
+
If you genuinely cannot find anything more to improve: ALL_TASKS_COMPLETE`;
|
|
34
|
+
}
|
|
35
|
+
export const SECURITY_PROMPT = `Perform a comprehensive SECURITY AUDIT of this codebase.
|
|
36
|
+
|
|
37
|
+
Check every file systematically for:
|
|
38
|
+
1. **Command Injection** — user input passed to shell commands without sanitization
|
|
39
|
+
2. **Path Traversal** — user-controlled paths that could escape the project root
|
|
40
|
+
3. **XSS / Injection** — unsanitized output in HTML/templates
|
|
41
|
+
4. **Hardcoded Secrets** — API keys, passwords, tokens in source code
|
|
42
|
+
5. **Insecure Dependencies** — check package.json for known vulnerable packages
|
|
43
|
+
6. **Missing Input Validation** — unvalidated user input at boundaries
|
|
44
|
+
7. **Unsafe File Operations** — writing to arbitrary paths, following symlinks
|
|
45
|
+
8. **Information Disclosure** — verbose error messages, debug endpoints
|
|
46
|
+
9. **Authentication Issues** — missing auth checks, weak token generation
|
|
47
|
+
10. **Race Conditions** — TOCTOU, concurrent access without locks
|
|
48
|
+
|
|
49
|
+
For EACH finding, report:
|
|
50
|
+
- **Severity**: CRITICAL / HIGH / MEDIUM / LOW
|
|
51
|
+
- **File**: exact file path and line number
|
|
52
|
+
- **Issue**: what's wrong and why it's dangerous
|
|
53
|
+
- **Fix**: specific code change needed
|
|
54
|
+
|
|
55
|
+
After the report, automatically fix all CRITICAL and HIGH severity issues.`;
|
|
56
|
+
function goalPrompt(goal) {
|
|
57
|
+
return `You are in AUTONOMOUS MODE with a specific goal.
|
|
58
|
+
|
|
59
|
+
GOAL: ${goal}
|
|
60
|
+
|
|
61
|
+
Work on this goal step by step. Break it down into subtasks if needed.
|
|
62
|
+
Fix, implement, or change whatever is necessary to achieve the goal.
|
|
63
|
+
|
|
64
|
+
RULES:
|
|
65
|
+
- Focus exclusively on the given goal
|
|
66
|
+
- Work methodically — one subtask at a time
|
|
67
|
+
- End each round with a single-line summary starting with "DONE:" describing what you accomplished
|
|
68
|
+
- When the goal is fully achieved, respond with exactly: ALL_TASKS_COMPLETE`;
|
|
69
|
+
}
|
|
70
|
+
function continueGoalPrompt(goal, completed) {
|
|
71
|
+
return `You are in AUTONOMOUS MODE (round ${completed.length + 1}).
|
|
72
|
+
|
|
73
|
+
GOAL: ${goal}
|
|
74
|
+
|
|
75
|
+
Already completed:
|
|
76
|
+
${completed.map((t, i) => ` ${i + 1}. ${t}`).join('\n')}
|
|
77
|
+
|
|
78
|
+
Continue working towards the goal. Pick the next subtask and complete it.
|
|
79
|
+
|
|
80
|
+
End with a single-line summary starting with "DONE:" describing what you accomplished.
|
|
81
|
+
When the goal is fully achieved: ALL_TASKS_COMPLETE`;
|
|
82
|
+
}
|
|
83
|
+
export async function runAutonomousLoop(callbacks, initialGoal) {
|
|
84
|
+
const completed = [];
|
|
85
|
+
let round = 0;
|
|
86
|
+
let goal = initialGoal;
|
|
87
|
+
const d = chalk.dim;
|
|
88
|
+
const c = chalk.hex('#00d4ff');
|
|
89
|
+
process.stdout.write('\n');
|
|
90
|
+
process.stdout.write(d('\u256D\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256E') + '\n');
|
|
91
|
+
process.stdout.write(d('\u2502 ') + c('\u{1F504} AUTONOMOUS MODE') + d(' \u2502') + '\n');
|
|
92
|
+
if (goal) {
|
|
93
|
+
process.stdout.write(d('\u2502') + d(' \u2502') + '\n');
|
|
94
|
+
// Truncate goal to fit in the box (39 chars max)
|
|
95
|
+
const goalDisplay = goal.length > 39 ? goal.slice(0, 36) + '...' : goal;
|
|
96
|
+
const padding = ' '.repeat(Math.max(0, 39 - goalDisplay.length));
|
|
97
|
+
process.stdout.write(d('\u2502 ') + chalk.white.bold('Goal: ') + goalDisplay + padding + d('\u2502') + '\n');
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
process.stdout.write(d('\u2502') + d(' \u2502') + '\n');
|
|
101
|
+
process.stdout.write(d('\u2502 ') + 'HelixMind will continuously scan and fix' + d(' \u2502') + '\n');
|
|
102
|
+
process.stdout.write(d('\u2502 ') + 'issues until nothing remains.' + d(' \u2502') + '\n');
|
|
103
|
+
}
|
|
104
|
+
process.stdout.write(d('\u2502') + d(' \u2502') + '\n');
|
|
105
|
+
process.stdout.write(d('\u2502 ') + d('/stop or ESC to stop') + d(' \u2502') + '\n');
|
|
106
|
+
process.stdout.write(d('\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256F') + '\n\n');
|
|
107
|
+
while (!callbacks.isAborted()) {
|
|
108
|
+
round++;
|
|
109
|
+
callbacks.onRoundStart(round);
|
|
110
|
+
callbacks.updateStatus();
|
|
111
|
+
let prompt;
|
|
112
|
+
if (goal) {
|
|
113
|
+
prompt = round === 1 ? goalPrompt(goal) : continueGoalPrompt(goal, completed);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
prompt = round === 1 ? SCAN_PROMPT : continuePrompt(completed);
|
|
117
|
+
}
|
|
118
|
+
process.stdout.write(chalk.dim(` \u2500\u2500 Round ${round} `) + chalk.dim('\u2500'.repeat(35)) + '\n');
|
|
119
|
+
try {
|
|
120
|
+
const resultText = await callbacks.sendMessage(prompt);
|
|
121
|
+
if (callbacks.isAborted())
|
|
122
|
+
break;
|
|
123
|
+
// Check if agent says it's done
|
|
124
|
+
if (resultText.includes('ALL_TASKS_COMPLETE')) {
|
|
125
|
+
if (goal) {
|
|
126
|
+
// Goal achieved — transition to general scan mode
|
|
127
|
+
process.stdout.write('\n');
|
|
128
|
+
renderInfo(chalk.green(` \u2705 Goal achieved (${completed.length} tasks). Switching to general scan mode...`));
|
|
129
|
+
process.stdout.write('\n');
|
|
130
|
+
goal = undefined; // switch to scan mode for subsequent rounds
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
// General scan found nothing — truly done
|
|
135
|
+
process.stdout.write('\n');
|
|
136
|
+
renderInfo(chalk.green(` \u2705 Autonomous mode complete \u2014 ${completed.length} tasks finished.`));
|
|
137
|
+
process.stdout.write('\n');
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// Extract summary from "DONE: ..." line or last line
|
|
142
|
+
const summary = extractSummary(resultText);
|
|
143
|
+
completed.push(summary);
|
|
144
|
+
callbacks.onRoundEnd(round, summary);
|
|
145
|
+
renderInfo(chalk.green(` \u2713 Round ${round}: ${summary}`));
|
|
146
|
+
}
|
|
147
|
+
catch (err) {
|
|
148
|
+
if (callbacks.isAborted())
|
|
149
|
+
break;
|
|
150
|
+
renderInfo(chalk.red(` \u2717 Round ${round} error: ${err}`));
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
if (callbacks.isAborted()) {
|
|
154
|
+
process.stdout.write('\n');
|
|
155
|
+
renderInfo(chalk.yellow(` \u23F9 Autonomous mode stopped after ${completed.length} tasks.`));
|
|
156
|
+
process.stdout.write('\n');
|
|
157
|
+
}
|
|
158
|
+
return completed.length;
|
|
159
|
+
}
|
|
160
|
+
function extractSummary(text) {
|
|
161
|
+
// Look for "DONE: ..." line
|
|
162
|
+
const doneMatch = text.match(/DONE:\s*(.+)/i);
|
|
163
|
+
if (doneMatch) {
|
|
164
|
+
const s = doneMatch[1].trim();
|
|
165
|
+
return s.length > 120 ? s.slice(0, 117) + '...' : s;
|
|
166
|
+
}
|
|
167
|
+
// Fallback: last non-empty line
|
|
168
|
+
const lines = text.trim().split('\n').filter(l => l.trim());
|
|
169
|
+
const last = lines[lines.length - 1]?.trim() || text.slice(0, 100);
|
|
170
|
+
return last.length > 120 ? last.slice(0, 117) + '...' : last;
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=autonomous.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autonomous.js","sourceRoot":"","sources":["../../../src/cli/agent/autonomous.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { LLMProvider, ToolMessage } from '../providers/types.js';
|
|
2
|
+
import { type ToolContext } from './tools/registry.js';
|
|
3
|
+
import { PermissionManager } from './permissions.js';
|
|
4
|
+
import type { CheckpointStore } from '../checkpoints/store.js';
|
|
5
|
+
import type { TaskStep } from '../ui/activity.js';
|
|
6
|
+
import type { SessionBuffer } from '../context/session-buffer.js';
|
|
7
|
+
export declare class AgentAbortError extends Error {
|
|
8
|
+
constructor(message?: string);
|
|
9
|
+
}
|
|
10
|
+
export interface AgentLoopOptions {
|
|
11
|
+
provider: LLMProvider;
|
|
12
|
+
systemPrompt: string;
|
|
13
|
+
permissions: PermissionManager;
|
|
14
|
+
toolContext: ToolContext;
|
|
15
|
+
checkpointStore?: CheckpointStore;
|
|
16
|
+
sessionBuffer?: SessionBuffer;
|
|
17
|
+
onTokensUsed?: (input: number, output: number) => void;
|
|
18
|
+
onToolCall?: (name: string) => void;
|
|
19
|
+
onStepStart?: (num: number, tool: string, label: string) => void;
|
|
20
|
+
onStepEnd?: (num: number, tool: string, status: 'done' | 'error', error?: string) => void;
|
|
21
|
+
/** Called before each LLM API call — use to restart activity indicator */
|
|
22
|
+
onThinking?: () => void;
|
|
23
|
+
/** Called before rendering the final answer — use to stop activity */
|
|
24
|
+
onBeforeAnswer?: () => void;
|
|
25
|
+
maxIterations?: number;
|
|
26
|
+
}
|
|
27
|
+
export interface AgentLoopResult {
|
|
28
|
+
text: string;
|
|
29
|
+
toolCalls: number;
|
|
30
|
+
tokensUsed: {
|
|
31
|
+
input: number;
|
|
32
|
+
output: number;
|
|
33
|
+
};
|
|
34
|
+
aborted: boolean;
|
|
35
|
+
steps: TaskStep[];
|
|
36
|
+
errors: string[];
|
|
37
|
+
/** The full conversation history after this loop — caller must adopt this */
|
|
38
|
+
updatedHistory: ToolMessage[];
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The agent loop: sends messages to the LLM, executes tool calls,
|
|
42
|
+
* feeds results back, and repeats until the model is done.
|
|
43
|
+
*
|
|
44
|
+
* Supports pause/resume/abort via the AgentController.
|
|
45
|
+
* AbortController cancels in-flight HTTP requests on emergency stop.
|
|
46
|
+
*/
|
|
47
|
+
export declare function runAgentLoop(userMessage: string, conversationHistory: ToolMessage[], options: AgentLoopOptions, controller?: AgentController): Promise<AgentLoopResult>;
|
|
48
|
+
/**
|
|
49
|
+
* Controller for pausing/resuming/aborting the agent loop.
|
|
50
|
+
*
|
|
51
|
+
* Uses an AbortController for hard cancellation of in-flight HTTP requests.
|
|
52
|
+
* ESC → abort() → AbortController.abort() → HTTP request cancelled immediately.
|
|
53
|
+
*/
|
|
54
|
+
export declare class AgentController {
|
|
55
|
+
private _paused;
|
|
56
|
+
private _aborted;
|
|
57
|
+
private _abortController;
|
|
58
|
+
private pauseResolve;
|
|
59
|
+
get isPaused(): boolean;
|
|
60
|
+
get isAborted(): boolean;
|
|
61
|
+
/** AbortSignal to pass to HTTP requests for hard cancellation */
|
|
62
|
+
get signal(): AbortSignal;
|
|
63
|
+
pause(): void;
|
|
64
|
+
resume(): void;
|
|
65
|
+
/**
|
|
66
|
+
* EMERGENCY STOP — aborts immediately:
|
|
67
|
+
* 1. Sets abort flag (checked between steps)
|
|
68
|
+
* 2. Cancels AbortController (kills in-flight HTTP requests)
|
|
69
|
+
* 3. Resolves any pending pause promise
|
|
70
|
+
*/
|
|
71
|
+
abort(): void;
|
|
72
|
+
checkPause(): Promise<void>;
|
|
73
|
+
/** Reset state for a new round — creates fresh AbortController */
|
|
74
|
+
reset(): void;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=loop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../../src/cli/agent/loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EAIZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAkC,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAGlE,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,GAAE,MAAwB;CAI9C;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,WAAW,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,iBAAiB,CAAC;IAC/B,WAAW,EAAE,WAAW,CAAC;IACzB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjE,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1F,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,6EAA6E;IAC7E,cAAc,EAAE,WAAW,EAAE,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,EACnB,mBAAmB,EAAE,WAAW,EAAE,EAClC,OAAO,EAAE,gBAAgB,EACzB,UAAU,CAAC,EAAE,eAAe,GAC3B,OAAO,CAAC,eAAe,CAAC,CAoR1B;AA2BD;;;;;GAKG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,gBAAgB,CAA0C;IAClE,OAAO,CAAC,YAAY,CAA6B;IAEjD,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,iEAAiE;IACjE,IAAI,MAAM,IAAI,WAAW,CAExB;IAED,KAAK,IAAI,IAAI;IAIb,MAAM,IAAI,IAAI;IASd;;;;;OAKG;IACH,KAAK,IAAI,IAAI;IAUP,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAcjC,kEAAkE;IAClE,KAAK,IAAI,IAAI;CAMd"}
|