@glubean/cli 0.2.5 → 0.3.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 (56) hide show
  1. package/README.md +22 -2
  2. package/dist/commands/contracts.d.ts.map +1 -1
  3. package/dist/commands/contracts.js +28 -4
  4. package/dist/commands/contracts.js.map +1 -1
  5. package/dist/commands/init.d.ts +2 -0
  6. package/dist/commands/init.d.ts.map +1 -1
  7. package/dist/commands/init.js +267 -60
  8. package/dist/commands/init.js.map +1 -1
  9. package/dist/commands/migrate.d.ts +31 -0
  10. package/dist/commands/migrate.d.ts.map +1 -0
  11. package/dist/commands/migrate.js +516 -0
  12. package/dist/commands/migrate.js.map +1 -0
  13. package/dist/commands/redact.d.ts.map +1 -1
  14. package/dist/commands/redact.js +32 -8
  15. package/dist/commands/redact.js.map +1 -1
  16. package/dist/commands/run.d.ts +110 -2
  17. package/dist/commands/run.d.ts.map +1 -1
  18. package/dist/commands/run.js +493 -43
  19. package/dist/commands/run.js.map +1 -1
  20. package/dist/lib/config.d.ts +267 -43
  21. package/dist/lib/config.d.ts.map +1 -1
  22. package/dist/lib/config.js +744 -149
  23. package/dist/lib/config.js.map +1 -1
  24. package/dist/lib/env.d.ts +29 -0
  25. package/dist/lib/env.d.ts.map +1 -0
  26. package/dist/lib/env.js +59 -0
  27. package/dist/lib/env.js.map +1 -0
  28. package/dist/lib/print-plan.d.ts +21 -0
  29. package/dist/lib/print-plan.d.ts.map +1 -0
  30. package/dist/lib/print-plan.js +108 -0
  31. package/dist/lib/print-plan.js.map +1 -0
  32. package/dist/lib/upload.d.ts +36 -1
  33. package/dist/lib/upload.d.ts.map +1 -1
  34. package/dist/lib/upload.js +126 -19
  35. package/dist/lib/upload.js.map +1 -1
  36. package/dist/main.d.ts.map +1 -1
  37. package/dist/main.js +420 -27
  38. package/dist/main.js.map +1 -1
  39. package/package.json +15 -6
  40. package/templates/README.md +7 -13
  41. package/templates/demo/.env.example +7 -0
  42. package/templates/demo/.env.secrets.example +11 -0
  43. package/templates/demo/README.md +60 -0
  44. package/templates/demo/config/api.ts +24 -0
  45. package/templates/demo/gitignore.tpl +13 -0
  46. package/templates/demo/glubean.yaml +48 -0
  47. package/templates/demo/tests/api-flaky/search-flaky.test.ts +28 -0
  48. package/templates/demo/tests/api-stable/get-users.test.ts +30 -0
  49. package/templates/demo/tests/canary/synthetic-50pct-flaky.test.ts +23 -0
  50. package/templates/demo/tests/contracts/stable/users-contract.contract.ts +70 -0
  51. package/templates/demo/tsconfig.json +15 -0
  52. package/templates/AI-INSTRUCTIONS.md +0 -160
  53. package/templates/ci-config/ci.yaml +0 -13
  54. package/templates/ci-config/default.yaml +0 -9
  55. package/templates/ci-config/explore.yaml +0 -5
  56. package/templates/ci-config/staging.yaml +0 -9
package/README.md CHANGED
@@ -21,7 +21,8 @@ glubean init # interactive wizard
21
21
  glubean run # run all tests in testDir
22
22
  glubean run path/to/file.test.ts
23
23
  glubean run --filter checkout --tag smoke
24
- glubean run --ci --upload # CI mode + push results to Cloud
24
+ glubean ci run --upload # CI profile + push results to Cloud
25
+ glubean migrate # preview v0.1.x -> v10 contract changes
25
26
  ```
26
27
 
27
28
  See the full project README at the [repo root](../../README.md) for the broader Glubean story (SDK, MCP, agent workflow).
@@ -56,7 +57,7 @@ glubean run --pick happyPath # specific test.pick example
56
57
  glubean run --fail-fast # stop on first failure
57
58
  glubean run --result-json # write .result.json
58
59
  glubean run --reporter junit # JUnit XML
59
- glubean run --ci # shorthand: --fail-fast + JUnit
60
+ glubean ci run # use the `ci` profile from glubean.yaml
60
61
  glubean run --upload --project <id> # push to Glubean Cloud
61
62
  glubean run --inspect-brk # attach a debugger
62
63
  ```
@@ -85,6 +86,25 @@ glubean scan tests/
85
86
  glubean scan --upload --project <id> # push contract metadata without running
86
87
  ```
87
88
 
89
+ ### `migrate`
90
+
91
+ Preview or apply v0.1.x -> v10 project migrations. The command rewrites safe legacy patterns and reports anything that needs manual review.
92
+
93
+ ```bash
94
+ glubean migrate
95
+ glubean migrate --dir path/to/project
96
+ glubean migrate --apply
97
+ ```
98
+
99
+ Current automatic changes:
100
+
101
+ | Pattern | Migration |
102
+ |---------|-----------|
103
+ | `contract.http("id", spec)` | Adds a scoped `contract.http.with(...)` instance and calls it |
104
+ | `import "@glubean/grpc"` / `import "@glubean/graphql"` | Moves plugin installation into `glubean.setup.ts` |
105
+
106
+ Manual review items are reported for removed case-level `setup` / `teardown`, legacy `definePlugin((runtime) => ...)`, and cases with `needs` that should be wrapped in `defineHttpCase<Needs>(...)`.
107
+
88
108
  ### `validate-metadata`
89
109
 
90
110
  Verify that a previously generated `metadata.json` still matches the local files.
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/commands/contracts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EACV,kBAAkB,EAGnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,kBAAkB,EAA0B,MAAM,yBAAyB,CAAC;AAiB1F,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAqBD,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB,kBAAkB,GAAG,SAAS,CAOhC;AA0ED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAoCvE;AAID,wBAAgB,UAAU,CACxB,SAAS,EAAE,kBAAkB,EAAE,EAC/B,KAAK,GAAE,kBAAkB,EAAO,GAC/B,MAAM,CA+BR;AA2CD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAwBxE;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA2BzE;AAYD,MAAM,WAAW,uBAAuB;IACtC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,gBAAgB,CACpC,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,IAAI,CAAC,CAkMf"}
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/commands/contracts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EACV,kBAAkB,EAGnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,kBAAkB,EAA0B,MAAM,yBAAyB,CAAC;AAiB1F,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAqBD,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB,kBAAkB,GAAG,SAAS,CAOhC;AA2FD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAuCvE;AAID,wBAAgB,UAAU,CACxB,SAAS,EAAE,kBAAkB,EAAE,EAC/B,KAAK,GAAE,kBAAkB,EAAO,GAC/B,MAAM,CAkCR;AA2CD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAwBxE;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA2BzE;AAYD,MAAM,WAAW,uBAAuB;IACtC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,gBAAgB,CACpC,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,IAAI,CAAC,CAqMf"}
@@ -69,25 +69,40 @@ function computeSummary(contracts) {
69
69
  return { total, active: total - deferred - deprecated - gated, deferred, deprecated, gated };
70
70
  }
71
71
  // ── Markdown outline formatter ──────────────────────────────────────────────
72
+ function formatStaticVerifyRule(rule) {
73
+ if (typeof rule === "string")
74
+ return rule;
75
+ const prefix = rule.id ? `${rule.id}: ` : "";
76
+ return `${prefix}${rule.description}`;
77
+ }
72
78
  function formatCase(c) {
73
79
  const desc = c.description ? ` — ${c.description}` : "";
80
+ const projectionNotes = [
81
+ c.given ? `given: ${c.given}` : undefined,
82
+ c.verifyRules && c.verifyRules.length > 0
83
+ ? `verifies: ${c.verifyRules.map(formatStaticVerifyRule).join("; ")}`
84
+ : c.hasVerify
85
+ ? "has verify()"
86
+ : undefined,
87
+ ].filter(Boolean);
88
+ const notes = projectionNotes.length > 0 ? ` *(${projectionNotes.join("; ")})*` : "";
74
89
  // Key off lifecycle first (authoritative), fall back to reason strings
75
90
  const lifecycle = c.lifecycle
76
91
  ?? (c.deprecated ? "deprecated" : c.deferred ? "deferred" : "active");
77
92
  if (lifecycle === "deprecated") {
78
93
  const reason = c.deprecated ?? "deprecated";
79
- return `- ⊘ **${c.key}** — deprecated: ${reason}`;
94
+ return `- ⊘ **${c.key}** — deprecated: ${reason}${notes}`;
80
95
  }
81
96
  if (lifecycle === "deferred") {
82
97
  const reason = c.deferred ?? "deferred";
83
- return `- ⊘ **${c.key}** — deferred: ${reason}`;
98
+ return `- ⊘ **${c.key}** — deferred: ${reason}${notes}`;
84
99
  }
85
100
  if (c.requires === "browser" || c.requires === "out-of-band") {
86
- return `- ⊘ **${c.key}** — requires: ${c.requires}`;
101
+ return `- ⊘ **${c.key}** — requires: ${c.requires}${notes}`;
87
102
  }
88
103
  const severityTag = c.severity === "critical" ? " 🔴" : c.severity === "info" ? " ℹ️" : "";
89
104
  const suffix = c.defaultRun === "opt-in" ? " *(opt-in)*" : "";
90
- return `- **${c.key}**${desc}${suffix}${severityTag}`;
105
+ return `- **${c.key}**${desc}${notes}${suffix}${severityTag}`;
91
106
  }
92
107
  /**
93
108
  * @deprecated CAR-2 back-compat shim. Delegates to the SDK artifact
@@ -128,6 +143,9 @@ export function formatMdOutline(contracts) {
128
143
  requires: cs.requires,
129
144
  deferredReason: cs.deferred,
130
145
  deprecatedReason: cs.deprecated,
146
+ given: cs.given,
147
+ hasVerify: cs.hasVerify,
148
+ verifyRules: cs.verifyRules,
131
149
  };
132
150
  }),
133
151
  }));
@@ -156,6 +174,9 @@ export function formatJson(contracts, flows = []) {
156
174
  deprecated: cas.deprecated,
157
175
  requires: cas.requires,
158
176
  defaultRun: cas.defaultRun,
177
+ given: cas.given,
178
+ hasVerify: cas.hasVerify,
179
+ verifyRules: cas.verifyRules,
159
180
  })),
160
181
  })),
161
182
  })),
@@ -349,6 +370,9 @@ export async function contractsCommand(options = {}) {
349
370
  severity: c.severity,
350
371
  requires: c.requires,
351
372
  defaultRun: c.defaultRun,
373
+ given: c.given,
374
+ hasVerify: c.hasVerify,
375
+ verifyRules: c.verifyRules,
352
376
  hasHeaderSchema: schemas?.response?.headers != null,
353
377
  hasExample: schemas?.response?.examples != null,
354
378
  line: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/commands/contracts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAO/D,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,wBAAwB,EACxB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AActB,MAAM,UAAU,GAAgD;IAC9D;QACE,OAAO,EAAE,gCAAgC;QACzC,OAAO,EAAE,qEAAqE;KAC/E;IACD;QACE,OAAO,EAAE,mBAAmB;QAC5B,OAAO,EAAE,yEAAyE;KACnF;IACD;QACE,OAAO,EAAE,oBAAoB;QAC7B,OAAO,EAAE,oEAAoE;KAC9E;IACD;QACE,OAAO,EAAE,oDAAoD;QAC7D,OAAO,EAAE,4EAA4E;KACtF;CACF,CAAC;AAEF,MAAM,UAAU,eAAe,CAC7B,UAAkB,EAClB,OAAe,EACf,WAAmB;IAEnB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACnC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QACxD,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AASD,SAAS,cAAc,CAAC,SAA+B;IACrD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAgC,CAAC;IACvD,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9D,IAAI;QACJ,SAAS;KACV,CAAC,CAAC,CAAC;AACN,CAAC;AAYD,SAAS,cAAc,CAAC,SAA+B;IACrD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YAC1B,KAAK,EAAE,CAAC;YACR,uEAAuE;YACvE,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS;mBAC1B,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC5E,IAAI,SAAS,KAAK,YAAY;gBAAE,UAAU,EAAE,CAAC;iBACxC,IAAI,SAAS,KAAK,UAAU;gBAAE,QAAQ,EAAE,CAAC;iBACzC,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,GAAG,CAAC,QAAQ,KAAK,aAAa;gBAAE,KAAK,EAAE,CAAC;QACjF,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAG,QAAQ,GAAG,UAAU,GAAG,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AAC/F,CAAC;AAED,+EAA+E;AAE/E,SAAS,UAAU,CAAC,CAAyB;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,uEAAuE;IACvE,MAAM,SAAS,GAAG,CAAC,CAAC,SAAS;WACxB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACxE,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,CAAC,CAAC,UAAU,IAAI,YAAY,CAAC;QAC5C,OAAO,SAAS,CAAC,CAAC,GAAG,oBAAoB,MAAM,EAAE,CAAC;IACpD,CAAC;IACD,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,IAAI,UAAU,CAAC;QACxC,OAAO,SAAS,CAAC,CAAC,GAAG,kBAAkB,MAAM,EAAE,CAAC;IAClD,CAAC;IACD,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;QAC7D,OAAO,SAAS,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAAC;IACtD,CAAC;IACD,MAAM,WAAW,GAAG,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3F,MAAM,MAAM,GAAG,CAAC,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,OAAO,OAAO,CAAC,CAAC,GAAG,KAAK,IAAI,GAAG,MAAM,GAAG,WAAW,EAAE,CAAC;AACxD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,SAA+B;IAC7D,MAAM,KAAK,GAAmB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAClD,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,kEAAkE;QAClE,oEAAoE;QACpE,uDAAuD;QACvD,iEAAiE;QACjE,oDAAoD;QACpD,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YACxB,MAAM,SAAS,GACZ,EAAE,CAAC,SAAwD;gBAC5D,CAAC,EAAE,CAAC,UAAU;oBACZ,CAAC,CAAC,YAAY;oBACd,CAAC,CAAC,EAAE,CAAC,QAAQ;wBACX,CAAC,CAAC,UAAU;wBACZ,CAAC,CAAC,QAAQ,CAAC,CAAC;YAClB,OAAO;gBACL,GAAG,EAAE,EAAE,CAAC,GAAG;gBACX,WAAW,EAAE,EAAE,CAAC,WAAW;gBAC3B,SAAS;gBACT,QAAQ,EACL,EAAE,CAAC,QAAsD;oBAC1D,SAAS;gBACX,UAAU,EAAE,EAAE,CAAC,UAAyD;gBACxE,QAAQ,EAAE,EAAE,CAAC,QAAqD;gBAClE,cAAc,EAAE,EAAE,CAAC,QAAQ;gBAC3B,gBAAgB,EAAE,EAAE,CAAC,UAAU;aAChC,CAAC;QACJ,CAAC,CAAC;KACH,CAAC,CAAC,CAAC;IACJ,OAAO,wBAAwB,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,+EAA+E;AAE/E,MAAM,UAAU,UAAU,CACxB,SAA+B,EAC/B,QAA8B,EAAE;IAEhC,MAAM,QAAQ,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,MAAM,GAA4B;QACtC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7B,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACjC,EAAE,EAAE,CAAC,CAAC,UAAU;gBAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBAC3B,GAAG,EAAE,GAAG,CAAC,GAAG;oBACZ,WAAW,EAAE,GAAG,CAAC,WAAW;oBAC5B,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;oBAClG,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,SAAS;oBACnC,MAAM,EAAE,GAAG,CAAC,YAAY;oBACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,UAAU,EAAE,GAAG,CAAC,UAAU;oBAC1B,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,UAAU,EAAE,GAAG,CAAC,UAAU;iBAC3B,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ,CAAC,CAAC;QACH,OAAO;KACR,CAAC;IACF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AAChD,CAAC;AAED,+EAA+E;AAE/E,SAAS,kBAAkB,CAAC,CAAyB;IACnD,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC7B,OAAO,GAAG,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC1C,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,GAAG,CAAC,CAAC,MAAM,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IAC3D,CAAC;IACD,OAAO,GAAG,CAAC,CAAC,MAAM,mBAAmB,CAAC;AACxC,CAAC;AAED,SAAS,cAAc,CAAC,IAAwB,EAAE,KAAa;IAC7D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC7E,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC9E,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnF,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,gBAAgB;IAChB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAChD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,MAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,GAAG,MAAM,EAAE,CAAC,CAAC;IACnF,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC3B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,UAAU,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC5B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO;YAAE,KAAK,CAAC,IAAI,CAAC,UAAU,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAA2B;IAC9D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAClC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QAC5B,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACrC,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,KAAK,MAAM,IAAI,IAAI,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACjD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,CAAqB;IAC9C,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,YAAY,EAAE,CAAC,CAAC,YAAY;QAC5B,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACvB,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO;oBACL,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,MAAM,EAAE,CAAC,CAAC,MAAM;iBACjB,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC;QACJ,CAAC,CAAC;KACH,CAAC;AACJ,CAAC;AAED,+EAA+E;AAE/E,MAAM,MAAM,GAAG;IACb,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,SAAS;IACf,GAAG,EAAE,SAAS;IACd,MAAM,EAAE,UAAU;IAClB,IAAI,EAAE,UAAU;CACjB,CAAC;AAkBF,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,UAAmC,EAAE;IAErC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IAC/D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,YAAY,CAAC;IAE9C,kEAAkE;IAClE,yEAAyE;IACzE,wEAAwE;IACxE,8DAA8D;IAC9D,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;IAErB,qEAAqE;IACrE,sEAAsE;IACtE,gEAAgE;IAChE,IAAI,MAAM,KAAK,cAAc,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,iBAAiB,EAAE,CAAC;QAClC,MAAM,KAAK,GAAa,CAAC,4BAA4B,CAAC,CAAC;QACvD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChF,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChF,IAAI,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACzF,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,2CAA2C;QAC3C,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;QAC7E,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;QACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,2BAA2B,CAAC,GAAG,CAAC,CAAC;IACtD,iEAAiE;IACjE,+DAA+D;IAC/D,+DAA+D;IAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW;SAC7B,MAAM,CAAC,CAAC,CAAC,EAA4C,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;SAC1E,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEtB,wBAAwB;IACxB,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAChC,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAC7E,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxD,OAAO,CAAC,KAAK,CACX,GAAG,MAAM,CAAC,MAAM,+BAA+B,MAAM,CAAC,KAAK,GAAG;YAC9D,6FAA6F,CAC9F,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,iEAAiE;IACjE,sFAAsF;IACtF,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;IACpE,MAAM,SAAS,GAAyB,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACpE,UAAU,EAAE,EAAE,CAAC,EAAE;QACjB,UAAU,EAAE,EAAE,CAAC,UAAU;QACzB,QAAQ,EAAE,EAAE,CAAC,MAAM;QACnB,QAAQ,EAAE,EAAE,CAAC,QAAQ;QACrB,WAAW,EAAE,EAAE,CAAC,WAAW;QAC3B,OAAO,EAAE,YAAY,IAAI,EAAE,CAAC,YAAY;YACtC,CAAC,CAAC,GAAG,EAAE,CAAC,YAAY,KAAK,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,MAAM,EAAE;YAClD,CAAC,CAAC,EAAE,CAAC,OAAO;QACd,UAAU,EAAE,EAAE,CAAC,UAAU;QACzB,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACxB,iEAAiE;YACjE,2EAA2E;YAC3E,MAAM,OAAO,GAAG,CAAC,CAAC,OAQL,CAAC;YACd,OAAO;gBACL,GAAG,EAAE,CAAC,CAAC,GAAG;gBACV,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM;gBACvC,QAAQ,EAAE,CAAC,CAAC,cAAc;gBAC1B,UAAU,EAAE,CAAC,CAAC,gBAAgB;gBAC9B,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,QAAQ,EAAE,CAAC,CAAC,QAAe;gBAC3B,UAAU,EAAE,CAAC,CAAC,UAAiB;gBAC/B,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,IAAI,IAAI;gBACnD,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,IAAI,IAAI;gBAC/C,IAAI,EAAE,CAAC;aACR,CAAC;QACJ,CAAC,CAAC;KACH,CAAC,CAAC,CAAC;IAEJ,oBAAoB;IACpB,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IACrD,CAAC;SAAM,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,gEAAgE;QAChE,qEAAqE;QACrE,oEAAoE;QACpE,wBAAwB;QACxB,MAAM,IAAI,GAAG,cAAc,CACzB,eAAe,EACf,MAAM,CAAC,SAGJ,EACH,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CACzB,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC7D,CAAC;SAAM,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;QACnC,uEAAuE;QACvE,sEAAsE;QACtE,qEAAqE;QACrE,8CAA8C;QAC9C,MAAM,WAAW,GACf,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YACzB,CAAC,CAAC,cAAc,CACZ,gBAAgB,EAChB,MAAM,CAAC,SAGJ,CACJ;YACH,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,IAAI,WAAW,IAAI,OAAO,EAAE,CAAC;YAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACN,qEAAqE;YACrE,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,0CAA0C,IAAI,MAAM,KAAK,CAAC,MAAM,cAAc,CAC/E,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,IAAI,OAAO,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;SAAM,CAAC;QACN,uEAAuE;QACvE,oEAAoE;QACpE,oEAAoE;QACpE,WAAW;QACX,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,oBAAoB,CAC9B,MAAM,EACN,MAAM,CAAC,SAGJ,CACJ,CAAC;YACF,MAAM,IAAI,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC1E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QACjE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CACX,GAAG,MAAM,CAAC,MAAM,qBAAqB,MAAM,KAAK,MAAM,CAAC,KAAK,IAAI,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACnH,CAAC;YACF,OAAO,CAAC,KAAK,CACX,GAAG,MAAM,CAAC,GAAG,4EAA4E,MAAM,CAAC,KAAK,EAAE,CACxG,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,6DAA6D;IAC7D,MAAM,QAAQ,GAAyB,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,kCAAkC;QAClC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YAClB,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;YACrE,IAAI,CAAC;gBAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;QACD,+BAA+B;QAC/B,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YAC1B,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;gBACpB,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;gBAClE,IAAI,CAAC;oBAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,0BAA0B,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACxE,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CACX,GAAG,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,CAC3E,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/commands/contracts.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,8 @@ export interface InitOptions {
17
17
  overwriteHooks?: boolean;
18
18
  overwriteActions?: boolean;
19
19
  baseUrl?: string;
20
+ /** Named scaffold template. Currently: "demo" (public demo project). */
21
+ template?: string;
20
22
  }
21
23
  export declare function initCommand(options?: InitOptions): Promise<void>;
22
24
  //# sourceMappingURL=init.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA2cH,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,gBAAgB,CAAC;AAE7D,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAQD,wBAAsB,WAAW,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6V1E"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAwiBH,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,gBAAgB,CAAC;AAE7D,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAQD,wBAAsB,WAAW,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmV1E"}
@@ -174,10 +174,9 @@ function makePackageJson(_baseUrl) {
174
174
  version: "0.1.0",
175
175
  type: "module",
176
176
  scripts: {
177
- test: "glubean run --config ci-config/default.yaml",
178
- "test:staging": "glubean run --config ci-config/staging.yaml",
179
- "test:ci": "glubean run --config ci-config/ci.yaml",
180
- explore: "glubean run --config ci-config/explore.yaml",
177
+ test: "glubean run --profile local",
178
+ "test:ci": "glubean ci run",
179
+ explore: "glubean run --profile explore",
181
180
  scan: "glubean scan",
182
181
  "validate-metadata": "glubean validate-metadata",
183
182
  },
@@ -186,6 +185,102 @@ function makePackageJson(_baseUrl) {
186
185
  },
187
186
  }, null, 2) + "\n");
188
187
  }
188
+ // Canonical glubean.yaml emitted by `glubean init` for non-contract-first
189
+ // projects. Generated by Phase 4 of the config-profiles plan
190
+ // (`04-config-profiles-public-demo-plan.zh.md` §"新配置文件"). Suites
191
+ // declared but kept simple: tests only. Empty `contracts` suite stays
192
+ // out of the template — non-contract-first init doesn't create the
193
+ // contracts/ directory, and declaring a suite that resolves to zero
194
+ // files would trip the per-suite empty-files check.
195
+ const GLUBEAN_YAML_DEFAULT = `version: 1
196
+
197
+ defaults:
198
+ redaction:
199
+ # Full redaction: secrets are replaced with a fixed marker, no
200
+ # prefix/suffix characters revealed.
201
+ replacementFormat: simple
202
+
203
+ suites:
204
+ tests:
205
+ target: ./tests
206
+ kinds: [test]
207
+ explore:
208
+ target: ./explore
209
+ kinds: [test]
210
+
211
+ profiles:
212
+ local:
213
+ suites: [tests]
214
+
215
+ ci:
216
+ suites: [tests]
217
+ selection:
218
+ excludeTags: [manual, destructive]
219
+ execution:
220
+ failFast: true
221
+ concurrency: 2
222
+ reporters:
223
+ junit: .glubean/results/junit.xml
224
+ resultJson: .glubean/results/ci.result.json
225
+
226
+ explore:
227
+ suites: [explore]
228
+ `;
229
+ // Contract-first variant: declares BOTH \`contracts\` and \`tests\` suites
230
+ // and runs both in the local + ci profiles, per plan §Phase 4 task 5
231
+ // "contract-first init 默认 suites 包含 contracts 和 tests". A starter
232
+ // tests/sample.test.ts is also written below so multi-suite CI doesn't
233
+ // trip the per-suite empty-files check out of the box.
234
+ const GLUBEAN_YAML_CONTRACT_FIRST = `version: 1
235
+
236
+ defaults:
237
+ redaction:
238
+ # Full redaction: secrets are replaced with a fixed marker, no
239
+ # prefix/suffix characters revealed.
240
+ replacementFormat: simple
241
+
242
+ suites:
243
+ contracts:
244
+ target: ./contracts
245
+ kinds: [contract, flow]
246
+ tests:
247
+ target: ./tests
248
+ kinds: [test]
249
+
250
+ profiles:
251
+ local:
252
+ suites: [contracts, tests]
253
+
254
+ ci:
255
+ suites: [contracts, tests]
256
+ selection:
257
+ excludeTags: [manual, destructive]
258
+ execution:
259
+ failFast: true
260
+ concurrency: 2
261
+ reporters:
262
+ junit: .glubean/results/junit.xml
263
+ resultJson: .glubean/results/ci.result.json
264
+
265
+ contract-smoke:
266
+ suites: [contracts]
267
+ selection:
268
+ tags: [smoke]
269
+ `;
270
+ const CONTRACT_FIRST_SAMPLE_TEST = `import { test } from "@glubean/sdk";
271
+
272
+ /**
273
+ * Starter test so the canonical CI profile (suites: [contracts, tests])
274
+ * doesn't trip "zero files" on a brand-new contract-first project.
275
+ * Delete this file once you've added real tests under ./tests.
276
+ */
277
+ export const placeholder = test(
278
+ { id: "placeholder", tags: ["smoke"] },
279
+ async (ctx) => {
280
+ ctx.assert(true, "starter test — replace me");
281
+ },
282
+ );
283
+ `;
189
284
  function makeEnvFile(baseUrl) {
190
285
  return `# Environment variables for tests
191
286
  BASE_URL=${baseUrl}
@@ -196,19 +291,6 @@ const ENV_SECRETS = `# Secrets for tests (add this file to .gitignore)
196
291
  USERNAME=emilys
197
292
  PASSWORD=emilyspass
198
293
  `;
199
- function makeStagingEnvFile(baseUrl) {
200
- const stagingUrl = baseUrl.replace(/\/\/([^/]+)/, "//staging.$1");
201
- return `# Staging environment variables
202
- # Usage: glubean run --env-file .env.staging
203
- BASE_URL=${stagingUrl}
204
- `;
205
- }
206
- const ENV_STAGING_SECRETS = `# Staging secrets (gitignored)
207
- # Usage: auto-loaded when --env-file .env.staging is used
208
- # API_KEY=your-staging-api-key
209
- USERNAME=
210
- PASSWORD=
211
- `;
212
294
  const GITIGNORE = `# Secrets (all env-specific secrets files)
213
295
  .env.secrets
214
296
  .env.*.secrets
@@ -361,14 +443,24 @@ jobs:
361
443
  echo "PASSWORD=\${{ secrets.PASSWORD }}" >> .env.secrets
362
444
 
363
445
  - name: Run tests
364
- run: npx glubean run --ci --result-json
446
+ # The ci profile in glubean.yaml already sets reporters.resultJson
447
+ # (.glubean/results/ci.result.json) + reporters.junit, so no CLI
448
+ # override is needed. Adding --result-json without a path here
449
+ # would push output to the default glubean-run.result.json and
450
+ # bypass the profile-owned location.
451
+ run: npx glubean ci run
365
452
 
366
453
  - name: Upload results
367
454
  if: always()
368
455
  uses: actions/upload-artifact@v4
369
456
  with:
370
457
  name: test-results
458
+ # include-hidden-files: glubean.yaml CI profile writes outputs
459
+ # under \`.glubean/results/\`; upload-artifact@v4 skips hidden
460
+ # paths by default and would silently drop the junit + result.json.
461
+ include-hidden-files: true
371
462
  path: |
463
+ .glubean/results/**
372
464
  **/*.junit.xml
373
465
  **/*.result.json
374
466
  `;
@@ -398,6 +490,18 @@ async function installDependencies() {
398
490
  const DEFAULT_BASE_URL = "https://dummyjson.com";
399
491
  export async function initCommand(options = {}) {
400
492
  console.log(`\n${colors.bold}${colors.cyan}🫘 Glubean Init${colors.reset}\n`);
493
+ // `--template demo` is a non-interactive named scaffold — short-circuit
494
+ // before the TTY check + workflow prompt. Validate the name so a typo
495
+ // (e.g. `--template demoo`) fails loudly instead of silently falling
496
+ // through to the default workflow.
497
+ if (options.template !== undefined) {
498
+ if (options.template !== "demo") {
499
+ console.error(`Unknown --template "${options.template}". Supported: demo.`);
500
+ process.exit(1);
501
+ }
502
+ await initDemo(options.overwrite ?? false);
503
+ return;
504
+ }
401
505
  const interactive = options.interactive ?? true;
402
506
  const forceInteractive = process.env["GLUBEAN_FORCE_INTERACTIVE"] === "1";
403
507
  if (interactive && !isInteractive() && !forceInteractive) {
@@ -480,34 +584,9 @@ export async function initCommand(options = {}) {
480
584
  description: "Secret variables",
481
585
  },
482
586
  {
483
- path: ".env.staging",
484
- content: makeStagingEnvFile(baseUrl),
485
- description: "Staging environment variables",
486
- },
487
- {
488
- path: ".env.staging.secrets",
489
- content: ENV_STAGING_SECRETS,
490
- description: "Staging secret variables",
491
- },
492
- {
493
- path: "ci-config/default.yaml",
494
- content: () => readCliTemplate("ci-config/default.yaml"),
495
- description: "Default run config",
496
- },
497
- {
498
- path: "ci-config/ci.yaml",
499
- content: () => readCliTemplate("ci-config/ci.yaml"),
500
- description: "CI run config",
501
- },
502
- {
503
- path: "ci-config/staging.yaml",
504
- content: () => readCliTemplate("ci-config/staging.yaml"),
505
- description: "Staging run config",
506
- },
507
- {
508
- path: "ci-config/explore.yaml",
509
- content: () => readCliTemplate("ci-config/explore.yaml"),
510
- description: "Explore run config",
587
+ path: "glubean.yaml",
588
+ content: GLUBEAN_YAML_DEFAULT,
589
+ description: "Canonical Glubean project config (suites + profiles)",
511
590
  },
512
591
  {
513
592
  path: ".gitignore",
@@ -811,6 +890,7 @@ export const healthCheck = publicApi("health-check", {
811
890
  endpoint: "GET /health",
812
891
  feature: "System",
813
892
  description: "Service health check",
893
+ tags: ["smoke"],
814
894
  cases: {
815
895
  ok: {
816
896
  description: "Service is running and healthy",
@@ -826,9 +906,9 @@ const CONTRACT_FIRST_PACKAGE_JSON = (sdkVersion) => JSON.stringify({
826
906
  scripts: {
827
907
  "contract:run": "glubean run contracts/",
828
908
  "contract:verbose": "glubean run contracts/ --verbose",
829
- test: "glubean run --config ci-config/default.yaml",
830
- "test:ci": "glubean run --config ci-config/ci.yaml",
831
- explore: "glubean run --config ci-config/explore.yaml",
909
+ "contract:smoke": "glubean run --profile contract-smoke",
910
+ test: "glubean run --profile local",
911
+ "test:ci": "glubean ci run",
832
912
  scan: "glubean scan",
833
913
  },
834
914
  dependencies: {
@@ -836,6 +916,138 @@ const CONTRACT_FIRST_PACKAGE_JSON = (sdkVersion) => JSON.stringify({
836
916
  zod: "^4.0.0",
837
917
  },
838
918
  }, null, 2) + "\n";
919
+ const DEMO_PACKAGE_JSON = (sdkVersion) => JSON.stringify({
920
+ name: "glubean-public-demo",
921
+ version: "0.1.0",
922
+ type: "module",
923
+ scripts: {
924
+ // `local` profile only — deterministic suites, always green.
925
+ test: "glubean run --profile local",
926
+ // Full narrative incl. flaky + canary. Runs fully local (no
927
+ // upload). Exit code is intermittently non-zero BY DESIGN.
928
+ "test:full": "glubean run --profile full",
929
+ scan: "glubean scan",
930
+ },
931
+ dependencies: {
932
+ "@glubean/sdk": sdkVersion,
933
+ },
934
+ }, null, 2) + "\n";
935
+ /**
936
+ * `glubean init --template demo` — scaffolds the public demo project
937
+ * (Phase 6). Pairs with the standalone `glubean-demo-backend` service
938
+ * (see glubean/docs/05-demo-project-design.zh.md). Static template
939
+ * files live in packages/cli/templates/demo/**; only package.json
940
+ * needs SDK-version injection.
941
+ */
942
+ async function initDemo(overwrite) {
943
+ console.log(`${colors.dim} Demo — runnable public demo project (pairs with glubean-demo-backend)${colors.reset}\n`);
944
+ const files = [
945
+ {
946
+ path: "package.json",
947
+ content: DEMO_PACKAGE_JSON(SDK_VERSION),
948
+ description: "Package config with local + full scripts",
949
+ },
950
+ {
951
+ path: "README.md",
952
+ content: () => readCliTemplate("demo/README.md"),
953
+ description: "Demo narrative explainer",
954
+ },
955
+ {
956
+ path: "glubean.yaml",
957
+ content: () => readCliTemplate("demo/glubean.yaml"),
958
+ description: "Demo config — stable / flaky / contract / canary suites",
959
+ },
960
+ {
961
+ // Enables allowImportingTsExtensions so the `.ts` relative imports
962
+ // (skill convention + required for contract discovery) typecheck
963
+ // cleanly in editors / tsc. The project runs via tsx (`glubean
964
+ // run`), so noEmit is fine.
965
+ path: "tsconfig.json",
966
+ content: () => readCliTemplate("demo/tsconfig.json"),
967
+ description: "TS config (allowImportingTsExtensions for .ts imports)",
968
+ },
969
+ {
970
+ path: ".env.example",
971
+ content: () => readCliTemplate("demo/.env.example"),
972
+ description: "Env vars template (MOCK_BACKEND_URL)",
973
+ },
974
+ {
975
+ path: ".env.secrets.example",
976
+ content: () => readCliTemplate("demo/.env.secrets.example"),
977
+ description: "Secrets template (upload token — opt-in only)",
978
+ },
979
+ {
980
+ // Sourced from gitignore.tpl, not .gitignore — npm pack omits
981
+ // files literally named `.gitignore` from the published package,
982
+ // so the template must use a non-ignored name. Written out to
983
+ // the real `.gitignore` in the scaffolded project.
984
+ path: ".gitignore",
985
+ content: () => readCliTemplate("demo/gitignore.tpl"),
986
+ description: "Git ignore rules",
987
+ },
988
+ {
989
+ path: "glubean.setup.ts",
990
+ content: GLUBEAN_SETUP_TEMPLATE,
991
+ description: "Plugin bootstrap entry",
992
+ },
993
+ {
994
+ path: "config/api.ts",
995
+ content: () => readCliTemplate("demo/config/api.ts"),
996
+ description: "Shared HTTP client (configure() once, imported everywhere)",
997
+ },
998
+ {
999
+ path: "tests/api-stable/get-users.test.ts",
1000
+ content: () => readCliTemplate("demo/tests/api-stable/get-users.test.ts"),
1001
+ description: "Stable suite — deterministic 200 tests",
1002
+ },
1003
+ {
1004
+ path: "tests/api-flaky/search-flaky.test.ts",
1005
+ content: () => readCliTemplate("demo/tests/api-flaky/search-flaky.test.ts"),
1006
+ description: "Flaky suite — ~30% 503 (full profile only)",
1007
+ },
1008
+ {
1009
+ path: "tests/canary/synthetic-50pct-flaky.test.ts",
1010
+ content: () => readCliTemplate("demo/tests/canary/synthetic-50pct-flaky.test.ts"),
1011
+ description: "In-process synthetic canary (full profile only)",
1012
+ },
1013
+ {
1014
+ path: "tests/contracts/stable/users-contract.contract.ts",
1015
+ content: () => readCliTemplate("demo/tests/contracts/stable/users-contract.contract.ts"),
1016
+ description: "Stable contract guarding the API shape",
1017
+ },
1018
+ ];
1019
+ let created = 0;
1020
+ let skipped = 0;
1021
+ let overwritten = 0;
1022
+ for (const file of files) {
1023
+ const existedBefore = await fileExists(file.path);
1024
+ if (existedBefore && !overwrite) {
1025
+ console.log(` ${colors.dim}skip${colors.reset} ${file.path} (already exists)`);
1026
+ skipped++;
1027
+ continue;
1028
+ }
1029
+ const parentDir = file.path.substring(0, file.path.lastIndexOf("/"));
1030
+ if (parentDir)
1031
+ await mkdir(parentDir, { recursive: true });
1032
+ const content = await resolveContent(file.content);
1033
+ await writeFile(file.path, content, "utf-8");
1034
+ if (existedBefore) {
1035
+ console.log(` ${colors.yellow}overwrite${colors.reset} ${file.path} - ${file.description}`);
1036
+ overwritten++;
1037
+ }
1038
+ else {
1039
+ console.log(` ${colors.green}create${colors.reset} ${file.path} - ${file.description}`);
1040
+ created++;
1041
+ }
1042
+ }
1043
+ console.log(`\n${colors.green}✓${colors.reset} Demo project scaffolded ` +
1044
+ `(${created} created${overwritten ? `, ${overwritten} overwritten` : ""}${skipped ? `, ${skipped} skipped` : ""}).\n`);
1045
+ console.log(`${colors.dim}Next steps:${colors.reset}`);
1046
+ console.log(` 1. cp .env.example .env`);
1047
+ console.log(` 2. Set MOCK_BACKEND_URL (.env) to your deployed glubean-demo-backend`);
1048
+ console.log(` 3. npm install && npm test ${colors.dim}# local profile — green${colors.reset}`);
1049
+ console.log(` 4. npm run test:full ${colors.dim}# full narrative (flaky + canary), runs local${colors.reset}\n`);
1050
+ }
839
1051
  async function initContractFirst(overwrite) {
840
1052
  console.log(`${colors.dim} Contract-first — define API behavior before implementing${colors.reset}\n`);
841
1053
  const files = [
@@ -885,19 +1097,14 @@ async function initContractFirst(overwrite) {
885
1097
  description: "Shared Zod schemas directory",
886
1098
  },
887
1099
  {
888
- path: "ci-config/default.yaml",
889
- content: () => readCliTemplate("ci-config/default.yaml"),
890
- description: "Default run config",
891
- },
892
- {
893
- path: "ci-config/ci.yaml",
894
- content: () => readCliTemplate("ci-config/ci.yaml"),
895
- description: "CI run config",
1100
+ path: "glubean.yaml",
1101
+ content: GLUBEAN_YAML_CONTRACT_FIRST,
1102
+ description: "Canonical Glubean project config (contracts + tests)",
896
1103
  },
897
1104
  {
898
- path: "ci-config/explore.yaml",
899
- content: () => readCliTemplate("ci-config/explore.yaml"),
900
- description: "Explore run config",
1105
+ path: "tests/sample.test.ts",
1106
+ content: CONTRACT_FIRST_SAMPLE_TEST,
1107
+ description: "Starter test (so multi-suite CI has a file to run)",
901
1108
  },
902
1109
  {
903
1110
  path: "GLUBEAN.md",