opkg 0.6.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (487) hide show
  1. package/README.md +109 -186
  2. package/assets/openpackage_ascii_dark.png +0 -0
  3. package/assets/openpackage_ascii_light.png +0 -0
  4. package/dist/commands/add.js +34 -10
  5. package/dist/commands/add.js.map +1 -1
  6. package/dist/commands/apply.js +16 -0
  7. package/dist/commands/apply.js.map +1 -0
  8. package/dist/commands/delete.js +1 -1
  9. package/dist/commands/delete.js.map +1 -1
  10. package/dist/commands/install.js +177 -8
  11. package/dist/commands/install.js.map +1 -1
  12. package/dist/commands/list.js +2 -2
  13. package/dist/commands/list.js.map +1 -1
  14. package/dist/commands/login.js +1 -1
  15. package/dist/commands/login.js.map +1 -1
  16. package/dist/commands/logout.js +1 -1
  17. package/dist/commands/logout.js.map +1 -1
  18. package/dist/commands/new.js +125 -0
  19. package/dist/commands/new.js.map +1 -0
  20. package/dist/commands/pack.js +7 -13
  21. package/dist/commands/pack.js.map +1 -1
  22. package/dist/commands/pull.js +1 -1
  23. package/dist/commands/pull.js.map +1 -1
  24. package/dist/commands/push.js +1 -1
  25. package/dist/commands/push.js.map +1 -1
  26. package/dist/commands/remove.js +63 -0
  27. package/dist/commands/remove.js.map +1 -0
  28. package/dist/commands/save.js +11 -17
  29. package/dist/commands/save.js.map +1 -1
  30. package/dist/commands/set.js +33 -0
  31. package/dist/commands/set.js.map +1 -0
  32. package/dist/commands/show.js +16 -94
  33. package/dist/commands/show.js.map +1 -1
  34. package/dist/commands/status.js +26 -701
  35. package/dist/commands/status.js.map +1 -1
  36. package/dist/commands/uninstall.js +14 -427
  37. package/dist/commands/uninstall.js.map +1 -1
  38. package/dist/constants/index.js +72 -16
  39. package/dist/constants/index.js.map +1 -1
  40. package/dist/core/add/add-conflict-handler.js +1 -8
  41. package/dist/core/add/add-conflict-handler.js.map +1 -1
  42. package/dist/core/add/add-pipeline.js +12 -10
  43. package/dist/core/add/add-pipeline.js.map +1 -1
  44. package/dist/core/add/add-to-source-pipeline.js +123 -0
  45. package/dist/core/add/add-to-source-pipeline.js.map +1 -0
  46. package/dist/core/add/package-index-updater.js +77 -78
  47. package/dist/core/add/package-index-updater.js.map +1 -1
  48. package/dist/core/add/platform-path-transformer.js +6 -4
  49. package/dist/core/add/platform-path-transformer.js.map +1 -1
  50. package/dist/core/add/source-collector.js +2 -3
  51. package/dist/core/add/source-collector.js.map +1 -1
  52. package/dist/core/apply/apply-pipeline.js +110 -0
  53. package/dist/core/apply/apply-pipeline.js.map +1 -0
  54. package/dist/core/dependency-resolver.js +263 -21
  55. package/dist/core/dependency-resolver.js.map +1 -1
  56. package/dist/core/discovery/file-discovery.js +1 -2
  57. package/dist/core/discovery/file-discovery.js.map +1 -1
  58. package/dist/core/discovery/platform-files-discovery.js +33 -18
  59. package/dist/core/discovery/platform-files-discovery.js.map +1 -1
  60. package/dist/core/flows/flow-executor.js +974 -0
  61. package/dist/core/flows/flow-executor.js.map +1 -0
  62. package/dist/core/flows/flow-inverter.js +442 -0
  63. package/dist/core/flows/flow-inverter.js.map +1 -0
  64. package/dist/core/flows/flow-key-extractor.js +101 -0
  65. package/dist/core/flows/flow-key-extractor.js.map +1 -0
  66. package/dist/core/flows/flow-key-mapper.js +382 -0
  67. package/dist/core/flows/flow-key-mapper.js.map +1 -0
  68. package/dist/core/flows/flow-transforms.js +632 -0
  69. package/dist/core/flows/flow-transforms.js.map +1 -0
  70. package/dist/core/flows/map-pipeline/context.js +73 -0
  71. package/dist/core/flows/map-pipeline/context.js.map +1 -0
  72. package/dist/core/flows/map-pipeline/index.js +156 -0
  73. package/dist/core/flows/map-pipeline/index.js.map +1 -0
  74. package/dist/core/flows/map-pipeline/operations/copy.js +104 -0
  75. package/dist/core/flows/map-pipeline/operations/copy.js.map +1 -0
  76. package/dist/core/flows/map-pipeline/operations/pipe.js +70 -0
  77. package/dist/core/flows/map-pipeline/operations/pipe.js.map +1 -0
  78. package/dist/core/flows/map-pipeline/operations/rename.js +102 -0
  79. package/dist/core/flows/map-pipeline/operations/rename.js.map +1 -0
  80. package/dist/core/flows/map-pipeline/operations/set.js +50 -0
  81. package/dist/core/flows/map-pipeline/operations/set.js.map +1 -0
  82. package/dist/core/flows/map-pipeline/operations/switch.js +79 -0
  83. package/dist/core/flows/map-pipeline/operations/switch.js.map +1 -0
  84. package/dist/core/flows/map-pipeline/operations/transform.js +543 -0
  85. package/dist/core/flows/map-pipeline/operations/transform.js.map +1 -0
  86. package/dist/core/flows/map-pipeline/operations/unset.js +65 -0
  87. package/dist/core/flows/map-pipeline/operations/unset.js.map +1 -0
  88. package/dist/core/flows/map-pipeline/types.js +8 -0
  89. package/dist/core/flows/map-pipeline/types.js.map +1 -0
  90. package/dist/core/flows/map-pipeline/utils.js +278 -0
  91. package/dist/core/flows/map-pipeline/utils.js.map +1 -0
  92. package/dist/core/flows/platform-converter.js +328 -0
  93. package/dist/core/flows/platform-converter.js.map +1 -0
  94. package/dist/core/flows/source-resolver.js +192 -0
  95. package/dist/core/flows/source-resolver.js.map +1 -0
  96. package/dist/core/flows/toml-domain-transforms.js +23 -0
  97. package/dist/core/flows/toml-domain-transforms.js.map +1 -0
  98. package/dist/core/install/bulk-install-pipeline.js +68 -7
  99. package/dist/core/install/bulk-install-pipeline.js.map +1 -1
  100. package/dist/core/install/canonical-plan.js +3 -3
  101. package/dist/core/install/canonical-plan.js.map +1 -1
  102. package/dist/core/install/dry-run.js +3 -3
  103. package/dist/core/install/dry-run.js.map +1 -1
  104. package/dist/core/install/flow-based-installer.js +1158 -0
  105. package/dist/core/install/flow-based-installer.js.map +1 -0
  106. package/dist/core/install/flow-workspace-tracker.js +111 -0
  107. package/dist/core/install/flow-workspace-tracker.js.map +1 -0
  108. package/dist/core/install/format-detector.js +228 -0
  109. package/dist/core/install/format-detector.js.map +1 -0
  110. package/dist/core/install/git-package-loader.js +20 -0
  111. package/dist/core/install/git-package-loader.js.map +1 -0
  112. package/dist/core/install/install-errors.js +1 -1
  113. package/dist/core/install/install-errors.js.map +1 -1
  114. package/dist/core/install/install-flow.js +34 -14
  115. package/dist/core/install/install-flow.js.map +1 -1
  116. package/dist/core/install/install-pipeline.js +52 -17
  117. package/dist/core/install/install-pipeline.js.map +1 -1
  118. package/dist/core/install/install-reporting.js +26 -8
  119. package/dist/core/install/install-reporting.js.map +1 -1
  120. package/dist/core/install/local-source-resolution.js +103 -0
  121. package/dist/core/install/local-source-resolution.js.map +1 -0
  122. package/dist/core/install/marketplace-handler.js +221 -0
  123. package/dist/core/install/marketplace-handler.js.map +1 -0
  124. package/dist/core/install/path-install-pipeline.js +241 -0
  125. package/dist/core/install/path-install-pipeline.js.map +1 -0
  126. package/dist/core/install/path-package-loader.js +116 -0
  127. package/dist/core/install/path-package-loader.js.map +1 -0
  128. package/dist/core/install/plugin-detector.js +72 -0
  129. package/dist/core/install/plugin-detector.js.map +1 -0
  130. package/dist/core/install/plugin-to-universal-converter.js +218 -0
  131. package/dist/core/install/plugin-to-universal-converter.js.map +1 -0
  132. package/dist/core/install/plugin-transformer.js +191 -0
  133. package/dist/core/install/plugin-transformer.js.map +1 -0
  134. package/dist/core/install/version-selection.js +1 -1
  135. package/dist/core/install/version-selection.js.map +1 -1
  136. package/dist/core/openpackage.js +40 -22
  137. package/dist/core/openpackage.js.map +1 -1
  138. package/dist/core/pack/pack-output.js +62 -0
  139. package/dist/core/pack/pack-output.js.map +1 -0
  140. package/dist/core/pack/pack-pipeline.js +186 -0
  141. package/dist/core/pack/pack-pipeline.js.map +1 -0
  142. package/dist/core/package-context.js +45 -70
  143. package/dist/core/package-context.js.map +1 -1
  144. package/dist/core/package-creation.js +203 -0
  145. package/dist/core/package-creation.js.map +1 -0
  146. package/dist/core/package.js +20 -6
  147. package/dist/core/package.js.map +1 -1
  148. package/dist/core/platforms.js +665 -209
  149. package/dist/core/platforms.js.map +1 -1
  150. package/dist/core/push/push-context.js +1 -1
  151. package/dist/core/push/push-context.js.map +1 -1
  152. package/dist/core/push/push-upload.js +2 -2
  153. package/dist/core/push/push-upload.js.map +1 -1
  154. package/dist/core/registry.js +6 -6
  155. package/dist/core/registry.js.map +1 -1
  156. package/dist/core/remote-pull.js +2 -2
  157. package/dist/core/remote-pull.js.map +1 -1
  158. package/dist/core/remove/removal-collector.js +52 -0
  159. package/dist/core/remove/removal-collector.js.map +1 -0
  160. package/dist/core/remove/removal-confirmation.js +39 -0
  161. package/dist/core/remove/removal-confirmation.js.map +1 -0
  162. package/dist/core/remove/remove-from-source-pipeline.js +173 -0
  163. package/dist/core/remove/remove-from-source-pipeline.js.map +1 -0
  164. package/dist/core/save/constants.js +3 -3
  165. package/dist/core/save/constants.js.map +1 -1
  166. package/dist/core/save/flow-based-saver.js +270 -0
  167. package/dist/core/save/flow-based-saver.js.map +1 -0
  168. package/dist/core/save/name-resolution.js +1 -1
  169. package/dist/core/save/name-resolution.js.map +1 -1
  170. package/dist/core/save/package-yml-generator.js +4 -5
  171. package/dist/core/save/package-yml-generator.js.map +1 -1
  172. package/dist/core/save/save-candidate-builder.js +215 -0
  173. package/dist/core/save/save-candidate-builder.js.map +1 -0
  174. package/dist/core/save/save-candidate-loader.js +12 -11
  175. package/dist/core/save/save-candidate-loader.js.map +1 -1
  176. package/dist/core/save/save-conflict-analyzer.js +150 -0
  177. package/dist/core/save/save-conflict-analyzer.js.map +1 -0
  178. package/dist/core/save/save-conflict-resolution.js +28 -14
  179. package/dist/core/save/save-conflict-resolution.js.map +1 -1
  180. package/dist/core/save/save-conflict-resolver.js +31 -275
  181. package/dist/core/save/save-conflict-resolver.js.map +1 -1
  182. package/dist/core/save/save-group-builder.js +52 -0
  183. package/dist/core/save/save-group-builder.js.map +1 -0
  184. package/dist/core/save/save-interactive-resolver.js +190 -0
  185. package/dist/core/save/save-interactive-resolver.js.map +1 -0
  186. package/dist/core/save/save-pipeline.js +58 -34
  187. package/dist/core/save/save-pipeline.js.map +1 -1
  188. package/dist/core/save/save-platform-handler.js +53 -0
  189. package/dist/core/save/save-platform-handler.js.map +1 -0
  190. package/dist/core/save/save-resolution-executor.js +145 -0
  191. package/dist/core/save/save-resolution-executor.js.map +1 -0
  192. package/dist/core/save/save-result-reporter.js +167 -0
  193. package/dist/core/save/save-result-reporter.js.map +1 -0
  194. package/dist/core/save/save-to-source-pipeline.js +154 -0
  195. package/dist/core/save/save-to-source-pipeline.js.map +1 -0
  196. package/dist/core/save/save-versioning.js +4 -4
  197. package/dist/core/save/save-versioning.js.map +1 -1
  198. package/dist/core/save/save-write-coordinator.js +204 -0
  199. package/dist/core/save/save-write-coordinator.js.map +1 -0
  200. package/dist/core/save/save-yml-resolution.js +28 -216
  201. package/dist/core/save/save-yml-resolution.js.map +1 -1
  202. package/dist/core/save/workspace-rename.js +7 -8
  203. package/dist/core/save/workspace-rename.js.map +1 -1
  204. package/dist/core/set/set-output.js +72 -0
  205. package/dist/core/set/set-output.js.map +1 -0
  206. package/dist/core/set/set-pipeline.js +361 -0
  207. package/dist/core/set/set-pipeline.js.map +1 -0
  208. package/dist/core/set/set-types.js +5 -0
  209. package/dist/core/set/set-types.js.map +1 -0
  210. package/dist/core/show/package-resolver.js +257 -0
  211. package/dist/core/show/package-resolver.js.map +1 -0
  212. package/dist/core/show/scope-discovery.js +165 -0
  213. package/dist/core/show/scope-discovery.js.map +1 -0
  214. package/dist/core/show/show-output.js +168 -0
  215. package/dist/core/show/show-output.js.map +1 -0
  216. package/dist/core/show/show-pipeline.js +113 -0
  217. package/dist/core/show/show-pipeline.js.map +1 -0
  218. package/dist/core/show/show-types.js +5 -0
  219. package/dist/core/show/show-types.js.map +1 -0
  220. package/dist/core/source-resolution/dependency-graph.js +104 -0
  221. package/dist/core/source-resolution/dependency-graph.js.map +1 -0
  222. package/dist/core/source-resolution/resolve-mutable-source.js +109 -0
  223. package/dist/core/source-resolution/resolve-mutable-source.js.map +1 -0
  224. package/dist/core/source-resolution/resolve-package-source.js +29 -0
  225. package/dist/core/source-resolution/resolve-package-source.js.map +1 -0
  226. package/dist/core/source-resolution/resolve-registry-version.js +35 -0
  227. package/dist/core/source-resolution/resolve-registry-version.js.map +1 -0
  228. package/dist/core/source-resolution/types.js.map +1 -0
  229. package/dist/core/status/status-file-discovery.js +23 -12
  230. package/dist/core/status/status-file-discovery.js.map +1 -1
  231. package/dist/core/status/status-pipeline.js +134 -0
  232. package/dist/core/status/status-pipeline.js.map +1 -0
  233. package/dist/core/sync/platform-sync-summary.js +27 -0
  234. package/dist/core/sync/platform-sync-summary.js.map +1 -0
  235. package/dist/core/uninstall/flow-aware-uninstaller.js +189 -0
  236. package/dist/core/uninstall/flow-aware-uninstaller.js.map +1 -0
  237. package/dist/core/uninstall/uninstall-file-discovery.js +11 -6
  238. package/dist/core/uninstall/uninstall-file-discovery.js.map +1 -1
  239. package/dist/core/uninstall/uninstall-pipeline.js +141 -0
  240. package/dist/core/uninstall/uninstall-pipeline.js.map +1 -0
  241. package/dist/core/universal-patterns.js +64 -0
  242. package/dist/core/universal-patterns.js.map +1 -0
  243. package/dist/index.js +99 -6
  244. package/dist/index.js.map +1 -1
  245. package/dist/types/flows.js +8 -0
  246. package/dist/types/flows.js.map +1 -0
  247. package/dist/types/index.js +3 -0
  248. package/dist/types/index.js.map +1 -1
  249. package/dist/types/platform-flows.js +8 -0
  250. package/dist/types/platform-flows.js.map +1 -0
  251. package/dist/types/workspace-index.js +6 -0
  252. package/dist/types/workspace-index.js.map +1 -0
  253. package/dist/utils/custom-path-resolution.js +160 -0
  254. package/dist/utils/custom-path-resolution.js.map +1 -0
  255. package/dist/utils/dependency-coverage.js +1 -1
  256. package/dist/utils/dependency-coverage.js.map +1 -1
  257. package/dist/utils/file-processing.js +1 -1
  258. package/dist/utils/flow-index-installer.js +209 -0
  259. package/dist/utils/flow-index-installer.js.map +1 -0
  260. package/dist/utils/formatters.js +47 -1
  261. package/dist/utils/formatters.js.map +1 -1
  262. package/dist/utils/fs.js +17 -0
  263. package/dist/utils/fs.js.map +1 -1
  264. package/dist/utils/git-clone-registry.js +88 -0
  265. package/dist/utils/git-clone-registry.js.map +1 -0
  266. package/dist/utils/git-clone.js +69 -0
  267. package/dist/utils/git-clone.js.map +1 -0
  268. package/dist/utils/git-spec.js +96 -0
  269. package/dist/utils/git-spec.js.map +1 -0
  270. package/dist/utils/http-client.js +7 -0
  271. package/dist/utils/http-client.js.map +1 -1
  272. package/dist/utils/index-based-installer.js +356 -163
  273. package/dist/utils/index-based-installer.js.map +1 -1
  274. package/dist/utils/install-conflict-handler.js +2 -2
  275. package/dist/utils/install-conflict-handler.js.map +1 -1
  276. package/dist/utils/install-file-discovery.js +18 -13
  277. package/dist/utils/install-file-discovery.js.map +1 -1
  278. package/dist/utils/install-helpers.js +43 -20
  279. package/dist/utils/install-helpers.js.map +1 -1
  280. package/dist/utils/jsonc.js +23 -1
  281. package/dist/utils/jsonc.js.map +1 -1
  282. package/dist/utils/manifest-paths.js +1 -1
  283. package/dist/utils/manifest-paths.js.map +1 -1
  284. package/dist/utils/markdown-frontmatter.js +46 -0
  285. package/dist/utils/markdown-frontmatter.js.map +1 -1
  286. package/dist/utils/package-copy.js +5 -103
  287. package/dist/utils/package-copy.js.map +1 -1
  288. package/dist/utils/package-filters.js +9 -105
  289. package/dist/utils/package-filters.js.map +1 -1
  290. package/dist/utils/package-index-yml.js +27 -6
  291. package/dist/utils/package-index-yml.js.map +1 -1
  292. package/dist/utils/package-input.js +98 -0
  293. package/dist/utils/package-input.js.map +1 -0
  294. package/dist/utils/package-management.js +80 -28
  295. package/dist/utils/package-management.js.map +1 -1
  296. package/dist/utils/package-name-resolution.js +327 -0
  297. package/dist/utils/package-name-resolution.js.map +1 -0
  298. package/dist/utils/package-name.js +18 -16
  299. package/dist/utils/package-name.js.map +1 -1
  300. package/dist/utils/package-versioning.js +2 -33
  301. package/dist/utils/package-versioning.js.map +1 -1
  302. package/dist/utils/package-yml.js +19 -28
  303. package/dist/utils/package-yml.js.map +1 -1
  304. package/dist/utils/path-resolution.js +102 -0
  305. package/dist/utils/path-resolution.js.map +1 -0
  306. package/dist/utils/paths.js +6 -6
  307. package/dist/utils/paths.js.map +1 -1
  308. package/dist/utils/platform-file.js +36 -24
  309. package/dist/utils/platform-file.js.map +1 -1
  310. package/dist/utils/platform-mapper.js +222 -68
  311. package/dist/utils/platform-mapper.js.map +1 -1
  312. package/dist/utils/platform-root-files.js +44 -0
  313. package/dist/utils/platform-root-files.js.map +1 -0
  314. package/dist/utils/platform-utils.js +35 -54
  315. package/dist/utils/platform-utils.js.map +1 -1
  316. package/dist/utils/platform-yaml-merge.js +20 -140
  317. package/dist/utils/platform-yaml-merge.js.map +1 -1
  318. package/dist/utils/prompts.js +92 -7
  319. package/dist/utils/prompts.js.map +1 -1
  320. package/dist/utils/registry-entry-filter.js +50 -27
  321. package/dist/utils/registry-entry-filter.js.map +1 -1
  322. package/dist/utils/registry-paths.js +5 -4
  323. package/dist/utils/registry-paths.js.map +1 -1
  324. package/dist/utils/scope-resolution.js +156 -0
  325. package/dist/utils/scope-resolution.js.map +1 -0
  326. package/dist/utils/source-mutability.js +15 -0
  327. package/dist/utils/source-mutability.js.map +1 -0
  328. package/dist/utils/tarball.js +29 -4
  329. package/dist/utils/tarball.js.map +1 -1
  330. package/dist/utils/version-ranges.js +1 -32
  331. package/dist/utils/version-ranges.js.map +1 -1
  332. package/dist/utils/workspace-index-helpers.js +28 -0
  333. package/dist/utils/workspace-index-helpers.js.map +1 -0
  334. package/dist/utils/workspace-index-ownership.js +100 -0
  335. package/dist/utils/workspace-index-ownership.js.map +1 -0
  336. package/dist/utils/workspace-index-yml.js +173 -0
  337. package/dist/utils/workspace-index-yml.js.map +1 -0
  338. package/examples/custom-subdirs-platform.jsonc +157 -0
  339. package/package.json +7 -2
  340. package/platforms.jsonc +531 -84
  341. package/schemas/map-pipeline-v1.json +256 -0
  342. package/schemas/platforms-v1.json +400 -0
  343. package/specs/README.md +88 -0
  344. package/specs/add/README.md +166 -0
  345. package/specs/agents-claude.md +570 -0
  346. package/specs/agents-opencode.md +622 -0
  347. package/specs/apply/README.md +21 -0
  348. package/specs/apply/apply-behavior.md +58 -0
  349. package/specs/apply/apply-command.md +51 -0
  350. package/specs/apply/conflicts.md +41 -0
  351. package/specs/apply/index-effects.md +81 -0
  352. package/specs/architecture.md +107 -0
  353. package/specs/auth/README.md +17 -0
  354. package/specs/auth/auth-http-contract.md +25 -0
  355. package/specs/auth/cli/credentials.md +39 -0
  356. package/specs/auth/cli/login.md +32 -0
  357. package/specs/auth/cli/logout.md +16 -0
  358. package/specs/claude-mcp.md +1065 -0
  359. package/specs/claude-plugins-marketplace.md +363 -0
  360. package/specs/claude-plugins.md +413 -0
  361. package/specs/cli-options.md +52 -0
  362. package/specs/codex-mcp.md +114 -0
  363. package/specs/commands-overview.md +175 -0
  364. package/specs/directory-layout.md +95 -0
  365. package/specs/install/README.md +12 -4
  366. package/specs/install/git-sources.md +230 -0
  367. package/specs/install/install-behavior.md +483 -73
  368. package/specs/install/package-yml-canonical.md +67 -35
  369. package/specs/install/version-resolution.md +69 -115
  370. package/specs/new/README.md +769 -0
  371. package/specs/new/SUMMARY.md +310 -0
  372. package/specs/new/scope-behavior.md +793 -0
  373. package/specs/pack/README.md +77 -0
  374. package/specs/pack/package-name-resolution.md +330 -0
  375. package/specs/package/README.md +18 -17
  376. package/specs/package/nested-packages-and-parent-packages.md +32 -31
  377. package/specs/package/package-index-yml.md +95 -101
  378. package/specs/package/package-root-layout.md +64 -46
  379. package/specs/package/registry-payload-and-copy.md +50 -44
  380. package/specs/package/universal-content.md +33 -56
  381. package/specs/package-sources.md +248 -0
  382. package/specs/platforms/README.md +52 -0
  383. package/specs/platforms/configuration.md +571 -0
  384. package/specs/platforms/detection.md +552 -0
  385. package/specs/platforms/directory-layout.md +599 -0
  386. package/specs/platforms/examples.md +1146 -0
  387. package/specs/platforms/flow-reference.md +1240 -0
  388. package/specs/platforms/flows.md +1488 -0
  389. package/specs/platforms/map-pipeline.md +801 -0
  390. package/specs/platforms/overview.md +349 -0
  391. package/specs/platforms/specification.md +700 -0
  392. package/specs/platforms/troubleshooting.md +697 -0
  393. package/specs/platforms/universal-converter.md +520 -0
  394. package/specs/push/README.md +1 -0
  395. package/specs/push/push-behavior.md +11 -3
  396. package/specs/push/push-remote-upload.md +1 -1
  397. package/specs/push/push-scoping.md +1 -1
  398. package/specs/push/push-version-selection.md +1 -1
  399. package/specs/registry.md +111 -0
  400. package/specs/remove/README.md +257 -0
  401. package/specs/save/README.md +21 -17
  402. package/specs/save/save-conflict-resolution.md +205 -83
  403. package/specs/save/save-file-discovery.md +6 -4
  404. package/specs/save/save-frontmatter-overrides.md +11 -15
  405. package/specs/save/save-modes-inputs.md +9 -39
  406. package/specs/save/save-naming-scoping.md +4 -4
  407. package/specs/save/save-package-detection.md +13 -13
  408. package/specs/save/save-registry-sync.md +16 -106
  409. package/specs/save/save-versioning.md +80 -0
  410. package/specs/scope-management.md +92 -0
  411. package/specs/set/README.md +520 -0
  412. package/specs/set/set-behavior.md +563 -0
  413. package/specs/show/README.md +483 -0
  414. package/specs/show/show-remote.md +494 -0
  415. package/specs/status/README.md +38 -0
  416. package/specs/uninstall/README.md +231 -0
  417. package/dist/commands/duplicate.js +0 -69
  418. package/dist/commands/duplicate.js.map +0 -1
  419. package/dist/commands/init.js +0 -117
  420. package/dist/commands/init.js.map +0 -1
  421. package/dist/commands/prune.js +0 -357
  422. package/dist/commands/prune.js.map +0 -1
  423. package/dist/commands/tui.js +0 -61
  424. package/dist/commands/tui.js.map +0 -1
  425. package/dist/core/install/index.js +0 -3
  426. package/dist/core/install/index.js.map +0 -1
  427. package/dist/core/push/push-single-file.js +0 -56
  428. package/dist/core/push/push-single-file.js.map +0 -1
  429. package/dist/core/save/package-detection.js +0 -147
  430. package/dist/core/save/package-detection.js.map +0 -1
  431. package/dist/core/save/save-single-file.js +0 -124
  432. package/dist/core/save/save-single-file.js.map +0 -1
  433. package/dist/core/token-store.js +0 -73
  434. package/dist/core/token-store.js.map +0 -1
  435. package/dist/tui/app.js +0 -95
  436. package/dist/tui/app.js.map +0 -1
  437. package/dist/tui/components/package-list.js +0 -73
  438. package/dist/tui/components/package-list.js.map +0 -1
  439. package/dist/tui/controller.js +0 -365
  440. package/dist/tui/controller.js.map +0 -1
  441. package/dist/tui/index.js +0 -12
  442. package/dist/tui/index.js.map +0 -1
  443. package/dist/tui/services/file-index.js +0 -64
  444. package/dist/tui/services/file-index.js.map +0 -1
  445. package/dist/tui/services/packages.js +0 -18
  446. package/dist/tui/services/packages.js.map +0 -1
  447. package/dist/tui/services/save.js +0 -21
  448. package/dist/tui/services/save.js.map +0 -1
  449. package/dist/tui/state/app-state.js +0 -15
  450. package/dist/tui/state/app-state.js.map +0 -1
  451. package/dist/tui/state.js +0 -17
  452. package/dist/tui/state.js.map +0 -1
  453. package/dist/tui/types.js.map +0 -1
  454. package/dist/tui/views/add-file-modal.js +0 -129
  455. package/dist/tui/views/add-file-modal.js.map +0 -1
  456. package/dist/tui/views/file-preview.js +0 -44
  457. package/dist/tui/views/file-preview.js.map +0 -1
  458. package/dist/tui/views/list-packages.js +0 -73
  459. package/dist/tui/views/list-packages.js.map +0 -1
  460. package/dist/tui/views/main-menu.js +0 -29
  461. package/dist/tui/views/main-menu.js.map +0 -1
  462. package/dist/tui/views/manage-view.js +0 -81
  463. package/dist/tui/views/manage-view.js.map +0 -1
  464. package/dist/tui/views/package-hub.js +0 -120
  465. package/dist/tui/views/package-hub.js.map +0 -1
  466. package/dist/tui/views/placeholder.js +0 -24
  467. package/dist/tui/views/placeholder.js.map +0 -1
  468. package/dist/utils/bun-bootstrap.js +0 -72
  469. package/dist/utils/bun-bootstrap.js.map +0 -1
  470. package/dist/utils/entity-id.js +0 -19
  471. package/dist/utils/entity-id.js.map +0 -1
  472. package/dist/utils/package-local-files.js +0 -5
  473. package/dist/utils/package-local-files.js.map +0 -1
  474. package/dist/utils/path-matching.js +0 -74
  475. package/dist/utils/path-matching.js.map +0 -1
  476. package/dist/utils/root-file-operations.js +0 -39
  477. package/dist/utils/root-file-operations.js.map +0 -1
  478. package/dist/utils/root-file-transformer.js +0 -27
  479. package/dist/utils/root-file-transformer.js.map +0 -1
  480. package/dist/utils/yaml-frontmatter.js +0 -25
  481. package/dist/utils/yaml-frontmatter.js.map +0 -1
  482. package/specs/auth/auth-device-flow.md +0 -70
  483. package/specs/login/login-device-flow.md +0 -70
  484. package/specs/platforms.md +0 -193
  485. package/specs/save-pack-versioning.md +0 -224
  486. package/specs/save-pack.md +0 -68
  487. /package/dist/{tui → core/source-resolution}/types.js +0 -0
@@ -1,129 +0,0 @@
1
- import { BoxRenderable, InputRenderable, InputRenderableEvents, SelectRenderable, SelectRenderableEvents, TextRenderable, } from '@opentui/core';
2
- export function createAddFileModalView(renderer) {
3
- const container = new BoxRenderable(renderer, {
4
- id: 'opkg-add-file-modal',
5
- width: '100%',
6
- height: '100%',
7
- flexDirection: 'column',
8
- gap: 1,
9
- visible: false,
10
- });
11
- const title = new TextRenderable(renderer, {
12
- id: 'opkg-add-file-title',
13
- content: 'Add file to package',
14
- fg: '#bbbbbb',
15
- });
16
- const status = new TextRenderable(renderer, {
17
- id: 'opkg-add-file-status',
18
- content: 'Type to search. Enter to add. Esc/b to cancel.',
19
- fg: '#888888',
20
- });
21
- const input = new InputRenderable(renderer, {
22
- id: 'opkg-add-file-input',
23
- width: '100%',
24
- placeholder: 'Search file path...',
25
- });
26
- const results = new SelectRenderable(renderer, {
27
- id: 'opkg-add-file-results',
28
- width: '100%',
29
- height: 12,
30
- showScrollIndicator: true,
31
- showDescription: false,
32
- wrapSelection: false,
33
- options: [],
34
- });
35
- container.add(title);
36
- container.add(status);
37
- container.add(input);
38
- container.add(results);
39
- container.add(new TextRenderable(renderer, {
40
- id: 'opkg-add-file-hint',
41
- content: 'Enter=add, Esc/b=cancel, ↑/↓ to navigate matches.',
42
- fg: '#888888',
43
- }));
44
- let onQueryChangeCb = null;
45
- let onSelectionChangeCb = null;
46
- let onConfirmCb = null;
47
- let suppressSelectionNotify = false;
48
- const getSelectedPath = () => {
49
- const opt = results.getSelectedOption();
50
- return opt?.value ?? null;
51
- };
52
- input.on(InputRenderableEvents.INPUT, (value) => {
53
- onQueryChangeCb?.(value ?? '');
54
- });
55
- input.on(InputRenderableEvents.ENTER, () => {
56
- onConfirmCb?.(getSelectedPath());
57
- });
58
- results.on(SelectRenderableEvents.SELECTION_CHANGED, () => {
59
- if (suppressSelectionNotify)
60
- return;
61
- onSelectionChangeCb?.(getSelectedPath());
62
- });
63
- results.on(SelectRenderableEvents.ITEM_SELECTED, () => {
64
- onConfirmCb?.(getSelectedPath());
65
- });
66
- const setResults = (items) => {
67
- if (!items.length) {
68
- results.options = [];
69
- status.content = 'No matches.';
70
- return;
71
- }
72
- results.options = items.map((item) => ({
73
- name: item.display,
74
- description: '',
75
- value: item.value,
76
- }));
77
- suppressSelectionNotify = true;
78
- results.setSelectedIndex(0);
79
- suppressSelectionNotify = false;
80
- onSelectionChangeCb?.(getSelectedPath());
81
- status.content = `Matches: ${items.length}. Enter=add, Esc/b=cancel.`;
82
- };
83
- return {
84
- container,
85
- setLoading: (message = 'Indexing files...') => {
86
- status.content = message;
87
- },
88
- setStatus: (message) => {
89
- status.content = message;
90
- },
91
- setResults,
92
- setPreview: () => {
93
- // no-op (preview removed)
94
- },
95
- setQuery: (value) => {
96
- input.value = value;
97
- },
98
- getQuery: () => input.value ?? '',
99
- getSelectedPath,
100
- focusSearch: () => {
101
- input.focus();
102
- },
103
- moveSelection: (delta) => {
104
- if (delta < 0) {
105
- results.moveUp(Math.abs(delta));
106
- }
107
- else if (delta > 0) {
108
- results.moveDown(delta);
109
- }
110
- onSelectionChangeCb?.(getSelectedPath());
111
- },
112
- onQueryChange: (cb) => {
113
- onQueryChangeCb = cb;
114
- },
115
- onSelectionChange: (cb) => {
116
- onSelectionChangeCb = cb;
117
- },
118
- onConfirm: (cb) => {
119
- onConfirmCb = cb;
120
- },
121
- show: () => {
122
- container.visible = true;
123
- },
124
- hide: () => {
125
- container.visible = false;
126
- },
127
- };
128
- }
129
- //# sourceMappingURL=add-file-modal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add-file-modal.js","sourceRoot":"","sources":["../../../src/tui/views/add-file-modal.ts"],"names":[],"mappings":"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"}
@@ -1,44 +0,0 @@
1
- import { BoxRenderable, TextRenderable } from '@opentui/core';
2
- export function createFilePreviewView(renderer) {
3
- const container = new BoxRenderable(renderer, {
4
- id: 'opkg-file-preview',
5
- width: '100%',
6
- height: '100%',
7
- flexDirection: 'column',
8
- gap: 1,
9
- visible: false,
10
- });
11
- const title = new TextRenderable(renderer, {
12
- id: 'opkg-file-preview-title',
13
- content: 'Preview',
14
- fg: '#bbbbbb',
15
- });
16
- const body = new TextRenderable(renderer, {
17
- id: 'opkg-file-preview-body',
18
- content: '',
19
- fg: '#aaaaaa',
20
- });
21
- const hint = new TextRenderable(renderer, {
22
- id: 'opkg-file-preview-hint',
23
- content: 'b/Esc to go back.',
24
- fg: '#888888',
25
- });
26
- container.add(title);
27
- container.add(body);
28
- container.add(hint);
29
- return {
30
- container,
31
- setContent: (newTitle, newBody) => {
32
- title.content = newTitle;
33
- body.content = newBody;
34
- },
35
- show: () => {
36
- container.visible = true;
37
- },
38
- hide: () => {
39
- container.visible = false;
40
- },
41
- isVisible: () => container.visible ?? false,
42
- };
43
- }
44
- //# sourceMappingURL=file-preview.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-preview.js","sourceRoot":"","sources":["../../../src/tui/views/file-preview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG9D,MAAM,UAAU,qBAAqB,CAAC,QAAa;IAClD,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC,QAAQ,EAAE;QAC7C,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM;QACd,aAAa,EAAE,QAAQ;QACvB,GAAG,EAAE,CAAC;QACN,OAAO,EAAE,KAAK;KACd,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,IAAI,cAAc,CAAC,QAAQ,EAAE;QAC1C,EAAE,EAAE,yBAAyB;QAC7B,OAAO,EAAE,SAAS;QAClB,EAAE,EAAE,SAAS;KACb,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,IAAI,cAAc,CAAC,QAAQ,EAAE;QACzC,EAAE,EAAE,wBAAwB;QAC5B,OAAO,EAAE,EAAE;QACX,EAAE,EAAE,SAAS;KACb,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,IAAI,cAAc,CAAC,QAAQ,EAAE;QACzC,EAAE,EAAE,wBAAwB;QAC5B,OAAO,EAAE,mBAAmB;QAC5B,EAAE,EAAE,SAAS;KACb,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACrB,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpB,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAEpB,OAAO;QACN,SAAS;QACT,UAAU,EAAE,CAAC,QAAgB,EAAE,OAAe,EAAE,EAAE;YACjD,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC;YACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACxB,CAAC;QACD,IAAI,EAAE,GAAG,EAAE;YACV,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;QAC1B,CAAC;QACD,IAAI,EAAE,GAAG,EAAE;YACV,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC;QAC3B,CAAC;QACD,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,IAAI,KAAK;KAC3C,CAAC;AACH,CAAC"}
@@ -1,73 +0,0 @@
1
- import { BoxRenderable, SelectRenderable, SelectRenderableEvents, TextRenderable, } from '@opentui/core';
2
- export function createListPackagesView(renderer) {
3
- const container = new BoxRenderable(renderer, {
4
- id: 'opkg-list-packages',
5
- width: '100%',
6
- height: '100%',
7
- flexDirection: 'column',
8
- gap: 1,
9
- });
10
- const title = new TextRenderable(renderer, {
11
- id: 'opkg-list-title',
12
- content: 'List Local Packages',
13
- fg: '#bbbbbb',
14
- });
15
- const status = new TextRenderable(renderer, {
16
- id: 'opkg-list-status',
17
- content: 'Loading packages...',
18
- fg: '#888888',
19
- });
20
- const select = new SelectRenderable(renderer, {
21
- id: 'opkg-list-select',
22
- width: '100%',
23
- height: 12,
24
- options: [],
25
- showDescription: true,
26
- showScrollIndicator: true,
27
- });
28
- let onSelect = null;
29
- select.on(SelectRenderableEvents.ITEM_SELECTED, (_idx, option) => {
30
- if (option?.value && onSelect) {
31
- onSelect(option.value);
32
- }
33
- });
34
- container.add(title);
35
- container.add(status);
36
- container.add(select);
37
- const setPackages = (pkgs) => {
38
- if (!pkgs.length) {
39
- select.options = [];
40
- status.content = 'No packages found. Use "opkg init" or save/pack first.';
41
- return;
42
- }
43
- select.options = pkgs.map((pkg) => ({
44
- name: `${pkg.name}@${pkg.version}`,
45
- description: pkg.description ?? '',
46
- value: pkg,
47
- }));
48
- status.content = 'Select a package (Enter). Press b/Esc to return.';
49
- };
50
- const setLoading = (message = 'Loading packages...') => {
51
- status.content = message;
52
- };
53
- const setError = (message) => {
54
- status.content = message;
55
- select.options = [];
56
- };
57
- const setOnSelect = (cb) => {
58
- onSelect = cb;
59
- };
60
- const focus = () => {
61
- select.focus();
62
- };
63
- return {
64
- container,
65
- select,
66
- setPackages,
67
- setLoading,
68
- setError,
69
- setOnSelect,
70
- focus,
71
- };
72
- }
73
- //# sourceMappingURL=list-packages.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list-packages.js","sourceRoot":"","sources":["../../../src/tui/views/list-packages.ts"],"names":[],"mappings":"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"}
@@ -1,29 +0,0 @@
1
- import { BoxRenderable, SelectRenderable, TextRenderable } from '@opentui/core';
2
- export function createMainMenu(renderer) {
3
- const mainMenuContainer = new BoxRenderable(renderer, {
4
- id: 'opkg-main-menu',
5
- width: '100%',
6
- height: '100%',
7
- flexDirection: 'column',
8
- gap: 1,
9
- });
10
- const title = new TextRenderable(renderer, {
11
- id: 'opkg-main-menu-title',
12
- content: 'Select an action',
13
- fg: '#bbbbbb',
14
- });
15
- const mainMenuSelect = new SelectRenderable(renderer, {
16
- id: 'opkg-main-menu-select',
17
- width: '100%',
18
- height: 8,
19
- options: [
20
- { name: 'Add / Update Package', description: 'Create package, add files, save/pack', value: 'add-update' },
21
- { name: 'List Local Packages', description: 'View packages in local registry', value: 'list' },
22
- { name: 'Exit', description: 'Quit the TUI', value: 'exit' },
23
- ],
24
- });
25
- mainMenuContainer.add(title);
26
- mainMenuContainer.add(mainMenuSelect);
27
- return { mainMenuContainer, mainMenuSelect };
28
- }
29
- //# sourceMappingURL=main-menu.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"main-menu.js","sourceRoot":"","sources":["../../../src/tui/views/main-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEhF,MAAM,UAAU,cAAc,CAAC,QAAa;IAC3C,MAAM,iBAAiB,GAAG,IAAI,aAAa,CAAC,QAAQ,EAAE;QACrD,EAAE,EAAE,gBAAgB;QACpB,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM;QACd,aAAa,EAAE,QAAQ;QACvB,GAAG,EAAE,CAAC;KACN,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,IAAI,cAAc,CAAC,QAAQ,EAAE;QAC1C,EAAE,EAAE,sBAAsB;QAC1B,OAAO,EAAE,kBAAkB;QAC3B,EAAE,EAAE,SAAS;KACb,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,IAAI,gBAAgB,CAAC,QAAQ,EAAE;QACrD,EAAE,EAAE,uBAAuB;QAC3B,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,CAAC;QACT,OAAO,EAAE;YACR,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,sCAAsC,EAAE,KAAK,EAAE,YAAY,EAAE;YAC1G,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,iCAAiC,EAAE,KAAK,EAAE,MAAM,EAAE;YAC9F,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE;SAC5D;KACD,CAAC,CAAC;IAEH,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC7B,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACtC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,CAAC;AAC9C,CAAC"}
@@ -1,81 +0,0 @@
1
- import blessed from 'blessed';
2
- export function createManageView(state, screen, pkg, // RegistryEntry or Package
3
- onBack, onAddFile, onSave) {
4
- const manageBox = blessed.box({
5
- label: ` Manage Package: ${pkg.name || 'New'}@${pkg.version || 'wip'} `,
6
- border: 'line',
7
- style: {
8
- bg: 'black',
9
- fg: 'white',
10
- border: {
11
- fg: 'yellow'
12
- }
13
- },
14
- width: 80,
15
- height: '80%',
16
- top: 2,
17
- left: 'center',
18
- scrollable: true,
19
- mouse: true,
20
- keys: true
21
- });
22
- screen.append(manageBox);
23
- // Stub package info
24
- const infoText = blessed.text({
25
- content: `Description: ${pkg.description || 'No desc'}\nPlatform: ${pkg.platform || 'universal'}\nStatus: ${state.dirty ? 'Unsaved changes' : 'Saved'}`,
26
- tags: true,
27
- style: { fg: 'gray' }
28
- });
29
- manageBox.append(infoText);
30
- // Stub file list (Phase 3: Use discoverPackageFiles())
31
- const fileList = blessed.list({
32
- label: ' Files (Phase 3: Real list from discoverPackageFiles) ',
33
- border: 'line',
34
- items: ['example-file1.ts', 'package.yml', '➕ Add File (Phase 3)', '← Back'],
35
- top: 5,
36
- width: '100%',
37
- height: 10,
38
- style: { selected: { bg: 'magenta' } },
39
- keys: true,
40
- mouse: true,
41
- vi: true
42
- });
43
- manageBox.append(fileList);
44
- fileList.on('select', (item, idx) => {
45
- const selected = fileList.getItem(idx).getText();
46
- if (selected === '← Back') {
47
- onBack();
48
- manageBox.detach();
49
- screen.render();
50
- return;
51
- }
52
- else if (selected === '➕ Add File (Phase 3)') {
53
- onAddFile();
54
- return;
55
- }
56
- screen.log(`Phase 3 TODO: View file content for ${selected}`);
57
- });
58
- // Bottom actions
59
- const actionsBox = blessed.box({
60
- label: ' Actions ',
61
- border: 'line',
62
- bottom: 0,
63
- width: '100%',
64
- height: 3,
65
- style: { bg: 'black', fg: 'green' },
66
- content: '{green-fg}💾 Save (calls save-pipeline) 📦 Pack (calls pack logic) Esc: Back{/}'
67
- });
68
- manageBox.append(actionsBox);
69
- // Stub action keys
70
- manageBox.key(['s'], () => {
71
- onSave();
72
- screen.log('Phase 3 TODO: Run save-pipeline for upsert');
73
- });
74
- manageBox.key(['p'], () => {
75
- screen.log('Phase 3 TODO: Run pack for tarball');
76
- });
77
- fileList.focus();
78
- screen.render();
79
- return manageBox;
80
- }
81
- //# sourceMappingURL=manage-view.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manage-view.js","sourceRoot":"","sources":["../../../src/tui/views/manage-view.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAI9B,MAAM,UAAU,gBAAgB,CAC9B,KAAe,EACf,MAAW,EACX,GAAQ,EAAE,2BAA2B;AACrC,MAAkB,EAClB,SAAqB,EACrB,MAAkB;IAElB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC;QAC5B,KAAK,EAAE,oBAAoB,GAAG,CAAC,IAAI,IAAI,KAAK,IAAI,GAAG,CAAC,OAAO,IAAI,KAAK,GAAG;QACvE,MAAM,EAAE,MAAM;QACd,KAAK,EAAE;YACL,EAAE,EAAE,OAAO;YACX,EAAE,EAAE,OAAO;YACX,MAAM,EAAE;gBACN,EAAE,EAAE,QAAQ;aACb;SACF;QACD,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,KAAK;QACb,GAAG,EAAE,CAAC;QACN,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEzB,oBAAoB;IACpB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;QAC5B,OAAO,EAAE,gBAAgB,GAAG,CAAC,WAAW,IAAI,SAAS,eAAe,GAAG,CAAC,QAAQ,IAAI,WAAW,aAAa,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,EAAE;QACvJ,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;KACtB,CAAC,CAAC;IAEH,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAE3B,uDAAuD;IACvD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;QAC5B,KAAK,EAAE,wDAAwD;QAC/D,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,CAAC,kBAAkB,EAAE,aAAa,EAAE,sBAAsB,EAAE,QAAQ,CAAC;QAC5E,GAAG,EAAE,CAAC;QACN,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,EAAE;QACV,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE;QACtC,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,IAAI;QACX,EAAE,EAAE,IAAI;KACT,CAAC,CAAC;IAEH,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAE3B,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QAClC,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;QACjD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,EAAE,CAAC;YACT,SAAS,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;aAAM,IAAI,QAAQ,KAAK,sBAAsB,EAAE,CAAC;YAC/C,SAAS,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,uCAAuC,QAAQ,EAAE,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,iBAAiB;IACjB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;QAC7B,KAAK,EAAE,WAAW;QAClB,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,CAAC;QACT,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,CAAC;QACT,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE;QACnC,OAAO,EAAE,qFAAqF;KAC/F,CAAC,CAAC;IAEH,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAE7B,mBAAmB;IACnB,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE;QACxB,MAAM,EAAE,CAAC;QACT,MAAM,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE;QACxB,MAAM,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,KAAK,EAAE,CAAC;IAEjB,MAAM,CAAC,MAAM,EAAE,CAAC;IAEhB,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -1,120 +0,0 @@
1
- import { BoxRenderable, SelectRenderable, SelectRenderableEvents, TextRenderable } from '@opentui/core';
2
- import path from 'node:path';
3
- export function createPackageHubView(renderer) {
4
- const container = new BoxRenderable(renderer, {
5
- id: 'opkg-package-hub',
6
- width: '100%',
7
- height: '100%',
8
- flexDirection: 'column',
9
- gap: 1,
10
- });
11
- const title = new TextRenderable(renderer, {
12
- id: 'opkg-package-hub-title',
13
- content: 'Add/Update Package',
14
- fg: '#bbbbbb',
15
- });
16
- const packageName = new TextRenderable(renderer, {
17
- id: 'opkg-package-hub-package',
18
- content: 'Package: (none selected)',
19
- fg: '#cccccc',
20
- });
21
- const status = new TextRenderable(renderer, {
22
- id: 'opkg-package-hub-status',
23
- content: 'No package selected. Choose one from list or create new.',
24
- fg: '#888888',
25
- });
26
- const filesSelect = new SelectRenderable(renderer, {
27
- id: 'opkg-package-hub-files-select',
28
- width: '100%',
29
- height: 12,
30
- showScrollIndicator: true,
31
- showDescription: false,
32
- wrapSelection: false,
33
- options: [],
34
- });
35
- container.add(title);
36
- container.add(packageName);
37
- container.add(status);
38
- container.add(filesSelect);
39
- let infoLines = [
40
- 'a=add file (planned), Enter=preview, Del=remove, s=save, k=pack, b/Esc=back.',
41
- ];
42
- const infoRenderables = [];
43
- const renderInfo = () => {
44
- // ensure we have renderables for each line
45
- for (let i = infoRenderables.length; i < infoLines.length; i += 1) {
46
- const r = new TextRenderable(renderer, {
47
- id: `opkg-package-hub-line-${i}`,
48
- content: '',
49
- fg: '#888888',
50
- });
51
- infoRenderables.push(r);
52
- container.add(r);
53
- }
54
- infoRenderables.forEach((r, idx) => {
55
- if (idx < infoLines.length) {
56
- r.content = infoLines[idx];
57
- r.visible = true;
58
- }
59
- else {
60
- r.visible = false;
61
- }
62
- });
63
- };
64
- renderInfo();
65
- let onEnter = null;
66
- filesSelect.on(SelectRenderableEvents.ITEM_SELECTED, () => {
67
- onEnter?.();
68
- });
69
- return {
70
- container,
71
- setPackageName: (name) => {
72
- packageName.content = name ? `Package: ${name}` : 'Package: (none selected)';
73
- },
74
- setFiles: (paths) => {
75
- if (!paths.length) {
76
- filesSelect.options = [];
77
- status.content = 'No files found in package.';
78
- return;
79
- }
80
- const cwd = process.cwd();
81
- filesSelect.options = paths.map((p) => {
82
- const display = p.startsWith('/') || p.match(/^[A-Za-z]:[\\/]/)
83
- ? relativeSafe(cwd, p)
84
- : p;
85
- return {
86
- name: display,
87
- description: '',
88
- value: p,
89
- };
90
- });
91
- status.content = `Files (${paths.length}). Enter=preview, Del=remove.`;
92
- },
93
- setStatus: (message) => {
94
- status.content = message;
95
- },
96
- getSelectedFile: () => {
97
- const opt = filesSelect.getSelectedOption();
98
- return opt?.value ?? null;
99
- },
100
- focusFiles: () => {
101
- filesSelect.focus();
102
- },
103
- setEmptyState: (message) => {
104
- status.content = message;
105
- filesSelect.options = [];
106
- },
107
- setInfoLines: (lines) => {
108
- infoLines = lines;
109
- renderInfo();
110
- },
111
- onFileEnter: (cb) => {
112
- onEnter = cb;
113
- },
114
- };
115
- }
116
- function relativeSafe(cwd, target) {
117
- const rel = path.relative(cwd, target);
118
- return rel === '' ? '.' : rel;
119
- }
120
- //# sourceMappingURL=package-hub.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"package-hub.js","sourceRoot":"","sources":["../../../src/tui/views/package-hub.ts"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- import { BoxRenderable, TextRenderable } from '@opentui/core';
2
- export function createPlaceholderView(renderer, opts) {
3
- const container = new BoxRenderable(renderer, {
4
- id: opts.id,
5
- width: '100%',
6
- height: '100%',
7
- flexDirection: 'column',
8
- gap: 1,
9
- });
10
- container.add(new TextRenderable(renderer, {
11
- id: `${opts.id}-title`,
12
- content: opts.title,
13
- fg: '#bbbbbb',
14
- }));
15
- opts.lines.forEach((line, idx) => {
16
- container.add(new TextRenderable(renderer, {
17
- id: `${opts.id}-line-${idx}`,
18
- content: line,
19
- fg: '#888888',
20
- }));
21
- });
22
- return container;
23
- }
24
- //# sourceMappingURL=placeholder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"placeholder.js","sourceRoot":"","sources":["../../../src/tui/views/placeholder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE9D,MAAM,UAAU,qBAAqB,CACpC,QAAa,EACb,IAAoD;IAEpD,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC,QAAQ,EAAE;QAC7C,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM;QACd,aAAa,EAAE,QAAQ;QACvB,GAAG,EAAE,CAAC;KACN,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,QAAQ,EAAE;QAC1C,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,QAAQ;QACtB,OAAO,EAAE,IAAI,CAAC,KAAK;QACnB,EAAE,EAAE,SAAS;KACb,CAAC,CAAC,CAAC;IAEJ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QAChC,SAAS,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,QAAQ,EAAE;YAC1C,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,SAAS,GAAG,EAAE;YAC5B,OAAO,EAAE,IAAI;YACb,EAAE,EAAE,SAAS;SACb,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AAClB,CAAC"}
@@ -1,72 +0,0 @@
1
- import { spawn } from 'node:child_process';
2
- import { existsSync, mkdirSync } from 'node:fs';
3
- import { chmod } from 'node:fs/promises';
4
- import { join } from 'node:path';
5
- import os from 'node:os';
6
- import { logger } from './logger.js';
7
- const DEFAULT_INSTALL_DIR = join(os.homedir(), '.opkg', 'bun');
8
- const DEFAULT_BUN_HOME = join(os.homedir(), '.bun'); // bun installer fallback
9
- const BUN_BIN_NAME = process.platform === 'win32' ? 'bun.exe' : 'bun';
10
- /**
11
- * Ensures a Bun binary is available. If Bun is not present on the system,
12
- * downloads it into a cached directory (DEFAULT_INSTALL_DIR) using the
13
- * official install script. Returns the path to the Bun executable.
14
- */
15
- export async function ensureBunBinary() {
16
- // 1) Respect explicit override
17
- const envOverride = process.env.BUN_BIN;
18
- if (envOverride) {
19
- return envOverride;
20
- }
21
- // 2) If Bun already on PATH and running under Bun, just use it
22
- if (process?.versions?.bun) {
23
- return process.execPath;
24
- }
25
- // 3) Check cached installation
26
- const cachedBin = join(DEFAULT_INSTALL_DIR, 'bin', BUN_BIN_NAME);
27
- if (existsSync(cachedBin)) {
28
- return cachedBin;
29
- }
30
- // 4) Download via official install script into cache dir
31
- if (process.platform === 'win32') {
32
- throw new Error('Automatic Bun bootstrap is not implemented for Windows. Please install Bun manually.');
33
- }
34
- logger.info('Bun not found; downloading to cache', { installDir: DEFAULT_INSTALL_DIR });
35
- mkdirSync(DEFAULT_INSTALL_DIR, { recursive: true });
36
- await runShellCommand(`curl -fsSL https://bun.sh/install | bash`, { BUN_INSTALL: DEFAULT_INSTALL_DIR });
37
- if (!existsSync(cachedBin)) {
38
- const defaultInstalled = join(DEFAULT_BUN_HOME, 'bin', BUN_BIN_NAME);
39
- if (existsSync(defaultInstalled)) {
40
- logger.warn('Bun installed to default ~/.bun; using that path instead', { defaultInstalled });
41
- return defaultInstalled;
42
- }
43
- throw new Error(`Failed to install Bun to ${cachedBin}`);
44
- }
45
- try {
46
- await chmod(cachedBin, 0o755);
47
- }
48
- catch {
49
- // non-fatal
50
- }
51
- return cachedBin;
52
- }
53
- async function runShellCommand(cmd, envAdd = {}) {
54
- return new Promise((resolve, reject) => {
55
- const child = spawn(cmd, {
56
- stdio: 'inherit',
57
- shell: true,
58
- env: { ...process.env, ...envAdd },
59
- });
60
- child.on('error', reject);
61
- child.on('exit', (code, signal) => {
62
- if (signal) {
63
- return reject(new Error(`Command terminated by signal ${signal}`));
64
- }
65
- if (code && code !== 0) {
66
- return reject(new Error(`Command exited with code ${code}`));
67
- }
68
- resolve();
69
- });
70
- });
71
- }
72
- //# sourceMappingURL=bun-bootstrap.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bun-bootstrap.js","sourceRoot":"","sources":["../../src/utils/bun-bootstrap.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- import { nanoid } from 'nanoid';
2
- /**
3
- * Entity ID length
4
- */
5
- const ENTITY_ID_LENGTH = 9;
6
- /**
7
- * Generate a new entity ID using nanoid with 9 character length
8
- * This provides a consistent ID format across the application
9
- */
10
- export function generateEntityId() {
11
- return nanoid(ENTITY_ID_LENGTH);
12
- }
13
- /**
14
- * Validate entity ID format (must be 9 chars, only word chars or hyphen)
15
- */
16
- export function isValidEntityId(id) {
17
- return typeof id === 'string' && id.length === ENTITY_ID_LENGTH && !/[^\w\-]/.test(id);
18
- }
19
- //# sourceMappingURL=entity-id.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entity-id.js","sourceRoot":"","sources":["../../src/utils/entity-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC;;GAEG;AACH,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAE3B;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,EAAU;IACxC,OAAO,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,KAAK,gBAAgB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACzF,CAAC"}
@@ -1,5 +0,0 @@
1
- import { readPackageFilesForRegistry } from './package-copy.js';
2
- export async function readLocalPackageFilesForIndex(packageDir) {
3
- return await readPackageFilesForRegistry(packageDir);
4
- }
5
- //# sourceMappingURL=package-local-files.js.map