mewkit 1.10.3 → 1.11.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 (183) hide show
  1. package/README.md +56 -4
  2. package/dist/commands/budget.d.ts +13 -0
  3. package/dist/commands/budget.d.ts.map +1 -1
  4. package/dist/commands/budget.js +45 -0
  5. package/dist/commands/budget.js.map +1 -1
  6. package/dist/commands/doctor-checks.d.ts +1 -1
  7. package/dist/commands/doctor-checks.d.ts.map +1 -1
  8. package/dist/commands/doctor-checks.js +7 -1
  9. package/dist/commands/doctor-checks.js.map +1 -1
  10. package/dist/commands/doctor-hard-gates.d.ts +3 -0
  11. package/dist/commands/doctor-hard-gates.d.ts.map +1 -0
  12. package/dist/commands/doctor-hard-gates.js +138 -0
  13. package/dist/commands/doctor-hard-gates.js.map +1 -0
  14. package/dist/commands/doctor.d.ts +1 -0
  15. package/dist/commands/doctor.d.ts.map +1 -1
  16. package/dist/commands/doctor.js +12 -3
  17. package/dist/commands/doctor.js.map +1 -1
  18. package/dist/commands/evolve.d.ts +11 -0
  19. package/dist/commands/evolve.d.ts.map +1 -0
  20. package/dist/commands/evolve.js +63 -0
  21. package/dist/commands/evolve.js.map +1 -0
  22. package/dist/commands/health.d.ts +14 -0
  23. package/dist/commands/health.d.ts.map +1 -0
  24. package/dist/commands/health.js +193 -0
  25. package/dist/commands/health.js.map +1 -0
  26. package/dist/commands/init.d.ts +6 -0
  27. package/dist/commands/init.d.ts.map +1 -1
  28. package/dist/commands/init.js +63 -3
  29. package/dist/commands/init.js.map +1 -1
  30. package/dist/commands/inventory.d.ts +17 -0
  31. package/dist/commands/inventory.d.ts.map +1 -0
  32. package/dist/commands/inventory.js +114 -0
  33. package/dist/commands/inventory.js.map +1 -0
  34. package/dist/commands/memory.d.ts +3 -0
  35. package/dist/commands/memory.d.ts.map +1 -1
  36. package/dist/commands/memory.js +67 -0
  37. package/dist/commands/memory.js.map +1 -1
  38. package/dist/commands/pack-helpers.d.ts +37 -0
  39. package/dist/commands/pack-helpers.d.ts.map +1 -0
  40. package/dist/commands/pack-helpers.js +105 -0
  41. package/dist/commands/pack-helpers.js.map +1 -0
  42. package/dist/commands/pack.d.ts +11 -0
  43. package/dist/commands/pack.d.ts.map +1 -0
  44. package/dist/commands/pack.js +192 -0
  45. package/dist/commands/pack.js.map +1 -0
  46. package/dist/commands/policy.d.ts +8 -0
  47. package/dist/commands/policy.d.ts.map +1 -0
  48. package/dist/commands/policy.js +65 -0
  49. package/dist/commands/policy.js.map +1 -0
  50. package/dist/commands/portability.d.ts +7 -0
  51. package/dist/commands/portability.d.ts.map +1 -0
  52. package/dist/commands/portability.js +50 -0
  53. package/dist/commands/portability.js.map +1 -0
  54. package/dist/commands/reflect.d.ts +14 -0
  55. package/dist/commands/reflect.d.ts.map +1 -0
  56. package/dist/commands/reflect.js +135 -0
  57. package/dist/commands/reflect.js.map +1 -0
  58. package/dist/commands/simulate.d.ts +14 -0
  59. package/dist/commands/simulate.d.ts.map +1 -0
  60. package/dist/commands/simulate.js +86 -0
  61. package/dist/commands/simulate.js.map +1 -0
  62. package/dist/commands/upgrade.d.ts.map +1 -1
  63. package/dist/commands/upgrade.js +22 -1
  64. package/dist/commands/upgrade.js.map +1 -1
  65. package/dist/commands/validate.d.ts +28 -0
  66. package/dist/commands/validate.d.ts.map +1 -1
  67. package/dist/commands/validate.js +170 -94
  68. package/dist/commands/validate.js.map +1 -1
  69. package/dist/core/build-inventory.d.ts +71 -0
  70. package/dist/core/build-inventory.d.ts.map +1 -0
  71. package/dist/core/build-inventory.js +222 -0
  72. package/dist/core/build-inventory.js.map +1 -0
  73. package/dist/core/check-packs.d.ts +13 -0
  74. package/dist/core/check-packs.d.ts.map +1 -0
  75. package/dist/core/check-packs.js +131 -0
  76. package/dist/core/check-packs.js.map +1 -0
  77. package/dist/core/check-stale-index.d.ts +35 -0
  78. package/dist/core/check-stale-index.d.ts.map +1 -0
  79. package/dist/core/check-stale-index.js +132 -0
  80. package/dist/core/check-stale-index.js.map +1 -0
  81. package/dist/core/check-workflow-drift.d.ts +49 -0
  82. package/dist/core/check-workflow-drift.d.ts.map +1 -0
  83. package/dist/core/check-workflow-drift.js +226 -0
  84. package/dist/core/check-workflow-drift.js.map +1 -0
  85. package/dist/core/context-budget.d.ts +9 -0
  86. package/dist/core/context-budget.d.ts.map +1 -0
  87. package/dist/core/context-budget.js +46 -0
  88. package/dist/core/context-budget.js.map +1 -0
  89. package/dist/core/event-log.d.ts +44 -0
  90. package/dist/core/event-log.d.ts.map +1 -0
  91. package/dist/core/event-log.js +169 -0
  92. package/dist/core/event-log.js.map +1 -0
  93. package/dist/core/evolution/event-clusters.d.ts +4 -0
  94. package/dist/core/evolution/event-clusters.d.ts.map +1 -0
  95. package/dist/core/evolution/event-clusters.js +82 -0
  96. package/dist/core/evolution/event-clusters.js.map +1 -0
  97. package/dist/core/evolution/recommendation-renderer.d.ts +3 -0
  98. package/dist/core/evolution/recommendation-renderer.d.ts.map +1 -0
  99. package/dist/core/evolution/recommendation-renderer.js +24 -0
  100. package/dist/core/evolution/recommendation-renderer.js.map +1 -0
  101. package/dist/core/evolution/review-failure-clusters.d.ts +10 -0
  102. package/dist/core/evolution/review-failure-clusters.d.ts.map +1 -0
  103. package/dist/core/evolution/review-failure-clusters.js +30 -0
  104. package/dist/core/evolution/review-failure-clusters.js.map +1 -0
  105. package/dist/core/evolution/suggestions.d.ts +24 -0
  106. package/dist/core/evolution/suggestions.d.ts.map +1 -0
  107. package/dist/core/evolution/suggestions.js +11 -0
  108. package/dist/core/evolution/suggestions.js.map +1 -0
  109. package/dist/core/gate-policy.d.ts +20 -0
  110. package/dist/core/gate-policy.d.ts.map +1 -0
  111. package/dist/core/gate-policy.js +64 -0
  112. package/dist/core/gate-policy.js.map +1 -0
  113. package/dist/core/harness-scaffold.d.ts +29 -0
  114. package/dist/core/harness-scaffold.d.ts.map +1 -0
  115. package/dist/core/harness-scaffold.js +53 -0
  116. package/dist/core/harness-scaffold.js.map +1 -0
  117. package/dist/core/hook-runner.d.ts +69 -0
  118. package/dist/core/hook-runner.d.ts.map +1 -0
  119. package/dist/core/hook-runner.js +95 -0
  120. package/dist/core/hook-runner.js.map +1 -0
  121. package/dist/core/index.d.ts +2 -0
  122. package/dist/core/index.d.ts.map +1 -1
  123. package/dist/core/index.js +2 -0
  124. package/dist/core/index.js.map +1 -1
  125. package/dist/core/install-metadata.d.ts +15 -0
  126. package/dist/core/install-metadata.d.ts.map +1 -1
  127. package/dist/core/install-metadata.js +11 -0
  128. package/dist/core/install-metadata.js.map +1 -1
  129. package/dist/core/is-hook-script.d.ts +2 -0
  130. package/dist/core/is-hook-script.d.ts.map +1 -0
  131. package/dist/core/is-hook-script.js +45 -0
  132. package/dist/core/is-hook-script.js.map +1 -0
  133. package/dist/core/pack-manifest.d.ts +48 -0
  134. package/dist/core/pack-manifest.d.ts.map +1 -0
  135. package/dist/core/pack-manifest.js +126 -0
  136. package/dist/core/pack-manifest.js.map +1 -0
  137. package/dist/core/pack-resolver.d.ts +18 -0
  138. package/dist/core/pack-resolver.d.ts.map +1 -0
  139. package/dist/core/pack-resolver.js +144 -0
  140. package/dist/core/pack-resolver.js.map +1 -0
  141. package/dist/core/portability-matrix.d.ts +17 -0
  142. package/dist/core/portability-matrix.d.ts.map +1 -0
  143. package/dist/core/portability-matrix.js +31 -0
  144. package/dist/core/portability-matrix.js.map +1 -0
  145. package/dist/core/simulation-runner.d.ts +93 -0
  146. package/dist/core/simulation-runner.d.ts.map +1 -0
  147. package/dist/core/simulation-runner.js +161 -0
  148. package/dist/core/simulation-runner.js.map +1 -0
  149. package/dist/core/smart-update.d.ts +24 -0
  150. package/dist/core/smart-update.d.ts.map +1 -1
  151. package/dist/core/smart-update.js +69 -0
  152. package/dist/core/smart-update.js.map +1 -1
  153. package/dist/core/usage/usage-analyzer.d.ts +18 -0
  154. package/dist/core/usage/usage-analyzer.d.ts.map +1 -0
  155. package/dist/core/usage/usage-analyzer.js +41 -0
  156. package/dist/core/usage/usage-analyzer.js.map +1 -0
  157. package/dist/core/validate-install.d.ts.map +1 -1
  158. package/dist/core/validate-install.js +3 -1
  159. package/dist/core/validate-install.js.map +1 -1
  160. package/dist/index.js +175 -4
  161. package/dist/index.js.map +1 -1
  162. package/dist/memory/archive.d.ts +9 -0
  163. package/dist/memory/archive.d.ts.map +1 -0
  164. package/dist/memory/archive.js +42 -0
  165. package/dist/memory/archive.js.map +1 -0
  166. package/dist/memory/compact.d.ts +9 -0
  167. package/dist/memory/compact.d.ts.map +1 -0
  168. package/dist/memory/compact.js +33 -0
  169. package/dist/memory/compact.js.map +1 -0
  170. package/dist/memory/conflicts.d.ts +8 -0
  171. package/dist/memory/conflicts.d.ts.map +1 -0
  172. package/dist/memory/conflicts.js +28 -0
  173. package/dist/memory/conflicts.js.map +1 -0
  174. package/dist/memory/promote.d.ts +8 -0
  175. package/dist/memory/promote.d.ts.map +1 -0
  176. package/dist/memory/promote.js +10 -0
  177. package/dist/memory/promote.js.map +1 -0
  178. package/dist/memory/store-utils.d.ts +14 -0
  179. package/dist/memory/store-utils.d.ts.map +1 -0
  180. package/dist/memory/store-utils.js +44 -0
  181. package/dist/memory/store-utils.js.map +1 -0
  182. package/dist/migrate/types.d.ts +2 -2
  183. package/package.json +1 -1
@@ -0,0 +1,161 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import yaml from "js-yaml";
4
+ import { scaffoldHarnessProject, hasHarness } from "./harness-scaffold.js";
5
+ import { runConfiguredHook } from "./hook-runner.js";
6
+ /**
7
+ * THE shared assertion: compare a hook run result against an expectation. Returns
8
+ * PASS / FAIL / SKIP. Two honesty guards:
9
+ * - an allow-case (`blocked:false`) where NO hook ran → SKIP (never a vacuous PASS),
10
+ * - a block-case where no hook ran → FAIL (the gate was not exercised).
11
+ */
12
+ export function assertOutcome(result, expect) {
13
+ const stream = expect.expectStream ?? "stderr";
14
+ if (!result) {
15
+ if (expect.blocked === false) {
16
+ return { status: "SKIP", detail: "No hook matched the tool — allow-case not exercised (would pass vacuously)." };
17
+ }
18
+ return { status: "FAIL", detail: "Expected a block but no hook ran for this tool." };
19
+ }
20
+ const streamText = stream === "stdout" ? result.stdout : result.stderr;
21
+ if (expect.blocked) {
22
+ const markerOk = !expect.marker || streamText.includes(expect.marker);
23
+ const exitOk = expect.exitCode !== undefined ? result.status === expect.exitCode : result.status !== 0;
24
+ if (markerOk && exitOk) {
25
+ return { status: "PASS", detail: `Blocked as expected (exit ${result.status}${expect.marker ? `, ${expect.marker} on ${stream}` : ""}).` };
26
+ }
27
+ return {
28
+ status: "FAIL",
29
+ detail: `Expected block (exit ${expect.exitCode ?? "≠0"}${expect.marker ? `, ${expect.marker} on ${stream}` : ""}) but got exit ${result.status}; marker ${markerOk ? "present" : "absent"}.`,
30
+ };
31
+ }
32
+ if (result.status === 0)
33
+ return { status: "PASS", detail: "Allowed (exit 0)." };
34
+ return { status: "FAIL", detail: `Expected allow (exit 0) but got exit ${result.status}.` };
35
+ }
36
+ /** Apply a step's `given` to the scaffolded project (in-place). */
37
+ function applyGiven(project, given) {
38
+ if (!given)
39
+ return;
40
+ if (given.clearPlans)
41
+ project.clearPlans();
42
+ if (given.plan)
43
+ project.addPlan({ nested: true });
44
+ for (const f of given.files ?? []) {
45
+ const abs = path.join(project.dir, f.path);
46
+ fs.mkdirSync(path.dirname(abs), { recursive: true });
47
+ fs.writeFileSync(abs, f.content);
48
+ }
49
+ }
50
+ /** Run a single step's `when` against the project and assert against `expect`. */
51
+ function runStep(project, settings, step) {
52
+ applyGiven(project, step.given);
53
+ const results = runConfiguredHook(settings, {
54
+ projectDir: project.dir,
55
+ event: "PreToolUse",
56
+ tool: step.when.tool,
57
+ toolName: step.when.tool,
58
+ toolInput: { file_path: step.when.file_path, command: step.when.command },
59
+ only: step.when.hook,
60
+ extraEnv: step.when.env,
61
+ });
62
+ const result = results.find((r) => r.script === step.when.hook);
63
+ const outcome = assertOutcome(result, step.expect);
64
+ const stream = step.expect.expectStream ?? "stderr";
65
+ return {
66
+ status: outcome.status,
67
+ detail: outcome.detail,
68
+ expected: `${step.when.hook}: ${step.expect.blocked ? `block ${step.expect.marker ?? ""} on ${stream}` : "allow"}`.trim(),
69
+ actual: result ? `exit ${result.status}` : "no hook ran",
70
+ };
71
+ }
72
+ /** Normalize a scenario into its ordered step list (single-step shorthand → one step). */
73
+ function scenarioSteps(scenario) {
74
+ if (scenario.steps && scenario.steps.length > 0)
75
+ return scenario.steps;
76
+ if (scenario.when && scenario.expect) {
77
+ return [{ given: scenario.given, when: scenario.when, expect: scenario.expect }];
78
+ }
79
+ return [];
80
+ }
81
+ /** worst of the step statuses: FAIL > SKIP > PASS (SKIP is a soft failure for --all). */
82
+ function rollupSteps(steps) {
83
+ if (steps.length === 0)
84
+ return "FAIL";
85
+ if (steps.some((s) => s.status === "FAIL"))
86
+ return "FAIL";
87
+ if (steps.some((s) => s.status === "SKIP"))
88
+ return "SKIP";
89
+ return "PASS";
90
+ }
91
+ /** Execute one scenario against a freshly-scaffolded temp harness. Cleans up always. */
92
+ export function runScenario(scenario, srcRoot) {
93
+ const steps = scenarioSteps(scenario);
94
+ if (steps.length === 0) {
95
+ return {
96
+ name: scenario.name,
97
+ description: scenario.description,
98
+ status: "FAIL",
99
+ steps: [{ status: "FAIL", detail: "Scenario has neither a valid `when/expect` nor `steps`.", expected: "a runnable step", actual: "none" }],
100
+ };
101
+ }
102
+ const project = scaffoldHarnessProject(srcRoot);
103
+ try {
104
+ const stepResults = steps.map((step) => runStep(project, settingsOf(srcRoot), step));
105
+ return { name: scenario.name, description: scenario.description, status: rollupSteps(stepResults), steps: stepResults };
106
+ }
107
+ finally {
108
+ // try/finally so the temp dir (which may hold a synthetic .env) is removed even
109
+ // on a spawnSync timeout/throw.
110
+ project.cleanup();
111
+ }
112
+ }
113
+ let _settingsCache = null;
114
+ function settingsOf(srcRoot) {
115
+ if (_settingsCache?.root === srcRoot)
116
+ return _settingsCache.settings;
117
+ const settings = JSON.parse(fs.readFileSync(path.join(srcRoot, ".claude", "settings.json"), "utf8"));
118
+ _settingsCache = { root: srcRoot, settings };
119
+ return settings;
120
+ }
121
+ /** Load + validate a scenario YAML file. Throws on a malformed/under-specified scenario. */
122
+ export function loadScenario(file) {
123
+ const parsed = yaml.load(fs.readFileSync(file, "utf8"));
124
+ if (typeof parsed !== "object" || parsed === null)
125
+ throw new Error(`${path.basename(file)}: not a YAML object`);
126
+ const s = parsed;
127
+ if (typeof s.name !== "string" || s.name.length === 0)
128
+ throw new Error(`${path.basename(file)}: missing 'name'`);
129
+ const hasSingle = s.when !== undefined && s.expect !== undefined;
130
+ const hasSteps = Array.isArray(s.steps) && s.steps.length > 0;
131
+ if (!hasSingle && !hasSteps) {
132
+ throw new Error(`${path.basename(file)}: must define either when+expect or a non-empty steps list`);
133
+ }
134
+ return s;
135
+ }
136
+ export function simulationsDir(srcRoot) {
137
+ const dir = path.join(srcRoot, ".claude", "simulations");
138
+ return { dir, exists: fs.existsSync(dir) };
139
+ }
140
+ /** List scenario YAML basenames (without extension) in the simulations dir. */
141
+ export function listScenarios(srcRoot) {
142
+ const { dir, exists } = simulationsDir(srcRoot);
143
+ if (!exists)
144
+ return [];
145
+ return fs
146
+ .readdirSync(dir)
147
+ .filter((f) => f.endsWith(".yaml") || f.endsWith(".yml"))
148
+ .map((f) => f.replace(/\.ya?ml$/, ""))
149
+ .sort();
150
+ }
151
+ export function loadScenarioByName(srcRoot, name) {
152
+ const { dir } = simulationsDir(srcRoot);
153
+ for (const ext of [".yaml", ".yml"]) {
154
+ const file = path.join(dir, `${name}${ext}`);
155
+ if (fs.existsSync(file))
156
+ return loadScenario(file);
157
+ }
158
+ throw new Error(`Scenario '${name}' not found in ${dir}`);
159
+ }
160
+ export { hasHarness };
161
+ //# sourceMappingURL=simulation-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simulation-runner.js","sourceRoot":"","sources":["../../src/core/simulation-runner.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,12 @@ export interface UpdateStats {
14
14
  deletionsAlreadyGone: string[];
15
15
  /** Listed deletions a dry-run would remove. */
16
16
  deletionsPreview: string[];
17
+ /** Pristine kit files removed because they fall outside the installed profile. */
18
+ profileTrimmed: string[];
19
+ /** Out-of-profile files kept (user-modified or declined). */
20
+ profileTrimSkipped: string[];
21
+ /** Out-of-profile pristine files a dry-run would trim. */
22
+ profileTrimPreview: string[];
17
23
  }
18
24
  export interface SmartUpdateOptions {
19
25
  /** Default true. Set false to disable orphan deletion (CLI: `--no-cleanup`). */
@@ -30,6 +36,24 @@ export interface SmartUpdateOptions {
30
36
  * the process hangs on stdin.
31
37
  */
32
38
  confirmOrphans?: (orphans: string[]) => Promise<boolean>;
39
+ /**
40
+ * Profile install allow-set: `.claude/`-relative paths the resolved profile
41
+ * should write. When present, the source walk skips any file NOT in this set,
42
+ * and a profile-trim pass removes previously-installed pristine kit files that
43
+ * fall outside it (the full→core downgrade). Absent ⇒ today's full install.
44
+ */
45
+ allowedPaths?: Set<string>;
46
+ /** Installed profile name to record in metadata ("full" for whole-tree). */
47
+ profile?: string;
48
+ /** Resolved pack list to record in metadata; omit for full/legacy (sentinel). */
49
+ packs?: string[];
50
+ /**
51
+ * Opt-in profile-trim: delete previously-installed pristine kit files OUTSIDE
52
+ * `allowedPaths` (the full→core downgrade). ONLY `init --profile` sets this —
53
+ * `pack add` and `upgrade` pass a narrow allow-set that filters WRITES but must
54
+ * never trigger a downgrade delete of everything else.
55
+ */
56
+ trimToProfile?: boolean;
33
57
  }
34
58
  /**
35
59
  * Smart update from a downloaded release directory.
@@ -1 +1 @@
1
- {"version":3,"file":"smart-update.d.ts","sourceRoot":"","sources":["../../src/core/smart-update.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAmB/D,MAAM,WAAW,WAAW;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,2FAA2F;IAC3F,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,kFAAkF;IAClF,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,yDAAyD;IACzD,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,+CAA+C;IAC/C,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IAClC,gFAAgF;IAChF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qEAAqE;IACrE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACzD;AAED;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAChC,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,OAAO,EACf,KAAK,UAAQ,EACb,OAAO,GAAE,kBAAuB,GAC9B,OAAO,CAAC,WAAW,CAAC,CA8VtB"}
1
+ {"version":3,"file":"smart-update.d.ts","sourceRoot":"","sources":["../../src/core/smart-update.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAmB/D,MAAM,WAAW,WAAW;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,2FAA2F;IAC3F,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,kFAAkF;IAClF,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,yDAAyD;IACzD,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,+CAA+C;IAC/C,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,kFAAkF;IAClF,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,6DAA6D;IAC7D,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,0DAA0D;IAC1D,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IAClC,gFAAgF;IAChF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qEAAqE;IACrE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACzD;;;;;OAKG;IACH,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAChC,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,OAAO,EACf,KAAK,UAAQ,EACb,OAAO,GAAE,kBAAuB,GAC9B,OAAO,CAAC,WAAW,CAAC,CA8ZtB"}
@@ -39,6 +39,9 @@ export async function smartUpdate(config, sourceDir, targetDir, dryRun, force =
39
39
  deletionsSkipped: [],
40
40
  deletionsAlreadyGone: [],
41
41
  deletionsPreview: [],
42
+ profileTrimmed: [],
43
+ profileTrimSkipped: [],
44
+ profileTrimPreview: [],
42
45
  };
43
46
  if (priorSource === "none" && !force && existsSync(targetClaudeDir)) {
44
47
  log.warn("No installed metadata found — will treat all existing files as unmodified.");
@@ -59,6 +62,13 @@ export async function smartUpdate(config, sourceDir, targetDir, dryRun, force =
59
62
  for (const { manifestPath, targetRelPath, srcPath } of claudeFiles) {
60
63
  const destPath = join(targetDir, targetRelPath);
61
64
  const layer = classifyLayer(manifestPath);
65
+ // Profile filter: a resolved allow-set installs only its files. The set
66
+ // always ⊇ base (safety rules + hooks + settings), so this never filters a
67
+ // safety file. Absent ⇒ full tree (unchanged).
68
+ if (options.allowedPaths && !options.allowedPaths.has(manifestPath)) {
69
+ stats.skipped++;
70
+ continue;
71
+ }
62
72
  if (isIgnored(targetRelPath)) {
63
73
  log.debug(`Ignored (protected): ${targetRelPath}`);
64
74
  stats.skipped++;
@@ -321,6 +331,63 @@ export async function smartUpdate(config, sourceDir, targetDir, dryRun, force =
321
331
  }
322
332
  }
323
333
  }
334
+ // Profile-trim pass — the full→core downgrade. When an allow-set is active and
335
+ // a prior MeowKit install exists, previously-installed pristine kit files
336
+ // OUTSIDE the allow-set are removed; otherwise they linger as zombie skills
337
+ // still auto-loaded by the runtime. User-modified files are preserved + warned.
338
+ // Orphan logic can't catch these — they ARE in the release manifest — so this
339
+ // is the dedicated data-safety pass. Suppressed by `--no-cleanup`, never on full.
340
+ if (cleanup && options.trimToProfile && options.allowedPaths && hasPriorMeowkitInstall) {
341
+ const allow = options.allowedPaths;
342
+ const trimEligible = [];
343
+ for (const entry of prior.meta?.files ?? []) {
344
+ // Normalize to forward slashes — `allow` (resolver) uses them, but a
345
+ // metadata path from collectFiles carries native separators on Windows.
346
+ const relForward = entry.path.replace(/\\/g, "/");
347
+ if (allow.has(relForward) || entry.layer === "user")
348
+ continue;
349
+ const dest = join(claudeDir, entry.path);
350
+ if (!isWithinDir(claudeDir, dest) || !existsSync(dest))
351
+ continue;
352
+ // pristine kit-owned only — user-modified (owner flips to meowkit-modified
353
+ // or disk hash drifts) is preserved, mirroring the deletions-pass guard.
354
+ if (entry.owner !== "meowkit" || hashFile(dest) !== entry.checksum) {
355
+ stats.profileTrimSkipped.push(entry.path);
356
+ continue;
357
+ }
358
+ trimEligible.push(entry.path);
359
+ }
360
+ if (trimEligible.length > 0) {
361
+ if (dryRun) {
362
+ stats.profileTrimPreview.push(...trimEligible);
363
+ }
364
+ else {
365
+ let proceed;
366
+ if (assumeYes || force)
367
+ proceed = true;
368
+ else if (options.confirmOrphans)
369
+ proceed = await options.confirmOrphans(trimEligible);
370
+ else
371
+ proceed = await confirmDelete(trimEligible.length);
372
+ if (!proceed) {
373
+ stats.profileTrimSkipped.push(...trimEligible);
374
+ }
375
+ else {
376
+ for (const relPath of trimEligible) {
377
+ try {
378
+ unlinkSync(join(claudeDir, relPath));
379
+ stats.profileTrimmed.push(relPath);
380
+ }
381
+ catch (err) {
382
+ log.warn(`Failed to trim ${relPath}: ${err.message}`);
383
+ stats.profileTrimSkipped.push(relPath);
384
+ }
385
+ }
386
+ log.info(`Trimmed ${stats.profileTrimmed.length} file(s) outside the '${options.profile ?? "selected"}' profile.`);
387
+ }
388
+ }
389
+ }
390
+ }
324
391
  // Write installed metadata. `dryRun` writes neither file (matches today).
325
392
  if (!dryRun) {
326
393
  const meta = buildInstallMetadata(claudeDir, {
@@ -329,6 +396,8 @@ export async function smartUpdate(config, sourceDir, targetDir, dryRun, force =
329
396
  priorEntriesByPath,
330
397
  scope: "local",
331
398
  mergedSettings: settingsMerged ? ["settings.json"] : undefined,
399
+ profile: options.profile,
400
+ packs: options.packs,
332
401
  });
333
402
  try {
334
403
  await writeInstallMetadata(claudeDir, meta);
@@ -1 +1 @@
1
- {"version":3,"file":"smart-update.js","sourceRoot":"","sources":["../../src/core/smart-update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"smart-update.js","sourceRoot":"","sources":["../../src/core/smart-update.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { EventRecord } from "../event-log.js";
2
+ import type { InventoryEntry } from "../build-inventory.js";
3
+ export type UsageStatus = "available" | "na";
4
+ export interface ArtifactUsage {
5
+ id: string;
6
+ type: string;
7
+ count: number;
8
+ lastSeen?: string;
9
+ status: UsageStatus;
10
+ }
11
+ export interface UsageReport {
12
+ status: UsageStatus;
13
+ reason?: string;
14
+ artifacts: ArtifactUsage[];
15
+ }
16
+ export declare function analyzeArtifactUsage(entries: InventoryEntry[], events: EventRecord[]): UsageReport;
17
+ export declare function filterUnused(report: UsageReport, threshold?: number): ArtifactUsage[];
18
+ //# sourceMappingURL=usage-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage-analyzer.d.ts","sourceRoot":"","sources":["../../../src/core/usage/usage-analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,IAAI,CAAC;AAE7C,MAAM,WAAW,aAAa;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,WAAW,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC3B,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,aAAa,EAAE,CAAC;CAC3B;AAQD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,WAAW,CA2BlG;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,SAAI,GAAG,aAAa,EAAE,CAGhF"}
@@ -0,0 +1,41 @@
1
+ function eventArtifactId(event) {
2
+ if (event.event === "skill.invoked" && typeof event.data.skill === "string")
3
+ return event.data.skill;
4
+ if (event.event === "agent.invoked" && typeof event.data.agent === "string")
5
+ return event.data.agent;
6
+ return null;
7
+ }
8
+ export function analyzeArtifactUsage(entries, events) {
9
+ const usageEvents = events.filter((e) => eventArtifactId(e) !== null);
10
+ if (usageEvents.length === 0) {
11
+ return {
12
+ status: "na",
13
+ reason: "Usage events are not emitted yet; pruning cannot honestly classify artifacts as unused.",
14
+ artifacts: entries.map((e) => ({ id: e.id, type: e.type, count: 0, status: "na" })),
15
+ };
16
+ }
17
+ const counts = new Map();
18
+ for (const event of usageEvents) {
19
+ const id = eventArtifactId(event);
20
+ if (!id)
21
+ continue;
22
+ const row = counts.get(id) ?? { count: 0 };
23
+ row.count++;
24
+ if (!row.lastSeen || event.ts > row.lastSeen)
25
+ row.lastSeen = event.ts;
26
+ counts.set(id, row);
27
+ }
28
+ return {
29
+ status: "available",
30
+ artifacts: entries.map((entry) => {
31
+ const row = counts.get(entry.id);
32
+ return { id: entry.id, type: entry.type, count: row?.count ?? 0, lastSeen: row?.lastSeen, status: "available" };
33
+ }),
34
+ };
35
+ }
36
+ export function filterUnused(report, threshold = 1) {
37
+ if (report.status !== "available")
38
+ return [];
39
+ return report.artifacts.filter((a) => a.count < threshold);
40
+ }
41
+ //# sourceMappingURL=usage-analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage-analyzer.js","sourceRoot":"","sources":["../../../src/core/usage/usage-analyzer.ts"],"names":[],"mappings":"AAmBA,SAAS,eAAe,CAAC,KAAkB;IAC1C,IAAI,KAAK,CAAC,KAAK,KAAK,eAAe,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;IACrG,IAAI,KAAK,CAAC,KAAK,KAAK,eAAe,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;IACrG,OAAO,IAAI,CAAC;AACb,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAyB,EAAE,MAAqB;IACpF,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IACtE,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO;YACN,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,yFAAyF;YACjG,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;SACnF,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,GAAG,EAAgD,CAAC;IACvE,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QACjC,MAAM,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,EAAE;YAAE,SAAS;QAClB,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,KAAK,EAAE,CAAC;QACZ,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC,QAAQ;YAAE,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;QACtE,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,OAAO;QACN,MAAM,EAAE,WAAW;QACnB,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YAChC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACjC,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QACjH,CAAC,CAAC;KACF,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAmB,EAAE,SAAS,GAAG,CAAC;IAC9D,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW;QAAE,OAAO,EAAE,CAAC;IAC7C,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;AAC5D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"validate-install.d.ts","sourceRoot":"","sources":["../../src/core/validate-install.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CACjB;AAsCD,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAiE5D"}
1
+ {"version":3,"file":"validate-install.d.ts","sourceRoot":"","sources":["../../src/core/validate-install.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CACjB;AAsCD,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAkE5D"}
@@ -1,6 +1,7 @@
1
1
  import { existsSync, readdirSync, statSync, accessSync, constants } from "node:fs";
2
2
  import { join } from "node:path";
3
3
  import pc from "picocolors";
4
+ import { isHookScript } from "./is-hook-script.js";
4
5
  function check(label, pass, issues) {
5
6
  if (pass) {
6
7
  console.log(` ${pc.green("PASS")} ${label}`);
@@ -67,7 +68,8 @@ export function validate(targetDir) {
67
68
  // Hooks — all must be executable
68
69
  const hooksDir = join(claude, "hooks");
69
70
  if (existsSync(hooksDir)) {
70
- const hookFiles = readdirSync(hooksDir);
71
+ // Only real hook scripts — exclude subdirs and sidecars that accessSync(X_OK) accepts.
72
+ const hookFiles = readdirSync(hooksDir).filter((f) => isHookScript(join(hooksDir, f)));
71
73
  for (const hookFile of hookFiles) {
72
74
  const hookPath = join(hooksDir, hookFile);
73
75
  let isExecutable = false;
@@ -1 +1 @@
1
- {"version":3,"file":"validate-install.js","sourceRoot":"","sources":["../../src/core/validate-install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate-install.js","sourceRoot":"","sources":["../../src/core/validate-install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACnF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAOnD,SAAS,KAAK,CAAC,KAAa,EAAE,IAAa,EAAE,MAAgB;IAC5D,IAAI,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,sDAAsD;AACtD,SAAS,YAAY,CAAC,GAAW;IAChC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC;QACJ,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,CAAC,CAAC;IACV,CAAC;AACF,CAAC;AAED,2CAA2C;AAC3C,SAAS,YAAY,CAAC,GAAW;IAChC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC;QACJ,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YACpC,IAAI,CAAC;gBACJ,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7C,CAAC;YAAC,MAAM,CAAC;gBACR,OAAO,KAAK,CAAC;YACd,CAAC;QACF,CAAC,CAAC,CAAC,MAAM,CAAC;IACX,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,CAAC,CAAC;IACV,CAAC;AACF,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,SAAiB;IACzC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAE1C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAE9C,iBAAiB;IACjB,KAAK,CAAC,2BAA2B,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/D,KAAK,CAAC,kBAAkB,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC5E,KAAK,CAAC,4BAA4B,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAE7F,uCAAuC;IACvC,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACxD,KAAK,CAAC,WAAW,UAAU,mBAAmB,EAAE,UAAU,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;IAE1E,kCAAkC;IAClC,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACxD,KAAK,CAAC,WAAW,UAAU,yBAAyB,EAAE,UAAU,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;IAEhF,WAAW;IACX,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACrC,KAAK,CAAC,2BAA2B,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAEtD,QAAQ;IACR,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACtD,KAAK,CAAC,UAAU,SAAS,kBAAkB,EAAE,SAAS,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;IAErE,QAAQ;IACR,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACtD,KAAK,CAAC,UAAU,SAAS,mBAAmB,EAAE,SAAS,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;IAEvE,iCAAiC;IACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,uFAAuF;QACvF,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACvF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC1C,IAAI,YAAY,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC;gBACJ,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;gBACrC,YAAY,GAAG,IAAI,CAAC;YACrB,CAAC;YAAC,MAAM,CAAC;gBACR,iBAAiB;YAClB,CAAC;YACD,KAAK,CAAC,QAAQ,QAAQ,gBAAgB,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QAC/D,CAAC;IACF,CAAC;SAAM,CAAC;QACP,KAAK,CAAC,wBAAwB,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,UAAU;IACV,KAAK,CAAC,0BAA0B,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAE/E,WAAW;IACX,KAAK,CAAC,sBAAsB,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAEjF,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CACV,KAAK;QACJ,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAAE;QACjD,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,iBAAiB,CAAC,CAAC,EAAE,CAC9D,CAAC;IAEF,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC1B,CAAC"}