@soederpop/luca 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (358) hide show
  1. package/CLAUDE.md +71 -0
  2. package/README.md +78 -0
  3. package/bun.lock +2928 -0
  4. package/bunfig.toml +3 -0
  5. package/commands/audit-docs.ts +740 -0
  6. package/commands/build-scaffolds.ts +154 -0
  7. package/commands/generate-api-docs.ts +114 -0
  8. package/commands/update-introspection.ts +67 -0
  9. package/docs/CLI.md +335 -0
  10. package/docs/README.md +88 -0
  11. package/docs/TABLE-OF-CONTENTS.md +157 -0
  12. package/docs/apis/clients/elevenlabs.md +84 -0
  13. package/docs/apis/clients/graph.md +56 -0
  14. package/docs/apis/clients/openai.md +69 -0
  15. package/docs/apis/clients/rest.md +41 -0
  16. package/docs/apis/clients/websocket.md +107 -0
  17. package/docs/apis/features/agi/assistant.md +471 -0
  18. package/docs/apis/features/agi/assistants-manager.md +154 -0
  19. package/docs/apis/features/agi/claude-code.md +602 -0
  20. package/docs/apis/features/agi/conversation-history.md +352 -0
  21. package/docs/apis/features/agi/conversation.md +333 -0
  22. package/docs/apis/features/agi/docs-reader.md +121 -0
  23. package/docs/apis/features/agi/openai-codex.md +318 -0
  24. package/docs/apis/features/agi/openapi.md +138 -0
  25. package/docs/apis/features/agi/semantic-search.md +387 -0
  26. package/docs/apis/features/agi/skills-library.md +216 -0
  27. package/docs/apis/features/node/container-link.md +133 -0
  28. package/docs/apis/features/node/content-db.md +313 -0
  29. package/docs/apis/features/node/disk-cache.md +379 -0
  30. package/docs/apis/features/node/dns.md +651 -0
  31. package/docs/apis/features/node/docker.md +705 -0
  32. package/docs/apis/features/node/downloader.md +81 -0
  33. package/docs/apis/features/node/esbuild.md +59 -0
  34. package/docs/apis/features/node/file-manager.md +182 -0
  35. package/docs/apis/features/node/fs.md +581 -0
  36. package/docs/apis/features/node/git.md +330 -0
  37. package/docs/apis/features/node/google-auth.md +174 -0
  38. package/docs/apis/features/node/google-calendar.md +187 -0
  39. package/docs/apis/features/node/google-docs.md +151 -0
  40. package/docs/apis/features/node/google-drive.md +225 -0
  41. package/docs/apis/features/node/google-sheets.md +179 -0
  42. package/docs/apis/features/node/grep.md +290 -0
  43. package/docs/apis/features/node/helpers.md +135 -0
  44. package/docs/apis/features/node/ink.md +334 -0
  45. package/docs/apis/features/node/ipc-socket.md +260 -0
  46. package/docs/apis/features/node/json-tree.md +86 -0
  47. package/docs/apis/features/node/launcher-app-command-listener.md +145 -0
  48. package/docs/apis/features/node/networking.md +281 -0
  49. package/docs/apis/features/node/nlp.md +133 -0
  50. package/docs/apis/features/node/opener.md +97 -0
  51. package/docs/apis/features/node/os.md +118 -0
  52. package/docs/apis/features/node/package-finder.md +402 -0
  53. package/docs/apis/features/node/postgres.md +212 -0
  54. package/docs/apis/features/node/proc.md +430 -0
  55. package/docs/apis/features/node/process-manager.md +210 -0
  56. package/docs/apis/features/node/python.md +278 -0
  57. package/docs/apis/features/node/repl.md +88 -0
  58. package/docs/apis/features/node/runpod.md +673 -0
  59. package/docs/apis/features/node/secure-shell.md +169 -0
  60. package/docs/apis/features/node/semantic-search.md +401 -0
  61. package/docs/apis/features/node/sqlite.md +211 -0
  62. package/docs/apis/features/node/telegram.md +254 -0
  63. package/docs/apis/features/node/tts.md +118 -0
  64. package/docs/apis/features/node/ui.md +703 -0
  65. package/docs/apis/features/node/vault.md +64 -0
  66. package/docs/apis/features/node/vm.md +84 -0
  67. package/docs/apis/features/node/window-manager.md +337 -0
  68. package/docs/apis/features/node/yaml-tree.md +85 -0
  69. package/docs/apis/features/node/yaml.md +176 -0
  70. package/docs/apis/features/web/asset-loader.md +47 -0
  71. package/docs/apis/features/web/container-link.md +133 -0
  72. package/docs/apis/features/web/esbuild.md +59 -0
  73. package/docs/apis/features/web/helpers.md +135 -0
  74. package/docs/apis/features/web/network.md +30 -0
  75. package/docs/apis/features/web/speech.md +55 -0
  76. package/docs/apis/features/web/vault.md +64 -0
  77. package/docs/apis/features/web/vm.md +84 -0
  78. package/docs/apis/features/web/voice.md +67 -0
  79. package/docs/apis/servers/express.md +127 -0
  80. package/docs/apis/servers/mcp.md +213 -0
  81. package/docs/apis/servers/websocket.md +99 -0
  82. package/docs/documentation-audit.md +134 -0
  83. package/docs/examples/content-db.md +77 -0
  84. package/docs/examples/disk-cache.md +83 -0
  85. package/docs/examples/docker.md +101 -0
  86. package/docs/examples/downloader.md +70 -0
  87. package/docs/examples/esbuild.md +80 -0
  88. package/docs/examples/file-manager.md +82 -0
  89. package/docs/examples/fs.md +83 -0
  90. package/docs/examples/git.md +85 -0
  91. package/docs/examples/google-auth.md +88 -0
  92. package/docs/examples/google-calendar.md +94 -0
  93. package/docs/examples/google-docs.md +82 -0
  94. package/docs/examples/google-drive.md +96 -0
  95. package/docs/examples/google-sheets.md +95 -0
  96. package/docs/examples/grep.md +85 -0
  97. package/docs/examples/ink-blocks.md +75 -0
  98. package/docs/examples/ink-renderer.md +41 -0
  99. package/docs/examples/ink.md +103 -0
  100. package/docs/examples/ipc-socket.md +103 -0
  101. package/docs/examples/json-tree.md +91 -0
  102. package/docs/examples/launcher-app-command-listener.md +120 -0
  103. package/docs/examples/networking.md +58 -0
  104. package/docs/examples/nlp.md +91 -0
  105. package/docs/examples/opener.md +78 -0
  106. package/docs/examples/os.md +72 -0
  107. package/docs/examples/package-finder.md +89 -0
  108. package/docs/examples/port-exposer.md +89 -0
  109. package/docs/examples/postgres.md +91 -0
  110. package/docs/examples/proc.md +81 -0
  111. package/docs/examples/process-manager.md +79 -0
  112. package/docs/examples/python.md +91 -0
  113. package/docs/examples/repl.md +93 -0
  114. package/docs/examples/runpod.md +119 -0
  115. package/docs/examples/secure-shell.md +92 -0
  116. package/docs/examples/sqlite.md +86 -0
  117. package/docs/examples/telegram.md +77 -0
  118. package/docs/examples/tts.md +86 -0
  119. package/docs/examples/ui.md +80 -0
  120. package/docs/examples/vault.md +70 -0
  121. package/docs/examples/vm.md +86 -0
  122. package/docs/examples/window-manager.md +125 -0
  123. package/docs/examples/yaml-tree.md +93 -0
  124. package/docs/examples/yaml.md +104 -0
  125. package/docs/ideas/class-registration-refactor-possibilities.md +197 -0
  126. package/docs/ideas/container-use-api.md +9 -0
  127. package/docs/ideas/easy-auth-for-express-servers-and-luca-serve.md +0 -0
  128. package/docs/ideas/feature-stacks.md +22 -0
  129. package/docs/ideas/luca-cli-self-sufficiency-demo.md +23 -0
  130. package/docs/ideas/mcp-design.md +9 -0
  131. package/docs/ideas/web-container-debugging-feature.md +13 -0
  132. package/docs/introspection-audit.md +49 -0
  133. package/docs/introspection.md +154 -0
  134. package/docs/mcp/readme.md +162 -0
  135. package/docs/models.ts +38 -0
  136. package/docs/philosophy.md +85 -0
  137. package/docs/principles.md +7 -0
  138. package/docs/prompts/audit-codebase-for-failures-to-use-the-container.md +34 -0
  139. package/docs/prompts/mcp-test-easy-command.md +27 -0
  140. package/docs/reports/assistant-bugs.md +38 -0
  141. package/docs/reports/attach-pattern-usage.md +18 -0
  142. package/docs/reports/code-audit-results.md +391 -0
  143. package/docs/reports/introspection-audit-tasks.md +378 -0
  144. package/docs/reports/luca-mcp-improvements.md +128 -0
  145. package/docs/scaffolds/client.md +140 -0
  146. package/docs/scaffolds/command.md +106 -0
  147. package/docs/scaffolds/endpoint.md +176 -0
  148. package/docs/scaffolds/feature.md +148 -0
  149. package/docs/scaffolds/server.md +187 -0
  150. package/docs/tasks/web-container-helper-discovery.md +71 -0
  151. package/docs/todos.md +1 -0
  152. package/docs/tutorials/01-getting-started.md +106 -0
  153. package/docs/tutorials/02-container.md +210 -0
  154. package/docs/tutorials/03-scripts.md +194 -0
  155. package/docs/tutorials/04-features-overview.md +196 -0
  156. package/docs/tutorials/05-state-and-events.md +171 -0
  157. package/docs/tutorials/06-servers.md +157 -0
  158. package/docs/tutorials/07-endpoints.md +198 -0
  159. package/docs/tutorials/08-commands.md +171 -0
  160. package/docs/tutorials/09-clients.md +162 -0
  161. package/docs/tutorials/10-creating-features.md +198 -0
  162. package/docs/tutorials/11-contentbase.md +191 -0
  163. package/docs/tutorials/12-assistants.md +215 -0
  164. package/docs/tutorials/13-introspection.md +147 -0
  165. package/docs/tutorials/14-type-system.md +174 -0
  166. package/docs/tutorials/15-project-patterns.md +222 -0
  167. package/docs/tutorials/16-google-features.md +534 -0
  168. package/docs/tutorials/17-tui-blocks.md +530 -0
  169. package/docs/tutorials/18-semantic-search.md +334 -0
  170. package/index.ts +1 -0
  171. package/luca.console.ts +9 -0
  172. package/main.py +6 -0
  173. package/package.json +154 -0
  174. package/pyproject.toml +7 -0
  175. package/scripts/animations/chrome-glitch.ts +55 -0
  176. package/scripts/animations/index.ts +16 -0
  177. package/scripts/animations/neon-pulse.ts +64 -0
  178. package/scripts/animations/types.ts +6 -0
  179. package/scripts/build-web.ts +28 -0
  180. package/scripts/examples/ask-luca-expert.ts +42 -0
  181. package/scripts/examples/assistant-questions.ts +12 -0
  182. package/scripts/examples/excalidraw-expert.ts +75 -0
  183. package/scripts/examples/expert-chat.ts +0 -0
  184. package/scripts/examples/file-manager.ts +14 -0
  185. package/scripts/examples/ideas.ts +12 -0
  186. package/scripts/examples/interactive-chat.ts +20 -0
  187. package/scripts/examples/openai-tool-calls.ts +113 -0
  188. package/scripts/examples/opening-a-web-browser.ts +5 -0
  189. package/scripts/examples/telegram-bot.ts +79 -0
  190. package/scripts/examples/telegram-ink-ui.ts +302 -0
  191. package/scripts/examples/using-assistant-with-mcp.ts +560 -0
  192. package/scripts/examples/using-claude-code.ts +10 -0
  193. package/scripts/examples/using-contentdb.ts +35 -0
  194. package/scripts/examples/using-conversations.ts +35 -0
  195. package/scripts/examples/using-disk-cache.ts +10 -0
  196. package/scripts/examples/using-docker-shell.ts +75 -0
  197. package/scripts/examples/using-elevenlabs.ts +25 -0
  198. package/scripts/examples/using-google-calendar.ts +57 -0
  199. package/scripts/examples/using-google-docs.ts +74 -0
  200. package/scripts/examples/using-google-drive.ts +74 -0
  201. package/scripts/examples/using-google-sheets.ts +89 -0
  202. package/scripts/examples/using-nlp.ts +55 -0
  203. package/scripts/examples/using-ollama.ts +10 -0
  204. package/scripts/examples/using-openai-codex.ts +23 -0
  205. package/scripts/examples/using-postgres.ts +55 -0
  206. package/scripts/examples/using-runpod.ts +32 -0
  207. package/scripts/examples/using-tts.ts +40 -0
  208. package/scripts/examples/vm-loading-esm-modules.ts +16 -0
  209. package/scripts/scaffold.ts +391 -0
  210. package/scripts/scratch.ts +15 -0
  211. package/scripts/test-command-listener.ts +123 -0
  212. package/scripts/test-window-manager-lifecycle.ts +86 -0
  213. package/scripts/test-window-manager.ts +43 -0
  214. package/scripts/update-introspection-data.ts +58 -0
  215. package/src/agi/README.md +14 -0
  216. package/src/agi/container.server.ts +114 -0
  217. package/src/agi/endpoints/ask.ts +60 -0
  218. package/src/agi/endpoints/conversations/[id].ts +45 -0
  219. package/src/agi/endpoints/conversations.ts +31 -0
  220. package/src/agi/endpoints/experts.ts +37 -0
  221. package/src/agi/features/assistant.ts +767 -0
  222. package/src/agi/features/assistants-manager.ts +260 -0
  223. package/src/agi/features/claude-code.ts +1111 -0
  224. package/src/agi/features/conversation-history.ts +497 -0
  225. package/src/agi/features/conversation.ts +799 -0
  226. package/src/agi/features/openai-codex.ts +631 -0
  227. package/src/agi/features/openapi.ts +438 -0
  228. package/src/agi/features/skills-library.ts +425 -0
  229. package/src/agi/index.ts +6 -0
  230. package/src/agi/lib/token-counter.ts +122 -0
  231. package/src/browser.ts +25 -0
  232. package/src/bus.ts +100 -0
  233. package/src/cli/cli.ts +70 -0
  234. package/src/client.ts +461 -0
  235. package/src/clients/civitai/index.ts +541 -0
  236. package/src/clients/client-template.ts +41 -0
  237. package/src/clients/comfyui/index.ts +597 -0
  238. package/src/clients/elevenlabs/index.ts +291 -0
  239. package/src/clients/openai/index.ts +451 -0
  240. package/src/clients/supabase/index.ts +366 -0
  241. package/src/command.ts +164 -0
  242. package/src/commands/chat.ts +182 -0
  243. package/src/commands/console.ts +192 -0
  244. package/src/commands/describe.ts +433 -0
  245. package/src/commands/eval.ts +116 -0
  246. package/src/commands/help.ts +214 -0
  247. package/src/commands/index.ts +14 -0
  248. package/src/commands/mcp.ts +64 -0
  249. package/src/commands/prompt.ts +807 -0
  250. package/src/commands/run.ts +257 -0
  251. package/src/commands/sandbox-mcp.ts +439 -0
  252. package/src/commands/scaffold.ts +79 -0
  253. package/src/commands/serve.ts +172 -0
  254. package/src/container.ts +781 -0
  255. package/src/endpoint.ts +340 -0
  256. package/src/feature.ts +75 -0
  257. package/src/hash-object.ts +97 -0
  258. package/src/helper.ts +543 -0
  259. package/src/introspection/generated.agi.ts +23388 -0
  260. package/src/introspection/generated.node.ts +18899 -0
  261. package/src/introspection/generated.web.ts +2021 -0
  262. package/src/introspection/index.ts +256 -0
  263. package/src/introspection/scan.ts +912 -0
  264. package/src/node/container.ts +354 -0
  265. package/src/node/feature.ts +13 -0
  266. package/src/node/features/container-link.ts +558 -0
  267. package/src/node/features/content-db.ts +475 -0
  268. package/src/node/features/disk-cache.ts +382 -0
  269. package/src/node/features/dns.ts +655 -0
  270. package/src/node/features/docker.ts +912 -0
  271. package/src/node/features/downloader.ts +92 -0
  272. package/src/node/features/esbuild.ts +68 -0
  273. package/src/node/features/file-manager.ts +357 -0
  274. package/src/node/features/fs.ts +534 -0
  275. package/src/node/features/git.ts +492 -0
  276. package/src/node/features/google-auth.ts +502 -0
  277. package/src/node/features/google-calendar.ts +300 -0
  278. package/src/node/features/google-docs.ts +404 -0
  279. package/src/node/features/google-drive.ts +339 -0
  280. package/src/node/features/google-sheets.ts +279 -0
  281. package/src/node/features/grep.ts +406 -0
  282. package/src/node/features/helpers.ts +374 -0
  283. package/src/node/features/ink.ts +490 -0
  284. package/src/node/features/ipc-socket.ts +459 -0
  285. package/src/node/features/json-tree.ts +188 -0
  286. package/src/node/features/launcher-app-command-listener.ts +388 -0
  287. package/src/node/features/networking.ts +925 -0
  288. package/src/node/features/nlp.ts +211 -0
  289. package/src/node/features/opener.ts +166 -0
  290. package/src/node/features/os.ts +157 -0
  291. package/src/node/features/package-finder.ts +539 -0
  292. package/src/node/features/port-exposer.ts +342 -0
  293. package/src/node/features/postgres.ts +273 -0
  294. package/src/node/features/proc.ts +502 -0
  295. package/src/node/features/process-manager.ts +542 -0
  296. package/src/node/features/python.ts +444 -0
  297. package/src/node/features/repl.ts +194 -0
  298. package/src/node/features/runpod.ts +802 -0
  299. package/src/node/features/secure-shell.ts +248 -0
  300. package/src/node/features/semantic-search.ts +924 -0
  301. package/src/node/features/sqlite.ts +289 -0
  302. package/src/node/features/telegram.ts +342 -0
  303. package/src/node/features/tts.ts +184 -0
  304. package/src/node/features/ui.ts +857 -0
  305. package/src/node/features/vault.ts +164 -0
  306. package/src/node/features/vm.ts +312 -0
  307. package/src/node/features/window-manager.ts +804 -0
  308. package/src/node/features/yaml-tree.ts +149 -0
  309. package/src/node/features/yaml.ts +132 -0
  310. package/src/node.ts +70 -0
  311. package/src/react/index.ts +175 -0
  312. package/src/registry.ts +199 -0
  313. package/src/scaffolds/generated.ts +1613 -0
  314. package/src/scaffolds/template.ts +37 -0
  315. package/src/schemas/base.ts +255 -0
  316. package/src/server.ts +135 -0
  317. package/src/servers/express.ts +209 -0
  318. package/src/servers/mcp.ts +805 -0
  319. package/src/servers/socket.ts +120 -0
  320. package/src/state.ts +101 -0
  321. package/src/web/clients/socket.ts +82 -0
  322. package/src/web/container.ts +74 -0
  323. package/src/web/extension.ts +30 -0
  324. package/src/web/feature.ts +12 -0
  325. package/src/web/features/asset-loader.ts +64 -0
  326. package/src/web/features/container-link.ts +385 -0
  327. package/src/web/features/esbuild.ts +79 -0
  328. package/src/web/features/helpers.ts +267 -0
  329. package/src/web/features/network.ts +61 -0
  330. package/src/web/features/speech.ts +87 -0
  331. package/src/web/features/vault.ts +189 -0
  332. package/src/web/features/vm.ts +78 -0
  333. package/src/web/features/voice-recognition.ts +129 -0
  334. package/src/web/shims/isomorphic-vm.ts +149 -0
  335. package/test/bus.test.ts +134 -0
  336. package/test/clients-servers.test.ts +216 -0
  337. package/test/container-link.test.ts +274 -0
  338. package/test/features.test.ts +160 -0
  339. package/test/integration.test.ts +787 -0
  340. package/test/node-container.test.ts +121 -0
  341. package/test/rate-limit.test.ts +272 -0
  342. package/test/semantic-search.test.ts +550 -0
  343. package/test/state.test.ts +121 -0
  344. package/test-integration/assistant.test.ts +138 -0
  345. package/test-integration/assistants-manager.test.ts +123 -0
  346. package/test-integration/claude-code.test.ts +98 -0
  347. package/test-integration/conversation-history.test.ts +205 -0
  348. package/test-integration/conversation.test.ts +137 -0
  349. package/test-integration/elevenlabs.test.ts +55 -0
  350. package/test-integration/google-services.test.ts +80 -0
  351. package/test-integration/helpers.ts +89 -0
  352. package/test-integration/openai-codex.test.ts +93 -0
  353. package/test-integration/runpod.test.ts +58 -0
  354. package/test-integration/server-endpoints.test.ts +97 -0
  355. package/test-integration/skills-library.test.ts +157 -0
  356. package/test-integration/telegram.test.ts +46 -0
  357. package/tsconfig.json +58 -0
  358. package/uv.lock +8 -0
@@ -0,0 +1,290 @@
1
+ # Grep (features.grep)
2
+
3
+ The Grep feature provides utilities for searching file contents using ripgrep (rg) or grep. Returns structured results as arrays of `{ file, line, column, content }` objects with paths relative to the container cwd. Also provides convenience methods for common search patterns.
4
+
5
+ ## Usage
6
+
7
+ ```ts
8
+ container.feature('grep')
9
+ ```
10
+
11
+ ## Methods
12
+
13
+ ### search
14
+
15
+ Search for a pattern in files and return structured results.
16
+
17
+ **Parameters:**
18
+
19
+ | Name | Type | Required | Description |
20
+ |------|------|----------|-------------|
21
+ | `options` | `GrepOptions` | ✓ | Search options |
22
+
23
+ `GrepOptions` properties:
24
+
25
+ | Property | Type | Description |
26
+ |----------|------|-------------|
27
+ | `pattern` | `string` | Pattern to search for (string or regex) |
28
+ | `path` | `string` | Directory or file to search in (defaults to container cwd) |
29
+ | `include` | `string | string[]` | Glob patterns to include (e.g. '*.ts') |
30
+ | `exclude` | `string | string[]` | Glob patterns to exclude (e.g. 'node_modules') |
31
+ | `ignoreCase` | `boolean` | Case insensitive search |
32
+ | `fixedStrings` | `boolean` | Treat pattern as a fixed string, not regex |
33
+ | `recursive` | `boolean` | Search recursively (default: true) |
34
+ | `hidden` | `boolean` | Include hidden files |
35
+ | `maxResults` | `number` | Max number of results to return |
36
+ | `before` | `number` | Number of context lines before match |
37
+ | `after` | `number` | Number of context lines after match |
38
+ | `filesOnly` | `boolean` | Only return filenames, not match details |
39
+ | `invert` | `boolean` | Invert match (return lines that don't match) |
40
+ | `wordMatch` | `boolean` | Match whole words only |
41
+ | `rawFlags` | `string[]` | Additional raw flags to pass to grep/ripgrep |
42
+
43
+ **Returns:** `Promise<GrepMatch[]>`
44
+
45
+ ```ts
46
+ // Search for a pattern in TypeScript files
47
+ const results = await grep.search({
48
+ pattern: 'useState',
49
+ include: '*.tsx',
50
+ exclude: 'node_modules'
51
+ })
52
+
53
+ // Case insensitive search with context
54
+ const results = await grep.search({
55
+ pattern: 'error',
56
+ ignoreCase: true,
57
+ before: 2,
58
+ after: 2
59
+ })
60
+ ```
61
+
62
+
63
+
64
+ ### filesContaining
65
+
66
+ Find files containing a pattern. Returns just the relative file paths.
67
+
68
+ **Parameters:**
69
+
70
+ | Name | Type | Required | Description |
71
+ |------|------|----------|-------------|
72
+ | `pattern` | `string` | ✓ | The pattern to search for |
73
+ | `options` | `Omit<GrepOptions, 'pattern' | 'filesOnly'>` | | Additional search options |
74
+
75
+ **Returns:** `Promise<string[]>`
76
+
77
+ ```ts
78
+ const files = await grep.filesContaining('TODO')
79
+ // ['src/index.ts', 'src/utils.ts']
80
+ ```
81
+
82
+
83
+
84
+ ### imports
85
+
86
+ Find import/require statements for a module or path.
87
+
88
+ **Parameters:**
89
+
90
+ | Name | Type | Required | Description |
91
+ |------|------|----------|-------------|
92
+ | `moduleOrPath` | `string` | ✓ | The module name or path to search for in imports |
93
+ | `options` | `Omit<GrepOptions, 'pattern'>` | | Additional search options |
94
+
95
+ **Returns:** `Promise<GrepMatch[]>`
96
+
97
+ ```ts
98
+ const lodashImports = await grep.imports('lodash')
99
+ const localImports = await grep.imports('./utils')
100
+ ```
101
+
102
+
103
+
104
+ ### definitions
105
+
106
+ Find function, class, type, or variable definitions matching a name.
107
+
108
+ **Parameters:**
109
+
110
+ | Name | Type | Required | Description |
111
+ |------|------|----------|-------------|
112
+ | `name` | `string` | ✓ | The identifier name to search for definitions of |
113
+ | `options` | `Omit<GrepOptions, 'pattern'>` | | Additional search options |
114
+
115
+ **Returns:** `Promise<GrepMatch[]>`
116
+
117
+ ```ts
118
+ const defs = await grep.definitions('MyComponent')
119
+ const classDefs = await grep.definitions('UserService')
120
+ ```
121
+
122
+
123
+
124
+ ### todos
125
+
126
+ Find TODO, FIXME, HACK, and XXX comments.
127
+
128
+ **Parameters:**
129
+
130
+ | Name | Type | Required | Description |
131
+ |------|------|----------|-------------|
132
+ | `options` | `Omit<GrepOptions, 'pattern'>` | | Additional search options |
133
+
134
+ **Returns:** `Promise<GrepMatch[]>`
135
+
136
+ ```ts
137
+ const todos = await grep.todos()
138
+ const fixmes = await grep.todos({ include: '*.ts' })
139
+ ```
140
+
141
+
142
+
143
+ ### count
144
+
145
+ Count the number of matches for a pattern.
146
+
147
+ **Parameters:**
148
+
149
+ | Name | Type | Required | Description |
150
+ |------|------|----------|-------------|
151
+ | `pattern` | `string` | ✓ | The pattern to count |
152
+ | `options` | `Omit<GrepOptions, 'pattern'>` | | Additional search options |
153
+
154
+ **Returns:** `Promise<number>`
155
+
156
+ ```ts
157
+ const count = await grep.count('console.log')
158
+ console.log(`Found ${count} console.log statements`)
159
+ ```
160
+
161
+
162
+
163
+ ### findForReplace
164
+
165
+ Search and replace across files. Returns the list of files that would be affected. Does NOT modify files — use the returned file list to do the replacement yourself.
166
+
167
+ **Parameters:**
168
+
169
+ | Name | Type | Required | Description |
170
+ |------|------|----------|-------------|
171
+ | `pattern` | `string` | ✓ | The pattern to search for |
172
+ | `options` | `Omit<GrepOptions, 'pattern'>` | | Additional search options |
173
+
174
+ **Returns:** `Promise<{ file: string, matches: GrepMatch[] }[]>`
175
+
176
+ ```ts
177
+ const affected = await grep.findForReplace('oldFunctionName')
178
+ // [{ file: 'src/a.ts', matches: [...] }, { file: 'src/b.ts', matches: [...] }]
179
+ ```
180
+
181
+
182
+
183
+ ## Getters
184
+
185
+ | Property | Type | Description |
186
+ |----------|------|-------------|
187
+ | `hasRipgrep` | `boolean` | Whether ripgrep (rg) is available on this system |
188
+
189
+ ## State (Zod v4 schema)
190
+
191
+ | Property | Type | Description |
192
+ |----------|------|-------------|
193
+ | `enabled` | `boolean` | Whether this feature is currently enabled |
194
+
195
+ ## Examples
196
+
197
+ **features.grep**
198
+
199
+ ```ts
200
+ const grep = container.feature('grep')
201
+
202
+ // Basic search
203
+ const results = await grep.search({ pattern: 'TODO' })
204
+ // [{ file: 'src/index.ts', line: 42, column: 5, content: '// TODO: fix this' }, ...]
205
+
206
+ // Find all imports of a module
207
+ const imports = await grep.imports('lodash')
208
+
209
+ // Find function/class/variable definitions
210
+ const defs = await grep.definitions('MyClass')
211
+
212
+ // Just get filenames containing a pattern
213
+ const files = await grep.filesContaining('API_KEY')
214
+ ```
215
+
216
+
217
+
218
+ **search**
219
+
220
+ ```ts
221
+ // Search for a pattern in TypeScript files
222
+ const results = await grep.search({
223
+ pattern: 'useState',
224
+ include: '*.tsx',
225
+ exclude: 'node_modules'
226
+ })
227
+
228
+ // Case insensitive search with context
229
+ const results = await grep.search({
230
+ pattern: 'error',
231
+ ignoreCase: true,
232
+ before: 2,
233
+ after: 2
234
+ })
235
+ ```
236
+
237
+
238
+
239
+ **filesContaining**
240
+
241
+ ```ts
242
+ const files = await grep.filesContaining('TODO')
243
+ // ['src/index.ts', 'src/utils.ts']
244
+ ```
245
+
246
+
247
+
248
+ **imports**
249
+
250
+ ```ts
251
+ const lodashImports = await grep.imports('lodash')
252
+ const localImports = await grep.imports('./utils')
253
+ ```
254
+
255
+
256
+
257
+ **definitions**
258
+
259
+ ```ts
260
+ const defs = await grep.definitions('MyComponent')
261
+ const classDefs = await grep.definitions('UserService')
262
+ ```
263
+
264
+
265
+
266
+ **todos**
267
+
268
+ ```ts
269
+ const todos = await grep.todos()
270
+ const fixmes = await grep.todos({ include: '*.ts' })
271
+ ```
272
+
273
+
274
+
275
+ **count**
276
+
277
+ ```ts
278
+ const count = await grep.count('console.log')
279
+ console.log(`Found ${count} console.log statements`)
280
+ ```
281
+
282
+
283
+
284
+ **findForReplace**
285
+
286
+ ```ts
287
+ const affected = await grep.findForReplace('oldFunctionName')
288
+ // [{ file: 'src/a.ts', matches: [...] }, { file: 'src/b.ts', matches: [...] }]
289
+ ```
290
+
@@ -0,0 +1,135 @@
1
+ # Helpers (features.helpers)
2
+
3
+ The Helpers feature discovers and loads project-level helpers from a JSON manifest served over HTTP. Scripts are injected via AssetLoader and self-register into the container's registries. This is the web equivalent of the node Helpers feature, which scans the filesystem. Instead of filesystem scanning, this feature fetches a manifest from a well-known URL and uses AssetLoader.loadScript() to inject each helper's script tag.
4
+
5
+ ## Usage
6
+
7
+ ```ts
8
+ container.feature('helpers', {
9
+ // Root directory to scan for helper folders. Defaults to container.cwd
10
+ rootDir,
11
+ })
12
+ ```
13
+
14
+ ## Options (Zod v4 schema)
15
+
16
+ | Property | Type | Description |
17
+ |----------|------|-------------|
18
+ | `rootDir` | `string` | Root directory to scan for helper folders. Defaults to container.cwd |
19
+
20
+ ## Methods
21
+
22
+ ### setManifestURL
23
+
24
+ Set a new manifest URL. Invalidates any cached manifest.
25
+
26
+ **Parameters:**
27
+
28
+ | Name | Type | Required | Description |
29
+ |------|------|----------|-------------|
30
+ | `url` | `string` | ✓ | The new URL to fetch the manifest from |
31
+
32
+ **Returns:** `void`
33
+
34
+
35
+
36
+ ### discover
37
+
38
+ Discover and register helpers of the given type from the manifest. Fetches the manifest, then for each entry of the requested type, loads the script via AssetLoader and checks what got newly registered.
39
+
40
+ **Parameters:**
41
+
42
+ | Name | Type | Required | Description |
43
+ |------|------|----------|-------------|
44
+ | `type` | `RegistryType` | ✓ | Which type of helpers to discover ('features' or 'clients') |
45
+
46
+ **Returns:** `Promise<string[]>`
47
+
48
+
49
+
50
+ ### discoverAll
51
+
52
+ Discover all helper types from the manifest.
53
+
54
+ **Returns:** `Promise<Record<string, string[]>>`
55
+
56
+
57
+
58
+ ### discoverFeatures
59
+
60
+ Convenience method to discover only features.
61
+
62
+ **Returns:** `Promise<string[]>`
63
+
64
+
65
+
66
+ ### discoverClients
67
+
68
+ Convenience method to discover only clients.
69
+
70
+ **Returns:** `Promise<string[]>`
71
+
72
+
73
+
74
+ ### lookup
75
+
76
+ Look up a helper class by type and name.
77
+
78
+ **Parameters:**
79
+
80
+ | Name | Type | Required | Description |
81
+ |------|------|----------|-------------|
82
+ | `type` | `RegistryType` | ✓ | The registry type |
83
+ | `name` | `string` | ✓ | The helper name within that registry |
84
+
85
+ **Returns:** `any`
86
+
87
+
88
+
89
+ ### describe
90
+
91
+ Get the introspection description for a specific helper.
92
+
93
+ **Parameters:**
94
+
95
+ | Name | Type | Required | Description |
96
+ |------|------|----------|-------------|
97
+ | `type` | `RegistryType` | ✓ | The registry type |
98
+ | `name` | `string` | ✓ | The helper name |
99
+
100
+ **Returns:** `string`
101
+
102
+
103
+
104
+ ## Getters
105
+
106
+ | Property | Type | Description |
107
+ |----------|------|-------------|
108
+ | `manifestURL` | `string` | The URL to fetch the helpers manifest from. |
109
+ | `available` | `Record<string, string[]>` | Returns a unified view of all available helpers across all registries. Each key is a registry type, each value is the list of helper names in that registry. |
110
+
111
+ ## State (Zod v4 schema)
112
+
113
+ | Property | Type | Description |
114
+ |----------|------|-------------|
115
+ | `enabled` | `boolean` | Whether this feature is currently enabled |
116
+ | `discovered` | `object` | Which registry types have been discovered |
117
+ | `registered` | `array` | Names of project-level helpers that were discovered (type.name) |
118
+
119
+ ## Examples
120
+
121
+ **features.helpers**
122
+
123
+ ```ts
124
+ const helpers = container.feature('helpers', { enable: true })
125
+
126
+ // Discover all helper types from the manifest
127
+ await helpers.discoverAll()
128
+
129
+ // Discover a specific type
130
+ await helpers.discover('features')
131
+
132
+ // Unified view of all available helpers
133
+ console.log(helpers.available)
134
+ ```
135
+