@hashicorp/kits 0.1.4 → 0.1.6
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 +175 -33
- package/dist/adapters/base-adapter.d.ts +2 -2
- package/dist/adapters/base-adapter.js +2 -2
- package/dist/adapters/claude-code/index.d.ts +1 -1
- package/dist/adapters/claude-code/index.d.ts.map +1 -1
- package/dist/adapters/claude-code/index.js +23 -9
- package/dist/adapters/claude-code/index.js.map +1 -1
- package/dist/adapters/claude-code/installer.d.ts +1 -4
- package/dist/adapters/claude-code/installer.d.ts.map +1 -1
- package/dist/adapters/claude-code/installer.js +17 -16
- package/dist/adapters/claude-code/installer.js.map +1 -1
- package/dist/adapters/codex/index.d.ts +1 -1
- package/dist/adapters/codex/index.js +1 -1
- package/dist/adapters/gemini-cli/index.d.ts +1 -1
- package/dist/adapters/gemini-cli/index.js +1 -1
- package/dist/adapters/gemini-cli/installer.d.ts +1 -4
- package/dist/adapters/gemini-cli/installer.d.ts.map +1 -1
- package/dist/adapters/gemini-cli/installer.js +15 -15
- package/dist/adapters/gemini-cli/installer.js.map +1 -1
- package/dist/adapters/github-copilot/index.d.ts +1 -1
- package/dist/adapters/github-copilot/index.js +1 -1
- package/dist/adapters/opencode/index.d.ts +1 -1
- package/dist/adapters/opencode/index.js +1 -1
- package/dist/adapters/opencode/installer.d.ts.map +1 -1
- package/dist/adapters/opencode/installer.js +19 -14
- package/dist/adapters/opencode/installer.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +29 -9
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/install.d.ts.map +1 -1
- package/dist/cli/install.js +820 -161
- package/dist/cli/install.js.map +1 -1
- package/dist/cli/list.d.ts.map +1 -1
- package/dist/cli/list.js +8 -6
- package/dist/cli/list.js.map +1 -1
- package/dist/cli/types.d.ts +17 -0
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli/types.js +1 -0
- package/dist/cli/types.js.map +1 -1
- package/dist/cli/uninstall.d.ts.map +1 -1
- package/dist/cli/uninstall.js +300 -38
- package/dist/cli/uninstall.js.map +1 -1
- package/dist/cli/upgrade.d.ts.map +1 -1
- package/dist/cli/upgrade.js +334 -105
- package/dist/cli/upgrade.js.map +1 -1
- package/dist/cli/validate.js +5 -5
- package/dist/cli/validate.js.map +1 -1
- package/dist/core/types.d.ts +6 -9
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/upgrade-executor.d.ts +7 -7
- package/dist/core/upgrade-executor.d.ts.map +1 -1
- package/dist/core/upgrade-executor.js +17 -17
- package/dist/core/upgrade-executor.js.map +1 -1
- package/dist/discovery/kit-scanner.d.ts +3 -3
- package/dist/discovery/kit-scanner.js +17 -17
- package/dist/discovery/kit-scanner.js.map +1 -1
- package/dist/discovery/types.d.ts +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/lockfile/index.d.ts +79 -0
- package/dist/lockfile/index.d.ts.map +1 -0
- package/dist/lockfile/index.js +203 -0
- package/dist/lockfile/index.js.map +1 -0
- package/dist/lockfile/read.d.ts +32 -0
- package/dist/lockfile/read.d.ts.map +1 -0
- package/dist/lockfile/read.js +88 -0
- package/dist/lockfile/read.js.map +1 -0
- package/dist/lockfile/types.d.ts +126 -0
- package/dist/lockfile/types.d.ts.map +1 -0
- package/dist/lockfile/types.js +44 -0
- package/dist/lockfile/types.js.map +1 -0
- package/dist/{manifest → lockfile}/upgrade-check.d.ts +5 -5
- package/dist/lockfile/upgrade-check.d.ts.map +1 -0
- package/dist/{manifest → lockfile}/upgrade-check.js +11 -9
- package/dist/lockfile/upgrade-check.js.map +1 -0
- package/dist/lockfile/utils.d.ts +35 -0
- package/dist/lockfile/utils.d.ts.map +1 -0
- package/dist/lockfile/utils.js +57 -0
- package/dist/lockfile/utils.js.map +1 -0
- package/dist/lockfile/write.d.ts +44 -0
- package/dist/lockfile/write.d.ts.map +1 -0
- package/dist/lockfile/write.js +77 -0
- package/dist/lockfile/write.js.map +1 -0
- package/dist/manifest/hash.d.ts +7 -0
- package/dist/manifest/hash.d.ts.map +1 -0
- package/dist/manifest/hash.js +30 -0
- package/dist/manifest/hash.js.map +1 -0
- package/dist/manifest/index.d.ts +8 -77
- package/dist/manifest/index.d.ts.map +1 -1
- package/dist/manifest/index.js +6 -197
- package/dist/manifest/index.js.map +1 -1
- package/dist/manifest/read.d.ts +4 -24
- package/dist/manifest/read.d.ts.map +1 -1
- package/dist/manifest/read.js +22 -46
- package/dist/manifest/read.js.map +1 -1
- package/dist/manifest/types.d.ts +17 -109
- package/dist/manifest/types.d.ts.map +1 -1
- package/dist/manifest/types.js +8 -37
- package/dist/manifest/types.js.map +1 -1
- package/dist/manifest/utils.d.ts +1 -27
- package/dist/manifest/utils.d.ts.map +1 -1
- package/dist/manifest/utils.js +1 -28
- package/dist/manifest/utils.js.map +1 -1
- package/dist/manifest/write.d.ts +3 -34
- package/dist/manifest/write.d.ts.map +1 -1
- package/dist/manifest/write.js +5 -45
- package/dist/manifest/write.js.map +1 -1
- package/dist/resolution/index.d.ts +7 -7
- package/dist/resolution/index.d.ts.map +1 -1
- package/dist/resolution/index.js +29 -19
- package/dist/resolution/index.js.map +1 -1
- package/dist/resolution/multi-kit-resolver.d.ts +2 -2
- package/dist/resolution/multi-kit-resolver.js +2 -2
- package/dist/resolution/primitives-registry.d.ts +1 -1
- package/dist/resolution/primitives-registry.js +2 -2
- package/dist/resolution/primitives-registry.js.map +1 -1
- package/dist/resolution/types.d.ts +1 -1
- package/dist/resolution/types.js +1 -1
- package/dist/tui/types.d.ts +1 -0
- package/dist/tui/types.d.ts.map +1 -1
- package/dist/tui/upgrade-select.d.ts +1 -1
- package/dist/tui/upgrade-select.d.ts.map +1 -1
- package/dist/tui/upgrade-select.js +15 -4
- package/dist/tui/upgrade-select.js.map +1 -1
- package/dist/validation/validate-hooks.d.ts.map +1 -1
- package/dist/validation/validate-hooks.js +2 -1
- package/dist/validation/validate-hooks.js.map +1 -1
- package/dist/validation/validate-kits.d.ts +1 -1
- package/dist/validation/validate-kits.js +5 -5
- package/dist/validation/validate-kits.js.map +1 -1
- package/package.json +2 -1
- package/schemas/examples/hook-binding-valid.json +1 -2
- package/schemas/hook-binding.schema.json +5 -4
- package/schemas/kit.schema.json +5 -4
- package/schemas/{manifest.schema.json → kits-lock.schema.json} +34 -8
- package/schemas/kits-manifest.schema.json +95 -0
- package/schemas/{kits.schema.json → kits-registry.schema.json} +3 -3
- package/schemas/{primitives.schema.json → primitives-registry.schema.json} +2 -2
- package/dist/manifest/upgrade-check.d.ts.map +0 -1
- package/dist/manifest/upgrade-check.js.map +0 -1
|
@@ -5,41 +5,42 @@
|
|
|
5
5
|
* to identify available updates.
|
|
6
6
|
*/
|
|
7
7
|
import * as semver from "semver";
|
|
8
|
-
import {
|
|
8
|
+
import { readLockfile } from "./read.js";
|
|
9
9
|
/**
|
|
10
10
|
* Check for available upgrades for a specific installation scope.
|
|
11
11
|
*
|
|
12
|
-
* Convenience function that reads the
|
|
12
|
+
* Convenience function that reads the lockfile for the given scope
|
|
13
13
|
* and checks for available upgrades.
|
|
14
14
|
*
|
|
15
15
|
* @param scope - Installation scope (global or project)
|
|
16
16
|
* @param registry - The primitives registry loader
|
|
17
17
|
* @param projectRoot - Absolute path to project root (required for project scope)
|
|
18
|
-
* @returns Array of available upgrade information, empty if no
|
|
18
|
+
* @returns Array of available upgrade information, empty if no lockfile exists
|
|
19
19
|
*/
|
|
20
20
|
export async function checkForUpgradesInScope(scope, registry, projectRoot) {
|
|
21
|
-
const
|
|
22
|
-
if (!
|
|
21
|
+
const lockfile = await readLockfile(scope, projectRoot);
|
|
22
|
+
if (!lockfile) {
|
|
23
23
|
return [];
|
|
24
24
|
}
|
|
25
|
-
return checkForUpgrades(
|
|
25
|
+
return checkForUpgrades(lockfile, registry);
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
28
28
|
* Check for available upgrades across all installed primitives.
|
|
29
29
|
*
|
|
30
|
-
* @param
|
|
30
|
+
* @param lockfile - The kits lockfile
|
|
31
31
|
* @param registry - The primitives registry loader
|
|
32
32
|
* @returns Array of available upgrade information
|
|
33
33
|
*/
|
|
34
|
-
export async function checkForUpgrades(
|
|
34
|
+
export async function checkForUpgrades(lockfile, registry) {
|
|
35
35
|
const upgrades = [];
|
|
36
36
|
// Load the registry if not already loaded
|
|
37
37
|
await registry.load();
|
|
38
38
|
// Iterate through all harnesses and kits
|
|
39
|
-
for (const [harnessName, harnessEntry] of Object.entries(
|
|
39
|
+
for (const [harnessName, harnessEntry] of Object.entries(lockfile.harnesses)) {
|
|
40
40
|
if (!harnessEntry)
|
|
41
41
|
continue;
|
|
42
42
|
for (const [kitName, kit] of Object.entries(harnessEntry.kits)) {
|
|
43
|
+
const canonicalName = kit.name ?? kitName;
|
|
43
44
|
// Check each primitive for upgrades
|
|
44
45
|
for (const primitive of kit.primitives) {
|
|
45
46
|
// Skip inline primitives - they don't come from the registry
|
|
@@ -51,6 +52,7 @@ export async function checkForUpgrades(manifest, registry) {
|
|
|
51
52
|
// Check for available upgrade
|
|
52
53
|
const upgrade = await checkPrimitiveUpgrade(registry, harnessName, kitName, primitive.name, primitive.type, primitive.version, primitive.versionSpec);
|
|
53
54
|
if (upgrade) {
|
|
55
|
+
upgrade.name = canonicalName;
|
|
54
56
|
upgrades.push(upgrade);
|
|
55
57
|
}
|
|
56
58
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgrade-check.js","sourceRoot":"","sources":["../../src/lockfile/upgrade-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared utilities for the lockfile module.
|
|
3
|
+
*/
|
|
4
|
+
import type { InstallationScope } from "../core/types.js";
|
|
5
|
+
/**
|
|
6
|
+
* Expand ~ to home directory.
|
|
7
|
+
*
|
|
8
|
+
* @param pathStr - Path string that may contain ~
|
|
9
|
+
* @returns Expanded path string
|
|
10
|
+
*/
|
|
11
|
+
export declare function expandPath(pathStr: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* Get the lockfile path for a given scope.
|
|
14
|
+
*
|
|
15
|
+
* @param scope - Installation scope (global or project)
|
|
16
|
+
* @param projectRoot - Absolute path to project root (required for project scope)
|
|
17
|
+
* @returns Absolute path to the lockfile file
|
|
18
|
+
*/
|
|
19
|
+
export declare function getLockfilePath(scope: InstallationScope, projectRoot?: string): string;
|
|
20
|
+
/**
|
|
21
|
+
* Get the lockfile directory path for a given scope.
|
|
22
|
+
*
|
|
23
|
+
* @param scope - Installation scope (global or project)
|
|
24
|
+
* @param projectRoot - Absolute path to project root (required for project scope)
|
|
25
|
+
* @returns Absolute path to the lockfile directory
|
|
26
|
+
*/
|
|
27
|
+
export declare function getLockfileDir(scope: InstallationScope, projectRoot?: string): string;
|
|
28
|
+
/**
|
|
29
|
+
* Ensure the lockfile directory exists for a given scope.
|
|
30
|
+
*
|
|
31
|
+
* @param scope - Installation scope (global or project)
|
|
32
|
+
* @param projectRoot - Absolute path to project root (required for project scope)
|
|
33
|
+
*/
|
|
34
|
+
export declare function ensureLockfileDir(scope: InstallationScope, projectRoot?: string): Promise<void>;
|
|
35
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lockfile/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAO1D;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,iBAAiB,EACxB,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAWR;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,iBAAiB,EACxB,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAER;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,iBAAiB,EACxB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAGf"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared utilities for the lockfile module.
|
|
3
|
+
*/
|
|
4
|
+
import fs from "node:fs/promises";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
import { GLOBAL_LOCKFILE_PATH, PROJECT_LOCKFILE_DIR, PROJECT_LOCKFILE_FILENAME, } from "./types.js";
|
|
7
|
+
/**
|
|
8
|
+
* Expand ~ to home directory.
|
|
9
|
+
*
|
|
10
|
+
* @param pathStr - Path string that may contain ~
|
|
11
|
+
* @returns Expanded path string
|
|
12
|
+
*/
|
|
13
|
+
export function expandPath(pathStr) {
|
|
14
|
+
if (pathStr.startsWith("~")) {
|
|
15
|
+
const home = process.env["HOME"] || process.env["USERPROFILE"] || "";
|
|
16
|
+
return path.join(home, pathStr.slice(1));
|
|
17
|
+
}
|
|
18
|
+
return pathStr;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Get the lockfile path for a given scope.
|
|
22
|
+
*
|
|
23
|
+
* @param scope - Installation scope (global or project)
|
|
24
|
+
* @param projectRoot - Absolute path to project root (required for project scope)
|
|
25
|
+
* @returns Absolute path to the lockfile file
|
|
26
|
+
*/
|
|
27
|
+
export function getLockfilePath(scope, projectRoot) {
|
|
28
|
+
if (scope === "global") {
|
|
29
|
+
return expandPath(GLOBAL_LOCKFILE_PATH);
|
|
30
|
+
}
|
|
31
|
+
// Project scope
|
|
32
|
+
if (!projectRoot) {
|
|
33
|
+
throw new Error("projectRoot is required for project scope");
|
|
34
|
+
}
|
|
35
|
+
return path.join(projectRoot, PROJECT_LOCKFILE_DIR, PROJECT_LOCKFILE_FILENAME);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Get the lockfile directory path for a given scope.
|
|
39
|
+
*
|
|
40
|
+
* @param scope - Installation scope (global or project)
|
|
41
|
+
* @param projectRoot - Absolute path to project root (required for project scope)
|
|
42
|
+
* @returns Absolute path to the lockfile directory
|
|
43
|
+
*/
|
|
44
|
+
export function getLockfileDir(scope, projectRoot) {
|
|
45
|
+
return path.dirname(getLockfilePath(scope, projectRoot));
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Ensure the lockfile directory exists for a given scope.
|
|
49
|
+
*
|
|
50
|
+
* @param scope - Installation scope (global or project)
|
|
51
|
+
* @param projectRoot - Absolute path to project root (required for project scope)
|
|
52
|
+
*/
|
|
53
|
+
export async function ensureLockfileDir(scope, projectRoot) {
|
|
54
|
+
const lockfileDir = getLockfileDir(scope, projectRoot);
|
|
55
|
+
await fs.mkdir(lockfileDir, { recursive: true });
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lockfile/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AAEpB;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QACrE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAwB,EACxB,WAAoB;IAEpB,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,OAAO,UAAU,CAAC,oBAAoB,CAAC,CAAC;IAC1C,CAAC;IAED,gBAAgB;IAChB,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,oBAAoB,EAAE,yBAAyB,CAAC,CAAC;AACjF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAwB,EACxB,WAAoB;IAEpB,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAAwB,EACxB,WAAoB;IAEpB,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACvD,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lockfile write operations.
|
|
3
|
+
*
|
|
4
|
+
* Provides functionality to write and update the kits lockfile.
|
|
5
|
+
*/
|
|
6
|
+
import type { InstallationScope } from "../core/types.js";
|
|
7
|
+
import type { KitsLockfile } from "./types.js";
|
|
8
|
+
/**
|
|
9
|
+
* Error thrown when lockfile write fails.
|
|
10
|
+
*/
|
|
11
|
+
export declare class LockfileWriteError extends Error {
|
|
12
|
+
readonly errorCause?: unknown;
|
|
13
|
+
constructor(message: string, cause?: unknown);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Write the kits lockfile to disk.
|
|
17
|
+
*
|
|
18
|
+
* Creates the lockfile directory if it doesn't exist.
|
|
19
|
+
* Updates the lastUpdated timestamp automatically.
|
|
20
|
+
* Ensures the scope field matches the write location.
|
|
21
|
+
*
|
|
22
|
+
* @param lockfile - The lockfile to write
|
|
23
|
+
* @param scope - Installation scope (global or project), defaults to lockfile.scope
|
|
24
|
+
* @param projectRoot - Absolute path to project root (required for project scope)
|
|
25
|
+
* @throws LockfileWriteError if writing fails
|
|
26
|
+
*/
|
|
27
|
+
export declare function writeLockfile(lockfile: KitsLockfile, scope?: InstallationScope, projectRoot?: string): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Get the expanded lockfile path for a given scope.
|
|
30
|
+
*
|
|
31
|
+
* @param scope - Installation scope (global or project), defaults to global
|
|
32
|
+
* @param projectRoot - Absolute path to project root (required for project scope)
|
|
33
|
+
* @returns The absolute path to the lockfile file
|
|
34
|
+
*/
|
|
35
|
+
export declare function getLockfilePathForScope(scope?: InstallationScope, projectRoot?: string): string;
|
|
36
|
+
/**
|
|
37
|
+
* Get the lockfile directory path for a given scope.
|
|
38
|
+
*
|
|
39
|
+
* @param scope - Installation scope (global or project), defaults to global
|
|
40
|
+
* @param projectRoot - Absolute path to project root (required for project scope)
|
|
41
|
+
* @returns The absolute path to the lockfile directory
|
|
42
|
+
*/
|
|
43
|
+
export declare function getLockfileDirForScope(scope?: InstallationScope, projectRoot?: string): string;
|
|
44
|
+
//# sourceMappingURL=write.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/lockfile/write.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;gBAElB,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAK7C;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,YAAY,EACtB,KAAK,CAAC,EAAE,iBAAiB,EACzB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,GAAE,iBAA4B,EACnC,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAER;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,GAAE,iBAA4B,EACnC,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAER"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lockfile write operations.
|
|
3
|
+
*
|
|
4
|
+
* Provides functionality to write and update the kits lockfile.
|
|
5
|
+
*/
|
|
6
|
+
import fs from "node:fs/promises";
|
|
7
|
+
import { getLockfilePath, getLockfileDir, ensureLockfileDir } from "./utils.js";
|
|
8
|
+
/**
|
|
9
|
+
* Error thrown when lockfile write fails.
|
|
10
|
+
*/
|
|
11
|
+
export class LockfileWriteError extends Error {
|
|
12
|
+
errorCause;
|
|
13
|
+
constructor(message, cause) {
|
|
14
|
+
super(message);
|
|
15
|
+
this.name = "LockfileWriteError";
|
|
16
|
+
this.errorCause = cause;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Write the kits lockfile to disk.
|
|
21
|
+
*
|
|
22
|
+
* Creates the lockfile directory if it doesn't exist.
|
|
23
|
+
* Updates the lastUpdated timestamp automatically.
|
|
24
|
+
* Ensures the scope field matches the write location.
|
|
25
|
+
*
|
|
26
|
+
* @param lockfile - The lockfile to write
|
|
27
|
+
* @param scope - Installation scope (global or project), defaults to lockfile.scope
|
|
28
|
+
* @param projectRoot - Absolute path to project root (required for project scope)
|
|
29
|
+
* @throws LockfileWriteError if writing fails
|
|
30
|
+
*/
|
|
31
|
+
export async function writeLockfile(lockfile, scope, projectRoot) {
|
|
32
|
+
// Use provided scope or fall back to lockfile's scope
|
|
33
|
+
const effectiveScope = scope ?? lockfile.scope;
|
|
34
|
+
const lockfilePath = getLockfilePath(effectiveScope, projectRoot);
|
|
35
|
+
try {
|
|
36
|
+
// Ensure directory exists
|
|
37
|
+
await ensureLockfileDir(effectiveScope, projectRoot);
|
|
38
|
+
// Update timestamp
|
|
39
|
+
lockfile.lastUpdated = new Date().toISOString();
|
|
40
|
+
// Ensure scope field is set correctly
|
|
41
|
+
lockfile.scope = effectiveScope;
|
|
42
|
+
// Set or clear projectRoot based on scope
|
|
43
|
+
if (effectiveScope === "project" && projectRoot) {
|
|
44
|
+
lockfile.projectRoot = projectRoot;
|
|
45
|
+
}
|
|
46
|
+
else if (effectiveScope === "global") {
|
|
47
|
+
delete lockfile.projectRoot;
|
|
48
|
+
}
|
|
49
|
+
// Write lockfile with pretty formatting
|
|
50
|
+
const content = JSON.stringify(lockfile, null, 2);
|
|
51
|
+
await fs.writeFile(lockfilePath, content, "utf-8");
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
throw new LockfileWriteError(`Failed to write lockfile to ${lockfilePath}`, error);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get the expanded lockfile path for a given scope.
|
|
59
|
+
*
|
|
60
|
+
* @param scope - Installation scope (global or project), defaults to global
|
|
61
|
+
* @param projectRoot - Absolute path to project root (required for project scope)
|
|
62
|
+
* @returns The absolute path to the lockfile file
|
|
63
|
+
*/
|
|
64
|
+
export function getLockfilePathForScope(scope = "global", projectRoot) {
|
|
65
|
+
return getLockfilePath(scope, projectRoot);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Get the lockfile directory path for a given scope.
|
|
69
|
+
*
|
|
70
|
+
* @param scope - Installation scope (global or project), defaults to global
|
|
71
|
+
* @param projectRoot - Absolute path to project root (required for project scope)
|
|
72
|
+
* @returns The absolute path to the lockfile directory
|
|
73
|
+
*/
|
|
74
|
+
export function getLockfileDirForScope(scope = "global", projectRoot) {
|
|
75
|
+
return getLockfileDir(scope, projectRoot);
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=write.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/lockfile/write.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAIlC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEhF;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAClC,UAAU,CAAW;IAE9B,YAAY,OAAe,EAAE,KAAe;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;CACF;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAAsB,EACtB,KAAyB,EACzB,WAAoB;IAEpB,sDAAsD;IACtD,MAAM,cAAc,GAAG,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC;IAC/C,MAAM,YAAY,GAAG,eAAe,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IAElE,IAAI,CAAC;QACH,0BAA0B;QAC1B,MAAM,iBAAiB,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QAErD,mBAAmB;QACnB,QAAQ,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAEhD,sCAAsC;QACtC,QAAQ,CAAC,KAAK,GAAG,cAAc,CAAC;QAEhC,0CAA0C;QAC1C,IAAI,cAAc,KAAK,SAAS,IAAI,WAAW,EAAE,CAAC;YAChD,QAAQ,CAAC,WAAW,GAAG,WAAW,CAAC;QACrC,CAAC;aAAM,IAAI,cAAc,KAAK,QAAQ,EAAE,CAAC;YACvC,OAAO,QAAQ,CAAC,WAAW,CAAC;QAC9B,CAAC;QAED,wCAAwC;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAClD,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,kBAAkB,CAC1B,+BAA+B,YAAY,EAAE,EAC7C,KAAK,CACN,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACrC,QAA2B,QAAQ,EACnC,WAAoB;IAEpB,OAAO,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CACpC,QAA2B,QAAQ,EACnC,WAAoB;IAEpB,OAAO,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical hashing for kits manifests.
|
|
3
|
+
*/
|
|
4
|
+
import type { KitsManifest } from "./types.js";
|
|
5
|
+
export declare function canonicalizeManifest(manifest: KitsManifest): string;
|
|
6
|
+
export declare function hashManifest(manifest: KitsManifest): string;
|
|
7
|
+
//# sourceMappingURL=hash.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/manifest/hash.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAmB/C,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAGnE;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAI3D"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical hashing for kits manifests.
|
|
3
|
+
*/
|
|
4
|
+
import crypto from "node:crypto";
|
|
5
|
+
function sortObject(value) {
|
|
6
|
+
if (Array.isArray(value)) {
|
|
7
|
+
return value.map((item) => sortObject(item));
|
|
8
|
+
}
|
|
9
|
+
if (!value || typeof value !== "object") {
|
|
10
|
+
return value;
|
|
11
|
+
}
|
|
12
|
+
const entries = Object.entries(value)
|
|
13
|
+
.filter(([, v]) => v !== undefined)
|
|
14
|
+
.sort(([a], [b]) => a.localeCompare(b));
|
|
15
|
+
const result = {};
|
|
16
|
+
for (const [key, val] of entries) {
|
|
17
|
+
result[key] = sortObject(val);
|
|
18
|
+
}
|
|
19
|
+
return result;
|
|
20
|
+
}
|
|
21
|
+
export function canonicalizeManifest(manifest) {
|
|
22
|
+
const sorted = sortObject(manifest);
|
|
23
|
+
return JSON.stringify(sorted);
|
|
24
|
+
}
|
|
25
|
+
export function hashManifest(manifest) {
|
|
26
|
+
const canonical = canonicalizeManifest(manifest);
|
|
27
|
+
const hash = crypto.createHash("sha256").update(canonical).digest("hex");
|
|
28
|
+
return `sha256:${hash}`;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../../src/manifest/hash.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,MAAM,MAAM,aAAa,CAAC;AAIjC,SAAS,UAAU,CAAC,KAAc;IAChC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC;SAC7D,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC;SAClC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,QAAsB;IACzD,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAiB,CAAC;IACpD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAsB;IACjD,MAAM,SAAS,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzE,OAAO,UAAU,IAAI,EAAE,CAAC;AAC1B,CAAC"}
|
package/dist/manifest/index.d.ts
CHANGED
|
@@ -1,79 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
export
|
|
10
|
-
export { MANIFEST_VERSION, GLOBAL_MANIFEST_PATH, PROJECT_MANIFEST_DIR, PROJECT_MANIFEST_FILENAME, createEmptyManifest, } from "./types.js";
|
|
11
|
-
export { readManifest, getOrCreateManifest, ManifestReadError } from "./read.js";
|
|
12
|
-
export { writeManifest, ManifestWriteError } from "./write.js";
|
|
13
|
-
export { getManifestPathForScope, getManifestDirForScope } from "./write.js";
|
|
14
|
-
export { checkForUpgrades, checkForUpgradesInScope, createUpgradeSummary, } from "./upgrade-check.js";
|
|
15
|
-
export { expandPath, getManifestPath, getManifestDir, ensureManifestDir, } from "./utils.js";
|
|
16
|
-
/**
|
|
17
|
-
* Record a kit installation in the manifest.
|
|
18
|
-
*
|
|
19
|
-
* @param harness - The harness name
|
|
20
|
-
* @param kit - The kit definition
|
|
21
|
-
* @param primitives - The resolved primitives that were installed
|
|
22
|
-
* @param source - The source repository
|
|
23
|
-
* @param scope - Installation scope (global or project)
|
|
24
|
-
* @param projectRoot - Absolute path to project root (required for project scope)
|
|
25
|
-
*/
|
|
26
|
-
export declare function recordInstallation(harness: HarnessName, kit: KitManifest, primitives: ResolvedPrimitive[], source: string, scope?: InstallationScope, projectRoot?: string): Promise<void>;
|
|
27
|
-
/**
|
|
28
|
-
* Remove a kit installation from the manifest.
|
|
29
|
-
*
|
|
30
|
-
* @param harness - The harness name
|
|
31
|
-
* @param kitName - The kit name to remove
|
|
32
|
-
* @param scope - Installation scope (global or project)
|
|
33
|
-
* @param projectRoot - Absolute path to project root (required for project scope)
|
|
34
|
-
* @returns The removed kit info or null if not found
|
|
35
|
-
*/
|
|
36
|
-
export declare function removeInstallation(harness: HarnessName, kitName: string, scope?: InstallationScope, projectRoot?: string): Promise<InstalledKit | null>;
|
|
37
|
-
/**
|
|
38
|
-
* Get all installed kits, optionally filtered by harness.
|
|
39
|
-
*
|
|
40
|
-
* @param scope - Installation scope (global or project)
|
|
41
|
-
* @param projectRoot - Absolute path to project root (required for project scope)
|
|
42
|
-
* @param harness - Optional harness name to filter by
|
|
43
|
-
* @returns Array of installed kit info with harness context
|
|
44
|
-
*/
|
|
45
|
-
export declare function getInstalledKits(scope?: InstallationScope, projectRoot?: string, harness?: HarnessName): Promise<Array<{
|
|
46
|
-
harness: HarnessName;
|
|
47
|
-
kitName: string;
|
|
48
|
-
kit: InstalledKit;
|
|
49
|
-
}>>;
|
|
50
|
-
/**
|
|
51
|
-
* Check if a kit is installed in any harness.
|
|
52
|
-
*
|
|
53
|
-
* @param kitName - The kit name to check
|
|
54
|
-
* @param scope - Installation scope (global or project)
|
|
55
|
-
* @param projectRoot - Absolute path to project root (required for project scope)
|
|
56
|
-
* @returns True if the kit is installed somewhere
|
|
57
|
-
*/
|
|
58
|
-
export declare function isKitInstalled(kitName: string, scope?: InstallationScope, projectRoot?: string): Promise<boolean>;
|
|
59
|
-
/**
|
|
60
|
-
* Check if a kit is installed in a specific harness.
|
|
61
|
-
*
|
|
62
|
-
* @param harness - The harness name
|
|
63
|
-
* @param kitName - The kit name to check
|
|
64
|
-
* @param scope - Installation scope (global or project)
|
|
65
|
-
* @param projectRoot - Absolute path to project root (required for project scope)
|
|
66
|
-
* @returns True if the kit is installed in the harness
|
|
67
|
-
*/
|
|
68
|
-
export declare function isKitInstalledInHarness(harness: HarnessName, kitName: string, scope?: InstallationScope, projectRoot?: string): Promise<boolean>;
|
|
69
|
-
/**
|
|
70
|
-
* Get a specific installed kit.
|
|
71
|
-
*
|
|
72
|
-
* @param harness - The harness name
|
|
73
|
-
* @param kitName - The kit name
|
|
74
|
-
* @param scope - Installation scope (global or project)
|
|
75
|
-
* @param projectRoot - Absolute path to project root (required for project scope)
|
|
76
|
-
* @returns The installed kit or null if not found
|
|
77
|
-
*/
|
|
78
|
-
export declare function getInstalledKit(harness: HarnessName, kitName: string, scope?: InstallationScope, projectRoot?: string): Promise<InstalledKit | null>;
|
|
2
|
+
* Kits manifest (intent) module.
|
|
3
|
+
*/
|
|
4
|
+
export type { KitsManifest, KitsManifestSource, ManifestCompatibility } from "./types.js";
|
|
5
|
+
export { MANIFEST_SCHEMA_VERSION, GLOBAL_MANIFEST_PATH, PROJECT_MANIFEST_DIR, PROJECT_MANIFEST_FILENAME, createEmptyManifest, } from "./types.js";
|
|
6
|
+
export { ManifestReadError, readManifest, readManifestFile } from "./read.js";
|
|
7
|
+
export { ManifestWriteError, writeManifest, getManifestPathForScope, getManifestDirForScope } from "./write.js";
|
|
8
|
+
export { expandPath, getManifestPath, getManifestDir, ensureManifestDir } from "./utils.js";
|
|
9
|
+
export { canonicalizeManifest, hashManifest } from "./hash.js";
|
|
79
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/manifest/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/manifest/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAC1F,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAChH,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC5F,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC"}
|