@soederpop/luca 0.1.2 → 0.1.3

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 (366) hide show
  1. package/CLAUDE.md +2 -0
  2. package/assistants/codingAssistant/hooks.ts +1 -5
  3. package/assistants/inkbot/CORE.md +69 -0
  4. package/assistants/inkbot/hooks.ts +14 -0
  5. package/assistants/inkbot/tools.ts +47 -0
  6. package/commands/inkbot.ts +353 -0
  7. package/dist/agi/container.server.d.ts +63 -0
  8. package/dist/agi/container.server.d.ts.map +1 -0
  9. package/dist/agi/endpoints/ask.d.ts +20 -0
  10. package/dist/agi/endpoints/ask.d.ts.map +1 -0
  11. package/dist/agi/endpoints/conversations/[id].d.ts +27 -0
  12. package/dist/agi/endpoints/conversations/[id].d.ts.map +1 -0
  13. package/dist/agi/endpoints/conversations.d.ts +18 -0
  14. package/dist/agi/endpoints/conversations.d.ts.map +1 -0
  15. package/dist/agi/endpoints/experts.d.ts +8 -0
  16. package/dist/agi/endpoints/experts.d.ts.map +1 -0
  17. package/dist/agi/feature.d.ts +9 -0
  18. package/dist/agi/feature.d.ts.map +1 -0
  19. package/dist/agi/features/assistant.d.ts +509 -0
  20. package/dist/agi/features/assistant.d.ts.map +1 -0
  21. package/dist/agi/features/assistants-manager.d.ts +236 -0
  22. package/dist/agi/features/assistants-manager.d.ts.map +1 -0
  23. package/dist/agi/features/autonomous-assistant.d.ts +281 -0
  24. package/dist/agi/features/autonomous-assistant.d.ts.map +1 -0
  25. package/dist/agi/features/browser-use.d.ts +479 -0
  26. package/dist/agi/features/browser-use.d.ts.map +1 -0
  27. package/dist/agi/features/claude-code.d.ts +824 -0
  28. package/dist/agi/features/claude-code.d.ts.map +1 -0
  29. package/dist/agi/features/conversation-history.d.ts +245 -0
  30. package/dist/agi/features/conversation-history.d.ts.map +1 -0
  31. package/dist/agi/features/conversation.d.ts +464 -0
  32. package/dist/agi/features/conversation.d.ts.map +1 -0
  33. package/dist/agi/features/docs-reader.d.ts +72 -0
  34. package/dist/agi/features/docs-reader.d.ts.map +1 -0
  35. package/dist/agi/features/file-tools.d.ts +110 -0
  36. package/dist/agi/features/file-tools.d.ts.map +1 -0
  37. package/dist/agi/features/luca-coder.d.ts +323 -0
  38. package/dist/agi/features/luca-coder.d.ts.map +1 -0
  39. package/dist/agi/features/openai-codex.d.ts +381 -0
  40. package/dist/agi/features/openai-codex.d.ts.map +1 -0
  41. package/dist/agi/features/openapi.d.ts +200 -0
  42. package/dist/agi/features/openapi.d.ts.map +1 -0
  43. package/dist/agi/features/skills-library.d.ts +167 -0
  44. package/dist/agi/features/skills-library.d.ts.map +1 -0
  45. package/dist/agi/index.d.ts +5 -0
  46. package/dist/agi/index.d.ts.map +1 -0
  47. package/dist/agi/lib/interceptor-chain.d.ts +44 -0
  48. package/dist/agi/lib/interceptor-chain.d.ts.map +1 -0
  49. package/dist/agi/lib/token-counter.d.ts +13 -0
  50. package/dist/agi/lib/token-counter.d.ts.map +1 -0
  51. package/dist/bootstrap/generated.d.ts +5 -0
  52. package/dist/bootstrap/generated.d.ts.map +1 -0
  53. package/dist/browser.d.ts +12 -0
  54. package/dist/browser.d.ts.map +1 -0
  55. package/dist/bus.d.ts +29 -0
  56. package/dist/bus.d.ts.map +1 -0
  57. package/dist/cli/build-info.d.ts +4 -0
  58. package/dist/cli/build-info.d.ts.map +1 -0
  59. package/dist/cli/cli.d.ts +3 -0
  60. package/dist/cli/cli.d.ts.map +1 -0
  61. package/dist/client.d.ts +60 -0
  62. package/dist/client.d.ts.map +1 -0
  63. package/dist/clients/civitai/index.d.ts +472 -0
  64. package/dist/clients/civitai/index.d.ts.map +1 -0
  65. package/dist/clients/client-template.d.ts +30 -0
  66. package/dist/clients/client-template.d.ts.map +1 -0
  67. package/dist/clients/comfyui/index.d.ts +281 -0
  68. package/dist/clients/comfyui/index.d.ts.map +1 -0
  69. package/dist/clients/elevenlabs/index.d.ts +197 -0
  70. package/dist/clients/elevenlabs/index.d.ts.map +1 -0
  71. package/dist/clients/graph.d.ts +64 -0
  72. package/dist/clients/graph.d.ts.map +1 -0
  73. package/dist/clients/openai/index.d.ts +247 -0
  74. package/dist/clients/openai/index.d.ts.map +1 -0
  75. package/dist/clients/rest.d.ts +92 -0
  76. package/dist/clients/rest.d.ts.map +1 -0
  77. package/dist/clients/supabase/index.d.ts +176 -0
  78. package/dist/clients/supabase/index.d.ts.map +1 -0
  79. package/dist/clients/websocket.d.ts +127 -0
  80. package/dist/clients/websocket.d.ts.map +1 -0
  81. package/dist/command.d.ts +163 -0
  82. package/dist/command.d.ts.map +1 -0
  83. package/dist/commands/bootstrap.d.ts +20 -0
  84. package/dist/commands/bootstrap.d.ts.map +1 -0
  85. package/dist/commands/chat.d.ts +37 -0
  86. package/dist/commands/chat.d.ts.map +1 -0
  87. package/dist/commands/code.d.ts +28 -0
  88. package/dist/commands/code.d.ts.map +1 -0
  89. package/dist/commands/console.d.ts +22 -0
  90. package/dist/commands/console.d.ts.map +1 -0
  91. package/dist/commands/describe.d.ts +50 -0
  92. package/dist/commands/describe.d.ts.map +1 -0
  93. package/dist/commands/eval.d.ts +23 -0
  94. package/dist/commands/eval.d.ts.map +1 -0
  95. package/dist/commands/help.d.ts +25 -0
  96. package/dist/commands/help.d.ts.map +1 -0
  97. package/dist/commands/index.d.ts +18 -0
  98. package/dist/commands/index.d.ts.map +1 -0
  99. package/dist/commands/introspect.d.ts +24 -0
  100. package/dist/commands/introspect.d.ts.map +1 -0
  101. package/dist/commands/mcp.d.ts +35 -0
  102. package/dist/commands/mcp.d.ts.map +1 -0
  103. package/dist/commands/prompt.d.ts +38 -0
  104. package/dist/commands/prompt.d.ts.map +1 -0
  105. package/dist/commands/run.d.ts +24 -0
  106. package/dist/commands/run.d.ts.map +1 -0
  107. package/dist/commands/sandbox-mcp.d.ts +34 -0
  108. package/dist/commands/sandbox-mcp.d.ts.map +1 -0
  109. package/dist/commands/save-api-docs.d.ts +21 -0
  110. package/dist/commands/save-api-docs.d.ts.map +1 -0
  111. package/dist/commands/scaffold.d.ts +24 -0
  112. package/dist/commands/scaffold.d.ts.map +1 -0
  113. package/dist/commands/select.d.ts +22 -0
  114. package/dist/commands/select.d.ts.map +1 -0
  115. package/dist/commands/serve.d.ts +29 -0
  116. package/dist/commands/serve.d.ts.map +1 -0
  117. package/dist/container-describer.d.ts +144 -0
  118. package/dist/container-describer.d.ts.map +1 -0
  119. package/dist/container.d.ts +451 -0
  120. package/dist/container.d.ts.map +1 -0
  121. package/dist/endpoint.d.ts +113 -0
  122. package/dist/endpoint.d.ts.map +1 -0
  123. package/dist/feature.d.ts +47 -0
  124. package/dist/feature.d.ts.map +1 -0
  125. package/dist/graft.d.ts +29 -0
  126. package/dist/graft.d.ts.map +1 -0
  127. package/dist/hash-object.d.ts +8 -0
  128. package/dist/hash-object.d.ts.map +1 -0
  129. package/dist/helper.d.ts +209 -0
  130. package/dist/helper.d.ts.map +1 -0
  131. package/dist/introspection/generated.node.d.ts +44623 -0
  132. package/dist/introspection/generated.node.d.ts.map +1 -0
  133. package/dist/introspection/generated.web.d.ts +1412 -0
  134. package/dist/introspection/generated.web.d.ts.map +1 -0
  135. package/dist/introspection/index.d.ts +156 -0
  136. package/dist/introspection/index.d.ts.map +1 -0
  137. package/dist/introspection/scan.d.ts +147 -0
  138. package/dist/introspection/scan.d.ts.map +1 -0
  139. package/dist/node/container.d.ts +256 -0
  140. package/dist/node/container.d.ts.map +1 -0
  141. package/dist/node/feature.d.ts +9 -0
  142. package/dist/node/feature.d.ts.map +1 -0
  143. package/dist/node/features/container-link.d.ts +213 -0
  144. package/dist/node/features/container-link.d.ts.map +1 -0
  145. package/dist/node/features/content-db.d.ts +354 -0
  146. package/dist/node/features/content-db.d.ts.map +1 -0
  147. package/dist/node/features/disk-cache.d.ts +236 -0
  148. package/dist/node/features/disk-cache.d.ts.map +1 -0
  149. package/dist/node/features/dns.d.ts +511 -0
  150. package/dist/node/features/dns.d.ts.map +1 -0
  151. package/dist/node/features/docker.d.ts +485 -0
  152. package/dist/node/features/docker.d.ts.map +1 -0
  153. package/dist/node/features/downloader.d.ts +73 -0
  154. package/dist/node/features/downloader.d.ts.map +1 -0
  155. package/dist/node/features/figlet-fonts.d.ts +4 -0
  156. package/dist/node/features/figlet-fonts.d.ts.map +1 -0
  157. package/dist/node/features/file-manager.d.ts +177 -0
  158. package/dist/node/features/file-manager.d.ts.map +1 -0
  159. package/dist/node/features/fs.d.ts +635 -0
  160. package/dist/node/features/fs.d.ts.map +1 -0
  161. package/dist/node/features/git.d.ts +329 -0
  162. package/dist/node/features/git.d.ts.map +1 -0
  163. package/dist/node/features/google-auth.d.ts +200 -0
  164. package/dist/node/features/google-auth.d.ts.map +1 -0
  165. package/dist/node/features/google-calendar.d.ts +194 -0
  166. package/dist/node/features/google-calendar.d.ts.map +1 -0
  167. package/dist/node/features/google-docs.d.ts +138 -0
  168. package/dist/node/features/google-docs.d.ts.map +1 -0
  169. package/dist/node/features/google-drive.d.ts +202 -0
  170. package/dist/node/features/google-drive.d.ts.map +1 -0
  171. package/dist/node/features/google-mail.d.ts +221 -0
  172. package/dist/node/features/google-mail.d.ts.map +1 -0
  173. package/dist/node/features/google-sheets.d.ts +157 -0
  174. package/dist/node/features/google-sheets.d.ts.map +1 -0
  175. package/dist/node/features/grep.d.ts +207 -0
  176. package/dist/node/features/grep.d.ts.map +1 -0
  177. package/dist/node/features/helpers.d.ts +236 -0
  178. package/dist/node/features/helpers.d.ts.map +1 -0
  179. package/dist/node/features/ink.d.ts +332 -0
  180. package/dist/node/features/ink.d.ts.map +1 -0
  181. package/dist/node/features/ipc-socket.d.ts +298 -0
  182. package/dist/node/features/ipc-socket.d.ts.map +1 -0
  183. package/dist/node/features/json-tree.d.ts +140 -0
  184. package/dist/node/features/json-tree.d.ts.map +1 -0
  185. package/dist/node/features/networking.d.ts +373 -0
  186. package/dist/node/features/networking.d.ts.map +1 -0
  187. package/dist/node/features/nlp.d.ts +125 -0
  188. package/dist/node/features/nlp.d.ts.map +1 -0
  189. package/dist/node/features/opener.d.ts +93 -0
  190. package/dist/node/features/opener.d.ts.map +1 -0
  191. package/dist/node/features/os.d.ts +168 -0
  192. package/dist/node/features/os.d.ts.map +1 -0
  193. package/dist/node/features/package-finder.d.ts +419 -0
  194. package/dist/node/features/package-finder.d.ts.map +1 -0
  195. package/dist/node/features/postgres.d.ts +173 -0
  196. package/dist/node/features/postgres.d.ts.map +1 -0
  197. package/dist/node/features/proc.d.ts +285 -0
  198. package/dist/node/features/proc.d.ts.map +1 -0
  199. package/dist/node/features/process-manager.d.ts +427 -0
  200. package/dist/node/features/process-manager.d.ts.map +1 -0
  201. package/dist/node/features/python.d.ts +477 -0
  202. package/dist/node/features/python.d.ts.map +1 -0
  203. package/dist/node/features/redis.d.ts +247 -0
  204. package/dist/node/features/redis.d.ts.map +1 -0
  205. package/dist/node/features/repl.d.ts +84 -0
  206. package/dist/node/features/repl.d.ts.map +1 -0
  207. package/dist/node/features/runpod.d.ts +527 -0
  208. package/dist/node/features/runpod.d.ts.map +1 -0
  209. package/dist/node/features/secure-shell.d.ts +145 -0
  210. package/dist/node/features/secure-shell.d.ts.map +1 -0
  211. package/dist/node/features/semantic-search.d.ts +207 -0
  212. package/dist/node/features/semantic-search.d.ts.map +1 -0
  213. package/dist/node/features/sqlite.d.ts +180 -0
  214. package/dist/node/features/sqlite.d.ts.map +1 -0
  215. package/dist/node/features/telegram.d.ts +173 -0
  216. package/dist/node/features/telegram.d.ts.map +1 -0
  217. package/dist/node/features/transpiler.d.ts +51 -0
  218. package/dist/node/features/transpiler.d.ts.map +1 -0
  219. package/dist/node/features/tts.d.ts +108 -0
  220. package/dist/node/features/tts.d.ts.map +1 -0
  221. package/dist/node/features/ui.d.ts +562 -0
  222. package/dist/node/features/ui.d.ts.map +1 -0
  223. package/dist/node/features/vault.d.ts +90 -0
  224. package/dist/node/features/vault.d.ts.map +1 -0
  225. package/dist/node/features/vm.d.ts +285 -0
  226. package/dist/node/features/vm.d.ts.map +1 -0
  227. package/dist/node/features/yaml-tree.d.ts +118 -0
  228. package/dist/node/features/yaml-tree.d.ts.map +1 -0
  229. package/dist/node/features/yaml.d.ts +127 -0
  230. package/dist/node/features/yaml.d.ts.map +1 -0
  231. package/dist/node.d.ts +67 -0
  232. package/dist/node.d.ts.map +1 -0
  233. package/dist/python/generated.d.ts +2 -0
  234. package/dist/python/generated.d.ts.map +1 -0
  235. package/dist/react/index.d.ts +36 -0
  236. package/dist/react/index.d.ts.map +1 -0
  237. package/dist/registry.d.ts +97 -0
  238. package/dist/registry.d.ts.map +1 -0
  239. package/dist/scaffolds/generated.d.ts +13 -0
  240. package/dist/scaffolds/generated.d.ts.map +1 -0
  241. package/dist/scaffolds/template.d.ts +11 -0
  242. package/dist/scaffolds/template.d.ts.map +1 -0
  243. package/dist/schemas/base.d.ts +254 -0
  244. package/dist/schemas/base.d.ts.map +1 -0
  245. package/dist/selector.d.ts +130 -0
  246. package/dist/selector.d.ts.map +1 -0
  247. package/dist/server.d.ts +89 -0
  248. package/dist/server.d.ts.map +1 -0
  249. package/dist/servers/express.d.ts +104 -0
  250. package/dist/servers/express.d.ts.map +1 -0
  251. package/dist/servers/mcp.d.ts +201 -0
  252. package/dist/servers/mcp.d.ts.map +1 -0
  253. package/dist/servers/socket.d.ts +121 -0
  254. package/dist/servers/socket.d.ts.map +1 -0
  255. package/dist/state.d.ts +24 -0
  256. package/dist/state.d.ts.map +1 -0
  257. package/dist/web/clients/socket.d.ts +37 -0
  258. package/dist/web/clients/socket.d.ts.map +1 -0
  259. package/dist/web/container.d.ts +55 -0
  260. package/dist/web/container.d.ts.map +1 -0
  261. package/dist/web/extension.d.ts +4 -0
  262. package/dist/web/extension.d.ts.map +1 -0
  263. package/dist/web/feature.d.ts +8 -0
  264. package/dist/web/feature.d.ts.map +1 -0
  265. package/dist/web/features/asset-loader.d.ts +35 -0
  266. package/dist/web/features/asset-loader.d.ts.map +1 -0
  267. package/dist/web/features/container-link.d.ts +167 -0
  268. package/dist/web/features/container-link.d.ts.map +1 -0
  269. package/dist/web/features/esbuild.d.ts +51 -0
  270. package/dist/web/features/esbuild.d.ts.map +1 -0
  271. package/dist/web/features/helpers.d.ts +140 -0
  272. package/dist/web/features/helpers.d.ts.map +1 -0
  273. package/dist/web/features/network.d.ts +69 -0
  274. package/dist/web/features/network.d.ts.map +1 -0
  275. package/dist/web/features/speech.d.ts +71 -0
  276. package/dist/web/features/speech.d.ts.map +1 -0
  277. package/dist/web/features/vault.d.ts +62 -0
  278. package/dist/web/features/vault.d.ts.map +1 -0
  279. package/dist/web/features/vm.d.ts +48 -0
  280. package/dist/web/features/vm.d.ts.map +1 -0
  281. package/dist/web/features/voice-recognition.d.ts +96 -0
  282. package/dist/web/features/voice-recognition.d.ts.map +1 -0
  283. package/dist/web/shims/isomorphic-vm.d.ts +22 -0
  284. package/dist/web/shims/isomorphic-vm.d.ts.map +1 -0
  285. package/docs/apis/features/agi/assistant.md +1 -0
  286. package/docs/apis/features/agi/assistants-manager.md +62 -2
  287. package/docs/apis/features/agi/auto-assistant.md +11 -109
  288. package/docs/apis/features/agi/claude-code.md +138 -0
  289. package/docs/apis/features/agi/conversation.md +60 -31
  290. package/docs/apis/features/agi/luca-coder.md +407 -0
  291. package/docs/apis/features/agi/openapi.md +2 -2
  292. package/docs/apis/features/agi/skills-library.md +12 -0
  293. package/docs/apis/features/node/python.md +81 -11
  294. package/docs/apis/features/node/transpiler.md +74 -0
  295. package/docs/apis/features/web/esbuild.md +0 -6
  296. package/docs/apis/servers/mcp.md +2 -2
  297. package/docs/examples/entity.md +124 -0
  298. package/package.json +73 -21
  299. package/src/agi/feature.ts +13 -0
  300. package/src/agi/features/assistant.ts +36 -25
  301. package/src/agi/features/assistants-manager.ts +70 -5
  302. package/src/agi/features/autonomous-assistant.ts +1 -5
  303. package/src/agi/features/browser-use.ts +2 -2
  304. package/src/agi/features/claude-code.ts +165 -1
  305. package/src/agi/features/conversation-history.ts +2 -6
  306. package/src/agi/features/conversation.ts +95 -3
  307. package/src/agi/features/docs-reader.ts +2 -1
  308. package/src/agi/features/file-tools.ts +2 -2
  309. package/src/agi/features/luca-coder.ts +1 -5
  310. package/src/agi/features/openai-codex.ts +1 -1
  311. package/src/agi/features/openapi.ts +3 -3
  312. package/src/agi/features/skills-library.ts +87 -6
  313. package/src/agi/lib/interceptor-chain.ts +10 -0
  314. package/src/agi/lib/token-counter.ts +1 -1
  315. package/src/bootstrap/generated.ts +126 -1
  316. package/src/bus.ts +27 -5
  317. package/src/cli/build-info.ts +2 -2
  318. package/src/client.ts +2 -2
  319. package/src/clients/elevenlabs/index.ts +5 -0
  320. package/src/commands/bootstrap.ts +2 -1
  321. package/src/commands/chat.ts +1 -0
  322. package/src/commands/code.ts +4 -2
  323. package/src/commands/prompt.ts +34 -34
  324. package/src/commands/sandbox-mcp.ts +69 -163
  325. package/src/commands/save-api-docs.ts +10 -8
  326. package/src/commands/select.ts +8 -3
  327. package/src/container-describer.ts +70 -84
  328. package/src/container.ts +93 -3
  329. package/src/endpoint.ts +1 -1
  330. package/src/entity.ts +173 -0
  331. package/src/feature.ts +3 -3
  332. package/src/helper.ts +8 -4
  333. package/src/introspection/generated.agi.ts +1246 -798
  334. package/src/introspection/generated.node.ts +892 -798
  335. package/src/introspection/generated.web.ts +95 -3
  336. package/src/introspection/scan.ts +1 -1
  337. package/src/node/container.ts +1 -1
  338. package/src/node/features/content-db.ts +3 -3
  339. package/src/node/features/file-manager.ts +10 -9
  340. package/src/node/features/git.ts +5 -5
  341. package/src/node/features/helpers.ts +1 -1
  342. package/src/node/features/json-tree.ts +1 -1
  343. package/src/node/features/os.ts +3 -3
  344. package/src/node/features/package-finder.ts +1 -1
  345. package/src/node/features/process-manager.ts +1 -1
  346. package/src/node/features/python.ts +3 -3
  347. package/src/node/features/redis.ts +1 -1
  348. package/src/node/features/repl.ts +2 -2
  349. package/src/node/features/transpiler.ts +2 -2
  350. package/src/node/features/ui.ts +1 -1
  351. package/src/node/features/vm.ts +3 -3
  352. package/src/node/features/yaml-tree.ts +1 -1
  353. package/src/node.ts +1 -0
  354. package/src/python/generated.ts +1 -1
  355. package/src/scaffolds/generated.ts +1 -1
  356. package/src/selector.ts +74 -4
  357. package/src/server.ts +2 -2
  358. package/src/servers/mcp.ts +6 -6
  359. package/src/web/features/helpers.ts +1 -1
  360. package/src/web/features/network.ts +1 -0
  361. package/test/conversation.test.ts +220 -0
  362. package/tsconfig.build.json +12 -0
  363. package/tsconfig.json +1 -1
  364. package/scripts/examples/telegram-ink-ui.ts +0 -302
  365. package/scripts/examples/using-openai-codex.ts +0 -23
  366. package/scripts/examples/vm-loading-esm-modules.ts +0 -16
@@ -0,0 +1,173 @@
1
+ import { z } from 'zod';
2
+ import { SQL } from 'bun';
3
+ import { Feature } from '../feature.js';
4
+ import type { ContainerContext } from '../../container.js';
5
+ type SqlValue = string | number | boolean | bigint | Uint8Array | Buffer | null;
6
+ export declare const PostgresStateSchema: z.ZodObject<{
7
+ enabled: z.ZodDefault<z.ZodBoolean>;
8
+ connected: z.ZodDefault<z.ZodBoolean>;
9
+ url: z.ZodDefault<z.ZodString>;
10
+ lastQuery: z.ZodOptional<z.ZodString>;
11
+ lastRowCount: z.ZodOptional<z.ZodNumber>;
12
+ lastError: z.ZodOptional<z.ZodString>;
13
+ }, z.core.$loose>;
14
+ export declare const PostgresOptionsSchema: z.ZodObject<{
15
+ name: z.ZodOptional<z.ZodString>;
16
+ _cacheKey: z.ZodOptional<z.ZodString>;
17
+ cached: z.ZodOptional<z.ZodBoolean>;
18
+ enable: z.ZodOptional<z.ZodBoolean>;
19
+ url: z.ZodOptional<z.ZodString>;
20
+ }, z.core.$strip>;
21
+ export type PostgresState = z.infer<typeof PostgresStateSchema>;
22
+ export type PostgresOptions = z.infer<typeof PostgresOptionsSchema>;
23
+ export declare const PostgresEventsSchema: z.ZodObject<{
24
+ stateChange: z.ZodTuple<[z.ZodAny], null>;
25
+ enabled: z.ZodTuple<[], null>;
26
+ query: z.ZodTuple<[z.ZodString, z.ZodArray<z.ZodAny>, z.ZodNumber], null>;
27
+ execute: z.ZodTuple<[z.ZodString, z.ZodArray<z.ZodAny>, z.ZodNumber], null>;
28
+ error: z.ZodTuple<[z.ZodAny], null>;
29
+ closed: z.ZodTuple<[], null>;
30
+ }, z.core.$strip>;
31
+ /**
32
+ * Postgres feature for safe SQL execution through Bun's native SQL client.
33
+ *
34
+ * Supports:
35
+ * - parameterized query execution (`query` / `execute`)
36
+ * - tagged-template query execution (`sql`) to avoid manual placeholder wiring
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * const postgres = container.feature('postgres', { url: process.env.DATABASE_URL! })
41
+ *
42
+ * const users = await postgres.query<{ id: number; email: string }>(
43
+ * 'select id, email from users where id = $1',
44
+ * [123]
45
+ * )
46
+ *
47
+ * const rows = await postgres.sql<{ id: number }>`
48
+ * select id from users where email = ${'hello@example.com'}
49
+ * `
50
+ * ```
51
+ */
52
+ export declare class Postgres extends Feature<PostgresState, PostgresOptions> {
53
+ static shortcut: "features.postgres";
54
+ static stateSchema: z.ZodObject<{
55
+ enabled: z.ZodDefault<z.ZodBoolean>;
56
+ connected: z.ZodDefault<z.ZodBoolean>;
57
+ url: z.ZodDefault<z.ZodString>;
58
+ lastQuery: z.ZodOptional<z.ZodString>;
59
+ lastRowCount: z.ZodOptional<z.ZodNumber>;
60
+ lastError: z.ZodOptional<z.ZodString>;
61
+ }, z.core.$loose>;
62
+ static optionsSchema: z.ZodObject<{
63
+ name: z.ZodOptional<z.ZodString>;
64
+ _cacheKey: z.ZodOptional<z.ZodString>;
65
+ cached: z.ZodOptional<z.ZodBoolean>;
66
+ enable: z.ZodOptional<z.ZodBoolean>;
67
+ url: z.ZodOptional<z.ZodString>;
68
+ }, z.core.$strip>;
69
+ static eventsSchema: z.ZodObject<{
70
+ stateChange: z.ZodTuple<[z.ZodAny], null>;
71
+ enabled: z.ZodTuple<[], null>;
72
+ query: z.ZodTuple<[z.ZodString, z.ZodArray<z.ZodAny>, z.ZodNumber], null>;
73
+ execute: z.ZodTuple<[z.ZodString, z.ZodArray<z.ZodAny>, z.ZodNumber], null>;
74
+ error: z.ZodTuple<[z.ZodAny], null>;
75
+ closed: z.ZodTuple<[], null>;
76
+ }, z.core.$strip>;
77
+ private _client;
78
+ /**
79
+ * Default state for the Postgres feature before a connection is established.
80
+ * @returns The initial PostgresState with `connected: false` and empty `url`
81
+ */
82
+ get initialState(): PostgresState;
83
+ constructor(options: PostgresOptions, context: ContainerContext);
84
+ /**
85
+ * Returns the underlying Bun SQL postgres client.
86
+ * @returns The raw `SQL` instance used for all database operations
87
+ */
88
+ get client(): SQL;
89
+ /**
90
+ * Executes a SELECT-like query and returns result rows.
91
+ *
92
+ * Use postgres placeholders (`$1`, `$2`, ...) for `params`.
93
+ *
94
+ * @param queryText - The SQL query string with optional `$N` placeholders
95
+ * @param params - Ordered array of values to bind to the placeholders
96
+ * @returns Promise resolving to an array of typed result rows
97
+ * @throws {Error} When query text is empty or params contain `undefined`
98
+ *
99
+ * @example
100
+ * ```typescript
101
+ * const pg = container.feature('postgres', { url: process.env.DATABASE_URL! })
102
+ * const users = await pg.query<{ id: number; email: string }>(
103
+ * 'SELECT id, email FROM users WHERE active = $1',
104
+ * [true]
105
+ * )
106
+ * ```
107
+ */
108
+ query<T extends object = Record<string, unknown>>(queryText: string, params?: SqlValue[]): Promise<T[]>;
109
+ /**
110
+ * Executes a write/update/delete statement and returns metadata.
111
+ *
112
+ * Use postgres placeholders (`$1`, `$2`, ...) for `params`.
113
+ *
114
+ * @param queryText - The SQL statement string with optional `$N` placeholders
115
+ * @param params - Ordered array of values to bind to the placeholders
116
+ * @returns Promise resolving to `{ rowCount }` indicating affected rows
117
+ * @throws {Error} When query text is empty or params contain `undefined`
118
+ *
119
+ * @example
120
+ * ```typescript
121
+ * const pg = container.feature('postgres', { url: process.env.DATABASE_URL! })
122
+ * const { rowCount } = await pg.execute(
123
+ * 'UPDATE users SET active = $1 WHERE last_login < $2',
124
+ * [false, '2024-01-01']
125
+ * )
126
+ * console.log(`Deactivated ${rowCount} users`)
127
+ * ```
128
+ */
129
+ execute(queryText: string, params?: SqlValue[]): Promise<{
130
+ rowCount: number;
131
+ }>;
132
+ /**
133
+ * Safe tagged-template SQL helper.
134
+ *
135
+ * Values become bound parameters automatically, preventing SQL injection.
136
+ *
137
+ * @param strings - Template literal string segments
138
+ * @param values - Interpolated values that become bound `$N` parameters
139
+ * @returns Promise resolving to an array of typed result rows
140
+ *
141
+ * @example
142
+ * ```typescript
143
+ * const pg = container.feature('postgres', { url: process.env.DATABASE_URL! })
144
+ * const email = 'hello@example.com'
145
+ * const rows = await pg.sql<{ id: number }>`
146
+ * SELECT id FROM users WHERE email = ${email}
147
+ * `
148
+ * ```
149
+ */
150
+ sql<T extends object = Record<string, unknown>>(strings: TemplateStringsArray, ...values: SqlValue[]): Promise<T[]>;
151
+ /**
152
+ * Closes the postgres connection and updates feature state.
153
+ *
154
+ * Emits `closed` after the connection is torn down.
155
+ *
156
+ * @returns This Postgres feature instance for method chaining
157
+ *
158
+ * @example
159
+ * ```typescript
160
+ * const pg = container.feature('postgres', { url: process.env.DATABASE_URL! })
161
+ * // ... run queries ...
162
+ * await pg.close()
163
+ * ```
164
+ */
165
+ close(): Promise<this>;
166
+ }
167
+ export default Postgres;
168
+ declare module '../../feature.js' {
169
+ interface AvailableFeatures {
170
+ postgres: typeof Postgres;
171
+ }
172
+ }
173
+ //# sourceMappingURL=postgres.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../../src/node/features/postgres.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAE1D,KAAK,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,IAAI,CAAA;AAE/E,eAAO,MAAM,mBAAmB;;;;;;;iBAM9B,CAAA;AAEF,eAAO,MAAM,qBAAqB;;;;;;iBAEhC,CAAA;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAC/D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEnE,eAAO,MAAM,oBAAoB;;;;;;;iBAaH,CAAA;AAE9B;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,QAAS,SAAQ,OAAO,CAAC,aAAa,EAAE,eAAe,CAAC;IACnE,OAAgB,QAAQ,EAAG,mBAAmB,CAAS;IACvD,OAAgB,WAAW;;;;;;;sBAAsB;IACjD,OAAgB,aAAa;;;;;;sBAAwB;IACrD,OAAgB,YAAY;;;;;;;sBAAuB;IAGnD,OAAO,CAAC,OAAO,CAAK;IAEpB;;;OAGG;IACH,IAAa,YAAY,IAAI,aAAa,CAMzC;gBAEW,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,gBAAgB;IAgB/D;;;OAGG;IACH,IAAI,MAAM,QAET;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACG,KAAK,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAE,QAAQ,EAAO,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IA4BjH;;;;;;;;;;;;;;;;;;;OAmBG;IACG,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,GAAE,QAAQ,EAAO,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IA2BxF;;;;;;;;;;;;;;;;;OAiBG;IACG,GAAG,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAKzH;;;;;;;;;;;;;OAaG;IACG,KAAK;CAMZ;AAED,eAAe,QAAQ,CAAA;AACvB,OAAO,QAAQ,kBAAkB,CAAC;IAChC,UAAU,iBAAiB;QACzB,QAAQ,EAAE,OAAO,QAAQ,CAAA;KAC1B;CACF"}
@@ -0,0 +1,285 @@
1
+ import { Feature } from "../feature.js";
2
+ interface SpawnOptions {
3
+ /** Standard I/O mode for the child process */
4
+ stdio?: "ignore" | "inherit";
5
+ /** Stdout mode for the child process */
6
+ stdout?: "ignore" | "inherit";
7
+ /** Stderr mode for the child process */
8
+ stderr?: "ignore" | "inherit";
9
+ /** Working directory for the child process */
10
+ cwd?: string;
11
+ /** Environment variables to pass to the child process */
12
+ environment?: Record<string, any>;
13
+ /** Callback invoked when stderr data is received */
14
+ onError?: (data: string) => void;
15
+ /** Callback invoked when stdout data is received */
16
+ onOutput?: (data: string) => void;
17
+ /** Callback invoked when the process exits */
18
+ onExit?: (code: number) => void;
19
+ /** Callback invoked when the process starts */
20
+ onStart?: (childProcess: ChildProcess) => void;
21
+ }
22
+ interface RawSpawnOptions {
23
+ /** Working directory for the child process */
24
+ cwd?: string;
25
+ /** Environment variables to pass to the child process */
26
+ environment?: Record<string, any>;
27
+ /** Optional stdin payload written immediately after spawn */
28
+ stdin?: string | Buffer;
29
+ /** Stdout mode for the child process */
30
+ stdout?: "pipe" | "inherit" | "ignore";
31
+ /** Stderr mode for the child process */
32
+ stderr?: "pipe" | "inherit" | "ignore";
33
+ }
34
+ /**
35
+ * The ChildProcess feature provides utilities for executing external processes and commands.
36
+ *
37
+ * This feature wraps Node.js child process functionality to provide convenient methods
38
+ * for executing shell commands, spawning processes, and capturing their output.
39
+ * It supports both synchronous and asynchronous execution with various options.
40
+ *
41
+ * @example
42
+ * ```typescript
43
+ * const proc = container.feature('proc')
44
+ *
45
+ * // Execute a simple command synchronously
46
+ * const result = proc.exec('echo "Hello World"')
47
+ * console.log(result) // 'Hello World'
48
+ *
49
+ * // Execute and capture output asynchronously
50
+ * const { stdout, stderr } = await proc.spawnAndCapture('npm', ['--version'])
51
+ * console.log(`npm version: ${stdout}`)
52
+ *
53
+ * // Execute with callbacks for real-time output
54
+ * await proc.spawnAndCapture('npm', ['install'], {
55
+ * onOutput: (data) => console.log('OUT:', data),
56
+ * onError: (data) => console.log('ERR:', data)
57
+ * })
58
+ * ```
59
+ *
60
+ * @extends Feature
61
+ */
62
+ export declare class ChildProcess extends Feature {
63
+ static shortcut: "features.proc";
64
+ static stateSchema: import("zod").ZodObject<{
65
+ enabled: import("zod").ZodDefault<import("zod").ZodBoolean>;
66
+ }, import("zod/v4/core").$loose>;
67
+ static optionsSchema: import("zod").ZodObject<{
68
+ name: import("zod").ZodOptional<import("zod").ZodString>;
69
+ _cacheKey: import("zod").ZodOptional<import("zod").ZodString>;
70
+ cached: import("zod").ZodOptional<import("zod").ZodBoolean>;
71
+ enable: import("zod").ZodOptional<import("zod").ZodBoolean>;
72
+ }, import("zod/v4/core").$strip>;
73
+ /**
74
+ * Executes a command string and captures its output asynchronously.
75
+ *
76
+ * This method takes a complete command string, splits it into command and arguments,
77
+ * and executes it using the spawnAndCapture method. It's a convenient wrapper
78
+ * for simple command execution.
79
+ *
80
+ * @param {string} cmd - The complete command string to execute (e.g., "git status --porcelain")
81
+ * @param {any} [options] - Options to pass to the underlying spawn process
82
+ * @returns {Promise<object>} Promise resolving to execution result with stdout, stderr, exitCode, pid, and error
83
+ *
84
+ * @example
85
+ * ```typescript
86
+ * // Execute a git command
87
+ * const result = await proc.execAndCapture('git status --porcelain')
88
+ * if (result.exitCode === 0) {
89
+ * console.log('Git status:', result.stdout)
90
+ * } else {
91
+ * console.error('Git error:', result.stderr)
92
+ * }
93
+ *
94
+ * // Execute with options
95
+ * const result = await proc.execAndCapture('npm list --depth=0', {
96
+ * cwd: '/path/to/project'
97
+ * })
98
+ * ```
99
+ */
100
+ execAndCapture(cmd: string, options?: any): Promise<{
101
+ stderr: string;
102
+ stdout: string;
103
+ error: null | any;
104
+ exitCode: number;
105
+ pid: number | null;
106
+ }>;
107
+ /**
108
+ * Spawns a process and captures its output with real-time monitoring capabilities.
109
+ *
110
+ * This method provides comprehensive process execution with the ability to capture
111
+ * output, monitor real-time data streams, and handle process lifecycle events.
112
+ * It's ideal for long-running processes where you need to capture output as it happens.
113
+ *
114
+ * @param {string} command - The command to execute (e.g., 'node', 'npm', 'git')
115
+ * @param {string[]} args - Array of arguments to pass to the command
116
+ * @param {SpawnOptions} [options] - Options for process execution and monitoring
117
+ * @param {string} [options.cwd] - Working directory for the process
118
+ * @param {Function} [options.onOutput] - Callback for stdout data
119
+ * @param {Function} [options.onError] - Callback for stderr data
120
+ * @param {Function} [options.onExit] - Callback for process exit
121
+ * @returns {Promise<object>} Promise resolving to complete execution result
122
+ *
123
+ * @example
124
+ * ```typescript
125
+ * // Basic usage
126
+ * const result = await proc.spawnAndCapture('node', ['--version'])
127
+ * console.log(`Node version: ${result.stdout}`)
128
+ *
129
+ * // With real-time output monitoring
130
+ * const result = await proc.spawnAndCapture('npm', ['install'], {
131
+ * onOutput: (data) => console.log('📦 ', data.trim()),
132
+ * onError: (data) => console.error('❌ ', data.trim()),
133
+ * onExit: (code) => console.log(`Process exited with code ${code}`)
134
+ * })
135
+ *
136
+ * // Long-running process with custom working directory
137
+ * const buildResult = await proc.spawnAndCapture('npm', ['run', 'build'], {
138
+ * cwd: '/path/to/project',
139
+ * onOutput: (data) => {
140
+ * if (data.includes('error')) {
141
+ * console.error('Build error detected:', data)
142
+ * }
143
+ * }
144
+ * })
145
+ * ```
146
+ */
147
+ spawnAndCapture(command: string, args: string[], options?: SpawnOptions): Promise<{
148
+ stderr: string;
149
+ stdout: string;
150
+ error: null | any;
151
+ exitCode: number;
152
+ pid: number | null;
153
+ }>;
154
+ /**
155
+ * Spawn a raw child process and return the handle immediately.
156
+ *
157
+ * Useful when callers need streaming access to stdout/stderr and
158
+ * direct lifecycle control (for example, cancellation via kill()).
159
+ */
160
+ spawn(command: string, args?: string[], options?: RawSpawnOptions): import('child_process').ChildProcess;
161
+ /**
162
+ * Execute a command synchronously and return its output.
163
+ *
164
+ * Runs a shell command and waits for it to complete before returning.
165
+ * Useful for simple commands where you need the result immediately.
166
+ *
167
+ * @param command - The command to execute
168
+ * @param options - Options for command execution (cwd, encoding, etc.)
169
+ * @returns The trimmed stdout from the command execution
170
+ * @throws If the command fails or returns non-zero exit code
171
+ *
172
+ * @example
173
+ * ```typescript
174
+ * const branch = proc.exec('git branch --show-current')
175
+ * const version = proc.exec('node --version')
176
+ * ```
177
+ */
178
+ exec(command: string, options?: any): string;
179
+ execSync(command: string, options?: any): string;
180
+ /**
181
+ * Establishes a PID-file lock to prevent duplicate process instances.
182
+ *
183
+ * Writes the current process PID to the given file path. If the file already exists
184
+ * and the PID inside it refers to a running process, the current process exits immediately.
185
+ * Stale PID files (where the process is no longer running) are automatically cleaned up.
186
+ *
187
+ * Cleanup handlers are registered on SIGTERM, SIGINT, and process exit to remove the
188
+ * PID file when the process shuts down.
189
+ *
190
+ * @param {string} pidPath - Path to the PID file, resolved relative to container.cwd
191
+ * @returns {{ release: () => void }} Object with a release function to manually remove the lock
192
+ *
193
+ * @example
194
+ * ```typescript
195
+ * // In a command handler — exits if already running
196
+ * const lock = proc.establishLock('tmp/luca-main.pid')
197
+ *
198
+ * // Later, if you need to release manually
199
+ * lock.release()
200
+ * ```
201
+ */
202
+ establishLock(pidPath: string): {
203
+ release: () => void;
204
+ };
205
+ /**
206
+ * Kills a process by its PID.
207
+ *
208
+ * @param {number} pid - The process ID to kill
209
+ * @param {NodeJS.Signals | number} [signal='SIGTERM'] - The signal to send (e.g. 'SIGTERM', 'SIGKILL', 9)
210
+ * @returns {boolean} True if the signal was sent successfully, false if the process was not found
211
+ *
212
+ * @example
213
+ * ```typescript
214
+ * // Gracefully terminate a process
215
+ * proc.kill(12345)
216
+ *
217
+ * // Force kill a process
218
+ * proc.kill(12345, 'SIGKILL')
219
+ * ```
220
+ */
221
+ kill(pid: number, signal?: NodeJS.Signals | number): boolean;
222
+ /**
223
+ * Finds PIDs of processes listening on a given port.
224
+ *
225
+ * Uses `lsof` on macOS/Linux to discover which processes have a socket bound to the specified port.
226
+ *
227
+ * @param {number} port - The port number to search for
228
+ * @returns {number[]} Array of PIDs listening on that port (empty if none found)
229
+ *
230
+ * @example
231
+ * ```typescript
232
+ * const pids = proc.findPidsByPort(3000)
233
+ * console.log(`Processes on port 3000: ${pids}`)
234
+ *
235
+ * // Kill everything on port 3000
236
+ * for (const pid of proc.findPidsByPort(3000)) {
237
+ * proc.kill(pid)
238
+ * }
239
+ * ```
240
+ */
241
+ findPidsByPort(port: number): number[];
242
+ /**
243
+ * Registers a handler for a process signal (e.g. SIGINT, SIGTERM, SIGUSR1).
244
+ *
245
+ * Returns a cleanup function that removes the listener when called.
246
+ *
247
+ * @param {NodeJS.Signals} signal - The signal name to listen for (e.g. 'SIGINT', 'SIGTERM', 'SIGUSR2')
248
+ * @param {() => void} handler - The function to call when the signal is received
249
+ * @returns {() => void} A function that removes the listener when called
250
+ *
251
+ * @example
252
+ * ```typescript
253
+ * // Graceful shutdown
254
+ * proc.onSignal('SIGTERM', () => {
255
+ * console.log('Shutting down gracefully...')
256
+ * process.exit(0)
257
+ * })
258
+ *
259
+ * // Remove the listener later
260
+ * const off = proc.onSignal('SIGUSR2', () => {
261
+ * console.log('Received SIGUSR2')
262
+ * })
263
+ * off()
264
+ * ```
265
+ */
266
+ /**
267
+ * Checks whether any process matching a given name is currently running.
268
+ *
269
+ * Uses `pgrep -x` for an exact match against process names.
270
+ *
271
+ * @param {string} name - The process name to look for (e.g. 'afplay', 'node', 'nginx')
272
+ * @returns {boolean} True if at least one matching process is running
273
+ *
274
+ * @example
275
+ * ```typescript
276
+ * if (proc.isProcessRunning('afplay')) {
277
+ * console.log('Audio is currently playing')
278
+ * }
279
+ * ```
280
+ */
281
+ isProcessRunning(name: string): boolean;
282
+ onSignal(signal: NodeJS.Signals, handler: () => void): () => void;
283
+ }
284
+ export default ChildProcess;
285
+ //# sourceMappingURL=proc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proc.d.ts","sourceRoot":"","sources":["../../../src/node/features/proc.ts"],"names":[],"mappings":"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"}