opkg 0.9.2 → 0.9.4

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 (404) hide show
  1. package/.claude/agents/code-reviewer.md +171 -0
  2. package/.claude/commands/commit-push-pr.md +20 -0
  3. package/.claude/commands/{specs/read.md → read-specs.md} +1 -1
  4. package/.claude/commands/{specs/update.md → update-specs.md} +4 -0
  5. package/.claude/skills/code-review-excellence/SKILL.md +538 -0
  6. package/README.md +2 -2
  7. package/package.json +3 -1
  8. package/packages/cli/dist/add-IJAPFHIX.js +624 -0
  9. package/packages/cli/dist/add-IJAPFHIX.js.map +7 -0
  10. package/packages/cli/dist/add-LLUNFLJI.js +624 -0
  11. package/packages/cli/dist/add-LLUNFLJI.js.map +7 -0
  12. package/packages/cli/dist/add-U44SL3OR.js +624 -0
  13. package/packages/cli/dist/add-U44SL3OR.js.map +7 -0
  14. package/packages/cli/dist/chunk-23VBP5L6.js +371 -0
  15. package/packages/cli/dist/chunk-23VBP5L6.js.map +7 -0
  16. package/packages/cli/dist/chunk-2SVHLF5C.js +1419 -0
  17. package/packages/cli/dist/chunk-2SVHLF5C.js.map +7 -0
  18. package/packages/cli/dist/chunk-37256POU.js +99 -0
  19. package/packages/cli/dist/chunk-37256POU.js.map +7 -0
  20. package/packages/cli/dist/chunk-3PZRVA6O.js +196 -0
  21. package/packages/cli/dist/chunk-3PZRVA6O.js.map +7 -0
  22. package/packages/cli/dist/chunk-427DCURL.js +155 -0
  23. package/packages/cli/dist/chunk-427DCURL.js.map +7 -0
  24. package/packages/cli/dist/chunk-4B5HJLP2.js +48 -0
  25. package/packages/cli/dist/chunk-4B5HJLP2.js.map +7 -0
  26. package/packages/cli/dist/chunk-4OWT3YEG.js +413 -0
  27. package/packages/cli/dist/chunk-4OWT3YEG.js.map +7 -0
  28. package/packages/cli/dist/chunk-4RIBTBXI.js +568 -0
  29. package/packages/cli/dist/chunk-4RIBTBXI.js.map +7 -0
  30. package/packages/cli/dist/chunk-4X2EJHJN.js +63 -0
  31. package/packages/cli/dist/chunk-4X2EJHJN.js.map +7 -0
  32. package/packages/cli/dist/chunk-6CYW66HD.js +1136 -0
  33. package/packages/cli/dist/chunk-6CYW66HD.js.map +7 -0
  34. package/packages/cli/dist/chunk-6DITYAFA.js +172 -0
  35. package/packages/cli/dist/chunk-6DITYAFA.js.map +7 -0
  36. package/packages/cli/dist/chunk-7KEAKEVZ.js +568 -0
  37. package/packages/cli/dist/chunk-7KEAKEVZ.js.map +7 -0
  38. package/packages/cli/dist/chunk-ABFUD25D.js +61 -0
  39. package/packages/cli/dist/chunk-ABFUD25D.js.map +7 -0
  40. package/packages/cli/dist/chunk-AR7GJCG6.js +274 -0
  41. package/packages/cli/dist/chunk-AR7GJCG6.js.map +7 -0
  42. package/packages/cli/dist/chunk-AYTGQCXH.js +86 -0
  43. package/packages/cli/dist/chunk-AYTGQCXH.js.map +7 -0
  44. package/packages/cli/dist/chunk-BROJ6OUT.js +631 -0
  45. package/packages/cli/dist/chunk-BROJ6OUT.js.map +7 -0
  46. package/packages/cli/dist/chunk-BVVSU7QD.js +23 -0
  47. package/packages/cli/dist/chunk-BVVSU7QD.js.map +7 -0
  48. package/packages/cli/dist/chunk-C6FY55UP.js +108 -0
  49. package/packages/cli/dist/chunk-C6FY55UP.js.map +7 -0
  50. package/packages/cli/dist/chunk-CVA64SXK.js +1136 -0
  51. package/packages/cli/dist/chunk-CVA64SXK.js.map +7 -0
  52. package/packages/cli/dist/chunk-D3O7LY2Q.js +1151 -0
  53. package/packages/cli/dist/chunk-D3O7LY2Q.js.map +7 -0
  54. package/packages/cli/dist/chunk-D6LEPODL.js +413 -0
  55. package/packages/cli/dist/chunk-D6LEPODL.js.map +7 -0
  56. package/packages/cli/dist/chunk-DEC24S7E.js +186 -0
  57. package/packages/cli/dist/chunk-DEC24S7E.js.map +7 -0
  58. package/packages/cli/dist/chunk-FMVVJH5M.js +371 -0
  59. package/packages/cli/dist/chunk-FMVVJH5M.js.map +7 -0
  60. package/packages/cli/dist/chunk-GDVFS3YP.js +130 -0
  61. package/packages/cli/dist/chunk-GDVFS3YP.js.map +7 -0
  62. package/packages/cli/dist/chunk-GEP2G5HF.js +31 -0
  63. package/packages/cli/dist/chunk-GEP2G5HF.js.map +7 -0
  64. package/packages/cli/dist/chunk-GSWHZBT2.js +62 -0
  65. package/packages/cli/dist/chunk-GSWHZBT2.js.map +7 -0
  66. package/packages/cli/dist/chunk-HTYHJA3B.js +61 -0
  67. package/packages/cli/dist/chunk-HTYHJA3B.js.map +7 -0
  68. package/packages/cli/dist/chunk-HYKYECAE.js +222 -0
  69. package/packages/cli/dist/chunk-HYKYECAE.js.map +7 -0
  70. package/packages/cli/dist/chunk-I7FEAHB4.js +100 -0
  71. package/packages/cli/dist/chunk-I7FEAHB4.js.map +7 -0
  72. package/packages/cli/dist/chunk-IHVZ5AUJ.js +107 -0
  73. package/packages/cli/dist/chunk-IHVZ5AUJ.js.map +7 -0
  74. package/packages/cli/dist/chunk-KI7FDU3H.js +99 -0
  75. package/packages/cli/dist/chunk-KI7FDU3H.js.map +7 -0
  76. package/packages/cli/dist/chunk-L5GRJQBS.js +32 -0
  77. package/packages/cli/dist/chunk-L5GRJQBS.js.map +7 -0
  78. package/packages/cli/dist/chunk-LHEAUDJL.js +302 -0
  79. package/packages/cli/dist/chunk-LHEAUDJL.js.map +7 -0
  80. package/packages/cli/dist/chunk-MIURCESJ.js +48 -0
  81. package/packages/cli/dist/chunk-MIURCESJ.js.map +7 -0
  82. package/packages/cli/dist/chunk-N43IXOND.js +732 -0
  83. package/packages/cli/dist/chunk-N43IXOND.js.map +7 -0
  84. package/packages/cli/dist/chunk-OUZRMGPV.js +274 -0
  85. package/packages/cli/dist/chunk-OUZRMGPV.js.map +7 -0
  86. package/packages/cli/dist/chunk-PSQXKAL4.js +371 -0
  87. package/packages/cli/dist/chunk-PSQXKAL4.js.map +7 -0
  88. package/packages/cli/dist/chunk-PUDRKDVZ.js +1419 -0
  89. package/packages/cli/dist/chunk-PUDRKDVZ.js.map +7 -0
  90. package/packages/cli/dist/chunk-RAKMX654.js +631 -0
  91. package/packages/cli/dist/chunk-RAKMX654.js.map +7 -0
  92. package/packages/cli/dist/chunk-RSFLK2TP.js +195 -0
  93. package/packages/cli/dist/chunk-RSFLK2TP.js.map +7 -0
  94. package/packages/cli/dist/chunk-S26PR2BS.js +99 -0
  95. package/packages/cli/dist/chunk-S26PR2BS.js.map +7 -0
  96. package/packages/cli/dist/chunk-U7FW7SXX.js +568 -0
  97. package/packages/cli/dist/chunk-U7FW7SXX.js.map +7 -0
  98. package/packages/cli/dist/chunk-VKM6K5TN.js +413 -0
  99. package/packages/cli/dist/chunk-VKM6K5TN.js.map +7 -0
  100. package/packages/cli/dist/chunk-VKNJG4JN.js +253 -0
  101. package/packages/cli/dist/chunk-VKNJG4JN.js.map +7 -0
  102. package/packages/cli/dist/chunk-VQ2KY6CK.js +113 -0
  103. package/packages/cli/dist/chunk-VQ2KY6CK.js.map +7 -0
  104. package/packages/cli/dist/chunk-VQDTXLOX.js +1312 -0
  105. package/packages/cli/dist/chunk-VQDTXLOX.js.map +7 -0
  106. package/packages/cli/dist/chunk-VXNS3X5O.js +60 -0
  107. package/packages/cli/dist/chunk-VXNS3X5O.js.map +7 -0
  108. package/packages/cli/dist/chunk-WF7H2YDU.js +376 -0
  109. package/packages/cli/dist/chunk-WF7H2YDU.js.map +7 -0
  110. package/packages/cli/dist/chunk-WNRXZLWW.js +266 -0
  111. package/packages/cli/dist/chunk-WNRXZLWW.js.map +7 -0
  112. package/packages/cli/dist/chunk-WT4VVCXM.js +1121 -0
  113. package/packages/cli/dist/chunk-WT4VVCXM.js.map +7 -0
  114. package/packages/cli/dist/configure-3AZUMDJZ.js +107 -0
  115. package/packages/cli/dist/configure-3AZUMDJZ.js.map +7 -0
  116. package/packages/cli/dist/configure-D722JQOD.js +107 -0
  117. package/packages/cli/dist/configure-D722JQOD.js.map +7 -0
  118. package/packages/cli/dist/configure-IU5H7XD6.js +107 -0
  119. package/packages/cli/dist/configure-IU5H7XD6.js.map +7 -0
  120. package/packages/cli/dist/file-format-detector-PXCIAKTK.js +22 -0
  121. package/packages/cli/dist/file-format-detector-PXCIAKTK.js.map +7 -0
  122. package/packages/cli/dist/index.js +17 -17
  123. package/packages/cli/dist/install-EZNWMLJR.js +7581 -0
  124. package/packages/cli/dist/install-EZNWMLJR.js.map +7 -0
  125. package/packages/cli/dist/install-F5ANFUBX.js +7577 -0
  126. package/packages/cli/dist/install-F5ANFUBX.js.map +7 -0
  127. package/packages/cli/dist/install-JSXEPPC2.js +7104 -0
  128. package/packages/cli/dist/install-JSXEPPC2.js.map +7 -0
  129. package/packages/cli/dist/install-QHEBX7JH.js +7101 -0
  130. package/packages/cli/dist/install-QHEBX7JH.js.map +7 -0
  131. package/packages/cli/dist/list-DMOUATYI.js +327 -0
  132. package/packages/cli/dist/list-DMOUATYI.js.map +7 -0
  133. package/packages/cli/dist/list-UESSCB7Y.js +327 -0
  134. package/packages/cli/dist/list-UESSCB7Y.js.map +7 -0
  135. package/packages/cli/dist/list-XR7RSJFS.js +327 -0
  136. package/packages/cli/dist/list-XR7RSJFS.js.map +7 -0
  137. package/packages/cli/dist/login-EYZ2SOYZ.js +150 -0
  138. package/packages/cli/dist/login-EYZ2SOYZ.js.map +7 -0
  139. package/packages/cli/dist/login-JWCSTAEU.js +150 -0
  140. package/packages/cli/dist/login-JWCSTAEU.js.map +7 -0
  141. package/packages/cli/dist/login-NRKHXZKM.js +150 -0
  142. package/packages/cli/dist/login-NRKHXZKM.js.map +7 -0
  143. package/packages/cli/dist/logout-HDMYRXIE.js +40 -0
  144. package/packages/cli/dist/logout-HDMYRXIE.js.map +7 -0
  145. package/packages/cli/dist/logout-SYHXCVCQ.js +40 -0
  146. package/packages/cli/dist/logout-SYHXCVCQ.js.map +7 -0
  147. package/packages/cli/dist/logout-X3XUUOH5.js +40 -0
  148. package/packages/cli/dist/logout-X3XUUOH5.js.map +7 -0
  149. package/packages/cli/dist/new-3LTFKDTQ.js +277 -0
  150. package/packages/cli/dist/new-3LTFKDTQ.js.map +7 -0
  151. package/packages/cli/dist/new-F46OSD72.js +277 -0
  152. package/packages/cli/dist/new-F46OSD72.js.map +7 -0
  153. package/packages/cli/dist/new-OPCCLNL2.js +277 -0
  154. package/packages/cli/dist/new-OPCCLNL2.js.map +7 -0
  155. package/packages/cli/dist/package-marker-detector-T5O5YD2E.js +80 -0
  156. package/packages/cli/dist/package-marker-detector-T5O5YD2E.js.map +7 -0
  157. package/packages/cli/dist/package-yml-QWZIJDYU.js +16 -0
  158. package/packages/cli/dist/package-yml-QWZIJDYU.js.map +7 -0
  159. package/packages/cli/dist/plugin-naming-YP2I4NPA.js +29 -0
  160. package/packages/cli/dist/plugin-naming-YP2I4NPA.js.map +7 -0
  161. package/packages/cli/dist/publish-4H43PCSG.js +619 -0
  162. package/packages/cli/dist/publish-4H43PCSG.js.map +7 -0
  163. package/packages/cli/dist/publish-RULKLNUX.js +619 -0
  164. package/packages/cli/dist/publish-RULKLNUX.js.map +7 -0
  165. package/packages/cli/dist/publish-URWY2P3E.js +619 -0
  166. package/packages/cli/dist/publish-URWY2P3E.js.map +7 -0
  167. package/packages/cli/dist/remove-BD52BHR2.js +542 -0
  168. package/packages/cli/dist/remove-BD52BHR2.js.map +7 -0
  169. package/packages/cli/dist/remove-G5NRC7LD.js +542 -0
  170. package/packages/cli/dist/remove-G5NRC7LD.js.map +7 -0
  171. package/packages/cli/dist/remove-TC3FQUYQ.js +542 -0
  172. package/packages/cli/dist/remove-TC3FQUYQ.js.map +7 -0
  173. package/packages/cli/dist/resource-discoverer-4X4RY43E.js +17 -0
  174. package/packages/cli/dist/resource-discoverer-4X4RY43E.js.map +7 -0
  175. package/packages/cli/dist/save-24TESYKI.js +1728 -0
  176. package/packages/cli/dist/save-24TESYKI.js.map +7 -0
  177. package/packages/cli/dist/save-N3QWF2WN.js +1728 -0
  178. package/packages/cli/dist/save-N3QWF2WN.js.map +7 -0
  179. package/packages/cli/dist/save-P2U67DTV.js +1728 -0
  180. package/packages/cli/dist/save-P2U67DTV.js.map +7 -0
  181. package/packages/cli/dist/search-ABROK3UO.js +157 -0
  182. package/packages/cli/dist/search-ABROK3UO.js.map +7 -0
  183. package/packages/cli/dist/search-WVFXFNAV.js +157 -0
  184. package/packages/cli/dist/search-WVFXFNAV.js.map +7 -0
  185. package/packages/cli/dist/search-YQN2Q2SO.js +157 -0
  186. package/packages/cli/dist/search-YQN2Q2SO.js.map +7 -0
  187. package/packages/cli/dist/set-DCWF73F6.js +251 -0
  188. package/packages/cli/dist/set-DCWF73F6.js.map +7 -0
  189. package/packages/cli/dist/set-GJEG2F6Y.js +251 -0
  190. package/packages/cli/dist/set-GJEG2F6Y.js.map +7 -0
  191. package/packages/cli/dist/set-NGM2FIKF.js +251 -0
  192. package/packages/cli/dist/set-NGM2FIKF.js.map +7 -0
  193. package/packages/cli/dist/uninstall-3CJQMTYH.js +539 -0
  194. package/packages/cli/dist/uninstall-3CJQMTYH.js.map +7 -0
  195. package/packages/cli/dist/uninstall-Q3CP4UN5.js +539 -0
  196. package/packages/cli/dist/uninstall-Q3CP4UN5.js.map +7 -0
  197. package/packages/cli/dist/uninstall-QU5OMEEC.js +539 -0
  198. package/packages/cli/dist/uninstall-QU5OMEEC.js.map +7 -0
  199. package/packages/cli/dist/unpublish-GHJQYC4S.js +245 -0
  200. package/packages/cli/dist/unpublish-GHJQYC4S.js.map +7 -0
  201. package/packages/cli/dist/unpublish-L2CYMK4B.js +245 -0
  202. package/packages/cli/dist/unpublish-L2CYMK4B.js.map +7 -0
  203. package/packages/cli/dist/unpublish-VBTNTMS5.js +245 -0
  204. package/packages/cli/dist/unpublish-VBTNTMS5.js.map +7 -0
  205. package/packages/cli/dist/view-MXRBMXOG.js +488 -0
  206. package/packages/cli/dist/view-MXRBMXOG.js.map +7 -0
  207. package/packages/cli/dist/view-NMND7SAW.js +488 -0
  208. package/packages/cli/dist/view-NMND7SAW.js.map +7 -0
  209. package/packages/cli/dist/view-RPQRDSYB.js +488 -0
  210. package/packages/cli/dist/view-RPQRDSYB.js.map +7 -0
  211. package/packages/cli/package.json +2 -0
  212. package/packages/core/dist/constants/index.d.ts +9 -0
  213. package/packages/core/dist/constants/index.d.ts.map +1 -1
  214. package/packages/core/dist/constants/index.js +12 -0
  215. package/packages/core/dist/constants/index.js.map +1 -1
  216. package/packages/core/dist/core/dependency-resolver/index.d.ts +2 -10
  217. package/packages/core/dist/core/dependency-resolver/index.d.ts.map +1 -1
  218. package/packages/core/dist/core/dependency-resolver/index.js +3 -14
  219. package/packages/core/dist/core/dependency-resolver/index.js.map +1 -1
  220. package/packages/core/dist/core/install/base-detector.d.ts +2 -1
  221. package/packages/core/dist/core/install/base-detector.d.ts.map +1 -1
  222. package/packages/core/dist/core/install/base-detector.js +54 -1
  223. package/packages/core/dist/core/install/base-detector.js.map +1 -1
  224. package/packages/core/dist/core/install/conflicts/file-conflict-resolver.d.ts +7 -5
  225. package/packages/core/dist/core/install/conflicts/file-conflict-resolver.d.ts.map +1 -1
  226. package/packages/core/dist/core/install/conflicts/file-conflict-resolver.js +25 -9
  227. package/packages/core/dist/core/install/conflicts/file-conflict-resolver.js.map +1 -1
  228. package/packages/core/dist/core/install/flow-index-installer.d.ts +2 -1
  229. package/packages/core/dist/core/install/flow-index-installer.d.ts.map +1 -1
  230. package/packages/core/dist/core/install/flow-index-installer.js +19 -4
  231. package/packages/core/dist/core/install/flow-index-installer.js.map +1 -1
  232. package/packages/core/dist/core/install/input-classifier-base.js +3 -3
  233. package/packages/core/dist/core/install/input-classifier-base.js.map +1 -1
  234. package/packages/core/dist/core/install/install-reporting.d.ts.map +1 -1
  235. package/packages/core/dist/core/install/install-reporting.js +7 -9
  236. package/packages/core/dist/core/install/install-reporting.js.map +1 -1
  237. package/packages/core/dist/core/install/list-handler.d.ts.map +1 -1
  238. package/packages/core/dist/core/install/list-handler.js +3 -0
  239. package/packages/core/dist/core/install/list-handler.js.map +1 -1
  240. package/packages/core/dist/core/install/marketplace-handler.d.ts.map +1 -1
  241. package/packages/core/dist/core/install/marketplace-handler.js.map +1 -1
  242. package/packages/core/dist/core/install/operations/conflict-handler.d.ts +2 -1
  243. package/packages/core/dist/core/install/operations/conflict-handler.d.ts.map +1 -1
  244. package/packages/core/dist/core/install/operations/conflict-handler.js +2 -2
  245. package/packages/core/dist/core/install/operations/conflict-handler.js.map +1 -1
  246. package/packages/core/dist/core/install/operations/installation-executor.d.ts +3 -0
  247. package/packages/core/dist/core/install/operations/installation-executor.d.ts.map +1 -1
  248. package/packages/core/dist/core/install/operations/installation-executor.js +39 -22
  249. package/packages/core/dist/core/install/operations/installation-executor.js.map +1 -1
  250. package/packages/core/dist/core/install/orchestrator/orchestrator.d.ts +7 -3
  251. package/packages/core/dist/core/install/orchestrator/orchestrator.d.ts.map +1 -1
  252. package/packages/core/dist/core/install/orchestrator/orchestrator.js +193 -93
  253. package/packages/core/dist/core/install/orchestrator/orchestrator.js.map +1 -1
  254. package/packages/core/dist/core/install/orchestrator/strategies/git-strategy.d.ts +1 -0
  255. package/packages/core/dist/core/install/orchestrator/strategies/git-strategy.d.ts.map +1 -1
  256. package/packages/core/dist/core/install/orchestrator/strategies/git-strategy.js +11 -24
  257. package/packages/core/dist/core/install/orchestrator/strategies/git-strategy.js.map +1 -1
  258. package/packages/core/dist/core/install/orchestrator/strategies/path-strategy.d.ts +2 -0
  259. package/packages/core/dist/core/install/orchestrator/strategies/path-strategy.d.ts.map +1 -1
  260. package/packages/core/dist/core/install/orchestrator/strategies/path-strategy.js +14 -14
  261. package/packages/core/dist/core/install/orchestrator/strategies/path-strategy.js.map +1 -1
  262. package/packages/core/dist/core/install/orchestrator/strategies/registry-strategy.d.ts +7 -0
  263. package/packages/core/dist/core/install/orchestrator/strategies/registry-strategy.d.ts.map +1 -1
  264. package/packages/core/dist/core/install/orchestrator/strategies/registry-strategy.js +28 -0
  265. package/packages/core/dist/core/install/orchestrator/strategies/registry-strategy.js.map +1 -1
  266. package/packages/core/dist/core/install/orchestrator/types.d.ts +2 -0
  267. package/packages/core/dist/core/install/orchestrator/types.d.ts.map +1 -1
  268. package/packages/core/dist/core/install/path-package-loader.d.ts.map +1 -1
  269. package/packages/core/dist/core/install/path-package-loader.js +20 -1
  270. package/packages/core/dist/core/install/path-package-loader.js.map +1 -1
  271. package/packages/core/dist/core/install/platform-resolution.d.ts +3 -0
  272. package/packages/core/dist/core/install/platform-resolution.d.ts.map +1 -1
  273. package/packages/core/dist/core/install/platform-resolution.js +5 -2
  274. package/packages/core/dist/core/install/platform-resolution.js.map +1 -1
  275. package/packages/core/dist/core/install/preprocessing/context-population.d.ts +18 -0
  276. package/packages/core/dist/core/install/preprocessing/context-population.d.ts.map +1 -0
  277. package/packages/core/dist/core/install/preprocessing/context-population.js +36 -0
  278. package/packages/core/dist/core/install/preprocessing/context-population.js.map +1 -0
  279. package/packages/core/dist/core/install/preprocessing/convenience-preprocessor.d.ts +23 -0
  280. package/packages/core/dist/core/install/preprocessing/convenience-preprocessor.d.ts.map +1 -1
  281. package/packages/core/dist/core/install/preprocessing/convenience-preprocessor.js +44 -0
  282. package/packages/core/dist/core/install/preprocessing/convenience-preprocessor.js.map +1 -1
  283. package/packages/core/dist/core/install/sources/git-source.d.ts.map +1 -1
  284. package/packages/core/dist/core/install/sources/git-source.js +67 -4
  285. package/packages/core/dist/core/install/sources/git-source.js.map +1 -1
  286. package/packages/core/dist/core/install/sources/path-source.d.ts.map +1 -1
  287. package/packages/core/dist/core/install/sources/path-source.js +8 -0
  288. package/packages/core/dist/core/install/sources/path-source.js.map +1 -1
  289. package/packages/core/dist/core/install/strategies/flow-based-strategy.d.ts.map +1 -1
  290. package/packages/core/dist/core/install/strategies/flow-based-strategy.js +12 -5
  291. package/packages/core/dist/core/install/strategies/flow-based-strategy.js.map +1 -1
  292. package/packages/core/dist/core/install/strategies/types.d.ts +11 -1
  293. package/packages/core/dist/core/install/strategies/types.d.ts.map +1 -1
  294. package/packages/core/dist/core/install/unified/context-builders.d.ts +5 -0
  295. package/packages/core/dist/core/install/unified/context-builders.d.ts.map +1 -1
  296. package/packages/core/dist/core/install/unified/context-builders.js +12 -0
  297. package/packages/core/dist/core/install/unified/context-builders.js.map +1 -1
  298. package/packages/core/dist/core/install/unified/context-helpers.d.ts +0 -4
  299. package/packages/core/dist/core/install/unified/context-helpers.d.ts.map +1 -1
  300. package/packages/core/dist/core/install/unified/context-helpers.js +0 -24
  301. package/packages/core/dist/core/install/unified/context-helpers.js.map +1 -1
  302. package/packages/core/dist/core/install/unified/index.d.ts +1 -1
  303. package/packages/core/dist/core/install/unified/index.d.ts.map +1 -1
  304. package/packages/core/dist/core/install/unified/index.js +1 -1
  305. package/packages/core/dist/core/install/unified/index.js.map +1 -1
  306. package/packages/core/dist/core/install/unified/multi-context-pipeline.d.ts +6 -0
  307. package/packages/core/dist/core/install/unified/multi-context-pipeline.d.ts.map +1 -1
  308. package/packages/core/dist/core/install/unified/multi-context-pipeline.js +11 -4
  309. package/packages/core/dist/core/install/unified/multi-context-pipeline.js.map +1 -1
  310. package/packages/core/dist/core/install/unified/phases/conflicts.d.ts.map +1 -1
  311. package/packages/core/dist/core/install/unified/phases/conflicts.js +1 -1
  312. package/packages/core/dist/core/install/unified/phases/conflicts.js.map +1 -1
  313. package/packages/core/dist/core/install/unified/phases/execute.d.ts.map +1 -1
  314. package/packages/core/dist/core/install/unified/phases/execute.js +5 -5
  315. package/packages/core/dist/core/install/unified/phases/execute.js.map +1 -1
  316. package/packages/core/dist/core/install/unified/phases/load-package.js +3 -3
  317. package/packages/core/dist/core/install/unified/phases/load-package.js.map +1 -1
  318. package/packages/core/dist/core/install/unified/phases/report.js +1 -1
  319. package/packages/core/dist/core/install/unified/phases/report.js.map +1 -1
  320. package/packages/core/dist/core/install/unified/pipeline.d.ts.map +1 -1
  321. package/packages/core/dist/core/install/unified/pipeline.js +7 -10
  322. package/packages/core/dist/core/install/unified/pipeline.js.map +1 -1
  323. package/packages/core/dist/core/install/wave-resolver/content-root-cache.d.ts +24 -0
  324. package/packages/core/dist/core/install/wave-resolver/content-root-cache.d.ts.map +1 -0
  325. package/packages/core/dist/core/install/wave-resolver/content-root-cache.js +71 -0
  326. package/packages/core/dist/core/install/wave-resolver/content-root-cache.js.map +1 -0
  327. package/packages/core/dist/core/install/wave-resolver/context-builder.d.ts +39 -0
  328. package/packages/core/dist/core/install/wave-resolver/context-builder.d.ts.map +1 -0
  329. package/packages/core/dist/core/install/wave-resolver/context-builder.js +148 -0
  330. package/packages/core/dist/core/install/wave-resolver/context-builder.js.map +1 -0
  331. package/packages/core/dist/core/install/wave-resolver/fetcher.d.ts +49 -0
  332. package/packages/core/dist/core/install/wave-resolver/fetcher.d.ts.map +1 -0
  333. package/packages/core/dist/core/install/wave-resolver/fetcher.js +221 -0
  334. package/packages/core/dist/core/install/wave-resolver/fetcher.js.map +1 -0
  335. package/packages/core/dist/core/install/wave-resolver/index-updater.d.ts +23 -0
  336. package/packages/core/dist/core/install/wave-resolver/index-updater.d.ts.map +1 -0
  337. package/packages/core/dist/core/install/wave-resolver/index-updater.js +87 -0
  338. package/packages/core/dist/core/install/wave-resolver/index-updater.js.map +1 -0
  339. package/packages/core/dist/core/install/wave-resolver/index-write-collector.d.ts +101 -0
  340. package/packages/core/dist/core/install/wave-resolver/index-write-collector.d.ts.map +1 -0
  341. package/packages/core/dist/core/install/wave-resolver/index-write-collector.js +194 -0
  342. package/packages/core/dist/core/install/wave-resolver/index-write-collector.js.map +1 -0
  343. package/packages/core/dist/core/install/wave-resolver/index.d.ts +17 -0
  344. package/packages/core/dist/core/install/wave-resolver/index.d.ts.map +1 -0
  345. package/packages/core/dist/core/install/wave-resolver/index.js +16 -0
  346. package/packages/core/dist/core/install/wave-resolver/index.js.map +1 -0
  347. package/packages/core/dist/core/install/wave-resolver/manifest-reader.d.ts +34 -0
  348. package/packages/core/dist/core/install/wave-resolver/manifest-reader.d.ts.map +1 -0
  349. package/packages/core/dist/core/install/wave-resolver/manifest-reader.js +112 -0
  350. package/packages/core/dist/core/install/wave-resolver/manifest-reader.js.map +1 -0
  351. package/packages/core/dist/core/install/wave-resolver/types.d.ts +210 -0
  352. package/packages/core/dist/core/install/wave-resolver/types.d.ts.map +1 -0
  353. package/packages/core/dist/core/install/wave-resolver/types.js +6 -0
  354. package/packages/core/dist/core/install/wave-resolver/types.js.map +1 -0
  355. package/packages/core/dist/core/install/wave-resolver/version-solver.d.ts +65 -0
  356. package/packages/core/dist/core/install/wave-resolver/version-solver.d.ts.map +1 -0
  357. package/packages/core/dist/core/install/wave-resolver/version-solver.js +166 -0
  358. package/packages/core/dist/core/install/wave-resolver/version-solver.js.map +1 -0
  359. package/packages/core/dist/core/install/wave-resolver/wave-engine.d.ts +16 -0
  360. package/packages/core/dist/core/install/wave-resolver/wave-engine.d.ts.map +1 -0
  361. package/packages/core/dist/core/install/wave-resolver/wave-engine.js +337 -0
  362. package/packages/core/dist/core/install/wave-resolver/wave-engine.js.map +1 -0
  363. package/packages/core/dist/core/install/wave-resolver/wave-installer.d.ts +50 -0
  364. package/packages/core/dist/core/install/wave-resolver/wave-installer.d.ts.map +1 -0
  365. package/packages/core/dist/core/install/wave-resolver/wave-installer.js +246 -0
  366. package/packages/core/dist/core/install/wave-resolver/wave-installer.js.map +1 -0
  367. package/packages/core/dist/core/ports/buffered-output.d.ts +36 -0
  368. package/packages/core/dist/core/ports/buffered-output.d.ts.map +1 -0
  369. package/packages/core/dist/core/ports/buffered-output.js +89 -0
  370. package/packages/core/dist/core/ports/buffered-output.js.map +1 -0
  371. package/packages/core/dist/core/ports/resolve.d.ts +0 -13
  372. package/packages/core/dist/core/ports/resolve.d.ts.map +1 -1
  373. package/packages/core/dist/core/ports/resolve.js +0 -28
  374. package/packages/core/dist/core/ports/resolve.js.map +1 -1
  375. package/packages/core/dist/core/remove/removal-confirmation.d.ts +4 -1
  376. package/packages/core/dist/core/remove/removal-confirmation.d.ts.map +1 -1
  377. package/packages/core/dist/core/remove/removal-confirmation.js +5 -4
  378. package/packages/core/dist/core/remove/removal-confirmation.js.map +1 -1
  379. package/packages/core/dist/core/remove/remove-from-source-pipeline.d.ts.map +1 -1
  380. package/packages/core/dist/core/remove/remove-from-source-pipeline.js +1 -10
  381. package/packages/core/dist/core/remove/remove-from-source-pipeline.js.map +1 -1
  382. package/packages/core/dist/core/uninstall/uninstall-executor.js +1 -1
  383. package/packages/core/dist/core/uninstall/uninstall-executor.js.map +1 -1
  384. package/packages/core/dist/core/uninstall/uninstall-reporter.d.ts +2 -2
  385. package/packages/core/dist/core/uninstall/uninstall-reporter.d.ts.map +1 -1
  386. package/packages/core/dist/core/uninstall/uninstall-reporter.js +4 -4
  387. package/packages/core/dist/core/uninstall/uninstall-reporter.js.map +1 -1
  388. package/packages/core/dist/index.d.ts +1 -1
  389. package/packages/core/dist/index.d.ts.map +1 -1
  390. package/packages/core/dist/types/execution-context.d.ts +40 -10
  391. package/packages/core/dist/types/execution-context.d.ts.map +1 -1
  392. package/packages/core/dist/utils/concurrency-pool.d.ts +34 -0
  393. package/packages/core/dist/utils/concurrency-pool.d.ts.map +1 -0
  394. package/packages/core/dist/utils/concurrency-pool.js +58 -0
  395. package/packages/core/dist/utils/concurrency-pool.js.map +1 -0
  396. package/packages/core/dist/utils/plugin-naming.d.ts +11 -3
  397. package/packages/core/dist/utils/plugin-naming.d.ts.map +1 -1
  398. package/packages/core/dist/utils/plugin-naming.js +27 -7
  399. package/packages/core/dist/utils/plugin-naming.js.map +1 -1
  400. package/plans/wave-resolver.md +254 -0
  401. package/.claude/agents/essentials/code-simplifier.md +0 -52
  402. package/.claude/commands/essentials/cleanup.md +0 -1
  403. package/.claude/commands/essentials/review.md +0 -8
  404. package/.claude/commands/git/commit.md +0 -5
@@ -0,0 +1,254 @@
1
+ # Wave-Based BFS Dependency Resolver
2
+
3
+ ## Overview
4
+
5
+ Replace the dependency resolution pipeline with a new **wave-based BFS resolver** at `packages/core/src/core/wave-resolver/`. This module processes dependencies in breadth-first waves -- each wave batches all unresolved packages at the current frontier, fetches their metadata in parallel, discovers new dependencies, and repeats until the queue is empty.
6
+
7
+ The module handles all three source types (registry, git, path) in the wave loop, integrates fully with the existing orchestrator, and updates `openpackage.index.yml` as part of its output.
8
+
9
+ ---
10
+
11
+ ## Illustrative Example
12
+
13
+ ```
14
+ Start: read root openpackage.yml
15
+ └─ Queue: [ react@^18, typescript@^5 ]
16
+
17
+ Wave 1 — fetch packuments for queued names:
18
+ GET registry/react → resolves to react@18.3.1
19
+ GET registry/typescript → resolves to typescript@5.7.3
20
+
21
+ react@18.3.1 declares:
22
+ dependencies: { "loose-envify": "^1.1.0" }
23
+
24
+ typescript@5.7.3 declares:
25
+ dependencies: {} ← leaf, nothing to queue
26
+
27
+ └─ Queue: [ loose-envify@^1.1.0 ]
28
+
29
+ Wave 2 — fetch packuments for newly discovered names:
30
+ GET registry/loose-envify → resolves to loose-envify@1.4.0
31
+
32
+ loose-envify@1.4.0 declares:
33
+ dependencies: { "js-tokens": "^3.0.0 || ^4.0.0" }
34
+
35
+ └─ Queue: [ js-tokens@^3.0.0||^4.0.0 ]
36
+
37
+ Wave 3:
38
+ GET registry/js-tokens → resolves to js-tokens@4.0.0
39
+
40
+ js-tokens@4.0.0 declares:
41
+ dependencies: {} ← leaf
42
+
43
+ └─ Queue empty → resolution complete
44
+ ```
45
+
46
+ ---
47
+
48
+ ## Module Structure
49
+
50
+ New directory: `packages/core/src/core/wave-resolver/`
51
+
52
+ | File | Responsibility |
53
+ |---|---|
54
+ | `types.ts` | All types: `WaveNode`, `WaveGraph`, `WaveResult`, `FetchResult`, `PackageFetcher` interface, `WaveResolverOptions` |
55
+ | `manifest-reader.ts` | Read `openpackage.yml` from any source (thin wrapper reusing existing `resolution/manifest-reader.ts` utilities) |
56
+ | `fetcher.ts` | Per-source-type metadata fetcher (registry: local+remote version lookup; git: clone/cache; path: stat+load). All fetchers implement a common `PackageFetcher` interface. |
57
+ | `version-solver.ts` | Given all accumulated constraints per package name, pick the best version. Reuses `semver` + existing `version-ranges.ts` utilities. |
58
+ | `wave-engine.ts` | The core BFS loop: reads root manifest, enqueues direct deps, runs waves. Each wave calls `fetcher` in parallel, calls `version-solver`, reads child manifests, enqueues new deps. Produces a `WaveGraph`. |
59
+ | `context-builder.ts` | Converts `WaveGraph` nodes into `InstallationContext[]` for the existing unified pipeline. |
60
+ | `index-updater.ts` | After successful install, updates `openpackage.index.yml` with resolved versions, sources, and dependencies. |
61
+ | `index.ts` | Public API: `resolveWave(rootManifestPath, options): WaveResult` |
62
+
63
+ ---
64
+
65
+ ## Core Algorithm (`wave-engine.ts`)
66
+
67
+ ```
68
+ function resolveWave(rootManifest, options):
69
+ // 1. Read root openpackage.yml
70
+ rootDeps = extractDependencies(rootManifest)
71
+
72
+ // 2. Initialize state
73
+ resolved = Map<string, WaveNode>() // key = canonical dep ID
74
+ queue = [...rootDeps] // frontier for next wave
75
+ visiting = Set<string>() // cycle detection
76
+ waveNumber = 0
77
+
78
+ // 3. Wave loop
79
+ while queue.length > 0:
80
+ waveNumber++
81
+ currentWave = dequeueAll(queue)
82
+
83
+ // Deduplicate: skip already-resolved or in-flight
84
+ toFetch = currentWave.filter(dep =>
85
+ !resolved.has(dep.id) && !visiting.has(dep.id)
86
+ )
87
+ for dep in toFetch: visiting.add(dep.id)
88
+
89
+ // 4. Parallel fetch all packuments in this wave
90
+ // - Registry deps: resolveRegistryVersion() + loadPackageMetadata()
91
+ // - Git deps: loadPackageFromGit() (uses cache)
92
+ // - Path deps: loadPackageFromPath()
93
+ fetchResults = await Promise.all(
94
+ toFetch.map(dep => fetcher.fetch(dep))
95
+ )
96
+
97
+ // 5. For each fetched result:
98
+ for result in fetchResults:
99
+ // a. Version solve (for registry: pick best version from constraints)
100
+ resolvedVersion = versionSolver.solve(result)
101
+
102
+ // b. Record in resolved map
103
+ node = createWaveNode(result, resolvedVersion)
104
+ resolved.set(node.id, node)
105
+ visiting.delete(node.id)
106
+
107
+ // c. Read child manifest (openpackage.yml from content root)
108
+ childDeps = readChildDependencies(node.contentRoot)
109
+
110
+ // d. Enqueue new deps not yet resolved
111
+ for childDep in childDeps:
112
+ if !resolved.has(childDep.id):
113
+ queue.push(childDep)
114
+ // Record parent->child edge
115
+ node.children.push(childDep.id)
116
+
117
+ // 6. Compute topological install order (leaves first)
118
+ installOrder = topologicalSort(resolved)
119
+
120
+ return { nodes: resolved, installOrder, waves: waveNumber }
121
+ ```
122
+
123
+ ---
124
+
125
+ ## Key Design Decisions
126
+
127
+ ### 1. Source-Specific Fetcher Strategies (`fetcher.ts`)
128
+
129
+ A `PackageFetcher` interface with three implementations:
130
+
131
+ - **`RegistryFetcher`**: Uses existing `resolveCandidateVersionsForInstall()` + `selectInstallVersionUnified()` for local-first-with-remote-fallback version resolution. Loads package content root via `resolvePackageContentRoot()`. If not locally available, calls `pullPackageFromRemote()`.
132
+
133
+ - **`GitFetcher`**: Uses existing `loadPackageFromGit()` with git cache. Returns content root + manifest. Uses `ensureContentRoot()` from `content-root-cache.ts` for dedup within a run.
134
+
135
+ - **`PathFetcher`**: Uses existing `loadPackageFromPath()`. Returns content root + manifest.
136
+
137
+ Each returns a `FetchResult` with: `name`, `version`, `contentRoot`, `sourceType`, `metadata (PackageYml)`, `childDependencies[]`.
138
+
139
+ ### 2. Version Constraint Accumulation
140
+
141
+ As waves progress, the same package name may appear from multiple parents with different version constraints. The `version-solver.ts` accumulates all constraints per package name in a `Map<string, string[]>` and finds the highest satisfying version across all constraints (reusing `semver.maxSatisfying` with `includePrerelease: true`).
142
+
143
+ If constraints are incompatible, it follows the existing conflict handling: interactive prompt (if available) or `--force` to pick latest.
144
+
145
+ ### 3. Canonical Dependency ID
146
+
147
+ Each dependency gets a canonical ID for deduplication:
148
+ - Registry: `registry:${normalizedName}`
149
+ - Git: `git:${urlHash}:${ref||'HEAD'}:${resourcePath||''}`
150
+ - Path: `path:${absolutePath}`
151
+
152
+ This reuses the logic from `resolution/id-generator.ts`.
153
+
154
+ ### 4. Wave Parallelism
155
+
156
+ Within each wave, all fetches run in parallel via `Promise.all()`. This is the key efficiency gain over the current serial DFS: if wave 1 has 10 registry deps, all 10 are fetched concurrently.
157
+
158
+ Git clones within a wave also run in parallel (the git cache prevents duplicate clones for the same URL).
159
+
160
+ ### 5. No Depth Limit
161
+
162
+ The BFS runs until the queue is empty (all leaf nodes have been resolved). There is no max depth cutoff -- this guarantees completeness and avoids silently dropping real dependencies.
163
+
164
+ Termination is guaranteed by:
165
+ - **Cycle detection**: The `visiting` set prevents infinite loops from circular dependencies. When a cycle is detected, the cycle-causing edge is skipped and a warning is emitted. This is the only case where a dependency is not fully traversed.
166
+ - **Safety valve (node count limit)**: A generous upper bound on total resolved nodes (e.g., 10,000) as a sanity check against pathological graphs or bugs. This is a hard error (not a silent skip) and in practice should never be hit by real dependency trees.
167
+
168
+ The `waveNumber` is tracked for diagnostic/logging purposes but does not gate resolution.
169
+
170
+ ### 6. openpackage.index.yml Updates (`index-updater.ts`)
171
+
172
+ After resolution, the `index-updater` will:
173
+ - Read existing `openpackage.index.yml` via `readWorkspaceIndex()`
174
+ - For each resolved node, update/create the entry with `path`, `version`, `dependencies[]`
175
+ - Write back via `writeWorkspaceIndex()`
176
+
177
+ This runs after the installation pipeline (not during resolution), ensuring the index reflects actually-installed packages.
178
+
179
+ ---
180
+
181
+ ## Integration Points
182
+
183
+ ### A. Orchestrator Integration
184
+
185
+ In `orchestrator.ts`, the current flow for bulk install (`opkg i`) and single-package-with-deps calls either:
186
+ - `DependencyResolutionExecutor` (newer system)
187
+ - `resolveDependencies()` (legacy resolver, via `resolve-dependencies.ts` phase)
188
+
189
+ The new module will be wired as follows:
190
+
191
+ 1. **Bulk install** (`runRecursiveBulkInstall`): Replace `DependencyResolutionExecutor` with `resolveWave()` + `buildInstallContexts()` + existing `runUnifiedInstallPipeline()`.
192
+
193
+ 2. **Single package with deps** (`installDependenciesOnly`): Replace `DependencyResolutionExecutor` with `resolveWave()` using `rootManifestPath` as the root.
194
+
195
+ 3. **Resolve-dependencies phase** (`unified/phases/resolve-dependencies.ts`): Replace `resolveDependencies()` call with `resolveWave()` for the target package's manifest.
196
+
197
+ ### B. Reused Existing Code
198
+
199
+ | Existing Module | What's Reused |
200
+ |---|---|
201
+ | `version-ranges.ts` | `selectVersionWithWipPolicy`, `findBestVersion`, `parseVersionRange` |
202
+ | `version-selection.ts` | `selectInstallVersionUnified` (for registry version resolution) |
203
+ | `local-source-resolution.ts` | `resolveCandidateVersionsForInstall`, `resolvePackageContentRoot` |
204
+ | `resolution/id-generator.ts` | `computeDependencyId` |
205
+ | `resolution/manifest-reader.ts` | `readManifestAtPath`, `extractDependencies`, `getManifestPathAtContentRoot` |
206
+ | `resolution/content-root-cache.ts` | `ensureContentRoot`, `getCachedContentRoot` |
207
+ | `git-package-loader.ts` | `loadPackageFromGit` |
208
+ | `path-package-loader.ts` | `loadPackageFromPath` |
209
+ | `sources/registry-source.ts` | `RegistrySourceLoader.load()` (for loading after resolution) |
210
+ | `workspace-index-yml.ts` | `readWorkspaceIndex`, `writeWorkspaceIndex` |
211
+ | `unified/pipeline.ts` | `runUnifiedInstallPipeline` (for installing each resolved package) |
212
+
213
+ ### C. What Gets Deprecated / Removed
214
+
215
+ | Module | Status |
216
+ |---|---|
217
+ | `dependency-resolver/resolver.ts` | Deprecated (already marked). All callers switch to wave resolver. |
218
+ | `resolution/graph-builder.ts` | Replaced by `wave-engine.ts` |
219
+ | `resolution/executor.ts` | Replaced by wave resolver + context builder |
220
+ | `resolution/package-loader.ts` | Replaced by `fetcher.ts` (wave-integrated loading) |
221
+ | `resolution/version-solver.ts` | Replaced by `wave-resolver/version-solver.ts` |
222
+ | `resolution/installation-planner.ts` | Replaced by `context-builder.ts` |
223
+
224
+ These won't be deleted immediately -- they'll be marked `@deprecated` and callers will be migrated in this same PR.
225
+
226
+ ---
227
+
228
+ ## Edge Cases Handled
229
+
230
+ - **Circular dependencies**: Detected via the `visiting` set. Cycles are recorded and the cycle-causing edge is skipped (same as current behavior).
231
+ - **No depth limit**: The BFS runs to completion. A safety-valve node count limit (e.g., 10,000) guards against pathological graphs but should never be hit in practice.
232
+ - **Mixed source types in same wave**: A wave can contain registry, git, and path deps simultaneously. Each gets routed to the appropriate fetcher.
233
+ - **Git marketplace deps**: If a git dep points to a marketplace, it's flagged and excluded from recursive dep resolution (consistent with current behavior).
234
+ - **Version conflicts**: Accumulated per package name across waves. Interactive resolution or force-latest when constraints are incompatible.
235
+ - **Remote fallback**: Registry fetcher follows existing local-first-with-remote-fallback policy per the spec in `specs/install/version-resolution.md`.
236
+ - **Dev dependencies**: Only included at depth 0 (root level), consistent with current behavior.
237
+ - **Already-installed packages**: Checked against `openpackage.index.yml` to skip re-installation (unless `--force`).
238
+
239
+ ---
240
+
241
+ ## Implementation Tasks
242
+
243
+ 1. Create `wave-resolver/types.ts` -- Define `WaveNode`, `WaveGraph`, `WaveResult`, `FetchResult`, `PackageFetcher` interface, `WaveResolverOptions`
244
+ 2. Create `wave-resolver/fetcher.ts` -- Implement `RegistryFetcher`, `GitFetcher`, `PathFetcher` using existing loaders
245
+ 3. Create `wave-resolver/version-solver.ts` -- Constraint accumulation + resolution (port logic from existing `resolution/version-solver.ts` + legacy resolver)
246
+ 4. Create `wave-resolver/manifest-reader.ts` -- Thin wrapper around existing `resolution/manifest-reader.ts`
247
+ 5. Create `wave-resolver/wave-engine.ts` -- Core BFS loop
248
+ 6. Create `wave-resolver/context-builder.ts` -- Convert `WaveGraph` to `InstallationContext[]`
249
+ 7. Create `wave-resolver/index-updater.ts` -- Update `openpackage.index.yml` post-install
250
+ 8. Create `wave-resolver/index.ts` -- Public API
251
+ 9. Wire into `orchestrator.ts` -- Replace `DependencyResolutionExecutor` usage and `resolveDependencies` calls
252
+ 10. Wire into `unified/phases/resolve-dependencies.ts` -- Replace legacy resolver call
253
+ 11. Deprecate old modules -- Add `@deprecated` annotations
254
+ 12. Test -- Run existing test suite, add wave-specific tests
@@ -1,52 +0,0 @@
1
- ---
2
- name: code-simplifier
3
- description: Simplifies and refines code for clarity, consistency, and maintainability while preserving all functionality. Focuses on recently modified code unless instructed otherwise.
4
- model: opus
5
- ---
6
-
7
- You are an expert code simplification specialist focused on enhancing code clarity, consistency, and maintainability while preserving exact functionality. Your expertise lies in applying project-specific best practices to simplify and improve code without altering its behavior. You prioritize readable, explicit code over overly compact solutions. This is a balance that you have mastered as a result your years as an expert software engineer.
8
-
9
- You will analyze recently modified code and apply refinements that:
10
-
11
- 1. **Preserve Functionality**: Never change what the code does - only how it does it. All original features, outputs, and behaviors must remain intact.
12
-
13
- 2. **Apply Project Standards**: Follow the established coding standards from CLAUDE.md including:
14
-
15
- - Use ES modules with proper import sorting and extensions
16
- - Prefer `function` keyword over arrow functions
17
- - Use explicit return type annotations for top-level functions
18
- - Follow proper React component patterns with explicit Props types
19
- - Use proper error handling patterns (avoid try/catch when possible)
20
- - Maintain consistent naming conventions
21
-
22
- 3. **Enhance Clarity**: Simplify code structure by:
23
-
24
- - Reducing unnecessary complexity and nesting
25
- - Eliminating redundant code and abstractions
26
- - Improving readability through clear variable and function names
27
- - Consolidating related logic
28
- - Removing unnecessary comments that describe obvious code
29
- - IMPORTANT: Avoid nested ternary operators - prefer switch statements or if/else chains for multiple conditions
30
- - Choose clarity over brevity - explicit code is often better than overly compact code
31
-
32
- 4. **Maintain Balance**: Avoid over-simplification that could:
33
-
34
- - Reduce code clarity or maintainability
35
- - Create overly clever solutions that are hard to understand
36
- - Combine too many concerns into single functions or components
37
- - Remove helpful abstractions that improve code organization
38
- - Prioritize "fewer lines" over readability (e.g., nested ternaries, dense one-liners)
39
- - Make the code harder to debug or extend
40
-
41
- 5. **Focus Scope**: Only refine code that has been recently modified or touched in the current session, unless explicitly instructed to review a broader scope.
42
-
43
- Your refinement process:
44
-
45
- 1. Identify the recently modified code sections
46
- 2. Analyze for opportunities to improve elegance and consistency
47
- 3. Apply project-specific best practices and coding standards
48
- 4. Ensure all functionality remains unchanged
49
- 5. Verify the refined code is simpler and more maintainable
50
- 6. Document only significant changes that affect understanding
51
-
52
- You operate autonomously and proactively, refining code immediately after it's written or modified without requiring explicit requests. Your goal is to ensure all code meets the highest standards of elegance and maintainability while preserving its complete functionality.
@@ -1 +0,0 @@
1
- Simplify, better organize the code, and eliminate any redundancy, inefficiencies, and roundabout logic to best streamline the code and logic.
@@ -1,8 +0,0 @@
1
- You are in code review mode. Focus on:
2
-
3
- - Code quality and best practices
4
- - Potential bugs and edge cases
5
- - Performance implications
6
- - Security considerations
7
-
8
- Provide constructive feedback without making direct changes.
@@ -1,5 +0,0 @@
1
- You are tasked to perform git commit on the latest uncommited changes accordingly:
2
-
3
- 1. Read uncommited changes via `git` commmand
4
- 2. Summarize what was changed, how it fits into the codebase as a whole
5
- 3. Use the `git` command to commit changes