@detergent-software/atk 7.12.0 → 7.13.0-dev.2
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 +9 -6
- package/build/commands/audit.d.ts.map +1 -1
- package/build/commands/audit.js +36 -5
- package/build/commands/audit.js.map +1 -1
- package/build/commands/browse.js +7 -2
- package/build/commands/browse.js.map +1 -1
- package/build/commands/install.d.ts.map +1 -1
- package/build/commands/install.js +34 -10
- package/build/commands/install.js.map +1 -1
- package/build/commands/list.js +13 -1
- package/build/commands/list.js.map +1 -1
- package/build/commands/promote.d.ts +10 -1
- package/build/commands/promote.d.ts.map +1 -1
- package/build/commands/promote.js +30 -31
- package/build/commands/promote.js.map +1 -1
- package/build/commands/release-notes.js +1 -1
- package/build/commands/release-notes.js.map +1 -1
- package/build/commands/setup.d.ts +2 -2
- package/build/commands/setup.d.ts.map +1 -1
- package/build/commands/setup.js +7 -4
- package/build/commands/setup.js.map +1 -1
- package/build/commands/sync.js +12 -8
- package/build/commands/sync.js.map +1 -1
- package/build/commands/uninstall.d.ts.map +1 -1
- package/build/commands/uninstall.js +25 -11
- package/build/commands/uninstall.js.map +1 -1
- package/build/commands/unpublish.d.ts +10 -1
- package/build/commands/unpublish.d.ts.map +1 -1
- package/build/commands/unpublish.js +30 -19
- package/build/commands/unpublish.js.map +1 -1
- package/build/commands/update.d.ts.map +1 -1
- package/build/commands/update.js +19 -5
- package/build/commands/update.js.map +1 -1
- package/build/components/ExcludedSkippedHint.d.ts +13 -0
- package/build/components/ExcludedSkippedHint.d.ts.map +1 -0
- package/build/components/ExcludedSkippedHint.js +12 -0
- package/build/components/ExcludedSkippedHint.js.map +1 -0
- package/build/components/RegistryChangeSummary.d.ts +21 -0
- package/build/components/RegistryChangeSummary.d.ts.map +1 -0
- package/build/components/RegistryChangeSummary.js +24 -0
- package/build/components/RegistryChangeSummary.js.map +1 -0
- package/build/components/StatusBadge.d.ts +1 -1
- package/build/components/StatusBadge.d.ts.map +1 -1
- package/build/components/StatusBadge.js +2 -0
- package/build/components/StatusBadge.js.map +1 -1
- package/build/components/SyncAllInSync.d.ts +3 -1
- package/build/components/SyncAllInSync.d.ts.map +1 -1
- package/build/components/SyncAllInSync.js +3 -2
- package/build/components/SyncAllInSync.js.map +1 -1
- package/build/components/SyncDriftedList.d.ts +3 -1
- package/build/components/SyncDriftedList.d.ts.map +1 -1
- package/build/components/SyncDriftedList.js +4 -3
- package/build/components/SyncDriftedList.js.map +1 -1
- package/build/components/index.d.ts +2 -0
- package/build/components/index.d.ts.map +1 -1
- package/build/components/index.js +2 -0
- package/build/components/index.js.map +1 -1
- package/build/hooks/useListActions.d.ts +1 -0
- package/build/hooks/useListActions.d.ts.map +1 -1
- package/build/hooks/useListActions.js +1 -0
- package/build/hooks/useListActions.js.map +1 -1
- package/build/hooks/usePruneState.d.ts +1 -1
- package/build/hooks/usePruneState.d.ts.map +1 -1
- package/build/hooks/usePruneState.js +11 -5
- package/build/hooks/usePruneState.js.map +1 -1
- package/build/hooks/useRegistryChangeState.d.ts +57 -0
- package/build/hooks/useRegistryChangeState.d.ts.map +1 -0
- package/build/hooks/useRegistryChangeState.js +112 -0
- package/build/hooks/useRegistryChangeState.js.map +1 -0
- package/build/hooks/useSetupState.d.ts +2 -1
- package/build/hooks/useSetupState.d.ts.map +1 -1
- package/build/hooks/useSetupState.js +17 -6
- package/build/hooks/useSetupState.js.map +1 -1
- package/build/hooks/useUninstallState.d.ts +21 -9
- package/build/hooks/useUninstallState.d.ts.map +1 -1
- package/build/hooks/useUninstallState.js +76 -15
- package/build/hooks/useUninstallState.js.map +1 -1
- package/build/lib/api/index.d.ts +2 -2
- package/build/lib/api/index.d.ts.map +1 -1
- package/build/lib/api/index.js +1 -1
- package/build/lib/api/index.js.map +1 -1
- package/build/lib/api/sdk.gen.d.ts +21 -1
- package/build/lib/api/sdk.gen.d.ts.map +1 -1
- package/build/lib/api/sdk.gen.js +56 -0
- package/build/lib/api/sdk.gen.js.map +1 -1
- package/build/lib/api/types.gen.d.ts +387 -0
- package/build/lib/api/types.gen.d.ts.map +1 -1
- package/build/lib/api-client.d.ts +5 -0
- package/build/lib/api-client.d.ts.map +1 -1
- package/build/lib/api-client.js +31 -0
- package/build/lib/api-client.js.map +1 -1
- package/build/lib/asset-tools.d.ts +55 -0
- package/build/lib/asset-tools.d.ts.map +1 -0
- package/build/lib/asset-tools.js +71 -0
- package/build/lib/asset-tools.js.map +1 -0
- package/build/lib/auth.d.ts +1 -14
- package/build/lib/auth.d.ts.map +1 -1
- package/build/lib/auth.js +1 -30
- package/build/lib/auth.js.map +1 -1
- package/build/lib/checksum.d.ts.map +1 -1
- package/build/lib/checksum.js +4 -2
- package/build/lib/checksum.js.map +1 -1
- package/build/lib/config-entries.d.ts +52 -0
- package/build/lib/config-entries.d.ts.map +1 -0
- package/build/lib/config-entries.js +71 -0
- package/build/lib/config-entries.js.map +1 -0
- package/build/lib/config-file.d.ts +49 -0
- package/build/lib/config-file.d.ts.map +1 -0
- package/build/lib/config-file.js +84 -0
- package/build/lib/config-file.js.map +1 -0
- package/build/lib/diagnostics.d.ts.map +1 -1
- package/build/lib/diagnostics.js +1 -19
- package/build/lib/diagnostics.js.map +1 -1
- package/build/lib/diff-command.d.ts.map +1 -1
- package/build/lib/diff-command.js +15 -3
- package/build/lib/diff-command.js.map +1 -1
- package/build/lib/init.d.ts.map +1 -1
- package/build/lib/init.js +6 -4
- package/build/lib/init.js.map +1 -1
- package/build/lib/installer.d.ts +17 -0
- package/build/lib/installer.d.ts.map +1 -1
- package/build/lib/installer.js +102 -38
- package/build/lib/installer.js.map +1 -1
- package/build/lib/lockfile.d.ts +11 -0
- package/build/lib/lockfile.d.ts.map +1 -1
- package/build/lib/lockfile.js +14 -0
- package/build/lib/lockfile.js.map +1 -1
- package/build/lib/publisher.d.ts.map +1 -1
- package/build/lib/publisher.js +1 -7
- package/build/lib/publisher.js.map +1 -1
- package/build/lib/registry-mutate.d.ts +23 -64
- package/build/lib/registry-mutate.d.ts.map +1 -1
- package/build/lib/registry-mutate.js +50 -409
- package/build/lib/registry-mutate.js.map +1 -1
- package/build/lib/registry-repo.d.ts +2 -3
- package/build/lib/registry-repo.d.ts.map +1 -1
- package/build/lib/registry-repo.js +2 -3
- package/build/lib/registry-repo.js.map +1 -1
- package/build/lib/release-notes.d.ts +18 -14
- package/build/lib/release-notes.d.ts.map +1 -1
- package/build/lib/release-notes.js +10 -42
- package/build/lib/release-notes.js.map +1 -1
- package/build/lib/schemas/adapter.d.ts +10 -0
- package/build/lib/schemas/adapter.d.ts.map +1 -1
- package/build/lib/schemas/adapter.js +8 -0
- package/build/lib/schemas/adapter.js.map +1 -1
- package/build/lib/schemas/lockfile.d.ts +5 -0
- package/build/lib/schemas/lockfile.d.ts.map +1 -1
- package/build/lib/schemas/lockfile.js +8 -0
- package/build/lib/schemas/lockfile.js.map +1 -1
- package/build/lib/setup.d.ts +6 -0
- package/build/lib/setup.d.ts.map +1 -1
- package/build/lib/setup.js +49 -4
- package/build/lib/setup.js.map +1 -1
- package/build/lib/sync.d.ts +9 -1
- package/build/lib/sync.d.ts.map +1 -1
- package/build/lib/sync.js +31 -8
- package/build/lib/sync.js.map +1 -1
- package/build/lib/uninstaller.d.ts +35 -0
- package/build/lib/uninstaller.d.ts.map +1 -1
- package/build/lib/uninstaller.js +96 -29
- package/build/lib/uninstaller.js.map +1 -1
- package/build/lib/updater.d.ts +6 -0
- package/build/lib/updater.d.ts.map +1 -1
- package/build/lib/updater.js +35 -3
- package/build/lib/updater.js.map +1 -1
- package/build/lib/write-file.d.ts +13 -0
- package/build/lib/write-file.d.ts.map +1 -1
- package/build/lib/write-file.js +22 -0
- package/build/lib/write-file.js.map +1 -1
- package/package.json +2 -1
- package/tool-adapters/codex-cli.json +31 -0
- package/build/hooks/usePromoteState.d.ts +0 -51
- package/build/hooks/usePromoteState.d.ts.map +0 -1
- package/build/hooks/usePromoteState.js +0 -139
- package/build/hooks/usePromoteState.js.map +0 -1
- package/build/hooks/useUnpublishState.d.ts +0 -52
- package/build/hooks/useUnpublishState.d.ts.map +0 -1
- package/build/hooks/useUnpublishState.js +0 -140
- package/build/hooks/useUnpublishState.js.map +0 -1
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { getOtherToolsConfigEntries } from './config-entries.js';
|
|
2
|
+
/**
|
|
3
|
+
* The `excludedTools` to record after (re)installing an asset for one tool: the previously
|
|
4
|
+
* recorded exclusions minus the tool being installed. Returns undefined when none remain so
|
|
5
|
+
* the field is omitted from the lockfile.
|
|
6
|
+
*/
|
|
7
|
+
export function carryExcludedTools(previous, installingTool) {
|
|
8
|
+
const remaining = (previous?.excludedTools ?? []).filter((t) => t !== installingTool);
|
|
9
|
+
return remaining.length > 0 ? remaining : undefined;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Describe what a removal for `removingTools` does to the lockfile entries of the given assets.
|
|
13
|
+
* With `configuredAdapters` undefined the removal is not tool-scoped: every entry is dropped.
|
|
14
|
+
*/
|
|
15
|
+
export function describeLockfileEffects(assets, removingTools, configuredAdapters) {
|
|
16
|
+
return assets.map((asset) => {
|
|
17
|
+
const remainingTools = configuredAdapters ? getRemainingTools(asset, removingTools, configuredAdapters) : [];
|
|
18
|
+
return {
|
|
19
|
+
entryKept: remainingTools.length > 0,
|
|
20
|
+
name: asset.name,
|
|
21
|
+
...(asset.org ? { org: asset.org } : {}),
|
|
22
|
+
remainingTools,
|
|
23
|
+
type: asset.type,
|
|
24
|
+
};
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* The lockfile entry to keep after uninstalling an asset for one tool: the tool is recorded in
|
|
29
|
+
* `excludedTools` (sorted, so teammates do not reorder the committed lockfile) and only the
|
|
30
|
+
* other tools' config entries are kept.
|
|
31
|
+
*/
|
|
32
|
+
export function excludeToolFromAsset(asset, adapter) {
|
|
33
|
+
const { configEntries: _configEntries, excludedTools: _excludedTools, ...rest } = asset;
|
|
34
|
+
const otherEntries = getOtherToolsConfigEntries(asset, adapter);
|
|
35
|
+
const excludedTools = [...new Set([...(asset.excludedTools ?? []), adapter.tool])].sort();
|
|
36
|
+
return {
|
|
37
|
+
...rest,
|
|
38
|
+
...(otherEntries.length > 0 ? { configEntries: otherEntries } : {}),
|
|
39
|
+
excludedTools,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Tools that still have the asset once it is removed for `removingTools`: the configured
|
|
44
|
+
* adapters that can place this asset type, plus any tool that tagged a config entry on the
|
|
45
|
+
* asset (the lockfile is shared, so a teammate's tool may not be configured locally), minus
|
|
46
|
+
* the tools already excluded and the ones being removed now.
|
|
47
|
+
*/
|
|
48
|
+
export function getRemainingTools(asset, removingTools, configuredAdapters) {
|
|
49
|
+
const candidates = new Set();
|
|
50
|
+
for (const adapter of configuredAdapters) {
|
|
51
|
+
if (supportsType(adapter, asset.type)) {
|
|
52
|
+
candidates.add(adapter.tool);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
for (const entry of asset.configEntries ?? []) {
|
|
56
|
+
if (entry.tool !== undefined) {
|
|
57
|
+
candidates.add(entry.tool);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const gone = new Set([...(asset.excludedTools ?? []), ...removingTools]);
|
|
61
|
+
return [...candidates].filter((t) => !gone.has(t)).sort();
|
|
62
|
+
}
|
|
63
|
+
/** Whether the asset was explicitly uninstalled for the given tool. */
|
|
64
|
+
export function isExcludedForTool(asset, tool) {
|
|
65
|
+
return (asset.excludedTools ?? []).includes(tool);
|
|
66
|
+
}
|
|
67
|
+
/** Whether the adapter has a placement for the asset type (mirrors adapter.ts `supportsAssetType`). */
|
|
68
|
+
export function supportsType(adapter, assetType) {
|
|
69
|
+
return assetType in adapter.placements;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=asset-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset-tools.js","sourceRoot":"","sources":["../../src/lib/asset-tools.ts"],"names":[],"mappings":"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"}
|
package/build/lib/auth.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export interface Credential {
|
|
|
15
15
|
/** Where a credential came from, in chain order. */
|
|
16
16
|
export type CredentialSource = 'ATK_TOKEN' | 'config' | 'entra' | 'gh' | 'GITHUB_TOKEN';
|
|
17
17
|
/**
|
|
18
|
-
* Clear the cached credential
|
|
18
|
+
* Clear the cached credential. Useful for testing, and for
|
|
19
19
|
* `atk login` / `atk logout`, which change what the chain would return.
|
|
20
20
|
*/
|
|
21
21
|
export declare function clearTokenCache(): void;
|
|
@@ -35,24 +35,11 @@ export declare function clearTokenCache(): void;
|
|
|
35
35
|
* start the device-code flow themselves.
|
|
36
36
|
*/
|
|
37
37
|
export declare function getCredential(): Promise<Credential>;
|
|
38
|
-
/**
|
|
39
|
-
* Get a GitHub token specifically (never an Entra token).
|
|
40
|
-
*
|
|
41
|
-
* Resolution order: `githubToken` config → `GITHUB_TOKEN` → `gh auth token`.
|
|
42
|
-
* Only for operations that talk to GitHub directly (`atk unpublish`,
|
|
43
|
-
* `atk promote`, `atk release-notes`); everything that talks to the ATK API
|
|
44
|
-
* goes through {@link getCredential}.
|
|
45
|
-
*/
|
|
46
|
-
export declare function getGitHubToken(): Promise<string>;
|
|
47
38
|
/**
|
|
48
39
|
* The Entra session outcome seen by the last credential resolution, or
|
|
49
40
|
* `undefined` if the chain has not run (or stopped at `ATK_TOKEN`).
|
|
50
41
|
*/
|
|
51
42
|
export declare function getLastEntraSession(): EntraSession | undefined;
|
|
52
|
-
/**
|
|
53
|
-
* Check if the gh CLI is installed and available.
|
|
54
|
-
*/
|
|
55
|
-
export declare function isGhCliAvailable(): Promise<boolean>;
|
|
56
43
|
/**
|
|
57
44
|
* Validate that a token is accepted by the ATK API by calling `GET /me` with
|
|
58
45
|
* exactly that token — never the process-cached one. Works for GitHub and
|
package/build/lib/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAKpD,OAAO,EAAE,KAAK,YAAY,EAAmB,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGpD,qBAAa,SAAU,SAAQ,KAAK;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;gBAEF,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB;CAM5D;AAED,2FAA2F;AAC3F,eAAO,MAAM,iBAAiB,cAAc,CAAC;AAE7C,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,oDAAoD;AACpD,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAKpD,OAAO,EAAE,KAAK,YAAY,EAAmB,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGpD,qBAAa,SAAU,SAAQ,KAAK;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;gBAEF,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB;CAM5D;AAED,2FAA2F;AAC3F,eAAO,MAAM,iBAAiB,cAAc,CAAC;AAE7C,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,oDAAoD;AACpD,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,cAAc,CAAC;AAaxF;;;GAGG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAGtC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC,CAMnD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,YAAY,GAAG,SAAS,CAE9D;AAED;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;IAAE,SAAS,CAAC,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC,CAqBvE"}
|
package/build/lib/auth.js
CHANGED
|
@@ -22,16 +22,14 @@ const SESSION_EXPIRED_MESSAGE = 'Your Emergent sign-in has expired. Run `atk log
|
|
|
22
22
|
const GITHUB_HINT = 'Run `gh auth login`, or set the GITHUB_TOKEN environment variable.';
|
|
23
23
|
/** Cached results so a process resolves each chain at most once. */
|
|
24
24
|
let cachedCredential;
|
|
25
|
-
let cachedGitHubToken;
|
|
26
25
|
/** The Entra outcome the last {@link getCredential} run observed, for `atk doctor`. */
|
|
27
26
|
let lastEntraSession;
|
|
28
27
|
/**
|
|
29
|
-
* Clear the cached credential
|
|
28
|
+
* Clear the cached credential. Useful for testing, and for
|
|
30
29
|
* `atk login` / `atk logout`, which change what the chain would return.
|
|
31
30
|
*/
|
|
32
31
|
export function clearTokenCache() {
|
|
33
32
|
cachedCredential = undefined;
|
|
34
|
-
cachedGitHubToken = undefined;
|
|
35
33
|
lastEntraSession = undefined;
|
|
36
34
|
}
|
|
37
35
|
/**
|
|
@@ -56,23 +54,6 @@ export function getCredential() {
|
|
|
56
54
|
});
|
|
57
55
|
return cachedCredential;
|
|
58
56
|
}
|
|
59
|
-
/**
|
|
60
|
-
* Get a GitHub token specifically (never an Entra token).
|
|
61
|
-
*
|
|
62
|
-
* Resolution order: `githubToken` config → `GITHUB_TOKEN` → `gh auth token`.
|
|
63
|
-
* Only for operations that talk to GitHub directly (`atk unpublish`,
|
|
64
|
-
* `atk promote`, `atk release-notes`); everything that talks to the ATK API
|
|
65
|
-
* goes through {@link getCredential}.
|
|
66
|
-
*/
|
|
67
|
-
export function getGitHubToken() {
|
|
68
|
-
cachedGitHubToken ??= resolveGitHubToken()
|
|
69
|
-
.then((found) => found.token)
|
|
70
|
-
.catch((err) => {
|
|
71
|
-
cachedGitHubToken = undefined;
|
|
72
|
-
throw err;
|
|
73
|
-
});
|
|
74
|
-
return cachedGitHubToken;
|
|
75
|
-
}
|
|
76
57
|
/**
|
|
77
58
|
* The Entra session outcome seen by the last credential resolution, or
|
|
78
59
|
* `undefined` if the chain has not run (or stopped at `ATK_TOKEN`).
|
|
@@ -80,16 +61,6 @@ export function getGitHubToken() {
|
|
|
80
61
|
export function getLastEntraSession() {
|
|
81
62
|
return lastEntraSession;
|
|
82
63
|
}
|
|
83
|
-
/**
|
|
84
|
-
* Check if the gh CLI is installed and available.
|
|
85
|
-
*/
|
|
86
|
-
export function isGhCliAvailable() {
|
|
87
|
-
return new Promise((resolve) => {
|
|
88
|
-
execFile('gh', ['--version'], { timeout: 5_000 }, (error) => {
|
|
89
|
-
resolve(!error);
|
|
90
|
-
});
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
64
|
/**
|
|
94
65
|
* Validate that a token is accepted by the ATK API by calling `GET /me` with
|
|
95
66
|
* exactly that token — never the process-cached one. Works for GitHub and
|
package/build/lib/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAI9C,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAqB,eAAe,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAyB,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,OAAO,SAAU,SAAQ,KAAK;IAClC,OAAO,CAAU;IACjB,IAAI,CAAU;IAEd,YAAY,OAAe,EAAE,UAA4B,EAAE;QACzD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACjC,CAAC;CACF;AAED,2FAA2F;AAC3F,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAC;AAU7C,MAAM,qBAAqB,GACzB,uHAAuH,CAAC;AAC1H,MAAM,uBAAuB,GAC3B,qHAAqH,CAAC;AACxH,MAAM,WAAW,GAAG,oEAAoE,CAAC;AAEzF,oEAAoE;AACpE,IAAI,gBAAiD,CAAC;AACtD,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -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":"AAOA,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,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;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAMjF;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,KAAK,EAAE,OAAO,GAAG,MAAM,CAatD;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGjG;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;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,EACjF,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA2E/B"}
|
package/build/lib/checksum.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { createHash } from 'node:crypto';
|
|
2
2
|
import { readdir, readFile } from 'node:fs/promises';
|
|
3
3
|
import { join } from 'node:path';
|
|
4
|
+
import { detectConfigFormat, parseConfig } from './config-file.js';
|
|
4
5
|
import { hookGroupOwnsCommand } from './hook-config.js';
|
|
5
6
|
/** Recursively collect all files in a directory. */
|
|
6
7
|
export async function collectFilesRecursive(dirPath, baseDir) {
|
|
@@ -148,11 +149,12 @@ export async function verifyConfigEntries(entries, projectDir) {
|
|
|
148
149
|
const failures = [];
|
|
149
150
|
for (const entry of entries) {
|
|
150
151
|
const absolutePath = join(projectDir, entry.file);
|
|
151
|
-
// 1. Read and parse the config file
|
|
152
|
+
// 1. Read and parse the config file (format inferred from the extension —
|
|
153
|
+
// callers only hold lockfile entries, not the adapter placement)
|
|
152
154
|
let config;
|
|
153
155
|
try {
|
|
154
156
|
const raw = await readFile(absolutePath, 'utf-8');
|
|
155
|
-
config =
|
|
157
|
+
config = parseConfig(raw, detectConfigFormat(entry.file));
|
|
156
158
|
}
|
|
157
159
|
catch {
|
|
158
160
|
failures.push({ file: entry.file, key: entry.key, reason: 'CONFIG_FILE_NOT_FOUND' });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checksum.js","sourceRoot":"","sources":["../../src/lib/checksum.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"checksum.js","sourceRoot":"","sources":["../../src/lib/checksum.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { Adapter } from './schemas/adapter.js';
|
|
2
|
+
import type { ConfigEntry, InstalledAsset } from './schemas/lockfile.js';
|
|
3
|
+
/**
|
|
4
|
+
* Helpers for scoping an installed asset's lockfile `configEntries` to a single tool.
|
|
5
|
+
*
|
|
6
|
+
* The lockfile is tool-agnostic and shared by teammates who may use different tools,
|
|
7
|
+
* but a config entry is inherently tool-specific (its `file`, `command` and `checksum`
|
|
8
|
+
* all differ per adapter). Each entry is therefore tagged with the `tool` that
|
|
9
|
+
* registered it, and every consumer (installer, uninstaller, sync, audit) must only
|
|
10
|
+
* act on the entries belonging to the adapter it is running for.
|
|
11
|
+
*
|
|
12
|
+
* Entries written by older CLI versions carry no `tool` tag; their owner is inferred
|
|
13
|
+
* by matching the entry's `file` against the adapter placement's `configFile`.
|
|
14
|
+
*
|
|
15
|
+
* This module is intentionally dependency-free (type-only imports) so it can be shared
|
|
16
|
+
* by the installer, uninstaller, sync and audit without import cycles.
|
|
17
|
+
*/
|
|
18
|
+
type AssetConfigEntries = Pick<InstalledAsset, 'configEntries' | 'type'>;
|
|
19
|
+
/**
|
|
20
|
+
* Whether a lockfile config entry belongs to the given adapter's tool.
|
|
21
|
+
* Tagged entries match on `tool`; untagged legacy entries match when their file is
|
|
22
|
+
* the config file this adapter registers the asset type in.
|
|
23
|
+
*/
|
|
24
|
+
export declare function configEntryBelongsToTool(entry: ConfigEntry, adapter: Adapter, assetType: string): boolean;
|
|
25
|
+
/** The asset's recorded config entries that belong to the given adapter's tool. */
|
|
26
|
+
export declare function getConfigEntriesForTool(asset: AssetConfigEntries, adapter: Adapter): ConfigEntry[];
|
|
27
|
+
/** The asset's recorded config entries that belong to any tool other than the given adapter's. */
|
|
28
|
+
export declare function getOtherToolsConfigEntries(asset: AssetConfigEntries | undefined, adapter: Adapter): ConfigEntry[];
|
|
29
|
+
/**
|
|
30
|
+
* Build the config entries to record after (re)installing an asset for one tool:
|
|
31
|
+
* other tools' previously recorded entries are preserved verbatim, this tool's stale
|
|
32
|
+
* entries are dropped, and the freshly registered entries are tagged with the tool.
|
|
33
|
+
*
|
|
34
|
+
* The result is ordered by tool so that teammates syncing under different tools do
|
|
35
|
+
* not reorder the committed lockfile.
|
|
36
|
+
*/
|
|
37
|
+
export declare function mergeConfigEntriesForTool(previous: AssetConfigEntries | undefined, adapter: Adapter, fresh: Array<Omit<ConfigEntry, 'tool'>>): ConfigEntry[];
|
|
38
|
+
/**
|
|
39
|
+
* Whether an asset is missing its config registration for the given tool: the adapter
|
|
40
|
+
* registers this asset type in a config file, the asset has recorded entries for some
|
|
41
|
+
* other tool, but none for this one. This repairs multi-tool projects where only one
|
|
42
|
+
* tool's registration was ever recorded.
|
|
43
|
+
*
|
|
44
|
+
* Assets with no recorded entries at all are left alone — a hook with no event
|
|
45
|
+
* bindings, a legacy lockfile, or a memory-template legitimately has none, and
|
|
46
|
+
* flagging them would re-sync the asset forever.
|
|
47
|
+
*/
|
|
48
|
+
export declare function needsConfigRegistration(asset: AssetConfigEntries, adapter: Adapter): boolean;
|
|
49
|
+
/** Normalize a project-relative config path for comparison: POSIX separators, no leading `./`. */
|
|
50
|
+
export declare function normalizeConfigPath(path: string): string;
|
|
51
|
+
export {};
|
|
52
|
+
//# sourceMappingURL=config-entries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-entries.d.ts","sourceRoot":"","sources":["../../src/lib/config-entries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEzE;;;;;;;;;;;;;;GAcG;AAEH,KAAK,kBAAkB,GAAG,IAAI,CAAC,cAAc,EAAE,eAAe,GAAG,MAAM,CAAC,CAAC;AAEzE;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAWzG;AAED,mFAAmF;AACnF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,GAAG,WAAW,EAAE,CAElG;AAED,kGAAkG;AAClG,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,kBAAkB,GAAG,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,WAAW,EAAE,CAKjH;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,kBAAkB,GAAG,SAAS,EACxC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,GACtC,WAAW,EAAE,CAQf;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAS5F;AAED,kGAAkG;AAClG,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMxD"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether a lockfile config entry belongs to the given adapter's tool.
|
|
3
|
+
* Tagged entries match on `tool`; untagged legacy entries match when their file is
|
|
4
|
+
* the config file this adapter registers the asset type in.
|
|
5
|
+
*/
|
|
6
|
+
export function configEntryBelongsToTool(entry, adapter, assetType) {
|
|
7
|
+
if (entry.tool !== undefined) {
|
|
8
|
+
return entry.tool === adapter.tool;
|
|
9
|
+
}
|
|
10
|
+
const placement = adapter.placements[assetType];
|
|
11
|
+
if (!placement?.configFile) {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
return normalizeConfigPath(entry.file) === normalizeConfigPath(placement.configFile);
|
|
15
|
+
}
|
|
16
|
+
/** The asset's recorded config entries that belong to the given adapter's tool. */
|
|
17
|
+
export function getConfigEntriesForTool(asset, adapter) {
|
|
18
|
+
return (asset.configEntries ?? []).filter((e) => configEntryBelongsToTool(e, adapter, asset.type));
|
|
19
|
+
}
|
|
20
|
+
/** The asset's recorded config entries that belong to any tool other than the given adapter's. */
|
|
21
|
+
export function getOtherToolsConfigEntries(asset, adapter) {
|
|
22
|
+
if (!asset) {
|
|
23
|
+
return [];
|
|
24
|
+
}
|
|
25
|
+
return (asset.configEntries ?? []).filter((e) => !configEntryBelongsToTool(e, adapter, asset.type));
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Build the config entries to record after (re)installing an asset for one tool:
|
|
29
|
+
* other tools' previously recorded entries are preserved verbatim, this tool's stale
|
|
30
|
+
* entries are dropped, and the freshly registered entries are tagged with the tool.
|
|
31
|
+
*
|
|
32
|
+
* The result is ordered by tool so that teammates syncing under different tools do
|
|
33
|
+
* not reorder the committed lockfile.
|
|
34
|
+
*/
|
|
35
|
+
export function mergeConfigEntriesForTool(previous, adapter, fresh) {
|
|
36
|
+
const merged = [
|
|
37
|
+
...getOtherToolsConfigEntries(previous, adapter),
|
|
38
|
+
...fresh.map((e) => ({ ...e, tool: adapter.tool })),
|
|
39
|
+
];
|
|
40
|
+
// Array.prototype.sort is stable, so entries keep their relative order within a tool.
|
|
41
|
+
return merged.sort((a, b) => (a.tool ?? '').localeCompare(b.tool ?? ''));
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Whether an asset is missing its config registration for the given tool: the adapter
|
|
45
|
+
* registers this asset type in a config file, the asset has recorded entries for some
|
|
46
|
+
* other tool, but none for this one. This repairs multi-tool projects where only one
|
|
47
|
+
* tool's registration was ever recorded.
|
|
48
|
+
*
|
|
49
|
+
* Assets with no recorded entries at all are left alone — a hook with no event
|
|
50
|
+
* bindings, a legacy lockfile, or a memory-template legitimately has none, and
|
|
51
|
+
* flagging them would re-sync the asset forever.
|
|
52
|
+
*/
|
|
53
|
+
export function needsConfigRegistration(asset, adapter) {
|
|
54
|
+
const placement = adapter.placements[asset.type];
|
|
55
|
+
if (!placement?.configFile || !placement.configKey) {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
if ((asset.configEntries?.length ?? 0) === 0) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
return getConfigEntriesForTool(asset, adapter).length === 0;
|
|
62
|
+
}
|
|
63
|
+
/** Normalize a project-relative config path for comparison: POSIX separators, no leading `./`. */
|
|
64
|
+
export function normalizeConfigPath(path) {
|
|
65
|
+
let normalized = path.replace(/\\/g, '/');
|
|
66
|
+
while (normalized.startsWith('./')) {
|
|
67
|
+
normalized = normalized.slice(2);
|
|
68
|
+
}
|
|
69
|
+
return normalized;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=config-entries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-entries.js","sourceRoot":"","sources":["../../src/lib/config-entries.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { PlacementConfig } from './schemas/adapter.js';
|
|
2
|
+
/**
|
|
3
|
+
* Format-aware read/write helpers for tool config files that ATK registers
|
|
4
|
+
* assets into (e.g. Claude Code's `.mcp.json`, Codex CLI's `.codex/config.toml`).
|
|
5
|
+
*
|
|
6
|
+
* The installer, uninstaller, checksum verifier, and init fork all mutate or
|
|
7
|
+
* inspect these files. Historically every path assumed JSON; this module lets
|
|
8
|
+
* an adapter placement declare `configFormat: "toml"` (or rely on the file
|
|
9
|
+
* extension) so the same merge/verify logic works for TOML targets.
|
|
10
|
+
*/
|
|
11
|
+
/** Serialization formats supported for tool config files. */
|
|
12
|
+
export type ConfigFormat = 'json' | 'toml';
|
|
13
|
+
/**
|
|
14
|
+
* Infer the config format from a file path. `.toml` (any case) → `toml`,
|
|
15
|
+
* everything else → `json`. Used where only a lockfile entry (file + key) is
|
|
16
|
+
* available and no placement is in scope.
|
|
17
|
+
*/
|
|
18
|
+
export declare function detectConfigFormat(filePath: string): ConfigFormat;
|
|
19
|
+
/**
|
|
20
|
+
* Normalize a value so that what is checksummed equals what will be read back
|
|
21
|
+
* from disk after a write. TOML has no null: smol-toml silently drops
|
|
22
|
+
* null/undefined object members on serialize, so strip them up front. JSON is
|
|
23
|
+
* returned unchanged.
|
|
24
|
+
*/
|
|
25
|
+
export declare function normalizeForFormat<T>(value: T, format: ConfigFormat): T;
|
|
26
|
+
/**
|
|
27
|
+
* Parse config text in the given format. Throws on syntax errors
|
|
28
|
+
* (`SyntaxError` for JSON, `TomlError` for TOML).
|
|
29
|
+
*/
|
|
30
|
+
export declare function parseConfig(raw: string, format: ConfigFormat): Record<string, unknown>;
|
|
31
|
+
/**
|
|
32
|
+
* Read and parse a config file. Propagates filesystem errors (e.g. ENOENT)
|
|
33
|
+
* like `readFile` — callers keep their own existence guards.
|
|
34
|
+
*/
|
|
35
|
+
export declare function readConfigFile(filePath: string, format: ConfigFormat): Promise<Record<string, unknown>>;
|
|
36
|
+
/**
|
|
37
|
+
* Resolve the format for a placement's config file: an explicit
|
|
38
|
+
* `configFormat` wins, otherwise the file extension decides.
|
|
39
|
+
*/
|
|
40
|
+
export declare function resolveConfigFormat(filePath: string, placement?: Pick<PlacementConfig, 'configFormat'> | undefined): ConfigFormat;
|
|
41
|
+
/**
|
|
42
|
+
* Serialize and write a config file in the given format, idempotently.
|
|
43
|
+
*
|
|
44
|
+
* For TOML, re-serializing drops any comments the user had in the file; when
|
|
45
|
+
* that is about to happen, a one-line warning is emitted through `onProgress`
|
|
46
|
+
* so the loss is visible rather than silent.
|
|
47
|
+
*/
|
|
48
|
+
export declare function writeConfigFile(filePath: string, data: Record<string, unknown>, format: ConfigFormat, onProgress?: (message: string) => void): Promise<void>;
|
|
49
|
+
//# sourceMappingURL=config-file.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-file.d.ts","sourceRoot":"","sources":["../../src/lib/config-file.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAI5D;;;;;;;;GAQG;AAEH,6DAA6D;AAC7D,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3C;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAEjE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,GAAG,CAAC,CAKvE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEtF;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAG7G;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,cAAc,CAAC,GAAG,SAAS,GAC5D,YAAY,CAEd;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,EAAE,YAAY,EACpB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GACrC,OAAO,CAAC,IAAI,CAAC,CAcf"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { readFile } from 'node:fs/promises';
|
|
3
|
+
import { extname } from 'node:path';
|
|
4
|
+
import { parse as parseToml } from 'smol-toml';
|
|
5
|
+
import { writeJsonFile, writeTomlFile } from './write-file.js';
|
|
6
|
+
/**
|
|
7
|
+
* Infer the config format from a file path. `.toml` (any case) → `toml`,
|
|
8
|
+
* everything else → `json`. Used where only a lockfile entry (file + key) is
|
|
9
|
+
* available and no placement is in scope.
|
|
10
|
+
*/
|
|
11
|
+
export function detectConfigFormat(filePath) {
|
|
12
|
+
return extname(filePath).toLowerCase() === '.toml' ? 'toml' : 'json';
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Normalize a value so that what is checksummed equals what will be read back
|
|
16
|
+
* from disk after a write. TOML has no null: smol-toml silently drops
|
|
17
|
+
* null/undefined object members on serialize, so strip them up front. JSON is
|
|
18
|
+
* returned unchanged.
|
|
19
|
+
*/
|
|
20
|
+
export function normalizeForFormat(value, format) {
|
|
21
|
+
if (format !== 'toml') {
|
|
22
|
+
return value;
|
|
23
|
+
}
|
|
24
|
+
return stripNullish(value);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Parse config text in the given format. Throws on syntax errors
|
|
28
|
+
* (`SyntaxError` for JSON, `TomlError` for TOML).
|
|
29
|
+
*/
|
|
30
|
+
export function parseConfig(raw, format) {
|
|
31
|
+
return (format === 'toml' ? parseToml(raw) : JSON.parse(raw));
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Read and parse a config file. Propagates filesystem errors (e.g. ENOENT)
|
|
35
|
+
* like `readFile` — callers keep their own existence guards.
|
|
36
|
+
*/
|
|
37
|
+
export async function readConfigFile(filePath, format) {
|
|
38
|
+
const raw = await readFile(filePath, 'utf-8');
|
|
39
|
+
return parseConfig(raw, format);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Resolve the format for a placement's config file: an explicit
|
|
43
|
+
* `configFormat` wins, otherwise the file extension decides.
|
|
44
|
+
*/
|
|
45
|
+
export function resolveConfigFormat(filePath, placement) {
|
|
46
|
+
return placement?.configFormat ?? detectConfigFormat(filePath);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Serialize and write a config file in the given format, idempotently.
|
|
50
|
+
*
|
|
51
|
+
* For TOML, re-serializing drops any comments the user had in the file; when
|
|
52
|
+
* that is about to happen, a one-line warning is emitted through `onProgress`
|
|
53
|
+
* so the loss is visible rather than silent.
|
|
54
|
+
*/
|
|
55
|
+
export async function writeConfigFile(filePath, data, format, onProgress) {
|
|
56
|
+
if (format === 'json') {
|
|
57
|
+
await writeJsonFile(filePath, data);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
if (onProgress && existsSync(filePath)) {
|
|
61
|
+
const existing = await readFile(filePath, 'utf-8');
|
|
62
|
+
if (/^\s*#/m.test(existing)) {
|
|
63
|
+
onProgress(`Warning: rewriting ${filePath} — TOML comments and custom formatting are not preserved`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
await writeTomlFile(filePath, data);
|
|
67
|
+
}
|
|
68
|
+
/** Recursively drop null/undefined members from plain objects (arrays are mapped, not filtered). */
|
|
69
|
+
function stripNullish(value) {
|
|
70
|
+
if (Array.isArray(value)) {
|
|
71
|
+
return value.map(stripNullish);
|
|
72
|
+
}
|
|
73
|
+
if (value !== null && typeof value === 'object') {
|
|
74
|
+
const out = {};
|
|
75
|
+
for (const [key, member] of Object.entries(value)) {
|
|
76
|
+
if (member === null || member === undefined)
|
|
77
|
+
continue;
|
|
78
|
+
out[key] = stripNullish(member);
|
|
79
|
+
}
|
|
80
|
+
return out;
|
|
81
|
+
}
|
|
82
|
+
return value;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=config-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-file.js","sourceRoot":"","sources":["../../src/lib/config-file.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/lib/diagnostics.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAW9D;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAqBjE;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EACnC,mBAAmB,CAAC,EAAE,MAAM,GAC3B,OAAO,CAAC,eAAe,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/lib/diagnostics.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAW9D;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAqBjE;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EACnC,mBAAmB,CAAC,EAAE,MAAM,GAC3B,OAAO,CAAC,eAAe,EAAE,CAAC,CAgK5B"}
|
package/build/lib/diagnostics.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { existsSync } from 'node:fs';
|
|
2
2
|
import { resolveApiUrl } from './api-client.js';
|
|
3
|
-
import { getCredential, getLastEntraSession,
|
|
3
|
+
import { getCredential, getLastEntraSession, validateToken } from './auth.js';
|
|
4
4
|
import { loadConfig, loadProjectConfig } from './config.js';
|
|
5
5
|
import { detectTools, getAdapterDiagnostics } from './detector.js';
|
|
6
6
|
import { getEntraCachePath } from './entra.js';
|
|
@@ -50,24 +50,6 @@ export async function runDiagnostics(progress, projectRootOverride) {
|
|
|
50
50
|
// Check Node.js version
|
|
51
51
|
progress('Checking Node.js...');
|
|
52
52
|
checks.push(checkNodeVersion(process.version));
|
|
53
|
-
// Check gh CLI
|
|
54
|
-
progress('Checking GitHub CLI...');
|
|
55
|
-
const ghAvailable = await isGhCliAvailable();
|
|
56
|
-
if (ghAvailable) {
|
|
57
|
-
checks.push({
|
|
58
|
-
message: 'Installed and available',
|
|
59
|
-
name: 'GitHub CLI (gh)',
|
|
60
|
-
status: 'pass',
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
checks.push({
|
|
65
|
-
detail: 'Install from https://cli.github.com, or set githubToken in config / GITHUB_TOKEN. Not needed when signed in with `atk login`, except for those two commands.',
|
|
66
|
-
message: 'Not found — used as a GitHub token source and for `atk unpublish`/`atk promote`',
|
|
67
|
-
name: 'GitHub CLI (gh)',
|
|
68
|
-
status: 'warn',
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
53
|
// Check user config
|
|
72
54
|
progress('Checking configuration...');
|
|
73
55
|
let config;
|