@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.
Files changed (358) hide show
  1. package/CLAUDE.md +71 -0
  2. package/README.md +78 -0
  3. package/bun.lock +2928 -0
  4. package/bunfig.toml +3 -0
  5. package/commands/audit-docs.ts +740 -0
  6. package/commands/build-scaffolds.ts +154 -0
  7. package/commands/generate-api-docs.ts +114 -0
  8. package/commands/update-introspection.ts +67 -0
  9. package/docs/CLI.md +335 -0
  10. package/docs/README.md +88 -0
  11. package/docs/TABLE-OF-CONTENTS.md +157 -0
  12. package/docs/apis/clients/elevenlabs.md +84 -0
  13. package/docs/apis/clients/graph.md +56 -0
  14. package/docs/apis/clients/openai.md +69 -0
  15. package/docs/apis/clients/rest.md +41 -0
  16. package/docs/apis/clients/websocket.md +107 -0
  17. package/docs/apis/features/agi/assistant.md +471 -0
  18. package/docs/apis/features/agi/assistants-manager.md +154 -0
  19. package/docs/apis/features/agi/claude-code.md +602 -0
  20. package/docs/apis/features/agi/conversation-history.md +352 -0
  21. package/docs/apis/features/agi/conversation.md +333 -0
  22. package/docs/apis/features/agi/docs-reader.md +121 -0
  23. package/docs/apis/features/agi/openai-codex.md +318 -0
  24. package/docs/apis/features/agi/openapi.md +138 -0
  25. package/docs/apis/features/agi/semantic-search.md +387 -0
  26. package/docs/apis/features/agi/skills-library.md +216 -0
  27. package/docs/apis/features/node/container-link.md +133 -0
  28. package/docs/apis/features/node/content-db.md +313 -0
  29. package/docs/apis/features/node/disk-cache.md +379 -0
  30. package/docs/apis/features/node/dns.md +651 -0
  31. package/docs/apis/features/node/docker.md +705 -0
  32. package/docs/apis/features/node/downloader.md +81 -0
  33. package/docs/apis/features/node/esbuild.md +59 -0
  34. package/docs/apis/features/node/file-manager.md +182 -0
  35. package/docs/apis/features/node/fs.md +581 -0
  36. package/docs/apis/features/node/git.md +330 -0
  37. package/docs/apis/features/node/google-auth.md +174 -0
  38. package/docs/apis/features/node/google-calendar.md +187 -0
  39. package/docs/apis/features/node/google-docs.md +151 -0
  40. package/docs/apis/features/node/google-drive.md +225 -0
  41. package/docs/apis/features/node/google-sheets.md +179 -0
  42. package/docs/apis/features/node/grep.md +290 -0
  43. package/docs/apis/features/node/helpers.md +135 -0
  44. package/docs/apis/features/node/ink.md +334 -0
  45. package/docs/apis/features/node/ipc-socket.md +260 -0
  46. package/docs/apis/features/node/json-tree.md +86 -0
  47. package/docs/apis/features/node/launcher-app-command-listener.md +145 -0
  48. package/docs/apis/features/node/networking.md +281 -0
  49. package/docs/apis/features/node/nlp.md +133 -0
  50. package/docs/apis/features/node/opener.md +97 -0
  51. package/docs/apis/features/node/os.md +118 -0
  52. package/docs/apis/features/node/package-finder.md +402 -0
  53. package/docs/apis/features/node/postgres.md +212 -0
  54. package/docs/apis/features/node/proc.md +430 -0
  55. package/docs/apis/features/node/process-manager.md +210 -0
  56. package/docs/apis/features/node/python.md +278 -0
  57. package/docs/apis/features/node/repl.md +88 -0
  58. package/docs/apis/features/node/runpod.md +673 -0
  59. package/docs/apis/features/node/secure-shell.md +169 -0
  60. package/docs/apis/features/node/semantic-search.md +401 -0
  61. package/docs/apis/features/node/sqlite.md +211 -0
  62. package/docs/apis/features/node/telegram.md +254 -0
  63. package/docs/apis/features/node/tts.md +118 -0
  64. package/docs/apis/features/node/ui.md +703 -0
  65. package/docs/apis/features/node/vault.md +64 -0
  66. package/docs/apis/features/node/vm.md +84 -0
  67. package/docs/apis/features/node/window-manager.md +337 -0
  68. package/docs/apis/features/node/yaml-tree.md +85 -0
  69. package/docs/apis/features/node/yaml.md +176 -0
  70. package/docs/apis/features/web/asset-loader.md +47 -0
  71. package/docs/apis/features/web/container-link.md +133 -0
  72. package/docs/apis/features/web/esbuild.md +59 -0
  73. package/docs/apis/features/web/helpers.md +135 -0
  74. package/docs/apis/features/web/network.md +30 -0
  75. package/docs/apis/features/web/speech.md +55 -0
  76. package/docs/apis/features/web/vault.md +64 -0
  77. package/docs/apis/features/web/vm.md +84 -0
  78. package/docs/apis/features/web/voice.md +67 -0
  79. package/docs/apis/servers/express.md +127 -0
  80. package/docs/apis/servers/mcp.md +213 -0
  81. package/docs/apis/servers/websocket.md +99 -0
  82. package/docs/documentation-audit.md +134 -0
  83. package/docs/examples/content-db.md +77 -0
  84. package/docs/examples/disk-cache.md +83 -0
  85. package/docs/examples/docker.md +101 -0
  86. package/docs/examples/downloader.md +70 -0
  87. package/docs/examples/esbuild.md +80 -0
  88. package/docs/examples/file-manager.md +82 -0
  89. package/docs/examples/fs.md +83 -0
  90. package/docs/examples/git.md +85 -0
  91. package/docs/examples/google-auth.md +88 -0
  92. package/docs/examples/google-calendar.md +94 -0
  93. package/docs/examples/google-docs.md +82 -0
  94. package/docs/examples/google-drive.md +96 -0
  95. package/docs/examples/google-sheets.md +95 -0
  96. package/docs/examples/grep.md +85 -0
  97. package/docs/examples/ink-blocks.md +75 -0
  98. package/docs/examples/ink-renderer.md +41 -0
  99. package/docs/examples/ink.md +103 -0
  100. package/docs/examples/ipc-socket.md +103 -0
  101. package/docs/examples/json-tree.md +91 -0
  102. package/docs/examples/launcher-app-command-listener.md +120 -0
  103. package/docs/examples/networking.md +58 -0
  104. package/docs/examples/nlp.md +91 -0
  105. package/docs/examples/opener.md +78 -0
  106. package/docs/examples/os.md +72 -0
  107. package/docs/examples/package-finder.md +89 -0
  108. package/docs/examples/port-exposer.md +89 -0
  109. package/docs/examples/postgres.md +91 -0
  110. package/docs/examples/proc.md +81 -0
  111. package/docs/examples/process-manager.md +79 -0
  112. package/docs/examples/python.md +91 -0
  113. package/docs/examples/repl.md +93 -0
  114. package/docs/examples/runpod.md +119 -0
  115. package/docs/examples/secure-shell.md +92 -0
  116. package/docs/examples/sqlite.md +86 -0
  117. package/docs/examples/telegram.md +77 -0
  118. package/docs/examples/tts.md +86 -0
  119. package/docs/examples/ui.md +80 -0
  120. package/docs/examples/vault.md +70 -0
  121. package/docs/examples/vm.md +86 -0
  122. package/docs/examples/window-manager.md +125 -0
  123. package/docs/examples/yaml-tree.md +93 -0
  124. package/docs/examples/yaml.md +104 -0
  125. package/docs/ideas/class-registration-refactor-possibilities.md +197 -0
  126. package/docs/ideas/container-use-api.md +9 -0
  127. package/docs/ideas/easy-auth-for-express-servers-and-luca-serve.md +0 -0
  128. package/docs/ideas/feature-stacks.md +22 -0
  129. package/docs/ideas/luca-cli-self-sufficiency-demo.md +23 -0
  130. package/docs/ideas/mcp-design.md +9 -0
  131. package/docs/ideas/web-container-debugging-feature.md +13 -0
  132. package/docs/introspection-audit.md +49 -0
  133. package/docs/introspection.md +154 -0
  134. package/docs/mcp/readme.md +162 -0
  135. package/docs/models.ts +38 -0
  136. package/docs/philosophy.md +85 -0
  137. package/docs/principles.md +7 -0
  138. package/docs/prompts/audit-codebase-for-failures-to-use-the-container.md +34 -0
  139. package/docs/prompts/mcp-test-easy-command.md +27 -0
  140. package/docs/reports/assistant-bugs.md +38 -0
  141. package/docs/reports/attach-pattern-usage.md +18 -0
  142. package/docs/reports/code-audit-results.md +391 -0
  143. package/docs/reports/introspection-audit-tasks.md +378 -0
  144. package/docs/reports/luca-mcp-improvements.md +128 -0
  145. package/docs/scaffolds/client.md +140 -0
  146. package/docs/scaffolds/command.md +106 -0
  147. package/docs/scaffolds/endpoint.md +176 -0
  148. package/docs/scaffolds/feature.md +148 -0
  149. package/docs/scaffolds/server.md +187 -0
  150. package/docs/tasks/web-container-helper-discovery.md +71 -0
  151. package/docs/todos.md +1 -0
  152. package/docs/tutorials/01-getting-started.md +106 -0
  153. package/docs/tutorials/02-container.md +210 -0
  154. package/docs/tutorials/03-scripts.md +194 -0
  155. package/docs/tutorials/04-features-overview.md +196 -0
  156. package/docs/tutorials/05-state-and-events.md +171 -0
  157. package/docs/tutorials/06-servers.md +157 -0
  158. package/docs/tutorials/07-endpoints.md +198 -0
  159. package/docs/tutorials/08-commands.md +171 -0
  160. package/docs/tutorials/09-clients.md +162 -0
  161. package/docs/tutorials/10-creating-features.md +198 -0
  162. package/docs/tutorials/11-contentbase.md +191 -0
  163. package/docs/tutorials/12-assistants.md +215 -0
  164. package/docs/tutorials/13-introspection.md +147 -0
  165. package/docs/tutorials/14-type-system.md +174 -0
  166. package/docs/tutorials/15-project-patterns.md +222 -0
  167. package/docs/tutorials/16-google-features.md +534 -0
  168. package/docs/tutorials/17-tui-blocks.md +530 -0
  169. package/docs/tutorials/18-semantic-search.md +334 -0
  170. package/index.ts +1 -0
  171. package/luca.console.ts +9 -0
  172. package/main.py +6 -0
  173. package/package.json +154 -0
  174. package/pyproject.toml +7 -0
  175. package/scripts/animations/chrome-glitch.ts +55 -0
  176. package/scripts/animations/index.ts +16 -0
  177. package/scripts/animations/neon-pulse.ts +64 -0
  178. package/scripts/animations/types.ts +6 -0
  179. package/scripts/build-web.ts +28 -0
  180. package/scripts/examples/ask-luca-expert.ts +42 -0
  181. package/scripts/examples/assistant-questions.ts +12 -0
  182. package/scripts/examples/excalidraw-expert.ts +75 -0
  183. package/scripts/examples/expert-chat.ts +0 -0
  184. package/scripts/examples/file-manager.ts +14 -0
  185. package/scripts/examples/ideas.ts +12 -0
  186. package/scripts/examples/interactive-chat.ts +20 -0
  187. package/scripts/examples/openai-tool-calls.ts +113 -0
  188. package/scripts/examples/opening-a-web-browser.ts +5 -0
  189. package/scripts/examples/telegram-bot.ts +79 -0
  190. package/scripts/examples/telegram-ink-ui.ts +302 -0
  191. package/scripts/examples/using-assistant-with-mcp.ts +560 -0
  192. package/scripts/examples/using-claude-code.ts +10 -0
  193. package/scripts/examples/using-contentdb.ts +35 -0
  194. package/scripts/examples/using-conversations.ts +35 -0
  195. package/scripts/examples/using-disk-cache.ts +10 -0
  196. package/scripts/examples/using-docker-shell.ts +75 -0
  197. package/scripts/examples/using-elevenlabs.ts +25 -0
  198. package/scripts/examples/using-google-calendar.ts +57 -0
  199. package/scripts/examples/using-google-docs.ts +74 -0
  200. package/scripts/examples/using-google-drive.ts +74 -0
  201. package/scripts/examples/using-google-sheets.ts +89 -0
  202. package/scripts/examples/using-nlp.ts +55 -0
  203. package/scripts/examples/using-ollama.ts +10 -0
  204. package/scripts/examples/using-openai-codex.ts +23 -0
  205. package/scripts/examples/using-postgres.ts +55 -0
  206. package/scripts/examples/using-runpod.ts +32 -0
  207. package/scripts/examples/using-tts.ts +40 -0
  208. package/scripts/examples/vm-loading-esm-modules.ts +16 -0
  209. package/scripts/scaffold.ts +391 -0
  210. package/scripts/scratch.ts +15 -0
  211. package/scripts/test-command-listener.ts +123 -0
  212. package/scripts/test-window-manager-lifecycle.ts +86 -0
  213. package/scripts/test-window-manager.ts +43 -0
  214. package/scripts/update-introspection-data.ts +58 -0
  215. package/src/agi/README.md +14 -0
  216. package/src/agi/container.server.ts +114 -0
  217. package/src/agi/endpoints/ask.ts +60 -0
  218. package/src/agi/endpoints/conversations/[id].ts +45 -0
  219. package/src/agi/endpoints/conversations.ts +31 -0
  220. package/src/agi/endpoints/experts.ts +37 -0
  221. package/src/agi/features/assistant.ts +767 -0
  222. package/src/agi/features/assistants-manager.ts +260 -0
  223. package/src/agi/features/claude-code.ts +1111 -0
  224. package/src/agi/features/conversation-history.ts +497 -0
  225. package/src/agi/features/conversation.ts +799 -0
  226. package/src/agi/features/openai-codex.ts +631 -0
  227. package/src/agi/features/openapi.ts +438 -0
  228. package/src/agi/features/skills-library.ts +425 -0
  229. package/src/agi/index.ts +6 -0
  230. package/src/agi/lib/token-counter.ts +122 -0
  231. package/src/browser.ts +25 -0
  232. package/src/bus.ts +100 -0
  233. package/src/cli/cli.ts +70 -0
  234. package/src/client.ts +461 -0
  235. package/src/clients/civitai/index.ts +541 -0
  236. package/src/clients/client-template.ts +41 -0
  237. package/src/clients/comfyui/index.ts +597 -0
  238. package/src/clients/elevenlabs/index.ts +291 -0
  239. package/src/clients/openai/index.ts +451 -0
  240. package/src/clients/supabase/index.ts +366 -0
  241. package/src/command.ts +164 -0
  242. package/src/commands/chat.ts +182 -0
  243. package/src/commands/console.ts +192 -0
  244. package/src/commands/describe.ts +433 -0
  245. package/src/commands/eval.ts +116 -0
  246. package/src/commands/help.ts +214 -0
  247. package/src/commands/index.ts +14 -0
  248. package/src/commands/mcp.ts +64 -0
  249. package/src/commands/prompt.ts +807 -0
  250. package/src/commands/run.ts +257 -0
  251. package/src/commands/sandbox-mcp.ts +439 -0
  252. package/src/commands/scaffold.ts +79 -0
  253. package/src/commands/serve.ts +172 -0
  254. package/src/container.ts +781 -0
  255. package/src/endpoint.ts +340 -0
  256. package/src/feature.ts +75 -0
  257. package/src/hash-object.ts +97 -0
  258. package/src/helper.ts +543 -0
  259. package/src/introspection/generated.agi.ts +23388 -0
  260. package/src/introspection/generated.node.ts +18899 -0
  261. package/src/introspection/generated.web.ts +2021 -0
  262. package/src/introspection/index.ts +256 -0
  263. package/src/introspection/scan.ts +912 -0
  264. package/src/node/container.ts +354 -0
  265. package/src/node/feature.ts +13 -0
  266. package/src/node/features/container-link.ts +558 -0
  267. package/src/node/features/content-db.ts +475 -0
  268. package/src/node/features/disk-cache.ts +382 -0
  269. package/src/node/features/dns.ts +655 -0
  270. package/src/node/features/docker.ts +912 -0
  271. package/src/node/features/downloader.ts +92 -0
  272. package/src/node/features/esbuild.ts +68 -0
  273. package/src/node/features/file-manager.ts +357 -0
  274. package/src/node/features/fs.ts +534 -0
  275. package/src/node/features/git.ts +492 -0
  276. package/src/node/features/google-auth.ts +502 -0
  277. package/src/node/features/google-calendar.ts +300 -0
  278. package/src/node/features/google-docs.ts +404 -0
  279. package/src/node/features/google-drive.ts +339 -0
  280. package/src/node/features/google-sheets.ts +279 -0
  281. package/src/node/features/grep.ts +406 -0
  282. package/src/node/features/helpers.ts +374 -0
  283. package/src/node/features/ink.ts +490 -0
  284. package/src/node/features/ipc-socket.ts +459 -0
  285. package/src/node/features/json-tree.ts +188 -0
  286. package/src/node/features/launcher-app-command-listener.ts +388 -0
  287. package/src/node/features/networking.ts +925 -0
  288. package/src/node/features/nlp.ts +211 -0
  289. package/src/node/features/opener.ts +166 -0
  290. package/src/node/features/os.ts +157 -0
  291. package/src/node/features/package-finder.ts +539 -0
  292. package/src/node/features/port-exposer.ts +342 -0
  293. package/src/node/features/postgres.ts +273 -0
  294. package/src/node/features/proc.ts +502 -0
  295. package/src/node/features/process-manager.ts +542 -0
  296. package/src/node/features/python.ts +444 -0
  297. package/src/node/features/repl.ts +194 -0
  298. package/src/node/features/runpod.ts +802 -0
  299. package/src/node/features/secure-shell.ts +248 -0
  300. package/src/node/features/semantic-search.ts +924 -0
  301. package/src/node/features/sqlite.ts +289 -0
  302. package/src/node/features/telegram.ts +342 -0
  303. package/src/node/features/tts.ts +184 -0
  304. package/src/node/features/ui.ts +857 -0
  305. package/src/node/features/vault.ts +164 -0
  306. package/src/node/features/vm.ts +312 -0
  307. package/src/node/features/window-manager.ts +804 -0
  308. package/src/node/features/yaml-tree.ts +149 -0
  309. package/src/node/features/yaml.ts +132 -0
  310. package/src/node.ts +70 -0
  311. package/src/react/index.ts +175 -0
  312. package/src/registry.ts +199 -0
  313. package/src/scaffolds/generated.ts +1613 -0
  314. package/src/scaffolds/template.ts +37 -0
  315. package/src/schemas/base.ts +255 -0
  316. package/src/server.ts +135 -0
  317. package/src/servers/express.ts +209 -0
  318. package/src/servers/mcp.ts +805 -0
  319. package/src/servers/socket.ts +120 -0
  320. package/src/state.ts +101 -0
  321. package/src/web/clients/socket.ts +82 -0
  322. package/src/web/container.ts +74 -0
  323. package/src/web/extension.ts +30 -0
  324. package/src/web/feature.ts +12 -0
  325. package/src/web/features/asset-loader.ts +64 -0
  326. package/src/web/features/container-link.ts +385 -0
  327. package/src/web/features/esbuild.ts +79 -0
  328. package/src/web/features/helpers.ts +267 -0
  329. package/src/web/features/network.ts +61 -0
  330. package/src/web/features/speech.ts +87 -0
  331. package/src/web/features/vault.ts +189 -0
  332. package/src/web/features/vm.ts +78 -0
  333. package/src/web/features/voice-recognition.ts +129 -0
  334. package/src/web/shims/isomorphic-vm.ts +149 -0
  335. package/test/bus.test.ts +134 -0
  336. package/test/clients-servers.test.ts +216 -0
  337. package/test/container-link.test.ts +274 -0
  338. package/test/features.test.ts +160 -0
  339. package/test/integration.test.ts +787 -0
  340. package/test/node-container.test.ts +121 -0
  341. package/test/rate-limit.test.ts +272 -0
  342. package/test/semantic-search.test.ts +550 -0
  343. package/test/state.test.ts +121 -0
  344. package/test-integration/assistant.test.ts +138 -0
  345. package/test-integration/assistants-manager.test.ts +123 -0
  346. package/test-integration/claude-code.test.ts +98 -0
  347. package/test-integration/conversation-history.test.ts +205 -0
  348. package/test-integration/conversation.test.ts +137 -0
  349. package/test-integration/elevenlabs.test.ts +55 -0
  350. package/test-integration/google-services.test.ts +80 -0
  351. package/test-integration/helpers.ts +89 -0
  352. package/test-integration/openai-codex.test.ts +93 -0
  353. package/test-integration/runpod.test.ts +58 -0
  354. package/test-integration/server-endpoints.test.ts +97 -0
  355. package/test-integration/skills-library.test.ts +157 -0
  356. package/test-integration/telegram.test.ts +46 -0
  357. package/tsconfig.json +58 -0
  358. 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
+