@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,176 @@
1
+ # YAML (features.yaml)
2
+
3
+ The YAML feature provides utilities for parsing and stringifying YAML data. This feature wraps the js-yaml library to provide convenient methods for converting between YAML strings and JavaScript objects. It's automatically attached to Node containers for easy access.
4
+
5
+ ## Usage
6
+
7
+ ```ts
8
+ container.feature('yaml')
9
+ ```
10
+
11
+ ## Methods
12
+
13
+ ### stringify
14
+
15
+ Converts a JavaScript object to a YAML string. This method serializes JavaScript data structures into YAML format, which is human-readable and commonly used for configuration files.
16
+
17
+ **Parameters:**
18
+
19
+ | Name | Type | Required | Description |
20
+ |------|------|----------|-------------|
21
+ | `data` | `any` | ✓ | The data to convert to YAML format |
22
+
23
+ **Returns:** `string`
24
+
25
+ ```ts
26
+ const config = {
27
+ name: 'MyApp',
28
+ version: '1.0.0',
29
+ settings: {
30
+ debug: true,
31
+ ports: [3000, 3001]
32
+ }
33
+ }
34
+
35
+ const yamlString = yaml.stringify(config)
36
+ console.log(yamlString)
37
+ // Output:
38
+ // name: MyApp
39
+ // version: 1.0.0
40
+ // settings:
41
+ // debug: true
42
+ // ports:
43
+ // - 3000
44
+ // - 3001
45
+ ```
46
+
47
+
48
+
49
+ ### parse
50
+
51
+ Parses a YAML string into a JavaScript object. This method deserializes YAML content into JavaScript data structures. It supports all standard YAML features including nested objects, arrays, and various data types.
52
+
53
+ **Parameters:**
54
+
55
+ | Name | Type | Required | Description |
56
+ |------|------|----------|-------------|
57
+ | `yamlStr` | `string` | ✓ | The YAML string to parse |
58
+
59
+ **Returns:** `T`
60
+
61
+ ```ts
62
+ const yamlContent = `
63
+ name: MyApp
64
+ version: 1.0.0
65
+ settings:
66
+ debug: true
67
+ ports:
68
+ - 3000
69
+ - 3001
70
+ `
71
+
72
+ // Parse with type inference
73
+ const config = yaml.parse(yamlContent)
74
+ console.log(config.name) // 'MyApp'
75
+
76
+ // Parse with explicit typing
77
+ interface AppConfig {
78
+ name: string
79
+ version: string
80
+ settings: {
81
+ debug: boolean
82
+ ports: number[]
83
+ }
84
+ }
85
+
86
+ const typedConfig = yaml.parse<AppConfig>(yamlContent)
87
+ console.log(typedConfig.settings.ports) // [3000, 3001]
88
+ ```
89
+
90
+
91
+
92
+ ## State (Zod v4 schema)
93
+
94
+ | Property | Type | Description |
95
+ |----------|------|-------------|
96
+ | `enabled` | `boolean` | Whether this feature is currently enabled |
97
+
98
+ ## Examples
99
+
100
+ **features.yaml**
101
+
102
+ ```ts
103
+ const yamlFeature = container.feature('yaml')
104
+
105
+ // Parse YAML string to object
106
+ const config = yamlFeature.parse(`
107
+ name: MyApp
108
+ version: 1.0.0
109
+ settings:
110
+ debug: true
111
+ `)
112
+
113
+ // Convert object to YAML string
114
+ const yamlString = yamlFeature.stringify(config)
115
+ console.log(yamlString)
116
+ ```
117
+
118
+
119
+
120
+ **stringify**
121
+
122
+ ```ts
123
+ const config = {
124
+ name: 'MyApp',
125
+ version: '1.0.0',
126
+ settings: {
127
+ debug: true,
128
+ ports: [3000, 3001]
129
+ }
130
+ }
131
+
132
+ const yamlString = yaml.stringify(config)
133
+ console.log(yamlString)
134
+ // Output:
135
+ // name: MyApp
136
+ // version: 1.0.0
137
+ // settings:
138
+ // debug: true
139
+ // ports:
140
+ // - 3000
141
+ // - 3001
142
+ ```
143
+
144
+
145
+
146
+ **parse**
147
+
148
+ ```ts
149
+ const yamlContent = `
150
+ name: MyApp
151
+ version: 1.0.0
152
+ settings:
153
+ debug: true
154
+ ports:
155
+ - 3000
156
+ - 3001
157
+ `
158
+
159
+ // Parse with type inference
160
+ const config = yaml.parse(yamlContent)
161
+ console.log(config.name) // 'MyApp'
162
+
163
+ // Parse with explicit typing
164
+ interface AppConfig {
165
+ name: string
166
+ version: string
167
+ settings: {
168
+ debug: boolean
169
+ ports: number[]
170
+ }
171
+ }
172
+
173
+ const typedConfig = yaml.parse<AppConfig>(yamlContent)
174
+ console.log(typedConfig.settings.ports) // [3000, 3001]
175
+ ```
176
+
@@ -0,0 +1,47 @@
1
+ # AssetLoader (features.assetLoader)
2
+
3
+ The AssetLoader provides an API for injecting scripts and stylesheets into the page. It also provides a convenient way of loading any library from unpkg.com
4
+
5
+ ## Usage
6
+
7
+ ```ts
8
+ container.feature('assetLoader')
9
+ ```
10
+
11
+ ## Methods
12
+
13
+ ### removeStylesheet
14
+
15
+ **Parameters:**
16
+
17
+ | Name | Type | Required | Description |
18
+ |------|------|----------|-------------|
19
+ | `href` | `string` | ✓ | Parameter href |
20
+
21
+ **Returns:** `void`
22
+
23
+
24
+
25
+ ### loadScript
26
+
27
+ **Parameters:**
28
+
29
+ | Name | Type | Required | Description |
30
+ |------|------|----------|-------------|
31
+ | `url` | `string` | ✓ | Parameter url |
32
+
33
+ **Returns:** `Promise<void>`
34
+
35
+
36
+
37
+ ### unpkg
38
+
39
+ **Parameters:**
40
+
41
+ | Name | Type | Required | Description |
42
+ |------|------|----------|-------------|
43
+ | `packageName` | `string` | ✓ | Parameter packageName |
44
+ | `globalName` | `string` | ✓ | Parameter globalName |
45
+
46
+ **Returns:** `Promise<any>`
47
+
@@ -0,0 +1,133 @@
1
+ # ContainerLink (features.containerLink)
2
+
3
+ ContainerLink (Web-side) — WebSocket client that connects to a node host. Connects to a ContainerLink host over WebSocket. The host can evaluate code in this container, and the web side can emit structured events to the host. The web side can NEVER eval code in the host — trust is strictly one-way.
4
+
5
+ ## Usage
6
+
7
+ ```ts
8
+ container.feature('containerLink', {
9
+ // Port for the WebSocket server
10
+ port,
11
+ // Interval in ms between heartbeat pings
12
+ heartbeatInterval,
13
+ // Max missed pongs before disconnecting a client
14
+ maxMissedHeartbeats,
15
+ })
16
+ ```
17
+
18
+ ## Options (Zod v4 schema)
19
+
20
+ | Property | Type | Description |
21
+ |----------|------|-------------|
22
+ | `port` | `number` | Port for the WebSocket server |
23
+ | `heartbeatInterval` | `number` | Interval in ms between heartbeat pings |
24
+ | `maxMissedHeartbeats` | `number` | Max missed pongs before disconnecting a client |
25
+
26
+ ## Methods
27
+
28
+ ### connect
29
+
30
+ Connect to the host WebSocket server and perform registration.
31
+
32
+ **Parameters:**
33
+
34
+ | Name | Type | Required | Description |
35
+ |------|------|----------|-------------|
36
+ | `hostUrl` | `string` | | Override the configured host URL |
37
+
38
+ **Returns:** `Promise<this>`
39
+
40
+
41
+
42
+ ### disconnect
43
+
44
+ Disconnect from the host.
45
+
46
+ **Parameters:**
47
+
48
+ | Name | Type | Required | Description |
49
+ |------|------|----------|-------------|
50
+ | `reason` | `string` | | Optional reason string |
51
+
52
+ **Returns:** `void`
53
+
54
+
55
+
56
+ ### emitToHost
57
+
58
+ Send a structured event to the host container.
59
+
60
+ **Parameters:**
61
+
62
+ | Name | Type | Required | Description |
63
+ |------|------|----------|-------------|
64
+ | `eventName` | `string` | ✓ | Name of the event |
65
+ | `data` | `any` | | Optional event data |
66
+
67
+ **Returns:** `void`
68
+
69
+
70
+
71
+ ## Getters
72
+
73
+ | Property | Type | Description |
74
+ |----------|------|-------------|
75
+ | `isConnected` | `boolean` | Whether currently connected to the host. |
76
+ | `token` | `string | undefined` | The auth token received from the host. |
77
+ | `hostId` | `string | undefined` | The host container's UUID. |
78
+
79
+ ## Events (Zod v4 schema)
80
+
81
+ ### connected
82
+
83
+ Event emitted by ContainerLink
84
+
85
+
86
+
87
+ ### disconnected
88
+
89
+ Event emitted by ContainerLink
90
+
91
+
92
+
93
+ ### evalRequest
94
+
95
+ Event emitted by ContainerLink
96
+
97
+
98
+
99
+ ### reconnecting
100
+
101
+ Event emitted by ContainerLink
102
+
103
+
104
+
105
+ ## State (Zod v4 schema)
106
+
107
+ | Property | Type | Description |
108
+ |----------|------|-------------|
109
+ | `enabled` | `boolean` | Whether this feature is currently enabled |
110
+ | `connectionCount` | `number` | Number of currently connected web containers |
111
+ | `port` | `number` | Port the WebSocket server is listening on |
112
+ | `listening` | `boolean` | Whether the WebSocket server is listening |
113
+
114
+ ## Examples
115
+
116
+ **features.containerLink**
117
+
118
+ ```ts
119
+ const link = container.feature('containerLink', {
120
+ enable: true,
121
+ hostUrl: 'ws://localhost:8089',
122
+ })
123
+ await link.connect()
124
+
125
+ // Send events to the host
126
+ link.emitToHost('click', { x: 100, y: 200 })
127
+
128
+ // Listen for eval requests before they execute
129
+ link.on('evalRequest', (code, requestId) => {
130
+ console.log('Host is evaluating:', code)
131
+ })
132
+ ```
133
+
@@ -0,0 +1,59 @@
1
+ # Esbuild (features.esbuild)
2
+
3
+ Esbuild helper
4
+
5
+ ## Usage
6
+
7
+ ```ts
8
+ container.feature('esbuild')
9
+ ```
10
+
11
+ ## Methods
12
+
13
+ ### compile
14
+
15
+ **Parameters:**
16
+
17
+ | Name | Type | Required | Description |
18
+ |------|------|----------|-------------|
19
+ | `code` | `string` | ✓ | Parameter code |
20
+ | `options` | `esbuild.TransformOptions` | | Parameter options |
21
+
22
+ **Returns:** `void`
23
+
24
+
25
+
26
+ ### clearCache
27
+
28
+ **Returns:** `void`
29
+
30
+
31
+
32
+ ### start
33
+
34
+ **Returns:** `void`
35
+
36
+
37
+
38
+ ## Getters
39
+
40
+ | Property | Type | Description |
41
+ |----------|------|-------------|
42
+ | `assetLoader` | `any` | Returns the assetLoader feature for loading external libraries from unpkg. |
43
+
44
+ ## State (Zod v4 schema)
45
+
46
+ | Property | Type | Description |
47
+ |----------|------|-------------|
48
+ | `enabled` | `boolean` | Whether this feature is currently enabled |
49
+
50
+ ## Examples
51
+
52
+ **features.esbuild**
53
+
54
+ ```ts
55
+ const esbuild = container.feature('esbuild')
56
+ const result = esbuild.transformSync('const x: number = 1')
57
+ console.log(result.code) // 'const x = 1;\n'
58
+ ```
59
+
@@ -0,0 +1,135 @@
1
+ # Helpers (features.helpers)
2
+
3
+ The Helpers feature discovers and loads project-level helpers from a JSON manifest served over HTTP. Scripts are injected via AssetLoader and self-register into the container's registries. This is the web equivalent of the node Helpers feature, which scans the filesystem. Instead of filesystem scanning, this feature fetches a manifest from a well-known URL and uses AssetLoader.loadScript() to inject each helper's script tag.
4
+
5
+ ## Usage
6
+
7
+ ```ts
8
+ container.feature('helpers', {
9
+ // Root directory to scan for helper folders. Defaults to container.cwd
10
+ rootDir,
11
+ })
12
+ ```
13
+
14
+ ## Options (Zod v4 schema)
15
+
16
+ | Property | Type | Description |
17
+ |----------|------|-------------|
18
+ | `rootDir` | `string` | Root directory to scan for helper folders. Defaults to container.cwd |
19
+
20
+ ## Methods
21
+
22
+ ### setManifestURL
23
+
24
+ Set a new manifest URL. Invalidates any cached manifest.
25
+
26
+ **Parameters:**
27
+
28
+ | Name | Type | Required | Description |
29
+ |------|------|----------|-------------|
30
+ | `url` | `string` | ✓ | The new URL to fetch the manifest from |
31
+
32
+ **Returns:** `void`
33
+
34
+
35
+
36
+ ### discover
37
+
38
+ Discover and register helpers of the given type from the manifest. Fetches the manifest, then for each entry of the requested type, loads the script via AssetLoader and checks what got newly registered.
39
+
40
+ **Parameters:**
41
+
42
+ | Name | Type | Required | Description |
43
+ |------|------|----------|-------------|
44
+ | `type` | `RegistryType` | ✓ | Which type of helpers to discover ('features' or 'clients') |
45
+
46
+ **Returns:** `Promise<string[]>`
47
+
48
+
49
+
50
+ ### discoverAll
51
+
52
+ Discover all helper types from the manifest.
53
+
54
+ **Returns:** `Promise<Record<string, string[]>>`
55
+
56
+
57
+
58
+ ### discoverFeatures
59
+
60
+ Convenience method to discover only features.
61
+
62
+ **Returns:** `Promise<string[]>`
63
+
64
+
65
+
66
+ ### discoverClients
67
+
68
+ Convenience method to discover only clients.
69
+
70
+ **Returns:** `Promise<string[]>`
71
+
72
+
73
+
74
+ ### lookup
75
+
76
+ Look up a helper class by type and name.
77
+
78
+ **Parameters:**
79
+
80
+ | Name | Type | Required | Description |
81
+ |------|------|----------|-------------|
82
+ | `type` | `RegistryType` | ✓ | The registry type |
83
+ | `name` | `string` | ✓ | The helper name within that registry |
84
+
85
+ **Returns:** `any`
86
+
87
+
88
+
89
+ ### describe
90
+
91
+ Get the introspection description for a specific helper.
92
+
93
+ **Parameters:**
94
+
95
+ | Name | Type | Required | Description |
96
+ |------|------|----------|-------------|
97
+ | `type` | `RegistryType` | ✓ | The registry type |
98
+ | `name` | `string` | ✓ | The helper name |
99
+
100
+ **Returns:** `string`
101
+
102
+
103
+
104
+ ## Getters
105
+
106
+ | Property | Type | Description |
107
+ |----------|------|-------------|
108
+ | `manifestURL` | `string` | The URL to fetch the helpers manifest from. |
109
+ | `available` | `Record<string, string[]>` | Returns a unified view of all available helpers across all registries. Each key is a registry type, each value is the list of helper names in that registry. |
110
+
111
+ ## State (Zod v4 schema)
112
+
113
+ | Property | Type | Description |
114
+ |----------|------|-------------|
115
+ | `enabled` | `boolean` | Whether this feature is currently enabled |
116
+ | `discovered` | `object` | Which registry types have been discovered |
117
+ | `registered` | `array` | Names of project-level helpers that were discovered (type.name) |
118
+
119
+ ## Examples
120
+
121
+ **features.helpers**
122
+
123
+ ```ts
124
+ const helpers = container.feature('helpers', { enable: true })
125
+
126
+ // Discover all helper types from the manifest
127
+ await helpers.discoverAll()
128
+
129
+ // Discover a specific type
130
+ await helpers.discover('features')
131
+
132
+ // Unified view of all available helpers
133
+ console.log(helpers.available)
134
+ ```
135
+
@@ -0,0 +1,30 @@
1
+ # Network (features.network)
2
+
3
+ Network helper
4
+
5
+ ## Usage
6
+
7
+ ```ts
8
+ container.feature('network')
9
+ ```
10
+
11
+ ## Methods
12
+
13
+ ### start
14
+
15
+ **Returns:** `void`
16
+
17
+
18
+
19
+ ### disable
20
+
21
+ **Returns:** `void`
22
+
23
+
24
+
25
+ ## Getters
26
+
27
+ | Property | Type | Description |
28
+ |----------|------|-------------|
29
+ | `isOffline` | `any` | Whether the browser is currently offline. |
30
+ | `isOnline` | `any` | Whether the browser is currently online. |
@@ -0,0 +1,55 @@
1
+ # Speech (features.speech)
2
+
3
+ Speech helper
4
+
5
+ ## Usage
6
+
7
+ ```ts
8
+ container.feature('speech')
9
+ ```
10
+
11
+ ## Methods
12
+
13
+ ### loadVoices
14
+
15
+ **Returns:** `void`
16
+
17
+
18
+
19
+ ### setDefaultVoice
20
+
21
+ **Parameters:**
22
+
23
+ | Name | Type | Required | Description |
24
+ |------|------|----------|-------------|
25
+ | `name` | `string` | ✓ | Parameter name |
26
+
27
+ **Returns:** `void`
28
+
29
+
30
+
31
+ ### cancel
32
+
33
+ **Returns:** `void`
34
+
35
+
36
+
37
+ ### say
38
+
39
+ **Parameters:**
40
+
41
+ | Name | Type | Required | Description |
42
+ |------|------|----------|-------------|
43
+ | `text` | `string` | ✓ | Parameter text |
44
+ | `options` | `{ voice?: Voice }` | | Parameter options |
45
+
46
+ **Returns:** `void`
47
+
48
+
49
+
50
+ ## Getters
51
+
52
+ | Property | Type | Description |
53
+ |----------|------|-------------|
54
+ | `voices` | `any` | Returns the array of available speech synthesis voices. |
55
+ | `defaultVoice` | `any` | Returns the Voice object matching the currently selected default voice name. |
@@ -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
+