@fraziym/axoniz 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 +21 -0
- package/README.md +76 -0
- package/dist/agents/definition.d.ts +15 -0
- package/dist/agents/definition.d.ts.map +1 -0
- package/dist/agents/definition.js +41 -0
- package/dist/agents/definition.js.map +1 -0
- package/dist/agents/index.d.ts +12 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +11 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/registry.d.ts +17 -0
- package/dist/agents/registry.d.ts.map +1 -0
- package/dist/agents/registry.js +23 -0
- package/dist/agents/registry.js.map +1 -0
- package/dist/agents/specialized.d.ts +31 -0
- package/dist/agents/specialized.d.ts.map +1 -0
- package/dist/agents/specialized.js +75 -0
- package/dist/agents/specialized.js.map +1 -0
- package/dist/awareness/index.d.ts +14 -0
- package/dist/awareness/index.d.ts.map +1 -0
- package/dist/awareness/index.js +22 -0
- package/dist/awareness/index.js.map +1 -0
- package/dist/awareness/service.d.ts +180 -0
- package/dist/awareness/service.d.ts.map +1 -0
- package/dist/awareness/service.js +789 -0
- package/dist/awareness/service.js.map +1 -0
- package/dist/cli/entry.d.ts +13 -0
- package/dist/cli/entry.d.ts.map +1 -0
- package/dist/cli/entry.js +35 -0
- package/dist/cli/entry.js.map +1 -0
- package/dist/comms/telegram.d.ts +41 -0
- package/dist/comms/telegram.d.ts.map +1 -0
- package/dist/comms/telegram.js +332 -0
- package/dist/comms/telegram.js.map +1 -0
- package/dist/core/agent.d.ts +252 -0
- package/dist/core/agent.d.ts.map +1 -0
- package/dist/core/agent.js +1399 -0
- package/dist/core/agent.js.map +1 -0
- package/dist/core/auth.d.ts +23 -0
- package/dist/core/auth.d.ts.map +1 -0
- package/dist/core/auth.js +113 -0
- package/dist/core/auth.js.map +1 -0
- package/dist/core/authority.d.ts +118 -0
- package/dist/core/authority.d.ts.map +1 -0
- package/dist/core/authority.js +402 -0
- package/dist/core/authority.js.map +1 -0
- package/dist/core/backend/async_queue.d.ts +17 -0
- package/dist/core/backend/async_queue.d.ts.map +1 -0
- package/dist/core/backend/async_queue.js +66 -0
- package/dist/core/backend/async_queue.js.map +1 -0
- package/dist/core/backend/index.d.ts +24 -0
- package/dist/core/backend/index.d.ts.map +1 -0
- package/dist/core/backend/index.js +128 -0
- package/dist/core/backend/index.js.map +1 -0
- package/dist/core/backend/llama_server.d.ts +39 -0
- package/dist/core/backend/llama_server.d.ts.map +1 -0
- package/dist/core/backend/llama_server.js +182 -0
- package/dist/core/backend/llama_server.js.map +1 -0
- package/dist/core/backend/llamacpp.d.ts +40 -0
- package/dist/core/backend/llamacpp.d.ts.map +1 -0
- package/dist/core/backend/llamacpp.js +200 -0
- package/dist/core/backend/llamacpp.js.map +1 -0
- package/dist/core/backend/lmstudio.d.ts +53 -0
- package/dist/core/backend/lmstudio.d.ts.map +1 -0
- package/dist/core/backend/lmstudio.js +274 -0
- package/dist/core/backend/lmstudio.js.map +1 -0
- package/dist/core/backend/ollama.d.ts +25 -0
- package/dist/core/backend/ollama.d.ts.map +1 -0
- package/dist/core/backend/ollama.js +86 -0
- package/dist/core/backend/ollama.js.map +1 -0
- package/dist/core/backend/openai.d.ts +27 -0
- package/dist/core/backend/openai.d.ts.map +1 -0
- package/dist/core/backend/openai.js +84 -0
- package/dist/core/backend/openai.js.map +1 -0
- package/dist/core/backend/types.d.ts +73 -0
- package/dist/core/backend/types.d.ts.map +1 -0
- package/dist/core/backend/types.js +137 -0
- package/dist/core/backend/types.js.map +1 -0
- package/dist/core/chat_store.d.ts +77 -0
- package/dist/core/chat_store.d.ts.map +1 -0
- package/dist/core/chat_store.js +332 -0
- package/dist/core/chat_store.js.map +1 -0
- package/dist/core/cli.d.ts +82 -0
- package/dist/core/cli.d.ts.map +1 -0
- package/dist/core/cli.js +602 -0
- package/dist/core/cli.js.map +1 -0
- package/dist/core/config.d.ts +127 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +295 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/debug.d.ts +8 -0
- package/dist/core/debug.d.ts.map +1 -0
- package/dist/core/debug.js +8 -0
- package/dist/core/debug.js.map +1 -0
- package/dist/core/downloader.d.ts +31 -0
- package/dist/core/downloader.d.ts.map +1 -0
- package/dist/core/downloader.js +180 -0
- package/dist/core/downloader.js.map +1 -0
- package/dist/core/errors.d.ts +80 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +134 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/extras.d.ts +160 -0
- package/dist/core/extras.d.ts.map +1 -0
- package/dist/core/extras.js +553 -0
- package/dist/core/extras.js.map +1 -0
- package/dist/core/health.d.ts +27 -0
- package/dist/core/health.d.ts.map +1 -0
- package/dist/core/health.js +96 -0
- package/dist/core/health.js.map +1 -0
- package/dist/core/history.d.ts +50 -0
- package/dist/core/history.d.ts.map +1 -0
- package/dist/core/history.js +276 -0
- package/dist/core/history.js.map +1 -0
- package/dist/core/index.d.ts +6 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +6 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/intelligence/ast_index.d.ts +255 -0
- package/dist/core/intelligence/ast_index.d.ts.map +1 -0
- package/dist/core/intelligence/ast_index.js +1369 -0
- package/dist/core/intelligence/ast_index.js.map +1 -0
- package/dist/core/intelligence/confidence.d.ts +113 -0
- package/dist/core/intelligence/confidence.d.ts.map +1 -0
- package/dist/core/intelligence/confidence.js +298 -0
- package/dist/core/intelligence/confidence.js.map +1 -0
- package/dist/core/intelligence/context_compressor.d.ts +80 -0
- package/dist/core/intelligence/context_compressor.d.ts.map +1 -0
- package/dist/core/intelligence/context_compressor.js +245 -0
- package/dist/core/intelligence/context_compressor.js.map +1 -0
- package/dist/core/intelligence/daemon.d.ts +247 -0
- package/dist/core/intelligence/daemon.d.ts.map +1 -0
- package/dist/core/intelligence/daemon.js +842 -0
- package/dist/core/intelligence/daemon.js.map +1 -0
- package/dist/core/intelligence/index.d.ts +60 -0
- package/dist/core/intelligence/index.d.ts.map +1 -0
- package/dist/core/intelligence/index.js +101 -0
- package/dist/core/intelligence/index.js.map +1 -0
- package/dist/core/intelligence/predictor.d.ts +246 -0
- package/dist/core/intelligence/predictor.d.ts.map +1 -0
- package/dist/core/intelligence/predictor.js +590 -0
- package/dist/core/intelligence/predictor.js.map +1 -0
- package/dist/core/intelligence/reflex.d.ts +84 -0
- package/dist/core/intelligence/reflex.d.ts.map +1 -0
- package/dist/core/intelligence/reflex.js +344 -0
- package/dist/core/intelligence/reflex.js.map +1 -0
- package/dist/core/intelligence/self_correction.d.ts +121 -0
- package/dist/core/intelligence/self_correction.d.ts.map +1 -0
- package/dist/core/intelligence/self_correction.js +327 -0
- package/dist/core/intelligence/self_correction.js.map +1 -0
- package/dist/core/intelligence/skill_distiller.d.ts +100 -0
- package/dist/core/intelligence/skill_distiller.d.ts.map +1 -0
- package/dist/core/intelligence/skill_distiller.js +246 -0
- package/dist/core/intelligence/skill_distiller.js.map +1 -0
- package/dist/core/intelligence/swarm.d.ts +330 -0
- package/dist/core/intelligence/swarm.d.ts.map +1 -0
- package/dist/core/intelligence/swarm.js +1064 -0
- package/dist/core/intelligence/swarm.js.map +1 -0
- package/dist/core/intelligence/trajectory.d.ts +107 -0
- package/dist/core/intelligence/trajectory.d.ts.map +1 -0
- package/dist/core/intelligence/trajectory.js +330 -0
- package/dist/core/intelligence/trajectory.js.map +1 -0
- package/dist/core/logger.d.ts +111 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +640 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/loop.d.ts +123 -0
- package/dist/core/loop.d.ts.map +1 -0
- package/dist/core/loop.js +423 -0
- package/dist/core/loop.js.map +1 -0
- package/dist/core/memory.d.ts +81 -0
- package/dist/core/memory.d.ts.map +1 -0
- package/dist/core/memory.js +328 -0
- package/dist/core/memory.js.map +1 -0
- package/dist/core/metrics.d.ts +29 -0
- package/dist/core/metrics.d.ts.map +1 -0
- package/dist/core/metrics.js +109 -0
- package/dist/core/metrics.js.map +1 -0
- package/dist/core/models.d.ts +51 -0
- package/dist/core/models.d.ts.map +1 -0
- package/dist/core/models.js +146 -0
- package/dist/core/models.js.map +1 -0
- package/dist/core/optimizer.d.ts +34 -0
- package/dist/core/optimizer.d.ts.map +1 -0
- package/dist/core/optimizer.js +131 -0
- package/dist/core/optimizer.js.map +1 -0
- package/dist/core/persona.d.ts +35 -0
- package/dist/core/persona.d.ts.map +1 -0
- package/dist/core/persona.js +126 -0
- package/dist/core/persona.js.map +1 -0
- package/dist/core/rate_limit.d.ts +23 -0
- package/dist/core/rate_limit.d.ts.map +1 -0
- package/dist/core/rate_limit.js +62 -0
- package/dist/core/rate_limit.js.map +1 -0
- package/dist/core/runner.d.ts +63 -0
- package/dist/core/runner.d.ts.map +1 -0
- package/dist/core/runner.js +671 -0
- package/dist/core/runner.js.map +1 -0
- package/dist/core/stream_parser.d.ts +43 -0
- package/dist/core/stream_parser.d.ts.map +1 -0
- package/dist/core/stream_parser.js +140 -0
- package/dist/core/stream_parser.js.map +1 -0
- package/dist/core/tool_schemas.d.ts +26 -0
- package/dist/core/tool_schemas.d.ts.map +1 -0
- package/dist/core/tool_schemas.js +124 -0
- package/dist/core/tool_schemas.js.map +1 -0
- package/dist/core/which.d.ts +2 -0
- package/dist/core/which.d.ts.map +1 -0
- package/dist/core/which.js +35 -0
- package/dist/core/which.js.map +1 -0
- package/dist/goals/index.d.ts +9 -0
- package/dist/goals/index.d.ts.map +1 -0
- package/dist/goals/index.js +17 -0
- package/dist/goals/index.js.map +1 -0
- package/dist/goals/service.d.ts +115 -0
- package/dist/goals/service.d.ts.map +1 -0
- package/dist/goals/service.js +415 -0
- package/dist/goals/service.js.map +1 -0
- package/dist/goals/types.d.ts +47 -0
- package/dist/goals/types.d.ts.map +1 -0
- package/dist/goals/types.js +66 -0
- package/dist/goals/types.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/autonomous_startup.d.ts +51 -0
- package/dist/integrations/autonomous_startup.d.ts.map +1 -0
- package/dist/integrations/autonomous_startup.js +419 -0
- package/dist/integrations/autonomous_startup.js.map +1 -0
- package/dist/integrations/goose.d.ts +105 -0
- package/dist/integrations/goose.d.ts.map +1 -0
- package/dist/integrations/goose.js +408 -0
- package/dist/integrations/goose.js.map +1 -0
- package/dist/integrations/index.d.ts +21 -0
- package/dist/integrations/index.d.ts.map +1 -0
- package/dist/integrations/index.js +17 -0
- package/dist/integrations/index.js.map +1 -0
- package/dist/integrations/mcp.d.ts +73 -0
- package/dist/integrations/mcp.d.ts.map +1 -0
- package/dist/integrations/mcp.js +307 -0
- package/dist/integrations/mcp.js.map +1 -0
- package/dist/integrations/mempalace.d.ts +18 -0
- package/dist/integrations/mempalace.d.ts.map +1 -0
- package/dist/integrations/mempalace.js +25 -0
- package/dist/integrations/mempalace.js.map +1 -0
- package/dist/integrations/multi_agent.d.ts +82 -0
- package/dist/integrations/multi_agent.d.ts.map +1 -0
- package/dist/integrations/multi_agent.js +280 -0
- package/dist/integrations/multi_agent.js.map +1 -0
- package/dist/integrations/unified_memory.d.ts +415 -0
- package/dist/integrations/unified_memory.d.ts.map +1 -0
- package/dist/integrations/unified_memory.js +1489 -0
- package/dist/integrations/unified_memory.js.map +1 -0
- package/dist/roles/beru.yaml +48 -0
- package/dist/sidecar/client.d.ts +63 -0
- package/dist/sidecar/client.d.ts.map +1 -0
- package/dist/sidecar/client.js +222 -0
- package/dist/sidecar/client.js.map +1 -0
- package/dist/sidecar/index.d.ts +7 -0
- package/dist/sidecar/index.d.ts.map +1 -0
- package/dist/sidecar/index.js +6 -0
- package/dist/sidecar/index.js.map +1 -0
- package/dist/startup.d.ts +22 -0
- package/dist/startup.d.ts.map +1 -0
- package/dist/startup.js +194 -0
- package/dist/startup.js.map +1 -0
- package/dist/tools/_internal.d.ts +90 -0
- package/dist/tools/_internal.d.ts.map +1 -0
- package/dist/tools/_internal.js +375 -0
- package/dist/tools/_internal.js.map +1 -0
- package/dist/tools/_smoke.d.ts +2 -0
- package/dist/tools/_smoke.d.ts.map +1 -0
- package/dist/tools/_smoke.js +203 -0
- package/dist/tools/_smoke.js.map +1 -0
- package/dist/tools/axodex_tools.d.ts +51 -0
- package/dist/tools/axodex_tools.d.ts.map +1 -0
- package/dist/tools/axodex_tools.js +181 -0
- package/dist/tools/axodex_tools.js.map +1 -0
- package/dist/tools/code_tools.d.ts +33 -0
- package/dist/tools/code_tools.d.ts.map +1 -0
- package/dist/tools/code_tools.js +191 -0
- package/dist/tools/code_tools.js.map +1 -0
- package/dist/tools/computer_tools.d.ts +59 -0
- package/dist/tools/computer_tools.d.ts.map +1 -0
- package/dist/tools/computer_tools.js +348 -0
- package/dist/tools/computer_tools.js.map +1 -0
- package/dist/tools/file_tools.d.ts +51 -0
- package/dist/tools/file_tools.d.ts.map +1 -0
- package/dist/tools/file_tools.js +424 -0
- package/dist/tools/file_tools.js.map +1 -0
- package/dist/tools/index.d.ts +13 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +13 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/shell_tools.d.ts +39 -0
- package/dist/tools/shell_tools.d.ts.map +1 -0
- package/dist/tools/shell_tools.js +163 -0
- package/dist/tools/shell_tools.js.map +1 -0
- package/dist/tools/web_tools.d.ts +31 -0
- package/dist/tools/web_tools.d.ts.map +1 -0
- package/dist/tools/web_tools.js +117 -0
- package/dist/tools/web_tools.js.map +1 -0
- package/dist/voice/index.d.ts +41 -0
- package/dist/voice/index.d.ts.map +1 -0
- package/dist/voice/index.js +58 -0
- package/dist/voice/index.js.map +1 -0
- package/dist/voice/light_daemon.d.ts +197 -0
- package/dist/voice/light_daemon.d.ts.map +1 -0
- package/dist/voice/light_daemon.js +746 -0
- package/dist/voice/light_daemon.js.map +1 -0
- package/dist/voice/setup.d.ts +63 -0
- package/dist/voice/setup.d.ts.map +1 -0
- package/dist/voice/setup.js +443 -0
- package/dist/voice/setup.js.map +1 -0
- package/dist/voice/stt.d.ts +148 -0
- package/dist/voice/stt.d.ts.map +1 -0
- package/dist/voice/stt.js +361 -0
- package/dist/voice/stt.js.map +1 -0
- package/dist/voice/tts.d.ts +168 -0
- package/dist/voice/tts.d.ts.map +1 -0
- package/dist/voice/tts.js +698 -0
- package/dist/voice/tts.js.map +1 -0
- package/dist/voice/voice_loop.d.ts +101 -0
- package/dist/voice/voice_loop.d.ts.map +1 -0
- package/dist/voice/voice_loop.js +463 -0
- package/dist/voice/voice_loop.js.map +1 -0
- package/dist/voice/wake_word.d.ts +153 -0
- package/dist/voice/wake_word.d.ts.map +1 -0
- package/dist/voice/wake_word.js +458 -0
- package/dist/voice/wake_word.js.map +1 -0
- package/dist/voice/wav.d.ts +99 -0
- package/dist/voice/wav.d.ts.map +1 -0
- package/dist/voice/wav.js +306 -0
- package/dist/voice/wav.js.map +1 -0
- package/dist/web/broker.d.ts +33 -0
- package/dist/web/broker.d.ts.map +1 -0
- package/dist/web/broker.js +58 -0
- package/dist/web/broker.js.map +1 -0
- package/dist/web/open_browser.d.ts +2 -0
- package/dist/web/open_browser.d.ts.map +1 -0
- package/dist/web/open_browser.js +42 -0
- package/dist/web/open_browser.js.map +1 -0
- package/dist/web/server.d.ts +54 -0
- package/dist/web/server.d.ts.map +1 -0
- package/dist/web/server.js +831 -0
- package/dist/web/server.js.map +1 -0
- package/dist/web/static/app.js +4121 -0
- package/dist/web/static/index.html +2281 -0
- package/dist/web/static/js/MODULE_SUMMARY.md +124 -0
- package/dist/web/static/js/a11y.js +165 -0
- package/dist/web/static/js/admin.js +2145 -0
- package/dist/web/static/js/assistant.js +475 -0
- package/dist/web/static/js/calendar/reminders.js +114 -0
- package/dist/web/static/js/calendar/utils.js +166 -0
- package/dist/web/static/js/calendar.js +3348 -0
- package/dist/web/static/js/censor.js +356 -0
- package/dist/web/static/js/chat.js +4546 -0
- package/dist/web/static/js/chatRenderer.js +2294 -0
- package/dist/web/static/js/chatStream.js +276 -0
- package/dist/web/static/js/codeRunner.js +398 -0
- package/dist/web/static/js/color/hex.js +14 -0
- package/dist/web/static/js/colorPicker.js +453 -0
- package/dist/web/static/js/compare/icons.js +77 -0
- package/dist/web/static/js/compare/index.js +1482 -0
- package/dist/web/static/js/compare/models.js +104 -0
- package/dist/web/static/js/compare/panes.js +817 -0
- package/dist/web/static/js/compare/probe.js +78 -0
- package/dist/web/static/js/compare/scoreboard.js +223 -0
- package/dist/web/static/js/compare/selector.js +1335 -0
- package/dist/web/static/js/compare/state.js +58 -0
- package/dist/web/static/js/compare/stream.js +695 -0
- package/dist/web/static/js/compare/vote.js +254 -0
- package/dist/web/static/js/cookbook-diagnosis.js +694 -0
- package/dist/web/static/js/cookbook-hwfit.js +1888 -0
- package/dist/web/static/js/cookbook.js +2093 -0
- package/dist/web/static/js/cookbookDownload.js +633 -0
- package/dist/web/static/js/cookbookProgressSignal.js +29 -0
- package/dist/web/static/js/cookbookRunning.js +3506 -0
- package/dist/web/static/js/cookbookServe.js +2128 -0
- package/dist/web/static/js/document.js +9731 -0
- package/dist/web/static/js/documentLibrary.js +3376 -0
- package/dist/web/static/js/dragSort.js +265 -0
- package/dist/web/static/js/editor/ai-inpaint.js +374 -0
- package/dist/web/static/js/editor/ai-models.js +273 -0
- package/dist/web/static/js/editor/ai-rembg.js +230 -0
- package/dist/web/static/js/editor/ai-tool-runner.js +147 -0
- package/dist/web/static/js/editor/ai-tools-misc.js +216 -0
- package/dist/web/static/js/editor/build/controls.js +366 -0
- package/dist/web/static/js/editor/build/popups.js +112 -0
- package/dist/web/static/js/editor/build/right-panel.js +200 -0
- package/dist/web/static/js/editor/build/toolbar.js +73 -0
- package/dist/web/static/js/editor/build/topbar.js +131 -0
- package/dist/web/static/js/editor/build/transform-popup.js +109 -0
- package/dist/web/static/js/editor/canvas-coords.js +21 -0
- package/dist/web/static/js/editor/canvas-events.js +197 -0
- package/dist/web/static/js/editor/canvas-transforms.js +132 -0
- package/dist/web/static/js/editor/checkerboard.js +24 -0
- package/dist/web/static/js/editor/clipboard-and-drop.js +133 -0
- package/dist/web/static/js/editor/composite-helpers.js +83 -0
- package/dist/web/static/js/editor/filters/blur.js +118 -0
- package/dist/web/static/js/editor/filters/edge-feather.js +70 -0
- package/dist/web/static/js/editor/fx/adj-popup.js +677 -0
- package/dist/web/static/js/editor/fx/filter-string.js +38 -0
- package/dist/web/static/js/editor/fx/histogram.js +67 -0
- package/dist/web/static/js/editor/fx/pixel-pass.js +249 -0
- package/dist/web/static/js/editor/harmonize-masks.js +116 -0
- package/dist/web/static/js/editor/history-panel.js +176 -0
- package/dist/web/static/js/editor/keyboard-shortcuts.js +271 -0
- package/dist/web/static/js/editor/layer-helpers.js +131 -0
- package/dist/web/static/js/editor/layer-panel.js +600 -0
- package/dist/web/static/js/editor/mask-utils.js +91 -0
- package/dist/web/static/js/editor/shortcuts-popover.js +149 -0
- package/dist/web/static/js/editor/slider-ux.js +191 -0
- package/dist/web/static/js/editor/snap.js +107 -0
- package/dist/web/static/js/editor/state.js +257 -0
- package/dist/web/static/js/editor/stroke-pipeline.js +162 -0
- package/dist/web/static/js/editor/stroke-tool-sliders.js +64 -0
- package/dist/web/static/js/editor/tools/clone.js +81 -0
- package/dist/web/static/js/editor/tools/crop.js +137 -0
- package/dist/web/static/js/editor/tools/flood-fill.js +72 -0
- package/dist/web/static/js/editor/tools/lasso-mask.js +171 -0
- package/dist/web/static/js/editor/tools/lasso.js +65 -0
- package/dist/web/static/js/editor/tools/move.js +79 -0
- package/dist/web/static/js/editor/tools/stroke.js +123 -0
- package/dist/web/static/js/editor/tools/transform-drag.js +174 -0
- package/dist/web/static/js/editor/tools/transform-handles.js +271 -0
- package/dist/web/static/js/editor/tools/transform-session.js +381 -0
- package/dist/web/static/js/editor/tools/wand.js +46 -0
- package/dist/web/static/js/editor/wire-import.js +148 -0
- package/dist/web/static/js/editor/wire-inpaint-controls.js +164 -0
- package/dist/web/static/js/editor/wire-merge-buttons.js +103 -0
- package/dist/web/static/js/editor/wire-selection-controls.js +170 -0
- package/dist/web/static/js/editor/wire-topbar-menus.js +174 -0
- package/dist/web/static/js/editor/wire-topbar-overflow.js +49 -0
- package/dist/web/static/js/editor/wire-topbar.js +188 -0
- package/dist/web/static/js/emailInbox.js +1245 -0
- package/dist/web/static/js/emailLibrary/replyRecipients.js +27 -0
- package/dist/web/static/js/emailLibrary/signatureFold.js +339 -0
- package/dist/web/static/js/emailLibrary/state.js +34 -0
- package/dist/web/static/js/emailLibrary/utils.js +202 -0
- package/dist/web/static/js/emailLibrary.js +5217 -0
- package/dist/web/static/js/emojiPicker.js +311 -0
- package/dist/web/static/js/escMenuStack.js +102 -0
- package/dist/web/static/js/fileHandler.js +295 -0
- package/dist/web/static/js/gallery.js +2835 -0
- package/dist/web/static/js/galleryEditor.js +3798 -0
- package/dist/web/static/js/group.js +955 -0
- package/dist/web/static/js/init.js +405 -0
- package/dist/web/static/js/keyboard-shortcuts.js +292 -0
- package/dist/web/static/js/langIcons.js +187 -0
- package/dist/web/static/js/markdown/tableRow.js +19 -0
- package/dist/web/static/js/markdown.js +806 -0
- package/dist/web/static/js/memory.js +1418 -0
- package/dist/web/static/js/modalManager.js +1552 -0
- package/dist/web/static/js/modalSnap.js +782 -0
- package/dist/web/static/js/model/matchKey.js +19 -0
- package/dist/web/static/js/modelPicker.js +695 -0
- package/dist/web/static/js/modelSort.js +33 -0
- package/dist/web/static/js/models.js +642 -0
- package/dist/web/static/js/notes.js +5054 -0
- package/dist/web/static/js/package.json +1 -0
- package/dist/web/static/js/platform.js +47 -0
- package/dist/web/static/js/presets.js +1110 -0
- package/dist/web/static/js/providers.js +93 -0
- package/dist/web/static/js/rag.js +177 -0
- package/dist/web/static/js/research/jobs.js +335 -0
- package/dist/web/static/js/research/panel.js +1233 -0
- package/dist/web/static/js/researchSynapse.js +225 -0
- package/dist/web/static/js/search-chat.js +201 -0
- package/dist/web/static/js/search.js +52 -0
- package/dist/web/static/js/section-management.js +260 -0
- package/dist/web/static/js/sessions.js +3108 -0
- package/dist/web/static/js/settings.js +4991 -0
- package/dist/web/static/js/sidebar-layout.js +573 -0
- package/dist/web/static/js/signature.js +504 -0
- package/dist/web/static/js/skills.js +1908 -0
- package/dist/web/static/js/slashAutocomplete.js +267 -0
- package/dist/web/static/js/slashCommands.js +6099 -0
- package/dist/web/static/js/spinner.js +406 -0
- package/dist/web/static/js/storage.js +123 -0
- package/dist/web/static/js/tasks.js +2699 -0
- package/dist/web/static/js/theme.js +2086 -0
- package/dist/web/static/js/tileManager.js +386 -0
- package/dist/web/static/js/tourAutoplay.js +133 -0
- package/dist/web/static/js/tourHints.js +179 -0
- package/dist/web/static/js/tts-ai.js +521 -0
- package/dist/web/static/js/ui.js +1288 -0
- package/dist/web/static/js/util/ordinal.js +13 -0
- package/dist/web/static/js/voiceRecorder.js +283 -0
- package/dist/web/static/js/windowDrag.js +326 -0
- package/dist/web/static/js/windowResize.js +233 -0
- package/dist/web/static/landing.html +824 -0
- package/dist/web/static/lib/docx.umd.min.js +20116 -0
- package/dist/web/static/lib/highlight.min.js +1213 -0
- package/dist/web/static/lib/html2pdf.bundle.min.js +3 -0
- package/dist/web/static/lib/mammoth.browser.min.js +21 -0
- package/dist/web/static/lib/qrcode.min.js +8 -0
- package/dist/web/static/lib/xlsx.full.min.js +24 -0
- package/dist/web/static/login.html +582 -0
- package/dist/web/static/manifest.json +15 -0
- package/dist/web/static/style.css +35733 -0
- package/dist/web/static/sw.js +144 -0
- package/dist/workflows/engine.d.ts +162 -0
- package/dist/workflows/engine.d.ts.map +1 -0
- package/dist/workflows/engine.js +625 -0
- package/dist/workflows/engine.js.map +1 -0
- package/dist/workflows/index.d.ts +8 -0
- package/dist/workflows/index.d.ts.map +1 -0
- package/dist/workflows/index.js +14 -0
- package/dist/workflows/index.js.map +1 -0
- package/package.json +112 -0
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* axoniz.core.intelligence.skill_distiller
|
|
3
|
+
* ========================================
|
|
4
|
+
* The heart of AXONIZ's self-evolution.
|
|
5
|
+
* Analyzes successful trajectories and distills them into permanent 'Skills'.
|
|
6
|
+
*
|
|
7
|
+
* A 'Skill' in AXONIZ is a self-contained Python function registered as a tool.
|
|
8
|
+
* This is more robust than Hermes's skills (which are just prompt injections).
|
|
9
|
+
* AXONIZ skills are real code, making them faster, more reliable, and zero-context.
|
|
10
|
+
*
|
|
11
|
+
* Port notes (Python → Node):
|
|
12
|
+
* - `analyze_session` / `_propose_skill` are `async` because the LLM call is
|
|
13
|
+
* asynchronous in the Node port. `distill` stays synchronous (it only
|
|
14
|
+
* writes a file).
|
|
15
|
+
* - `SKILL_TEMPLATE.format(...)` → `renderSkillTemplate()`, a single-pass
|
|
16
|
+
* `String.replace` over the same template text. A single pass matters:
|
|
17
|
+
* LLM-generated `body`/`schema` values frequently contain `{`/`}` and must
|
|
18
|
+
* never be re-scanned as placeholders.
|
|
19
|
+
* - `time.strftime("%Y-%m-%d")` is LOCAL time → local date parts (NOT
|
|
20
|
+
* `toISOString()`, which is UTC).
|
|
21
|
+
*/
|
|
22
|
+
import fs from "node:fs";
|
|
23
|
+
import path from "node:path";
|
|
24
|
+
import { AXONIZ_HOME } from "../config.js";
|
|
25
|
+
import { error, info } from "../debug.js";
|
|
26
|
+
export const SKILLS_DIR = path.join(AXONIZ_HOME, "skills");
|
|
27
|
+
try {
|
|
28
|
+
fs.mkdirSync(SKILLS_DIR, { recursive: true });
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
/* best effort, mirrors makedirs(exist_ok=True) */
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Python value of the triple-quoted `SKILL_TEMPLATE` (i.e. it starts with a
|
|
35
|
+
* newline followed by `"""` and ends after the closing `)` plus a newline).
|
|
36
|
+
* Fill it with `renderSkillTemplate()`.
|
|
37
|
+
*/
|
|
38
|
+
export const SKILL_TEMPLATE = `
|
|
39
|
+
"""
|
|
40
|
+
AXONIZ Skill: {name}
|
|
41
|
+
Generated: {date}
|
|
42
|
+
Description: {description}
|
|
43
|
+
"""
|
|
44
|
+
|
|
45
|
+
from tools.registry import registry
|
|
46
|
+
|
|
47
|
+
def {name}({args_call}) -> str:
|
|
48
|
+
"""
|
|
49
|
+
{description}
|
|
50
|
+
"""
|
|
51
|
+
# Skill logic extracted from trajectory...
|
|
52
|
+
{body}
|
|
53
|
+
|
|
54
|
+
registry.register(
|
|
55
|
+
name="{name}",
|
|
56
|
+
toolset="user_skills",
|
|
57
|
+
schema={schema},
|
|
58
|
+
handler=lambda args, **kw: {name}(**args),
|
|
59
|
+
emoji="🛡️",
|
|
60
|
+
)
|
|
61
|
+
`;
|
|
62
|
+
/**
|
|
63
|
+
* Replacement for Python's `SKILL_TEMPLATE.format(...)`.
|
|
64
|
+
* Unknown placeholders are left untouched (Python raised `KeyError` instead);
|
|
65
|
+
* the substitution is a single pass so injected code can never be interpreted
|
|
66
|
+
* as a placeholder.
|
|
67
|
+
*/
|
|
68
|
+
export function renderSkillTemplate(vars) {
|
|
69
|
+
const table = vars;
|
|
70
|
+
return SKILL_TEMPLATE.replace(/\{(\w+)\}/g, (whole, key) => {
|
|
71
|
+
const value = table[key];
|
|
72
|
+
return value === undefined ? whole : value;
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
/** camelCase alias. */
|
|
76
|
+
export const render_skill_template = renderSkillTemplate;
|
|
77
|
+
function errText(e) {
|
|
78
|
+
if (e instanceof Error)
|
|
79
|
+
return e.message || e.name;
|
|
80
|
+
if (typeof e === "string")
|
|
81
|
+
return e;
|
|
82
|
+
return String(e);
|
|
83
|
+
}
|
|
84
|
+
/** Python's `time.strftime("%Y-%m-%d")` — local date. */
|
|
85
|
+
function localDate(d = new Date()) {
|
|
86
|
+
const p = (n) => String(n).padStart(2, "0");
|
|
87
|
+
return `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())}`;
|
|
88
|
+
}
|
|
89
|
+
export class SkillDistiller {
|
|
90
|
+
agent;
|
|
91
|
+
constructor(agent = null) {
|
|
92
|
+
this.agent = agent;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Analyzes a completed trajectory session for 'skill-able' patterns.
|
|
96
|
+
* Criteria:
|
|
97
|
+
* 1. Task was successful.
|
|
98
|
+
* 2. Involved 5+ steps.
|
|
99
|
+
* 3. Pattern is repetitive or complex.
|
|
100
|
+
*/
|
|
101
|
+
async analyze_session(session_id) {
|
|
102
|
+
const agent = this.agent;
|
|
103
|
+
if (!agent || !agent.trajectory) {
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
const traj = agent.trajectory;
|
|
107
|
+
const fn = traj.get_session_steps ?? traj.getSessionSteps;
|
|
108
|
+
if (!fn)
|
|
109
|
+
return null;
|
|
110
|
+
const raw = await fn.call(traj, session_id);
|
|
111
|
+
const steps = Array.isArray(raw) ? raw : [];
|
|
112
|
+
if (steps.length < 5) {
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
// Logic to extract the 'essence' of the work...
|
|
116
|
+
// We use the LLM to write the Python code for the new skill.
|
|
117
|
+
return this._propose_skill(steps);
|
|
118
|
+
}
|
|
119
|
+
/** camelCase alias. */
|
|
120
|
+
analyzeSession(session_id) {
|
|
121
|
+
return this.analyze_session(session_id);
|
|
122
|
+
}
|
|
123
|
+
async _propose_skill(steps) {
|
|
124
|
+
const prompt = `You are the AXONIZ Evolution Engine.\n` +
|
|
125
|
+
`Analyze the following tool-calling trajectory and distill it into a reusable Python Skill.\n` +
|
|
126
|
+
`A Skill is a single function that collapses these steps into one call.\n` +
|
|
127
|
+
`\n` +
|
|
128
|
+
`TRAJECTORY:\n` +
|
|
129
|
+
`${JSON.stringify(steps, null, 2)}\n` +
|
|
130
|
+
`\n` +
|
|
131
|
+
`OUTPUT:\n` +
|
|
132
|
+
`1. Skill Name (snake_case)\n` +
|
|
133
|
+
`2. Description\n` +
|
|
134
|
+
`3. Parameters (name, type, description)\n` +
|
|
135
|
+
`4. Python Code (using existing axoniz tools or standard libs)\n` +
|
|
136
|
+
`\n` +
|
|
137
|
+
`Respond with JSON only.\n`;
|
|
138
|
+
try {
|
|
139
|
+
// Call primary LLM to generate the skill code
|
|
140
|
+
const agent = this.agent;
|
|
141
|
+
const fn = agent?.generate_summary ?? agent?.generateSummary;
|
|
142
|
+
if (!agent || !fn)
|
|
143
|
+
throw new Error("agent exposes no generate_summary");
|
|
144
|
+
const proposal_raw = String((await fn.call(agent, prompt)) ?? "");
|
|
145
|
+
const match = proposal_raw.match(/\{[\s\S]*\}/);
|
|
146
|
+
if (!match) {
|
|
147
|
+
error("[Distiller] LLM returned no JSON object in proposal");
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
const proposal = JSON.parse(match[0]);
|
|
151
|
+
return proposal;
|
|
152
|
+
}
|
|
153
|
+
catch (e) {
|
|
154
|
+
error(`[Distiller] Failed to propose skill: ${errText(e)}`);
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/** camelCase alias. */
|
|
159
|
+
_proposeSkill(steps) {
|
|
160
|
+
return this._propose_skill(steps);
|
|
161
|
+
}
|
|
162
|
+
get pendingPath() {
|
|
163
|
+
return path.join(SKILLS_DIR, "pending.json");
|
|
164
|
+
}
|
|
165
|
+
getPendingSkills() {
|
|
166
|
+
try {
|
|
167
|
+
const data = fs.readFileSync(this.pendingPath, "utf-8");
|
|
168
|
+
return JSON.parse(data);
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
return {};
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
savePendingSkills(skills) {
|
|
175
|
+
fs.writeFileSync(this.pendingPath, JSON.stringify(skills, null, 2), "utf-8");
|
|
176
|
+
}
|
|
177
|
+
propose(proposal) {
|
|
178
|
+
const skills = this.getPendingSkills();
|
|
179
|
+
skills[proposal.name] = proposal;
|
|
180
|
+
this.savePendingSkills(skills);
|
|
181
|
+
info(`[Distiller] Skill '${proposal.name}' proposed and waiting for human review.`);
|
|
182
|
+
}
|
|
183
|
+
approve(name) {
|
|
184
|
+
const skills = this.getPendingSkills();
|
|
185
|
+
if (!skills[name])
|
|
186
|
+
return false;
|
|
187
|
+
const proposal = skills[name];
|
|
188
|
+
this.distill(proposal);
|
|
189
|
+
delete skills[name];
|
|
190
|
+
this.savePendingSkills(skills);
|
|
191
|
+
return true;
|
|
192
|
+
}
|
|
193
|
+
reject(name) {
|
|
194
|
+
const skills = this.getPendingSkills();
|
|
195
|
+
if (!skills[name])
|
|
196
|
+
return false;
|
|
197
|
+
delete skills[name];
|
|
198
|
+
this.savePendingSkills(skills);
|
|
199
|
+
info(`[Distiller] Skill '${name}' rejected.`);
|
|
200
|
+
return true;
|
|
201
|
+
}
|
|
202
|
+
/** Writes the new skill to the skills directory. */
|
|
203
|
+
distill(proposal) {
|
|
204
|
+
const name = proposal.name;
|
|
205
|
+
const file = path.join(SKILLS_DIR, `${name}.py`);
|
|
206
|
+
// Format the code...
|
|
207
|
+
const code = renderSkillTemplate({
|
|
208
|
+
name,
|
|
209
|
+
date: localDate(),
|
|
210
|
+
description: proposal.description,
|
|
211
|
+
args_call: Object.keys(proposal.parameters ?? {}).join(", "),
|
|
212
|
+
body: proposal.code,
|
|
213
|
+
schema: JSON.stringify(this._build_schema(proposal)),
|
|
214
|
+
});
|
|
215
|
+
fs.writeFileSync(file, code, "utf-8");
|
|
216
|
+
info(`[Distiller] New skill forged: ${name}`);
|
|
217
|
+
// Rebuild the LLM so the agent reloads with new tool context on next run
|
|
218
|
+
const agent = this.agent;
|
|
219
|
+
const rebuild = agent?._rebuild_llm ?? agent?._rebuildLlm;
|
|
220
|
+
if (agent && rebuild) {
|
|
221
|
+
try {
|
|
222
|
+
void Promise.resolve(rebuild.call(agent)).catch(() => undefined);
|
|
223
|
+
}
|
|
224
|
+
catch {
|
|
225
|
+
/* rebuild failures must not break skill creation */
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
_build_schema(proposal) {
|
|
230
|
+
// Build OpenAI function schema from proposal
|
|
231
|
+
return {
|
|
232
|
+
name: proposal.name,
|
|
233
|
+
description: proposal.description,
|
|
234
|
+
parameters: {
|
|
235
|
+
type: "object",
|
|
236
|
+
properties: proposal.parameters,
|
|
237
|
+
required: Object.keys(proposal.parameters ?? {}),
|
|
238
|
+
},
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
/** camelCase alias. */
|
|
242
|
+
_buildSchema(proposal) {
|
|
243
|
+
return this._build_schema(proposal);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
//# sourceMappingURL=skill_distiller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill_distiller.js","sourceRoot":"","sources":["../../../src/core/intelligence/skill_distiller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* axoniz.core.intelligence.swarm
|
|
3
|
+
* ================================
|
|
4
|
+
* Dynamic Domain-Expert Swarm — Sequential Model Swapping
|
|
5
|
+
*
|
|
6
|
+
* The Swarm decomposes any complex task into phases and assigns a
|
|
7
|
+
* dedicated, domain-expert model for each phase:
|
|
8
|
+
*
|
|
9
|
+
* Decomposer → breaks the task into atomic sub-tasks (reasoning model)
|
|
10
|
+
* Worker → executes each sub-task using tools (coding/execution model)
|
|
11
|
+
* Critic → validates each result before accepting (debugging model)
|
|
12
|
+
* Merger → synthesises all results into a final answer (language model)
|
|
13
|
+
*
|
|
14
|
+
* Models are loaded sequentially and unloaded from RAM between phases
|
|
15
|
+
* to stay within the memory constraints of the host machine.
|
|
16
|
+
* Model paths are configured in ~/.axoniz/config.json under `swarm_models`.
|
|
17
|
+
* If no swarm models are configured, the active main model is used for all
|
|
18
|
+
* phases (standard behaviour).
|
|
19
|
+
*
|
|
20
|
+
* Architecture:
|
|
21
|
+
* SwarmOrchestrator → drives phase transitions + model hot-swapping
|
|
22
|
+
* SwarmWorker → executes a single sub-task with tool access
|
|
23
|
+
* SwarmCritic → scores + validates a worker result
|
|
24
|
+
* SwarmMerger → combines all valid results
|
|
25
|
+
*
|
|
26
|
+
* Port notes (Python → Node):
|
|
27
|
+
* - `ThreadPoolExecutor`/`Future` → an async scheduler with an explicit
|
|
28
|
+
* concurrency ceiling (`max_workers`), `Promise.race` for completion and a
|
|
29
|
+
* `Promise.allSettled` for teardown. No worker_threads: every step is I/O
|
|
30
|
+
* bound (LLM streaming / tools), so threads would buy nothing.
|
|
31
|
+
* - `threading.Lock` around model swapping → an async `Mutex` (the swap
|
|
32
|
+
* sequence itself awaits `unload_llm`/`ensure_llm`).
|
|
33
|
+
* - `self.llm.stream_text(messages)` (a sync generator) → `collectStream()`,
|
|
34
|
+
* an async collector that accepts an async generator, a sync generator, a
|
|
35
|
+
* plain string, a `{ text }` response object or a promise of any of those.
|
|
36
|
+
* - Every method that talks to the LLM is `async`. `review`, `merge`,
|
|
37
|
+
* `_decompose`, `run`, `run_simple` and `execute` therefore return
|
|
38
|
+
* Promises where the Python versions blocked the calling thread.
|
|
39
|
+
* - `dict` → `Map<number, SubTask>` for the `completed` registry (Python used
|
|
40
|
+
* integer keys); `_schedule_and_run(sub_tasks, completed)` takes that Map.
|
|
41
|
+
* - Python's `self.tool_map[name](**args)` (keyword arguments) has no direct
|
|
42
|
+
* JS analogue. `SwarmWorker.tool_args_mode` ("auto" | "object" |
|
|
43
|
+
* "positional") decides how arguments are passed; "auto" inspects the
|
|
44
|
+
* handler's declared arity.
|
|
45
|
+
* - `swarm.py` referenced `os.path`/`os.path.exists` without importing `os`
|
|
46
|
+
* in `_prefetch_relevant_files` and `_make_worker`; the port uses
|
|
47
|
+
* `node:path` / `node:fs` properly (the Python text-only path raised
|
|
48
|
+
* NameError there).
|
|
49
|
+
*/
|
|
50
|
+
import { type AxonizConfig } from "../config.js";
|
|
51
|
+
/** Render an unknown thrown value the way Python's `str(e)` would. */
|
|
52
|
+
export declare function errText(e: unknown): string;
|
|
53
|
+
/**
|
|
54
|
+
* Structural view of the ported backend/LLM. The Python code called
|
|
55
|
+
* `llm.stream_text(messages)` (a generator); the Node ports expose either
|
|
56
|
+
* `streamText`, `stream_text` or `stream`, and may be sync or async.
|
|
57
|
+
*/
|
|
58
|
+
export interface SwarmLLM {
|
|
59
|
+
streamText?(messages: unknown[], ...rest: unknown[]): unknown;
|
|
60
|
+
stream_text?(messages: unknown[], ...rest: unknown[]): unknown;
|
|
61
|
+
stream?(messages: unknown[], ...rest: unknown[]): unknown;
|
|
62
|
+
complete?(messages: unknown[], ...rest: unknown[]): unknown;
|
|
63
|
+
}
|
|
64
|
+
/** Drain any stream-like LLM return value into a single string. */
|
|
65
|
+
export declare function collectStream(llm: SwarmLLM | null | undefined, messages: unknown[]): Promise<string>;
|
|
66
|
+
export interface SubTaskInit {
|
|
67
|
+
id: number;
|
|
68
|
+
description: string;
|
|
69
|
+
depends_on?: number[];
|
|
70
|
+
priority?: number;
|
|
71
|
+
tool_hint?: string;
|
|
72
|
+
verify?: string;
|
|
73
|
+
status?: string;
|
|
74
|
+
result?: string;
|
|
75
|
+
score?: number;
|
|
76
|
+
duration_ms?: number;
|
|
77
|
+
worker_id?: number;
|
|
78
|
+
}
|
|
79
|
+
export declare class SubTask {
|
|
80
|
+
id: number;
|
|
81
|
+
description: string;
|
|
82
|
+
depends_on: number[];
|
|
83
|
+
priority: number;
|
|
84
|
+
tool_hint: string;
|
|
85
|
+
verify: string;
|
|
86
|
+
status: string;
|
|
87
|
+
result: string;
|
|
88
|
+
score: number;
|
|
89
|
+
duration_ms: number;
|
|
90
|
+
worker_id: number;
|
|
91
|
+
constructor(init: SubTaskInit | number, description?: string, extra?: Partial<SubTaskInit>);
|
|
92
|
+
get dependsOn(): number[];
|
|
93
|
+
get toolHint(): string;
|
|
94
|
+
get durationMs(): number;
|
|
95
|
+
get workerId(): number;
|
|
96
|
+
}
|
|
97
|
+
export interface SwarmResultInit {
|
|
98
|
+
task: string;
|
|
99
|
+
sub_tasks: SubTask[];
|
|
100
|
+
merged: string;
|
|
101
|
+
success: boolean;
|
|
102
|
+
total_ms: number;
|
|
103
|
+
/** actual speedup achieved */
|
|
104
|
+
parallelism: number;
|
|
105
|
+
}
|
|
106
|
+
export declare class SwarmResult {
|
|
107
|
+
task: string;
|
|
108
|
+
sub_tasks: SubTask[];
|
|
109
|
+
merged: string;
|
|
110
|
+
success: boolean;
|
|
111
|
+
total_ms: number;
|
|
112
|
+
parallelism: number;
|
|
113
|
+
constructor(init: SwarmResultInit);
|
|
114
|
+
get subTasks(): SubTask[];
|
|
115
|
+
get totalMs(): number;
|
|
116
|
+
}
|
|
117
|
+
export declare const DECOMPOSE_PROMPT = "Decompose a task into independent parallel sub-tasks.\n\nRules:\n1. Maximize parallelism \u2014 only use depends_on for true sequential dependencies\n2. Each sub-task is atomic and self-contained\n3. Max 8 sub-tasks\n4. tool_hint: primary tool (file_write, shell_run, etc.)\n5. verify: one-line success check\n\nRespond ONLY with JSON array:\n[\n {\"id\": 1, \"description\": \"...\", \"depends_on\": [], \"priority\": 8, \"tool_hint\": \"file_write\", \"verify\": \"...\"},\n ...\n]";
|
|
118
|
+
export declare const CRITIC_PROMPT = "Review a worker's sub-task result.\nRespond ONLY with JSON:\n{\"score\": 8.5, \"pass\": true, \"issues\": [], \"fix_hint\": \"\"}\nscore: 0-10 (pass if >= 6.0)\nissues: list of problems found\nfix_hint: how to fix if score < 6.0";
|
|
119
|
+
export declare const MERGE_PROMPT = "Synthesize multiple parallel worker outputs into one coherent response.\nBe brief and structured. No extra commentary.";
|
|
120
|
+
export type ToolHandler = (...args: never[]) => unknown;
|
|
121
|
+
export type ToolMap = Record<string, (...args: never[]) => unknown>;
|
|
122
|
+
export type ProgressCallback = (event: Record<string, unknown>) => void;
|
|
123
|
+
/** How `SwarmWorker` passes a tool's arguments (Python used `**kwargs`). */
|
|
124
|
+
export type ToolArgsMode = "auto" | "object" | "positional";
|
|
125
|
+
export interface ParsedToolCall {
|
|
126
|
+
name: string;
|
|
127
|
+
args: Record<string, unknown>;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* A lightweight execution unit that runs a single sub-task.
|
|
131
|
+
* Uses a shared tool_map from the parent agent — no separate LLM needed.
|
|
132
|
+
*
|
|
133
|
+
* Two execution modes depending on whether the loaded model supports tool calling:
|
|
134
|
+
* - Tool mode (tool_capable=True): full tool loop, can read/write files, run shell, etc.
|
|
135
|
+
* - Text mode (tool_capable=False): receives pre-fetched file content in the prompt,
|
|
136
|
+
* produces pure text output (code, summary, critique).
|
|
137
|
+
* No tool calls attempted — avoids hallucinated JSON.
|
|
138
|
+
*/
|
|
139
|
+
export interface SwarmWorkerInit {
|
|
140
|
+
worker_id: number;
|
|
141
|
+
tool_map: ToolMap;
|
|
142
|
+
llm: SwarmLLM | null;
|
|
143
|
+
workspace: string;
|
|
144
|
+
max_steps?: number;
|
|
145
|
+
on_progress?: ProgressCallback | null;
|
|
146
|
+
tool_capable?: boolean;
|
|
147
|
+
tool_args_mode?: ToolArgsMode;
|
|
148
|
+
}
|
|
149
|
+
export declare class SwarmWorker {
|
|
150
|
+
id: number;
|
|
151
|
+
tool_map: ToolMap;
|
|
152
|
+
llm: SwarmLLM | null;
|
|
153
|
+
workspace: string;
|
|
154
|
+
max_steps: number;
|
|
155
|
+
on_progress: ProgressCallback | null;
|
|
156
|
+
tool_capable: boolean;
|
|
157
|
+
tool_args_mode: ToolArgsMode;
|
|
158
|
+
constructor(init: SwarmWorkerInit);
|
|
159
|
+
constructor(worker_id: number, tool_map: ToolMap, llm: SwarmLLM | null, workspace: string, max_steps?: number, on_progress?: ProgressCallback | null, tool_capable?: boolean);
|
|
160
|
+
get workerId(): number;
|
|
161
|
+
get maxSteps(): number;
|
|
162
|
+
get toolCapable(): boolean;
|
|
163
|
+
/** Execute a sub-task, update it in-place, return it. */
|
|
164
|
+
execute(sub_task: SubTask, context?: string): Promise<SubTask>;
|
|
165
|
+
_build_prompt(sub_task: SubTask, context: string): string;
|
|
166
|
+
/**
|
|
167
|
+
* Prompt for text-only models: pre-fetch relevant file content so the
|
|
168
|
+
* model never needs to call a tool to read the workspace.
|
|
169
|
+
*/
|
|
170
|
+
_build_text_prompt(sub_task: SubTask, context: string): string;
|
|
171
|
+
/**
|
|
172
|
+
* Extract file paths mentioned in the task description and read them
|
|
173
|
+
* so a text-only model has the content it needs inline.
|
|
174
|
+
*/
|
|
175
|
+
_prefetch_relevant_files(description: string): string;
|
|
176
|
+
/** Parse `<tool>{...}</tool>` fallback calls out of a model reply. */
|
|
177
|
+
_parse_fallback_calls(text: string): ParsedToolCall[];
|
|
178
|
+
_is_done(text: string): boolean;
|
|
179
|
+
/** Invoke a tool handler, mirroring Python's `tool(**args)`. */
|
|
180
|
+
_invoke_tool(name: string, args: Record<string, unknown>): unknown;
|
|
181
|
+
/**
|
|
182
|
+
* Tool-capable execution: full tool loop with <tool> parsing.
|
|
183
|
+
* Used for Gemma 1B, Nemotron 4B and any other model that passed
|
|
184
|
+
* tool-calling validation.
|
|
185
|
+
*/
|
|
186
|
+
_run_with_tools(prompt: string): Promise<string>;
|
|
187
|
+
/**
|
|
188
|
+
* Text-only execution for models that cannot call tools (DeepSeek Coder
|
|
189
|
+
* 1.3B, Qwen2.5 1.5B, Qwen2.5 Coder 1.5B).
|
|
190
|
+
*
|
|
191
|
+
* The model receives file content pre-fetched inline and is instructed
|
|
192
|
+
* to produce pure text/code output only. The caller (orchestrator) is
|
|
193
|
+
* responsible for writing results to disk via a tool-capable worker.
|
|
194
|
+
*/
|
|
195
|
+
_run_text_only(prompt: string, sub_task: SubTask): Promise<string>;
|
|
196
|
+
}
|
|
197
|
+
export interface CriticReview {
|
|
198
|
+
score: number;
|
|
199
|
+
pass: boolean;
|
|
200
|
+
issues: string[];
|
|
201
|
+
fix_hint: string;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Reviews worker results and scores them.
|
|
205
|
+
* Rejects low-quality results and tells the worker what to fix.
|
|
206
|
+
*/
|
|
207
|
+
export declare class SwarmCritic {
|
|
208
|
+
llm: SwarmLLM | null;
|
|
209
|
+
pass_threshold: number;
|
|
210
|
+
constructor(llm: SwarmLLM | null, pass_threshold?: number);
|
|
211
|
+
get passThreshold(): number;
|
|
212
|
+
/**
|
|
213
|
+
* Returns {"score": float, "pass": bool, "issues": list, "fix_hint": str}
|
|
214
|
+
* Fast path: obvious failures are caught without LLM.
|
|
215
|
+
*/
|
|
216
|
+
review(sub_task: SubTask): Promise<CriticReview>;
|
|
217
|
+
/** camelCase alias. */
|
|
218
|
+
reviewTask(sub_task: SubTask): Promise<CriticReview>;
|
|
219
|
+
}
|
|
220
|
+
/** Combines all worker results into a coherent final answer. */
|
|
221
|
+
export declare class SwarmMerger {
|
|
222
|
+
llm: SwarmLLM | null;
|
|
223
|
+
constructor(llm: SwarmLLM | null);
|
|
224
|
+
/**
|
|
225
|
+
* Merge all passed sub-task results.
|
|
226
|
+
* For simple tasks, does it without LLM (pure concatenation).
|
|
227
|
+
*/
|
|
228
|
+
merge(task: string, sub_tasks: SubTask[]): Promise<string>;
|
|
229
|
+
/** camelCase alias. */
|
|
230
|
+
mergeResults(task: string, sub_tasks: SubTask[]): Promise<string>;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* The subset of the Agent surface the swarm drives.
|
|
234
|
+
*
|
|
235
|
+
* Everything except `config` is deliberately optional/permissive: the ported
|
|
236
|
+
* `Agent` exposes `llm`/`backend`, `workspace`, an `indexer` and a tool map
|
|
237
|
+
* (`_tool_map`, `tool_map` or a JS `Map`), and the swarm adapts to whichever of
|
|
238
|
+
* those spellings it finds. Internal accessors narrow the values.
|
|
239
|
+
*/
|
|
240
|
+
export interface SwarmAgent {
|
|
241
|
+
config: AxonizConfig;
|
|
242
|
+
llm?: SwarmLLM | null;
|
|
243
|
+
backend?: SwarmLLM | null;
|
|
244
|
+
workspace?: string;
|
|
245
|
+
indexer?: unknown;
|
|
246
|
+
_tool_map?: unknown;
|
|
247
|
+
tool_map?: unknown;
|
|
248
|
+
toolMap?: unknown;
|
|
249
|
+
unload_llm?(): unknown;
|
|
250
|
+
unloadLlm?(): unknown;
|
|
251
|
+
ensure_llm?(): unknown;
|
|
252
|
+
ensureLlm?(): unknown;
|
|
253
|
+
}
|
|
254
|
+
/** Build a name → handler record from a plain object or a JS `Map`. */
|
|
255
|
+
export declare function toToolMap(value: unknown): ToolMap;
|
|
256
|
+
export interface SwarmOrchestratorInit {
|
|
257
|
+
agent: SwarmAgent;
|
|
258
|
+
max_workers?: number;
|
|
259
|
+
critic_threshold?: number;
|
|
260
|
+
max_retries?: number;
|
|
261
|
+
on_progress?: ProgressCallback | null;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Main entry point for the swarm system.
|
|
265
|
+
*
|
|
266
|
+
* 1. Decomposes task into parallel sub-tasks
|
|
267
|
+
* 2. Schedules them respecting dependencies
|
|
268
|
+
* 3. Runs workers in a thread pool
|
|
269
|
+
* 4. Critic reviews each result
|
|
270
|
+
* 5. Retries failed/rejected tasks once
|
|
271
|
+
* 6. Merger combines everything
|
|
272
|
+
*
|
|
273
|
+
* Usage:
|
|
274
|
+
* const swarm = new SwarmOrchestrator({ agent, max_workers: 4 });
|
|
275
|
+
* const result = await swarm.run("build a REST API...");
|
|
276
|
+
*/
|
|
277
|
+
export declare class SwarmOrchestrator {
|
|
278
|
+
agent: SwarmAgent;
|
|
279
|
+
critic_threshold: number;
|
|
280
|
+
max_retries: number;
|
|
281
|
+
on_progress: ProgressCallback | null;
|
|
282
|
+
max_workers: number;
|
|
283
|
+
critic: SwarmCritic;
|
|
284
|
+
merger: SwarmMerger;
|
|
285
|
+
_expert_mode: boolean;
|
|
286
|
+
_original_model: string;
|
|
287
|
+
constructor(init: SwarmOrchestratorInit);
|
|
288
|
+
constructor(agent: SwarmAgent, max_workers?: number, critic_threshold?: number, max_retries?: number, on_progress?: ProgressCallback | null);
|
|
289
|
+
/** The LLM/backend the swarm should drive (`llm` or the `backend` alias). */
|
|
290
|
+
private _llm;
|
|
291
|
+
/** Workspace root used when pre-fetching files for text-only workers. */
|
|
292
|
+
private _workspace;
|
|
293
|
+
/** `agent.indexer.summary()` when the workspace indexer exposes it. */
|
|
294
|
+
private _indexerSummary;
|
|
295
|
+
/** The agent's tool registry, whichever spelling it uses. */
|
|
296
|
+
private _toolMap;
|
|
297
|
+
get expertMode(): boolean;
|
|
298
|
+
get maxWorkers(): number;
|
|
299
|
+
private _unloadLlm;
|
|
300
|
+
private _ensureLlm;
|
|
301
|
+
/**
|
|
302
|
+
* Unload the current LLM and load the domain-expert model assigned
|
|
303
|
+
* to `role` in config.swarm_models. A no-op if:
|
|
304
|
+
* - expert mode is disabled (no swarm_models configured)
|
|
305
|
+
* - the requested role has no model assigned
|
|
306
|
+
* - the correct model is already loaded
|
|
307
|
+
*/
|
|
308
|
+
_swap_model_for_role(role: string): Promise<void>;
|
|
309
|
+
/** Reload the model that was active before the swarm started. */
|
|
310
|
+
_restore_original_model(): Promise<void>;
|
|
311
|
+
/** Full swarm execution pipeline. Returns SwarmResult. */
|
|
312
|
+
run(task: string): Promise<SwarmResult>;
|
|
313
|
+
/** Convenience: run and return just the merged string. */
|
|
314
|
+
run_simple(task: string): Promise<string>;
|
|
315
|
+
/** camelCase alias. */
|
|
316
|
+
runSimple(task: string): Promise<string>;
|
|
317
|
+
/** Use LLM to decompose task into sub-tasks. */
|
|
318
|
+
_decompose(task: string): Promise<SubTask[]>;
|
|
319
|
+
/**
|
|
320
|
+
* Execute sub-tasks respecting depends_on.
|
|
321
|
+
* Independent tasks run in parallel, bounded by `max_workers`
|
|
322
|
+
* (Python's `ThreadPoolExecutor(max_workers=...)`).
|
|
323
|
+
*/
|
|
324
|
+
_schedule_and_run(sub_tasks: SubTask[], completed: Map<number, SubTask>): Promise<void>;
|
|
325
|
+
_make_worker(worker_id: number): SwarmWorker;
|
|
326
|
+
/** Build context string from already-completed sub-tasks. */
|
|
327
|
+
_build_context(completed: Map<number, SubTask>, exclude_id?: number | null): string;
|
|
328
|
+
_emit(event: string, data: Record<string, unknown>): void;
|
|
329
|
+
}
|
|
330
|
+
//# sourceMappingURL=swarm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swarm.d.ts","sourceRoot":"","sources":["../../../src/core/intelligence/swarm.ts"],"names":[],"mappings":"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"}
|