@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,387 @@
|
|
|
1
|
+
# SemanticSearch (features.semanticSearch)
|
|
2
|
+
|
|
3
|
+
No description provided
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
container.feature('semanticSearch', {
|
|
9
|
+
// Path to the SQLite database file
|
|
10
|
+
dbPath,
|
|
11
|
+
// GGUF model name
|
|
12
|
+
embeddingModel,
|
|
13
|
+
// Where to generate embeddings
|
|
14
|
+
embeddingProvider,
|
|
15
|
+
// How to split documents
|
|
16
|
+
chunkStrategy,
|
|
17
|
+
// Token limit per chunk for fixed strategy
|
|
18
|
+
chunkSize,
|
|
19
|
+
// Overlap ratio for fixed strategy
|
|
20
|
+
chunkOverlap,
|
|
21
|
+
})
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Options (Zod v4 schema)
|
|
25
|
+
|
|
26
|
+
| Property | Type | Description |
|
|
27
|
+
|----------|------|-------------|
|
|
28
|
+
| `dbPath` | `string` | Path to the SQLite database file |
|
|
29
|
+
| `embeddingModel` | `string` | GGUF model name |
|
|
30
|
+
| `embeddingProvider` | `string` | Where to generate embeddings |
|
|
31
|
+
| `chunkStrategy` | `string` | How to split documents |
|
|
32
|
+
| `chunkSize` | `number` | Token limit per chunk for fixed strategy |
|
|
33
|
+
| `chunkOverlap` | `number` | Overlap ratio for fixed strategy |
|
|
34
|
+
|
|
35
|
+
## Methods
|
|
36
|
+
|
|
37
|
+
### initDb
|
|
38
|
+
|
|
39
|
+
**Returns:** `Promise<void>`
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
### insertDocument
|
|
44
|
+
|
|
45
|
+
**Parameters:**
|
|
46
|
+
|
|
47
|
+
| Name | Type | Required | Description |
|
|
48
|
+
|------|------|----------|-------------|
|
|
49
|
+
| `doc` | `DocumentInput` | ✓ | Parameter doc |
|
|
50
|
+
|
|
51
|
+
`DocumentInput` properties:
|
|
52
|
+
|
|
53
|
+
| Property | Type | Description |
|
|
54
|
+
|----------|------|-------------|
|
|
55
|
+
| `pathId` | `string` | |
|
|
56
|
+
| `model` | `string` | |
|
|
57
|
+
| `title` | `string` | |
|
|
58
|
+
| `slug` | `string` | |
|
|
59
|
+
| `meta` | `Record<string, any>` | |
|
|
60
|
+
| `content` | `string` | |
|
|
61
|
+
| `sections` | `Array<{ heading: string; headingPath: string; content: string; level: number }>` | |
|
|
62
|
+
|
|
63
|
+
**Returns:** `void`
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
### insertChunk
|
|
68
|
+
|
|
69
|
+
**Parameters:**
|
|
70
|
+
|
|
71
|
+
| Name | Type | Required | Description |
|
|
72
|
+
|------|------|----------|-------------|
|
|
73
|
+
| `chunk` | `Chunk` | ✓ | Parameter chunk |
|
|
74
|
+
|
|
75
|
+
`Chunk` properties:
|
|
76
|
+
|
|
77
|
+
| Property | Type | Description |
|
|
78
|
+
|----------|------|-------------|
|
|
79
|
+
| `pathId` | `string` | |
|
|
80
|
+
| `section` | `string` | |
|
|
81
|
+
| `headingPath` | `string` | |
|
|
82
|
+
| `seq` | `number` | |
|
|
83
|
+
| `content` | `string` | |
|
|
84
|
+
| `contentHash` | `string` | |
|
|
85
|
+
| `embedding` | `Float32Array` | ✓ | Parameter embedding |
|
|
86
|
+
|
|
87
|
+
**Returns:** `void`
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
### removeDocument
|
|
92
|
+
|
|
93
|
+
**Parameters:**
|
|
94
|
+
|
|
95
|
+
| Name | Type | Required | Description |
|
|
96
|
+
|------|------|----------|-------------|
|
|
97
|
+
| `pathId` | `string` | ✓ | Parameter pathId |
|
|
98
|
+
|
|
99
|
+
**Returns:** `void`
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
### getStats
|
|
104
|
+
|
|
105
|
+
**Returns:** `IndexStatus`
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
### embed
|
|
110
|
+
|
|
111
|
+
**Parameters:**
|
|
112
|
+
|
|
113
|
+
| Name | Type | Required | Description |
|
|
114
|
+
|------|------|----------|-------------|
|
|
115
|
+
| `texts` | `string[]` | ✓ | Parameter texts |
|
|
116
|
+
|
|
117
|
+
**Returns:** `Promise<number[][]>`
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
### ensureModel
|
|
122
|
+
|
|
123
|
+
**Returns:** `Promise<void>`
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
### disposeModel
|
|
128
|
+
|
|
129
|
+
**Returns:** `Promise<void>`
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
### getDimensions
|
|
134
|
+
|
|
135
|
+
**Returns:** `number`
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
### chunkDocument
|
|
140
|
+
|
|
141
|
+
**Parameters:**
|
|
142
|
+
|
|
143
|
+
| Name | Type | Required | Description |
|
|
144
|
+
|------|------|----------|-------------|
|
|
145
|
+
| `doc` | `DocumentInput` | ✓ | Parameter doc |
|
|
146
|
+
|
|
147
|
+
`DocumentInput` properties:
|
|
148
|
+
|
|
149
|
+
| Property | Type | Description |
|
|
150
|
+
|----------|------|-------------|
|
|
151
|
+
| `pathId` | `string` | |
|
|
152
|
+
| `model` | `string` | |
|
|
153
|
+
| `title` | `string` | |
|
|
154
|
+
| `slug` | `string` | |
|
|
155
|
+
| `meta` | `Record<string, any>` | |
|
|
156
|
+
| `content` | `string` | |
|
|
157
|
+
| `sections` | `Array<{ heading: string; headingPath: string; content: string; level: number }>` | |
|
|
158
|
+
| `strategy` | `'section' | 'fixed' | 'document'` | | Parameter strategy |
|
|
159
|
+
|
|
160
|
+
**Returns:** `Chunk[]`
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
### search
|
|
165
|
+
|
|
166
|
+
**Parameters:**
|
|
167
|
+
|
|
168
|
+
| Name | Type | Required | Description |
|
|
169
|
+
|------|------|----------|-------------|
|
|
170
|
+
| `query` | `string` | ✓ | Parameter query |
|
|
171
|
+
| `options` | `SearchOptions` | | Parameter options |
|
|
172
|
+
|
|
173
|
+
`SearchOptions` properties:
|
|
174
|
+
|
|
175
|
+
| Property | Type | Description |
|
|
176
|
+
|----------|------|-------------|
|
|
177
|
+
| `limit` | `number` | |
|
|
178
|
+
| `model` | `string` | |
|
|
179
|
+
| `where` | `Record<string, any>` | |
|
|
180
|
+
|
|
181
|
+
**Returns:** `Promise<SearchResult[]>`
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
### vectorSearch
|
|
186
|
+
|
|
187
|
+
**Parameters:**
|
|
188
|
+
|
|
189
|
+
| Name | Type | Required | Description |
|
|
190
|
+
|------|------|----------|-------------|
|
|
191
|
+
| `query` | `string` | ✓ | Parameter query |
|
|
192
|
+
| `options` | `SearchOptions` | | Parameter options |
|
|
193
|
+
|
|
194
|
+
`SearchOptions` properties:
|
|
195
|
+
|
|
196
|
+
| Property | Type | Description |
|
|
197
|
+
|----------|------|-------------|
|
|
198
|
+
| `limit` | `number` | |
|
|
199
|
+
| `model` | `string` | |
|
|
200
|
+
| `where` | `Record<string, any>` | |
|
|
201
|
+
|
|
202
|
+
**Returns:** `Promise<SearchResult[]>`
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
### hybridSearch
|
|
207
|
+
|
|
208
|
+
**Parameters:**
|
|
209
|
+
|
|
210
|
+
| Name | Type | Required | Description |
|
|
211
|
+
|------|------|----------|-------------|
|
|
212
|
+
| `query` | `string` | ✓ | Parameter query |
|
|
213
|
+
| `options` | `HybridSearchOptions` | | Parameter options |
|
|
214
|
+
|
|
215
|
+
`HybridSearchOptions` properties:
|
|
216
|
+
|
|
217
|
+
| Property | Type | Description |
|
|
218
|
+
|----------|------|-------------|
|
|
219
|
+
| `ftsWeight` | `number` | |
|
|
220
|
+
| `vecWeight` | `number` | |
|
|
221
|
+
|
|
222
|
+
**Returns:** `Promise<SearchResult[]>`
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
### deepSearch
|
|
227
|
+
|
|
228
|
+
**Parameters:**
|
|
229
|
+
|
|
230
|
+
| Name | Type | Required | Description |
|
|
231
|
+
|------|------|----------|-------------|
|
|
232
|
+
| `_query` | `string` | ✓ | Parameter _query |
|
|
233
|
+
| `_options` | `SearchOptions` | | Parameter _options |
|
|
234
|
+
|
|
235
|
+
`SearchOptions` properties:
|
|
236
|
+
|
|
237
|
+
| Property | Type | Description |
|
|
238
|
+
|----------|------|-------------|
|
|
239
|
+
| `limit` | `number` | |
|
|
240
|
+
| `model` | `string` | |
|
|
241
|
+
| `where` | `Record<string, any>` | |
|
|
242
|
+
|
|
243
|
+
**Returns:** `Promise<SearchResult[]>`
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
### indexDocuments
|
|
248
|
+
|
|
249
|
+
**Parameters:**
|
|
250
|
+
|
|
251
|
+
| Name | Type | Required | Description |
|
|
252
|
+
|------|------|----------|-------------|
|
|
253
|
+
| `docs` | `DocumentInput[]` | ✓ | Parameter docs |
|
|
254
|
+
|
|
255
|
+
`DocumentInput[]` properties:
|
|
256
|
+
|
|
257
|
+
| Property | Type | Description |
|
|
258
|
+
|----------|------|-------------|
|
|
259
|
+
| `pathId` | `string` | |
|
|
260
|
+
| `model` | `string` | |
|
|
261
|
+
| `title` | `string` | |
|
|
262
|
+
| `slug` | `string` | |
|
|
263
|
+
| `meta` | `Record<string, any>` | |
|
|
264
|
+
| `content` | `string` | |
|
|
265
|
+
| `sections` | `Array<{ heading: string; headingPath: string; content: string; level: number }>` | |
|
|
266
|
+
|
|
267
|
+
**Returns:** `Promise<void>`
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
### reindex
|
|
272
|
+
|
|
273
|
+
**Parameters:**
|
|
274
|
+
|
|
275
|
+
| Name | Type | Required | Description |
|
|
276
|
+
|------|------|----------|-------------|
|
|
277
|
+
| `pathIds` | `string[]` | | Parameter pathIds |
|
|
278
|
+
|
|
279
|
+
**Returns:** `Promise<void>`
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
### removeStale
|
|
284
|
+
|
|
285
|
+
**Parameters:**
|
|
286
|
+
|
|
287
|
+
| Name | Type | Required | Description |
|
|
288
|
+
|------|------|----------|-------------|
|
|
289
|
+
| `currentPathIds` | `string[]` | ✓ | Parameter currentPathIds |
|
|
290
|
+
|
|
291
|
+
**Returns:** `void`
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
### needsReindex
|
|
296
|
+
|
|
297
|
+
**Parameters:**
|
|
298
|
+
|
|
299
|
+
| Name | Type | Required | Description |
|
|
300
|
+
|------|------|----------|-------------|
|
|
301
|
+
| `doc` | `DocumentInput` | ✓ | Parameter doc |
|
|
302
|
+
|
|
303
|
+
`DocumentInput` properties:
|
|
304
|
+
|
|
305
|
+
| Property | Type | Description |
|
|
306
|
+
|----------|------|-------------|
|
|
307
|
+
| `pathId` | `string` | |
|
|
308
|
+
| `model` | `string` | |
|
|
309
|
+
| `title` | `string` | |
|
|
310
|
+
| `slug` | `string` | |
|
|
311
|
+
| `meta` | `Record<string, any>` | |
|
|
312
|
+
| `content` | `string` | |
|
|
313
|
+
| `sections` | `Array<{ heading: string; headingPath: string; content: string; level: number }>` | |
|
|
314
|
+
|
|
315
|
+
**Returns:** `boolean`
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
### status
|
|
320
|
+
|
|
321
|
+
**Returns:** `IndexStatus`
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
### close
|
|
326
|
+
|
|
327
|
+
**Returns:** `Promise<void>`
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
## Getters
|
|
332
|
+
|
|
333
|
+
| Property | Type | Description |
|
|
334
|
+
|----------|------|-------------|
|
|
335
|
+
| `db` | `Database` | |
|
|
336
|
+
| `dimensions` | `number` | |
|
|
337
|
+
|
|
338
|
+
## Events (Zod v4 schema)
|
|
339
|
+
|
|
340
|
+
### dbReady
|
|
341
|
+
|
|
342
|
+
Event emitted by SemanticSearch
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
### modelLoaded
|
|
347
|
+
|
|
348
|
+
Event emitted by SemanticSearch
|
|
349
|
+
|
|
350
|
+
|
|
351
|
+
|
|
352
|
+
### modelDisposed
|
|
353
|
+
|
|
354
|
+
Event emitted by SemanticSearch
|
|
355
|
+
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
### indexed
|
|
359
|
+
|
|
360
|
+
Event emitted by SemanticSearch
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
|
|
364
|
+
## State (Zod v4 schema)
|
|
365
|
+
|
|
366
|
+
| Property | Type | Description |
|
|
367
|
+
|----------|------|-------------|
|
|
368
|
+
| `enabled` | `boolean` | Whether this feature is currently enabled |
|
|
369
|
+
| `indexed` | `number` | Count of indexed documents |
|
|
370
|
+
| `embedded` | `number` | Count of documents with embeddings |
|
|
371
|
+
| `lastIndexedAt` | `any` | ISO timestamp of last indexing |
|
|
372
|
+
| `dbReady` | `boolean` | Whether SQLite is initialized |
|
|
373
|
+
|
|
374
|
+
## Examples
|
|
375
|
+
|
|
376
|
+
**features.semanticSearch**
|
|
377
|
+
|
|
378
|
+
```ts
|
|
379
|
+
const search = container.feature('semanticSearch', {
|
|
380
|
+
dbPath: '.contentbase/search.sqlite',
|
|
381
|
+
embeddingProvider: 'local',
|
|
382
|
+
})
|
|
383
|
+
await search.initDb()
|
|
384
|
+
await search.indexDocuments(docs)
|
|
385
|
+
const results = await search.hybridSearch('how does authentication work')
|
|
386
|
+
```
|
|
387
|
+
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
# SkillsLibrary (features.skillsLibrary)
|
|
2
|
+
|
|
3
|
+
No description provided
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
container.feature('skillsLibrary', {
|
|
9
|
+
// Path to project-level skills directory
|
|
10
|
+
projectSkillsPath,
|
|
11
|
+
// Path to user-level global skills directory
|
|
12
|
+
userSkillsPath,
|
|
13
|
+
})
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Options (Zod v4 schema)
|
|
17
|
+
|
|
18
|
+
| Property | Type | Description |
|
|
19
|
+
|----------|------|-------------|
|
|
20
|
+
| `projectSkillsPath` | `string` | Path to project-level skills directory |
|
|
21
|
+
| `userSkillsPath` | `string` | Path to user-level global skills directory |
|
|
22
|
+
|
|
23
|
+
## Methods
|
|
24
|
+
|
|
25
|
+
### load
|
|
26
|
+
|
|
27
|
+
Loads both project and user skill collections from disk. Gracefully handles missing directories.
|
|
28
|
+
|
|
29
|
+
**Returns:** `Promise<SkillsLibrary>`
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
### list
|
|
34
|
+
|
|
35
|
+
Lists all skills from both collections. Project skills come first.
|
|
36
|
+
|
|
37
|
+
**Returns:** `SkillEntry[]`
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
### find
|
|
42
|
+
|
|
43
|
+
Finds a skill by name. Project skills take precedence over user skills.
|
|
44
|
+
|
|
45
|
+
**Parameters:**
|
|
46
|
+
|
|
47
|
+
| Name | Type | Required | Description |
|
|
48
|
+
|------|------|----------|-------------|
|
|
49
|
+
| `name` | `string` | ✓ | The skill name to find (case-insensitive) |
|
|
50
|
+
|
|
51
|
+
**Returns:** `SkillEntry | undefined`
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
### search
|
|
56
|
+
|
|
57
|
+
Searches skills by substring match against name and description.
|
|
58
|
+
|
|
59
|
+
**Parameters:**
|
|
60
|
+
|
|
61
|
+
| Name | Type | Required | Description |
|
|
62
|
+
|------|------|----------|-------------|
|
|
63
|
+
| `query` | `string` | ✓ | The search query |
|
|
64
|
+
|
|
65
|
+
**Returns:** `SkillEntry[]`
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
### getSkill
|
|
70
|
+
|
|
71
|
+
Gets a skill by name. Alias for find().
|
|
72
|
+
|
|
73
|
+
**Parameters:**
|
|
74
|
+
|
|
75
|
+
| Name | Type | Required | Description |
|
|
76
|
+
|------|------|----------|-------------|
|
|
77
|
+
| `name` | `string` | ✓ | The skill name |
|
|
78
|
+
|
|
79
|
+
**Returns:** `SkillEntry | undefined`
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
### create
|
|
84
|
+
|
|
85
|
+
Creates a new SKILL.md file in the specified collection. Maintains the directory-per-skill structure (skill-name/SKILL.md).
|
|
86
|
+
|
|
87
|
+
**Parameters:**
|
|
88
|
+
|
|
89
|
+
| Name | Type | Required | Description |
|
|
90
|
+
|------|------|----------|-------------|
|
|
91
|
+
| `skill` | `{
|
|
92
|
+
name: string
|
|
93
|
+
description: string
|
|
94
|
+
body: string
|
|
95
|
+
meta?: Record<string, unknown>
|
|
96
|
+
}` | ✓ | The skill to create |
|
|
97
|
+
| `target` | `'project' | 'user'` | | Which collection to write to (default: 'project') |
|
|
98
|
+
|
|
99
|
+
**Returns:** `Promise<SkillEntry>`
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
### update
|
|
104
|
+
|
|
105
|
+
Updates an existing skill's content or metadata.
|
|
106
|
+
|
|
107
|
+
**Parameters:**
|
|
108
|
+
|
|
109
|
+
| Name | Type | Required | Description |
|
|
110
|
+
|------|------|----------|-------------|
|
|
111
|
+
| `name` | `string` | ✓ | The skill name to update |
|
|
112
|
+
| `updates` | `{
|
|
113
|
+
description?: string
|
|
114
|
+
body?: string
|
|
115
|
+
meta?: Record<string, unknown>
|
|
116
|
+
}` | ✓ | Fields to update |
|
|
117
|
+
|
|
118
|
+
**Returns:** `Promise<SkillEntry>`
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
### remove
|
|
123
|
+
|
|
124
|
+
Removes a skill by name, deleting its SKILL.md and cleaning up the directory.
|
|
125
|
+
|
|
126
|
+
**Parameters:**
|
|
127
|
+
|
|
128
|
+
| Name | Type | Required | Description |
|
|
129
|
+
|------|------|----------|-------------|
|
|
130
|
+
| `name` | `string` | ✓ | The skill name to remove |
|
|
131
|
+
|
|
132
|
+
**Returns:** `Promise<boolean>`
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
### toConversationTools
|
|
137
|
+
|
|
138
|
+
Converts all skills into ConversationTool format for use with Conversation. Each skill becomes a tool that returns its instruction body when invoked.
|
|
139
|
+
|
|
140
|
+
**Returns:** `Record<string, ConversationTool>`
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
### toSystemPromptBlock
|
|
145
|
+
|
|
146
|
+
Generates a markdown block listing all available skills with names and descriptions. Suitable for injecting into a system prompt.
|
|
147
|
+
|
|
148
|
+
**Returns:** `string`
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
## Getters
|
|
153
|
+
|
|
154
|
+
| Property | Type | Description |
|
|
155
|
+
|----------|------|-------------|
|
|
156
|
+
| `projectCollection` | `Collection` | Returns the project-level contentbase Collection, lazily initialized. |
|
|
157
|
+
| `userCollection` | `Collection` | Returns the user-level contentbase Collection, lazily initialized. |
|
|
158
|
+
| `isLoaded` | `boolean` | Whether the skills library has been loaded. |
|
|
159
|
+
| `skillNames` | `string[]` | Array of all skill names across both collections. |
|
|
160
|
+
|
|
161
|
+
## Events (Zod v4 schema)
|
|
162
|
+
|
|
163
|
+
### loaded
|
|
164
|
+
|
|
165
|
+
Event emitted by SkillsLibrary
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
### skillCreated
|
|
170
|
+
|
|
171
|
+
Event emitted by SkillsLibrary
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
### skillUpdated
|
|
176
|
+
|
|
177
|
+
Event emitted by SkillsLibrary
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
### skillRemoved
|
|
182
|
+
|
|
183
|
+
Event emitted by SkillsLibrary
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
## State (Zod v4 schema)
|
|
188
|
+
|
|
189
|
+
| Property | Type | Description |
|
|
190
|
+
|----------|------|-------------|
|
|
191
|
+
| `enabled` | `boolean` | Whether this feature is currently enabled |
|
|
192
|
+
| `loaded` | `boolean` | Whether both collections have been loaded |
|
|
193
|
+
| `projectSkillCount` | `number` | Number of skills in the project collection |
|
|
194
|
+
| `userSkillCount` | `number` | Number of skills in the user-level collection |
|
|
195
|
+
| `totalSkillCount` | `number` | Total number of skills across both collections |
|
|
196
|
+
|
|
197
|
+
## Examples
|
|
198
|
+
|
|
199
|
+
**features.skillsLibrary**
|
|
200
|
+
|
|
201
|
+
```ts
|
|
202
|
+
const skills = container.feature('skillsLibrary')
|
|
203
|
+
await skills.load()
|
|
204
|
+
|
|
205
|
+
// List and search
|
|
206
|
+
const allSkills = skills.list()
|
|
207
|
+
const matches = skills.search('code review')
|
|
208
|
+
|
|
209
|
+
// Create a new skill
|
|
210
|
+
await skills.create({
|
|
211
|
+
name: 'summarize',
|
|
212
|
+
description: 'Summarize a document',
|
|
213
|
+
body: '## Instructions\nRead the document and produce a concise summary.'
|
|
214
|
+
})
|
|
215
|
+
```
|
|
216
|
+
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# ContainerLink (features.containerLink)
|
|
2
|
+
|
|
3
|
+
ContainerLink (Web-side) — WebSocket client that connects to a node host. Connects to a ContainerLink host over WebSocket. The host can evaluate code in this container, and the web side can emit structured events to the host. The web side can NEVER eval code in the host — trust is strictly one-way.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
container.feature('containerLink', {
|
|
9
|
+
// Port for the WebSocket server
|
|
10
|
+
port,
|
|
11
|
+
// Interval in ms between heartbeat pings
|
|
12
|
+
heartbeatInterval,
|
|
13
|
+
// Max missed pongs before disconnecting a client
|
|
14
|
+
maxMissedHeartbeats,
|
|
15
|
+
})
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Options (Zod v4 schema)
|
|
19
|
+
|
|
20
|
+
| Property | Type | Description |
|
|
21
|
+
|----------|------|-------------|
|
|
22
|
+
| `port` | `number` | Port for the WebSocket server |
|
|
23
|
+
| `heartbeatInterval` | `number` | Interval in ms between heartbeat pings |
|
|
24
|
+
| `maxMissedHeartbeats` | `number` | Max missed pongs before disconnecting a client |
|
|
25
|
+
|
|
26
|
+
## Methods
|
|
27
|
+
|
|
28
|
+
### connect
|
|
29
|
+
|
|
30
|
+
Connect to the host WebSocket server and perform registration.
|
|
31
|
+
|
|
32
|
+
**Parameters:**
|
|
33
|
+
|
|
34
|
+
| Name | Type | Required | Description |
|
|
35
|
+
|------|------|----------|-------------|
|
|
36
|
+
| `hostUrl` | `string` | | Override the configured host URL |
|
|
37
|
+
|
|
38
|
+
**Returns:** `Promise<this>`
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
### disconnect
|
|
43
|
+
|
|
44
|
+
Disconnect from the host.
|
|
45
|
+
|
|
46
|
+
**Parameters:**
|
|
47
|
+
|
|
48
|
+
| Name | Type | Required | Description |
|
|
49
|
+
|------|------|----------|-------------|
|
|
50
|
+
| `reason` | `string` | | Optional reason string |
|
|
51
|
+
|
|
52
|
+
**Returns:** `void`
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
### emitToHost
|
|
57
|
+
|
|
58
|
+
Send a structured event to the host container.
|
|
59
|
+
|
|
60
|
+
**Parameters:**
|
|
61
|
+
|
|
62
|
+
| Name | Type | Required | Description |
|
|
63
|
+
|------|------|----------|-------------|
|
|
64
|
+
| `eventName` | `string` | ✓ | Name of the event |
|
|
65
|
+
| `data` | `any` | | Optional event data |
|
|
66
|
+
|
|
67
|
+
**Returns:** `void`
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
## Getters
|
|
72
|
+
|
|
73
|
+
| Property | Type | Description |
|
|
74
|
+
|----------|------|-------------|
|
|
75
|
+
| `isConnected` | `boolean` | Whether currently connected to the host. |
|
|
76
|
+
| `token` | `string | undefined` | The auth token received from the host. |
|
|
77
|
+
| `hostId` | `string | undefined` | The host container's UUID. |
|
|
78
|
+
|
|
79
|
+
## Events (Zod v4 schema)
|
|
80
|
+
|
|
81
|
+
### connected
|
|
82
|
+
|
|
83
|
+
Event emitted by ContainerLink
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
### disconnected
|
|
88
|
+
|
|
89
|
+
Event emitted by ContainerLink
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
### evalRequest
|
|
94
|
+
|
|
95
|
+
Event emitted by ContainerLink
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
### reconnecting
|
|
100
|
+
|
|
101
|
+
Event emitted by ContainerLink
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
## State (Zod v4 schema)
|
|
106
|
+
|
|
107
|
+
| Property | Type | Description |
|
|
108
|
+
|----------|------|-------------|
|
|
109
|
+
| `enabled` | `boolean` | Whether this feature is currently enabled |
|
|
110
|
+
| `connectionCount` | `number` | Number of currently connected web containers |
|
|
111
|
+
| `port` | `number` | Port the WebSocket server is listening on |
|
|
112
|
+
| `listening` | `boolean` | Whether the WebSocket server is listening |
|
|
113
|
+
|
|
114
|
+
## Examples
|
|
115
|
+
|
|
116
|
+
**features.containerLink**
|
|
117
|
+
|
|
118
|
+
```ts
|
|
119
|
+
const link = container.feature('containerLink', {
|
|
120
|
+
enable: true,
|
|
121
|
+
hostUrl: 'ws://localhost:8089',
|
|
122
|
+
})
|
|
123
|
+
await link.connect()
|
|
124
|
+
|
|
125
|
+
// Send events to the host
|
|
126
|
+
link.emitToHost('click', { x: 100, y: 200 })
|
|
127
|
+
|
|
128
|
+
// Listen for eval requests before they execute
|
|
129
|
+
link.on('evalRequest', (code, requestId) => {
|
|
130
|
+
console.log('Host is evaluating:', code)
|
|
131
|
+
})
|
|
132
|
+
```
|
|
133
|
+
|