@lssm/lib.jobs 0.0.0-canary-20251217080011 → 0.0.0-canary-20251219202229

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 (207) hide show
  1. package/LICENSE +21 -0
  2. package/dist/_virtual/rolldown_runtime.js +1 -7
  3. package/dist/contracts/dist/capabilities/openbanking.js +2 -1
  4. package/dist/contracts/dist/capabilities/openbanking.js.map +1 -0
  5. package/dist/contracts/dist/contract-registry/schemas.js +2 -1
  6. package/dist/contracts/dist/contract-registry/schemas.js.map +1 -0
  7. package/dist/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js +2 -1
  8. package/dist/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js.map +1 -0
  9. package/dist/contracts/dist/docs/index.js +2 -6
  10. package/dist/contracts/dist/docs/meta.docs.js +30 -0
  11. package/dist/contracts/dist/docs/meta.docs.js.map +1 -0
  12. package/dist/contracts/dist/docs/presentations.js +2 -1
  13. package/dist/contracts/dist/docs/presentations.js.map +1 -0
  14. package/dist/contracts/dist/docs/registry.js +2 -1
  15. package/dist/contracts/dist/docs/registry.js.map +1 -0
  16. package/dist/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js +2 -1
  17. package/dist/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js.map +1 -0
  18. package/dist/contracts/dist/docs/tech/contracts/openapi-export.docblock.js +2 -1
  19. package/dist/contracts/dist/docs/tech/contracts/openapi-export.docblock.js.map +1 -0
  20. package/dist/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js +2 -1
  21. package/dist/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js.map +1 -0
  22. package/dist/contracts/dist/docs/tech/llm/llm-integration.docblock.js +2 -1
  23. package/dist/contracts/dist/docs/tech/llm/llm-integration.docblock.js.map +1 -0
  24. package/dist/contracts/dist/docs/tech/mcp-endpoints.docblock.js +2 -1
  25. package/dist/contracts/dist/docs/tech/mcp-endpoints.docblock.js.map +1 -0
  26. package/dist/contracts/dist/docs/tech/presentation-runtime.docblock.js +2 -1
  27. package/dist/contracts/dist/docs/tech/presentation-runtime.docblock.js.map +1 -0
  28. package/dist/contracts/dist/docs/tech/schema/README.docblock.js +2 -1
  29. package/dist/contracts/dist/docs/tech/schema/README.docblock.js.map +1 -0
  30. package/dist/contracts/dist/docs/tech/studio/learning-events.docblock.js +2 -1
  31. package/dist/contracts/dist/docs/tech/studio/learning-events.docblock.js.map +1 -0
  32. package/dist/contracts/dist/docs/tech/studio/learning-journeys.docblock.js +2 -1
  33. package/dist/contracts/dist/docs/tech/studio/learning-journeys.docblock.js.map +1 -0
  34. package/dist/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js +2 -1
  35. package/dist/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js.map +1 -0
  36. package/dist/contracts/dist/docs/tech/studio/project-access-teams.docblock.js +2 -1
  37. package/dist/contracts/dist/docs/tech/studio/project-access-teams.docblock.js.map +1 -0
  38. package/dist/contracts/dist/docs/tech/studio/project-routing.docblock.js +2 -1
  39. package/dist/contracts/dist/docs/tech/studio/project-routing.docblock.js.map +1 -0
  40. package/dist/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js +2 -1
  41. package/dist/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js.map +1 -0
  42. package/dist/contracts/dist/docs/tech/studio/team-invitations.docblock.js +2 -1
  43. package/dist/contracts/dist/docs/tech/studio/team-invitations.docblock.js.map +1 -0
  44. package/dist/contracts/dist/docs/tech/studio/workspace-ops.docblock.js +2 -1
  45. package/dist/contracts/dist/docs/tech/studio/workspace-ops.docblock.js.map +1 -0
  46. package/dist/contracts/dist/docs/tech/studio/workspaces.docblock.js +2 -1
  47. package/dist/contracts/dist/docs/tech/studio/workspaces.docblock.js.map +1 -0
  48. package/dist/contracts/dist/docs/tech/telemetry-ingest.docblock.js +2 -1
  49. package/dist/contracts/dist/docs/tech/telemetry-ingest.docblock.js.map +1 -0
  50. package/dist/contracts/dist/docs/tech/templates/runtime.docblock.js +2 -1
  51. package/dist/contracts/dist/docs/tech/templates/runtime.docblock.js.map +1 -0
  52. package/dist/contracts/dist/docs/tech/vscode-extension.docblock.js +2 -1
  53. package/dist/contracts/dist/docs/tech/vscode-extension.docblock.js.map +1 -0
  54. package/dist/contracts/dist/docs/tech/workflows/overview.docblock.js +2 -1
  55. package/dist/contracts/dist/docs/tech/workflows/overview.docblock.js.map +1 -0
  56. package/dist/contracts/dist/docs/tech-contracts.docs.js +97 -0
  57. package/dist/contracts/dist/docs/tech-contracts.docs.js.map +1 -0
  58. package/dist/contracts/dist/events.js +2 -1
  59. package/dist/contracts/dist/events.js.map +1 -0
  60. package/dist/contracts/dist/index.js +2 -1
  61. package/dist/contracts/dist/integrations/contracts.js +65 -66
  62. package/dist/contracts/dist/integrations/contracts.js.map +1 -0
  63. package/dist/contracts/dist/integrations/openbanking/contracts/accounts.js +31 -32
  64. package/dist/contracts/dist/integrations/openbanking/contracts/accounts.js.map +1 -0
  65. package/dist/contracts/dist/integrations/openbanking/contracts/balances.js +18 -19
  66. package/dist/contracts/dist/integrations/openbanking/contracts/balances.js.map +1 -0
  67. package/dist/contracts/dist/integrations/openbanking/contracts/transactions.js +32 -33
  68. package/dist/contracts/dist/integrations/openbanking/contracts/transactions.js.map +1 -0
  69. package/dist/contracts/dist/integrations/openbanking/models.js +60 -61
  70. package/dist/contracts/dist/integrations/openbanking/models.js.map +1 -0
  71. package/dist/contracts/dist/integrations/openbanking/telemetry.js +2 -1
  72. package/dist/contracts/dist/integrations/openbanking/telemetry.js.map +1 -0
  73. package/dist/contracts/dist/integrations/providers/elevenlabs.js +2 -1
  74. package/dist/contracts/dist/integrations/providers/elevenlabs.js.map +1 -0
  75. package/dist/contracts/dist/integrations/providers/gcs-storage.js +2 -1
  76. package/dist/contracts/dist/integrations/providers/gcs-storage.js.map +1 -0
  77. package/dist/contracts/dist/integrations/providers/gmail.js +2 -1
  78. package/dist/contracts/dist/integrations/providers/gmail.js.map +1 -0
  79. package/dist/contracts/dist/integrations/providers/google-calendar.js +2 -1
  80. package/dist/contracts/dist/integrations/providers/google-calendar.js.map +1 -0
  81. package/dist/contracts/dist/integrations/providers/mistral.js +2 -1
  82. package/dist/contracts/dist/integrations/providers/mistral.js.map +1 -0
  83. package/dist/contracts/dist/integrations/providers/postmark.js +2 -1
  84. package/dist/contracts/dist/integrations/providers/postmark.js.map +1 -0
  85. package/dist/contracts/dist/integrations/providers/powens.js +2 -1
  86. package/dist/contracts/dist/integrations/providers/powens.js.map +1 -0
  87. package/dist/contracts/dist/integrations/providers/qdrant.js +2 -1
  88. package/dist/contracts/dist/integrations/providers/qdrant.js.map +1 -0
  89. package/dist/contracts/dist/integrations/providers/stripe.js +2 -1
  90. package/dist/contracts/dist/integrations/providers/stripe.js.map +1 -0
  91. package/dist/contracts/dist/integrations/providers/twilio-sms.js +2 -1
  92. package/dist/contracts/dist/integrations/providers/twilio-sms.js.map +1 -0
  93. package/dist/contracts/dist/jobs/queue.js +2 -1
  94. package/dist/contracts/dist/jobs/queue.js.map +1 -0
  95. package/dist/contracts/dist/knowledge/contracts.js +44 -45
  96. package/dist/contracts/dist/knowledge/contracts.js.map +1 -0
  97. package/dist/contracts/dist/knowledge/spaces/email-threads.js +2 -1
  98. package/dist/contracts/dist/knowledge/spaces/email-threads.js.map +1 -0
  99. package/dist/contracts/dist/knowledge/spaces/financial-docs.js +2 -1
  100. package/dist/contracts/dist/knowledge/spaces/financial-docs.js.map +1 -0
  101. package/dist/contracts/dist/knowledge/spaces/financial-overview.js +2 -1
  102. package/dist/contracts/dist/knowledge/spaces/financial-overview.js.map +1 -0
  103. package/dist/contracts/dist/knowledge/spaces/product-canon.js +2 -1
  104. package/dist/contracts/dist/knowledge/spaces/product-canon.js.map +1 -0
  105. package/dist/contracts/dist/knowledge/spaces/support-faq.js +2 -1
  106. package/dist/contracts/dist/knowledge/spaces/support-faq.js.map +1 -0
  107. package/dist/contracts/dist/knowledge/spaces/uploaded-docs.js +2 -1
  108. package/dist/contracts/dist/knowledge/spaces/uploaded-docs.js.map +1 -0
  109. package/dist/contracts/dist/llm/exporters.js +2 -1
  110. package/dist/contracts/dist/llm/exporters.js.map +1 -0
  111. package/dist/contracts/dist/onboarding-base.js +22 -23
  112. package/dist/contracts/dist/onboarding-base.js.map +1 -0
  113. package/dist/contracts/dist/ownership.js +4 -2
  114. package/dist/contracts/dist/ownership.js.map +1 -0
  115. package/dist/contracts/dist/presentations.v2.js +2 -1
  116. package/dist/contracts/dist/presentations.v2.js.map +1 -0
  117. package/dist/contracts/dist/regenerator/service.js +2 -1
  118. package/dist/contracts/dist/regenerator/service.js.map +1 -0
  119. package/dist/contracts/dist/schema/dist/index.js +3873 -6
  120. package/dist/contracts/dist/schema/dist/index.js.map +1 -0
  121. package/dist/contracts/dist/spec.js +2 -1
  122. package/dist/contracts/dist/spec.js.map +1 -0
  123. package/dist/contracts/index.d.ts +141 -140
  124. package/dist/contracts/index.d.ts.map +1 -0
  125. package/dist/contracts/index.js +71 -72
  126. package/dist/contracts/index.js.map +1 -0
  127. package/dist/entities/index.d.ts +2 -1
  128. package/dist/entities/index.d.ts.map +1 -0
  129. package/dist/entities/index.js +67 -67
  130. package/dist/entities/index.js.map +1 -0
  131. package/dist/events.d.ts +100 -99
  132. package/dist/events.d.ts.map +1 -0
  133. package/dist/events.js +51 -52
  134. package/dist/events.js.map +1 -0
  135. package/dist/handlers/gmail-sync-handler.d.ts +2 -1
  136. package/dist/handlers/gmail-sync-handler.d.ts.map +1 -0
  137. package/dist/handlers/gmail-sync-handler.js +2 -1
  138. package/dist/handlers/gmail-sync-handler.js.map +1 -0
  139. package/dist/handlers/index.d.ts +2 -1
  140. package/dist/handlers/index.d.ts.map +1 -0
  141. package/dist/handlers/index.js +2 -1
  142. package/dist/handlers/index.js.map +1 -0
  143. package/dist/handlers/ping-job.d.ts +2 -1
  144. package/dist/handlers/ping-job.d.ts.map +1 -0
  145. package/dist/handlers/ping-job.js +2 -1
  146. package/dist/handlers/ping-job.js.map +1 -0
  147. package/dist/handlers/storage-document-handler.d.ts +2 -1
  148. package/dist/handlers/storage-document-handler.d.ts.map +1 -0
  149. package/dist/handlers/storage-document-handler.js +2 -1
  150. package/dist/handlers/storage-document-handler.js.map +1 -0
  151. package/dist/index.d.ts +2 -1
  152. package/dist/index.d.ts.map +1 -0
  153. package/dist/jobs.feature.d.ts +2 -1
  154. package/dist/jobs.feature.d.ts.map +1 -0
  155. package/dist/jobs.feature.js +2 -1
  156. package/dist/jobs.feature.js.map +1 -0
  157. package/dist/queue/gcp-cloud-tasks.d.ts +2 -1
  158. package/dist/queue/gcp-cloud-tasks.d.ts.map +1 -0
  159. package/dist/queue/gcp-cloud-tasks.js +2 -1
  160. package/dist/queue/gcp-cloud-tasks.js.map +1 -0
  161. package/dist/queue/gcp-pubsub.d.ts +2 -1
  162. package/dist/queue/gcp-pubsub.d.ts.map +1 -0
  163. package/dist/queue/gcp-pubsub.js +2 -1
  164. package/dist/queue/gcp-pubsub.js.map +1 -0
  165. package/dist/queue/index.d.ts +2 -1
  166. package/dist/queue/index.d.ts.map +1 -0
  167. package/dist/queue/memory-queue.d.ts +2 -1
  168. package/dist/queue/memory-queue.d.ts.map +1 -0
  169. package/dist/queue/memory-queue.js +2 -1
  170. package/dist/queue/memory-queue.js.map +1 -0
  171. package/dist/queue/register-defined-job.d.ts +2 -1
  172. package/dist/queue/register-defined-job.d.ts.map +1 -0
  173. package/dist/queue/register-defined-job.js +2 -1
  174. package/dist/queue/register-defined-job.js.map +1 -0
  175. package/dist/queue/scaleway-sqs-queue.d.ts +2 -1
  176. package/dist/queue/scaleway-sqs-queue.d.ts.map +1 -0
  177. package/dist/queue/scaleway-sqs-queue.js +2 -1
  178. package/dist/queue/scaleway-sqs-queue.js.map +1 -0
  179. package/dist/queue/types.d.ts +3 -2
  180. package/dist/queue/types.d.ts.map +1 -0
  181. package/dist/scheduler/index.d.ts +2 -1
  182. package/dist/scheduler/index.d.ts.map +1 -0
  183. package/dist/scheduler/index.js +2 -1
  184. package/dist/scheduler/index.js.map +1 -0
  185. package/dist/schema/dist/index.js +4889 -6
  186. package/dist/schema/dist/index.js.map +1 -0
  187. package/package.json +9 -8
  188. package/dist/contracts/dist/docs/PUBLISHING.docblock.js +0 -16
  189. package/dist/contracts/dist/docs/tech/PHASE_1_QUICKSTART.docblock.js +0 -16
  190. package/dist/contracts/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js +0 -16
  191. package/dist/contracts/dist/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js +0 -16
  192. package/dist/contracts/dist/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js +0 -16
  193. package/dist/contracts/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js +0 -16
  194. package/dist/contracts/dist/schema/dist/EnumType.js +0 -2
  195. package/dist/contracts/dist/schema/dist/FieldType.js +0 -49
  196. package/dist/contracts/dist/schema/dist/ScalarTypeEnum.js +0 -236
  197. package/dist/contracts/dist/schema/dist/SchemaModel.js +0 -34
  198. package/dist/contracts/dist/schema/dist/entity/defineEntity.js +0 -1
  199. package/dist/contracts/dist/schema/dist/entity/index.js +0 -2
  200. package/dist/contracts/dist/schema/dist/entity/types.js +0 -1
  201. package/dist/schema/dist/EnumType.js +0 -2
  202. package/dist/schema/dist/FieldType.js +0 -49
  203. package/dist/schema/dist/ScalarTypeEnum.js +0 -236
  204. package/dist/schema/dist/SchemaModel.js +0 -39
  205. package/dist/schema/dist/entity/defineEntity.js +0 -236
  206. package/dist/schema/dist/entity/index.js +0 -2
  207. package/dist/schema/dist/entity/types.js +0 -1
@@ -1,11 +1,10 @@
1
- import { defineEntity, defineEntityEnum, field, index } from "../schema/dist/entity/defineEntity.js";
2
- import "../schema/dist/index.js";
1
+ import { L5, Z5, _5, b5 } from "../schema/dist/index.js";
3
2
 
4
3
  //#region src/entities/index.ts
5
4
  /**
6
5
  * Job status enum.
7
6
  */
8
- const JobStatusEnum = defineEntityEnum({
7
+ const JobStatusEnum = Z5({
9
8
  name: "JobStatus",
10
9
  values: [
11
10
  "PENDING",
@@ -21,161 +20,161 @@ const JobStatusEnum = defineEntityEnum({
21
20
  /**
22
21
  * Job entity - represents a single job execution.
23
22
  */
24
- const JobEntity = defineEntity({
23
+ const JobEntity = L5({
25
24
  name: "Job",
26
25
  description: "A background job for async processing.",
27
26
  schema: "lssm_jobs",
28
27
  map: "job",
29
28
  fields: {
30
- id: field.id({ description: "Unique job identifier" }),
31
- type: field.string({ description: "Job type identifier" }),
32
- version: field.int({
29
+ id: _5.id({ description: "Unique job identifier" }),
30
+ type: _5.string({ description: "Job type identifier" }),
31
+ version: _5.int({
33
32
  default: 1,
34
33
  description: "Job type version"
35
34
  }),
36
- payload: field.json({ description: "Job payload data" }),
37
- status: field.enum("JobStatus", { default: "PENDING" }),
38
- priority: field.int({
35
+ payload: _5.json({ description: "Job payload data" }),
36
+ status: _5.enum("JobStatus", { default: "PENDING" }),
37
+ priority: _5.int({
39
38
  default: 0,
40
39
  description: "Higher = more urgent"
41
40
  }),
42
- attempts: field.int({
41
+ attempts: _5.int({
43
42
  default: 0,
44
43
  description: "Number of execution attempts"
45
44
  }),
46
- maxRetries: field.int({
45
+ maxRetries: _5.int({
47
46
  default: 3,
48
47
  description: "Maximum retry attempts"
49
48
  }),
50
- lastError: field.string({
49
+ lastError: _5.string({
51
50
  isOptional: true,
52
51
  description: "Last error message"
53
52
  }),
54
- lastErrorStack: field.string({
53
+ lastErrorStack: _5.string({
55
54
  isOptional: true,
56
55
  description: "Last error stack trace"
57
56
  }),
58
- scheduledAt: field.dateTime({
57
+ scheduledAt: _5.dateTime({
59
58
  isOptional: true,
60
59
  description: "When job should be processed"
61
60
  }),
62
- startedAt: field.dateTime({
61
+ startedAt: _5.dateTime({
63
62
  isOptional: true,
64
63
  description: "When processing started"
65
64
  }),
66
- completedAt: field.dateTime({
65
+ completedAt: _5.dateTime({
67
66
  isOptional: true,
68
67
  description: "When processing completed"
69
68
  }),
70
- timeoutAt: field.dateTime({
69
+ timeoutAt: _5.dateTime({
71
70
  isOptional: true,
72
71
  description: "Job timeout deadline"
73
72
  }),
74
- dedupeKey: field.string({
73
+ dedupeKey: _5.string({
75
74
  isOptional: true,
76
75
  description: "Key for deduplication"
77
76
  }),
78
- tenantId: field.string({
77
+ tenantId: _5.string({
79
78
  isOptional: true,
80
79
  description: "Tenant/org context"
81
80
  }),
82
- userId: field.string({
81
+ userId: _5.string({
83
82
  isOptional: true,
84
83
  description: "User who enqueued"
85
84
  }),
86
- traceId: field.string({
85
+ traceId: _5.string({
87
86
  isOptional: true,
88
87
  description: "Distributed trace ID"
89
88
  }),
90
- metadata: field.json({
89
+ metadata: _5.json({
91
90
  isOptional: true,
92
91
  description: "Additional metadata"
93
92
  }),
94
- result: field.json({
93
+ result: _5.json({
95
94
  isOptional: true,
96
95
  description: "Job result data"
97
96
  }),
98
- createdAt: field.createdAt(),
99
- updatedAt: field.updatedAt(),
100
- scheduledJob: field.belongsTo("ScheduledJob", ["scheduledJobId"], ["id"]),
101
- scheduledJobId: field.string({ isOptional: true }),
102
- executions: field.hasMany("JobExecution")
97
+ createdAt: _5.createdAt(),
98
+ updatedAt: _5.updatedAt(),
99
+ scheduledJob: _5.belongsTo("ScheduledJob", ["scheduledJobId"], ["id"]),
100
+ scheduledJobId: _5.string({ isOptional: true }),
101
+ executions: _5.hasMany("JobExecution")
103
102
  },
104
103
  indexes: [
105
- index.on(["status", "scheduledAt"]),
106
- index.on(["type", "status"]),
107
- index.on(["tenantId", "status"]),
108
- index.unique(["dedupeKey"], { name: "job_dedupe_key_unique" })
104
+ b5.on(["status", "scheduledAt"]),
105
+ b5.on(["type", "status"]),
106
+ b5.on(["tenantId", "status"]),
107
+ b5.unique(["dedupeKey"], { name: "job_dedupe_key_unique" })
109
108
  ],
110
109
  enums: [JobStatusEnum]
111
110
  });
112
111
  /**
113
112
  * ScheduledJob entity - recurring job definitions.
114
113
  */
115
- const ScheduledJobEntity = defineEntity({
114
+ const ScheduledJobEntity = L5({
116
115
  name: "ScheduledJob",
117
116
  description: "A scheduled/recurring job definition.",
118
117
  schema: "lssm_jobs",
119
118
  map: "scheduled_job",
120
119
  fields: {
121
- id: field.id(),
122
- name: field.string({
120
+ id: _5.id(),
121
+ name: _5.string({
123
122
  isUnique: true,
124
123
  description: "Unique schedule name"
125
124
  }),
126
- description: field.string({ isOptional: true }),
127
- cronExpression: field.string({ description: "Cron expression for scheduling" }),
128
- timezone: field.string({
125
+ description: _5.string({ isOptional: true }),
126
+ cronExpression: _5.string({ description: "Cron expression for scheduling" }),
127
+ timezone: _5.string({
129
128
  default: "\"UTC\"",
130
129
  description: "Timezone for cron evaluation"
131
130
  }),
132
- jobType: field.string({ description: "Job type to create" }),
133
- jobVersion: field.int({ default: 1 }),
134
- payload: field.json({
131
+ jobType: _5.string({ description: "Job type to create" }),
132
+ jobVersion: _5.int({ default: 1 }),
133
+ payload: _5.json({
135
134
  isOptional: true,
136
135
  description: "Default payload for created jobs"
137
136
  }),
138
- maxRetries: field.int({ default: 3 }),
139
- timeoutMs: field.int({
137
+ maxRetries: _5.int({ default: 3 }),
138
+ timeoutMs: _5.int({
140
139
  isOptional: true,
141
140
  description: "Job timeout in milliseconds"
142
141
  }),
143
- enabled: field.boolean({ default: true }),
144
- lastRunAt: field.dateTime({ isOptional: true }),
145
- nextRunAt: field.dateTime({ isOptional: true }),
146
- tenantId: field.string({ isOptional: true }),
147
- createdAt: field.createdAt(),
148
- updatedAt: field.updatedAt(),
149
- jobs: field.hasMany("Job")
142
+ enabled: _5.boolean({ default: true }),
143
+ lastRunAt: _5.dateTime({ isOptional: true }),
144
+ nextRunAt: _5.dateTime({ isOptional: true }),
145
+ tenantId: _5.string({ isOptional: true }),
146
+ createdAt: _5.createdAt(),
147
+ updatedAt: _5.updatedAt(),
148
+ jobs: _5.hasMany("Job")
150
149
  },
151
- indexes: [index.on(["enabled", "nextRunAt"])]
150
+ indexes: [b5.on(["enabled", "nextRunAt"])]
152
151
  });
153
152
  /**
154
153
  * JobExecution entity - individual execution attempts.
155
154
  */
156
- const JobExecutionEntity = defineEntity({
155
+ const JobExecutionEntity = L5({
157
156
  name: "JobExecution",
158
157
  description: "A single execution attempt of a job.",
159
158
  schema: "lssm_jobs",
160
159
  map: "job_execution",
161
160
  fields: {
162
- id: field.id(),
163
- jobId: field.foreignKey(),
164
- attemptNumber: field.int({ description: "Which attempt this is" }),
165
- startedAt: field.dateTime(),
166
- completedAt: field.dateTime({ isOptional: true }),
167
- durationMs: field.int({ isOptional: true }),
168
- success: field.boolean({ isOptional: true }),
169
- error: field.string({ isOptional: true }),
170
- errorStack: field.string({ isOptional: true }),
171
- result: field.json({ isOptional: true }),
172
- workerId: field.string({
161
+ id: _5.id(),
162
+ jobId: _5.foreignKey(),
163
+ attemptNumber: _5.int({ description: "Which attempt this is" }),
164
+ startedAt: _5.dateTime(),
165
+ completedAt: _5.dateTime({ isOptional: true }),
166
+ durationMs: _5.int({ isOptional: true }),
167
+ success: _5.boolean({ isOptional: true }),
168
+ error: _5.string({ isOptional: true }),
169
+ errorStack: _5.string({ isOptional: true }),
170
+ result: _5.json({ isOptional: true }),
171
+ workerId: _5.string({
173
172
  isOptional: true,
174
173
  description: "ID of worker that processed"
175
174
  }),
176
- job: field.belongsTo("Job", ["jobId"], ["id"], { onDelete: "Cascade" })
175
+ job: _5.belongsTo("Job", ["jobId"], ["id"], { onDelete: "Cascade" })
177
176
  },
178
- indexes: [index.on(["jobId", "attemptNumber"])]
177
+ indexes: [b5.on(["jobId", "attemptNumber"])]
179
178
  });
180
179
  /**
181
180
  * All job entities for schema composition.
@@ -195,4 +194,5 @@ const jobsSchemaContribution = {
195
194
  };
196
195
 
197
196
  //#endregion
198
- export { JobEntity, JobExecutionEntity, JobStatusEnum, ScheduledJobEntity, jobEntities, jobsSchemaContribution };
197
+ export { JobEntity, JobExecutionEntity, JobStatusEnum, ScheduledJobEntity, jobEntities, jobsSchemaContribution };
198
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["defineEntityEnum","defineEntity","field","index","jobsSchemaContribution: ModuleSchemaContribution"],"sources":["../../src/entities/index.ts"],"sourcesContent":["import { defineEntity, defineEntityEnum, field, index } from '@lssm/lib.schema';\nimport type { ModuleSchemaContribution } from '@lssm/lib.schema';\n\n/**\n * Job status enum.\n */\nexport const JobStatusEnum = defineEntityEnum({\n name: 'JobStatus',\n values: [\n 'PENDING',\n 'RUNNING',\n 'COMPLETED',\n 'FAILED',\n 'CANCELLED',\n 'DEAD_LETTER',\n ] as const,\n schema: 'lssm_jobs',\n description: 'Status of a background job.',\n});\n\n/**\n * Job entity - represents a single job execution.\n */\nexport const JobEntity = defineEntity({\n name: 'Job',\n description: 'A background job for async processing.',\n schema: 'lssm_jobs',\n map: 'job',\n fields: {\n id: field.id({ description: 'Unique job identifier' }),\n type: field.string({ description: 'Job type identifier' }),\n version: field.int({ default: 1, description: 'Job type version' }),\n payload: field.json({ description: 'Job payload data' }),\n status: field.enum('JobStatus', { default: 'PENDING' }),\n priority: field.int({ default: 0, description: 'Higher = more urgent' }),\n\n // Execution tracking\n attempts: field.int({\n default: 0,\n description: 'Number of execution attempts',\n }),\n maxRetries: field.int({\n default: 3,\n description: 'Maximum retry attempts',\n }),\n lastError: field.string({\n isOptional: true,\n description: 'Last error message',\n }),\n lastErrorStack: field.string({\n isOptional: true,\n description: 'Last error stack trace',\n }),\n\n // Timing\n scheduledAt: field.dateTime({\n isOptional: true,\n description: 'When job should be processed',\n }),\n startedAt: field.dateTime({\n isOptional: true,\n description: 'When processing started',\n }),\n completedAt: field.dateTime({\n isOptional: true,\n description: 'When processing completed',\n }),\n timeoutAt: field.dateTime({\n isOptional: true,\n description: 'Job timeout deadline',\n }),\n\n // Deduplication\n dedupeKey: field.string({\n isOptional: true,\n description: 'Key for deduplication',\n }),\n\n // Context\n tenantId: field.string({\n isOptional: true,\n description: 'Tenant/org context',\n }),\n userId: field.string({\n isOptional: true,\n description: 'User who enqueued',\n }),\n traceId: field.string({\n isOptional: true,\n description: 'Distributed trace ID',\n }),\n\n // Metadata\n metadata: field.json({\n isOptional: true,\n description: 'Additional metadata',\n }),\n result: field.json({ isOptional: true, description: 'Job result data' }),\n\n // Timestamps\n createdAt: field.createdAt(),\n updatedAt: field.updatedAt(),\n\n // Relations\n scheduledJob: field.belongsTo('ScheduledJob', ['scheduledJobId'], ['id']),\n scheduledJobId: field.string({ isOptional: true }),\n executions: field.hasMany('JobExecution'),\n },\n indexes: [\n index.on(['status', 'scheduledAt']),\n index.on(['type', 'status']),\n index.on(['tenantId', 'status']),\n index.unique(['dedupeKey'], { name: 'job_dedupe_key_unique' }),\n ],\n enums: [JobStatusEnum],\n});\n\n/**\n * ScheduledJob entity - recurring job definitions.\n */\nexport const ScheduledJobEntity = defineEntity({\n name: 'ScheduledJob',\n description: 'A scheduled/recurring job definition.',\n schema: 'lssm_jobs',\n map: 'scheduled_job',\n fields: {\n id: field.id(),\n name: field.string({ isUnique: true, description: 'Unique schedule name' }),\n description: field.string({ isOptional: true }),\n\n // Schedule definition\n cronExpression: field.string({\n description: 'Cron expression for scheduling',\n }),\n timezone: field.string({\n default: '\"UTC\"',\n description: 'Timezone for cron evaluation',\n }),\n\n // Job template\n jobType: field.string({ description: 'Job type to create' }),\n jobVersion: field.int({ default: 1 }),\n payload: field.json({\n isOptional: true,\n description: 'Default payload for created jobs',\n }),\n\n // Execution settings\n maxRetries: field.int({ default: 3 }),\n timeoutMs: field.int({\n isOptional: true,\n description: 'Job timeout in milliseconds',\n }),\n\n // State\n enabled: field.boolean({ default: true }),\n lastRunAt: field.dateTime({ isOptional: true }),\n nextRunAt: field.dateTime({ isOptional: true }),\n\n // Context\n tenantId: field.string({ isOptional: true }),\n\n // Timestamps\n createdAt: field.createdAt(),\n updatedAt: field.updatedAt(),\n\n // Relations\n jobs: field.hasMany('Job'),\n },\n indexes: [index.on(['enabled', 'nextRunAt'])],\n});\n\n/**\n * JobExecution entity - individual execution attempts.\n */\nexport const JobExecutionEntity = defineEntity({\n name: 'JobExecution',\n description: 'A single execution attempt of a job.',\n schema: 'lssm_jobs',\n map: 'job_execution',\n fields: {\n id: field.id(),\n jobId: field.foreignKey(),\n attemptNumber: field.int({ description: 'Which attempt this is' }),\n\n // Execution details\n startedAt: field.dateTime(),\n completedAt: field.dateTime({ isOptional: true }),\n durationMs: field.int({ isOptional: true }),\n\n // Result\n success: field.boolean({ isOptional: true }),\n error: field.string({ isOptional: true }),\n errorStack: field.string({ isOptional: true }),\n result: field.json({ isOptional: true }),\n\n // Worker info\n workerId: field.string({\n isOptional: true,\n description: 'ID of worker that processed',\n }),\n\n // Relations\n job: field.belongsTo('Job', ['jobId'], ['id'], { onDelete: 'Cascade' }),\n },\n indexes: [index.on(['jobId', 'attemptNumber'])],\n});\n\n/**\n * All job entities for schema composition.\n */\nexport const jobEntities = [JobEntity, ScheduledJobEntity, JobExecutionEntity];\n\n/**\n * Module schema contribution for jobs.\n */\nexport const jobsSchemaContribution: ModuleSchemaContribution = {\n moduleId: '@lssm/lib.jobs',\n entities: jobEntities,\n enums: [JobStatusEnum],\n};\n"],"mappings":"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"}