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.
- package/README.md +56 -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 +138 -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 +12 -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 +63 -3
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/inventory.d.ts +17 -0
- package/dist/commands/inventory.d.ts.map +1 -0
- package/dist/commands/inventory.js +114 -0
- package/dist/commands/inventory.js.map +1 -0
- package/dist/commands/memory.d.ts +3 -0
- package/dist/commands/memory.d.ts.map +1 -1
- package/dist/commands/memory.js +67 -0
- package/dist/commands/memory.js.map +1 -1
- 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 +11 -0
- package/dist/commands/pack.d.ts.map +1 -0
- package/dist/commands/pack.js +192 -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/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 +22 -1
- package/dist/commands/upgrade.js.map +1 -1
- package/dist/commands/validate.d.ts +28 -0
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +170 -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/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/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 +2 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +2 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/install-metadata.d.ts +15 -0
- package/dist/core/install-metadata.d.ts.map +1 -1
- package/dist/core/install-metadata.js +11 -0
- package/dist/core/install-metadata.js.map +1 -1
- 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/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 +24 -0
- package/dist/core/smart-update.d.ts.map +1 -1
- package/dist/core/smart-update.js +69 -0
- 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 +175 -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/types.d.ts +2 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-metadata.js","sourceRoot":"","sources":["../../src/core/install-metadata.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,gFAAgF;AAChF,iFAAiF;AACjF,iFAAiF;AACjF,uFAAuF;AACvF,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAG7F,MAAM,CAAC,MAAM,yBAAyB,GAAG,eAAe,CAAC;AAEzD,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACtD,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACxC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACvC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;IACnC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC;IACtC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"install-metadata.js","sourceRoot":"","sources":["../../src/core/install-metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-hook-script.d.ts","sourceRoot":"","sources":["../../src/core/is-hook-script.ts"],"names":[],"mappings":"AAiBA,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CA2B/C"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { statSync, readFileSync } from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
/**
|
|
4
|
+
* True only for actual hook *scripts*. The validators previously treated every
|
|
5
|
+
* `readdirSync(hooksDir)` entry as a hook and ran `accessSync(X_OK)` on it — but the
|
|
6
|
+
* execute bit is also set on directories (traverse), so `lib/`, `handlers/`, `__tests__/`,
|
|
7
|
+
* and non-scripts like `HOOKS_INDEX.md` / `handlers.json` were reported as "Hook executable".
|
|
8
|
+
* This guard is the single definition shared by validate, validate-install, and doctor.
|
|
9
|
+
*
|
|
10
|
+
* A hook script is: a regular FILE, not an index/doc/json sidecar, and either a known
|
|
11
|
+
* script extension (.sh/.cjs/.js/.mjs) OR an extensionless executable with a shell/node shebang.
|
|
12
|
+
*/
|
|
13
|
+
const HOOK_EXTENSIONS = new Set([".sh", ".cjs", ".js", ".mjs"]);
|
|
14
|
+
const EXCLUDED_BASENAMES = new Set(["HOOKS_INDEX.md", "handlers.json"]);
|
|
15
|
+
export function isHookScript(p) {
|
|
16
|
+
let stat;
|
|
17
|
+
try {
|
|
18
|
+
stat = statSync(p);
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
if (!stat.isFile())
|
|
24
|
+
return false; // directories (lib/, handlers/, __tests__/) are never hooks
|
|
25
|
+
const base = path.basename(p);
|
|
26
|
+
if (EXCLUDED_BASENAMES.has(base))
|
|
27
|
+
return false;
|
|
28
|
+
const ext = path.extname(base).toLowerCase();
|
|
29
|
+
if (HOOK_EXTENSIONS.has(ext))
|
|
30
|
+
return true;
|
|
31
|
+
// Allow a legitimately extensionless hook: executable + shell/node shebang.
|
|
32
|
+
if (ext === "") {
|
|
33
|
+
if ((stat.mode & 0o111) === 0)
|
|
34
|
+
return false;
|
|
35
|
+
try {
|
|
36
|
+
const head = readFileSync(p, "utf8").slice(0, 128);
|
|
37
|
+
return /^#!.*\b(sh|bash|dash|node|env)\b/.test(head);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return false; // .md, .json, .txt, …
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=is-hook-script.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-hook-script.js","sourceRoot":"","sources":["../../src/core/is-hook-script.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B;;;;;;;;;GASG;AAEH,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAChE,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC,CAAC;AAExE,MAAM,UAAU,YAAY,CAAC,CAAS;IACrC,IAAI,IAAI,CAAC;IACT,IAAI,CAAC;QACJ,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAC;IACd,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;QAAE,OAAO,KAAK,CAAC,CAAC,4DAA4D;IAE9F,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAE/C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7C,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAE1C,4EAA4E;IAC5E,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QAChB,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAC5C,IAAI,CAAC;YACJ,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACnD,OAAO,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,KAAK,CAAC;QACd,CAAC;IACF,CAAC;IAED,OAAO,KAAK,CAAC,CAAC,sBAAsB;AACrC,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export declare const PACK_MANIFEST_FILENAME = "pack-manifest.json";
|
|
2
|
+
/** Always-installed essentials: non-artifact files, safety rules, core commands. */
|
|
3
|
+
export interface PackBase {
|
|
4
|
+
files: string[];
|
|
5
|
+
globs: string[];
|
|
6
|
+
commands: string[];
|
|
7
|
+
}
|
|
8
|
+
/** A pack derives membership from `owners` plus per-artifact add/exclude overrides. */
|
|
9
|
+
export interface PackDef {
|
|
10
|
+
owners?: string[];
|
|
11
|
+
artifactsAdd?: string[];
|
|
12
|
+
artifactsExclude?: string[];
|
|
13
|
+
}
|
|
14
|
+
export interface PackManifest {
|
|
15
|
+
schemaVersion: string;
|
|
16
|
+
base: PackBase;
|
|
17
|
+
packs: Record<string, PackDef>;
|
|
18
|
+
profiles: Record<string, string[]>;
|
|
19
|
+
}
|
|
20
|
+
/** Reserved profile entry meaning "every pack" — full-tree install. */
|
|
21
|
+
export declare const WILDCARD = "*";
|
|
22
|
+
/** The always-included pseudo-pack name. */
|
|
23
|
+
export declare const BASE_PACK = "base";
|
|
24
|
+
/** Thrown when the manifest is absent, unreadable, or structurally malformed. */
|
|
25
|
+
export declare class PackManifestError extends Error {
|
|
26
|
+
constructor(message: string);
|
|
27
|
+
}
|
|
28
|
+
/** Path to the manifest under a `.claude/` dir (present or absent). */
|
|
29
|
+
export declare function packManifestPath(claudeDir: string): string;
|
|
30
|
+
/** True when the manifest file exists — used by infra-absent guards (pack/upgrade). */
|
|
31
|
+
export declare function hasPackManifest(claudeDir: string): boolean;
|
|
32
|
+
/** Load + shape-validate the manifest. Throws PackManifestError on any defect. */
|
|
33
|
+
export declare function loadPackManifest(claudeDir: string): PackManifest;
|
|
34
|
+
export declare function availableProfiles(manifest: PackManifest): string[];
|
|
35
|
+
export declare function availablePacks(manifest: PackManifest): string[];
|
|
36
|
+
export interface FlattenResult {
|
|
37
|
+
/** Concrete pack names (always includes BASE_PACK), deduped. */
|
|
38
|
+
packs: string[];
|
|
39
|
+
/** True when the profile transitively references the `*` wildcard (= full tree). */
|
|
40
|
+
wildcard: boolean;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Flatten a profile to its concrete pack list. Profile entries may reference a
|
|
44
|
+
* pack, another profile (extends-style), `base`, or the `*` wildcard. Cycles are
|
|
45
|
+
* detected and rejected; unknown refs throw with the available names.
|
|
46
|
+
*/
|
|
47
|
+
export declare function flattenProfile(manifest: PackManifest, profileName: string): FlattenResult;
|
|
48
|
+
//# sourceMappingURL=pack-manifest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pack-manifest.d.ts","sourceRoot":"","sources":["../../src/core/pack-manifest.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,sBAAsB,uBAAuB,CAAC;AAE3D,oFAAoF;AACpF,MAAM,WAAW,QAAQ;IACxB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,uFAAuF;AACvF,MAAM,WAAW,OAAO;IACvB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACnC;AAED,uEAAuE;AACvE,eAAO,MAAM,QAAQ,MAAM,CAAC;AAC5B,4CAA4C;AAC5C,eAAO,MAAM,SAAS,SAAS,CAAC;AAEhC,iFAAiF;AACjF,qBAAa,iBAAkB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM;CAI3B;AAED,uEAAuE;AACvE,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,uFAAuF;AACvF,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,kFAAkF;AAClF,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAYhE;AAmCD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,EAAE,CAElE;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,EAAE,CAE/D;AAED,MAAM,WAAW,aAAa;IAC7B,gEAAgE;IAChE,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,oFAAoF;IACpF,QAAQ,EAAE,OAAO,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,aAAa,CAwCzF"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
// Pack-manifest data model + pure manifest operations (no filesystem walking of
|
|
2
|
+
// artifacts). The manifest (`.claude/pack-manifest.json`) maps install profiles
|
|
3
|
+
// onto the Phase-2 `owner` governance metadata plus an explicit `base` essentials
|
|
4
|
+
// set. This module loads/shape-validates the manifest and flattens a profile to
|
|
5
|
+
// its concrete pack list; pack-resolver.ts turns that into actual file paths.
|
|
6
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
7
|
+
import { join } from "node:path";
|
|
8
|
+
export const PACK_MANIFEST_FILENAME = "pack-manifest.json";
|
|
9
|
+
/** Reserved profile entry meaning "every pack" — full-tree install. */
|
|
10
|
+
export const WILDCARD = "*";
|
|
11
|
+
/** The always-included pseudo-pack name. */
|
|
12
|
+
export const BASE_PACK = "base";
|
|
13
|
+
/** Thrown when the manifest is absent, unreadable, or structurally malformed. */
|
|
14
|
+
export class PackManifestError extends Error {
|
|
15
|
+
constructor(message) {
|
|
16
|
+
super(message);
|
|
17
|
+
this.name = "PackManifestError";
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/** Path to the manifest under a `.claude/` dir (present or absent). */
|
|
21
|
+
export function packManifestPath(claudeDir) {
|
|
22
|
+
return join(claudeDir, PACK_MANIFEST_FILENAME);
|
|
23
|
+
}
|
|
24
|
+
/** True when the manifest file exists — used by infra-absent guards (pack/upgrade). */
|
|
25
|
+
export function hasPackManifest(claudeDir) {
|
|
26
|
+
return existsSync(packManifestPath(claudeDir));
|
|
27
|
+
}
|
|
28
|
+
/** Load + shape-validate the manifest. Throws PackManifestError on any defect. */
|
|
29
|
+
export function loadPackManifest(claudeDir) {
|
|
30
|
+
const file = packManifestPath(claudeDir);
|
|
31
|
+
if (!existsSync(file)) {
|
|
32
|
+
throw new PackManifestError(`pack-manifest.json not found at ${file}`);
|
|
33
|
+
}
|
|
34
|
+
let parsed;
|
|
35
|
+
try {
|
|
36
|
+
parsed = JSON.parse(readFileSync(file, "utf-8"));
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
throw new PackManifestError(`pack-manifest.json is not valid JSON: ${err.message}`);
|
|
40
|
+
}
|
|
41
|
+
return validateManifest(parsed);
|
|
42
|
+
}
|
|
43
|
+
function validateManifest(parsed) {
|
|
44
|
+
if (typeof parsed !== "object" || parsed === null) {
|
|
45
|
+
throw new PackManifestError("manifest root is not an object");
|
|
46
|
+
}
|
|
47
|
+
const m = parsed;
|
|
48
|
+
const base = m.base;
|
|
49
|
+
if (!base || !Array.isArray(base.files) || !Array.isArray(base.globs) || !Array.isArray(base.commands)) {
|
|
50
|
+
throw new PackManifestError("manifest.base must have array fields files/globs/commands");
|
|
51
|
+
}
|
|
52
|
+
if (typeof m.packs !== "object" || m.packs === null) {
|
|
53
|
+
throw new PackManifestError("manifest.packs must be an object");
|
|
54
|
+
}
|
|
55
|
+
if (typeof m.profiles !== "object" || m.profiles === null) {
|
|
56
|
+
throw new PackManifestError("manifest.profiles must be an object");
|
|
57
|
+
}
|
|
58
|
+
const profiles = m.profiles;
|
|
59
|
+
for (const [name, entry] of Object.entries(profiles)) {
|
|
60
|
+
if (!Array.isArray(entry)) {
|
|
61
|
+
throw new PackManifestError(`profile "${name}" must be an array of pack/profile refs`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
schemaVersion: typeof m.schemaVersion === "string" ? m.schemaVersion : "1.0",
|
|
66
|
+
base: {
|
|
67
|
+
files: base.files.map(String),
|
|
68
|
+
globs: base.globs.map(String),
|
|
69
|
+
commands: base.commands.map(String),
|
|
70
|
+
},
|
|
71
|
+
packs: m.packs,
|
|
72
|
+
profiles: m.profiles,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
export function availableProfiles(manifest) {
|
|
76
|
+
return Object.keys(manifest.profiles);
|
|
77
|
+
}
|
|
78
|
+
export function availablePacks(manifest) {
|
|
79
|
+
return Object.keys(manifest.packs);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Flatten a profile to its concrete pack list. Profile entries may reference a
|
|
83
|
+
* pack, another profile (extends-style), `base`, or the `*` wildcard. Cycles are
|
|
84
|
+
* detected and rejected; unknown refs throw with the available names.
|
|
85
|
+
*/
|
|
86
|
+
export function flattenProfile(manifest, profileName) {
|
|
87
|
+
if (!(profileName in manifest.profiles)) {
|
|
88
|
+
throw new PackManifestError(`unknown profile "${profileName}" — available: ${availableProfiles(manifest).join(", ")}`);
|
|
89
|
+
}
|
|
90
|
+
const packs = new Set([BASE_PACK]);
|
|
91
|
+
let wildcard = false;
|
|
92
|
+
const visiting = new Set();
|
|
93
|
+
const walk = (name) => {
|
|
94
|
+
if (visiting.has(name)) {
|
|
95
|
+
throw new PackManifestError(`profile cycle detected at "${name}"`);
|
|
96
|
+
}
|
|
97
|
+
visiting.add(name);
|
|
98
|
+
for (const ref of manifest.profiles[name]) {
|
|
99
|
+
if (ref === WILDCARD) {
|
|
100
|
+
wildcard = true;
|
|
101
|
+
for (const p of availablePacks(manifest))
|
|
102
|
+
packs.add(p);
|
|
103
|
+
}
|
|
104
|
+
else if (ref === BASE_PACK) {
|
|
105
|
+
packs.add(BASE_PACK);
|
|
106
|
+
}
|
|
107
|
+
else if (ref in manifest.packs) {
|
|
108
|
+
// Pack-first: a profile named like its own domain pack (e.g. profile
|
|
109
|
+
// "atlassian" → pack "atlassian") must bind to the pack, not recurse
|
|
110
|
+
// into itself. Profile-extension targets (core, developer) are not
|
|
111
|
+
// pack names, so they fall through to the profile branch below.
|
|
112
|
+
packs.add(ref);
|
|
113
|
+
}
|
|
114
|
+
else if (ref in manifest.profiles) {
|
|
115
|
+
walk(ref);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
throw new PackManifestError(`profile "${name}" references unknown pack/profile "${ref}" — packs: ${availablePacks(manifest).join(", ")}`);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
visiting.delete(name);
|
|
122
|
+
};
|
|
123
|
+
walk(profileName);
|
|
124
|
+
return { packs: [...packs], wildcard };
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=pack-manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pack-manifest.js","sourceRoot":"","sources":["../../src/core/pack-manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type PackManifest } from "./pack-manifest.js";
|
|
2
|
+
export interface ResolveResult {
|
|
3
|
+
/** All `.claude/`-relative paths for the resolved profile/packs (incl. base). */
|
|
4
|
+
paths: Set<string>;
|
|
5
|
+
/** Per-pack path sets (incl. the `base` pseudo-pack) for exclusive-delete math. */
|
|
6
|
+
packMembership: Map<string, Set<string>>;
|
|
7
|
+
/** Concrete pack names resolved (always includes `base`). */
|
|
8
|
+
packs: string[];
|
|
9
|
+
}
|
|
10
|
+
/** Resolve a profile name to its install allow-set. `full`/`*` ⇒ the whole tree. */
|
|
11
|
+
export declare function resolveProfile(claudeDir: string, manifest: PackManifest, profileName: string): Set<string>;
|
|
12
|
+
/** Resolve a profile with per-pack membership exposed (for pack remove exclusivity). */
|
|
13
|
+
export declare function resolveProfileDetailed(claudeDir: string, manifest: PackManifest, profileName: string): ResolveResult;
|
|
14
|
+
/** Resolve an explicit pack list to its install allow-set (always includes base). */
|
|
15
|
+
export declare function resolvePacks(claudeDir: string, manifest: PackManifest, packNames: string[]): Set<string>;
|
|
16
|
+
/** Resolve an explicit pack list with per-pack membership exposed. */
|
|
17
|
+
export declare function resolvePacksDetailed(claudeDir: string, manifest: PackManifest, packNames: string[]): ResolveResult;
|
|
18
|
+
//# sourceMappingURL=pack-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pack-resolver.d.ts","sourceRoot":"","sources":["../../src/core/pack-resolver.ts"],"names":[],"mappings":"AASA,OAAO,EAKN,KAAK,YAAY,EACjB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,aAAa;IAC7B,iFAAiF;IACjF,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnB,mFAAmF;IACnF,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACzC,6DAA6D;IAC7D,KAAK,EAAE,MAAM,EAAE,CAAC;CAChB;AA2GD,oFAAoF;AACpF,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAE1G;AAED,wFAAwF;AACxF,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,aAAa,CASpH;AAED,qFAAqF;AACrF,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAExG;AAED,sEAAsE;AACtE,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,aAAa,CAUlH"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
// Pure profile/pack resolver: turns a profile (or explicit pack list) into the
|
|
2
|
+
// exact set of `.claude/`-relative file paths to install. Membership derives from
|
|
3
|
+
// the Phase-2 `owner` inventory plus the manifest's base essentials and per-pack
|
|
4
|
+
// overrides. No fs writes. The `full`/`*` path short-circuits to the whole tree
|
|
5
|
+
// (collectFiles) for byte parity with today's monolithic install.
|
|
6
|
+
import fs from "node:fs";
|
|
7
|
+
import path from "node:path";
|
|
8
|
+
import { collectFiles } from "./compute-checksums.js";
|
|
9
|
+
import { buildInventory } from "./build-inventory.js";
|
|
10
|
+
import { availablePacks, BASE_PACK, flattenProfile, PackManifestError, } from "./pack-manifest.js";
|
|
11
|
+
/** Normalize to forward slashes so the allow-set matches smartUpdate's manifestPath. */
|
|
12
|
+
function norm(p) {
|
|
13
|
+
return p.replace(/\\/g, "/");
|
|
14
|
+
}
|
|
15
|
+
/** Expand a base glob (`<dir>/**`) against the source tree, or treat as a literal file. */
|
|
16
|
+
function expandBaseGlob(claudeDir, glob) {
|
|
17
|
+
if (glob.endsWith("/**")) {
|
|
18
|
+
const sub = glob.slice(0, -3);
|
|
19
|
+
const abs = path.join(claudeDir, sub);
|
|
20
|
+
return fs.existsSync(abs) ? collectFiles(abs, claudeDir) : [];
|
|
21
|
+
}
|
|
22
|
+
return [glob];
|
|
23
|
+
}
|
|
24
|
+
/** A skill installs its whole directory; every other artifact is a single file. */
|
|
25
|
+
function artifactPaths(claudeDir, entry) {
|
|
26
|
+
if (entry.type === "skill") {
|
|
27
|
+
const dir = path.posix.dirname(entry.path); // skills/<dir>
|
|
28
|
+
const abs = path.join(claudeDir, dir);
|
|
29
|
+
if (fs.existsSync(abs))
|
|
30
|
+
return collectFiles(abs, claudeDir);
|
|
31
|
+
}
|
|
32
|
+
return [entry.path];
|
|
33
|
+
}
|
|
34
|
+
/** Always-installed essentials: explicit files, expanded globs, and core commands. */
|
|
35
|
+
function baseSeed(claudeDir, manifest) {
|
|
36
|
+
const set = new Set();
|
|
37
|
+
for (const f of manifest.base.files)
|
|
38
|
+
set.add(norm(f));
|
|
39
|
+
for (const g of manifest.base.globs)
|
|
40
|
+
for (const f of expandBaseGlob(claudeDir, g))
|
|
41
|
+
set.add(norm(f));
|
|
42
|
+
for (const c of manifest.base.commands)
|
|
43
|
+
set.add(`commands/mk/${c}.md`);
|
|
44
|
+
return set;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Transitive `depends_on` closure across pack boundaries. Inert today — Phase-2
|
|
48
|
+
* populated owner/criticality/status/runtime but no edges — so this currently
|
|
49
|
+
* adds nothing; kept so profiles auto-pull future hard runtime dependencies.
|
|
50
|
+
* Dangling dep ids are tolerated here (P4 `validate --packs` flags them).
|
|
51
|
+
*/
|
|
52
|
+
function closeDependsOn(claudeDir, inv, includedIds, paths) {
|
|
53
|
+
const byId = new Map(inv.entries.map((e) => [e.id, e]));
|
|
54
|
+
let changed = true;
|
|
55
|
+
while (changed) {
|
|
56
|
+
changed = false;
|
|
57
|
+
for (const id of [...includedIds]) {
|
|
58
|
+
for (const dep of byId.get(id)?.dependsOn ?? []) {
|
|
59
|
+
const de = byId.get(dep);
|
|
60
|
+
if (!de || includedIds.has(dep))
|
|
61
|
+
continue;
|
|
62
|
+
includedIds.add(dep);
|
|
63
|
+
for (const ap of artifactPaths(claudeDir, de))
|
|
64
|
+
paths.add(norm(ap));
|
|
65
|
+
changed = true;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/** Core builder: union base + each pack's owner/override-selected artifact files. */
|
|
71
|
+
function buildFromPacks(claudeDir, manifest, packNames, inv) {
|
|
72
|
+
const invIds = new Set(inv.entries.map((e) => e.id));
|
|
73
|
+
const paths = new Set();
|
|
74
|
+
const packMembership = new Map();
|
|
75
|
+
const includedIds = new Set();
|
|
76
|
+
const base = baseSeed(claudeDir, manifest);
|
|
77
|
+
packMembership.set(BASE_PACK, base);
|
|
78
|
+
for (const p of base)
|
|
79
|
+
paths.add(p);
|
|
80
|
+
for (const packName of packNames) {
|
|
81
|
+
if (packName === BASE_PACK)
|
|
82
|
+
continue;
|
|
83
|
+
const pack = manifest.packs[packName];
|
|
84
|
+
if (!pack) {
|
|
85
|
+
throw new PackManifestError(`unknown pack "${packName}" — available: ${availablePacks(manifest).join(", ")}`);
|
|
86
|
+
}
|
|
87
|
+
const owners = new Set(pack.owners ?? []);
|
|
88
|
+
const add = new Set(pack.artifactsAdd ?? []);
|
|
89
|
+
const exclude = new Set(pack.artifactsExclude ?? []);
|
|
90
|
+
for (const id of [...add, ...exclude]) {
|
|
91
|
+
if (!invIds.has(id)) {
|
|
92
|
+
throw new PackManifestError(`pack "${packName}" references unknown artifact id "${id}"`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
const member = new Set();
|
|
96
|
+
for (const e of inv.entries) {
|
|
97
|
+
if (exclude.has(e.id))
|
|
98
|
+
continue;
|
|
99
|
+
if (!owners.has(e.owner) && !add.has(e.id))
|
|
100
|
+
continue;
|
|
101
|
+
includedIds.add(e.id);
|
|
102
|
+
for (const ap of artifactPaths(claudeDir, e)) {
|
|
103
|
+
const np = norm(ap);
|
|
104
|
+
paths.add(np);
|
|
105
|
+
member.add(np);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
packMembership.set(packName, member);
|
|
109
|
+
}
|
|
110
|
+
closeDependsOn(claudeDir, inv, includedIds, paths);
|
|
111
|
+
return { paths, packMembership };
|
|
112
|
+
}
|
|
113
|
+
/** Resolve a profile name to its install allow-set. `full`/`*` ⇒ the whole tree. */
|
|
114
|
+
export function resolveProfile(claudeDir, manifest, profileName) {
|
|
115
|
+
return resolveProfileDetailed(claudeDir, manifest, profileName).paths;
|
|
116
|
+
}
|
|
117
|
+
/** Resolve a profile with per-pack membership exposed (for pack remove exclusivity). */
|
|
118
|
+
export function resolveProfileDetailed(claudeDir, manifest, profileName) {
|
|
119
|
+
const flat = flattenProfile(manifest, profileName);
|
|
120
|
+
if (flat.wildcard) {
|
|
121
|
+
const all = new Set(collectFiles(claudeDir, claudeDir).map(norm));
|
|
122
|
+
return { paths: all, packMembership: new Map([[BASE_PACK, all]]), packs: flat.packs };
|
|
123
|
+
}
|
|
124
|
+
const inv = buildInventory(claudeDir);
|
|
125
|
+
const { paths, packMembership } = buildFromPacks(claudeDir, manifest, flat.packs, inv);
|
|
126
|
+
return { paths, packMembership, packs: flat.packs };
|
|
127
|
+
}
|
|
128
|
+
/** Resolve an explicit pack list to its install allow-set (always includes base). */
|
|
129
|
+
export function resolvePacks(claudeDir, manifest, packNames) {
|
|
130
|
+
return resolvePacksDetailed(claudeDir, manifest, packNames).paths;
|
|
131
|
+
}
|
|
132
|
+
/** Resolve an explicit pack list with per-pack membership exposed. */
|
|
133
|
+
export function resolvePacksDetailed(claudeDir, manifest, packNames) {
|
|
134
|
+
const names = [BASE_PACK, ...packNames.filter((n) => n !== BASE_PACK)];
|
|
135
|
+
for (const n of names) {
|
|
136
|
+
if (n !== BASE_PACK && !(n in manifest.packs)) {
|
|
137
|
+
throw new PackManifestError(`unknown pack "${n}" — available: ${availablePacks(manifest).join(", ")}`);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
const inv = buildInventory(claudeDir);
|
|
141
|
+
const { paths, packMembership } = buildFromPacks(claudeDir, manifest, names, inv);
|
|
142
|
+
return { paths, packMembership, packs: names };
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=pack-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pack-resolver.js","sourceRoot":"","sources":["../../src/core/pack-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type ProviderContractDiagnostic } from "../migrate/provider-contract-diagnostics.js";
|
|
2
|
+
import type { ProviderType } from "../migrate/types.js";
|
|
3
|
+
export interface PortabilityMatrixRow extends ProviderContractDiagnostic {
|
|
4
|
+
displayStatus: "native" | "documented" | "disabled" | "unsupported" | "warn" | "fail";
|
|
5
|
+
}
|
|
6
|
+
export interface PortabilityCoverage {
|
|
7
|
+
providers: number;
|
|
8
|
+
surfaces: number;
|
|
9
|
+
documented: number;
|
|
10
|
+
disabledUnsupported: number;
|
|
11
|
+
warn: number;
|
|
12
|
+
fail: number;
|
|
13
|
+
}
|
|
14
|
+
export declare function buildPortabilityMatrix(): PortabilityMatrixRow[];
|
|
15
|
+
export declare function explainProvider(provider: ProviderType): PortabilityMatrixRow[];
|
|
16
|
+
export declare function coverage(rows?: PortabilityMatrixRow[]): PortabilityCoverage;
|
|
17
|
+
//# sourceMappingURL=portability-matrix.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portability-matrix.d.ts","sourceRoot":"","sources":["../../src/core/portability-matrix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,0BAA0B,EAAE,MAAM,6CAA6C,CAAC;AAClI,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,WAAW,oBAAqB,SAAQ,0BAA0B;IACvE,aAAa,EAAE,QAAQ,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;CACtF;AAED,MAAM,WAAW,mBAAmB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACb;AAWD,wBAAgB,sBAAsB,IAAI,oBAAoB,EAAE,CAE/D;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,GAAG,oBAAoB,EAAE,CAE9E;AAED,wBAAgB,QAAQ,CAAC,IAAI,yBAA2B,GAAG,mBAAmB,CAS7E"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { collectProviderContractDiagnostics } from "../migrate/provider-contract-diagnostics.js";
|
|
2
|
+
function displayStatus(d) {
|
|
3
|
+
if (d.provider === "claude-code" && d.surfaceStatus === "documented" && d.severity === "pass")
|
|
4
|
+
return "native";
|
|
5
|
+
if (d.severity === "fail")
|
|
6
|
+
return "fail";
|
|
7
|
+
if (d.severity === "warn")
|
|
8
|
+
return "warn";
|
|
9
|
+
if (d.surfaceStatus === "documented")
|
|
10
|
+
return "documented";
|
|
11
|
+
if (d.surfaceStatus === "unsupported")
|
|
12
|
+
return "unsupported";
|
|
13
|
+
return "disabled";
|
|
14
|
+
}
|
|
15
|
+
export function buildPortabilityMatrix() {
|
|
16
|
+
return collectProviderContractDiagnostics().map((d) => ({ ...d, displayStatus: displayStatus(d) }));
|
|
17
|
+
}
|
|
18
|
+
export function explainProvider(provider) {
|
|
19
|
+
return buildPortabilityMatrix().filter((r) => r.provider === provider);
|
|
20
|
+
}
|
|
21
|
+
export function coverage(rows = buildPortabilityMatrix()) {
|
|
22
|
+
return {
|
|
23
|
+
providers: new Set(rows.map((r) => r.provider)).size,
|
|
24
|
+
surfaces: rows.length,
|
|
25
|
+
documented: rows.filter((r) => r.surfaceStatus === "documented").length,
|
|
26
|
+
disabledUnsupported: rows.filter((r) => r.surfaceStatus !== "documented" && r.severity !== "fail").length,
|
|
27
|
+
warn: rows.filter((r) => r.severity === "warn").length,
|
|
28
|
+
fail: rows.filter((r) => r.severity === "fail").length,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=portability-matrix.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portability-matrix.js","sourceRoot":"","sources":["../../src/core/portability-matrix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kCAAkC,EAAmC,MAAM,6CAA6C,CAAC;AAgBlI,SAAS,aAAa,CAAC,CAA6B;IACnD,IAAI,CAAC,CAAC,QAAQ,KAAK,aAAa,IAAI,CAAC,CAAC,aAAa,KAAK,YAAY,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM;QAAE,OAAO,QAAQ,CAAC;IAC/G,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IACzC,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IACzC,IAAI,CAAC,CAAC,aAAa,KAAK,YAAY;QAAE,OAAO,YAAY,CAAC;IAC1D,IAAI,CAAC,CAAC,aAAa,KAAK,aAAa;QAAE,OAAO,aAAa,CAAC;IAC5D,OAAO,UAAU,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,sBAAsB;IACrC,OAAO,kCAAkC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrG,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAsB;IACrD,OAAO,sBAAsB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAI,GAAG,sBAAsB,EAAE;IACvD,OAAO;QACN,SAAS,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;QACpD,QAAQ,EAAE,IAAI,CAAC,MAAM;QACrB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,YAAY,CAAC,CAAC,MAAM;QACvE,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,YAAY,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM;QACzG,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM;QACtD,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM;KACtD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { hasHarness } from "./harness-scaffold.js";
|
|
2
|
+
import { type HookRunResult } from "./hook-runner.js";
|
|
3
|
+
/**
|
|
4
|
+
* Declarative scenario engine that generalizes the hardcoded `doctor --hard-gates`
|
|
5
|
+
* probes into data-driven given→when→expect cases. Reuses the Phase-1 scaffold +
|
|
6
|
+
* hook-runner (the real configured-hook execution path) — independent of the event
|
|
7
|
+
* log. The `assertOutcome` here is THE single assertion path, also consumed by
|
|
8
|
+
* `doctor-hard-gates.ts`, so the two never diverge.
|
|
9
|
+
*/
|
|
10
|
+
export type SimStatus = "PASS" | "FAIL" | "SKIP";
|
|
11
|
+
export interface ExpectSpec {
|
|
12
|
+
/** Whether the hook should block the tool call. */
|
|
13
|
+
blocked: boolean;
|
|
14
|
+
/** Marker string expected on the named stream when blocked. */
|
|
15
|
+
marker?: string;
|
|
16
|
+
/** Exact exit code; when omitted on a block, any non-zero passes. */
|
|
17
|
+
exitCode?: number;
|
|
18
|
+
/** Which stream carries the marker — explicit per scenario (block markers vary). */
|
|
19
|
+
expectStream?: "stdout" | "stderr";
|
|
20
|
+
}
|
|
21
|
+
interface WhenSpec {
|
|
22
|
+
/** Tool name (matched against settings.json hook matchers). */
|
|
23
|
+
tool: string;
|
|
24
|
+
/** Hook script basename to exercise (the `only` filter — keeps runs deterministic). */
|
|
25
|
+
hook: string;
|
|
26
|
+
file_path?: string;
|
|
27
|
+
command?: string;
|
|
28
|
+
/** Extra env for this step (e.g. MEOWKIT_GATE1_REQUIRE_APPROVED=1). */
|
|
29
|
+
env?: Record<string, string>;
|
|
30
|
+
}
|
|
31
|
+
interface GivenSpec {
|
|
32
|
+
/** Create an (unapproved) plan so Gate 1 existence passes. */
|
|
33
|
+
plan?: boolean;
|
|
34
|
+
/** Remove all plans (force the no-plan state). */
|
|
35
|
+
clearPlans?: boolean;
|
|
36
|
+
/** Arrange arbitrary files in the temp project. */
|
|
37
|
+
files?: Array<{
|
|
38
|
+
path: string;
|
|
39
|
+
content: string;
|
|
40
|
+
}>;
|
|
41
|
+
}
|
|
42
|
+
interface StepSpec {
|
|
43
|
+
given?: GivenSpec;
|
|
44
|
+
when: WhenSpec;
|
|
45
|
+
expect: ExpectSpec;
|
|
46
|
+
}
|
|
47
|
+
export interface Scenario {
|
|
48
|
+
name: string;
|
|
49
|
+
description?: string;
|
|
50
|
+
/** Single-step shorthand (mutually exclusive with `steps`). */
|
|
51
|
+
given?: GivenSpec;
|
|
52
|
+
when?: WhenSpec;
|
|
53
|
+
expect?: ExpectSpec;
|
|
54
|
+
/** Ordered multi-step lifecycle (e.g. full-lifecycle). */
|
|
55
|
+
steps?: StepSpec[];
|
|
56
|
+
}
|
|
57
|
+
export interface StepResult {
|
|
58
|
+
status: SimStatus;
|
|
59
|
+
detail: string;
|
|
60
|
+
expected: string;
|
|
61
|
+
actual: string;
|
|
62
|
+
}
|
|
63
|
+
export interface ScenarioResult {
|
|
64
|
+
name: string;
|
|
65
|
+
description?: string;
|
|
66
|
+
status: SimStatus;
|
|
67
|
+
steps: StepResult[];
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* THE shared assertion: compare a hook run result against an expectation. Returns
|
|
71
|
+
* PASS / FAIL / SKIP. Two honesty guards:
|
|
72
|
+
* - an allow-case (`blocked:false`) where NO hook ran → SKIP (never a vacuous PASS),
|
|
73
|
+
* - a block-case where no hook ran → FAIL (the gate was not exercised).
|
|
74
|
+
*/
|
|
75
|
+
export declare function assertOutcome(result: HookRunResult | undefined, expect: ExpectSpec): {
|
|
76
|
+
status: SimStatus;
|
|
77
|
+
detail: string;
|
|
78
|
+
};
|
|
79
|
+
/** Execute one scenario against a freshly-scaffolded temp harness. Cleans up always. */
|
|
80
|
+
export declare function runScenario(scenario: Scenario, srcRoot: string): ScenarioResult;
|
|
81
|
+
/** Load + validate a scenario YAML file. Throws on a malformed/under-specified scenario. */
|
|
82
|
+
export declare function loadScenario(file: string): Scenario;
|
|
83
|
+
export interface SimulationsDir {
|
|
84
|
+
/** Absolute path to `<repoRoot>/.claude/simulations`. */
|
|
85
|
+
dir: string;
|
|
86
|
+
exists: boolean;
|
|
87
|
+
}
|
|
88
|
+
export declare function simulationsDir(srcRoot: string): SimulationsDir;
|
|
89
|
+
/** List scenario YAML basenames (without extension) in the simulations dir. */
|
|
90
|
+
export declare function listScenarios(srcRoot: string): string[];
|
|
91
|
+
export declare function loadScenarioByName(srcRoot: string, name: string): Scenario;
|
|
92
|
+
export { hasHarness };
|
|
93
|
+
//# sourceMappingURL=simulation-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simulation-runner.d.ts","sourceRoot":"","sources":["../../src/core/simulation-runner.ts"],"names":[],"mappings":"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"}
|