@productbrain/cli 0.1.0-beta.7552 → 0.1.0-beta.7557

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.
@@ -18,45 +18,11 @@ const LEVEL_HIERARCHY = {
18
18
  };
19
19
  const VALID_LEVELS = new Set(Object.keys(LEVEL_HIERARCHY));
20
20
  /**
21
- * Maps workspace stage to the maximum allowed HandshakeLevel.
22
- * Stages not listed here apply no cap (fail-open for unknown stages).
23
- * Note: 'beginner' level allows only 'core' items; 'intermediate' allows core + intermediate.
24
- */
25
- export const STAGE_TO_MAX_LEVEL = {
26
- blank: 'beginner',
27
- seed: 'intermediate',
28
- grounded: 'expert',
29
- connected: 'expert',
30
- critical: 'expert',
31
- };
32
- /** Level ordering used to pick the more restrictive of two levels. */
33
- export const LEVEL_ORDER = ['beginner', 'intermediate', 'expert'];
34
- /**
35
- * Pick the more restrictive of two levels.
36
- * If either is undefined, returns the other (or undefined if both are).
37
- */
38
- function capLevel(requested, cap) {
39
- if (!requested && !cap)
40
- return undefined;
41
- if (!requested)
42
- return cap;
43
- if (!cap)
44
- return requested;
45
- const requestedIdx = LEVEL_ORDER.indexOf(requested);
46
- const capIdx = LEVEL_ORDER.indexOf(cap);
47
- return LEVEL_ORDER[Math.min(requestedIdx, capIdx)];
48
- }
49
- /**
50
- * Filter items by graduated level, with optional workspace stage-gating.
51
- * - If requestedLevel is undefined/null AND stage provides no cap: return ALL items (backward compat).
21
+ * Filter items by graduated level.
22
+ * - If requestedLevel is undefined/null: return ALL items (backward compat).
52
23
  * - Items with no `level` field: always included (backward compat).
53
- * - Stage caps the effective level: blank→beginner, seed→intermediate, grounded/connected/critical→expert.
54
- * - If stage is unknown or null: no cap applied (fail-open).
55
- * - The effective level is min(requestedLevel, stageCap) — most restrictive wins.
56
24
  */
57
- export function filterByLevel(items, requestedLevel, stage) {
58
- // Resolve stage cap (fail-open for unknown/undefined stage)
59
- const stageCap = stage ? STAGE_TO_MAX_LEVEL[stage] : undefined;
25
+ export function filterByLevel(items, requestedLevel) {
60
26
  // Resolve requested level as typed enum (validate if provided)
61
27
  let typedRequested;
62
28
  if (requestedLevel) {
@@ -65,16 +31,12 @@ export function filterByLevel(items, requestedLevel, stage) {
65
31
  }
66
32
  typedRequested = requestedLevel;
67
33
  }
68
- // Determine effective level (most restrictive)
69
- const effectiveLevel = capLevel(typedRequested, stageCap);
70
- // No effective level — return all items (backward compat)
71
- if (!effectiveLevel)
34
+ // No requested level — return all items (backward compat)
35
+ if (!typedRequested)
72
36
  return items;
73
- const allowedLevels = LEVEL_HIERARCHY[effectiveLevel];
37
+ const allowedLevels = LEVEL_HIERARCHY[typedRequested];
74
38
  return items.filter((item) => !item.level || allowedLevels.includes(item.level));
75
39
  }
76
- // ── Stage ordering ────────────────────────────────────────────────────
77
- const STAGE_ORDER = ['blank', 'seed', 'grounded', 'connected', 'critical'];
78
40
  /**
79
41
  * Evaluate when_* conditions against the workspace profile and repo context.
80
42
  * Returns { included, reasons }.
@@ -83,7 +45,7 @@ const STAGE_ORDER = ['blank', 'seed', 'grounded', 'connected', 'critical'];
83
45
  * the item is included (preserves current behavior when Chain is unavailable).
84
46
  */
85
47
  export function evaluateConditions(conditions, profile, repoContext) {
86
- const hasProfileConditions = conditions.when_minStage !== undefined || conditions.when_minGovernance !== undefined;
48
+ const hasProfileConditions = conditions.when_minGovernance !== undefined;
87
49
  const hasStackCondition = conditions.when_stack !== undefined;
88
50
  // No when_* keys at all — always include
89
51
  if (!hasProfileConditions && !hasStackCondition) {
@@ -107,18 +69,6 @@ export function evaluateConditions(conditions, profile, repoContext) {
107
69
  reasons.push(`when_stack=${conditions.when_stack} matched`);
108
70
  }
109
71
  }
110
- // when_minStage: profile guaranteed non-null here when this condition is present
111
- if (conditions.when_minStage !== undefined && profile !== null) {
112
- const profileIdx = STAGE_ORDER.indexOf(profile.stage);
113
- const thresholdIdx = STAGE_ORDER.indexOf(conditions.when_minStage);
114
- if (thresholdIdx === -1 || profileIdx === -1 || profileIdx < thresholdIdx) {
115
- included = false;
116
- reasons.push(`when_minStage=${conditions.when_minStage} but workspace stage=${profile.stage}`);
117
- }
118
- else {
119
- reasons.push(`when_minStage=${conditions.when_minStage} satisfied (stage=${profile.stage})`);
120
- }
121
- }
122
72
  // when_minGovernance: profile guaranteed non-null here when this condition is present
123
73
  if (conditions.when_minGovernance !== undefined && profile !== null) {
124
74
  const threshold = parseInt(conditions.when_minGovernance, 10);
@@ -196,12 +146,9 @@ export function readCanonicalSkills(productbrainDir) {
196
146
  const level = fields.get('level');
197
147
  const conditions = {};
198
148
  const whenStack = fields.get('when_stack');
199
- const whenMinStage = fields.get('when_minStage');
200
149
  const whenMinGovernance = fields.get('when_minGovernance');
201
150
  if (whenStack)
202
151
  conditions.when_stack = whenStack;
203
- if (whenMinStage)
204
- conditions.when_minStage = whenMinStage;
205
152
  if (whenMinGovernance)
206
153
  conditions.when_minGovernance = whenMinGovernance;
207
154
  const hasConditions = Object.keys(conditions).length > 0;
@@ -228,12 +175,9 @@ export function readCanonicalRules(productbrainDir) {
228
175
  const level = fields.get('level');
229
176
  const conditions = {};
230
177
  const whenStack = fields.get('when_stack');
231
- const whenMinStage = fields.get('when_minStage');
232
178
  const whenMinGovernance = fields.get('when_minGovernance');
233
179
  if (whenStack)
234
180
  conditions.when_stack = whenStack;
235
- if (whenMinStage)
236
- conditions.when_minStage = whenMinStage;
237
181
  if (whenMinGovernance)
238
182
  conditions.when_minGovernance = whenMinGovernance;
239
183
  const hasConditions = Object.keys(conditions).length > 0;
@@ -265,12 +209,9 @@ export function readPersonalLayer(productbrainDir) {
265
209
  const level = fields.get('level');
266
210
  const conditions = {};
267
211
  const whenStack = fields.get('when_stack');
268
- const whenMinStage = fields.get('when_minStage');
269
212
  const whenMinGovernance = fields.get('when_minGovernance');
270
213
  if (whenStack)
271
214
  conditions.when_stack = whenStack;
272
- if (whenMinStage)
273
- conditions.when_minStage = whenMinStage;
274
215
  if (whenMinGovernance)
275
216
  conditions.when_minGovernance = whenMinGovernance;
276
217
  const hasConditions = Object.keys(conditions).length > 0;
@@ -312,12 +253,9 @@ export function readPersonalSkillsLayer(productbrainDir) {
312
253
  const level = fields.get('level');
313
254
  const conditions = {};
314
255
  const whenStack = fields.get('when_stack');
315
- const whenMinStage = fields.get('when_minStage');
316
256
  const whenMinGovernance = fields.get('when_minGovernance');
317
257
  if (whenStack)
318
258
  conditions.when_stack = whenStack;
319
- if (whenMinStage)
320
- conditions.when_minStage = whenMinStage;
321
259
  if (whenMinGovernance)
322
260
  conditions.when_minGovernance = whenMinGovernance;
323
261
  const hasConditions = Object.keys(conditions).length > 0;
@@ -1 +1 @@
1
- {"version":3,"file":"portable-knowledge.js","sourceRoot":"","sources":["../../src/generators/portable-knowledge.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AA8CvC,uEAAuE;AACvE,MAAM,UAAU,kBAAkB,CAAC,KAAqC,EAAE,MAAkB;IAC1F,IAAI,CAAC,KAAK,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC;AAMD,MAAM,eAAe,GAAqC;IACxD,QAAQ,EAAE,CAAC,MAAM,CAAC;IAClB,YAAY,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC;IACtC,MAAM,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,CAAC;CAC3C,CAAC;AAEF,MAAM,YAAY,GAAG,IAAI,GAAG,CAAS,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;AAEnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAmC;IAChE,KAAK,EAAE,UAAU;IACjB,IAAI,EAAE,cAAc;IACpB,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,QAAQ;IACnB,QAAQ,EAAE,QAAQ;CACnB,CAAC;AAEF,sEAAsE;AACtE,MAAM,CAAC,MAAM,WAAW,GAAqB,CAAC,UAAU,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;AAEpF;;;GAGG;AACH,SAAS,QAAQ,CAAC,SAAqC,EAAE,GAA+B;IACtF,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IACzC,IAAI,CAAC,SAAS;QAAE,OAAO,GAAG,CAAC;IAC3B,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,OAAO,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;AACrD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAU,EACV,cAAuB,EACvB,KAAc;IAEd,4DAA4D;IAC5D,MAAM,QAAQ,GAA+B,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE3F,+DAA+D;IAC/D,IAAI,cAA0C,CAAC;IAC/C,IAAI,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,kBAAkB,cAAc,oBAAoB,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtG,CAAC;QACD,cAAc,GAAG,cAAgC,CAAC;IACpD,CAAC;IAED,+CAA+C;IAC/C,MAAM,cAAc,GAAG,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAE1D,0DAA0D;IAC1D,IAAI,CAAC,cAAc;QAAE,OAAO,KAAK,CAAC;IAElC,MAAM,aAAa,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;IACtD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACnF,CAAC;AAED,yEAAyE;AAEzE,MAAM,WAAW,GAAa,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;AAErF;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,UAA0B,EAC1B,OAAyD,EACzD,WAAwC;IAExC,MAAM,oBAAoB,GAAG,UAAU,CAAC,aAAa,KAAK,SAAS,IAAI,UAAU,CAAC,kBAAkB,KAAK,SAAS,CAAC;IACnH,MAAM,iBAAiB,GAAG,UAAU,CAAC,UAAU,KAAK,SAAS,CAAC;IAE9D,yCAAyC;IACzC,IAAI,CAAC,oBAAoB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAChD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC;IACxD,CAAC;IAED,0EAA0E;IAC1E,IAAI,OAAO,KAAK,IAAI,IAAI,oBAAoB,EAAE,CAAC;QAC7C,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,kCAAkC,CAAC,EAAE,CAAC;IAC3E,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,QAAQ,GAAG,IAAI,CAAC;IAEpB,0DAA0D;IAC1D,IAAI,UAAU,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC;QAChF,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,QAAQ,GAAG,KAAK,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,cAAc,UAAU,CAAC,UAAU,2BAA2B,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,cAAc,UAAU,CAAC,UAAU,UAAU,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,iFAAiF;IACjF,IAAI,UAAU,CAAC,aAAa,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QAC/D,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACtD,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QACnE,IAAI,YAAY,KAAK,CAAC,CAAC,IAAI,UAAU,KAAK,CAAC,CAAC,IAAI,UAAU,GAAG,YAAY,EAAE,CAAC;YAC1E,QAAQ,GAAG,KAAK,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,iBAAiB,UAAU,CAAC,aAAa,wBAAwB,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACjG,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,iBAAiB,UAAU,CAAC,aAAa,qBAAqB,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;QAC/F,CAAC;IACH,CAAC;IAED,sFAAsF;IACtF,IAAI,UAAU,CAAC,kBAAkB,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACpE,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;QAC9D,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,cAAc,GAAG,SAAS,EAAE,CAAC;YAC3D,QAAQ,GAAG,KAAK,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,sBAAsB,UAAU,CAAC,kBAAkB,uBAAuB,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QACnH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,sBAAsB,UAAU,CAAC,kBAAkB,8BAA8B,OAAO,CAAC,cAAc,GAAG,CAAC,CAAC;QAC3H,CAAC;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC;AAQD,0EAA0E;AAE1E,SAAS,gBAAgB,CAAC,GAAW;IACnC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACvE,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAE5E,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAoB,CAAC;IAEhD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,UAAU,GAAkB,IAAI,CAAC;IACrC,IAAI,mBAAmB,GAAG,KAAK,CAAC;IAChC,IAAI,eAAe,GAAG,KAAK,CAAC;IAE5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,0BAA0B;QAC1B,IAAI,eAAe,IAAI,UAAU,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1D,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YAChD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC;YAC5E,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YACnC,SAAS;QACX,CAAC;QAED,sDAAsD;QACtD,IAAI,mBAAmB,IAAI,UAAU,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7D,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YAC9C,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACvE,SAAS;QACX,CAAC;QAED,mCAAmC;QACnC,mBAAmB,GAAG,KAAK,CAAC;QAC5B,eAAe,GAAG,KAAK,CAAC;QAExB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC3C,IAAI,CAAC,EAAE;YAAE,SAAS;QAElB,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACnB,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAEzB,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;YAC9C,+DAA+D;YAC/D,kFAAkF;YAClF,mBAAmB,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC;YAClD,eAAe,GAAG,GAAG,KAAK,EAAE,CAAC;YAC7B,SAAS;QACX,CAAC;QAED,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AACvC,CAAC;AAED,0EAA0E;AAE1E,MAAM,UAAU,mBAAmB,CAAC,eAAuB;IACzD,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IAClD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,CAAC;IAEtC,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,MAAM,MAAM,GAAqB,EAAE,CAAC;IAEpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC3C,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAE5D,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACzD,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACnD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAElC,MAAM,UAAU,GAAmB,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC3C,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACjD,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAC3D,IAAI,SAAS;YAAE,UAAU,CAAC,UAAU,GAAG,SAAS,CAAC;QACjD,IAAI,YAAY;YAAE,UAAU,CAAC,aAAa,GAAG,YAAY,CAAC;QAC1D,IAAI,iBAAiB;YAAE,UAAU,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;QACzE,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAEzD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,IAAI,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IAC1M,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,eAAuB;IACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IAChD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IAErC,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACrE,MAAM,KAAK,GAAoB,EAAE,CAAC;IAElC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC3C,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAE5D,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACzD,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,MAAM,CAAC;QACrD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAElC,MAAM,UAAU,GAAmB,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC3C,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACjD,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAC3D,IAAI,SAAS;YAAE,UAAU,CAAC,UAAU,GAAG,SAAS,CAAC;QACjD,IAAI,YAAY;YAAE,UAAU,CAAC,aAAa,GAAG,YAAY,CAAC;QAC1D,IAAI,iBAAiB;YAAE,UAAU,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;QACzE,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAEzD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,IAAI,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IAChP,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,eAAuB;IACvD,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/D,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAAE,OAAO,EAAE,CAAC;IAE1C,MAAM,KAAK,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAoB,EAAE,CAAC;IAElC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC3C,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAE5D,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACzD,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,MAAM,CAAC;QACrD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAElC,MAAM,UAAU,GAAmB,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC3C,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACjD,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAC3D,IAAI,SAAS;YAAE,UAAU,CAAC,UAAU,GAAG,SAAS,CAAC;QACjD,IAAI,YAAY;YAAE,UAAU,CAAC,aAAa,GAAG,YAAY,CAAC;QAC1D,IAAI,iBAAiB;YAAE,UAAU,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;QACzE,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAEzD,KAAK,CAAC,IAAI,CAAC;YACT,IAAI;YACJ,WAAW;YACX,KAAK;YACL,OAAO,EAAE,OAAO,IAAI,SAAS;YAC7B,SAAS;YACT,IAAI;YACJ,UAAU,EAAE,QAAQ;YACpB,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YAC9C,KAAK,EAAE,KAAK,IAAI,SAAS;YACzB,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;YAClD,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,eAAuB;IAC7D,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACjE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;QAAE,OAAO,EAAE,CAAC;IAE3C,MAAM,KAAK,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3E,MAAM,MAAM,GAAqB,EAAE,CAAC;IAEpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC3C,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAE5D,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACzD,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACnD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAElC,MAAM,UAAU,GAAmB,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC3C,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACjD,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAC3D,IAAI,SAAS;YAAE,UAAU,CAAC,UAAU,GAAG,SAAS,CAAC;QACjD,IAAI,YAAY;YAAE,UAAU,CAAC,aAAa,GAAG,YAAY,CAAC;QAC1D,IAAI,iBAAiB;YAAE,UAAU,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;QACzE,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAEzD,MAAM,CAAC,IAAI,CAAC;YACV,IAAI;YACJ,WAAW;YACX,QAAQ;YACR,IAAI;YACJ,UAAU,EAAE,QAAQ;YACpB,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YAC9C,KAAK,EAAE,KAAK,IAAI,SAAS;YACzB,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;YAClD,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,yEAAyE;AAEzE;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAY,EAAE,MAAkB;IACrE,wEAAwE;IACxE,yEAAyE;IACzE,MAAM,gBAAgB,GAAG,+DAA+D,CAAC;IAEzF,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,WAAmB,EAAE,OAAe,EAAE,EAAE;QACrF,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;YAC3B,kDAAkD;YAClD,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,4CAA4C;QAC5C,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,0EAA0E;AAE1E;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAqB,EAAE,OAAwB;IACjF,uDAAuD;IACvD,MAAM,WAAW,GACf,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QACvB,CAAC,CAAC,4BAA4B,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QAC/E,CAAC,CAAC,EAAE,CAAC;IAET,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;IAEpD,mDAAmD;IACnD,MAAM,QAAQ,GAAG,sBAAsB,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAE9D,oDAAoD;IACpD,MAAM,IAAI,GAAG,QAAQ;SAClB,OAAO,CAAC,mCAAmC,EAAE,sBAAsB,CAAC;SACpE,OAAO,CAAC,oCAAoC,EAAE,4BAA4B,CAAC,CAAC;IAE/E,OAAO;QACD,KAAK,CAAC,IAAI;;IAEd,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;;OAE/B,MAAM,mCAAmC,KAAK,CAAC,IAAI;;EAExD,IAAI,EAAE,CAAC;AACT,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAmB,EAAE,OAAwB;IAC9E,oDAAoD;IACpD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;SACnB,OAAO,CAAC,mCAAmC,EAAE,sBAAsB,CAAC;SACpE,OAAO,CAAC,oCAAoC,EAAE,4BAA4B,CAAC,CAAC;IAE/E,OAAO;eACM,IAAI,CAAC,WAAW;SACtB,IAAI,CAAC,KAAK,IAAI,EAAE;eACV,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS;;OAErC,MAAM,kCAAkC,IAAI,CAAC,IAAI;;EAEtD,IAAI,EAAE,CAAC;AACT,CAAC;AAED,0EAA0E;AAE1E;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAY;IACpD,4EAA4E;IAC5E,0EAA0E;IAC1E,mCAAmC;IACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAE5F,IAAI,MAAM,GAAG,QAAQ;SAClB,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;QAClB,8DAA8D;QAC9D,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC;QAChC,OAAO,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,kEAAkE;IAClE,MAAM,WAAW,GACf,qHAAqH,CAAC;IACxH,MAAM,GAAG,MAAM,CAAC,OAAO,CACrB,oBAAoB,EACpB,SAAS,WAAW,IAAI,CACzB,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,wFAAwF;AACxF,SAAS,yBAAyB,CAAC,IAAY;IAC7C,IAAI,MAAM,GAAG,IAAI,CAAC;IAElB,yFAAyF;IACzF,MAAM,GAAG,MAAM,CAAC,OAAO,CACrB,sQAAsQ,EACtQ,8CAA8C,CAC/C,CAAC;IAEF,+DAA+D;IAC/D,MAAM,GAAG,MAAM,CAAC,OAAO,CACrB,yPAAyP,EACzP,+CAA+C,CAChD,CAAC;IAEF,kDAAkD;IAClD,MAAM,GAAG,MAAM,CAAC,OAAO,CACrB,wIAAwI,EACxI,EAAE,CACH,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAqB,EAAE,OAAwB;IAChF,MAAM,WAAW,GACf,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QACvB,CAAC,CAAC,qBAAqB,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACzE,CAAC,CAAC,EAAE,CAAC;IAET,MAAM,QAAQ,GAAG,sBAAsB,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAE7D,MAAM,YAAY,GAAG,QAAQ;SAC1B,OAAO,CAAC,oCAAoC,EAAE,qBAAqB,CAAC,CAAC;IAExE,MAAM,IAAI,GAAG,OAAO,EAAE,cAAc,KAAK,OAAO;QAC9C,CAAC,CAAC,yBAAyB,CAAC,YAAY,CAAC;QACzC,CAAC,CAAC,YAAY,CAAC;IAEjB,OAAO,QAAQ,MAAM,mCAAmC,KAAK,CAAC,IAAI;;IAEhE,KAAK,CAAC,IAAI;;EAEZ,KAAK,CAAC,WAAW,GAAG,WAAW;;EAE/B,IAAI,EAAE,CAAC;AACT,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAwB;IAC9D,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAC5C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACvC,OAAO,KAAK,KAAK,oBAAoB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,QAAQ,MAAM;;;;;CAKxB,CAAC;IACA,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACzC,MAAM,WAAW,GACf,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YACvB,CAAC,CAAC,aAAa,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACjE,CAAC,CAAC,yBAAyB,CAAC;QAEhC,OAAO,MAAM,KAAK,CAAC,IAAI;;EAEzB,KAAK,CAAC,WAAW;;EAEjB,WAAW;;wBAEW,KAAK,CAAC,IAAI,OAAO,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,OAAO,QAAQ,MAAM;;;;;;;EAOrB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;AACxB,CAAC;AAUD,MAAM,6BAA6B,GAAG;IACpC,EAAE,OAAO,EAAE,qFAAqF,EAAE,KAAK,EAAE,gBAAgB,EAAE;IAC3H,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,qBAAqB,EAAE;IAC3D,EAAE,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,sBAAsB,EAAE;IAC9D,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,sBAAsB,EAAE;IAC5D,EAAE,OAAO,EAAE,kCAAkC,EAAE,KAAK,EAAE,sBAAsB,EAAE;CAC/E,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAwB;IAC1D,MAAM,QAAQ,GAA6B,EAAE,CAAC;IAC9C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,sBAAsB,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,KAAK,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,6BAA6B,EAAE,CAAC;gBAC/D,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACvB,QAAQ,CAAC,IAAI,CAAC;wBACZ,SAAS,EAAE,KAAK,CAAC,IAAI;wBACrB,OAAO,EAAE,KAAK;wBACd,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;qBAC/B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"portable-knowledge.js","sourceRoot":"","sources":["../../src/generators/portable-knowledge.ts"],"names":[],"mappings":"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"}
@@ -504,62 +504,17 @@ describe('filterByLevel', () => {
504
504
  it('unknown level throws an error', () => {
505
505
  expect(() => filterByLevel(items, 'unknown')).toThrow('Unknown level "unknown"');
506
506
  });
507
- });
508
- describe('filterByLevel — stage-gating (DEC-443)', () => {
509
- const items = [
510
- { name: 'core-item', level: 'core' },
511
- { name: 'intermediate-item', level: 'intermediate' },
512
- { name: 'expert-item', level: 'expert' },
513
- { name: 'no-level-item' },
514
- ];
515
- it('stage=blank caps at core even if requestedLevel=expert', () => {
516
- const result = filterByLevel(items, 'expert', 'blank');
517
- const names = result.map((i) => i.name);
518
- expect(names).toContain('core-item');
519
- expect(names).toContain('no-level-item');
520
- expect(names).not.toContain('intermediate-item');
521
- expect(names).not.toContain('expert-item');
522
- expect(result).toHaveLength(2);
523
- });
524
- it('stage=seed caps at intermediate (core + intermediate + no-level)', () => {
525
- const result = filterByLevel(items, 'expert', 'seed');
526
- const names = result.map((i) => i.name);
527
- expect(names).toContain('core-item');
528
- expect(names).toContain('intermediate-item');
529
- expect(names).toContain('no-level-item');
530
- expect(names).not.toContain('expert-item');
531
- expect(result).toHaveLength(3);
532
- });
533
- it('stage=grounded applies no cap — all items returned', () => {
534
- const result = filterByLevel(items, 'expert', 'grounded');
535
- expect(result).toHaveLength(4);
536
- });
537
- it('stage=connected applies no cap — all items returned', () => {
538
- const result = filterByLevel(items, 'expert', 'connected');
539
- expect(result).toHaveLength(4);
540
- });
541
- it('stage=undefined (no profile) — no cap, backward compat', () => {
542
- const result = filterByLevel(items, 'expert', undefined);
543
- expect(result).toHaveLength(4);
544
- });
545
- it('unknown stage — fail-open, no cap applied', () => {
546
- const result = filterByLevel(items, 'expert', 'unknown-stage');
507
+ it('DEC-1800: filterByLevel with no requested level returns every item, unconditionally (no more stage cap)', () => {
508
+ // Red-then-green (DEC-1800): against the pre-fix code, calling the old 3-arg signature as
509
+ // filterByLevel(items, undefined, 'blank') capped the result to 2 (core + no-level only).
510
+ // The stage parameter is deleted — there is no argument left that can ever cap this call.
511
+ const result = filterByLevel(items, undefined);
547
512
  expect(result).toHaveLength(4);
548
513
  });
549
- it('no requestedLevel + stage=blank still caps at beginner (core + no-level only)', () => {
550
- const result = filterByLevel(items, undefined, 'blank');
551
- const names = result.map((i) => i.name);
552
- expect(names).toContain('core-item');
553
- expect(names).toContain('no-level-item');
554
- expect(names).not.toContain('intermediate-item');
555
- expect(names).not.toContain('expert-item');
556
- expect(result).toHaveLength(2);
557
- });
558
514
  });
559
515
  describe('evaluateConditions', () => {
560
516
  const noProfile = null;
561
517
  const profile = {
562
- stage: 'grounded',
563
518
  totalRelations: 10,
564
519
  };
565
520
  const emptyRepo = { detectedStack: [] };
@@ -587,31 +542,6 @@ describe('evaluateConditions', () => {
587
542
  const result = evaluateConditions({ when_stack: 'SvelteKit' }, profile, { detectedStack: ['sveltekit'] });
588
543
  expect(result.included).toBe(true);
589
544
  });
590
- // 5. when_minStage ordering: blank < seed < grounded < connected < critical
591
- it('when_minStage ordering: stage below threshold → excluded', () => {
592
- const seedProfile = { stage: 'seed', totalRelations: 10 };
593
- const result = evaluateConditions({ when_minStage: 'grounded' }, seedProfile, emptyRepo);
594
- expect(result.included).toBe(false);
595
- expect(result.reasons.some((r) => r.includes('when_minStage=grounded'))).toBe(true);
596
- });
597
- // 6. when_minStage with stage below threshold → excluded
598
- it('when_minStage blank < connected threshold → excluded', () => {
599
- const blankProfile = { stage: 'blank', totalRelations: 0 };
600
- const result = evaluateConditions({ when_minStage: 'connected' }, blankProfile, emptyRepo);
601
- expect(result.included).toBe(false);
602
- });
603
- // 7. when_minStage with stage at threshold → included
604
- it('when_minStage with stage exactly at threshold → included', () => {
605
- const result = evaluateConditions({ when_minStage: 'grounded' }, profile, emptyRepo);
606
- expect(result.included).toBe(true);
607
- expect(result.reasons.some((r) => r.includes('satisfied'))).toBe(true);
608
- });
609
- // Also verify stages above threshold pass
610
- it('when_minStage with stage above threshold → included', () => {
611
- const criticalProfile = { stage: 'critical', totalRelations: 10 };
612
- const result = evaluateConditions({ when_minStage: 'grounded' }, criticalProfile, emptyRepo);
613
- expect(result.included).toBe(true);
614
- });
615
545
  // 8. when_minGovernance with enough relations → included
616
546
  it('when_minGovernance with enough relations → included', () => {
617
547
  const result = evaluateConditions({ when_minGovernance: '5' }, profile, emptyRepo);
@@ -620,26 +550,27 @@ describe('evaluateConditions', () => {
620
550
  });
621
551
  // 9. when_minGovernance with too few → excluded
622
552
  it('when_minGovernance with too few relations → excluded', () => {
623
- const lowRelProfile = { stage: 'grounded', totalRelations: 3 };
553
+ const lowRelProfile = { totalRelations: 3 };
624
554
  const result = evaluateConditions({ when_minGovernance: '5' }, lowRelProfile, emptyRepo);
625
555
  expect(result.included).toBe(false);
626
556
  expect(result.reasons.some((r) => r.includes('when_minGovernance=5'))).toBe(true);
627
557
  });
628
558
  // 10. Multiple conditions: all pass → included
629
559
  it('multiple conditions: all pass → included', () => {
630
- const result = evaluateConditions({ when_stack: 'sveltekit', when_minStage: 'seed', when_minGovernance: '5' }, profile, sveltekitRepo);
560
+ const result = evaluateConditions({ when_stack: 'sveltekit', when_minGovernance: '5' }, profile, sveltekitRepo);
631
561
  expect(result.included).toBe(true);
632
562
  });
633
563
  // 11. Multiple conditions: one fails → excluded (AND semantics)
634
564
  it('multiple conditions: one fails → excluded', () => {
635
- const result = evaluateConditions({ when_stack: 'sveltekit', when_minStage: 'critical' }, profile, // stage=grounded, below critical
636
- sveltekitRepo);
565
+ const result = evaluateConditions({ when_stack: 'nextjs', when_minGovernance: '5' }, profile, // totalRelations=10, satisfies when_minGovernance
566
+ sveltekitRepo // detectedStack has no 'nextjs'
567
+ );
637
568
  expect(result.included).toBe(false);
638
- expect(result.reasons.some((r) => r.includes('when_minStage=critical'))).toBe(true);
569
+ expect(result.reasons.some((r) => r.includes('when_stack=nextjs'))).toBe(true);
639
570
  });
640
- // 12. Null profile + when_minStage → included (fail-open)
641
- it('null profile with when_minStage → fail-open (included)', () => {
642
- const result = evaluateConditions({ when_minStage: 'grounded' }, noProfile, emptyRepo);
571
+ // 12. Null profile + when_minGovernance → included (fail-open)
572
+ it('null profile with when_minGovernance → fail-open (included)', () => {
573
+ const result = evaluateConditions({ when_minGovernance: '5' }, noProfile, emptyRepo);
643
574
  expect(result.included).toBe(true);
644
575
  expect(result.reasons.some((r) => r.includes('fail-open'))).toBe(true);
645
576
  });
@@ -651,136 +582,70 @@ describe('evaluateConditions', () => {
651
582
  expect(noMatchResult.included).toBe(false);
652
583
  });
653
584
  });
654
- describe('BET-170 acceptance criteria — integration', () => {
585
+ describe('BET-170 acceptance criteria — integration (DEC-1800: stage-cap acceptance criteria deleted)', () => {
655
586
  /**
656
- * Mock rules cover all combinations: stack condition, stage condition,
657
- * governance condition, and unconditional at core/intermediate/expert levels.
587
+ * Mock rules cover the surviving combinations: stack condition, governance condition, and
588
+ * unconditional at core/intermediate/expert levels. The stage-condition rule (`feature-flags`,
589
+ * formerly `when_minStage: 'grounded'`) and every stage-keyed acceptance criterion (AC1-AC5,
590
+ * the 0/5/50/500-entry scale test) are deleted with the cap they exercised — no more stage
591
+ * argument exists to feed them.
658
592
  */
659
593
  const mockRules = [
660
594
  { name: 'deployment', level: 'core', conditions: { when_stack: 'sveltekit' } },
661
- { name: 'feature-flags', level: 'intermediate', conditions: { when_minStage: 'grounded' } },
662
595
  { name: 'domain-boundaries', level: 'expert', conditions: { when_minGovernance: '5' } },
663
596
  { name: 'code-integrity', level: 'core' }, // no conditions — always included
664
597
  { name: 'review-gate', level: 'intermediate' }, // no conditions
665
598
  { name: 'orchestrator-mode', level: 'expert' }, // no conditions
666
599
  ];
667
600
  function applyPipeline(rules, profile, repo) {
668
- const profileStage = profile?.stage;
669
- // stage-gated level filter: no requestedLevel (defaults to widest), stage caps it
670
- const levelFiltered = filterByLevel(rules, undefined, profileStage);
601
+ // No stage argument — filterByLevel takes requestedLevel only (DEC-1800).
602
+ const levelFiltered = filterByLevel(rules, undefined);
671
603
  // condition filter
672
604
  return levelFiltered.filter((rule) => {
673
605
  const result = evaluateConditions(rule.conditions ?? {}, profile, repo);
674
606
  return result.included;
675
607
  });
676
608
  }
677
- // AC1: Fresh Python workspace (stage=blank, 0 entries) — only core items with no conditions
678
- it('AC1: stage=blank, python — only core unconditional items', () => {
679
- const profile = { stage: 'blank', totalEntries: 0, totalRelations: 0 };
680
- const repo = { detectedStack: ['python'] };
681
- const result = applyPipeline(mockRules, profile, repo);
682
- const names = result.map((r) => r.name);
683
- // Only code-integrity: core level, no conditions
684
- // deployment: core but when_stack=sveltekit fails (python != sveltekit)
685
- expect(names).toContain('code-integrity');
686
- expect(names).not.toContain('deployment'); // core but sveltekit condition fails
687
- expect(names).not.toContain('feature-flags'); // intermediate — capped by blank stage
688
- expect(names).not.toContain('domain-boundaries'); // expert — capped by blank stage
689
- expect(names).not.toContain('review-gate'); // intermediate — capped by blank stage
690
- expect(names).not.toContain('orchestrator-mode'); // expert — capped by blank stage
691
- expect(result).toHaveLength(1);
692
- });
693
- // AC2: Node/TS workspace (stage=grounded, 30 entries) — stack-matched, all levels
694
- it('AC2: stage=grounded, sveltekit/typescript, 30 entries — all rules included', () => {
695
- const profile = { stage: 'grounded', totalEntries: 30, totalRelations: 15 };
609
+ it('all levels included, unconditional + stack-matched + governance-satisfied rules pass', () => {
610
+ const profile = { totalRelations: 15 };
696
611
  const repo = { detectedStack: ['typescript', 'sveltekit'] };
697
612
  const result = applyPipeline(mockRules, profile, repo);
698
613
  const names = result.map((r) => r.name);
699
- // All conditions pass: sveltekit matches, grounded >= grounded, 15 >= 5
614
+ // No stage cap: every level (core/intermediate/expert) survives filterByLevel.
615
+ // sveltekit matches, 15 >= 5 → every rule's condition passes.
700
616
  expect(names).toContain('deployment');
701
- expect(names).toContain('feature-flags');
702
617
  expect(names).toContain('domain-boundaries');
703
618
  expect(names).toContain('code-integrity');
704
619
  expect(names).toContain('review-gate');
705
620
  expect(names).toContain('orchestrator-mode');
706
- expect(result).toHaveLength(6);
707
- });
708
- // AC3: Mature workspace (stage=connected, 100+ entries) — all rules and skills
709
- it('AC3: stage=connected, 150 entries — all rules projected without filtering', () => {
710
- const profile = { stage: 'connected', totalEntries: 150, totalRelations: 80 };
711
- const repo = { detectedStack: ['typescript', 'sveltekit'] };
712
- const result = applyPipeline(mockRules, profile, repo);
713
- expect(result).toHaveLength(6);
621
+ expect(result).toHaveLength(5);
714
622
  });
715
- // AC4: Unknown stack — general template set, no stack-specific rules
716
- it('AC4: stage=grounded, unknown stack — only non-stack-conditional rules', () => {
717
- const profile = { stage: 'grounded', totalEntries: 30, totalRelations: 15 };
623
+ it('unknown stack — only non-stack-conditional rules pass, still no level cap', () => {
624
+ const profile = { totalRelations: 15 };
718
625
  const repo = { detectedStack: [] };
719
626
  const result = applyPipeline(mockRules, profile, repo);
720
627
  const names = result.map((r) => r.name);
721
- // deployment requires sveltekit stack — excluded
722
- // all others: feature-flags (grounded ok), domain-boundaries (15 >= 5), unconditionals all pass
628
+ // deployment requires sveltekit stack — excluded; all others pass regardless of level.
723
629
  expect(names).not.toContain('deployment');
724
- expect(names).toContain('feature-flags');
725
630
  expect(names).toContain('domain-boundaries');
726
631
  expect(names).toContain('code-integrity');
727
632
  expect(names).toContain('review-gate');
728
633
  expect(names).toContain('orchestrator-mode');
729
- expect(result).toHaveLength(5);
634
+ expect(result).toHaveLength(4);
730
635
  });
731
- // AC5: workspaceReadiness failure (null profile) — fail-open, all rules/skills project
732
- it('AC5: null profile (readiness failure) — fail-open, profile conditions pass', () => {
636
+ it('null profile (readiness failure) — fail-open, profile conditions pass, no level cap', () => {
733
637
  const profile = null;
734
638
  const repo = { detectedStack: ['typescript'] };
735
639
  const result = applyPipeline(mockRules, profile, repo);
736
640
  const names = result.map((r) => r.name);
737
- // Null profile:
738
- // - filterByLevel: no stage cap → all levels pass
739
- // - evaluateConditions: when_minStage + when_minGovernance → fail-open (included)
740
- // - when_stack: still evaluated against repoContext; sveltekit not in [typescript] → excluded
741
- expect(names).not.toContain('deployment'); // when_stack=sveltekit, typescript doesn't match
742
- expect(names).toContain('feature-flags'); // fail-open (profile null)
641
+ // Null profile: when_minGovernance fails open (included); when_stack still evaluated
642
+ // against repoContext — sveltekit not in [typescript] → excluded.
643
+ expect(names).not.toContain('deployment');
743
644
  expect(names).toContain('domain-boundaries'); // fail-open (profile null)
744
645
  expect(names).toContain('code-integrity');
745
646
  expect(names).toContain('review-gate');
746
647
  expect(names).toContain('orchestrator-mode');
747
- expect(result).toHaveLength(5);
748
- });
749
- // Scale test: 0/5/50/500 entries — filtering correctness at different entry counts
750
- it('scale test: filtering correctness at 0/5/50/500 totalEntries', () => {
751
- const repo = { detectedStack: ['sveltekit'] };
752
- // 0 entries: blank stage, low relations
753
- // deployment: core level (passes stage cap), sveltekit matches → included
754
- // code-integrity: core level, no conditions → included
755
- // everything else: capped by blank stage (intermediate/expert excluded)
756
- const result0 = applyPipeline(mockRules, { stage: 'blank', totalEntries: 0, totalRelations: 0 }, repo);
757
- const names0 = result0.map((r) => r.name);
758
- expect(names0).toContain('deployment');
759
- expect(names0).toContain('code-integrity');
760
- expect(names0).not.toContain('feature-flags'); // intermediate — capped
761
- expect(names0).not.toContain('domain-boundaries'); // expert — capped
762
- expect(names0).not.toContain('review-gate'); // intermediate — capped
763
- expect(names0).not.toContain('orchestrator-mode'); // expert — capped
764
- expect(result0).toHaveLength(2);
765
- // 5 entries: seed stage, 2 relations (below governance threshold)
766
- const result5 = applyPipeline(mockRules, { stage: 'seed', totalEntries: 5, totalRelations: 2 }, repo);
767
- const names5 = result5.map((r) => r.name);
768
- // seed caps at intermediate; domain-boundaries (expert) + orchestrator-mode (expert) excluded
769
- // domain-boundaries also fails governance (2 < 5)
770
- // feature-flags: intermediate ok, but when_minStage=grounded fails for seed → excluded
771
- // deployment: core ok, sveltekit matches → included
772
- expect(names5).toContain('deployment');
773
- expect(names5).toContain('code-integrity');
774
- expect(names5).toContain('review-gate');
775
- expect(names5).not.toContain('domain-boundaries');
776
- expect(names5).not.toContain('orchestrator-mode');
777
- expect(names5).not.toContain('feature-flags');
778
- // 50 entries: grounded stage, 20 relations
779
- const result50 = applyPipeline(mockRules, { stage: 'grounded', totalEntries: 50, totalRelations: 20 }, repo);
780
- expect(result50).toHaveLength(6);
781
- // 500 entries: connected stage, 200 relations
782
- const result500 = applyPipeline(mockRules, { stage: 'connected', totalEntries: 500, totalRelations: 200 }, repo);
783
- expect(result500).toHaveLength(6);
648
+ expect(result).toHaveLength(4);
784
649
  });
785
650
  });
786
651
  describe('readCanonicalRules — backward compat with when_* frontmatter', () => {
@@ -802,21 +667,6 @@ when_stack: sveltekit
802
667
  expect(rules).toHaveLength(1);
803
668
  expect(rules[0].conditions?.when_stack).toBe('sveltekit');
804
669
  });
805
- it('parses when_minStage from frontmatter into conditions', () => {
806
- vfs[join(PB_DIR, 'rules', 'flags.md')] = `---
807
- name: flags
808
- description: Feature flags rule
809
- scope: ""
810
- autoApply: false
811
- when_minStage: grounded
812
- ---
813
-
814
- # Flags body
815
- `;
816
- const rules = readCanonicalRules(PB_DIR);
817
- expect(rules).toHaveLength(1);
818
- expect(rules[0].conditions?.when_minStage).toBe('grounded');
819
- });
820
670
  it('parses when_minGovernance from frontmatter into conditions', () => {
821
671
  vfs[join(PB_DIR, 'rules', 'domains.md')] = `---
822
672
  name: domains