dotdo 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (727) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +446 -315
  3. package/dist/ai/index.js +19 -0
  4. package/dist/ai/index.js.map +1 -0
  5. package/dist/ai/template-literals.js +852 -0
  6. package/dist/ai/template-literals.js.map +1 -0
  7. package/dist/api/analytics/router.js +601 -0
  8. package/dist/api/analytics/router.js.map +1 -0
  9. package/dist/api/index.js +158 -0
  10. package/dist/api/index.js.map +1 -0
  11. package/dist/api/middleware/auth-federation.js +573 -0
  12. package/dist/api/middleware/auth-federation.js.map +1 -0
  13. package/dist/api/middleware/auth.js +544 -0
  14. package/dist/api/middleware/auth.js.map +1 -0
  15. package/dist/api/middleware/error-handling.js +176 -0
  16. package/dist/api/middleware/error-handling.js.map +1 -0
  17. package/dist/api/middleware/request-id.js +21 -0
  18. package/dist/api/middleware/request-id.js.map +1 -0
  19. package/dist/api/pages.js +1180 -0
  20. package/dist/api/pages.js.map +1 -0
  21. package/dist/api/routes/api.js +612 -0
  22. package/dist/api/routes/api.js.map +1 -0
  23. package/dist/api/routes/browsers.js +471 -0
  24. package/dist/api/routes/browsers.js.map +1 -0
  25. package/dist/api/routes/do.js +188 -0
  26. package/dist/api/routes/do.js.map +1 -0
  27. package/dist/api/routes/mcp.js +459 -0
  28. package/dist/api/routes/mcp.js.map +1 -0
  29. package/dist/api/routes/obs.js +445 -0
  30. package/dist/api/routes/obs.js.map +1 -0
  31. package/dist/api/routes/openapi.js +794 -0
  32. package/dist/api/routes/openapi.js.map +1 -0
  33. package/dist/api/routes/rpc.js +1103 -0
  34. package/dist/api/routes/rpc.js.map +1 -0
  35. package/dist/api/routes/sandboxes.js +389 -0
  36. package/dist/api/routes/sandboxes.js.map +1 -0
  37. package/dist/api/test-do.js +38 -0
  38. package/dist/api/test-do.js.map +1 -0
  39. package/dist/api/types.js +11 -0
  40. package/dist/api/types.js.map +1 -0
  41. package/dist/cli/bin.js +2 -0
  42. package/dist/cli/main.js +52342 -0
  43. package/dist/db/actions.js +212 -0
  44. package/dist/db/actions.js.map +1 -0
  45. package/dist/db/auth.js +506 -0
  46. package/dist/db/auth.js.map +1 -0
  47. package/dist/db/branches.js +65 -0
  48. package/dist/db/branches.js.map +1 -0
  49. package/dist/db/clickhouse.js +1074 -0
  50. package/dist/db/clickhouse.js.map +1 -0
  51. package/dist/db/dlq.js +39 -0
  52. package/dist/db/dlq.js.map +1 -0
  53. package/dist/db/events.js +28 -0
  54. package/dist/db/events.js.map +1 -0
  55. package/dist/db/exec.js +64 -0
  56. package/dist/db/exec.js.map +1 -0
  57. package/dist/db/files.js +85 -0
  58. package/dist/db/files.js.map +1 -0
  59. package/dist/db/flags.js +24 -0
  60. package/dist/db/flags.js.map +1 -0
  61. package/dist/db/git.js +116 -0
  62. package/dist/db/git.js.map +1 -0
  63. package/dist/db/iceberg/inverted-index.js +862 -0
  64. package/dist/db/iceberg/inverted-index.js.map +1 -0
  65. package/dist/db/iceberg/puffin.js +878 -0
  66. package/dist/db/iceberg/puffin.js.map +1 -0
  67. package/dist/db/iceberg/search-manifest.js +422 -0
  68. package/dist/db/iceberg/search-manifest.js.map +1 -0
  69. package/dist/db/iceberg/types.js +8 -0
  70. package/dist/db/iceberg/types.js.map +1 -0
  71. package/dist/db/index.js +121 -0
  72. package/dist/db/index.js.map +1 -0
  73. package/dist/db/integrations.js +368 -0
  74. package/dist/db/integrations.js.map +1 -0
  75. package/dist/db/json-indexes.js +332 -0
  76. package/dist/db/json-indexes.js.map +1 -0
  77. package/dist/db/linked-accounts.js +287 -0
  78. package/dist/db/linked-accounts.js.map +1 -0
  79. package/dist/db/nouns.js +183 -0
  80. package/dist/db/nouns.js.map +1 -0
  81. package/dist/db/objects.js +170 -0
  82. package/dist/db/objects.js.map +1 -0
  83. package/dist/db/primitives/dag-scheduler/index.js +869 -0
  84. package/dist/db/primitives/dag-scheduler/index.js.map +1 -0
  85. package/dist/db/primitives/exactly-once-context.js +237 -0
  86. package/dist/db/primitives/exactly-once-context.js.map +1 -0
  87. package/dist/db/primitives/index.js +62 -0
  88. package/dist/db/primitives/index.js.map +1 -0
  89. package/dist/db/primitives/keyed-router.js +145 -0
  90. package/dist/db/primitives/keyed-router.js.map +1 -0
  91. package/dist/db/primitives/observability.js +162 -0
  92. package/dist/db/primitives/observability.js.map +1 -0
  93. package/dist/db/primitives/schema-evolution.js +643 -0
  94. package/dist/db/primitives/schema-evolution.js.map +1 -0
  95. package/dist/db/primitives/stateful-operator/index.js +770 -0
  96. package/dist/db/primitives/stateful-operator/index.js.map +1 -0
  97. package/dist/db/primitives/temporal-store.js +306 -0
  98. package/dist/db/primitives/temporal-store.js.map +1 -0
  99. package/dist/db/primitives/typed-column-store.js +1229 -0
  100. package/dist/db/primitives/typed-column-store.js.map +1 -0
  101. package/dist/db/primitives/utils/duration.js +162 -0
  102. package/dist/db/primitives/utils/duration.js.map +1 -0
  103. package/dist/db/primitives/utils/murmur3.js +118 -0
  104. package/dist/db/primitives/utils/murmur3.js.map +1 -0
  105. package/dist/db/primitives/watermark-service.js +136 -0
  106. package/dist/db/primitives/watermark-service.js.map +1 -0
  107. package/dist/db/primitives/window-manager.js +764 -0
  108. package/dist/db/primitives/window-manager.js.map +1 -0
  109. package/dist/db/relationships.js +66 -0
  110. package/dist/db/relationships.js.map +1 -0
  111. package/dist/db/schema-minimal.js +61 -0
  112. package/dist/db/schema-minimal.js.map +1 -0
  113. package/dist/db/search.js +28 -0
  114. package/dist/db/search.js.map +1 -0
  115. package/dist/db/stores.js +1665 -0
  116. package/dist/db/stores.js.map +1 -0
  117. package/dist/db/things.js +297 -0
  118. package/dist/db/things.js.map +1 -0
  119. package/dist/db/vault.js +171 -0
  120. package/dist/db/vault.js.map +1 -0
  121. package/dist/db/verbs.js +102 -0
  122. package/dist/db/verbs.js.map +1 -0
  123. package/dist/do/base.js +48 -0
  124. package/dist/do/base.js.map +1 -0
  125. package/dist/do/bash.js +35 -0
  126. package/dist/do/bash.js.map +1 -0
  127. package/dist/do/fs.js +25 -0
  128. package/dist/do/fs.js.map +1 -0
  129. package/dist/do/full.js +61 -0
  130. package/dist/do/full.js.map +1 -0
  131. package/dist/do/git.js +28 -0
  132. package/dist/do/git.js.map +1 -0
  133. package/dist/do/index.js +52 -0
  134. package/dist/do/index.js.map +1 -0
  135. package/dist/do/tiny.js +31 -0
  136. package/dist/do/tiny.js.map +1 -0
  137. package/dist/lib/DOAuth.js +261 -0
  138. package/dist/lib/DOAuth.js.map +1 -0
  139. package/dist/lib/DODispatcher.js +72 -0
  140. package/dist/lib/DODispatcher.js.map +1 -0
  141. package/dist/lib/Modifier.js +189 -0
  142. package/dist/lib/Modifier.js.map +1 -0
  143. package/dist/lib/StateStorage.js +403 -0
  144. package/dist/lib/StateStorage.js.map +1 -0
  145. package/dist/lib/TypeRegistry.js +122 -0
  146. package/dist/lib/TypeRegistry.js.map +1 -0
  147. package/dist/lib/agent/tools/bash.js +336 -0
  148. package/dist/lib/agent/tools/bash.js.map +1 -0
  149. package/dist/lib/agent/tools/edit.js +157 -0
  150. package/dist/lib/agent/tools/edit.js.map +1 -0
  151. package/dist/lib/agent/tools/glob.js +137 -0
  152. package/dist/lib/agent/tools/glob.js.map +1 -0
  153. package/dist/lib/agent/tools/grep.js +315 -0
  154. package/dist/lib/agent/tools/grep.js.map +1 -0
  155. package/dist/lib/agent/tools/index.js +71 -0
  156. package/dist/lib/agent/tools/index.js.map +1 -0
  157. package/dist/lib/agent/tools/read.js +212 -0
  158. package/dist/lib/agent/tools/read.js.map +1 -0
  159. package/dist/lib/agent/tools/types.js +197 -0
  160. package/dist/lib/agent/tools/types.js.map +1 -0
  161. package/dist/lib/agent/tools/write.js +159 -0
  162. package/dist/lib/agent/tools/write.js.map +1 -0
  163. package/dist/lib/ai/gateway.js +247 -0
  164. package/dist/lib/ai/gateway.js.map +1 -0
  165. package/dist/lib/ai/tool-loop-agent.js +591 -0
  166. package/dist/lib/ai/tool-loop-agent.js.map +1 -0
  167. package/dist/lib/auto-wiring.js +439 -0
  168. package/dist/lib/auto-wiring.js.map +1 -0
  169. package/dist/lib/browse/browserbase.js +163 -0
  170. package/dist/lib/browse/browserbase.js.map +1 -0
  171. package/dist/lib/browse/cloudflare.js +144 -0
  172. package/dist/lib/browse/cloudflare.js.map +1 -0
  173. package/dist/lib/browse/index.js +62 -0
  174. package/dist/lib/browse/index.js.map +1 -0
  175. package/dist/lib/browse/types.js +13 -0
  176. package/dist/lib/browse/types.js.map +1 -0
  177. package/dist/lib/cache/index.js +37 -0
  178. package/dist/lib/cache/index.js.map +1 -0
  179. package/dist/lib/cache/visibility.js +638 -0
  180. package/dist/lib/cache/visibility.js.map +1 -0
  181. package/dist/lib/capabilities.js +268 -0
  182. package/dist/lib/capabilities.js.map +1 -0
  183. package/dist/lib/channels/base.js +106 -0
  184. package/dist/lib/channels/base.js.map +1 -0
  185. package/dist/lib/channels/discord.js +94 -0
  186. package/dist/lib/channels/discord.js.map +1 -0
  187. package/dist/lib/channels/email.js +204 -0
  188. package/dist/lib/channels/email.js.map +1 -0
  189. package/dist/lib/channels/index.js +90 -0
  190. package/dist/lib/channels/index.js.map +1 -0
  191. package/dist/lib/channels/mdxui-chat.js +95 -0
  192. package/dist/lib/channels/mdxui-chat.js.map +1 -0
  193. package/dist/lib/channels/slack-blockkit.js +121 -0
  194. package/dist/lib/channels/slack-blockkit.js.map +1 -0
  195. package/dist/lib/channels/types.js +7 -0
  196. package/dist/lib/channels/types.js.map +1 -0
  197. package/dist/lib/cloudflare/ai.js +654 -0
  198. package/dist/lib/cloudflare/ai.js.map +1 -0
  199. package/dist/lib/cloudflare/index.js +88 -0
  200. package/dist/lib/cloudflare/index.js.map +1 -0
  201. package/dist/lib/cloudflare/kv.js +342 -0
  202. package/dist/lib/cloudflare/kv.js.map +1 -0
  203. package/dist/lib/cloudflare/queues.js +434 -0
  204. package/dist/lib/cloudflare/queues.js.map +1 -0
  205. package/dist/lib/cloudflare/r2.js +604 -0
  206. package/dist/lib/cloudflare/r2.js.map +1 -0
  207. package/dist/lib/cloudflare/vectorize.js +494 -0
  208. package/dist/lib/cloudflare/vectorize.js.map +1 -0
  209. package/dist/lib/cloudflare/workflows.js +569 -0
  210. package/dist/lib/cloudflare/workflows.js.map +1 -0
  211. package/dist/lib/colo/caching.js +196 -0
  212. package/dist/lib/colo/caching.js.map +1 -0
  213. package/dist/lib/colo/detection.js +194 -0
  214. package/dist/lib/colo/detection.js.map +1 -0
  215. package/dist/lib/colo/external-data.js +219 -0
  216. package/dist/lib/colo/external-data.js.map +1 -0
  217. package/dist/lib/colo/globe-data.js +179 -0
  218. package/dist/lib/colo/globe-data.js.map +1 -0
  219. package/dist/lib/colo/index.js +16 -0
  220. package/dist/lib/colo/index.js.map +1 -0
  221. package/dist/lib/decorators.js +37 -0
  222. package/dist/lib/decorators.js.map +1 -0
  223. package/dist/lib/discovery.js +81 -0
  224. package/dist/lib/discovery.js.map +1 -0
  225. package/dist/lib/executors/AgenticFunctionExecutor.js +619 -0
  226. package/dist/lib/executors/AgenticFunctionExecutor.js.map +1 -0
  227. package/dist/lib/executors/BaseFunctionExecutor.js +328 -0
  228. package/dist/lib/executors/BaseFunctionExecutor.js.map +1 -0
  229. package/dist/lib/executors/CascadeExecutor.js +418 -0
  230. package/dist/lib/executors/CascadeExecutor.js.map +1 -0
  231. package/dist/lib/executors/CodeFunctionExecutor.js +904 -0
  232. package/dist/lib/executors/CodeFunctionExecutor.js.map +1 -0
  233. package/dist/lib/executors/GenerativeFunctionExecutor.js +904 -0
  234. package/dist/lib/executors/GenerativeFunctionExecutor.js.map +1 -0
  235. package/dist/lib/executors/HumanFunctionExecutor.js +884 -0
  236. package/dist/lib/executors/HumanFunctionExecutor.js.map +1 -0
  237. package/dist/lib/executors/ParallelStepExecutor.js +308 -0
  238. package/dist/lib/executors/ParallelStepExecutor.js.map +1 -0
  239. package/dist/lib/executors/types.js +12 -0
  240. package/dist/lib/executors/types.js.map +1 -0
  241. package/dist/lib/experiments.js +89 -0
  242. package/dist/lib/experiments.js.map +1 -0
  243. package/dist/lib/flags/store.js +262 -0
  244. package/dist/lib/flags/store.js.map +1 -0
  245. package/dist/lib/functions/FunctionComposition.js +467 -0
  246. package/dist/lib/functions/FunctionComposition.js.map +1 -0
  247. package/dist/lib/functions/FunctionMiddleware.js +457 -0
  248. package/dist/lib/functions/FunctionMiddleware.js.map +1 -0
  249. package/dist/lib/functions/FunctionRegistry.js +426 -0
  250. package/dist/lib/functions/FunctionRegistry.js.map +1 -0
  251. package/dist/lib/functions/createFunction.js +1048 -0
  252. package/dist/lib/functions/createFunction.js.map +1 -0
  253. package/dist/lib/humans/index.js +68 -0
  254. package/dist/lib/humans/index.js.map +1 -0
  255. package/dist/lib/humans/templates.js +117 -0
  256. package/dist/lib/humans/templates.js.map +1 -0
  257. package/dist/lib/identity.js +98 -0
  258. package/dist/lib/identity.js.map +1 -0
  259. package/dist/lib/index.js +9 -0
  260. package/dist/lib/index.js.map +1 -0
  261. package/dist/lib/logging/error-logger.js +163 -0
  262. package/dist/lib/logging/error-logger.js.map +1 -0
  263. package/dist/lib/logging/index.js +160 -0
  264. package/dist/lib/logging/index.js.map +1 -0
  265. package/dist/lib/mixins/bash.js +825 -0
  266. package/dist/lib/mixins/bash.js.map +1 -0
  267. package/dist/lib/mixins/fs.js +648 -0
  268. package/dist/lib/mixins/fs.js.map +1 -0
  269. package/dist/lib/mixins/git.js +1011 -0
  270. package/dist/lib/mixins/git.js.map +1 -0
  271. package/dist/lib/mixins/index.js +29 -0
  272. package/dist/lib/mixins/index.js.map +1 -0
  273. package/dist/lib/mixins/npm.js +662 -0
  274. package/dist/lib/mixins/npm.js.map +1 -0
  275. package/dist/lib/noun-id.js +278 -0
  276. package/dist/lib/noun-id.js.map +1 -0
  277. package/dist/lib/rate-limit/sliding-window.js +148 -0
  278. package/dist/lib/rate-limit/sliding-window.js.map +1 -0
  279. package/dist/lib/rate-limit.js +110 -0
  280. package/dist/lib/rate-limit.js.map +1 -0
  281. package/dist/lib/rpc/bindings.js +548 -0
  282. package/dist/lib/rpc/bindings.js.map +1 -0
  283. package/dist/lib/rpc/index.js +64 -0
  284. package/dist/lib/rpc/index.js.map +1 -0
  285. package/dist/lib/safe-stringify.js +223 -0
  286. package/dist/lib/safe-stringify.js.map +1 -0
  287. package/dist/lib/sandbox/miniflare-sandbox.js +1007 -0
  288. package/dist/lib/sandbox/miniflare-sandbox.js.map +1 -0
  289. package/dist/lib/sqids.js +110 -0
  290. package/dist/lib/sqids.js.map +1 -0
  291. package/dist/lib/sql/adapters/index.js +10 -0
  292. package/dist/lib/sql/adapters/index.js.map +1 -0
  293. package/dist/lib/sql/adapters/node-sql-parser.js +552 -0
  294. package/dist/lib/sql/adapters/node-sql-parser.js.map +1 -0
  295. package/dist/lib/sql/adapters/pgsql-parser.js +1189 -0
  296. package/dist/lib/sql/adapters/pgsql-parser.js.map +1 -0
  297. package/dist/lib/sql/index.js +277 -0
  298. package/dist/lib/sql/index.js.map +1 -0
  299. package/dist/lib/sql/types.js +56 -0
  300. package/dist/lib/sql/types.js.map +1 -0
  301. package/dist/lib/type-classifier.js +126 -0
  302. package/dist/lib/type-classifier.js.map +1 -0
  303. package/dist/lib/utils/html.js +47 -0
  304. package/dist/lib/utils/html.js.map +1 -0
  305. package/dist/lib/validation.js +48 -0
  306. package/dist/lib/validation.js.map +1 -0
  307. package/dist/lib/vault/store.js +411 -0
  308. package/dist/lib/vault/store.js.map +1 -0
  309. package/dist/metrics/hunch.js +739 -0
  310. package/dist/metrics/hunch.js.map +1 -0
  311. package/dist/objects/API.js +302 -0
  312. package/dist/objects/API.js.map +1 -0
  313. package/dist/objects/Agent.js +179 -0
  314. package/dist/objects/Agent.js.map +1 -0
  315. package/dist/objects/AgenticFunctionExecutor.js +8 -0
  316. package/dist/objects/AgenticFunctionExecutor.js.map +1 -0
  317. package/dist/objects/App.js +83 -0
  318. package/dist/objects/App.js.map +1 -0
  319. package/dist/objects/Browser.js +884 -0
  320. package/dist/objects/Browser.js.map +1 -0
  321. package/dist/objects/Business.js +107 -0
  322. package/dist/objects/Business.js.map +1 -0
  323. package/dist/objects/CLI.js +221 -0
  324. package/dist/objects/CLI.js.map +1 -0
  325. package/dist/objects/CodeFunctionExecutor.js +8 -0
  326. package/dist/objects/CodeFunctionExecutor.js.map +1 -0
  327. package/dist/objects/Collection.js +161 -0
  328. package/dist/objects/Collection.js.map +1 -0
  329. package/dist/objects/DO.js +41 -0
  330. package/dist/objects/DO.js.map +1 -0
  331. package/dist/objects/DOBase.js +2309 -0
  332. package/dist/objects/DOBase.js.map +1 -0
  333. package/dist/objects/DOFull.js +1676 -0
  334. package/dist/objects/DOFull.js.map +1 -0
  335. package/dist/objects/DOTiny.js +207 -0
  336. package/dist/objects/DOTiny.js.map +1 -0
  337. package/dist/objects/Directory.js +199 -0
  338. package/dist/objects/Directory.js.map +1 -0
  339. package/dist/objects/Entity.js +413 -0
  340. package/dist/objects/Entity.js.map +1 -0
  341. package/dist/objects/Function.js +116 -0
  342. package/dist/objects/Function.js.map +1 -0
  343. package/dist/objects/Human.js +231 -0
  344. package/dist/objects/Human.js.map +1 -0
  345. package/dist/objects/HumanFunctionExecutor.js +8 -0
  346. package/dist/objects/HumanFunctionExecutor.js.map +1 -0
  347. package/dist/objects/IcebergMetadataDO.js +938 -0
  348. package/dist/objects/IcebergMetadataDO.js.map +1 -0
  349. package/dist/objects/IntegrationsDO.js +1174 -0
  350. package/dist/objects/IntegrationsDO.js.map +1 -0
  351. package/dist/objects/ObservabilityBroadcaster.js +149 -0
  352. package/dist/objects/ObservabilityBroadcaster.js.map +1 -0
  353. package/dist/objects/Package.js +154 -0
  354. package/dist/objects/Package.js.map +1 -0
  355. package/dist/objects/Product.js +193 -0
  356. package/dist/objects/Product.js.map +1 -0
  357. package/dist/objects/SDK.js +152 -0
  358. package/dist/objects/SDK.js.map +1 -0
  359. package/dist/objects/SaaS.js +235 -0
  360. package/dist/objects/SaaS.js.map +1 -0
  361. package/dist/objects/SandboxDO.js +759 -0
  362. package/dist/objects/SandboxDO.js.map +1 -0
  363. package/dist/objects/Service.js +337 -0
  364. package/dist/objects/Service.js.map +1 -0
  365. package/dist/objects/Site.js +80 -0
  366. package/dist/objects/Site.js.map +1 -0
  367. package/dist/objects/Startup.js +479 -0
  368. package/dist/objects/Startup.js.map +1 -0
  369. package/dist/objects/ThingsDO.js +170 -0
  370. package/dist/objects/ThingsDO.js.map +1 -0
  371. package/dist/objects/VectorShardDO.js +648 -0
  372. package/dist/objects/VectorShardDO.js.map +1 -0
  373. package/dist/objects/Worker.js +144 -0
  374. package/dist/objects/Worker.js.map +1 -0
  375. package/dist/objects/Workflow.js +196 -0
  376. package/dist/objects/Workflow.js.map +1 -0
  377. package/dist/objects/WorkflowFactory.js +313 -0
  378. package/dist/objects/WorkflowFactory.js.map +1 -0
  379. package/dist/objects/WorkflowRuntime.js +863 -0
  380. package/dist/objects/WorkflowRuntime.js.map +1 -0
  381. package/dist/objects/circuit-breaker-bulkhead.js +178 -0
  382. package/dist/objects/circuit-breaker-bulkhead.js.map +1 -0
  383. package/dist/objects/createFunction.js +934 -0
  384. package/dist/objects/createFunction.js.map +1 -0
  385. package/dist/objects/index.js +80 -0
  386. package/dist/objects/index.js.map +1 -0
  387. package/dist/objects/lifecycle/Branch.js +275 -0
  388. package/dist/objects/lifecycle/Branch.js.map +1 -0
  389. package/dist/objects/lifecycle/Clone.js +1499 -0
  390. package/dist/objects/lifecycle/Clone.js.map +1 -0
  391. package/dist/objects/lifecycle/Compact.js +237 -0
  392. package/dist/objects/lifecycle/Compact.js.map +1 -0
  393. package/dist/objects/lifecycle/Promote.js +476 -0
  394. package/dist/objects/lifecycle/Promote.js.map +1 -0
  395. package/dist/objects/lifecycle/Shard.js +560 -0
  396. package/dist/objects/lifecycle/Shard.js.map +1 -0
  397. package/dist/objects/lifecycle/index.js +15 -0
  398. package/dist/objects/lifecycle/index.js.map +1 -0
  399. package/dist/objects/lifecycle/types.js +33 -0
  400. package/dist/objects/lifecycle/types.js.map +1 -0
  401. package/dist/objects/mixins/infrastructure.js +171 -0
  402. package/dist/objects/mixins/infrastructure.js.map +1 -0
  403. package/dist/objects/modules/StoresModule.js +153 -0
  404. package/dist/objects/modules/StoresModule.js.map +1 -0
  405. package/dist/objects/persistence/checkpoint-manager.js +606 -0
  406. package/dist/objects/persistence/checkpoint-manager.js.map +1 -0
  407. package/dist/objects/persistence/index.js +72 -0
  408. package/dist/objects/persistence/index.js.map +1 -0
  409. package/dist/objects/persistence/migration-runner.js +562 -0
  410. package/dist/objects/persistence/migration-runner.js.map +1 -0
  411. package/dist/objects/persistence/replication-manager.js +501 -0
  412. package/dist/objects/persistence/replication-manager.js.map +1 -0
  413. package/dist/objects/persistence/tiered-storage-manager.js +595 -0
  414. package/dist/objects/persistence/tiered-storage-manager.js.map +1 -0
  415. package/dist/objects/persistence/types.js +14 -0
  416. package/dist/objects/persistence/types.js.map +1 -0
  417. package/dist/objects/persistence/wal-manager.js +653 -0
  418. package/dist/objects/persistence/wal-manager.js.map +1 -0
  419. package/dist/objects/presets/index.js +20 -0
  420. package/dist/objects/presets/index.js.map +1 -0
  421. package/dist/objects/presets/primitives.js +188 -0
  422. package/dist/objects/presets/primitives.js.map +1 -0
  423. package/dist/objects/primitives/alarm-adapter.js +141 -0
  424. package/dist/objects/primitives/alarm-adapter.js.map +1 -0
  425. package/dist/objects/primitives/index.js +337 -0
  426. package/dist/objects/primitives/index.js.map +1 -0
  427. package/dist/objects/primitives/storage-adapter.js +182 -0
  428. package/dist/objects/primitives/storage-adapter.js.map +1 -0
  429. package/dist/objects/primitives/with-primitives.js +102 -0
  430. package/dist/objects/primitives/with-primitives.js.map +1 -0
  431. package/dist/objects/services/StoreManager.js +227 -0
  432. package/dist/objects/services/StoreManager.js.map +1 -0
  433. package/dist/objects/services/index.js +13 -0
  434. package/dist/objects/services/index.js.map +1 -0
  435. package/dist/objects/transport/auth-layer.js +1451 -0
  436. package/dist/objects/transport/auth-layer.js.map +1 -0
  437. package/dist/objects/transport/capnweb-target.js +355 -0
  438. package/dist/objects/transport/capnweb-target.js.map +1 -0
  439. package/dist/objects/transport/chain.js +441 -0
  440. package/dist/objects/transport/chain.js.map +1 -0
  441. package/dist/objects/transport/handler.js +58 -0
  442. package/dist/objects/transport/handler.js.map +1 -0
  443. package/dist/objects/transport/index.js +53 -0
  444. package/dist/objects/transport/index.js.map +1 -0
  445. package/dist/objects/transport/mcp-server.js +690 -0
  446. package/dist/objects/transport/mcp-server.js.map +1 -0
  447. package/dist/objects/transport/rest-autowire.js +1507 -0
  448. package/dist/objects/transport/rest-autowire.js.map +1 -0
  449. package/dist/objects/transport/rest-router.js +440 -0
  450. package/dist/objects/transport/rest-router.js.map +1 -0
  451. package/dist/objects/transport/rpc-server.js +1536 -0
  452. package/dist/objects/transport/rpc-server.js.map +1 -0
  453. package/dist/objects/transport/shared.js +575 -0
  454. package/dist/objects/transport/shared.js.map +1 -0
  455. package/dist/objects/transport/sync-engine.js +291 -0
  456. package/dist/objects/transport/sync-engine.js.map +1 -0
  457. package/dist/objects/transport/types.js +8 -0
  458. package/dist/objects/transport/types.js.map +1 -0
  459. package/dist/primitives/bashx/src/ast/analyze.js +1472 -0
  460. package/dist/primitives/bashx/src/ast/analyze.js.map +1 -0
  461. package/dist/primitives/bashx/src/ast/parser.js +1488 -0
  462. package/dist/primitives/bashx/src/ast/parser.js.map +1 -0
  463. package/dist/primitives/bashx/src/do/commands/crypto.js +1954 -0
  464. package/dist/primitives/bashx/src/do/commands/crypto.js.map +1 -0
  465. package/dist/primitives/bashx/src/do/commands/data-processing.js +1812 -0
  466. package/dist/primitives/bashx/src/do/commands/data-processing.js.map +1 -0
  467. package/dist/primitives/bashx/src/do/commands/extended-utils.js +804 -0
  468. package/dist/primitives/bashx/src/do/commands/extended-utils.js.map +1 -0
  469. package/dist/primitives/bashx/src/do/commands/math-control.js +1122 -0
  470. package/dist/primitives/bashx/src/do/commands/math-control.js.map +1 -0
  471. package/dist/primitives/bashx/src/do/commands/posix-utils.js +1015 -0
  472. package/dist/primitives/bashx/src/do/commands/posix-utils.js.map +1 -0
  473. package/dist/primitives/bashx/src/do/commands/system-utils.js +687 -0
  474. package/dist/primitives/bashx/src/do/commands/system-utils.js.map +1 -0
  475. package/dist/primitives/bashx/src/do/commands/test-command.js +523 -0
  476. package/dist/primitives/bashx/src/do/commands/test-command.js.map +1 -0
  477. package/dist/primitives/bashx/src/do/commands/text-processing.js +1550 -0
  478. package/dist/primitives/bashx/src/do/commands/text-processing.js.map +1 -0
  479. package/dist/primitives/bashx/src/do/container-executor.js +429 -0
  480. package/dist/primitives/bashx/src/do/container-executor.js.map +1 -0
  481. package/dist/primitives/bashx/src/do/index.js +668 -0
  482. package/dist/primitives/bashx/src/do/index.js.map +1 -0
  483. package/dist/primitives/bashx/src/do/tiered-executor.js +2647 -0
  484. package/dist/primitives/bashx/src/do/tiered-executor.js.map +1 -0
  485. package/dist/primitives/bashx/src/do/worker.js +352 -0
  486. package/dist/primitives/bashx/src/do/worker.js.map +1 -0
  487. package/dist/primitives/bashx/src/types.js +10 -0
  488. package/dist/primitives/bashx/src/types.js.map +1 -0
  489. package/dist/primitives/fsx/core/backend.js +480 -0
  490. package/dist/primitives/fsx/core/backend.js.map +1 -0
  491. package/dist/primitives/fsx/core/constants.js +140 -0
  492. package/dist/primitives/fsx/core/constants.js.map +1 -0
  493. package/dist/primitives/fsx/core/fsx.js +1184 -0
  494. package/dist/primitives/fsx/core/fsx.js.map +1 -0
  495. package/dist/primitives/fsx/core/glob/glob.js +438 -0
  496. package/dist/primitives/fsx/core/glob/glob.js.map +1 -0
  497. package/dist/primitives/fsx/core/glob/index.js +8 -0
  498. package/dist/primitives/fsx/core/glob/index.js.map +1 -0
  499. package/dist/primitives/fsx/core/glob/match.js +392 -0
  500. package/dist/primitives/fsx/core/glob/match.js.map +1 -0
  501. package/dist/primitives/fsx/core/types.js +307 -0
  502. package/dist/primitives/fsx/core/types.js.map +1 -0
  503. package/dist/sandbox/index.js +258 -0
  504. package/dist/sandbox/index.js.map +1 -0
  505. package/dist/sdk/capnweb-compat.js +42 -0
  506. package/dist/sdk/capnweb-compat.js.map +1 -0
  507. package/dist/sdk/client.js +20 -0
  508. package/dist/sdk/client.js.map +1 -0
  509. package/dist/sdk/index.js +17 -0
  510. package/dist/sdk/index.js.map +1 -0
  511. package/dist/snippets/artifacts-config.js +241 -0
  512. package/dist/snippets/artifacts-config.js.map +1 -0
  513. package/dist/snippets/artifacts-ingest.js +832 -0
  514. package/dist/snippets/artifacts-ingest.js.map +1 -0
  515. package/dist/snippets/artifacts-serve.js +1035 -0
  516. package/dist/snippets/artifacts-serve.js.map +1 -0
  517. package/dist/snippets/artifacts-types.js +161 -0
  518. package/dist/snippets/artifacts-types.js.map +1 -0
  519. package/dist/snippets/cache-probe.js +376 -0
  520. package/dist/snippets/cache-probe.js.map +1 -0
  521. package/dist/snippets/cache.js +10 -0
  522. package/dist/snippets/cache.js.map +1 -0
  523. package/dist/snippets/events.js +469 -0
  524. package/dist/snippets/events.js.map +1 -0
  525. package/dist/snippets/index.js +7 -0
  526. package/dist/snippets/index.js.map +1 -0
  527. package/dist/snippets/proxy.js +495 -0
  528. package/dist/snippets/proxy.js.map +1 -0
  529. package/dist/snippets/search.js +1759 -0
  530. package/dist/snippets/search.js.map +1 -0
  531. package/dist/streams/index.js +30 -0
  532. package/dist/streams/index.js.map +1 -0
  533. package/dist/streams/observability.js +68 -0
  534. package/dist/streams/observability.js.map +1 -0
  535. package/dist/types/AI.js +92 -0
  536. package/dist/types/AI.js.map +1 -0
  537. package/dist/types/AIFunction.js +171 -0
  538. package/dist/types/AIFunction.js.map +1 -0
  539. package/dist/types/BrowseVerb.js +89 -0
  540. package/dist/types/BrowseVerb.js.map +1 -0
  541. package/dist/types/Browser.js +31 -0
  542. package/dist/types/Browser.js.map +1 -0
  543. package/dist/types/Chaos.js +15 -0
  544. package/dist/types/Chaos.js.map +1 -0
  545. package/dist/types/CloudflareBindings.js +109 -0
  546. package/dist/types/CloudflareBindings.js.map +1 -0
  547. package/dist/types/Collection.js +50 -0
  548. package/dist/types/Collection.js.map +1 -0
  549. package/dist/types/DO.js +2 -0
  550. package/dist/types/DO.js.map +1 -0
  551. package/dist/types/DOLocation.js +63 -0
  552. package/dist/types/DOLocation.js.map +1 -0
  553. package/dist/types/EventHandler.js +57 -0
  554. package/dist/types/EventHandler.js.map +1 -0
  555. package/dist/types/Experiment.js +33 -0
  556. package/dist/types/Experiment.js.map +1 -0
  557. package/dist/types/Flag.js +57 -0
  558. package/dist/types/Flag.js.map +1 -0
  559. package/dist/types/Lifecycle.js +13 -0
  560. package/dist/types/Lifecycle.js.map +1 -0
  561. package/dist/types/Location.js +169 -0
  562. package/dist/types/Location.js.map +1 -0
  563. package/dist/types/Noun.js +66 -0
  564. package/dist/types/Noun.js.map +1 -0
  565. package/dist/types/SessionEvent.js +194 -0
  566. package/dist/types/SessionEvent.js.map +1 -0
  567. package/dist/types/Thing.js +55 -0
  568. package/dist/types/Thing.js.map +1 -0
  569. package/dist/types/ThingDO.js +153 -0
  570. package/dist/types/ThingDO.js.map +1 -0
  571. package/dist/types/Things.js +2 -0
  572. package/dist/types/Things.js.map +1 -0
  573. package/dist/types/Verb.js +119 -0
  574. package/dist/types/Verb.js.map +1 -0
  575. package/dist/types/WorkflowContext.js +70 -0
  576. package/dist/types/WorkflowContext.js.map +1 -0
  577. package/dist/types/analytics-api.js +13 -0
  578. package/dist/types/analytics-api.js.map +1 -0
  579. package/dist/types/capabilities.js +135 -0
  580. package/dist/types/capabilities.js.map +1 -0
  581. package/dist/types/drizzle.js +12 -0
  582. package/dist/types/drizzle.js.map +1 -0
  583. package/dist/types/event.js +201 -0
  584. package/dist/types/event.js.map +1 -0
  585. package/dist/types/fn.js +12 -0
  586. package/dist/types/fn.js.map +1 -0
  587. package/dist/types/iceberg.js +48 -0
  588. package/dist/types/iceberg.js.map +1 -0
  589. package/dist/types/ids.js +170 -0
  590. package/dist/types/ids.js.map +1 -0
  591. package/dist/types/index.js +41 -0
  592. package/dist/types/index.js.map +1 -0
  593. package/dist/types/introspect.js +54 -0
  594. package/dist/types/introspect.js.map +1 -0
  595. package/dist/types/observability.js +124 -0
  596. package/dist/types/observability.js.map +1 -0
  597. package/dist/types/sync-protocol.js +175 -0
  598. package/dist/types/sync-protocol.js.map +1 -0
  599. package/dist/types/vector.js +13 -0
  600. package/dist/types/vector.js.map +1 -0
  601. package/dist/workflows/ScheduleManager.js +473 -0
  602. package/dist/workflows/ScheduleManager.js.map +1 -0
  603. package/dist/workflows/StepDOBridge.js +149 -0
  604. package/dist/workflows/StepDOBridge.js.map +1 -0
  605. package/dist/workflows/StepResultStorage.js +232 -0
  606. package/dist/workflows/StepResultStorage.js.map +1 -0
  607. package/dist/workflows/WaitForEventManager.js +461 -0
  608. package/dist/workflows/WaitForEventManager.js.map +1 -0
  609. package/dist/workflows/analyzer.js +332 -0
  610. package/dist/workflows/analyzer.js.map +1 -0
  611. package/dist/workflows/compat/activity-router.js +484 -0
  612. package/dist/workflows/compat/activity-router.js.map +1 -0
  613. package/dist/workflows/compat/backends/cloudflare-workflows.js +431 -0
  614. package/dist/workflows/compat/backends/cloudflare-workflows.js.map +1 -0
  615. package/dist/workflows/compat/backends/index.js +14 -0
  616. package/dist/workflows/compat/backends/index.js.map +1 -0
  617. package/dist/workflows/compat/errors/index.js +375 -0
  618. package/dist/workflows/compat/errors/index.js.map +1 -0
  619. package/dist/workflows/compat/index.js +79 -0
  620. package/dist/workflows/compat/index.js.map +1 -0
  621. package/dist/workflows/compat/inngest/index.js +989 -0
  622. package/dist/workflows/compat/inngest/index.js.map +1 -0
  623. package/dist/workflows/compat/qstash/index.js +1263 -0
  624. package/dist/workflows/compat/qstash/index.js.map +1 -0
  625. package/dist/workflows/compat/temporal/activities.js +739 -0
  626. package/dist/workflows/compat/temporal/activities.js.map +1 -0
  627. package/dist/workflows/compat/temporal/child-workflows.js +154 -0
  628. package/dist/workflows/compat/temporal/child-workflows.js.map +1 -0
  629. package/dist/workflows/compat/temporal/client.js +381 -0
  630. package/dist/workflows/compat/temporal/client.js.map +1 -0
  631. package/dist/workflows/compat/temporal/context.js +309 -0
  632. package/dist/workflows/compat/temporal/context.js.map +1 -0
  633. package/dist/workflows/compat/temporal/determinism.js +216 -0
  634. package/dist/workflows/compat/temporal/determinism.js.map +1 -0
  635. package/dist/workflows/compat/temporal/errors.js +128 -0
  636. package/dist/workflows/compat/temporal/errors.js.map +1 -0
  637. package/dist/workflows/compat/temporal/index.js +2464 -0
  638. package/dist/workflows/compat/temporal/index.js.map +1 -0
  639. package/dist/workflows/compat/temporal/saga.js +504 -0
  640. package/dist/workflows/compat/temporal/saga.js.map +1 -0
  641. package/dist/workflows/compat/temporal/signals.js +364 -0
  642. package/dist/workflows/compat/temporal/signals.js.map +1 -0
  643. package/dist/workflows/compat/temporal/storage.js +271 -0
  644. package/dist/workflows/compat/temporal/storage.js.map +1 -0
  645. package/dist/workflows/compat/temporal/timers.js +347 -0
  646. package/dist/workflows/compat/temporal/timers.js.map +1 -0
  647. package/dist/workflows/compat/temporal/types.js +7 -0
  648. package/dist/workflows/compat/temporal/types.js.map +1 -0
  649. package/dist/workflows/compat/temporal/unified-primitives.js +339 -0
  650. package/dist/workflows/compat/temporal/unified-primitives.js.map +1 -0
  651. package/dist/workflows/compat/trigger/index.js +468 -0
  652. package/dist/workflows/compat/trigger/index.js.map +1 -0
  653. package/dist/workflows/compat/utils/index.js +69 -0
  654. package/dist/workflows/compat/utils/index.js.map +1 -0
  655. package/dist/workflows/context/correlation-capability.js +266 -0
  656. package/dist/workflows/context/correlation-capability.js.map +1 -0
  657. package/dist/workflows/context/correlation.js +484 -0
  658. package/dist/workflows/context/correlation.js.map +1 -0
  659. package/dist/workflows/context/experiment.js +289 -0
  660. package/dist/workflows/context/experiment.js.map +1 -0
  661. package/dist/workflows/context/flag.js +244 -0
  662. package/dist/workflows/context/flag.js.map +1 -0
  663. package/dist/workflows/context/foundation.js +648 -0
  664. package/dist/workflows/context/foundation.js.map +1 -0
  665. package/dist/workflows/context/human-base.js +106 -0
  666. package/dist/workflows/context/human-base.js.map +1 -0
  667. package/dist/workflows/context/human.js +368 -0
  668. package/dist/workflows/context/human.js.map +1 -0
  669. package/dist/workflows/context/measure.js +354 -0
  670. package/dist/workflows/context/measure.js.map +1 -0
  671. package/dist/workflows/context/rate-limit.js +358 -0
  672. package/dist/workflows/context/rate-limit.js.map +1 -0
  673. package/dist/workflows/context/user.js +117 -0
  674. package/dist/workflows/context/user.js.map +1 -0
  675. package/dist/workflows/context/vault.js +360 -0
  676. package/dist/workflows/context/vault.js.map +1 -0
  677. package/dist/workflows/data/entity-events/entity-events.js +489 -0
  678. package/dist/workflows/data/entity-events/entity-events.js.map +1 -0
  679. package/dist/workflows/data/experiment/index.js +599 -0
  680. package/dist/workflows/data/experiment/index.js.map +1 -0
  681. package/dist/workflows/data/goal/context.js +558 -0
  682. package/dist/workflows/data/goal/context.js.map +1 -0
  683. package/dist/workflows/data/goal/index.js +32 -0
  684. package/dist/workflows/data/goal/index.js.map +1 -0
  685. package/dist/workflows/data/measure/index.js +840 -0
  686. package/dist/workflows/data/measure/index.js.map +1 -0
  687. package/dist/workflows/data/stream/index.js +1215 -0
  688. package/dist/workflows/data/stream/index.js.map +1 -0
  689. package/dist/workflows/data/track/context.js +883 -0
  690. package/dist/workflows/data/track/context.js.map +1 -0
  691. package/dist/workflows/data/track/index.js +15 -0
  692. package/dist/workflows/data/track/index.js.map +1 -0
  693. package/dist/workflows/data/view/context.js +864 -0
  694. package/dist/workflows/data/view/context.js.map +1 -0
  695. package/dist/workflows/domain.js +93 -0
  696. package/dist/workflows/domain.js.map +1 -0
  697. package/dist/workflows/flag.js +176 -0
  698. package/dist/workflows/flag.js.map +1 -0
  699. package/dist/workflows/flags.js +217 -0
  700. package/dist/workflows/flags.js.map +1 -0
  701. package/dist/workflows/hash.js +209 -0
  702. package/dist/workflows/hash.js.map +1 -0
  703. package/dist/workflows/index.js +50 -0
  704. package/dist/workflows/index.js.map +1 -0
  705. package/dist/workflows/on.js +378 -0
  706. package/dist/workflows/on.js.map +1 -0
  707. package/dist/workflows/pipeline-promise.js +481 -0
  708. package/dist/workflows/pipeline-promise.js.map +1 -0
  709. package/dist/workflows/pipeline-types.js +20 -0
  710. package/dist/workflows/pipeline-types.js.map +1 -0
  711. package/dist/workflows/proxy.js +76 -0
  712. package/dist/workflows/proxy.js.map +1 -0
  713. package/dist/workflows/runtime.js +310 -0
  714. package/dist/workflows/runtime.js.map +1 -0
  715. package/dist/workflows/schedule-builder.js +327 -0
  716. package/dist/workflows/schedule-builder.js.map +1 -0
  717. package/dist/workflows/visibility/index.js +148 -0
  718. package/dist/workflows/visibility/index.js.map +1 -0
  719. package/dist/workflows/visibility/query-parser.js +150 -0
  720. package/dist/workflows/visibility/query-parser.js.map +1 -0
  721. package/dist/workflows/visibility/store.js +223 -0
  722. package/dist/workflows/visibility/store.js.map +1 -0
  723. package/dist/workflows/visibility/types.js +30 -0
  724. package/dist/workflows/visibility/types.js.map +1 -0
  725. package/dist/workflows/workflow.js +53 -0
  726. package/dist/workflows/workflow.js.map +1 -0
  727. package/package.json +279 -46
@@ -0,0 +1,668 @@
1
+ /**
2
+ * bashx Durable Object Integration Module
3
+ *
4
+ * Provides the BashModule class for integrating bashx capabilities into
5
+ * dotdo Durable Objects via the WorkflowContext ($) proxy.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { BashModule } from 'bashx/do'
10
+ *
11
+ * // In a DO class
12
+ * class MyDO extends DO {
13
+ * async run() {
14
+ * const bash = new BashModule(this.executor)
15
+ * const result = await bash.exec('ls -la')
16
+ * console.log(result.stdout)
17
+ * }
18
+ * }
19
+ * ```
20
+ *
21
+ * @module bashx/do
22
+ */
23
+ import { parse } from '../ast/parser.js';
24
+ import { analyze, isDangerous } from '../ast/analyze.js';
25
+ /**
26
+ * Commands that can be executed natively via FsCapability.
27
+ * Maps command names to their native implementation handler.
28
+ */
29
+ const NATIVE_FS_COMMANDS = new Set(['cat', 'head', 'tail', 'ls', 'test']);
30
+ // ============================================================================
31
+ // BASH MODULE CLASS
32
+ // ============================================================================
33
+ /**
34
+ * BashModule - Capability module for bash execution in Durable Objects.
35
+ *
36
+ * Implements the BashCapability interface from dotdo, providing AST-based
37
+ * safety analysis and command execution through an external executor.
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * import { BashModule } from 'bashx/do'
42
+ *
43
+ * // Create with a custom executor
44
+ * const bash = new BashModule({
45
+ * execute: async (cmd, opts) => {
46
+ * // Execute via Cloudflare Containers, RPC, etc.
47
+ * return await containerExecutor.run(cmd, opts)
48
+ * }
49
+ * })
50
+ *
51
+ * // Execute commands
52
+ * const result = await bash.exec('npm', ['install'])
53
+ * if (result.exitCode === 0) {
54
+ * console.log('Dependencies installed')
55
+ * }
56
+ *
57
+ * // Run scripts
58
+ * await bash.run(`
59
+ * set -e
60
+ * npm run build
61
+ * npm run test
62
+ * `)
63
+ *
64
+ * // Check safety
65
+ * const check = bash.isDangerous('rm -rf /')
66
+ * if (check.dangerous) {
67
+ * console.warn(check.reason)
68
+ * }
69
+ * ```
70
+ */
71
+ export class BashModule {
72
+ /**
73
+ * Capability module name identifier.
74
+ */
75
+ name = 'bash';
76
+ /**
77
+ * The executor used for running commands.
78
+ */
79
+ executor;
80
+ /**
81
+ * Optional FsCapability for native file operations.
82
+ */
83
+ fs;
84
+ /**
85
+ * Whether to use native operations when available.
86
+ */
87
+ useNativeOps;
88
+ /**
89
+ * Whether the module has been initialized.
90
+ */
91
+ initialized = false;
92
+ /**
93
+ * Create a new BashModule instance.
94
+ *
95
+ * @param executor - The executor to use for running commands
96
+ * @param options - Optional configuration including FsCapability integration
97
+ *
98
+ * @example
99
+ * ```typescript
100
+ * // Basic usage
101
+ * const bash = new BashModule(executor)
102
+ *
103
+ * // With FsCapability for native file operations
104
+ * const bash = new BashModule(executor, { fs: fsCapability })
105
+ *
106
+ * // Disable native ops (always use executor)
107
+ * const bash = new BashModule(executor, { fs: fsCapability, useNativeOps: false })
108
+ * ```
109
+ */
110
+ constructor(executor, options) {
111
+ this.executor = executor;
112
+ this.fs = options?.fs;
113
+ this.useNativeOps = options?.useNativeOps ?? true;
114
+ }
115
+ /**
116
+ * Check if FsCapability is available and native ops are enabled.
117
+ */
118
+ get hasFsCapability() {
119
+ return this.useNativeOps && this.fs !== undefined;
120
+ }
121
+ /**
122
+ * Initialize the module.
123
+ * Called when the capability is first accessed.
124
+ */
125
+ async initialize() {
126
+ if (this.initialized)
127
+ return;
128
+ // Future: initialize tree-sitter WASM, etc.
129
+ this.initialized = true;
130
+ }
131
+ /**
132
+ * Clean up resources.
133
+ * Called when the capability is unloaded.
134
+ */
135
+ async dispose() {
136
+ // Future: cleanup resources
137
+ this.initialized = false;
138
+ }
139
+ /**
140
+ * Execute a command and wait for completion.
141
+ *
142
+ * This method performs AST-based safety analysis before execution:
143
+ * 1. Parses the command into an AST
144
+ * 2. Analyzes the AST for safety classification
145
+ * 3. Blocks critical/high impact commands unless confirm: true is passed
146
+ * 4. Executes the command if it passes the safety gate
147
+ *
148
+ * When FsCapability is available and the command is a native file operation
149
+ * (cat, head, tail, ls, test), it will be executed natively without spawning
150
+ * a subprocess. This is faster and works in pure Workers environments.
151
+ *
152
+ * @param command - The command to execute (e.g., 'git', 'npm', 'ls')
153
+ * @param args - Optional array of command arguments
154
+ * @param options - Optional execution options
155
+ * @returns Promise resolving to the execution result
156
+ *
157
+ * @example
158
+ * ```typescript
159
+ * // Simple command
160
+ * const result = await bash.exec('ls')
161
+ *
162
+ * // With arguments
163
+ * const result = await bash.exec('git', ['status', '--short'])
164
+ *
165
+ * // With options
166
+ * const result = await bash.exec('npm', ['install'], {
167
+ * cwd: '/app',
168
+ * timeout: 60000
169
+ * })
170
+ *
171
+ * // Dangerous commands are blocked by default
172
+ * const result = await bash.exec('rm', ['-rf', '/'])
173
+ * // result.blocked === true, result.requiresConfirm === true
174
+ *
175
+ * // Use confirm: true to execute dangerous commands
176
+ * const result = await bash.exec('rm', ['-rf', 'temp/'], { confirm: true })
177
+ *
178
+ * // With FsCapability, this uses $.fs.read() instead of spawning cat
179
+ * const result = await bash.exec('cat', ['file.txt'])
180
+ * ```
181
+ */
182
+ async exec(command, args, options) {
183
+ const fullCommand = args && args.length > 0 ? `${command} ${args.join(' ')}` : command;
184
+ // Perform AST-based safety analysis
185
+ const safetyResult = this.performSafetyAnalysis(fullCommand, options);
186
+ if (safetyResult) {
187
+ return safetyResult;
188
+ }
189
+ // Try native operation if FsCapability is available
190
+ if (this.hasFsCapability && NATIVE_FS_COMMANDS.has(command)) {
191
+ const nativeResult = await this.tryNativeExec(command, args || [], options);
192
+ if (nativeResult) {
193
+ return nativeResult;
194
+ }
195
+ }
196
+ // Execute via executor
197
+ return this.executor.execute(fullCommand, options);
198
+ }
199
+ /**
200
+ * Perform AST-based safety analysis on a command.
201
+ * Returns a blocked result if the command should not be executed,
202
+ * or null if execution should proceed.
203
+ */
204
+ performSafetyAnalysis(command, options) {
205
+ try {
206
+ // Parse and analyze the command
207
+ const ast = parse(command);
208
+ const { classification, intent } = analyze(ast);
209
+ const dangerCheck = isDangerous(ast);
210
+ // Check if command requires confirmation
211
+ const requiresConfirm = classification.impact === 'critical' || classification.impact === 'high';
212
+ // If dangerous and not confirmed, block execution
213
+ if (requiresConfirm && !options?.confirm) {
214
+ return this.createBlockedResult(command, classification, intent, dangerCheck.reason);
215
+ }
216
+ // Command is safe or confirmed - allow execution
217
+ return null;
218
+ }
219
+ catch {
220
+ // If AST analysis fails (e.g., parse error), allow executor to handle
221
+ // This ensures backward compatibility and allows the executor to
222
+ // provide its own error handling
223
+ return null;
224
+ }
225
+ }
226
+ /**
227
+ * Create a blocked result for dangerous commands.
228
+ */
229
+ createBlockedResult(command, classification, intent, reason) {
230
+ const blockReason = reason || classification.reason || 'Command blocked due to safety concerns';
231
+ return {
232
+ input: command,
233
+ command,
234
+ valid: true,
235
+ generated: false,
236
+ stdout: '',
237
+ stderr: '',
238
+ exitCode: 0,
239
+ intent,
240
+ classification,
241
+ blocked: true,
242
+ requiresConfirm: true,
243
+ blockReason,
244
+ };
245
+ }
246
+ /**
247
+ * Try to execute a command natively using FsCapability.
248
+ * Returns null if the command cannot be executed natively.
249
+ */
250
+ async tryNativeExec(command, args, options) {
251
+ if (!this.fs)
252
+ return null;
253
+ try {
254
+ switch (command) {
255
+ case 'cat':
256
+ return await this.nativeCat(args, options);
257
+ case 'ls':
258
+ return await this.nativeLs(args, options);
259
+ case 'test':
260
+ return await this.nativeTest(args, options);
261
+ case 'head':
262
+ return await this.nativeHead(args, options);
263
+ case 'tail':
264
+ return await this.nativeTail(args, options);
265
+ default:
266
+ return null;
267
+ }
268
+ }
269
+ catch (error) {
270
+ // If native execution fails, return null to fall back to executor
271
+ return null;
272
+ }
273
+ }
274
+ /**
275
+ * Native implementation of 'cat' using FsCapability (from fsx.do).
276
+ */
277
+ async nativeCat(args, _options) {
278
+ if (!this.fs || args.length === 0)
279
+ return null;
280
+ // Simple cat: cat file1 [file2 ...]
281
+ const files = args.filter((arg) => !arg.startsWith('-'));
282
+ if (files.length === 0)
283
+ return null;
284
+ try {
285
+ // Use encoding: 'utf-8' to ensure we get strings back from fsx.do
286
+ const contents = await Promise.all(files.map((file) => this.fs.read(file, { encoding: 'utf-8' })));
287
+ const stdout = contents.join('');
288
+ return this.createNativeResult(`cat ${args.join(' ')}`, stdout);
289
+ }
290
+ catch (error) {
291
+ const stderr = error instanceof Error ? error.message : String(error);
292
+ return this.createNativeResult(`cat ${args.join(' ')}`, '', stderr, 1);
293
+ }
294
+ }
295
+ /**
296
+ * Native implementation of 'ls' using FsCapability (from fsx.do).
297
+ */
298
+ async nativeLs(args, _options) {
299
+ if (!this.fs)
300
+ return null;
301
+ // Simple ls: ls [path]
302
+ const paths = args.filter((arg) => !arg.startsWith('-'));
303
+ const path = paths[0] || '.';
304
+ try {
305
+ // Use withFileTypes: true to get Dirent objects from fsx.do
306
+ const entries = await this.fs.list(path, { withFileTypes: true });
307
+ // fsx.do Dirent has isDirectory() as a method
308
+ const stdout = entries
309
+ .map((e) => (e.isDirectory() ? `${e.name}/` : e.name))
310
+ .join('\n') + '\n';
311
+ return this.createNativeResult(`ls ${args.join(' ')}`, stdout);
312
+ }
313
+ catch (error) {
314
+ const stderr = error instanceof Error ? error.message : String(error);
315
+ return this.createNativeResult(`ls ${args.join(' ')}`, '', stderr, 1);
316
+ }
317
+ }
318
+ /**
319
+ * Native implementation of 'test' using FsCapability (from fsx.do).
320
+ */
321
+ async nativeTest(args, _options) {
322
+ if (!this.fs)
323
+ return null;
324
+ // Support: test -e file, test -f file, test -d file
325
+ if (args.length < 2)
326
+ return null;
327
+ const flag = args[0];
328
+ const path = args[1];
329
+ try {
330
+ switch (flag) {
331
+ case '-e': {
332
+ // File exists
333
+ const exists = await this.fs.exists(path);
334
+ return this.createNativeResult(`test ${args.join(' ')}`, '', '', exists ? 0 : 1);
335
+ }
336
+ case '-f': {
337
+ // Is regular file
338
+ const exists = await this.fs.exists(path);
339
+ if (!exists)
340
+ return this.createNativeResult(`test ${args.join(' ')}`, '', '', 1);
341
+ const stat = await this.fs.stat(path);
342
+ // fsx.do Stats class has isFile() as a method, not a property
343
+ return this.createNativeResult(`test ${args.join(' ')}`, '', '', stat.isFile() ? 0 : 1);
344
+ }
345
+ case '-d': {
346
+ // Is directory
347
+ const exists = await this.fs.exists(path);
348
+ if (!exists)
349
+ return this.createNativeResult(`test ${args.join(' ')}`, '', '', 1);
350
+ const stat = await this.fs.stat(path);
351
+ // fsx.do Stats class has isDirectory() as a method, not a property
352
+ return this.createNativeResult(`test ${args.join(' ')}`, '', '', stat.isDirectory() ? 0 : 1);
353
+ }
354
+ default:
355
+ return null; // Unknown flag, fall back to executor
356
+ }
357
+ }
358
+ catch {
359
+ return this.createNativeResult(`test ${args.join(' ')}`, '', '', 1);
360
+ }
361
+ }
362
+ /**
363
+ * Native implementation of 'head' using FsCapability (from fsx.do).
364
+ */
365
+ async nativeHead(args, _options) {
366
+ if (!this.fs)
367
+ return null;
368
+ // Parse arguments: head [-n lines] file
369
+ let lines = 10; // default
370
+ let file;
371
+ for (let i = 0; i < args.length; i++) {
372
+ if (args[i] === '-n' && args[i + 1]) {
373
+ lines = parseInt(args[i + 1], 10);
374
+ i++;
375
+ }
376
+ else if (!args[i].startsWith('-')) {
377
+ file = args[i];
378
+ }
379
+ }
380
+ if (!file)
381
+ return null;
382
+ try {
383
+ // Use encoding: 'utf-8' to ensure we get a string back from fsx.do
384
+ const content = await this.fs.read(file, { encoding: 'utf-8' });
385
+ const allLines = content.split('\n');
386
+ const stdout = allLines.slice(0, lines).join('\n') + (allLines.length > lines ? '\n' : '');
387
+ return this.createNativeResult(`head ${args.join(' ')}`, stdout);
388
+ }
389
+ catch (error) {
390
+ const stderr = error instanceof Error ? error.message : String(error);
391
+ return this.createNativeResult(`head ${args.join(' ')}`, '', stderr, 1);
392
+ }
393
+ }
394
+ /**
395
+ * Native implementation of 'tail' using FsCapability (from fsx.do).
396
+ */
397
+ async nativeTail(args, _options) {
398
+ if (!this.fs)
399
+ return null;
400
+ // Parse arguments: tail [-n lines] file
401
+ let lines = 10; // default
402
+ let file;
403
+ for (let i = 0; i < args.length; i++) {
404
+ if (args[i] === '-n' && args[i + 1]) {
405
+ lines = parseInt(args[i + 1], 10);
406
+ i++;
407
+ }
408
+ else if (!args[i].startsWith('-')) {
409
+ file = args[i];
410
+ }
411
+ }
412
+ if (!file)
413
+ return null;
414
+ try {
415
+ // Use encoding: 'utf-8' to ensure we get a string back from fsx.do
416
+ const content = await this.fs.read(file, { encoding: 'utf-8' });
417
+ const allLines = content.split('\n');
418
+ // Handle trailing newline - if last element is empty, don't count it
419
+ const effectiveLines = allLines[allLines.length - 1] === '' ? allLines.slice(0, -1) : allLines;
420
+ const stdout = effectiveLines.slice(-lines).join('\n') + '\n';
421
+ return this.createNativeResult(`tail ${args.join(' ')}`, stdout);
422
+ }
423
+ catch (error) {
424
+ const stderr = error instanceof Error ? error.message : String(error);
425
+ return this.createNativeResult(`tail ${args.join(' ')}`, '', stderr, 1);
426
+ }
427
+ }
428
+ /**
429
+ * Create a BashResult for native operations.
430
+ */
431
+ createNativeResult(command, stdout, stderr = '', exitCode = 0) {
432
+ return {
433
+ input: command,
434
+ command,
435
+ valid: true,
436
+ generated: false,
437
+ stdout,
438
+ stderr,
439
+ exitCode,
440
+ intent: {
441
+ commands: [command.split(' ')[0]],
442
+ reads: [],
443
+ writes: [],
444
+ deletes: [],
445
+ network: false,
446
+ elevated: false,
447
+ },
448
+ classification: {
449
+ type: 'read',
450
+ impact: 'none',
451
+ reversible: true,
452
+ reason: 'Native filesystem operation',
453
+ },
454
+ };
455
+ }
456
+ /**
457
+ * Spawn a command for streaming execution.
458
+ * Returns a handle that can be used to interact with the running process.
459
+ *
460
+ * @param command - The command to spawn
461
+ * @param args - Optional array of command arguments
462
+ * @param options - Optional spawn options including stream callbacks
463
+ * @returns Promise resolving to a spawn handle
464
+ *
465
+ * @example
466
+ * ```typescript
467
+ * // Stream output from a long-running process
468
+ * const handle = await bash.spawn('tail', ['-f', '/var/log/app.log'], {
469
+ * onStdout: (chunk) => console.log(chunk),
470
+ * onStderr: (chunk) => console.error(chunk)
471
+ * })
472
+ *
473
+ * // Later, stop the process
474
+ * handle.kill()
475
+ *
476
+ * // Wait for it to finish
477
+ * const result = await handle.done
478
+ * ```
479
+ */
480
+ async spawn(command, args, options) {
481
+ if (!this.executor.spawn) {
482
+ throw new Error('Spawn not supported by this executor');
483
+ }
484
+ return this.executor.spawn(command, args, options);
485
+ }
486
+ /**
487
+ * Run a shell script.
488
+ * Executes a multi-line bash script with full shell features.
489
+ *
490
+ * This method performs AST-based safety analysis before execution,
491
+ * blocking dangerous scripts unless confirm: true is passed.
492
+ *
493
+ * @param script - The bash script to execute
494
+ * @param options - Optional execution options
495
+ * @returns Promise resolving to the execution result
496
+ *
497
+ * @example
498
+ * ```typescript
499
+ * const result = await bash.run(`
500
+ * set -e
501
+ * cd /app
502
+ * npm install
503
+ * npm run build
504
+ * npm run test
505
+ * `)
506
+ *
507
+ * if (result.exitCode !== 0) {
508
+ * throw new Error('Build failed: ' + result.stderr)
509
+ * }
510
+ * ```
511
+ */
512
+ async run(script, options) {
513
+ // Perform AST-based safety analysis
514
+ const safetyResult = this.performSafetyAnalysis(script, options);
515
+ if (safetyResult) {
516
+ return safetyResult;
517
+ }
518
+ // Execute script via executor
519
+ return this.executor.execute(script, options);
520
+ }
521
+ /**
522
+ * Parse a command without executing it.
523
+ * Useful for validation and analysis.
524
+ *
525
+ * @param input - The command or script to parse
526
+ * @returns The parsed AST program
527
+ */
528
+ parse(input) {
529
+ return parse(input);
530
+ }
531
+ /**
532
+ * Analyze a command for safety classification.
533
+ * Returns the safety classification and intent without executing.
534
+ *
535
+ * @param input - The command or script to analyze
536
+ * @returns Analysis result with classification and intent
537
+ */
538
+ analyze(input) {
539
+ const ast = parse(input);
540
+ return analyze(ast);
541
+ }
542
+ /**
543
+ * Check if a command is dangerous.
544
+ * Quick safety check without full analysis.
545
+ *
546
+ * @param input - The command to check
547
+ * @returns Object indicating if dangerous and why
548
+ */
549
+ isDangerous(input) {
550
+ const ast = parse(input);
551
+ return isDangerous(ast);
552
+ }
553
+ }
554
+ /**
555
+ * Mixin function to add bash capability to a Durable Object class.
556
+ *
557
+ * This mixin provides lazy initialization of the BashModule, meaning
558
+ * the executor is only created when the `bash` property is first accessed.
559
+ * The BashModule instance is then cached for subsequent accesses.
560
+ *
561
+ * @param Base - The base DO class to extend
562
+ * @param config - Configuration object or factory function for creating the executor.
563
+ * When a function is provided, it works as a simple executor factory.
564
+ * When an object is provided, it can include FsCapability integration.
565
+ * @returns Extended class with bash capability
566
+ *
567
+ * @example Basic usage with executor function
568
+ * ```typescript
569
+ * import { withBash } from 'bashx/do'
570
+ * import { DO } from 'dotdo'
571
+ *
572
+ * class MyDO extends withBash(DO, (instance) => ({
573
+ * execute: async (cmd, opts) => {
574
+ * // Use instance.env.CONTAINER_SERVICE or similar
575
+ * return await containerService.run(cmd, opts)
576
+ * }
577
+ * })) {
578
+ * async deploy() {
579
+ * const result = await this.bash.exec('npm', ['run', 'build'])
580
+ * return result.exitCode === 0
581
+ * }
582
+ * }
583
+ * ```
584
+ *
585
+ * @example With FsCapability integration
586
+ * ```typescript
587
+ * import { withBash } from 'bashx/do'
588
+ * import { withFs } from 'dotdo/fs'
589
+ * import { DO } from 'dotdo'
590
+ *
591
+ * // First add fs capability, then bash with fs integration
592
+ * class MyDO extends withBash(withFs(DO), {
593
+ * executor: (instance) => containerExecutor,
594
+ * fs: (instance) => instance.$.fs // Native file ops use $.fs
595
+ * }) {
596
+ * async readConfig() {
597
+ * // 'cat config.json' uses $.fs.read() natively (Tier 1, fast!)
598
+ * const result = await this.bash.exec('cat', ['config.json'])
599
+ * return result.stdout
600
+ * }
601
+ * }
602
+ * ```
603
+ *
604
+ * @example With environment bindings
605
+ * ```typescript
606
+ * import { withBash } from 'bashx/do'
607
+ * import { DO } from 'dotdo'
608
+ *
609
+ * interface Env {
610
+ * CONTAINER_SERVICE: Fetcher
611
+ * }
612
+ *
613
+ * class MyDO extends withBash(DO<Env>, (instance) => ({
614
+ * execute: async (cmd, opts) => {
615
+ * const response = await instance.env.CONTAINER_SERVICE.fetch(
616
+ * 'https://container/exec',
617
+ * { method: 'POST', body: JSON.stringify({ cmd, opts }) }
618
+ * )
619
+ * return response.json()
620
+ * }
621
+ * })) {
622
+ * // this.bash is now available with type safety
623
+ * }
624
+ * ```
625
+ *
626
+ * @example Chaining with other mixins
627
+ * ```typescript
628
+ * import { withBash } from 'bashx/do'
629
+ * import { withFs } from 'fsx/do'
630
+ * import { DO } from 'dotdo'
631
+ *
632
+ * // Compose multiple capabilities
633
+ * const BaseDO = withBash(withFs(DO, fsExecutor), bashExecutor)
634
+ *
635
+ * class MyDO extends BaseDO {
636
+ * async build() {
637
+ * // Access both capabilities
638
+ * await this.fs.write('config.json', JSON.stringify(config))
639
+ * await this.bash.exec('npm', ['run', 'build'])
640
+ * }
641
+ * }
642
+ * ```
643
+ */
644
+ export function withBash(Base, config) {
645
+ // Normalize config to object form
646
+ const normalizedConfig = typeof config === 'function' ? { executor: config } : config;
647
+ // Use abstract class to properly type the mixin
648
+ class BashMixin extends Base {
649
+ _bashModule;
650
+ get bash() {
651
+ if (!this._bashModule) {
652
+ const executor = normalizedConfig.executor(this);
653
+ const fs = normalizedConfig.fs?.(this);
654
+ const useNativeOps = normalizedConfig.useNativeOps ?? true;
655
+ this._bashModule = new BashModule(executor, { fs, useNativeOps });
656
+ }
657
+ return this._bashModule;
658
+ }
659
+ }
660
+ return BashMixin;
661
+ }
662
+ // Re-export container executor for convenience
663
+ export { CloudflareContainerExecutor, createContainerExecutor, createSessionContainerExecutor, } from './container-executor.js';
664
+ // Re-export tiered executor
665
+ export { TieredExecutor, createTieredExecutor, } from './tiered-executor.js';
666
+ // Re-export ShellDO for wrangler worker entry
667
+ export { ShellDO } from './worker.js';
668
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../primitives/bashx/src/do/index.ts"],"names":[],"mappings":"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"}