@detergent-software/atk 9.2.0-dev.1 → 9.2.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.
Files changed (136) hide show
  1. package/CHANGELOG.md +112 -0
  2. package/README.md +32 -15
  3. package/build/command-manifest.json +81 -5
  4. package/build/commands/browse.d.ts.map +1 -1
  5. package/build/commands/browse.js +119 -16
  6. package/build/commands/browse.js.map +1 -1
  7. package/build/commands/diff.d.ts +4 -2
  8. package/build/commands/diff.d.ts.map +1 -1
  9. package/build/commands/diff.js +86 -13
  10. package/build/commands/diff.js.map +1 -1
  11. package/build/commands/drift.d.ts +2 -1
  12. package/build/commands/drift.d.ts.map +1 -1
  13. package/build/commands/drift.js +8 -3
  14. package/build/commands/drift.js.map +1 -1
  15. package/build/commands/freeze.d.ts +2 -2
  16. package/build/commands/freeze.d.ts.map +1 -1
  17. package/build/commands/freeze.js +45 -22
  18. package/build/commands/freeze.js.map +1 -1
  19. package/build/commands/info.d.ts.map +1 -1
  20. package/build/commands/info.js +18 -2
  21. package/build/commands/info.js.map +1 -1
  22. package/build/commands/install.d.ts +2 -2
  23. package/build/commands/install.d.ts.map +1 -1
  24. package/build/commands/install.js +285 -58
  25. package/build/commands/install.js.map +1 -1
  26. package/build/commands/outdated.d.ts +2 -1
  27. package/build/commands/outdated.d.ts.map +1 -1
  28. package/build/commands/outdated.js +11 -1
  29. package/build/commands/outdated.js.map +1 -1
  30. package/build/commands/pin.d.ts +2 -2
  31. package/build/commands/pin.d.ts.map +1 -1
  32. package/build/commands/pin.js +77 -46
  33. package/build/commands/pin.js.map +1 -1
  34. package/build/commands/schema.d.ts +1 -1
  35. package/build/commands/sync.d.ts +14 -2
  36. package/build/commands/sync.d.ts.map +1 -1
  37. package/build/commands/sync.js +86 -17
  38. package/build/commands/sync.js.map +1 -1
  39. package/build/commands/thaw.d.ts +2 -2
  40. package/build/commands/thaw.d.ts.map +1 -1
  41. package/build/commands/thaw.js +44 -21
  42. package/build/commands/thaw.js.map +1 -1
  43. package/build/commands/uninstall.d.ts +2 -2
  44. package/build/commands/uninstall.d.ts.map +1 -1
  45. package/build/commands/uninstall.js +35 -11
  46. package/build/commands/uninstall.js.map +1 -1
  47. package/build/commands/unpin.d.ts +2 -2
  48. package/build/commands/unpin.d.ts.map +1 -1
  49. package/build/commands/unpin.js +54 -25
  50. package/build/commands/unpin.js.map +1 -1
  51. package/build/commands/update.d.ts +3 -2
  52. package/build/commands/update.d.ts.map +1 -1
  53. package/build/commands/update.js +270 -74
  54. package/build/commands/update.js.map +1 -1
  55. package/build/components/BrowseList.d.ts +3 -1
  56. package/build/components/BrowseList.d.ts.map +1 -1
  57. package/build/components/BrowseList.js +12 -6
  58. package/build/components/BrowseList.js.map +1 -1
  59. package/build/components/BundleDetail.d.ts +3 -1
  60. package/build/components/BundleDetail.d.ts.map +1 -1
  61. package/build/components/BundleDetail.js +4 -2
  62. package/build/components/BundleDetail.js.map +1 -1
  63. package/build/components/DiffView.d.ts +34 -5
  64. package/build/components/DiffView.d.ts.map +1 -1
  65. package/build/components/DiffView.js +47 -8
  66. package/build/components/DiffView.js.map +1 -1
  67. package/build/components/Field.js +1 -1
  68. package/build/components/Field.js.map +1 -1
  69. package/build/components/HelpBar.d.ts +5 -1
  70. package/build/components/HelpBar.d.ts.map +1 -1
  71. package/build/components/HelpBar.js +18 -4
  72. package/build/components/HelpBar.js.map +1 -1
  73. package/build/components/InstallConfirmBar.d.ts +4 -2
  74. package/build/components/InstallConfirmBar.d.ts.map +1 -1
  75. package/build/components/InstallConfirmBar.js +15 -2
  76. package/build/components/InstallConfirmBar.js.map +1 -1
  77. package/build/components/index.d.ts +1 -1
  78. package/build/components/index.d.ts.map +1 -1
  79. package/build/components/index.js +1 -1
  80. package/build/components/index.js.map +1 -1
  81. package/build/hooks/useBrowseState.d.ts +31 -1
  82. package/build/hooks/useBrowseState.d.ts.map +1 -1
  83. package/build/hooks/useBrowseState.js +99 -15
  84. package/build/hooks/useBrowseState.js.map +1 -1
  85. package/build/hooks/useUninstallState.d.ts +22 -2
  86. package/build/hooks/useUninstallState.d.ts.map +1 -1
  87. package/build/hooks/useUninstallState.js +161 -16
  88. package/build/hooks/useUninstallState.js.map +1 -1
  89. package/build/lib/atk-api/generated/types.gen.d.ts +8 -8
  90. package/build/lib/atk-schemas/claude-plugin.d.ts +56 -0
  91. package/build/lib/atk-schemas/claude-plugin.d.ts.map +1 -0
  92. package/build/lib/atk-schemas/claude-plugin.js +199 -0
  93. package/build/lib/atk-schemas/claude-plugin.js.map +1 -0
  94. package/build/lib/atk-schemas/index.d.ts +3 -0
  95. package/build/lib/atk-schemas/index.d.ts.map +1 -1
  96. package/build/lib/atk-schemas/index.js +3 -0
  97. package/build/lib/atk-schemas/index.js.map +1 -1
  98. package/build/lib/config.d.ts +18 -0
  99. package/build/lib/config.d.ts.map +1 -1
  100. package/build/lib/config.js +32 -9
  101. package/build/lib/config.js.map +1 -1
  102. package/build/lib/diff-command.d.ts +43 -3
  103. package/build/lib/diff-command.d.ts.map +1 -1
  104. package/build/lib/diff-command.js +93 -15
  105. package/build/lib/diff-command.js.map +1 -1
  106. package/build/lib/format.d.ts +5 -0
  107. package/build/lib/format.d.ts.map +1 -1
  108. package/build/lib/format.js +7 -0
  109. package/build/lib/format.js.map +1 -1
  110. package/build/lib/install-targets.d.ts +90 -0
  111. package/build/lib/install-targets.d.ts.map +1 -0
  112. package/build/lib/install-targets.js +146 -0
  113. package/build/lib/install-targets.js.map +1 -0
  114. package/build/lib/installer.js +3 -2
  115. package/build/lib/installer.js.map +1 -1
  116. package/build/lib/named-entry.d.ts +24 -0
  117. package/build/lib/named-entry.d.ts.map +1 -0
  118. package/build/lib/named-entry.js +33 -0
  119. package/build/lib/named-entry.js.map +1 -0
  120. package/build/lib/resolver.d.ts +35 -0
  121. package/build/lib/resolver.d.ts.map +1 -1
  122. package/build/lib/resolver.js +65 -21
  123. package/build/lib/resolver.js.map +1 -1
  124. package/build/lib/sync.d.ts +9 -0
  125. package/build/lib/sync.d.ts.map +1 -1
  126. package/build/lib/sync.js +13 -8
  127. package/build/lib/sync.js.map +1 -1
  128. package/build/lib/uninstaller.d.ts +51 -3
  129. package/build/lib/uninstaller.d.ts.map +1 -1
  130. package/build/lib/uninstaller.js +134 -39
  131. package/build/lib/uninstaller.js.map +1 -1
  132. package/build/lib/updater.d.ts +6 -7
  133. package/build/lib/updater.d.ts.map +1 -1
  134. package/build/lib/updater.js +23 -33
  135. package/build/lib/updater.js.map +1 -1
  136. package/package.json +1 -1
@@ -1,17 +1,29 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box } from 'ink';
2
+ import { Box, Text } from 'ink';
3
3
  import { z } from 'zod';
4
4
  import { assetCount, ErrorView, LocalEditsHint, RunStoppedHint, Spinner, SyncAllInSync, SyncDriftedList, SyncNoAssets, UndeclaredRemovedHint, } from '../components/index.js';
5
5
  import { useCommand } from '../hooks/useCommand.js';
6
6
  import { useResolvedScope } from '../hooks/useResolvedScope.js';
7
+ import { identityKey, readLockfile } from '../lib/lockfile.js';
8
+ import { findNamedEntry } from '../lib/named-entry.js';
9
+ import { formatOrgName } from '../lib/org.js';
7
10
  import { renderJson, useNonInteractive } from '../lib/output.js';
8
- import { option } from '../lib/pastel/index.js';
11
+ import { argument, option } from '../lib/pastel/index.js';
9
12
  import { fetchRegistry } from '../lib/registry.js';
13
+ import { AssetType } from '../lib/schemas/index.js';
10
14
  import { loadScopeConfig, scopedCommand, scopeLabel } from '../lib/scope.js';
11
- import { dryRunSync, syncAssets } from '../lib/sync.js';
15
+ import { dryRunSync, syncAssets, SyncError } from '../lib/sync.js';
12
16
  import { resolvePlacingTools } from '../lib/tool-resolver.js';
13
- export const description = 'Re-apply drifted installed assets, keeping local edits (use --force to re-apply all)';
17
+ import { reportUsageError } from '../lib/usage-error.js';
18
+ import { parseNameVersion } from '../lib/version.js';
19
+ export const description = 'Re-apply drifted installed assets, or only the named ones, keeping local edits (use --force to re-apply them all)';
14
20
  export const options = z.object({
21
+ check: z
22
+ .boolean()
23
+ .optional()
24
+ .describe(option({
25
+ description: "Exit 1 when installed files don't match the lockfile, local edits included; changes nothing (for CI)",
26
+ })),
15
27
  dryRun: z
16
28
  .boolean()
17
29
  .default(false)
@@ -24,7 +36,7 @@ export const options = z.object({
24
36
  .default(false)
25
37
  .describe(option({
26
38
  alias: 'f',
27
- description: 'Force re-sync all assets, not just drifted ones, overwriting local edits',
39
+ description: 'Force re-sync all assets (or the named ones), not just drifted ones, overwriting local edits',
28
40
  })),
29
41
  json: z
30
42
  .boolean()
@@ -54,6 +66,10 @@ export const options = z.object({
54
66
  alias: 'T',
55
67
  description: 'Target tool (e.g., claude-code)',
56
68
  })),
69
+ type: AssetType.optional().describe(option({
70
+ alias: 't',
71
+ description: 'Type of a named asset, when the name is installed as more than one type',
72
+ })),
57
73
  user: z
58
74
  .boolean()
59
75
  .optional()
@@ -61,18 +77,33 @@ export const options = z.object({
61
77
  description: 'Use the user scope (the user root, ~ by default) instead of the project',
62
78
  })),
63
79
  });
64
- export default function Sync({ options: { dryRun, force, json, projectRoot, refresh, tool, user } }) {
80
+ export const args = z.tuple([]).rest(z.string().describe(argument({
81
+ description: 'Installed assets to sync, as @org/name or name (all of them when omitted)',
82
+ name: 'names',
83
+ })));
84
+ export default function Sync({ args: names = [], options: { check, dryRun, force, json, projectRoot, refresh, tool, type, user }, }) {
65
85
  const { json: effectiveJson } = useNonInteractive(json);
66
86
  const { fields, resolve, resolved } = useResolvedScope({ projectRoot, user });
67
87
  const state = useCommand(async (progress) => {
88
+ if (check && force) {
89
+ reportUsageError('error: --check and --force contradict each other: --check changes nothing', effectiveJson);
90
+ }
91
+ if (type && names.length === 0) {
92
+ reportUsageError('error: --type picks the type of a named asset: name the assets to sync', effectiveJson);
93
+ }
68
94
  const { root: projectDir, scope } = await resolve();
69
95
  const tools = await resolvePlacingTools(tool, projectDir);
96
+ // Every name is resolved before anything is fetched or written, so one that isn't
97
+ // installed stops the run with nothing changed.
98
+ const only = names.length > 0 ? await namedKeys(projectDir, names, { scope, type }) : undefined;
70
99
  progress('Fetching registry...');
71
- const registry = await fetchRegistry({ force: refresh });
100
+ // The check writes nothing, so a cached registry serves when the API can't be read.
101
+ const registry = await fetchRegistry({ force: refresh, ...(check ? { stale: true } : {}) });
72
102
  const projectConfig = await loadScopeConfig(projectDir);
73
- if (dryRun) {
103
+ if (dryRun || check) {
74
104
  const toolResults = await dryRunSync({
75
105
  force,
106
+ ...(only ? { only } : {}),
76
107
  onProgress: progress,
77
108
  projectConfig,
78
109
  projectDir,
@@ -84,6 +115,7 @@ export default function Sync({ options: { dryRun, force, json, projectRoot, refr
84
115
  }
85
116
  const toolResults = await syncAssets({
86
117
  force,
118
+ ...(only ? { only } : {}),
87
119
  onProgress: progress,
88
120
  projectConfig,
89
121
  projectDir,
@@ -93,7 +125,7 @@ export default function Sync({ options: { dryRun, force, json, projectRoot, refr
93
125
  });
94
126
  const notRunTools = tools.slice(toolResults.length).map((t) => t.tool);
95
127
  return { ...(notRunTools.length > 0 ? { notRunTools } : {}), outcome: 'synced', scope, toolResults };
96
- }, [dryRun, force, projectRoot, refresh, tool, user]);
128
+ }, [check, dryRun, force, names.join(' '), projectRoot, refresh, tool, type, user]);
97
129
  if (state.status === 'loading') {
98
130
  return _jsx(Spinner, { message: state.message });
99
131
  }
@@ -112,13 +144,16 @@ export default function Sync({ options: { dryRun, force, json, projectRoot, refr
112
144
  }
113
145
  const { data } = state;
114
146
  const where = resolved ? scopeLabel(resolved) : undefined;
115
- const outcome = data.outcome === 'dry-run' ? 'sync-dry-run' : liveSyncOutcome(data.toolResults);
116
- if (outcome === 'failed' || outcome === 'partial') {
147
+ const named = { named: names.length > 0, type };
148
+ const mismatched = data.outcome === 'dry-run' && check ? mismatchCount(data.toolResults) : 0;
149
+ const outcome = data.outcome === 'dry-run' ? (check ? 'sync-check' : 'sync-dry-run') : liveSyncOutcome(data.toolResults);
150
+ if (outcome === 'failed' || outcome === 'partial' || mismatched > 0) {
117
151
  process.exitCode = 1;
118
152
  }
119
153
  if (effectiveJson) {
120
154
  const notRunTools = data.outcome === 'synced' ? data.notRunTools : undefined;
121
155
  return renderJson({
156
+ ...(check ? { hasFailures: mismatched > 0 } : {}),
122
157
  ...(notRunTools ? { notRunTools } : {}),
123
158
  outcome,
124
159
  toolResults: data.toolResults,
@@ -126,10 +161,11 @@ export default function Sync({ options: { dryRun, force, json, projectRoot, refr
126
161
  });
127
162
  }
128
163
  if (data.outcome === 'dry-run') {
129
- return (_jsx(Box, { flexDirection: 'column', children: data.toolResults.map((result) => (_jsxs(Box, { flexDirection: 'column', children: [_jsx(DryRunToolResult, { result: result, scope: data.scope, where: where }), _jsx(LocalEditsHint, { assets: result.localEdits ?? [], heading: localEditsHeading(result.localEdits?.length ?? 0, data.scope, true) }), _jsx(UndeclaredRemovedHint, { assets: result.wouldRemove ?? [], dryRun: true, tool: result.tool })] }, result.tool))) }));
164
+ return (_jsxs(Box, { flexDirection: 'column', children: [data.toolResults.map((result) => (_jsxs(Box, { flexDirection: 'column', children: [_jsx(DryRunToolResult, { result: result, scope: data.scope, where: where }), _jsx(LocalEditsHint, { assets: result.localEdits ?? [], heading: localEditsHeading(result.localEdits ?? [], data.scope, true, named) }), _jsx(UndeclaredRemovedHint, { assets: result.wouldRemove ?? [], dryRun: true, tool: result.tool })] }, result.tool))), check &&
165
+ (mismatched > 0 ? (_jsxs(Text, { color: 'red', children: ["\u2717 ", assetCount(mismatched), " ", mismatched === 1 ? "doesn't" : "don't", " match the lockfile."] })) : (_jsx(Text, { color: 'green', children: "\u2713 Installed assets match the lockfile." })))] }));
130
166
  }
131
167
  const stoppedAt = data.toolResults.find((r) => r.notAttempted);
132
- return (_jsxs(Box, { flexDirection: 'column', children: [data.toolResults.map((result) => (_jsxs(Box, { flexDirection: 'column', children: [_jsx(LiveToolResult, { result: result, scope: data.scope, where: where }), _jsx(LocalEditsHint, { assets: result.localEdits ?? [], heading: localEditsHeading(result.localEdits?.length ?? 0, data.scope, false) }), _jsx(UndeclaredRemovedHint, { assets: result.removed ?? [], tool: result.tool })] }, result.tool))), stoppedAt?.notAttempted && (_jsx(RunStoppedHint, { notAttempted: stoppedAt.notAttempted, notRunTools: data.notRunTools ?? [] }))] }));
168
+ return (_jsxs(Box, { flexDirection: 'column', children: [data.toolResults.map((result) => (_jsxs(Box, { flexDirection: 'column', children: [_jsx(LiveToolResult, { result: result, scope: data.scope, where: where }), _jsx(LocalEditsHint, { assets: result.localEdits ?? [], heading: localEditsHeading(result.localEdits ?? [], data.scope, false, named) }), _jsx(UndeclaredRemovedHint, { assets: result.removed ?? [], tool: result.tool })] }, result.tool))), stoppedAt?.notAttempted && (_jsx(RunStoppedHint, { notAttempted: stoppedAt.notAttempted, notRunTools: data.notRunTools ?? [] }))] }));
133
169
  }
134
170
  /** Render a single dry-run tool result using the appropriate presentational component. */
135
171
  function DryRunToolResult({ result, scope, where }) {
@@ -169,9 +205,42 @@ function LiveToolResult({ result, scope, where }) {
169
205
  }
170
206
  return (_jsx(SyncDriftedList, { dryRun: false, entries: synced, excludedSkipped: excludedSkipped, failures: failures, frozenSkipped: frozenSkipped, scope: scope, skipped: skipped, tool: tool, where: where }));
171
207
  }
172
- /** The line above the assets sync left alone for their local edits, with the command that overwrites them. */
173
- function localEditsHeading(count, scope, dryRun) {
174
- const force = scopedCommand('atk sync --force', scope);
175
- return `${dryRun ? 'Would keep' : 'Kept'} local edits in ${assetCount(count)}, not synced (run ${force} to overwrite them):`;
208
+ /**
209
+ * The line above the assets sync left alone for their local edits, with the command that overwrites
210
+ * them: for those assets alone when the run named assets, or for every asset.
211
+ */
212
+ function localEditsHeading(edits, scope, dryRun, { named, type }) {
213
+ const spec = [...edits.map((e) => formatOrgName(e.org, e.name)), ...(type ? [`--type ${type}`] : [])].join(' ');
214
+ const force = scopedCommand(named ? `atk sync ${spec} --force` : 'atk sync --force', scope);
215
+ return `${dryRun ? 'Would keep' : 'Kept'} local edits in ${assetCount(edits.length)}, not synced (run ${force} to overwrite them):`;
216
+ }
217
+ /**
218
+ * How many assets `--check` fails on, each once across tools: those a sync would re-apply or
219
+ * refuse, those whose edits a sync keeps, and hook copies a sync would remove. Frozen and excluded
220
+ * assets don't count.
221
+ */
222
+ function mismatchCount(toolResults) {
223
+ const keys = new Set();
224
+ for (const r of toolResults) {
225
+ for (const { asset } of r.toSync)
226
+ keys.add(identityKey(asset));
227
+ for (const a of [...(r.localEdits ?? []), ...(r.wouldRemove ?? [])])
228
+ keys.add(identityKey(a));
229
+ for (const f of r.wouldFail ?? [])
230
+ keys.add(identityKey({ name: f.assetName, org: f.org, type: f.assetType }));
231
+ }
232
+ return keys.size;
233
+ }
234
+ /** The identity keys of the lockfile entries the names name, read from `projectDir`'s lockfile. */
235
+ async function namedKeys(projectDir, names, { scope, type }) {
236
+ // Sync re-applies the version the lockfile records, so a name with a version names nothing it does.
237
+ for (const spec of names) {
238
+ const { name, version } = parseNameVersion(spec);
239
+ if (version) {
240
+ throw new SyncError(`"${spec}" names a version, but sync re-applies the version the lockfile records. Name the asset without @${version}, or run atk update ${spec} to change its version.`, { command: scopedCommand(`atk sync ${name}`, scope) });
241
+ }
242
+ }
243
+ const lockfile = await readLockfile(projectDir);
244
+ return new Set(names.map((name) => identityKey(findNamedEntry(lockfile, name, { command: 'sync', error: SyncError, root: projectDir, scope, type }))));
176
245
  }
177
246
  //# sourceMappingURL=sync.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.tsx"],"names":[],"mappings":"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"}
@@ -13,11 +13,11 @@ export declare const options: z.ZodObject<{
13
13
  }>>;
14
14
  user: z.ZodOptional<z.ZodBoolean>;
15
15
  }, z.core.$strip>;
16
- export declare const args: z.ZodTuple<[z.ZodString], null>;
16
+ export declare const args: z.ZodTuple<[z.ZodString], z.ZodString>;
17
17
  type Props = {
18
18
  args: z.infer<typeof args>;
19
19
  options: z.infer<typeof options>;
20
20
  };
21
- export default function Thaw({ args: [rawName], options: { json, projectRoot, type, user } }: Props): import("react").JSX.Element;
21
+ export default function Thaw({ args: [rawName, ...more], options: { json, projectRoot, type, user } }: Props): import("react").JSX.Element;
22
22
  export {};
23
23
  //# sourceMappingURL=thaw.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"thaw.d.ts","sourceRoot":"","sources":["../../src/commands/thaw.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,eAAO,MAAM,WAAW,uEAAuE,CAAC;AAEhG,eAAO,MAAM,OAAO;;;;;;;;;;;;iBAiClB,CAAC;AAEH,eAAO,MAAM,IAAI,iCAAgG,CAAC;AAElH,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;AAIF,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,+BA0ElG"}
1
+ {"version":3,"file":"thaw.d.ts","sourceRoot":"","sources":["../../src/commands/thaw.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,eAAO,MAAM,WAAW,uEAAuE,CAAC;AAEhG,eAAO,MAAM,OAAO;;;;;;;;;;;;iBAiClB,CAAC;AAEH,eAAO,MAAM,IAAI,wCAId,CAAC;AAUJ,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;AAMF,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,+BAuF3G"}
@@ -1,12 +1,12 @@
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 { ErrorView, Spinner } from '../components/index.js';
5
5
  import { useCommand } from '../hooks/useCommand.js';
6
6
  import { useResolvedScope } from '../hooks/useResolvedScope.js';
7
- import { isAssetFrozen, thawAssetInConfig } from '../lib/config.js';
8
- import { readLockfile, requireDirectInstall } from '../lib/lockfile.js';
9
- import { parseOrgFromName } from '../lib/org.js';
7
+ import { isAssetFrozen, thawAssetsInConfig } from '../lib/config.js';
8
+ import { identityKey, readLockfile, requireDirectInstall } from '../lib/lockfile.js';
9
+ import { formatOrgName, parseOrgFromName } from '../lib/org.js';
10
10
  import { renderJson, useNonInteractive } from '../lib/output.js';
11
11
  import { argument, option } from '../lib/pastel/index.js';
12
12
  import { AssetType } from '../lib/schemas/index.js';
@@ -38,11 +38,13 @@ export const options = z.object({
38
38
  description: 'Use the user scope (the user root, ~ by default) instead of the project',
39
39
  })),
40
40
  });
41
- export const args = z.tuple([z.string().describe(argument({ description: 'Asset name to thaw', name: 'name' }))]);
42
- export default function Thaw({ args: [rawName], options: { json, projectRoot, type, user } }) {
43
- const { name, org } = parseOrgFromName(rawName);
41
+ export const args = z
42
+ .tuple([z.string().describe(argument({ description: 'Asset name to thaw', name: 'name' }))])
43
+ .rest(z.string().describe(argument({ description: 'More assets to thaw with the first, in one pass', name: 'names' })));
44
+ export default function Thaw({ args: [rawName, ...more], options: { json, projectRoot, type, user } }) {
44
45
  const { json: effectiveJson } = useNonInteractive(json);
45
46
  const { fields, resolve, resolved } = useResolvedScope({ projectRoot, user });
47
+ const specs = [rawName, ...more];
46
48
  const state = useCommand(async (progress) => {
47
49
  const where = await resolve();
48
50
  const projectDir = where.root;
@@ -50,17 +52,32 @@ export default function Thaw({ args: [rawName], options: { json, projectRoot, ty
50
52
  // frozen state in the project config and does not place or modify any files.
51
53
  progress('Reading lockfile...');
52
54
  const lockfile = await readLockfile(projectDir);
53
- // Verify the asset is installed and is a direct install
54
- requireDirectInstall(lockfile, name, 'thawed', type, org, scopeLabel(where));
55
- // Check if the asset is actually frozen (via project config)
56
- const frozen = await isAssetFrozen(projectDir, name, type, org);
57
- if (!frozen) {
58
- return { name: rawName, outcome: 'not-frozen' };
55
+ // Check every name before anything is written; a name naming an entry already named is dropped
56
+ const named = [];
57
+ const seen = new Set();
58
+ for (const spec of specs) {
59
+ const { name, org } = parseOrgFromName(spec);
60
+ // Verify the asset is installed and is a direct install
61
+ const installed = requireDirectInstall(lockfile, name, 'thawed', type, org, scopeLabel(where));
62
+ if (seen.has(identityKey(installed)))
63
+ continue;
64
+ seen.add(identityKey(installed));
65
+ // Check if the asset is actually frozen (via project config)
66
+ const frozen = await isAssetFrozen(projectDir, name, type, org);
67
+ const asset = { name, ...(org ? { org } : {}), type: installed.type };
68
+ named.push({ ...asset, outcome: frozen ? 'thawed' : 'not-frozen' });
59
69
  }
60
- progress('Thawing asset...');
61
- await thawAssetInConfig(projectDir, name, type, org);
62
- return { name: rawName, outcome: 'thawed' };
63
- }, [rawName, projectRoot, type, user]);
70
+ // Thaw in project config (.atkrc.json), in one write, matching on --type as given
71
+ const toThaw = named.filter((a) => a.outcome === 'thawed');
72
+ if (toThaw.length > 0) {
73
+ progress(more.length > 0 ? 'Thawing assets...' : 'Thawing asset...');
74
+ await thawAssetsInConfig(projectDir, toThaw.map(({ name, org }) => ({ name, org, type })));
75
+ }
76
+ if (more.length > 0) {
77
+ return { assets: named, outcome: toThaw.length > 0 ? 'thawed' : 'not-frozen' };
78
+ }
79
+ return { name: rawName, outcome: named[0].outcome };
80
+ }, [specs.join(' '), projectRoot, type, user]);
64
81
  if (state.status === 'loading') {
65
82
  return _jsx(Spinner, { message: state.message });
66
83
  }
@@ -82,10 +99,16 @@ export default function Thaw({ args: [rawName], options: { json, projectRoot, ty
82
99
  return renderJson({ ...data, ...fields });
83
100
  }
84
101
  const where = resolved ? _jsxs(Text, { dimColor: true, children: [" in ", scopeLabel(resolved)] }) : null;
85
- if (data.outcome === 'not-frozen') {
86
- return (_jsxs(Text, { children: [_jsx(Text, { color: 'yellow', children: "!" }), " ", _jsx(Text, { bold: true, children: data.name }), " is not currently frozen", where] }));
102
+ if ('assets' in data) {
103
+ return (_jsx(Box, { flexDirection: 'column', children: data.assets.map((a) => (_jsx(ThawLine, { name: formatOrgName(a.org, a.name), outcome: a.outcome, where: where }, identityKey(a)))) }));
104
+ }
105
+ return _jsx(ThawLine, { name: data.name, outcome: data.outcome, where: where });
106
+ }
107
+ function ThawLine({ name, outcome, where }) {
108
+ if (outcome === 'not-frozen') {
109
+ return (_jsxs(Text, { children: [_jsx(Text, { color: 'yellow', children: "!" }), " ", _jsx(Text, { bold: true, children: name }), " is not currently frozen", where] }));
87
110
  }
88
- // data.outcome === 'thawed'
89
- return (_jsxs(Text, { color: 'green', children: ["Thawed ", _jsx(Text, { bold: true, children: data.name }), where] }));
111
+ // outcome === 'thawed'
112
+ return (_jsxs(Text, { color: 'green', children: ["Thawed ", _jsx(Text, { bold: true, children: name }), where] }));
90
113
  }
91
114
  //# sourceMappingURL=thaw.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"thaw.js","sourceRoot":"","sources":["../../src/commands/thaw.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"thaw.js","sourceRoot":"","sources":["../../src/commands/thaw.tsx"],"names":[],"mappings":"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"}
@@ -19,11 +19,11 @@ export declare const options: z.ZodObject<{
19
19
  user: z.ZodOptional<z.ZodBoolean>;
20
20
  yes: z.ZodDefault<z.ZodBoolean>;
21
21
  }, z.core.$strip>;
22
- export declare const args: z.ZodTuple<[z.ZodString], null>;
22
+ export declare const args: z.ZodTuple<[z.ZodString], z.ZodString>;
23
23
  type Props = {
24
24
  args: z.infer<typeof args>;
25
25
  options: z.infer<typeof options>;
26
26
  };
27
- export default function Uninstall({ args: [name], options: { cascade, dryRun, json, org, projectRoot, refresh, tool, type, user, yes }, }: Props): import("react").JSX.Element | null;
27
+ export default function Uninstall({ args: [name, ...more], options: { cascade, dryRun, json, org, projectRoot, refresh, tool, type, user, yes }, }: Props): import("react").JSX.Element | null;
28
28
  export {};
29
29
  //# sourceMappingURL=uninstall.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../src/commands/uninstall.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiBxB,eAAO,MAAM,WAAW,iCAAiC,CAAC;AAE1D,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;iBAwFlB,CAAC;AAEH,eAAO,MAAM,IAAI,iCAEf,CAAC;AAiBH,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;AAUF,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,IAAI,EAAE,CAAC,IAAI,CAAC,EACZ,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GACrF,EAAE,KAAK,sCA6bP"}
1
+ {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../src/commands/uninstall.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiBxB,eAAO,MAAM,WAAW,iCAAiC,CAAC;AAE1D,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;iBAwFlB,CAAC;AAEH,eAAO,MAAM,IAAI,wCAQd,CAAC;AAkBJ,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;AAUF,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,EACrB,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GACrF,EAAE,KAAK,sCAujBP"}
@@ -81,15 +81,18 @@ export const options = z.object({
81
81
  description: 'Skip confirmation prompt',
82
82
  })),
83
83
  });
84
- export const args = z.tuple([
85
- z.string().describe(argument({ description: 'Asset or bundle name to uninstall', name: 'name' })),
86
- ]);
87
- export default function Uninstall({ args: [name], options: { cascade, dryRun, json, org, projectRoot, refresh, tool, type, user, yes }, }) {
84
+ export const args = z
85
+ .tuple([z.string().describe(argument({ description: 'Asset or bundle name to uninstall', name: 'name' }))])
86
+ .rest(z
87
+ .string()
88
+ .describe(argument({ description: 'More assets or bundles to uninstall with the first, in one pass', name: 'names' })));
89
+ export default function Uninstall({ args: [name, ...more], options: { cascade, dryRun, json, org, projectRoot, refresh, tool, type, user, yes }, }) {
88
90
  const { exit } = useApp();
89
91
  const { json: effectiveJson } = useNonInteractive(json);
90
92
  const flags = {
91
93
  cascade,
92
94
  dryRun,
95
+ ...(more.length > 0 ? { more } : {}),
93
96
  name,
94
97
  org,
95
98
  projectRoot,
@@ -141,7 +144,9 @@ export default function Uninstall({ args: [name], options: { cascade, dryRun, js
141
144
  if (doneOutcome === 'not-installed' ||
142
145
  doneOutcome === 'bundle-not-installed' ||
143
146
  doneOutcome === 'bundle-partial' ||
144
- doneOutcome === 'bundle-failed') {
147
+ doneOutcome === 'bundle-failed' ||
148
+ doneOutcome === 'assets-partial' ||
149
+ doneOutcome === 'assets-failed') {
145
150
  process.exitCode = 1;
146
151
  }
147
152
  exit();
@@ -182,16 +187,22 @@ export default function Uninstall({ args: [name], options: { cascade, dryRun, js
182
187
  // --- Done phase: render based on outcome ---
183
188
  const { outcome } = state;
184
189
  // Cancelled at the prompt: the outcome is still the plan that was awaiting confirmation.
185
- const cancelled = outcome?.outcome === 'confirming' || outcome?.outcome === 'bundle-confirming';
190
+ const cancelled = outcome?.outcome === 'confirming' ||
191
+ outcome?.outcome === 'bundle-confirming' ||
192
+ outcome?.outcome === 'assets-confirming';
186
193
  // JSON path: emit the outcome shape directly once we have one
187
194
  if (effectiveJson && state.phase === 'done' && outcome) {
188
- return renderJson({ ...(cancelled ? { name, outcome: 'cancelled' } : outcome), ...fields });
195
+ return renderJson({
196
+ ...(cancelled ? { name, ...(more.length > 0 ? { names: [name, ...more] } : {}), outcome: 'cancelled' } : outcome),
197
+ ...fields,
198
+ });
189
199
  }
190
200
  // Cancelled from confirming (done phase with no outcome change — cancelled before execution)
191
201
  if (state.phase === 'done' && outcome?.outcome === 'confirming') {
192
202
  return confirmation.isTTY ? (_jsx(Text, { color: 'yellow', children: "Cancelled." })) : (_jsx(Text, { color: 'yellow', children: "Confirmation required. Use --yes (-y) to skip the prompt." }));
193
203
  }
194
- if (state.phase === 'done' && outcome?.outcome === 'bundle-confirming') {
204
+ if (state.phase === 'done' &&
205
+ (outcome?.outcome === 'bundle-confirming' || outcome?.outcome === 'assets-confirming')) {
195
206
  return confirmation.isTTY ? (_jsx(Text, { color: 'yellow', children: "Cancelled." })) : (_jsx(Text, { color: 'yellow', children: "Confirmation required. Use --yes (-y) to skip the prompt." }));
196
207
  }
197
208
  if (!outcome) {
@@ -238,14 +249,27 @@ export default function Uninstall({ args: [name], options: { cascade, dryRun, js
238
249
  if (outcome.outcome === 'bundle-success' ||
239
250
  outcome.outcome === 'bundle-partial' ||
240
251
  outcome.outcome === 'bundle-failed') {
241
- return _jsx(BundleUninstallSummary, { plan: outcome.plan, result: outcome.result, tools: outcome.tools, where: where });
252
+ return _jsx(BundleUninstallSummary, { bundle: outcome.plan, result: outcome.result, tools: outcome.tools, where: where });
253
+ }
254
+ // --- Several named assets ---
255
+ if (outcome.outcome === 'dry-run-assets' || outcome.outcome === 'assets-confirming') {
256
+ const { lockfileEffects, plan } = outcome;
257
+ const tools = outcome.outcome === 'dry-run-assets' ? outcome.tools : outcome.tools.map((t) => t.tool);
258
+ const totalRemovals = plan.assetsToRemove.length + plan.orphansToRemove.length;
259
+ const isDryRun = outcome.outcome === 'dry-run-assets';
260
+ return (_jsxs(Box, { flexDirection: 'column', children: [isDryRun && (_jsxs(_Fragment, { children: [_jsx(DryRunBanner, { action: 'uninstall', count: totalRemovals, tools: tools, where: label }), _jsx(Text, { children: " " })] })), (plan.bundles ?? []).map((b) => (_jsxs(Text, { children: [_jsxs(Text, { bold: true, color: 'magenta', children: ["Bundle: ", formatOrgName(b.bundleOrg, b.bundleName)] }), _jsxs(Text, { dimColor: true, children: [" v", b.bundleVersion] })] }, `bundle-${formatOrgName(b.bundleOrg, b.bundleName)}`))), (plan.bundles ?? []).length > 0 && _jsx(Text, { children: " " }), _jsx(Text, { dimColor: true, children: "Assets to remove:" }), plan.assetsToRemove.map((a) => (_jsxs(Text, { children: [' ', _jsxs(Text, { color: 'red', children: ["- ", formatOrgName(a.org, a.name)] }), _jsxs(Text, { dimColor: true, children: [' ', "(", a.type, ") v", a.version] })] }, `remove-${identityKey(a)}`))), (plan.assetsToSkip ?? []).length > 0 && (_jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), _jsx(Text, { dimColor: true, children: "Skipped (still needed):" }), (plan.assetsToSkip ?? []).map((a) => (_jsxs(Text, { children: [' ', _jsxs(Text, { color: 'yellow', children: ["~ ", formatOrgName(a.org, a.name)] }), _jsxs(Text, { dimColor: true, children: [" \u2014 ", a.reason] })] }, `skip-${identityKey(a)}`)))] })), plan.orphansToRemove.length > 0 && (_jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), _jsxs(Text, { dimColor: true, children: ["Orphaned dependencies ", isDryRun ? 'that would also be removed' : 'to remove', ":"] }), plan.orphansToRemove.map((a) => (_jsx(OrphanListItem, { name: a.name, org: a.org, type: a.type, version: a.version }, `orphan-${identityKey(a)}`)))] })), plan.dependents.length > 0 && (_jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), _jsx(Text, { color: 'yellow', children: "Warning: the following assets depend on assets being removed:" }), plan.dependents.map((d) => (_jsxs(Text, { color: 'yellow', children: [' ', "- ", formatOrgName(d.org, d.name), " (", d.type, ")"] }, `dep-${identityKey(d)}`)))] })), _jsx(LockfileEffects, { effects: lockfileEffects, keptOnly: !isDryRun, tools: tools }), !isDryRun && (_jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), _jsxs(Text, { children: ["Remove ", totalRemovals, " asset", totalRemovals !== 1 ? 's' : '', where, "? (y/n)"] })] }))] }));
261
+ }
262
+ if (outcome.outcome === 'assets-success' ||
263
+ outcome.outcome === 'assets-partial' ||
264
+ outcome.outcome === 'assets-failed') {
265
+ return (_jsxs(Box, { flexDirection: 'column', children: [(outcome.plan.bundles ?? []).map((b) => (_jsxs(Text, { children: [_jsxs(Text, { bold: true, color: 'magenta', children: ["Bundle: ", formatOrgName(b.bundleOrg, b.bundleName)] }), _jsxs(Text, { dimColor: true, children: [" v", b.bundleVersion] })] }, `bundle-${formatOrgName(b.bundleOrg, b.bundleName)}`))), (outcome.plan.bundles ?? []).length > 0 && _jsx(Text, { children: " " }), _jsx(BundleUninstallSummary, { result: outcome.result, tools: outcome.tools, where: where })] }));
242
266
  }
243
267
  // This should never be reached, but TypeScript exhaustiveness
244
268
  return null;
245
269
  }
246
- function BundleUninstallSummary({ plan, result, tools, where }) {
270
+ function BundleUninstallSummary({ bundle, result, tools, where }) {
247
271
  const totalRemoved = result.removedAssets.length + result.removedOrphans.length;
248
- return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { children: [_jsxs(Text, { bold: true, color: 'magenta', children: ["Bundle: ", plan.bundleName] }), _jsxs(Text, { dimColor: true, children: [" v", plan.bundleVersion] })] }), _jsx(Text, { children: " " }), _jsxs(Text, { color: result.errors.length === 0 ? 'green' : totalRemoved > 0 ? 'yellow' : 'red', children: [result.errors.length === 0 ? '✓' : totalRemoved > 0 ? '!' : '✕', " Removed ", totalRemoved, " asset", totalRemoved !== 1 ? 's' : '', " from ", tools.join(', '), where, result.errors.length > 0 ? `; ${result.errors.length} could not be removed` : ''] }), result.removedAssets.length > 0 && (_jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), _jsx(Text, { dimColor: true, children: "Removed assets:" }), result.removedAssets.map((a) => (_jsxs(Text, { children: [' ', _jsxs(Text, { color: 'green', children: ["\u2713 ", formatOrgName(a.org, a.name)] }), _jsxs(Text, { dimColor: true, children: [' ', "(", a.type, ") v", a.version] })] }, `remove-${identityKey(a)}`)))] })), result.removedOrphans.length > 0 && (_jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), _jsx(Text, { dimColor: true, children: "Removed orphaned dependencies:" }), result.removedOrphans.map((a) => (_jsx(OrphanListItem, { color: 'green', icon: '\u2713', name: a.name, org: a.org, type: a.type, version: a.version }, `orphan-${identityKey(a)}`)))] })), result.skippedAssets.length > 0 && (_jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), _jsx(Text, { dimColor: true, children: "Skipped (still needed):" }), result.skippedAssets.map((a) => (_jsxs(Text, { children: [' ', _jsxs(Text, { color: 'yellow', children: ["~ ", formatOrgName(a.org, a.name)] }), _jsxs(Text, { dimColor: true, children: [" \u2014 ", a.reason] })] }, `skip-${identityKey(a)}`)))] })), _jsx(LockfileEffects, { effects: (result.keptEntries ?? []).map((k) => ({ ...k, entryKept: true })), keptOnly: true, tools: tools }), result.errors.length > 0 && (_jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), _jsx(Text, { color: 'red', children: "Errors:" }), result.errors.map((e) => (_jsxs(Text, { color: 'red', children: [' ', "\u2715 ", formatOrgName(e.org, e.asset), ": ", e.error] }, `err-${identityKey({ name: e.asset, org: e.org, type: e.type })}`)))] }))] }));
272
+ return (_jsxs(Box, { flexDirection: 'column', children: [bundle && (_jsxs(_Fragment, { children: [_jsxs(Text, { children: [_jsxs(Text, { bold: true, color: 'magenta', children: ["Bundle: ", bundle.bundleName] }), _jsxs(Text, { dimColor: true, children: [" v", bundle.bundleVersion] })] }), _jsx(Text, { children: " " })] })), _jsxs(Text, { color: result.errors.length === 0 ? 'green' : totalRemoved > 0 ? 'yellow' : 'red', children: [result.errors.length === 0 ? '✓' : totalRemoved > 0 ? '!' : '✕', " Removed ", totalRemoved, " asset", totalRemoved !== 1 ? 's' : '', " from ", tools.join(', '), where, result.errors.length > 0 ? `; ${result.errors.length} could not be removed` : ''] }), result.removedAssets.length > 0 && (_jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), _jsx(Text, { dimColor: true, children: "Removed assets:" }), result.removedAssets.map((a) => (_jsxs(Text, { children: [' ', _jsxs(Text, { color: 'green', children: ["\u2713 ", formatOrgName(a.org, a.name)] }), _jsxs(Text, { dimColor: true, children: [' ', "(", a.type, ") v", a.version] })] }, `remove-${identityKey(a)}`)))] })), result.removedOrphans.length > 0 && (_jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), _jsx(Text, { dimColor: true, children: "Removed orphaned dependencies:" }), result.removedOrphans.map((a) => (_jsx(OrphanListItem, { color: 'green', icon: '\u2713', name: a.name, org: a.org, type: a.type, version: a.version }, `orphan-${identityKey(a)}`)))] })), result.skippedAssets.length > 0 && (_jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), _jsx(Text, { dimColor: true, children: "Skipped (still needed):" }), result.skippedAssets.map((a) => (_jsxs(Text, { children: [' ', _jsxs(Text, { color: 'yellow', children: ["~ ", formatOrgName(a.org, a.name)] }), _jsxs(Text, { dimColor: true, children: [" \u2014 ", a.reason] })] }, `skip-${identityKey(a)}`)))] })), _jsx(LockfileEffects, { effects: (result.keptEntries ?? []).map((k) => ({ ...k, entryKept: true })), keptOnly: true, tools: tools }), result.errors.length > 0 && (_jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), _jsx(Text, { color: 'red', children: "Errors:" }), result.errors.map((e) => (_jsxs(Text, { color: 'red', children: [' ', "\u2715 ", formatOrgName(e.org, e.asset), ": ", e.error] }, `err-${identityKey({ name: e.asset, org: e.org, type: e.type })}`)))] }))] }));
249
273
  }
250
274
  /**
251
275
  * Says what happens to each asset's lockfile entry. A `--tool` uninstall keeps the entry while