@detergent-software/atk 8.9.2-dev.9 → 8.10.0-dev.1

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 CHANGED
@@ -1,3 +1,44 @@
1
+ ## [8.10.0-dev.1](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.2-dev.13&targetVersion=GTv8.10.0-dev.1) (2026-10-20)
2
+
3
+ ### Features
4
+
5
+ * **cli:** report bundle members kept outside it, and adopt them (ATK-674) ([bf3b656](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/bf3b6568e3738df1af8c9eb7b67b423e36fedf9a))
6
+
7
+ ### Bug Fixes
8
+
9
+ * **cli:** adopt an installed bundle's members in the lockfile alone (ATK-674) ([9ee62fb](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/9ee62fb000ce891fc5bf4d6d7c7ba7be2296d498))
10
+ * **cli:** report only the bundle members the run's tools place (ATK-674) ([9c8b957](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/9c8b957dbd9e988321bc054686cef919482fb432))
11
+
12
+ ## [8.9.2-dev.13](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.2-dev.12&targetVersion=GTv8.9.2-dev.13) (2026-10-20)
13
+
14
+ ### Bug Fixes
15
+
16
+ * **cli:** keep an edited copy of a hook sync would remove (ATK-641) ([0005598](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/000559824b69ad2077b14a5657c5cfe0fad4ea4c))
17
+
18
+ ### Refactoring
19
+
20
+ * **cli:** inline sync's edited-copy check for undeclared hooks (ATK-641) ([73896a3](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/73896a338ed510145aa520c83e2cb3d8f09fa6ca))
21
+
22
+ ## [8.9.2-dev.12](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.2-dev.11&targetVersion=GTv8.9.2-dev.12) (2026-10-20)
23
+
24
+ ### Bug Fixes
25
+
26
+ * **cli:** drop only the version flag the command declares (ATK-645) ([88ef766](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/88ef7660496b080bcc5a66e991b71910b7ec0684))
27
+ * **cli:** let a command's own -v and --version reach it (ATK-645) ([86a71df](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/86a71df57ebf7a189c3a96c12df58ad37933d336))
28
+
29
+ ## [8.9.2-dev.11](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.2-dev.10&targetVersion=GTv8.9.2-dev.11) (2026-10-20)
30
+
31
+ ### Bug Fixes
32
+
33
+ * **cli:** keep the run's flags on the org spec install names (ATK-647) ([af1f5ca](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/af1f5cad7f822005defeec7834330cecd33a40eb))
34
+ * **cli:** name the org spec for a bare name with only an org asset (ATK-647) ([440084d](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/440084d025c2fa7084448058836f55fe367d4c2b))
35
+
36
+ ## [8.9.2-dev.10](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.2-dev.9&targetVersion=GTv8.9.2-dev.10) (2026-10-20)
37
+
38
+ ### Bug Fixes
39
+
40
+ * **cli:** plan a publish once, not again before the submit ([167736d](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/167736d482a9bd274917b145bd6fb7377549388c))
41
+
1
42
  ## [8.9.2-dev.9](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.2-dev.8&targetVersion=GTv8.9.2-dev.9) (2026-10-20)
2
43
 
3
44
  ### Bug Fixes
@@ -483,6 +483,11 @@
483
483
  "description": "Install an asset or bundle (no args syncs from lockfile)",
484
484
  "file": "install.js",
485
485
  "options": [
486
+ {
487
+ "flags": "--adopt",
488
+ "description": "With a bundle: also record it as the owner of members installed on their own",
489
+ "defaultValue": false
490
+ },
486
491
  {
487
492
  "flags": "-a, --all",
488
493
  "description": "Install every asset from an org scope without prompting (for `atk install @org`; required with --json or no terminal)",
@@ -1 +1 @@
1
- {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../src/commands/info.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA+BxB,eAAO,MAAM,WAAW,0CAA0C,CAAC;AAEnE,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;iBA6DlB,CAAC;AAEH,eAAO,MAAM,IAAI,iCAMf,CAAC;AAiCH,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,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GACtE,EAAE,KAAK,2CAuQP"}
1
+ {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../src/commands/info.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA+BxB,eAAO,MAAM,WAAW,0CAA0C,CAAC;AAEnE,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;iBA6DlB,CAAC;AAEH,eAAO,MAAM,IAAI,iCAMf,CAAC;AAmCH,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,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GACtE,EAAE,KAAK,2CA+QP"}
@@ -102,6 +102,7 @@ export default function Info({ args: [rawName], options: { full, json, org: cliO
102
102
  // project's org first, then the global asset.
103
103
  const org = resolveActiveOrg(explicitOrg, lockfile?.org, config.org);
104
104
  let resolved = findAsset(registry, name, type, effectiveVersion, org);
105
+ let installCommand;
105
106
  if (!resolved) {
106
107
  if (effectiveVersion) {
107
108
  const assetExists = findAsset(registry, name, type, undefined, org);
@@ -165,6 +166,7 @@ export default function Info({ args: [rawName], options: { full, json, org: cliO
165
166
  : { versions: [] };
166
167
  return { availableVersions, name, outcome: 'version-not-found', version: effectiveVersion };
167
168
  }
169
+ installCommand = `atk install ${formatOrgName(only.org, name)}${effectiveVersion ? `@${effectiveVersion}` : ''}`;
168
170
  }
169
171
  else if (orgMatches.length > 0) {
170
172
  return { activeOrg: org, name, orgMatches, outcome: 'not-found-with-suggestions' };
@@ -193,6 +195,7 @@ export default function Info({ args: [rawName], options: { full, json, org: cliO
193
195
  asset: resolved.asset,
194
196
  availableVersions,
195
197
  deprecation,
198
+ installCommand,
196
199
  installedVersion,
197
200
  isInstalled,
198
201
  outcome: 'found',
@@ -241,7 +244,7 @@ export default function Info({ args: [rawName], options: { full, json, org: cliO
241
244
  if (data.outcome === 'not-found') {
242
245
  return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { color: 'red', children: ["Asset or bundle ", _jsxs(Text, { bold: true, children: ["\"", displayName, "\""] }), " not found in the registry."] }), _jsxs(Text, { dimColor: true, children: ["Run ", _jsxs(Text, { bold: true, children: ["atk search ", data.name] }), " to find similar assets."] })] }));
243
246
  }
244
- return (_jsx(Box, { flexDirection: 'column', children: _jsx(AssetDetail, { asset: data.asset, availableVersions: data.availableVersions, deprecation: data.deprecation, full: full, installedVersion: data.installedVersion, isInstalled: data.isInstalled, readme: data.readme, verbose: verbose, version: data.version, versionData: data.versionData }) }));
247
+ return (_jsxs(Box, { flexDirection: 'column', children: [_jsx(AssetDetail, { asset: data.asset, availableVersions: data.availableVersions, deprecation: data.deprecation, full: full, installedVersion: data.installedVersion, isInstalled: data.isInstalled, readme: data.readme, verbose: verbose, version: data.version, versionData: data.versionData }), data.installCommand && !data.isInstalled && (_jsxs(Text, { dimColor: true, children: ["Org-scoped. Install it with: ", _jsx(Text, { bold: true, children: data.installCommand })] }))] }));
245
248
  }
246
249
  function buildJsonOutput(data) {
247
250
  switch (data.outcome) {
@@ -266,6 +269,7 @@ function buildJsonOutput(data) {
266
269
  availableVersions: data.availableVersions,
267
270
  deprecation: data.deprecation,
268
271
  description: data.versionData.description,
272
+ installCommand: data.installCommand,
269
273
  installedVersion: data.installedVersion,
270
274
  isInstalled: data.isInstalled,
271
275
  name: data.asset.name,
@@ -1 +1 @@
1
- {"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/commands/info.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/commands/info.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  export declare const description = "Install an asset or bundle (no args syncs from lockfile)";
3
3
  export declare const options: z.ZodObject<{
4
+ adopt: z.ZodOptional<z.ZodBoolean>;
4
5
  all: z.ZodDefault<z.ZodBoolean>;
5
6
  dryRun: z.ZodDefault<z.ZodBoolean>;
6
7
  force: z.ZodDefault<z.ZodBoolean>;
@@ -18,6 +19,6 @@ type Props = {
18
19
  args: z.infer<typeof args>;
19
20
  options: z.infer<typeof options>;
20
21
  };
21
- export default function Install({ args: [rawName], options: { all, dryRun, force, json, org, pin, projectRoot, refresh, tool, user, yes }, }: Props): import("react/jsx-runtime").JSX.Element;
22
+ export default function Install({ args: [rawName], options: { adopt, all, dryRun, force, json, org, pin, projectRoot, refresh, tool, user, yes }, }: Props): import("react/jsx-runtime").JSX.Element;
22
23
  export {};
23
24
  //# sourceMappingURL=install.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiDxB,eAAO,MAAM,WAAW,6DAA6D,CAAC;AAEtF,eAAO,MAAM,OAAO;;;;;;;;;;;;iBAsGlB,CAAC;AAEH,eAAO,MAAM,IAAI,gDAUf,CAAC;AAgDH,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,OAAO,CAAC,EAC9B,IAAI,EAAE,CAAC,OAAO,CAAC,EACf,OAAO,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GACvF,EAAE,KAAK,2CAqCP"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkExB,eAAO,MAAM,WAAW,6DAA6D,CAAC;AAEtF,eAAO,MAAM,OAAO;;;;;;;;;;;;;iBA8GlB,CAAC;AAEH,eAAO,MAAM,IAAI,gDAUf,CAAC;AAqFH,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,OAAO,CAAC,EAC9B,IAAI,EAAE,CAAC,OAAO,CAAC,EACf,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAC9F,EAAE,KAAK,2CAsCP"}
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { Box, Text, useApp } from 'ink';
3
3
  import { useCallback, useEffect, useRef, useState } from 'react';
4
4
  import { z } from 'zod';
@@ -11,20 +11,26 @@ import { loadConfig } from '../lib/config.js';
11
11
  import { crossScopeNotice, findCrossScopeInstalls } from '../lib/cross-scope.js';
12
12
  import { errorGuidance, errorMessage } from '../lib/errors.js';
13
13
  import { isInstalledForTool } from '../lib/installed-for-tool.js';
14
- import { findInstalledAsset, identityKey, readLockfile, upgradeToDirectInstall, withLockfileErrorHandling, writeLockfile, } from '../lib/lockfile.js';
14
+ import { addAssetToLockfile, findInstalledAsset, identityKey, readLockfile, upgradeToDirectInstall, withLockfileErrorHandling, writeLockfile, } from '../lib/lockfile.js';
15
15
  import { executeInstallPlanForTools, withoutKeptDependencies } from '../lib/multi-tool-install.js';
16
16
  import { addNotice } from '../lib/notices.js';
17
17
  import { formatOrgName, isBareOrgScope, parseBundleSpec, resolveActiveOrg } from '../lib/org.js';
18
18
  import { renderJson, useNonInteractive } from '../lib/output.js';
19
19
  import { argument, option } from '../lib/pastel/index.js';
20
- import { fetchRegistry, findAsset, findBundle, getAssetsByOrg, isDeprecated, isLatestAlias } from '../lib/registry.js';
21
- import { resolveBundleInstallPlan, resolveInstallPlan, resolveMultipleInstallPlans, } from '../lib/resolver.js';
20
+ import { fetchRegistry, findAsset, findAssetsByName, findBundle, getAssetsByOrg, isDeprecated, isLatestAlias, } from '../lib/registry.js';
21
+ import { resolveBundleInstallPlan, resolveInstallPlan, resolveMultipleInstallPlans, ResolverError, } from '../lib/resolver.js';
22
22
  import { scopeLabel } from '../lib/scope.js';
23
23
  import { resolvePlacingTools } from '../lib/tool-resolver.js';
24
24
  import { parseNameVersion } from '../lib/version.js';
25
25
  import Sync from './sync.js';
26
26
  export const description = 'Install an asset or bundle (no args syncs from lockfile)';
27
27
  export const options = z.object({
28
+ adopt: z
29
+ .boolean()
30
+ .optional()
31
+ .describe(option({
32
+ description: 'With a bundle: also record it as the owner of members installed on their own',
33
+ })),
28
34
  all: z
29
35
  .boolean()
30
36
  .default(false)
@@ -111,10 +117,7 @@ export const args = z.tuple([
111
117
  name: 'target',
112
118
  })),
113
119
  ]);
114
- // ---------------------------------------------------------------------------
115
- // Org-install flow (atk install @orgname)
116
- // ---------------------------------------------------------------------------
117
- export default function Install({ args: [rawName], options: { all, dryRun, force, json, org, pin, projectRoot, refresh, tool, user, yes }, }) {
120
+ export default function Install({ args: [rawName], options: { adopt, all, dryRun, force, json, org, pin, projectRoot, refresh, tool, user, yes }, }) {
118
121
  // No argument provided — delegate to sync behavior
119
122
  if (!rawName) {
120
123
  return _jsx(Sync, { options: { dryRun, force, json, projectRoot, refresh, tool, user } });
@@ -123,7 +126,7 @@ export default function Install({ args: [rawName], options: { all, dryRun, force
123
126
  const orgName = rawName.slice(1);
124
127
  return (_jsx(InstallOrg, { cliOrg: org, dryRun: dryRun, force: force, json: json, orgName: orgName, pin: pin, projectRoot: projectRoot, skipPicker: all || yes, tool: tool, user: user }));
125
128
  }
126
- return (_jsx(InstallAsset, { dryRun: dryRun, force: force, json: json, org: org, pin: pin, projectRoot: projectRoot, rawName: rawName, tool: tool, user: user }));
129
+ return (_jsx(InstallAsset, { adopt: adopt, dryRun: dryRun, force: force, json: json, org: org, pin: pin, projectRoot: projectRoot, rawName: rawName, tool: tool, user: user }));
127
130
  }
128
131
  /** The picker lists one org's assets, so type and name identify each. */
129
132
  function assetKey(asset) {
@@ -138,6 +141,54 @@ async function bundleAtRequestedVersion(entry, requested, progress) {
138
141
  }
139
142
  return resolution.bundle;
140
143
  }
144
+ /**
145
+ * The bundle's members that one of `tools` places, as the registry has them. A member none of them
146
+ * places is left out, since this run can't adopt it, and so is a ref the registry can't find, which
147
+ * the install reports.
148
+ */
149
+ function bundleMembers(registry, bundle, tools) {
150
+ return (bundle.assets ?? []).flatMap((ref) => {
151
+ const found = findBundleMember(registry, bundle, ref);
152
+ if (!found || !tools.some((t) => placesAsset(t.adapter, found.asset.type, found.versionData.tools)))
153
+ return [];
154
+ const { name, org, type } = found.asset;
155
+ return [{ name, ...(org ? { org } : {}), type }];
156
+ });
157
+ }
158
+ /**
159
+ * What a bundle install says about its members outside the bundle (`kept`) and the members it
160
+ * `adopted`. A member with no origin can be adopted; another bundle's member stays with that bundle.
161
+ */
162
+ function bundleReport(kept, adopted, { adoptCommand, bundle }) {
163
+ const spec = formatOrgName(bundle.org, bundle.name);
164
+ const unowned = kept.filter((member) => !member.bundle);
165
+ const owned = kept.filter((member) => member.bundle);
166
+ const warnings = [];
167
+ if (unowned.length > 0) {
168
+ const them = unowned.length === 1 ? 'it' : 'them';
169
+ warnings.push(`${unowned.map(memberLabel).join(', ')} ${unowned.length === 1 ? 'is' : 'are'} installed on ` +
170
+ `${unowned.length === 1 ? 'its' : 'their'} own, so ${spec} doesn't own ${them} and ` +
171
+ `\`atk uninstall ${spec}\` leaves ${them}. Run \`${adoptCommand}\` to record ${them} as the bundle's.`);
172
+ }
173
+ if (owned.length > 0) {
174
+ const labels = owned.map((member) => {
175
+ const { name, org } = member.bundle;
176
+ return `${memberLabel(member)} of ${formatOrgName(org, name)}`;
177
+ });
178
+ const them = owned.length === 1 ? 'it' : 'them';
179
+ warnings.push(`${labels.join(', ')} ${owned.length === 1 ? 'belongs' : 'belong'} to another bundle, so ${spec} doesn't ` +
180
+ `own ${them} and \`atk uninstall ${spec}\` leaves ${them}. --adopt never takes a member from another bundle.`);
181
+ }
182
+ return {
183
+ ...(adopted.length > 0 ? { adopted } : {}),
184
+ ...(kept.length > 0 ? { keptOutsideBundle: kept } : {}),
185
+ ...(warnings.length > 0 ? { warnings } : {}),
186
+ };
187
+ }
188
+ /** The members a bundle install adopted (or a dry run would), and what to do about the rest. */
189
+ function BundleReportLines({ bundleName, dryRun = false, report: { adopted = [], warnings = [] }, }) {
190
+ return (_jsxs(_Fragment, { children: [adopted.length > 0 && (_jsxs(Text, { children: [_jsx(Text, { color: 'green', children: "\u2713" }), " ", dryRun ? 'Would adopt' : 'Adopted', " into ", _jsx(Text, { bold: true, children: bundleName }), ":", ' ', adopted.map(memberLabel).join(', ')] })), warnings.map((warning) => (_jsxs(Text, { children: [_jsx(Text, { color: 'yellow', children: "!" }), " ", warning] }, warning)))] }));
191
+ }
141
192
  /**
142
193
  * The plan's assets (the asset, a bundle's members, their dependencies) that the other scope already
143
194
  * has, as the outcome's `crossScope`. A dry run passes the whole resolved plan, so it warns about the
@@ -164,18 +215,20 @@ async function crossScopeOf(plan, { installedAt, json, scope, tools }) {
164
215
  return {};
165
216
  }
166
217
  }
218
+ /**
219
+ * The registry asset a bundle's ref names, on the same (name, type, org) identity the resolver's
220
+ * install plan uses: a same-named asset in another scope is not this ref. An unqualified ref falls
221
+ * back to the bundle's own org, never the installer's active org.
222
+ */
223
+ function findBundleMember(registry, bundle, ref) {
224
+ const found = findAsset(registry, ref.name, ref.type, ref.version, ref.org ?? bundle.org);
225
+ return found && (!ref.org || found.asset.org === ref.org) ? found : undefined;
226
+ }
167
227
  /** The same org install with `--all`, for a run that can't show the picker. */
168
- function installAllCommand({ force, orgName, pin, projectRoot, tool, user, }) {
169
- return [
170
- `atk install @${orgName} --all`,
171
- ...(tool ? ['--tool', tool] : []),
172
- ...(projectRoot ? ['--project-root', JSON.stringify(projectRoot)] : []),
173
- ...(user ? ['--user'] : []),
174
- ...(force ? ['--force'] : []),
175
- ...(pin ? ['--pin'] : []),
176
- ].join(' ');
228
+ function installAllCommand({ orgName, ...flags }) {
229
+ return installCommandFor(`@${orgName} --all`, flags);
177
230
  }
178
- function InstallAsset({ dryRun, force, json, org: cliOrg, pin, projectRoot, rawName, tool, user, }) {
231
+ function InstallAsset({ adopt, dryRun, force, json, org: cliOrg, pin, projectRoot, rawName, tool, user, }) {
179
232
  const { json: effectiveJson } = useNonInteractive(json);
180
233
  const { name: parsedName, version: requestedVersion } = parseNameVersion(rawName);
181
234
  // Extract org from @org/name syntax if present (shared spec parser — the
@@ -232,10 +285,39 @@ function InstallAsset({ dryRun, force, json, org: cliOrg, pin, projectRoot, rawN
232
285
  (orgScopes.length > 0 ? ` Did you mean ${orgScopes.join(' or ')}?` : ''));
233
286
  }
234
287
  }
288
+ // With no active org, `info` opens the only org asset of a bare name, but install doesn't
289
+ // switch scopes on its own: it names the spec that installs that asset.
290
+ if (!org && !indexBundle && !asset) {
291
+ const orgs = new Set(findAssetsByName(registry, name).map((match) => match.org));
292
+ const [only] = orgs;
293
+ // A version the org asset doesn't have is left to the resolver's own error.
294
+ if (only && orgs.size === 1 && findAsset(registry, name, undefined, effectiveVersion, only)) {
295
+ const spec = formatOrgName(only, name);
296
+ const version = effectiveVersion ? `@${effectiveVersion}` : '';
297
+ throw new ResolverError(`Asset "${name}"${version ? ` ${version}` : ''} not found in the registry`, {
298
+ command: installCommandFor(`${spec}${version}`, { dryRun, force, pin, projectRoot, tool, user }),
299
+ hint: `The only asset of that name is org-scoped: ${spec}. Install it by that name.`,
300
+ });
301
+ }
302
+ }
303
+ if (adopt && !indexBundle) {
304
+ throw new Error(`--adopt records a bundle as the owner of its members, and "${name}" is not a bundle.`);
305
+ }
235
306
  const bundle = indexBundle ? await bundleAtRequestedVersion(indexBundle, effectiveVersion, progress) : undefined;
236
307
  // With an explicit version, a member only counts as installed when the
237
308
  // lockfile records it as part of this bundle at that version.
238
309
  const requiredBundleVersion = bundle && effectiveVersion && !isLatestAlias(effectiveVersion) ? bundle.version : undefined;
310
+ const members = bundle ? bundleMembers(registry, bundle, tools) : [];
311
+ const adoptCommand = bundle
312
+ ? installCommandFor(formatOrgName(bundle.org, bundle.name) + (effectiveVersion ? `@${effectiveVersion}` : ''), {
313
+ adopt: true,
314
+ force: false,
315
+ pin: false,
316
+ projectRoot,
317
+ tool,
318
+ user,
319
+ })
320
+ : '';
239
321
  // Dry-run: resolve plan without acquiring lockfile lock or executing. The install leaves
240
322
  // dependencies already in place alone and refuses to move a pinned one, and so does the plan.
241
323
  if (dryRun) {
@@ -247,12 +329,15 @@ function InstallAsset({ dryRun, force, json, org: cliOrg, pin, projectRoot, rawN
247
329
  if (bundle) {
248
330
  progress('Resolving bundle assets...');
249
331
  const resolved = resolveBundleInstallPlan(registry, bundle);
332
+ // Nothing is written, so the members an install would adopt are the ones with no origin now.
333
+ const outside = membersOutsideBundle(currentLockfile, members, bundle);
250
334
  return {
251
335
  bundleName: bundle.name,
252
336
  outcome: 'dry-run-bundle',
253
337
  plan: asInstalled(resolved),
254
338
  tools: toolNames,
255
339
  version: bundle.version,
340
+ ...bundleReport(adopt ? outside.filter((m) => m.bundle) : outside, adopt ? outside.filter((m) => !m.bundle) : [], { adoptCommand, bundle }),
256
341
  ...(await crossScope(resolved)),
257
342
  };
258
343
  }
@@ -268,33 +353,26 @@ function InstallAsset({ dryRun, force, json, org: cliOrg, pin, projectRoot, rawN
268
353
  }
269
354
  return await withLockfileErrorHandling(projectDir, async () => {
270
355
  if (bundle) {
356
+ const before = await readLockfile(projectDir);
357
+ const bundleOrigin = {
358
+ name: bundle.name,
359
+ ...(bundle.org ? { org: bundle.org } : {}),
360
+ version: bundle.version,
361
+ };
271
362
  // Bundle installation flow — check if already installed for ALL tools
272
363
  if (!force) {
273
- const lockfile = await readLockfile(projectDir);
274
364
  const bundleAssets = bundle.assets ?? [];
275
- // Key on the same (name, type, org) identity the resolver's install plan uses — a
276
- // same-named asset in another scope is not this ref. Unqualified refs fall back to
277
- // the bundle's own org, never the installer's active org.
278
- const findMember = (ref) => {
279
- const found = findAsset(registry, ref.name, ref.type, ref.version, ref.org ?? bundle.org);
280
- return found && (!ref.org || found.asset.org === ref.org) ? found : undefined;
281
- };
282
365
  // When no configured tool takes any member, fall through so the installer says why.
283
- const anyMemberTaken = bundleAssets.some((ref) => {
284
- const found = findMember(ref);
285
- return (found !== undefined &&
286
- tools.some((t) => placesAsset(t.adapter, found.asset.type, found.versionData.tools)));
287
- });
288
- const allInstalledForAllTools = tools.every(({ adapter: toolAdapter }) => anyMemberTaken &&
366
+ const allInstalledForAllTools = tools.every(({ adapter: toolAdapter }) => members.length > 0 &&
289
367
  bundleAssets.every((ref) => {
290
- const found = findMember(ref);
368
+ const found = findBundleMember(registry, bundle, ref);
291
369
  if (!found)
292
370
  return false;
293
371
  // A tool that doesn't take this member (its type, or a hook for other tools) has
294
372
  // nothing to check.
295
373
  if (!placesAsset(toolAdapter, found.asset.type, found.versionData.tools))
296
374
  return true;
297
- const installed = findInstalledAsset(lockfile, ref.name, ref.type, found.asset.org);
375
+ const installed = findInstalledAsset(before, ref.name, ref.type, found.asset.org);
298
376
  if (!installed)
299
377
  return false;
300
378
  if (requiredBundleVersion && !isFromBundleVersion(installed, bundle, requiredBundleVersion)) {
@@ -303,17 +381,31 @@ function InstallAsset({ dryRun, force, json, org: cliOrg, pin, projectRoot, rawN
303
381
  return isInstalledForTool(installed, toolAdapter, projectDir);
304
382
  }));
305
383
  if (allInstalledForAllTools) {
384
+ // Adopting a bundle that is in place only records its origin on the members with none:
385
+ // their files, versions and pins stay as they are. Another bundle's member stays its.
386
+ const outside = membersOutsideBundle(before, members, bundle);
387
+ const adopted = adopt ? outside.filter((member) => !member.bundle) : [];
388
+ if (adopted.length > 0) {
389
+ let lockfile = before;
390
+ for (const { name: memberName, org: memberOrg, type } of adopted) {
391
+ const installed = findInstalledAsset(lockfile, memberName, type, memberOrg);
392
+ lockfile = addAssetToLockfile(lockfile, { ...installed, bundleOrigin });
393
+ }
394
+ await writeLockfile(projectDir, lockfile);
395
+ }
306
396
  return {
307
397
  bundleName: bundle.name,
308
398
  outcome: 'bundle-already-installed',
309
399
  version: bundle.version,
400
+ ...bundleReport(outside.filter((member) => !adopted.includes(member)), adopted, { adoptCommand, bundle }),
310
401
  };
311
402
  }
312
403
  }
313
404
  progress('Resolving bundle assets...');
314
405
  const plan = resolveBundleInstallPlan(registry, bundle);
315
406
  const toolResults = await executeInstallPlanForTools(plan, tools, {
316
- bundleOrigin: { name: bundle.name, ...(bundle.org ? { org: bundle.org } : {}), version: bundle.version },
407
+ adopt,
408
+ bundleOrigin,
317
409
  force,
318
410
  onProgress: progress,
319
411
  onTool: (toolName) => progress(`Installing bundle for ${toolName}...`),
@@ -321,11 +413,16 @@ function InstallAsset({ dryRun, force, json, org: cliOrg, pin, projectRoot, rawN
321
413
  projectDir: projectDir,
322
414
  scope: installScope,
323
415
  });
416
+ const kept = membersOutsideBundle(await readLockfile(projectDir), members, bundle);
417
+ const adopted = adopt
418
+ ? membersOutsideBundle(before, members, bundle).filter((m) => !m.bundle && !kept.some((k) => identityKey(k) === identityKey(m)))
419
+ : [];
324
420
  return {
325
421
  bundleName: bundle.name,
326
422
  outcome: 'bundle-installed',
327
423
  toolResults,
328
424
  version: bundle.version,
425
+ ...bundleReport(kept, adopted, { adoptCommand, bundle }),
329
426
  ...(await crossScope(plan, projectDir)),
330
427
  };
331
428
  }
@@ -378,7 +475,7 @@ function InstallAsset({ dryRun, force, json, org: cliOrg, pin, projectRoot, rawN
378
475
  });
379
476
  return { outcome: 'installed', toolResults, ...(await crossScope(plan, projectDir)) };
380
477
  });
381
- }, [cliOrg, dryRun, force, inlineOrg, name, pin, requestedVersion, tool]);
478
+ }, [adopt, cliOrg, dryRun, force, inlineOrg, name, pin, requestedVersion, tool]);
382
479
  if (state.status === 'loading') {
383
480
  return _jsx(Spinner, { message: state.message });
384
481
  }
@@ -402,10 +499,10 @@ function InstallAsset({ dryRun, force, json, org: cliOrg, pin, projectRoot, rawN
402
499
  return renderJson({ ...data, ...fields });
403
500
  }
404
501
  if (data.outcome === 'bundle-already-installed') {
405
- return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { children: [_jsx(Text, { color: 'yellow', children: "!" }), " Bundle ", _jsx(Text, { bold: true, children: data.bundleName }), " is already fully installed (v", data.version, ")", where, "."] }), _jsx(Text, { dimColor: true, children: "Use --force to reinstall." })] }));
502
+ return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { children: [_jsx(Text, { color: 'yellow', children: "!" }), " Bundle ", _jsx(Text, { bold: true, children: data.bundleName }), " is already fully installed (v", data.version, ")", where, "."] }), _jsx(Text, { dimColor: true, children: "Use --force to reinstall." }), _jsx(BundleReportLines, { bundleName: data.bundleName, report: data })] }));
406
503
  }
407
504
  if (data.outcome === 'bundle-installed') {
408
- return (_jsxs(Box, { flexDirection: 'column', children: [data.toolResults.map(({ results, skipped, tool: toolName, warnings }) => (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { color: 'green', children: ["\u2713 Bundle ", _jsx(Text, { bold: true, children: data.bundleName }), " v", data.version, " \u2014 ", results.length, " asset", results.length !== 1 ? 's' : ''] }), _jsx(InstallSummary, { results: results, skipped: skipped, tools: [toolName], warnings: warnings, where: label })] }, toolName))), _jsx(CrossScopeWarning, { installs: data.crossScope ?? [] })] }));
505
+ return (_jsxs(Box, { flexDirection: 'column', children: [data.toolResults.map(({ results, skipped, tool: toolName, warnings }) => (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { color: 'green', children: ["\u2713 Bundle ", _jsx(Text, { bold: true, children: data.bundleName }), " v", data.version, " \u2014 ", results.length, " asset", results.length !== 1 ? 's' : ''] }), _jsx(InstallSummary, { results: results, skipped: skipped, tools: [toolName], warnings: warnings, where: label })] }, toolName))), _jsx(BundleReportLines, { bundleName: data.bundleName, report: data }), _jsx(CrossScopeWarning, { installs: data.crossScope ?? [] })] }));
409
506
  }
410
507
  if (data.outcome === 'already-installed') {
411
508
  return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { children: [_jsx(Text, { color: 'yellow', children: "!" }), " ", _jsx(Text, { bold: true, children: data.name }), " is already installed (v", data.version, ")", where, "."] }), _jsx(Text, { dimColor: true, children: "Use --force to reinstall." })] }));
@@ -417,13 +514,26 @@ function InstallAsset({ dryRun, force, json, org: cliOrg, pin, projectRoot, rawN
417
514
  return (_jsxs(Box, { flexDirection: 'column', children: [_jsx(DryRunBanner, { action: 'install', count: data.plan.totalCount, tools: data.tools, where: label }), _jsx(Text, { children: " " }), data.plan.entries.map((entry) => (_jsxs(Text, { children: [' ', entry.reason === 'dependency' ? (_jsxs(Text, { color: 'cyan', children: [formatOrgName(entry.asset.org, entry.asset.name), ' ', _jsxs(Text, { dimColor: true, children: ["(", entry.asset.type, ") v", entry.version, " \u2014 dependency"] })] })) : (_jsxs(Text, { children: [_jsx(Text, { bold: true, children: formatOrgName(entry.asset.org, entry.asset.name) }), _jsxs(Text, { dimColor: true, children: [' ', "(", entry.asset.type, ") v", entry.version] })] }))] }, identityKey(entry.asset)))), _jsx(CrossScopeWarning, { installs: data.crossScope ?? [] })] }));
418
515
  }
419
516
  if (data.outcome === 'dry-run-bundle') {
420
- return (_jsxs(Box, { flexDirection: 'column', children: [_jsx(DryRunBanner, { action: 'install', count: data.plan.totalCount, tools: data.tools, where: label }), _jsx(Text, { children: " " }), _jsxs(Text, { children: [_jsxs(Text, { bold: true, color: 'magenta', children: ["Bundle: ", data.bundleName] }), _jsxs(Text, { dimColor: true, children: [" v", data.version] })] }), _jsx(Text, { children: " " }), data.plan.entries.map((entry) => (_jsxs(Text, { children: [' ', entry.reason === 'dependency' ? (_jsxs(Text, { color: 'cyan', children: [formatOrgName(entry.asset.org, entry.asset.name), ' ', _jsxs(Text, { dimColor: true, children: ["(", entry.asset.type, ") v", entry.version, " \u2014 dependency"] })] })) : (_jsxs(Text, { children: [_jsx(Text, { bold: true, children: formatOrgName(entry.asset.org, entry.asset.name) }), _jsxs(Text, { dimColor: true, children: [' ', "(", entry.asset.type, ") v", entry.version] })] }))] }, identityKey(entry.asset)))), _jsx(CrossScopeWarning, { installs: data.crossScope ?? [] })] }));
517
+ return (_jsxs(Box, { flexDirection: 'column', children: [_jsx(DryRunBanner, { action: 'install', count: data.plan.totalCount, tools: data.tools, where: label }), _jsx(Text, { children: " " }), _jsxs(Text, { children: [_jsxs(Text, { bold: true, color: 'magenta', children: ["Bundle: ", data.bundleName] }), _jsxs(Text, { dimColor: true, children: [" v", data.version] })] }), _jsx(Text, { children: " " }), data.plan.entries.map((entry) => (_jsxs(Text, { children: [' ', entry.reason === 'dependency' ? (_jsxs(Text, { color: 'cyan', children: [formatOrgName(entry.asset.org, entry.asset.name), ' ', _jsxs(Text, { dimColor: true, children: ["(", entry.asset.type, ") v", entry.version, " \u2014 dependency"] })] })) : (_jsxs(Text, { children: [_jsx(Text, { bold: true, children: formatOrgName(entry.asset.org, entry.asset.name) }), _jsxs(Text, { dimColor: true, children: [' ', "(", entry.asset.type, ") v", entry.version] })] }))] }, identityKey(entry.asset)))), _jsx(BundleReportLines, { bundleName: data.bundleName, dryRun: true, report: data }), _jsx(CrossScopeWarning, { installs: data.crossScope ?? [] })] }));
421
518
  }
422
519
  if (data.outcome === 'deprecated') {
423
520
  return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { color: 'yellow', children: ["Warning: \"", data.name, "\" is deprecated \u2014 ", data.reason] }), data.replacement && (_jsxs(Text, { children: ["Consider using", ' ', _jsx(Text, { bold: true, color: 'cyan', children: data.replacement }), ' ', "instead."] })), _jsx(Text, { dimColor: true, children: "Use --force to install anyway." })] }));
424
521
  }
425
522
  return (_jsxs(Box, { flexDirection: 'column', children: [data.toolResults.map(({ results, skipped, tool: toolName, warnings }) => (_jsx(InstallSummary, { results: results, skipped: skipped, tools: [toolName], warnings: warnings, where: label }, toolName))), _jsx(CrossScopeWarning, { installs: data.crossScope ?? [] })] }));
426
523
  }
524
+ /** `atk install <spec>` with the run's own flags, for a command an error suggests. */
525
+ function installCommandFor(spec, { adopt, dryRun, force, pin, projectRoot, tool, user }) {
526
+ return [
527
+ `atk install ${spec}`,
528
+ ...(tool ? ['--tool', tool] : []),
529
+ ...(projectRoot ? ['--project-root', JSON.stringify(projectRoot)] : []),
530
+ ...(user ? ['--user'] : []),
531
+ ...(adopt ? ['--adopt'] : []),
532
+ ...(force ? ['--force'] : []),
533
+ ...(pin ? ['--pin'] : []),
534
+ ...(dryRun ? ['--dry-run'] : []),
535
+ ].join(' ');
536
+ }
427
537
  function InstallOrg({ cliOrg, dryRun, force, json, orgName, pin, projectRoot, skipPicker, tool, user, }) {
428
538
  const { exit } = useApp();
429
539
  const { isTTY, json: effectiveJson } = useNonInteractive(json);
@@ -678,4 +788,23 @@ function isFromBundleVersion(installed, bundle, version) {
678
788
  const origin = installed.bundleOrigin;
679
789
  return origin?.name === bundle.name && origin.org === bundle.org && origin.version === version;
680
790
  }
791
+ /** A member as a report names it: its spec and type. */
792
+ function memberLabel({ name, org, type }) {
793
+ return `${formatOrgName(org, name)} (${type})`;
794
+ }
795
+ /**
796
+ * The members `lockfile` has installed without the bundle's origin, each with the bundle that owns
797
+ * it, if any. The origin's org matches as the bundle uninstall's does.
798
+ */
799
+ function membersOutsideBundle(lockfile, members, bundle) {
800
+ return members.flatMap((member) => {
801
+ const installed = findInstalledAsset(lockfile, member.name, member.type, member.org);
802
+ if (!installed)
803
+ return [];
804
+ const origin = installed.bundleOrigin;
805
+ if (origin?.name === bundle.name && (origin.org ?? undefined) === (bundle.org ?? undefined))
806
+ return [];
807
+ return [{ ...(origin ? { bundle: origin } : {}), ...member }];
808
+ });
809
+ }
681
810
  //# sourceMappingURL=install.js.map