@k2b/cloud 0.6.0-rc.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 (540) hide show
  1. package/README.md +98 -0
  2. package/package.json +128 -0
  3. package/public/logo.svg +1 -0
  4. package/scripts/app-favicon.test.ts +49 -0
  5. package/scripts/app-favicon.ts +51 -0
  6. package/scripts/build.ts +205 -0
  7. package/scripts/preload.ts +164 -0
  8. package/scripts/sync-recovery-smoke.ts +200 -0
  9. package/src/_internal/app-favicon.ts +2 -0
  10. package/src/_internal/app-presentation.ts +61 -0
  11. package/src/_internal/app-workspace-state.ts +24 -0
  12. package/src/_internal/bounded-json.ts +47 -0
  13. package/src/_internal/build-metadata.ts +9 -0
  14. package/src/_internal/capabilities.ts +1118 -0
  15. package/src/_internal/define-app.ts +801 -0
  16. package/src/_internal/heartbeat.ts +167 -0
  17. package/src/_internal/help-catalog.ts +241 -0
  18. package/src/_internal/help.ts +95 -0
  19. package/src/_internal/nats-connection.ts +34 -0
  20. package/src/_internal/page-responses.ts +40 -0
  21. package/src/_internal/process-sync.ts +117 -0
  22. package/src/_internal/readiness.ts +3 -0
  23. package/src/_internal/registry-validation.ts +136 -0
  24. package/src/_internal/registry-watch.ts +52 -0
  25. package/src/_internal/registry.ts +338 -0
  26. package/src/_internal/runtime-compatibility.ts +64 -0
  27. package/src/_internal/runtime-context.ts +84 -0
  28. package/src/_internal/runtime-watcher.ts +78 -0
  29. package/src/_internal/static-assets.ts +86 -0
  30. package/src/_internal/status-preserving-ssr.ts +49 -0
  31. package/src/access/PermissionEditor.tsx +486 -0
  32. package/src/access/ResourceApiKeys.tsx +271 -0
  33. package/src/access/messages.ts +121 -0
  34. package/src/access/ui.ts +16 -0
  35. package/src/account/Avatar.tsx +28 -0
  36. package/src/account/EntitySearch.tsx +363 -0
  37. package/src/account/avatar-upload-dialog.tsx +197 -0
  38. package/src/account/avatar-upload.ts +149 -0
  39. package/src/account/ui.ts +3 -0
  40. package/src/ai/admin.ts +47 -0
  41. package/src/ai/approval-routes.ts +130 -0
  42. package/src/ai/approvals.ts +139 -0
  43. package/src/ai/assistant-models.ts +61 -0
  44. package/src/ai/attachments.ts +40 -0
  45. package/src/ai/browser.ts +92 -0
  46. package/src/ai/capabilities.ts +714 -0
  47. package/src/ai/capability-execution.ts +151 -0
  48. package/src/ai/chat/blocks.render.test.tsx +1108 -0
  49. package/src/ai/chat/blocks.tsx +730 -0
  50. package/src/ai/chat/builtin-tools.tsx +428 -0
  51. package/src/ai/chat/capability-table.tsx +87 -0
  52. package/src/ai/chat/composer-adapter.ts +169 -0
  53. package/src/ai/chat/file-tools.tsx +81 -0
  54. package/src/ai/chat/message-actions.tsx +370 -0
  55. package/src/ai/chat/message-utils.ts +479 -0
  56. package/src/ai/chat/messages.ts +43 -0
  57. package/src/ai/chat/presentation.tsx +395 -0
  58. package/src/ai/chat/primitives.tsx +3 -0
  59. package/src/ai/chat/tool-disclosure.tsx +41 -0
  60. package/src/ai/chat/turn-navigator-utils.ts +28 -0
  61. package/src/ai/chat/turn-navigator.tsx +164 -0
  62. package/src/ai/chat/user-message.tsx +149 -0
  63. package/src/ai/chat/visual-tools.tsx +435 -0
  64. package/src/ai/chat/web-tools.tsx +202 -0
  65. package/src/ai/chat-task-contracts.ts +113 -0
  66. package/src/ai/chat-tasks.ts +952 -0
  67. package/src/ai/client/controller.ts +1211 -0
  68. package/src/ai/client/file-source.ts +95 -0
  69. package/src/ai/client/live-connection.ts +140 -0
  70. package/src/ai/client/projection.ts +178 -0
  71. package/src/ai/client/transport.ts +111 -0
  72. package/src/ai/compaction.ts +182 -0
  73. package/src/ai/credentials.ts +124 -0
  74. package/src/ai/default-tool-contracts.ts +108 -0
  75. package/src/ai/default-tools.ts +127 -0
  76. package/src/ai/enrich.ts +280 -0
  77. package/src/ai/executor.ts +1624 -0
  78. package/src/ai/fetch-file-tool.ts +313 -0
  79. package/src/ai/file-context.ts +92 -0
  80. package/src/ai/file-media-type.ts +28 -0
  81. package/src/ai/file-mount.ts +16 -0
  82. package/src/ai/file-tools.ts +566 -0
  83. package/src/ai/files-store.ts +390 -0
  84. package/src/ai/firecrawl-tools.ts +305 -0
  85. package/src/ai/grids-skill.ts +126 -0
  86. package/src/ai/http.ts +265 -0
  87. package/src/ai/index.ts +337 -0
  88. package/src/ai/kit-skill.ts +22 -0
  89. package/src/ai/limits.ts +5 -0
  90. package/src/ai/live-events.ts +289 -0
  91. package/src/ai/live-messages.ts +45 -0
  92. package/src/ai/live-outbox.ts +102 -0
  93. package/src/ai/live-routes.ts +412 -0
  94. package/src/ai/live.ts +2 -0
  95. package/src/ai/maintenance.ts +302 -0
  96. package/src/ai/markdown-pdf-tool.ts +95 -0
  97. package/src/ai/memories.ts +605 -0
  98. package/src/ai/memory-learning-runs.ts +222 -0
  99. package/src/ai/memory-learning.ts +619 -0
  100. package/src/ai/memory-tool.ts +120 -0
  101. package/src/ai/memory-workflow-evidence.ts +158 -0
  102. package/src/ai/migrate.ts +2082 -0
  103. package/src/ai/model-access-migrate.ts +30 -0
  104. package/src/ai/model-access.ts +191 -0
  105. package/src/ai/personal-agent.ts +6 -0
  106. package/src/ai/prefs.ts +72 -0
  107. package/src/ai/project-tool.ts +94 -0
  108. package/src/ai/projects-routes.ts +277 -0
  109. package/src/ai/projects.ts +902 -0
  110. package/src/ai/protocol.ts +279 -0
  111. package/src/ai/provider.ts +73 -0
  112. package/src/ai/public-projection.ts +25 -0
  113. package/src/ai/resource-markers.ts +31 -0
  114. package/src/ai/resource-refs.ts +70 -0
  115. package/src/ai/routes.ts +1131 -0
  116. package/src/ai/runtime-tools.ts +39 -0
  117. package/src/ai/runtime.ts +544 -0
  118. package/src/ai/settings.ts +529 -0
  119. package/src/ai/short-id.ts +45 -0
  120. package/src/ai/skill-catalog.ts +73 -0
  121. package/src/ai/skill-format.ts +145 -0
  122. package/src/ai/skill-seeds.ts +430 -0
  123. package/src/ai/skill-tool.ts +81 -0
  124. package/src/ai/skills-routes.ts +143 -0
  125. package/src/ai/skills.ts +934 -0
  126. package/src/ai/solid.ts +27 -0
  127. package/src/ai/store.ts +3113 -0
  128. package/src/ai/stream.ts +308 -0
  129. package/src/ai/structured-runs.ts +66 -0
  130. package/src/ai/structured.ts +186 -0
  131. package/src/ai/system-prompt.ts +170 -0
  132. package/src/ai/task-prompt.ts +22 -0
  133. package/src/ai/timeline.ts +148 -0
  134. package/src/ai/tool-audit.ts +177 -0
  135. package/src/ai/tool-result-budget.ts +16 -0
  136. package/src/ai/tools.ts +155 -0
  137. package/src/ai/types.ts +967 -0
  138. package/src/ai/ui.tsx +39 -0
  139. package/src/ai/usage-migrate.ts +81 -0
  140. package/src/ai/usage.ts +315 -0
  141. package/src/ai/validate.ts +54 -0
  142. package/src/ai/vision-tool.ts +79 -0
  143. package/src/api/accounts-entities.ts +174 -0
  144. package/src/api/admin-ai-projects.ts +74 -0
  145. package/src/api/admin-ai-skills.ts +76 -0
  146. package/src/api/admin-ai-usage.ts +42 -0
  147. package/src/api/admin-core-settings.ts +508 -0
  148. package/src/api/admin-identity.ts +148 -0
  149. package/src/api/admin-lifecycle.ts +206 -0
  150. package/src/api/admin-linux-identities.ts +66 -0
  151. package/src/api/announcements.ts +131 -0
  152. package/src/api/app-approval.ts +129 -0
  153. package/src/api/apps.ts +51 -0
  154. package/src/api/auth/schemas.ts +54 -0
  155. package/src/api/auth.ts +370 -0
  156. package/src/api/capabilities.ts +658 -0
  157. package/src/api/help-messages.ts +19 -0
  158. package/src/api/help.ts +78 -0
  159. package/src/api/index.ts +108 -0
  160. package/src/api/mcp.ts +744 -0
  161. package/src/api/me-rail.ts +45 -0
  162. package/src/api/me.ts +753 -0
  163. package/src/api/search/schemas.ts +79 -0
  164. package/src/api/search.bench.ts +185 -0
  165. package/src/api/search.ts +407 -0
  166. package/src/api/sync-ops.ts +79 -0
  167. package/src/api/widgets.ts +143 -0
  168. package/src/browser/CloudResourceSearch.behavior.test.tsx +74 -0
  169. package/src/browser/CloudResourceSearch.tsx +791 -0
  170. package/src/browser/app-approval-vault.ts +305 -0
  171. package/src/browser/app-approval.ts +234 -0
  172. package/src/browser/live-websocket.ts +268 -0
  173. package/src/browser/locale-preference.ts +25 -0
  174. package/src/browser/notification-target.ts +27 -0
  175. package/src/browser/notification-timeout.ts +14 -0
  176. package/src/browser/notifications.ts +181 -0
  177. package/src/browser/resource-clipboard.ts +70 -0
  178. package/src/browser/resource-picker.tsx +39 -0
  179. package/src/browser/resource-search-messages.ts +55 -0
  180. package/src/browser/resource-search.ts +27 -0
  181. package/src/capabilities/client.ts +149 -0
  182. package/src/capabilities/response.ts +39 -0
  183. package/src/capabilities/server.ts +215 -0
  184. package/src/capabilities/signals.ts +4 -0
  185. package/src/capabilities/testing.ts +12 -0
  186. package/src/capabilities/types.ts +32 -0
  187. package/src/cli/access.ts +499 -0
  188. package/src/cli/account.ts +382 -0
  189. package/src/cli/admin/account-administration.ts +45 -0
  190. package/src/cli/admin/account-categories.ts +49 -0
  191. package/src/cli/admin/ai-usage.ts +118 -0
  192. package/src/cli/admin/app-sign-in.ts +49 -0
  193. package/src/cli/admin/data.ts +343 -0
  194. package/src/cli/admin/documentation.ts +34 -0
  195. package/src/cli/admin/gateway.ts +155 -0
  196. package/src/cli/admin/index.ts +61 -0
  197. package/src/cli/admin/instance.ts +250 -0
  198. package/src/cli/admin/jobs.ts +223 -0
  199. package/src/cli/admin/legal.ts +122 -0
  200. package/src/cli/admin/linux.ts +53 -0
  201. package/src/cli/admin/logs.ts +324 -0
  202. package/src/cli/admin/metrics.ts +142 -0
  203. package/src/cli/admin/nats.ts +167 -0
  204. package/src/cli/admin/notifications.ts +516 -0
  205. package/src/cli/admin/shared.ts +113 -0
  206. package/src/cli/admin/sync.ts +188 -0
  207. package/src/cli/admin/telemetry.ts +314 -0
  208. package/src/cli/admin/webhooks.ts +222 -0
  209. package/src/cli/admin/workflows.ts +367 -0
  210. package/src/cli/apps.ts +40 -0
  211. package/src/cli/capabilities.ts +239 -0
  212. package/src/cli/commands.ts +604 -0
  213. package/src/cli/index.ts +61 -0
  214. package/src/cli/locale.ts +31 -0
  215. package/src/cli/output.ts +58 -0
  216. package/src/clients/core.ts +20 -0
  217. package/src/config/env.ts +54 -0
  218. package/src/config/index.ts +6 -0
  219. package/src/contracts/account-categories.ts +62 -0
  220. package/src/contracts/announcements.ts +121 -0
  221. package/src/contracts/app-approval.ts +197 -0
  222. package/src/contracts/app.ts +162 -0
  223. package/src/contracts/capabilities.ts +484 -0
  224. package/src/contracts/index.ts +14 -0
  225. package/src/contracts/notification-live.ts +66 -0
  226. package/src/contracts/notification-types.ts +235 -0
  227. package/src/contracts/posix.ts +69 -0
  228. package/src/contracts/profile.ts +85 -0
  229. package/src/contracts/rail-preferences.ts +53 -0
  230. package/src/contracts/registry.ts +110 -0
  231. package/src/contracts/resource-clipboard.ts +33 -0
  232. package/src/contracts/settings-types.ts +98 -0
  233. package/src/contracts/shared.ts +408 -0
  234. package/src/contracts/user-notifications.ts +101 -0
  235. package/src/contracts/widgets.ts +183 -0
  236. package/src/desktop/index.ts +704 -0
  237. package/src/desktop/solid.tsx +938 -0
  238. package/src/index.ts +58 -0
  239. package/src/server/actor.ts +41 -0
  240. package/src/server/api/index.ts +2 -0
  241. package/src/server/api/respond.ts +96 -0
  242. package/src/server/api-client.ts +54 -0
  243. package/src/server/app-context.ts +39 -0
  244. package/src/server/help.ts +187 -0
  245. package/src/server/index.ts +89 -0
  246. package/src/server/locale.ts +55 -0
  247. package/src/server/middleware/auth.ts +386 -0
  248. package/src/server/middleware/index.ts +28 -0
  249. package/src/server/middleware/invocation.ts +55 -0
  250. package/src/server/middleware/middleware.ts +65 -0
  251. package/src/server/middleware/openapi.ts +126 -0
  252. package/src/server/middleware/rate-limit.ts +125 -0
  253. package/src/server/middleware/request-logger.ts +41 -0
  254. package/src/server/middleware/route-template.ts +46 -0
  255. package/src/server/middleware/runtime.ts +22 -0
  256. package/src/server/middleware/settings.ts +55 -0
  257. package/src/server/middleware/validator.ts +49 -0
  258. package/src/server/middleware/workload.ts +22 -0
  259. package/src/server/ratelimit.ts +151 -0
  260. package/src/server/request-cookies.ts +18 -0
  261. package/src/server/services/access.ts +644 -0
  262. package/src/server/services/freeipa/client.ts +137 -0
  263. package/src/server/services/freeipa/index.ts +9 -0
  264. package/src/server/services/freeipa/session.ts +123 -0
  265. package/src/server/services/freeipa/test-certificates.ts +44 -0
  266. package/src/server/services/freeipa/tls.ts +44 -0
  267. package/src/server/services/freeipa/transport.ts +116 -0
  268. package/src/server/services/freeipa/util.ts +59 -0
  269. package/src/server/services/geo.ts +198 -0
  270. package/src/server/services/index.ts +48 -0
  271. package/src/server/services/pagination.ts +22 -0
  272. package/src/server/services/services.ts +13 -0
  273. package/src/server/time.ts +33 -0
  274. package/src/services/account-category-policy.ts +51 -0
  275. package/src/services/account-lifecycle/audit.ts +41 -0
  276. package/src/services/account-lifecycle/index.ts +940 -0
  277. package/src/services/account-lifecycle/ipa-backfill.ts +152 -0
  278. package/src/services/account-lifecycle/notification-sender.ts +13 -0
  279. package/src/services/account-lifecycle/scheduler.ts +506 -0
  280. package/src/services/account-model.ts +22 -0
  281. package/src/services/accounts/app.ts +1671 -0
  282. package/src/services/accounts/authz.ts +44 -0
  283. package/src/services/accounts/avatar.ts +120 -0
  284. package/src/services/accounts/base-group.ts +11 -0
  285. package/src/services/accounts/base-user.ts +46 -0
  286. package/src/services/accounts/duplicate-emails.ts +82 -0
  287. package/src/services/accounts/entities.ts +622 -0
  288. package/src/services/accounts/group-sql.ts +106 -0
  289. package/src/services/accounts/groups.ts +272 -0
  290. package/src/services/accounts/index.ts +14 -0
  291. package/src/services/accounts/ipa-data.ts +66 -0
  292. package/src/services/accounts/lifecycle.ts +2 -0
  293. package/src/services/accounts/local-groups.ts +499 -0
  294. package/src/services/accounts/model.ts +129 -0
  295. package/src/services/accounts/notification-sender.ts +31 -0
  296. package/src/services/accounts/posix.ts +386 -0
  297. package/src/services/accounts/request-policy.ts +11 -0
  298. package/src/services/accounts/switching.ts +126 -0
  299. package/src/services/accounts/users.ts +745 -0
  300. package/src/services/announcements/index.ts +224 -0
  301. package/src/services/app-approval.ts +498 -0
  302. package/src/services/audit/index.ts +438 -0
  303. package/src/services/auth-flows/index.ts +15 -0
  304. package/src/services/auth-flows/ipa.ts +197 -0
  305. package/src/services/auth-flows/magic-link.ts +185 -0
  306. package/src/services/auth-flows/notification-sender.ts +10 -0
  307. package/src/services/auth-flows/password-reset.ts +268 -0
  308. package/src/services/auth-flows/proxy-return.ts +49 -0
  309. package/src/services/document-extraction.ts +148 -0
  310. package/src/services/freeipa-config.ts +179 -0
  311. package/src/services/gateway.ts +186 -0
  312. package/src/services/identity/constants.ts +18 -0
  313. package/src/services/identity/index.ts +52 -0
  314. package/src/services/identity/invocation-actor.ts +120 -0
  315. package/src/services/identity/invocation-authority.ts +53 -0
  316. package/src/services/identity/invocation-operations.ts +15 -0
  317. package/src/services/identity/invocation-token.ts +276 -0
  318. package/src/services/identity/key-config.ts +41 -0
  319. package/src/services/identity/key-ring.ts +530 -0
  320. package/src/services/identity/metrics.ts +29 -0
  321. package/src/services/identity/routes.ts +18 -0
  322. package/src/services/identity/runtime-config.ts +88 -0
  323. package/src/services/identity/session-token.ts +152 -0
  324. package/src/services/identity/signer-refresh.ts +44 -0
  325. package/src/services/identity/workload-auth.ts +64 -0
  326. package/src/services/index.ts +187 -0
  327. package/src/services/ipa/auth.ts +216 -0
  328. package/src/services/ipa/connection.ts +57 -0
  329. package/src/services/ipa/effective-groups.ts +70 -0
  330. package/src/services/ipa/groups.ts +722 -0
  331. package/src/services/ipa/guard.ts +17 -0
  332. package/src/services/ipa/index.ts +17 -0
  333. package/src/services/ipa/posix.ts +19 -0
  334. package/src/services/ipa/profile.ts +132 -0
  335. package/src/services/ipa/runtime.ts +28 -0
  336. package/src/services/ipa/search.ts +154 -0
  337. package/src/services/ipa/service-account.ts +15 -0
  338. package/src/services/ipa/sync-planning.ts +100 -0
  339. package/src/services/ipa/sync.ts +862 -0
  340. package/src/services/ipa/users.ts +806 -0
  341. package/src/services/legal-consent.ts +76 -0
  342. package/src/services/logging/index.ts +477 -0
  343. package/src/services/logging/redaction.ts +20 -0
  344. package/src/services/logging/trace.ts +1231 -0
  345. package/src/services/mandates/index.ts +855 -0
  346. package/src/services/mandates/policy.ts +85 -0
  347. package/src/services/network-security.ts +31 -0
  348. package/src/services/notifications/batches.ts +722 -0
  349. package/src/services/notifications/browser.ts +252 -0
  350. package/src/services/notifications/catalog.ts +113 -0
  351. package/src/services/notifications/channels.ts +104 -0
  352. package/src/services/notifications/dispatcher.ts +139 -0
  353. package/src/services/notifications/email.ts +118 -0
  354. package/src/services/notifications/index.ts +633 -0
  355. package/src/services/notifications/live.ts +50 -0
  356. package/src/services/notifications/observability.ts +407 -0
  357. package/src/services/notifications/platform.ts +421 -0
  358. package/src/services/notifications/runtime.ts +120 -0
  359. package/src/services/notifications/user.ts +248 -0
  360. package/src/services/notifications/web-push-transport.ts +135 -0
  361. package/src/services/oauth-tokens.ts +209 -0
  362. package/src/services/outbox.ts +187 -0
  363. package/src/services/pdf/gotenberg.ts +290 -0
  364. package/src/services/pdf/index.ts +43 -0
  365. package/src/services/pdf/markdown.ts +209 -0
  366. package/src/services/pdf/template-preview.ts +122 -0
  367. package/src/services/postgres.ts +76 -0
  368. package/src/services/providers/index.ts +27 -0
  369. package/src/services/providers/local/auth.ts +51 -0
  370. package/src/services/providers/local/index.ts +4 -0
  371. package/src/services/providers/local/users.ts +263 -0
  372. package/src/services/rail-preferences.ts +27 -0
  373. package/src/services/runtime-lifecycle.ts +191 -0
  374. package/src/services/secrets.ts +10 -0
  375. package/src/services/service-account-credentials.ts +891 -0
  376. package/src/services/service-accounts.ts +184 -0
  377. package/src/services/session/index.ts +236 -0
  378. package/src/services/session/test-fixture.ts +18 -0
  379. package/src/services/session/user.ts +144 -0
  380. package/src/services/settings/api.ts +61 -0
  381. package/src/services/settings/app.ts +86 -0
  382. package/src/services/settings/core-settings.ts +796 -0
  383. package/src/services/settings/crypto.ts +69 -0
  384. package/src/services/settings/defaults.ts +374 -0
  385. package/src/services/settings/index.ts +215 -0
  386. package/src/services/settings/namespace.ts +9 -0
  387. package/src/services/settings/snapshot.ts +49 -0
  388. package/src/services/settings/store.ts +241 -0
  389. package/src/services/settings/templates.ts +4 -0
  390. package/src/services/sync-ops.ts +403 -0
  391. package/src/services/topic-cursor.ts +22 -0
  392. package/src/services/weather/forecast.ts +323 -0
  393. package/src/services/weather/geo.ts +119 -0
  394. package/src/services/weather/index.ts +67 -0
  395. package/src/services/weather/location.ts +24 -0
  396. package/src/services/weather/locations.ts +133 -0
  397. package/src/services/weather/migrate.ts +45 -0
  398. package/src/services/weather/settings.ts +66 -0
  399. package/src/services/weather/short-id.ts +57 -0
  400. package/src/services/weather/types.ts +61 -0
  401. package/src/services/weather/ui.ts +50 -0
  402. package/src/services/webauthn.ts +385 -0
  403. package/src/shared/account-action-notice.ts +70 -0
  404. package/src/shared/account-display.ts +15 -0
  405. package/src/shared/account-session.ts +15 -0
  406. package/src/shared/ai-platform-prompt.ts +134 -0
  407. package/src/shared/ai-usage.ts +49 -0
  408. package/src/shared/app-presentation.ts +48 -0
  409. package/src/shared/app-url.ts +12 -0
  410. package/src/shared/branding.ts +14 -0
  411. package/src/shared/capability-messages.ts +70 -0
  412. package/src/shared/email-html.ts +54 -0
  413. package/src/shared/format.ts +91 -0
  414. package/src/shared/help.ts +68 -0
  415. package/src/shared/icons.ts +400 -0
  416. package/src/shared/index.ts +54 -0
  417. package/src/shared/locale.ts +48 -0
  418. package/src/shared/login-method.ts +44 -0
  419. package/src/shared/markdown/client.ts +130 -0
  420. package/src/shared/markdown/extensions/code.ts +105 -0
  421. package/src/shared/markdown/extensions/guided-help.ts +100 -0
  422. package/src/shared/markdown/extensions/images.ts +79 -0
  423. package/src/shared/markdown/extensions/info-blocks.ts +97 -0
  424. package/src/shared/markdown/extensions/katex.ts +120 -0
  425. package/src/shared/markdown/extensions/links.ts +43 -0
  426. package/src/shared/markdown/extensions/mark.ts +48 -0
  427. package/src/shared/markdown/extensions/sub-sup.ts +60 -0
  428. package/src/shared/markdown/extensions/tables.ts +109 -0
  429. package/src/shared/markdown/extensions/task-list.ts +53 -0
  430. package/src/shared/markdown/formula.ts +1187 -0
  431. package/src/shared/markdown/index.ts +193 -0
  432. package/src/shared/markdown/shared.ts +36 -0
  433. package/src/shared/mock-cover.ts +130 -0
  434. package/src/shared/network-address.ts +106 -0
  435. package/src/shared/redirect.ts +56 -0
  436. package/src/shared/template-rendering.ts +140 -0
  437. package/src/shared/theme.ts +68 -0
  438. package/src/shared/time.ts +13 -0
  439. package/src/ssr/AdminLayout.tsx +53 -0
  440. package/src/ssr/AdminSidebar.tsx +50 -0
  441. package/src/ssr/AppLaunchpad.island.tsx +236 -0
  442. package/src/ssr/AppWorkspaceController.island.tsx +21 -0
  443. package/src/ssr/BrowserNotifications.island.tsx +135 -0
  444. package/src/ssr/GlobalAnnouncements.island.tsx +142 -0
  445. package/src/ssr/GlobalSearchDialog.behavior.test.tsx +96 -0
  446. package/src/ssr/GlobalSearchDialog.tsx +35 -0
  447. package/src/ssr/GlobalSearchHelpDialog.tsx +104 -0
  448. package/src/ssr/GlobalSearchTrigger.island.tsx +55 -0
  449. package/src/ssr/HotkeysHelpRail.island.tsx +55 -0
  450. package/src/ssr/Layout.render.test.tsx +148 -0
  451. package/src/ssr/Layout.tsx +292 -0
  452. package/src/ssr/LayoutBreadcrumbs.island.tsx +44 -0
  453. package/src/ssr/LayoutFooter.tsx +22 -0
  454. package/src/ssr/LayoutHeader.tsx +81 -0
  455. package/src/ssr/LayoutHelp.tsx +869 -0
  456. package/src/ssr/LayoutPreferences.island.tsx +36 -0
  457. package/src/ssr/LayoutRail.tsx +58 -0
  458. package/src/ssr/MinimalLayout.tsx +46 -0
  459. package/src/ssr/PageError.tsx +29 -0
  460. package/src/ssr/ProfilePreferences.island.tsx +92 -0
  461. package/src/ssr/RailApps.island.tsx +61 -0
  462. package/src/ssr/RailEditor.tsx +293 -0
  463. package/src/ssr/RegisteredHelpDocuments.island.tsx +3 -0
  464. package/src/ssr/TimezoneCookie.island.tsx +23 -0
  465. package/src/ssr/admin-active-link.ts +47 -0
  466. package/src/ssr/admin-navigation.ts +78 -0
  467. package/src/ssr/app-appearance.ts +23 -0
  468. package/src/ssr/app-navigation.ts +41 -0
  469. package/src/ssr/help-messages.ts +104 -0
  470. package/src/ssr/index.ts +14 -0
  471. package/src/ssr/islands/SearchBar.island.tsx +80 -0
  472. package/src/ssr/islands/index.ts +16 -0
  473. package/src/ssr/layout-context.ts +17 -0
  474. package/src/ssr/layout-help-markdown.ts +9 -0
  475. package/src/ssr/layout-help-navigation.ts +24 -0
  476. package/src/ssr/layout-help-url.ts +5 -0
  477. package/src/ssr/layout-runtime.ts +22 -0
  478. package/src/ssr/page-error-messages.ts +25 -0
  479. package/src/ssr/platform-messages.ts +135 -0
  480. package/src/ssr/preference-controller.ts +44 -0
  481. package/src/ssr/profile-preferences-messages.ts +29 -0
  482. package/src/ssr/rail-context.ts +21 -0
  483. package/src/ssr/rail-messages.ts +66 -0
  484. package/src/ssr/rail-navigation.ts +60 -0
  485. package/src/ssr/runtime.ts +31 -0
  486. package/src/ssr/url-filter.ts +127 -0
  487. package/src/styles/base-popover.css +36 -0
  488. package/src/styles/effects.css +851 -0
  489. package/src/styles/global.css +268 -0
  490. package/src/styles/input.css +58 -0
  491. package/src/styles/tokens.css +230 -0
  492. package/src/styles/utilities-buttons.css +405 -0
  493. package/src/styles/utilities-data.css +33 -0
  494. package/src/styles/utilities-feedback.css +232 -0
  495. package/src/styles/utilities-layout.css +603 -0
  496. package/src/styles/utilities-markdown-editor.css +525 -0
  497. package/src/styles/utilities-markdown-table.css +234 -0
  498. package/src/styles/utilities-navigation.css +1054 -0
  499. package/src/types/ambient.d.ts +24 -0
  500. package/src/workflows/ai/index.ts +17 -0
  501. package/src/workflows/ai/runtime.ts +286 -0
  502. package/src/workflows/ai/store.ts +314 -0
  503. package/src/workflows/ai/types.ts +111 -0
  504. package/src/workflows/ai-actions.ts +269 -0
  505. package/src/workflows/authoring.ts +88 -0
  506. package/src/workflows/builtins.ts +193 -0
  507. package/src/workflows/contracts.ts +280 -0
  508. package/src/workflows/definition.ts +334 -0
  509. package/src/workflows/editor.ts +113 -0
  510. package/src/workflows/index.ts +71 -0
  511. package/src/workflows/language/binder.ts +45 -0
  512. package/src/workflows/language/canonical.ts +29 -0
  513. package/src/workflows/language/compiler.ts +396 -0
  514. package/src/workflows/language/expressions.ts +34 -0
  515. package/src/workflows/language/index.ts +20 -0
  516. package/src/workflows/language/references.ts +55 -0
  517. package/src/workflows/language/schema.ts +134 -0
  518. package/src/workflows/language/strict-yaml.ts +131 -0
  519. package/src/workflows/manifest.ts +24 -0
  520. package/src/workflows/module.ts +12 -0
  521. package/src/workflows/runtime/coordinator.ts +115 -0
  522. package/src/workflows/runtime/executor.ts +1003 -0
  523. package/src/workflows/runtime/index.ts +60 -0
  524. package/src/workflows/runtime/instant.ts +8 -0
  525. package/src/workflows/runtime/ports.ts +213 -0
  526. package/src/workflows/runtime/schedule.ts +203 -0
  527. package/src/workflows/runtime/trigger.ts +37 -0
  528. package/src/workflows/runtime/wake.ts +13 -0
  529. package/src/workflows/store/actions.ts +438 -0
  530. package/src/workflows/store/budget.ts +145 -0
  531. package/src/workflows/store/definitions.ts +345 -0
  532. package/src/workflows/store/events.ts +383 -0
  533. package/src/workflows/store/index.ts +107 -0
  534. package/src/workflows/store/observability.ts +594 -0
  535. package/src/workflows/store/runs.ts +975 -0
  536. package/src/workflows/store/transaction.ts +23 -0
  537. package/src/workflows/store/worker.ts +439 -0
  538. package/src/workflows/testing/conformance.ts +72 -0
  539. package/src/workflows/testing/index.ts +11 -0
  540. package/src/workflows/testing/process-fixtures.ts +275 -0
@@ -0,0 +1,383 @@
1
+ /**
2
+ * Every run starts from an event.
3
+ *
4
+ * There used to be three ways in, with three durability stories: a direct
5
+ * invocation, a schedule tick, and a trigger delivery. Grids recorded only a
6
+ * `channel` enum, so once a run existed nobody could say what caused it. Here
7
+ * the cause is a row, so "why did this run" is a join rather than a guess, and
8
+ * idempotency, retry and recovery are written once instead of three times.
9
+ *
10
+ * A schedule tick is an event. A button press is an event. An inbound message
11
+ * is an event. Nothing needs its own registration path.
12
+ */
13
+ import { type SQL, sql } from "bun";
14
+ import type { WorkflowJsonValue } from "../contracts";
15
+ import { createWorkflowRun } from "./runs";
16
+ import { withTransaction } from "./transaction";
17
+
18
+ export type WorkflowEventInput = {
19
+ appId: string;
20
+ scopeId: string;
21
+ /** Namespaced `${appId}.${key}`, matching a declaration in the app's `workflows.ts`. */
22
+ type: string;
23
+ data?: Record<string, WorkflowJsonValue>;
24
+ /**
25
+ * Makes a repeatable source at-most-once: a schedule slot, a provider
26
+ * redelivery, a double-clicked button. Emitting the same key twice records
27
+ * one event and therefore starts one run.
28
+ */
29
+ dedupeKey?: string;
30
+ /** The occurrence's own time, not the emitter's. Runs replay against this. */
31
+ occurredAt?: Date;
32
+ /**
33
+ * Everything the plan reads under context.*, distinct from the payload.
34
+ *
35
+ * An app that already holds the facts a run needs — a captured row, the
36
+ * launcher that was pressed — hands them over rather than making every step
37
+ * read them again.
38
+ */
39
+ context?: Record<string, WorkflowJsonValue>;
40
+ /**
41
+ * Who the resulting runs act as.
42
+ *
43
+ * Without this every run would execute as the system: the activation's own
44
+ * snapshot is the fallback, and it is only meaningful for occurrences that
45
+ * have no human behind them, like a schedule tick.
46
+ */
47
+ authorization?: WorkflowJsonValue;
48
+ /**
49
+ * Restricts matching to one workflow's activations.
50
+ *
51
+ * For occurrences that concern exactly one workflow because the app already
52
+ * decided — it evaluated its own trigger filter — and a broadcast would start
53
+ * every workflow in the scope.
54
+ */
55
+ targetWorkflowId?: string;
56
+ };
57
+
58
+ export type WorkflowEmission = {
59
+ eventId: string;
60
+ /** Empty when nothing was listening, or when dispatch was deferred. */
61
+ runIds: string[];
62
+ /** True when this exact event had already been recorded. */
63
+ duplicate: boolean;
64
+ };
65
+
66
+ type ActivationMatch = {
67
+ activation_id: string;
68
+ workflow_id: string;
69
+ workflow_version_id: string;
70
+ authorization_snapshot: WorkflowJsonValue;
71
+ };
72
+
73
+ type StoredEvent = {
74
+ id: string;
75
+ appId: string;
76
+ scopeId: string;
77
+ type: string;
78
+ occurredAt: Date;
79
+ data: Record<string, WorkflowJsonValue>;
80
+ context: Record<string, WorkflowJsonValue>;
81
+ authorization: WorkflowJsonValue;
82
+ targetWorkflowId: string | null;
83
+ };
84
+
85
+ const EVENT_DISPATCH_MAX_ATTEMPTS = 8;
86
+ const EVENT_DISPATCH_BACKOFF_MS = 1_000;
87
+ const EVENT_DISPATCH_MAX_BACKOFF_MS = 5 * 60_000;
88
+
89
+ /** An empty object means the emitter named nobody; fall back to the activation. */
90
+ const isEmpty = (value: WorkflowJsonValue): boolean =>
91
+ !value || (typeof value === "object" && !Array.isArray(value) && Object.keys(value).length === 0);
92
+
93
+ /** Freezes the exact live activations that matched when the event arrived. */
94
+ const pinDeliveries = async (tx: SQL, event: StoredEvent): Promise<number> => {
95
+ const rows = await tx<{ activation_id: string }[]>`
96
+ INSERT INTO workflows.event_delivery (
97
+ event_id, activation_id, workflow_id, workflow_version_id, authorization_snapshot
98
+ )
99
+ SELECT ${event.id}::uuid, a.id, a.workflow_id, a.workflow_version_id, a.authorization_snapshot
100
+ FROM workflows.activation AS a
101
+ JOIN workflows.workflow AS w
102
+ ON w.id = a.workflow_id
103
+ AND w.active_version_id = a.workflow_version_id
104
+ WHERE a.enabled
105
+ AND a.event_type = ${event.type}
106
+ AND w.app_id = ${event.appId}
107
+ AND w.scope_id = ${event.scopeId}
108
+ AND (${event.targetWorkflowId}::uuid IS NULL OR a.workflow_id = ${event.targetWorkflowId}::uuid)
109
+ ORDER BY a.id
110
+ ON CONFLICT DO NOTHING
111
+ RETURNING activation_id
112
+ `;
113
+ return rows.length;
114
+ };
115
+
116
+ /**
117
+ * Turns one event into runs.
118
+ *
119
+ * Runs are keyed by the event and the activation that matched it, so a
120
+ * redelivered event or a retried dispatch converges on the same runs rather
121
+ * than adding more.
122
+ */
123
+ const materializeRuns = async (tx: SQL, event: StoredEvent): Promise<string[]> => {
124
+ const matches = await tx<ActivationMatch[]>`
125
+ SELECT activation_id, workflow_id, workflow_version_id, authorization_snapshot
126
+ FROM workflows.event_delivery
127
+ WHERE event_id = ${event.id}::uuid
128
+ ORDER BY activation_id
129
+ `;
130
+
131
+ const runIds: string[] = [];
132
+ for (const match of matches) {
133
+ runIds.push(
134
+ await createWorkflowRun(
135
+ {
136
+ appId: event.appId,
137
+ scopeId: event.scopeId,
138
+ workflowId: match.workflow_id,
139
+ workflowVersionId: match.workflow_version_id,
140
+ mode: "execute",
141
+ inputs: event.data,
142
+ context: event.context,
143
+ // The emitter's actor wins; the activation's snapshot is what a
144
+ // schedule tick or a captured row falls back to.
145
+ authorization: isEmpty(event.authorization) ? match.authorization_snapshot : event.authorization,
146
+ idempotencyKey: `event:${event.id}:${match.activation_id}`,
147
+ occurredAt: event.occurredAt,
148
+ eventId: event.id,
149
+ },
150
+ { db: tx },
151
+ ),
152
+ );
153
+ }
154
+ return runIds;
155
+ };
156
+
157
+ /**
158
+ * Records an event and, unless deferred, starts the runs listening for it.
159
+ *
160
+ * `dispatch: "now"` is what a direct invocation uses: the caller gets run ids
161
+ * back without a round trip through a queue, which is what the launcher and
162
+ * "run this workflow" buttons depend on. Everything an app merely *observes* —
163
+ * a row changing, a message arriving — defers, because losing the caller's
164
+ * request is better than losing the occurrence: a failing dispatch would
165
+ * otherwise roll back the event itself and the occurrence would vanish.
166
+ */
167
+ export const emitWorkflowEvent = async (
168
+ event: WorkflowEventInput,
169
+ options: { dispatch?: "now" | "deferred"; db?: SQL } = {},
170
+ ): Promise<WorkflowEmission> => {
171
+ const occurredAt = event.occurredAt ?? new Date();
172
+ const data = event.data ?? {};
173
+ const context = event.context ?? {};
174
+ const authorization = event.authorization ?? {};
175
+
176
+ return withTransaction(options.db, async (tx) => {
177
+ const inserted = await tx<{ id: string }[]>`
178
+ INSERT INTO workflows.event (
179
+ app_id, scope_id, type, data, context, authorization_snapshot, target_workflow_id, dedupe_key, occurred_at
180
+ )
181
+ VALUES (
182
+ ${event.appId}, ${event.scopeId}, ${event.type}, ${data}, ${context}, ${authorization},
183
+ ${event.targetWorkflowId ?? null}::uuid, ${event.dedupeKey ?? null}, ${occurredAt}
184
+ )
185
+ ON CONFLICT (app_id, scope_id, type, dedupe_key) WHERE dedupe_key IS NOT NULL DO NOTHING
186
+ RETURNING id
187
+ `;
188
+
189
+ if (!inserted[0]) {
190
+ // Already recorded. Answer with the runs it produced the first time
191
+ // rather than starting more — that is the whole point of the key.
192
+ const [existing] = await tx<{ id: string }[]>`
193
+ SELECT id FROM workflows.event
194
+ WHERE app_id = ${event.appId}
195
+ AND scope_id = ${event.scopeId}
196
+ AND type = ${event.type}
197
+ AND dedupe_key = ${event.dedupeKey ?? null}
198
+ `;
199
+ if (!existing) throw new Error("workflow event conflicted but could not be found");
200
+ const runs = await tx<{ id: string }[]>`SELECT id FROM workflows.run WHERE event_id = ${existing.id}::uuid ORDER BY created_at, id`;
201
+ return { eventId: existing.id, runIds: runs.map((row) => row.id), duplicate: true };
202
+ }
203
+
204
+ const eventId = inserted[0].id;
205
+ const stored = {
206
+ id: eventId,
207
+ appId: event.appId,
208
+ scopeId: event.scopeId,
209
+ type: event.type,
210
+ occurredAt,
211
+ data,
212
+ context,
213
+ authorization,
214
+ targetWorkflowId: event.targetWorkflowId ?? null,
215
+ };
216
+ const matchedCount = await pinDeliveries(tx, stored);
217
+ await tx`
218
+ UPDATE workflows.event
219
+ SET matched_count = ${matchedCount},
220
+ dispatched_at = CASE WHEN ${matchedCount} = 0 THEN now() ELSE dispatched_at END
221
+ WHERE id = ${eventId}::uuid
222
+ `;
223
+ if (options.dispatch !== "now" || matchedCount === 0) return { eventId, runIds: [], duplicate: false };
224
+
225
+ const runIds = await materializeRuns(tx, stored);
226
+ await tx`
227
+ UPDATE workflows.event
228
+ SET dispatched_at = now(), attempts = attempts + 1, last_error = NULL
229
+ WHERE id = ${eventId}::uuid
230
+ `;
231
+ return { eventId, runIds, duplicate: false };
232
+ });
233
+ };
234
+
235
+ /**
236
+ * Starts the runs for events that were recorded but not yet dispatched.
237
+ *
238
+ * One event at a time, each in its own transaction: an event whose activations
239
+ * cannot be materialised must not take the rest of the batch down with it. Its
240
+ * failure is recorded on the row instead, because an event that matched nothing
241
+ * and said nothing is exactly how Grids' schedules stopped firing.
242
+ */
243
+ export const dispatchPendingWorkflowEvents = async (
244
+ limit = 100,
245
+ options: { appId?: string; scopeId?: string; db?: SQL } = {},
246
+ ): Promise<{ dispatched: number; failed: number; deadLettered: number }> => {
247
+ const db = options.db ?? sql;
248
+ const pending = await db<{ id: string }[]>`
249
+ SELECT id FROM workflows.event
250
+ WHERE dispatched_at IS NULL
251
+ AND dispatch_failed_at IS NULL
252
+ AND matched_count > 0
253
+ AND dispatch_after <= now()
254
+ AND (${options.appId ?? null}::text IS NULL OR app_id = ${options.appId ?? null})
255
+ AND (${options.scopeId ?? null}::text IS NULL OR scope_id = ${options.scopeId ?? null})
256
+ ORDER BY dispatch_after, occurred_at, id
257
+ LIMIT ${limit}
258
+ `;
259
+
260
+ let dispatched = 0;
261
+ let failed = 0;
262
+ let deadLettered = 0;
263
+ for (const { id } of pending) {
264
+ try {
265
+ await withTransaction(options.db, async (tx) => {
266
+ const [row] = await tx<
267
+ {
268
+ id: string;
269
+ app_id: string;
270
+ scope_id: string;
271
+ type: string;
272
+ data: Record<string, WorkflowJsonValue>;
273
+ context: Record<string, WorkflowJsonValue>;
274
+ authorization_snapshot: WorkflowJsonValue;
275
+ target_workflow_id: string | null;
276
+ occurred_at: Date;
277
+ }[]
278
+ >`
279
+ SELECT id, app_id, scope_id, type, data, context, authorization_snapshot, target_workflow_id, occurred_at
280
+ FROM workflows.event
281
+ WHERE id = ${id}::uuid
282
+ AND dispatched_at IS NULL
283
+ AND dispatch_failed_at IS NULL
284
+ AND matched_count > 0
285
+ AND dispatch_after <= now()
286
+ FOR UPDATE SKIP LOCKED
287
+ `;
288
+ // Another worker took it, or it was dispatched between the scan and here.
289
+ if (!row) return;
290
+
291
+ await materializeRuns(tx, {
292
+ id: row.id,
293
+ appId: row.app_id,
294
+ scopeId: row.scope_id,
295
+ type: row.type,
296
+ occurredAt: row.occurred_at,
297
+ data: row.data,
298
+ context: row.context,
299
+ authorization: row.authorization_snapshot,
300
+ targetWorkflowId: row.target_workflow_id,
301
+ });
302
+ await tx`
303
+ UPDATE workflows.event
304
+ SET dispatched_at = now(), attempts = attempts + 1, last_error = NULL
305
+ WHERE id = ${row.id}::uuid
306
+ `;
307
+ dispatched += 1;
308
+ });
309
+ } catch (error) {
310
+ failed += 1;
311
+ const [recorded] = await db<{ dispatch_failed_at: Date | null }[]>`
312
+ UPDATE workflows.event
313
+ SET attempts = attempts + 1,
314
+ last_error = ${error instanceof Error ? error.message : String(error)},
315
+ dispatch_after = now() + (
316
+ LEAST(
317
+ ${EVENT_DISPATCH_MAX_BACKOFF_MS}::double precision,
318
+ ${EVENT_DISPATCH_BACKOFF_MS}::double precision * power(2::double precision, attempts::double precision)
319
+ ) * interval '1 millisecond'
320
+ ),
321
+ dispatch_failed_at = CASE
322
+ WHEN attempts + 1 >= ${EVENT_DISPATCH_MAX_ATTEMPTS} THEN now()
323
+ ELSE dispatch_failed_at
324
+ END
325
+ WHERE id = ${id}::uuid AND dispatched_at IS NULL
326
+ RETURNING dispatch_failed_at
327
+ `;
328
+ if (recorded?.dispatch_failed_at) deadLettered += 1;
329
+ }
330
+ }
331
+ return { dispatched, failed, deadLettered };
332
+ };
333
+
334
+ export type UndispatchedWorkflowEvent = {
335
+ id: string;
336
+ appId: string;
337
+ scopeId: string;
338
+ type: string;
339
+ occurredAt: Date;
340
+ attempts: number;
341
+ matchedCount: number;
342
+ lastError: string | null;
343
+ dispatchFailedAt: Date | null;
344
+ };
345
+
346
+ /** Events that matched nothing, are retrying, or exhausted dispatch retries. */
347
+ export const listUndispatchedWorkflowEvents = async (
348
+ options: { limit?: number; offset?: number; appId?: string; scopeId?: string; db?: SQL } = {},
349
+ ): Promise<UndispatchedWorkflowEvent[]> => {
350
+ const db = options.db ?? sql;
351
+ const rows = await db<
352
+ {
353
+ id: string;
354
+ app_id: string;
355
+ scope_id: string;
356
+ type: string;
357
+ occurred_at: Date;
358
+ attempts: number;
359
+ matched_count: number;
360
+ last_error: string | null;
361
+ dispatch_failed_at: Date | null;
362
+ }[]
363
+ >`
364
+ SELECT id, app_id, scope_id, type, occurred_at, attempts, matched_count, last_error, dispatch_failed_at
365
+ FROM workflows.event
366
+ WHERE (matched_count = 0 OR dispatched_at IS NULL)
367
+ AND (${options.appId ?? null}::text IS NULL OR app_id = ${options.appId ?? null})
368
+ AND (${options.scopeId ?? null}::text IS NULL OR scope_id = ${options.scopeId ?? null})
369
+ ORDER BY occurred_at, id
370
+ LIMIT ${options.limit ?? 100} OFFSET ${options.offset ?? 0}
371
+ `;
372
+ return rows.map((row) => ({
373
+ id: row.id,
374
+ appId: row.app_id,
375
+ scopeId: row.scope_id,
376
+ type: row.type,
377
+ occurredAt: row.occurred_at,
378
+ attempts: row.attempts,
379
+ matchedCount: row.matched_count,
380
+ lastError: row.last_error,
381
+ dispatchFailedAt: row.dispatch_failed_at,
382
+ }));
383
+ };
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Server-only. Kept out of `@k2b/cloud/workflows`, which islands
3
+ * import for its contracts — pulling this in would drag Bun's `sql` into a
4
+ * browser bundle.
5
+ */
6
+
7
+ export {
8
+ createWorkflowActionPort,
9
+ createWorkflowDryRunPort,
10
+ type WorkflowActionPortOptions,
11
+ type WorkflowEffectJournalPort,
12
+ type WorkflowEffectJournalStep,
13
+ workflowEffectKey,
14
+ } from "./actions";
15
+ export {
16
+ budgetError,
17
+ budgetRootRunId,
18
+ chargeWorkflowEffectBudget,
19
+ checkEffectBudget,
20
+ totalPlannedEffects,
21
+ type WorkflowBudgetError,
22
+ type WorkflowBudgetOutcome,
23
+ type WorkflowEffectBudget,
24
+ type WorkflowEffectCharge,
25
+ } from "./budget";
26
+ export {
27
+ createWorkflow,
28
+ deleteWorkflowScope,
29
+ getWorkflow,
30
+ listWorkflowActivations,
31
+ listWorkflows,
32
+ listWorkflowVersions,
33
+ type PublishWorkflowVersion,
34
+ publishWorkflowVersion,
35
+ renameWorkflow,
36
+ setWorkflowEnabled,
37
+ type WorkflowActivationInput,
38
+ type WorkflowActivationRecord,
39
+ type WorkflowAuthor,
40
+ type WorkflowRecord,
41
+ type WorkflowVersionRecord,
42
+ } from "./definitions";
43
+ export {
44
+ dispatchPendingWorkflowEvents,
45
+ emitWorkflowEvent,
46
+ listUndispatchedWorkflowEvents,
47
+ type UndispatchedWorkflowEvent,
48
+ type WorkflowEmission,
49
+ type WorkflowEventInput,
50
+ } from "./events";
51
+ export {
52
+ getWorkflowRun,
53
+ listWorkflowFamilies,
54
+ listWorkflowRunTimeline,
55
+ listStrandedWorkflowEffects,
56
+ listWorkflowRunSteps,
57
+ listWorkflowRuns,
58
+ type StrandedWorkflowEffect,
59
+ type WorkflowAppHealth,
60
+ type WorkflowFamilyFilter,
61
+ type WorkflowFamilySummary,
62
+ type WorkflowRunDetail,
63
+ type WorkflowRunFilter,
64
+ type WorkflowRunSummary,
65
+ type WorkflowRunTimeline,
66
+ type WorkflowStepSummary,
67
+ workflowHealth,
68
+ } from "./observability";
69
+ export {
70
+ beginWorkflowEffect,
71
+ claimWorkflowRun,
72
+ countChildWorkflowRuns,
73
+ createChildWorkflowRuns,
74
+ createWorkflowCoordinatorPort,
75
+ createWorkflowRun,
76
+ createWorkflowRuntimeRepository,
77
+ finishWorkflowRun,
78
+ isWorkflowEffectReplayable,
79
+ listClaimableWorkflowRunIds,
80
+ type NewWorkflowRun,
81
+ readWorkflowEffect,
82
+ recordWorkflowEffect,
83
+ releaseWorkflowRun,
84
+ renewWorkflowRunLease,
85
+ requestWorkflowRunCancel,
86
+ resolveWorkflowRunAttention,
87
+ settleWorkflowEffect,
88
+ WORKFLOW_RUN_LEASE_MS,
89
+ WORKFLOW_RUN_MAX_CONSECUTIVE_FAILURES,
90
+ type WorkflowAttentionResolution,
91
+ WorkflowLeaseLostError,
92
+ type WorkflowRunClaim,
93
+ type WorkflowRunResult,
94
+ wakeExpiredWorkflowRuns,
95
+ wakeWorkflowRunsWaitingOn,
96
+ } from "./runs";
97
+ export {
98
+ dryRunOneWorkflow,
99
+ hasClaimableWorkflowRun,
100
+ runOneWorkflow,
101
+ tickWorkflows,
102
+ type WorkflowDryRunOutcome,
103
+ type WorkflowDryRunWorkerOptions,
104
+ type WorkflowTickResult,
105
+ type WorkflowWorkerOptions,
106
+ type WorkflowWorkerOutcome,
107
+ } from "./worker";