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,286 @@
|
|
|
1
|
+
import { z } from 'zod'
|
|
2
|
+
import { FeatureStateSchema, FeatureOptionsSchema, FeatureEventsSchema } from '../../schemas/base.js'
|
|
3
|
+
import { Feature } from '../feature.js'
|
|
4
|
+
import { google, type sheets_v4 } from 'googleapis'
|
|
5
|
+
import type { GoogleAuth } from './google-auth.js'
|
|
6
|
+
|
|
7
|
+
export type SpreadsheetMeta = {
|
|
8
|
+
spreadsheetId: string
|
|
9
|
+
title: string
|
|
10
|
+
locale: string
|
|
11
|
+
sheets: SheetInfo[]
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export type SheetInfo = {
|
|
15
|
+
sheetId: number
|
|
16
|
+
title: string
|
|
17
|
+
index: number
|
|
18
|
+
rowCount: number
|
|
19
|
+
columnCount: number
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export const GoogleSheetsStateSchema = FeatureStateSchema.extend({
|
|
23
|
+
lastSpreadsheetId: z.string().optional()
|
|
24
|
+
.describe('Last spreadsheet ID accessed'),
|
|
25
|
+
lastSheetName: z.string().optional()
|
|
26
|
+
.describe('Last sheet/tab name accessed'),
|
|
27
|
+
lastRowCount: z.number().optional()
|
|
28
|
+
.describe('Number of rows returned in last read'),
|
|
29
|
+
lastError: z.string().optional()
|
|
30
|
+
.describe('Last Sheets API error message'),
|
|
31
|
+
})
|
|
32
|
+
export type GoogleSheetsState = z.infer<typeof GoogleSheetsStateSchema>
|
|
33
|
+
|
|
34
|
+
export const GoogleSheetsOptionsSchema = FeatureOptionsSchema.extend({
|
|
35
|
+
auth: z.any().describe('An authorized instance of the googleAuth feature').optional(),
|
|
36
|
+
defaultSpreadsheetId: z.string().optional()
|
|
37
|
+
.describe('Default spreadsheet ID for operations'),
|
|
38
|
+
})
|
|
39
|
+
export type GoogleSheetsOptions = z.infer<typeof GoogleSheetsOptionsSchema>
|
|
40
|
+
|
|
41
|
+
export const GoogleSheetsEventsSchema = FeatureEventsSchema.extend({
|
|
42
|
+
dataFetched: z.tuple([z.number().describe('Number of rows')])
|
|
43
|
+
.describe('Sheet data was fetched'),
|
|
44
|
+
error: z.tuple([z.any().describe('The error')]).describe('Sheets API error occurred'),
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Google Sheets feature for reading spreadsheet data as JSON, CSV, or raw arrays.
|
|
49
|
+
*
|
|
50
|
+
* Depends on the googleAuth feature for authentication. Creates a Sheets v4 API
|
|
51
|
+
* client lazily and provides convenient methods for reading tabular data.
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```typescript
|
|
55
|
+
* const sheets = container.feature('googleSheets', {
|
|
56
|
+
* defaultSpreadsheetId: '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms'
|
|
57
|
+
* })
|
|
58
|
+
*
|
|
59
|
+
* // Read as JSON objects (first row = headers)
|
|
60
|
+
* const data = await sheets.getAsJson('Sheet1')
|
|
61
|
+
* // => [{ name: 'Alice', age: '30' }, { name: 'Bob', age: '25' }]
|
|
62
|
+
*
|
|
63
|
+
* // Read as CSV string
|
|
64
|
+
* const csv = await sheets.getAsCsv('Revenue')
|
|
65
|
+
*
|
|
66
|
+
* // Read a specific range
|
|
67
|
+
* const values = await sheets.getRange('Sheet1!A1:D10')
|
|
68
|
+
*
|
|
69
|
+
* // Save to file
|
|
70
|
+
* await sheets.saveAsJson('./data/export.json')
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
export class GoogleSheets extends Feature<GoogleSheetsState, GoogleSheetsOptions> {
|
|
74
|
+
static override shortcut = 'features.googleSheets' as const
|
|
75
|
+
static override stateSchema = GoogleSheetsStateSchema
|
|
76
|
+
static override optionsSchema = GoogleSheetsOptionsSchema
|
|
77
|
+
static override eventsSchema = GoogleSheetsEventsSchema
|
|
78
|
+
static { Feature.register(this, 'googleSheets') }
|
|
79
|
+
|
|
80
|
+
private _sheets?: sheets_v4.Sheets
|
|
81
|
+
|
|
82
|
+
override get initialState(): GoogleSheetsState {
|
|
83
|
+
return { ...super.initialState }
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/** Access the google-auth feature lazily. */
|
|
87
|
+
get auth(): GoogleAuth {
|
|
88
|
+
if (this.options.auth) {
|
|
89
|
+
return this.options.auth as GoogleAuth
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
return this.container.feature('googleAuth') as unknown as GoogleAuth
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
/** Get or create the Sheets v4 API client. */
|
|
97
|
+
private async getSheets(): Promise<sheets_v4.Sheets> {
|
|
98
|
+
if (this._sheets) return this._sheets
|
|
99
|
+
const auth = await this.auth.getAuthClient()
|
|
100
|
+
this._sheets = google.sheets({ version: 'v4', auth: auth as any })
|
|
101
|
+
return this._sheets
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/** Resolve spreadsheet ID from argument or default option. */
|
|
105
|
+
private resolveId(spreadsheetId?: string): string {
|
|
106
|
+
const id = spreadsheetId || this.options.defaultSpreadsheetId
|
|
107
|
+
if (!id) throw new Error('Spreadsheet ID required. Pass it as argument or set options.defaultSpreadsheetId.')
|
|
108
|
+
return id
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Get spreadsheet metadata including title, locale, and sheet list.
|
|
113
|
+
*
|
|
114
|
+
* @param spreadsheetId - The spreadsheet ID (defaults to options.defaultSpreadsheetId)
|
|
115
|
+
*/
|
|
116
|
+
async getSpreadsheet(spreadsheetId?: string): Promise<SpreadsheetMeta> {
|
|
117
|
+
const id = this.resolveId(spreadsheetId)
|
|
118
|
+
try {
|
|
119
|
+
const sheets = await this.getSheets()
|
|
120
|
+
const res = await sheets.spreadsheets.get({ spreadsheetId: id })
|
|
121
|
+
const data = res.data
|
|
122
|
+
|
|
123
|
+
this.setState({ lastSpreadsheetId: id })
|
|
124
|
+
return {
|
|
125
|
+
spreadsheetId: data.spreadsheetId || id,
|
|
126
|
+
title: data.properties?.title || '',
|
|
127
|
+
locale: data.properties?.locale || 'en_US',
|
|
128
|
+
sheets: (data.sheets || []).map(s => ({
|
|
129
|
+
sheetId: s.properties?.sheetId || 0,
|
|
130
|
+
title: s.properties?.title || '',
|
|
131
|
+
index: s.properties?.index || 0,
|
|
132
|
+
rowCount: s.properties?.gridProperties?.rowCount || 0,
|
|
133
|
+
columnCount: s.properties?.gridProperties?.columnCount || 0,
|
|
134
|
+
})),
|
|
135
|
+
}
|
|
136
|
+
} catch (err: any) {
|
|
137
|
+
this.setState({ lastError: err.message })
|
|
138
|
+
this.emit('error', err)
|
|
139
|
+
throw err
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* List all sheets (tabs) in a spreadsheet.
|
|
145
|
+
*
|
|
146
|
+
* @param spreadsheetId - The spreadsheet ID
|
|
147
|
+
*/
|
|
148
|
+
async listSheets(spreadsheetId?: string): Promise<SheetInfo[]> {
|
|
149
|
+
const meta = await this.getSpreadsheet(spreadsheetId)
|
|
150
|
+
return meta.sheets
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Read a range of values from a sheet.
|
|
155
|
+
*
|
|
156
|
+
* @param range - A1 notation range (e.g. "Sheet1!A1:D10" or "Sheet1" for entire sheet)
|
|
157
|
+
* @param spreadsheetId - The spreadsheet ID
|
|
158
|
+
* @returns Raw values as a 2D string array
|
|
159
|
+
*/
|
|
160
|
+
async getRange(range: string, spreadsheetId?: string): Promise<string[][]> {
|
|
161
|
+
const id = this.resolveId(spreadsheetId)
|
|
162
|
+
try {
|
|
163
|
+
const sheets = await this.getSheets()
|
|
164
|
+
const res = await sheets.spreadsheets.values.get({
|
|
165
|
+
spreadsheetId: id,
|
|
166
|
+
range,
|
|
167
|
+
valueRenderOption: 'FORMATTED_VALUE',
|
|
168
|
+
})
|
|
169
|
+
|
|
170
|
+
const values = (res.data.values || []) as string[][]
|
|
171
|
+
this.setState({
|
|
172
|
+
lastSpreadsheetId: id,
|
|
173
|
+
lastSheetName: range.split('!')[0],
|
|
174
|
+
lastRowCount: values.length,
|
|
175
|
+
})
|
|
176
|
+
this.emit('dataFetched', values.length)
|
|
177
|
+
return values
|
|
178
|
+
} catch (err: any) {
|
|
179
|
+
this.setState({ lastError: err.message })
|
|
180
|
+
this.emit('error', err)
|
|
181
|
+
throw err
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Read a sheet as an array of JSON objects.
|
|
187
|
+
* The first row is treated as headers; subsequent rows become objects keyed by those headers.
|
|
188
|
+
*
|
|
189
|
+
* @param sheetName - Name of the sheet tab (if omitted, reads the first sheet)
|
|
190
|
+
* @param spreadsheetId - The spreadsheet ID
|
|
191
|
+
*/
|
|
192
|
+
async getAsJson<T extends Record<string, any> = Record<string, string>>(
|
|
193
|
+
sheetName?: string,
|
|
194
|
+
spreadsheetId?: string
|
|
195
|
+
): Promise<T[]> {
|
|
196
|
+
const id = this.resolveId(spreadsheetId)
|
|
197
|
+
|
|
198
|
+
// If no sheet name, get the first sheet's name
|
|
199
|
+
let range: string
|
|
200
|
+
if (sheetName) {
|
|
201
|
+
range = sheetName
|
|
202
|
+
} else {
|
|
203
|
+
const meta = await this.getSpreadsheet(id)
|
|
204
|
+
range = meta.sheets[0]?.title || 'Sheet1'
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
const values = await this.getRange(range, id)
|
|
208
|
+
if (values.length < 2) return []
|
|
209
|
+
|
|
210
|
+
const headers = values[0]!
|
|
211
|
+
return values.slice(1).map(row => {
|
|
212
|
+
const obj: Record<string, string> = {}
|
|
213
|
+
headers.forEach((header, i) => {
|
|
214
|
+
obj[header] = row[i] || ''
|
|
215
|
+
})
|
|
216
|
+
return obj as T
|
|
217
|
+
})
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* Read a sheet and return it as a CSV string.
|
|
222
|
+
*
|
|
223
|
+
* @param sheetName - Name of the sheet tab (if omitted, reads the first sheet)
|
|
224
|
+
* @param spreadsheetId - The spreadsheet ID
|
|
225
|
+
*/
|
|
226
|
+
async getAsCsv(sheetName?: string, spreadsheetId?: string): Promise<string> {
|
|
227
|
+
const id = this.resolveId(spreadsheetId)
|
|
228
|
+
|
|
229
|
+
let range: string
|
|
230
|
+
if (sheetName) {
|
|
231
|
+
range = sheetName
|
|
232
|
+
} else {
|
|
233
|
+
const meta = await this.getSpreadsheet(id)
|
|
234
|
+
range = meta.sheets[0]?.title || 'Sheet1'
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
const values = await this.getRange(range, id)
|
|
238
|
+
return values.map(row =>
|
|
239
|
+
row.map(cell => {
|
|
240
|
+
const str = String(cell)
|
|
241
|
+
if (str.includes(',') || str.includes('"') || str.includes('\n')) {
|
|
242
|
+
return `"${str.replace(/"/g, '""')}"`
|
|
243
|
+
}
|
|
244
|
+
return str
|
|
245
|
+
}).join(',')
|
|
246
|
+
).join('\n')
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* Download sheet data as JSON and save to a local file.
|
|
251
|
+
*
|
|
252
|
+
* @param localPath - Local file path (resolved relative to container cwd)
|
|
253
|
+
* @param sheetName - Sheet tab name (defaults to first sheet)
|
|
254
|
+
* @param spreadsheetId - The spreadsheet ID
|
|
255
|
+
* @returns Absolute path of the saved file
|
|
256
|
+
*/
|
|
257
|
+
async saveAsJson(localPath: string, sheetName?: string, spreadsheetId?: string): Promise<string> {
|
|
258
|
+
const data = await this.getAsJson(sheetName, spreadsheetId)
|
|
259
|
+
const outPath = this.container.paths.resolve(localPath)
|
|
260
|
+
await this.container.fs.writeFileAsync(outPath, JSON.stringify(data, null, 2))
|
|
261
|
+
return outPath
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Download sheet data as CSV and save to a local file.
|
|
266
|
+
*
|
|
267
|
+
* @param localPath - Local file path (resolved relative to container cwd)
|
|
268
|
+
* @param sheetName - Sheet tab name (defaults to first sheet)
|
|
269
|
+
* @param spreadsheetId - The spreadsheet ID
|
|
270
|
+
* @returns Absolute path of the saved file
|
|
271
|
+
*/
|
|
272
|
+
async saveAsCsv(localPath: string, sheetName?: string, spreadsheetId?: string): Promise<string> {
|
|
273
|
+
const csv = await this.getAsCsv(sheetName, spreadsheetId)
|
|
274
|
+
const outPath = this.container.paths.resolve(localPath)
|
|
275
|
+
await this.container.fs.writeFileAsync(outPath, csv)
|
|
276
|
+
return outPath
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
declare module '../../feature' {
|
|
281
|
+
interface AvailableFeatures {
|
|
282
|
+
googleSheets: typeof GoogleSheets
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
export default GoogleSheets
|