@soederpop/luca 0.0.5 → 0.0.7

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 (211) hide show
  1. package/CLAUDE.md +10 -1
  2. package/bun.lock +1 -1
  3. package/commands/build-bootstrap.ts +78 -0
  4. package/commands/build-scaffolds.ts +24 -2
  5. package/commands/try-all-challenges.ts +543 -0
  6. package/commands/try-challenge.ts +100 -0
  7. package/docs/README.md +52 -80
  8. package/docs/TABLE-OF-CONTENTS.md +82 -51
  9. package/docs/apis/clients/elevenlabs.md +232 -8
  10. package/docs/apis/clients/graph.md +59 -8
  11. package/docs/apis/clients/openai.md +362 -2
  12. package/docs/apis/clients/rest.md +122 -2
  13. package/docs/apis/clients/websocket.md +71 -17
  14. package/docs/apis/features/agi/assistant.md +9 -3
  15. package/docs/apis/features/agi/assistants-manager.md +2 -2
  16. package/docs/apis/features/agi/claude-code.md +153 -14
  17. package/docs/apis/features/agi/conversation-history.md +15 -3
  18. package/docs/apis/features/agi/conversation.md +133 -20
  19. package/docs/apis/features/agi/openai-codex.md +90 -12
  20. package/docs/apis/features/agi/skills-library.md +23 -5
  21. package/docs/apis/features/node/container-link.md +59 -0
  22. package/docs/apis/features/node/content-db.md +1 -1
  23. package/docs/apis/features/node/disk-cache.md +1 -1
  24. package/docs/apis/features/node/dns.md +1 -0
  25. package/docs/apis/features/node/docker.md +2 -1
  26. package/docs/apis/features/node/esbuild.md +4 -3
  27. package/docs/apis/features/node/file-manager.md +13 -4
  28. package/docs/apis/features/node/fs.md +726 -171
  29. package/docs/apis/features/node/git.md +1 -0
  30. package/docs/apis/features/node/google-auth.md +23 -4
  31. package/docs/apis/features/node/google-calendar.md +14 -2
  32. package/docs/apis/features/node/google-docs.md +15 -2
  33. package/docs/apis/features/node/google-drive.md +21 -3
  34. package/docs/apis/features/node/google-sheets.md +14 -2
  35. package/docs/apis/features/node/grep.md +2 -0
  36. package/docs/apis/features/node/helpers.md +29 -0
  37. package/docs/apis/features/node/ink.md +2 -2
  38. package/docs/apis/features/node/networking.md +39 -4
  39. package/docs/apis/features/node/os.md +28 -0
  40. package/docs/apis/features/node/postgres.md +26 -4
  41. package/docs/apis/features/node/proc.md +37 -28
  42. package/docs/apis/features/node/process-manager.md +33 -5
  43. package/docs/apis/features/node/repl.md +1 -1
  44. package/docs/apis/features/node/runpod.md +1 -0
  45. package/docs/apis/features/node/secure-shell.md +7 -0
  46. package/docs/apis/features/node/semantic-search.md +12 -5
  47. package/docs/apis/features/node/sqlite.md +26 -4
  48. package/docs/apis/features/node/telegram.md +30 -5
  49. package/docs/apis/features/node/tts.md +17 -2
  50. package/docs/apis/features/node/ui.md +1 -1
  51. package/docs/apis/features/node/vault.md +4 -9
  52. package/docs/apis/features/node/vm.md +3 -12
  53. package/docs/apis/features/node/window-manager.md +128 -20
  54. package/docs/apis/features/web/asset-loader.md +13 -1
  55. package/docs/apis/features/web/container-link.md +59 -0
  56. package/docs/apis/features/web/esbuild.md +4 -3
  57. package/docs/apis/features/web/helpers.md +29 -0
  58. package/docs/apis/features/web/network.md +16 -2
  59. package/docs/apis/features/web/speech.md +16 -2
  60. package/docs/apis/features/web/vault.md +4 -9
  61. package/docs/apis/features/web/vm.md +3 -12
  62. package/docs/apis/features/web/voice.md +18 -1
  63. package/docs/apis/servers/express.md +18 -2
  64. package/docs/apis/servers/mcp.md +29 -4
  65. package/docs/apis/servers/websocket.md +34 -6
  66. package/docs/bootstrap/CLAUDE.md +100 -0
  67. package/docs/bootstrap/SKILL.md +222 -0
  68. package/docs/bootstrap/templates/about-command.ts +41 -0
  69. package/docs/bootstrap/templates/docs-models.ts +22 -0
  70. package/docs/bootstrap/templates/docs-readme.md +43 -0
  71. package/docs/bootstrap/templates/example-feature.ts +53 -0
  72. package/docs/bootstrap/templates/health-endpoint.ts +15 -0
  73. package/docs/bootstrap/templates/luca-cli.ts +25 -0
  74. package/docs/challenges/caching-proxy.md +16 -0
  75. package/docs/challenges/content-db-round-trip.md +14 -0
  76. package/docs/challenges/custom-command.md +9 -0
  77. package/docs/challenges/file-watcher-pipeline.md +11 -0
  78. package/docs/challenges/grep-audit-report.md +15 -0
  79. package/docs/challenges/multi-feature-dashboard.md +14 -0
  80. package/docs/challenges/process-orchestrator.md +17 -0
  81. package/docs/challenges/rest-api-server-with-client.md +12 -0
  82. package/docs/challenges/script-runner-with-vm.md +11 -0
  83. package/docs/challenges/simple-rest-api.md +15 -0
  84. package/docs/challenges/websocket-serve-and-client.md +11 -0
  85. package/docs/challenges/yaml-config-system.md +14 -0
  86. package/docs/command-system-overhaul.md +94 -0
  87. package/docs/examples/assistant/CORE.md +18 -0
  88. package/docs/examples/assistant/hooks.ts +3 -0
  89. package/docs/examples/assistant/tools.ts +10 -0
  90. package/docs/examples/window-manager-layouts.md +180 -0
  91. package/docs/in-memory-fs.md +4 -0
  92. package/docs/models.ts +13 -10
  93. package/docs/philosophy.md +4 -3
  94. package/docs/reports/console-hmr-design.md +170 -0
  95. package/docs/reports/helper-semantic-search.md +72 -0
  96. package/docs/scaffolds/client.md +29 -20
  97. package/docs/scaffolds/command.md +64 -50
  98. package/docs/scaffolds/endpoint.md +31 -36
  99. package/docs/scaffolds/feature.md +28 -18
  100. package/docs/scaffolds/selector.md +91 -0
  101. package/docs/scaffolds/server.md +18 -9
  102. package/docs/selectors.md +115 -0
  103. package/docs/sessions/custom-command/attempt-log-2.md +195 -0
  104. package/docs/sessions/file-watcher-pipeline/attempt-log-1.md +728 -0
  105. package/docs/sessions/file-watcher-pipeline/attempt-log-2.md +555 -0
  106. package/docs/sessions/grep-audit-report/attempt-log-1.md +289 -0
  107. package/docs/sessions/multi-feature-dashboard/attempt-log-2.md +679 -0
  108. package/docs/sessions/rest-api-server-with-client/attempt-log-1.md +1 -0
  109. package/docs/sessions/rest-api-server-with-client/attempt-log-3.md +920 -0
  110. package/docs/sessions/simple-rest-api/attempt-log-1.md +593 -0
  111. package/docs/sessions/websocket-serve-and-client/attempt-log-2.md +995 -0
  112. package/docs/tutorials/00-bootstrap.md +148 -0
  113. package/docs/tutorials/07-endpoints.md +7 -7
  114. package/docs/tutorials/08-commands.md +153 -72
  115. package/luca.cli.ts +3 -0
  116. package/package.json +6 -5
  117. package/public/index.html +1430 -0
  118. package/scripts/examples/using-ollama.ts +2 -1
  119. package/scripts/update-introspection-data.ts +2 -2
  120. package/src/agi/endpoints/experts.ts +1 -1
  121. package/src/agi/features/assistant.ts +7 -0
  122. package/src/agi/features/assistants-manager.ts +5 -5
  123. package/src/agi/features/claude-code.ts +263 -3
  124. package/src/agi/features/conversation-history.ts +7 -1
  125. package/src/agi/features/conversation.ts +26 -3
  126. package/src/agi/features/openai-codex.ts +26 -2
  127. package/src/agi/features/openapi.ts +6 -1
  128. package/src/agi/features/skills-library.ts +9 -1
  129. package/src/bootstrap/generated.ts +540 -0
  130. package/src/cli/cli.ts +64 -21
  131. package/src/client.ts +23 -357
  132. package/src/clients/civitai/index.ts +1 -1
  133. package/src/clients/client-template.ts +1 -1
  134. package/src/clients/comfyui/index.ts +13 -2
  135. package/src/clients/elevenlabs/index.ts +2 -1
  136. package/src/clients/graph.ts +87 -0
  137. package/src/clients/openai/index.ts +10 -1
  138. package/src/clients/rest.ts +207 -0
  139. package/src/clients/websocket.ts +176 -0
  140. package/src/command.ts +281 -34
  141. package/src/commands/bootstrap.ts +181 -0
  142. package/src/commands/chat.ts +5 -4
  143. package/src/commands/describe.ts +225 -2
  144. package/src/commands/help.ts +35 -9
  145. package/src/commands/index.ts +3 -0
  146. package/src/commands/introspect.ts +92 -2
  147. package/src/commands/prompt.ts +5 -6
  148. package/src/commands/run.ts +33 -10
  149. package/src/commands/save-api-docs.ts +49 -0
  150. package/src/commands/scaffold.ts +169 -23
  151. package/src/commands/select.ts +94 -0
  152. package/src/commands/serve.ts +10 -1
  153. package/src/container.ts +15 -0
  154. package/src/endpoint.ts +19 -0
  155. package/src/graft.ts +181 -0
  156. package/src/introspection/generated.agi.ts +12458 -8968
  157. package/src/introspection/generated.node.ts +10573 -7145
  158. package/src/introspection/generated.web.ts +1 -1
  159. package/src/introspection/index.ts +26 -0
  160. package/src/node/container.ts +6 -7
  161. package/src/node/features/content-db.ts +49 -2
  162. package/src/node/features/disk-cache.ts +16 -9
  163. package/src/node/features/dns.ts +16 -3
  164. package/src/node/features/docker.ts +16 -4
  165. package/src/node/features/esbuild.ts +20 -0
  166. package/src/node/features/file-manager.ts +184 -29
  167. package/src/node/features/fs.ts +704 -248
  168. package/src/node/features/git.ts +21 -8
  169. package/src/node/features/grep.ts +23 -3
  170. package/src/node/features/helpers.ts +372 -43
  171. package/src/node/features/networking.ts +39 -4
  172. package/src/node/features/opener.ts +28 -15
  173. package/src/node/features/os.ts +76 -0
  174. package/src/node/features/port-exposer.ts +11 -1
  175. package/src/node/features/postgres.ts +17 -1
  176. package/src/node/features/proc.ts +4 -1
  177. package/src/node/features/python.ts +63 -14
  178. package/src/node/features/repl.ts +11 -7
  179. package/src/node/features/runpod.ts +16 -3
  180. package/src/node/features/secure-shell.ts +27 -2
  181. package/src/node/features/semantic-search.ts +12 -1
  182. package/src/node/features/ui.ts +5 -69
  183. package/src/node/features/vm.ts +17 -0
  184. package/src/node/features/window-manager.ts +68 -20
  185. package/src/node.ts +5 -0
  186. package/src/scaffolds/generated.ts +492 -290
  187. package/src/scaffolds/template.ts +9 -0
  188. package/src/schemas/base.ts +46 -5
  189. package/src/selector.ts +282 -0
  190. package/src/server.ts +11 -0
  191. package/src/servers/express.ts +27 -12
  192. package/src/servers/socket.ts +45 -11
  193. package/src/web/clients/socket.ts +4 -1
  194. package/src/web/container.ts +2 -1
  195. package/src/web/features/network.ts +7 -1
  196. package/src/web/features/voice-recognition.ts +16 -1
  197. package/test/clients-servers.test.ts +2 -1
  198. package/test/command.test.ts +267 -0
  199. package/test-integration/assistants-manager.test.ts +10 -20
  200. package/tmp/.cache/luca-disk-cache/content-v2/sha512/1b/b5/c75b28794f00f94c4d609a98978e9420e9b7146d204a7fbf5b0b30477292581705d207c0100dabaac27eef540aaaece3374af75104a93219d4ec8bfb44e7 +1 -0
  201. package/tmp/.cache/luca-disk-cache/content-v2/sha512/da/df/1d90ce4e042abeb035a197832c6d6893420a747a056be773eb00e4f745a037d505c8db13dde7d36b36b6b893addbb7df0f5fe9f0c13e665f20056447318b +1 -0
  202. package/tmp/.cache/luca-disk-cache/content-v2/sha512/ed/04/e1d0c2a58c2db29b3921ca2affb3ea4febe831c53b38ebc21019fb799823aba6ed5b4611873d2cd25d422d49955b852a9c326da0d678899bc1c2c2960901 +1 -0
  203. package/tmp/.cache/luca-disk-cache/index-v5/00/13/572aa4c9a94f99eda999695d050cdd0ca7fe2d23a50af03234d4c8ce0791 +2 -0
  204. package/tmp/.cache/luca-disk-cache/index-v5/75/a9/cb61dc0f0589e8ec10a9aca27b834bc73884c479941042d22a2b22324cd3 +2 -0
  205. package/tmp/.cache/luca-disk-cache/index-v5/9f/0f/8b1f915ee64cfff7667dd96acd7a5ac0a96aa91a346e19cefd45909a9c9c +2 -0
  206. package/docs/apis/features/node/launcher-app-command-listener.md +0 -145
  207. package/docs/examples/launcher-app-command-listener.md +0 -120
  208. package/docs/tasks/web-container-helper-discovery.md +0 -71
  209. package/docs/todos.md +0 -1
  210. package/scripts/test-command-listener.ts +0 -123
  211. package/src/node/features/launcher-app-command-listener.ts +0 -389
package/docs/README.md CHANGED
@@ -1,88 +1,60 @@
1
1
  # Models
2
2
 
3
- Models define the structure of markdown documents in this collection. Each document is a markdown file with YAML frontmatter (metadata attributes) and a heading-based structure (sections). Models specify the expected frontmatter fields via a schema, named sections that map to `##` headings in the document body, relationships to other models, and computed properties derived at query time.
3
+ ## Overview
4
4
 
5
- ## Examples
6
5
 
7
- **Prefix:** `examples`
8
6
 
9
- ### Attributes
7
+ ## Summary
10
8
 
11
- | Field | Type | Required | Default | Description |
12
- |-------|------|----------|---------|-------------|
13
- | tags | string[] | optional | `[]` | Arbitrary tags for categorizing the example |
14
-
15
- ### Example
16
-
17
- ```markdown
18
- ---
19
- tags: []
20
- ---
21
- # Example Title
22
9
  ```
23
-
24
- ---
25
-
26
- ## Ideas
27
-
28
- **Prefix:** `ideas`
29
-
30
- ### Attributes
31
-
32
- | Field | Type | Required | Default | Description |
33
- |-------|------|----------|---------|-------------|
34
- | goal | string | optional | — | Slug of the goal this idea is aligned to |
35
- | tags | string[] | optional | `[]` | Arbitrary tags for categorizing the idea |
36
- | status | enum(`spark`, `exploring`, `parked`, `promoted`) | optional | `"spark"` | spark is a new raw idea, exploring means actively thinking about it, parked means on hold, promoted means it became a plan |
37
-
38
- ### Example
39
-
40
- ```markdown
41
- ---
42
- tags: []
43
- status: spark
44
- ---
45
- # Idea Title
46
- ```
47
-
48
- ---
49
-
50
- ## Reports
51
-
52
- **Prefix:** `reports`
53
-
54
- ### Attributes
55
-
56
- | Field | Type | Required | Default | Description |
57
- |-------|------|----------|---------|-------------|
58
- | tags | string[] | optional | `[]` | Arbitrary tags for categorizing the report |
59
-
60
- ### Example
61
-
62
- ```markdown
63
- ---
64
- tags: []
65
- ---
66
- # Report Title
67
- ```
68
-
69
- ---
70
-
71
- ## Tutorials
72
-
73
- **Prefix:** `tutorials`
74
-
75
- ### Attributes
76
-
77
- | Field | Type | Required | Default | Description |
78
- |-------|------|----------|---------|-------------|
79
- | tags | string[] | optional | `[]` | Arbitrary tags for categorizing the tutorial |
80
-
81
- ### Example
82
-
83
- ```markdown
84
- ---
85
- tags: []
86
- ---
87
- # Tutorial Title
10
+ Collection: /Users/jonathansoeder/@soederpop/luca/docs
11
+ Root: /Users/jonathansoeder/@soederpop/luca/docs
12
+ Items: 169
13
+
14
+ Model: Challenge
15
+ Prefix: challenges
16
+ Meta: difficulty(enum(`easy`, `medium`, `hard`)), maxTime(number)
17
+ Sections: (none)
18
+ Relationships: (none)
19
+ Documents: 13
20
+ IDs: challenges/build-a-websocket-server-with-matching-client, challenges/build-a-custom-command, challenges/build-a-caching-proxy, challenges/process-orchestrator, challenges/build-a-file-watcher-pipeline, challenges/grep-audit-report, challenges/build-a-multi-feature-dashboard, challenges/yaml-config-system, challenges/script-runner-with-vm, challenges/build-an-api, challenges/find-confusing-apis, challenges/build-a-rest-server-with-matching-client, challenges/content-db-round-trip
21
+
22
+ Model: Example
23
+ Prefix: examples
24
+ Meta: tags(string[])
25
+ Sections: (none)
26
+ Relationships: (none)
27
+ Documents: 43
28
+ IDs: examples/postgres, examples/yaml-tree, examples/grep, examples/ink, examples/git, examples/ink-renderer, examples/esbuild, examples/window-manager, examples/process-manager, examples/runpod, examples/google-auth, examples/port-exposer, examples/downloader, examples/secure-shell, examples/vault, examples/window-manager-layouts, examples/ipc-socket, examples/google-sheets, examples/fs, examples/networking, examples/ink-blocks, examples/ui, examples/opener, examples/nlp, examples/disk-cache, examples/assistant/CORE, examples/vm, examples/google-docs, examples/google-calendar, examples/content-db, examples/yaml, examples/package-finder, examples/os, examples/json-tree, examples/google-drive, examples/telegram, examples/file-manager, examples/repl, examples/python, examples/sqlite, examples/tts, examples/docker, examples/proc
29
+
30
+ Model: Idea
31
+ Prefix: ideas
32
+ Meta: goal(string), tags(string[]), status(enum(`spark`, `exploring`, `parked`, `promoted`))
33
+ Sections: (none)
34
+ Relationships: (none)
35
+ Documents: 0
36
+
37
+ Model: Report
38
+ Prefix: reports
39
+ Meta: tags(string[])
40
+ Sections: (none)
41
+ Relationships: (none)
42
+ Documents: 5
43
+ IDs: reports/introspection-audit-tasks, reports/attach-pattern-usage, reports/code-audit-results, reports/assistant-bugs, reports/luca-mcp-improvements
44
+
45
+ Model: Tutorial
46
+ Prefix: tutorials
47
+ Meta: tags(string[])
48
+ Sections: (none)
49
+ Relationships: (none)
50
+ Documents: 19
51
+ IDs: tutorials/08-commands, tutorials/06-servers, tutorials/04-features-overview, tutorials/01-getting-started, tutorials/07-endpoints, tutorials/00-bootstrap, tutorials/10-creating-features, tutorials/13-introspection, tutorials/17-tui-blocks, tutorials/18-semantic-search, tutorials/03-scripts, tutorials/05-state-and-events, tutorials/14-type-system, tutorials/11-contentbase, tutorials/12-assistants, tutorials/02-container, tutorials/15-project-patterns, tutorials/09-clients, tutorials/16-google-features
52
+
53
+ Model: Base
54
+ Prefix:
55
+ Meta: (none)
56
+ Sections: (none)
57
+ Relationships: (none)
58
+ Documents: 9
59
+ IDs: introspection, principles, todos, README, CLI, documentation-audit, introspection-audit, TABLE-OF-CONTENTS, philosophy
88
60
  ```
@@ -1,69 +1,78 @@
1
1
  # Table of Contents
2
2
 
3
+ ## Challenges
4
+
5
+ - [Build a Caching Proxy](./challenges/build-a-caching-proxy.md)
6
+ - [Build a custom command](./challenges/build-a-custom-command.md)
7
+ - [Build a File Watcher Pipeline](./challenges/build-a-file-watcher-pipeline.md)
8
+ - [Build a Multi-Feature Dashboard](./challenges/build-a-multi-feature-dashboard.md)
9
+ - [Build a REST server with a matching REST Client](./challenges/build-a-rest-server-with-matching-client.md)
10
+ - [Build a websocket server with a matching websocket client](./challenges/build-a-websocket-server-with-matching-client.md)
11
+ - [Build an API](./challenges/build-an-api.md)
12
+ - [Content DB Round-Trip](./challenges/content-db-round-trip.md)
13
+ - [Find Confusing APIs](./challenges/find-confusing-apis.md)
14
+ - [Grep Audit Report](./challenges/grep-audit-report.md)
15
+ - [Process Orchestrator](./challenges/process-orchestrator.md)
16
+ - [Script Runner with VM](./challenges/script-runner-with-vm.md)
17
+ - [YAML Config System](./challenges/yaml-config-system.md)
18
+
3
19
  ## Examples
4
20
 
5
- - [contentDb](./examples/content-db.md)
6
- - [diskCache](./examples/disk-cache.md)
7
- - [docker](./examples/docker.md)
8
- - [downloader](./examples/downloader.md)
21
+ - [Luca Assistant Example](./examples/assistant/CORE.md)
22
+ - [Content Database](./examples/content-db.md)
23
+ - [Disk Cache](./examples/disk-cache.md)
24
+ - [Docker](./examples/docker.md)
25
+ - [Downloader](./examples/downloader.md)
9
26
  - [esbuild](./examples/esbuild.md)
10
- - [fileManager](./examples/file-manager.md)
27
+ - [File Manager](./examples/file-manager.md)
11
28
  - [fs](./examples/fs.md)
12
29
  - [git](./examples/git.md)
13
- - [googleAuth](./examples/google-auth.md)
14
- - [googleCalendar](./examples/google-calendar.md)
15
- - [googleDocs](./examples/google-docs.md)
16
- - [googleDrive](./examples/google-drive.md)
17
- - [googleSheets](./examples/google-sheets.md)
30
+ - [Google Auth](./examples/google-auth.md)
31
+ - [Google Calendar](./examples/google-calendar.md)
32
+ - [Google Docs](./examples/google-docs.md)
33
+ - [Google Drive](./examples/google-drive.md)
34
+ - [Google Sheets](./examples/google-sheets.md)
18
35
  - [grep](./examples/grep.md)
19
- - [ink](./examples/ink.md)
36
+ - [Ink](./examples/ink.md)
20
37
  - [Ink Blocks — Poor Man's MDX](./examples/ink-blocks.md)
21
38
  - [Feature Registry](./examples/ink-renderer.md)
22
- - [ipcSocket](./examples/ipc-socket.md)
23
- - [jsonTree](./examples/json-tree.md)
24
- - [launcherAppCommandListener](./examples/launcher-app-command-listener.md)
39
+ - [IPC Socket](./examples/ipc-socket.md)
40
+ - [JSON Tree](./examples/json-tree.md)
25
41
  - [networking](./examples/networking.md)
26
- - [nlp](./examples/nlp.md)
27
- - [opener](./examples/opener.md)
42
+ - [Natural Language Processing](./examples/nlp.md)
43
+ - [Opener](./examples/opener.md)
28
44
  - [os](./examples/os.md)
29
- - [packageFinder](./examples/package-finder.md)
30
- - [portExposer](./examples/port-exposer.md)
31
- - [postgres](./examples/postgres.md)
45
+ - [Package Finder](./examples/package-finder.md)
46
+ - [Port Exposer](./examples/port-exposer.md)
47
+ - [PostgreSQL](./examples/postgres.md)
32
48
  - [proc](./examples/proc.md)
33
- - [processManager](./examples/process-manager.md)
34
- - [python](./examples/python.md)
35
- - [repl](./examples/repl.md)
36
- - [runpod](./examples/runpod.md)
37
- - [secureShell](./examples/secure-shell.md)
38
- - [sqlite](./examples/sqlite.md)
39
- - [telegram](./examples/telegram.md)
40
- - [tts](./examples/tts.md)
49
+ - [Process Manager](./examples/process-manager.md)
50
+ - [Python](./examples/python.md)
51
+ - [REPL](./examples/repl.md)
52
+ - [RunPod GPU Cloud](./examples/runpod.md)
53
+ - [Secure Shell](./examples/secure-shell.md)
54
+ - [SQLite](./examples/sqlite.md)
55
+ - [Telegram Bot](./examples/telegram.md)
56
+ - [Text-to-Speech](./examples/tts.md)
41
57
  - [ui](./examples/ui.md)
42
- - [vault](./examples/vault.md)
58
+ - [Vault](./examples/vault.md)
43
59
  - [vm](./examples/vm.md)
44
- - [windowManager](./examples/window-manager.md)
45
- - [yaml](./examples/yaml.md)
46
- - [yamlTree](./examples/yaml-tree.md)
47
-
48
- ## Ideas
49
-
50
- - [DX Improvements for Introspection](./ideas/better-dx-for-introspection.md)
51
- - [COntainer .use() API](./ideas/container-use-api.md)
52
- - [Feature Stacks](./ideas/feature-stacks.md)
53
- - [Helpers Gateway Feature](./ideas/helpers-gateway-feature.md)
54
- - [Luca CLI Self Sufficiency Demo](./ideas/luca-cli-self-sufficiency-demo.md)
55
- - [Luca Feature Authoring DX Improvements](./ideas/luca-feature-authoring-dx.md)
56
- - [Main Server](./ideas/persistent-main-server.md)
57
- - [Supervisor-Worker Multi-Container Orchestration](./ideas/supervisor-worker-containers.md)
60
+ - [Window Manager](./examples/window-manager.md)
61
+ - [Window Manager Layouts](./examples/window-manager-layouts.md)
62
+ - [YAML](./examples/yaml.md)
63
+ - [YAML Tree](./examples/yaml-tree.md)
58
64
 
59
65
  ## Reports
60
66
 
61
67
  - [Assistant systemPrompt Bug Fix Verification](./reports/assistant-bugs.md)
62
68
  - [Attach Pattern](./reports/attach-pattern-usage.md)
69
+ - [Code Audit - Container Abstraction Violations](./reports/code-audit-results.md)
63
70
  - [Introspection Audit Results](./reports/introspection-audit-tasks.md)
71
+ - [Problem](./reports/luca-mcp-improvements.md)
64
72
 
65
73
  ## Tutorials
66
74
 
75
+ - [Bootstrap: Learning the Container at Runtime](./tutorials/00-bootstrap.md)
67
76
  - [Getting Started with Luca](./tutorials/01-getting-started.md)
68
77
  - [The Container](./tutorials/02-container.md)
69
78
  - [Running Scripts and Markdown Notebooks](./tutorials/03-scripts.md)
@@ -81,9 +90,23 @@
81
90
  - [Project Patterns and Recipes](./tutorials/15-project-patterns.md)
82
91
  - [Google Features](./tutorials/16-google-features.md)
83
92
  - [Building TUI Primitive Blocks](./tutorials/17-tui-blocks.md)
93
+ - [Semantic Search](./tutorials/18-semantic-search.md)
94
+
95
+ ## Bases
96
+
97
+ - [Luca CLI](./CLI.md)
98
+ - [Models](./README.md)
99
+ - [Table of Contents](./TABLE-OF-CONTENTS.md)
100
+ - [Documentation Audit](./documentation-audit.md)
101
+ - [Introspection](./introspection.md)
102
+ - [Introspection Audit](./introspection-audit.md)
103
+ - [Luca's Philosophy](./philosophy.md)
104
+ - [Random Principles](./principles.md)
105
+ - [todos](./todos.md)
84
106
 
85
107
  ## Other
86
108
 
109
+ - [ElevenLabsClient (clients.elevenlabs)](./apis/clients/elevenlabs.md)
87
110
  - [GraphClient (clients.graph)](./apis/clients/graph.md)
88
111
  - [OpenAIClient (clients.openai)](./apis/clients/openai.md)
89
112
  - [RestClient (clients.rest)](./apis/clients/rest.md)
@@ -96,9 +119,12 @@
96
119
  - [DocsReader (features.docsReader)](./apis/features/agi/docs-reader.md)
97
120
  - [OpenAICodex (features.openaiCodex)](./apis/features/agi/openai-codex.md)
98
121
  - [OpenAPI (features.openapi)](./apis/features/agi/openapi.md)
122
+ - [SemanticSearch (features.semanticSearch)](./apis/features/agi/semantic-search.md)
99
123
  - [SkillsLibrary (features.skillsLibrary)](./apis/features/agi/skills-library.md)
124
+ - [ContainerLink (features.containerLink)](./apis/features/node/container-link.md)
100
125
  - [ContentDb (features.contentDb)](./apis/features/node/content-db.md)
101
126
  - [DiskCache (features.diskCache)](./apis/features/node/disk-cache.md)
127
+ - [Dns (features.dns)](./apis/features/node/dns.md)
102
128
  - [Docker (features.docker)](./apis/features/node/docker.md)
103
129
  - [Downloader (features.downloader)](./apis/features/node/downloader.md)
104
130
  - [Esbuild (features.esbuild)](./apis/features/node/esbuild.md)
@@ -115,7 +141,6 @@
115
141
  - [Ink (features.ink)](./apis/features/node/ink.md)
116
142
  - [IpcSocket (features.ipcSocket)](./apis/features/node/ipc-socket.md)
117
143
  - [JsonTree (features.jsonTree)](./apis/features/node/json-tree.md)
118
- - [LauncherAppCommandListener (features.launcherAppCommandListener)](./apis/features/node/launcher-app-command-listener.md)
119
144
  - [Networking (features.networking)](./apis/features/node/networking.md)
120
145
  - [NLP (features.nlp)](./apis/features/node/nlp.md)
121
146
  - [Opener (features.opener)](./apis/features/node/opener.md)
@@ -128,6 +153,7 @@
128
153
  - [Repl (features.repl)](./apis/features/node/repl.md)
129
154
  - [Runpod (features.runpod)](./apis/features/node/runpod.md)
130
155
  - [SecureShell (features.secureShell)](./apis/features/node/secure-shell.md)
156
+ - [SemanticSearch (features.semanticSearch)](./apis/features/node/semantic-search.md)
131
157
  - [Sqlite (features.sqlite)](./apis/features/node/sqlite.md)
132
158
  - [Telegram (features.telegram)](./apis/features/node/telegram.md)
133
159
  - [TTS (features.tts)](./apis/features/node/tts.md)
@@ -138,7 +164,9 @@
138
164
  - [YAML (features.yaml)](./apis/features/node/yaml.md)
139
165
  - [YamlTree (features.yamlTree)](./apis/features/node/yaml-tree.md)
140
166
  - [AssetLoader (features.assetLoader)](./apis/features/web/asset-loader.md)
167
+ - [ContainerLink (features.containerLink)](./apis/features/web/container-link.md)
141
168
  - [Esbuild (features.esbuild)](./apis/features/web/esbuild.md)
169
+ - [Helpers (features.helpers)](./apis/features/web/helpers.md)
142
170
  - [Network (features.network)](./apis/features/web/network.md)
143
171
  - [Speech (features.speech)](./apis/features/web/speech.md)
144
172
  - [WebVault (features.vault)](./apis/features/web/vault.md)
@@ -147,11 +175,14 @@
147
175
  - [ExpressServer (servers.express)](./apis/servers/express.md)
148
176
  - [MCPServer (servers.mcp)](./apis/servers/mcp.md)
149
177
  - [WebsocketServer (servers.websocket)](./apis/servers/websocket.md)
150
- - [Luca Codebase Reference](./codebase-explainer.md)
151
- - [Contentbase](./contentbase-readme.md)
152
- - [Documentation Audit](./documentation-audit.md)
153
- - [Introspection](./introspection.md)
154
- - [Introspection Audit](./introspection-audit.md)
155
- - [Luca's Philosophy](./philosophy.md)
156
- - [Random Principles](./principles.md)
157
- - [todos](./todos.md)
178
+ - [Luca Project](./bootstrap/CLAUDE.md)
179
+ - [Luca: Learning the Container at Runtime](./bootstrap/SKILL.md)
180
+ - [Docs](./bootstrap/templates/docs-readme.md)
181
+ - [Luca Development Guide](./mcp/readme.md)
182
+ - [Code Audit](./prompts/audit-codebase-for-failures-to-use-the-container.md)
183
+ - [MCP Test: Build a Command](./prompts/mcp-test-easy-command.md)
184
+ - [Building a Client](./scaffolds/client.md)
185
+ - [Building a Command](./scaffolds/command.md)
186
+ - [Building an Endpoint](./scaffolds/endpoint.md)
187
+ - [Building a Feature](./scaffolds/feature.md)
188
+ - [Building a Server](./scaffolds/server.md)
@@ -1,6 +1,6 @@
1
1
  # ElevenLabsClient (clients.elevenlabs)
2
2
 
3
- No description provided
3
+ ElevenLabs client — text-to-speech synthesis via the ElevenLabs REST API. Provides methods for listing voices, listing models, and generating speech audio. Audio is returned as a Buffer; use `say()` for a convenience method that writes to disk.
4
4
 
5
5
  ## Usage
6
6
 
@@ -32,6 +32,157 @@ container.client('elevenlabs', {
32
32
  | `defaultModelId` | `string` | Default TTS model ID |
33
33
  | `outputFormat` | `string` | Audio output format (e.g. mp3_44100_128, pcm_16000) |
34
34
 
35
+ ## Methods
36
+
37
+ ### beforeRequest
38
+
39
+ Inject the xi-api-key header before each request.
40
+
41
+ **Returns:** `void`
42
+
43
+
44
+
45
+ ### connect
46
+
47
+ Validate the API key by listing available models.
48
+
49
+ **Returns:** `Promise<this>`
50
+
51
+ ```ts
52
+ await el.connect()
53
+ ```
54
+
55
+
56
+
57
+ ### listVoices
58
+
59
+ List available voices with optional search and filtering.
60
+
61
+ **Parameters:**
62
+
63
+ | Name | Type | Required | Description |
64
+ |------|------|----------|-------------|
65
+ | `options` | `{
66
+ search?: string
67
+ category?: string
68
+ voice_type?: string
69
+ page_size?: number
70
+ next_page_token?: string
71
+ }` | | Query parameters for filtering voices |
72
+
73
+ **Returns:** `Promise<any>`
74
+
75
+ ```ts
76
+ const voices = await el.listVoices()
77
+ const premade = await el.listVoices({ category: 'premade' })
78
+ ```
79
+
80
+
81
+
82
+ ### getVoice
83
+
84
+ Get details for a single voice.
85
+
86
+ **Parameters:**
87
+
88
+ | Name | Type | Required | Description |
89
+ |------|------|----------|-------------|
90
+ | `voiceId` | `string` | ✓ | The voice ID to look up |
91
+
92
+ **Returns:** `Promise<any>`
93
+
94
+ ```ts
95
+ const voice = await el.getVoice('21m00Tcm4TlvDq8ikWAM')
96
+ console.log(voice.name, voice.settings)
97
+ ```
98
+
99
+
100
+
101
+ ### listModels
102
+
103
+ List available TTS models.
104
+
105
+ **Returns:** `Promise<any[]>`
106
+
107
+ ```ts
108
+ const models = await el.listModels()
109
+ console.log(models.map(m => m.model_id))
110
+ ```
111
+
112
+
113
+
114
+ ### synthesize
115
+
116
+ Synthesize speech from text, returning audio as a Buffer.
117
+
118
+ **Parameters:**
119
+
120
+ | Name | Type | Required | Description |
121
+ |------|------|----------|-------------|
122
+ | `text` | `string` | ✓ | The text to convert to speech |
123
+ | `options` | `SynthesizeOptions` | | Voice, model, format, and voice settings overrides |
124
+
125
+ `SynthesizeOptions` properties:
126
+
127
+ | Property | Type | Description |
128
+ |----------|------|-------------|
129
+ | `voiceId` | `string` | |
130
+ | `modelId` | `string` | |
131
+ | `outputFormat` | `string` | |
132
+ | `voiceSettings` | `ElevenLabsVoiceSettings` | |
133
+ | `disableCache` | `boolean` | |
134
+
135
+ **Returns:** `Promise<Buffer>`
136
+
137
+ ```ts
138
+ const audio = await el.synthesize('Hello world')
139
+ // audio is a Buffer of mp3 data
140
+
141
+ const custom = await el.synthesize('Hello', {
142
+ voiceId: '21m00Tcm4TlvDq8ikWAM',
143
+ voiceSettings: { stability: 0.5, similarityBoost: 0.8 }
144
+ })
145
+ ```
146
+
147
+
148
+
149
+ ### say
150
+
151
+ Synthesize speech and write the audio to a file.
152
+
153
+ **Parameters:**
154
+
155
+ | Name | Type | Required | Description |
156
+ |------|------|----------|-------------|
157
+ | `text` | `string` | ✓ | The text to convert to speech |
158
+ | `outputPath` | `string` | ✓ | File path to write the audio to |
159
+ | `options` | `SynthesizeOptions` | | Voice, model, format, and voice settings overrides |
160
+
161
+ `SynthesizeOptions` properties:
162
+
163
+ | Property | Type | Description |
164
+ |----------|------|-------------|
165
+ | `voiceId` | `string` | |
166
+ | `modelId` | `string` | |
167
+ | `outputFormat` | `string` | |
168
+ | `voiceSettings` | `ElevenLabsVoiceSettings` | |
169
+ | `disableCache` | `boolean` | |
170
+
171
+ **Returns:** `Promise<string>`
172
+
173
+ ```ts
174
+ const path = await el.say('Hello world', './hello.mp3')
175
+ console.log(`Audio saved to ${path}`)
176
+ ```
177
+
178
+
179
+
180
+ ## Getters
181
+
182
+ | Property | Type | Description |
183
+ |----------|------|-------------|
184
+ | `apiKey` | `string` | The resolved API key from options or environment. |
185
+
35
186
  ## Events (Zod v4 schema)
36
187
 
37
188
  ### failure
@@ -46,27 +197,29 @@ Emitted when a request fails
46
197
 
47
198
 
48
199
 
49
- ### speech
200
+ ### voices
50
201
 
51
- Emitted after speech synthesis completes
202
+ Emitted after listing voices
52
203
 
53
204
  **Event Arguments:**
54
205
 
55
206
  | Name | Type | Description |
56
207
  |------|------|-------------|
57
- | `arg0` | `object` | |
208
+ | `arg0` | `array` | |
58
209
 
59
210
 
60
211
 
61
- ### voices
212
+ ### speech
62
213
 
63
- Emitted after listing voices
214
+ Emitted after speech synthesis completes
64
215
 
65
216
  **Event Arguments:**
66
217
 
67
218
  | Name | Type | Description |
68
219
  |------|------|-------------|
69
- | `arg0` | `array` | |
220
+ | `voiceId` | `string` | |
221
+ | `text` | `string` | |
222
+ | `audioSize` | `number` | |
70
223
 
71
224
 
72
225
 
@@ -81,4 +234,75 @@ Emitted after listing voices
81
234
 
82
235
  ## Environment Variables
83
236
 
84
- - `ELEVENLABS_API_KEY`
237
+ - `ELEVENLABS_API_KEY`
238
+
239
+ ## Examples
240
+
241
+ **clients.elevenlabs**
242
+
243
+ ```ts
244
+ const el = container.client('elevenlabs')
245
+ await el.connect()
246
+ const voices = await el.listVoices()
247
+ const audio = await el.synthesize('Hello world')
248
+ // audio is a Buffer of mp3 data
249
+ ```
250
+
251
+
252
+
253
+ **connect**
254
+
255
+ ```ts
256
+ await el.connect()
257
+ ```
258
+
259
+
260
+
261
+ **listVoices**
262
+
263
+ ```ts
264
+ const voices = await el.listVoices()
265
+ const premade = await el.listVoices({ category: 'premade' })
266
+ ```
267
+
268
+
269
+
270
+ **getVoice**
271
+
272
+ ```ts
273
+ const voice = await el.getVoice('21m00Tcm4TlvDq8ikWAM')
274
+ console.log(voice.name, voice.settings)
275
+ ```
276
+
277
+
278
+
279
+ **listModels**
280
+
281
+ ```ts
282
+ const models = await el.listModels()
283
+ console.log(models.map(m => m.model_id))
284
+ ```
285
+
286
+
287
+
288
+ **synthesize**
289
+
290
+ ```ts
291
+ const audio = await el.synthesize('Hello world')
292
+ // audio is a Buffer of mp3 data
293
+
294
+ const custom = await el.synthesize('Hello', {
295
+ voiceId: '21m00Tcm4TlvDq8ikWAM',
296
+ voiceSettings: { stability: 0.5, similarityBoost: 0.8 }
297
+ })
298
+ ```
299
+
300
+
301
+
302
+ **say**
303
+
304
+ ```ts
305
+ const path = await el.say('Hello world', './hello.mp3')
306
+ console.log(`Audio saved to ${path}`)
307
+ ```
308
+