luca 2.0.0 → 3.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (532) hide show
  1. package/.github/workflows/release.yaml +170 -0
  2. package/AGENTS.md +99 -0
  3. package/CLAUDE.md +123 -0
  4. package/CNAME +1 -0
  5. package/README.md +275 -9
  6. package/RUNME.md +56 -0
  7. package/assistants/codingAssistant/ABOUT.md +5 -0
  8. package/assistants/codingAssistant/CORE.md +33 -0
  9. package/assistants/codingAssistant/hooks.ts +21 -0
  10. package/assistants/codingAssistant/tools.ts +12 -0
  11. package/assistants/inkbot/ABOUT.md +16 -0
  12. package/assistants/inkbot/CORE.md +330 -0
  13. package/assistants/inkbot/hooks.ts +6 -0
  14. package/assistants/inkbot/tools.ts +53 -0
  15. package/assistants/researcher/ABOUT.md +5 -0
  16. package/assistants/researcher/CORE.md +46 -0
  17. package/assistants/researcher/hooks.ts +16 -0
  18. package/assistants/researcher/tools.ts +237 -0
  19. package/bun.lock +2667 -0
  20. package/bunfig.toml +3 -0
  21. package/commands/audit-docs.ts +740 -0
  22. package/commands/build-bootstrap.ts +117 -0
  23. package/commands/build-python-bridge.ts +42 -0
  24. package/commands/build-scaffolds.ts +175 -0
  25. package/commands/bundle-consumer-project.ts +521 -0
  26. package/commands/generate-api-docs.ts +114 -0
  27. package/commands/inkbot.ts +874 -0
  28. package/commands/release.ts +80 -0
  29. package/commands/try-all-challenges.ts +543 -0
  30. package/commands/try-challenge.ts +100 -0
  31. package/dist/agi/container.server.d.ts +63 -0
  32. package/dist/agi/container.server.d.ts.map +1 -0
  33. package/dist/agi/endpoints/ask.d.ts +20 -0
  34. package/dist/agi/endpoints/ask.d.ts.map +1 -0
  35. package/dist/agi/endpoints/conversations/[id].d.ts +27 -0
  36. package/dist/agi/endpoints/conversations/[id].d.ts.map +1 -0
  37. package/dist/agi/endpoints/conversations.d.ts +18 -0
  38. package/dist/agi/endpoints/conversations.d.ts.map +1 -0
  39. package/dist/agi/endpoints/experts.d.ts +8 -0
  40. package/dist/agi/endpoints/experts.d.ts.map +1 -0
  41. package/dist/agi/feature.d.ts +9 -0
  42. package/dist/agi/feature.d.ts.map +1 -0
  43. package/dist/agi/features/assistant.d.ts +509 -0
  44. package/dist/agi/features/assistant.d.ts.map +1 -0
  45. package/dist/agi/features/assistants-manager.d.ts +236 -0
  46. package/dist/agi/features/assistants-manager.d.ts.map +1 -0
  47. package/dist/agi/features/autonomous-assistant.d.ts +281 -0
  48. package/dist/agi/features/autonomous-assistant.d.ts.map +1 -0
  49. package/dist/agi/features/browser-use.d.ts +479 -0
  50. package/dist/agi/features/browser-use.d.ts.map +1 -0
  51. package/dist/agi/features/claude-code.d.ts +824 -0
  52. package/dist/agi/features/claude-code.d.ts.map +1 -0
  53. package/dist/agi/features/conversation-history.d.ts +245 -0
  54. package/dist/agi/features/conversation-history.d.ts.map +1 -0
  55. package/dist/agi/features/conversation.d.ts +464 -0
  56. package/dist/agi/features/conversation.d.ts.map +1 -0
  57. package/dist/agi/features/docs-reader.d.ts +72 -0
  58. package/dist/agi/features/docs-reader.d.ts.map +1 -0
  59. package/dist/agi/features/file-tools.d.ts +110 -0
  60. package/dist/agi/features/file-tools.d.ts.map +1 -0
  61. package/dist/agi/features/luca-coder.d.ts +323 -0
  62. package/dist/agi/features/luca-coder.d.ts.map +1 -0
  63. package/dist/agi/features/openai-codex.d.ts +381 -0
  64. package/dist/agi/features/openai-codex.d.ts.map +1 -0
  65. package/dist/agi/features/openapi.d.ts +200 -0
  66. package/dist/agi/features/openapi.d.ts.map +1 -0
  67. package/dist/agi/features/skills-library.d.ts +167 -0
  68. package/dist/agi/features/skills-library.d.ts.map +1 -0
  69. package/dist/agi/index.d.ts +5 -0
  70. package/dist/agi/index.d.ts.map +1 -0
  71. package/dist/agi/lib/interceptor-chain.d.ts +44 -0
  72. package/dist/agi/lib/interceptor-chain.d.ts.map +1 -0
  73. package/dist/agi/lib/token-counter.d.ts +13 -0
  74. package/dist/agi/lib/token-counter.d.ts.map +1 -0
  75. package/dist/bootstrap/generated.d.ts +5 -0
  76. package/dist/bootstrap/generated.d.ts.map +1 -0
  77. package/dist/browser.d.ts +12 -0
  78. package/dist/browser.d.ts.map +1 -0
  79. package/dist/bus.d.ts +29 -0
  80. package/dist/bus.d.ts.map +1 -0
  81. package/dist/cli/build-info.d.ts +4 -0
  82. package/dist/cli/build-info.d.ts.map +1 -0
  83. package/dist/cli/cli.d.ts +3 -12
  84. package/dist/cli/cli.d.ts.map +1 -0
  85. package/dist/client.d.ts +60 -0
  86. package/dist/client.d.ts.map +1 -0
  87. package/dist/clients/civitai/index.d.ts +472 -0
  88. package/dist/clients/civitai/index.d.ts.map +1 -0
  89. package/dist/clients/client-template.d.ts +30 -0
  90. package/dist/clients/client-template.d.ts.map +1 -0
  91. package/dist/clients/comfyui/index.d.ts +281 -0
  92. package/dist/clients/comfyui/index.d.ts.map +1 -0
  93. package/dist/clients/elevenlabs/index.d.ts +197 -0
  94. package/dist/clients/elevenlabs/index.d.ts.map +1 -0
  95. package/dist/clients/graph.d.ts +64 -0
  96. package/dist/clients/graph.d.ts.map +1 -0
  97. package/dist/clients/openai/index.d.ts +247 -0
  98. package/dist/clients/openai/index.d.ts.map +1 -0
  99. package/dist/clients/rest.d.ts +92 -0
  100. package/dist/clients/rest.d.ts.map +1 -0
  101. package/dist/clients/supabase/index.d.ts +176 -0
  102. package/dist/clients/supabase/index.d.ts.map +1 -0
  103. package/dist/clients/websocket.d.ts +127 -0
  104. package/dist/clients/websocket.d.ts.map +1 -0
  105. package/dist/command.d.ts +163 -0
  106. package/dist/command.d.ts.map +1 -0
  107. package/dist/commands/bootstrap.d.ts +20 -0
  108. package/dist/commands/bootstrap.d.ts.map +1 -0
  109. package/dist/commands/chat.d.ts +37 -0
  110. package/dist/commands/chat.d.ts.map +1 -0
  111. package/dist/commands/code.d.ts +28 -0
  112. package/dist/commands/code.d.ts.map +1 -0
  113. package/dist/commands/console.d.ts +22 -0
  114. package/dist/commands/console.d.ts.map +1 -0
  115. package/dist/commands/describe.d.ts +50 -0
  116. package/dist/commands/describe.d.ts.map +1 -0
  117. package/dist/commands/eval.d.ts +23 -0
  118. package/dist/commands/eval.d.ts.map +1 -0
  119. package/dist/commands/help.d.ts +25 -0
  120. package/dist/commands/help.d.ts.map +1 -0
  121. package/dist/commands/index.d.ts +18 -0
  122. package/dist/commands/index.d.ts.map +1 -0
  123. package/dist/commands/introspect.d.ts +24 -0
  124. package/dist/commands/introspect.d.ts.map +1 -0
  125. package/dist/commands/mcp.d.ts +35 -0
  126. package/dist/commands/mcp.d.ts.map +1 -0
  127. package/dist/commands/prompt.d.ts +38 -0
  128. package/dist/commands/prompt.d.ts.map +1 -0
  129. package/dist/commands/run.d.ts +24 -0
  130. package/dist/commands/run.d.ts.map +1 -0
  131. package/dist/commands/sandbox-mcp.d.ts +34 -0
  132. package/dist/commands/sandbox-mcp.d.ts.map +1 -0
  133. package/dist/commands/save-api-docs.d.ts +21 -0
  134. package/dist/commands/save-api-docs.d.ts.map +1 -0
  135. package/dist/commands/scaffold.d.ts +24 -0
  136. package/dist/commands/scaffold.d.ts.map +1 -0
  137. package/dist/commands/select.d.ts +22 -0
  138. package/dist/commands/select.d.ts.map +1 -0
  139. package/dist/commands/serve.d.ts +29 -0
  140. package/dist/commands/serve.d.ts.map +1 -0
  141. package/dist/container-describer.d.ts +144 -0
  142. package/dist/container-describer.d.ts.map +1 -0
  143. package/dist/container.d.ts +451 -0
  144. package/dist/container.d.ts.map +1 -0
  145. package/dist/endpoint.d.ts +113 -0
  146. package/dist/endpoint.d.ts.map +1 -0
  147. package/dist/feature.d.ts +47 -0
  148. package/dist/feature.d.ts.map +1 -0
  149. package/dist/graft.d.ts +29 -0
  150. package/dist/graft.d.ts.map +1 -0
  151. package/dist/hash-object.d.ts +8 -0
  152. package/dist/hash-object.d.ts.map +1 -0
  153. package/dist/helper.d.ts +209 -0
  154. package/dist/helper.d.ts.map +1 -0
  155. package/dist/introspection/generated.node.d.ts +44623 -0
  156. package/dist/introspection/generated.node.d.ts.map +1 -0
  157. package/dist/introspection/generated.web.d.ts +1412 -0
  158. package/dist/introspection/generated.web.d.ts.map +1 -0
  159. package/dist/introspection/index.d.ts +156 -0
  160. package/dist/introspection/index.d.ts.map +1 -0
  161. package/dist/introspection/scan.d.ts +147 -0
  162. package/dist/introspection/scan.d.ts.map +1 -0
  163. package/dist/node/container.d.ts +256 -0
  164. package/dist/node/container.d.ts.map +1 -0
  165. package/dist/node/feature.d.ts +9 -0
  166. package/dist/node/feature.d.ts.map +1 -0
  167. package/dist/node/features/container-link.d.ts +213 -0
  168. package/dist/node/features/container-link.d.ts.map +1 -0
  169. package/dist/node/features/content-db.d.ts +354 -0
  170. package/dist/node/features/content-db.d.ts.map +1 -0
  171. package/dist/node/features/disk-cache.d.ts +236 -0
  172. package/dist/node/features/disk-cache.d.ts.map +1 -0
  173. package/dist/node/features/dns.d.ts +511 -0
  174. package/dist/node/features/dns.d.ts.map +1 -0
  175. package/dist/node/features/docker.d.ts +485 -0
  176. package/dist/node/features/docker.d.ts.map +1 -0
  177. package/dist/node/features/downloader.d.ts +73 -0
  178. package/dist/node/features/downloader.d.ts.map +1 -0
  179. package/dist/node/features/figlet-fonts.d.ts +4 -0
  180. package/dist/node/features/figlet-fonts.d.ts.map +1 -0
  181. package/dist/node/features/file-manager.d.ts +177 -0
  182. package/dist/node/features/file-manager.d.ts.map +1 -0
  183. package/dist/node/features/fs.d.ts +635 -0
  184. package/dist/node/features/fs.d.ts.map +1 -0
  185. package/dist/node/features/git.d.ts +329 -0
  186. package/dist/node/features/git.d.ts.map +1 -0
  187. package/dist/node/features/google-auth.d.ts +200 -0
  188. package/dist/node/features/google-auth.d.ts.map +1 -0
  189. package/dist/node/features/google-calendar.d.ts +194 -0
  190. package/dist/node/features/google-calendar.d.ts.map +1 -0
  191. package/dist/node/features/google-docs.d.ts +138 -0
  192. package/dist/node/features/google-docs.d.ts.map +1 -0
  193. package/dist/node/features/google-drive.d.ts +202 -0
  194. package/dist/node/features/google-drive.d.ts.map +1 -0
  195. package/dist/node/features/google-mail.d.ts +221 -0
  196. package/dist/node/features/google-mail.d.ts.map +1 -0
  197. package/dist/node/features/google-sheets.d.ts +157 -0
  198. package/dist/node/features/google-sheets.d.ts.map +1 -0
  199. package/dist/node/features/grep.d.ts +207 -0
  200. package/dist/node/features/grep.d.ts.map +1 -0
  201. package/dist/node/features/helpers.d.ts +236 -0
  202. package/dist/node/features/helpers.d.ts.map +1 -0
  203. package/dist/node/features/ink.d.ts +332 -0
  204. package/dist/node/features/ink.d.ts.map +1 -0
  205. package/dist/node/features/ipc-socket.d.ts +298 -0
  206. package/dist/node/features/ipc-socket.d.ts.map +1 -0
  207. package/dist/node/features/json-tree.d.ts +140 -0
  208. package/dist/node/features/json-tree.d.ts.map +1 -0
  209. package/dist/node/features/networking.d.ts +373 -0
  210. package/dist/node/features/networking.d.ts.map +1 -0
  211. package/dist/node/features/nlp.d.ts +125 -0
  212. package/dist/node/features/nlp.d.ts.map +1 -0
  213. package/dist/node/features/opener.d.ts +93 -0
  214. package/dist/node/features/opener.d.ts.map +1 -0
  215. package/dist/node/features/os.d.ts +168 -0
  216. package/dist/node/features/os.d.ts.map +1 -0
  217. package/dist/node/features/package-finder.d.ts +419 -0
  218. package/dist/node/features/package-finder.d.ts.map +1 -0
  219. package/dist/node/features/postgres.d.ts +173 -0
  220. package/dist/node/features/postgres.d.ts.map +1 -0
  221. package/dist/node/features/proc.d.ts +285 -0
  222. package/dist/node/features/proc.d.ts.map +1 -0
  223. package/dist/node/features/process-manager.d.ts +427 -0
  224. package/dist/node/features/process-manager.d.ts.map +1 -0
  225. package/dist/node/features/python.d.ts +477 -0
  226. package/dist/node/features/python.d.ts.map +1 -0
  227. package/dist/node/features/redis.d.ts +247 -0
  228. package/dist/node/features/redis.d.ts.map +1 -0
  229. package/dist/node/features/repl.d.ts +84 -0
  230. package/dist/node/features/repl.d.ts.map +1 -0
  231. package/dist/node/features/runpod.d.ts +527 -0
  232. package/dist/node/features/runpod.d.ts.map +1 -0
  233. package/dist/node/features/secure-shell.d.ts +145 -0
  234. package/dist/node/features/secure-shell.d.ts.map +1 -0
  235. package/dist/node/features/semantic-search.d.ts +207 -0
  236. package/dist/node/features/semantic-search.d.ts.map +1 -0
  237. package/dist/node/features/sqlite.d.ts +180 -0
  238. package/dist/node/features/sqlite.d.ts.map +1 -0
  239. package/dist/node/features/telegram.d.ts +173 -0
  240. package/dist/node/features/telegram.d.ts.map +1 -0
  241. package/dist/node/features/transpiler.d.ts +51 -0
  242. package/dist/node/features/transpiler.d.ts.map +1 -0
  243. package/dist/node/features/tts.d.ts +108 -0
  244. package/dist/node/features/tts.d.ts.map +1 -0
  245. package/dist/node/features/ui.d.ts +562 -0
  246. package/dist/node/features/ui.d.ts.map +1 -0
  247. package/dist/node/features/vault.d.ts +90 -0
  248. package/dist/node/features/vault.d.ts.map +1 -0
  249. package/dist/node/features/vm.d.ts +285 -0
  250. package/dist/node/features/vm.d.ts.map +1 -0
  251. package/dist/node/features/yaml-tree.d.ts +118 -0
  252. package/dist/node/features/yaml-tree.d.ts.map +1 -0
  253. package/dist/node/features/yaml.d.ts +127 -0
  254. package/dist/node/features/yaml.d.ts.map +1 -0
  255. package/dist/node.d.ts +67 -0
  256. package/dist/node.d.ts.map +1 -0
  257. package/dist/python/generated.d.ts +2 -0
  258. package/dist/python/generated.d.ts.map +1 -0
  259. package/dist/react/index.d.ts +36 -0
  260. package/dist/react/index.d.ts.map +1 -0
  261. package/dist/registry.d.ts +97 -0
  262. package/dist/registry.d.ts.map +1 -0
  263. package/dist/scaffolds/generated.d.ts +13 -0
  264. package/dist/scaffolds/generated.d.ts.map +1 -0
  265. package/dist/scaffolds/template.d.ts +11 -0
  266. package/dist/scaffolds/template.d.ts.map +1 -0
  267. package/dist/schemas/base.d.ts +254 -0
  268. package/dist/schemas/base.d.ts.map +1 -0
  269. package/dist/selector.d.ts +130 -0
  270. package/dist/selector.d.ts.map +1 -0
  271. package/dist/server.d.ts +89 -0
  272. package/dist/server.d.ts.map +1 -0
  273. package/dist/servers/express.d.ts +104 -0
  274. package/dist/servers/express.d.ts.map +1 -0
  275. package/dist/servers/mcp.d.ts +201 -0
  276. package/dist/servers/mcp.d.ts.map +1 -0
  277. package/dist/servers/socket.d.ts +121 -0
  278. package/dist/servers/socket.d.ts.map +1 -0
  279. package/dist/state.d.ts +24 -0
  280. package/dist/state.d.ts.map +1 -0
  281. package/dist/web/clients/socket.d.ts +37 -0
  282. package/dist/web/clients/socket.d.ts.map +1 -0
  283. package/dist/web/container.d.ts +55 -0
  284. package/dist/web/container.d.ts.map +1 -0
  285. package/dist/web/extension.d.ts +4 -0
  286. package/dist/web/extension.d.ts.map +1 -0
  287. package/dist/web/feature.d.ts +8 -0
  288. package/dist/web/feature.d.ts.map +1 -0
  289. package/dist/web/features/asset-loader.d.ts +35 -0
  290. package/dist/web/features/asset-loader.d.ts.map +1 -0
  291. package/dist/web/features/container-link.d.ts +167 -0
  292. package/dist/web/features/container-link.d.ts.map +1 -0
  293. package/dist/web/features/esbuild.d.ts +51 -0
  294. package/dist/web/features/esbuild.d.ts.map +1 -0
  295. package/dist/web/features/helpers.d.ts +140 -0
  296. package/dist/web/features/helpers.d.ts.map +1 -0
  297. package/dist/web/features/network.d.ts +69 -0
  298. package/dist/web/features/network.d.ts.map +1 -0
  299. package/dist/web/features/speech.d.ts +71 -0
  300. package/dist/web/features/speech.d.ts.map +1 -0
  301. package/dist/web/features/vault.d.ts +62 -0
  302. package/dist/web/features/vault.d.ts.map +1 -0
  303. package/dist/web/features/vm.d.ts +48 -0
  304. package/dist/web/features/vm.d.ts.map +1 -0
  305. package/dist/web/features/voice-recognition.d.ts +96 -0
  306. package/dist/web/features/voice-recognition.d.ts.map +1 -0
  307. package/dist/web/shims/isomorphic-vm.d.ts +22 -0
  308. package/dist/web/shims/isomorphic-vm.d.ts.map +1 -0
  309. package/index.html +1457 -0
  310. package/index.ts +1 -0
  311. package/install.sh +84 -0
  312. package/luca.cli.ts +16 -0
  313. package/luca.console.ts +9 -0
  314. package/main.py +6 -0
  315. package/package.json +219 -58
  316. package/public/index.html +1457 -0
  317. package/public/slides-ai-native.html +902 -0
  318. package/public/slides-intro.html +974 -0
  319. package/pyproject.toml +7 -0
  320. package/scripts/build-web.ts +28 -0
  321. package/scripts/examples/ask-luca-expert.ts +42 -0
  322. package/scripts/examples/assistant-questions.ts +12 -0
  323. package/scripts/examples/excalidraw-expert.ts +75 -0
  324. package/scripts/examples/expert-chat.ts +0 -0
  325. package/scripts/examples/file-manager.ts +14 -0
  326. package/scripts/examples/ideas.ts +12 -0
  327. package/scripts/examples/interactive-chat.ts +20 -0
  328. package/scripts/examples/openai-tool-calls.ts +113 -0
  329. package/scripts/examples/opening-a-web-browser.ts +5 -0
  330. package/scripts/examples/telegram-bot.ts +79 -0
  331. package/scripts/examples/using-assistant-with-mcp.ts +555 -0
  332. package/scripts/examples/using-claude-code.ts +10 -0
  333. package/scripts/examples/using-contentdb.ts +35 -0
  334. package/scripts/examples/using-conversations.ts +35 -0
  335. package/scripts/examples/using-disk-cache.ts +10 -0
  336. package/scripts/examples/using-docker-shell.ts +75 -0
  337. package/scripts/examples/using-elevenlabs.ts +25 -0
  338. package/scripts/examples/using-google-calendar.ts +57 -0
  339. package/scripts/examples/using-google-docs.ts +74 -0
  340. package/scripts/examples/using-google-drive.ts +74 -0
  341. package/scripts/examples/using-google-sheets.ts +89 -0
  342. package/scripts/examples/using-nlp.ts +55 -0
  343. package/scripts/examples/using-ollama.ts +11 -0
  344. package/scripts/examples/using-postgres.ts +55 -0
  345. package/scripts/examples/using-runpod.ts +32 -0
  346. package/scripts/examples/using-tts.ts +40 -0
  347. package/scripts/scaffold.ts +391 -0
  348. package/scripts/scratch.ts +15 -0
  349. package/scripts/stamp-build.sh +12 -0
  350. package/scripts/test-assistant-hooks.ts +13 -0
  351. package/scripts/test-docs-reader.ts +10 -0
  352. package/scripts/test-linux-binary.sh +80 -0
  353. package/scripts/update-introspection-data.ts +58 -0
  354. package/src/agi/README.md +14 -0
  355. package/src/agi/container.server.ts +156 -0
  356. package/src/agi/feature.ts +13 -0
  357. package/src/agi/features/agent-memory.ts +694 -0
  358. package/src/agi/features/assistant.ts +1653 -0
  359. package/src/agi/features/assistants-manager.ts +534 -0
  360. package/src/agi/features/autonomous-assistant.ts +431 -0
  361. package/src/agi/features/browser-use.ts +672 -0
  362. package/src/agi/features/claude-code.ts +1584 -0
  363. package/src/agi/features/coding-tools.ts +175 -0
  364. package/src/agi/features/conversation-history.ts +672 -0
  365. package/src/agi/features/conversation.ts +1494 -0
  366. package/src/agi/features/docs-reader.ts +167 -0
  367. package/src/agi/features/file-tools.ts +340 -0
  368. package/src/agi/features/luca-coder.ts +641 -0
  369. package/src/agi/features/mcp-bridge.ts +532 -0
  370. package/src/agi/features/openai-codex.ts +651 -0
  371. package/src/agi/features/openapi.ts +445 -0
  372. package/src/agi/features/skills-library.ts +557 -0
  373. package/src/agi/index.ts +6 -0
  374. package/src/agi/lib/interceptor-chain.ts +89 -0
  375. package/src/agi/lib/token-counter.ts +202 -0
  376. package/src/bootstrap/generated.ts +9791 -0
  377. package/src/browser.ts +25 -0
  378. package/src/bus.ts +122 -0
  379. package/src/cli/build-info.ts +4 -0
  380. package/src/cli/cli.ts +355 -0
  381. package/src/client.ts +170 -0
  382. package/src/clients/civitai/index.ts +537 -0
  383. package/src/clients/client-template.ts +41 -0
  384. package/src/clients/comfyui/index.ts +604 -0
  385. package/src/clients/elevenlabs/index.ts +317 -0
  386. package/src/clients/graph.ts +87 -0
  387. package/src/clients/openai/index.ts +456 -0
  388. package/src/clients/rest.ts +207 -0
  389. package/src/clients/supabase/index.ts +357 -0
  390. package/src/clients/voicebox/index.ts +300 -0
  391. package/src/clients/websocket.ts +251 -0
  392. package/src/command.ts +506 -0
  393. package/src/commands/bootstrap.ts +244 -0
  394. package/src/commands/chat.ts +309 -0
  395. package/src/commands/code.ts +371 -0
  396. package/src/commands/console.ts +189 -0
  397. package/src/commands/describe.ts +243 -0
  398. package/src/commands/eval.ts +67 -0
  399. package/src/commands/help.ts +240 -0
  400. package/src/commands/index.ts +19 -0
  401. package/src/commands/introspect.ts +218 -0
  402. package/src/commands/mcp.ts +64 -0
  403. package/src/commands/prompt.ts +1014 -0
  404. package/src/commands/run.ts +278 -0
  405. package/src/commands/sandbox-mcp.ts +343 -0
  406. package/src/commands/save-api-docs.ts +51 -0
  407. package/src/commands/scaffold.ts +225 -0
  408. package/src/commands/select.ts +99 -0
  409. package/src/commands/serve.ts +208 -0
  410. package/src/container-describer.ts +1091 -0
  411. package/src/container.ts +1199 -0
  412. package/src/endpoint.ts +365 -0
  413. package/src/entity.ts +173 -0
  414. package/src/feature.ts +118 -0
  415. package/src/graft.ts +181 -0
  416. package/src/hash-object.ts +97 -0
  417. package/src/helper.ts +849 -0
  418. package/src/introspection/generated.agi.ts +41200 -0
  419. package/src/introspection/generated.node.ts +28773 -0
  420. package/src/introspection/generated.web.ts +2272 -0
  421. package/src/introspection/index.ts +296 -0
  422. package/src/introspection/scan.ts +1136 -0
  423. package/src/node/container.ts +409 -0
  424. package/src/node/feature.ts +13 -0
  425. package/src/node/features/container-link.ts +559 -0
  426. package/src/node/features/content-db.ts +849 -0
  427. package/src/node/features/disk-cache.ts +388 -0
  428. package/src/node/features/display-result.ts +57 -0
  429. package/src/node/features/dns.ts +669 -0
  430. package/src/node/features/docker.ts +921 -0
  431. package/src/node/features/downloader.ts +79 -0
  432. package/src/node/features/figlet-fonts.ts +600 -0
  433. package/src/node/features/file-manager.ts +535 -0
  434. package/src/node/features/fs.ts +1050 -0
  435. package/src/node/features/git.ts +592 -0
  436. package/src/node/features/google-auth.ts +504 -0
  437. package/src/node/features/google-calendar.ts +306 -0
  438. package/src/node/features/google-docs.ts +412 -0
  439. package/src/node/features/google-drive.ts +346 -0
  440. package/src/node/features/google-mail.ts +540 -0
  441. package/src/node/features/google-sheets.ts +286 -0
  442. package/src/node/features/grep.ts +427 -0
  443. package/src/node/features/helpers.ts +762 -0
  444. package/src/node/features/ink.ts +490 -0
  445. package/src/node/features/ipc-socket.ts +649 -0
  446. package/src/node/features/json-tree.ts +170 -0
  447. package/src/node/features/networking.ts +961 -0
  448. package/src/node/features/nlp.ts +212 -0
  449. package/src/node/features/opener.ts +180 -0
  450. package/src/node/features/os.ts +403 -0
  451. package/src/node/features/package-finder.ts +540 -0
  452. package/src/node/features/postgres.ts +289 -0
  453. package/src/node/features/proc.ts +503 -0
  454. package/src/node/features/process-manager.ts +844 -0
  455. package/src/node/features/python.ts +912 -0
  456. package/src/node/features/redis.ts +446 -0
  457. package/src/node/features/repl.ts +212 -0
  458. package/src/node/features/runpod.ts +811 -0
  459. package/src/node/features/secure-shell.ts +261 -0
  460. package/src/node/features/semantic-search.ts +935 -0
  461. package/src/node/features/sqlite.ts +289 -0
  462. package/src/node/features/telegram.ts +343 -0
  463. package/src/node/features/transpiler.ts +160 -0
  464. package/src/node/features/tts.ts +185 -0
  465. package/src/node/features/ui.ts +791 -0
  466. package/src/node/features/vault.ts +153 -0
  467. package/src/node/features/vm.ts +462 -0
  468. package/src/node/features/yaml-tree.ts +148 -0
  469. package/src/node/features/yaml.ts +133 -0
  470. package/src/node.ts +76 -0
  471. package/src/python/bridge.py +220 -0
  472. package/src/python/generated.ts +226 -0
  473. package/src/react/index.ts +175 -0
  474. package/src/registry.ts +210 -0
  475. package/src/scaffolds/generated.ts +1814 -0
  476. package/src/scaffolds/template.ts +46 -0
  477. package/src/schemas/base.ts +296 -0
  478. package/src/selector.ts +352 -0
  479. package/src/server.ts +229 -0
  480. package/src/servers/express.ts +283 -0
  481. package/src/servers/mcp.ts +802 -0
  482. package/src/servers/socket.ts +258 -0
  483. package/src/state.ts +101 -0
  484. package/src/web/clients/socket.ts +99 -0
  485. package/src/web/container.ts +75 -0
  486. package/src/web/extension.ts +30 -0
  487. package/src/web/feature.ts +12 -0
  488. package/src/web/features/asset-loader.ts +72 -0
  489. package/src/web/features/container-link.ts +382 -0
  490. package/src/web/features/esbuild.ts +93 -0
  491. package/src/web/features/helpers.ts +291 -0
  492. package/src/web/features/network.ts +85 -0
  493. package/src/web/features/speech.ts +104 -0
  494. package/src/web/features/vault.ts +207 -0
  495. package/src/web/features/vm.ts +85 -0
  496. package/src/web/features/voice-recognition.ts +161 -0
  497. package/src/web/shims/isomorphic-vm.ts +149 -0
  498. package/tsconfig.build.json +12 -0
  499. package/tsconfig.json +58 -0
  500. package/uv.lock +8 -0
  501. package/LICENSE +0 -21
  502. package/dist/cli/cli.js +0 -48
  503. package/dist/cli/common.d.ts +0 -2
  504. package/dist/cli/common.js +0 -6
  505. package/dist/cli/index.d.ts +0 -2
  506. package/dist/cli/index.js +0 -5
  507. package/dist/cli/run.d.ts +0 -1
  508. package/dist/cli/run.js +0 -38
  509. package/dist/core/index.d.ts +0 -4
  510. package/dist/core/index.js +0 -32
  511. package/dist/core/read.d.ts +0 -2
  512. package/dist/core/read.js +0 -29
  513. package/dist/core/request.d.ts +0 -1
  514. package/dist/core/request.js +0 -2
  515. package/dist/core/write.d.ts +0 -2
  516. package/dist/core/write.js +0 -21
  517. package/dist/index.d.ts +0 -1
  518. package/dist/index.js +0 -5
  519. package/dist/utils/common.d.ts +0 -9
  520. package/dist/utils/common.js +0 -57
  521. package/dist/utils/consts.d.ts +0 -3
  522. package/dist/utils/consts.js +0 -11
  523. package/dist/utils/dict.d.ts +0 -1
  524. package/dist/utils/dict.js +0 -7
  525. package/dist/utils/index.d.ts +0 -5
  526. package/dist/utils/index.js +0 -21
  527. package/dist/utils/log.d.ts +0 -1
  528. package/dist/utils/log.js +0 -5
  529. package/dist/utils/types.d.ts +0 -1
  530. package/dist/utils/types.js +0 -2
  531. package/dist/utils/utils.test.d.ts +0 -1
  532. package/dist/utils/utils.test.js +0 -7
@@ -0,0 +1,317 @@
1
+ import { z } from 'zod'
2
+ import { ClientStateSchema, ClientOptionsSchema, ClientEventsSchema } from 'luca/schemas/base.js'
3
+ import { Client } from "luca/client";
4
+ import { RestClient } from "../rest";
5
+ import type { ContainerContext } from "luca/container";
6
+ import type { NodeContainer } from "../../node/container.js";
7
+ import type { AxiosRequestConfig } from 'axios'
8
+
9
+ declare module "luca/client" {
10
+ interface AvailableClients {
11
+ elevenlabs: typeof ElevenLabsClient;
12
+ }
13
+ }
14
+
15
+ export const ElevenLabsClientOptionsSchema = ClientOptionsSchema.extend({
16
+ apiKey: z.string().optional().describe('ElevenLabs API key (falls back to ELEVENLABS_API_KEY env var)'),
17
+ defaultVoiceId: z.string().optional().describe('Default voice ID for speech synthesis'),
18
+ defaultModelId: z.string().optional().default('eleven_multilingual_v2').describe('Default TTS model ID'),
19
+ outputFormat: z.string().optional().default('mp3_44100_128').describe('Audio output format (e.g. mp3_44100_128, pcm_16000)'),
20
+ })
21
+ export type ElevenLabsClientOptions = z.infer<typeof ElevenLabsClientOptionsSchema>
22
+
23
+ export const ElevenLabsClientStateSchema = ClientStateSchema.extend({
24
+ requestCount: z.number().default(0).describe('Total number of API requests made'),
25
+ characterCount: z.number().default(0).describe('Total characters sent for synthesis (tracks billing usage)'),
26
+ lastRequestTime: z.number().nullable().default(null).describe('Timestamp of the last API request'),
27
+ })
28
+ export type ElevenLabsClientState = z.infer<typeof ElevenLabsClientStateSchema>
29
+
30
+ export const ElevenLabsClientEventsSchema = ClientEventsSchema.extend({
31
+ speech: z.tuple([z.object({
32
+ voiceId: z.string(),
33
+ text: z.string(),
34
+ audioSize: z.number(),
35
+ })]).describe('Emitted after speech synthesis completes'),
36
+ voices: z.tuple([z.array(z.any())]).describe('Emitted after listing voices'),
37
+ })
38
+
39
+ export type ElevenLabsVoiceSettings = {
40
+ stability?: number
41
+ similarityBoost?: number
42
+ style?: number
43
+ speed?: number
44
+ useSpeakerBoost?: boolean
45
+ }
46
+
47
+ export type SynthesizeOptions = {
48
+ voiceId?: string
49
+ modelId?: string
50
+ outputFormat?: string
51
+ voiceSettings?: ElevenLabsVoiceSettings
52
+ disableCache?: boolean
53
+ }
54
+
55
+ /**
56
+ * ElevenLabs client — text-to-speech synthesis via the ElevenLabs REST API.
57
+ *
58
+ * Provides methods for listing voices, listing models, and generating speech audio.
59
+ * Audio is returned as a Buffer; use `say()` for a convenience method that writes to disk.
60
+ *
61
+ * @example
62
+ * ```typescript
63
+ * const el = container.client('elevenlabs')
64
+ * await el.connect()
65
+ * const voices = await el.listVoices()
66
+ * const audio = await el.synthesize('Hello world')
67
+ * // audio is a Buffer of mp3 data
68
+ * ```
69
+ */
70
+ export class ElevenLabsClient extends RestClient<ElevenLabsClientState, ElevenLabsClientOptions> {
71
+ static override shortcut = "clients.elevenlabs" as const
72
+ static override envVars = ['ELEVENLABS_API_KEY']
73
+ static override stateSchema = ElevenLabsClientStateSchema
74
+ static override optionsSchema = ElevenLabsClientOptionsSchema
75
+ static override eventsSchema = ElevenLabsClientEventsSchema
76
+
77
+ static { Client.register(this, 'elevenlabs') }
78
+
79
+ override get initialState(): ElevenLabsClientState {
80
+ return {
81
+ ...super.initialState,
82
+ requestCount: 0,
83
+ characterCount: 0,
84
+ lastRequestTime: null,
85
+ }
86
+ }
87
+
88
+ constructor(options: ElevenLabsClientOptions, context: ContainerContext) {
89
+ options = {
90
+ ...options,
91
+ baseURL: 'https://api.elevenlabs.io',
92
+ }
93
+ super(options, context)
94
+ }
95
+
96
+ override get container(): NodeContainer {
97
+ return super.container as unknown as NodeContainer
98
+ }
99
+
100
+ /** The resolved API key from options or environment. */
101
+ get apiKey(): string {
102
+ return this.options.apiKey || process.env.ELEVENLABS_API_KEY || ''
103
+ }
104
+
105
+ /**
106
+ * Inject the xi-api-key header before each request.
107
+ */
108
+ override async beforeRequest() {
109
+ this.axios.defaults.headers.common['xi-api-key'] = this.apiKey
110
+ }
111
+
112
+ private trackRequest(characters = 0) {
113
+ const requestCount = this.state.get('requestCount') || 0
114
+ const characterCount = this.state.get('characterCount') || 0
115
+ this.setState({
116
+ requestCount: requestCount + 1,
117
+ characterCount: characterCount + characters,
118
+ lastRequestTime: Date.now(),
119
+ })
120
+ }
121
+
122
+ /**
123
+ * Validate the API key by listing available models.
124
+ *
125
+ * @returns This client instance
126
+ * @throws If the API key is invalid or the connection fails
127
+ *
128
+ * @example
129
+ * ```typescript
130
+ * await el.connect()
131
+ * ```
132
+ */
133
+ override async connect(): Promise<this> {
134
+ try {
135
+ await this.get('/v1/models')
136
+ await super.connect()
137
+ this.emit('connected' as any)
138
+ return this
139
+ } catch (error) {
140
+ this.emit('failure', error)
141
+ throw error
142
+ }
143
+ }
144
+
145
+ /**
146
+ * List available voices with optional search and filtering.
147
+ *
148
+ * @param options - Query parameters for filtering voices
149
+ * @returns Array of voice objects
150
+ *
151
+ * @example
152
+ * ```typescript
153
+ * const voices = await el.listVoices()
154
+ * const premade = await el.listVoices({ category: 'premade' })
155
+ * ```
156
+ */
157
+ async listVoices(options: {
158
+ search?: string
159
+ category?: string
160
+ voice_type?: string
161
+ page_size?: number
162
+ next_page_token?: string
163
+ } = {}): Promise<any> {
164
+ this.trackRequest()
165
+ const result = await this.get('/v2/voices', options)
166
+ if (result?.voices) {
167
+ this.emit('voices', result.voices)
168
+ }
169
+ return result
170
+ }
171
+
172
+ /**
173
+ * Get details for a single voice.
174
+ *
175
+ * @param voiceId - The voice ID to look up
176
+ * @returns Voice object with settings, labels, and metadata
177
+ *
178
+ * @example
179
+ * ```typescript
180
+ * const voice = await el.getVoice('21m00Tcm4TlvDq8ikWAM')
181
+ * console.log(voice.name, voice.settings)
182
+ * ```
183
+ */
184
+ async getVoice(voiceId: string): Promise<any> {
185
+ this.trackRequest()
186
+ return this.get(`/v1/voices/${voiceId}`)
187
+ }
188
+
189
+ /**
190
+ * List available TTS models.
191
+ *
192
+ * @returns Array of model objects with IDs and capabilities
193
+ *
194
+ * @example
195
+ * ```typescript
196
+ * const models = await el.listModels()
197
+ * console.log(models.map(m => m.model_id))
198
+ * ```
199
+ */
200
+ async listModels(): Promise<any[]> {
201
+ this.trackRequest()
202
+ return this.get('/v1/models')
203
+ }
204
+
205
+ /**
206
+ * Synthesize speech from text, returning audio as a Buffer.
207
+ *
208
+ * @param text - The text to convert to speech
209
+ * @param options - Voice, model, format, and voice settings overrides
210
+ * @returns Audio data as a Buffer
211
+ *
212
+ * @example
213
+ * ```typescript
214
+ * const audio = await el.synthesize('Hello world')
215
+ * // audio is a Buffer of mp3 data
216
+ *
217
+ * const custom = await el.synthesize('Hello', {
218
+ * voiceId: '21m00Tcm4TlvDq8ikWAM',
219
+ * voiceSettings: { stability: 0.5, similarityBoost: 0.8 }
220
+ * })
221
+ * ```
222
+ */
223
+ async synthesize(text: string, options: SynthesizeOptions = {}): Promise<Buffer> {
224
+ const voiceId = options.voiceId || this.options.defaultVoiceId || 'JBFqnCBsd6RMkjVDRZzb'
225
+ const modelId = options.modelId || this.options.defaultModelId || 'eleven_multilingual_v2'
226
+ const outputFormat = options.outputFormat || this.options.outputFormat || 'mp3_44100_128'
227
+
228
+ const body: Record<string, any> = {
229
+ text,
230
+ model_id: modelId,
231
+ }
232
+
233
+ if (options.voiceSettings) {
234
+ body.voice_settings = {
235
+ stability: options.voiceSettings.stability,
236
+ similarity_boost: options.voiceSettings.similarityBoost,
237
+ style: options.voiceSettings.style,
238
+ speed: options.voiceSettings.speed,
239
+ use_speaker_boost: options.voiceSettings.useSpeakerBoost,
240
+ }
241
+ }
242
+
243
+ // Check disk cache for previously synthesized audio
244
+ if (!options.disableCache) {
245
+ const { hashObject } = this.container.utils
246
+ const cacheKey = `elevenlabs:${hashObject({ text, voiceId, modelId, outputFormat, voiceSettings: options.voiceSettings })}`
247
+ const diskCache = this.container.feature('diskCache')
248
+
249
+ if (await diskCache.has(cacheKey)) {
250
+ console.log(`Cache Hit: ${cacheKey}`)
251
+ const cached = await diskCache.get(cacheKey)
252
+ const audioBuffer = Buffer.from(cached, 'base64')
253
+
254
+ this.emit('speech', {
255
+ voiceId,
256
+ text,
257
+ audioSize: audioBuffer.length,
258
+ })
259
+
260
+ return audioBuffer
261
+ }
262
+
263
+ const audioBuffer = await this.fetchSpeech(voiceId, outputFormat, body, text.length)
264
+ await diskCache.set(cacheKey, audioBuffer.toString('base64'))
265
+
266
+ this.emit('speech', { voiceId, text, audioSize: audioBuffer.length })
267
+ return audioBuffer
268
+ }
269
+
270
+ const audioBuffer = await this.fetchSpeech(voiceId, outputFormat, body, text.length)
271
+ this.emit('speech', { voiceId, text, audioSize: audioBuffer.length })
272
+ return audioBuffer
273
+ }
274
+
275
+ private async fetchSpeech(voiceId: string, outputFormat: string, body: Record<string, any>, charCount: number): Promise<Buffer> {
276
+ this.trackRequest(charCount)
277
+ await this.beforeRequest()
278
+
279
+ const response = await this.axios({
280
+ method: 'POST',
281
+ url: `/v1/text-to-speech/${voiceId}`,
282
+ params: { output_format: outputFormat },
283
+ data: body,
284
+ responseType: 'arraybuffer',
285
+ headers: {
286
+ 'Content-Type': 'application/json',
287
+ Accept: 'audio/mpeg',
288
+ },
289
+ })
290
+
291
+ return Buffer.from(response.data)
292
+ }
293
+
294
+ /**
295
+ * Synthesize speech and write the audio to a file.
296
+ *
297
+ * @param text - The text to convert to speech
298
+ * @param outputPath - File path to write the audio to
299
+ * @param options - Voice, model, format, and voice settings overrides
300
+ * @returns The resolved output path
301
+ *
302
+ * @example
303
+ * ```typescript
304
+ * const path = await el.say('Hello world', './hello.mp3')
305
+ * console.log(`Audio saved to ${path}`)
306
+ * ```
307
+ */
308
+ async say(text: string, outputPath: string, options: SynthesizeOptions = {}): Promise<string> {
309
+ const audio = await this.synthesize(text, options)
310
+ const resolvedPath = this.container.paths.resolve(outputPath)
311
+ await this.container.fs.writeFileAsync(resolvedPath, audio)
312
+ return resolvedPath
313
+ }
314
+ }
315
+
316
+ export default ElevenLabsClient
317
+
@@ -0,0 +1,87 @@
1
+ import { z } from 'zod'
2
+ import { Client } from '../client.js'
3
+ import { RestClient } from './rest.js'
4
+ import type { ClientState } from '../client.js'
5
+ import {
6
+ GraphClientOptionsSchema, GraphClientEventsSchema,
7
+ } from '../schemas/base.js'
8
+
9
+ export type GraphClientOptions = z.infer<typeof GraphClientOptionsSchema>
10
+
11
+ declare module '../client' {
12
+ interface AvailableClients {
13
+ graph: typeof GraphClient
14
+ }
15
+ }
16
+
17
+ /**
18
+ * GraphQL client that wraps RestClient with convenience methods for executing
19
+ * queries and mutations. Automatically handles the GraphQL request envelope
20
+ * (query/variables/operationName) and unwraps responses, extracting the `data`
21
+ * field and emitting events for GraphQL-level errors.
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * const gql = container.client('graph', { baseURL: 'https://api.example.com' })
26
+ * const data = await gql.query(`{ users { id name } }`)
27
+ * await gql.mutate(`mutation($name: String!) { createUser(name: $name) { id } }`, { name: 'Alice' })
28
+ * ```
29
+ */
30
+ export class GraphClient<
31
+ T extends ClientState = ClientState,
32
+ K extends GraphClientOptions = GraphClientOptions
33
+ > extends RestClient<T, K> {
34
+ static override shortcut = "clients.graph" as const
35
+ static override optionsSchema = GraphClientOptionsSchema
36
+ static override eventsSchema = GraphClientEventsSchema
37
+ static { Client.register(this, 'graph') }
38
+
39
+ /** The GraphQL endpoint path. Defaults to '/graphql'. */
40
+ get endpoint() {
41
+ return (this.options as GraphClientOptions).endpoint || '/graphql'
42
+ }
43
+
44
+ /**
45
+ * Execute a GraphQL query and return the unwrapped data.
46
+ * @param query - The GraphQL query string
47
+ * @param variables - Optional variables for the query
48
+ * @param operationName - Optional operation name when the query contains multiple operations
49
+ */
50
+ async query<R = any>(query: string, variables?: Record<string, any>, operationName?: string): Promise<R> {
51
+ return this.execute<R>(query, variables, operationName)
52
+ }
53
+
54
+ /**
55
+ * Execute a GraphQL mutation and return the unwrapped data.
56
+ * Semantically identical to query() but named for clarity when performing mutations.
57
+ * @param mutation - The GraphQL mutation string
58
+ * @param variables - Optional variables for the mutation
59
+ * @param operationName - Optional operation name when the mutation contains multiple operations
60
+ */
61
+ async mutate<R = any>(mutation: string, variables?: Record<string, any>, operationName?: string): Promise<R> {
62
+ return this.execute<R>(mutation, variables, operationName)
63
+ }
64
+
65
+ /**
66
+ * Execute a GraphQL operation, unwrap the response, and handle errors.
67
+ * Posts to the configured endpoint with the standard GraphQL envelope.
68
+ * If the response contains GraphQL-level errors, emits both 'graphqlError'
69
+ * and 'failure' events before returning the data.
70
+ */
71
+ private async execute<R = any>(query: string, variables?: Record<string, any>, operationName?: string): Promise<R> {
72
+ const body: Record<string, any> = { query }
73
+ if (variables) body.variables = variables
74
+ if (operationName) body.operationName = operationName
75
+
76
+ const response = await this.post(this.endpoint, body)
77
+
78
+ if (response?.errors?.length) {
79
+ this.emit('graphqlError', response.errors)
80
+ this.emit('failure', response.errors)
81
+ }
82
+
83
+ return response?.data as R
84
+ }
85
+ }
86
+
87
+ export default GraphClient