@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.
- package/CLAUDE.md +10 -1
- package/bun.lock +1 -1
- package/commands/build-bootstrap.ts +78 -0
- package/commands/build-scaffolds.ts +24 -2
- package/commands/try-all-challenges.ts +543 -0
- package/commands/try-challenge.ts +100 -0
- package/docs/README.md +52 -80
- package/docs/TABLE-OF-CONTENTS.md +82 -51
- package/docs/apis/clients/elevenlabs.md +232 -8
- package/docs/apis/clients/graph.md +59 -8
- package/docs/apis/clients/openai.md +362 -2
- package/docs/apis/clients/rest.md +122 -2
- package/docs/apis/clients/websocket.md +71 -17
- package/docs/apis/features/agi/assistant.md +9 -3
- package/docs/apis/features/agi/assistants-manager.md +2 -2
- package/docs/apis/features/agi/claude-code.md +153 -14
- package/docs/apis/features/agi/conversation-history.md +15 -3
- package/docs/apis/features/agi/conversation.md +133 -20
- package/docs/apis/features/agi/openai-codex.md +90 -12
- package/docs/apis/features/agi/skills-library.md +23 -5
- package/docs/apis/features/node/container-link.md +59 -0
- package/docs/apis/features/node/content-db.md +1 -1
- package/docs/apis/features/node/disk-cache.md +1 -1
- package/docs/apis/features/node/dns.md +1 -0
- package/docs/apis/features/node/docker.md +2 -1
- package/docs/apis/features/node/esbuild.md +4 -3
- package/docs/apis/features/node/file-manager.md +13 -4
- package/docs/apis/features/node/fs.md +726 -171
- package/docs/apis/features/node/git.md +1 -0
- package/docs/apis/features/node/google-auth.md +23 -4
- package/docs/apis/features/node/google-calendar.md +14 -2
- package/docs/apis/features/node/google-docs.md +15 -2
- package/docs/apis/features/node/google-drive.md +21 -3
- package/docs/apis/features/node/google-sheets.md +14 -2
- package/docs/apis/features/node/grep.md +2 -0
- package/docs/apis/features/node/helpers.md +29 -0
- package/docs/apis/features/node/ink.md +2 -2
- package/docs/apis/features/node/networking.md +39 -4
- package/docs/apis/features/node/os.md +28 -0
- package/docs/apis/features/node/postgres.md +26 -4
- package/docs/apis/features/node/proc.md +37 -28
- package/docs/apis/features/node/process-manager.md +33 -5
- package/docs/apis/features/node/repl.md +1 -1
- package/docs/apis/features/node/runpod.md +1 -0
- package/docs/apis/features/node/secure-shell.md +7 -0
- package/docs/apis/features/node/semantic-search.md +12 -5
- package/docs/apis/features/node/sqlite.md +26 -4
- package/docs/apis/features/node/telegram.md +30 -5
- package/docs/apis/features/node/tts.md +17 -2
- package/docs/apis/features/node/ui.md +1 -1
- package/docs/apis/features/node/vault.md +4 -9
- package/docs/apis/features/node/vm.md +3 -12
- package/docs/apis/features/node/window-manager.md +128 -20
- package/docs/apis/features/web/asset-loader.md +13 -1
- package/docs/apis/features/web/container-link.md +59 -0
- package/docs/apis/features/web/esbuild.md +4 -3
- package/docs/apis/features/web/helpers.md +29 -0
- package/docs/apis/features/web/network.md +16 -2
- package/docs/apis/features/web/speech.md +16 -2
- package/docs/apis/features/web/vault.md +4 -9
- package/docs/apis/features/web/vm.md +3 -12
- package/docs/apis/features/web/voice.md +18 -1
- package/docs/apis/servers/express.md +18 -2
- package/docs/apis/servers/mcp.md +29 -4
- package/docs/apis/servers/websocket.md +34 -6
- package/docs/bootstrap/CLAUDE.md +100 -0
- package/docs/bootstrap/SKILL.md +222 -0
- package/docs/bootstrap/templates/about-command.ts +41 -0
- package/docs/bootstrap/templates/docs-models.ts +22 -0
- package/docs/bootstrap/templates/docs-readme.md +43 -0
- package/docs/bootstrap/templates/example-feature.ts +53 -0
- package/docs/bootstrap/templates/health-endpoint.ts +15 -0
- package/docs/bootstrap/templates/luca-cli.ts +25 -0
- package/docs/challenges/caching-proxy.md +16 -0
- package/docs/challenges/content-db-round-trip.md +14 -0
- package/docs/challenges/custom-command.md +9 -0
- package/docs/challenges/file-watcher-pipeline.md +11 -0
- package/docs/challenges/grep-audit-report.md +15 -0
- package/docs/challenges/multi-feature-dashboard.md +14 -0
- package/docs/challenges/process-orchestrator.md +17 -0
- package/docs/challenges/rest-api-server-with-client.md +12 -0
- package/docs/challenges/script-runner-with-vm.md +11 -0
- package/docs/challenges/simple-rest-api.md +15 -0
- package/docs/challenges/websocket-serve-and-client.md +11 -0
- package/docs/challenges/yaml-config-system.md +14 -0
- package/docs/command-system-overhaul.md +94 -0
- package/docs/examples/assistant/CORE.md +18 -0
- package/docs/examples/assistant/hooks.ts +3 -0
- package/docs/examples/assistant/tools.ts +10 -0
- package/docs/examples/window-manager-layouts.md +180 -0
- package/docs/in-memory-fs.md +4 -0
- package/docs/models.ts +13 -10
- package/docs/philosophy.md +4 -3
- package/docs/reports/console-hmr-design.md +170 -0
- package/docs/reports/helper-semantic-search.md +72 -0
- package/docs/scaffolds/client.md +29 -20
- package/docs/scaffolds/command.md +64 -50
- package/docs/scaffolds/endpoint.md +31 -36
- package/docs/scaffolds/feature.md +28 -18
- package/docs/scaffolds/selector.md +91 -0
- package/docs/scaffolds/server.md +18 -9
- package/docs/selectors.md +115 -0
- package/docs/sessions/custom-command/attempt-log-2.md +195 -0
- package/docs/sessions/file-watcher-pipeline/attempt-log-1.md +728 -0
- package/docs/sessions/file-watcher-pipeline/attempt-log-2.md +555 -0
- package/docs/sessions/grep-audit-report/attempt-log-1.md +289 -0
- package/docs/sessions/multi-feature-dashboard/attempt-log-2.md +679 -0
- package/docs/sessions/rest-api-server-with-client/attempt-log-1.md +1 -0
- package/docs/sessions/rest-api-server-with-client/attempt-log-3.md +920 -0
- package/docs/sessions/simple-rest-api/attempt-log-1.md +593 -0
- package/docs/sessions/websocket-serve-and-client/attempt-log-2.md +995 -0
- package/docs/tutorials/00-bootstrap.md +148 -0
- package/docs/tutorials/07-endpoints.md +7 -7
- package/docs/tutorials/08-commands.md +153 -72
- package/luca.cli.ts +3 -0
- package/package.json +6 -5
- package/public/index.html +1430 -0
- package/scripts/examples/using-ollama.ts +2 -1
- package/scripts/update-introspection-data.ts +2 -2
- package/src/agi/endpoints/experts.ts +1 -1
- package/src/agi/features/assistant.ts +7 -0
- package/src/agi/features/assistants-manager.ts +5 -5
- package/src/agi/features/claude-code.ts +263 -3
- package/src/agi/features/conversation-history.ts +7 -1
- package/src/agi/features/conversation.ts +26 -3
- package/src/agi/features/openai-codex.ts +26 -2
- package/src/agi/features/openapi.ts +6 -1
- package/src/agi/features/skills-library.ts +9 -1
- package/src/bootstrap/generated.ts +540 -0
- package/src/cli/cli.ts +64 -21
- package/src/client.ts +23 -357
- package/src/clients/civitai/index.ts +1 -1
- package/src/clients/client-template.ts +1 -1
- package/src/clients/comfyui/index.ts +13 -2
- package/src/clients/elevenlabs/index.ts +2 -1
- package/src/clients/graph.ts +87 -0
- package/src/clients/openai/index.ts +10 -1
- package/src/clients/rest.ts +207 -0
- package/src/clients/websocket.ts +176 -0
- package/src/command.ts +281 -34
- package/src/commands/bootstrap.ts +181 -0
- package/src/commands/chat.ts +5 -4
- package/src/commands/describe.ts +225 -2
- package/src/commands/help.ts +35 -9
- package/src/commands/index.ts +3 -0
- package/src/commands/introspect.ts +92 -2
- package/src/commands/prompt.ts +5 -6
- package/src/commands/run.ts +33 -10
- package/src/commands/save-api-docs.ts +49 -0
- package/src/commands/scaffold.ts +169 -23
- package/src/commands/select.ts +94 -0
- package/src/commands/serve.ts +10 -1
- package/src/container.ts +15 -0
- package/src/endpoint.ts +19 -0
- package/src/graft.ts +181 -0
- package/src/introspection/generated.agi.ts +12458 -8968
- package/src/introspection/generated.node.ts +10573 -7145
- package/src/introspection/generated.web.ts +1 -1
- package/src/introspection/index.ts +26 -0
- package/src/node/container.ts +6 -7
- package/src/node/features/content-db.ts +49 -2
- package/src/node/features/disk-cache.ts +16 -9
- package/src/node/features/dns.ts +16 -3
- package/src/node/features/docker.ts +16 -4
- package/src/node/features/esbuild.ts +20 -0
- package/src/node/features/file-manager.ts +184 -29
- package/src/node/features/fs.ts +704 -248
- package/src/node/features/git.ts +21 -8
- package/src/node/features/grep.ts +23 -3
- package/src/node/features/helpers.ts +372 -43
- package/src/node/features/networking.ts +39 -4
- package/src/node/features/opener.ts +28 -15
- package/src/node/features/os.ts +76 -0
- package/src/node/features/port-exposer.ts +11 -1
- package/src/node/features/postgres.ts +17 -1
- package/src/node/features/proc.ts +4 -1
- package/src/node/features/python.ts +63 -14
- package/src/node/features/repl.ts +11 -7
- package/src/node/features/runpod.ts +16 -3
- package/src/node/features/secure-shell.ts +27 -2
- package/src/node/features/semantic-search.ts +12 -1
- package/src/node/features/ui.ts +5 -69
- package/src/node/features/vm.ts +17 -0
- package/src/node/features/window-manager.ts +68 -20
- package/src/node.ts +5 -0
- package/src/scaffolds/generated.ts +492 -290
- package/src/scaffolds/template.ts +9 -0
- package/src/schemas/base.ts +46 -5
- package/src/selector.ts +282 -0
- package/src/server.ts +11 -0
- package/src/servers/express.ts +27 -12
- package/src/servers/socket.ts +45 -11
- package/src/web/clients/socket.ts +4 -1
- package/src/web/container.ts +2 -1
- package/src/web/features/network.ts +7 -1
- package/src/web/features/voice-recognition.ts +16 -1
- package/test/clients-servers.test.ts +2 -1
- package/test/command.test.ts +267 -0
- package/test-integration/assistants-manager.test.ts +10 -20
- package/tmp/.cache/luca-disk-cache/content-v2/sha512/1b/b5/c75b28794f00f94c4d609a98978e9420e9b7146d204a7fbf5b0b30477292581705d207c0100dabaac27eef540aaaece3374af75104a93219d4ec8bfb44e7 +1 -0
- package/tmp/.cache/luca-disk-cache/content-v2/sha512/da/df/1d90ce4e042abeb035a197832c6d6893420a747a056be773eb00e4f745a037d505c8db13dde7d36b36b6b893addbb7df0f5fe9f0c13e665f20056447318b +1 -0
- package/tmp/.cache/luca-disk-cache/content-v2/sha512/ed/04/e1d0c2a58c2db29b3921ca2affb3ea4febe831c53b38ebc21019fb799823aba6ed5b4611873d2cd25d422d49955b852a9c326da0d678899bc1c2c2960901 +1 -0
- package/tmp/.cache/luca-disk-cache/index-v5/00/13/572aa4c9a94f99eda999695d050cdd0ca7fe2d23a50af03234d4c8ce0791 +2 -0
- package/tmp/.cache/luca-disk-cache/index-v5/75/a9/cb61dc0f0589e8ec10a9aca27b834bc73884c479941042d22a2b22324cd3 +2 -0
- package/tmp/.cache/luca-disk-cache/index-v5/9f/0f/8b1f915ee64cfff7667dd96acd7a5ac0a96aa91a346e19cefd45909a9c9c +2 -0
- package/docs/apis/features/node/launcher-app-command-listener.md +0 -145
- package/docs/examples/launcher-app-command-listener.md +0 -120
- package/docs/tasks/web-container-helper-discovery.md +0 -71
- package/docs/todos.md +0 -1
- package/scripts/test-command-listener.ts +0 -123
- 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
|
-
|
|
3
|
+
## Overview
|
|
4
4
|
|
|
5
|
-
## Examples
|
|
6
5
|
|
|
7
|
-
**Prefix:** `examples`
|
|
8
6
|
|
|
9
|
-
|
|
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
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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
|
-
- [
|
|
6
|
-
- [
|
|
7
|
-
- [
|
|
8
|
-
- [
|
|
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
|
-
- [
|
|
27
|
+
- [File Manager](./examples/file-manager.md)
|
|
11
28
|
- [fs](./examples/fs.md)
|
|
12
29
|
- [git](./examples/git.md)
|
|
13
|
-
- [
|
|
14
|
-
- [
|
|
15
|
-
- [
|
|
16
|
-
- [
|
|
17
|
-
- [
|
|
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
|
-
- [
|
|
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
|
-
- [
|
|
23
|
-
- [
|
|
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
|
-
- [
|
|
27
|
-
- [
|
|
42
|
+
- [Natural Language Processing](./examples/nlp.md)
|
|
43
|
+
- [Opener](./examples/opener.md)
|
|
28
44
|
- [os](./examples/os.md)
|
|
29
|
-
- [
|
|
30
|
-
- [
|
|
31
|
-
- [
|
|
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
|
-
- [
|
|
34
|
-
- [
|
|
35
|
-
- [
|
|
36
|
-
- [
|
|
37
|
-
- [
|
|
38
|
-
- [
|
|
39
|
-
- [
|
|
40
|
-
- [
|
|
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
|
-
- [
|
|
58
|
+
- [Vault](./examples/vault.md)
|
|
43
59
|
- [vm](./examples/vm.md)
|
|
44
|
-
- [
|
|
45
|
-
- [
|
|
46
|
-
- [
|
|
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
|
|
151
|
-
- [
|
|
152
|
-
- [
|
|
153
|
-
- [
|
|
154
|
-
- [
|
|
155
|
-
- [
|
|
156
|
-
- [
|
|
157
|
-
- [
|
|
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
|
-
|
|
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
|
-
###
|
|
200
|
+
### voices
|
|
50
201
|
|
|
51
|
-
Emitted after
|
|
202
|
+
Emitted after listing voices
|
|
52
203
|
|
|
53
204
|
**Event Arguments:**
|
|
54
205
|
|
|
55
206
|
| Name | Type | Description |
|
|
56
207
|
|------|------|-------------|
|
|
57
|
-
| `arg0` | `
|
|
208
|
+
| `arg0` | `array` | |
|
|
58
209
|
|
|
59
210
|
|
|
60
211
|
|
|
61
|
-
###
|
|
212
|
+
### speech
|
|
62
213
|
|
|
63
|
-
Emitted after
|
|
214
|
+
Emitted after speech synthesis completes
|
|
64
215
|
|
|
65
216
|
**Event Arguments:**
|
|
66
217
|
|
|
67
218
|
| Name | Type | Description |
|
|
68
219
|
|------|------|-------------|
|
|
69
|
-
| `
|
|
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
|
+
|