@pax8-cta/core 0.1.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 (226) hide show
  1. package/LICENSE +198 -0
  2. package/dist/auth/device-code-login.d.ts +40 -0
  3. package/dist/auth/device-code-login.d.ts.map +1 -0
  4. package/dist/auth/device-code-login.js +59 -0
  5. package/dist/auth/device-code-login.js.map +1 -0
  6. package/dist/auth/gdap-client.d.ts +81 -0
  7. package/dist/auth/gdap-client.d.ts.map +1 -0
  8. package/dist/auth/gdap-client.js +128 -0
  9. package/dist/auth/gdap-client.js.map +1 -0
  10. package/dist/auth/index.d.ts +19 -0
  11. package/dist/auth/index.d.ts.map +1 -0
  12. package/dist/auth/index.js +19 -0
  13. package/dist/auth/index.js.map +1 -0
  14. package/dist/auth/token-manager.d.ts +54 -0
  15. package/dist/auth/token-manager.d.ts.map +1 -0
  16. package/dist/auth/token-manager.js +150 -0
  17. package/dist/auth/token-manager.js.map +1 -0
  18. package/dist/client.d.ts +27 -0
  19. package/dist/client.d.ts.map +1 -0
  20. package/dist/client.js +27 -0
  21. package/dist/client.js.map +1 -0
  22. package/dist/config/client.d.ts +24 -0
  23. package/dist/config/client.d.ts.map +1 -0
  24. package/dist/config/client.js +18 -0
  25. package/dist/config/client.js.map +1 -0
  26. package/dist/config/index.d.ts +18 -0
  27. package/dist/config/index.d.ts.map +1 -0
  28. package/dist/config/index.js +18 -0
  29. package/dist/config/index.js.map +1 -0
  30. package/dist/config/loader.d.ts +81 -0
  31. package/dist/config/loader.d.ts.map +1 -0
  32. package/dist/config/loader.js +271 -0
  33. package/dist/config/loader.js.map +1 -0
  34. package/dist/config/schema.d.ts +751 -0
  35. package/dist/config/schema.d.ts.map +1 -0
  36. package/dist/config/schema.js +556 -0
  37. package/dist/config/schema.js.map +1 -0
  38. package/dist/constants.d.ts +116 -0
  39. package/dist/constants.d.ts.map +1 -0
  40. package/dist/constants.js +170 -0
  41. package/dist/constants.js.map +1 -0
  42. package/dist/dataverse/agent-resolver.d.ts +98 -0
  43. package/dist/dataverse/agent-resolver.d.ts.map +1 -0
  44. package/dist/dataverse/agent-resolver.js +185 -0
  45. package/dist/dataverse/agent-resolver.js.map +1 -0
  46. package/dist/dataverse/client.d.ts +104 -0
  47. package/dist/dataverse/client.d.ts.map +1 -0
  48. package/dist/dataverse/client.js +272 -0
  49. package/dist/dataverse/client.js.map +1 -0
  50. package/dist/dataverse/connection-refs.d.ts +115 -0
  51. package/dist/dataverse/connection-refs.d.ts.map +1 -0
  52. package/dist/dataverse/connection-refs.js +203 -0
  53. package/dist/dataverse/connection-refs.js.map +1 -0
  54. package/dist/dataverse/index.d.ts +20 -0
  55. package/dist/dataverse/index.d.ts.map +1 -0
  56. package/dist/dataverse/index.js +20 -0
  57. package/dist/dataverse/index.js.map +1 -0
  58. package/dist/dataverse/solution-ops.d.ts +100 -0
  59. package/dist/dataverse/solution-ops.d.ts.map +1 -0
  60. package/dist/dataverse/solution-ops.js +288 -0
  61. package/dist/dataverse/solution-ops.js.map +1 -0
  62. package/dist/errors.d.ts +171 -0
  63. package/dist/errors.d.ts.map +1 -0
  64. package/dist/errors.js +178 -0
  65. package/dist/errors.js.map +1 -0
  66. package/dist/index.d.ts +27 -0
  67. package/dist/index.d.ts.map +1 -0
  68. package/dist/index.js +40 -0
  69. package/dist/index.js.map +1 -0
  70. package/dist/mock/demo-data.d.ts +213 -0
  71. package/dist/mock/demo-data.d.ts.map +1 -0
  72. package/dist/mock/demo-data.js +1096 -0
  73. package/dist/mock/demo-data.js.map +1 -0
  74. package/dist/mock/demo-deployment-store.d.ts +77 -0
  75. package/dist/mock/demo-deployment-store.d.ts.map +1 -0
  76. package/dist/mock/demo-deployment-store.js +85 -0
  77. package/dist/mock/demo-deployment-store.js.map +1 -0
  78. package/dist/powerplatform/admin-client.d.ts +226 -0
  79. package/dist/powerplatform/admin-client.d.ts.map +1 -0
  80. package/dist/powerplatform/admin-client.js +315 -0
  81. package/dist/powerplatform/admin-client.js.map +1 -0
  82. package/dist/powerplatform/index.d.ts +18 -0
  83. package/dist/powerplatform/index.d.ts.map +1 -0
  84. package/dist/powerplatform/index.js +18 -0
  85. package/dist/powerplatform/index.js.map +1 -0
  86. package/dist/powerplatform/tenant-discovery.d.ts +100 -0
  87. package/dist/powerplatform/tenant-discovery.d.ts.map +1 -0
  88. package/dist/powerplatform/tenant-discovery.js +205 -0
  89. package/dist/powerplatform/tenant-discovery.js.map +1 -0
  90. package/dist/preconditions/check.d.ts +41 -0
  91. package/dist/preconditions/check.d.ts.map +1 -0
  92. package/dist/preconditions/check.js +173 -0
  93. package/dist/preconditions/check.js.map +1 -0
  94. package/dist/preconditions/index.d.ts +20 -0
  95. package/dist/preconditions/index.d.ts.map +1 -0
  96. package/dist/preconditions/index.js +20 -0
  97. package/dist/preconditions/index.js.map +1 -0
  98. package/dist/preconditions/loader.d.ts +33 -0
  99. package/dist/preconditions/loader.d.ts.map +1 -0
  100. package/dist/preconditions/loader.js +65 -0
  101. package/dist/preconditions/loader.js.map +1 -0
  102. package/dist/preconditions/schema.d.ts +103 -0
  103. package/dist/preconditions/schema.d.ts.map +1 -0
  104. package/dist/preconditions/schema.js +93 -0
  105. package/dist/preconditions/schema.js.map +1 -0
  106. package/dist/preconditions/types.d.ts +118 -0
  107. package/dist/preconditions/types.d.ts.map +1 -0
  108. package/dist/preconditions/types.js +17 -0
  109. package/dist/preconditions/types.js.map +1 -0
  110. package/dist/queue/index.d.ts +17 -0
  111. package/dist/queue/index.d.ts.map +1 -0
  112. package/dist/queue/index.js +17 -0
  113. package/dist/queue/index.js.map +1 -0
  114. package/dist/queue/memory-queue.d.ts +86 -0
  115. package/dist/queue/memory-queue.d.ts.map +1 -0
  116. package/dist/queue/memory-queue.js +221 -0
  117. package/dist/queue/memory-queue.js.map +1 -0
  118. package/dist/services/audit-log.d.ts +59 -0
  119. package/dist/services/audit-log.d.ts.map +1 -0
  120. package/dist/services/audit-log.js +193 -0
  121. package/dist/services/audit-log.js.map +1 -0
  122. package/dist/services/auth-error-parser.d.ts +36 -0
  123. package/dist/services/auth-error-parser.d.ts.map +1 -0
  124. package/dist/services/auth-error-parser.js +90 -0
  125. package/dist/services/auth-error-parser.js.map +1 -0
  126. package/dist/services/deployment-doctor.d.ts +109 -0
  127. package/dist/services/deployment-doctor.d.ts.map +1 -0
  128. package/dist/services/deployment-doctor.js +476 -0
  129. package/dist/services/deployment-doctor.js.map +1 -0
  130. package/dist/services/deployment-notifications.d.ts +41 -0
  131. package/dist/services/deployment-notifications.d.ts.map +1 -0
  132. package/dist/services/deployment-notifications.js +161 -0
  133. package/dist/services/deployment-notifications.js.map +1 -0
  134. package/dist/services/deployment-progress.d.ts +89 -0
  135. package/dist/services/deployment-progress.d.ts.map +1 -0
  136. package/dist/services/deployment-progress.js +244 -0
  137. package/dist/services/deployment-progress.js.map +1 -0
  138. package/dist/services/deployment-service.d.ts +97 -0
  139. package/dist/services/deployment-service.d.ts.map +1 -0
  140. package/dist/services/deployment-service.js +375 -0
  141. package/dist/services/deployment-service.js.map +1 -0
  142. package/dist/services/drift-analyzer.d.ts +86 -0
  143. package/dist/services/drift-analyzer.d.ts.map +1 -0
  144. package/dist/services/drift-analyzer.js +273 -0
  145. package/dist/services/drift-analyzer.js.map +1 -0
  146. package/dist/services/environment-setup.d.ts +97 -0
  147. package/dist/services/environment-setup.d.ts.map +1 -0
  148. package/dist/services/environment-setup.js +250 -0
  149. package/dist/services/environment-setup.js.map +1 -0
  150. package/dist/services/health-check.d.ts +168 -0
  151. package/dist/services/health-check.d.ts.map +1 -0
  152. package/dist/services/health-check.js +705 -0
  153. package/dist/services/health-check.js.map +1 -0
  154. package/dist/services/index.d.ts +39 -0
  155. package/dist/services/index.d.ts.map +1 -0
  156. package/dist/services/index.js +39 -0
  157. package/dist/services/index.js.map +1 -0
  158. package/dist/services/logger.d.ts +139 -0
  159. package/dist/services/logger.d.ts.map +1 -0
  160. package/dist/services/logger.js +268 -0
  161. package/dist/services/logger.js.map +1 -0
  162. package/dist/services/notification-service.d.ts +55 -0
  163. package/dist/services/notification-service.d.ts.map +1 -0
  164. package/dist/services/notification-service.js +184 -0
  165. package/dist/services/notification-service.js.map +1 -0
  166. package/dist/services/risk-analyzer.d.ts +252 -0
  167. package/dist/services/risk-analyzer.d.ts.map +1 -0
  168. package/dist/services/risk-analyzer.js +866 -0
  169. package/dist/services/risk-analyzer.js.map +1 -0
  170. package/dist/services/rollback.d.ts +57 -0
  171. package/dist/services/rollback.d.ts.map +1 -0
  172. package/dist/services/rollback.js +270 -0
  173. package/dist/services/rollback.js.map +1 -0
  174. package/dist/services/scheduler.d.ts +80 -0
  175. package/dist/services/scheduler.d.ts.map +1 -0
  176. package/dist/services/scheduler.js +350 -0
  177. package/dist/services/scheduler.js.map +1 -0
  178. package/dist/services/secrets.d.ts +31 -0
  179. package/dist/services/secrets.d.ts.map +1 -0
  180. package/dist/services/secrets.js +206 -0
  181. package/dist/services/secrets.js.map +1 -0
  182. package/dist/services/settings-service.d.ts +132 -0
  183. package/dist/services/settings-service.d.ts.map +1 -0
  184. package/dist/services/settings-service.js +378 -0
  185. package/dist/services/settings-service.js.map +1 -0
  186. package/dist/services/solution-diff.d.ts +127 -0
  187. package/dist/services/solution-diff.d.ts.map +1 -0
  188. package/dist/services/solution-diff.js +260 -0
  189. package/dist/services/solution-diff.js.map +1 -0
  190. package/dist/services/solution-mode-detector.d.ts +35 -0
  191. package/dist/services/solution-mode-detector.d.ts.map +1 -0
  192. package/dist/services/solution-mode-detector.js +84 -0
  193. package/dist/services/solution-mode-detector.js.map +1 -0
  194. package/dist/services/tenant-resolver.d.ts +55 -0
  195. package/dist/services/tenant-resolver.d.ts.map +1 -0
  196. package/dist/services/tenant-resolver.js +126 -0
  197. package/dist/services/tenant-resolver.js.map +1 -0
  198. package/dist/services/unmanaged-customizations.d.ts +104 -0
  199. package/dist/services/unmanaged-customizations.d.ts.map +1 -0
  200. package/dist/services/unmanaged-customizations.js +521 -0
  201. package/dist/services/unmanaged-customizations.js.map +1 -0
  202. package/dist/services/url-templater.d.ts +184 -0
  203. package/dist/services/url-templater.d.ts.map +1 -0
  204. package/dist/services/url-templater.js +327 -0
  205. package/dist/services/url-templater.js.map +1 -0
  206. package/dist/services/version-checker.d.ts +108 -0
  207. package/dist/services/version-checker.d.ts.map +1 -0
  208. package/dist/services/version-checker.js +403 -0
  209. package/dist/services/version-checker.js.map +1 -0
  210. package/dist/services/waves.d.ts +90 -0
  211. package/dist/services/waves.d.ts.map +1 -0
  212. package/dist/services/waves.js +222 -0
  213. package/dist/services/waves.js.map +1 -0
  214. package/dist/services/webhook.d.ts +95 -0
  215. package/dist/services/webhook.d.ts.map +1 -0
  216. package/dist/services/webhook.js +244 -0
  217. package/dist/services/webhook.js.map +1 -0
  218. package/dist/utils/deployment-tools.d.ts +110 -0
  219. package/dist/utils/deployment-tools.d.ts.map +1 -0
  220. package/dist/utils/deployment-tools.js +121 -0
  221. package/dist/utils/deployment-tools.js.map +1 -0
  222. package/dist/utils/index.d.ts +17 -0
  223. package/dist/utils/index.d.ts.map +1 -0
  224. package/dist/utils/index.js +18 -0
  225. package/dist/utils/index.js.map +1 -0
  226. package/package.json +49 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,556 @@
1
+ /**
2
+ * Copyright 2024 Pax8, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { z } from "zod";
17
+ // ============================================================================
18
+ // Connection Reference Mapping
19
+ // ============================================================================
20
+ export const ConnectionReferenceSchema = z.object({
21
+ logicalName: z.string().min(1),
22
+ connectionId: z.string().min(1),
23
+ description: z.string().optional(),
24
+ });
25
+ export const ConnectionMappingSchema = z.object({
26
+ sourceLogicalName: z.string().min(1),
27
+ targetConnectionId: z.string().min(1),
28
+ description: z.string().optional(),
29
+ });
30
+ // ============================================================================
31
+ // Environment Variables
32
+ // ============================================================================
33
+ export const EnvironmentVariableSchema = z.object({
34
+ schemaName: z.string().min(1),
35
+ value: z.union([z.string(), z.number(), z.boolean()]),
36
+ type: z.enum(["String", "Number", "Boolean", "JSON", "Secret"]).optional().default("String"),
37
+ });
38
+ // ============================================================================
39
+ // Deployment Waves
40
+ // ============================================================================
41
+ export const DeploymentWaveSchema = z.object({
42
+ name: z.string().min(1),
43
+ order: z.number().int().positive(),
44
+ tenants: z.array(z.string()),
45
+ waitAfterCompletion: z.string().optional(), // e.g., "5m", "1h"
46
+ continueOnFailure: z.boolean().optional().default(false),
47
+ maxParallel: z.number().int().positive().optional(),
48
+ });
49
+ // ============================================================================
50
+ // Health Checks
51
+ // ============================================================================
52
+ export const HealthCheckSchema = z.object({
53
+ enabled: z.boolean().optional().default(true),
54
+ endpoint: z.string().url().optional(),
55
+ expectedStatus: z.number().int().optional().default(200),
56
+ timeout: z.string().optional().default("30s"),
57
+ retries: z.number().int().nonnegative().optional().default(3),
58
+ });
59
+ // ============================================================================
60
+ // Rollback Settings
61
+ // ============================================================================
62
+ export const RollbackSettingsSchema = z.object({
63
+ enabled: z.boolean().optional().default(true),
64
+ keepVersions: z.number().int().positive().optional().default(3),
65
+ autoRollbackOnFailure: z.boolean().optional().default(false),
66
+ rollbackTimeout: z.string().optional().default("10m"),
67
+ });
68
+ // ============================================================================
69
+ // Webhook Notifications
70
+ // ============================================================================
71
+ export const WebhookSchema = z.object({
72
+ url: z.string().url(),
73
+ events: z.array(z.enum([
74
+ "deployment.started",
75
+ "deployment.completed",
76
+ "deployment.failed",
77
+ "wave.started",
78
+ "wave.completed",
79
+ "tenant.started",
80
+ "tenant.completed",
81
+ "tenant.failed",
82
+ "rollback.started",
83
+ "rollback.completed",
84
+ ])),
85
+ headers: z.record(z.string(), z.string()).optional(),
86
+ secret: z.string().optional(),
87
+ retries: z.number().int().nonnegative().optional().default(3),
88
+ });
89
+ // ============================================================================
90
+ // Scheduled Deployments
91
+ // ============================================================================
92
+ export const ScheduleSchema = z.object({
93
+ cron: z.string().optional(),
94
+ timezone: z.string().optional().default("UTC"),
95
+ maintenanceWindow: z
96
+ .object({
97
+ start: z.string(), // e.g., "02:00"
98
+ end: z.string(), // e.g., "06:00"
99
+ daysOfWeek: z.array(z.number().int().min(0).max(6)).optional(), // 0 = Sunday
100
+ })
101
+ .optional(),
102
+ });
103
+ // ============================================================================
104
+ // Approval Workflow
105
+ // ============================================================================
106
+ export const ApprovalWorkflowSchema = z.object({
107
+ required: z.boolean().optional().default(false),
108
+ approvers: z.array(z.string().email()).optional(),
109
+ minApprovals: z.number().int().positive().optional().default(1),
110
+ timeout: z.string().optional().default("24h"),
111
+ autoApproveForTags: z.array(z.string()).optional(),
112
+ });
113
+ // ============================================================================
114
+ // Partner Tenant Configuration
115
+ // ============================================================================
116
+ export const PartnerConfigSchema = z.object({
117
+ tenantId: z.guid(),
118
+ clientId: z.guid(),
119
+ // clientSecret should come from environment variable
120
+ });
121
+ // ============================================================================
122
+ // Source Environment Configuration
123
+ // ============================================================================
124
+ export const SourceConfigSchema = z.object({
125
+ tenantId: z.guid(),
126
+ environmentUrl: z.string().url(),
127
+ connectionReferences: z.array(ConnectionReferenceSchema).optional(),
128
+ });
129
+ // ============================================================================
130
+ // Customer Tenant Configuration (Enhanced)
131
+ // ============================================================================
132
+ export const TenantConfigSchema = z.object({
133
+ // Basic info
134
+ name: z.string().min(1),
135
+ tenantId: z.guid(),
136
+ environmentUrl: z.string().url(),
137
+ environmentId: z.string().optional(), // Power Platform environment ID for app user setup
138
+ tags: z.array(z.string()).optional().default([]),
139
+ enabled: z.boolean().optional().default(true),
140
+ // Connection Reference Mappings
141
+ connectionMappings: z.array(ConnectionMappingSchema).optional(),
142
+ // Environment Variables
143
+ environmentVariables: z.array(EnvironmentVariableSchema).optional(),
144
+ // Health Check
145
+ healthCheck: HealthCheckSchema.optional(),
146
+ // Tenant-specific rollback settings
147
+ rollback: RollbackSettingsSchema.optional(),
148
+ // Tenant-specific schedule overrides
149
+ schedule: ScheduleSchema.optional(),
150
+ // Auto-setup application user (default: true, can be set to false to disable)
151
+ autoSetup: z.boolean().default(true),
152
+ // Metadata
153
+ metadata: z.record(z.string(), z.union([z.string(), z.number(), z.boolean()])).optional(),
154
+ });
155
+ // ============================================================================
156
+ // Global Settings
157
+ // ============================================================================
158
+ export const GlobalSettingsSchema = z.object({
159
+ // Default connection mappings (can be overridden per tenant)
160
+ defaultConnectionMappings: z.array(ConnectionMappingSchema).optional(),
161
+ // Default environment variables (can be overridden per tenant)
162
+ defaultEnvironmentVariables: z.array(EnvironmentVariableSchema).optional(),
163
+ // Deployment waves
164
+ waves: z.array(DeploymentWaveSchema).optional(),
165
+ // Global rollback settings
166
+ rollback: RollbackSettingsSchema.optional(),
167
+ // Global health check settings
168
+ healthCheck: HealthCheckSchema.optional(),
169
+ // Webhook notifications
170
+ webhooks: z.array(WebhookSchema).optional(),
171
+ // Global schedule
172
+ schedule: ScheduleSchema.optional(),
173
+ // Approval workflow
174
+ approval: ApprovalWorkflowSchema.optional(),
175
+ // Auto-setup application users (default: true, can be overridden per tenant)
176
+ autoSetup: z.boolean().optional(),
177
+ // Rate limiting
178
+ rateLimit: z
179
+ .object({
180
+ maxConcurrent: z.number().int().positive().optional().default(5),
181
+ delayBetweenTenants: z.string().optional().default("1s"),
182
+ maxRequestsPerMinute: z.number().int().positive().optional().default(60),
183
+ })
184
+ .optional(),
185
+ // Retry settings
186
+ retry: z
187
+ .object({
188
+ maxAttempts: z.number().int().positive().optional().default(3),
189
+ initialDelay: z.string().optional().default("5s"),
190
+ maxDelay: z.string().optional().default("5m"),
191
+ backoffMultiplier: z.number().positive().optional().default(2),
192
+ })
193
+ .optional(),
194
+ // Logging
195
+ logging: z
196
+ .object({
197
+ level: z.enum(["debug", "info", "warn", "error"]).optional().default("info"),
198
+ includeTimestamps: z.boolean().optional().default(true),
199
+ format: z.enum(["json", "text"]).optional().default("text"),
200
+ })
201
+ .optional(),
202
+ });
203
+ // ============================================================================
204
+ // Full Configuration Schema
205
+ // ============================================================================
206
+ export const ConfigSchema = z.object({
207
+ version: z.string().optional().default("2.0"),
208
+ partner: PartnerConfigSchema,
209
+ source: SourceConfigSchema,
210
+ tenants: z.array(TenantConfigSchema),
211
+ settings: GlobalSettingsSchema.optional(),
212
+ webhooks: z.array(WebhookSchema).optional(),
213
+ });
214
+ // ============================================================================
215
+ // Deployment Status & Results
216
+ // ============================================================================
217
+ export const DeploymentStatusSchema = z.enum([
218
+ "pending",
219
+ "scheduled",
220
+ "awaiting_approval",
221
+ "approved",
222
+ "rejected",
223
+ "in_progress",
224
+ "completed",
225
+ "failed",
226
+ "cancelled",
227
+ "rolling_back",
228
+ "rolled_back",
229
+ ]);
230
+ // ============================================================================
231
+ // Centralized Status Categories
232
+ // These should be used throughout the app for consistent status filtering
233
+ // ============================================================================
234
+ /**
235
+ * Status categories for filtering and display
236
+ * - ACTIVE: Deployments that are actively running or successfully completed
237
+ * - PENDING_ACTION: Deployments waiting for something (approval, schedule, etc.)
238
+ * - FAILED: Deployments that encountered an error or were stopped
239
+ * - TERMINAL: Deployments that have reached a final state (no more processing)
240
+ * - RETRYABLE: Failed deployments that can be retried
241
+ */
242
+ export const DEPLOYMENT_STATUS_CATEGORIES = {
243
+ /** Running or successfully completed */
244
+ ACTIVE: ["completed", "in_progress"],
245
+ /** Waiting for approval, schedule, or processing */
246
+ PENDING_ACTION: ["pending", "scheduled", "awaiting_approval", "approved"],
247
+ /** Error states or stopped deployments */
248
+ FAILED: ["failed", "rejected", "cancelled", "rolled_back", "rolling_back"],
249
+ /** Final states - no more processing will occur */
250
+ TERMINAL: ["completed", "failed", "rolled_back", "cancelled", "rejected"],
251
+ /** Can be retried (including rolled_back - user may want to redeploy) */
252
+ RETRYABLE: ["failed", "cancelled", "rolled_back"],
253
+ };
254
+ /**
255
+ * Calculate the overall deployment status from tenant results
256
+ * Uses priority-based logic: in_progress > rolling_back > failed > rolled_back > completed > pending
257
+ */
258
+ export function calculateDeploymentStatus(tenantResults) {
259
+ if (tenantResults.length === 0)
260
+ return "pending";
261
+ const statuses = new Set(tenantResults.map((t) => t.status));
262
+ // Check in priority order
263
+ if (statuses.has("in_progress"))
264
+ return "in_progress";
265
+ if (statuses.has("rolling_back"))
266
+ return "rolling_back";
267
+ // Any failure means overall failed
268
+ const hasFailures = tenantResults.some((t) => DEPLOYMENT_STATUS_CATEGORIES.RETRYABLE.includes(t.status));
269
+ if (hasFailures)
270
+ return "failed";
271
+ if (statuses.has("rolled_back"))
272
+ return "rolled_back";
273
+ if (statuses.has("completed"))
274
+ return "completed";
275
+ if (statuses.has("approved"))
276
+ return "approved";
277
+ if (statuses.has("awaiting_approval"))
278
+ return "awaiting_approval";
279
+ if (statuses.has("scheduled"))
280
+ return "scheduled";
281
+ return "pending";
282
+ }
283
+ export const TenantDeploymentResultSchema = z.object({
284
+ tenantId: z.guid(),
285
+ tenantName: z.string(),
286
+ status: DeploymentStatusSchema,
287
+ startedAt: z.string().datetime().optional(),
288
+ completedAt: z.string().datetime().optional(),
289
+ error: z.string().optional(),
290
+ solutionImportJobId: z.string().optional(),
291
+ previousVersion: z.string().optional(),
292
+ rollbackAvailable: z.boolean().optional(),
293
+ waveNumber: z.number().int().positive().optional(),
294
+ attemptNumber: z.number().int().positive().optional().default(1),
295
+ });
296
+ export const DeploymentTriggerSchema = z.enum(["manual", "scheduled", "webhook", "api", "cli"]);
297
+ export const DeploymentJobSchema = z.object({
298
+ id: z.string(),
299
+ solutionPath: z.string(),
300
+ solutionName: z.string(),
301
+ solutionVersion: z.string().optional(),
302
+ status: DeploymentStatusSchema,
303
+ createdAt: z.string().datetime(),
304
+ updatedAt: z.string().datetime(),
305
+ scheduledAt: z.string().datetime().optional(),
306
+ startedAt: z.string().datetime().optional(),
307
+ completedAt: z.string().datetime().optional(),
308
+ tenantResults: z.array(TenantDeploymentResultSchema),
309
+ totalTenants: z.number().int().positive(),
310
+ completedTenants: z.number().int().nonnegative(),
311
+ failedTenants: z.number().int().nonnegative(),
312
+ currentWave: z.number().int().positive().optional(),
313
+ totalWaves: z.number().int().positive().optional(),
314
+ approvals: z
315
+ .array(z.object({
316
+ approver: z.string().email(),
317
+ approved: z.boolean(),
318
+ timestamp: z.string().datetime(),
319
+ comment: z.string().optional(),
320
+ }))
321
+ .optional(),
322
+ rollbackFromDeploymentId: z.string().optional(),
323
+ canRollback: z.boolean().optional(),
324
+ // New fields for enhanced visibility
325
+ triggeredBy: DeploymentTriggerSchema.optional(),
326
+ durationMs: z.number().int().nonnegative().optional(),
327
+ });
328
+ // ============================================================================
329
+ // NEW Atomic Deployment Model (v2)
330
+ // ============================================================================
331
+ // A Deployment represents a single agent deployed to a single tenant.
332
+ // A DeploymentBatch groups multiple deployments that were initiated together.
333
+ export const DeploymentSchema = z.object({
334
+ /** Unique identifier for this deployment */
335
+ id: z.string(),
336
+ /** Reference to the batch this deployment belongs to (if any) */
337
+ batchId: z.string().optional(),
338
+ // Agent/Solution info
339
+ solutionName: z.string(),
340
+ solutionVersion: z.string().optional(),
341
+ solutionPath: z.string().optional(),
342
+ // Tenant info
343
+ tenantId: z.guid(),
344
+ tenantName: z.string(),
345
+ environmentUrl: z.string().url().optional(),
346
+ // Status
347
+ status: DeploymentStatusSchema,
348
+ error: z.string().optional(),
349
+ // Timestamps
350
+ createdAt: z.string().datetime(),
351
+ updatedAt: z.string().datetime(),
352
+ startedAt: z.string().datetime().optional(),
353
+ completedAt: z.string().datetime().optional(),
354
+ // Attempt tracking (for retries)
355
+ attemptNumber: z.number().int().positive().default(1),
356
+ // Metadata
357
+ triggeredBy: DeploymentTriggerSchema.optional(),
358
+ previousVersion: z.string().optional(),
359
+ rollbackAvailable: z.boolean().optional(),
360
+ solutionImportJobId: z.string().optional(),
361
+ waveNumber: z.number().int().positive().optional(),
362
+ // URL override for tenant-specific URL templating
363
+ urlOverride: z
364
+ .object({
365
+ tenant: z.string(),
366
+ sharepoint: z.string(),
367
+ dynamicsCrm: z.string(),
368
+ onmicrosoft: z.string(),
369
+ })
370
+ .optional(),
371
+ });
372
+ export const DeploymentBatchSchema = z.object({
373
+ /** Unique identifier for this batch */
374
+ id: z.string(),
375
+ // Solution being deployed
376
+ solutionName: z.string(),
377
+ solutionVersion: z.string().optional(),
378
+ solutionPath: z.string(),
379
+ // Aggregated status
380
+ status: DeploymentStatusSchema,
381
+ // Counts (derived from deployments, but cached for performance)
382
+ totalDeployments: z.number().int().nonnegative(),
383
+ completedDeployments: z.number().int().nonnegative(),
384
+ failedDeployments: z.number().int().nonnegative(),
385
+ // Timestamps
386
+ createdAt: z.string().datetime(),
387
+ updatedAt: z.string().datetime(),
388
+ startedAt: z.string().datetime().optional(),
389
+ completedAt: z.string().datetime().optional(),
390
+ // Wave tracking
391
+ currentWave: z.number().int().positive().optional(),
392
+ totalWaves: z.number().int().positive().optional(),
393
+ // Approvals
394
+ approvals: z
395
+ .array(z.object({
396
+ approver: z.string().email(),
397
+ approved: z.boolean(),
398
+ timestamp: z.string().datetime(),
399
+ comment: z.string().optional(),
400
+ }))
401
+ .optional(),
402
+ // Metadata
403
+ triggeredBy: DeploymentTriggerSchema.optional(),
404
+ });
405
+ // Helper to convert old DeploymentJob to new Deployment[] + DeploymentBatch
406
+ export function migrateDeploymentJob(job) {
407
+ const deployments = job.tenantResults.map((result, index) => ({
408
+ id: `${job.id}-${index}`,
409
+ batchId: job.id,
410
+ solutionName: job.solutionName,
411
+ solutionVersion: job.solutionVersion,
412
+ solutionPath: job.solutionPath,
413
+ tenantId: result.tenantId,
414
+ tenantName: result.tenantName,
415
+ status: result.status,
416
+ error: result.error,
417
+ createdAt: job.createdAt,
418
+ updatedAt: job.updatedAt,
419
+ startedAt: result.startedAt,
420
+ completedAt: result.completedAt,
421
+ attemptNumber: result.attemptNumber || 1,
422
+ triggeredBy: job.triggeredBy,
423
+ previousVersion: result.previousVersion,
424
+ rollbackAvailable: result.rollbackAvailable,
425
+ solutionImportJobId: result.solutionImportJobId,
426
+ waveNumber: result.waveNumber,
427
+ }));
428
+ const batch = {
429
+ id: job.id,
430
+ solutionName: job.solutionName,
431
+ solutionVersion: job.solutionVersion,
432
+ solutionPath: job.solutionPath,
433
+ status: job.status,
434
+ totalDeployments: job.totalTenants,
435
+ completedDeployments: job.completedTenants,
436
+ failedDeployments: job.failedTenants,
437
+ createdAt: job.createdAt,
438
+ updatedAt: job.updatedAt,
439
+ startedAt: job.startedAt,
440
+ completedAt: job.completedAt,
441
+ currentWave: job.currentWave,
442
+ totalWaves: job.totalWaves,
443
+ approvals: job.approvals,
444
+ triggeredBy: job.triggeredBy,
445
+ };
446
+ return { batch, deployments };
447
+ }
448
+ // ============================================================================
449
+ // Solution Metadata (Enhanced)
450
+ // ============================================================================
451
+ export const SolutionMetadataSchema = z.object({
452
+ uniqueName: z.string(),
453
+ friendlyName: z.string(),
454
+ version: z.string(),
455
+ isManaged: z.boolean(),
456
+ publisherId: z.string().optional(),
457
+ publisherName: z.string().optional(),
458
+ description: z.string().optional(),
459
+ installedOn: z.string().datetime().optional(),
460
+ });
461
+ // ============================================================================
462
+ // Snapshot for Rollback
463
+ // ============================================================================
464
+ export const DeploymentSnapshotSchema = z.object({
465
+ id: z.string(),
466
+ deploymentId: z.string(),
467
+ tenantId: z.guid(),
468
+ tenantName: z.string(),
469
+ solutionName: z.string(),
470
+ previousVersion: z.string(),
471
+ previousSolutionPath: z.string().optional(),
472
+ createdAt: z.string().datetime(),
473
+ expiresAt: z.string().datetime().optional(),
474
+ metadata: z.record(z.string(), z.union([z.string(), z.number(), z.boolean()])).optional(),
475
+ });
476
+ // ============================================================================
477
+ // Webhook Event Payload
478
+ // ============================================================================
479
+ export const WebhookEventSchema = z.object({
480
+ event: z.string(),
481
+ timestamp: z.string().datetime(),
482
+ deploymentId: z.string(),
483
+ tenantId: z.guid().optional(),
484
+ tenantName: z.string().optional(),
485
+ solutionName: z.string(),
486
+ status: DeploymentStatusSchema,
487
+ error: z.string().optional(),
488
+ waveNumber: z.number().int().positive().optional(),
489
+ metadata: z.record(z.string(), z.union([z.string(), z.number(), z.boolean()])).optional(),
490
+ });
491
+ // ============================================================================
492
+ // Helper Functions
493
+ // ============================================================================
494
+ /**
495
+ * Parse a duration string like "5m", "1h", "30s" to milliseconds
496
+ */
497
+ export function parseDuration(duration) {
498
+ const match = duration.match(/^(\d+)(ms|s|m|h|d)$/);
499
+ if (!match) {
500
+ throw new Error(`Invalid duration format: ${duration}`);
501
+ }
502
+ const value = parseInt(match[1], 10);
503
+ const unit = match[2];
504
+ const multipliers = {
505
+ ms: 1,
506
+ s: 1000,
507
+ m: 60 * 1000,
508
+ h: 60 * 60 * 1000,
509
+ d: 24 * 60 * 60 * 1000,
510
+ };
511
+ return value * multipliers[unit];
512
+ }
513
+ /**
514
+ * Get effective connection mappings for a tenant (merges global defaults with tenant-specific)
515
+ */
516
+ export function getEffectiveConnectionMappings(config, tenant) {
517
+ const globalMappings = config.settings?.defaultConnectionMappings || [];
518
+ const tenantMappings = tenant.connectionMappings || [];
519
+ // Tenant mappings override global ones with same sourceLogicalName
520
+ const mappingMap = new Map();
521
+ for (const mapping of globalMappings) {
522
+ mappingMap.set(mapping.sourceLogicalName, mapping);
523
+ }
524
+ for (const mapping of tenantMappings) {
525
+ mappingMap.set(mapping.sourceLogicalName, mapping);
526
+ }
527
+ return Array.from(mappingMap.values());
528
+ }
529
+ /**
530
+ * Get effective environment variables for a tenant (merges global defaults with tenant-specific)
531
+ */
532
+ export function getEffectiveEnvironmentVariables(config, tenant) {
533
+ const globalVars = config.settings?.defaultEnvironmentVariables || [];
534
+ const tenantVars = tenant.environmentVariables || [];
535
+ // Tenant variables override global ones with same schemaName
536
+ const varMap = new Map();
537
+ for (const v of globalVars) {
538
+ varMap.set(v.schemaName, v);
539
+ }
540
+ for (const v of tenantVars) {
541
+ varMap.set(v.schemaName, v);
542
+ }
543
+ return Array.from(varMap.values());
544
+ }
545
+ /**
546
+ * Get effective rollback settings for a tenant
547
+ */
548
+ export function getEffectiveRollbackSettings(config, tenant) {
549
+ const globalSettings = config.settings?.rollback || { enabled: true, keepVersions: 3 };
550
+ const tenantSettings = tenant.rollback || {};
551
+ return {
552
+ ...globalSettings,
553
+ ...tenantSettings,
554
+ };
555
+ }
556
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}