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,282 @@
1
+ /**
2
+ * Config Utility
3
+ *
4
+ * Loads and manages CLI configuration from various sources:
5
+ * - wrangler.toml / wrangler.jsonc
6
+ * - dotdo.config.ts
7
+ * - package.json (dotdo field)
8
+ * - environment variables
9
+ */
10
+
11
+ import * as fs from 'fs'
12
+ import * as path from 'path'
13
+
14
+ export interface DotdoConfig {
15
+ // Project settings
16
+ name?: string
17
+ entryPoint?: string
18
+ srcDir?: string
19
+ outDir?: string
20
+
21
+ // Development
22
+ port?: number
23
+ host?: string
24
+ persist?: boolean | string
25
+
26
+ // Cloudflare settings
27
+ compatibilityDate?: string
28
+ compatibilityFlags?: string[]
29
+ accountId?: string
30
+
31
+ // Durable Objects
32
+ durableObjects?: Record<string, {
33
+ className: string
34
+ scriptName?: string
35
+ }>
36
+
37
+ // Bindings
38
+ d1Databases?: Record<string, string>
39
+ r2Buckets?: string[]
40
+ kvNamespaces?: string[]
41
+
42
+ // Deploy targets
43
+ deploy?: {
44
+ cloudflare?: boolean
45
+ vercel?: boolean
46
+ fly?: boolean
47
+ }
48
+
49
+ // Tunnel settings
50
+ tunnel?: {
51
+ name?: string
52
+ configPath?: string
53
+ }
54
+ }
55
+
56
+ // Default configuration
57
+ const defaultConfig: DotdoConfig = {
58
+ port: 8787,
59
+ host: 'localhost',
60
+ srcDir: '.',
61
+ outDir: 'dist',
62
+ entryPoint: 'index.ts',
63
+ compatibilityDate: '2024-01-01',
64
+ compatibilityFlags: ['nodejs_compat'],
65
+ persist: true,
66
+ }
67
+
68
+ /**
69
+ * Find the project root directory
70
+ */
71
+ export function findProjectRoot(startDir: string = process.cwd()): string {
72
+ let dir = startDir
73
+
74
+ while (dir !== path.dirname(dir)) {
75
+ if (fs.existsSync(path.join(dir, 'package.json'))) {
76
+ return dir
77
+ }
78
+ dir = path.dirname(dir)
79
+ }
80
+
81
+ return startDir
82
+ }
83
+
84
+ /**
85
+ * Load wrangler configuration
86
+ */
87
+ function loadWranglerConfig(projectRoot: string): Partial<DotdoConfig> {
88
+ const config: Partial<DotdoConfig> = {}
89
+
90
+ // Try wrangler.jsonc first
91
+ const jsoncPath = path.join(projectRoot, 'wrangler.jsonc')
92
+ if (fs.existsSync(jsoncPath)) {
93
+ try {
94
+ // Remove comments for JSON parsing
95
+ const content = fs.readFileSync(jsoncPath, 'utf-8')
96
+ .replace(/\/\*[\s\S]*?\*\//g, '')
97
+ .replace(/\/\/.*/g, '')
98
+ const wrangler = JSON.parse(content)
99
+ return extractWranglerConfig(wrangler)
100
+ } catch {
101
+ // Ignore parse errors
102
+ }
103
+ }
104
+
105
+ // Try wrangler.toml
106
+ const tomlPath = path.join(projectRoot, 'wrangler.toml')
107
+ if (fs.existsSync(tomlPath)) {
108
+ try {
109
+ // Simple TOML parsing for basic fields
110
+ const content = fs.readFileSync(tomlPath, 'utf-8')
111
+ const lines = content.split('\n')
112
+
113
+ for (const line of lines) {
114
+ const match = line.match(/^(\w+)\s*=\s*["']?([^"'\n]+)["']?/)
115
+ if (match) {
116
+ const [, key, value] = match
117
+ if (key === 'name') config.name = value
118
+ if (key === 'main') config.entryPoint = value
119
+ if (key === 'compatibility_date') config.compatibilityDate = value
120
+ }
121
+ }
122
+ } catch {
123
+ // Ignore parse errors
124
+ }
125
+ }
126
+
127
+ return config
128
+ }
129
+
130
+ /**
131
+ * Extract dotdo config from wrangler format
132
+ */
133
+ function extractWranglerConfig(wrangler: Record<string, unknown>): Partial<DotdoConfig> {
134
+ const config: Partial<DotdoConfig> = {}
135
+
136
+ if (wrangler.name) config.name = String(wrangler.name)
137
+ if (wrangler.main) config.entryPoint = String(wrangler.main)
138
+ if (wrangler.compatibility_date) config.compatibilityDate = String(wrangler.compatibility_date)
139
+ if (Array.isArray(wrangler.compatibility_flags)) config.compatibilityFlags = wrangler.compatibility_flags.map(String)
140
+
141
+ // Durable Objects
142
+ if (wrangler.durable_objects && typeof wrangler.durable_objects === 'object') {
143
+ const doConfig = wrangler.durable_objects as { bindings?: Array<{ name: string; class_name: string; script_name?: string }> }
144
+ if (Array.isArray(doConfig.bindings)) {
145
+ config.durableObjects = {}
146
+ for (const binding of doConfig.bindings) {
147
+ config.durableObjects[binding.name] = {
148
+ className: binding.class_name,
149
+ scriptName: binding.script_name,
150
+ }
151
+ }
152
+ }
153
+ }
154
+
155
+ return config
156
+ }
157
+
158
+ /**
159
+ * Load dotdo.config.ts if present
160
+ */
161
+ async function loadDotdoConfig(projectRoot: string): Promise<Partial<DotdoConfig>> {
162
+ const configPath = path.join(projectRoot, 'dotdo.config.ts')
163
+
164
+ if (!fs.existsSync(configPath)) {
165
+ return {}
166
+ }
167
+
168
+ try {
169
+ // Dynamic import for TypeScript config
170
+ const configModule = await import(configPath)
171
+ return configModule.default ?? configModule
172
+ } catch {
173
+ return {}
174
+ }
175
+ }
176
+
177
+ /**
178
+ * Load config from package.json dotdo field
179
+ */
180
+ function loadPackageJsonConfig(projectRoot: string): Partial<DotdoConfig> {
181
+ const pkgPath = path.join(projectRoot, 'package.json')
182
+
183
+ if (!fs.existsSync(pkgPath)) {
184
+ return {}
185
+ }
186
+
187
+ try {
188
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'))
189
+ return pkg.dotdo ?? {}
190
+ } catch {
191
+ return {}
192
+ }
193
+ }
194
+
195
+ /**
196
+ * Load config from environment variables
197
+ */
198
+ function loadEnvConfig(): Partial<DotdoConfig> {
199
+ const config: Partial<DotdoConfig> = {}
200
+
201
+ if (process.env.DOTDO_PORT) config.port = parseInt(process.env.DOTDO_PORT, 10)
202
+ if (process.env.DOTDO_HOST) config.host = process.env.DOTDO_HOST
203
+ if (process.env.CLOUDFLARE_ACCOUNT_ID) config.accountId = process.env.CLOUDFLARE_ACCOUNT_ID
204
+
205
+ return config
206
+ }
207
+
208
+ /**
209
+ * Load complete configuration from all sources
210
+ *
211
+ * Priority (highest to lowest):
212
+ * 1. Environment variables
213
+ * 2. dotdo.config.ts
214
+ * 3. package.json dotdo field
215
+ * 4. wrangler.toml / wrangler.jsonc
216
+ * 5. Default values
217
+ */
218
+ export function loadConfig(projectRoot?: string): DotdoConfig {
219
+ const root = projectRoot ?? findProjectRoot()
220
+
221
+ const wranglerConfig = loadWranglerConfig(root)
222
+ const pkgConfig = loadPackageJsonConfig(root)
223
+ const envConfig = loadEnvConfig()
224
+
225
+ // Note: dotdo.config.ts loading is async, so we load it synchronously here
226
+ // For full async support, use loadConfigAsync
227
+
228
+ return {
229
+ ...defaultConfig,
230
+ ...wranglerConfig,
231
+ ...pkgConfig,
232
+ ...envConfig,
233
+ }
234
+ }
235
+
236
+ /**
237
+ * Load configuration asynchronously (includes dotdo.config.ts)
238
+ */
239
+ export async function loadConfigAsync(projectRoot?: string): Promise<DotdoConfig> {
240
+ const root = projectRoot ?? findProjectRoot()
241
+
242
+ const wranglerConfig = loadWranglerConfig(root)
243
+ const pkgConfig = loadPackageJsonConfig(root)
244
+ const dotdoConfig = await loadDotdoConfig(root)
245
+ const envConfig = loadEnvConfig()
246
+
247
+ return {
248
+ ...defaultConfig,
249
+ ...wranglerConfig,
250
+ ...pkgConfig,
251
+ ...dotdoConfig,
252
+ ...envConfig,
253
+ }
254
+ }
255
+
256
+ /**
257
+ * Save configuration to dotdo.config.ts
258
+ */
259
+ export function saveConfig(config: Partial<DotdoConfig>, projectRoot?: string): void {
260
+ const root = projectRoot ?? findProjectRoot()
261
+ const configPath = path.join(root, 'dotdo.config.ts')
262
+
263
+ const content = `/**
264
+ * dotdo configuration
265
+ * Generated by dotdo CLI
266
+ */
267
+
268
+ import type { DotdoConfig } from 'dotdo/cli'
269
+
270
+ export default ${JSON.stringify(config, null, 2)} satisfies DotdoConfig
271
+ `
272
+
273
+ fs.writeFileSync(configPath, content, 'utf-8')
274
+ }
275
+
276
+ /**
277
+ * Get a specific config value
278
+ */
279
+ export function getConfigValue<K extends keyof DotdoConfig>(key: K): DotdoConfig[K] {
280
+ const config = loadConfig()
281
+ return config[key]
282
+ }
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Code vs Natural Language Detection
3
+ *
4
+ * Uses heuristics to detect whether user input is code or natural language.
5
+ */
6
+
7
+ export function looksLikeCode(input: string): boolean {
8
+ const trimmed = input.trim()
9
+
10
+ // Empty or whitespace-only is not code
11
+ if (!trimmed) {
12
+ return false
13
+ }
14
+
15
+ // Natural language indicators - check these FIRST
16
+ // If input starts with common NL patterns, treat as natural language
17
+ const nlStarters =
18
+ /^(please|help|what|how|why|when|where|who|which|can|could|would|should|explain|create|list|deploy|run the)\b/i
19
+
20
+ if (nlStarters.test(trimmed)) {
21
+ return false
22
+ }
23
+
24
+ // Code patterns
25
+ const codePatterns = [
26
+ /=>/, // arrow function
27
+ /\breturn\s/, // return statement
28
+ /^\w+\.\w+\(/, // method call at start (Math.sqrt, console.log)
29
+ /^const\s|^let\s|^var\s/, // variable declaration
30
+ /^function\s/, // function declaration
31
+ /^async\s+function\s/, // async function declaration
32
+ /^class\s/, // class declaration
33
+ /^import\s|^export\s/, // module syntax
34
+ /^await\s/, // await expression
35
+ /`[^`]*\$\{[^}]*\}[^`]*`/, // template literal with interpolation
36
+ /\?\s*[^:]+\s*:/, // ternary expression
37
+ /===|!==|&&|\|\|/, // comparison/logical operators
38
+ /\.\.\./, // spread operator
39
+ /^\{[^}]*:[^}]*\}$/, // object literal (simple)
40
+ /^\[[^\]]*\]$/, // array literal
41
+ /^\[[^\]]*\]\.\w+\(/, // array with method call
42
+ /\.\w+\([^)]*\)\.\w+\(/, // chained method calls
43
+ ]
44
+
45
+ if (codePatterns.some((pattern) => pattern.test(trimmed))) {
46
+ return true
47
+ }
48
+
49
+ // Arithmetic expression pattern - more specific
50
+ // Must be primarily operators, digits, parens, and single-letter variables
51
+ if (/^[\w\d\s+\-*/()%^.]+$/.test(trimmed)) {
52
+ // Check if it has arithmetic operators
53
+ if (/[+\-*/]/.test(trimmed)) {
54
+ // Make sure it's not natural language by checking word patterns
55
+ const words = trimmed.split(/\s+/)
56
+ // If all "words" are short (1-2 chars after removing parens) or numbers, it's likely arithmetic
57
+ const looksArithmetic = words.every((w) => {
58
+ // Strip parentheses for length check
59
+ const stripped = w.replace(/[()]/g, '')
60
+ return (
61
+ stripped.length <= 2 ||
62
+ /^[\d.]+$/.test(stripped) ||
63
+ /^[+\-*/()%^]+$/.test(w)
64
+ )
65
+ })
66
+ if (looksArithmetic) {
67
+ return true
68
+ }
69
+ }
70
+ }
71
+
72
+ return false
73
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Utils Module
3
+ *
4
+ * Exports all utility functions for CLI operations.
5
+ */
6
+
7
+ export { Logger, Spinner, createLogger, logger, type LogLevel, type LoggerOptions } from './logger'
8
+ export {
9
+ loadConfig,
10
+ loadConfigAsync,
11
+ saveConfig,
12
+ findProjectRoot,
13
+ getConfigValue,
14
+ type DotdoConfig,
15
+ } from './config'
@@ -0,0 +1,232 @@
1
+ /**
2
+ * Logger Utility
3
+ *
4
+ * Provides consistent, colorful logging for CLI operations.
5
+ * Supports different log levels and contexts.
6
+ */
7
+
8
+ export type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'success'
9
+
10
+ export interface LoggerOptions {
11
+ level?: LogLevel
12
+ context?: string
13
+ silent?: boolean
14
+ colors?: boolean
15
+ }
16
+
17
+ // ANSI color codes
18
+ const colors = {
19
+ reset: '\x1b[0m',
20
+ dim: '\x1b[2m',
21
+ bold: '\x1b[1m',
22
+ red: '\x1b[31m',
23
+ green: '\x1b[32m',
24
+ yellow: '\x1b[33m',
25
+ blue: '\x1b[34m',
26
+ magenta: '\x1b[35m',
27
+ cyan: '\x1b[36m',
28
+ gray: '\x1b[90m',
29
+ }
30
+
31
+ // Icons for different log levels
32
+ const icons = {
33
+ debug: colors.gray + '[debug]' + colors.reset,
34
+ info: colors.blue + '[info]' + colors.reset,
35
+ warn: colors.yellow + '[warn]' + colors.reset,
36
+ error: colors.red + '[error]' + colors.reset,
37
+ success: colors.green + '[ok]' + colors.reset,
38
+ }
39
+
40
+ // Log level priority
41
+ const levelPriority: Record<LogLevel, number> = {
42
+ debug: 0,
43
+ info: 1,
44
+ warn: 2,
45
+ error: 3,
46
+ success: 1,
47
+ }
48
+
49
+ /**
50
+ * Logger class for CLI output
51
+ */
52
+ export class Logger {
53
+ private level: LogLevel
54
+ private context: string
55
+ private silent: boolean
56
+ private useColors: boolean
57
+
58
+ constructor(options: LoggerOptions = {}) {
59
+ this.level = options.level ?? (process.env.DEBUG ? 'debug' : 'info')
60
+ this.context = options.context ?? ''
61
+ this.silent = options.silent ?? false
62
+ this.useColors = options.colors ?? (process.stdout.isTTY ?? false)
63
+ }
64
+
65
+ /**
66
+ * Format a message with context and level
67
+ */
68
+ private format(level: LogLevel, message: string, data?: Record<string, unknown>): string {
69
+ const icon = this.useColors ? icons[level] : `[${level}]`
70
+ const ctx = this.context ? this.useColors ? `${colors.dim}(${this.context})${colors.reset}` : `(${this.context})` : ''
71
+
72
+ let output = `${icon} ${ctx} ${message}`
73
+
74
+ if (data) {
75
+ const dataStr = JSON.stringify(data, null, 2)
76
+ output += this.useColors ? `\n${colors.dim}${dataStr}${colors.reset}` : `\n${dataStr}`
77
+ }
78
+
79
+ return output
80
+ }
81
+
82
+ /**
83
+ * Check if a log level should be output
84
+ */
85
+ private shouldLog(level: LogLevel): boolean {
86
+ return !this.silent && levelPriority[level] >= levelPriority[this.level]
87
+ }
88
+
89
+ /**
90
+ * Debug level logging
91
+ */
92
+ debug(message: string, data?: Record<string, unknown>): void {
93
+ if (this.shouldLog('debug')) {
94
+ console.log(this.format('debug', message, data))
95
+ }
96
+ }
97
+
98
+ /**
99
+ * Info level logging
100
+ */
101
+ info(message: string, data?: Record<string, unknown>): void {
102
+ if (this.shouldLog('info')) {
103
+ console.log(this.format('info', message, data))
104
+ }
105
+ }
106
+
107
+ /**
108
+ * Warning level logging
109
+ */
110
+ warn(message: string, data?: Record<string, unknown>): void {
111
+ if (this.shouldLog('warn')) {
112
+ console.warn(this.format('warn', message, data))
113
+ }
114
+ }
115
+
116
+ /**
117
+ * Error level logging
118
+ */
119
+ error(message: string, data?: Record<string, unknown>): void {
120
+ if (this.shouldLog('error')) {
121
+ console.error(this.format('error', message, data))
122
+ }
123
+ }
124
+
125
+ /**
126
+ * Success level logging
127
+ */
128
+ success(message: string, data?: Record<string, unknown>): void {
129
+ if (this.shouldLog('success')) {
130
+ console.log(this.format('success', message, data))
131
+ }
132
+ }
133
+
134
+ /**
135
+ * Plain output without formatting
136
+ */
137
+ log(message: string): void {
138
+ if (!this.silent) {
139
+ console.log(message)
140
+ }
141
+ }
142
+
143
+ /**
144
+ * Create a child logger with additional context
145
+ */
146
+ child(context: string): Logger {
147
+ return new Logger({
148
+ level: this.level,
149
+ context: this.context ? `${this.context}:${context}` : context,
150
+ silent: this.silent,
151
+ colors: this.useColors,
152
+ })
153
+ }
154
+
155
+ /**
156
+ * Create a spinner for long operations
157
+ */
158
+ spinner(message: string): Spinner {
159
+ return new Spinner(message, this)
160
+ }
161
+ }
162
+
163
+ /**
164
+ * Spinner for long-running operations
165
+ */
166
+ export class Spinner {
167
+ private message: string
168
+ private logger: Logger
169
+ private frames = ['|', '/', '-', '\\']
170
+ private frameIndex = 0
171
+ private interval: ReturnType<typeof setInterval> | null = null
172
+
173
+ constructor(message: string, logger: Logger) {
174
+ this.message = message
175
+ this.logger = logger
176
+ }
177
+
178
+ /**
179
+ * Start the spinner
180
+ */
181
+ start(): void {
182
+ if (process.stdout.isTTY) {
183
+ this.interval = setInterval(() => {
184
+ process.stdout.write(`\r${colors.cyan}${this.frames[this.frameIndex]}${colors.reset} ${this.message}`)
185
+ this.frameIndex = (this.frameIndex + 1) % this.frames.length
186
+ }, 100)
187
+ } else {
188
+ this.logger.info(this.message)
189
+ }
190
+ }
191
+
192
+ /**
193
+ * Stop the spinner with success
194
+ */
195
+ succeed(message?: string): void {
196
+ this.stop()
197
+ this.logger.success(message ?? this.message)
198
+ }
199
+
200
+ /**
201
+ * Stop the spinner with failure
202
+ */
203
+ fail(message?: string): void {
204
+ this.stop()
205
+ this.logger.error(message ?? this.message)
206
+ }
207
+
208
+ /**
209
+ * Stop the spinner
210
+ */
211
+ stop(): void {
212
+ if (this.interval) {
213
+ clearInterval(this.interval)
214
+ this.interval = null
215
+ if (process.stdout.isTTY) {
216
+ process.stdout.write('\r' + ' '.repeat(this.message.length + 10) + '\r')
217
+ }
218
+ }
219
+ }
220
+ }
221
+
222
+ /**
223
+ * Create a new logger instance
224
+ */
225
+ export function createLogger(context?: string, options?: Omit<LoggerOptions, 'context'>): Logger {
226
+ return new Logger({ ...options, context })
227
+ }
228
+
229
+ /**
230
+ * Default logger instance
231
+ */
232
+ export const logger = createLogger('dotdo')
@@ -0,0 +1,19 @@
1
+ /**
2
+ * AI Module
3
+ *
4
+ * Provides AI functionality for dotdo:
5
+ * - Template literal API for convenient AI operations
6
+ * - AI Gateway client for multiple providers
7
+ * - Integration with Cloudflare Workers AI
8
+ */
9
+ // Template literal functions
10
+ export { ai, write, summarize, list, extract, is, decide,
11
+ // Human-in-loop functions
12
+ ask, approve, review,
13
+ // Configuration
14
+ configure, getConfig, setHumanTaskExecutor, getHumanTaskExecutor, } from './template-literals';
15
+ // Re-export default as convenience object
16
+ export { default as templateLiterals } from './template-literals';
17
+ // AI Gateway (from lib)
18
+ export { AIGatewayClient, } from '../lib/ai/gateway';
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../ai/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,6BAA6B;AAC7B,OAAO,EACL,EAAE,EACF,KAAK,EACL,SAAS,EACT,IAAI,EACJ,OAAO,EACP,EAAE,EACF,MAAM;AACN,0BAA0B;AAC1B,GAAG,EACH,OAAO,EACP,MAAM;AACN,gBAAgB;AAChB,SAAS,EACT,SAAS,EACT,oBAAoB,EACpB,oBAAoB,GAWrB,MAAM,qBAAqB,CAAA;AAE5B,0CAA0C;AAC1C,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEjE,wBAAwB;AACxB,OAAO,EACL,eAAe,GAIhB,MAAM,mBAAmB,CAAA"}