luca 3.0.0 → 3.1.0
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/.github/workflows/release.yaml +1 -0
- package/CLAUDE.md +10 -2
- package/README.md +130 -112
- package/assistants/codingAssistant/CORE.md +6 -1
- package/assistants/codingAssistant/hooks.ts +1 -1
- package/assistants/inkbot/hooks.ts +1 -1
- package/assistants/inkbot/tools.ts +1 -1
- package/bun.lock +264 -321
- package/commands/audit-docs.ts +2 -2
- package/commands/build-bootstrap.ts +2 -3
- package/commands/build-python-bridge.ts +2 -3
- package/commands/build-scaffolds.ts +2 -3
- package/commands/bundle-consumer-project.ts +521 -0
- package/commands/generate-api-docs.ts +2 -2
- package/commands/inkbot.ts +2 -2
- package/commands/release.ts +2 -2
- package/commands/social.ts +137 -0
- package/commands/try-all-challenges.ts +3 -3
- package/commands/try-challenge.ts +3 -3
- package/datasets/lora/agentic-loop-session-candidates.jsonl +91 -0
- package/datasets/lora/agentic-loop-session-curation-summary.json +123 -0
- package/datasets/lora/luca-session-candidates.jsonl +29 -0
- package/datasets/lora/luca-session-curation-summary.json +121 -0
- package/datasets/lora/review-batch-1.jsonl +30 -0
- package/datasets/lora/review-manifest.json +41 -0
- package/datasets/lora/review-queue.jsonl +120 -0
- package/datasets/lora/review-schema.json +134 -0
- package/datasets/lora/review-template.jsonl +2 -0
- package/datasets/lora/review-ui.html +725 -0
- package/dist/agi/container.server.d.ts +2 -2
- package/dist/agi/features/assistant.d.ts +2 -2
- package/dist/agi/features/assistants-manager.d.ts +1 -1
- package/dist/agi/features/autonomous-assistant.d.ts +1 -1
- package/dist/agi/features/browser-use.d.ts +1 -1
- package/dist/agi/features/claude-code.d.ts +1 -1
- package/dist/agi/features/conversation-history.d.ts +2 -2
- package/dist/agi/features/conversation.d.ts +1 -1
- package/dist/agi/features/docs-reader.d.ts +1 -1
- package/dist/agi/features/file-tools.d.ts +1 -1
- package/dist/agi/features/luca-coder.d.ts +1 -1
- package/dist/agi/features/openai-codex.d.ts +1 -1
- package/dist/agi/features/skills-library.d.ts +1 -1
- package/dist/clients/civitai/index.d.ts +4 -4
- package/dist/clients/client-template.d.ts +4 -4
- package/dist/clients/comfyui/index.d.ts +2 -2
- package/dist/clients/elevenlabs/index.d.ts +2 -2
- package/dist/clients/openai/index.d.ts +2 -2
- package/dist/clients/supabase/index.d.ts +3 -3
- package/dist/command.d.ts +1 -1
- package/dist/node/container.d.ts +1 -1
- package/dist/node/features/helpers.d.ts +3 -3
- package/dist/node/features/semantic-search.d.ts +1 -1
- package/dist/node/features/vm.d.ts +3 -3
- package/dist/node.d.ts +1 -1
- package/dist/scaffolds/generated.d.ts +1 -1
- package/dist/selector.d.ts +1 -1
- package/features/cipher-social.ts +493 -0
- package/index.html +217 -190
- package/luca.console.ts +1 -1
- package/package.json +7 -2
- package/public/index.html +217 -190
- package/public/slides-ai-native.html +1 -1
- package/public/slides-intro.html +2 -2
- package/scripts/curate-claude-sessions.ts +561 -0
- package/scripts/examples/ask-luca-expert.ts +1 -1
- package/scripts/examples/assistant-questions.ts +1 -1
- package/scripts/examples/excalidraw-expert.ts +1 -1
- package/scripts/examples/file-manager.ts +1 -1
- package/scripts/examples/ideas.ts +1 -1
- package/scripts/examples/interactive-chat.ts +1 -1
- package/scripts/examples/opening-a-web-browser.ts +1 -1
- package/scripts/examples/telegram-bot.ts +1 -1
- package/scripts/examples/using-assistant-with-mcp.ts +1 -1
- package/scripts/examples/using-claude-code.ts +1 -1
- package/scripts/examples/using-contentdb.ts +2 -2
- package/scripts/examples/using-conversations.ts +1 -1
- package/scripts/examples/using-disk-cache.ts +1 -1
- package/scripts/examples/using-docker-shell.ts +1 -1
- package/scripts/examples/using-elevenlabs.ts +1 -1
- package/scripts/examples/using-google-calendar.ts +1 -1
- package/scripts/examples/using-google-docs.ts +1 -1
- package/scripts/examples/using-google-drive.ts +1 -1
- package/scripts/examples/using-google-sheets.ts +1 -1
- package/scripts/examples/using-nlp.ts +1 -1
- package/scripts/examples/using-ollama.ts +1 -1
- package/scripts/examples/using-postgres.ts +1 -1
- package/scripts/examples/using-runpod.ts +1 -1
- package/scripts/examples/using-tts.ts +1 -1
- package/scripts/scaffold.ts +5 -5
- package/scripts/scratch.ts +1 -1
- package/scripts/test-assistant-hooks.ts +1 -1
- package/scripts/test-docs-reader.ts +1 -1
- package/src/agi/container.server.ts +6 -2
- package/src/agi/features/agent-memory.ts +25 -25
- package/src/agi/features/assistant.ts +34 -5
- package/src/agi/features/assistants-manager.ts +122 -6
- package/src/agi/features/autonomous-assistant.ts +1 -1
- package/src/agi/features/browser-use.ts +20 -1
- package/src/agi/features/claude-code.ts +51 -5
- package/src/agi/features/coding-tools.ts +1 -1
- package/src/agi/features/conversation-history.ts +181 -4
- package/src/agi/features/conversation.ts +186 -15
- package/src/agi/features/docs-reader.ts +2 -2
- package/src/agi/features/file-tools.ts +49 -2
- package/src/agi/features/luca-coder.ts +7 -5
- package/src/agi/features/mcp-bridge.ts +532 -0
- package/src/agi/features/openai-codex.ts +2 -2
- package/src/agi/features/skills-library.ts +131 -52
- package/src/agi/lib/token-counter.ts +80 -0
- package/src/bootstrap/generated.ts +56 -57
- package/src/browser.ts +1 -1
- package/src/cli/build-info.ts +2 -2
- package/src/cli/cli.ts +2 -2
- package/src/clients/civitai/index.ts +5 -5
- package/src/clients/client-template.ts +4 -4
- package/src/clients/comfyui/index.ts +4 -4
- package/src/clients/elevenlabs/index.ts +4 -4
- package/src/clients/openai/index.ts +7 -7
- package/src/clients/supabase/index.ts +4 -4
- package/src/clients/voicebox/index.ts +4 -4
- package/src/command.ts +2 -1
- package/src/commands/chat.ts +1 -0
- package/src/commands/eval.ts +2 -56
- package/src/commands/introspect.ts +1 -1
- package/src/commands/prompt.ts +41 -9
- package/src/container-describer.ts +8 -1
- package/src/container.ts +13 -0
- package/src/entity.ts +2 -2
- package/src/helper.ts +1 -1
- package/src/introspection/generated.agi.ts +29596 -27654
- package/src/introspection/generated.node.ts +20284 -19247
- package/src/introspection/generated.web.ts +605 -584
- package/src/introspection/scan.ts +11 -6
- package/src/node/container.ts +9 -1
- package/src/node/features/content-db.ts +39 -2
- package/src/node/features/display-result.ts +57 -0
- package/src/node/features/helpers.ts +46 -7
- package/src/node/features/python.ts +25 -19
- package/src/node/features/repl.ts +1 -1
- package/src/node/features/secure-shell.ts +11 -17
- package/src/node/features/semantic-search.ts +2 -2
- package/src/node/features/socket-repl.ts +336 -0
- package/src/node/features/telnyx-assistant-connector.ts +1206 -0
- package/src/node/features/transpiler.ts +2 -3
- package/src/node/features/ui.ts +5 -0
- package/src/node/features/vm.ts +20 -3
- package/src/node.ts +3 -3
- package/src/python/generated.ts +0 -1
- package/src/scaffolds/generated.ts +82 -83
- package/src/selector.ts +1 -1
- package/src/servers/express.ts +1 -1
- package/src/web/features/helpers.ts +22 -0
- package/tsconfig.json +12 -12
- package/docs/CLI.md +0 -335
- package/docs/CNAME +0 -1
- package/docs/README.md +0 -60
- package/docs/TABLE-OF-CONTENTS.md +0 -183
- package/docs/apis/clients/elevenlabs.md +0 -308
- package/docs/apis/clients/graph.md +0 -107
- package/docs/apis/clients/openai.md +0 -429
- package/docs/apis/clients/rest.md +0 -161
- package/docs/apis/clients/websocket.md +0 -174
- package/docs/apis/features/agi/assistant.md +0 -625
- package/docs/apis/features/agi/assistants-manager.md +0 -282
- package/docs/apis/features/agi/auto-assistant.md +0 -279
- package/docs/apis/features/agi/browser-use.md +0 -802
- package/docs/apis/features/agi/claude-code.md +0 -884
- package/docs/apis/features/agi/conversation-history.md +0 -364
- package/docs/apis/features/agi/conversation.md +0 -548
- package/docs/apis/features/agi/docs-reader.md +0 -99
- package/docs/apis/features/agi/file-tools.md +0 -163
- package/docs/apis/features/agi/luca-coder.md +0 -407
- package/docs/apis/features/agi/openai-codex.md +0 -396
- package/docs/apis/features/agi/openapi.md +0 -138
- package/docs/apis/features/agi/semantic-search.md +0 -387
- package/docs/apis/features/agi/skills-library.md +0 -239
- package/docs/apis/features/node/container-link.md +0 -192
- package/docs/apis/features/node/content-db.md +0 -450
- package/docs/apis/features/node/disk-cache.md +0 -379
- package/docs/apis/features/node/dns.md +0 -652
- package/docs/apis/features/node/docker.md +0 -706
- package/docs/apis/features/node/downloader.md +0 -81
- package/docs/apis/features/node/esbuild.md +0 -60
- package/docs/apis/features/node/file-manager.md +0 -191
- package/docs/apis/features/node/fs.md +0 -1217
- package/docs/apis/features/node/git.md +0 -371
- package/docs/apis/features/node/google-auth.md +0 -193
- package/docs/apis/features/node/google-calendar.md +0 -202
- package/docs/apis/features/node/google-docs.md +0 -173
- package/docs/apis/features/node/google-drive.md +0 -246
- package/docs/apis/features/node/google-mail.md +0 -214
- package/docs/apis/features/node/google-sheets.md +0 -194
- package/docs/apis/features/node/grep.md +0 -292
- package/docs/apis/features/node/helpers.md +0 -164
- package/docs/apis/features/node/ink.md +0 -334
- package/docs/apis/features/node/ipc-socket.md +0 -249
- package/docs/apis/features/node/json-tree.md +0 -86
- package/docs/apis/features/node/networking.md +0 -316
- package/docs/apis/features/node/nlp.md +0 -133
- package/docs/apis/features/node/opener.md +0 -97
- package/docs/apis/features/node/os.md +0 -146
- package/docs/apis/features/node/package-finder.md +0 -392
- package/docs/apis/features/node/postgres.md +0 -234
- package/docs/apis/features/node/proc.md +0 -399
- package/docs/apis/features/node/process-manager.md +0 -305
- package/docs/apis/features/node/python.md +0 -604
- package/docs/apis/features/node/redis.md +0 -380
- package/docs/apis/features/node/repl.md +0 -88
- package/docs/apis/features/node/runpod.md +0 -674
- package/docs/apis/features/node/secure-shell.md +0 -176
- package/docs/apis/features/node/semantic-search.md +0 -408
- package/docs/apis/features/node/sqlite.md +0 -233
- package/docs/apis/features/node/telegram.md +0 -279
- package/docs/apis/features/node/transpiler.md +0 -74
- package/docs/apis/features/node/tts.md +0 -133
- package/docs/apis/features/node/ui.md +0 -701
- package/docs/apis/features/node/vault.md +0 -59
- package/docs/apis/features/node/vm.md +0 -75
- package/docs/apis/features/node/yaml-tree.md +0 -85
- package/docs/apis/features/node/yaml.md +0 -176
- package/docs/apis/features/web/asset-loader.md +0 -59
- package/docs/apis/features/web/container-link.md +0 -192
- package/docs/apis/features/web/esbuild.md +0 -54
- package/docs/apis/features/web/helpers.md +0 -164
- package/docs/apis/features/web/network.md +0 -44
- package/docs/apis/features/web/speech.md +0 -69
- package/docs/apis/features/web/vault.md +0 -59
- package/docs/apis/features/web/vm.md +0 -75
- package/docs/apis/features/web/voice.md +0 -84
- package/docs/apis/servers/express.md +0 -171
- package/docs/apis/servers/mcp.md +0 -238
- package/docs/apis/servers/websocket.md +0 -170
- package/docs/bootstrap/CLAUDE.md +0 -101
- package/docs/bootstrap/SKILL.md +0 -341
- package/docs/bootstrap/templates/about-command.ts +0 -41
- package/docs/bootstrap/templates/docs-models.ts +0 -22
- package/docs/bootstrap/templates/docs-readme.md +0 -43
- package/docs/bootstrap/templates/example-feature.ts +0 -53
- package/docs/bootstrap/templates/health-endpoint.ts +0 -15
- package/docs/bootstrap/templates/luca-cli.ts +0 -30
- package/docs/bootstrap/templates/runme.md +0 -54
- package/docs/challenges/caching-proxy.md +0 -16
- package/docs/challenges/content-db-round-trip.md +0 -14
- package/docs/challenges/custom-command.md +0 -9
- package/docs/challenges/file-watcher-pipeline.md +0 -11
- package/docs/challenges/grep-audit-report.md +0 -15
- package/docs/challenges/multi-feature-dashboard.md +0 -14
- package/docs/challenges/process-orchestrator.md +0 -17
- package/docs/challenges/rest-api-server-with-client.md +0 -12
- package/docs/challenges/script-runner-with-vm.md +0 -11
- package/docs/challenges/simple-rest-api.md +0 -15
- package/docs/challenges/websocket-serve-and-client.md +0 -11
- package/docs/challenges/yaml-config-system.md +0 -14
- package/docs/command-system-overhaul.md +0 -94
- package/docs/documentation-audit.md +0 -134
- package/docs/examples/assistant/CORE.md +0 -18
- package/docs/examples/assistant/hooks.ts +0 -3
- package/docs/examples/assistant/tools.ts +0 -10
- package/docs/examples/assistant-hooks-reference.ts +0 -171
- package/docs/examples/assistant-with-process-manager.md +0 -84
- package/docs/examples/content-db.md +0 -77
- package/docs/examples/disk-cache.md +0 -83
- package/docs/examples/docker.md +0 -101
- package/docs/examples/downloader.md +0 -70
- package/docs/examples/entity.md +0 -124
- package/docs/examples/esbuild.md +0 -80
- package/docs/examples/feature-as-tool-provider.md +0 -143
- package/docs/examples/file-manager.md +0 -82
- package/docs/examples/fs.md +0 -83
- package/docs/examples/git.md +0 -85
- package/docs/examples/google-auth.md +0 -88
- package/docs/examples/google-calendar.md +0 -94
- package/docs/examples/google-docs.md +0 -82
- package/docs/examples/google-drive.md +0 -96
- package/docs/examples/google-sheets.md +0 -95
- package/docs/examples/grep.md +0 -85
- package/docs/examples/ink-blocks.md +0 -75
- package/docs/examples/ink-renderer.md +0 -41
- package/docs/examples/ink.md +0 -103
- package/docs/examples/ipc-socket.md +0 -103
- package/docs/examples/json-tree.md +0 -91
- package/docs/examples/networking.md +0 -58
- package/docs/examples/nlp.md +0 -91
- package/docs/examples/opener.md +0 -78
- package/docs/examples/os.md +0 -72
- package/docs/examples/package-finder.md +0 -89
- package/docs/examples/postgres.md +0 -91
- package/docs/examples/proc.md +0 -81
- package/docs/examples/process-manager.md +0 -79
- package/docs/examples/python.md +0 -132
- package/docs/examples/repl.md +0 -93
- package/docs/examples/runpod.md +0 -119
- package/docs/examples/secure-shell.md +0 -92
- package/docs/examples/sqlite.md +0 -86
- package/docs/examples/structured-output-with-assistants.md +0 -144
- package/docs/examples/telegram.md +0 -77
- package/docs/examples/tts.md +0 -86
- package/docs/examples/ui.md +0 -80
- package/docs/examples/vault.md +0 -70
- package/docs/examples/vm.md +0 -86
- package/docs/examples/websocket-ask-and-reply-example.md +0 -128
- package/docs/examples/yaml-tree.md +0 -93
- package/docs/examples/yaml.md +0 -104
- package/docs/ideas/assistant-factory-pattern.md +0 -142
- package/docs/in-memory-fs.md +0 -4
- package/docs/introspection-audit.md +0 -49
- package/docs/introspection.md +0 -164
- package/docs/mcp/readme.md +0 -162
- package/docs/models.ts +0 -41
- package/docs/philosophy.md +0 -86
- package/docs/principles.md +0 -7
- package/docs/prompts/audit-codebase-for-failures-to-use-the-container.md +0 -34
- package/docs/prompts/check-for-undocumented-features.md +0 -27
- package/docs/prompts/mcp-test-easy-command.md +0 -27
- package/docs/scaffolds/client.md +0 -149
- package/docs/scaffolds/command.md +0 -120
- package/docs/scaffolds/endpoint.md +0 -171
- package/docs/scaffolds/feature.md +0 -158
- package/docs/scaffolds/selector.md +0 -91
- package/docs/scaffolds/server.md +0 -196
- package/docs/selectors.md +0 -115
- package/docs/sessions/custom-command/attempt-log-2.md +0 -195
- package/docs/sessions/file-watcher-pipeline/attempt-log-1.md +0 -728
- package/docs/sessions/file-watcher-pipeline/attempt-log-2.md +0 -555
- package/docs/sessions/grep-audit-report/attempt-log-1.md +0 -289
- package/docs/sessions/multi-feature-dashboard/attempt-log-2.md +0 -679
- package/docs/sessions/rest-api-server-with-client/attempt-log-1.md +0 -1
- package/docs/sessions/rest-api-server-with-client/attempt-log-3.md +0 -920
- package/docs/sessions/simple-rest-api/attempt-log-1.md +0 -593
- package/docs/sessions/websocket-serve-and-client/attempt-log-2.md +0 -995
- package/docs/tutorials/00-bootstrap.md +0 -166
- package/docs/tutorials/01-getting-started.md +0 -106
- package/docs/tutorials/02-container.md +0 -210
- package/docs/tutorials/03-scripts.md +0 -194
- package/docs/tutorials/04-features-overview.md +0 -196
- package/docs/tutorials/05-state-and-events.md +0 -171
- package/docs/tutorials/06-servers.md +0 -157
- package/docs/tutorials/07-endpoints.md +0 -198
- package/docs/tutorials/08-commands.md +0 -252
- package/docs/tutorials/09-clients.md +0 -162
- package/docs/tutorials/10-creating-features.md +0 -203
- package/docs/tutorials/11-contentbase.md +0 -191
- package/docs/tutorials/12-assistants.md +0 -215
- package/docs/tutorials/13-introspection.md +0 -157
- package/docs/tutorials/14-type-system.md +0 -174
- package/docs/tutorials/15-project-patterns.md +0 -222
- package/docs/tutorials/16-google-features.md +0 -534
- package/docs/tutorials/17-tui-blocks.md +0 -530
- package/docs/tutorials/18-semantic-search.md +0 -334
- package/docs/tutorials/19-python-sessions.md +0 -401
- package/docs/tutorials/20-browser-esm.md +0 -234
- package/index.ts +0 -1
- package/src/agi/endpoints/ask.ts +0 -60
- package/src/agi/endpoints/conversations/[id].ts +0 -45
- package/src/agi/endpoints/conversations.ts +0 -31
- package/src/agi/endpoints/experts.ts +0 -37
- package/test/assistant-hooks.test.ts +0 -306
- package/test/assistant.test.ts +0 -81
- package/test/bus.test.ts +0 -134
- package/test/clients-servers.test.ts +0 -217
- package/test/command.test.ts +0 -267
- package/test/container-link.test.ts +0 -274
- package/test/conversation.test.ts +0 -220
- package/test/features.test.ts +0 -160
- package/test/fork-and-research.test.ts +0 -450
- package/test/integration.test.ts +0 -787
- package/test/interceptor-chain.test.ts +0 -61
- package/test/node-container.test.ts +0 -121
- package/test/python-session.test.ts +0 -105
- package/test/rate-limit.test.ts +0 -272
- package/test/semantic-search.test.ts +0 -550
- package/test/state.test.ts +0 -121
- package/test/vm-context.test.ts +0 -146
- package/test/vm-loadmodule.test.ts +0 -213
- package/test/websocket-ask.test.ts +0 -101
- package/test-integration/assistant.test.ts +0 -138
- package/test-integration/assistants-manager.test.ts +0 -113
- package/test-integration/claude-code.test.ts +0 -98
- package/test-integration/conversation-history.test.ts +0 -205
- package/test-integration/conversation.test.ts +0 -137
- package/test-integration/elevenlabs.test.ts +0 -55
- package/test-integration/google-services.test.ts +0 -80
- package/test-integration/helpers.ts +0 -89
- package/test-integration/memory.test.ts +0 -204
- package/test-integration/openai-codex.test.ts +0 -93
- package/test-integration/runpod.test.ts +0 -58
- package/test-integration/server-endpoints.test.ts +0 -97
- package/test-integration/telegram.test.ts +0 -46
|
@@ -1,625 +0,0 @@
|
|
|
1
|
-
# Assistant (features.assistant)
|
|
2
|
-
|
|
3
|
-
An Assistant is a combination of a system prompt and tool calls that has a conversation with an LLM. You define an assistant by creating a folder with CORE.md (system prompt), tools.ts (tool implementations), and hooks.ts (event handlers).
|
|
4
|
-
|
|
5
|
-
## Usage
|
|
6
|
-
|
|
7
|
-
```ts
|
|
8
|
-
container.feature('assistant', {
|
|
9
|
-
// The folder containing the assistant definition. Defaults to cwd for runtime-created assistants.
|
|
10
|
-
folder,
|
|
11
|
-
// The folder containing the assistant documentation
|
|
12
|
-
docsFolder,
|
|
13
|
-
// Provide a complete system prompt directly, bypassing CORE.md
|
|
14
|
-
systemPrompt,
|
|
15
|
-
// Text to prepend to the system prompt
|
|
16
|
-
prependPrompt,
|
|
17
|
-
// Text to append to the system prompt
|
|
18
|
-
appendPrompt,
|
|
19
|
-
// Override or extend the tools loaded from tools.ts
|
|
20
|
-
tools,
|
|
21
|
-
// Override or extend schemas whose keys match tool names
|
|
22
|
-
schemas,
|
|
23
|
-
// OpenAI model to use
|
|
24
|
-
model,
|
|
25
|
-
// Maximum number of output tokens per completion
|
|
26
|
-
maxTokens,
|
|
27
|
-
// Sampling temperature (0-2)
|
|
28
|
-
temperature,
|
|
29
|
-
// Nucleus sampling cutoff (0-1)
|
|
30
|
-
topP,
|
|
31
|
-
// Top-K sampling. Only supported by local/Anthropic models
|
|
32
|
-
topK,
|
|
33
|
-
// Frequency penalty (-2 to 2)
|
|
34
|
-
frequencyPenalty,
|
|
35
|
-
// Presence penalty (-2 to 2)
|
|
36
|
-
presencePenalty,
|
|
37
|
-
// Stop sequences
|
|
38
|
-
stop,
|
|
39
|
-
// Whether to use our local models for this
|
|
40
|
-
local,
|
|
41
|
-
// Conversation history persistence mode
|
|
42
|
-
historyMode,
|
|
43
|
-
// Prepend timestamps to user messages so the assistant can perceive time passing between sessions
|
|
44
|
-
injectTimestamps,
|
|
45
|
-
// Strict allowlist of tool name patterns. Only matching tools are available. Supports * glob matching.
|
|
46
|
-
allowTools,
|
|
47
|
-
// Denylist of tool name patterns to exclude. Supports * glob matching.
|
|
48
|
-
forbidTools,
|
|
49
|
-
// Explicit list of tool names to include (exact match). Shorthand for allowTools without glob patterns.
|
|
50
|
-
toolNames,
|
|
51
|
-
})
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
## Options (Zod v4 schema)
|
|
55
|
-
|
|
56
|
-
| Property | Type | Description |
|
|
57
|
-
|----------|------|-------------|
|
|
58
|
-
| `folder` | `string` | The folder containing the assistant definition. Defaults to cwd for runtime-created assistants. |
|
|
59
|
-
| `docsFolder` | `string` | The folder containing the assistant documentation |
|
|
60
|
-
| `systemPrompt` | `string` | Provide a complete system prompt directly, bypassing CORE.md |
|
|
61
|
-
| `prependPrompt` | `string` | Text to prepend to the system prompt |
|
|
62
|
-
| `appendPrompt` | `string` | Text to append to the system prompt |
|
|
63
|
-
| `tools` | `object` | Override or extend the tools loaded from tools.ts |
|
|
64
|
-
| `schemas` | `object` | Override or extend schemas whose keys match tool names |
|
|
65
|
-
| `model` | `string` | OpenAI model to use |
|
|
66
|
-
| `maxTokens` | `number` | Maximum number of output tokens per completion |
|
|
67
|
-
| `temperature` | `number` | Sampling temperature (0-2) |
|
|
68
|
-
| `topP` | `number` | Nucleus sampling cutoff (0-1) |
|
|
69
|
-
| `topK` | `number` | Top-K sampling. Only supported by local/Anthropic models |
|
|
70
|
-
| `frequencyPenalty` | `number` | Frequency penalty (-2 to 2) |
|
|
71
|
-
| `presencePenalty` | `number` | Presence penalty (-2 to 2) |
|
|
72
|
-
| `stop` | `array` | Stop sequences |
|
|
73
|
-
| `local` | `boolean` | Whether to use our local models for this |
|
|
74
|
-
| `historyMode` | `string` | Conversation history persistence mode |
|
|
75
|
-
| `injectTimestamps` | `boolean` | Prepend timestamps to user messages so the assistant can perceive time passing between sessions |
|
|
76
|
-
| `allowTools` | `array` | Strict allowlist of tool name patterns. Only matching tools are available. Supports * glob matching. |
|
|
77
|
-
| `forbidTools` | `array` | Denylist of tool name patterns to exclude. Supports * glob matching. |
|
|
78
|
-
| `toolNames` | `array` | Explicit list of tool names to include (exact match). Shorthand for allowTools without glob patterns. |
|
|
79
|
-
|
|
80
|
-
## Methods
|
|
81
|
-
|
|
82
|
-
### intercept
|
|
83
|
-
|
|
84
|
-
Register an interceptor at a given point in the pipeline.
|
|
85
|
-
|
|
86
|
-
**Parameters:**
|
|
87
|
-
|
|
88
|
-
| Name | Type | Required | Description |
|
|
89
|
-
|------|------|----------|-------------|
|
|
90
|
-
| `point` | `K` | ✓ | The interception point |
|
|
91
|
-
| `fn` | `InterceptorFn<InterceptorPoints[K]>` | ✓ | Middleware function receiving (ctx, next) |
|
|
92
|
-
|
|
93
|
-
**Returns:** `this`
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
### afterInitialize
|
|
98
|
-
|
|
99
|
-
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.
|
|
100
|
-
|
|
101
|
-
**Returns:** `void`
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
### addSystemPromptExtension
|
|
106
|
-
|
|
107
|
-
Add or update a named system prompt extension. The value is appended to the base system prompt when passed to the conversation.
|
|
108
|
-
|
|
109
|
-
**Parameters:**
|
|
110
|
-
|
|
111
|
-
| Name | Type | Required | Description |
|
|
112
|
-
|------|------|----------|-------------|
|
|
113
|
-
| `key` | `string` | ✓ | A unique identifier for this extension |
|
|
114
|
-
| `value` | `string` | ✓ | The text to append |
|
|
115
|
-
|
|
116
|
-
**Returns:** `this`
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
### removeSystemPromptExtension
|
|
121
|
-
|
|
122
|
-
Remove a named system prompt extension.
|
|
123
|
-
|
|
124
|
-
**Parameters:**
|
|
125
|
-
|
|
126
|
-
| Name | Type | Required | Description |
|
|
127
|
-
|------|------|----------|-------------|
|
|
128
|
-
| `key` | `string` | ✓ | The identifier of the extension to remove |
|
|
129
|
-
|
|
130
|
-
**Returns:** `this`
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
### use
|
|
135
|
-
|
|
136
|
-
Apply a setup function or a Helper instance to this assistant. When passed a function, it receives the assistant and can configure tools, hooks, event listeners, etc. When passed a Helper instance that exposes tools via toTools(), those tools are automatically added to this assistant.
|
|
137
|
-
|
|
138
|
-
**Parameters:**
|
|
139
|
-
|
|
140
|
-
| Name | Type | Required | Description |
|
|
141
|
-
|------|------|----------|-------------|
|
|
142
|
-
| `fnOrHelper` | `((assistant: this) => void | Promise<void>) | { toTools: () => { schemas: Record<string, z.ZodType>, handlers: Record<string, Function> } } | { schemas: Record<string, z.ZodType>, handlers: Record<string, Function> }` | ✓ | Setup function or Helper instance |
|
|
143
|
-
|
|
144
|
-
**Returns:** `this`
|
|
145
|
-
|
|
146
|
-
```ts
|
|
147
|
-
assistant
|
|
148
|
-
.use(setupLogging)
|
|
149
|
-
.use(container.feature('git'))
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
### addTool
|
|
155
|
-
|
|
156
|
-
Add a tool to this assistant. The tool name is derived from the handler's function name.
|
|
157
|
-
|
|
158
|
-
**Parameters:**
|
|
159
|
-
|
|
160
|
-
| Name | Type | Required | Description |
|
|
161
|
-
|------|------|----------|-------------|
|
|
162
|
-
| `name` | `string` | ✓ | Parameter name |
|
|
163
|
-
| `handler` | `(...args: any[]) => any` | ✓ | A named function that implements the tool |
|
|
164
|
-
| `schema` | `z.ZodType` | | Optional Zod schema describing the tool's parameters |
|
|
165
|
-
|
|
166
|
-
**Returns:** `this`
|
|
167
|
-
|
|
168
|
-
```ts
|
|
169
|
-
assistant.addTool(function getWeather(args) {
|
|
170
|
-
return { temp: 72 }
|
|
171
|
-
}, z.object({ city: z.string() }).describe('Get weather for a city'))
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
### removeTool
|
|
177
|
-
|
|
178
|
-
Remove a tool by name or handler function reference.
|
|
179
|
-
|
|
180
|
-
**Parameters:**
|
|
181
|
-
|
|
182
|
-
| Name | Type | Required | Description |
|
|
183
|
-
|------|------|----------|-------------|
|
|
184
|
-
| `nameOrHandler` | `string | ((...args: any[]) => any)` | ✓ | The tool name string, or the handler function to match |
|
|
185
|
-
|
|
186
|
-
**Returns:** `this`
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
### simulateToolCallWithResult
|
|
191
|
-
|
|
192
|
-
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.
|
|
193
|
-
|
|
194
|
-
**Parameters:**
|
|
195
|
-
|
|
196
|
-
| Name | Type | Required | Description |
|
|
197
|
-
|------|------|----------|-------------|
|
|
198
|
-
| `toolCallName` | `string` | ✓ | The name of the tool |
|
|
199
|
-
| `args` | `Record<string, any>` | ✓ | The arguments that were "passed" to the tool |
|
|
200
|
-
| `result` | `any` | ✓ | The result the tool "returned" |
|
|
201
|
-
|
|
202
|
-
**Returns:** `this`
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
### simulateQuestionAndResponse
|
|
207
|
-
|
|
208
|
-
Simulate a user question and assistant response by appending both messages to the conversation history.
|
|
209
|
-
|
|
210
|
-
**Parameters:**
|
|
211
|
-
|
|
212
|
-
| Name | Type | Required | Description |
|
|
213
|
-
|------|------|----------|-------------|
|
|
214
|
-
| `question` | `string` | ✓ | The user's question |
|
|
215
|
-
| `response` | `string` | ✓ | The assistant's response |
|
|
216
|
-
|
|
217
|
-
**Returns:** `this`
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
### loadSystemPrompt
|
|
222
|
-
|
|
223
|
-
Load the system prompt from CORE.md, applying any prepend/append options. YAML frontmatter (between --- fences) is stripped from the prompt and stored in `_meta`.
|
|
224
|
-
|
|
225
|
-
**Returns:** `string`
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
### loadTools
|
|
230
|
-
|
|
231
|
-
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.
|
|
232
|
-
|
|
233
|
-
**Returns:** `Record<string, ConversationTool>`
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
### loadHooks
|
|
238
|
-
|
|
239
|
-
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.
|
|
240
|
-
|
|
241
|
-
**Returns:** `Record<string, (...args: any[]) => any>`
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
### resumeThread
|
|
246
|
-
|
|
247
|
-
Override thread for resume. Call before start().
|
|
248
|
-
|
|
249
|
-
**Parameters:**
|
|
250
|
-
|
|
251
|
-
| Name | Type | Required | Description |
|
|
252
|
-
|------|------|----------|-------------|
|
|
253
|
-
| `threadId` | `string` | ✓ | The thread ID to resume |
|
|
254
|
-
|
|
255
|
-
**Returns:** `this`
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
### listHistory
|
|
260
|
-
|
|
261
|
-
List saved conversations for this assistant+project.
|
|
262
|
-
|
|
263
|
-
**Parameters:**
|
|
264
|
-
|
|
265
|
-
| Name | Type | Required | Description |
|
|
266
|
-
|------|------|----------|-------------|
|
|
267
|
-
| `opts` | `{ limit?: number }` | | Optional limit |
|
|
268
|
-
|
|
269
|
-
**Returns:** `Promise<ConversationMeta[]>`
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
### clearHistory
|
|
274
|
-
|
|
275
|
-
Delete all history for this assistant+project.
|
|
276
|
-
|
|
277
|
-
**Returns:** `Promise<number>`
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
### reload
|
|
282
|
-
|
|
283
|
-
Reload tools, hooks, and system prompt from disk. Useful during development or when tool/hook files have been modified and you want the assistant to pick up changes without restarting.
|
|
284
|
-
|
|
285
|
-
**Returns:** `this`
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
### start
|
|
290
|
-
|
|
291
|
-
Start the assistant by creating the conversation and wiring up events. The system prompt, tools, and hooks are already loaded synchronously during initialization.
|
|
292
|
-
|
|
293
|
-
**Returns:** `Promise<this>`
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
### ask
|
|
298
|
-
|
|
299
|
-
Ask the assistant a question. It will use its tools to produce a streamed response. The assistant auto-starts if needed.
|
|
300
|
-
|
|
301
|
-
**Parameters:**
|
|
302
|
-
|
|
303
|
-
| Name | Type | Required | Description |
|
|
304
|
-
|------|------|----------|-------------|
|
|
305
|
-
| `question` | `string | ContentPart[]` | ✓ | The question to ask |
|
|
306
|
-
| `options` | `AskOptions` | | Parameter options |
|
|
307
|
-
|
|
308
|
-
**Returns:** `Promise<string>`
|
|
309
|
-
|
|
310
|
-
```ts
|
|
311
|
-
const answer = await assistant.ask('What capabilities do you have?')
|
|
312
|
-
```
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
### save
|
|
317
|
-
|
|
318
|
-
Save the conversation to disk via conversationHistory.
|
|
319
|
-
|
|
320
|
-
**Parameters:**
|
|
321
|
-
|
|
322
|
-
| Name | Type | Required | Description |
|
|
323
|
-
|------|------|----------|-------------|
|
|
324
|
-
| `opts` | `{ title?: string; tags?: string[]; thread?: string; metadata?: Record<string, any> }` | | Optional overrides for title, tags, thread, or metadata |
|
|
325
|
-
|
|
326
|
-
**Returns:** `void`
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
### subagent
|
|
331
|
-
|
|
332
|
-
Get or create a subagent assistant. Uses the assistantsManager to discover and create the assistant, then caches the instance for reuse across tool calls.
|
|
333
|
-
|
|
334
|
-
**Parameters:**
|
|
335
|
-
|
|
336
|
-
| Name | Type | Required | Description |
|
|
337
|
-
|------|------|----------|-------------|
|
|
338
|
-
| `id` | `string` | ✓ | The assistant name (e.g. 'codingAssistant') |
|
|
339
|
-
| `options` | `Record<string, any>` | | Additional options to pass to the assistant constructor |
|
|
340
|
-
|
|
341
|
-
**Returns:** `Promise<Assistant>`
|
|
342
|
-
|
|
343
|
-
```ts
|
|
344
|
-
const researcher = await assistant.subagent('codingAssistant')
|
|
345
|
-
const answer = await researcher.ask('Find all usages of container.feature("fs")')
|
|
346
|
-
```
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
## Getters
|
|
351
|
-
|
|
352
|
-
| Property | Type | Description |
|
|
353
|
-
|----------|------|-------------|
|
|
354
|
-
| `name` | `any` | |
|
|
355
|
-
| `resolvedFolder` | `string` | The absolute resolved path to the assistant folder. |
|
|
356
|
-
| `corePromptPath` | `string` | The path to CORE.md which provides the system prompt. |
|
|
357
|
-
| `toolsModulePath` | `string` | The path to tools.ts which provides tool implementations and schemas. |
|
|
358
|
-
| `hooksModulePath` | `string` | The path to hooks.ts which provides event handler functions. |
|
|
359
|
-
| `hasVoice` | `boolean` | Whether this assistant has a voice.yaml configuration file. |
|
|
360
|
-
| `voiceConfig` | `Record<string, any> | undefined` | Parsed voice configuration from voice.yaml, or undefined if not present. |
|
|
361
|
-
| `resolvedDocsFolder` | `any` | |
|
|
362
|
-
| `contentDb` | `ContentDb` | Returns an instance of a ContentDb feature for the resolved docs folder |
|
|
363
|
-
| `conversation` | `Conversation` | |
|
|
364
|
-
| `availableTools` | `any` | |
|
|
365
|
-
| `messages` | `any` | |
|
|
366
|
-
| `isStarted` | `boolean` | Whether the assistant has been started and is ready to receive questions. |
|
|
367
|
-
| `systemPrompt` | `string` | The current system prompt text. |
|
|
368
|
-
| `systemPromptExtensions` | `Record<string, string>` | The named extensions appended to the system prompt. |
|
|
369
|
-
| `effectiveSystemPrompt` | `string` | The system prompt with all extensions appended. This is the value passed to the conversation. |
|
|
370
|
-
| `tools` | `Record<string, ConversationTool>` | The tools registered with this assistant. |
|
|
371
|
-
| `meta` | `Record<string, any>` | Parsed YAML frontmatter from CORE.md, or empty object if none. |
|
|
372
|
-
| `effectiveOptions` | `AssistantOptions & Record<string, any>` | Merged options where CORE.md frontmatter provides defaults and constructor options take precedence. Prefer this over `this.options` anywhere model parameters or runtime config is consumed. |
|
|
373
|
-
| `paths` | `any` | Provides a helper for creating paths off of the assistant's base folder |
|
|
374
|
-
| `assistantName` | `string` | The assistant name derived from the folder basename. |
|
|
375
|
-
| `cwdHash` | `string` | An 8-char hash of the container cwd for per-project thread isolation. |
|
|
376
|
-
| `threadPrefix` | `string` | The thread prefix for this assistant+project combination. |
|
|
377
|
-
| `conversationHistory` | `ConversationHistory` | The conversationHistory feature instance. |
|
|
378
|
-
| `currentThreadId` | `string | undefined` | The active thread ID (undefined in lifecycle mode). |
|
|
379
|
-
| `availableSubagents` | `string[]` | Names of assistants available as subagents, discovered via the assistantsManager. |
|
|
380
|
-
|
|
381
|
-
## Events (Zod v4 schema)
|
|
382
|
-
|
|
383
|
-
### created
|
|
384
|
-
|
|
385
|
-
Emitted immediately after the assistant loads its prompt, tools, and hooks.
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
### systemPromptExtensionsChanged
|
|
390
|
-
|
|
391
|
-
Emitted when system prompt extensions are added or removed
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
### toolsChanged
|
|
396
|
-
|
|
397
|
-
Event emitted by Assistant
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
### hookFired
|
|
402
|
-
|
|
403
|
-
Emitted when a hook function is called
|
|
404
|
-
|
|
405
|
-
**Event Arguments:**
|
|
406
|
-
|
|
407
|
-
| Name | Type | Description |
|
|
408
|
-
|------|------|-------------|
|
|
409
|
-
| `arg0` | `string` | Hook/event name |
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
### reloaded
|
|
414
|
-
|
|
415
|
-
Emitted after tools, hooks, and system prompt are reloaded from disk
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
### turnStart
|
|
420
|
-
|
|
421
|
-
Emitted when a new completion turn begins. isFollowUp is true when resuming after tool calls
|
|
422
|
-
|
|
423
|
-
**Event Arguments:**
|
|
424
|
-
|
|
425
|
-
| Name | Type | Description |
|
|
426
|
-
|------|------|-------------|
|
|
427
|
-
| `turn` | `number` | |
|
|
428
|
-
| `isFollowUp` | `boolean` | |
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
### turnEnd
|
|
433
|
-
|
|
434
|
-
Emitted when a completion turn ends. hasToolCalls indicates whether tool calls will follow
|
|
435
|
-
|
|
436
|
-
**Event Arguments:**
|
|
437
|
-
|
|
438
|
-
| Name | Type | Description |
|
|
439
|
-
|------|------|-------------|
|
|
440
|
-
| `turn` | `number` | |
|
|
441
|
-
| `hasToolCalls` | `boolean` | |
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
### chunk
|
|
446
|
-
|
|
447
|
-
Emitted as tokens stream in
|
|
448
|
-
|
|
449
|
-
**Event Arguments:**
|
|
450
|
-
|
|
451
|
-
| Name | Type | Description |
|
|
452
|
-
|------|------|-------------|
|
|
453
|
-
| `arg0` | `string` | A chunk of streamed text |
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
### preview
|
|
458
|
-
|
|
459
|
-
Emitted with the full response text accumulated across all turns
|
|
460
|
-
|
|
461
|
-
**Event Arguments:**
|
|
462
|
-
|
|
463
|
-
| Name | Type | Description |
|
|
464
|
-
|------|------|-------------|
|
|
465
|
-
| `arg0` | `string` | The accumulated response so far |
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
### response
|
|
470
|
-
|
|
471
|
-
Emitted when a complete response is produced (accumulated across all turns)
|
|
472
|
-
|
|
473
|
-
**Event Arguments:**
|
|
474
|
-
|
|
475
|
-
| Name | Type | Description |
|
|
476
|
-
|------|------|-------------|
|
|
477
|
-
| `arg0` | `string` | The final response text |
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
### rawEvent
|
|
482
|
-
|
|
483
|
-
Emitted for each raw streaming event from the underlying conversation transport
|
|
484
|
-
|
|
485
|
-
**Event Arguments:**
|
|
486
|
-
|
|
487
|
-
| Name | Type | Description |
|
|
488
|
-
|------|------|-------------|
|
|
489
|
-
| `arg0` | `any` | A raw streaming event from the active model API |
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
### mcpEvent
|
|
494
|
-
|
|
495
|
-
Emitted for MCP-specific streaming and output-item events when using Responses API MCP tools
|
|
496
|
-
|
|
497
|
-
**Event Arguments:**
|
|
498
|
-
|
|
499
|
-
| Name | Type | Description |
|
|
500
|
-
|------|------|-------------|
|
|
501
|
-
| `arg0` | `any` | A raw MCP-related streaming event |
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
### toolCall
|
|
506
|
-
|
|
507
|
-
Emitted when a tool is called
|
|
508
|
-
|
|
509
|
-
**Event Arguments:**
|
|
510
|
-
|
|
511
|
-
| Name | Type | Description |
|
|
512
|
-
|------|------|-------------|
|
|
513
|
-
| `arg0` | `string` | Tool name |
|
|
514
|
-
| `arg1` | `any` | Tool arguments |
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
### toolResult
|
|
519
|
-
|
|
520
|
-
Emitted when a tool returns a result
|
|
521
|
-
|
|
522
|
-
**Event Arguments:**
|
|
523
|
-
|
|
524
|
-
| Name | Type | Description |
|
|
525
|
-
|------|------|-------------|
|
|
526
|
-
| `arg0` | `string` | Tool name |
|
|
527
|
-
| `arg1` | `any` | Result value |
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
### toolError
|
|
532
|
-
|
|
533
|
-
Emitted when a tool call fails
|
|
534
|
-
|
|
535
|
-
**Event Arguments:**
|
|
536
|
-
|
|
537
|
-
| Name | Type | Description |
|
|
538
|
-
|------|------|-------------|
|
|
539
|
-
| `arg0` | `string` | Tool name |
|
|
540
|
-
| `arg1` | `any` | Error |
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
### started
|
|
545
|
-
|
|
546
|
-
Emitted when the assistant has been initialized
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
### answered
|
|
551
|
-
|
|
552
|
-
Event emitted by Assistant
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
## State (Zod v4 schema)
|
|
557
|
-
|
|
558
|
-
| Property | Type | Description |
|
|
559
|
-
|----------|------|-------------|
|
|
560
|
-
| `enabled` | `boolean` | Whether this feature is currently enabled |
|
|
561
|
-
| `started` | `boolean` | Whether the assistant has been initialized |
|
|
562
|
-
| `conversationCount` | `number` | Number of ask() calls made |
|
|
563
|
-
| `lastResponse` | `string` | The most recent response text |
|
|
564
|
-
| `folder` | `string` | The resolved assistant folder path |
|
|
565
|
-
| `docsFolder` | `string` | The resolved docs folder |
|
|
566
|
-
| `conversationId` | `string` | The active conversation persistence ID |
|
|
567
|
-
| `threadId` | `string` | The active thread ID |
|
|
568
|
-
| `systemPrompt` | `string` | The loaded system prompt text |
|
|
569
|
-
| `systemPromptExtensions` | `object` | Named extensions appended to the system prompt |
|
|
570
|
-
| `meta` | `object` | Parsed YAML frontmatter from CORE.md |
|
|
571
|
-
| `tools` | `object` | Registered tool implementations |
|
|
572
|
-
| `hooks` | `object` | Loaded event hook functions |
|
|
573
|
-
| `resumeThreadId` | `string` | Thread ID override for resume |
|
|
574
|
-
| `pendingPlugins` | `array` | Pending async plugin promises |
|
|
575
|
-
| `conversation` | `any` | The active Conversation feature instance |
|
|
576
|
-
| `subagents` | `object` | Cached subagent instances |
|
|
577
|
-
|
|
578
|
-
## Examples
|
|
579
|
-
|
|
580
|
-
**features.assistant**
|
|
581
|
-
|
|
582
|
-
```ts
|
|
583
|
-
const assistant = container.feature('assistant', {
|
|
584
|
-
folder: 'assistants/my-helper'
|
|
585
|
-
})
|
|
586
|
-
const answer = await assistant.ask('What capabilities do you have?')
|
|
587
|
-
```
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
**use**
|
|
592
|
-
|
|
593
|
-
```ts
|
|
594
|
-
assistant
|
|
595
|
-
.use(setupLogging)
|
|
596
|
-
.use(container.feature('git'))
|
|
597
|
-
```
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
**addTool**
|
|
602
|
-
|
|
603
|
-
```ts
|
|
604
|
-
assistant.addTool(function getWeather(args) {
|
|
605
|
-
return { temp: 72 }
|
|
606
|
-
}, z.object({ city: z.string() }).describe('Get weather for a city'))
|
|
607
|
-
```
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
**ask**
|
|
612
|
-
|
|
613
|
-
```ts
|
|
614
|
-
const answer = await assistant.ask('What capabilities do you have?')
|
|
615
|
-
```
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
**subagent**
|
|
620
|
-
|
|
621
|
-
```ts
|
|
622
|
-
const researcher = await assistant.subagent('codingAssistant')
|
|
623
|
-
const answer = await researcher.ask('Find all usages of container.feature("fs")')
|
|
624
|
-
```
|
|
625
|
-
|