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,804 @@
1
+ /**
2
+ * Extended Utility Commands
3
+ *
4
+ * Native implementations for extended utility commands:
5
+ * - env: Run with modified environment
6
+ * - id: Print user/group identity
7
+ * - uname: Print system info
8
+ * - timeout: Run command with time limit
9
+ * - tac: Reverse line order
10
+ * - shuf: Shuffle lines (Fisher-Yates)
11
+ *
12
+ * @module bashx/do/commands/extended-utils
13
+ */
14
+ /**
15
+ * Parse env command arguments
16
+ *
17
+ * @param args - Command line arguments
18
+ * @returns Parsed env options
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * parseEnvArgs(['-i', 'PATH=/usr/bin', 'ls'])
23
+ * // => { ignoreEnvironment: true, variables: { PATH: '/usr/bin' }, command: ['ls'] }
24
+ * ```
25
+ */
26
+ export function parseEnvArgs(args) {
27
+ const options = {
28
+ ignoreEnvironment: false,
29
+ variables: {},
30
+ unset: [],
31
+ command: [],
32
+ };
33
+ let i = 0;
34
+ while (i < args.length) {
35
+ const arg = args[i];
36
+ if (arg === '-i' || arg === '--ignore-environment') {
37
+ options.ignoreEnvironment = true;
38
+ i++;
39
+ }
40
+ else if (arg === '-u' || arg === '--unset') {
41
+ if (args[i + 1]) {
42
+ options.unset.push(args[i + 1]);
43
+ i += 2;
44
+ }
45
+ else {
46
+ i++;
47
+ }
48
+ }
49
+ else if (arg.startsWith('-u')) {
50
+ // Handle -uVAR form
51
+ options.unset.push(arg.slice(2));
52
+ i++;
53
+ }
54
+ else if (arg === '-C' || arg === '--chdir') {
55
+ if (args[i + 1]) {
56
+ options.chdir = args[i + 1];
57
+ i += 2;
58
+ }
59
+ else {
60
+ i++;
61
+ }
62
+ }
63
+ else if (arg.includes('=') && !arg.startsWith('-')) {
64
+ // VAR=value assignment
65
+ const eqIdx = arg.indexOf('=');
66
+ const varName = arg.slice(0, eqIdx);
67
+ const varValue = arg.slice(eqIdx + 1);
68
+ options.variables[varName] = varValue;
69
+ i++;
70
+ }
71
+ else if (arg === '--') {
72
+ // End of options, rest is command
73
+ options.command = args.slice(i + 1);
74
+ break;
75
+ }
76
+ else if (!arg.startsWith('-')) {
77
+ // Start of command
78
+ options.command = args.slice(i);
79
+ break;
80
+ }
81
+ else {
82
+ // Unknown option, treat as command
83
+ options.command = args.slice(i);
84
+ break;
85
+ }
86
+ }
87
+ return options;
88
+ }
89
+ /**
90
+ * Execute env command - run with modified environment
91
+ *
92
+ * When called with no command, prints the environment.
93
+ * When called with a command, runs it with the modified environment.
94
+ *
95
+ * @param baseEnv - Base environment to start with
96
+ * @param options - Env options
97
+ * @returns Modified environment or result of command execution
98
+ *
99
+ * @example
100
+ * ```typescript
101
+ * // Print modified environment
102
+ * executeEnv({ HOME: '/root' }, { variables: { FOO: 'bar' } })
103
+ * // => { env: { HOME: '/root', FOO: 'bar' }, command: undefined }
104
+ *
105
+ * // Prepare environment for command
106
+ * executeEnv({}, { ignoreEnvironment: true, variables: { PATH: '/bin' } })
107
+ * // => { env: { PATH: '/bin' }, command: undefined }
108
+ * ```
109
+ */
110
+ export function executeEnv(baseEnv, options) {
111
+ // Start with empty or base environment
112
+ let env = options.ignoreEnvironment ? {} : { ...baseEnv };
113
+ // Unset specified variables
114
+ if (options.unset) {
115
+ for (const varName of options.unset) {
116
+ delete env[varName];
117
+ }
118
+ }
119
+ // Set new variables
120
+ if (options.variables) {
121
+ env = { ...env, ...options.variables };
122
+ }
123
+ return {
124
+ env,
125
+ command: options.command && options.command.length > 0 ? options.command : undefined,
126
+ };
127
+ }
128
+ /**
129
+ * Format environment for output
130
+ *
131
+ * @param env - Environment variables
132
+ * @returns Formatted string (one VAR=value per line)
133
+ */
134
+ export function formatEnv(env) {
135
+ return Object.entries(env)
136
+ .sort(([a], [b]) => a.localeCompare(b))
137
+ .map(([k, v]) => `${k}=${v}`)
138
+ .join('\n') + (Object.keys(env).length > 0 ? '\n' : '');
139
+ }
140
+ /**
141
+ * Parse id command arguments
142
+ *
143
+ * @param args - Command line arguments
144
+ * @returns Parsed id options
145
+ */
146
+ export function parseIdArgs(args) {
147
+ const options = {};
148
+ for (let i = 0; i < args.length; i++) {
149
+ const arg = args[i];
150
+ if (arg === '-u' || arg === '--user') {
151
+ options.user = true;
152
+ }
153
+ else if (arg === '-g' || arg === '--group') {
154
+ options.group = true;
155
+ }
156
+ else if (arg === '-n' || arg === '--name') {
157
+ options.name = true;
158
+ }
159
+ else if (arg === '-r' || arg === '--real') {
160
+ options.real = true;
161
+ }
162
+ else if (arg === '-G' || arg === '--groups') {
163
+ options.groups = true;
164
+ }
165
+ else if (!arg.startsWith('-')) {
166
+ options.username = arg;
167
+ }
168
+ }
169
+ return options;
170
+ }
171
+ /**
172
+ * Execute id command - print user/group identity
173
+ *
174
+ * @param identity - Identity information to format
175
+ * @param options - Id options
176
+ * @returns Formatted identity string
177
+ *
178
+ * @example
179
+ * ```typescript
180
+ * const identity = { uid: 1000, gid: 1000, username: 'user', groupname: 'user', groups: [] }
181
+ *
182
+ * executeId(identity, {})
183
+ * // => 'uid=1000(user) gid=1000(user) groups=1000(user)'
184
+ *
185
+ * executeId(identity, { user: true })
186
+ * // => '1000'
187
+ *
188
+ * executeId(identity, { user: true, name: true })
189
+ * // => 'user'
190
+ * ```
191
+ */
192
+ export function executeId(identity, options = {}) {
193
+ // Handle -G (all groups)
194
+ if (options.groups) {
195
+ if (options.name) {
196
+ return identity.groups.map(g => g.name).join(' ');
197
+ }
198
+ return identity.groups.map(g => g.gid).join(' ');
199
+ }
200
+ // Handle -u (user)
201
+ if (options.user) {
202
+ const uid = options.real ? identity.uid : (identity.euid ?? identity.uid);
203
+ if (options.name) {
204
+ return identity.username;
205
+ }
206
+ return String(uid);
207
+ }
208
+ // Handle -g (group)
209
+ if (options.group) {
210
+ const gid = options.real ? identity.gid : (identity.egid ?? identity.gid);
211
+ if (options.name) {
212
+ return identity.groupname;
213
+ }
214
+ return String(gid);
215
+ }
216
+ // Default: full output
217
+ const parts = [];
218
+ parts.push(`uid=${identity.uid}(${identity.username})`);
219
+ parts.push(`gid=${identity.gid}(${identity.groupname})`);
220
+ const groupsStr = identity.groups.map(g => `${g.gid}(${g.name})`).join(',');
221
+ parts.push(`groups=${groupsStr || `${identity.gid}(${identity.groupname})`}`);
222
+ return parts.join(' ');
223
+ }
224
+ /**
225
+ * Default identity for Workers environment
226
+ */
227
+ export const DEFAULT_WORKER_IDENTITY = {
228
+ uid: 1000,
229
+ gid: 1000,
230
+ username: 'worker',
231
+ groupname: 'worker',
232
+ groups: [{ gid: 1000, name: 'worker' }],
233
+ };
234
+ /**
235
+ * Parse uname command arguments
236
+ *
237
+ * @param args - Command line arguments
238
+ * @returns Parsed uname options
239
+ */
240
+ export function parseUnameArgs(args) {
241
+ const options = {};
242
+ for (const arg of args) {
243
+ if (arg === '-a' || arg === '--all') {
244
+ options.all = true;
245
+ }
246
+ else if (arg === '-s' || arg === '--kernel-name') {
247
+ options.kernelName = true;
248
+ }
249
+ else if (arg === '-n' || arg === '--nodename') {
250
+ options.nodeName = true;
251
+ }
252
+ else if (arg === '-r' || arg === '--kernel-release') {
253
+ options.kernelRelease = true;
254
+ }
255
+ else if (arg === '-v' || arg === '--kernel-version') {
256
+ options.kernelVersion = true;
257
+ }
258
+ else if (arg === '-m' || arg === '--machine') {
259
+ options.machine = true;
260
+ }
261
+ else if (arg === '-p' || arg === '--processor') {
262
+ options.processor = true;
263
+ }
264
+ else if (arg === '-i' || arg === '--hardware-platform') {
265
+ options.hardwarePlatform = true;
266
+ }
267
+ else if (arg === '-o' || arg === '--operating-system') {
268
+ options.operatingSystem = true;
269
+ }
270
+ }
271
+ // If no options specified, default to -s
272
+ const hasAnyOption = options.all || options.kernelName || options.nodeName ||
273
+ options.kernelRelease || options.kernelVersion || options.machine ||
274
+ options.processor || options.hardwarePlatform || options.operatingSystem;
275
+ if (!hasAnyOption) {
276
+ options.kernelName = true;
277
+ }
278
+ return options;
279
+ }
280
+ /**
281
+ * Execute uname command - print system information
282
+ *
283
+ * @param sysinfo - System information
284
+ * @param options - Uname options
285
+ * @returns Formatted system information string
286
+ *
287
+ * @example
288
+ * ```typescript
289
+ * const sysinfo = {
290
+ * kernelName: 'CloudflareWorkers',
291
+ * nodeName: 'edge',
292
+ * kernelRelease: '1.0.0',
293
+ * kernelVersion: '#1 SMP',
294
+ * machine: 'wasm32',
295
+ * processor: 'wasm32',
296
+ * hardwarePlatform: 'wasm32',
297
+ * operatingSystem: 'CloudflareWorkers'
298
+ * }
299
+ *
300
+ * executeUname(sysinfo, {})
301
+ * // => 'CloudflareWorkers'
302
+ *
303
+ * executeUname(sysinfo, { all: true })
304
+ * // => 'CloudflareWorkers edge 1.0.0 #1 SMP wasm32 wasm32 wasm32 CloudflareWorkers'
305
+ * ```
306
+ */
307
+ export function executeUname(sysinfo, options = {}) {
308
+ const parts = [];
309
+ // Check if any option is specified
310
+ const hasAnyOption = options.all || options.kernelName || options.nodeName ||
311
+ options.kernelRelease || options.kernelVersion || options.machine ||
312
+ options.processor || options.hardwarePlatform || options.operatingSystem;
313
+ // Default to kernel name if no options specified
314
+ const effectiveOptions = hasAnyOption ? options : { ...options, kernelName: true };
315
+ if (effectiveOptions.all) {
316
+ parts.push(sysinfo.kernelName, sysinfo.nodeName, sysinfo.kernelRelease, sysinfo.kernelVersion, sysinfo.machine, sysinfo.processor, sysinfo.hardwarePlatform, sysinfo.operatingSystem);
317
+ }
318
+ else {
319
+ if (effectiveOptions.kernelName)
320
+ parts.push(sysinfo.kernelName);
321
+ if (effectiveOptions.nodeName)
322
+ parts.push(sysinfo.nodeName);
323
+ if (effectiveOptions.kernelRelease)
324
+ parts.push(sysinfo.kernelRelease);
325
+ if (effectiveOptions.kernelVersion)
326
+ parts.push(sysinfo.kernelVersion);
327
+ if (effectiveOptions.machine)
328
+ parts.push(sysinfo.machine);
329
+ if (effectiveOptions.processor)
330
+ parts.push(sysinfo.processor);
331
+ if (effectiveOptions.hardwarePlatform)
332
+ parts.push(sysinfo.hardwarePlatform);
333
+ if (effectiveOptions.operatingSystem)
334
+ parts.push(sysinfo.operatingSystem);
335
+ }
336
+ return parts.join(' ');
337
+ }
338
+ /**
339
+ * Default system info for Cloudflare Workers environment
340
+ */
341
+ export const DEFAULT_WORKER_SYSINFO = {
342
+ kernelName: 'CloudflareWorkers',
343
+ nodeName: 'edge',
344
+ kernelRelease: '1.0.0',
345
+ kernelVersion: '#1 SMP',
346
+ machine: 'wasm32',
347
+ processor: 'wasm32',
348
+ hardwarePlatform: 'wasm32',
349
+ operatingSystem: 'CloudflareWorkers',
350
+ };
351
+ /**
352
+ * Time unit multipliers in milliseconds
353
+ */
354
+ const TIME_UNIT_MS = {
355
+ s: 1000,
356
+ m: 60 * 1000,
357
+ h: 60 * 60 * 1000,
358
+ d: 24 * 60 * 60 * 1000,
359
+ };
360
+ /**
361
+ * Signal name to number mapping
362
+ */
363
+ const SIGNAL_MAP = {
364
+ TERM: 15,
365
+ SIGTERM: 15,
366
+ KILL: 9,
367
+ SIGKILL: 9,
368
+ INT: 2,
369
+ SIGINT: 2,
370
+ HUP: 1,
371
+ SIGHUP: 1,
372
+ QUIT: 3,
373
+ SIGQUIT: 3,
374
+ ALRM: 14,
375
+ SIGALRM: 14,
376
+ USR1: 10,
377
+ SIGUSR1: 10,
378
+ USR2: 12,
379
+ SIGUSR2: 12,
380
+ };
381
+ /**
382
+ * Parse duration string to milliseconds
383
+ *
384
+ * @param duration - Duration string (e.g., '5', '1.5s', '2m', '1h')
385
+ * @returns Duration in milliseconds
386
+ * @throws Error if format is invalid
387
+ */
388
+ export function parseTimeoutDuration(duration) {
389
+ if (duration === 'infinity') {
390
+ return Infinity;
391
+ }
392
+ const match = duration.match(/^(\d+(?:\.\d+)?)(s|m|h|d)?$/);
393
+ if (!match) {
394
+ throw new Error(`Invalid duration: ${duration}`);
395
+ }
396
+ const value = parseFloat(match[1]);
397
+ const unit = match[2] || 's';
398
+ return value * (TIME_UNIT_MS[unit] ?? 1000);
399
+ }
400
+ /**
401
+ * Parse signal name or number to signal number
402
+ *
403
+ * @param signal - Signal name (e.g., 'TERM', 'SIGKILL') or number
404
+ * @returns Signal number
405
+ */
406
+ export function parseSignal(signal) {
407
+ if (typeof signal === 'number') {
408
+ return signal;
409
+ }
410
+ return SIGNAL_MAP[signal.toUpperCase()] ?? (parseInt(signal, 10) || 15);
411
+ }
412
+ /**
413
+ * Parse timeout command arguments
414
+ *
415
+ * @param args - Command line arguments
416
+ * @returns Parsed timeout options and command
417
+ */
418
+ export function parseTimeoutArgs(args) {
419
+ const options = {
420
+ duration: '',
421
+ preserveStatus: false,
422
+ foreground: false,
423
+ verbose: false,
424
+ };
425
+ let i = 0;
426
+ while (i < args.length) {
427
+ const arg = args[i];
428
+ if (arg === '-k' || arg === '--kill-after') {
429
+ options.killAfter = args[++i];
430
+ i++;
431
+ }
432
+ else if (arg.startsWith('-k')) {
433
+ options.killAfter = arg.slice(2);
434
+ i++;
435
+ }
436
+ else if (arg === '-s' || arg === '--signal') {
437
+ options.signal = args[++i];
438
+ i++;
439
+ }
440
+ else if (arg.startsWith('-s')) {
441
+ options.signal = arg.slice(2);
442
+ i++;
443
+ }
444
+ else if (arg === '--preserve-status') {
445
+ options.preserveStatus = true;
446
+ i++;
447
+ }
448
+ else if (arg === '--foreground') {
449
+ options.foreground = true;
450
+ i++;
451
+ }
452
+ else if (arg === '-v' || arg === '--verbose') {
453
+ options.verbose = true;
454
+ i++;
455
+ }
456
+ else if (arg === '--') {
457
+ // Duration should already be set, rest is command
458
+ return { options, command: args.slice(i + 1) };
459
+ }
460
+ else if (!arg.startsWith('-') && !options.duration) {
461
+ options.duration = arg;
462
+ i++;
463
+ }
464
+ else {
465
+ // Start of command
466
+ return { options, command: args.slice(i) };
467
+ }
468
+ }
469
+ return { options, command: [] };
470
+ }
471
+ /**
472
+ * Execute timeout command wrapper
473
+ *
474
+ * This provides the timeout logic; the actual command execution
475
+ * is handled by the executor that calls this.
476
+ *
477
+ * @param options - Timeout options
478
+ * @param commandExecutor - Function to execute the command
479
+ * @returns Promise with result including timedOut flag
480
+ */
481
+ export async function executeTimeout(options, command, commandExecutor) {
482
+ // Parse timeout duration
483
+ let timeoutMs;
484
+ try {
485
+ timeoutMs = parseTimeoutDuration(options.duration);
486
+ }
487
+ catch {
488
+ return {
489
+ exitCode: 125,
490
+ stdout: '',
491
+ stderr: `timeout: invalid time interval '${options.duration}'`,
492
+ timedOut: false,
493
+ };
494
+ }
495
+ // Determine signal to use
496
+ const signalNum = options.signal ? parseSignal(options.signal) : 15;
497
+ // Create abort controller for timeout
498
+ const controller = new AbortController();
499
+ let timedOut = false;
500
+ const timer = setTimeout(() => {
501
+ timedOut = true;
502
+ controller.abort();
503
+ }, timeoutMs);
504
+ try {
505
+ // Execute command with race against timeout
506
+ const result = await Promise.race([
507
+ commandExecutor(command),
508
+ new Promise((_, reject) => {
509
+ controller.signal.addEventListener('abort', () => {
510
+ reject(new Error('TIMEOUT'));
511
+ });
512
+ }),
513
+ ]);
514
+ clearTimeout(timer);
515
+ return { ...result, timedOut: false };
516
+ }
517
+ catch (error) {
518
+ clearTimeout(timer);
519
+ if (timedOut) {
520
+ const exitCode = options.preserveStatus ? 128 + signalNum : 124;
521
+ let stderr = '';
522
+ if (options.verbose) {
523
+ stderr = `timeout: sending signal ${signalNum === 9 ? 'KILL' : 'TERM'} to command '${command}'`;
524
+ }
525
+ // SIGKILL exit code is 137 (128 + 9)
526
+ const finalExitCode = signalNum === 9 ? 137 : exitCode;
527
+ return {
528
+ exitCode: finalExitCode,
529
+ stdout: '',
530
+ stderr,
531
+ timedOut: true,
532
+ };
533
+ }
534
+ // Re-throw non-timeout errors
535
+ throw error;
536
+ }
537
+ }
538
+ /**
539
+ * Parse tac command arguments
540
+ *
541
+ * @param args - Command line arguments
542
+ * @returns Parsed options and file paths
543
+ */
544
+ export function parseTacArgs(args) {
545
+ const options = {};
546
+ const files = [];
547
+ let i = 0;
548
+ while (i < args.length) {
549
+ const arg = args[i];
550
+ if (arg === '-s' || arg === '--separator') {
551
+ options.separator = args[++i];
552
+ i++;
553
+ }
554
+ else if (arg.startsWith('-s')) {
555
+ options.separator = arg.slice(2);
556
+ i++;
557
+ }
558
+ else if (arg === '-b' || arg === '--before') {
559
+ options.before = true;
560
+ i++;
561
+ }
562
+ else if (arg === '-r' || arg === '--regex') {
563
+ options.regex = true;
564
+ i++;
565
+ }
566
+ else if (arg === '--') {
567
+ files.push(...args.slice(i + 1));
568
+ break;
569
+ }
570
+ else if (!arg.startsWith('-')) {
571
+ files.push(arg);
572
+ i++;
573
+ }
574
+ else {
575
+ i++;
576
+ }
577
+ }
578
+ return { options, files };
579
+ }
580
+ /**
581
+ * Execute tac command - reverse lines in file(s)
582
+ *
583
+ * @param input - Input string to reverse
584
+ * @param options - Tac options
585
+ * @returns Reversed content
586
+ *
587
+ * @example
588
+ * ```typescript
589
+ * executeTac('line1\nline2\nline3\n')
590
+ * // => 'line3\nline2\nline1\n'
591
+ *
592
+ * executeTac('a|b|c|', { separator: '|' })
593
+ * // => 'c|b|a|'
594
+ * ```
595
+ */
596
+ export function executeTac(input, options = {}) {
597
+ const separator = options.separator ?? '\n';
598
+ // Split input by separator
599
+ let parts;
600
+ if (options.regex) {
601
+ parts = input.split(new RegExp(separator));
602
+ }
603
+ else {
604
+ parts = input.split(separator);
605
+ }
606
+ // Handle trailing empty element from trailing separator
607
+ const hadTrailingSep = parts[parts.length - 1] === '';
608
+ if (hadTrailingSep) {
609
+ parts.pop();
610
+ }
611
+ // Reverse the parts
612
+ parts.reverse();
613
+ // Reconstruct with separator
614
+ if (options.before) {
615
+ // Separator before each record
616
+ return parts.map(p => separator + p).join('');
617
+ }
618
+ // Separator after each record (default)
619
+ return parts.join(separator) + (parts.length > 0 ? separator : '');
620
+ }
621
+ /**
622
+ * Parse shuf command arguments
623
+ *
624
+ * @param args - Command line arguments
625
+ * @returns Parsed options and input files
626
+ */
627
+ export function parseShufArgs(args) {
628
+ const options = {};
629
+ const files = [];
630
+ let echoMode = false;
631
+ let i = 0;
632
+ while (i < args.length) {
633
+ const arg = args[i];
634
+ if (arg === '-n' || arg === '--head-count') {
635
+ options.count = parseInt(args[++i], 10);
636
+ i++;
637
+ }
638
+ else if (arg.startsWith('-n')) {
639
+ options.count = parseInt(arg.slice(2), 10);
640
+ i++;
641
+ }
642
+ else if (arg === '-r' || arg === '--repeat') {
643
+ options.replacement = true;
644
+ i++;
645
+ }
646
+ else if (arg === '-i' || arg === '--input-range') {
647
+ const range = args[++i];
648
+ const [lo, hi] = range.split('-').map(Number);
649
+ options.inputRange = { start: lo, end: hi };
650
+ i++;
651
+ }
652
+ else if (arg.startsWith('-i')) {
653
+ const range = arg.slice(2);
654
+ const [lo, hi] = range.split('-').map(Number);
655
+ options.inputRange = { start: lo, end: hi };
656
+ i++;
657
+ }
658
+ else if (arg === '-e' || arg === '--echo') {
659
+ echoMode = true;
660
+ i++;
661
+ }
662
+ else if (arg === '-o' || arg === '--output') {
663
+ options.outputFile = args[++i];
664
+ i++;
665
+ }
666
+ else if (arg.startsWith('-o')) {
667
+ options.outputFile = arg.slice(2);
668
+ i++;
669
+ }
670
+ else if (arg === '--random-source') {
671
+ options.randomSource = args[++i];
672
+ i++;
673
+ }
674
+ else if (arg === '-z' || arg === '--zero-terminated') {
675
+ options.zeroTerminated = true;
676
+ i++;
677
+ }
678
+ else if (arg === '--') {
679
+ if (echoMode) {
680
+ options.echoArgs = args.slice(i + 1);
681
+ }
682
+ else {
683
+ files.push(...args.slice(i + 1));
684
+ }
685
+ break;
686
+ }
687
+ else if (!arg.startsWith('-')) {
688
+ if (echoMode) {
689
+ options.echoArgs = options.echoArgs || [];
690
+ options.echoArgs.push(arg);
691
+ }
692
+ else {
693
+ files.push(arg);
694
+ }
695
+ i++;
696
+ }
697
+ else {
698
+ i++;
699
+ }
700
+ }
701
+ return { options, files };
702
+ }
703
+ /**
704
+ * Fisher-Yates shuffle algorithm
705
+ *
706
+ * @param array - Array to shuffle (mutated in place)
707
+ * @returns The shuffled array
708
+ */
709
+ function fisherYatesShuffle(array) {
710
+ for (let i = array.length - 1; i > 0; i--) {
711
+ const j = Math.floor(Math.random() * (i + 1));
712
+ [array[i], array[j]] = [array[j], array[i]];
713
+ }
714
+ return array;
715
+ }
716
+ /**
717
+ * Sample with replacement
718
+ *
719
+ * @param array - Source array
720
+ * @param n - Number of items to sample
721
+ * @returns Sampled items (may contain duplicates)
722
+ */
723
+ function sampleWithReplacement(array, n) {
724
+ const result = [];
725
+ for (let i = 0; i < n; i++) {
726
+ result.push(array[Math.floor(Math.random() * array.length)]);
727
+ }
728
+ return result;
729
+ }
730
+ /**
731
+ * Execute shuf command - shuffle/randomize lines
732
+ *
733
+ * @param lines - Input lines to shuffle (from stdin/file)
734
+ * @param options - Shuf options
735
+ * @returns Shuffled output
736
+ *
737
+ * @example
738
+ * ```typescript
739
+ * executeShuf(['a', 'b', 'c'], {})
740
+ * // => Random permutation of ['a', 'b', 'c']
741
+ *
742
+ * executeShuf([], { inputRange: { start: 1, end: 10 } })
743
+ * // => Random permutation of 1-10
744
+ *
745
+ * executeShuf([], { echoArgs: ['red', 'green', 'blue'], count: 1 })
746
+ * // => One random color
747
+ * ```
748
+ */
749
+ export function executeShuf(lines, options = {}) {
750
+ let items;
751
+ // Determine input source
752
+ if (options.inputRange) {
753
+ const { start, end } = options.inputRange;
754
+ items = [];
755
+ for (let i = start; i <= end; i++) {
756
+ items.push(String(i));
757
+ }
758
+ }
759
+ else if (options.echoArgs && options.echoArgs.length > 0) {
760
+ items = options.echoArgs;
761
+ }
762
+ else {
763
+ items = lines.filter(l => l.length > 0);
764
+ }
765
+ // Handle -n 0
766
+ if (options.count === 0) {
767
+ return { result: '', exitCode: 0 };
768
+ }
769
+ let result;
770
+ if (options.replacement) {
771
+ // With replacement - can pick same item multiple times
772
+ const count = options.count ?? items.length;
773
+ result = sampleWithReplacement(items, count);
774
+ }
775
+ else {
776
+ // Without replacement - Fisher-Yates shuffle
777
+ result = fisherYatesShuffle([...items]);
778
+ // Limit to count if specified
779
+ if (options.count !== undefined) {
780
+ result = result.slice(0, Math.min(options.count, result.length));
781
+ }
782
+ }
783
+ const terminator = options.zeroTerminated ? '\0' : '\n';
784
+ return {
785
+ result: result.join(terminator) + (result.length > 0 ? terminator : ''),
786
+ exitCode: 0,
787
+ };
788
+ }
789
+ // ============================================================================
790
+ // COMMAND SET FOR TIERED EXECUTOR
791
+ // ============================================================================
792
+ /**
793
+ * Set of extended utility commands handled by this module
794
+ */
795
+ export const EXTENDED_UTILS_COMMANDS = new Set([
796
+ 'env', 'id', 'uname', 'timeout', 'tac', 'shuf',
797
+ ]);
798
+ /**
799
+ * Check if a command is an extended utility command
800
+ */
801
+ export function isExtendedUtilsCommand(cmd) {
802
+ return EXTENDED_UTILS_COMMANDS.has(cmd);
803
+ }
804
+ //# sourceMappingURL=extended-utils.js.map