@detergent-software/atk 8.9.0-dev.1 → 8.9.0-dev.10
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/CHANGELOG.md +67 -0
- package/build/cli.js +0 -0
- package/build/commands/publish.d.ts.map +1 -1
- package/build/commands/publish.js +19 -23
- package/build/commands/publish.js.map +1 -1
- package/build/hooks/usePublishState.d.ts +38 -207
- package/build/hooks/usePublishState.d.ts.map +1 -1
- package/build/hooks/usePublishState.js +83 -1501
- package/build/hooks/usePublishState.js.map +1 -1
- package/build/lib/adapter.js +23 -3
- package/build/lib/adapter.js.map +1 -1
- package/build/lib/atk-api/errors.d.ts +5 -2
- package/build/lib/atk-api/errors.d.ts.map +1 -1
- package/build/lib/atk-api/errors.js +1 -0
- package/build/lib/atk-api/errors.js.map +1 -1
- package/build/lib/atk-api/generated/types.gen.d.ts +12 -12
- package/build/lib/atk-api/index.d.ts +2 -2
- package/build/lib/atk-api/index.d.ts.map +1 -1
- package/build/lib/atk-api/index.js +1 -1
- package/build/lib/atk-api/index.js.map +1 -1
- package/build/lib/atk-api/web-routes.d.ts +25 -6
- package/build/lib/atk-api/web-routes.d.ts.map +1 -1
- package/build/lib/atk-api/web-routes.js +27 -8
- package/build/lib/atk-api/web-routes.js.map +1 -1
- package/build/lib/checksum.d.ts +30 -14
- package/build/lib/checksum.d.ts.map +1 -1
- package/build/lib/checksum.js +93 -57
- package/build/lib/checksum.js.map +1 -1
- package/build/lib/installer.d.ts +2 -7
- package/build/lib/installer.d.ts.map +1 -1
- package/build/lib/installer.js +30 -5
- package/build/lib/installer.js.map +1 -1
- package/build/lib/lockfile.d.ts +10 -6
- package/build/lib/lockfile.d.ts.map +1 -1
- package/build/lib/lockfile.js +191 -50
- package/build/lib/lockfile.js.map +1 -1
- package/build/lib/owned-paths.d.ts +4 -2
- package/build/lib/owned-paths.d.ts.map +1 -1
- package/build/lib/owned-paths.js +19 -6
- package/build/lib/owned-paths.js.map +1 -1
- package/build/lib/publish-flow.d.ts +227 -0
- package/build/lib/publish-flow.d.ts.map +1 -0
- package/build/lib/publish-flow.js +1316 -0
- package/build/lib/publish-flow.js.map +1 -0
- package/build/lib/publish-run.d.ts +55 -0
- package/build/lib/publish-run.d.ts.map +1 -0
- package/build/lib/publish-run.js +164 -0
- package/build/lib/publish-run.js.map +1 -0
- package/build/lib/publisher.d.ts +2 -1
- package/build/lib/publisher.d.ts.map +1 -1
- package/build/lib/publisher.js +20 -18
- package/build/lib/publisher.js.map +1 -1
- package/build/lib/registry.d.ts +2 -1
- package/build/lib/registry.d.ts.map +1 -1
- package/build/lib/registry.js +2 -1
- package/build/lib/registry.js.map +1 -1
- package/build/lib/root-path.d.ts +11 -0
- package/build/lib/root-path.d.ts.map +1 -1
- package/build/lib/root-path.js +15 -1
- package/build/lib/root-path.js.map +1 -1
- package/build/lib/schemas/lockfile.d.ts +156 -23
- package/build/lib/schemas/lockfile.d.ts.map +1 -1
- package/build/lib/schemas/lockfile.js +100 -79
- package/build/lib/schemas/lockfile.js.map +1 -1
- package/build/lib/staging.d.ts +15 -0
- package/build/lib/staging.d.ts.map +1 -0
- package/build/lib/staging.js +33 -0
- package/build/lib/staging.js.map +1 -0
- package/build/lib/sync.d.ts.map +1 -1
- package/build/lib/sync.js +28 -0
- package/build/lib/sync.js.map +1 -1
- package/build/lib/uninstaller.js +2 -2
- package/build/lib/uninstaller.js.map +1 -1
- package/build/lib/write-file.d.ts +5 -0
- package/build/lib/write-file.d.ts.map +1 -1
- package/build/lib/write-file.js +10 -7
- package/build/lib/write-file.js.map +1 -1
- package/package.json +81 -81
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
* Shape (static-export compatible: every page is one HTML file, entity
|
|
8
8
|
* identity in the query string; `trailingSlash: true` -> `asset/index.html`):
|
|
9
9
|
*
|
|
10
|
-
* / catalog (assets) ?q=&type=&tag=&org=&tool=&sort= (repeatable keys)
|
|
10
|
+
* / catalog (assets) ?q=&type=&tag=&org=&tool=&sort=&scope= (repeatable keys)
|
|
11
11
|
* /asset/?type=skill&name=x[&org=y][&version=1.2.0][&file=path]
|
|
12
|
-
* /bundles/ bundle list ?q=
|
|
12
|
+
* /bundles/ bundle list ?q=&scope=
|
|
13
13
|
* /bundle/?name=x[&org=y][&version=1.0.0]
|
|
14
14
|
* /publish/asset/ asset wizard
|
|
15
15
|
* /publish/bundle/ bundle wizard
|
|
@@ -33,6 +33,7 @@ import { decodeSearch, defineAppRoute, href, p, safeDecodeSearch } from 'paramou
|
|
|
33
33
|
import { assetRef, bundleRef, exactVersion, parseOrg, } from "./domain.js";
|
|
34
34
|
import { isAtkError } from "./errors.js";
|
|
35
35
|
const CATALOG_SORTS = ['relevance', 'name', 'updated'];
|
|
36
|
+
const CATALOG_SCOPES = ['global', 'all'];
|
|
36
37
|
/** Every getting-started series, in the order the hub lists them. One static page each. */
|
|
37
38
|
export const GETTING_STARTED_SERIES = ['basics', 'manage-assets', 'publish-assets'];
|
|
38
39
|
/**
|
|
@@ -60,6 +61,7 @@ export const catalogRoute = defineAppRoute('/', {
|
|
|
60
61
|
org: p.array(),
|
|
61
62
|
tool: p.array(),
|
|
62
63
|
sort: p.enum(CATALOG_SORTS).default('relevance').catch('relevance'),
|
|
64
|
+
scope: p.enum(CATALOG_SCOPES).default('global').catch('global'),
|
|
63
65
|
},
|
|
64
66
|
trailingSlash: true,
|
|
65
67
|
});
|
|
@@ -75,7 +77,10 @@ export const assetRoute = defineAppRoute('/asset', {
|
|
|
75
77
|
trailingSlash: true,
|
|
76
78
|
});
|
|
77
79
|
export const bundlesRoute = defineAppRoute('/bundles', {
|
|
78
|
-
search: {
|
|
80
|
+
search: {
|
|
81
|
+
q: p.string().optional(),
|
|
82
|
+
scope: p.enum(CATALOG_SCOPES).default('global').catch('global'),
|
|
83
|
+
},
|
|
79
84
|
trailingSlash: true,
|
|
80
85
|
});
|
|
81
86
|
export const bundleRoute = defineAppRoute('/bundle', {
|
|
@@ -111,8 +116,11 @@ export const webRoutes = {
|
|
|
111
116
|
bundle(ref, opts) {
|
|
112
117
|
return href(bundleRoute, { search: { name: ref.name, org: ref.org, version: opts?.version } });
|
|
113
118
|
},
|
|
114
|
-
bundles
|
|
115
|
-
|
|
119
|
+
/** Defaults are omitted, so the canonical bundle list URL is just `/bundles/`. */
|
|
120
|
+
bundles(query) {
|
|
121
|
+
return href(bundlesRoute, {
|
|
122
|
+
search: { q: query?.q || undefined, scope: query?.scope ?? 'global' },
|
|
123
|
+
});
|
|
116
124
|
},
|
|
117
125
|
/** Defaults are omitted, so the canonical catalog URL is just `/`. */
|
|
118
126
|
catalog(query) {
|
|
@@ -120,6 +128,7 @@ export const webRoutes = {
|
|
|
120
128
|
search: {
|
|
121
129
|
org: [...(query?.orgs ?? [])],
|
|
122
130
|
q: query?.q ?? '',
|
|
131
|
+
scope: query?.scope ?? 'global',
|
|
123
132
|
sort: query?.sort ?? 'relevance',
|
|
124
133
|
tag: [...(query?.tags ?? [])],
|
|
125
134
|
tool: [...(query?.tools ?? [])],
|
|
@@ -167,12 +176,21 @@ export function parseBundleQuery(params) {
|
|
|
167
176
|
...(version === undefined ? {} : { version: exactVersion(version) }),
|
|
168
177
|
}));
|
|
169
178
|
}
|
|
179
|
+
/**
|
|
180
|
+
* The bundle list's query. Lenient, never fails: an unknown scope reads as
|
|
181
|
+
* `global`, and a key that cannot decode (a repeated `q`) falls back to its default.
|
|
182
|
+
*/
|
|
183
|
+
export function parseBundlesQuery(params) {
|
|
184
|
+
const decoded = safeDecodeSearch(bundlesRoute, params);
|
|
185
|
+
const search = decoded.status === 'success' ? decoded.data : decodeSearch(bundlesRoute, without(params, decoded.error.issues));
|
|
186
|
+
return { q: search.q ?? '', scope: search.scope };
|
|
187
|
+
}
|
|
170
188
|
/**
|
|
171
189
|
* The catalog's filters. Lenient, never fails: unknown asset types are
|
|
172
190
|
* dropped, an org filter loses a leading `@` like the asset and bundle
|
|
173
|
-
* parsers (an invalid org name is dropped), an unknown sort reads as `relevance`,
|
|
174
|
-
* at all (a repeated `q`) falls back to its
|
|
175
|
-
*
|
|
191
|
+
* parsers (an invalid org name is dropped), an unknown sort reads as `relevance`, an unknown
|
|
192
|
+
* scope as `global`, and a key that cannot decode at all (a repeated `q`) falls back to its
|
|
193
|
+
* default. A bad filter just shows the default view.
|
|
176
194
|
*/
|
|
177
195
|
export function parseCatalogQuery(params) {
|
|
178
196
|
const decoded = safeDecodeSearch(catalogRoute, params);
|
|
@@ -181,6 +199,7 @@ export function parseCatalogQuery(params) {
|
|
|
181
199
|
return {
|
|
182
200
|
orgs: search.org.flatMap(validOrg),
|
|
183
201
|
q: search.q,
|
|
202
|
+
scope: search.scope,
|
|
184
203
|
sort: search.sort,
|
|
185
204
|
tags: search.tag,
|
|
186
205
|
tools: search.tool,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-routes.js","sourceRoot":"","sources":["../../../src/lib/atk-api/web-routes.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,IAAI,EAAc,CAAC,EAAE,gBAAgB,EAAqB,MAAM,UAAU,CAAC;AAElH,OAAO,EAEL,QAAQ,EAGR,SAAS,EACT,YAAY,EAEZ,QAAQ,GACT,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"web-routes.js","sourceRoot":"","sources":["../../../src/lib/atk-api/web-routes.ts"],"names":[],"mappings":"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"}
|
package/build/lib/checksum.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ConfigEntry } from './schemas/lockfile.js';
|
|
1
2
|
/** Describes a single config-entry verification failure. */
|
|
2
3
|
export interface ConfigEntryFailure {
|
|
3
4
|
file: string;
|
|
@@ -6,18 +7,30 @@ export interface ConfigEntryFailure {
|
|
|
6
7
|
}
|
|
7
8
|
/** Reason a config-entry verification can fail. */
|
|
8
9
|
export type ConfigEntryFailureReason = 'CONFIG_CHECKSUM_MISMATCH' | 'CONFIG_FILE_NOT_FOUND' | 'CONFIG_KEY_NOT_FOUND';
|
|
10
|
+
/**
|
|
11
|
+
* A recorded config entry, as the lockfile holds it, that {@link verifyConfigEntries} can check. Its
|
|
12
|
+
* `checksumVersion` is {@link CONFIG_CHECKSUM_VERSION} for a deep digest and absent for a legacy one;
|
|
13
|
+
* hook groups ignore it.
|
|
14
|
+
*/
|
|
15
|
+
export type VerifiableConfigEntry = Omit<ConfigEntry, 'tool'>;
|
|
9
16
|
/** Recursively collect all files in a directory. */
|
|
10
17
|
export declare function collectFilesRecursive(dirPath: string, baseDir: string): Promise<Array<{
|
|
11
18
|
absolutePath: string;
|
|
12
19
|
relativePath: string;
|
|
13
20
|
}>>;
|
|
21
|
+
/**
|
|
22
|
+
* The lockfile `checksumVersion` of a digest from {@link computeConfigEntryChecksum}. A config entry
|
|
23
|
+
* without one was recorded by an older CLI with {@link legacyConfigEntryChecksum}.
|
|
24
|
+
*/
|
|
25
|
+
export declare const CONFIG_CHECKSUM_VERSION: 2;
|
|
14
26
|
/**
|
|
15
27
|
* Compute a deterministic SHA-256 checksum for a config entry value.
|
|
16
28
|
*
|
|
17
29
|
* Strips the `_managedBy` metadata key (added by ATK at write time),
|
|
18
|
-
* serializes the
|
|
19
|
-
*
|
|
20
|
-
* helper so the checksum logic stays in
|
|
30
|
+
* serializes the rest with keys sorted at every depth (so nested `env` and
|
|
31
|
+
* `headers` count), and returns the hex digest. Both the installer (write path)
|
|
32
|
+
* and the verifier (read path) use this helper so the checksum logic stays in
|
|
33
|
+
* one place.
|
|
21
34
|
*/
|
|
22
35
|
export declare function computeConfigEntryChecksum(entry: Record<string, unknown>): string;
|
|
23
36
|
/**
|
|
@@ -56,12 +69,19 @@ export declare function hashString(content: string): string;
|
|
|
56
69
|
export declare function matchesChecksum(content: Uint8Array, expected: string): boolean;
|
|
57
70
|
/**
|
|
58
71
|
* Deterministically serialize a value with object keys sorted recursively.
|
|
59
|
-
* Arrays keep their order; nested object keys are sorted at every level
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
* whose meaningful data (`command`, `timeout`) lives inside `hooks[]`.
|
|
72
|
+
* Arrays keep their order; nested object keys are sorted at every level, so
|
|
73
|
+
* deeply-nested fields count: a hook group's `command` and `timeout` inside
|
|
74
|
+
* `hooks[]`, an MCP server's `env` and `headers`.
|
|
63
75
|
*/
|
|
64
76
|
export declare function stableStringify(value: unknown): string;
|
|
77
|
+
/**
|
|
78
|
+
* Re-record the config entries an older CLI checksummed with {@link legacyConfigEntryChecksum}, which
|
|
79
|
+
* can't see nested keys, as {@link computeConfigEntryChecksum} digests of the value the file holds
|
|
80
|
+
* now. Each entry without a `checksumVersion` whose value matches its legacy digest comes back with
|
|
81
|
+
* the deep digest and the current version; every other entry comes back as the same object. The
|
|
82
|
+
* legacy digest can't tell what the nested fields held when it was recorded, so this trusts them once.
|
|
83
|
+
*/
|
|
84
|
+
export declare function upgradeConfigEntryChecksums<T extends VerifiableConfigEntry>(entries: T[], projectDir: string): Promise<T[]>;
|
|
65
85
|
/**
|
|
66
86
|
* Compare a file's current checksum against an expected value (line-ending
|
|
67
87
|
* tolerant; see {@link matchesChecksum}).
|
|
@@ -87,7 +107,8 @@ export declare function verifyChecksums(files: Array<{
|
|
|
87
107
|
* 2. Splits the dot-path key into section/child and looks up the value →
|
|
88
108
|
* `CONFIG_KEY_NOT_FOUND` if missing.
|
|
89
109
|
* 3. Computes a checksum via `computeConfigEntryChecksum()` and compares →
|
|
90
|
-
* `CONFIG_CHECKSUM_MISMATCH` on divergence.
|
|
110
|
+
* `CONFIG_CHECKSUM_MISMATCH` on divergence. An entry without a
|
|
111
|
+
* `checksumVersion` (recorded by an older CLI) also matches its legacy digest.
|
|
91
112
|
*
|
|
92
113
|
* Returns only the entries that failed (empty array = all OK).
|
|
93
114
|
*
|
|
@@ -96,10 +117,5 @@ export declare function verifyChecksums(files: Array<{
|
|
|
96
117
|
* command rather than by an object key, and checksummed via the deep-stable
|
|
97
118
|
* hook-group digest so co-located foreign groups don't affect the result.
|
|
98
119
|
*/
|
|
99
|
-
export declare function verifyConfigEntries(entries:
|
|
100
|
-
checksum: string;
|
|
101
|
-
command?: string;
|
|
102
|
-
file: string;
|
|
103
|
-
key: string;
|
|
104
|
-
}>, projectDir: string): Promise<ConfigEntryFailure[]>;
|
|
120
|
+
export declare function verifyConfigEntries(entries: VerifiableConfigEntry[], projectDir: string): Promise<ConfigEntryFailure[]>;
|
|
105
121
|
//# sourceMappingURL=checksum.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checksum.d.ts","sourceRoot":"","sources":["../../src/lib/checksum.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"checksum.d.ts","sourceRoot":"","sources":["../../src/lib/checksum.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAOzD,4DAA4D;AAC5D,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,wBAAwB,CAAC;CAClC;AAED,mDAAmD;AACnD,MAAM,MAAM,wBAAwB,GAAG,0BAA0B,GAAG,uBAAuB,GAAG,sBAAsB,CAAC;AAErH;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAE9D,oDAAoD;AACpD,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,KAAK,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAgBhE;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAG,CAAU,CAAC;AAElD;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAEjF;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAErD;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAcpE;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGhE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAK9E;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAatD;AAED;;;;;;GAMG;AACH,wBAAsB,2BAA2B,CAAC,CAAC,SAAS,qBAAqB,EAC/E,OAAO,EAAE,CAAC,EAAE,EACZ,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,CAAC,EAAE,CAAC,CAkBd;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEjG;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAC/C,OAAO,CAAC,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAgBpE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,qBAAqB,EAAE,EAChC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAkC/B"}
|
package/build/lib/checksum.js
CHANGED
|
@@ -22,19 +22,22 @@ export async function collectFilesRecursive(dirPath, baseDir) {
|
|
|
22
22
|
}
|
|
23
23
|
return results;
|
|
24
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* The lockfile `checksumVersion` of a digest from {@link computeConfigEntryChecksum}. A config entry
|
|
27
|
+
* without one was recorded by an older CLI with {@link legacyConfigEntryChecksum}.
|
|
28
|
+
*/
|
|
29
|
+
export const CONFIG_CHECKSUM_VERSION = 2;
|
|
25
30
|
/**
|
|
26
31
|
* Compute a deterministic SHA-256 checksum for a config entry value.
|
|
27
32
|
*
|
|
28
33
|
* Strips the `_managedBy` metadata key (added by ATK at write time),
|
|
29
|
-
* serializes the
|
|
30
|
-
*
|
|
31
|
-
* helper so the checksum logic stays in
|
|
34
|
+
* serializes the rest with keys sorted at every depth (so nested `env` and
|
|
35
|
+
* `headers` count), and returns the hex digest. Both the installer (write path)
|
|
36
|
+
* and the verifier (read path) use this helper so the checksum logic stays in
|
|
37
|
+
* one place.
|
|
32
38
|
*/
|
|
33
39
|
export function computeConfigEntryChecksum(entry) {
|
|
34
|
-
|
|
35
|
-
delete cleaned['_managedBy'];
|
|
36
|
-
const serialized = JSON.stringify(cleaned, Object.keys(cleaned).sort());
|
|
37
|
-
return hashString(serialized);
|
|
40
|
+
return hashString(stableStringify(withoutManagedBy(entry)));
|
|
38
41
|
}
|
|
39
42
|
/**
|
|
40
43
|
* Compute a deterministic SHA-256 checksum for a hook matcher-group.
|
|
@@ -99,10 +102,9 @@ export function matchesChecksum(content, expected) {
|
|
|
99
102
|
}
|
|
100
103
|
/**
|
|
101
104
|
* Deterministically serialize a value with object keys sorted recursively.
|
|
102
|
-
* Arrays keep their order; nested object keys are sorted at every level
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
* whose meaningful data (`command`, `timeout`) lives inside `hooks[]`.
|
|
105
|
+
* Arrays keep their order; nested object keys are sorted at every level, so
|
|
106
|
+
* deeply-nested fields count: a hook group's `command` and `timeout` inside
|
|
107
|
+
* `hooks[]`, an MCP server's `env` and `headers`.
|
|
106
108
|
*/
|
|
107
109
|
export function stableStringify(value) {
|
|
108
110
|
return JSON.stringify(value, (_key, val) => {
|
|
@@ -118,6 +120,31 @@ export function stableStringify(value) {
|
|
|
118
120
|
return val;
|
|
119
121
|
});
|
|
120
122
|
}
|
|
123
|
+
/**
|
|
124
|
+
* Re-record the config entries an older CLI checksummed with {@link legacyConfigEntryChecksum}, which
|
|
125
|
+
* can't see nested keys, as {@link computeConfigEntryChecksum} digests of the value the file holds
|
|
126
|
+
* now. Each entry without a `checksumVersion` whose value matches its legacy digest comes back with
|
|
127
|
+
* the deep digest and the current version; every other entry comes back as the same object. The
|
|
128
|
+
* legacy digest can't tell what the nested fields held when it was recorded, so this trusts them once.
|
|
129
|
+
*/
|
|
130
|
+
export async function upgradeConfigEntryChecksums(entries, projectDir) {
|
|
131
|
+
const upgraded = [];
|
|
132
|
+
for (const entry of entries) {
|
|
133
|
+
const config = entry.command === undefined && entry.checksumVersion === undefined
|
|
134
|
+
? await readEntryConfig(entry, projectDir)
|
|
135
|
+
: undefined;
|
|
136
|
+
const value = config && lookupEntryValue(config, entry.key);
|
|
137
|
+
if (!value || !matchesLegacyChecksum(entry, value)) {
|
|
138
|
+
upgraded.push(entry);
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
const deep = { checksum: computeConfigEntryChecksum(value), checksumVersion: CONFIG_CHECKSUM_VERSION };
|
|
142
|
+
// Keys in the order an install records them (checksum, checksumVersion, then the rest), so the
|
|
143
|
+
// committed lockfile doesn't reorder when the entry is next installed.
|
|
144
|
+
upgraded.push(Object.assign({ ...deep }, entry, deep));
|
|
145
|
+
}
|
|
146
|
+
return upgraded;
|
|
147
|
+
}
|
|
121
148
|
/**
|
|
122
149
|
* Compare a file's current checksum against an expected value (line-ending
|
|
123
150
|
* tolerant; see {@link matchesChecksum}).
|
|
@@ -153,7 +180,8 @@ export async function verifyChecksums(files) {
|
|
|
153
180
|
* 2. Splits the dot-path key into section/child and looks up the value →
|
|
154
181
|
* `CONFIG_KEY_NOT_FOUND` if missing.
|
|
155
182
|
* 3. Computes a checksum via `computeConfigEntryChecksum()` and compares →
|
|
156
|
-
* `CONFIG_CHECKSUM_MISMATCH` on divergence.
|
|
183
|
+
* `CONFIG_CHECKSUM_MISMATCH` on divergence. An entry without a
|
|
184
|
+
* `checksumVersion` (recorded by an older CLI) also matches its legacy digest.
|
|
157
185
|
*
|
|
158
186
|
* Returns only the entries that failed (empty array = all OK).
|
|
159
187
|
*
|
|
@@ -165,66 +193,28 @@ export async function verifyChecksums(files) {
|
|
|
165
193
|
export async function verifyConfigEntries(entries, projectDir) {
|
|
166
194
|
const failures = [];
|
|
167
195
|
for (const entry of entries) {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
let config;
|
|
172
|
-
try {
|
|
173
|
-
const raw = await readFile(absolutePath, 'utf-8');
|
|
174
|
-
config = parseConfig(raw, detectConfigFormat(entry.file));
|
|
175
|
-
}
|
|
176
|
-
catch {
|
|
196
|
+
// 1. Read and parse the config file
|
|
197
|
+
const config = await readEntryConfig(entry, projectDir);
|
|
198
|
+
if (!config) {
|
|
177
199
|
failures.push({ file: entry.file, key: entry.key, reason: 'CONFIG_FILE_NOT_FOUND' });
|
|
178
200
|
continue;
|
|
179
201
|
}
|
|
180
202
|
// Array-element (hook) entry: find the group owned by this asset's command.
|
|
181
203
|
if (entry.command !== undefined) {
|
|
182
|
-
const failure = verifyHookGroupEntry(config, entry);
|
|
204
|
+
const failure = verifyHookGroupEntry(config, { ...entry, command: entry.command });
|
|
183
205
|
if (failure) {
|
|
184
206
|
failures.push(failure);
|
|
185
207
|
}
|
|
186
208
|
continue;
|
|
187
209
|
}
|
|
188
210
|
// 2. Look up the value via dot-path (sectionKey.childKey)
|
|
189
|
-
const
|
|
190
|
-
|
|
191
|
-
const childKey = dotIndex === -1 ? undefined : entry.key.slice(dotIndex + 1);
|
|
192
|
-
const section = config[sectionKey];
|
|
193
|
-
if (childKey === undefined || section === null || section === undefined || typeof section !== 'object') {
|
|
194
|
-
// No child key means the key format is unexpected, or section missing
|
|
195
|
-
if (childKey === undefined) {
|
|
196
|
-
// Single-segment key — look up directly
|
|
197
|
-
if (!(sectionKey in config)) {
|
|
198
|
-
failures.push({ file: entry.file, key: entry.key, reason: 'CONFIG_KEY_NOT_FOUND' });
|
|
199
|
-
continue;
|
|
200
|
-
}
|
|
201
|
-
const value = config[sectionKey];
|
|
202
|
-
if (value === null || value === undefined || typeof value !== 'object') {
|
|
203
|
-
failures.push({ file: entry.file, key: entry.key, reason: 'CONFIG_KEY_NOT_FOUND' });
|
|
204
|
-
continue;
|
|
205
|
-
}
|
|
206
|
-
const actual = computeConfigEntryChecksum(value);
|
|
207
|
-
if (actual !== entry.checksum) {
|
|
208
|
-
failures.push({ file: entry.file, key: entry.key, reason: 'CONFIG_CHECKSUM_MISMATCH' });
|
|
209
|
-
}
|
|
210
|
-
continue;
|
|
211
|
-
}
|
|
212
|
-
failures.push({ file: entry.file, key: entry.key, reason: 'CONFIG_KEY_NOT_FOUND' });
|
|
213
|
-
continue;
|
|
214
|
-
}
|
|
215
|
-
const sectionObj = section;
|
|
216
|
-
if (!(childKey in sectionObj)) {
|
|
217
|
-
failures.push({ file: entry.file, key: entry.key, reason: 'CONFIG_KEY_NOT_FOUND' });
|
|
218
|
-
continue;
|
|
219
|
-
}
|
|
220
|
-
const value = sectionObj[childKey];
|
|
221
|
-
if (value === null || value === undefined || typeof value !== 'object') {
|
|
211
|
+
const value = lookupEntryValue(config, entry.key);
|
|
212
|
+
if (!value) {
|
|
222
213
|
failures.push({ file: entry.file, key: entry.key, reason: 'CONFIG_KEY_NOT_FOUND' });
|
|
223
214
|
continue;
|
|
224
215
|
}
|
|
225
216
|
// 3. Compute checksum and compare
|
|
226
|
-
|
|
227
|
-
if (actual !== entry.checksum) {
|
|
217
|
+
if (computeConfigEntryChecksum(value) !== entry.checksum && !matchesLegacyChecksum(entry, value)) {
|
|
228
218
|
failures.push({ file: entry.file, key: entry.key, reason: 'CONFIG_CHECKSUM_MISMATCH' });
|
|
229
219
|
}
|
|
230
220
|
}
|
|
@@ -232,6 +222,46 @@ export async function verifyConfigEntries(entries, projectDir) {
|
|
|
232
222
|
}
|
|
233
223
|
const CR = 0x0d;
|
|
234
224
|
const LF = 0x0a;
|
|
225
|
+
function isObject(value) {
|
|
226
|
+
return value !== null && typeof value === 'object';
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* The digest CLIs recorded before {@link CONFIG_CHECKSUM_VERSION}. Its array replacer is an allow-list
|
|
230
|
+
* of the top-level keys at every depth, so nested objects keep only keys that share a top-level
|
|
231
|
+
* name (`env` serializes as `{}`). Kept byte for byte so lockfiles those CLIs wrote still verify.
|
|
232
|
+
*/
|
|
233
|
+
function legacyConfigEntryChecksum(entry) {
|
|
234
|
+
const cleaned = withoutManagedBy(entry);
|
|
235
|
+
return hashString(JSON.stringify(cleaned, Object.keys(cleaned).sort()));
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* The object a config entry's dot-path key (`section.child`, or a single top-level key) names, or
|
|
239
|
+
* undefined when the key, or the value there, is missing or isn't an object.
|
|
240
|
+
*/
|
|
241
|
+
function lookupEntryValue(config, key) {
|
|
242
|
+
const dotIndex = key.indexOf('.');
|
|
243
|
+
const sectionKey = dotIndex === -1 ? key : key.slice(0, dotIndex);
|
|
244
|
+
const section = config[sectionKey];
|
|
245
|
+
const value = dotIndex === -1 ? section : isObject(section) ? section[key.slice(dotIndex + 1)] : undefined;
|
|
246
|
+
return isObject(value) ? value : undefined;
|
|
247
|
+
}
|
|
248
|
+
/** Whether an entry recorded before {@link CONFIG_CHECKSUM_VERSION} holds `value`, by its legacy digest. */
|
|
249
|
+
function matchesLegacyChecksum(entry, value) {
|
|
250
|
+
return entry.checksumVersion === undefined && legacyConfigEntryChecksum(value) === entry.checksum;
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Read and parse an entry's config file, with the format inferred from its extension (callers only
|
|
254
|
+
* hold lockfile entries, not the adapter placement), or undefined when it can't be read or parsed.
|
|
255
|
+
*/
|
|
256
|
+
async function readEntryConfig(entry, projectDir) {
|
|
257
|
+
try {
|
|
258
|
+
const raw = await readFile(fromRoot(projectDir, entry.file), 'utf-8');
|
|
259
|
+
return parseConfig(raw, detectConfigFormat(entry.file));
|
|
260
|
+
}
|
|
261
|
+
catch {
|
|
262
|
+
return undefined;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
235
265
|
/** Expects LF-only input, so every LF gains exactly one CR. */
|
|
236
266
|
function toCrlf(lf) {
|
|
237
267
|
let lines = 0;
|
|
@@ -284,4 +314,10 @@ function verifyHookGroupEntry(config, entry) {
|
|
|
284
314
|
}
|
|
285
315
|
return null;
|
|
286
316
|
}
|
|
317
|
+
/** A copy of a config entry value without the `_managedBy` marker ATK adds at write time. */
|
|
318
|
+
function withoutManagedBy(entry) {
|
|
319
|
+
const cleaned = { ...entry };
|
|
320
|
+
delete cleaned['_managedBy'];
|
|
321
|
+
return cleaned;
|
|
322
|
+
}
|
|
287
323
|
//# sourceMappingURL=checksum.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checksum.js","sourceRoot":"","sources":["../../src/lib/checksum.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"checksum.js","sourceRoot":"","sources":["../../src/lib/checksum.ts"],"names":[],"mappings":"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"}
|
package/build/lib/installer.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { InstallPlan, InstallPlanEntry } from './resolver.js';
|
|
2
2
|
import type { Adapter } from './schemas/adapter.js';
|
|
3
3
|
import type { RegistryAsset } from './schemas/index.js';
|
|
4
|
-
import type { Lockfile } from './schemas/lockfile.js';
|
|
4
|
+
import type { ConfigEntry, Lockfile } from './schemas/lockfile.js';
|
|
5
5
|
import { ApiCodeError } from './errors.js';
|
|
6
6
|
import { type AssetIdentity } from './lockfile.js';
|
|
7
7
|
import { type Scope } from './scope.js';
|
|
@@ -65,12 +65,7 @@ export interface InstallResult {
|
|
|
65
65
|
org?: string;
|
|
66
66
|
version: string;
|
|
67
67
|
};
|
|
68
|
-
configEntriesCreated: Array<
|
|
69
|
-
checksum: string;
|
|
70
|
-
command?: string;
|
|
71
|
-
file: string;
|
|
72
|
-
key: string;
|
|
73
|
-
}>;
|
|
68
|
+
configEntriesCreated: Array<Omit<ConfigEntry, 'tool'>>;
|
|
74
69
|
/** The config files the install created, relative like `configEntriesCreated[].file`; a rollback deletes them once empty. */
|
|
75
70
|
configFilesCreated?: string[];
|
|
76
71
|
/** The names the install added to its placement's enabled list (e.g. `enabledMcpjsonServers`). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/lib/installer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,KAAK,EAAE,OAAO,EAAmB,MAAM,sBAAsB,CAAC;AAErE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAiC,QAAQ,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/lib/installer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,KAAK,EAAE,OAAO,EAAmB,MAAM,sBAAsB,CAAC;AAErE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAiC,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAmClG,OAAO,EAAE,YAAY,EAA+B,MAAM,aAAa,CAAC;AAYxE,OAAO,EAEL,KAAK,aAAa,EAKnB,MAAM,eAAe,CAAC;AAMvB,OAAO,EAAE,KAAK,KAAK,EAAiB,MAAM,YAAY,CAAC;AAIvD,MAAM,WAAW,cAAc;IAC7B,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,kEAAkE;IAClE,YAAY,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,iGAAiG;IACjG,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,yEAAyE;IACzE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,eAAe,CAAC,EAAE,QAAQ,CAAC;IAC3B;;;;OAIG;IACH,WAAW,CAAC,EAAE,QAAQ,CAAC;IACvB,qCAAqC;IACrC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,8CAA8C;IAC9C,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,YAAY,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACrE,YAAY,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,oBAAoB,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD,6HAA6H;IAC7H,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,kGAAkG;IAClG,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,WAAW,EAAE,KAAK,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5D,aAAa,EAAE,YAAY,GAAG,QAAQ,CAAC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,+EAA+E;AAC/E,MAAM,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEhD,UAAU,SAAS;IACjB,4FAA4F;IAC5F,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,UAAU;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB;AA0BD,qBAAa,cAAe,SAAQ,YAAY;IACrC,IAAI,SAAoB;CAClC;AAQD;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,cAAc;IAC1C,IAAI,SAAuB;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sFAAsF;IACtF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBAEX,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,MAAM;CAYhE;AAED;;;;GAIG;AACH,qBAAa,gBAAiB,SAAQ,cAAc;IAClD,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC;IAC7D,SAAkB,KAAK,EAAE,OAAO,CAAC;IACjC,8GAA8G;IAC9G,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,SAAsB;gBAGjC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC,EACnD,KAAK,EAAE,OAAO,EACd,UAAU,EAAE,MAAM,EAClB,WAAW,UAAQ;CAWtB;AAED,mFAAmF;AACnF,qBAAa,iBAAkB,SAAQ,gBAAgB;IAC5C,IAAI,SAAuB;gBAExB,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO;CAIhF;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,WAAW,EACjB,WAAW,EAAE,KAAK,CAAC;IAAE,OAAO,EAAE,aAAa,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EAC9D,KAAK,GAAE,KAAiB,GACvB,IAAI,CAmBN;AAED;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAkJ7G;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAU5F;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC,GAAG,MAAM,CAOjH;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,GAAG,gBAAgB,EAAE,CAKxF;AAED;;;;;;;;GAQG;AACH,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC,EAChG,MAAM,EAAE,QAAQ,EAChB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,YAAY,GAAG,YAAY,CAAC,GACrE,OAAO,CAAC,QAAQ,CAAC,CAqFnB"}
|