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,382 @@
1
+ import { z } from 'zod'
2
+ import { FeatureStateSchema, FeatureOptionsSchema, FeatureEventsSchema } from '../../schemas/base.js'
3
+ import { Feature } from '../feature.js'
4
+
5
+ // --- Message Types ---
6
+
7
+ export const MessageTypes = {
8
+ register: 'register',
9
+ registered: 'registered',
10
+ eval: 'eval',
11
+ evalResult: 'evalResult',
12
+ event: 'event',
13
+ ping: 'ping',
14
+ pong: 'pong',
15
+ disconnect: 'disconnect',
16
+ error: 'error',
17
+ } as const
18
+
19
+ export type MessageType = typeof MessageTypes[keyof typeof MessageTypes]
20
+
21
+ // --- Link Message Envelope ---
22
+
23
+ export interface LinkMessage<T = any> {
24
+ type: MessageType
25
+ id: string
26
+ timestamp: number
27
+ token?: string
28
+ data?: T
29
+ }
30
+
31
+ // --- Registration Data ---
32
+
33
+ export interface RegisterData {
34
+ uuid: string
35
+ url?: string
36
+ capabilities?: string[]
37
+ meta?: Record<string, any>
38
+ }
39
+
40
+ export interface RegisteredData {
41
+ token: string
42
+ hostId: string
43
+ }
44
+
45
+ // --- Eval Data ---
46
+
47
+ export interface EvalData {
48
+ code: string
49
+ context?: Record<string, any>
50
+ requestId: string
51
+ timeout?: number
52
+ }
53
+
54
+ export interface EvalResultData {
55
+ requestId: string
56
+ result?: any
57
+ error?: string
58
+ }
59
+
60
+ // --- Event Data ---
61
+
62
+ export interface EventData {
63
+ eventName: string
64
+ data?: any
65
+ }
66
+
67
+ // --- Schemas ---
68
+
69
+ export const ContainerLinkStateSchema = FeatureStateSchema.extend({
70
+ connected: z.boolean().default(false).describe('Whether connected to the host'),
71
+ token: z.string().optional().describe('Auth token received from host during registration'),
72
+ hostId: z.string().optional().describe('UUID of the connected host container'),
73
+ reconnectAttempts: z.number().default(0).describe('Number of reconnection attempts made'),
74
+ })
75
+ export type ContainerLinkState = z.infer<typeof ContainerLinkStateSchema>
76
+
77
+ export const ContainerLinkOptionsSchema = FeatureOptionsSchema.extend({
78
+ hostUrl: z.string().optional().describe('WebSocket URL of the host container (e.g. ws://localhost:8089)'),
79
+ meta: z.record(z.string(), z.any()).optional().describe('Metadata to send during registration'),
80
+ capabilities: z.array(z.string()).optional().describe('Capability tags to advertise to the host'),
81
+ reconnect: z.boolean().default(true).describe('Whether to automatically reconnect on disconnection'),
82
+ reconnectInterval: z.number().default(1000).describe('Base interval in ms between reconnection attempts'),
83
+ maxReconnectAttempts: z.number().default(10).describe('Maximum number of reconnection attempts'),
84
+ })
85
+ export type ContainerLinkOptions = z.infer<typeof ContainerLinkOptionsSchema>
86
+
87
+ export const ContainerLinkEventsSchema = FeatureEventsSchema.extend({
88
+ connected: z.tuple([z.string().describe('Host container UUID')]).describe('Emitted when successfully registered with the host'),
89
+ disconnected: z.tuple([z.string().optional().describe('Reason')]).describe('Emitted when disconnected from the host'),
90
+ evalRequest: z.tuple([z.string().describe('Code to evaluate'), z.string().describe('Request ID')]).describe('Emitted before executing an eval request from the host'),
91
+ reconnecting: z.tuple([z.number().describe('Attempt number')]).describe('Emitted when attempting to reconnect'),
92
+ })
93
+
94
+ // --- Feature ---
95
+
96
+ /**
97
+ * ContainerLink (Web-side) — WebSocket client that connects to a node host.
98
+ *
99
+ * Connects to a ContainerLink host over WebSocket. The host can evaluate code
100
+ * in this container, and the web side can emit structured events to the host.
101
+ * The web side can NEVER eval code in the host — trust is strictly one-way.
102
+ *
103
+ * @example
104
+ * ```typescript
105
+ * const link = container.feature('containerLink', {
106
+ * enable: true,
107
+ * hostUrl: 'ws://localhost:8089',
108
+ * })
109
+ * await link.connect()
110
+ *
111
+ * // Send events to the host
112
+ * link.emitToHost('click', { x: 100, y: 200 })
113
+ *
114
+ * // Listen for eval requests before they execute
115
+ * link.on('evalRequest', (code, requestId) => {
116
+ * console.log('Host is evaluating:', code)
117
+ * })
118
+ * ```
119
+ */
120
+ export class ContainerLink extends Feature<ContainerLinkState, ContainerLinkOptions> {
121
+ static override shortcut = 'features.containerLink' as const
122
+ static override stateSchema = ContainerLinkStateSchema
123
+ static override optionsSchema = ContainerLinkOptionsSchema
124
+ static override eventsSchema = ContainerLinkEventsSchema
125
+
126
+ static { Feature.register(this as any, 'containerLink') }
127
+
128
+ private _ws?: WebSocket
129
+ private _reconnectTimer?: ReturnType<typeof setTimeout>
130
+
131
+ override get initialState(): ContainerLinkState {
132
+ return {
133
+ ...super.initialState,
134
+ connected: false,
135
+ reconnectAttempts: 0,
136
+ }
137
+ }
138
+
139
+ /** Whether currently connected to the host. */
140
+ get isConnected(): boolean {
141
+ return this.state.get('connected') || false
142
+ }
143
+
144
+ /** The auth token received from the host. */
145
+ get token(): string | undefined {
146
+ return this.state.get('token')
147
+ }
148
+
149
+ /** The host container's UUID. */
150
+ get hostId(): string | undefined {
151
+ return this.state.get('hostId')
152
+ }
153
+
154
+ /**
155
+ * Connect to the host WebSocket server and perform registration.
156
+ *
157
+ * @param hostUrl - Override the configured host URL
158
+ * @returns Promise that resolves when registered
159
+ */
160
+ async connect(hostUrl?: string): Promise<this> {
161
+ const url = hostUrl || this.options.hostUrl
162
+ if (!url) {
163
+ throw new Error('No hostUrl provided for containerLink connection')
164
+ }
165
+
166
+ if (this._ws) {
167
+ this._ws.close()
168
+ this._ws = undefined
169
+ }
170
+
171
+ return new Promise((resolve, reject) => {
172
+ const ws = new WebSocket(url)
173
+ this._ws = ws
174
+
175
+ let registered = false
176
+
177
+ ws.onopen = () => {
178
+ // Send registration
179
+ const msg = this.createMessage(MessageTypes.register, {
180
+ uuid: this.container.uuid,
181
+ url: typeof window !== 'undefined' ? window.location?.href : undefined,
182
+ capabilities: this.options.capabilities,
183
+ meta: this.options.meta,
184
+ })
185
+ ws.send(JSON.stringify(msg))
186
+ }
187
+
188
+ ws.onmessage = (event: MessageEvent) => {
189
+ let msg: LinkMessage
190
+ try {
191
+ msg = JSON.parse(event.data)
192
+ } catch {
193
+ return
194
+ }
195
+
196
+ if (!registered && msg.type === MessageTypes.registered) {
197
+ registered = true
198
+ const data = msg.data as RegisteredData
199
+ this.setState({
200
+ connected: true,
201
+ token: data.token,
202
+ hostId: data.hostId,
203
+ reconnectAttempts: 0,
204
+ })
205
+ this.emit('connected', data.hostId)
206
+ resolve(this)
207
+ return
208
+ }
209
+
210
+ if (!registered && msg.type === MessageTypes.error) {
211
+ reject(new Error(msg.data?.message || 'Registration failed'))
212
+ return
213
+ }
214
+
215
+ this.handleMessage(msg)
216
+ }
217
+
218
+ ws.onclose = () => {
219
+ const wasConnected = this.isConnected
220
+ this.setState({ connected: false })
221
+
222
+ if (wasConnected) {
223
+ this.emit('disconnected', 'closed')
224
+ }
225
+
226
+ if (!registered) {
227
+ reject(new Error('WebSocket closed before registration'))
228
+ return
229
+ }
230
+
231
+ this.maybeReconnect(url)
232
+ }
233
+
234
+ ws.onerror = () => {
235
+ if (!registered) {
236
+ reject(new Error('WebSocket connection error'))
237
+ }
238
+ }
239
+ })
240
+ }
241
+
242
+ /**
243
+ * Disconnect from the host.
244
+ *
245
+ * @param reason - Optional reason string
246
+ */
247
+ disconnect(reason?: string): void {
248
+ // Prevent reconnection
249
+ this.clearReconnectTimer()
250
+
251
+ if (this._ws) {
252
+ try {
253
+ const msg = this.createMessage(MessageTypes.disconnect, { reason: reason || 'client disconnect' }, this.token)
254
+ this._ws.send(JSON.stringify(msg))
255
+ } catch { /* ignore */ }
256
+
257
+ this._ws.close()
258
+ this._ws = undefined
259
+ }
260
+
261
+ this.setState({ connected: false, token: undefined, hostId: undefined })
262
+ this.emit('disconnected', reason)
263
+ }
264
+
265
+ /**
266
+ * Send a structured event to the host container.
267
+ *
268
+ * @param eventName - Name of the event
269
+ * @param data - Optional event data
270
+ */
271
+ emitToHost(eventName: string, data?: any): void {
272
+ if (!this._ws || !this.isConnected) {
273
+ throw new Error('Not connected to host')
274
+ }
275
+
276
+ const msg = this.createMessage<EventData>(MessageTypes.event, {
277
+ eventName,
278
+ data,
279
+ }, this.token)
280
+
281
+ this._ws.send(JSON.stringify(msg))
282
+ }
283
+
284
+ // --- Internal ---
285
+
286
+ private handleMessage(msg: LinkMessage): void {
287
+ switch (msg.type) {
288
+ case MessageTypes.eval:
289
+ this.handleEval(msg as LinkMessage<EvalData>)
290
+ break
291
+
292
+ case MessageTypes.ping:
293
+ this.respondToPing()
294
+ break
295
+
296
+ case MessageTypes.disconnect:
297
+ this.clearReconnectTimer()
298
+ this._ws?.close()
299
+ this._ws = undefined
300
+ this.setState({ connected: false, token: undefined, hostId: undefined })
301
+ this.emit('disconnected', msg.data?.reason || 'host disconnect')
302
+ break
303
+
304
+ default:
305
+ break
306
+ }
307
+ }
308
+
309
+ private async handleEval(msg: LinkMessage<EvalData>): Promise<void> {
310
+ const data = msg.data
311
+ if (!data?.code || !data?.requestId) return
312
+
313
+ this.emit('evalRequest', data.code, data.requestId)
314
+
315
+ try {
316
+ const vm = this.container.feature('vm') as any
317
+ const result = await vm.run(data.code, data.context || {})
318
+
319
+ const response = this.createMessage(MessageTypes.evalResult, {
320
+ requestId: data.requestId,
321
+ result,
322
+ }, this.token)
323
+
324
+ this._ws?.send(JSON.stringify(response))
325
+ } catch (err: any) {
326
+ const response = this.createMessage(MessageTypes.evalResult, {
327
+ requestId: data.requestId,
328
+ error: err?.message || String(err),
329
+ }, this.token)
330
+
331
+ this._ws?.send(JSON.stringify(response))
332
+ }
333
+ }
334
+
335
+ private respondToPing(): void {
336
+ if (!this._ws || !this.isConnected) return
337
+ const msg = this.createMessage(MessageTypes.pong, undefined, this.token)
338
+ this._ws.send(JSON.stringify(msg))
339
+ }
340
+
341
+ private maybeReconnect(url: string): void {
342
+ if (!this.options.reconnect) return
343
+
344
+ const attempts = this.state.get('reconnectAttempts') || 0
345
+ const max = this.options.maxReconnectAttempts || 10
346
+
347
+ if (attempts >= max) return
348
+
349
+ const baseInterval = this.options.reconnectInterval || 1000
350
+ const delay = baseInterval * Math.pow(1.5, attempts)
351
+ const nextAttempt = attempts + 1
352
+
353
+ this.setState({ reconnectAttempts: nextAttempt })
354
+ this.emit('reconnecting', nextAttempt)
355
+
356
+ this._reconnectTimer = setTimeout(() => {
357
+ this.connect(url).catch(() => {
358
+ // Reconnect failure handled by connect's onclose
359
+ })
360
+ }, delay)
361
+ }
362
+
363
+ /** Create a link protocol message with a unique ID. */
364
+ private createMessage<T = any>(type: MessageType, data?: T, token?: string): LinkMessage<T> {
365
+ return {
366
+ type,
367
+ id: this.container.utils.uuid(),
368
+ timestamp: Date.now(),
369
+ ...(token != null ? { token } : {}),
370
+ ...(data != null ? { data } : {}),
371
+ }
372
+ }
373
+
374
+ private clearReconnectTimer(): void {
375
+ if (this._reconnectTimer) {
376
+ clearTimeout(this._reconnectTimer)
377
+ this._reconnectTimer = undefined
378
+ }
379
+ }
380
+ }
381
+
382
+ export default ContainerLink
@@ -0,0 +1,93 @@
1
+ import { z } from 'zod'
2
+ import { FeatureStateSchema, FeatureOptionsSchema } from '../../schemas/base.js'
3
+ import { Feature, type FeatureState } from "../feature.js";
4
+ import type * as esbuild from 'esbuild-wasm';
5
+
6
+ export const EsbuildWebOptionsSchema = FeatureOptionsSchema.extend({
7
+ transformOptions: z.any().describe('Partial<esbuild.TransformOptions>').optional(),
8
+ tsconfig: z.string().optional().describe('Path to a tsconfig.json file for TypeScript compilation'),
9
+ })
10
+
11
+ export type EsbuildWebOptions = z.infer<typeof EsbuildWebOptionsSchema>
12
+
13
+ /**
14
+ * Browser-side TypeScript/ESM compilation feature using esbuild-wasm.
15
+ *
16
+ * Loads esbuild's WebAssembly build via the AssetLoader, then provides
17
+ * `compile()` and `transform()` methods that work entirely in the browser.
18
+ * Useful for live playgrounds, in-browser REPLs, and client-side bundling.
19
+ *
20
+ * @extends Feature
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * const esbuild = container.feature('esbuild')
25
+ * await esbuild.start()
26
+ * const result = await esbuild.compile('const x: number = 1')
27
+ * console.log(result.code)
28
+ * ```
29
+ */
30
+ export class Esbuild extends Feature<FeatureState, EsbuildWebOptions> {
31
+ static override stateSchema = FeatureStateSchema
32
+ static override optionsSchema = EsbuildWebOptionsSchema
33
+ static override shortcut = "features.esbuild" as const
34
+
35
+ static { Feature.register(this as any, 'esbuild') }
36
+
37
+ /** Returns the assetLoader feature for loading external libraries from unpkg. */
38
+ get assetLoader() {
39
+ return this.container.feature("assetLoader");
40
+ }
41
+
42
+ compiler!: typeof esbuild
43
+
44
+ async compile(code:string, options?: esbuild.TransformOptions) {
45
+ if(!this.compiler) {
46
+ throw new Error('esbuild not started')
47
+ }
48
+
49
+ const { hashObject } = this.container.utils
50
+
51
+ const cacheKey = hashObject({ code, options })
52
+
53
+ if (compileCache.has(cacheKey)) {
54
+ return compileCache.get(cacheKey)
55
+ }
56
+
57
+ const result = await this.compiler.transform(code, {
58
+ loader: 'ts',
59
+ target: 'es2015',
60
+ ...this.options.transformOptions,
61
+ ...options
62
+ })
63
+
64
+ compileCache.set(cacheKey, result)
65
+
66
+ return result
67
+ }
68
+
69
+ clearCache() {
70
+ compileCache.clear()
71
+ return this
72
+ }
73
+
74
+ async start() {
75
+ if((this as any).compiler) {
76
+ return this
77
+ }
78
+
79
+ const esbuild = await this.assetLoader.unpkg('esbuild-wasm', 'esbuild');
80
+ await esbuild.initialize({
81
+ wasmURL: 'https://unpkg.com/esbuild-wasm/esbuild.wasm'
82
+ });
83
+
84
+ this.compiler = esbuild
85
+
86
+ return this
87
+ }
88
+
89
+ }
90
+
91
+ export default Esbuild;
92
+
93
+ const compileCache = new Map()