@soederpop/luca 0.1.1 → 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 (369) hide show
  1. package/CLAUDE.md +2 -0
  2. package/assistants/codingAssistant/hooks.ts +3 -0
  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/scripts/test-assistant-hooks.ts +13 -0
  300. package/src/agi/feature.ts +13 -0
  301. package/src/agi/features/assistant.ts +36 -25
  302. package/src/agi/features/assistants-manager.ts +70 -5
  303. package/src/agi/features/autonomous-assistant.ts +1 -5
  304. package/src/agi/features/browser-use.ts +2 -2
  305. package/src/agi/features/claude-code.ts +165 -1
  306. package/src/agi/features/conversation-history.ts +2 -6
  307. package/src/agi/features/conversation.ts +95 -3
  308. package/src/agi/features/docs-reader.ts +2 -1
  309. package/src/agi/features/file-tools.ts +2 -2
  310. package/src/agi/features/luca-coder.ts +1 -5
  311. package/src/agi/features/openai-codex.ts +1 -1
  312. package/src/agi/features/openapi.ts +3 -3
  313. package/src/agi/features/skills-library.ts +90 -2
  314. package/src/agi/lib/interceptor-chain.ts +10 -0
  315. package/src/agi/lib/token-counter.ts +1 -1
  316. package/src/bootstrap/generated.ts +126 -1
  317. package/src/bus.ts +27 -5
  318. package/src/cli/build-info.ts +2 -2
  319. package/src/client.ts +2 -2
  320. package/src/clients/elevenlabs/index.ts +5 -0
  321. package/src/commands/bootstrap.ts +2 -1
  322. package/src/commands/chat.ts +1 -0
  323. package/src/commands/code.ts +4 -2
  324. package/src/commands/prompt.ts +34 -34
  325. package/src/commands/sandbox-mcp.ts +69 -163
  326. package/src/commands/save-api-docs.ts +10 -8
  327. package/src/commands/select.ts +8 -3
  328. package/src/container-describer.ts +70 -84
  329. package/src/container.ts +93 -3
  330. package/src/endpoint.ts +1 -1
  331. package/src/entity.ts +173 -0
  332. package/src/feature.ts +3 -3
  333. package/src/helper.ts +8 -4
  334. package/src/introspection/generated.agi.ts +1403 -929
  335. package/src/introspection/generated.node.ts +127 -33
  336. package/src/introspection/generated.web.ts +95 -3
  337. package/src/introspection/scan.ts +1 -1
  338. package/src/node/container.ts +1 -1
  339. package/src/node/features/content-db.ts +3 -3
  340. package/src/node/features/file-manager.ts +10 -9
  341. package/src/node/features/git.ts +5 -5
  342. package/src/node/features/helpers.ts +1 -1
  343. package/src/node/features/json-tree.ts +1 -1
  344. package/src/node/features/os.ts +3 -3
  345. package/src/node/features/package-finder.ts +1 -1
  346. package/src/node/features/process-manager.ts +1 -1
  347. package/src/node/features/python.ts +3 -3
  348. package/src/node/features/redis.ts +1 -1
  349. package/src/node/features/repl.ts +2 -2
  350. package/src/node/features/transpiler.ts +34 -9
  351. package/src/node/features/ui.ts +1 -1
  352. package/src/node/features/vm.ts +6 -5
  353. package/src/node/features/yaml-tree.ts +1 -1
  354. package/src/node.ts +1 -0
  355. package/src/python/generated.ts +1 -1
  356. package/src/scaffolds/generated.ts +1 -1
  357. package/src/selector.ts +74 -4
  358. package/src/server.ts +2 -2
  359. package/src/servers/mcp.ts +6 -6
  360. package/src/web/features/helpers.ts +1 -1
  361. package/src/web/features/network.ts +1 -0
  362. package/test/assistant.test.ts +72 -0
  363. package/test/conversation.test.ts +220 -0
  364. package/test/vm-loadmodule.test.ts +213 -0
  365. package/tsconfig.build.json +12 -0
  366. package/tsconfig.json +1 -1
  367. package/scripts/examples/telegram-ink-ui.ts +0 -302
  368. package/scripts/examples/using-openai-codex.ts +0 -23
  369. package/scripts/examples/vm-loading-esm-modules.ts +0 -16
@@ -0,0 +1,221 @@
1
+ import { z } from 'zod';
2
+ import { Feature } from '../feature.js';
3
+ import type { GoogleAuth } from './google-auth.js';
4
+ export type MailMessage = {
5
+ id: string;
6
+ threadId: string;
7
+ labelIds: string[];
8
+ snippet: string;
9
+ subject: string;
10
+ from: string;
11
+ to: string;
12
+ cc?: string;
13
+ date: string;
14
+ body: string;
15
+ bodyHtml?: string;
16
+ isUnread: boolean;
17
+ hasAttachments: boolean;
18
+ attachments: MailAttachment[];
19
+ };
20
+ export type MailAttachment = {
21
+ filename: string;
22
+ mimeType: string;
23
+ size: number;
24
+ attachmentId: string;
25
+ };
26
+ export type MailThread = {
27
+ id: string;
28
+ snippet: string;
29
+ historyId: string;
30
+ messages: MailMessage[];
31
+ };
32
+ export type MailLabel = {
33
+ id: string;
34
+ name: string;
35
+ type: string;
36
+ messagesTotal?: number;
37
+ messagesUnread?: number;
38
+ };
39
+ export type SearchMailOptions = {
40
+ query?: string;
41
+ from?: string;
42
+ to?: string;
43
+ subject?: string;
44
+ after?: string;
45
+ before?: string;
46
+ hasAttachment?: boolean;
47
+ label?: string;
48
+ isUnread?: boolean;
49
+ maxResults?: number;
50
+ pageToken?: string;
51
+ };
52
+ export type MailMessageList = {
53
+ messages: MailMessage[];
54
+ nextPageToken?: string;
55
+ resultSizeEstimate?: number;
56
+ };
57
+ export declare const GoogleMailStateSchema: z.ZodObject<{
58
+ enabled: z.ZodDefault<z.ZodBoolean>;
59
+ lastQuery: z.ZodOptional<z.ZodString>;
60
+ lastResultCount: z.ZodOptional<z.ZodNumber>;
61
+ lastError: z.ZodOptional<z.ZodString>;
62
+ watchExpiration: z.ZodOptional<z.ZodString>;
63
+ }, z.core.$loose>;
64
+ export type GoogleMailState = z.infer<typeof GoogleMailStateSchema>;
65
+ export declare const GoogleMailOptionsSchema: z.ZodObject<{
66
+ name: z.ZodOptional<z.ZodString>;
67
+ _cacheKey: z.ZodOptional<z.ZodString>;
68
+ cached: z.ZodOptional<z.ZodBoolean>;
69
+ enable: z.ZodOptional<z.ZodBoolean>;
70
+ auth: z.ZodOptional<z.ZodAny>;
71
+ userId: z.ZodOptional<z.ZodString>;
72
+ pollInterval: z.ZodOptional<z.ZodNumber>;
73
+ format: z.ZodOptional<z.ZodEnum<{
74
+ metadata: "metadata";
75
+ full: "full";
76
+ minimal: "minimal";
77
+ raw: "raw";
78
+ }>>;
79
+ }, z.core.$strip>;
80
+ export type GoogleMailOptions = z.infer<typeof GoogleMailOptionsSchema>;
81
+ export declare const GoogleMailEventsSchema: z.ZodObject<{
82
+ stateChange: z.ZodTuple<[z.ZodAny], null>;
83
+ enabled: z.ZodTuple<[], null>;
84
+ messagesFetched: z.ZodTuple<[z.ZodNumber], null>;
85
+ newMail: z.ZodTuple<[z.ZodArray<z.ZodAny>], null>;
86
+ watchStarted: z.ZodTuple<[], null>;
87
+ watchStopped: z.ZodTuple<[], null>;
88
+ error: z.ZodTuple<[z.ZodAny], null>;
89
+ }, z.core.$strip>;
90
+ /**
91
+ * Google Mail feature for searching, reading, and watching Gmail messages.
92
+ *
93
+ * Depends on the googleAuth feature for authentication. Creates a Gmail v1 API
94
+ * client lazily. Supports Gmail search query syntax, individual message reading,
95
+ * and polling-based new mail detection with event emission.
96
+ *
97
+ * @example
98
+ * ```typescript
99
+ * const mail = container.feature('googleMail')
100
+ *
101
+ * // Search by sender
102
+ * const fromBoss = await mail.search({ from: 'boss@company.com' })
103
+ *
104
+ * // Use Gmail query string
105
+ * const unread = await mail.search({ query: 'is:unread category:primary' })
106
+ *
107
+ * // Read a specific message
108
+ * const msg = await mail.getMessage('message-id-here')
109
+ *
110
+ * // Get a full thread
111
+ * const thread = await mail.getThread('thread-id-here')
112
+ *
113
+ * // List labels
114
+ * const labels = await mail.listLabels()
115
+ *
116
+ * // Watch for new mail (polls and emits 'newMail' events)
117
+ * mail.on('newMail', (messages) => {
118
+ * console.log(`Got ${messages.length} new messages!`)
119
+ * })
120
+ * await mail.startWatching()
121
+ *
122
+ * // Stop watching
123
+ * mail.stopWatching()
124
+ * ```
125
+ */
126
+ export declare class GoogleMail extends Feature<GoogleMailState, GoogleMailOptions> {
127
+ static shortcut: "features.googleMail";
128
+ static stateSchema: z.ZodObject<{
129
+ enabled: z.ZodDefault<z.ZodBoolean>;
130
+ lastQuery: z.ZodOptional<z.ZodString>;
131
+ lastResultCount: z.ZodOptional<z.ZodNumber>;
132
+ lastError: z.ZodOptional<z.ZodString>;
133
+ watchExpiration: z.ZodOptional<z.ZodString>;
134
+ }, z.core.$loose>;
135
+ static optionsSchema: z.ZodObject<{
136
+ name: z.ZodOptional<z.ZodString>;
137
+ _cacheKey: z.ZodOptional<z.ZodString>;
138
+ cached: z.ZodOptional<z.ZodBoolean>;
139
+ enable: z.ZodOptional<z.ZodBoolean>;
140
+ auth: z.ZodOptional<z.ZodAny>;
141
+ userId: z.ZodOptional<z.ZodString>;
142
+ pollInterval: z.ZodOptional<z.ZodNumber>;
143
+ format: z.ZodOptional<z.ZodEnum<{
144
+ metadata: "metadata";
145
+ full: "full";
146
+ minimal: "minimal";
147
+ raw: "raw";
148
+ }>>;
149
+ }, z.core.$strip>;
150
+ static eventsSchema: z.ZodObject<{
151
+ stateChange: z.ZodTuple<[z.ZodAny], null>;
152
+ enabled: z.ZodTuple<[], null>;
153
+ messagesFetched: z.ZodTuple<[z.ZodNumber], null>;
154
+ newMail: z.ZodTuple<[z.ZodArray<z.ZodAny>], null>;
155
+ watchStarted: z.ZodTuple<[], null>;
156
+ watchStopped: z.ZodTuple<[], null>;
157
+ error: z.ZodTuple<[z.ZodAny], null>;
158
+ }, z.core.$strip>;
159
+ private _gmail?;
160
+ private _watchTimer?;
161
+ private _lastHistoryId?;
162
+ get initialState(): GoogleMailState;
163
+ /** Access the google-auth feature lazily. */
164
+ get auth(): GoogleAuth;
165
+ /** Default user ID from options or 'me'. */
166
+ get userId(): string;
167
+ /** Default message format from options or 'full'. */
168
+ get defaultFormat(): 'full' | 'metadata' | 'minimal' | 'raw';
169
+ /** Polling interval from options or 30 seconds. */
170
+ get pollInterval(): number;
171
+ /** Get or create the Gmail v1 API client. */
172
+ private getGmail;
173
+ /**
174
+ * Search for messages using Gmail query syntax and/or structured filters.
175
+ *
176
+ * @param options - Search filters including query, from, to, subject, date ranges
177
+ * @returns Messages array with optional nextPageToken
178
+ */
179
+ search(options?: SearchMailOptions): Promise<MailMessageList>;
180
+ /**
181
+ * Get a single message by ID.
182
+ *
183
+ * @param messageId - The message ID
184
+ * @param format - Message format (defaults to options.format or 'full')
185
+ * @returns The full mail message
186
+ */
187
+ getMessage(messageId: string, format?: 'full' | 'metadata' | 'minimal' | 'raw'): Promise<MailMessage>;
188
+ /**
189
+ * Get a full thread with all its messages.
190
+ *
191
+ * @param threadId - The thread ID
192
+ * @returns The thread with all messages
193
+ */
194
+ getThread(threadId: string): Promise<MailThread>;
195
+ /**
196
+ * List all labels for the authenticated user.
197
+ *
198
+ * @returns Array of label objects
199
+ */
200
+ listLabels(): Promise<MailLabel[]>;
201
+ /**
202
+ * Start watching for new mail by polling at a regular interval.
203
+ * Emits 'newMail' events with an array of new messages when they arrive.
204
+ *
205
+ * Uses Gmail history API to efficiently detect only new messages since the last check.
206
+ */
207
+ startWatching(): Promise<void>;
208
+ /**
209
+ * Stop watching for new mail.
210
+ */
211
+ stopWatching(): void;
212
+ /** Check for new messages since last history ID using Gmail history API. */
213
+ private _checkForNewMail;
214
+ }
215
+ declare module '../../feature' {
216
+ interface AvailableFeatures {
217
+ googleMail: typeof GoogleMail;
218
+ }
219
+ }
220
+ export default GoogleMail;
221
+ //# sourceMappingURL=google-mail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-mail.d.ts","sourceRoot":"","sources":["../../../src/node/features/google-mail.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,157 @@
1
+ import { z } from 'zod';
2
+ import { Feature } from '../feature.js';
3
+ import type { GoogleAuth } from './google-auth.js';
4
+ export type SpreadsheetMeta = {
5
+ spreadsheetId: string;
6
+ title: string;
7
+ locale: string;
8
+ sheets: SheetInfo[];
9
+ };
10
+ export type SheetInfo = {
11
+ sheetId: number;
12
+ title: string;
13
+ index: number;
14
+ rowCount: number;
15
+ columnCount: number;
16
+ };
17
+ export declare const GoogleSheetsStateSchema: z.ZodObject<{
18
+ enabled: z.ZodDefault<z.ZodBoolean>;
19
+ lastSpreadsheetId: z.ZodOptional<z.ZodString>;
20
+ lastSheetName: z.ZodOptional<z.ZodString>;
21
+ lastRowCount: z.ZodOptional<z.ZodNumber>;
22
+ lastError: z.ZodOptional<z.ZodString>;
23
+ }, z.core.$loose>;
24
+ export type GoogleSheetsState = z.infer<typeof GoogleSheetsStateSchema>;
25
+ export declare const GoogleSheetsOptionsSchema: z.ZodObject<{
26
+ name: z.ZodOptional<z.ZodString>;
27
+ _cacheKey: z.ZodOptional<z.ZodString>;
28
+ cached: z.ZodOptional<z.ZodBoolean>;
29
+ enable: z.ZodOptional<z.ZodBoolean>;
30
+ auth: z.ZodOptional<z.ZodAny>;
31
+ defaultSpreadsheetId: z.ZodOptional<z.ZodString>;
32
+ }, z.core.$strip>;
33
+ export type GoogleSheetsOptions = z.infer<typeof GoogleSheetsOptionsSchema>;
34
+ export declare const GoogleSheetsEventsSchema: z.ZodObject<{
35
+ stateChange: z.ZodTuple<[z.ZodAny], null>;
36
+ enabled: z.ZodTuple<[], null>;
37
+ dataFetched: z.ZodTuple<[z.ZodNumber], null>;
38
+ error: z.ZodTuple<[z.ZodAny], null>;
39
+ }, z.core.$strip>;
40
+ /**
41
+ * Google Sheets feature for reading spreadsheet data as JSON, CSV, or raw arrays.
42
+ *
43
+ * Depends on the googleAuth feature for authentication. Creates a Sheets v4 API
44
+ * client lazily and provides convenient methods for reading tabular data.
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * const sheets = container.feature('googleSheets', {
49
+ * defaultSpreadsheetId: '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms'
50
+ * })
51
+ *
52
+ * // Read as JSON objects (first row = headers)
53
+ * const data = await sheets.getAsJson('Sheet1')
54
+ * // => [{ name: 'Alice', age: '30' }, { name: 'Bob', age: '25' }]
55
+ *
56
+ * // Read as CSV string
57
+ * const csv = await sheets.getAsCsv('Revenue')
58
+ *
59
+ * // Read a specific range
60
+ * const values = await sheets.getRange('Sheet1!A1:D10')
61
+ *
62
+ * // Save to file
63
+ * await sheets.saveAsJson('./data/export.json')
64
+ * ```
65
+ */
66
+ export declare class GoogleSheets extends Feature<GoogleSheetsState, GoogleSheetsOptions> {
67
+ static shortcut: "features.googleSheets";
68
+ static stateSchema: z.ZodObject<{
69
+ enabled: z.ZodDefault<z.ZodBoolean>;
70
+ lastSpreadsheetId: z.ZodOptional<z.ZodString>;
71
+ lastSheetName: z.ZodOptional<z.ZodString>;
72
+ lastRowCount: z.ZodOptional<z.ZodNumber>;
73
+ lastError: z.ZodOptional<z.ZodString>;
74
+ }, z.core.$loose>;
75
+ static optionsSchema: z.ZodObject<{
76
+ name: z.ZodOptional<z.ZodString>;
77
+ _cacheKey: z.ZodOptional<z.ZodString>;
78
+ cached: z.ZodOptional<z.ZodBoolean>;
79
+ enable: z.ZodOptional<z.ZodBoolean>;
80
+ auth: z.ZodOptional<z.ZodAny>;
81
+ defaultSpreadsheetId: z.ZodOptional<z.ZodString>;
82
+ }, z.core.$strip>;
83
+ static eventsSchema: z.ZodObject<{
84
+ stateChange: z.ZodTuple<[z.ZodAny], null>;
85
+ enabled: z.ZodTuple<[], null>;
86
+ dataFetched: z.ZodTuple<[z.ZodNumber], null>;
87
+ error: z.ZodTuple<[z.ZodAny], null>;
88
+ }, z.core.$strip>;
89
+ private _sheets?;
90
+ get initialState(): GoogleSheetsState;
91
+ /** Access the google-auth feature lazily. */
92
+ get auth(): GoogleAuth;
93
+ /** Get or create the Sheets v4 API client. */
94
+ private getSheets;
95
+ /** Resolve spreadsheet ID from argument or default option. */
96
+ private resolveId;
97
+ /**
98
+ * Get spreadsheet metadata including title, locale, and sheet list.
99
+ *
100
+ * @param spreadsheetId - The spreadsheet ID (defaults to options.defaultSpreadsheetId)
101
+ */
102
+ getSpreadsheet(spreadsheetId?: string): Promise<SpreadsheetMeta>;
103
+ /**
104
+ * List all sheets (tabs) in a spreadsheet.
105
+ *
106
+ * @param spreadsheetId - The spreadsheet ID
107
+ */
108
+ listSheets(spreadsheetId?: string): Promise<SheetInfo[]>;
109
+ /**
110
+ * Read a range of values from a sheet.
111
+ *
112
+ * @param range - A1 notation range (e.g. "Sheet1!A1:D10" or "Sheet1" for entire sheet)
113
+ * @param spreadsheetId - The spreadsheet ID
114
+ * @returns Raw values as a 2D string array
115
+ */
116
+ getRange(range: string, spreadsheetId?: string): Promise<string[][]>;
117
+ /**
118
+ * Read a sheet as an array of JSON objects.
119
+ * The first row is treated as headers; subsequent rows become objects keyed by those headers.
120
+ *
121
+ * @param sheetName - Name of the sheet tab (if omitted, reads the first sheet)
122
+ * @param spreadsheetId - The spreadsheet ID
123
+ */
124
+ getAsJson<T extends Record<string, any> = Record<string, string>>(sheetName?: string, spreadsheetId?: string): Promise<T[]>;
125
+ /**
126
+ * Read a sheet and return it as a CSV string.
127
+ *
128
+ * @param sheetName - Name of the sheet tab (if omitted, reads the first sheet)
129
+ * @param spreadsheetId - The spreadsheet ID
130
+ */
131
+ getAsCsv(sheetName?: string, spreadsheetId?: string): Promise<string>;
132
+ /**
133
+ * Download sheet data as JSON and save to a local file.
134
+ *
135
+ * @param localPath - Local file path (resolved relative to container cwd)
136
+ * @param sheetName - Sheet tab name (defaults to first sheet)
137
+ * @param spreadsheetId - The spreadsheet ID
138
+ * @returns Absolute path of the saved file
139
+ */
140
+ saveAsJson(localPath: string, sheetName?: string, spreadsheetId?: string): Promise<string>;
141
+ /**
142
+ * Download sheet data as CSV and save to a local file.
143
+ *
144
+ * @param localPath - Local file path (resolved relative to container cwd)
145
+ * @param sheetName - Sheet tab name (defaults to first sheet)
146
+ * @param spreadsheetId - The spreadsheet ID
147
+ * @returns Absolute path of the saved file
148
+ */
149
+ saveAsCsv(localPath: string, sheetName?: string, spreadsheetId?: string): Promise<string>;
150
+ }
151
+ declare module '../../feature' {
152
+ interface AvailableFeatures {
153
+ googleSheets: typeof GoogleSheets;
154
+ }
155
+ }
156
+ export default GoogleSheets;
157
+ //# sourceMappingURL=google-sheets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-sheets.d.ts","sourceRoot":"","sources":["../../../src/node/features/google-sheets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,MAAM,MAAM,eAAe,GAAG;IAC5B,aAAa,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,SAAS,EAAE,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,uBAAuB;;;;;;iBASlC,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAEvE,eAAO,MAAM,yBAAyB;;;;;;;iBAIpC,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAE3E,eAAO,MAAM,wBAAwB;;;;;iBAInC,CAAA;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,YAAa,SAAQ,OAAO,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;IAC/E,OAAgB,QAAQ,EAAG,uBAAuB,CAAS;IAC3D,OAAgB,WAAW;;;;;;sBAA0B;IACrD,OAAgB,aAAa;;;;;;;sBAA4B;IACzD,OAAgB,YAAY;;;;;sBAA2B;IAGvD,OAAO,CAAC,OAAO,CAAC,CAAkB;IAElC,IAAa,YAAY,IAAI,iBAAiB,CAE7C;IAED,6CAA6C;IAC7C,IAAI,IAAI,IAAI,UAAU,CAMrB;IAGD,8CAA8C;YAChC,SAAS;IAOvB,8DAA8D;IAC9D,OAAO,CAAC,SAAS;IAMjB;;;;OAIG;IACG,cAAc,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IA2BtE;;;;OAIG;IACG,UAAU,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAK9D;;;;;;OAMG;IACG,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAyB1E;;;;;;OAMG;IACG,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpE,SAAS,CAAC,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,CAAC,EAAE,CAAC;IAyBf;;;;;OAKG;IACG,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAuB3E;;;;;;;OAOG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOhG;;;;;;;OAOG;IACG,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAMhG;AAED,OAAO,QAAQ,eAAe,CAAC;IAC7B,UAAU,iBAAiB;QACzB,YAAY,EAAE,OAAO,YAAY,CAAA;KAClC;CACF;AAED,eAAe,YAAY,CAAA"}
@@ -0,0 +1,207 @@
1
+ import { Feature } from '../feature.js';
2
+ export type GrepMatch = {
3
+ file: string;
4
+ line: number;
5
+ column?: number;
6
+ content: string;
7
+ };
8
+ export type GrepOptions = {
9
+ /** Pattern to search for (string or regex) */
10
+ pattern: string;
11
+ /** Directory or file to search in (defaults to container cwd) */
12
+ path?: string;
13
+ /** Glob patterns to include (e.g. '*.ts') */
14
+ include?: string | string[];
15
+ /** Glob patterns to exclude (e.g. 'node_modules') */
16
+ exclude?: string | string[];
17
+ /** Case insensitive search */
18
+ ignoreCase?: boolean;
19
+ /** Treat pattern as a fixed string, not regex */
20
+ fixedStrings?: boolean;
21
+ /** Search recursively (default: true) */
22
+ recursive?: boolean;
23
+ /** Include hidden files */
24
+ hidden?: boolean;
25
+ /** Max number of results to return */
26
+ maxResults?: number;
27
+ /** Number of context lines before match */
28
+ before?: number;
29
+ /** Number of context lines after match */
30
+ after?: number;
31
+ /** Only return filenames, not match details */
32
+ filesOnly?: boolean;
33
+ /** Invert match (return lines that don't match) */
34
+ invert?: boolean;
35
+ /** Match whole words only */
36
+ wordMatch?: boolean;
37
+ /** Additional raw flags to pass to grep/ripgrep */
38
+ rawFlags?: string[];
39
+ };
40
+ /**
41
+ * The Grep feature provides utilities for searching file contents using ripgrep (rg) or grep.
42
+ *
43
+ * Returns structured results as arrays of `{ file, line, column, content }` objects
44
+ * with paths relative to the container cwd. Also provides convenience methods for
45
+ * common search patterns.
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * const grep = container.feature('grep')
50
+ *
51
+ * // Basic search
52
+ * const results = await grep.search({ pattern: 'TODO' })
53
+ * // [{ file: 'src/index.ts', line: 42, column: 5, content: '// TODO: fix this' }, ...]
54
+ *
55
+ * // Find all imports of a module
56
+ * const imports = await grep.imports('lodash')
57
+ *
58
+ * // Find function/class/variable definitions
59
+ * const defs = await grep.definitions('MyClass')
60
+ *
61
+ * // Just get filenames containing a pattern
62
+ * const files = await grep.filesContaining('API_KEY')
63
+ * ```
64
+ *
65
+ * @extends Feature
66
+ */
67
+ export declare class Grep extends Feature {
68
+ static shortcut: "features.grep";
69
+ static stateSchema: import("zod").ZodObject<{
70
+ enabled: import("zod").ZodDefault<import("zod").ZodBoolean>;
71
+ }, import("zod/v4/core").$loose>;
72
+ static optionsSchema: import("zod").ZodObject<{
73
+ name: import("zod").ZodOptional<import("zod").ZodString>;
74
+ _cacheKey: import("zod").ZodOptional<import("zod").ZodString>;
75
+ cached: import("zod").ZodOptional<import("zod").ZodBoolean>;
76
+ enable: import("zod").ZodOptional<import("zod").ZodBoolean>;
77
+ }, import("zod/v4/core").$strip>;
78
+ private _hasRipgrep;
79
+ private _rgPath;
80
+ private _grepPath;
81
+ /** Whether ripgrep (rg) is available on this system */
82
+ get hasRipgrep(): boolean;
83
+ /** Resolved path to the rg binary */
84
+ get rgPath(): string;
85
+ /** Resolved path to the grep binary */
86
+ get grepPath(): string;
87
+ /**
88
+ * Search for a pattern in files and return structured results.
89
+ *
90
+ * @param {GrepOptions} options - Search options
91
+ * @returns {Promise<GrepMatch[]>} Array of match objects with relative file paths
92
+ *
93
+ * @example
94
+ * ```typescript
95
+ * // Search for a pattern in TypeScript files
96
+ * const results = await grep.search({
97
+ * pattern: 'useState',
98
+ * include: '*.tsx',
99
+ * exclude: 'node_modules'
100
+ * })
101
+ *
102
+ * // Case insensitive search with context
103
+ * const results = await grep.search({
104
+ * pattern: 'error',
105
+ * ignoreCase: true,
106
+ * before: 2,
107
+ * after: 2
108
+ * })
109
+ * ```
110
+ */
111
+ search(options: GrepOptions): Promise<GrepMatch[]>;
112
+ /**
113
+ * Find files containing a pattern. Returns just the relative file paths.
114
+ *
115
+ * @param {string} pattern - The pattern to search for
116
+ * @param {Omit<GrepOptions, 'pattern' | 'filesOnly'>} [options] - Additional search options
117
+ * @returns {Promise<string[]>} Array of relative file paths
118
+ *
119
+ * @example
120
+ * ```typescript
121
+ * const files = await grep.filesContaining('TODO')
122
+ * // ['src/index.ts', 'src/utils.ts']
123
+ * ```
124
+ */
125
+ filesContaining(pattern: string, options?: Omit<GrepOptions, 'pattern' | 'filesOnly'>): Promise<string[]>;
126
+ /**
127
+ * Find import/require statements for a module or path.
128
+ *
129
+ * @param {string} moduleOrPath - The module name or path to search for in imports
130
+ * @param {Omit<GrepOptions, 'pattern'>} [options] - Additional search options
131
+ * @returns {Promise<GrepMatch[]>} Array of matches
132
+ *
133
+ * @example
134
+ * ```typescript
135
+ * const lodashImports = await grep.imports('lodash')
136
+ * const localImports = await grep.imports('./utils')
137
+ * ```
138
+ */
139
+ imports(moduleOrPath: string, options?: Omit<GrepOptions, 'pattern'>): Promise<GrepMatch[]>;
140
+ /**
141
+ * Find function, class, type, or variable definitions matching a name.
142
+ *
143
+ * @param {string} name - The identifier name to search for definitions of
144
+ * @param {Omit<GrepOptions, 'pattern'>} [options] - Additional search options
145
+ * @returns {Promise<GrepMatch[]>} Array of matches
146
+ *
147
+ * @example
148
+ * ```typescript
149
+ * const defs = await grep.definitions('MyComponent')
150
+ * const classDefs = await grep.definitions('UserService')
151
+ * ```
152
+ */
153
+ definitions(name: string, options?: Omit<GrepOptions, 'pattern'>): Promise<GrepMatch[]>;
154
+ /**
155
+ * Find TODO, FIXME, HACK, and XXX comments.
156
+ *
157
+ * @param {Omit<GrepOptions, 'pattern'>} [options] - Additional search options
158
+ * @returns {Promise<GrepMatch[]>} Array of matches
159
+ *
160
+ * @example
161
+ * ```typescript
162
+ * const todos = await grep.todos()
163
+ * const fixmes = await grep.todos({ include: '*.ts' })
164
+ * ```
165
+ */
166
+ todos(options?: Omit<GrepOptions, 'pattern'>): Promise<GrepMatch[]>;
167
+ /**
168
+ * Count the number of matches for a pattern.
169
+ *
170
+ * @param {string} pattern - The pattern to count
171
+ * @param {Omit<GrepOptions, 'pattern'>} [options] - Additional search options
172
+ * @returns {Promise<number>} Total number of matching lines
173
+ *
174
+ * @example
175
+ * ```typescript
176
+ * const count = await grep.count('console.log')
177
+ * console.log(`Found ${count} console.log statements`)
178
+ * ```
179
+ */
180
+ count(pattern: string, options?: Omit<GrepOptions, 'pattern'>): Promise<number>;
181
+ /**
182
+ * Search and replace across files. Returns the list of files that would be affected.
183
+ * Does NOT modify files — use the returned file list to do the replacement yourself.
184
+ *
185
+ * @param {string} pattern - The pattern to search for
186
+ * @param {Omit<GrepOptions, 'pattern'>} [options] - Additional search options
187
+ * @returns {Promise<{ file: string, matches: GrepMatch[] }[]>} Array of files with their matches, grouped by file
188
+ *
189
+ * @example
190
+ * ```typescript
191
+ * const affected = await grep.findForReplace('oldFunctionName')
192
+ * // [{ file: 'src/a.ts', matches: [...] }, { file: 'src/b.ts', matches: [...] }]
193
+ * ```
194
+ */
195
+ findForReplace(pattern: string, options?: Omit<GrepOptions, 'pattern'>): Promise<{
196
+ file: string;
197
+ matches: GrepMatch[];
198
+ }[]>;
199
+ /** Build the grep/rg command from options */
200
+ private buildCommand;
201
+ /** Parse raw grep/rg output into structured results */
202
+ private parseResults;
203
+ /** Make a path relative to cwd */
204
+ private relativize;
205
+ }
206
+ export default Grep;
207
+ //# sourceMappingURL=grep.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grep.d.ts","sourceRoot":"","sources":["../../../src/node/features/grep.ts"],"names":[],"mappings":"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"}