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
@@ -3,31 +3,23 @@
3
3
  *
4
4
  * This module provides two main operations:
5
5
  * - readPackageFilesForRegistry: Collect files from a package directory into a
6
- * registry-ready payload, applying static exclusions and manifest-based filters.
6
+ * registry-ready payload, applying static exclusions (no manifest filters).
7
7
  * - writePackageFilesToDirectory: Write a set of PackageFile entries to disk,
8
8
  * syncing the directory contents (removing stale files).
9
9
  */
10
10
  import { join, relative, dirname } from 'path';
11
- import { DIR_PATTERNS, FILE_PATTERNS, PACKAGE_PATHS } from '../constants/index.js';
12
- import { getAllPlatforms, getPlatformDefinition } from '../core/platforms.js';
11
+ import { FILE_PATTERNS } from '../constants/index.js';
13
12
  import { exists, ensureDir, readTextFile, writeTextFile, walkFiles, remove } from './fs.js';
14
13
  import { logger } from './logger.js';
15
14
  import { normalizePathForProcessing } from './path-normalization.js';
16
- import { parsePackageYml } from './package-yml.js';
17
- import { createPackageFileFilter, isExcludedFromPackage } from './package-filters.js';
18
- const MANIFEST_RELATIVE_PATHS = Object.freeze([
19
- FILE_PATTERNS.PACKAGE_YML,
20
- PACKAGE_PATHS.MANIFEST_RELATIVE
21
- ]);
15
+ import { isExcludedFromPackage } from './package-filters.js';
22
16
  // ─────────────────────────────────────────────────────────────────────────────
23
17
  // Reading package files
24
18
  // ─────────────────────────────────────────────────────────────────────────────
25
19
  /**
26
20
  * Read package files from disk and return a registry-ready payload.
27
21
  *
28
- * Applies two layers of filtering:
29
- * 1. Static exclusions (package index file, packages/** nested dirs).
30
- * 2. Manifest-based include/exclude patterns from package.yml.
22
+ * Applies static exclusions (package index file, packages/** nested dirs).
31
23
  *
32
24
  * @param packageDir - Absolute path to the package root directory.
33
25
  * @returns Array of PackageFile entries representing the canonical payload.
@@ -36,7 +28,6 @@ export async function readPackageFilesForRegistry(packageDir) {
36
28
  if (!(await exists(packageDir))) {
37
29
  return [];
38
30
  }
39
- const manifestFilter = await loadManifestFilter(packageDir);
40
31
  const files = [];
41
32
  for await (const fullPath of walkFiles(packageDir)) {
42
33
  const relativePath = normalizePathForProcessing(relative(packageDir, fullPath));
@@ -45,100 +36,11 @@ export async function readPackageFilesForRegistry(packageDir) {
45
36
  logger.debug(`Skipping static-excluded path: ${relativePath}`);
46
37
  continue;
47
38
  }
48
- // Layer 2: manifest-based include/exclude
49
- if (!manifestFilter(relativePath)) {
50
- logger.debug(`Skipping path by manifest filter: ${relativePath}`);
51
- continue;
52
- }
53
39
  const content = await readTextFile(fullPath);
54
40
  files.push({ path: relativePath, content, encoding: 'utf8' });
55
41
  }
56
42
  return files;
57
43
  }
58
- /**
59
- * Build a filter function from the package.yml include/exclude fields.
60
- * Returns a pass-all filter if no manifest or no patterns are defined.
61
- */
62
- async function loadManifestFilter(packageDir) {
63
- const manifestInfo = await findPackageManifest(packageDir);
64
- let manifestConfigInclude;
65
- let manifestConfigExclude;
66
- if (manifestInfo) {
67
- try {
68
- const config = await parsePackageYml(manifestInfo.fullPath);
69
- manifestConfigInclude = config.include;
70
- manifestConfigExclude = config.exclude;
71
- }
72
- catch (error) {
73
- logger.warn(`Failed to load manifest filters from ${manifestInfo.fullPath}: ${String(error)}`);
74
- }
75
- }
76
- const defaults = await buildDefaultIncludeConfig(packageDir, manifestInfo);
77
- const includePatterns = [
78
- ...defaults.includePatterns,
79
- ...(manifestConfigInclude ?? [])
80
- ];
81
- const excludePatterns = manifestConfigExclude ?? [];
82
- const baseFilter = createPackageFileFilter({
83
- include: includePatterns,
84
- exclude: excludePatterns
85
- });
86
- return (relativePath) => {
87
- const normalized = normalizePathForProcessing(relativePath);
88
- if (!normalized) {
89
- return false;
90
- }
91
- if (defaults.hardIncludeFiles.has(normalized)) {
92
- return true;
93
- }
94
- return baseFilter(relativePath);
95
- };
96
- }
97
- async function findPackageManifest(packageDir) {
98
- for (const relativePath of MANIFEST_RELATIVE_PATHS) {
99
- const fullPath = join(packageDir, relativePath);
100
- if (await exists(fullPath)) {
101
- return { fullPath, relativePath };
102
- }
103
- }
104
- return null;
105
- }
106
- async function buildDefaultIncludeConfig(packageDir, manifestInfo) {
107
- const includePatterns = new Set();
108
- const hardIncludeFiles = new Set();
109
- // Include package.yml (at .openpackage/package.yml relative to package root)
110
- includePatterns.add(PACKAGE_PATHS.MANIFEST_RELATIVE);
111
- hardIncludeFiles.add(normalizePathForProcessing(PACKAGE_PATHS.MANIFEST_RELATIVE));
112
- if (manifestInfo) {
113
- includePatterns.add(manifestInfo.relativePath);
114
- hardIncludeFiles.add(normalizePathForProcessing(manifestInfo.relativePath));
115
- }
116
- const rootFiles = new Set([FILE_PATTERNS.AGENTS_MD]);
117
- const universalSubdirs = new Set();
118
- for (const platform of getAllPlatforms({ includeDisabled: true })) {
119
- const definition = getPlatformDefinition(platform);
120
- if (definition.rootFile) {
121
- rootFiles.add(definition.rootFile);
122
- }
123
- for (const subdirKey of Object.keys(definition.subdirs ?? {})) {
124
- universalSubdirs.add(subdirKey);
125
- }
126
- }
127
- for (const rootFile of rootFiles) {
128
- includePatterns.add(rootFile);
129
- }
130
- // packageDir is the package root, so look for subdirs at packageDir/.openpackage/<subdir>/
131
- await Promise.all(Array.from(universalSubdirs).map(async (subdirName) => {
132
- const absoluteDir = join(packageDir, DIR_PATTERNS.OPENPACKAGE, subdirName);
133
- if (await exists(absoluteDir)) {
134
- includePatterns.add(`${DIR_PATTERNS.OPENPACKAGE}/${subdirName}/**`);
135
- }
136
- }));
137
- return {
138
- includePatterns: Array.from(includePatterns),
139
- hardIncludeFiles
140
- };
141
- }
142
44
  /**
143
45
  * Write package files to a directory, syncing its contents.
144
46
  *
@@ -155,7 +57,7 @@ export async function writePackageFilesToDirectory(targetDir, files, options = {
155
57
  // Build the set of paths that should remain after the write
156
58
  const pathsToKeep = new Set(files.map(f => normalizePathForProcessing(f.path)));
157
59
  if (options.preserveIndexFile) {
158
- pathsToKeep.add(FILE_PATTERNS.PACKAGE_INDEX_YML);
60
+ pathsToKeep.add(FILE_PATTERNS.OPENPACKAGE_INDEX_YML);
159
61
  }
160
62
  // Remove stale files (but never touch protected paths like packages/**)
161
63
  await removeStaleFiles(targetDir, pathsToKeep);
@@ -1 +1 @@
1
- {"version":3,"file":"package-copy.js","sourceRoot":"","sources":["../../src/utils/package-copy.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAG/C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EACL,MAAM,EACN,SAAS,EACT,YAAY,EACZ,aAAa,EACb,SAAS,EACT,MAAM,EACP,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAYtF,MAAM,uBAAuB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC5C,aAAa,CAAC,WAAW;IACzB,aAAa,CAAC,iBAAiB;CAChC,CAAC,CAAC;AAEH,gFAAgF;AAChF,wBAAwB;AACxB,gFAAgF;AAEhF;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,UAAkB;IAClE,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QAChC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAkB,EAAE,CAAC;IAEhC,IAAI,KAAK,EAAE,MAAM,QAAQ,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;QACnD,MAAM,YAAY,GAAG,0BAA0B,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;QAEhF,+CAA+C;QAC/C,IAAI,qBAAqB,CAAC,YAAY,CAAC,EAAE,CAAC;YACxC,MAAM,CAAC,KAAK,CAAC,kCAAkC,YAAY,EAAE,CAAC,CAAC;YAC/D,SAAS;QACX,CAAC;QAED,0CAA0C;QAC1C,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC;YAClC,MAAM,CAAC,KAAK,CAAC,qCAAqC,YAAY,EAAE,CAAC,CAAC;YAClE,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,kBAAkB,CAAC,UAAkB;IAClD,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAE3D,IAAI,qBAA2C,CAAC;IAChD,IAAI,qBAA2C,CAAC;IAEhD,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC5D,qBAAqB,GAAG,MAAM,CAAC,OAAO,CAAC;YACvC,qBAAqB,GAAG,MAAM,CAAC,OAAO,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,wCAAwC,YAAY,CAAC,QAAQ,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjG,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,yBAAyB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAE3E,MAAM,eAAe,GAAG;QACtB,GAAG,QAAQ,CAAC,eAAe;QAC3B,GAAG,CAAC,qBAAqB,IAAI,EAAE,CAAC;KACjC,CAAC;IACF,MAAM,eAAe,GAAG,qBAAqB,IAAI,EAAE,CAAC;IAEpD,MAAM,UAAU,GAAG,uBAAuB,CAAC;QACzC,OAAO,EAAE,eAAe;QACxB,OAAO,EAAE,eAAe;KACzB,CAAC,CAAC;IAEH,OAAO,CAAC,YAAoB,EAAW,EAAE;QACvC,MAAM,UAAU,GAAG,0BAA0B,CAAC,YAAY,CAAC,CAAC;QAC5D,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,UAAU,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,UAAkB;IACnD,KAAK,MAAM,YAAY,IAAI,uBAAuB,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAChD,IAAI,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3B,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;QACpC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,yBAAyB,CACtC,UAAkB,EAClB,YAAiC;IAEjC,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IAC1C,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE3C,6EAA6E;IAC7E,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IACrD,gBAAgB,CAAC,GAAG,CAAC,0BAA0B,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAElF,IAAI,YAAY,EAAE,CAAC;QACjB,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QAC/C,gBAAgB,CAAC,GAAG,CAAC,0BAA0B,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;IAC7D,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE3C,KAAK,MAAM,QAAQ,IAAI,eAAe,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAClE,MAAM,UAAU,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;YACxB,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;YAC9D,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED,2FAA2F;IAC3F,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,KAAK,EAAC,UAAU,EAAC,EAAE;QAClD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAC3E,IAAI,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;YAC9B,eAAe,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,WAAW,IAAI,UAAU,KAAK,CAAC,CAAC;QACtE,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IAEF,OAAO;QACL,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC;QAC5C,gBAAgB;KACjB,CAAC;AACJ,CAAC;AAeD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,SAAiB,EACjB,KAAoB,EACpB,UAAoC,EAAE;IAEtC,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC;IAE3B,4DAA4D;IAC5D,MAAM,WAAW,GAAG,IAAI,GAAG,CAAS,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,0BAA0B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAExF,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC9B,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IACnD,CAAC;IAED,wEAAwE;IACxE,MAAM,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAE/C,uCAAuC;IACvC,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAAC,SAAiB,EAAE,WAAwB;IACzE,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,IAAI,KAAK,EAAE,MAAM,QAAQ,IAAI,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;QAClD,MAAM,OAAO,GAAG,0BAA0B,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;QAE1E,6BAA6B;QAC7B,IAAI,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,SAAS;QACX,CAAC;QAED,mDAAmD;QACnD,IAAI,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,SAAS;QACX,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;YACvB,MAAM,CAAC,KAAK,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,+BAA+B,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,SAAS,CAAC,SAAiB,EAAE,IAAiB;IAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IACrC,MAAM,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAG,IAAI,CAAC,QAA2B,IAAI,MAAM,CAAC,CAAC;AAC7F,CAAC"}
1
+ {"version":3,"file":"package-copy.js","sourceRoot":"","sources":["../../src/utils/package-copy.ts"],"names":[],"mappings":"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"}
@@ -1,93 +1,21 @@
1
1
  import { normalizePathForProcessing } from './path-normalization.js';
2
2
  import { DIR_PATTERNS, FILE_PATTERNS, OPENPACKAGE_DIRS } from '../constants/index.js';
3
3
  const EXCLUDED_DIR_PREFIXES = [
4
- 'packages', // Nested packages are independent units; never copy inline
5
- `${DIR_PATTERNS.OPENPACKAGE}/${OPENPACKAGE_DIRS.PACKAGES}` // Current nested package layout under .openpackage/
4
+ OPENPACKAGE_DIRS.PACKAGES, // Nested packages are independent units; never copy inline
5
+ // Note: .openpackage/ is excluded separately in the function below (entire directory is workspace-local metadata)
6
+ `${DIR_PATTERNS.OPENPACKAGE}/${OPENPACKAGE_DIRS.PACKAGES}` // Legacy: kept for completeness, but covered by .openpackage/ exclusion in function
6
7
  ];
7
- const EXCLUDED_FILES = new Set([FILE_PATTERNS.PACKAGE_INDEX_YML]);
8
- const MATCH_ALL = () => true;
9
- const SPECIAL_REGEX_CHARS = /[\\^$+?.()|[\]{}]/g;
10
- function escapeRegexCharacter(segment) {
11
- return segment.replace(SPECIAL_REGEX_CHARS, '\\$&');
12
- }
13
- function normalizePattern(rawPattern) {
14
- if (typeof rawPattern !== 'string') {
15
- return null;
16
- }
17
- let pattern = rawPattern.trim();
18
- if (pattern.length === 0) {
19
- return null;
20
- }
21
- pattern = pattern.replace(/\\/g, '/');
22
- pattern = pattern.replace(/^\.\/+/, '');
23
- pattern = pattern.replace(/^\/+/, '');
24
- pattern = pattern.replace(/\/+/g, '/');
25
- if (pattern.length === 0) {
26
- return null;
27
- }
28
- if (pattern.endsWith('/')) {
29
- pattern = `${pattern}**`;
30
- }
31
- return pattern;
32
- }
33
- function globToRegExp(pattern) {
34
- let regex = '^';
35
- for (let i = 0; i < pattern.length; i++) {
36
- const char = pattern[i];
37
- if (char === '*') {
38
- const nextChar = pattern[i + 1];
39
- if (nextChar === '*') {
40
- const slashChar = pattern[i + 2];
41
- if (slashChar === '/') {
42
- regex += '(?:.*/)?';
43
- i += 2;
44
- }
45
- else {
46
- regex += '.*';
47
- i += 1;
48
- }
49
- }
50
- else {
51
- regex += '[^/]*';
52
- }
53
- continue;
54
- }
55
- if (char === '?') {
56
- regex += '[^/]';
57
- continue;
58
- }
59
- regex += escapeRegexCharacter(char);
60
- }
61
- regex += '$';
62
- return new RegExp(regex);
63
- }
64
- function compilePatterns(patterns) {
65
- if (!patterns) {
66
- return [];
67
- }
68
- const compiled = [];
69
- for (const rawPattern of patterns) {
70
- const normalized = normalizePattern(rawPattern);
71
- if (!normalized) {
72
- continue;
73
- }
74
- try {
75
- compiled.push(globToRegExp(normalized));
76
- }
77
- catch {
78
- // Skip invalid patterns to avoid blocking save/pack flows.
79
- }
80
- }
81
- return compiled;
82
- }
83
- function matches(path, patterns) {
84
- return patterns.some(pattern => pattern.test(path));
85
- }
8
+ const EXCLUDED_FILES = new Set([FILE_PATTERNS.OPENPACKAGE_INDEX_YML]);
86
9
  export function isExcludedFromPackage(relativePath) {
87
10
  const normalized = normalizePathForProcessing(relativePath);
88
11
  if (!normalized) {
89
12
  return true;
90
13
  }
14
+ // Exclude entire .openpackage/ directory (workspace-local metadata; never part of payload)
15
+ if (normalized === DIR_PATTERNS.OPENPACKAGE ||
16
+ normalized.startsWith(`${DIR_PATTERNS.OPENPACKAGE}/`)) {
17
+ return true;
18
+ }
91
19
  const baseName = normalized.split('/').pop();
92
20
  if (baseName && EXCLUDED_FILES.has(baseName)) {
93
21
  return true;
@@ -98,28 +26,4 @@ export function isExcludedFromPackage(relativePath) {
98
26
  normalized.startsWith(`${normalizedPrefix}/`));
99
27
  });
100
28
  }
101
- export function createPackageFileFilter(config) {
102
- if (!config) {
103
- return MATCH_ALL;
104
- }
105
- const includePatterns = compilePatterns(config.include);
106
- const excludePatterns = compilePatterns(config.exclude);
107
- const hasInclude = includePatterns.length > 0;
108
- if (!hasInclude && excludePatterns.length === 0) {
109
- return MATCH_ALL;
110
- }
111
- return (relativePath) => {
112
- const normalized = normalizePathForProcessing(relativePath);
113
- if (!normalized) {
114
- return false;
115
- }
116
- if (hasInclude && !matches(normalized, includePatterns)) {
117
- return false;
118
- }
119
- if (excludePatterns.length > 0 && matches(normalized, excludePatterns)) {
120
- return false;
121
- }
122
- return true;
123
- };
124
- }
125
29
  //# sourceMappingURL=package-filters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"package-filters.js","sourceRoot":"","sources":["../../src/utils/package-filters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"package-filters.js","sourceRoot":"","sources":["../../src/utils/package-filters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEtF,MAAM,qBAAqB,GAAG;IAC5B,gBAAgB,CAAC,QAAQ,EAAE,2DAA2D;IACtF,kHAAkH;IAClH,GAAG,YAAY,CAAC,WAAW,IAAI,gBAAgB,CAAC,QAAQ,EAAE,CAAC,oFAAoF;CAChJ,CAAC;AAEF,MAAM,cAAc,GAAG,IAAI,GAAG,CAAS,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAE9E,MAAM,UAAU,qBAAqB,CAAC,YAAoB;IACxD,MAAM,UAAU,GAAG,0BAA0B,CAAC,YAAY,CAAC,CAAC;IAC5D,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2FAA2F;IAC3F,IAAI,UAAU,KAAK,YAAY,CAAC,WAAW;QACvC,UAAU,CAAC,UAAU,CAAC,GAAG,YAAY,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IAC7C,IAAI,QAAQ,IAAI,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;QACzC,MAAM,gBAAgB,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;QAC5D,OAAO,CACL,UAAU,KAAK,gBAAgB;YAC/B,UAAU,CAAC,UAAU,CAAC,GAAG,gBAAgB,GAAG,CAAC,CAC9C,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -8,11 +8,11 @@ import { logger } from './logger.js';
8
8
  const HEADER_COMMENT = '# This file is managed by OpenPackage. Do not edit manually.';
9
9
  export function getPackageIndexPath(cwd, packageName, location = 'nested') {
10
10
  if (location === 'root') {
11
- return join(getLocalOpenPackageDir(cwd), FILE_PATTERNS.PACKAGE_INDEX_YML);
11
+ return join(getLocalOpenPackageDir(cwd), FILE_PATTERNS.OPENPACKAGE_INDEX_YML);
12
12
  }
13
- // Nested: use content directory (cwd/.openpackage/packages/<name>/.openpackage/)
13
+ // Nested: cached package root (cwd/.openpackage/packages/<name>/)
14
14
  const contentDir = getLocalPackageContentDir(cwd, packageName);
15
- return join(contentDir, FILE_PATTERNS.PACKAGE_INDEX_YML);
15
+ return join(contentDir, FILE_PATTERNS.OPENPACKAGE_INDEX_YML);
16
16
  }
17
17
  export function ensureTrailingSlash(value) {
18
18
  return value.endsWith('/') ? value : `${value}/`;
@@ -22,8 +22,29 @@ export function sortMapping(record) {
22
22
  const normalized = {};
23
23
  for (const key of sortedKeys) {
24
24
  const values = record[key] || [];
25
- const sortedValues = [...new Set(values)].sort();
26
- normalized[key] = sortedValues;
25
+ const hasComplex = values.some(v => typeof v === 'object' && v !== null);
26
+ if (hasComplex) {
27
+ // Complex mappings - sort by target path
28
+ const sorted = [...values].sort((a, b) => {
29
+ const targetA = typeof a === 'string' ? a : a.target;
30
+ const targetB = typeof b === 'string' ? b : b.target;
31
+ return targetA.localeCompare(targetB);
32
+ });
33
+ // Dedupe by target
34
+ const seen = new Set();
35
+ normalized[key] = sorted.filter(item => {
36
+ const target = typeof item === 'string' ? item : item.target;
37
+ if (seen.has(target))
38
+ return false;
39
+ seen.add(target);
40
+ return true;
41
+ });
42
+ }
43
+ else {
44
+ // Simple string array
45
+ const sortedValues = [...new Set(values)].sort();
46
+ normalized[key] = sortedValues;
47
+ }
27
48
  }
28
49
  return normalized;
29
50
  }
@@ -107,7 +128,7 @@ export async function writePackageIndex(record) {
107
128
  const { path: indexPath, files } = record;
108
129
  const workspaceVer = record.workspace?.version;
109
130
  if (!workspaceVer) {
110
- throw new Error(`workspace.version is required when writing ${FILE_PATTERNS.PACKAGE_INDEX_YML}`);
131
+ throw new Error(`workspace.version is required when writing ${FILE_PATTERNS.OPENPACKAGE_INDEX_YML}`);
111
132
  }
112
133
  const workspace = {
113
134
  hash: record.workspace?.hash,
@@ -1 +1 @@
1
- {"version":3,"file":"package-index-yml.js","sourceRoot":"","sources":["../../src/utils/package-index-yml.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"package-index-yml.js","sourceRoot":"","sources":["../../src/utils/package-index-yml.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,cAAc,GAAG,8DAA8D,CAAC;AAmBtF,MAAM,UAAU,mBAAmB,CACjC,GAAW,EACX,WAAmB,EACnB,WAAiC,QAAQ;IAEzC,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAChF,CAAC;IAED,kEAAkE;IAClE,MAAM,UAAU,GAAG,yBAAyB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAC/D,OAAO,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAA6B;IACvD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9C,MAAM,UAAU,GAA0B,EAAE,CAAC;IAC7C,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QACzE,IAAI,UAAU,EAAE,CAAC;YACf,yCAAyC;YACzC,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACvC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBACrD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBACrD,OAAO,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;YACH,mBAAmB;YACnB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;YAC/B,UAAU,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBACrC,MAAM,MAAM,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC7D,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACnC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACjB,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,sBAAsB;YACtB,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACjD,UAAU,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;QACjC,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAS;IACzC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAEnD,IAAI,YAAgC,CAAC;IACrC,IAAI,aAAiC,CAAC;IAEtC,MAAM,gBAAgB,GAAI,IAAgC,CAAC,SAAS,CAAC;IACrE,IAAI,gBAAgB,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE,CAAC;QAC7D,MAAM,YAAY,GAAI,gBAA0C,CAAC,OAAO,CAAC;QACzE,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;YACrC,YAAY,GAAG,YAAY,CAAC;QAC9B,CAAC;QACD,MAAM,SAAS,GAAI,gBAAuC,CAAC,IAAI,CAAC;QAChE,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAClC,aAAa,GAAG,SAAS,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,IAAI,OAAO,YAAY,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAElD,MAAM,KAAK,GAAI,IAA4B,CAAC,KAAK,CAAC;IAClD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAErD,MAAM,OAAO,GAA6B,EAAE,CAAC;IAC7C,KAAK,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE,CAAC;QAClF,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,SAAS;QACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;YAAE,SAAS;QAEvC,MAAM,aAAa,GAAG,QAAQ;aAC3B,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;aACxF,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC,CAAC;QAEnD,OAAO,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC,GAAG,aAAa,CAAC;IAC9D,CAAC;IAED,OAAO;QACL,SAAS,EAAE;YACT,OAAO,EAAE,YAAY;YACrB,IAAI,EAAE,aAAa;SACpB;QACD,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC;KAC5B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAW,EACX,WAAmB,EACnB,WAAiC,QAAQ;IAEzC,MAAM,aAAa,GAAG,mBAAmB,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,aAAa,CAAC;IAEhC,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAQ,CAAC;QACzC,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,qCAAqC,SAAS,yBAAyB,CAAC,CAAC;YACrF,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,WAAW;gBACX,SAAS,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC3C,KAAK,EAAE,EAAE;aACV,CAAC;QACJ,CAAC;QACD,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,WAAW;YACX,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,KAAK,EAAE,SAAS,CAAC,KAAK;SACvB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,mCAAmC,SAAS,KAAK,KAAK,EAAE,CAAC,CAAC;QACtE,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,WAAW;YACX,SAAS,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YAC3C,KAAK,EAAE,EAAE;SACV,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAA0B;IAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IAC1C,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC;IAC/C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,8CAA8C,aAAa,CAAC,qBAAqB,EAAE,CAAC,CAAC;IACvG,CAAC;IACD,MAAM,SAAS,GAA0B;QACvC,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI;QAC5B,OAAO,EAAE,YAAY;KACtB,CAAC;IACF,MAAM,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAEpC,MAAM,eAAe,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CACpB;QACE,SAAS;QACT,KAAK,EAAE,eAAe;KACvB,EACD;QACE,SAAS,EAAE,GAAG;QACd,QAAQ,EAAE,IAAI;KACf,CACF,CAAC;IAEF,MAAM,UAAU,GAAG,GAAG,cAAc,OAAO,IAAI,EAAE,CAAC;IAClD,MAAM,aAAa,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,GAAW;IAClC,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAc;IACnD,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACrC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;YAC1B,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QAClF,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,98 @@
1
+ import { resolve, isAbsolute } from 'path';
2
+ import { exists } from './fs.js';
3
+ import { isValidPackageDirectory } from '../core/package-context.js';
4
+ import { parsePackageInstallSpec } from './package-name.js';
5
+ import { ValidationError } from './errors.js';
6
+ import { parseGitSpec } from './git-spec.js';
7
+ import { logger } from './logger.js';
8
+ import { resolvePackageByName } from './package-name-resolution.js';
9
+ /**
10
+ * Classify whether input is a registry package name, local directory, or tarball.
11
+ *
12
+ * Detection order:
13
+ * 1. Ends with .tgz or .tar.gz AND file exists → 'tarball'
14
+ * 2. Starts with /, ./, ../, or is . AND isValidPackageDirectory → 'directory'
15
+ * 3. Otherwise → parse as registry name via parsePackageInstallSpec
16
+ *
17
+ * @param raw - The raw input string from the user
18
+ * @param cwd - Current working directory for resolving relative paths
19
+ * @returns Classification of the input type and relevant information
20
+ */
21
+ export async function classifyPackageInput(raw, cwd = process.cwd()) {
22
+ // Check for git/github specs first
23
+ const gitSpec = parseGitSpec(raw);
24
+ if (gitSpec) {
25
+ return {
26
+ type: 'git',
27
+ gitUrl: gitSpec.url,
28
+ gitRef: gitSpec.ref,
29
+ gitSubdirectory: gitSpec.subdirectory
30
+ };
31
+ }
32
+ // Check for tarball file extension
33
+ const isTarballPath = raw.endsWith('.tgz') || raw.endsWith('.tar.gz');
34
+ // Check if input looks like a path
35
+ const looksLikePath = raw.startsWith('/') ||
36
+ raw.startsWith('./') ||
37
+ raw.startsWith('../') ||
38
+ raw === '.' ||
39
+ raw.startsWith('~/') ||
40
+ raw.startsWith('.openpackage/') || // Include .openpackage paths
41
+ (isAbsolute(raw) && !raw.includes('@'));
42
+ if (isTarballPath || looksLikePath) {
43
+ const resolvedPath = isAbsolute(raw) ? raw : resolve(cwd, raw);
44
+ if (isTarballPath) {
45
+ if (await exists(resolvedPath)) {
46
+ return { type: 'tarball', resolvedPath };
47
+ }
48
+ // File doesn't exist - fall through to treat as registry name
49
+ // (will error later with "file not found" or "package not found")
50
+ }
51
+ // Check if it's a valid package directory OR a plugin
52
+ const isValid = await isValidPackageDirectory(resolvedPath);
53
+ const { detectPluginType } = await import('../core/install/plugin-detector.js');
54
+ const pluginDetection = await detectPluginType(resolvedPath);
55
+ if (isValid || pluginDetection.isPlugin) {
56
+ return { type: 'directory', resolvedPath };
57
+ }
58
+ // Path exists but isn't a valid package? Error
59
+ if (await exists(resolvedPath)) {
60
+ throw new ValidationError(`Path '${raw}' exists but is not a valid OpenPackage directory or Claude Code plugin. ` +
61
+ `Valid packages must contain openpackage.yml or .claude-plugin/plugin.json`);
62
+ }
63
+ }
64
+ // Check if this looks like a simple package name (not an explicit path)
65
+ // Search in workspace/global/registry packages using shared resolution
66
+ if (!looksLikePath && !isTarballPath) {
67
+ const resolution = await resolvePackageByName({
68
+ cwd,
69
+ packageName: raw,
70
+ checkCwd: false, // Install doesn't prioritize CWD
71
+ searchWorkspace: true, // Search workspace packages
72
+ searchGlobal: true, // Search global packages
73
+ searchRegistry: true // Search registry (install needs this)
74
+ });
75
+ if (resolution.found && resolution.path) {
76
+ logger.info('Resolved package name to path for install', {
77
+ packageName: raw,
78
+ path: resolution.path,
79
+ sourceType: resolution.sourceType
80
+ });
81
+ return {
82
+ type: 'directory',
83
+ resolvedPath: resolution.path,
84
+ sourceComparisonInfo: resolution.resolutionInfo
85
+ };
86
+ }
87
+ }
88
+ // Treat as registry package name
89
+ try {
90
+ const { name, version, registryPath } = parsePackageInstallSpec(raw);
91
+ return { type: 'registry', name, version, registryPath };
92
+ }
93
+ catch (error) {
94
+ // If parsing fails, still return registry type - let downstream handle the error
95
+ return { type: 'registry', name: raw };
96
+ }
97
+ }
98
+ //# sourceMappingURL=package-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-input.js","sourceRoot":"","sources":["../../src/utils/package-input.ts"],"names":[],"mappings":"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"}