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

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
@@ -17,22 +17,22 @@ export interface AlarmDefinition {
17
17
  threshold: number;
18
18
  }
19
19
  export interface AlarmNameInput {
20
- app: string;
21
20
  component: string;
22
21
  metric: string;
23
22
  severity?: AlarmSeverity;
23
+ slice: string;
24
24
  stage: string;
25
25
  }
26
26
  export interface QueueAlarmInput {
27
- app: string;
28
27
  queue: string;
29
28
  severity?: AlarmSeverity;
29
+ slice: string;
30
30
  stage: string;
31
31
  thresholds?: Partial<QueueAlertThresholds>;
32
32
  }
33
33
  export interface DashboardPathInput {
34
- app: string;
35
34
  dashboard: string;
35
+ slice: string;
36
36
  stage: string;
37
37
  }
38
38
  export interface DashboardRegistrationInput extends DashboardPathInput {
@@ -53,30 +53,36 @@ export interface QueueAlarmRegistration extends QueueAlarmInput {
53
53
  thresholds: QueueAlertThresholds;
54
54
  }
55
55
  export type MonitoringOwner = 'platform' | 'product';
56
- export type AppGroupAlarmKind = 'app-runtime-errors' | 'web-5xx-errors' | 'function-errors' | 'runtime-smoke-failures';
57
- export interface AppGroupObservabilityInput {
58
- app: string;
59
- functions?: readonly string[];
56
+ export interface ObservedComponent {
57
+ component: string;
58
+ feature: string;
59
+ }
60
+ export interface SliceObservabilityInput {
61
+ feature: string;
62
+ functions?: readonly ObservedComponent[];
63
+ jobs?: readonly ObservedComponent[];
60
64
  owner?: MonitoringOwner;
65
+ services?: readonly ObservedComponent[];
66
+ slice: string;
61
67
  stage: string;
62
68
  summary?: string;
63
- webApps?: readonly string[];
69
+ webApps?: readonly ObservedComponent[];
64
70
  }
65
- export interface AppGroupObservabilityRegistration extends AppGroupObservabilityInput {
71
+ export interface SliceObservabilityRegistration extends SliceObservabilityInput {
66
72
  alarms: AlarmDefinition[];
67
73
  dashboards: MonitoringDashboardRegistration[];
68
74
  owner: MonitoringOwner;
69
75
  queues: QueueAlarmRegistration[];
70
76
  summary: string;
71
77
  }
72
- export interface AppGroupMonitoringRegistration {
73
- app: string;
78
+ export interface SliceMonitoringRegistration {
74
79
  dashboards: MonitoringDashboardRegistration[];
75
80
  owner: MonitoringOwner;
76
81
  queues: QueueAlarmRegistration[];
82
+ slice: string;
77
83
  summary: string;
78
84
  }
79
- export declare function createMetricNamespace(app: string): string;
85
+ export declare function createMetricNamespace(slice: string): string;
80
86
  export declare function createAlarmName(input: AlarmNameInput): string;
81
87
  export declare function defaultQueueAlertThresholds(overrides?: Partial<QueueAlertThresholds>): QueueAlertThresholds;
82
88
  export declare function createQueueAlarmDefinitions(input: QueueAlarmInput): AlarmDefinition[];
@@ -84,23 +90,79 @@ export declare function createDashboardPath(input: DashboardPathInput): string;
84
90
  export declare function createDashboardRegistration(input: DashboardRegistrationInput): MonitoringDashboardRegistration;
85
91
  export declare function createQueueAlarmRegistration(input: QueueAlarmRegistrationInput): QueueAlarmRegistration;
86
92
  export interface EventConsumerAlarmInput {
87
- app: string;
88
93
  consumer: string;
89
- queueName: string;
90
94
  dlqName: string;
95
+ queueName: string;
91
96
  severity?: AlarmSeverity;
97
+ slice: string;
92
98
  stage: string;
93
99
  thresholds?: Partial<QueueAlertThresholds>;
94
100
  }
95
101
  export interface EventConsumerAlarmRegistration {
96
102
  alarms: AlarmDefinition[];
97
- app: string;
98
103
  consumer: string;
99
104
  dlqName: string;
100
105
  queueName: string;
106
+ slice: string;
101
107
  stage: string;
102
108
  }
103
109
  export declare function defineEventConsumerAlarms(input: EventConsumerAlarmInput): EventConsumerAlarmRegistration;
104
- export declare function createDefaultAppGroupAlarmDefinitions(input: AppGroupObservabilityInput): AlarmDefinition[];
105
- export declare function createAppGroupObservabilityRegistration(input: AppGroupObservabilityInput): AppGroupObservabilityRegistration;
106
- export declare function defineAppGroupMonitoringRegistration<T extends AppGroupMonitoringRegistration>(registration: T): T;
110
+ export declare function createDefaultSliceAlarmDefinitions(input: SliceObservabilityInput): AlarmDefinition[];
111
+ export declare function createSliceObservabilityRegistration(input: SliceObservabilityInput): SliceObservabilityRegistration;
112
+ export declare function defineSliceMonitoringRegistration<T extends SliceMonitoringRegistration>(registration: T): T;
113
+ export type MetricOutcome = 'success' | 'failure' | 'cancelled' | 'unknown';
114
+ export type MetricUnit = 'Seconds' | 'Microseconds' | 'Milliseconds' | 'Bytes' | 'Kilobytes' | 'Megabytes' | 'Gigabytes' | 'Terabytes' | 'Bits' | 'Kilobits' | 'Megabits' | 'Gigabits' | 'Terabits' | 'Percent' | 'Count' | 'Bytes/Second' | 'Kilobytes/Second' | 'Megabytes/Second' | 'Gigabytes/Second' | 'Terabytes/Second' | 'Bits/Second' | 'Kilobits/Second' | 'Megabits/Second' | 'Gigabits/Second' | 'Terabits/Second' | 'Count/Second' | 'None';
115
+ export interface MetricDimensions {
116
+ component?: string;
117
+ feature?: string;
118
+ operation?: string;
119
+ outcome?: MetricOutcome;
120
+ slice: string;
121
+ stage: string;
122
+ }
123
+ export interface EmfMetricInput {
124
+ dimensions: MetricDimensions;
125
+ metricName: string;
126
+ namespace?: string;
127
+ now?: () => Date;
128
+ storageResolution?: 1 | 60;
129
+ unit?: MetricUnit;
130
+ value: number;
131
+ }
132
+ export interface EmfMetricDescriptor {
133
+ Name: string;
134
+ StorageResolution?: 1 | 60;
135
+ Unit?: MetricUnit;
136
+ }
137
+ export interface EmfMetricRecord {
138
+ _aws: {
139
+ CloudWatchMetrics: [
140
+ {
141
+ Dimensions: [string[]];
142
+ Metrics: EmfMetricDescriptor[];
143
+ Namespace: string;
144
+ }
145
+ ];
146
+ Timestamp: number;
147
+ };
148
+ Component?: string;
149
+ Feature?: string;
150
+ Operation?: string;
151
+ Outcome?: MetricOutcome;
152
+ recordType: 'metric';
153
+ Slice: string;
154
+ Stage: string;
155
+ [metricName: string]: unknown;
156
+ }
157
+ export type EmfMetricSink = (record: Readonly<EmfMetricRecord>) => void;
158
+ export interface MetricEmitterOptions {
159
+ now?: () => Date;
160
+ sink?: EmfMetricSink;
161
+ }
162
+ export interface MetricEmitter {
163
+ emit(input: Omit<EmfMetricInput, 'now'>): EmfMetricRecord | undefined;
164
+ }
165
+ export declare function createEmfMetricRecord(input: EmfMetricInput): EmfMetricRecord;
166
+ export declare function serializeEmfMetricRecord(record: EmfMetricRecord): string;
167
+ export declare const processEmfMetricSink: EmfMetricSink;
168
+ export declare function createMetricEmitter(options?: MetricEmitterOptions): MetricEmitter;
@@ -5,13 +5,28 @@ function normalizeSegment(value) {
5
5
  .replace(/[^a-z0-9]+/g, '-')
6
6
  .replace(/^-+|-+$/g, '');
7
7
  }
8
- export function createMetricNamespace(app) {
9
- return `EBK/${normalizeSegment(app)}`;
8
+ function hasControlCharacter(value) {
9
+ return [...value].some((character) => {
10
+ const code = character.charCodeAt(0);
11
+ return code <= 31 || code === 127;
12
+ });
13
+ }
14
+ function requireDimension(value, field) {
15
+ const normalized = value.trim();
16
+ if (normalized.length === 0 ||
17
+ normalized.length > 128 ||
18
+ hasControlCharacter(normalized)) {
19
+ throw new Error(`[runtime/observability] \`${field}\` must be a non-empty, bounded deployment dimension.`);
20
+ }
21
+ return normalized;
22
+ }
23
+ export function createMetricNamespace(slice) {
24
+ return `EBK/${normalizeSegment(requireDimension(slice, 'slice'))}`;
10
25
  }
11
26
  export function createAlarmName(input) {
12
27
  var _a;
13
28
  return [
14
- normalizeSegment(input.app),
29
+ normalizeSegment(input.slice),
15
30
  normalizeSegment(input.stage),
16
31
  normalizeSegment(input.component),
17
32
  normalizeSegment(input.metric),
@@ -30,16 +45,14 @@ export function createQueueAlarmDefinitions(input) {
30
45
  {
31
46
  comparisonOperator: 'GreaterThanOrEqualToThreshold',
32
47
  description: `Visible messages in ${input.queue} exceed the shared queue threshold.`,
33
- dimensions: {
34
- QueueName: input.queue,
35
- },
48
+ dimensions: { QueueName: input.queue },
36
49
  evaluationPeriods: 2,
37
50
  metricName: 'ApproximateNumberOfMessagesVisible',
38
51
  name: createAlarmName({
39
- app: input.app,
40
52
  component: input.queue,
41
53
  metric: 'messages-visible',
42
54
  severity,
55
+ slice: input.slice,
43
56
  stage: input.stage,
44
57
  }),
45
58
  namespace,
@@ -50,16 +63,14 @@ export function createQueueAlarmDefinitions(input) {
50
63
  {
51
64
  comparisonOperator: 'GreaterThanOrEqualToThreshold',
52
65
  description: `In-flight messages in ${input.queue} exceed the shared queue threshold.`,
53
- dimensions: {
54
- QueueName: input.queue,
55
- },
66
+ dimensions: { QueueName: input.queue },
56
67
  evaluationPeriods: 2,
57
68
  metricName: 'ApproximateNumberOfMessagesNotVisible',
58
69
  name: createAlarmName({
59
- app: input.app,
60
70
  component: input.queue,
61
71
  metric: 'messages-in-flight',
62
72
  severity,
73
+ slice: input.slice,
63
74
  stage: input.stage,
64
75
  }),
65
76
  namespace,
@@ -70,16 +81,14 @@ export function createQueueAlarmDefinitions(input) {
70
81
  {
71
82
  comparisonOperator: 'GreaterThanOrEqualToThreshold',
72
83
  description: `Oldest message age in ${input.queue} exceeds the shared queue threshold.`,
73
- dimensions: {
74
- QueueName: input.queue,
75
- },
84
+ dimensions: { QueueName: input.queue },
76
85
  evaluationPeriods: 2,
77
86
  metricName: 'ApproximateAgeOfOldestMessage',
78
87
  name: createAlarmName({
79
- app: input.app,
80
88
  component: input.queue,
81
89
  metric: 'oldest-message-age',
82
90
  severity,
91
+ slice: input.slice,
83
92
  stage: input.stage,
84
93
  }),
85
94
  namespace,
@@ -90,7 +99,7 @@ export function createQueueAlarmDefinitions(input) {
90
99
  ];
91
100
  }
92
101
  export function createDashboardPath(input) {
93
- return `/${normalizeSegment(input.stage)}/${normalizeSegment(input.app)}/${normalizeSegment(input.dashboard)}`;
102
+ return `/${normalizeSegment(input.stage)}/${normalizeSegment(input.slice)}/${normalizeSegment(input.dashboard)}`;
94
103
  }
95
104
  export function createDashboardRegistration(input) {
96
105
  return Object.assign(Object.assign({}, input), { path: createDashboardPath(input) });
@@ -99,41 +108,32 @@ export function createQueueAlarmRegistration(input) {
99
108
  const thresholds = defaultQueueAlertThresholds(input.thresholds);
100
109
  return Object.assign(Object.assign({}, input), { alarms: createQueueAlarmDefinitions(Object.assign(Object.assign({}, input), { thresholds })), dashboardPath: input.dashboard
101
110
  ? createDashboardPath({
102
- app: input.app,
103
111
  dashboard: input.dashboard,
112
+ slice: input.slice,
104
113
  stage: input.stage,
105
114
  })
106
115
  : undefined, thresholds });
107
116
  }
108
- // Baseline alarms for an event consumer on the shared core bus
109
- // (rule -> SQS buffer -> Lambda, DLQ on the buffer):
110
- //
111
- // - DLQ depth >= 1 (critical): a poison event exhausted its retries and
112
- // needs manual redrive — this is the primary signal.
113
- // - Buffer queue depth / in-flight / age (standard queue thresholds): the
114
- // consumer is falling behind its publisher.
115
117
  export function defineEventConsumerAlarms(input) {
116
118
  var _a;
117
119
  const bufferAlarms = createQueueAlarmDefinitions({
118
- app: input.app,
119
120
  queue: input.queueName,
120
121
  severity: (_a = input.severity) !== null && _a !== void 0 ? _a : 'high',
122
+ slice: input.slice,
121
123
  stage: input.stage,
122
124
  thresholds: input.thresholds,
123
125
  });
124
126
  const dlqAlarm = {
125
127
  comparisonOperator: 'GreaterThanOrEqualToThreshold',
126
128
  description: `Dead-lettered ${input.consumer} events in ${input.dlqName} — a poison event exhausted its retries and needs redrive.`,
127
- dimensions: {
128
- QueueName: input.dlqName,
129
- },
129
+ dimensions: { QueueName: input.dlqName },
130
130
  evaluationPeriods: 1,
131
131
  metricName: 'ApproximateNumberOfMessagesVisible',
132
132
  name: createAlarmName({
133
- app: input.app,
134
133
  component: `${input.consumer}-event-dlq`,
135
134
  metric: 'dead-lettered-events',
136
135
  severity: 'critical',
136
+ slice: input.slice,
137
137
  stage: input.stage,
138
138
  }),
139
139
  namespace: 'AWS/SQS',
@@ -143,31 +143,40 @@ export function defineEventConsumerAlarms(input) {
143
143
  };
144
144
  return {
145
145
  alarms: [dlqAlarm, ...bufferAlarms],
146
- app: input.app,
147
146
  consumer: input.consumer,
148
147
  dlqName: input.dlqName,
149
148
  queueName: input.queueName,
149
+ slice: input.slice,
150
150
  stage: input.stage,
151
151
  };
152
152
  }
153
- function createAppGroupMetricDimensions(input, extra = {}) {
154
- return Object.assign({ App: input.app, Stage: input.stage }, extra);
153
+ function createApplicationMetricDimensions(input, component) {
154
+ return {
155
+ Component: component.component,
156
+ Feature: component.feature,
157
+ Slice: input.slice,
158
+ Stage: input.stage,
159
+ };
155
160
  }
156
- export function createDefaultAppGroupAlarmDefinitions(input) {
157
- var _a, _b;
158
- const namespace = createMetricNamespace(input.app);
161
+ export function createDefaultSliceAlarmDefinitions(input) {
162
+ var _a, _b, _c, _d;
163
+ const namespace = createMetricNamespace(input.slice);
164
+ const runtimeComponent = {
165
+ component: 'runtime',
166
+ feature: input.feature,
167
+ };
159
168
  const alarms = [
160
169
  {
161
170
  comparisonOperator: 'GreaterThanOrEqualToThreshold',
162
- description: `Runtime errors for ${input.app} exceed the app-group baseline threshold.`,
163
- dimensions: createAppGroupMetricDimensions(input),
171
+ description: `Runtime errors for ${input.slice} exceed the Slice baseline threshold.`,
172
+ dimensions: createApplicationMetricDimensions(input, runtimeComponent),
164
173
  evaluationPeriods: 1,
165
174
  metricName: 'RuntimeErrors',
166
175
  name: createAlarmName({
167
- app: input.app,
168
- component: 'app',
176
+ component: runtimeComponent.component,
169
177
  metric: 'runtime-errors',
170
178
  severity: 'high',
179
+ slice: input.slice,
171
180
  stage: input.stage,
172
181
  }),
173
182
  namespace,
@@ -179,17 +188,15 @@ export function createDefaultAppGroupAlarmDefinitions(input) {
179
188
  for (const webApp of (_a = input.webApps) !== null && _a !== void 0 ? _a : []) {
180
189
  alarms.push({
181
190
  comparisonOperator: 'GreaterThanOrEqualToThreshold',
182
- description: `5xx responses for ${input.app}/${webApp} exceed the web baseline threshold.`,
183
- dimensions: createAppGroupMetricDimensions(input, {
184
- WebApp: webApp,
185
- }),
191
+ description: `5xx responses for ${input.slice}/${webApp.component} exceed the web baseline threshold.`,
192
+ dimensions: createApplicationMetricDimensions(input, webApp),
186
193
  evaluationPeriods: 1,
187
194
  metricName: 'Web5xxErrors',
188
195
  name: createAlarmName({
189
- app: input.app,
190
- component: `web-${webApp}`,
196
+ component: webApp.component,
191
197
  metric: '5xx-errors',
192
198
  severity: 'high',
199
+ slice: input.slice,
193
200
  stage: input.stage,
194
201
  }),
195
202
  namespace,
@@ -198,20 +205,58 @@ export function createDefaultAppGroupAlarmDefinitions(input) {
198
205
  threshold: 1,
199
206
  });
200
207
  }
201
- for (const functionName of (_b = input.functions) !== null && _b !== void 0 ? _b : []) {
208
+ for (const functionComponent of (_b = input.functions) !== null && _b !== void 0 ? _b : []) {
202
209
  alarms.push({
203
210
  comparisonOperator: 'GreaterThanOrEqualToThreshold',
204
- description: `Lambda errors for ${input.app}/${functionName} exceed the function baseline threshold.`,
205
- dimensions: createAppGroupMetricDimensions(input, {
206
- Function: functionName,
207
- }),
211
+ description: `Lambda errors for ${input.slice}/${functionComponent.component} exceed the function baseline threshold.`,
212
+ dimensions: createApplicationMetricDimensions(input, functionComponent),
208
213
  evaluationPeriods: 1,
209
214
  metricName: 'FunctionErrors',
210
215
  name: createAlarmName({
211
- app: input.app,
212
- component: `function-${functionName}`,
216
+ component: functionComponent.component,
213
217
  metric: 'errors',
214
218
  severity: 'high',
219
+ slice: input.slice,
220
+ stage: input.stage,
221
+ }),
222
+ namespace,
223
+ periodSeconds: 60,
224
+ severity: 'high',
225
+ threshold: 1,
226
+ });
227
+ }
228
+ for (const service of (_c = input.services) !== null && _c !== void 0 ? _c : []) {
229
+ alarms.push({
230
+ comparisonOperator: 'GreaterThanOrEqualToThreshold',
231
+ description: `Health checks for ${input.slice}/${service.component} are failing.`,
232
+ dimensions: createApplicationMetricDimensions(input, service),
233
+ evaluationPeriods: 2,
234
+ metricName: 'ServiceHealthFailures',
235
+ name: createAlarmName({
236
+ component: service.component,
237
+ metric: 'health-failures',
238
+ severity: 'high',
239
+ slice: input.slice,
240
+ stage: input.stage,
241
+ }),
242
+ namespace,
243
+ periodSeconds: 60,
244
+ severity: 'high',
245
+ threshold: 1,
246
+ });
247
+ }
248
+ for (const job of (_d = input.jobs) !== null && _d !== void 0 ? _d : []) {
249
+ alarms.push({
250
+ comparisonOperator: 'GreaterThanOrEqualToThreshold',
251
+ description: `Executions for ${input.slice}/${job.component} are failing.`,
252
+ dimensions: createApplicationMetricDimensions(input, job),
253
+ evaluationPeriods: 1,
254
+ metricName: 'JobFailures',
255
+ name: createAlarmName({
256
+ component: job.component,
257
+ metric: 'failures',
258
+ severity: 'high',
259
+ slice: input.slice,
215
260
  stage: input.stage,
216
261
  }),
217
262
  namespace,
@@ -222,15 +267,18 @@ export function createDefaultAppGroupAlarmDefinitions(input) {
222
267
  }
223
268
  alarms.push({
224
269
  comparisonOperator: 'GreaterThanOrEqualToThreshold',
225
- description: `Runtime smoke failures for ${input.app} exceed the release-readiness threshold.`,
226
- dimensions: createAppGroupMetricDimensions(input),
270
+ description: `Runtime smoke failures for ${input.slice} exceed the release-readiness threshold.`,
271
+ dimensions: createApplicationMetricDimensions(input, {
272
+ component: 'runtime-smoke',
273
+ feature: input.feature,
274
+ }),
227
275
  evaluationPeriods: 1,
228
276
  metricName: 'RuntimeSmokeFailures',
229
277
  name: createAlarmName({
230
- app: input.app,
231
278
  component: 'runtime-smoke',
232
279
  metric: 'failures',
233
280
  severity: 'critical',
281
+ slice: input.slice,
234
282
  stage: input.stage,
235
283
  }),
236
284
  namespace,
@@ -240,21 +288,164 @@ export function createDefaultAppGroupAlarmDefinitions(input) {
240
288
  });
241
289
  return alarms;
242
290
  }
243
- export function createAppGroupObservabilityRegistration(input) {
291
+ export function createSliceObservabilityRegistration(input) {
244
292
  var _a, _b;
245
293
  const owner = (_a = input.owner) !== null && _a !== void 0 ? _a : 'product';
246
- const summary = (_b = input.summary) !== null && _b !== void 0 ? _b : `${input.app} app-group CloudWatch baseline for runtime health, web health, function errors, and smoke validation.`;
247
- return Object.assign(Object.assign({}, input), { alarms: createDefaultAppGroupAlarmDefinitions(input), dashboards: [
294
+ const summary = (_b = input.summary) !== null && _b !== void 0 ? _b : `${input.slice} Slice CloudWatch baseline for runtime health, web health, function errors, and smoke validation.`;
295
+ return Object.assign(Object.assign({}, input), { alarms: createDefaultSliceAlarmDefinitions(input), dashboards: [
248
296
  createDashboardRegistration({
249
- app: input.app,
250
297
  dashboard: 'operations',
251
298
  description: summary,
299
+ slice: input.slice,
252
300
  stage: input.stage,
253
- title: `${input.app} Operations`,
301
+ title: `${input.slice} Operations`,
254
302
  }),
255
303
  ], owner, queues: [], summary });
256
304
  }
257
- export function defineAppGroupMonitoringRegistration(registration) {
305
+ export function defineSliceMonitoringRegistration(registration) {
258
306
  return registration;
259
307
  }
308
+ const EMF_DIMENSIONS = [
309
+ ['Stage', 'stage'],
310
+ ['Slice', 'slice'],
311
+ ['Feature', 'feature'],
312
+ ['Component', 'component'],
313
+ ['Operation', 'operation'],
314
+ ['Outcome', 'outcome'],
315
+ ];
316
+ const EMF_INPUT_DIMENSIONS = new Set(EMF_DIMENSIONS.map(([, inputName]) => inputName));
317
+ const EMF_RESERVED_FIELDS = new Set([
318
+ '_aws',
319
+ 'recordType',
320
+ ...EMF_DIMENSIONS.map(([field]) => field),
321
+ ]);
322
+ const METRIC_NAME_PATTERN = /^[A-Za-z][A-Za-z0-9_.-]{0,254}$/;
323
+ const MAX_EMF_RECORD_BYTES = 8 * 1024;
324
+ const METRIC_OUTCOMES = new Set([
325
+ 'success',
326
+ 'failure',
327
+ 'cancelled',
328
+ 'unknown',
329
+ ]);
330
+ const METRIC_UNITS = new Set([
331
+ 'Seconds',
332
+ 'Microseconds',
333
+ 'Milliseconds',
334
+ 'Bytes',
335
+ 'Kilobytes',
336
+ 'Megabytes',
337
+ 'Gigabytes',
338
+ 'Terabytes',
339
+ 'Bits',
340
+ 'Kilobits',
341
+ 'Megabits',
342
+ 'Gigabits',
343
+ 'Terabits',
344
+ 'Percent',
345
+ 'Count',
346
+ 'Bytes/Second',
347
+ 'Kilobytes/Second',
348
+ 'Megabytes/Second',
349
+ 'Gigabytes/Second',
350
+ 'Terabytes/Second',
351
+ 'Bits/Second',
352
+ 'Kilobits/Second',
353
+ 'Megabits/Second',
354
+ 'Gigabits/Second',
355
+ 'Terabits/Second',
356
+ 'Count/Second',
357
+ 'None',
358
+ ]);
359
+ function metricTimestamp(now) {
360
+ const timestamp = now().getTime();
361
+ if (!Number.isFinite(timestamp)) {
362
+ throw new Error('[runtime/observability] EMF timestamp must be a valid date.');
363
+ }
364
+ return timestamp;
365
+ }
366
+ export function createEmfMetricRecord(input) {
367
+ var _a, _b;
368
+ if (!METRIC_NAME_PATTERN.test(input.metricName) ||
369
+ EMF_RESERVED_FIELDS.has(input.metricName)) {
370
+ throw new Error('[runtime/observability] EMF metricName must be a valid, non-reserved CloudWatch metric name.');
371
+ }
372
+ if (!Number.isFinite(input.value)) {
373
+ throw new Error('[runtime/observability] EMF metric value must be finite.');
374
+ }
375
+ if (input.storageResolution !== undefined &&
376
+ input.storageResolution !== 1 &&
377
+ input.storageResolution !== 60) {
378
+ throw new Error('[runtime/observability] EMF storageResolution must be 1 or 60 seconds.');
379
+ }
380
+ if (input.unit !== undefined && !METRIC_UNITS.has(input.unit)) {
381
+ throw new Error('[runtime/observability] Unsupported EMF metric unit.');
382
+ }
383
+ if (input.dimensions.outcome !== undefined &&
384
+ !METRIC_OUTCOMES.has(input.dimensions.outcome)) {
385
+ throw new Error('[runtime/observability] Unsupported EMF outcome.');
386
+ }
387
+ const unsupportedDimensions = Object.keys(input.dimensions).filter((name) => !EMF_INPUT_DIMENSIONS.has(name));
388
+ if (unsupportedDimensions.length > 0) {
389
+ throw new Error(`[runtime/observability] Unsupported EMF dimensions: ${unsupportedDimensions
390
+ .sort()
391
+ .join(', ')}.`);
392
+ }
393
+ const fields = {};
394
+ const dimensionNames = [];
395
+ for (const [emfName, inputName] of EMF_DIMENSIONS) {
396
+ const value = input.dimensions[inputName];
397
+ if (value !== undefined) {
398
+ fields[emfName] = requireDimension(value, inputName);
399
+ dimensionNames.push(emfName);
400
+ }
401
+ }
402
+ const descriptor = Object.assign(Object.assign({ Name: input.metricName }, (input.storageResolution
403
+ ? { StorageResolution: input.storageResolution }
404
+ : {})), (input.unit ? { Unit: input.unit } : {}));
405
+ const namespace = ((_a = input.namespace) === null || _a === void 0 ? void 0 : _a.trim()) || createMetricNamespace(input.dimensions.slice);
406
+ if (namespace.length === 0 ||
407
+ namespace.length > 255 ||
408
+ hasControlCharacter(namespace) ||
409
+ namespace.startsWith('AWS/')) {
410
+ throw new Error('[runtime/observability] EMF namespace must be a non-empty, control-free string no longer than 255 characters.');
411
+ }
412
+ const record = Object.assign(Object.assign({ _aws: {
413
+ CloudWatchMetrics: [
414
+ {
415
+ Dimensions: [dimensionNames],
416
+ Metrics: [descriptor],
417
+ Namespace: namespace,
418
+ },
419
+ ],
420
+ Timestamp: metricTimestamp((_b = input.now) !== null && _b !== void 0 ? _b : (() => new Date())),
421
+ } }, fields), { recordType: 'metric', Slice: requireDimension(input.dimensions.slice, 'slice'), Stage: requireDimension(input.dimensions.stage, 'stage'), [input.metricName]: input.value });
422
+ if (Buffer.byteLength(JSON.stringify(record), 'utf8') > MAX_EMF_RECORD_BYTES) {
423
+ throw new Error(`[runtime/observability] EMF record exceeds ${MAX_EMF_RECORD_BYTES} bytes.`);
424
+ }
425
+ return record;
426
+ }
427
+ export function serializeEmfMetricRecord(record) {
428
+ return JSON.stringify(record);
429
+ }
430
+ export const processEmfMetricSink = (record) => {
431
+ process.stdout.write(`${serializeEmfMetricRecord(record)}\n`);
432
+ };
433
+ export function createMetricEmitter(options = {}) {
434
+ var _a;
435
+ const sink = (_a = options.sink) !== null && _a !== void 0 ? _a : processEmfMetricSink;
436
+ return {
437
+ emit(input) {
438
+ try {
439
+ const record = createEmfMetricRecord(Object.assign(Object.assign({}, input), { now: options.now }));
440
+ sink(record);
441
+ return record;
442
+ }
443
+ catch (_a) {
444
+ // Metric validation and delivery are observational and cannot replace
445
+ // application behavior.
446
+ return undefined;
447
+ }
448
+ },
449
+ };
450
+ }
260
451
  //# sourceMappingURL=observability.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"observability.js","sourceRoot":"","sources":["../../../../packages/runtime/src/observability.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"observability.js","sourceRoot":"","sources":["../../../../packages/runtime/src/observability.ts"],"names":[],"mappings":"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"}