luca 2.0.0 → 3.0.2
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/.github/workflows/release.yaml +170 -0
- package/AGENTS.md +99 -0
- package/CLAUDE.md +123 -0
- package/CNAME +1 -0
- package/README.md +275 -9
- package/RUNME.md +56 -0
- package/assistants/codingAssistant/ABOUT.md +5 -0
- package/assistants/codingAssistant/CORE.md +33 -0
- package/assistants/codingAssistant/hooks.ts +21 -0
- package/assistants/codingAssistant/tools.ts +12 -0
- package/assistants/inkbot/ABOUT.md +16 -0
- package/assistants/inkbot/CORE.md +330 -0
- package/assistants/inkbot/hooks.ts +6 -0
- package/assistants/inkbot/tools.ts +53 -0
- package/assistants/researcher/ABOUT.md +5 -0
- package/assistants/researcher/CORE.md +46 -0
- package/assistants/researcher/hooks.ts +16 -0
- package/assistants/researcher/tools.ts +237 -0
- package/bun.lock +2667 -0
- package/bunfig.toml +3 -0
- package/commands/audit-docs.ts +740 -0
- package/commands/build-bootstrap.ts +117 -0
- package/commands/build-python-bridge.ts +42 -0
- package/commands/build-scaffolds.ts +175 -0
- package/commands/bundle-consumer-project.ts +521 -0
- package/commands/generate-api-docs.ts +114 -0
- package/commands/inkbot.ts +874 -0
- package/commands/release.ts +80 -0
- package/commands/try-all-challenges.ts +543 -0
- package/commands/try-challenge.ts +100 -0
- package/dist/agi/container.server.d.ts +63 -0
- package/dist/agi/container.server.d.ts.map +1 -0
- package/dist/agi/endpoints/ask.d.ts +20 -0
- package/dist/agi/endpoints/ask.d.ts.map +1 -0
- package/dist/agi/endpoints/conversations/[id].d.ts +27 -0
- package/dist/agi/endpoints/conversations/[id].d.ts.map +1 -0
- package/dist/agi/endpoints/conversations.d.ts +18 -0
- package/dist/agi/endpoints/conversations.d.ts.map +1 -0
- package/dist/agi/endpoints/experts.d.ts +8 -0
- package/dist/agi/endpoints/experts.d.ts.map +1 -0
- package/dist/agi/feature.d.ts +9 -0
- package/dist/agi/feature.d.ts.map +1 -0
- package/dist/agi/features/assistant.d.ts +509 -0
- package/dist/agi/features/assistant.d.ts.map +1 -0
- package/dist/agi/features/assistants-manager.d.ts +236 -0
- package/dist/agi/features/assistants-manager.d.ts.map +1 -0
- package/dist/agi/features/autonomous-assistant.d.ts +281 -0
- package/dist/agi/features/autonomous-assistant.d.ts.map +1 -0
- package/dist/agi/features/browser-use.d.ts +479 -0
- package/dist/agi/features/browser-use.d.ts.map +1 -0
- package/dist/agi/features/claude-code.d.ts +824 -0
- package/dist/agi/features/claude-code.d.ts.map +1 -0
- package/dist/agi/features/conversation-history.d.ts +245 -0
- package/dist/agi/features/conversation-history.d.ts.map +1 -0
- package/dist/agi/features/conversation.d.ts +464 -0
- package/dist/agi/features/conversation.d.ts.map +1 -0
- package/dist/agi/features/docs-reader.d.ts +72 -0
- package/dist/agi/features/docs-reader.d.ts.map +1 -0
- package/dist/agi/features/file-tools.d.ts +110 -0
- package/dist/agi/features/file-tools.d.ts.map +1 -0
- package/dist/agi/features/luca-coder.d.ts +323 -0
- package/dist/agi/features/luca-coder.d.ts.map +1 -0
- package/dist/agi/features/openai-codex.d.ts +381 -0
- package/dist/agi/features/openai-codex.d.ts.map +1 -0
- package/dist/agi/features/openapi.d.ts +200 -0
- package/dist/agi/features/openapi.d.ts.map +1 -0
- package/dist/agi/features/skills-library.d.ts +167 -0
- package/dist/agi/features/skills-library.d.ts.map +1 -0
- package/dist/agi/index.d.ts +5 -0
- package/dist/agi/index.d.ts.map +1 -0
- package/dist/agi/lib/interceptor-chain.d.ts +44 -0
- package/dist/agi/lib/interceptor-chain.d.ts.map +1 -0
- package/dist/agi/lib/token-counter.d.ts +13 -0
- package/dist/agi/lib/token-counter.d.ts.map +1 -0
- package/dist/bootstrap/generated.d.ts +5 -0
- package/dist/bootstrap/generated.d.ts.map +1 -0
- package/dist/browser.d.ts +12 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/bus.d.ts +29 -0
- package/dist/bus.d.ts.map +1 -0
- package/dist/cli/build-info.d.ts +4 -0
- package/dist/cli/build-info.d.ts.map +1 -0
- package/dist/cli/cli.d.ts +3 -12
- package/dist/cli/cli.d.ts.map +1 -0
- package/dist/client.d.ts +60 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/clients/civitai/index.d.ts +472 -0
- package/dist/clients/civitai/index.d.ts.map +1 -0
- package/dist/clients/client-template.d.ts +30 -0
- package/dist/clients/client-template.d.ts.map +1 -0
- package/dist/clients/comfyui/index.d.ts +281 -0
- package/dist/clients/comfyui/index.d.ts.map +1 -0
- package/dist/clients/elevenlabs/index.d.ts +197 -0
- package/dist/clients/elevenlabs/index.d.ts.map +1 -0
- package/dist/clients/graph.d.ts +64 -0
- package/dist/clients/graph.d.ts.map +1 -0
- package/dist/clients/openai/index.d.ts +247 -0
- package/dist/clients/openai/index.d.ts.map +1 -0
- package/dist/clients/rest.d.ts +92 -0
- package/dist/clients/rest.d.ts.map +1 -0
- package/dist/clients/supabase/index.d.ts +176 -0
- package/dist/clients/supabase/index.d.ts.map +1 -0
- package/dist/clients/websocket.d.ts +127 -0
- package/dist/clients/websocket.d.ts.map +1 -0
- package/dist/command.d.ts +163 -0
- package/dist/command.d.ts.map +1 -0
- package/dist/commands/bootstrap.d.ts +20 -0
- package/dist/commands/bootstrap.d.ts.map +1 -0
- package/dist/commands/chat.d.ts +37 -0
- package/dist/commands/chat.d.ts.map +1 -0
- package/dist/commands/code.d.ts +28 -0
- package/dist/commands/code.d.ts.map +1 -0
- package/dist/commands/console.d.ts +22 -0
- package/dist/commands/console.d.ts.map +1 -0
- package/dist/commands/describe.d.ts +50 -0
- package/dist/commands/describe.d.ts.map +1 -0
- package/dist/commands/eval.d.ts +23 -0
- package/dist/commands/eval.d.ts.map +1 -0
- package/dist/commands/help.d.ts +25 -0
- package/dist/commands/help.d.ts.map +1 -0
- package/dist/commands/index.d.ts +18 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/introspect.d.ts +24 -0
- package/dist/commands/introspect.d.ts.map +1 -0
- package/dist/commands/mcp.d.ts +35 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/prompt.d.ts +38 -0
- package/dist/commands/prompt.d.ts.map +1 -0
- package/dist/commands/run.d.ts +24 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/sandbox-mcp.d.ts +34 -0
- package/dist/commands/sandbox-mcp.d.ts.map +1 -0
- package/dist/commands/save-api-docs.d.ts +21 -0
- package/dist/commands/save-api-docs.d.ts.map +1 -0
- package/dist/commands/scaffold.d.ts +24 -0
- package/dist/commands/scaffold.d.ts.map +1 -0
- package/dist/commands/select.d.ts +22 -0
- package/dist/commands/select.d.ts.map +1 -0
- package/dist/commands/serve.d.ts +29 -0
- package/dist/commands/serve.d.ts.map +1 -0
- package/dist/container-describer.d.ts +144 -0
- package/dist/container-describer.d.ts.map +1 -0
- package/dist/container.d.ts +451 -0
- package/dist/container.d.ts.map +1 -0
- package/dist/endpoint.d.ts +113 -0
- package/dist/endpoint.d.ts.map +1 -0
- package/dist/feature.d.ts +47 -0
- package/dist/feature.d.ts.map +1 -0
- package/dist/graft.d.ts +29 -0
- package/dist/graft.d.ts.map +1 -0
- package/dist/hash-object.d.ts +8 -0
- package/dist/hash-object.d.ts.map +1 -0
- package/dist/helper.d.ts +209 -0
- package/dist/helper.d.ts.map +1 -0
- package/dist/introspection/generated.node.d.ts +44623 -0
- package/dist/introspection/generated.node.d.ts.map +1 -0
- package/dist/introspection/generated.web.d.ts +1412 -0
- package/dist/introspection/generated.web.d.ts.map +1 -0
- package/dist/introspection/index.d.ts +156 -0
- package/dist/introspection/index.d.ts.map +1 -0
- package/dist/introspection/scan.d.ts +147 -0
- package/dist/introspection/scan.d.ts.map +1 -0
- package/dist/node/container.d.ts +256 -0
- package/dist/node/container.d.ts.map +1 -0
- package/dist/node/feature.d.ts +9 -0
- package/dist/node/feature.d.ts.map +1 -0
- package/dist/node/features/container-link.d.ts +213 -0
- package/dist/node/features/container-link.d.ts.map +1 -0
- package/dist/node/features/content-db.d.ts +354 -0
- package/dist/node/features/content-db.d.ts.map +1 -0
- package/dist/node/features/disk-cache.d.ts +236 -0
- package/dist/node/features/disk-cache.d.ts.map +1 -0
- package/dist/node/features/dns.d.ts +511 -0
- package/dist/node/features/dns.d.ts.map +1 -0
- package/dist/node/features/docker.d.ts +485 -0
- package/dist/node/features/docker.d.ts.map +1 -0
- package/dist/node/features/downloader.d.ts +73 -0
- package/dist/node/features/downloader.d.ts.map +1 -0
- package/dist/node/features/figlet-fonts.d.ts +4 -0
- package/dist/node/features/figlet-fonts.d.ts.map +1 -0
- package/dist/node/features/file-manager.d.ts +177 -0
- package/dist/node/features/file-manager.d.ts.map +1 -0
- package/dist/node/features/fs.d.ts +635 -0
- package/dist/node/features/fs.d.ts.map +1 -0
- package/dist/node/features/git.d.ts +329 -0
- package/dist/node/features/git.d.ts.map +1 -0
- package/dist/node/features/google-auth.d.ts +200 -0
- package/dist/node/features/google-auth.d.ts.map +1 -0
- package/dist/node/features/google-calendar.d.ts +194 -0
- package/dist/node/features/google-calendar.d.ts.map +1 -0
- package/dist/node/features/google-docs.d.ts +138 -0
- package/dist/node/features/google-docs.d.ts.map +1 -0
- package/dist/node/features/google-drive.d.ts +202 -0
- package/dist/node/features/google-drive.d.ts.map +1 -0
- package/dist/node/features/google-mail.d.ts +221 -0
- package/dist/node/features/google-mail.d.ts.map +1 -0
- package/dist/node/features/google-sheets.d.ts +157 -0
- package/dist/node/features/google-sheets.d.ts.map +1 -0
- package/dist/node/features/grep.d.ts +207 -0
- package/dist/node/features/grep.d.ts.map +1 -0
- package/dist/node/features/helpers.d.ts +236 -0
- package/dist/node/features/helpers.d.ts.map +1 -0
- package/dist/node/features/ink.d.ts +332 -0
- package/dist/node/features/ink.d.ts.map +1 -0
- package/dist/node/features/ipc-socket.d.ts +298 -0
- package/dist/node/features/ipc-socket.d.ts.map +1 -0
- package/dist/node/features/json-tree.d.ts +140 -0
- package/dist/node/features/json-tree.d.ts.map +1 -0
- package/dist/node/features/networking.d.ts +373 -0
- package/dist/node/features/networking.d.ts.map +1 -0
- package/dist/node/features/nlp.d.ts +125 -0
- package/dist/node/features/nlp.d.ts.map +1 -0
- package/dist/node/features/opener.d.ts +93 -0
- package/dist/node/features/opener.d.ts.map +1 -0
- package/dist/node/features/os.d.ts +168 -0
- package/dist/node/features/os.d.ts.map +1 -0
- package/dist/node/features/package-finder.d.ts +419 -0
- package/dist/node/features/package-finder.d.ts.map +1 -0
- package/dist/node/features/postgres.d.ts +173 -0
- package/dist/node/features/postgres.d.ts.map +1 -0
- package/dist/node/features/proc.d.ts +285 -0
- package/dist/node/features/proc.d.ts.map +1 -0
- package/dist/node/features/process-manager.d.ts +427 -0
- package/dist/node/features/process-manager.d.ts.map +1 -0
- package/dist/node/features/python.d.ts +477 -0
- package/dist/node/features/python.d.ts.map +1 -0
- package/dist/node/features/redis.d.ts +247 -0
- package/dist/node/features/redis.d.ts.map +1 -0
- package/dist/node/features/repl.d.ts +84 -0
- package/dist/node/features/repl.d.ts.map +1 -0
- package/dist/node/features/runpod.d.ts +527 -0
- package/dist/node/features/runpod.d.ts.map +1 -0
- package/dist/node/features/secure-shell.d.ts +145 -0
- package/dist/node/features/secure-shell.d.ts.map +1 -0
- package/dist/node/features/semantic-search.d.ts +207 -0
- package/dist/node/features/semantic-search.d.ts.map +1 -0
- package/dist/node/features/sqlite.d.ts +180 -0
- package/dist/node/features/sqlite.d.ts.map +1 -0
- package/dist/node/features/telegram.d.ts +173 -0
- package/dist/node/features/telegram.d.ts.map +1 -0
- package/dist/node/features/transpiler.d.ts +51 -0
- package/dist/node/features/transpiler.d.ts.map +1 -0
- package/dist/node/features/tts.d.ts +108 -0
- package/dist/node/features/tts.d.ts.map +1 -0
- package/dist/node/features/ui.d.ts +562 -0
- package/dist/node/features/ui.d.ts.map +1 -0
- package/dist/node/features/vault.d.ts +90 -0
- package/dist/node/features/vault.d.ts.map +1 -0
- package/dist/node/features/vm.d.ts +285 -0
- package/dist/node/features/vm.d.ts.map +1 -0
- package/dist/node/features/yaml-tree.d.ts +118 -0
- package/dist/node/features/yaml-tree.d.ts.map +1 -0
- package/dist/node/features/yaml.d.ts +127 -0
- package/dist/node/features/yaml.d.ts.map +1 -0
- package/dist/node.d.ts +67 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/python/generated.d.ts +2 -0
- package/dist/python/generated.d.ts.map +1 -0
- package/dist/react/index.d.ts +36 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/registry.d.ts +97 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/scaffolds/generated.d.ts +13 -0
- package/dist/scaffolds/generated.d.ts.map +1 -0
- package/dist/scaffolds/template.d.ts +11 -0
- package/dist/scaffolds/template.d.ts.map +1 -0
- package/dist/schemas/base.d.ts +254 -0
- package/dist/schemas/base.d.ts.map +1 -0
- package/dist/selector.d.ts +130 -0
- package/dist/selector.d.ts.map +1 -0
- package/dist/server.d.ts +89 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/servers/express.d.ts +104 -0
- package/dist/servers/express.d.ts.map +1 -0
- package/dist/servers/mcp.d.ts +201 -0
- package/dist/servers/mcp.d.ts.map +1 -0
- package/dist/servers/socket.d.ts +121 -0
- package/dist/servers/socket.d.ts.map +1 -0
- package/dist/state.d.ts +24 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/web/clients/socket.d.ts +37 -0
- package/dist/web/clients/socket.d.ts.map +1 -0
- package/dist/web/container.d.ts +55 -0
- package/dist/web/container.d.ts.map +1 -0
- package/dist/web/extension.d.ts +4 -0
- package/dist/web/extension.d.ts.map +1 -0
- package/dist/web/feature.d.ts +8 -0
- package/dist/web/feature.d.ts.map +1 -0
- package/dist/web/features/asset-loader.d.ts +35 -0
- package/dist/web/features/asset-loader.d.ts.map +1 -0
- package/dist/web/features/container-link.d.ts +167 -0
- package/dist/web/features/container-link.d.ts.map +1 -0
- package/dist/web/features/esbuild.d.ts +51 -0
- package/dist/web/features/esbuild.d.ts.map +1 -0
- package/dist/web/features/helpers.d.ts +140 -0
- package/dist/web/features/helpers.d.ts.map +1 -0
- package/dist/web/features/network.d.ts +69 -0
- package/dist/web/features/network.d.ts.map +1 -0
- package/dist/web/features/speech.d.ts +71 -0
- package/dist/web/features/speech.d.ts.map +1 -0
- package/dist/web/features/vault.d.ts +62 -0
- package/dist/web/features/vault.d.ts.map +1 -0
- package/dist/web/features/vm.d.ts +48 -0
- package/dist/web/features/vm.d.ts.map +1 -0
- package/dist/web/features/voice-recognition.d.ts +96 -0
- package/dist/web/features/voice-recognition.d.ts.map +1 -0
- package/dist/web/shims/isomorphic-vm.d.ts +22 -0
- package/dist/web/shims/isomorphic-vm.d.ts.map +1 -0
- package/index.html +1457 -0
- package/index.ts +1 -0
- package/install.sh +84 -0
- package/luca.cli.ts +16 -0
- package/luca.console.ts +9 -0
- package/main.py +6 -0
- package/package.json +219 -58
- package/public/index.html +1457 -0
- package/public/slides-ai-native.html +902 -0
- package/public/slides-intro.html +974 -0
- package/pyproject.toml +7 -0
- package/scripts/build-web.ts +28 -0
- package/scripts/examples/ask-luca-expert.ts +42 -0
- package/scripts/examples/assistant-questions.ts +12 -0
- package/scripts/examples/excalidraw-expert.ts +75 -0
- package/scripts/examples/expert-chat.ts +0 -0
- package/scripts/examples/file-manager.ts +14 -0
- package/scripts/examples/ideas.ts +12 -0
- package/scripts/examples/interactive-chat.ts +20 -0
- package/scripts/examples/openai-tool-calls.ts +113 -0
- package/scripts/examples/opening-a-web-browser.ts +5 -0
- package/scripts/examples/telegram-bot.ts +79 -0
- package/scripts/examples/using-assistant-with-mcp.ts +555 -0
- package/scripts/examples/using-claude-code.ts +10 -0
- package/scripts/examples/using-contentdb.ts +35 -0
- package/scripts/examples/using-conversations.ts +35 -0
- package/scripts/examples/using-disk-cache.ts +10 -0
- package/scripts/examples/using-docker-shell.ts +75 -0
- package/scripts/examples/using-elevenlabs.ts +25 -0
- package/scripts/examples/using-google-calendar.ts +57 -0
- package/scripts/examples/using-google-docs.ts +74 -0
- package/scripts/examples/using-google-drive.ts +74 -0
- package/scripts/examples/using-google-sheets.ts +89 -0
- package/scripts/examples/using-nlp.ts +55 -0
- package/scripts/examples/using-ollama.ts +11 -0
- package/scripts/examples/using-postgres.ts +55 -0
- package/scripts/examples/using-runpod.ts +32 -0
- package/scripts/examples/using-tts.ts +40 -0
- package/scripts/scaffold.ts +391 -0
- package/scripts/scratch.ts +15 -0
- package/scripts/stamp-build.sh +12 -0
- package/scripts/test-assistant-hooks.ts +13 -0
- package/scripts/test-docs-reader.ts +10 -0
- package/scripts/test-linux-binary.sh +80 -0
- package/scripts/update-introspection-data.ts +58 -0
- package/src/agi/README.md +14 -0
- package/src/agi/container.server.ts +156 -0
- package/src/agi/feature.ts +13 -0
- package/src/agi/features/agent-memory.ts +694 -0
- package/src/agi/features/assistant.ts +1653 -0
- package/src/agi/features/assistants-manager.ts +534 -0
- package/src/agi/features/autonomous-assistant.ts +431 -0
- package/src/agi/features/browser-use.ts +672 -0
- package/src/agi/features/claude-code.ts +1584 -0
- package/src/agi/features/coding-tools.ts +175 -0
- package/src/agi/features/conversation-history.ts +672 -0
- package/src/agi/features/conversation.ts +1494 -0
- package/src/agi/features/docs-reader.ts +167 -0
- package/src/agi/features/file-tools.ts +340 -0
- package/src/agi/features/luca-coder.ts +641 -0
- package/src/agi/features/mcp-bridge.ts +532 -0
- package/src/agi/features/openai-codex.ts +651 -0
- package/src/agi/features/openapi.ts +445 -0
- package/src/agi/features/skills-library.ts +557 -0
- package/src/agi/index.ts +6 -0
- package/src/agi/lib/interceptor-chain.ts +89 -0
- package/src/agi/lib/token-counter.ts +202 -0
- package/src/bootstrap/generated.ts +9791 -0
- package/src/browser.ts +25 -0
- package/src/bus.ts +122 -0
- package/src/cli/build-info.ts +4 -0
- package/src/cli/cli.ts +355 -0
- package/src/client.ts +170 -0
- package/src/clients/civitai/index.ts +537 -0
- package/src/clients/client-template.ts +41 -0
- package/src/clients/comfyui/index.ts +604 -0
- package/src/clients/elevenlabs/index.ts +317 -0
- package/src/clients/graph.ts +87 -0
- package/src/clients/openai/index.ts +456 -0
- package/src/clients/rest.ts +207 -0
- package/src/clients/supabase/index.ts +357 -0
- package/src/clients/voicebox/index.ts +300 -0
- package/src/clients/websocket.ts +251 -0
- package/src/command.ts +506 -0
- package/src/commands/bootstrap.ts +244 -0
- package/src/commands/chat.ts +309 -0
- package/src/commands/code.ts +371 -0
- package/src/commands/console.ts +189 -0
- package/src/commands/describe.ts +243 -0
- package/src/commands/eval.ts +67 -0
- package/src/commands/help.ts +240 -0
- package/src/commands/index.ts +19 -0
- package/src/commands/introspect.ts +218 -0
- package/src/commands/mcp.ts +64 -0
- package/src/commands/prompt.ts +1014 -0
- package/src/commands/run.ts +278 -0
- package/src/commands/sandbox-mcp.ts +343 -0
- package/src/commands/save-api-docs.ts +51 -0
- package/src/commands/scaffold.ts +225 -0
- package/src/commands/select.ts +99 -0
- package/src/commands/serve.ts +208 -0
- package/src/container-describer.ts +1091 -0
- package/src/container.ts +1199 -0
- package/src/endpoint.ts +365 -0
- package/src/entity.ts +173 -0
- package/src/feature.ts +118 -0
- package/src/graft.ts +181 -0
- package/src/hash-object.ts +97 -0
- package/src/helper.ts +849 -0
- package/src/introspection/generated.agi.ts +41200 -0
- package/src/introspection/generated.node.ts +28773 -0
- package/src/introspection/generated.web.ts +2272 -0
- package/src/introspection/index.ts +296 -0
- package/src/introspection/scan.ts +1136 -0
- package/src/node/container.ts +409 -0
- package/src/node/feature.ts +13 -0
- package/src/node/features/container-link.ts +559 -0
- package/src/node/features/content-db.ts +849 -0
- package/src/node/features/disk-cache.ts +388 -0
- package/src/node/features/display-result.ts +57 -0
- package/src/node/features/dns.ts +669 -0
- package/src/node/features/docker.ts +921 -0
- package/src/node/features/downloader.ts +79 -0
- package/src/node/features/figlet-fonts.ts +600 -0
- package/src/node/features/file-manager.ts +535 -0
- package/src/node/features/fs.ts +1050 -0
- package/src/node/features/git.ts +592 -0
- package/src/node/features/google-auth.ts +504 -0
- package/src/node/features/google-calendar.ts +306 -0
- package/src/node/features/google-docs.ts +412 -0
- package/src/node/features/google-drive.ts +346 -0
- package/src/node/features/google-mail.ts +540 -0
- package/src/node/features/google-sheets.ts +286 -0
- package/src/node/features/grep.ts +427 -0
- package/src/node/features/helpers.ts +762 -0
- package/src/node/features/ink.ts +490 -0
- package/src/node/features/ipc-socket.ts +649 -0
- package/src/node/features/json-tree.ts +170 -0
- package/src/node/features/networking.ts +961 -0
- package/src/node/features/nlp.ts +212 -0
- package/src/node/features/opener.ts +180 -0
- package/src/node/features/os.ts +403 -0
- package/src/node/features/package-finder.ts +540 -0
- package/src/node/features/postgres.ts +289 -0
- package/src/node/features/proc.ts +503 -0
- package/src/node/features/process-manager.ts +844 -0
- package/src/node/features/python.ts +912 -0
- package/src/node/features/redis.ts +446 -0
- package/src/node/features/repl.ts +212 -0
- package/src/node/features/runpod.ts +811 -0
- package/src/node/features/secure-shell.ts +261 -0
- package/src/node/features/semantic-search.ts +935 -0
- package/src/node/features/sqlite.ts +289 -0
- package/src/node/features/telegram.ts +343 -0
- package/src/node/features/transpiler.ts +160 -0
- package/src/node/features/tts.ts +185 -0
- package/src/node/features/ui.ts +791 -0
- package/src/node/features/vault.ts +153 -0
- package/src/node/features/vm.ts +462 -0
- package/src/node/features/yaml-tree.ts +148 -0
- package/src/node/features/yaml.ts +133 -0
- package/src/node.ts +76 -0
- package/src/python/bridge.py +220 -0
- package/src/python/generated.ts +226 -0
- package/src/react/index.ts +175 -0
- package/src/registry.ts +210 -0
- package/src/scaffolds/generated.ts +1814 -0
- package/src/scaffolds/template.ts +46 -0
- package/src/schemas/base.ts +296 -0
- package/src/selector.ts +352 -0
- package/src/server.ts +229 -0
- package/src/servers/express.ts +283 -0
- package/src/servers/mcp.ts +802 -0
- package/src/servers/socket.ts +258 -0
- package/src/state.ts +101 -0
- package/src/web/clients/socket.ts +99 -0
- package/src/web/container.ts +75 -0
- package/src/web/extension.ts +30 -0
- package/src/web/feature.ts +12 -0
- package/src/web/features/asset-loader.ts +72 -0
- package/src/web/features/container-link.ts +382 -0
- package/src/web/features/esbuild.ts +93 -0
- package/src/web/features/helpers.ts +291 -0
- package/src/web/features/network.ts +85 -0
- package/src/web/features/speech.ts +104 -0
- package/src/web/features/vault.ts +207 -0
- package/src/web/features/vm.ts +85 -0
- package/src/web/features/voice-recognition.ts +161 -0
- package/src/web/shims/isomorphic-vm.ts +149 -0
- package/tsconfig.build.json +12 -0
- package/tsconfig.json +58 -0
- package/uv.lock +8 -0
- package/LICENSE +0 -21
- package/dist/cli/cli.js +0 -48
- package/dist/cli/common.d.ts +0 -2
- package/dist/cli/common.js +0 -6
- package/dist/cli/index.d.ts +0 -2
- package/dist/cli/index.js +0 -5
- package/dist/cli/run.d.ts +0 -1
- package/dist/cli/run.js +0 -38
- package/dist/core/index.d.ts +0 -4
- package/dist/core/index.js +0 -32
- package/dist/core/read.d.ts +0 -2
- package/dist/core/read.js +0 -29
- package/dist/core/request.d.ts +0 -1
- package/dist/core/request.js +0 -2
- package/dist/core/write.d.ts +0 -2
- package/dist/core/write.js +0 -21
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -5
- package/dist/utils/common.d.ts +0 -9
- package/dist/utils/common.js +0 -57
- package/dist/utils/consts.d.ts +0 -3
- package/dist/utils/consts.js +0 -11
- package/dist/utils/dict.d.ts +0 -1
- package/dist/utils/dict.js +0 -7
- package/dist/utils/index.d.ts +0 -5
- package/dist/utils/index.js +0 -21
- package/dist/utils/log.d.ts +0 -1
- package/dist/utils/log.js +0 -5
- package/dist/utils/types.d.ts +0 -1
- package/dist/utils/types.js +0 -2
- package/dist/utils/utils.test.d.ts +0 -1
- package/dist/utils/utils.test.js +0 -7
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { Feature } from '../feature.js'
|
|
2
|
+
import { FeatureStateSchema, FeatureOptionsSchema } from '../../schemas/base.js'
|
|
3
|
+
|
|
4
|
+
export interface TransformOptions {
|
|
5
|
+
loader?: 'ts' | 'tsx' | 'jsx' | 'js'
|
|
6
|
+
format?: 'esm' | 'cjs'
|
|
7
|
+
minify?: boolean
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export interface TransformResult {
|
|
11
|
+
code: string
|
|
12
|
+
map: string
|
|
13
|
+
warnings: any[]
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Convert ESM import/export statements to CJS require/module.exports
|
|
18
|
+
* so the code can run in a vm context that provides `require`.
|
|
19
|
+
*/
|
|
20
|
+
function esmToCjs(code: string): string {
|
|
21
|
+
const exportedNames: string[] = []
|
|
22
|
+
|
|
23
|
+
let result = code
|
|
24
|
+
// import Foo, { bar, baz } from 'x' → const Foo = require('x').default ?? require('x'); const { bar, baz } = require('x')
|
|
25
|
+
.replace(/^import\s+(\w+)\s*,\s*\{([^}]+)\}\s+from\s+(['"][^'"]+['"])\s*;?$/gm,
|
|
26
|
+
'const $1 = require($3).default ?? require($3); const {$2} = require($3);')
|
|
27
|
+
// import { a, b } from 'x' → const { a, b } = require('x')
|
|
28
|
+
.replace(/^import\s+\{([^}]+)\}\s+from\s+(['"][^'"]+['"])\s*;?$/gm,
|
|
29
|
+
'const {$1} = require($2);')
|
|
30
|
+
// import x from 'y' → const x = require('y').default ?? require('y')
|
|
31
|
+
.replace(/^import\s+(\w+)\s+from\s+(['"][^'"]+['"])\s*;?$/gm,
|
|
32
|
+
'const $1 = require($2).default ?? require($2);')
|
|
33
|
+
// import * as x from 'y' → const x = require('y')
|
|
34
|
+
.replace(/^import\s+\*\s+as\s+(\w+)\s+from\s+(['"][^'"]+['"])\s*;?$/gm,
|
|
35
|
+
'const $1 = require($2);')
|
|
36
|
+
// import 'y' → require('y')
|
|
37
|
+
.replace(/^import\s+(['"][^'"]+['"])\s*;?$/gm,
|
|
38
|
+
'require($1);')
|
|
39
|
+
// export default → module.exports.default =
|
|
40
|
+
.replace(/^export\s+default\s+/gm, 'module.exports.default = ')
|
|
41
|
+
// export { a, b } from 'x' → Object.assign(module.exports, require('x')) (re-exports)
|
|
42
|
+
.replace(/^export\s+\{[^}]*\}\s+from\s+(['"][^'"]+['"])\s*;?$/gm,
|
|
43
|
+
'Object.assign(module.exports, require($1));')
|
|
44
|
+
// export { a, b as c } → exports.a = a; exports.c = b;
|
|
45
|
+
.replace(/^export\s+\{([^}]*)\}\s*;?$/gm, (_match, body: string) => {
|
|
46
|
+
return body.split(',').map(s => {
|
|
47
|
+
const parts = s.trim().split(/\s+as\s+/)
|
|
48
|
+
const local = (parts[0] ?? '').trim()
|
|
49
|
+
const exported = (parts[1] ?? parts[0] ?? '').trim()
|
|
50
|
+
return local ? `exports['${exported}'] = ${local};` : ''
|
|
51
|
+
}).filter(Boolean).join(' ')
|
|
52
|
+
})
|
|
53
|
+
// export const/let/var NAME → const/let/var NAME (track for deferred export)
|
|
54
|
+
.replace(/^export\s+(const|let|var)\s+(\w+)/gm, (_match, decl: string, name: string) => {
|
|
55
|
+
exportedNames.push(name)
|
|
56
|
+
return `${decl} ${name}`
|
|
57
|
+
})
|
|
58
|
+
// export function NAME / export class NAME → function/class NAME (track for deferred export)
|
|
59
|
+
.replace(/^export\s+(function|class)\s+(\w+)/gm, (_match, type: string, name: string) => {
|
|
60
|
+
exportedNames.push(name)
|
|
61
|
+
return `${type} ${name}`
|
|
62
|
+
})
|
|
63
|
+
// export async function NAME → async function NAME (track for deferred export)
|
|
64
|
+
.replace(/^export\s+(async\s+function)\s+(\w+)/gm, (_match, type: string, name: string) => {
|
|
65
|
+
exportedNames.push(name)
|
|
66
|
+
return `${type} ${name}`
|
|
67
|
+
})
|
|
68
|
+
|
|
69
|
+
// Append exports for all tracked named exports
|
|
70
|
+
if (exportedNames.length > 0) {
|
|
71
|
+
result += '\n' + exportedNames.map(n => `exports['${n}'] = ${n};`).join('\n')
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return result
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Transpile TypeScript, TSX, and JSX to JavaScript at runtime using Bun's
|
|
79
|
+
* built-in transpiler. Compile code strings on the fly without touching the
|
|
80
|
+
* filesystem or spawning external processes.
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```typescript
|
|
84
|
+
* const transpiler = container.feature('transpiler')
|
|
85
|
+
* const result = transpiler.transformSync('const x: number = 1')
|
|
86
|
+
* console.log(result.code) // 'const x = 1;\n'
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
export class Transpiler extends Feature {
|
|
90
|
+
static override shortcut = 'features.transpiler' as const
|
|
91
|
+
static override stateSchema = FeatureStateSchema
|
|
92
|
+
static override optionsSchema = FeatureOptionsSchema
|
|
93
|
+
static { Feature.register(this, 'transpiler') }
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Transform code synchronously
|
|
97
|
+
* @param code - The code to transform
|
|
98
|
+
* @param options - Transform options (loader, format, minify)
|
|
99
|
+
* @returns The transformed code as { code, map, warnings }
|
|
100
|
+
*/
|
|
101
|
+
transformSync(code: string, options: TransformOptions = {}): TransformResult {
|
|
102
|
+
const loader = options.loader || 'ts'
|
|
103
|
+
const format = options.format || 'esm'
|
|
104
|
+
|
|
105
|
+
const transpiler = new Bun.Transpiler({ loader })
|
|
106
|
+
let result = transpiler.transformSync(code)
|
|
107
|
+
|
|
108
|
+
if (format === 'cjs') {
|
|
109
|
+
result = esmToCjs(result)
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return { code: result, map: '', warnings: [] }
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Transform code asynchronously
|
|
117
|
+
* @param code - The code to transform
|
|
118
|
+
* @param options - Transform options (loader, format, minify)
|
|
119
|
+
* @returns The transformed code as { code, map, warnings }
|
|
120
|
+
*/
|
|
121
|
+
async transform(code: string, options: TransformOptions = {}): Promise<TransformResult> {
|
|
122
|
+
const loader = options.loader || 'ts'
|
|
123
|
+
const format = options.format || 'esm'
|
|
124
|
+
|
|
125
|
+
const transpiler = new Bun.Transpiler({ loader })
|
|
126
|
+
let result = await transpiler.transform(code)
|
|
127
|
+
|
|
128
|
+
if (format === 'cjs') {
|
|
129
|
+
result = esmToCjs(result)
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
return { code: result, map: '', warnings: [] }
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Bundle a file using Bun.build, inlining all imports except those marked external.
|
|
137
|
+
* Returns CJS code ready for VM execution.
|
|
138
|
+
*
|
|
139
|
+
* @param filePath - Absolute path to the entrypoint file
|
|
140
|
+
* @param external - Module IDs to leave as require() calls (e.g. virtual modules)
|
|
141
|
+
* @returns The bundled CJS code string
|
|
142
|
+
*/
|
|
143
|
+
async bundle(filePath: string, external: string[] = []): Promise<string> {
|
|
144
|
+
const result = await Bun.build({
|
|
145
|
+
entrypoints: [filePath],
|
|
146
|
+
target: 'bun',
|
|
147
|
+
format: 'cjs',
|
|
148
|
+
external,
|
|
149
|
+
} as any)
|
|
150
|
+
|
|
151
|
+
if (!result.success) {
|
|
152
|
+
const msgs = result.logs.map((l: any) => l.message || String(l)).join('\n')
|
|
153
|
+
throw new Error(`Bundle failed for ${filePath}:\n${msgs}`)
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
return await result.outputs[0]!.text()
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
export default Transpiler
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { z } from 'zod'
|
|
2
|
+
import { FeatureStateSchema, FeatureOptionsSchema, FeatureEventsSchema } from '../../schemas/base.js'
|
|
3
|
+
import { Feature } from '../feature.js'
|
|
4
|
+
import { createHash } from 'crypto'
|
|
5
|
+
|
|
6
|
+
const CHATTERBOX_ENDPOINT = 'https://api.runpod.ai/v2/chatterbox-turbo/runsync'
|
|
7
|
+
|
|
8
|
+
const PRESET_VOICES = [
|
|
9
|
+
'aaron', 'abigail', 'anaya', 'andy', 'archer',
|
|
10
|
+
'brian', 'chloe', 'dylan', 'emmanuel', 'ethan',
|
|
11
|
+
'evelyn', 'gavin', 'gordon', 'ivan', 'laura',
|
|
12
|
+
'lucy', 'madison', 'marisol', 'meera', 'walter',
|
|
13
|
+
] as const
|
|
14
|
+
|
|
15
|
+
type PresetVoice = typeof PRESET_VOICES[number]
|
|
16
|
+
|
|
17
|
+
export const TTSOptionsSchema = FeatureOptionsSchema.extend({
|
|
18
|
+
apiKey: z.string().optional().describe('RunPod API key (falls back to RUNPOD_API_KEY env var)'),
|
|
19
|
+
voice: z.string().optional().describe('Default preset voice name'),
|
|
20
|
+
outputDir: z.string().optional().describe('Directory to save generated audio files'),
|
|
21
|
+
format: z.enum(['wav', 'flac', 'ogg']).default('wav').describe('Audio output format'),
|
|
22
|
+
})
|
|
23
|
+
export type TTSOptions = z.infer<typeof TTSOptionsSchema>
|
|
24
|
+
|
|
25
|
+
export const TTSStateSchema = FeatureStateSchema.extend({
|
|
26
|
+
lastFile: z.string().optional().describe('Path to the last generated audio file'),
|
|
27
|
+
lastText: z.string().optional().describe('Text of the last synthesis request'),
|
|
28
|
+
generating: z.boolean().default(false).describe('Whether audio is currently being generated'),
|
|
29
|
+
})
|
|
30
|
+
export type TTSState = z.infer<typeof TTSStateSchema>
|
|
31
|
+
|
|
32
|
+
export const TTSEventsSchema = FeatureEventsSchema.extend({
|
|
33
|
+
synthesized: z.tuple([
|
|
34
|
+
z.string().describe('The text that was synthesized'),
|
|
35
|
+
z.string().describe('Path to the generated audio file'),
|
|
36
|
+
z.string().describe('Voice used'),
|
|
37
|
+
z.number().describe('Duration of the API call in milliseconds'),
|
|
38
|
+
]).describe('Emitted when audio synthesis completes'),
|
|
39
|
+
error: z.tuple([
|
|
40
|
+
z.any().describe('The error'),
|
|
41
|
+
]).describe('Emitted when synthesis fails'),
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* TTS feature — synthesizes text to audio files via RunPod's Chatterbox Turbo endpoint.
|
|
46
|
+
*
|
|
47
|
+
* Generates high-quality speech audio by calling the Chatterbox Turbo public endpoint
|
|
48
|
+
* on RunPod, downloads the resulting audio, and saves it locally. Supports 20 preset
|
|
49
|
+
* voices and voice cloning via a reference audio URL.
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```typescript
|
|
53
|
+
* const tts = container.feature('tts', { enable: true })
|
|
54
|
+
* const path = await tts.synthesize('Hello, how are you?', { voice: 'lucy' })
|
|
55
|
+
* console.log(`Audio saved to: ${path}`)
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export class TTS extends Feature<TTSState, TTSOptions> {
|
|
59
|
+
static override shortcut = 'features.tts' as const
|
|
60
|
+
static override envVars = ['RUNPOD_API_KEY']
|
|
61
|
+
static override stateSchema = TTSStateSchema
|
|
62
|
+
static override optionsSchema = TTSOptionsSchema
|
|
63
|
+
static override eventsSchema = TTSEventsSchema
|
|
64
|
+
static { Feature.register(this, 'tts') }
|
|
65
|
+
|
|
66
|
+
/** RunPod API key from options or environment. */
|
|
67
|
+
get apiKey(): string {
|
|
68
|
+
return this.options.apiKey || process.env.RUNPOD_API_KEY || ''
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/** Directory where generated audio files are saved. */
|
|
72
|
+
get outputDir(): string {
|
|
73
|
+
return this.options.outputDir || this.container.paths.resolve(this.container.feature('os').homedir, '.luca', 'tts-cache')
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/** The 20 preset voice names available in Chatterbox Turbo. */
|
|
77
|
+
get voices(): readonly string[] {
|
|
78
|
+
return PRESET_VOICES
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Synthesize text to an audio file using Chatterbox Turbo.
|
|
83
|
+
*
|
|
84
|
+
* Calls the RunPod public endpoint, downloads the generated audio,
|
|
85
|
+
* and saves it to the output directory.
|
|
86
|
+
*
|
|
87
|
+
* @param text - The text to synthesize into speech
|
|
88
|
+
* @param options - Override voice, format, or provide a voiceUrl for cloning
|
|
89
|
+
* @returns Absolute path to the generated audio file
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* ```typescript
|
|
93
|
+
* // Use a preset voice
|
|
94
|
+
* const path = await tts.synthesize('Good morning!', { voice: 'ethan' })
|
|
95
|
+
*
|
|
96
|
+
* // Clone a voice from a reference audio URL
|
|
97
|
+
* const path = await tts.synthesize('Hello world', {
|
|
98
|
+
* voiceUrl: 'https://example.com/reference.wav'
|
|
99
|
+
* })
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
async synthesize(text: string, options?: {
|
|
103
|
+
voice?: string
|
|
104
|
+
format?: 'wav' | 'flac' | 'ogg'
|
|
105
|
+
voiceUrl?: string
|
|
106
|
+
}): Promise<string> {
|
|
107
|
+
if (!this.apiKey) {
|
|
108
|
+
throw new Error('TTS requires a RunPod API key. Set RUNPOD_API_KEY or pass apiKey in options.')
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
const voice = options?.voice || this.options.voice || 'lucy'
|
|
112
|
+
const format = options?.format || this.options.format || 'wav'
|
|
113
|
+
|
|
114
|
+
this.setState({ generating: true, lastText: text })
|
|
115
|
+
|
|
116
|
+
const startTime = Date.now()
|
|
117
|
+
|
|
118
|
+
try {
|
|
119
|
+
const input: Record<string, any> = {
|
|
120
|
+
prompt: text,
|
|
121
|
+
format,
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
if (options?.voiceUrl) {
|
|
125
|
+
input.voice_url = options.voiceUrl
|
|
126
|
+
} else {
|
|
127
|
+
input.voice = voice
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
const response = await fetch(CHATTERBOX_ENDPOINT, {
|
|
131
|
+
method: 'POST',
|
|
132
|
+
headers: {
|
|
133
|
+
'Authorization': `Bearer ${this.apiKey}`,
|
|
134
|
+
'Content-Type': 'application/json',
|
|
135
|
+
},
|
|
136
|
+
body: JSON.stringify({ input }),
|
|
137
|
+
})
|
|
138
|
+
|
|
139
|
+
if (!response.ok) {
|
|
140
|
+
const body = await response.text()
|
|
141
|
+
throw new Error(`Chatterbox API error ${response.status}: ${body}`)
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
const data = await response.json() as { output?: { audio_url?: string }, error?: string }
|
|
145
|
+
|
|
146
|
+
if (data.error) {
|
|
147
|
+
throw new Error(`Chatterbox API error: ${data.error}`)
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
const audioUrl = data.output?.audio_url
|
|
151
|
+
if (!audioUrl) {
|
|
152
|
+
throw new Error('No audio_url in Chatterbox response')
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// Download the audio file
|
|
156
|
+
const audioResponse = await fetch(audioUrl)
|
|
157
|
+
if (!audioResponse.ok) {
|
|
158
|
+
throw new Error(`Failed to download audio: ${audioResponse.status}`)
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
const audioBuffer = Buffer.from(await audioResponse.arrayBuffer())
|
|
162
|
+
|
|
163
|
+
// Save to output dir with hash-based name
|
|
164
|
+
this.container.fs.ensureFolder(this.outputDir)
|
|
165
|
+
const hash = createHash('md5').update(text).digest('hex').slice(0, 8)
|
|
166
|
+
const filename = `${hash}-${Date.now()}.${format}`
|
|
167
|
+
const filePath = this.container.paths.join(this.outputDir, filename)
|
|
168
|
+
|
|
169
|
+
await this.container.fs.writeFileAsync(filePath, audioBuffer)
|
|
170
|
+
|
|
171
|
+
const durationMs = Date.now() - startTime
|
|
172
|
+
|
|
173
|
+
this.setState({ generating: false, lastFile: filePath })
|
|
174
|
+
this.emit('synthesized', text, filePath, voice, durationMs)
|
|
175
|
+
|
|
176
|
+
return filePath
|
|
177
|
+
} catch (error: any) {
|
|
178
|
+
this.setState({ generating: false })
|
|
179
|
+
this.emit('error', error)
|
|
180
|
+
throw error
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
export default TTS
|