@bastani/atomic 0.9.53-alpha.1 → 0.9.54-alpha.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.
Files changed (170) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/dist/builtin/intercom/package.json +1 -1
  3. package/dist/builtin/mcp/package.json +1 -1
  4. package/dist/builtin/subagents/package.json +1 -1
  5. package/dist/builtin/web-access/package.json +1 -1
  6. package/dist/builtin/workflows/package.json +1 -1
  7. package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
  8. package/dist/core/agent-session-auto-compaction.js +2 -1
  9. package/dist/core/agent-session-auto-compaction.js.map +1 -1
  10. package/dist/core/agent-session-compaction.d.ts.map +1 -1
  11. package/dist/core/agent-session-compaction.js +2 -1
  12. package/dist/core/agent-session-compaction.js.map +1 -1
  13. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
  14. package/dist/core/agent-session-extension-bindings.js +2 -1
  15. package/dist/core/agent-session-extension-bindings.js.map +1 -1
  16. package/dist/core/agent-session-models.d.ts +17 -1
  17. package/dist/core/agent-session-models.d.ts.map +1 -1
  18. package/dist/core/agent-session-models.js +19 -0
  19. package/dist/core/agent-session-models.js.map +1 -1
  20. package/dist/core/agent-session-post-tool-compaction.d.ts.map +1 -1
  21. package/dist/core/agent-session-post-tool-compaction.js +2 -1
  22. package/dist/core/agent-session-post-tool-compaction.js.map +1 -1
  23. package/dist/core/agent-session-summary.d.ts.map +1 -1
  24. package/dist/core/agent-session-summary.js +2 -1
  25. package/dist/core/agent-session-summary.js.map +1 -1
  26. package/dist/core/agent-session-tree.d.ts.map +1 -1
  27. package/dist/core/agent-session-tree.js +2 -1
  28. package/dist/core/agent-session-tree.js.map +1 -1
  29. package/dist/core/exec.d.ts +9 -1
  30. package/dist/core/exec.d.ts.map +1 -1
  31. package/dist/core/exec.js +109 -74
  32. package/dist/core/exec.js.map +1 -1
  33. package/dist/core/extensions/loader-virtual-modules.js +2 -2
  34. package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
  35. package/dist/core/model-resolver-patterns.d.ts.map +1 -1
  36. package/dist/core/model-resolver-patterns.js +15 -9
  37. package/dist/core/model-resolver-patterns.js.map +1 -1
  38. package/dist/core/package-manager-auto-resources.d.ts.map +1 -1
  39. package/dist/core/package-manager-auto-resources.js +3 -2
  40. package/dist/core/package-manager-auto-resources.js.map +1 -1
  41. package/dist/core/package-manager-git.d.ts +1 -1
  42. package/dist/core/package-manager-git.d.ts.map +1 -1
  43. package/dist/core/package-manager-git.js +12 -1
  44. package/dist/core/package-manager-git.js.map +1 -1
  45. package/dist/core/package-manager-npm.d.ts +1 -1
  46. package/dist/core/package-manager-npm.d.ts.map +1 -1
  47. package/dist/core/package-manager-npm.js +8 -4
  48. package/dist/core/package-manager-npm.js.map +1 -1
  49. package/dist/core/package-manager-operations.d.ts.map +1 -1
  50. package/dist/core/package-manager-operations.js +33 -8
  51. package/dist/core/package-manager-operations.js.map +1 -1
  52. package/dist/core/package-manager-resolver.d.ts.map +1 -1
  53. package/dist/core/package-manager-resolver.js +22 -4
  54. package/dist/core/package-manager-resolver.js.map +1 -1
  55. package/dist/core/package-manager-resource-accumulator.d.ts.map +1 -1
  56. package/dist/core/package-manager-resource-accumulator.js +4 -4
  57. package/dist/core/package-manager-resource-accumulator.js.map +1 -1
  58. package/dist/core/package-manager-source.js +5 -5
  59. package/dist/core/package-manager-source.js.map +1 -1
  60. package/dist/core/package-manager-types.d.ts +5 -1
  61. package/dist/core/package-manager-types.d.ts.map +1 -1
  62. package/dist/core/package-manager-types.js.map +1 -1
  63. package/dist/core/package-manager.d.ts.map +1 -1
  64. package/dist/core/package-manager.js +3 -3
  65. package/dist/core/package-manager.js.map +1 -1
  66. package/dist/core/project-trust.d.ts.map +1 -1
  67. package/dist/core/project-trust.js +2 -1
  68. package/dist/core/project-trust.js.map +1 -1
  69. package/dist/core/prompt-templates-async.d.ts.map +1 -1
  70. package/dist/core/prompt-templates-async.js +4 -9
  71. package/dist/core/prompt-templates-async.js.map +1 -1
  72. package/dist/core/prompt-templates.d.ts.map +1 -1
  73. package/dist/core/prompt-templates.js +4 -12
  74. package/dist/core/prompt-templates.js.map +1 -1
  75. package/dist/core/resource-loader-extensions.d.ts.map +1 -1
  76. package/dist/core/resource-loader-extensions.js +8 -7
  77. package/dist/core/resource-loader-extensions.js.map +1 -1
  78. package/dist/core/resource-loader-paths.js +5 -5
  79. package/dist/core/resource-loader-paths.js.map +1 -1
  80. package/dist/core/resource-loader-source-info.d.ts +0 -1
  81. package/dist/core/resource-loader-source-info.d.ts.map +1 -1
  82. package/dist/core/resource-loader-source-info.js +6 -17
  83. package/dist/core/resource-loader-source-info.js.map +1 -1
  84. package/dist/core/sdk.d.ts.map +1 -1
  85. package/dist/core/sdk.js +3 -0
  86. package/dist/core/sdk.js.map +1 -1
  87. package/dist/core/session-manager-core.js +2 -2
  88. package/dist/core/session-manager-core.js.map +1 -1
  89. package/dist/core/session-manager-list.js +2 -2
  90. package/dist/core/session-manager-list.js.map +1 -1
  91. package/dist/core/skills-async.d.ts.map +1 -1
  92. package/dist/core/skills-async.js +5 -10
  93. package/dist/core/skills-async.js.map +1 -1
  94. package/dist/core/skills.d.ts.map +1 -1
  95. package/dist/core/skills.js +5 -13
  96. package/dist/core/skills.js.map +1 -1
  97. package/dist/core/source-info.d.ts +2 -0
  98. package/dist/core/source-info.d.ts.map +1 -1
  99. package/dist/core/source-info.js +5 -0
  100. package/dist/core/source-info.js.map +1 -1
  101. package/dist/core/tool-loadout.d.ts +4 -0
  102. package/dist/core/tool-loadout.d.ts.map +1 -1
  103. package/dist/core/tool-loadout.js +7 -1
  104. package/dist/core/tool-loadout.js.map +1 -1
  105. package/dist/core/tools/render-utils.d.ts.map +1 -1
  106. package/dist/core/tools/render-utils.js +2 -7
  107. package/dist/core/tools/render-utils.js.map +1 -1
  108. package/dist/core/trust-manager.d.ts.map +1 -1
  109. package/dist/core/trust-manager.js +15 -9
  110. package/dist/core/trust-manager.js.map +1 -1
  111. package/dist/extensions/codemode/tool.d.ts.map +1 -1
  112. package/dist/extensions/codemode/tool.js +33 -8
  113. package/dist/extensions/codemode/tool.js.map +1 -1
  114. package/dist/main.d.ts.map +1 -1
  115. package/dist/main.js +20 -3
  116. package/dist/main.js.map +1 -1
  117. package/dist/modes/interactive/components/config-selector-list.d.ts.map +1 -1
  118. package/dist/modes/interactive/components/config-selector-list.js +2 -13
  119. package/dist/modes/interactive/components/config-selector-list.js.map +1 -1
  120. package/dist/modes/interactive/components/session-selector-list.js +2 -2
  121. package/dist/modes/interactive/components/session-selector-list.js.map +1 -1
  122. package/dist/modes/interactive/components/session-selector-tree.d.ts.map +1 -1
  123. package/dist/modes/interactive/components/session-selector-tree.js +4 -6
  124. package/dist/modes/interactive/components/session-selector-tree.js.map +1 -1
  125. package/dist/modes/interactive/components/session-selector-utils.d.ts +2 -1
  126. package/dist/modes/interactive/components/session-selector-utils.d.ts.map +1 -1
  127. package/dist/modes/interactive/components/session-selector-utils.js +5 -13
  128. package/dist/modes/interactive/components/session-selector-utils.js.map +1 -1
  129. package/dist/modes/interactive/components/tree-selector-content.d.ts.map +1 -1
  130. package/dist/modes/interactive/components/tree-selector-content.js +2 -6
  131. package/dist/modes/interactive/components/tree-selector-content.js.map +1 -1
  132. package/dist/modes/interactive/interactive-mode-base.d.ts +2 -0
  133. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
  134. package/dist/modes/interactive/interactive-mode-base.js +4 -0
  135. package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
  136. package/dist/modes/interactive/interactive-mode-surface.d.ts +1 -0
  137. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
  138. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
  139. package/dist/modes/interactive/interactive-mode-types.d.ts +6 -0
  140. package/dist/modes/interactive/interactive-mode-types.d.ts.map +1 -1
  141. package/dist/modes/interactive/interactive-mode-types.js.map +1 -1
  142. package/dist/modes/interactive/interactive-resource-rendering.js +1 -1
  143. package/dist/modes/interactive/interactive-resource-rendering.js.map +1 -1
  144. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
  145. package/dist/modes/interactive/interactive-startup.js +15 -8
  146. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  147. package/dist/modes/interactive/interactive-tui.d.ts +1 -0
  148. package/dist/modes/interactive/interactive-tui.d.ts.map +1 -1
  149. package/dist/modes/interactive/interactive-tui.js +1 -1
  150. package/dist/modes/interactive/interactive-tui.js.map +1 -1
  151. package/dist/package-manager-cli.d.ts.map +1 -1
  152. package/dist/package-manager-cli.js +3 -0
  153. package/dist/package-manager-cli.js.map +1 -1
  154. package/dist/utils/ansi.d.ts.map +1 -1
  155. package/dist/utils/ansi.js +5 -2
  156. package/dist/utils/ansi.js.map +1 -1
  157. package/dist/utils/git.d.ts +1 -1
  158. package/dist/utils/git.d.ts.map +1 -1
  159. package/dist/utils/git.js.map +1 -1
  160. package/dist/utils/image-resize-core.d.ts.map +1 -1
  161. package/dist/utils/image-resize-core.js +5 -3
  162. package/dist/utils/image-resize-core.js.map +1 -1
  163. package/dist/utils/paths.d.ts +14 -0
  164. package/dist/utils/paths.d.ts.map +1 -1
  165. package/dist/utils/paths.js +39 -1
  166. package/dist/utils/paths.js.map +1 -1
  167. package/docs/extensions/api-reference.md +4 -2
  168. package/docs/packages.md +2 -0
  169. package/npm-shrinkwrap.json +32 -32
  170. package/package.json +3 -3
@@ -6,7 +6,7 @@ import { isOfflineModeEnabled } from "./package-manager-env.js";
6
6
  import { getExistingGitInstallPath, gitHasAvailableUpdate, installGit, removeGit, updateGit, } from "./package-manager-git.js";
7
7
  import { getInstalledNpmVersion, getLatestNpmVersion, getManagedNpmInstallPath, getNpmInstallPath, installNpm, installNpmBatch, npmHasAvailableUpdate, uninstallNpm, } from "./package-manager-npm.js";
8
8
  import { resolveManagerPath } from "./package-manager-paths.js";
9
- import { withProgress } from "./package-manager-progress.js";
9
+ import { emitProgress, withProgress } from "./package-manager-progress.js";
10
10
  import { assertProjectTrustedForScope, buildNoMatchingPackageMessage, dedupePackages, getPackageIdentity, getPackageSourceString, parseSource, } from "./package-manager-source.js";
11
11
  export async function install(context, source, options) {
12
12
  const parsed = parseSource(source);
@@ -101,10 +101,13 @@ async function updateConfiguredSources(context, sources) {
101
101
  gitCandidates.push({ ...entry, parsed });
102
102
  }
103
103
  }
104
- const npmCheckTasks = npmCandidates.map((entry) => async () => ({
105
- entry,
106
- shouldUpdate: await shouldUpdateNpmSource(context, entry.parsed, entry.scope),
107
- }));
104
+ const npmCheckTasks = npmCandidates.map((entry) => async () => {
105
+ const check = await shouldUpdateNpmSource(context, entry.parsed, entry.scope);
106
+ return {
107
+ entry: { ...entry, installedVersion: check.installedVersion, targetVersion: check.targetVersion },
108
+ shouldUpdate: check.shouldUpdate,
109
+ };
110
+ });
108
111
  const npmCheckResults = await runWithConcurrency(npmCheckTasks, UPDATE_CHECK_CONCURRENCY);
109
112
  const userNpmUpdates = [];
110
113
  const projectNpmUpdates = [];
@@ -136,13 +139,14 @@ async function shouldUpdateNpmSource(context, source, scope) {
136
139
  const installedPath = getManagedNpmInstallPath(context, source, scope);
137
140
  const installedVersion = existsSync(installedPath) ? getInstalledNpmVersion(installedPath) : undefined;
138
141
  if (!installedVersion)
139
- return true;
142
+ return { shouldUpdate: true };
140
143
  try {
141
144
  const targetVersion = await getLatestNpmVersion(context, source.version ? source.spec : source.name, source.range);
142
- return gt(targetVersion, installedVersion);
145
+ return { shouldUpdate: gt(targetVersion, installedVersion), installedVersion, targetVersion };
143
146
  }
144
147
  catch {
145
- return true;
148
+ // Preserve existing update behavior when version lookup fails.
149
+ return { shouldUpdate: true, installedVersion };
146
150
  }
147
151
  }
148
152
  async function updateNpmBatch(context, sources, scope) {
@@ -154,6 +158,27 @@ async function updateNpmBatch(context, sources, scope) {
154
158
  await withProgress(context, "update", sourceLabel, message, async () => {
155
159
  await installNpmBatch(context, specs, scope);
156
160
  });
161
+ reportUnchangedNpmUpdates(context, sources, scope);
162
+ }
163
+ /**
164
+ * npm can resolve stale registry metadata shortly after a publish and install the old
165
+ * version without an error. Warn when an announced update did not change the installed version.
166
+ */
167
+ function reportUnchangedNpmUpdates(context, sources, scope) {
168
+ for (const entry of sources) {
169
+ if (!entry.installedVersion || !entry.targetVersion)
170
+ continue;
171
+ const installedPath = getManagedNpmInstallPath(context, entry.parsed, scope);
172
+ const versionAfter = getInstalledNpmVersion(installedPath);
173
+ if (versionAfter !== entry.installedVersion)
174
+ continue;
175
+ emitProgress(context, {
176
+ type: "progress",
177
+ action: "update",
178
+ source: entry.source,
179
+ message: `${entry.source} is still ${versionAfter} (registry reports ${entry.targetVersion}); npm registry metadata may be stale, try again in a few minutes`,
180
+ });
181
+ }
157
182
  }
158
183
  export async function checkForAvailableUpdates(context) {
159
184
  if (isOfflineModeEnabled())
@@ -1 +1 @@
1
- {"version":3,"file":"package-manager-operations.js","sourceRoot":"","sources":["../../src/core/package-manager-operations.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync } from \"node:fs\";\nimport { gt } from \"semver\";\nimport { runWithConcurrency } from \"./package-manager-command.ts\";\nimport { GIT_UPDATE_CONCURRENCY, UPDATE_CHECK_CONCURRENCY } from \"./package-manager-constants.ts\";\nimport { isOfflineModeEnabled } from \"./package-manager-env.ts\";\nimport {\n\tgetExistingGitInstallPath,\n\tgitHasAvailableUpdate,\n\tinstallGit,\n\tremoveGit,\n\tupdateGit,\n} from \"./package-manager-git.ts\";\nimport {\n\tgetInstalledNpmVersion,\n\tgetLatestNpmVersion,\n\tgetManagedNpmInstallPath,\n\tgetNpmInstallPath,\n\tinstallNpm,\n\tinstallNpmBatch,\n\tnpmHasAvailableUpdate,\n\tuninstallNpm,\n} from \"./package-manager-npm.ts\";\nimport { resolveManagerPath } from \"./package-manager-paths.ts\";\nimport { withProgress } from \"./package-manager-progress.ts\";\nimport {\n\tassertProjectTrustedForScope,\n\tbuildNoMatchingPackageMessage,\n\tdedupePackages,\n\tgetPackageIdentity,\n\tgetPackageSourceString,\n\tparseSource,\n} from \"./package-manager-source.ts\";\nimport type {\n\tConfiguredUpdateSource,\n\tGitUpdateTarget,\n\tInstalledSourceScope,\n\tNpmSource,\n\tNpmUpdateTarget,\n\tPackageManagerContext,\n\tPackageUpdate,\n\tParsedSource,\n\tSourceScope,\n} from \"./package-manager-types.ts\";\n\nexport async function install(\n\tcontext: PackageManagerContext,\n\tsource: string,\n\toptions?: { local?: boolean },\n): Promise<void> {\n\tconst parsed = parseSource(source);\n\tconst scope: SourceScope = options?.local ? \"project\" : \"user\";\n\tassertProjectTrustedForScope(context, scope);\n\tawait withProgress(context, \"install\", source, `Installing ${source}...`, async () => {\n\t\tif (parsed.type === \"npm\") {\n\t\t\tawait installNpm(context, parsed, scope, false);\n\t\t\treturn;\n\t\t}\n\t\tif (parsed.type === \"git\") {\n\t\t\tawait installGit(context, parsed, scope);\n\t\t\treturn;\n\t\t}\n\t\tif (parsed.type === \"local\") {\n\t\t\tconst resolved = resolveManagerPath(context, parsed.path);\n\t\t\tif (!existsSync(resolved)) {\n\t\t\t\tthrow new Error(`Path does not exist: ${resolved}`);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tthrow new Error(`Unsupported install source: ${source}`);\n\t});\n}\n\nexport async function remove(\n\tcontext: PackageManagerContext,\n\tsource: string,\n\toptions?: { local?: boolean },\n): Promise<void> {\n\tconst parsed = parseSource(source);\n\tconst scope: SourceScope = options?.local ? \"project\" : \"user\";\n\tassertProjectTrustedForScope(context, scope);\n\tawait withProgress(context, \"remove\", source, `Removing ${source}...`, async () => {\n\t\tif (parsed.type === \"npm\") {\n\t\t\tawait uninstallNpm(context, parsed, scope);\n\t\t\treturn;\n\t\t}\n\t\tif (parsed.type === \"git\") {\n\t\t\tawait removeGit(context, parsed, scope);\n\t\t\treturn;\n\t\t}\n\t\tif (parsed.type === \"local\") return;\n\t\tthrow new Error(`Unsupported remove source: ${source}`);\n\t});\n}\n\nexport async function update(context: PackageManagerContext, source?: string): Promise<void> {\n\tconst globalSettings = context.settingsManager.getGlobalSettings();\n\tconst projectSettings = context.settingsManager.getProjectSettings();\n\tconst identity = source ? getPackageIdentity(context, source) : undefined;\n\tlet matched = false;\n\tconst updateSources: ConfiguredUpdateSource[] = [];\n\n\tfor (const pkg of globalSettings.packages ?? []) {\n\t\tconst sourceStr = getPackageSourceString(pkg);\n\t\tif (identity && getPackageIdentity(context, sourceStr, \"user\") !== identity) continue;\n\t\tmatched = true;\n\t\tupdateSources.push({ source: sourceStr, scope: \"user\" });\n\t}\n\tfor (const pkg of projectSettings.packages ?? []) {\n\t\tconst sourceStr = getPackageSourceString(pkg);\n\t\tif (identity && getPackageIdentity(context, sourceStr, \"project\") !== identity) continue;\n\t\tmatched = true;\n\t\tupdateSources.push({ source: sourceStr, scope: \"project\" });\n\t}\n\n\tif (source && !matched) {\n\t\tthrow new Error(\n\t\t\tbuildNoMatchingPackageMessage(context, source, [\n\t\t\t\t...(globalSettings.packages ?? []),\n\t\t\t\t...(projectSettings.packages ?? []),\n\t\t\t]),\n\t\t);\n\t}\n\tawait updateConfiguredSources(context, updateSources);\n}\n\nexport async function installParsedSource(\n\tcontext: PackageManagerContext,\n\tparsed: ParsedSource,\n\tscope: SourceScope,\n): Promise<void> {\n\tif (parsed.type === \"npm\") {\n\t\tawait installNpm(context, parsed, scope, scope === \"temporary\");\n\t\treturn;\n\t}\n\tif (parsed.type === \"git\") {\n\t\tawait installGit(context, parsed, scope);\n\t}\n}\n\nasync function updateConfiguredSources(\n\tcontext: PackageManagerContext,\n\tsources: ConfiguredUpdateSource[],\n): Promise<void> {\n\tif (isOfflineModeEnabled() || sources.length === 0) return;\n\n\tconst npmCandidates: NpmUpdateTarget[] = [];\n\tconst gitCandidates: GitUpdateTarget[] = [];\n\tfor (const entry of sources) {\n\t\tconst parsed = parseSource(entry.source);\n\t\tif (parsed.type === \"npm\") {\n\t\t\tif (!parsed.pinned) npmCandidates.push({ ...entry, parsed });\n\t\t} else if (parsed.type === \"git\") {\n\t\t\tgitCandidates.push({ ...entry, parsed });\n\t\t}\n\t}\n\n\tconst npmCheckTasks = npmCandidates.map((entry) => async () => ({\n\t\tentry,\n\t\tshouldUpdate: await shouldUpdateNpmSource(context, entry.parsed, entry.scope),\n\t}));\n\tconst npmCheckResults = await runWithConcurrency(npmCheckTasks, UPDATE_CHECK_CONCURRENCY);\n\tconst userNpmUpdates: NpmUpdateTarget[] = [];\n\tconst projectNpmUpdates: NpmUpdateTarget[] = [];\n\tfor (const result of npmCheckResults) {\n\t\tif (!result.shouldUpdate) continue;\n\t\tif (result.entry.scope === \"user\") userNpmUpdates.push(result.entry);\n\t\telse projectNpmUpdates.push(result.entry);\n\t}\n\n\tconst tasks: Promise<void>[] = [];\n\tif (userNpmUpdates.length > 0) tasks.push(updateNpmBatch(context, userNpmUpdates, \"user\"));\n\tif (projectNpmUpdates.length > 0) tasks.push(updateNpmBatch(context, projectNpmUpdates, \"project\"));\n\tif (gitCandidates.length > 0) {\n\t\tconst gitTasks = gitCandidates.map(\n\t\t\t(entry) => async () =>\n\t\t\t\twithProgress(context, \"update\", entry.source, `Updating ${entry.source}...`, async () => {\n\t\t\t\t\tif (context.driver) await context.driver.updateGit(entry.parsed, entry.scope);\n\t\t\t\t\telse await updateGit(context, entry.parsed, entry.scope);\n\t\t\t\t}),\n\t\t);\n\t\ttasks.push(runWithConcurrency(gitTasks, GIT_UPDATE_CONCURRENCY).then(() => {}));\n\t}\n\tawait Promise.all(tasks);\n}\n\nasync function shouldUpdateNpmSource(\n\tcontext: PackageManagerContext,\n\tsource: NpmSource,\n\tscope: InstalledSourceScope,\n): Promise<boolean> {\n\tconst installedPath = getManagedNpmInstallPath(context, source, scope);\n\tconst installedVersion = existsSync(installedPath) ? getInstalledNpmVersion(installedPath) : undefined;\n\tif (!installedVersion) return true;\n\ttry {\n\t\tconst targetVersion = await getLatestNpmVersion(\n\t\t\tcontext,\n\t\t\tsource.version ? source.spec : source.name,\n\t\t\tsource.range,\n\t\t);\n\t\treturn gt(targetVersion, installedVersion);\n\t} catch {\n\t\treturn true;\n\t}\n}\n\nasync function updateNpmBatch(\n\tcontext: PackageManagerContext,\n\tsources: NpmUpdateTarget[],\n\tscope: InstalledSourceScope,\n): Promise<void> {\n\tif (sources.length === 0) return;\n\tconst sourceLabel = sources.length === 1 ? sources[0].source : `${scope} npm packages`;\n\tconst message = sources.length === 1 ? `Updating ${sources[0].source}...` : `Updating ${scope} npm packages...`;\n\tconst specs = sources.map((entry) => (entry.parsed.version ? entry.parsed.spec : `${entry.parsed.name}@latest`));\n\n\tawait withProgress(context, \"update\", sourceLabel, message, async () => {\n\t\tawait installNpmBatch(context, specs, scope);\n\t});\n}\n\nexport async function checkForAvailableUpdates(context: PackageManagerContext): Promise<PackageUpdate[]> {\n\tif (isOfflineModeEnabled()) return [];\n\n\tconst globalSettings = context.settingsManager.getGlobalSettings();\n\tconst projectSettings = context.settingsManager.getProjectSettings();\n\tconst allPackages = [\n\t\t...(projectSettings.packages ?? []).map((pkg) => ({ pkg, scope: \"project\" as const })),\n\t\t...(globalSettings.packages ?? []).map((pkg) => ({ pkg, scope: \"user\" as const })),\n\t];\n\tconst packageSources = dedupePackages(context, allPackages);\n\tconst checks = packageSources\n\t\t.filter((entry): entry is { pkg: typeof entry.pkg; scope: InstalledSourceScope } => entry.scope !== \"temporary\")\n\t\t.map((entry) => async (): Promise<PackageUpdate | undefined> => {\n\t\t\tconst source = getPackageSourceString(entry.pkg);\n\t\t\tconst parsed = parseSource(source);\n\t\t\tif (parsed.type === \"local\" || parsed.pinned) return undefined;\n\n\t\t\tif (parsed.type === \"npm\") {\n\t\t\t\tconst installedPath = getNpmInstallPath(context, parsed, entry.scope);\n\t\t\t\tif (!existsSync(installedPath)) return undefined;\n\t\t\t\tconst hasUpdate = await npmHasAvailableUpdate(context, parsed, installedPath);\n\t\t\t\tif (!hasUpdate) return undefined;\n\t\t\t\treturn { source, displayName: parsed.name, type: \"npm\", scope: entry.scope };\n\t\t\t}\n\n\t\t\tconst installedPath = getExistingGitInstallPath(context, parsed, entry.scope);\n\t\t\tif (!installedPath) return undefined;\n\t\t\tconst hasUpdate = context.driver\n\t\t\t\t? await context.driver.gitHasAvailableUpdate(installedPath)\n\t\t\t\t: await gitHasAvailableUpdate(context, installedPath);\n\t\t\tif (!hasUpdate) return undefined;\n\t\t\treturn { source, displayName: `${parsed.host}/${parsed.path}`, type: \"git\", scope: entry.scope };\n\t\t});\n\n\tconst results = await runWithConcurrency(checks, UPDATE_CHECK_CONCURRENCY);\n\treturn results.filter((result): result is PackageUpdate => result !== undefined);\n}\n"]}
1
+ {"version":3,"file":"package-manager-operations.js","sourceRoot":"","sources":["../../src/core/package-manager-operations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAClG,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EACN,yBAAyB,EACzB,qBAAqB,EACrB,UAAU,EACV,SAAS,EACT,SAAS,GACT,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACN,sBAAsB,EACtB,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EACjB,UAAU,EACV,eAAe,EACf,qBAAqB,EACrB,YAAY,GACZ,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EACN,4BAA4B,EAC5B,6BAA6B,EAC7B,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,WAAW,GACX,MAAM,6BAA6B,CAAC;AAarC,MAAM,CAAC,KAAK,UAAU,OAAO,CAC5B,OAA8B,EAC9B,MAAc,EACd,OAA6B;IAE7B,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,KAAK,GAAgB,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IAC/D,4BAA4B,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7C,MAAM,YAAY,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,MAAM,KAAK,EAAE,KAAK,IAAI,EAAE;QACpF,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC3B,MAAM,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YAChD,OAAO;QACR,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC3B,MAAM,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YACzC,OAAO;QACR,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,EAAE,CAAC,CAAC;YACrD,CAAC;YACD,OAAO;QACR,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,+BAA+B,MAAM,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAC3B,OAA8B,EAC9B,MAAc,EACd,OAA6B;IAE7B,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,KAAK,GAAgB,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IAC/D,4BAA4B,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7C,MAAM,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,MAAM,KAAK,EAAE,KAAK,IAAI,EAAE;QACjF,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC3B,MAAM,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YAC3C,OAAO;QACR,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC3B,MAAM,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YACxC,OAAO;QACR,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO;QACpC,MAAM,IAAI,KAAK,CAAC,8BAA8B,MAAM,EAAE,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAA8B,EAAE,MAAe;IAC3E,MAAM,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC;IACnE,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,kBAAkB,EAAE,CAAC;IACrE,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1E,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,aAAa,GAA6B,EAAE,CAAC;IAEnD,KAAK,MAAM,GAAG,IAAI,cAAc,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QACjD,MAAM,SAAS,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,QAAQ,IAAI,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,QAAQ;YAAE,SAAS;QACtF,OAAO,GAAG,IAAI,CAAC;QACf,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,eAAe,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QAClD,MAAM,SAAS,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,QAAQ,IAAI,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,KAAK,QAAQ;YAAE,SAAS;QACzF,OAAO,GAAG,IAAI,CAAC;QACf,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACd,6BAA6B,CAAC,OAAO,EAAE,MAAM,EAAE;YAC9C,GAAG,CAAC,cAAc,CAAC,QAAQ,IAAI,EAAE,CAAC;YAClC,GAAG,CAAC,eAAe,CAAC,QAAQ,IAAI,EAAE,CAAC;SACnC,CAAC,CACF,CAAC;IACH,CAAC;IACD,MAAM,uBAAuB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACxC,OAA8B,EAC9B,MAAoB,EACpB,KAAkB;IAElB,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC3B,MAAM,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,WAAW,CAAC,CAAC;QAChE,OAAO;IACR,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC3B,MAAM,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;AACF,CAAC;AAED,KAAK,UAAU,uBAAuB,CACrC,OAA8B,EAC9B,OAAiC;IAEjC,IAAI,oBAAoB,EAAE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAE3D,MAAM,aAAa,GAAsB,EAAE,CAAC;IAC5C,MAAM,aAAa,GAAsB,EAAE,CAAC;IAC5C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,MAAM;gBAAE,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9D,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAClC,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1C,CAAC;IACF,CAAC;IAED,MAAM,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE;QAC7D,MAAM,KAAK,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9E,OAAO;YACN,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE;YACjG,YAAY,EAAE,KAAK,CAAC,YAAY;SAChC,CAAC;IACH,CAAC,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAAC,aAAa,EAAE,wBAAwB,CAAC,CAAC;IAC1F,MAAM,cAAc,GAAsB,EAAE,CAAC;IAC7C,MAAM,iBAAiB,GAAsB,EAAE,CAAC;IAChD,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,YAAY;YAAE,SAAS;QACnC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM;YAAE,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;;YAChE,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3F,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,iBAAiB,EAAE,SAAS,CAAC,CAAC,CAAC;IACpG,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CACjC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CACrB,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,YAAY,KAAK,CAAC,MAAM,KAAK,EAAE,KAAK,IAAI,EAAE;YACvF,IAAI,OAAO,CAAC,MAAM;gBAAE,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;;gBACzE,MAAM,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1D,CAAC,CAAC,CACH,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC;IACjF,CAAC;IACD,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED,KAAK,UAAU,qBAAqB,CACnC,OAA8B,EAC9B,MAAiB,EACjB,KAA2B;IAE3B,MAAM,aAAa,GAAG,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACvE,MAAM,gBAAgB,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvG,IAAI,CAAC,gBAAgB;QAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACrD,IAAI,CAAC;QACJ,MAAM,aAAa,GAAG,MAAM,mBAAmB,CAC9C,OAAO,EACP,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAC1C,MAAM,CAAC,KAAK,CACZ,CAAC;QACF,OAAO,EAAE,YAAY,EAAE,EAAE,CAAC,aAAa,EAAE,gBAAgB,CAAC,EAAE,gBAAgB,EAAE,aAAa,EAAE,CAAC;IAC/F,CAAC;IAAC,MAAM,CAAC;QACR,+DAA+D;QAC/D,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACjD,CAAC;AACF,CAAC;AAED,KAAK,UAAU,cAAc,CAC5B,OAA8B,EAC9B,OAA0B,EAC1B,KAA2B;IAE3B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACjC,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,eAAe,CAAC;IACvF,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,YAAY,KAAK,kBAAkB,CAAC;IAChH,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC;IAEjH,MAAM,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,yBAAyB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACpD,CAAC;AAED;;;GAGG;AACH,SAAS,yBAAyB,CACjC,OAA8B,EAC9B,OAA0B,EAC1B,KAA2B;IAE3B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,aAAa;YAAE,SAAS;QAC9D,MAAM,aAAa,GAAG,wBAAwB,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7E,MAAM,YAAY,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC;QAC3D,IAAI,YAAY,KAAK,KAAK,CAAC,gBAAgB;YAAE,SAAS;QACtD,YAAY,CAAC,OAAO,EAAE;YACrB,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO,EAAE,GAAG,KAAK,CAAC,MAAM,aAAa,YAAY,sBAAsB,KAAK,CAAC,aAAa,mEAAmE;SAC7J,CAAC,CAAC;IACJ,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,OAA8B;IAC5E,IAAI,oBAAoB,EAAE;QAAE,OAAO,EAAE,CAAC;IAEtC,MAAM,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC;IACnE,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,kBAAkB,EAAE,CAAC;IACrE,MAAM,WAAW,GAAG;QACnB,GAAG,CAAC,eAAe,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,SAAkB,EAAE,CAAC,CAAC;QACtF,GAAG,CAAC,cAAc,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAe,EAAE,CAAC,CAAC;KAClF,CAAC;IACF,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,cAAc;SAC3B,MAAM,CAAC,CAAC,KAAK,EAAmE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,WAAW,CAAC;SAC/G,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAwC,EAAE;QAC9D,MAAM,MAAM,GAAG,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;QAE/D,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC3B,MAAM,aAAa,GAAG,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YACtE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;gBAAE,OAAO,SAAS,CAAC;YACjD,MAAM,SAAS,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;YAC9E,IAAI,CAAC,SAAS;gBAAE,OAAO,SAAS,CAAC;YACjC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;QAC9E,CAAC;QAED,MAAM,aAAa,GAAG,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9E,IAAI,CAAC,aAAa;YAAE,OAAO,SAAS,CAAC;QACrC,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM;YAC/B,CAAC,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAC,aAAa,CAAC;YAC3D,CAAC,CAAC,MAAM,qBAAqB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACvD,IAAI,CAAC,SAAS;YAAE,OAAO,SAAS,CAAC;QACjC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IAClG,CAAC,CAAC,CAAC;IAEJ,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IAC3E,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAA2B,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;AAClF,CAAC","sourcesContent":["import { existsSync } from \"node:fs\";\nimport { gt } from \"semver\";\nimport { runWithConcurrency } from \"./package-manager-command.ts\";\nimport { GIT_UPDATE_CONCURRENCY, UPDATE_CHECK_CONCURRENCY } from \"./package-manager-constants.ts\";\nimport { isOfflineModeEnabled } from \"./package-manager-env.ts\";\nimport {\n\tgetExistingGitInstallPath,\n\tgitHasAvailableUpdate,\n\tinstallGit,\n\tremoveGit,\n\tupdateGit,\n} from \"./package-manager-git.ts\";\nimport {\n\tgetInstalledNpmVersion,\n\tgetLatestNpmVersion,\n\tgetManagedNpmInstallPath,\n\tgetNpmInstallPath,\n\tinstallNpm,\n\tinstallNpmBatch,\n\tnpmHasAvailableUpdate,\n\tuninstallNpm,\n} from \"./package-manager-npm.ts\";\nimport { resolveManagerPath } from \"./package-manager-paths.ts\";\nimport { emitProgress, withProgress } from \"./package-manager-progress.ts\";\nimport {\n\tassertProjectTrustedForScope,\n\tbuildNoMatchingPackageMessage,\n\tdedupePackages,\n\tgetPackageIdentity,\n\tgetPackageSourceString,\n\tparseSource,\n} from \"./package-manager-source.ts\";\nimport type {\n\tConfiguredUpdateSource,\n\tGitUpdateTarget,\n\tInstalledSourceScope,\n\tNpmSource,\n\tNpmUpdateTarget,\n\tPackageManagerContext,\n\tPackageUpdate,\n\tParsedSource,\n\tSourceScope,\n} from \"./package-manager-types.ts\";\n\nexport async function install(\n\tcontext: PackageManagerContext,\n\tsource: string,\n\toptions?: { local?: boolean },\n): Promise<void> {\n\tconst parsed = parseSource(source);\n\tconst scope: SourceScope = options?.local ? \"project\" : \"user\";\n\tassertProjectTrustedForScope(context, scope);\n\tawait withProgress(context, \"install\", source, `Installing ${source}...`, async () => {\n\t\tif (parsed.type === \"npm\") {\n\t\t\tawait installNpm(context, parsed, scope, false);\n\t\t\treturn;\n\t\t}\n\t\tif (parsed.type === \"git\") {\n\t\t\tawait installGit(context, parsed, scope);\n\t\t\treturn;\n\t\t}\n\t\tif (parsed.type === \"local\") {\n\t\t\tconst resolved = resolveManagerPath(context, parsed.path);\n\t\t\tif (!existsSync(resolved)) {\n\t\t\t\tthrow new Error(`Path does not exist: ${resolved}`);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tthrow new Error(`Unsupported install source: ${source}`);\n\t});\n}\n\nexport async function remove(\n\tcontext: PackageManagerContext,\n\tsource: string,\n\toptions?: { local?: boolean },\n): Promise<void> {\n\tconst parsed = parseSource(source);\n\tconst scope: SourceScope = options?.local ? \"project\" : \"user\";\n\tassertProjectTrustedForScope(context, scope);\n\tawait withProgress(context, \"remove\", source, `Removing ${source}...`, async () => {\n\t\tif (parsed.type === \"npm\") {\n\t\t\tawait uninstallNpm(context, parsed, scope);\n\t\t\treturn;\n\t\t}\n\t\tif (parsed.type === \"git\") {\n\t\t\tawait removeGit(context, parsed, scope);\n\t\t\treturn;\n\t\t}\n\t\tif (parsed.type === \"local\") return;\n\t\tthrow new Error(`Unsupported remove source: ${source}`);\n\t});\n}\n\nexport async function update(context: PackageManagerContext, source?: string): Promise<void> {\n\tconst globalSettings = context.settingsManager.getGlobalSettings();\n\tconst projectSettings = context.settingsManager.getProjectSettings();\n\tconst identity = source ? getPackageIdentity(context, source) : undefined;\n\tlet matched = false;\n\tconst updateSources: ConfiguredUpdateSource[] = [];\n\n\tfor (const pkg of globalSettings.packages ?? []) {\n\t\tconst sourceStr = getPackageSourceString(pkg);\n\t\tif (identity && getPackageIdentity(context, sourceStr, \"user\") !== identity) continue;\n\t\tmatched = true;\n\t\tupdateSources.push({ source: sourceStr, scope: \"user\" });\n\t}\n\tfor (const pkg of projectSettings.packages ?? []) {\n\t\tconst sourceStr = getPackageSourceString(pkg);\n\t\tif (identity && getPackageIdentity(context, sourceStr, \"project\") !== identity) continue;\n\t\tmatched = true;\n\t\tupdateSources.push({ source: sourceStr, scope: \"project\" });\n\t}\n\n\tif (source && !matched) {\n\t\tthrow new Error(\n\t\t\tbuildNoMatchingPackageMessage(context, source, [\n\t\t\t\t...(globalSettings.packages ?? []),\n\t\t\t\t...(projectSettings.packages ?? []),\n\t\t\t]),\n\t\t);\n\t}\n\tawait updateConfiguredSources(context, updateSources);\n}\n\nexport async function installParsedSource(\n\tcontext: PackageManagerContext,\n\tparsed: ParsedSource,\n\tscope: SourceScope,\n): Promise<void> {\n\tif (parsed.type === \"npm\") {\n\t\tawait installNpm(context, parsed, scope, scope === \"temporary\");\n\t\treturn;\n\t}\n\tif (parsed.type === \"git\") {\n\t\tawait installGit(context, parsed, scope);\n\t}\n}\n\nasync function updateConfiguredSources(\n\tcontext: PackageManagerContext,\n\tsources: ConfiguredUpdateSource[],\n): Promise<void> {\n\tif (isOfflineModeEnabled() || sources.length === 0) return;\n\n\tconst npmCandidates: NpmUpdateTarget[] = [];\n\tconst gitCandidates: GitUpdateTarget[] = [];\n\tfor (const entry of sources) {\n\t\tconst parsed = parseSource(entry.source);\n\t\tif (parsed.type === \"npm\") {\n\t\t\tif (!parsed.pinned) npmCandidates.push({ ...entry, parsed });\n\t\t} else if (parsed.type === \"git\") {\n\t\t\tgitCandidates.push({ ...entry, parsed });\n\t\t}\n\t}\n\n\tconst npmCheckTasks = npmCandidates.map((entry) => async () => {\n\t\tconst check = await shouldUpdateNpmSource(context, entry.parsed, entry.scope);\n\t\treturn {\n\t\t\tentry: { ...entry, installedVersion: check.installedVersion, targetVersion: check.targetVersion },\n\t\t\tshouldUpdate: check.shouldUpdate,\n\t\t};\n\t});\n\tconst npmCheckResults = await runWithConcurrency(npmCheckTasks, UPDATE_CHECK_CONCURRENCY);\n\tconst userNpmUpdates: NpmUpdateTarget[] = [];\n\tconst projectNpmUpdates: NpmUpdateTarget[] = [];\n\tfor (const result of npmCheckResults) {\n\t\tif (!result.shouldUpdate) continue;\n\t\tif (result.entry.scope === \"user\") userNpmUpdates.push(result.entry);\n\t\telse projectNpmUpdates.push(result.entry);\n\t}\n\n\tconst tasks: Promise<void>[] = [];\n\tif (userNpmUpdates.length > 0) tasks.push(updateNpmBatch(context, userNpmUpdates, \"user\"));\n\tif (projectNpmUpdates.length > 0) tasks.push(updateNpmBatch(context, projectNpmUpdates, \"project\"));\n\tif (gitCandidates.length > 0) {\n\t\tconst gitTasks = gitCandidates.map(\n\t\t\t(entry) => async () =>\n\t\t\t\twithProgress(context, \"update\", entry.source, `Updating ${entry.source}...`, async () => {\n\t\t\t\t\tif (context.driver) await context.driver.updateGit(entry.parsed, entry.scope);\n\t\t\t\t\telse await updateGit(context, entry.parsed, entry.scope);\n\t\t\t\t}),\n\t\t);\n\t\ttasks.push(runWithConcurrency(gitTasks, GIT_UPDATE_CONCURRENCY).then(() => {}));\n\t}\n\tawait Promise.all(tasks);\n}\n\nasync function shouldUpdateNpmSource(\n\tcontext: PackageManagerContext,\n\tsource: NpmSource,\n\tscope: InstalledSourceScope,\n): Promise<{ shouldUpdate: boolean; installedVersion?: string; targetVersion?: string }> {\n\tconst installedPath = getManagedNpmInstallPath(context, source, scope);\n\tconst installedVersion = existsSync(installedPath) ? getInstalledNpmVersion(installedPath) : undefined;\n\tif (!installedVersion) return { shouldUpdate: true };\n\ttry {\n\t\tconst targetVersion = await getLatestNpmVersion(\n\t\t\tcontext,\n\t\t\tsource.version ? source.spec : source.name,\n\t\t\tsource.range,\n\t\t);\n\t\treturn { shouldUpdate: gt(targetVersion, installedVersion), installedVersion, targetVersion };\n\t} catch {\n\t\t// Preserve existing update behavior when version lookup fails.\n\t\treturn { shouldUpdate: true, installedVersion };\n\t}\n}\n\nasync function updateNpmBatch(\n\tcontext: PackageManagerContext,\n\tsources: NpmUpdateTarget[],\n\tscope: InstalledSourceScope,\n): Promise<void> {\n\tif (sources.length === 0) return;\n\tconst sourceLabel = sources.length === 1 ? sources[0].source : `${scope} npm packages`;\n\tconst message = sources.length === 1 ? `Updating ${sources[0].source}...` : `Updating ${scope} npm packages...`;\n\tconst specs = sources.map((entry) => (entry.parsed.version ? entry.parsed.spec : `${entry.parsed.name}@latest`));\n\n\tawait withProgress(context, \"update\", sourceLabel, message, async () => {\n\t\tawait installNpmBatch(context, specs, scope);\n\t});\n\n\treportUnchangedNpmUpdates(context, sources, scope);\n}\n\n/**\n * npm can resolve stale registry metadata shortly after a publish and install the old\n * version without an error. Warn when an announced update did not change the installed version.\n */\nfunction reportUnchangedNpmUpdates(\n\tcontext: PackageManagerContext,\n\tsources: NpmUpdateTarget[],\n\tscope: InstalledSourceScope,\n): void {\n\tfor (const entry of sources) {\n\t\tif (!entry.installedVersion || !entry.targetVersion) continue;\n\t\tconst installedPath = getManagedNpmInstallPath(context, entry.parsed, scope);\n\t\tconst versionAfter = getInstalledNpmVersion(installedPath);\n\t\tif (versionAfter !== entry.installedVersion) continue;\n\t\temitProgress(context, {\n\t\t\ttype: \"progress\",\n\t\t\taction: \"update\",\n\t\t\tsource: entry.source,\n\t\t\tmessage: `${entry.source} is still ${versionAfter} (registry reports ${entry.targetVersion}); npm registry metadata may be stale, try again in a few minutes`,\n\t\t});\n\t}\n}\n\nexport async function checkForAvailableUpdates(context: PackageManagerContext): Promise<PackageUpdate[]> {\n\tif (isOfflineModeEnabled()) return [];\n\n\tconst globalSettings = context.settingsManager.getGlobalSettings();\n\tconst projectSettings = context.settingsManager.getProjectSettings();\n\tconst allPackages = [\n\t\t...(projectSettings.packages ?? []).map((pkg) => ({ pkg, scope: \"project\" as const })),\n\t\t...(globalSettings.packages ?? []).map((pkg) => ({ pkg, scope: \"user\" as const })),\n\t];\n\tconst packageSources = dedupePackages(context, allPackages);\n\tconst checks = packageSources\n\t\t.filter((entry): entry is { pkg: typeof entry.pkg; scope: InstalledSourceScope } => entry.scope !== \"temporary\")\n\t\t.map((entry) => async (): Promise<PackageUpdate | undefined> => {\n\t\t\tconst source = getPackageSourceString(entry.pkg);\n\t\t\tconst parsed = parseSource(source);\n\t\t\tif (parsed.type === \"local\" || parsed.pinned) return undefined;\n\n\t\t\tif (parsed.type === \"npm\") {\n\t\t\t\tconst installedPath = getNpmInstallPath(context, parsed, entry.scope);\n\t\t\t\tif (!existsSync(installedPath)) return undefined;\n\t\t\t\tconst hasUpdate = await npmHasAvailableUpdate(context, parsed, installedPath);\n\t\t\t\tif (!hasUpdate) return undefined;\n\t\t\t\treturn { source, displayName: parsed.name, type: \"npm\", scope: entry.scope };\n\t\t\t}\n\n\t\t\tconst installedPath = getExistingGitInstallPath(context, parsed, entry.scope);\n\t\t\tif (!installedPath) return undefined;\n\t\t\tconst hasUpdate = context.driver\n\t\t\t\t? await context.driver.gitHasAvailableUpdate(installedPath)\n\t\t\t\t: await gitHasAvailableUpdate(context, installedPath);\n\t\t\tif (!hasUpdate) return undefined;\n\t\t\treturn { source, displayName: `${parsed.host}/${parsed.path}`, type: \"git\", scope: entry.scope };\n\t\t});\n\n\tconst results = await runWithConcurrency(checks, UPDATE_CHECK_CONCURRENCY);\n\treturn results.filter((result): result is PackageUpdate => result !== undefined);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"package-manager-resolver.d.ts","sourceRoot":"","sources":["../../src/core/package-manager-resolver.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EACX,mBAAmB,EAGnB,qBAAqB,EAErB,aAAa,EACb,8BAA8B,EAG9B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAY3D,wBAAsB,eAAe,CACpC,OAAO,EAAE,qBAAqB,EAC9B,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,mBAAmB,CAAC,GAC1D,OAAO,CAAC,aAAa,CAAC,CAwExB;AAqCD,wBAAsB,uBAAuB,CAC5C,OAAO,EAAE,qBAAqB,EAC9B,OAAO,EAAE,aAAa,EAAE,EACxB,OAAO,CAAC,EAAE,8BAA8B,GACtC,OAAO,CAAC,aAAa,CAAC,CAkBxB"}
1
+ {"version":3,"file":"package-manager-resolver.d.ts","sourceRoot":"","sources":["../../src/core/package-manager-resolver.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EACX,mBAAmB,EAGnB,qBAAqB,EAErB,aAAa,EACb,8BAA8B,EAG9B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAY3D,wBAAsB,eAAe,CACpC,OAAO,EAAE,qBAAqB,EAC9B,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,mBAAmB,CAAC,GAC1D,OAAO,CAAC,aAAa,CAAC,CAwExB;AAqCD,wBAAsB,uBAAuB,CAC5C,OAAO,EAAE,qBAAqB,EAC9B,OAAO,EAAE,aAAa,EAAE,EACxB,OAAO,CAAC,EAAE,8BAA8B,GACtC,OAAO,CAAC,aAAa,CAAC,CAkBxB"}
@@ -4,7 +4,7 @@ import { CONFIG_DIR_NAME } from "../config.js";
4
4
  import { addAutoDiscoveredResources, collectProjectLocalResources } from "./package-manager-auto-resources.js";
5
5
  import { isOfflineModeEnabled } from "./package-manager-env.js";
6
6
  import { getExistingGitInstallPath, refreshTemporaryGitSource } from "./package-manager-git.js";
7
- import { getExistingNpmInstallPath, installedNpmMatchesConfiguredVersion } from "./package-manager-npm.js";
7
+ import { getExistingNpmInstallPath, installedNpmMatchesConfiguredVersion, npmHasAvailableUpdate, } from "./package-manager-npm.js";
8
8
  import { installParsedSource } from "./package-manager-operations.js";
9
9
  import { getBaseDirsForScope, getGitInstallPath, resolvePathFromBase } from "./package-manager-paths.js";
10
10
  import { addResource, createAccumulator, getTargetMap, toResolvedPaths, } from "./package-manager-resource-accumulator.js";
@@ -178,6 +178,24 @@ async function resolvePackageSources(context, sources, accumulator, onMissing, o
178
178
  }
179
179
  if (!installedPath)
180
180
  continue;
181
+ if (!needsInstall &&
182
+ resolvedScope === "temporary" &&
183
+ !parsed.pinned &&
184
+ (await npmHasAvailableUpdate(context, parsed, installedPath))) {
185
+ // Temporary (-e) sources have no `update` path, so refresh unpinned ones on load like temporary git
186
+ // sources. Like `update`, install `name@latest` for unversioned specs because a bare `npm install name`
187
+ // keeps the range already saved in the temporary package.json.
188
+ const refreshed = { ...parsed, spec: parsed.version ? parsed.spec : `${parsed.name}@latest` };
189
+ try {
190
+ if (context.driver)
191
+ await context.driver.installParsedSource(refreshed, resolvedScope);
192
+ else
193
+ await installParsedSource(context, refreshed, resolvedScope);
194
+ }
195
+ catch {
196
+ // Keep the cached install if the refresh fails.
197
+ }
198
+ }
181
199
  metadata.baseDir = installedPath;
182
200
  metadata.packageRoot = installedPath;
183
201
  await collectPackageResources(installedPath, accumulator, filter, metadata);
@@ -189,11 +207,11 @@ async function resolvePackageSources(context, sources, accumulator, onMissing, o
189
207
  if (!installed)
190
208
  continue;
191
209
  }
192
- else if (resolvedScope === "temporary" && !parsed.pinned && !isOfflineModeEnabled()) {
210
+ else if (resolvedScope === "temporary" && !isOfflineModeEnabled()) {
193
211
  if (context.driver)
194
- await context.driver.refreshTemporaryGitSource(parsed, sourceStr);
212
+ await context.driver.refreshTemporaryGitSource(parsed, sourceStr, installedPath);
195
213
  else
196
- await refreshTemporaryGitSource(context, parsed, sourceStr);
214
+ await refreshTemporaryGitSource(context, parsed, sourceStr, installedPath);
197
215
  }
198
216
  metadata.baseDir = installedPath;
199
217
  metadata.packageRoot = installedPath;
@@ -1 +1 @@
1
- {"version":3,"file":"package-manager-resolver.js","sourceRoot":"","sources":["../../src/core/package-manager-resolver.ts"],"names":[],"mappings":"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","sourcesContent":["import { access, stat } from \"node:fs/promises\";\nimport { dirname, isAbsolute, join } from \"node:path\";\nimport { CONFIG_DIR_NAME } from \"../config.js\";\nimport { addAutoDiscoveredResources, collectProjectLocalResources } from \"./package-manager-auto-resources.ts\";\nimport { isOfflineModeEnabled } from \"./package-manager-env.ts\";\nimport { getExistingGitInstallPath, refreshTemporaryGitSource } from \"./package-manager-git.ts\";\nimport { getExistingNpmInstallPath, installedNpmMatchesConfiguredVersion } from \"./package-manager-npm.ts\";\nimport { installParsedSource } from \"./package-manager-operations.ts\";\nimport { getBaseDirsForScope, getGitInstallPath, resolvePathFromBase } from \"./package-manager-paths.ts\";\nimport {\n\taddResource,\n\tcreateAccumulator,\n\tgetTargetMap,\n\ttoResolvedPaths,\n} from \"./package-manager-resource-accumulator.ts\";\nimport { collectPackageResources, resolveLocalEntries } from \"./package-manager-resource-collector.ts\";\nimport { resolveExtensionEntries } from \"./package-manager-resource-files.ts\";\nimport {\n\tapplyAutoloadDisabledPatterns,\n\tisEnabledByOverrides,\n\tisOverridePattern,\n\tsplitPatterns,\n} from \"./package-manager-resource-patterns.ts\";\nimport { dedupePackages, getPackageIdentity, getPackageSourceString, parseSource } from \"./package-manager-source.ts\";\nimport type {\n\tMissingSourceAction,\n\tPackageFilter,\n\tPackageInstallFailure,\n\tPackageManagerContext,\n\tPathMetadata,\n\tResolvedPaths,\n\tResolveExtensionSourcesOptions,\n\tResourceAccumulator,\n\tSourceScope,\n} from \"./package-manager-types.ts\";\nimport type { PackageSource } from \"./settings-manager.ts\";\nimport { BUILTIN_PATH_PREFIX } from \"./source-info.ts\";\n\nasync function exists(path: string): Promise<boolean> {\n\ttry {\n\t\tawait access(path);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nexport async function resolvePackages(\n\tcontext: PackageManagerContext,\n\tonMissing?: (source: string) => Promise<MissingSourceAction>,\n): Promise<ResolvedPaths> {\n\tconst accumulator = createAccumulator();\n\tconst globalSettings = context.settingsManager.getGlobalSettings();\n\tconst projectSettings = context.settingsManager.getProjectSettings();\n\tconst allPackages: Array<{ pkg: PackageSource; scope: SourceScope }> = [];\n\n\tfor (const pkg of projectSettings.packages ?? []) {\n\t\tallPackages.push({ pkg, scope: \"project\" });\n\t}\n\tfor (const pkg of globalSettings.packages ?? []) {\n\t\tallPackages.push({ pkg, scope: \"user\" });\n\t}\n\n\tconst packageSources = dedupePackages(context, allPackages);\n\tconst installFailures = await resolvePackageSources(context, packageSources, accumulator, onMissing, {\n\t\tsettingsField: \"packages\",\n\t});\n\n\tconst globalBaseDir = context.agentDir;\n\tconst projectBaseDir = join(context.cwd, CONFIG_DIR_NAME);\n\tconst globalBaseDirs = getBaseDirsForScope(context, \"user\");\n\tconst projectBaseDirs = getBaseDirsForScope(context, \"project\");\n\n\tfor (const resourceType of [\"extensions\", \"skills\", \"prompts\", \"themes\", \"workflows\"] as const) {\n\t\tconst target = getTargetMap(accumulator, resourceType);\n\t\tconst globalConfigured = globalSettings[resourceType];\n\t\tconst projectConfigured = projectSettings[resourceType];\n\t\tconst globalEntries = Array.isArray(globalConfigured) ? globalConfigured : (globalConfigured?.paths ?? []);\n\t\tconst projectEntries = Array.isArray(projectConfigured) ? projectConfigured : (projectConfigured?.paths ?? []);\n\t\tconst projectOrigin = context.settingsManager.isFieldInherited(\"project\", resourceType)\n\t\t\t? \"inherited-pi\"\n\t\t\t: \"atomic\";\n\t\tconst globalOrigin = context.settingsManager.isFieldInherited(\"global\", resourceType) ? \"inherited-pi\" : \"atomic\";\n\t\tawait resolveConfiguredLocalEntries(\n\t\t\tprojectEntries,\n\t\t\tresourceType,\n\t\t\ttarget,\n\t\t\t\"project\",\n\t\t\tprojectBaseDirs,\n\t\t\tprojectOrigin,\n\t\t);\n\t\tawait resolveConfiguredLocalEntries(globalEntries, resourceType, target, \"user\", globalBaseDirs, globalOrigin);\n\t}\n\n\tawait addAutoDiscoveredResources(\n\t\tcontext,\n\t\taccumulator,\n\t\tglobalSettings,\n\t\tprojectSettings,\n\t\tglobalBaseDir,\n\t\tprojectBaseDir,\n\t);\n\tfor (const name of context.builtinExtensions ?? []) {\n\t\tconst path = `${BUILTIN_PATH_PREFIX}${name}`;\n\t\tconst projectEnabled = applyAutoloadDisabledPatterns(\n\t\t\t[path],\n\t\t\t(projectSettings.extensions ?? []).filter(isOverridePattern),\n\t\t\tprojectBaseDir,\n\t\t).get(path);\n\t\taddResource(\n\t\t\taccumulator.extensions,\n\t\t\tpath,\n\t\t\t{\n\t\t\t\tsource: \"builtin\",\n\t\t\t\tscope: projectEnabled === undefined ? \"user\" : \"project\",\n\t\t\t\torigin: \"top-level\",\n\t\t\t\tconfigurationOrigin: \"bundled\",\n\t\t\t},\n\t\t\tprojectEnabled ?? isEnabledByOverrides(path, globalSettings.extensions ?? [], globalBaseDir),\n\t\t);\n\t}\n\treturn { ...toResolvedPaths(accumulator), installFailures };\n}\n\nasync function resolveConfiguredLocalEntries(\n\tentries: string[],\n\tresourceType: \"extensions\" | \"skills\" | \"prompts\" | \"themes\" | \"workflows\",\n\ttarget: ReturnType<typeof getTargetMap>,\n\tscope: \"project\" | \"user\",\n\tbaseDirs: string[],\n\tfieldOrigin: \"atomic\" | \"inherited-pi\",\n): Promise<void> {\n\tconst { plain, patterns } = splitPatterns(entries);\n\tconst relativeEntries = plain.filter(\n\t\t(entry) => !entry.startsWith(BUILTIN_PATH_PREFIX) && !isAbsolute(entry) && !entry.startsWith(\"~\"),\n\t);\n\tconst fixedEntries = plain.filter((entry) => isAbsolute(entry) || entry.startsWith(\"~\"));\n\tfor (const [baseIndex, baseDir] of baseDirs.entries()) {\n\t\tconst metadata: PathMetadata = {\n\t\t\tsource: \"local\",\n\t\t\tscope,\n\t\t\torigin: \"top-level\",\n\t\t\tbaseDir,\n\t\t\tconfigurationOrigin: baseIndex === 0 || fieldOrigin === \"atomic\" ? \"atomic\" : \"inherited-pi\",\n\t\t};\n\t\tawait resolveLocalEntries([...relativeEntries, ...patterns], resourceType, target, metadata, baseDir);\n\t\tawait resolveLocalEntries(\n\t\t\t[...fixedEntries, ...patterns],\n\t\t\tresourceType,\n\t\t\ttarget,\n\t\t\t{\n\t\t\t\t...metadata,\n\t\t\t\tconfigurationOrigin: fieldOrigin,\n\t\t\t},\n\t\t\tbaseDir,\n\t\t);\n\t}\n}\n\nexport async function resolveExtensionSources(\n\tcontext: PackageManagerContext,\n\tsources: PackageSource[],\n\toptions?: ResolveExtensionSourcesOptions,\n): Promise<ResolvedPaths> {\n\tconst accumulator = createAccumulator();\n\tconst scope: SourceScope = options?.temporary ? \"temporary\" : options?.local ? \"project\" : \"user\";\n\tconst packageSources: Array<{ pkg: PackageSource; scope: SourceScope }> = [];\n\tfor (const source of sources) {\n\t\tif (typeof source === \"string\" && source.startsWith(BUILTIN_PATH_PREFIX)) {\n\t\t\taddResource(\n\t\t\t\taccumulator.extensions,\n\t\t\t\tsource,\n\t\t\t\t{ source: \"builtin\", scope, origin: \"top-level\", configurationOrigin: \"bundled\" },\n\t\t\t\ttrue,\n\t\t\t);\n\t\t} else packageSources.push({ pkg: source, scope });\n\t}\n\tconst installFailures = await resolvePackageSources(context, packageSources, accumulator, undefined, {\n\t\tincludeProjectLocalResources: options?.includeProjectLocalResources === true,\n\t});\n\treturn { ...toResolvedPaths(accumulator), installFailures };\n}\n\nasync function resolvePackageSources(\n\tcontext: PackageManagerContext,\n\tsources: Array<{ pkg: PackageSource; scope: SourceScope }>,\n\taccumulator: ResourceAccumulator,\n\tonMissing?: (source: string) => Promise<MissingSourceAction>,\n\toptions?: { includeProjectLocalResources?: boolean; settingsField?: \"packages\" },\n): Promise<PackageInstallFailure[]> {\n\tconst installFailures: PackageInstallFailure[] = [];\n\tfor (const { pkg, scope } of sources) {\n\t\tconst sourceStr = getPackageSourceString(pkg);\n\t\tconst filter = typeof pkg === \"object\" ? pkg : undefined;\n\t\tconst deltaBase = findAutoloadDeltaBase(context, pkg, scope, sources);\n\t\tconst resolvedSource = deltaBase?.source ?? sourceStr;\n\t\tconst resolvedScope = deltaBase?.scope ?? scope;\n\t\tconst parsed = parseSource(resolvedSource);\n\t\tconst configurationOrigin =\n\t\t\toptions?.settingsField &&\n\t\t\tcontext.settingsManager.isFieldInherited(scope === \"project\" ? \"project\" : \"global\", options.settingsField)\n\t\t\t\t? \"inherited-pi\"\n\t\t\t\t: options?.settingsField\n\t\t\t\t\t? \"atomic\"\n\t\t\t\t\t: undefined;\n\t\tconst metadata: PathMetadata = { source: sourceStr, scope, origin: \"package\", configurationOrigin };\n\n\t\tif (parsed.type === \"local\") {\n\t\t\tfor (const [baseIndex, baseDir] of getBaseDirsForScope(context, resolvedScope).entries()) {\n\t\t\t\tconst resolvesFromSettingsBase =\n\t\t\t\t\toptions?.settingsField !== undefined && !isAbsolute(parsed.path) && !parsed.path.startsWith(\"~\");\n\t\t\t\tconst localMetadata: PathMetadata = {\n\t\t\t\t\t...metadata,\n\t\t\t\t\tbaseDir,\n\t\t\t\t\tconfigurationOrigin: resolvesFromSettingsBase\n\t\t\t\t\t\t? baseIndex === 0 || configurationOrigin === \"atomic\"\n\t\t\t\t\t\t\t? \"atomic\"\n\t\t\t\t\t\t\t: \"inherited-pi\"\n\t\t\t\t\t\t: configurationOrigin,\n\t\t\t\t};\n\t\t\t\tawait resolveLocalExtensionSource(parsed, accumulator, filter, localMetadata, baseDir, {\n\t\t\t\t\tincludeProjectLocalResources: options?.includeProjectLocalResources === true,\n\t\t\t\t});\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst installMissing = async (): Promise<boolean> => {\n\t\t\tif (isOfflineModeEnabled()) return false;\n\t\t\tif (onMissing) {\n\t\t\t\tconst action = await onMissing(sourceStr);\n\t\t\t\tif (action === \"skip\") return false;\n\t\t\t\tif (action === \"error\") throw new Error(`Missing source: ${sourceStr}`);\n\t\t\t}\n\t\t\t// A source that cannot be installed (no network, missing package, failing git prepare step)\n\t\t\t// must not abort startup. Skip its resources, like offline mode does, and report the failure.\n\t\t\ttry {\n\t\t\t\tif (context.driver) await context.driver.installParsedSource(parsed, resolvedScope);\n\t\t\t\telse await installParsedSource(context, parsed, resolvedScope);\n\t\t\t\treturn true;\n\t\t\t} catch (error) {\n\t\t\t\tinstallFailures.push({\n\t\t\t\t\tsource: resolvedSource,\n\t\t\t\t\tscope: resolvedScope,\n\t\t\t\t\tmessage: error instanceof Error ? error.message : String(error),\n\t\t\t\t});\n\t\t\t\treturn false;\n\t\t\t}\n\t\t};\n\n\t\tif (parsed.type === \"npm\") {\n\t\t\tlet installedPath = getExistingNpmInstallPath(context, parsed, resolvedScope);\n\t\t\tconst needsInstall =\n\t\t\t\t!installedPath || !(await installedNpmMatchesConfiguredVersion(context, parsed, installedPath));\n\t\t\tif (needsInstall) {\n\t\t\t\tconst installed = await installMissing();\n\t\t\t\tif (!installed) continue;\n\t\t\t\tinstalledPath = getExistingNpmInstallPath(context, parsed, resolvedScope);\n\t\t\t\tif (!installedPath || !(await installedNpmMatchesConfiguredVersion(context, parsed, installedPath))) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!installedPath) continue;\n\t\t\tmetadata.baseDir = installedPath;\n\t\t\tmetadata.packageRoot = installedPath;\n\t\t\tawait collectPackageResources(installedPath, accumulator, filter, metadata);\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst installedPath =\n\t\t\tgetExistingGitInstallPath(context, parsed, resolvedScope) ?? getGitInstallPath(context, parsed, resolvedScope);\n\t\tif (!(await exists(installedPath))) {\n\t\t\tconst installed = await installMissing();\n\t\t\tif (!installed) continue;\n\t\t} else if (resolvedScope === \"temporary\" && !parsed.pinned && !isOfflineModeEnabled()) {\n\t\t\tif (context.driver) await context.driver.refreshTemporaryGitSource(parsed, sourceStr);\n\t\t\telse await refreshTemporaryGitSource(context, parsed, sourceStr);\n\t\t}\n\t\tmetadata.baseDir = installedPath;\n\t\tmetadata.packageRoot = installedPath;\n\t\tawait collectPackageResources(installedPath, accumulator, filter, metadata);\n\t}\n\treturn installFailures;\n}\n\nfunction findAutoloadDeltaBase(\n\tcontext: PackageManagerContext,\n\tpkg: PackageSource,\n\tscope: SourceScope,\n\tsources: Array<{ pkg: PackageSource; scope: SourceScope }>,\n): { source: string; scope: SourceScope } | undefined {\n\tif (scope !== \"project\" || typeof pkg !== \"object\" || pkg.autoload !== false) return undefined;\n\tconst identity = getPackageIdentity(context, pkg.source, scope);\n\tconst userEntry = sources.find(\n\t\t(entry) =>\n\t\t\tentry.scope === \"user\" && getPackageIdentity(context, getPackageSourceString(entry.pkg), \"user\") === identity,\n\t);\n\treturn userEntry ? { source: getPackageSourceString(userEntry.pkg), scope: \"user\" } : undefined;\n}\n\nasync function resolveLocalExtensionSource(\n\tsource: { type: \"local\"; path: string },\n\taccumulator: ResourceAccumulator,\n\tfilter: PackageFilter | undefined,\n\tmetadata: PathMetadata,\n\tbaseDir: string,\n\toptions?: { includeProjectLocalResources?: boolean },\n): Promise<void> {\n\tconst resolved = resolvePathFromBase(source.path, baseDir);\n\tif (!(await exists(resolved))) return;\n\n\ttry {\n\t\tconst stats = await stat(resolved);\n\t\tif (stats.isFile()) {\n\t\t\taddResource(accumulator.extensions, resolved, { ...metadata, baseDir: dirname(resolved) }, true);\n\t\t\treturn;\n\t\t}\n\t\tif (stats.isDirectory()) {\n\t\t\tconst packageMetadata: PathMetadata = { ...metadata, baseDir: resolved, packageRoot: resolved };\n\t\t\tconst packageResources = await collectPackageResources(resolved, accumulator, filter, packageMetadata);\n\t\t\tconst projectLocalResources = options?.includeProjectLocalResources\n\t\t\t\t? await collectProjectLocalResources(resolved, accumulator, filter, packageMetadata)\n\t\t\t\t: false;\n\t\t\tconst extensionEntries = await resolveExtensionEntries(resolved);\n\t\t\tconst shouldAddDirectoryFallback =\n\t\t\t\textensionEntries !== null || (options?.includeProjectLocalResources === true && !projectLocalResources);\n\t\t\tif (!packageResources && shouldAddDirectoryFallback) {\n\t\t\t\taddResource(accumulator.extensions, resolved, packageMetadata, true);\n\t\t\t}\n\t\t}\n\t} catch {}\n}\n"]}
1
+ {"version":3,"file":"package-manager-resolver.js","sourceRoot":"","sources":["../../src/core/package-manager-resolver.ts"],"names":[],"mappings":"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","sourcesContent":["import { access, stat } from \"node:fs/promises\";\nimport { dirname, isAbsolute, join } from \"node:path\";\nimport { CONFIG_DIR_NAME } from \"../config.js\";\nimport { addAutoDiscoveredResources, collectProjectLocalResources } from \"./package-manager-auto-resources.ts\";\nimport { isOfflineModeEnabled } from \"./package-manager-env.ts\";\nimport { getExistingGitInstallPath, refreshTemporaryGitSource } from \"./package-manager-git.ts\";\nimport {\n\tgetExistingNpmInstallPath,\n\tinstalledNpmMatchesConfiguredVersion,\n\tnpmHasAvailableUpdate,\n} from \"./package-manager-npm.ts\";\nimport { installParsedSource } from \"./package-manager-operations.ts\";\nimport { getBaseDirsForScope, getGitInstallPath, resolvePathFromBase } from \"./package-manager-paths.ts\";\nimport {\n\taddResource,\n\tcreateAccumulator,\n\tgetTargetMap,\n\ttoResolvedPaths,\n} from \"./package-manager-resource-accumulator.ts\";\nimport { collectPackageResources, resolveLocalEntries } from \"./package-manager-resource-collector.ts\";\nimport { resolveExtensionEntries } from \"./package-manager-resource-files.ts\";\nimport {\n\tapplyAutoloadDisabledPatterns,\n\tisEnabledByOverrides,\n\tisOverridePattern,\n\tsplitPatterns,\n} from \"./package-manager-resource-patterns.ts\";\nimport { dedupePackages, getPackageIdentity, getPackageSourceString, parseSource } from \"./package-manager-source.ts\";\nimport type {\n\tMissingSourceAction,\n\tPackageFilter,\n\tPackageInstallFailure,\n\tPackageManagerContext,\n\tPathMetadata,\n\tResolvedPaths,\n\tResolveExtensionSourcesOptions,\n\tResourceAccumulator,\n\tSourceScope,\n} from \"./package-manager-types.ts\";\nimport type { PackageSource } from \"./settings-manager.ts\";\nimport { BUILTIN_PATH_PREFIX } from \"./source-info.ts\";\n\nasync function exists(path: string): Promise<boolean> {\n\ttry {\n\t\tawait access(path);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nexport async function resolvePackages(\n\tcontext: PackageManagerContext,\n\tonMissing?: (source: string) => Promise<MissingSourceAction>,\n): Promise<ResolvedPaths> {\n\tconst accumulator = createAccumulator();\n\tconst globalSettings = context.settingsManager.getGlobalSettings();\n\tconst projectSettings = context.settingsManager.getProjectSettings();\n\tconst allPackages: Array<{ pkg: PackageSource; scope: SourceScope }> = [];\n\n\tfor (const pkg of projectSettings.packages ?? []) {\n\t\tallPackages.push({ pkg, scope: \"project\" });\n\t}\n\tfor (const pkg of globalSettings.packages ?? []) {\n\t\tallPackages.push({ pkg, scope: \"user\" });\n\t}\n\n\tconst packageSources = dedupePackages(context, allPackages);\n\tconst installFailures = await resolvePackageSources(context, packageSources, accumulator, onMissing, {\n\t\tsettingsField: \"packages\",\n\t});\n\n\tconst globalBaseDir = context.agentDir;\n\tconst projectBaseDir = join(context.cwd, CONFIG_DIR_NAME);\n\tconst globalBaseDirs = getBaseDirsForScope(context, \"user\");\n\tconst projectBaseDirs = getBaseDirsForScope(context, \"project\");\n\n\tfor (const resourceType of [\"extensions\", \"skills\", \"prompts\", \"themes\", \"workflows\"] as const) {\n\t\tconst target = getTargetMap(accumulator, resourceType);\n\t\tconst globalConfigured = globalSettings[resourceType];\n\t\tconst projectConfigured = projectSettings[resourceType];\n\t\tconst globalEntries = Array.isArray(globalConfigured) ? globalConfigured : (globalConfigured?.paths ?? []);\n\t\tconst projectEntries = Array.isArray(projectConfigured) ? projectConfigured : (projectConfigured?.paths ?? []);\n\t\tconst projectOrigin = context.settingsManager.isFieldInherited(\"project\", resourceType)\n\t\t\t? \"inherited-pi\"\n\t\t\t: \"atomic\";\n\t\tconst globalOrigin = context.settingsManager.isFieldInherited(\"global\", resourceType) ? \"inherited-pi\" : \"atomic\";\n\t\tawait resolveConfiguredLocalEntries(\n\t\t\tprojectEntries,\n\t\t\tresourceType,\n\t\t\ttarget,\n\t\t\t\"project\",\n\t\t\tprojectBaseDirs,\n\t\t\tprojectOrigin,\n\t\t);\n\t\tawait resolveConfiguredLocalEntries(globalEntries, resourceType, target, \"user\", globalBaseDirs, globalOrigin);\n\t}\n\n\tawait addAutoDiscoveredResources(\n\t\tcontext,\n\t\taccumulator,\n\t\tglobalSettings,\n\t\tprojectSettings,\n\t\tglobalBaseDir,\n\t\tprojectBaseDir,\n\t);\n\tfor (const name of context.builtinExtensions ?? []) {\n\t\tconst path = `${BUILTIN_PATH_PREFIX}${name}`;\n\t\tconst projectEnabled = applyAutoloadDisabledPatterns(\n\t\t\t[path],\n\t\t\t(projectSettings.extensions ?? []).filter(isOverridePattern),\n\t\t\tprojectBaseDir,\n\t\t).get(path);\n\t\taddResource(\n\t\t\taccumulator.extensions,\n\t\t\tpath,\n\t\t\t{\n\t\t\t\tsource: \"builtin\",\n\t\t\t\tscope: projectEnabled === undefined ? \"user\" : \"project\",\n\t\t\t\torigin: \"top-level\",\n\t\t\t\tconfigurationOrigin: \"bundled\",\n\t\t\t},\n\t\t\tprojectEnabled ?? isEnabledByOverrides(path, globalSettings.extensions ?? [], globalBaseDir),\n\t\t);\n\t}\n\treturn { ...toResolvedPaths(accumulator), installFailures };\n}\n\nasync function resolveConfiguredLocalEntries(\n\tentries: string[],\n\tresourceType: \"extensions\" | \"skills\" | \"prompts\" | \"themes\" | \"workflows\",\n\ttarget: ReturnType<typeof getTargetMap>,\n\tscope: \"project\" | \"user\",\n\tbaseDirs: string[],\n\tfieldOrigin: \"atomic\" | \"inherited-pi\",\n): Promise<void> {\n\tconst { plain, patterns } = splitPatterns(entries);\n\tconst relativeEntries = plain.filter(\n\t\t(entry) => !entry.startsWith(BUILTIN_PATH_PREFIX) && !isAbsolute(entry) && !entry.startsWith(\"~\"),\n\t);\n\tconst fixedEntries = plain.filter((entry) => isAbsolute(entry) || entry.startsWith(\"~\"));\n\tfor (const [baseIndex, baseDir] of baseDirs.entries()) {\n\t\tconst metadata: PathMetadata = {\n\t\t\tsource: \"local\",\n\t\t\tscope,\n\t\t\torigin: \"top-level\",\n\t\t\tbaseDir,\n\t\t\tconfigurationOrigin: baseIndex === 0 || fieldOrigin === \"atomic\" ? \"atomic\" : \"inherited-pi\",\n\t\t};\n\t\tawait resolveLocalEntries([...relativeEntries, ...patterns], resourceType, target, metadata, baseDir);\n\t\tawait resolveLocalEntries(\n\t\t\t[...fixedEntries, ...patterns],\n\t\t\tresourceType,\n\t\t\ttarget,\n\t\t\t{\n\t\t\t\t...metadata,\n\t\t\t\tconfigurationOrigin: fieldOrigin,\n\t\t\t},\n\t\t\tbaseDir,\n\t\t);\n\t}\n}\n\nexport async function resolveExtensionSources(\n\tcontext: PackageManagerContext,\n\tsources: PackageSource[],\n\toptions?: ResolveExtensionSourcesOptions,\n): Promise<ResolvedPaths> {\n\tconst accumulator = createAccumulator();\n\tconst scope: SourceScope = options?.temporary ? \"temporary\" : options?.local ? \"project\" : \"user\";\n\tconst packageSources: Array<{ pkg: PackageSource; scope: SourceScope }> = [];\n\tfor (const source of sources) {\n\t\tif (typeof source === \"string\" && source.startsWith(BUILTIN_PATH_PREFIX)) {\n\t\t\taddResource(\n\t\t\t\taccumulator.extensions,\n\t\t\t\tsource,\n\t\t\t\t{ source: \"builtin\", scope, origin: \"top-level\", configurationOrigin: \"bundled\" },\n\t\t\t\ttrue,\n\t\t\t);\n\t\t} else packageSources.push({ pkg: source, scope });\n\t}\n\tconst installFailures = await resolvePackageSources(context, packageSources, accumulator, undefined, {\n\t\tincludeProjectLocalResources: options?.includeProjectLocalResources === true,\n\t});\n\treturn { ...toResolvedPaths(accumulator), installFailures };\n}\n\nasync function resolvePackageSources(\n\tcontext: PackageManagerContext,\n\tsources: Array<{ pkg: PackageSource; scope: SourceScope }>,\n\taccumulator: ResourceAccumulator,\n\tonMissing?: (source: string) => Promise<MissingSourceAction>,\n\toptions?: { includeProjectLocalResources?: boolean; settingsField?: \"packages\" },\n): Promise<PackageInstallFailure[]> {\n\tconst installFailures: PackageInstallFailure[] = [];\n\tfor (const { pkg, scope } of sources) {\n\t\tconst sourceStr = getPackageSourceString(pkg);\n\t\tconst filter = typeof pkg === \"object\" ? pkg : undefined;\n\t\tconst deltaBase = findAutoloadDeltaBase(context, pkg, scope, sources);\n\t\tconst resolvedSource = deltaBase?.source ?? sourceStr;\n\t\tconst resolvedScope = deltaBase?.scope ?? scope;\n\t\tconst parsed = parseSource(resolvedSource);\n\t\tconst configurationOrigin =\n\t\t\toptions?.settingsField &&\n\t\t\tcontext.settingsManager.isFieldInherited(scope === \"project\" ? \"project\" : \"global\", options.settingsField)\n\t\t\t\t? \"inherited-pi\"\n\t\t\t\t: options?.settingsField\n\t\t\t\t\t? \"atomic\"\n\t\t\t\t\t: undefined;\n\t\tconst metadata: PathMetadata = { source: sourceStr, scope, origin: \"package\", configurationOrigin };\n\n\t\tif (parsed.type === \"local\") {\n\t\t\tfor (const [baseIndex, baseDir] of getBaseDirsForScope(context, resolvedScope).entries()) {\n\t\t\t\tconst resolvesFromSettingsBase =\n\t\t\t\t\toptions?.settingsField !== undefined && !isAbsolute(parsed.path) && !parsed.path.startsWith(\"~\");\n\t\t\t\tconst localMetadata: PathMetadata = {\n\t\t\t\t\t...metadata,\n\t\t\t\t\tbaseDir,\n\t\t\t\t\tconfigurationOrigin: resolvesFromSettingsBase\n\t\t\t\t\t\t? baseIndex === 0 || configurationOrigin === \"atomic\"\n\t\t\t\t\t\t\t? \"atomic\"\n\t\t\t\t\t\t\t: \"inherited-pi\"\n\t\t\t\t\t\t: configurationOrigin,\n\t\t\t\t};\n\t\t\t\tawait resolveLocalExtensionSource(parsed, accumulator, filter, localMetadata, baseDir, {\n\t\t\t\t\tincludeProjectLocalResources: options?.includeProjectLocalResources === true,\n\t\t\t\t});\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst installMissing = async (): Promise<boolean> => {\n\t\t\tif (isOfflineModeEnabled()) return false;\n\t\t\tif (onMissing) {\n\t\t\t\tconst action = await onMissing(sourceStr);\n\t\t\t\tif (action === \"skip\") return false;\n\t\t\t\tif (action === \"error\") throw new Error(`Missing source: ${sourceStr}`);\n\t\t\t}\n\t\t\t// A source that cannot be installed (no network, missing package, failing git prepare step)\n\t\t\t// must not abort startup. Skip its resources, like offline mode does, and report the failure.\n\t\t\ttry {\n\t\t\t\tif (context.driver) await context.driver.installParsedSource(parsed, resolvedScope);\n\t\t\t\telse await installParsedSource(context, parsed, resolvedScope);\n\t\t\t\treturn true;\n\t\t\t} catch (error) {\n\t\t\t\tinstallFailures.push({\n\t\t\t\t\tsource: resolvedSource,\n\t\t\t\t\tscope: resolvedScope,\n\t\t\t\t\tmessage: error instanceof Error ? error.message : String(error),\n\t\t\t\t});\n\t\t\t\treturn false;\n\t\t\t}\n\t\t};\n\n\t\tif (parsed.type === \"npm\") {\n\t\t\tlet installedPath = getExistingNpmInstallPath(context, parsed, resolvedScope);\n\t\t\tconst needsInstall =\n\t\t\t\t!installedPath || !(await installedNpmMatchesConfiguredVersion(context, parsed, installedPath));\n\t\t\tif (needsInstall) {\n\t\t\t\tconst installed = await installMissing();\n\t\t\t\tif (!installed) continue;\n\t\t\t\tinstalledPath = getExistingNpmInstallPath(context, parsed, resolvedScope);\n\t\t\t\tif (!installedPath || !(await installedNpmMatchesConfiguredVersion(context, parsed, installedPath))) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!installedPath) continue;\n\t\t\tif (\n\t\t\t\t!needsInstall &&\n\t\t\t\tresolvedScope === \"temporary\" &&\n\t\t\t\t!parsed.pinned &&\n\t\t\t\t(await npmHasAvailableUpdate(context, parsed, installedPath))\n\t\t\t) {\n\t\t\t\t// Temporary (-e) sources have no `update` path, so refresh unpinned ones on load like temporary git\n\t\t\t\t// sources. Like `update`, install `name@latest` for unversioned specs because a bare `npm install name`\n\t\t\t\t// keeps the range already saved in the temporary package.json.\n\t\t\t\tconst refreshed = { ...parsed, spec: parsed.version ? parsed.spec : `${parsed.name}@latest` };\n\t\t\t\ttry {\n\t\t\t\t\tif (context.driver) await context.driver.installParsedSource(refreshed, resolvedScope);\n\t\t\t\t\telse await installParsedSource(context, refreshed, resolvedScope);\n\t\t\t\t} catch {\n\t\t\t\t\t// Keep the cached install if the refresh fails.\n\t\t\t\t}\n\t\t\t}\n\t\t\tmetadata.baseDir = installedPath;\n\t\t\tmetadata.packageRoot = installedPath;\n\t\t\tawait collectPackageResources(installedPath, accumulator, filter, metadata);\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst installedPath =\n\t\t\tgetExistingGitInstallPath(context, parsed, resolvedScope) ?? getGitInstallPath(context, parsed, resolvedScope);\n\t\tif (!(await exists(installedPath))) {\n\t\t\tconst installed = await installMissing();\n\t\t\tif (!installed) continue;\n\t\t} else if (resolvedScope === \"temporary\" && !isOfflineModeEnabled()) {\n\t\t\tif (context.driver) await context.driver.refreshTemporaryGitSource(parsed, sourceStr, installedPath);\n\t\t\telse await refreshTemporaryGitSource(context, parsed, sourceStr, installedPath);\n\t\t}\n\t\tmetadata.baseDir = installedPath;\n\t\tmetadata.packageRoot = installedPath;\n\t\tawait collectPackageResources(installedPath, accumulator, filter, metadata);\n\t}\n\treturn installFailures;\n}\n\nfunction findAutoloadDeltaBase(\n\tcontext: PackageManagerContext,\n\tpkg: PackageSource,\n\tscope: SourceScope,\n\tsources: Array<{ pkg: PackageSource; scope: SourceScope }>,\n): { source: string; scope: SourceScope } | undefined {\n\tif (scope !== \"project\" || typeof pkg !== \"object\" || pkg.autoload !== false) return undefined;\n\tconst identity = getPackageIdentity(context, pkg.source, scope);\n\tconst userEntry = sources.find(\n\t\t(entry) =>\n\t\t\tentry.scope === \"user\" && getPackageIdentity(context, getPackageSourceString(entry.pkg), \"user\") === identity,\n\t);\n\treturn userEntry ? { source: getPackageSourceString(userEntry.pkg), scope: \"user\" } : undefined;\n}\n\nasync function resolveLocalExtensionSource(\n\tsource: { type: \"local\"; path: string },\n\taccumulator: ResourceAccumulator,\n\tfilter: PackageFilter | undefined,\n\tmetadata: PathMetadata,\n\tbaseDir: string,\n\toptions?: { includeProjectLocalResources?: boolean },\n): Promise<void> {\n\tconst resolved = resolvePathFromBase(source.path, baseDir);\n\tif (!(await exists(resolved))) return;\n\n\ttry {\n\t\tconst stats = await stat(resolved);\n\t\tif (stats.isFile()) {\n\t\t\taddResource(accumulator.extensions, resolved, { ...metadata, baseDir: dirname(resolved) }, true);\n\t\t\treturn;\n\t\t}\n\t\tif (stats.isDirectory()) {\n\t\t\tconst packageMetadata: PathMetadata = { ...metadata, baseDir: resolved, packageRoot: resolved };\n\t\t\tconst packageResources = await collectPackageResources(resolved, accumulator, filter, packageMetadata);\n\t\t\tconst projectLocalResources = options?.includeProjectLocalResources\n\t\t\t\t? await collectProjectLocalResources(resolved, accumulator, filter, packageMetadata)\n\t\t\t\t: false;\n\t\t\tconst extensionEntries = await resolveExtensionEntries(resolved);\n\t\t\tconst shouldAddDirectoryFallback =\n\t\t\t\textensionEntries !== null || (options?.includeProjectLocalResources === true && !projectLocalResources);\n\t\t\tif (!packageResources && shouldAddDirectoryFallback) {\n\t\t\t\taddResource(accumulator.extensions, resolved, packageMetadata, true);\n\t\t\t}\n\t\t}\n\t} catch {}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"package-manager-resource-accumulator.d.ts","sourceRoot":"","sources":["../../src/core/package-manager-resource-accumulator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,YAAY,EACZ,aAAa,EAEb,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,MAAM,4BAA4B,CAAC;AAUpC,wBAAgB,YAAY,CAAC,WAAW,EAAE,mBAAmB,EAAE,YAAY,EAAE,YAAY,GAAG,WAAW,CAetG;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAK1G;AAED,wBAAgB,iBAAiB,IAAI,mBAAmB,CASvD;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,mBAAmB,GAAG,aAAa,CA0B/E"}
1
+ {"version":3,"file":"package-manager-resource-accumulator.d.ts","sourceRoot":"","sources":["../../src/core/package-manager-resource-accumulator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,YAAY,EACZ,aAAa,EAEb,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,MAAM,4BAA4B,CAAC;AAWpC,wBAAgB,YAAY,CAAC,WAAW,EAAE,mBAAmB,EAAE,YAAY,EAAE,YAAY,GAAG,WAAW,CAetG;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAK1G;AAED,wBAAgB,iBAAiB,IAAI,mBAAmB,CASvD;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,mBAAmB,GAAG,aAAa,CA0B/E"}
@@ -1,4 +1,4 @@
1
- import { canonicalizePath } from "../utils/paths.js";
1
+ import { getResourcePathKey } from "./source-info.js";
2
2
  function resourcePrecedenceRank(m) {
3
3
  if (m.source === "builtin")
4
4
  return 6;
@@ -52,10 +52,10 @@ export function toResolvedPaths(accumulator) {
52
52
  resolved.sort((a, b) => resourcePrecedenceRank(a.metadata) - resourcePrecedenceRank(b.metadata));
53
53
  const seen = new Set();
54
54
  return resolved.filter((entry) => {
55
- const canonicalPath = canonicalizePath(entry.path);
56
- if (seen.has(canonicalPath))
55
+ const pathKey = getResourcePathKey(entry.path);
56
+ if (seen.has(pathKey))
57
57
  return false;
58
- seen.add(canonicalPath);
58
+ seen.add(pathKey);
59
59
  return true;
60
60
  });
61
61
  };
@@ -1 +1 @@
1
- {"version":3,"file":"package-manager-resource-accumulator.js","sourceRoot":"","sources":["../../src/core/package-manager-resource-accumulator.ts"],"names":[],"mappings":"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","sourcesContent":["import { canonicalizePath } from \"../utils/paths.ts\";\nimport type {\n\tPathMetadata,\n\tResolvedPaths,\n\tResolvedResource,\n\tResourceAccumulator,\n\tResourceMap,\n\tResourceType,\n} from \"./package-manager-types.ts\";\n\nfunction resourcePrecedenceRank(m: PathMetadata): number {\n\tif (m.source === \"builtin\") return 6;\n\tif (m.origin === \"package\") return 4;\n\tif (m.borrowedProjectLocal) return 5;\n\tconst scopeBase = m.scope === \"project\" ? 0 : 2;\n\treturn scopeBase + (m.source === \"local\" ? 0 : 1);\n}\n\nexport function getTargetMap(accumulator: ResourceAccumulator, resourceType: ResourceType): ResourceMap {\n\tswitch (resourceType) {\n\t\tcase \"extensions\":\n\t\t\treturn accumulator.extensions;\n\t\tcase \"skills\":\n\t\t\treturn accumulator.skills;\n\t\tcase \"prompts\":\n\t\t\treturn accumulator.prompts;\n\t\tcase \"themes\":\n\t\t\treturn accumulator.themes;\n\t\tcase \"workflows\":\n\t\t\treturn accumulator.workflows;\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown resource type: ${resourceType}`);\n\t}\n}\n\nexport function addResource(map: ResourceMap, path: string, metadata: PathMetadata, enabled: boolean): void {\n\tif (!path) return;\n\tif (!map.has(path)) {\n\t\tmap.set(path, { metadata, enabled });\n\t}\n}\n\nexport function createAccumulator(): ResourceAccumulator {\n\treturn {\n\t\textensions: new Map(),\n\t\tskills: new Map(),\n\t\tprompts: new Map(),\n\t\tthemes: new Map(),\n\t\tworkflows: new Map(),\n\t\tmcpServers: new Map(),\n\t};\n}\n\nexport function toResolvedPaths(accumulator: ResourceAccumulator): ResolvedPaths {\n\tconst mapToResolved = (entries: ResourceMap): ResolvedResource[] => {\n\t\tconst resolved = Array.from(entries.entries()).map(([path, { metadata, enabled }]) => ({\n\t\t\tpath,\n\t\t\tenabled,\n\t\t\tmetadata,\n\t\t}));\n\t\tresolved.sort((a, b) => resourcePrecedenceRank(a.metadata) - resourcePrecedenceRank(b.metadata));\n\n\t\tconst seen = new Set<string>();\n\t\treturn resolved.filter((entry) => {\n\t\t\tconst canonicalPath = canonicalizePath(entry.path);\n\t\t\tif (seen.has(canonicalPath)) return false;\n\t\t\tseen.add(canonicalPath);\n\t\t\treturn true;\n\t\t});\n\t};\n\n\treturn {\n\t\textensions: mapToResolved(accumulator.extensions),\n\t\tskills: mapToResolved(accumulator.skills),\n\t\tprompts: mapToResolved(accumulator.prompts),\n\t\tthemes: mapToResolved(accumulator.themes),\n\t\tworkflows: mapToResolved(accumulator.workflows),\n\t\tmcpServers: [...accumulator.mcpServers.values()],\n\t};\n}\n"]}
1
+ {"version":3,"file":"package-manager-resource-accumulator.js","sourceRoot":"","sources":["../../src/core/package-manager-resource-accumulator.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tPathMetadata,\n\tResolvedPaths,\n\tResolvedResource,\n\tResourceAccumulator,\n\tResourceMap,\n\tResourceType,\n} from \"./package-manager-types.ts\";\nimport { getResourcePathKey } from \"./source-info.ts\";\n\nfunction resourcePrecedenceRank(m: PathMetadata): number {\n\tif (m.source === \"builtin\") return 6;\n\tif (m.origin === \"package\") return 4;\n\tif (m.borrowedProjectLocal) return 5;\n\tconst scopeBase = m.scope === \"project\" ? 0 : 2;\n\treturn scopeBase + (m.source === \"local\" ? 0 : 1);\n}\n\nexport function getTargetMap(accumulator: ResourceAccumulator, resourceType: ResourceType): ResourceMap {\n\tswitch (resourceType) {\n\t\tcase \"extensions\":\n\t\t\treturn accumulator.extensions;\n\t\tcase \"skills\":\n\t\t\treturn accumulator.skills;\n\t\tcase \"prompts\":\n\t\t\treturn accumulator.prompts;\n\t\tcase \"themes\":\n\t\t\treturn accumulator.themes;\n\t\tcase \"workflows\":\n\t\t\treturn accumulator.workflows;\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown resource type: ${resourceType}`);\n\t}\n}\n\nexport function addResource(map: ResourceMap, path: string, metadata: PathMetadata, enabled: boolean): void {\n\tif (!path) return;\n\tif (!map.has(path)) {\n\t\tmap.set(path, { metadata, enabled });\n\t}\n}\n\nexport function createAccumulator(): ResourceAccumulator {\n\treturn {\n\t\textensions: new Map(),\n\t\tskills: new Map(),\n\t\tprompts: new Map(),\n\t\tthemes: new Map(),\n\t\tworkflows: new Map(),\n\t\tmcpServers: new Map(),\n\t};\n}\n\nexport function toResolvedPaths(accumulator: ResourceAccumulator): ResolvedPaths {\n\tconst mapToResolved = (entries: ResourceMap): ResolvedResource[] => {\n\t\tconst resolved = Array.from(entries.entries()).map(([path, { metadata, enabled }]) => ({\n\t\t\tpath,\n\t\t\tenabled,\n\t\t\tmetadata,\n\t\t}));\n\t\tresolved.sort((a, b) => resourcePrecedenceRank(a.metadata) - resourcePrecedenceRank(b.metadata));\n\n\t\tconst seen = new Set<string>();\n\t\treturn resolved.filter((entry) => {\n\t\t\tconst pathKey = getResourcePathKey(entry.path);\n\t\t\tif (seen.has(pathKey)) return false;\n\t\t\tseen.add(pathKey);\n\t\t\treturn true;\n\t\t});\n\t};\n\n\treturn {\n\t\textensions: mapToResolved(accumulator.extensions),\n\t\tskills: mapToResolved(accumulator.skills),\n\t\tprompts: mapToResolved(accumulator.prompts),\n\t\tthemes: mapToResolved(accumulator.themes),\n\t\tworkflows: mapToResolved(accumulator.workflows),\n\t\tmcpServers: [...accumulator.mcpServers.values()],\n\t};\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import { relative } from "node:path";
2
2
  import { valid, validRange } from "semver";
3
3
  import { parseGitUrl } from "../utils/git.js";
4
- import { isLocalPath } from "../utils/paths.js";
4
+ import { getPathComparisonKey, isLocalPath } from "../utils/paths.js";
5
5
  import { getBaseDirForScope, resolveManagerPath, resolvePathFromBase } from "./package-manager-paths.js";
6
6
  function isExactNpmVersion(version) {
7
7
  return valid(version ?? "") !== null;
@@ -52,7 +52,7 @@ function getSourceMatchKeyForInput(context, source) {
52
52
  if (parsed.type === "git") {
53
53
  return `git:${parsed.host}/${parsed.path}`;
54
54
  }
55
- return `local:${resolveManagerPath(context, parsed.path)}`;
55
+ return `local:${getPathComparisonKey(resolveManagerPath(context, parsed.path))}`;
56
56
  }
57
57
  function getSourceMatchKeyForSettings(context, source, scope) {
58
58
  const parsed = parseSource(source);
@@ -63,7 +63,7 @@ function getSourceMatchKeyForSettings(context, source, scope) {
63
63
  return `git:${parsed.host}/${parsed.path}`;
64
64
  }
65
65
  const baseDir = getBaseDirForScope(context, scope);
66
- return `local:${resolvePathFromBase(parsed.path, baseDir)}`;
66
+ return `local:${getPathComparisonKey(resolvePathFromBase(parsed.path, baseDir))}`;
67
67
  }
68
68
  export function packageSourcesMatch(context, existing, inputSource, scope) {
69
69
  const left = getSourceMatchKeyForSettings(context, getPackageSourceString(existing), scope);
@@ -90,9 +90,9 @@ export function getPackageIdentity(context, source, scope) {
90
90
  }
91
91
  if (scope) {
92
92
  const baseDir = getBaseDirForScope(context, scope);
93
- return `local:${resolvePathFromBase(parsed.path, baseDir)}`;
93
+ return `local:${getPathComparisonKey(resolvePathFromBase(parsed.path, baseDir))}`;
94
94
  }
95
- return `local:${resolveManagerPath(context, parsed.path)}`;
95
+ return `local:${getPathComparisonKey(resolveManagerPath(context, parsed.path))}`;
96
96
  }
97
97
  export function dedupePackages(context, packages) {
98
98
  const result = [];
@@ -1 +1 @@
1
- {"version":3,"file":"package-manager-source.js","sourceRoot":"","sources":["../../src/core/package-manager-source.ts"],"names":[],"mappings":"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","sourcesContent":["import { relative } from \"node:path\";\nimport { valid, validRange } from \"semver\";\nimport { parseGitUrl } from \"../utils/git.ts\";\nimport { isLocalPath } from \"../utils/paths.ts\";\nimport { getBaseDirForScope, resolveManagerPath, resolvePathFromBase } from \"./package-manager-paths.ts\";\nimport type { PackageManagerContext, ParsedSource, SourceScope } from \"./package-manager-types.ts\";\nimport type { PackageSource } from \"./settings-manager.ts\";\n\nfunction isExactNpmVersion(version: string | undefined): boolean {\n\treturn valid(version ?? \"\") !== null;\n}\n\nfunction getNpmVersionRange(version: string | undefined): string | undefined {\n\treturn version ? (validRange(version) ?? undefined) : undefined;\n}\n\nexport function parseNpmSpec(spec: string): { name: string; version?: string } {\n\tconst versionSeparator = spec.startsWith(\"@\") ? spec.indexOf(\"@\", spec.indexOf(\"/\") + 1) : spec.indexOf(\"@\");\n\tif (versionSeparator <= 0) {\n\t\treturn { name: spec };\n\t}\n\treturn {\n\t\tname: spec.slice(0, versionSeparator),\n\t\tversion: spec.slice(versionSeparator + 1),\n\t};\n}\n\nexport function parseSource(source: string): ParsedSource {\n\tif (source.startsWith(\"npm:\")) {\n\t\tconst spec = source.slice(\"npm:\".length).trim();\n\t\tconst { name, version } = parseNpmSpec(spec);\n\t\treturn {\n\t\t\ttype: \"npm\",\n\t\t\tspec,\n\t\t\tname,\n\t\t\tversion,\n\t\t\trange: getNpmVersionRange(version),\n\t\t\tpinned: isExactNpmVersion(version),\n\t\t};\n\t}\n\n\tif (isLocalPath(source)) {\n\t\treturn { type: \"local\", path: source };\n\t}\n\n\tconst gitParsed = parseGitUrl(source);\n\tif (gitParsed) {\n\t\treturn gitParsed;\n\t}\n\n\treturn { type: \"local\", path: source };\n}\n\nexport function getPackageSourceString(pkg: PackageSource): string {\n\treturn typeof pkg === \"string\" ? pkg : pkg.source;\n}\n\nfunction getSourceMatchKeyForInput(context: PackageManagerContext, source: string): string {\n\tconst parsed = parseSource(source);\n\tif (parsed.type === \"npm\") {\n\t\treturn `npm:${parsed.name}`;\n\t}\n\tif (parsed.type === \"git\") {\n\t\treturn `git:${parsed.host}/${parsed.path}`;\n\t}\n\treturn `local:${resolveManagerPath(context, parsed.path)}`;\n}\n\nfunction getSourceMatchKeyForSettings(context: PackageManagerContext, source: string, scope: SourceScope): string {\n\tconst parsed = parseSource(source);\n\tif (parsed.type === \"npm\") {\n\t\treturn `npm:${parsed.name}`;\n\t}\n\tif (parsed.type === \"git\") {\n\t\treturn `git:${parsed.host}/${parsed.path}`;\n\t}\n\tconst baseDir = getBaseDirForScope(context, scope);\n\treturn `local:${resolvePathFromBase(parsed.path, baseDir)}`;\n}\n\nexport function packageSourcesMatch(\n\tcontext: PackageManagerContext,\n\texisting: PackageSource,\n\tinputSource: string,\n\tscope: SourceScope,\n): boolean {\n\tconst left = getSourceMatchKeyForSettings(context, getPackageSourceString(existing), scope);\n\tconst right = getSourceMatchKeyForInput(context, inputSource);\n\treturn left === right;\n}\n\nexport function normalizePackageSourceForSettings(\n\tcontext: PackageManagerContext,\n\tsource: string,\n\tscope: SourceScope,\n): string {\n\tconst parsed = parseSource(source);\n\tif (parsed.type !== \"local\") {\n\t\treturn source;\n\t}\n\tconst baseDir = getBaseDirForScope(context, scope);\n\tconst resolved = resolveManagerPath(context, parsed.path);\n\tconst rel = relative(baseDir, resolved);\n\treturn rel || \".\";\n}\n\nexport function getPackageIdentity(context: PackageManagerContext, source: string, scope?: SourceScope): string {\n\tconst parsed = parseSource(source);\n\tif (parsed.type === \"npm\") {\n\t\treturn `npm:${parsed.name}`;\n\t}\n\tif (parsed.type === \"git\") {\n\t\treturn `git:${parsed.host}/${parsed.path}`;\n\t}\n\tif (scope) {\n\t\tconst baseDir = getBaseDirForScope(context, scope);\n\t\treturn `local:${resolvePathFromBase(parsed.path, baseDir)}`;\n\t}\n\treturn `local:${resolveManagerPath(context, parsed.path)}`;\n}\n\nexport function dedupePackages(\n\tcontext: PackageManagerContext,\n\tpackages: Array<{ pkg: PackageSource; scope: SourceScope }>,\n): Array<{ pkg: PackageSource; scope: SourceScope }> {\n\tconst result: Array<{ pkg: PackageSource; scope: SourceScope }> = [];\n\tconst seen = new Map<string, number>();\n\tfor (const entry of packages) {\n\t\tconst identity = getPackageIdentity(context, getPackageSourceString(entry.pkg), entry.scope);\n\t\tconst index = seen.get(identity);\n\t\tif (index === undefined) {\n\t\t\tseen.set(identity, result.length);\n\t\t\tresult.push(entry);\n\t\t\tcontinue;\n\t\t}\n\t\tconst existing = result[index];\n\t\tif (existing?.scope === \"project\" && entry.scope === \"user\") {\n\t\t\tif (typeof existing.pkg === \"object\" && existing.pkg.autoload === false) result.push(entry);\n\t\t} else if (entry.scope === \"project\") {\n\t\t\tresult[index] = entry;\n\t\t}\n\t}\n\treturn result;\n}\n\nexport function buildNoMatchingPackageMessage(\n\tcontext: PackageManagerContext,\n\tsource: string,\n\tconfiguredPackages: PackageSource[],\n): string {\n\tconst suggestion = findSuggestedConfiguredSource(context, source, configuredPackages);\n\tif (!suggestion) {\n\t\treturn `No matching package found for ${source}`;\n\t}\n\treturn `No matching package found for ${source}. Did you mean ${suggestion}?`;\n}\n\nfunction findSuggestedConfiguredSource(\n\t_context: PackageManagerContext,\n\tsource: string,\n\tconfiguredPackages: PackageSource[],\n): string | undefined {\n\tconst trimmedSource = source.trim();\n\tconst suggestions = new Set<string>();\n\n\tfor (const pkg of configuredPackages) {\n\t\tconst sourceStr = getPackageSourceString(pkg);\n\t\tconst parsed = parseSource(sourceStr);\n\t\tif (parsed.type === \"npm\") {\n\t\t\tif (trimmedSource === parsed.name || trimmedSource === parsed.spec) {\n\t\t\t\tsuggestions.add(sourceStr);\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tif (parsed.type === \"git\") {\n\t\t\tconst shorthand = `${parsed.host}/${parsed.path}`;\n\t\t\tconst shorthandWithRef = parsed.ref ? `${shorthand}@${parsed.ref}` : undefined;\n\t\t\tif (trimmedSource === shorthand || (shorthandWithRef && trimmedSource === shorthandWithRef)) {\n\t\t\t\tsuggestions.add(sourceStr);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn suggestions.values().next().value;\n}\n\nexport function assertProjectTrustedForScope(context: PackageManagerContext, scope: SourceScope): void {\n\tif (scope === \"project\" && !context.settingsManager.isProjectTrusted()) {\n\t\tthrow new Error(\"Project is not trusted; refusing to access project package storage\");\n\t}\n}\n"]}
1
+ {"version":3,"file":"package-manager-source.js","sourceRoot":"","sources":["../../src/core/package-manager-source.ts"],"names":[],"mappings":"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","sourcesContent":["import { relative } from \"node:path\";\nimport { valid, validRange } from \"semver\";\nimport { parseGitUrl } from \"../utils/git.ts\";\nimport { getPathComparisonKey, isLocalPath } from \"../utils/paths.ts\";\nimport { getBaseDirForScope, resolveManagerPath, resolvePathFromBase } from \"./package-manager-paths.ts\";\nimport type { PackageManagerContext, ParsedSource, SourceScope } from \"./package-manager-types.ts\";\nimport type { PackageSource } from \"./settings-manager.ts\";\n\nfunction isExactNpmVersion(version: string | undefined): boolean {\n\treturn valid(version ?? \"\") !== null;\n}\n\nfunction getNpmVersionRange(version: string | undefined): string | undefined {\n\treturn version ? (validRange(version) ?? undefined) : undefined;\n}\n\nexport function parseNpmSpec(spec: string): { name: string; version?: string } {\n\tconst versionSeparator = spec.startsWith(\"@\") ? spec.indexOf(\"@\", spec.indexOf(\"/\") + 1) : spec.indexOf(\"@\");\n\tif (versionSeparator <= 0) {\n\t\treturn { name: spec };\n\t}\n\treturn {\n\t\tname: spec.slice(0, versionSeparator),\n\t\tversion: spec.slice(versionSeparator + 1),\n\t};\n}\n\nexport function parseSource(source: string): ParsedSource {\n\tif (source.startsWith(\"npm:\")) {\n\t\tconst spec = source.slice(\"npm:\".length).trim();\n\t\tconst { name, version } = parseNpmSpec(spec);\n\t\treturn {\n\t\t\ttype: \"npm\",\n\t\t\tspec,\n\t\t\tname,\n\t\t\tversion,\n\t\t\trange: getNpmVersionRange(version),\n\t\t\tpinned: isExactNpmVersion(version),\n\t\t};\n\t}\n\n\tif (isLocalPath(source)) {\n\t\treturn { type: \"local\", path: source };\n\t}\n\n\tconst gitParsed = parseGitUrl(source);\n\tif (gitParsed) {\n\t\treturn gitParsed;\n\t}\n\n\treturn { type: \"local\", path: source };\n}\n\nexport function getPackageSourceString(pkg: PackageSource): string {\n\treturn typeof pkg === \"string\" ? pkg : pkg.source;\n}\n\nfunction getSourceMatchKeyForInput(context: PackageManagerContext, source: string): string {\n\tconst parsed = parseSource(source);\n\tif (parsed.type === \"npm\") {\n\t\treturn `npm:${parsed.name}`;\n\t}\n\tif (parsed.type === \"git\") {\n\t\treturn `git:${parsed.host}/${parsed.path}`;\n\t}\n\treturn `local:${getPathComparisonKey(resolveManagerPath(context, parsed.path))}`;\n}\n\nfunction getSourceMatchKeyForSettings(context: PackageManagerContext, source: string, scope: SourceScope): string {\n\tconst parsed = parseSource(source);\n\tif (parsed.type === \"npm\") {\n\t\treturn `npm:${parsed.name}`;\n\t}\n\tif (parsed.type === \"git\") {\n\t\treturn `git:${parsed.host}/${parsed.path}`;\n\t}\n\tconst baseDir = getBaseDirForScope(context, scope);\n\treturn `local:${getPathComparisonKey(resolvePathFromBase(parsed.path, baseDir))}`;\n}\n\nexport function packageSourcesMatch(\n\tcontext: PackageManagerContext,\n\texisting: PackageSource,\n\tinputSource: string,\n\tscope: SourceScope,\n): boolean {\n\tconst left = getSourceMatchKeyForSettings(context, getPackageSourceString(existing), scope);\n\tconst right = getSourceMatchKeyForInput(context, inputSource);\n\treturn left === right;\n}\n\nexport function normalizePackageSourceForSettings(\n\tcontext: PackageManagerContext,\n\tsource: string,\n\tscope: SourceScope,\n): string {\n\tconst parsed = parseSource(source);\n\tif (parsed.type !== \"local\") {\n\t\treturn source;\n\t}\n\tconst baseDir = getBaseDirForScope(context, scope);\n\tconst resolved = resolveManagerPath(context, parsed.path);\n\tconst rel = relative(baseDir, resolved);\n\treturn rel || \".\";\n}\n\nexport function getPackageIdentity(context: PackageManagerContext, source: string, scope?: SourceScope): string {\n\tconst parsed = parseSource(source);\n\tif (parsed.type === \"npm\") {\n\t\treturn `npm:${parsed.name}`;\n\t}\n\tif (parsed.type === \"git\") {\n\t\treturn `git:${parsed.host}/${parsed.path}`;\n\t}\n\tif (scope) {\n\t\tconst baseDir = getBaseDirForScope(context, scope);\n\t\treturn `local:${getPathComparisonKey(resolvePathFromBase(parsed.path, baseDir))}`;\n\t}\n\treturn `local:${getPathComparisonKey(resolveManagerPath(context, parsed.path))}`;\n}\n\nexport function dedupePackages(\n\tcontext: PackageManagerContext,\n\tpackages: Array<{ pkg: PackageSource; scope: SourceScope }>,\n): Array<{ pkg: PackageSource; scope: SourceScope }> {\n\tconst result: Array<{ pkg: PackageSource; scope: SourceScope }> = [];\n\tconst seen = new Map<string, number>();\n\tfor (const entry of packages) {\n\t\tconst identity = getPackageIdentity(context, getPackageSourceString(entry.pkg), entry.scope);\n\t\tconst index = seen.get(identity);\n\t\tif (index === undefined) {\n\t\t\tseen.set(identity, result.length);\n\t\t\tresult.push(entry);\n\t\t\tcontinue;\n\t\t}\n\t\tconst existing = result[index];\n\t\tif (existing?.scope === \"project\" && entry.scope === \"user\") {\n\t\t\tif (typeof existing.pkg === \"object\" && existing.pkg.autoload === false) result.push(entry);\n\t\t} else if (entry.scope === \"project\") {\n\t\t\tresult[index] = entry;\n\t\t}\n\t}\n\treturn result;\n}\n\nexport function buildNoMatchingPackageMessage(\n\tcontext: PackageManagerContext,\n\tsource: string,\n\tconfiguredPackages: PackageSource[],\n): string {\n\tconst suggestion = findSuggestedConfiguredSource(context, source, configuredPackages);\n\tif (!suggestion) {\n\t\treturn `No matching package found for ${source}`;\n\t}\n\treturn `No matching package found for ${source}. Did you mean ${suggestion}?`;\n}\n\nfunction findSuggestedConfiguredSource(\n\t_context: PackageManagerContext,\n\tsource: string,\n\tconfiguredPackages: PackageSource[],\n): string | undefined {\n\tconst trimmedSource = source.trim();\n\tconst suggestions = new Set<string>();\n\n\tfor (const pkg of configuredPackages) {\n\t\tconst sourceStr = getPackageSourceString(pkg);\n\t\tconst parsed = parseSource(sourceStr);\n\t\tif (parsed.type === \"npm\") {\n\t\t\tif (trimmedSource === parsed.name || trimmedSource === parsed.spec) {\n\t\t\t\tsuggestions.add(sourceStr);\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tif (parsed.type === \"git\") {\n\t\t\tconst shorthand = `${parsed.host}/${parsed.path}`;\n\t\t\tconst shorthandWithRef = parsed.ref ? `${shorthand}@${parsed.ref}` : undefined;\n\t\t\tif (trimmedSource === shorthand || (shorthandWithRef && trimmedSource === shorthandWithRef)) {\n\t\t\t\tsuggestions.add(sourceStr);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn suggestions.values().next().value;\n}\n\nexport function assertProjectTrustedForScope(context: PackageManagerContext, scope: SourceScope): void {\n\tif (scope === \"project\" && !context.settingsManager.isProjectTrusted()) {\n\t\tthrow new Error(\"Project is not trusted; refusing to access project package storage\");\n\t}\n}\n"]}
@@ -111,7 +111,7 @@ export interface PackageManagerDriver {
111
111
  installParsedSource(parsed: ParsedSource, scope: SourceScope): Promise<void>;
112
112
  updateGit(source: GitSource, scope: SourceScope): Promise<void>;
113
113
  gitHasAvailableUpdate(installedPath: string): Promise<boolean>;
114
- refreshTemporaryGitSource(source: GitSource, sourceStr: string): Promise<void>;
114
+ refreshTemporaryGitSource(source: GitSource, sourceStr: string, installedPath: string): Promise<void>;
115
115
  getLocalGitUpdateTarget(installedPath: string): Promise<GitUpdateTargetInfo>;
116
116
  getGlobalNpmRoot(): string;
117
117
  parseSource(source: string): ParsedSource;
@@ -152,6 +152,10 @@ export interface ConfiguredUpdateSource {
152
152
  }
153
153
  export interface NpmUpdateTarget extends ConfiguredUpdateSource {
154
154
  parsed: NpmSource;
155
+ /** Version installed before the update, if any. */
156
+ installedVersion?: string;
157
+ /** Newer version reported by the registry, if the lookup succeeded. */
158
+ targetVersion?: string;
155
159
  }
156
160
  export interface GitUpdateTarget extends ConfiguredUpdateSource {
157
161
  parsed: GitSource;
@@ -1 +1 @@
1
- {"version":3,"file":"package-manager-types.d.ts","sourceRoot":"","sources":["../../src/core/package-manager-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"package-manager-types.d.ts","sourceRoot":"","sources":["../../src/core/package-manager-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE5E,MAAM,MAAM,2BAA2B,GAAG,QAAQ,GAAG,cAAc,GAAG,SAAS,CAAC;AAEhF,MAAM,WAAW,YAAY;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,SAAS,GAAG,WAAW,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,2BAA2B,CAAC;IAClD,6FAA6F;IAC7F,oBAAoB,CAAC,EAAE,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,4GAA4G;IAC5G,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,YAAY,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC7B,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,4EAA4E;IAC5E,eAAe,CAAC,EAAE,qBAAqB,EAAE,CAAC;CAC1C;AAED,kFAAkF;AAClF,MAAM,WAAW,qBAAqB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAE/D,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC;IAClD,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;AAE9D,MAAM,WAAW,aAAa;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,iBAAiB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC9B,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,mBAAmB,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9F,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChF,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClF,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,sBAAsB,IAAI,iBAAiB,EAAE,CAAC;IAC9C,uBAAuB,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,OAAO,CAAC,EAAE,8BAA8B,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACpH,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC;IAC5E,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC;IACjF,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,SAAS,GAAG,IAAI,CAAC;IAClE,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;CAChF;AAED,MAAM,WAAW,qBAAqB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,eAAe,CAAC;IACjC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACpC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvF,iBAAiB,CAChB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAC1E,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IACxD,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7E,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtG,uBAAuB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC7E,gBAAgB,IAAI,MAAM,CAAC;IAC3B,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAAC;IAC1C,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAChE,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC;IACjE,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC1E;AAED,MAAM,WAAW,qBAAqB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,eAAe,CAAC;IACjC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,MAAM,CAAC,EAAE,oBAAoB,CAAC;CAC9B;AAED,6EAA6E;AAC7E,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,qBAAqB,EAAE,KAAK,GAAG,UAAU,CAAC,CAAC;AAErF,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,CAAC;AAE3D,MAAM,MAAM,SAAS,GAAG;IACvB,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;AAE/D,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAErE,MAAM,WAAW,sBAAsB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,oBAAoB,CAAC;CAC5B;AAED,MAAM,WAAW,eAAgB,SAAQ,sBAAsB;IAC9D,MAAM,EAAE,SAAS,CAAC;IAClB,mDAAmD;IACnD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uEAAuE;IACvE,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAgB,SAAQ,sBAAsB;IAC9D,MAAM,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IAC1B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACtD,gHAAgH;IAChH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC;AAExF,eAAO,MAAM,cAAc,EAAE,YAAY,EAA+D,CAAC;AAEzG,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAMtD,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAAE,QAAQ,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AACzE,MAAM,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAErD,MAAM,WAAW,mBAAmB;IACnC,UAAU,EAAE,WAAW,CAAC;IACxB,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,WAAW,CAAC;IACvB,uFAAuF;IACvF,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,8BAA8B;IAC9C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,4BAA4B,CAAC,EAAE,OAAO,CAAC;CACvC"}