luca 3.0.0 → 3.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/.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 +220 -322
- 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/try-all-challenges.ts +3 -3
- package/commands/try-challenge.ts +3 -3
- 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/index.html +217 -190
- package/luca.console.ts +1 -1
- package/package.json +2 -2
- package/public/index.html +217 -190
- package/public/slides-ai-native.html +1 -1
- package/public/slides-intro.html +2 -2
- 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 +28563 -27571
- package/src/introspection/generated.node.ts +20281 -20194
- package/src/introspection/generated.web.ts +605 -584
- package/src/introspection/scan.ts +11 -6
- package/src/node/container.ts +1 -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 +42 -15
- 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/transpiler.ts +2 -3
- package/src/node/features/ui.ts +5 -0
- package/src/node/features/vm.ts +3 -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/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,282 +0,0 @@
|
|
|
1
|
-
# AssistantsManager (features.assistantsManager)
|
|
2
|
-
|
|
3
|
-
Discovers and manages assistant definitions by looking for subdirectories in two locations: ~/.luca/assistants/ and cwd/assistants/. Each subdirectory containing a CORE.md is treated as an assistant definition. Use `discover()` to scan for available assistants, `list()` to enumerate them, and `create(name)` to instantiate one as a running Assistant feature.
|
|
4
|
-
|
|
5
|
-
## Usage
|
|
6
|
-
|
|
7
|
-
```ts
|
|
8
|
-
container.feature('assistantsManager')
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
## Methods
|
|
12
|
-
|
|
13
|
-
### intercept
|
|
14
|
-
|
|
15
|
-
Registers a pipeline interceptor that is applied to every assistant created by this manager. Interceptors are applied at the given interception point on each assistant at creation time. This mirrors the per-assistant `assistant.intercept(point, fn)` API, but scopes it globally across all assistants managed here — useful for cross-cutting concerns like logging, tracing, or policy enforcement.
|
|
16
|
-
|
|
17
|
-
**Parameters:**
|
|
18
|
-
|
|
19
|
-
| Name | Type | Required | Description |
|
|
20
|
-
|------|------|----------|-------------|
|
|
21
|
-
| `point` | `K` | ✓ | The interception point (beforeAsk, beforeTurn, beforeToolCall, afterToolCall, beforeResponse) |
|
|
22
|
-
| `fn` | `InterceptorFn<InterceptorPoints[K]>` | ✓ | Middleware function receiving (ctx, next) |
|
|
23
|
-
|
|
24
|
-
**Returns:** `this`
|
|
25
|
-
|
|
26
|
-
```ts
|
|
27
|
-
manager.intercept('beforeAsk', async (ctx, next) => {
|
|
28
|
-
console.log(`[${ctx.assistant.name}] asking: ${ctx.message}`)
|
|
29
|
-
await next()
|
|
30
|
-
})
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
### addDiscoveryFolder
|
|
36
|
-
|
|
37
|
-
Registers an additional folder to scan during assistant discovery and immediately triggers a new discovery pass.
|
|
38
|
-
|
|
39
|
-
**Parameters:**
|
|
40
|
-
|
|
41
|
-
| Name | Type | Required | Description |
|
|
42
|
-
|------|------|----------|-------------|
|
|
43
|
-
| `folderPath` | `string` | ✓ | Absolute path to a folder containing assistant subdirectories |
|
|
44
|
-
|
|
45
|
-
**Returns:** `Promise<this>`
|
|
46
|
-
|
|
47
|
-
```ts
|
|
48
|
-
await manager.addDiscoveryFolder('/path/to/more/assistants')
|
|
49
|
-
console.log(manager.available) // includes assistants from the new folder
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
### discover
|
|
55
|
-
|
|
56
|
-
**Returns:** `Promise<this>`
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
### downloadLucaCoreAssistants
|
|
61
|
-
|
|
62
|
-
Downloads the core assistants that ship with luca from GitHub into ~/.luca/assistants.
|
|
63
|
-
|
|
64
|
-
**Returns:** `Promise<{ files: string[]`
|
|
65
|
-
|
|
66
|
-
```ts
|
|
67
|
-
const manager = container.feature('assistantsManager')
|
|
68
|
-
await manager.downloadLucaCoreAssistants()
|
|
69
|
-
await manager.discover()
|
|
70
|
-
console.log(manager.available)
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
### list
|
|
76
|
-
|
|
77
|
-
Returns all discovered assistant entries as an array.
|
|
78
|
-
|
|
79
|
-
**Returns:** `AssistantEntry[]`
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
### get
|
|
84
|
-
|
|
85
|
-
Looks up a single assistant entry by name.
|
|
86
|
-
|
|
87
|
-
**Parameters:**
|
|
88
|
-
|
|
89
|
-
| Name | Type | Required | Description |
|
|
90
|
-
|------|------|----------|-------------|
|
|
91
|
-
| `name` | `string` | ✓ | The assistant name (e.g. 'chief-of-staff') |
|
|
92
|
-
|
|
93
|
-
**Returns:** `AssistantEntry | undefined`
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
### register
|
|
98
|
-
|
|
99
|
-
Registers a factory function that creates an assistant at runtime. Registered factories take precedence over discovered entries when calling `create()`.
|
|
100
|
-
|
|
101
|
-
**Parameters:**
|
|
102
|
-
|
|
103
|
-
| Name | Type | Required | Description |
|
|
104
|
-
|------|------|----------|-------------|
|
|
105
|
-
| `id` | `string` | ✓ | The assistant identifier |
|
|
106
|
-
| `factory` | `(options: Record<string, any>) => Assistant` | ✓ | Factory function that receives create options and returns an Assistant |
|
|
107
|
-
|
|
108
|
-
**Returns:** `this`
|
|
109
|
-
|
|
110
|
-
```ts
|
|
111
|
-
manager.register('custom-bot', (options) => {
|
|
112
|
-
return container.feature('assistant', {
|
|
113
|
-
systemPrompt: 'You are a custom bot.',
|
|
114
|
-
...options,
|
|
115
|
-
})
|
|
116
|
-
})
|
|
117
|
-
const bot = manager.create('custom-bot')
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
### create
|
|
123
|
-
|
|
124
|
-
Creates and returns a new Assistant feature instance for the given name. Checks runtime-registered factories first, then falls back to discovered entries. The assistant is configured with the discovered folder path. Any additional options are merged in.
|
|
125
|
-
|
|
126
|
-
**Parameters:**
|
|
127
|
-
|
|
128
|
-
| Name | Type | Required | Description |
|
|
129
|
-
|------|------|----------|-------------|
|
|
130
|
-
| `name` | `string` | ✓ | The assistant name (must match a registered factory or discovered entry) |
|
|
131
|
-
| `options` | `Record<string, any>` | | Additional options to pass to the Assistant constructor |
|
|
132
|
-
|
|
133
|
-
**Returns:** `Assistant`
|
|
134
|
-
|
|
135
|
-
```ts
|
|
136
|
-
const assistant = manager.create('chief-of-staff', { model: 'gpt-4.1' })
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
### getInstance
|
|
142
|
-
|
|
143
|
-
Returns a previously created assistant instance by name.
|
|
144
|
-
|
|
145
|
-
**Parameters:**
|
|
146
|
-
|
|
147
|
-
| Name | Type | Required | Description |
|
|
148
|
-
|------|------|----------|-------------|
|
|
149
|
-
| `name` | `string` | ✓ | The assistant name |
|
|
150
|
-
|
|
151
|
-
**Returns:** `Assistant | undefined`
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
### toSummary
|
|
156
|
-
|
|
157
|
-
Generates a markdown summary of all discovered assistants, listing their names and which definition files are present.
|
|
158
|
-
|
|
159
|
-
**Returns:** `string`
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
## Getters
|
|
164
|
-
|
|
165
|
-
| Property | Type | Description |
|
|
166
|
-
|----------|------|-------------|
|
|
167
|
-
| `entries` | `Record<string, AssistantEntry>` | Discovered assistant entries keyed by name. |
|
|
168
|
-
| `instances` | `Record<string, Assistant>` | Active assistant instances keyed by name. |
|
|
169
|
-
| `factories` | `Record<string, (options: Record<string, any>) => Assistant>` | Registered factory functions keyed by name. |
|
|
170
|
-
| `available` | `any` | |
|
|
171
|
-
|
|
172
|
-
## Events (Zod v4 schema)
|
|
173
|
-
|
|
174
|
-
### discovered
|
|
175
|
-
|
|
176
|
-
Emitted when assistant discovery scan completes
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
### assistantRegistered
|
|
181
|
-
|
|
182
|
-
Emitted when an assistant factory is registered at runtime
|
|
183
|
-
|
|
184
|
-
**Event Arguments:**
|
|
185
|
-
|
|
186
|
-
| Name | Type | Description |
|
|
187
|
-
|------|------|-------------|
|
|
188
|
-
| `arg0` | `string` | The assistant id |
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
### assistantCreated
|
|
193
|
-
|
|
194
|
-
Emitted when a new assistant instance is created
|
|
195
|
-
|
|
196
|
-
**Event Arguments:**
|
|
197
|
-
|
|
198
|
-
| Name | Type | Description |
|
|
199
|
-
|------|------|-------------|
|
|
200
|
-
| `arg0` | `string` | The assistant name |
|
|
201
|
-
| `arg1` | `any` | The assistant instance |
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
## State (Zod v4 schema)
|
|
206
|
-
|
|
207
|
-
| Property | Type | Description |
|
|
208
|
-
|----------|------|-------------|
|
|
209
|
-
| `enabled` | `boolean` | Whether this feature is currently enabled |
|
|
210
|
-
| `discovered` | `boolean` | Whether discovery has been run |
|
|
211
|
-
| `assistantCount` | `number` | Number of discovered assistant definitions |
|
|
212
|
-
| `activeCount` | `number` | Number of currently instantiated assistants |
|
|
213
|
-
| `entries` | `object` | Discovered assistant entries keyed by name |
|
|
214
|
-
| `instances` | `object` | Active assistant instances keyed by name |
|
|
215
|
-
| `factories` | `object` | Registered factory functions keyed by name |
|
|
216
|
-
| `extraFolders` | `array` | Additional folders to scan during discovery |
|
|
217
|
-
|
|
218
|
-
## Examples
|
|
219
|
-
|
|
220
|
-
**features.assistantsManager**
|
|
221
|
-
|
|
222
|
-
```ts
|
|
223
|
-
const manager = container.feature('assistantsManager')
|
|
224
|
-
manager.discover()
|
|
225
|
-
console.log(manager.list()) // [{ name: 'chief-of-staff', folder: '...', ... }]
|
|
226
|
-
const assistant = manager.create('chief-of-staff')
|
|
227
|
-
const answer = await assistant.ask('Hello!')
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
**intercept**
|
|
233
|
-
|
|
234
|
-
```ts
|
|
235
|
-
manager.intercept('beforeAsk', async (ctx, next) => {
|
|
236
|
-
console.log(`[${ctx.assistant.name}] asking: ${ctx.message}`)
|
|
237
|
-
await next()
|
|
238
|
-
})
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
**addDiscoveryFolder**
|
|
244
|
-
|
|
245
|
-
```ts
|
|
246
|
-
await manager.addDiscoveryFolder('/path/to/more/assistants')
|
|
247
|
-
console.log(manager.available) // includes assistants from the new folder
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
**downloadLucaCoreAssistants**
|
|
253
|
-
|
|
254
|
-
```ts
|
|
255
|
-
const manager = container.feature('assistantsManager')
|
|
256
|
-
await manager.downloadLucaCoreAssistants()
|
|
257
|
-
await manager.discover()
|
|
258
|
-
console.log(manager.available)
|
|
259
|
-
```
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
**register**
|
|
264
|
-
|
|
265
|
-
```ts
|
|
266
|
-
manager.register('custom-bot', (options) => {
|
|
267
|
-
return container.feature('assistant', {
|
|
268
|
-
systemPrompt: 'You are a custom bot.',
|
|
269
|
-
...options,
|
|
270
|
-
})
|
|
271
|
-
})
|
|
272
|
-
const bot = manager.create('custom-bot')
|
|
273
|
-
```
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
**create**
|
|
278
|
-
|
|
279
|
-
```ts
|
|
280
|
-
const assistant = manager.create('chief-of-staff', { model: 'gpt-4.1' })
|
|
281
|
-
```
|
|
282
|
-
|
|
@@ -1,279 +0,0 @@
|
|
|
1
|
-
# AutonomousAssistant (features.autoAssistant)
|
|
2
|
-
|
|
3
|
-
An autonomous assistant that owns a lower-level Assistant instance and gates all tool calls through a permission system. Tools are stacked from feature bundles (fileTools, processManager, etc.) and each tool can be set to 'allow' (runs immediately), 'ask' (blocks until user approves/denies), or 'deny' (always rejected).
|
|
4
|
-
|
|
5
|
-
## Usage
|
|
6
|
-
|
|
7
|
-
```ts
|
|
8
|
-
container.feature('autoAssistant')
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
## Methods
|
|
12
|
-
|
|
13
|
-
### getPermission
|
|
14
|
-
|
|
15
|
-
Get the effective permission level for a tool.
|
|
16
|
-
|
|
17
|
-
**Parameters:**
|
|
18
|
-
|
|
19
|
-
| Name | Type | Required | Description |
|
|
20
|
-
|------|------|----------|-------------|
|
|
21
|
-
| `toolName` | `string` | ✓ | Parameter toolName |
|
|
22
|
-
|
|
23
|
-
**Returns:** `PermissionLevel`
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
### setPermission
|
|
28
|
-
|
|
29
|
-
Set permission level for one or more tools.
|
|
30
|
-
|
|
31
|
-
**Parameters:**
|
|
32
|
-
|
|
33
|
-
| Name | Type | Required | Description |
|
|
34
|
-
|------|------|----------|-------------|
|
|
35
|
-
| `toolName` | `string | string[]` | ✓ | Parameter toolName |
|
|
36
|
-
| `level` | `PermissionLevel` | ✓ | Parameter level |
|
|
37
|
-
|
|
38
|
-
**Returns:** `this`
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
### setDefaultPermission
|
|
43
|
-
|
|
44
|
-
Set the default permission level for unconfigured tools.
|
|
45
|
-
|
|
46
|
-
**Parameters:**
|
|
47
|
-
|
|
48
|
-
| Name | Type | Required | Description |
|
|
49
|
-
|------|------|----------|-------------|
|
|
50
|
-
| `level` | `PermissionLevel` | ✓ | Parameter level |
|
|
51
|
-
|
|
52
|
-
**Returns:** `this`
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
### permitTool
|
|
57
|
-
|
|
58
|
-
Allow a tool (or tools) to run without approval.
|
|
59
|
-
|
|
60
|
-
**Parameters:**
|
|
61
|
-
|
|
62
|
-
| Name | Type | Required | Description |
|
|
63
|
-
|------|------|----------|-------------|
|
|
64
|
-
| `toolNames` | `string[]` | ✓ | Parameter toolNames |
|
|
65
|
-
|
|
66
|
-
**Returns:** `this`
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
### gateTool
|
|
71
|
-
|
|
72
|
-
Require approval before a tool (or tools) can run.
|
|
73
|
-
|
|
74
|
-
**Parameters:**
|
|
75
|
-
|
|
76
|
-
| Name | Type | Required | Description |
|
|
77
|
-
|------|------|----------|-------------|
|
|
78
|
-
| `toolNames` | `string[]` | ✓ | Parameter toolNames |
|
|
79
|
-
|
|
80
|
-
**Returns:** `this`
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
### blockTool
|
|
85
|
-
|
|
86
|
-
Block a tool (or tools) from ever running.
|
|
87
|
-
|
|
88
|
-
**Parameters:**
|
|
89
|
-
|
|
90
|
-
| Name | Type | Required | Description |
|
|
91
|
-
|------|------|----------|-------------|
|
|
92
|
-
| `toolNames` | `string[]` | ✓ | Parameter toolNames |
|
|
93
|
-
|
|
94
|
-
**Returns:** `this`
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
### approve
|
|
99
|
-
|
|
100
|
-
Approve a pending tool call by ID. The tool will execute.
|
|
101
|
-
|
|
102
|
-
**Parameters:**
|
|
103
|
-
|
|
104
|
-
| Name | Type | Required | Description |
|
|
105
|
-
|------|------|----------|-------------|
|
|
106
|
-
| `id` | `string` | ✓ | Parameter id |
|
|
107
|
-
|
|
108
|
-
**Returns:** `this`
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
### deny
|
|
113
|
-
|
|
114
|
-
Deny a pending tool call by ID. The tool call will be skipped.
|
|
115
|
-
|
|
116
|
-
**Parameters:**
|
|
117
|
-
|
|
118
|
-
| Name | Type | Required | Description |
|
|
119
|
-
|------|------|----------|-------------|
|
|
120
|
-
| `id` | `string` | ✓ | Parameter id |
|
|
121
|
-
|
|
122
|
-
**Returns:** `this`
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
### approveAll
|
|
127
|
-
|
|
128
|
-
Approve all pending tool calls.
|
|
129
|
-
|
|
130
|
-
**Returns:** `this`
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
### denyAll
|
|
135
|
-
|
|
136
|
-
Deny all pending tool calls.
|
|
137
|
-
|
|
138
|
-
**Returns:** `this`
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
### start
|
|
143
|
-
|
|
144
|
-
Initialize the inner assistant, stack tool bundles, and wire up the permission interceptor.
|
|
145
|
-
|
|
146
|
-
**Returns:** `Promise<this>`
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
### ask
|
|
151
|
-
|
|
152
|
-
Ask the autonomous assistant a question. Auto-starts if needed. Tool calls will be gated by the permission system.
|
|
153
|
-
|
|
154
|
-
**Parameters:**
|
|
155
|
-
|
|
156
|
-
| Name | Type | Required | Description |
|
|
157
|
-
|------|------|----------|-------------|
|
|
158
|
-
| `question` | `string` | ✓ | Parameter question |
|
|
159
|
-
| `options` | `Record<string, any>` | | Parameter options |
|
|
160
|
-
|
|
161
|
-
**Returns:** `Promise<string>`
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
### use
|
|
166
|
-
|
|
167
|
-
Add a tool bundle after initialization. Useful for dynamically extending the assistant's capabilities.
|
|
168
|
-
|
|
169
|
-
**Parameters:**
|
|
170
|
-
|
|
171
|
-
| Name | Type | Required | Description |
|
|
172
|
-
|------|------|----------|-------------|
|
|
173
|
-
| `spec` | `ToolBundleSpec` | ✓ | Parameter spec |
|
|
174
|
-
|
|
175
|
-
**Returns:** `this`
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
## Getters
|
|
180
|
-
|
|
181
|
-
| Property | Type | Description |
|
|
182
|
-
|----------|------|-------------|
|
|
183
|
-
| `assistant` | `Assistant` | The inner assistant. Throws if not started. |
|
|
184
|
-
| `permissions` | `Record<string, PermissionLevel>` | Current permission map from state. |
|
|
185
|
-
| `pendingApprovals` | `PendingApproval[]` | Current pending approvals. |
|
|
186
|
-
| `isStarted` | `boolean` | Whether the assistant is started and ready. |
|
|
187
|
-
| `tools` | `Record<string, any>` | The tools registered on the inner assistant. |
|
|
188
|
-
| `conversation` | `any` | The conversation on the inner assistant (if started). |
|
|
189
|
-
| `messages` | `any` | Messages from the inner assistant's conversation. |
|
|
190
|
-
|
|
191
|
-
## Events (Zod v4 schema)
|
|
192
|
-
|
|
193
|
-
### permissionGranted
|
|
194
|
-
|
|
195
|
-
Event emitted by AutonomousAssistant
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
### permissionDenied
|
|
200
|
-
|
|
201
|
-
Event emitted by AutonomousAssistant
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
### toolBlocked
|
|
206
|
-
|
|
207
|
-
Event emitted by AutonomousAssistant
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
### chunk
|
|
212
|
-
|
|
213
|
-
Event emitted by AutonomousAssistant
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
### response
|
|
218
|
-
|
|
219
|
-
Event emitted by AutonomousAssistant
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
### toolCall
|
|
224
|
-
|
|
225
|
-
Event emitted by AutonomousAssistant
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
### toolResult
|
|
230
|
-
|
|
231
|
-
Event emitted by AutonomousAssistant
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
### toolError
|
|
236
|
-
|
|
237
|
-
Event emitted by AutonomousAssistant
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
### started
|
|
242
|
-
|
|
243
|
-
Event emitted by AutonomousAssistant
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
### permissionRequest
|
|
248
|
-
|
|
249
|
-
Event emitted by AutonomousAssistant
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
## Examples
|
|
254
|
-
|
|
255
|
-
**features.autoAssistant**
|
|
256
|
-
|
|
257
|
-
```ts
|
|
258
|
-
const auto = container.feature('autoAssistant', {
|
|
259
|
-
tools: ['fileTools', { feature: 'processManager', except: ['killAllProcesses'] }],
|
|
260
|
-
permissions: {
|
|
261
|
-
readFile: 'allow',
|
|
262
|
-
searchFiles: 'allow',
|
|
263
|
-
writeFile: 'ask',
|
|
264
|
-
editFile: 'ask',
|
|
265
|
-
deleteFile: 'deny',
|
|
266
|
-
},
|
|
267
|
-
defaultPermission: 'ask',
|
|
268
|
-
systemPrompt: 'You are a coding assistant.',
|
|
269
|
-
})
|
|
270
|
-
|
|
271
|
-
auto.on('permissionRequest', ({ id, toolName, args }) => {
|
|
272
|
-
console.log(`Tool "${toolName}" wants to run with`, args)
|
|
273
|
-
// Show UI, then:
|
|
274
|
-
auto.approve(id) // or auto.deny(id)
|
|
275
|
-
})
|
|
276
|
-
|
|
277
|
-
await auto.ask('Refactor the auth module to use async/await')
|
|
278
|
-
```
|
|
279
|
-
|