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 +0,0 @@
1
- {"version":3,"file":"package-yml-versioning.js","sourceRoot":"","sources":["../../../src/core/save/package-yml-versioning.ts"],"names":[],"mappings":"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"}
@@ -1,95 +0,0 @@
1
- /**
2
- * Platform Sync Module
3
- * Utility functions for syncing saved formula files across detected platforms
4
- */
5
- import { getDetectedPlatforms } from '../platforms.js';
6
- import { FILE_PATTERNS, PLATFORMS } from '../../constants/index.js';
7
- import { logger } from '../../utils/logger.js';
8
- import { parseUniversalPath } from '../../utils/platform-file.js';
9
- import { syncRootFiles } from './root-files-sync.js';
10
- import { syncUniversalMarkdown } from './md-files-sync.js';
11
- import { syncGenericFile } from './generic-file-sync.js';
12
- /**
13
- * Determine if a formula file is syncable across platforms.
14
- * - Allows universal subdir .md files
15
- * - Allows index.yml under universal subdirs
16
- */
17
- function isYamlOverrideFile(relPath) {
18
- // Matches filename.{platform}.yml using platform list from constants
19
- const alternation = Object.values(PLATFORMS).join('|');
20
- const regex = new RegExp(`\\\.(?:${alternation})\\\.yml$`, 'i');
21
- return regex.test(relPath);
22
- }
23
- function isSyncableUniversalFile(file) {
24
- const parsed = parseUniversalPath(file.path);
25
- if (!parsed)
26
- return false;
27
- // Exclude YAML override files; these are used only to merge frontmatter
28
- if (isYamlOverrideFile(file.path))
29
- return false;
30
- return true; // Accept any other file in universal subdirs
31
- }
32
- /**
33
- * Sync saved formula files across all detected platforms
34
- * @param cwd - Current working directory
35
- * @param formulaFiles - Array of formula files that were saved to registry
36
- * @returns Promise resolving to sync result with created files
37
- */
38
- export async function syncPlatformFiles(cwd, formulaFiles) {
39
- const result = {
40
- created: [],
41
- updated: []
42
- };
43
- // Get detected platforms
44
- const detectedPlatforms = await getDetectedPlatforms(cwd);
45
- if (detectedPlatforms.length === 0) {
46
- logger.debug('No platforms detected, skipping platform sync');
47
- return result;
48
- }
49
- // Filter formula files to only those in universal subdirs (rules, commands, agents)
50
- // Include .md files and index.yml (copied verbatim), but exclude other .yml overrides
51
- const syncableFiles = formulaFiles.filter(isSyncableUniversalFile);
52
- if (syncableFiles.length === 0) {
53
- logger.debug('No syncable files found (no universal subdir files), skipping platform sync');
54
- return result;
55
- }
56
- logger.debug(`Starting platform sync for ${syncableFiles.length} files across ${detectedPlatforms.length} platforms`);
57
- // Process each syncable file
58
- for (const file of syncableFiles) {
59
- const parsedPath = parseUniversalPath(file.path);
60
- if (!parsedPath)
61
- continue;
62
- // Skip platform-specific files entirely (those with a platform suffix in filename)
63
- if (parsedPath.platformSuffix) {
64
- continue;
65
- }
66
- // Sync non platform-specific files across detected platforms
67
- const { universalSubdir, relPath } = parsedPath;
68
- const lower = relPath.toLowerCase();
69
- try {
70
- if (lower.endsWith(FILE_PATTERNS.MD_FILES)) {
71
- // Markdown files: convert extension + merge YAML overrides
72
- await syncUniversalMarkdown(cwd, universalSubdir, relPath, file.content, formulaFiles, result);
73
- }
74
- else {
75
- // Other files: copy as-is preserving filename and structure
76
- await syncGenericFile(cwd, universalSubdir, relPath, file.content, result);
77
- }
78
- }
79
- catch (error) {
80
- logger.warn(`Failed to sync file ${file.path}: ${error}`);
81
- }
82
- }
83
- return result;
84
- }
85
- export async function performPlatformSync(cwd, formulaName, formulaFiles) {
86
- // Sync universal files across detected platforms
87
- const syncResult = await syncPlatformFiles(cwd, formulaFiles);
88
- // Sync root files across detected platforms
89
- const rootSyncResult = await syncRootFiles(cwd, formulaFiles, formulaName);
90
- return {
91
- created: [...syncResult.created, ...rootSyncResult.created],
92
- updated: [...syncResult.updated, ...rootSyncResult.updated]
93
- };
94
- }
95
- //# sourceMappingURL=platform-sync.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"platform-sync.js","sourceRoot":"","sources":["../../../src/core/save/platform-sync.ts"],"names":[],"mappings":"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"}
@@ -1,140 +0,0 @@
1
- /**
2
- * Root File Sync Module
3
- * Utility functions for syncing saved root formula files across detected platforms
4
- */
5
- import { relative } from 'path';
6
- import { ensureDir, writeTextFile, exists, readTextFile } from '../../utils/fs.js';
7
- import { getDetectedPlatforms, getPlatformDefinition, getAllPlatforms } from '../platforms.js';
8
- import { logger } from '../../utils/logger.js';
9
- import { getPlatformForRootFile } from '../../utils/root-file-registry.js';
10
- import { mergeFormulaContentIntoRootFile } from '../../utils/root-file-merger.js';
11
- import { ensureRootMarkerIdAndExtract, buildOpenMarker, CLOSE_MARKER } from '../../utils/root-file-extractor.js';
12
- import { getPathLeaf } from '../../utils/path-normalization.js';
13
- /**
14
- * Sync saved root formula files across all detected platforms
15
- * Converts between platform-specific root files (e.g., CLAUDE.md ↔ AGENTS.md)
16
- * @param cwd - Current working directory
17
- * @param formulaFiles - Array of formula files that were saved to registry
18
- * @param formulaName - Name of the formula being synced
19
- * @returns Promise resolving to sync result with created, updated, and skipped files
20
- */
21
- export async function syncRootFiles(cwd, formulaFiles, formulaName) {
22
- const result = {
23
- created: [],
24
- updated: [],
25
- skipped: []
26
- };
27
- // Get detected platforms
28
- const detectedPlatforms = await getDetectedPlatforms(cwd);
29
- if (detectedPlatforms.length === 0) {
30
- logger.debug('No platforms detected, skipping root file sync');
31
- return result;
32
- }
33
- // Filter formula files to only root files
34
- const rootFiles = formulaFiles.filter(file => isRootFile(file.path));
35
- if (rootFiles.length === 0) {
36
- logger.debug('No root files found in formula, skipping root file sync');
37
- return result;
38
- }
39
- logger.debug(`Starting root file sync for ${rootFiles.length} files across ${detectedPlatforms.length} platforms`);
40
- // Process each root file
41
- for (const rootFile of rootFiles) {
42
- try {
43
- const syncResults = await syncSingleRootFile(cwd, rootFile, formulaName, detectedPlatforms);
44
- result.created.push(...syncResults.created);
45
- result.updated.push(...syncResults.updated);
46
- result.skipped.push(...syncResults.skipped);
47
- }
48
- catch (error) {
49
- logger.warn(`Failed to sync root file ${rootFile.path}: ${error}`);
50
- result.skipped.push(rootFile.path);
51
- }
52
- }
53
- return result;
54
- }
55
- /**
56
- * Check if a file path represents a root file
57
- */
58
- export function isRootFile(filePath) {
59
- // Get all possible root file names from platform definitions
60
- const rootFileNames = new Set();
61
- for (const platform of getAllPlatforms()) {
62
- const def = getPlatformDefinition(platform);
63
- if (def.rootFile) {
64
- rootFileNames.add(def.rootFile);
65
- }
66
- }
67
- const fileName = getPathLeaf(filePath);
68
- return fileName ? rootFileNames.has(fileName) : false;
69
- }
70
- /**
71
- * Sync a single root file across detected platforms
72
- */
73
- async function syncSingleRootFile(cwd, rootFile, formulaName, detectedPlatforms) {
74
- const result = {
75
- created: [],
76
- updated: [],
77
- skipped: []
78
- };
79
- const sourceFileName = getPathLeaf(rootFile.path);
80
- const sourcePlatform = getPlatformForRootFile(sourceFileName);
81
- // Extract the formula content from the source root file
82
- const ensured = ensureRootMarkerIdAndExtract(rootFile.content, formulaName);
83
- if (!ensured) {
84
- logger.warn(`Invalid marker-wrapped content in ${sourceFileName}, skipping sync`);
85
- result.skipped.push(rootFile.path);
86
- return result;
87
- }
88
- const formulaContent = buildOpenMarker(formulaName, ensured.id) + '\n' + ensured.sectionBody + '\n' + CLOSE_MARKER;
89
- // Sync to each detected platform
90
- for (const platform of detectedPlatforms) {
91
- const platformDef = getPlatformDefinition(platform);
92
- if (!platformDef.rootFile) {
93
- continue; // Platform doesn't use root files
94
- }
95
- try {
96
- const targetRootFile = platformDef.rootFile;
97
- const targetPath = `${cwd}/${targetRootFile}`;
98
- // Check if target file already exists
99
- const fileExists = await exists(targetPath);
100
- let existingContent = '';
101
- if (fileExists) {
102
- try {
103
- existingContent = await readTextFile(targetPath, 'utf8');
104
- }
105
- catch (error) {
106
- logger.warn(`Failed to read existing file ${targetPath}: ${error}`);
107
- result.skipped.push(`${platform}:${targetRootFile}`);
108
- continue;
109
- }
110
- }
111
- // Merge the formula content into the target file
112
- const mergedContent = mergeFormulaContentIntoRootFile(existingContent, formulaName, formulaContent);
113
- // Ensure target directory exists (though root files are at project root)
114
- await ensureDir(cwd);
115
- // Write the merged content
116
- await writeTextFile(targetPath, mergedContent, 'utf8');
117
- // Record result
118
- const relativePath = relative(cwd, targetPath);
119
- if (fileExists) {
120
- if (existingContent !== mergedContent) {
121
- result.updated.push(`${relativePath}`);
122
- logger.debug(`Updated synced root file: ${targetPath}`);
123
- }
124
- else {
125
- logger.debug(`Root file unchanged: ${targetPath}`);
126
- }
127
- }
128
- else {
129
- result.created.push(`${relativePath}`);
130
- logger.debug(`Created synced root file: ${targetPath}`);
131
- }
132
- }
133
- catch (error) {
134
- logger.warn(`Failed to sync root file ${platformDef.rootFile}: ${error}`);
135
- result.skipped.push(`${platformDef.rootFile}`);
136
- }
137
- }
138
- return result;
139
- }
140
- //# sourceMappingURL=root-files-sync.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"root-files-sync.js","sourceRoot":"","sources":["../../../src/core/save/root-files-sync.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=save-candidate-types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"save-candidate-types.js","sourceRoot":"","sources":["../../../src/core/save/save-candidate-types.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=save-conflict-types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"save-conflict-types.js","sourceRoot":"","sources":["../../../src/core/save/save-conflict-types.ts"],"names":[],"mappings":""}
@@ -1,5 +0,0 @@
1
- import { resolvePackageFilesWithConflicts } from './save-conflict-resolution.js';
2
- export async function discoverPackageFilesForSave(packageInfo, options = {}) {
3
- return await resolvePackageFilesWithConflicts(packageInfo, options);
4
- }
5
- //# sourceMappingURL=save-file-discovery.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"save-file-discovery.js","sourceRoot":"","sources":["../../../src/core/save/save-file-discovery.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,gCAAgC,EAEjC,MAAM,+BAA+B,CAAC;AAEvC,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,WAA2B,EAC3B,UAAyC,EAAE;IAE3C,OAAO,MAAM,gCAAgC,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC"}
@@ -1,175 +0,0 @@
1
- import { join, dirname } from 'path';
2
- import { FILE_PATTERNS, PLATFORM_AI, PLATFORM_DIRS, UNIVERSAL_SUBDIRS } from '../constants/index.js';
3
- import { buildPlatformSearchConfig } from './discovery/platform-discovery.js';
4
- import { getPlatformDefinition, getAllPlatforms } from './platforms.js';
5
- import { exists, walkFiles, readTextFile } from '../utils/fs.js';
6
- import { parseMarkdownFrontmatter } from '../utils/md-frontmatter.js';
7
- import { findMatchingIndexYmlDirsRecursive } from './discovery/index-files-discovery.js';
8
- import { extractFormulaContentFromRootFile } from '../utils/root-file-extractor.js';
9
- /**
10
- * Discover installed formulas using same methods as uninstall but optimized for status command
11
- * Returns detailed file information for formulas in the config
12
- */
13
- export async function discoverFormulasForStatus(formulaNames) {
14
- const cwd = process.cwd();
15
- const result = new Map();
16
- // Initialize result entries for all requested formulas
17
- for (const formulaName of formulaNames) {
18
- result.set(formulaName, { aiFiles: [], platforms: {}, rootFiles: [] });
19
- }
20
- // Use same platform detection as uninstall
21
- const configs = await buildPlatformSearchConfig(cwd);
22
- // Process each platform configuration
23
- for (const cfg of configs) {
24
- if (cfg.platform === PLATFORM_AI) {
25
- await discoverAIForFormulas(cwd, result, formulaNames);
26
- }
27
- else {
28
- await discoverPlatformForFormulas(cwd, cfg.platform, result, formulaNames);
29
- }
30
- }
31
- // Check root files for all formulas
32
- await discoverRootFilesForFormulas(cwd, result, formulaNames);
33
- // Only return entries that have actual files discovered
34
- const filteredResult = new Map();
35
- for (const [name, entry] of result) {
36
- const hasFiles = entry.aiFiles.length > 0 ||
37
- Object.keys(entry.platforms).length > 0 ||
38
- (entry.rootFiles && entry.rootFiles.length > 0);
39
- if (hasFiles) {
40
- filteredResult.set(name, entry);
41
- }
42
- }
43
- return filteredResult;
44
- }
45
- /**
46
- * Discover AI files for requested formulas using same logic as uninstall
47
- */
48
- async function discoverAIForFormulas(cwd, result, formulaNames) {
49
- const aiDir = PLATFORM_DIRS.AI;
50
- const fullAIDir = join(cwd, aiDir);
51
- if (!(await exists(fullAIDir)))
52
- return;
53
- // Use same file discovery as uninstall
54
- for await (const filePath of walkFiles(fullAIDir)) {
55
- if (!filePath.endsWith(FILE_PATTERNS.MD_FILES) && !filePath.endsWith(FILE_PATTERNS.MDC_FILES)) {
56
- continue;
57
- }
58
- try {
59
- const content = await readTextFile(filePath);
60
- const fm = parseMarkdownFrontmatter(content);
61
- const formulaName = fm?.formula?.name || fm?.formula;
62
- if (formulaName && formulaNames.includes(formulaName)) {
63
- const entry = result.get(formulaName);
64
- entry.aiFiles.push(filePath);
65
- if (!entry.anyPath)
66
- entry.anyPath = dirname(filePath);
67
- }
68
- }
69
- catch {
70
- // Skip unreadable files
71
- }
72
- }
73
- // Check index.yml marked directories for AI
74
- for (const formulaName of formulaNames) {
75
- const matchingDirs = await findMatchingIndexYmlDirsRecursive(fullAIDir, formulaName);
76
- if (matchingDirs.length > 0) {
77
- const entry = result.get(formulaName);
78
- // Add directory markers (simplified - just track presence)
79
- if (!entry.anyPath)
80
- entry.anyPath = matchingDirs[0];
81
- }
82
- }
83
- }
84
- /**
85
- * Discover platform files for requested formulas using same logic as uninstall
86
- */
87
- async function discoverPlatformForFormulas(cwd, platform, result, formulaNames) {
88
- const def = getPlatformDefinition(platform);
89
- const platformRoot = join(cwd, def.rootDir);
90
- for (const [subKey, subDef] of Object.entries(def.subdirs)) {
91
- const targetDir = join(platformRoot, subDef.path || '');
92
- if (!(await exists(targetDir)))
93
- continue;
94
- for await (const fp of walkFiles(targetDir)) {
95
- const allowedExts = (subDef.readExts) || [FILE_PATTERNS.MD_FILES];
96
- if (!allowedExts.some((ext) => fp.endsWith(ext)))
97
- continue;
98
- try {
99
- const content = await readTextFile(fp);
100
- const fm = parseMarkdownFrontmatter(content);
101
- const formulaName = fm?.formula?.name || fm?.formula;
102
- if (formulaName && formulaNames.includes(formulaName)) {
103
- const entry = result.get(formulaName);
104
- entry.platforms[platform] = entry.platforms[platform] || {};
105
- if (subKey === UNIVERSAL_SUBDIRS.RULES) {
106
- entry.platforms[platform].rules = entry.platforms[platform].rules || { found: 0 };
107
- entry.platforms[platform].rules.found++;
108
- }
109
- else if (subKey === UNIVERSAL_SUBDIRS.COMMANDS) {
110
- entry.platforms[platform].commands = entry.platforms[platform].commands || { found: 0 };
111
- entry.platforms[platform].commands.found++;
112
- }
113
- else if (subKey === UNIVERSAL_SUBDIRS.AGENTS) {
114
- entry.platforms[platform].agents = entry.platforms[platform].agents || { found: 0 };
115
- entry.platforms[platform].agents.found++;
116
- }
117
- if (!entry.anyPath)
118
- entry.anyPath = dirname(fp);
119
- }
120
- }
121
- catch {
122
- // Skip unreadable files
123
- }
124
- }
125
- }
126
- // Check index.yml marked directories for platform
127
- for (const formulaName of formulaNames) {
128
- const matchingDirs = await findMatchingIndexYmlDirsRecursive(platformRoot, formulaName);
129
- if (matchingDirs.length > 0) {
130
- const entry = result.get(formulaName);
131
- if (!entry.anyPath)
132
- entry.anyPath = matchingDirs[0];
133
- }
134
- }
135
- }
136
- /**
137
- * Discover root files for requested formulas using same logic as uninstall
138
- */
139
- async function discoverRootFilesForFormulas(cwd, result, formulaNames) {
140
- console.log('formulaNames', formulaNames);
141
- const seen = new Set();
142
- for (const platform of getAllPlatforms()) {
143
- const def = getPlatformDefinition(platform);
144
- if (!def.rootFile)
145
- continue;
146
- const absPath = join(cwd, def.rootFile);
147
- if (seen.has(absPath))
148
- continue;
149
- seen.add(absPath);
150
- console.log('absPath', absPath);
151
- if (!(await exists(absPath)))
152
- continue;
153
- try {
154
- const content = await readTextFile(absPath);
155
- for (const formulaName of formulaNames) {
156
- console.log('formulaName', formulaName);
157
- const extracted = extractFormulaContentFromRootFile(content, formulaName);
158
- if (extracted) {
159
- const entry = result.get(formulaName);
160
- // console.log('entry', entry);
161
- if (!entry.anyPath)
162
- entry.anyPath = absPath;
163
- // Track root file paths
164
- if (!entry.rootFiles.includes(absPath)) {
165
- entry.rootFiles.push(absPath);
166
- }
167
- }
168
- }
169
- }
170
- catch (error) {
171
- // Ignore errors
172
- }
173
- }
174
- }
175
- //# sourceMappingURL=status-file-discovery.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"status-file-discovery.js","sourceRoot":"","sources":["../../src/core/status-file-discovery.ts"],"names":[],"mappings":"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"}
@@ -1,156 +0,0 @@
1
- import { join } from 'path';
2
- import { parseMarkdownFrontmatter } from '../md-frontmatter.js';
3
- import { PLATFORM_AI, PLATFORM_DIRS } from '../../constants/index.js';
4
- import { logger } from '../logger.js';
5
- import { exists, readTextFile, listFiles, listDirectories, isDirectory } from '../fs.js';
6
- import { calculateFileHash } from '../hash-utils.js';
7
- import { mapPlatformFileToUniversal } from '../platform-mapper.js';
8
- import { getRelativePathFromBase } from '../path-normalization.js';
9
- import { getPlatformDefinition } from '../../core/platforms.js';
10
- import { shouldIncludeMarkdownFile } from '../../core/discovery/md-files-discovery.js';
11
- /**
12
- * Get file modification time
13
- * @throws Error if unable to get file stats
14
- */
15
- export async function getFileMtime(filePath) {
16
- const { getStats } = await import('../fs.js');
17
- const stats = await getStats(filePath);
18
- return stats.mtime.getTime();
19
- }
20
- /**
21
- * Recursively find files by extension in a directory
22
- */
23
- export async function findFilesByExtension(dir, extensions = [], baseDir = dir) {
24
- if (!(await exists(dir)) || !(await isDirectory(dir))) {
25
- return [];
26
- }
27
- const files = [];
28
- const normalizedExtensions = extensions.map(extension => extension.startsWith('.') ? extension : `.${extension}`);
29
- // Check current directory files
30
- const dirFiles = await listFiles(dir);
31
- for (const file of dirFiles) {
32
- // If no extension is provided, include all files
33
- // Otherwise, include only files with the specified extension
34
- if (normalizedExtensions.length === 0 || normalizedExtensions.some(extension => file.endsWith(extension))) {
35
- const fullPath = join(dir, file);
36
- const relativePath = getRelativePathFromBase(fullPath, baseDir);
37
- files.push({ fullPath, relativePath });
38
- }
39
- }
40
- // Recursively search subdirectories
41
- const subdirs = await listDirectories(dir);
42
- const subFilesPromises = subdirs.map(subdir => findFilesByExtension(join(dir, subdir), extensions, baseDir));
43
- const subFiles = await Promise.all(subFilesPromises);
44
- files.push(...subFiles.flat());
45
- return files;
46
- }
47
- /**
48
- * Recursively find directories containing a specific file
49
- * @param rootDir - Root directory to start searching from
50
- * @param targetFileName - Name of the file to search for (e.g., 'formula.yml')
51
- * @param parseCallback - Optional callback to parse and validate the file content
52
- * @returns Array of directory paths where the file was found
53
- */
54
- export async function findDirectoriesContainingFile(rootDir, targetFileName, parseCallback) {
55
- const results = [];
56
- if (!(await exists(rootDir)) || !(await isDirectory(rootDir))) {
57
- return results;
58
- }
59
- async function recurse(dir) {
60
- try {
61
- const files = await listFiles(dir);
62
- // Check if target file exists in current directory
63
- if (files.includes(targetFileName)) {
64
- const filePath = join(dir, targetFileName);
65
- // If parse callback provided, use it to validate/parse
66
- if (parseCallback) {
67
- try {
68
- const parsedContent = await parseCallback(filePath);
69
- if (parsedContent !== null) {
70
- results.push({ dirPath: dir, parsedContent });
71
- }
72
- }
73
- catch (error) {
74
- logger.warn(`Failed to parse ${targetFileName} at ${filePath}: ${error}`);
75
- }
76
- }
77
- else {
78
- // No callback, just record the directory
79
- results.push({ dirPath: dir });
80
- }
81
- }
82
- // Recursively search subdirectories
83
- const subdirs = await listDirectories(dir);
84
- for (const subdir of subdirs) {
85
- const subdirPath = join(dir, subdir);
86
- await recurse(subdirPath);
87
- }
88
- }
89
- catch (error) {
90
- logger.warn(`Failed to scan directory: ${dir}`, { error });
91
- }
92
- }
93
- await recurse(rootDir);
94
- return results;
95
- }
96
- /**
97
- * Process a single markdown file for discovery - common logic used by multiple discovery methods
98
- */
99
- export async function processMdFileForDiscovery(file, formulaName, platform, registryPathPrefix) {
100
- try {
101
- const content = await readTextFile(file.fullPath);
102
- let frontmatter;
103
- try {
104
- frontmatter = parseMarkdownFrontmatter(content);
105
- }
106
- catch (parseError) {
107
- logger.warn(`Failed to parse frontmatter in ${file.relativePath}: ${parseError}`);
108
- frontmatter = null;
109
- }
110
- const shouldInclude = shouldIncludeMarkdownFile(file, frontmatter, platform, formulaName);
111
- if (shouldInclude) {
112
- try {
113
- const mtime = await getFileMtime(file.fullPath);
114
- const contentHash = await calculateFileHash(content);
115
- // Compute registry path using new universal mapping
116
- let registryPath;
117
- if (platform !== PLATFORM_AI) {
118
- // Universal file from platform directory - use the mapper to get universal path
119
- const mapping = mapPlatformFileToUniversal(file.fullPath);
120
- if (mapping) {
121
- registryPath = join(mapping.subdir, mapping.relPath);
122
- }
123
- else {
124
- // Fallback to old logic
125
- registryPath = registryPathPrefix ? join(registryPathPrefix, file.relativePath) : file.relativePath;
126
- }
127
- }
128
- else {
129
- // Platform-specific file or directory mode - use normal registry path logic
130
- registryPath = registryPathPrefix ? join(registryPathPrefix, file.relativePath) : file.relativePath;
131
- }
132
- const sourceDir = platform === PLATFORM_AI ? PLATFORM_DIRS.AI : getPlatformDefinition(platform).rootDir;
133
- const result = {
134
- fullPath: file.fullPath,
135
- relativePath: file.relativePath,
136
- sourceDir,
137
- registryPath,
138
- mtime,
139
- contentHash
140
- };
141
- if (frontmatter?.formula?.platformSpecific === true) {
142
- result.forcePlatformSpecific = true;
143
- }
144
- return result;
145
- }
146
- catch (error) {
147
- logger.warn(`Failed to process file metadata for ${file.relativePath}: ${error}`);
148
- }
149
- }
150
- }
151
- catch (error) {
152
- logger.warn(`Failed to read ${file.relativePath}: ${error}`);
153
- }
154
- return null;
155
- }
156
- //# sourceMappingURL=file-processing.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-processing.js","sourceRoot":"","sources":["../../../src/utils/discovery/file-processing.ts"],"names":[],"mappings":"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"}