@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,602 @@
|
|
|
1
|
+
# ClaudeCode (features.claudeCode)
|
|
2
|
+
|
|
3
|
+
No description provided
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
container.feature('claudeCode', {
|
|
9
|
+
// Path to the claude CLI binary
|
|
10
|
+
claudePath,
|
|
11
|
+
// Default model to use for sessions
|
|
12
|
+
model,
|
|
13
|
+
// Default working directory for sessions
|
|
14
|
+
cwd,
|
|
15
|
+
// Default system prompt prepended to all sessions
|
|
16
|
+
systemPrompt,
|
|
17
|
+
// Default append system prompt for all sessions
|
|
18
|
+
appendSystemPrompt,
|
|
19
|
+
// Default permission mode for Claude CLI sessions
|
|
20
|
+
permissionMode,
|
|
21
|
+
// Default allowed tools for sessions
|
|
22
|
+
allowedTools,
|
|
23
|
+
// Default disallowed tools for sessions
|
|
24
|
+
disallowedTools,
|
|
25
|
+
// Whether to stream partial messages token-by-token
|
|
26
|
+
streaming,
|
|
27
|
+
// MCP config file paths to pass to sessions
|
|
28
|
+
mcpConfig,
|
|
29
|
+
// MCP server configs keyed by name, injected into sessions via temp config file
|
|
30
|
+
mcpServers,
|
|
31
|
+
// Path to write a parseable NDJSON session log file
|
|
32
|
+
fileLogPath,
|
|
33
|
+
// Verbosity level for file logging. Defaults to "normal"
|
|
34
|
+
fileLogLevel,
|
|
35
|
+
// Default effort level for Claude reasoning
|
|
36
|
+
effort,
|
|
37
|
+
// Maximum cost budget in USD per session
|
|
38
|
+
maxBudgetUsd,
|
|
39
|
+
// Fallback model when the primary model is unavailable
|
|
40
|
+
fallbackModel,
|
|
41
|
+
// Default agent to use
|
|
42
|
+
agent,
|
|
43
|
+
// Disable session persistence across runs
|
|
44
|
+
noSessionPersistence,
|
|
45
|
+
// Default tools to make available
|
|
46
|
+
tools,
|
|
47
|
+
// Require strict MCP config validation
|
|
48
|
+
strictMcpConfig,
|
|
49
|
+
// Path to a custom settings file
|
|
50
|
+
settingsFile,
|
|
51
|
+
// Directories containing Claude Code skills to load into sessions
|
|
52
|
+
skillsFolders,
|
|
53
|
+
})
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Options (Zod v4 schema)
|
|
57
|
+
|
|
58
|
+
| Property | Type | Description |
|
|
59
|
+
|----------|------|-------------|
|
|
60
|
+
| `claudePath` | `string` | Path to the claude CLI binary |
|
|
61
|
+
| `model` | `string` | Default model to use for sessions |
|
|
62
|
+
| `cwd` | `string` | Default working directory for sessions |
|
|
63
|
+
| `systemPrompt` | `string` | Default system prompt prepended to all sessions |
|
|
64
|
+
| `appendSystemPrompt` | `string` | Default append system prompt for all sessions |
|
|
65
|
+
| `permissionMode` | `string` | Default permission mode for Claude CLI sessions |
|
|
66
|
+
| `allowedTools` | `array` | Default allowed tools for sessions |
|
|
67
|
+
| `disallowedTools` | `array` | Default disallowed tools for sessions |
|
|
68
|
+
| `streaming` | `boolean` | Whether to stream partial messages token-by-token |
|
|
69
|
+
| `mcpConfig` | `array` | MCP config file paths to pass to sessions |
|
|
70
|
+
| `mcpServers` | `object` | MCP server configs keyed by name, injected into sessions via temp config file |
|
|
71
|
+
| `fileLogPath` | `string` | Path to write a parseable NDJSON session log file |
|
|
72
|
+
| `fileLogLevel` | `string` | Verbosity level for file logging. Defaults to "normal" |
|
|
73
|
+
| `effort` | `string` | Default effort level for Claude reasoning |
|
|
74
|
+
| `maxBudgetUsd` | `number` | Maximum cost budget in USD per session |
|
|
75
|
+
| `fallbackModel` | `string` | Fallback model when the primary model is unavailable |
|
|
76
|
+
| `agent` | `string` | Default agent to use |
|
|
77
|
+
| `noSessionPersistence` | `boolean` | Disable session persistence across runs |
|
|
78
|
+
| `tools` | `array` | Default tools to make available |
|
|
79
|
+
| `strictMcpConfig` | `boolean` | Require strict MCP config validation |
|
|
80
|
+
| `settingsFile` | `string` | Path to a custom settings file |
|
|
81
|
+
| `skillsFolders` | `array` | Directories containing Claude Code skills to load into sessions |
|
|
82
|
+
|
|
83
|
+
## Methods
|
|
84
|
+
|
|
85
|
+
### assertMinVersion
|
|
86
|
+
|
|
87
|
+
Assert that the detected CLI version meets a minimum major.minor requirement. Throws if the CLI version is below the specified minimum.
|
|
88
|
+
|
|
89
|
+
**Parameters:**
|
|
90
|
+
|
|
91
|
+
| Name | Type | Required | Description |
|
|
92
|
+
|------|------|----------|-------------|
|
|
93
|
+
| `major` | `number` | ✓ | Minimum major version |
|
|
94
|
+
| `minor` | `number` | ✓ | Minimum minor version |
|
|
95
|
+
|
|
96
|
+
**Returns:** `void`
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
### checkAvailability
|
|
101
|
+
|
|
102
|
+
Check if the Claude CLI is available and capture its version.
|
|
103
|
+
|
|
104
|
+
**Returns:** `Promise<boolean>`
|
|
105
|
+
|
|
106
|
+
```ts
|
|
107
|
+
const available = await cc.checkAvailability()
|
|
108
|
+
if (!available) throw new Error('Claude CLI not found')
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
### writeMcpConfig
|
|
114
|
+
|
|
115
|
+
Write an MCP server config map to a temp file suitable for `--mcp-config`.
|
|
116
|
+
|
|
117
|
+
**Parameters:**
|
|
118
|
+
|
|
119
|
+
| Name | Type | Required | Description |
|
|
120
|
+
|------|------|----------|-------------|
|
|
121
|
+
| `servers` | `Record<string, McpServerConfig>` | ✓ | Server configs keyed by name |
|
|
122
|
+
|
|
123
|
+
**Returns:** `Promise<string>`
|
|
124
|
+
|
|
125
|
+
```ts
|
|
126
|
+
const configPath = await cc.writeMcpConfig({
|
|
127
|
+
'my-api': { type: 'http', url: 'https://api.example.com/mcp' },
|
|
128
|
+
'local-tool': { type: 'stdio', command: 'bun', args: ['run', 'server.ts'] }
|
|
129
|
+
})
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
### run
|
|
135
|
+
|
|
136
|
+
Run a prompt in a new Claude Code session. Spawns a subprocess, streams NDJSON events, and resolves when the session completes.
|
|
137
|
+
|
|
138
|
+
**Parameters:**
|
|
139
|
+
|
|
140
|
+
| Name | Type | Required | Description |
|
|
141
|
+
|------|------|----------|-------------|
|
|
142
|
+
| `prompt` | `string` | ✓ | The instruction/prompt to send |
|
|
143
|
+
| `options` | `RunOptions` | | Session configuration overrides |
|
|
144
|
+
|
|
145
|
+
`RunOptions` properties:
|
|
146
|
+
|
|
147
|
+
| Property | Type | Description |
|
|
148
|
+
|----------|------|-------------|
|
|
149
|
+
| `model` | `string` | Override model for this session. |
|
|
150
|
+
| `cwd` | `string` | Override working directory. |
|
|
151
|
+
| `systemPrompt` | `string` | System prompt for this session. |
|
|
152
|
+
| `appendSystemPrompt` | `string` | Append system prompt for this session. |
|
|
153
|
+
| `permissionMode` | `'default' | 'acceptEdits' | 'bypassPermissions' | 'plan' | 'dontAsk'` | Permission mode override. |
|
|
154
|
+
| `allowedTools` | `string[]` | Allowed tools override. |
|
|
155
|
+
| `disallowedTools` | `string[]` | Disallowed tools override. |
|
|
156
|
+
| `streaming` | `boolean` | Whether to stream partial messages. |
|
|
157
|
+
| `resumeSessionId` | `string` | Resume a previous session by ID. |
|
|
158
|
+
| `continue` | `boolean` | Continue the most recent conversation. |
|
|
159
|
+
| `addDirs` | `string[]` | Additional directories to allow tool access to. |
|
|
160
|
+
| `skillsFolders` | `string[]` | Directories containing Claude Code skills (SKILL.md files) to load into sessions. Merged with addDirs as --add-dir. |
|
|
161
|
+
| `mcpConfig` | `string[]` | MCP config file paths. |
|
|
162
|
+
| `mcpServers` | `Record<string, McpServerConfig>` | MCP servers to inject, keyed by server name. |
|
|
163
|
+
| `dangerouslySkipPermissions` | `boolean` | Skip all permission checks (only for sandboxed environments). |
|
|
164
|
+
| `extraArgs` | `string[]` | Additional arbitrary CLI flags. |
|
|
165
|
+
| `fileLogPath` | `string` | Path to write a parseable NDJSON session log file. Overrides feature-level fileLogPath. |
|
|
166
|
+
| `fileLogLevel` | `FileLogLevel` | Verbosity level for file logging. Overrides feature-level fileLogLevel. |
|
|
167
|
+
| `effort` | `'low' | 'medium' | 'high'` | Effort level for Claude reasoning. |
|
|
168
|
+
| `maxBudgetUsd` | `number` | Maximum cost budget in USD. |
|
|
169
|
+
| `fallbackModel` | `string` | Fallback model when the primary is unavailable. |
|
|
170
|
+
| `jsonSchema` | `string | object` | JSON schema for structured output validation. |
|
|
171
|
+
| `agent` | `string` | Agent to use for this session. |
|
|
172
|
+
| `sessionId` | `string` | Resume or fork a specific Claude session by ID. |
|
|
173
|
+
| `noSessionPersistence` | `boolean` | Disable session persistence for this run. |
|
|
174
|
+
| `forkSession` | `boolean` | Fork from an existing session instead of resuming. |
|
|
175
|
+
| `tools` | `string[]` | Tools to make available. |
|
|
176
|
+
| `strictMcpConfig` | `boolean` | Require strict MCP config validation. |
|
|
177
|
+
| `debug` | `string | boolean` | Enable debug output. Pass a string for specific debug channels, or true for all. |
|
|
178
|
+
| `debugFile` | `string` | Path to write debug output to a file. |
|
|
179
|
+
| `settingsFile` | `string` | Path to a custom settings file. |
|
|
180
|
+
|
|
181
|
+
**Returns:** `Promise<ClaudeSession>`
|
|
182
|
+
|
|
183
|
+
```ts
|
|
184
|
+
// Simple one-shot
|
|
185
|
+
const session = await cc.run('What files are in this project?')
|
|
186
|
+
console.log(session.result)
|
|
187
|
+
|
|
188
|
+
// With options
|
|
189
|
+
const session = await cc.run('Refactor the auth module', {
|
|
190
|
+
model: 'opus',
|
|
191
|
+
cwd: '/path/to/project',
|
|
192
|
+
permissionMode: 'acceptEdits',
|
|
193
|
+
streaming: true
|
|
194
|
+
})
|
|
195
|
+
|
|
196
|
+
// With injected MCP servers
|
|
197
|
+
const session = await cc.run('Use the database tools to list tables', {
|
|
198
|
+
mcpServers: {
|
|
199
|
+
'db-tools': { type: 'stdio', command: 'bun', args: ['run', 'db-mcp.ts'] },
|
|
200
|
+
'api': { type: 'http', url: 'https://api.example.com/mcp' }
|
|
201
|
+
}
|
|
202
|
+
})
|
|
203
|
+
|
|
204
|
+
// Resume a previous session
|
|
205
|
+
const session = await cc.run('Now add tests for that', {
|
|
206
|
+
resumeSessionId: previousSession.sessionId
|
|
207
|
+
})
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
### start
|
|
213
|
+
|
|
214
|
+
Run a prompt without waiting for completion. Returns the session ID immediately so you can subscribe to events.
|
|
215
|
+
|
|
216
|
+
**Parameters:**
|
|
217
|
+
|
|
218
|
+
| Name | Type | Required | Description |
|
|
219
|
+
|------|------|----------|-------------|
|
|
220
|
+
| `prompt` | `string` | ✓ | The instruction/prompt to send |
|
|
221
|
+
| `options` | `RunOptions` | | Session configuration overrides |
|
|
222
|
+
|
|
223
|
+
`RunOptions` properties:
|
|
224
|
+
|
|
225
|
+
| Property | Type | Description |
|
|
226
|
+
|----------|------|-------------|
|
|
227
|
+
| `model` | `string` | Override model for this session. |
|
|
228
|
+
| `cwd` | `string` | Override working directory. |
|
|
229
|
+
| `systemPrompt` | `string` | System prompt for this session. |
|
|
230
|
+
| `appendSystemPrompt` | `string` | Append system prompt for this session. |
|
|
231
|
+
| `permissionMode` | `'default' | 'acceptEdits' | 'bypassPermissions' | 'plan' | 'dontAsk'` | Permission mode override. |
|
|
232
|
+
| `allowedTools` | `string[]` | Allowed tools override. |
|
|
233
|
+
| `disallowedTools` | `string[]` | Disallowed tools override. |
|
|
234
|
+
| `streaming` | `boolean` | Whether to stream partial messages. |
|
|
235
|
+
| `resumeSessionId` | `string` | Resume a previous session by ID. |
|
|
236
|
+
| `continue` | `boolean` | Continue the most recent conversation. |
|
|
237
|
+
| `addDirs` | `string[]` | Additional directories to allow tool access to. |
|
|
238
|
+
| `skillsFolders` | `string[]` | Directories containing Claude Code skills (SKILL.md files) to load into sessions. Merged with addDirs as --add-dir. |
|
|
239
|
+
| `mcpConfig` | `string[]` | MCP config file paths. |
|
|
240
|
+
| `mcpServers` | `Record<string, McpServerConfig>` | MCP servers to inject, keyed by server name. |
|
|
241
|
+
| `dangerouslySkipPermissions` | `boolean` | Skip all permission checks (only for sandboxed environments). |
|
|
242
|
+
| `extraArgs` | `string[]` | Additional arbitrary CLI flags. |
|
|
243
|
+
| `fileLogPath` | `string` | Path to write a parseable NDJSON session log file. Overrides feature-level fileLogPath. |
|
|
244
|
+
| `fileLogLevel` | `FileLogLevel` | Verbosity level for file logging. Overrides feature-level fileLogLevel. |
|
|
245
|
+
| `effort` | `'low' | 'medium' | 'high'` | Effort level for Claude reasoning. |
|
|
246
|
+
| `maxBudgetUsd` | `number` | Maximum cost budget in USD. |
|
|
247
|
+
| `fallbackModel` | `string` | Fallback model when the primary is unavailable. |
|
|
248
|
+
| `jsonSchema` | `string | object` | JSON schema for structured output validation. |
|
|
249
|
+
| `agent` | `string` | Agent to use for this session. |
|
|
250
|
+
| `sessionId` | `string` | Resume or fork a specific Claude session by ID. |
|
|
251
|
+
| `noSessionPersistence` | `boolean` | Disable session persistence for this run. |
|
|
252
|
+
| `forkSession` | `boolean` | Fork from an existing session instead of resuming. |
|
|
253
|
+
| `tools` | `string[]` | Tools to make available. |
|
|
254
|
+
| `strictMcpConfig` | `boolean` | Require strict MCP config validation. |
|
|
255
|
+
| `debug` | `string | boolean` | Enable debug output. Pass a string for specific debug channels, or true for all. |
|
|
256
|
+
| `debugFile` | `string` | Path to write debug output to a file. |
|
|
257
|
+
| `settingsFile` | `string` | Path to a custom settings file. |
|
|
258
|
+
|
|
259
|
+
**Returns:** `Promise<string>`
|
|
260
|
+
|
|
261
|
+
```ts
|
|
262
|
+
const sessionId = cc.start('Build a REST API for users')
|
|
263
|
+
|
|
264
|
+
cc.on('session:delta', ({ sessionId: sid, text }) => {
|
|
265
|
+
if (sid === sessionId) process.stdout.write(text)
|
|
266
|
+
})
|
|
267
|
+
|
|
268
|
+
cc.on('session:result', ({ sessionId: sid, result }) => {
|
|
269
|
+
if (sid === sessionId) console.log('\nDone:', result)
|
|
270
|
+
})
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
### abort
|
|
276
|
+
|
|
277
|
+
Kill a running session's subprocess.
|
|
278
|
+
|
|
279
|
+
**Parameters:**
|
|
280
|
+
|
|
281
|
+
| Name | Type | Required | Description |
|
|
282
|
+
|------|------|----------|-------------|
|
|
283
|
+
| `sessionId` | `string` | ✓ | The local session ID to abort |
|
|
284
|
+
|
|
285
|
+
**Returns:** `void`
|
|
286
|
+
|
|
287
|
+
```ts
|
|
288
|
+
const sessionId = cc.start('Do something long')
|
|
289
|
+
// ... later
|
|
290
|
+
cc.abort(sessionId)
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
### getSession
|
|
296
|
+
|
|
297
|
+
Get a session by its local ID.
|
|
298
|
+
|
|
299
|
+
**Parameters:**
|
|
300
|
+
|
|
301
|
+
| Name | Type | Required | Description |
|
|
302
|
+
|------|------|----------|-------------|
|
|
303
|
+
| `sessionId` | `string` | ✓ | The local session ID |
|
|
304
|
+
|
|
305
|
+
**Returns:** `ClaudeSession | undefined`
|
|
306
|
+
|
|
307
|
+
```ts
|
|
308
|
+
const session = cc.getSession(sessionId)
|
|
309
|
+
if (session?.status === 'completed') {
|
|
310
|
+
console.log(session.result)
|
|
311
|
+
}
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
### waitForSession
|
|
317
|
+
|
|
318
|
+
Wait for a running session to complete.
|
|
319
|
+
|
|
320
|
+
**Parameters:**
|
|
321
|
+
|
|
322
|
+
| Name | Type | Required | Description |
|
|
323
|
+
|------|------|----------|-------------|
|
|
324
|
+
| `sessionId` | `string` | ✓ | The local session ID |
|
|
325
|
+
|
|
326
|
+
**Returns:** `Promise<ClaudeSession>`
|
|
327
|
+
|
|
328
|
+
```ts
|
|
329
|
+
const id = cc.start('Build something cool')
|
|
330
|
+
const session = await cc.waitForSession(id)
|
|
331
|
+
console.log(session.result)
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
### usage
|
|
337
|
+
|
|
338
|
+
Get aggregated usage statistics across all sessions, or for a specific session.
|
|
339
|
+
|
|
340
|
+
**Parameters:**
|
|
341
|
+
|
|
342
|
+
| Name | Type | Required | Description |
|
|
343
|
+
|------|------|----------|-------------|
|
|
344
|
+
| `sessionId` | `string` | | Optional session ID to get usage for a single session |
|
|
345
|
+
|
|
346
|
+
**Returns:** `void`
|
|
347
|
+
|
|
348
|
+
```ts
|
|
349
|
+
const stats = cc.usage()
|
|
350
|
+
console.log(`Total cost: $${stats.totalCostUsd.toFixed(4)}`)
|
|
351
|
+
console.log(`Tokens: ${stats.totalInputTokens} in / ${stats.totalOutputTokens} out`)
|
|
352
|
+
|
|
353
|
+
// Single session
|
|
354
|
+
const sessionStats = cc.usage(sessionId)
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
|
|
359
|
+
### cleanupMcpTempFiles
|
|
360
|
+
|
|
361
|
+
Clean up any temp MCP config files created during sessions.
|
|
362
|
+
|
|
363
|
+
**Returns:** `Promise<void>`
|
|
364
|
+
|
|
365
|
+
|
|
366
|
+
|
|
367
|
+
### enable
|
|
368
|
+
|
|
369
|
+
Initialize the feature.
|
|
370
|
+
|
|
371
|
+
**Parameters:**
|
|
372
|
+
|
|
373
|
+
| Name | Type | Required | Description |
|
|
374
|
+
|------|------|----------|-------------|
|
|
375
|
+
| `options` | `any` | | Enable options |
|
|
376
|
+
|
|
377
|
+
**Returns:** `Promise<this>`
|
|
378
|
+
|
|
379
|
+
|
|
380
|
+
|
|
381
|
+
## Getters
|
|
382
|
+
|
|
383
|
+
| Property | Type | Description |
|
|
384
|
+
|----------|------|-------------|
|
|
385
|
+
| `claudePath` | `string` | Resolve the path to the claude CLI binary. |
|
|
386
|
+
| `parsedVersion` | `{ major: number; minor: number; patch: number } | undefined` | Parsed semver components from the detected CLI version, or undefined if not yet checked. |
|
|
387
|
+
|
|
388
|
+
## Events (Zod v4 schema)
|
|
389
|
+
|
|
390
|
+
### session:warning
|
|
391
|
+
|
|
392
|
+
Event emitted by ClaudeCode
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
|
|
396
|
+
### session:log-error
|
|
397
|
+
|
|
398
|
+
Event emitted by ClaudeCode
|
|
399
|
+
|
|
400
|
+
|
|
401
|
+
|
|
402
|
+
### session:event
|
|
403
|
+
|
|
404
|
+
Event emitted by ClaudeCode
|
|
405
|
+
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+
### session:init
|
|
409
|
+
|
|
410
|
+
Event emitted by ClaudeCode
|
|
411
|
+
|
|
412
|
+
|
|
413
|
+
|
|
414
|
+
### session:delta
|
|
415
|
+
|
|
416
|
+
Event emitted by ClaudeCode
|
|
417
|
+
|
|
418
|
+
|
|
419
|
+
|
|
420
|
+
### session:stream
|
|
421
|
+
|
|
422
|
+
Event emitted by ClaudeCode
|
|
423
|
+
|
|
424
|
+
|
|
425
|
+
|
|
426
|
+
### session:message
|
|
427
|
+
|
|
428
|
+
Event emitted by ClaudeCode
|
|
429
|
+
|
|
430
|
+
|
|
431
|
+
|
|
432
|
+
### session:result
|
|
433
|
+
|
|
434
|
+
Event emitted by ClaudeCode
|
|
435
|
+
|
|
436
|
+
|
|
437
|
+
|
|
438
|
+
### session:start
|
|
439
|
+
|
|
440
|
+
Event emitted by ClaudeCode
|
|
441
|
+
|
|
442
|
+
|
|
443
|
+
|
|
444
|
+
### session:error
|
|
445
|
+
|
|
446
|
+
Event emitted by ClaudeCode
|
|
447
|
+
|
|
448
|
+
|
|
449
|
+
|
|
450
|
+
### session:parse-error
|
|
451
|
+
|
|
452
|
+
Event emitted by ClaudeCode
|
|
453
|
+
|
|
454
|
+
|
|
455
|
+
|
|
456
|
+
### session:abort
|
|
457
|
+
|
|
458
|
+
Event emitted by ClaudeCode
|
|
459
|
+
|
|
460
|
+
|
|
461
|
+
|
|
462
|
+
## State (Zod v4 schema)
|
|
463
|
+
|
|
464
|
+
| Property | Type | Description |
|
|
465
|
+
|----------|------|-------------|
|
|
466
|
+
| `enabled` | `boolean` | Whether this feature is currently enabled |
|
|
467
|
+
| `sessions` | `object` | Map of session IDs to ClaudeSession objects |
|
|
468
|
+
| `activeSessions` | `array` | List of currently running session IDs |
|
|
469
|
+
| `claudeAvailable` | `boolean` | Whether the Claude CLI binary is available |
|
|
470
|
+
| `claudeVersion` | `string` | Detected Claude CLI version string |
|
|
471
|
+
|
|
472
|
+
## Environment Variables
|
|
473
|
+
|
|
474
|
+
- `TMPDIR`
|
|
475
|
+
|
|
476
|
+
## Examples
|
|
477
|
+
|
|
478
|
+
**features.claudeCode**
|
|
479
|
+
|
|
480
|
+
```ts
|
|
481
|
+
const cc = container.feature('claudeCode')
|
|
482
|
+
|
|
483
|
+
// Listen for events
|
|
484
|
+
cc.on('session:delta', ({ sessionId, text }) => process.stdout.write(text))
|
|
485
|
+
cc.on('session:result', ({ sessionId, result }) => console.log('Done:', result))
|
|
486
|
+
|
|
487
|
+
// Run a prompt
|
|
488
|
+
const session = await cc.run('Explain the architecture of this project')
|
|
489
|
+
console.log(session.result)
|
|
490
|
+
```
|
|
491
|
+
|
|
492
|
+
|
|
493
|
+
|
|
494
|
+
**checkAvailability**
|
|
495
|
+
|
|
496
|
+
```ts
|
|
497
|
+
const available = await cc.checkAvailability()
|
|
498
|
+
if (!available) throw new Error('Claude CLI not found')
|
|
499
|
+
```
|
|
500
|
+
|
|
501
|
+
|
|
502
|
+
|
|
503
|
+
**writeMcpConfig**
|
|
504
|
+
|
|
505
|
+
```ts
|
|
506
|
+
const configPath = await cc.writeMcpConfig({
|
|
507
|
+
'my-api': { type: 'http', url: 'https://api.example.com/mcp' },
|
|
508
|
+
'local-tool': { type: 'stdio', command: 'bun', args: ['run', 'server.ts'] }
|
|
509
|
+
})
|
|
510
|
+
```
|
|
511
|
+
|
|
512
|
+
|
|
513
|
+
|
|
514
|
+
**run**
|
|
515
|
+
|
|
516
|
+
```ts
|
|
517
|
+
// Simple one-shot
|
|
518
|
+
const session = await cc.run('What files are in this project?')
|
|
519
|
+
console.log(session.result)
|
|
520
|
+
|
|
521
|
+
// With options
|
|
522
|
+
const session = await cc.run('Refactor the auth module', {
|
|
523
|
+
model: 'opus',
|
|
524
|
+
cwd: '/path/to/project',
|
|
525
|
+
permissionMode: 'acceptEdits',
|
|
526
|
+
streaming: true
|
|
527
|
+
})
|
|
528
|
+
|
|
529
|
+
// With injected MCP servers
|
|
530
|
+
const session = await cc.run('Use the database tools to list tables', {
|
|
531
|
+
mcpServers: {
|
|
532
|
+
'db-tools': { type: 'stdio', command: 'bun', args: ['run', 'db-mcp.ts'] },
|
|
533
|
+
'api': { type: 'http', url: 'https://api.example.com/mcp' }
|
|
534
|
+
}
|
|
535
|
+
})
|
|
536
|
+
|
|
537
|
+
// Resume a previous session
|
|
538
|
+
const session = await cc.run('Now add tests for that', {
|
|
539
|
+
resumeSessionId: previousSession.sessionId
|
|
540
|
+
})
|
|
541
|
+
```
|
|
542
|
+
|
|
543
|
+
|
|
544
|
+
|
|
545
|
+
**start**
|
|
546
|
+
|
|
547
|
+
```ts
|
|
548
|
+
const sessionId = cc.start('Build a REST API for users')
|
|
549
|
+
|
|
550
|
+
cc.on('session:delta', ({ sessionId: sid, text }) => {
|
|
551
|
+
if (sid === sessionId) process.stdout.write(text)
|
|
552
|
+
})
|
|
553
|
+
|
|
554
|
+
cc.on('session:result', ({ sessionId: sid, result }) => {
|
|
555
|
+
if (sid === sessionId) console.log('\nDone:', result)
|
|
556
|
+
})
|
|
557
|
+
```
|
|
558
|
+
|
|
559
|
+
|
|
560
|
+
|
|
561
|
+
**abort**
|
|
562
|
+
|
|
563
|
+
```ts
|
|
564
|
+
const sessionId = cc.start('Do something long')
|
|
565
|
+
// ... later
|
|
566
|
+
cc.abort(sessionId)
|
|
567
|
+
```
|
|
568
|
+
|
|
569
|
+
|
|
570
|
+
|
|
571
|
+
**getSession**
|
|
572
|
+
|
|
573
|
+
```ts
|
|
574
|
+
const session = cc.getSession(sessionId)
|
|
575
|
+
if (session?.status === 'completed') {
|
|
576
|
+
console.log(session.result)
|
|
577
|
+
}
|
|
578
|
+
```
|
|
579
|
+
|
|
580
|
+
|
|
581
|
+
|
|
582
|
+
**waitForSession**
|
|
583
|
+
|
|
584
|
+
```ts
|
|
585
|
+
const id = cc.start('Build something cool')
|
|
586
|
+
const session = await cc.waitForSession(id)
|
|
587
|
+
console.log(session.result)
|
|
588
|
+
```
|
|
589
|
+
|
|
590
|
+
|
|
591
|
+
|
|
592
|
+
**usage**
|
|
593
|
+
|
|
594
|
+
```ts
|
|
595
|
+
const stats = cc.usage()
|
|
596
|
+
console.log(`Total cost: $${stats.totalCostUsd.toFixed(4)}`)
|
|
597
|
+
console.log(`Tokens: ${stats.totalInputTokens} in / ${stats.totalOutputTokens} out`)
|
|
598
|
+
|
|
599
|
+
// Single session
|
|
600
|
+
const sessionStats = cc.usage(sessionId)
|
|
601
|
+
```
|
|
602
|
+
|