mewkit 1.10.2 → 1.10.4
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.
- package/README.md +49 -4
- package/dist/commands/budget.d.ts +13 -0
- package/dist/commands/budget.d.ts.map +1 -1
- package/dist/commands/budget.js +45 -0
- package/dist/commands/budget.js.map +1 -1
- package/dist/commands/doctor-checks.d.ts +1 -1
- package/dist/commands/doctor-checks.d.ts.map +1 -1
- package/dist/commands/doctor-checks.js +7 -1
- package/dist/commands/doctor-checks.js.map +1 -1
- package/dist/commands/doctor-hard-gates.d.ts +3 -0
- package/dist/commands/doctor-hard-gates.d.ts.map +1 -0
- package/dist/commands/doctor-hard-gates.js +170 -0
- package/dist/commands/doctor-hard-gates.js.map +1 -0
- package/dist/commands/doctor.d.ts +1 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +77 -3
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/evolve.d.ts +11 -0
- package/dist/commands/evolve.d.ts.map +1 -0
- package/dist/commands/evolve.js +63 -0
- package/dist/commands/evolve.js.map +1 -0
- package/dist/commands/health.d.ts +14 -0
- package/dist/commands/health.d.ts.map +1 -0
- package/dist/commands/health.js +193 -0
- package/dist/commands/health.js.map +1 -0
- package/dist/commands/init.d.ts +6 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +64 -3
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/inventory.d.ts +13 -0
- package/dist/commands/inventory.d.ts.map +1 -0
- package/dist/commands/inventory.js +85 -0
- package/dist/commands/inventory.js.map +1 -0
- package/dist/commands/pack-helpers.d.ts +37 -0
- package/dist/commands/pack-helpers.d.ts.map +1 -0
- package/dist/commands/pack-helpers.js +105 -0
- package/dist/commands/pack-helpers.js.map +1 -0
- package/dist/commands/pack.d.ts +9 -0
- package/dist/commands/pack.d.ts.map +1 -0
- package/dist/commands/pack.js +160 -0
- package/dist/commands/pack.js.map +1 -0
- package/dist/commands/policy.d.ts +8 -0
- package/dist/commands/policy.d.ts.map +1 -0
- package/dist/commands/policy.js +65 -0
- package/dist/commands/policy.js.map +1 -0
- package/dist/commands/portability.d.ts +7 -0
- package/dist/commands/portability.d.ts.map +1 -0
- package/dist/commands/portability.js +50 -0
- package/dist/commands/portability.js.map +1 -0
- package/dist/commands/providers.d.ts +6 -0
- package/dist/commands/providers.d.ts.map +1 -0
- package/dist/commands/providers.js +94 -0
- package/dist/commands/providers.js.map +1 -0
- package/dist/commands/reflect.d.ts +14 -0
- package/dist/commands/reflect.d.ts.map +1 -0
- package/dist/commands/reflect.js +135 -0
- package/dist/commands/reflect.js.map +1 -0
- package/dist/commands/simulate.d.ts +14 -0
- package/dist/commands/simulate.d.ts.map +1 -0
- package/dist/commands/simulate.js +86 -0
- package/dist/commands/simulate.js.map +1 -0
- package/dist/commands/upgrade.d.ts.map +1 -1
- package/dist/commands/upgrade.js +32 -6
- package/dist/commands/upgrade.js.map +1 -1
- package/dist/commands/validate.d.ts +29 -0
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +242 -94
- package/dist/commands/validate.js.map +1 -1
- package/dist/core/build-inventory.d.ts +71 -0
- package/dist/core/build-inventory.d.ts.map +1 -0
- package/dist/core/build-inventory.js +222 -0
- package/dist/core/build-inventory.js.map +1 -0
- package/dist/core/check-packs.d.ts +13 -0
- package/dist/core/check-packs.d.ts.map +1 -0
- package/dist/core/check-packs.js +131 -0
- package/dist/core/check-packs.js.map +1 -0
- package/dist/core/check-stale-index.d.ts +35 -0
- package/dist/core/check-stale-index.d.ts.map +1 -0
- package/dist/core/check-stale-index.js +132 -0
- package/dist/core/check-stale-index.js.map +1 -0
- package/dist/core/check-workflow-drift.d.ts +49 -0
- package/dist/core/check-workflow-drift.d.ts.map +1 -0
- package/dist/core/check-workflow-drift.js +226 -0
- package/dist/core/check-workflow-drift.js.map +1 -0
- package/dist/core/compute-checksums.d.ts +7 -0
- package/dist/core/compute-checksums.d.ts.map +1 -1
- package/dist/core/compute-checksums.js +12 -3
- package/dist/core/compute-checksums.js.map +1 -1
- package/dist/core/context-budget.d.ts +9 -0
- package/dist/core/context-budget.d.ts.map +1 -0
- package/dist/core/context-budget.js +46 -0
- package/dist/core/context-budget.js.map +1 -0
- package/dist/core/event-log.d.ts +44 -0
- package/dist/core/event-log.d.ts.map +1 -0
- package/dist/core/event-log.js +169 -0
- package/dist/core/event-log.js.map +1 -0
- package/dist/core/evolution/event-clusters.d.ts +4 -0
- package/dist/core/evolution/event-clusters.d.ts.map +1 -0
- package/dist/core/evolution/event-clusters.js +82 -0
- package/dist/core/evolution/event-clusters.js.map +1 -0
- package/dist/core/evolution/recommendation-renderer.d.ts +3 -0
- package/dist/core/evolution/recommendation-renderer.d.ts.map +1 -0
- package/dist/core/evolution/recommendation-renderer.js +24 -0
- package/dist/core/evolution/recommendation-renderer.js.map +1 -0
- package/dist/core/evolution/review-failure-clusters.d.ts +10 -0
- package/dist/core/evolution/review-failure-clusters.d.ts.map +1 -0
- package/dist/core/evolution/review-failure-clusters.js +30 -0
- package/dist/core/evolution/review-failure-clusters.js.map +1 -0
- package/dist/core/evolution/suggestions.d.ts +24 -0
- package/dist/core/evolution/suggestions.d.ts.map +1 -0
- package/dist/core/evolution/suggestions.js +11 -0
- package/dist/core/evolution/suggestions.js.map +1 -0
- package/dist/core/file-lock.d.ts +3 -0
- package/dist/core/file-lock.d.ts.map +1 -0
- package/dist/core/file-lock.js +84 -0
- package/dist/core/file-lock.js.map +1 -0
- package/dist/core/gate-policy.d.ts +20 -0
- package/dist/core/gate-policy.d.ts.map +1 -0
- package/dist/core/gate-policy.js +64 -0
- package/dist/core/gate-policy.js.map +1 -0
- package/dist/core/harness-scaffold.d.ts +29 -0
- package/dist/core/harness-scaffold.d.ts.map +1 -0
- package/dist/core/harness-scaffold.js +53 -0
- package/dist/core/harness-scaffold.js.map +1 -0
- package/dist/core/hook-runner.d.ts +69 -0
- package/dist/core/hook-runner.d.ts.map +1 -0
- package/dist/core/hook-runner.js +95 -0
- package/dist/core/hook-runner.js.map +1 -0
- package/dist/core/index.d.ts +6 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +6 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/install-metadata-backref.d.ts +14 -0
- package/dist/core/install-metadata-backref.d.ts.map +1 -0
- package/dist/core/install-metadata-backref.js +39 -0
- package/dist/core/install-metadata-backref.js.map +1 -0
- package/dist/core/install-metadata-writer.d.ts +4 -0
- package/dist/core/install-metadata-writer.d.ts.map +1 -0
- package/dist/core/install-metadata-writer.js +31 -0
- package/dist/core/install-metadata-writer.js.map +1 -0
- package/dist/core/install-metadata.d.ts +173 -0
- package/dist/core/install-metadata.d.ts.map +1 -0
- package/dist/core/install-metadata.js +191 -0
- package/dist/core/install-metadata.js.map +1 -0
- package/dist/core/is-hook-script.d.ts +2 -0
- package/dist/core/is-hook-script.d.ts.map +1 -0
- package/dist/core/is-hook-script.js +45 -0
- package/dist/core/is-hook-script.js.map +1 -0
- package/dist/core/pack-manifest.d.ts +48 -0
- package/dist/core/pack-manifest.d.ts.map +1 -0
- package/dist/core/pack-manifest.js +126 -0
- package/dist/core/pack-manifest.js.map +1 -0
- package/dist/core/pack-resolver.d.ts +18 -0
- package/dist/core/pack-resolver.d.ts.map +1 -0
- package/dist/core/pack-resolver.js +144 -0
- package/dist/core/pack-resolver.js.map +1 -0
- package/dist/core/portability-matrix.d.ts +17 -0
- package/dist/core/portability-matrix.d.ts.map +1 -0
- package/dist/core/portability-matrix.js +31 -0
- package/dist/core/portability-matrix.js.map +1 -0
- package/dist/core/release-metadata.d.ts +80 -0
- package/dist/core/release-metadata.d.ts.map +1 -0
- package/dist/core/release-metadata.js +70 -0
- package/dist/core/release-metadata.js.map +1 -0
- package/dist/core/simulation-runner.d.ts +93 -0
- package/dist/core/simulation-runner.d.ts.map +1 -0
- package/dist/core/simulation-runner.js +161 -0
- package/dist/core/simulation-runner.js.map +1 -0
- package/dist/core/smart-update.d.ts +32 -0
- package/dist/core/smart-update.d.ts.map +1 -1
- package/dist/core/smart-update.js +239 -47
- package/dist/core/smart-update.js.map +1 -1
- package/dist/core/usage/usage-analyzer.d.ts +18 -0
- package/dist/core/usage/usage-analyzer.d.ts.map +1 -0
- package/dist/core/usage/usage-analyzer.js +41 -0
- package/dist/core/usage/usage-analyzer.js.map +1 -0
- package/dist/core/validate-install.d.ts.map +1 -1
- package/dist/core/validate-install.js +3 -1
- package/dist/core/validate-install.js.map +1 -1
- package/dist/index.js +91 -4
- package/dist/index.js.map +1 -1
- package/dist/memory/archive.d.ts +9 -0
- package/dist/memory/archive.d.ts.map +1 -0
- package/dist/memory/archive.js +42 -0
- package/dist/memory/archive.js.map +1 -0
- package/dist/memory/compact.d.ts +9 -0
- package/dist/memory/compact.d.ts.map +1 -0
- package/dist/memory/compact.js +33 -0
- package/dist/memory/compact.js.map +1 -0
- package/dist/memory/conflicts.d.ts +8 -0
- package/dist/memory/conflicts.d.ts.map +1 -0
- package/dist/memory/conflicts.js +28 -0
- package/dist/memory/conflicts.js.map +1 -0
- package/dist/memory/promote.d.ts +8 -0
- package/dist/memory/promote.d.ts.map +1 -0
- package/dist/memory/promote.js +10 -0
- package/dist/memory/promote.js.map +1 -0
- package/dist/memory/store-utils.d.ts +14 -0
- package/dist/memory/store-utils.d.ts.map +1 -0
- package/dist/memory/store-utils.js +44 -0
- package/dist/memory/store-utils.js.map +1 -0
- package/dist/migrate/converters/md-to-codex-rules.d.ts.map +1 -1
- package/dist/migrate/converters/md-to-codex-rules.js +30 -0
- package/dist/migrate/converters/md-to-codex-rules.js.map +1 -1
- package/dist/migrate/migrate-orchestrator.d.ts.map +1 -1
- package/dist/migrate/migrate-orchestrator.js +6 -2
- package/dist/migrate/migrate-orchestrator.js.map +1 -1
- package/dist/migrate/portability-policy.d.ts.map +1 -1
- package/dist/migrate/portability-policy.js +44 -23
- package/dist/migrate/portability-policy.js.map +1 -1
- package/dist/migrate/portable-installer.d.ts +3 -0
- package/dist/migrate/portable-installer.d.ts.map +1 -1
- package/dist/migrate/portable-installer.js +3 -0
- package/dist/migrate/portable-installer.js.map +1 -1
- package/dist/migrate/provider-support-summary.d.ts +49 -0
- package/dist/migrate/provider-support-summary.d.ts.map +1 -0
- package/dist/migrate/provider-support-summary.js +98 -0
- package/dist/migrate/provider-support-summary.js.map +1 -0
- package/dist/migrate/reconcile/portable-registry-lock.d.ts.map +1 -1
- package/dist/migrate/reconcile/portable-registry-lock.js +6 -78
- package/dist/migrate/reconcile/portable-registry-lock.js.map +1 -1
- package/dist/migrate/reconcile/portable-registry.d.ts +24 -6
- package/dist/migrate/reconcile/portable-registry.d.ts.map +1 -1
- package/dist/migrate/reconcile/portable-registry.js +7 -1
- package/dist/migrate/reconcile/portable-registry.js.map +1 -1
- package/dist/migrate/skill-directory-installer.d.ts +2 -0
- package/dist/migrate/skill-directory-installer.d.ts.map +1 -1
- package/dist/migrate/skill-directory-installer.js +3 -0
- package/dist/migrate/skill-directory-installer.js.map +1 -1
- package/dist/migrate/types.d.ts +4 -4
- package/package.json +1 -1
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { existsSync, readFileSync, writeFileSync, mkdirSync, unlinkSync } from "node:fs";
|
|
2
|
-
import { join } from "node:path";
|
|
2
|
+
import { join, relative, isAbsolute } from "node:path";
|
|
3
3
|
import * as log from "./core-logger.js";
|
|
4
4
|
import { processTemplate } from "./substitute-placeholders.js";
|
|
5
5
|
import { mergeSettingsFile } from "./merge-settings.js";
|
|
6
|
-
import {
|
|
6
|
+
import { writeManifest, hashFile, classifyLayer } from "./compute-checksums.js";
|
|
7
7
|
import { loadIgnorePatterns, walkDir, copyFile } from "./smart-update-utils.js";
|
|
8
8
|
import { findOrphans } from "./find-orphans.js";
|
|
9
|
+
import { readReleaseMetadata, toOrphanManifest, mapPathToLastModified } from "./release-metadata.js";
|
|
10
|
+
import { readInstallMetadata, readLegacyManifestMetadata, buildInstallMetadata, indexByPath, CorruptInstallMetadataError, } from "./install-metadata.js";
|
|
11
|
+
import { writeInstallMetadata } from "./install-metadata-writer.js";
|
|
9
12
|
/**
|
|
10
13
|
* Smart update from a downloaded release directory.
|
|
11
14
|
*
|
|
@@ -18,7 +21,13 @@ import { findOrphans } from "./find-orphans.js";
|
|
|
18
21
|
export async function smartUpdate(config, sourceDir, targetDir, dryRun, force = false, options = {}) {
|
|
19
22
|
const cleanup = options.cleanup !== false; // default-on
|
|
20
23
|
const assumeYes = options.assumeYes === true;
|
|
21
|
-
const
|
|
24
|
+
const targetClaudeDir = join(targetDir, ".claude");
|
|
25
|
+
// Single pre-write read of the installed state. Both the user-edit baseline
|
|
26
|
+
// and the orphan-cleanup guard are derived from THIS value and never re-read
|
|
27
|
+
// after any write, so write ordering cannot affect either decision.
|
|
28
|
+
const prior = force ? { source: "none", meta: null } : readPriorInstallState(targetClaudeDir);
|
|
29
|
+
const priorSource = prior.source;
|
|
30
|
+
const priorEntriesByPath = indexByPath(prior.meta?.files ?? []);
|
|
22
31
|
const stats = {
|
|
23
32
|
updated: 0,
|
|
24
33
|
skipped: 0,
|
|
@@ -26,11 +35,18 @@ export async function smartUpdate(config, sourceDir, targetDir, dryRun, force =
|
|
|
26
35
|
userModified: [],
|
|
27
36
|
orphansDeleted: [],
|
|
28
37
|
orphansSkipped: [],
|
|
38
|
+
deletionsDeleted: [],
|
|
39
|
+
deletionsSkipped: [],
|
|
40
|
+
deletionsAlreadyGone: [],
|
|
41
|
+
deletionsPreview: [],
|
|
42
|
+
profileTrimmed: [],
|
|
43
|
+
profileTrimSkipped: [],
|
|
44
|
+
profileTrimPreview: [],
|
|
29
45
|
};
|
|
30
|
-
if (!
|
|
31
|
-
log.warn("No
|
|
46
|
+
if (priorSource === "none" && !force && existsSync(targetClaudeDir)) {
|
|
47
|
+
log.warn("No installed metadata found — will treat all existing files as unmodified.");
|
|
32
48
|
}
|
|
33
|
-
|
|
49
|
+
let settingsMerged = false;
|
|
34
50
|
const isIgnored = loadIgnorePatterns(targetDir);
|
|
35
51
|
// Source .claude/ from downloaded release
|
|
36
52
|
const claudeSrc = join(sourceDir, ".claude");
|
|
@@ -46,6 +62,13 @@ export async function smartUpdate(config, sourceDir, targetDir, dryRun, force =
|
|
|
46
62
|
for (const { manifestPath, targetRelPath, srcPath } of claudeFiles) {
|
|
47
63
|
const destPath = join(targetDir, targetRelPath);
|
|
48
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
|
+
}
|
|
49
72
|
if (isIgnored(targetRelPath)) {
|
|
50
73
|
log.debug(`Ignored (protected): ${targetRelPath}`);
|
|
51
74
|
stats.skipped++;
|
|
@@ -54,6 +77,7 @@ export async function smartUpdate(config, sourceDir, targetDir, dryRun, force =
|
|
|
54
77
|
// settings.json uses append-only merge
|
|
55
78
|
if (manifestPath === "settings.json") {
|
|
56
79
|
mergeSettingsFile(srcPath, destPath, dryRun);
|
|
80
|
+
settingsMerged = true;
|
|
57
81
|
stats.updated++;
|
|
58
82
|
continue;
|
|
59
83
|
}
|
|
@@ -76,10 +100,12 @@ export async function smartUpdate(config, sourceDir, targetDir, dryRun, force =
|
|
|
76
100
|
stats.added++;
|
|
77
101
|
continue;
|
|
78
102
|
}
|
|
79
|
-
// File exists — check if user modified it
|
|
103
|
+
// File exists — check if user modified it. The prior baseline hash comes
|
|
104
|
+
// from the canonical reader (legacy `sha256` is mapped to `checksum`), so
|
|
105
|
+
// this comparison is unchanged in meaning from the legacy manifest path.
|
|
80
106
|
const currentHash = hashFile(destPath);
|
|
81
|
-
const
|
|
82
|
-
if (
|
|
107
|
+
const priorEntry = priorEntriesByPath[manifestPath];
|
|
108
|
+
if (priorEntry && currentHash !== priorEntry.checksum) {
|
|
83
109
|
log.debug(`Skipped (user-modified): ${targetRelPath}`);
|
|
84
110
|
stats.userModified.push(targetRelPath);
|
|
85
111
|
stats.skipped++;
|
|
@@ -174,27 +200,98 @@ export async function smartUpdate(config, sourceDir, targetDir, dryRun, force =
|
|
|
174
200
|
mkdirSync(join(targetDir, ".claude", "memory"), { recursive: true });
|
|
175
201
|
mkdirSync(join(targetDir, ".claude", "logs"), { recursive: true });
|
|
176
202
|
}
|
|
203
|
+
// Single release read, reused by the deletions pass and the metadata write.
|
|
204
|
+
const release = readReleaseMetadataSafe(sourceDir);
|
|
205
|
+
// Explicit-deletions pass — runs BEFORE orphan cleanup. A path listed in the
|
|
206
|
+
// release `deletions[]` is removed only when the PRE-WRITE installed metadata
|
|
207
|
+
// marks it kit-owned AND its on-disk hash is still pristine. Ownership comes
|
|
208
|
+
// from priorEntriesByPath (a file slated for deletion is absent from the new
|
|
209
|
+
// release, so it has no fresh entry). On a fresh install this map is empty, so
|
|
210
|
+
// every gate fails and the pass is a no-op. Suppressed entirely by
|
|
211
|
+
// `--no-cleanup`, the same safety switch as orphan cleanup (deletions are
|
|
212
|
+
// intent, orphan cleanup is heuristic — `--no-cleanup` disables both).
|
|
213
|
+
if (cleanup && release && release.deletions.length > 0) {
|
|
214
|
+
const eligible = [];
|
|
215
|
+
for (const relPath of release.deletions) {
|
|
216
|
+
const dest = join(claudeDir, relPath);
|
|
217
|
+
if (!isWithinDir(claudeDir, dest)) {
|
|
218
|
+
stats.deletionsSkipped.push(relPath);
|
|
219
|
+
continue;
|
|
220
|
+
}
|
|
221
|
+
if (!existsSync(dest)) {
|
|
222
|
+
stats.deletionsAlreadyGone.push(relPath);
|
|
223
|
+
continue;
|
|
224
|
+
}
|
|
225
|
+
const entry = priorEntriesByPath[relPath];
|
|
226
|
+
if (!entry || entry.owner !== "meowkit") {
|
|
227
|
+
stats.deletionsSkipped.push(relPath);
|
|
228
|
+
continue;
|
|
229
|
+
}
|
|
230
|
+
if (hashFile(dest) !== entry.checksum) {
|
|
231
|
+
stats.deletionsSkipped.push(relPath); // user-modified — preserve
|
|
232
|
+
continue;
|
|
233
|
+
}
|
|
234
|
+
eligible.push(relPath);
|
|
235
|
+
}
|
|
236
|
+
if (eligible.length > 0) {
|
|
237
|
+
if (dryRun) {
|
|
238
|
+
stats.deletionsPreview.push(...eligible);
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
let proceed;
|
|
242
|
+
if (assumeYes || force)
|
|
243
|
+
proceed = true;
|
|
244
|
+
else if (options.confirmOrphans)
|
|
245
|
+
proceed = await options.confirmOrphans(eligible);
|
|
246
|
+
else
|
|
247
|
+
proceed = await confirmDelete(eligible.length);
|
|
248
|
+
if (!proceed) {
|
|
249
|
+
stats.deletionsSkipped.push(...eligible);
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
for (const relPath of eligible) {
|
|
253
|
+
try {
|
|
254
|
+
unlinkSync(join(claudeDir, relPath));
|
|
255
|
+
stats.deletionsDeleted.push(relPath);
|
|
256
|
+
}
|
|
257
|
+
catch (err) {
|
|
258
|
+
log.warn(`Failed to delete ${relPath}: ${err.message}`);
|
|
259
|
+
stats.deletionsSkipped.push(relPath);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
log.info(`Removed ${stats.deletionsDeleted.length} file(s) marked for deletion by the release.`);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
177
267
|
// Orphan cleanup pass — removes user-disk files no longer in the release
|
|
178
268
|
// manifest. Scoped to kit-owned dirs (rules/, skills/, agents/, hooks/);
|
|
179
269
|
// user-private state (memory/, logs/, .env, secrets/) is never inspected.
|
|
180
270
|
// Default-on; opt out via `--no-cleanup`. Confirmation required unless
|
|
181
271
|
// `--yes` / `--force`.
|
|
182
272
|
//
|
|
183
|
-
// Safety gate: only run when a prior
|
|
184
|
-
//
|
|
185
|
-
//
|
|
186
|
-
//
|
|
187
|
-
//
|
|
188
|
-
//
|
|
189
|
-
|
|
273
|
+
// Safety gate: only run when a prior MeowKit install is detected. Without it
|
|
274
|
+
// the dir is either fresh (no orphans possible) or owned by another, unrelated
|
|
275
|
+
// tool — in the latter case every existing file would be flagged and we'd offer
|
|
276
|
+
// to delete the user's other toolkit. The guard value is taken
|
|
277
|
+
// from the SINGLE pre-write read at the top of smartUpdate so a later
|
|
278
|
+
// metadata write cannot flip it. A version-only `metadata.json`
|
|
279
|
+
// (`legacy-metadata`) does NOT count — it can come from the old pipeline on a
|
|
280
|
+
// non-checksum install — so only `new` and `legacy-manifest` enable cleanup.
|
|
281
|
+
const hasPriorMeowkitInstall = priorSource === "new" || priorSource === "legacy-manifest";
|
|
190
282
|
if (cleanup && hasPriorMeowkitInstall) {
|
|
191
|
-
const releaseManifest =
|
|
283
|
+
const releaseManifest = release ? toOrphanManifest(release) : null;
|
|
192
284
|
if (!releaseManifest) {
|
|
193
285
|
log.warn("release-manifest.json not found in source release — orphan cleanup skipped. " +
|
|
194
286
|
"Pass --no-cleanup to silence this warning, or report the missing manifest as a release-pipeline bug.");
|
|
195
287
|
}
|
|
196
288
|
else {
|
|
197
|
-
|
|
289
|
+
// Paths declared in `deletions[]` are owned by the deletions pass above —
|
|
290
|
+
// whatever it decided (delete / preserve user-modified) is authoritative.
|
|
291
|
+
// Excluding them here prevents orphan cleanup from re-deleting a file the
|
|
292
|
+
// deletions gate deliberately preserved (e.g. a user-modified listed path).
|
|
293
|
+
const deletionSet = new Set(release?.deletions ?? []);
|
|
294
|
+
const orphans = findOrphans({ claudeDir, manifest: releaseManifest }).filter((o) => !deletionSet.has(o));
|
|
198
295
|
if (orphans.length > 0) {
|
|
199
296
|
const useCallback = options.confirmOrphans && !dryRun && !assumeYes && !force;
|
|
200
297
|
if (!useCallback) {
|
|
@@ -234,48 +331,143 @@ export async function smartUpdate(config, sourceDir, targetDir, dryRun, force =
|
|
|
234
331
|
}
|
|
235
332
|
}
|
|
236
333
|
}
|
|
237
|
-
//
|
|
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
|
+
}
|
|
391
|
+
// Write installed metadata. `dryRun` writes neither file (matches today).
|
|
238
392
|
if (!dryRun) {
|
|
239
|
-
const
|
|
240
|
-
|
|
393
|
+
const meta = buildInstallMetadata(claudeDir, {
|
|
394
|
+
version: release?.version ?? "unknown",
|
|
395
|
+
sourceTimestamps: mapPathToLastModified(release),
|
|
396
|
+
priorEntriesByPath,
|
|
397
|
+
scope: "local",
|
|
398
|
+
mergedSettings: settingsMerged ? ["settings.json"] : undefined,
|
|
399
|
+
profile: options.profile,
|
|
400
|
+
packs: options.packs,
|
|
401
|
+
});
|
|
402
|
+
try {
|
|
403
|
+
await writeInstallMetadata(claudeDir, meta);
|
|
404
|
+
// One-release rollback dual-write of the legacy manifest. Only after the
|
|
405
|
+
// canonical write succeeds — if the canonical write fails, the previous
|
|
406
|
+
// legacy manifest stays on disk so the next run still detects a prior install.
|
|
407
|
+
// Derived from the entries just computed, avoiding a second scan+hash of .claude/.
|
|
408
|
+
writeManifest(claudeDir, legacyManifestFromInstallMeta(meta));
|
|
409
|
+
}
|
|
410
|
+
catch (err) {
|
|
411
|
+
log.warn(`Failed to write installed metadata: ${err.message}`);
|
|
412
|
+
}
|
|
241
413
|
}
|
|
242
|
-
log.setData("update",
|
|
243
|
-
updated: stats.updated,
|
|
244
|
-
skipped: stats.skipped,
|
|
245
|
-
added: stats.added,
|
|
246
|
-
userModified: stats.userModified,
|
|
247
|
-
orphansDeleted: stats.orphansDeleted,
|
|
248
|
-
orphansSkipped: stats.orphansSkipped,
|
|
249
|
-
});
|
|
414
|
+
log.setData("update", stats);
|
|
250
415
|
return stats;
|
|
251
416
|
}
|
|
417
|
+
/**
|
|
418
|
+
* Project canonical install metadata onto the legacy `Manifest` shape for the
|
|
419
|
+
* one-release dual-write, reproducing `buildManifest`'s output without a second
|
|
420
|
+
* directory walk (the hashes are already in `meta.files`).
|
|
421
|
+
*/
|
|
422
|
+
function legacyManifestFromInstallMeta(meta) {
|
|
423
|
+
const checksums = {};
|
|
424
|
+
for (const f of meta.files) {
|
|
425
|
+
checksums[f.path] = {
|
|
426
|
+
sha256: f.checksum,
|
|
427
|
+
layer: f.layer,
|
|
428
|
+
owner: f.layer === "user" ? "user" : "meowkit",
|
|
429
|
+
baseChecksum: f.checksum,
|
|
430
|
+
sourceChecksum: f.checksum,
|
|
431
|
+
targetChecksum: f.checksum,
|
|
432
|
+
installedAt: meta.installedAt,
|
|
433
|
+
};
|
|
434
|
+
}
|
|
435
|
+
return { version: "0.2.0", generatedAt: meta.installedAt, checksums };
|
|
436
|
+
}
|
|
252
437
|
function toManifestPath(relPath) {
|
|
253
438
|
return relPath.replace(/\\/g, "/").replace(/^\.claude\//, "");
|
|
254
439
|
}
|
|
440
|
+
/** True when `target` resolves to a path strictly inside `dir` (no `..` escape, no symlink-free check needed for an exact listed path). */
|
|
441
|
+
function isWithinDir(dir, target) {
|
|
442
|
+
const rel = relative(dir, target);
|
|
443
|
+
return rel !== "" && !rel.startsWith("..") && !isAbsolute(rel);
|
|
444
|
+
}
|
|
255
445
|
/**
|
|
256
|
-
*
|
|
257
|
-
*
|
|
258
|
-
*
|
|
259
|
-
*
|
|
446
|
+
* Read the prior installed state for the user-edit baseline and orphan guard.
|
|
447
|
+
* If the canonical metadata.json is present but corrupt, fall back to the legacy
|
|
448
|
+
* manifest so user-edit protection still has a baseline, rather than treating
|
|
449
|
+
* every file as unmodified.
|
|
260
450
|
*/
|
|
261
|
-
function
|
|
262
|
-
const manifestPath = join(sourceDir, "release-manifest.json");
|
|
263
|
-
if (!existsSync(manifestPath))
|
|
264
|
-
return null;
|
|
451
|
+
function readPriorInstallState(claudeDir) {
|
|
265
452
|
try {
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
453
|
+
return readInstallMetadata(claudeDir);
|
|
454
|
+
}
|
|
455
|
+
catch (err) {
|
|
456
|
+
if (err instanceof CorruptInstallMetadataError) {
|
|
457
|
+
log.warn(`Installed metadata is corrupt (${err.detail}); falling back to legacy manifest detection.`);
|
|
458
|
+
const legacy = readLegacyManifestMetadata(claudeDir);
|
|
459
|
+
return legacy ? { source: "legacy-manifest", meta: legacy } : { source: "none", meta: null };
|
|
270
460
|
}
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
461
|
+
throw err;
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
/** Parse the release manifest, treating a corrupt one as absent (version becomes "unknown"). */
|
|
465
|
+
function readReleaseMetadataSafe(sourceDir) {
|
|
466
|
+
try {
|
|
467
|
+
return readReleaseMetadata(sourceDir);
|
|
276
468
|
}
|
|
277
469
|
catch (err) {
|
|
278
|
-
log.warn(`Failed to
|
|
470
|
+
log.warn(`Failed to read release-manifest.json for installed metadata: ${err.message}`);
|
|
279
471
|
return null;
|
|
280
472
|
}
|
|
281
473
|
}
|
|
@@ -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":"
|
|
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
|
-
|
|
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":"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;
|
|
1
|
+
{"version":3,"file":"validate-install.js","sourceRoot":"","sources":["../../src/core/validate-install.ts"],"names":[],"mappings":"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"}
|