@soederpop/luca 0.1.2 → 0.1.3

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 (366) hide show
  1. package/CLAUDE.md +2 -0
  2. package/assistants/codingAssistant/hooks.ts +1 -5
  3. package/assistants/inkbot/CORE.md +69 -0
  4. package/assistants/inkbot/hooks.ts +14 -0
  5. package/assistants/inkbot/tools.ts +47 -0
  6. package/commands/inkbot.ts +353 -0
  7. package/dist/agi/container.server.d.ts +63 -0
  8. package/dist/agi/container.server.d.ts.map +1 -0
  9. package/dist/agi/endpoints/ask.d.ts +20 -0
  10. package/dist/agi/endpoints/ask.d.ts.map +1 -0
  11. package/dist/agi/endpoints/conversations/[id].d.ts +27 -0
  12. package/dist/agi/endpoints/conversations/[id].d.ts.map +1 -0
  13. package/dist/agi/endpoints/conversations.d.ts +18 -0
  14. package/dist/agi/endpoints/conversations.d.ts.map +1 -0
  15. package/dist/agi/endpoints/experts.d.ts +8 -0
  16. package/dist/agi/endpoints/experts.d.ts.map +1 -0
  17. package/dist/agi/feature.d.ts +9 -0
  18. package/dist/agi/feature.d.ts.map +1 -0
  19. package/dist/agi/features/assistant.d.ts +509 -0
  20. package/dist/agi/features/assistant.d.ts.map +1 -0
  21. package/dist/agi/features/assistants-manager.d.ts +236 -0
  22. package/dist/agi/features/assistants-manager.d.ts.map +1 -0
  23. package/dist/agi/features/autonomous-assistant.d.ts +281 -0
  24. package/dist/agi/features/autonomous-assistant.d.ts.map +1 -0
  25. package/dist/agi/features/browser-use.d.ts +479 -0
  26. package/dist/agi/features/browser-use.d.ts.map +1 -0
  27. package/dist/agi/features/claude-code.d.ts +824 -0
  28. package/dist/agi/features/claude-code.d.ts.map +1 -0
  29. package/dist/agi/features/conversation-history.d.ts +245 -0
  30. package/dist/agi/features/conversation-history.d.ts.map +1 -0
  31. package/dist/agi/features/conversation.d.ts +464 -0
  32. package/dist/agi/features/conversation.d.ts.map +1 -0
  33. package/dist/agi/features/docs-reader.d.ts +72 -0
  34. package/dist/agi/features/docs-reader.d.ts.map +1 -0
  35. package/dist/agi/features/file-tools.d.ts +110 -0
  36. package/dist/agi/features/file-tools.d.ts.map +1 -0
  37. package/dist/agi/features/luca-coder.d.ts +323 -0
  38. package/dist/agi/features/luca-coder.d.ts.map +1 -0
  39. package/dist/agi/features/openai-codex.d.ts +381 -0
  40. package/dist/agi/features/openai-codex.d.ts.map +1 -0
  41. package/dist/agi/features/openapi.d.ts +200 -0
  42. package/dist/agi/features/openapi.d.ts.map +1 -0
  43. package/dist/agi/features/skills-library.d.ts +167 -0
  44. package/dist/agi/features/skills-library.d.ts.map +1 -0
  45. package/dist/agi/index.d.ts +5 -0
  46. package/dist/agi/index.d.ts.map +1 -0
  47. package/dist/agi/lib/interceptor-chain.d.ts +44 -0
  48. package/dist/agi/lib/interceptor-chain.d.ts.map +1 -0
  49. package/dist/agi/lib/token-counter.d.ts +13 -0
  50. package/dist/agi/lib/token-counter.d.ts.map +1 -0
  51. package/dist/bootstrap/generated.d.ts +5 -0
  52. package/dist/bootstrap/generated.d.ts.map +1 -0
  53. package/dist/browser.d.ts +12 -0
  54. package/dist/browser.d.ts.map +1 -0
  55. package/dist/bus.d.ts +29 -0
  56. package/dist/bus.d.ts.map +1 -0
  57. package/dist/cli/build-info.d.ts +4 -0
  58. package/dist/cli/build-info.d.ts.map +1 -0
  59. package/dist/cli/cli.d.ts +3 -0
  60. package/dist/cli/cli.d.ts.map +1 -0
  61. package/dist/client.d.ts +60 -0
  62. package/dist/client.d.ts.map +1 -0
  63. package/dist/clients/civitai/index.d.ts +472 -0
  64. package/dist/clients/civitai/index.d.ts.map +1 -0
  65. package/dist/clients/client-template.d.ts +30 -0
  66. package/dist/clients/client-template.d.ts.map +1 -0
  67. package/dist/clients/comfyui/index.d.ts +281 -0
  68. package/dist/clients/comfyui/index.d.ts.map +1 -0
  69. package/dist/clients/elevenlabs/index.d.ts +197 -0
  70. package/dist/clients/elevenlabs/index.d.ts.map +1 -0
  71. package/dist/clients/graph.d.ts +64 -0
  72. package/dist/clients/graph.d.ts.map +1 -0
  73. package/dist/clients/openai/index.d.ts +247 -0
  74. package/dist/clients/openai/index.d.ts.map +1 -0
  75. package/dist/clients/rest.d.ts +92 -0
  76. package/dist/clients/rest.d.ts.map +1 -0
  77. package/dist/clients/supabase/index.d.ts +176 -0
  78. package/dist/clients/supabase/index.d.ts.map +1 -0
  79. package/dist/clients/websocket.d.ts +127 -0
  80. package/dist/clients/websocket.d.ts.map +1 -0
  81. package/dist/command.d.ts +163 -0
  82. package/dist/command.d.ts.map +1 -0
  83. package/dist/commands/bootstrap.d.ts +20 -0
  84. package/dist/commands/bootstrap.d.ts.map +1 -0
  85. package/dist/commands/chat.d.ts +37 -0
  86. package/dist/commands/chat.d.ts.map +1 -0
  87. package/dist/commands/code.d.ts +28 -0
  88. package/dist/commands/code.d.ts.map +1 -0
  89. package/dist/commands/console.d.ts +22 -0
  90. package/dist/commands/console.d.ts.map +1 -0
  91. package/dist/commands/describe.d.ts +50 -0
  92. package/dist/commands/describe.d.ts.map +1 -0
  93. package/dist/commands/eval.d.ts +23 -0
  94. package/dist/commands/eval.d.ts.map +1 -0
  95. package/dist/commands/help.d.ts +25 -0
  96. package/dist/commands/help.d.ts.map +1 -0
  97. package/dist/commands/index.d.ts +18 -0
  98. package/dist/commands/index.d.ts.map +1 -0
  99. package/dist/commands/introspect.d.ts +24 -0
  100. package/dist/commands/introspect.d.ts.map +1 -0
  101. package/dist/commands/mcp.d.ts +35 -0
  102. package/dist/commands/mcp.d.ts.map +1 -0
  103. package/dist/commands/prompt.d.ts +38 -0
  104. package/dist/commands/prompt.d.ts.map +1 -0
  105. package/dist/commands/run.d.ts +24 -0
  106. package/dist/commands/run.d.ts.map +1 -0
  107. package/dist/commands/sandbox-mcp.d.ts +34 -0
  108. package/dist/commands/sandbox-mcp.d.ts.map +1 -0
  109. package/dist/commands/save-api-docs.d.ts +21 -0
  110. package/dist/commands/save-api-docs.d.ts.map +1 -0
  111. package/dist/commands/scaffold.d.ts +24 -0
  112. package/dist/commands/scaffold.d.ts.map +1 -0
  113. package/dist/commands/select.d.ts +22 -0
  114. package/dist/commands/select.d.ts.map +1 -0
  115. package/dist/commands/serve.d.ts +29 -0
  116. package/dist/commands/serve.d.ts.map +1 -0
  117. package/dist/container-describer.d.ts +144 -0
  118. package/dist/container-describer.d.ts.map +1 -0
  119. package/dist/container.d.ts +451 -0
  120. package/dist/container.d.ts.map +1 -0
  121. package/dist/endpoint.d.ts +113 -0
  122. package/dist/endpoint.d.ts.map +1 -0
  123. package/dist/feature.d.ts +47 -0
  124. package/dist/feature.d.ts.map +1 -0
  125. package/dist/graft.d.ts +29 -0
  126. package/dist/graft.d.ts.map +1 -0
  127. package/dist/hash-object.d.ts +8 -0
  128. package/dist/hash-object.d.ts.map +1 -0
  129. package/dist/helper.d.ts +209 -0
  130. package/dist/helper.d.ts.map +1 -0
  131. package/dist/introspection/generated.node.d.ts +44623 -0
  132. package/dist/introspection/generated.node.d.ts.map +1 -0
  133. package/dist/introspection/generated.web.d.ts +1412 -0
  134. package/dist/introspection/generated.web.d.ts.map +1 -0
  135. package/dist/introspection/index.d.ts +156 -0
  136. package/dist/introspection/index.d.ts.map +1 -0
  137. package/dist/introspection/scan.d.ts +147 -0
  138. package/dist/introspection/scan.d.ts.map +1 -0
  139. package/dist/node/container.d.ts +256 -0
  140. package/dist/node/container.d.ts.map +1 -0
  141. package/dist/node/feature.d.ts +9 -0
  142. package/dist/node/feature.d.ts.map +1 -0
  143. package/dist/node/features/container-link.d.ts +213 -0
  144. package/dist/node/features/container-link.d.ts.map +1 -0
  145. package/dist/node/features/content-db.d.ts +354 -0
  146. package/dist/node/features/content-db.d.ts.map +1 -0
  147. package/dist/node/features/disk-cache.d.ts +236 -0
  148. package/dist/node/features/disk-cache.d.ts.map +1 -0
  149. package/dist/node/features/dns.d.ts +511 -0
  150. package/dist/node/features/dns.d.ts.map +1 -0
  151. package/dist/node/features/docker.d.ts +485 -0
  152. package/dist/node/features/docker.d.ts.map +1 -0
  153. package/dist/node/features/downloader.d.ts +73 -0
  154. package/dist/node/features/downloader.d.ts.map +1 -0
  155. package/dist/node/features/figlet-fonts.d.ts +4 -0
  156. package/dist/node/features/figlet-fonts.d.ts.map +1 -0
  157. package/dist/node/features/file-manager.d.ts +177 -0
  158. package/dist/node/features/file-manager.d.ts.map +1 -0
  159. package/dist/node/features/fs.d.ts +635 -0
  160. package/dist/node/features/fs.d.ts.map +1 -0
  161. package/dist/node/features/git.d.ts +329 -0
  162. package/dist/node/features/git.d.ts.map +1 -0
  163. package/dist/node/features/google-auth.d.ts +200 -0
  164. package/dist/node/features/google-auth.d.ts.map +1 -0
  165. package/dist/node/features/google-calendar.d.ts +194 -0
  166. package/dist/node/features/google-calendar.d.ts.map +1 -0
  167. package/dist/node/features/google-docs.d.ts +138 -0
  168. package/dist/node/features/google-docs.d.ts.map +1 -0
  169. package/dist/node/features/google-drive.d.ts +202 -0
  170. package/dist/node/features/google-drive.d.ts.map +1 -0
  171. package/dist/node/features/google-mail.d.ts +221 -0
  172. package/dist/node/features/google-mail.d.ts.map +1 -0
  173. package/dist/node/features/google-sheets.d.ts +157 -0
  174. package/dist/node/features/google-sheets.d.ts.map +1 -0
  175. package/dist/node/features/grep.d.ts +207 -0
  176. package/dist/node/features/grep.d.ts.map +1 -0
  177. package/dist/node/features/helpers.d.ts +236 -0
  178. package/dist/node/features/helpers.d.ts.map +1 -0
  179. package/dist/node/features/ink.d.ts +332 -0
  180. package/dist/node/features/ink.d.ts.map +1 -0
  181. package/dist/node/features/ipc-socket.d.ts +298 -0
  182. package/dist/node/features/ipc-socket.d.ts.map +1 -0
  183. package/dist/node/features/json-tree.d.ts +140 -0
  184. package/dist/node/features/json-tree.d.ts.map +1 -0
  185. package/dist/node/features/networking.d.ts +373 -0
  186. package/dist/node/features/networking.d.ts.map +1 -0
  187. package/dist/node/features/nlp.d.ts +125 -0
  188. package/dist/node/features/nlp.d.ts.map +1 -0
  189. package/dist/node/features/opener.d.ts +93 -0
  190. package/dist/node/features/opener.d.ts.map +1 -0
  191. package/dist/node/features/os.d.ts +168 -0
  192. package/dist/node/features/os.d.ts.map +1 -0
  193. package/dist/node/features/package-finder.d.ts +419 -0
  194. package/dist/node/features/package-finder.d.ts.map +1 -0
  195. package/dist/node/features/postgres.d.ts +173 -0
  196. package/dist/node/features/postgres.d.ts.map +1 -0
  197. package/dist/node/features/proc.d.ts +285 -0
  198. package/dist/node/features/proc.d.ts.map +1 -0
  199. package/dist/node/features/process-manager.d.ts +427 -0
  200. package/dist/node/features/process-manager.d.ts.map +1 -0
  201. package/dist/node/features/python.d.ts +477 -0
  202. package/dist/node/features/python.d.ts.map +1 -0
  203. package/dist/node/features/redis.d.ts +247 -0
  204. package/dist/node/features/redis.d.ts.map +1 -0
  205. package/dist/node/features/repl.d.ts +84 -0
  206. package/dist/node/features/repl.d.ts.map +1 -0
  207. package/dist/node/features/runpod.d.ts +527 -0
  208. package/dist/node/features/runpod.d.ts.map +1 -0
  209. package/dist/node/features/secure-shell.d.ts +145 -0
  210. package/dist/node/features/secure-shell.d.ts.map +1 -0
  211. package/dist/node/features/semantic-search.d.ts +207 -0
  212. package/dist/node/features/semantic-search.d.ts.map +1 -0
  213. package/dist/node/features/sqlite.d.ts +180 -0
  214. package/dist/node/features/sqlite.d.ts.map +1 -0
  215. package/dist/node/features/telegram.d.ts +173 -0
  216. package/dist/node/features/telegram.d.ts.map +1 -0
  217. package/dist/node/features/transpiler.d.ts +51 -0
  218. package/dist/node/features/transpiler.d.ts.map +1 -0
  219. package/dist/node/features/tts.d.ts +108 -0
  220. package/dist/node/features/tts.d.ts.map +1 -0
  221. package/dist/node/features/ui.d.ts +562 -0
  222. package/dist/node/features/ui.d.ts.map +1 -0
  223. package/dist/node/features/vault.d.ts +90 -0
  224. package/dist/node/features/vault.d.ts.map +1 -0
  225. package/dist/node/features/vm.d.ts +285 -0
  226. package/dist/node/features/vm.d.ts.map +1 -0
  227. package/dist/node/features/yaml-tree.d.ts +118 -0
  228. package/dist/node/features/yaml-tree.d.ts.map +1 -0
  229. package/dist/node/features/yaml.d.ts +127 -0
  230. package/dist/node/features/yaml.d.ts.map +1 -0
  231. package/dist/node.d.ts +67 -0
  232. package/dist/node.d.ts.map +1 -0
  233. package/dist/python/generated.d.ts +2 -0
  234. package/dist/python/generated.d.ts.map +1 -0
  235. package/dist/react/index.d.ts +36 -0
  236. package/dist/react/index.d.ts.map +1 -0
  237. package/dist/registry.d.ts +97 -0
  238. package/dist/registry.d.ts.map +1 -0
  239. package/dist/scaffolds/generated.d.ts +13 -0
  240. package/dist/scaffolds/generated.d.ts.map +1 -0
  241. package/dist/scaffolds/template.d.ts +11 -0
  242. package/dist/scaffolds/template.d.ts.map +1 -0
  243. package/dist/schemas/base.d.ts +254 -0
  244. package/dist/schemas/base.d.ts.map +1 -0
  245. package/dist/selector.d.ts +130 -0
  246. package/dist/selector.d.ts.map +1 -0
  247. package/dist/server.d.ts +89 -0
  248. package/dist/server.d.ts.map +1 -0
  249. package/dist/servers/express.d.ts +104 -0
  250. package/dist/servers/express.d.ts.map +1 -0
  251. package/dist/servers/mcp.d.ts +201 -0
  252. package/dist/servers/mcp.d.ts.map +1 -0
  253. package/dist/servers/socket.d.ts +121 -0
  254. package/dist/servers/socket.d.ts.map +1 -0
  255. package/dist/state.d.ts +24 -0
  256. package/dist/state.d.ts.map +1 -0
  257. package/dist/web/clients/socket.d.ts +37 -0
  258. package/dist/web/clients/socket.d.ts.map +1 -0
  259. package/dist/web/container.d.ts +55 -0
  260. package/dist/web/container.d.ts.map +1 -0
  261. package/dist/web/extension.d.ts +4 -0
  262. package/dist/web/extension.d.ts.map +1 -0
  263. package/dist/web/feature.d.ts +8 -0
  264. package/dist/web/feature.d.ts.map +1 -0
  265. package/dist/web/features/asset-loader.d.ts +35 -0
  266. package/dist/web/features/asset-loader.d.ts.map +1 -0
  267. package/dist/web/features/container-link.d.ts +167 -0
  268. package/dist/web/features/container-link.d.ts.map +1 -0
  269. package/dist/web/features/esbuild.d.ts +51 -0
  270. package/dist/web/features/esbuild.d.ts.map +1 -0
  271. package/dist/web/features/helpers.d.ts +140 -0
  272. package/dist/web/features/helpers.d.ts.map +1 -0
  273. package/dist/web/features/network.d.ts +69 -0
  274. package/dist/web/features/network.d.ts.map +1 -0
  275. package/dist/web/features/speech.d.ts +71 -0
  276. package/dist/web/features/speech.d.ts.map +1 -0
  277. package/dist/web/features/vault.d.ts +62 -0
  278. package/dist/web/features/vault.d.ts.map +1 -0
  279. package/dist/web/features/vm.d.ts +48 -0
  280. package/dist/web/features/vm.d.ts.map +1 -0
  281. package/dist/web/features/voice-recognition.d.ts +96 -0
  282. package/dist/web/features/voice-recognition.d.ts.map +1 -0
  283. package/dist/web/shims/isomorphic-vm.d.ts +22 -0
  284. package/dist/web/shims/isomorphic-vm.d.ts.map +1 -0
  285. package/docs/apis/features/agi/assistant.md +1 -0
  286. package/docs/apis/features/agi/assistants-manager.md +62 -2
  287. package/docs/apis/features/agi/auto-assistant.md +11 -109
  288. package/docs/apis/features/agi/claude-code.md +138 -0
  289. package/docs/apis/features/agi/conversation.md +60 -31
  290. package/docs/apis/features/agi/luca-coder.md +407 -0
  291. package/docs/apis/features/agi/openapi.md +2 -2
  292. package/docs/apis/features/agi/skills-library.md +12 -0
  293. package/docs/apis/features/node/python.md +81 -11
  294. package/docs/apis/features/node/transpiler.md +74 -0
  295. package/docs/apis/features/web/esbuild.md +0 -6
  296. package/docs/apis/servers/mcp.md +2 -2
  297. package/docs/examples/entity.md +124 -0
  298. package/package.json +73 -21
  299. package/src/agi/feature.ts +13 -0
  300. package/src/agi/features/assistant.ts +36 -25
  301. package/src/agi/features/assistants-manager.ts +70 -5
  302. package/src/agi/features/autonomous-assistant.ts +1 -5
  303. package/src/agi/features/browser-use.ts +2 -2
  304. package/src/agi/features/claude-code.ts +165 -1
  305. package/src/agi/features/conversation-history.ts +2 -6
  306. package/src/agi/features/conversation.ts +95 -3
  307. package/src/agi/features/docs-reader.ts +2 -1
  308. package/src/agi/features/file-tools.ts +2 -2
  309. package/src/agi/features/luca-coder.ts +1 -5
  310. package/src/agi/features/openai-codex.ts +1 -1
  311. package/src/agi/features/openapi.ts +3 -3
  312. package/src/agi/features/skills-library.ts +87 -6
  313. package/src/agi/lib/interceptor-chain.ts +10 -0
  314. package/src/agi/lib/token-counter.ts +1 -1
  315. package/src/bootstrap/generated.ts +126 -1
  316. package/src/bus.ts +27 -5
  317. package/src/cli/build-info.ts +2 -2
  318. package/src/client.ts +2 -2
  319. package/src/clients/elevenlabs/index.ts +5 -0
  320. package/src/commands/bootstrap.ts +2 -1
  321. package/src/commands/chat.ts +1 -0
  322. package/src/commands/code.ts +4 -2
  323. package/src/commands/prompt.ts +34 -34
  324. package/src/commands/sandbox-mcp.ts +69 -163
  325. package/src/commands/save-api-docs.ts +10 -8
  326. package/src/commands/select.ts +8 -3
  327. package/src/container-describer.ts +70 -84
  328. package/src/container.ts +93 -3
  329. package/src/endpoint.ts +1 -1
  330. package/src/entity.ts +173 -0
  331. package/src/feature.ts +3 -3
  332. package/src/helper.ts +8 -4
  333. package/src/introspection/generated.agi.ts +1246 -798
  334. package/src/introspection/generated.node.ts +892 -798
  335. package/src/introspection/generated.web.ts +95 -3
  336. package/src/introspection/scan.ts +1 -1
  337. package/src/node/container.ts +1 -1
  338. package/src/node/features/content-db.ts +3 -3
  339. package/src/node/features/file-manager.ts +10 -9
  340. package/src/node/features/git.ts +5 -5
  341. package/src/node/features/helpers.ts +1 -1
  342. package/src/node/features/json-tree.ts +1 -1
  343. package/src/node/features/os.ts +3 -3
  344. package/src/node/features/package-finder.ts +1 -1
  345. package/src/node/features/process-manager.ts +1 -1
  346. package/src/node/features/python.ts +3 -3
  347. package/src/node/features/redis.ts +1 -1
  348. package/src/node/features/repl.ts +2 -2
  349. package/src/node/features/transpiler.ts +2 -2
  350. package/src/node/features/ui.ts +1 -1
  351. package/src/node/features/vm.ts +3 -3
  352. package/src/node/features/yaml-tree.ts +1 -1
  353. package/src/node.ts +1 -0
  354. package/src/python/generated.ts +1 -1
  355. package/src/scaffolds/generated.ts +1 -1
  356. package/src/selector.ts +74 -4
  357. package/src/server.ts +2 -2
  358. package/src/servers/mcp.ts +6 -6
  359. package/src/web/features/helpers.ts +1 -1
  360. package/src/web/features/network.ts +1 -0
  361. package/test/conversation.test.ts +220 -0
  362. package/tsconfig.build.json +12 -0
  363. package/tsconfig.json +1 -1
  364. package/scripts/examples/telegram-ink-ui.ts +0 -302
  365. package/scripts/examples/using-openai-codex.ts +0 -23
  366. package/scripts/examples/vm-loading-esm-modules.ts +0 -16
@@ -0,0 +1,407 @@
1
+ # LucaCoder (features.lucaCoder)
2
+
3
+ A coding assistant that owns a lower-level Assistant instance and gates all tool calls through a permission system. Comes with built-in Bash tool (via proc.execAndCapture) and auto-loads the luca-framework skill when found in .claude/skills paths. Tools are stacked from feature bundles (fileTools, 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('lucaCoder', {
9
+ // Tool bundles to register on the inner assistant
10
+ tools,
11
+ // Permission level per tool name
12
+ permissions,
13
+ // Default permission level for unconfigured tools
14
+ defaultPermission,
15
+ // System prompt for the inner assistant
16
+ systemPrompt,
17
+ // OpenAI model override
18
+ model,
19
+ // Maximum number of output tokens per completion
20
+ maxTokens,
21
+ // Use a local API server for the inner assistant
22
+ local,
23
+ // Conversation history persistence mode
24
+ historyMode,
25
+ // Assistant folder for disk-based definitions
26
+ folder,
27
+ // Skill names to auto-load into the system prompt
28
+ skills,
29
+ // Auto-load luca-framework skill if found in .claude/skills path
30
+ autoLoadLucaSkill,
31
+ })
32
+ ```
33
+
34
+ ## Options (Zod v4 schema)
35
+
36
+ | Property | Type | Description |
37
+ |----------|------|-------------|
38
+ | `tools` | `array` | Tool bundles to register on the inner assistant |
39
+ | `permissions` | `object` | Permission level per tool name |
40
+ | `defaultPermission` | `string` | Default permission level for unconfigured tools |
41
+ | `systemPrompt` | `string` | System prompt for the inner assistant |
42
+ | `model` | `string` | OpenAI model override |
43
+ | `maxTokens` | `number` | Maximum number of output tokens per completion |
44
+ | `local` | `boolean` | Use a local API server for the inner assistant |
45
+ | `historyMode` | `string` | Conversation history persistence mode |
46
+ | `folder` | `string` | Assistant folder for disk-based definitions |
47
+ | `skills` | `array` | Skill names to auto-load into the system prompt |
48
+ | `autoLoadLucaSkill` | `boolean` | Auto-load luca-framework skill if found in .claude/skills path |
49
+
50
+ ## Methods
51
+
52
+ ### getPermission
53
+
54
+ Get the effective permission level for a tool.
55
+
56
+ **Parameters:**
57
+
58
+ | Name | Type | Required | Description |
59
+ |------|------|----------|-------------|
60
+ | `toolName` | `string` | ✓ | Parameter toolName |
61
+
62
+ **Returns:** `PermissionLevel`
63
+
64
+
65
+
66
+ ### setPermission
67
+
68
+ Set permission level for one or more tools.
69
+
70
+ **Parameters:**
71
+
72
+ | Name | Type | Required | Description |
73
+ |------|------|----------|-------------|
74
+ | `toolName` | `string | string[]` | ✓ | Parameter toolName |
75
+ | `level` | `PermissionLevel` | ✓ | Parameter level |
76
+
77
+ **Returns:** `this`
78
+
79
+
80
+
81
+ ### setDefaultPermission
82
+
83
+ Set the default permission level for unconfigured tools.
84
+
85
+ **Parameters:**
86
+
87
+ | Name | Type | Required | Description |
88
+ |------|------|----------|-------------|
89
+ | `level` | `PermissionLevel` | ✓ | Parameter level |
90
+
91
+ **Returns:** `this`
92
+
93
+
94
+
95
+ ### permitTool
96
+
97
+ Allow a tool (or tools) to run without approval.
98
+
99
+ **Parameters:**
100
+
101
+ | Name | Type | Required | Description |
102
+ |------|------|----------|-------------|
103
+ | `toolNames` | `string[]` | ✓ | Parameter toolNames |
104
+
105
+ **Returns:** `this`
106
+
107
+
108
+
109
+ ### gateTool
110
+
111
+ Require approval before a tool (or tools) can run.
112
+
113
+ **Parameters:**
114
+
115
+ | Name | Type | Required | Description |
116
+ |------|------|----------|-------------|
117
+ | `toolNames` | `string[]` | ✓ | Parameter toolNames |
118
+
119
+ **Returns:** `this`
120
+
121
+
122
+
123
+ ### blockTool
124
+
125
+ Block a tool (or tools) from ever running.
126
+
127
+ **Parameters:**
128
+
129
+ | Name | Type | Required | Description |
130
+ |------|------|----------|-------------|
131
+ | `toolNames` | `string[]` | ✓ | Parameter toolNames |
132
+
133
+ **Returns:** `this`
134
+
135
+
136
+
137
+ ### approve
138
+
139
+ Approve a pending tool call by ID. The tool will execute.
140
+
141
+ **Parameters:**
142
+
143
+ | Name | Type | Required | Description |
144
+ |------|------|----------|-------------|
145
+ | `id` | `string` | ✓ | Parameter id |
146
+
147
+ **Returns:** `this`
148
+
149
+
150
+
151
+ ### deny
152
+
153
+ Deny a pending tool call by ID. The tool call will be skipped.
154
+
155
+ **Parameters:**
156
+
157
+ | Name | Type | Required | Description |
158
+ |------|------|----------|-------------|
159
+ | `id` | `string` | ✓ | Parameter id |
160
+
161
+ **Returns:** `this`
162
+
163
+
164
+
165
+ ### approveAll
166
+
167
+ Approve all pending tool calls.
168
+
169
+ **Returns:** `this`
170
+
171
+
172
+
173
+ ### denyAll
174
+
175
+ Deny all pending tool calls.
176
+
177
+ **Returns:** `this`
178
+
179
+
180
+
181
+ ### bash
182
+
183
+ Execute a shell command string and return its output. Uses proc.execAndCapture under the hood — runs `sh -c <command>`.
184
+
185
+ **Parameters:**
186
+
187
+ | Name | Type | Required | Description |
188
+ |------|------|----------|-------------|
189
+ | `{ command, cwd, timeout }` | `{ command: string; cwd?: string; timeout?: number }` | ✓ | Parameter { command, cwd, timeout } |
190
+
191
+ **Returns:** `Promise<{
192
+ exitCode: number
193
+ stdout: string
194
+ stderr: string
195
+ success: boolean
196
+ }>`
197
+
198
+
199
+
200
+ ### start
201
+
202
+ Initialize the inner assistant, register the bash tool, stack tool bundles, auto-load skills, and wire up the permission interceptor.
203
+
204
+ **Returns:** `Promise<this>`
205
+
206
+
207
+
208
+ ### ask
209
+
210
+ Ask the coder a question. Auto-starts if needed. Tool calls will be gated by the permission system.
211
+
212
+ **Parameters:**
213
+
214
+ | Name | Type | Required | Description |
215
+ |------|------|----------|-------------|
216
+ | `question` | `string` | ✓ | Parameter question |
217
+ | `options` | `Record<string, any>` | | Parameter options |
218
+
219
+ **Returns:** `Promise<string>`
220
+
221
+
222
+
223
+ ### use
224
+
225
+ Add a tool bundle after initialization. Useful for dynamically extending the assistant's capabilities.
226
+
227
+ **Parameters:**
228
+
229
+ | Name | Type | Required | Description |
230
+ |------|------|----------|-------------|
231
+ | `spec` | `ToolBundleSpec` | ✓ | Parameter spec |
232
+
233
+ **Returns:** `this`
234
+
235
+
236
+
237
+ ## Getters
238
+
239
+ | Property | Type | Description |
240
+ |----------|------|-------------|
241
+ | `assistant` | `Assistant` | The inner assistant. Throws if not started. |
242
+ | `permissions` | `Record<string, PermissionLevel>` | Current permission map from state. |
243
+ | `pendingApprovals` | `PendingApproval[]` | Current pending approvals. |
244
+ | `isStarted` | `boolean` | Whether the assistant is started and ready. |
245
+ | `tools` | `Record<string, any>` | The tools registered on the inner assistant. |
246
+ | `conversation` | `any` | The conversation on the inner assistant (if started). |
247
+ | `messages` | `any` | Messages from the inner assistant's conversation. |
248
+
249
+ ## Events (Zod v4 schema)
250
+
251
+ ### permissionGranted
252
+
253
+ Emitted when a pending tool call is approved
254
+
255
+ **Event Arguments:**
256
+
257
+ | Name | Type | Description |
258
+ |------|------|-------------|
259
+ | `arg0` | `string` | Approval ID |
260
+
261
+
262
+
263
+ ### permissionDenied
264
+
265
+ Emitted when a pending tool call is denied
266
+
267
+ **Event Arguments:**
268
+
269
+ | Name | Type | Description |
270
+ |------|------|-------------|
271
+ | `arg0` | `string` | Approval ID |
272
+
273
+
274
+
275
+ ### toolBlocked
276
+
277
+ Emitted when a tool call is blocked by deny policy
278
+
279
+ **Event Arguments:**
280
+
281
+ | Name | Type | Description |
282
+ |------|------|-------------|
283
+ | `arg0` | `string` | Tool name |
284
+ | `arg1` | `string` | Reason |
285
+
286
+
287
+
288
+ ### chunk
289
+
290
+ Forwarded: streamed token chunk from the inner assistant
291
+
292
+ **Event Arguments:**
293
+
294
+ | Name | Type | Description |
295
+ |------|------|-------------|
296
+ | `arg0` | `string` | A chunk of streamed text |
297
+
298
+
299
+
300
+ ### response
301
+
302
+ Forwarded: complete response from the inner assistant
303
+
304
+ **Event Arguments:**
305
+
306
+ | Name | Type | Description |
307
+ |------|------|-------------|
308
+ | `arg0` | `string` | The final response text |
309
+
310
+
311
+
312
+ ### toolCall
313
+
314
+ Forwarded: a tool was called
315
+
316
+ **Event Arguments:**
317
+
318
+ | Name | Type | Description |
319
+ |------|------|-------------|
320
+ | `arg0` | `string` | Tool name |
321
+ | `arg1` | `any` | Tool arguments |
322
+
323
+
324
+
325
+ ### toolResult
326
+
327
+ Forwarded: a tool returned a result
328
+
329
+ **Event Arguments:**
330
+
331
+ | Name | Type | Description |
332
+ |------|------|-------------|
333
+ | `arg0` | `string` | Tool name |
334
+ | `arg1` | `any` | Result value |
335
+
336
+
337
+
338
+ ### toolError
339
+
340
+ Forwarded: a tool call failed
341
+
342
+ **Event Arguments:**
343
+
344
+ | Name | Type | Description |
345
+ |------|------|-------------|
346
+ | `arg0` | `string` | Tool name |
347
+ | `arg1` | `any` | Error |
348
+
349
+
350
+
351
+ ### started
352
+
353
+ Emitted when the luca coder has been initialized
354
+
355
+
356
+
357
+ ### permissionRequest
358
+
359
+ Emitted when a tool call requires user approval
360
+
361
+ **Event Arguments:**
362
+
363
+ | Name | Type | Description |
364
+ |------|------|-------------|
365
+ | `id` | `string` | Unique approval ID |
366
+ | `toolName` | `string` | The tool requesting permission |
367
+ | `args` | `object` | The arguments the tool was called with |
368
+
369
+
370
+
371
+ ## State (Zod v4 schema)
372
+
373
+ | Property | Type | Description |
374
+ |----------|------|-------------|
375
+ | `enabled` | `boolean` | Whether this feature is currently enabled |
376
+ | `started` | `boolean` | Whether the assistant has been initialized |
377
+ | `permissions` | `object` | Permission level per tool name |
378
+ | `defaultPermission` | `string` | Permission level for tools not explicitly configured |
379
+ | `pendingApprovals` | `array` | Tool calls currently awaiting user approval |
380
+ | `approvalHistory` | `array` | Recent approval decisions |
381
+ | `loadedSkills` | `array` | Names of skills auto-loaded into context |
382
+
383
+ ## Examples
384
+
385
+ **features.lucaCoder**
386
+
387
+ ```ts
388
+ const coder = container.feature('lucaCoder', {
389
+ tools: ['fileTools'],
390
+ permissions: {
391
+ readFile: 'allow',
392
+ searchFiles: 'allow',
393
+ writeFile: 'ask',
394
+ bash: 'ask',
395
+ },
396
+ defaultPermission: 'ask',
397
+ systemPrompt: 'You are a coding assistant.',
398
+ })
399
+
400
+ coder.on('permissionRequest', ({ id, toolName, args }) => {
401
+ console.log(`Tool "${toolName}" wants to run with`, args)
402
+ coder.approve(id) // or coder.deny(id)
403
+ })
404
+
405
+ await coder.ask('Refactor the auth module to use async/await')
406
+ ```
407
+
@@ -32,7 +32,7 @@ Get a single endpoint by its friendly name or operationId.
32
32
 
33
33
 
34
34
 
35
- ### toTools
35
+ ### toOpenAITools
36
36
 
37
37
  Convert all endpoints into OpenAI-compatible tool definitions.
38
38
 
@@ -130,7 +130,7 @@ api.endpoints
130
130
  api.endpoint('getPetById')
131
131
 
132
132
  // Convert to OpenAI tool definitions
133
- api.toTools()
133
+ api.toOpenAITools()
134
134
 
135
135
  // Convert a single endpoint to a function definition
136
136
  api.toFunction('getPetById')
@@ -19,6 +19,18 @@ container.feature('skillsLibrary', {
19
19
 
20
20
  ## Methods
21
21
 
22
+ ### setupToolsConsumer
23
+
24
+ **Parameters:**
25
+
26
+ | Name | Type | Required | Description |
27
+ |------|------|----------|-------------|
28
+ | `assistant` | `Feature` | ✓ | Parameter assistant |
29
+
30
+ **Returns:** `void`
31
+
32
+
33
+
22
34
  ### start
23
35
 
24
36
  Start the skills library: read config, scan all locations.
@@ -296,67 +296,137 @@ await python.resetSession()
296
296
 
297
297
  ### ready
298
298
 
299
- Event emitted by Python
299
+ When the Python environment is ready for execution
300
300
 
301
301
 
302
302
 
303
303
  ### environmentDetected
304
304
 
305
- Event emitted by Python
305
+ When the Python environment type is detected
306
+
307
+ **Event Arguments:**
308
+
309
+ | Name | Type | Description |
310
+ |------|------|-------------|
311
+ | `pythonPath` | `any` | Path to the detected Python executable |
312
+ | `environmentType` | `any` | Detected environment type |
306
313
 
307
314
 
308
315
 
309
316
  ### installingDependencies
310
317
 
311
- Event emitted by Python
318
+ When dependency installation begins
319
+
320
+ **Event Arguments:**
321
+
322
+ | Name | Type | Description |
323
+ |------|------|-------------|
324
+ | `command` | `string` | The install command being run |
312
325
 
313
326
 
314
327
 
315
328
  ### dependenciesInstalled
316
329
 
317
- Event emitted by Python
330
+ When dependencies are successfully installed
331
+
332
+ **Event Arguments:**
333
+
334
+ | Name | Type | Description |
335
+ |------|------|-------------|
336
+ | `stdout` | `string` | Standard output from install |
337
+ | `stderr` | `string` | Standard error from install |
338
+ | `exitCode` | `number` | Process exit code |
318
339
 
319
340
 
320
341
 
321
342
  ### dependencyInstallFailed
322
343
 
323
- Event emitted by Python
344
+ When dependency installation fails
345
+
346
+ **Event Arguments:**
347
+
348
+ | Name | Type | Description |
349
+ |------|------|-------------|
350
+ | `stdout` | `string` | Standard output from install |
351
+ | `stderr` | `string` | Standard error from install |
352
+ | `exitCode` | `number` | Process exit code |
324
353
 
325
354
 
326
355
 
327
356
  ### localsParseError
328
357
 
329
- Event emitted by Python
358
+ When captured locals fail to parse as JSON
359
+
360
+ **Event Arguments:**
361
+
362
+ | Name | Type | Description |
363
+ |------|------|-------------|
364
+ | `arg0` | `any` | The parse error |
330
365
 
331
366
 
332
367
 
333
368
  ### codeExecuted
334
369
 
335
- Event emitted by Python
370
+ When Python code finishes executing
371
+
372
+ **Event Arguments:**
373
+
374
+ | Name | Type | Description |
375
+ |------|------|-------------|
376
+ | `code` | `string` | The Python code that was executed |
377
+ | `variables` | `object` | Variables passed to the execution |
378
+ | `result` | `object` | Execution result |
336
379
 
337
380
 
338
381
 
339
382
  ### fileExecuted
340
383
 
341
- Event emitted by Python
384
+ When a Python file finishes executing
385
+
386
+ **Event Arguments:**
387
+
388
+ | Name | Type | Description |
389
+ |------|------|-------------|
390
+ | `filePath` | `string` | Path to the executed Python file |
391
+ | `variables` | `object` | Variables passed as arguments |
392
+ | `result` | `object` | Execution result |
342
393
 
343
394
 
344
395
 
345
396
  ### sessionError
346
397
 
347
- Event emitted by Python
398
+ When a session-level error occurs
399
+
400
+ **Event Arguments:**
401
+
402
+ | Name | Type | Description |
403
+ |------|------|-------------|
404
+ | `error` | `string` | Error message |
405
+ | `sessionId` | `any` | Session identifier, if available |
348
406
 
349
407
 
350
408
 
351
409
  ### sessionStarted
352
410
 
353
- Event emitted by Python
411
+ When a persistent Python session starts
412
+
413
+ **Event Arguments:**
414
+
415
+ | Name | Type | Description |
416
+ |------|------|-------------|
417
+ | `sessionId` | `string` | Unique session identifier |
354
418
 
355
419
 
356
420
 
357
421
  ### sessionStopped
358
422
 
359
- Event emitted by Python
423
+ When a persistent Python session stops
424
+
425
+ **Event Arguments:**
426
+
427
+ | Name | Type | Description |
428
+ |------|------|-------------|
429
+ | `sessionId` | `string` | Session identifier that stopped |
360
430
 
361
431
 
362
432
 
@@ -0,0 +1,74 @@
1
+ # Transpiler (features.transpiler)
2
+
3
+ Transpile TypeScript, TSX, and JSX to JavaScript at runtime using Bun's built-in transpiler. Compile code strings on the fly without touching the filesystem or spawning external processes.
4
+
5
+ ## Usage
6
+
7
+ ```ts
8
+ container.feature('transpiler')
9
+ ```
10
+
11
+ ## Methods
12
+
13
+ ### transformSync
14
+
15
+ Transform code synchronously
16
+
17
+ **Parameters:**
18
+
19
+ | Name | Type | Required | Description |
20
+ |------|------|----------|-------------|
21
+ | `code` | `string` | ✓ | The code to transform |
22
+ | `options` | `TransformOptions` | | Transform options (loader, format, minify) |
23
+
24
+ `TransformOptions` properties:
25
+
26
+ | Property | Type | Description |
27
+ |----------|------|-------------|
28
+ | `loader` | `'ts' | 'tsx' | 'jsx' | 'js'` | |
29
+ | `format` | `'esm' | 'cjs'` | |
30
+ | `minify` | `boolean` | |
31
+
32
+ **Returns:** `TransformResult`
33
+
34
+
35
+
36
+ ### transform
37
+
38
+ Transform code asynchronously
39
+
40
+ **Parameters:**
41
+
42
+ | Name | Type | Required | Description |
43
+ |------|------|----------|-------------|
44
+ | `code` | `string` | ✓ | The code to transform |
45
+ | `options` | `TransformOptions` | | Transform options (loader, format, minify) |
46
+
47
+ `TransformOptions` properties:
48
+
49
+ | Property | Type | Description |
50
+ |----------|------|-------------|
51
+ | `loader` | `'ts' | 'tsx' | 'jsx' | 'js'` | |
52
+ | `format` | `'esm' | 'cjs'` | |
53
+ | `minify` | `boolean` | |
54
+
55
+ **Returns:** `Promise<TransformResult>`
56
+
57
+
58
+
59
+ ## State (Zod v4 schema)
60
+
61
+ | Property | Type | Description |
62
+ |----------|------|-------------|
63
+ | `enabled` | `boolean` | Whether this feature is currently enabled |
64
+
65
+ ## Examples
66
+
67
+ **features.transpiler**
68
+
69
+ ```ts
70
+ const transpiler = container.feature('transpiler')
71
+ const result = transpiler.transformSync('const x: number = 1')
72
+ console.log(result.code) // 'const x = 1;\n'
73
+ ```
74
+
@@ -41,12 +41,6 @@ container.feature('esbuild')
41
41
  |----------|------|-------------|
42
42
  | `assetLoader` | `any` | Returns the assetLoader feature for loading external libraries from unpkg. |
43
43
 
44
- ## State (Zod v4 schema)
45
-
46
- | Property | Type | Description |
47
- |----------|------|-------------|
48
- | `enabled` | `boolean` | Whether this feature is currently enabled |
49
-
50
44
  ## Examples
51
45
 
52
46
  **features.esbuild**
@@ -52,9 +52,9 @@ Register an MCP tool. The tool's Zod schema is converted to JSON Schema for the
52
52
 
53
53
  | Property | Type | Description |
54
54
  |----------|------|-------------|
55
- | `schema` | `z.ZodObject<any>` | |
55
+ | `schema` | `z.ZodType` | |
56
56
  | `description` | `string` | |
57
- | `handler` | `(args: any, ctx: MCPContext) => any` | |
57
+ | `handler` | `Function | ((args: any, ctx: any) => any)` | |
58
58
 
59
59
  **Returns:** `this`
60
60