alepha 0.19.2 → 0.19.4

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 (241) hide show
  1. package/assets/swagger-ui/swagger-ui-bundle.js +1 -1
  2. package/dist/api/audits/index.d.ts +8 -8
  3. package/dist/api/invitations/index.d.ts +790 -0
  4. package/dist/api/invitations/index.d.ts.map +1 -0
  5. package/dist/api/invitations/index.js +665 -0
  6. package/dist/api/invitations/index.js.map +1 -0
  7. package/dist/api/jobs/index.browser.js +8 -9
  8. package/dist/api/jobs/index.browser.js.map +1 -1
  9. package/dist/api/jobs/index.d.ts +90 -34
  10. package/dist/api/jobs/index.d.ts.map +1 -1
  11. package/dist/api/jobs/index.js +267 -44
  12. package/dist/api/jobs/index.js.map +1 -1
  13. package/dist/api/notifications/index.browser.js +0 -1
  14. package/dist/api/notifications/index.browser.js.map +1 -1
  15. package/dist/api/notifications/index.d.ts +3 -3
  16. package/dist/api/notifications/index.d.ts.map +1 -1
  17. package/dist/api/notifications/index.js +0 -1
  18. package/dist/api/notifications/index.js.map +1 -1
  19. package/dist/api/parameters/index.browser.js +112 -1
  20. package/dist/api/parameters/index.browser.js.map +1 -1
  21. package/dist/api/parameters/index.d.ts +90 -3
  22. package/dist/api/parameters/index.d.ts.map +1 -1
  23. package/dist/api/parameters/index.js +79 -12
  24. package/dist/api/parameters/index.js.map +1 -1
  25. package/dist/{billing → api/payments}/index.d.ts +67 -49
  26. package/dist/api/payments/index.d.ts.map +1 -0
  27. package/dist/{billing → api/payments}/index.js +108 -74
  28. package/dist/api/payments/index.js.map +1 -0
  29. package/dist/api/subscriptions/index.d.ts +1692 -0
  30. package/dist/api/subscriptions/index.d.ts.map +1 -0
  31. package/dist/api/subscriptions/index.js +1870 -0
  32. package/dist/api/subscriptions/index.js.map +1 -0
  33. package/dist/api/users/index.d.ts +27 -21
  34. package/dist/api/users/index.d.ts.map +1 -1
  35. package/dist/api/users/index.js +167 -34
  36. package/dist/api/users/index.js.map +1 -1
  37. package/dist/api/workflows/index.browser.js +246 -0
  38. package/dist/api/workflows/index.browser.js.map +1 -0
  39. package/dist/api/workflows/index.d.ts +1618 -0
  40. package/dist/api/workflows/index.d.ts.map +1 -0
  41. package/dist/api/workflows/index.js +1504 -0
  42. package/dist/api/workflows/index.js.map +1 -0
  43. package/dist/cli/config/index.d.ts +6 -28
  44. package/dist/cli/config/index.d.ts.map +1 -1
  45. package/dist/cli/config/index.js +5 -10
  46. package/dist/cli/config/index.js.map +1 -1
  47. package/dist/cli/core/index.d.ts +11669 -208
  48. package/dist/cli/core/index.d.ts.map +1 -1
  49. package/dist/cli/core/index.js +60 -69
  50. package/dist/cli/core/index.js.map +1 -1
  51. package/dist/cli/devtools/index.d.ts +5 -0
  52. package/dist/cli/devtools/index.d.ts.map +1 -1
  53. package/dist/cli/devtools/index.js +4 -0
  54. package/dist/cli/devtools/index.js.map +1 -1
  55. package/dist/cli/platform/index.d.ts +69 -64
  56. package/dist/cli/platform/index.d.ts.map +1 -1
  57. package/dist/cli/platform/index.js +6 -2
  58. package/dist/cli/platform/index.js.map +1 -1
  59. package/dist/cli/vendor/index.d.ts +38 -10
  60. package/dist/cli/vendor/index.d.ts.map +1 -1
  61. package/dist/cli/vendor/index.js +85 -26
  62. package/dist/cli/vendor/index.js.map +1 -1
  63. package/dist/core/index.browser.js +21 -2
  64. package/dist/core/index.browser.js.map +1 -1
  65. package/dist/core/index.d.ts +33 -2
  66. package/dist/core/index.d.ts.map +1 -1
  67. package/dist/core/index.js +25 -2
  68. package/dist/core/index.js.map +1 -1
  69. package/dist/core/index.native.js +25 -2
  70. package/dist/core/index.native.js.map +1 -1
  71. package/dist/core/index.workerd.js +25 -2
  72. package/dist/core/index.workerd.js.map +1 -1
  73. package/dist/email/smtp/index.js +24 -8
  74. package/dist/email/smtp/index.js.map +1 -1
  75. package/dist/logger/index.d.ts.map +1 -1
  76. package/dist/logger/index.js +1 -1
  77. package/dist/logger/index.js.map +1 -1
  78. package/dist/orm/core/index.browser.js +0 -18
  79. package/dist/orm/core/index.browser.js.map +1 -1
  80. package/dist/orm/core/index.bun.js +25 -73
  81. package/dist/orm/core/index.bun.js.map +1 -1
  82. package/dist/orm/core/index.d.ts +10 -32
  83. package/dist/orm/core/index.d.ts.map +1 -1
  84. package/dist/orm/core/index.js +25 -73
  85. package/dist/orm/core/index.js.map +1 -1
  86. package/dist/orm/postgres/index.bun.js +3 -3
  87. package/dist/orm/postgres/index.bun.js.map +1 -1
  88. package/dist/orm/postgres/index.d.ts +2 -1
  89. package/dist/orm/postgres/index.d.ts.map +1 -1
  90. package/dist/orm/postgres/index.js +3 -3
  91. package/dist/orm/postgres/index.js.map +1 -1
  92. package/dist/react/router/index.browser.js +25 -3
  93. package/dist/react/router/index.browser.js.map +1 -1
  94. package/dist/react/router/index.d.ts +16 -1
  95. package/dist/react/router/index.d.ts.map +1 -1
  96. package/dist/react/router/index.js +25 -3
  97. package/dist/react/router/index.js.map +1 -1
  98. package/dist/security/index.d.ts +28 -0
  99. package/dist/security/index.d.ts.map +1 -1
  100. package/dist/security/index.js +28 -0
  101. package/dist/security/index.js.map +1 -1
  102. package/package.json +37 -20
  103. package/src/api/invitations/__tests__/InvitationService.spec.ts +439 -0
  104. package/src/api/invitations/controllers/AdminInvitationController.ts +86 -0
  105. package/src/api/invitations/controllers/InvitationController.ts +84 -0
  106. package/src/api/invitations/entities/invitations.ts +33 -0
  107. package/src/api/invitations/index.ts +65 -0
  108. package/src/api/invitations/jobs/InvitationJobs.ts +37 -0
  109. package/src/api/invitations/providers/InvitationProvider.ts +45 -0
  110. package/src/api/invitations/schemas/createInvitationSchema.ts +12 -0
  111. package/src/api/invitations/schemas/invitationConfigAtom.ts +20 -0
  112. package/src/api/invitations/schemas/invitationQuerySchema.ts +15 -0
  113. package/src/api/invitations/schemas/invitationResourceSchema.ts +6 -0
  114. package/src/api/invitations/schemas/invitationWithResourceInfoSchema.ts +22 -0
  115. package/src/api/invitations/schemas/myInvitationsQuerySchema.ts +10 -0
  116. package/src/api/invitations/services/InvitationService.ts +556 -0
  117. package/src/api/jobs/__tests__/$job.spec.ts +876 -0
  118. package/src/api/jobs/controllers/AdminJobController.ts +44 -0
  119. package/src/api/jobs/entities/jobExecutionEntity.ts +0 -2
  120. package/src/api/jobs/index.ts +0 -3
  121. package/src/api/jobs/primitives/$job.ts +22 -11
  122. package/src/api/jobs/providers/JobProvider.ts +239 -25
  123. package/src/api/jobs/schemas/jobConfigAtom.ts +4 -0
  124. package/src/api/jobs/schemas/jobCronInfoSchema.ts +1 -0
  125. package/src/api/jobs/schemas/jobExecutionQuerySchema.ts +0 -1
  126. package/src/api/jobs/schemas/jobQueueDepthSchema.ts +1 -0
  127. package/src/api/jobs/schemas/jobRegistrationSchema.ts +1 -6
  128. package/src/api/jobs/services/JobService.ts +51 -12
  129. package/src/api/notifications/schemas/notificationQuerySchema.ts +0 -1
  130. package/src/api/parameters/__tests__/$parameter.spec.ts +327 -0
  131. package/src/api/parameters/controllers/AdminParameterController.ts +29 -3
  132. package/src/api/parameters/index.browser.ts +12 -0
  133. package/src/api/parameters/primitives/$parameter.ts +20 -3
  134. package/src/api/parameters/services/ParameterProvider.ts +48 -7
  135. package/src/{billing → api/payments}/__tests__/PaymentMethodService.spec.ts +32 -6
  136. package/src/api/payments/__tests__/PaymentService.spec.ts +279 -0
  137. package/src/{billing/controllers/AdminBillingController.ts → api/payments/controllers/AdminPaymentController.ts} +26 -21
  138. package/src/{billing/controllers/BillingController.ts → api/payments/controllers/PaymentController.ts} +23 -11
  139. package/src/{billing → api/payments}/entities/paymentIntents.ts +1 -0
  140. package/src/{billing/errors/BillingError.ts → api/payments/errors/PaymentError.ts} +1 -1
  141. package/src/{billing → api/payments}/index.ts +31 -25
  142. package/src/{billing/providers/MemoryBillingProvider.ts → api/payments/providers/MemoryPaymentProvider.ts} +4 -4
  143. package/src/{billing/providers/BillingProvider.ts → api/payments/providers/PaymentProvider.ts} +9 -2
  144. package/src/{billing → api/payments}/services/PaymentMethodService.ts +5 -5
  145. package/src/{billing/services/BillingService.ts → api/payments/services/PaymentService.ts} +94 -18
  146. package/src/api/subscriptions/__tests__/BillingService.spec.ts +218 -0
  147. package/src/api/subscriptions/__tests__/SubscriptionService.spec.ts +278 -0
  148. package/src/api/subscriptions/controllers/AdminSubscriptionController.ts +212 -0
  149. package/src/api/subscriptions/controllers/SubscriptionController.ts +189 -0
  150. package/src/api/subscriptions/entities/subscriptionEvents.ts +54 -0
  151. package/src/api/subscriptions/entities/subscriptions.ts +68 -0
  152. package/src/api/subscriptions/index.ts +144 -0
  153. package/src/api/subscriptions/jobs/SubscriptionJobs.ts +382 -0
  154. package/src/api/subscriptions/middleware/$requireLimit.ts +50 -0
  155. package/src/api/subscriptions/middleware/$requirePlan.ts +49 -0
  156. package/src/api/subscriptions/notifications/SubscriptionNotifications.ts +110 -0
  157. package/src/api/subscriptions/schemas/cancelSubscriptionSchema.ts +8 -0
  158. package/src/api/subscriptions/schemas/changePlanSchema.ts +9 -0
  159. package/src/api/subscriptions/schemas/createSubscriptionSchema.ts +11 -0
  160. package/src/api/subscriptions/schemas/entitlementsSchema.ts +21 -0
  161. package/src/api/subscriptions/schemas/mrrSchema.ts +13 -0
  162. package/src/api/subscriptions/schemas/planDefinitionSchema.ts +71 -0
  163. package/src/api/subscriptions/schemas/planResourceSchema.ts +25 -0
  164. package/src/api/subscriptions/schemas/subscriptionEventResourceSchema.ts +8 -0
  165. package/src/api/subscriptions/schemas/subscriptionQuerySchema.ts +19 -0
  166. package/src/api/subscriptions/schemas/subscriptionResourceSchema.ts +6 -0
  167. package/src/api/subscriptions/schemas/subscriptionSettingsSchema.ts +32 -0
  168. package/src/api/subscriptions/schemas/subscriptionStatsSchema.ts +23 -0
  169. package/src/api/subscriptions/services/BillingService.ts +437 -0
  170. package/src/api/subscriptions/services/SubscriptionConfig.ts +56 -0
  171. package/src/api/subscriptions/services/SubscriptionService.ts +867 -0
  172. package/src/api/subscriptions/services/UsageService.ts +118 -0
  173. package/src/api/users/__tests__/AdminUserController.spec.ts +80 -1
  174. package/src/api/users/__tests__/CredentialService.spec.ts +177 -0
  175. package/src/api/users/__tests__/EmailVerification.spec.ts +29 -18
  176. package/src/api/users/__tests__/PasswordReset.spec.ts +3 -0
  177. package/src/api/users/__tests__/RegistrationService.spec.ts +148 -1
  178. package/src/api/users/__tests__/SessionService.spec.ts +142 -1
  179. package/src/api/users/atoms/realmAuthSettingsAtom.ts +10 -1
  180. package/src/api/users/controllers/UserController.ts +3 -8
  181. package/src/api/users/notifications/UserNotifications.ts +23 -0
  182. package/src/api/users/schemas/loginSchema.ts +1 -1
  183. package/src/api/users/services/CredentialService.ts +51 -4
  184. package/src/api/users/services/RegistrationService.ts +38 -9
  185. package/src/api/users/services/SessionService.ts +62 -9
  186. package/src/api/users/services/UserService.ts +21 -12
  187. package/src/api/workflows/__tests__/$workflow.spec.ts +616 -0
  188. package/src/api/workflows/controllers/AdminWorkflowController.ts +191 -0
  189. package/src/api/workflows/entities/workflowExecutions.ts +74 -0
  190. package/src/api/workflows/entities/workflowStepExecutions.ts +74 -0
  191. package/src/api/workflows/entities/workflowStepLogs.ts +13 -0
  192. package/src/api/workflows/index.browser.ts +22 -0
  193. package/src/api/workflows/index.ts +124 -0
  194. package/src/api/workflows/jobs/WorkflowJobs.ts +77 -0
  195. package/src/api/workflows/primitives/$workflow.ts +202 -0
  196. package/src/api/workflows/providers/WorkflowProvider.ts +1284 -0
  197. package/src/api/workflows/schemas/workflowActivitySchema.ts +15 -0
  198. package/src/api/workflows/schemas/workflowConfigAtom.ts +51 -0
  199. package/src/api/workflows/schemas/workflowExecutionDetailSchema.ts +18 -0
  200. package/src/api/workflows/schemas/workflowExecutionQuerySchema.ts +26 -0
  201. package/src/api/workflows/schemas/workflowExecutionResourceSchema.ts +30 -0
  202. package/src/api/workflows/schemas/workflowRegistrationSchema.ts +26 -0
  203. package/src/api/workflows/schemas/workflowStatsSchema.ts +16 -0
  204. package/src/api/workflows/schemas/workflowStepExecutionResourceSchema.ts +15 -0
  205. package/src/api/workflows/services/WorkflowService.ts +382 -0
  206. package/src/cli/config/defineConfig.ts +17 -46
  207. package/src/cli/core/providers/ViteDevServerProvider.ts +45 -3
  208. package/src/cli/core/services/PackageManagerUtils.ts +3 -1
  209. package/src/cli/core/services/ProjectScaffolder.ts +5 -5
  210. package/src/cli/core/templates/agentMd.ts +14 -5
  211. package/src/cli/core/templates/webAppRouterTs.ts +5 -58
  212. package/src/cli/devtools/index.ts +21 -1
  213. package/src/cli/platform/index.ts +23 -2
  214. package/src/cli/vendor/__tests__/VendorService.spec.ts +283 -178
  215. package/src/cli/vendor/index.ts +20 -3
  216. package/src/cli/vendor/services/VendorService.ts +126 -27
  217. package/src/core/Alepha.ts +10 -0
  218. package/src/core/__tests__/TypeProvider.spec.ts +4 -2
  219. package/src/core/providers/SchemaValidator.ts +1 -1
  220. package/src/core/providers/TypeProvider.ts +46 -3
  221. package/src/logger/index.ts +6 -1
  222. package/src/orm/__tests__/enums.spec.ts +22 -29
  223. package/src/orm/__tests__/orm-showcase-tests.ts +430 -0
  224. package/src/orm/__tests__/orm-showcase.spec.ts +167 -0
  225. package/src/orm/core/providers/DatabaseTypeProvider.ts +0 -29
  226. package/src/orm/core/providers/DrizzleKitProvider.ts +56 -105
  227. package/src/orm/postgres/services/PostgresModelBuilder.ts +3 -6
  228. package/src/react/router/__tests__/$page.browser.spec.tsx +157 -0
  229. package/src/react/router/providers/ReactBrowserProvider.ts +39 -0
  230. package/src/react/router/providers/ReactBrowserRouterProvider.ts +22 -0
  231. package/src/security/__tests__/$secure-combinations.spec.ts +945 -0
  232. package/src/security/primitives/$secure.ts +28 -0
  233. package/tsconfig.base.json +0 -1
  234. package/dist/billing/index.d.ts.map +0 -1
  235. package/dist/billing/index.js.map +0 -1
  236. package/src/billing/__tests__/BillingService.spec.ts +0 -136
  237. /package/src/{billing → api/payments}/entities/paymentMethods.ts +0 -0
  238. /package/src/{billing → api/payments}/entities/refunds.ts +0 -0
  239. /package/src/{billing → api/payments}/schemas/intentSchemas.ts +0 -0
  240. /package/src/{billing → api/payments}/schemas/paymentMethodSchemas.ts +0 -0
  241. /package/src/{billing → api/payments}/schemas/refundSchemas.ts +0 -0
@@ -0,0 +1,246 @@
1
+ import { $atom, $module, t } from "alepha";
2
+ import { $entity, db, pageQuerySchema, sql } from "alepha/orm";
3
+ import { logEntrySchema } from "alepha/logger";
4
+ //#region ../../src/api/workflows/entities/workflowExecutions.ts
5
+ const workflowExecutions = $entity({
6
+ name: "workflow_executions",
7
+ schema: t.object({
8
+ id: db.primaryKey(t.uuid()),
9
+ createdAt: db.createdAt(),
10
+ updatedAt: db.updatedAt(),
11
+ workflowName: t.text(),
12
+ tags: t.optional(t.array(t.text())),
13
+ payload: t.optional(t.record(t.text(), t.any())),
14
+ status: db.default(t.enum([
15
+ "pending",
16
+ "running",
17
+ "waiting_for_signal",
18
+ "completed",
19
+ "failed",
20
+ "timed_out",
21
+ "compensating",
22
+ "compensated",
23
+ "compensation_failed",
24
+ "cancelled"
25
+ ]), "pending"),
26
+ currentStep: t.optional(t.text()),
27
+ startedAt: t.optional(t.datetime()),
28
+ completedAt: t.optional(t.datetime()),
29
+ deadlineAt: t.optional(t.datetime()),
30
+ error: t.optional(t.text()),
31
+ errorStep: t.optional(t.text()),
32
+ triggeredBy: t.optional(t.text()),
33
+ triggeredByName: t.optional(t.text()),
34
+ cancelledBy: t.optional(t.text()),
35
+ cancelledByName: t.optional(t.text()),
36
+ key: t.optional(t.nullable(t.text())),
37
+ priority: db.default(t.integer({
38
+ minimum: 0,
39
+ maximum: 3
40
+ }), 2)
41
+ }),
42
+ indexes: [
43
+ { columns: ["workflowName", "status"] },
44
+ { columns: [
45
+ "workflowName",
46
+ "status",
47
+ "createdAt"
48
+ ] },
49
+ {
50
+ columns: ["workflowName", "key"],
51
+ unique: true,
52
+ where: sql`status NOT IN ('completed', 'failed', 'compensated', 'compensation_failed', 'cancelled')`
53
+ },
54
+ { columns: ["status", "deadlineAt"] },
55
+ { columns: ["completedAt"] }
56
+ ]
57
+ });
58
+ //#endregion
59
+ //#region ../../src/api/workflows/entities/workflowStepExecutions.ts
60
+ const workflowStepExecutions = $entity({
61
+ name: "workflow_step_executions",
62
+ schema: t.object({
63
+ id: db.primaryKey(t.uuid()),
64
+ createdAt: db.createdAt(),
65
+ updatedAt: db.updatedAt(),
66
+ workflowExecutionId: db.ref(t.uuid(), () => workflowExecutions.cols.id, { onDelete: "cascade" }),
67
+ stepName: t.text(),
68
+ stepIndex: t.integer(),
69
+ stepType: db.default(t.enum([
70
+ "handler",
71
+ "signal",
72
+ "parallel"
73
+ ]), "handler"),
74
+ parentStepId: t.optional(t.uuid()),
75
+ branchName: t.optional(t.text()),
76
+ status: db.default(t.enum([
77
+ "pending",
78
+ "running",
79
+ "completed",
80
+ "failed",
81
+ "skipped",
82
+ "waiting",
83
+ "compensating",
84
+ "compensated",
85
+ "compensation_failed",
86
+ "cancelled"
87
+ ]), "pending"),
88
+ attempt: db.default(t.integer(), 0),
89
+ maxAttempts: db.default(t.integer(), 1),
90
+ result: t.optional(t.record(t.text(), t.any())),
91
+ error: t.optional(t.text()),
92
+ startedAt: t.optional(t.datetime()),
93
+ completedAt: t.optional(t.datetime()),
94
+ deadlineAt: t.optional(t.datetime()),
95
+ signalPayload: t.optional(t.record(t.text(), t.any())),
96
+ signalledBy: t.optional(t.text()),
97
+ signalledAt: t.optional(t.datetime())
98
+ }),
99
+ indexes: [
100
+ { columns: ["workflowExecutionId", "stepName"] },
101
+ { columns: ["workflowExecutionId", "stepIndex"] },
102
+ { columns: ["workflowExecutionId", "status"] },
103
+ { columns: ["status", "deadlineAt"] }
104
+ ]
105
+ });
106
+ //#endregion
107
+ //#region ../../src/api/workflows/entities/workflowStepLogs.ts
108
+ const workflowStepLogs = $entity({
109
+ name: "workflow_step_logs",
110
+ schema: t.object({
111
+ id: db.primaryKey(t.uuid()),
112
+ logs: t.array(logEntrySchema)
113
+ })
114
+ });
115
+ //#endregion
116
+ //#region ../../src/api/workflows/schemas/workflowActivitySchema.ts
117
+ const workflowActivityPointSchema = t.object({
118
+ date: t.text(),
119
+ completed: t.integer(),
120
+ failed: t.integer()
121
+ });
122
+ const workflowActivityQuerySchema = t.object({ days: t.optional(t.integer({
123
+ minimum: 1,
124
+ maximum: 90
125
+ })) });
126
+ //#endregion
127
+ //#region ../../src/api/workflows/schemas/workflowConfigAtom.ts
128
+ const workflowConfig = $atom({
129
+ name: "alepha.workflows",
130
+ description: "Configuration for the workflow engine.",
131
+ schema: t.object({
132
+ defaultStepTimeout: t.integer({ description: "Default step timeout (ms). Used when no per-step timeout is set." }),
133
+ retentionDays: t.integer({ description: "Days to keep completed/failed workflow executions." }),
134
+ recovery: t.object({ staleThreshold: t.integer({ description: "Running step age (ms) before assumed crashed." }) }),
135
+ maxConcurrentWorkflows: t.integer({ description: "Max concurrent running instances per workflow name." }),
136
+ maxStepsPerWorkflow: t.integer({ description: "Safety limit on step count." }),
137
+ drainTimeout: t.integer({ description: "Max time (ms) to wait for in-flight steps during shutdown." }),
138
+ logMaxEntries: t.integer({ description: "Max log entries captured per step execution." })
139
+ }),
140
+ default: {
141
+ defaultStepTimeout: 3e5,
142
+ retentionDays: 30,
143
+ recovery: { staleThreshold: 18e5 },
144
+ maxConcurrentWorkflows: 50,
145
+ maxStepsPerWorkflow: 100,
146
+ drainTimeout: 3e4,
147
+ logMaxEntries: 100
148
+ }
149
+ });
150
+ //#endregion
151
+ //#region ../../src/api/workflows/schemas/workflowExecutionResourceSchema.ts
152
+ const workflowExecutionCanSchema = t.object({
153
+ retry: t.boolean(),
154
+ cancel: t.boolean(),
155
+ compensate: t.boolean(),
156
+ restart: t.boolean(),
157
+ signal: t.optional(t.object({
158
+ stepName: t.text(),
159
+ schema: t.optional(t.any())
160
+ }))
161
+ });
162
+ const workflowExecutionResourceSchema = t.extend(workflowExecutions.schema, { can: workflowExecutionCanSchema }, {
163
+ title: "WorkflowExecutionResource",
164
+ description: "A workflow execution resource."
165
+ });
166
+ //#endregion
167
+ //#region ../../src/api/workflows/schemas/workflowStepExecutionResourceSchema.ts
168
+ const workflowStepExecutionResourceSchema = t.extend(workflowStepExecutions.schema, {}, {
169
+ title: "WorkflowStepExecutionResource",
170
+ description: "A workflow step execution resource."
171
+ });
172
+ //#endregion
173
+ //#region ../../src/api/workflows/schemas/workflowExecutionDetailSchema.ts
174
+ const workflowExecutionDetailSchema = t.extend(workflowExecutionResourceSchema, { steps: t.array(workflowStepExecutionResourceSchema) }, {
175
+ title: "WorkflowExecutionDetail",
176
+ description: "A workflow execution with step details."
177
+ });
178
+ //#endregion
179
+ //#region ../../src/api/workflows/schemas/workflowExecutionQuerySchema.ts
180
+ const workflowExecutionQuerySchema = t.extend(pageQuerySchema, {
181
+ workflow: t.optional(t.text({ description: "Filter by workflow name" })),
182
+ status: t.optional(t.enum([
183
+ "pending",
184
+ "running",
185
+ "waiting_for_signal",
186
+ "completed",
187
+ "failed",
188
+ "timed_out",
189
+ "compensating",
190
+ "compensated",
191
+ "compensation_failed",
192
+ "cancelled"
193
+ ])),
194
+ from: t.optional(t.datetime({ description: "From date (ISO)" })),
195
+ to: t.optional(t.datetime({ description: "To date (ISO)" }))
196
+ });
197
+ //#endregion
198
+ //#region ../../src/api/workflows/schemas/workflowRegistrationSchema.ts
199
+ const workflowRegistrationSchema = t.object({
200
+ name: t.text(),
201
+ stepCount: t.integer(),
202
+ steps: t.array(t.object({
203
+ name: t.text(),
204
+ type: t.enum([
205
+ "handler",
206
+ "signal",
207
+ "parallel"
208
+ ]),
209
+ hasCompensate: t.boolean(),
210
+ hasRetry: t.boolean(),
211
+ timeout: t.optional(t.text())
212
+ })),
213
+ onError: t.enum(["compensate", "fail"]),
214
+ timeout: t.optional(t.text()),
215
+ priority: t.text(),
216
+ tags: t.optional(t.array(t.text())),
217
+ paused: t.boolean(),
218
+ running: t.integer(),
219
+ pending: t.integer(),
220
+ waiting: t.integer(),
221
+ failed: t.integer()
222
+ });
223
+ //#endregion
224
+ //#region ../../src/api/workflows/schemas/workflowStatsSchema.ts
225
+ const workflowStatsSchema = t.object({
226
+ registered: t.integer(),
227
+ running: t.integer(),
228
+ pending: t.integer(),
229
+ waiting: t.integer(),
230
+ completed: t.integer(),
231
+ failed: t.integer(),
232
+ compensated: t.integer(),
233
+ compensationFailed: t.integer(),
234
+ cancelled: t.integer(),
235
+ timedOut: t.integer()
236
+ });
237
+ //#endregion
238
+ //#region ../../src/api/workflows/index.browser.ts
239
+ const AlephaApiWorkflows = $module({
240
+ name: "alepha.api.workflows",
241
+ services: []
242
+ });
243
+ //#endregion
244
+ export { AlephaApiWorkflows, workflowActivityPointSchema, workflowActivityQuerySchema, workflowConfig, workflowExecutionCanSchema, workflowExecutionDetailSchema, workflowExecutionQuerySchema, workflowExecutionResourceSchema, workflowExecutions, workflowRegistrationSchema, workflowStatsSchema, workflowStepExecutionResourceSchema, workflowStepExecutions, workflowStepLogs };
245
+
246
+ //# sourceMappingURL=index.browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.browser.js","names":[],"sources":["../../../src/api/workflows/entities/workflowExecutions.ts","../../../src/api/workflows/entities/workflowStepExecutions.ts","../../../src/api/workflows/entities/workflowStepLogs.ts","../../../src/api/workflows/schemas/workflowActivitySchema.ts","../../../src/api/workflows/schemas/workflowConfigAtom.ts","../../../src/api/workflows/schemas/workflowExecutionResourceSchema.ts","../../../src/api/workflows/schemas/workflowStepExecutionResourceSchema.ts","../../../src/api/workflows/schemas/workflowExecutionDetailSchema.ts","../../../src/api/workflows/schemas/workflowExecutionQuerySchema.ts","../../../src/api/workflows/schemas/workflowRegistrationSchema.ts","../../../src/api/workflows/schemas/workflowStatsSchema.ts","../../../src/api/workflows/index.browser.ts"],"sourcesContent":["import { type Static, t } from \"alepha\";\nimport { $entity, db, sql } from \"alepha/orm\";\n\nexport const workflowExecutions = $entity({\n name: \"workflow_executions\",\n schema: t.object({\n id: db.primaryKey(t.uuid()),\n createdAt: db.createdAt(),\n updatedAt: db.updatedAt(),\n\n workflowName: t.text(),\n tags: t.optional(t.array(t.text())),\n\n payload: t.optional(t.record(t.text(), t.any())),\n\n status: db.default(\n t.enum([\n \"pending\",\n \"running\",\n \"waiting_for_signal\",\n \"completed\",\n \"failed\",\n \"timed_out\",\n \"compensating\",\n \"compensated\",\n \"compensation_failed\",\n \"cancelled\",\n ]),\n \"pending\",\n ),\n currentStep: t.optional(t.text()),\n\n startedAt: t.optional(t.datetime()),\n completedAt: t.optional(t.datetime()),\n deadlineAt: t.optional(t.datetime()),\n\n error: t.optional(t.text()),\n errorStep: t.optional(t.text()),\n\n triggeredBy: t.optional(t.text()),\n triggeredByName: t.optional(t.text()),\n cancelledBy: t.optional(t.text()),\n cancelledByName: t.optional(t.text()),\n\n key: t.optional(t.nullable(t.text())),\n\n priority: db.default(t.integer({ minimum: 0, maximum: 3 }), 2),\n }),\n indexes: [\n { columns: [\"workflowName\", \"status\"] },\n { columns: [\"workflowName\", \"status\", \"createdAt\"] },\n {\n columns: [\"workflowName\", \"key\"],\n unique: true,\n where: sql`status NOT IN ('completed', 'failed', 'compensated', 'compensation_failed', 'cancelled')`,\n },\n { columns: [\"status\", \"deadlineAt\"] },\n { columns: [\"completedAt\"] },\n ],\n});\n\nexport type WorkflowExecutionEntity = Static<typeof workflowExecutions.schema>;\n\nexport type WorkflowStatus =\n | \"pending\"\n | \"running\"\n | \"waiting_for_signal\"\n | \"completed\"\n | \"failed\"\n | \"timed_out\"\n | \"compensating\"\n | \"compensated\"\n | \"compensation_failed\"\n | \"cancelled\";\n","import { type Static, t } from \"alepha\";\nimport { $entity, db } from \"alepha/orm\";\nimport { workflowExecutions } from \"./workflowExecutions.ts\";\n\nexport const workflowStepExecutions = $entity({\n name: \"workflow_step_executions\",\n schema: t.object({\n id: db.primaryKey(t.uuid()),\n createdAt: db.createdAt(),\n updatedAt: db.updatedAt(),\n\n workflowExecutionId: db.ref(t.uuid(), () => workflowExecutions.cols.id, {\n onDelete: \"cascade\",\n }),\n\n stepName: t.text(),\n stepIndex: t.integer(),\n stepType: db.default(t.enum([\"handler\", \"signal\", \"parallel\"]), \"handler\"),\n\n parentStepId: t.optional(t.uuid()),\n branchName: t.optional(t.text()),\n\n status: db.default(\n t.enum([\n \"pending\",\n \"running\",\n \"completed\",\n \"failed\",\n \"skipped\",\n \"waiting\",\n \"compensating\",\n \"compensated\",\n \"compensation_failed\",\n \"cancelled\",\n ]),\n \"pending\",\n ),\n attempt: db.default(t.integer(), 0),\n maxAttempts: db.default(t.integer(), 1),\n\n result: t.optional(t.record(t.text(), t.any())),\n error: t.optional(t.text()),\n\n startedAt: t.optional(t.datetime()),\n completedAt: t.optional(t.datetime()),\n deadlineAt: t.optional(t.datetime()),\n\n signalPayload: t.optional(t.record(t.text(), t.any())),\n signalledBy: t.optional(t.text()),\n signalledAt: t.optional(t.datetime()),\n }),\n indexes: [\n { columns: [\"workflowExecutionId\", \"stepName\"] },\n { columns: [\"workflowExecutionId\", \"stepIndex\"] },\n { columns: [\"workflowExecutionId\", \"status\"] },\n { columns: [\"status\", \"deadlineAt\"] },\n ],\n});\n\nexport type WorkflowStepExecutionEntity = Static<\n typeof workflowStepExecutions.schema\n>;\n\nexport type WorkflowStepStatus =\n | \"pending\"\n | \"running\"\n | \"completed\"\n | \"failed\"\n | \"skipped\"\n | \"waiting\"\n | \"compensating\"\n | \"compensated\"\n | \"compensation_failed\"\n | \"cancelled\";\n","import { type Static, t } from \"alepha\";\nimport { logEntrySchema } from \"alepha/logger\";\nimport { $entity, db } from \"alepha/orm\";\n\nexport const workflowStepLogs = $entity({\n name: \"workflow_step_logs\",\n schema: t.object({\n id: db.primaryKey(t.uuid()),\n logs: t.array(logEntrySchema),\n }),\n});\n\nexport type WorkflowStepLogEntity = Static<typeof workflowStepLogs.schema>;\n","import { type Static, t } from \"alepha\";\n\nexport const workflowActivityPointSchema = t.object({\n date: t.text(),\n completed: t.integer(),\n failed: t.integer(),\n});\n\nexport type WorkflowActivityPoint = Static<typeof workflowActivityPointSchema>;\n\nexport const workflowActivityQuerySchema = t.object({\n days: t.optional(t.integer({ minimum: 1, maximum: 90 })),\n});\n\nexport type WorkflowActivityQuery = Static<typeof workflowActivityQuerySchema>;\n","import { $atom, type Static, t } from \"alepha\";\n\nexport const workflowConfig = $atom({\n name: \"alepha.workflows\",\n description: \"Configuration for the workflow engine.\",\n schema: t.object({\n defaultStepTimeout: t.integer({\n description:\n \"Default step timeout (ms). Used when no per-step timeout is set.\",\n }),\n retentionDays: t.integer({\n description: \"Days to keep completed/failed workflow executions.\",\n }),\n recovery: t.object({\n staleThreshold: t.integer({\n description: \"Running step age (ms) before assumed crashed.\",\n }),\n }),\n maxConcurrentWorkflows: t.integer({\n description: \"Max concurrent running instances per workflow name.\",\n }),\n maxStepsPerWorkflow: t.integer({\n description: \"Safety limit on step count.\",\n }),\n drainTimeout: t.integer({\n description: \"Max time (ms) to wait for in-flight steps during shutdown.\",\n }),\n logMaxEntries: t.integer({\n description: \"Max log entries captured per step execution.\",\n }),\n }),\n default: {\n defaultStepTimeout: 300_000,\n retentionDays: 30,\n recovery: {\n staleThreshold: 1_800_000,\n },\n maxConcurrentWorkflows: 50,\n maxStepsPerWorkflow: 100,\n drainTimeout: 30_000,\n logMaxEntries: 100,\n },\n});\n\nexport type WorkflowConfig = Static<typeof workflowConfig.schema>;\n\ndeclare module \"alepha\" {\n interface State {\n [workflowConfig.key]: WorkflowConfig;\n }\n}\n","import { type Static, t } from \"alepha\";\nimport { workflowExecutions } from \"../entities/workflowExecutions.ts\";\n\nexport const workflowExecutionCanSchema = t.object({\n retry: t.boolean(),\n cancel: t.boolean(),\n compensate: t.boolean(),\n restart: t.boolean(),\n signal: t.optional(\n t.object({\n stepName: t.text(),\n schema: t.optional(t.any()),\n }),\n ),\n});\n\nexport type WorkflowExecutionCan = Static<typeof workflowExecutionCanSchema>;\n\nexport const workflowExecutionResourceSchema = t.extend(\n workflowExecutions.schema,\n { can: workflowExecutionCanSchema },\n {\n title: \"WorkflowExecutionResource\",\n description: \"A workflow execution resource.\",\n },\n);\n\nexport type WorkflowExecutionResource = Static<\n typeof workflowExecutionResourceSchema\n>;\n","import { type Static, t } from \"alepha\";\nimport { workflowStepExecutions } from \"../entities/workflowStepExecutions.ts\";\n\nexport const workflowStepExecutionResourceSchema = t.extend(\n workflowStepExecutions.schema,\n {},\n {\n title: \"WorkflowStepExecutionResource\",\n description: \"A workflow step execution resource.\",\n },\n);\n\nexport type WorkflowStepExecutionResource = Static<\n typeof workflowStepExecutionResourceSchema\n>;\n","import { type Static, t } from \"alepha\";\nimport { workflowExecutionResourceSchema } from \"./workflowExecutionResourceSchema.ts\";\nimport { workflowStepExecutionResourceSchema } from \"./workflowStepExecutionResourceSchema.ts\";\n\nexport const workflowExecutionDetailSchema = t.extend(\n workflowExecutionResourceSchema,\n {\n steps: t.array(workflowStepExecutionResourceSchema),\n },\n {\n title: \"WorkflowExecutionDetail\",\n description: \"A workflow execution with step details.\",\n },\n);\n\nexport type WorkflowExecutionDetail = Static<\n typeof workflowExecutionDetailSchema\n>;\n","import { type Static, t } from \"alepha\";\nimport { pageQuerySchema } from \"alepha/orm\";\n\nexport const workflowExecutionQuerySchema = t.extend(pageQuerySchema, {\n workflow: t.optional(t.text({ description: \"Filter by workflow name\" })),\n status: t.optional(\n t.enum([\n \"pending\",\n \"running\",\n \"waiting_for_signal\",\n \"completed\",\n \"failed\",\n \"timed_out\",\n \"compensating\",\n \"compensated\",\n \"compensation_failed\",\n \"cancelled\",\n ]),\n ),\n from: t.optional(t.datetime({ description: \"From date (ISO)\" })),\n to: t.optional(t.datetime({ description: \"To date (ISO)\" })),\n});\n\nexport type WorkflowExecutionQuery = Static<\n typeof workflowExecutionQuerySchema\n>;\n","import { type Static, t } from \"alepha\";\n\nexport const workflowRegistrationSchema = t.object({\n name: t.text(),\n stepCount: t.integer(),\n steps: t.array(\n t.object({\n name: t.text(),\n type: t.enum([\"handler\", \"signal\", \"parallel\"]),\n hasCompensate: t.boolean(),\n hasRetry: t.boolean(),\n timeout: t.optional(t.text()),\n }),\n ),\n onError: t.enum([\"compensate\", \"fail\"]),\n timeout: t.optional(t.text()),\n priority: t.text(),\n tags: t.optional(t.array(t.text())),\n paused: t.boolean(),\n running: t.integer(),\n pending: t.integer(),\n waiting: t.integer(),\n failed: t.integer(),\n});\n\nexport type WorkflowRegistration = Static<typeof workflowRegistrationSchema>;\n","import { type Static, t } from \"alepha\";\n\nexport const workflowStatsSchema = t.object({\n registered: t.integer(),\n running: t.integer(),\n pending: t.integer(),\n waiting: t.integer(),\n completed: t.integer(),\n failed: t.integer(),\n compensated: t.integer(),\n compensationFailed: t.integer(),\n cancelled: t.integer(),\n timedOut: t.integer(),\n});\n\nexport type WorkflowStats = Static<typeof workflowStatsSchema>;\n","import { $module } from \"alepha\";\n\n// -----------------------------------------------------------------------------------------------------------------\n\nexport * from \"./entities/workflowExecutions.ts\";\nexport * from \"./entities/workflowStepExecutions.ts\";\nexport * from \"./entities/workflowStepLogs.ts\";\nexport * from \"./schemas/workflowActivitySchema.ts\";\nexport * from \"./schemas/workflowConfigAtom.ts\";\nexport * from \"./schemas/workflowExecutionDetailSchema.ts\";\nexport * from \"./schemas/workflowExecutionQuerySchema.ts\";\nexport * from \"./schemas/workflowExecutionResourceSchema.ts\";\nexport * from \"./schemas/workflowRegistrationSchema.ts\";\nexport * from \"./schemas/workflowStatsSchema.ts\";\nexport * from \"./schemas/workflowStepExecutionResourceSchema.ts\";\n\n// -----------------------------------------------------------------------------------------------------------------\n\nexport const AlephaApiWorkflows = $module({\n name: \"alepha.api.workflows\",\n services: [],\n});\n"],"mappings":"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"}