opkg 0.6.1 → 0.7.0

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 (487) hide show
  1. package/README.md +109 -186
  2. package/assets/openpackage_ascii_dark.png +0 -0
  3. package/assets/openpackage_ascii_light.png +0 -0
  4. package/dist/commands/add.js +34 -10
  5. package/dist/commands/add.js.map +1 -1
  6. package/dist/commands/apply.js +16 -0
  7. package/dist/commands/apply.js.map +1 -0
  8. package/dist/commands/delete.js +1 -1
  9. package/dist/commands/delete.js.map +1 -1
  10. package/dist/commands/install.js +177 -8
  11. package/dist/commands/install.js.map +1 -1
  12. package/dist/commands/list.js +2 -2
  13. package/dist/commands/list.js.map +1 -1
  14. package/dist/commands/login.js +1 -1
  15. package/dist/commands/login.js.map +1 -1
  16. package/dist/commands/logout.js +1 -1
  17. package/dist/commands/logout.js.map +1 -1
  18. package/dist/commands/new.js +125 -0
  19. package/dist/commands/new.js.map +1 -0
  20. package/dist/commands/pack.js +7 -13
  21. package/dist/commands/pack.js.map +1 -1
  22. package/dist/commands/pull.js +1 -1
  23. package/dist/commands/pull.js.map +1 -1
  24. package/dist/commands/push.js +1 -1
  25. package/dist/commands/push.js.map +1 -1
  26. package/dist/commands/remove.js +63 -0
  27. package/dist/commands/remove.js.map +1 -0
  28. package/dist/commands/save.js +11 -17
  29. package/dist/commands/save.js.map +1 -1
  30. package/dist/commands/set.js +33 -0
  31. package/dist/commands/set.js.map +1 -0
  32. package/dist/commands/show.js +16 -94
  33. package/dist/commands/show.js.map +1 -1
  34. package/dist/commands/status.js +26 -701
  35. package/dist/commands/status.js.map +1 -1
  36. package/dist/commands/uninstall.js +14 -427
  37. package/dist/commands/uninstall.js.map +1 -1
  38. package/dist/constants/index.js +72 -16
  39. package/dist/constants/index.js.map +1 -1
  40. package/dist/core/add/add-conflict-handler.js +1 -8
  41. package/dist/core/add/add-conflict-handler.js.map +1 -1
  42. package/dist/core/add/add-pipeline.js +12 -10
  43. package/dist/core/add/add-pipeline.js.map +1 -1
  44. package/dist/core/add/add-to-source-pipeline.js +123 -0
  45. package/dist/core/add/add-to-source-pipeline.js.map +1 -0
  46. package/dist/core/add/package-index-updater.js +77 -78
  47. package/dist/core/add/package-index-updater.js.map +1 -1
  48. package/dist/core/add/platform-path-transformer.js +6 -4
  49. package/dist/core/add/platform-path-transformer.js.map +1 -1
  50. package/dist/core/add/source-collector.js +2 -3
  51. package/dist/core/add/source-collector.js.map +1 -1
  52. package/dist/core/apply/apply-pipeline.js +110 -0
  53. package/dist/core/apply/apply-pipeline.js.map +1 -0
  54. package/dist/core/dependency-resolver.js +263 -21
  55. package/dist/core/dependency-resolver.js.map +1 -1
  56. package/dist/core/discovery/file-discovery.js +1 -2
  57. package/dist/core/discovery/file-discovery.js.map +1 -1
  58. package/dist/core/discovery/platform-files-discovery.js +33 -18
  59. package/dist/core/discovery/platform-files-discovery.js.map +1 -1
  60. package/dist/core/flows/flow-executor.js +974 -0
  61. package/dist/core/flows/flow-executor.js.map +1 -0
  62. package/dist/core/flows/flow-inverter.js +442 -0
  63. package/dist/core/flows/flow-inverter.js.map +1 -0
  64. package/dist/core/flows/flow-key-extractor.js +101 -0
  65. package/dist/core/flows/flow-key-extractor.js.map +1 -0
  66. package/dist/core/flows/flow-key-mapper.js +382 -0
  67. package/dist/core/flows/flow-key-mapper.js.map +1 -0
  68. package/dist/core/flows/flow-transforms.js +632 -0
  69. package/dist/core/flows/flow-transforms.js.map +1 -0
  70. package/dist/core/flows/map-pipeline/context.js +73 -0
  71. package/dist/core/flows/map-pipeline/context.js.map +1 -0
  72. package/dist/core/flows/map-pipeline/index.js +156 -0
  73. package/dist/core/flows/map-pipeline/index.js.map +1 -0
  74. package/dist/core/flows/map-pipeline/operations/copy.js +104 -0
  75. package/dist/core/flows/map-pipeline/operations/copy.js.map +1 -0
  76. package/dist/core/flows/map-pipeline/operations/pipe.js +70 -0
  77. package/dist/core/flows/map-pipeline/operations/pipe.js.map +1 -0
  78. package/dist/core/flows/map-pipeline/operations/rename.js +102 -0
  79. package/dist/core/flows/map-pipeline/operations/rename.js.map +1 -0
  80. package/dist/core/flows/map-pipeline/operations/set.js +50 -0
  81. package/dist/core/flows/map-pipeline/operations/set.js.map +1 -0
  82. package/dist/core/flows/map-pipeline/operations/switch.js +79 -0
  83. package/dist/core/flows/map-pipeline/operations/switch.js.map +1 -0
  84. package/dist/core/flows/map-pipeline/operations/transform.js +543 -0
  85. package/dist/core/flows/map-pipeline/operations/transform.js.map +1 -0
  86. package/dist/core/flows/map-pipeline/operations/unset.js +65 -0
  87. package/dist/core/flows/map-pipeline/operations/unset.js.map +1 -0
  88. package/dist/core/flows/map-pipeline/types.js +8 -0
  89. package/dist/core/flows/map-pipeline/types.js.map +1 -0
  90. package/dist/core/flows/map-pipeline/utils.js +278 -0
  91. package/dist/core/flows/map-pipeline/utils.js.map +1 -0
  92. package/dist/core/flows/platform-converter.js +328 -0
  93. package/dist/core/flows/platform-converter.js.map +1 -0
  94. package/dist/core/flows/source-resolver.js +192 -0
  95. package/dist/core/flows/source-resolver.js.map +1 -0
  96. package/dist/core/flows/toml-domain-transforms.js +23 -0
  97. package/dist/core/flows/toml-domain-transforms.js.map +1 -0
  98. package/dist/core/install/bulk-install-pipeline.js +68 -7
  99. package/dist/core/install/bulk-install-pipeline.js.map +1 -1
  100. package/dist/core/install/canonical-plan.js +3 -3
  101. package/dist/core/install/canonical-plan.js.map +1 -1
  102. package/dist/core/install/dry-run.js +3 -3
  103. package/dist/core/install/dry-run.js.map +1 -1
  104. package/dist/core/install/flow-based-installer.js +1158 -0
  105. package/dist/core/install/flow-based-installer.js.map +1 -0
  106. package/dist/core/install/flow-workspace-tracker.js +111 -0
  107. package/dist/core/install/flow-workspace-tracker.js.map +1 -0
  108. package/dist/core/install/format-detector.js +228 -0
  109. package/dist/core/install/format-detector.js.map +1 -0
  110. package/dist/core/install/git-package-loader.js +20 -0
  111. package/dist/core/install/git-package-loader.js.map +1 -0
  112. package/dist/core/install/install-errors.js +1 -1
  113. package/dist/core/install/install-errors.js.map +1 -1
  114. package/dist/core/install/install-flow.js +34 -14
  115. package/dist/core/install/install-flow.js.map +1 -1
  116. package/dist/core/install/install-pipeline.js +52 -17
  117. package/dist/core/install/install-pipeline.js.map +1 -1
  118. package/dist/core/install/install-reporting.js +26 -8
  119. package/dist/core/install/install-reporting.js.map +1 -1
  120. package/dist/core/install/local-source-resolution.js +103 -0
  121. package/dist/core/install/local-source-resolution.js.map +1 -0
  122. package/dist/core/install/marketplace-handler.js +221 -0
  123. package/dist/core/install/marketplace-handler.js.map +1 -0
  124. package/dist/core/install/path-install-pipeline.js +241 -0
  125. package/dist/core/install/path-install-pipeline.js.map +1 -0
  126. package/dist/core/install/path-package-loader.js +116 -0
  127. package/dist/core/install/path-package-loader.js.map +1 -0
  128. package/dist/core/install/plugin-detector.js +72 -0
  129. package/dist/core/install/plugin-detector.js.map +1 -0
  130. package/dist/core/install/plugin-to-universal-converter.js +218 -0
  131. package/dist/core/install/plugin-to-universal-converter.js.map +1 -0
  132. package/dist/core/install/plugin-transformer.js +191 -0
  133. package/dist/core/install/plugin-transformer.js.map +1 -0
  134. package/dist/core/install/version-selection.js +1 -1
  135. package/dist/core/install/version-selection.js.map +1 -1
  136. package/dist/core/openpackage.js +40 -22
  137. package/dist/core/openpackage.js.map +1 -1
  138. package/dist/core/pack/pack-output.js +62 -0
  139. package/dist/core/pack/pack-output.js.map +1 -0
  140. package/dist/core/pack/pack-pipeline.js +186 -0
  141. package/dist/core/pack/pack-pipeline.js.map +1 -0
  142. package/dist/core/package-context.js +45 -70
  143. package/dist/core/package-context.js.map +1 -1
  144. package/dist/core/package-creation.js +203 -0
  145. package/dist/core/package-creation.js.map +1 -0
  146. package/dist/core/package.js +20 -6
  147. package/dist/core/package.js.map +1 -1
  148. package/dist/core/platforms.js +665 -209
  149. package/dist/core/platforms.js.map +1 -1
  150. package/dist/core/push/push-context.js +1 -1
  151. package/dist/core/push/push-context.js.map +1 -1
  152. package/dist/core/push/push-upload.js +2 -2
  153. package/dist/core/push/push-upload.js.map +1 -1
  154. package/dist/core/registry.js +6 -6
  155. package/dist/core/registry.js.map +1 -1
  156. package/dist/core/remote-pull.js +2 -2
  157. package/dist/core/remote-pull.js.map +1 -1
  158. package/dist/core/remove/removal-collector.js +52 -0
  159. package/dist/core/remove/removal-collector.js.map +1 -0
  160. package/dist/core/remove/removal-confirmation.js +39 -0
  161. package/dist/core/remove/removal-confirmation.js.map +1 -0
  162. package/dist/core/remove/remove-from-source-pipeline.js +173 -0
  163. package/dist/core/remove/remove-from-source-pipeline.js.map +1 -0
  164. package/dist/core/save/constants.js +3 -3
  165. package/dist/core/save/constants.js.map +1 -1
  166. package/dist/core/save/flow-based-saver.js +270 -0
  167. package/dist/core/save/flow-based-saver.js.map +1 -0
  168. package/dist/core/save/name-resolution.js +1 -1
  169. package/dist/core/save/name-resolution.js.map +1 -1
  170. package/dist/core/save/package-yml-generator.js +4 -5
  171. package/dist/core/save/package-yml-generator.js.map +1 -1
  172. package/dist/core/save/save-candidate-builder.js +215 -0
  173. package/dist/core/save/save-candidate-builder.js.map +1 -0
  174. package/dist/core/save/save-candidate-loader.js +12 -11
  175. package/dist/core/save/save-candidate-loader.js.map +1 -1
  176. package/dist/core/save/save-conflict-analyzer.js +150 -0
  177. package/dist/core/save/save-conflict-analyzer.js.map +1 -0
  178. package/dist/core/save/save-conflict-resolution.js +28 -14
  179. package/dist/core/save/save-conflict-resolution.js.map +1 -1
  180. package/dist/core/save/save-conflict-resolver.js +31 -275
  181. package/dist/core/save/save-conflict-resolver.js.map +1 -1
  182. package/dist/core/save/save-group-builder.js +52 -0
  183. package/dist/core/save/save-group-builder.js.map +1 -0
  184. package/dist/core/save/save-interactive-resolver.js +190 -0
  185. package/dist/core/save/save-interactive-resolver.js.map +1 -0
  186. package/dist/core/save/save-pipeline.js +58 -34
  187. package/dist/core/save/save-pipeline.js.map +1 -1
  188. package/dist/core/save/save-platform-handler.js +53 -0
  189. package/dist/core/save/save-platform-handler.js.map +1 -0
  190. package/dist/core/save/save-resolution-executor.js +145 -0
  191. package/dist/core/save/save-resolution-executor.js.map +1 -0
  192. package/dist/core/save/save-result-reporter.js +167 -0
  193. package/dist/core/save/save-result-reporter.js.map +1 -0
  194. package/dist/core/save/save-to-source-pipeline.js +154 -0
  195. package/dist/core/save/save-to-source-pipeline.js.map +1 -0
  196. package/dist/core/save/save-versioning.js +4 -4
  197. package/dist/core/save/save-versioning.js.map +1 -1
  198. package/dist/core/save/save-write-coordinator.js +204 -0
  199. package/dist/core/save/save-write-coordinator.js.map +1 -0
  200. package/dist/core/save/save-yml-resolution.js +28 -216
  201. package/dist/core/save/save-yml-resolution.js.map +1 -1
  202. package/dist/core/save/workspace-rename.js +7 -8
  203. package/dist/core/save/workspace-rename.js.map +1 -1
  204. package/dist/core/set/set-output.js +72 -0
  205. package/dist/core/set/set-output.js.map +1 -0
  206. package/dist/core/set/set-pipeline.js +361 -0
  207. package/dist/core/set/set-pipeline.js.map +1 -0
  208. package/dist/core/set/set-types.js +5 -0
  209. package/dist/core/set/set-types.js.map +1 -0
  210. package/dist/core/show/package-resolver.js +257 -0
  211. package/dist/core/show/package-resolver.js.map +1 -0
  212. package/dist/core/show/scope-discovery.js +165 -0
  213. package/dist/core/show/scope-discovery.js.map +1 -0
  214. package/dist/core/show/show-output.js +168 -0
  215. package/dist/core/show/show-output.js.map +1 -0
  216. package/dist/core/show/show-pipeline.js +113 -0
  217. package/dist/core/show/show-pipeline.js.map +1 -0
  218. package/dist/core/show/show-types.js +5 -0
  219. package/dist/core/show/show-types.js.map +1 -0
  220. package/dist/core/source-resolution/dependency-graph.js +104 -0
  221. package/dist/core/source-resolution/dependency-graph.js.map +1 -0
  222. package/dist/core/source-resolution/resolve-mutable-source.js +109 -0
  223. package/dist/core/source-resolution/resolve-mutable-source.js.map +1 -0
  224. package/dist/core/source-resolution/resolve-package-source.js +29 -0
  225. package/dist/core/source-resolution/resolve-package-source.js.map +1 -0
  226. package/dist/core/source-resolution/resolve-registry-version.js +35 -0
  227. package/dist/core/source-resolution/resolve-registry-version.js.map +1 -0
  228. package/dist/core/source-resolution/types.js.map +1 -0
  229. package/dist/core/status/status-file-discovery.js +23 -12
  230. package/dist/core/status/status-file-discovery.js.map +1 -1
  231. package/dist/core/status/status-pipeline.js +134 -0
  232. package/dist/core/status/status-pipeline.js.map +1 -0
  233. package/dist/core/sync/platform-sync-summary.js +27 -0
  234. package/dist/core/sync/platform-sync-summary.js.map +1 -0
  235. package/dist/core/uninstall/flow-aware-uninstaller.js +189 -0
  236. package/dist/core/uninstall/flow-aware-uninstaller.js.map +1 -0
  237. package/dist/core/uninstall/uninstall-file-discovery.js +11 -6
  238. package/dist/core/uninstall/uninstall-file-discovery.js.map +1 -1
  239. package/dist/core/uninstall/uninstall-pipeline.js +141 -0
  240. package/dist/core/uninstall/uninstall-pipeline.js.map +1 -0
  241. package/dist/core/universal-patterns.js +64 -0
  242. package/dist/core/universal-patterns.js.map +1 -0
  243. package/dist/index.js +99 -6
  244. package/dist/index.js.map +1 -1
  245. package/dist/types/flows.js +8 -0
  246. package/dist/types/flows.js.map +1 -0
  247. package/dist/types/index.js +3 -0
  248. package/dist/types/index.js.map +1 -1
  249. package/dist/types/platform-flows.js +8 -0
  250. package/dist/types/platform-flows.js.map +1 -0
  251. package/dist/types/workspace-index.js +6 -0
  252. package/dist/types/workspace-index.js.map +1 -0
  253. package/dist/utils/custom-path-resolution.js +160 -0
  254. package/dist/utils/custom-path-resolution.js.map +1 -0
  255. package/dist/utils/dependency-coverage.js +1 -1
  256. package/dist/utils/dependency-coverage.js.map +1 -1
  257. package/dist/utils/file-processing.js +1 -1
  258. package/dist/utils/flow-index-installer.js +209 -0
  259. package/dist/utils/flow-index-installer.js.map +1 -0
  260. package/dist/utils/formatters.js +47 -1
  261. package/dist/utils/formatters.js.map +1 -1
  262. package/dist/utils/fs.js +17 -0
  263. package/dist/utils/fs.js.map +1 -1
  264. package/dist/utils/git-clone-registry.js +88 -0
  265. package/dist/utils/git-clone-registry.js.map +1 -0
  266. package/dist/utils/git-clone.js +69 -0
  267. package/dist/utils/git-clone.js.map +1 -0
  268. package/dist/utils/git-spec.js +96 -0
  269. package/dist/utils/git-spec.js.map +1 -0
  270. package/dist/utils/http-client.js +7 -0
  271. package/dist/utils/http-client.js.map +1 -1
  272. package/dist/utils/index-based-installer.js +356 -163
  273. package/dist/utils/index-based-installer.js.map +1 -1
  274. package/dist/utils/install-conflict-handler.js +2 -2
  275. package/dist/utils/install-conflict-handler.js.map +1 -1
  276. package/dist/utils/install-file-discovery.js +18 -13
  277. package/dist/utils/install-file-discovery.js.map +1 -1
  278. package/dist/utils/install-helpers.js +43 -20
  279. package/dist/utils/install-helpers.js.map +1 -1
  280. package/dist/utils/jsonc.js +23 -1
  281. package/dist/utils/jsonc.js.map +1 -1
  282. package/dist/utils/manifest-paths.js +1 -1
  283. package/dist/utils/manifest-paths.js.map +1 -1
  284. package/dist/utils/markdown-frontmatter.js +46 -0
  285. package/dist/utils/markdown-frontmatter.js.map +1 -1
  286. package/dist/utils/package-copy.js +5 -103
  287. package/dist/utils/package-copy.js.map +1 -1
  288. package/dist/utils/package-filters.js +9 -105
  289. package/dist/utils/package-filters.js.map +1 -1
  290. package/dist/utils/package-index-yml.js +27 -6
  291. package/dist/utils/package-index-yml.js.map +1 -1
  292. package/dist/utils/package-input.js +98 -0
  293. package/dist/utils/package-input.js.map +1 -0
  294. package/dist/utils/package-management.js +80 -28
  295. package/dist/utils/package-management.js.map +1 -1
  296. package/dist/utils/package-name-resolution.js +327 -0
  297. package/dist/utils/package-name-resolution.js.map +1 -0
  298. package/dist/utils/package-name.js +18 -16
  299. package/dist/utils/package-name.js.map +1 -1
  300. package/dist/utils/package-versioning.js +2 -33
  301. package/dist/utils/package-versioning.js.map +1 -1
  302. package/dist/utils/package-yml.js +19 -28
  303. package/dist/utils/package-yml.js.map +1 -1
  304. package/dist/utils/path-resolution.js +102 -0
  305. package/dist/utils/path-resolution.js.map +1 -0
  306. package/dist/utils/paths.js +6 -6
  307. package/dist/utils/paths.js.map +1 -1
  308. package/dist/utils/platform-file.js +36 -24
  309. package/dist/utils/platform-file.js.map +1 -1
  310. package/dist/utils/platform-mapper.js +222 -68
  311. package/dist/utils/platform-mapper.js.map +1 -1
  312. package/dist/utils/platform-root-files.js +44 -0
  313. package/dist/utils/platform-root-files.js.map +1 -0
  314. package/dist/utils/platform-utils.js +35 -54
  315. package/dist/utils/platform-utils.js.map +1 -1
  316. package/dist/utils/platform-yaml-merge.js +20 -140
  317. package/dist/utils/platform-yaml-merge.js.map +1 -1
  318. package/dist/utils/prompts.js +92 -7
  319. package/dist/utils/prompts.js.map +1 -1
  320. package/dist/utils/registry-entry-filter.js +50 -27
  321. package/dist/utils/registry-entry-filter.js.map +1 -1
  322. package/dist/utils/registry-paths.js +5 -4
  323. package/dist/utils/registry-paths.js.map +1 -1
  324. package/dist/utils/scope-resolution.js +156 -0
  325. package/dist/utils/scope-resolution.js.map +1 -0
  326. package/dist/utils/source-mutability.js +15 -0
  327. package/dist/utils/source-mutability.js.map +1 -0
  328. package/dist/utils/tarball.js +29 -4
  329. package/dist/utils/tarball.js.map +1 -1
  330. package/dist/utils/version-ranges.js +1 -32
  331. package/dist/utils/version-ranges.js.map +1 -1
  332. package/dist/utils/workspace-index-helpers.js +28 -0
  333. package/dist/utils/workspace-index-helpers.js.map +1 -0
  334. package/dist/utils/workspace-index-ownership.js +100 -0
  335. package/dist/utils/workspace-index-ownership.js.map +1 -0
  336. package/dist/utils/workspace-index-yml.js +173 -0
  337. package/dist/utils/workspace-index-yml.js.map +1 -0
  338. package/examples/custom-subdirs-platform.jsonc +157 -0
  339. package/package.json +7 -2
  340. package/platforms.jsonc +531 -84
  341. package/schemas/map-pipeline-v1.json +256 -0
  342. package/schemas/platforms-v1.json +400 -0
  343. package/specs/README.md +88 -0
  344. package/specs/add/README.md +166 -0
  345. package/specs/agents-claude.md +570 -0
  346. package/specs/agents-opencode.md +622 -0
  347. package/specs/apply/README.md +21 -0
  348. package/specs/apply/apply-behavior.md +58 -0
  349. package/specs/apply/apply-command.md +51 -0
  350. package/specs/apply/conflicts.md +41 -0
  351. package/specs/apply/index-effects.md +81 -0
  352. package/specs/architecture.md +107 -0
  353. package/specs/auth/README.md +17 -0
  354. package/specs/auth/auth-http-contract.md +25 -0
  355. package/specs/auth/cli/credentials.md +39 -0
  356. package/specs/auth/cli/login.md +32 -0
  357. package/specs/auth/cli/logout.md +16 -0
  358. package/specs/claude-mcp.md +1065 -0
  359. package/specs/claude-plugins-marketplace.md +363 -0
  360. package/specs/claude-plugins.md +413 -0
  361. package/specs/cli-options.md +52 -0
  362. package/specs/codex-mcp.md +114 -0
  363. package/specs/commands-overview.md +175 -0
  364. package/specs/directory-layout.md +95 -0
  365. package/specs/install/README.md +12 -4
  366. package/specs/install/git-sources.md +230 -0
  367. package/specs/install/install-behavior.md +483 -73
  368. package/specs/install/package-yml-canonical.md +67 -35
  369. package/specs/install/version-resolution.md +69 -115
  370. package/specs/new/README.md +769 -0
  371. package/specs/new/SUMMARY.md +310 -0
  372. package/specs/new/scope-behavior.md +793 -0
  373. package/specs/pack/README.md +77 -0
  374. package/specs/pack/package-name-resolution.md +330 -0
  375. package/specs/package/README.md +18 -17
  376. package/specs/package/nested-packages-and-parent-packages.md +32 -31
  377. package/specs/package/package-index-yml.md +95 -101
  378. package/specs/package/package-root-layout.md +64 -46
  379. package/specs/package/registry-payload-and-copy.md +50 -44
  380. package/specs/package/universal-content.md +33 -56
  381. package/specs/package-sources.md +248 -0
  382. package/specs/platforms/README.md +52 -0
  383. package/specs/platforms/configuration.md +571 -0
  384. package/specs/platforms/detection.md +552 -0
  385. package/specs/platforms/directory-layout.md +599 -0
  386. package/specs/platforms/examples.md +1146 -0
  387. package/specs/platforms/flow-reference.md +1240 -0
  388. package/specs/platforms/flows.md +1488 -0
  389. package/specs/platforms/map-pipeline.md +801 -0
  390. package/specs/platforms/overview.md +349 -0
  391. package/specs/platforms/specification.md +700 -0
  392. package/specs/platforms/troubleshooting.md +697 -0
  393. package/specs/platforms/universal-converter.md +520 -0
  394. package/specs/push/README.md +1 -0
  395. package/specs/push/push-behavior.md +11 -3
  396. package/specs/push/push-remote-upload.md +1 -1
  397. package/specs/push/push-scoping.md +1 -1
  398. package/specs/push/push-version-selection.md +1 -1
  399. package/specs/registry.md +111 -0
  400. package/specs/remove/README.md +257 -0
  401. package/specs/save/README.md +21 -17
  402. package/specs/save/save-conflict-resolution.md +205 -83
  403. package/specs/save/save-file-discovery.md +6 -4
  404. package/specs/save/save-frontmatter-overrides.md +11 -15
  405. package/specs/save/save-modes-inputs.md +9 -39
  406. package/specs/save/save-naming-scoping.md +4 -4
  407. package/specs/save/save-package-detection.md +13 -13
  408. package/specs/save/save-registry-sync.md +16 -106
  409. package/specs/save/save-versioning.md +80 -0
  410. package/specs/scope-management.md +92 -0
  411. package/specs/set/README.md +520 -0
  412. package/specs/set/set-behavior.md +563 -0
  413. package/specs/show/README.md +483 -0
  414. package/specs/show/show-remote.md +494 -0
  415. package/specs/status/README.md +38 -0
  416. package/specs/uninstall/README.md +231 -0
  417. package/dist/commands/duplicate.js +0 -69
  418. package/dist/commands/duplicate.js.map +0 -1
  419. package/dist/commands/init.js +0 -117
  420. package/dist/commands/init.js.map +0 -1
  421. package/dist/commands/prune.js +0 -357
  422. package/dist/commands/prune.js.map +0 -1
  423. package/dist/commands/tui.js +0 -61
  424. package/dist/commands/tui.js.map +0 -1
  425. package/dist/core/install/index.js +0 -3
  426. package/dist/core/install/index.js.map +0 -1
  427. package/dist/core/push/push-single-file.js +0 -56
  428. package/dist/core/push/push-single-file.js.map +0 -1
  429. package/dist/core/save/package-detection.js +0 -147
  430. package/dist/core/save/package-detection.js.map +0 -1
  431. package/dist/core/save/save-single-file.js +0 -124
  432. package/dist/core/save/save-single-file.js.map +0 -1
  433. package/dist/core/token-store.js +0 -73
  434. package/dist/core/token-store.js.map +0 -1
  435. package/dist/tui/app.js +0 -95
  436. package/dist/tui/app.js.map +0 -1
  437. package/dist/tui/components/package-list.js +0 -73
  438. package/dist/tui/components/package-list.js.map +0 -1
  439. package/dist/tui/controller.js +0 -365
  440. package/dist/tui/controller.js.map +0 -1
  441. package/dist/tui/index.js +0 -12
  442. package/dist/tui/index.js.map +0 -1
  443. package/dist/tui/services/file-index.js +0 -64
  444. package/dist/tui/services/file-index.js.map +0 -1
  445. package/dist/tui/services/packages.js +0 -18
  446. package/dist/tui/services/packages.js.map +0 -1
  447. package/dist/tui/services/save.js +0 -21
  448. package/dist/tui/services/save.js.map +0 -1
  449. package/dist/tui/state/app-state.js +0 -15
  450. package/dist/tui/state/app-state.js.map +0 -1
  451. package/dist/tui/state.js +0 -17
  452. package/dist/tui/state.js.map +0 -1
  453. package/dist/tui/types.js.map +0 -1
  454. package/dist/tui/views/add-file-modal.js +0 -129
  455. package/dist/tui/views/add-file-modal.js.map +0 -1
  456. package/dist/tui/views/file-preview.js +0 -44
  457. package/dist/tui/views/file-preview.js.map +0 -1
  458. package/dist/tui/views/list-packages.js +0 -73
  459. package/dist/tui/views/list-packages.js.map +0 -1
  460. package/dist/tui/views/main-menu.js +0 -29
  461. package/dist/tui/views/main-menu.js.map +0 -1
  462. package/dist/tui/views/manage-view.js +0 -81
  463. package/dist/tui/views/manage-view.js.map +0 -1
  464. package/dist/tui/views/package-hub.js +0 -120
  465. package/dist/tui/views/package-hub.js.map +0 -1
  466. package/dist/tui/views/placeholder.js +0 -24
  467. package/dist/tui/views/placeholder.js.map +0 -1
  468. package/dist/utils/bun-bootstrap.js +0 -72
  469. package/dist/utils/bun-bootstrap.js.map +0 -1
  470. package/dist/utils/entity-id.js +0 -19
  471. package/dist/utils/entity-id.js.map +0 -1
  472. package/dist/utils/package-local-files.js +0 -5
  473. package/dist/utils/package-local-files.js.map +0 -1
  474. package/dist/utils/path-matching.js +0 -74
  475. package/dist/utils/path-matching.js.map +0 -1
  476. package/dist/utils/root-file-operations.js +0 -39
  477. package/dist/utils/root-file-operations.js.map +0 -1
  478. package/dist/utils/root-file-transformer.js +0 -27
  479. package/dist/utils/root-file-transformer.js.map +0 -1
  480. package/dist/utils/yaml-frontmatter.js +0 -25
  481. package/dist/utils/yaml-frontmatter.js.map +0 -1
  482. package/specs/auth/auth-device-flow.md +0 -70
  483. package/specs/login/login-device-flow.md +0 -70
  484. package/specs/platforms.md +0 -193
  485. package/specs/save-pack-versioning.md +0 -224
  486. package/specs/save-pack.md +0 -68
  487. /package/dist/{tui → core/source-resolution}/types.js +0 -0
@@ -0,0 +1,361 @@
1
+ /**
2
+ * @fileoverview Main pipeline for the set command
3
+ *
4
+ * Orchestrates package resolution, manifest updates, and display.
5
+ */
6
+ import path from 'path';
7
+ import semver from 'semver';
8
+ import { FILE_PATTERNS } from '../../constants/index.js';
9
+ import { parsePackageYml, writePackageYml } from '../../utils/package-yml.js';
10
+ import { exists } from '../../utils/fs.js';
11
+ import { logger } from '../../utils/logger.js';
12
+ import { normalizePackageName, validatePackageName } from '../../utils/package-name.js';
13
+ import { ValidationError, UserCancellationError } from '../../utils/errors.js';
14
+ import { resolveMutableSource } from '../source-resolution/resolve-mutable-source.js';
15
+ import { promptConfirmation, safePrompts } from '../../utils/prompts.js';
16
+ import { displayConfigChanges, displaySetSuccess, displayCurrentConfig, displayNoChanges } from './set-output.js';
17
+ /**
18
+ * Resolve package source for set operation
19
+ * Priority: provided package name → CWD package
20
+ */
21
+ async function resolvePackageForSet(cwd, packageInput) {
22
+ // If package name provided, resolve mutable source
23
+ if (packageInput) {
24
+ const resolved = await resolveMutableSource({
25
+ cwd,
26
+ packageName: packageInput
27
+ });
28
+ const sourceType = resolved.absolutePath.includes('.openpackage/packages')
29
+ ? (resolved.absolutePath.includes(cwd) ? 'workspace' : 'global')
30
+ : 'cwd';
31
+ return {
32
+ packagePath: resolved.absolutePath,
33
+ packageName: resolved.packageName,
34
+ sourceType
35
+ };
36
+ }
37
+ // No package name - check CWD
38
+ const manifestPath = path.join(cwd, FILE_PATTERNS.OPENPACKAGE_YML);
39
+ if (!(await exists(manifestPath))) {
40
+ throw new Error('No openpackage.yml found in current directory.\n' +
41
+ 'Either specify a package name or run from a package root:\n' +
42
+ ' opkg set <package-name> [options]\n' +
43
+ ' opkg set [options] # When in package root');
44
+ }
45
+ const manifest = await parsePackageYml(manifestPath);
46
+ return {
47
+ packagePath: cwd,
48
+ packageName: manifest.name,
49
+ sourceType: 'cwd'
50
+ };
51
+ }
52
+ /**
53
+ * Validate field values before applying
54
+ */
55
+ function validateUpdates(updates) {
56
+ // Validate name
57
+ if (updates.name !== undefined) {
58
+ validatePackageName(updates.name);
59
+ }
60
+ // Validate version
61
+ if (updates.version !== undefined) {
62
+ if (!semver.valid(updates.version)) {
63
+ throw new ValidationError(`Invalid version format: "${updates.version}"\n` +
64
+ `Version must be valid semver (e.g., 1.0.0, 2.1.3-beta.1)`);
65
+ }
66
+ }
67
+ // Validate homepage URL format (basic check)
68
+ if (updates.homepage !== undefined && updates.homepage.trim().length > 0) {
69
+ try {
70
+ new URL(updates.homepage);
71
+ }
72
+ catch {
73
+ throw new ValidationError(`Invalid homepage URL: "${updates.homepage}"\n` +
74
+ `Must be a valid URL (e.g., https://example.com)`);
75
+ }
76
+ }
77
+ }
78
+ /**
79
+ * Extract updates from CLI options
80
+ */
81
+ function extractUpdatesFromOptions(options) {
82
+ const updates = {};
83
+ if (options.name !== undefined) {
84
+ updates.name = normalizePackageName(options.name);
85
+ }
86
+ if (options.ver !== undefined) {
87
+ updates.version = options.ver;
88
+ }
89
+ if (options.description !== undefined) {
90
+ updates.description = options.description;
91
+ }
92
+ if (options.keywords !== undefined) {
93
+ // Parse space-separated keywords into array
94
+ updates.keywords = options.keywords
95
+ .trim()
96
+ .split(/\s+/)
97
+ .filter(k => k.length > 0);
98
+ }
99
+ if (options.author !== undefined) {
100
+ updates.author = options.author;
101
+ }
102
+ if (options.license !== undefined) {
103
+ updates.license = options.license;
104
+ }
105
+ if (options.homepage !== undefined) {
106
+ updates.homepage = options.homepage;
107
+ }
108
+ if (options.private !== undefined) {
109
+ updates.private = options.private;
110
+ }
111
+ return updates;
112
+ }
113
+ /**
114
+ * Prompt user for updates interactively
115
+ */
116
+ async function promptPackageUpdates(currentConfig) {
117
+ displayCurrentConfig(currentConfig, '');
118
+ const response = await safePrompts([
119
+ {
120
+ type: 'text',
121
+ name: 'name',
122
+ message: 'Package name:',
123
+ initial: currentConfig.name,
124
+ validate: (value) => {
125
+ if (!value)
126
+ return 'Name is required';
127
+ try {
128
+ validatePackageName(value);
129
+ }
130
+ catch (error) {
131
+ const message = error.message;
132
+ return message.replace(/^Validation error:\s*/, '');
133
+ }
134
+ return true;
135
+ }
136
+ },
137
+ {
138
+ type: 'text',
139
+ name: 'version',
140
+ message: 'Version:',
141
+ initial: currentConfig.version || '',
142
+ validate: (value) => {
143
+ if (!value)
144
+ return true; // Allow empty (will keep current)
145
+ if (!semver.valid(value)) {
146
+ return 'Version must be valid semver (e.g., 1.0.0)';
147
+ }
148
+ return true;
149
+ }
150
+ },
151
+ {
152
+ type: 'text',
153
+ name: 'description',
154
+ message: 'Description:',
155
+ initial: currentConfig.description || ''
156
+ },
157
+ {
158
+ type: 'text',
159
+ name: 'keywords',
160
+ message: 'Keywords (space-separated):',
161
+ initial: currentConfig.keywords ? currentConfig.keywords.join(' ') : ''
162
+ },
163
+ {
164
+ type: 'text',
165
+ name: 'author',
166
+ message: 'Author:',
167
+ initial: currentConfig.author || ''
168
+ },
169
+ {
170
+ type: 'text',
171
+ name: 'license',
172
+ message: 'License:',
173
+ initial: currentConfig.license || ''
174
+ },
175
+ {
176
+ type: 'text',
177
+ name: 'homepage',
178
+ message: 'Homepage:',
179
+ initial: currentConfig.homepage || '',
180
+ validate: (value) => {
181
+ if (!value || value.trim().length === 0)
182
+ return true;
183
+ try {
184
+ new URL(value);
185
+ return true;
186
+ }
187
+ catch {
188
+ return 'Must be a valid URL';
189
+ }
190
+ }
191
+ },
192
+ {
193
+ type: 'confirm',
194
+ name: 'private',
195
+ message: 'Private package?',
196
+ initial: currentConfig.private || false
197
+ }
198
+ ]);
199
+ // Build updates object only for changed fields
200
+ const updates = {};
201
+ // Normalize name for comparison
202
+ const normalizedName = normalizePackageName(response.name);
203
+ if (normalizedName !== currentConfig.name) {
204
+ updates.name = normalizedName;
205
+ }
206
+ if (response.version && response.version !== currentConfig.version) {
207
+ updates.version = response.version;
208
+ }
209
+ if (response.description !== (currentConfig.description || '')) {
210
+ updates.description = response.description || undefined;
211
+ }
212
+ // Parse and compare keywords
213
+ const newKeywords = response.keywords
214
+ ? response.keywords.trim().split(/\s+/).filter((k) => k.length > 0)
215
+ : [];
216
+ const currentKeywords = currentConfig.keywords || [];
217
+ if (JSON.stringify(newKeywords) !== JSON.stringify(currentKeywords)) {
218
+ updates.keywords = newKeywords.length > 0 ? newKeywords : undefined;
219
+ }
220
+ if (response.author !== (currentConfig.author || '')) {
221
+ updates.author = response.author || undefined;
222
+ }
223
+ if (response.license !== (currentConfig.license || '')) {
224
+ updates.license = response.license || undefined;
225
+ }
226
+ if (response.homepage !== (currentConfig.homepage || '')) {
227
+ updates.homepage = response.homepage || undefined;
228
+ }
229
+ if (response.private !== (currentConfig.private || false)) {
230
+ updates.private = response.private;
231
+ }
232
+ return updates;
233
+ }
234
+ /**
235
+ * Detect changes between current config and updates
236
+ */
237
+ function detectChanges(currentConfig, updates) {
238
+ const changes = [];
239
+ for (const [field, newValue] of Object.entries(updates)) {
240
+ const oldValue = currentConfig[field];
241
+ // Deep comparison for arrays
242
+ if (Array.isArray(newValue) && Array.isArray(oldValue)) {
243
+ if (JSON.stringify(oldValue) !== JSON.stringify(newValue)) {
244
+ changes.push({ field, oldValue, newValue });
245
+ }
246
+ }
247
+ else if (oldValue !== newValue) {
248
+ changes.push({ field, oldValue, newValue });
249
+ }
250
+ }
251
+ return changes;
252
+ }
253
+ /**
254
+ * Apply updates to manifest configuration
255
+ */
256
+ function applyUpdates(currentConfig, updates) {
257
+ return {
258
+ ...currentConfig,
259
+ ...updates
260
+ };
261
+ }
262
+ /**
263
+ * Run the set pipeline
264
+ */
265
+ export async function runSetPipeline(packageInput, options = {}) {
266
+ const cwd = process.cwd();
267
+ try {
268
+ // Step 1: Validate inputs
269
+ const hasFieldFlags = Boolean(options.ver ||
270
+ options.name ||
271
+ options.description !== undefined ||
272
+ options.keywords !== undefined ||
273
+ options.author !== undefined ||
274
+ options.license !== undefined ||
275
+ options.homepage !== undefined ||
276
+ options.private !== undefined);
277
+ const isInteractive = !options.nonInteractive && !hasFieldFlags;
278
+ if (options.nonInteractive && !hasFieldFlags) {
279
+ throw new ValidationError('Non-interactive mode requires at least one field flag.\n' +
280
+ 'Available flags: --ver, --name, --description, --keywords, --author, --license, --homepage, --private\n' +
281
+ 'Example: opkg set my-package --ver 1.0.0 --non-interactive');
282
+ }
283
+ logger.debug('Starting set pipeline', { packageInput, options, isInteractive });
284
+ // Step 2: Resolve package source
285
+ const resolved = await resolvePackageForSet(cwd, packageInput);
286
+ logger.info('Package resolved for set', {
287
+ packageName: resolved.packageName,
288
+ packagePath: resolved.packagePath,
289
+ sourceType: resolved.sourceType
290
+ });
291
+ // Step 3: Load current manifest
292
+ const manifestPath = path.join(resolved.packagePath, FILE_PATTERNS.OPENPACKAGE_YML);
293
+ const currentConfig = await parsePackageYml(manifestPath);
294
+ // Step 4: Determine updates
295
+ let updates;
296
+ if (isInteractive) {
297
+ updates = await promptPackageUpdates(currentConfig);
298
+ }
299
+ else {
300
+ updates = extractUpdatesFromOptions(options);
301
+ }
302
+ // Step 5: Detect changes
303
+ const changes = detectChanges(currentConfig, updates);
304
+ if (changes.length === 0) {
305
+ displayNoChanges(resolved.packageName);
306
+ return {
307
+ success: true,
308
+ data: {
309
+ packageName: resolved.packageName,
310
+ packagePath: resolved.packagePath,
311
+ sourceType: resolved.sourceType,
312
+ updatedFields: [],
313
+ manifestPath
314
+ }
315
+ };
316
+ }
317
+ // Step 6: Validate updates
318
+ validateUpdates(updates);
319
+ // Step 7: Show changes and confirm (unless force mode)
320
+ displayConfigChanges(changes);
321
+ if (!options.force && isInteractive) {
322
+ const confirmed = await promptConfirmation('Apply these changes?', true);
323
+ if (!confirmed) {
324
+ throw new UserCancellationError();
325
+ }
326
+ }
327
+ // Step 8: Apply updates
328
+ const updatedConfig = applyUpdates(currentConfig, updates);
329
+ // Step 9: Write manifest
330
+ await writePackageYml(manifestPath, updatedConfig);
331
+ logger.info('Manifest updated successfully', {
332
+ packageName: resolved.packageName,
333
+ updatedFields: changes.map(c => c.field)
334
+ });
335
+ // Step 10: Display success
336
+ const result = {
337
+ packageName: resolved.packageName,
338
+ packagePath: resolved.packagePath,
339
+ sourceType: resolved.sourceType,
340
+ updatedFields: changes.map(c => c.field),
341
+ manifestPath
342
+ };
343
+ displaySetSuccess(result, cwd);
344
+ return {
345
+ success: true,
346
+ data: result
347
+ };
348
+ }
349
+ catch (error) {
350
+ if (error instanceof UserCancellationError) {
351
+ throw error;
352
+ }
353
+ const message = error instanceof Error ? error.message : String(error);
354
+ logger.error('Set pipeline failed', { error: message });
355
+ return {
356
+ success: false,
357
+ error: message
358
+ };
359
+ }
360
+ }
361
+ //# sourceMappingURL=set-pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-pipeline.js","sourceRoot":"","sources":["../../../src/core/set/set-pipeline.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,MAAM,MAAM,QAAQ,CAAC;AAG5B,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AAQzB;;;GAGG;AACH,KAAK,UAAU,oBAAoB,CACjC,GAAW,EACX,YAAqB;IAMrB,mDAAmD;IACnD,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC;YAC1C,GAAG;YACH,WAAW,EAAE,YAAY;SAC1B,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YACxE,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAoB,CAAC,CAAC,CAAC,QAAiB,CAAC;YAClF,CAAC,CAAC,KAAc,CAAC;QAEnB,OAAO;YACL,WAAW,EAAE,QAAQ,CAAC,YAAY;YAClC,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,UAAU;SACX,CAAC;IACJ,CAAC;IAED,8BAA8B;IAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IACnE,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CACb,kDAAkD;YAClD,6DAA6D;YAC7D,uCAAuC;YACvC,8CAA8C,CAC/C,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,YAAY,CAAC,CAAC;IAErD,OAAO;QACL,WAAW,EAAE,GAAG;QAChB,WAAW,EAAE,QAAQ,CAAC,IAAI;QAC1B,UAAU,EAAE,KAAK;KAClB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,OAA+B;IACtD,gBAAgB;IAChB,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,mBAAmB;IACnB,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,eAAe,CACvB,4BAA4B,OAAO,CAAC,OAAO,KAAK;gBAChD,0DAA0D,CAC3D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,6CAA6C;IAC7C,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzE,IAAI,CAAC;YACH,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,eAAe,CACvB,0BAA0B,OAAO,CAAC,QAAQ,KAAK;gBAC/C,iDAAiD,CAClD,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,yBAAyB,CAAC,OAA0B;IAC3D,MAAM,OAAO,GAA2B,EAAE,CAAC;IAE3C,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,GAAG,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IAChC,CAAC;IAED,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAC5C,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACnC,4CAA4C;QAC5C,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ;aAChC,IAAI,EAAE;aACN,KAAK,CAAC,KAAK,CAAC;aACZ,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAClC,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACpC,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IACtC,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACpC,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,oBAAoB,CACjC,aAAyB;IAEzB,oBAAoB,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IAExC,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC;QACjC;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,eAAe;YACxB,OAAO,EAAE,aAAa,CAAC,IAAI;YAC3B,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC1B,IAAI,CAAC,KAAK;oBAAE,OAAO,kBAAkB,CAAC;gBACtC,IAAI,CAAC;oBACH,mBAAmB,CAAC,KAAK,CAAC,CAAC;gBAC7B,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,OAAO,GAAI,KAAe,CAAC,OAAO,CAAC;oBACzC,OAAO,OAAO,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;gBACtD,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;SACF;QACD;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE,aAAa,CAAC,OAAO,IAAI,EAAE;YACpC,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC1B,IAAI,CAAC,KAAK;oBAAE,OAAO,IAAI,CAAC,CAAC,kCAAkC;gBAC3D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzB,OAAO,4CAA4C,CAAC;gBACtD,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;SACF;QACD;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,cAAc;YACvB,OAAO,EAAE,aAAa,CAAC,WAAW,IAAI,EAAE;SACzC;QACD;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,6BAA6B;YACtC,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;SACxE;QACD;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE,aAAa,CAAC,MAAM,IAAI,EAAE;SACpC;QACD;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE,aAAa,CAAC,OAAO,IAAI,EAAE;SACrC;QACD;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,WAAW;YACpB,OAAO,EAAE,aAAa,CAAC,QAAQ,IAAI,EAAE;YACrC,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC1B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,IAAI,CAAC;gBACrD,IAAI,CAAC;oBACH,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;oBACf,OAAO,IAAI,CAAC;gBACd,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,qBAAqB,CAAC;gBAC/B,CAAC;YACH,CAAC;SACF;QACD;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,kBAAkB;YAC3B,OAAO,EAAE,aAAa,CAAC,OAAO,IAAI,KAAK;SACxC;KACF,CAAC,CAAC;IAEH,+CAA+C;IAC/C,MAAM,OAAO,GAA2B,EAAE,CAAC;IAE3C,gCAAgC;IAChC,MAAM,cAAc,GAAG,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC3D,IAAI,cAAc,KAAK,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1C,OAAO,CAAC,IAAI,GAAG,cAAc,CAAC;IAChC,CAAC;IAED,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,KAAK,aAAa,CAAC,OAAO,EAAE,CAAC;QACnE,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;IACrC,CAAC;IAED,IAAI,QAAQ,CAAC,WAAW,KAAK,CAAC,aAAa,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,CAAC;QAC/D,OAAO,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,IAAI,SAAS,CAAC;IAC1D,CAAC;IAED,6BAA6B;IAC7B,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ;QACnC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3E,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,eAAe,GAAG,aAAa,CAAC,QAAQ,IAAI,EAAE,CAAC;IACrD,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC;QACpE,OAAO,CAAC,QAAQ,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IACtE,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,aAAa,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;QACrD,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,SAAS,CAAC;IAChD,CAAC;IAED,IAAI,QAAQ,CAAC,OAAO,KAAK,CAAC,aAAa,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;QACvD,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,SAAS,CAAC;IAClD,CAAC;IAED,IAAI,QAAQ,CAAC,QAAQ,KAAK,CAAC,aAAa,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;QACzD,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,IAAI,SAAS,CAAC;IACpD,CAAC;IAED,IAAI,QAAQ,CAAC,OAAO,KAAK,CAAC,aAAa,CAAC,OAAO,IAAI,KAAK,CAAC,EAAE,CAAC;QAC1D,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;IACrC,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CACpB,aAAyB,EACzB,OAA+B;IAE/B,MAAM,OAAO,GAAmB,EAAE,CAAC;IAEnC,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACxD,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAyB,CAAC,CAAC;QAE1D,6BAA6B;QAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvD,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1D,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;aAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CACnB,aAAyB,EACzB,OAA+B;IAE/B,OAAO;QACL,GAAG,aAAa;QAChB,GAAG,OAAO;KACX,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,YAAgC,EAChC,UAA6B,EAAE;IAE/B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,IAAI,CAAC;QACH,0BAA0B;QAC1B,MAAM,aAAa,GAAG,OAAO,CAC3B,OAAO,CAAC,GAAG;YACX,OAAO,CAAC,IAAI;YACZ,OAAO,CAAC,WAAW,KAAK,SAAS;YACjC,OAAO,CAAC,QAAQ,KAAK,SAAS;YAC9B,OAAO,CAAC,MAAM,KAAK,SAAS;YAC5B,OAAO,CAAC,OAAO,KAAK,SAAS;YAC7B,OAAO,CAAC,QAAQ,KAAK,SAAS;YAC9B,OAAO,CAAC,OAAO,KAAK,SAAS,CAC9B,CAAC;QAEF,MAAM,aAAa,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,aAAa,CAAC;QAEhE,IAAI,OAAO,CAAC,cAAc,IAAI,CAAC,aAAa,EAAE,CAAC;YAC7C,MAAM,IAAI,eAAe,CACvB,0DAA0D;gBAC1D,yGAAyG;gBACzG,4DAA4D,CAC7D,CAAC;QACJ,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;QAEhF,iCAAiC;QACjC,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QAE/D,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE;YACtC,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,UAAU,EAAE,QAAQ,CAAC,UAAU;SAChC,CAAC,CAAC;QAEH,gCAAgC;QAChC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;QACpF,MAAM,aAAa,GAAG,MAAM,eAAe,CAAC,YAAY,CAAC,CAAC;QAE1D,4BAA4B;QAC5B,IAAI,OAA+B,CAAC;QAEpC,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,GAAG,MAAM,oBAAoB,CAAC,aAAa,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;QAC/C,CAAC;QAED,yBAAyB;QACzB,MAAM,OAAO,GAAG,aAAa,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAEtD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YACvC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE;oBACJ,WAAW,EAAE,QAAQ,CAAC,WAAW;oBACjC,WAAW,EAAE,QAAQ,CAAC,WAAW;oBACjC,UAAU,EAAE,QAAQ,CAAC,UAAU;oBAC/B,aAAa,EAAE,EAAE;oBACjB,YAAY;iBACb;aACF,CAAC;QACJ,CAAC;QAED,2BAA2B;QAC3B,eAAe,CAAC,OAAO,CAAC,CAAC;QAEzB,uDAAuD;QACvD,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAE9B,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,aAAa,EAAE,CAAC;YACpC,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;YACzE,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,qBAAqB,EAAE,CAAC;YACpC,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,MAAM,aAAa,GAAG,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAE3D,yBAAyB;QACzB,MAAM,eAAe,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QAEnD,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE;YAC3C,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;SACzC,CAAC,CAAC;QAEH,2BAA2B;QAC3B,MAAM,MAAM,GAAsB;YAChC,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;YACxC,YAAY;SACb,CAAC;QAEF,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAE/B,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,MAAM;SACb,CAAC;IAEJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,qBAAqB,EAAE,CAAC;YAC3C,MAAM,KAAK,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAExD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @fileoverview Type definitions for the set command
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=set-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-types.js","sourceRoot":"","sources":["../../../src/core/set/set-types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,257 @@
1
+ /**
2
+ * @fileoverview Package resolution logic for the show command
3
+ *
4
+ * Handles resolving package inputs (names, paths, git URLs, tarballs) to their
5
+ * actual file system locations using unified resolution logic.
6
+ */
7
+ import { logger } from '../../utils/logger.js';
8
+ import { ValidationError } from '../../utils/errors.js';
9
+ import { parsePackageInput } from '../../utils/package-name.js';
10
+ import { classifyPackageInput } from '../../utils/package-input.js';
11
+ import { resolvePackageByName } from '../../utils/package-name-resolution.js';
12
+ import { loadPackageFromGit } from '../install/git-package-loader.js';
13
+ import { isValidPackageDirectory, loadPackageConfig } from '../package-context.js';
14
+ import { discoverPackagesAcrossScopes } from './scope-discovery.js';
15
+ /**
16
+ * Get human-readable label for source type
17
+ */
18
+ function getSourceLabel(sourceType) {
19
+ switch (sourceType) {
20
+ case 'cwd':
21
+ return 'current directory';
22
+ case 'workspace':
23
+ return 'workspace packages';
24
+ case 'global':
25
+ return 'global packages';
26
+ case 'registry':
27
+ return 'local registry';
28
+ case 'path':
29
+ return 'path';
30
+ case 'git':
31
+ return 'git repository';
32
+ case 'tarball':
33
+ return 'tarball';
34
+ default:
35
+ return sourceType;
36
+ }
37
+ }
38
+ /**
39
+ * Determine if a package source is mutable based on path and type
40
+ */
41
+ function determineIfMutable(packagePath, sourceType) {
42
+ // Git sources and tarballs are treated as immutable for show purposes
43
+ if (sourceType === 'git' || sourceType === 'tarball') {
44
+ return false;
45
+ }
46
+ // Check if path is in registry (immutable) or packages (mutable)
47
+ const normalizedPath = packagePath.toLowerCase();
48
+ if (normalizedPath.includes('.openpackage/registry')) {
49
+ return false;
50
+ }
51
+ if (normalizedPath.includes('.openpackage/packages')) {
52
+ return true;
53
+ }
54
+ // CWD, workspace, global, and arbitrary paths are mutable
55
+ return sourceType === 'cwd' || sourceType === 'workspace' || sourceType === 'global' || sourceType === 'path';
56
+ }
57
+ /**
58
+ * Create source information object
59
+ */
60
+ function createSourceInfo(path, type) {
61
+ return {
62
+ type,
63
+ path,
64
+ isMutable: determineIfMutable(path, type),
65
+ label: getSourceLabel(type)
66
+ };
67
+ }
68
+ /**
69
+ * Resolve package from git URL
70
+ */
71
+ async function resolveFromGit(gitUrl, gitRef) {
72
+ logger.debug('Resolving package from git', { gitUrl, gitRef });
73
+ const { sourcePath } = await loadPackageFromGit({
74
+ url: gitUrl,
75
+ ref: gitRef
76
+ });
77
+ if (!await isValidPackageDirectory(sourcePath)) {
78
+ throw new ValidationError(`Git repository does not contain a valid OpenPackage (missing openpackage.yml)`);
79
+ }
80
+ const manifest = await loadPackageConfig(sourcePath);
81
+ if (!manifest) {
82
+ throw new ValidationError(`Failed to load package manifest from git source`);
83
+ }
84
+ return {
85
+ path: sourcePath,
86
+ name: manifest.name,
87
+ version: manifest.version || '',
88
+ source: createSourceInfo(sourcePath, 'git')
89
+ };
90
+ }
91
+ /**
92
+ * Resolve package from directory or tarball path
93
+ */
94
+ async function resolveFromPath(packagePath, sourceType, cwd) {
95
+ logger.debug('Resolving package from path', { packagePath, sourceType });
96
+ if (sourceType === 'directory' && !await isValidPackageDirectory(packagePath)) {
97
+ throw new ValidationError(`Path '${packagePath}' is not a valid OpenPackage directory (missing openpackage.yml)`);
98
+ }
99
+ const manifest = await loadPackageConfig(packagePath);
100
+ if (!manifest) {
101
+ throw new ValidationError(`Failed to load package manifest from path: ${packagePath}`);
102
+ }
103
+ // Determine specific source type based on path
104
+ let specificType = 'path';
105
+ const normalizedPath = packagePath.toLowerCase();
106
+ const normalizedCwd = cwd.toLowerCase();
107
+ if (normalizedPath.includes('.openpackage/packages')) {
108
+ specificType = normalizedPath.includes(normalizedCwd) ? 'workspace' : 'global';
109
+ }
110
+ else if (normalizedPath.includes('.openpackage/registry')) {
111
+ specificType = 'registry';
112
+ }
113
+ else if (normalizedPath === normalizedCwd) {
114
+ specificType = 'cwd';
115
+ }
116
+ else if (sourceType === 'tarball') {
117
+ specificType = 'tarball';
118
+ }
119
+ const result = {
120
+ path: packagePath,
121
+ name: manifest.name,
122
+ version: manifest.version || '',
123
+ source: createSourceInfo(packagePath, specificType)
124
+ };
125
+ // Check for packages in other scopes (for hint display)
126
+ // Only do this for packages in workspace, global, or registry scopes
127
+ if (specificType === 'workspace' || specificType === 'global' || specificType === 'registry') {
128
+ const scopeDiscovery = await discoverPackagesAcrossScopes(manifest.name, cwd);
129
+ if (scopeDiscovery.packagesInScopes.length > 1) {
130
+ // Filter out the currently selected package
131
+ const otherScopes = scopeDiscovery.packagesInScopes
132
+ .filter(pkg => pkg.path !== packagePath)
133
+ .map(pkg => ({
134
+ scope: pkg.scope,
135
+ version: pkg.version,
136
+ path: pkg.path,
137
+ showCommand: pkg.showCommand
138
+ }));
139
+ if (otherScopes.length > 0) {
140
+ result.scopeHintInfo = {
141
+ packageName: manifest.name,
142
+ otherScopes
143
+ };
144
+ logger.debug('Scope hint info added to result', {
145
+ packageName: manifest.name,
146
+ otherScopesCount: otherScopes.length
147
+ });
148
+ }
149
+ }
150
+ }
151
+ return result;
152
+ }
153
+ /**
154
+ * Convert package-name-resolution result to show resolution info
155
+ */
156
+ function convertResolutionInfo(resolutionInfo) {
157
+ return {
158
+ candidates: resolutionInfo.candidates.map((c) => ({
159
+ type: c.type,
160
+ version: c.version,
161
+ path: c.path
162
+ })),
163
+ selected: {
164
+ type: resolutionInfo.selected.type,
165
+ version: resolutionInfo.selected.version,
166
+ path: resolutionInfo.selected.path
167
+ },
168
+ reason: resolutionInfo.reason
169
+ };
170
+ }
171
+ /**
172
+ * Resolve package from name using unified resolution
173
+ */
174
+ async function resolveFromName(name, version, cwd) {
175
+ logger.debug('Resolving package by name', { name, version });
176
+ // Use unified resolution (CWD → Workspace → Global → Registry)
177
+ const resolution = await resolvePackageByName({
178
+ cwd,
179
+ packageName: name,
180
+ checkCwd: true, // Check if CWD is the package
181
+ searchWorkspace: true, // Check workspace packages
182
+ searchGlobal: true, // Check global packages
183
+ searchRegistry: true // Check local registry
184
+ });
185
+ if (!resolution.found || !resolution.path) {
186
+ throw new ValidationError(`Package '${name}' not found locally`);
187
+ }
188
+ // Load manifest to get actual package details
189
+ const manifest = await loadPackageConfig(resolution.path);
190
+ if (!manifest) {
191
+ throw new ValidationError(`Failed to load package manifest for: ${name}`);
192
+ }
193
+ const result = {
194
+ path: resolution.path,
195
+ name: manifest.name,
196
+ version: manifest.version || version || '',
197
+ source: createSourceInfo(resolution.path, resolution.sourceType)
198
+ };
199
+ // Include resolution info if multiple candidates were found
200
+ if (resolution.resolutionInfo && resolution.resolutionInfo.candidates.length > 1) {
201
+ result.resolutionInfo = convertResolutionInfo(resolution.resolutionInfo);
202
+ }
203
+ // Check for packages in other scopes (for hint display)
204
+ const scopeDiscovery = await discoverPackagesAcrossScopes(name, cwd);
205
+ if (scopeDiscovery.packagesInScopes.length > 1) {
206
+ // Filter out the currently selected package
207
+ const otherScopes = scopeDiscovery.packagesInScopes
208
+ .filter(pkg => pkg.path !== resolution.path)
209
+ .map(pkg => ({
210
+ scope: pkg.scope,
211
+ version: pkg.version,
212
+ path: pkg.path,
213
+ showCommand: pkg.showCommand
214
+ }));
215
+ if (otherScopes.length > 0) {
216
+ result.scopeHintInfo = {
217
+ packageName: name,
218
+ otherScopes
219
+ };
220
+ logger.debug('Scope hint info added to result', {
221
+ packageName: name,
222
+ otherScopesCount: otherScopes.length
223
+ });
224
+ }
225
+ }
226
+ return result;
227
+ }
228
+ /**
229
+ * Resolve a package input (name, path, git URL, tarball) to its location
230
+ *
231
+ * This is the main entry point for package resolution in the show command.
232
+ * It handles all input types and uses the appropriate resolution strategy.
233
+ *
234
+ * @param packageInput - User input (package name, path, git URL, etc.)
235
+ * @param cwd - Current working directory
236
+ * @returns Resolved package information
237
+ */
238
+ export async function resolvePackageForShow(packageInput, cwd) {
239
+ logger.debug('Resolving package for show', { packageInput, cwd });
240
+ // Classify the input type
241
+ const classification = await classifyPackageInput(packageInput, cwd);
242
+ switch (classification.type) {
243
+ case 'git':
244
+ return resolveFromGit(classification.gitUrl, classification.gitRef);
245
+ case 'directory':
246
+ case 'tarball':
247
+ return resolveFromPath(classification.resolvedPath, classification.type, cwd);
248
+ case 'registry': {
249
+ // Registry classification means it looks like a package name
250
+ const { name, version } = parsePackageInput(packageInput);
251
+ return resolveFromName(name, version, cwd);
252
+ }
253
+ default:
254
+ throw new ValidationError(`Unknown input type: ${classification.type}`);
255
+ }
256
+ }
257
+ //# sourceMappingURL=package-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-resolver.js","sourceRoot":"","sources":["../../../src/core/show/package-resolver.ts"],"names":[],"mappings":"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"}