@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,471 @@
|
|
|
1
|
+
# Assistant (features.assistant)
|
|
2
|
+
|
|
3
|
+
No description provided
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
container.feature('assistant', {
|
|
9
|
+
// The folder containing the assistant definition
|
|
10
|
+
folder,
|
|
11
|
+
// The folder containing the assistant documentation
|
|
12
|
+
docsFolder,
|
|
13
|
+
// Text to prepend to the system prompt
|
|
14
|
+
prependPrompt,
|
|
15
|
+
// Text to append to the system prompt
|
|
16
|
+
appendPrompt,
|
|
17
|
+
// Override or extend the tools loaded from tools.ts
|
|
18
|
+
tools,
|
|
19
|
+
// Override or extend schemas whose keys match tool names
|
|
20
|
+
schemas,
|
|
21
|
+
// OpenAI model to use
|
|
22
|
+
model,
|
|
23
|
+
// Maximum number of output tokens per completion
|
|
24
|
+
maxTokens,
|
|
25
|
+
// Conversation history persistence mode
|
|
26
|
+
historyMode,
|
|
27
|
+
})
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Options (Zod v4 schema)
|
|
31
|
+
|
|
32
|
+
| Property | Type | Description |
|
|
33
|
+
|----------|------|-------------|
|
|
34
|
+
| `folder` | `string` | The folder containing the assistant definition |
|
|
35
|
+
| `docsFolder` | `string` | The folder containing the assistant documentation |
|
|
36
|
+
| `prependPrompt` | `string` | Text to prepend to the system prompt |
|
|
37
|
+
| `appendPrompt` | `string` | Text to append to the system prompt |
|
|
38
|
+
| `tools` | `object` | Override or extend the tools loaded from tools.ts |
|
|
39
|
+
| `schemas` | `object` | Override or extend schemas whose keys match tool names |
|
|
40
|
+
| `model` | `string` | OpenAI model to use |
|
|
41
|
+
| `maxTokens` | `number` | Maximum number of output tokens per completion |
|
|
42
|
+
| `historyMode` | `string` | Conversation history persistence mode |
|
|
43
|
+
|
|
44
|
+
## Methods
|
|
45
|
+
|
|
46
|
+
### afterInitialize
|
|
47
|
+
|
|
48
|
+
Called immediately after the assistant is constructed. Synchronously loads the system prompt, tools, and hooks, then binds hooks as event listeners so every emitted event automatically invokes its corresponding hook.
|
|
49
|
+
|
|
50
|
+
**Returns:** `void`
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
### use
|
|
55
|
+
|
|
56
|
+
Apply a setup function to this assistant. The function receives the assistant instance and can configure tools, hooks, event listeners, etc.
|
|
57
|
+
|
|
58
|
+
**Parameters:**
|
|
59
|
+
|
|
60
|
+
| Name | Type | Required | Description |
|
|
61
|
+
|------|------|----------|-------------|
|
|
62
|
+
| `fn` | `(assistant: this) => void | Promise<void>` | ✓ | Setup function that receives this assistant |
|
|
63
|
+
|
|
64
|
+
**Returns:** `this`
|
|
65
|
+
|
|
66
|
+
```ts
|
|
67
|
+
assistant
|
|
68
|
+
.use(setupLogging)
|
|
69
|
+
.use(addAnalyticsTools)
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
### addTool
|
|
75
|
+
|
|
76
|
+
Add a tool to this assistant. The tool name is derived from the handler's function name.
|
|
77
|
+
|
|
78
|
+
**Parameters:**
|
|
79
|
+
|
|
80
|
+
| Name | Type | Required | Description |
|
|
81
|
+
|------|------|----------|-------------|
|
|
82
|
+
| `handler` | `(...args: any[]) => any` | ✓ | A named function that implements the tool |
|
|
83
|
+
| `schema` | `z.ZodType` | | Optional Zod schema describing the tool's parameters |
|
|
84
|
+
|
|
85
|
+
**Returns:** `this`
|
|
86
|
+
|
|
87
|
+
```ts
|
|
88
|
+
assistant.addTool(function getWeather(args) {
|
|
89
|
+
return { temp: 72 }
|
|
90
|
+
}, z.object({ city: z.string() }).describe('Get weather for a city'))
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
### removeTool
|
|
96
|
+
|
|
97
|
+
Remove a tool by name or handler function reference.
|
|
98
|
+
|
|
99
|
+
**Parameters:**
|
|
100
|
+
|
|
101
|
+
| Name | Type | Required | Description |
|
|
102
|
+
|------|------|----------|-------------|
|
|
103
|
+
| `nameOrHandler` | `string | ((...args: any[]) => any)` | ✓ | The tool name string, or the handler function to match |
|
|
104
|
+
|
|
105
|
+
**Returns:** `this`
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
### simulateToolCallWithResult
|
|
110
|
+
|
|
111
|
+
Simulate a tool call and its result by appending the appropriate messages to the conversation history. Useful for injecting context that looks like the assistant performed a tool call.
|
|
112
|
+
|
|
113
|
+
**Parameters:**
|
|
114
|
+
|
|
115
|
+
| Name | Type | Required | Description |
|
|
116
|
+
|------|------|----------|-------------|
|
|
117
|
+
| `toolCallName` | `string` | ✓ | The name of the tool |
|
|
118
|
+
| `args` | `Record<string, any>` | ✓ | The arguments that were "passed" to the tool |
|
|
119
|
+
| `result` | `any` | ✓ | The result the tool "returned" |
|
|
120
|
+
|
|
121
|
+
**Returns:** `this`
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
### simulateQuestionAndResponse
|
|
126
|
+
|
|
127
|
+
Simulate a user question and assistant response by appending both messages to the conversation history.
|
|
128
|
+
|
|
129
|
+
**Parameters:**
|
|
130
|
+
|
|
131
|
+
| Name | Type | Required | Description |
|
|
132
|
+
|------|------|----------|-------------|
|
|
133
|
+
| `question` | `string` | ✓ | The user's question |
|
|
134
|
+
| `response` | `string` | ✓ | The assistant's response |
|
|
135
|
+
|
|
136
|
+
**Returns:** `this`
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
### loadSystemPrompt
|
|
141
|
+
|
|
142
|
+
Load the system prompt from CORE.md, applying any prepend/append options.
|
|
143
|
+
|
|
144
|
+
**Returns:** `string`
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
### loadTools
|
|
149
|
+
|
|
150
|
+
Load tools from tools.ts using the container's VM feature, injecting the container and assistant as globals. Merges with any tools provided in the constructor options. Runs synchronously via vm.loadModule.
|
|
151
|
+
|
|
152
|
+
**Returns:** `Record<string, ConversationTool>`
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
### loadHooks
|
|
157
|
+
|
|
158
|
+
Load event hooks from hooks.ts. Each exported function name should match an event the assistant emits. When that event fires, the corresponding hook function is called. Runs synchronously via vm.loadModule.
|
|
159
|
+
|
|
160
|
+
**Returns:** `Record<string, (...args: any[]) => any>`
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
### resumeThread
|
|
165
|
+
|
|
166
|
+
Override thread for resume. Call before start().
|
|
167
|
+
|
|
168
|
+
**Parameters:**
|
|
169
|
+
|
|
170
|
+
| Name | Type | Required | Description |
|
|
171
|
+
|------|------|----------|-------------|
|
|
172
|
+
| `threadId` | `string` | ✓ | The thread ID to resume |
|
|
173
|
+
|
|
174
|
+
**Returns:** `this`
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
### listHistory
|
|
179
|
+
|
|
180
|
+
List saved conversations for this assistant+project.
|
|
181
|
+
|
|
182
|
+
**Parameters:**
|
|
183
|
+
|
|
184
|
+
| Name | Type | Required | Description |
|
|
185
|
+
|------|------|----------|-------------|
|
|
186
|
+
| `opts` | `{ limit?: number }` | | Optional limit |
|
|
187
|
+
|
|
188
|
+
**Returns:** `Promise<ConversationMeta[]>`
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
### clearHistory
|
|
193
|
+
|
|
194
|
+
Delete all history for this assistant+project.
|
|
195
|
+
|
|
196
|
+
**Returns:** `Promise<number>`
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
### start
|
|
201
|
+
|
|
202
|
+
Start the assistant by creating the conversation and wiring up events. The system prompt, tools, and hooks are already loaded synchronously during initialization.
|
|
203
|
+
|
|
204
|
+
**Returns:** `Promise<this>`
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
### ask
|
|
209
|
+
|
|
210
|
+
Ask the assistant a question. It will use its tools to produce a streamed response. The assistant auto-starts if needed.
|
|
211
|
+
|
|
212
|
+
**Parameters:**
|
|
213
|
+
|
|
214
|
+
| Name | Type | Required | Description |
|
|
215
|
+
|------|------|----------|-------------|
|
|
216
|
+
| `question` | `string | ContentPart[]` | ✓ | The question to ask |
|
|
217
|
+
| `options` | `AskOptions` | | Parameter options |
|
|
218
|
+
|
|
219
|
+
**Returns:** `Promise<string>`
|
|
220
|
+
|
|
221
|
+
```ts
|
|
222
|
+
const answer = await assistant.ask('What capabilities do you have?')
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
### save
|
|
228
|
+
|
|
229
|
+
Save the conversation to disk via conversationHistory.
|
|
230
|
+
|
|
231
|
+
**Parameters:**
|
|
232
|
+
|
|
233
|
+
| Name | Type | Required | Description |
|
|
234
|
+
|------|------|----------|-------------|
|
|
235
|
+
| `opts` | `{ title?: string; tags?: string[]; thread?: string; metadata?: Record<string, any> }` | | Optional overrides for title, tags, thread, or metadata |
|
|
236
|
+
|
|
237
|
+
**Returns:** `void`
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
## Getters
|
|
242
|
+
|
|
243
|
+
| Property | Type | Description |
|
|
244
|
+
|----------|------|-------------|
|
|
245
|
+
| `resolvedFolder` | `string` | The absolute resolved path to the assistant folder. |
|
|
246
|
+
| `corePromptPath` | `string` | The path to CORE.md which provides the system prompt. |
|
|
247
|
+
| `toolsModulePath` | `string` | The path to tools.ts which provides tool implementations and schemas. |
|
|
248
|
+
| `hooksModulePath` | `string` | The path to hooks.ts which provides event handler functions. |
|
|
249
|
+
| `hasVoice` | `boolean` | Whether this assistant has a voice.yaml configuration file. |
|
|
250
|
+
| `voiceConfig` | `Record<string, any> | undefined` | Parsed voice configuration from voice.yaml, or undefined if not present. |
|
|
251
|
+
| `resolvedDocsFolder` | `any` | |
|
|
252
|
+
| `contentDb` | `ContentDb` | Returns an instance of a ContentDb feature for the resolved docs folder |
|
|
253
|
+
| `conversation` | `Conversation` | |
|
|
254
|
+
| `messages` | `any` | |
|
|
255
|
+
| `isStarted` | `boolean` | Whether the assistant has been started and is ready to receive questions. |
|
|
256
|
+
| `systemPrompt` | `string` | The current system prompt text. |
|
|
257
|
+
| `tools` | `Record<string, ConversationTool>` | The tools registered with this assistant. |
|
|
258
|
+
| `paths` | `any` | Provides a helper for creating paths off of the assistant's base folder |
|
|
259
|
+
| `assistantName` | `string` | The assistant name derived from the folder basename. |
|
|
260
|
+
| `cwdHash` | `string` | An 8-char hash of the container cwd for per-project thread isolation. |
|
|
261
|
+
| `threadPrefix` | `string` | The thread prefix for this assistant+project combination. |
|
|
262
|
+
| `conversationHistory` | `ConversationHistory` | The conversationHistory feature instance. |
|
|
263
|
+
| `currentThreadId` | `string | undefined` | The active thread ID (undefined in lifecycle mode). |
|
|
264
|
+
|
|
265
|
+
## Events (Zod v4 schema)
|
|
266
|
+
|
|
267
|
+
### created
|
|
268
|
+
|
|
269
|
+
Emitted immediately after the assistant loads its prompt, tools, and hooks.
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
### hookFired
|
|
274
|
+
|
|
275
|
+
Emitted when a hook function is called
|
|
276
|
+
|
|
277
|
+
**Event Arguments:**
|
|
278
|
+
|
|
279
|
+
| Name | Type | Description |
|
|
280
|
+
|------|------|-------------|
|
|
281
|
+
| `arg0` | `string` | Hook/event name |
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
### turnStart
|
|
286
|
+
|
|
287
|
+
Emitted when a new completion turn begins. isFollowUp is true when resuming after tool calls
|
|
288
|
+
|
|
289
|
+
**Event Arguments:**
|
|
290
|
+
|
|
291
|
+
| Name | Type | Description |
|
|
292
|
+
|------|------|-------------|
|
|
293
|
+
| `arg0` | `object` | |
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
### turnEnd
|
|
298
|
+
|
|
299
|
+
Emitted when a completion turn ends. hasToolCalls indicates whether tool calls will follow
|
|
300
|
+
|
|
301
|
+
**Event Arguments:**
|
|
302
|
+
|
|
303
|
+
| Name | Type | Description |
|
|
304
|
+
|------|------|-------------|
|
|
305
|
+
| `arg0` | `object` | |
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
### chunk
|
|
310
|
+
|
|
311
|
+
Emitted as tokens stream in
|
|
312
|
+
|
|
313
|
+
**Event Arguments:**
|
|
314
|
+
|
|
315
|
+
| Name | Type | Description |
|
|
316
|
+
|------|------|-------------|
|
|
317
|
+
| `arg0` | `string` | A chunk of streamed text |
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
### preview
|
|
322
|
+
|
|
323
|
+
Emitted with the full response text accumulated across all turns
|
|
324
|
+
|
|
325
|
+
**Event Arguments:**
|
|
326
|
+
|
|
327
|
+
| Name | Type | Description |
|
|
328
|
+
|------|------|-------------|
|
|
329
|
+
| `arg0` | `string` | The accumulated response so far |
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
### response
|
|
334
|
+
|
|
335
|
+
Emitted when a complete response is produced (accumulated across all turns)
|
|
336
|
+
|
|
337
|
+
**Event Arguments:**
|
|
338
|
+
|
|
339
|
+
| Name | Type | Description |
|
|
340
|
+
|------|------|-------------|
|
|
341
|
+
| `arg0` | `string` | The final response text |
|
|
342
|
+
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
### rawEvent
|
|
346
|
+
|
|
347
|
+
Emitted for each raw streaming event from the underlying conversation transport
|
|
348
|
+
|
|
349
|
+
**Event Arguments:**
|
|
350
|
+
|
|
351
|
+
| Name | Type | Description |
|
|
352
|
+
|------|------|-------------|
|
|
353
|
+
| `arg0` | `any` | A raw streaming event from the active model API |
|
|
354
|
+
|
|
355
|
+
|
|
356
|
+
|
|
357
|
+
### mcpEvent
|
|
358
|
+
|
|
359
|
+
Emitted for MCP-specific streaming and output-item events when using Responses API MCP tools
|
|
360
|
+
|
|
361
|
+
**Event Arguments:**
|
|
362
|
+
|
|
363
|
+
| Name | Type | Description |
|
|
364
|
+
|------|------|-------------|
|
|
365
|
+
| `arg0` | `any` | A raw MCP-related streaming event |
|
|
366
|
+
|
|
367
|
+
|
|
368
|
+
|
|
369
|
+
### toolCall
|
|
370
|
+
|
|
371
|
+
Emitted when a tool is called
|
|
372
|
+
|
|
373
|
+
**Event Arguments:**
|
|
374
|
+
|
|
375
|
+
| Name | Type | Description |
|
|
376
|
+
|------|------|-------------|
|
|
377
|
+
| `arg0` | `string` | Tool name |
|
|
378
|
+
| `arg1` | `any` | Tool arguments |
|
|
379
|
+
|
|
380
|
+
|
|
381
|
+
|
|
382
|
+
### toolResult
|
|
383
|
+
|
|
384
|
+
Emitted when a tool returns a result
|
|
385
|
+
|
|
386
|
+
**Event Arguments:**
|
|
387
|
+
|
|
388
|
+
| Name | Type | Description |
|
|
389
|
+
|------|------|-------------|
|
|
390
|
+
| `arg0` | `string` | Tool name |
|
|
391
|
+
| `arg1` | `any` | Result value |
|
|
392
|
+
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
### toolError
|
|
396
|
+
|
|
397
|
+
Emitted when a tool call fails
|
|
398
|
+
|
|
399
|
+
**Event Arguments:**
|
|
400
|
+
|
|
401
|
+
| Name | Type | Description |
|
|
402
|
+
|------|------|-------------|
|
|
403
|
+
| `arg0` | `string` | Tool name |
|
|
404
|
+
| `arg1` | `any` | Error |
|
|
405
|
+
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+
### started
|
|
409
|
+
|
|
410
|
+
Emitted when the assistant has been initialized
|
|
411
|
+
|
|
412
|
+
|
|
413
|
+
|
|
414
|
+
### answered
|
|
415
|
+
|
|
416
|
+
Event emitted by Assistant
|
|
417
|
+
|
|
418
|
+
|
|
419
|
+
|
|
420
|
+
## State (Zod v4 schema)
|
|
421
|
+
|
|
422
|
+
| Property | Type | Description |
|
|
423
|
+
|----------|------|-------------|
|
|
424
|
+
| `enabled` | `boolean` | Whether this feature is currently enabled |
|
|
425
|
+
| `started` | `boolean` | Whether the assistant has been initialized |
|
|
426
|
+
| `conversationCount` | `number` | Number of ask() calls made |
|
|
427
|
+
| `lastResponse` | `string` | The most recent response text |
|
|
428
|
+
| `folder` | `string` | The resolved assistant folder path |
|
|
429
|
+
| `docsFolder` | `string` | The resolved docs folder |
|
|
430
|
+
| `conversationId` | `string` | The active conversation persistence ID |
|
|
431
|
+
| `threadId` | `string` | The active thread ID |
|
|
432
|
+
|
|
433
|
+
## Examples
|
|
434
|
+
|
|
435
|
+
**features.assistant**
|
|
436
|
+
|
|
437
|
+
```ts
|
|
438
|
+
const assistant = container.feature('assistant', {
|
|
439
|
+
folder: 'assistants/my-helper'
|
|
440
|
+
})
|
|
441
|
+
const answer = await assistant.ask('What capabilities do you have?')
|
|
442
|
+
```
|
|
443
|
+
|
|
444
|
+
|
|
445
|
+
|
|
446
|
+
**use**
|
|
447
|
+
|
|
448
|
+
```ts
|
|
449
|
+
assistant
|
|
450
|
+
.use(setupLogging)
|
|
451
|
+
.use(addAnalyticsTools)
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
|
|
455
|
+
|
|
456
|
+
**addTool**
|
|
457
|
+
|
|
458
|
+
```ts
|
|
459
|
+
assistant.addTool(function getWeather(args) {
|
|
460
|
+
return { temp: 72 }
|
|
461
|
+
}, z.object({ city: z.string() }).describe('Get weather for a city'))
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
|
|
465
|
+
|
|
466
|
+
**ask**
|
|
467
|
+
|
|
468
|
+
```ts
|
|
469
|
+
const answer = await assistant.ask('What capabilities do you have?')
|
|
470
|
+
```
|
|
471
|
+
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# AssistantsManager (features.assistantsManager)
|
|
2
|
+
|
|
3
|
+
No description provided
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
container.feature('assistantsManager', {
|
|
9
|
+
// Automatically discover assistants on init
|
|
10
|
+
autoDiscover,
|
|
11
|
+
})
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Options (Zod v4 schema)
|
|
15
|
+
|
|
16
|
+
| Property | Type | Description |
|
|
17
|
+
|----------|------|-------------|
|
|
18
|
+
| `autoDiscover` | `boolean` | Automatically discover assistants on init |
|
|
19
|
+
|
|
20
|
+
## Methods
|
|
21
|
+
|
|
22
|
+
### afterInitialize
|
|
23
|
+
|
|
24
|
+
**Returns:** `void`
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
### discover
|
|
29
|
+
|
|
30
|
+
Discovers assistants by finding all CORE.md files in the project using the fileManager. Each directory containing a CORE.md is treated as an assistant definition.
|
|
31
|
+
|
|
32
|
+
**Returns:** `this`
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
### list
|
|
37
|
+
|
|
38
|
+
Returns all discovered assistant entries as an array.
|
|
39
|
+
|
|
40
|
+
**Returns:** `AssistantEntry[]`
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
### get
|
|
45
|
+
|
|
46
|
+
Looks up a single assistant entry by name.
|
|
47
|
+
|
|
48
|
+
**Parameters:**
|
|
49
|
+
|
|
50
|
+
| Name | Type | Required | Description |
|
|
51
|
+
|------|------|----------|-------------|
|
|
52
|
+
| `name` | `string` | ✓ | The assistant name (e.g. 'assistants/chief-of-staff') |
|
|
53
|
+
|
|
54
|
+
**Returns:** `AssistantEntry | undefined`
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
### create
|
|
59
|
+
|
|
60
|
+
Creates and returns a new Assistant feature instance for the given name. The assistant is configured with the discovered folder path. Any additional options are merged in.
|
|
61
|
+
|
|
62
|
+
**Parameters:**
|
|
63
|
+
|
|
64
|
+
| Name | Type | Required | Description |
|
|
65
|
+
|------|------|----------|-------------|
|
|
66
|
+
| `name` | `string` | ✓ | The assistant name (must match a discovered entry) |
|
|
67
|
+
| `options` | `Record<string, any>` | | Additional options to pass to the Assistant constructor |
|
|
68
|
+
|
|
69
|
+
**Returns:** `Assistant`
|
|
70
|
+
|
|
71
|
+
```ts
|
|
72
|
+
const assistant = manager.create('assistants/chief-of-staff', { model: 'gpt-4.1' })
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
### getInstance
|
|
78
|
+
|
|
79
|
+
Returns a previously created assistant instance by name.
|
|
80
|
+
|
|
81
|
+
**Parameters:**
|
|
82
|
+
|
|
83
|
+
| Name | Type | Required | Description |
|
|
84
|
+
|------|------|----------|-------------|
|
|
85
|
+
| `name` | `string` | ✓ | The assistant name |
|
|
86
|
+
|
|
87
|
+
**Returns:** `Assistant | undefined`
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
### toSummary
|
|
92
|
+
|
|
93
|
+
Generates a markdown summary of all discovered assistants, listing their names and which definition files are present.
|
|
94
|
+
|
|
95
|
+
**Returns:** `string`
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
## Getters
|
|
100
|
+
|
|
101
|
+
| Property | Type | Description |
|
|
102
|
+
|----------|------|-------------|
|
|
103
|
+
| `available` | `any` | |
|
|
104
|
+
|
|
105
|
+
## Events (Zod v4 schema)
|
|
106
|
+
|
|
107
|
+
### discovered
|
|
108
|
+
|
|
109
|
+
Emitted when assistant discovery scan completes
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
### assistantCreated
|
|
114
|
+
|
|
115
|
+
Emitted when a new assistant instance is created
|
|
116
|
+
|
|
117
|
+
**Event Arguments:**
|
|
118
|
+
|
|
119
|
+
| Name | Type | Description |
|
|
120
|
+
|------|------|-------------|
|
|
121
|
+
| `arg0` | `string` | The assistant name |
|
|
122
|
+
| `arg1` | `any` | The assistant instance |
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
## State (Zod v4 schema)
|
|
127
|
+
|
|
128
|
+
| Property | Type | Description |
|
|
129
|
+
|----------|------|-------------|
|
|
130
|
+
| `enabled` | `boolean` | Whether this feature is currently enabled |
|
|
131
|
+
| `discovered` | `boolean` | Whether discovery has been run |
|
|
132
|
+
| `assistantCount` | `number` | Number of discovered assistant definitions |
|
|
133
|
+
| `activeCount` | `number` | Number of currently instantiated assistants |
|
|
134
|
+
|
|
135
|
+
## Examples
|
|
136
|
+
|
|
137
|
+
**features.assistantsManager**
|
|
138
|
+
|
|
139
|
+
```ts
|
|
140
|
+
const manager = container.feature('assistantsManager')
|
|
141
|
+
manager.discover()
|
|
142
|
+
console.log(manager.list()) // [{ name: 'assistants/chief-of-staff', folder: '...', ... }]
|
|
143
|
+
const assistant = manager.create('assistants/chief-of-staff')
|
|
144
|
+
const answer = await assistant.ask('Hello!')
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
**create**
|
|
150
|
+
|
|
151
|
+
```ts
|
|
152
|
+
const assistant = manager.create('assistants/chief-of-staff', { model: 'gpt-4.1' })
|
|
153
|
+
```
|
|
154
|
+
|