@smartmemory/stratum 0.3.3 → 0.4.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 (81) hide show
  1. package/dist/cli/guard.js +63 -6
  2. package/dist/cli/guard.js.map +1 -1
  3. package/dist/cli/learn.js +226 -0
  4. package/dist/cli/learn.js.map +1 -0
  5. package/dist/cli/query_gate.js +2 -1
  6. package/dist/cli/query_gate.js.map +1 -1
  7. package/dist/cli/stratum.js +5 -2
  8. package/dist/cli/stratum.js.map +1 -1
  9. package/dist/connectors/background.js +58 -10
  10. package/dist/connectors/background.js.map +1 -1
  11. package/dist/connectors/base.js +16 -0
  12. package/dist/connectors/base.js.map +1 -1
  13. package/dist/connectors/cancellation.js +119 -0
  14. package/dist/connectors/cancellation.js.map +1 -0
  15. package/dist/connectors/claude-bg-worker.js +9 -1
  16. package/dist/connectors/claude-bg-worker.js.map +1 -1
  17. package/dist/connectors/claude.js +179 -86
  18. package/dist/connectors/claude.js.map +1 -1
  19. package/dist/connectors/codex.js +289 -61
  20. package/dist/connectors/codex.js.map +1 -1
  21. package/dist/connectors/runner.js +44 -3
  22. package/dist/connectors/runner.js.map +1 -1
  23. package/dist/contracts/events.json +34 -1
  24. package/dist/contracts/guard-signers.allowed +36 -0
  25. package/dist/contracts/mcp-surface.json +1097 -104
  26. package/dist/engine/checkpoint.js +8 -1
  27. package/dist/engine/checkpoint.js.map +1 -1
  28. package/dist/engine/engine.js +508 -42
  29. package/dist/engine/engine.js.map +1 -1
  30. package/dist/engine/evaluate.js +61 -0
  31. package/dist/engine/evaluate.js.map +1 -0
  32. package/dist/engine/ledger.js +12 -0
  33. package/dist/engine/ledger.js.map +1 -1
  34. package/dist/engine/receipts.js +91 -0
  35. package/dist/engine/receipts.js.map +1 -0
  36. package/dist/engine/state.js +51 -1
  37. package/dist/engine/state.js.map +1 -1
  38. package/dist/guard/authorization.js +71 -0
  39. package/dist/guard/authorization.js.map +1 -0
  40. package/dist/guard/descriptors.js +248 -0
  41. package/dist/guard/descriptors.js.map +1 -0
  42. package/dist/guard/errors.js +12 -0
  43. package/dist/guard/errors.js.map +1 -1
  44. package/dist/guard/evidence.js +24 -3
  45. package/dist/guard/evidence.js.map +1 -1
  46. package/dist/guard/sshsig.js +264 -0
  47. package/dist/guard/sshsig.js.map +1 -0
  48. package/dist/guard/store.js +13 -0
  49. package/dist/guard/store.js.map +1 -1
  50. package/dist/guard/transition.js +484 -33
  51. package/dist/guard/transition.js.map +1 -1
  52. package/dist/guard/trust.js +78 -0
  53. package/dist/guard/trust.js.map +1 -0
  54. package/dist/ir/schema.js +8 -1
  55. package/dist/ir/schema.js.map +1 -1
  56. package/dist/ir/validate.js +3 -1
  57. package/dist/ir/validate.js.map +1 -1
  58. package/dist/judge/judged.js +1 -1
  59. package/dist/judge/pricing.js +1 -0
  60. package/dist/judge/pricing.js.map +1 -1
  61. package/dist/learn/apply.js +600 -0
  62. package/dist/learn/apply.js.map +1 -0
  63. package/dist/learn/candidate.js +186 -0
  64. package/dist/learn/candidate.js.map +1 -0
  65. package/dist/learn/classify.js +181 -0
  66. package/dist/learn/classify.js.map +1 -0
  67. package/dist/learn/harvest.js +138 -0
  68. package/dist/learn/harvest.js.map +1 -0
  69. package/dist/learn/smartmemory_egress.js +330 -0
  70. package/dist/learn/smartmemory_egress.js.map +1 -0
  71. package/dist/mcp/server.js +155 -24
  72. package/dist/mcp/server.js.map +1 -1
  73. package/dist/policy/bundle.js +195 -0
  74. package/dist/policy/bundle.js.map +1 -0
  75. package/dist/policy/events.js +51 -0
  76. package/dist/policy/events.js.map +1 -0
  77. package/dist/policy/smartmemory_client.js +332 -0
  78. package/dist/policy/smartmemory_client.js.map +1 -0
  79. package/dist/policy/types.js +2 -0
  80. package/dist/policy/types.js.map +1 -0
  81. package/package.json +3 -2
@@ -1,12 +1,13 @@
1
+ import { linkAbort, teardownDeadline } from "../connectors/cancellation.js";
1
2
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
2
3
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
4
  import { CallToolRequestSchema, ErrorCode, ListToolsRequestSchema, McpError } from "@modelcontextprotocol/sdk/types.js";
4
- import { randomUUID } from "node:crypto";
5
5
  import { readFileSync } from "node:fs";
6
6
  import { stat } from "node:fs/promises";
7
7
  import { cancelBackgroundRun, pollBackgroundRun, runAgent } from "../connectors/index.js";
8
- import { CheckpointOperationError, SpecValidationError, StratumEngine } from "../engine/engine.js";
8
+ import { CheckpointOperationError, InputValidationError, SpecValidationError, StratumEngine } from "../engine/engine.js";
9
9
  import { createEvaluator } from "../eval/expr.js";
10
+ import { createEvaluateRunner } from "../engine/evaluate.js";
10
11
  import { validateSpec } from "../ir/validate.js";
11
12
  import { evaluateJudgedViaCodex } from "../judge/codex_judged.js";
12
13
  import { createFixtureJudge } from "../judge/fixture_judged.js";
@@ -49,6 +50,26 @@ function defaultEngine() {
49
50
  ...(process.env.STRATUM_STATE_ROOT ? { stateRoot: process.env.STRATUM_STATE_ROOT } : {}),
50
51
  evaluator: createEvaluator(),
51
52
  judge,
53
+ evaluateRunner: createEvaluateRunner(),
54
+ });
55
+ }
56
+ /** Every structured MCP error goes through the registry: an envelope the
57
+ * contract does not declare (or whose payload drifts from the declaration)
58
+ * fails here rather than reaching a client as an undeclared shape. */
59
+ async function registryError(envelope, errorCode, message, data) {
60
+ const declaration = (await mcpSurface()).errors[envelope];
61
+ if (!declaration)
62
+ throw new Error(`MCP error registry is missing ${envelope}`);
63
+ assertShape(data, declaration.data, `errors.${envelope}.data`);
64
+ return new McpError(errorCode, message, data);
65
+ }
66
+ /** Rejects a request field before the contract check can run — the cancellation
67
+ * bookkeeping below must be in place before any awaited contract I/O, so these
68
+ * few fields are validated by hand and reported in the declared shape. */
69
+ function inputValidationError(path, message) {
70
+ return registryError("input_validation_failed", ErrorCode.InvalidParams, message, {
71
+ code: "input_validation_failed",
72
+ errors: [{ code: "input_validation_failed", path, message }],
52
73
  });
53
74
  }
54
75
  export function createToolDispatcher(dependencies = {}) {
@@ -56,9 +77,41 @@ export function createToolDispatcher(dependencies = {}) {
56
77
  const agentRun = dependencies.runAgent ?? runAgent;
57
78
  const agentPoll = dependencies.pollBackgroundRun ?? pollBackgroundRun;
58
79
  const agentCancel = dependencies.cancelBackgroundRun ?? cancelBackgroundRun;
80
+ // Register before contract I/O: an immediate cancellation cannot overtake startup.
81
+ // UUIDs cannot collide with durable background IDs.
82
+ const foreground = new Map();
83
+ const completed = new Map();
59
84
  return {
60
85
  async call(tool, request, context = {}) {
86
+ // This request has one required string field. Check that exact shape before
87
+ // acting synchronously, otherwise contract loading can let startup overtake
88
+ // an already-received cancellation. Full contract validation still follows.
89
+ if (tool === "stratum_cancel_agent_run" && typeof request.runId === "string"
90
+ && Object.keys(request).length === 1) {
91
+ foreground.get(request.runId)?.controller.abort(new Error("Foreground agent run cancelled"));
92
+ }
93
+ let cancellationId;
94
+ let controller;
95
+ let settle;
96
+ let unlink;
97
+ let succeeded = false;
98
+ let teardownFailure;
61
99
  try {
100
+ if (tool === "stratum_agent_run" && request.cancellationId !== undefined) {
101
+ if (typeof request.cancellationId !== "string"
102
+ || !/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(request.cancellationId)) {
103
+ throw await inputValidationError("cancellationId", "cancellationId must be a UUID");
104
+ }
105
+ cancellationId = request.cancellationId;
106
+ if (request.background === true)
107
+ throw await inputValidationError("background", "cancellationId is only supported for foreground runs");
108
+ if (foreground.has(cancellationId) || completed.has(cancellationId))
109
+ throw await inputValidationError("cancellationId", "cancellationId has already been used");
110
+ controller = new AbortController();
111
+ const settled = new Promise((resolve) => { settle = resolve; });
112
+ foreground.set(cancellationId, { controller, settled });
113
+ unlink = linkAbort(context.signal, controller);
114
+ }
62
115
  await assertToolRequest(tool, request);
63
116
  let response;
64
117
  switch (tool) {
@@ -89,12 +142,21 @@ export function createToolDispatcher(dependencies = {}) {
89
142
  response = validation.ok ? { status: "valid" } : { status: "invalid", errors: validation.errors };
90
143
  break;
91
144
  }
92
- case "stratum_plan":
93
- response = await engine.plan(request.spec, request.input, option(request, "workspaceRoot"));
145
+ case "stratum_plan": {
146
+ const policyStepSelector = optionalString(request, "policy_step_selector");
147
+ response = await engine.plan(request.spec, request.input, {
148
+ ...option(request, "workspaceRoot"),
149
+ ...(request.policy_bundle !== undefined ? { policyBundle: record(request, "policy_bundle") } : {}),
150
+ ...(policyStepSelector !== undefined ? { policyStepSelector } : {}),
151
+ });
94
152
  break;
153
+ }
95
154
  case "stratum_step_done":
96
155
  response = await engine.stepDone(string(request, "runId"), string(request, "stepId"), record(request, "result"), string(request, "dispatchToken"));
97
156
  break;
157
+ case "stratum_usage_report":
158
+ response = await engine.usageReport(string(request, "runId"), record(request, "receipt"));
159
+ break;
98
160
  case "stratum_commit":
99
161
  response = { ...await engine.commit(string(request, "flow_id"), string(request, "label")) };
100
162
  break;
@@ -108,7 +170,7 @@ export function createToolDispatcher(dependencies = {}) {
108
170
  response = auditResponse(await engine.audit(string(request, "runId")));
109
171
  break;
110
172
  case "stratum_gate_resolve":
111
- response = await engine.gateResolve(string(request, "runId"), string(request, "stepId"), string(request, "decision"), string(request, "gateToken"));
173
+ response = await engine.gateResolve(string(request, "runId"), string(request, "stepId"), string(request, "decision"), string(request, "gateToken"), optionalString(request, "user_id"));
112
174
  break;
113
175
  case "stratum_flow_poll":
114
176
  response = flowPollResponse(await engine.flowPoll(string(request, "runId"), optionalNumber(request, "cursor")));
@@ -136,6 +198,7 @@ export function createToolDispatcher(dependencies = {}) {
136
198
  : undefined;
137
199
  const executed = await agentRun({
138
200
  agent: string(request, "agent"),
201
+ ...(cancellationId !== undefined ? { ownProcessGroup: true } : {}),
139
202
  prompt: string(request, "prompt"),
140
203
  cwd: string(request, "cwd"),
141
204
  // Presence-based forwarding, NOT truthiness: sandboxMode:"" must reach
@@ -148,37 +211,73 @@ export function createToolDispatcher(dependencies = {}) {
148
211
  ...(allowedTools !== undefined ? { allowedTools } : {}),
149
212
  ...(disallowedTools !== undefined ? { disallowedTools } : {}),
150
213
  ...(context.onAgentEvent !== undefined ? { onEvent: context.onAgentEvent } : {}),
214
+ ...((controller?.signal ?? context.signal) !== undefined ? { signal: (controller?.signal ?? context.signal) } : {}),
215
+ ...(request.thinking !== undefined ? { thinking: record(request, "thinking") } : {}),
216
+ ...(request.effort !== undefined ? { effort: string(request, "effort") } : {}),
151
217
  });
218
+ unlink?.(); // Provider finished; a late disconnect cannot cancel a completed run.
219
+ succeeded = true;
152
220
  response = "status" in executed ? { ...executed } : { status: "complete", ...executed };
153
221
  break;
154
222
  }
155
223
  case "stratum_agent_poll":
156
224
  response = await agentPoll(string(request, "runId"));
157
225
  break;
158
- case "stratum_cancel_agent_run":
159
- response = await agentCancel(string(request, "runId"));
226
+ case "stratum_cancel_agent_run": {
227
+ const runId = string(request, "runId");
228
+ const running = foreground.get(runId);
229
+ if (running) {
230
+ running.controller.abort(new Error("Foreground agent run cancelled"));
231
+ // Acknowledge only after the connector has finished teardown.
232
+ await teardownDeadline(running.settled, dependencies.cancellationTimeoutMs ?? Number(process.env.STRATUM_CANCEL_TIMEOUT_MS ?? 15000), "Foreground connector teardown did not settle");
233
+ const outcome = completed.get(runId);
234
+ if (outcome instanceof Error)
235
+ throw outcome;
236
+ response = { status: "cancelled", runId };
237
+ }
238
+ else if (completed.has(runId)) {
239
+ const outcome = completed.get(runId);
240
+ if (outcome instanceof Error)
241
+ throw outcome;
242
+ response = { status: outcome, runId };
243
+ }
244
+ else
245
+ response = await agentCancel(runId);
160
246
  break;
247
+ }
161
248
  case "stratum_guard_register": {
162
249
  const { registerGuard } = await import("../guard/transition.js");
163
- response = await registerGuard(string(request, "resource_id"), record(request, "graph"), record(request, "edge_predicates"), string(request, "initial"), optionalArray(request, "terminal"), optionalRecord(request, "stakes"), optionalString(request, "workspace_root") ?? null);
250
+ response = await registerGuard(string(request, "resource_id"), record(request, "graph"), record(request, "edge_predicates"), string(request, "initial"), optionalArray(request, "terminal"), optionalRecord(request, "stakes"), optionalString(request, "workspace_root") ?? null, request.policy_bundle !== undefined ? record(request, "policy_bundle") : undefined);
164
251
  break;
165
252
  }
166
253
  case "stratum_guard_transition": {
167
254
  const { guardTransition } = await import("../guard/transition.js");
255
+ const runId = optionalString(request, "run_id");
168
256
  response = await guardTransition(string(request, "resource_id"), string(request, "from_state"), string(request, "to_state"), {
169
257
  artifacts: record(request, "artifacts"), modifiedFiles: optionalArray(request, "modified_files"), idempotencyKey: optionalString(request, "idempotency_key") ?? null, resolvedBy: optionalString(request, "resolved_by") ?? "agent",
258
+ ...(runId !== undefined ? { runId } : {}),
170
259
  ...(dependencies.guardJudge !== undefined ? { judge: dependencies.guardJudge } : {}),
171
260
  });
172
261
  break;
173
262
  }
174
263
  case "stratum_guard_override": {
175
264
  const { guardOverride } = await import("../guard/transition.js");
176
- response = await guardOverride(string(request, "resource_id"), string(request, "from_state"), string(request, "to_state"), string(request, "override_token"), string(request, "rationale"), optionalString(request, "resolved_by") ?? "human");
265
+ response = await guardOverride(string(request, "resource_id"), string(request, "from_state"), string(request, "to_state"), string(request, "authorization"), string(request, "rationale"), optionalString(request, "resolved_by") ?? "human", optionalString(request, "user_id"), optionalString(request, "run_id"));
177
266
  break;
178
267
  }
179
268
  case "stratum_guard_migrate": {
180
269
  const { guardMigrate } = await import("../guard/transition.js");
181
- response = await guardMigrate(string(request, "resource_id"), record(request, "new_graph"), record(request, "new_edge_predicates"), string(request, "override_token"), string(request, "rationale"), optionalArray(request, "new_terminal"), optionalRecord(request, "new_stakes"));
270
+ response = await guardMigrate(string(request, "resource_id"), record(request, "new_graph"), record(request, "new_edge_predicates"), string(request, "authorization"), string(request, "rationale"), optionalArray(request, "new_terminal"), optionalRecord(request, "new_stakes"));
271
+ break;
272
+ }
273
+ case "stratum_guard_upgrade": {
274
+ const { guardUpgrade } = await import("../guard/transition.js");
275
+ response = await guardUpgrade(string(request, "resource_id"), record(request, "new_graph"), record(request, "new_edge_predicates"), string(request, "rationale"), optionalArray(request, "new_terminal"), optionalRecord(request, "new_stakes"));
276
+ break;
277
+ }
278
+ case "stratum_guard_apply_upgrade": {
279
+ const { guardApplyUpgrade } = await import("../guard/transition.js");
280
+ response = await guardApplyUpgrade(string(request, "resource_id"), string(request, "descriptor_id"));
182
281
  break;
183
282
  }
184
283
  case "stratum_guard_history": {
@@ -192,30 +291,53 @@ export function createToolDispatcher(dependencies = {}) {
192
291
  await assertEvent(event);
193
292
  }
194
293
  await assertToolResponse(tool, response);
294
+ succeeded = true;
195
295
  return response;
196
296
  }
197
297
  catch (error) {
198
- if (tool === "stratum_flow_run_bg" && error instanceof SpecValidationError
199
- && error.errors.some((entry) => entry.code === "consumer_dispatch_bg_unsupported")) {
200
- const code = "consumer_dispatch_bg_unsupported";
201
- const data = { code, errors: error.errors };
202
- const declaration = (await mcpSurface()).errors[code];
203
- if (!declaration)
204
- throw new Error(`MCP error registry is missing ${code}`);
205
- assertShape(data, declaration.data, `errors.${code}.data`);
206
- throw new McpError(ErrorCode.InvalidParams, error.message, data);
298
+ if (error instanceof Error && "code" in error
299
+ && ["CANCELLATION_TEARDOWN_TIMEOUT", "CANCELLATION_UNCONFIRMED"].includes(String(error.code))) {
300
+ teardownFailure = error;
301
+ }
302
+ if (error instanceof SpecValidationError) {
303
+ const code = tool === "stratum_flow_run_bg"
304
+ && error.errors.some((entry) => entry.code === "consumer_dispatch_bg_unsupported")
305
+ ? "consumer_dispatch_bg_unsupported" : error instanceof InputValidationError ? "input_validation_failed" : "spec_validation_failed";
306
+ throw await registryError(code, ErrorCode.InvalidParams, error.message, { code, errors: error.errors });
207
307
  }
208
308
  if ((tool === "stratum_commit" || tool === "stratum_revert") && error instanceof CheckpointOperationError) {
209
309
  const response = checkpointErrorEnvelope(error);
210
310
  await assertToolResponse(tool, response);
211
311
  return response;
212
312
  }
313
+ if (tool === "stratum_agent_run" || tool === "stratum_cancel_agent_run") {
314
+ // An McpError already carries a declared code and payload — rewrapping it
315
+ // as agent_run_failed would replace a precise contract error (a rejected
316
+ // request field, an undeclared response) with a generic provider failure.
317
+ if (error instanceof McpError)
318
+ throw error;
319
+ const failure = error;
320
+ // The envelope is always agent_run_failed; `code` names the specific
321
+ // connector failure (CANCELLATION_TEARDOWN_TIMEOUT and friends) when it has one.
322
+ const data = { code: failure.code ?? "agent_run_failed", ...Object.fromEntries(["usage", "split", "usdSource", "stderr", "telemetry"].filter(key => key in Object(failure)).map(key => [key, failure[key]])) };
323
+ throw await registryError("agent_run_failed", ErrorCode.InternalError, failure.message ?? String(error), data);
324
+ }
213
325
  if (!tool.startsWith("stratum_guard_"))
214
326
  throw error;
215
327
  const response = guardErrorEnvelope(error);
216
328
  await assertToolResponse(tool, response);
217
329
  return response;
218
330
  }
331
+ finally {
332
+ unlink?.();
333
+ if (cancellationId !== undefined && controller) {
334
+ completed.set(cancellationId, teardownFailure ?? (succeeded ? "already_complete" : controller.signal.aborted ? "cancelled" : "already_error"));
335
+ foreground.delete(cancellationId);
336
+ if (completed.size > 1024)
337
+ completed.delete(completed.keys().next().value);
338
+ settle?.();
339
+ }
340
+ }
219
341
  },
220
342
  };
221
343
  }
@@ -254,20 +376,29 @@ export async function createMcpServer(dependencies = {}) {
254
376
  heartbeat.unref?.();
255
377
  }
256
378
  try {
257
- let context;
379
+ let context = { signal: extra.signal };
258
380
  if (request.params.name === "stratum_agent_run" && progressToken !== undefined) {
259
- const flowId = randomUUID();
381
+ // No flow_id: an agent run has no flow, and a server-invented UUID cannot
382
+ // match any consumer's correlation id — compose dropped EVERY agent event
383
+ // as "misrouted" while it was stamped (2026-08-30 census). Progress
384
+ // notifications are already scoped to this call by progressToken; the
385
+ // consumer stamps its own correlation id on an absent flow_id.
260
386
  let eventSeq = 0;
261
387
  context = {
388
+ signal: extra.signal,
262
389
  onAgentEvent: async (event) => {
263
390
  const message = JSON.stringify({
264
- schema_version: "0.2.7",
265
- flow_id: flowId,
391
+ // 0.2.8: flow_id is OPTIONAL on `_agent_run` envelopes (call-local).
392
+ schema_version: "0.2.8",
266
393
  step_id: "_agent_run",
267
394
  seq: eventSeq,
268
395
  ts: new Date().toISOString(),
269
396
  kind: event.kind,
270
- metadata: event.metadata,
397
+ // Agent connector events are call-local; stamp the same step
398
+ // identity in usage metadata required by the BuildStreamEvent contract.
399
+ metadata: event.kind === "step_usage"
400
+ ? { ...event.metadata, stepId: "_agent_run" }
401
+ : event.metadata,
271
402
  reply_required: false,
272
403
  });
273
404
  eventSeq += 1;
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,195 @@
1
+ import { createHash } from "node:crypto";
2
+ import { z } from "zod";
3
+ import { canonicalJson } from "../guard/canonical.js";
4
+ import { SpecificationSchema } from "../ir/schema.js";
5
+ const SHA256_HEX = /^[0-9a-f]{64}$/i;
6
+ const SourceSchema = z.object({
7
+ record_id: z.string().min(1),
8
+ memory_type: z.string().min(1),
9
+ version: z.number().int(),
10
+ content_hash: z.string().regex(SHA256_HEX),
11
+ chain_hash: z.string().regex(SHA256_HEX),
12
+ workspace_id: z.string().min(1),
13
+ decision_type: z.string().optional(),
14
+ domain: z.string().optional(),
15
+ }).strict();
16
+ const RuleBindSchema = z.discriminatedUnion("kind", [
17
+ z.object({ kind: z.literal("ensure"), step_selector: z.string().optional() }).strict(),
18
+ z.object({ kind: z.literal("guard_edge"), resource_selector: z.string().optional(), edge: z.string().optional() }).strict(),
19
+ ]);
20
+ const RulePredicateSchema = z.union([
21
+ z.object({ judged: z.object({ statement: z.string(), stakes: z.enum(["cheap", "default", "paranoid"]) }).strict() }).strict(),
22
+ z.object({ expr: z.string() }).strict(),
23
+ z.object({ file_exists: z.string() }).strict(),
24
+ z.object({ file_contains: z.object({ path: z.string(), text: z.string() }).strict() }).strict(),
25
+ ]);
26
+ const RuleSchema = z.object({
27
+ rule_id: z.string().min(1),
28
+ source: SourceSchema,
29
+ bind: RuleBindSchema,
30
+ predicate: RulePredicateSchema,
31
+ on_fail: z.enum(["refuse", "gate"]),
32
+ }).strict();
33
+ const PolicyBundleSchema = z.object({
34
+ bundle_id: z.string().regex(SHA256_HEX),
35
+ workspace_id: z.string().min(1),
36
+ compiled_at: z.string().datetime({ offset: true }).refine((value) => value.endsWith("Z"), "compiled_at must be UTC"),
37
+ selector: z.object({
38
+ workflow: z.string().optional(),
39
+ domain: z.string().optional(),
40
+ status: z.array(z.literal("active")),
41
+ }).strict(),
42
+ rules: z.array(RuleSchema),
43
+ }).strict();
44
+ export function bundleIdForRules(rules) {
45
+ return createHash("sha256").update(canonicalJson(rules), "utf8").digest("hex");
46
+ }
47
+ export function validateBundle(bundle) {
48
+ const parsed = PolicyBundleSchema.parse(bundle);
49
+ const expected = bundleIdForRules(parsed.rules);
50
+ if (parsed.bundle_id !== expected) {
51
+ throw new Error(`policy bundle_id mismatch: expected ${expected}, got ${parsed.bundle_id}`);
52
+ }
53
+ for (const rule of parsed.rules) {
54
+ if (rule.bind.kind !== "guard_edge")
55
+ continue;
56
+ // P1 guard evaluation accepts only trusted builtin statements or judged
57
+ // prose; raw ensure expressions do not have a guard evaluator/context.
58
+ if ("expr" in rule.predicate) {
59
+ throw new Error("guard-edge expr predicates are not evaluable in P1; use judged/file_exists/file_contains");
60
+ }
61
+ if (rule.on_fail === "gate") {
62
+ throw new Error(`guard-edge policy rule ${JSON.stringify(rule.rule_id)} uses on_fail=${JSON.stringify("gate")}; guard gate routing is deferred to P3`);
63
+ }
64
+ }
65
+ return parsed;
66
+ }
67
+ export function policyRuleKey(flowName, stepId) {
68
+ return `${flowName}/${stepId}`;
69
+ }
70
+ export function mergeBundleIntoSpec(spec, bundle, policyStepSelector) {
71
+ const merged = structuredClone(spec);
72
+ const policyRules = Object.create(null);
73
+ for (const rule of bundle.rules) {
74
+ if (rule.bind.kind !== "ensure")
75
+ continue;
76
+ const selector = effectiveStepSelector(rule.bind.step_selector ?? "*", policyStepSelector);
77
+ for (const [flowName, flow] of Object.entries(merged.flows)) {
78
+ if (flowName === "entry" || typeof flow === "string")
79
+ continue;
80
+ for (const step of flow.steps) {
81
+ if (step.do === undefined || !selector.matches(step.id))
82
+ continue;
83
+ const ensure = step.ensure ?? [];
84
+ const ensureIndex = ensure.length;
85
+ step.ensure = [...ensure, structuredClone(rule.predicate)];
86
+ (policyRules[policyRuleKey(flowName, step.id)] ??= []).push({
87
+ ensure_index: ensureIndex,
88
+ rule_id: rule.rule_id,
89
+ source: structuredClone(rule.source),
90
+ step_selector: selector.audit,
91
+ on_fail: rule.on_fail,
92
+ });
93
+ }
94
+ }
95
+ }
96
+ return {
97
+ spec: SpecificationSchema.parse(merged),
98
+ policy_rules: policyRules,
99
+ bundle_id: bundle.bundle_id,
100
+ };
101
+ }
102
+ /**
103
+ * A caller selector is a narrowing constraint, never permission to bind a rule
104
+ * beyond its compiler-provided selector. When neither glob contains the other,
105
+ * retain their intersection and make that conjunction explicit in the audit.
106
+ */
107
+ function effectiveStepSelector(ruleSelector, override) {
108
+ if (override === undefined || override === ruleSelector) {
109
+ return { audit: ruleSelector, matches: (stepId) => globMatches(ruleSelector, stepId) };
110
+ }
111
+ if (override === "*") {
112
+ return { audit: ruleSelector, matches: (stepId) => globMatches(ruleSelector, stepId) };
113
+ }
114
+ if (ruleSelector === "*") {
115
+ return { audit: override, matches: (stepId) => globMatches(override, stepId) };
116
+ }
117
+ return {
118
+ audit: `${ruleSelector} & ${override}`,
119
+ matches: (stepId) => globMatches(ruleSelector, stepId) && globMatches(override, stepId),
120
+ };
121
+ }
122
+ export function guardEdgePredicatesFor(bundle, resourceId, edgePredicates, stakes) {
123
+ const merged = structuredClone(edgePredicates);
124
+ const addedJudged = new Map();
125
+ for (const rule of bundle.rules) {
126
+ if (rule.bind.kind !== "guard_edge")
127
+ continue;
128
+ if (!globMatches(rule.bind.resource_selector ?? "*", resourceId))
129
+ continue;
130
+ for (const edge of Object.keys(merged)) {
131
+ if (rule.bind.edge !== undefined && rule.bind.edge !== edge)
132
+ continue;
133
+ const predicate = guardPredicate(rule);
134
+ (merged[edge] ??= []).push(predicate);
135
+ if ("judged" in rule.predicate) {
136
+ (addedJudged.get(edge) ?? setAndGet(addedJudged, edge)).push(rule.rule_id);
137
+ stakes[edge] = maxStakes(stakes[edge], rule.predicate.judged.stakes);
138
+ }
139
+ }
140
+ }
141
+ for (const [edge, ruleIds] of addedJudged) {
142
+ const predicates = merged[edge] ?? [];
143
+ const hasDeterministic = predicates.some((predicate) => predicate.type === undefined || predicate.type === "deterministic");
144
+ if (stakes[edge] === "paranoid" && !hasDeterministic) {
145
+ throw new Error(`policy rule ${JSON.stringify(ruleIds[0])} cannot merge onto paranoid edge ${JSON.stringify(edge)} without a deterministic predicate`);
146
+ }
147
+ }
148
+ return merged;
149
+ }
150
+ const STAKE_ORDER = { cheap: 0, default: 1, paranoid: 2 };
151
+ function maxStakes(existing, added) {
152
+ const current = existing === "cheap" || existing === "default" || existing === "paranoid" ? existing : "default";
153
+ return STAKE_ORDER[added] > STAKE_ORDER[current] ? added : current;
154
+ }
155
+ function guardPredicate(rule) {
156
+ const common = { id: rule.rule_id, source: structuredClone(rule.source) };
157
+ const predicate = rule.predicate;
158
+ if ("judged" in predicate)
159
+ return { type: "judged", statement: predicate.judged.statement, stakes: predicate.judged.stakes, ...common };
160
+ if ("expr" in predicate)
161
+ return { type: "deterministic", statement: predicate.expr, ...common };
162
+ if ("file_exists" in predicate) {
163
+ return { type: "deterministic", statement: `server_file_exists(${JSON.stringify(predicate.file_exists)})`, ...common };
164
+ }
165
+ return {
166
+ type: "deterministic",
167
+ statement: `server_file_contains(${JSON.stringify(predicate.file_contains.path)}, ${JSON.stringify(predicate.file_contains.text)})`,
168
+ ...common,
169
+ };
170
+ }
171
+ function setAndGet(map, key) {
172
+ const value = [];
173
+ map.set(key, value);
174
+ return value;
175
+ }
176
+ function globMatches(pattern, value) {
177
+ let source = "^";
178
+ for (const character of pattern) {
179
+ if (character === "*")
180
+ source += ".*";
181
+ else if (character === "?")
182
+ source += ".";
183
+ else
184
+ source += character.replace(/[\\^$.*+?()[\]{}|]/g, "\\$&");
185
+ }
186
+ return new RegExp(`${source}$`, "u").test(value);
187
+ }
188
+ export function predicateType(predicate) {
189
+ return "judged" in predicate ? "judged" : "deterministic";
190
+ }
191
+ export function sourceFromPredicate(predicate) {
192
+ const source = predicate.source;
193
+ return SourceSchema.safeParse(source).success ? source : undefined;
194
+ }
195
+ //# sourceMappingURL=bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../src/policy/bundle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAE,mBAAmB,EAAsB,MAAM,iBAAiB,CAAC;AAG1E,MAAM,UAAU,GAAG,iBAAiB,CAAC;AAErC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACzB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;IAC1C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;IACxC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,MAAM,cAAc,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAClD,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACtF,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;CAC5H,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC;IAClC,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IAC7H,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACvC,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IAC9C,CAAC,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;CAChG,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,MAAM,EAAE,YAAY;IACpB,IAAI,EAAE,cAAc;IACpB,SAAS,EAAE,mBAAmB;IAC9B,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;CACpC,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;IACvC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,yBAAyB,CAAC;IACpH,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC;QACjB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;KACrC,CAAC,CAAC,MAAM,EAAE;IACX,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;CAC3B,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAe;IAC5C,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAiB,CAAC;IAChE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,MAAM,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,uCAAuC,QAAQ,SAAS,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9F,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY;YAAE,SAAS;QAC9C,wEAAwE;QACxE,uEAAuE;QACvE,IAAI,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAC;QAC9G,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAC;QACzJ,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,MAAc;IAC5D,OAAO,GAAG,QAAQ,IAAI,MAAM,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,IAAmB,EACnB,MAAoB,EACpB,kBAA2B;IAE3B,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,WAAW,GAAkB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAkB,CAAC;IAExE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ;YAAE,SAAS;QAC1C,MAAM,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,GAAG,EAAE,kBAAkB,CAAC,CAAC;QAC3F,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5D,IAAI,QAAQ,KAAK,OAAO,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,SAAS;YAC/D,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC9B,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBAAE,SAAS;gBAClE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;gBACjC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;gBAClC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC3D,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC;oBAC1D,YAAY,EAAE,WAAW;oBACzB,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;oBACpC,aAAa,EAAE,QAAQ,CAAC,KAAK;oBAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;iBACtB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,EAAE,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC;QACvC,YAAY,EAAE,WAAW;QACzB,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,YAAoB,EAAE,QAA4B;IAC/E,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;QACxD,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC;IACzF,CAAC;IACD,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;QACrB,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC;IACzF,CAAC;IACD,IAAI,YAAY,KAAK,GAAG,EAAE,CAAC;QACzB,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;IACjF,CAAC;IACD,OAAO;QACL,KAAK,EAAE,GAAG,YAAY,MAAM,QAAQ,EAAE;QACtC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC;KACxF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,MAAoB,EACpB,UAAkB,EAClB,cAA8B,EAC9B,MAA8B;IAE9B,MAAM,MAAM,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,IAAI,GAAG,EAAoB,CAAC;IAEhD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY;YAAE,SAAS;QAC9C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,GAAG,EAAE,UAAU,CAAC;YAAE,SAAS;QAC3E,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACvC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI;gBAAE,SAAS;YACtE,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;YACvC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtC,IAAI,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC/B,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC3E,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,WAAW,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACtC,MAAM,gBAAgB,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC;QAC5H,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,UAAU,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,oCAAoC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QACzJ,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,WAAW,GAAoC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;AAE3F,SAAS,SAAS,CAAC,QAA4B,EAAE,KAAsB;IACrE,MAAM,OAAO,GAAG,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IACjH,OAAO,WAAW,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;AACrE,CAAC;AAED,SAAS,cAAc,CAAC,IAAU;IAChC,MAAM,MAAM,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IAC1E,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IACjC,IAAI,QAAQ,IAAI,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;IACxI,IAAI,MAAM,IAAI,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAChG,IAAI,aAAa,IAAI,SAAS,EAAE,CAAC;QAC/B,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,sBAAsB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IACzH,CAAC;IACD,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,SAAS,EAAE,wBAAwB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG;QACnI,GAAG,MAAM;KACV,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,GAA0B,EAAE,GAAW;IACxD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACpB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAAC,OAAe,EAAE,KAAa;IACjD,IAAI,MAAM,GAAG,GAAG,CAAC;IACjB,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;QAChC,IAAI,SAAS,KAAK,GAAG;YAAE,MAAM,IAAI,IAAI,CAAC;aACjC,IAAI,SAAS,KAAK,GAAG;YAAE,MAAM,IAAI,GAAG,CAAC;;YACrC,MAAM,IAAI,SAAS,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,IAAI,MAAM,CAAC,GAAG,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,SAAwB;IACpD,OAAO,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,SAAkC;IACpE,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;IAChC,OAAO,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/E,CAAC"}