@gate-forge/core 0.7.1 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/dist/classifier/bind.d.ts +2 -0
  2. package/dist/classifier/bind.d.ts.map +1 -1
  3. package/dist/classifier/bind.js +8 -0
  4. package/dist/classifier/bind.js.map +1 -1
  5. package/dist/classifier/classify.d.ts +2 -0
  6. package/dist/classifier/classify.d.ts.map +1 -1
  7. package/dist/classifier/classify.js +127 -2
  8. package/dist/classifier/classify.js.map +1 -1
  9. package/dist/classifier/index.d.ts +2 -2
  10. package/dist/classifier/index.d.ts.map +1 -1
  11. package/dist/classifier/index.js +1 -1
  12. package/dist/classifier/index.js.map +1 -1
  13. package/dist/classifier/schema.d.ts +54 -0
  14. package/dist/classifier/schema.d.ts.map +1 -1
  15. package/dist/classifier/schema.js +17 -0
  16. package/dist/classifier/schema.js.map +1 -1
  17. package/dist/config/index.d.ts +186 -0
  18. package/dist/config/index.d.ts.map +1 -1
  19. package/dist/config/index.js +327 -1
  20. package/dist/config/index.js.map +1 -1
  21. package/dist/graph/schema.d.ts +34 -0
  22. package/dist/graph/schema.d.ts.map +1 -1
  23. package/dist/index.d.ts +80 -10
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +58 -6
  26. package/dist/index.js.map +1 -1
  27. package/dist/mapping/resolve.d.ts +32 -1
  28. package/dist/mapping/resolve.d.ts.map +1 -1
  29. package/dist/mapping/resolve.js +297 -65
  30. package/dist/mapping/resolve.js.map +1 -1
  31. package/dist/policy/evaluate.d.ts +30 -0
  32. package/dist/policy/evaluate.d.ts.map +1 -1
  33. package/dist/policy/evaluate.js +22 -12
  34. package/dist/policy/evaluate.js.map +1 -1
  35. package/dist/quarantine/index.d.ts +82 -0
  36. package/dist/quarantine/index.d.ts.map +1 -0
  37. package/dist/quarantine/index.js +194 -0
  38. package/dist/quarantine/index.js.map +1 -0
  39. package/dist/receipt/index.d.ts +65 -1
  40. package/dist/receipt/index.d.ts.map +1 -1
  41. package/dist/receipt/index.js +115 -1
  42. package/dist/receipt/index.js.map +1 -1
  43. package/dist/report/human-message.d.ts +33 -0
  44. package/dist/report/human-message.d.ts.map +1 -0
  45. package/dist/report/human-message.js +33 -0
  46. package/dist/report/human-message.js.map +1 -0
  47. package/dist/report/index.d.ts +183 -9
  48. package/dist/report/index.d.ts.map +1 -1
  49. package/dist/report/index.js +317 -23
  50. package/dist/report/index.js.map +1 -1
  51. package/dist/schemas/adoption.d.ts +2 -0
  52. package/dist/schemas/adoption.d.ts.map +1 -1
  53. package/dist/schemas/adoption.js +6 -0
  54. package/dist/schemas/adoption.js.map +1 -1
  55. package/dist/schemas/behavior-catalog.d.ts +12 -0
  56. package/dist/schemas/behavior-catalog.d.ts.map +1 -1
  57. package/dist/schemas/behavior-evidence.d.ts +40 -0
  58. package/dist/schemas/behavior-evidence.d.ts.map +1 -1
  59. package/dist/schemas/behavior-evidence.js +9 -0
  60. package/dist/schemas/behavior-evidence.js.map +1 -1
  61. package/dist/schemas/behavior-policy.d.ts +26 -0
  62. package/dist/schemas/behavior-policy.d.ts.map +1 -1
  63. package/dist/schemas/behavior-policy.js +37 -1
  64. package/dist/schemas/behavior-policy.js.map +1 -1
  65. package/dist/schemas/execution-result.d.ts +17 -5
  66. package/dist/schemas/execution-result.d.ts.map +1 -1
  67. package/dist/schemas/execution-result.js +57 -2
  68. package/dist/schemas/execution-result.js.map +1 -1
  69. package/dist/schemas/gate-receipt.d.ts +25 -2
  70. package/dist/schemas/gate-receipt.d.ts.map +1 -1
  71. package/dist/schemas/gate-receipt.js +181 -2
  72. package/dist/schemas/gate-receipt.js.map +1 -1
  73. package/dist/schemas/index.d.ts +2 -0
  74. package/dist/schemas/index.d.ts.map +1 -1
  75. package/dist/schemas/index.js +2 -0
  76. package/dist/schemas/index.js.map +1 -1
  77. package/dist/schemas/policy.d.ts +19 -0
  78. package/dist/schemas/policy.d.ts.map +1 -1
  79. package/dist/schemas/policy.js +36 -0
  80. package/dist/schemas/policy.js.map +1 -1
  81. package/dist/schemas/quarantine.d.ts +25 -0
  82. package/dist/schemas/quarantine.d.ts.map +1 -0
  83. package/dist/schemas/quarantine.js +34 -0
  84. package/dist/schemas/quarantine.js.map +1 -0
  85. package/dist/schemas/queue-observer.d.ts +195 -0
  86. package/dist/schemas/queue-observer.d.ts.map +1 -0
  87. package/dist/schemas/queue-observer.js +190 -0
  88. package/dist/schemas/queue-observer.js.map +1 -0
  89. package/dist/schemas/run-record.d.ts +57 -0
  90. package/dist/schemas/run-record.d.ts.map +1 -0
  91. package/dist/schemas/run-record.js +108 -0
  92. package/dist/schemas/run-record.js.map +1 -0
  93. package/dist/schemas/runtime-config.d.ts +67 -0
  94. package/dist/schemas/runtime-config.d.ts.map +1 -1
  95. package/dist/schemas/runtime-config.js +75 -1
  96. package/dist/schemas/runtime-config.js.map +1 -1
  97. package/dist/schemas/signature-profile.d.ts +99 -0
  98. package/dist/schemas/signature-profile.d.ts.map +1 -0
  99. package/dist/schemas/signature-profile.js +197 -0
  100. package/dist/schemas/signature-profile.js.map +1 -0
  101. package/dist/schemas/test-map.d.ts +4 -0
  102. package/dist/schemas/test-map.d.ts.map +1 -1
  103. package/dist/schemas/test-map.js +12 -0
  104. package/dist/schemas/test-map.js.map +1 -1
  105. package/dist/schemas/verdict.d.ts +19 -4
  106. package/dist/schemas/verdict.d.ts.map +1 -1
  107. package/dist/schemas/verdict.js +42 -5
  108. package/dist/schemas/verdict.js.map +1 -1
  109. package/dist/strictness.d.ts +102 -0
  110. package/dist/strictness.d.ts.map +1 -0
  111. package/dist/strictness.js +92 -0
  112. package/dist/strictness.js.map +1 -0
  113. package/dist/supervision/index.js +6 -6
  114. package/dist/supervision/index.js.map +1 -1
  115. package/dist/twin-paths.d.ts +125 -0
  116. package/dist/twin-paths.d.ts.map +1 -0
  117. package/dist/twin-paths.js +233 -0
  118. package/dist/twin-paths.js.map +1 -0
  119. package/dist/verdict/behavior.d.ts.map +1 -1
  120. package/dist/verdict/behavior.js +284 -10
  121. package/dist/verdict/behavior.js.map +1 -1
  122. package/dist/verdict/cause.d.ts.map +1 -1
  123. package/dist/verdict/cause.js +18 -0
  124. package/dist/verdict/cause.js.map +1 -1
  125. package/dist/verdict/evaluate.d.ts +62 -0
  126. package/dist/verdict/evaluate.d.ts.map +1 -1
  127. package/dist/verdict/evaluate.js +300 -13
  128. package/dist/verdict/evaluate.js.map +1 -1
  129. package/dist/verdict/index.d.ts +3 -3
  130. package/dist/verdict/index.d.ts.map +1 -1
  131. package/dist/verdict/index.js +3 -3
  132. package/dist/verdict/index.js.map +1 -1
  133. package/dist/verdict/pack-verifiers.d.ts +17 -3
  134. package/dist/verdict/pack-verifiers.d.ts.map +1 -1
  135. package/dist/verdict/pack-verifiers.js +47 -8
  136. package/dist/verdict/pack-verifiers.js.map +1 -1
  137. package/dist/verdict/registry.d.ts +19 -0
  138. package/dist/verdict/registry.d.ts.map +1 -1
  139. package/dist/verdict/registry.js +21 -0
  140. package/dist/verdict/registry.js.map +1 -1
  141. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-config.d.ts","sourceRoot":"","sources":["../../src/schemas/runtime-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAMnE;AAUD,kEAAkE;AAClE,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AAE/D,sEAAsE;AACtE,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAE7D,8DAA8D;AAC9D,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAEnD,kEAAkE;AAClE,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAEhD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB;;;;kBAgB/B,CAAC;AAEL,gCAAgC;AAChC,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;kBA0B7B,CAAC;AAEL,8BAA8B;AAC9B,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;kBAiD5B,CAAC;AAEL,uCAAuC;AACvC,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
1
+ {"version":3,"file":"runtime-config.d.ts","sourceRoot":"","sources":["../../src/schemas/runtime-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAMnE;AAUD,kEAAkE;AAClE,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AAE/D,sEAAsE;AACtE,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAE7D,8DAA8D;AAC9D,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAEnD,kEAAkE;AAClE,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAEhD;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB;;;;kBASlB,CAAC;AAEZ,kCAAkC;AAClC,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,6EAA6E;AAC7E,eAAO,MAAM,mCAAmC,MAAM,CAAC;AAEvD;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,aAK5B,CAAC;AAGL;;;;GAIG;AACH,eAAO,MAAM,sBAAsB;;;;kBAgB/B,CAAC;AAEL,gCAAgC;AAChC,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;kBA0B7B,CAAC;AAEL,8BAA8B;AAC9B,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA4F5B,CAAC;AAEL,uCAAuC;AACvC,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
@@ -47,6 +47,35 @@ export const SERVICE_URL_PLACEHOLDER = '${service:<id>:url}';
47
47
  export const DEFAULT_PREPARE_TIMEOUT_SECONDS = 600;
48
48
  /** Default budget for one service readiness probe, in seconds. */
49
49
  export const DEFAULT_READY_TIMEOUT_SECONDS = 60;
50
+ /**
51
+ * One managed-run recipe step (managed-run plan (2026-09-29), Part B): the app-owned
52
+ * lifecycle command Gateforge sequences for `gateforge run`. Commands
53
+ * are argv lists (never a shell string), each step carries its own
54
+ * timeout, and a step may be retried a bounded number of times.
55
+ */
56
+ export const RecipeStepSchema = z
57
+ .object({
58
+ /** Commands to run in order; the first non-zero exit fails the step. */
59
+ commands: z.array(z.array(z.string().min(1)).min(1)).min(1),
60
+ /** Wall-clock budget for the whole step (default 600s). */
61
+ timeoutSeconds: z.number().int().min(1).max(3600).optional(),
62
+ /** Extra attempts after the first failure (0 = run once, the default). */
63
+ retries: z.number().int().min(0).max(10).optional(),
64
+ })
65
+ .strict();
66
+ /** Default wall-clock budget for one managed-run recipe step, in seconds. */
67
+ export const DEFAULT_RECIPE_STEP_TIMEOUT_SECONDS = 600;
68
+ /**
69
+ * Environment file a recipe may load, as a PATH only. An entry carrying
70
+ * a value (`NAME=value`) is rejected: the recipe never holds secret
71
+ * material, and `gateforge run` never prints the values it loads.
72
+ */
73
+ export const RecipeEnvFileSchema = z
74
+ .string()
75
+ .min(1)
76
+ .refine((value) => !value.includes('='), {
77
+ message: 'env_files entries are paths only — put the secret in the file, never inline',
78
+ });
50
79
  /**
51
80
  * One service readiness probe: a log line matching `log` (regex source
52
81
  * over the captured stdout+stderr) OR an `http` GET returning 2xx.
@@ -122,6 +151,16 @@ export const RuntimeConfigSchema = z
122
151
  .object({
123
152
  /** Command to run in the checkout (package-manager install, build). */
124
153
  command: z.string().min(1).optional(),
154
+ /**
155
+ * Managed-run preparation commands (managed-run plan (2026-09-29), Part B):
156
+ * argv lists `gateforge run` executes before the recipe
157
+ * lifecycle. Absent = no preparation step.
158
+ */
159
+ commands: z.array(z.array(z.string().min(1)).min(1)).min(1).optional(),
160
+ /** Wall-clock budget for `gateforge run`'s preparation step. */
161
+ runTimeoutSeconds: z.number().int().min(1).max(3600).optional(),
162
+ /** Extra attempts of the preparation step after a failure. */
163
+ runRetries: z.number().int().min(0).max(10).optional(),
125
164
  /**
126
165
  * Repo-relative dependency directories explicitly allowed to be
127
166
  * reused from the user repository (linked, never copied as
@@ -129,12 +168,47 @@ export const RuntimeConfigSchema = z
129
168
  */
130
169
  reuse: z.array(RuntimeReusePathSchema).optional(),
131
170
  timeoutSeconds: z.number().int().min(1).max(3600).optional(),
171
+ preflight: z.array(z.object({
172
+ name: z.string().min(1),
173
+ command: z.string().min(1),
174
+ timeoutSeconds: z.number().int().min(1).max(3600).optional(),
175
+ }).strict()).optional(),
132
176
  })
133
177
  .strict()
134
178
  .optional(),
179
+ health: z.array(z.object({
180
+ name: z.string().min(1),
181
+ tcp: z.string().min(1).optional(),
182
+ http: z.string().url().optional(),
183
+ command: z.string().min(1).optional(),
184
+ logAbsent: z.object({
185
+ command: z.string().min(1),
186
+ pattern: z.string().min(1),
187
+ }).strict().optional(),
188
+ tls: z.boolean().optional(),
189
+ timeoutSeconds: z.number().int().min(1).max(3600).optional(),
190
+ }).strict().superRefine((probe, ctx) => {
191
+ const kinds = [probe.tcp !== undefined, probe.http !== undefined, probe.command !== undefined, probe.logAbsent !== undefined].filter(Boolean).length;
192
+ if (kinds !== 1)
193
+ ctx.addIssue({ code: 'custom', path: ['tcp'], message: "health requires exactly one of 'tcp', 'http', 'command', or 'logAbsent'" });
194
+ if (probe.tls === true && probe.http === undefined)
195
+ ctx.addIssue({ code: 'custom', path: ['tls'], message: "'tls' requires an 'http' health probe" });
196
+ })).optional(),
197
+ /** Managed-run lifecycle: start the candidate's own services. */
198
+ services_up: RecipeStepSchema.optional(),
199
+ /** Managed-run lifecycle: stop those services (always the last step). */
200
+ services_down: RecipeStepSchema.optional(),
201
+ /** Managed-run lifecycle: reset the database/state under test. */
202
+ reset: RecipeStepSchema.optional(),
203
+ /** Managed-run lifecycle: seed the fixture the suite expects. */
204
+ seed: RecipeStepSchema.optional(),
205
+ /** Managed-run lifecycle: readiness probe for the started services. */
206
+ healthcheck: RecipeStepSchema.optional(),
207
+ /** Environment files the recipe loads, as paths only (no values). */
208
+ env_files: z.array(RecipeEnvFileSchema).optional(),
135
209
  /** Candidate-owned services to start, probe, and clean up. */
136
210
  services: z.array(RuntimeServiceSchema).optional(),
137
- /** Operator environment variable names allowed through to commands/services. */
211
+ /** Operator environment names allowed through to commands, services and supervised tests. */
138
212
  envAllowlist: z.array(z.string().min(1)).optional(),
139
213
  /** Whole-run execution budget handed to the supervised gate. */
140
214
  executionTimeoutSeconds: z.number().int().min(1).max(3600).optional(),
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-config.js","sourceRoot":"","sources":["../../src/schemas/runtime-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-config.js","sourceRoot":"","sources":["../../src/schemas/runtime-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Engine-side signature profiles for behavior cases (plan 2026-09-25
3
+ * Phase 1): the ONE grammar a `signatureProfile` string may use, parsed
4
+ * and validated identically by the config schema (fail fast, at config
5
+ * time) and by the witness-owned request driver (fail closed, at run
6
+ * time).
7
+ *
8
+ * Grammar (a media-type style name plus bounded parameters):
9
+ *
10
+ * hmac-sha256
11
+ * hmac-sha256;header=x-hub-signature-256
12
+ * hmac-sha256;timestampHeader=x-webhook-timestamp;toleranceMs=300000
13
+ * hmac-sha256;attemptHeader=x-webhook-attempt;attempt=2
14
+ * hmac-sha256;forgery=signature
15
+ *
16
+ * Why a string and not a nested object: the case action travels from
17
+ * the compiled catalog into the witness, and `signatureProfile` is the
18
+ * single declared key that channel already carries. The profile names
19
+ * what the ENGINE does with a secret it holds — never what a suite
20
+ * claims. A suite cannot ask for a signature it made up: the profile
21
+ * can only select a header name, a timestamp window, an attempt
22
+ * counter, or ask the engine to perform a signature forgery itself.
23
+ *
24
+ * Trust invariants (unchanged by this grammar):
25
+ * - the secret is read from the trusted lease's actor material and
26
+ * never leaves the witness process;
27
+ * - the signature is computed over the EXACT bytes the driver sends,
28
+ * never over a re-serialization;
29
+ * - a `forgery` is performed by the engine, deterministically, and
30
+ * never reveals the secret.
31
+ */
32
+ /** Signature algorithms a profile may name. */
33
+ export declare const BEHAVIOR_SIGNATURE_ALGORITHMS: readonly ["hmac-sha256"];
34
+ /** Inferred signature algorithm name. */
35
+ export type BehaviorSignatureAlgorithm = (typeof BEHAVIOR_SIGNATURE_ALGORITHMS)[number];
36
+ /**
37
+ * The deterministic forgeries the engine may perform itself.
38
+ *
39
+ * Only the SIGNATURE side: the engine binds the submitted bytes to the
40
+ * declared fixture, so a body the engine altered after signing is not
41
+ * evidence of anything (the grader refuses it outright). A forged
42
+ * signature is the honest negative case — the body the receiver verifies
43
+ * is exactly the body the owner declared.
44
+ */
45
+ export declare const BEHAVIOR_SIGNATURE_FORGERIES: readonly ["none", "signature"];
46
+ /** Inferred forgery name. */
47
+ export type BehaviorSignatureForgery = (typeof BEHAVIOR_SIGNATURE_FORGERIES)[number];
48
+ /**
49
+ * The engine-only carrier of a webhook signing secret inside a trusted
50
+ * lease's actor material. It is consumed here, never forwarded as a
51
+ * request header.
52
+ */
53
+ export declare const BEHAVIOR_SIGNING_SECRET_HEADER = "x-gateforge-signing-secret";
54
+ /** Default signature header the profiles stamp. */
55
+ export declare const DEFAULT_SIGNATURE_HEADER = "x-signature";
56
+ /** Default timestamp header the `hmac-sha256` profile stamps. */
57
+ export declare const DEFAULT_SIGNATURE_TIMESTAMP_HEADER = "x-webhook-timestamp";
58
+ /** Default attempt header the `hmac-sha256` profile stamps. */
59
+ export declare const DEFAULT_SIGNATURE_ATTEMPT_HEADER = "x-webhook-attempt";
60
+ /** A parsed, validated signature profile. */
61
+ export interface BehaviorSignatureProfile {
62
+ /** The signing algorithm over the exact request bytes. */
63
+ algorithm: BehaviorSignatureAlgorithm;
64
+ /** Header carrying the hex digest. */
65
+ header: string;
66
+ /** Header carrying the engine's timestamp, or null when unstamped. */
67
+ timestampHeader: string | null;
68
+ /** Tolerance the engine requires of its own stamp, in ms. */
69
+ toleranceMs: number | null;
70
+ /** Header carrying the delivery attempt number, or null when absent. */
71
+ attemptHeader: string | null;
72
+ /** The attempt number the engine stamps (1 when no header). */
73
+ attempt: number;
74
+ /** The forgery the engine performs, or `none`. */
75
+ forgery: BehaviorSignatureForgery;
76
+ }
77
+ /** A parsed profile or the exact reason it was refused. */
78
+ export type SignatureProfileResult = {
79
+ ok: true;
80
+ profile: BehaviorSignatureProfile;
81
+ } | {
82
+ ok: false;
83
+ error: string;
84
+ };
85
+ /**
86
+ * Parses one `signatureProfile` string into a validated profile.
87
+ *
88
+ * Args:
89
+ * text (string): the declared profile, name plus optional
90
+ * `;key=value` parameters.
91
+ *
92
+ * Returns:
93
+ * SignatureProfileResult: the profile, or the reason it was refused.
94
+ * An unknown algorithm, an unknown parameter, a malformed value, or a
95
+ * reserved header name never yields a default — the caller fails
96
+ * closed.
97
+ */
98
+ export declare function parseBehaviorSignatureProfile(text: string): SignatureProfileResult;
99
+ //# sourceMappingURL=signature-profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signature-profile.d.ts","sourceRoot":"","sources":["../../src/schemas/signature-profile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,+CAA+C;AAC/C,eAAO,MAAM,6BAA6B,0BAA2B,CAAC;AAEtE,yCAAyC;AACzC,MAAM,MAAM,0BAA0B,GAAG,CAAC,OAAO,6BAA6B,CAAC,CAAC,MAAM,CAAC,CAAC;AAExF;;;;;;;;GAQG;AACH,eAAO,MAAM,4BAA4B,gCAAiC,CAAC;AAE3E,6BAA6B;AAC7B,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,4BAA4B,CAAC,CAAC,MAAM,CAAC,CAAC;AAErF;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,+BAA+B,CAAC;AAE3E,mDAAmD;AACnD,eAAO,MAAM,wBAAwB,gBAAgB,CAAC;AAEtD,iEAAiE;AACjE,eAAO,MAAM,kCAAkC,wBAAwB,CAAC;AAExE,+DAA+D;AAC/D,eAAO,MAAM,gCAAgC,sBAAsB,CAAC;AAKpE,6CAA6C;AAC7C,MAAM,WAAW,wBAAwB;IACvC,0DAA0D;IAC1D,SAAS,EAAE,0BAA0B,CAAC;IACtC,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,6DAA6D;IAC7D,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,wEAAwE;IACxE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,OAAO,EAAE,wBAAwB,CAAC;CACnC;AAqBD,2DAA2D;AAC3D,MAAM,MAAM,sBAAsB,GAC9B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,wBAAwB,CAAA;CAAE,GAC/C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjC;;;;;;;;;;;;GAYG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,sBAAsB,CAkFlF"}
@@ -0,0 +1,197 @@
1
+ /**
2
+ * Engine-side signature profiles for behavior cases (plan 2026-09-25
3
+ * Phase 1): the ONE grammar a `signatureProfile` string may use, parsed
4
+ * and validated identically by the config schema (fail fast, at config
5
+ * time) and by the witness-owned request driver (fail closed, at run
6
+ * time).
7
+ *
8
+ * Grammar (a media-type style name plus bounded parameters):
9
+ *
10
+ * hmac-sha256
11
+ * hmac-sha256;header=x-hub-signature-256
12
+ * hmac-sha256;timestampHeader=x-webhook-timestamp;toleranceMs=300000
13
+ * hmac-sha256;attemptHeader=x-webhook-attempt;attempt=2
14
+ * hmac-sha256;forgery=signature
15
+ *
16
+ * Why a string and not a nested object: the case action travels from
17
+ * the compiled catalog into the witness, and `signatureProfile` is the
18
+ * single declared key that channel already carries. The profile names
19
+ * what the ENGINE does with a secret it holds — never what a suite
20
+ * claims. A suite cannot ask for a signature it made up: the profile
21
+ * can only select a header name, a timestamp window, an attempt
22
+ * counter, or ask the engine to perform a signature forgery itself.
23
+ *
24
+ * Trust invariants (unchanged by this grammar):
25
+ * - the secret is read from the trusted lease's actor material and
26
+ * never leaves the witness process;
27
+ * - the signature is computed over the EXACT bytes the driver sends,
28
+ * never over a re-serialization;
29
+ * - a `forgery` is performed by the engine, deterministically, and
30
+ * never reveals the secret.
31
+ */
32
+ /** Signature algorithms a profile may name. */
33
+ export const BEHAVIOR_SIGNATURE_ALGORITHMS = ['hmac-sha256'];
34
+ /**
35
+ * The deterministic forgeries the engine may perform itself.
36
+ *
37
+ * Only the SIGNATURE side: the engine binds the submitted bytes to the
38
+ * declared fixture, so a body the engine altered after signing is not
39
+ * evidence of anything (the grader refuses it outright). A forged
40
+ * signature is the honest negative case — the body the receiver verifies
41
+ * is exactly the body the owner declared.
42
+ */
43
+ export const BEHAVIOR_SIGNATURE_FORGERIES = ['none', 'signature'];
44
+ /**
45
+ * The engine-only carrier of a webhook signing secret inside a trusted
46
+ * lease's actor material. It is consumed here, never forwarded as a
47
+ * request header.
48
+ */
49
+ export const BEHAVIOR_SIGNING_SECRET_HEADER = 'x-gateforge-signing-secret';
50
+ /** Default signature header the profiles stamp. */
51
+ export const DEFAULT_SIGNATURE_HEADER = 'x-signature';
52
+ /** Default timestamp header the `hmac-sha256` profile stamps. */
53
+ export const DEFAULT_SIGNATURE_TIMESTAMP_HEADER = 'x-webhook-timestamp';
54
+ /** Default attempt header the `hmac-sha256` profile stamps. */
55
+ export const DEFAULT_SIGNATURE_ATTEMPT_HEADER = 'x-webhook-attempt';
56
+ /** Header names the engine refuses to sign with or send. */
57
+ const FORBIDDEN_HEADERS = new Set([BEHAVIOR_SIGNING_SECRET_HEADER]);
58
+ /** One profile parameter the grammar accepts. */
59
+ const PARAMETER_NAMES = new Set([
60
+ 'header',
61
+ 'timestampHeader',
62
+ 'toleranceMs',
63
+ 'attemptHeader',
64
+ 'attempt',
65
+ 'forgery',
66
+ ]);
67
+ /** Upper bound on a declared clock tolerance (24 h). */
68
+ const MAX_TOLERANCE_MS = 86_400_000;
69
+ /** Upper bound on a declared attempt number. */
70
+ const MAX_ATTEMPT = 1000;
71
+ /** Header-name grammar (RFC 7230 token, deliberately narrow). */
72
+ const HEADER_NAME = /^[A-Za-z0-9][A-Za-z0-9-]{0,63}$/;
73
+ /**
74
+ * Parses one `signatureProfile` string into a validated profile.
75
+ *
76
+ * Args:
77
+ * text (string): the declared profile, name plus optional
78
+ * `;key=value` parameters.
79
+ *
80
+ * Returns:
81
+ * SignatureProfileResult: the profile, or the reason it was refused.
82
+ * An unknown algorithm, an unknown parameter, a malformed value, or a
83
+ * reserved header name never yields a default — the caller fails
84
+ * closed.
85
+ */
86
+ export function parseBehaviorSignatureProfile(text) {
87
+ const parts = text.split(';');
88
+ const name = (parts[0] ?? '').trim();
89
+ if (BEHAVIOR_SIGNATURE_ALGORITHMS.includes(name) === false) {
90
+ return {
91
+ ok: false,
92
+ error: `unsupported signature profile '${name}' — supported: ` +
93
+ `${BEHAVIOR_SIGNATURE_ALGORITHMS.join(', ')} (with optional ;key=value parameters ` +
94
+ `${[...PARAMETER_NAMES].sort().join(', ')})`,
95
+ };
96
+ }
97
+ const profile = {
98
+ algorithm: name,
99
+ header: DEFAULT_SIGNATURE_HEADER,
100
+ timestampHeader: DEFAULT_SIGNATURE_TIMESTAMP_HEADER,
101
+ toleranceMs: null,
102
+ attemptHeader: DEFAULT_SIGNATURE_ATTEMPT_HEADER,
103
+ attempt: 1,
104
+ forgery: 'none',
105
+ };
106
+ const seen = new Set();
107
+ for (const part of parts.slice(1)) {
108
+ if (part.trim().length === 0)
109
+ continue;
110
+ const separator = part.indexOf('=');
111
+ if (separator < 0)
112
+ return { ok: false, error: `signature profile parameter '${part}' must be key=value` };
113
+ const key = part.slice(0, separator).trim();
114
+ const value = part.slice(separator + 1).trim();
115
+ if (PARAMETER_NAMES.has(key) === false) {
116
+ return { ok: false, error: `unknown signature profile parameter '${key}'` };
117
+ }
118
+ if (seen.has(key))
119
+ return { ok: false, error: `duplicate signature profile parameter '${key}'` };
120
+ seen.add(key);
121
+ if (key === 'header') {
122
+ const header = headerError(value);
123
+ if (header !== null)
124
+ return { ok: false, error: header };
125
+ profile.header = value;
126
+ continue;
127
+ }
128
+ if (key === 'timestampHeader') {
129
+ if (value === 'none') {
130
+ profile.timestampHeader = null;
131
+ continue;
132
+ }
133
+ const header = headerError(value);
134
+ if (header !== null)
135
+ return { ok: false, error: header };
136
+ profile.timestampHeader = value;
137
+ continue;
138
+ }
139
+ if (key === 'attemptHeader') {
140
+ if (value === 'none') {
141
+ profile.attemptHeader = null;
142
+ continue;
143
+ }
144
+ const header = headerError(value);
145
+ if (header !== null)
146
+ return { ok: false, error: header };
147
+ profile.attemptHeader = value;
148
+ continue;
149
+ }
150
+ if (key === 'toleranceMs') {
151
+ const parsed = integerError(value, 0, MAX_TOLERANCE_MS);
152
+ if (parsed !== null)
153
+ return { ok: false, error: `signature profile toleranceMs: ${parsed}` };
154
+ profile.toleranceMs = Number(value);
155
+ continue;
156
+ }
157
+ if (key === 'attempt') {
158
+ const parsed = integerError(value, 1, MAX_ATTEMPT);
159
+ if (parsed !== null)
160
+ return { ok: false, error: `signature profile attempt: ${parsed}` };
161
+ profile.attempt = Number(value);
162
+ continue;
163
+ }
164
+ if (BEHAVIOR_SIGNATURE_FORGERIES.includes(value) === false) {
165
+ return {
166
+ ok: false,
167
+ error: `signature profile forgery must be one of ${BEHAVIOR_SIGNATURE_FORGERIES.join(', ')} (got '${value}')`,
168
+ };
169
+ }
170
+ profile.forgery = value;
171
+ }
172
+ if (profile.timestampHeader === null)
173
+ profile.toleranceMs = null;
174
+ if (profile.attemptHeader === null)
175
+ profile.attempt = 1;
176
+ return { ok: true, profile };
177
+ }
178
+ /** Rejects a malformed or reserved header name; null when legal. */
179
+ function headerError(value) {
180
+ if (HEADER_NAME.test(value) === false) {
181
+ return `'${value}' is not a legal header name`;
182
+ }
183
+ if (FORBIDDEN_HEADERS.has(value.toLowerCase())) {
184
+ return `'${value}' is reserved for the engine-side signing secret and can never be stamped`;
185
+ }
186
+ return null;
187
+ }
188
+ /** Rejects a non-integer or out-of-range value; null when legal. */
189
+ function integerError(value, min, max) {
190
+ if (/^\d+$/.test(value) === false)
191
+ return `'${value}' is not a non-negative integer`;
192
+ const parsed = Number(value);
193
+ if (parsed < min || parsed > max)
194
+ return `'${value}' is outside [${String(min)}, ${String(max)}]`;
195
+ return null;
196
+ }
197
+ //# sourceMappingURL=signature-profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signature-profile.js","sourceRoot":"","sources":["../../src/schemas/signature-profile.ts"],"names":[],"mappings":"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"}
@@ -60,9 +60,11 @@ export declare const TestMapEntrySchema: z.ZodObject<{
60
60
  integration: "integration";
61
61
  component: "component";
62
62
  }>>;
63
+ source: z.ZodOptional<z.ZodLiteral<"annotation">>;
63
64
  categories: z.ZodOptional<z.ZodArray<z.ZodString>>;
64
65
  claims: z.ZodArray<z.ZodString>;
65
66
  caseIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
67
+ twinOf: z.ZodOptional<z.ZodString>;
66
68
  reason: z.ZodString;
67
69
  }, z.core.$strict>;
68
70
  /** Inferred test-map-entry type. */
@@ -92,9 +94,11 @@ export declare const TestMapSchema: z.ZodObject<{
92
94
  integration: "integration";
93
95
  component: "component";
94
96
  }>>;
97
+ source: z.ZodOptional<z.ZodLiteral<"annotation">>;
95
98
  categories: z.ZodOptional<z.ZodArray<z.ZodString>>;
96
99
  claims: z.ZodArray<z.ZodString>;
97
100
  caseIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
101
+ twinOf: z.ZodOptional<z.ZodString>;
98
102
  reason: z.ZodString;
99
103
  }, z.core.$strict>>;
100
104
  }, z.core.$strict>;
@@ -1 +1 @@
1
- {"version":3,"file":"test-map.d.ts","sourceRoot":"","sources":["../../src/schemas/test-map.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB;;;;;kBAWpB,CAAC;AAEZ,mCAAmC;AACnC,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;;;GAIG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;kBAuC3B,CAAC;AAEL,oCAAoC;AACpC,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;kBA4BtB,CAAC;AAEL,uCAAuC;AACvC,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC"}
1
+ {"version":3,"file":"test-map.d.ts","sourceRoot":"","sources":["../../src/schemas/test-map.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB;;;;;kBAWpB,CAAC;AAEZ,mCAAmC;AACnC,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;;;GAIG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;kBAmD3B,CAAC;AAEL,oCAAoC;AACpC,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA4BtB,CAAC;AAEL,uCAAuC;AACvC,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC"}
@@ -57,6 +57,8 @@ export const TestMapEntrySchema = z
57
57
  selector: TestSelectorSchema,
58
58
  /** Declared kind; resolves `unknown`, never observed mocking (§5.3). */
59
59
  kind: TestKindSchema.optional(),
60
+ /** Origin marker for entries generated from test annotations. */
61
+ source: z.literal('annotation').optional(),
60
62
  /** Behavior-category labels (hints only, never proof; §3.2). */
61
63
  categories: z.array(z.string().min(1)).optional(),
62
64
  /** Claimed obligation ids — at least one; `'*'` never parses. */
@@ -66,6 +68,16 @@ export const TestMapEntrySchema = z
66
68
  * Optional: absence is not proof. Duplicate ids fail closed.
67
69
  */
68
70
  caseIds: z.array(z.string().min(1)).optional(),
71
+ /**
72
+ * Twin path coverage (E64): the logical key of the RAW test this
73
+ * witnessed test is the twin of. Additive and purely declarative —
74
+ * it grants nothing, claims nothing, and is read only when
75
+ * `enforcement.twinPaths` is configured (absent = the run never
76
+ * looks at it). With it, a run can say which two tests are meant to
77
+ * cover the same request path, so a divergence between them is a
78
+ * named finding instead of an invisible one.
79
+ */
80
+ twinOf: z.string().min(1, 'twinOf must be a non-empty logical key of the raw twin').optional(),
69
81
  /** Required free-text why (a declaration must be reviewable). */
70
82
  reason: z
71
83
  .string()
@@ -1 +1 @@
1
- {"version":3,"file":"test-map.js","sourceRoot":"","sources":["../../src/schemas/test-map.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test-map.js","sourceRoot":"","sources":["../../src/schemas/test-map.ts"],"names":[],"mappings":"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"}
@@ -35,10 +35,10 @@ export type UnresolvedReason = z.infer<typeof UnresolvedReasonSchema>;
35
35
  /**
36
36
  * Stable cause codes for the shared report model (plan §5.4, ADR 0005).
37
37
  * Blocking-obligation causes name WHY an obligation is not satisfied and
38
- * select its next action; the three `DIAGNOSTIC_*` codes are advisory
39
- * result causes for the separate diagnostic run (plan §3.5) — never
40
- * obligation verdicts. The seven verdict VALUES are unchanged; causes
41
- * enrich them without weakening any contract.
38
+ * select its next action. `DIAGNOSTIC_*` codes advise on the separate
39
+ * diagnostic run; `TEST_MAP_OUT_OF_SYNC` advises on generated mappings.
40
+ * These report advisories are never obligation verdicts. The seven verdict
41
+ * VALUES are unchanged; causes enrich reports without weakening contracts.
42
42
  */
43
43
  export declare const CauseCodeSchema: z.ZodEnum<{
44
44
  TEST_INVENTORY_INCOMPLETE: "TEST_INVENTORY_INCOMPLETE";
@@ -46,6 +46,7 @@ export declare const CauseCodeSchema: z.ZodEnum<{
46
46
  TEST_MAPPING_MISSING: "TEST_MAPPING_MISSING";
47
47
  TEST_MAPPING_AMBIGUOUS: "TEST_MAPPING_AMBIGUOUS";
48
48
  TEST_MAPPING_STALE: "TEST_MAPPING_STALE";
49
+ TEST_MAP_OUT_OF_SYNC: "TEST_MAP_OUT_OF_SYNC";
49
50
  EVIDENCE_NOT_COLLECTED: "EVIDENCE_NOT_COLLECTED";
50
51
  VERIFIER_UNSUPPORTED: "VERIFIER_UNSUPPORTED";
51
52
  TEST_NOT_EXECUTED: "TEST_NOT_EXECUTED";
@@ -72,6 +73,20 @@ export declare const CauseCodeSchema: z.ZodEnum<{
72
73
  ENFORCEMENT_BOUNDARY_UNVERIFIED: "ENFORCEMENT_BOUNDARY_UNVERIFIED";
73
74
  RUNTIME_PREPARATION_FAILED: "RUNTIME_PREPARATION_FAILED";
74
75
  RUNTIME_READINESS_FAILED: "RUNTIME_READINESS_FAILED";
76
+ QUARANTINE_EXPIRED: "QUARANTINE_EXPIRED";
77
+ MIGRATION_MISSING: "MIGRATION_MISSING";
78
+ MIGRATION_LINEAGE_BROKEN: "MIGRATION_LINEAGE_BROKEN";
79
+ MIGRATION_DOWNGRADE_NOOP: "MIGRATION_DOWNGRADE_NOOP";
80
+ MIGRATION_DRIFT: "MIGRATION_DRIFT";
81
+ MIGRATION_ROUNDTRIP_FAILED: "MIGRATION_ROUNDTRIP_FAILED";
82
+ MIGRATION_DATA_LOST: "MIGRATION_DATA_LOST";
83
+ MIGRATION_CONFLICT: "MIGRATION_CONFLICT";
84
+ MIGRATION_SCRATCH_UNSAFE: "MIGRATION_SCRATCH_UNSAFE";
85
+ ADAPTER_CANNOT_WITNESS: "ADAPTER_CANNOT_WITNESS";
86
+ ADAPTER_VOLATILE_FIELD_SKIPPED: "ADAPTER_VOLATILE_FIELD_SKIPPED";
87
+ RESOURCE_SINGLETON_PER_TENANT: "RESOURCE_SINGLETON_PER_TENANT";
88
+ RESPONSE_FIELD_MISSING_FROM_MODEL: "RESPONSE_FIELD_MISSING_FROM_MODEL";
89
+ TWIN_PATH_DIVERGENT: "TWIN_PATH_DIVERGENT";
75
90
  }>;
76
91
  /** Inferred cause-code union. */
77
92
  export type CauseCode = z.infer<typeof CauseCodeSchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"verdict.d.ts","sourceRoot":"","sources":["../../src/schemas/verdict.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;;;;;;EAQxB,CAAC;AAEH,8BAA8B;AAC9B,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEpD,iEAAiE;AACjE,eAAO,MAAM,sBAAsB;;;;;;;;kBASxB,CAAC;AAEZ,wCAAwC;AACxC,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgC1B,CAAC;AAEH,iCAAiC;AACjC,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAiDjE,CAAC"}
1
+ {"version":3,"file":"verdict.d.ts","sourceRoot":"","sources":["../../src/schemas/verdict.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;;;;;;EAQxB,CAAC;AAEH,8BAA8B;AAC9B,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEpD,iEAAiE;AACjE,eAAO,MAAM,sBAAsB;;;;;;;;kBASxB,CAAC;AAEZ,wCAAwC;AACxC,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+C1B,CAAC;AAEH,iCAAiC;AACjC,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAiFjE,CAAC"}