@elevasis/core 0.21.0 → 0.23.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 (132) hide show
  1. package/dist/index.d.ts +2518 -2169
  2. package/dist/index.js +2495 -1095
  3. package/dist/knowledge/index.d.ts +706 -1044
  4. package/dist/knowledge/index.js +9 -9
  5. package/dist/organization-model/index.d.ts +2518 -2169
  6. package/dist/organization-model/index.js +2495 -1095
  7. package/dist/test-utils/index.d.ts +826 -1014
  8. package/dist/test-utils/index.js +1894 -1032
  9. package/package.json +3 -3
  10. package/src/__tests__/template-core-compatibility.test.ts +11 -79
  11. package/src/_gen/__tests__/__snapshots__/contracts.md.snap +852 -397
  12. package/src/auth/multi-tenancy/permissions.ts +20 -8
  13. package/src/business/README.md +2 -2
  14. package/src/business/acquisition/api-schemas.test.ts +175 -2
  15. package/src/business/acquisition/api-schemas.ts +132 -16
  16. package/src/business/acquisition/build-templates.test.ts +4 -4
  17. package/src/business/acquisition/build-templates.ts +72 -30
  18. package/src/business/acquisition/crm-state-actions.test.ts +13 -11
  19. package/src/business/acquisition/index.ts +12 -0
  20. package/src/business/acquisition/types.ts +7 -3
  21. package/src/business/clients/api-schemas.test.ts +115 -0
  22. package/src/business/clients/api-schemas.ts +158 -0
  23. package/src/business/clients/index.ts +1 -0
  24. package/src/business/deals/api-schemas.ts +8 -0
  25. package/src/business/index.ts +5 -2
  26. package/src/business/projects/types.ts +19 -0
  27. package/src/execution/engine/__tests__/fixtures/test-agents.ts +10 -8
  28. package/src/execution/engine/agent/core/__tests__/agent.test.ts +16 -12
  29. package/src/execution/engine/agent/core/__tests__/error-passthrough.test.ts +4 -3
  30. package/src/execution/engine/agent/core/types.ts +25 -15
  31. package/src/execution/engine/agent/index.ts +6 -4
  32. package/src/execution/engine/agent/reasoning/__tests__/request-builder.test.ts +24 -18
  33. package/src/execution/engine/index.ts +3 -0
  34. package/src/execution/engine/workflow/types.ts +9 -2
  35. package/src/knowledge/README.md +8 -7
  36. package/src/knowledge/__tests__/queries.test.ts +74 -73
  37. package/src/knowledge/format.ts +10 -9
  38. package/src/knowledge/index.ts +1 -1
  39. package/src/knowledge/published.ts +1 -1
  40. package/src/knowledge/queries.ts +26 -25
  41. package/src/organization-model/README.md +73 -26
  42. package/src/organization-model/__tests__/content-kinds-registry.test.ts +210 -0
  43. package/src/organization-model/__tests__/defaults.test.ts +76 -96
  44. package/src/organization-model/__tests__/domains/actions.test.ts +56 -0
  45. package/src/organization-model/__tests__/domains/customers.test.ts +299 -295
  46. package/src/organization-model/__tests__/domains/entities.test.ts +56 -0
  47. package/src/organization-model/__tests__/domains/goals.test.ts +493 -479
  48. package/src/organization-model/__tests__/domains/identity.test.ts +280 -279
  49. package/src/organization-model/__tests__/domains/navigation.test.ts +268 -212
  50. package/src/organization-model/__tests__/domains/offerings.test.ts +414 -419
  51. package/src/organization-model/__tests__/domains/policies.test.ts +323 -0
  52. package/src/organization-model/__tests__/domains/resource-mappings.test.ts +271 -271
  53. package/src/organization-model/__tests__/domains/resources.test.ts +310 -0
  54. package/src/organization-model/__tests__/domains/roles.test.ts +463 -347
  55. package/src/organization-model/__tests__/domains/statuses.test.ts +246 -243
  56. package/src/organization-model/__tests__/domains/systems.test.ts +209 -0
  57. package/src/organization-model/__tests__/flatten-additive-merge.test.ts +361 -0
  58. package/src/organization-model/__tests__/foundation.test.ts +74 -102
  59. package/src/organization-model/__tests__/get-resources-for-system.test.ts +144 -0
  60. package/src/organization-model/__tests__/graph.test.ts +899 -71
  61. package/src/organization-model/__tests__/knowledge.test.ts +209 -49
  62. package/src/organization-model/__tests__/lookup-helpers.test.ts +438 -0
  63. package/src/organization-model/__tests__/migration-helpers.test.ts +591 -0
  64. package/src/organization-model/__tests__/prospecting-ssot.test.ts +36 -27
  65. package/src/organization-model/__tests__/recursive-system-schema.test.ts +520 -0
  66. package/src/organization-model/__tests__/resolve.test.ts +174 -23
  67. package/src/organization-model/__tests__/schema.test.ts +291 -114
  68. package/src/organization-model/__tests__/surface-projection.test.ts +207 -97
  69. package/src/organization-model/catalogs/lead-gen.ts +144 -0
  70. package/src/organization-model/content-kinds/config.ts +36 -0
  71. package/src/organization-model/content-kinds/index.ts +74 -0
  72. package/src/organization-model/content-kinds/pipeline.ts +68 -0
  73. package/src/organization-model/content-kinds/registry.ts +44 -0
  74. package/src/organization-model/content-kinds/status.ts +71 -0
  75. package/src/organization-model/content-kinds/template.ts +83 -0
  76. package/src/organization-model/content-kinds/types.ts +117 -0
  77. package/src/organization-model/contracts.ts +13 -3
  78. package/src/organization-model/defaults.ts +499 -86
  79. package/src/organization-model/domains/actions.ts +239 -0
  80. package/src/organization-model/domains/customers.ts +78 -75
  81. package/src/organization-model/domains/entities.ts +144 -0
  82. package/src/organization-model/domains/goals.ts +83 -80
  83. package/src/organization-model/domains/knowledge.ts +76 -17
  84. package/src/organization-model/domains/navigation.ts +107 -384
  85. package/src/organization-model/domains/offerings.ts +71 -66
  86. package/src/organization-model/domains/policies.ts +102 -0
  87. package/src/organization-model/domains/projects.ts +14 -48
  88. package/src/organization-model/domains/prospecting.ts +62 -181
  89. package/src/organization-model/domains/resources.ts +145 -0
  90. package/src/organization-model/domains/roles.ts +96 -55
  91. package/src/organization-model/domains/sales.ts +10 -219
  92. package/src/organization-model/domains/shared.ts +57 -57
  93. package/src/organization-model/domains/statuses.ts +339 -130
  94. package/src/organization-model/domains/systems.ts +203 -0
  95. package/src/organization-model/foundation.ts +54 -67
  96. package/src/organization-model/graph/build.ts +682 -54
  97. package/src/organization-model/graph/link.ts +1 -1
  98. package/src/organization-model/graph/schema.ts +24 -9
  99. package/src/organization-model/graph/types.ts +20 -7
  100. package/src/organization-model/helpers.ts +231 -26
  101. package/src/organization-model/icons.ts +1 -0
  102. package/src/organization-model/index.ts +118 -5
  103. package/src/organization-model/migration-helpers.ts +249 -0
  104. package/src/organization-model/organization-graph.mdx +16 -15
  105. package/src/organization-model/organization-model.mdx +111 -44
  106. package/src/organization-model/published.ts +172 -19
  107. package/src/organization-model/resolve.ts +117 -54
  108. package/src/organization-model/schema.ts +654 -112
  109. package/src/organization-model/surface-projection.ts +116 -122
  110. package/src/organization-model/types.ts +146 -20
  111. package/src/platform/api/types.ts +38 -35
  112. package/src/platform/constants/versions.ts +1 -1
  113. package/src/platform/registry/__tests__/command-view.test.ts +6 -8
  114. package/src/platform/registry/__tests__/resource-link.test.ts +13 -8
  115. package/src/platform/registry/__tests__/resource-registry.integration.test.ts +16 -31
  116. package/src/platform/registry/__tests__/resource-registry.nested-systems.test.ts +245 -0
  117. package/src/platform/registry/__tests__/resource-registry.test.ts +2053 -2005
  118. package/src/platform/registry/__tests__/validation.test.ts +1347 -1086
  119. package/src/platform/registry/index.ts +14 -0
  120. package/src/platform/registry/resource-registry.ts +52 -2
  121. package/src/platform/registry/serialization.ts +241 -202
  122. package/src/platform/registry/serialized-types.ts +1 -0
  123. package/src/platform/registry/types.ts +411 -361
  124. package/src/platform/registry/validation.ts +745 -513
  125. package/src/projects/api-schemas.ts +290 -267
  126. package/src/reference/_generated/contracts.md +853 -397
  127. package/src/reference/glossary.md +23 -18
  128. package/src/supabase/database.types.ts +181 -0
  129. package/src/test-utils/test-utils.test.ts +1 -6
  130. package/src/organization-model/__tests__/domains/operations.test.ts +0 -203
  131. package/src/organization-model/domains/features.ts +0 -31
  132. package/src/organization-model/domains/operations.ts +0 -85
@@ -1,130 +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
- label: z.string().trim().min(1).max(120),
26
- semanticClass: StatusSemanticClassSchema,
27
- category: z.string().trim().min(1).max(80).optional()
28
- })
29
-
30
- // ---------------------------------------------------------------------------
31
- // Domain schema — a flat array of status entries keyed by id
32
- // ---------------------------------------------------------------------------
33
-
34
- export const StatusesDomainSchema = z.object({
35
- entries: z.array(StatusEntrySchema).default([])
36
- })
37
-
38
- // ---------------------------------------------------------------------------
39
- // Seed covers all status enums in scope (delivery, queue, execution,
40
- // schedule, schedule.run, request). Delivery project/milestone statuses are
41
- // included here as semantic references; they mirror delivery.ts but live in
42
- // the statuses domain as the vibe-readable registry.
43
- // ---------------------------------------------------------------------------
44
-
45
- export const DEFAULT_ORGANIZATION_MODEL_STATUSES: z.infer<typeof StatusesDomainSchema> = {
46
- entries: [
47
- // --- delivery.task (TaskStatus 9 values) ---
48
- { id: 'delivery.task.planned', label: 'Planned', semanticClass: 'delivery.task', category: 'delivery' },
49
- { id: 'delivery.task.in_progress', label: 'In Progress', semanticClass: 'delivery.task', category: 'delivery' },
50
- { id: 'delivery.task.blocked', label: 'Blocked', semanticClass: 'delivery.task', category: 'delivery' },
51
- { id: 'delivery.task.submitted', label: 'Submitted', semanticClass: 'delivery.task', category: 'delivery' },
52
- { id: 'delivery.task.approved', label: 'Approved', semanticClass: 'delivery.task', category: 'delivery' },
53
- {
54
- id: 'delivery.task.revision_requested',
55
- label: 'Revision Requested',
56
- semanticClass: 'delivery.task',
57
- category: 'delivery'
58
- },
59
- { id: 'delivery.task.rejected', label: 'Rejected', semanticClass: 'delivery.task', category: 'delivery' },
60
- { id: 'delivery.task.cancelled', label: 'Cancelled', semanticClass: 'delivery.task', category: 'delivery' },
61
- { id: 'delivery.task.completed', label: 'Completed', semanticClass: 'delivery.task', category: 'delivery' },
62
-
63
- // --- delivery.project (ProjectStatus — 6 values) ---
64
- { id: 'delivery.project.active', label: 'Active', semanticClass: 'delivery.project', category: 'delivery' },
65
- { id: 'delivery.project.on_track', label: 'On Track', semanticClass: 'delivery.project', category: 'delivery' },
66
- { id: 'delivery.project.at_risk', label: 'At Risk', semanticClass: 'delivery.project', category: 'delivery' },
67
- { id: 'delivery.project.blocked', label: 'Blocked', semanticClass: 'delivery.project', category: 'delivery' },
68
- { id: 'delivery.project.paused', label: 'Paused', semanticClass: 'delivery.project', category: 'delivery' },
69
- { id: 'delivery.project.completed', label: 'Completed', semanticClass: 'delivery.project', category: 'delivery' },
70
-
71
- // --- delivery.milestone (MilestoneStatus — 5 values) ---
72
- {
73
- id: 'delivery.milestone.upcoming',
74
- label: 'Upcoming',
75
- semanticClass: 'delivery.milestone',
76
- category: 'delivery'
77
- },
78
- {
79
- id: 'delivery.milestone.in_progress',
80
- label: 'In Progress',
81
- semanticClass: 'delivery.milestone',
82
- category: 'delivery'
83
- },
84
- {
85
- id: 'delivery.milestone.blocked',
86
- label: 'Blocked',
87
- semanticClass: 'delivery.milestone',
88
- category: 'delivery'
89
- },
90
- { id: 'delivery.milestone.overdue', label: 'Overdue', semanticClass: 'delivery.milestone', category: 'delivery' },
91
- {
92
- id: 'delivery.milestone.completed',
93
- label: 'Completed',
94
- semanticClass: 'delivery.milestone',
95
- category: 'delivery'
96
- },
97
-
98
- // --- queue (QueueTaskStatus — 5 values, maps hitl/command-queue tasks) ---
99
- { id: 'queue.pending', label: 'Pending', semanticClass: 'queue', category: 'queue' },
100
- { id: 'queue.processing', label: 'Processing', semanticClass: 'queue', category: 'queue' },
101
- { id: 'queue.completed', label: 'Completed', semanticClass: 'queue', category: 'queue' },
102
- { id: 'queue.failed', label: 'Failed', semanticClass: 'queue', category: 'queue' },
103
- { id: 'queue.expired', label: 'Expired', semanticClass: 'queue', category: 'queue' },
104
-
105
- // --- execution (ExecutionStatus — 5 values) ---
106
- { id: 'execution.pending', label: 'Pending', semanticClass: 'execution', category: 'execution' },
107
- { id: 'execution.running', label: 'Running', semanticClass: 'execution', category: 'execution' },
108
- { id: 'execution.completed', label: 'Completed', semanticClass: 'execution', category: 'execution' },
109
- { id: 'execution.failed', label: 'Failed', semanticClass: 'execution', category: 'execution' },
110
- { id: 'execution.warning', label: 'Warning', semanticClass: 'execution', category: 'execution' },
111
-
112
- // --- schedule (schedule status — 4 values) ---
113
- { id: 'schedule.active', label: 'Active', semanticClass: 'schedule', category: 'schedule' },
114
- { id: 'schedule.paused', label: 'Paused', semanticClass: 'schedule', category: 'schedule' },
115
- { id: 'schedule.completed', label: 'Completed', semanticClass: 'schedule', category: 'schedule' },
116
- { id: 'schedule.cancelled', label: 'Cancelled', semanticClass: 'schedule', category: 'schedule' },
117
-
118
- // --- schedule.run (schedule run status — 4 values) ---
119
- { id: 'schedule.run.running', label: 'Running', semanticClass: 'schedule.run', category: 'schedule' },
120
- { id: 'schedule.run.completed', label: 'Completed', semanticClass: 'schedule.run', category: 'schedule' },
121
- { id: 'schedule.run.failed', label: 'Failed', semanticClass: 'schedule.run', category: 'schedule' },
122
- { id: 'schedule.run.cancelled', label: 'Cancelled', semanticClass: 'schedule.run', category: 'schedule' },
123
-
124
- // --- request (RequestStatus — 4 values, maps reported_requests) ---
125
- { id: 'request.open', label: 'Open', semanticClass: 'request', category: 'request' },
126
- { id: 'request.investigating', label: 'Investigating', semanticClass: 'request', category: 'request' },
127
- { id: 'request.resolved', label: 'Resolved', semanticClass: 'request', category: 'request' },
128
- { id: 'request.wont_fix', label: "Won't Fix", semanticClass: 'request', category: 'request' }
129
- ]
130
- }
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
+ }