@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.
Files changed (358) hide show
  1. package/CLAUDE.md +71 -0
  2. package/README.md +78 -0
  3. package/bun.lock +2928 -0
  4. package/bunfig.toml +3 -0
  5. package/commands/audit-docs.ts +740 -0
  6. package/commands/build-scaffolds.ts +154 -0
  7. package/commands/generate-api-docs.ts +114 -0
  8. package/commands/update-introspection.ts +67 -0
  9. package/docs/CLI.md +335 -0
  10. package/docs/README.md +88 -0
  11. package/docs/TABLE-OF-CONTENTS.md +157 -0
  12. package/docs/apis/clients/elevenlabs.md +84 -0
  13. package/docs/apis/clients/graph.md +56 -0
  14. package/docs/apis/clients/openai.md +69 -0
  15. package/docs/apis/clients/rest.md +41 -0
  16. package/docs/apis/clients/websocket.md +107 -0
  17. package/docs/apis/features/agi/assistant.md +471 -0
  18. package/docs/apis/features/agi/assistants-manager.md +154 -0
  19. package/docs/apis/features/agi/claude-code.md +602 -0
  20. package/docs/apis/features/agi/conversation-history.md +352 -0
  21. package/docs/apis/features/agi/conversation.md +333 -0
  22. package/docs/apis/features/agi/docs-reader.md +121 -0
  23. package/docs/apis/features/agi/openai-codex.md +318 -0
  24. package/docs/apis/features/agi/openapi.md +138 -0
  25. package/docs/apis/features/agi/semantic-search.md +387 -0
  26. package/docs/apis/features/agi/skills-library.md +216 -0
  27. package/docs/apis/features/node/container-link.md +133 -0
  28. package/docs/apis/features/node/content-db.md +313 -0
  29. package/docs/apis/features/node/disk-cache.md +379 -0
  30. package/docs/apis/features/node/dns.md +651 -0
  31. package/docs/apis/features/node/docker.md +705 -0
  32. package/docs/apis/features/node/downloader.md +81 -0
  33. package/docs/apis/features/node/esbuild.md +59 -0
  34. package/docs/apis/features/node/file-manager.md +182 -0
  35. package/docs/apis/features/node/fs.md +581 -0
  36. package/docs/apis/features/node/git.md +330 -0
  37. package/docs/apis/features/node/google-auth.md +174 -0
  38. package/docs/apis/features/node/google-calendar.md +187 -0
  39. package/docs/apis/features/node/google-docs.md +151 -0
  40. package/docs/apis/features/node/google-drive.md +225 -0
  41. package/docs/apis/features/node/google-sheets.md +179 -0
  42. package/docs/apis/features/node/grep.md +290 -0
  43. package/docs/apis/features/node/helpers.md +135 -0
  44. package/docs/apis/features/node/ink.md +334 -0
  45. package/docs/apis/features/node/ipc-socket.md +260 -0
  46. package/docs/apis/features/node/json-tree.md +86 -0
  47. package/docs/apis/features/node/launcher-app-command-listener.md +145 -0
  48. package/docs/apis/features/node/networking.md +281 -0
  49. package/docs/apis/features/node/nlp.md +133 -0
  50. package/docs/apis/features/node/opener.md +97 -0
  51. package/docs/apis/features/node/os.md +118 -0
  52. package/docs/apis/features/node/package-finder.md +402 -0
  53. package/docs/apis/features/node/postgres.md +212 -0
  54. package/docs/apis/features/node/proc.md +430 -0
  55. package/docs/apis/features/node/process-manager.md +210 -0
  56. package/docs/apis/features/node/python.md +278 -0
  57. package/docs/apis/features/node/repl.md +88 -0
  58. package/docs/apis/features/node/runpod.md +673 -0
  59. package/docs/apis/features/node/secure-shell.md +169 -0
  60. package/docs/apis/features/node/semantic-search.md +401 -0
  61. package/docs/apis/features/node/sqlite.md +211 -0
  62. package/docs/apis/features/node/telegram.md +254 -0
  63. package/docs/apis/features/node/tts.md +118 -0
  64. package/docs/apis/features/node/ui.md +703 -0
  65. package/docs/apis/features/node/vault.md +64 -0
  66. package/docs/apis/features/node/vm.md +84 -0
  67. package/docs/apis/features/node/window-manager.md +337 -0
  68. package/docs/apis/features/node/yaml-tree.md +85 -0
  69. package/docs/apis/features/node/yaml.md +176 -0
  70. package/docs/apis/features/web/asset-loader.md +47 -0
  71. package/docs/apis/features/web/container-link.md +133 -0
  72. package/docs/apis/features/web/esbuild.md +59 -0
  73. package/docs/apis/features/web/helpers.md +135 -0
  74. package/docs/apis/features/web/network.md +30 -0
  75. package/docs/apis/features/web/speech.md +55 -0
  76. package/docs/apis/features/web/vault.md +64 -0
  77. package/docs/apis/features/web/vm.md +84 -0
  78. package/docs/apis/features/web/voice.md +67 -0
  79. package/docs/apis/servers/express.md +127 -0
  80. package/docs/apis/servers/mcp.md +213 -0
  81. package/docs/apis/servers/websocket.md +99 -0
  82. package/docs/documentation-audit.md +134 -0
  83. package/docs/examples/content-db.md +77 -0
  84. package/docs/examples/disk-cache.md +83 -0
  85. package/docs/examples/docker.md +101 -0
  86. package/docs/examples/downloader.md +70 -0
  87. package/docs/examples/esbuild.md +80 -0
  88. package/docs/examples/file-manager.md +82 -0
  89. package/docs/examples/fs.md +83 -0
  90. package/docs/examples/git.md +85 -0
  91. package/docs/examples/google-auth.md +88 -0
  92. package/docs/examples/google-calendar.md +94 -0
  93. package/docs/examples/google-docs.md +82 -0
  94. package/docs/examples/google-drive.md +96 -0
  95. package/docs/examples/google-sheets.md +95 -0
  96. package/docs/examples/grep.md +85 -0
  97. package/docs/examples/ink-blocks.md +75 -0
  98. package/docs/examples/ink-renderer.md +41 -0
  99. package/docs/examples/ink.md +103 -0
  100. package/docs/examples/ipc-socket.md +103 -0
  101. package/docs/examples/json-tree.md +91 -0
  102. package/docs/examples/launcher-app-command-listener.md +120 -0
  103. package/docs/examples/networking.md +58 -0
  104. package/docs/examples/nlp.md +91 -0
  105. package/docs/examples/opener.md +78 -0
  106. package/docs/examples/os.md +72 -0
  107. package/docs/examples/package-finder.md +89 -0
  108. package/docs/examples/port-exposer.md +89 -0
  109. package/docs/examples/postgres.md +91 -0
  110. package/docs/examples/proc.md +81 -0
  111. package/docs/examples/process-manager.md +79 -0
  112. package/docs/examples/python.md +91 -0
  113. package/docs/examples/repl.md +93 -0
  114. package/docs/examples/runpod.md +119 -0
  115. package/docs/examples/secure-shell.md +92 -0
  116. package/docs/examples/sqlite.md +86 -0
  117. package/docs/examples/telegram.md +77 -0
  118. package/docs/examples/tts.md +86 -0
  119. package/docs/examples/ui.md +80 -0
  120. package/docs/examples/vault.md +70 -0
  121. package/docs/examples/vm.md +86 -0
  122. package/docs/examples/window-manager.md +125 -0
  123. package/docs/examples/yaml-tree.md +93 -0
  124. package/docs/examples/yaml.md +104 -0
  125. package/docs/ideas/class-registration-refactor-possibilities.md +197 -0
  126. package/docs/ideas/container-use-api.md +9 -0
  127. package/docs/ideas/easy-auth-for-express-servers-and-luca-serve.md +0 -0
  128. package/docs/ideas/feature-stacks.md +22 -0
  129. package/docs/ideas/luca-cli-self-sufficiency-demo.md +23 -0
  130. package/docs/ideas/mcp-design.md +9 -0
  131. package/docs/ideas/web-container-debugging-feature.md +13 -0
  132. package/docs/introspection-audit.md +49 -0
  133. package/docs/introspection.md +154 -0
  134. package/docs/mcp/readme.md +162 -0
  135. package/docs/models.ts +38 -0
  136. package/docs/philosophy.md +85 -0
  137. package/docs/principles.md +7 -0
  138. package/docs/prompts/audit-codebase-for-failures-to-use-the-container.md +34 -0
  139. package/docs/prompts/mcp-test-easy-command.md +27 -0
  140. package/docs/reports/assistant-bugs.md +38 -0
  141. package/docs/reports/attach-pattern-usage.md +18 -0
  142. package/docs/reports/code-audit-results.md +391 -0
  143. package/docs/reports/introspection-audit-tasks.md +378 -0
  144. package/docs/reports/luca-mcp-improvements.md +128 -0
  145. package/docs/scaffolds/client.md +140 -0
  146. package/docs/scaffolds/command.md +106 -0
  147. package/docs/scaffolds/endpoint.md +176 -0
  148. package/docs/scaffolds/feature.md +148 -0
  149. package/docs/scaffolds/server.md +187 -0
  150. package/docs/tasks/web-container-helper-discovery.md +71 -0
  151. package/docs/todos.md +1 -0
  152. package/docs/tutorials/01-getting-started.md +106 -0
  153. package/docs/tutorials/02-container.md +210 -0
  154. package/docs/tutorials/03-scripts.md +194 -0
  155. package/docs/tutorials/04-features-overview.md +196 -0
  156. package/docs/tutorials/05-state-and-events.md +171 -0
  157. package/docs/tutorials/06-servers.md +157 -0
  158. package/docs/tutorials/07-endpoints.md +198 -0
  159. package/docs/tutorials/08-commands.md +171 -0
  160. package/docs/tutorials/09-clients.md +162 -0
  161. package/docs/tutorials/10-creating-features.md +198 -0
  162. package/docs/tutorials/11-contentbase.md +191 -0
  163. package/docs/tutorials/12-assistants.md +215 -0
  164. package/docs/tutorials/13-introspection.md +147 -0
  165. package/docs/tutorials/14-type-system.md +174 -0
  166. package/docs/tutorials/15-project-patterns.md +222 -0
  167. package/docs/tutorials/16-google-features.md +534 -0
  168. package/docs/tutorials/17-tui-blocks.md +530 -0
  169. package/docs/tutorials/18-semantic-search.md +334 -0
  170. package/index.ts +1 -0
  171. package/luca.console.ts +9 -0
  172. package/main.py +6 -0
  173. package/package.json +154 -0
  174. package/pyproject.toml +7 -0
  175. package/scripts/animations/chrome-glitch.ts +55 -0
  176. package/scripts/animations/index.ts +16 -0
  177. package/scripts/animations/neon-pulse.ts +64 -0
  178. package/scripts/animations/types.ts +6 -0
  179. package/scripts/build-web.ts +28 -0
  180. package/scripts/examples/ask-luca-expert.ts +42 -0
  181. package/scripts/examples/assistant-questions.ts +12 -0
  182. package/scripts/examples/excalidraw-expert.ts +75 -0
  183. package/scripts/examples/expert-chat.ts +0 -0
  184. package/scripts/examples/file-manager.ts +14 -0
  185. package/scripts/examples/ideas.ts +12 -0
  186. package/scripts/examples/interactive-chat.ts +20 -0
  187. package/scripts/examples/openai-tool-calls.ts +113 -0
  188. package/scripts/examples/opening-a-web-browser.ts +5 -0
  189. package/scripts/examples/telegram-bot.ts +79 -0
  190. package/scripts/examples/telegram-ink-ui.ts +302 -0
  191. package/scripts/examples/using-assistant-with-mcp.ts +560 -0
  192. package/scripts/examples/using-claude-code.ts +10 -0
  193. package/scripts/examples/using-contentdb.ts +35 -0
  194. package/scripts/examples/using-conversations.ts +35 -0
  195. package/scripts/examples/using-disk-cache.ts +10 -0
  196. package/scripts/examples/using-docker-shell.ts +75 -0
  197. package/scripts/examples/using-elevenlabs.ts +25 -0
  198. package/scripts/examples/using-google-calendar.ts +57 -0
  199. package/scripts/examples/using-google-docs.ts +74 -0
  200. package/scripts/examples/using-google-drive.ts +74 -0
  201. package/scripts/examples/using-google-sheets.ts +89 -0
  202. package/scripts/examples/using-nlp.ts +55 -0
  203. package/scripts/examples/using-ollama.ts +10 -0
  204. package/scripts/examples/using-openai-codex.ts +23 -0
  205. package/scripts/examples/using-postgres.ts +55 -0
  206. package/scripts/examples/using-runpod.ts +32 -0
  207. package/scripts/examples/using-tts.ts +40 -0
  208. package/scripts/examples/vm-loading-esm-modules.ts +16 -0
  209. package/scripts/scaffold.ts +391 -0
  210. package/scripts/scratch.ts +15 -0
  211. package/scripts/test-command-listener.ts +123 -0
  212. package/scripts/test-window-manager-lifecycle.ts +86 -0
  213. package/scripts/test-window-manager.ts +43 -0
  214. package/scripts/update-introspection-data.ts +58 -0
  215. package/src/agi/README.md +14 -0
  216. package/src/agi/container.server.ts +114 -0
  217. package/src/agi/endpoints/ask.ts +60 -0
  218. package/src/agi/endpoints/conversations/[id].ts +45 -0
  219. package/src/agi/endpoints/conversations.ts +31 -0
  220. package/src/agi/endpoints/experts.ts +37 -0
  221. package/src/agi/features/assistant.ts +767 -0
  222. package/src/agi/features/assistants-manager.ts +260 -0
  223. package/src/agi/features/claude-code.ts +1111 -0
  224. package/src/agi/features/conversation-history.ts +497 -0
  225. package/src/agi/features/conversation.ts +799 -0
  226. package/src/agi/features/openai-codex.ts +631 -0
  227. package/src/agi/features/openapi.ts +438 -0
  228. package/src/agi/features/skills-library.ts +425 -0
  229. package/src/agi/index.ts +6 -0
  230. package/src/agi/lib/token-counter.ts +122 -0
  231. package/src/browser.ts +25 -0
  232. package/src/bus.ts +100 -0
  233. package/src/cli/cli.ts +70 -0
  234. package/src/client.ts +461 -0
  235. package/src/clients/civitai/index.ts +541 -0
  236. package/src/clients/client-template.ts +41 -0
  237. package/src/clients/comfyui/index.ts +597 -0
  238. package/src/clients/elevenlabs/index.ts +291 -0
  239. package/src/clients/openai/index.ts +451 -0
  240. package/src/clients/supabase/index.ts +366 -0
  241. package/src/command.ts +164 -0
  242. package/src/commands/chat.ts +182 -0
  243. package/src/commands/console.ts +192 -0
  244. package/src/commands/describe.ts +433 -0
  245. package/src/commands/eval.ts +116 -0
  246. package/src/commands/help.ts +214 -0
  247. package/src/commands/index.ts +14 -0
  248. package/src/commands/mcp.ts +64 -0
  249. package/src/commands/prompt.ts +807 -0
  250. package/src/commands/run.ts +257 -0
  251. package/src/commands/sandbox-mcp.ts +439 -0
  252. package/src/commands/scaffold.ts +79 -0
  253. package/src/commands/serve.ts +172 -0
  254. package/src/container.ts +781 -0
  255. package/src/endpoint.ts +340 -0
  256. package/src/feature.ts +75 -0
  257. package/src/hash-object.ts +97 -0
  258. package/src/helper.ts +543 -0
  259. package/src/introspection/generated.agi.ts +23388 -0
  260. package/src/introspection/generated.node.ts +18899 -0
  261. package/src/introspection/generated.web.ts +2021 -0
  262. package/src/introspection/index.ts +256 -0
  263. package/src/introspection/scan.ts +912 -0
  264. package/src/node/container.ts +354 -0
  265. package/src/node/feature.ts +13 -0
  266. package/src/node/features/container-link.ts +558 -0
  267. package/src/node/features/content-db.ts +475 -0
  268. package/src/node/features/disk-cache.ts +382 -0
  269. package/src/node/features/dns.ts +655 -0
  270. package/src/node/features/docker.ts +912 -0
  271. package/src/node/features/downloader.ts +92 -0
  272. package/src/node/features/esbuild.ts +68 -0
  273. package/src/node/features/file-manager.ts +357 -0
  274. package/src/node/features/fs.ts +534 -0
  275. package/src/node/features/git.ts +492 -0
  276. package/src/node/features/google-auth.ts +502 -0
  277. package/src/node/features/google-calendar.ts +300 -0
  278. package/src/node/features/google-docs.ts +404 -0
  279. package/src/node/features/google-drive.ts +339 -0
  280. package/src/node/features/google-sheets.ts +279 -0
  281. package/src/node/features/grep.ts +406 -0
  282. package/src/node/features/helpers.ts +374 -0
  283. package/src/node/features/ink.ts +490 -0
  284. package/src/node/features/ipc-socket.ts +459 -0
  285. package/src/node/features/json-tree.ts +188 -0
  286. package/src/node/features/launcher-app-command-listener.ts +388 -0
  287. package/src/node/features/networking.ts +925 -0
  288. package/src/node/features/nlp.ts +211 -0
  289. package/src/node/features/opener.ts +166 -0
  290. package/src/node/features/os.ts +157 -0
  291. package/src/node/features/package-finder.ts +539 -0
  292. package/src/node/features/port-exposer.ts +342 -0
  293. package/src/node/features/postgres.ts +273 -0
  294. package/src/node/features/proc.ts +502 -0
  295. package/src/node/features/process-manager.ts +542 -0
  296. package/src/node/features/python.ts +444 -0
  297. package/src/node/features/repl.ts +194 -0
  298. package/src/node/features/runpod.ts +802 -0
  299. package/src/node/features/secure-shell.ts +248 -0
  300. package/src/node/features/semantic-search.ts +924 -0
  301. package/src/node/features/sqlite.ts +289 -0
  302. package/src/node/features/telegram.ts +342 -0
  303. package/src/node/features/tts.ts +184 -0
  304. package/src/node/features/ui.ts +857 -0
  305. package/src/node/features/vault.ts +164 -0
  306. package/src/node/features/vm.ts +312 -0
  307. package/src/node/features/window-manager.ts +804 -0
  308. package/src/node/features/yaml-tree.ts +149 -0
  309. package/src/node/features/yaml.ts +132 -0
  310. package/src/node.ts +70 -0
  311. package/src/react/index.ts +175 -0
  312. package/src/registry.ts +199 -0
  313. package/src/scaffolds/generated.ts +1613 -0
  314. package/src/scaffolds/template.ts +37 -0
  315. package/src/schemas/base.ts +255 -0
  316. package/src/server.ts +135 -0
  317. package/src/servers/express.ts +209 -0
  318. package/src/servers/mcp.ts +805 -0
  319. package/src/servers/socket.ts +120 -0
  320. package/src/state.ts +101 -0
  321. package/src/web/clients/socket.ts +82 -0
  322. package/src/web/container.ts +74 -0
  323. package/src/web/extension.ts +30 -0
  324. package/src/web/feature.ts +12 -0
  325. package/src/web/features/asset-loader.ts +64 -0
  326. package/src/web/features/container-link.ts +385 -0
  327. package/src/web/features/esbuild.ts +79 -0
  328. package/src/web/features/helpers.ts +267 -0
  329. package/src/web/features/network.ts +61 -0
  330. package/src/web/features/speech.ts +87 -0
  331. package/src/web/features/vault.ts +189 -0
  332. package/src/web/features/vm.ts +78 -0
  333. package/src/web/features/voice-recognition.ts +129 -0
  334. package/src/web/shims/isomorphic-vm.ts +149 -0
  335. package/test/bus.test.ts +134 -0
  336. package/test/clients-servers.test.ts +216 -0
  337. package/test/container-link.test.ts +274 -0
  338. package/test/features.test.ts +160 -0
  339. package/test/integration.test.ts +787 -0
  340. package/test/node-container.test.ts +121 -0
  341. package/test/rate-limit.test.ts +272 -0
  342. package/test/semantic-search.test.ts +550 -0
  343. package/test/state.test.ts +121 -0
  344. package/test-integration/assistant.test.ts +138 -0
  345. package/test-integration/assistants-manager.test.ts +123 -0
  346. package/test-integration/claude-code.test.ts +98 -0
  347. package/test-integration/conversation-history.test.ts +205 -0
  348. package/test-integration/conversation.test.ts +137 -0
  349. package/test-integration/elevenlabs.test.ts +55 -0
  350. package/test-integration/google-services.test.ts +80 -0
  351. package/test-integration/helpers.ts +89 -0
  352. package/test-integration/openai-codex.test.ts +93 -0
  353. package/test-integration/runpod.test.ts +58 -0
  354. package/test-integration/server-endpoints.test.ts +97 -0
  355. package/test-integration/skills-library.test.ts +157 -0
  356. package/test-integration/telegram.test.ts +46 -0
  357. package/tsconfig.json +58 -0
  358. 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
+