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,346 @@
|
|
|
1
|
+
import { z } from 'zod'
|
|
2
|
+
import { FeatureStateSchema, FeatureOptionsSchema, FeatureEventsSchema } from '../../schemas/base.js'
|
|
3
|
+
import { Feature } from '../feature.js'
|
|
4
|
+
import { google, type drive_v3 } from 'googleapis'
|
|
5
|
+
import type { GoogleAuth } from './google-auth.js'
|
|
6
|
+
|
|
7
|
+
export type DriveFile = {
|
|
8
|
+
id: string
|
|
9
|
+
name: string
|
|
10
|
+
mimeType: string
|
|
11
|
+
size?: string
|
|
12
|
+
createdTime?: string
|
|
13
|
+
modifiedTime?: string
|
|
14
|
+
parents?: string[]
|
|
15
|
+
webViewLink?: string
|
|
16
|
+
iconLink?: string
|
|
17
|
+
owners?: Array<{ displayName?: string | null; emailAddress?: string | null }>
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export type DriveFileList = {
|
|
21
|
+
files: DriveFile[]
|
|
22
|
+
nextPageToken?: string
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export type DriveBrowseResult = {
|
|
26
|
+
folder: DriveFile
|
|
27
|
+
files: DriveFile[]
|
|
28
|
+
folders: DriveFile[]
|
|
29
|
+
nextPageToken?: string
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export type ListFilesOptions = {
|
|
33
|
+
pageSize?: number
|
|
34
|
+
pageToken?: string
|
|
35
|
+
orderBy?: string
|
|
36
|
+
fields?: string
|
|
37
|
+
corpora?: 'user' | 'drive' | 'allDrives'
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export type SearchOptions = ListFilesOptions & {
|
|
41
|
+
mimeType?: string
|
|
42
|
+
inFolder?: string
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export type SharedDrive = {
|
|
46
|
+
id: string
|
|
47
|
+
name: string
|
|
48
|
+
colorRgb?: string
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export const GoogleDriveStateSchema = FeatureStateSchema.extend({
|
|
52
|
+
lastQuery: z.string().optional()
|
|
53
|
+
.describe('Last search query or folder ID browsed'),
|
|
54
|
+
lastResultCount: z.number().optional()
|
|
55
|
+
.describe('Number of results from last list/search operation'),
|
|
56
|
+
lastError: z.string().optional()
|
|
57
|
+
.describe('Last Drive API error message'),
|
|
58
|
+
})
|
|
59
|
+
export type GoogleDriveState = z.infer<typeof GoogleDriveStateSchema>
|
|
60
|
+
|
|
61
|
+
export const GoogleDriveOptionsSchema = FeatureOptionsSchema.extend({
|
|
62
|
+
auth: z.any().describe('An authorized instance of the googleAuth feature').optional(),
|
|
63
|
+
|
|
64
|
+
defaultCorpora: z.enum(['user', 'drive', 'allDrives']).optional()
|
|
65
|
+
.describe('Default corpus for file queries (default: user)'),
|
|
66
|
+
pageSize: z.number().optional()
|
|
67
|
+
.describe('Default number of results per page (default: 100)'),
|
|
68
|
+
})
|
|
69
|
+
export type GoogleDriveOptions = z.infer<typeof GoogleDriveOptionsSchema>
|
|
70
|
+
|
|
71
|
+
export const GoogleDriveEventsSchema = FeatureEventsSchema.extend({
|
|
72
|
+
filesFetched: z.tuple([z.number().describe('Number of files returned')])
|
|
73
|
+
.describe('Files were fetched from Drive'),
|
|
74
|
+
fileDownloaded: z.tuple([z.string().describe('File ID')])
|
|
75
|
+
.describe('A file was downloaded'),
|
|
76
|
+
error: z.tuple([z.any().describe('The error')]).describe('Drive API error occurred'),
|
|
77
|
+
})
|
|
78
|
+
|
|
79
|
+
const DEFAULT_FIELDS = 'files(id,name,mimeType,size,createdTime,modifiedTime,parents,webViewLink,iconLink,owners),nextPageToken'
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Google Drive feature for listing, searching, browsing, and downloading files.
|
|
83
|
+
*
|
|
84
|
+
* Depends on the googleAuth feature for authentication. Creates a Drive v3 API
|
|
85
|
+
* client lazily and passes the auth client from googleAuth.
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* ```typescript
|
|
89
|
+
* const drive = container.feature('googleDrive')
|
|
90
|
+
*
|
|
91
|
+
* // List recent files
|
|
92
|
+
* const { files } = await drive.listFiles()
|
|
93
|
+
*
|
|
94
|
+
* // Search for documents
|
|
95
|
+
* const { files: docs } = await drive.search('quarterly report', { mimeType: 'application/pdf' })
|
|
96
|
+
*
|
|
97
|
+
* // Browse a folder
|
|
98
|
+
* const contents = await drive.browse('folder-id-here')
|
|
99
|
+
*
|
|
100
|
+
* // Download a file to disk
|
|
101
|
+
* await drive.downloadTo('file-id', './downloads/report.pdf')
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
export class GoogleDrive extends Feature<GoogleDriveState, GoogleDriveOptions> {
|
|
105
|
+
static override shortcut = 'features.googleDrive' as const
|
|
106
|
+
static override stateSchema = GoogleDriveStateSchema
|
|
107
|
+
static override optionsSchema = GoogleDriveOptionsSchema
|
|
108
|
+
static override eventsSchema = GoogleDriveEventsSchema
|
|
109
|
+
static { Feature.register(this, 'googleDrive') }
|
|
110
|
+
|
|
111
|
+
private _drive?: drive_v3.Drive
|
|
112
|
+
|
|
113
|
+
override get initialState(): GoogleDriveState {
|
|
114
|
+
return { ...super.initialState }
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/** Access the google-auth feature lazily. */
|
|
118
|
+
get auth(): GoogleAuth {
|
|
119
|
+
if (this.options.auth) {
|
|
120
|
+
return this.options.auth as GoogleAuth
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
return this.container.feature('googleAuth') as unknown as GoogleAuth
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/** Get or create the Drive v3 API client. */
|
|
127
|
+
private async getDrive(): Promise<drive_v3.Drive> {
|
|
128
|
+
if (this._drive) return this._drive
|
|
129
|
+
const auth = await this.auth.getAuthClient()
|
|
130
|
+
this._drive = google.drive({ version: 'v3', auth: auth as any })
|
|
131
|
+
return this._drive
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* List files in the user's Drive with an optional query filter.
|
|
136
|
+
*
|
|
137
|
+
* @param query - Drive search query (e.g. "name contains 'report'", "mimeType='application/pdf'")
|
|
138
|
+
* @param options - Pagination and filtering options
|
|
139
|
+
* @returns Files array and optional nextPageToken
|
|
140
|
+
*/
|
|
141
|
+
async listFiles(query?: string, options: ListFilesOptions = {}): Promise<DriveFileList> {
|
|
142
|
+
try {
|
|
143
|
+
const drive = await this.getDrive()
|
|
144
|
+
const res = await drive.files.list({
|
|
145
|
+
q: query || undefined,
|
|
146
|
+
pageSize: options.pageSize || this.options.pageSize || 100,
|
|
147
|
+
pageToken: options.pageToken || undefined,
|
|
148
|
+
orderBy: options.orderBy || 'modifiedTime desc',
|
|
149
|
+
fields: options.fields || DEFAULT_FIELDS,
|
|
150
|
+
corpora: options.corpora || this.options.defaultCorpora || 'user',
|
|
151
|
+
includeItemsFromAllDrives: (options.corpora || this.options.defaultCorpora) === 'allDrives',
|
|
152
|
+
supportsAllDrives: true,
|
|
153
|
+
})
|
|
154
|
+
|
|
155
|
+
const files = (res.data.files || []).map(normalizeDriveFile)
|
|
156
|
+
this.setState({ lastQuery: query, lastResultCount: files.length })
|
|
157
|
+
this.emit('filesFetched', files.length)
|
|
158
|
+
return { files, nextPageToken: res.data.nextPageToken || undefined }
|
|
159
|
+
} catch (err: any) {
|
|
160
|
+
this.setState({ lastError: err.message })
|
|
161
|
+
this.emit('error', err)
|
|
162
|
+
throw err
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* List files within a specific folder.
|
|
168
|
+
*
|
|
169
|
+
* @param folderId - The Drive folder ID
|
|
170
|
+
* @param options - Pagination and filtering options
|
|
171
|
+
*/
|
|
172
|
+
async listFolder(folderId: string, options: ListFilesOptions = {}): Promise<DriveFileList> {
|
|
173
|
+
const query = `'${folderId}' in parents and trashed = false`
|
|
174
|
+
return this.listFiles(query, options)
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Browse a folder's contents, separating files from subfolders.
|
|
179
|
+
*
|
|
180
|
+
* @param folderId - Folder ID to browse (defaults to 'root')
|
|
181
|
+
* @returns Folder metadata, child files, and child folders
|
|
182
|
+
*/
|
|
183
|
+
async browse(folderId: string = 'root'): Promise<DriveBrowseResult> {
|
|
184
|
+
const drive = await this.getDrive()
|
|
185
|
+
|
|
186
|
+
// Get folder metadata
|
|
187
|
+
const folderRes = await drive.files.get({
|
|
188
|
+
fileId: folderId,
|
|
189
|
+
fields: 'id,name,mimeType,createdTime,modifiedTime,parents,webViewLink',
|
|
190
|
+
supportsAllDrives: true,
|
|
191
|
+
})
|
|
192
|
+
const folder = normalizeDriveFile(folderRes.data)
|
|
193
|
+
|
|
194
|
+
// List folder contents
|
|
195
|
+
const { files } = await this.listFolder(folderId, { pageSize: 1000 })
|
|
196
|
+
const folders = files.filter(f => f.mimeType === 'application/vnd.google-apps.folder')
|
|
197
|
+
const nonFolders = files.filter(f => f.mimeType !== 'application/vnd.google-apps.folder')
|
|
198
|
+
|
|
199
|
+
return { folder, files: nonFolders, folders }
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Search files by name, content, or MIME type.
|
|
204
|
+
*
|
|
205
|
+
* @param term - Search term to look for in file names and content
|
|
206
|
+
* @param options - Additional search options like mimeType filter or folder restriction
|
|
207
|
+
*/
|
|
208
|
+
async search(term: string, options: SearchOptions = {}): Promise<DriveFileList> {
|
|
209
|
+
const parts: string[] = [`fullText contains '${term.replace(/'/g, "\\'")}'`]
|
|
210
|
+
|
|
211
|
+
if (options.mimeType) {
|
|
212
|
+
parts.push(`mimeType = '${options.mimeType}'`)
|
|
213
|
+
}
|
|
214
|
+
if (options.inFolder) {
|
|
215
|
+
parts.push(`'${options.inFolder}' in parents`)
|
|
216
|
+
}
|
|
217
|
+
parts.push('trashed = false')
|
|
218
|
+
|
|
219
|
+
return this.listFiles(parts.join(' and '), options)
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Get file metadata by file ID.
|
|
224
|
+
*
|
|
225
|
+
* @param fileId - The Drive file ID
|
|
226
|
+
* @param fields - Specific fields to request (defaults to common fields)
|
|
227
|
+
*/
|
|
228
|
+
async getFile(fileId: string, fields?: string): Promise<DriveFile> {
|
|
229
|
+
try {
|
|
230
|
+
const drive = await this.getDrive()
|
|
231
|
+
const res = await drive.files.get({
|
|
232
|
+
fileId,
|
|
233
|
+
fields: fields || 'id,name,mimeType,size,createdTime,modifiedTime,parents,webViewLink,iconLink,owners',
|
|
234
|
+
supportsAllDrives: true,
|
|
235
|
+
})
|
|
236
|
+
return normalizeDriveFile(res.data)
|
|
237
|
+
} catch (err: any) {
|
|
238
|
+
this.setState({ lastError: err.message })
|
|
239
|
+
this.emit('error', err)
|
|
240
|
+
throw err
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Download a file's content as a Buffer.
|
|
246
|
+
* Uses alt=media for binary download of non-Google files.
|
|
247
|
+
*
|
|
248
|
+
* @param fileId - The Drive file ID
|
|
249
|
+
*/
|
|
250
|
+
async download(fileId: string): Promise<Buffer> {
|
|
251
|
+
try {
|
|
252
|
+
const drive = await this.getDrive()
|
|
253
|
+
const res = await drive.files.get(
|
|
254
|
+
{ fileId, alt: 'media', supportsAllDrives: true },
|
|
255
|
+
{ responseType: 'arraybuffer' }
|
|
256
|
+
)
|
|
257
|
+
this.emit('fileDownloaded', fileId)
|
|
258
|
+
return Buffer.from(res.data as ArrayBuffer)
|
|
259
|
+
} catch (err: any) {
|
|
260
|
+
this.setState({ lastError: err.message })
|
|
261
|
+
this.emit('error', err)
|
|
262
|
+
throw err
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* Download a file and save it to a local path.
|
|
268
|
+
*
|
|
269
|
+
* @param fileId - The Drive file ID
|
|
270
|
+
* @param localPath - Local file path (resolved relative to container cwd)
|
|
271
|
+
* @returns Absolute path of the saved file
|
|
272
|
+
*/
|
|
273
|
+
async downloadTo(fileId: string, localPath: string): Promise<string> {
|
|
274
|
+
const buffer = await this.download(fileId)
|
|
275
|
+
const outPath = this.container.paths.resolve(localPath)
|
|
276
|
+
await this.container.fs.writeFileAsync(outPath, buffer)
|
|
277
|
+
return outPath
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* Export a Google Workspace file (Docs, Sheets, Slides) to a given MIME type.
|
|
282
|
+
* Uses the Files.export endpoint.
|
|
283
|
+
*
|
|
284
|
+
* @param fileId - The Drive file ID of a Google Workspace document
|
|
285
|
+
* @param mimeType - Target MIME type (e.g. 'text/plain', 'application/pdf', 'text/csv')
|
|
286
|
+
*/
|
|
287
|
+
async exportFile(fileId: string, mimeType: string): Promise<Buffer> {
|
|
288
|
+
try {
|
|
289
|
+
const drive = await this.getDrive()
|
|
290
|
+
const res = await drive.files.export(
|
|
291
|
+
{ fileId, mimeType },
|
|
292
|
+
{ responseType: 'arraybuffer' }
|
|
293
|
+
)
|
|
294
|
+
this.emit('fileDownloaded', fileId)
|
|
295
|
+
return Buffer.from(res.data as ArrayBuffer)
|
|
296
|
+
} catch (err: any) {
|
|
297
|
+
this.setState({ lastError: err.message })
|
|
298
|
+
this.emit('error', err)
|
|
299
|
+
throw err
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* List all shared drives the user has access to.
|
|
305
|
+
*
|
|
306
|
+
* @returns Array of shared drive objects
|
|
307
|
+
*/
|
|
308
|
+
async listDrives(): Promise<SharedDrive[]> {
|
|
309
|
+
try {
|
|
310
|
+
const drive = await this.getDrive()
|
|
311
|
+
const res = await drive.drives.list({ pageSize: 100 })
|
|
312
|
+
return (res.data.drives || []).map(d => ({
|
|
313
|
+
id: d.id || '',
|
|
314
|
+
name: d.name || '',
|
|
315
|
+
colorRgb: d.colorRgb || undefined,
|
|
316
|
+
}))
|
|
317
|
+
} catch (err: any) {
|
|
318
|
+
this.setState({ lastError: err.message })
|
|
319
|
+
this.emit('error', err)
|
|
320
|
+
throw err
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
function normalizeDriveFile(f: drive_v3.Schema$File): DriveFile {
|
|
326
|
+
return {
|
|
327
|
+
id: f.id || '',
|
|
328
|
+
name: f.name || '',
|
|
329
|
+
mimeType: f.mimeType || '',
|
|
330
|
+
size: f.size || undefined,
|
|
331
|
+
createdTime: f.createdTime || undefined,
|
|
332
|
+
modifiedTime: f.modifiedTime || undefined,
|
|
333
|
+
parents: f.parents || undefined,
|
|
334
|
+
webViewLink: f.webViewLink || undefined,
|
|
335
|
+
iconLink: f.iconLink || undefined,
|
|
336
|
+
owners: f.owners?.map(o => ({ displayName: o.displayName, emailAddress: o.emailAddress })) || undefined,
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
declare module '../../feature' {
|
|
341
|
+
interface AvailableFeatures {
|
|
342
|
+
googleDrive: typeof GoogleDrive
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
export default GoogleDrive
|