@animalabs/membrane 0.5.54 → 0.5.55

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.
@@ -16,11 +16,13 @@
16
16
  * output is shipped, so producer-side bugs cannot leak the same 400 family
17
17
  * (compression-bug 5/6/7/8/9, agent-framework #37, 2026-05-22 miner stall).
18
18
  *
19
- * Algorithm overview (six phases): reclassify blocks by required role,
19
+ * Algorithm overview (eight phases): reclassify blocks by required role,
20
20
  * reflow into role-correct envelopes, hoist matching tool_results across
21
21
  * the assistant→user boundary, evict interlopers wedged between use and
22
22
  * result, synthesize `[pending]` results for trailing orphans (or signal
23
- * not-ready when the id is in the caller-supplied pending set), validate.
23
+ * not-ready when the id is in the caller-supplied pending set), drop
24
+ * empty envelopes, prepend a synthetic `[continuing]` user envelope when
25
+ * the first envelope ended up assistant-role, validate.
24
26
  */
25
27
  import type { ProviderMessage as LooseProviderMessage } from './types.js';
26
28
  import type { NormalizeEvent } from './types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"normalize-tool-pairs.d.ts","sourceRoot":"","sources":["../../src/formatters/normalize-tool-pairs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,eAAe,IAAI,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAMjD;;;;;;;;GAQG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvE,MAAM,WAAW,gBAAgB;IAC/B,6CAA6C;IAC7C,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACzC,sCAAsC;IACtC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;CAC3C;AAED,MAAM,WAAW,eAAe;IAC9B;;;;;;OAMG;IACH,QAAQ,EAAE,oBAAoB,EAAE,CAAC;IACjC;;;;OAIG;IACH,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,qBAAa,uBAAwB,SAAQ,KAAK;aAG9B,KAAK,EAAE,aAAa,CAAC,oBAAoB,CAAC;aAC1C,MAAM,EAAE,aAAa,CAAC,oBAAoB,CAAC;gBAF3D,OAAO,EAAE,MAAM,EACC,KAAK,EAAE,aAAa,CAAC,oBAAoB,CAAC,EAC1C,MAAM,EAAE,aAAa,CAAC,oBAAoB,CAAC;CAK9D;AAMD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,CAAC,oBAAoB,CAAC,EAC1C,OAAO,GAAE,gBAAqB,GAC7B,eAAe,CA+DjB;AAmdD;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,aAAa,CAAC,oBAAoB,CAAC,GAC5C,oBAAoB,EAAE,CAsBxB"}
1
+ {"version":3,"file":"normalize-tool-pairs.d.ts","sourceRoot":"","sources":["../../src/formatters/normalize-tool-pairs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,eAAe,IAAI,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAMjD;;;;;;;;GAQG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvE,MAAM,WAAW,gBAAgB;IAC/B,6CAA6C;IAC7C,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACzC,sCAAsC;IACtC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;CAC3C;AAED,MAAM,WAAW,eAAe;IAC9B;;;;;;OAMG;IACH,QAAQ,EAAE,oBAAoB,EAAE,CAAC;IACjC;;;;OAIG;IACH,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,qBAAa,uBAAwB,SAAQ,KAAK;aAG9B,KAAK,EAAE,aAAa,CAAC,oBAAoB,CAAC;aAC1C,MAAM,EAAE,aAAa,CAAC,oBAAoB,CAAC;gBAF3D,OAAO,EAAE,MAAM,EACC,KAAK,EAAE,aAAa,CAAC,oBAAoB,CAAC,EAC1C,MAAM,EAAE,aAAa,CAAC,oBAAoB,CAAC;CAK9D;AAMD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,CAAC,oBAAoB,CAAC,EAC1C,OAAO,GAAE,gBAAqB,GAC7B,eAAe,CAuIjB;AAodD;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,aAAa,CAAC,oBAAoB,CAAC,GAC5C,oBAAoB,EAAE,CAsBxB"}
@@ -16,11 +16,13 @@
16
16
  * output is shipped, so producer-side bugs cannot leak the same 400 family
17
17
  * (compression-bug 5/6/7/8/9, agent-framework #37, 2026-05-22 miner stall).
18
18
  *
19
- * Algorithm overview (six phases): reclassify blocks by required role,
19
+ * Algorithm overview (eight phases): reclassify blocks by required role,
20
20
  * reflow into role-correct envelopes, hoist matching tool_results across
21
21
  * the assistant→user boundary, evict interlopers wedged between use and
22
22
  * result, synthesize `[pending]` results for trailing orphans (or signal
23
- * not-ready when the id is in the caller-supplied pending set), validate.
23
+ * not-ready when the id is in the caller-supplied pending set), drop
24
+ * empty envelopes, prepend a synthetic `[continuing]` user envelope when
25
+ * the first envelope ended up assistant-role, validate.
24
26
  */
25
27
  export class MembraneNormalizerError extends Error {
26
28
  input;
@@ -70,31 +72,100 @@ export function normalizeToolPairs(input, options = {}) {
70
72
  // Phase 5.5: suppress cache_control on/after any envelope containing
71
73
  // a synthetic block, so cache keys don't get invalidated when the
72
74
  // real result arrives in a later round.
75
+ //
76
+ // The suppression itself happens here (we know which envelope is the
77
+ // first synthetic by its position in the current array), but the
78
+ // `cache_suppressed_for_synthetic` telemetry is deferred until after
79
+ // phase 6 (which can drop empty envelopes before the synthetic) and
80
+ // phase 7 (which can prepend a `[continuing]` envelope, shifting
81
+ // everything by +1). The event's `envelopeIndex` must refer to the
82
+ // final output array so consumers can index back into it reliably.
83
+ // We pin the envelope by reference and recompute the index after
84
+ // those phases settle.
73
85
  // ---------------------------------------------------------------------
86
+ let pendingCacheSuppressionRef = null;
74
87
  if (orphanRes.firstSyntheticEnvelope !== null) {
75
- suppressCacheControlFrom(envelopes, orphanRes.firstSyntheticEnvelope, onEvent);
88
+ const ref = envelopes[orphanRes.firstSyntheticEnvelope];
89
+ const suppressed = suppressCacheControlFrom(envelopes, orphanRes.firstSyntheticEnvelope);
90
+ if (suppressed) {
91
+ pendingCacheSuppressionRef = ref;
92
+ }
76
93
  }
77
94
  // ---------------------------------------------------------------------
78
95
  // Phase 6: drop empty envelopes (can arise from phase 4 dropping or
79
- // phase 3 hoisting), repair first-message-must-be-user, validate. We
80
- // deliberately do NOT merge consecutive same-role envelopes here —
81
- // that's the formatter's job.
96
+ // phase 3 hoisting). We deliberately do NOT merge consecutive
97
+ // same-role envelopes here — that's the formatter's job.
98
+ //
99
+ // The synthetic-bearing envelope (held by `pendingCacheSuppressionRef`)
100
+ // cannot be dropped here — phase 5 unshifts its synthetic block onto
101
+ // that envelope's content, so it's guaranteed non-empty.
82
102
  // ---------------------------------------------------------------------
83
103
  envelopes = envelopes.filter((e) => e.content.length > 0);
84
- // First-message-must-be-user repair: only repair the case where the
85
- // original input's first message WAS user, but re-roling moved blocks
86
- // to a leading assistant envelope (e.g. misplaced thinking block).
87
- // If the producer genuinely shipped an assistant-first conversation,
88
- // that's a real bug and validate() will throw.
89
- const originalFirstRole = input.length > 0 ? input[0].role : 'user';
90
- if (envelopes.length > 0 &&
91
- envelopes[0].role === 'assistant' &&
92
- originalFirstRole === 'user') {
104
+ // ---------------------------------------------------------------------
105
+ // Phase 7: ensure first envelope is user-role.
106
+ //
107
+ // Anthropic requires `messages[0].role === 'user'`. The leading
108
+ // envelope can become assistant for two distinct reasons:
109
+ //
110
+ // (a) Re-roling artifact — a strict-role block (thinking, tool_use)
111
+ // lived under a user-role input message and phase 1+2 moved it
112
+ // to a new leading assistant envelope. `originalFirstRole`
113
+ // is `'user'`.
114
+ //
115
+ // (b) Producer bug — a context strategy genuinely selected an
116
+ // assistant message as the first message of its compiled view
117
+ // (the 2026-05-26 reviewer postmortem: PassthroughStrategy
118
+ // `selectFromEnd` cut on an assistant turn). `originalFirstRole`
119
+ // is `'assistant'`.
120
+ //
121
+ // Both cases get the same repair (prepend a `[continuing]` user
122
+ // envelope) because deletion would lose content in case (a) — the
123
+ // re-roled blocks are real conversation content the producer
124
+ // expected to ship. The synthetic costs a leading cache miss
125
+ // (deterministic literal, so idempotent across identical inputs)
126
+ // but preserves API correctness and producer simplicity. We emit
127
+ // a warn-level event so telemetry can distinguish the causes and
128
+ // alert on (b) without coupling control flow to attribution.
129
+ //
130
+ // Idempotency: the synthetic content is a fixed literal. Running
131
+ // normalize twice on the same input produces identical output the
132
+ // second time (envelope[0] is user, gate doesn't fire).
133
+ // ---------------------------------------------------------------------
134
+ if (envelopes.length > 0 && envelopes[0].role === 'assistant') {
135
+ // `input` is guaranteed non-empty here: rebuildEnvelopes only
136
+ // produces envelopes when iterating input messages, so a non-empty
137
+ // envelopes implies a non-empty input.
138
+ const originalFirstRole = input[0].role;
139
+ const leadingBlockTypes = envelopes[0].content.map((b) => b.type);
93
140
  envelopes.unshift({ role: 'user', content: [{ type: 'text', text: '[continuing]' }] });
141
+ onEvent({ kind: 'leading_user_synthesized', originalFirstRole, leadingBlockTypes });
142
+ }
143
+ // ---------------------------------------------------------------------
144
+ // Deferred phase 5.5 telemetry: emit `cache_suppressed_for_synthetic`
145
+ // now that index-mutating phases (6, 7) have settled. The envelope
146
+ // reference pinned in phase 5.5 survives both — phase 6 can't drop it
147
+ // (the synthetic block keeps it non-empty), and phase 7 either leaves
148
+ // it in place or shifts it by +1 via unshift.
149
+ // ---------------------------------------------------------------------
150
+ if (pendingCacheSuppressionRef !== null) {
151
+ const envelopeIndex = envelopes.indexOf(pendingCacheSuppressionRef);
152
+ // Assertion: indexOf must succeed. Phases 6 and 7 only filter/prepend;
153
+ // neither can remove an envelope holding a synthetic block.
154
+ if (envelopeIndex < 0) {
155
+ throw new MembraneNormalizerError(`Phase 5.5 envelope reference vanished between phase 6 and phase 7 — ` +
156
+ `internal bug: synthetic-bearing envelope should be reachable after both phases.`, input.map(cloneMsg), envelopes.map(toProviderMessage));
157
+ }
158
+ onEvent({ kind: 'cache_suppressed_for_synthetic', envelopeIndex });
94
159
  }
95
- // Validate. When `ready === false` we intentionally have unmatched
96
- // tool_uses but ONLY the ones in `pending` are allowed to remain
97
- // unsynthesized. Any other gap is a bug in phase 5 and must throw.
160
+ // ---------------------------------------------------------------------
161
+ // Phase 8: validate. When `ready === false` we intentionally have
162
+ // unmatched tool_uses but ONLY the ones in `pending` are allowed to
163
+ // remain unsynthesized. Any other gap is a bug in phase 5 and must
164
+ // throw. The first-message-must-be-user branch should be unreachable
165
+ // after phase 7; it remains as defense-in-depth against a future
166
+ // phase introducing a leading assistant envelope without firing
167
+ // phase 7.
168
+ // ---------------------------------------------------------------------
98
169
  validate(envelopes, input, pending);
99
170
  return { messages: envelopes.map(toProviderMessage), ready };
100
171
  }
@@ -355,7 +426,7 @@ function resolveOrphans(envelopes, pending, onEvent) {
355
426
  }
356
427
  return { envelopes, ready, firstSyntheticEnvelope };
357
428
  }
358
- function suppressCacheControlFrom(envelopes, startIndex, onEvent) {
429
+ function suppressCacheControlFrom(envelopes, startIndex) {
359
430
  // Strip cache_control from blocks at-or-after startIndex. We must NOT
360
431
  // mutate the caller's input blocks (envelopes share references with
361
432
  // the input via rebuildEnvelopes), so clone-on-write: replace any
@@ -363,6 +434,10 @@ function suppressCacheControlFrom(envelopes, startIndex, onEvent) {
363
434
  // The envelope's content array is replaced wholesale via .map; this
364
435
  // is the only place in the normalizer that creates new block objects
365
436
  // out of existing ones (synthetics aside).
437
+ //
438
+ // Returns whether any block was actually suppressed, so the caller
439
+ // can decide whether to emit telemetry. Emission is deferred until
440
+ // after phases 6 and 7 settle the final envelope ordering.
366
441
  let suppressed = false;
367
442
  for (let i = startIndex; i < envelopes.length; i++) {
368
443
  const env = envelopes[i];
@@ -374,9 +449,7 @@ function suppressCacheControlFrom(envelopes, startIndex, onEvent) {
374
449
  return rest;
375
450
  });
376
451
  }
377
- if (suppressed) {
378
- onEvent({ kind: 'cache_suppressed_for_synthetic', envelopeIndex: startIndex });
379
- }
452
+ return suppressed;
380
453
  }
381
454
  function validate(envelopes, input, pending) {
382
455
  // Empty input → empty output is fine.
@@ -1 +1 @@
1
- {"version":3,"file":"normalize-tool-pairs.js","sourceRoot":"","sources":["../../src/formatters/normalize-tool-pairs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"normalize-tool-pairs.js","sourceRoot":"","sources":["../../src/formatters/normalize-tool-pairs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AA4CH,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAG9B;IACA;IAHlB,YACE,OAAe,EACC,KAA0C,EAC1C,MAA2C;QAE3D,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,UAAK,GAAL,KAAK,CAAqC;QAC1C,WAAM,GAAN,MAAM,CAAqC;QAG3D,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAED,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAA0C,EAC1C,UAA4B,EAAE;IAE9B,MAAM,OAAO,GAAG,OAAO,CAAC,kBAAkB,IAAI,IAAI,GAAG,EAAU,CAAC;IAChE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;IAExC,wEAAwE;IACxE,uEAAuE;IACvE,wEAAwE;IACxE,IAAI,SAAS,GAAG,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAEjD,wEAAwE;IACxE,sEAAsE;IACtE,wEAAwE;IACxE,SAAS,GAAG,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAErD,wEAAwE;IACxE,sEAAsE;IACtE,wEAAwE;IACxE,SAAS,GAAG,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAEjD,wEAAwE;IACxE,2BAA2B;IAC3B,wEAAwE;IACxE,MAAM,SAAS,GAAG,cAAc,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9D,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;IAChC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;IAE9B,wEAAwE;IACxE,qEAAqE;IACrE,kEAAkE;IAClE,wCAAwC;IACxC,EAAE;IACF,qEAAqE;IACrE,iEAAiE;IACjE,qEAAqE;IACrE,oEAAoE;IACpE,iEAAiE;IACjE,mEAAmE;IACnE,mEAAmE;IACnE,iEAAiE;IACjE,uBAAuB;IACvB,wEAAwE;IACxE,IAAI,0BAA0B,GAAoB,IAAI,CAAC;IACvD,IAAI,SAAS,CAAC,sBAAsB,KAAK,IAAI,EAAE,CAAC;QAC9C,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC,sBAAsB,CAAE,CAAC;QACzD,MAAM,UAAU,GAAG,wBAAwB,CAAC,SAAS,EAAE,SAAS,CAAC,sBAAsB,CAAC,CAAC;QACzF,IAAI,UAAU,EAAE,CAAC;YACf,0BAA0B,GAAG,GAAG,CAAC;QACnC,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,oEAAoE;IACpE,8DAA8D;IAC9D,yDAAyD;IACzD,EAAE;IACF,wEAAwE;IACxE,qEAAqE;IACrE,yDAAyD;IACzD,wEAAwE;IACxE,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE1D,wEAAwE;IACxE,+CAA+C;IAC/C,EAAE;IACF,gEAAgE;IAChE,0DAA0D;IAC1D,EAAE;IACF,sEAAsE;IACtE,qEAAqE;IACrE,iEAAiE;IACjE,qBAAqB;IACrB,EAAE;IACF,gEAAgE;IAChE,oEAAoE;IACpE,iEAAiE;IACjE,uEAAuE;IACvE,0BAA0B;IAC1B,EAAE;IACF,gEAAgE;IAChE,kEAAkE;IAClE,6DAA6D;IAC7D,6DAA6D;IAC7D,iEAAiE;IACjE,iEAAiE;IACjE,iEAAiE;IACjE,6DAA6D;IAC7D,EAAE;IACF,iEAAiE;IACjE,kEAAkE;IAClE,wDAAwD;IACxD,wEAAwE;IACxE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAE,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC/D,8DAA8D;QAC9D,mEAAmE;QACnE,uCAAuC;QACvC,MAAM,iBAAiB,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC;QACzC,MAAM,iBAAiB,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACnE,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC;QACvF,OAAO,CAAC,EAAE,IAAI,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,CAAC,CAAC;IACtF,CAAC;IAED,wEAAwE;IACxE,sEAAsE;IACtE,mEAAmE;IACnE,sEAAsE;IACtE,sEAAsE;IACtE,8CAA8C;IAC9C,wEAAwE;IACxE,IAAI,0BAA0B,KAAK,IAAI,EAAE,CAAC;QACxC,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;QACpE,uEAAuE;QACvE,4DAA4D;QAC5D,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,uBAAuB,CAC/B,sEAAsE;gBACpE,iFAAiF,EACnF,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EACnB,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CACjC,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,EAAE,IAAI,EAAE,gCAAgC,EAAE,aAAa,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,wEAAwE;IACxE,kEAAkE;IAClE,sEAAsE;IACtE,mEAAmE;IACnE,qEAAqE;IACrE,iEAAiE;IACjE,gEAAgE;IAChE,WAAW;IACX,wEAAwE;IACxE,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAEpC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,CAAC;AAC/D,CAAC;AAaD;;;;;;;GAOG;AACH,SAAS,cAAc,CAAC,KAAoB;IAC1C,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,UAAU,CAAC;QAChB,KAAK,UAAU,CAAC;QAChB,KAAK,mBAAmB;YACtB,OAAO,WAAW,CAAC;QACrB,KAAK,aAAa;YAChB,OAAO,MAAM,CAAC;QAChB;YACE,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBACxE,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC;YACD,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;AACvC,SAAS,qBAAqB,CAAC,SAAiB;IAC9C,IAAI,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC;QAAE,OAAO;IACxC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC5B,sCAAsC;IACtC,OAAO,CAAC,IAAI,CACV,mEAAmE,SAAS,MAAM;QAChF,kFAAkF;QAClF,sDAAsD,CACzD,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CACvB,KAA0C,EAC1C,OAAoC;IAEpC,MAAM,GAAG,GAAe,EAAE,CAAC;IAC3B,IAAI,OAAO,GAAoB,IAAI,CAAC;IAEpC,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,mEAAmE;YACnE,+DAA+D;YAC/D,iBAAiB;YACjB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACtB,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBAC9C,IAAI,OAAO;oBAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC/B,OAAO,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;YAClC,CAAC;YACD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;YACxE,SAAS;QACX,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,OAA0B,EAAE,CAAC;YACnD,MAAM,GAAG,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YAClC,MAAM,UAAU,GAAyB,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;YAE5E,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;gBAC1C,OAAO,CAAC;oBACN,IAAI,EAAE,gBAAgB;oBACtB,SAAS,EAAE,KAAK,CAAC,IAAI;oBACrB,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,EAAE,EAAE,GAAG;iBACR,CAAC,CAAC;YACL,CAAC;YAED,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACpD,IAAI,OAAO;oBAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC/B,OAAO,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;YAC9C,CAAC;YACD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,IAAI,OAAO;QAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,oBAAoB,CAC3B,SAAqB,EACrB,OAAoC;IAEpC,sEAAsE;IACtE,gEAAgE;IAChE,mEAAmE;IACnE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC;QAC1B,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW;YAAE,SAAS;QACvC,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAElC,uEAAuE;QACvE,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;QACpB,IAAI,OAAO,IAAI,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,OAAO,CAAE,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACvE,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAE,CAAC;QACpC,MAAM,UAAU,GAAG,IAAI,GAAG,CACxB,OAAO,CAAC,OAAO;aACZ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC;aACvC,GAAG,CAAC,YAAY,CAAC;aACjB,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,CACxD,CAAC;QAEF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,SAAS;YAEpC,kEAAkE;YAClE,MAAM,KAAK,GAAG,yBAAyB,CAAC,SAAS,EAAE,OAAO,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;YACvE,IAAI,KAAK,EAAE,CAAC;gBACV,2DAA2D;gBAC3D,gEAAgE;gBAChE,mBAAmB;gBACnB,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACrC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACtB,OAAO,CAAC;oBACN,IAAI,EAAE,qBAAqB;oBAC3B,SAAS,EAAE,KAAK;oBAChB,YAAY,EAAE,KAAK,CAAC,YAAY;oBAChC,UAAU,EAAE,OAAO;iBACpB,CAAC,CAAC;YACL,CAAC;YACD,+DAA+D;QACjE,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,gBAAgB,CACvB,SAAqB,EACrB,OAAoC;IAEpC,2DAA2D;IAC3D,mEAAmE;IACnE,iEAAiE;IACjE,oEAAoE;IACpE,qEAAqE;IACrE,sEAAsE;IACtE,iEAAiE;IACjE,kEAAkE;IAClE,kEAAkE;IAClE,qEAAqE;IACrE,mEAAmE;IACnE,8BAA8B;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC;QAC1B,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW;YAAE,SAAS;QACvC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/C,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC;YAAE,SAAS;QAChC,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;YAAE,SAAS;QAE5C,MAAM,QAAQ,GAAoB,EAAE,CAAC;QACrC,MAAM,WAAW,GAAoB,EAAE,CAAC;QACxC,MAAM,IAAI,GAAoB,EAAE,CAAC;QAEjC,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC;YAC9C,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5D,MAAM,UAAU,GAAG,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEpF,IAAI,UAAU,EAAE,CAAC;gBACf,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrB,YAAY,GAAG,IAAI,CAAC;YACtB,CAAC;iBAAM,IAAI,CAAC,YAAY,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACtC,0DAA0D;gBAC1D,0DAA0D;gBAC1D,2BAA2B;gBAC3B,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAEvC,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;YAChC,OAAO,CAAC;gBACN,IAAI,EAAE,qBAAqB;gBAC3B,SAAS,EAAE,KAAK,CAAC,IAAI;gBACrB,YAAY,EAAE,CAAC,GAAG,CAAC;aACpB,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAQD,SAAS,cAAc,CACrB,SAAqB,EACrB,OAA4B,EAC5B,OAAoC;IAEpC,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,IAAI,sBAAsB,GAAkB,IAAI,CAAC;IAEjD,oEAAoE;IACpE,gDAAgD;IAChD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAChC,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC9B,MAAM,EAAE,GAAI,KAAyB,CAAC,EAAE,CAAC;gBACzC,IAAI,OAAO,EAAE,KAAK,QAAQ;oBAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;IACH,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM;YAAE,SAAS;QAClC,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACtC,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa;gBAAE,OAAO,KAAK,CAAC;YAC/C,MAAM,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACjD,MAAM,KAAK,GAAI,KAA+B,CAAC,OAAO,CAAC;gBACvD,MAAM,SAAS,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzD,OAAO,CAAC,EAAE,IAAI,EAAE,8BAA8B,EAAE,SAAS,EAAE,EAAE,IAAI,WAAW,EAAE,CAAC,CAAC;gBAChF,OAAO;oBACL,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,2BAA2B,EAAE,IAAI,WAAW,MAAM,SAAS,EAAE;iBACpE,CAAC;YACJ,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAED,qEAAqE;IACrE,qEAAqE;IACrE,kDAAkD;IAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC;QAC1B,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW;YAAE,SAAS;QACvC,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAElC,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;QACpB,IAAI,OAAO,IAAI,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,OAAO,CAAE,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACvE,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAE,CAAC;QACpC,mEAAmE;QACnE,iEAAiE;QACjE,mEAAmE;QACnE,mEAAmE;QACnE,2BAA2B;QAC3B,MAAM,UAAU,GACd,OAAO,GAAG,CAAC,IAAI,SAAS,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;QAClE,MAAM,UAAU,GAAG,IAAI,GAAG,CACxB,OAAO,CAAC,OAAO;aACZ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC;aACvC,GAAG,CAAC,YAAY,CAAC;aACjB,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,CACxD,CAAC;QAEF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,SAAS;YACpC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvB,KAAK,GAAG,KAAK,CAAC;gBACd,OAAO,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;gBACzD,SAAS;YACX,CAAC;YACD,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACzC,uDAAuD;YACvD,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC/B,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACtB,IAAI,sBAAsB,KAAK,IAAI;gBAAE,sBAAsB,GAAG,OAAO,CAAC;YACtE,OAAO,CAAC;gBACN,IAAI,EAAE,0BAA0B;gBAChC,SAAS,EAAE,KAAK;gBAChB,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY;aAC/C,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,wBAAwB,CAC/B,SAAqB,EACrB,UAAkB;IAElB,sEAAsE;IACtE,oEAAoE;IACpE,kEAAkE;IAClE,kEAAkE;IAClE,oEAAoE;IACpE,qEAAqE;IACrE,2CAA2C;IAC3C,EAAE;IACF,mEAAmE;IACnE,mEAAmE;IACnE,2DAA2D;IAC3D,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnD,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC;QAC1B,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACtC,IAAI,CAAC,CAAC,eAAe,IAAI,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC9C,UAAU,GAAG,IAAI,CAAC;YAClB,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,KAEzC,CAAC;YACF,OAAO,IAAqB,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,QAAQ,CACf,SAAqB,EACrB,KAA0C,EAC1C,OAA4B;IAE5B,sCAAsC;IACtC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEnC,gEAAgE;IAChE,gEAAgE;IAChE,IAAI,SAAS,CAAC,CAAC,CAAE,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAClC,MAAM,IAAI,uBAAuB,CAC/B,6CAA6C,SAAS,CAAC,CAAC,CAAE,CAAC,IAAI,KAAK;YAClE,mEAAmE,EACrE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EACnB,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CACjC,CAAC;IACJ,CAAC;IAED,+DAA+D;IAC/D,kEAAkE;IAClE,mEAAmE;IACnE,iEAAiE;IACjE,8BAA8B;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC;QAC1B,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW;YAAE,SAAS;QACvC,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAClC,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9B,MAAM,UAAU,GAAG,IAAI,GAAG,CACxB,IAAI,EAAE,IAAI,KAAK,MAAM;YACnB,CAAC,CAAC,IAAI,CAAC,OAAO;iBACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC;iBACvC,GAAG,CAAC,YAAY,CAAC;iBACjB,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC;YACzD,CAAC,CAAC,EAAE,CACP,CAAC;QACF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,SAAS;YACpC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,SAAS,CAAC,yBAAyB;YAC3D,MAAM,IAAI,uBAAuB,CAC/B,gBAAgB,KAAK,iBAAiB,CAAC,4CAA4C,CAAC,GAAG,CAAC,IAAI;gBAC1F,2FAA2F;gBAC3F,4EAA4E,EAC9E,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EACnB,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CACjC,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E;;;;;;;GAOG;AACH,SAAS,YAAY,CAAC,KAAoB;IACxC,MAAM,CAAC,GAAG,KAAuD,CAAC;IAClE,IAAI,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC,WAAW,CAAC;IAC5D,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC,SAAS,CAAC;IACxD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAa;IACtC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAChC,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC9B,MAAM,EAAE,GAAI,KAAyB,CAAC,EAAE,CAAC;YACzC,IAAI,OAAO,EAAE,KAAK,QAAQ;gBAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,yBAAyB,CAChC,SAAqB,EACrB,OAAe,EACf,KAAa;IAEb,KAAK,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChD,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC;QAC1B,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM;YAAE,SAAS;QAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC;YAC9B,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa;gBAAE,SAAS;YAC3C,IAAI,YAAY,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;gBAClC,wDAAwD;gBACxD,4DAA4D;gBAC5D,6DAA6D;gBAC7D,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACzB,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,mBAAmB,CAAC,SAAiB;IAC5C,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,SAAS;QACtB,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,KAAK;KAChB,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAa;IACtC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;AAClD,CAAC;AAED,SAAS,QAAQ,CAAC,GAAyB;IACzC,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO;KACrE,CAAC;AACJ,CAAC;AAED,SAAS,IAAI;IACX,yBAAyB;AAC3B,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAA6C;IAE7C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAErC,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,IAAI,OAAO,GAAyB,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAE,EAAE,CAAC;IAExD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;YAC/B,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC5F,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAChF,OAAO,GAAG;gBACR,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,OAAO,EAAE,CAAC,GAAG,cAAc,EAAE,GAAG,WAAW,CAAC;aAC7C,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrB,OAAO,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrB,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -98,6 +98,32 @@ export type NormalizeEvent = {
98
98
  } | {
99
99
  kind: 'cache_suppressed_for_synthetic';
100
100
  envelopeIndex: number;
101
+ } | {
102
+ /**
103
+ * Fires when the first envelope after re-roling is assistant and a
104
+ * synthetic `[continuing]` user envelope had to be prepended to
105
+ * satisfy Anthropic's `messages[0].role === 'user'` requirement.
106
+ *
107
+ * `originalFirstRole` distinguishes the two causes a consumer might
108
+ * want to alert on separately:
109
+ * - `'user'` → re-roling artifact (a strict-role block lived
110
+ * under a user-role message and was moved to a
111
+ * new assistant envelope). Usually benign.
112
+ * - `'assistant'`→ producer shipped an assistant-first messages
113
+ * list. Real producer bug worth investigating.
114
+ *
115
+ * (Empty input never reaches this event: `rebuildEnvelopes([])`
116
+ * returns `[]`, and the phase-7 gate requires a non-empty envelope
117
+ * list. So `input[0]` is always defined when this fires.)
118
+ *
119
+ * `leadingBlockTypes` is the block-type list of the now-second
120
+ * envelope (i.e. what came right after the synthesized user turn),
121
+ * useful for classifying re-roling causes (e.g. `['thinking']`
122
+ * vs. `['text', 'tool_use']`).
123
+ */
124
+ kind: 'leading_user_synthesized';
125
+ originalFirstRole: 'user' | 'assistant';
126
+ leadingBlockTypes: string[];
101
127
  };
102
128
  export interface BuildResult {
103
129
  /** Messages in provider format */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/formatters/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/formatters/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@animalabs/membrane",
3
- "version": "0.5.54",
3
+ "version": "0.5.55",
4
4
  "description": "LLM middleware - a selective boundary that transforms what passes through",
5
5
  "repository": {
6
6
  "type": "git",
@@ -16,11 +16,13 @@
16
16
  * output is shipped, so producer-side bugs cannot leak the same 400 family
17
17
  * (compression-bug 5/6/7/8/9, agent-framework #37, 2026-05-22 miner stall).
18
18
  *
19
- * Algorithm overview (six phases): reclassify blocks by required role,
19
+ * Algorithm overview (eight phases): reclassify blocks by required role,
20
20
  * reflow into role-correct envelopes, hoist matching tool_results across
21
21
  * the assistant→user boundary, evict interlopers wedged between use and
22
22
  * result, synthesize `[pending]` results for trailing orphans (or signal
23
- * not-ready when the id is in the caller-supplied pending set), validate.
23
+ * not-ready when the id is in the caller-supplied pending set), drop
24
+ * empty envelopes, prepend a synthetic `[continuing]` user envelope when
25
+ * the first envelope ended up assistant-role, validate.
24
26
  */
25
27
 
26
28
  import type { ProviderMessage as LooseProviderMessage } from './types.js';
@@ -123,36 +125,108 @@ export function normalizeToolPairs(
123
125
  // Phase 5.5: suppress cache_control on/after any envelope containing
124
126
  // a synthetic block, so cache keys don't get invalidated when the
125
127
  // real result arrives in a later round.
128
+ //
129
+ // The suppression itself happens here (we know which envelope is the
130
+ // first synthetic by its position in the current array), but the
131
+ // `cache_suppressed_for_synthetic` telemetry is deferred until after
132
+ // phase 6 (which can drop empty envelopes before the synthetic) and
133
+ // phase 7 (which can prepend a `[continuing]` envelope, shifting
134
+ // everything by +1). The event's `envelopeIndex` must refer to the
135
+ // final output array so consumers can index back into it reliably.
136
+ // We pin the envelope by reference and recompute the index after
137
+ // those phases settle.
126
138
  // ---------------------------------------------------------------------
139
+ let pendingCacheSuppressionRef: Envelope | null = null;
127
140
  if (orphanRes.firstSyntheticEnvelope !== null) {
128
- suppressCacheControlFrom(envelopes, orphanRes.firstSyntheticEnvelope, onEvent);
141
+ const ref = envelopes[orphanRes.firstSyntheticEnvelope]!;
142
+ const suppressed = suppressCacheControlFrom(envelopes, orphanRes.firstSyntheticEnvelope);
143
+ if (suppressed) {
144
+ pendingCacheSuppressionRef = ref;
145
+ }
129
146
  }
130
147
 
131
148
  // ---------------------------------------------------------------------
132
149
  // Phase 6: drop empty envelopes (can arise from phase 4 dropping or
133
- // phase 3 hoisting), repair first-message-must-be-user, validate. We
134
- // deliberately do NOT merge consecutive same-role envelopes here —
135
- // that's the formatter's job.
150
+ // phase 3 hoisting). We deliberately do NOT merge consecutive
151
+ // same-role envelopes here — that's the formatter's job.
152
+ //
153
+ // The synthetic-bearing envelope (held by `pendingCacheSuppressionRef`)
154
+ // cannot be dropped here — phase 5 unshifts its synthetic block onto
155
+ // that envelope's content, so it's guaranteed non-empty.
136
156
  // ---------------------------------------------------------------------
137
157
  envelopes = envelopes.filter((e) => e.content.length > 0);
138
158
 
139
- // First-message-must-be-user repair: only repair the case where the
140
- // original input's first message WAS user, but re-roling moved blocks
141
- // to a leading assistant envelope (e.g. misplaced thinking block).
142
- // If the producer genuinely shipped an assistant-first conversation,
143
- // that's a real bug and validate() will throw.
144
- const originalFirstRole = input.length > 0 ? input[0]!.role : 'user';
145
- if (
146
- envelopes.length > 0 &&
147
- envelopes[0]!.role === 'assistant' &&
148
- originalFirstRole === 'user'
149
- ) {
159
+ // ---------------------------------------------------------------------
160
+ // Phase 7: ensure first envelope is user-role.
161
+ //
162
+ // Anthropic requires `messages[0].role === 'user'`. The leading
163
+ // envelope can become assistant for two distinct reasons:
164
+ //
165
+ // (a) Re-roling artifact — a strict-role block (thinking, tool_use)
166
+ // lived under a user-role input message and phase 1+2 moved it
167
+ // to a new leading assistant envelope. `originalFirstRole`
168
+ // is `'user'`.
169
+ //
170
+ // (b) Producer bug — a context strategy genuinely selected an
171
+ // assistant message as the first message of its compiled view
172
+ // (the 2026-05-26 reviewer postmortem: PassthroughStrategy
173
+ // `selectFromEnd` cut on an assistant turn). `originalFirstRole`
174
+ // is `'assistant'`.
175
+ //
176
+ // Both cases get the same repair (prepend a `[continuing]` user
177
+ // envelope) because deletion would lose content in case (a) — the
178
+ // re-roled blocks are real conversation content the producer
179
+ // expected to ship. The synthetic costs a leading cache miss
180
+ // (deterministic literal, so idempotent across identical inputs)
181
+ // but preserves API correctness and producer simplicity. We emit
182
+ // a warn-level event so telemetry can distinguish the causes and
183
+ // alert on (b) without coupling control flow to attribution.
184
+ //
185
+ // Idempotency: the synthetic content is a fixed literal. Running
186
+ // normalize twice on the same input produces identical output the
187
+ // second time (envelope[0] is user, gate doesn't fire).
188
+ // ---------------------------------------------------------------------
189
+ if (envelopes.length > 0 && envelopes[0]!.role === 'assistant') {
190
+ // `input` is guaranteed non-empty here: rebuildEnvelopes only
191
+ // produces envelopes when iterating input messages, so a non-empty
192
+ // envelopes implies a non-empty input.
193
+ const originalFirstRole = input[0]!.role;
194
+ const leadingBlockTypes = envelopes[0]!.content.map((b) => b.type);
150
195
  envelopes.unshift({ role: 'user', content: [{ type: 'text', text: '[continuing]' }] });
196
+ onEvent({ kind: 'leading_user_synthesized', originalFirstRole, leadingBlockTypes });
197
+ }
198
+
199
+ // ---------------------------------------------------------------------
200
+ // Deferred phase 5.5 telemetry: emit `cache_suppressed_for_synthetic`
201
+ // now that index-mutating phases (6, 7) have settled. The envelope
202
+ // reference pinned in phase 5.5 survives both — phase 6 can't drop it
203
+ // (the synthetic block keeps it non-empty), and phase 7 either leaves
204
+ // it in place or shifts it by +1 via unshift.
205
+ // ---------------------------------------------------------------------
206
+ if (pendingCacheSuppressionRef !== null) {
207
+ const envelopeIndex = envelopes.indexOf(pendingCacheSuppressionRef);
208
+ // Assertion: indexOf must succeed. Phases 6 and 7 only filter/prepend;
209
+ // neither can remove an envelope holding a synthetic block.
210
+ if (envelopeIndex < 0) {
211
+ throw new MembraneNormalizerError(
212
+ `Phase 5.5 envelope reference vanished between phase 6 and phase 7 — ` +
213
+ `internal bug: synthetic-bearing envelope should be reachable after both phases.`,
214
+ input.map(cloneMsg),
215
+ envelopes.map(toProviderMessage),
216
+ );
217
+ }
218
+ onEvent({ kind: 'cache_suppressed_for_synthetic', envelopeIndex });
151
219
  }
152
220
 
153
- // Validate. When `ready === false` we intentionally have unmatched
154
- // tool_uses but ONLY the ones in `pending` are allowed to remain
155
- // unsynthesized. Any other gap is a bug in phase 5 and must throw.
221
+ // ---------------------------------------------------------------------
222
+ // Phase 8: validate. When `ready === false` we intentionally have
223
+ // unmatched tool_uses but ONLY the ones in `pending` are allowed to
224
+ // remain unsynthesized. Any other gap is a bug in phase 5 and must
225
+ // throw. The first-message-must-be-user branch should be unreachable
226
+ // after phase 7; it remains as defense-in-depth against a future
227
+ // phase introducing a leading assistant envelope without firing
228
+ // phase 7.
229
+ // ---------------------------------------------------------------------
156
230
  validate(envelopes, input, pending);
157
231
 
158
232
  return { messages: envelopes.map(toProviderMessage), ready };
@@ -459,8 +533,7 @@ function resolveOrphans(
459
533
  function suppressCacheControlFrom(
460
534
  envelopes: Envelope[],
461
535
  startIndex: number,
462
- onEvent: (e: NormalizeEvent) => void,
463
- ): void {
536
+ ): boolean {
464
537
  // Strip cache_control from blocks at-or-after startIndex. We must NOT
465
538
  // mutate the caller's input blocks (envelopes share references with
466
539
  // the input via rebuildEnvelopes), so clone-on-write: replace any
@@ -468,6 +541,10 @@ function suppressCacheControlFrom(
468
541
  // The envelope's content array is replaced wholesale via .map; this
469
542
  // is the only place in the normalizer that creates new block objects
470
543
  // out of existing ones (synthetics aside).
544
+ //
545
+ // Returns whether any block was actually suppressed, so the caller
546
+ // can decide whether to emit telemetry. Emission is deferred until
547
+ // after phases 6 and 7 settle the final envelope ordering.
471
548
  let suppressed = false;
472
549
  for (let i = startIndex; i < envelopes.length; i++) {
473
550
  const env = envelopes[i]!;
@@ -480,9 +557,7 @@ function suppressCacheControlFrom(
480
557
  return rest as ProviderBlock;
481
558
  });
482
559
  }
483
- if (suppressed) {
484
- onEvent({ kind: 'cache_suppressed_for_synthetic', envelopeIndex: startIndex });
485
- }
560
+ return suppressed;
486
561
  }
487
562
 
488
563
  function validate(
@@ -111,7 +111,34 @@ export type NormalizeEvent =
111
111
  | { kind: 'synthetic_pending_result'; toolUseId: string; reason: 'trailing' | 'mid_stream' }
112
112
  | { kind: 'orphan_tool_result_textified'; toolUseId: string }
113
113
  | { kind: 'pending_in_flight'; toolUseId: string }
114
- | { kind: 'cache_suppressed_for_synthetic'; envelopeIndex: number };
114
+ | { kind: 'cache_suppressed_for_synthetic'; envelopeIndex: number }
115
+ | {
116
+ /**
117
+ * Fires when the first envelope after re-roling is assistant and a
118
+ * synthetic `[continuing]` user envelope had to be prepended to
119
+ * satisfy Anthropic's `messages[0].role === 'user'` requirement.
120
+ *
121
+ * `originalFirstRole` distinguishes the two causes a consumer might
122
+ * want to alert on separately:
123
+ * - `'user'` → re-roling artifact (a strict-role block lived
124
+ * under a user-role message and was moved to a
125
+ * new assistant envelope). Usually benign.
126
+ * - `'assistant'`→ producer shipped an assistant-first messages
127
+ * list. Real producer bug worth investigating.
128
+ *
129
+ * (Empty input never reaches this event: `rebuildEnvelopes([])`
130
+ * returns `[]`, and the phase-7 gate requires a non-empty envelope
131
+ * list. So `input[0]` is always defined when this fires.)
132
+ *
133
+ * `leadingBlockTypes` is the block-type list of the now-second
134
+ * envelope (i.e. what came right after the synthesized user turn),
135
+ * useful for classifying re-roling causes (e.g. `['thinking']`
136
+ * vs. `['text', 'tool_use']`).
137
+ */
138
+ kind: 'leading_user_synthesized';
139
+ originalFirstRole: 'user' | 'assistant';
140
+ leadingBlockTypes: string[];
141
+ };
115
142
 
116
143
  // ============================================================================
117
144
  // Build Result