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,211 +0,0 @@
1
- import { join } from 'path';
2
- import { FILE_PATTERNS } from '../../constants/index.js';
3
- import { logger } from '../logger.js';
4
- import { exists, readTextFile } from '../fs.js';
5
- import { calculateFileHash } from '../hash-utils.js';
6
- import { getAllPlatforms, getPlatformDefinition } from '../../core/platforms.js';
7
- import { extractFormulaContentFromRootFile } from '../root-file-extractor.js';
8
- import { getFileMtime } from './file-processing.js';
9
- /**
10
- * Discover root-level AGENTS.md content designated for a specific formula.
11
- * Only includes content between markers: <!-- formula: <name> --><content><!-- -->
12
- */
13
- export async function discoverAgentsMdFile(cwd, formulaName) {
14
- const agentsPath = join(cwd, FILE_PATTERNS.AGENTS_MD);
15
- if (!(await exists(agentsPath))) {
16
- return null;
17
- }
18
- try {
19
- const content = await readTextFile(agentsPath);
20
- const extracted = extractFormulaContentFromRootFile(content, formulaName);
21
- if (!extracted) {
22
- return null; // No matching section; treat as non-existent
23
- }
24
- const mtime = await getFileMtime(agentsPath);
25
- const contentHash = await calculateFileHash(extracted);
26
- const discovered = {
27
- fullPath: agentsPath,
28
- relativePath: FILE_PATTERNS.AGENTS_MD,
29
- sourceDir: 'root',
30
- registryPath: FILE_PATTERNS.AGENTS_MD,
31
- mtime,
32
- contentHash
33
- };
34
- return discovered;
35
- }
36
- catch (error) {
37
- logger.warn(`Failed to process root ${FILE_PATTERNS.AGENTS_MD}: ${error}`);
38
- return null;
39
- }
40
- }
41
- /**
42
- * Discover all platform root files at project root and extract formula-specific content.
43
- * Merges CLAUDE.md, GEMINI.md, QWEN.md, WARP.md, and platform AGENTS.md into a single
44
- * universal AGENTS.md registry path via conflict resolution.
45
- */
46
- export async function discoverAllRootFiles(cwd, formulaName) {
47
- const results = [];
48
- // Collect unique root filenames from platform definitions
49
- const uniqueRootFiles = new Set();
50
- for (const platform of getAllPlatforms()) {
51
- const def = getPlatformDefinition(platform);
52
- if (def.rootFile) {
53
- uniqueRootFiles.add(def.rootFile);
54
- }
55
- }
56
- // Iterate unique root files and extract content
57
- for (const rootFile of uniqueRootFiles) {
58
- const absPath = join(cwd, rootFile);
59
- if (!(await exists(absPath))) {
60
- continue;
61
- }
62
- try {
63
- const content = await readTextFile(absPath);
64
- const extracted = extractFormulaContentFromRootFile(content, formulaName);
65
- if (!extracted) {
66
- continue; // No matching section in this root file
67
- }
68
- const mtime = await getFileMtime(absPath);
69
- const contentHash = await calculateFileHash(extracted);
70
- // Derive a representative platform for this root file (e.g., 'claude' for CLAUDE.md)
71
- const representativePlatform = (() => {
72
- for (const p of getAllPlatforms()) {
73
- const def = getPlatformDefinition(p);
74
- if (def.rootFile === rootFile)
75
- return p;
76
- }
77
- return 'root';
78
- })();
79
- results.push({
80
- fullPath: absPath,
81
- relativePath: rootFile,
82
- // Use representative platform id so conflict resolution can map to native root filenames
83
- sourceDir: representativePlatform,
84
- // Map all root files to universal AGENTS.md target for conflict resolution
85
- registryPath: FILE_PATTERNS.AGENTS_MD,
86
- mtime,
87
- contentHash,
88
- isRootFile: true // Mark as root file for special conflict resolution
89
- });
90
- }
91
- catch (error) {
92
- logger.warn(`Failed to process root file ${rootFile}: ${error}`);
93
- }
94
- }
95
- return results;
96
- }
97
- /**
98
- * Find formulas by name, searching both explicit formula.yml files and frontmatter-based formulas
99
- */
100
- /**
101
- export async function findFormulas(formulaName: string): Promise<Array<{ fullPath: string; relativePath: string; config: any }>> {
102
- const cwd = process.cwd();
103
- const matchingFormulas: Array<{ fullPath: string; relativePath: string; config: any }> = [];
104
-
105
- // Helper function to process markdown files in a directory
106
- const processMarkdownFiles = async (
107
- dirPath: string,
108
- registryPath: string,
109
- sourceName: string
110
- ): Promise<void> => {
111
- if (!(await exists(dirPath)) || !(await isDirectory(dirPath))) {
112
- return;
113
- }
114
-
115
- const allMdFiles = await findFilesByExtension(dirPath, FILE_PATTERNS.MD_FILES);
116
-
117
- // Process markdown files in parallel
118
- const filePromises = allMdFiles.map(async (mdFile) => {
119
- try {
120
- const content = await readTextFile(mdFile.fullPath);
121
- const frontmatter = parseMarkdownFrontmatter(content);
122
-
123
- if (frontmatter?.formula?.name && areFormulaNamesEquivalent(frontmatter.formula.name, formulaName)) {
124
- // Create a virtual formula.yml config based on frontmatter
125
- const config = {
126
- name: formulaName,
127
- version: '0.1.0' // Default version for frontmatter-based formulas
128
- };
129
-
130
- return {
131
- fullPath: mdFile.fullPath, // Use the markdown file as the "formula" location
132
- relativePath: registryPath ? join(registryPath, mdFile.relativePath) : mdFile.relativePath,
133
- config
134
- };
135
- }
136
- } catch (error) {
137
- logger.warn(`Failed to read or parse ${mdFile.relativePath} from ${sourceName}: ${error}`);
138
- }
139
- return null;
140
- });
141
-
142
- const fileResults = await Promise.all(filePromises);
143
- matchingFormulas.push(...fileResults.filter((result): result is { fullPath: string; relativePath: string; config: any } => result !== null));
144
- };
145
-
146
- // Search in .groundzero/formulas directory for explicit formula.yml files
147
- const formulasDir = getLocalFormulasDir(cwd);
148
- if (await exists(formulasDir) && await isDirectory(formulasDir)) {
149
- const formulaDirs = await listDirectories(formulasDir);
150
-
151
- // Process formula directories in parallel
152
- const formulaPromises = formulaDirs.map(async (formulaDir) => {
153
- const formulaYmlPath = join(formulasDir, formulaDir, FILE_PATTERNS.FORMULA_YML);
154
- if (await exists(formulaYmlPath)) {
155
- try {
156
- const { parseFormulaYml } = await import('../formula-yml.js');
157
- const config = await parseFormulaYml(formulaYmlPath);
158
- if (areFormulaNamesEquivalent(config.name, formulaName)) {
159
- return {
160
- fullPath: formulaYmlPath,
161
- relativePath: join(PLATFORM_DIRS.GROUNDZERO, FORMULA_DIRS.FORMULAS, formulaDir, FILE_PATTERNS.FORMULA_YML),
162
- config
163
- };
164
- }
165
- } catch (error) {
166
- logger.warn(`Failed to parse formula.yml at ${formulaYmlPath}: ${error}`);
167
- }
168
- }
169
- return null;
170
- });
171
-
172
- const formulaResults = await Promise.all(formulaPromises);
173
- matchingFormulas.push(...formulaResults.filter((result): result is { fullPath: string; relativePath: string; config: any } => result !== null));
174
- }
175
-
176
- // Search in AI directory for markdown files with matching frontmatter
177
- const aiDir = join(cwd, PLATFORM_DIRS.AI);
178
- await processMarkdownFiles(aiDir, '', PLATFORM_DIRS.AI);
179
-
180
- // Search in platform-specific directories (rules, commands, agents)
181
- const platformConfigs = await buildPlatformSearchConfig(cwd);
182
-
183
- for (const config of platformConfigs) {
184
- // Skip AI directory since it's handled above
185
- if (config.name === PLATFORM_DIRS.AI) {
186
- continue;
187
- }
188
-
189
- // Process all subdirs for this platform
190
- const definition = getPlatformDefinition(config.platform as any);
191
- for (const [subdirName, subdirDef] of Object.entries(definition.subdirs)) {
192
- const subdirPath = join(config.rootDir, subdirDef.path);
193
- const registryPath = join(config.registryPath, subdirName);
194
-
195
- await processMarkdownFiles(subdirPath, registryPath, config.name);
196
- }
197
- }
198
-
199
- // Deduplicate results based on fullPath to avoid duplicates
200
- const uniqueFormulas = new Map<string, { fullPath: string; relativePath: string; config: any }>();
201
-
202
- for (const formula of matchingFormulas) {
203
- if (!uniqueFormulas.has(formula.fullPath)) {
204
- uniqueFormulas.set(formula.fullPath, formula);
205
- }
206
- }
207
-
208
- return Array.from(uniqueFormulas.values());
209
- }
210
- */
211
- //# sourceMappingURL=formula-discovery.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formula-discovery.js","sourceRoot":"","sources":["../../../src/utils/discovery/formula-discovery.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- "use strict";
2
- //# sourceMappingURL=platform-discovery.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"platform-discovery.js","sourceRoot":"","sources":["../../../src/utils/discovery/platform-discovery.ts"],"names":[],"mappings":""}
@@ -1,102 +0,0 @@
1
- import { join } from 'path';
2
- import { isJunk } from 'junk';
3
- import { FILE_PATTERNS } from '../constants/index.js';
4
- import { logger } from './logger.js';
5
- import { exists, readTextFile } from './fs.js';
6
- import { calculateFileHash } from './hash-utils.js';
7
- import { getAllPlatforms, getPlatformDefinition } from '../core/platforms.js';
8
- import { extractFormulaContentFromRootFile } from './root-file-extractor.js';
9
- import { getFileMtime } from '../utils/file-processing.js';
10
- /**
11
- * Discover root-level AGENTS.md content designated for a specific formula.
12
- * Only includes content between markers: <!-- formula: <name> --><content><!-- -->
13
- */
14
- export async function discoverAgentsMdFile(cwd, formulaName) {
15
- const agentsPath = join(cwd, FILE_PATTERNS.AGENTS_MD);
16
- if (!(await exists(agentsPath))) {
17
- return null;
18
- }
19
- try {
20
- const content = await readTextFile(agentsPath);
21
- const extracted = extractFormulaContentFromRootFile(content, formulaName);
22
- if (!extracted) {
23
- return null; // No matching section; treat as non-existent
24
- }
25
- const mtime = await getFileMtime(agentsPath);
26
- const contentHash = await calculateFileHash(extracted);
27
- const discovered = {
28
- fullPath: agentsPath,
29
- relativePath: FILE_PATTERNS.AGENTS_MD,
30
- sourceDir: 'root',
31
- registryPath: FILE_PATTERNS.AGENTS_MD,
32
- mtime,
33
- contentHash
34
- };
35
- return discovered;
36
- }
37
- catch (error) {
38
- logger.warn(`Failed to process root ${FILE_PATTERNS.AGENTS_MD}: ${error}`);
39
- return null;
40
- }
41
- }
42
- /**
43
- * Discover all platform root files at project root and extract formula-specific content.
44
- * Merges CLAUDE.md, GEMINI.md, QWEN.md, WARP.md, and platform AGENTS.md into a single
45
- * universal AGENTS.md registry path via conflict resolution.
46
- */
47
- export async function discoverAllRootFiles(cwd, formulaName) {
48
- const results = [];
49
- // Collect unique root filenames from platform definitions
50
- const uniqueRootFiles = new Set();
51
- for (const platform of getAllPlatforms()) {
52
- const def = getPlatformDefinition(platform);
53
- if (def.rootFile) {
54
- uniqueRootFiles.add(def.rootFile);
55
- }
56
- }
57
- // Iterate unique root files and extract content
58
- for (const rootFile of uniqueRootFiles) {
59
- // Skip junk files
60
- if (isJunk(rootFile)) {
61
- continue;
62
- }
63
- const absPath = join(cwd, rootFile);
64
- if (!(await exists(absPath))) {
65
- continue;
66
- }
67
- try {
68
- const content = await readTextFile(absPath);
69
- const extracted = extractFormulaContentFromRootFile(content, formulaName);
70
- if (!extracted) {
71
- continue; // No matching section in this root file
72
- }
73
- const mtime = await getFileMtime(absPath);
74
- const contentHash = await calculateFileHash(extracted);
75
- // Derive a representative platform for this root file (e.g., 'claude' for CLAUDE.md)
76
- const representativePlatform = (() => {
77
- for (const p of getAllPlatforms()) {
78
- const def = getPlatformDefinition(p);
79
- if (def.rootFile === rootFile)
80
- return p;
81
- }
82
- return 'root';
83
- })();
84
- results.push({
85
- fullPath: absPath,
86
- relativePath: rootFile,
87
- // Use representative platform id so conflict resolution can map to native root filenames
88
- sourceDir: representativePlatform,
89
- // Map all root files to universal AGENTS.md target for conflict resolution
90
- registryPath: FILE_PATTERNS.AGENTS_MD,
91
- mtime,
92
- contentHash,
93
- isRootFile: true // Mark as root file for special conflict resolution
94
- });
95
- }
96
- catch (error) {
97
- logger.warn(`Failed to process root file ${rootFile}: ${error}`);
98
- }
99
- }
100
- return results;
101
- }
102
- //# sourceMappingURL=formula-discovery.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formula-discovery.js","sourceRoot":"","sources":["../../src/utils/formula-discovery.ts"],"names":[],"mappings":"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"}
@@ -1,122 +0,0 @@
1
- import { join, dirname } from 'path';
2
- import * as yaml from 'js-yaml';
3
- import { exists, readTextFile, writeTextFile, ensureDir } from './fs.js';
4
- import { getLocalFormulaDir } from './paths.js';
5
- import { normalizePathForProcessing } from './path-normalization.js';
6
- import { logger } from './logger.js';
7
- export const FORMULA_INDEX_FILENAME = 'formula.index.yml';
8
- const HEADER_COMMENT = '# This file is managed by OpenPackage. Do not edit manually.';
9
- export function getFormulaIndexPath(cwd, formulaName) {
10
- const formulaDir = getLocalFormulaDir(cwd, formulaName);
11
- return join(formulaDir, FORMULA_INDEX_FILENAME);
12
- }
13
- export function ensureTrailingSlash(value) {
14
- return value.endsWith('/') ? value : `${value}/`;
15
- }
16
- export function sortMapping(record) {
17
- const sortedKeys = Object.keys(record).sort();
18
- const normalized = {};
19
- for (const key of sortedKeys) {
20
- const values = record[key] || [];
21
- const sortedValues = [...new Set(values)].sort();
22
- normalized[key] = sortedValues;
23
- }
24
- return normalized;
25
- }
26
- export function sanitizeIndexData(data) {
27
- if (!data || typeof data !== 'object')
28
- return null;
29
- const { version, files } = data;
30
- if (typeof version !== 'string')
31
- return null;
32
- if (!files || typeof files !== 'object')
33
- return null;
34
- const entries = {};
35
- for (const [rawKey, rawValue] of Object.entries(files)) {
36
- if (typeof rawKey !== 'string')
37
- continue;
38
- if (!Array.isArray(rawValue))
39
- continue;
40
- const cleanedValues = rawValue
41
- .filter((entry) => typeof entry === 'string' && entry.trim().length > 0)
42
- .map(value => normalizePathForProcessing(value));
43
- entries[normalizePathForProcessing(rawKey)] = cleanedValues;
44
- }
45
- return {
46
- version,
47
- files: sortMapping(entries)
48
- };
49
- }
50
- export async function readFormulaIndex(cwd, formulaName) {
51
- const indexPath = getFormulaIndexPath(cwd, formulaName);
52
- if (!(await exists(indexPath))) {
53
- return null;
54
- }
55
- try {
56
- const content = await readTextFile(indexPath);
57
- const parsed = yaml.load(content);
58
- const sanitized = sanitizeIndexData(parsed);
59
- if (!sanitized) {
60
- logger.warn(`Invalid formula index detected at ${indexPath}, will repair on write.`);
61
- return {
62
- path: indexPath,
63
- formulaName,
64
- version: '',
65
- files: {}
66
- };
67
- }
68
- return {
69
- path: indexPath,
70
- formulaName,
71
- version: sanitized.version,
72
- files: sanitized.files
73
- };
74
- }
75
- catch (error) {
76
- logger.warn(`Failed to read formula index at ${indexPath}: ${error}`);
77
- return {
78
- path: indexPath,
79
- formulaName,
80
- version: '',
81
- files: {}
82
- };
83
- }
84
- }
85
- export async function writeFormulaIndex(record) {
86
- const { path: indexPath, version, files } = record;
87
- await ensureDir(dirname(indexPath));
88
- const normalizedFiles = sortMapping(files);
89
- const body = yaml.dump({
90
- version,
91
- files: normalizedFiles
92
- }, {
93
- lineWidth: 120,
94
- sortKeys: true
95
- });
96
- const serialized = `${HEADER_COMMENT}\n\n${body}`;
97
- await writeTextFile(indexPath, serialized);
98
- }
99
- export function isDirKey(key) {
100
- return key.endsWith('/');
101
- }
102
- /**
103
- * Prune nested child directories if their parent directory is already present.
104
- * Example: keep "skills/nestjs/" and drop "skills/nestjs/examples/".
105
- */
106
- export function pruneNestedDirectories(dirs) {
107
- const sorted = [...dirs].sort((a, b) => {
108
- if (a.length === b.length) {
109
- return a.localeCompare(b);
110
- }
111
- return a.length - b.length;
112
- });
113
- const pruned = [];
114
- for (const dir of sorted) {
115
- const hasParent = pruned.some(parent => dir !== parent && dir.startsWith(parent));
116
- if (!hasParent) {
117
- pruned.push(dir);
118
- }
119
- }
120
- return pruned;
121
- }
122
- //# sourceMappingURL=formula-index-yml.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formula-index-yml.js","sourceRoot":"","sources":["../../src/utils/formula-index-yml.ts"],"names":[],"mappings":"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"}
@@ -1,110 +0,0 @@
1
- import { logger } from './logger.js';
2
- import { promptPlatformSelection } from './prompts.js';
3
- import { detectAllPlatforms } from '../core/platforms.js';
4
- /**
5
- * Detect existing platforms in the project
6
- */
7
- export async function detectPlatforms(targetDir) {
8
- const platformDetectionResults = await detectAllPlatforms(targetDir);
9
- const detectedPlatforms = platformDetectionResults
10
- .filter(result => result.detected)
11
- .map(result => result.name);
12
- if (detectedPlatforms.length > 0) {
13
- logger.debug(`Auto-detected platforms: ${detectedPlatforms.join(', ')}`);
14
- }
15
- return detectedPlatforms;
16
- }
17
- /**
18
- * Prompt user for platform selection when no platforms are detected
19
- */
20
- export async function promptForPlatformSelection() {
21
- console.log('\n🤖 Platform Detection');
22
- console.log('No AI development platform detected in this project.');
23
- return await promptPlatformSelection();
24
- }
25
- /**
26
- * Display installation summary
27
- */
28
- export function displayInstallationSummary(totalInstalled, totalSkipped, totalFormulas, results) {
29
- console.log(`\n✓ Installation Summary:`);
30
- console.log(`✓ Successfully installed: ${totalInstalled}/${totalFormulas} formulas`);
31
- if (totalSkipped > 0) {
32
- console.log(`❌ Failed to install: ${totalSkipped} formulas`);
33
- console.log('\nFailed formulas:');
34
- results.filter(r => !r.success).forEach(result => {
35
- console.log(` • ${result.name}: ${result.error}`);
36
- });
37
- }
38
- }
39
- /**
40
- * Display installation results
41
- */
42
- export function displayInstallationResults(formulaName, resolvedFormulas, platformResult, options, mainFormula, allAddedFiles, allUpdatedFiles, rootFileResults, missingFormulas) {
43
- // Build installation summary
44
- let summaryText = `✓ Installed ${formulaName}`;
45
- if (mainFormula) {
46
- summaryText += `@${mainFormula.version}`;
47
- }
48
- console.log(`${summaryText}`);
49
- const dependencyFormulas = resolvedFormulas.filter(f => !f.isRoot);
50
- if (dependencyFormulas.length > 0) {
51
- console.log(`✓ Installed dependencies: ${dependencyFormulas.length}`);
52
- for (const dep of dependencyFormulas) {
53
- console.log(` ├── ${dep.name}@${dep.version}`);
54
- }
55
- }
56
- console.log(`✓ Total formulas processed: ${resolvedFormulas.length}`);
57
- // Show detailed file list
58
- if (allAddedFiles && allAddedFiles.length > 0) {
59
- console.log(`✓ Added files: ${allAddedFiles.length}`);
60
- const sortedFiles = [...allAddedFiles].sort((a, b) => a.localeCompare(b));
61
- for (const file of sortedFiles) {
62
- console.log(` ├── ${file}`);
63
- }
64
- }
65
- if (allUpdatedFiles && allUpdatedFiles.length > 0) {
66
- console.log(`✓ Updated files: ${allUpdatedFiles.length}`);
67
- const sortedFiles = [...allUpdatedFiles].sort((a, b) => a.localeCompare(b));
68
- for (const file of sortedFiles) {
69
- console.log(` ├── ${file}`);
70
- }
71
- }
72
- // Root file installation results
73
- if (rootFileResults) {
74
- const totalRootFiles = rootFileResults.installed.length + rootFileResults.updated.length;
75
- if (totalRootFiles > 0) {
76
- console.log(`✓ Root files: ${totalRootFiles} file(s)`);
77
- // Show newly created root files
78
- if (rootFileResults.installed.length > 0) {
79
- const sortedInstalled = [...rootFileResults.installed].sort((a, b) => a.localeCompare(b));
80
- for (const file of sortedInstalled) {
81
- console.log(` ├── ${file} (created)`);
82
- }
83
- }
84
- // Show updated root files
85
- if (rootFileResults.updated.length > 0) {
86
- const sortedUpdated = [...rootFileResults.updated].sort((a, b) => a.localeCompare(b));
87
- for (const file of sortedUpdated) {
88
- console.log(` ├── ${file} (updated)`);
89
- }
90
- }
91
- }
92
- }
93
- // Platform and IDE template output
94
- if (platformResult.created.length > 0) {
95
- console.log(`✓ Created platform directories: ${platformResult.created.join(', ')}`);
96
- }
97
- // Report missing formulas (displayed last)
98
- if (missingFormulas && missingFormulas.length > 0) {
99
- console.log(`\n⚠️ Missing dependencies detected:`);
100
- for (const missing of missingFormulas) {
101
- console.log(` • ${missing} (not found in registry)`);
102
- }
103
- console.log(`\n💡 To resolve missing dependencies:`);
104
- console.log(` • Create locally: opn init && opn save`);
105
- console.log(` • Pull from remote: opn pull ${missingFormulas.join(' ')}`);
106
- console.log(` • Remove from formula.yml`);
107
- console.log('');
108
- }
109
- }
110
- //# sourceMappingURL=formula-installation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formula-installation.js","sourceRoot":"","sources":["../../src/utils/formula-installation.ts"],"names":[],"mappings":"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"}
@@ -1,38 +0,0 @@
1
- import { FILE_PATTERNS } from '../constants/index.js';
2
- import { exists, isDirectory, readTextFile } from './fs.js';
3
- import { findFilesByExtension } from './file-processing.js';
4
- import { FORMULA_INDEX_FILENAME } from './formula-index-yml.js';
5
- import { isAllowedRegistryPath, isRootRegistryPath, isSkippableRegistryPath, normalizeRegistryPath } from './registry-entry-filter.js';
6
- const UTF8_ENCODING = 'utf8';
7
- export async function readLocalFormulaFilesForIndex(formulaDir) {
8
- if (!(await exists(formulaDir)) || !(await isDirectory(formulaDir))) {
9
- return [];
10
- }
11
- const entries = await findFilesByExtension(formulaDir, [], formulaDir);
12
- const files = [];
13
- for (const entry of entries) {
14
- const normalizedPath = normalizeRegistryPath(entry.relativePath);
15
- if (normalizedPath === FORMULA_INDEX_FILENAME) {
16
- continue;
17
- }
18
- const isAllowed = isAllowedRegistryPath(normalizedPath);
19
- const isRoot = isRootRegistryPath(normalizedPath);
20
- const isYamlOverride = isYamlOverrideFile(normalizedPath);
21
- const isFormulaYml = normalizedPath === FILE_PATTERNS.FORMULA_YML;
22
- const isRootLevelFile = !normalizedPath.includes('/');
23
- if (!isAllowed && !isRoot && !isYamlOverride && !isFormulaYml && !isRootLevelFile) {
24
- continue;
25
- }
26
- const content = await readTextFile(entry.fullPath, UTF8_ENCODING);
27
- files.push({
28
- path: normalizedPath,
29
- content,
30
- encoding: UTF8_ENCODING
31
- });
32
- }
33
- return files;
34
- }
35
- function isYamlOverrideFile(normalizedPath) {
36
- return normalizedPath !== FILE_PATTERNS.FORMULA_YML && isSkippableRegistryPath(normalizedPath);
37
- }
38
- //# sourceMappingURL=formula-local-files.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formula-local-files.js","sourceRoot":"","sources":["../../src/utils/formula-local-files.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EACL,MAAM,EACN,WAAW,EACX,YAAY,EACb,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,EACtB,MAAM,4BAA4B,CAAC;AAEpC,MAAM,aAAa,GAAG,MAAM,CAAC;AAE7B,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAAC,UAAkB;IACpE,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,WAAW,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACpE,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,UAAU,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;IACvE,MAAM,KAAK,GAAkB,EAAE,CAAC;IAEhC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,cAAc,GAAG,qBAAqB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAEjE,IAAI,cAAc,KAAK,sBAAsB,EAAE,CAAC;YAC9C,SAAS;QACX,CAAC;QAED,MAAM,SAAS,GAAG,qBAAqB,CAAC,cAAc,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;QAClD,MAAM,cAAc,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;QAC1D,MAAM,YAAY,GAAG,cAAc,KAAK,aAAa,CAAC,WAAW,CAAC;QAClE,MAAM,eAAe,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAEtD,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,IAAI,CAAC,cAAc,IAAI,CAAC,YAAY,IAAI,CAAC,eAAe,EAAE,CAAC;YAClF,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAClE,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,cAAc;YACpB,OAAO;YACP,QAAQ,EAAE,aAAa;SACxB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,cAAsB;IAChD,OAAO,cAAc,KAAK,aAAa,CAAC,WAAW,IAAI,uBAAuB,CAAC,cAAc,CAAC,CAAC;AACjG,CAAC"}