@detergent-software/atk 9.2.0-dev.3 → 9.2.0-dev.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/README.md +2 -2
- package/build/command-manifest.json +8 -3
- package/build/commands/diff.d.ts +3 -2
- package/build/commands/diff.d.ts.map +1 -1
- package/build/commands/diff.js +48 -13
- package/build/commands/diff.js.map +1 -1
- package/build/components/DiffView.d.ts +11 -5
- package/build/components/DiffView.d.ts.map +1 -1
- package/build/components/DiffView.js +7 -5
- package/build/components/DiffView.js.map +1 -1
- package/build/lib/diff-command.d.ts +27 -2
- package/build/lib/diff-command.d.ts.map +1 -1
- package/build/lib/diff-command.js +39 -7
- package/build/lib/diff-command.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
## [9.2.0-dev.4](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv9.2.0-dev.3&targetVersion=GTv9.2.0-dev.4) (2026-10-23)
|
|
2
|
+
|
|
3
|
+
### Features
|
|
4
|
+
|
|
5
|
+
* **cli:** compare atk diff with a chosen version or the locked one ([ef0e182](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/ef0e182764ae57223037c695dfeda286f66d95e7))
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
* **cli:** keep atk diff's latest wording and outdated colour ([95894f7](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/95894f7cddd0f1dbfab06fea1494055147609035))
|
|
10
|
+
* **cli:** say when atk diff --installed finds its version unpublished ([7aed9ae](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/7aed9ae6d42afc32dedc12bddcf55952c1801a1c))
|
|
11
|
+
|
|
1
12
|
## [9.2.0-dev.3](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv9.2.0-dev.2&targetVersion=GTv9.2.0-dev.3) (2026-10-23)
|
|
2
13
|
|
|
3
14
|
### Features
|
package/README.md
CHANGED
|
@@ -77,7 +77,7 @@ atk update
|
|
|
77
77
|
| `atk checkout <name>` | Fetch a writable working copy of a registry asset for updating |
|
|
78
78
|
| `atk config` | Manage user configuration (`~/.atkrc.json`) |
|
|
79
79
|
| `atk deprecate <name>` | Deprecate an asset or bundle (or `--undo`) via PR, no new version |
|
|
80
|
-
| `atk diff <asset>` | Show changes
|
|
80
|
+
| `atk diff <asset>` | Show changes against the latest, `@<version>` or `--installed` |
|
|
81
81
|
| `atk doctor` | Run environment diagnostics |
|
|
82
82
|
| `atk info <asset>` | Show asset details, what depends on it and the bundles with it |
|
|
83
83
|
| `atk init` | Scaffold a new asset or bundle |
|
|
@@ -138,7 +138,7 @@ These fail a build when they find something (CLI 9.2.0+):
|
|
|
138
138
|
|
|
139
139
|
- `atk sync --check` exits 1 when the installed files don't match the lockfile: a file or config entry missing or changed, a local edit (which `atk sync` keeps but the check doesn't), a hook copy sync would remove because its locked version doesn't declare the tool, or an asset sync would refuse. Frozen assets and assets uninstalled for a tool pass, except such a hook copy left on disk. It changes nothing. Add `--user` to check the user scope. It can't be combined with `--force`.
|
|
140
140
|
- `atk outdated --exit-code` exits 1 when an installed asset has an update. A pin that doesn't match the installed version doesn't count.
|
|
141
|
-
- `atk diff <asset> --exit-code` exits 1 when the installed files differ from the latest version's. A newer version with the same files exits 0.
|
|
141
|
+
- `atk diff <asset> --exit-code` exits 1 when the installed files differ from the latest version's. A newer version with the same files exits 0. `atk diff <asset>@<version>` compares with that version instead, and `--installed` with the version the lockfile records, so `atk diff <asset> --installed --exit-code` fails only on local edits.
|
|
142
142
|
- `atk drift [path] --exit-code` exits 1 when a local asset folder differs from its published version.
|
|
143
143
|
|
|
144
144
|
`atk audit` exits 1 on a checksum failure, as before. Without these flags, the commands exit 0 when they find something. An error is still exit 1 (with `--json`, `"outcome": "error"`), and a usage error is exit 2. All four call the ATK API, so give them a token. A CI checkout has no `.atkrc.json` (it is gitignored), so name the tool with `--tool`:
|
|
@@ -224,11 +224,11 @@
|
|
|
224
224
|
"name": "diff",
|
|
225
225
|
"args": [
|
|
226
226
|
{
|
|
227
|
-
"description": "Asset name (supports @org/name syntax)",
|
|
227
|
+
"description": "Asset name (supports name@version and @org/name syntax)",
|
|
228
228
|
"name": "<name>"
|
|
229
229
|
}
|
|
230
230
|
],
|
|
231
|
-
"description": "Show changes between installed and latest version",
|
|
231
|
+
"description": "Show changes between installed files and the latest or a chosen version",
|
|
232
232
|
"file": "diff.js",
|
|
233
233
|
"options": [
|
|
234
234
|
{
|
|
@@ -239,7 +239,12 @@
|
|
|
239
239
|
},
|
|
240
240
|
{
|
|
241
241
|
"flags": "--exit-code",
|
|
242
|
-
"description": "Exit 1 when the installed files differ from the
|
|
242
|
+
"description": "Exit 1 when the installed files differ from the compared version's (for CI)",
|
|
243
|
+
"defaultValue": false
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
"flags": "--installed",
|
|
247
|
+
"description": "Compare with the version the lockfile records, which shows only local edits",
|
|
243
248
|
"defaultValue": false
|
|
244
249
|
},
|
|
245
250
|
{
|
package/build/commands/diff.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
export declare const description = "Show changes between installed and latest version";
|
|
2
|
+
export declare const description = "Show changes between installed files and the latest or a chosen version";
|
|
3
3
|
export declare const options: z.ZodObject<{
|
|
4
4
|
context: z.ZodDefault<z.ZodNumber>;
|
|
5
5
|
exitCode: z.ZodOptional<z.ZodBoolean>;
|
|
6
|
+
installed: z.ZodOptional<z.ZodBoolean>;
|
|
6
7
|
json: z.ZodDefault<z.ZodBoolean>;
|
|
7
8
|
org: z.ZodOptional<z.ZodString>;
|
|
8
9
|
projectRoot: z.ZodOptional<z.ZodString>;
|
|
@@ -15,6 +16,6 @@ type Props = {
|
|
|
15
16
|
args: z.infer<typeof args>;
|
|
16
17
|
options: z.infer<typeof options>;
|
|
17
18
|
};
|
|
18
|
-
export default function Diff({ args: [rawName], options: { context, exitCode, json, org: cliOrg, projectRoot, refresh, tool, user }, }: Props): import("react").JSX.Element;
|
|
19
|
+
export default function Diff({ args: [rawName], options: { context, exitCode, installed, json, org: cliOrg, projectRoot, refresh, tool, user }, }: Props): import("react").JSX.Element;
|
|
19
20
|
export {};
|
|
20
21
|
//# sourceMappingURL=diff.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/commands/diff.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/commands/diff.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,eAAO,MAAM,WAAW,4EAA4E,CAAC;AAErG,eAAO,MAAM,OAAO;;;;;;;;;;iBA+ElB,CAAC;AAEH,eAAO,MAAM,IAAI,iCAIf,CAAC;AAEH,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CAClC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,EAC3B,IAAI,EAAE,CAAC,OAAO,CAAC,EACf,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAC/F,EAAE,KAAK,+BAwHP"}
|
package/build/commands/diff.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Text } from 'ink';
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { DiffView, ErrorView, Spinner } from '../components/index.js';
|
|
5
5
|
import { useCommand } from '../hooks/useCommand.js';
|
|
@@ -7,7 +7,10 @@ import { computeDiffOutcome } from '../lib/diff-command.js';
|
|
|
7
7
|
import { parseOrgFromName } from '../lib/org.js';
|
|
8
8
|
import { renderJson, useNonInteractive } from '../lib/output.js';
|
|
9
9
|
import { argument, option } from '../lib/pastel/index.js';
|
|
10
|
-
|
|
10
|
+
import { scopedCommand } from '../lib/scope.js';
|
|
11
|
+
import { reportUsageError } from '../lib/usage-error.js';
|
|
12
|
+
import { parseNameVersion } from '../lib/version.js';
|
|
13
|
+
export const description = 'Show changes between installed files and the latest or a chosen version';
|
|
11
14
|
export const options = z.object({
|
|
12
15
|
context: z
|
|
13
16
|
.number()
|
|
@@ -20,7 +23,13 @@ export const options = z.object({
|
|
|
20
23
|
.boolean()
|
|
21
24
|
.optional()
|
|
22
25
|
.describe(option({
|
|
23
|
-
description: "Exit 1 when the installed files differ from the
|
|
26
|
+
description: "Exit 1 when the installed files differ from the compared version's (for CI)",
|
|
27
|
+
})),
|
|
28
|
+
installed: z
|
|
29
|
+
.boolean()
|
|
30
|
+
.optional()
|
|
31
|
+
.describe(option({
|
|
32
|
+
description: 'Compare with the version the lockfile records, which shows only local edits',
|
|
24
33
|
})),
|
|
25
34
|
json: z
|
|
26
35
|
.boolean()
|
|
@@ -65,13 +74,27 @@ export const options = z.object({
|
|
|
65
74
|
})),
|
|
66
75
|
});
|
|
67
76
|
export const args = z.tuple([
|
|
68
|
-
z
|
|
77
|
+
z
|
|
78
|
+
.string()
|
|
79
|
+
.describe(argument({ description: 'Asset name (supports name@version and @org/name syntax)', name: 'name' })),
|
|
69
80
|
]);
|
|
70
|
-
export default function Diff({ args: [rawName], options: { context, exitCode, json, org: cliOrg, projectRoot, refresh, tool, user }, }) {
|
|
71
|
-
|
|
72
|
-
const name
|
|
81
|
+
export default function Diff({ args: [rawName], options: { context, exitCode, installed, json, org: cliOrg, projectRoot, refresh, tool, user }, }) {
|
|
82
|
+
// The version first, so `@org/name@1.2.0` parses as info and install parse it.
|
|
83
|
+
const { name: parsedName, version } = parseNameVersion(rawName);
|
|
84
|
+
const { name: nameFromOrg, org: inlineOrg } = parseOrgFromName(parsedName);
|
|
85
|
+
const name = inlineOrg ? nameFromOrg : parsedName;
|
|
73
86
|
const { json: effectiveJson } = useNonInteractive(json);
|
|
74
|
-
const state = useCommand(async (progress) =>
|
|
87
|
+
const state = useCommand(async (progress) => {
|
|
88
|
+
if (version && installed) {
|
|
89
|
+
reportUsageError(`error: ${name}@${version} and --installed contradict each other: --installed compares with the locked version`, effectiveJson);
|
|
90
|
+
}
|
|
91
|
+
const target = installed
|
|
92
|
+
? { kind: 'installed' }
|
|
93
|
+
: version
|
|
94
|
+
? { kind: 'version', version }
|
|
95
|
+
: { kind: 'latest' };
|
|
96
|
+
return computeDiffOutcome(name, target, undefined, tool, context, refresh, projectRoot, user, cliOrg, inlineOrg, progress);
|
|
97
|
+
}, [cliOrg, context, effectiveJson, inlineOrg, installed, name, projectRoot, refresh, tool, user, version]);
|
|
75
98
|
if (state.status === 'loading') {
|
|
76
99
|
return _jsx(Spinner, { message: state.message });
|
|
77
100
|
}
|
|
@@ -88,9 +111,9 @@ export default function Diff({ args: [rawName], options: { context, exitCode, js
|
|
|
88
111
|
return _jsx(ErrorView, { command: state.command, hint: state.hint, message: state.message });
|
|
89
112
|
}
|
|
90
113
|
const { data } = state;
|
|
91
|
-
// Nothing to compare: the asset isn't installed, or the registry doesn't have it.
|
|
92
|
-
// --exit-code, files that differ fail too; a new version with the same files doesn't.
|
|
93
|
-
if (data.outcome
|
|
114
|
+
// Nothing to compare: the asset isn't installed, or the registry doesn't have it or the version.
|
|
115
|
+
// With --exit-code, files that differ fail too; a new version with the same files doesn't.
|
|
116
|
+
if (data.outcome !== 'results' || (exitCode && hasChanges(data))) {
|
|
94
117
|
process.exitCode = 1;
|
|
95
118
|
}
|
|
96
119
|
if (effectiveJson) {
|
|
@@ -102,12 +125,23 @@ export default function Diff({ args: [rawName], options: { context, exitCode, js
|
|
|
102
125
|
if (data.outcome === 'not-in-registry') {
|
|
103
126
|
return (_jsxs(Text, { children: [_jsx(Text, { color: 'yellow', children: "!" }), " ", _jsx(Text, { bold: true, children: data.name }), " was not found in the registry."] }));
|
|
104
127
|
}
|
|
105
|
-
|
|
128
|
+
if (data.outcome === 'version-not-found') {
|
|
129
|
+
return (_jsxs(Box, { flexDirection: 'column', children: [data.target === 'installed' ? (_jsxs(Text, { children: [_jsx(Text, { color: 'yellow', children: "!" }), " The installed version ", _jsxs(Text, { bold: true, children: ["\"", data.version, "\""] }), " of", ' ', _jsxs(Text, { bold: true, children: ["\"", data.name, "\""] }), " is no longer in the registry, so there is nothing to compare with."] })) : (_jsxs(Text, { children: [_jsx(Text, { color: 'yellow', children: "!" }), " Version ", _jsxs(Text, { bold: true, children: ["\"", data.version, "\""] }), " of ", _jsxs(Text, { bold: true, children: ["\"", data.name, "\""] }), ' ', "not found."] })), data.availableVersions.length > 0 && (_jsxs(Text, { dimColor: true, children: ["Available versions: ", data.availableVersions.join(', ')] })), data.target === 'installed' && (_jsxs(Text, { dimColor: true, children: ["Run ", _jsx(Text, { bold: true, children: scopedCommand(`atk update ${data.name}`, data.scope) }), " to move to the latest version."] }))] }));
|
|
130
|
+
}
|
|
131
|
+
return (_jsx(DiffView, { comparedVersion: data.comparedVersion, diffs: data.diffs, installedVersion: data.installed.version, latestVersion: data.latestVersion, name: data.name, sameVersion: data.sameVersion, scope: data.scope, target: data.target }));
|
|
106
132
|
}
|
|
107
133
|
function buildJsonOutput(data) {
|
|
108
134
|
if (data.outcome === 'not-installed' || data.outcome === 'not-in-registry') {
|
|
109
135
|
return { name: data.name, outcome: data.outcome };
|
|
110
136
|
}
|
|
137
|
+
if (data.outcome === 'version-not-found') {
|
|
138
|
+
return {
|
|
139
|
+
availableVersions: data.availableVersions,
|
|
140
|
+
name: data.name,
|
|
141
|
+
outcome: data.outcome,
|
|
142
|
+
version: data.version,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
111
145
|
const diffs = data.diffs.map((d) => ({
|
|
112
146
|
fileName: d.fileName,
|
|
113
147
|
...(d.localLines !== undefined ? { localLines: d.localLines } : {}),
|
|
@@ -115,6 +149,7 @@ function buildJsonOutput(data) {
|
|
|
115
149
|
status: d.status,
|
|
116
150
|
}));
|
|
117
151
|
return {
|
|
152
|
+
comparedVersion: data.comparedVersion,
|
|
118
153
|
diffs,
|
|
119
154
|
hasChanges: hasChanges(data),
|
|
120
155
|
installedVersion: data.installed.version,
|
|
@@ -124,7 +159,7 @@ function buildJsonOutput(data) {
|
|
|
124
159
|
sameVersion: data.sameVersion,
|
|
125
160
|
};
|
|
126
161
|
}
|
|
127
|
-
/** Whether any installed file differs from the
|
|
162
|
+
/** Whether any installed file differs from the compared version's. */
|
|
128
163
|
function hasChanges(data) {
|
|
129
164
|
return data.outcome === 'results' && data.diffs.some((d) => d.status !== 'unchanged');
|
|
130
165
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/commands/diff.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/commands/diff.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { DiffTarget } from '../lib/diff-command.js';
|
|
1
2
|
import type { DiffLine } from '../lib/diff.js';
|
|
2
3
|
import { type Scope } from '../lib/scope.js';
|
|
3
4
|
export interface FileDiffEntry {
|
|
@@ -8,6 +9,8 @@ export interface FileDiffEntry {
|
|
|
8
9
|
status: 'added' | 'missing-local' | 'modified' | 'removed' | 'unchanged';
|
|
9
10
|
}
|
|
10
11
|
interface DiffViewProps {
|
|
12
|
+
/** The registry version the installed files were compared with */
|
|
13
|
+
comparedVersion: string;
|
|
11
14
|
/** Array of file-level diffs */
|
|
12
15
|
diffs: FileDiffEntry[];
|
|
13
16
|
/** Installed version string */
|
|
@@ -16,16 +19,19 @@ interface DiffViewProps {
|
|
|
16
19
|
latestVersion: string;
|
|
17
20
|
/** Asset name being diffed */
|
|
18
21
|
name: string;
|
|
19
|
-
/** Whether
|
|
22
|
+
/** Whether the installed version is the latest */
|
|
20
23
|
sameVersion: boolean;
|
|
21
24
|
/** The scope the asset is installed in, for the update command */
|
|
22
25
|
scope?: Scope;
|
|
26
|
+
/** What was asked for: the latest, a chosen version, or the installed (locked) version */
|
|
27
|
+
target: DiffTarget['kind'];
|
|
23
28
|
}
|
|
24
29
|
/**
|
|
25
|
-
* Diff display for `atk diff` — shows file-level changes between
|
|
26
|
-
* installed and
|
|
27
|
-
* unified diff output for modified,
|
|
30
|
+
* Diff display for `atk diff` — shows file-level changes between the
|
|
31
|
+
* installed files of an asset and a registry version (the latest unless
|
|
32
|
+
* another was asked for), with inline unified diff output for modified,
|
|
33
|
+
* added, and removed files.
|
|
28
34
|
*/
|
|
29
|
-
export default function DiffView({ diffs, installedVersion, latestVersion, name, sameVersion, scope }: DiffViewProps): import("react").JSX.Element;
|
|
35
|
+
export default function DiffView({ comparedVersion, diffs, installedVersion, latestVersion, name, sameVersion, scope, target, }: DiffViewProps): import("react").JSX.Element;
|
|
30
36
|
export {};
|
|
31
37
|
//# sourceMappingURL=DiffView.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiffView.d.ts","sourceRoot":"","sources":["../../src/components/DiffView.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,KAAK,KAAK,EAAiB,MAAM,iBAAiB,CAAC;AAG5D,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,OAAO,GAAG,eAAe,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;CAC1E;AAED,UAAU,aAAa;IACrB,gCAAgC;IAChC,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,+BAA+B;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,qCAAqC;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,
|
|
1
|
+
{"version":3,"file":"DiffView.d.ts","sourceRoot":"","sources":["../../src/components/DiffView.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,KAAK,KAAK,EAAiB,MAAM,iBAAiB,CAAC;AAG5D,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,OAAO,GAAG,eAAe,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;CAC1E;AAED,UAAU,aAAa;IACrB,kEAAkE;IAClE,eAAe,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,+BAA+B;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,qCAAqC;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,WAAW,EAAE,OAAO,CAAC;IACrB,kEAAkE;IAClE,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,0FAA0F;IAC1F,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;CAC5B;AAED;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAC/B,eAAe,EACf,KAAK,EACL,gBAAgB,EAChB,aAAa,EACb,IAAI,EACJ,WAAW,EACX,KAAK,EACL,MAAM,GACP,EAAE,aAAa,+BAuDf"}
|
|
@@ -3,13 +3,15 @@ import { Box, Text } from 'ink';
|
|
|
3
3
|
import { scopedCommand } from '../lib/scope.js';
|
|
4
4
|
import { FileStatusIcon } from './StatusBadge.js';
|
|
5
5
|
/**
|
|
6
|
-
* Diff display for `atk diff` — shows file-level changes between
|
|
7
|
-
* installed and
|
|
8
|
-
* unified diff output for modified,
|
|
6
|
+
* Diff display for `atk diff` — shows file-level changes between the
|
|
7
|
+
* installed files of an asset and a registry version (the latest unless
|
|
8
|
+
* another was asked for), with inline unified diff output for modified,
|
|
9
|
+
* added, and removed files.
|
|
9
10
|
*/
|
|
10
|
-
export default function DiffView({ diffs, installedVersion, latestVersion, name, sameVersion, scope }) {
|
|
11
|
+
export default function DiffView({ comparedVersion, diffs, installedVersion, latestVersion, name, sameVersion, scope, target, }) {
|
|
11
12
|
const hasChanges = diffs.some((d) => d.status !== 'unchanged');
|
|
12
|
-
|
|
13
|
+
const comparedIsLatest = target !== 'installed' && comparedVersion === latestVersion;
|
|
14
|
+
return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { bold: true, children: ["Diff for ", _jsx(Text, { color: 'cyan', children: name })] }), target === 'installed' ? (_jsxs(Text, { children: ["Installed: ", _jsxs(Text, { color: 'green', children: ["v", installedVersion] }), _jsx(Text, { dimColor: true, children: " (compared with the locked version)" }), !sameVersion && _jsxs(Text, { dimColor: true, children: [" \u00B7 latest v", latestVersion] })] })) : comparedIsLatest ? (_jsxs(Text, { children: ["Installed: ", _jsxs(Text, { color: sameVersion ? 'green' : 'red', children: ["v", installedVersion] }), ' → ', "Latest: ", _jsxs(Text, { color: 'green', children: ["v", latestVersion] }), sameVersion && _jsx(Text, { dimColor: true, children: " (same version)" })] })) : (_jsxs(Text, { children: ["Installed: ", _jsxs(Text, { color: sameVersion ? 'green' : 'red', children: ["v", installedVersion] }), ' → ', "Compared: ", _jsxs(Text, { color: 'green', children: ["v", comparedVersion] }), installedVersion === comparedVersion && _jsx(Text, { dimColor: true, children: " (same version)" }), _jsxs(Text, { dimColor: true, children: [" \u00B7 latest v", latestVersion] })] })), _jsx(Text, { dimColor: true, children: '- registry + local' }), _jsx(Text, { children: " " }), !hasChanges ? (_jsxs(Text, { color: 'green', children: ["\u2713 No differences found. Local files match", ' ', comparedIsLatest ? 'the registry' : `the registry's v${comparedVersion}`, "."] })) : (_jsxs(_Fragment, { children: [diffs.map((diff, index) => (_jsx(DiffFileEntry, { diff: diff, isLastEntry: index === diffs.length - 1 }, diff.fileName))), comparedIsLatest && (_jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), _jsxs(Text, { dimColor: true, children: ["Run ", _jsx(Text, { bold: true, children: scopedCommand(`atk update ${name}`, scope) }), " to update to the latest version."] })] }))] }))] }));
|
|
13
15
|
}
|
|
14
16
|
/**
|
|
15
17
|
* Renders a single file entry within the diff view, including its status
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiffView.js","sourceRoot":"","sources":["../../src/components/DiffView.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"DiffView.js","sourceRoot":"","sources":["../../src/components/DiffView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,15 +3,27 @@ import type { RegistryAsset } from './schemas/index.js';
|
|
|
3
3
|
import type { InstalledAsset, InstalledFile } from './schemas/lockfile.js';
|
|
4
4
|
import { type Scope } from './scope.js';
|
|
5
5
|
export type DiffOutcome = {
|
|
6
|
+
/** The registry version the installed files were compared with. */
|
|
7
|
+
comparedVersion: string;
|
|
6
8
|
diffs: FileDiffEntry[];
|
|
7
9
|
installed: InstalledAsset;
|
|
8
10
|
latestVersion: string;
|
|
9
11
|
name: string;
|
|
10
12
|
outcome: 'results';
|
|
11
13
|
registryAsset: RegistryAsset;
|
|
14
|
+
/** Whether the installed version is the latest. */
|
|
12
15
|
sameVersion: boolean;
|
|
13
16
|
/** The scope the asset is installed in, for the update command. */
|
|
14
17
|
scope: Scope;
|
|
18
|
+
target: DiffTarget['kind'];
|
|
19
|
+
} | {
|
|
20
|
+
availableVersions: string[];
|
|
21
|
+
name: string;
|
|
22
|
+
outcome: 'version-not-found';
|
|
23
|
+
/** The scope the asset is installed in, for the update command. */
|
|
24
|
+
scope: Scope;
|
|
25
|
+
target: DiffTarget['kind'];
|
|
26
|
+
version: string;
|
|
15
27
|
} | {
|
|
16
28
|
name: string;
|
|
17
29
|
outcome: 'not-in-registry';
|
|
@@ -19,6 +31,18 @@ export type DiffOutcome = {
|
|
|
19
31
|
name: string;
|
|
20
32
|
outcome: 'not-installed';
|
|
21
33
|
};
|
|
34
|
+
/**
|
|
35
|
+
* What `atk diff` compares the installed files with: the latest version, a version (exact,
|
|
36
|
+
* range or `latest`, as `atk install` takes it), or the version the lockfile records.
|
|
37
|
+
*/
|
|
38
|
+
export type DiffTarget = {
|
|
39
|
+
kind: 'installed';
|
|
40
|
+
} | {
|
|
41
|
+
kind: 'latest';
|
|
42
|
+
} | {
|
|
43
|
+
kind: 'version';
|
|
44
|
+
version: string;
|
|
45
|
+
};
|
|
22
46
|
/** Describes a file to fetch for diff comparison, with its installed and remote paths. */
|
|
23
47
|
export interface FileFetchEntry {
|
|
24
48
|
file: InstalledFile;
|
|
@@ -27,9 +51,10 @@ export interface FileFetchEntry {
|
|
|
27
51
|
}
|
|
28
52
|
/**
|
|
29
53
|
* Core logic for the `atk diff` command. Computes the diff between a locally
|
|
30
|
-
* installed asset and
|
|
54
|
+
* installed asset and a version in the registry, the latest unless `target` names another.
|
|
31
55
|
*
|
|
32
56
|
* @param name - Asset name (without org prefix)
|
|
57
|
+
* @param target - The registry version to compare with
|
|
33
58
|
* @param org - Org from the --org CLI flag or inline @org/name syntax (already merged)
|
|
34
59
|
* @param tool - Tool override from --tool CLI flag
|
|
35
60
|
* @param context - Number of context lines for unified diff output
|
|
@@ -40,5 +65,5 @@ export interface FileFetchEntry {
|
|
|
40
65
|
* @param inlineOrg - Org parsed from @org/name syntax
|
|
41
66
|
* @param progress - Callback to report progress messages to the UI
|
|
42
67
|
*/
|
|
43
|
-
export declare function computeDiffOutcome(name: string, org: string | undefined, tool: string | undefined, context: number, refresh: boolean, projectRoot: string | undefined, user: boolean | undefined, cliOrg: string | undefined, inlineOrg: string | undefined, progress: (message: string) => void): Promise<DiffOutcome>;
|
|
68
|
+
export declare function computeDiffOutcome(name: string, target: DiffTarget, org: string | undefined, tool: string | undefined, context: number, refresh: boolean, projectRoot: string | undefined, user: boolean | undefined, cliOrg: string | undefined, inlineOrg: string | undefined, progress: (message: string) => void): Promise<DiffOutcome>;
|
|
44
69
|
//# sourceMappingURL=diff-command.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff-command.d.ts","sourceRoot":"","sources":["../../src/lib/diff-command.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAY,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"diff-command.d.ts","sourceRoot":"","sources":["../../src/lib/diff-command.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAY,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAsB3E,OAAO,EAAgB,KAAK,KAAK,EAAiB,MAAM,YAAY,CAAC;AAGrE,MAAM,MAAM,WAAW,GACnB;IACE,mEAAmE;IACnE,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,SAAS,EAAE,cAAc,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,SAAS,CAAC;IACnB,aAAa,EAAE,aAAa,CAAC;IAC7B,mDAAmD;IACnD,WAAW,EAAE,OAAO,CAAC;IACrB,mEAAmE;IACnE,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;CAC5B,GACD;IACE,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,mBAAmB,CAAC;IAC7B,mEAAmE;IACnE,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB,GACD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,eAAe,CAAA;CAAE,CAAC;AAE/C;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3G,0FAA0F;AAC1F,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,aAAa,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,IAAI,EAAE,OAAO,GAAG,SAAS,EACzB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAClC,OAAO,CAAC,WAAW,CAAC,CAiMtB"}
|
|
@@ -7,15 +7,16 @@ import { computeAddedFileDiff, computeRemovedFileDiff, computeUnifiedDiff } from
|
|
|
7
7
|
import { errorGuidance, errorMessage } from './errors.js';
|
|
8
8
|
import { findInstalledAssetWithFallback, readLockfile } from './lockfile.js';
|
|
9
9
|
import { resolveActiveOrg, scopeSwitchGuidance } from './org.js';
|
|
10
|
-
import { fetchAssetFileBytes, fetchRegistry, findAsset, listAssetFiles, RegistryError, versionTools, } from './registry.js';
|
|
10
|
+
import { fetchAssetFileBytes, fetchRegistry, findAsset, getSortedVersions, listAssetFiles, RegistryError, resolveAssetVersion, versionTools, } from './registry.js';
|
|
11
11
|
import { fromRoot } from './root-path.js';
|
|
12
12
|
import { resolveScope, scopedCommand } from './scope.js';
|
|
13
13
|
import { resolveTool } from './tool-resolver.js';
|
|
14
14
|
/**
|
|
15
15
|
* Core logic for the `atk diff` command. Computes the diff between a locally
|
|
16
|
-
* installed asset and
|
|
16
|
+
* installed asset and a version in the registry, the latest unless `target` names another.
|
|
17
17
|
*
|
|
18
18
|
* @param name - Asset name (without org prefix)
|
|
19
|
+
* @param target - The registry version to compare with
|
|
19
20
|
* @param org - Org from the --org CLI flag or inline @org/name syntax (already merged)
|
|
20
21
|
* @param tool - Tool override from --tool CLI flag
|
|
21
22
|
* @param context - Number of context lines for unified diff output
|
|
@@ -26,7 +27,7 @@ import { resolveTool } from './tool-resolver.js';
|
|
|
26
27
|
* @param inlineOrg - Org parsed from @org/name syntax
|
|
27
28
|
* @param progress - Callback to report progress messages to the UI
|
|
28
29
|
*/
|
|
29
|
-
export async function computeDiffOutcome(name, org, tool, context, refresh, projectRoot, user, cliOrg, inlineOrg, progress) {
|
|
30
|
+
export async function computeDiffOutcome(name, target, org, tool, context, refresh, projectRoot, user, cliOrg, inlineOrg, progress) {
|
|
30
31
|
const { root: projectDir, scope } = await resolveScope({ projectRoot, user });
|
|
31
32
|
progress('Loading configuration...');
|
|
32
33
|
const config = await loadConfig();
|
|
@@ -67,11 +68,29 @@ export async function computeDiffOutcome(name, org, tool, context, refresh, proj
|
|
|
67
68
|
throw Object.assign(new Error(message), guidance);
|
|
68
69
|
}
|
|
69
70
|
const { asset: registryAsset, version: latestVersion } = foundAsset;
|
|
70
|
-
|
|
71
|
+
let comparedVersion = latestVersion;
|
|
72
|
+
const requested = requestedVersion(target, installed);
|
|
73
|
+
if (requested !== undefined) {
|
|
74
|
+
// The locked version too: it may have been unpublished since it was installed.
|
|
75
|
+
const resolvedTarget = resolveAssetVersion(registryAsset, requested);
|
|
76
|
+
if (!resolvedTarget) {
|
|
77
|
+
const { versions: availableVersions } = getSortedVersions(registryAsset);
|
|
78
|
+
return {
|
|
79
|
+
availableVersions,
|
|
80
|
+
name,
|
|
81
|
+
outcome: 'version-not-found',
|
|
82
|
+
scope,
|
|
83
|
+
target: target.kind,
|
|
84
|
+
version: requested,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
comparedVersion = resolvedTarget.version;
|
|
88
|
+
}
|
|
89
|
+
progress(`Fetching v${comparedVersion}...`);
|
|
71
90
|
const assetRef = { name: registryAsset.name, org: registryAsset.org, type: registryAsset.type };
|
|
72
91
|
let remoteFilesList;
|
|
73
92
|
try {
|
|
74
|
-
remoteFilesList = await listAssetFiles(assetRef,
|
|
93
|
+
remoteFilesList = await listAssetFiles(assetRef, comparedVersion);
|
|
75
94
|
}
|
|
76
95
|
catch (error) {
|
|
77
96
|
throw new RegistryError(`Failed to list asset directory files for "${name}": ${errorMessage(error)}`, errorGuidance(error));
|
|
@@ -114,7 +133,7 @@ export async function computeDiffOutcome(name, org, tool, context, refresh, proj
|
|
|
114
133
|
filesToFetch.push({ file, installedPath, remotePath: remoteFile.relativePath });
|
|
115
134
|
}
|
|
116
135
|
// Fetch all remote file contents in parallel
|
|
117
|
-
const remoteContents = await Promise.all(filesToFetch.map(async ({ remotePath }) => fetchRemoteText(assetRef,
|
|
136
|
+
const remoteContents = await Promise.all(filesToFetch.map(async ({ remotePath }) => fetchRemoteText(assetRef, comparedVersion, remotePath)));
|
|
118
137
|
// Read all local file contents in parallel
|
|
119
138
|
const localContents = await Promise.all(filesToFetch.map(async ({ installedPath }) => readFile(fromRoot(projectDir, installedPath), 'utf-8')));
|
|
120
139
|
// Build diffs from fetched content
|
|
@@ -145,7 +164,7 @@ export async function computeDiffOutcome(name, org, tool, context, refresh, proj
|
|
|
145
164
|
// Collect added files (present in registry but not in installed files), then batch-fetch in parallel
|
|
146
165
|
const installedSourcePaths = new Set(installed.files.map((f) => f.sourcePath));
|
|
147
166
|
const addedRemoteFiles = [...remoteFiles.values()].filter((rf) => !installedSourcePaths.has(rf.relativePath));
|
|
148
|
-
const addedContents = await Promise.all(addedRemoteFiles.map(async (rf) => fetchRemoteText(assetRef,
|
|
167
|
+
const addedContents = await Promise.all(addedRemoteFiles.map(async (rf) => fetchRemoteText(assetRef, comparedVersion, rf.relativePath)));
|
|
149
168
|
for (let i = 0; i < addedRemoteFiles.length; i++) {
|
|
150
169
|
const remoteFile = addedRemoteFiles[i];
|
|
151
170
|
const remoteContent = addedContents[i];
|
|
@@ -153,6 +172,7 @@ export async function computeDiffOutcome(name, org, tool, context, refresh, proj
|
|
|
153
172
|
}
|
|
154
173
|
const sameVersion = installed.version === latestVersion;
|
|
155
174
|
return {
|
|
175
|
+
comparedVersion,
|
|
156
176
|
diffs,
|
|
157
177
|
installed,
|
|
158
178
|
latestVersion,
|
|
@@ -161,12 +181,24 @@ export async function computeDiffOutcome(name, org, tool, context, refresh, proj
|
|
|
161
181
|
registryAsset,
|
|
162
182
|
sameVersion,
|
|
163
183
|
scope,
|
|
184
|
+
target: target.kind,
|
|
164
185
|
};
|
|
165
186
|
}
|
|
166
187
|
/** Fetch one remote file and decode it as UTF-8 text for diffing. */
|
|
167
188
|
async function fetchRemoteText(ref, version, relativePath) {
|
|
168
189
|
return (await fetchAssetFileBytes(ref, version, relativePath)).toString('utf-8');
|
|
169
190
|
}
|
|
191
|
+
/** The version `target` asks for, or undefined for the latest. */
|
|
192
|
+
function requestedVersion(target, installed) {
|
|
193
|
+
switch (target.kind) {
|
|
194
|
+
case 'installed':
|
|
195
|
+
return installed.version;
|
|
196
|
+
case 'latest':
|
|
197
|
+
return undefined;
|
|
198
|
+
case 'version':
|
|
199
|
+
return target.version;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
170
202
|
/**
|
|
171
203
|
* The error for diffing a hook marked undeclared for `tool` (`undeclaredTools`): the registry no
|
|
172
204
|
* longer has its locked version, the version doesn't declare the tool, or it now does, and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff-command.js","sourceRoot":"","sources":["../../src/lib/diff-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAM5C,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,8BAA8B,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,EAEL,mBAAmB,EACnB,aAAa,EACb,SAAS,EACT,cAAc,EACd,aAAa,EAEb,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAc,aAAa,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"diff-command.js","sourceRoot":"","sources":["../../src/lib/diff-command.ts"],"names":[],"mappings":"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"}
|