@elevasis/core 0.23.0 → 0.24.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 (241) hide show
  1. package/dist/index.d.ts +1326 -552
  2. package/dist/index.js +869 -154
  3. package/dist/knowledge/index.d.ts +487 -209
  4. package/dist/knowledge/index.js +104 -1
  5. package/dist/organization-model/index.d.ts +1326 -552
  6. package/dist/organization-model/index.js +869 -154
  7. package/dist/test-utils/index.d.ts +357 -72
  8. package/dist/test-utils/index.js +795 -142
  9. package/package.json +5 -5
  10. package/src/README.md +14 -14
  11. package/src/__tests__/publish.test.ts +24 -24
  12. package/src/__tests__/template-core-compatibility.test.ts +9 -12
  13. package/src/_gen/__tests__/__snapshots__/contracts.md.snap +2102 -2096
  14. package/src/_gen/__tests__/scaffold-contracts.test.ts +30 -30
  15. package/src/auth/multi-tenancy/credentials/__tests__/encryption.test.ts +217 -217
  16. package/src/auth/multi-tenancy/credentials/server/encryption.ts +69 -69
  17. package/src/auth/multi-tenancy/credentials/server/kek-loader.ts +37 -37
  18. package/src/auth/multi-tenancy/index.ts +26 -26
  19. package/src/auth/multi-tenancy/invitations/api-schemas.ts +104 -104
  20. package/src/auth/multi-tenancy/memberships/api-schemas.ts +143 -143
  21. package/src/auth/multi-tenancy/memberships/index.ts +26 -26
  22. package/src/auth/multi-tenancy/memberships/membership.ts +130 -130
  23. package/src/auth/multi-tenancy/organizations/__tests__/api-schemas.test.ts +194 -194
  24. package/src/auth/multi-tenancy/organizations/api-schemas.ts +136 -136
  25. package/src/auth/multi-tenancy/permissions.test.ts +42 -42
  26. package/src/auth/multi-tenancy/permissions.ts +123 -123
  27. package/src/auth/multi-tenancy/role-management/api-schemas.ts +78 -78
  28. package/src/auth/multi-tenancy/role-management/index.ts +16 -16
  29. package/src/auth/multi-tenancy/theme-presets.ts +45 -45
  30. package/src/auth/multi-tenancy/types.ts +57 -57
  31. package/src/auth/multi-tenancy/users/api-schemas.ts +165 -165
  32. package/src/business/README.md +2 -2
  33. package/src/business/acquisition/activity-events.test.ts +250 -250
  34. package/src/business/acquisition/activity-events.ts +93 -93
  35. package/src/business/acquisition/api-schemas.test.ts +1883 -1843
  36. package/src/business/acquisition/api-schemas.ts +1492 -1497
  37. package/src/business/acquisition/build-templates.test.ts +240 -240
  38. package/src/business/acquisition/build-templates.ts +98 -98
  39. package/src/business/acquisition/crm-next-action.test.ts +262 -262
  40. package/src/business/acquisition/crm-next-action.ts +220 -220
  41. package/src/business/acquisition/crm-priority.test.ts +216 -216
  42. package/src/business/acquisition/crm-priority.ts +349 -349
  43. package/src/business/acquisition/crm-state-actions.test.ts +153 -153
  44. package/src/business/acquisition/deal-ownership.test.ts +351 -351
  45. package/src/business/acquisition/deal-ownership.ts +120 -120
  46. package/src/business/acquisition/derive-actions.test.ts +129 -104
  47. package/src/business/acquisition/derive-actions.ts +74 -84
  48. package/src/business/acquisition/index.ts +171 -170
  49. package/src/business/acquisition/ontology-validation.ts +309 -0
  50. package/src/business/acquisition/stateful.ts +30 -30
  51. package/src/business/acquisition/types.ts +396 -396
  52. package/src/business/clients/api-schemas.test.ts +115 -115
  53. package/src/business/clients/api-schemas.ts +158 -158
  54. package/src/business/clients/index.ts +1 -1
  55. package/src/business/crm/api-schemas.ts +40 -40
  56. package/src/business/crm/index.ts +1 -1
  57. package/src/business/deals/api-schemas.ts +87 -87
  58. package/src/business/deals/index.ts +1 -1
  59. package/src/business/index.ts +5 -5
  60. package/src/business/projects/types.ts +144 -144
  61. package/src/commands/queue/types/task.ts +15 -15
  62. package/src/execution/core/runner-types.ts +61 -61
  63. package/src/execution/core/sse-executions.ts +7 -7
  64. package/src/execution/engine/__tests__/fixtures/test-agents.ts +10 -10
  65. package/src/execution/engine/agent/core/__tests__/agent.test.ts +16 -16
  66. package/src/execution/engine/agent/core/__tests__/error-passthrough.test.ts +4 -4
  67. package/src/execution/engine/agent/core/types.ts +25 -25
  68. package/src/execution/engine/agent/index.ts +6 -6
  69. package/src/execution/engine/agent/reasoning/__tests__/request-builder.test.ts +24 -24
  70. package/src/execution/engine/index.ts +443 -443
  71. package/src/execution/engine/tools/integration/server/adapters/apify/__tests__/apify-run-actor.integration.test.ts +298 -298
  72. package/src/execution/engine/tools/integration/server/adapters/apify/apify-adapter.test.ts +55 -55
  73. package/src/execution/engine/tools/integration/server/adapters/apify/apify-adapter.ts +107 -107
  74. package/src/execution/engine/tools/integration/server/adapters/apollo/apollo-adapter.test.ts +48 -48
  75. package/src/execution/engine/tools/integration/server/adapters/apollo/apollo-adapter.ts +99 -99
  76. package/src/execution/engine/tools/integration/server/adapters/apollo/index.ts +1 -1
  77. package/src/execution/engine/tools/integration/server/adapters/attio/__tests__/attio-crud.integration.test.ts +363 -363
  78. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/get-record/index.test.ts +162 -162
  79. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-records/index.test.ts +316 -316
  80. package/src/execution/engine/tools/integration/server/adapters/clickup/clickup-adapter.test.ts +18 -18
  81. package/src/execution/engine/tools/integration/server/adapters/clickup/clickup-adapter.ts +194 -194
  82. package/src/execution/engine/tools/integration/server/adapters/clickup/index.ts +7 -7
  83. package/src/execution/engine/tools/integration/server/adapters/gmail/gmail-adapter.ts +204 -204
  84. package/src/execution/engine/tools/integration/server/adapters/gmail/gmail-tools.ts +105 -105
  85. package/src/execution/engine/tools/integration/server/adapters/google-calendar/google-calendar-adapter.ts +428 -428
  86. package/src/execution/engine/tools/integration/server/adapters/google-calendar/index.ts +2 -2
  87. package/src/execution/engine/tools/integration/server/adapters/google-sheets/__tests__/google-sheets.integration.test.ts +261 -261
  88. package/src/execution/engine/tools/integration/server/adapters/instantly/instantly-tools.ts +1474 -1474
  89. package/src/execution/engine/tools/integration/server/adapters/millionverifier/millionverifier-tools.ts +103 -103
  90. package/src/execution/engine/tools/integration/server/adapters/resend/fetch/send-email/index.test.ts +88 -88
  91. package/src/execution/engine/tools/integration/server/adapters/resend/fetch/send-email/index.ts +141 -141
  92. package/src/execution/engine/tools/integration/server/adapters/resend/fetch/utils/types.ts +76 -76
  93. package/src/execution/engine/tools/integration/server/adapters/signature-api/signature-api-tools.ts +182 -182
  94. package/src/execution/engine/tools/integration/server/adapters/stripe/stripe-tools.ts +310 -310
  95. package/src/execution/engine/tools/integration/service.test.ts +239 -239
  96. package/src/execution/engine/tools/integration/service.ts +172 -172
  97. package/src/execution/engine/tools/integration/tool.ts +255 -255
  98. package/src/execution/engine/tools/lead-service-types.ts +1005 -1005
  99. package/src/execution/engine/tools/messages.ts +43 -43
  100. package/src/execution/engine/tools/platform/acquisition/company-tools.ts +7 -7
  101. package/src/execution/engine/tools/platform/acquisition/contact-tools.ts +6 -6
  102. package/src/execution/engine/tools/platform/acquisition/list-tools.ts +6 -6
  103. package/src/execution/engine/tools/platform/acquisition/types.ts +280 -280
  104. package/src/execution/engine/tools/platform/email/types.ts +97 -97
  105. package/src/execution/engine/tools/registry.ts +704 -704
  106. package/src/execution/engine/tools/tool-maps.ts +831 -831
  107. package/src/execution/engine/tools/types.ts +234 -234
  108. package/src/execution/engine/workflow/types.ts +202 -202
  109. package/src/execution/external/__tests__/api-schemas.test.ts +127 -127
  110. package/src/execution/external/api-schemas.ts +40 -40
  111. package/src/execution/external/index.ts +1 -1
  112. package/src/index.ts +18 -18
  113. package/src/integrations/credentials/__tests__/api-schemas.test.ts +420 -420
  114. package/src/integrations/credentials/api-schemas.ts +146 -146
  115. package/src/integrations/credentials/schemas.ts +200 -200
  116. package/src/integrations/oauth/__tests__/provider-registry.test.ts +7 -7
  117. package/src/integrations/oauth/provider-registry.ts +74 -74
  118. package/src/integrations/oauth/server/credentials.ts +43 -43
  119. package/src/integrations/webhook-endpoints/__tests__/api-schemas.test.ts +327 -327
  120. package/src/integrations/webhook-endpoints/api-schemas.ts +103 -103
  121. package/src/integrations/webhook-endpoints/types.ts +58 -58
  122. package/src/knowledge/README.md +32 -32
  123. package/src/knowledge/__tests__/queries.test.ts +626 -535
  124. package/src/knowledge/format.ts +99 -99
  125. package/src/knowledge/index.ts +5 -5
  126. package/src/knowledge/published.ts +5 -5
  127. package/src/knowledge/queries.ts +269 -218
  128. package/src/operations/activities/api-schemas.ts +80 -80
  129. package/src/operations/activities/types.ts +64 -64
  130. package/src/organization-model/README.md +149 -149
  131. package/src/organization-model/__tests__/content-kinds-registry.test.ts +210 -210
  132. package/src/organization-model/__tests__/defaults.test.ts +168 -168
  133. package/src/organization-model/__tests__/domains/actions.test.ts +78 -56
  134. package/src/organization-model/__tests__/domains/customers.test.ts +299 -299
  135. package/src/organization-model/__tests__/domains/entities.test.ts +56 -56
  136. package/src/organization-model/__tests__/domains/goals.test.ts +493 -493
  137. package/src/organization-model/__tests__/domains/identity.test.ts +280 -280
  138. package/src/organization-model/__tests__/domains/navigation.test.ts +268 -268
  139. package/src/organization-model/__tests__/domains/offerings.test.ts +414 -414
  140. package/src/organization-model/__tests__/domains/policies.test.ts +323 -323
  141. package/src/organization-model/__tests__/domains/resource-mappings.test.ts +293 -293
  142. package/src/organization-model/__tests__/domains/resources.test.ts +382 -283
  143. package/src/organization-model/__tests__/domains/roles.test.ts +463 -463
  144. package/src/organization-model/__tests__/domains/statuses.test.ts +246 -246
  145. package/src/organization-model/__tests__/domains/systems.test.ts +209 -209
  146. package/src/organization-model/__tests__/flatten-additive-merge.test.ts +362 -361
  147. package/src/organization-model/__tests__/foundation.test.ts +77 -77
  148. package/src/organization-model/__tests__/get-resources-for-system.test.ts +144 -144
  149. package/src/organization-model/__tests__/graph.test.ts +1246 -887
  150. package/src/organization-model/__tests__/icons.test.ts +10 -1
  151. package/src/organization-model/__tests__/knowledge.test.ts +251 -15
  152. package/src/organization-model/__tests__/lookup-helpers.test.ts +438 -438
  153. package/src/organization-model/__tests__/migration-helpers.test.ts +591 -591
  154. package/src/organization-model/__tests__/prospecting-ssot.test.ts +103 -103
  155. package/src/organization-model/__tests__/recursive-system-schema.test.ts +535 -506
  156. package/src/organization-model/__tests__/resolve.test.ts +274 -164
  157. package/src/organization-model/__tests__/schema.test.ts +834 -301
  158. package/src/organization-model/__tests__/surface-projection.test.ts +284 -284
  159. package/src/organization-model/catalogs/lead-gen.ts +144 -144
  160. package/src/organization-model/content-kinds/config.ts +36 -36
  161. package/src/organization-model/content-kinds/index.ts +76 -72
  162. package/src/organization-model/content-kinds/pipeline.ts +68 -68
  163. package/src/organization-model/content-kinds/registry.ts +44 -44
  164. package/src/organization-model/content-kinds/status.ts +71 -71
  165. package/src/organization-model/content-kinds/template.ts +83 -83
  166. package/src/organization-model/content-kinds/types.ts +117 -117
  167. package/src/organization-model/contracts.ts +27 -27
  168. package/src/organization-model/defaults.ts +40 -50
  169. package/src/organization-model/domains/actions.ts +333 -239
  170. package/src/organization-model/domains/customers.ts +78 -78
  171. package/src/organization-model/domains/entities.ts +144 -144
  172. package/src/organization-model/domains/goals.ts +83 -83
  173. package/src/organization-model/domains/knowledge.ts +117 -101
  174. package/src/organization-model/domains/navigation.ts +139 -139
  175. package/src/organization-model/domains/offerings.ts +71 -71
  176. package/src/organization-model/domains/policies.ts +102 -102
  177. package/src/organization-model/domains/projects.ts +14 -14
  178. package/src/organization-model/domains/prospecting.ts +395 -395
  179. package/src/organization-model/domains/resources.ts +167 -132
  180. package/src/organization-model/domains/roles.ts +96 -96
  181. package/src/organization-model/domains/sales.test.ts +218 -218
  182. package/src/organization-model/domains/sales.ts +380 -380
  183. package/src/organization-model/domains/shared.ts +63 -63
  184. package/src/organization-model/domains/statuses.ts +339 -339
  185. package/src/organization-model/domains/systems.ts +217 -172
  186. package/src/organization-model/foundation.ts +75 -75
  187. package/src/organization-model/graph/build.ts +1016 -888
  188. package/src/organization-model/graph/index.ts +4 -4
  189. package/src/organization-model/graph/link.ts +10 -10
  190. package/src/organization-model/graph/schema.ts +76 -70
  191. package/src/organization-model/graph/types.ts +73 -67
  192. package/src/organization-model/helpers.ts +289 -241
  193. package/src/organization-model/icons.ts +78 -66
  194. package/src/organization-model/index.ts +130 -128
  195. package/src/organization-model/migration-helpers.ts +247 -244
  196. package/src/organization-model/ontology.ts +661 -0
  197. package/src/organization-model/organization-graph.mdx +110 -90
  198. package/src/organization-model/organization-model.mdx +226 -219
  199. package/src/organization-model/published.ts +289 -235
  200. package/src/organization-model/resolve.ts +146 -91
  201. package/src/organization-model/schema.ts +790 -671
  202. package/src/organization-model/surface-projection.ts +212 -212
  203. package/src/organization-model/types.ts +177 -167
  204. package/src/platform/api/types.ts +38 -38
  205. package/src/platform/constants/versions.ts +3 -3
  206. package/src/platform/index.ts +23 -23
  207. package/src/platform/registry/__tests__/command-view.test.ts +10 -10
  208. package/src/platform/registry/__tests__/resource-link.test.ts +35 -35
  209. package/src/platform/registry/__tests__/resource-registry.integration.test.ts +20 -20
  210. package/src/platform/registry/__tests__/resource-registry.nested-systems.test.ts +245 -245
  211. package/src/platform/registry/__tests__/resource-registry.test.ts +2053 -2053
  212. package/src/platform/registry/__tests__/validation.test.ts +1347 -1347
  213. package/src/platform/registry/command-view.ts +10 -10
  214. package/src/platform/registry/index.ts +103 -103
  215. package/src/platform/registry/resource-link.ts +32 -32
  216. package/src/platform/registry/resource-registry.ts +890 -890
  217. package/src/platform/registry/serialization.ts +295 -295
  218. package/src/platform/registry/serialized-types.ts +166 -166
  219. package/src/platform/registry/stats-types.ts +68 -68
  220. package/src/platform/registry/types.ts +425 -425
  221. package/src/platform/registry/validation.ts +745 -745
  222. package/src/platform/utils/__tests__/validation.test.ts +1084 -1084
  223. package/src/platform/utils/validation.ts +425 -425
  224. package/src/projects/api-schemas.test.ts +39 -39
  225. package/src/projects/api-schemas.ts +291 -291
  226. package/src/reference/_generated/contracts.md +2101 -2096
  227. package/src/reference/glossary.md +76 -76
  228. package/src/scaffold-registry/__tests__/index.test.ts +206 -206
  229. package/src/scaffold-registry/__tests__/schema.test.ts +166 -166
  230. package/src/scaffold-registry/index.ts +392 -392
  231. package/src/scaffold-registry/schema.ts +243 -243
  232. package/src/server.ts +289 -289
  233. package/src/supabase/database.types.ts +3153 -3153
  234. package/src/test-utils/README.md +37 -37
  235. package/src/test-utils/entities.ts +108 -108
  236. package/src/test-utils/fixtures/memberships.ts +82 -82
  237. package/src/test-utils/index.ts +12 -12
  238. package/src/test-utils/organization-model.ts +65 -65
  239. package/src/test-utils/published.ts +6 -6
  240. package/src/test-utils/rls/RLSTestContext.ts +588 -588
  241. package/src/test-utils/test-utils.test.ts +44 -44
@@ -1,339 +1,339 @@
1
- import { z } from 'zod'
2
-
3
- // ---------------------------------------------------------------------------
4
- // Semantic class enum — one value per status category.
5
- // Every status entry declares which category it belongs to via semanticClass.
6
- // ---------------------------------------------------------------------------
7
-
8
- export const StatusSemanticClassSchema = z.enum([
9
- 'delivery.task',
10
- 'delivery.project',
11
- 'delivery.milestone',
12
- 'queue',
13
- 'execution',
14
- 'schedule',
15
- 'schedule.run',
16
- 'request'
17
- ])
18
-
19
- // ---------------------------------------------------------------------------
20
- // Status entry schema
21
- // ---------------------------------------------------------------------------
22
-
23
- export const StatusEntrySchema = z.object({
24
- id: z.string().trim().min(1).max(100),
25
- /** Domain-map iteration order. Convention: multiples of 10 (10, 20, 30, ...) to allow easy insertion. */
26
- order: z.number(),
27
- label: z.string().trim().min(1).max(120),
28
- semanticClass: StatusSemanticClassSchema,
29
- category: z.string().trim().min(1).max(80).optional()
30
- })
31
-
32
- // ---------------------------------------------------------------------------
33
- // Domain schema — id-keyed map of status entries
34
- // ---------------------------------------------------------------------------
35
-
36
- export const StatusesDomainSchema = z
37
- .record(z.string(), StatusEntrySchema)
38
- .refine((record) => Object.entries(record).every(([key, entry]) => entry.id === key), {
39
- message: 'Each status entry id must match its map key'
40
- })
41
- .default({})
42
-
43
- // ---------------------------------------------------------------------------
44
- // Seed — covers all status enums in scope (delivery, queue, execution,
45
- // schedule, schedule.run, request). Delivery project/milestone statuses are
46
- // included here as semantic references; they mirror delivery.ts but live in
47
- // the statuses domain as the vibe-readable registry.
48
- // ---------------------------------------------------------------------------
49
-
50
- export type StatusEntry = z.infer<typeof StatusEntrySchema>
51
- export type StatusesDomain = z.infer<typeof StatusesDomainSchema>
52
-
53
- export const DEFAULT_ORGANIZATION_MODEL_STATUSES: StatusesDomain = {
54
- // --- delivery.task (TaskStatus — 9 values) ---
55
- 'delivery.task.planned': {
56
- id: 'delivery.task.planned',
57
- order: 10,
58
- label: 'Planned',
59
- semanticClass: 'delivery.task',
60
- category: 'delivery'
61
- },
62
- 'delivery.task.in_progress': {
63
- id: 'delivery.task.in_progress',
64
- order: 20,
65
- label: 'In Progress',
66
- semanticClass: 'delivery.task',
67
- category: 'delivery'
68
- },
69
- 'delivery.task.blocked': {
70
- id: 'delivery.task.blocked',
71
- order: 30,
72
- label: 'Blocked',
73
- semanticClass: 'delivery.task',
74
- category: 'delivery'
75
- },
76
- 'delivery.task.submitted': {
77
- id: 'delivery.task.submitted',
78
- order: 40,
79
- label: 'Submitted',
80
- semanticClass: 'delivery.task',
81
- category: 'delivery'
82
- },
83
- 'delivery.task.approved': {
84
- id: 'delivery.task.approved',
85
- order: 50,
86
- label: 'Approved',
87
- semanticClass: 'delivery.task',
88
- category: 'delivery'
89
- },
90
- 'delivery.task.revision_requested': {
91
- id: 'delivery.task.revision_requested',
92
- order: 60,
93
- label: 'Revision Requested',
94
- semanticClass: 'delivery.task',
95
- category: 'delivery'
96
- },
97
- 'delivery.task.rejected': {
98
- id: 'delivery.task.rejected',
99
- order: 70,
100
- label: 'Rejected',
101
- semanticClass: 'delivery.task',
102
- category: 'delivery'
103
- },
104
- 'delivery.task.cancelled': {
105
- id: 'delivery.task.cancelled',
106
- order: 80,
107
- label: 'Cancelled',
108
- semanticClass: 'delivery.task',
109
- category: 'delivery'
110
- },
111
- 'delivery.task.completed': {
112
- id: 'delivery.task.completed',
113
- order: 90,
114
- label: 'Completed',
115
- semanticClass: 'delivery.task',
116
- category: 'delivery'
117
- },
118
-
119
- // --- delivery.project (ProjectStatus — 6 values) ---
120
- 'delivery.project.active': {
121
- id: 'delivery.project.active',
122
- order: 100,
123
- label: 'Active',
124
- semanticClass: 'delivery.project',
125
- category: 'delivery'
126
- },
127
- 'delivery.project.on_track': {
128
- id: 'delivery.project.on_track',
129
- order: 110,
130
- label: 'On Track',
131
- semanticClass: 'delivery.project',
132
- category: 'delivery'
133
- },
134
- 'delivery.project.at_risk': {
135
- id: 'delivery.project.at_risk',
136
- order: 120,
137
- label: 'At Risk',
138
- semanticClass: 'delivery.project',
139
- category: 'delivery'
140
- },
141
- 'delivery.project.blocked': {
142
- id: 'delivery.project.blocked',
143
- order: 130,
144
- label: 'Blocked',
145
- semanticClass: 'delivery.project',
146
- category: 'delivery'
147
- },
148
- 'delivery.project.paused': {
149
- id: 'delivery.project.paused',
150
- order: 140,
151
- label: 'Paused',
152
- semanticClass: 'delivery.project',
153
- category: 'delivery'
154
- },
155
- 'delivery.project.completed': {
156
- id: 'delivery.project.completed',
157
- order: 150,
158
- label: 'Completed',
159
- semanticClass: 'delivery.project',
160
- category: 'delivery'
161
- },
162
-
163
- // --- delivery.milestone (MilestoneStatus — 5 values) ---
164
- 'delivery.milestone.upcoming': {
165
- id: 'delivery.milestone.upcoming',
166
- order: 160,
167
- label: 'Upcoming',
168
- semanticClass: 'delivery.milestone',
169
- category: 'delivery'
170
- },
171
- 'delivery.milestone.in_progress': {
172
- id: 'delivery.milestone.in_progress',
173
- order: 170,
174
- label: 'In Progress',
175
- semanticClass: 'delivery.milestone',
176
- category: 'delivery'
177
- },
178
- 'delivery.milestone.blocked': {
179
- id: 'delivery.milestone.blocked',
180
- order: 180,
181
- label: 'Blocked',
182
- semanticClass: 'delivery.milestone',
183
- category: 'delivery'
184
- },
185
- 'delivery.milestone.overdue': {
186
- id: 'delivery.milestone.overdue',
187
- order: 190,
188
- label: 'Overdue',
189
- semanticClass: 'delivery.milestone',
190
- category: 'delivery'
191
- },
192
- 'delivery.milestone.completed': {
193
- id: 'delivery.milestone.completed',
194
- order: 200,
195
- label: 'Completed',
196
- semanticClass: 'delivery.milestone',
197
- category: 'delivery'
198
- },
199
-
200
- // --- queue (QueueTaskStatus — 5 values, maps hitl/command-queue tasks) ---
201
- 'queue.pending': { id: 'queue.pending', order: 210, label: 'Pending', semanticClass: 'queue', category: 'queue' },
202
- 'queue.processing': {
203
- id: 'queue.processing',
204
- order: 220,
205
- label: 'Processing',
206
- semanticClass: 'queue',
207
- category: 'queue'
208
- },
209
- 'queue.completed': {
210
- id: 'queue.completed',
211
- order: 230,
212
- label: 'Completed',
213
- semanticClass: 'queue',
214
- category: 'queue'
215
- },
216
- 'queue.failed': { id: 'queue.failed', order: 240, label: 'Failed', semanticClass: 'queue', category: 'queue' },
217
- 'queue.expired': { id: 'queue.expired', order: 250, label: 'Expired', semanticClass: 'queue', category: 'queue' },
218
-
219
- // --- execution (ExecutionStatus — 5 values) ---
220
- 'execution.pending': {
221
- id: 'execution.pending',
222
- order: 260,
223
- label: 'Pending',
224
- semanticClass: 'execution',
225
- category: 'execution'
226
- },
227
- 'execution.running': {
228
- id: 'execution.running',
229
- order: 270,
230
- label: 'Running',
231
- semanticClass: 'execution',
232
- category: 'execution'
233
- },
234
- 'execution.completed': {
235
- id: 'execution.completed',
236
- order: 280,
237
- label: 'Completed',
238
- semanticClass: 'execution',
239
- category: 'execution'
240
- },
241
- 'execution.failed': {
242
- id: 'execution.failed',
243
- order: 290,
244
- label: 'Failed',
245
- semanticClass: 'execution',
246
- category: 'execution'
247
- },
248
- 'execution.warning': {
249
- id: 'execution.warning',
250
- order: 300,
251
- label: 'Warning',
252
- semanticClass: 'execution',
253
- category: 'execution'
254
- },
255
-
256
- // --- schedule (schedule status — 4 values) ---
257
- 'schedule.active': {
258
- id: 'schedule.active',
259
- order: 310,
260
- label: 'Active',
261
- semanticClass: 'schedule',
262
- category: 'schedule'
263
- },
264
- 'schedule.paused': {
265
- id: 'schedule.paused',
266
- order: 320,
267
- label: 'Paused',
268
- semanticClass: 'schedule',
269
- category: 'schedule'
270
- },
271
- 'schedule.completed': {
272
- id: 'schedule.completed',
273
- order: 330,
274
- label: 'Completed',
275
- semanticClass: 'schedule',
276
- category: 'schedule'
277
- },
278
- 'schedule.cancelled': {
279
- id: 'schedule.cancelled',
280
- order: 340,
281
- label: 'Cancelled',
282
- semanticClass: 'schedule',
283
- category: 'schedule'
284
- },
285
-
286
- // --- schedule.run (schedule run status — 4 values) ---
287
- 'schedule.run.running': {
288
- id: 'schedule.run.running',
289
- order: 350,
290
- label: 'Running',
291
- semanticClass: 'schedule.run',
292
- category: 'schedule'
293
- },
294
- 'schedule.run.completed': {
295
- id: 'schedule.run.completed',
296
- order: 360,
297
- label: 'Completed',
298
- semanticClass: 'schedule.run',
299
- category: 'schedule'
300
- },
301
- 'schedule.run.failed': {
302
- id: 'schedule.run.failed',
303
- order: 370,
304
- label: 'Failed',
305
- semanticClass: 'schedule.run',
306
- category: 'schedule'
307
- },
308
- 'schedule.run.cancelled': {
309
- id: 'schedule.run.cancelled',
310
- order: 380,
311
- label: 'Cancelled',
312
- semanticClass: 'schedule.run',
313
- category: 'schedule'
314
- },
315
-
316
- // --- request (RequestStatus — 4 values, maps reported_requests) ---
317
- 'request.open': { id: 'request.open', order: 390, label: 'Open', semanticClass: 'request', category: 'request' },
318
- 'request.investigating': {
319
- id: 'request.investigating',
320
- order: 400,
321
- label: 'Investigating',
322
- semanticClass: 'request',
323
- category: 'request'
324
- },
325
- 'request.resolved': {
326
- id: 'request.resolved',
327
- order: 410,
328
- label: 'Resolved',
329
- semanticClass: 'request',
330
- category: 'request'
331
- },
332
- 'request.wont_fix': {
333
- id: 'request.wont_fix',
334
- order: 420,
335
- label: "Won't Fix",
336
- semanticClass: 'request',
337
- category: 'request'
338
- }
339
- }
1
+ import { z } from 'zod'
2
+
3
+ // ---------------------------------------------------------------------------
4
+ // Semantic class enum — one value per status category.
5
+ // Every status entry declares which category it belongs to via semanticClass.
6
+ // ---------------------------------------------------------------------------
7
+
8
+ export const StatusSemanticClassSchema = z.enum([
9
+ 'delivery.task',
10
+ 'delivery.project',
11
+ 'delivery.milestone',
12
+ 'queue',
13
+ 'execution',
14
+ 'schedule',
15
+ 'schedule.run',
16
+ 'request'
17
+ ])
18
+
19
+ // ---------------------------------------------------------------------------
20
+ // Status entry schema
21
+ // ---------------------------------------------------------------------------
22
+
23
+ export const StatusEntrySchema = z.object({
24
+ id: z.string().trim().min(1).max(100),
25
+ /** Domain-map iteration order. Convention: multiples of 10 (10, 20, 30, ...) to allow easy insertion. */
26
+ order: z.number(),
27
+ label: z.string().trim().min(1).max(120),
28
+ semanticClass: StatusSemanticClassSchema,
29
+ category: z.string().trim().min(1).max(80).optional()
30
+ })
31
+
32
+ // ---------------------------------------------------------------------------
33
+ // Domain schema — id-keyed map of status entries
34
+ // ---------------------------------------------------------------------------
35
+
36
+ export const StatusesDomainSchema = z
37
+ .record(z.string(), StatusEntrySchema)
38
+ .refine((record) => Object.entries(record).every(([key, entry]) => entry.id === key), {
39
+ message: 'Each status entry id must match its map key'
40
+ })
41
+ .default({})
42
+
43
+ // ---------------------------------------------------------------------------
44
+ // Seed — covers all status enums in scope (delivery, queue, execution,
45
+ // schedule, schedule.run, request). Delivery project/milestone statuses are
46
+ // included here as semantic references; they mirror delivery.ts but live in
47
+ // the statuses domain as the vibe-readable registry.
48
+ // ---------------------------------------------------------------------------
49
+
50
+ export type StatusEntry = z.infer<typeof StatusEntrySchema>
51
+ export type StatusesDomain = z.infer<typeof StatusesDomainSchema>
52
+
53
+ export const DEFAULT_ORGANIZATION_MODEL_STATUSES: StatusesDomain = {
54
+ // --- delivery.task (TaskStatus — 9 values) ---
55
+ 'delivery.task.planned': {
56
+ id: 'delivery.task.planned',
57
+ order: 10,
58
+ label: 'Planned',
59
+ semanticClass: 'delivery.task',
60
+ category: 'delivery'
61
+ },
62
+ 'delivery.task.in_progress': {
63
+ id: 'delivery.task.in_progress',
64
+ order: 20,
65
+ label: 'In Progress',
66
+ semanticClass: 'delivery.task',
67
+ category: 'delivery'
68
+ },
69
+ 'delivery.task.blocked': {
70
+ id: 'delivery.task.blocked',
71
+ order: 30,
72
+ label: 'Blocked',
73
+ semanticClass: 'delivery.task',
74
+ category: 'delivery'
75
+ },
76
+ 'delivery.task.submitted': {
77
+ id: 'delivery.task.submitted',
78
+ order: 40,
79
+ label: 'Submitted',
80
+ semanticClass: 'delivery.task',
81
+ category: 'delivery'
82
+ },
83
+ 'delivery.task.approved': {
84
+ id: 'delivery.task.approved',
85
+ order: 50,
86
+ label: 'Approved',
87
+ semanticClass: 'delivery.task',
88
+ category: 'delivery'
89
+ },
90
+ 'delivery.task.revision_requested': {
91
+ id: 'delivery.task.revision_requested',
92
+ order: 60,
93
+ label: 'Revision Requested',
94
+ semanticClass: 'delivery.task',
95
+ category: 'delivery'
96
+ },
97
+ 'delivery.task.rejected': {
98
+ id: 'delivery.task.rejected',
99
+ order: 70,
100
+ label: 'Rejected',
101
+ semanticClass: 'delivery.task',
102
+ category: 'delivery'
103
+ },
104
+ 'delivery.task.cancelled': {
105
+ id: 'delivery.task.cancelled',
106
+ order: 80,
107
+ label: 'Cancelled',
108
+ semanticClass: 'delivery.task',
109
+ category: 'delivery'
110
+ },
111
+ 'delivery.task.completed': {
112
+ id: 'delivery.task.completed',
113
+ order: 90,
114
+ label: 'Completed',
115
+ semanticClass: 'delivery.task',
116
+ category: 'delivery'
117
+ },
118
+
119
+ // --- delivery.project (ProjectStatus — 6 values) ---
120
+ 'delivery.project.active': {
121
+ id: 'delivery.project.active',
122
+ order: 100,
123
+ label: 'Active',
124
+ semanticClass: 'delivery.project',
125
+ category: 'delivery'
126
+ },
127
+ 'delivery.project.on_track': {
128
+ id: 'delivery.project.on_track',
129
+ order: 110,
130
+ label: 'On Track',
131
+ semanticClass: 'delivery.project',
132
+ category: 'delivery'
133
+ },
134
+ 'delivery.project.at_risk': {
135
+ id: 'delivery.project.at_risk',
136
+ order: 120,
137
+ label: 'At Risk',
138
+ semanticClass: 'delivery.project',
139
+ category: 'delivery'
140
+ },
141
+ 'delivery.project.blocked': {
142
+ id: 'delivery.project.blocked',
143
+ order: 130,
144
+ label: 'Blocked',
145
+ semanticClass: 'delivery.project',
146
+ category: 'delivery'
147
+ },
148
+ 'delivery.project.paused': {
149
+ id: 'delivery.project.paused',
150
+ order: 140,
151
+ label: 'Paused',
152
+ semanticClass: 'delivery.project',
153
+ category: 'delivery'
154
+ },
155
+ 'delivery.project.completed': {
156
+ id: 'delivery.project.completed',
157
+ order: 150,
158
+ label: 'Completed',
159
+ semanticClass: 'delivery.project',
160
+ category: 'delivery'
161
+ },
162
+
163
+ // --- delivery.milestone (MilestoneStatus — 5 values) ---
164
+ 'delivery.milestone.upcoming': {
165
+ id: 'delivery.milestone.upcoming',
166
+ order: 160,
167
+ label: 'Upcoming',
168
+ semanticClass: 'delivery.milestone',
169
+ category: 'delivery'
170
+ },
171
+ 'delivery.milestone.in_progress': {
172
+ id: 'delivery.milestone.in_progress',
173
+ order: 170,
174
+ label: 'In Progress',
175
+ semanticClass: 'delivery.milestone',
176
+ category: 'delivery'
177
+ },
178
+ 'delivery.milestone.blocked': {
179
+ id: 'delivery.milestone.blocked',
180
+ order: 180,
181
+ label: 'Blocked',
182
+ semanticClass: 'delivery.milestone',
183
+ category: 'delivery'
184
+ },
185
+ 'delivery.milestone.overdue': {
186
+ id: 'delivery.milestone.overdue',
187
+ order: 190,
188
+ label: 'Overdue',
189
+ semanticClass: 'delivery.milestone',
190
+ category: 'delivery'
191
+ },
192
+ 'delivery.milestone.completed': {
193
+ id: 'delivery.milestone.completed',
194
+ order: 200,
195
+ label: 'Completed',
196
+ semanticClass: 'delivery.milestone',
197
+ category: 'delivery'
198
+ },
199
+
200
+ // --- queue (QueueTaskStatus — 5 values, maps hitl/command-queue tasks) ---
201
+ 'queue.pending': { id: 'queue.pending', order: 210, label: 'Pending', semanticClass: 'queue', category: 'queue' },
202
+ 'queue.processing': {
203
+ id: 'queue.processing',
204
+ order: 220,
205
+ label: 'Processing',
206
+ semanticClass: 'queue',
207
+ category: 'queue'
208
+ },
209
+ 'queue.completed': {
210
+ id: 'queue.completed',
211
+ order: 230,
212
+ label: 'Completed',
213
+ semanticClass: 'queue',
214
+ category: 'queue'
215
+ },
216
+ 'queue.failed': { id: 'queue.failed', order: 240, label: 'Failed', semanticClass: 'queue', category: 'queue' },
217
+ 'queue.expired': { id: 'queue.expired', order: 250, label: 'Expired', semanticClass: 'queue', category: 'queue' },
218
+
219
+ // --- execution (ExecutionStatus — 5 values) ---
220
+ 'execution.pending': {
221
+ id: 'execution.pending',
222
+ order: 260,
223
+ label: 'Pending',
224
+ semanticClass: 'execution',
225
+ category: 'execution'
226
+ },
227
+ 'execution.running': {
228
+ id: 'execution.running',
229
+ order: 270,
230
+ label: 'Running',
231
+ semanticClass: 'execution',
232
+ category: 'execution'
233
+ },
234
+ 'execution.completed': {
235
+ id: 'execution.completed',
236
+ order: 280,
237
+ label: 'Completed',
238
+ semanticClass: 'execution',
239
+ category: 'execution'
240
+ },
241
+ 'execution.failed': {
242
+ id: 'execution.failed',
243
+ order: 290,
244
+ label: 'Failed',
245
+ semanticClass: 'execution',
246
+ category: 'execution'
247
+ },
248
+ 'execution.warning': {
249
+ id: 'execution.warning',
250
+ order: 300,
251
+ label: 'Warning',
252
+ semanticClass: 'execution',
253
+ category: 'execution'
254
+ },
255
+
256
+ // --- schedule (schedule status — 4 values) ---
257
+ 'schedule.active': {
258
+ id: 'schedule.active',
259
+ order: 310,
260
+ label: 'Active',
261
+ semanticClass: 'schedule',
262
+ category: 'schedule'
263
+ },
264
+ 'schedule.paused': {
265
+ id: 'schedule.paused',
266
+ order: 320,
267
+ label: 'Paused',
268
+ semanticClass: 'schedule',
269
+ category: 'schedule'
270
+ },
271
+ 'schedule.completed': {
272
+ id: 'schedule.completed',
273
+ order: 330,
274
+ label: 'Completed',
275
+ semanticClass: 'schedule',
276
+ category: 'schedule'
277
+ },
278
+ 'schedule.cancelled': {
279
+ id: 'schedule.cancelled',
280
+ order: 340,
281
+ label: 'Cancelled',
282
+ semanticClass: 'schedule',
283
+ category: 'schedule'
284
+ },
285
+
286
+ // --- schedule.run (schedule run status — 4 values) ---
287
+ 'schedule.run.running': {
288
+ id: 'schedule.run.running',
289
+ order: 350,
290
+ label: 'Running',
291
+ semanticClass: 'schedule.run',
292
+ category: 'schedule'
293
+ },
294
+ 'schedule.run.completed': {
295
+ id: 'schedule.run.completed',
296
+ order: 360,
297
+ label: 'Completed',
298
+ semanticClass: 'schedule.run',
299
+ category: 'schedule'
300
+ },
301
+ 'schedule.run.failed': {
302
+ id: 'schedule.run.failed',
303
+ order: 370,
304
+ label: 'Failed',
305
+ semanticClass: 'schedule.run',
306
+ category: 'schedule'
307
+ },
308
+ 'schedule.run.cancelled': {
309
+ id: 'schedule.run.cancelled',
310
+ order: 380,
311
+ label: 'Cancelled',
312
+ semanticClass: 'schedule.run',
313
+ category: 'schedule'
314
+ },
315
+
316
+ // --- request (RequestStatus — 4 values, maps reported_requests) ---
317
+ 'request.open': { id: 'request.open', order: 390, label: 'Open', semanticClass: 'request', category: 'request' },
318
+ 'request.investigating': {
319
+ id: 'request.investigating',
320
+ order: 400,
321
+ label: 'Investigating',
322
+ semanticClass: 'request',
323
+ category: 'request'
324
+ },
325
+ 'request.resolved': {
326
+ id: 'request.resolved',
327
+ order: 410,
328
+ label: 'Resolved',
329
+ semanticClass: 'request',
330
+ category: 'request'
331
+ },
332
+ 'request.wont_fix': {
333
+ id: 'request.wont_fix',
334
+ order: 420,
335
+ label: "Won't Fix",
336
+ semanticClass: 'request',
337
+ category: 'request'
338
+ }
339
+ }