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,40 +1,34 @@
1
1
  import { packageManager } from '../core/package.js';
2
- import { FILE_PATTERNS } from '../constants/index.js';
2
+ import { FILE_PATTERNS, PACKAGE_PATHS } from '../constants/index.js';
3
3
  import { getPlatformDefinition } from '../core/platforms.js';
4
- function collectRootFiles(packageFiles, platforms) {
5
- const rootFiles = new Map();
6
- // Always consider universal AGENTS.md if present
7
- const agents = packageFiles.find(f => f.path === FILE_PATTERNS.AGENTS_MD);
8
- if (agents)
9
- rootFiles.set(FILE_PATTERNS.AGENTS_MD, agents.content);
10
- // Platform-specific root files
4
+ import { buildNormalizedIncludeSet, isManifestPath, normalizePackagePath } from './manifest-paths.js';
5
+ export async function discoverAndCategorizeFiles(packageName, version, platforms, includePaths) {
6
+ // Load once
7
+ const pkg = await packageManager.loadPackage(packageName, version);
8
+ const normalizedIncludes = buildNormalizedIncludeSet(includePaths);
9
+ const shouldInclude = (path) => !normalizedIncludes || normalizedIncludes.has(normalizePackagePath(path));
10
+ // Precompute platform root filenames
11
11
  const platformRootNames = new Set();
12
12
  for (const platform of platforms) {
13
13
  const def = getPlatformDefinition(platform);
14
14
  if (def.rootFile)
15
15
  platformRootNames.add(def.rootFile);
16
16
  }
17
- for (const file of packageFiles) {
18
- if (platformRootNames.has(file.path)) {
19
- rootFiles.set(file.path, file.content);
20
- }
21
- }
22
- return rootFiles;
23
- }
24
- export async function discoverAndCategorizeFiles(packageName, version, platforms) {
25
- // Load once
26
- const pkg = await packageManager.loadPackage(packageName, version);
27
- // Priority 1: Path-based files (all files from package)
17
+ // Single pass classification
28
18
  const pathBasedFiles = [];
19
+ const rootFiles = new Map();
29
20
  for (const file of pkg.files) {
30
21
  const p = file.path;
31
- if (p === 'package.yml')
32
- continue; // never install registry package.yml
33
- // Root files handled separately
22
+ // Never install registry package metadata files
23
+ if (isManifestPath(p) || normalizePackagePath(p) === PACKAGE_PATHS.INDEX_RELATIVE)
24
+ continue;
25
+ if (!shouldInclude(p))
26
+ continue;
34
27
  pathBasedFiles.push(file);
28
+ if (p === FILE_PATTERNS.AGENTS_MD || platformRootNames.has(p)) {
29
+ rootFiles.set(p, file.content);
30
+ }
35
31
  }
36
- // Priority 2: Root files (platform root + AGENTS.md)
37
- const rootFiles = collectRootFiles(pkg.files, platforms);
38
32
  return { pathBasedFiles, rootFiles };
39
33
  }
40
34
  //# sourceMappingURL=install-file-discovery.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"install-file-discovery.js","sourceRoot":"","sources":["../../src/utils/install-file-discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAiB,MAAM,uBAAuB,CAAC;AAErE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAQ7D,SAAS,gBAAgB,CACvB,YAA2B,EAC3B,SAAqB;IAErB,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,iDAAiD;IACjD,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,SAAS,CAAC,CAAC;IAC1E,IAAI,MAAM;QAAE,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnE,+BAA+B;IAC/B,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC5C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,GAAG,CAAC,QAAQ;YAAE,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,IAAI,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,WAAmB,EACnB,OAAe,EACf,SAAqB;IAErB,YAAY;IACZ,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAEnE,wDAAwD;IACxD,MAAM,cAAc,GAAkB,EAAE,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QACpB,IAAI,CAAC,KAAK,aAAa;YAAE,SAAS,CAAC,qCAAqC;QACxE,gCAAgC;QAChC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,qDAAqD;IACrD,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAEzD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"install-file-discovery.js","sourceRoot":"","sources":["../../src/utils/install-file-discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAErE,OAAO,EAAE,qBAAqB,EAAiB,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAOtG,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,WAAmB,EACnB,OAAe,EACf,SAAqB,EACrB,YAAuB;IAEvB,YAAY;IACZ,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAEnE,MAAM,kBAAkB,GAAG,yBAAyB,CAAC,YAAY,CAAC,CAAC;IAEnE,MAAM,aAAa,GAAG,CAAC,IAAY,EAAW,EAAE,CAC9C,CAAC,kBAAkB,IAAI,kBAAkB,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;IAE5E,qCAAqC;IACrC,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC5C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,GAAG,CAAC,QAAQ;YAAE,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED,6BAA6B;IAC7B,MAAM,cAAc,GAAkB,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QACpB,gDAAgD;QAChD,IAAI,cAAc,CAAC,CAAC,CAAC,IAAI,oBAAoB,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,cAAc;YAAE,SAAS;QAC5F,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YAAE,SAAS;QAEhC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE1B,IAAI,CAAC,KAAK,aAAa,CAAC,SAAS,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;AACvC,CAAC"}
@@ -1,10 +1,10 @@
1
1
  import { join, dirname } from 'path';
2
- import { PLATFORM_DIRS } from '../constants/index.js';
2
+ import { DEFAULT_INSTALL_ROOT } from '../constants/workspace.js';
3
3
  import { logger } from './logger.js';
4
4
  import { packageManager } from '../core/package.js';
5
5
  import { exists, ensureDir, writeTextFile } from './fs.js';
6
6
  /**
7
- * Install package files to ai directory
7
+ * Install package files to the workspace install root directory
8
8
  * @param packageName - Name of the package to install
9
9
  * @param targetDir - Target directory for installation
10
10
  * @param options - Installation options including force and dry-run flags
@@ -12,22 +12,22 @@ import { exists, ensureDir, writeTextFile } from './fs.js';
12
12
  * @param forceOverwrite - Force overwrite existing files
13
13
  * @returns Object containing installation results including file counts and status flags
14
14
  */
15
- export async function installAiFiles(packageName, targetDir, options, version, forceOverwrite) {
16
- logger.debug(`Installing AI directory files for ${packageName} to ${targetDir}`, { version, forceOverwrite });
15
+ export async function installWorkspaceFiles(packageName, targetDir, options, version, forceOverwrite) {
16
+ logger.debug(`Installing workspace files for ${packageName} to ${targetDir}`, { version, forceOverwrite });
17
17
  try {
18
18
  // Get package from registry
19
19
  const pkg = await packageManager.loadPackage(packageName, version);
20
- // Filter to only install AI directory files (those starting with ai/) - allow all file types
21
- const aiPrefix = `${PLATFORM_DIRS.AI}/`;
22
- const filesToInstall = pkg.files.filter(file => file.path.startsWith(aiPrefix));
20
+ // Only install files that live under the workspace install root prefix
21
+ const installRootPrefix = `${DEFAULT_INSTALL_ROOT}/`;
22
+ const filesToInstall = pkg.files.filter(file => file.path.startsWith(installRootPrefix));
23
23
  if (filesToInstall.length === 0) {
24
- logger.debug(`No AI directory files to install for ${packageName}@${version || 'latest'}`);
24
+ logger.debug(`No workspace files to install for ${packageName}@${version || 'latest'}`);
25
25
  return { installedCount: 0, files: [], overwritten: false, skipped: true };
26
26
  }
27
- // Check for existing files in parallel, rebasing paths under ai/<targetDir>/...
27
+ // Check for existing files in parallel, rebasing paths under <installRoot>/<targetDir>/...
28
28
  const existenceChecks = await Promise.all(filesToInstall.map(async (file) => {
29
- const aiRelPath = file.path.slice(aiPrefix.length); // strip "ai/"
30
- const targetPath = join(PLATFORM_DIRS.AI, targetDir || '.', aiRelPath);
29
+ const installRelPath = file.path.slice(installRootPrefix.length);
30
+ const targetPath = join(DEFAULT_INSTALL_ROOT, targetDir || '.', installRelPath);
31
31
  const fileExists = await exists(targetPath);
32
32
  return { file, targetPath, exists: fileExists };
33
33
  }));
@@ -50,10 +50,10 @@ export async function installAiFiles(packageName, targetDir, options, version, f
50
50
  const installPromises = existenceChecks.map(async ({ file, targetPath }) => {
51
51
  await writeTextFile(targetPath, file.content);
52
52
  installedFiles.push(targetPath);
53
- logger.debug(`Installed AI file: ${targetPath}`);
53
+ logger.debug(`Installed workspace file: ${targetPath}`);
54
54
  });
55
55
  await Promise.all(installPromises);
56
- logger.info(`Successfully installed ${installedFiles.length} AI directory files for ${packageName}@${version || 'latest'}`);
56
+ logger.info(`Successfully installed ${installedFiles.length} workspace files for ${packageName}@${version || 'latest'}`);
57
57
  return {
58
58
  installedCount: installedFiles.length,
59
59
  files: installedFiles,
@@ -62,7 +62,7 @@ export async function installAiFiles(packageName, targetDir, options, version, f
62
62
  };
63
63
  }
64
64
  catch (error) {
65
- logger.error(`Failed to install AI files for package ${packageName}: ${error}`);
65
+ logger.error(`Failed to install workspace files for package ${packageName}: ${error}`);
66
66
  return {
67
67
  installedCount: 0,
68
68
  files: [],
@@ -72,19 +72,19 @@ export async function installAiFiles(packageName, targetDir, options, version, f
72
72
  }
73
73
  }
74
74
  /**
75
- * Install AI files from a pre-filtered list of package files (avoids re-loading registry)
75
+ * Install workspace files from a pre-filtered list of package files (avoids re-loading registry)
76
76
  */
77
- export async function installAiFilesFromList(cwd, targetDir, files, options, forceOverwrite = false) {
77
+ export async function installWorkspaceFilesFromList(cwd, targetDir, files, options, forceOverwrite = false) {
78
78
  try {
79
79
  if (files.length === 0) {
80
80
  return { installedCount: 0, files: [], overwritten: false, skipped: true };
81
81
  }
82
- const aiPrefix = `${PLATFORM_DIRS.AI}/`;
82
+ const installRootPrefix = `${DEFAULT_INSTALL_ROOT}/`;
83
83
  // Pre-create dirs
84
84
  const directories = new Set();
85
85
  const targets = await Promise.all(files.map(async (file) => {
86
- const aiRelPath = file.path.startsWith(aiPrefix) ? file.path.slice(aiPrefix.length) : file.path;
87
- const targetPath = join(PLATFORM_DIRS.AI, targetDir || '.', aiRelPath);
86
+ const installRelPath = file.path.startsWith(installRootPrefix) ? file.path.slice(installRootPrefix.length) : file.path;
87
+ const targetPath = join(DEFAULT_INSTALL_ROOT, targetDir || '.', installRelPath);
88
88
  directories.add(dirname(targetPath));
89
89
  const existsFlag = await exists(targetPath);
90
90
  return { file, targetPath, existsFlag };
@@ -99,12 +99,12 @@ export async function installAiFilesFromList(cwd, targetDir, files, options, for
99
99
  await Promise.all(targets.map(async ({ file, targetPath }) => {
100
100
  await writeTextFile(targetPath, file.content);
101
101
  installedFiles.push(targetPath);
102
- logger.debug(`Installed AI file: ${targetPath}`);
102
+ logger.debug(`Installed workspace file: ${targetPath}`);
103
103
  }));
104
104
  return { installedCount: installedFiles.length, files: installedFiles, overwritten: hasOverwritten, skipped: false };
105
105
  }
106
106
  catch (error) {
107
- logger.error(`Failed to install AI files from list: ${error}`);
107
+ logger.error(`Failed to install workspace files from list: ${error}`);
108
108
  return { installedCount: 0, files: [], overwritten: false, skipped: true };
109
109
  }
110
110
  }
@@ -1 +1 @@
1
- {"version":3,"file":"install-orchestrator.js","sourceRoot":"","sources":["../../src/utils/install-orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install-orchestrator.js","sourceRoot":"","sources":["../../src/utils/install-orchestrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * JSONC (JSON with Comments) file utilities
3
+ * Handles reading and parsing JSONC files with comment support
4
+ */
5
+ import { readFileSync } from 'fs';
6
+ import { dirname, join } from 'path';
7
+ import { fileURLToPath } from 'url';
8
+ import { parse } from 'jsonc-parser';
9
+ import { logger } from './logger.js';
10
+ /**
11
+ * Get the project root directory
12
+ * Works in both development (src/) and production (dist/) environments
13
+ */
14
+ function getProjectRoot() {
15
+ // Get the directory of the current file
16
+ const __filename = fileURLToPath(import.meta.url);
17
+ const __dirname = dirname(__filename);
18
+ // If we're in dist/utils, go up two levels to project root
19
+ // If we're in src/utils, go up two levels to project root
20
+ // Both src/utils and dist/utils are 2 levels deep from root
21
+ return join(__dirname, '..', '..');
22
+ }
23
+ /**
24
+ * Read and parse a JSONC file from the project root
25
+ * @param relativePath - Path relative to project root (e.g., 'platforms.jsonc')
26
+ * @returns Parsed JSON object
27
+ */
28
+ export function readJsoncFileSync(relativePath) {
29
+ const projectRoot = getProjectRoot();
30
+ const fullPath = join(projectRoot, relativePath);
31
+ try {
32
+ const content = readFileSync(fullPath, 'utf-8');
33
+ const parsed = parse(content);
34
+ if (parsed === undefined) {
35
+ throw new Error(`Failed to parse JSONC file: ${relativePath}`);
36
+ }
37
+ return parsed;
38
+ }
39
+ catch (error) {
40
+ logger.error(`Failed to read JSONC file: ${relativePath}`, { error, fullPath });
41
+ throw new Error(`Failed to read JSONC file ${relativePath}: ${error}`);
42
+ }
43
+ }
44
+ //# sourceMappingURL=jsonc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonc.js","sourceRoot":"","sources":["../../src/utils/jsonc.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;;GAGG;AACH,SAAS,cAAc;IACrB,wCAAwC;IACxC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAEtC,2DAA2D;IAC3D,0DAA0D;IAC1D,4DAA4D;IAC5D,OAAO,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAc,YAAoB;IACjE,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAEjD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;QAE9B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,+BAA+B,YAAY,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,OAAO,MAAW,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,8BAA8B,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChF,MAAM,IAAI,KAAK,CAAC,6BAA6B,YAAY,KAAK,KAAK,EAAE,CAAC,CAAC;IACzE,CAAC;AACH,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { FILE_PATTERNS, PACKAGE_PATHS } from '../constants/index.js';
2
+ import { normalizePathForProcessing } from './path-normalization.js';
3
+ /**
4
+ * Normalize package-internal paths for consistent comparisons.
5
+ * Strips leading slash and converts to forward slashes.
6
+ */
7
+ export function normalizePackagePath(path) {
8
+ const trimmed = path.startsWith('/') ? path.slice(1) : path;
9
+ return normalizePathForProcessing(trimmed);
10
+ }
11
+ /**
12
+ * Determine if a path points to a package manifest (either bare or canonical).
13
+ */
14
+ export function isManifestPath(path) {
15
+ const normalized = normalizePackagePath(path);
16
+ return (normalized === FILE_PATTERNS.PACKAGE_YML ||
17
+ normalized === PACKAGE_PATHS.MANIFEST_RELATIVE);
18
+ }
19
+ /**
20
+ * Build a normalized include set (or null if empty) for registry path filtering.
21
+ */
22
+ export function buildNormalizedIncludeSet(paths) {
23
+ if (!paths || paths.length === 0)
24
+ return null;
25
+ return new Set(paths.map(normalizePackagePath));
26
+ }
27
+ //# sourceMappingURL=manifest-paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-paths.js","sourceRoot":"","sources":["../../src/utils/manifest-paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAErE;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5D,OAAO,0BAA0B,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC9C,OAAO,CACL,UAAU,KAAK,aAAa,CAAC,WAAW;QACxC,UAAU,KAAK,aAAa,CAAC,iBAAiB,CAC/C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAA2B;IACnE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;AAClD,CAAC"}
@@ -0,0 +1,199 @@
1
+ /**
2
+ * Package file I/O utilities for reading from and writing to package directories.
3
+ *
4
+ * This module provides two main operations:
5
+ * - readPackageFilesForRegistry: Collect files from a package directory into a
6
+ * registry-ready payload, applying static exclusions and manifest-based filters.
7
+ * - writePackageFilesToDirectory: Write a set of PackageFile entries to disk,
8
+ * syncing the directory contents (removing stale files).
9
+ */
10
+ import { join, relative, dirname } from 'path';
11
+ import { DIR_PATTERNS, FILE_PATTERNS, PACKAGE_PATHS } from '../constants/index.js';
12
+ import { getAllPlatforms, getPlatformDefinition } from '../core/platforms.js';
13
+ import { exists, ensureDir, readTextFile, writeTextFile, walkFiles, remove } from './fs.js';
14
+ import { logger } from './logger.js';
15
+ import { normalizePathForProcessing } from './path-normalization.js';
16
+ import { parsePackageYml } from './package-yml.js';
17
+ import { createPackageFileFilter, isExcludedFromPackage } from './package-filters.js';
18
+ const MANIFEST_RELATIVE_PATHS = Object.freeze([
19
+ FILE_PATTERNS.PACKAGE_YML,
20
+ PACKAGE_PATHS.MANIFEST_RELATIVE
21
+ ]);
22
+ // ─────────────────────────────────────────────────────────────────────────────
23
+ // Reading package files
24
+ // ─────────────────────────────────────────────────────────────────────────────
25
+ /**
26
+ * Read package files from disk and return a registry-ready payload.
27
+ *
28
+ * Applies two layers of filtering:
29
+ * 1. Static exclusions (package index file, packages/** nested dirs).
30
+ * 2. Manifest-based include/exclude patterns from package.yml.
31
+ *
32
+ * @param packageDir - Absolute path to the package root directory.
33
+ * @returns Array of PackageFile entries representing the canonical payload.
34
+ */
35
+ export async function readPackageFilesForRegistry(packageDir) {
36
+ if (!(await exists(packageDir))) {
37
+ return [];
38
+ }
39
+ const manifestFilter = await loadManifestFilter(packageDir);
40
+ const files = [];
41
+ for await (const fullPath of walkFiles(packageDir)) {
42
+ const relativePath = normalizePathForProcessing(relative(packageDir, fullPath));
43
+ // Layer 1: static exclusions (always enforced)
44
+ if (isExcludedFromPackage(relativePath)) {
45
+ logger.debug(`Skipping static-excluded path: ${relativePath}`);
46
+ continue;
47
+ }
48
+ // Layer 2: manifest-based include/exclude
49
+ if (!manifestFilter(relativePath)) {
50
+ logger.debug(`Skipping path by manifest filter: ${relativePath}`);
51
+ continue;
52
+ }
53
+ const content = await readTextFile(fullPath);
54
+ files.push({ path: relativePath, content, encoding: 'utf8' });
55
+ }
56
+ return files;
57
+ }
58
+ /**
59
+ * Build a filter function from the package.yml include/exclude fields.
60
+ * Returns a pass-all filter if no manifest or no patterns are defined.
61
+ */
62
+ async function loadManifestFilter(packageDir) {
63
+ const manifestInfo = await findPackageManifest(packageDir);
64
+ let manifestConfigInclude;
65
+ let manifestConfigExclude;
66
+ if (manifestInfo) {
67
+ try {
68
+ const config = await parsePackageYml(manifestInfo.fullPath);
69
+ manifestConfigInclude = config.include;
70
+ manifestConfigExclude = config.exclude;
71
+ }
72
+ catch (error) {
73
+ logger.warn(`Failed to load manifest filters from ${manifestInfo.fullPath}: ${String(error)}`);
74
+ }
75
+ }
76
+ const defaults = await buildDefaultIncludeConfig(packageDir, manifestInfo);
77
+ const includePatterns = [
78
+ ...defaults.includePatterns,
79
+ ...(manifestConfigInclude ?? [])
80
+ ];
81
+ const excludePatterns = manifestConfigExclude ?? [];
82
+ const baseFilter = createPackageFileFilter({
83
+ include: includePatterns,
84
+ exclude: excludePatterns
85
+ });
86
+ return (relativePath) => {
87
+ const normalized = normalizePathForProcessing(relativePath);
88
+ if (!normalized) {
89
+ return false;
90
+ }
91
+ if (defaults.hardIncludeFiles.has(normalized)) {
92
+ return true;
93
+ }
94
+ return baseFilter(relativePath);
95
+ };
96
+ }
97
+ async function findPackageManifest(packageDir) {
98
+ for (const relativePath of MANIFEST_RELATIVE_PATHS) {
99
+ const fullPath = join(packageDir, relativePath);
100
+ if (await exists(fullPath)) {
101
+ return { fullPath, relativePath };
102
+ }
103
+ }
104
+ return null;
105
+ }
106
+ async function buildDefaultIncludeConfig(packageDir, manifestInfo) {
107
+ const includePatterns = new Set();
108
+ const hardIncludeFiles = new Set();
109
+ // Include package.yml (at .openpackage/package.yml relative to package root)
110
+ includePatterns.add(PACKAGE_PATHS.MANIFEST_RELATIVE);
111
+ hardIncludeFiles.add(normalizePathForProcessing(PACKAGE_PATHS.MANIFEST_RELATIVE));
112
+ if (manifestInfo) {
113
+ includePatterns.add(manifestInfo.relativePath);
114
+ hardIncludeFiles.add(normalizePathForProcessing(manifestInfo.relativePath));
115
+ }
116
+ const rootFiles = new Set([FILE_PATTERNS.AGENTS_MD]);
117
+ const universalSubdirs = new Set();
118
+ for (const platform of getAllPlatforms({ includeDisabled: true })) {
119
+ const definition = getPlatformDefinition(platform);
120
+ if (definition.rootFile) {
121
+ rootFiles.add(definition.rootFile);
122
+ }
123
+ for (const subdirKey of Object.keys(definition.subdirs ?? {})) {
124
+ universalSubdirs.add(subdirKey);
125
+ }
126
+ }
127
+ for (const rootFile of rootFiles) {
128
+ includePatterns.add(rootFile);
129
+ }
130
+ // packageDir is the package root, so look for subdirs at packageDir/.openpackage/<subdir>/
131
+ await Promise.all(Array.from(universalSubdirs).map(async (subdirName) => {
132
+ const absoluteDir = join(packageDir, DIR_PATTERNS.OPENPACKAGE, subdirName);
133
+ if (await exists(absoluteDir)) {
134
+ includePatterns.add(`${DIR_PATTERNS.OPENPACKAGE}/${subdirName}/**`);
135
+ }
136
+ }));
137
+ return {
138
+ includePatterns: Array.from(includePatterns),
139
+ hardIncludeFiles
140
+ };
141
+ }
142
+ /**
143
+ * Write package files to a directory, syncing its contents.
144
+ *
145
+ * - Creates the target directory if it doesn't exist.
146
+ * - Removes files that are no longer part of the payload (except protected paths).
147
+ * - Writes all incoming files, creating subdirectories as needed.
148
+ *
149
+ * @param targetDir - Absolute path to the destination directory.
150
+ * @param files - Array of PackageFile entries to write.
151
+ * @param options - Optional settings (e.g., preserveIndexFile).
152
+ */
153
+ export async function writePackageFilesToDirectory(targetDir, files, options = {}) {
154
+ await ensureDir(targetDir);
155
+ // Build the set of paths that should remain after the write
156
+ const pathsToKeep = new Set(files.map(f => normalizePathForProcessing(f.path)));
157
+ if (options.preserveIndexFile) {
158
+ pathsToKeep.add(FILE_PATTERNS.PACKAGE_INDEX_YML);
159
+ }
160
+ // Remove stale files (but never touch protected paths like packages/**)
161
+ await removeStaleFiles(targetDir, pathsToKeep);
162
+ // Write all incoming files in parallel
163
+ await Promise.all(files.map(file => writeFile(targetDir, file)));
164
+ }
165
+ /**
166
+ * Remove files in targetDir that are not in pathsToKeep and are not protected.
167
+ */
168
+ async function removeStaleFiles(targetDir, pathsToKeep) {
169
+ if (!(await exists(targetDir))) {
170
+ return;
171
+ }
172
+ for await (const fullPath of walkFiles(targetDir)) {
173
+ const relPath = normalizePathForProcessing(relative(targetDir, fullPath));
174
+ // Skip files we want to keep
175
+ if (pathsToKeep.has(relPath)) {
176
+ continue;
177
+ }
178
+ // Never delete protected paths (e.g., packages/**)
179
+ if (isExcludedFromPackage(relPath)) {
180
+ continue;
181
+ }
182
+ try {
183
+ await remove(fullPath);
184
+ logger.debug(`Removed stale file: ${relPath}`);
185
+ }
186
+ catch (error) {
187
+ logger.warn(`Failed to remove stale file ${relPath}: ${error}`);
188
+ }
189
+ }
190
+ }
191
+ /**
192
+ * Write a single PackageFile to disk under targetDir.
193
+ */
194
+ async function writeFile(targetDir, file) {
195
+ const targetPath = join(targetDir, file.path);
196
+ await ensureDir(dirname(targetPath));
197
+ await writeTextFile(targetPath, file.content, file.encoding ?? 'utf8');
198
+ }
199
+ //# sourceMappingURL=package-copy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-copy.js","sourceRoot":"","sources":["../../src/utils/package-copy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,125 @@
1
+ import { normalizePathForProcessing } from './path-normalization.js';
2
+ import { DIR_PATTERNS, FILE_PATTERNS, OPENPACKAGE_DIRS } from '../constants/index.js';
3
+ const EXCLUDED_DIR_PREFIXES = [
4
+ 'packages', // Nested packages are independent units; never copy inline
5
+ `${DIR_PATTERNS.OPENPACKAGE}/${OPENPACKAGE_DIRS.PACKAGES}` // Current nested package layout under .openpackage/
6
+ ];
7
+ const EXCLUDED_FILES = new Set([FILE_PATTERNS.PACKAGE_INDEX_YML]);
8
+ const MATCH_ALL = () => true;
9
+ const SPECIAL_REGEX_CHARS = /[\\^$+?.()|[\]{}]/g;
10
+ function escapeRegexCharacter(segment) {
11
+ return segment.replace(SPECIAL_REGEX_CHARS, '\\$&');
12
+ }
13
+ function normalizePattern(rawPattern) {
14
+ if (typeof rawPattern !== 'string') {
15
+ return null;
16
+ }
17
+ let pattern = rawPattern.trim();
18
+ if (pattern.length === 0) {
19
+ return null;
20
+ }
21
+ pattern = pattern.replace(/\\/g, '/');
22
+ pattern = pattern.replace(/^\.\/+/, '');
23
+ pattern = pattern.replace(/^\/+/, '');
24
+ pattern = pattern.replace(/\/+/g, '/');
25
+ if (pattern.length === 0) {
26
+ return null;
27
+ }
28
+ if (pattern.endsWith('/')) {
29
+ pattern = `${pattern}**`;
30
+ }
31
+ return pattern;
32
+ }
33
+ function globToRegExp(pattern) {
34
+ let regex = '^';
35
+ for (let i = 0; i < pattern.length; i++) {
36
+ const char = pattern[i];
37
+ if (char === '*') {
38
+ const nextChar = pattern[i + 1];
39
+ if (nextChar === '*') {
40
+ const slashChar = pattern[i + 2];
41
+ if (slashChar === '/') {
42
+ regex += '(?:.*/)?';
43
+ i += 2;
44
+ }
45
+ else {
46
+ regex += '.*';
47
+ i += 1;
48
+ }
49
+ }
50
+ else {
51
+ regex += '[^/]*';
52
+ }
53
+ continue;
54
+ }
55
+ if (char === '?') {
56
+ regex += '[^/]';
57
+ continue;
58
+ }
59
+ regex += escapeRegexCharacter(char);
60
+ }
61
+ regex += '$';
62
+ return new RegExp(regex);
63
+ }
64
+ function compilePatterns(patterns) {
65
+ if (!patterns) {
66
+ return [];
67
+ }
68
+ const compiled = [];
69
+ for (const rawPattern of patterns) {
70
+ const normalized = normalizePattern(rawPattern);
71
+ if (!normalized) {
72
+ continue;
73
+ }
74
+ try {
75
+ compiled.push(globToRegExp(normalized));
76
+ }
77
+ catch {
78
+ // Skip invalid patterns to avoid blocking save/pack flows.
79
+ }
80
+ }
81
+ return compiled;
82
+ }
83
+ function matches(path, patterns) {
84
+ return patterns.some(pattern => pattern.test(path));
85
+ }
86
+ export function isExcludedFromPackage(relativePath) {
87
+ const normalized = normalizePathForProcessing(relativePath);
88
+ if (!normalized) {
89
+ return true;
90
+ }
91
+ const baseName = normalized.split('/').pop();
92
+ if (baseName && EXCLUDED_FILES.has(baseName)) {
93
+ return true;
94
+ }
95
+ return EXCLUDED_DIR_PREFIXES.some(prefix => {
96
+ const normalizedPrefix = normalizePathForProcessing(prefix);
97
+ return (normalized === normalizedPrefix ||
98
+ normalized.startsWith(`${normalizedPrefix}/`));
99
+ });
100
+ }
101
+ export function createPackageFileFilter(config) {
102
+ if (!config) {
103
+ return MATCH_ALL;
104
+ }
105
+ const includePatterns = compilePatterns(config.include);
106
+ const excludePatterns = compilePatterns(config.exclude);
107
+ const hasInclude = includePatterns.length > 0;
108
+ if (!hasInclude && excludePatterns.length === 0) {
109
+ return MATCH_ALL;
110
+ }
111
+ return (relativePath) => {
112
+ const normalized = normalizePathForProcessing(relativePath);
113
+ if (!normalized) {
114
+ return false;
115
+ }
116
+ if (hasInclude && !matches(normalized, includePatterns)) {
117
+ return false;
118
+ }
119
+ if (excludePatterns.length > 0 && matches(normalized, excludePatterns)) {
120
+ return false;
121
+ }
122
+ return true;
123
+ };
124
+ }
125
+ //# sourceMappingURL=package-filters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-filters.js","sourceRoot":"","sources":["../../src/utils/package-filters.ts"],"names":[],"mappings":"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"}