@soederpop/luca 0.1.2 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (381) hide show
  1. package/.github/workflows/release.yaml +167 -0
  2. package/CLAUDE.md +2 -0
  3. package/README.md +3 -0
  4. package/assistants/codingAssistant/ABOUT.md +3 -0
  5. package/assistants/codingAssistant/CORE.md +22 -17
  6. package/assistants/codingAssistant/hooks.ts +17 -4
  7. package/assistants/codingAssistant/tools.ts +1 -106
  8. package/assistants/inkbot/ABOUT.md +5 -0
  9. package/assistants/inkbot/CORE.md +71 -0
  10. package/assistants/inkbot/hooks.ts +14 -0
  11. package/assistants/inkbot/tools.ts +47 -0
  12. package/bun.lock +20 -4
  13. package/commands/inkbot.ts +353 -0
  14. package/commands/release.ts +75 -181
  15. package/dist/agi/container.server.d.ts +63 -0
  16. package/dist/agi/container.server.d.ts.map +1 -0
  17. package/dist/agi/endpoints/ask.d.ts +20 -0
  18. package/dist/agi/endpoints/ask.d.ts.map +1 -0
  19. package/dist/agi/endpoints/conversations/[id].d.ts +27 -0
  20. package/dist/agi/endpoints/conversations/[id].d.ts.map +1 -0
  21. package/dist/agi/endpoints/conversations.d.ts +18 -0
  22. package/dist/agi/endpoints/conversations.d.ts.map +1 -0
  23. package/dist/agi/endpoints/experts.d.ts +8 -0
  24. package/dist/agi/endpoints/experts.d.ts.map +1 -0
  25. package/dist/agi/feature.d.ts +9 -0
  26. package/dist/agi/feature.d.ts.map +1 -0
  27. package/dist/agi/features/assistant.d.ts +509 -0
  28. package/dist/agi/features/assistant.d.ts.map +1 -0
  29. package/dist/agi/features/assistants-manager.d.ts +236 -0
  30. package/dist/agi/features/assistants-manager.d.ts.map +1 -0
  31. package/dist/agi/features/autonomous-assistant.d.ts +281 -0
  32. package/dist/agi/features/autonomous-assistant.d.ts.map +1 -0
  33. package/dist/agi/features/browser-use.d.ts +479 -0
  34. package/dist/agi/features/browser-use.d.ts.map +1 -0
  35. package/dist/agi/features/claude-code.d.ts +824 -0
  36. package/dist/agi/features/claude-code.d.ts.map +1 -0
  37. package/dist/agi/features/conversation-history.d.ts +245 -0
  38. package/dist/agi/features/conversation-history.d.ts.map +1 -0
  39. package/dist/agi/features/conversation.d.ts +464 -0
  40. package/dist/agi/features/conversation.d.ts.map +1 -0
  41. package/dist/agi/features/docs-reader.d.ts +72 -0
  42. package/dist/agi/features/docs-reader.d.ts.map +1 -0
  43. package/dist/agi/features/file-tools.d.ts +110 -0
  44. package/dist/agi/features/file-tools.d.ts.map +1 -0
  45. package/dist/agi/features/luca-coder.d.ts +323 -0
  46. package/dist/agi/features/luca-coder.d.ts.map +1 -0
  47. package/dist/agi/features/openai-codex.d.ts +381 -0
  48. package/dist/agi/features/openai-codex.d.ts.map +1 -0
  49. package/dist/agi/features/openapi.d.ts +200 -0
  50. package/dist/agi/features/openapi.d.ts.map +1 -0
  51. package/dist/agi/features/skills-library.d.ts +167 -0
  52. package/dist/agi/features/skills-library.d.ts.map +1 -0
  53. package/dist/agi/index.d.ts +5 -0
  54. package/dist/agi/index.d.ts.map +1 -0
  55. package/dist/agi/lib/interceptor-chain.d.ts +44 -0
  56. package/dist/agi/lib/interceptor-chain.d.ts.map +1 -0
  57. package/dist/agi/lib/token-counter.d.ts +13 -0
  58. package/dist/agi/lib/token-counter.d.ts.map +1 -0
  59. package/dist/bootstrap/generated.d.ts +5 -0
  60. package/dist/bootstrap/generated.d.ts.map +1 -0
  61. package/dist/browser.d.ts +12 -0
  62. package/dist/browser.d.ts.map +1 -0
  63. package/dist/bus.d.ts +29 -0
  64. package/dist/bus.d.ts.map +1 -0
  65. package/dist/cli/build-info.d.ts +4 -0
  66. package/dist/cli/build-info.d.ts.map +1 -0
  67. package/dist/cli/cli.d.ts +3 -0
  68. package/dist/cli/cli.d.ts.map +1 -0
  69. package/dist/client.d.ts +60 -0
  70. package/dist/client.d.ts.map +1 -0
  71. package/dist/clients/civitai/index.d.ts +472 -0
  72. package/dist/clients/civitai/index.d.ts.map +1 -0
  73. package/dist/clients/client-template.d.ts +30 -0
  74. package/dist/clients/client-template.d.ts.map +1 -0
  75. package/dist/clients/comfyui/index.d.ts +281 -0
  76. package/dist/clients/comfyui/index.d.ts.map +1 -0
  77. package/dist/clients/elevenlabs/index.d.ts +197 -0
  78. package/dist/clients/elevenlabs/index.d.ts.map +1 -0
  79. package/dist/clients/graph.d.ts +64 -0
  80. package/dist/clients/graph.d.ts.map +1 -0
  81. package/dist/clients/openai/index.d.ts +247 -0
  82. package/dist/clients/openai/index.d.ts.map +1 -0
  83. package/dist/clients/rest.d.ts +92 -0
  84. package/dist/clients/rest.d.ts.map +1 -0
  85. package/dist/clients/supabase/index.d.ts +176 -0
  86. package/dist/clients/supabase/index.d.ts.map +1 -0
  87. package/dist/clients/websocket.d.ts +127 -0
  88. package/dist/clients/websocket.d.ts.map +1 -0
  89. package/dist/command.d.ts +163 -0
  90. package/dist/command.d.ts.map +1 -0
  91. package/dist/commands/bootstrap.d.ts +20 -0
  92. package/dist/commands/bootstrap.d.ts.map +1 -0
  93. package/dist/commands/chat.d.ts +37 -0
  94. package/dist/commands/chat.d.ts.map +1 -0
  95. package/dist/commands/code.d.ts +28 -0
  96. package/dist/commands/code.d.ts.map +1 -0
  97. package/dist/commands/console.d.ts +22 -0
  98. package/dist/commands/console.d.ts.map +1 -0
  99. package/dist/commands/describe.d.ts +50 -0
  100. package/dist/commands/describe.d.ts.map +1 -0
  101. package/dist/commands/eval.d.ts +23 -0
  102. package/dist/commands/eval.d.ts.map +1 -0
  103. package/dist/commands/help.d.ts +25 -0
  104. package/dist/commands/help.d.ts.map +1 -0
  105. package/dist/commands/index.d.ts +18 -0
  106. package/dist/commands/index.d.ts.map +1 -0
  107. package/dist/commands/introspect.d.ts +24 -0
  108. package/dist/commands/introspect.d.ts.map +1 -0
  109. package/dist/commands/mcp.d.ts +35 -0
  110. package/dist/commands/mcp.d.ts.map +1 -0
  111. package/dist/commands/prompt.d.ts +38 -0
  112. package/dist/commands/prompt.d.ts.map +1 -0
  113. package/dist/commands/run.d.ts +24 -0
  114. package/dist/commands/run.d.ts.map +1 -0
  115. package/dist/commands/sandbox-mcp.d.ts +34 -0
  116. package/dist/commands/sandbox-mcp.d.ts.map +1 -0
  117. package/dist/commands/save-api-docs.d.ts +21 -0
  118. package/dist/commands/save-api-docs.d.ts.map +1 -0
  119. package/dist/commands/scaffold.d.ts +24 -0
  120. package/dist/commands/scaffold.d.ts.map +1 -0
  121. package/dist/commands/select.d.ts +22 -0
  122. package/dist/commands/select.d.ts.map +1 -0
  123. package/dist/commands/serve.d.ts +29 -0
  124. package/dist/commands/serve.d.ts.map +1 -0
  125. package/dist/container-describer.d.ts +144 -0
  126. package/dist/container-describer.d.ts.map +1 -0
  127. package/dist/container.d.ts +451 -0
  128. package/dist/container.d.ts.map +1 -0
  129. package/dist/endpoint.d.ts +113 -0
  130. package/dist/endpoint.d.ts.map +1 -0
  131. package/dist/feature.d.ts +47 -0
  132. package/dist/feature.d.ts.map +1 -0
  133. package/dist/graft.d.ts +29 -0
  134. package/dist/graft.d.ts.map +1 -0
  135. package/dist/hash-object.d.ts +8 -0
  136. package/dist/hash-object.d.ts.map +1 -0
  137. package/dist/helper.d.ts +209 -0
  138. package/dist/helper.d.ts.map +1 -0
  139. package/dist/introspection/generated.node.d.ts +44623 -0
  140. package/dist/introspection/generated.node.d.ts.map +1 -0
  141. package/dist/introspection/generated.web.d.ts +1412 -0
  142. package/dist/introspection/generated.web.d.ts.map +1 -0
  143. package/dist/introspection/index.d.ts +156 -0
  144. package/dist/introspection/index.d.ts.map +1 -0
  145. package/dist/introspection/scan.d.ts +147 -0
  146. package/dist/introspection/scan.d.ts.map +1 -0
  147. package/dist/node/container.d.ts +256 -0
  148. package/dist/node/container.d.ts.map +1 -0
  149. package/dist/node/feature.d.ts +9 -0
  150. package/dist/node/feature.d.ts.map +1 -0
  151. package/dist/node/features/container-link.d.ts +213 -0
  152. package/dist/node/features/container-link.d.ts.map +1 -0
  153. package/dist/node/features/content-db.d.ts +354 -0
  154. package/dist/node/features/content-db.d.ts.map +1 -0
  155. package/dist/node/features/disk-cache.d.ts +236 -0
  156. package/dist/node/features/disk-cache.d.ts.map +1 -0
  157. package/dist/node/features/dns.d.ts +511 -0
  158. package/dist/node/features/dns.d.ts.map +1 -0
  159. package/dist/node/features/docker.d.ts +485 -0
  160. package/dist/node/features/docker.d.ts.map +1 -0
  161. package/dist/node/features/downloader.d.ts +73 -0
  162. package/dist/node/features/downloader.d.ts.map +1 -0
  163. package/dist/node/features/figlet-fonts.d.ts +4 -0
  164. package/dist/node/features/figlet-fonts.d.ts.map +1 -0
  165. package/dist/node/features/file-manager.d.ts +177 -0
  166. package/dist/node/features/file-manager.d.ts.map +1 -0
  167. package/dist/node/features/fs.d.ts +635 -0
  168. package/dist/node/features/fs.d.ts.map +1 -0
  169. package/dist/node/features/git.d.ts +329 -0
  170. package/dist/node/features/git.d.ts.map +1 -0
  171. package/dist/node/features/google-auth.d.ts +200 -0
  172. package/dist/node/features/google-auth.d.ts.map +1 -0
  173. package/dist/node/features/google-calendar.d.ts +194 -0
  174. package/dist/node/features/google-calendar.d.ts.map +1 -0
  175. package/dist/node/features/google-docs.d.ts +138 -0
  176. package/dist/node/features/google-docs.d.ts.map +1 -0
  177. package/dist/node/features/google-drive.d.ts +202 -0
  178. package/dist/node/features/google-drive.d.ts.map +1 -0
  179. package/dist/node/features/google-mail.d.ts +221 -0
  180. package/dist/node/features/google-mail.d.ts.map +1 -0
  181. package/dist/node/features/google-sheets.d.ts +157 -0
  182. package/dist/node/features/google-sheets.d.ts.map +1 -0
  183. package/dist/node/features/grep.d.ts +207 -0
  184. package/dist/node/features/grep.d.ts.map +1 -0
  185. package/dist/node/features/helpers.d.ts +236 -0
  186. package/dist/node/features/helpers.d.ts.map +1 -0
  187. package/dist/node/features/ink.d.ts +332 -0
  188. package/dist/node/features/ink.d.ts.map +1 -0
  189. package/dist/node/features/ipc-socket.d.ts +298 -0
  190. package/dist/node/features/ipc-socket.d.ts.map +1 -0
  191. package/dist/node/features/json-tree.d.ts +140 -0
  192. package/dist/node/features/json-tree.d.ts.map +1 -0
  193. package/dist/node/features/networking.d.ts +373 -0
  194. package/dist/node/features/networking.d.ts.map +1 -0
  195. package/dist/node/features/nlp.d.ts +125 -0
  196. package/dist/node/features/nlp.d.ts.map +1 -0
  197. package/dist/node/features/opener.d.ts +93 -0
  198. package/dist/node/features/opener.d.ts.map +1 -0
  199. package/dist/node/features/os.d.ts +168 -0
  200. package/dist/node/features/os.d.ts.map +1 -0
  201. package/dist/node/features/package-finder.d.ts +419 -0
  202. package/dist/node/features/package-finder.d.ts.map +1 -0
  203. package/dist/node/features/postgres.d.ts +173 -0
  204. package/dist/node/features/postgres.d.ts.map +1 -0
  205. package/dist/node/features/proc.d.ts +285 -0
  206. package/dist/node/features/proc.d.ts.map +1 -0
  207. package/dist/node/features/process-manager.d.ts +427 -0
  208. package/dist/node/features/process-manager.d.ts.map +1 -0
  209. package/dist/node/features/python.d.ts +477 -0
  210. package/dist/node/features/python.d.ts.map +1 -0
  211. package/dist/node/features/redis.d.ts +247 -0
  212. package/dist/node/features/redis.d.ts.map +1 -0
  213. package/dist/node/features/repl.d.ts +84 -0
  214. package/dist/node/features/repl.d.ts.map +1 -0
  215. package/dist/node/features/runpod.d.ts +527 -0
  216. package/dist/node/features/runpod.d.ts.map +1 -0
  217. package/dist/node/features/secure-shell.d.ts +145 -0
  218. package/dist/node/features/secure-shell.d.ts.map +1 -0
  219. package/dist/node/features/semantic-search.d.ts +207 -0
  220. package/dist/node/features/semantic-search.d.ts.map +1 -0
  221. package/dist/node/features/sqlite.d.ts +180 -0
  222. package/dist/node/features/sqlite.d.ts.map +1 -0
  223. package/dist/node/features/telegram.d.ts +173 -0
  224. package/dist/node/features/telegram.d.ts.map +1 -0
  225. package/dist/node/features/transpiler.d.ts +51 -0
  226. package/dist/node/features/transpiler.d.ts.map +1 -0
  227. package/dist/node/features/tts.d.ts +108 -0
  228. package/dist/node/features/tts.d.ts.map +1 -0
  229. package/dist/node/features/ui.d.ts +562 -0
  230. package/dist/node/features/ui.d.ts.map +1 -0
  231. package/dist/node/features/vault.d.ts +90 -0
  232. package/dist/node/features/vault.d.ts.map +1 -0
  233. package/dist/node/features/vm.d.ts +285 -0
  234. package/dist/node/features/vm.d.ts.map +1 -0
  235. package/dist/node/features/yaml-tree.d.ts +118 -0
  236. package/dist/node/features/yaml-tree.d.ts.map +1 -0
  237. package/dist/node/features/yaml.d.ts +127 -0
  238. package/dist/node/features/yaml.d.ts.map +1 -0
  239. package/dist/node.d.ts +67 -0
  240. package/dist/node.d.ts.map +1 -0
  241. package/dist/python/generated.d.ts +2 -0
  242. package/dist/python/generated.d.ts.map +1 -0
  243. package/dist/react/index.d.ts +36 -0
  244. package/dist/react/index.d.ts.map +1 -0
  245. package/dist/registry.d.ts +97 -0
  246. package/dist/registry.d.ts.map +1 -0
  247. package/dist/scaffolds/generated.d.ts +13 -0
  248. package/dist/scaffolds/generated.d.ts.map +1 -0
  249. package/dist/scaffolds/template.d.ts +11 -0
  250. package/dist/scaffolds/template.d.ts.map +1 -0
  251. package/dist/schemas/base.d.ts +254 -0
  252. package/dist/schemas/base.d.ts.map +1 -0
  253. package/dist/selector.d.ts +130 -0
  254. package/dist/selector.d.ts.map +1 -0
  255. package/dist/server.d.ts +89 -0
  256. package/dist/server.d.ts.map +1 -0
  257. package/dist/servers/express.d.ts +104 -0
  258. package/dist/servers/express.d.ts.map +1 -0
  259. package/dist/servers/mcp.d.ts +201 -0
  260. package/dist/servers/mcp.d.ts.map +1 -0
  261. package/dist/servers/socket.d.ts +121 -0
  262. package/dist/servers/socket.d.ts.map +1 -0
  263. package/dist/state.d.ts +24 -0
  264. package/dist/state.d.ts.map +1 -0
  265. package/dist/web/clients/socket.d.ts +37 -0
  266. package/dist/web/clients/socket.d.ts.map +1 -0
  267. package/dist/web/container.d.ts +55 -0
  268. package/dist/web/container.d.ts.map +1 -0
  269. package/dist/web/extension.d.ts +4 -0
  270. package/dist/web/extension.d.ts.map +1 -0
  271. package/dist/web/feature.d.ts +8 -0
  272. package/dist/web/feature.d.ts.map +1 -0
  273. package/dist/web/features/asset-loader.d.ts +35 -0
  274. package/dist/web/features/asset-loader.d.ts.map +1 -0
  275. package/dist/web/features/container-link.d.ts +167 -0
  276. package/dist/web/features/container-link.d.ts.map +1 -0
  277. package/dist/web/features/esbuild.d.ts +51 -0
  278. package/dist/web/features/esbuild.d.ts.map +1 -0
  279. package/dist/web/features/helpers.d.ts +140 -0
  280. package/dist/web/features/helpers.d.ts.map +1 -0
  281. package/dist/web/features/network.d.ts +69 -0
  282. package/dist/web/features/network.d.ts.map +1 -0
  283. package/dist/web/features/speech.d.ts +71 -0
  284. package/dist/web/features/speech.d.ts.map +1 -0
  285. package/dist/web/features/vault.d.ts +62 -0
  286. package/dist/web/features/vault.d.ts.map +1 -0
  287. package/dist/web/features/vm.d.ts +48 -0
  288. package/dist/web/features/vm.d.ts.map +1 -0
  289. package/dist/web/features/voice-recognition.d.ts +96 -0
  290. package/dist/web/features/voice-recognition.d.ts.map +1 -0
  291. package/dist/web/shims/isomorphic-vm.d.ts +22 -0
  292. package/dist/web/shims/isomorphic-vm.d.ts.map +1 -0
  293. package/docs/apis/features/agi/assistant.md +1 -0
  294. package/docs/apis/features/agi/assistants-manager.md +62 -2
  295. package/docs/apis/features/agi/auto-assistant.md +11 -109
  296. package/docs/apis/features/agi/claude-code.md +138 -0
  297. package/docs/apis/features/agi/conversation.md +60 -31
  298. package/docs/apis/features/agi/luca-coder.md +407 -0
  299. package/docs/apis/features/agi/openapi.md +2 -2
  300. package/docs/apis/features/agi/skills-library.md +12 -0
  301. package/docs/apis/features/node/python.md +81 -11
  302. package/docs/apis/features/node/transpiler.md +74 -0
  303. package/docs/apis/features/web/esbuild.md +0 -6
  304. package/docs/apis/servers/mcp.md +2 -2
  305. package/docs/examples/entity.md +124 -0
  306. package/docs/ideas/assistant-factory-pattern.md +142 -0
  307. package/package.json +74 -21
  308. package/src/agi/container.server.ts +10 -0
  309. package/src/agi/feature.ts +13 -0
  310. package/src/agi/features/agent-memory.ts +694 -0
  311. package/src/agi/features/assistant.ts +37 -26
  312. package/src/agi/features/assistants-manager.ts +95 -5
  313. package/src/agi/features/autonomous-assistant.ts +1 -5
  314. package/src/agi/features/browser-use.ts +32 -2
  315. package/src/agi/features/claude-code.ts +165 -1
  316. package/src/agi/features/coding-tools.ts +175 -0
  317. package/src/agi/features/conversation-history.ts +2 -6
  318. package/src/agi/features/conversation.ts +95 -3
  319. package/src/agi/features/docs-reader.ts +2 -1
  320. package/src/agi/features/file-tools.ts +35 -28
  321. package/src/agi/features/luca-coder.ts +1 -5
  322. package/src/agi/features/openai-codex.ts +1 -1
  323. package/src/agi/features/openapi.ts +3 -3
  324. package/src/agi/features/skills-library.ts +111 -13
  325. package/src/agi/lib/interceptor-chain.ts +10 -0
  326. package/src/agi/lib/token-counter.ts +1 -1
  327. package/src/bootstrap/generated.ts +126 -1
  328. package/src/bus.ts +27 -5
  329. package/src/cli/build-info.ts +2 -2
  330. package/src/client.ts +2 -2
  331. package/src/clients/elevenlabs/index.ts +5 -0
  332. package/src/clients/voicebox/index.ts +300 -0
  333. package/src/commands/bootstrap.ts +2 -1
  334. package/src/commands/chat.ts +1 -0
  335. package/src/commands/code.ts +4 -2
  336. package/src/commands/prompt.ts +34 -34
  337. package/src/commands/sandbox-mcp.ts +69 -163
  338. package/src/commands/save-api-docs.ts +10 -8
  339. package/src/commands/select.ts +8 -3
  340. package/src/container-describer.ts +70 -84
  341. package/src/container.ts +93 -3
  342. package/src/endpoint.ts +1 -1
  343. package/src/entity.ts +173 -0
  344. package/src/feature.ts +3 -3
  345. package/src/helper.ts +8 -4
  346. package/src/introspection/generated.agi.ts +3012 -1356
  347. package/src/introspection/generated.node.ts +179 -33
  348. package/src/introspection/generated.web.ts +95 -3
  349. package/src/introspection/scan.ts +1 -1
  350. package/src/node/container.ts +1 -1
  351. package/src/node/features/content-db.ts +57 -30
  352. package/src/node/features/file-manager.ts +10 -9
  353. package/src/node/features/git.ts +5 -5
  354. package/src/node/features/helpers.ts +1 -1
  355. package/src/node/features/json-tree.ts +1 -1
  356. package/src/node/features/os.ts +3 -3
  357. package/src/node/features/package-finder.ts +1 -1
  358. package/src/node/features/process-manager.ts +51 -18
  359. package/src/node/features/python.ts +3 -3
  360. package/src/node/features/redis.ts +1 -1
  361. package/src/node/features/repl.ts +2 -2
  362. package/src/node/features/transpiler.ts +2 -2
  363. package/src/node/features/ui.ts +1 -1
  364. package/src/node/features/vm.ts +3 -3
  365. package/src/node/features/yaml-tree.ts +1 -1
  366. package/src/node.ts +1 -0
  367. package/src/python/generated.ts +1 -1
  368. package/src/scaffolds/generated.ts +1 -1
  369. package/src/selector.ts +74 -4
  370. package/src/server.ts +2 -2
  371. package/src/servers/mcp.ts +6 -6
  372. package/src/web/features/helpers.ts +1 -1
  373. package/src/web/features/network.ts +1 -0
  374. package/test/assistant.test.ts +14 -5
  375. package/test/conversation.test.ts +220 -0
  376. package/test-integration/memory.test.ts +204 -0
  377. package/tsconfig.build.json +12 -0
  378. package/tsconfig.json +1 -1
  379. package/scripts/examples/telegram-ink-ui.ts +0 -302
  380. package/scripts/examples/using-openai-codex.ts +0 -23
  381. package/scripts/examples/vm-loading-esm-modules.ts +0 -16
@@ -0,0 +1,635 @@
1
+ import { Feature } from "../feature.js";
2
+ import { type Stats } from "fs";
3
+ type WalkOptions = {
4
+ directories?: boolean;
5
+ files?: boolean;
6
+ exclude?: string | string[];
7
+ include?: string | string[];
8
+ /** When true, returned paths are relative to `baseDir` instead of absolute. */
9
+ relative?: boolean;
10
+ };
11
+ /**
12
+ * The FS feature provides methods for interacting with the file system, relative to the
13
+ * container's cwd.
14
+ *
15
+ * @extends Feature
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * const fs = container.feature('fs')
20
+ * const content = fs.readFile('package.json')
21
+ * const exists = fs.exists('tsconfig.json')
22
+ * await fs.writeFileAsync('output.txt', 'Hello World')
23
+ * fs.writeFile('sync-output.txt', 'Hello Sync')
24
+ * fs.copy('src', 'backup/src')
25
+ * ```
26
+ */
27
+ export declare class FS extends Feature {
28
+ static shortcut: "features.fs";
29
+ static stateSchema: import("zod").ZodObject<{
30
+ enabled: import("zod").ZodDefault<import("zod").ZodBoolean>;
31
+ }, import("zod/v4/core").$loose>;
32
+ static optionsSchema: import("zod").ZodObject<{
33
+ name: import("zod").ZodOptional<import("zod").ZodString>;
34
+ _cacheKey: import("zod").ZodOptional<import("zod").ZodString>;
35
+ cached: import("zod").ZodOptional<import("zod").ZodBoolean>;
36
+ enable: import("zod").ZodOptional<import("zod").ZodBoolean>;
37
+ }, import("zod/v4/core").$strip>;
38
+ /**
39
+ * Synchronously reads a file and returns its contents as a string.
40
+ *
41
+ * @param {string} path - The file path relative to the container's working directory
42
+ * @param {BufferEncoding | null} [encoding='utf-8'] - The encoding to use. Pass null to get a raw Buffer.
43
+ * @returns {string | Buffer} The file contents as a string (default) or Buffer if encoding is null
44
+ * @throws {Error} Throws an error if the file doesn't exist or cannot be read
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * const content = fs.readFile('README.md')
49
+ * const buffer = fs.readFile('image.png', null)
50
+ * ```
51
+ */
52
+ readFile(path: string, encoding?: BufferEncoding | null): string | Buffer;
53
+ /**
54
+ * Synchronously reads a file and returns its contents as a string.
55
+ * added this method because AI Assistants are understandly confused by this deviation from 2000's era node style
56
+ * @alias readFile
57
+ */
58
+ readFileSync(path: string, encoding?: BufferEncoding | null): string | Buffer;
59
+ /**
60
+ * Asynchronously reads a file and returns its contents as a string.
61
+ *
62
+ * @param {string} path - The file path relative to the container's working directory
63
+ * @param {BufferEncoding | null} [encoding='utf-8'] - The encoding to use. Pass null to get a raw Buffer.
64
+ * @returns {Promise<string | Buffer>} A promise that resolves to the file contents as a string (default) or Buffer
65
+ * @throws {Error} Throws an error if the file doesn't exist or cannot be read
66
+ *
67
+ * @example
68
+ * ```typescript
69
+ * const content = await fs.readFileAsync('data.txt')
70
+ * const buffer = await fs.readFileAsync('image.png', null)
71
+ * ```
72
+ */
73
+ readFileAsync(path: string, encoding?: BufferEncoding | null): Promise<string | Buffer>;
74
+ /**
75
+ * Synchronously reads and parses a JSON file.
76
+ *
77
+ * @param {string} path - The path to the JSON file
78
+ * @returns {any} The parsed JSON content
79
+ * @throws {Error} Throws an error if the file doesn't exist, cannot be read, or contains invalid JSON
80
+ *
81
+ * @example
82
+ * ```typescript
83
+ * const config = fs.readJson('config.json')
84
+ * console.log(config.version)
85
+ * ```
86
+ */
87
+ readJson(path: string): any;
88
+ /**
89
+ * Read and parse a JSON file synchronously
90
+ * @alias readJson
91
+ */
92
+ readJsonSync(path: string): any;
93
+ /**
94
+ * Asynchronously reads and parses a JSON file.
95
+ *
96
+ * @param {string} path - The path to the JSON file
97
+ * @returns {Promise<any>} A promise that resolves to the parsed JSON content
98
+ * @throws {Error} Throws an error if the file doesn't exist, cannot be read, or contains invalid JSON
99
+ *
100
+ * @example
101
+ * ```typescript
102
+ * const config = await fs.readJsonAsync('config.json')
103
+ * console.log(config.version)
104
+ * ```
105
+ */
106
+ readJsonAsync(path: string): Promise<any>;
107
+ /**
108
+ * Synchronously reads the contents of a directory.
109
+ *
110
+ * @param {string} path - The directory path relative to the container's working directory
111
+ * @returns {string[]} An array of file and directory names
112
+ * @throws {Error} Throws an error if the directory doesn't exist or cannot be read
113
+ *
114
+ * @example
115
+ * ```typescript
116
+ * const entries = fs.readdirSync('src')
117
+ * console.log(entries) // ['index.ts', 'utils.ts', 'components']
118
+ * ```
119
+ */
120
+ readdirSync(path: string): string[];
121
+ /**
122
+ * Asynchronously reads the contents of a directory.
123
+ *
124
+ * @param {string} path - The directory path relative to the container's working directory
125
+ * @returns {Promise<string[]>} A promise that resolves to an array of file and directory names
126
+ * @throws {Error} Throws an error if the directory doesn't exist or cannot be read
127
+ *
128
+ * @example
129
+ * ```typescript
130
+ * const entries = await fs.readdir('src')
131
+ * console.log(entries) // ['index.ts', 'utils.ts', 'components']
132
+ * ```
133
+ */
134
+ readdir(path: string): Promise<string[]>;
135
+ /**
136
+ * Synchronously writes content to a file.
137
+ *
138
+ * @param {string} path - The file path where content should be written
139
+ * @param {Buffer | string} content - The content to write to the file
140
+ * @throws {Error} Throws an error if the file cannot be written
141
+ *
142
+ * @example
143
+ * ```typescript
144
+ * fs.writeFile('output.txt', 'Hello World')
145
+ * fs.writeFile('data.bin', Buffer.from([1, 2, 3, 4]))
146
+ * ```
147
+ */
148
+ writeFile(path: string, content: Buffer | string): void;
149
+ /**
150
+ * Asynchronously writes content to a file.
151
+ *
152
+ * @param {string} path - The file path where content should be written
153
+ * @param {Buffer | string} content - The content to write to the file
154
+ * @returns {Promise<void>} A promise that resolves when the file is written
155
+ * @throws {Error} Throws an error if the file cannot be written
156
+ *
157
+ * @example
158
+ * ```typescript
159
+ * await fs.writeFileAsync('output.txt', 'Hello World')
160
+ * await fs.writeFileAsync('data.bin', Buffer.from([1, 2, 3, 4]))
161
+ * ```
162
+ */
163
+ writeFileAsync(path: string, content: Buffer | string): Promise<void>;
164
+ /**
165
+ * Synchronously writes an object to a file as JSON.
166
+ *
167
+ * @param {string} path - The file path where the JSON should be written
168
+ * @param {any} data - The data to serialize as JSON
169
+ * @param {number} [indent=2] - The number of spaces to use for indentation
170
+ * @throws {Error} Throws an error if the file cannot be written
171
+ *
172
+ * @example
173
+ * ```typescript
174
+ * fs.writeJson('config.json', { version: '1.0.0', debug: false })
175
+ * ```
176
+ */
177
+ writeJson(path: string, data: any, indent?: number): void;
178
+ /**
179
+ * Asynchronously writes an object to a file as JSON.
180
+ *
181
+ * @param {string} path - The file path where the JSON should be written
182
+ * @param {any} data - The data to serialize as JSON
183
+ * @param {number} [indent=2] - The number of spaces to use for indentation
184
+ * @returns {Promise<void>} A promise that resolves when the file is written
185
+ * @throws {Error} Throws an error if the file cannot be written
186
+ *
187
+ * @example
188
+ * ```typescript
189
+ * await fs.writeJsonAsync('config.json', { version: '1.0.0', debug: false })
190
+ * ```
191
+ */
192
+ writeJsonAsync(path: string, data: any, indent?: number): Promise<void>;
193
+ /**
194
+ * Synchronously appends content to a file.
195
+ *
196
+ * @param {string} path - The file path to append to
197
+ * @param {Buffer | string} content - The content to append
198
+ *
199
+ * @example
200
+ * ```typescript
201
+ * fs.appendFile('log.txt', 'New line\n')
202
+ * ```
203
+ */
204
+ appendFile(path: string, content: Buffer | string): void;
205
+ /**
206
+ * Asynchronously appends content to a file.
207
+ *
208
+ * @param {string} path - The file path to append to
209
+ * @param {Buffer | string} content - The content to append
210
+ * @returns {Promise<void>} A promise that resolves when the content is appended
211
+ *
212
+ * @example
213
+ * ```typescript
214
+ * await fs.appendFileAsync('log.txt', 'New line\n')
215
+ * ```
216
+ */
217
+ appendFileAsync(path: string, content: Buffer | string): Promise<void>;
218
+ /**
219
+ * Synchronously ensures a file exists with the specified content, creating directories as needed.
220
+ *
221
+ * @param {string} path - The file path where the file should be created
222
+ * @param {string} content - The content to write to the file
223
+ * @param {boolean} [overwrite=false] - Whether to overwrite the file if it already exists
224
+ * @returns {string} The resolved file path
225
+ * @throws {Error} Throws an error if the file cannot be created or written
226
+ *
227
+ * @example
228
+ * ```typescript
229
+ * fs.ensureFile('logs/app.log', '', false)
230
+ * ```
231
+ */
232
+ ensureFile(path: string, content: string, overwrite?: boolean): string;
233
+ /**
234
+ * Asynchronously ensures a file exists with the specified content, creating directories as needed.
235
+ *
236
+ * @param {string} path - The file path where the file should be created
237
+ * @param {string} content - The content to write to the file
238
+ * @param {boolean} [overwrite=false] - Whether to overwrite the file if it already exists
239
+ * @returns {Promise<string>} A promise that resolves to the absolute file path
240
+ * @throws {Error} Throws an error if the file cannot be created or written
241
+ *
242
+ * @example
243
+ * ```typescript
244
+ * await fs.ensureFileAsync('config/settings.json', '{}', true)
245
+ * ```
246
+ */
247
+ ensureFileAsync(path: string, content: string, overwrite?: boolean): Promise<string>;
248
+ /**
249
+ * Synchronously ensures a directory exists, creating parent directories as needed.
250
+ *
251
+ * @param {string} path - The directory path to create
252
+ * @returns {string} The resolved directory path
253
+ * @throws {Error} Throws an error if the directory cannot be created
254
+ *
255
+ * @example
256
+ * ```typescript
257
+ * fs.ensureFolder('logs/debug')
258
+ * ```
259
+ */
260
+ ensureFolder(path: string): string;
261
+ /**
262
+ * Asynchronously ensures a directory exists, creating parent directories as needed.
263
+ *
264
+ * @param {string} path - The directory path to create
265
+ * @returns {Promise<string>} A promise that resolves to the resolved directory path
266
+ * @throws {Error} Throws an error if the directory cannot be created
267
+ *
268
+ * @example
269
+ * ```typescript
270
+ * await fs.ensureFolderAsync('logs/debug')
271
+ * ```
272
+ */
273
+ ensureFolderAsync(path: string): Promise<string>;
274
+ /**
275
+ * Alias for ensureFolder. Synchronously creates a directory and all parent directories.
276
+ *
277
+ * @param {string} folder - The directory path to create
278
+ * @returns {string} The resolved directory path
279
+ *
280
+ * @example
281
+ * ```typescript
282
+ * fs.mkdirp('deep/nested/path')
283
+ * ```
284
+ */
285
+ mkdirp(folder: string): string;
286
+ /**
287
+ * Synchronously checks if a file or directory exists.
288
+ *
289
+ * @param {string} path - The path to check for existence
290
+ * @returns {boolean} True if the path exists, false otherwise
291
+ *
292
+ * @example
293
+ * ```typescript
294
+ * if (fs.exists('config.json')) {
295
+ * console.log('Config file exists!')
296
+ * }
297
+ * ```
298
+ */
299
+ exists(path: string): boolean;
300
+ /**
301
+ * Alias for exists. Synchronously checks if a file or directory exists.
302
+ *
303
+ * @param {string} path - The path to check for existence
304
+ * @returns {boolean} True if the path exists, false otherwise
305
+ *
306
+ * @example
307
+ * ```typescript
308
+ * if (fs.existsSync('config.json')) {
309
+ * console.log('Config file exists!')
310
+ * }
311
+ * ```
312
+ */
313
+ existsSync(path: string): boolean;
314
+ /**
315
+ * Asynchronously checks if a file or directory exists.
316
+ *
317
+ * @param {string} path - The path to check for existence
318
+ * @returns {Promise<boolean>} A promise that resolves to true if the path exists, false otherwise
319
+ *
320
+ * @example
321
+ * ```typescript
322
+ * if (await fs.existsAsync('config.json')) {
323
+ * console.log('Config file exists!')
324
+ * }
325
+ * ```
326
+ */
327
+ existsAsync(path: string): Promise<boolean>;
328
+ /**
329
+ * Checks if a path is a symbolic link.
330
+ *
331
+ * @param {string} path - The path to check
332
+ * @returns {boolean} True if the path is a symlink
333
+ */
334
+ isSymlink(path: string): boolean;
335
+ /**
336
+ * Resolves a symlink to its real path. Returns the resolved path as-is if not a symlink.
337
+ *
338
+ * @param {string} path - The path to resolve
339
+ * @returns {string} The real path after resolving all symlinks
340
+ */
341
+ realpath(path: string): string;
342
+ /**
343
+ * Synchronously returns the stat object for a file or directory.
344
+ *
345
+ * @param {string} path - The path to stat
346
+ * @returns {import('fs').Stats} The Stats object with size, timestamps, and type checks
347
+ * @throws {Error} Throws an error if the path doesn't exist
348
+ *
349
+ * @example
350
+ * ```typescript
351
+ * const info = fs.stat('package.json')
352
+ * console.log(info.size, info.mtime)
353
+ * ```
354
+ */
355
+ stat(path: string): Stats;
356
+ /**
357
+ * Asynchronously returns the stat object for a file or directory.
358
+ *
359
+ * @param {string} path - The path to stat
360
+ * @returns {Promise<import('fs').Stats>} A promise that resolves to the Stats object
361
+ * @throws {Error} Throws an error if the path doesn't exist
362
+ *
363
+ * @example
364
+ * ```typescript
365
+ * const info = await fs.statAsync('package.json')
366
+ * console.log(info.size, info.mtime)
367
+ * ```
368
+ */
369
+ statAsync(path: string): Promise<Stats>;
370
+ /**
371
+ * Synchronously checks if a path is a file.
372
+ *
373
+ * @param {string} path - The path to check
374
+ * @returns {boolean} True if the path is a file, false otherwise
375
+ *
376
+ * @example
377
+ * ```typescript
378
+ * if (fs.isFile('package.json')) {
379
+ * console.log('It is a file')
380
+ * }
381
+ * ```
382
+ */
383
+ isFile(path: string): boolean;
384
+ /**
385
+ * Asynchronously checks if a path is a file.
386
+ *
387
+ * @param {string} path - The path to check
388
+ * @returns {Promise<boolean>} A promise that resolves to true if the path is a file
389
+ *
390
+ * @example
391
+ * ```typescript
392
+ * if (await fs.isFileAsync('package.json')) {
393
+ * console.log('It is a file')
394
+ * }
395
+ * ```
396
+ */
397
+ isFileAsync(path: string): Promise<boolean>;
398
+ /**
399
+ * Synchronously checks if a path is a directory.
400
+ *
401
+ * @param {string} path - The path to check
402
+ * @returns {boolean} True if the path is a directory, false otherwise
403
+ *
404
+ * @example
405
+ * ```typescript
406
+ * if (fs.isDirectory('src')) {
407
+ * console.log('It is a directory')
408
+ * }
409
+ * ```
410
+ */
411
+ isDirectory(path: string): boolean;
412
+ /**
413
+ * Asynchronously checks if a path is a directory.
414
+ *
415
+ * @param {string} path - The path to check
416
+ * @returns {Promise<boolean>} A promise that resolves to true if the path is a directory
417
+ *
418
+ * @example
419
+ * ```typescript
420
+ * if (await fs.isDirectoryAsync('src')) {
421
+ * console.log('It is a directory')
422
+ * }
423
+ * ```
424
+ */
425
+ isDirectoryAsync(path: string): Promise<boolean>;
426
+ /**
427
+ * Synchronously removes a file.
428
+ *
429
+ * @param {string} path - The path of the file to remove
430
+ * @throws {Error} Throws an error if the file cannot be removed or doesn't exist
431
+ *
432
+ * @example
433
+ * ```typescript
434
+ * fs.rmSync('temp/cache.tmp')
435
+ * ```
436
+ */
437
+ rmSync(path: string): void;
438
+ /**
439
+ * Asynchronously removes a file.
440
+ *
441
+ * @param {string} path - The path of the file to remove
442
+ * @returns {Promise<void>} A promise that resolves when the file is removed
443
+ * @throws {Error} Throws an error if the file cannot be removed or doesn't exist
444
+ *
445
+ * @example
446
+ * ```typescript
447
+ * await fs.rm('temp/cache.tmp')
448
+ * ```
449
+ */
450
+ rm(path: string): Promise<void>;
451
+ /**
452
+ * Synchronously removes a directory and all its contents.
453
+ *
454
+ * @param {string} dirPath - The path of the directory to remove
455
+ * @throws {Error} Throws an error if the directory cannot be removed
456
+ *
457
+ * @example
458
+ * ```typescript
459
+ * fs.rmdirSync('temp/cache')
460
+ * ```
461
+ */
462
+ rmdirSync(dirPath: string): void;
463
+ /**
464
+ * Asynchronously removes a directory and all its contents.
465
+ *
466
+ * @param {string} dirPath - The path of the directory to remove
467
+ * @returns {Promise<void>} A promise that resolves when the directory is removed
468
+ * @throws {Error} Throws an error if the directory cannot be removed
469
+ *
470
+ * @example
471
+ * ```typescript
472
+ * await fs.rmdir('temp/cache')
473
+ * ```
474
+ */
475
+ rmdir(dirPath: string): Promise<void>;
476
+ /**
477
+ * Synchronously copies a file or directory. Auto-detects whether the source is a file or directory
478
+ * and handles each appropriately (recursive for directories).
479
+ *
480
+ * @param {string} src - The source path to copy from
481
+ * @param {string} dest - The destination path to copy to
482
+ * @param {object} [options={}] - Copy options
483
+ * @param {boolean} [options.overwrite=true] - Whether to overwrite existing files at the destination
484
+ * @throws {Error} Throws an error if the source doesn't exist or the copy fails
485
+ *
486
+ * @example
487
+ * ```typescript
488
+ * fs.copy('src/config.json', 'backup/config.json')
489
+ * fs.copy('src', 'backup/src')
490
+ * ```
491
+ */
492
+ copy(src: string, dest: string, options?: {
493
+ overwrite?: boolean;
494
+ }): void;
495
+ /**
496
+ * Asynchronously copies a file or directory. Auto-detects whether the source is a file or directory
497
+ * and handles each appropriately (recursive for directories).
498
+ *
499
+ * @param {string} src - The source path to copy from
500
+ * @param {string} dest - The destination path to copy to
501
+ * @param {object} [options={}] - Copy options
502
+ * @param {boolean} [options.overwrite=true] - Whether to overwrite existing files at the destination
503
+ * @returns {Promise<void>} A promise that resolves when the copy is complete
504
+ * @throws {Error} Throws an error if the source doesn't exist or the copy fails
505
+ *
506
+ * @example
507
+ * ```typescript
508
+ * await fs.copyAsync('src/config.json', 'backup/config.json')
509
+ * await fs.copyAsync('src', 'backup/src')
510
+ * ```
511
+ */
512
+ copyAsync(src: string, dest: string, options?: {
513
+ overwrite?: boolean;
514
+ }): Promise<void>;
515
+ /**
516
+ * Synchronously moves (renames) a file or directory. Falls back to copy + delete for cross-device moves.
517
+ *
518
+ * @param {string} src - The source path to move from
519
+ * @param {string} dest - The destination path to move to
520
+ * @throws {Error} Throws an error if the source doesn't exist or the move fails
521
+ *
522
+ * @example
523
+ * ```typescript
524
+ * fs.move('temp/draft.txt', 'final/document.txt')
525
+ * fs.move('old-dir', 'new-dir')
526
+ * ```
527
+ */
528
+ move(src: string, dest: string): void;
529
+ /**
530
+ * Asynchronously moves (renames) a file or directory. Falls back to copy + delete for cross-device moves.
531
+ *
532
+ * @param {string} src - The source path to move from
533
+ * @param {string} dest - The destination path to move to
534
+ * @returns {Promise<void>} A promise that resolves when the move is complete
535
+ * @throws {Error} Throws an error if the source doesn't exist or the move fails
536
+ *
537
+ * @example
538
+ * ```typescript
539
+ * await fs.moveAsync('temp/draft.txt', 'final/document.txt')
540
+ * await fs.moveAsync('old-dir', 'new-dir')
541
+ * ```
542
+ */
543
+ moveAsync(src: string, dest: string): Promise<void>;
544
+ /**
545
+ * Recursively walks a directory and returns arrays of file and directory paths.
546
+ * By default paths are absolute. Pass `relative: true` to get paths relative to `basePath`.
547
+ * Supports filtering with exclude and include glob patterns.
548
+ *
549
+ * @param {string} basePath - The base directory path to start walking from
550
+ * @param {WalkOptions} options - Options to configure the walk behavior
551
+ * @param {boolean} [options.directories=true] - Whether to include directories in results
552
+ * @param {boolean} [options.files=true] - Whether to include files in results
553
+ * @param {string | string[]} [options.exclude=[]] - Glob patterns to exclude (e.g. 'node_modules', '*.log')
554
+ * @param {string | string[]} [options.include=[]] - Glob patterns to include (only matching paths are returned)
555
+ * @param {boolean} [options.relative=false] - When true, returned paths are relative to basePath
556
+ * @returns {{ directories: string[], files: string[] }} Object containing arrays of directory and file paths
557
+ *
558
+ * @example
559
+ * ```typescript
560
+ * const result = fs.walk('src', { files: true, directories: false })
561
+ * const filtered = fs.walk('.', { exclude: ['node_modules', '.git'], include: ['*.ts'] })
562
+ * const relative = fs.walk('inbox', { relative: true }) // => { files: ['contact-1.json', ...] }
563
+ * ```
564
+ */
565
+ walk(basePath: string, options?: WalkOptions): {
566
+ directories: string[];
567
+ files: string[];
568
+ };
569
+ /**
570
+ * Asynchronously and recursively walks a directory and returns arrays of file and directory paths.
571
+ * By default paths are absolute. Pass `relative: true` to get paths relative to `baseDir`.
572
+ * Supports filtering with exclude and include glob patterns.
573
+ *
574
+ * @param {string} baseDir - The base directory path to start walking from
575
+ * @param {WalkOptions} options - Options to configure the walk behavior
576
+ * @param {boolean} [options.directories=true] - Whether to include directories in results
577
+ * @param {boolean} [options.files=true] - Whether to include files in results
578
+ * @param {string | string[]} [options.exclude=[]] - Glob patterns to exclude (e.g. 'node_modules', '.git')
579
+ * @param {string | string[]} [options.include=[]] - Glob patterns to include (only matching paths are returned)
580
+ * @param {boolean} [options.relative=false] - When true, returned paths are relative to baseDir
581
+ * @returns {Promise<{ directories: string[], files: string[] }>} Promise resolving to object with directory and file paths
582
+ * @throws {Error} Throws an error if the directory cannot be accessed
583
+ *
584
+ * @example
585
+ * ```typescript
586
+ * const result = await fs.walkAsync('src', { exclude: ['node_modules'] })
587
+ * const files = await fs.walkAsync('inbox', { relative: true })
588
+ * // files.files => ['contact-1.json', 'subfolder/file.txt', ...]
589
+ * ```
590
+ */
591
+ walkAsync(baseDir: string, options?: WalkOptions): Promise<{
592
+ directories: string[];
593
+ files: string[];
594
+ }>;
595
+ /**
596
+ * Synchronously finds a file by walking up the directory tree from the current working directory.
597
+ *
598
+ * @param {string} fileName - The name of the file to search for
599
+ * @param {object} [options={}] - Options for the search
600
+ * @param {string} [options.cwd] - The directory to start searching from (defaults to container.cwd)
601
+ * @returns {string | null} The absolute path to the found file, or null if not found
602
+ *
603
+ * @example
604
+ * ```typescript
605
+ * const packageJson = fs.findUp('package.json')
606
+ * if (packageJson) {
607
+ * console.log(`Found package.json at: ${packageJson}`)
608
+ * }
609
+ * ```
610
+ */
611
+ findUp(fileName: string, options?: {
612
+ cwd?: string;
613
+ }): string | null;
614
+ /**
615
+ * Asynchronously finds a file by walking up the directory tree.
616
+ *
617
+ * @param {string} fileName - The name of the file to search for
618
+ * @param {object} [options={}] - Options for the search
619
+ * @param {string} [options.cwd] - The directory to start searching from (defaults to container.cwd)
620
+ * @param {boolean} [options.multiple=false] - Whether to find multiple instances of the file
621
+ * @returns {Promise<string | string[] | null>} The path(s) to the found file(s), or null if not found
622
+ *
623
+ * @example
624
+ * ```typescript
625
+ * const packageJson = await fs.findUpAsync('package.json')
626
+ * const allPackageJsons = await fs.findUpAsync('package.json', { multiple: true })
627
+ * ```
628
+ */
629
+ findUpAsync(fileName: string, options?: {
630
+ cwd?: string;
631
+ multiple?: boolean;
632
+ }): Promise<string | string[] | null>;
633
+ }
634
+ export default FS;
635
+ //# sourceMappingURL=fs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../../src/node/features/fs.ts"],"names":[],"mappings":"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"}