@soederpop/luca 0.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/CLAUDE.md +71 -0
- package/README.md +78 -0
- package/bun.lock +2928 -0
- package/bunfig.toml +3 -0
- package/commands/audit-docs.ts +740 -0
- package/commands/build-scaffolds.ts +154 -0
- package/commands/generate-api-docs.ts +114 -0
- package/commands/update-introspection.ts +67 -0
- package/docs/CLI.md +335 -0
- package/docs/README.md +88 -0
- package/docs/TABLE-OF-CONTENTS.md +157 -0
- package/docs/apis/clients/elevenlabs.md +84 -0
- package/docs/apis/clients/graph.md +56 -0
- package/docs/apis/clients/openai.md +69 -0
- package/docs/apis/clients/rest.md +41 -0
- package/docs/apis/clients/websocket.md +107 -0
- package/docs/apis/features/agi/assistant.md +471 -0
- package/docs/apis/features/agi/assistants-manager.md +154 -0
- package/docs/apis/features/agi/claude-code.md +602 -0
- package/docs/apis/features/agi/conversation-history.md +352 -0
- package/docs/apis/features/agi/conversation.md +333 -0
- package/docs/apis/features/agi/docs-reader.md +121 -0
- package/docs/apis/features/agi/openai-codex.md +318 -0
- package/docs/apis/features/agi/openapi.md +138 -0
- package/docs/apis/features/agi/semantic-search.md +387 -0
- package/docs/apis/features/agi/skills-library.md +216 -0
- package/docs/apis/features/node/container-link.md +133 -0
- package/docs/apis/features/node/content-db.md +313 -0
- package/docs/apis/features/node/disk-cache.md +379 -0
- package/docs/apis/features/node/dns.md +651 -0
- package/docs/apis/features/node/docker.md +705 -0
- package/docs/apis/features/node/downloader.md +81 -0
- package/docs/apis/features/node/esbuild.md +59 -0
- package/docs/apis/features/node/file-manager.md +182 -0
- package/docs/apis/features/node/fs.md +581 -0
- package/docs/apis/features/node/git.md +330 -0
- package/docs/apis/features/node/google-auth.md +174 -0
- package/docs/apis/features/node/google-calendar.md +187 -0
- package/docs/apis/features/node/google-docs.md +151 -0
- package/docs/apis/features/node/google-drive.md +225 -0
- package/docs/apis/features/node/google-sheets.md +179 -0
- package/docs/apis/features/node/grep.md +290 -0
- package/docs/apis/features/node/helpers.md +135 -0
- package/docs/apis/features/node/ink.md +334 -0
- package/docs/apis/features/node/ipc-socket.md +260 -0
- package/docs/apis/features/node/json-tree.md +86 -0
- package/docs/apis/features/node/launcher-app-command-listener.md +145 -0
- package/docs/apis/features/node/networking.md +281 -0
- package/docs/apis/features/node/nlp.md +133 -0
- package/docs/apis/features/node/opener.md +97 -0
- package/docs/apis/features/node/os.md +118 -0
- package/docs/apis/features/node/package-finder.md +402 -0
- package/docs/apis/features/node/postgres.md +212 -0
- package/docs/apis/features/node/proc.md +430 -0
- package/docs/apis/features/node/process-manager.md +210 -0
- package/docs/apis/features/node/python.md +278 -0
- package/docs/apis/features/node/repl.md +88 -0
- package/docs/apis/features/node/runpod.md +673 -0
- package/docs/apis/features/node/secure-shell.md +169 -0
- package/docs/apis/features/node/semantic-search.md +401 -0
- package/docs/apis/features/node/sqlite.md +211 -0
- package/docs/apis/features/node/telegram.md +254 -0
- package/docs/apis/features/node/tts.md +118 -0
- package/docs/apis/features/node/ui.md +703 -0
- package/docs/apis/features/node/vault.md +64 -0
- package/docs/apis/features/node/vm.md +84 -0
- package/docs/apis/features/node/window-manager.md +337 -0
- package/docs/apis/features/node/yaml-tree.md +85 -0
- package/docs/apis/features/node/yaml.md +176 -0
- package/docs/apis/features/web/asset-loader.md +47 -0
- package/docs/apis/features/web/container-link.md +133 -0
- package/docs/apis/features/web/esbuild.md +59 -0
- package/docs/apis/features/web/helpers.md +135 -0
- package/docs/apis/features/web/network.md +30 -0
- package/docs/apis/features/web/speech.md +55 -0
- package/docs/apis/features/web/vault.md +64 -0
- package/docs/apis/features/web/vm.md +84 -0
- package/docs/apis/features/web/voice.md +67 -0
- package/docs/apis/servers/express.md +127 -0
- package/docs/apis/servers/mcp.md +213 -0
- package/docs/apis/servers/websocket.md +99 -0
- package/docs/documentation-audit.md +134 -0
- package/docs/examples/content-db.md +77 -0
- package/docs/examples/disk-cache.md +83 -0
- package/docs/examples/docker.md +101 -0
- package/docs/examples/downloader.md +70 -0
- package/docs/examples/esbuild.md +80 -0
- package/docs/examples/file-manager.md +82 -0
- package/docs/examples/fs.md +83 -0
- package/docs/examples/git.md +85 -0
- package/docs/examples/google-auth.md +88 -0
- package/docs/examples/google-calendar.md +94 -0
- package/docs/examples/google-docs.md +82 -0
- package/docs/examples/google-drive.md +96 -0
- package/docs/examples/google-sheets.md +95 -0
- package/docs/examples/grep.md +85 -0
- package/docs/examples/ink-blocks.md +75 -0
- package/docs/examples/ink-renderer.md +41 -0
- package/docs/examples/ink.md +103 -0
- package/docs/examples/ipc-socket.md +103 -0
- package/docs/examples/json-tree.md +91 -0
- package/docs/examples/launcher-app-command-listener.md +120 -0
- package/docs/examples/networking.md +58 -0
- package/docs/examples/nlp.md +91 -0
- package/docs/examples/opener.md +78 -0
- package/docs/examples/os.md +72 -0
- package/docs/examples/package-finder.md +89 -0
- package/docs/examples/port-exposer.md +89 -0
- package/docs/examples/postgres.md +91 -0
- package/docs/examples/proc.md +81 -0
- package/docs/examples/process-manager.md +79 -0
- package/docs/examples/python.md +91 -0
- package/docs/examples/repl.md +93 -0
- package/docs/examples/runpod.md +119 -0
- package/docs/examples/secure-shell.md +92 -0
- package/docs/examples/sqlite.md +86 -0
- package/docs/examples/telegram.md +77 -0
- package/docs/examples/tts.md +86 -0
- package/docs/examples/ui.md +80 -0
- package/docs/examples/vault.md +70 -0
- package/docs/examples/vm.md +86 -0
- package/docs/examples/window-manager.md +125 -0
- package/docs/examples/yaml-tree.md +93 -0
- package/docs/examples/yaml.md +104 -0
- package/docs/ideas/class-registration-refactor-possibilities.md +197 -0
- package/docs/ideas/container-use-api.md +9 -0
- package/docs/ideas/easy-auth-for-express-servers-and-luca-serve.md +0 -0
- package/docs/ideas/feature-stacks.md +22 -0
- package/docs/ideas/luca-cli-self-sufficiency-demo.md +23 -0
- package/docs/ideas/mcp-design.md +9 -0
- package/docs/ideas/web-container-debugging-feature.md +13 -0
- package/docs/introspection-audit.md +49 -0
- package/docs/introspection.md +154 -0
- package/docs/mcp/readme.md +162 -0
- package/docs/models.ts +38 -0
- package/docs/philosophy.md +85 -0
- package/docs/principles.md +7 -0
- package/docs/prompts/audit-codebase-for-failures-to-use-the-container.md +34 -0
- package/docs/prompts/mcp-test-easy-command.md +27 -0
- package/docs/reports/assistant-bugs.md +38 -0
- package/docs/reports/attach-pattern-usage.md +18 -0
- package/docs/reports/code-audit-results.md +391 -0
- package/docs/reports/introspection-audit-tasks.md +378 -0
- package/docs/reports/luca-mcp-improvements.md +128 -0
- package/docs/scaffolds/client.md +140 -0
- package/docs/scaffolds/command.md +106 -0
- package/docs/scaffolds/endpoint.md +176 -0
- package/docs/scaffolds/feature.md +148 -0
- package/docs/scaffolds/server.md +187 -0
- package/docs/tasks/web-container-helper-discovery.md +71 -0
- package/docs/todos.md +1 -0
- package/docs/tutorials/01-getting-started.md +106 -0
- package/docs/tutorials/02-container.md +210 -0
- package/docs/tutorials/03-scripts.md +194 -0
- package/docs/tutorials/04-features-overview.md +196 -0
- package/docs/tutorials/05-state-and-events.md +171 -0
- package/docs/tutorials/06-servers.md +157 -0
- package/docs/tutorials/07-endpoints.md +198 -0
- package/docs/tutorials/08-commands.md +171 -0
- package/docs/tutorials/09-clients.md +162 -0
- package/docs/tutorials/10-creating-features.md +198 -0
- package/docs/tutorials/11-contentbase.md +191 -0
- package/docs/tutorials/12-assistants.md +215 -0
- package/docs/tutorials/13-introspection.md +147 -0
- package/docs/tutorials/14-type-system.md +174 -0
- package/docs/tutorials/15-project-patterns.md +222 -0
- package/docs/tutorials/16-google-features.md +534 -0
- package/docs/tutorials/17-tui-blocks.md +530 -0
- package/docs/tutorials/18-semantic-search.md +334 -0
- package/index.ts +1 -0
- package/luca.console.ts +9 -0
- package/main.py +6 -0
- package/package.json +154 -0
- package/pyproject.toml +7 -0
- package/scripts/animations/chrome-glitch.ts +55 -0
- package/scripts/animations/index.ts +16 -0
- package/scripts/animations/neon-pulse.ts +64 -0
- package/scripts/animations/types.ts +6 -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/telegram-ink-ui.ts +302 -0
- package/scripts/examples/using-assistant-with-mcp.ts +560 -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 +10 -0
- package/scripts/examples/using-openai-codex.ts +23 -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/examples/vm-loading-esm-modules.ts +16 -0
- package/scripts/scaffold.ts +391 -0
- package/scripts/scratch.ts +15 -0
- package/scripts/test-command-listener.ts +123 -0
- package/scripts/test-window-manager-lifecycle.ts +86 -0
- package/scripts/test-window-manager.ts +43 -0
- package/scripts/update-introspection-data.ts +58 -0
- package/src/agi/README.md +14 -0
- package/src/agi/container.server.ts +114 -0
- package/src/agi/endpoints/ask.ts +60 -0
- package/src/agi/endpoints/conversations/[id].ts +45 -0
- package/src/agi/endpoints/conversations.ts +31 -0
- package/src/agi/endpoints/experts.ts +37 -0
- package/src/agi/features/assistant.ts +767 -0
- package/src/agi/features/assistants-manager.ts +260 -0
- package/src/agi/features/claude-code.ts +1111 -0
- package/src/agi/features/conversation-history.ts +497 -0
- package/src/agi/features/conversation.ts +799 -0
- package/src/agi/features/openai-codex.ts +631 -0
- package/src/agi/features/openapi.ts +438 -0
- package/src/agi/features/skills-library.ts +425 -0
- package/src/agi/index.ts +6 -0
- package/src/agi/lib/token-counter.ts +122 -0
- package/src/browser.ts +25 -0
- package/src/bus.ts +100 -0
- package/src/cli/cli.ts +70 -0
- package/src/client.ts +461 -0
- package/src/clients/civitai/index.ts +541 -0
- package/src/clients/client-template.ts +41 -0
- package/src/clients/comfyui/index.ts +597 -0
- package/src/clients/elevenlabs/index.ts +291 -0
- package/src/clients/openai/index.ts +451 -0
- package/src/clients/supabase/index.ts +366 -0
- package/src/command.ts +164 -0
- package/src/commands/chat.ts +182 -0
- package/src/commands/console.ts +192 -0
- package/src/commands/describe.ts +433 -0
- package/src/commands/eval.ts +116 -0
- package/src/commands/help.ts +214 -0
- package/src/commands/index.ts +14 -0
- package/src/commands/mcp.ts +64 -0
- package/src/commands/prompt.ts +807 -0
- package/src/commands/run.ts +257 -0
- package/src/commands/sandbox-mcp.ts +439 -0
- package/src/commands/scaffold.ts +79 -0
- package/src/commands/serve.ts +172 -0
- package/src/container.ts +781 -0
- package/src/endpoint.ts +340 -0
- package/src/feature.ts +75 -0
- package/src/hash-object.ts +97 -0
- package/src/helper.ts +543 -0
- package/src/introspection/generated.agi.ts +23388 -0
- package/src/introspection/generated.node.ts +18899 -0
- package/src/introspection/generated.web.ts +2021 -0
- package/src/introspection/index.ts +256 -0
- package/src/introspection/scan.ts +912 -0
- package/src/node/container.ts +354 -0
- package/src/node/feature.ts +13 -0
- package/src/node/features/container-link.ts +558 -0
- package/src/node/features/content-db.ts +475 -0
- package/src/node/features/disk-cache.ts +382 -0
- package/src/node/features/dns.ts +655 -0
- package/src/node/features/docker.ts +912 -0
- package/src/node/features/downloader.ts +92 -0
- package/src/node/features/esbuild.ts +68 -0
- package/src/node/features/file-manager.ts +357 -0
- package/src/node/features/fs.ts +534 -0
- package/src/node/features/git.ts +492 -0
- package/src/node/features/google-auth.ts +502 -0
- package/src/node/features/google-calendar.ts +300 -0
- package/src/node/features/google-docs.ts +404 -0
- package/src/node/features/google-drive.ts +339 -0
- package/src/node/features/google-sheets.ts +279 -0
- package/src/node/features/grep.ts +406 -0
- package/src/node/features/helpers.ts +374 -0
- package/src/node/features/ink.ts +490 -0
- package/src/node/features/ipc-socket.ts +459 -0
- package/src/node/features/json-tree.ts +188 -0
- package/src/node/features/launcher-app-command-listener.ts +388 -0
- package/src/node/features/networking.ts +925 -0
- package/src/node/features/nlp.ts +211 -0
- package/src/node/features/opener.ts +166 -0
- package/src/node/features/os.ts +157 -0
- package/src/node/features/package-finder.ts +539 -0
- package/src/node/features/port-exposer.ts +342 -0
- package/src/node/features/postgres.ts +273 -0
- package/src/node/features/proc.ts +502 -0
- package/src/node/features/process-manager.ts +542 -0
- package/src/node/features/python.ts +444 -0
- package/src/node/features/repl.ts +194 -0
- package/src/node/features/runpod.ts +802 -0
- package/src/node/features/secure-shell.ts +248 -0
- package/src/node/features/semantic-search.ts +924 -0
- package/src/node/features/sqlite.ts +289 -0
- package/src/node/features/telegram.ts +342 -0
- package/src/node/features/tts.ts +184 -0
- package/src/node/features/ui.ts +857 -0
- package/src/node/features/vault.ts +164 -0
- package/src/node/features/vm.ts +312 -0
- package/src/node/features/window-manager.ts +804 -0
- package/src/node/features/yaml-tree.ts +149 -0
- package/src/node/features/yaml.ts +132 -0
- package/src/node.ts +70 -0
- package/src/react/index.ts +175 -0
- package/src/registry.ts +199 -0
- package/src/scaffolds/generated.ts +1613 -0
- package/src/scaffolds/template.ts +37 -0
- package/src/schemas/base.ts +255 -0
- package/src/server.ts +135 -0
- package/src/servers/express.ts +209 -0
- package/src/servers/mcp.ts +805 -0
- package/src/servers/socket.ts +120 -0
- package/src/state.ts +101 -0
- package/src/web/clients/socket.ts +82 -0
- package/src/web/container.ts +74 -0
- package/src/web/extension.ts +30 -0
- package/src/web/feature.ts +12 -0
- package/src/web/features/asset-loader.ts +64 -0
- package/src/web/features/container-link.ts +385 -0
- package/src/web/features/esbuild.ts +79 -0
- package/src/web/features/helpers.ts +267 -0
- package/src/web/features/network.ts +61 -0
- package/src/web/features/speech.ts +87 -0
- package/src/web/features/vault.ts +189 -0
- package/src/web/features/vm.ts +78 -0
- package/src/web/features/voice-recognition.ts +129 -0
- package/src/web/shims/isomorphic-vm.ts +149 -0
- package/test/bus.test.ts +134 -0
- package/test/clients-servers.test.ts +216 -0
- package/test/container-link.test.ts +274 -0
- package/test/features.test.ts +160 -0
- package/test/integration.test.ts +787 -0
- package/test/node-container.test.ts +121 -0
- package/test/rate-limit.test.ts +272 -0
- package/test/semantic-search.test.ts +550 -0
- package/test/state.test.ts +121 -0
- package/test-integration/assistant.test.ts +138 -0
- package/test-integration/assistants-manager.test.ts +123 -0
- package/test-integration/claude-code.test.ts +98 -0
- package/test-integration/conversation-history.test.ts +205 -0
- package/test-integration/conversation.test.ts +137 -0
- package/test-integration/elevenlabs.test.ts +55 -0
- package/test-integration/google-services.test.ts +80 -0
- package/test-integration/helpers.ts +89 -0
- package/test-integration/openai-codex.test.ts +93 -0
- package/test-integration/runpod.test.ts +58 -0
- package/test-integration/server-endpoints.test.ts +97 -0
- package/test-integration/skills-library.test.ts +157 -0
- package/test-integration/telegram.test.ts +46 -0
- package/tsconfig.json +58 -0
- package/uv.lock +8 -0
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
# GoogleDocs (features.googleDocs)
|
|
2
|
+
|
|
3
|
+
Google Docs feature for reading documents and converting them to Markdown. Depends on googleAuth for authentication and optionally googleDrive for listing docs. The markdown converter handles headings, text formatting, links, lists, tables, and images.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
container.feature('googleDocs')
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Methods
|
|
12
|
+
|
|
13
|
+
### getDocument
|
|
14
|
+
|
|
15
|
+
Get the raw document structure from the Docs API.
|
|
16
|
+
|
|
17
|
+
**Parameters:**
|
|
18
|
+
|
|
19
|
+
| Name | Type | Required | Description |
|
|
20
|
+
|------|------|----------|-------------|
|
|
21
|
+
| `documentId` | `string` | ✓ | The Google Docs document ID |
|
|
22
|
+
|
|
23
|
+
**Returns:** `Promise<docs_v1.Schema$Document>`
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
### getAsMarkdown
|
|
28
|
+
|
|
29
|
+
Read a Google Doc and convert it to Markdown. Handles headings, bold/italic/strikethrough, links, code fonts, ordered/unordered lists with nesting, tables, images, and section breaks.
|
|
30
|
+
|
|
31
|
+
**Parameters:**
|
|
32
|
+
|
|
33
|
+
| Name | Type | Required | Description |
|
|
34
|
+
|------|------|----------|-------------|
|
|
35
|
+
| `documentId` | `string` | ✓ | The Google Docs document ID |
|
|
36
|
+
|
|
37
|
+
**Returns:** `Promise<string>`
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
### getAsText
|
|
42
|
+
|
|
43
|
+
Read a Google Doc as plain text (strips all formatting).
|
|
44
|
+
|
|
45
|
+
**Parameters:**
|
|
46
|
+
|
|
47
|
+
| Name | Type | Required | Description |
|
|
48
|
+
|------|------|----------|-------------|
|
|
49
|
+
| `documentId` | `string` | ✓ | The Google Docs document ID |
|
|
50
|
+
|
|
51
|
+
**Returns:** `Promise<string>`
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
### saveAsMarkdown
|
|
56
|
+
|
|
57
|
+
Download a Google Doc as Markdown and save to a local file.
|
|
58
|
+
|
|
59
|
+
**Parameters:**
|
|
60
|
+
|
|
61
|
+
| Name | Type | Required | Description |
|
|
62
|
+
|------|------|----------|-------------|
|
|
63
|
+
| `documentId` | `string` | ✓ | The Google Docs document ID |
|
|
64
|
+
| `localPath` | `string` | ✓ | Local file path (resolved relative to container cwd) |
|
|
65
|
+
|
|
66
|
+
**Returns:** `Promise<string>`
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
### listDocs
|
|
71
|
+
|
|
72
|
+
List Google Docs in Drive (filters by Docs MIME type).
|
|
73
|
+
|
|
74
|
+
**Parameters:**
|
|
75
|
+
|
|
76
|
+
| Name | Type | Required | Description |
|
|
77
|
+
|------|------|----------|-------------|
|
|
78
|
+
| `query` | `string` | | Optional additional Drive search query |
|
|
79
|
+
| `options` | `{ pageSize?: number; pageToken?: string }` | | Pagination options |
|
|
80
|
+
|
|
81
|
+
**Returns:** `Promise<DriveFile[]>`
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
### searchDocs
|
|
86
|
+
|
|
87
|
+
Search for Google Docs by name or content.
|
|
88
|
+
|
|
89
|
+
**Parameters:**
|
|
90
|
+
|
|
91
|
+
| Name | Type | Required | Description |
|
|
92
|
+
|------|------|----------|-------------|
|
|
93
|
+
| `term` | `string` | ✓ | Search term |
|
|
94
|
+
|
|
95
|
+
**Returns:** `Promise<DriveFile[]>`
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
## Getters
|
|
100
|
+
|
|
101
|
+
| Property | Type | Description |
|
|
102
|
+
|----------|------|-------------|
|
|
103
|
+
| `auth` | `GoogleAuth` | Access the google-auth feature lazily. |
|
|
104
|
+
| `drive` | `GoogleDrive` | Access the google-drive feature lazily. |
|
|
105
|
+
|
|
106
|
+
## Events (Zod v4 schema)
|
|
107
|
+
|
|
108
|
+
### documentFetched
|
|
109
|
+
|
|
110
|
+
Event emitted by GoogleDocs
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
### error
|
|
115
|
+
|
|
116
|
+
Event emitted by GoogleDocs
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
## State (Zod v4 schema)
|
|
121
|
+
|
|
122
|
+
| Property | Type | Description |
|
|
123
|
+
|----------|------|-------------|
|
|
124
|
+
| `enabled` | `boolean` | Whether this feature is currently enabled |
|
|
125
|
+
| `lastDocId` | `string` | Last document ID accessed |
|
|
126
|
+
| `lastDocTitle` | `string` | Title of the last document accessed |
|
|
127
|
+
| `lastError` | `string` | Last Docs API error message |
|
|
128
|
+
|
|
129
|
+
## Examples
|
|
130
|
+
|
|
131
|
+
**features.googleDocs**
|
|
132
|
+
|
|
133
|
+
```ts
|
|
134
|
+
const docs = container.feature('googleDocs')
|
|
135
|
+
|
|
136
|
+
// Get a doc as markdown
|
|
137
|
+
const markdown = await docs.getAsMarkdown('1abc_document_id')
|
|
138
|
+
|
|
139
|
+
// Save to file
|
|
140
|
+
await docs.saveAsMarkdown('1abc_document_id', './output/doc.md')
|
|
141
|
+
|
|
142
|
+
// List all Google Docs in Drive
|
|
143
|
+
const allDocs = await docs.listDocs()
|
|
144
|
+
|
|
145
|
+
// Get raw document structure
|
|
146
|
+
const rawDoc = await docs.getDocument('1abc_document_id')
|
|
147
|
+
|
|
148
|
+
// Plain text extraction
|
|
149
|
+
const text = await docs.getAsText('1abc_document_id')
|
|
150
|
+
```
|
|
151
|
+
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
# GoogleDrive (features.googleDrive)
|
|
2
|
+
|
|
3
|
+
Google Drive feature for listing, searching, browsing, and downloading files. Depends on the googleAuth feature for authentication. Creates a Drive v3 API client lazily and passes the auth client from googleAuth.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
container.feature('googleDrive', {
|
|
9
|
+
// Default corpus for file queries (default: user)
|
|
10
|
+
defaultCorpora,
|
|
11
|
+
// Default number of results per page (default: 100)
|
|
12
|
+
pageSize,
|
|
13
|
+
})
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Options (Zod v4 schema)
|
|
17
|
+
|
|
18
|
+
| Property | Type | Description |
|
|
19
|
+
|----------|------|-------------|
|
|
20
|
+
| `defaultCorpora` | `string` | Default corpus for file queries (default: user) |
|
|
21
|
+
| `pageSize` | `number` | Default number of results per page (default: 100) |
|
|
22
|
+
|
|
23
|
+
## Methods
|
|
24
|
+
|
|
25
|
+
### listFiles
|
|
26
|
+
|
|
27
|
+
List files in the user's Drive with an optional query filter.
|
|
28
|
+
|
|
29
|
+
**Parameters:**
|
|
30
|
+
|
|
31
|
+
| Name | Type | Required | Description |
|
|
32
|
+
|------|------|----------|-------------|
|
|
33
|
+
| `query` | `string` | | Drive search query (e.g. "name contains 'report'", "mimeType='application/pdf'") |
|
|
34
|
+
| `options` | `ListFilesOptions` | | Pagination and filtering options |
|
|
35
|
+
|
|
36
|
+
`ListFilesOptions` properties:
|
|
37
|
+
|
|
38
|
+
| Property | Type | Description |
|
|
39
|
+
|----------|------|-------------|
|
|
40
|
+
| `pageSize` | `number` | |
|
|
41
|
+
| `pageToken` | `string` | |
|
|
42
|
+
| `orderBy` | `string` | |
|
|
43
|
+
| `fields` | `string` | |
|
|
44
|
+
| `corpora` | `'user' | 'drive' | 'allDrives'` | |
|
|
45
|
+
|
|
46
|
+
**Returns:** `Promise<DriveFileList>`
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
### listFolder
|
|
51
|
+
|
|
52
|
+
List files within a specific folder.
|
|
53
|
+
|
|
54
|
+
**Parameters:**
|
|
55
|
+
|
|
56
|
+
| Name | Type | Required | Description |
|
|
57
|
+
|------|------|----------|-------------|
|
|
58
|
+
| `folderId` | `string` | ✓ | The Drive folder ID |
|
|
59
|
+
| `options` | `ListFilesOptions` | | Pagination and filtering options |
|
|
60
|
+
|
|
61
|
+
`ListFilesOptions` properties:
|
|
62
|
+
|
|
63
|
+
| Property | Type | Description |
|
|
64
|
+
|----------|------|-------------|
|
|
65
|
+
| `pageSize` | `number` | |
|
|
66
|
+
| `pageToken` | `string` | |
|
|
67
|
+
| `orderBy` | `string` | |
|
|
68
|
+
| `fields` | `string` | |
|
|
69
|
+
| `corpora` | `'user' | 'drive' | 'allDrives'` | |
|
|
70
|
+
|
|
71
|
+
**Returns:** `Promise<DriveFileList>`
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
### browse
|
|
76
|
+
|
|
77
|
+
Browse a folder's contents, separating files from subfolders.
|
|
78
|
+
|
|
79
|
+
**Parameters:**
|
|
80
|
+
|
|
81
|
+
| Name | Type | Required | Description |
|
|
82
|
+
|------|------|----------|-------------|
|
|
83
|
+
| `folderId` | `string` | | Folder ID to browse (defaults to 'root') |
|
|
84
|
+
|
|
85
|
+
**Returns:** `Promise<DriveBrowseResult>`
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
### search
|
|
90
|
+
|
|
91
|
+
Search files by name, content, or MIME type.
|
|
92
|
+
|
|
93
|
+
**Parameters:**
|
|
94
|
+
|
|
95
|
+
| Name | Type | Required | Description |
|
|
96
|
+
|------|------|----------|-------------|
|
|
97
|
+
| `term` | `string` | ✓ | Search term to look for in file names and content |
|
|
98
|
+
| `options` | `SearchOptions` | | Additional search options like mimeType filter or folder restriction |
|
|
99
|
+
|
|
100
|
+
**Returns:** `Promise<DriveFileList>`
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
### getFile
|
|
105
|
+
|
|
106
|
+
Get file metadata by file ID.
|
|
107
|
+
|
|
108
|
+
**Parameters:**
|
|
109
|
+
|
|
110
|
+
| Name | Type | Required | Description |
|
|
111
|
+
|------|------|----------|-------------|
|
|
112
|
+
| `fileId` | `string` | ✓ | The Drive file ID |
|
|
113
|
+
| `fields` | `string` | | Specific fields to request (defaults to common fields) |
|
|
114
|
+
|
|
115
|
+
**Returns:** `Promise<DriveFile>`
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
### download
|
|
120
|
+
|
|
121
|
+
Download a file's content as a Buffer. Uses alt=media for binary download of non-Google files.
|
|
122
|
+
|
|
123
|
+
**Parameters:**
|
|
124
|
+
|
|
125
|
+
| Name | Type | Required | Description |
|
|
126
|
+
|------|------|----------|-------------|
|
|
127
|
+
| `fileId` | `string` | ✓ | The Drive file ID |
|
|
128
|
+
|
|
129
|
+
**Returns:** `Promise<Buffer>`
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
### downloadTo
|
|
134
|
+
|
|
135
|
+
Download a file and save it to a local path.
|
|
136
|
+
|
|
137
|
+
**Parameters:**
|
|
138
|
+
|
|
139
|
+
| Name | Type | Required | Description |
|
|
140
|
+
|------|------|----------|-------------|
|
|
141
|
+
| `fileId` | `string` | ✓ | The Drive file ID |
|
|
142
|
+
| `localPath` | `string` | ✓ | Local file path (resolved relative to container cwd) |
|
|
143
|
+
|
|
144
|
+
**Returns:** `Promise<string>`
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
### exportFile
|
|
149
|
+
|
|
150
|
+
Export a Google Workspace file (Docs, Sheets, Slides) to a given MIME type. Uses the Files.export endpoint.
|
|
151
|
+
|
|
152
|
+
**Parameters:**
|
|
153
|
+
|
|
154
|
+
| Name | Type | Required | Description |
|
|
155
|
+
|------|------|----------|-------------|
|
|
156
|
+
| `fileId` | `string` | ✓ | The Drive file ID of a Google Workspace document |
|
|
157
|
+
| `mimeType` | `string` | ✓ | Target MIME type (e.g. 'text/plain', 'application/pdf', 'text/csv') |
|
|
158
|
+
|
|
159
|
+
**Returns:** `Promise<Buffer>`
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
### listDrives
|
|
164
|
+
|
|
165
|
+
List all shared drives the user has access to.
|
|
166
|
+
|
|
167
|
+
**Returns:** `Promise<SharedDrive[]>`
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
## Getters
|
|
172
|
+
|
|
173
|
+
| Property | Type | Description |
|
|
174
|
+
|----------|------|-------------|
|
|
175
|
+
| `auth` | `GoogleAuth` | Access the google-auth feature lazily. |
|
|
176
|
+
|
|
177
|
+
## Events (Zod v4 schema)
|
|
178
|
+
|
|
179
|
+
### filesFetched
|
|
180
|
+
|
|
181
|
+
Event emitted by GoogleDrive
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
### error
|
|
186
|
+
|
|
187
|
+
Event emitted by GoogleDrive
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
### fileDownloaded
|
|
192
|
+
|
|
193
|
+
Event emitted by GoogleDrive
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
## State (Zod v4 schema)
|
|
198
|
+
|
|
199
|
+
| Property | Type | Description |
|
|
200
|
+
|----------|------|-------------|
|
|
201
|
+
| `enabled` | `boolean` | Whether this feature is currently enabled |
|
|
202
|
+
| `lastQuery` | `string` | Last search query or folder ID browsed |
|
|
203
|
+
| `lastResultCount` | `number` | Number of results from last list/search operation |
|
|
204
|
+
| `lastError` | `string` | Last Drive API error message |
|
|
205
|
+
|
|
206
|
+
## Examples
|
|
207
|
+
|
|
208
|
+
**features.googleDrive**
|
|
209
|
+
|
|
210
|
+
```ts
|
|
211
|
+
const drive = container.feature('googleDrive')
|
|
212
|
+
|
|
213
|
+
// List recent files
|
|
214
|
+
const { files } = await drive.listFiles()
|
|
215
|
+
|
|
216
|
+
// Search for documents
|
|
217
|
+
const { files: docs } = await drive.search('quarterly report', { mimeType: 'application/pdf' })
|
|
218
|
+
|
|
219
|
+
// Browse a folder
|
|
220
|
+
const contents = await drive.browse('folder-id-here')
|
|
221
|
+
|
|
222
|
+
// Download a file to disk
|
|
223
|
+
await drive.downloadTo('file-id', './downloads/report.pdf')
|
|
224
|
+
```
|
|
225
|
+
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
# GoogleSheets (features.googleSheets)
|
|
2
|
+
|
|
3
|
+
Google Sheets feature for reading spreadsheet data as JSON, CSV, or raw arrays. Depends on the googleAuth feature for authentication. Creates a Sheets v4 API client lazily and provides convenient methods for reading tabular data.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
container.feature('googleSheets', {
|
|
9
|
+
// Default spreadsheet ID for operations
|
|
10
|
+
defaultSpreadsheetId,
|
|
11
|
+
})
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Options (Zod v4 schema)
|
|
15
|
+
|
|
16
|
+
| Property | Type | Description |
|
|
17
|
+
|----------|------|-------------|
|
|
18
|
+
| `defaultSpreadsheetId` | `string` | Default spreadsheet ID for operations |
|
|
19
|
+
|
|
20
|
+
## Methods
|
|
21
|
+
|
|
22
|
+
### getSpreadsheet
|
|
23
|
+
|
|
24
|
+
Get spreadsheet metadata including title, locale, and sheet list.
|
|
25
|
+
|
|
26
|
+
**Parameters:**
|
|
27
|
+
|
|
28
|
+
| Name | Type | Required | Description |
|
|
29
|
+
|------|------|----------|-------------|
|
|
30
|
+
| `spreadsheetId` | `string` | | The spreadsheet ID (defaults to options.defaultSpreadsheetId) |
|
|
31
|
+
|
|
32
|
+
**Returns:** `Promise<SpreadsheetMeta>`
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
### listSheets
|
|
37
|
+
|
|
38
|
+
List all sheets (tabs) in a spreadsheet.
|
|
39
|
+
|
|
40
|
+
**Parameters:**
|
|
41
|
+
|
|
42
|
+
| Name | Type | Required | Description |
|
|
43
|
+
|------|------|----------|-------------|
|
|
44
|
+
| `spreadsheetId` | `string` | | The spreadsheet ID |
|
|
45
|
+
|
|
46
|
+
**Returns:** `Promise<SheetInfo[]>`
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
### getRange
|
|
51
|
+
|
|
52
|
+
Read a range of values from a sheet.
|
|
53
|
+
|
|
54
|
+
**Parameters:**
|
|
55
|
+
|
|
56
|
+
| Name | Type | Required | Description |
|
|
57
|
+
|------|------|----------|-------------|
|
|
58
|
+
| `range` | `string` | ✓ | A1 notation range (e.g. "Sheet1!A1:D10" or "Sheet1" for entire sheet) |
|
|
59
|
+
| `spreadsheetId` | `string` | | The spreadsheet ID |
|
|
60
|
+
|
|
61
|
+
**Returns:** `Promise<string[][]>`
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
### getAsJson
|
|
66
|
+
|
|
67
|
+
Read a sheet as an array of JSON objects. The first row is treated as headers; subsequent rows become objects keyed by those headers.
|
|
68
|
+
|
|
69
|
+
**Parameters:**
|
|
70
|
+
|
|
71
|
+
| Name | Type | Required | Description |
|
|
72
|
+
|------|------|----------|-------------|
|
|
73
|
+
| `sheetName` | `string` | | Name of the sheet tab (if omitted, reads the first sheet) |
|
|
74
|
+
| `spreadsheetId` | `string` | | The spreadsheet ID |
|
|
75
|
+
|
|
76
|
+
**Returns:** `Promise<T[]>`
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
### getAsCsv
|
|
81
|
+
|
|
82
|
+
Read a sheet and return it as a CSV string.
|
|
83
|
+
|
|
84
|
+
**Parameters:**
|
|
85
|
+
|
|
86
|
+
| Name | Type | Required | Description |
|
|
87
|
+
|------|------|----------|-------------|
|
|
88
|
+
| `sheetName` | `string` | | Name of the sheet tab (if omitted, reads the first sheet) |
|
|
89
|
+
| `spreadsheetId` | `string` | | The spreadsheet ID |
|
|
90
|
+
|
|
91
|
+
**Returns:** `Promise<string>`
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
### saveAsJson
|
|
96
|
+
|
|
97
|
+
Download sheet data as JSON and save to a local file.
|
|
98
|
+
|
|
99
|
+
**Parameters:**
|
|
100
|
+
|
|
101
|
+
| Name | Type | Required | Description |
|
|
102
|
+
|------|------|----------|-------------|
|
|
103
|
+
| `localPath` | `string` | ✓ | Local file path (resolved relative to container cwd) |
|
|
104
|
+
| `sheetName` | `string` | | Sheet tab name (defaults to first sheet) |
|
|
105
|
+
| `spreadsheetId` | `string` | | The spreadsheet ID |
|
|
106
|
+
|
|
107
|
+
**Returns:** `Promise<string>`
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
### saveAsCsv
|
|
112
|
+
|
|
113
|
+
Download sheet data as CSV and save to a local file.
|
|
114
|
+
|
|
115
|
+
**Parameters:**
|
|
116
|
+
|
|
117
|
+
| Name | Type | Required | Description |
|
|
118
|
+
|------|------|----------|-------------|
|
|
119
|
+
| `localPath` | `string` | ✓ | Local file path (resolved relative to container cwd) |
|
|
120
|
+
| `sheetName` | `string` | | Sheet tab name (defaults to first sheet) |
|
|
121
|
+
| `spreadsheetId` | `string` | | The spreadsheet ID |
|
|
122
|
+
|
|
123
|
+
**Returns:** `Promise<string>`
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
## Getters
|
|
128
|
+
|
|
129
|
+
| Property | Type | Description |
|
|
130
|
+
|----------|------|-------------|
|
|
131
|
+
| `auth` | `GoogleAuth` | Access the google-auth feature lazily. |
|
|
132
|
+
|
|
133
|
+
## Events (Zod v4 schema)
|
|
134
|
+
|
|
135
|
+
### error
|
|
136
|
+
|
|
137
|
+
Event emitted by GoogleSheets
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
### dataFetched
|
|
142
|
+
|
|
143
|
+
Event emitted by GoogleSheets
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
## State (Zod v4 schema)
|
|
148
|
+
|
|
149
|
+
| Property | Type | Description |
|
|
150
|
+
|----------|------|-------------|
|
|
151
|
+
| `enabled` | `boolean` | Whether this feature is currently enabled |
|
|
152
|
+
| `lastSpreadsheetId` | `string` | Last spreadsheet ID accessed |
|
|
153
|
+
| `lastSheetName` | `string` | Last sheet/tab name accessed |
|
|
154
|
+
| `lastRowCount` | `number` | Number of rows returned in last read |
|
|
155
|
+
| `lastError` | `string` | Last Sheets API error message |
|
|
156
|
+
|
|
157
|
+
## Examples
|
|
158
|
+
|
|
159
|
+
**features.googleSheets**
|
|
160
|
+
|
|
161
|
+
```ts
|
|
162
|
+
const sheets = container.feature('googleSheets', {
|
|
163
|
+
defaultSpreadsheetId: '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms'
|
|
164
|
+
})
|
|
165
|
+
|
|
166
|
+
// Read as JSON objects (first row = headers)
|
|
167
|
+
const data = await sheets.getAsJson('Sheet1')
|
|
168
|
+
// => [{ name: 'Alice', age: '30' }, { name: 'Bob', age: '25' }]
|
|
169
|
+
|
|
170
|
+
// Read as CSV string
|
|
171
|
+
const csv = await sheets.getAsCsv('Revenue')
|
|
172
|
+
|
|
173
|
+
// Read a specific range
|
|
174
|
+
const values = await sheets.getRange('Sheet1!A1:D10')
|
|
175
|
+
|
|
176
|
+
// Save to file
|
|
177
|
+
await sheets.saveAsJson('./data/export.json')
|
|
178
|
+
```
|
|
179
|
+
|