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,165 @@
1
+ /**
2
+ * @fileoverview Scope discovery for show command
3
+ *
4
+ * Discovers packages with the same name across different scopes
5
+ * (workspace, global, and registry) and provides hints to users.
6
+ */
7
+ import { join } from 'path';
8
+ import { logger } from '../../utils/logger.js';
9
+ import { normalizePackageName } from '../../utils/package-name.js';
10
+ import { isValidPackageDirectory, loadPackageConfig } from '../package-context.js';
11
+ import { getOpenPackageDirectories, listPackageVersions, getPackageVersionPath } from '../directory.js';
12
+ import { DIR_PATTERNS, OPENPACKAGE_DIRS } from '../../constants/index.js';
13
+ /**
14
+ * Helper to construct scoped package paths (@scope/name)
15
+ */
16
+ function getScopedPackagePath(baseDir, packageName) {
17
+ // Handle scoped packages like @scope/name
18
+ if (packageName.startsWith('@')) {
19
+ const parts = packageName.split('/');
20
+ if (parts.length === 2) {
21
+ return join(baseDir, parts[0], parts[1]);
22
+ }
23
+ }
24
+ return join(baseDir, packageName);
25
+ }
26
+ /**
27
+ * Check workspace for the package
28
+ */
29
+ async function checkWorkspaceScope(cwd, packageName) {
30
+ const normalizedName = normalizePackageName(packageName);
31
+ const workspacePath = getScopedPackagePath(join(cwd, DIR_PATTERNS.OPENPACKAGE, OPENPACKAGE_DIRS.PACKAGES), normalizedName);
32
+ if (!await isValidPackageDirectory(workspacePath)) {
33
+ return null;
34
+ }
35
+ const manifest = await loadPackageConfig(workspacePath);
36
+ if (!manifest) {
37
+ return null;
38
+ }
39
+ logger.debug('Found package in workspace scope', {
40
+ packageName,
41
+ path: workspacePath,
42
+ version: manifest.version
43
+ });
44
+ return {
45
+ scope: 'workspace',
46
+ name: normalizedName,
47
+ version: manifest.version,
48
+ path: workspacePath,
49
+ showCommand: `opkg show ${workspacePath}`
50
+ };
51
+ }
52
+ /**
53
+ * Check global packages for the package
54
+ */
55
+ async function checkGlobalScope(packageName) {
56
+ const normalizedName = normalizePackageName(packageName);
57
+ const dirs = getOpenPackageDirectories();
58
+ const globalPath = getScopedPackagePath(join(dirs.data, OPENPACKAGE_DIRS.PACKAGES), normalizedName);
59
+ if (!await isValidPackageDirectory(globalPath)) {
60
+ return null;
61
+ }
62
+ try {
63
+ const manifest = await loadPackageConfig(globalPath);
64
+ if (!manifest) {
65
+ return null;
66
+ }
67
+ logger.debug('Found package in global scope', {
68
+ packageName,
69
+ path: globalPath,
70
+ version: manifest.version
71
+ });
72
+ return {
73
+ scope: 'global',
74
+ name: normalizedName,
75
+ version: manifest.version,
76
+ path: globalPath,
77
+ showCommand: `opkg show ${globalPath}`
78
+ };
79
+ }
80
+ catch (error) {
81
+ logger.warn('Failed to load global package manifest', { packageName, path: globalPath, error });
82
+ return null;
83
+ }
84
+ }
85
+ /**
86
+ * Check local registry for the package
87
+ */
88
+ async function checkRegistryScope(packageName) {
89
+ const normalizedName = normalizePackageName(packageName);
90
+ try {
91
+ const registryVersions = await listPackageVersions(normalizedName);
92
+ if (registryVersions.length === 0) {
93
+ return null;
94
+ }
95
+ const latestVersion = registryVersions[0]; // Already sorted desc
96
+ const registryPath = getPackageVersionPath(normalizedName, latestVersion);
97
+ logger.debug('Found package in registry scope', {
98
+ packageName,
99
+ path: registryPath,
100
+ version: latestVersion
101
+ });
102
+ return {
103
+ scope: 'registry',
104
+ name: normalizedName,
105
+ version: latestVersion,
106
+ path: registryPath,
107
+ showCommand: `opkg show ${registryPath}`
108
+ };
109
+ }
110
+ catch (error) {
111
+ logger.debug('No registry versions found', { packageName });
112
+ return null;
113
+ }
114
+ }
115
+ /**
116
+ * Discover packages with the same name across different scopes
117
+ *
118
+ * Searches for the package in:
119
+ * - Workspace packages (.openpackage/packages/)
120
+ * - Global packages (~/.openpackage/packages/)
121
+ * - Local registry (~/.openpackage/registry/)
122
+ *
123
+ * @param packageName - The package name to search for
124
+ * @param cwd - Current working directory
125
+ * @returns Discovery result with all found packages
126
+ */
127
+ export async function discoverPackagesAcrossScopes(packageName, cwd) {
128
+ logger.debug('Discovering packages across scopes', { packageName, cwd });
129
+ const packagesInScopes = [];
130
+ // Check workspace
131
+ const workspacePackage = await checkWorkspaceScope(cwd, packageName);
132
+ if (workspacePackage) {
133
+ packagesInScopes.push(workspacePackage);
134
+ }
135
+ // Check global
136
+ const globalPackage = await checkGlobalScope(packageName);
137
+ if (globalPackage) {
138
+ packagesInScopes.push(globalPackage);
139
+ }
140
+ // Check registry
141
+ const registryPackage = await checkRegistryScope(packageName);
142
+ if (registryPackage) {
143
+ packagesInScopes.push(registryPackage);
144
+ }
145
+ logger.debug('Scope discovery completed', {
146
+ packageName,
147
+ scopesFound: packagesInScopes.length
148
+ });
149
+ return {
150
+ packageName,
151
+ packagesInScopes
152
+ };
153
+ }
154
+ /**
155
+ * Check if multiple scopes have the same package
156
+ *
157
+ * @param packageName - The package name to check
158
+ * @param cwd - Current working directory
159
+ * @returns True if the package exists in multiple scopes
160
+ */
161
+ export async function hasMultipleScopes(packageName, cwd) {
162
+ const result = await discoverPackagesAcrossScopes(packageName, cwd);
163
+ return result.packagesInScopes.length > 1;
164
+ }
165
+ //# sourceMappingURL=scope-discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope-discovery.js","sourceRoot":"","sources":["../../../src/core/show/scope-discovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,168 @@
1
+ /**
2
+ * @fileoverview Display/output logic for the show command
3
+ *
4
+ * Handles formatting and displaying package information to the console.
5
+ * Separated from business logic for easy testing and customization.
6
+ */
7
+ import { formatPathForDisplay } from '../../utils/formatters.js';
8
+ import { describeVersionRange, isExactVersion } from '../../utils/version-ranges.js';
9
+ import { formatVersionLabel } from '../../utils/package-versioning.js';
10
+ /**
11
+ * Display package information to console
12
+ */
13
+ export function displayPackageInfo(info, cwd, scopeHintInfo) {
14
+ const { name, version, unversioned, source, metadata, files, isPartial } = info;
15
+ // Package name and version
16
+ console.log(`✓ Package: ${name}`);
17
+ if (!unversioned && version) {
18
+ console.log(`✓ Version: ${version}`);
19
+ }
20
+ // Source information
21
+ const displayPath = formatPathForDisplay(source.path, cwd);
22
+ console.log(`✓ Source: ${source.label} (${displayPath})`);
23
+ console.log(`✓ Type: ${source.isMutable ? 'mutable' : 'immutable'}`);
24
+ // Metadata fields
25
+ if (metadata.description) {
26
+ console.log(`✓ Description: ${metadata.description}`);
27
+ }
28
+ if (metadata.keywords && metadata.keywords.length > 0) {
29
+ console.log(`✓ Keywords: ${metadata.keywords.join(', ')}`);
30
+ }
31
+ if (metadata.author) {
32
+ console.log(`✓ Author: ${metadata.author}`);
33
+ }
34
+ if (metadata.license) {
35
+ console.log(`✓ License: ${metadata.license}`);
36
+ }
37
+ if (metadata.homepage) {
38
+ console.log(`✓ Homepage: ${metadata.homepage}`);
39
+ }
40
+ if (metadata.repository) {
41
+ const repo = metadata.repository;
42
+ const repoDir = repo.directory ? ` (directory: ${repo.directory})` : '';
43
+ console.log(`✓ Repository: ${repo.type} - ${repo.url}${repoDir}`);
44
+ }
45
+ console.log(`✓ Private: ${metadata.private ? 'Yes' : 'No'}`);
46
+ if (isPartial) {
47
+ console.log('✓ Partial: Yes');
48
+ }
49
+ // Dependencies section
50
+ displayDependencies(metadata);
51
+ // Files section
52
+ displayFileList(files);
53
+ // Scope hint section (if package exists in multiple scopes)
54
+ if (scopeHintInfo) {
55
+ displayScopeHint(scopeHintInfo);
56
+ }
57
+ }
58
+ /**
59
+ * Display dependencies (packages and dev-packages)
60
+ */
61
+ function displayDependencies(metadata) {
62
+ // Production packages
63
+ if (metadata.packages && metadata.packages.length > 0) {
64
+ console.log(`✓ Imported Packages (${metadata.packages.length}):`);
65
+ for (const dep of metadata.packages) {
66
+ const versionLabel = formatVersionLabel(dep.version);
67
+ const rangeDescription = dep.version && !isExactVersion(dep.version)
68
+ ? ` (${describeVersionRange(dep.version)})`
69
+ : '';
70
+ console.log(` • ${dep.name}@${versionLabel}${rangeDescription}`);
71
+ }
72
+ }
73
+ // Dev packages
74
+ if (metadata['dev-packages'] && metadata['dev-packages'].length > 0) {
75
+ console.log(`✓ Imported Dev Packages (${metadata['dev-packages'].length}):`);
76
+ for (const dep of metadata['dev-packages']) {
77
+ const versionLabel = formatVersionLabel(dep.version);
78
+ const rangeDescription = dep.version && !isExactVersion(dep.version)
79
+ ? ` (${describeVersionRange(dep.version)})`
80
+ : '';
81
+ console.log(` • ${dep.name}@${versionLabel}${rangeDescription}`);
82
+ }
83
+ }
84
+ }
85
+ /**
86
+ * Display file list
87
+ */
88
+ function displayFileList(files) {
89
+ console.log(`✓ Files: ${files.length}`);
90
+ for (const filePath of files) {
91
+ console.log(` ├── ${filePath}`);
92
+ }
93
+ }
94
+ /**
95
+ * Display resolution information when multiple candidates were found
96
+ */
97
+ export function displayResolutionInfo(info) {
98
+ const { candidates, selected, reason } = info;
99
+ if (candidates.length <= 1) {
100
+ return;
101
+ }
102
+ console.log(`\nResolved from multiple sources:`);
103
+ for (const candidate of candidates) {
104
+ const marker = candidate.path === selected.path ? '✓' : ' ';
105
+ const versionLabel = candidate.version || 'unversioned';
106
+ console.log(` ${marker} ${getSourceLabel(candidate.type)}: ${versionLabel}`);
107
+ }
108
+ const reasonText = getReasonText(reason);
109
+ if (reasonText) {
110
+ console.log(`Selection reason: ${reasonText}\n`);
111
+ }
112
+ }
113
+ /**
114
+ * Get source label for display
115
+ */
116
+ function getSourceLabel(sourceType) {
117
+ switch (sourceType) {
118
+ case 'cwd':
119
+ return 'current directory';
120
+ case 'workspace':
121
+ return 'workspace packages';
122
+ case 'global':
123
+ return 'global packages';
124
+ case 'registry':
125
+ return 'local registry';
126
+ case 'path':
127
+ return 'path';
128
+ case 'git':
129
+ return 'git repository';
130
+ case 'tarball':
131
+ return 'tarball';
132
+ default:
133
+ return sourceType;
134
+ }
135
+ }
136
+ /**
137
+ * Get human-readable text for resolution reason
138
+ */
139
+ function getReasonText(reason) {
140
+ switch (reason) {
141
+ case 'cwd-match':
142
+ return 'current directory has matching package';
143
+ case 'workspace-override':
144
+ return 'workspace packages always override';
145
+ case 'newer-version':
146
+ return 'higher version selected';
147
+ case 'same-version-prefer-mutable':
148
+ return 'same version, prefer mutable';
149
+ case 'only-source':
150
+ return 'only source found';
151
+ default:
152
+ return '';
153
+ }
154
+ }
155
+ /**
156
+ * Display scope hint when package exists in multiple scopes
157
+ */
158
+ function displayScopeHint(scopeHintInfo) {
159
+ console.log('');
160
+ console.log('💡 This package also exists in other scopes:');
161
+ for (const otherScope of scopeHintInfo.otherScopes) {
162
+ const scopeLabel = getSourceLabel(otherScope.scope);
163
+ const versionInfo = otherScope.version ? ` (v${otherScope.version})` : '';
164
+ console.log(` • ${scopeLabel}${versionInfo}`);
165
+ console.log(` View with: ${otherScope.showCommand}`);
166
+ }
167
+ }
168
+ //# sourceMappingURL=show-output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show-output.js","sourceRoot":"","sources":["../../../src/core/show/show-output.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * @fileoverview Main pipeline for the show command
3
+ *
4
+ * Orchestrates package resolution, data collection, and display.
5
+ * This is the main business logic layer that coordinates all show operations.
6
+ */
7
+ import { basename } from 'path';
8
+ import { isJunk } from 'junk';
9
+ import { logger } from '../../utils/logger.js';
10
+ import { isUnversionedVersion } from '../../utils/package-versioning.js';
11
+ import { loadPackageConfig } from '../package-context.js';
12
+ import { packageManager } from '../package.js';
13
+ import { ensureRegistryDirectories } from '../directory.js';
14
+ import { resolvePackageForShow } from './package-resolver.js';
15
+ import { displayPackageInfo, displayResolutionInfo } from './show-output.js';
16
+ /**
17
+ * Collect package information for display
18
+ */
19
+ async function collectPackageInfo(resolvedPath, name, version) {
20
+ logger.debug('Collecting package information', { resolvedPath, name, version });
21
+ // Load manifest
22
+ const metadata = await loadPackageConfig(resolvedPath);
23
+ if (!metadata) {
24
+ throw new Error(`Failed to load package metadata from: ${resolvedPath}`);
25
+ }
26
+ // Load package using the provided packageRootDir option to read from resolved path
27
+ // Use a temporary name if the actual name isn't valid for validation
28
+ const pkg = await packageManager.loadPackage(metadata.name, // Use name from manifest instead of potentially invalid input
29
+ version, { packageRootDir: resolvedPath });
30
+ const packageFiles = pkg.files;
31
+ // Filter out junk files and sort
32
+ const filteredFiles = packageFiles.filter((f) => !isJunk(basename(f.path)));
33
+ const sortedFilePaths = filteredFiles
34
+ .map((f) => f.path)
35
+ .sort((a, b) => a.localeCompare(b));
36
+ // Check if unversioned
37
+ const unversioned = isUnversionedVersion(version);
38
+ // Detect partial packages
39
+ let isPartial = false;
40
+ if (version && !unversioned) {
41
+ try {
42
+ const versionState = await packageManager.getPackageVersionState(name, version);
43
+ isPartial = Boolean(metadata.partial) || versionState.isPartial;
44
+ }
45
+ catch (error) {
46
+ // If we can't get version state, check manifest flag only
47
+ isPartial = Boolean(metadata.partial);
48
+ logger.debug('Failed to get version state, using manifest flag only', { error });
49
+ }
50
+ }
51
+ return {
52
+ name: metadata.name,
53
+ version: metadata.version || version,
54
+ unversioned,
55
+ metadata,
56
+ files: sortedFilePaths,
57
+ isPartial
58
+ };
59
+ }
60
+ /**
61
+ * Run the show pipeline for a package
62
+ *
63
+ * This is the main entry point for showing package information.
64
+ * It coordinates:
65
+ * 1. Package resolution (finding the package)
66
+ * 2. Data collection (loading metadata and files)
67
+ * 3. Display (formatting and outputting information)
68
+ *
69
+ * @param packageInput - User input (package name, path, git URL, etc.)
70
+ * @param cwd - Current working directory
71
+ * @returns Command result with success status
72
+ */
73
+ export async function runShowPipeline(packageInput, cwd = process.cwd()) {
74
+ logger.debug('Starting show pipeline', { packageInput, cwd });
75
+ try {
76
+ // Ensure registry directories exist
77
+ await ensureRegistryDirectories();
78
+ // Step 1: Resolve package location
79
+ const resolved = await resolvePackageForShow(packageInput, cwd);
80
+ logger.info('Package resolved for show', {
81
+ input: packageInput,
82
+ resolvedPath: resolved.path,
83
+ sourceType: resolved.source.type
84
+ });
85
+ // Display resolution info if multiple candidates were found
86
+ if (resolved.resolutionInfo) {
87
+ displayResolutionInfo(resolved.resolutionInfo);
88
+ }
89
+ // Step 2: Collect package information
90
+ const packageInfo = await collectPackageInfo(resolved.path, resolved.name, resolved.version);
91
+ // Combine resolved source info with collected data
92
+ const completeInfo = {
93
+ ...packageInfo,
94
+ source: resolved.source
95
+ };
96
+ // Step 3: Display package information
97
+ displayPackageInfo(completeInfo, cwd, resolved.scopeHintInfo);
98
+ logger.debug('Show pipeline completed successfully');
99
+ return {
100
+ success: true,
101
+ data: completeInfo.metadata
102
+ };
103
+ }
104
+ catch (error) {
105
+ const message = error instanceof Error ? error.message : String(error);
106
+ logger.error('Show pipeline failed', { error: message });
107
+ return {
108
+ success: false,
109
+ error: message
110
+ };
111
+ }
112
+ }
113
+ //# sourceMappingURL=show-pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show-pipeline.js","sourceRoot":"","sources":["../../../src/core/show/show-pipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @fileoverview Type definitions for the show command
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=show-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show-types.js","sourceRoot":"","sources":["../../../src/core/show/show-types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,104 @@
1
+ import path from 'path';
2
+ import { FILE_PATTERNS, DEPENDENCY_ARRAYS, DEFAULT_VERSION_CONSTRAINT, MUTABILITY, SOURCE_TYPES } from '../../constants/index.js';
3
+ import { exists } from '../../utils/fs.js';
4
+ import { parsePackageYml } from '../../utils/package-yml.js';
5
+ import { resolveDeclaredPath } from '../../utils/path-resolution.js';
6
+ import { normalizePackageName } from '../../utils/package-name.js';
7
+ import { isRegistryPath } from '../../utils/source-mutability.js';
8
+ import { cloneGitToRegistry } from '../../utils/git-clone-registry.js';
9
+ import { resolveRegistryVersion } from './resolve-registry-version.js';
10
+ import { resolvePackageSource } from './resolve-package-source.js';
11
+ async function resolveFromManifest(manifestDir, dep) {
12
+ const normalizedName = normalizePackageName(dep.name);
13
+ if (dep.path) {
14
+ const resolved = resolveDeclaredPath(dep.path, manifestDir);
15
+ const absolutePath = path.join(resolved.absolute, path.sep);
16
+ const mutability = isRegistryPath(absolutePath) ? MUTABILITY.IMMUTABLE : MUTABILITY.MUTABLE;
17
+ const sourceType = isRegistryPath(absolutePath) ? SOURCE_TYPES.REGISTRY : SOURCE_TYPES.PATH;
18
+ return {
19
+ packageName: normalizedName,
20
+ absolutePath,
21
+ declaredPath: resolved.declared,
22
+ mutability,
23
+ version: dep.version,
24
+ sourceType
25
+ };
26
+ }
27
+ if (dep.git) {
28
+ const { absolutePath, declaredPath } = await cloneGitToRegistry({
29
+ url: dep.git,
30
+ ref: dep.ref
31
+ });
32
+ const mutability = isRegistryPath(absolutePath) ? MUTABILITY.IMMUTABLE : MUTABILITY.MUTABLE;
33
+ return {
34
+ packageName: normalizedName,
35
+ absolutePath,
36
+ declaredPath,
37
+ mutability,
38
+ version: dep.version,
39
+ sourceType: SOURCE_TYPES.GIT
40
+ };
41
+ }
42
+ const constraint = dep.version ?? DEFAULT_VERSION_CONSTRAINT;
43
+ const registry = await resolveRegistryVersion(normalizedName, { constraint });
44
+ return {
45
+ packageName: normalizedName,
46
+ absolutePath: registry.absolutePath,
47
+ declaredPath: registry.declaredPath,
48
+ mutability: MUTABILITY.IMMUTABLE,
49
+ version: registry.version,
50
+ sourceType: SOURCE_TYPES.REGISTRY,
51
+ resolutionSource: registry.resolutionSource
52
+ };
53
+ }
54
+ async function loadManifestDependencies(sourceRoot) {
55
+ const manifestPath = path.join(sourceRoot, FILE_PATTERNS.OPENPACKAGE_YML);
56
+ if (!(await exists(manifestPath))) {
57
+ return [];
58
+ }
59
+ const manifest = await parsePackageYml(manifestPath);
60
+ return manifest[DEPENDENCY_ARRAYS.PACKAGES] || [];
61
+ }
62
+ /**
63
+ * Build a minimal dependency graph starting from the workspace-declared package.
64
+ * The graph resolves transitive dependencies by reading each package's manifest
65
+ * directly (no reliance on cached index entries).
66
+ */
67
+ export async function resolveDependencyGraph(workspaceRoot, rootPackageName) {
68
+ const visited = new Map();
69
+ async function dfs(pkgName) {
70
+ const normalizedName = normalizePackageName(pkgName);
71
+ if (visited.has(normalizedName))
72
+ return;
73
+ const source = await resolvePackageSource(workspaceRoot, normalizedName);
74
+ const manifestDir = source.absolutePath;
75
+ const deps = await loadManifestDependencies(manifestDir);
76
+ const dependencyNames = [];
77
+ for (const dep of deps) {
78
+ dependencyNames.push(normalizePackageName(dep.name));
79
+ }
80
+ visited.set(normalizedName, {
81
+ name: normalizedName,
82
+ version: source.version,
83
+ source,
84
+ dependencies: dependencyNames
85
+ });
86
+ // Resolve transitive dependencies using the manifest at the current source root
87
+ for (const dep of deps) {
88
+ const child = await resolveFromManifest(manifestDir, dep);
89
+ if (!visited.has(child.packageName)) {
90
+ // Store minimal node for child before deeper traversal
91
+ visited.set(child.packageName, {
92
+ name: child.packageName,
93
+ version: child.version,
94
+ source: child,
95
+ dependencies: []
96
+ });
97
+ await dfs(child.packageName);
98
+ }
99
+ }
100
+ }
101
+ await dfs(rootPackageName);
102
+ return Array.from(visited.values());
103
+ }
104
+ //# sourceMappingURL=dependency-graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-graph.js","sourceRoot":"","sources":["../../../src/core/source-resolution/dependency-graph.ts"],"names":[],"mappings":"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"}