opkg 0.6.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (487) hide show
  1. package/README.md +109 -186
  2. package/assets/openpackage_ascii_dark.png +0 -0
  3. package/assets/openpackage_ascii_light.png +0 -0
  4. package/dist/commands/add.js +34 -10
  5. package/dist/commands/add.js.map +1 -1
  6. package/dist/commands/apply.js +16 -0
  7. package/dist/commands/apply.js.map +1 -0
  8. package/dist/commands/delete.js +1 -1
  9. package/dist/commands/delete.js.map +1 -1
  10. package/dist/commands/install.js +177 -8
  11. package/dist/commands/install.js.map +1 -1
  12. package/dist/commands/list.js +2 -2
  13. package/dist/commands/list.js.map +1 -1
  14. package/dist/commands/login.js +1 -1
  15. package/dist/commands/login.js.map +1 -1
  16. package/dist/commands/logout.js +1 -1
  17. package/dist/commands/logout.js.map +1 -1
  18. package/dist/commands/new.js +125 -0
  19. package/dist/commands/new.js.map +1 -0
  20. package/dist/commands/pack.js +7 -13
  21. package/dist/commands/pack.js.map +1 -1
  22. package/dist/commands/pull.js +1 -1
  23. package/dist/commands/pull.js.map +1 -1
  24. package/dist/commands/push.js +1 -1
  25. package/dist/commands/push.js.map +1 -1
  26. package/dist/commands/remove.js +63 -0
  27. package/dist/commands/remove.js.map +1 -0
  28. package/dist/commands/save.js +11 -17
  29. package/dist/commands/save.js.map +1 -1
  30. package/dist/commands/set.js +33 -0
  31. package/dist/commands/set.js.map +1 -0
  32. package/dist/commands/show.js +16 -94
  33. package/dist/commands/show.js.map +1 -1
  34. package/dist/commands/status.js +26 -701
  35. package/dist/commands/status.js.map +1 -1
  36. package/dist/commands/uninstall.js +14 -427
  37. package/dist/commands/uninstall.js.map +1 -1
  38. package/dist/constants/index.js +72 -16
  39. package/dist/constants/index.js.map +1 -1
  40. package/dist/core/add/add-conflict-handler.js +1 -8
  41. package/dist/core/add/add-conflict-handler.js.map +1 -1
  42. package/dist/core/add/add-pipeline.js +12 -10
  43. package/dist/core/add/add-pipeline.js.map +1 -1
  44. package/dist/core/add/add-to-source-pipeline.js +123 -0
  45. package/dist/core/add/add-to-source-pipeline.js.map +1 -0
  46. package/dist/core/add/package-index-updater.js +77 -78
  47. package/dist/core/add/package-index-updater.js.map +1 -1
  48. package/dist/core/add/platform-path-transformer.js +6 -4
  49. package/dist/core/add/platform-path-transformer.js.map +1 -1
  50. package/dist/core/add/source-collector.js +2 -3
  51. package/dist/core/add/source-collector.js.map +1 -1
  52. package/dist/core/apply/apply-pipeline.js +110 -0
  53. package/dist/core/apply/apply-pipeline.js.map +1 -0
  54. package/dist/core/dependency-resolver.js +263 -21
  55. package/dist/core/dependency-resolver.js.map +1 -1
  56. package/dist/core/discovery/file-discovery.js +1 -2
  57. package/dist/core/discovery/file-discovery.js.map +1 -1
  58. package/dist/core/discovery/platform-files-discovery.js +33 -18
  59. package/dist/core/discovery/platform-files-discovery.js.map +1 -1
  60. package/dist/core/flows/flow-executor.js +974 -0
  61. package/dist/core/flows/flow-executor.js.map +1 -0
  62. package/dist/core/flows/flow-inverter.js +442 -0
  63. package/dist/core/flows/flow-inverter.js.map +1 -0
  64. package/dist/core/flows/flow-key-extractor.js +101 -0
  65. package/dist/core/flows/flow-key-extractor.js.map +1 -0
  66. package/dist/core/flows/flow-key-mapper.js +382 -0
  67. package/dist/core/flows/flow-key-mapper.js.map +1 -0
  68. package/dist/core/flows/flow-transforms.js +632 -0
  69. package/dist/core/flows/flow-transforms.js.map +1 -0
  70. package/dist/core/flows/map-pipeline/context.js +73 -0
  71. package/dist/core/flows/map-pipeline/context.js.map +1 -0
  72. package/dist/core/flows/map-pipeline/index.js +156 -0
  73. package/dist/core/flows/map-pipeline/index.js.map +1 -0
  74. package/dist/core/flows/map-pipeline/operations/copy.js +104 -0
  75. package/dist/core/flows/map-pipeline/operations/copy.js.map +1 -0
  76. package/dist/core/flows/map-pipeline/operations/pipe.js +70 -0
  77. package/dist/core/flows/map-pipeline/operations/pipe.js.map +1 -0
  78. package/dist/core/flows/map-pipeline/operations/rename.js +102 -0
  79. package/dist/core/flows/map-pipeline/operations/rename.js.map +1 -0
  80. package/dist/core/flows/map-pipeline/operations/set.js +50 -0
  81. package/dist/core/flows/map-pipeline/operations/set.js.map +1 -0
  82. package/dist/core/flows/map-pipeline/operations/switch.js +79 -0
  83. package/dist/core/flows/map-pipeline/operations/switch.js.map +1 -0
  84. package/dist/core/flows/map-pipeline/operations/transform.js +543 -0
  85. package/dist/core/flows/map-pipeline/operations/transform.js.map +1 -0
  86. package/dist/core/flows/map-pipeline/operations/unset.js +65 -0
  87. package/dist/core/flows/map-pipeline/operations/unset.js.map +1 -0
  88. package/dist/core/flows/map-pipeline/types.js +8 -0
  89. package/dist/core/flows/map-pipeline/types.js.map +1 -0
  90. package/dist/core/flows/map-pipeline/utils.js +278 -0
  91. package/dist/core/flows/map-pipeline/utils.js.map +1 -0
  92. package/dist/core/flows/platform-converter.js +328 -0
  93. package/dist/core/flows/platform-converter.js.map +1 -0
  94. package/dist/core/flows/source-resolver.js +192 -0
  95. package/dist/core/flows/source-resolver.js.map +1 -0
  96. package/dist/core/flows/toml-domain-transforms.js +23 -0
  97. package/dist/core/flows/toml-domain-transforms.js.map +1 -0
  98. package/dist/core/install/bulk-install-pipeline.js +68 -7
  99. package/dist/core/install/bulk-install-pipeline.js.map +1 -1
  100. package/dist/core/install/canonical-plan.js +3 -3
  101. package/dist/core/install/canonical-plan.js.map +1 -1
  102. package/dist/core/install/dry-run.js +3 -3
  103. package/dist/core/install/dry-run.js.map +1 -1
  104. package/dist/core/install/flow-based-installer.js +1158 -0
  105. package/dist/core/install/flow-based-installer.js.map +1 -0
  106. package/dist/core/install/flow-workspace-tracker.js +111 -0
  107. package/dist/core/install/flow-workspace-tracker.js.map +1 -0
  108. package/dist/core/install/format-detector.js +228 -0
  109. package/dist/core/install/format-detector.js.map +1 -0
  110. package/dist/core/install/git-package-loader.js +20 -0
  111. package/dist/core/install/git-package-loader.js.map +1 -0
  112. package/dist/core/install/install-errors.js +1 -1
  113. package/dist/core/install/install-errors.js.map +1 -1
  114. package/dist/core/install/install-flow.js +34 -14
  115. package/dist/core/install/install-flow.js.map +1 -1
  116. package/dist/core/install/install-pipeline.js +52 -17
  117. package/dist/core/install/install-pipeline.js.map +1 -1
  118. package/dist/core/install/install-reporting.js +26 -8
  119. package/dist/core/install/install-reporting.js.map +1 -1
  120. package/dist/core/install/local-source-resolution.js +103 -0
  121. package/dist/core/install/local-source-resolution.js.map +1 -0
  122. package/dist/core/install/marketplace-handler.js +221 -0
  123. package/dist/core/install/marketplace-handler.js.map +1 -0
  124. package/dist/core/install/path-install-pipeline.js +241 -0
  125. package/dist/core/install/path-install-pipeline.js.map +1 -0
  126. package/dist/core/install/path-package-loader.js +116 -0
  127. package/dist/core/install/path-package-loader.js.map +1 -0
  128. package/dist/core/install/plugin-detector.js +72 -0
  129. package/dist/core/install/plugin-detector.js.map +1 -0
  130. package/dist/core/install/plugin-to-universal-converter.js +218 -0
  131. package/dist/core/install/plugin-to-universal-converter.js.map +1 -0
  132. package/dist/core/install/plugin-transformer.js +191 -0
  133. package/dist/core/install/plugin-transformer.js.map +1 -0
  134. package/dist/core/install/version-selection.js +1 -1
  135. package/dist/core/install/version-selection.js.map +1 -1
  136. package/dist/core/openpackage.js +40 -22
  137. package/dist/core/openpackage.js.map +1 -1
  138. package/dist/core/pack/pack-output.js +62 -0
  139. package/dist/core/pack/pack-output.js.map +1 -0
  140. package/dist/core/pack/pack-pipeline.js +186 -0
  141. package/dist/core/pack/pack-pipeline.js.map +1 -0
  142. package/dist/core/package-context.js +45 -70
  143. package/dist/core/package-context.js.map +1 -1
  144. package/dist/core/package-creation.js +203 -0
  145. package/dist/core/package-creation.js.map +1 -0
  146. package/dist/core/package.js +20 -6
  147. package/dist/core/package.js.map +1 -1
  148. package/dist/core/platforms.js +665 -209
  149. package/dist/core/platforms.js.map +1 -1
  150. package/dist/core/push/push-context.js +1 -1
  151. package/dist/core/push/push-context.js.map +1 -1
  152. package/dist/core/push/push-upload.js +2 -2
  153. package/dist/core/push/push-upload.js.map +1 -1
  154. package/dist/core/registry.js +6 -6
  155. package/dist/core/registry.js.map +1 -1
  156. package/dist/core/remote-pull.js +2 -2
  157. package/dist/core/remote-pull.js.map +1 -1
  158. package/dist/core/remove/removal-collector.js +52 -0
  159. package/dist/core/remove/removal-collector.js.map +1 -0
  160. package/dist/core/remove/removal-confirmation.js +39 -0
  161. package/dist/core/remove/removal-confirmation.js.map +1 -0
  162. package/dist/core/remove/remove-from-source-pipeline.js +173 -0
  163. package/dist/core/remove/remove-from-source-pipeline.js.map +1 -0
  164. package/dist/core/save/constants.js +3 -3
  165. package/dist/core/save/constants.js.map +1 -1
  166. package/dist/core/save/flow-based-saver.js +270 -0
  167. package/dist/core/save/flow-based-saver.js.map +1 -0
  168. package/dist/core/save/name-resolution.js +1 -1
  169. package/dist/core/save/name-resolution.js.map +1 -1
  170. package/dist/core/save/package-yml-generator.js +4 -5
  171. package/dist/core/save/package-yml-generator.js.map +1 -1
  172. package/dist/core/save/save-candidate-builder.js +215 -0
  173. package/dist/core/save/save-candidate-builder.js.map +1 -0
  174. package/dist/core/save/save-candidate-loader.js +12 -11
  175. package/dist/core/save/save-candidate-loader.js.map +1 -1
  176. package/dist/core/save/save-conflict-analyzer.js +150 -0
  177. package/dist/core/save/save-conflict-analyzer.js.map +1 -0
  178. package/dist/core/save/save-conflict-resolution.js +28 -14
  179. package/dist/core/save/save-conflict-resolution.js.map +1 -1
  180. package/dist/core/save/save-conflict-resolver.js +31 -275
  181. package/dist/core/save/save-conflict-resolver.js.map +1 -1
  182. package/dist/core/save/save-group-builder.js +52 -0
  183. package/dist/core/save/save-group-builder.js.map +1 -0
  184. package/dist/core/save/save-interactive-resolver.js +190 -0
  185. package/dist/core/save/save-interactive-resolver.js.map +1 -0
  186. package/dist/core/save/save-pipeline.js +58 -34
  187. package/dist/core/save/save-pipeline.js.map +1 -1
  188. package/dist/core/save/save-platform-handler.js +53 -0
  189. package/dist/core/save/save-platform-handler.js.map +1 -0
  190. package/dist/core/save/save-resolution-executor.js +145 -0
  191. package/dist/core/save/save-resolution-executor.js.map +1 -0
  192. package/dist/core/save/save-result-reporter.js +167 -0
  193. package/dist/core/save/save-result-reporter.js.map +1 -0
  194. package/dist/core/save/save-to-source-pipeline.js +154 -0
  195. package/dist/core/save/save-to-source-pipeline.js.map +1 -0
  196. package/dist/core/save/save-versioning.js +4 -4
  197. package/dist/core/save/save-versioning.js.map +1 -1
  198. package/dist/core/save/save-write-coordinator.js +204 -0
  199. package/dist/core/save/save-write-coordinator.js.map +1 -0
  200. package/dist/core/save/save-yml-resolution.js +28 -216
  201. package/dist/core/save/save-yml-resolution.js.map +1 -1
  202. package/dist/core/save/workspace-rename.js +7 -8
  203. package/dist/core/save/workspace-rename.js.map +1 -1
  204. package/dist/core/set/set-output.js +72 -0
  205. package/dist/core/set/set-output.js.map +1 -0
  206. package/dist/core/set/set-pipeline.js +361 -0
  207. package/dist/core/set/set-pipeline.js.map +1 -0
  208. package/dist/core/set/set-types.js +5 -0
  209. package/dist/core/set/set-types.js.map +1 -0
  210. package/dist/core/show/package-resolver.js +257 -0
  211. package/dist/core/show/package-resolver.js.map +1 -0
  212. package/dist/core/show/scope-discovery.js +165 -0
  213. package/dist/core/show/scope-discovery.js.map +1 -0
  214. package/dist/core/show/show-output.js +168 -0
  215. package/dist/core/show/show-output.js.map +1 -0
  216. package/dist/core/show/show-pipeline.js +113 -0
  217. package/dist/core/show/show-pipeline.js.map +1 -0
  218. package/dist/core/show/show-types.js +5 -0
  219. package/dist/core/show/show-types.js.map +1 -0
  220. package/dist/core/source-resolution/dependency-graph.js +104 -0
  221. package/dist/core/source-resolution/dependency-graph.js.map +1 -0
  222. package/dist/core/source-resolution/resolve-mutable-source.js +109 -0
  223. package/dist/core/source-resolution/resolve-mutable-source.js.map +1 -0
  224. package/dist/core/source-resolution/resolve-package-source.js +29 -0
  225. package/dist/core/source-resolution/resolve-package-source.js.map +1 -0
  226. package/dist/core/source-resolution/resolve-registry-version.js +35 -0
  227. package/dist/core/source-resolution/resolve-registry-version.js.map +1 -0
  228. package/dist/core/source-resolution/types.js.map +1 -0
  229. package/dist/core/status/status-file-discovery.js +23 -12
  230. package/dist/core/status/status-file-discovery.js.map +1 -1
  231. package/dist/core/status/status-pipeline.js +134 -0
  232. package/dist/core/status/status-pipeline.js.map +1 -0
  233. package/dist/core/sync/platform-sync-summary.js +27 -0
  234. package/dist/core/sync/platform-sync-summary.js.map +1 -0
  235. package/dist/core/uninstall/flow-aware-uninstaller.js +189 -0
  236. package/dist/core/uninstall/flow-aware-uninstaller.js.map +1 -0
  237. package/dist/core/uninstall/uninstall-file-discovery.js +11 -6
  238. package/dist/core/uninstall/uninstall-file-discovery.js.map +1 -1
  239. package/dist/core/uninstall/uninstall-pipeline.js +141 -0
  240. package/dist/core/uninstall/uninstall-pipeline.js.map +1 -0
  241. package/dist/core/universal-patterns.js +64 -0
  242. package/dist/core/universal-patterns.js.map +1 -0
  243. package/dist/index.js +99 -6
  244. package/dist/index.js.map +1 -1
  245. package/dist/types/flows.js +8 -0
  246. package/dist/types/flows.js.map +1 -0
  247. package/dist/types/index.js +3 -0
  248. package/dist/types/index.js.map +1 -1
  249. package/dist/types/platform-flows.js +8 -0
  250. package/dist/types/platform-flows.js.map +1 -0
  251. package/dist/types/workspace-index.js +6 -0
  252. package/dist/types/workspace-index.js.map +1 -0
  253. package/dist/utils/custom-path-resolution.js +160 -0
  254. package/dist/utils/custom-path-resolution.js.map +1 -0
  255. package/dist/utils/dependency-coverage.js +1 -1
  256. package/dist/utils/dependency-coverage.js.map +1 -1
  257. package/dist/utils/file-processing.js +1 -1
  258. package/dist/utils/flow-index-installer.js +209 -0
  259. package/dist/utils/flow-index-installer.js.map +1 -0
  260. package/dist/utils/formatters.js +47 -1
  261. package/dist/utils/formatters.js.map +1 -1
  262. package/dist/utils/fs.js +17 -0
  263. package/dist/utils/fs.js.map +1 -1
  264. package/dist/utils/git-clone-registry.js +88 -0
  265. package/dist/utils/git-clone-registry.js.map +1 -0
  266. package/dist/utils/git-clone.js +69 -0
  267. package/dist/utils/git-clone.js.map +1 -0
  268. package/dist/utils/git-spec.js +96 -0
  269. package/dist/utils/git-spec.js.map +1 -0
  270. package/dist/utils/http-client.js +7 -0
  271. package/dist/utils/http-client.js.map +1 -1
  272. package/dist/utils/index-based-installer.js +356 -163
  273. package/dist/utils/index-based-installer.js.map +1 -1
  274. package/dist/utils/install-conflict-handler.js +2 -2
  275. package/dist/utils/install-conflict-handler.js.map +1 -1
  276. package/dist/utils/install-file-discovery.js +18 -13
  277. package/dist/utils/install-file-discovery.js.map +1 -1
  278. package/dist/utils/install-helpers.js +43 -20
  279. package/dist/utils/install-helpers.js.map +1 -1
  280. package/dist/utils/jsonc.js +23 -1
  281. package/dist/utils/jsonc.js.map +1 -1
  282. package/dist/utils/manifest-paths.js +1 -1
  283. package/dist/utils/manifest-paths.js.map +1 -1
  284. package/dist/utils/markdown-frontmatter.js +46 -0
  285. package/dist/utils/markdown-frontmatter.js.map +1 -1
  286. package/dist/utils/package-copy.js +5 -103
  287. package/dist/utils/package-copy.js.map +1 -1
  288. package/dist/utils/package-filters.js +9 -105
  289. package/dist/utils/package-filters.js.map +1 -1
  290. package/dist/utils/package-index-yml.js +27 -6
  291. package/dist/utils/package-index-yml.js.map +1 -1
  292. package/dist/utils/package-input.js +98 -0
  293. package/dist/utils/package-input.js.map +1 -0
  294. package/dist/utils/package-management.js +80 -28
  295. package/dist/utils/package-management.js.map +1 -1
  296. package/dist/utils/package-name-resolution.js +327 -0
  297. package/dist/utils/package-name-resolution.js.map +1 -0
  298. package/dist/utils/package-name.js +18 -16
  299. package/dist/utils/package-name.js.map +1 -1
  300. package/dist/utils/package-versioning.js +2 -33
  301. package/dist/utils/package-versioning.js.map +1 -1
  302. package/dist/utils/package-yml.js +19 -28
  303. package/dist/utils/package-yml.js.map +1 -1
  304. package/dist/utils/path-resolution.js +102 -0
  305. package/dist/utils/path-resolution.js.map +1 -0
  306. package/dist/utils/paths.js +6 -6
  307. package/dist/utils/paths.js.map +1 -1
  308. package/dist/utils/platform-file.js +36 -24
  309. package/dist/utils/platform-file.js.map +1 -1
  310. package/dist/utils/platform-mapper.js +222 -68
  311. package/dist/utils/platform-mapper.js.map +1 -1
  312. package/dist/utils/platform-root-files.js +44 -0
  313. package/dist/utils/platform-root-files.js.map +1 -0
  314. package/dist/utils/platform-utils.js +35 -54
  315. package/dist/utils/platform-utils.js.map +1 -1
  316. package/dist/utils/platform-yaml-merge.js +20 -140
  317. package/dist/utils/platform-yaml-merge.js.map +1 -1
  318. package/dist/utils/prompts.js +92 -7
  319. package/dist/utils/prompts.js.map +1 -1
  320. package/dist/utils/registry-entry-filter.js +50 -27
  321. package/dist/utils/registry-entry-filter.js.map +1 -1
  322. package/dist/utils/registry-paths.js +5 -4
  323. package/dist/utils/registry-paths.js.map +1 -1
  324. package/dist/utils/scope-resolution.js +156 -0
  325. package/dist/utils/scope-resolution.js.map +1 -0
  326. package/dist/utils/source-mutability.js +15 -0
  327. package/dist/utils/source-mutability.js.map +1 -0
  328. package/dist/utils/tarball.js +29 -4
  329. package/dist/utils/tarball.js.map +1 -1
  330. package/dist/utils/version-ranges.js +1 -32
  331. package/dist/utils/version-ranges.js.map +1 -1
  332. package/dist/utils/workspace-index-helpers.js +28 -0
  333. package/dist/utils/workspace-index-helpers.js.map +1 -0
  334. package/dist/utils/workspace-index-ownership.js +100 -0
  335. package/dist/utils/workspace-index-ownership.js.map +1 -0
  336. package/dist/utils/workspace-index-yml.js +173 -0
  337. package/dist/utils/workspace-index-yml.js.map +1 -0
  338. package/examples/custom-subdirs-platform.jsonc +157 -0
  339. package/package.json +7 -2
  340. package/platforms.jsonc +531 -84
  341. package/schemas/map-pipeline-v1.json +256 -0
  342. package/schemas/platforms-v1.json +400 -0
  343. package/specs/README.md +88 -0
  344. package/specs/add/README.md +166 -0
  345. package/specs/agents-claude.md +570 -0
  346. package/specs/agents-opencode.md +622 -0
  347. package/specs/apply/README.md +21 -0
  348. package/specs/apply/apply-behavior.md +58 -0
  349. package/specs/apply/apply-command.md +51 -0
  350. package/specs/apply/conflicts.md +41 -0
  351. package/specs/apply/index-effects.md +81 -0
  352. package/specs/architecture.md +107 -0
  353. package/specs/auth/README.md +17 -0
  354. package/specs/auth/auth-http-contract.md +25 -0
  355. package/specs/auth/cli/credentials.md +39 -0
  356. package/specs/auth/cli/login.md +32 -0
  357. package/specs/auth/cli/logout.md +16 -0
  358. package/specs/claude-mcp.md +1065 -0
  359. package/specs/claude-plugins-marketplace.md +363 -0
  360. package/specs/claude-plugins.md +413 -0
  361. package/specs/cli-options.md +52 -0
  362. package/specs/codex-mcp.md +114 -0
  363. package/specs/commands-overview.md +175 -0
  364. package/specs/directory-layout.md +95 -0
  365. package/specs/install/README.md +12 -4
  366. package/specs/install/git-sources.md +230 -0
  367. package/specs/install/install-behavior.md +483 -73
  368. package/specs/install/package-yml-canonical.md +67 -35
  369. package/specs/install/version-resolution.md +69 -115
  370. package/specs/new/README.md +769 -0
  371. package/specs/new/SUMMARY.md +310 -0
  372. package/specs/new/scope-behavior.md +793 -0
  373. package/specs/pack/README.md +77 -0
  374. package/specs/pack/package-name-resolution.md +330 -0
  375. package/specs/package/README.md +18 -17
  376. package/specs/package/nested-packages-and-parent-packages.md +32 -31
  377. package/specs/package/package-index-yml.md +95 -101
  378. package/specs/package/package-root-layout.md +64 -46
  379. package/specs/package/registry-payload-and-copy.md +50 -44
  380. package/specs/package/universal-content.md +33 -56
  381. package/specs/package-sources.md +248 -0
  382. package/specs/platforms/README.md +52 -0
  383. package/specs/platforms/configuration.md +571 -0
  384. package/specs/platforms/detection.md +552 -0
  385. package/specs/platforms/directory-layout.md +599 -0
  386. package/specs/platforms/examples.md +1146 -0
  387. package/specs/platforms/flow-reference.md +1240 -0
  388. package/specs/platforms/flows.md +1488 -0
  389. package/specs/platforms/map-pipeline.md +801 -0
  390. package/specs/platforms/overview.md +349 -0
  391. package/specs/platforms/specification.md +700 -0
  392. package/specs/platforms/troubleshooting.md +697 -0
  393. package/specs/platforms/universal-converter.md +520 -0
  394. package/specs/push/README.md +1 -0
  395. package/specs/push/push-behavior.md +11 -3
  396. package/specs/push/push-remote-upload.md +1 -1
  397. package/specs/push/push-scoping.md +1 -1
  398. package/specs/push/push-version-selection.md +1 -1
  399. package/specs/registry.md +111 -0
  400. package/specs/remove/README.md +257 -0
  401. package/specs/save/README.md +21 -17
  402. package/specs/save/save-conflict-resolution.md +205 -83
  403. package/specs/save/save-file-discovery.md +6 -4
  404. package/specs/save/save-frontmatter-overrides.md +11 -15
  405. package/specs/save/save-modes-inputs.md +9 -39
  406. package/specs/save/save-naming-scoping.md +4 -4
  407. package/specs/save/save-package-detection.md +13 -13
  408. package/specs/save/save-registry-sync.md +16 -106
  409. package/specs/save/save-versioning.md +80 -0
  410. package/specs/scope-management.md +92 -0
  411. package/specs/set/README.md +520 -0
  412. package/specs/set/set-behavior.md +563 -0
  413. package/specs/show/README.md +483 -0
  414. package/specs/show/show-remote.md +494 -0
  415. package/specs/status/README.md +38 -0
  416. package/specs/uninstall/README.md +231 -0
  417. package/dist/commands/duplicate.js +0 -69
  418. package/dist/commands/duplicate.js.map +0 -1
  419. package/dist/commands/init.js +0 -117
  420. package/dist/commands/init.js.map +0 -1
  421. package/dist/commands/prune.js +0 -357
  422. package/dist/commands/prune.js.map +0 -1
  423. package/dist/commands/tui.js +0 -61
  424. package/dist/commands/tui.js.map +0 -1
  425. package/dist/core/install/index.js +0 -3
  426. package/dist/core/install/index.js.map +0 -1
  427. package/dist/core/push/push-single-file.js +0 -56
  428. package/dist/core/push/push-single-file.js.map +0 -1
  429. package/dist/core/save/package-detection.js +0 -147
  430. package/dist/core/save/package-detection.js.map +0 -1
  431. package/dist/core/save/save-single-file.js +0 -124
  432. package/dist/core/save/save-single-file.js.map +0 -1
  433. package/dist/core/token-store.js +0 -73
  434. package/dist/core/token-store.js.map +0 -1
  435. package/dist/tui/app.js +0 -95
  436. package/dist/tui/app.js.map +0 -1
  437. package/dist/tui/components/package-list.js +0 -73
  438. package/dist/tui/components/package-list.js.map +0 -1
  439. package/dist/tui/controller.js +0 -365
  440. package/dist/tui/controller.js.map +0 -1
  441. package/dist/tui/index.js +0 -12
  442. package/dist/tui/index.js.map +0 -1
  443. package/dist/tui/services/file-index.js +0 -64
  444. package/dist/tui/services/file-index.js.map +0 -1
  445. package/dist/tui/services/packages.js +0 -18
  446. package/dist/tui/services/packages.js.map +0 -1
  447. package/dist/tui/services/save.js +0 -21
  448. package/dist/tui/services/save.js.map +0 -1
  449. package/dist/tui/state/app-state.js +0 -15
  450. package/dist/tui/state/app-state.js.map +0 -1
  451. package/dist/tui/state.js +0 -17
  452. package/dist/tui/state.js.map +0 -1
  453. package/dist/tui/types.js.map +0 -1
  454. package/dist/tui/views/add-file-modal.js +0 -129
  455. package/dist/tui/views/add-file-modal.js.map +0 -1
  456. package/dist/tui/views/file-preview.js +0 -44
  457. package/dist/tui/views/file-preview.js.map +0 -1
  458. package/dist/tui/views/list-packages.js +0 -73
  459. package/dist/tui/views/list-packages.js.map +0 -1
  460. package/dist/tui/views/main-menu.js +0 -29
  461. package/dist/tui/views/main-menu.js.map +0 -1
  462. package/dist/tui/views/manage-view.js +0 -81
  463. package/dist/tui/views/manage-view.js.map +0 -1
  464. package/dist/tui/views/package-hub.js +0 -120
  465. package/dist/tui/views/package-hub.js.map +0 -1
  466. package/dist/tui/views/placeholder.js +0 -24
  467. package/dist/tui/views/placeholder.js.map +0 -1
  468. package/dist/utils/bun-bootstrap.js +0 -72
  469. package/dist/utils/bun-bootstrap.js.map +0 -1
  470. package/dist/utils/entity-id.js +0 -19
  471. package/dist/utils/entity-id.js.map +0 -1
  472. package/dist/utils/package-local-files.js +0 -5
  473. package/dist/utils/package-local-files.js.map +0 -1
  474. package/dist/utils/path-matching.js +0 -74
  475. package/dist/utils/path-matching.js.map +0 -1
  476. package/dist/utils/root-file-operations.js +0 -39
  477. package/dist/utils/root-file-operations.js.map +0 -1
  478. package/dist/utils/root-file-transformer.js +0 -27
  479. package/dist/utils/root-file-transformer.js.map +0 -1
  480. package/dist/utils/yaml-frontmatter.js +0 -25
  481. package/dist/utils/yaml-frontmatter.js.map +0 -1
  482. package/specs/auth/auth-device-flow.md +0 -70
  483. package/specs/login/login-device-flow.md +0 -70
  484. package/specs/platforms.md +0 -193
  485. package/specs/save-pack-versioning.md +0 -224
  486. package/specs/save-pack.md +0 -68
  487. /package/dist/{tui → core/source-resolution}/types.js +0 -0
@@ -0,0 +1,109 @@
1
+ /**
2
+ * @fileoverview Resolves mutable package sources for add/edit operations.
3
+ *
4
+ * Unlike resolve-package-source.ts (which requires packages to be in the workspace index),
5
+ * this module finds mutable packages across workspace and global directories without
6
+ * requiring prior installation in the current workspace.
7
+ *
8
+ * Usage:
9
+ * - `add` command: Add files to any mutable package regardless of workspace installation
10
+ * - Future editing commands: Modify package sources directly
11
+ */
12
+ import path from 'path';
13
+ import { resolvePackageByName } from '../../utils/package-name-resolution.js';
14
+ import { isRegistryPath } from '../../utils/source-mutability.js';
15
+ import { MUTABILITY, SOURCE_TYPES } from '../../constants/index.js';
16
+ import { normalizePackageName } from '../../utils/package-name.js';
17
+ import { parsePackageYml } from '../../utils/package-yml.js';
18
+ import { FILE_PATTERNS } from '../../constants/index.js';
19
+ /**
20
+ * Resolves a mutable package source from workspace or global packages.
21
+ *
22
+ * This function searches for packages in:
23
+ * - Workspace packages (.openpackage/packages/)
24
+ * - Global packages (~/.openpackage/packages/)
25
+ *
26
+ * Registry packages are excluded as they are immutable by design.
27
+ *
28
+ * @throws Error if package is not found or is immutable (registry)
29
+ */
30
+ export async function resolveMutableSource(options) {
31
+ const { cwd, packageName } = options;
32
+ const normalizedName = normalizePackageName(packageName);
33
+ // Search workspace and global packages only (exclude registry)
34
+ const resolution = await resolvePackageByName({
35
+ cwd,
36
+ packageName: normalizedName,
37
+ checkCwd: false,
38
+ searchWorkspace: true,
39
+ searchGlobal: true,
40
+ searchRegistry: false // Exclude registry (immutable)
41
+ });
42
+ if (!resolution.found || !resolution.path) {
43
+ throw new Error(`Package '${packageName}' not found in workspace or global packages.\n` +
44
+ `Available locations:\n` +
45
+ ` - Workspace packages: ${path.join(cwd, '.openpackage', 'packages')}/\n` +
46
+ ` - Global packages: ~/.openpackage/packages/\n\n` +
47
+ `Registry packages are immutable and cannot be modified directly.\n` +
48
+ `To edit a registry package:\n` +
49
+ ` 1. Install it with a mutable source: opkg install ${packageName} --path <local-path>\n` +
50
+ ` 2. Or copy it to workspace: opkg pull ${packageName}`);
51
+ }
52
+ // Double-check mutability (shouldn't happen given our search params, but defensive)
53
+ const absolutePath = path.join(resolution.path, path.sep);
54
+ if (isRegistryPath(absolutePath)) {
55
+ throw new Error(`Package '${packageName}' resolves to a registry path, which is immutable.\n` +
56
+ `Registry packages cannot be modified via add command.\n` +
57
+ `Path: ${resolution.path}`);
58
+ }
59
+ // Load package metadata
60
+ const packageYmlPath = path.join(absolutePath, FILE_PATTERNS.OPENPACKAGE_YML);
61
+ const config = await parsePackageYml(packageYmlPath);
62
+ // Map source type from resolution
63
+ const sourceType = mapSourceType(resolution.sourceType);
64
+ // Construct declared path (for potential future index updates)
65
+ const declaredPath = constructDeclaredPath(absolutePath, resolution.sourceType);
66
+ return {
67
+ packageName: normalizedName,
68
+ absolutePath,
69
+ declaredPath,
70
+ mutability: MUTABILITY.MUTABLE,
71
+ version: config.version,
72
+ sourceType
73
+ };
74
+ }
75
+ /**
76
+ * Maps package resolution source type to internal SourceType
77
+ */
78
+ function mapSourceType(sourceType) {
79
+ switch (sourceType) {
80
+ case 'workspace':
81
+ case 'global':
82
+ case 'cwd':
83
+ return SOURCE_TYPES.PATH;
84
+ default:
85
+ return SOURCE_TYPES.PATH;
86
+ }
87
+ }
88
+ /**
89
+ * Constructs the declared path for a package source.
90
+ * Uses relative paths for workspace packages, tilde notation for global.
91
+ */
92
+ function constructDeclaredPath(absolutePath, sourceType) {
93
+ if (sourceType === 'workspace') {
94
+ // Workspace packages: use relative path from cwd
95
+ const cwd = process.cwd();
96
+ const relativePath = path.relative(cwd, absolutePath);
97
+ return `./${relativePath}`;
98
+ }
99
+ else if (sourceType === 'global') {
100
+ // Global packages: use tilde notation
101
+ const home = process.env.HOME || process.env.USERPROFILE || '';
102
+ if (absolutePath.startsWith(home)) {
103
+ return absolutePath.replace(home, '~');
104
+ }
105
+ }
106
+ // Fallback: absolute path
107
+ return absolutePath;
108
+ }
109
+ //# sourceMappingURL=resolve-mutable-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-mutable-source.js","sourceRoot":"","sources":["../../../src/core/source-resolution/resolve-mutable-source.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import path from 'path';
2
+ import { resolveDeclaredPath } from '../../utils/path-resolution.js';
3
+ import { arePackageNamesEquivalent, normalizePackageName } from '../../utils/package-name.js';
4
+ import { isRegistryPath } from '../../utils/source-mutability.js';
5
+ import { readWorkspaceIndex } from '../../utils/workspace-index-yml.js';
6
+ import { MUTABILITY, SOURCE_TYPES } from '../../constants/index.js';
7
+ export async function resolvePackageSource(workspaceRoot, packageName) {
8
+ const normalizedTarget = normalizePackageName(packageName);
9
+ const ws = await readWorkspaceIndex(workspaceRoot);
10
+ const entryKey = Object.keys(ws.index.packages ?? {}).find(k => arePackageNamesEquivalent(k, normalizedTarget));
11
+ const entry = entryKey ? ws.index.packages?.[entryKey] : undefined;
12
+ if (!entry?.path) {
13
+ throw new Error(`Package '${packageName}' is not installed in this workspace.\n` +
14
+ `Run 'opkg install ${packageName}' to install it first.`);
15
+ }
16
+ const resolved = resolveDeclaredPath(entry.path, workspaceRoot);
17
+ const absolutePath = path.join(resolved.absolute, path.sep);
18
+ const mutability = isRegistryPath(absolutePath) ? MUTABILITY.IMMUTABLE : MUTABILITY.MUTABLE;
19
+ const sourceType = isRegistryPath(absolutePath) ? SOURCE_TYPES.REGISTRY : SOURCE_TYPES.PATH;
20
+ return {
21
+ packageName: normalizePackageName(entryKey ?? normalizedTarget),
22
+ absolutePath,
23
+ declaredPath: resolved.declared,
24
+ mutability,
25
+ version: entry.version,
26
+ sourceType
27
+ };
28
+ }
29
+ //# sourceMappingURL=resolve-package-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-package-source.js","sourceRoot":"","sources":["../../../src/core/source-resolution/resolve-package-source.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAC9F,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGpE,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,aAAqB,EACrB,WAAmB;IAEnB,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAC3D,MAAM,EAAE,GAAG,MAAM,kBAAkB,CAAC,aAAa,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAC7D,yBAAyB,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAC/C,CAAC;IACF,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,YAAY,WAAW,yCAAyC;YAC9D,qBAAqB,WAAW,wBAAwB,CAC3D,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAChE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;IAC5F,MAAM,UAAU,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC;IAE5F,OAAO;QACL,WAAW,EAAE,oBAAoB,CAAC,QAAQ,IAAI,gBAAgB,CAAC;QAC/D,YAAY;QACZ,YAAY,EAAE,QAAQ,CAAC,QAAQ;QAC/B,UAAU;QACV,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,UAAU;KACX,CAAC;AACJ,CAAC"}
@@ -0,0 +1,35 @@
1
+ import path from 'path';
2
+ import { getRegistryDirectories } from '../directory.js';
3
+ import { normalizePackageName } from '../../utils/package-name.js';
4
+ import { selectInstallVersionUnified } from '../install/version-selection.js';
5
+ import { DEFAULT_VERSION_CONSTRAINT, REGISTRY_PATH_PREFIXES } from '../../constants/index.js';
6
+ /**
7
+ * Resolve a registry version and construct both declared (tilde) and absolute paths.
8
+ */
9
+ export async function resolveRegistryVersion(packageName, options = {}) {
10
+ const normalizedName = normalizePackageName(packageName);
11
+ const mode = options.mode ?? 'default';
12
+ const constraint = options.constraint ?? DEFAULT_VERSION_CONSTRAINT;
13
+ const selection = await selectInstallVersionUnified({
14
+ packageName: normalizedName,
15
+ constraint,
16
+ mode,
17
+ explicitPrereleaseIntent: options.explicitPrereleaseIntent,
18
+ profile: options.profile,
19
+ apiKey: options.apiKey
20
+ });
21
+ if (!selection.selectedVersion) {
22
+ throw new Error(`Unable to resolve a version for '${normalizedName}' with constraint '${constraint}'.`);
23
+ }
24
+ const version = selection.selectedVersion;
25
+ const { packages: registryRoot } = getRegistryDirectories();
26
+ const absolutePath = path.join(registryRoot, normalizedName, version, path.sep);
27
+ const declaredPath = `${REGISTRY_PATH_PREFIXES.BASE}${normalizedName}/${version}/`;
28
+ return {
29
+ version,
30
+ declaredPath,
31
+ absolutePath,
32
+ resolutionSource: selection.resolutionSource
33
+ };
34
+ }
35
+ //# sourceMappingURL=resolve-registry-version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-registry-version.js","sourceRoot":"","sources":["../../../src/core/source-resolution/resolve-registry-version.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AA0B9F;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,WAAmB,EACnB,UAAyC,EAAE;IAE3C,MAAM,cAAc,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IACzD,MAAM,IAAI,GAA0B,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC;IAC9D,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,0BAA0B,CAAC;IAEpE,MAAM,SAAS,GAAG,MAAM,2BAA2B,CAAC;QAClD,WAAW,EAAE,cAAc;QAC3B,UAAU;QACV,IAAI;QACJ,wBAAwB,EAAE,OAAO,CAAC,wBAAwB;QAC1D,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IAEH,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,oCAAoC,cAAc,sBAAsB,UAAU,IAAI,CACvF,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,SAAS,CAAC,eAAe,CAAC;IAC1C,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,sBAAsB,EAAE,CAAC;IAE5D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAChF,MAAM,YAAY,GAAG,GAAG,sBAAsB,CAAC,IAAI,GAAG,cAAc,IAAI,OAAO,GAAG,CAAC;IAEnF,OAAO;QACL,OAAO;QACP,YAAY;QACZ,YAAY;QACZ,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;KAC7C,CAAC;AACJ,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/source-resolution/types.ts"],"names":[],"mappings":""}
@@ -42,19 +42,30 @@ export async function discoverPackagesForStatus(packageNames) {
42
42
  async function discoverPlatformForPackages(cwd, platform, result, packageNames) {
43
43
  const def = getPlatformDefinition(platform);
44
44
  const platformRoot = join(cwd, def.rootDir);
45
- for (const [subKey, subDef] of Object.entries(def.subdirs)) {
46
- const targetDir = join(platformRoot, subDef.path || '');
47
- if (!(await exists(targetDir)))
48
- continue;
49
- for await (const fp of walkFiles(targetDir)) {
50
- const allowedExts = subDef.exts;
51
- if (allowedExts) {
52
- if (allowedExts.length === 0)
53
- continue;
54
- if (!allowedExts.some((ext) => fp.endsWith(ext)))
55
- continue;
45
+ // TODO: Implement flow-based discovery
46
+ // For now, discover files from export flows 'to' patterns (package → workspace)
47
+ if (def.export && def.export.length > 0) {
48
+ const platformDirs = new Set();
49
+ for (const flow of def.export) {
50
+ const toPattern = typeof flow.to === 'string' ? flow.to : Object.keys(flow.to)[0];
51
+ if (toPattern) {
52
+ // Extract directory from pattern
53
+ const parts = toPattern.split('/');
54
+ if (parts.length > 1) {
55
+ const dirPath = parts.slice(0, -1).join('/');
56
+ platformDirs.add(dirPath);
57
+ }
58
+ }
59
+ }
60
+ // Walk each discovered directory
61
+ for (const dirPath of platformDirs) {
62
+ const targetDir = join(cwd, dirPath);
63
+ if (!(await exists(targetDir)))
64
+ continue;
65
+ for await (const fp of walkFiles(targetDir)) {
66
+ // TODO: Check package ownership via flows or other metadata
67
+ // Frontmatter support removed - cannot determine package ownership without more work
56
68
  }
57
- // Frontmatter support removed - cannot determine package ownership
58
69
  }
59
70
  }
60
71
  // Index.yml support removed
@@ -1 +1 @@
1
- {"version":3,"file":"status-file-discovery.js","sourceRoot":"","sources":["../../../src/core/status/status-file-discovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status-file-discovery.js","sourceRoot":"","sources":["../../../src/core/status/status-file-discovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,134 @@
1
+ import path from 'path';
2
+ import { ValidationError } from '../../utils/errors.js';
3
+ import { getLocalOpenPackageDir, getLocalPackageYmlPath } from '../../utils/paths.js';
4
+ import { readWorkspaceIndex } from '../../utils/workspace-index-yml.js';
5
+ import { resolveDeclaredPath } from '../../utils/path-resolution.js';
6
+ import { calculateFileHash } from '../../utils/hash-utils.js';
7
+ import { exists, readTextFile, walkFiles } from '../../utils/fs.js';
8
+ import { isDirKey } from '../../utils/package-index-yml.js';
9
+ import { logger } from '../../utils/logger.js';
10
+ import { getTargetPath } from '../../utils/workspace-index-helpers.js';
11
+ async function collectDirFiles(absDir, prefix) {
12
+ const files = [];
13
+ if (!(await exists(absDir)))
14
+ return files;
15
+ for await (const filePath of walkFiles(absDir)) {
16
+ // Use path.relative instead of substring math so trailing slashes don't
17
+ // corrupt the first character of filenames.
18
+ const rel = path.relative(absDir, filePath).replace(/\\/g, '/');
19
+ files.push(path.posix.join(prefix, rel));
20
+ }
21
+ return files;
22
+ }
23
+ async function hashOrNull(absPath) {
24
+ if (!(await exists(absPath)))
25
+ return null;
26
+ const content = await readTextFile(absPath);
27
+ return await calculateFileHash(content);
28
+ }
29
+ async function comparePackage(cwd, pkgName, entry) {
30
+ const resolved = resolveDeclaredPath(entry.path, cwd);
31
+ const sourceRoot = resolved.absolute;
32
+ if (!(await exists(sourceRoot))) {
33
+ return {
34
+ name: pkgName,
35
+ version: entry.version,
36
+ path: entry.path,
37
+ state: 'missing',
38
+ diffs: [
39
+ {
40
+ sourcePath: sourceRoot,
41
+ workspacePath: '',
42
+ reason: 'missing'
43
+ }
44
+ ]
45
+ };
46
+ }
47
+ const diffs = [];
48
+ const filesMapping = entry.files || {};
49
+ for (const [rawKey, targets] of Object.entries(filesMapping)) {
50
+ if (!Array.isArray(targets) || targets.length === 0)
51
+ continue;
52
+ const isDir = isDirKey(rawKey);
53
+ if (isDir) {
54
+ const sourceDir = path.join(sourceRoot, rawKey);
55
+ const sourceFiles = await collectDirFiles(sourceDir, rawKey.replace(/\/$/, ''));
56
+ for (const rel of sourceFiles) {
57
+ for (const targetMapping of targets) {
58
+ const targetDir = getTargetPath(targetMapping);
59
+ const workspacePath = path.join(cwd, targetDir, rel.slice(rawKey.length));
60
+ const sourcePath = path.join(sourceRoot, rel);
61
+ const [sourceHash, workspaceHash] = await Promise.all([
62
+ hashOrNull(sourcePath),
63
+ hashOrNull(workspacePath)
64
+ ]);
65
+ if (!workspaceHash) {
66
+ diffs.push({ sourcePath, workspacePath, reason: 'missing' });
67
+ continue;
68
+ }
69
+ if (!sourceHash || sourceHash !== workspaceHash) {
70
+ diffs.push({ sourcePath, workspacePath, reason: 'hash-mismatch' });
71
+ }
72
+ }
73
+ }
74
+ }
75
+ else {
76
+ const sourcePath = path.join(sourceRoot, rawKey);
77
+ for (const targetMapping of targets) {
78
+ const targetPath = getTargetPath(targetMapping);
79
+ const workspacePath = path.join(cwd, targetPath);
80
+ const [sourceHash, workspaceHash] = await Promise.all([
81
+ hashOrNull(sourcePath),
82
+ hashOrNull(workspacePath)
83
+ ]);
84
+ if (!workspaceHash) {
85
+ diffs.push({ sourcePath, workspacePath, reason: 'missing' });
86
+ continue;
87
+ }
88
+ if (!sourceHash || sourceHash !== workspaceHash) {
89
+ diffs.push({ sourcePath, workspacePath, reason: 'hash-mismatch' });
90
+ }
91
+ }
92
+ }
93
+ }
94
+ const state = diffs.length === 0 ? 'synced' : 'modified';
95
+ return {
96
+ name: pkgName,
97
+ version: entry.version,
98
+ path: entry.path,
99
+ state,
100
+ diffs
101
+ };
102
+ }
103
+ export async function runStatusPipeline() {
104
+ const cwd = process.cwd();
105
+ const openpkgDir = getLocalOpenPackageDir(cwd);
106
+ const manifestPath = getLocalPackageYmlPath(cwd);
107
+ if (!(await exists(openpkgDir)) || !(await exists(manifestPath))) {
108
+ throw new ValidationError(`No .openpackage/openpackage.yml found in ${cwd}.`);
109
+ }
110
+ const { index } = await readWorkspaceIndex(cwd);
111
+ const packages = index.packages || {};
112
+ const reports = [];
113
+ for (const [pkgName, pkgEntry] of Object.entries(packages)) {
114
+ try {
115
+ const report = await comparePackage(cwd, pkgName, pkgEntry);
116
+ reports.push(report);
117
+ }
118
+ catch (error) {
119
+ logger.warn(`Failed to compute status for ${pkgName}: ${error}`);
120
+ reports.push({
121
+ name: pkgName,
122
+ version: pkgEntry?.version,
123
+ path: pkgEntry?.path ?? '',
124
+ state: 'missing',
125
+ diffs: []
126
+ });
127
+ }
128
+ }
129
+ return {
130
+ success: true,
131
+ data: { packages: reports }
132
+ };
133
+ }
134
+ //# sourceMappingURL=status-pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status-pipeline.js","sourceRoot":"","sources":["../../../src/core/status/status-pipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { formatRegistryPathForDisplay } from '../../utils/registry-paths.js';
2
+ export function printPlatformSyncSummary({ actionLabel, packageContext, version, packageFiles, syncResult, noSyncHint }) {
3
+ const name = packageContext.config.name;
4
+ const type = packageContext.location === 'root' ? 'root package' : 'package';
5
+ console.log(`✓ ${actionLabel} ${name}@${version} (${type}, ${packageFiles.length} files):`);
6
+ if (packageFiles.length > 0) {
7
+ for (const path of [...packageFiles.map(f => f.path)].sort()) {
8
+ console.log(` ├── ${formatRegistryPathForDisplay(path)}`);
9
+ }
10
+ }
11
+ const printList = (label, files) => {
12
+ if (!files || files.length === 0)
13
+ return;
14
+ console.log(`✓ Platform sync ${label} ${files.length} files:`);
15
+ for (const f of [...files].sort())
16
+ console.log(` ├── ${f}`);
17
+ };
18
+ if (syncResult) {
19
+ printList('created', syncResult.created);
20
+ printList('updated', syncResult.updated);
21
+ printList('removed', syncResult.deleted ?? []);
22
+ }
23
+ else if (noSyncHint) {
24
+ console.log(noSyncHint);
25
+ }
26
+ }
27
+ //# sourceMappingURL=platform-sync-summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-sync-summary.js","sourceRoot":"","sources":["../../../src/core/sync/platform-sync-summary.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAc7E,MAAM,UAAU,wBAAwB,CAAC,EACvC,WAAW,EACX,cAAc,EACd,OAAO,EACP,YAAY,EACZ,UAAU,EACV,UAAU,EACsB;IAChC,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC;IACxC,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;IAE7E,OAAO,CAAC,GAAG,CAAC,KAAK,WAAW,IAAI,IAAI,IAAI,OAAO,KAAK,IAAI,KAAK,YAAY,CAAC,MAAM,UAAU,CAAC,CAAC;IAE5F,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,UAAU,4BAA4B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,KAA2B,EAAE,EAAE;QAC/D,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACzC,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,IAAI,KAAK,CAAC,MAAM,SAAS,CAAC,CAAC;QAC/D,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE;YAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAChE,CAAC,CAAC;IAEF,IAAI,UAAU,EAAE,CAAC;QACf,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;QACzC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;QACzC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;SAAM,IAAI,UAAU,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC"}
@@ -0,0 +1,189 @@
1
+ /**
2
+ * Flow-Aware Uninstaller
3
+ *
4
+ * Handles uninstallation of packages installed with flows,
5
+ * including precise removal of keys from merged files.
6
+ */
7
+ import { join } from 'path';
8
+ import { readTextFile, writeTextFile, exists, remove } from '../../utils/fs.js';
9
+ import { logger } from '../../utils/logger.js';
10
+ import { deleteNestedKey, isEffectivelyEmpty } from '../flows/flow-key-extractor.js';
11
+ import yaml from 'js-yaml';
12
+ import * as TOML from 'smol-toml';
13
+ function detectFileFormat(filePath) {
14
+ const ext = filePath.toLowerCase().split('.').pop();
15
+ switch (ext) {
16
+ case 'json':
17
+ return 'json';
18
+ case 'jsonc':
19
+ return 'jsonc';
20
+ case 'yaml':
21
+ case 'yml':
22
+ return 'yaml';
23
+ case 'toml':
24
+ return 'toml';
25
+ default:
26
+ return 'text';
27
+ }
28
+ }
29
+ /**
30
+ * Parse file content based on format
31
+ */
32
+ function parseContent(content, format) {
33
+ try {
34
+ switch (format) {
35
+ case 'json':
36
+ case 'jsonc':
37
+ // Strip comments for JSONC
38
+ const cleaned = format === 'jsonc'
39
+ ? content.replace(/\/\/.*$/gm, '').replace(/\/\*[\s\S]*?\*\//g, '')
40
+ : content;
41
+ return JSON.parse(cleaned);
42
+ case 'yaml':
43
+ case 'yml':
44
+ return yaml.load(content);
45
+ case 'toml':
46
+ return TOML.parse(content);
47
+ default:
48
+ return content;
49
+ }
50
+ }
51
+ catch (error) {
52
+ throw new Error(`Failed to parse ${format} file: ${error instanceof Error ? error.message : String(error)}`);
53
+ }
54
+ }
55
+ /**
56
+ * Serialize content based on format
57
+ */
58
+ function serializeContent(data, format) {
59
+ try {
60
+ switch (format) {
61
+ case 'json':
62
+ case 'jsonc':
63
+ return JSON.stringify(data, null, 2);
64
+ case 'yaml':
65
+ case 'yml':
66
+ return yaml.dump(data, { indent: 2, lineWidth: -1 });
67
+ case 'toml':
68
+ return TOML.stringify(data);
69
+ default:
70
+ return typeof data === 'string' ? data : JSON.stringify(data, null, 2);
71
+ }
72
+ }
73
+ catch (error) {
74
+ throw new Error(`Failed to serialize ${format} file: ${error instanceof Error ? error.message : String(error)}`);
75
+ }
76
+ }
77
+ /**
78
+ * Remove specific keys from a merged file
79
+ * Deletes the file if it becomes empty after removal
80
+ *
81
+ * @param cwd - Workspace root
82
+ * @param targetPath - Relative path to target file
83
+ * @param keysToRemove - Dot-notated keys to remove
84
+ * @returns true if file was deleted, false if updated
85
+ */
86
+ export async function removeKeysFromMergedFile(cwd, targetPath, keysToRemove) {
87
+ const absPath = join(cwd, targetPath);
88
+ if (!(await exists(absPath))) {
89
+ return { deleted: false, updated: false };
90
+ }
91
+ // Load and parse file
92
+ const content = await readTextFile(absPath);
93
+ const format = detectFileFormat(targetPath);
94
+ let data;
95
+ try {
96
+ data = parseContent(content, format);
97
+ }
98
+ catch (error) {
99
+ logger.warn(`Failed to parse ${targetPath} for key removal: ${error instanceof Error ? error.message : String(error)}`);
100
+ return { deleted: false, updated: false };
101
+ }
102
+ const hasNestedKeyPath = (obj, keyPath) => {
103
+ if (!obj || typeof obj !== 'object')
104
+ return false;
105
+ const parts = keyPath.split('.').filter(Boolean);
106
+ let current = obj;
107
+ for (const part of parts) {
108
+ if (!current || typeof current !== 'object' || !(part in current))
109
+ return false;
110
+ current = current[part];
111
+ }
112
+ return true;
113
+ };
114
+ const existingBefore = keysToRemove.filter(k => typeof k === 'string' && hasNestedKeyPath(data, k)).length;
115
+ // Remove each key
116
+ for (const key of keysToRemove) {
117
+ deleteNestedKey(data, key);
118
+ }
119
+ // Check if file is now empty
120
+ if (isEffectivelyEmpty(data)) {
121
+ await remove(absPath);
122
+ logger.info(`Removed empty file: ${targetPath}`);
123
+ return { deleted: true, updated: false };
124
+ }
125
+ // Write back updated content
126
+ const serialized = serializeContent(data, format);
127
+ await writeTextFile(absPath, serialized);
128
+ logger.info(`Updated ${targetPath}: removed ${keysToRemove.length} keys`);
129
+ return { deleted: false, updated: true };
130
+ }
131
+ /**
132
+ * Remove a file mapping during uninstall
133
+ * Handles both simple file removal and key-based removal from merged files
134
+ *
135
+ * @param cwd - Workspace root
136
+ * @param mapping - File mapping from workspace index
137
+ * @param packageName - Package being uninstalled (for logging)
138
+ * @returns Paths that were removed or updated
139
+ */
140
+ export async function removeFileMapping(cwd, mapping, packageName) {
141
+ const removed = [];
142
+ const updated = [];
143
+ if (typeof mapping === 'string') {
144
+ // Simple file mapping - delete entire file
145
+ const absPath = join(cwd, mapping);
146
+ if (await exists(absPath)) {
147
+ await remove(absPath);
148
+ removed.push(mapping);
149
+ logger.debug(`Removed file: ${mapping}`);
150
+ }
151
+ }
152
+ else {
153
+ // Complex mapping with potential key tracking
154
+ const targetPath = mapping.target;
155
+ if (mapping.merge === 'composite') {
156
+ // Composite merge uses delimiters - handled by existing root file logic
157
+ // This is already handled by applyRootFileRemovals
158
+ logger.debug(`Skipping composite merge file (handled by root file logic): ${targetPath}`);
159
+ }
160
+ else if (mapping.keys && mapping.keys.length > 0) {
161
+ // Remove specific keys from merged file
162
+ const result = await removeKeysFromMergedFile(cwd, targetPath, mapping.keys);
163
+ if (result.deleted) {
164
+ removed.push(targetPath);
165
+ }
166
+ else if (result.updated) {
167
+ updated.push(targetPath);
168
+ }
169
+ logger.debug(`Removed ${mapping.keys.length} keys from ${targetPath}: ${mapping.keys.join(', ')}`);
170
+ }
171
+ else if (mapping.merge === 'deep' || mapping.merge === 'shallow') {
172
+ // Merged file but no key tracking - this shouldn't happen with new installs
173
+ logger.warn(`Cannot precisely remove ${targetPath} for ${packageName} - no key tracking available. ` +
174
+ `File may contain content from other packages.`);
175
+ // Don't delete - safer to leave it
176
+ }
177
+ else {
178
+ // merge: 'replace' or no merge - delete entire file
179
+ const absPath = join(cwd, targetPath);
180
+ if (await exists(absPath)) {
181
+ await remove(absPath);
182
+ removed.push(targetPath);
183
+ logger.debug(`Removed file: ${targetPath}`);
184
+ }
185
+ }
186
+ }
187
+ return { removed, updated };
188
+ }
189
+ //# sourceMappingURL=flow-aware-uninstaller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-aware-uninstaller.js","sourceRoot":"","sources":["../../../src/core/uninstall/flow-aware-uninstaller.ts"],"names":[],"mappings":"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"}