dotdo 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (667) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +446 -315
  3. package/cli/README.md +238 -0
  4. package/cli/agent.ts +72 -0
  5. package/cli/bin.js +44 -0
  6. package/cli/bin.ts +38 -0
  7. package/cli/build.ts +157 -0
  8. package/cli/commands/auth/login.ts +14 -0
  9. package/cli/commands/auth/logout.ts +6 -0
  10. package/cli/commands/auth/whoami.ts +16 -0
  11. package/cli/commands/deploy-multi.ts +245 -0
  12. package/cli/commands/dev/deploy.ts +100 -0
  13. package/cli/commands/dev/dev.ts +95 -0
  14. package/cli/commands/dev/logs.ts +91 -0
  15. package/cli/commands/dev-local.ts +88 -0
  16. package/cli/commands/do-ops.ts +314 -0
  17. package/cli/commands/index.ts +100 -0
  18. package/cli/commands/init.ts +247 -0
  19. package/cli/commands/introspect/emitter.ts +315 -0
  20. package/cli/commands/introspect/index.ts +193 -0
  21. package/cli/commands/link.ts +598 -0
  22. package/cli/commands/snippets.ts +415 -0
  23. package/cli/commands/tunnel.ts +239 -0
  24. package/cli/device-auth.ts +289 -0
  25. package/cli/fallback.ts +12 -0
  26. package/cli/index.ts +121 -0
  27. package/cli/main.ts +246 -0
  28. package/cli/mcp-stdio.ts +790 -0
  29. package/cli/package.json +62 -0
  30. package/cli/runtime/do-registry.ts +193 -0
  31. package/cli/runtime/embedded-db.ts +344 -0
  32. package/cli/runtime/index.ts +9 -0
  33. package/cli/runtime/miniflare-adapter.ts +162 -0
  34. package/cli/sandbox.ts +82 -0
  35. package/cli/src/args.ts +174 -0
  36. package/cli/src/auth.ts +55 -0
  37. package/cli/src/commands/call.ts +84 -0
  38. package/cli/src/commands/charge.ts +96 -0
  39. package/cli/src/commands/config.ts +115 -0
  40. package/cli/src/commands/email.ts +112 -0
  41. package/cli/src/commands/llm.ts +115 -0
  42. package/cli/src/commands/queue.ts +134 -0
  43. package/cli/src/commands/text.ts +86 -0
  44. package/cli/src/config.ts +185 -0
  45. package/cli/src/output.ts +246 -0
  46. package/cli/src/rpc.ts +192 -0
  47. package/cli/utils/config.ts +282 -0
  48. package/cli/utils/detect.ts +73 -0
  49. package/cli/utils/index.ts +15 -0
  50. package/cli/utils/logger.ts +232 -0
  51. package/dist/ai/index.js +19 -0
  52. package/dist/ai/index.js.map +1 -0
  53. package/dist/ai/template-literals.js +852 -0
  54. package/dist/ai/template-literals.js.map +1 -0
  55. package/dist/api/middleware/auth-federation.js +573 -0
  56. package/dist/api/middleware/auth-federation.js.map +1 -0
  57. package/dist/api/middleware/auth.js +545 -0
  58. package/dist/api/middleware/auth.js.map +1 -0
  59. package/dist/db/actions.js +212 -0
  60. package/dist/db/actions.js.map +1 -0
  61. package/dist/db/auth.js +506 -0
  62. package/dist/db/auth.js.map +1 -0
  63. package/dist/db/branches.js +65 -0
  64. package/dist/db/branches.js.map +1 -0
  65. package/dist/db/clickhouse.js +1074 -0
  66. package/dist/db/clickhouse.js.map +1 -0
  67. package/dist/db/dlq.js +39 -0
  68. package/dist/db/dlq.js.map +1 -0
  69. package/dist/db/events.js +28 -0
  70. package/dist/db/events.js.map +1 -0
  71. package/dist/db/exec.js +64 -0
  72. package/dist/db/exec.js.map +1 -0
  73. package/dist/db/files.js +85 -0
  74. package/dist/db/files.js.map +1 -0
  75. package/dist/db/flags.js +24 -0
  76. package/dist/db/flags.js.map +1 -0
  77. package/dist/db/git.js +116 -0
  78. package/dist/db/git.js.map +1 -0
  79. package/dist/db/iceberg/inverted-index.js +862 -0
  80. package/dist/db/iceberg/inverted-index.js.map +1 -0
  81. package/dist/db/iceberg/puffin.js +878 -0
  82. package/dist/db/iceberg/puffin.js.map +1 -0
  83. package/dist/db/iceberg/search-manifest.js +422 -0
  84. package/dist/db/iceberg/search-manifest.js.map +1 -0
  85. package/dist/db/iceberg/types.js +8 -0
  86. package/dist/db/iceberg/types.js.map +1 -0
  87. package/dist/db/index.js +121 -0
  88. package/dist/db/index.js.map +1 -0
  89. package/dist/db/integrations.js +368 -0
  90. package/dist/db/integrations.js.map +1 -0
  91. package/dist/db/json-indexes.js +332 -0
  92. package/dist/db/json-indexes.js.map +1 -0
  93. package/dist/db/linked-accounts.js +287 -0
  94. package/dist/db/linked-accounts.js.map +1 -0
  95. package/dist/db/nouns.js +183 -0
  96. package/dist/db/nouns.js.map +1 -0
  97. package/dist/db/objects.js +170 -0
  98. package/dist/db/objects.js.map +1 -0
  99. package/dist/db/primitives/dag-scheduler/index.js +869 -0
  100. package/dist/db/primitives/dag-scheduler/index.js.map +1 -0
  101. package/dist/db/primitives/exactly-once-context.js +237 -0
  102. package/dist/db/primitives/exactly-once-context.js.map +1 -0
  103. package/dist/db/primitives/index.js +62 -0
  104. package/dist/db/primitives/index.js.map +1 -0
  105. package/dist/db/primitives/keyed-router.js +145 -0
  106. package/dist/db/primitives/keyed-router.js.map +1 -0
  107. package/dist/db/primitives/observability.js +162 -0
  108. package/dist/db/primitives/observability.js.map +1 -0
  109. package/dist/db/primitives/schema-evolution.js +643 -0
  110. package/dist/db/primitives/schema-evolution.js.map +1 -0
  111. package/dist/db/primitives/stateful-operator/index.js +770 -0
  112. package/dist/db/primitives/stateful-operator/index.js.map +1 -0
  113. package/dist/db/primitives/temporal-store.js +306 -0
  114. package/dist/db/primitives/temporal-store.js.map +1 -0
  115. package/dist/db/primitives/typed-column-store.js +1229 -0
  116. package/dist/db/primitives/typed-column-store.js.map +1 -0
  117. package/dist/db/primitives/utils/duration.js +162 -0
  118. package/dist/db/primitives/utils/duration.js.map +1 -0
  119. package/dist/db/primitives/utils/murmur3.js +116 -0
  120. package/dist/db/primitives/utils/murmur3.js.map +1 -0
  121. package/dist/db/primitives/watermark-service.js +136 -0
  122. package/dist/db/primitives/watermark-service.js.map +1 -0
  123. package/dist/db/primitives/window-manager.js +764 -0
  124. package/dist/db/primitives/window-manager.js.map +1 -0
  125. package/dist/db/relationships.js +66 -0
  126. package/dist/db/relationships.js.map +1 -0
  127. package/dist/db/schema-minimal.js +61 -0
  128. package/dist/db/schema-minimal.js.map +1 -0
  129. package/dist/db/search.js +28 -0
  130. package/dist/db/search.js.map +1 -0
  131. package/dist/db/stores.js +1665 -0
  132. package/dist/db/stores.js.map +1 -0
  133. package/dist/db/things.js +297 -0
  134. package/dist/db/things.js.map +1 -0
  135. package/dist/db/vault.js +171 -0
  136. package/dist/db/vault.js.map +1 -0
  137. package/dist/db/verbs.js +102 -0
  138. package/dist/db/verbs.js.map +1 -0
  139. package/dist/do/base.js +48 -0
  140. package/dist/do/base.js.map +1 -0
  141. package/dist/do/tiny.js +31 -0
  142. package/dist/do/tiny.js.map +1 -0
  143. package/dist/lib/DOAuth.js +261 -0
  144. package/dist/lib/DOAuth.js.map +1 -0
  145. package/dist/lib/DODispatcher.js +72 -0
  146. package/dist/lib/DODispatcher.js.map +1 -0
  147. package/dist/lib/Modifier.js +189 -0
  148. package/dist/lib/Modifier.js.map +1 -0
  149. package/dist/lib/StateStorage.js +403 -0
  150. package/dist/lib/StateStorage.js.map +1 -0
  151. package/dist/lib/TypeRegistry.js +122 -0
  152. package/dist/lib/TypeRegistry.js.map +1 -0
  153. package/dist/lib/ai/gateway.js +247 -0
  154. package/dist/lib/ai/gateway.js.map +1 -0
  155. package/dist/lib/ai/tool-loop-agent.js +591 -0
  156. package/dist/lib/ai/tool-loop-agent.js.map +1 -0
  157. package/dist/lib/auto-wiring.js +439 -0
  158. package/dist/lib/auto-wiring.js.map +1 -0
  159. package/dist/lib/browse/browserbase.js +163 -0
  160. package/dist/lib/browse/browserbase.js.map +1 -0
  161. package/dist/lib/browse/cloudflare.js +144 -0
  162. package/dist/lib/browse/cloudflare.js.map +1 -0
  163. package/dist/lib/browse/index.js +62 -0
  164. package/dist/lib/browse/index.js.map +1 -0
  165. package/dist/lib/browse/types.js +13 -0
  166. package/dist/lib/browse/types.js.map +1 -0
  167. package/dist/lib/cache/index.js +37 -0
  168. package/dist/lib/cache/index.js.map +1 -0
  169. package/dist/lib/cache/visibility.js +638 -0
  170. package/dist/lib/cache/visibility.js.map +1 -0
  171. package/dist/lib/capabilities.js +268 -0
  172. package/dist/lib/capabilities.js.map +1 -0
  173. package/dist/lib/channels/base.js +106 -0
  174. package/dist/lib/channels/base.js.map +1 -0
  175. package/dist/lib/channels/discord.js +94 -0
  176. package/dist/lib/channels/discord.js.map +1 -0
  177. package/dist/lib/channels/email.js +204 -0
  178. package/dist/lib/channels/email.js.map +1 -0
  179. package/dist/lib/channels/index.js +90 -0
  180. package/dist/lib/channels/index.js.map +1 -0
  181. package/dist/lib/channels/mdxui-chat.js +95 -0
  182. package/dist/lib/channels/mdxui-chat.js.map +1 -0
  183. package/dist/lib/channels/slack-blockkit.js +121 -0
  184. package/dist/lib/channels/slack-blockkit.js.map +1 -0
  185. package/dist/lib/channels/types.js +7 -0
  186. package/dist/lib/channels/types.js.map +1 -0
  187. package/dist/lib/cloudflare/ai.js +654 -0
  188. package/dist/lib/cloudflare/ai.js.map +1 -0
  189. package/dist/lib/cloudflare/index.js +88 -0
  190. package/dist/lib/cloudflare/index.js.map +1 -0
  191. package/dist/lib/cloudflare/kv.js +342 -0
  192. package/dist/lib/cloudflare/kv.js.map +1 -0
  193. package/dist/lib/cloudflare/queues.js +434 -0
  194. package/dist/lib/cloudflare/queues.js.map +1 -0
  195. package/dist/lib/cloudflare/r2.js +604 -0
  196. package/dist/lib/cloudflare/r2.js.map +1 -0
  197. package/dist/lib/cloudflare/vectorize.js +494 -0
  198. package/dist/lib/cloudflare/vectorize.js.map +1 -0
  199. package/dist/lib/cloudflare/workflows.js +569 -0
  200. package/dist/lib/cloudflare/workflows.js.map +1 -0
  201. package/dist/lib/colo/caching.js +196 -0
  202. package/dist/lib/colo/caching.js.map +1 -0
  203. package/dist/lib/colo/detection.js +194 -0
  204. package/dist/lib/colo/detection.js.map +1 -0
  205. package/dist/lib/colo/external-data.js +219 -0
  206. package/dist/lib/colo/external-data.js.map +1 -0
  207. package/dist/lib/colo/globe-data.js +179 -0
  208. package/dist/lib/colo/globe-data.js.map +1 -0
  209. package/dist/lib/colo/index.js +16 -0
  210. package/dist/lib/colo/index.js.map +1 -0
  211. package/dist/lib/decorators.js +37 -0
  212. package/dist/lib/decorators.js.map +1 -0
  213. package/dist/lib/discovery.js +81 -0
  214. package/dist/lib/discovery.js.map +1 -0
  215. package/dist/lib/executors/AgenticFunctionExecutor.js +619 -0
  216. package/dist/lib/executors/AgenticFunctionExecutor.js.map +1 -0
  217. package/dist/lib/executors/BaseFunctionExecutor.js +328 -0
  218. package/dist/lib/executors/BaseFunctionExecutor.js.map +1 -0
  219. package/dist/lib/executors/CascadeExecutor.js +418 -0
  220. package/dist/lib/executors/CascadeExecutor.js.map +1 -0
  221. package/dist/lib/executors/CodeFunctionExecutor.js +904 -0
  222. package/dist/lib/executors/CodeFunctionExecutor.js.map +1 -0
  223. package/dist/lib/executors/GenerativeFunctionExecutor.js +904 -0
  224. package/dist/lib/executors/GenerativeFunctionExecutor.js.map +1 -0
  225. package/dist/lib/executors/HumanFunctionExecutor.js +884 -0
  226. package/dist/lib/executors/HumanFunctionExecutor.js.map +1 -0
  227. package/dist/lib/executors/ParallelStepExecutor.js +308 -0
  228. package/dist/lib/executors/ParallelStepExecutor.js.map +1 -0
  229. package/dist/lib/executors/types.js +12 -0
  230. package/dist/lib/executors/types.js.map +1 -0
  231. package/dist/lib/experiments.js +89 -0
  232. package/dist/lib/experiments.js.map +1 -0
  233. package/dist/lib/flags/store.js +262 -0
  234. package/dist/lib/flags/store.js.map +1 -0
  235. package/dist/lib/functions/FunctionComposition.js +467 -0
  236. package/dist/lib/functions/FunctionComposition.js.map +1 -0
  237. package/dist/lib/functions/FunctionMiddleware.js +457 -0
  238. package/dist/lib/functions/FunctionMiddleware.js.map +1 -0
  239. package/dist/lib/functions/FunctionRegistry.js +426 -0
  240. package/dist/lib/functions/FunctionRegistry.js.map +1 -0
  241. package/dist/lib/functions/createFunction.js +1048 -0
  242. package/dist/lib/functions/createFunction.js.map +1 -0
  243. package/dist/lib/humans/index.js +68 -0
  244. package/dist/lib/humans/index.js.map +1 -0
  245. package/dist/lib/humans/templates.js +117 -0
  246. package/dist/lib/humans/templates.js.map +1 -0
  247. package/dist/lib/identity.js +98 -0
  248. package/dist/lib/identity.js.map +1 -0
  249. package/dist/lib/index.js +9 -0
  250. package/dist/lib/index.js.map +1 -0
  251. package/dist/lib/logging/error-logger.js +163 -0
  252. package/dist/lib/logging/error-logger.js.map +1 -0
  253. package/dist/lib/logging/index.js +160 -0
  254. package/dist/lib/logging/index.js.map +1 -0
  255. package/dist/lib/mixins/bash.js +753 -0
  256. package/dist/lib/mixins/bash.js.map +1 -0
  257. package/dist/lib/mixins/fs.js +648 -0
  258. package/dist/lib/mixins/fs.js.map +1 -0
  259. package/dist/lib/mixins/git.js +1006 -0
  260. package/dist/lib/mixins/git.js.map +1 -0
  261. package/dist/lib/mixins/npm.js +662 -0
  262. package/dist/lib/mixins/npm.js.map +1 -0
  263. package/dist/lib/noun-id.js +278 -0
  264. package/dist/lib/noun-id.js.map +1 -0
  265. package/dist/lib/rate-limit/sliding-window.js +148 -0
  266. package/dist/lib/rate-limit/sliding-window.js.map +1 -0
  267. package/dist/lib/rate-limit.js +110 -0
  268. package/dist/lib/rate-limit.js.map +1 -0
  269. package/dist/lib/rpc/bindings.js +548 -0
  270. package/dist/lib/rpc/bindings.js.map +1 -0
  271. package/dist/lib/rpc/index.js +64 -0
  272. package/dist/lib/rpc/index.js.map +1 -0
  273. package/dist/lib/safe-stringify.js +223 -0
  274. package/dist/lib/safe-stringify.js.map +1 -0
  275. package/dist/lib/sandbox/miniflare-sandbox.js +1007 -0
  276. package/dist/lib/sandbox/miniflare-sandbox.js.map +1 -0
  277. package/dist/lib/sqids.js +110 -0
  278. package/dist/lib/sqids.js.map +1 -0
  279. package/dist/lib/sql/adapters/index.js +10 -0
  280. package/dist/lib/sql/adapters/index.js.map +1 -0
  281. package/dist/lib/sql/adapters/node-sql-parser.js +552 -0
  282. package/dist/lib/sql/adapters/node-sql-parser.js.map +1 -0
  283. package/dist/lib/sql/adapters/pgsql-parser.js +1190 -0
  284. package/dist/lib/sql/adapters/pgsql-parser.js.map +1 -0
  285. package/dist/lib/sql/index.js +277 -0
  286. package/dist/lib/sql/index.js.map +1 -0
  287. package/dist/lib/sql/types.js +56 -0
  288. package/dist/lib/sql/types.js.map +1 -0
  289. package/dist/lib/type-classifier.js +126 -0
  290. package/dist/lib/type-classifier.js.map +1 -0
  291. package/dist/lib/utils/html.js +47 -0
  292. package/dist/lib/utils/html.js.map +1 -0
  293. package/dist/lib/validation.js +48 -0
  294. package/dist/lib/validation.js.map +1 -0
  295. package/dist/lib/vault/store.js +411 -0
  296. package/dist/lib/vault/store.js.map +1 -0
  297. package/dist/metrics/hunch.js +739 -0
  298. package/dist/metrics/hunch.js.map +1 -0
  299. package/dist/objects/API.js +302 -0
  300. package/dist/objects/API.js.map +1 -0
  301. package/dist/objects/Agent.js +179 -0
  302. package/dist/objects/Agent.js.map +1 -0
  303. package/dist/objects/AgenticFunctionExecutor.js +8 -0
  304. package/dist/objects/AgenticFunctionExecutor.js.map +1 -0
  305. package/dist/objects/App.js +83 -0
  306. package/dist/objects/App.js.map +1 -0
  307. package/dist/objects/Browser.js +884 -0
  308. package/dist/objects/Browser.js.map +1 -0
  309. package/dist/objects/Business.js +107 -0
  310. package/dist/objects/Business.js.map +1 -0
  311. package/dist/objects/CLI.js +221 -0
  312. package/dist/objects/CLI.js.map +1 -0
  313. package/dist/objects/CodeFunctionExecutor.js +8 -0
  314. package/dist/objects/CodeFunctionExecutor.js.map +1 -0
  315. package/dist/objects/Collection.js +161 -0
  316. package/dist/objects/Collection.js.map +1 -0
  317. package/dist/objects/DO.js +41 -0
  318. package/dist/objects/DO.js.map +1 -0
  319. package/dist/objects/DOBase.js +2309 -0
  320. package/dist/objects/DOBase.js.map +1 -0
  321. package/dist/objects/DOCache.js +153 -0
  322. package/dist/objects/DOCache.js.map +1 -0
  323. package/dist/objects/DOFull.js +1676 -0
  324. package/dist/objects/DOFull.js.map +1 -0
  325. package/dist/objects/DOTiny.js +207 -0
  326. package/dist/objects/DOTiny.js.map +1 -0
  327. package/dist/objects/Directory.js +199 -0
  328. package/dist/objects/Directory.js.map +1 -0
  329. package/dist/objects/Entity.js +413 -0
  330. package/dist/objects/Entity.js.map +1 -0
  331. package/dist/objects/Function.js +116 -0
  332. package/dist/objects/Function.js.map +1 -0
  333. package/dist/objects/Human.js +231 -0
  334. package/dist/objects/Human.js.map +1 -0
  335. package/dist/objects/HumanFunctionExecutor.js +8 -0
  336. package/dist/objects/HumanFunctionExecutor.js.map +1 -0
  337. package/dist/objects/IcebergMetadataDO.js +938 -0
  338. package/dist/objects/IcebergMetadataDO.js.map +1 -0
  339. package/dist/objects/IntegrationsDO.js +1174 -0
  340. package/dist/objects/IntegrationsDO.js.map +1 -0
  341. package/dist/objects/ObservabilityBroadcaster.js +149 -0
  342. package/dist/objects/ObservabilityBroadcaster.js.map +1 -0
  343. package/dist/objects/Package.js +154 -0
  344. package/dist/objects/Package.js.map +1 -0
  345. package/dist/objects/Product.js +193 -0
  346. package/dist/objects/Product.js.map +1 -0
  347. package/dist/objects/SDK.js +152 -0
  348. package/dist/objects/SDK.js.map +1 -0
  349. package/dist/objects/SaaS.js +235 -0
  350. package/dist/objects/SaaS.js.map +1 -0
  351. package/dist/objects/SandboxDO.js +759 -0
  352. package/dist/objects/SandboxDO.js.map +1 -0
  353. package/dist/objects/Service.js +337 -0
  354. package/dist/objects/Service.js.map +1 -0
  355. package/dist/objects/Site.js +80 -0
  356. package/dist/objects/Site.js.map +1 -0
  357. package/dist/objects/Startup.js +479 -0
  358. package/dist/objects/Startup.js.map +1 -0
  359. package/dist/objects/ThingsDO.js +170 -0
  360. package/dist/objects/ThingsDO.js.map +1 -0
  361. package/dist/objects/VectorShardDO.js +650 -0
  362. package/dist/objects/VectorShardDO.js.map +1 -0
  363. package/dist/objects/Worker.js +144 -0
  364. package/dist/objects/Worker.js.map +1 -0
  365. package/dist/objects/Workflow.js +196 -0
  366. package/dist/objects/Workflow.js.map +1 -0
  367. package/dist/objects/WorkflowFactory.js +313 -0
  368. package/dist/objects/WorkflowFactory.js.map +1 -0
  369. package/dist/objects/WorkflowRuntime.js +863 -0
  370. package/dist/objects/WorkflowRuntime.js.map +1 -0
  371. package/dist/objects/circuit-breaker-bulkhead.js +178 -0
  372. package/dist/objects/circuit-breaker-bulkhead.js.map +1 -0
  373. package/dist/objects/createFunction.js +934 -0
  374. package/dist/objects/createFunction.js.map +1 -0
  375. package/dist/objects/index.js +80 -0
  376. package/dist/objects/index.js.map +1 -0
  377. package/dist/objects/lifecycle/Branch.js +275 -0
  378. package/dist/objects/lifecycle/Branch.js.map +1 -0
  379. package/dist/objects/lifecycle/Clone.js +1499 -0
  380. package/dist/objects/lifecycle/Clone.js.map +1 -0
  381. package/dist/objects/lifecycle/Compact.js +237 -0
  382. package/dist/objects/lifecycle/Compact.js.map +1 -0
  383. package/dist/objects/lifecycle/Promote.js +476 -0
  384. package/dist/objects/lifecycle/Promote.js.map +1 -0
  385. package/dist/objects/lifecycle/Shard.js +560 -0
  386. package/dist/objects/lifecycle/Shard.js.map +1 -0
  387. package/dist/objects/lifecycle/index.js +15 -0
  388. package/dist/objects/lifecycle/index.js.map +1 -0
  389. package/dist/objects/lifecycle/types.js +33 -0
  390. package/dist/objects/lifecycle/types.js.map +1 -0
  391. package/dist/objects/mixins/infrastructure.js +171 -0
  392. package/dist/objects/mixins/infrastructure.js.map +1 -0
  393. package/dist/objects/modules/StoresModule.js +153 -0
  394. package/dist/objects/modules/StoresModule.js.map +1 -0
  395. package/dist/objects/persistence/checkpoint-manager.js +606 -0
  396. package/dist/objects/persistence/checkpoint-manager.js.map +1 -0
  397. package/dist/objects/persistence/index.js +72 -0
  398. package/dist/objects/persistence/index.js.map +1 -0
  399. package/dist/objects/persistence/migration-runner.js +562 -0
  400. package/dist/objects/persistence/migration-runner.js.map +1 -0
  401. package/dist/objects/persistence/replication-manager.js +501 -0
  402. package/dist/objects/persistence/replication-manager.js.map +1 -0
  403. package/dist/objects/persistence/tiered-storage-manager.js +595 -0
  404. package/dist/objects/persistence/tiered-storage-manager.js.map +1 -0
  405. package/dist/objects/persistence/types.js +14 -0
  406. package/dist/objects/persistence/types.js.map +1 -0
  407. package/dist/objects/persistence/wal-manager.js +653 -0
  408. package/dist/objects/persistence/wal-manager.js.map +1 -0
  409. package/dist/objects/presets/index.js +20 -0
  410. package/dist/objects/presets/index.js.map +1 -0
  411. package/dist/objects/presets/primitives.js +188 -0
  412. package/dist/objects/presets/primitives.js.map +1 -0
  413. package/dist/objects/primitives/alarm-adapter.js +141 -0
  414. package/dist/objects/primitives/alarm-adapter.js.map +1 -0
  415. package/dist/objects/primitives/index.js +337 -0
  416. package/dist/objects/primitives/index.js.map +1 -0
  417. package/dist/objects/primitives/storage-adapter.js +182 -0
  418. package/dist/objects/primitives/storage-adapter.js.map +1 -0
  419. package/dist/objects/primitives/with-primitives.js +102 -0
  420. package/dist/objects/primitives/with-primitives.js.map +1 -0
  421. package/dist/objects/services/StoreManager.js +227 -0
  422. package/dist/objects/services/StoreManager.js.map +1 -0
  423. package/dist/objects/services/index.js +13 -0
  424. package/dist/objects/services/index.js.map +1 -0
  425. package/dist/objects/transport/auth-layer.js +1451 -0
  426. package/dist/objects/transport/auth-layer.js.map +1 -0
  427. package/dist/objects/transport/capnweb-target.js +355 -0
  428. package/dist/objects/transport/capnweb-target.js.map +1 -0
  429. package/dist/objects/transport/chain.js +441 -0
  430. package/dist/objects/transport/chain.js.map +1 -0
  431. package/dist/objects/transport/handler.js +58 -0
  432. package/dist/objects/transport/handler.js.map +1 -0
  433. package/dist/objects/transport/index.js +53 -0
  434. package/dist/objects/transport/index.js.map +1 -0
  435. package/dist/objects/transport/mcp-server.js +691 -0
  436. package/dist/objects/transport/mcp-server.js.map +1 -0
  437. package/dist/objects/transport/rest-autowire.js +1508 -0
  438. package/dist/objects/transport/rest-autowire.js.map +1 -0
  439. package/dist/objects/transport/rest-router.js +440 -0
  440. package/dist/objects/transport/rest-router.js.map +1 -0
  441. package/dist/objects/transport/rpc-server.js +1539 -0
  442. package/dist/objects/transport/rpc-server.js.map +1 -0
  443. package/dist/objects/transport/shared.js +576 -0
  444. package/dist/objects/transport/shared.js.map +1 -0
  445. package/dist/objects/transport/sync-engine.js +291 -0
  446. package/dist/objects/transport/sync-engine.js.map +1 -0
  447. package/dist/objects/transport/types.js +8 -0
  448. package/dist/objects/transport/types.js.map +1 -0
  449. package/dist/sandbox/index.js +258 -0
  450. package/dist/sandbox/index.js.map +1 -0
  451. package/dist/snippets/artifacts-config.js +241 -0
  452. package/dist/snippets/artifacts-config.js.map +1 -0
  453. package/dist/snippets/artifacts-ingest.js +832 -0
  454. package/dist/snippets/artifacts-ingest.js.map +1 -0
  455. package/dist/snippets/artifacts-serve.js +1035 -0
  456. package/dist/snippets/artifacts-serve.js.map +1 -0
  457. package/dist/snippets/artifacts-types.js +161 -0
  458. package/dist/snippets/artifacts-types.js.map +1 -0
  459. package/dist/snippets/cache-probe.js +376 -0
  460. package/dist/snippets/cache-probe.js.map +1 -0
  461. package/dist/snippets/cache.js +10 -0
  462. package/dist/snippets/cache.js.map +1 -0
  463. package/dist/snippets/events.js +469 -0
  464. package/dist/snippets/events.js.map +1 -0
  465. package/dist/snippets/index.js +7 -0
  466. package/dist/snippets/index.js.map +1 -0
  467. package/dist/snippets/proxy.js +495 -0
  468. package/dist/snippets/proxy.js.map +1 -0
  469. package/dist/snippets/search.js +1759 -0
  470. package/dist/snippets/search.js.map +1 -0
  471. package/dist/streams/index.js +30 -0
  472. package/dist/streams/index.js.map +1 -0
  473. package/dist/streams/observability.js +68 -0
  474. package/dist/streams/observability.js.map +1 -0
  475. package/dist/types/AI.js +92 -0
  476. package/dist/types/AI.js.map +1 -0
  477. package/dist/types/AIFunction.js +171 -0
  478. package/dist/types/AIFunction.js.map +1 -0
  479. package/dist/types/BrowseVerb.js +89 -0
  480. package/dist/types/BrowseVerb.js.map +1 -0
  481. package/dist/types/Browser.js +31 -0
  482. package/dist/types/Browser.js.map +1 -0
  483. package/dist/types/Chaos.js +15 -0
  484. package/dist/types/Chaos.js.map +1 -0
  485. package/dist/types/CloudflareBindings.js +109 -0
  486. package/dist/types/CloudflareBindings.js.map +1 -0
  487. package/dist/types/Collection.js +50 -0
  488. package/dist/types/Collection.js.map +1 -0
  489. package/dist/types/DO.js +2 -0
  490. package/dist/types/DO.js.map +1 -0
  491. package/dist/types/DOLocation.js +63 -0
  492. package/dist/types/DOLocation.js.map +1 -0
  493. package/dist/types/EventHandler.js +57 -0
  494. package/dist/types/EventHandler.js.map +1 -0
  495. package/dist/types/Experiment.js +33 -0
  496. package/dist/types/Experiment.js.map +1 -0
  497. package/dist/types/Flag.js +57 -0
  498. package/dist/types/Flag.js.map +1 -0
  499. package/dist/types/Lifecycle.js +13 -0
  500. package/dist/types/Lifecycle.js.map +1 -0
  501. package/dist/types/Location.js +169 -0
  502. package/dist/types/Location.js.map +1 -0
  503. package/dist/types/Noun.js +66 -0
  504. package/dist/types/Noun.js.map +1 -0
  505. package/dist/types/SessionEvent.js +194 -0
  506. package/dist/types/SessionEvent.js.map +1 -0
  507. package/dist/types/Thing.js +55 -0
  508. package/dist/types/Thing.js.map +1 -0
  509. package/dist/types/ThingDO.js +153 -0
  510. package/dist/types/ThingDO.js.map +1 -0
  511. package/dist/types/Things.js +2 -0
  512. package/dist/types/Things.js.map +1 -0
  513. package/dist/types/Verb.js +119 -0
  514. package/dist/types/Verb.js.map +1 -0
  515. package/dist/types/WorkflowContext.js +70 -0
  516. package/dist/types/WorkflowContext.js.map +1 -0
  517. package/dist/types/analytics-api.js +13 -0
  518. package/dist/types/analytics-api.js.map +1 -0
  519. package/dist/types/capabilities.js +135 -0
  520. package/dist/types/capabilities.js.map +1 -0
  521. package/dist/types/drizzle.js +12 -0
  522. package/dist/types/drizzle.js.map +1 -0
  523. package/dist/types/event.js +201 -0
  524. package/dist/types/event.js.map +1 -0
  525. package/dist/types/fn.js +12 -0
  526. package/dist/types/fn.js.map +1 -0
  527. package/dist/types/iceberg.js +48 -0
  528. package/dist/types/iceberg.js.map +1 -0
  529. package/dist/types/ids.js +170 -0
  530. package/dist/types/ids.js.map +1 -0
  531. package/dist/types/index.js +41 -0
  532. package/dist/types/index.js.map +1 -0
  533. package/dist/types/introspect.js +54 -0
  534. package/dist/types/introspect.js.map +1 -0
  535. package/dist/types/observability.js +124 -0
  536. package/dist/types/observability.js.map +1 -0
  537. package/dist/types/sync-protocol.js +175 -0
  538. package/dist/types/sync-protocol.js.map +1 -0
  539. package/dist/types/vector.js +13 -0
  540. package/dist/types/vector.js.map +1 -0
  541. package/dist/workflows/ScheduleManager.js +473 -0
  542. package/dist/workflows/ScheduleManager.js.map +1 -0
  543. package/dist/workflows/StepDOBridge.js +149 -0
  544. package/dist/workflows/StepDOBridge.js.map +1 -0
  545. package/dist/workflows/StepResultStorage.js +232 -0
  546. package/dist/workflows/StepResultStorage.js.map +1 -0
  547. package/dist/workflows/WaitForEventManager.js +461 -0
  548. package/dist/workflows/WaitForEventManager.js.map +1 -0
  549. package/dist/workflows/analyzer.js +332 -0
  550. package/dist/workflows/analyzer.js.map +1 -0
  551. package/dist/workflows/compat/activity-router.js +484 -0
  552. package/dist/workflows/compat/activity-router.js.map +1 -0
  553. package/dist/workflows/compat/backends/cloudflare-workflows.js +431 -0
  554. package/dist/workflows/compat/backends/cloudflare-workflows.js.map +1 -0
  555. package/dist/workflows/compat/backends/index.js +14 -0
  556. package/dist/workflows/compat/backends/index.js.map +1 -0
  557. package/dist/workflows/compat/errors/index.js +375 -0
  558. package/dist/workflows/compat/errors/index.js.map +1 -0
  559. package/dist/workflows/compat/index.js +79 -0
  560. package/dist/workflows/compat/index.js.map +1 -0
  561. package/dist/workflows/compat/inngest/index.js +989 -0
  562. package/dist/workflows/compat/inngest/index.js.map +1 -0
  563. package/dist/workflows/compat/qstash/index.js +1263 -0
  564. package/dist/workflows/compat/qstash/index.js.map +1 -0
  565. package/dist/workflows/compat/temporal/activities.js +739 -0
  566. package/dist/workflows/compat/temporal/activities.js.map +1 -0
  567. package/dist/workflows/compat/temporal/child-workflows.js +154 -0
  568. package/dist/workflows/compat/temporal/child-workflows.js.map +1 -0
  569. package/dist/workflows/compat/temporal/client.js +381 -0
  570. package/dist/workflows/compat/temporal/client.js.map +1 -0
  571. package/dist/workflows/compat/temporal/context.js +309 -0
  572. package/dist/workflows/compat/temporal/context.js.map +1 -0
  573. package/dist/workflows/compat/temporal/determinism.js +216 -0
  574. package/dist/workflows/compat/temporal/determinism.js.map +1 -0
  575. package/dist/workflows/compat/temporal/errors.js +128 -0
  576. package/dist/workflows/compat/temporal/errors.js.map +1 -0
  577. package/dist/workflows/compat/temporal/index.js +2464 -0
  578. package/dist/workflows/compat/temporal/index.js.map +1 -0
  579. package/dist/workflows/compat/temporal/saga.js +504 -0
  580. package/dist/workflows/compat/temporal/saga.js.map +1 -0
  581. package/dist/workflows/compat/temporal/signals.js +364 -0
  582. package/dist/workflows/compat/temporal/signals.js.map +1 -0
  583. package/dist/workflows/compat/temporal/storage.js +271 -0
  584. package/dist/workflows/compat/temporal/storage.js.map +1 -0
  585. package/dist/workflows/compat/temporal/timers.js +347 -0
  586. package/dist/workflows/compat/temporal/timers.js.map +1 -0
  587. package/dist/workflows/compat/temporal/types.js +7 -0
  588. package/dist/workflows/compat/temporal/types.js.map +1 -0
  589. package/dist/workflows/compat/temporal/unified-primitives.js +339 -0
  590. package/dist/workflows/compat/temporal/unified-primitives.js.map +1 -0
  591. package/dist/workflows/compat/trigger/index.js +468 -0
  592. package/dist/workflows/compat/trigger/index.js.map +1 -0
  593. package/dist/workflows/compat/utils/index.js +69 -0
  594. package/dist/workflows/compat/utils/index.js.map +1 -0
  595. package/dist/workflows/context/correlation-capability.js +266 -0
  596. package/dist/workflows/context/correlation-capability.js.map +1 -0
  597. package/dist/workflows/context/correlation.js +484 -0
  598. package/dist/workflows/context/correlation.js.map +1 -0
  599. package/dist/workflows/context/experiment.js +289 -0
  600. package/dist/workflows/context/experiment.js.map +1 -0
  601. package/dist/workflows/context/flag.js +244 -0
  602. package/dist/workflows/context/flag.js.map +1 -0
  603. package/dist/workflows/context/foundation.js +648 -0
  604. package/dist/workflows/context/foundation.js.map +1 -0
  605. package/dist/workflows/context/human-base.js +106 -0
  606. package/dist/workflows/context/human-base.js.map +1 -0
  607. package/dist/workflows/context/human.js +368 -0
  608. package/dist/workflows/context/human.js.map +1 -0
  609. package/dist/workflows/context/measure.js +354 -0
  610. package/dist/workflows/context/measure.js.map +1 -0
  611. package/dist/workflows/context/rate-limit.js +358 -0
  612. package/dist/workflows/context/rate-limit.js.map +1 -0
  613. package/dist/workflows/context/user.js +117 -0
  614. package/dist/workflows/context/user.js.map +1 -0
  615. package/dist/workflows/context/vault.js +360 -0
  616. package/dist/workflows/context/vault.js.map +1 -0
  617. package/dist/workflows/data/entity-events/entity-events.js +489 -0
  618. package/dist/workflows/data/entity-events/entity-events.js.map +1 -0
  619. package/dist/workflows/data/experiment/index.js +599 -0
  620. package/dist/workflows/data/experiment/index.js.map +1 -0
  621. package/dist/workflows/data/goal/context.js +558 -0
  622. package/dist/workflows/data/goal/context.js.map +1 -0
  623. package/dist/workflows/data/goal/index.js +32 -0
  624. package/dist/workflows/data/goal/index.js.map +1 -0
  625. package/dist/workflows/data/measure/index.js +840 -0
  626. package/dist/workflows/data/measure/index.js.map +1 -0
  627. package/dist/workflows/data/stream/index.js +1149 -0
  628. package/dist/workflows/data/stream/index.js.map +1 -0
  629. package/dist/workflows/data/track/context.js +883 -0
  630. package/dist/workflows/data/track/context.js.map +1 -0
  631. package/dist/workflows/data/track/index.js +15 -0
  632. package/dist/workflows/data/track/index.js.map +1 -0
  633. package/dist/workflows/data/view/context.js +864 -0
  634. package/dist/workflows/data/view/context.js.map +1 -0
  635. package/dist/workflows/domain.js +93 -0
  636. package/dist/workflows/domain.js.map +1 -0
  637. package/dist/workflows/flag.js +176 -0
  638. package/dist/workflows/flag.js.map +1 -0
  639. package/dist/workflows/flags.js +217 -0
  640. package/dist/workflows/flags.js.map +1 -0
  641. package/dist/workflows/hash.js +209 -0
  642. package/dist/workflows/hash.js.map +1 -0
  643. package/dist/workflows/index.js +50 -0
  644. package/dist/workflows/index.js.map +1 -0
  645. package/dist/workflows/on.js +378 -0
  646. package/dist/workflows/on.js.map +1 -0
  647. package/dist/workflows/pipeline-promise.js +481 -0
  648. package/dist/workflows/pipeline-promise.js.map +1 -0
  649. package/dist/workflows/pipeline-types.js +20 -0
  650. package/dist/workflows/pipeline-types.js.map +1 -0
  651. package/dist/workflows/proxy.js +76 -0
  652. package/dist/workflows/proxy.js.map +1 -0
  653. package/dist/workflows/runtime.js +310 -0
  654. package/dist/workflows/runtime.js.map +1 -0
  655. package/dist/workflows/schedule-builder.js +327 -0
  656. package/dist/workflows/schedule-builder.js.map +1 -0
  657. package/dist/workflows/visibility/index.js +146 -0
  658. package/dist/workflows/visibility/index.js.map +1 -0
  659. package/dist/workflows/visibility/query-parser.js +150 -0
  660. package/dist/workflows/visibility/query-parser.js.map +1 -0
  661. package/dist/workflows/visibility/store.js +223 -0
  662. package/dist/workflows/visibility/store.js.map +1 -0
  663. package/dist/workflows/visibility/types.js +30 -0
  664. package/dist/workflows/visibility/types.js.map +1 -0
  665. package/dist/workflows/workflow.js +53 -0
  666. package/dist/workflows/workflow.js.map +1 -0
  667. package/package.json +294 -46
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Noun.js","sourceRoot":"","sources":["../../types/Noun.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,194 @@
1
+ /**
2
+ * Session Event Schema and Validation
3
+ *
4
+ * Defines the SessionEvent type for session replay functionality.
5
+ * Provides Zod schemas for validation and parsing.
6
+ *
7
+ * Session events capture frontend activity for replay and debugging:
8
+ * - User interactions (clicks, inputs, scrolls)
9
+ * - Network requests/responses
10
+ * - Console logs and errors
11
+ * - Custom application events
12
+ */
13
+ import { z } from 'zod';
14
+ // ============================================================================
15
+ // Constants
16
+ // ============================================================================
17
+ /** Maximum allowed clock skew for timestamps (5 minutes in ms) */
18
+ const MAX_CLOCK_SKEW_MS = 5 * 60 * 1000;
19
+ /** Maximum correlationId length */
20
+ const MAX_CORRELATION_ID_LENGTH = 256;
21
+ /** Valid event types */
22
+ export const SESSION_EVENT_TYPES = ['request', 'response', 'error', 'log', 'custom'];
23
+ /** Valid source types */
24
+ export const SESSION_EVENT_SOURCES = ['frontend', 'backend'];
25
+ // ============================================================================
26
+ // Zod Schemas
27
+ // ============================================================================
28
+ /**
29
+ * Session event type enum schema
30
+ */
31
+ export const SessionEventTypeSchema = z.enum(SESSION_EVENT_TYPES);
32
+ /**
33
+ * Session event source enum schema
34
+ */
35
+ export const SessionEventSourceSchema = z.enum(SESSION_EVENT_SOURCES);
36
+ /**
37
+ * Validates correlationId format:
38
+ * - Non-empty string
39
+ * - Max length 256
40
+ * - Alphanumeric with dashes, underscores (no special/dangerous characters)
41
+ */
42
+ const CorrelationIdSchema = z
43
+ .string()
44
+ .min(1, 'correlationId cannot be empty')
45
+ .max(MAX_CORRELATION_ID_LENGTH, `correlationId must be ${MAX_CORRELATION_ID_LENGTH} characters or less`)
46
+ .regex(/^[a-zA-Z0-9][a-zA-Z0-9\-_]*$/, 'correlationId must be alphanumeric with optional dashes and underscores');
47
+ /**
48
+ * Validates timestamp:
49
+ * - Must be positive number
50
+ * - Cannot be 0
51
+ * - Cannot be more than 5 minutes in the future
52
+ */
53
+ const TimestampSchema = z
54
+ .number()
55
+ .positive('timestamp must be positive')
56
+ .refine((ts) => ts > 0, { message: 'timestamp cannot be 0' })
57
+ .refine((ts) => ts <= Date.now() + MAX_CLOCK_SKEW_MS, { message: 'timestamp is too far in the future (>5 minutes)' });
58
+ /**
59
+ * Validates sequence number:
60
+ * - Must be positive integer >= 1
61
+ */
62
+ const SequenceSchema = z
63
+ .number()
64
+ .int('sequence must be an integer')
65
+ .positive('sequence must be positive')
66
+ .min(1, 'sequence must be at least 1');
67
+ /**
68
+ * Validates event ID:
69
+ * - Non-empty string
70
+ */
71
+ const EventIdSchema = z
72
+ .string()
73
+ .min(1, 'id cannot be empty');
74
+ /**
75
+ * Validates event data:
76
+ * - Must be an object (not null, not array)
77
+ */
78
+ const EventDataSchema = z
79
+ .record(z.string(), z.unknown())
80
+ .refine((data) => data !== null && typeof data === 'object' && !Array.isArray(data), {
81
+ message: 'data must be an object',
82
+ });
83
+ /**
84
+ * Full SessionEvent Zod schema with all validations
85
+ * Uses passthrough-then-strip pattern to allow unknown fields to be stripped
86
+ */
87
+ export const SessionEventSchema = z.object({
88
+ id: EventIdSchema,
89
+ correlationId: CorrelationIdSchema,
90
+ timestamp: TimestampSchema,
91
+ type: SessionEventTypeSchema,
92
+ data: EventDataSchema,
93
+ source: SessionEventSourceSchema.optional(),
94
+ sequence: SequenceSchema.optional(),
95
+ });
96
+ // ============================================================================
97
+ // Validation Functions
98
+ // ============================================================================
99
+ /**
100
+ * Validates a session event, throwing a ZodError if invalid
101
+ *
102
+ * @param event - The event to validate
103
+ * @returns true if valid
104
+ * @throws ZodError if invalid
105
+ *
106
+ * @example
107
+ * ```typescript
108
+ * const event = {
109
+ * id: 'evt-001',
110
+ * correlationId: 'corr-abc123',
111
+ * timestamp: Date.now(),
112
+ * type: 'request',
113
+ * data: { url: '/api/users' }
114
+ * }
115
+ * validateSessionEvent(event) // returns true
116
+ * ```
117
+ */
118
+ export function validateSessionEvent(event) {
119
+ // Handle non-object inputs - let Zod's parse handle this
120
+ if (event === null || event === undefined || typeof event !== 'object' || Array.isArray(event)) {
121
+ // Use Zod's built-in validation which handles error creation properly
122
+ SessionEventSchema.parse(event); // This will throw appropriate ZodError
123
+ }
124
+ // Parse and validate - this throws on error
125
+ SessionEventSchema.parse(event);
126
+ return true;
127
+ }
128
+ /**
129
+ * Parses and validates a session event, returning the typed result
130
+ *
131
+ * @param event - The raw event to parse
132
+ * @returns The validated SessionEvent
133
+ * @throws ZodError if validation fails
134
+ *
135
+ * @example
136
+ * ```typescript
137
+ * const raw = {
138
+ * id: 'evt-001',
139
+ * correlationId: 'corr-abc123',
140
+ * timestamp: Date.now(),
141
+ * type: 'request',
142
+ * data: { url: '/api/users' },
143
+ * unknownField: 'will be stripped'
144
+ * }
145
+ * const event = parseSessionEvent(raw)
146
+ * // event.unknownField is undefined (stripped by strict mode)
147
+ * ```
148
+ */
149
+ export function parseSessionEvent(event) {
150
+ // Handle non-object inputs - let Zod's parse handle this
151
+ if (event === null || event === undefined || typeof event !== 'object' || Array.isArray(event)) {
152
+ // Use Zod's built-in validation which handles error creation properly
153
+ SessionEventSchema.parse(event); // This will throw appropriate ZodError
154
+ }
155
+ return SessionEventSchema.parse(event);
156
+ }
157
+ /**
158
+ * Safely validates a session event without throwing
159
+ *
160
+ * @param event - The event to validate
161
+ * @returns Result object with success status and data or error
162
+ *
163
+ * @example
164
+ * ```typescript
165
+ * const result = safeValidateSessionEvent(event)
166
+ * if (result.success) {
167
+ * console.log(result.data)
168
+ * } else {
169
+ * console.log(result.error)
170
+ * }
171
+ * ```
172
+ */
173
+ export function safeValidateSessionEvent(event) {
174
+ return SessionEventSchema.safeParse(event);
175
+ }
176
+ /**
177
+ * Checks if an event is a valid session event type
178
+ *
179
+ * @param type - The type to check
180
+ * @returns true if valid session event type
181
+ */
182
+ export function isValidEventType(type) {
183
+ return SESSION_EVENT_TYPES.includes(type);
184
+ }
185
+ /**
186
+ * Checks if a source is a valid session event source
187
+ *
188
+ * @param source - The source to check
189
+ * @returns true if valid session event source
190
+ */
191
+ export function isValidEventSource(source) {
192
+ return SESSION_EVENT_SOURCES.includes(source);
193
+ }
194
+ //# sourceMappingURL=SessionEvent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionEvent.js","sourceRoot":"","sources":["../../types/SessionEvent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,kEAAkE;AAClE,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAA;AAEvC,mCAAmC;AACnC,MAAM,yBAAyB,GAAG,GAAG,CAAA;AAErC,wBAAwB;AACxB,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAU,CAAA;AAE7F,yBAAyB;AACzB,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,UAAU,EAAE,SAAS,CAAU,CAAA;AAErE,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;AAEjE;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;AAErE;;;;;GAKG;AACH,MAAM,mBAAmB,GAAG,CAAC;KAC1B,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,EAAE,+BAA+B,CAAC;KACvC,GAAG,CAAC,yBAAyB,EAAE,yBAAyB,yBAAyB,qBAAqB,CAAC;KACvG,KAAK,CACJ,8BAA8B,EAC9B,yEAAyE,CAC1E,CAAA;AAEH;;;;;GAKG;AACH,MAAM,eAAe,GAAG,CAAC;KACtB,MAAM,EAAE;KACR,QAAQ,CAAC,4BAA4B,CAAC;KACtC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC;KAC5D,MAAM,CACL,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,iBAAiB,EAC5C,EAAE,OAAO,EAAE,iDAAiD,EAAE,CAC/D,CAAA;AAEH;;;GAGG;AACH,MAAM,cAAc,GAAG,CAAC;KACrB,MAAM,EAAE;KACR,GAAG,CAAC,6BAA6B,CAAC;KAClC,QAAQ,CAAC,2BAA2B,CAAC;KACrC,GAAG,CAAC,CAAC,EAAE,6BAA6B,CAAC,CAAA;AAExC;;;GAGG;AACH,MAAM,aAAa,GAAG,CAAC;KACpB,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAA;AAE/B;;;GAGG;AACH,MAAM,eAAe,GAAG,CAAC;KACtB,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;KAC/B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;IACnF,OAAO,EAAE,wBAAwB;CAClC,CAAC,CAAA;AAEJ;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,EAAE,EAAE,aAAa;IACjB,aAAa,EAAE,mBAAmB;IAClC,SAAS,EAAE,eAAe;IAC1B,IAAI,EAAE,sBAAsB;IAC5B,IAAI,EAAE,eAAe;IACrB,MAAM,EAAE,wBAAwB,CAAC,QAAQ,EAAE;IAC3C,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAA;AAqBF,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,yDAAyD;IACzD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/F,sEAAsE;QACtE,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA,CAAC,uCAAuC;IACzE,CAAC;IAED,4CAA4C;IAC5C,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC/B,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,yDAAyD;IACzD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/F,sEAAsE;QACtE,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA,CAAC,uCAAuC;IACzE,CAAC;IAED,OAAO,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AACxC,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,OAAO,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;AAC5C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAa;IAC5C,OAAO,mBAAmB,CAAC,QAAQ,CAAC,IAAwB,CAAC,CAAA;AAC/D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAe;IAChD,OAAO,qBAAqB,CAAC,QAAQ,CAAC,MAA4B,CAAC,CAAA;AACrE,CAAC"}
@@ -0,0 +1,55 @@
1
+ // ═══════════════════════════════════════════════════════════════════════════
2
+ // URL PARSING UTILITIES
3
+ // ═══════════════════════════════════════════════════════════════════════════
4
+ export function parseThingId($id) {
5
+ // $id is a fully qualified URL
6
+ // Examples:
7
+ // 'https://startups.studio/headless.ly'
8
+ // 'https://headless.ly/App/main'
9
+ // 'https://startups.studio/Startup' (a Noun/type itself)
10
+ const url = new URL($id);
11
+ const ns = `${url.protocol}//${url.host}`;
12
+ const path = url.pathname.slice(1); // Remove leading /
13
+ return { url, ns, path };
14
+ }
15
+ export function buildThingId(ns, path) {
16
+ // ns: 'https://startups.studio'
17
+ // path: 'headless.ly'
18
+ // → 'https://startups.studio/headless.ly'
19
+ return `${ns}/${path}`;
20
+ }
21
+ export function isThingADO(thing) {
22
+ // A Thing is a DO when its $id IS the namespace (no path)
23
+ const { path } = parseThingId(thing.$id);
24
+ return path === '' || thing.$id === thing.identity.ns;
25
+ }
26
+ // ═══════════════════════════════════════════════════════════════════════════
27
+ // VISIBILITY HELPERS
28
+ // ═══════════════════════════════════════════════════════════════════════════
29
+ export function isPublic(thing) {
30
+ return thing.visibility === 'public';
31
+ }
32
+ export function isUnlisted(thing) {
33
+ return thing.visibility === 'unlisted';
34
+ }
35
+ export function isOrgVisible(thing) {
36
+ return thing.visibility === 'org';
37
+ }
38
+ export function isUserOnly(thing) {
39
+ return thing.visibility === 'user' || thing.visibility === undefined;
40
+ }
41
+ export function canView(thing, actor) {
42
+ // Public and unlisted things are viewable by anyone
43
+ if (thing.visibility === 'public' || thing.visibility === 'unlisted') {
44
+ return true;
45
+ }
46
+ // Org visibility requires matching orgId
47
+ if (thing.visibility === 'org') {
48
+ const thingOrgId = thing.meta?.orgId;
49
+ return !!actor.orgId && actor.orgId === thingOrgId;
50
+ }
51
+ // User visibility (or undefined = default private) requires matching ownerId
52
+ const thingOwnerId = thing.meta?.ownerId;
53
+ return !!actor.userId && actor.userId === thingOwnerId;
54
+ }
55
+ //# sourceMappingURL=Thing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Thing.js","sourceRoot":"","sources":["../../types/Thing.ts"],"names":[],"mappings":"AA0HA,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,+BAA+B;IAC/B,YAAY;IACZ,0CAA0C;IAC1C,mCAAmC;IACnC,2DAA2D;IAE3D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;IACxB,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,IAAI,EAAE,CAAA;IACzC,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA,CAAC,mBAAmB;IAEtD,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;AAC1B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAAU,EAAE,IAAY;IACnD,gCAAgC;IAChC,sBAAsB;IACtB,0CAA0C;IAC1C,OAAO,GAAG,EAAE,IAAI,IAAI,EAAE,CAAA;AACxB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAY;IACrC,0DAA0D;IAC1D,MAAM,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACxC,OAAO,IAAI,KAAK,EAAE,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAA;AACvD,CAAC;AAED,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,MAAM,UAAU,QAAQ,CAAC,KAAgB;IACvC,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,CAAA;AACtC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAgB;IACzC,OAAO,KAAK,CAAC,UAAU,KAAK,UAAU,CAAA;AACxC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAgB;IAC3C,OAAO,KAAK,CAAC,UAAU,KAAK,KAAK,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAgB;IACzC,OAAO,KAAK,CAAC,UAAU,KAAK,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,CAAA;AACtE,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAgB,EAAE,KAAY;IACpD,oDAAoD;IACpD,IAAI,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QACrE,OAAO,IAAI,CAAA;IACb,CAAC;IAED,yCAAyC;IACzC,IAAI,KAAK,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,KAA2B,CAAA;QAC1D,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,CAAA;IACpD,CAAC;IAED,6EAA6E;IAC7E,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE,OAA6B,CAAA;IAC9D,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,YAAY,CAAA;AACxD,CAAC"}
@@ -0,0 +1,153 @@
1
+ /**
2
+ * ThingDO - Heterogeneous Multi-Type Container
3
+ *
4
+ * Unlike Collection<T> which holds a single type (homogeneous),
5
+ * ThingDO can hold multiple types (heterogeneous).
6
+ *
7
+ * Key differences:
8
+ * - Collection<T>: homogeneous, $id = ns/id, itemType = type URL
9
+ * - ThingDO: heterogeneous, $id = ns/type/id, no itemType
10
+ */
11
+ // ============================================================================
12
+ // TYPE CONSTANTS
13
+ // ============================================================================
14
+ /**
15
+ * DO type discriminator for heterogeneous containers
16
+ */
17
+ export const THING_DO_TYPE = 'https://schema.org.ai/Thing';
18
+ /**
19
+ * DO type discriminator for homogeneous containers
20
+ */
21
+ export const COLLECTION_TYPE = 'https://schema.org.ai/Collection';
22
+ // ============================================================================
23
+ // TYPE GUARDS
24
+ // ============================================================================
25
+ /**
26
+ * Check if an object is a heterogeneous container (ThingDO)
27
+ *
28
+ * A heterogeneous container has:
29
+ * - $type = 'https://schema.org.ai/Thing'
30
+ * - no itemType property
31
+ */
32
+ export function isHeterogeneousContainer(obj) {
33
+ if (!obj || typeof obj !== 'object') {
34
+ return false;
35
+ }
36
+ const candidate = obj;
37
+ // Must have $type = THING_DO_TYPE
38
+ if (candidate.$type !== THING_DO_TYPE) {
39
+ return false;
40
+ }
41
+ // Must NOT have itemType property (heterogeneous = no single type)
42
+ if ('itemType' in candidate && candidate.itemType !== undefined) {
43
+ return false;
44
+ }
45
+ return true;
46
+ }
47
+ // ============================================================================
48
+ // FACTORY FUNCTION
49
+ // ============================================================================
50
+ /**
51
+ * Create a HeterogeneousThingDO instance
52
+ *
53
+ * This is a minimal implementation for making tests pass.
54
+ * In production, this would integrate with the DO base class.
55
+ */
56
+ export function createThingDO(state, env) {
57
+ // Internal storage for items: Map<`${type}/${id}`, Thing>
58
+ const items = new Map();
59
+ // Namespace - will be set externally in tests
60
+ let ns = '';
61
+ const thingDO = {
62
+ $type: THING_DO_TYPE,
63
+ get ns() {
64
+ return ns;
65
+ },
66
+ set ns(value) {
67
+ ns = value;
68
+ },
69
+ buildItemId(type, id) {
70
+ return `${ns}/${type}/${id}`;
71
+ },
72
+ async get(type, id) {
73
+ const key = `${type}/${id}`;
74
+ return items.get(key) ?? null;
75
+ },
76
+ async create(type, id, data) {
77
+ const key = `${type}/${id}`;
78
+ const $id = `${ns}/${type}/${id}`;
79
+ const $type = `${ns}/${type}`;
80
+ const thing = {
81
+ ...data,
82
+ $id,
83
+ $type,
84
+ createdAt: data.createdAt ?? new Date(),
85
+ updatedAt: data.updatedAt ?? new Date(),
86
+ };
87
+ items.set(key, thing);
88
+ return thing;
89
+ },
90
+ async update(type, id, data) {
91
+ const key = `${type}/${id}`;
92
+ const existing = items.get(key);
93
+ if (!existing) {
94
+ return null;
95
+ }
96
+ const updated = {
97
+ ...existing,
98
+ ...data,
99
+ $id: existing.$id,
100
+ $type: existing.$type,
101
+ updatedAt: new Date(),
102
+ };
103
+ items.set(key, updated);
104
+ return updated;
105
+ },
106
+ async delete(type, id) {
107
+ const key = `${type}/${id}`;
108
+ items.delete(key);
109
+ },
110
+ async list(type) {
111
+ const result = [];
112
+ const prefix = `${type}/`;
113
+ for (const [key, thing] of items) {
114
+ if (key.startsWith(prefix)) {
115
+ result.push(thing);
116
+ }
117
+ }
118
+ return result;
119
+ },
120
+ collection(type) {
121
+ return {
122
+ get: async (id) => {
123
+ return (await thingDO.get(type, id));
124
+ },
125
+ list: async () => {
126
+ return (await thingDO.list(type));
127
+ },
128
+ find: async (query) => {
129
+ const all = await thingDO.list(type);
130
+ return all.filter((item) => {
131
+ for (const [key, value] of Object.entries(query)) {
132
+ if (item[key] !== value) {
133
+ return false;
134
+ }
135
+ }
136
+ return true;
137
+ });
138
+ },
139
+ };
140
+ },
141
+ };
142
+ // Allow ns to be set externally
143
+ Object.defineProperty(thingDO, 'ns', {
144
+ get: () => ns,
145
+ set: (value) => {
146
+ ns = value;
147
+ },
148
+ enumerable: true,
149
+ configurable: true,
150
+ });
151
+ return thingDO;
152
+ }
153
+ //# sourceMappingURL=ThingDO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThingDO.js","sourceRoot":"","sources":["../../types/ThingDO.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,6BAAsC,CAAA;AAEnE;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,kCAA2C,CAAA;AAuH1E,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CAAC,GAAY;IACnD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,SAAS,GAAG,GAA8B,CAAA;IAEhD,kCAAkC;IAClC,IAAI,SAAS,CAAC,KAAK,KAAK,aAAa,EAAE,CAAC;QACtC,OAAO,KAAK,CAAA;IACd,CAAC;IAED,mEAAmE;IACnE,IAAI,UAAU,IAAI,SAAS,IAAI,SAAS,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAChE,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAyB,EACzB,GAAY;IAEZ,0DAA0D;IAC1D,MAAM,KAAK,GAAG,IAAI,GAAG,EAAiB,CAAA;IAEtC,8CAA8C;IAC9C,IAAI,EAAE,GAAG,EAAE,CAAA;IAEX,MAAM,OAAO,GAAyB;QACpC,KAAK,EAAE,aAAa;QAEpB,IAAI,EAAE;YACJ,OAAO,EAAE,CAAA;QACX,CAAC;QAED,IAAI,EAAE,CAAC,KAAa;YAClB,EAAE,GAAG,KAAK,CAAA;QACZ,CAAC;QAED,WAAW,CAAC,IAAY,EAAE,EAAU;YAClC,OAAO,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,CAAA;QAC9B,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,IAAY,EAAE,EAAU;YAChC,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,CAAA;YAC3B,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAA;QAC/B,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,EAAU,EAAE,IAAwB;YAC7D,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,CAAA;YAC3B,MAAM,GAAG,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,CAAA;YACjC,MAAM,KAAK,GAAG,GAAG,EAAE,IAAI,IAAI,EAAE,CAAA;YAE7B,MAAM,KAAK,GAAU;gBACnB,GAAG,IAAI;gBACP,GAAG;gBACH,KAAK;gBACL,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE;gBACvC,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE;aAC/B,CAAA;YAEV,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;YACrB,OAAO,KAAK,CAAA;QACd,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,EAAU,EAAE,IAAwB;YAC7D,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,CAAA;YAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAE/B,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,IAAI,CAAA;YACb,CAAC;YAED,MAAM,OAAO,GAAU;gBACrB,GAAG,QAAQ;gBACX,GAAG,IAAI;gBACP,GAAG,EAAE,QAAQ,CAAC,GAAG;gBACjB,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,SAAS,EAAE,IAAI,IAAI,EAAE;aACb,CAAA;YAEV,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YACvB,OAAO,OAAO,CAAA;QAChB,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,EAAU;YACnC,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,CAAA;YAC3B,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACnB,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,IAAY;YACrB,MAAM,MAAM,GAAY,EAAE,CAAA;YAC1B,MAAM,MAAM,GAAG,GAAG,IAAI,GAAG,CAAA;YAEzB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;gBACjC,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACpB,CAAC;YACH,CAAC;YAED,OAAO,MAAM,CAAA;QACf,CAAC;QAED,UAAU,CAAkB,IAAY;YACtC,OAAO;gBACL,GAAG,EAAE,KAAK,EAAE,EAAU,EAAqB,EAAE;oBAC3C,OAAO,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAa,CAAA;gBAClD,CAAC;gBAED,IAAI,EAAE,KAAK,IAAkB,EAAE;oBAC7B,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAQ,CAAA;gBAC1C,CAAC;gBAED,IAAI,EAAE,KAAK,EAAE,KAA8B,EAAgB,EAAE;oBAC3D,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBACpC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;wBACzB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;4BACjD,IAAK,IAA2C,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;gCAChE,OAAO,KAAK,CAAA;4BACd,CAAC;wBACH,CAAC;wBACD,OAAO,IAAI,CAAA;oBACb,CAAC,CAAQ,CAAA;gBACX,CAAC;aACF,CAAA;QACH,CAAC;KACsB,CAAA;IAEzB,gCAAgC;IAChC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE;QACnC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE;QACb,GAAG,EAAE,CAAC,KAAa,EAAE,EAAE;YACrB,EAAE,GAAG,KAAK,CAAA;QACZ,CAAC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACnB,CAAC,CAAA;IAEF,OAAO,OAAO,CAAA;AAChB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Things.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Things.js","sourceRoot":"","sources":["../../types/Things.ts"],"names":[],"mappings":""}
@@ -0,0 +1,119 @@
1
+ // ============================================================================
2
+ // VERB - Predicate registry entry
3
+ // ============================================================================
4
+ // ============================================================================
5
+ // STANDARD VERBS
6
+ // ============================================================================
7
+ export const StandardVerbs = {
8
+ create: {
9
+ verb: 'create',
10
+ activity: 'creating',
11
+ event: 'created',
12
+ inverse: 'delete',
13
+ },
14
+ update: {
15
+ verb: 'update',
16
+ activity: 'updating',
17
+ event: 'updated',
18
+ },
19
+ delete: {
20
+ verb: 'delete',
21
+ activity: 'deleting',
22
+ event: 'deleted',
23
+ inverse: 'create',
24
+ },
25
+ assign: {
26
+ verb: 'assign',
27
+ activity: 'assigning',
28
+ event: 'assigned',
29
+ inverse: 'unassign',
30
+ },
31
+ unassign: {
32
+ verb: 'unassign',
33
+ activity: 'unassigning',
34
+ event: 'unassigned',
35
+ inverse: 'assign',
36
+ },
37
+ publish: {
38
+ verb: 'publish',
39
+ activity: 'publishing',
40
+ event: 'published',
41
+ inverse: 'unpublish',
42
+ },
43
+ archive: {
44
+ verb: 'archive',
45
+ activity: 'archiving',
46
+ event: 'archived',
47
+ inverse: 'unarchive',
48
+ },
49
+ approve: {
50
+ verb: 'approve',
51
+ activity: 'approving',
52
+ event: 'approved',
53
+ inverse: 'reject',
54
+ },
55
+ reject: {
56
+ verb: 'reject',
57
+ activity: 'rejecting',
58
+ event: 'rejected',
59
+ inverse: 'approve',
60
+ },
61
+ complete: {
62
+ verb: 'complete',
63
+ activity: 'completing',
64
+ event: 'completed',
65
+ inverse: 'reopen',
66
+ },
67
+ start: {
68
+ verb: 'start',
69
+ activity: 'starting',
70
+ event: 'started',
71
+ inverse: 'stop',
72
+ },
73
+ stop: {
74
+ verb: 'stop',
75
+ activity: 'stopping',
76
+ event: 'stopped',
77
+ inverse: 'start',
78
+ },
79
+ };
80
+ // ============================================================================
81
+ // HELPER: Get derived forms
82
+ // ============================================================================
83
+ export function getVerbForms(verb) {
84
+ const event = verb.event || verb.verb + 'ed';
85
+ return {
86
+ ...verb,
87
+ event,
88
+ by: event + 'By',
89
+ at: event + 'At',
90
+ in: event + 'In',
91
+ };
92
+ }
93
+ // ============================================================================
94
+ // HELPER: Conjugate verb (simple rules)
95
+ // ============================================================================
96
+ export function conjugate(verb) {
97
+ // Simple English conjugation rules
98
+ // This is a fallback - prefer explicit definitions
99
+ let activity;
100
+ let event;
101
+ if (verb.endsWith('e')) {
102
+ activity = verb + 'ing';
103
+ event = verb + 'd';
104
+ }
105
+ else if (verb.endsWith('y')) {
106
+ activity = verb.slice(0, -1) + 'ying';
107
+ event = verb.slice(0, -1) + 'ied';
108
+ }
109
+ else {
110
+ activity = verb + 'ing';
111
+ event = verb + 'ed';
112
+ }
113
+ return {
114
+ verb,
115
+ activity,
116
+ event,
117
+ };
118
+ }
119
+ //# sourceMappingURL=Verb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Verb.js","sourceRoot":"","sources":["../../types/Verb.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Type guard to check if a string is a valid registered noun
3
+ *
4
+ * @example
5
+ * ```typescript
6
+ * const maybeNoun: string = 'Customer'
7
+ * if (isValidNoun(maybeNoun)) {
8
+ * // maybeNoun is now typed as keyof NounRegistry
9
+ * $[maybeNoun](id) // type-safe access
10
+ * }
11
+ * ```
12
+ */
13
+ export function isValidNoun(noun) {
14
+ // Runtime check - can be enhanced with actual registry lookup
15
+ const registeredNouns = ['Customer', 'Invoice', 'Order', 'Payment', 'Startup', 'User'];
16
+ return registeredNouns.includes(noun);
17
+ }
18
+ /**
19
+ * Safely access a noun from WorkflowContext with type narrowing
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * const customerAccessor = getNoun($, 'Customer')
24
+ * const proxy = customerAccessor('cust-123')
25
+ * ```
26
+ */
27
+ export function getNoun(ctx, noun) {
28
+ return ctx[noun];
29
+ }
30
+ /**
31
+ * Error thrown when a capability is not available
32
+ */
33
+ export class CapabilityError extends Error {
34
+ capability;
35
+ reason;
36
+ constructor(capability, reason, message) {
37
+ super(message ?? `Capability '${capability}' is ${reason.replace('_', ' ')}`);
38
+ this.capability = capability;
39
+ this.reason = reason;
40
+ this.name = 'CapabilityError';
41
+ }
42
+ }
43
+ // ============================================================================
44
+ // TYPE GUARDS FOR CAPABILITY CHECKING
45
+ // ============================================================================
46
+ /**
47
+ * Check if context has filesystem capability
48
+ */
49
+ export function hasFs(ctx) {
50
+ return ctx != null && typeof ctx.fs === 'object' && ctx.fs !== null;
51
+ }
52
+ /**
53
+ * Check if context has git capability
54
+ */
55
+ export function hasGit(ctx) {
56
+ return ctx != null && typeof ctx.git === 'object' && ctx.git !== null;
57
+ }
58
+ /**
59
+ * Check if context has bash capability
60
+ */
61
+ export function hasBash(ctx) {
62
+ return ctx != null && typeof ctx.bash === 'object' && ctx.bash !== null;
63
+ }
64
+ /**
65
+ * Check if context has rate limiting capability
66
+ */
67
+ export function hasRateLimit(ctx) {
68
+ return ctx != null && typeof ctx.rateLimit === 'object' && ctx.rateLimit !== null;
69
+ }
70
+ //# sourceMappingURL=WorkflowContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowContext.js","sourceRoot":"","sources":["../../types/WorkflowContext.ts"],"names":[],"mappings":"AAgDA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,WAAW,CACzB,IAAY;IAEZ,8DAA8D;IAC9D,MAAM,eAAe,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;IACtF,OAAO,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,OAAO,CACrB,GAAoB,EACpB,IAAO;IAEP,OAAO,GAAG,CAAC,IAAI,CAAgC,CAAA;AACjD,CAAC;AA+iBD;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAE/B;IACA;IAFT,YACS,UAAiC,EACjC,MAA6D,EACpE,OAAgB;QAEhB,KAAK,CAAC,OAAO,IAAI,eAAe,UAAU,QAAQ,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;QAJtE,eAAU,GAAV,UAAU,CAAuB;QACjC,WAAM,GAAN,MAAM,CAAuD;QAIpE,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAA;IAC/B,CAAC;CACF;AA0BD,+EAA+E;AAC/E,sCAAsC;AACtC,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,GAAoB;IACxC,OAAO,GAAG,IAAI,IAAI,IAAI,OAAQ,GAAc,CAAC,EAAE,KAAK,QAAQ,IAAK,GAAc,CAAC,EAAE,KAAK,IAAI,CAAA;AAC7F,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,GAAoB;IACzC,OAAO,GAAG,IAAI,IAAI,IAAI,OAAQ,GAAe,CAAC,GAAG,KAAK,QAAQ,IAAK,GAAe,CAAC,GAAG,KAAK,IAAI,CAAA;AACjG,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,GAAoB;IAC1C,OAAO,GAAG,IAAI,IAAI,IAAI,OAAQ,GAAgB,CAAC,IAAI,KAAK,QAAQ,IAAK,GAAgB,CAAC,IAAI,KAAK,IAAI,CAAA;AACrG,CAAC;AAsED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,GAAoB;IAC/C,OAAO,GAAG,IAAI,IAAI,IAAI,OAAQ,GAAqB,CAAC,SAAS,KAAK,QAAQ,IAAK,GAAqB,CAAC,SAAS,KAAK,IAAI,CAAA;AACzH,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Analytics API Types
3
+ *
4
+ * Type definitions for the unified analytics API including:
5
+ * - Vector search
6
+ * - Point lookups (Iceberg)
7
+ * - SQL queries (browser analytics)
8
+ *
9
+ * @module types/analytics-api
10
+ * @see docs/plans/unified-analytics-architecture.md
11
+ */
12
+ export {};
13
+ //# sourceMappingURL=analytics-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics-api.js","sourceRoot":"","sources":["../../types/analytics-api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}