luca 2.0.0 → 3.0.0

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 (763) hide show
  1. package/.github/workflows/release.yaml +169 -0
  2. package/AGENTS.md +99 -0
  3. package/CLAUDE.md +115 -0
  4. package/CNAME +1 -0
  5. package/README.md +257 -9
  6. package/RUNME.md +56 -0
  7. package/assistants/codingAssistant/ABOUT.md +5 -0
  8. package/assistants/codingAssistant/CORE.md +28 -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 +2769 -0
  20. package/bunfig.toml +3 -0
  21. package/commands/audit-docs.ts +740 -0
  22. package/commands/build-bootstrap.ts +118 -0
  23. package/commands/build-python-bridge.ts +43 -0
  24. package/commands/build-scaffolds.ts +176 -0
  25. package/commands/generate-api-docs.ts +114 -0
  26. package/commands/inkbot.ts +874 -0
  27. package/commands/release.ts +80 -0
  28. package/commands/try-all-challenges.ts +543 -0
  29. package/commands/try-challenge.ts +100 -0
  30. package/dist/agi/container.server.d.ts +63 -0
  31. package/dist/agi/container.server.d.ts.map +1 -0
  32. package/dist/agi/endpoints/ask.d.ts +20 -0
  33. package/dist/agi/endpoints/ask.d.ts.map +1 -0
  34. package/dist/agi/endpoints/conversations/[id].d.ts +27 -0
  35. package/dist/agi/endpoints/conversations/[id].d.ts.map +1 -0
  36. package/dist/agi/endpoints/conversations.d.ts +18 -0
  37. package/dist/agi/endpoints/conversations.d.ts.map +1 -0
  38. package/dist/agi/endpoints/experts.d.ts +8 -0
  39. package/dist/agi/endpoints/experts.d.ts.map +1 -0
  40. package/dist/agi/feature.d.ts +9 -0
  41. package/dist/agi/feature.d.ts.map +1 -0
  42. package/dist/agi/features/assistant.d.ts +509 -0
  43. package/dist/agi/features/assistant.d.ts.map +1 -0
  44. package/dist/agi/features/assistants-manager.d.ts +236 -0
  45. package/dist/agi/features/assistants-manager.d.ts.map +1 -0
  46. package/dist/agi/features/autonomous-assistant.d.ts +281 -0
  47. package/dist/agi/features/autonomous-assistant.d.ts.map +1 -0
  48. package/dist/agi/features/browser-use.d.ts +479 -0
  49. package/dist/agi/features/browser-use.d.ts.map +1 -0
  50. package/dist/agi/features/claude-code.d.ts +824 -0
  51. package/dist/agi/features/claude-code.d.ts.map +1 -0
  52. package/dist/agi/features/conversation-history.d.ts +245 -0
  53. package/dist/agi/features/conversation-history.d.ts.map +1 -0
  54. package/dist/agi/features/conversation.d.ts +464 -0
  55. package/dist/agi/features/conversation.d.ts.map +1 -0
  56. package/dist/agi/features/docs-reader.d.ts +72 -0
  57. package/dist/agi/features/docs-reader.d.ts.map +1 -0
  58. package/dist/agi/features/file-tools.d.ts +110 -0
  59. package/dist/agi/features/file-tools.d.ts.map +1 -0
  60. package/dist/agi/features/luca-coder.d.ts +323 -0
  61. package/dist/agi/features/luca-coder.d.ts.map +1 -0
  62. package/dist/agi/features/openai-codex.d.ts +381 -0
  63. package/dist/agi/features/openai-codex.d.ts.map +1 -0
  64. package/dist/agi/features/openapi.d.ts +200 -0
  65. package/dist/agi/features/openapi.d.ts.map +1 -0
  66. package/dist/agi/features/skills-library.d.ts +167 -0
  67. package/dist/agi/features/skills-library.d.ts.map +1 -0
  68. package/dist/agi/index.d.ts +5 -0
  69. package/dist/agi/index.d.ts.map +1 -0
  70. package/dist/agi/lib/interceptor-chain.d.ts +44 -0
  71. package/dist/agi/lib/interceptor-chain.d.ts.map +1 -0
  72. package/dist/agi/lib/token-counter.d.ts +13 -0
  73. package/dist/agi/lib/token-counter.d.ts.map +1 -0
  74. package/dist/bootstrap/generated.d.ts +5 -0
  75. package/dist/bootstrap/generated.d.ts.map +1 -0
  76. package/dist/browser.d.ts +12 -0
  77. package/dist/browser.d.ts.map +1 -0
  78. package/dist/bus.d.ts +29 -0
  79. package/dist/bus.d.ts.map +1 -0
  80. package/dist/cli/build-info.d.ts +4 -0
  81. package/dist/cli/build-info.d.ts.map +1 -0
  82. package/dist/cli/cli.d.ts +3 -12
  83. package/dist/cli/cli.d.ts.map +1 -0
  84. package/dist/client.d.ts +60 -0
  85. package/dist/client.d.ts.map +1 -0
  86. package/dist/clients/civitai/index.d.ts +472 -0
  87. package/dist/clients/civitai/index.d.ts.map +1 -0
  88. package/dist/clients/client-template.d.ts +30 -0
  89. package/dist/clients/client-template.d.ts.map +1 -0
  90. package/dist/clients/comfyui/index.d.ts +281 -0
  91. package/dist/clients/comfyui/index.d.ts.map +1 -0
  92. package/dist/clients/elevenlabs/index.d.ts +197 -0
  93. package/dist/clients/elevenlabs/index.d.ts.map +1 -0
  94. package/dist/clients/graph.d.ts +64 -0
  95. package/dist/clients/graph.d.ts.map +1 -0
  96. package/dist/clients/openai/index.d.ts +247 -0
  97. package/dist/clients/openai/index.d.ts.map +1 -0
  98. package/dist/clients/rest.d.ts +92 -0
  99. package/dist/clients/rest.d.ts.map +1 -0
  100. package/dist/clients/supabase/index.d.ts +176 -0
  101. package/dist/clients/supabase/index.d.ts.map +1 -0
  102. package/dist/clients/websocket.d.ts +127 -0
  103. package/dist/clients/websocket.d.ts.map +1 -0
  104. package/dist/command.d.ts +163 -0
  105. package/dist/command.d.ts.map +1 -0
  106. package/dist/commands/bootstrap.d.ts +20 -0
  107. package/dist/commands/bootstrap.d.ts.map +1 -0
  108. package/dist/commands/chat.d.ts +37 -0
  109. package/dist/commands/chat.d.ts.map +1 -0
  110. package/dist/commands/code.d.ts +28 -0
  111. package/dist/commands/code.d.ts.map +1 -0
  112. package/dist/commands/console.d.ts +22 -0
  113. package/dist/commands/console.d.ts.map +1 -0
  114. package/dist/commands/describe.d.ts +50 -0
  115. package/dist/commands/describe.d.ts.map +1 -0
  116. package/dist/commands/eval.d.ts +23 -0
  117. package/dist/commands/eval.d.ts.map +1 -0
  118. package/dist/commands/help.d.ts +25 -0
  119. package/dist/commands/help.d.ts.map +1 -0
  120. package/dist/commands/index.d.ts +18 -0
  121. package/dist/commands/index.d.ts.map +1 -0
  122. package/dist/commands/introspect.d.ts +24 -0
  123. package/dist/commands/introspect.d.ts.map +1 -0
  124. package/dist/commands/mcp.d.ts +35 -0
  125. package/dist/commands/mcp.d.ts.map +1 -0
  126. package/dist/commands/prompt.d.ts +38 -0
  127. package/dist/commands/prompt.d.ts.map +1 -0
  128. package/dist/commands/run.d.ts +24 -0
  129. package/dist/commands/run.d.ts.map +1 -0
  130. package/dist/commands/sandbox-mcp.d.ts +34 -0
  131. package/dist/commands/sandbox-mcp.d.ts.map +1 -0
  132. package/dist/commands/save-api-docs.d.ts +21 -0
  133. package/dist/commands/save-api-docs.d.ts.map +1 -0
  134. package/dist/commands/scaffold.d.ts +24 -0
  135. package/dist/commands/scaffold.d.ts.map +1 -0
  136. package/dist/commands/select.d.ts +22 -0
  137. package/dist/commands/select.d.ts.map +1 -0
  138. package/dist/commands/serve.d.ts +29 -0
  139. package/dist/commands/serve.d.ts.map +1 -0
  140. package/dist/container-describer.d.ts +144 -0
  141. package/dist/container-describer.d.ts.map +1 -0
  142. package/dist/container.d.ts +451 -0
  143. package/dist/container.d.ts.map +1 -0
  144. package/dist/endpoint.d.ts +113 -0
  145. package/dist/endpoint.d.ts.map +1 -0
  146. package/dist/feature.d.ts +47 -0
  147. package/dist/feature.d.ts.map +1 -0
  148. package/dist/graft.d.ts +29 -0
  149. package/dist/graft.d.ts.map +1 -0
  150. package/dist/hash-object.d.ts +8 -0
  151. package/dist/hash-object.d.ts.map +1 -0
  152. package/dist/helper.d.ts +209 -0
  153. package/dist/helper.d.ts.map +1 -0
  154. package/dist/introspection/generated.node.d.ts +44623 -0
  155. package/dist/introspection/generated.node.d.ts.map +1 -0
  156. package/dist/introspection/generated.web.d.ts +1412 -0
  157. package/dist/introspection/generated.web.d.ts.map +1 -0
  158. package/dist/introspection/index.d.ts +156 -0
  159. package/dist/introspection/index.d.ts.map +1 -0
  160. package/dist/introspection/scan.d.ts +147 -0
  161. package/dist/introspection/scan.d.ts.map +1 -0
  162. package/dist/node/container.d.ts +256 -0
  163. package/dist/node/container.d.ts.map +1 -0
  164. package/dist/node/feature.d.ts +9 -0
  165. package/dist/node/feature.d.ts.map +1 -0
  166. package/dist/node/features/container-link.d.ts +213 -0
  167. package/dist/node/features/container-link.d.ts.map +1 -0
  168. package/dist/node/features/content-db.d.ts +354 -0
  169. package/dist/node/features/content-db.d.ts.map +1 -0
  170. package/dist/node/features/disk-cache.d.ts +236 -0
  171. package/dist/node/features/disk-cache.d.ts.map +1 -0
  172. package/dist/node/features/dns.d.ts +511 -0
  173. package/dist/node/features/dns.d.ts.map +1 -0
  174. package/dist/node/features/docker.d.ts +485 -0
  175. package/dist/node/features/docker.d.ts.map +1 -0
  176. package/dist/node/features/downloader.d.ts +73 -0
  177. package/dist/node/features/downloader.d.ts.map +1 -0
  178. package/dist/node/features/figlet-fonts.d.ts +4 -0
  179. package/dist/node/features/figlet-fonts.d.ts.map +1 -0
  180. package/dist/node/features/file-manager.d.ts +177 -0
  181. package/dist/node/features/file-manager.d.ts.map +1 -0
  182. package/dist/node/features/fs.d.ts +635 -0
  183. package/dist/node/features/fs.d.ts.map +1 -0
  184. package/dist/node/features/git.d.ts +329 -0
  185. package/dist/node/features/git.d.ts.map +1 -0
  186. package/dist/node/features/google-auth.d.ts +200 -0
  187. package/dist/node/features/google-auth.d.ts.map +1 -0
  188. package/dist/node/features/google-calendar.d.ts +194 -0
  189. package/dist/node/features/google-calendar.d.ts.map +1 -0
  190. package/dist/node/features/google-docs.d.ts +138 -0
  191. package/dist/node/features/google-docs.d.ts.map +1 -0
  192. package/dist/node/features/google-drive.d.ts +202 -0
  193. package/dist/node/features/google-drive.d.ts.map +1 -0
  194. package/dist/node/features/google-mail.d.ts +221 -0
  195. package/dist/node/features/google-mail.d.ts.map +1 -0
  196. package/dist/node/features/google-sheets.d.ts +157 -0
  197. package/dist/node/features/google-sheets.d.ts.map +1 -0
  198. package/dist/node/features/grep.d.ts +207 -0
  199. package/dist/node/features/grep.d.ts.map +1 -0
  200. package/dist/node/features/helpers.d.ts +236 -0
  201. package/dist/node/features/helpers.d.ts.map +1 -0
  202. package/dist/node/features/ink.d.ts +332 -0
  203. package/dist/node/features/ink.d.ts.map +1 -0
  204. package/dist/node/features/ipc-socket.d.ts +298 -0
  205. package/dist/node/features/ipc-socket.d.ts.map +1 -0
  206. package/dist/node/features/json-tree.d.ts +140 -0
  207. package/dist/node/features/json-tree.d.ts.map +1 -0
  208. package/dist/node/features/networking.d.ts +373 -0
  209. package/dist/node/features/networking.d.ts.map +1 -0
  210. package/dist/node/features/nlp.d.ts +125 -0
  211. package/dist/node/features/nlp.d.ts.map +1 -0
  212. package/dist/node/features/opener.d.ts +93 -0
  213. package/dist/node/features/opener.d.ts.map +1 -0
  214. package/dist/node/features/os.d.ts +168 -0
  215. package/dist/node/features/os.d.ts.map +1 -0
  216. package/dist/node/features/package-finder.d.ts +419 -0
  217. package/dist/node/features/package-finder.d.ts.map +1 -0
  218. package/dist/node/features/postgres.d.ts +173 -0
  219. package/dist/node/features/postgres.d.ts.map +1 -0
  220. package/dist/node/features/proc.d.ts +285 -0
  221. package/dist/node/features/proc.d.ts.map +1 -0
  222. package/dist/node/features/process-manager.d.ts +427 -0
  223. package/dist/node/features/process-manager.d.ts.map +1 -0
  224. package/dist/node/features/python.d.ts +477 -0
  225. package/dist/node/features/python.d.ts.map +1 -0
  226. package/dist/node/features/redis.d.ts +247 -0
  227. package/dist/node/features/redis.d.ts.map +1 -0
  228. package/dist/node/features/repl.d.ts +84 -0
  229. package/dist/node/features/repl.d.ts.map +1 -0
  230. package/dist/node/features/runpod.d.ts +527 -0
  231. package/dist/node/features/runpod.d.ts.map +1 -0
  232. package/dist/node/features/secure-shell.d.ts +145 -0
  233. package/dist/node/features/secure-shell.d.ts.map +1 -0
  234. package/dist/node/features/semantic-search.d.ts +207 -0
  235. package/dist/node/features/semantic-search.d.ts.map +1 -0
  236. package/dist/node/features/sqlite.d.ts +180 -0
  237. package/dist/node/features/sqlite.d.ts.map +1 -0
  238. package/dist/node/features/telegram.d.ts +173 -0
  239. package/dist/node/features/telegram.d.ts.map +1 -0
  240. package/dist/node/features/transpiler.d.ts +51 -0
  241. package/dist/node/features/transpiler.d.ts.map +1 -0
  242. package/dist/node/features/tts.d.ts +108 -0
  243. package/dist/node/features/tts.d.ts.map +1 -0
  244. package/dist/node/features/ui.d.ts +562 -0
  245. package/dist/node/features/ui.d.ts.map +1 -0
  246. package/dist/node/features/vault.d.ts +90 -0
  247. package/dist/node/features/vault.d.ts.map +1 -0
  248. package/dist/node/features/vm.d.ts +285 -0
  249. package/dist/node/features/vm.d.ts.map +1 -0
  250. package/dist/node/features/yaml-tree.d.ts +118 -0
  251. package/dist/node/features/yaml-tree.d.ts.map +1 -0
  252. package/dist/node/features/yaml.d.ts +127 -0
  253. package/dist/node/features/yaml.d.ts.map +1 -0
  254. package/dist/node.d.ts +67 -0
  255. package/dist/node.d.ts.map +1 -0
  256. package/dist/python/generated.d.ts +2 -0
  257. package/dist/python/generated.d.ts.map +1 -0
  258. package/dist/react/index.d.ts +36 -0
  259. package/dist/react/index.d.ts.map +1 -0
  260. package/dist/registry.d.ts +97 -0
  261. package/dist/registry.d.ts.map +1 -0
  262. package/dist/scaffolds/generated.d.ts +13 -0
  263. package/dist/scaffolds/generated.d.ts.map +1 -0
  264. package/dist/scaffolds/template.d.ts +11 -0
  265. package/dist/scaffolds/template.d.ts.map +1 -0
  266. package/dist/schemas/base.d.ts +254 -0
  267. package/dist/schemas/base.d.ts.map +1 -0
  268. package/dist/selector.d.ts +130 -0
  269. package/dist/selector.d.ts.map +1 -0
  270. package/dist/server.d.ts +89 -0
  271. package/dist/server.d.ts.map +1 -0
  272. package/dist/servers/express.d.ts +104 -0
  273. package/dist/servers/express.d.ts.map +1 -0
  274. package/dist/servers/mcp.d.ts +201 -0
  275. package/dist/servers/mcp.d.ts.map +1 -0
  276. package/dist/servers/socket.d.ts +121 -0
  277. package/dist/servers/socket.d.ts.map +1 -0
  278. package/dist/state.d.ts +24 -0
  279. package/dist/state.d.ts.map +1 -0
  280. package/dist/web/clients/socket.d.ts +37 -0
  281. package/dist/web/clients/socket.d.ts.map +1 -0
  282. package/dist/web/container.d.ts +55 -0
  283. package/dist/web/container.d.ts.map +1 -0
  284. package/dist/web/extension.d.ts +4 -0
  285. package/dist/web/extension.d.ts.map +1 -0
  286. package/dist/web/feature.d.ts +8 -0
  287. package/dist/web/feature.d.ts.map +1 -0
  288. package/dist/web/features/asset-loader.d.ts +35 -0
  289. package/dist/web/features/asset-loader.d.ts.map +1 -0
  290. package/dist/web/features/container-link.d.ts +167 -0
  291. package/dist/web/features/container-link.d.ts.map +1 -0
  292. package/dist/web/features/esbuild.d.ts +51 -0
  293. package/dist/web/features/esbuild.d.ts.map +1 -0
  294. package/dist/web/features/helpers.d.ts +140 -0
  295. package/dist/web/features/helpers.d.ts.map +1 -0
  296. package/dist/web/features/network.d.ts +69 -0
  297. package/dist/web/features/network.d.ts.map +1 -0
  298. package/dist/web/features/speech.d.ts +71 -0
  299. package/dist/web/features/speech.d.ts.map +1 -0
  300. package/dist/web/features/vault.d.ts +62 -0
  301. package/dist/web/features/vault.d.ts.map +1 -0
  302. package/dist/web/features/vm.d.ts +48 -0
  303. package/dist/web/features/vm.d.ts.map +1 -0
  304. package/dist/web/features/voice-recognition.d.ts +96 -0
  305. package/dist/web/features/voice-recognition.d.ts.map +1 -0
  306. package/dist/web/shims/isomorphic-vm.d.ts +22 -0
  307. package/dist/web/shims/isomorphic-vm.d.ts.map +1 -0
  308. package/docs/CLI.md +335 -0
  309. package/docs/CNAME +1 -0
  310. package/docs/README.md +60 -0
  311. package/docs/TABLE-OF-CONTENTS.md +183 -0
  312. package/docs/apis/clients/elevenlabs.md +308 -0
  313. package/docs/apis/clients/graph.md +107 -0
  314. package/docs/apis/clients/openai.md +429 -0
  315. package/docs/apis/clients/rest.md +161 -0
  316. package/docs/apis/clients/websocket.md +174 -0
  317. package/docs/apis/features/agi/assistant.md +625 -0
  318. package/docs/apis/features/agi/assistants-manager.md +282 -0
  319. package/docs/apis/features/agi/auto-assistant.md +279 -0
  320. package/docs/apis/features/agi/browser-use.md +802 -0
  321. package/docs/apis/features/agi/claude-code.md +884 -0
  322. package/docs/apis/features/agi/conversation-history.md +364 -0
  323. package/docs/apis/features/agi/conversation.md +548 -0
  324. package/docs/apis/features/agi/docs-reader.md +99 -0
  325. package/docs/apis/features/agi/file-tools.md +163 -0
  326. package/docs/apis/features/agi/luca-coder.md +407 -0
  327. package/docs/apis/features/agi/openai-codex.md +396 -0
  328. package/docs/apis/features/agi/openapi.md +138 -0
  329. package/docs/apis/features/agi/semantic-search.md +387 -0
  330. package/docs/apis/features/agi/skills-library.md +239 -0
  331. package/docs/apis/features/node/container-link.md +192 -0
  332. package/docs/apis/features/node/content-db.md +450 -0
  333. package/docs/apis/features/node/disk-cache.md +379 -0
  334. package/docs/apis/features/node/dns.md +652 -0
  335. package/docs/apis/features/node/docker.md +706 -0
  336. package/docs/apis/features/node/downloader.md +81 -0
  337. package/docs/apis/features/node/esbuild.md +60 -0
  338. package/docs/apis/features/node/file-manager.md +191 -0
  339. package/docs/apis/features/node/fs.md +1217 -0
  340. package/docs/apis/features/node/git.md +371 -0
  341. package/docs/apis/features/node/google-auth.md +193 -0
  342. package/docs/apis/features/node/google-calendar.md +202 -0
  343. package/docs/apis/features/node/google-docs.md +173 -0
  344. package/docs/apis/features/node/google-drive.md +246 -0
  345. package/docs/apis/features/node/google-mail.md +214 -0
  346. package/docs/apis/features/node/google-sheets.md +194 -0
  347. package/docs/apis/features/node/grep.md +292 -0
  348. package/docs/apis/features/node/helpers.md +164 -0
  349. package/docs/apis/features/node/ink.md +334 -0
  350. package/docs/apis/features/node/ipc-socket.md +249 -0
  351. package/docs/apis/features/node/json-tree.md +86 -0
  352. package/docs/apis/features/node/networking.md +316 -0
  353. package/docs/apis/features/node/nlp.md +133 -0
  354. package/docs/apis/features/node/opener.md +97 -0
  355. package/docs/apis/features/node/os.md +146 -0
  356. package/docs/apis/features/node/package-finder.md +392 -0
  357. package/docs/apis/features/node/postgres.md +234 -0
  358. package/docs/apis/features/node/proc.md +399 -0
  359. package/docs/apis/features/node/process-manager.md +305 -0
  360. package/docs/apis/features/node/python.md +604 -0
  361. package/docs/apis/features/node/redis.md +380 -0
  362. package/docs/apis/features/node/repl.md +88 -0
  363. package/docs/apis/features/node/runpod.md +674 -0
  364. package/docs/apis/features/node/secure-shell.md +176 -0
  365. package/docs/apis/features/node/semantic-search.md +408 -0
  366. package/docs/apis/features/node/sqlite.md +233 -0
  367. package/docs/apis/features/node/telegram.md +279 -0
  368. package/docs/apis/features/node/transpiler.md +74 -0
  369. package/docs/apis/features/node/tts.md +133 -0
  370. package/docs/apis/features/node/ui.md +701 -0
  371. package/docs/apis/features/node/vault.md +59 -0
  372. package/docs/apis/features/node/vm.md +75 -0
  373. package/docs/apis/features/node/yaml-tree.md +85 -0
  374. package/docs/apis/features/node/yaml.md +176 -0
  375. package/docs/apis/features/web/asset-loader.md +59 -0
  376. package/docs/apis/features/web/container-link.md +192 -0
  377. package/docs/apis/features/web/esbuild.md +54 -0
  378. package/docs/apis/features/web/helpers.md +164 -0
  379. package/docs/apis/features/web/network.md +44 -0
  380. package/docs/apis/features/web/speech.md +69 -0
  381. package/docs/apis/features/web/vault.md +59 -0
  382. package/docs/apis/features/web/vm.md +75 -0
  383. package/docs/apis/features/web/voice.md +84 -0
  384. package/docs/apis/servers/express.md +171 -0
  385. package/docs/apis/servers/mcp.md +238 -0
  386. package/docs/apis/servers/websocket.md +170 -0
  387. package/docs/bootstrap/CLAUDE.md +101 -0
  388. package/docs/bootstrap/SKILL.md +341 -0
  389. package/docs/bootstrap/templates/about-command.ts +41 -0
  390. package/docs/bootstrap/templates/docs-models.ts +22 -0
  391. package/docs/bootstrap/templates/docs-readme.md +43 -0
  392. package/docs/bootstrap/templates/example-feature.ts +53 -0
  393. package/docs/bootstrap/templates/health-endpoint.ts +15 -0
  394. package/docs/bootstrap/templates/luca-cli.ts +30 -0
  395. package/docs/bootstrap/templates/runme.md +54 -0
  396. package/docs/challenges/caching-proxy.md +16 -0
  397. package/docs/challenges/content-db-round-trip.md +14 -0
  398. package/docs/challenges/custom-command.md +9 -0
  399. package/docs/challenges/file-watcher-pipeline.md +11 -0
  400. package/docs/challenges/grep-audit-report.md +15 -0
  401. package/docs/challenges/multi-feature-dashboard.md +14 -0
  402. package/docs/challenges/process-orchestrator.md +17 -0
  403. package/docs/challenges/rest-api-server-with-client.md +12 -0
  404. package/docs/challenges/script-runner-with-vm.md +11 -0
  405. package/docs/challenges/simple-rest-api.md +15 -0
  406. package/docs/challenges/websocket-serve-and-client.md +11 -0
  407. package/docs/challenges/yaml-config-system.md +14 -0
  408. package/docs/command-system-overhaul.md +94 -0
  409. package/docs/documentation-audit.md +134 -0
  410. package/docs/examples/assistant/CORE.md +18 -0
  411. package/docs/examples/assistant/hooks.ts +3 -0
  412. package/docs/examples/assistant/tools.ts +10 -0
  413. package/docs/examples/assistant-hooks-reference.ts +171 -0
  414. package/docs/examples/assistant-with-process-manager.md +84 -0
  415. package/docs/examples/content-db.md +77 -0
  416. package/docs/examples/disk-cache.md +83 -0
  417. package/docs/examples/docker.md +101 -0
  418. package/docs/examples/downloader.md +70 -0
  419. package/docs/examples/entity.md +124 -0
  420. package/docs/examples/esbuild.md +80 -0
  421. package/docs/examples/feature-as-tool-provider.md +143 -0
  422. package/docs/examples/file-manager.md +82 -0
  423. package/docs/examples/fs.md +83 -0
  424. package/docs/examples/git.md +85 -0
  425. package/docs/examples/google-auth.md +88 -0
  426. package/docs/examples/google-calendar.md +94 -0
  427. package/docs/examples/google-docs.md +82 -0
  428. package/docs/examples/google-drive.md +96 -0
  429. package/docs/examples/google-sheets.md +95 -0
  430. package/docs/examples/grep.md +85 -0
  431. package/docs/examples/ink-blocks.md +75 -0
  432. package/docs/examples/ink-renderer.md +41 -0
  433. package/docs/examples/ink.md +103 -0
  434. package/docs/examples/ipc-socket.md +103 -0
  435. package/docs/examples/json-tree.md +91 -0
  436. package/docs/examples/networking.md +58 -0
  437. package/docs/examples/nlp.md +91 -0
  438. package/docs/examples/opener.md +78 -0
  439. package/docs/examples/os.md +72 -0
  440. package/docs/examples/package-finder.md +89 -0
  441. package/docs/examples/postgres.md +91 -0
  442. package/docs/examples/proc.md +81 -0
  443. package/docs/examples/process-manager.md +79 -0
  444. package/docs/examples/python.md +132 -0
  445. package/docs/examples/repl.md +93 -0
  446. package/docs/examples/runpod.md +119 -0
  447. package/docs/examples/secure-shell.md +92 -0
  448. package/docs/examples/sqlite.md +86 -0
  449. package/docs/examples/structured-output-with-assistants.md +144 -0
  450. package/docs/examples/telegram.md +77 -0
  451. package/docs/examples/tts.md +86 -0
  452. package/docs/examples/ui.md +80 -0
  453. package/docs/examples/vault.md +70 -0
  454. package/docs/examples/vm.md +86 -0
  455. package/docs/examples/websocket-ask-and-reply-example.md +128 -0
  456. package/docs/examples/yaml-tree.md +93 -0
  457. package/docs/examples/yaml.md +104 -0
  458. package/docs/ideas/assistant-factory-pattern.md +142 -0
  459. package/docs/in-memory-fs.md +4 -0
  460. package/docs/introspection-audit.md +49 -0
  461. package/docs/introspection.md +164 -0
  462. package/docs/mcp/readme.md +162 -0
  463. package/docs/models.ts +41 -0
  464. package/docs/philosophy.md +86 -0
  465. package/docs/principles.md +7 -0
  466. package/docs/prompts/audit-codebase-for-failures-to-use-the-container.md +34 -0
  467. package/docs/prompts/check-for-undocumented-features.md +27 -0
  468. package/docs/prompts/mcp-test-easy-command.md +27 -0
  469. package/docs/scaffolds/client.md +149 -0
  470. package/docs/scaffolds/command.md +120 -0
  471. package/docs/scaffolds/endpoint.md +171 -0
  472. package/docs/scaffolds/feature.md +158 -0
  473. package/docs/scaffolds/selector.md +91 -0
  474. package/docs/scaffolds/server.md +196 -0
  475. package/docs/selectors.md +115 -0
  476. package/docs/sessions/custom-command/attempt-log-2.md +195 -0
  477. package/docs/sessions/file-watcher-pipeline/attempt-log-1.md +728 -0
  478. package/docs/sessions/file-watcher-pipeline/attempt-log-2.md +555 -0
  479. package/docs/sessions/grep-audit-report/attempt-log-1.md +289 -0
  480. package/docs/sessions/multi-feature-dashboard/attempt-log-2.md +679 -0
  481. package/docs/sessions/rest-api-server-with-client/attempt-log-1.md +1 -0
  482. package/docs/sessions/rest-api-server-with-client/attempt-log-3.md +920 -0
  483. package/docs/sessions/simple-rest-api/attempt-log-1.md +593 -0
  484. package/docs/sessions/websocket-serve-and-client/attempt-log-2.md +995 -0
  485. package/docs/tutorials/00-bootstrap.md +166 -0
  486. package/docs/tutorials/01-getting-started.md +106 -0
  487. package/docs/tutorials/02-container.md +210 -0
  488. package/docs/tutorials/03-scripts.md +194 -0
  489. package/docs/tutorials/04-features-overview.md +196 -0
  490. package/docs/tutorials/05-state-and-events.md +171 -0
  491. package/docs/tutorials/06-servers.md +157 -0
  492. package/docs/tutorials/07-endpoints.md +198 -0
  493. package/docs/tutorials/08-commands.md +252 -0
  494. package/docs/tutorials/09-clients.md +162 -0
  495. package/docs/tutorials/10-creating-features.md +203 -0
  496. package/docs/tutorials/11-contentbase.md +191 -0
  497. package/docs/tutorials/12-assistants.md +215 -0
  498. package/docs/tutorials/13-introspection.md +157 -0
  499. package/docs/tutorials/14-type-system.md +174 -0
  500. package/docs/tutorials/15-project-patterns.md +222 -0
  501. package/docs/tutorials/16-google-features.md +534 -0
  502. package/docs/tutorials/17-tui-blocks.md +530 -0
  503. package/docs/tutorials/18-semantic-search.md +334 -0
  504. package/docs/tutorials/19-python-sessions.md +401 -0
  505. package/docs/tutorials/20-browser-esm.md +234 -0
  506. package/index.html +1430 -0
  507. package/index.ts +1 -0
  508. package/install.sh +84 -0
  509. package/luca.cli.ts +16 -0
  510. package/luca.console.ts +9 -0
  511. package/main.py +6 -0
  512. package/package.json +219 -58
  513. package/public/index.html +1430 -0
  514. package/public/slides-ai-native.html +902 -0
  515. package/public/slides-intro.html +974 -0
  516. package/pyproject.toml +7 -0
  517. package/scripts/build-web.ts +28 -0
  518. package/scripts/examples/ask-luca-expert.ts +42 -0
  519. package/scripts/examples/assistant-questions.ts +12 -0
  520. package/scripts/examples/excalidraw-expert.ts +75 -0
  521. package/scripts/examples/expert-chat.ts +0 -0
  522. package/scripts/examples/file-manager.ts +14 -0
  523. package/scripts/examples/ideas.ts +12 -0
  524. package/scripts/examples/interactive-chat.ts +20 -0
  525. package/scripts/examples/openai-tool-calls.ts +113 -0
  526. package/scripts/examples/opening-a-web-browser.ts +5 -0
  527. package/scripts/examples/telegram-bot.ts +79 -0
  528. package/scripts/examples/using-assistant-with-mcp.ts +555 -0
  529. package/scripts/examples/using-claude-code.ts +10 -0
  530. package/scripts/examples/using-contentdb.ts +35 -0
  531. package/scripts/examples/using-conversations.ts +35 -0
  532. package/scripts/examples/using-disk-cache.ts +10 -0
  533. package/scripts/examples/using-docker-shell.ts +75 -0
  534. package/scripts/examples/using-elevenlabs.ts +25 -0
  535. package/scripts/examples/using-google-calendar.ts +57 -0
  536. package/scripts/examples/using-google-docs.ts +74 -0
  537. package/scripts/examples/using-google-drive.ts +74 -0
  538. package/scripts/examples/using-google-sheets.ts +89 -0
  539. package/scripts/examples/using-nlp.ts +55 -0
  540. package/scripts/examples/using-ollama.ts +11 -0
  541. package/scripts/examples/using-postgres.ts +55 -0
  542. package/scripts/examples/using-runpod.ts +32 -0
  543. package/scripts/examples/using-tts.ts +40 -0
  544. package/scripts/scaffold.ts +391 -0
  545. package/scripts/scratch.ts +15 -0
  546. package/scripts/stamp-build.sh +12 -0
  547. package/scripts/test-assistant-hooks.ts +13 -0
  548. package/scripts/test-docs-reader.ts +10 -0
  549. package/scripts/test-linux-binary.sh +80 -0
  550. package/scripts/update-introspection-data.ts +58 -0
  551. package/src/agi/README.md +14 -0
  552. package/src/agi/container.server.ts +152 -0
  553. package/src/agi/endpoints/ask.ts +60 -0
  554. package/src/agi/endpoints/conversations/[id].ts +45 -0
  555. package/src/agi/endpoints/conversations.ts +31 -0
  556. package/src/agi/endpoints/experts.ts +37 -0
  557. package/src/agi/feature.ts +13 -0
  558. package/src/agi/features/agent-memory.ts +694 -0
  559. package/src/agi/features/assistant.ts +1624 -0
  560. package/src/agi/features/assistants-manager.ts +418 -0
  561. package/src/agi/features/autonomous-assistant.ts +431 -0
  562. package/src/agi/features/browser-use.ts +653 -0
  563. package/src/agi/features/claude-code.ts +1538 -0
  564. package/src/agi/features/coding-tools.ts +175 -0
  565. package/src/agi/features/conversation-history.ts +495 -0
  566. package/src/agi/features/conversation.ts +1323 -0
  567. package/src/agi/features/docs-reader.ts +167 -0
  568. package/src/agi/features/file-tools.ts +293 -0
  569. package/src/agi/features/luca-coder.ts +639 -0
  570. package/src/agi/features/openai-codex.ts +651 -0
  571. package/src/agi/features/openapi.ts +445 -0
  572. package/src/agi/features/skills-library.ts +478 -0
  573. package/src/agi/index.ts +6 -0
  574. package/src/agi/lib/interceptor-chain.ts +89 -0
  575. package/src/agi/lib/token-counter.ts +122 -0
  576. package/src/bootstrap/generated.ts +9792 -0
  577. package/src/browser.ts +25 -0
  578. package/src/bus.ts +122 -0
  579. package/src/cli/build-info.ts +4 -0
  580. package/src/cli/cli.ts +355 -0
  581. package/src/client.ts +170 -0
  582. package/src/clients/civitai/index.ts +537 -0
  583. package/src/clients/client-template.ts +41 -0
  584. package/src/clients/comfyui/index.ts +604 -0
  585. package/src/clients/elevenlabs/index.ts +317 -0
  586. package/src/clients/graph.ts +87 -0
  587. package/src/clients/openai/index.ts +456 -0
  588. package/src/clients/rest.ts +207 -0
  589. package/src/clients/supabase/index.ts +357 -0
  590. package/src/clients/voicebox/index.ts +300 -0
  591. package/src/clients/websocket.ts +251 -0
  592. package/src/command.ts +505 -0
  593. package/src/commands/bootstrap.ts +244 -0
  594. package/src/commands/chat.ts +308 -0
  595. package/src/commands/code.ts +371 -0
  596. package/src/commands/console.ts +189 -0
  597. package/src/commands/describe.ts +243 -0
  598. package/src/commands/eval.ts +121 -0
  599. package/src/commands/help.ts +240 -0
  600. package/src/commands/index.ts +19 -0
  601. package/src/commands/introspect.ts +218 -0
  602. package/src/commands/mcp.ts +64 -0
  603. package/src/commands/prompt.ts +982 -0
  604. package/src/commands/run.ts +278 -0
  605. package/src/commands/sandbox-mcp.ts +343 -0
  606. package/src/commands/save-api-docs.ts +51 -0
  607. package/src/commands/scaffold.ts +225 -0
  608. package/src/commands/select.ts +99 -0
  609. package/src/commands/serve.ts +208 -0
  610. package/src/container-describer.ts +1084 -0
  611. package/src/container.ts +1186 -0
  612. package/src/endpoint.ts +365 -0
  613. package/src/entity.ts +173 -0
  614. package/src/feature.ts +118 -0
  615. package/src/graft.ts +181 -0
  616. package/src/hash-object.ts +97 -0
  617. package/src/helper.ts +849 -0
  618. package/src/introspection/generated.agi.ts +40208 -0
  619. package/src/introspection/generated.node.ts +28686 -0
  620. package/src/introspection/generated.web.ts +2251 -0
  621. package/src/introspection/index.ts +296 -0
  622. package/src/introspection/scan.ts +1131 -0
  623. package/src/node/container.ts +409 -0
  624. package/src/node/feature.ts +13 -0
  625. package/src/node/features/container-link.ts +559 -0
  626. package/src/node/features/content-db.ts +812 -0
  627. package/src/node/features/disk-cache.ts +388 -0
  628. package/src/node/features/dns.ts +669 -0
  629. package/src/node/features/docker.ts +921 -0
  630. package/src/node/features/downloader.ts +79 -0
  631. package/src/node/features/figlet-fonts.ts +600 -0
  632. package/src/node/features/file-manager.ts +535 -0
  633. package/src/node/features/fs.ts +1050 -0
  634. package/src/node/features/git.ts +592 -0
  635. package/src/node/features/google-auth.ts +504 -0
  636. package/src/node/features/google-calendar.ts +306 -0
  637. package/src/node/features/google-docs.ts +412 -0
  638. package/src/node/features/google-drive.ts +346 -0
  639. package/src/node/features/google-mail.ts +540 -0
  640. package/src/node/features/google-sheets.ts +286 -0
  641. package/src/node/features/grep.ts +427 -0
  642. package/src/node/features/helpers.ts +735 -0
  643. package/src/node/features/ink.ts +490 -0
  644. package/src/node/features/ipc-socket.ts +649 -0
  645. package/src/node/features/json-tree.ts +170 -0
  646. package/src/node/features/networking.ts +961 -0
  647. package/src/node/features/nlp.ts +212 -0
  648. package/src/node/features/opener.ts +180 -0
  649. package/src/node/features/os.ts +403 -0
  650. package/src/node/features/package-finder.ts +540 -0
  651. package/src/node/features/postgres.ts +289 -0
  652. package/src/node/features/proc.ts +503 -0
  653. package/src/node/features/process-manager.ts +844 -0
  654. package/src/node/features/python.ts +906 -0
  655. package/src/node/features/redis.ts +446 -0
  656. package/src/node/features/repl.ts +212 -0
  657. package/src/node/features/runpod.ts +811 -0
  658. package/src/node/features/secure-shell.ts +267 -0
  659. package/src/node/features/semantic-search.ts +935 -0
  660. package/src/node/features/sqlite.ts +289 -0
  661. package/src/node/features/telegram.ts +343 -0
  662. package/src/node/features/transpiler.ts +161 -0
  663. package/src/node/features/tts.ts +185 -0
  664. package/src/node/features/ui.ts +786 -0
  665. package/src/node/features/vault.ts +153 -0
  666. package/src/node/features/vm.ts +462 -0
  667. package/src/node/features/yaml-tree.ts +148 -0
  668. package/src/node/features/yaml.ts +133 -0
  669. package/src/node.ts +76 -0
  670. package/src/python/bridge.py +220 -0
  671. package/src/python/generated.ts +227 -0
  672. package/src/react/index.ts +175 -0
  673. package/src/registry.ts +210 -0
  674. package/src/scaffolds/generated.ts +1815 -0
  675. package/src/scaffolds/template.ts +46 -0
  676. package/src/schemas/base.ts +296 -0
  677. package/src/selector.ts +352 -0
  678. package/src/server.ts +229 -0
  679. package/src/servers/express.ts +283 -0
  680. package/src/servers/mcp.ts +802 -0
  681. package/src/servers/socket.ts +258 -0
  682. package/src/state.ts +101 -0
  683. package/src/web/clients/socket.ts +99 -0
  684. package/src/web/container.ts +75 -0
  685. package/src/web/extension.ts +30 -0
  686. package/src/web/feature.ts +12 -0
  687. package/src/web/features/asset-loader.ts +72 -0
  688. package/src/web/features/container-link.ts +382 -0
  689. package/src/web/features/esbuild.ts +93 -0
  690. package/src/web/features/helpers.ts +269 -0
  691. package/src/web/features/network.ts +85 -0
  692. package/src/web/features/speech.ts +104 -0
  693. package/src/web/features/vault.ts +207 -0
  694. package/src/web/features/vm.ts +85 -0
  695. package/src/web/features/voice-recognition.ts +161 -0
  696. package/src/web/shims/isomorphic-vm.ts +149 -0
  697. package/test/assistant-hooks.test.ts +306 -0
  698. package/test/assistant.test.ts +81 -0
  699. package/test/bus.test.ts +134 -0
  700. package/test/clients-servers.test.ts +217 -0
  701. package/test/command.test.ts +267 -0
  702. package/test/container-link.test.ts +274 -0
  703. package/test/conversation.test.ts +220 -0
  704. package/test/features.test.ts +160 -0
  705. package/test/fork-and-research.test.ts +450 -0
  706. package/test/integration.test.ts +787 -0
  707. package/test/interceptor-chain.test.ts +61 -0
  708. package/test/node-container.test.ts +121 -0
  709. package/test/python-session.test.ts +105 -0
  710. package/test/rate-limit.test.ts +272 -0
  711. package/test/semantic-search.test.ts +550 -0
  712. package/test/state.test.ts +121 -0
  713. package/test/vm-context.test.ts +146 -0
  714. package/test/vm-loadmodule.test.ts +213 -0
  715. package/test/websocket-ask.test.ts +101 -0
  716. package/test-integration/assistant.test.ts +138 -0
  717. package/test-integration/assistants-manager.test.ts +113 -0
  718. package/test-integration/claude-code.test.ts +98 -0
  719. package/test-integration/conversation-history.test.ts +205 -0
  720. package/test-integration/conversation.test.ts +137 -0
  721. package/test-integration/elevenlabs.test.ts +55 -0
  722. package/test-integration/google-services.test.ts +80 -0
  723. package/test-integration/helpers.ts +89 -0
  724. package/test-integration/memory.test.ts +204 -0
  725. package/test-integration/openai-codex.test.ts +93 -0
  726. package/test-integration/runpod.test.ts +58 -0
  727. package/test-integration/server-endpoints.test.ts +97 -0
  728. package/test-integration/telegram.test.ts +46 -0
  729. package/tsconfig.build.json +12 -0
  730. package/tsconfig.json +58 -0
  731. package/uv.lock +8 -0
  732. package/LICENSE +0 -21
  733. package/dist/cli/cli.js +0 -48
  734. package/dist/cli/common.d.ts +0 -2
  735. package/dist/cli/common.js +0 -6
  736. package/dist/cli/index.d.ts +0 -2
  737. package/dist/cli/index.js +0 -5
  738. package/dist/cli/run.d.ts +0 -1
  739. package/dist/cli/run.js +0 -38
  740. package/dist/core/index.d.ts +0 -4
  741. package/dist/core/index.js +0 -32
  742. package/dist/core/read.d.ts +0 -2
  743. package/dist/core/read.js +0 -29
  744. package/dist/core/request.d.ts +0 -1
  745. package/dist/core/request.js +0 -2
  746. package/dist/core/write.d.ts +0 -2
  747. package/dist/core/write.js +0 -21
  748. package/dist/index.d.ts +0 -1
  749. package/dist/index.js +0 -5
  750. package/dist/utils/common.d.ts +0 -9
  751. package/dist/utils/common.js +0 -57
  752. package/dist/utils/consts.d.ts +0 -3
  753. package/dist/utils/consts.js +0 -11
  754. package/dist/utils/dict.d.ts +0 -1
  755. package/dist/utils/dict.js +0 -7
  756. package/dist/utils/index.d.ts +0 -5
  757. package/dist/utils/index.js +0 -21
  758. package/dist/utils/log.d.ts +0 -1
  759. package/dist/utils/log.js +0 -5
  760. package/dist/utils/types.d.ts +0 -1
  761. package/dist/utils/types.js +0 -2
  762. package/dist/utils/utils.test.d.ts +0 -1
  763. package/dist/utils/utils.test.js +0 -7
@@ -0,0 +1,132 @@
1
+ ---
2
+ title: "Python"
3
+ tags: [python, scripting, virtualenv, integration]
4
+ lastTested: null
5
+ lastTestPassed: null
6
+ ---
7
+
8
+ # python
9
+
10
+ Python virtual machine feature for executing Python code, managing environments, and installing dependencies. Automatically detects uv, conda, venv, or system Python.
11
+
12
+ ## Overview
13
+
14
+ The `python` feature provides a bridge between Luca and the Python ecosystem. It auto-detects the best available Python environment (uv, conda, venv, system), can install project dependencies, and execute Python code with variable injection and local variable capture. Requires Python to be installed on the host.
15
+
16
+ ## Enabling the Feature
17
+
18
+ ```ts
19
+ const python = container.feature('python', { enable: true })
20
+ console.log('Python feature enabled:', python.state.get('enabled'))
21
+ console.log('Python ready:', python.state.get('isReady'))
22
+ ```
23
+
24
+ ## Exploring the API
25
+
26
+ ```ts
27
+ const docs = container.features.describe('python')
28
+ console.log(docs)
29
+ ```
30
+
31
+ ## Environment Detection
32
+
33
+ ```ts
34
+ const python = container.feature('python')
35
+ await python.detectEnvironment()
36
+ console.log('Environment type:', python.state.get('environmentType'))
37
+ console.log('Python path:', python.state.get('pythonPath'))
38
+ ```
39
+
40
+ ## Running Inline Code
41
+
42
+ Execute Python code directly and capture the output.
43
+
44
+ ```ts skip
45
+ const result = await python.execute('print("Hello from Python!")')
46
+ console.log('stdout:', result.stdout)
47
+ console.log('exit code:', result.exitCode)
48
+ ```
49
+
50
+ You can also pass variables into the Python context and capture locals after execution.
51
+
52
+ ```ts skip
53
+ const result = await python.execute(
54
+ 'greeting = f"Hello {name}, you are {age}!";\nprint(greeting)',
55
+ { name: 'Alice', age: 30 },
56
+ { captureLocals: true }
57
+ )
58
+ console.log('stdout:', result.stdout)
59
+ console.log('locals:', result.locals)
60
+ ```
61
+
62
+ The `captureLocals` option serializes all local variables from the script back to JavaScript as JSON.
63
+
64
+ ## Running a Script File
65
+
66
+ Execute an existing `.py` file and capture its output.
67
+
68
+ ```ts skip
69
+ const result = await python.executeFile('/path/to/analysis.py')
70
+ console.log('stdout:', result.stdout)
71
+ console.log('stderr:', result.stderr)
72
+ ```
73
+
74
+ ## Creating a Virtual Environment
75
+
76
+ Install project dependencies using the auto-detected package manager.
77
+
78
+ ```ts skip
79
+ const python = container.feature('python', {
80
+ dir: '/path/to/python-project',
81
+ installCommand: 'pip install -r requirements.txt'
82
+ })
83
+ const result = await python.installDependencies()
84
+ console.log('Install exit code:', result.exitCode)
85
+ ```
86
+
87
+ When no `installCommand` is provided, the feature infers the correct command from the detected environment type (e.g., `uv sync` for uv, `pip install -e .` for venv).
88
+
89
+ ## Persistent Sessions
90
+
91
+ Start a long-lived Python process where state persists across calls. Ideal for working inside real Python codebases, data analysis, and anything with expensive setup.
92
+
93
+ ```ts skip
94
+ const python = container.feature('python', { dir: '/path/to/python-project' })
95
+ await python.enable()
96
+ await python.startSession()
97
+
98
+ // State persists across calls
99
+ await python.run('x = 42')
100
+ const result = await python.run('print(x * 2)')
101
+ console.log('stdout:', result.stdout) // '84\n'
102
+
103
+ // Evaluate expressions and get values back
104
+ const val = await python.eval('x + 1')
105
+ console.log('eval:', val) // 43
106
+
107
+ // Import project modules (sys.path is set up automatically)
108
+ await python.importModule('json')
109
+ const encoded = await python.call('json.dumps', [{ key: 'value' }], { indent: 2 })
110
+ console.log('call:', encoded)
111
+
112
+ // Inspect the namespace
113
+ const locals = await python.getLocals()
114
+ console.log('locals:', Object.keys(locals))
115
+
116
+ // Errors don't crash the session
117
+ const bad = await python.run('raise ValueError("oops")')
118
+ console.log('error:', bad.error) // 'oops'
119
+
120
+ // Still alive
121
+ const check = await python.run('print("still here")')
122
+ console.log(check.stdout) // 'still here\n'
123
+
124
+ // Clean up
125
+ await python.stopSession()
126
+ ```
127
+
128
+ See the [Python Sessions tutorial](../tutorials/19-python-sessions.md) for real-world patterns (data pipelines, Django, ML models).
129
+
130
+ ## Summary
131
+
132
+ The `python` feature bridges Luca and Python by auto-detecting environments, managing dependencies, and providing both stateless execution and persistent sessions. It supports uv, conda, venv, and system Python installations.
@@ -0,0 +1,93 @@
1
+ ---
2
+ title: "REPL"
3
+ tags: [repl, interactive, debugging, console]
4
+ lastTested: null
5
+ lastTestPassed: null
6
+ ---
7
+
8
+ # repl
9
+
10
+ Interactive read-eval-print loop with tab completion, history, and full container access.
11
+
12
+ ## Overview
13
+
14
+ The `repl` feature is an on-demand feature that launches an interactive REPL session inside a VM context populated with the container and all its helpers. It supports tab completion for dot-notation property access, command history persistence, and top-level await. Since it is interactive, it cannot run inside a markdown code block -- instead, the typical workflow is to run `luca run somefile.md --console` which executes all code blocks first and then drops into a REPL with the accumulated context.
15
+
16
+ ## Feature Documentation
17
+
18
+ Let us inspect the feature's built-in documentation.
19
+
20
+ ```ts
21
+ const desc = container.features.describe('repl')
22
+ console.log(desc)
23
+ ```
24
+
25
+ The main method is `start(options?)` which begins the interactive session. It accepts an optional context object and history path.
26
+
27
+ ## Enabling the Feature
28
+
29
+ We can enable the feature and inspect its state without starting the interactive session.
30
+
31
+ ```ts
32
+ const repl = container.feature('repl', { enable: true })
33
+ console.log('REPL enabled:', repl.state.enabled)
34
+ console.log('REPL started:', repl.state.started)
35
+ ```
36
+
37
+ The feature is enabled but not started. Starting it would block execution waiting for interactive input, which is not suitable for a markdown runner context.
38
+
39
+ ## Configuration Options
40
+
41
+ The REPL feature accepts several options for customization.
42
+
43
+ ```ts
44
+ const options = {
45
+ prompt: 'Custom prompt string displayed before each input line',
46
+ historyPath: 'Path to a file where command history is persisted between sessions',
47
+ context: 'Additional variables injected into the VM evaluation context',
48
+ }
49
+ for (const [key, desc] of Object.entries(options)) {
50
+ console.log(` ${key}: ${desc}`)
51
+ }
52
+ ```
53
+
54
+ When you provide a `context` object to `start()`, those variables become globally available in the REPL session alongside the container and its helpers.
55
+
56
+ ## How to Use the REPL
57
+
58
+ The recommended way to use the REPL is through the `--console` flag on `luca run`.
59
+
60
+ ```ts
61
+ console.log('Usage patterns:')
62
+ console.log('')
63
+ console.log(' luca run script.md --console')
64
+ console.log(' Run all code blocks, then drop into REPL with accumulated context')
65
+ console.log('')
66
+ console.log(' luca run setup.md --console')
67
+ console.log(' Execute setup code, then explore interactively')
68
+ console.log('')
69
+ console.log('Inside the REPL:')
70
+ console.log(' - Tab completion works on all container properties')
71
+ console.log(' - Top-level await is supported')
72
+ console.log(' - Type .exit or exit to quit')
73
+ ```
74
+
75
+ This is especially powerful when combined with runnable markdown files: you define your setup and data loading in code blocks, then explore the results interactively in the REPL.
76
+
77
+ ## REPL Context
78
+
79
+ When launched via `--console`, the REPL inherits everything from the markdown execution context. This means all variables, enabled features, and loaded data carry over.
80
+
81
+ ```ts
82
+ console.log('The REPL context automatically includes:')
83
+ const globals = ['container', 'fs', 'git', 'proc', 'grep', 'os', 'networking', 'ui', 'vm', 'esbuild', 'console']
84
+ for (const name of globals) {
85
+ console.log(` ${name}`)
86
+ }
87
+ console.log('')
88
+ console.log('Plus any variables defined in preceding code blocks.')
89
+ ```
90
+
91
+ ## Summary
92
+
93
+ This demo covered the `repl` feature, which provides an interactive REPL with tab completion, history, and async support. Since it is interactive by nature, it is best used via `luca run somefile.md --console` to combine scripted setup with interactive exploration. The REPL inherits the full container context plus any variables accumulated during markdown execution.
@@ -0,0 +1,119 @@
1
+ ---
2
+ title: "RunPod GPU Cloud"
3
+ tags: [runpod, gpu, cloud, pods, ssh, infrastructure]
4
+ lastTested: null
5
+ lastTestPassed: null
6
+ ---
7
+
8
+ # runpod
9
+
10
+ GPU cloud pod management via the RunPod REST API and CLI. Provision GPU instances, manage network volumes, SSH into pods, and transfer files.
11
+
12
+ ## Overview
13
+
14
+ Use the `runpod` feature when you need to manage GPU cloud infrastructure. It provides a complete interface for creating and managing RunPod GPU pods, including template selection, volume management, SSH access, file transfers, and lifecycle operations (start, stop, remove). Integrates with the `secureShell` feature for remote command execution.
15
+
16
+ Requires a `RUNPOD_API_KEY` environment variable or an `apiKey` option.
17
+
18
+ ## Enabling the Feature
19
+
20
+ ```ts
21
+ const runpod = container.feature('runpod', {
22
+ dataCenterId: 'US-TX-3'
23
+ })
24
+ console.log('RunPod feature created')
25
+ console.log('Data center:', runpod.dataCenterId)
26
+ console.log('API key configured:', !!runpod.apiKey)
27
+ ```
28
+
29
+ ## API Documentation
30
+
31
+ ```ts
32
+ const info = await container.features.describe('runpod')
33
+ console.log(info)
34
+ ```
35
+
36
+ ## Listing Pods and GPUs
37
+
38
+ Query your existing pods and available GPU types.
39
+
40
+ ```ts skip
41
+ const pods = await runpod.getpods()
42
+ pods.forEach(p => console.log(`${p.name}: ${p.desiredStatus} - $${p.costPerHr}/hr`))
43
+
44
+ const gpus = await runpod.listSecureGPUs()
45
+ gpus.forEach(g => console.log(`${g.gpuType}: $${g.ondemandPrice}/hr`))
46
+ ```
47
+
48
+ Use `getpods()` for detailed REST API data including port mappings and public IP, or `listPods()` for a quick summary via the CLI.
49
+
50
+ ## Creating and Managing Pods
51
+
52
+ Provision a new GPU pod and manage its lifecycle.
53
+
54
+ ```ts skip
55
+ const pod = await runpod.createPod({
56
+ name: 'my-training-pod',
57
+ gpuTypeId: 'NVIDIA RTX 4090',
58
+ templateId: 'abc123',
59
+ volumeInGb: 50,
60
+ containerDiskInGb: 50,
61
+ ports: ['8888/http', '22/tcp']
62
+ })
63
+ console.log(`Pod ${pod.id} created`)
64
+
65
+ const ready = await runpod.waitForPod(pod.id, 'RUNNING', { timeout: 120000 })
66
+ console.log('Pod is running:', ready.desiredStatus)
67
+ ```
68
+
69
+ After creation, use `waitForPod()` to poll until the pod reaches the desired status.
70
+
71
+ ## Pod Lifecycle
72
+
73
+ ```ts skip
74
+ await runpod.stopPod('pod-abc123')
75
+ console.log('Pod stopped')
76
+
77
+ await runpod.startPod('pod-abc123')
78
+ console.log('Pod restarted')
79
+
80
+ await runpod.removePod('pod-abc123')
81
+ console.log('Pod permanently deleted')
82
+ ```
83
+
84
+ Stopping a pod preserves its disk; removing it is permanent.
85
+
86
+ ## SSH and Remote Execution
87
+
88
+ Connect to a running pod and execute commands remotely.
89
+
90
+ ```ts skip
91
+ const shell = await runpod.getShell('pod-abc123')
92
+ const output = await shell.exec('nvidia-smi')
93
+ console.log(output)
94
+
95
+ const ls = await shell.exec('ls /workspace')
96
+ console.log('Workspace files:', ls)
97
+ ```
98
+
99
+ The `getShell()` method uses REST API data for reliable SSH connections. Use it over `createRemoteShell()` which depends on the CLI.
100
+
101
+ ## Network Volumes
102
+
103
+ Manage persistent storage that survives pod restarts.
104
+
105
+ ```ts skip
106
+ const vol = await runpod.createVolume({ name: 'my-models', size: 100 })
107
+ console.log(`Created volume ${vol.id}`)
108
+
109
+ const volumes = await runpod.listVolumes()
110
+ volumes.forEach(v => console.log(`${v.name}: ${v.size}GB`))
111
+
112
+ await runpod.removeVolume('vol-abc123')
113
+ ```
114
+
115
+ Attach network volumes to pods via the `networkVolumeId` option in `createPod()`.
116
+
117
+ ## Summary
118
+
119
+ The `runpod` feature provides complete GPU cloud management. Create pods from templates, manage lifecycle (start/stop/remove), SSH into running pods, and manage network storage volumes. Supports polling for readiness and file transfer operations. Key methods: `createPod()`, `getpods()`, `waitForPod()`, `getShell()`, `listVolumes()`, `createVolume()`.
@@ -0,0 +1,92 @@
1
+ ---
2
+ title: "Secure Shell"
3
+ tags: [secureShell, ssh, scp, remote, deployment]
4
+ lastTested: null
5
+ lastTestPassed: null
6
+ ---
7
+
8
+ # secureShell
9
+
10
+ SSH command execution and SCP file transfers. Uses the system `ssh` and `scp` binaries to run commands on remote hosts and transfer files securely.
11
+
12
+ ## Overview
13
+
14
+ The `secureShell` feature provides an SSH client for executing commands on remote machines and transferring files via SCP. It supports both key-based and password-based authentication. All operations require a reachable SSH target host, so the actual connection and command examples use skip blocks.
15
+
16
+ ## Enabling the Feature
17
+
18
+ ```ts
19
+ const ssh = container.feature('secureShell', {
20
+ host: 'example.com',
21
+ username: 'deploy',
22
+ key: '~/.ssh/id_ed25519',
23
+ enable: true
24
+ })
25
+ console.log('SSH enabled:', ssh.state.get('enabled'))
26
+ ```
27
+
28
+ ## Exploring the API
29
+
30
+ ```ts
31
+ const docs = container.features.describe('secureShell')
32
+ console.log(docs)
33
+ ```
34
+
35
+ ## Feature Options
36
+
37
+ ```ts
38
+ const ssh = container.feature('secureShell', {
39
+ host: '192.168.1.100',
40
+ port: 22,
41
+ username: 'admin',
42
+ key: '~/.ssh/id_rsa'
43
+ })
44
+ console.log('Host configured:', ssh.options.host)
45
+ console.log('Port:', ssh.options.port || 22)
46
+ ```
47
+
48
+ ## Testing the Connection
49
+
50
+ Verify that the SSH target is reachable before running commands.
51
+
52
+ ```ts skip
53
+ const ok = await ssh.testConnection()
54
+ console.log('Connection OK:', ok)
55
+ console.log('State connected:', ssh.state.get('connected'))
56
+ ```
57
+
58
+ The `testConnection` method runs a simple echo command on the remote host. If it succeeds, `state.connected` is set to `true`.
59
+
60
+ ## Executing a Remote Command
61
+
62
+ Run a shell command on the remote host and capture its output.
63
+
64
+ ```ts skip
65
+ const uptime = await ssh.exec('uptime')
66
+ console.log('Remote uptime:', uptime)
67
+
68
+ const listing = await ssh.exec('ls -la /var/log')
69
+ console.log(listing)
70
+ ```
71
+
72
+ The `exec` method returns the command's stdout as a string. It uses the configured host, username, and authentication credentials.
73
+
74
+ ## Uploading and Downloading Files
75
+
76
+ Transfer files between the local machine and the remote host using SCP.
77
+
78
+ ```ts skip
79
+ await ssh.upload('./build/app.tar.gz', '/opt/releases/app.tar.gz')
80
+ console.log('Upload complete')
81
+ ```
82
+
83
+ ```ts skip
84
+ await ssh.download('/var/log/app.log', './logs/app.log')
85
+ console.log('Download complete')
86
+ ```
87
+
88
+ Both methods use the same authentication credentials configured on the feature instance. Paths on the remote side are absolute or relative to the user's home directory.
89
+
90
+ ## Summary
91
+
92
+ The `secureShell` feature wraps the system `ssh` and `scp` commands to provide remote command execution and file transfers. It supports key-based and password-based authentication, connection testing, and maintains connection state on the feature instance.
@@ -0,0 +1,86 @@
1
+ ---
2
+ title: "SQLite"
3
+ tags: [sqlite, database, sql, storage]
4
+ lastTested: null
5
+ lastTestPassed: null
6
+ ---
7
+
8
+ # sqlite
9
+
10
+ In-process SQLite database via Bun's native binding. Create tables, insert rows, and query data with parameterized SQL or tagged templates.
11
+
12
+ ## Overview
13
+
14
+ The `sqlite` feature is on-demand. Pass `{ path: ':memory:' }` for an in-memory database or a file path for persistence. It supports parameterized queries to prevent SQL injection and a convenient tagged-template syntax for inline SQL.
15
+
16
+ ## Creating an In-Memory Database
17
+
18
+ Enable the feature with an in-memory path. No files are created on disk.
19
+
20
+ ```ts
21
+ const db = container.feature('sqlite', { path: ':memory:' })
22
+ console.log('SQLite enabled:', db.state.get('enabled'))
23
+ ```
24
+
25
+ The database is ready for queries immediately.
26
+
27
+ ## Creating a Table
28
+
29
+ Use `execute()` for DDL and write statements.
30
+
31
+ ```ts
32
+ await db.execute(`
33
+ CREATE TABLE users (
34
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
35
+ name TEXT NOT NULL,
36
+ email TEXT NOT NULL UNIQUE,
37
+ active INTEGER DEFAULT 1
38
+ )
39
+ `)
40
+ console.log('Table created')
41
+ ```
42
+
43
+ The `execute()` method returns metadata including the number of changes and the last inserted row ID.
44
+
45
+ ## Inserting Rows
46
+
47
+ Insert data using parameterized queries to keep values safe.
48
+
49
+ ```ts
50
+ await db.execute('INSERT INTO users (name, email) VALUES (?, ?)', ['Alice', 'alice@example.com'])
51
+ await db.execute('INSERT INTO users (name, email) VALUES (?, ?)', ['Bob', 'bob@example.com'])
52
+ const result = await db.execute('INSERT INTO users (name, email, active) VALUES (?, ?, ?)', ['Charlie', 'charlie@example.com', 0])
53
+ console.log('Last insert ID:', result.lastInsertRowid)
54
+ console.log('Changes:', result.changes)
55
+ ```
56
+
57
+ Each `?` placeholder is bound to the corresponding value in the array, preventing SQL injection.
58
+
59
+ ## Querying Rows
60
+
61
+ Use `query()` for SELECT statements that return result rows.
62
+
63
+ ```ts
64
+ const users = await db.query('SELECT * FROM users WHERE active = ?', [1])
65
+ console.log('Active users:')
66
+ users.forEach(u => console.log(` ${u.id}: ${u.name} <${u.email}>`))
67
+ ```
68
+
69
+ Results come back as an array of plain objects with column names as keys.
70
+
71
+ ## Tagged Template Queries
72
+
73
+ The `sql` tagged template lets you write queries with inline interpolation that is still safely parameterized.
74
+
75
+ ```ts
76
+ const emailDomain = '%example.com'
77
+ const rows = await db.sql`SELECT name, email FROM users WHERE email LIKE ${emailDomain}`
78
+ console.log('Users matching domain:')
79
+ rows.forEach(r => console.log(` ${r.name}: ${r.email}`))
80
+ ```
81
+
82
+ Interpolated values become bound parameters automatically. This combines readability with safety.
83
+
84
+ ## Summary
85
+
86
+ This demo covered creating an in-memory SQLite database, defining tables, inserting rows with parameterized queries, reading data back, and using the tagged-template SQL syntax. The `sqlite` feature gives you a full relational database with zero setup.
@@ -0,0 +1,144 @@
1
+ ---
2
+ title: "Structured Output with Assistants"
3
+ tags: [assistant, conversation, structured-output, zod, openai]
4
+ lastTested: null
5
+ lastTestPassed: null
6
+ ---
7
+
8
+ # Structured Output with Assistants
9
+
10
+ Get typed, schema-validated JSON responses from OpenAI instead of raw text strings.
11
+
12
+ ## Overview
13
+
14
+ OpenAI's Structured Outputs feature constrains the model to return JSON that exactly matches a schema you provide. Combined with Zod, this means `ask()` can return parsed objects instead of strings — no regex parsing, no "please respond in JSON", no malformed output.
15
+
16
+ Pass a `schema` option to `ask()` and the response comes back as a parsed object guaranteed to match your schema.
17
+
18
+ ## Basic: Extract Structured Data
19
+
20
+ The simplest use case — ask a question and get structured data back.
21
+
22
+ ```ts
23
+ const { z } = container
24
+ const conversation = container.feature('conversation', {
25
+ model: 'gpt-4.1-mini',
26
+ history: [{ role: 'system', content: 'You are a helpful data extraction assistant.' }]
27
+ })
28
+
29
+ const result = await conversation.ask('The founders of Apple are Steve Jobs, Steve Wozniak, and Ronald Wayne. They started it in 1976 in Los Altos, California.', {
30
+ schema: z.object({
31
+ company: z.string(),
32
+ foundedYear: z.number(),
33
+ location: z.string(),
34
+ founders: z.array(z.string()),
35
+ }).describe('CompanyInfo')
36
+ })
37
+
38
+ console.log('Company:', result.company)
39
+ console.log('Founded:', result.foundedYear)
40
+ console.log('Location:', result.location)
41
+ console.log('Founders:', result.founders)
42
+ ```
43
+
44
+ The `.describe()` on the schema gives OpenAI the schema name — keep it short and descriptive.
45
+
46
+ ## Enums and Categorization
47
+
48
+ Structured outputs work great for classification tasks where you want the model to pick from a fixed set of values.
49
+
50
+ ```ts
51
+ const { z } = container
52
+ const conversation = container.feature('conversation', {
53
+ model: 'gpt-4.1-mini',
54
+ history: [{ role: 'system', content: 'You are a helpful assistant.' }]
55
+ })
56
+
57
+ const sentiment = await conversation.ask('I absolutely love this product, it changed my life!', {
58
+ schema: z.object({
59
+ sentiment: z.enum(['positive', 'negative', 'neutral', 'mixed']),
60
+ confidence: z.number(),
61
+ reasoning: z.string(),
62
+ }).describe('SentimentAnalysis')
63
+ })
64
+
65
+ console.log('Sentiment:', sentiment.sentiment)
66
+ console.log('Confidence:', sentiment.confidence)
67
+ console.log('Reasoning:', sentiment.reasoning)
68
+ ```
69
+
70
+ Because the model is constrained by the schema, `sentiment` will always be one of the four allowed values.
71
+
72
+ ## Nested Objects and Arrays
73
+
74
+ Schemas can be as complex as you need. Here we extract a structured analysis with nested objects.
75
+
76
+ ```ts
77
+ const { z } = container
78
+ const conversation = container.feature('conversation', {
79
+ model: 'gpt-4.1-mini',
80
+ history: [{ role: 'system', content: 'You are a technical analyst.' }]
81
+ })
82
+
83
+ const analysis = await conversation.ask(
84
+ 'TypeScript 5.5 introduced inferred type predicates, which automatically narrow types in filter callbacks. It also added isolated declarations for faster builds in monorepos, and a new regex syntax checking feature.',
85
+ {
86
+ schema: z.object({
87
+ subject: z.string(),
88
+ version: z.string(),
89
+ features: z.array(z.object({
90
+ name: z.string(),
91
+ category: z.enum(['type-system', 'performance', 'developer-experience', 'syntax', 'other']),
92
+ summary: z.string(),
93
+ })),
94
+ featureCount: z.number(),
95
+ }).describe('ReleaseAnalysis')
96
+ }
97
+ )
98
+
99
+ console.log('Subject:', analysis.subject, analysis.version)
100
+ console.log('Features:')
101
+ for (const f of analysis.features) {
102
+ console.log(` [${f.category}] ${f.name}: ${f.summary}`)
103
+ }
104
+ console.log('Total features:', analysis.featureCount)
105
+ ```
106
+
107
+ Every level of nesting is validated — the model cannot return a feature without a category or skip required fields.
108
+
109
+ ## With an Assistant
110
+
111
+ Structured outputs work the same way through the assistant API. The schema passes straight through to the underlying conversation.
112
+
113
+ ```ts
114
+ const { z } = container
115
+ const assistant = container.feature('assistant', {
116
+ systemPrompt: 'You are a code review assistant. You analyze code snippets and provide structured feedback.',
117
+ model: 'gpt-4.1-mini',
118
+ })
119
+
120
+ const review = await assistant.ask(
121
+ 'Review this: function add(a, b) { return a + b }',
122
+ {
123
+ schema: z.object({
124
+ issues: z.array(z.object({
125
+ severity: z.enum(['info', 'warning', 'error']),
126
+ message: z.string(),
127
+ })),
128
+ suggestion: z.string(),
129
+ score: z.number(),
130
+ }).describe('CodeReview')
131
+ }
132
+ )
133
+
134
+ console.log('Score:', review.score)
135
+ console.log('Suggestion:', review.suggestion)
136
+ console.log('Issues:')
137
+ for (const issue of review.issues) {
138
+ console.log(` [${issue.severity}] ${issue.message}`)
139
+ }
140
+ ```
141
+
142
+ ## Summary
143
+
144
+ This demo covered extracting structured data, classification with enums, nested schema validation, and using structured outputs through both the conversation and assistant APIs. The key is passing a Zod schema via `{ schema }` in the options to `ask()` — OpenAI guarantees the response matches, and you get a parsed object back.