@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.
- package/CLAUDE.md +71 -0
- package/README.md +78 -0
- package/bun.lock +2928 -0
- package/bunfig.toml +3 -0
- package/commands/audit-docs.ts +740 -0
- package/commands/build-scaffolds.ts +154 -0
- package/commands/generate-api-docs.ts +114 -0
- package/commands/update-introspection.ts +67 -0
- package/docs/CLI.md +335 -0
- package/docs/README.md +88 -0
- package/docs/TABLE-OF-CONTENTS.md +157 -0
- package/docs/apis/clients/elevenlabs.md +84 -0
- package/docs/apis/clients/graph.md +56 -0
- package/docs/apis/clients/openai.md +69 -0
- package/docs/apis/clients/rest.md +41 -0
- package/docs/apis/clients/websocket.md +107 -0
- package/docs/apis/features/agi/assistant.md +471 -0
- package/docs/apis/features/agi/assistants-manager.md +154 -0
- package/docs/apis/features/agi/claude-code.md +602 -0
- package/docs/apis/features/agi/conversation-history.md +352 -0
- package/docs/apis/features/agi/conversation.md +333 -0
- package/docs/apis/features/agi/docs-reader.md +121 -0
- package/docs/apis/features/agi/openai-codex.md +318 -0
- package/docs/apis/features/agi/openapi.md +138 -0
- package/docs/apis/features/agi/semantic-search.md +387 -0
- package/docs/apis/features/agi/skills-library.md +216 -0
- package/docs/apis/features/node/container-link.md +133 -0
- package/docs/apis/features/node/content-db.md +313 -0
- package/docs/apis/features/node/disk-cache.md +379 -0
- package/docs/apis/features/node/dns.md +651 -0
- package/docs/apis/features/node/docker.md +705 -0
- package/docs/apis/features/node/downloader.md +81 -0
- package/docs/apis/features/node/esbuild.md +59 -0
- package/docs/apis/features/node/file-manager.md +182 -0
- package/docs/apis/features/node/fs.md +581 -0
- package/docs/apis/features/node/git.md +330 -0
- package/docs/apis/features/node/google-auth.md +174 -0
- package/docs/apis/features/node/google-calendar.md +187 -0
- package/docs/apis/features/node/google-docs.md +151 -0
- package/docs/apis/features/node/google-drive.md +225 -0
- package/docs/apis/features/node/google-sheets.md +179 -0
- package/docs/apis/features/node/grep.md +290 -0
- package/docs/apis/features/node/helpers.md +135 -0
- package/docs/apis/features/node/ink.md +334 -0
- package/docs/apis/features/node/ipc-socket.md +260 -0
- package/docs/apis/features/node/json-tree.md +86 -0
- package/docs/apis/features/node/launcher-app-command-listener.md +145 -0
- package/docs/apis/features/node/networking.md +281 -0
- package/docs/apis/features/node/nlp.md +133 -0
- package/docs/apis/features/node/opener.md +97 -0
- package/docs/apis/features/node/os.md +118 -0
- package/docs/apis/features/node/package-finder.md +402 -0
- package/docs/apis/features/node/postgres.md +212 -0
- package/docs/apis/features/node/proc.md +430 -0
- package/docs/apis/features/node/process-manager.md +210 -0
- package/docs/apis/features/node/python.md +278 -0
- package/docs/apis/features/node/repl.md +88 -0
- package/docs/apis/features/node/runpod.md +673 -0
- package/docs/apis/features/node/secure-shell.md +169 -0
- package/docs/apis/features/node/semantic-search.md +401 -0
- package/docs/apis/features/node/sqlite.md +211 -0
- package/docs/apis/features/node/telegram.md +254 -0
- package/docs/apis/features/node/tts.md +118 -0
- package/docs/apis/features/node/ui.md +703 -0
- package/docs/apis/features/node/vault.md +64 -0
- package/docs/apis/features/node/vm.md +84 -0
- package/docs/apis/features/node/window-manager.md +337 -0
- package/docs/apis/features/node/yaml-tree.md +85 -0
- package/docs/apis/features/node/yaml.md +176 -0
- package/docs/apis/features/web/asset-loader.md +47 -0
- package/docs/apis/features/web/container-link.md +133 -0
- package/docs/apis/features/web/esbuild.md +59 -0
- package/docs/apis/features/web/helpers.md +135 -0
- package/docs/apis/features/web/network.md +30 -0
- package/docs/apis/features/web/speech.md +55 -0
- package/docs/apis/features/web/vault.md +64 -0
- package/docs/apis/features/web/vm.md +84 -0
- package/docs/apis/features/web/voice.md +67 -0
- package/docs/apis/servers/express.md +127 -0
- package/docs/apis/servers/mcp.md +213 -0
- package/docs/apis/servers/websocket.md +99 -0
- package/docs/documentation-audit.md +134 -0
- package/docs/examples/content-db.md +77 -0
- package/docs/examples/disk-cache.md +83 -0
- package/docs/examples/docker.md +101 -0
- package/docs/examples/downloader.md +70 -0
- package/docs/examples/esbuild.md +80 -0
- package/docs/examples/file-manager.md +82 -0
- package/docs/examples/fs.md +83 -0
- package/docs/examples/git.md +85 -0
- package/docs/examples/google-auth.md +88 -0
- package/docs/examples/google-calendar.md +94 -0
- package/docs/examples/google-docs.md +82 -0
- package/docs/examples/google-drive.md +96 -0
- package/docs/examples/google-sheets.md +95 -0
- package/docs/examples/grep.md +85 -0
- package/docs/examples/ink-blocks.md +75 -0
- package/docs/examples/ink-renderer.md +41 -0
- package/docs/examples/ink.md +103 -0
- package/docs/examples/ipc-socket.md +103 -0
- package/docs/examples/json-tree.md +91 -0
- package/docs/examples/launcher-app-command-listener.md +120 -0
- package/docs/examples/networking.md +58 -0
- package/docs/examples/nlp.md +91 -0
- package/docs/examples/opener.md +78 -0
- package/docs/examples/os.md +72 -0
- package/docs/examples/package-finder.md +89 -0
- package/docs/examples/port-exposer.md +89 -0
- package/docs/examples/postgres.md +91 -0
- package/docs/examples/proc.md +81 -0
- package/docs/examples/process-manager.md +79 -0
- package/docs/examples/python.md +91 -0
- package/docs/examples/repl.md +93 -0
- package/docs/examples/runpod.md +119 -0
- package/docs/examples/secure-shell.md +92 -0
- package/docs/examples/sqlite.md +86 -0
- package/docs/examples/telegram.md +77 -0
- package/docs/examples/tts.md +86 -0
- package/docs/examples/ui.md +80 -0
- package/docs/examples/vault.md +70 -0
- package/docs/examples/vm.md +86 -0
- package/docs/examples/window-manager.md +125 -0
- package/docs/examples/yaml-tree.md +93 -0
- package/docs/examples/yaml.md +104 -0
- package/docs/ideas/class-registration-refactor-possibilities.md +197 -0
- package/docs/ideas/container-use-api.md +9 -0
- package/docs/ideas/easy-auth-for-express-servers-and-luca-serve.md +0 -0
- package/docs/ideas/feature-stacks.md +22 -0
- package/docs/ideas/luca-cli-self-sufficiency-demo.md +23 -0
- package/docs/ideas/mcp-design.md +9 -0
- package/docs/ideas/web-container-debugging-feature.md +13 -0
- package/docs/introspection-audit.md +49 -0
- package/docs/introspection.md +154 -0
- package/docs/mcp/readme.md +162 -0
- package/docs/models.ts +38 -0
- package/docs/philosophy.md +85 -0
- package/docs/principles.md +7 -0
- package/docs/prompts/audit-codebase-for-failures-to-use-the-container.md +34 -0
- package/docs/prompts/mcp-test-easy-command.md +27 -0
- package/docs/reports/assistant-bugs.md +38 -0
- package/docs/reports/attach-pattern-usage.md +18 -0
- package/docs/reports/code-audit-results.md +391 -0
- package/docs/reports/introspection-audit-tasks.md +378 -0
- package/docs/reports/luca-mcp-improvements.md +128 -0
- package/docs/scaffolds/client.md +140 -0
- package/docs/scaffolds/command.md +106 -0
- package/docs/scaffolds/endpoint.md +176 -0
- package/docs/scaffolds/feature.md +148 -0
- package/docs/scaffolds/server.md +187 -0
- package/docs/tasks/web-container-helper-discovery.md +71 -0
- package/docs/todos.md +1 -0
- package/docs/tutorials/01-getting-started.md +106 -0
- package/docs/tutorials/02-container.md +210 -0
- package/docs/tutorials/03-scripts.md +194 -0
- package/docs/tutorials/04-features-overview.md +196 -0
- package/docs/tutorials/05-state-and-events.md +171 -0
- package/docs/tutorials/06-servers.md +157 -0
- package/docs/tutorials/07-endpoints.md +198 -0
- package/docs/tutorials/08-commands.md +171 -0
- package/docs/tutorials/09-clients.md +162 -0
- package/docs/tutorials/10-creating-features.md +198 -0
- package/docs/tutorials/11-contentbase.md +191 -0
- package/docs/tutorials/12-assistants.md +215 -0
- package/docs/tutorials/13-introspection.md +147 -0
- package/docs/tutorials/14-type-system.md +174 -0
- package/docs/tutorials/15-project-patterns.md +222 -0
- package/docs/tutorials/16-google-features.md +534 -0
- package/docs/tutorials/17-tui-blocks.md +530 -0
- package/docs/tutorials/18-semantic-search.md +334 -0
- package/index.ts +1 -0
- package/luca.console.ts +9 -0
- package/main.py +6 -0
- package/package.json +154 -0
- package/pyproject.toml +7 -0
- package/scripts/animations/chrome-glitch.ts +55 -0
- package/scripts/animations/index.ts +16 -0
- package/scripts/animations/neon-pulse.ts +64 -0
- package/scripts/animations/types.ts +6 -0
- package/scripts/build-web.ts +28 -0
- package/scripts/examples/ask-luca-expert.ts +42 -0
- package/scripts/examples/assistant-questions.ts +12 -0
- package/scripts/examples/excalidraw-expert.ts +75 -0
- package/scripts/examples/expert-chat.ts +0 -0
- package/scripts/examples/file-manager.ts +14 -0
- package/scripts/examples/ideas.ts +12 -0
- package/scripts/examples/interactive-chat.ts +20 -0
- package/scripts/examples/openai-tool-calls.ts +113 -0
- package/scripts/examples/opening-a-web-browser.ts +5 -0
- package/scripts/examples/telegram-bot.ts +79 -0
- package/scripts/examples/telegram-ink-ui.ts +302 -0
- package/scripts/examples/using-assistant-with-mcp.ts +560 -0
- package/scripts/examples/using-claude-code.ts +10 -0
- package/scripts/examples/using-contentdb.ts +35 -0
- package/scripts/examples/using-conversations.ts +35 -0
- package/scripts/examples/using-disk-cache.ts +10 -0
- package/scripts/examples/using-docker-shell.ts +75 -0
- package/scripts/examples/using-elevenlabs.ts +25 -0
- package/scripts/examples/using-google-calendar.ts +57 -0
- package/scripts/examples/using-google-docs.ts +74 -0
- package/scripts/examples/using-google-drive.ts +74 -0
- package/scripts/examples/using-google-sheets.ts +89 -0
- package/scripts/examples/using-nlp.ts +55 -0
- package/scripts/examples/using-ollama.ts +10 -0
- package/scripts/examples/using-openai-codex.ts +23 -0
- package/scripts/examples/using-postgres.ts +55 -0
- package/scripts/examples/using-runpod.ts +32 -0
- package/scripts/examples/using-tts.ts +40 -0
- package/scripts/examples/vm-loading-esm-modules.ts +16 -0
- package/scripts/scaffold.ts +391 -0
- package/scripts/scratch.ts +15 -0
- package/scripts/test-command-listener.ts +123 -0
- package/scripts/test-window-manager-lifecycle.ts +86 -0
- package/scripts/test-window-manager.ts +43 -0
- package/scripts/update-introspection-data.ts +58 -0
- package/src/agi/README.md +14 -0
- package/src/agi/container.server.ts +114 -0
- package/src/agi/endpoints/ask.ts +60 -0
- package/src/agi/endpoints/conversations/[id].ts +45 -0
- package/src/agi/endpoints/conversations.ts +31 -0
- package/src/agi/endpoints/experts.ts +37 -0
- package/src/agi/features/assistant.ts +767 -0
- package/src/agi/features/assistants-manager.ts +260 -0
- package/src/agi/features/claude-code.ts +1111 -0
- package/src/agi/features/conversation-history.ts +497 -0
- package/src/agi/features/conversation.ts +799 -0
- package/src/agi/features/openai-codex.ts +631 -0
- package/src/agi/features/openapi.ts +438 -0
- package/src/agi/features/skills-library.ts +425 -0
- package/src/agi/index.ts +6 -0
- package/src/agi/lib/token-counter.ts +122 -0
- package/src/browser.ts +25 -0
- package/src/bus.ts +100 -0
- package/src/cli/cli.ts +70 -0
- package/src/client.ts +461 -0
- package/src/clients/civitai/index.ts +541 -0
- package/src/clients/client-template.ts +41 -0
- package/src/clients/comfyui/index.ts +597 -0
- package/src/clients/elevenlabs/index.ts +291 -0
- package/src/clients/openai/index.ts +451 -0
- package/src/clients/supabase/index.ts +366 -0
- package/src/command.ts +164 -0
- package/src/commands/chat.ts +182 -0
- package/src/commands/console.ts +192 -0
- package/src/commands/describe.ts +433 -0
- package/src/commands/eval.ts +116 -0
- package/src/commands/help.ts +214 -0
- package/src/commands/index.ts +14 -0
- package/src/commands/mcp.ts +64 -0
- package/src/commands/prompt.ts +807 -0
- package/src/commands/run.ts +257 -0
- package/src/commands/sandbox-mcp.ts +439 -0
- package/src/commands/scaffold.ts +79 -0
- package/src/commands/serve.ts +172 -0
- package/src/container.ts +781 -0
- package/src/endpoint.ts +340 -0
- package/src/feature.ts +75 -0
- package/src/hash-object.ts +97 -0
- package/src/helper.ts +543 -0
- package/src/introspection/generated.agi.ts +23388 -0
- package/src/introspection/generated.node.ts +18899 -0
- package/src/introspection/generated.web.ts +2021 -0
- package/src/introspection/index.ts +256 -0
- package/src/introspection/scan.ts +912 -0
- package/src/node/container.ts +354 -0
- package/src/node/feature.ts +13 -0
- package/src/node/features/container-link.ts +558 -0
- package/src/node/features/content-db.ts +475 -0
- package/src/node/features/disk-cache.ts +382 -0
- package/src/node/features/dns.ts +655 -0
- package/src/node/features/docker.ts +912 -0
- package/src/node/features/downloader.ts +92 -0
- package/src/node/features/esbuild.ts +68 -0
- package/src/node/features/file-manager.ts +357 -0
- package/src/node/features/fs.ts +534 -0
- package/src/node/features/git.ts +492 -0
- package/src/node/features/google-auth.ts +502 -0
- package/src/node/features/google-calendar.ts +300 -0
- package/src/node/features/google-docs.ts +404 -0
- package/src/node/features/google-drive.ts +339 -0
- package/src/node/features/google-sheets.ts +279 -0
- package/src/node/features/grep.ts +406 -0
- package/src/node/features/helpers.ts +374 -0
- package/src/node/features/ink.ts +490 -0
- package/src/node/features/ipc-socket.ts +459 -0
- package/src/node/features/json-tree.ts +188 -0
- package/src/node/features/launcher-app-command-listener.ts +388 -0
- package/src/node/features/networking.ts +925 -0
- package/src/node/features/nlp.ts +211 -0
- package/src/node/features/opener.ts +166 -0
- package/src/node/features/os.ts +157 -0
- package/src/node/features/package-finder.ts +539 -0
- package/src/node/features/port-exposer.ts +342 -0
- package/src/node/features/postgres.ts +273 -0
- package/src/node/features/proc.ts +502 -0
- package/src/node/features/process-manager.ts +542 -0
- package/src/node/features/python.ts +444 -0
- package/src/node/features/repl.ts +194 -0
- package/src/node/features/runpod.ts +802 -0
- package/src/node/features/secure-shell.ts +248 -0
- package/src/node/features/semantic-search.ts +924 -0
- package/src/node/features/sqlite.ts +289 -0
- package/src/node/features/telegram.ts +342 -0
- package/src/node/features/tts.ts +184 -0
- package/src/node/features/ui.ts +857 -0
- package/src/node/features/vault.ts +164 -0
- package/src/node/features/vm.ts +312 -0
- package/src/node/features/window-manager.ts +804 -0
- package/src/node/features/yaml-tree.ts +149 -0
- package/src/node/features/yaml.ts +132 -0
- package/src/node.ts +70 -0
- package/src/react/index.ts +175 -0
- package/src/registry.ts +199 -0
- package/src/scaffolds/generated.ts +1613 -0
- package/src/scaffolds/template.ts +37 -0
- package/src/schemas/base.ts +255 -0
- package/src/server.ts +135 -0
- package/src/servers/express.ts +209 -0
- package/src/servers/mcp.ts +805 -0
- package/src/servers/socket.ts +120 -0
- package/src/state.ts +101 -0
- package/src/web/clients/socket.ts +82 -0
- package/src/web/container.ts +74 -0
- package/src/web/extension.ts +30 -0
- package/src/web/feature.ts +12 -0
- package/src/web/features/asset-loader.ts +64 -0
- package/src/web/features/container-link.ts +385 -0
- package/src/web/features/esbuild.ts +79 -0
- package/src/web/features/helpers.ts +267 -0
- package/src/web/features/network.ts +61 -0
- package/src/web/features/speech.ts +87 -0
- package/src/web/features/vault.ts +189 -0
- package/src/web/features/vm.ts +78 -0
- package/src/web/features/voice-recognition.ts +129 -0
- package/src/web/shims/isomorphic-vm.ts +149 -0
- package/test/bus.test.ts +134 -0
- package/test/clients-servers.test.ts +216 -0
- package/test/container-link.test.ts +274 -0
- package/test/features.test.ts +160 -0
- package/test/integration.test.ts +787 -0
- package/test/node-container.test.ts +121 -0
- package/test/rate-limit.test.ts +272 -0
- package/test/semantic-search.test.ts +550 -0
- package/test/state.test.ts +121 -0
- package/test-integration/assistant.test.ts +138 -0
- package/test-integration/assistants-manager.test.ts +123 -0
- package/test-integration/claude-code.test.ts +98 -0
- package/test-integration/conversation-history.test.ts +205 -0
- package/test-integration/conversation.test.ts +137 -0
- package/test-integration/elevenlabs.test.ts +55 -0
- package/test-integration/google-services.test.ts +80 -0
- package/test-integration/helpers.ts +89 -0
- package/test-integration/openai-codex.test.ts +93 -0
- package/test-integration/runpod.test.ts +58 -0
- package/test-integration/server-endpoints.test.ts +97 -0
- package/test-integration/skills-library.test.ts +157 -0
- package/test-integration/telegram.test.ts +46 -0
- package/tsconfig.json +58 -0
- package/uv.lock +8 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# WebVault (features.vault)
|
|
2
|
+
|
|
3
|
+
WebVault helper
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
container.feature('vault')
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Methods
|
|
12
|
+
|
|
13
|
+
### secret
|
|
14
|
+
|
|
15
|
+
**Parameters:**
|
|
16
|
+
|
|
17
|
+
| Name | Type | Required | Description |
|
|
18
|
+
|------|------|----------|-------------|
|
|
19
|
+
| `{ refresh = false, set = true }` | `any` | | Parameter { refresh = false, set = true } |
|
|
20
|
+
|
|
21
|
+
**Returns:** `Promise<ArrayBuffer>`
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### decrypt
|
|
26
|
+
|
|
27
|
+
**Parameters:**
|
|
28
|
+
|
|
29
|
+
| Name | Type | Required | Description |
|
|
30
|
+
|------|------|----------|-------------|
|
|
31
|
+
| `payload` | `string` | ✓ | Parameter payload |
|
|
32
|
+
|
|
33
|
+
**Returns:** `void`
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
### encrypt
|
|
38
|
+
|
|
39
|
+
**Parameters:**
|
|
40
|
+
|
|
41
|
+
| Name | Type | Required | Description |
|
|
42
|
+
|------|------|----------|-------------|
|
|
43
|
+
| `payload` | `string` | ✓ | Parameter payload |
|
|
44
|
+
|
|
45
|
+
**Returns:** `void`
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
## Examples
|
|
50
|
+
|
|
51
|
+
**features.vault**
|
|
52
|
+
|
|
53
|
+
```ts
|
|
54
|
+
const vault = container.feature('vault')
|
|
55
|
+
|
|
56
|
+
// Encrypt sensitive data
|
|
57
|
+
const encrypted = vault.encrypt('sensitive information')
|
|
58
|
+
console.log(encrypted) // Base64 encoded encrypted data
|
|
59
|
+
|
|
60
|
+
// Decrypt the data
|
|
61
|
+
const decrypted = vault.decrypt(encrypted)
|
|
62
|
+
console.log(decrypted) // 'sensitive information'
|
|
63
|
+
```
|
|
64
|
+
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# VM (features.vm)
|
|
2
|
+
|
|
3
|
+
The VM features providers a virtual machine for executing JavaScript code in a sandboxed environment. The Vm feature automatically injects the container.context object into the global scope, so these things can be referenced in the code and the code can use anything provided by the container.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
container.feature('vm', {
|
|
9
|
+
// Default context object to inject into the VM execution environment
|
|
10
|
+
context,
|
|
11
|
+
})
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Options (Zod v4 schema)
|
|
15
|
+
|
|
16
|
+
| Property | Type | Description |
|
|
17
|
+
|----------|------|-------------|
|
|
18
|
+
| `context` | `any` | Default context object to inject into the VM execution environment |
|
|
19
|
+
|
|
20
|
+
## Methods
|
|
21
|
+
|
|
22
|
+
### createScript
|
|
23
|
+
|
|
24
|
+
**Parameters:**
|
|
25
|
+
|
|
26
|
+
| Name | Type | Required | Description |
|
|
27
|
+
|------|------|----------|-------------|
|
|
28
|
+
| `code` | `string` | ✓ | Parameter code |
|
|
29
|
+
|
|
30
|
+
**Returns:** `void`
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
### createContext
|
|
35
|
+
|
|
36
|
+
**Parameters:**
|
|
37
|
+
|
|
38
|
+
| Name | Type | Required | Description |
|
|
39
|
+
|------|------|----------|-------------|
|
|
40
|
+
| `ctx` | `any` | | Parameter ctx |
|
|
41
|
+
|
|
42
|
+
**Returns:** `void`
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
### run
|
|
47
|
+
|
|
48
|
+
**Parameters:**
|
|
49
|
+
|
|
50
|
+
| Name | Type | Required | Description |
|
|
51
|
+
|------|------|----------|-------------|
|
|
52
|
+
| `code` | `string` | ✓ | Parameter code |
|
|
53
|
+
| `ctx` | `any` | | Parameter ctx |
|
|
54
|
+
| `options` | `any` | | Parameter options |
|
|
55
|
+
|
|
56
|
+
**Returns:** `void`
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
## State (Zod v4 schema)
|
|
61
|
+
|
|
62
|
+
| Property | Type | Description |
|
|
63
|
+
|----------|------|-------------|
|
|
64
|
+
| `enabled` | `boolean` | Whether this feature is currently enabled |
|
|
65
|
+
|
|
66
|
+
## Examples
|
|
67
|
+
|
|
68
|
+
**features.vm**
|
|
69
|
+
|
|
70
|
+
```ts
|
|
71
|
+
const vm = container.feature('vm')
|
|
72
|
+
|
|
73
|
+
// Execute simple code
|
|
74
|
+
const result = vm.run('1 + 2 + 3')
|
|
75
|
+
console.log(result) // 6
|
|
76
|
+
|
|
77
|
+
// Execute code with custom context
|
|
78
|
+
const result2 = vm.run('greeting + " " + name', {
|
|
79
|
+
greeting: 'Hello',
|
|
80
|
+
name: 'World'
|
|
81
|
+
})
|
|
82
|
+
console.log(result2) // 'Hello World'
|
|
83
|
+
```
|
|
84
|
+
|
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
# WindowManager (features.windowManager)
|
|
2
|
+
|
|
3
|
+
WindowManager Feature — Native window control via LucaVoiceLauncher Acts as an IPC server that the native macOS launcher app connects to. Communicates over a Unix domain socket using NDJSON (newline-delimited JSON). **Protocol:** - Bun listens on a Unix domain socket; the native app connects as a client - Window dispatch commands are sent as NDJSON with a `window` field - The app executes window commands and sends back `windowAck` messages - Any non-windowAck message from the app is emitted as a `message` event - Other features can use `send()` to write arbitrary NDJSON to the app **Capabilities:** - Spawn native browser windows with configurable chrome - Navigate, focus, close, and eval JavaScript in windows - Automatic socket file cleanup and fallback paths
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
container.feature('windowManager', {
|
|
9
|
+
// Path to the Unix domain socket the server listens on
|
|
10
|
+
socketPath,
|
|
11
|
+
// Automatically start listening when the feature is enabled
|
|
12
|
+
autoListen,
|
|
13
|
+
// Per-request timeout in milliseconds for window operations
|
|
14
|
+
requestTimeoutMs,
|
|
15
|
+
})
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Options (Zod v4 schema)
|
|
19
|
+
|
|
20
|
+
| Property | Type | Description |
|
|
21
|
+
|----------|------|-------------|
|
|
22
|
+
| `socketPath` | `string` | Path to the Unix domain socket the server listens on |
|
|
23
|
+
| `autoListen` | `boolean` | Automatically start listening when the feature is enabled |
|
|
24
|
+
| `requestTimeoutMs` | `number` | Per-request timeout in milliseconds for window operations |
|
|
25
|
+
|
|
26
|
+
## Methods
|
|
27
|
+
|
|
28
|
+
### enable
|
|
29
|
+
|
|
30
|
+
**Parameters:**
|
|
31
|
+
|
|
32
|
+
| Name | Type | Required | Description |
|
|
33
|
+
|------|------|----------|-------------|
|
|
34
|
+
| `options` | `any` | | Parameter options |
|
|
35
|
+
|
|
36
|
+
**Returns:** `Promise<this>`
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
### listen
|
|
41
|
+
|
|
42
|
+
Start listening on the Unix domain socket for the native app to connect. Fire-and-forget — binds the socket and returns immediately. Sits quietly until the native app connects; does nothing visible if it never does.
|
|
43
|
+
|
|
44
|
+
**Parameters:**
|
|
45
|
+
|
|
46
|
+
| Name | Type | Required | Description |
|
|
47
|
+
|------|------|----------|-------------|
|
|
48
|
+
| `socketPath` | `string` | | Override the configured socket path |
|
|
49
|
+
|
|
50
|
+
**Returns:** `this`
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
### stop
|
|
55
|
+
|
|
56
|
+
Stop the IPC server and clean up all connections. Rejects any pending window operation requests.
|
|
57
|
+
|
|
58
|
+
**Returns:** `Promise<this>`
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
### spawn
|
|
63
|
+
|
|
64
|
+
Spawn a new native browser window. Sends a window dispatch to the app and waits for the ack.
|
|
65
|
+
|
|
66
|
+
**Parameters:**
|
|
67
|
+
|
|
68
|
+
| Name | Type | Required | Description |
|
|
69
|
+
|------|------|----------|-------------|
|
|
70
|
+
| `opts` | `SpawnOptions` | | Window configuration (url, dimensions, chrome options) |
|
|
71
|
+
|
|
72
|
+
`SpawnOptions` properties:
|
|
73
|
+
|
|
74
|
+
| Property | Type | Description |
|
|
75
|
+
|----------|------|-------------|
|
|
76
|
+
| `url` | `string` | |
|
|
77
|
+
| `width` | `number` | |
|
|
78
|
+
| `height` | `number` | |
|
|
79
|
+
| `x` | `number` | |
|
|
80
|
+
| `y` | `number` | |
|
|
81
|
+
| `alwaysOnTop` | `boolean` | |
|
|
82
|
+
| `window` | `{
|
|
83
|
+
decorations?: 'normal' | 'hiddenTitleBar' | 'none'
|
|
84
|
+
transparent?: boolean
|
|
85
|
+
shadow?: boolean
|
|
86
|
+
alwaysOnTop?: boolean
|
|
87
|
+
opacity?: number
|
|
88
|
+
clickThrough?: boolean
|
|
89
|
+
}` | |
|
|
90
|
+
|
|
91
|
+
**Returns:** `Promise<WindowAckResult>`
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
### spawnTTY
|
|
96
|
+
|
|
97
|
+
Spawn a native terminal window running a command. The terminal is read-only — stdout/stderr are rendered with ANSI support. Closing the window terminates the process.
|
|
98
|
+
|
|
99
|
+
**Parameters:**
|
|
100
|
+
|
|
101
|
+
| Name | Type | Required | Description |
|
|
102
|
+
|------|------|----------|-------------|
|
|
103
|
+
| `opts` | `SpawnTTYOptions` | ✓ | Terminal configuration (command, args, cwd, dimensions, etc.) |
|
|
104
|
+
|
|
105
|
+
`SpawnTTYOptions` properties:
|
|
106
|
+
|
|
107
|
+
| Property | Type | Description |
|
|
108
|
+
|----------|------|-------------|
|
|
109
|
+
| `command` | `string` | Executable name or path (required). |
|
|
110
|
+
| `args` | `string[]` | Arguments passed after the command. |
|
|
111
|
+
| `cwd` | `string` | Working directory for the process. |
|
|
112
|
+
| `env` | `Record<string, string>` | Environment variable overrides. |
|
|
113
|
+
| `cols` | `number` | Initial terminal columns. |
|
|
114
|
+
| `rows` | `number` | Initial terminal rows. |
|
|
115
|
+
| `title` | `string` | Window title. |
|
|
116
|
+
| `width` | `number` | Window width in points. |
|
|
117
|
+
| `height` | `number` | Window height in points. |
|
|
118
|
+
| `x` | `number` | Window x position. |
|
|
119
|
+
| `y` | `number` | Window y position. |
|
|
120
|
+
| `window` | `SpawnOptions['window']` | Chrome options (decorations, alwaysOnTop, etc.) |
|
|
121
|
+
|
|
122
|
+
**Returns:** `Promise<WindowAckResult>`
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
### focus
|
|
127
|
+
|
|
128
|
+
Bring a window to the front.
|
|
129
|
+
|
|
130
|
+
**Parameters:**
|
|
131
|
+
|
|
132
|
+
| Name | Type | Required | Description |
|
|
133
|
+
|------|------|----------|-------------|
|
|
134
|
+
| `windowId` | `string` | | The window ID. If omitted, the app uses the most recent window. |
|
|
135
|
+
|
|
136
|
+
**Returns:** `Promise<WindowAckResult>`
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
### close
|
|
141
|
+
|
|
142
|
+
Close a window.
|
|
143
|
+
|
|
144
|
+
**Parameters:**
|
|
145
|
+
|
|
146
|
+
| Name | Type | Required | Description |
|
|
147
|
+
|------|------|----------|-------------|
|
|
148
|
+
| `windowId` | `string` | | The window ID. If omitted, the app closes the most recent window. |
|
|
149
|
+
|
|
150
|
+
**Returns:** `Promise<WindowAckResult>`
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
### navigate
|
|
155
|
+
|
|
156
|
+
Navigate a window to a new URL.
|
|
157
|
+
|
|
158
|
+
**Parameters:**
|
|
159
|
+
|
|
160
|
+
| Name | Type | Required | Description |
|
|
161
|
+
|------|------|----------|-------------|
|
|
162
|
+
| `windowId` | `string` | ✓ | The window ID |
|
|
163
|
+
| `url` | `string` | ✓ | The URL to navigate to |
|
|
164
|
+
|
|
165
|
+
**Returns:** `Promise<WindowAckResult>`
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
### eval
|
|
170
|
+
|
|
171
|
+
Evaluate JavaScript in a window's web view.
|
|
172
|
+
|
|
173
|
+
**Parameters:**
|
|
174
|
+
|
|
175
|
+
| Name | Type | Required | Description |
|
|
176
|
+
|------|------|----------|-------------|
|
|
177
|
+
| `windowId` | `string` | ✓ | The window ID |
|
|
178
|
+
| `code` | `string` | ✓ | JavaScript code to evaluate |
|
|
179
|
+
| `opts` | `{ timeoutMs?: number; returnJson?: boolean }` | | timeoutMs (default 5000), returnJson (default true) |
|
|
180
|
+
|
|
181
|
+
**Returns:** `Promise<WindowAckResult>`
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
### screengrab
|
|
186
|
+
|
|
187
|
+
Capture a PNG screenshot from a window.
|
|
188
|
+
|
|
189
|
+
**Parameters:**
|
|
190
|
+
|
|
191
|
+
| Name | Type | Required | Description |
|
|
192
|
+
|------|------|----------|-------------|
|
|
193
|
+
| `opts` | `WindowScreenGrabOptions` | ✓ | Window target and output path |
|
|
194
|
+
|
|
195
|
+
`WindowScreenGrabOptions` properties:
|
|
196
|
+
|
|
197
|
+
| Property | Type | Description |
|
|
198
|
+
|----------|------|-------------|
|
|
199
|
+
| `windowId` | `string` | Window ID. If omitted, the launcher uses the most recent window. |
|
|
200
|
+
| `path` | `string` | Output file path for the PNG image. |
|
|
201
|
+
|
|
202
|
+
**Returns:** `Promise<WindowAckResult>`
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
### video
|
|
207
|
+
|
|
208
|
+
Record a video from a window to disk.
|
|
209
|
+
|
|
210
|
+
**Parameters:**
|
|
211
|
+
|
|
212
|
+
| Name | Type | Required | Description |
|
|
213
|
+
|------|------|----------|-------------|
|
|
214
|
+
| `opts` | `WindowVideoOptions` | ✓ | Window target, output path, and optional duration |
|
|
215
|
+
|
|
216
|
+
`WindowVideoOptions` properties:
|
|
217
|
+
|
|
218
|
+
| Property | Type | Description |
|
|
219
|
+
|----------|------|-------------|
|
|
220
|
+
| `windowId` | `string` | Window ID. If omitted, the launcher uses the most recent window. |
|
|
221
|
+
| `path` | `string` | Output file path for the video file. |
|
|
222
|
+
| `durationMs` | `number` | Recording duration in milliseconds. |
|
|
223
|
+
|
|
224
|
+
**Returns:** `Promise<WindowAckResult>`
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
### window
|
|
229
|
+
|
|
230
|
+
Get a WindowHandle for chainable operations on a specific window.
|
|
231
|
+
|
|
232
|
+
**Parameters:**
|
|
233
|
+
|
|
234
|
+
| Name | Type | Required | Description |
|
|
235
|
+
|------|------|----------|-------------|
|
|
236
|
+
| `windowId` | `string` | ✓ | The window ID |
|
|
237
|
+
|
|
238
|
+
**Returns:** `WindowHandle`
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
### send
|
|
243
|
+
|
|
244
|
+
Write an NDJSON message to the connected app client. Public so other features can send arbitrary protocol messages over the same socket.
|
|
245
|
+
|
|
246
|
+
**Parameters:**
|
|
247
|
+
|
|
248
|
+
| Name | Type | Required | Description |
|
|
249
|
+
|------|------|----------|-------------|
|
|
250
|
+
| `msg` | `Record<string, any>` | ✓ | The message object to send (will be JSON-serialized + newline) |
|
|
251
|
+
|
|
252
|
+
**Returns:** `boolean`
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
## Getters
|
|
257
|
+
|
|
258
|
+
| Property | Type | Description |
|
|
259
|
+
|----------|------|-------------|
|
|
260
|
+
| `isListening` | `boolean` | Whether the IPC server is currently listening. |
|
|
261
|
+
| `isClientConnected` | `boolean` | Whether the native app client is currently connected. |
|
|
262
|
+
|
|
263
|
+
## Events (Zod v4 schema)
|
|
264
|
+
|
|
265
|
+
### listening
|
|
266
|
+
|
|
267
|
+
Event emitted by WindowManager
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
### clientConnected
|
|
272
|
+
|
|
273
|
+
Event emitted by WindowManager
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
### clientDisconnected
|
|
278
|
+
|
|
279
|
+
Event emitted by WindowManager
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
### windowAck
|
|
284
|
+
|
|
285
|
+
Event emitted by WindowManager
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
### windowClosed
|
|
290
|
+
|
|
291
|
+
Event emitted by WindowManager
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
### terminalExited
|
|
296
|
+
|
|
297
|
+
Event emitted by WindowManager
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
### message
|
|
302
|
+
|
|
303
|
+
Event emitted by WindowManager
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
## State (Zod v4 schema)
|
|
308
|
+
|
|
309
|
+
| Property | Type | Description |
|
|
310
|
+
|----------|------|-------------|
|
|
311
|
+
| `enabled` | `boolean` | Whether this feature is currently enabled |
|
|
312
|
+
| `listening` | `boolean` | Whether the IPC server is listening |
|
|
313
|
+
| `clientConnected` | `boolean` | Whether the native launcher app is connected |
|
|
314
|
+
| `socketPath` | `string` | The socket path in use |
|
|
315
|
+
| `windowCount` | `number` | Number of tracked windows |
|
|
316
|
+
| `lastError` | `string` | Last error message |
|
|
317
|
+
|
|
318
|
+
## Examples
|
|
319
|
+
|
|
320
|
+
**features.windowManager**
|
|
321
|
+
|
|
322
|
+
```ts
|
|
323
|
+
const wm = container.feature('windowManager', { enable: true, autoListen: true })
|
|
324
|
+
|
|
325
|
+
const result = await wm.spawn({ url: 'https://google.com', width: 800, height: 600 })
|
|
326
|
+
const handle = wm.window(result.windowId)
|
|
327
|
+
await handle.navigate('https://news.ycombinator.com')
|
|
328
|
+
const title = await handle.eval('document.title')
|
|
329
|
+
await handle.close()
|
|
330
|
+
|
|
331
|
+
// Other features can listen for non-window messages
|
|
332
|
+
wm.on('message', (msg) => console.log('App says:', msg))
|
|
333
|
+
|
|
334
|
+
// Other features can write raw NDJSON to the app
|
|
335
|
+
wm.send({ id: 'abc', status: 'processing', speech: 'Working on it' })
|
|
336
|
+
```
|
|
337
|
+
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# YamlTree (features.yamlTree)
|
|
2
|
+
|
|
3
|
+
YamlTree Feature - A powerful YAML file tree loader and processor This feature provides functionality to recursively load YAML files from a directory structure and build a hierarchical tree representation. It automatically processes file paths to create a nested object structure where file paths become object property paths. **Key Features:** - Recursive YAML file discovery in directory trees - Automatic path-to-property mapping using camelCase conversion - Integration with FileManager for efficient file operations - State-based tree storage and retrieval - Support for both .yml and .yaml file extensions
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
container.feature('yamlTree')
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Methods
|
|
12
|
+
|
|
13
|
+
### loadTree
|
|
14
|
+
|
|
15
|
+
Loads a tree of YAML files from the specified base path and stores them in state. This method recursively scans the provided directory for YAML files (.yml and .yaml), processes their content, and builds a hierarchical object structure. File paths are converted to camelCase property names, and the resulting tree is stored in the feature's state. **Path Processing:** - Removes the base path prefix from file paths - Converts directory/file names to camelCase - Creates nested objects based on directory structure - Removes file extensions (.yml/.yaml) **Example:** ``` config/ database/ production.yml -> tree.config.database.production staging.yml -> tree.config.database.staging api/ endpoints.yaml -> tree.config.api.endpoints ```
|
|
16
|
+
|
|
17
|
+
**Parameters:**
|
|
18
|
+
|
|
19
|
+
| Name | Type | Required | Description |
|
|
20
|
+
|------|------|----------|-------------|
|
|
21
|
+
| `basePath` | `string` | ✓ | The root directory path to scan for YAML files |
|
|
22
|
+
| `key` | `string` | | The key to store the tree under in state (defaults to first segment of basePath) |
|
|
23
|
+
|
|
24
|
+
**Returns:** `void`
|
|
25
|
+
|
|
26
|
+
```ts
|
|
27
|
+
// Load all YAML files from 'config' directory into state.config
|
|
28
|
+
await yamlTree.loadTree('config');
|
|
29
|
+
|
|
30
|
+
// Load with custom key
|
|
31
|
+
await yamlTree.loadTree('app/settings', 'appSettings');
|
|
32
|
+
|
|
33
|
+
// Access the loaded data
|
|
34
|
+
const dbConfig = yamlTree.tree.config.database.production;
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
## Getters
|
|
40
|
+
|
|
41
|
+
| Property | Type | Description |
|
|
42
|
+
|----------|------|-------------|
|
|
43
|
+
| `tree` | `any` | Gets the current tree data, excluding the 'enabled' state property. Returns a clean copy of the tree data without internal state management properties. This provides access to only the YAML tree data that has been loaded. |
|
|
44
|
+
|
|
45
|
+
## State (Zod v4 schema)
|
|
46
|
+
|
|
47
|
+
| Property | Type | Description |
|
|
48
|
+
|----------|------|-------------|
|
|
49
|
+
| `enabled` | `boolean` | Whether this feature is currently enabled |
|
|
50
|
+
|
|
51
|
+
## Examples
|
|
52
|
+
|
|
53
|
+
**features.yamlTree**
|
|
54
|
+
|
|
55
|
+
```ts
|
|
56
|
+
const yamlTree = container.feature('yamlTree', { enable: true });
|
|
57
|
+
await yamlTree.loadTree('config', 'appConfig');
|
|
58
|
+
const configData = yamlTree.tree.appConfig;
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
**loadTree**
|
|
64
|
+
|
|
65
|
+
```ts
|
|
66
|
+
// Load all YAML files from 'config' directory into state.config
|
|
67
|
+
await yamlTree.loadTree('config');
|
|
68
|
+
|
|
69
|
+
// Load with custom key
|
|
70
|
+
await yamlTree.loadTree('app/settings', 'appSettings');
|
|
71
|
+
|
|
72
|
+
// Access the loaded data
|
|
73
|
+
const dbConfig = yamlTree.tree.config.database.production;
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
**tree**
|
|
79
|
+
|
|
80
|
+
```ts
|
|
81
|
+
await yamlTree.loadTree('config');
|
|
82
|
+
const allTrees = yamlTree.tree;
|
|
83
|
+
// Returns: { config: { database: { ... }, api: { ... } } }
|
|
84
|
+
```
|
|
85
|
+
|