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
@@ -1,7 +1,6 @@
1
- import { join, basename, dirname } from 'path';
2
- import { getPlatformDefinition, getDetectedPlatforms, getAllPlatforms, getWorkspaceExt, getPackageExt, isExtAllowed } from '../core/platforms.js';
1
+ import { join, basename, dirname, extname } from 'path';
2
+ import { getPlatformDefinition, getDetectedPlatforms, getAllPlatforms, getPlatformDirectoryPathsForPlatform } from '../core/platforms.js';
3
3
  import { logger } from './logger.js';
4
- import { UNIVERSAL_SUBDIRS } from '../constants/index.js';
5
4
  import { normalizePathForProcessing, findSubpathIndex } from './path-normalization.js';
6
5
  /**
7
6
  * Normalize platform names from command line input
@@ -15,62 +14,75 @@ export function normalizePlatforms(platforms) {
15
14
  /**
16
15
  * Platform Mapper Module
17
16
  * Unified functions for mapping between universal subdirs and platform-specific paths
17
+ *
18
+ * Note: This module currently uses subdirs-based mapping. Flow-based path resolution
19
+ * will be added in a future update (Section 6.4 of platform-flows implementation).
18
20
  */
19
21
  /**
20
22
  * Map a universal file path to platform-specific directory and file paths
23
+ *
24
+ * TODO (Section 6.4): Update to support flow-based path resolution when flows are defined
21
25
  */
22
- export function mapUniversalToPlatform(platform, subdir, relPath) {
23
- const definition = getPlatformDefinition(platform);
24
- const subdirDef = definition.subdirs[subdir];
25
- if (!subdirDef) {
26
- throw new Error(`Platform ${platform} does not support subdir ${subdir}`);
26
+ export function mapUniversalToPlatform(platform, subdir, relPath, cwd) {
27
+ const definition = getPlatformDefinition(platform, cwd);
28
+ // Use export flow-based resolution (package → workspace)
29
+ if (definition.export && definition.export.length > 0) {
30
+ return mapUniversalToPlatformWithFlows(definition, subdir, relPath);
27
31
  }
28
- // Build the absolute directory path
29
- const absDir = join(definition.rootDir, subdirDef.path);
30
- const packageExtMatch = relPath.match(/\.[^.]+$/);
31
- const packageExt = packageExtMatch?.[0] ?? '';
32
- const baseName = packageExt ? relPath.slice(0, -packageExt.length) : relPath;
33
- const targetExt = packageExt ? getWorkspaceExt(subdirDef, packageExt) : '';
34
- if (targetExt && !isExtAllowed(subdirDef, targetExt)) {
35
- logger.warn(`Skipped ${relPath} for platform ${platform}: extension ${targetExt} is not allowed in ${subdir}`);
36
- throw new Error(`Extension ${targetExt} is not allowed for subdir ${subdir} on platform ${platform}`);
37
- }
38
- const targetFileName = packageExt ? `${baseName}${targetExt}` : relPath;
39
- const absFile = join(absDir, targetFileName);
40
- return { absDir, absFile };
32
+ // No export flows defined - should not happen with flows-only system
33
+ throw new Error(`Platform ${platform} does not have export flows defined for subdir ${subdir}`);
41
34
  }
42
35
  /**
43
36
  * Map a platform-specific file path back to universal subdir and relative path
37
+ * Supports local platform configs via cwd.
44
38
  */
45
- export function mapPlatformFileToUniversal(absPath) {
39
+ export function mapPlatformFileToUniversal(absPath, cwd = process.cwd()) {
46
40
  const normalizedPath = normalizePathForProcessing(absPath);
47
- // Check each platform
48
- for (const platform of getAllPlatforms({ includeDisabled: true })) {
49
- const definition = getPlatformDefinition(platform);
50
- // Check each subdir in this platform
51
- for (const [subdirName, subdirDef] of Object.entries(definition.subdirs)) {
52
- const subdir = subdirName;
53
- const platformSubdirPath = join(definition.rootDir, subdirDef.path);
54
- // Check if the path contains this platform subdir
55
- const subdirIndex = findSubpathIndex(normalizedPath, platformSubdirPath);
56
- if (subdirIndex !== -1) {
57
- // Extract the relative path within the subdir
58
- // Find where the subdir ends (either /subdir/ or subdir/)
59
- const absPattern = `/${platformSubdirPath}/`;
60
- const relPattern = `${platformSubdirPath}/`;
61
- const isAbsPattern = normalizedPath.indexOf(absPattern) !== -1;
62
- const patternLength = isAbsPattern ? absPattern.length : relPattern.length;
63
- const relPathStart = subdirIndex + patternLength;
64
- let relPath = normalizedPath.substring(relPathStart);
65
- const workspaceExtMatch = relPath.match(/\.[^.]+$/);
66
- if (workspaceExtMatch) {
67
- const workspaceExt = workspaceExtMatch[0];
68
- const packageExt = getPackageExt(subdirDef, workspaceExt);
69
- if (packageExt !== workspaceExt) {
70
- relPath = relPath.slice(0, -workspaceExt.length) + packageExt;
41
+ // Check each platform using flows
42
+ for (const platform of getAllPlatforms({ includeDisabled: true }, cwd)) {
43
+ const definition = getPlatformDefinition(platform, cwd);
44
+ // TODO: Implement full flow-based reverse mapping
45
+ // For now, extract subdirs from export flows and do basic mapping (package → workspace)
46
+ if (definition.export && definition.export.length > 0) {
47
+ for (const flow of definition.export) {
48
+ const toPattern = typeof flow.to === 'string' ? flow.to : Object.keys(flow.to)[0];
49
+ if (!toPattern)
50
+ continue;
51
+ // Extract directory from 'to' pattern (e.g., ".cursor/rules/{name}.mdc" -> ".cursor/rules")
52
+ const parts = toPattern.split('/');
53
+ const platformSubdirPath = parts.slice(0, -1).join('/');
54
+ // Check if the path contains this platform subdir
55
+ const subdirIndex = findSubpathIndex(normalizedPath, platformSubdirPath);
56
+ if (subdirIndex !== -1) {
57
+ // Extract universal subdir from 'from' pattern
58
+ // For array patterns, use the first pattern
59
+ const fromPattern = Array.isArray(flow.from) ? flow.from[0] : flow.from;
60
+ const fromParts = fromPattern.split('/');
61
+ const subdir = fromParts[0];
62
+ // Extract the relative path within the subdir
63
+ const absPattern = `/${platformSubdirPath}/`;
64
+ const relPattern = `${platformSubdirPath}/`;
65
+ const isAbsPattern = normalizedPath.indexOf(absPattern) !== -1;
66
+ const patternLength = isAbsPattern ? absPattern.length : relPattern.length;
67
+ const relPathStart = subdirIndex + patternLength;
68
+ let relPath = normalizedPath.substring(relPathStart);
69
+ // Handle extension transformations from flow
70
+ const workspaceExtMatch = relPath.match(/\.[^.]+$/);
71
+ const toExtMatch = toPattern.match(/\.[^./]+$/);
72
+ // For array patterns, use the first pattern
73
+ const fromPatternStr = Array.isArray(flow.from) ? flow.from[0] : flow.from;
74
+ const fromExtMatch = fromPatternStr.match(/\.[^./]+$/);
75
+ if (workspaceExtMatch && toExtMatch && fromExtMatch) {
76
+ const workspaceExt = workspaceExtMatch[0];
77
+ const toExt = toExtMatch[0];
78
+ const fromExt = fromExtMatch[0];
79
+ if (workspaceExt === toExt && toExt !== fromExt) {
80
+ // Transform back to package extension
81
+ relPath = relPath.slice(0, -workspaceExt.length) + fromExt;
82
+ }
71
83
  }
84
+ return { platform, subdir, relPath };
72
85
  }
73
- return { platform, subdir, relPath };
74
86
  }
75
87
  }
76
88
  }
@@ -84,11 +96,11 @@ export async function resolveInstallTargets(cwd, file) {
84
96
  const targets = [];
85
97
  for (const platform of detectedPlatforms) {
86
98
  try {
87
- const { absDir, absFile } = mapUniversalToPlatform(platform, file.universalSubdir, file.relPath);
99
+ const { relDir, relFile } = mapUniversalToPlatform(platform, file.universalSubdir, file.relPath, cwd);
88
100
  targets.push({
89
101
  platform,
90
- absDir: join(cwd, absDir),
91
- absFile: join(cwd, absFile)
102
+ absDir: join(cwd, relDir),
103
+ absFile: join(cwd, relFile)
92
104
  });
93
105
  }
94
106
  catch (error) {
@@ -100,26 +112,10 @@ export async function resolveInstallTargets(cwd, file) {
100
112
  }
101
113
  /**
102
114
  * Get all platform subdirectories for a given platform and working directory
115
+ * Returns dynamic subdirs map for extensibility with custom universal subdirs
103
116
  */
104
117
  export function getAllPlatformSubdirs(platform, cwd) {
105
- const definition = getPlatformDefinition(platform);
106
- const rulesSubdir = definition.subdirs[UNIVERSAL_SUBDIRS.RULES];
107
- const result = {
108
- rootDir: join(cwd, definition.rootDir),
109
- rulesDir: join(cwd, definition.rootDir, rulesSubdir?.path || '')
110
- };
111
- if (definition.rootFile) {
112
- result.rootFile = join(cwd, definition.rootFile);
113
- }
114
- const commandsSubdir = definition.subdirs[UNIVERSAL_SUBDIRS.COMMANDS];
115
- if (commandsSubdir) {
116
- result.commandsDir = join(cwd, definition.rootDir, commandsSubdir.path);
117
- }
118
- const agentsSubdir = definition.subdirs[UNIVERSAL_SUBDIRS.AGENTS];
119
- if (agentsSubdir) {
120
- result.agentsDir = join(cwd, definition.rootDir, agentsSubdir.path);
121
- }
122
- return result;
118
+ return getPlatformDirectoryPathsForPlatform(platform, cwd);
123
119
  }
124
120
  /**
125
121
  * Get the appropriate target directory for saving a file based on its registry path
@@ -133,6 +129,164 @@ export function resolveTargetDirectory(targetPath, registryPath) {
133
129
  }
134
130
  return join(targetPath, dir);
135
131
  }
132
+ /**
133
+ * Map universal path to platform-specific path using flows configuration.
134
+ * Handles glob patterns correctly by resolving them to concrete file paths.
135
+ */
136
+ function mapUniversalToPlatformWithFlows(definition, subdir, relPath) {
137
+ const flows = definition.export || [];
138
+ // Construct the full source path for matching
139
+ const sourcePath = `${subdir}/${relPath}`;
140
+ const candidateFlows = flows.filter((flow) => {
141
+ const fromPattern = Array.isArray(flow.from) ? flow.from[0] : flow.from;
142
+ return fromPattern.startsWith(`${subdir}/`);
143
+ });
144
+ if (candidateFlows.length === 0) {
145
+ throw new Error(`Platform ${definition.id} does not support subdir ${subdir}`);
146
+ }
147
+ // Find a flow that matches this source path
148
+ const matchingFlow = candidateFlows.find((flow) => {
149
+ const fromPattern = Array.isArray(flow.from) ? flow.from[0] : flow.from;
150
+ // Check if the source path matches the pattern
151
+ // Handle glob patterns with ** and *
152
+ if (fromPattern.includes('*')) {
153
+ // Convert glob pattern to regex for matching
154
+ // Use placeholders to prevent replacement interference
155
+ const regexPattern = fromPattern
156
+ .replace(/\./g, '\\.')
157
+ .replace(/\*\*\//g, '___DOUBLESTAR_SLASH___') // **/ matches zero or more segments
158
+ .replace(/\/\*\*/g, '___SLASH_DOUBLESTAR___') // /** matches zero or more segments
159
+ .replace(/\*\*/g, '___DOUBLESTAR___') // ** alone matches anything
160
+ .replace(/\*/g, '[^/]+') // * matches filename characters
161
+ .replace(/___DOUBLESTAR_SLASH___/g, '(?:.*/)?') // Replace placeholders
162
+ .replace(/___SLASH_DOUBLESTAR___/g, '(?:/.*)?')
163
+ .replace(/___DOUBLESTAR___/g, '.*');
164
+ const regex = new RegExp(`^${regexPattern}$`);
165
+ return regex.test(sourcePath);
166
+ }
167
+ // Exact match
168
+ return fromPattern === sourcePath;
169
+ });
170
+ if (!matchingFlow) {
171
+ const sourceExt = extname(sourcePath);
172
+ const expectedExts = Array.from(new Set(candidateFlows
173
+ .map((flow) => {
174
+ const fromPattern = Array.isArray(flow.from) ? flow.from[0] : flow.from;
175
+ return extname(fromPattern);
176
+ })
177
+ .filter((ext) => typeof ext === 'string' && ext.length > 0)));
178
+ if (sourceExt && expectedExts.length > 0 && !expectedExts.includes(sourceExt)) {
179
+ logger.warn(`Skipped ${relPath} for platform ${definition.id}: extension ${sourceExt} does not match flow pattern`, { subdir, expectedExts });
180
+ throw new Error(`File extension ${sourceExt} is not allowed for subdir ${subdir} on platform ${definition.id}`);
181
+ }
182
+ throw new Error(`Platform ${definition.id} does not support path ${sourcePath}`);
183
+ }
184
+ const fromPattern = matchingFlow.from;
185
+ const toPattern = matchingFlow.to;
186
+ // Get the target path string (handle multi-target by taking first)
187
+ let targetPathPattern;
188
+ if (typeof toPattern === 'string') {
189
+ targetPathPattern = toPattern;
190
+ }
191
+ else {
192
+ // Multi-target flow - use first target
193
+ const targets = toPattern;
194
+ const firstTargetConfig = Object.values(targets)[0];
195
+ targetPathPattern = typeof firstTargetConfig === 'string' ? firstTargetConfig : firstTargetConfig.to;
196
+ if (typeof targetPathPattern !== 'string') {
197
+ throw new Error(`Invalid multi-target flow configuration for platform ${definition.id}`);
198
+ }
199
+ }
200
+ // Resolve the target path from the glob pattern
201
+ // For array patterns, use the first pattern
202
+ const fromPatternStr = Array.isArray(fromPattern) ? fromPattern[0] : fromPattern;
203
+ const targetPath = resolveTargetPathFromGlob(sourcePath, fromPatternStr, targetPathPattern);
204
+ // Normalize: callers expect workspace-relative paths and will join them with `cwd`.
205
+ const workspaceRoot = normalizePathForProcessing(process.cwd());
206
+ let relTarget = normalizePathForProcessing(targetPath);
207
+ const workspaceRootNoLeading = workspaceRoot.replace(/^\/+/, '');
208
+ // If targetPath accidentally includes the workspace root, strip it back to a workspace-relative path.
209
+ if (relTarget === workspaceRoot) {
210
+ relTarget = '';
211
+ }
212
+ else if (relTarget.startsWith(`${workspaceRoot}/`)) {
213
+ relTarget = relTarget.slice(workspaceRoot.length + 1);
214
+ }
215
+ else if (workspaceRootNoLeading && relTarget.startsWith(`${workspaceRootNoLeading}/`)) {
216
+ relTarget = relTarget.slice(workspaceRootNoLeading.length + 1);
217
+ }
218
+ // Ensure it's relative (no leading slash), but keep leading dot dirs like ".claude".
219
+ relTarget = relTarget.replace(/^\/+/, '');
220
+ const relFile = relTarget;
221
+ const relDir = dirname(relFile);
222
+ return { relDir, relFile };
223
+ }
224
+ /**
225
+ * Resolve target path from glob patterns
226
+ * This implements the same logic as flow-executor's resolveTargetFromGlob
227
+ */
228
+ function resolveTargetPathFromGlob(sourcePath, fromPattern, toPattern) {
229
+ // If 'to' pattern has glob, map the structure
230
+ if (toPattern.includes('*')) {
231
+ // Handle ** recursive patterns
232
+ if (fromPattern.includes('**') && toPattern.includes('**')) {
233
+ // Extract the base directories before **
234
+ const fromParts = fromPattern.split('**');
235
+ const toParts = toPattern.split('**');
236
+ const fromBase = fromParts[0].replace(/\/$/, '');
237
+ const toBase = toParts[0].replace(/\/$/, '');
238
+ // Get the file pattern after **
239
+ const fromSuffix = fromParts[1] || '';
240
+ const toSuffix = toParts[1] || '';
241
+ // Extract the relative path after the base directory
242
+ let relativeSubpath = sourcePath;
243
+ if (fromBase) {
244
+ relativeSubpath = sourcePath.startsWith(fromBase + '/')
245
+ ? sourcePath.slice(fromBase.length + 1)
246
+ : sourcePath;
247
+ }
248
+ // Handle extension mapping if suffixes specify extensions
249
+ // e.g., /**/*.md -> /**/*.mdc
250
+ if (fromSuffix && toSuffix) {
251
+ const fromExt = fromSuffix.replace(/^\/?\*+/, '');
252
+ const toExt = toSuffix.replace(/^\/?\*+/, '');
253
+ if (fromExt && toExt && fromExt !== toExt) {
254
+ relativeSubpath = relativeSubpath.replace(new RegExp(fromExt.replace('.', '\\.') + '$'), toExt);
255
+ }
256
+ }
257
+ // Build target path
258
+ const targetPath = toBase ? join(toBase, relativeSubpath) : relativeSubpath;
259
+ return targetPath;
260
+ }
261
+ // Handle single-level * patterns
262
+ const sourceFileName = basename(sourcePath);
263
+ const sourceExt = extname(sourcePath);
264
+ const sourceBase = basename(sourcePath, sourceExt);
265
+ const toParts = toPattern.split('*');
266
+ const toPrefix = toParts[0];
267
+ const toSuffix = toParts[1] || '';
268
+ const targetExt = toSuffix.startsWith('.') ? toSuffix : (sourceExt + toSuffix);
269
+ const targetFileName = sourceBase + targetExt;
270
+ const resolvedTo = toPrefix + targetFileName;
271
+ return resolvedTo;
272
+ }
273
+ // Handle {name} placeholder pattern
274
+ if (toPattern.includes('{name}')) {
275
+ const fileName = basename(sourcePath);
276
+ const fileExt = extname(sourcePath);
277
+ const baseName = fileName.slice(0, -fileExt.length);
278
+ let targetPath = toPattern.replace('{name}', baseName);
279
+ // Check if the target pattern changes the extension
280
+ const targetExt = extname(targetPath);
281
+ // If no extension in pattern, preserve original extension
282
+ if (!targetExt && fileExt) {
283
+ targetPath += fileExt;
284
+ }
285
+ return targetPath;
286
+ }
287
+ // No glob or placeholder in target - use as-is
288
+ return toPattern;
289
+ }
136
290
  /**
137
291
  * Get the appropriate target file path for saving
138
292
  * Handles platform-specific file naming conventions using platform definitions
@@ -1 +1 @@
1
- {"version":3,"file":"platform-mapper.js","sourceRoot":"","sources":["../../src/utils/platform-mapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform-mapper.js","sourceRoot":"","sources":["../../src/utils/platform-mapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Platform Root Files Utilities
3
+ * Shared utilities for collecting and working with platform root file names
4
+ */
5
+ import { FILE_PATTERNS, PACKAGE_ROOT_DIRS } from '../constants/index.js';
6
+ import { getPlatformDefinition } from '../core/platforms.js';
7
+ /**
8
+ * Get all platform root file names (including universal AGENTS.md) for the given platforms.
9
+ * @param platforms - Array of platforms to collect root files from
10
+ * @param cwd - Optional cwd for platform config overrides
11
+ * @returns Set of root file names
12
+ */
13
+ export function getPlatformRootFileNames(platforms, cwd) {
14
+ const names = new Set([FILE_PATTERNS.AGENTS_MD]);
15
+ for (const platform of platforms) {
16
+ const def = getPlatformDefinition(platform, cwd);
17
+ if (def.rootFile) {
18
+ names.add(def.rootFile);
19
+ }
20
+ }
21
+ return names;
22
+ }
23
+ /**
24
+ * Strip the root copy prefix from a path if it starts with `root/`.
25
+ * @param path - Path that may start with `root/`
26
+ * @returns Path with `root/` prefix stripped, or original path if it doesn't start with `root/`
27
+ */
28
+ export function stripRootCopyPrefix(path) {
29
+ const prefix = `${PACKAGE_ROOT_DIRS.ROOT_COPY}/`;
30
+ if (path.startsWith(prefix)) {
31
+ const stripped = path.slice(prefix.length);
32
+ return stripped.length > 0 ? stripped : null;
33
+ }
34
+ return null;
35
+ }
36
+ /**
37
+ * Check if a path is a root copy path (starts with `root/`).
38
+ * @param path - Path to check
39
+ * @returns True if path starts with `root/`
40
+ */
41
+ export function isRootCopyPath(path) {
42
+ return path.startsWith(`${PACKAGE_ROOT_DIRS.ROOT_COPY}/`);
43
+ }
44
+ //# sourceMappingURL=platform-root-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-root-files.js","sourceRoot":"","sources":["../../src/utils/platform-root-files.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAiB,MAAM,sBAAsB,CAAC;AAE5E;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,SAAqB,EAAE,GAAY;IAC1E,MAAM,KAAK,GAAG,IAAI,GAAG,CAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;IACzD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,qBAAqB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACjD,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjB,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,MAAM,MAAM,GAAG,GAAG,iBAAiB,CAAC,SAAS,GAAG,CAAC;IACjD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3C,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,iBAAiB,CAAC,SAAS,GAAG,CAAC,CAAC;AAC5D,CAAC"}
@@ -2,43 +2,36 @@
2
2
  * Platform Utilities Module
3
3
  * Utility functions for platform management, detection, and file operations
4
4
  */
5
- import { join } from 'path';
6
5
  import { getPathLeaf } from './path-normalization.js';
7
6
  import { FILE_PATTERNS } from '../constants/index.js';
8
- import { getAllPlatforms, PLATFORM_DEFINITIONS, detectAllPlatforms, getPlatformDefinition } from '../core/platforms.js';
9
- /**
10
- * Enhanced platform detection with detailed information
11
- */
12
- export async function detectPlatformsWithDetails(cwd) {
13
- const allResults = await detectAllPlatforms(cwd);
14
- const detected = allResults.filter(result => result.detected).map(result => result.name);
15
- // Group by category - simplified since we removed categories
16
- const byCategory = allResults.reduce((acc, result) => {
17
- if (result.detected) {
18
- acc['detected'] = acc['detected'] || [];
19
- acc['detected'].push(result.name);
20
- }
21
- return acc;
22
- }, {});
23
- return { detected, allResults, byCategory };
24
- }
7
+ import { getAllPlatforms, getPlatformRootFiles as getPlatformRootFileNames, getPlatformDefinition, getPlatformDirLookup } from '../core/platforms.js';
8
+ /* Removed unused detectPlatformsWithDetails - use detectAllPlatforms directly for details */
25
9
  /**
26
10
  * Extract platform name from source directory path
27
11
  * Uses platform definitions for scalable platform detection
12
+ * @param cwd - Optional cwd for local platform config overrides
28
13
  */
29
- export function getPlatformNameFromSource(sourceDir) {
30
- // Use platform definitions to find matching platform
31
- for (const platform of getAllPlatforms()) {
32
- const definition = PLATFORM_DEFINITIONS[platform];
33
- // Check if sourceDir includes the platform's root directory
34
- if (sourceDir.includes(definition.rootDir)) {
35
- return platform;
36
- }
37
- // Also check subdirs if they exist
38
- for (const [subdirName, subdirDef] of Object.entries(definition.subdirs)) {
39
- const subdirPath = join(definition.rootDir, subdirDef.path);
40
- if (sourceDir.includes(subdirPath)) {
41
- return platform;
14
+ export function getPlatformNameFromSource(sourceDir, cwd) {
15
+ // Quick lookup via dir map first
16
+ const dirLookup = getPlatformDirLookup(cwd);
17
+ const fromDir = dirLookup[sourceDir];
18
+ if (fromDir)
19
+ return fromDir;
20
+ // Full scan for flow-based matches
21
+ for (const platform of getAllPlatforms({ includeDisabled: true }, cwd)) {
22
+ const definition = getPlatformDefinition(platform, cwd);
23
+ // Check if sourceDir matches any export flow 'to' pattern directory (package → workspace)
24
+ if (definition.export && definition.export.length > 0) {
25
+ for (const flow of definition.export) {
26
+ const toPattern = typeof flow.to === 'string' ? flow.to : Object.keys(flow.to)[0];
27
+ if (toPattern) {
28
+ // Extract directory from 'to' pattern
29
+ const parts = toPattern.split('/');
30
+ const subdirPath = parts.slice(0, -1).join('/');
31
+ if (sourceDir.includes(subdirPath)) {
32
+ return platform;
33
+ }
34
+ }
42
35
  }
43
36
  }
44
37
  }
@@ -48,33 +41,21 @@ export function getPlatformNameFromSource(sourceDir) {
48
41
  /**
49
42
  * Get all platform directory names
50
43
  * Returns an array of all supported platform directory names
44
+ * @param cwd - Optional cwd for local overrides
51
45
  */
52
- export function getAllPlatformDirs() {
53
- const dirs = new Set();
54
- for (const platform of getAllPlatforms({ includeDisabled: true })) {
55
- dirs.add(PLATFORM_DEFINITIONS[platform].rootDir);
56
- }
57
- return Array.from(dirs);
46
+ export function getAllPlatformDirs(cwd) {
47
+ return Object.keys(getPlatformDirLookup(cwd));
58
48
  }
59
- let platformRootFilesCache = null;
60
- function buildPlatformRootFiles() {
61
- const rootFiles = new Set();
62
- for (const platform of getAllPlatforms()) {
63
- const def = getPlatformDefinition(platform);
64
- if (def.rootFile) {
65
- rootFiles.add(def.rootFile);
66
- }
67
- }
49
+ /**
50
+ * Get all platform root files as a Set, including AGENTS.md universal file.
51
+ * @param cwd - Optional cwd for local overrides
52
+ */
53
+ export function getPlatformRootFiles(cwd) {
54
+ const rootFiles = new Set(getPlatformRootFileNames(cwd)); // from platforms.ts, excludes AGENTS.md
68
55
  rootFiles.add(FILE_PATTERNS.AGENTS_MD);
69
56
  return rootFiles;
70
57
  }
71
- export function getPlatformRootFiles() {
72
- if (!platformRootFilesCache) {
73
- platformRootFilesCache = buildPlatformRootFiles();
74
- }
75
- return platformRootFilesCache;
76
- }
77
- export function isPlatformRootFile(fileName) {
78
- return getPlatformRootFiles().has(fileName);
58
+ export function isPlatformRootFile(fileName, cwd) {
59
+ return getPlatformRootFiles(cwd).has(fileName);
79
60
  }
80
61
  //# sourceMappingURL=platform-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"platform-utils.js","sourceRoot":"","sources":["../../src/utils/platform-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform-utils.js","sourceRoot":"","sources":["../../src/utils/platform-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EACL,eAAe,EACf,oBAAoB,IAAI,wBAAwB,EAChD,qBAAqB,EACrB,oBAAoB,EAIrB,MAAM,sBAAsB,CAAC;AAE9B,6FAA6F;AAE7F;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,SAAiB,EAAE,GAAY;IACvE,iCAAiC;IACjC,MAAM,SAAS,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IACrC,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAE5B,mCAAmC;IACnC,KAAK,MAAM,QAAQ,IAAI,eAAe,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC;QACvE,MAAM,UAAU,GAAG,qBAAqB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAExD,0FAA0F;QAC1F,IAAI,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtD,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;gBACrC,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClF,IAAI,SAAS,EAAE,CAAC;oBACd,sCAAsC;oBACtC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACnC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAEhD,IAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;wBACnC,OAAO,QAAQ,CAAC;oBAClB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,8BAA8B;IAC9B,OAAO,WAAW,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;AAC7C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC7C,OAAO,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAY;IAC/C,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,wCAAwC;IACnG,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACvC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAAgB,EAAE,GAAY;IAC/D,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACjD,CAAC"}