@soederpop/luca 0.1.2 → 0.2.1

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 (381) hide show
  1. package/.github/workflows/release.yaml +167 -0
  2. package/CLAUDE.md +2 -0
  3. package/README.md +3 -0
  4. package/assistants/codingAssistant/ABOUT.md +3 -0
  5. package/assistants/codingAssistant/CORE.md +22 -17
  6. package/assistants/codingAssistant/hooks.ts +17 -4
  7. package/assistants/codingAssistant/tools.ts +1 -106
  8. package/assistants/inkbot/ABOUT.md +5 -0
  9. package/assistants/inkbot/CORE.md +71 -0
  10. package/assistants/inkbot/hooks.ts +14 -0
  11. package/assistants/inkbot/tools.ts +47 -0
  12. package/bun.lock +20 -4
  13. package/commands/inkbot.ts +353 -0
  14. package/commands/release.ts +75 -181
  15. package/dist/agi/container.server.d.ts +63 -0
  16. package/dist/agi/container.server.d.ts.map +1 -0
  17. package/dist/agi/endpoints/ask.d.ts +20 -0
  18. package/dist/agi/endpoints/ask.d.ts.map +1 -0
  19. package/dist/agi/endpoints/conversations/[id].d.ts +27 -0
  20. package/dist/agi/endpoints/conversations/[id].d.ts.map +1 -0
  21. package/dist/agi/endpoints/conversations.d.ts +18 -0
  22. package/dist/agi/endpoints/conversations.d.ts.map +1 -0
  23. package/dist/agi/endpoints/experts.d.ts +8 -0
  24. package/dist/agi/endpoints/experts.d.ts.map +1 -0
  25. package/dist/agi/feature.d.ts +9 -0
  26. package/dist/agi/feature.d.ts.map +1 -0
  27. package/dist/agi/features/assistant.d.ts +509 -0
  28. package/dist/agi/features/assistant.d.ts.map +1 -0
  29. package/dist/agi/features/assistants-manager.d.ts +236 -0
  30. package/dist/agi/features/assistants-manager.d.ts.map +1 -0
  31. package/dist/agi/features/autonomous-assistant.d.ts +281 -0
  32. package/dist/agi/features/autonomous-assistant.d.ts.map +1 -0
  33. package/dist/agi/features/browser-use.d.ts +479 -0
  34. package/dist/agi/features/browser-use.d.ts.map +1 -0
  35. package/dist/agi/features/claude-code.d.ts +824 -0
  36. package/dist/agi/features/claude-code.d.ts.map +1 -0
  37. package/dist/agi/features/conversation-history.d.ts +245 -0
  38. package/dist/agi/features/conversation-history.d.ts.map +1 -0
  39. package/dist/agi/features/conversation.d.ts +464 -0
  40. package/dist/agi/features/conversation.d.ts.map +1 -0
  41. package/dist/agi/features/docs-reader.d.ts +72 -0
  42. package/dist/agi/features/docs-reader.d.ts.map +1 -0
  43. package/dist/agi/features/file-tools.d.ts +110 -0
  44. package/dist/agi/features/file-tools.d.ts.map +1 -0
  45. package/dist/agi/features/luca-coder.d.ts +323 -0
  46. package/dist/agi/features/luca-coder.d.ts.map +1 -0
  47. package/dist/agi/features/openai-codex.d.ts +381 -0
  48. package/dist/agi/features/openai-codex.d.ts.map +1 -0
  49. package/dist/agi/features/openapi.d.ts +200 -0
  50. package/dist/agi/features/openapi.d.ts.map +1 -0
  51. package/dist/agi/features/skills-library.d.ts +167 -0
  52. package/dist/agi/features/skills-library.d.ts.map +1 -0
  53. package/dist/agi/index.d.ts +5 -0
  54. package/dist/agi/index.d.ts.map +1 -0
  55. package/dist/agi/lib/interceptor-chain.d.ts +44 -0
  56. package/dist/agi/lib/interceptor-chain.d.ts.map +1 -0
  57. package/dist/agi/lib/token-counter.d.ts +13 -0
  58. package/dist/agi/lib/token-counter.d.ts.map +1 -0
  59. package/dist/bootstrap/generated.d.ts +5 -0
  60. package/dist/bootstrap/generated.d.ts.map +1 -0
  61. package/dist/browser.d.ts +12 -0
  62. package/dist/browser.d.ts.map +1 -0
  63. package/dist/bus.d.ts +29 -0
  64. package/dist/bus.d.ts.map +1 -0
  65. package/dist/cli/build-info.d.ts +4 -0
  66. package/dist/cli/build-info.d.ts.map +1 -0
  67. package/dist/cli/cli.d.ts +3 -0
  68. package/dist/cli/cli.d.ts.map +1 -0
  69. package/dist/client.d.ts +60 -0
  70. package/dist/client.d.ts.map +1 -0
  71. package/dist/clients/civitai/index.d.ts +472 -0
  72. package/dist/clients/civitai/index.d.ts.map +1 -0
  73. package/dist/clients/client-template.d.ts +30 -0
  74. package/dist/clients/client-template.d.ts.map +1 -0
  75. package/dist/clients/comfyui/index.d.ts +281 -0
  76. package/dist/clients/comfyui/index.d.ts.map +1 -0
  77. package/dist/clients/elevenlabs/index.d.ts +197 -0
  78. package/dist/clients/elevenlabs/index.d.ts.map +1 -0
  79. package/dist/clients/graph.d.ts +64 -0
  80. package/dist/clients/graph.d.ts.map +1 -0
  81. package/dist/clients/openai/index.d.ts +247 -0
  82. package/dist/clients/openai/index.d.ts.map +1 -0
  83. package/dist/clients/rest.d.ts +92 -0
  84. package/dist/clients/rest.d.ts.map +1 -0
  85. package/dist/clients/supabase/index.d.ts +176 -0
  86. package/dist/clients/supabase/index.d.ts.map +1 -0
  87. package/dist/clients/websocket.d.ts +127 -0
  88. package/dist/clients/websocket.d.ts.map +1 -0
  89. package/dist/command.d.ts +163 -0
  90. package/dist/command.d.ts.map +1 -0
  91. package/dist/commands/bootstrap.d.ts +20 -0
  92. package/dist/commands/bootstrap.d.ts.map +1 -0
  93. package/dist/commands/chat.d.ts +37 -0
  94. package/dist/commands/chat.d.ts.map +1 -0
  95. package/dist/commands/code.d.ts +28 -0
  96. package/dist/commands/code.d.ts.map +1 -0
  97. package/dist/commands/console.d.ts +22 -0
  98. package/dist/commands/console.d.ts.map +1 -0
  99. package/dist/commands/describe.d.ts +50 -0
  100. package/dist/commands/describe.d.ts.map +1 -0
  101. package/dist/commands/eval.d.ts +23 -0
  102. package/dist/commands/eval.d.ts.map +1 -0
  103. package/dist/commands/help.d.ts +25 -0
  104. package/dist/commands/help.d.ts.map +1 -0
  105. package/dist/commands/index.d.ts +18 -0
  106. package/dist/commands/index.d.ts.map +1 -0
  107. package/dist/commands/introspect.d.ts +24 -0
  108. package/dist/commands/introspect.d.ts.map +1 -0
  109. package/dist/commands/mcp.d.ts +35 -0
  110. package/dist/commands/mcp.d.ts.map +1 -0
  111. package/dist/commands/prompt.d.ts +38 -0
  112. package/dist/commands/prompt.d.ts.map +1 -0
  113. package/dist/commands/run.d.ts +24 -0
  114. package/dist/commands/run.d.ts.map +1 -0
  115. package/dist/commands/sandbox-mcp.d.ts +34 -0
  116. package/dist/commands/sandbox-mcp.d.ts.map +1 -0
  117. package/dist/commands/save-api-docs.d.ts +21 -0
  118. package/dist/commands/save-api-docs.d.ts.map +1 -0
  119. package/dist/commands/scaffold.d.ts +24 -0
  120. package/dist/commands/scaffold.d.ts.map +1 -0
  121. package/dist/commands/select.d.ts +22 -0
  122. package/dist/commands/select.d.ts.map +1 -0
  123. package/dist/commands/serve.d.ts +29 -0
  124. package/dist/commands/serve.d.ts.map +1 -0
  125. package/dist/container-describer.d.ts +144 -0
  126. package/dist/container-describer.d.ts.map +1 -0
  127. package/dist/container.d.ts +451 -0
  128. package/dist/container.d.ts.map +1 -0
  129. package/dist/endpoint.d.ts +113 -0
  130. package/dist/endpoint.d.ts.map +1 -0
  131. package/dist/feature.d.ts +47 -0
  132. package/dist/feature.d.ts.map +1 -0
  133. package/dist/graft.d.ts +29 -0
  134. package/dist/graft.d.ts.map +1 -0
  135. package/dist/hash-object.d.ts +8 -0
  136. package/dist/hash-object.d.ts.map +1 -0
  137. package/dist/helper.d.ts +209 -0
  138. package/dist/helper.d.ts.map +1 -0
  139. package/dist/introspection/generated.node.d.ts +44623 -0
  140. package/dist/introspection/generated.node.d.ts.map +1 -0
  141. package/dist/introspection/generated.web.d.ts +1412 -0
  142. package/dist/introspection/generated.web.d.ts.map +1 -0
  143. package/dist/introspection/index.d.ts +156 -0
  144. package/dist/introspection/index.d.ts.map +1 -0
  145. package/dist/introspection/scan.d.ts +147 -0
  146. package/dist/introspection/scan.d.ts.map +1 -0
  147. package/dist/node/container.d.ts +256 -0
  148. package/dist/node/container.d.ts.map +1 -0
  149. package/dist/node/feature.d.ts +9 -0
  150. package/dist/node/feature.d.ts.map +1 -0
  151. package/dist/node/features/container-link.d.ts +213 -0
  152. package/dist/node/features/container-link.d.ts.map +1 -0
  153. package/dist/node/features/content-db.d.ts +354 -0
  154. package/dist/node/features/content-db.d.ts.map +1 -0
  155. package/dist/node/features/disk-cache.d.ts +236 -0
  156. package/dist/node/features/disk-cache.d.ts.map +1 -0
  157. package/dist/node/features/dns.d.ts +511 -0
  158. package/dist/node/features/dns.d.ts.map +1 -0
  159. package/dist/node/features/docker.d.ts +485 -0
  160. package/dist/node/features/docker.d.ts.map +1 -0
  161. package/dist/node/features/downloader.d.ts +73 -0
  162. package/dist/node/features/downloader.d.ts.map +1 -0
  163. package/dist/node/features/figlet-fonts.d.ts +4 -0
  164. package/dist/node/features/figlet-fonts.d.ts.map +1 -0
  165. package/dist/node/features/file-manager.d.ts +177 -0
  166. package/dist/node/features/file-manager.d.ts.map +1 -0
  167. package/dist/node/features/fs.d.ts +635 -0
  168. package/dist/node/features/fs.d.ts.map +1 -0
  169. package/dist/node/features/git.d.ts +329 -0
  170. package/dist/node/features/git.d.ts.map +1 -0
  171. package/dist/node/features/google-auth.d.ts +200 -0
  172. package/dist/node/features/google-auth.d.ts.map +1 -0
  173. package/dist/node/features/google-calendar.d.ts +194 -0
  174. package/dist/node/features/google-calendar.d.ts.map +1 -0
  175. package/dist/node/features/google-docs.d.ts +138 -0
  176. package/dist/node/features/google-docs.d.ts.map +1 -0
  177. package/dist/node/features/google-drive.d.ts +202 -0
  178. package/dist/node/features/google-drive.d.ts.map +1 -0
  179. package/dist/node/features/google-mail.d.ts +221 -0
  180. package/dist/node/features/google-mail.d.ts.map +1 -0
  181. package/dist/node/features/google-sheets.d.ts +157 -0
  182. package/dist/node/features/google-sheets.d.ts.map +1 -0
  183. package/dist/node/features/grep.d.ts +207 -0
  184. package/dist/node/features/grep.d.ts.map +1 -0
  185. package/dist/node/features/helpers.d.ts +236 -0
  186. package/dist/node/features/helpers.d.ts.map +1 -0
  187. package/dist/node/features/ink.d.ts +332 -0
  188. package/dist/node/features/ink.d.ts.map +1 -0
  189. package/dist/node/features/ipc-socket.d.ts +298 -0
  190. package/dist/node/features/ipc-socket.d.ts.map +1 -0
  191. package/dist/node/features/json-tree.d.ts +140 -0
  192. package/dist/node/features/json-tree.d.ts.map +1 -0
  193. package/dist/node/features/networking.d.ts +373 -0
  194. package/dist/node/features/networking.d.ts.map +1 -0
  195. package/dist/node/features/nlp.d.ts +125 -0
  196. package/dist/node/features/nlp.d.ts.map +1 -0
  197. package/dist/node/features/opener.d.ts +93 -0
  198. package/dist/node/features/opener.d.ts.map +1 -0
  199. package/dist/node/features/os.d.ts +168 -0
  200. package/dist/node/features/os.d.ts.map +1 -0
  201. package/dist/node/features/package-finder.d.ts +419 -0
  202. package/dist/node/features/package-finder.d.ts.map +1 -0
  203. package/dist/node/features/postgres.d.ts +173 -0
  204. package/dist/node/features/postgres.d.ts.map +1 -0
  205. package/dist/node/features/proc.d.ts +285 -0
  206. package/dist/node/features/proc.d.ts.map +1 -0
  207. package/dist/node/features/process-manager.d.ts +427 -0
  208. package/dist/node/features/process-manager.d.ts.map +1 -0
  209. package/dist/node/features/python.d.ts +477 -0
  210. package/dist/node/features/python.d.ts.map +1 -0
  211. package/dist/node/features/redis.d.ts +247 -0
  212. package/dist/node/features/redis.d.ts.map +1 -0
  213. package/dist/node/features/repl.d.ts +84 -0
  214. package/dist/node/features/repl.d.ts.map +1 -0
  215. package/dist/node/features/runpod.d.ts +527 -0
  216. package/dist/node/features/runpod.d.ts.map +1 -0
  217. package/dist/node/features/secure-shell.d.ts +145 -0
  218. package/dist/node/features/secure-shell.d.ts.map +1 -0
  219. package/dist/node/features/semantic-search.d.ts +207 -0
  220. package/dist/node/features/semantic-search.d.ts.map +1 -0
  221. package/dist/node/features/sqlite.d.ts +180 -0
  222. package/dist/node/features/sqlite.d.ts.map +1 -0
  223. package/dist/node/features/telegram.d.ts +173 -0
  224. package/dist/node/features/telegram.d.ts.map +1 -0
  225. package/dist/node/features/transpiler.d.ts +51 -0
  226. package/dist/node/features/transpiler.d.ts.map +1 -0
  227. package/dist/node/features/tts.d.ts +108 -0
  228. package/dist/node/features/tts.d.ts.map +1 -0
  229. package/dist/node/features/ui.d.ts +562 -0
  230. package/dist/node/features/ui.d.ts.map +1 -0
  231. package/dist/node/features/vault.d.ts +90 -0
  232. package/dist/node/features/vault.d.ts.map +1 -0
  233. package/dist/node/features/vm.d.ts +285 -0
  234. package/dist/node/features/vm.d.ts.map +1 -0
  235. package/dist/node/features/yaml-tree.d.ts +118 -0
  236. package/dist/node/features/yaml-tree.d.ts.map +1 -0
  237. package/dist/node/features/yaml.d.ts +127 -0
  238. package/dist/node/features/yaml.d.ts.map +1 -0
  239. package/dist/node.d.ts +67 -0
  240. package/dist/node.d.ts.map +1 -0
  241. package/dist/python/generated.d.ts +2 -0
  242. package/dist/python/generated.d.ts.map +1 -0
  243. package/dist/react/index.d.ts +36 -0
  244. package/dist/react/index.d.ts.map +1 -0
  245. package/dist/registry.d.ts +97 -0
  246. package/dist/registry.d.ts.map +1 -0
  247. package/dist/scaffolds/generated.d.ts +13 -0
  248. package/dist/scaffolds/generated.d.ts.map +1 -0
  249. package/dist/scaffolds/template.d.ts +11 -0
  250. package/dist/scaffolds/template.d.ts.map +1 -0
  251. package/dist/schemas/base.d.ts +254 -0
  252. package/dist/schemas/base.d.ts.map +1 -0
  253. package/dist/selector.d.ts +130 -0
  254. package/dist/selector.d.ts.map +1 -0
  255. package/dist/server.d.ts +89 -0
  256. package/dist/server.d.ts.map +1 -0
  257. package/dist/servers/express.d.ts +104 -0
  258. package/dist/servers/express.d.ts.map +1 -0
  259. package/dist/servers/mcp.d.ts +201 -0
  260. package/dist/servers/mcp.d.ts.map +1 -0
  261. package/dist/servers/socket.d.ts +121 -0
  262. package/dist/servers/socket.d.ts.map +1 -0
  263. package/dist/state.d.ts +24 -0
  264. package/dist/state.d.ts.map +1 -0
  265. package/dist/web/clients/socket.d.ts +37 -0
  266. package/dist/web/clients/socket.d.ts.map +1 -0
  267. package/dist/web/container.d.ts +55 -0
  268. package/dist/web/container.d.ts.map +1 -0
  269. package/dist/web/extension.d.ts +4 -0
  270. package/dist/web/extension.d.ts.map +1 -0
  271. package/dist/web/feature.d.ts +8 -0
  272. package/dist/web/feature.d.ts.map +1 -0
  273. package/dist/web/features/asset-loader.d.ts +35 -0
  274. package/dist/web/features/asset-loader.d.ts.map +1 -0
  275. package/dist/web/features/container-link.d.ts +167 -0
  276. package/dist/web/features/container-link.d.ts.map +1 -0
  277. package/dist/web/features/esbuild.d.ts +51 -0
  278. package/dist/web/features/esbuild.d.ts.map +1 -0
  279. package/dist/web/features/helpers.d.ts +140 -0
  280. package/dist/web/features/helpers.d.ts.map +1 -0
  281. package/dist/web/features/network.d.ts +69 -0
  282. package/dist/web/features/network.d.ts.map +1 -0
  283. package/dist/web/features/speech.d.ts +71 -0
  284. package/dist/web/features/speech.d.ts.map +1 -0
  285. package/dist/web/features/vault.d.ts +62 -0
  286. package/dist/web/features/vault.d.ts.map +1 -0
  287. package/dist/web/features/vm.d.ts +48 -0
  288. package/dist/web/features/vm.d.ts.map +1 -0
  289. package/dist/web/features/voice-recognition.d.ts +96 -0
  290. package/dist/web/features/voice-recognition.d.ts.map +1 -0
  291. package/dist/web/shims/isomorphic-vm.d.ts +22 -0
  292. package/dist/web/shims/isomorphic-vm.d.ts.map +1 -0
  293. package/docs/apis/features/agi/assistant.md +1 -0
  294. package/docs/apis/features/agi/assistants-manager.md +62 -2
  295. package/docs/apis/features/agi/auto-assistant.md +11 -109
  296. package/docs/apis/features/agi/claude-code.md +138 -0
  297. package/docs/apis/features/agi/conversation.md +60 -31
  298. package/docs/apis/features/agi/luca-coder.md +407 -0
  299. package/docs/apis/features/agi/openapi.md +2 -2
  300. package/docs/apis/features/agi/skills-library.md +12 -0
  301. package/docs/apis/features/node/python.md +81 -11
  302. package/docs/apis/features/node/transpiler.md +74 -0
  303. package/docs/apis/features/web/esbuild.md +0 -6
  304. package/docs/apis/servers/mcp.md +2 -2
  305. package/docs/examples/entity.md +124 -0
  306. package/docs/ideas/assistant-factory-pattern.md +142 -0
  307. package/package.json +74 -21
  308. package/src/agi/container.server.ts +10 -0
  309. package/src/agi/feature.ts +13 -0
  310. package/src/agi/features/agent-memory.ts +694 -0
  311. package/src/agi/features/assistant.ts +37 -26
  312. package/src/agi/features/assistants-manager.ts +95 -5
  313. package/src/agi/features/autonomous-assistant.ts +1 -5
  314. package/src/agi/features/browser-use.ts +32 -2
  315. package/src/agi/features/claude-code.ts +165 -1
  316. package/src/agi/features/coding-tools.ts +175 -0
  317. package/src/agi/features/conversation-history.ts +2 -6
  318. package/src/agi/features/conversation.ts +95 -3
  319. package/src/agi/features/docs-reader.ts +2 -1
  320. package/src/agi/features/file-tools.ts +35 -28
  321. package/src/agi/features/luca-coder.ts +1 -5
  322. package/src/agi/features/openai-codex.ts +1 -1
  323. package/src/agi/features/openapi.ts +3 -3
  324. package/src/agi/features/skills-library.ts +111 -13
  325. package/src/agi/lib/interceptor-chain.ts +10 -0
  326. package/src/agi/lib/token-counter.ts +1 -1
  327. package/src/bootstrap/generated.ts +126 -1
  328. package/src/bus.ts +27 -5
  329. package/src/cli/build-info.ts +2 -2
  330. package/src/client.ts +2 -2
  331. package/src/clients/elevenlabs/index.ts +5 -0
  332. package/src/clients/voicebox/index.ts +300 -0
  333. package/src/commands/bootstrap.ts +2 -1
  334. package/src/commands/chat.ts +1 -0
  335. package/src/commands/code.ts +4 -2
  336. package/src/commands/prompt.ts +34 -34
  337. package/src/commands/sandbox-mcp.ts +69 -163
  338. package/src/commands/save-api-docs.ts +10 -8
  339. package/src/commands/select.ts +8 -3
  340. package/src/container-describer.ts +70 -84
  341. package/src/container.ts +93 -3
  342. package/src/endpoint.ts +1 -1
  343. package/src/entity.ts +173 -0
  344. package/src/feature.ts +3 -3
  345. package/src/helper.ts +8 -4
  346. package/src/introspection/generated.agi.ts +3012 -1356
  347. package/src/introspection/generated.node.ts +179 -33
  348. package/src/introspection/generated.web.ts +95 -3
  349. package/src/introspection/scan.ts +1 -1
  350. package/src/node/container.ts +1 -1
  351. package/src/node/features/content-db.ts +57 -30
  352. package/src/node/features/file-manager.ts +10 -9
  353. package/src/node/features/git.ts +5 -5
  354. package/src/node/features/helpers.ts +1 -1
  355. package/src/node/features/json-tree.ts +1 -1
  356. package/src/node/features/os.ts +3 -3
  357. package/src/node/features/package-finder.ts +1 -1
  358. package/src/node/features/process-manager.ts +51 -18
  359. package/src/node/features/python.ts +3 -3
  360. package/src/node/features/redis.ts +1 -1
  361. package/src/node/features/repl.ts +2 -2
  362. package/src/node/features/transpiler.ts +2 -2
  363. package/src/node/features/ui.ts +1 -1
  364. package/src/node/features/vm.ts +3 -3
  365. package/src/node/features/yaml-tree.ts +1 -1
  366. package/src/node.ts +1 -0
  367. package/src/python/generated.ts +1 -1
  368. package/src/scaffolds/generated.ts +1 -1
  369. package/src/selector.ts +74 -4
  370. package/src/server.ts +2 -2
  371. package/src/servers/mcp.ts +6 -6
  372. package/src/web/features/helpers.ts +1 -1
  373. package/src/web/features/network.ts +1 -0
  374. package/test/assistant.test.ts +14 -5
  375. package/test/conversation.test.ts +220 -0
  376. package/test-integration/memory.test.ts +204 -0
  377. package/tsconfig.build.json +12 -0
  378. package/tsconfig.json +1 -1
  379. package/scripts/examples/telegram-ink-ui.ts +0 -302
  380. package/scripts/examples/using-openai-codex.ts +0 -23
  381. package/scripts/examples/vm-loading-esm-modules.ts +0 -16
@@ -0,0 +1,477 @@
1
+ import { z } from 'zod';
2
+ import { Feature } from "../feature.js";
3
+ export declare const PythonStateSchema: z.ZodObject<{
4
+ enabled: z.ZodDefault<z.ZodBoolean>;
5
+ pythonPath: z.ZodDefault<z.ZodNullable<z.ZodString>>;
6
+ projectDir: z.ZodDefault<z.ZodNullable<z.ZodString>>;
7
+ environmentType: z.ZodDefault<z.ZodNullable<z.ZodEnum<{
8
+ uv: "uv";
9
+ conda: "conda";
10
+ venv: "venv";
11
+ system: "system";
12
+ }>>>;
13
+ isReady: z.ZodDefault<z.ZodBoolean>;
14
+ lastExecutedScript: z.ZodDefault<z.ZodNullable<z.ZodString>>;
15
+ sessionActive: z.ZodDefault<z.ZodBoolean>;
16
+ sessionId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
17
+ }, z.core.$loose>;
18
+ export declare const PythonOptionsSchema: z.ZodObject<{
19
+ name: z.ZodOptional<z.ZodString>;
20
+ _cacheKey: z.ZodOptional<z.ZodString>;
21
+ cached: z.ZodOptional<z.ZodBoolean>;
22
+ enable: z.ZodOptional<z.ZodBoolean>;
23
+ dir: z.ZodOptional<z.ZodString>;
24
+ installCommand: z.ZodOptional<z.ZodString>;
25
+ contextScript: z.ZodOptional<z.ZodString>;
26
+ pythonPath: z.ZodOptional<z.ZodString>;
27
+ }, z.core.$strip>;
28
+ export type PythonState = z.infer<typeof PythonStateSchema>;
29
+ export type PythonOptions = z.infer<typeof PythonOptionsSchema>;
30
+ export declare const PythonEventsSchema: z.ZodObject<{
31
+ stateChange: z.ZodTuple<[z.ZodAny], null>;
32
+ enabled: z.ZodTuple<[], null>;
33
+ ready: z.ZodTuple<[], null>;
34
+ environmentDetected: z.ZodTuple<[z.ZodObject<{
35
+ pythonPath: z.ZodNullable<z.ZodString>;
36
+ environmentType: z.ZodNullable<z.ZodEnum<{
37
+ uv: "uv";
38
+ conda: "conda";
39
+ venv: "venv";
40
+ system: "system";
41
+ }>>;
42
+ }, z.core.$strip>], null>;
43
+ installingDependencies: z.ZodTuple<[z.ZodObject<{
44
+ command: z.ZodString;
45
+ }, z.core.$strip>], null>;
46
+ dependenciesInstalled: z.ZodTuple<[z.ZodObject<{
47
+ stdout: z.ZodString;
48
+ stderr: z.ZodString;
49
+ exitCode: z.ZodNumber;
50
+ }, z.core.$strip>], null>;
51
+ dependencyInstallFailed: z.ZodTuple<[z.ZodObject<{
52
+ stdout: z.ZodString;
53
+ stderr: z.ZodString;
54
+ exitCode: z.ZodNumber;
55
+ }, z.core.$strip>], null>;
56
+ codeExecuted: z.ZodTuple<[z.ZodObject<{
57
+ code: z.ZodString;
58
+ variables: z.ZodRecord<z.ZodAny, z.core.SomeType>;
59
+ result: z.ZodObject<{
60
+ stdout: z.ZodString;
61
+ stderr: z.ZodString;
62
+ exitCode: z.ZodNumber;
63
+ }, z.core.$strip>;
64
+ }, z.core.$strip>], null>;
65
+ fileExecuted: z.ZodTuple<[z.ZodObject<{
66
+ filePath: z.ZodString;
67
+ variables: z.ZodRecord<z.ZodAny, z.core.SomeType>;
68
+ result: z.ZodObject<{
69
+ stdout: z.ZodString;
70
+ stderr: z.ZodString;
71
+ exitCode: z.ZodNumber;
72
+ }, z.core.$strip>;
73
+ }, z.core.$strip>], null>;
74
+ localsParseError: z.ZodTuple<[z.ZodAny], null>;
75
+ sessionStarted: z.ZodTuple<[z.ZodObject<{
76
+ sessionId: z.ZodString;
77
+ }, z.core.$strip>], null>;
78
+ sessionStopped: z.ZodTuple<[z.ZodObject<{
79
+ sessionId: z.ZodString;
80
+ }, z.core.$strip>], null>;
81
+ sessionError: z.ZodTuple<[z.ZodObject<{
82
+ error: z.ZodString;
83
+ sessionId: z.ZodNullable<z.ZodString>;
84
+ }, z.core.$strip>], null>;
85
+ }, z.core.$strip>;
86
+ /** Result from a persistent session run() call. */
87
+ export interface RunResult {
88
+ ok: boolean;
89
+ result: any;
90
+ stdout: string;
91
+ error?: string;
92
+ traceback?: string;
93
+ }
94
+ /**
95
+ * The Python VM feature provides Python virtual machine capabilities for executing Python code.
96
+ *
97
+ * This feature automatically detects Python environments (uv, conda, venv, system) and provides
98
+ * methods to install dependencies and execute Python scripts. It can manage project-specific
99
+ * Python environments and maintain context between executions.
100
+ *
101
+ * Supports two modes:
102
+ * - **Stateless** (default): `execute()` and `executeFile()` spawn a fresh process per call
103
+ * - **Persistent session**: `startSession()` spawns a long-lived bridge process that maintains
104
+ * state across `run()` calls, enabling real codebase interaction with imports and session variables
105
+ *
106
+ * @example
107
+ * ```typescript
108
+ * const python = container.feature('python', {
109
+ * dir: "/path/to/python/project",
110
+ * })
111
+ *
112
+ * // Stateless execution
113
+ * const result = await python.execute('print("Hello from Python!")')
114
+ *
115
+ * // Persistent session
116
+ * await python.startSession()
117
+ * await python.run('import myapp.models')
118
+ * await python.run('users = myapp.models.User.objects.all()')
119
+ * const result = await python.run('print(len(users))')
120
+ * await python.stopSession()
121
+ * ```
122
+ *
123
+ * @extends Feature
124
+ */
125
+ export declare class Python<T extends PythonState = PythonState, K extends PythonOptions = PythonOptions> extends Feature<T, K> {
126
+ static shortcut: "features.python";
127
+ static stateSchema: z.ZodObject<{
128
+ enabled: z.ZodDefault<z.ZodBoolean>;
129
+ pythonPath: z.ZodDefault<z.ZodNullable<z.ZodString>>;
130
+ projectDir: z.ZodDefault<z.ZodNullable<z.ZodString>>;
131
+ environmentType: z.ZodDefault<z.ZodNullable<z.ZodEnum<{
132
+ uv: "uv";
133
+ conda: "conda";
134
+ venv: "venv";
135
+ system: "system";
136
+ }>>>;
137
+ isReady: z.ZodDefault<z.ZodBoolean>;
138
+ lastExecutedScript: z.ZodDefault<z.ZodNullable<z.ZodString>>;
139
+ sessionActive: z.ZodDefault<z.ZodBoolean>;
140
+ sessionId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
141
+ }, z.core.$loose>;
142
+ static optionsSchema: z.ZodObject<{
143
+ name: z.ZodOptional<z.ZodString>;
144
+ _cacheKey: z.ZodOptional<z.ZodString>;
145
+ cached: z.ZodOptional<z.ZodBoolean>;
146
+ enable: z.ZodOptional<z.ZodBoolean>;
147
+ dir: z.ZodOptional<z.ZodString>;
148
+ installCommand: z.ZodOptional<z.ZodString>;
149
+ contextScript: z.ZodOptional<z.ZodString>;
150
+ pythonPath: z.ZodOptional<z.ZodString>;
151
+ }, z.core.$strip>;
152
+ static eventsSchema: z.ZodObject<{
153
+ stateChange: z.ZodTuple<[z.ZodAny], null>;
154
+ enabled: z.ZodTuple<[], null>;
155
+ ready: z.ZodTuple<[], null>;
156
+ environmentDetected: z.ZodTuple<[z.ZodObject<{
157
+ pythonPath: z.ZodNullable<z.ZodString>;
158
+ environmentType: z.ZodNullable<z.ZodEnum<{
159
+ uv: "uv";
160
+ conda: "conda";
161
+ venv: "venv";
162
+ system: "system";
163
+ }>>;
164
+ }, z.core.$strip>], null>;
165
+ installingDependencies: z.ZodTuple<[z.ZodObject<{
166
+ command: z.ZodString;
167
+ }, z.core.$strip>], null>;
168
+ dependenciesInstalled: z.ZodTuple<[z.ZodObject<{
169
+ stdout: z.ZodString;
170
+ stderr: z.ZodString;
171
+ exitCode: z.ZodNumber;
172
+ }, z.core.$strip>], null>;
173
+ dependencyInstallFailed: z.ZodTuple<[z.ZodObject<{
174
+ stdout: z.ZodString;
175
+ stderr: z.ZodString;
176
+ exitCode: z.ZodNumber;
177
+ }, z.core.$strip>], null>;
178
+ codeExecuted: z.ZodTuple<[z.ZodObject<{
179
+ code: z.ZodString;
180
+ variables: z.ZodRecord<z.ZodAny, z.core.SomeType>;
181
+ result: z.ZodObject<{
182
+ stdout: z.ZodString;
183
+ stderr: z.ZodString;
184
+ exitCode: z.ZodNumber;
185
+ }, z.core.$strip>;
186
+ }, z.core.$strip>], null>;
187
+ fileExecuted: z.ZodTuple<[z.ZodObject<{
188
+ filePath: z.ZodString;
189
+ variables: z.ZodRecord<z.ZodAny, z.core.SomeType>;
190
+ result: z.ZodObject<{
191
+ stdout: z.ZodString;
192
+ stderr: z.ZodString;
193
+ exitCode: z.ZodNumber;
194
+ }, z.core.$strip>;
195
+ }, z.core.$strip>], null>;
196
+ localsParseError: z.ZodTuple<[z.ZodAny], null>;
197
+ sessionStarted: z.ZodTuple<[z.ZodObject<{
198
+ sessionId: z.ZodString;
199
+ }, z.core.$strip>], null>;
200
+ sessionStopped: z.ZodTuple<[z.ZodObject<{
201
+ sessionId: z.ZodString;
202
+ }, z.core.$strip>], null>;
203
+ sessionError: z.ZodTuple<[z.ZodObject<{
204
+ error: z.ZodString;
205
+ sessionId: z.ZodNullable<z.ZodString>;
206
+ }, z.core.$strip>], null>;
207
+ }, z.core.$strip>;
208
+ private _bridgeProcess;
209
+ private _bridgeScriptPath;
210
+ private _pendingRequests;
211
+ private _stdoutBuffer;
212
+ get initialState(): T;
213
+ enable(options?: any): Promise<this>;
214
+ /** Returns the root directory of the Python project. */
215
+ get projectDir(): string;
216
+ /** Returns the path to the Python executable for this environment. */
217
+ get pythonPath(): "python" | NonNullable<T["pythonPath"]>;
218
+ /** Returns the detected environment type: 'uv', 'conda', 'venv', or 'system'. */
219
+ get environmentType(): "system" | NonNullable<T["environmentType"]>;
220
+ /**
221
+ * Detects the Python environment type and sets the appropriate Python path.
222
+ *
223
+ * This method checks for various Python environment managers in order of preference:
224
+ * uv, conda, venv, then falls back to system Python. It sets the pythonPath and
225
+ * environmentType in the state.
226
+ *
227
+ * @returns {Promise<void>}
228
+ *
229
+ * @example
230
+ * ```typescript
231
+ * await python.detectEnvironment()
232
+ * console.log(python.state.get('environmentType')) // 'uv' | 'conda' | 'venv' | 'system'
233
+ * console.log(python.state.get('pythonPath')) // '/path/to/python/executable'
234
+ * ```
235
+ */
236
+ detectEnvironment(): Promise<void>;
237
+ /**
238
+ * Installs dependencies for the Python project.
239
+ *
240
+ * This method automatically detects the appropriate package manager and install command
241
+ * based on the environment type. If a custom installCommand is provided in options,
242
+ * it will use that instead.
243
+ *
244
+ * @returns {Promise<{ stdout: string; stderr: string; exitCode: number }>}
245
+ *
246
+ * @example
247
+ * ```typescript
248
+ * // Auto-detect and install
249
+ * const result = await python.installDependencies()
250
+ *
251
+ * // With custom install command
252
+ * const python = container.feature('python', {
253
+ * installCommand: 'pip install -r requirements.txt'
254
+ * })
255
+ * const result = await python.installDependencies()
256
+ * ```
257
+ */
258
+ installDependencies(): Promise<{
259
+ stdout: string;
260
+ stderr: string;
261
+ exitCode: number;
262
+ }>;
263
+ /**
264
+ * Executes Python code and returns the result.
265
+ *
266
+ * This method creates a temporary Python script with the provided code and variables,
267
+ * executes it using the detected Python environment, and captures the output.
268
+ *
269
+ * @param {string} code - The Python code to execute
270
+ * @param {Record<string, any>} [variables={}] - Variables to make available to the Python code
271
+ * @param {object} [options] - Execution options
272
+ * @param {boolean} [options.captureLocals=false] - Whether to capture and return local variables after execution
273
+ * @returns {Promise<{ stdout: string; stderr: string; exitCode: number; locals?: any }>}
274
+ *
275
+ * @example
276
+ * ```typescript
277
+ * // Simple execution
278
+ * const result = await python.execute('print("Hello World")')
279
+ * console.log(result.stdout) // 'Hello World'
280
+ *
281
+ * // With variables
282
+ * const result = await python.execute('print(f"Hello {name}!")', { name: 'Alice' })
283
+ *
284
+ * // Capture locals
285
+ * const result = await python.execute('x = 42\ny = x * 2', {}, { captureLocals: true })
286
+ * console.log(result.locals) // { x: 42, y: 84 }
287
+ * ```
288
+ */
289
+ execute(code: string, variables?: Record<string, any>, options?: {
290
+ captureLocals?: boolean;
291
+ }): Promise<{
292
+ stdout: string;
293
+ stderr: string;
294
+ exitCode: number;
295
+ locals?: any;
296
+ }>;
297
+ /**
298
+ * Executes a Python file and returns the result.
299
+ *
300
+ * @param {string} filePath - Path to the Python file to execute
301
+ * @param {Record<string, any>} [variables={}] - Variables to make available via command line arguments
302
+ * @returns {Promise<{ stdout: string; stderr: string; exitCode: number }>}
303
+ *
304
+ * @example
305
+ * ```typescript
306
+ * const result = await python.executeFile('/path/to/script.py')
307
+ * console.log(result.stdout)
308
+ * ```
309
+ */
310
+ executeFile(filePath: string, variables?: Record<string, any>): Promise<{
311
+ stdout: string;
312
+ stderr: string;
313
+ exitCode: number;
314
+ }>;
315
+ /**
316
+ * Gets information about the current Python environment.
317
+ *
318
+ * @returns {Promise<{ version: string; path: string; packages: string[] }>}
319
+ */
320
+ getEnvironmentInfo(): Promise<{
321
+ version: string;
322
+ path: string;
323
+ packages: string[];
324
+ }>;
325
+ /**
326
+ * Splits the (possibly multi-word) pythonPath into a command and args array
327
+ * suitable for proc.spawn(). For example, `uv run python` becomes
328
+ * `{ command: 'uv', args: ['run', 'python', ...extraArgs] }`.
329
+ */
330
+ private _parsePythonCommand;
331
+ /**
332
+ * Writes the bundled bridge.py to a temp directory and returns its path.
333
+ * Reuses the same path across calls within a process.
334
+ */
335
+ private _ensureBridgeScript;
336
+ /**
337
+ * Sends a JSON-line request to the bridge process and returns a promise
338
+ * that resolves when the matching response (by id) arrives.
339
+ *
340
+ * @param type - The request type (exec, eval, import, call, get_locals, reset)
341
+ * @param payload - Additional fields to include in the request
342
+ * @param timeout - Timeout in ms (default 30000)
343
+ */
344
+ private _sendRequest;
345
+ /**
346
+ * Handles incoming stdout data from the bridge process. Buffers partial
347
+ * lines and parses complete JSON-line responses, resolving their matching
348
+ * pending requests.
349
+ */
350
+ private _onBridgeData;
351
+ /**
352
+ * Starts a persistent Python session by spawning the bridge process.
353
+ *
354
+ * The bridge sets up sys.path for the project directory, then enters a
355
+ * JSON-line REPL loop. State (variables, imports) persists across run() calls
356
+ * until stopSession() or resetSession() is called.
357
+ *
358
+ * @example
359
+ * ```typescript
360
+ * const python = container.feature('python', { dir: '/path/to/project' })
361
+ * await python.enable()
362
+ * await python.startSession()
363
+ * await python.run('x = 42')
364
+ * const result = await python.run('print(x)')
365
+ * console.log(result.stdout) // '42\n'
366
+ * await python.stopSession()
367
+ * ```
368
+ */
369
+ startSession(): Promise<void>;
370
+ /**
371
+ * Stops the persistent Python session and cleans up the bridge process.
372
+ *
373
+ * @example
374
+ * ```typescript
375
+ * await python.stopSession()
376
+ * ```
377
+ */
378
+ stopSession(): Promise<void>;
379
+ /**
380
+ * Executes Python code in the persistent session. Variables and imports
381
+ * survive across calls. This is the session equivalent of execute().
382
+ *
383
+ * @param code - Python code to execute
384
+ * @param variables - Variables to inject into the namespace before execution
385
+ * @returns The execution result including captured stdout and any error info
386
+ *
387
+ * @example
388
+ * ```typescript
389
+ * await python.startSession()
390
+ *
391
+ * // State persists across calls
392
+ * await python.run('x = 42')
393
+ * const result = await python.run('print(x * 2)')
394
+ * console.log(result.stdout) // '84\n'
395
+ *
396
+ * // Inject variables from JS
397
+ * const result2 = await python.run('print(f"Hello {name}!")', { name: 'World' })
398
+ * console.log(result2.stdout) // 'Hello World!\n'
399
+ * ```
400
+ */
401
+ run(code: string, variables?: Record<string, any>): Promise<RunResult>;
402
+ /**
403
+ * Evaluates a Python expression in the persistent session and returns its value.
404
+ *
405
+ * @param expression - Python expression to evaluate
406
+ * @returns The evaluated result (JSON-serializable, or repr() string for complex types)
407
+ *
408
+ * @example
409
+ * ```typescript
410
+ * await python.run('x = 42')
411
+ * const result = await python.eval('x * 2')
412
+ * console.log(result) // 84
413
+ * ```
414
+ */
415
+ eval(expression: string): Promise<any>;
416
+ /**
417
+ * Imports a Python module into the persistent session namespace.
418
+ *
419
+ * @param moduleName - Dotted module path (e.g. 'myapp.models')
420
+ * @param alias - Optional alias for the import (defaults to the last segment)
421
+ *
422
+ * @example
423
+ * ```typescript
424
+ * await python.importModule('json')
425
+ * await python.importModule('myapp.models', 'models')
426
+ * const result = await python.eval('models.User')
427
+ * ```
428
+ */
429
+ importModule(moduleName: string, alias?: string): Promise<void>;
430
+ /**
431
+ * Calls a function by dotted path in the persistent session namespace.
432
+ *
433
+ * @param funcPath - Dotted path to the function (e.g. 'json.dumps' or 'my_func')
434
+ * @param args - Positional arguments
435
+ * @param kwargs - Keyword arguments
436
+ * @returns The function's return value
437
+ *
438
+ * @example
439
+ * ```typescript
440
+ * await python.importModule('json')
441
+ * const result = await python.call('json.dumps', [{ a: 1 }], { indent: 2 })
442
+ * ```
443
+ */
444
+ call(funcPath: string, args?: any[], kwargs?: Record<string, any>): Promise<any>;
445
+ /**
446
+ * Returns all non-dunder variables from the persistent session namespace.
447
+ *
448
+ * @returns A record of variable names to their JSON-serializable values
449
+ *
450
+ * @example
451
+ * ```typescript
452
+ * await python.run('x = 42\ny = "hello"')
453
+ * const locals = await python.getLocals()
454
+ * console.log(locals) // { x: 42, y: 'hello' }
455
+ * ```
456
+ */
457
+ getLocals(): Promise<Record<string, any>>;
458
+ /**
459
+ * Clears all variables and imports from the persistent session namespace.
460
+ * The session remains active — you can continue calling run() after reset.
461
+ *
462
+ * @example
463
+ * ```typescript
464
+ * await python.run('x = 42')
465
+ * await python.resetSession()
466
+ * // x is now undefined
467
+ * ```
468
+ */
469
+ resetSession(): Promise<void>;
470
+ }
471
+ export default Python;
472
+ declare module '../feature.js' {
473
+ interface AvailableFeatures {
474
+ python: typeof Python;
475
+ }
476
+ }
477
+ //# sourceMappingURL=python.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../../../src/node/features/python.ts"],"names":[],"mappings":"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"}