@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,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AXONIZ-ZERO Model Registry.
|
|
3
|
+
* Central registry of AI models with hardware requirements and guidance.
|
|
4
|
+
* Port of axoniz/core/models.py.
|
|
5
|
+
*/
|
|
6
|
+
export function hfUrl(m) {
|
|
7
|
+
return `https://huggingface.co/${m.repo}`;
|
|
8
|
+
}
|
|
9
|
+
/** Determines if the system has enough memory to run this model. */
|
|
10
|
+
export function fits(m, availableRamGb = 14.0) {
|
|
11
|
+
return m.ram_gb <= availableRamGb;
|
|
12
|
+
}
|
|
13
|
+
/** The global model registry, vetted for typical mobile/desktop CPUs. */
|
|
14
|
+
export const REGISTRY = {
|
|
15
|
+
"gemma3-4b": {
|
|
16
|
+
name: "gemma3-4b",
|
|
17
|
+
gguf_name: "Gemma-3-4B-VL-it-Gemini-Pro-Heretic-Uncensored-Thinking_Q8_0.gguf",
|
|
18
|
+
repo: "local",
|
|
19
|
+
size_gb: 4.5,
|
|
20
|
+
ram_gb: 6.0,
|
|
21
|
+
ctx: 8192,
|
|
22
|
+
temperature: 0.7,
|
|
23
|
+
max_tokens: 4096,
|
|
24
|
+
tags: ["local", "general", "multimodal", "vision", "reasoning"],
|
|
25
|
+
description: "Gemma 3 4B VL — A versatile multimodal model combining vision and language.",
|
|
26
|
+
best_for: "General assistance, visual analysis, and logical reasoning.",
|
|
27
|
+
speed_toks: "5–9 tok/s",
|
|
28
|
+
recommended: true,
|
|
29
|
+
},
|
|
30
|
+
"qwen-coder": {
|
|
31
|
+
name: "qwen-coder",
|
|
32
|
+
gguf_name: "qwen2.5-coder-7b-instruct-q6_k.gguf",
|
|
33
|
+
repo: "Qwen/Qwen2.5-Coder-7B-Instruct-GGUF",
|
|
34
|
+
size_gb: 5.9,
|
|
35
|
+
ram_gb: 8.5,
|
|
36
|
+
ctx: 8192,
|
|
37
|
+
temperature: 0.2,
|
|
38
|
+
max_tokens: 4096,
|
|
39
|
+
tags: ["coding", "professional", "agentic"],
|
|
40
|
+
description: "Qwen2.5-Coder 7B — A state-of-the-art model for software development.",
|
|
41
|
+
best_for: "Python, JavaScript, SQL, and complex architectural tasks.",
|
|
42
|
+
speed_toks: "3–5 tok/s",
|
|
43
|
+
recommended: false,
|
|
44
|
+
},
|
|
45
|
+
"phi35-mini": {
|
|
46
|
+
name: "phi35-mini",
|
|
47
|
+
gguf_name: "Phi-3.5-mini-instruct-Q4_K_M.gguf",
|
|
48
|
+
repo: "bartowski/Phi-3.5-mini-instruct-GGUF",
|
|
49
|
+
size_gb: 2.4,
|
|
50
|
+
ram_gb: 3.5,
|
|
51
|
+
ctx: 8192,
|
|
52
|
+
temperature: 0.3,
|
|
53
|
+
max_tokens: 2048,
|
|
54
|
+
tags: ["fast", "lightweight", "efficient"],
|
|
55
|
+
description: "Phi-3.5 Mini — A compact yet surprisingly powerful model from Microsoft.",
|
|
56
|
+
best_for: "Low-latency tasks and lightweight coding automation.",
|
|
57
|
+
speed_toks: "10–14 tok/s",
|
|
58
|
+
recommended: false,
|
|
59
|
+
},
|
|
60
|
+
"llama32-3b": {
|
|
61
|
+
name: "llama32-3b",
|
|
62
|
+
gguf_name: "Llama-3.2-3B-Instruct-Q4_K_M.gguf",
|
|
63
|
+
repo: "bartowski/Llama-3.2-3B-Instruct-GGUF",
|
|
64
|
+
size_gb: 2.0,
|
|
65
|
+
ram_gb: 3.0,
|
|
66
|
+
ctx: 4096,
|
|
67
|
+
temperature: 0.6,
|
|
68
|
+
max_tokens: 2048,
|
|
69
|
+
tags: ["fast", "standard", "chat"],
|
|
70
|
+
description: "Llama 3.2 3B — Meta's highly efficient model for general interaction.",
|
|
71
|
+
best_for: "Quick chat, simple explanations, and high-speed feedback.",
|
|
72
|
+
speed_toks: "12–18 tok/s",
|
|
73
|
+
recommended: false,
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
/** Retrieve a model configuration by registry name. */
|
|
77
|
+
export function get(name) {
|
|
78
|
+
return REGISTRY[name];
|
|
79
|
+
}
|
|
80
|
+
/** The primary model recommended for AXONIZ-ZERO. */
|
|
81
|
+
export function recommended() {
|
|
82
|
+
for (const m of Object.values(REGISTRY)) {
|
|
83
|
+
if (m.recommended)
|
|
84
|
+
return m;
|
|
85
|
+
}
|
|
86
|
+
return Object.values(REGISTRY)[0];
|
|
87
|
+
}
|
|
88
|
+
/** Filter the registry for models matching a capability tag. */
|
|
89
|
+
export function byTag(tag) {
|
|
90
|
+
return Object.values(REGISTRY).filter((m) => m.tags.includes(tag));
|
|
91
|
+
}
|
|
92
|
+
/** All models that can safely operate within the specified RAM limit. */
|
|
93
|
+
export function fitsDevice(ramGb = 14.0) {
|
|
94
|
+
return Object.values(REGISTRY).filter((m) => fits(m, ramGb));
|
|
95
|
+
}
|
|
96
|
+
/** Complete list of all registered model variants. */
|
|
97
|
+
export function allModels() {
|
|
98
|
+
return Object.values(REGISTRY);
|
|
99
|
+
}
|
|
100
|
+
/** Render a colour-coded table of available models in the terminal. */
|
|
101
|
+
export async function showTable() {
|
|
102
|
+
// Imported lazily: cli.ts also imports this module.
|
|
103
|
+
const { C } = await import("./cli.js");
|
|
104
|
+
const rows = [];
|
|
105
|
+
for (const m of Object.values(REGISTRY)) {
|
|
106
|
+
const rec = m.recommended ? " \u2605" : "";
|
|
107
|
+
rows.push([
|
|
108
|
+
m.name + rec,
|
|
109
|
+
`${m.size_gb}GB`,
|
|
110
|
+
m.speed_toks,
|
|
111
|
+
m.tags.slice(0, 3).join(", "),
|
|
112
|
+
m.best_for.slice(0, 45),
|
|
113
|
+
]);
|
|
114
|
+
}
|
|
115
|
+
const colW = [20, 8, 14, 22, 46];
|
|
116
|
+
const header = ["MODEL", "SIZE", "SPEED (CPU)", "TAGS", "BEST FOR"];
|
|
117
|
+
const sep = ` ${"\u2500".repeat(colW.reduce((a, b) => a + b, 0) + colW.length * 2)}`;
|
|
118
|
+
console.log(`\n${C.BOLD}${C.WHITE} Available Intelligence Variants${C.RESET}`);
|
|
119
|
+
console.log(sep);
|
|
120
|
+
console.log(` ${header.map((h, i) => `${C.GRAY}${pad(h, colW[i])}${C.RESET}`).join(" ")}`);
|
|
121
|
+
console.log(sep);
|
|
122
|
+
for (const row of rows) {
|
|
123
|
+
const colored = row.map((cell, i) => {
|
|
124
|
+
let color;
|
|
125
|
+
if (i === 0)
|
|
126
|
+
color = cell.includes("\u2605") ? C.BLUE : C.WHITE;
|
|
127
|
+
else if (i === 1)
|
|
128
|
+
color = C.GRAY;
|
|
129
|
+
else if (i === 2)
|
|
130
|
+
color = C.GREEN;
|
|
131
|
+
else if (i === 3)
|
|
132
|
+
color = C.PURPLE;
|
|
133
|
+
else
|
|
134
|
+
color = C.DGRAY;
|
|
135
|
+
return `${color}${pad(cell, colW[i])}${C.RESET}`;
|
|
136
|
+
});
|
|
137
|
+
console.log(` ${colored.join(" ")}`);
|
|
138
|
+
}
|
|
139
|
+
console.log(sep);
|
|
140
|
+
console.log(` ${C.DGRAY}\u2605 = Standard Recommendation \u00b7 Command: axoniz model use <name>${C.RESET}\n`);
|
|
141
|
+
}
|
|
142
|
+
/** Left-truncation-safe column padding (matches Python's str.ljust). */
|
|
143
|
+
function pad(s, width) {
|
|
144
|
+
return s.length >= width ? s : s + " ".repeat(width - s.length);
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/core/models.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export interface HardwareProfile {
|
|
2
|
+
os: string;
|
|
3
|
+
cpu_count: number;
|
|
4
|
+
total_ram_gb: number;
|
|
5
|
+
has_gpu: boolean;
|
|
6
|
+
gpu_info: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function get_hardware_profile(): HardwareProfile;
|
|
9
|
+
/** camelCase alias. */
|
|
10
|
+
export declare const getHardwareProfile: typeof get_hardware_profile;
|
|
11
|
+
/**
|
|
12
|
+
* Returns an optimized version of the config based on hardware.
|
|
13
|
+
* `setdefault` semantics are preserved: context size / GPU layers only fill in
|
|
14
|
+
* missing keys, while thread count and flash attention are always overwritten.
|
|
15
|
+
*/
|
|
16
|
+
export declare function optimize_config(currentCfg: Record<string, unknown>): Record<string, unknown>;
|
|
17
|
+
/** camelCase alias. */
|
|
18
|
+
export declare const optimizeConfig: typeof optimize_config;
|
|
19
|
+
/** Minimal shape of the agent this module mutates (parent owns src/core/agent.ts). */
|
|
20
|
+
export interface OptimizableAgent {
|
|
21
|
+
config: Record<string, unknown>;
|
|
22
|
+
_rebuild_llm?: () => unknown;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Applies optimizations directly to a running agent's backend.
|
|
26
|
+
* Returns the optimized config that was merged in.
|
|
27
|
+
*
|
|
28
|
+
* Note: `_rebuild_llm()` is awaited when it returns a promise (the TypeScript
|
|
29
|
+
* backend rebuild is async), hence this function is async.
|
|
30
|
+
*/
|
|
31
|
+
export declare function apply_optimizations(agent: OptimizableAgent): Promise<Record<string, unknown>>;
|
|
32
|
+
/** camelCase alias. */
|
|
33
|
+
export declare const applyOptimizations: typeof apply_optimizations;
|
|
34
|
+
//# sourceMappingURL=optimizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optimizer.d.ts","sourceRoot":"","sources":["../../src/core/optimizer.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAgBD,wBAAgB,oBAAoB,IAAI,eAAe,CAyCtD;AAED,uBAAuB;AACvB,eAAO,MAAM,kBAAkB,6BAAuB,CAAC;AAEvD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA+B5F;AAED,uBAAuB;AACvB,eAAO,MAAM,cAAc,wBAAkB,CAAC;AAE9C,sFAAsF;AACtF,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAQnG;AAED,uBAAuB;AACvB,eAAO,MAAM,kBAAkB,4BAAsB,CAAC"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AXONIZ BackendOptimizer — Hardware-aware performance tuning.
|
|
3
|
+
* Benchmarks the local device and optimizes LLM backend settings.
|
|
4
|
+
*
|
|
5
|
+
* Port of axoniz/core/optimizer.py
|
|
6
|
+
*
|
|
7
|
+
* Port notes:
|
|
8
|
+
* - `psutil.virtual_memory().total` → `os.totalmem()`.
|
|
9
|
+
* - `multiprocessing.cpu_count()` → `os.cpus().length`.
|
|
10
|
+
* - `platform.system()` → the Python-style platform name derived from
|
|
11
|
+
* `process.platform` ("Windows" / "Linux" / "Darwin").
|
|
12
|
+
* - `subprocess.run([...])` → `execFileSync` (the profile API stays synchronous,
|
|
13
|
+
* matching the Python contract used by `intelligence/reflex.py`).
|
|
14
|
+
* - `which nvidia-smi` → `whichSync` from ./which.ts.
|
|
15
|
+
*/
|
|
16
|
+
import os from "node:os";
|
|
17
|
+
import { execFileSync } from "node:child_process";
|
|
18
|
+
import { whichSync } from "./which.js";
|
|
19
|
+
/** Python-style platform name (`platform.system()`). */
|
|
20
|
+
function pythonPlatform() {
|
|
21
|
+
switch (process.platform) {
|
|
22
|
+
case "win32":
|
|
23
|
+
return "Windows";
|
|
24
|
+
case "darwin":
|
|
25
|
+
return "Darwin";
|
|
26
|
+
case "linux":
|
|
27
|
+
return "Linux";
|
|
28
|
+
default:
|
|
29
|
+
return process.platform;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export function get_hardware_profile() {
|
|
33
|
+
const profile = {
|
|
34
|
+
os: pythonPlatform(),
|
|
35
|
+
cpu_count: os.cpus().length,
|
|
36
|
+
total_ram_gb: 0,
|
|
37
|
+
has_gpu: false,
|
|
38
|
+
gpu_info: "",
|
|
39
|
+
};
|
|
40
|
+
// RAM
|
|
41
|
+
try {
|
|
42
|
+
profile.total_ram_gb = Math.round((os.totalmem() / 1024 ** 3) * 100) / 100;
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
/* leave 0, mirroring the ImportError branch */
|
|
46
|
+
}
|
|
47
|
+
// GPU (basic NVIDIA check)
|
|
48
|
+
try {
|
|
49
|
+
if (profile.os === "Windows") {
|
|
50
|
+
try {
|
|
51
|
+
const stdout = execFileSync("nvidia-smi", ["--query-gpu=name,memory.total", "--format=csv,noheader"], { encoding: "utf-8", timeout: 2000, stdio: ["ignore", "pipe", "ignore"] });
|
|
52
|
+
profile.has_gpu = true;
|
|
53
|
+
profile.gpu_info = stdout.trim();
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
/* no nvidia-smi / non-zero exit → no GPU */
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
// Linux/Mac check
|
|
61
|
+
if (whichSync("nvidia-smi")) {
|
|
62
|
+
profile.has_gpu = true;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
/* best effort */
|
|
68
|
+
}
|
|
69
|
+
return profile;
|
|
70
|
+
}
|
|
71
|
+
/** camelCase alias. */
|
|
72
|
+
export const getHardwareProfile = get_hardware_profile;
|
|
73
|
+
/**
|
|
74
|
+
* Returns an optimized version of the config based on hardware.
|
|
75
|
+
* `setdefault` semantics are preserved: context size / GPU layers only fill in
|
|
76
|
+
* missing keys, while thread count and flash attention are always overwritten.
|
|
77
|
+
*/
|
|
78
|
+
export function optimize_config(currentCfg) {
|
|
79
|
+
const hw = get_hardware_profile();
|
|
80
|
+
const newCfg = { ...currentCfg };
|
|
81
|
+
// CPU threads: typically N-1, or N-2 on wider machines
|
|
82
|
+
let threads = Math.max(1, hw.cpu_count - 1);
|
|
83
|
+
if (hw.cpu_count > 8) {
|
|
84
|
+
threads = hw.cpu_count - 2;
|
|
85
|
+
}
|
|
86
|
+
newCfg["n_threads"] = threads;
|
|
87
|
+
// Context size: match RAM
|
|
88
|
+
if (hw.total_ram_gb > 32) {
|
|
89
|
+
if (!("n_ctx" in newCfg))
|
|
90
|
+
newCfg["n_ctx"] = 16384;
|
|
91
|
+
}
|
|
92
|
+
else if (hw.total_ram_gb > 16) {
|
|
93
|
+
if (!("n_ctx" in newCfg))
|
|
94
|
+
newCfg["n_ctx"] = 8192;
|
|
95
|
+
}
|
|
96
|
+
else if (!("n_ctx" in newCfg)) {
|
|
97
|
+
newCfg["n_ctx"] = 4096;
|
|
98
|
+
}
|
|
99
|
+
// GPU layers for llama.cpp
|
|
100
|
+
if (hw.has_gpu) {
|
|
101
|
+
if (!("n_gpu_layers" in newCfg))
|
|
102
|
+
newCfg["n_gpu_layers"] = 35;
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
newCfg["n_gpu_layers"] = 0;
|
|
106
|
+
}
|
|
107
|
+
// Flash attention (if supported by the backend)
|
|
108
|
+
newCfg["flash_attn"] = true;
|
|
109
|
+
return newCfg;
|
|
110
|
+
}
|
|
111
|
+
/** camelCase alias. */
|
|
112
|
+
export const optimizeConfig = optimize_config;
|
|
113
|
+
/**
|
|
114
|
+
* Applies optimizations directly to a running agent's backend.
|
|
115
|
+
* Returns the optimized config that was merged in.
|
|
116
|
+
*
|
|
117
|
+
* Note: `_rebuild_llm()` is awaited when it returns a promise (the TypeScript
|
|
118
|
+
* backend rebuild is async), hence this function is async.
|
|
119
|
+
*/
|
|
120
|
+
export async function apply_optimizations(agent) {
|
|
121
|
+
const current = agent.config;
|
|
122
|
+
const optimized = optimize_config(current);
|
|
123
|
+
Object.assign(agent.config, optimized);
|
|
124
|
+
if (typeof agent._rebuild_llm === "function") {
|
|
125
|
+
await agent._rebuild_llm();
|
|
126
|
+
}
|
|
127
|
+
return optimized;
|
|
128
|
+
}
|
|
129
|
+
/** camelCase alias. */
|
|
130
|
+
export const applyOptimizations = apply_optimizations;
|
|
131
|
+
//# sourceMappingURL=optimizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optimizer.js","sourceRoot":"","sources":["../../src/core/optimizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export interface RoleData {
|
|
2
|
+
id?: string;
|
|
3
|
+
name?: string;
|
|
4
|
+
title?: string;
|
|
5
|
+
personality?: string[];
|
|
6
|
+
core_traits?: string[];
|
|
7
|
+
authority_level?: number;
|
|
8
|
+
sub_roles?: unknown[];
|
|
9
|
+
heartbeat_instructions?: string;
|
|
10
|
+
system_prompt_template?: string;
|
|
11
|
+
[key: string]: unknown;
|
|
12
|
+
}
|
|
13
|
+
export declare class Persona {
|
|
14
|
+
readonly roleId: string;
|
|
15
|
+
readonly data: RoleData;
|
|
16
|
+
readonly name: string;
|
|
17
|
+
readonly title: string;
|
|
18
|
+
readonly authorityLevel: number;
|
|
19
|
+
readonly subRoles: unknown[];
|
|
20
|
+
readonly heartbeatInstructions: string;
|
|
21
|
+
constructor(role?: string);
|
|
22
|
+
/** Candidate locations for the role YAML, mirroring the Python search order. */
|
|
23
|
+
private rolePaths;
|
|
24
|
+
private loadRole;
|
|
25
|
+
/**
|
|
26
|
+
* Render the system prompt template.
|
|
27
|
+
* Mirrors Python's str.format with a manual fallback for unknown keys.
|
|
28
|
+
*/
|
|
29
|
+
buildSystemPrompt(workspace?: string, toolNames?: string[], sessionId?: string): string;
|
|
30
|
+
buildHeartbeatPrompt(recentChat?: string): string;
|
|
31
|
+
getAuthorityLevel(action: string): number;
|
|
32
|
+
isAutonomous(action: string): boolean;
|
|
33
|
+
}
|
|
34
|
+
export declare function getPersona(role?: string): Persona;
|
|
35
|
+
//# sourceMappingURL=persona.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persona.d.ts","sourceRoot":"","sources":["../../src/core/persona.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,QAAQ;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;IACtB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAgBD,qBAAa,OAAO;IAClB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;IAC7B,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IAEvC,YAAY,IAAI,SAAS,EAWxB;IAED,gFAAgF;IAChF,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,QAAQ;IAiBhB;;;OAGG;IACH,iBAAiB,CAAC,SAAS,SAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,SAAS,SAAY,GAAG,MAAM,CAmCtF;IAED,oBAAoB,CAAC,UAAU,SAAK,GAAG,MAAM,CAE5C;IAED,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMxC;IAED,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEpC;CACF;AAQD,wBAAgB,UAAU,CAAC,IAAI,SAAS,GAAG,OAAO,CAKjD"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AXONIZ Persona Engine — concise identity and role system.
|
|
3
|
+
* Loads roles from YAML and builds compact system prompts.
|
|
4
|
+
* Port of axoniz/core/persona.py (PyYAML -> js-yaml).
|
|
5
|
+
*/
|
|
6
|
+
import fs from "node:fs";
|
|
7
|
+
import path from "node:path";
|
|
8
|
+
import { fileURLToPath } from "node:url";
|
|
9
|
+
import * as yaml from "js-yaml";
|
|
10
|
+
import { getLogger } from "./logger.js";
|
|
11
|
+
const logger = getLogger();
|
|
12
|
+
const HERE = path.dirname(fileURLToPath(import.meta.url));
|
|
13
|
+
const DEFAULT_ROLE = {
|
|
14
|
+
name: "BERU",
|
|
15
|
+
title: "AI Agent",
|
|
16
|
+
personality: ["efficient", "analytical", "accountable"],
|
|
17
|
+
system_prompt_template: "You are {name}, {title}.\n" +
|
|
18
|
+
"Rules: read before edit, use tools only, verify after changes, summarize on done.\n" +
|
|
19
|
+
"Tools: {tool_list}\n" +
|
|
20
|
+
"Personality: {personality_list}",
|
|
21
|
+
authority_level: 5,
|
|
22
|
+
sub_roles: [],
|
|
23
|
+
heartbeat_instructions: "Check system status and pending tasks.",
|
|
24
|
+
};
|
|
25
|
+
export class Persona {
|
|
26
|
+
roleId;
|
|
27
|
+
data;
|
|
28
|
+
name;
|
|
29
|
+
title;
|
|
30
|
+
authorityLevel;
|
|
31
|
+
subRoles;
|
|
32
|
+
heartbeatInstructions;
|
|
33
|
+
constructor(role = "beru") {
|
|
34
|
+
this.roleId = role;
|
|
35
|
+
this.data = this.loadRole(role);
|
|
36
|
+
this.name = String(this.data.name ?? "BERU");
|
|
37
|
+
this.title = String(this.data.title ?? "AI Agent");
|
|
38
|
+
this.authorityLevel = Number(this.data.authority_level ?? 5);
|
|
39
|
+
this.subRoles = Array.isArray(this.data.sub_roles) ? this.data.sub_roles : [];
|
|
40
|
+
this.heartbeatInstructions = String(this.data.heartbeat_instructions ??
|
|
41
|
+
"Check system status, pending tasks, and trajectory health.");
|
|
42
|
+
}
|
|
43
|
+
/** Candidate locations for the role YAML, mirroring the Python search order. */
|
|
44
|
+
rolePaths(roleId) {
|
|
45
|
+
return [
|
|
46
|
+
path.join(HERE, "..", "roles", `${roleId}.yaml`),
|
|
47
|
+
path.join(HERE, "..", "..", "roles", `${roleId}.yaml`),
|
|
48
|
+
path.join(process.cwd(), "axoniz", "roles", `${roleId}.yaml`),
|
|
49
|
+
path.join(process.cwd(), "roles", `${roleId}.yaml`),
|
|
50
|
+
];
|
|
51
|
+
}
|
|
52
|
+
loadRole(roleId) {
|
|
53
|
+
for (const p of this.rolePaths(roleId)) {
|
|
54
|
+
if (!fs.existsSync(p))
|
|
55
|
+
continue;
|
|
56
|
+
try {
|
|
57
|
+
const data = yaml.load(fs.readFileSync(p, "utf-8"));
|
|
58
|
+
if (data && typeof data === "object")
|
|
59
|
+
return data;
|
|
60
|
+
}
|
|
61
|
+
catch (e) {
|
|
62
|
+
logger.error(`Failed to load role ${roleId} from ${p}: ${errMsg(e)}`, "axoniz.persona");
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
logger.warning(`[Persona] Role YAML '${roleId}.yaml' not found — using built-in default`, "axoniz.persona");
|
|
66
|
+
return structuredClone(DEFAULT_ROLE);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Render the system prompt template.
|
|
70
|
+
* Mirrors Python's str.format with a manual fallback for unknown keys.
|
|
71
|
+
*/
|
|
72
|
+
buildSystemPrompt(workspace = ".", toolNames, sessionId = "default") {
|
|
73
|
+
const template = String(this.data.system_prompt_template ?? DEFAULT_ROLE.system_prompt_template ?? "");
|
|
74
|
+
const personality = (Array.isArray(this.data.personality) ? this.data.personality : []).join(", ");
|
|
75
|
+
const toolList = (toolNames ?? []).join(", ");
|
|
76
|
+
const context = {
|
|
77
|
+
name: this.name,
|
|
78
|
+
title: this.title,
|
|
79
|
+
personality_list: personality,
|
|
80
|
+
workspace,
|
|
81
|
+
session_id: sessionId,
|
|
82
|
+
tool_list: toolList,
|
|
83
|
+
};
|
|
84
|
+
let prompt = template;
|
|
85
|
+
let unknownKey = null;
|
|
86
|
+
for (const [key, value] of Object.entries(context)) {
|
|
87
|
+
const placeholder = `{${key}}`;
|
|
88
|
+
if (!prompt.includes(placeholder))
|
|
89
|
+
continue;
|
|
90
|
+
prompt = prompt.split(placeholder).join(value);
|
|
91
|
+
}
|
|
92
|
+
// Detect any remaining placeholders and warn like the Python KeyError branch.
|
|
93
|
+
const leftover = prompt.match(/\{([a-zA-Z_][a-zA-Z0-9_]*)\}/);
|
|
94
|
+
if (leftover)
|
|
95
|
+
unknownKey = leftover[1];
|
|
96
|
+
if (unknownKey) {
|
|
97
|
+
logger.warning(`[Persona] template referenced unknown key '${unknownKey}', rendered with fallbacks`, "axoniz.persona");
|
|
98
|
+
}
|
|
99
|
+
return prompt.trim();
|
|
100
|
+
}
|
|
101
|
+
buildHeartbeatPrompt(recentChat = "") {
|
|
102
|
+
return `System check: ${this.heartbeatInstructions}\nRecent context:\n${recentChat}`;
|
|
103
|
+
}
|
|
104
|
+
getAuthorityLevel(action) {
|
|
105
|
+
if (action.includes("delete") || action.includes("format") || action.includes("dangerous")) {
|
|
106
|
+
return 4;
|
|
107
|
+
}
|
|
108
|
+
if (action.includes("write"))
|
|
109
|
+
return 2;
|
|
110
|
+
return 1;
|
|
111
|
+
}
|
|
112
|
+
isAutonomous(action) {
|
|
113
|
+
return this.getAuthorityLevel(action) <= this.authorityLevel;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
function errMsg(e) {
|
|
117
|
+
return e instanceof Error ? e.message : String(e);
|
|
118
|
+
}
|
|
119
|
+
let personaInstance = null;
|
|
120
|
+
export function getPersona(role = "beru") {
|
|
121
|
+
if (personaInstance === null || personaInstance.roleId !== role) {
|
|
122
|
+
personaInstance = new Persona(role);
|
|
123
|
+
}
|
|
124
|
+
return personaInstance;
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=persona.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persona.js","sourceRoot":"","sources":["../../src/core/persona.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local rate limiting using an in-memory store. No Redis or external services required.
|
|
3
|
+
* Port of axoniz/core/rate_limit.py (sliding-window log, single-threaded JS event loop).
|
|
4
|
+
*/
|
|
5
|
+
export declare class RateLimiter {
|
|
6
|
+
protected readonly buckets: Map<string, number[]>;
|
|
7
|
+
/**
|
|
8
|
+
* Check whether a request is allowed under the rate limit.
|
|
9
|
+
* Records the request when allowed, mirroring the Python implementation.
|
|
10
|
+
*/
|
|
11
|
+
isAllowed(key: string, maxRequests?: number, windowSeconds?: number): boolean;
|
|
12
|
+
/** Remaining requests for a key within the current window. */
|
|
13
|
+
getRemaining(key: string, maxRequests?: number, windowSeconds?: number): number;
|
|
14
|
+
/** Seconds until the oldest request in the window expires (0 when not limited). */
|
|
15
|
+
getRetryAfter(key: string, windowSeconds?: number): number;
|
|
16
|
+
/** Reset rate limit for a key. */
|
|
17
|
+
reset(key: string): void;
|
|
18
|
+
/** Number of tracked keys (useful for metrics/tests). */
|
|
19
|
+
size(): number;
|
|
20
|
+
}
|
|
21
|
+
/** Get the global rate limiter instance. */
|
|
22
|
+
export declare function getRateLimiter(): RateLimiter;
|
|
23
|
+
//# sourceMappingURL=rate_limit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate_limit.d.ts","sourceRoot":"","sources":["../../src/core/rate_limit.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,qBAAa,WAAW;IACtB,SAAS,CAAC,QAAQ,CAAC,OAAO,wBAA+B;IAEzD;;;OAGG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,SAAM,EAAE,aAAa,SAAK,GAAG,OAAO,CAoBrE;IAED,8DAA8D;IAC9D,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,SAAM,EAAE,aAAa,SAAK,GAAG,MAAM,CAMvE;IAED,mFAAmF;IACnF,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,SAAK,GAAG,MAAM,CAKrD;IAED,kCAAkC;IAClC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEvB;IAED,yDAAyD;IACzD,IAAI,IAAI,MAAM,CAEb;CACF;AAKD,4CAA4C;AAC5C,wBAAgB,cAAc,IAAI,WAAW,CAE5C"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local rate limiting using an in-memory store. No Redis or external services required.
|
|
3
|
+
* Port of axoniz/core/rate_limit.py (sliding-window log, single-threaded JS event loop).
|
|
4
|
+
*/
|
|
5
|
+
export class RateLimiter {
|
|
6
|
+
buckets = new Map();
|
|
7
|
+
/**
|
|
8
|
+
* Check whether a request is allowed under the rate limit.
|
|
9
|
+
* Records the request when allowed, mirroring the Python implementation.
|
|
10
|
+
*/
|
|
11
|
+
isAllowed(key, maxRequests = 100, windowSeconds = 60) {
|
|
12
|
+
const now = Date.now() / 1000;
|
|
13
|
+
const cutoff = now - windowSeconds;
|
|
14
|
+
let requests = this.buckets.get(key);
|
|
15
|
+
if (!requests) {
|
|
16
|
+
requests = [];
|
|
17
|
+
this.buckets.set(key, requests);
|
|
18
|
+
}
|
|
19
|
+
// Drop entries outside the window (oldest first, so shift from the front).
|
|
20
|
+
let drop = 0;
|
|
21
|
+
while (drop < requests.length && requests[drop] < cutoff)
|
|
22
|
+
drop++;
|
|
23
|
+
if (drop > 0)
|
|
24
|
+
requests.splice(0, drop);
|
|
25
|
+
if (requests.length < maxRequests) {
|
|
26
|
+
requests.push(now);
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
/** Remaining requests for a key within the current window. */
|
|
32
|
+
getRemaining(key, maxRequests = 100, windowSeconds = 60) {
|
|
33
|
+
const now = Date.now() / 1000;
|
|
34
|
+
const cutoff = now - windowSeconds;
|
|
35
|
+
const requests = this.buckets.get(key) ?? [];
|
|
36
|
+
const current = requests.filter((t) => t > cutoff).length;
|
|
37
|
+
return Math.max(0, maxRequests - current);
|
|
38
|
+
}
|
|
39
|
+
/** Seconds until the oldest request in the window expires (0 when not limited). */
|
|
40
|
+
getRetryAfter(key, windowSeconds = 60) {
|
|
41
|
+
const requests = this.buckets.get(key) ?? [];
|
|
42
|
+
if (requests.length === 0)
|
|
43
|
+
return 0;
|
|
44
|
+
const elapsed = Date.now() / 1000 - requests[0];
|
|
45
|
+
return Math.max(0, Math.ceil(windowSeconds - elapsed));
|
|
46
|
+
}
|
|
47
|
+
/** Reset rate limit for a key. */
|
|
48
|
+
reset(key) {
|
|
49
|
+
this.buckets.delete(key);
|
|
50
|
+
}
|
|
51
|
+
/** Number of tracked keys (useful for metrics/tests). */
|
|
52
|
+
size() {
|
|
53
|
+
return this.buckets.size;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/* Global rate limiter instance */
|
|
57
|
+
const limiter = new RateLimiter();
|
|
58
|
+
/** Get the global rate limiter instance. */
|
|
59
|
+
export function getRateLimiter() {
|
|
60
|
+
return limiter;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=rate_limit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate_limit.js","sourceRoot":"","sources":["../../src/core/rate_limit.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,OAAO,WAAW;IACH,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAC;IAEzD;;;OAGG;IACH,SAAS,CAAC,GAAW,EAAE,WAAW,GAAG,GAAG,EAAE,aAAa,GAAG,EAAE;QAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QAC9B,MAAM,MAAM,GAAG,GAAG,GAAG,aAAa,CAAC;QAEnC,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ,GAAG,EAAE,CAAC;YACd,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAClC,CAAC;QAED,2EAA2E;QAC3E,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,OAAO,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM;YAAE,IAAI,EAAE,CAAC;QACjE,IAAI,IAAI,GAAG,CAAC;YAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAEvC,IAAI,QAAQ,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;YAClC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,8DAA8D;IAC9D,YAAY,CAAC,GAAW,EAAE,WAAW,GAAG,GAAG,EAAE,aAAa,GAAG,EAAE;QAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QAC9B,MAAM,MAAM,GAAG,GAAG,GAAG,aAAa,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC;QAC1D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,mFAAmF;IACnF,aAAa,CAAC,GAAW,EAAE,aAAa,GAAG,EAAE;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC7C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,kCAAkC;IAClC,KAAK,CAAC,GAAW;QACf,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,yDAAyD;IACzD,IAAI;QACF,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;CACF;AAED,kCAAkC;AAClC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAElC,4CAA4C;AAC5C,MAAM,UAAU,cAAc;IAC5B,OAAO,OAAO,CAAC;AACjB,CAAC"}
|