@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,64 @@
1
+ # WebVault (features.vault)
2
+
3
+ WebVault helper
4
+
5
+ ## Usage
6
+
7
+ ```ts
8
+ container.feature('vault')
9
+ ```
10
+
11
+ ## Methods
12
+
13
+ ### secret
14
+
15
+ **Parameters:**
16
+
17
+ | Name | Type | Required | Description |
18
+ |------|------|----------|-------------|
19
+ | `{ refresh = false, set = true }` | `any` | | Parameter { refresh = false, set = true } |
20
+
21
+ **Returns:** `Promise<ArrayBuffer>`
22
+
23
+
24
+
25
+ ### decrypt
26
+
27
+ **Parameters:**
28
+
29
+ | Name | Type | Required | Description |
30
+ |------|------|----------|-------------|
31
+ | `payload` | `string` | ✓ | Parameter payload |
32
+
33
+ **Returns:** `void`
34
+
35
+
36
+
37
+ ### encrypt
38
+
39
+ **Parameters:**
40
+
41
+ | Name | Type | Required | Description |
42
+ |------|------|----------|-------------|
43
+ | `payload` | `string` | ✓ | Parameter payload |
44
+
45
+ **Returns:** `void`
46
+
47
+
48
+
49
+ ## Examples
50
+
51
+ **features.vault**
52
+
53
+ ```ts
54
+ const vault = container.feature('vault')
55
+
56
+ // Encrypt sensitive data
57
+ const encrypted = vault.encrypt('sensitive information')
58
+ console.log(encrypted) // Base64 encoded encrypted data
59
+
60
+ // Decrypt the data
61
+ const decrypted = vault.decrypt(encrypted)
62
+ console.log(decrypted) // 'sensitive information'
63
+ ```
64
+
@@ -0,0 +1,84 @@
1
+ # VM (features.vm)
2
+
3
+ The VM features providers a virtual machine for executing JavaScript code in a sandboxed environment. The Vm feature automatically injects the container.context object into the global scope, so these things can be referenced in the code and the code can use anything provided by the container.
4
+
5
+ ## Usage
6
+
7
+ ```ts
8
+ container.feature('vm', {
9
+ // Default context object to inject into the VM execution environment
10
+ context,
11
+ })
12
+ ```
13
+
14
+ ## Options (Zod v4 schema)
15
+
16
+ | Property | Type | Description |
17
+ |----------|------|-------------|
18
+ | `context` | `any` | Default context object to inject into the VM execution environment |
19
+
20
+ ## Methods
21
+
22
+ ### createScript
23
+
24
+ **Parameters:**
25
+
26
+ | Name | Type | Required | Description |
27
+ |------|------|----------|-------------|
28
+ | `code` | `string` | ✓ | Parameter code |
29
+
30
+ **Returns:** `void`
31
+
32
+
33
+
34
+ ### createContext
35
+
36
+ **Parameters:**
37
+
38
+ | Name | Type | Required | Description |
39
+ |------|------|----------|-------------|
40
+ | `ctx` | `any` | | Parameter ctx |
41
+
42
+ **Returns:** `void`
43
+
44
+
45
+
46
+ ### run
47
+
48
+ **Parameters:**
49
+
50
+ | Name | Type | Required | Description |
51
+ |------|------|----------|-------------|
52
+ | `code` | `string` | ✓ | Parameter code |
53
+ | `ctx` | `any` | | Parameter ctx |
54
+ | `options` | `any` | | Parameter options |
55
+
56
+ **Returns:** `void`
57
+
58
+
59
+
60
+ ## State (Zod v4 schema)
61
+
62
+ | Property | Type | Description |
63
+ |----------|------|-------------|
64
+ | `enabled` | `boolean` | Whether this feature is currently enabled |
65
+
66
+ ## Examples
67
+
68
+ **features.vm**
69
+
70
+ ```ts
71
+ const vm = container.feature('vm')
72
+
73
+ // Execute simple code
74
+ const result = vm.run('1 + 2 + 3')
75
+ console.log(result) // 6
76
+
77
+ // Execute code with custom context
78
+ const result2 = vm.run('greeting + " " + name', {
79
+ greeting: 'Hello',
80
+ name: 'World'
81
+ })
82
+ console.log(result2) // 'Hello World'
83
+ ```
84
+
@@ -0,0 +1,337 @@
1
+ # WindowManager (features.windowManager)
2
+
3
+ WindowManager Feature — Native window control via LucaVoiceLauncher Acts as an IPC server that the native macOS launcher app connects to. Communicates over a Unix domain socket using NDJSON (newline-delimited JSON). **Protocol:** - Bun listens on a Unix domain socket; the native app connects as a client - Window dispatch commands are sent as NDJSON with a `window` field - The app executes window commands and sends back `windowAck` messages - Any non-windowAck message from the app is emitted as a `message` event - Other features can use `send()` to write arbitrary NDJSON to the app **Capabilities:** - Spawn native browser windows with configurable chrome - Navigate, focus, close, and eval JavaScript in windows - Automatic socket file cleanup and fallback paths
4
+
5
+ ## Usage
6
+
7
+ ```ts
8
+ container.feature('windowManager', {
9
+ // Path to the Unix domain socket the server listens on
10
+ socketPath,
11
+ // Automatically start listening when the feature is enabled
12
+ autoListen,
13
+ // Per-request timeout in milliseconds for window operations
14
+ requestTimeoutMs,
15
+ })
16
+ ```
17
+
18
+ ## Options (Zod v4 schema)
19
+
20
+ | Property | Type | Description |
21
+ |----------|------|-------------|
22
+ | `socketPath` | `string` | Path to the Unix domain socket the server listens on |
23
+ | `autoListen` | `boolean` | Automatically start listening when the feature is enabled |
24
+ | `requestTimeoutMs` | `number` | Per-request timeout in milliseconds for window operations |
25
+
26
+ ## Methods
27
+
28
+ ### enable
29
+
30
+ **Parameters:**
31
+
32
+ | Name | Type | Required | Description |
33
+ |------|------|----------|-------------|
34
+ | `options` | `any` | | Parameter options |
35
+
36
+ **Returns:** `Promise<this>`
37
+
38
+
39
+
40
+ ### listen
41
+
42
+ Start listening on the Unix domain socket for the native app to connect. Fire-and-forget — binds the socket and returns immediately. Sits quietly until the native app connects; does nothing visible if it never does.
43
+
44
+ **Parameters:**
45
+
46
+ | Name | Type | Required | Description |
47
+ |------|------|----------|-------------|
48
+ | `socketPath` | `string` | | Override the configured socket path |
49
+
50
+ **Returns:** `this`
51
+
52
+
53
+
54
+ ### stop
55
+
56
+ Stop the IPC server and clean up all connections. Rejects any pending window operation requests.
57
+
58
+ **Returns:** `Promise<this>`
59
+
60
+
61
+
62
+ ### spawn
63
+
64
+ Spawn a new native browser window. Sends a window dispatch to the app and waits for the ack.
65
+
66
+ **Parameters:**
67
+
68
+ | Name | Type | Required | Description |
69
+ |------|------|----------|-------------|
70
+ | `opts` | `SpawnOptions` | | Window configuration (url, dimensions, chrome options) |
71
+
72
+ `SpawnOptions` properties:
73
+
74
+ | Property | Type | Description |
75
+ |----------|------|-------------|
76
+ | `url` | `string` | |
77
+ | `width` | `number` | |
78
+ | `height` | `number` | |
79
+ | `x` | `number` | |
80
+ | `y` | `number` | |
81
+ | `alwaysOnTop` | `boolean` | |
82
+ | `window` | `{
83
+ decorations?: 'normal' | 'hiddenTitleBar' | 'none'
84
+ transparent?: boolean
85
+ shadow?: boolean
86
+ alwaysOnTop?: boolean
87
+ opacity?: number
88
+ clickThrough?: boolean
89
+ }` | |
90
+
91
+ **Returns:** `Promise<WindowAckResult>`
92
+
93
+
94
+
95
+ ### spawnTTY
96
+
97
+ Spawn a native terminal window running a command. The terminal is read-only — stdout/stderr are rendered with ANSI support. Closing the window terminates the process.
98
+
99
+ **Parameters:**
100
+
101
+ | Name | Type | Required | Description |
102
+ |------|------|----------|-------------|
103
+ | `opts` | `SpawnTTYOptions` | ✓ | Terminal configuration (command, args, cwd, dimensions, etc.) |
104
+
105
+ `SpawnTTYOptions` properties:
106
+
107
+ | Property | Type | Description |
108
+ |----------|------|-------------|
109
+ | `command` | `string` | Executable name or path (required). |
110
+ | `args` | `string[]` | Arguments passed after the command. |
111
+ | `cwd` | `string` | Working directory for the process. |
112
+ | `env` | `Record<string, string>` | Environment variable overrides. |
113
+ | `cols` | `number` | Initial terminal columns. |
114
+ | `rows` | `number` | Initial terminal rows. |
115
+ | `title` | `string` | Window title. |
116
+ | `width` | `number` | Window width in points. |
117
+ | `height` | `number` | Window height in points. |
118
+ | `x` | `number` | Window x position. |
119
+ | `y` | `number` | Window y position. |
120
+ | `window` | `SpawnOptions['window']` | Chrome options (decorations, alwaysOnTop, etc.) |
121
+
122
+ **Returns:** `Promise<WindowAckResult>`
123
+
124
+
125
+
126
+ ### focus
127
+
128
+ Bring a window to the front.
129
+
130
+ **Parameters:**
131
+
132
+ | Name | Type | Required | Description |
133
+ |------|------|----------|-------------|
134
+ | `windowId` | `string` | | The window ID. If omitted, the app uses the most recent window. |
135
+
136
+ **Returns:** `Promise<WindowAckResult>`
137
+
138
+
139
+
140
+ ### close
141
+
142
+ Close a window.
143
+
144
+ **Parameters:**
145
+
146
+ | Name | Type | Required | Description |
147
+ |------|------|----------|-------------|
148
+ | `windowId` | `string` | | The window ID. If omitted, the app closes the most recent window. |
149
+
150
+ **Returns:** `Promise<WindowAckResult>`
151
+
152
+
153
+
154
+ ### navigate
155
+
156
+ Navigate a window to a new URL.
157
+
158
+ **Parameters:**
159
+
160
+ | Name | Type | Required | Description |
161
+ |------|------|----------|-------------|
162
+ | `windowId` | `string` | ✓ | The window ID |
163
+ | `url` | `string` | ✓ | The URL to navigate to |
164
+
165
+ **Returns:** `Promise<WindowAckResult>`
166
+
167
+
168
+
169
+ ### eval
170
+
171
+ Evaluate JavaScript in a window's web view.
172
+
173
+ **Parameters:**
174
+
175
+ | Name | Type | Required | Description |
176
+ |------|------|----------|-------------|
177
+ | `windowId` | `string` | ✓ | The window ID |
178
+ | `code` | `string` | ✓ | JavaScript code to evaluate |
179
+ | `opts` | `{ timeoutMs?: number; returnJson?: boolean }` | | timeoutMs (default 5000), returnJson (default true) |
180
+
181
+ **Returns:** `Promise<WindowAckResult>`
182
+
183
+
184
+
185
+ ### screengrab
186
+
187
+ Capture a PNG screenshot from a window.
188
+
189
+ **Parameters:**
190
+
191
+ | Name | Type | Required | Description |
192
+ |------|------|----------|-------------|
193
+ | `opts` | `WindowScreenGrabOptions` | ✓ | Window target and output path |
194
+
195
+ `WindowScreenGrabOptions` properties:
196
+
197
+ | Property | Type | Description |
198
+ |----------|------|-------------|
199
+ | `windowId` | `string` | Window ID. If omitted, the launcher uses the most recent window. |
200
+ | `path` | `string` | Output file path for the PNG image. |
201
+
202
+ **Returns:** `Promise<WindowAckResult>`
203
+
204
+
205
+
206
+ ### video
207
+
208
+ Record a video from a window to disk.
209
+
210
+ **Parameters:**
211
+
212
+ | Name | Type | Required | Description |
213
+ |------|------|----------|-------------|
214
+ | `opts` | `WindowVideoOptions` | ✓ | Window target, output path, and optional duration |
215
+
216
+ `WindowVideoOptions` properties:
217
+
218
+ | Property | Type | Description |
219
+ |----------|------|-------------|
220
+ | `windowId` | `string` | Window ID. If omitted, the launcher uses the most recent window. |
221
+ | `path` | `string` | Output file path for the video file. |
222
+ | `durationMs` | `number` | Recording duration in milliseconds. |
223
+
224
+ **Returns:** `Promise<WindowAckResult>`
225
+
226
+
227
+
228
+ ### window
229
+
230
+ Get a WindowHandle for chainable operations on a specific window.
231
+
232
+ **Parameters:**
233
+
234
+ | Name | Type | Required | Description |
235
+ |------|------|----------|-------------|
236
+ | `windowId` | `string` | ✓ | The window ID |
237
+
238
+ **Returns:** `WindowHandle`
239
+
240
+
241
+
242
+ ### send
243
+
244
+ Write an NDJSON message to the connected app client. Public so other features can send arbitrary protocol messages over the same socket.
245
+
246
+ **Parameters:**
247
+
248
+ | Name | Type | Required | Description |
249
+ |------|------|----------|-------------|
250
+ | `msg` | `Record<string, any>` | ✓ | The message object to send (will be JSON-serialized + newline) |
251
+
252
+ **Returns:** `boolean`
253
+
254
+
255
+
256
+ ## Getters
257
+
258
+ | Property | Type | Description |
259
+ |----------|------|-------------|
260
+ | `isListening` | `boolean` | Whether the IPC server is currently listening. |
261
+ | `isClientConnected` | `boolean` | Whether the native app client is currently connected. |
262
+
263
+ ## Events (Zod v4 schema)
264
+
265
+ ### listening
266
+
267
+ Event emitted by WindowManager
268
+
269
+
270
+
271
+ ### clientConnected
272
+
273
+ Event emitted by WindowManager
274
+
275
+
276
+
277
+ ### clientDisconnected
278
+
279
+ Event emitted by WindowManager
280
+
281
+
282
+
283
+ ### windowAck
284
+
285
+ Event emitted by WindowManager
286
+
287
+
288
+
289
+ ### windowClosed
290
+
291
+ Event emitted by WindowManager
292
+
293
+
294
+
295
+ ### terminalExited
296
+
297
+ Event emitted by WindowManager
298
+
299
+
300
+
301
+ ### message
302
+
303
+ Event emitted by WindowManager
304
+
305
+
306
+
307
+ ## State (Zod v4 schema)
308
+
309
+ | Property | Type | Description |
310
+ |----------|------|-------------|
311
+ | `enabled` | `boolean` | Whether this feature is currently enabled |
312
+ | `listening` | `boolean` | Whether the IPC server is listening |
313
+ | `clientConnected` | `boolean` | Whether the native launcher app is connected |
314
+ | `socketPath` | `string` | The socket path in use |
315
+ | `windowCount` | `number` | Number of tracked windows |
316
+ | `lastError` | `string` | Last error message |
317
+
318
+ ## Examples
319
+
320
+ **features.windowManager**
321
+
322
+ ```ts
323
+ const wm = container.feature('windowManager', { enable: true, autoListen: true })
324
+
325
+ const result = await wm.spawn({ url: 'https://google.com', width: 800, height: 600 })
326
+ const handle = wm.window(result.windowId)
327
+ await handle.navigate('https://news.ycombinator.com')
328
+ const title = await handle.eval('document.title')
329
+ await handle.close()
330
+
331
+ // Other features can listen for non-window messages
332
+ wm.on('message', (msg) => console.log('App says:', msg))
333
+
334
+ // Other features can write raw NDJSON to the app
335
+ wm.send({ id: 'abc', status: 'processing', speech: 'Working on it' })
336
+ ```
337
+
@@ -0,0 +1,85 @@
1
+ # YamlTree (features.yamlTree)
2
+
3
+ YamlTree Feature - A powerful YAML file tree loader and processor This feature provides functionality to recursively load YAML files from a directory structure and build a hierarchical tree representation. It automatically processes file paths to create a nested object structure where file paths become object property paths. **Key Features:** - Recursive YAML file discovery in directory trees - Automatic path-to-property mapping using camelCase conversion - Integration with FileManager for efficient file operations - State-based tree storage and retrieval - Support for both .yml and .yaml file extensions
4
+
5
+ ## Usage
6
+
7
+ ```ts
8
+ container.feature('yamlTree')
9
+ ```
10
+
11
+ ## Methods
12
+
13
+ ### loadTree
14
+
15
+ Loads a tree of YAML files from the specified base path and stores them in state. This method recursively scans the provided directory for YAML files (.yml and .yaml), processes their content, and builds a hierarchical object structure. File paths are converted to camelCase property names, and the resulting tree is stored in the feature's state. **Path Processing:** - Removes the base path prefix from file paths - Converts directory/file names to camelCase - Creates nested objects based on directory structure - Removes file extensions (.yml/.yaml) **Example:** ``` config/ database/ production.yml -> tree.config.database.production staging.yml -> tree.config.database.staging api/ endpoints.yaml -> tree.config.api.endpoints ```
16
+
17
+ **Parameters:**
18
+
19
+ | Name | Type | Required | Description |
20
+ |------|------|----------|-------------|
21
+ | `basePath` | `string` | ✓ | The root directory path to scan for YAML files |
22
+ | `key` | `string` | | The key to store the tree under in state (defaults to first segment of basePath) |
23
+
24
+ **Returns:** `void`
25
+
26
+ ```ts
27
+ // Load all YAML files from 'config' directory into state.config
28
+ await yamlTree.loadTree('config');
29
+
30
+ // Load with custom key
31
+ await yamlTree.loadTree('app/settings', 'appSettings');
32
+
33
+ // Access the loaded data
34
+ const dbConfig = yamlTree.tree.config.database.production;
35
+ ```
36
+
37
+
38
+
39
+ ## Getters
40
+
41
+ | Property | Type | Description |
42
+ |----------|------|-------------|
43
+ | `tree` | `any` | Gets the current tree data, excluding the 'enabled' state property. Returns a clean copy of the tree data without internal state management properties. This provides access to only the YAML tree data that has been loaded. |
44
+
45
+ ## State (Zod v4 schema)
46
+
47
+ | Property | Type | Description |
48
+ |----------|------|-------------|
49
+ | `enabled` | `boolean` | Whether this feature is currently enabled |
50
+
51
+ ## Examples
52
+
53
+ **features.yamlTree**
54
+
55
+ ```ts
56
+ const yamlTree = container.feature('yamlTree', { enable: true });
57
+ await yamlTree.loadTree('config', 'appConfig');
58
+ const configData = yamlTree.tree.appConfig;
59
+ ```
60
+
61
+
62
+
63
+ **loadTree**
64
+
65
+ ```ts
66
+ // Load all YAML files from 'config' directory into state.config
67
+ await yamlTree.loadTree('config');
68
+
69
+ // Load with custom key
70
+ await yamlTree.loadTree('app/settings', 'appSettings');
71
+
72
+ // Access the loaded data
73
+ const dbConfig = yamlTree.tree.config.database.production;
74
+ ```
75
+
76
+
77
+
78
+ **tree**
79
+
80
+ ```ts
81
+ await yamlTree.loadTree('config');
82
+ const allTrees = yamlTree.tree;
83
+ // Returns: { config: { database: { ... }, api: { ... } } }
84
+ ```
85
+