opkg 0.5.0 → 0.6.1

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 (397) hide show
  1. package/README.md +82 -21
  2. package/dist/commands/add.js +11 -276
  3. package/dist/commands/add.js.map +1 -1
  4. package/dist/commands/duplicate.js +5 -2
  5. package/dist/commands/duplicate.js.map +1 -1
  6. package/dist/commands/init.js +76 -145
  7. package/dist/commands/init.js.map +1 -1
  8. package/dist/commands/install.js +30 -671
  9. package/dist/commands/install.js.map +1 -1
  10. package/dist/commands/list.js +9 -3
  11. package/dist/commands/list.js.map +1 -1
  12. package/dist/commands/login.js +58 -0
  13. package/dist/commands/login.js.map +1 -0
  14. package/dist/commands/logout.js +28 -0
  15. package/dist/commands/logout.js.map +1 -0
  16. package/dist/commands/pack.js +10 -137
  17. package/dist/commands/pack.js.map +1 -1
  18. package/dist/commands/pull.js +5 -299
  19. package/dist/commands/pull.js.map +1 -1
  20. package/dist/commands/push.js +5 -239
  21. package/dist/commands/push.js.map +1 -1
  22. package/dist/commands/save.js +29 -168
  23. package/dist/commands/save.js.map +1 -1
  24. package/dist/commands/show.js +18 -5
  25. package/dist/commands/show.js.map +1 -1
  26. package/dist/commands/status.js +21 -8
  27. package/dist/commands/status.js.map +1 -1
  28. package/dist/commands/tui.js +61 -0
  29. package/dist/commands/tui.js.map +1 -0
  30. package/dist/commands/uninstall.js +5 -5
  31. package/dist/commands/uninstall.js.map +1 -1
  32. package/dist/constants/index.js +19 -45
  33. package/dist/constants/index.js.map +1 -1
  34. package/dist/constants/workspace.js +9 -0
  35. package/dist/constants/workspace.js.map +1 -0
  36. package/dist/core/add/add-conflict-handler.js +68 -0
  37. package/dist/core/add/add-conflict-handler.js.map +1 -0
  38. package/dist/core/add/add-pipeline.js +137 -0
  39. package/dist/core/add/add-pipeline.js.map +1 -0
  40. package/dist/core/add/package-index-updater.js +66 -36
  41. package/dist/core/add/package-index-updater.js.map +1 -1
  42. package/dist/core/add/platform-path-transformer.js +47 -0
  43. package/dist/core/add/platform-path-transformer.js.map +1 -0
  44. package/dist/core/add/source-collector.js +57 -0
  45. package/dist/core/add/source-collector.js.map +1 -0
  46. package/dist/core/api-keys.js +6 -2
  47. package/dist/core/api-keys.js.map +1 -1
  48. package/dist/core/auth.js +25 -40
  49. package/dist/core/auth.js.map +1 -1
  50. package/dist/core/config.js +11 -3
  51. package/dist/core/config.js.map +1 -1
  52. package/dist/core/dependency-resolver.js +24 -11
  53. package/dist/core/dependency-resolver.js.map +1 -1
  54. package/dist/core/device-auth.js +81 -0
  55. package/dist/core/device-auth.js.map +1 -0
  56. package/dist/core/directory.js +15 -9
  57. package/dist/core/directory.js.map +1 -1
  58. package/dist/core/discovery/file-discovery.js +55 -54
  59. package/dist/core/discovery/file-discovery.js.map +1 -1
  60. package/dist/core/discovery/platform-files-discovery.js +32 -17
  61. package/dist/core/discovery/platform-files-discovery.js.map +1 -1
  62. package/dist/core/install/bulk-install-pipeline.js +200 -0
  63. package/dist/core/install/bulk-install-pipeline.js.map +1 -0
  64. package/dist/core/install/canonical-plan.js +129 -0
  65. package/dist/core/install/canonical-plan.js.map +1 -0
  66. package/dist/core/install/download-keys.js +2 -2
  67. package/dist/core/install/download-keys.js.map +1 -1
  68. package/dist/core/install/dry-run.js +2 -2
  69. package/dist/core/install/dry-run.js.map +1 -1
  70. package/dist/core/install/index.js +3 -0
  71. package/dist/core/install/index.js.map +1 -0
  72. package/dist/core/install/install-errors.js +41 -0
  73. package/dist/core/install/install-errors.js.map +1 -0
  74. package/dist/core/install/install-flow.js +8 -9
  75. package/dist/core/install/install-flow.js.map +1 -1
  76. package/dist/core/install/install-pipeline.js +296 -0
  77. package/dist/core/install/install-pipeline.js.map +1 -0
  78. package/dist/core/install/install-reporting.js +99 -0
  79. package/dist/core/install/install-reporting.js.map +1 -0
  80. package/dist/core/install/platform-resolution.js +6 -6
  81. package/dist/core/install/platform-resolution.js.map +1 -1
  82. package/dist/core/install/remote-flow.js +84 -7
  83. package/dist/core/install/remote-flow.js.map +1 -1
  84. package/dist/core/install/version-selection.js +25 -8
  85. package/dist/core/install/version-selection.js.map +1 -1
  86. package/dist/core/openpackage.js +22 -14
  87. package/dist/core/openpackage.js.map +1 -1
  88. package/dist/core/package-context.js +246 -0
  89. package/dist/core/package-context.js.map +1 -0
  90. package/dist/core/package.js +73 -9
  91. package/dist/core/package.js.map +1 -1
  92. package/dist/core/platforms.js +126 -217
  93. package/dist/core/platforms.js.map +1 -1
  94. package/dist/core/profiles.js +60 -3
  95. package/dist/core/profiles.js.map +1 -1
  96. package/dist/core/pull/pull-errors.js +62 -0
  97. package/dist/core/pull/pull-errors.js.map +1 -0
  98. package/dist/core/pull/pull-options.js +2 -0
  99. package/dist/core/pull/pull-options.js.map +1 -0
  100. package/dist/core/pull/pull-output.js +50 -0
  101. package/dist/core/pull/pull-output.js.map +1 -0
  102. package/dist/core/pull/pull-pipeline.js +141 -0
  103. package/dist/core/pull/pull-pipeline.js.map +1 -0
  104. package/dist/core/pull/pull-strategies.js +103 -0
  105. package/dist/core/pull/pull-strategies.js.map +1 -0
  106. package/dist/core/pull/pull-types.js +2 -0
  107. package/dist/core/pull/pull-types.js.map +1 -0
  108. package/dist/core/push/push-context.js +95 -0
  109. package/dist/core/push/push-context.js.map +1 -0
  110. package/dist/core/push/push-errors.js +133 -0
  111. package/dist/core/push/push-errors.js.map +1 -0
  112. package/dist/core/push/push-output.js +44 -0
  113. package/dist/core/push/push-output.js.map +1 -0
  114. package/dist/core/push/push-pipeline.js +74 -0
  115. package/dist/core/push/push-pipeline.js.map +1 -0
  116. package/dist/core/push/push-single-file.js +56 -0
  117. package/dist/core/push/push-single-file.js.map +1 -0
  118. package/dist/core/push/push-types.js +2 -0
  119. package/dist/core/push/push-types.js.map +1 -0
  120. package/dist/core/push/push-upload.js +68 -0
  121. package/dist/core/push/push-upload.js.map +1 -0
  122. package/dist/core/registry/registry-rename.js +2 -1
  123. package/dist/core/registry/registry-rename.js.map +1 -1
  124. package/dist/core/registry.js +14 -5
  125. package/dist/core/registry.js.map +1 -1
  126. package/dist/core/remote-pull.js +165 -36
  127. package/dist/core/remote-pull.js.map +1 -1
  128. package/dist/core/save/constants.js +4 -0
  129. package/dist/core/save/constants.js.map +1 -1
  130. package/dist/core/save/name-resolution.js +31 -0
  131. package/dist/core/save/name-resolution.js.map +1 -0
  132. package/dist/core/save/package-detection.js +147 -0
  133. package/dist/core/save/package-detection.js.map +1 -0
  134. package/dist/core/save/package-saver.js +82 -43
  135. package/dist/core/save/package-saver.js.map +1 -1
  136. package/dist/core/save/package-yml-generator.js +51 -71
  137. package/dist/core/save/package-yml-generator.js.map +1 -1
  138. package/dist/core/save/root-save-candidates.js.map +1 -1
  139. package/dist/core/save/save-candidate-loader.js +89 -0
  140. package/dist/core/save/save-candidate-loader.js.map +1 -0
  141. package/dist/core/save/save-conflict-resolution.js +72 -410
  142. package/dist/core/save/save-conflict-resolution.js.map +1 -1
  143. package/dist/core/save/save-conflict-resolver.js +277 -0
  144. package/dist/core/save/save-conflict-resolver.js.map +1 -0
  145. package/dist/core/save/save-pipeline.js +162 -0
  146. package/dist/core/save/save-pipeline.js.map +1 -0
  147. package/dist/core/save/save-single-file.js +124 -0
  148. package/dist/core/save/save-single-file.js.map +1 -0
  149. package/dist/core/save/save-types.js +2 -0
  150. package/dist/core/save/save-types.js.map +1 -0
  151. package/dist/core/save/save-yml-resolution.js +77 -39
  152. package/dist/core/save/save-yml-resolution.js.map +1 -1
  153. package/dist/core/save/workspace-rename.js +6 -6
  154. package/dist/core/save/workspace-rename.js.map +1 -1
  155. package/dist/core/scoping/package-scoping.js +14 -2
  156. package/dist/core/scoping/package-scoping.js.map +1 -1
  157. package/dist/core/status/status-file-discovery.js +12 -30
  158. package/dist/core/status/status-file-discovery.js.map +1 -1
  159. package/dist/core/sync/platform-sync.js +7 -4
  160. package/dist/core/sync/platform-sync.js.map +1 -1
  161. package/dist/core/sync/root-files-sync.js +59 -1
  162. package/dist/core/sync/root-files-sync.js.map +1 -1
  163. package/dist/core/token-store.js +73 -0
  164. package/dist/core/token-store.js.map +1 -0
  165. package/dist/core/uninstall/uninstall-file-discovery.js +1 -2
  166. package/dist/core/uninstall/uninstall-file-discovery.js.map +1 -1
  167. package/dist/index.js +4 -0
  168. package/dist/index.js.map +1 -1
  169. package/dist/tui/app.js +95 -0
  170. package/dist/tui/app.js.map +1 -0
  171. package/dist/tui/components/package-list.js +73 -0
  172. package/dist/tui/components/package-list.js.map +1 -0
  173. package/dist/tui/controller.js +365 -0
  174. package/dist/tui/controller.js.map +1 -0
  175. package/dist/tui/index.js +12 -0
  176. package/dist/tui/index.js.map +1 -0
  177. package/dist/tui/services/file-index.js +64 -0
  178. package/dist/tui/services/file-index.js.map +1 -0
  179. package/dist/tui/services/packages.js +18 -0
  180. package/dist/tui/services/packages.js.map +1 -0
  181. package/dist/tui/services/save.js +21 -0
  182. package/dist/tui/services/save.js.map +1 -0
  183. package/dist/tui/state/app-state.js +15 -0
  184. package/dist/tui/state/app-state.js.map +1 -0
  185. package/dist/tui/state.js +17 -0
  186. package/dist/tui/state.js.map +1 -0
  187. package/dist/tui/types.js +2 -0
  188. package/dist/tui/types.js.map +1 -0
  189. package/dist/tui/views/add-file-modal.js +129 -0
  190. package/dist/tui/views/add-file-modal.js.map +1 -0
  191. package/dist/tui/views/file-preview.js +44 -0
  192. package/dist/tui/views/file-preview.js.map +1 -0
  193. package/dist/tui/views/list-packages.js +73 -0
  194. package/dist/tui/views/list-packages.js.map +1 -0
  195. package/dist/tui/views/main-menu.js +29 -0
  196. package/dist/tui/views/main-menu.js.map +1 -0
  197. package/dist/tui/views/manage-view.js +81 -0
  198. package/dist/tui/views/manage-view.js.map +1 -0
  199. package/dist/tui/views/package-hub.js +120 -0
  200. package/dist/tui/views/package-hub.js.map +1 -0
  201. package/dist/tui/views/placeholder.js +24 -0
  202. package/dist/tui/views/placeholder.js.map +1 -0
  203. package/dist/types/index.js.map +1 -1
  204. package/dist/utils/bun-bootstrap.js +72 -0
  205. package/dist/utils/bun-bootstrap.js.map +1 -0
  206. package/dist/utils/file-processing.js +5 -58
  207. package/dist/utils/file-processing.js.map +1 -1
  208. package/dist/utils/formatters.js +3 -1
  209. package/dist/utils/formatters.js.map +1 -1
  210. package/dist/utils/http-client.js +27 -5
  211. package/dist/utils/http-client.js.map +1 -1
  212. package/dist/utils/index-based-installer.js +40 -35
  213. package/dist/utils/index-based-installer.js.map +1 -1
  214. package/dist/utils/install-file-discovery.js +18 -24
  215. package/dist/utils/install-file-discovery.js.map +1 -1
  216. package/dist/utils/install-orchestrator.js +21 -21
  217. package/dist/utils/install-orchestrator.js.map +1 -1
  218. package/dist/utils/jsonc.js +44 -0
  219. package/dist/utils/jsonc.js.map +1 -0
  220. package/dist/utils/manifest-paths.js +27 -0
  221. package/dist/utils/manifest-paths.js.map +1 -0
  222. package/dist/utils/package-copy.js +199 -0
  223. package/dist/utils/package-copy.js.map +1 -0
  224. package/dist/utils/package-filters.js +125 -0
  225. package/dist/utils/package-filters.js.map +1 -0
  226. package/dist/utils/package-index-yml.js +15 -10
  227. package/dist/utils/package-index-yml.js.map +1 -1
  228. package/dist/utils/package-installation.js +4 -113
  229. package/dist/utils/package-installation.js.map +1 -1
  230. package/dist/utils/package-local-files.js +2 -35
  231. package/dist/utils/package-local-files.js.map +1 -1
  232. package/dist/utils/package-management.js +191 -75
  233. package/dist/utils/package-management.js.map +1 -1
  234. package/dist/utils/package-merge.js +48 -0
  235. package/dist/utils/package-merge.js.map +1 -0
  236. package/dist/utils/package-name.js +29 -0
  237. package/dist/utils/package-name.js.map +1 -1
  238. package/dist/utils/package-versioning.js +16 -4
  239. package/dist/utils/package-versioning.js.map +1 -1
  240. package/dist/utils/package-yml.js +41 -12
  241. package/dist/utils/package-yml.js.map +1 -1
  242. package/dist/utils/path-normalization.js +8 -53
  243. package/dist/utils/path-normalization.js.map +1 -1
  244. package/dist/utils/paths.js +17 -9
  245. package/dist/utils/paths.js.map +1 -1
  246. package/dist/utils/platform-file.js +16 -59
  247. package/dist/utils/platform-file.js.map +1 -1
  248. package/dist/utils/platform-mapper.js +29 -41
  249. package/dist/utils/platform-mapper.js.map +1 -1
  250. package/dist/utils/platform-specific-paths.js.map +1 -1
  251. package/dist/utils/platform-utils.js +28 -139
  252. package/dist/utils/platform-utils.js.map +1 -1
  253. package/dist/utils/platform-yaml-merge.js +13 -6
  254. package/dist/utils/platform-yaml-merge.js.map +1 -1
  255. package/dist/utils/prompts.js +0 -31
  256. package/dist/utils/prompts.js.map +1 -1
  257. package/dist/utils/registry-entry-filter.js +38 -24
  258. package/dist/utils/registry-entry-filter.js.map +1 -1
  259. package/dist/utils/registry-paths.js +48 -0
  260. package/dist/utils/registry-paths.js.map +1 -0
  261. package/dist/utils/root-file-installer.js +19 -0
  262. package/dist/utils/root-file-installer.js.map +1 -1
  263. package/dist/utils/root-file-registry.js.map +1 -1
  264. package/dist/utils/tarball.js +6 -2
  265. package/dist/utils/tarball.js.map +1 -1
  266. package/dist/utils/version-ranges.js +11 -8
  267. package/dist/utils/version-ranges.js.map +1 -1
  268. package/package.json +3 -2
  269. package/platforms.jsonc +178 -0
  270. package/specs/auth/auth-device-flow.md +70 -0
  271. package/specs/install/install-behavior.md +30 -0
  272. package/specs/install/package-yml-canonical.md +21 -1
  273. package/specs/install/version-resolution.md +9 -7
  274. package/specs/login/login-device-flow.md +70 -0
  275. package/specs/package/README.md +60 -0
  276. package/specs/package/nested-packages-and-parent-packages.md +79 -0
  277. package/specs/package/package-index-yml.md +171 -0
  278. package/specs/package/package-root-layout.md +78 -0
  279. package/specs/package/registry-payload-and-copy.md +77 -0
  280. package/specs/package/universal-content.md +144 -0
  281. package/specs/platforms.md +193 -0
  282. package/specs/push/push-behavior.md +38 -10
  283. package/specs/push/push-errors-and-hints.md +19 -6
  284. package/specs/push/push-remote-upload.md +3 -0
  285. package/specs/push/push-scoping.md +14 -22
  286. package/specs/push/push-version-selection.md +18 -16
  287. package/specs/save/README.md +40 -0
  288. package/specs/save/save-conflict-resolution.md +146 -0
  289. package/specs/save/save-file-discovery.md +101 -0
  290. package/specs/save/save-frontmatter-overrides.md +81 -0
  291. package/specs/save/save-modes-inputs.md +55 -0
  292. package/specs/save/save-naming-scoping.md +93 -0
  293. package/specs/save/save-package-detection.md +60 -0
  294. package/specs/save/save-registry-sync.md +126 -0
  295. package/specs/save-pack.md +1 -0
  296. package/dist/commands/release.js +0 -33
  297. package/dist/commands/release.js.map +0 -1
  298. package/dist/commands/tag.js +0 -311
  299. package/dist/commands/tag.js.map +0 -1
  300. package/dist/commands/update.js +0 -30
  301. package/dist/commands/update.js.map +0 -1
  302. package/dist/core/add/formula-index-updater.js +0 -290
  303. package/dist/core/add/formula-index-updater.js.map +0 -1
  304. package/dist/core/discovery/ai-files-discovery.js +0 -2
  305. package/dist/core/discovery/ai-files-discovery.js.map +0 -1
  306. package/dist/core/discovery/formula-files-discovery.js +0 -14
  307. package/dist/core/discovery/formula-files-discovery.js.map +0 -1
  308. package/dist/core/discovery/index-files-discovery.js +0 -91
  309. package/dist/core/discovery/index-files-discovery.js.map +0 -1
  310. package/dist/core/discovery/md-files-discovery.js +0 -82
  311. package/dist/core/discovery/md-files-discovery.js.map +0 -1
  312. package/dist/core/discovery/package-files-discovery.js +0 -14
  313. package/dist/core/discovery/package-files-discovery.js.map +0 -1
  314. package/dist/core/discovery/platform-discovery.js +0 -84
  315. package/dist/core/discovery/platform-discovery.js.map +0 -1
  316. package/dist/core/discovery/root-files-discovery.js +0 -2
  317. package/dist/core/discovery/root-files-discovery.js.map +0 -1
  318. package/dist/core/formula.js +0 -170
  319. package/dist/core/formula.js.map +0 -1
  320. package/dist/core/git-registry.js +0 -46
  321. package/dist/core/git-registry.js.map +0 -1
  322. package/dist/core/groundzero.js +0 -277
  323. package/dist/core/groundzero.js.map +0 -1
  324. package/dist/core/install/scenario.js +0 -11
  325. package/dist/core/install/scenario.js.map +0 -1
  326. package/dist/core/package-sync.js +0 -219
  327. package/dist/core/package-sync.js.map +0 -1
  328. package/dist/core/save/formula-file-generator.js +0 -167
  329. package/dist/core/save/formula-file-generator.js.map +0 -1
  330. package/dist/core/save/formula-saver.js +0 -52
  331. package/dist/core/save/formula-saver.js.map +0 -1
  332. package/dist/core/save/formula-yml-generator.js +0 -89
  333. package/dist/core/save/formula-yml-generator.js.map +0 -1
  334. package/dist/core/save/formula-yml-versioning.js +0 -108
  335. package/dist/core/save/formula-yml-versioning.js.map +0 -1
  336. package/dist/core/save/generic-file-sync.js +0 -38
  337. package/dist/core/save/generic-file-sync.js.map +0 -1
  338. package/dist/core/save/md-files-sync.js +0 -33
  339. package/dist/core/save/md-files-sync.js.map +0 -1
  340. package/dist/core/save/package-yml-versioning.js +0 -108
  341. package/dist/core/save/package-yml-versioning.js.map +0 -1
  342. package/dist/core/save/platform-sync.js +0 -95
  343. package/dist/core/save/platform-sync.js.map +0 -1
  344. package/dist/core/save/root-files-sync.js +0 -140
  345. package/dist/core/save/root-files-sync.js.map +0 -1
  346. package/dist/core/save/save-candidate-types.js +0 -2
  347. package/dist/core/save/save-candidate-types.js.map +0 -1
  348. package/dist/core/save/save-conflict-types.js +0 -2
  349. package/dist/core/save/save-conflict-types.js.map +0 -1
  350. package/dist/core/save/save-file-discovery.js +0 -5
  351. package/dist/core/save/save-file-discovery.js.map +0 -1
  352. package/dist/core/status-file-discovery.js +0 -175
  353. package/dist/core/status-file-discovery.js.map +0 -1
  354. package/dist/utils/discovery/file-processing.js +0 -156
  355. package/dist/utils/discovery/file-processing.js.map +0 -1
  356. package/dist/utils/discovery/formula-discovery.js +0 -211
  357. package/dist/utils/discovery/formula-discovery.js.map +0 -1
  358. package/dist/utils/discovery/platform-discovery.js +0 -2
  359. package/dist/utils/discovery/platform-discovery.js.map +0 -1
  360. package/dist/utils/formula-discovery.js +0 -102
  361. package/dist/utils/formula-discovery.js.map +0 -1
  362. package/dist/utils/formula-index-yml.js +0 -122
  363. package/dist/utils/formula-index-yml.js.map +0 -1
  364. package/dist/utils/formula-installation.js +0 -110
  365. package/dist/utils/formula-installation.js.map +0 -1
  366. package/dist/utils/formula-local-files.js +0 -38
  367. package/dist/utils/formula-local-files.js.map +0 -1
  368. package/dist/utils/formula-management.js +0 -191
  369. package/dist/utils/formula-management.js.map +0 -1
  370. package/dist/utils/formula-name.js +0 -97
  371. package/dist/utils/formula-name.js.map +0 -1
  372. package/dist/utils/formula-versioning.js +0 -109
  373. package/dist/utils/formula-versioning.js.map +0 -1
  374. package/dist/utils/formula-yml.js +0 -82
  375. package/dist/utils/formula-yml.js.map +0 -1
  376. package/dist/utils/git.js +0 -54
  377. package/dist/utils/git.js.map +0 -1
  378. package/dist/utils/id-based-discovery.js +0 -126
  379. package/dist/utils/id-based-discovery.js.map +0 -1
  380. package/dist/utils/id-based-installer.js +0 -249
  381. package/dist/utils/id-based-installer.js.map +0 -1
  382. package/dist/utils/index-yml-based-installer.js +0 -375
  383. package/dist/utils/index-yml-based-installer.js.map +0 -1
  384. package/dist/utils/index-yml.js +0 -124
  385. package/dist/utils/index-yml.js.map +0 -1
  386. package/dist/utils/md-frontmatter.js +0 -3
  387. package/dist/utils/md-frontmatter.js.map +0 -1
  388. package/dist/utils/package-link-yml.js +0 -92
  389. package/dist/utils/package-link-yml.js.map +0 -1
  390. package/dist/utils/platform-discovery.js +0 -2
  391. package/dist/utils/platform-discovery.js.map +0 -1
  392. package/dist/utils/platform-frontmatter-split.js +0 -15
  393. package/dist/utils/platform-frontmatter-split.js.map +0 -1
  394. package/dist/utils/timestamp-encoder.js +0 -13
  395. package/dist/utils/timestamp-encoder.js.map +0 -1
  396. package/dist/utils/wip-versioning.js +0 -24
  397. package/dist/utils/wip-versioning.js.map +0 -1
@@ -1,167 +0,0 @@
1
- import { basename, dirname, join } from "path";
2
- import { FILE_PATTERNS, PLATFORM_DIRS } from "../../constants/index.js";
3
- import { getAllPlatforms, getPlatformDefinition } from "../platforms.js";
4
- import { resolveRootFileConflicts } from "../../utils/root-conflict-resolution.js";
5
- import { resolvePlatformFileConflicts } from "../../utils/platform-conflict-resolution.js";
6
- import { writeFormulaYml } from "../../utils/formula-yml.js";
7
- import { exists, readTextFile } from "../../utils/fs.js";
8
- import { LOG_PREFIXES, UTF8_ENCODING } from "./constants.js";
9
- import { extractFormulaSection } from "../../utils/root-file-extractor.js";
10
- import { splitPlatformFileFrontmatter } from "../../utils/platform-frontmatter-split.js";
11
- /**
12
- * Process discovered files and return formula file entries
13
- */
14
- async function processFiles(formulaConfig, discoveredFiles) {
15
- // Process discovered files in parallel
16
- // Build dynamic set of platform root filenames from platform definitions
17
- const rootFilenamesSet = (() => {
18
- const set = new Set();
19
- for (const platform of getAllPlatforms()) {
20
- const def = getPlatformDefinition(platform);
21
- if (def.rootFile)
22
- set.add(def.rootFile);
23
- }
24
- return set;
25
- })();
26
- const filePromises = discoveredFiles.map(async (file) => {
27
- const originalContent = await readTextFile(file.fullPath);
28
- // Special handling for root files: store only the section body (no markers)
29
- // Supports AGENTS.md and platform-native root files
30
- if (file.fullPath.endsWith(FILE_PATTERNS.MD_FILES) && rootFilenamesSet.has(basename(file.fullPath))) {
31
- const extracted = extractFormulaSection(originalContent, formulaConfig.name);
32
- if (!extracted) {
33
- return null;
34
- }
35
- const sectionBody = extracted.sectionBody.trim();
36
- return {
37
- path: file.registryPath,
38
- content: sectionBody,
39
- encoding: UTF8_ENCODING
40
- };
41
- }
42
- // Only markdown files proceed with frontmatter logic
43
- if (!file.fullPath.endsWith(FILE_PATTERNS.MD_FILES)) {
44
- return {
45
- path: file.registryPath,
46
- content: originalContent,
47
- encoding: UTF8_ENCODING
48
- };
49
- }
50
- // Try platform frontmatter splitting first
51
- const splitResult = await splitPlatformFileFrontmatter(file, formulaConfig, rootFilenamesSet, LOG_PREFIXES.UPDATED);
52
- if (splitResult) {
53
- return splitResult;
54
- }
55
- return {
56
- path: file.registryPath,
57
- content: originalContent,
58
- encoding: UTF8_ENCODING
59
- };
60
- });
61
- const results = await Promise.all(filePromises);
62
- // Flatten any arrays returned (when YAML + MD are both returned)
63
- const flattened = [];
64
- for (const r of results) {
65
- if (!r)
66
- continue;
67
- if (Array.isArray(r)) {
68
- for (const f of r)
69
- if (f)
70
- flattened.push(f);
71
- }
72
- else {
73
- flattened.push(r);
74
- }
75
- }
76
- // Deduplicate universal .md files by path, but keep all .yml files
77
- const deduped = new Map();
78
- for (const file of flattened) {
79
- if (!deduped.has(file.path)) {
80
- deduped.set(file.path, file);
81
- continue;
82
- }
83
- // Keep the first .md instance and allow distinct .yml files to accumulate
84
- if (file.path.endsWith(FILE_PATTERNS.YML_FILE)) {
85
- deduped.set(file.path, file);
86
- }
87
- }
88
- return Array.from(deduped.values());
89
- }
90
- /**
91
- * Create the formula.yml file entry for the formula files array
92
- */
93
- async function createFormulaYmlFile(formulaInfo) {
94
- // Write and read the formula.yml content
95
- await writeFormulaYml(formulaInfo.fullPath, formulaInfo.config);
96
- const content = await readTextFile(formulaInfo.fullPath);
97
- return {
98
- path: FILE_PATTERNS.FORMULA_YML,
99
- content,
100
- encoding: UTF8_ENCODING
101
- };
102
- }
103
- /**
104
- * Create formula files array with unified discovery results
105
- */
106
- async function createFormulaFilesUnified(formulaInfo, discoveredFiles) {
107
- const formulaFiles = [];
108
- // Add formula.yml as the first file
109
- const formulaYmlFile = await createFormulaYmlFile(formulaInfo);
110
- formulaFiles.push(formulaYmlFile);
111
- // Add README.md if it exists in the formula directory
112
- const readmePath = join(dirname(formulaInfo.fullPath), FILE_PATTERNS.README_MD);
113
- if (await exists(readmePath)) {
114
- const readmeContent = await readTextFile(readmePath);
115
- formulaFiles.push({
116
- path: FILE_PATTERNS.README_MD,
117
- content: readmeContent,
118
- encoding: UTF8_ENCODING
119
- });
120
- }
121
- // Process discovered files of all types
122
- const processedFiles = await processFiles(formulaInfo.config, discoveredFiles);
123
- formulaFiles.push(...processedFiles);
124
- return formulaFiles;
125
- }
126
- /**
127
- * Process discovered files: resolve conflicts and create formula files array
128
- */
129
- export async function createFormulaFiles(formulaInfo, discoveredFiles) {
130
- // Separate root files from normal files
131
- const rootFiles = discoveredFiles.filter(f => f.isRootFile);
132
- const normalFiles = discoveredFiles.filter(f => !f.isRootFile);
133
- // Build root filenames set (for platform split eligibility checks)
134
- const rootFilenamesSet = (() => {
135
- const set = new Set();
136
- for (const platform of getAllPlatforms()) {
137
- const def = getPlatformDefinition(platform);
138
- if (def.rootFile)
139
- set.add(def.rootFile);
140
- }
141
- return set;
142
- })();
143
- // Separate files that should bypass conflict resolution to allow per-platform YAML splitting
144
- const platformSplitFiles = [];
145
- const regularFiles = [];
146
- for (const file of normalFiles) {
147
- const isPlatformDir = file.sourceDir !== PLATFORM_DIRS.AI;
148
- const isRootLike = rootFilenamesSet.has(basename(file.fullPath));
149
- const isForcedPlatformSpecific = file.forcePlatformSpecific === true;
150
- if (isPlatformDir && !isRootLike && !isForcedPlatformSpecific) {
151
- // This file will undergo platform frontmatter splitting; include as-is (no conflict resolution)
152
- platformSplitFiles.push(file);
153
- }
154
- else {
155
- regularFiles.push(file);
156
- }
157
- }
158
- // Resolve root file conflicts separately
159
- const resolvedRootFiles = await resolveRootFileConflicts(rootFiles, formulaInfo.config.version, /* silent */ true);
160
- // Resolve conflicts for regular files only
161
- const resolvedRegularFiles = await resolvePlatformFileConflicts(regularFiles, formulaInfo.config.version, /* silent */ true);
162
- // Combine: resolved root + resolved regular + platform-split (unresolved) files
163
- const combinedFiles = [...resolvedRootFiles, ...resolvedRegularFiles, ...platformSplitFiles];
164
- // Create formula files array
165
- return await createFormulaFilesUnified(formulaInfo, combinedFiles);
166
- }
167
- //# sourceMappingURL=formula-file-generator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formula-file-generator.js","sourceRoot":"","sources":["../../../src/core/save/formula-file-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAExE,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACnF,OAAO,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,YAAY,EAAiB,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,4BAA4B,EAAE,MAAM,2CAA2C,CAAC;AAGzF;;GAEG;AACH,KAAK,UAAU,YAAY,CAAC,aAAyB,EAAE,eAAiC;IACtF,uCAAuC;IACvC,yEAAyE;IACzE,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE;QAC7B,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;QAC9B,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,EAAE,CAAC;YACzC,MAAM,GAAG,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,GAAG,CAAC,QAAQ;gBAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,EAAE,CAAC;IAEL,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACtD,MAAM,eAAe,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE1D,4EAA4E;QAC5E,oDAAoD;QACpD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YACpG,MAAM,SAAS,GAAG,qBAAqB,CAAC,eAAe,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;YAC7E,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,IAAW,CAAC;YACrB,CAAC;YAED,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAEjD,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,YAAY;gBACvB,OAAO,EAAE,WAAW;gBACpB,QAAQ,EAAE,aAAa;aACxB,CAAC;QACJ,CAAC;QAGD,qDAAqD;QACrD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpD,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,YAAY;gBACvB,OAAO,EAAE,eAAe;gBACxB,QAAQ,EAAE,aAAa;aACxB,CAAC;QACJ,CAAC;QAED,2CAA2C;QAC3C,MAAM,WAAW,GAAG,MAAM,4BAA4B,CACpD,IAAI,EACJ,aAAa,EACb,gBAAgB,EAChB,YAAY,CAAC,OAAO,CACrB,CAAC;QAEF,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,YAAY;YACvB,OAAO,EAAE,eAAe;YACxB,QAAQ,EAAE,aAAa;SACxB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAChD,iEAAiE;IACjE,MAAM,SAAS,GAAkB,EAAE,CAAC;IACpC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,KAAK,MAAM,CAAC,IAAI,CAAC;gBAAE,IAAI,CAAC;oBAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,IAAI,CAAC,CAAgB,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,mEAAmE;IACnE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC/C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC7B,SAAS;QACX,CAAC;QACD,0EAA0E;QAC1E,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,oBAAoB,CAAC,WAA2B;IAC7D,yCAAyC;IACzC,MAAM,eAAe,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEzD,OAAO;QACL,IAAI,EAAE,aAAa,CAAC,WAAW;QAC/B,OAAO;QACP,QAAQ,EAAE,aAAa;KACxB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,yBAAyB,CACtC,WAA2B,EAC3B,eAAiC;IAEjC,MAAM,YAAY,GAAkB,EAAE,CAAC;IAEvC,oCAAoC;IACpC,MAAM,cAAc,GAAG,MAAM,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAC/D,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAElC,sDAAsD;IACtD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAChF,IAAI,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7B,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;QACrD,YAAY,CAAC,IAAI,CAAC;YAChB,IAAI,EAAE,aAAa,CAAC,SAAS;YAC7B,OAAO,EAAE,aAAa;YACtB,QAAQ,EAAE,aAAa;SACxB,CAAC,CAAC;IACL,CAAC;IAED,wCAAwC;IACxC,MAAM,cAAc,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC/E,YAAY,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;IAErC,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,WAA2B,EAC3B,eAAiC;IAEjC,wCAAwC;IACxC,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAE/D,mEAAmE;IACnE,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE;QAC7B,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;QAC9B,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,EAAE,CAAC;YACzC,MAAM,GAAG,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,GAAG,CAAC,QAAQ;gBAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,EAAE,CAAC;IAEL,6FAA6F;IAC7F,MAAM,kBAAkB,GAAqB,EAAE,CAAC;IAChD,MAAM,YAAY,GAAqB,EAAE,CAAC;IAE1C,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,KAAK,aAAa,CAAC,EAAE,CAAC;QAC1D,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjE,MAAM,wBAAwB,GAAG,IAAI,CAAC,qBAAqB,KAAK,IAAI,CAAC;QAErE,IAAI,aAAa,IAAI,CAAC,UAAU,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAC9D,gGAAgG;YAChG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,MAAM,iBAAiB,GAAG,MAAM,wBAAwB,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IAEnH,2CAA2C;IAC3C,MAAM,oBAAoB,GAAG,MAAM,4BAA4B,CAAC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IAE7H,gFAAgF;IAChF,MAAM,aAAa,GAAG,CAAC,GAAG,iBAAiB,EAAE,GAAG,oBAAoB,EAAE,GAAG,kBAAkB,CAAC,CAAC;IAE7F,6BAA6B;IAC7B,OAAO,MAAM,yBAAyB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AACrE,CAAC"}
@@ -1,52 +0,0 @@
1
- import { normalizeFormulaName } from "../../utils/formula-name.js";
2
- import { ensureDir, writeTextFile, remove } from "../../utils/fs.js";
3
- import { logger } from "../../utils/logger.js";
4
- import { resolveTargetDirectory, resolveTargetFilePath } from "../../utils/platform-mapper.js";
5
- import { getFormulaVersionPath } from "../directory.js";
6
- import { UTF8_ENCODING } from "./constants.js";
7
- import { formulaVersionExists } from "../../utils/formula-versioning.js";
8
- /**
9
- * Save formula to local registry
10
- */
11
- export async function saveFormulaToRegistry(formulaInfo, files, silent = true) {
12
- const config = formulaInfo.config;
13
- try {
14
- // Ensure formula name is normalized for consistent registry paths
15
- const normalizedConfig = { ...config, name: normalizeFormulaName(config.name) };
16
- const targetPath = getFormulaVersionPath(normalizedConfig.name, normalizedConfig.version);
17
- // If version already exists, clear the directory first to remove old files
18
- if (await formulaVersionExists(normalizedConfig.name, normalizedConfig.version)) {
19
- await remove(targetPath);
20
- logger.debug(`Cleared existing version directory: ${targetPath}`);
21
- }
22
- await ensureDir(targetPath);
23
- // Group files by target directory
24
- const directoryGroups = new Map();
25
- for (const file of files) {
26
- const targetDir = resolveTargetDirectory(targetPath, file.path);
27
- if (!directoryGroups.has(targetDir)) {
28
- directoryGroups.set(targetDir, []);
29
- }
30
- directoryGroups.get(targetDir).push(file);
31
- }
32
- // Save files in parallel by directory
33
- const savePromises = Array.from(directoryGroups.entries()).map(async ([dir, dirFiles]) => {
34
- await ensureDir(dir);
35
- const filePromises = dirFiles.map(async (file) => {
36
- const filePath = resolveTargetFilePath(dir, file.path);
37
- await writeTextFile(filePath, file.content, file.encoding || UTF8_ENCODING);
38
- });
39
- await Promise.all(filePromises);
40
- });
41
- await Promise.all(savePromises);
42
- if (!silent) {
43
- logger.info(`Formula '${normalizedConfig.name}@${normalizedConfig.version}' saved to local registry`);
44
- }
45
- return { success: true, updatedConfig: normalizedConfig };
46
- }
47
- catch (error) {
48
- logger.error(`Failed to save formula: ${error}`);
49
- return { success: false, error: `Failed to save formula: ${error}` };
50
- }
51
- }
52
- //# sourceMappingURL=formula-saver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formula-saver.js","sourceRoot":"","sources":["../../../src/core/save/formula-saver.ts"],"names":[],"mappings":"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"}
@@ -1,89 +0,0 @@
1
- import { join } from "path";
2
- import { FILE_PATTERNS } from "../../constants/index.js";
3
- import { normalizeFormulaName } from "../../utils/formula-name.js";
4
- import { parseFormulaYml, writeFormulaYml } from "../../utils/formula-yml.js";
5
- import { ensureDir, exists, isDirectory } from "../../utils/fs.js";
6
- import { logger } from "../../utils/logger.js";
7
- import { getLocalFormulaDir } from "../../utils/paths.js";
8
- import { ValidationError } from "../../utils/errors.js";
9
- import { ensureLocalOpenPackageStructure } from "../../utils/formula-management.js";
10
- import { hasFormulaVersion } from "../directory.js";
11
- import { DEFAULT_VERSION, ERROR_MESSAGES, LOG_PREFIXES, WIP_SUFFIX } from "./constants.js";
12
- import { determineTargetVersion } from "./formula-yml-versioning.js";
13
- /**
14
- * Create formula.yml automatically in a directory without user prompts
15
- * Reuses init command logic but makes it non-interactive
16
- */
17
- async function createFormulaYmlInDirectory(formulaDir, formulaName) {
18
- const cwd = process.cwd();
19
- // Ensure the target directory exists (including formulas subdirectory)
20
- await ensureLocalOpenPackageStructure(cwd);
21
- await ensureDir(formulaDir);
22
- // Create formula.yml in the formula directory (rTnot the main .openpackage directory)
23
- const formulaYmlPath = join(formulaDir, FILE_PATTERNS.FORMULA_YML);
24
- // Create default formula config
25
- const formulaConfig = {
26
- name: normalizeFormulaName(formulaName),
27
- version: DEFAULT_VERSION
28
- };
29
- // Create the formula.yml file
30
- await writeFormulaYml(formulaYmlPath, formulaConfig);
31
- console.log(`${LOG_PREFIXES.CREATED} ${formulaDir}`);
32
- console.log(`${LOG_PREFIXES.NAME} ${formulaConfig.name}`);
33
- console.log(`${LOG_PREFIXES.VERSION} ${formulaConfig.version}`);
34
- return {
35
- fullPath: formulaYmlPath,
36
- config: formulaConfig,
37
- isNewFormula: true
38
- };
39
- }
40
- export async function getOrCreateFormulaYml(cwd, name, explicitVersion, versionType, bump, force) {
41
- await ensureLocalOpenPackageStructure(cwd);
42
- const formulaDir = getLocalFormulaDir(cwd, name);
43
- if (!(await exists(formulaDir)) || !(await isDirectory(formulaDir))) {
44
- // Create the formula directory if it doesn't exist
45
- await ensureDir(formulaDir);
46
- logger.debug("Created formula directory for save", { path: formulaDir });
47
- }
48
- const normalizedName = normalizeFormulaName(name);
49
- const formulaYmlPath = join(formulaDir, FILE_PATTERNS.FORMULA_YML);
50
- let formulaConfig;
51
- let isNewFormula = false;
52
- if (await exists(formulaYmlPath)) {
53
- logger.debug("Found existing formula.yml for save", { path: formulaYmlPath });
54
- try {
55
- formulaConfig = await parseFormulaYml(formulaYmlPath);
56
- console.log(`✓ Found existing formula ${formulaConfig.name}@${formulaConfig.version}`);
57
- }
58
- catch (error) {
59
- throw new ValidationError(ERROR_MESSAGES.PARSE_FORMULA_FAILED.replace("%s", formulaYmlPath).replace("%s", String(error)));
60
- }
61
- }
62
- else {
63
- logger.debug("No formula.yml found for save, creating", { dir: formulaDir });
64
- const created = await createFormulaYmlInDirectory(formulaDir, normalizedName);
65
- formulaConfig = created.config;
66
- isNewFormula = true;
67
- }
68
- const targetVersion = await determineTargetVersion(explicitVersion, versionType, bump, isNewFormula ? undefined : formulaConfig.version);
69
- const allowOverwrite = force || targetVersion.endsWith(WIP_SUFFIX);
70
- if (!allowOverwrite) {
71
- const versionExists = await hasFormulaVersion(normalizedName, targetVersion);
72
- if (versionExists) {
73
- throw new Error(ERROR_MESSAGES.VERSION_EXISTS.replace("%s", targetVersion));
74
- }
75
- }
76
- const updatedConfig = {
77
- ...formulaConfig,
78
- name: normalizedName,
79
- version: targetVersion
80
- };
81
- await writeFormulaYml(formulaYmlPath, updatedConfig);
82
- return {
83
- fullPath: formulaYmlPath,
84
- config: updatedConfig,
85
- isNewFormula,
86
- isRootFormula: false
87
- };
88
- }
89
- //# sourceMappingURL=formula-yml-generator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formula-yml-generator.js","sourceRoot":"","sources":["../../../src/core/save/formula-yml-generator.ts"],"names":[],"mappings":"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"}
@@ -1,108 +0,0 @@
1
- import { ValidationError } from "../../utils/errors.js";
2
- import { extractBaseVersion, generateLocalVersion, isLocalVersion } from "../../utils/version-generator.js";
3
- import { ERROR_MESSAGES, LOG_PREFIXES, DEFAULT_VERSION, VERSION_TYPE_STABLE } from "./constants.js";
4
- const BUMP_TYPES = {
5
- PATCH: 'patch',
6
- MINOR: 'minor',
7
- MAJOR: 'major'
8
- };
9
- /**
10
- * Bump version to prerelease (default behavior for --bump)
11
- * @param version - The current version string
12
- * @param bumpType - The type of bump to apply
13
- * @returns A new prerelease version string
14
- */
15
- function bumpToPrerelease(version, bumpType) {
16
- const baseVersion = extractBaseVersion(version);
17
- const bumpedBase = calculateBumpedVersion(baseVersion, bumpType);
18
- return generateLocalVersion(bumpedBase);
19
- }
20
- /**
21
- * Bump version to stable (when combined with 'stable' argument)
22
- * @param version - The current version string
23
- * @param bumpType - The type of bump to apply
24
- * @returns A new stable version string
25
- */
26
- function bumpToStable(version, bumpType) {
27
- const baseVersion = extractBaseVersion(version);
28
- return calculateBumpedVersion(baseVersion, bumpType);
29
- }
30
- /**
31
- * Calculate bumped version based on type (stable output)
32
- * @param version - The base version string to bump
33
- * @param bumpType - The type of bump to apply ('patch', 'minor', or 'major')
34
- * @returns The bumped version string
35
- * @throws ValidationError if version format is invalid or bump type is unknown
36
- */
37
- function calculateBumpedVersion(version, bumpType) {
38
- // Extract base version (remove any prerelease identifiers and build metadata)
39
- const baseVersion = version.split('-')[0].split('+')[0];
40
- const parts = baseVersion.split('.').map(Number);
41
- // Validate that we have valid numbers
42
- if (parts.some(isNaN)) {
43
- throw new ValidationError(ERROR_MESSAGES.INVALID_VERSION_FORMAT.replace('%s', version));
44
- }
45
- switch (bumpType) {
46
- case 'patch':
47
- return parts.length >= 3 ? `${parts[0]}.${parts[1]}.${parts[2] + 1}` : baseVersion;
48
- case 'minor':
49
- return parts.length >= 2 ? `${parts[0]}.${parts[1] + 1}.0` : baseVersion;
50
- case 'major':
51
- return parts.length >= 1 ? `${parts[0] + 1}.0.0` : baseVersion;
52
- default:
53
- throw new ValidationError(ERROR_MESSAGES.INVALID_BUMP_TYPE.replace('%s', bumpType));
54
- }
55
- }
56
- /**
57
- * Determine target version based on input, version type, and options
58
- */
59
- export async function determineTargetVersion(explicitVersion, versionType, bump, currentVersion) {
60
- if (explicitVersion) {
61
- console.log(`${LOG_PREFIXES.EXPLICIT_VERSION} ${explicitVersion}`);
62
- return explicitVersion;
63
- }
64
- if (!currentVersion) {
65
- const prereleaseVersion = generateLocalVersion(DEFAULT_VERSION);
66
- console.log(`${LOG_PREFIXES.PRERELEASE} ${prereleaseVersion}`);
67
- return prereleaseVersion;
68
- }
69
- if (bump) {
70
- if (versionType === VERSION_TYPE_STABLE) {
71
- const bumpedVersion = bumpToStable(currentVersion, bump);
72
- console.log(`${LOG_PREFIXES.BUMP_STABLE} ${currentVersion} ${LOG_PREFIXES.ARROW_SEPARATOR} ${bumpedVersion}`);
73
- return bumpedVersion;
74
- }
75
- else {
76
- const bumpedVersion = bumpToPrerelease(currentVersion, bump);
77
- console.log(`${LOG_PREFIXES.BUMP_PRERELEASE} ${currentVersion} ${LOG_PREFIXES.ARROW_SEPARATOR} ${bumpedVersion}`);
78
- return bumpedVersion;
79
- }
80
- }
81
- if (versionType === VERSION_TYPE_STABLE) {
82
- if (isLocalVersion(currentVersion)) {
83
- const stableVersion = extractBaseVersion(currentVersion);
84
- console.log(`${LOG_PREFIXES.CONVERT_STABLE} ${currentVersion} ${LOG_PREFIXES.ARROW_SEPARATOR} ${stableVersion}`);
85
- return stableVersion;
86
- }
87
- else {
88
- // Already stable - auto bump to next patch version
89
- const nextStable = calculateBumpedVersion(currentVersion, 'patch');
90
- console.log(`${LOG_PREFIXES.BUMP_STABLE} ${currentVersion} ${LOG_PREFIXES.ARROW_SEPARATOR} ${nextStable}`);
91
- return nextStable;
92
- }
93
- }
94
- // Default smart increment behavior
95
- if (isLocalVersion(currentVersion)) {
96
- const localVersion = generateLocalVersion(extractBaseVersion(currentVersion));
97
- console.log(`${LOG_PREFIXES.SET_PRERELEASE} ${currentVersion} ${LOG_PREFIXES.ARROW_SEPARATOR} ${localVersion}`);
98
- return localVersion;
99
- }
100
- else {
101
- // For other stable versions, bump patch and then generate prerelease
102
- const nextPatchVersion = calculateBumpedVersion(currentVersion, 'patch');
103
- const localVersion = generateLocalVersion(nextPatchVersion);
104
- console.log(`${LOG_PREFIXES.AUTO_INCREMENT} ${currentVersion} ${LOG_PREFIXES.ARROW_SEPARATOR} ${localVersion}`);
105
- return localVersion;
106
- }
107
- }
108
- //# sourceMappingURL=formula-yml-versioning.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formula-yml-versioning.js","sourceRoot":"","sources":["../../../src/core/save/formula-yml-versioning.ts"],"names":[],"mappings":"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"}
@@ -1,38 +0,0 @@
1
- import { getPlatformDefinition, getDetectedPlatforms } from "../platforms.js";
2
- import { writeIfChanged } from "../install/file-updater.js";
3
- import { relative, join } from "path";
4
- import { logger } from "../../utils/logger.js";
5
- /**
6
- * Sync a generic (non-markdown) universal file preserving filename and extension
7
- */
8
- export async function syncGenericFile(cwd, universalSubdir, relPath, content, result) {
9
- // Resolve targets manually to preserve original extension (avoid writeExt conversion)
10
- const detected = await getDetectedPlatforms(cwd);
11
- for (const platform of detected) {
12
- try {
13
- const def = getPlatformDefinition(platform);
14
- const subdirDef = def.subdirs[universalSubdir];
15
- if (!subdirDef)
16
- continue;
17
- const absDir = join(cwd, def.rootDir, subdirDef.path);
18
- const targetFile = join(absDir, relPath);
19
- const outcome = await writeIfChanged(targetFile, content);
20
- const rel = relative(cwd, targetFile);
21
- if (outcome === 'created') {
22
- result.created.push(rel);
23
- logger.debug(`Created synced file: ${targetFile}`);
24
- }
25
- else if (outcome === 'updated') {
26
- result.updated.push(rel);
27
- logger.debug(`Updated synced file: ${targetFile}`);
28
- }
29
- else {
30
- logger.debug(`Synced file unchanged: ${targetFile}`);
31
- }
32
- }
33
- catch (error) {
34
- logger.warn(`Failed to sync generic file for platform ${platform}: ${error}`);
35
- }
36
- }
37
- }
38
- //# sourceMappingURL=generic-file-sync.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generic-file-sync.js","sourceRoot":"","sources":["../../../src/core/save/generic-file-sync.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE9E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,GAAW,EACX,eAAuB,EACvB,OAAe,EACf,OAAe,EACf,MAA0B;IAE1B,sFAAsF;IACtF,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAEjD,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,qBAAqB,CAAC,QAAe,CAAC,CAAC;YACnD,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,eAAkC,CAAC,CAAC;YAClE,IAAI,CAAC,SAAS;gBAAE,SAAS;YAEzB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;YACtD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAEzC,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC1D,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YACtC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACzB,MAAM,CAAC,KAAK,CAAC,wBAAwB,UAAU,EAAE,CAAC,CAAC;YACrD,CAAC;iBAAM,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBACjC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACzB,MAAM,CAAC,KAAK,CAAC,wBAAwB,UAAU,EAAE,CAAC,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,KAAK,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,4CAA4C,QAAQ,KAAK,KAAK,EAAE,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1,33 +0,0 @@
1
- import { resolveInstallTargets } from "../../utils/platform-mapper.js";
2
- import { FILE_PATTERNS } from "../../constants/index.js";
3
- import { mergePlatformYamlOverride } from "../../utils/platform-yaml-merge.js";
4
- import { writeIfChanged } from "../install/file-updater.js";
5
- import { relative } from "path";
6
- import { logger } from "../../utils/logger.js";
7
- /**
8
- * Sync a universal markdown file with optional YAML override merging
9
- */
10
- export async function syncUniversalMarkdown(cwd, universalSubdir, relPath, content, formulaFiles, result) {
11
- const targets = await resolveInstallTargets(cwd, {
12
- universalSubdir: universalSubdir,
13
- relPath,
14
- sourceExt: FILE_PATTERNS.MD_FILES
15
- });
16
- for (const target of targets) {
17
- const finalContent = mergePlatformYamlOverride(content, target.platform, universalSubdir, relPath, formulaFiles);
18
- const outcome = await writeIfChanged(target.absFile, finalContent);
19
- const rel = relative(cwd, target.absFile);
20
- if (outcome === 'created') {
21
- result.created.push(rel);
22
- logger.debug(`Created synced file: ${target.absFile}`);
23
- }
24
- else if (outcome === 'updated') {
25
- result.updated.push(rel);
26
- logger.debug(`Updated synced file: ${target.absFile}`);
27
- }
28
- else {
29
- logger.debug(`Synced file unchanged: ${target.absFile}`);
30
- }
31
- }
32
- }
33
- //# sourceMappingURL=md-files-sync.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"md-files-sync.js","sourceRoot":"","sources":["../../../src/core/save/md-files-sync.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,GAAW,EACX,eAAuB,EACvB,OAAe,EACf,OAAe,EACf,YAA2B,EAC3B,MAA0B;IAE1B,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,GAAG,EAAE;QAC/C,eAAe,EAAE,eAAsB;QACvC,OAAO;QACP,SAAS,EAAE,aAAa,CAAC,QAAQ;KAClC,CAAC,CAAC;IAEH,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,YAAY,GAAG,yBAAyB,CAC5C,OAAO,EACP,MAAM,CAAC,QAAQ,EACf,eAAe,EACf,OAAO,EACP,YAAY,CACb,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QACnE,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzB,MAAM,CAAC,KAAK,CAAC,wBAAwB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACzD,CAAC;aAAM,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzB,MAAM,CAAC,KAAK,CAAC,wBAAwB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,0BAA0B,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1,108 +0,0 @@
1
- import { ValidationError } from "../../utils/errors.js";
2
- import { extractBaseVersion, generateLocalVersion, isLocalVersion } from "../../utils/version-generator.js";
3
- import { ERROR_MESSAGES, LOG_PREFIXES, DEFAULT_VERSION, VERSION_TYPE_STABLE } from "./constants.js";
4
- const BUMP_TYPES = {
5
- PATCH: 'patch',
6
- MINOR: 'minor',
7
- MAJOR: 'major'
8
- };
9
- /**
10
- * Bump version to prerelease (default behavior for --bump)
11
- * @param version - The current version string
12
- * @param bumpType - The type of bump to apply
13
- * @returns A new prerelease version string
14
- */
15
- function bumpToPrerelease(version, bumpType) {
16
- const baseVersion = extractBaseVersion(version);
17
- const bumpedBase = calculateBumpedVersion(baseVersion, bumpType);
18
- return generateLocalVersion(bumpedBase);
19
- }
20
- /**
21
- * Bump version to stable (when combined with 'stable' argument)
22
- * @param version - The current version string
23
- * @param bumpType - The type of bump to apply
24
- * @returns A new stable version string
25
- */
26
- function bumpToStable(version, bumpType) {
27
- const baseVersion = extractBaseVersion(version);
28
- return calculateBumpedVersion(baseVersion, bumpType);
29
- }
30
- /**
31
- * Calculate bumped version based on type (stable output)
32
- * @param version - The base version string to bump
33
- * @param bumpType - The type of bump to apply ('patch', 'minor', or 'major')
34
- * @returns The bumped version string
35
- * @throws ValidationError if version format is invalid or bump type is unknown
36
- */
37
- function calculateBumpedVersion(version, bumpType) {
38
- // Extract base version (remove any prerelease identifiers and build metadata)
39
- const baseVersion = version.split('-')[0].split('+')[0];
40
- const parts = baseVersion.split('.').map(Number);
41
- // Validate that we have valid numbers
42
- if (parts.some(isNaN)) {
43
- throw new ValidationError(ERROR_MESSAGES.INVALID_VERSION_FORMAT.replace('%s', version));
44
- }
45
- switch (bumpType) {
46
- case 'patch':
47
- return parts.length >= 3 ? `${parts[0]}.${parts[1]}.${parts[2] + 1}` : baseVersion;
48
- case 'minor':
49
- return parts.length >= 2 ? `${parts[0]}.${parts[1] + 1}.0` : baseVersion;
50
- case 'major':
51
- return parts.length >= 1 ? `${parts[0] + 1}.0.0` : baseVersion;
52
- default:
53
- throw new ValidationError(ERROR_MESSAGES.INVALID_BUMP_TYPE.replace('%s', bumpType));
54
- }
55
- }
56
- /**
57
- * Determine target version based on input, version type, and options
58
- */
59
- export async function determineTargetVersion(explicitVersion, versionType, bump, currentVersion) {
60
- if (explicitVersion) {
61
- console.log(`${LOG_PREFIXES.EXPLICIT_VERSION} ${explicitVersion}`);
62
- return explicitVersion;
63
- }
64
- if (!currentVersion) {
65
- const prereleaseVersion = generateLocalVersion(DEFAULT_VERSION);
66
- console.log(`${LOG_PREFIXES.PRERELEASE} ${prereleaseVersion}`);
67
- return prereleaseVersion;
68
- }
69
- if (bump) {
70
- if (versionType === VERSION_TYPE_STABLE) {
71
- const bumpedVersion = bumpToStable(currentVersion, bump);
72
- console.log(`${LOG_PREFIXES.BUMP_STABLE} ${currentVersion} ${LOG_PREFIXES.ARROW_SEPARATOR} ${bumpedVersion}`);
73
- return bumpedVersion;
74
- }
75
- else {
76
- const bumpedVersion = bumpToPrerelease(currentVersion, bump);
77
- console.log(`${LOG_PREFIXES.BUMP_PRERELEASE} ${currentVersion} ${LOG_PREFIXES.ARROW_SEPARATOR} ${bumpedVersion}`);
78
- return bumpedVersion;
79
- }
80
- }
81
- if (versionType === VERSION_TYPE_STABLE) {
82
- if (isLocalVersion(currentVersion)) {
83
- const stableVersion = extractBaseVersion(currentVersion);
84
- console.log(`${LOG_PREFIXES.CONVERT_STABLE} ${currentVersion} ${LOG_PREFIXES.ARROW_SEPARATOR} ${stableVersion}`);
85
- return stableVersion;
86
- }
87
- else {
88
- // Already stable - auto bump to next patch version
89
- const nextStable = calculateBumpedVersion(currentVersion, 'patch');
90
- console.log(`${LOG_PREFIXES.BUMP_STABLE} ${currentVersion} ${LOG_PREFIXES.ARROW_SEPARATOR} ${nextStable}`);
91
- return nextStable;
92
- }
93
- }
94
- // Default smart increment behavior
95
- if (isLocalVersion(currentVersion)) {
96
- const localVersion = generateLocalVersion(extractBaseVersion(currentVersion));
97
- console.log(`${LOG_PREFIXES.SET_PRERELEASE} ${currentVersion} ${LOG_PREFIXES.ARROW_SEPARATOR} ${localVersion}`);
98
- return localVersion;
99
- }
100
- else {
101
- // For other stable versions, bump patch and then generate prerelease
102
- const nextPatchVersion = calculateBumpedVersion(currentVersion, 'patch');
103
- const localVersion = generateLocalVersion(nextPatchVersion);
104
- console.log(`${LOG_PREFIXES.AUTO_INCREMENT} ${currentVersion} ${LOG_PREFIXES.ARROW_SEPARATOR} ${localVersion}`);
105
- return localVersion;
106
- }
107
- }
108
- //# sourceMappingURL=package-yml-versioning.js.map