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,388 @@
1
+ import { z } from 'zod'
2
+ import { FeatureStateSchema, FeatureOptionsSchema } from '../../schemas/base.js'
3
+ import cacache from "cacache";
4
+ import { Feature, type FeatureState } from "../feature.js";
5
+ import { NodeContainer } from "../container.js";
6
+ import { partial } from "lodash-es";
7
+ import type { ContainerContext } from "../../container.js";
8
+
9
+ export const DiskCacheOptionsSchema = FeatureOptionsSchema.extend({
10
+ /** Whether to enable encryption for cached data */
11
+ encrypt: z.boolean().optional().describe('Whether to enable encryption for cached data'),
12
+ /** Secret key used for encryption operations */
13
+ secret: z.custom<Buffer>().optional().describe('Secret key buffer used for encryption operations'),
14
+ /** Custom directory path for the cache storage */
15
+ path: z.string().optional().describe('Custom directory path for the cache storage'),
16
+ })
17
+
18
+ export type DiskCacheOptions = z.infer<typeof DiskCacheOptionsSchema>
19
+
20
+ /**
21
+ * File-backed key-value cache built on top of the cacache library (the same store
22
+ * that powers npm). Suitable for persisting arbitrary data including very large
23
+ * blobs when necessary, with optional encryption support.
24
+ *
25
+ * @extends Feature
26
+ * @example
27
+ * ```typescript
28
+ * const diskCache = container.feature('diskCache', { path: '/tmp/cache' })
29
+ * await diskCache.set('greeting', 'Hello World')
30
+ * const value = await diskCache.get('greeting')
31
+ * ```
32
+ */
33
+ export class DiskCache extends Feature<FeatureState,DiskCacheOptions> {
34
+ static override shortcut = "features.diskCache" as const
35
+ static override stateSchema = FeatureStateSchema
36
+ static override optionsSchema = DiskCacheOptionsSchema
37
+ static { Feature.register(this, 'diskCache') }
38
+
39
+ /** Returns the underlying cacache instance configured with the cache directory path. */
40
+ get cache(): ReturnType<typeof this.create> {
41
+ if(this._cache) {
42
+ return this._cache
43
+ }
44
+
45
+ const cache = this.create()
46
+
47
+ Object.defineProperty(this, '_cache', { value: cache, enumerable: false })
48
+
49
+ return cache
50
+ }
51
+
52
+ /**
53
+ * Retrieve a file from the disk cache and save it to the local disk
54
+ * @param key - The cache key to retrieve
55
+ * @param outputPath - The local path where the file should be saved
56
+ * @param isBase64 - Whether the cached content is base64 encoded
57
+ * @returns Promise that resolves to the file data as Buffer
58
+ * @example
59
+ * ```typescript
60
+ * await diskCache.saveFile('myFile', './output/file.txt')
61
+ * await diskCache.saveFile('encodedImage', './images/photo.jpg', true)
62
+ * ```
63
+ */
64
+ async saveFile(key: string, outputPath: string, isBase64 = false): Promise<Buffer | string> {
65
+ const outPath = this.container.paths.resolve(outputPath)
66
+ const content = await this.get(key)
67
+ const data = isBase64 ? Buffer.from(content, 'base64') : content
68
+ await this.container.fs.writeFileAsync(outPath, data)
69
+ return data
70
+ }
71
+
72
+ /**
73
+ * Ensure a key exists in the cache, setting it with the provided content if it doesn't exist
74
+ * @param key - The cache key to check/set
75
+ * @param content - The content to set if the key doesn't exist
76
+ * @returns Promise that resolves to the key
77
+ * @example
78
+ * ```typescript
79
+ * await diskCache.ensure('config', JSON.stringify(defaultConfig))
80
+ * ```
81
+ */
82
+ async ensure(key: string, content: string): Promise<string> {
83
+ const exists = await this.has(key)
84
+
85
+ if (!exists) {
86
+ await this.set(key, content)
87
+ }
88
+
89
+ return key
90
+ }
91
+
92
+ /**
93
+ * Copy a cached item from one key to another
94
+ * @param source - The source cache key
95
+ * @param destination - The destination cache key
96
+ * @param overwrite - Whether to overwrite if destination exists (default: false)
97
+ * @returns Promise that resolves to the destination key
98
+ * @throws Error if destination exists and overwrite is false
99
+ * @example
100
+ * ```typescript
101
+ * await diskCache.copy('original', 'backup')
102
+ * await diskCache.copy('file1', 'file2', true) // force overwrite
103
+ * ```
104
+ */
105
+ async copy(source: string, destination: string, overwrite: boolean = false): Promise<string> {
106
+ if(!overwrite && (await this.has(destination))) {
107
+ throw new Error('Destination already exists')
108
+ }
109
+
110
+ const content = await this.get(source)
111
+ await this.set(destination, content)
112
+ return destination
113
+ }
114
+
115
+ /**
116
+ * Move a cached item from one key to another (copy then delete source)
117
+ * @param source - The source cache key
118
+ * @param destination - The destination cache key
119
+ * @param overwrite - Whether to overwrite if destination exists (default: false)
120
+ * @returns Promise that resolves to the destination key
121
+ * @throws Error if destination exists and overwrite is false
122
+ * @example
123
+ * ```typescript
124
+ * await diskCache.move('temp', 'permanent')
125
+ * await diskCache.move('old_key', 'new_key', true) // force overwrite
126
+ * ```
127
+ */
128
+ async move(source: string, destination: string, overwrite: boolean = false): Promise<string> {
129
+ if(!overwrite && (await this.has(destination))) {
130
+ throw new Error('Destination already exists')
131
+ }
132
+
133
+ const content = await this.get(source)
134
+ await this.set(destination, content)
135
+ await this.rm(source)
136
+ return destination
137
+ }
138
+
139
+ /**
140
+ * Check if a key exists in the cache
141
+ * @param key - The cache key to check
142
+ * @returns Promise that resolves to true if key exists, false otherwise
143
+ * @example
144
+ * ```typescript
145
+ * if (await diskCache.has('myKey')) {
146
+ * console.log('Key exists!')
147
+ * }
148
+ * ```
149
+ */
150
+ async has(key: string): Promise<boolean> {
151
+ return this.cache.get.info(key).then((r:any) => r != null)
152
+ }
153
+
154
+ /**
155
+ * Retrieve a value from the cache
156
+ * @param key - The cache key to retrieve
157
+ * @param json - Whether to parse the value as JSON (default: false)
158
+ * @returns Promise that resolves to the cached value (string or parsed JSON)
159
+ * @example
160
+ * ```typescript
161
+ * const text = await diskCache.get('myText')
162
+ * const data = await diskCache.get('myData', true) // parse as JSON
163
+ * ```
164
+ */
165
+ async get(key: string, json = false): Promise<any> {
166
+ const val = this.options.encrypt
167
+ ? await this.securely.get(key)
168
+ : await this.cache.get(key).then((data: any) => data.data.toString())
169
+
170
+ if (json) {
171
+ try {
172
+ return JSON.parse(val)
173
+ } catch(error) {
174
+ return { error: "parse error "}
175
+ }
176
+ } else {
177
+ return val
178
+ }
179
+ }
180
+
181
+ /**
182
+ * Store a value in the cache
183
+ * @param key - The cache key to store under
184
+ * @param value - The value to store (string, object, or any serializable data)
185
+ * @param meta - Optional metadata to associate with the cached item
186
+ * @returns Promise that resolves when the value is stored
187
+ * @example
188
+ * ```typescript
189
+ * await diskCache.set('myKey', 'Hello World')
190
+ * await diskCache.set('userData', { name: 'John', age: 30 })
191
+ * await diskCache.set('file', content, { size: 1024, type: 'image' })
192
+ * ```
193
+ */
194
+ async set(key: string, value: any, meta?: any): Promise<any> {
195
+ if (this.options.encrypt) {
196
+ return this.securely.set(key, value, meta)
197
+ }
198
+
199
+ if(typeof value !== 'string') {
200
+ return this.cache.put(key, Buffer.from(JSON.stringify(value)), {
201
+ ...(meta && { metadata: meta })
202
+ })
203
+ } else {
204
+ return this.cache.put(key, Buffer.from(value), {
205
+ ...(meta && { metadata: meta })
206
+ })
207
+ }
208
+ }
209
+
210
+ /**
211
+ * Remove a cached item
212
+ * @param key - The cache key to remove
213
+ * @returns Promise that resolves when the item is removed
214
+ * @example
215
+ * ```typescript
216
+ * await diskCache.rm('obsoleteKey')
217
+ * ```
218
+ */
219
+ async rm(key: string): Promise<any> {
220
+ return this.cache.rm.entry(key)
221
+ }
222
+
223
+ /**
224
+ * Clear all cached items
225
+ * @param confirm - Must be set to true to confirm the operation
226
+ * @returns Promise that resolves to this instance for chaining
227
+ * @throws Error if confirm is not true
228
+ * @example
229
+ * ```typescript
230
+ * await diskCache.clearAll(true) // Must explicitly confirm
231
+ * ```
232
+ */
233
+ async clearAll(confirm = false): Promise<this> {
234
+ if(confirm !== true) {
235
+ throw new Error('Must confirm with clearAll(true)')
236
+ }
237
+ await this.cache.rm.all()
238
+ return this
239
+ }
240
+
241
+ /**
242
+ * Get all cache keys
243
+ * @returns Promise that resolves to an array of all cache keys
244
+ * @example
245
+ * ```typescript
246
+ * const allKeys = await diskCache.keys()
247
+ * console.log(`Cache contains ${allKeys.length} items`)
248
+ * ```
249
+ */
250
+ async keys() : Promise<string[]> {
251
+ return this.cache.ls().then((results: Record<string,any>) => Object.keys(results))
252
+ }
253
+
254
+ /**
255
+ * List all cache keys (alias for keys())
256
+ * @returns Promise that resolves to an array of all cache keys
257
+ * @example
258
+ * ```typescript
259
+ * const keyList = await diskCache.listKeys()
260
+ * ```
261
+ */
262
+ async listKeys() : Promise<string[]> {
263
+ return this.cache.ls().then((results: Record<string,any>) => Object.keys(results))
264
+ }
265
+
266
+ /**
267
+ * Get encrypted cache operations interface
268
+ * Requires encryption to be enabled and a secret to be provided
269
+ * @returns Object with encrypted get/set operations
270
+ * @throws Error if encryption is not enabled or no secret is provided
271
+ * @example
272
+ * ```typescript
273
+ * // Initialize with encryption
274
+ * const cache = container.feature('diskCache', {
275
+ * encrypt: true,
276
+ * secret: Buffer.from('my-secret-key')
277
+ * })
278
+ *
279
+ * // Use encrypted operations
280
+ * await cache.securely.set('sensitive', 'secret data')
281
+ * const decrypted = await cache.securely.get('sensitive')
282
+ * ```
283
+ */
284
+ get securely(): { set(name: string, payload: any, meta?: any): Promise<any>; get(name: string): Promise<any> } {
285
+ const { secret, encrypt } = this.options
286
+
287
+ if (!encrypt) {
288
+ throw new Error(`Cannot use securely without encryption enabled`)
289
+ }
290
+
291
+ if (!secret) {
292
+ throw new Error(`Cannot use securely without a secret`)
293
+ }
294
+
295
+ const vault = this.container.feature('vault', {
296
+ secret
297
+ })
298
+
299
+ const { cache } = this
300
+
301
+ return {
302
+ /**
303
+ * Store an encrypted value in the cache
304
+ * @param name - The cache key
305
+ * @param payload - The data to encrypt and store
306
+ * @param meta - Optional metadata (will also be encrypted)
307
+ * @returns Promise that resolves when stored
308
+ */
309
+ async set(name: string, payload: any, meta?: any) {
310
+ const encrypted = vault.encrypt(payload)
311
+ return cache.put(name, Buffer.from(encrypted), {
312
+ ...(meta && { metadata: {
313
+ encrypted: vault.encrypt(JSON.stringify(meta))
314
+ }})
315
+ })
316
+ },
317
+ /**
318
+ * Retrieve and decrypt a value from the cache
319
+ * @param name - The cache key
320
+ * @returns Promise that resolves to the decrypted data
321
+ */
322
+ async get(name: string) {
323
+ const value = await cache.get(name).then((data: any) => data.data.toString())
324
+ return vault.decrypt(value)
325
+ }
326
+ }
327
+ }
328
+
329
+ _cache!: ReturnType<typeof this.create>
330
+
331
+ /**
332
+ * Create a cacache instance with the specified path
333
+ * @param path - Optional cache directory path (defaults to options.path or ~/.cache/luca/disk-cache-{cwdHash})
334
+ * @returns Configured cacache instance with all methods bound to the path
335
+ * @example
336
+ * ```typescript
337
+ * const customCache = diskCache.create('/custom/cache/path')
338
+ * ```
339
+ */
340
+ create(path?: string) {
341
+ if (!path && !this.options.path) {
342
+ const cwdHash = this.container.utils.hashObject(this.container.cwd)
343
+ path = this.container.paths.resolve(this.container.feature('os').cacheDir, `disk-cache-${cwdHash}`)
344
+ } else {
345
+ path = path || this.options.path!
346
+ }
347
+ this.container.fs.ensureFolder(path)
348
+ const arg = (fn: (...args: any) => any) => partial(fn, path);
349
+
350
+ const ls = arg(cacache.ls);
351
+ const get = arg(cacache.get);
352
+ const put = arg(cacache.put);
353
+ const rm = arg(cacache.rm);
354
+ const verify = arg(cacache.verify);
355
+
356
+ return {
357
+ ...cacache,
358
+ cachePath: path,
359
+ ls: Object.assign(ls, {
360
+ stream: arg(cacache.ls.stream),
361
+ }),
362
+ get: Object.assign(get, {
363
+ stream: arg(cacache.get.stream),
364
+ byDigest: arg(cacache.get.byDigest),
365
+ copy: arg(cacache.get.copy),
366
+ info: arg(cacache.get.info),
367
+ hasContent: arg(cacache.get.hasContent),
368
+ }),
369
+ put: Object.assign(put, {
370
+ stream: arg(cacache.put.stream),
371
+ }),
372
+ rm: Object.assign(rm, {
373
+ all: arg(cacache.rm.all),
374
+ entry: arg(cacache.rm.entry),
375
+ content: arg(cacache.rm.content),
376
+ }),
377
+ tmp: {
378
+ mkdir: arg(cacache.tmp.mkdir),
379
+ withTmp: arg(cacache.tmp.withTmp),
380
+ },
381
+ verify: Object.assign(verify, {
382
+ lastRun: arg(cacache.verify.lastRun),
383
+ }),
384
+ };
385
+ }
386
+ }
387
+
388
+ export default DiskCache;
@@ -0,0 +1,57 @@
1
+ import { inspect } from 'util'
2
+
3
+ const BUILTIN_TYPES = new Set(['Object', 'Array', 'Map', 'Set', 'Date', 'RegExp', 'Promise', 'Error', 'Number', 'String', 'Boolean'])
4
+
5
+ export function displayResult(value: any) {
6
+ if (typeof value !== 'object' || value === null) {
7
+ console.log(value)
8
+ return
9
+ }
10
+
11
+ const hasCustomInspect = typeof value[Symbol.for('nodejs.util.inspect.custom')] === 'function'
12
+ const ctorName = value.constructor?.name
13
+ const isClassInstance = ctorName && !BUILTIN_TYPES.has(ctorName)
14
+
15
+ // Objects with custom inspect or builtins: use standard inspect
16
+ if (hasCustomInspect || !isClassInstance) {
17
+ console.log(inspect(value, { colors: true, depth: 4 }))
18
+ return
19
+ }
20
+
21
+ // Class instances: show clean data (no _ props, no functions)
22
+ const data: Record<string, any> = {}
23
+ for (const [k, v] of Object.entries(value)) {
24
+ if (k.startsWith('_') || typeof v === 'function') continue
25
+ data[k] = v
26
+ }
27
+ const body = inspect(data, { colors: true, depth: 3 })
28
+ console.log(`${ctorName} ${body}`)
29
+
30
+ // Collect methods and getters from own + prototype chain
31
+ const methods: string[] = []
32
+ const getters: string[] = []
33
+
34
+ for (const [k, v] of Object.entries(value)) {
35
+ if (k.startsWith('_')) continue
36
+ if (typeof v === 'function') methods.push(k)
37
+ }
38
+
39
+ let proto = Object.getPrototypeOf(value)
40
+ while (proto && proto !== Object.prototype) {
41
+ for (const k of Object.getOwnPropertyNames(proto)) {
42
+ if (k === 'constructor' || k.startsWith('_')) continue
43
+ const desc = Object.getOwnPropertyDescriptor(proto, k)
44
+ if (!desc) continue
45
+ if (desc.get && !getters.includes(k)) getters.push(k)
46
+ else if (typeof desc.value === 'function' && !methods.includes(k)) methods.push(k)
47
+ }
48
+ proto = Object.getPrototypeOf(proto)
49
+ }
50
+
51
+ if (getters.length || methods.length) {
52
+ const parts: string[] = []
53
+ if (getters.length) parts.push(` \x1b[36mgetters:\x1b[0m ${getters.sort().join(', ')}`)
54
+ if (methods.length) parts.push(` \x1b[36mmethods:\x1b[0m ${methods.sort().map(m => m + '()').join(', ')}`)
55
+ console.log(parts.join('\n'))
56
+ }
57
+ }