@empire-builder-kit/runtime 1.0.0-beta.9 → 1.0.0-rc.1

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 (218) hide show
  1. package/NOTICE +6 -0
  2. package/package.json +93 -3
  3. package/src/api-contract/artifacts.d.ts +67 -0
  4. package/src/api-contract/artifacts.js +349 -0
  5. package/src/api-contract/artifacts.js.map +1 -0
  6. package/src/api-contract/client.d.ts +79 -0
  7. package/src/api-contract/client.js +561 -0
  8. package/src/api-contract/client.js.map +1 -0
  9. package/src/api-contract/errors.d.ts +7 -0
  10. package/src/api-contract/errors.js +11 -0
  11. package/src/api-contract/errors.js.map +1 -0
  12. package/src/api-contract/index.d.ts +9 -0
  13. package/src/api-contract/index.js +10 -0
  14. package/src/api-contract/index.js.map +1 -0
  15. package/src/api-contract/operation.d.ts +118 -0
  16. package/src/api-contract/operation.js +609 -0
  17. package/src/api-contract/operation.js.map +1 -0
  18. package/src/api-contract/schema.d.ts +81 -0
  19. package/src/api-contract/schema.js +313 -0
  20. package/src/api-contract/schema.js.map +1 -0
  21. package/src/api-contract/server.d.ts +77 -0
  22. package/src/api-contract/server.js +466 -0
  23. package/src/api-contract/server.js.map +1 -0
  24. package/src/async-work/contract.d.ts +17 -0
  25. package/src/async-work/contract.js +105 -0
  26. package/src/async-work/contract.js.map +1 -0
  27. package/src/async-work/idempotency.d.ts +123 -0
  28. package/src/async-work/idempotency.js +167 -0
  29. package/src/async-work/idempotency.js.map +1 -0
  30. package/src/async-work/index.d.ts +8 -0
  31. package/src/async-work/index.js +9 -0
  32. package/src/async-work/index.js.map +1 -0
  33. package/src/async-work/provider.d.ts +90 -0
  34. package/src/async-work/provider.js +155 -0
  35. package/src/async-work/provider.js.map +1 -0
  36. package/src/async-work/recovery.d.ts +103 -0
  37. package/src/async-work/recovery.js +291 -0
  38. package/src/async-work/recovery.js.map +1 -0
  39. package/src/async-work/schedule.d.ts +117 -0
  40. package/src/async-work/schedule.js +279 -0
  41. package/src/async-work/schedule.js.map +1 -0
  42. package/src/async-work/sqs.d.ts +133 -0
  43. package/src/async-work/sqs.js +280 -0
  44. package/src/async-work/sqs.js.map +1 -0
  45. package/src/async-work/webhook.d.ts +60 -0
  46. package/src/async-work/webhook.js +178 -0
  47. package/src/async-work/webhook.js.map +1 -0
  48. package/src/async-work/workflow.d.ts +98 -0
  49. package/src/async-work/workflow.js +225 -0
  50. package/src/async-work/workflow.js.map +1 -0
  51. package/src/auth-backend.d.ts +12 -2
  52. package/src/auth-backend.js +30 -18
  53. package/src/auth-backend.js.map +1 -1
  54. package/src/authorization/admission.d.ts +30 -0
  55. package/src/authorization/admission.js +87 -0
  56. package/src/authorization/admission.js.map +1 -0
  57. package/src/authorization/approval.d.ts +99 -0
  58. package/src/authorization/approval.js +249 -0
  59. package/src/authorization/approval.js.map +1 -0
  60. package/src/authorization/audit.d.ts +35 -0
  61. package/src/authorization/audit.js +35 -0
  62. package/src/authorization/audit.js.map +1 -0
  63. package/src/authorization/delegation.d.ts +149 -0
  64. package/src/authorization/delegation.js +401 -0
  65. package/src/authorization/delegation.js.map +1 -0
  66. package/src/authorization/errors.d.ts +32 -0
  67. package/src/authorization/errors.js +153 -0
  68. package/src/authorization/errors.js.map +1 -0
  69. package/src/authorization/evaluator.d.ts +39 -0
  70. package/src/authorization/evaluator.js +199 -0
  71. package/src/authorization/evaluator.js.map +1 -0
  72. package/src/authorization/index.d.ts +14 -0
  73. package/src/authorization/index.js +15 -0
  74. package/src/authorization/index.js.map +1 -0
  75. package/src/authorization/machine-token.d.ts +87 -0
  76. package/src/authorization/machine-token.js +201 -0
  77. package/src/authorization/machine-token.js.map +1 -0
  78. package/src/authorization/machine.d.ts +32 -0
  79. package/src/authorization/machine.js +41 -0
  80. package/src/authorization/machine.js.map +1 -0
  81. package/src/authorization/model.d.ts +112 -0
  82. package/src/authorization/model.js +112 -0
  83. package/src/authorization/model.js.map +1 -0
  84. package/src/canonical-json.cjs +157 -0
  85. package/src/canonical-json.d.cts +26 -0
  86. package/src/canonical-json.d.ts +18 -0
  87. package/src/canonical-json.js +125 -0
  88. package/src/canonical-json.js.map +1 -0
  89. package/src/configuration/contract.d.ts +107 -0
  90. package/src/configuration/contract.js +461 -0
  91. package/src/configuration/contract.js.map +1 -0
  92. package/src/configuration/index.d.ts +3 -0
  93. package/src/configuration/index.js +4 -0
  94. package/src/configuration/index.js.map +1 -0
  95. package/src/configuration/provider.d.ts +59 -0
  96. package/src/configuration/provider.js +198 -0
  97. package/src/configuration/provider.js.map +1 -0
  98. package/src/configuration/rollout-evaluator.cjs +54 -0
  99. package/src/configuration/rollout-evaluator.d.cts +26 -0
  100. package/src/configuration/rollout-evaluator.d.ts +18 -0
  101. package/src/configuration/rollout-evaluator.js +38 -0
  102. package/src/configuration/rollout-evaluator.js.map +1 -0
  103. package/src/configuration/rollout-key.cjs +38 -0
  104. package/src/configuration/rollout-key.d.cts +14 -0
  105. package/src/configuration/rollout-key.d.ts +10 -0
  106. package/src/configuration/rollout-key.js +26 -0
  107. package/src/configuration/rollout-key.js.map +1 -0
  108. package/src/configuration/rollout.d.ts +60 -0
  109. package/src/configuration/rollout.js +42 -0
  110. package/src/configuration/rollout.js.map +1 -0
  111. package/src/data-lifecycle/contract.d.ts +33 -0
  112. package/src/data-lifecycle/contract.js +118 -0
  113. package/src/data-lifecycle/contract.js.map +1 -0
  114. package/src/data-lifecycle/event.d.ts +28 -0
  115. package/src/data-lifecycle/event.js +76 -0
  116. package/src/data-lifecycle/event.js.map +1 -0
  117. package/src/data-lifecycle/evidence.d.ts +65 -0
  118. package/src/data-lifecycle/evidence.js +162 -0
  119. package/src/data-lifecycle/evidence.js.map +1 -0
  120. package/src/data-lifecycle/holds.d.ts +29 -0
  121. package/src/data-lifecycle/holds.js +124 -0
  122. package/src/data-lifecycle/holds.js.map +1 -0
  123. package/src/data-lifecycle/index.d.ts +8 -0
  124. package/src/data-lifecycle/index.js +9 -0
  125. package/src/data-lifecycle/index.js.map +1 -0
  126. package/src/data-lifecycle/policy.d.ts +16 -0
  127. package/src/data-lifecycle/policy.js +79 -0
  128. package/src/data-lifecycle/policy.js.map +1 -0
  129. package/src/data-lifecycle/restore.d.ts +90 -0
  130. package/src/data-lifecycle/restore.js +336 -0
  131. package/src/data-lifecycle/restore.js.map +1 -0
  132. package/src/data-lifecycle/retention.d.ts +57 -0
  133. package/src/data-lifecycle/retention.js +232 -0
  134. package/src/data-lifecycle/retention.js.map +1 -0
  135. package/src/data-lifecycle/rights.d.ts +171 -0
  136. package/src/data-lifecycle/rights.js +533 -0
  137. package/src/data-lifecycle/rights.js.map +1 -0
  138. package/src/database.d.ts +36 -0
  139. package/src/database.js +119 -0
  140. package/src/database.js.map +1 -0
  141. package/src/deterministic-order.cjs +16 -0
  142. package/src/deterministic-order.d.cts +9 -0
  143. package/src/deterministic-order.d.ts +7 -0
  144. package/src/deterministic-order.js +10 -0
  145. package/src/deterministic-order.js.map +1 -0
  146. package/src/events.d.ts +28 -19
  147. package/src/events.js +171 -66
  148. package/src/events.js.map +1 -1
  149. package/src/index.d.ts +7 -1
  150. package/src/index.js +24 -0
  151. package/src/index.js.map +1 -1
  152. package/src/lambda.d.ts +8 -2
  153. package/src/lambda.js +100 -39
  154. package/src/lambda.js.map +1 -1
  155. package/src/logging.d.ts +95 -36
  156. package/src/logging.js +460 -62
  157. package/src/logging.js.map +1 -1
  158. package/src/observability.d.ts +80 -18
  159. package/src/observability.js +252 -61
  160. package/src/observability.js.map +1 -1
  161. package/src/performance/index.d.ts +1 -0
  162. package/src/performance/index.js +2 -0
  163. package/src/performance/index.js.map +1 -0
  164. package/src/performance/protected-load-endpoint.d.ts +140 -0
  165. package/src/performance/protected-load-endpoint.js +462 -0
  166. package/src/performance/protected-load-endpoint.js.map +1 -0
  167. package/src/rds-global-ca-bundle.d.ts +1 -0
  168. package/src/rds-global-ca-bundle.js +2742 -0
  169. package/src/rds-global-ca-bundle.js.map +1 -0
  170. package/src/reliability/burn.d.ts +39 -0
  171. package/src/reliability/burn.js +102 -0
  172. package/src/reliability/burn.js.map +1 -0
  173. package/src/reliability/contract.d.ts +5 -0
  174. package/src/reliability/contract.js +317 -0
  175. package/src/reliability/contract.js.map +1 -0
  176. package/src/reliability/incident.d.ts +16 -0
  177. package/src/reliability/incident.js +562 -0
  178. package/src/reliability/incident.js.map +1 -0
  179. package/src/reliability/index.d.ts +5 -0
  180. package/src/reliability/index.js +6 -0
  181. package/src/reliability/index.js.map +1 -0
  182. package/src/reliability/model.d.ts +191 -0
  183. package/src/reliability/model.fixtures.d.ts +2 -0
  184. package/src/reliability/model.fixtures.js +57 -0
  185. package/src/reliability/model.fixtures.js.map +1 -0
  186. package/src/reliability/model.js +2 -0
  187. package/src/reliability/model.js.map +1 -0
  188. package/src/reliability/slo.d.ts +9 -0
  189. package/src/reliability/slo.js +74 -0
  190. package/src/reliability/slo.js.map +1 -0
  191. package/src/request-context.d.ts +57 -15
  192. package/src/request-context.js +116 -36
  193. package/src/request-context.js.map +1 -1
  194. package/src/safe-reference.cjs +57 -0
  195. package/src/safe-reference.d.cts +25 -0
  196. package/src/safe-reference.d.ts +11 -0
  197. package/src/safe-reference.js +46 -0
  198. package/src/safe-reference.js.map +1 -0
  199. package/src/secrets/contract.d.ts +99 -0
  200. package/src/secrets/contract.js +238 -0
  201. package/src/secrets/contract.js.map +1 -0
  202. package/src/secrets/index.d.ts +4 -0
  203. package/src/secrets/index.js +5 -0
  204. package/src/secrets/index.js.map +1 -0
  205. package/src/secrets/observability.d.ts +14 -0
  206. package/src/secrets/observability.js +100 -0
  207. package/src/secrets/observability.js.map +1 -0
  208. package/src/secrets/personal.d.ts +48 -0
  209. package/src/secrets/personal.js +332 -0
  210. package/src/secrets/personal.js.map +1 -0
  211. package/src/secrets/resolver.d.ts +125 -0
  212. package/src/secrets/resolver.js +602 -0
  213. package/src/secrets/resolver.js.map +1 -0
  214. package/src/secrets/sensitive-patterns.cjs +84 -0
  215. package/src/secrets/sensitive-patterns.d.cts +62 -0
  216. package/src/secrets/sensitive-patterns.d.ts +40 -0
  217. package/src/secrets/sensitive-patterns.js +60 -0
  218. package/src/secrets/sensitive-patterns.js.map +1 -0
@@ -0,0 +1,562 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { authorizeApprovalExecution, } from '../authorization/approval.js';
3
+ const SEGMENT_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._/-]{0,254}$/;
4
+ const LOG_GROUP_PATTERN = /^\/ebk\/[A-Za-z0-9][A-Za-z0-9._/-]{0,507}$/;
5
+ const DIGEST_PATTERN = /^[a-f0-9]{64}$/;
6
+ const QUERY_CLASS_PATTERN = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;
7
+ const METADATA_DIAGNOSTICS = new Set([
8
+ 'alarm-state',
9
+ 'resource-metadata',
10
+ 'sanitized-signal',
11
+ ]);
12
+ const DIAGNOSTIC_SOURCES = new Set([
13
+ ...METADATA_DIAGNOSTICS,
14
+ 'bounded-log-query',
15
+ ]);
16
+ const REMEDIATION_ACTIONS = new Set([
17
+ 'protected-revert',
18
+ 'roll-forward',
19
+ 'redrive',
20
+ 'replay',
21
+ 'restore',
22
+ 'degraded-mode',
23
+ ]);
24
+ const INCIDENT_SEVERITIES = new Set([
25
+ 'SEV-1',
26
+ 'SEV-2',
27
+ 'SEV-3',
28
+ 'SEV-4',
29
+ ]);
30
+ const INCIDENT_STATES = new Set([
31
+ 'declared',
32
+ 'stabilizing',
33
+ 'diagnosing',
34
+ 'recovering',
35
+ 'monitoring',
36
+ 'resolved',
37
+ ]);
38
+ const INCIDENT_TIMELINE_TYPES = new Set([
39
+ 'observation',
40
+ 'decision',
41
+ 'action',
42
+ 'verification',
43
+ ]);
44
+ const MAX_SENSITIVE_QUERY_WINDOW_MS = 60 * 60 * 1000;
45
+ const MAX_APPROVAL_HORIZON_MS = 60 * 60 * 1000;
46
+ export const RELIABILITY_APPROVAL_POLICY_VERSION = 'reliability-v1';
47
+ const MAX_INCIDENT_REFERENCES = 256;
48
+ const MAX_INCIDENT_TIMELINE_ENTRIES = 2000;
49
+ const SENSITIVE_FIELD_NAMES = new Set([
50
+ 'accesstoken',
51
+ 'authorization',
52
+ 'clientsecret',
53
+ 'cookie',
54
+ 'credential',
55
+ 'password',
56
+ 'privatekey',
57
+ 'proxyauthorization',
58
+ 'refreshtoken',
59
+ 'secret',
60
+ 'secretkey',
61
+ 'sessiontoken',
62
+ 'setcookie',
63
+ 'token',
64
+ ]);
65
+ function record(value, field) {
66
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
67
+ throw new Error(`[runtime/reliability] \`${field}\` must be an object.`);
68
+ }
69
+ return value;
70
+ }
71
+ function rejectSensitiveFields(value, field) {
72
+ if (!value || typeof value !== 'object')
73
+ return;
74
+ if (Array.isArray(value)) {
75
+ value.forEach((entry, index) => rejectSensitiveFields(entry, `${field}[${index}]`));
76
+ return;
77
+ }
78
+ for (const [key, entry] of Object.entries(value)) {
79
+ const normalized = key.toLowerCase().replace(/[^a-z0-9]/g, '');
80
+ if (SENSITIVE_FIELD_NAMES.has(normalized)) {
81
+ throw new Error(`[runtime/reliability] \`${field}\` must not contain sensitive fields.`);
82
+ }
83
+ rejectSensitiveFields(entry, `${field}.${key}`);
84
+ }
85
+ }
86
+ function exactKeys(value, allowed, required, field) {
87
+ const keys = Object.keys(value);
88
+ const unexpected = keys.filter((key) => !allowed.includes(key)).sort();
89
+ const missing = required.filter((key) => !Object.prototype.hasOwnProperty.call(value, key));
90
+ if (unexpected.length > 0 || missing.length > 0) {
91
+ throw new Error(`[runtime/reliability] \`${field}\` must use the exact canonical fields.`);
92
+ }
93
+ }
94
+ function bounded(value, field) {
95
+ if (typeof value !== 'string') {
96
+ throw new Error(`[runtime/reliability] \`${field}\` is not an exact bounded identifier.`);
97
+ }
98
+ const normalized = value.trim();
99
+ if (!SEGMENT_PATTERN.test(normalized) ||
100
+ normalized.includes('..') ||
101
+ normalized.includes('\\')) {
102
+ throw new Error(`[runtime/reliability] \`${field}\` is not an exact bounded identifier.`);
103
+ }
104
+ return normalized;
105
+ }
106
+ function boundedText(value, field, options = {}) {
107
+ var _a, _b;
108
+ if (typeof value !== 'string') {
109
+ throw new Error(`[runtime/reliability] \`${field}\` must be bounded explanatory text.`);
110
+ }
111
+ const normalized = value.trim();
112
+ if (normalized.length < ((_a = options.min) !== null && _a !== void 0 ? _a : 1) ||
113
+ normalized.length > ((_b = options.max) !== null && _b !== void 0 ? _b : 2000) ||
114
+ [...normalized].some((character) => {
115
+ const code = character.charCodeAt(0);
116
+ return code <= 31 || code === 127;
117
+ })) {
118
+ throw new Error(`[runtime/reliability] \`${field}\` must be bounded explanatory text.`);
119
+ }
120
+ return normalized;
121
+ }
122
+ function boundedLogGroup(value, field) {
123
+ if (typeof value !== 'string') {
124
+ throw new Error(`[runtime/reliability] \`${field}\` is not an exact EBK log group.`);
125
+ }
126
+ const normalized = value.trim();
127
+ if (!LOG_GROUP_PATTERN.test(normalized) ||
128
+ normalized.includes('..') ||
129
+ normalized.includes('\\')) {
130
+ throw new Error(`[runtime/reliability] \`${field}\` is not an exact EBK log group.`);
131
+ }
132
+ return normalized;
133
+ }
134
+ export function diagnosticApprovalDigestInput(approval) {
135
+ return {
136
+ action: 'reliability-diagnostic',
137
+ command: {
138
+ allowedLogGroups: [...approval.allowedLogGroups],
139
+ incidentRef: approval.incidentRef,
140
+ queryClass: approval.queryClass,
141
+ reason: approval.reason,
142
+ target: approval.target,
143
+ windowEnd: approval.windowEnd,
144
+ windowStart: approval.windowStart,
145
+ },
146
+ resource: {
147
+ id: approval.incidentRef,
148
+ type: 'reliability-incident',
149
+ },
150
+ };
151
+ }
152
+ export function remediationApprovalDigestInput(input) {
153
+ return {
154
+ action: 'reliability-remediation',
155
+ command: {
156
+ action: input.plan.action,
157
+ remediationPlanDigest: input.plan.remediationPlanDigest,
158
+ target: input.plan.target,
159
+ },
160
+ resource: {
161
+ id: input.incidentRef,
162
+ type: 'reliability-incident',
163
+ },
164
+ };
165
+ }
166
+ function exactTarget(target, field) {
167
+ const value = record(target, field);
168
+ const targetKeys = ['account', 'region', 'slice', 'stage'];
169
+ exactKeys(value, targetKeys, targetKeys, field);
170
+ return {
171
+ account: bounded(value['account'], `${field}.account`),
172
+ region: bounded(value['region'], `${field}.region`),
173
+ slice: bounded(value['slice'], `${field}.slice`),
174
+ stage: bounded(value['stage'], `${field}.stage`),
175
+ };
176
+ }
177
+ function sameTarget(left, right) {
178
+ return (left.account === right.account &&
179
+ left.region === right.region &&
180
+ left.slice === right.slice &&
181
+ left.stage === right.stage);
182
+ }
183
+ function instant(value, field) {
184
+ if (typeof value !== 'string') {
185
+ throw new Error(`[runtime/reliability] \`${field}\` must be a canonical UTC timestamp.`);
186
+ }
187
+ const parsed = Date.parse(value);
188
+ if (!Number.isFinite(parsed) || new Date(parsed).toISOString() !== value) {
189
+ throw new Error(`[runtime/reliability] \`${field}\` must be a canonical UTC timestamp.`);
190
+ }
191
+ return parsed;
192
+ }
193
+ function requireNotExpired(expiresAt, now, field) {
194
+ const expiry = instant(expiresAt, field);
195
+ if (expiry <= now.getTime()) {
196
+ throw new Error(`[runtime/reliability] \`${field}\` has expired.`);
197
+ }
198
+ if (expiry - now.getTime() > MAX_APPROVAL_HORIZON_MS) {
199
+ throw new Error(`[runtime/reliability] \`${field}\` exceeds the one-hour approval horizon.`);
200
+ }
201
+ }
202
+ export function candidateIncidentSeverity(alarmSeverity) {
203
+ switch (alarmSeverity) {
204
+ case 'critical':
205
+ return 'SEV-2';
206
+ case 'high':
207
+ return 'SEV-3';
208
+ default:
209
+ return 'SEV-4';
210
+ }
211
+ }
212
+ export function validateIncidentRecord(input) {
213
+ rejectSensitiveFields(input, 'incident');
214
+ const incident = record(input, 'incident');
215
+ exactKeys(incident, [
216
+ 'affectedJourneyIds',
217
+ 'candidateId',
218
+ 'configurationDigest',
219
+ 'declaredAt',
220
+ 'followUpRefs',
221
+ 'id',
222
+ 'impact',
223
+ 'roles',
224
+ 'severity',
225
+ 'slice',
226
+ 'state',
227
+ 'timeline',
228
+ ], [
229
+ 'affectedJourneyIds',
230
+ 'declaredAt',
231
+ 'followUpRefs',
232
+ 'id',
233
+ 'impact',
234
+ 'roles',
235
+ 'severity',
236
+ 'slice',
237
+ 'state',
238
+ 'timeline',
239
+ ], 'incident');
240
+ if (!INCIDENT_SEVERITIES.has(incident.severity) ||
241
+ !INCIDENT_STATES.has(incident.state)) {
242
+ throw new Error('[runtime/reliability] Incident severity or state is unsupported.');
243
+ }
244
+ const id = bounded(incident.id, 'id');
245
+ const slice = bounded(incident.slice, 'slice');
246
+ const candidateId = incident.candidateId === undefined
247
+ ? undefined
248
+ : bounded(incident.candidateId, 'candidateId');
249
+ if (incident.configurationDigest !== undefined &&
250
+ (typeof incident.configurationDigest !== 'string' ||
251
+ !DIGEST_PATTERN.test(incident.configurationDigest))) {
252
+ throw new Error('[runtime/reliability] `configurationDigest` must be an exact SHA-256 digest.');
253
+ }
254
+ const configurationDigest = typeof incident.configurationDigest === 'string'
255
+ ? incident.configurationDigest
256
+ : undefined;
257
+ const impact = boundedText(incident.impact, 'impact', {
258
+ min: 8,
259
+ max: 2000,
260
+ });
261
+ const roles = record(incident.roles, 'roles');
262
+ const roleKeys = [
263
+ 'communicationsOwner',
264
+ 'incidentCommander',
265
+ 'scribe',
266
+ 'technicalLead',
267
+ ];
268
+ exactKeys(roles, roleKeys, roleKeys, 'roles');
269
+ const canonicalRoles = {
270
+ communicationsOwner: bounded(roles.communicationsOwner, 'roles.communicationsOwner'),
271
+ incidentCommander: bounded(roles.incidentCommander, 'roles.incidentCommander'),
272
+ scribe: bounded(roles.scribe, 'roles.scribe'),
273
+ technicalLead: bounded(roles.technicalLead, 'roles.technicalLead'),
274
+ };
275
+ if (!Array.isArray(incident.affectedJourneyIds) ||
276
+ !Array.isArray(incident.followUpRefs) ||
277
+ !Array.isArray(incident.timeline)) {
278
+ throw new Error('[runtime/reliability] Incident records require bounded journey references and a durable timeline.');
279
+ }
280
+ if (incident.affectedJourneyIds.length === 0 ||
281
+ incident.affectedJourneyIds.length > MAX_INCIDENT_REFERENCES ||
282
+ incident.followUpRefs.length > MAX_INCIDENT_REFERENCES ||
283
+ incident.timeline.length === 0 ||
284
+ incident.timeline.length > MAX_INCIDENT_TIMELINE_ENTRIES) {
285
+ throw new Error('[runtime/reliability] Incident records require bounded journey references and a durable timeline.');
286
+ }
287
+ const affectedJourneyIds = incident.affectedJourneyIds.map((value, index) => bounded(value, `affectedJourneyIds[${index}]`));
288
+ const followUpRefs = incident.followUpRefs.map((value, index) => bounded(value, `followUpRefs[${index}]`));
289
+ if (new Set(affectedJourneyIds).size !== affectedJourneyIds.length ||
290
+ new Set(followUpRefs).size !== followUpRefs.length) {
291
+ throw new Error('[runtime/reliability] Incident references must not contain duplicates.');
292
+ }
293
+ const declaredAt = instant(incident.declaredAt, 'declaredAt');
294
+ let previous = declaredAt;
295
+ const timeline = incident.timeline.map((entryInput, index) => {
296
+ const entry = record(entryInput, `timeline[${index}]`);
297
+ const entryKeys = [
298
+ 'actor',
299
+ 'at',
300
+ 'evidenceRefs',
301
+ 'message',
302
+ 'type',
303
+ ];
304
+ exactKeys(entry, entryKeys, entryKeys, `timeline[${index}]`);
305
+ const at = instant(entry.at, `timeline[${index}].at`);
306
+ if (at < previous) {
307
+ throw new Error('[runtime/reliability] Incident timeline must be chronological.');
308
+ }
309
+ previous = at;
310
+ const actor = bounded(entry.actor, `timeline[${index}].actor`);
311
+ if (!INCIDENT_TIMELINE_TYPES.has(entry.type) ||
312
+ !Array.isArray(entry.evidenceRefs) ||
313
+ entry.evidenceRefs.length > MAX_INCIDENT_REFERENCES ||
314
+ new Set(entry.evidenceRefs).size !== entry.evidenceRefs.length) {
315
+ throw new Error('[runtime/reliability] Incident timeline type and evidence references must be bounded and unique.');
316
+ }
317
+ const evidenceRefs = entry.evidenceRefs.map((value, evidenceIndex) => bounded(value, `timeline[${index}].evidenceRefs[${evidenceIndex}]`));
318
+ if (new Set(evidenceRefs).size !== evidenceRefs.length) {
319
+ throw new Error('[runtime/reliability] Incident timeline evidence references must remain unique after normalization.');
320
+ }
321
+ return {
322
+ actor,
323
+ at: new Date(at).toISOString(),
324
+ evidenceRefs,
325
+ message: boundedText(entry.message, `timeline[${index}].message`),
326
+ type: entry.type,
327
+ };
328
+ });
329
+ if (incident.state === 'resolved') {
330
+ const verification = timeline.some((entry) => entry.type === 'verification');
331
+ if (!verification || followUpRefs.length === 0) {
332
+ throw new Error('[runtime/reliability] Resolution requires verification and owned follow-up.');
333
+ }
334
+ }
335
+ return Object.assign(Object.assign(Object.assign({ affectedJourneyIds }, (candidateId ? { candidateId } : {})), (configurationDigest === undefined ? {} : { configurationDigest })), { declaredAt: new Date(declaredAt).toISOString(), followUpRefs,
336
+ id,
337
+ impact, roles: canonicalRoles, severity: incident.severity, slice, state: incident.state, timeline });
338
+ }
339
+ export function authorizeDiagnostic(request, options = {}) {
340
+ var _a;
341
+ const requestValue = record(request, 'diagnostic');
342
+ exactKeys(requestValue, ['approval', 'source', 'target'], ['source', 'target'], 'diagnostic');
343
+ const target = exactTarget(request.target, 'target');
344
+ if (!DIAGNOSTIC_SOURCES.has(request.source)) {
345
+ throw new Error('[runtime/reliability] Diagnostic source has no stable-v1 adapter.');
346
+ }
347
+ if (METADATA_DIAGNOSTICS.has(request.source)) {
348
+ if (request.approval) {
349
+ throw new Error('[runtime/reliability] Metadata diagnostics must not broaden authority through an unrelated approval.');
350
+ }
351
+ return {
352
+ approvalRequired: false,
353
+ source: request.source,
354
+ target,
355
+ };
356
+ }
357
+ if (request.source !== 'bounded-log-query' || !request.approval) {
358
+ throw new Error('[runtime/reliability] Sensitive diagnostics require an exact approval.');
359
+ }
360
+ const approval = request.approval;
361
+ const approvalValue = record(approval, 'approval');
362
+ const approvalKeys = [
363
+ 'allowedLogGroups',
364
+ 'authorization',
365
+ 'incidentRef',
366
+ 'queryClass',
367
+ 'reason',
368
+ 'target',
369
+ 'windowEnd',
370
+ 'windowStart',
371
+ ];
372
+ exactKeys(approvalValue, approvalKeys, approvalKeys, 'approval');
373
+ const approvalTarget = exactTarget(approval.target, 'approval.target');
374
+ if (!sameTarget(target, approvalTarget)) {
375
+ throw new Error('[runtime/reliability] Diagnostic approval target does not match the request.');
376
+ }
377
+ const now = ((_a = options.now) !== null && _a !== void 0 ? _a : (() => new Date()))();
378
+ const windowStart = instant(approval.windowStart, 'approval.windowStart');
379
+ const windowEnd = instant(approval.windowEnd, 'approval.windowEnd');
380
+ if (windowEnd <= windowStart ||
381
+ windowEnd - windowStart > MAX_SENSITIVE_QUERY_WINDOW_MS ||
382
+ windowEnd > now.getTime()) {
383
+ throw new Error('[runtime/reliability] Sensitive query window must be historical, positive, and no longer than one hour.');
384
+ }
385
+ if (approval.allowedLogGroups.length === 0 ||
386
+ new Set(approval.allowedLogGroups).size !== approval.allowedLogGroups.length) {
387
+ throw new Error('[runtime/reliability] Sensitive diagnostics require a nonempty unique log-group allowlist.');
388
+ }
389
+ for (const [index, logGroup] of approval.allowedLogGroups.entries()) {
390
+ const normalized = boundedLogGroup(logGroup, `approval.allowedLogGroups[${index}]`);
391
+ if (!normalized.startsWith('/ebk/')) {
392
+ throw new Error('[runtime/reliability] Sensitive diagnostics are limited to exact EBK log groups.');
393
+ }
394
+ }
395
+ if (!QUERY_CLASS_PATTERN.test(approval.queryClass)) {
396
+ throw new Error('[runtime/reliability] Diagnostic queryClass is unsupported.');
397
+ }
398
+ bounded(approval.incidentRef, 'approval.incidentRef');
399
+ if (approval.reason.trim().length < 8 || approval.reason.length > 512) {
400
+ throw new Error('[runtime/reliability] Diagnostic approval requires a bounded reason.');
401
+ }
402
+ requireNotExpired(approval.authorization.expiresAt, now, 'approval.authorization.expiresAt');
403
+ const decision = authorizeApprovalExecution(approval.authorization, Object.assign(Object.assign({}, diagnosticApprovalDigestInput({
404
+ allowedLogGroups: approval.allowedLogGroups,
405
+ incidentRef: approval.incidentRef,
406
+ queryClass: approval.queryClass,
407
+ reason: approval.reason,
408
+ target: approvalTarget,
409
+ windowEnd: approval.windowEnd,
410
+ windowStart: approval.windowStart,
411
+ })), { now: now.toISOString(), requiredPolicyVersion: RELIABILITY_APPROVAL_POLICY_VERSION }));
412
+ if (decision.decision !== 'allow') {
413
+ throw new Error('[runtime/reliability] Sensitive diagnostic requires a live digest-bound non-author approval.');
414
+ }
415
+ return {
416
+ approvalRequired: true,
417
+ expiresAt: approval.authorization.expiresAt,
418
+ queryClass: approval.queryClass,
419
+ source: request.source,
420
+ target,
421
+ };
422
+ }
423
+ export function planRemediation(request, options = {}) {
424
+ var _a, _b;
425
+ const requestKeys = new Set([
426
+ 'action',
427
+ 'approval',
428
+ 'cleanup',
429
+ 'execution',
430
+ 'mode',
431
+ 'preconditions',
432
+ 'stopConditions',
433
+ 'target',
434
+ 'verification',
435
+ ]);
436
+ const unexpectedRequestKeys = Object.keys(request).filter((key) => !requestKeys.has(key));
437
+ if (unexpectedRequestKeys.length > 0) {
438
+ throw new Error(`[runtime/reliability] Remediation request contains unsupported fields: ${unexpectedRequestKeys
439
+ .sort()
440
+ .join(', ')}.`);
441
+ }
442
+ if (!REMEDIATION_ACTIONS.has(request.action)) {
443
+ throw new Error('[runtime/reliability] Remediation action is unsupported.');
444
+ }
445
+ if (request.mode !== 'report' && request.mode !== 'apply') {
446
+ throw new Error('[runtime/reliability] Remediation mode is unsupported.');
447
+ }
448
+ const target = exactTarget(request.target, 'target');
449
+ const executionKeys = ((_a = request.execution) === null || _a === void 0 ? void 0 : _a.adapter) === 'protected-async-recovery'
450
+ ? ['adapter', 'asyncRecoveryReportDigest']
451
+ : ['adapter'];
452
+ if (!request.execution ||
453
+ typeof request.execution !== 'object' ||
454
+ Array.isArray(request.execution) ||
455
+ Object.keys(request.execution).some((key) => !executionKeys.includes(key))) {
456
+ throw new Error('[runtime/reliability] Remediation execution adapter is incompatible.');
457
+ }
458
+ const execution = request.execution.adapter === 'protected-async-recovery'
459
+ ? {
460
+ adapter: request.execution.adapter,
461
+ asyncRecoveryReportDigest: request.execution.asyncRecoveryReportDigest,
462
+ }
463
+ : request.execution.adapter === 'report-only'
464
+ ? { adapter: request.execution.adapter }
465
+ : undefined;
466
+ if (!execution) {
467
+ throw new Error('[runtime/reliability] Remediation execution adapter is unsupported.');
468
+ }
469
+ if (execution.adapter === 'protected-async-recovery' &&
470
+ (!['redrive', 'replay'].includes(request.action) ||
471
+ !DIGEST_PATTERN.test(execution.asyncRecoveryReportDigest))) {
472
+ throw new Error('[runtime/reliability] Protected async remediation requires a distinct exact async-recovery report digest.');
473
+ }
474
+ if (execution.adapter === 'report-only' &&
475
+ ['redrive', 'replay'].includes(request.action)) {
476
+ throw new Error('[runtime/reliability] Redrive and replay require the protected async-recovery adapter.');
477
+ }
478
+ const semantics = {
479
+ cleanup: [],
480
+ preconditions: [],
481
+ stopConditions: [],
482
+ verification: [],
483
+ };
484
+ for (const [field, values] of [
485
+ ['preconditions', request.preconditions],
486
+ ['stopConditions', request.stopConditions],
487
+ ['verification', request.verification],
488
+ ['cleanup', request.cleanup],
489
+ ]) {
490
+ if (values.length === 0) {
491
+ throw new Error(`[runtime/reliability] Remediation ${field} must not be empty.`);
492
+ }
493
+ const normalizedValues = values.map((value, index) => {
494
+ if (typeof value !== 'string' ||
495
+ value.trim().length < 8 ||
496
+ value.trim().length > 512) {
497
+ throw new Error(`[runtime/reliability] Remediation ${field}[${index}] must be bounded explanatory text.`);
498
+ }
499
+ return value.trim();
500
+ });
501
+ if (new Set(normalizedValues).size !== normalizedValues.length) {
502
+ throw new Error(`[runtime/reliability] Remediation ${field} must not contain duplicates.`);
503
+ }
504
+ semantics[field] = normalizedValues;
505
+ }
506
+ const canonicalPlan = {
507
+ action: request.action,
508
+ cleanup: semantics.cleanup,
509
+ execution,
510
+ preconditions: semantics.preconditions,
511
+ schemaVersion: 1,
512
+ stopConditions: semantics.stopConditions,
513
+ target,
514
+ verification: semantics.verification,
515
+ };
516
+ const remediationPlanDigest = createHash('sha256')
517
+ .update(JSON.stringify(canonicalPlan), 'utf8')
518
+ .digest('hex');
519
+ const normalizedRequest = {
520
+ action: request.action,
521
+ cleanup: semantics.cleanup,
522
+ execution,
523
+ mode: request.mode,
524
+ preconditions: semantics.preconditions,
525
+ stopConditions: semantics.stopConditions,
526
+ target,
527
+ verification: semantics.verification,
528
+ };
529
+ if (request.mode === 'report') {
530
+ if (request.approval) {
531
+ throw new Error('[runtime/reliability] Report mode cannot consume mutation approval.');
532
+ }
533
+ return Object.assign(Object.assign({}, normalizedRequest), { approvalRequired: true, authorized: false, remediationPlanDigest,
534
+ target });
535
+ }
536
+ if (!request.approval) {
537
+ throw new Error('[runtime/reliability] Apply mode requires an exact human approval.');
538
+ }
539
+ const approval = request.approval;
540
+ const approvalKeys = new Set(['authorization', 'incidentRef']);
541
+ if (Object.keys(approval).some((key) => !approvalKeys.has(key)) ||
542
+ Object.keys(approval).length !== approvalKeys.size) {
543
+ throw new Error('[runtime/reliability] Remediation approval does not match the canonical action, target, and plan semantics.');
544
+ }
545
+ const incidentRef = bounded(approval.incidentRef, 'approval.incidentRef');
546
+ const authorizationNow = ((_b = options.now) !== null && _b !== void 0 ? _b : (() => new Date()))();
547
+ requireNotExpired(approval.authorization.expiresAt, authorizationNow, 'approval.authorization.expiresAt');
548
+ const decision = authorizeApprovalExecution(approval.authorization, Object.assign(Object.assign({}, remediationApprovalDigestInput({
549
+ incidentRef,
550
+ plan: {
551
+ action: request.action,
552
+ remediationPlanDigest,
553
+ target,
554
+ },
555
+ })), { now: authorizationNow.toISOString(), requiredPolicyVersion: RELIABILITY_APPROVAL_POLICY_VERSION }));
556
+ if (decision.decision !== 'allow') {
557
+ throw new Error('[runtime/reliability] Remediation approval does not match the canonical action, target, plan semantics, and non-author decision.');
558
+ }
559
+ return Object.assign(Object.assign({}, normalizedRequest), { approval: structuredClone(approval), approvalRequired: true, authorized: true, remediationPlanDigest,
560
+ target });
561
+ }
562
+ //# sourceMappingURL=incident.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"incident.js","sourceRoot":"","sources":["../../../../../packages/runtime/src/reliability/incident.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EACL,0BAA0B,GAE3B,MAAM,8BAA8B,CAAC;AAWtC,MAAM,eAAe,GAAG,qCAAqC,CAAC;AAC9D,MAAM,iBAAiB,GAAG,4CAA4C,CAAC;AACvE,MAAM,cAAc,GAAG,gBAAgB,CAAC;AACxC,MAAM,mBAAmB,GAAG,iCAAiC,CAAC;AAC9D,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IACnC,aAAa;IACb,mBAAmB;IACnB,kBAAkB;CACnB,CAAC,CAAC;AACH,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACjC,GAAG,oBAAoB;IACvB,mBAAmB;CACpB,CAAC,CAAC;AACH,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,kBAAkB;IAClB,cAAc;IACd,SAAS;IACT,QAAQ;IACR,SAAS;IACT,eAAe;CAChB,CAAC,CAAC;AACH,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAmB;IACpD,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;CACR,CAAC,CAAC;AACH,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,UAAU;IACV,aAAa;IACb,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,UAAU;CACX,CAAC,CAAC;AACH,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IACtC,aAAa;IACb,UAAU;IACV,QAAQ;IACR,cAAc;CACf,CAAC,CAAC;AACH,MAAM,6BAA6B,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACrD,MAAM,uBAAuB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAC/C,MAAM,CAAC,MAAM,mCAAmC,GAAG,gBAAyB,CAAC;AAC7E,MAAM,uBAAuB,GAAG,GAAG,CAAC;AACpC,MAAM,6BAA6B,GAAG,IAAK,CAAC;AAC5C,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IACpC,aAAa;IACb,eAAe;IACf,cAAc;IACd,QAAQ;IACR,YAAY;IACZ,UAAU;IACV,YAAY;IACZ,oBAAoB;IACpB,cAAc;IACd,QAAQ;IACR,WAAW;IACX,cAAc;IACd,WAAW;IACX,OAAO;CACR,CAAC,CAAC;AAgCH,SAAS,MAAM,CACb,KAAc,EACd,KAAa;IAEb,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,uBAAuB,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,KAAU,CAAC;AACpB,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc,EAAE,KAAa;IAC1D,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO;IAChD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAC7B,qBAAqB,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,KAAK,GAAG,CAAC,CACnD,CAAC;QACF,OAAO;IACT,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QAC/D,IAAI,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CACb,2BAA2B,KAAK,uCAAuC,CACxE,CAAC;QACJ,CAAC;QACD,qBAAqB,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAChB,KAA8B,EAC9B,OAA0B,EAC1B,QAA2B,EAC3B,KAAa;IAEb,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACvE,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAC7B,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAC3D,CAAC;IACF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CACb,2BAA2B,KAAK,yCAAyC,CAC1E,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,KAAc,EAAE,KAAa;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,2BAA2B,KAAK,wCAAwC,CACzE,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAChC,IACE,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC;QACjC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC;QACzB,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EACzB,CAAC;QACD,MAAM,IAAI,KAAK,CACb,2BAA2B,KAAK,wCAAwC,CACzE,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,WAAW,CAClB,KAAc,EACd,KAAa,EACb,UAA0C,EAAE;;IAE5C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,2BAA2B,KAAK,sCAAsC,CACvE,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAChC,IACE,UAAU,CAAC,MAAM,GAAG,CAAC,MAAA,OAAO,CAAC,GAAG,mCAAI,CAAC,CAAC;QACtC,UAAU,CAAC,MAAM,GAAG,CAAC,MAAA,OAAO,CAAC,GAAG,mCAAI,IAAK,CAAC;QAC1C,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;YACjC,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACrC,OAAO,IAAI,IAAI,EAAE,IAAI,IAAI,KAAK,GAAG,CAAC;QACpC,CAAC,CAAC,EACF,CAAC;QACD,MAAM,IAAI,KAAK,CACb,2BAA2B,KAAK,sCAAsC,CACvE,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,eAAe,CAAC,KAAc,EAAE,KAAa;IACpD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,2BAA2B,KAAK,mCAAmC,CACpE,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAChC,IACE,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;QACnC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC;QACzB,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EACzB,CAAC;QACD,MAAM,IAAI,KAAK,CACb,2BAA2B,KAAK,mCAAmC,CACpE,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,QAA2E;IAE3E,OAAO;QACL,MAAM,EAAE,wBAAwB;QAChC,OAAO,EAAE;YACP,gBAAgB,EAAE,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC;YAChD,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,WAAW,EAAE,QAAQ,CAAC,WAAW;SAClC;QACD,QAAQ,EAAE;YACR,EAAE,EAAE,QAAQ,CAAC,WAAW;YACxB,IAAI,EAAE,sBAAsB;SAC7B;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,KAG9C;IACC,OAAO;QACL,MAAM,EAAE,yBAAyB;QACjC,OAAO,EAAE;YACP,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM;YACzB,qBAAqB,EAAE,KAAK,CAAC,IAAI,CAAC,qBAAqB;YACvD,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM;SAC1B;QACD,QAAQ,EAAE;YACR,EAAE,EAAE,KAAK,CAAC,WAAW;YACrB,IAAI,EAAE,sBAAsB;SAC7B;KACF,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAClB,MAAwB,EACxB,KAAa;IAEb,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACpC,MAAM,UAAU,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAU,CAAC;IACpE,SAAS,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IAChD,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,UAAU,CAAC;QACtD,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,GAAG,KAAK,SAAS,CAAC;QACnD,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,KAAK,QAAQ,CAAC;QAChD,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,KAAK,QAAQ,CAAC;KACjD,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,IAAsB,EAAE,KAAuB;IACjE,OAAO,CACL,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;QAC9B,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QAC5B,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;QAC1B,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAC3B,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,KAAc,EAAE,KAAa;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,2BAA2B,KAAK,uCAAuC,CACxE,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CACb,2BAA2B,KAAK,uCAAuC,CACxE,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CAAC,SAAiB,EAAE,GAAS,EAAE,KAAa;IACpE,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACzC,IAAI,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,iBAAiB,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,uBAAuB,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CACb,2BAA2B,KAAK,2CAA2C,CAC5E,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,aAAqD;IAErD,QAAQ,aAAa,EAAE,CAAC;QACtB,KAAK,UAAU;YACb,OAAO,OAAO,CAAC;QACjB,KAAK,MAAM;YACT,OAAO,OAAO,CAAC;QACjB;YACE,OAAO,OAAO,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAqB;IAC1D,qBAAqB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,MAAM,CAAiB,KAAK,EAAE,UAAU,CAAC,CAAC;IAC3D,SAAS,CACP,QAAQ,EACR;QACE,oBAAoB;QACpB,aAAa;QACb,qBAAqB;QACrB,YAAY;QACZ,cAAc;QACd,IAAI;QACJ,QAAQ;QACR,OAAO;QACP,UAAU;QACV,OAAO;QACP,OAAO;QACP,UAAU;KACX,EACD;QACE,oBAAoB;QACpB,YAAY;QACZ,cAAc;QACd,IAAI;QACJ,QAAQ;QACR,OAAO;QACP,UAAU;QACV,OAAO;QACP,OAAO;QACP,UAAU;KACX,EACD,UAAU,CACX,CAAC;IACF,IACE,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,QAA4B,CAAC;QAC/D,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAe,CAAC,EAC9C,CAAC;QACD,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC/C,MAAM,WAAW,GACf,QAAQ,CAAC,WAAW,KAAK,SAAS;QAChC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACnD,IACE,QAAQ,CAAC,mBAAmB,KAAK,SAAS;QAC1C,CAAC,OAAO,QAAQ,CAAC,mBAAmB,KAAK,QAAQ;YAC/C,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,EACrD,CAAC;QACD,MAAM,IAAI,KAAK,CACb,8EAA8E,CAC/E,CAAC;IACJ,CAAC;IACD,MAAM,mBAAmB,GACvB,OAAO,QAAQ,CAAC,mBAAmB,KAAK,QAAQ;QAC9C,CAAC,CAAC,QAAQ,CAAC,mBAAmB;QAC9B,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE;QACpD,GAAG,EAAE,CAAC;QACN,GAAG,EAAE,IAAK;KACX,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,MAAM,CAAsB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG;QACf,qBAAqB;QACrB,mBAAmB;QACnB,QAAQ;QACR,eAAe;KACP,CAAC;IACX,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9C,MAAM,cAAc,GAAG;QACrB,mBAAmB,EAAE,OAAO,CAC1B,KAAK,CAAC,mBAAmB,EACzB,2BAA2B,CAC5B;QACD,iBAAiB,EAAE,OAAO,CACxB,KAAK,CAAC,iBAAiB,EACvB,yBAAyB,CAC1B;QACD,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,cAAc,CAAC;QAC7C,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,qBAAqB,CAAC;KACnE,CAAC;IACF,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAC3C,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;QACrC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EACjC,CAAC;QACD,MAAM,IAAI,KAAK,CACb,mGAAmG,CACpG,CAAC;IACJ,CAAC;IACD,IACE,QAAQ,CAAC,kBAAkB,CAAC,MAAM,KAAK,CAAC;QACxC,QAAQ,CAAC,kBAAkB,CAAC,MAAM,GAAG,uBAAuB;QAC5D,QAAQ,CAAC,YAAY,CAAC,MAAM,GAAG,uBAAuB;QACtD,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QAC9B,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,6BAA6B,EACxD,CAAC;QACD,MAAM,IAAI,KAAK,CACb,mGAAmG,CACpG,CAAC;IACJ,CAAC;IACD,MAAM,kBAAkB,GAAG,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAC1E,OAAO,CAAC,KAAK,EAAE,sBAAsB,KAAK,GAAG,CAAC,CAC/C,CAAC;IACF,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAC9D,OAAO,CAAC,KAAK,EAAE,gBAAgB,KAAK,GAAG,CAAC,CACzC,CAAC;IACF,IACE,IAAI,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC,MAAM;QAC9D,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,MAAM,EAClD,CAAC;QACD,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAC9D,IAAI,QAAQ,GAAG,UAAU,CAAC;IAC1B,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE;QAC3D,MAAM,KAAK,GAAG,MAAM,CAAsB,UAAU,EAAE,YAAY,KAAK,GAAG,CAAC,CAAC;QAC5E,MAAM,SAAS,GAAG;YAChB,OAAO;YACP,IAAI;YACJ,cAAc;YACd,SAAS;YACT,MAAM;SACE,CAAC;QACX,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,KAAK,GAAG,CAAC,CAAC;QAC7D,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,YAAY,KAAK,MAAM,CAAC,CAAC;QACtD,IAAI,EAAE,GAAG,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE,CAAC;QACJ,CAAC;QACD,QAAQ,GAAG,EAAE,CAAC;QACd,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,KAAK,SAAS,CAAC,CAAC;QAC/D,IACE,CAAC,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAc,CAAC;YAClD,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC;YAClC,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,uBAAuB;YACnD,IAAI,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,YAAY,CAAC,MAAM,EAC9D,CAAC;YACD,MAAM,IAAI,KAAK,CACb,kGAAkG,CACnG,CAAC;QACJ,CAAC;QACD,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,CACnE,OAAO,CAAC,KAAK,EAAE,YAAY,KAAK,kBAAkB,aAAa,GAAG,CAAC,CACpE,CAAC;QACF,IAAI,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CACb,qGAAqG,CACtG,CAAC;QACJ,CAAC;QACD,OAAO;YACL,KAAK;YACL,EAAE,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;YAC9B,YAAY;YACZ,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,KAAK,WAAW,CAAC;YACjE,IAAI,EAAE,KAAK,CAAC,IAAkD;SAC/D,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAClC,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAChC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,CACzC,CAAC;QACF,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CACb,6EAA6E,CAC9E,CAAC;QACJ,CAAC;IACH,CAAC;IACD,mDACE,kBAAkB,IACf,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GACpC,CAAC,mBAAmB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,CAAC,KACrE,UAAU,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,EAC9C,YAAY;QACZ,EAAE;QACF,MAAM,EACN,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,QAAQ,CAAC,QAA4B,EAC/C,KAAK,EACL,KAAK,EAAE,QAAQ,CAAC,KAAgC,EAChD,QAAQ,IACR;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,OAA0B,EAC1B,UAAgC,EAAE;;IAElC,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACnD,SAAS,CACP,YAAY,EACZ,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAChC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EACpB,YAAY,CACb,CAAC;IACF,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACrD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;IACJ,CAAC;IACD,IAAI,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7C,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,sGAAsG,CACvG,CAAC;QACJ,CAAC;QACD,OAAO;YACL,gBAAgB,EAAE,KAAK;YACvB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM;SACP,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,mBAAmB,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG;QACnB,kBAAkB;QAClB,eAAe;QACf,aAAa;QACb,YAAY;QACZ,QAAQ;QACR,QAAQ;QACR,WAAW;QACX,aAAa;KACL,CAAC;IACX,SAAS,CAAC,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;IACjE,MAAM,cAAc,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACvE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CACb,8EAA8E,CAC/E,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,MAAA,OAAO,CAAC,GAAG,mCAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;IAClD,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC;IAC1E,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IACpE,IACE,SAAS,IAAI,WAAW;QACxB,SAAS,GAAG,WAAW,GAAG,6BAA6B;QACvD,SAAS,GAAG,GAAG,CAAC,OAAO,EAAE,EACzB,CAAC;QACD,MAAM,IAAI,KAAK,CACb,yGAAyG,CAC1G,CAAC;IACJ,CAAC;IACD,IACE,QAAQ,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC;QACtC,IAAI,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAC5E,CAAC;QACD,MAAM,IAAI,KAAK,CACb,4FAA4F,CAC7F,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE,CAAC;QACpE,MAAM,UAAU,GAAG,eAAe,CAChC,QAAQ,EACR,6BAA6B,KAAK,GAAG,CACtC,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC;IACtD,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CACb,sEAAsE,CACvE,CAAC;IACJ,CAAC;IACD,iBAAiB,CACf,QAAQ,CAAC,aAAa,CAAC,SAAS,EAChC,GAAG,EACH,kCAAkC,CACnC,CAAC;IACF,MAAM,QAAQ,GAAG,0BAA0B,CAAC,QAAQ,CAAC,aAAa,kCAC7D,6BAA6B,CAAC;QAC/B,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;QAC3C,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,MAAM,EAAE,cAAc;QACtB,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,WAAW,EAAE,QAAQ,CAAC,WAAW;KAClC,CAAC,KACF,GAAG,EAAE,GAAG,CAAC,WAAW,EAAE,EACtB,qBAAqB,EAAE,mCAAmC,IAC1D,CAAC;IACH,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CACb,8FAA8F,CAC/F,CAAC;IACJ,CAAC;IACD,OAAO;QACL,gBAAgB,EAAE,IAAI;QACtB,SAAS,EAAE,QAAQ,CAAC,aAAa,CAAC,SAAS;QAC3C,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM;KACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,OAA2B,EAC3B,UAAgC,EAAE;;IAElC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;QAC1B,QAAQ;QACR,UAAU;QACV,SAAS;QACT,WAAW;QACX,MAAM;QACN,eAAe;QACf,gBAAgB;QAChB,QAAQ;QACR,cAAc;KACf,CAAC,CAAC;IACH,MAAM,qBAAqB,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CACvD,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAC/B,CAAC;IACF,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CACb,0EAA0E,qBAAqB;aAC5F,IAAI,EAAE;aACN,IAAI,CAAC,IAAI,CAAC,GAAG,CACjB,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACrD,MAAM,aAAa,GACjB,CAAA,MAAA,OAAO,CAAC,SAAS,0CAAE,OAAO,MAAK,0BAA0B;QACvD,CAAC,CAAC,CAAC,SAAS,EAAE,2BAA2B,CAAC;QAC1C,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAClB,IACE,CAAC,OAAO,CAAC,SAAS;QAClB,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ;QACrC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAC1E,CAAC;QACD,MAAM,IAAI,KAAK,CACb,sEAAsE,CACvE,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GACb,OAAO,CAAC,SAAS,CAAC,OAAO,KAAK,0BAA0B;QACtD,CAAC,CAAC;YACE,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,OAAO;YAClC,yBAAyB,EACvB,OAAO,CAAC,SAAS,CAAC,yBAAyB;SAC9C;QACH,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,KAAK,aAAa;YAC3C,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE;YACxC,CAAC,CAAC,SAAS,CAAC;IAClB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;IACJ,CAAC;IACD,IACE,SAAS,CAAC,OAAO,KAAK,0BAA0B;QAChD,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;YAC9C,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC,EAC5D,CAAC;QACD,MAAM,IAAI,KAAK,CACb,2GAA2G,CAC5G,CAAC;IACJ,CAAC;IACD,IACE,SAAS,CAAC,OAAO,KAAK,aAAa;QACnC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAC9C,CAAC;QACD,MAAM,IAAI,KAAK,CACb,wFAAwF,CACzF,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAGX;QACF,OAAO,EAAE,EAAE;QACX,aAAa,EAAE,EAAE;QACjB,cAAc,EAAE,EAAE;QAClB,YAAY,EAAE,EAAE;KACjB,CAAC;IACF,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI;QAC5B,CAAC,eAAe,EAAE,OAAO,CAAC,aAAa,CAAC;QACxC,CAAC,gBAAgB,EAAE,OAAO,CAAC,cAAc,CAAC;QAC1C,CAAC,cAAc,EAAE,OAAO,CAAC,YAAY,CAAC;QACtC,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC;KACpB,EAAE,CAAC;QACX,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,qCAAqC,KAAK,qBAAqB,CAChE,CAAC;QACJ,CAAC;QACD,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACnD,IACE,OAAO,KAAK,KAAK,QAAQ;gBACzB,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;gBACvB,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,GAAG,EACzB,CAAC;gBACD,MAAM,IAAI,KAAK,CACb,qCAAqC,KAAK,IAAI,KAAK,qCAAqC,CACzF,CAAC;YACJ,CAAC;YACD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,IAAI,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,MAAM,EAAE,CAAC;YAC/D,MAAM,IAAI,KAAK,CACb,qCAAqC,KAAK,+BAA+B,CAC1E,CAAC;QACJ,CAAC;QACD,SAAS,CAAC,KAAK,CAAC,GAAG,gBAAgB,CAAC;IACtC,CAAC;IACD,MAAM,aAAa,GAAG;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,SAAS;QACT,aAAa,EAAE,SAAS,CAAC,aAAa;QACtC,aAAa,EAAE,CAAC;QAChB,cAAc,EAAE,SAAS,CAAC,cAAc;QACxC,MAAM;QACN,YAAY,EAAE,SAAS,CAAC,YAAY;KACrC,CAAC;IACF,MAAM,qBAAqB,GAAG,UAAU,CAAC,QAAQ,CAAC;SAC/C,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;SAC7C,MAAM,CAAC,KAAK,CAAC,CAAC;IACjB,MAAM,iBAAiB,GAAG;QACxB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,SAAS;QACT,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,aAAa,EAAE,SAAS,CAAC,aAAa;QACtC,cAAc,EAAE,SAAS,CAAC,cAAc;QACxC,MAAM;QACN,YAAY,EAAE,SAAS,CAAC,YAAY;KACU,CAAC;IACjD,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;QACJ,CAAC;QACD,uCACK,iBAAiB,KACpB,gBAAgB,EAAE,IAAI,EACtB,UAAU,EAAE,KAAK,EACjB,qBAAqB;YACrB,MAAM,IACN;IACJ,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC,CAAC;IAC/D,IACE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3D,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,IAAI,EAClD,CAAC;QACD,MAAM,IAAI,KAAK,CACb,6GAA6G,CAC9G,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC;IAC1E,MAAM,gBAAgB,GAAG,CAAC,MAAA,OAAO,CAAC,GAAG,mCAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;IAC/D,iBAAiB,CACf,QAAQ,CAAC,aAAa,CAAC,SAAS,EAChC,gBAAgB,EAChB,kCAAkC,CACnC,CAAC;IACF,MAAM,QAAQ,GAAG,0BAA0B,CAAC,QAAQ,CAAC,aAAa,kCAC7D,8BAA8B,CAAC;QAChC,WAAW;QACX,IAAI,EAAE;YACJ,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,qBAAqB;YACrB,MAAM;SACP;KACF,CAAC,KACF,GAAG,EAAE,gBAAgB,CAAC,WAAW,EAAE,EACnC,qBAAqB,EAAE,mCAAmC,IAC1D,CAAC;IACH,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CACb,kIAAkI,CACnI,CAAC;IACJ,CAAC;IACD,uCACK,iBAAiB,KACpB,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC,EACnC,gBAAgB,EAAE,IAAI,EACtB,UAAU,EAAE,IAAI,EAChB,qBAAqB;QACrB,MAAM,IACN;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from './burn.js';
2
+ export * from './contract.js';
3
+ export * from './incident.js';
4
+ export * from './model.js';
5
+ export * from './slo.js';
@@ -0,0 +1,6 @@
1
+ export * from './burn.js';
2
+ export * from './contract.js';
3
+ export * from './incident.js';
4
+ export * from './model.js';
5
+ export * from './slo.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/runtime/src/reliability/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC"}