dotdo 0.0.1 → 0.1.0

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 (667) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +446 -315
  3. package/cli/README.md +238 -0
  4. package/cli/agent.ts +72 -0
  5. package/cli/bin.js +44 -0
  6. package/cli/bin.ts +38 -0
  7. package/cli/build.ts +157 -0
  8. package/cli/commands/auth/login.ts +14 -0
  9. package/cli/commands/auth/logout.ts +6 -0
  10. package/cli/commands/auth/whoami.ts +16 -0
  11. package/cli/commands/deploy-multi.ts +245 -0
  12. package/cli/commands/dev/deploy.ts +100 -0
  13. package/cli/commands/dev/dev.ts +95 -0
  14. package/cli/commands/dev/logs.ts +91 -0
  15. package/cli/commands/dev-local.ts +88 -0
  16. package/cli/commands/do-ops.ts +314 -0
  17. package/cli/commands/index.ts +100 -0
  18. package/cli/commands/init.ts +247 -0
  19. package/cli/commands/introspect/emitter.ts +315 -0
  20. package/cli/commands/introspect/index.ts +193 -0
  21. package/cli/commands/link.ts +598 -0
  22. package/cli/commands/snippets.ts +415 -0
  23. package/cli/commands/tunnel.ts +239 -0
  24. package/cli/device-auth.ts +289 -0
  25. package/cli/fallback.ts +12 -0
  26. package/cli/index.ts +121 -0
  27. package/cli/main.ts +246 -0
  28. package/cli/mcp-stdio.ts +790 -0
  29. package/cli/package.json +62 -0
  30. package/cli/runtime/do-registry.ts +193 -0
  31. package/cli/runtime/embedded-db.ts +344 -0
  32. package/cli/runtime/index.ts +9 -0
  33. package/cli/runtime/miniflare-adapter.ts +162 -0
  34. package/cli/sandbox.ts +82 -0
  35. package/cli/src/args.ts +174 -0
  36. package/cli/src/auth.ts +55 -0
  37. package/cli/src/commands/call.ts +84 -0
  38. package/cli/src/commands/charge.ts +96 -0
  39. package/cli/src/commands/config.ts +115 -0
  40. package/cli/src/commands/email.ts +112 -0
  41. package/cli/src/commands/llm.ts +115 -0
  42. package/cli/src/commands/queue.ts +134 -0
  43. package/cli/src/commands/text.ts +86 -0
  44. package/cli/src/config.ts +185 -0
  45. package/cli/src/output.ts +246 -0
  46. package/cli/src/rpc.ts +192 -0
  47. package/cli/utils/config.ts +282 -0
  48. package/cli/utils/detect.ts +73 -0
  49. package/cli/utils/index.ts +15 -0
  50. package/cli/utils/logger.ts +232 -0
  51. package/dist/ai/index.js +19 -0
  52. package/dist/ai/index.js.map +1 -0
  53. package/dist/ai/template-literals.js +852 -0
  54. package/dist/ai/template-literals.js.map +1 -0
  55. package/dist/api/middleware/auth-federation.js +573 -0
  56. package/dist/api/middleware/auth-federation.js.map +1 -0
  57. package/dist/api/middleware/auth.js +545 -0
  58. package/dist/api/middleware/auth.js.map +1 -0
  59. package/dist/db/actions.js +212 -0
  60. package/dist/db/actions.js.map +1 -0
  61. package/dist/db/auth.js +506 -0
  62. package/dist/db/auth.js.map +1 -0
  63. package/dist/db/branches.js +65 -0
  64. package/dist/db/branches.js.map +1 -0
  65. package/dist/db/clickhouse.js +1074 -0
  66. package/dist/db/clickhouse.js.map +1 -0
  67. package/dist/db/dlq.js +39 -0
  68. package/dist/db/dlq.js.map +1 -0
  69. package/dist/db/events.js +28 -0
  70. package/dist/db/events.js.map +1 -0
  71. package/dist/db/exec.js +64 -0
  72. package/dist/db/exec.js.map +1 -0
  73. package/dist/db/files.js +85 -0
  74. package/dist/db/files.js.map +1 -0
  75. package/dist/db/flags.js +24 -0
  76. package/dist/db/flags.js.map +1 -0
  77. package/dist/db/git.js +116 -0
  78. package/dist/db/git.js.map +1 -0
  79. package/dist/db/iceberg/inverted-index.js +862 -0
  80. package/dist/db/iceberg/inverted-index.js.map +1 -0
  81. package/dist/db/iceberg/puffin.js +878 -0
  82. package/dist/db/iceberg/puffin.js.map +1 -0
  83. package/dist/db/iceberg/search-manifest.js +422 -0
  84. package/dist/db/iceberg/search-manifest.js.map +1 -0
  85. package/dist/db/iceberg/types.js +8 -0
  86. package/dist/db/iceberg/types.js.map +1 -0
  87. package/dist/db/index.js +121 -0
  88. package/dist/db/index.js.map +1 -0
  89. package/dist/db/integrations.js +368 -0
  90. package/dist/db/integrations.js.map +1 -0
  91. package/dist/db/json-indexes.js +332 -0
  92. package/dist/db/json-indexes.js.map +1 -0
  93. package/dist/db/linked-accounts.js +287 -0
  94. package/dist/db/linked-accounts.js.map +1 -0
  95. package/dist/db/nouns.js +183 -0
  96. package/dist/db/nouns.js.map +1 -0
  97. package/dist/db/objects.js +170 -0
  98. package/dist/db/objects.js.map +1 -0
  99. package/dist/db/primitives/dag-scheduler/index.js +869 -0
  100. package/dist/db/primitives/dag-scheduler/index.js.map +1 -0
  101. package/dist/db/primitives/exactly-once-context.js +237 -0
  102. package/dist/db/primitives/exactly-once-context.js.map +1 -0
  103. package/dist/db/primitives/index.js +62 -0
  104. package/dist/db/primitives/index.js.map +1 -0
  105. package/dist/db/primitives/keyed-router.js +145 -0
  106. package/dist/db/primitives/keyed-router.js.map +1 -0
  107. package/dist/db/primitives/observability.js +162 -0
  108. package/dist/db/primitives/observability.js.map +1 -0
  109. package/dist/db/primitives/schema-evolution.js +643 -0
  110. package/dist/db/primitives/schema-evolution.js.map +1 -0
  111. package/dist/db/primitives/stateful-operator/index.js +770 -0
  112. package/dist/db/primitives/stateful-operator/index.js.map +1 -0
  113. package/dist/db/primitives/temporal-store.js +306 -0
  114. package/dist/db/primitives/temporal-store.js.map +1 -0
  115. package/dist/db/primitives/typed-column-store.js +1229 -0
  116. package/dist/db/primitives/typed-column-store.js.map +1 -0
  117. package/dist/db/primitives/utils/duration.js +162 -0
  118. package/dist/db/primitives/utils/duration.js.map +1 -0
  119. package/dist/db/primitives/utils/murmur3.js +116 -0
  120. package/dist/db/primitives/utils/murmur3.js.map +1 -0
  121. package/dist/db/primitives/watermark-service.js +136 -0
  122. package/dist/db/primitives/watermark-service.js.map +1 -0
  123. package/dist/db/primitives/window-manager.js +764 -0
  124. package/dist/db/primitives/window-manager.js.map +1 -0
  125. package/dist/db/relationships.js +66 -0
  126. package/dist/db/relationships.js.map +1 -0
  127. package/dist/db/schema-minimal.js +61 -0
  128. package/dist/db/schema-minimal.js.map +1 -0
  129. package/dist/db/search.js +28 -0
  130. package/dist/db/search.js.map +1 -0
  131. package/dist/db/stores.js +1665 -0
  132. package/dist/db/stores.js.map +1 -0
  133. package/dist/db/things.js +297 -0
  134. package/dist/db/things.js.map +1 -0
  135. package/dist/db/vault.js +171 -0
  136. package/dist/db/vault.js.map +1 -0
  137. package/dist/db/verbs.js +102 -0
  138. package/dist/db/verbs.js.map +1 -0
  139. package/dist/do/base.js +48 -0
  140. package/dist/do/base.js.map +1 -0
  141. package/dist/do/tiny.js +31 -0
  142. package/dist/do/tiny.js.map +1 -0
  143. package/dist/lib/DOAuth.js +261 -0
  144. package/dist/lib/DOAuth.js.map +1 -0
  145. package/dist/lib/DODispatcher.js +72 -0
  146. package/dist/lib/DODispatcher.js.map +1 -0
  147. package/dist/lib/Modifier.js +189 -0
  148. package/dist/lib/Modifier.js.map +1 -0
  149. package/dist/lib/StateStorage.js +403 -0
  150. package/dist/lib/StateStorage.js.map +1 -0
  151. package/dist/lib/TypeRegistry.js +122 -0
  152. package/dist/lib/TypeRegistry.js.map +1 -0
  153. package/dist/lib/ai/gateway.js +247 -0
  154. package/dist/lib/ai/gateway.js.map +1 -0
  155. package/dist/lib/ai/tool-loop-agent.js +591 -0
  156. package/dist/lib/ai/tool-loop-agent.js.map +1 -0
  157. package/dist/lib/auto-wiring.js +439 -0
  158. package/dist/lib/auto-wiring.js.map +1 -0
  159. package/dist/lib/browse/browserbase.js +163 -0
  160. package/dist/lib/browse/browserbase.js.map +1 -0
  161. package/dist/lib/browse/cloudflare.js +144 -0
  162. package/dist/lib/browse/cloudflare.js.map +1 -0
  163. package/dist/lib/browse/index.js +62 -0
  164. package/dist/lib/browse/index.js.map +1 -0
  165. package/dist/lib/browse/types.js +13 -0
  166. package/dist/lib/browse/types.js.map +1 -0
  167. package/dist/lib/cache/index.js +37 -0
  168. package/dist/lib/cache/index.js.map +1 -0
  169. package/dist/lib/cache/visibility.js +638 -0
  170. package/dist/lib/cache/visibility.js.map +1 -0
  171. package/dist/lib/capabilities.js +268 -0
  172. package/dist/lib/capabilities.js.map +1 -0
  173. package/dist/lib/channels/base.js +106 -0
  174. package/dist/lib/channels/base.js.map +1 -0
  175. package/dist/lib/channels/discord.js +94 -0
  176. package/dist/lib/channels/discord.js.map +1 -0
  177. package/dist/lib/channels/email.js +204 -0
  178. package/dist/lib/channels/email.js.map +1 -0
  179. package/dist/lib/channels/index.js +90 -0
  180. package/dist/lib/channels/index.js.map +1 -0
  181. package/dist/lib/channels/mdxui-chat.js +95 -0
  182. package/dist/lib/channels/mdxui-chat.js.map +1 -0
  183. package/dist/lib/channels/slack-blockkit.js +121 -0
  184. package/dist/lib/channels/slack-blockkit.js.map +1 -0
  185. package/dist/lib/channels/types.js +7 -0
  186. package/dist/lib/channels/types.js.map +1 -0
  187. package/dist/lib/cloudflare/ai.js +654 -0
  188. package/dist/lib/cloudflare/ai.js.map +1 -0
  189. package/dist/lib/cloudflare/index.js +88 -0
  190. package/dist/lib/cloudflare/index.js.map +1 -0
  191. package/dist/lib/cloudflare/kv.js +342 -0
  192. package/dist/lib/cloudflare/kv.js.map +1 -0
  193. package/dist/lib/cloudflare/queues.js +434 -0
  194. package/dist/lib/cloudflare/queues.js.map +1 -0
  195. package/dist/lib/cloudflare/r2.js +604 -0
  196. package/dist/lib/cloudflare/r2.js.map +1 -0
  197. package/dist/lib/cloudflare/vectorize.js +494 -0
  198. package/dist/lib/cloudflare/vectorize.js.map +1 -0
  199. package/dist/lib/cloudflare/workflows.js +569 -0
  200. package/dist/lib/cloudflare/workflows.js.map +1 -0
  201. package/dist/lib/colo/caching.js +196 -0
  202. package/dist/lib/colo/caching.js.map +1 -0
  203. package/dist/lib/colo/detection.js +194 -0
  204. package/dist/lib/colo/detection.js.map +1 -0
  205. package/dist/lib/colo/external-data.js +219 -0
  206. package/dist/lib/colo/external-data.js.map +1 -0
  207. package/dist/lib/colo/globe-data.js +179 -0
  208. package/dist/lib/colo/globe-data.js.map +1 -0
  209. package/dist/lib/colo/index.js +16 -0
  210. package/dist/lib/colo/index.js.map +1 -0
  211. package/dist/lib/decorators.js +37 -0
  212. package/dist/lib/decorators.js.map +1 -0
  213. package/dist/lib/discovery.js +81 -0
  214. package/dist/lib/discovery.js.map +1 -0
  215. package/dist/lib/executors/AgenticFunctionExecutor.js +619 -0
  216. package/dist/lib/executors/AgenticFunctionExecutor.js.map +1 -0
  217. package/dist/lib/executors/BaseFunctionExecutor.js +328 -0
  218. package/dist/lib/executors/BaseFunctionExecutor.js.map +1 -0
  219. package/dist/lib/executors/CascadeExecutor.js +418 -0
  220. package/dist/lib/executors/CascadeExecutor.js.map +1 -0
  221. package/dist/lib/executors/CodeFunctionExecutor.js +904 -0
  222. package/dist/lib/executors/CodeFunctionExecutor.js.map +1 -0
  223. package/dist/lib/executors/GenerativeFunctionExecutor.js +904 -0
  224. package/dist/lib/executors/GenerativeFunctionExecutor.js.map +1 -0
  225. package/dist/lib/executors/HumanFunctionExecutor.js +884 -0
  226. package/dist/lib/executors/HumanFunctionExecutor.js.map +1 -0
  227. package/dist/lib/executors/ParallelStepExecutor.js +308 -0
  228. package/dist/lib/executors/ParallelStepExecutor.js.map +1 -0
  229. package/dist/lib/executors/types.js +12 -0
  230. package/dist/lib/executors/types.js.map +1 -0
  231. package/dist/lib/experiments.js +89 -0
  232. package/dist/lib/experiments.js.map +1 -0
  233. package/dist/lib/flags/store.js +262 -0
  234. package/dist/lib/flags/store.js.map +1 -0
  235. package/dist/lib/functions/FunctionComposition.js +467 -0
  236. package/dist/lib/functions/FunctionComposition.js.map +1 -0
  237. package/dist/lib/functions/FunctionMiddleware.js +457 -0
  238. package/dist/lib/functions/FunctionMiddleware.js.map +1 -0
  239. package/dist/lib/functions/FunctionRegistry.js +426 -0
  240. package/dist/lib/functions/FunctionRegistry.js.map +1 -0
  241. package/dist/lib/functions/createFunction.js +1048 -0
  242. package/dist/lib/functions/createFunction.js.map +1 -0
  243. package/dist/lib/humans/index.js +68 -0
  244. package/dist/lib/humans/index.js.map +1 -0
  245. package/dist/lib/humans/templates.js +117 -0
  246. package/dist/lib/humans/templates.js.map +1 -0
  247. package/dist/lib/identity.js +98 -0
  248. package/dist/lib/identity.js.map +1 -0
  249. package/dist/lib/index.js +9 -0
  250. package/dist/lib/index.js.map +1 -0
  251. package/dist/lib/logging/error-logger.js +163 -0
  252. package/dist/lib/logging/error-logger.js.map +1 -0
  253. package/dist/lib/logging/index.js +160 -0
  254. package/dist/lib/logging/index.js.map +1 -0
  255. package/dist/lib/mixins/bash.js +753 -0
  256. package/dist/lib/mixins/bash.js.map +1 -0
  257. package/dist/lib/mixins/fs.js +648 -0
  258. package/dist/lib/mixins/fs.js.map +1 -0
  259. package/dist/lib/mixins/git.js +1006 -0
  260. package/dist/lib/mixins/git.js.map +1 -0
  261. package/dist/lib/mixins/npm.js +662 -0
  262. package/dist/lib/mixins/npm.js.map +1 -0
  263. package/dist/lib/noun-id.js +278 -0
  264. package/dist/lib/noun-id.js.map +1 -0
  265. package/dist/lib/rate-limit/sliding-window.js +148 -0
  266. package/dist/lib/rate-limit/sliding-window.js.map +1 -0
  267. package/dist/lib/rate-limit.js +110 -0
  268. package/dist/lib/rate-limit.js.map +1 -0
  269. package/dist/lib/rpc/bindings.js +548 -0
  270. package/dist/lib/rpc/bindings.js.map +1 -0
  271. package/dist/lib/rpc/index.js +64 -0
  272. package/dist/lib/rpc/index.js.map +1 -0
  273. package/dist/lib/safe-stringify.js +223 -0
  274. package/dist/lib/safe-stringify.js.map +1 -0
  275. package/dist/lib/sandbox/miniflare-sandbox.js +1007 -0
  276. package/dist/lib/sandbox/miniflare-sandbox.js.map +1 -0
  277. package/dist/lib/sqids.js +110 -0
  278. package/dist/lib/sqids.js.map +1 -0
  279. package/dist/lib/sql/adapters/index.js +10 -0
  280. package/dist/lib/sql/adapters/index.js.map +1 -0
  281. package/dist/lib/sql/adapters/node-sql-parser.js +552 -0
  282. package/dist/lib/sql/adapters/node-sql-parser.js.map +1 -0
  283. package/dist/lib/sql/adapters/pgsql-parser.js +1190 -0
  284. package/dist/lib/sql/adapters/pgsql-parser.js.map +1 -0
  285. package/dist/lib/sql/index.js +277 -0
  286. package/dist/lib/sql/index.js.map +1 -0
  287. package/dist/lib/sql/types.js +56 -0
  288. package/dist/lib/sql/types.js.map +1 -0
  289. package/dist/lib/type-classifier.js +126 -0
  290. package/dist/lib/type-classifier.js.map +1 -0
  291. package/dist/lib/utils/html.js +47 -0
  292. package/dist/lib/utils/html.js.map +1 -0
  293. package/dist/lib/validation.js +48 -0
  294. package/dist/lib/validation.js.map +1 -0
  295. package/dist/lib/vault/store.js +411 -0
  296. package/dist/lib/vault/store.js.map +1 -0
  297. package/dist/metrics/hunch.js +739 -0
  298. package/dist/metrics/hunch.js.map +1 -0
  299. package/dist/objects/API.js +302 -0
  300. package/dist/objects/API.js.map +1 -0
  301. package/dist/objects/Agent.js +179 -0
  302. package/dist/objects/Agent.js.map +1 -0
  303. package/dist/objects/AgenticFunctionExecutor.js +8 -0
  304. package/dist/objects/AgenticFunctionExecutor.js.map +1 -0
  305. package/dist/objects/App.js +83 -0
  306. package/dist/objects/App.js.map +1 -0
  307. package/dist/objects/Browser.js +884 -0
  308. package/dist/objects/Browser.js.map +1 -0
  309. package/dist/objects/Business.js +107 -0
  310. package/dist/objects/Business.js.map +1 -0
  311. package/dist/objects/CLI.js +221 -0
  312. package/dist/objects/CLI.js.map +1 -0
  313. package/dist/objects/CodeFunctionExecutor.js +8 -0
  314. package/dist/objects/CodeFunctionExecutor.js.map +1 -0
  315. package/dist/objects/Collection.js +161 -0
  316. package/dist/objects/Collection.js.map +1 -0
  317. package/dist/objects/DO.js +41 -0
  318. package/dist/objects/DO.js.map +1 -0
  319. package/dist/objects/DOBase.js +2309 -0
  320. package/dist/objects/DOBase.js.map +1 -0
  321. package/dist/objects/DOCache.js +153 -0
  322. package/dist/objects/DOCache.js.map +1 -0
  323. package/dist/objects/DOFull.js +1676 -0
  324. package/dist/objects/DOFull.js.map +1 -0
  325. package/dist/objects/DOTiny.js +207 -0
  326. package/dist/objects/DOTiny.js.map +1 -0
  327. package/dist/objects/Directory.js +199 -0
  328. package/dist/objects/Directory.js.map +1 -0
  329. package/dist/objects/Entity.js +413 -0
  330. package/dist/objects/Entity.js.map +1 -0
  331. package/dist/objects/Function.js +116 -0
  332. package/dist/objects/Function.js.map +1 -0
  333. package/dist/objects/Human.js +231 -0
  334. package/dist/objects/Human.js.map +1 -0
  335. package/dist/objects/HumanFunctionExecutor.js +8 -0
  336. package/dist/objects/HumanFunctionExecutor.js.map +1 -0
  337. package/dist/objects/IcebergMetadataDO.js +938 -0
  338. package/dist/objects/IcebergMetadataDO.js.map +1 -0
  339. package/dist/objects/IntegrationsDO.js +1174 -0
  340. package/dist/objects/IntegrationsDO.js.map +1 -0
  341. package/dist/objects/ObservabilityBroadcaster.js +149 -0
  342. package/dist/objects/ObservabilityBroadcaster.js.map +1 -0
  343. package/dist/objects/Package.js +154 -0
  344. package/dist/objects/Package.js.map +1 -0
  345. package/dist/objects/Product.js +193 -0
  346. package/dist/objects/Product.js.map +1 -0
  347. package/dist/objects/SDK.js +152 -0
  348. package/dist/objects/SDK.js.map +1 -0
  349. package/dist/objects/SaaS.js +235 -0
  350. package/dist/objects/SaaS.js.map +1 -0
  351. package/dist/objects/SandboxDO.js +759 -0
  352. package/dist/objects/SandboxDO.js.map +1 -0
  353. package/dist/objects/Service.js +337 -0
  354. package/dist/objects/Service.js.map +1 -0
  355. package/dist/objects/Site.js +80 -0
  356. package/dist/objects/Site.js.map +1 -0
  357. package/dist/objects/Startup.js +479 -0
  358. package/dist/objects/Startup.js.map +1 -0
  359. package/dist/objects/ThingsDO.js +170 -0
  360. package/dist/objects/ThingsDO.js.map +1 -0
  361. package/dist/objects/VectorShardDO.js +650 -0
  362. package/dist/objects/VectorShardDO.js.map +1 -0
  363. package/dist/objects/Worker.js +144 -0
  364. package/dist/objects/Worker.js.map +1 -0
  365. package/dist/objects/Workflow.js +196 -0
  366. package/dist/objects/Workflow.js.map +1 -0
  367. package/dist/objects/WorkflowFactory.js +313 -0
  368. package/dist/objects/WorkflowFactory.js.map +1 -0
  369. package/dist/objects/WorkflowRuntime.js +863 -0
  370. package/dist/objects/WorkflowRuntime.js.map +1 -0
  371. package/dist/objects/circuit-breaker-bulkhead.js +178 -0
  372. package/dist/objects/circuit-breaker-bulkhead.js.map +1 -0
  373. package/dist/objects/createFunction.js +934 -0
  374. package/dist/objects/createFunction.js.map +1 -0
  375. package/dist/objects/index.js +80 -0
  376. package/dist/objects/index.js.map +1 -0
  377. package/dist/objects/lifecycle/Branch.js +275 -0
  378. package/dist/objects/lifecycle/Branch.js.map +1 -0
  379. package/dist/objects/lifecycle/Clone.js +1499 -0
  380. package/dist/objects/lifecycle/Clone.js.map +1 -0
  381. package/dist/objects/lifecycle/Compact.js +237 -0
  382. package/dist/objects/lifecycle/Compact.js.map +1 -0
  383. package/dist/objects/lifecycle/Promote.js +476 -0
  384. package/dist/objects/lifecycle/Promote.js.map +1 -0
  385. package/dist/objects/lifecycle/Shard.js +560 -0
  386. package/dist/objects/lifecycle/Shard.js.map +1 -0
  387. package/dist/objects/lifecycle/index.js +15 -0
  388. package/dist/objects/lifecycle/index.js.map +1 -0
  389. package/dist/objects/lifecycle/types.js +33 -0
  390. package/dist/objects/lifecycle/types.js.map +1 -0
  391. package/dist/objects/mixins/infrastructure.js +171 -0
  392. package/dist/objects/mixins/infrastructure.js.map +1 -0
  393. package/dist/objects/modules/StoresModule.js +153 -0
  394. package/dist/objects/modules/StoresModule.js.map +1 -0
  395. package/dist/objects/persistence/checkpoint-manager.js +606 -0
  396. package/dist/objects/persistence/checkpoint-manager.js.map +1 -0
  397. package/dist/objects/persistence/index.js +72 -0
  398. package/dist/objects/persistence/index.js.map +1 -0
  399. package/dist/objects/persistence/migration-runner.js +562 -0
  400. package/dist/objects/persistence/migration-runner.js.map +1 -0
  401. package/dist/objects/persistence/replication-manager.js +501 -0
  402. package/dist/objects/persistence/replication-manager.js.map +1 -0
  403. package/dist/objects/persistence/tiered-storage-manager.js +595 -0
  404. package/dist/objects/persistence/tiered-storage-manager.js.map +1 -0
  405. package/dist/objects/persistence/types.js +14 -0
  406. package/dist/objects/persistence/types.js.map +1 -0
  407. package/dist/objects/persistence/wal-manager.js +653 -0
  408. package/dist/objects/persistence/wal-manager.js.map +1 -0
  409. package/dist/objects/presets/index.js +20 -0
  410. package/dist/objects/presets/index.js.map +1 -0
  411. package/dist/objects/presets/primitives.js +188 -0
  412. package/dist/objects/presets/primitives.js.map +1 -0
  413. package/dist/objects/primitives/alarm-adapter.js +141 -0
  414. package/dist/objects/primitives/alarm-adapter.js.map +1 -0
  415. package/dist/objects/primitives/index.js +337 -0
  416. package/dist/objects/primitives/index.js.map +1 -0
  417. package/dist/objects/primitives/storage-adapter.js +182 -0
  418. package/dist/objects/primitives/storage-adapter.js.map +1 -0
  419. package/dist/objects/primitives/with-primitives.js +102 -0
  420. package/dist/objects/primitives/with-primitives.js.map +1 -0
  421. package/dist/objects/services/StoreManager.js +227 -0
  422. package/dist/objects/services/StoreManager.js.map +1 -0
  423. package/dist/objects/services/index.js +13 -0
  424. package/dist/objects/services/index.js.map +1 -0
  425. package/dist/objects/transport/auth-layer.js +1451 -0
  426. package/dist/objects/transport/auth-layer.js.map +1 -0
  427. package/dist/objects/transport/capnweb-target.js +355 -0
  428. package/dist/objects/transport/capnweb-target.js.map +1 -0
  429. package/dist/objects/transport/chain.js +441 -0
  430. package/dist/objects/transport/chain.js.map +1 -0
  431. package/dist/objects/transport/handler.js +58 -0
  432. package/dist/objects/transport/handler.js.map +1 -0
  433. package/dist/objects/transport/index.js +53 -0
  434. package/dist/objects/transport/index.js.map +1 -0
  435. package/dist/objects/transport/mcp-server.js +691 -0
  436. package/dist/objects/transport/mcp-server.js.map +1 -0
  437. package/dist/objects/transport/rest-autowire.js +1508 -0
  438. package/dist/objects/transport/rest-autowire.js.map +1 -0
  439. package/dist/objects/transport/rest-router.js +440 -0
  440. package/dist/objects/transport/rest-router.js.map +1 -0
  441. package/dist/objects/transport/rpc-server.js +1539 -0
  442. package/dist/objects/transport/rpc-server.js.map +1 -0
  443. package/dist/objects/transport/shared.js +576 -0
  444. package/dist/objects/transport/shared.js.map +1 -0
  445. package/dist/objects/transport/sync-engine.js +291 -0
  446. package/dist/objects/transport/sync-engine.js.map +1 -0
  447. package/dist/objects/transport/types.js +8 -0
  448. package/dist/objects/transport/types.js.map +1 -0
  449. package/dist/sandbox/index.js +258 -0
  450. package/dist/sandbox/index.js.map +1 -0
  451. package/dist/snippets/artifacts-config.js +241 -0
  452. package/dist/snippets/artifacts-config.js.map +1 -0
  453. package/dist/snippets/artifacts-ingest.js +832 -0
  454. package/dist/snippets/artifacts-ingest.js.map +1 -0
  455. package/dist/snippets/artifacts-serve.js +1035 -0
  456. package/dist/snippets/artifacts-serve.js.map +1 -0
  457. package/dist/snippets/artifacts-types.js +161 -0
  458. package/dist/snippets/artifacts-types.js.map +1 -0
  459. package/dist/snippets/cache-probe.js +376 -0
  460. package/dist/snippets/cache-probe.js.map +1 -0
  461. package/dist/snippets/cache.js +10 -0
  462. package/dist/snippets/cache.js.map +1 -0
  463. package/dist/snippets/events.js +469 -0
  464. package/dist/snippets/events.js.map +1 -0
  465. package/dist/snippets/index.js +7 -0
  466. package/dist/snippets/index.js.map +1 -0
  467. package/dist/snippets/proxy.js +495 -0
  468. package/dist/snippets/proxy.js.map +1 -0
  469. package/dist/snippets/search.js +1759 -0
  470. package/dist/snippets/search.js.map +1 -0
  471. package/dist/streams/index.js +30 -0
  472. package/dist/streams/index.js.map +1 -0
  473. package/dist/streams/observability.js +68 -0
  474. package/dist/streams/observability.js.map +1 -0
  475. package/dist/types/AI.js +92 -0
  476. package/dist/types/AI.js.map +1 -0
  477. package/dist/types/AIFunction.js +171 -0
  478. package/dist/types/AIFunction.js.map +1 -0
  479. package/dist/types/BrowseVerb.js +89 -0
  480. package/dist/types/BrowseVerb.js.map +1 -0
  481. package/dist/types/Browser.js +31 -0
  482. package/dist/types/Browser.js.map +1 -0
  483. package/dist/types/Chaos.js +15 -0
  484. package/dist/types/Chaos.js.map +1 -0
  485. package/dist/types/CloudflareBindings.js +109 -0
  486. package/dist/types/CloudflareBindings.js.map +1 -0
  487. package/dist/types/Collection.js +50 -0
  488. package/dist/types/Collection.js.map +1 -0
  489. package/dist/types/DO.js +2 -0
  490. package/dist/types/DO.js.map +1 -0
  491. package/dist/types/DOLocation.js +63 -0
  492. package/dist/types/DOLocation.js.map +1 -0
  493. package/dist/types/EventHandler.js +57 -0
  494. package/dist/types/EventHandler.js.map +1 -0
  495. package/dist/types/Experiment.js +33 -0
  496. package/dist/types/Experiment.js.map +1 -0
  497. package/dist/types/Flag.js +57 -0
  498. package/dist/types/Flag.js.map +1 -0
  499. package/dist/types/Lifecycle.js +13 -0
  500. package/dist/types/Lifecycle.js.map +1 -0
  501. package/dist/types/Location.js +169 -0
  502. package/dist/types/Location.js.map +1 -0
  503. package/dist/types/Noun.js +66 -0
  504. package/dist/types/Noun.js.map +1 -0
  505. package/dist/types/SessionEvent.js +194 -0
  506. package/dist/types/SessionEvent.js.map +1 -0
  507. package/dist/types/Thing.js +55 -0
  508. package/dist/types/Thing.js.map +1 -0
  509. package/dist/types/ThingDO.js +153 -0
  510. package/dist/types/ThingDO.js.map +1 -0
  511. package/dist/types/Things.js +2 -0
  512. package/dist/types/Things.js.map +1 -0
  513. package/dist/types/Verb.js +119 -0
  514. package/dist/types/Verb.js.map +1 -0
  515. package/dist/types/WorkflowContext.js +70 -0
  516. package/dist/types/WorkflowContext.js.map +1 -0
  517. package/dist/types/analytics-api.js +13 -0
  518. package/dist/types/analytics-api.js.map +1 -0
  519. package/dist/types/capabilities.js +135 -0
  520. package/dist/types/capabilities.js.map +1 -0
  521. package/dist/types/drizzle.js +12 -0
  522. package/dist/types/drizzle.js.map +1 -0
  523. package/dist/types/event.js +201 -0
  524. package/dist/types/event.js.map +1 -0
  525. package/dist/types/fn.js +12 -0
  526. package/dist/types/fn.js.map +1 -0
  527. package/dist/types/iceberg.js +48 -0
  528. package/dist/types/iceberg.js.map +1 -0
  529. package/dist/types/ids.js +170 -0
  530. package/dist/types/ids.js.map +1 -0
  531. package/dist/types/index.js +41 -0
  532. package/dist/types/index.js.map +1 -0
  533. package/dist/types/introspect.js +54 -0
  534. package/dist/types/introspect.js.map +1 -0
  535. package/dist/types/observability.js +124 -0
  536. package/dist/types/observability.js.map +1 -0
  537. package/dist/types/sync-protocol.js +175 -0
  538. package/dist/types/sync-protocol.js.map +1 -0
  539. package/dist/types/vector.js +13 -0
  540. package/dist/types/vector.js.map +1 -0
  541. package/dist/workflows/ScheduleManager.js +473 -0
  542. package/dist/workflows/ScheduleManager.js.map +1 -0
  543. package/dist/workflows/StepDOBridge.js +149 -0
  544. package/dist/workflows/StepDOBridge.js.map +1 -0
  545. package/dist/workflows/StepResultStorage.js +232 -0
  546. package/dist/workflows/StepResultStorage.js.map +1 -0
  547. package/dist/workflows/WaitForEventManager.js +461 -0
  548. package/dist/workflows/WaitForEventManager.js.map +1 -0
  549. package/dist/workflows/analyzer.js +332 -0
  550. package/dist/workflows/analyzer.js.map +1 -0
  551. package/dist/workflows/compat/activity-router.js +484 -0
  552. package/dist/workflows/compat/activity-router.js.map +1 -0
  553. package/dist/workflows/compat/backends/cloudflare-workflows.js +431 -0
  554. package/dist/workflows/compat/backends/cloudflare-workflows.js.map +1 -0
  555. package/dist/workflows/compat/backends/index.js +14 -0
  556. package/dist/workflows/compat/backends/index.js.map +1 -0
  557. package/dist/workflows/compat/errors/index.js +375 -0
  558. package/dist/workflows/compat/errors/index.js.map +1 -0
  559. package/dist/workflows/compat/index.js +79 -0
  560. package/dist/workflows/compat/index.js.map +1 -0
  561. package/dist/workflows/compat/inngest/index.js +989 -0
  562. package/dist/workflows/compat/inngest/index.js.map +1 -0
  563. package/dist/workflows/compat/qstash/index.js +1263 -0
  564. package/dist/workflows/compat/qstash/index.js.map +1 -0
  565. package/dist/workflows/compat/temporal/activities.js +739 -0
  566. package/dist/workflows/compat/temporal/activities.js.map +1 -0
  567. package/dist/workflows/compat/temporal/child-workflows.js +154 -0
  568. package/dist/workflows/compat/temporal/child-workflows.js.map +1 -0
  569. package/dist/workflows/compat/temporal/client.js +381 -0
  570. package/dist/workflows/compat/temporal/client.js.map +1 -0
  571. package/dist/workflows/compat/temporal/context.js +309 -0
  572. package/dist/workflows/compat/temporal/context.js.map +1 -0
  573. package/dist/workflows/compat/temporal/determinism.js +216 -0
  574. package/dist/workflows/compat/temporal/determinism.js.map +1 -0
  575. package/dist/workflows/compat/temporal/errors.js +128 -0
  576. package/dist/workflows/compat/temporal/errors.js.map +1 -0
  577. package/dist/workflows/compat/temporal/index.js +2464 -0
  578. package/dist/workflows/compat/temporal/index.js.map +1 -0
  579. package/dist/workflows/compat/temporal/saga.js +504 -0
  580. package/dist/workflows/compat/temporal/saga.js.map +1 -0
  581. package/dist/workflows/compat/temporal/signals.js +364 -0
  582. package/dist/workflows/compat/temporal/signals.js.map +1 -0
  583. package/dist/workflows/compat/temporal/storage.js +271 -0
  584. package/dist/workflows/compat/temporal/storage.js.map +1 -0
  585. package/dist/workflows/compat/temporal/timers.js +347 -0
  586. package/dist/workflows/compat/temporal/timers.js.map +1 -0
  587. package/dist/workflows/compat/temporal/types.js +7 -0
  588. package/dist/workflows/compat/temporal/types.js.map +1 -0
  589. package/dist/workflows/compat/temporal/unified-primitives.js +339 -0
  590. package/dist/workflows/compat/temporal/unified-primitives.js.map +1 -0
  591. package/dist/workflows/compat/trigger/index.js +468 -0
  592. package/dist/workflows/compat/trigger/index.js.map +1 -0
  593. package/dist/workflows/compat/utils/index.js +69 -0
  594. package/dist/workflows/compat/utils/index.js.map +1 -0
  595. package/dist/workflows/context/correlation-capability.js +266 -0
  596. package/dist/workflows/context/correlation-capability.js.map +1 -0
  597. package/dist/workflows/context/correlation.js +484 -0
  598. package/dist/workflows/context/correlation.js.map +1 -0
  599. package/dist/workflows/context/experiment.js +289 -0
  600. package/dist/workflows/context/experiment.js.map +1 -0
  601. package/dist/workflows/context/flag.js +244 -0
  602. package/dist/workflows/context/flag.js.map +1 -0
  603. package/dist/workflows/context/foundation.js +648 -0
  604. package/dist/workflows/context/foundation.js.map +1 -0
  605. package/dist/workflows/context/human-base.js +106 -0
  606. package/dist/workflows/context/human-base.js.map +1 -0
  607. package/dist/workflows/context/human.js +368 -0
  608. package/dist/workflows/context/human.js.map +1 -0
  609. package/dist/workflows/context/measure.js +354 -0
  610. package/dist/workflows/context/measure.js.map +1 -0
  611. package/dist/workflows/context/rate-limit.js +358 -0
  612. package/dist/workflows/context/rate-limit.js.map +1 -0
  613. package/dist/workflows/context/user.js +117 -0
  614. package/dist/workflows/context/user.js.map +1 -0
  615. package/dist/workflows/context/vault.js +360 -0
  616. package/dist/workflows/context/vault.js.map +1 -0
  617. package/dist/workflows/data/entity-events/entity-events.js +489 -0
  618. package/dist/workflows/data/entity-events/entity-events.js.map +1 -0
  619. package/dist/workflows/data/experiment/index.js +599 -0
  620. package/dist/workflows/data/experiment/index.js.map +1 -0
  621. package/dist/workflows/data/goal/context.js +558 -0
  622. package/dist/workflows/data/goal/context.js.map +1 -0
  623. package/dist/workflows/data/goal/index.js +32 -0
  624. package/dist/workflows/data/goal/index.js.map +1 -0
  625. package/dist/workflows/data/measure/index.js +840 -0
  626. package/dist/workflows/data/measure/index.js.map +1 -0
  627. package/dist/workflows/data/stream/index.js +1149 -0
  628. package/dist/workflows/data/stream/index.js.map +1 -0
  629. package/dist/workflows/data/track/context.js +883 -0
  630. package/dist/workflows/data/track/context.js.map +1 -0
  631. package/dist/workflows/data/track/index.js +15 -0
  632. package/dist/workflows/data/track/index.js.map +1 -0
  633. package/dist/workflows/data/view/context.js +864 -0
  634. package/dist/workflows/data/view/context.js.map +1 -0
  635. package/dist/workflows/domain.js +93 -0
  636. package/dist/workflows/domain.js.map +1 -0
  637. package/dist/workflows/flag.js +176 -0
  638. package/dist/workflows/flag.js.map +1 -0
  639. package/dist/workflows/flags.js +217 -0
  640. package/dist/workflows/flags.js.map +1 -0
  641. package/dist/workflows/hash.js +209 -0
  642. package/dist/workflows/hash.js.map +1 -0
  643. package/dist/workflows/index.js +50 -0
  644. package/dist/workflows/index.js.map +1 -0
  645. package/dist/workflows/on.js +378 -0
  646. package/dist/workflows/on.js.map +1 -0
  647. package/dist/workflows/pipeline-promise.js +481 -0
  648. package/dist/workflows/pipeline-promise.js.map +1 -0
  649. package/dist/workflows/pipeline-types.js +20 -0
  650. package/dist/workflows/pipeline-types.js.map +1 -0
  651. package/dist/workflows/proxy.js +76 -0
  652. package/dist/workflows/proxy.js.map +1 -0
  653. package/dist/workflows/runtime.js +310 -0
  654. package/dist/workflows/runtime.js.map +1 -0
  655. package/dist/workflows/schedule-builder.js +327 -0
  656. package/dist/workflows/schedule-builder.js.map +1 -0
  657. package/dist/workflows/visibility/index.js +146 -0
  658. package/dist/workflows/visibility/index.js.map +1 -0
  659. package/dist/workflows/visibility/query-parser.js +150 -0
  660. package/dist/workflows/visibility/query-parser.js.map +1 -0
  661. package/dist/workflows/visibility/store.js +223 -0
  662. package/dist/workflows/visibility/store.js.map +1 -0
  663. package/dist/workflows/visibility/types.js +30 -0
  664. package/dist/workflows/visibility/types.js.map +1 -0
  665. package/dist/workflows/workflow.js +53 -0
  666. package/dist/workflows/workflow.js.map +1 -0
  667. package/package.json +294 -46
@@ -0,0 +1,648 @@
1
+ /**
2
+ * withFs Mixin - Filesystem Capability
3
+ *
4
+ * Adds $.fs to the WorkflowContext with filesystem operations:
5
+ * - read, write, exists, delete
6
+ * - list, mkdir, stat
7
+ * - copy, move
8
+ *
9
+ * FsModule wraps fsx's FSx class to provide:
10
+ * - Lazy initialization (only creates FSx when first accessed)
11
+ * - Support for FileSystemDO stub or direct R2 binding
12
+ * - Consistent FsCapability interface
13
+ *
14
+ * Storage Layout:
15
+ * The virtual filesystem uses DurableObjectStorage (SQLite) with these key prefixes:
16
+ * - `fsx:file:/path` - File content (string)
17
+ * - `fsx:meta:/path` - File metadata (FileMetadata JSON)
18
+ * - `fsx:dir:/path` - Directory marker (boolean)
19
+ *
20
+ * @module lib/mixins/fs
21
+ */
22
+ // ============================================================================
23
+ // STORAGE KEY CONSTANTS
24
+ // ============================================================================
25
+ /**
26
+ * Storage key prefix for file content.
27
+ * Format: `fsx:file:/path/to/file` -> string content
28
+ */
29
+ const FS_STORAGE_PREFIX_FILE = 'fsx:file:';
30
+ /**
31
+ * Storage key prefix for file metadata.
32
+ * Format: `fsx:meta:/path/to/file` -> FileMetadata JSON
33
+ */
34
+ const FS_STORAGE_PREFIX_META = 'fsx:meta:';
35
+ /**
36
+ * Storage key prefix for directory markers.
37
+ * Format: `fsx:dir:/path/to/dir` -> true
38
+ */
39
+ const FS_STORAGE_PREFIX_DIR = 'fsx:dir:';
40
+ /**
41
+ * Filesystem error with Node.js-compatible error codes.
42
+ *
43
+ * Provides a familiar error interface for developers used to Node.js fs errors.
44
+ * The `code` property can be used for programmatic error handling.
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * try {
49
+ * await $.fs.read('/missing.txt')
50
+ * } catch (error) {
51
+ * if (error instanceof FsError && error.code === 'ENOENT') {
52
+ * console.log('File not found:', error.path)
53
+ * }
54
+ * }
55
+ * ```
56
+ */
57
+ export class FsError extends Error {
58
+ /** POSIX error code (e.g., 'ENOENT', 'EEXIST') */
59
+ code;
60
+ /** The filesystem path that caused the error */
61
+ path;
62
+ /** The system call that failed (e.g., 'read', 'write', 'stat') */
63
+ syscall;
64
+ constructor(code, path, syscall) {
65
+ const message = `${code}: ${FsError.getErrorMessage(code)}: ${path}`;
66
+ super(message);
67
+ this.name = 'FsError';
68
+ this.code = code;
69
+ this.path = path;
70
+ this.syscall = syscall;
71
+ // Maintain proper prototype chain
72
+ Object.setPrototypeOf(this, FsError.prototype);
73
+ }
74
+ /**
75
+ * Get human-readable error message for error code.
76
+ */
77
+ static getErrorMessage(code) {
78
+ switch (code) {
79
+ case 'ENOENT': return 'no such file or directory';
80
+ case 'EEXIST': return 'file already exists';
81
+ case 'EISDIR': return 'illegal operation on a directory';
82
+ case 'ENOTDIR': return 'not a directory';
83
+ case 'ENOTEMPTY': return 'directory not empty';
84
+ case 'EACCES': return 'permission denied';
85
+ case 'EINVAL': return 'invalid argument';
86
+ case 'ENOSPC': return 'no space left on device';
87
+ default: return 'unknown error';
88
+ }
89
+ }
90
+ }
91
+ // ============================================================================
92
+ // FSMODULE CLASS
93
+ // ============================================================================
94
+ /**
95
+ * FsModule wraps fsx's FSx class to implement the FsCapability interface.
96
+ *
97
+ * Provides:
98
+ * - Lazy initialization (FSx is only created on first operation)
99
+ * - Support for FileSystemDO stub or direct R2 binding
100
+ * - Consistent FsCapability interface for dotdo workflows
101
+ *
102
+ * @example
103
+ * ```typescript
104
+ * // With FSx instance
105
+ * const fsModule = new FsModule({ fsx: new FSx(binding) })
106
+ *
107
+ * // With DurableObjectStub
108
+ * const fsModule = new FsModule({ stub: env.FSX.get(id) })
109
+ *
110
+ * // With namespace (creates stub on demand)
111
+ * const fsModule = new FsModule({ namespace: env.FSX })
112
+ *
113
+ * // With lazy factory
114
+ * const fsModule = new FsModule({
115
+ * factory: () => new FSx(binding)
116
+ * })
117
+ * ```
118
+ */
119
+ export class FsModule {
120
+ _fsx = null;
121
+ _options;
122
+ constructor(options) {
123
+ this._options = options;
124
+ // If FSx instance is provided directly, use it immediately
125
+ if (options.fsx) {
126
+ this._fsx = options.fsx;
127
+ }
128
+ }
129
+ /**
130
+ * Get the FSx instance, creating it lazily if needed
131
+ */
132
+ get fsx() {
133
+ if (!this._fsx) {
134
+ if (this._options.factory) {
135
+ this._fsx = this._options.factory();
136
+ }
137
+ else if (this._options.stub) {
138
+ // Create FSx from stub - this would normally use the FSx constructor
139
+ // For now, create a stub-based adapter
140
+ this._fsx = this.createStubAdapter(this._options.stub);
141
+ }
142
+ else if (this._options.namespace) {
143
+ // Get stub from namespace and create adapter
144
+ const id = this._options.namespace.idFromName('global');
145
+ const stub = this._options.namespace.get(id);
146
+ this._fsx = this.createStubAdapter(stub);
147
+ }
148
+ else {
149
+ throw new Error('FsModule: No FSx instance, stub, namespace, or factory provided');
150
+ }
151
+ }
152
+ return this._fsx;
153
+ }
154
+ /**
155
+ * Create an FSx-like adapter from a DurableObjectStub
156
+ * This makes RPC calls to the FileSystemDO
157
+ */
158
+ createStubAdapter(stub) {
159
+ const request = async (method, params = {}) => {
160
+ const response = await stub.fetch('http://fsx.do/rpc', {
161
+ method: 'POST',
162
+ headers: { 'Content-Type': 'application/json' },
163
+ body: JSON.stringify({ method, params }),
164
+ });
165
+ if (!response.ok) {
166
+ const error = await response.json().catch(() => ({ code: 'UNKNOWN', message: response.statusText }));
167
+ throw new Error(error.message || 'Unknown error');
168
+ }
169
+ return response.json();
170
+ };
171
+ return {
172
+ async readFile(path, encoding) {
173
+ const result = await request('readFile', { path, encoding });
174
+ return result.data;
175
+ },
176
+ async writeFile(path, data, options) {
177
+ const encodedData = typeof data === 'string' ? data : btoa(String.fromCharCode(...data));
178
+ const encoding = typeof data === 'string' ? 'utf-8' : 'base64';
179
+ await request('writeFile', { path, data: encodedData, encoding, ...options });
180
+ },
181
+ async exists(path) {
182
+ try {
183
+ await request('access', { path });
184
+ return true;
185
+ }
186
+ catch {
187
+ return false;
188
+ }
189
+ },
190
+ async unlink(path) {
191
+ await request('unlink', { path });
192
+ },
193
+ async readdir(path, options) {
194
+ return request('readdir', { path, ...options });
195
+ },
196
+ async mkdir(path, options) {
197
+ await request('mkdir', { path, ...options });
198
+ },
199
+ async rmdir(path, options) {
200
+ await request('rmdir', { path, ...options });
201
+ },
202
+ async rm(path, options) {
203
+ await request('rm', { path, ...options });
204
+ },
205
+ async stat(path) {
206
+ const stats = await request('stat', { path });
207
+ return {
208
+ ...stats,
209
+ mtime: new Date(stats.mtime),
210
+ ctime: new Date(stats.ctime),
211
+ birthtime: new Date(stats.birthtime),
212
+ isFile: () => true, // Would need mode parsing
213
+ isDirectory: () => false,
214
+ };
215
+ },
216
+ async copyFile(src, dest, flags) {
217
+ await request('copyFile', { src, dest, flags });
218
+ },
219
+ async rename(oldPath, newPath) {
220
+ await request('rename', { oldPath, newPath });
221
+ },
222
+ };
223
+ }
224
+ // ========================================================================
225
+ // FsCapability Implementation
226
+ // ========================================================================
227
+ async read(path, options) {
228
+ const result = await this.fsx.readFile(path, options?.encoding);
229
+ if (typeof result === 'string') {
230
+ return result;
231
+ }
232
+ // Convert Uint8Array to string
233
+ return new TextDecoder().decode(result);
234
+ }
235
+ async write(path, content, options) {
236
+ await this.fsx.writeFile(path, content);
237
+ }
238
+ async exists(path) {
239
+ return this.fsx.exists(path);
240
+ }
241
+ async delete(path) {
242
+ await this.fsx.unlink(path);
243
+ }
244
+ async list(path, options) {
245
+ const entries = await this.fsx.readdir(path, { withFileTypes: true });
246
+ // Handle both string[] and Dirent[] responses
247
+ const fsEntries = [];
248
+ for (const entry of entries) {
249
+ if (typeof entry === 'string') {
250
+ // If we got string names, we need to stat each to determine if it's a directory
251
+ const fullPath = path === '/' ? `/${entry}` : `${path}/${entry}`;
252
+ try {
253
+ const stat = await this.fsx.stat(fullPath);
254
+ fsEntries.push({
255
+ name: entry,
256
+ isDirectory: stat.isDirectory(),
257
+ });
258
+ }
259
+ catch {
260
+ // If stat fails, assume it's a file
261
+ fsEntries.push({
262
+ name: entry,
263
+ isDirectory: false,
264
+ });
265
+ }
266
+ }
267
+ else {
268
+ // Dirent-like object
269
+ fsEntries.push({
270
+ name: entry.name,
271
+ isDirectory: entry.isDirectory(),
272
+ });
273
+ }
274
+ }
275
+ // Apply filter if provided
276
+ if (options?.filter) {
277
+ return fsEntries.filter(options.filter);
278
+ }
279
+ return fsEntries;
280
+ }
281
+ async mkdir(path, options) {
282
+ await this.fsx.mkdir(path, { recursive: options?.recursive });
283
+ }
284
+ async stat(path) {
285
+ const stats = await this.fsx.stat(path);
286
+ return {
287
+ size: stats.size,
288
+ isFile: stats.isFile(),
289
+ isDirectory: stats.isDirectory(),
290
+ createdAt: stats.birthtime,
291
+ modifiedAt: stats.mtime,
292
+ };
293
+ }
294
+ async copy(src, dest) {
295
+ await this.fsx.copyFile(src, dest);
296
+ }
297
+ async move(src, dest) {
298
+ await this.fsx.rename(src, dest);
299
+ }
300
+ }
301
+ // ============================================================================
302
+ // PATH UTILITIES
303
+ // ============================================================================
304
+ /**
305
+ * Normalize a filesystem path to ensure consistent key format.
306
+ *
307
+ * - Ensures path starts with `/`
308
+ * - Removes trailing slash (except for root `/`)
309
+ * - Collapses multiple consecutive slashes into single slash
310
+ *
311
+ * @param path - The path to normalize
312
+ * @returns Normalized path string
313
+ *
314
+ * @example
315
+ * ```typescript
316
+ * normalizePath('foo/bar') // '/foo/bar'
317
+ * normalizePath('/foo/bar/') // '/foo/bar'
318
+ * normalizePath('/') // '/'
319
+ * normalizePath('//foo//bar') // '/foo/bar'
320
+ * ```
321
+ */
322
+ function normalizePath(path) {
323
+ // Ensure path starts with /
324
+ if (!path.startsWith('/')) {
325
+ path = '/' + path;
326
+ }
327
+ // Collapse multiple consecutive slashes into single slash
328
+ path = path.replace(/\/+/g, '/');
329
+ // Remove trailing slash except for root
330
+ if (path !== '/' && path.endsWith('/')) {
331
+ path = path.slice(0, -1);
332
+ }
333
+ return path;
334
+ }
335
+ /**
336
+ * Get the parent directory path from a file path.
337
+ *
338
+ * @param path - The file or directory path
339
+ * @returns Parent directory path (always at least '/')
340
+ *
341
+ * @example
342
+ * ```typescript
343
+ * getParentDir('/foo/bar/file.txt') // '/foo/bar'
344
+ * getParentDir('/foo') // '/'
345
+ * getParentDir('/') // '/'
346
+ * ```
347
+ */
348
+ function getParentDir(path) {
349
+ const normalized = normalizePath(path);
350
+ const lastSlash = normalized.lastIndexOf('/');
351
+ if (lastSlash <= 0)
352
+ return '/';
353
+ return normalized.slice(0, lastSlash);
354
+ }
355
+ /**
356
+ * Get the basename (file or directory name) from a path.
357
+ *
358
+ * @param path - The file or directory path
359
+ * @returns The last segment of the path
360
+ *
361
+ * @example
362
+ * ```typescript
363
+ * getBasename('/foo/bar/file.txt') // 'file.txt'
364
+ * getBasename('/foo/bar') // 'bar'
365
+ * getBasename('/') // ''
366
+ * ```
367
+ */
368
+ function getBasename(path) {
369
+ const normalized = normalizePath(path);
370
+ const lastSlash = normalized.lastIndexOf('/');
371
+ return normalized.slice(lastSlash + 1);
372
+ }
373
+ /**
374
+ * Creates an FsCapability instance backed by DurableObjectStorage (SQLite).
375
+ *
376
+ * This is the core filesystem implementation used by the withFs mixin.
377
+ * All operations are transactional via the underlying SQLite storage.
378
+ *
379
+ * Storage layout (uses constants defined at module top):
380
+ * - `fsx:file:/path` - File content (string)
381
+ * - `fsx:meta:/path` - FileMetadata JSON (size, timestamps, type)
382
+ * - `fsx:dir:/path` - Directory marker (boolean true)
383
+ *
384
+ * @param storage - DurableObjectStorage instance from the DO state
385
+ * @returns FsCapability implementation
386
+ *
387
+ * @internal
388
+ */
389
+ function createFsCapability(storage) {
390
+ return {
391
+ async read(path, options) {
392
+ const normalizedPath = normalizePath(path);
393
+ const content = await storage.get(FS_STORAGE_PREFIX_FILE + normalizedPath);
394
+ if (content === undefined) {
395
+ throw new FsError('ENOENT', path, 'read');
396
+ }
397
+ return content;
398
+ },
399
+ async write(path, content, options) {
400
+ const normalizedPath = normalizePath(path);
401
+ const now = new Date().toISOString();
402
+ // Check if file already exists to preserve createdAt
403
+ const existingMeta = await storage.get(FS_STORAGE_PREFIX_META + normalizedPath);
404
+ const metadata = {
405
+ size: content.length,
406
+ isDirectory: false,
407
+ createdAt: existingMeta?.createdAt ?? now,
408
+ modifiedAt: now,
409
+ };
410
+ // Write file content and metadata atomically
411
+ await storage.put(FS_STORAGE_PREFIX_FILE + normalizedPath, content);
412
+ await storage.put(FS_STORAGE_PREFIX_META + normalizedPath, metadata);
413
+ },
414
+ async exists(path) {
415
+ const normalizedPath = normalizePath(path);
416
+ // Check for file
417
+ const fileContent = await storage.get(FS_STORAGE_PREFIX_FILE + normalizedPath);
418
+ if (fileContent !== undefined)
419
+ return true;
420
+ // Check for directory marker
421
+ const dirMarker = await storage.get(FS_STORAGE_PREFIX_DIR + normalizedPath);
422
+ if (dirMarker !== undefined)
423
+ return true;
424
+ return false;
425
+ },
426
+ async delete(path) {
427
+ const normalizedPath = normalizePath(path);
428
+ // Delete file content, metadata, and directory marker
429
+ await storage.delete(FS_STORAGE_PREFIX_FILE + normalizedPath);
430
+ await storage.delete(FS_STORAGE_PREFIX_META + normalizedPath);
431
+ await storage.delete(FS_STORAGE_PREFIX_DIR + normalizedPath);
432
+ },
433
+ async list(path, options) {
434
+ const normalizedPath = normalizePath(path);
435
+ const prefix = normalizedPath === '/' ? '/' : normalizedPath + '/';
436
+ const entries = [];
437
+ const seen = new Set();
438
+ // List all file keys
439
+ const fileKeys = await storage.list({ prefix: FS_STORAGE_PREFIX_FILE + prefix });
440
+ for (const [key] of fileKeys) {
441
+ // Extract the path after the prefix
442
+ const fullPath = key.slice(FS_STORAGE_PREFIX_FILE.length);
443
+ const relativePath = fullPath.slice(prefix.length);
444
+ // Get the first segment (immediate child)
445
+ const firstSlash = relativePath.indexOf('/');
446
+ const name = firstSlash === -1 ? relativePath : relativePath.slice(0, firstSlash);
447
+ if (name && !seen.has(name)) {
448
+ seen.add(name);
449
+ // If there's a slash, it's a directory containing this file
450
+ const isDirectory = firstSlash !== -1;
451
+ entries.push({ name, isDirectory });
452
+ }
453
+ }
454
+ // List all directory markers
455
+ const dirKeys = await storage.list({ prefix: FS_STORAGE_PREFIX_DIR + prefix });
456
+ for (const [key] of dirKeys) {
457
+ const fullPath = key.slice(FS_STORAGE_PREFIX_DIR.length);
458
+ const relativePath = fullPath.slice(prefix.length);
459
+ // Get the first segment
460
+ const firstSlash = relativePath.indexOf('/');
461
+ const name = firstSlash === -1 ? relativePath : relativePath.slice(0, firstSlash);
462
+ if (name && !seen.has(name)) {
463
+ seen.add(name);
464
+ entries.push({ name, isDirectory: true });
465
+ }
466
+ }
467
+ // Apply filter if provided
468
+ if (options?.filter) {
469
+ return entries.filter(options.filter);
470
+ }
471
+ return entries;
472
+ },
473
+ async mkdir(path, options) {
474
+ const normalizedPath = normalizePath(path);
475
+ if (options?.recursive) {
476
+ // Create all parent directories
477
+ const parts = normalizedPath.split('/').filter(Boolean);
478
+ let current = '';
479
+ for (const part of parts) {
480
+ current += '/' + part;
481
+ await storage.put(FS_STORAGE_PREFIX_DIR + current, true);
482
+ }
483
+ }
484
+ else {
485
+ await storage.put(FS_STORAGE_PREFIX_DIR + normalizedPath, true);
486
+ }
487
+ },
488
+ async stat(path) {
489
+ const normalizedPath = normalizePath(path);
490
+ // Check for file metadata
491
+ const meta = await storage.get(FS_STORAGE_PREFIX_META + normalizedPath);
492
+ if (meta) {
493
+ return {
494
+ size: meta.size,
495
+ isFile: !meta.isDirectory,
496
+ isDirectory: meta.isDirectory,
497
+ createdAt: new Date(meta.createdAt),
498
+ modifiedAt: new Date(meta.modifiedAt),
499
+ };
500
+ }
501
+ // Check for directory marker
502
+ const isDir = await storage.get(FS_STORAGE_PREFIX_DIR + normalizedPath);
503
+ if (isDir !== undefined) {
504
+ const now = new Date();
505
+ return {
506
+ size: 0,
507
+ isFile: false,
508
+ isDirectory: true,
509
+ createdAt: now,
510
+ modifiedAt: now,
511
+ };
512
+ }
513
+ throw new FsError('ENOENT', path, 'stat');
514
+ },
515
+ async copy(src, dest) {
516
+ const normalizedSrc = normalizePath(src);
517
+ const normalizedDest = normalizePath(dest);
518
+ const content = await storage.get(FS_STORAGE_PREFIX_FILE + normalizedSrc);
519
+ if (content === undefined) {
520
+ throw new FsError('ENOENT', src, 'copy');
521
+ }
522
+ const srcMeta = await storage.get(FS_STORAGE_PREFIX_META + normalizedSrc);
523
+ const now = new Date().toISOString();
524
+ // Write to destination with new timestamps
525
+ await storage.put(FS_STORAGE_PREFIX_FILE + normalizedDest, content);
526
+ await storage.put(FS_STORAGE_PREFIX_META + normalizedDest, {
527
+ size: content.length,
528
+ isDirectory: false,
529
+ createdAt: now,
530
+ modifiedAt: now,
531
+ });
532
+ },
533
+ async move(src, dest) {
534
+ const normalizedSrc = normalizePath(src);
535
+ const normalizedDest = normalizePath(dest);
536
+ const content = await storage.get(FS_STORAGE_PREFIX_FILE + normalizedSrc);
537
+ if (content === undefined) {
538
+ throw new FsError('ENOENT', src, 'move');
539
+ }
540
+ const srcMeta = await storage.get(FS_STORAGE_PREFIX_META + normalizedSrc);
541
+ const now = new Date().toISOString();
542
+ // Write to destination preserving original createdAt
543
+ await storage.put(FS_STORAGE_PREFIX_FILE + normalizedDest, content);
544
+ await storage.put(FS_STORAGE_PREFIX_META + normalizedDest, {
545
+ size: content.length,
546
+ isDirectory: false,
547
+ createdAt: srcMeta?.createdAt ?? now,
548
+ modifiedAt: now,
549
+ });
550
+ // Delete source
551
+ await storage.delete(FS_STORAGE_PREFIX_FILE + normalizedSrc);
552
+ await storage.delete(FS_STORAGE_PREFIX_META + normalizedSrc);
553
+ },
554
+ };
555
+ }
556
+ // ============================================================================
557
+ // MIXIN IMPLEMENTATION
558
+ // ============================================================================
559
+ // Symbol for caching the fs capability instance
560
+ const FS_CAPABILITY_CACHE = Symbol('fsCapabilityCache');
561
+ // Symbol for storing the storage reference
562
+ const FS_STORAGE_REF = Symbol('fsStorageRef');
563
+ /**
564
+ * Adds filesystem capability to a DO class
565
+ *
566
+ * @example
567
+ * ```typescript
568
+ * class MyDO extends withFs(DO) {
569
+ * async readConfig() {
570
+ * return this.$.fs.read('/config.json')
571
+ * }
572
+ * }
573
+ * ```
574
+ */
575
+ export function withFs(Base) {
576
+ // @ts-expect-error - Mixin class augments $ type which TypeScript can't verify statically
577
+ return class WithFs extends Base {
578
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
579
+ static capabilities = [...(Base.capabilities || []), 'fs'];
580
+ /**
581
+ * Check if this DO class has a specific capability
582
+ */
583
+ hasCapability(name) {
584
+ if (name === 'fs')
585
+ return true;
586
+ // Check if parent class has the hasCapability method (base DO class)
587
+ const baseProto = Base.prototype;
588
+ if (baseProto && typeof baseProto.hasCapability === 'function') {
589
+ return baseProto.hasCapability.call(this, name);
590
+ }
591
+ return false;
592
+ }
593
+ // Cache for the fs capability instance
594
+ [FS_CAPABILITY_CACHE];
595
+ // Storage reference from constructor
596
+ [FS_STORAGE_REF];
597
+ /**
598
+ * Lazy-loaded filesystem capability
599
+ */
600
+ get fsCapability() {
601
+ if (!this[FS_CAPABILITY_CACHE]) {
602
+ const storage = this[FS_STORAGE_REF];
603
+ if (!storage) {
604
+ throw new Error('fsx: DurableObjectStorage not available - fs operations require DO storage');
605
+ }
606
+ this[FS_CAPABILITY_CACHE] = createFsCapability(storage);
607
+ }
608
+ return this[FS_CAPABILITY_CACHE];
609
+ }
610
+ // TypeScript requires any[] for mixin constructors (TS2545)
611
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
612
+ constructor(...args) {
613
+ super(...args);
614
+ // Extract storage from the DurableObjectState (first constructor arg)
615
+ // DO constructor signature: (state: DurableObjectState, env: Env)
616
+ const state = args[0];
617
+ if (state?.storage) {
618
+ this[FS_STORAGE_REF] = state.storage;
619
+ }
620
+ // Extend $ to include fs capability
621
+ const originalContext = this.$;
622
+ const self = this;
623
+ // Create a new proxy that extends the original $ with fs
624
+ this.$ = new Proxy(originalContext, {
625
+ get(target, prop) {
626
+ if (prop === 'fs') {
627
+ return self.fsCapability;
628
+ }
629
+ // Forward to original context
630
+ const value = target[prop];
631
+ if (typeof value === 'function') {
632
+ // Only bind if it has a bind method (not a Proxy or capability object)
633
+ if (typeof value.bind === 'function') {
634
+ // Don't bind capability functions that have custom properties
635
+ const customProps = Object.getOwnPropertyNames(value).filter((p) => p !== 'length' && p !== 'name' && p !== 'prototype');
636
+ if (customProps.length > 0) {
637
+ return value;
638
+ }
639
+ return value.bind(target);
640
+ }
641
+ }
642
+ return value;
643
+ },
644
+ });
645
+ }
646
+ };
647
+ }
648
+ //# sourceMappingURL=fs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../../lib/mixins/fs.ts"],"names":[],"mappings":"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"}