@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
package/dist/startup.js
ADDED
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AXONIZ-ZERO Startup Integration — boots every subsystem in the right order.
|
|
3
|
+
* Port of axoniz/startup.py.
|
|
4
|
+
*
|
|
5
|
+
* Handles:
|
|
6
|
+
* - Palace / KG memory warm-up
|
|
7
|
+
* - Workflow engine start
|
|
8
|
+
* - Awareness service start (optional)
|
|
9
|
+
* - Telegram bot start (if configured)
|
|
10
|
+
* - Sidecar connection attempt
|
|
11
|
+
* - Web server init with all managers wired
|
|
12
|
+
*/
|
|
13
|
+
import process from "node:process";
|
|
14
|
+
import { loadConfig, loadConfigWithAutodetect } from "./core/config.js";
|
|
15
|
+
import { debug, info, warn } from "./core/debug.js";
|
|
16
|
+
/* ── Step 1: Build agent ──────────────────────────────────────────────────── */
|
|
17
|
+
export async function bootAgent(cfg = null, overrides = null) {
|
|
18
|
+
const { Agent } = await import("./core/agent.js");
|
|
19
|
+
const config = (cfg ?? loadConfigWithAutodetect());
|
|
20
|
+
if (overrides) {
|
|
21
|
+
for (const [k, v] of Object.entries(overrides)) {
|
|
22
|
+
if (v !== null && v !== undefined)
|
|
23
|
+
config[k] = v;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
// Ensure a provider is set only when none is configured.
|
|
27
|
+
const llm = config.llm;
|
|
28
|
+
if (!config.provider && !config.backend && !llm?.active_provider) {
|
|
29
|
+
config.provider = "llamacpp";
|
|
30
|
+
config.backend = "llamacpp";
|
|
31
|
+
}
|
|
32
|
+
// Enable standby mode for faster startup: weights load on first use.
|
|
33
|
+
if (config.standby === undefined || config.standby === null)
|
|
34
|
+
config.standby = true;
|
|
35
|
+
info(`[Startup] Building agent | provider=${String(config.provider)} ` +
|
|
36
|
+
`model=${String(config.model_path ?? "none")}`);
|
|
37
|
+
return new Agent(config);
|
|
38
|
+
}
|
|
39
|
+
/* ── Step 2: Warm up memory ───────────────────────────────────────────────── */
|
|
40
|
+
export function bootMemory(agent) {
|
|
41
|
+
// Non-blocking warm-up.
|
|
42
|
+
void (async () => {
|
|
43
|
+
try {
|
|
44
|
+
if (agent.memory.palace.is_available()) {
|
|
45
|
+
const ctx = await agent.memory.palace.get_context();
|
|
46
|
+
info(`[Memory] Palace warm | ${String(ctx).length} chars context loaded`);
|
|
47
|
+
}
|
|
48
|
+
const kgStats = agent.memory.kg.stats();
|
|
49
|
+
info(`[Memory] KG ready | ${Number(kgStats.total_facts ?? 0)} facts`);
|
|
50
|
+
}
|
|
51
|
+
catch (e) {
|
|
52
|
+
warn(`[Memory] Warm failed: ${errMsg(e)}`);
|
|
53
|
+
}
|
|
54
|
+
})();
|
|
55
|
+
}
|
|
56
|
+
/* ── Step 3: Workflow engine ──────────────────────────────────────────────── */
|
|
57
|
+
export async function bootWorkflows(agent) {
|
|
58
|
+
try {
|
|
59
|
+
const m = (await import("./workflows/engine.js"));
|
|
60
|
+
const wf = m.getWorkflowEngine();
|
|
61
|
+
wf.setAgentCallback((task) => agent.run(task));
|
|
62
|
+
wf.start();
|
|
63
|
+
const st = wf.status();
|
|
64
|
+
info(`[Workflows] ${st.total_workflows ?? 0} workflows | ${st.enabled ?? 0} enabled`);
|
|
65
|
+
return wf;
|
|
66
|
+
}
|
|
67
|
+
catch (e) {
|
|
68
|
+
warn(`[Workflows] Failed to start: ${errMsg(e)}`);
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/* ── Step 4: Awareness service (optional) ─────────────────────────────────── */
|
|
73
|
+
export async function bootAwareness(agent) {
|
|
74
|
+
if (!loadConfig().awareness?.enabled) {
|
|
75
|
+
debug("[Awareness] Disabled in config (set awareness.enabled=true to enable)");
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
try {
|
|
79
|
+
const m = (await import("./awareness/service.js"));
|
|
80
|
+
const svc = m.getAwarenessService();
|
|
81
|
+
svc.setSuggestionCallback((s) => {
|
|
82
|
+
agent.onToken?.(`\n[\u26a1 FRAZIYM AI] ${s}\n`);
|
|
83
|
+
});
|
|
84
|
+
svc.start();
|
|
85
|
+
info("[Awareness] Service started");
|
|
86
|
+
return svc;
|
|
87
|
+
}
|
|
88
|
+
catch (e) {
|
|
89
|
+
warn(`[Awareness] Failed to start: ${errMsg(e)}`);
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/* ── Step 5: Telegram bot (optional) ──────────────────────────────────────── */
|
|
94
|
+
export async function bootTelegram(agent) {
|
|
95
|
+
try {
|
|
96
|
+
const m = (await import("./comms/telegram.js"));
|
|
97
|
+
const bot = m.getBot();
|
|
98
|
+
if (!bot.isConfigured()) {
|
|
99
|
+
debug("[Telegram] Not configured (set BERU_TELEGRAM_TOKEN + BERU_TELEGRAM_CHAT_ID)");
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
m.startBot({ agentCallback: (t) => agent.run(t) });
|
|
103
|
+
info("[Telegram] Bot started");
|
|
104
|
+
return bot;
|
|
105
|
+
}
|
|
106
|
+
catch (e) {
|
|
107
|
+
warn(`[Telegram] Failed to start: ${errMsg(e)}`);
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/* ── Step 6: Sidecar connection ───────────────────────────────────────────── */
|
|
112
|
+
export async function bootSidecar() {
|
|
113
|
+
try {
|
|
114
|
+
const m = (await import("./sidecar/client.js"));
|
|
115
|
+
const sc = await m.getSidecar();
|
|
116
|
+
if (await sc.is_alive()) {
|
|
117
|
+
info(`[Sidecar] Connected at ${sc.base_url}`);
|
|
118
|
+
return sc;
|
|
119
|
+
}
|
|
120
|
+
debug("[Sidecar] Not running (optional — install Jarvis sidecar to enable)");
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
catch (e) {
|
|
124
|
+
warn(`[Sidecar] Connection failed: ${errMsg(e)}`);
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/* ── Step 7: Web server ───────────────────────────────────────────────────── */
|
|
129
|
+
export async function bootWeb(agent, port = 7860, host = "localhost", openBrowser = true) {
|
|
130
|
+
const { WebServer } = await import("./web/server.js");
|
|
131
|
+
const ws = new WebServer({ agent, host, port });
|
|
132
|
+
await ws.start(openBrowser);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Boot everything in the correct order and return the agent.
|
|
136
|
+
* If `web` is true, blocks serving the web UI.
|
|
137
|
+
*/
|
|
138
|
+
export async function fullBoot(opts = {}) {
|
|
139
|
+
const { cfg = null, overrides = null, port = 7860, openBrowser = true, web = true } = opts;
|
|
140
|
+
printBootHeader();
|
|
141
|
+
const agent = await bootAgent(cfg, overrides);
|
|
142
|
+
printStep("Agent", `provider=${String(agent.config.provider)} workspace=${agent.workspace}`);
|
|
143
|
+
bootMemory(agent);
|
|
144
|
+
printStep("Memory", "palace + KG warming");
|
|
145
|
+
// Phase: Axodex check
|
|
146
|
+
const axStatus = await agent.axodex.status();
|
|
147
|
+
if (axStatus.includes("ERROR")) {
|
|
148
|
+
printStep("Axodex", "\u001b[91mNo index found\u001b[0m (Run 'axodex analyze')");
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
printStep("Axodex", "Graph index active");
|
|
152
|
+
}
|
|
153
|
+
await bootWorkflows(agent);
|
|
154
|
+
printStep("Workflows", "engine running");
|
|
155
|
+
await bootAwareness(agent);
|
|
156
|
+
printStep("Awareness", loadConfig().awareness?.enabled ? "started" : "disabled");
|
|
157
|
+
await bootTelegram(agent);
|
|
158
|
+
const sc = await bootSidecar();
|
|
159
|
+
printStep("Sidecar", sc ? "connected" : "offline (optional)");
|
|
160
|
+
console.log();
|
|
161
|
+
if (web) {
|
|
162
|
+
await bootWeb(agent, port, "localhost", openBrowser);
|
|
163
|
+
}
|
|
164
|
+
return agent;
|
|
165
|
+
}
|
|
166
|
+
/* ── Print helpers ────────────────────────────────────────────────────────── */
|
|
167
|
+
function c(code) {
|
|
168
|
+
if (process.env.NO_COLOR || !process.stdout.isTTY)
|
|
169
|
+
return "";
|
|
170
|
+
return `\u001b[${code}m`;
|
|
171
|
+
}
|
|
172
|
+
const R = c("0");
|
|
173
|
+
const DG = c("90");
|
|
174
|
+
const GR = c("37");
|
|
175
|
+
const GB = c("92");
|
|
176
|
+
const WH = c("97");
|
|
177
|
+
const B = c("1");
|
|
178
|
+
const PU = c("95");
|
|
179
|
+
void WH;
|
|
180
|
+
void R;
|
|
181
|
+
function printBootHeader() {
|
|
182
|
+
console.log();
|
|
183
|
+
console.log(` ${PU}${B}AXONIZ-ZERO - FRAZIYM AI${c("0")} ${DG}booting...${c("0")}`);
|
|
184
|
+
console.log();
|
|
185
|
+
}
|
|
186
|
+
function printStep(name, detail) {
|
|
187
|
+
const lower = detail.toLowerCase();
|
|
188
|
+
const status = !lower.includes("fail") && !lower.includes("error") ? `${GB}+${c("0")}` : `\u001b[91m-${c("0")}`;
|
|
189
|
+
console.log(` ${status} ${DG}${name.padEnd(14)}${c("0")}${GR}${detail}${c("0")}`);
|
|
190
|
+
}
|
|
191
|
+
function errMsg(e) {
|
|
192
|
+
return e instanceof Error ? e.message : String(e);
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=startup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startup.js","sourceRoot":"","sources":["../src/startup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AXONIZ-ZERO — internal helpers shared by the `src/tools/*` ports.
|
|
3
|
+
*
|
|
4
|
+
* Private to `src/tools` (`_` prefix, not re-exported from `index.ts`). It
|
|
5
|
+
* replaces the Python standard-library primitives the original modules used:
|
|
6
|
+
*
|
|
7
|
+
* subprocess.run(capture_output=True) -> runCaptured (promisified exec)
|
|
8
|
+
* subprocess.run([...]) -> execFileCaptured
|
|
9
|
+
* glob.glob(..., recursive=True) -> expandGlob / globToRegExp
|
|
10
|
+
* difflib.unified_diff -> unifiedDiff
|
|
11
|
+
* shutil.which -> resolveCommand (wraps core whichSync)
|
|
12
|
+
*/
|
|
13
|
+
export interface CapturedRun {
|
|
14
|
+
/** Captured stdout (UTF-8 decoded, invalid bytes replaced). */
|
|
15
|
+
stdout: string;
|
|
16
|
+
/** Captured stderr (UTF-8 decoded, invalid bytes replaced). */
|
|
17
|
+
stderr: string;
|
|
18
|
+
/** Exit code; `null` when the process was killed by a signal. */
|
|
19
|
+
code: number | null;
|
|
20
|
+
/** True when the process was killed because the timeout elapsed. */
|
|
21
|
+
timedOut: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface RunOptions {
|
|
24
|
+
cwd?: string;
|
|
25
|
+
env?: NodeJS.ProcessEnv;
|
|
26
|
+
timeoutMs?: number;
|
|
27
|
+
/** Output ceiling in characters (default 16 MiB). */
|
|
28
|
+
maxBuffer?: number;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Run a command through the platform shell (`cmd.exe /c` on Windows,
|
|
32
|
+
* `/bin/sh -c` elsewhere) with output captured as text.
|
|
33
|
+
*
|
|
34
|
+
* Never rejects: spawn failures, non-zero exits and timeouts all resolve with
|
|
35
|
+
* a `CapturedRun`, mirroring `subprocess.run` inside a try/except.
|
|
36
|
+
*/
|
|
37
|
+
export declare function runCaptured(command: string, opts?: RunOptions): Promise<CapturedRun>;
|
|
38
|
+
/**
|
|
39
|
+
* Run an executable directly (no shell) with output captured as text.
|
|
40
|
+
* Rejects with the original error when the binary cannot be spawned at all
|
|
41
|
+
* (Python's `FileNotFoundError`); non-zero exits and timeouts resolve.
|
|
42
|
+
*/
|
|
43
|
+
export declare function execFileCaptured(file: string, args: string[], opts?: RunOptions): Promise<CapturedRun>;
|
|
44
|
+
/**
|
|
45
|
+
* Resolve an executable against PATH, following Windows shim extensions
|
|
46
|
+
* (`npx` -> `npx.cmd`) so `execFile` can launch it without a shell.
|
|
47
|
+
*/
|
|
48
|
+
export declare function resolveCommand(name: string): string | null;
|
|
49
|
+
/** Render an unknown thrown value the way Python's `str(e)` would. */
|
|
50
|
+
export declare function errText(e: unknown): string;
|
|
51
|
+
/** True when the segment contains glob metacharacters (`*`, `?`, `[...]`). */
|
|
52
|
+
export declare function hasGlobMagic(segment: string): boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Compile one `path`-style glob pattern into an anchored RegExp supporting
|
|
55
|
+
* `*` (segment-local), `**` (any number of segments) and `[...]` classes.
|
|
56
|
+
* Matching is done on forward-slash-normalised paths.
|
|
57
|
+
*/
|
|
58
|
+
export declare function globToRegExp(pattern: string): RegExp;
|
|
59
|
+
/**
|
|
60
|
+
* `glob.glob(os.path.join(base, "**", pattern), recursive=True)`.
|
|
61
|
+
*
|
|
62
|
+
* Returns absolute paths built with the native separator, skipping
|
|
63
|
+
* dot-directories (Python's `glob` does not descend into hidden entries for a
|
|
64
|
+
* wildcard segment) and refusing to escape `base`.
|
|
65
|
+
*/
|
|
66
|
+
export declare function expandGlob(base: string, pattern: string): string[];
|
|
67
|
+
export interface UnifiedDiffOptions {
|
|
68
|
+
fromFile: string;
|
|
69
|
+
toFile: string;
|
|
70
|
+
/** Context lines, mirrors difflib's `n=`. Default 3. */
|
|
71
|
+
context?: number;
|
|
72
|
+
}
|
|
73
|
+
/** One difflib-style opcode: a[i1:i2] vs b[j1:j2]. */
|
|
74
|
+
interface Opcode {
|
|
75
|
+
tag: "equal" | "delete" | "insert";
|
|
76
|
+
i1: number;
|
|
77
|
+
i2: number;
|
|
78
|
+
j1: number;
|
|
79
|
+
j2: number;
|
|
80
|
+
}
|
|
81
|
+
/** Opcodes from an LCS table — same shape as `difflib.SequenceMatcher.get_opcodes()`. */
|
|
82
|
+
export declare function sequenceOpcodes(a: string[], b: string[]): Opcode[];
|
|
83
|
+
/**
|
|
84
|
+
* Pragmatic stand-in for `difflib.unified_diff(a, b, fromfile, tofile, n=k)`.
|
|
85
|
+
* Emits `---`/`+++` headers, `@@ -l,s +l,s @@` hunk headers, then context,
|
|
86
|
+
* removal (`-`) and addition (`+`) lines exactly as difflib does.
|
|
87
|
+
*/
|
|
88
|
+
export declare function unifiedDiff(a: string[], b: string[], opts: UnifiedDiffOptions): string[];
|
|
89
|
+
export {};
|
|
90
|
+
//# sourceMappingURL=_internal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_internal.d.ts","sourceRoot":"","sources":["../../src/tools/_internal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAUH,MAAM,WAAW,WAAW;IAC1B,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,oEAAoE;IACpE,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,UAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAuCxF;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,GAAE,UAAe,GACpB,OAAO,CAAC,WAAW,CAAC,CA8CtB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO1D;AAED,sEAAsE;AACtE,wBAAgB,OAAO,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAQ1C;AAID,8EAA8E;AAC9E,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAErD;AAMD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA6CpD;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CA6ClE;AAID,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,sDAAsD;AACtD,UAAU,MAAM;IACd,GAAG,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,yFAAyF;AACzF,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAoClE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,kBAAkB,GAAG,MAAM,EAAE,CA4ExF"}
|
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AXONIZ-ZERO — internal helpers shared by the `src/tools/*` ports.
|
|
3
|
+
*
|
|
4
|
+
* Private to `src/tools` (`_` prefix, not re-exported from `index.ts`). It
|
|
5
|
+
* replaces the Python standard-library primitives the original modules used:
|
|
6
|
+
*
|
|
7
|
+
* subprocess.run(capture_output=True) -> runCaptured (promisified exec)
|
|
8
|
+
* subprocess.run([...]) -> execFileCaptured
|
|
9
|
+
* glob.glob(..., recursive=True) -> expandGlob / globToRegExp
|
|
10
|
+
* difflib.unified_diff -> unifiedDiff
|
|
11
|
+
* shutil.which -> resolveCommand (wraps core whichSync)
|
|
12
|
+
*/
|
|
13
|
+
import { exec, execFile } from "node:child_process";
|
|
14
|
+
import fs from "node:fs";
|
|
15
|
+
import path from "node:path";
|
|
16
|
+
import { whichSync } from "../core/which.js";
|
|
17
|
+
/**
|
|
18
|
+
* Run a command through the platform shell (`cmd.exe /c` on Windows,
|
|
19
|
+
* `/bin/sh -c` elsewhere) with output captured as text.
|
|
20
|
+
*
|
|
21
|
+
* Never rejects: spawn failures, non-zero exits and timeouts all resolve with
|
|
22
|
+
* a `CapturedRun`, mirroring `subprocess.run` inside a try/except.
|
|
23
|
+
*/
|
|
24
|
+
export function runCaptured(command, opts = {}) {
|
|
25
|
+
const timeout = opts.timeoutMs ?? 0;
|
|
26
|
+
return new Promise((resolve) => {
|
|
27
|
+
exec(command, {
|
|
28
|
+
cwd: opts.cwd,
|
|
29
|
+
env: opts.env,
|
|
30
|
+
timeout: timeout > 0 ? timeout : undefined,
|
|
31
|
+
killSignal: "SIGKILL",
|
|
32
|
+
maxBuffer: opts.maxBuffer ?? 16 * 1024 * 1024,
|
|
33
|
+
encoding: "utf8",
|
|
34
|
+
windowsHide: true,
|
|
35
|
+
}, (err, stdout, stderr) => {
|
|
36
|
+
const e = err;
|
|
37
|
+
let code = 0;
|
|
38
|
+
let timedOut = false;
|
|
39
|
+
if (e) {
|
|
40
|
+
if (typeof e.code === "number") {
|
|
41
|
+
code = e.code;
|
|
42
|
+
}
|
|
43
|
+
else if (e.killed || e.signal) {
|
|
44
|
+
code = null;
|
|
45
|
+
timedOut = true;
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
code = 1;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
resolve({
|
|
52
|
+
stdout: String(stdout ?? ""),
|
|
53
|
+
stderr: String(stderr ?? ""),
|
|
54
|
+
code,
|
|
55
|
+
timedOut,
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Run an executable directly (no shell) with output captured as text.
|
|
62
|
+
* Rejects with the original error when the binary cannot be spawned at all
|
|
63
|
+
* (Python's `FileNotFoundError`); non-zero exits and timeouts resolve.
|
|
64
|
+
*/
|
|
65
|
+
export function execFileCaptured(file, args, opts = {}) {
|
|
66
|
+
const timeout = opts.timeoutMs ?? 0;
|
|
67
|
+
return new Promise((resolve, reject) => {
|
|
68
|
+
execFile(file, args, {
|
|
69
|
+
cwd: opts.cwd,
|
|
70
|
+
env: opts.env,
|
|
71
|
+
timeout: timeout > 0 ? timeout : undefined,
|
|
72
|
+
killSignal: "SIGKILL",
|
|
73
|
+
maxBuffer: opts.maxBuffer ?? 16 * 1024 * 1024,
|
|
74
|
+
encoding: "utf8",
|
|
75
|
+
windowsHide: true,
|
|
76
|
+
shell: false,
|
|
77
|
+
}, (err, stdout, stderr) => {
|
|
78
|
+
const e = err;
|
|
79
|
+
if (!e) {
|
|
80
|
+
resolve({ stdout: String(stdout ?? ""), stderr: String(stderr ?? ""), code: 0, timedOut: false });
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
if (e.killed || e.signal) {
|
|
84
|
+
resolve({
|
|
85
|
+
stdout: String(stdout ?? ""),
|
|
86
|
+
stderr: String(stderr ?? ""),
|
|
87
|
+
code: null,
|
|
88
|
+
timedOut: true,
|
|
89
|
+
});
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
if (typeof e.code === "number") {
|
|
93
|
+
resolve({
|
|
94
|
+
stdout: String(stdout ?? ""),
|
|
95
|
+
stderr: String(stderr ?? ""),
|
|
96
|
+
code: e.code,
|
|
97
|
+
timedOut: false,
|
|
98
|
+
});
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
reject(e);
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Resolve an executable against PATH, following Windows shim extensions
|
|
107
|
+
* (`npx` -> `npx.cmd`) so `execFile` can launch it without a shell.
|
|
108
|
+
*/
|
|
109
|
+
export function resolveCommand(name) {
|
|
110
|
+
const direct = whichSync(name);
|
|
111
|
+
if (direct)
|
|
112
|
+
return direct;
|
|
113
|
+
if (process.platform === "win32" && !/\.(cmd|bat|exe|com)$/i.test(name)) {
|
|
114
|
+
return whichSync(`${name}.cmd`) ?? whichSync(`${name}.bat`) ?? whichSync(`${name}.exe`);
|
|
115
|
+
}
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
/** Render an unknown thrown value the way Python's `str(e)` would. */
|
|
119
|
+
export function errText(e) {
|
|
120
|
+
if (e instanceof Error)
|
|
121
|
+
return e.message || e.name;
|
|
122
|
+
if (typeof e === "string")
|
|
123
|
+
return e;
|
|
124
|
+
try {
|
|
125
|
+
return JSON.stringify(e);
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
return String(e);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/* ── glob (replaces the Python `glob` module; the npm package is unavailable) ── */
|
|
132
|
+
/** True when the segment contains glob metacharacters (`*`, `?`, `[...]`). */
|
|
133
|
+
export function hasGlobMagic(segment) {
|
|
134
|
+
return /[*?[]/.test(segment);
|
|
135
|
+
}
|
|
136
|
+
function escapeReChar(ch) {
|
|
137
|
+
return /[.*+?^${}()|[\]\\]/.test(ch) ? `\\${ch}` : ch;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Compile one `path`-style glob pattern into an anchored RegExp supporting
|
|
141
|
+
* `*` (segment-local), `**` (any number of segments) and `[...]` classes.
|
|
142
|
+
* Matching is done on forward-slash-normalised paths.
|
|
143
|
+
*/
|
|
144
|
+
export function globToRegExp(pattern) {
|
|
145
|
+
const p = pattern.replace(/\\/g, "/");
|
|
146
|
+
let out = "";
|
|
147
|
+
let i = 0;
|
|
148
|
+
while (i < p.length) {
|
|
149
|
+
const ch = p[i];
|
|
150
|
+
if (ch === "*") {
|
|
151
|
+
let stars = 0;
|
|
152
|
+
while (p[i] === "*") {
|
|
153
|
+
stars++;
|
|
154
|
+
i++;
|
|
155
|
+
}
|
|
156
|
+
if (stars >= 2) {
|
|
157
|
+
if (p[i] === "/") {
|
|
158
|
+
out += "(?:[^/]*/)*"; // `**/` => zero or more directories
|
|
159
|
+
i++;
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
out += ".*";
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
out += "[^/]*";
|
|
167
|
+
}
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
if (ch === "?") {
|
|
171
|
+
out += "[^/]";
|
|
172
|
+
i++;
|
|
173
|
+
continue;
|
|
174
|
+
}
|
|
175
|
+
if (ch === "[") {
|
|
176
|
+
const close = p.indexOf("]", i + 1);
|
|
177
|
+
if (close > i + 1) {
|
|
178
|
+
const inner = p.slice(i + 1, close);
|
|
179
|
+
out += `[${inner.split("").map(escapeReChar).join("")}]`;
|
|
180
|
+
i = close + 1;
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
out += "\\[";
|
|
184
|
+
i++;
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
out += escapeReChar(ch);
|
|
188
|
+
i++;
|
|
189
|
+
}
|
|
190
|
+
return new RegExp(`^${out}$`);
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* `glob.glob(os.path.join(base, "**", pattern), recursive=True)`.
|
|
194
|
+
*
|
|
195
|
+
* Returns absolute paths built with the native separator, skipping
|
|
196
|
+
* dot-directories (Python's `glob` does not descend into hidden entries for a
|
|
197
|
+
* wildcard segment) and refusing to escape `base`.
|
|
198
|
+
*/
|
|
199
|
+
export function expandGlob(base, pattern) {
|
|
200
|
+
const results = [];
|
|
201
|
+
const pat = pattern.replace(/\\/g, "/");
|
|
202
|
+
const patWantsHidden = pat.startsWith(".") || pat.includes("/.");
|
|
203
|
+
// A literal name (no magic, no separators) is resolved relative to base.
|
|
204
|
+
if (!hasGlobMagic(pat) && !pat.includes("/")) {
|
|
205
|
+
const candidate = path.join(base, pat);
|
|
206
|
+
try {
|
|
207
|
+
fs.statSync(candidate);
|
|
208
|
+
results.push(candidate);
|
|
209
|
+
}
|
|
210
|
+
catch {
|
|
211
|
+
/* not found */
|
|
212
|
+
}
|
|
213
|
+
return results;
|
|
214
|
+
}
|
|
215
|
+
const matchers = [globToRegExp(`**/${pat}`), globToRegExp(pat)];
|
|
216
|
+
const walk = (dir, depth) => {
|
|
217
|
+
if (depth > 64)
|
|
218
|
+
return;
|
|
219
|
+
let entries;
|
|
220
|
+
try {
|
|
221
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
222
|
+
}
|
|
223
|
+
catch {
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
for (const ent of entries) {
|
|
227
|
+
const name = ent.name;
|
|
228
|
+
const full = path.join(dir, name);
|
|
229
|
+
if (ent.isDirectory()) {
|
|
230
|
+
if (!patWantsHidden && name.startsWith("."))
|
|
231
|
+
continue;
|
|
232
|
+
walk(full, depth + 1);
|
|
233
|
+
continue;
|
|
234
|
+
}
|
|
235
|
+
if (!patWantsHidden && name.startsWith("."))
|
|
236
|
+
continue;
|
|
237
|
+
const rel = path.relative(base, full);
|
|
238
|
+
if (rel.startsWith(".."))
|
|
239
|
+
continue;
|
|
240
|
+
const abs = full.replace(/\\/g, "/");
|
|
241
|
+
const relSlash = rel.replace(/\\/g, "/");
|
|
242
|
+
if (matchers.some((rx) => rx.test(abs) || rx.test(relSlash)))
|
|
243
|
+
results.push(full);
|
|
244
|
+
}
|
|
245
|
+
};
|
|
246
|
+
walk(path.resolve(base), 0);
|
|
247
|
+
return results;
|
|
248
|
+
}
|
|
249
|
+
/** Opcodes from an LCS table — same shape as `difflib.SequenceMatcher.get_opcodes()`. */
|
|
250
|
+
export function sequenceOpcodes(a, b) {
|
|
251
|
+
const n = a.length;
|
|
252
|
+
const m = b.length;
|
|
253
|
+
// dp[i][j] = LCS length of a[i:] and b[j:]
|
|
254
|
+
const dp = Array.from({ length: n + 1 }, () => new Array(m + 1).fill(0));
|
|
255
|
+
for (let i = n - 1; i >= 0; i--) {
|
|
256
|
+
const row = dp[i];
|
|
257
|
+
const nxt = dp[i + 1];
|
|
258
|
+
for (let j = m - 1; j >= 0; j--) {
|
|
259
|
+
row[j] = a[i] === b[j] ? nxt[j + 1] + 1 : Math.max(nxt[j], row[j + 1]);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
const ops = [];
|
|
263
|
+
let i = 0;
|
|
264
|
+
let j = 0;
|
|
265
|
+
while (i < n && j < m) {
|
|
266
|
+
const startI = i;
|
|
267
|
+
const startJ = j;
|
|
268
|
+
if (a[i] === b[j]) {
|
|
269
|
+
while (i < n && j < m && a[i] === b[j]) {
|
|
270
|
+
i++;
|
|
271
|
+
j++;
|
|
272
|
+
}
|
|
273
|
+
ops.push({ tag: "equal", i1: startI, i2: i, j1: startJ, j2: j });
|
|
274
|
+
}
|
|
275
|
+
else if (dp[i + 1][j] >= dp[i][j + 1]) {
|
|
276
|
+
while (i < n && j < m && a[i] !== b[j] && dp[i + 1][j] >= dp[i][j + 1])
|
|
277
|
+
i++;
|
|
278
|
+
ops.push({ tag: "delete", i1: startI, i2: i, j1: startJ, j2: j });
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
while (i < n && j < m && a[i] !== b[j] && dp[i + 1][j] < dp[i][j + 1])
|
|
282
|
+
j++;
|
|
283
|
+
ops.push({ tag: "insert", i1: startI, i2: i, j1: startJ, j2: j });
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
if (i < n)
|
|
287
|
+
ops.push({ tag: "delete", i1: i, i2: n, j1: j, j2: m });
|
|
288
|
+
if (j < m)
|
|
289
|
+
ops.push({ tag: "insert", i1: i, i2: n, j1: j, j2: m });
|
|
290
|
+
return ops;
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Pragmatic stand-in for `difflib.unified_diff(a, b, fromfile, tofile, n=k)`.
|
|
294
|
+
* Emits `---`/`+++` headers, `@@ -l,s +l,s @@` hunk headers, then context,
|
|
295
|
+
* removal (`-`) and addition (`+`) lines exactly as difflib does.
|
|
296
|
+
*/
|
|
297
|
+
export function unifiedDiff(a, b, opts) {
|
|
298
|
+
const n = opts.context ?? 3;
|
|
299
|
+
const out = [`--- ${opts.fromFile}`, `+++ ${opts.toFile}`];
|
|
300
|
+
const tagged = [];
|
|
301
|
+
for (const op of sequenceOpcodes(a, b)) {
|
|
302
|
+
if (op.tag === "equal") {
|
|
303
|
+
for (let k = op.i1; k < op.i2; k++)
|
|
304
|
+
tagged.push({ tag: "equal", text: a[k] });
|
|
305
|
+
}
|
|
306
|
+
else if (op.tag === "delete") {
|
|
307
|
+
for (let k = op.i1; k < op.i2; k++)
|
|
308
|
+
tagged.push({ tag: "delete", text: a[k] });
|
|
309
|
+
}
|
|
310
|
+
else {
|
|
311
|
+
for (let k = op.j1; k < op.j2; k++)
|
|
312
|
+
tagged.push({ tag: "insert", text: b[k] });
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
if (!tagged.some((t) => t.tag !== "equal"))
|
|
316
|
+
return out;
|
|
317
|
+
const changedIdx = [];
|
|
318
|
+
tagged.forEach((t, i) => {
|
|
319
|
+
if (t.tag !== "equal")
|
|
320
|
+
changedIdx.push(i);
|
|
321
|
+
});
|
|
322
|
+
// Merge change windows that overlap within 2*n of context.
|
|
323
|
+
const ranges = [];
|
|
324
|
+
let start = Math.max(0, changedIdx[0] - n);
|
|
325
|
+
let end = Math.min(tagged.length, changedIdx[0] + n + 1);
|
|
326
|
+
for (let k = 1; k < changedIdx.length; k++) {
|
|
327
|
+
const i = changedIdx[k];
|
|
328
|
+
if (i - n <= end) {
|
|
329
|
+
end = Math.min(tagged.length, i + n + 1);
|
|
330
|
+
}
|
|
331
|
+
else {
|
|
332
|
+
ranges.push([start, end]);
|
|
333
|
+
start = Math.max(0, i - n);
|
|
334
|
+
end = Math.min(tagged.length, i + n + 1);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
ranges.push([start, end]);
|
|
338
|
+
// Track 1-based line numbers on both sides across the whole stream.
|
|
339
|
+
const aNo = new Array(tagged.length + 1);
|
|
340
|
+
const bNo = new Array(tagged.length + 1);
|
|
341
|
+
let aLine = 1;
|
|
342
|
+
let bLine = 1;
|
|
343
|
+
for (let i = 0; i < tagged.length; i++) {
|
|
344
|
+
aNo[i] = aLine;
|
|
345
|
+
bNo[i] = bLine;
|
|
346
|
+
const t = tagged[i];
|
|
347
|
+
if (t.tag !== "insert")
|
|
348
|
+
aLine++;
|
|
349
|
+
if (t.tag !== "delete")
|
|
350
|
+
bLine++;
|
|
351
|
+
}
|
|
352
|
+
aNo[tagged.length] = aLine;
|
|
353
|
+
bNo[tagged.length] = bLine;
|
|
354
|
+
for (const [s, e] of ranges) {
|
|
355
|
+
let aLen = 0;
|
|
356
|
+
let bLen = 0;
|
|
357
|
+
for (let k = s; k < e; k++) {
|
|
358
|
+
const t = tagged[k];
|
|
359
|
+
if (t.tag !== "insert")
|
|
360
|
+
aLen++;
|
|
361
|
+
if (t.tag !== "delete")
|
|
362
|
+
bLen++;
|
|
363
|
+
}
|
|
364
|
+
const aStart = aLen === 0 ? aNo[s] - 1 : aNo[s];
|
|
365
|
+
const bStart = bLen === 0 ? bNo[s] - 1 : bNo[s];
|
|
366
|
+
out.push(`@@ -${aStart},${aLen} +${bStart},${bLen} @@`);
|
|
367
|
+
for (let k = s; k < e; k++) {
|
|
368
|
+
const t = tagged[k];
|
|
369
|
+
const prefix = t.tag === "equal" ? " " : t.tag === "delete" ? "-" : "+";
|
|
370
|
+
out.push(`${prefix}${t.text}`);
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
return out;
|
|
374
|
+
}
|
|
375
|
+
//# sourceMappingURL=_internal.js.map
|