@lesliechan721/aw 0.1.0-beta.8 → 0.1.0-beta.9

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 (275) hide show
  1. package/dist/authoring/scripts/add-skill.mjs +4 -4
  2. package/dist/authoring/scripts/add-skill.mjs.map +1 -1
  3. package/dist/authoring/scripts/init-plugin.mjs +4 -4
  4. package/dist/authoring/scripts/init-plugin.mjs.map +1 -1
  5. package/dist/authoring/scripts/lib/plugin-version-check.mjs +1 -1
  6. package/dist/authoring/scripts/lib/skill-scaffold.d.mts +77 -90
  7. package/dist/authoring/scripts/lib/skill-scaffold.mjs +99 -120
  8. package/dist/authoring/scripts/lib/skill-scaffold.mjs.map +1 -1
  9. package/dist/authoring/scripts/remove-plugin.mjs +1 -1
  10. package/dist/authoring/scripts/remove-plugin.mjs.map +1 -1
  11. package/dist/authoring/scripts/validate-plugin.mjs +34 -778
  12. package/dist/authoring/scripts/validate-plugin.mjs.map +1 -1
  13. package/dist/scripts/aw-skill-eval-materializer.d.ts +24 -0
  14. package/dist/scripts/{plugin-eval-materializer.js → aw-skill-eval-materializer.js} +34 -145
  15. package/dist/scripts/aw-skill-eval-materializer.js.map +1 -0
  16. package/dist/scripts/bundle-plugins.d.ts +1 -0
  17. package/dist/scripts/bundle-plugins.js +2 -1
  18. package/dist/scripts/bundle-plugins.js.map +1 -1
  19. package/dist/scripts/plugin-staging.d.ts +5 -6
  20. package/dist/scripts/plugin-staging.js +12 -13
  21. package/dist/scripts/plugin-staging.js.map +1 -1
  22. package/dist/src/authoring/workspace-commands.d.ts +2 -1
  23. package/dist/src/authoring/workspace-commands.js.map +1 -1
  24. package/dist/src/commands/aw-capabilities.d.ts +2 -2
  25. package/dist/src/commands/aw-capabilities.js +6 -11
  26. package/dist/src/commands/aw-capabilities.js.map +1 -1
  27. package/dist/src/commands/catalog-dev-source.d.ts +18 -12
  28. package/dist/src/commands/catalog-dev-source.js +241 -305
  29. package/dist/src/commands/catalog-dev-source.js.map +1 -1
  30. package/dist/src/commands/catalog-generation.d.ts +6 -19
  31. package/dist/src/commands/catalog-generation.js +10 -11
  32. package/dist/src/commands/catalog-generation.js.map +1 -1
  33. package/dist/src/commands/catalog-publication-inspection.d.ts +28 -27
  34. package/dist/src/commands/catalog-publication-inspection.js +139 -50
  35. package/dist/src/commands/catalog-publication-inspection.js.map +1 -1
  36. package/dist/src/commands/catalog-publication-journal.d.ts +49 -0
  37. package/dist/src/commands/catalog-publication-journal.js +147 -0
  38. package/dist/src/commands/catalog-publication-journal.js.map +1 -0
  39. package/dist/src/commands/catalog-publication-target.d.ts +2 -1
  40. package/dist/src/commands/catalog-publication-target.js +37 -2
  41. package/dist/src/commands/catalog-publication-target.js.map +1 -1
  42. package/dist/src/commands/catalog-publish.d.ts +51 -15
  43. package/dist/src/commands/catalog-publish.js +576 -219
  44. package/dist/src/commands/catalog-publish.js.map +1 -1
  45. package/dist/src/commands/catalog-source.d.ts +3 -28
  46. package/dist/src/commands/catalog-source.js +29 -140
  47. package/dist/src/commands/catalog-source.js.map +1 -1
  48. package/dist/src/commands/catalog-status.d.ts +6 -26
  49. package/dist/src/commands/catalog-status.js +8 -146
  50. package/dist/src/commands/catalog-status.js.map +1 -1
  51. package/dist/src/commands/catalog-workspace-resolution.d.ts +13 -0
  52. package/dist/src/commands/catalog-workspace-resolution.js +42 -0
  53. package/dist/src/commands/catalog-workspace-resolution.js.map +1 -0
  54. package/dist/src/commands/dependency-operation-plan.d.ts +88 -9
  55. package/dist/src/commands/dependency-operation-plan.js +331 -6
  56. package/dist/src/commands/dependency-operation-plan.js.map +1 -1
  57. package/dist/src/commands/init.d.ts +5 -11
  58. package/dist/src/commands/init.js +30 -51
  59. package/dist/src/commands/init.js.map +1 -1
  60. package/dist/src/commands/offline-cleanup-evidence.d.ts +20 -0
  61. package/dist/src/commands/offline-cleanup-evidence.js +87 -9
  62. package/dist/src/commands/offline-cleanup-evidence.js.map +1 -1
  63. package/dist/src/commands/options.d.ts +6 -1
  64. package/dist/src/commands/options.js +64 -6
  65. package/dist/src/commands/options.js.map +1 -1
  66. package/dist/src/commands/plugin-capabilities.js +4 -0
  67. package/dist/src/commands/plugin-capabilities.js.map +1 -1
  68. package/dist/src/commands/rebuild-command.d.ts +10 -8
  69. package/dist/src/commands/rebuild-command.js +1217 -426
  70. package/dist/src/commands/rebuild-command.js.map +1 -1
  71. package/dist/src/commands/rebuild-integration.d.ts +54 -6
  72. package/dist/src/commands/rebuild-integration.js +691 -364
  73. package/dist/src/commands/rebuild-integration.js.map +1 -1
  74. package/dist/src/commands/rebuild-operations.d.ts +2 -0
  75. package/dist/src/commands/rebuild-operations.js +31 -17
  76. package/dist/src/commands/rebuild-operations.js.map +1 -1
  77. package/dist/src/commands/skill-eval.d.ts +33 -0
  78. package/dist/src/commands/skill-eval.js +363 -0
  79. package/dist/src/commands/skill-eval.js.map +1 -0
  80. package/dist/src/commands/{status-v5.d.ts → status-v6.d.ts} +59 -26
  81. package/dist/src/commands/{status-v5.js → status-v6.js} +882 -79
  82. package/dist/src/commands/status-v6.js.map +1 -0
  83. package/dist/src/commands/sync-command.d.ts +21 -0
  84. package/dist/src/commands/sync-command.js +206 -0
  85. package/dist/src/commands/sync-command.js.map +1 -0
  86. package/dist/src/commands/wizard.d.ts +2 -2
  87. package/dist/src/commands/write-commands.js +1 -43
  88. package/dist/src/commands/write-commands.js.map +1 -1
  89. package/dist/src/constants.d.ts +5 -4
  90. package/dist/src/constants.js +5 -4
  91. package/dist/src/constants.js.map +1 -1
  92. package/dist/src/eval/manifest-v1.d.ts +66 -0
  93. package/dist/src/eval/manifest-v1.js +326 -0
  94. package/dist/src/eval/manifest-v1.js.map +1 -0
  95. package/dist/src/generators/local-plugin.d.ts +3 -0
  96. package/dist/src/generators/local-plugin.js +123 -55
  97. package/dist/src/generators/local-plugin.js.map +1 -1
  98. package/dist/src/index.d.ts +2 -0
  99. package/dist/src/index.js +412 -152
  100. package/dist/src/index.js.map +1 -1
  101. package/dist/src/output/command-receipt.d.ts +58 -8
  102. package/dist/src/output/command-receipt.js +141 -11
  103. package/dist/src/output/command-receipt.js.map +1 -1
  104. package/dist/src/output/model.d.ts +3 -11
  105. package/dist/src/portable/commands.d.ts +2 -2
  106. package/dist/src/portable/commands.js +2 -8
  107. package/dist/src/portable/commands.js.map +1 -1
  108. package/dist/src/portable/materializer.d.ts +1 -4
  109. package/dist/src/portable/materializer.js +0 -2
  110. package/dist/src/portable/materializer.js.map +1 -1
  111. package/dist/src/tui/catalog-generation.d.ts +20 -41
  112. package/dist/src/tui/catalog-generation.js +65 -224
  113. package/dist/src/tui/catalog-generation.js.map +1 -1
  114. package/dist/src/tui/components.js +1 -2
  115. package/dist/src/tui/components.js.map +1 -1
  116. package/dist/src/tui/console-app-v4.js +461 -330
  117. package/dist/src/tui/console-app-v4.js.map +1 -1
  118. package/dist/src/tui/controller-runtime.d.ts +3 -5
  119. package/dist/src/tui/controller-runtime.js +182 -187
  120. package/dist/src/tui/controller-runtime.js.map +1 -1
  121. package/dist/src/tui/controller.d.ts +42 -45
  122. package/dist/src/tui/controller.js +454 -407
  123. package/dist/src/tui/controller.js.map +1 -1
  124. package/dist/src/tui/diagnostics.d.ts +1 -2
  125. package/dist/src/tui/diagnostics.js.map +1 -1
  126. package/dist/src/tui/index.d.ts +1 -1
  127. package/dist/src/tui/index.js +1 -1
  128. package/dist/src/tui/index.js.map +1 -1
  129. package/dist/src/tui/model.d.ts +81 -13
  130. package/dist/src/tui/model.js +378 -95
  131. package/dist/src/tui/model.js.map +1 -1
  132. package/dist/src/tui/router.d.ts +9 -0
  133. package/dist/src/tui/router.js.map +1 -1
  134. package/dist/src/types.d.ts +54 -47
  135. package/dist/src/types.js.map +1 -1
  136. package/dist/src/utils/agent-version.d.ts +4 -1
  137. package/dist/src/utils/agent-version.js +28 -3
  138. package/dist/src/utils/agent-version.js.map +1 -1
  139. package/dist/src/utils/catalog-digests.d.ts +7 -0
  140. package/dist/src/utils/catalog-digests.js +27 -0
  141. package/dist/src/utils/catalog-digests.js.map +1 -1
  142. package/dist/src/utils/catalog-generation-control-snapshot.d.ts +11 -0
  143. package/dist/src/utils/catalog-generation-control-snapshot.js +45 -0
  144. package/dist/src/utils/catalog-generation-control-snapshot.js.map +1 -0
  145. package/dist/src/utils/catalog-generation-error.d.ts +2 -1
  146. package/dist/src/utils/catalog-generation-error.js +12 -0
  147. package/dist/src/utils/catalog-generation-error.js.map +1 -1
  148. package/dist/src/utils/catalog-generation-resolver.d.ts +10 -3
  149. package/dist/src/utils/catalog-generation-resolver.js +90 -76
  150. package/dist/src/utils/catalog-generation-resolver.js.map +1 -1
  151. package/dist/src/utils/catalog-generation-service.d.ts +24 -33
  152. package/dist/src/utils/catalog-generation-service.js +253 -567
  153. package/dist/src/utils/catalog-generation-service.js.map +1 -1
  154. package/dist/src/utils/catalog-generation-state.d.ts +4 -0
  155. package/dist/src/utils/catalog-generation-state.js +73 -106
  156. package/dist/src/utils/catalog-generation-state.js.map +1 -1
  157. package/dist/src/utils/catalog-generation-store.d.ts +16 -26
  158. package/dist/src/utils/catalog-generation-store.js +154 -290
  159. package/dist/src/utils/catalog-generation-store.js.map +1 -1
  160. package/dist/src/utils/catalog-manifest-v6.d.ts +5 -0
  161. package/dist/src/utils/{catalog-manifest-v5.js → catalog-manifest-v6.js} +23 -35
  162. package/dist/src/utils/catalog-manifest-v6.js.map +1 -0
  163. package/dist/src/utils/catalog-operation-context.d.ts +6 -14
  164. package/dist/src/utils/catalog-operation-context.js +68 -169
  165. package/dist/src/utils/catalog-operation-context.js.map +1 -1
  166. package/dist/src/utils/catalog-public-error.js +1 -4
  167. package/dist/src/utils/catalog-public-error.js.map +1 -1
  168. package/dist/src/utils/catalog-runtime-projection.d.ts +3 -0
  169. package/dist/src/utils/catalog-runtime-projection.js +5 -40
  170. package/dist/src/utils/catalog-runtime-projection.js.map +1 -1
  171. package/dist/src/utils/catalog-snapshot.d.ts +2 -2
  172. package/dist/src/utils/catalog-source-references.d.ts +7 -0
  173. package/dist/src/utils/catalog-source-references.js +44 -55
  174. package/dist/src/utils/catalog-source-references.js.map +1 -1
  175. package/dist/src/utils/catalog-sources.js +25 -9
  176. package/dist/src/utils/catalog-sources.js.map +1 -1
  177. package/dist/src/utils/codex-config.d.ts +2 -0
  178. package/dist/src/utils/codex-config.js +22 -1
  179. package/dist/src/utils/codex-config.js.map +1 -1
  180. package/dist/src/utils/codex-manager.d.ts +50 -2
  181. package/dist/src/utils/codex-manager.js +160 -6
  182. package/dist/src/utils/codex-manager.js.map +1 -1
  183. package/dist/src/utils/codex-reconciler.d.ts +131 -0
  184. package/dist/src/utils/codex-reconciler.js +327 -0
  185. package/dist/src/utils/codex-reconciler.js.map +1 -0
  186. package/dist/src/utils/codex-shared-native.d.ts +56 -0
  187. package/dist/src/utils/codex-shared-native.js +87 -0
  188. package/dist/src/utils/codex-shared-native.js.map +1 -0
  189. package/dist/src/utils/codex-surface-analysis.d.ts +44 -0
  190. package/dist/src/utils/codex-surface-analysis.js +247 -0
  191. package/dist/src/utils/codex-surface-analysis.js.map +1 -0
  192. package/dist/src/utils/git-catalog-provider.js +56 -115
  193. package/dist/src/utils/git-catalog-provider.js.map +1 -1
  194. package/dist/src/utils/manifest.d.ts +1 -3
  195. package/dist/src/utils/manifest.js +1 -3
  196. package/dist/src/utils/manifest.js.map +1 -1
  197. package/dist/src/utils/multi-source-catalog.d.ts +1 -10
  198. package/dist/src/utils/multi-source-catalog.js +8 -175
  199. package/dist/src/utils/multi-source-catalog.js.map +1 -1
  200. package/dist/src/utils/native-cli.d.ts +34 -0
  201. package/dist/src/utils/native-cli.js +91 -0
  202. package/dist/src/utils/native-cli.js.map +1 -1
  203. package/dist/src/utils/orphan-marketplace-cleanup.js +1 -0
  204. package/dist/src/utils/orphan-marketplace-cleanup.js.map +1 -1
  205. package/dist/src/utils/ownership.d.ts +0 -10
  206. package/dist/src/utils/ownership.js +3 -88
  207. package/dist/src/utils/ownership.js.map +1 -1
  208. package/dist/src/utils/path-catalog-provider.d.ts +1 -1
  209. package/dist/src/utils/path-catalog-provider.js +45 -62
  210. package/dist/src/utils/path-catalog-provider.js.map +1 -1
  211. package/dist/src/utils/paths.d.ts +0 -1
  212. package/dist/src/utils/paths.js +0 -1
  213. package/dist/src/utils/paths.js.map +1 -1
  214. package/dist/src/utils/plugin-config-write.js +0 -5
  215. package/dist/src/utils/plugin-config-write.js.map +1 -1
  216. package/dist/src/utils/plugin-intent-state.d.ts +39 -0
  217. package/dist/src/utils/plugin-intent-state.js +325 -0
  218. package/dist/src/utils/plugin-intent-state.js.map +1 -0
  219. package/dist/src/utils/target-eligibility.d.ts +3 -2
  220. package/dist/src/utils/target-eligibility.js +4 -3
  221. package/dist/src/utils/target-eligibility.js.map +1 -1
  222. package/package.json +5 -4
  223. package/dist/scripts/aw-skill-eval-engine.d.ts +0 -13
  224. package/dist/scripts/aw-skill-eval-engine.js +0 -31
  225. package/dist/scripts/aw-skill-eval-engine.js.map +0 -1
  226. package/dist/scripts/codex-eval-app-server.d.ts +0 -91
  227. package/dist/scripts/codex-eval-app-server.js +0 -1334
  228. package/dist/scripts/codex-eval-app-server.js.map +0 -1
  229. package/dist/scripts/codex-eval-isolation.d.ts +0 -61
  230. package/dist/scripts/codex-eval-isolation.js +0 -318
  231. package/dist/scripts/codex-eval-isolation.js.map +0 -1
  232. package/dist/scripts/codex-eval-process-management.d.ts +0 -8
  233. package/dist/scripts/codex-eval-process-management.js +0 -69
  234. package/dist/scripts/codex-eval-process-management.js.map +0 -1
  235. package/dist/scripts/codex-eval-process-tree.d.ts +0 -38
  236. package/dist/scripts/codex-eval-process-tree.js +0 -803
  237. package/dist/scripts/codex-eval-process-tree.js.map +0 -1
  238. package/dist/scripts/codex-eval-runtime-config.d.ts +0 -62
  239. package/dist/scripts/codex-eval-runtime-config.js +0 -843
  240. package/dist/scripts/codex-eval-runtime-config.js.map +0 -1
  241. package/dist/scripts/codex-trigger-eval.d.ts +0 -84
  242. package/dist/scripts/codex-trigger-eval.js +0 -968
  243. package/dist/scripts/codex-trigger-eval.js.map +0 -1
  244. package/dist/scripts/eval-plugin-skills-audited.d.ts +0 -6
  245. package/dist/scripts/eval-plugin-skills-audited.js +0 -261
  246. package/dist/scripts/eval-plugin-skills-audited.js.map +0 -1
  247. package/dist/scripts/eval-plugin-skills.d.ts +0 -45
  248. package/dist/scripts/eval-plugin-skills.js +0 -1589
  249. package/dist/scripts/eval-plugin-skills.js.map +0 -1
  250. package/dist/scripts/eval-run-layout.d.ts +0 -17
  251. package/dist/scripts/eval-run-layout.js +0 -26
  252. package/dist/scripts/eval-run-layout.js.map +0 -1
  253. package/dist/scripts/plugin-eval-contract.d.ts +0 -189
  254. package/dist/scripts/plugin-eval-contract.js +0 -745
  255. package/dist/scripts/plugin-eval-contract.js.map +0 -1
  256. package/dist/scripts/plugin-eval-materializer.d.ts +0 -13
  257. package/dist/scripts/plugin-eval-materializer.js.map +0 -1
  258. package/dist/scripts/skill-reporting.d.ts +0 -212
  259. package/dist/scripts/skill-reporting.js +0 -922
  260. package/dist/scripts/skill-reporting.js.map +0 -1
  261. package/dist/src/commands/catalog-context.d.ts +0 -52
  262. package/dist/src/commands/catalog-context.js +0 -156
  263. package/dist/src/commands/catalog-context.js.map +0 -1
  264. package/dist/src/commands/status-v5.js.map +0 -1
  265. package/dist/src/utils/catalog-manifest-v5.d.ts +0 -5
  266. package/dist/src/utils/catalog-manifest-v5.js.map +0 -1
  267. package/dist/src/utils/catalog-source-cache.d.ts +0 -62
  268. package/dist/src/utils/catalog-source-cache.js +0 -321
  269. package/dist/src/utils/catalog-source-cache.js.map +0 -1
  270. package/dist/src/utils/codex-project-surface.d.ts +0 -3
  271. package/dist/src/utils/codex-project-surface.js +0 -49
  272. package/dist/src/utils/codex-project-surface.js.map +0 -1
  273. package/dist/src/utils/plugin-release.d.ts +0 -2
  274. package/dist/src/utils/plugin-release.js +0 -2
  275. package/dist/src/utils/plugin-release.js.map +0 -1
@@ -1,15 +1,340 @@
1
- export const DEPENDENCY_PLAN_SCHEMA_VERSION = 1;
1
+ import crypto from 'node:crypto';
2
+ export const DEPENDENCY_PLAN_SCHEMA_VERSION = 2;
3
+ const SCOPE_RANK = { project: 0, user: 1 };
2
4
  function compareText(left, right) {
3
5
  return left < right ? -1 : left > right ? 1 : 0;
4
6
  }
7
+ function targetKey(pluginId, platform) {
8
+ return `${pluginId}\0${platform}`;
9
+ }
10
+ function compareScope(left, right) {
11
+ return SCOPE_RANK[left] - SCOPE_RANK[right];
12
+ }
13
+ function widerScope(left, right) {
14
+ return SCOPE_RANK[left] >= SCOPE_RANK[right] ? left : right;
15
+ }
16
+ function canonicalScopes(scopes) {
17
+ return [...new Set(scopes)].sort(compareScope);
18
+ }
19
+ function canonicalOverrides(overrides) {
20
+ const byKey = new Map();
21
+ for (const override of overrides) {
22
+ if (override.platform !== 'codex' && override.platform !== 'claude') {
23
+ throw new Error(`dependencyScopeOverrideInvalidPlatform: ${String(override.platform)}`);
24
+ }
25
+ if (override.scope !== 'project' && override.scope !== 'user') {
26
+ throw new Error(`dependencyScopeOverrideInvalidScope: ${String(override.scope)}`);
27
+ }
28
+ const key = targetKey(override.pluginId, override.platform);
29
+ const current = byKey.get(key);
30
+ if (current && current.scope !== override.scope) {
31
+ throw new Error(`dependencyScopeOverrideConflict: ${override.pluginId}#${override.platform}`);
32
+ }
33
+ byKey.set(key, { ...override });
34
+ }
35
+ return [...byKey.values()].sort((left, right) => compareText(targetKey(left.pluginId, left.platform), targetKey(right.pluginId, right.platform)));
36
+ }
37
+ function canonicalScopeSelectors(selectors) {
38
+ const byKey = new Map();
39
+ for (const selector of selectors) {
40
+ if (selector.platform !== undefined
41
+ && selector.platform !== 'codex'
42
+ && selector.platform !== 'claude') {
43
+ throw new Error(`dependencyScopeOverrideInvalidPlatform: ${String(selector.platform)}`);
44
+ }
45
+ if (selector.scope !== 'project' && selector.scope !== 'user') {
46
+ throw new Error(`dependencyScopeOverrideInvalidScope: ${String(selector.scope)}`);
47
+ }
48
+ const key = `${selector.pluginId}\0${selector.platform ?? '*'}`;
49
+ const current = byKey.get(key);
50
+ if (current && current.scope !== selector.scope) {
51
+ throw new Error(`dependencyScopeOverrideConflict: ${selector.pluginId}`
52
+ + `${selector.platform ? `#${selector.platform}` : ''}`);
53
+ }
54
+ byKey.set(key, { ...selector });
55
+ }
56
+ return [...byKey.values()].sort((left, right) => compareText(`${left.pluginId}\0${left.platform ?? '*'}`, `${right.pluginId}\0${right.platform ?? '*'}`));
57
+ }
58
+ function expandScopeSelectors(selectors, nodesByKey) {
59
+ const nodes = [...nodesByKey.values()];
60
+ const expanded = canonicalScopeSelectors(selectors).flatMap((selector) => {
61
+ const pluginNodes = nodes.filter((node) => node.pluginId === selector.pluginId);
62
+ if (pluginNodes.length === 0) {
63
+ throw new Error(`dependencyScopeOverrideOutsideClosure: ${selector.pluginId}`);
64
+ }
65
+ if (selector.platform) {
66
+ if (!nodesByKey.has(targetKey(selector.pluginId, selector.platform))) {
67
+ throw new Error(`dependencyScopeOverrideUnsupportedPlatform: ${selector.pluginId}#${selector.platform}`);
68
+ }
69
+ return [{
70
+ pluginId: selector.pluginId,
71
+ platform: selector.platform,
72
+ scope: selector.scope,
73
+ }];
74
+ }
75
+ return pluginNodes.map((node) => ({
76
+ pluginId: selector.pluginId,
77
+ platform: node.platform,
78
+ scope: selector.scope,
79
+ }));
80
+ });
81
+ return canonicalOverrides(expanded);
82
+ }
83
+ function canonicalEdges(edges) {
84
+ const byKey = new Map();
85
+ for (const edge of edges) {
86
+ byKey.set(`${edge.from}\0${edge.to}\0${edge.platform}`, { ...edge });
87
+ }
88
+ return [...byKey.values()].sort((left, right) => compareText(`${left.platform}\0${left.from}\0${left.to}`, `${right.platform}\0${right.from}\0${right.to}`));
89
+ }
90
+ function calculateDependencyPlanDigest(plan) {
91
+ const digest = crypto.createHash('sha256').update(JSON.stringify(plan)).digest('hex');
92
+ return `sha256:${digest}`;
93
+ }
94
+ function inferEdgePlatforms(edge, targets) {
95
+ if (edge.platform)
96
+ return [edge.platform];
97
+ const fromPlatforms = new Set(targets
98
+ .filter((target) => target.pluginId === edge.from)
99
+ .map((target) => target.platform));
100
+ return [...new Set(targets
101
+ .filter((target) => target.pluginId === edge.to && fromPlatforms.has(target.platform))
102
+ .map((target) => target.platform))].sort(compareText);
103
+ }
5
104
  export function createDependencyOperationPlan(input) {
6
- return {
105
+ const targets = input.targets.map((target) => {
106
+ const rootScope = target.rootScope ?? target.requestedScope ?? target.resolvedScope;
107
+ return {
108
+ pluginId: target.pluginId,
109
+ pluginName: target.pluginName,
110
+ platform: target.platform,
111
+ relation: target.relation,
112
+ depth: target.depth ?? (target.relation === 'requested' ? 0 : 1),
113
+ requiredBy: [...new Set(target.requiredBy)].sort(compareText),
114
+ rootScope,
115
+ minimumScope: target.minimumScope ?? rootScope,
116
+ resolvedScope: target.resolvedScope,
117
+ allowedScopes: canonicalScopes(target.allowedScopes ?? ['project', 'user']),
118
+ assignmentSource: target.assignmentSource
119
+ ?? (target.relation === 'requested'
120
+ ? 'root'
121
+ : target.resolvedScope !== rootScope ? 'existingWiderTarget' : 'default'),
122
+ locked: target.locked ?? target.relation === 'requested',
123
+ ...(target.lockReason ? { lockReason: target.lockReason } : {}),
124
+ affectsOtherProjects: target.affectsOtherProjects ?? target.resolvedScope === 'user',
125
+ state: target.state,
126
+ action: target.action,
127
+ ...(target.errorCode ? { errorCode: target.errorCode } : {}),
128
+ order: target.order,
129
+ };
130
+ }).sort((left, right) => left.order - right.order || compareText(targetKey(left.pluginId, left.platform), targetKey(right.pluginId, right.platform)));
131
+ const dependencyEdges = canonicalEdges(input.dependencyEdges.flatMap((edge) => inferEdgePlatforms(edge, input.targets).map((platform) => ({ ...edge, platform }))));
132
+ const planWithoutDigest = {
7
133
  dependencyPlanSchemaVersion: DEPENDENCY_PLAN_SCHEMA_VERSION,
8
134
  requestedPluginIds: [...new Set(input.requestedPluginIds)].sort(compareText),
9
- resolvedPluginIds: [...new Set(input.resolvedPluginIds)],
10
- dependencyEdges: [...input.dependencyEdges].sort((left, right) => compareText(`${left.from}\0${left.to}`, `${right.from}\0${right.to}`)),
11
- targets: [...input.targets].sort((left, right) => left.order - right.order
12
- || compareText(`${left.pluginId}\0${left.platform}\0${left.resolvedScope}`, `${right.pluginId}\0${right.platform}\0${right.resolvedScope}`)),
135
+ resolvedPluginIds: [...new Set(input.resolvedPluginIds)].sort(compareText),
136
+ dependencyEdges,
137
+ scopeOverrides: canonicalOverrides(input.scopeOverrides ?? []),
138
+ targets,
139
+ claimRoots: [...new Map((input.claimRoots ?? []).map((root) => [
140
+ targetKey(root.pluginId, root.platform),
141
+ { ...root },
142
+ ])).values()].sort((left, right) => compareText(targetKey(left.pluginId, left.platform), targetKey(right.pluginId, right.platform))),
143
+ };
144
+ return {
145
+ ...planWithoutDigest,
146
+ dependencyPlanDigest: calculateDependencyPlanDigest(planWithoutDigest),
13
147
  };
14
148
  }
149
+ function stateFor(node, scope) {
150
+ return node.current?.[scope] ?? 'absent';
151
+ }
152
+ function actionFor(placement, operation) {
153
+ if (placement.errorCode)
154
+ return 'block';
155
+ const state = stateFor(placement.node, placement.resolvedScope);
156
+ const otherScope = placement.resolvedScope === 'project' ? 'user' : 'project';
157
+ if (state === 'error')
158
+ return 'block';
159
+ if (state === 'present') {
160
+ return operation === 'install' && placement.node.relation === 'dependency'
161
+ ? 'keep'
162
+ : operation;
163
+ }
164
+ if (state === 'partial')
165
+ return 'reinstall';
166
+ if (stateFor(placement.node, otherScope) !== 'absent')
167
+ return 'move';
168
+ return operation;
169
+ }
170
+ export function createDependencyPlacementPlan(input) {
171
+ const operation = input.operation ?? 'install';
172
+ const nodesByKey = new Map();
173
+ for (const node of input.nodes) {
174
+ const key = targetKey(node.pluginId, node.platform);
175
+ if (nodesByKey.has(key))
176
+ throw new Error(`dependencyPlacementDuplicateTarget: ${key}`);
177
+ const allowedScopes = canonicalScopes(node.allowedScopes);
178
+ if (allowedScopes.length === 0)
179
+ throw new Error(`dependencyPlacementNoAllowedScope: ${key}`);
180
+ nodesByKey.set(key, { ...node, allowedScopes });
181
+ }
182
+ const rootsByKey = new Map();
183
+ for (const root of input.roots) {
184
+ const key = targetKey(root.pluginId, root.platform);
185
+ if (rootsByKey.has(key)) {
186
+ throw new Error(`dependencyPlacementDuplicateRoot: ${root.pluginId}#${root.platform}`);
187
+ }
188
+ rootsByKey.set(key, root);
189
+ }
190
+ for (const [key] of rootsByKey) {
191
+ if (!nodesByKey.has(key))
192
+ throw new Error(`dependencyPlacementRootOutsideClosure: ${key}`);
193
+ }
194
+ const overrides = expandScopeSelectors(input.scopeOverrides ?? [], nodesByKey);
195
+ for (const override of overrides) {
196
+ const key = targetKey(override.pluginId, override.platform);
197
+ if (!nodesByKey.has(key)) {
198
+ throw new Error(`dependencyScopeOverrideOutsideClosure: ${override.pluginId}#${override.platform}`);
199
+ }
200
+ if (rootsByKey.has(key)) {
201
+ throw new Error(`dependencyScopeOverrideTargetsRoot: ${override.pluginId}#${override.platform}`);
202
+ }
203
+ }
204
+ const overrideByKey = new Map(overrides.map((override) => [
205
+ targetKey(override.pluginId, override.platform),
206
+ override,
207
+ ]));
208
+ const edges = canonicalEdges(input.dependencyEdges);
209
+ for (const edge of edges) {
210
+ if (!nodesByKey.has(targetKey(edge.from, edge.platform))
211
+ || !nodesByKey.has(targetKey(edge.to, edge.platform))) {
212
+ throw new Error(`dependencyPlacementEdgeOutsideClosure: ${edge.from}->${edge.to}#${edge.platform}`);
213
+ }
214
+ }
215
+ const placements = new Map();
216
+ for (const [key, node] of nodesByKey) {
217
+ const root = rootsByKey.get(key);
218
+ const override = overrideByKey.get(key);
219
+ const allowedScopes = node.allowedScopes;
220
+ let rootScope = root?.scope ?? 'project';
221
+ let minimumScope = rootScope;
222
+ let resolvedScope;
223
+ let assignmentSource;
224
+ let locked = false;
225
+ let lockReason;
226
+ let errorCode;
227
+ if (root) {
228
+ resolvedScope = root.scope;
229
+ assignmentSource = 'root';
230
+ locked = true;
231
+ lockReason = 'requestedRootScope';
232
+ }
233
+ else if (override) {
234
+ resolvedScope = override.scope;
235
+ assignmentSource = 'userOverride';
236
+ locked = true;
237
+ lockReason = 'dependencyScopeOverride';
238
+ }
239
+ else if (stateFor(node, 'user') === 'present') {
240
+ resolvedScope = 'user';
241
+ assignmentSource = 'existingWiderTarget';
242
+ }
243
+ else if (allowedScopes.includes('project')) {
244
+ resolvedScope = 'project';
245
+ assignmentSource = 'default';
246
+ }
247
+ else {
248
+ resolvedScope = 'user';
249
+ assignmentSource = 'platformRequirement';
250
+ }
251
+ if (!allowedScopes.includes(resolvedScope)) {
252
+ errorCode = root
253
+ ? 'dependencyRootScopeUnsupported'
254
+ : override ? 'dependencyScopeOverrideUnsupported' : 'dependencyTargetUnsupported';
255
+ }
256
+ placements.set(key, {
257
+ node,
258
+ rootScope,
259
+ minimumScope,
260
+ resolvedScope,
261
+ assignmentSource,
262
+ locked,
263
+ ...(lockReason ? { lockReason } : {}),
264
+ ...(errorCode ? { errorCode } : {}),
265
+ });
266
+ }
267
+ let changed = true;
268
+ while (changed) {
269
+ changed = false;
270
+ for (const edge of edges) {
271
+ const consumer = placements.get(targetKey(edge.from, edge.platform));
272
+ const dependency = placements.get(targetKey(edge.to, edge.platform));
273
+ const consumerMinimum = widerScope(consumer.minimumScope, consumer.resolvedScope);
274
+ const nextMinimum = widerScope(dependency.minimumScope, consumerMinimum);
275
+ const nextRootScope = widerScope(dependency.rootScope, consumer.rootScope);
276
+ if (nextMinimum !== dependency.minimumScope) {
277
+ dependency.minimumScope = nextMinimum;
278
+ changed = true;
279
+ }
280
+ if (nextRootScope !== dependency.rootScope) {
281
+ dependency.rootScope = nextRootScope;
282
+ changed = true;
283
+ }
284
+ if (SCOPE_RANK[dependency.resolvedScope] >= SCOPE_RANK[dependency.minimumScope])
285
+ continue;
286
+ if (dependency.assignmentSource === 'userOverride') {
287
+ dependency.errorCode = 'dependencyScopeOverrideTooNarrow';
288
+ continue;
289
+ }
290
+ if (!dependency.node.allowedScopes.includes(dependency.minimumScope)) {
291
+ dependency.errorCode = 'dependencyTargetUnsupported';
292
+ continue;
293
+ }
294
+ dependency.resolvedScope = dependency.minimumScope;
295
+ dependency.assignmentSource = 'consumerPromotion';
296
+ changed = true;
297
+ }
298
+ }
299
+ const requiredByByKey = new Map();
300
+ for (const edge of edges) {
301
+ const key = targetKey(edge.to, edge.platform);
302
+ requiredByByKey.set(key, [...(requiredByByKey.get(key) ?? []), edge.from]);
303
+ }
304
+ const claimRoots = edges.flatMap((edge) => {
305
+ const consumer = placements.get(targetKey(edge.from, edge.platform));
306
+ const dependency = placements.get(targetKey(edge.to, edge.platform));
307
+ return consumer.resolvedScope === 'project' && dependency.resolvedScope === 'user'
308
+ ? [{ pluginId: edge.to, platform: edge.platform }]
309
+ : [];
310
+ });
311
+ const targets = [...placements.values()].map((placement) => ({
312
+ pluginId: placement.node.pluginId,
313
+ pluginName: placement.node.pluginName,
314
+ platform: placement.node.platform,
315
+ relation: placement.node.relation,
316
+ depth: placement.node.depth,
317
+ requiredBy: requiredByByKey.get(targetKey(placement.node.pluginId, placement.node.platform)) ?? [],
318
+ rootScope: placement.rootScope,
319
+ minimumScope: placement.minimumScope,
320
+ resolvedScope: placement.resolvedScope,
321
+ allowedScopes: placement.node.allowedScopes,
322
+ assignmentSource: placement.assignmentSource,
323
+ locked: placement.locked,
324
+ ...(placement.lockReason ? { lockReason: placement.lockReason } : {}),
325
+ affectsOtherProjects: placement.resolvedScope === 'user',
326
+ state: stateFor(placement.node, placement.resolvedScope),
327
+ action: actionFor(placement, operation),
328
+ ...(placement.errorCode ? { errorCode: placement.errorCode } : {}),
329
+ order: placement.node.depth,
330
+ }));
331
+ return createDependencyOperationPlan({
332
+ requestedPluginIds: input.requestedPluginIds,
333
+ resolvedPluginIds: input.nodes.map((node) => node.pluginId),
334
+ dependencyEdges: edges,
335
+ scopeOverrides: overrides,
336
+ targets,
337
+ claimRoots,
338
+ });
339
+ }
15
340
  //# sourceMappingURL=dependency-operation-plan.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dependency-operation-plan.js","sourceRoot":"","sources":["../../../src/commands/dependency-operation-plan.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC;AA4BhD,SAAS,WAAW,CAAC,IAAY,EAAE,KAAa;IAC9C,OAAO,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,KAAmC;IAEnC,OAAO;QACL,2BAA2B,EAAE,8BAA8B;QAC3D,kBAAkB,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;QAC5E,iBAAiB,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACxD,eAAe,EAAE,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAC/D,WAAW,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QACxE,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK;eACrE,WAAW,CAAC,GAAG,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,aAAa,EAAE,EACxE,GAAG,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;KACrE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"dependency-operation-plan.js","sourceRoot":"","sources":["../../../src/commands/dependency-operation-plan.ts"],"names":[],"mappings":"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"}
@@ -1,31 +1,25 @@
1
- import { cleanupLegacyCatalogSourceCache } from '../utils/catalog-source-cache.js';
2
1
  export interface InitCatalogSourceResult {
3
2
  id: string;
4
3
  ok: boolean;
4
+ activeReady: boolean;
5
5
  requestedRef?: string;
6
6
  resolvedCommit?: string;
7
7
  catalogVersion?: string;
8
8
  channel?: string;
9
- freshness?: 'remote' | 'cache' | 'path';
10
9
  error?: string;
11
10
  errorCode?: string;
11
+ recovery?: string;
12
12
  }
13
13
  export interface InitCommandResult {
14
14
  ok: boolean;
15
- changed: boolean;
16
- warnings: string[];
17
15
  primarySourceId: string;
18
16
  configDigest: string;
19
17
  compositeDigest: string;
20
18
  sources: InitCatalogSourceResult[];
19
+ recovery: string[];
21
20
  }
22
- interface InitCommandV4Options {
23
- force?: boolean;
24
- cliVersion: string;
21
+ interface InitCommandOptions {
25
22
  env?: NodeJS.ProcessEnv;
26
- runtime?: {
27
- cleanupLegacyCache?: typeof cleanupLegacyCatalogSourceCache;
28
- };
29
23
  }
30
- export declare function initCommand(options: InitCommandV4Options): Promise<InitCommandResult>;
24
+ export declare function initCommand(options: InitCommandOptions): Promise<InitCommandResult>;
31
25
  export {};
@@ -1,63 +1,42 @@
1
1
  import { readCatalogSourcesConfigSnapshot } from '../utils/catalog-sources.js';
2
2
  import { catalogSourceErrorCode } from '../utils/catalog-public-error.js';
3
- import { cleanupLegacyCatalogSourceCache } from '../utils/catalog-source-cache.js';
4
- import { withAwHomeMutationLock } from '../utils/aw-home-mutation-lock.js';
5
- import { withResolvedMultiSourceCatalog } from '../utils/multi-source-catalog.js';
3
+ import { resolvePartialCatalogOperationContext } from '../utils/catalog-operation-context.js';
6
4
  export async function initCommand(options) {
7
5
  const env = options.env ?? process.env;
8
- if (options.force) {
9
- return withAwHomeMutationLock({
10
- env,
11
- action: async () => {
12
- const cleanupWarnings = await (options.runtime?.cleanupLegacyCache
13
- ?? cleanupLegacyCatalogSourceCache)(env);
14
- const result = await resolveInitCatalog({ ...options, env });
15
- return { ...result, warnings: [...cleanupWarnings, ...result.warnings] };
16
- },
17
- });
18
- }
19
- return resolveInitCatalog({ ...options, env });
20
- }
21
- async function resolveInitCatalog(options) {
22
- const env = options.env ?? process.env;
23
- const freshnessPolicy = options.force ? 'forceRemote' : 'cacheFirst';
24
6
  const configSnapshot = await readCatalogSourcesConfigSnapshot(env);
25
- return withResolvedMultiSourceCatalog({
26
- cliVersion: options.cliVersion,
27
- freshnessPolicy,
7
+ const context = await resolvePartialCatalogOperationContext({
28
8
  configSnapshot,
29
9
  env,
30
- consume: (catalog) => {
31
- const sources = catalog.sources.map((item) => {
32
- if (item.error) {
33
- return {
34
- id: item.sourceId,
35
- ok: false,
36
- error: item.error.message,
37
- errorCode: catalogSourceErrorCode(item.error),
38
- };
39
- }
40
- const resolution = item.resolution;
41
- return {
42
- id: item.sourceId,
43
- ok: true,
44
- requestedRef: resolution.requestedRef,
45
- resolvedCommit: resolution.resolvedCommit,
46
- catalogVersion: resolution.manifest.catalogVersion,
47
- channel: resolution.manifest.channel,
48
- freshness: resolution.source,
49
- };
50
- });
10
+ });
11
+ const sources = context.catalog.sources.map((item) => {
12
+ if (item.error) {
51
13
  return {
52
- ok: sources.every((source) => source.ok),
53
- changed: sources.some((source) => source.ok && source.freshness !== 'cache'),
54
- warnings: [],
55
- primarySourceId: catalog.primarySourceId,
56
- configDigest: catalog.configDigest,
57
- compositeDigest: catalog.compositeDigest,
58
- sources,
14
+ id: item.sourceId,
15
+ ok: false,
16
+ activeReady: false,
17
+ error: item.error.message,
18
+ errorCode: catalogSourceErrorCode(item.error),
19
+ recovery: `Run aw catalog source sync ${item.sourceId}.`,
59
20
  };
60
- },
21
+ }
22
+ const resolution = item.resolution;
23
+ return {
24
+ id: item.sourceId,
25
+ ok: true,
26
+ activeReady: true,
27
+ requestedRef: resolution.requestedRef,
28
+ resolvedCommit: resolution.resolvedCommit,
29
+ catalogVersion: resolution.manifest.catalogVersion,
30
+ channel: resolution.manifest.channel,
31
+ };
61
32
  });
33
+ return {
34
+ ok: sources.every((source) => source.ok),
35
+ primarySourceId: context.catalog.primarySourceId,
36
+ configDigest: context.catalog.configDigest,
37
+ compositeDigest: context.catalog.compositeDigest,
38
+ sources,
39
+ recovery: sources.flatMap((source) => source.recovery ? [source.recovery] : []),
40
+ };
62
41
  }
63
42
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,qCAAqC,EAAE,MAAM,uCAAuC,CAAC;AA4B9F,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAA2B;IAE3B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,MAAM,cAAc,GAAG,MAAM,gCAAgC,CAAC,GAAG,CAAC,CAAC;IACnE,MAAM,OAAO,GAAG,MAAM,qCAAqC,CAAC;QAC1D,cAAc;QACd,GAAG;KACJ,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAA2B,EAAE;QAC5E,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,EAAE,EAAE,IAAI,CAAC,QAAQ;gBACjB,EAAE,EAAE,KAAK;gBACT,WAAW,EAAE,KAAK;gBAClB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;gBACzB,SAAS,EAAE,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC7C,QAAQ,EAAE,8BAA8B,IAAI,CAAC,QAAQ,GAAG;aACzD,CAAC;QACJ,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAW,CAAC;QACpC,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,QAAQ;YACjB,EAAE,EAAE,IAAI;YACR,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,UAAU,CAAC,YAAY;YACrC,cAAc,EAAE,UAAU,CAAC,cAAc;YACzC,cAAc,EAAE,UAAU,CAAC,QAAQ,CAAC,cAAc;YAClD,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,OAAO;SACrC,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;QACxC,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC,eAAe;QAChD,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY;QAC1C,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC,eAAe;QAChD,OAAO;QACP,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAChF,CAAC;AACJ,CAAC"}
@@ -8,8 +8,28 @@ export interface OfflineCleanupTargetEvidence {
8
8
  sourceIdentity: string;
9
9
  platform: PlatformName;
10
10
  scope: Scope;
11
+ plan: OfflineCleanupPlan;
12
+ planDigest: string;
11
13
  targetFingerprint: string;
12
14
  }
15
+ export interface OfflineCleanupPlanAction {
16
+ action: 'removeOwnedOutput' | 'removeNativeRegistration' | 'removeLifecycleSnapshot';
17
+ kind: 'namespacedOwner' | 'namespacedMarketplace' | 'namespacedLifecycle';
18
+ target: string;
19
+ marketplaceName?: string;
20
+ activationScope?: Scope;
21
+ projectKey?: string | null;
22
+ lifecycleMetadataIntegrityDigest?: string;
23
+ pluginVersion?: string;
24
+ }
25
+ export interface OfflineCleanupPlan {
26
+ schemaVersion: 1;
27
+ pluginId: string;
28
+ sourceIdentity: string;
29
+ platform: PlatformName;
30
+ scope: Scope;
31
+ actions: OfflineCleanupPlanAction[];
32
+ }
13
33
  export declare function offlineCleanupEvidenceFromInventory(options: {
14
34
  reason: OfflineCleanupTargetEvidence['reason'];
15
35
  pluginId: string;