autohand-cli 0.8.3 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (546) hide show
  1. package/README.md +191 -74
  2. package/dist/{AgentRegistry-ODDXPAFR.js → AgentRegistry-GOV7FN2O.js} +2 -2
  3. package/dist/AgentRegistry-J2C6JBZ3.cjs +10 -0
  4. package/dist/{AutomodeManager-EOVHGRPP.js → AutomodeManager-APLLPEYJ.js} +31 -17
  5. package/dist/{AutomodeManager-6ATBE7Q5.cjs → AutomodeManager-MPSXT2RH.cjs} +38 -24
  6. package/dist/CommunitySkillsCache-22BB3J6H.cjs +8 -0
  7. package/dist/{CommunitySkillsCache-QLE57BN5.js → CommunitySkillsCache-ZACDPD4J.js} +2 -2
  8. package/dist/GitHubRegistryFetcher-CYJLF2XL.cjs +7 -0
  9. package/dist/{GitHubRegistryFetcher-NT5GFZXS.js → GitHubRegistryFetcher-J2BWPXJF.js} +1 -1
  10. package/dist/{HookManager-B2F35M27.js → HookManager-2S6AHOC3.js} +1 -1
  11. package/dist/{HookManager-PFAFE3FK.cjs → HookManager-TVEQI5ZU.cjs} +2 -2
  12. package/dist/{ImportWizard-OHRKBANZ.js → ImportWizard-AEBMAKXE.js} +33 -9
  13. package/dist/{ImportWizard-CJRZPPHL.cjs → ImportWizard-AF2XL6DS.cjs} +37 -13
  14. package/dist/LearnAdvisor-KKEQ5QCV.js +9 -0
  15. package/dist/LearnAdvisor-Q7RAYLPF.cjs +9 -0
  16. package/dist/{McpClientManager-NQ3EW2IF.cjs → McpClientManager-BNSKLHIN.cjs} +2 -2
  17. package/dist/{McpClientManager-VBIMGKXU.js → McpClientManager-SL35BR24.js} +1 -1
  18. package/dist/MemoryManager-PMNAEZMB.cjs +8 -0
  19. package/dist/{MemoryManager-2LAT7IHS.js → MemoryManager-QZRLTUB5.js} +2 -2
  20. package/dist/NVIDIAProvider-C3FWQOBZ.cjs +14 -0
  21. package/dist/NVIDIAProvider-SJPY3ONR.js +14 -0
  22. package/dist/{PermissionManager-7NQHRCHY.js → PermissionManager-MT7KBNNR.js} +3 -3
  23. package/dist/PermissionManager-URCNP5EC.cjs +11 -0
  24. package/dist/{ProjectProfiler-UG42W6WD.cjs → ProjectProfiler-CDAE7ECW.cjs} +1 -0
  25. package/dist/{ProjectProfiler-P4QJQWWA.js → ProjectProfiler-NZTJDRHD.js} +1 -0
  26. package/dist/ProviderFactory-56N3ECE4.cjs +12 -0
  27. package/dist/{ProviderFactory-2IYJ5OPW.js → ProviderFactory-RB4RVAF6.js} +4 -1
  28. package/dist/SessionManager-2IZGWASQ.cjs +10 -0
  29. package/dist/{SessionManager-4U4JFQ3C.js → SessionManager-554PHVPC.js} +2 -2
  30. package/dist/SkillsRegistry-GMRVONOQ.cjs +9 -0
  31. package/dist/{SkillsRegistry-RFEINXRT.js → SkillsRegistry-NHHMIUYJ.js} +2 -2
  32. package/dist/SubAgent-4GOR2FIJ.js +13 -0
  33. package/dist/SubAgent-ZJMDH4FI.cjs +13 -0
  34. package/dist/{SyncApiClient-B5RT2ECG.js → SyncApiClient-G3FM65IV.js} +1 -1
  35. package/dist/SyncApiClient-ODBDECOG.cjs +11 -0
  36. package/dist/about-3USFSGOH.js +15 -0
  37. package/dist/about-QR52U5DD.cjs +15 -0
  38. package/dist/acp-5Y2W6OZP.js +1556 -0
  39. package/dist/acp-GSYE75OB.cjs +1556 -0
  40. package/dist/actionExecutor-KHUU3Z3Q.cjs +28 -0
  41. package/dist/actionExecutor-PLQJZLZV.js +28 -0
  42. package/dist/add-dir-BTAD5OZS.cjs +11 -0
  43. package/dist/{add-dir-TUJM3PG5.js → add-dir-HCERJDBR.js} +3 -2
  44. package/dist/agent-B3EVT7NN.cjs +126 -0
  45. package/dist/agent-SATQ3WZ3.js +126 -0
  46. package/dist/agents/builtin/code-cleaner.md +1 -1
  47. package/dist/agents/builtin/docs-writer.md +1 -1
  48. package/dist/agents/builtin/researcher.md +2 -2
  49. package/dist/agents/builtin/reviewer.md +1 -1
  50. package/dist/agents/builtin/tester.md +1 -1
  51. package/dist/agents/builtin/todo-resolver.md +1 -1
  52. package/dist/agents-44CRJGM7.cjs +18 -0
  53. package/dist/agents-NN4ZAJ7R.js +18 -0
  54. package/dist/agents-new-6D6G4QS6.cjs +17 -0
  55. package/dist/agents-new-7GAQ25EK.js +17 -0
  56. package/dist/{autoSkill-LQEVQFIH.js → autoSkill-66PKCYTW.js} +2 -2
  57. package/dist/autoSkill-VQLGBELN.cjs +20 -0
  58. package/dist/automode-45DWV4TN.cjs +10 -0
  59. package/dist/{automode-R6P3VHLS.js → automode-BUF3VGXU.js} +2 -2
  60. package/dist/browserToolBridge-BXRQB4B4.cjs +58 -0
  61. package/dist/browserToolBridge-F5N66PE7.js +58 -0
  62. package/dist/chrome-Q2U73HZB.cjs +50 -0
  63. package/dist/chrome-Q54OALOK.cjs +21 -0
  64. package/dist/chrome-Y3T7EIHG.js +50 -0
  65. package/dist/chrome-ZNJ46OYW.js +21 -0
  66. package/dist/chromeSkill-53TH55PM.js +105 -0
  67. package/dist/chromeSkill-THW7N4IY.cjs +105 -0
  68. package/dist/{chunk-HXGBSJL5.cjs → chunk-22SCR3EV.cjs} +2 -2
  69. package/dist/chunk-26G7YGOW.js +367 -0
  70. package/dist/{chunk-3L53OA4E.cjs → chunk-2ESQR35E.cjs} +10 -10
  71. package/dist/chunk-2H5O745H.js +63 -0
  72. package/dist/{chunk-ULDM2SNB.js → chunk-2IW5YFJ4.js} +48 -47
  73. package/dist/{chunk-U55TWFJI.cjs → chunk-2VHB43IX.cjs} +24 -6
  74. package/dist/chunk-3EDDDZS2.cjs +5 -0
  75. package/dist/{chunk-X5VSP65C.cjs → chunk-3ICORF7M.cjs} +4 -4
  76. package/dist/chunk-3OF56EMA.cjs +197 -0
  77. package/dist/chunk-3UC6DMFI.cjs +93 -0
  78. package/dist/{chunk-64H4FRM3.cjs → chunk-3UHRCHKB.cjs} +32 -34
  79. package/dist/{chunk-JCLYQ2JC.js → chunk-3ZOOH44N.js} +12 -6
  80. package/dist/{chunk-TUD3Z3BD.js → chunk-44ZWOBTI.js} +136 -55
  81. package/dist/chunk-4567QNRB.js +444 -0
  82. package/dist/chunk-45CHNQM6.cjs +517 -0
  83. package/dist/chunk-46MTALKD.js +44 -0
  84. package/dist/{chunk-WHE2SWHU.js → chunk-4E7SHPNQ.js} +2 -2
  85. package/dist/chunk-4LMUDS2K.js +124 -0
  86. package/dist/{chunk-W7RYQJLO.cjs → chunk-4XFHP2SN.cjs} +46 -15
  87. package/dist/chunk-4XVLNOFA.js +360 -0
  88. package/dist/{chunk-GBHDROGL.js → chunk-575PXZX7.js} +16 -4
  89. package/dist/chunk-5A7ZL64N.js +139 -0
  90. package/dist/chunk-5GCQ5UMV.cjs +85 -0
  91. package/dist/chunk-5JTTM5SC.js +59 -0
  92. package/dist/{chunk-IETRBBMP.cjs → chunk-5K3CDSWZ.cjs} +108 -31
  93. package/dist/{chunk-KLWJIPU2.cjs → chunk-5SFV2NCY.cjs} +20 -16
  94. package/dist/chunk-5ZNYX4VH.cjs +71 -0
  95. package/dist/{chunk-A4IJHHV7.cjs → chunk-63ANVAOJ.cjs} +52 -11
  96. package/dist/{chunk-MYISNQH4.js → chunk-65LRPW5W.js} +1 -1
  97. package/dist/chunk-6AYJCDTA.js +360 -0
  98. package/dist/{chunk-X2MSVKDV.js → chunk-6HF6XSCC.js} +2 -2
  99. package/dist/{chunk-AEJH23FO.cjs → chunk-6JWCGQJU.cjs} +6 -6
  100. package/dist/chunk-6OECOAK5.cjs +360 -0
  101. package/dist/chunk-6R25D2H5.js +121 -0
  102. package/dist/chunk-7DJJGKM6.js +77 -0
  103. package/dist/{chunk-VG34MG2U.js → chunk-7IRQ7JEH.js} +9 -6
  104. package/dist/chunk-7MY4JHER.js +27 -0
  105. package/dist/chunk-7PJKTSRN.js +152 -0
  106. package/dist/{chunk-SKYG33B2.cjs → chunk-7PT646AL.cjs} +3 -3
  107. package/dist/chunk-7WAUCLLQ.js +229 -0
  108. package/dist/{chunk-U46VYPLR.cjs → chunk-7XTUL7ZD.cjs} +9 -9
  109. package/dist/chunk-AE2ILW25.cjs +152 -0
  110. package/dist/{chunk-T2M64VHA.cjs → chunk-AOKXYGBQ.cjs} +61 -41
  111. package/dist/chunk-AQ5PVHOC.cjs +113 -0
  112. package/dist/{chunk-N2BLVUPM.cjs → chunk-AZ47LKD5.cjs} +3 -3
  113. package/dist/chunk-B4HSNOIH.cjs +354 -0
  114. package/dist/chunk-B76FJKEJ.cjs +184 -0
  115. package/dist/chunk-BP37FVBM.js +85 -0
  116. package/dist/chunk-BQU3HAE7.js +21 -0
  117. package/dist/chunk-BYE7RQFZ.cjs +121 -0
  118. package/dist/chunk-C46B72VK.js +1034 -0
  119. package/dist/{chunk-HIVRCQS2.js → chunk-C5QIQQ37.js} +56 -25
  120. package/dist/chunk-CCIDL4SA.js +19931 -0
  121. package/dist/{chunk-XVUHNWMX.js → chunk-CECH6QQP.js} +17 -19
  122. package/dist/chunk-CFAWTLSC.js +13 -0
  123. package/dist/{chunk-ZYQMLKOK.cjs → chunk-CK4HAHVY.cjs} +212 -70
  124. package/dist/chunk-CO2AADYU.cjs +360 -0
  125. package/dist/chunk-CRTCZ4WL.cjs +19931 -0
  126. package/dist/chunk-CSTUTDTH.js +75 -0
  127. package/dist/{chunk-K2C56QGS.cjs → chunk-D546G7DA.cjs} +1650 -479
  128. package/dist/{chunk-CNBKZEX5.cjs → chunk-DA7NBAJK.cjs} +49 -17
  129. package/dist/{chunk-G4CAKI3V.js → chunk-DGBPWODD.js} +7 -2
  130. package/dist/chunk-DHUQZ53B.cjs +29 -0
  131. package/dist/{chunk-RGR6ME5J.cjs → chunk-DI57A4BX.cjs} +25 -28
  132. package/dist/{chunk-5K6NGAVM.js → chunk-DNSD7DVJ.js} +67 -52
  133. package/dist/{chunk-RDF37HKB.cjs → chunk-DSSCERHI.cjs} +3 -2
  134. package/dist/{chunk-NAJ4IZKD.cjs → chunk-EA2MS25U.cjs} +8 -6
  135. package/dist/{chunk-SJAVBCOA.js → chunk-EEHWALXA.js} +94 -3
  136. package/dist/chunk-ES2HJQ4N.js +37 -0
  137. package/dist/{chunk-G27PQQFD.js → chunk-EYHKL4QC.js} +1 -1
  138. package/dist/{chunk-SV2WA57F.js → chunk-FBQJZKFX.js} +38 -15
  139. package/dist/chunk-FFBDRUO5.cjs +59 -0
  140. package/dist/{chunk-N7LI55V4.js → chunk-FFHSCM5M.js} +15 -8
  141. package/dist/{chunk-SAHBLB3E.js → chunk-FP46B4X3.js} +208 -3
  142. package/dist/chunk-FQVG6ZHF.js +197 -0
  143. package/dist/{chunk-J2GSFVUV.cjs → chunk-GAOPJ5S3.cjs} +74 -59
  144. package/dist/{chunk-S52YW5ZQ.js → chunk-GNBBIAMD.js} +16 -19
  145. package/dist/chunk-GSDV75A5.js +715 -0
  146. package/dist/chunk-GWY26SUD.cjs +63 -0
  147. package/dist/{chunk-TUAITHWL.js → chunk-H426KOGY.js} +2 -1
  148. package/dist/{chunk-EZMINVLU.js → chunk-H4D2Q2AL.js} +5 -2
  149. package/dist/chunk-HC2Q6A3E.cjs +4967 -0
  150. package/dist/{chunk-3WVJEL7K.cjs → chunk-HDK2EHVH.cjs} +3 -1
  151. package/dist/{chunk-5IXII4HX.cjs → chunk-HG3ZASBH.cjs} +23 -16
  152. package/dist/chunk-HK5A54AV.cjs +280 -0
  153. package/dist/{chunk-LQGVEP3E.js → chunk-HQUSEWT4.js} +45 -13
  154. package/dist/chunk-HSWWM6AM.js +2340 -0
  155. package/dist/chunk-HTU4W3GB.js +183 -0
  156. package/dist/{chunk-HLHTG5ZU.cjs → chunk-HVCIB4SW.cjs} +14 -12
  157. package/dist/chunk-HXHE2KAO.js +385 -0
  158. package/dist/{chunk-LJFUXC56.cjs → chunk-HXQREVTA.cjs} +9 -6
  159. package/dist/{chunk-SLQAYV3W.js → chunk-HZWU6IO3.js} +11 -2
  160. package/dist/chunk-I2ZK3AOD.js +866 -0
  161. package/dist/chunk-IEPLQ47J.js +719 -0
  162. package/dist/chunk-J5HE6CUM.cjs +124 -0
  163. package/dist/{chunk-LIEXWM2M.js → chunk-JAQO6XDB.js} +19 -1
  164. package/dist/chunk-JB3JCYBJ.js +113 -0
  165. package/dist/chunk-JCUHCH37.cjs +247 -0
  166. package/dist/{chunk-FPHU2ES6.cjs → chunk-JM3ZTQUK.cjs} +19 -9
  167. package/dist/{chunk-NDMIPTV4.js → chunk-JMJRFSNJ.js} +8 -3
  168. package/dist/{chunk-ZLSGXMGQ.js → chunk-JMN3GZU6.js} +2 -0
  169. package/dist/chunk-JPFRI4L4.js +4967 -0
  170. package/dist/{chunk-BVKXEQVG.cjs → chunk-JV5HVCHU.cjs} +22 -10
  171. package/dist/chunk-KA2U6MY2.js +388 -0
  172. package/dist/{chunk-SEKD5FH3.cjs → chunk-KASXKDF2.cjs} +8 -3
  173. package/dist/chunk-KJ26T7GM.cjs +367 -0
  174. package/dist/chunk-KM7R5YPS.cjs +385 -0
  175. package/dist/{chunk-MBBY4ZIK.js → chunk-KMP6Y3LJ.js} +4 -1
  176. package/dist/chunk-KWXGDSYT.js +184 -0
  177. package/dist/{chunk-C5IJIM2V.cjs → chunk-L46OUKW5.cjs} +68 -37
  178. package/dist/{chunk-6UJMCWRY.js → chunk-L6OH44HL.js} +19 -9
  179. package/dist/chunk-LANGD5CO.js +280 -0
  180. package/dist/{chunk-APIXPPMT.js → chunk-LEZEWKPA.js} +1004 -39
  181. package/dist/{chunk-ULQ6MDSJ.cjs → chunk-LFDPTJYF.cjs} +43 -35
  182. package/dist/chunk-LJD7KR3L.cjs +44 -0
  183. package/dist/{chunk-NCC6ETZS.js → chunk-LUMV3DB2.js} +41 -33
  184. package/dist/{chunk-QXH5RCFI.js → chunk-M5DK524Z.js} +2 -2
  185. package/dist/chunk-M7B7RRBK.cjs +1034 -0
  186. package/dist/chunk-MANJ67D3.js +3897 -0
  187. package/dist/{chunk-HPHJ73GU.cjs → chunk-MGNXABSU.cjs} +9 -9
  188. package/dist/{chunk-6ZCULLCA.js → chunk-MMKZSJUN.js} +1 -1
  189. package/dist/{chunk-DVUHHH3B.cjs → chunk-MQQH4XQH.cjs} +4 -4
  190. package/dist/chunk-MUNUUFU7.cjs +21 -0
  191. package/dist/{chunk-DVZOENQ7.cjs → chunk-MZN6JBRZ.cjs} +9 -4
  192. package/dist/{chunk-OOKY3HPZ.js → chunk-NB6M6ESM.js} +50 -9
  193. package/dist/{chunk-BYONM7UM.js → chunk-NBGOIFKP.js} +265 -18
  194. package/dist/chunk-NHWHEW7M.cjs +75 -0
  195. package/dist/chunk-NQZH5CR2.cjs +468 -0
  196. package/dist/{chunk-EGPXJERY.cjs → chunk-NV6LCD2I.cjs} +119 -28
  197. package/dist/chunk-NVATU4V6.cjs +44 -0
  198. package/dist/{chunk-YZXUDM5X.js → chunk-NZ3ZWLUW.js} +204 -62
  199. package/dist/chunk-NZ7GCK7Y.cjs +92 -0
  200. package/dist/{chunk-VEKDGU2Q.cjs → chunk-NZQFKXM3.cjs} +49 -25
  201. package/dist/chunk-O5GI6SR3.js +59 -0
  202. package/dist/{chunk-56SWIDEL.cjs → chunk-OCATAKXV.cjs} +57 -56
  203. package/dist/{chunk-SKV2F3NM.js → chunk-OIGYWOL6.js} +1 -1
  204. package/dist/{chunk-IFFXSTOM.cjs → chunk-ONVYXTUT.cjs} +3 -3
  205. package/dist/chunk-OR67YXQK.cjs +13 -0
  206. package/dist/chunk-OV3T5MUH.cjs +715 -0
  207. package/dist/{chunk-OHUZKDGX.js → chunk-P4FUTSVK.js} +3 -3
  208. package/dist/chunk-P6SLT2F4.cjs +139 -0
  209. package/dist/{chunk-TNZRZQ7Q.js → chunk-PB7W7R72.js} +3 -78
  210. package/dist/chunk-PCM3N3CL.cjs +37 -0
  211. package/dist/{chunk-2AA5MFES.js → chunk-PGFLPURU.js} +8 -5
  212. package/dist/{chunk-DJDE4DTT.cjs → chunk-PIXQ2AVM.cjs} +25 -19
  213. package/dist/chunk-PNIAIOMZ.cjs +229 -0
  214. package/dist/{chunk-HTLINWX6.cjs → chunk-PQBYFEBL.cjs} +16 -13
  215. package/dist/{chunk-22D2CNTP.cjs → chunk-PSAH4ZQB.cjs} +5 -2
  216. package/dist/{chunk-3VTAFAL2.js → chunk-PTTZI4QZ.js} +16 -12
  217. package/dist/{chunk-WPVWQSL7.cjs → chunk-PY73W5MQ.cjs} +16 -13
  218. package/dist/{chunk-EGMZDTSL.js → chunk-PZZMIYII.js} +10 -2
  219. package/dist/{chunk-HBZU3RBZ.js → chunk-Q3BS6FPM.js} +34 -10
  220. package/dist/chunk-QBYGMMDD.js +517 -0
  221. package/dist/chunk-QLZOMZO5.cjs +388 -0
  222. package/dist/{chunk-ADUFCS4Q.cjs → chunk-QQ64HEHP.cjs} +160 -79
  223. package/dist/{chunk-L3TWPROA.js → chunk-QRQF3556.js} +44 -24
  224. package/dist/{chunk-YHD6TUIR.cjs → chunk-QW2RW2GY.cjs} +2 -0
  225. package/dist/chunk-RAKO7UN7.js +114 -0
  226. package/dist/{chunk-7TQH3CL4.cjs → chunk-RBXBH6EB.cjs} +78 -35
  227. package/dist/chunk-RFUKZIJF.cjs +78 -0
  228. package/dist/chunk-RS2E32YB.js +71 -0
  229. package/dist/{chunk-OLSBBZW6.cjs → chunk-S5JNQIGL.cjs} +5 -5
  230. package/dist/{chunk-FTYY5JJD.js → chunk-S5QKRA2V.js} +2 -2
  231. package/dist/chunk-SD3NTC7D.cjs +77 -0
  232. package/dist/{chunk-KPELYZ6L.js → chunk-SDLY4X3G.js} +2 -2
  233. package/dist/{chunk-IDFF5J2E.js → chunk-SFFEKZGC.js} +38 -7
  234. package/dist/{chunk-EGFT4PGW.js → chunk-SHRLFX6F.js} +8 -3
  235. package/dist/{chunk-3WICOC33.js → chunk-SNDDZG5H.js} +124 -84
  236. package/dist/{chunk-CZXGCVTR.cjs → chunk-SOVR7S3T.cjs} +2 -2
  237. package/dist/chunk-SPQ7QIQ6.js +78 -0
  238. package/dist/{chunk-XRZEUWKF.js → chunk-SRMGWMQO.js} +1 -1
  239. package/dist/{chunk-R33VKSH5.cjs → chunk-SVVP4UUZ.cjs} +11 -11
  240. package/dist/{chunk-7BTSG4ME.cjs → chunk-SY2P3Z5W.cjs} +1004 -39
  241. package/dist/chunk-SZD45IDG.js +468 -0
  242. package/dist/{chunk-3O3MOK5C.cjs → chunk-TE4SYTWR.cjs} +1114 -142
  243. package/dist/chunk-TH26BQJG.js +101 -0
  244. package/dist/{chunk-QNGEW5TC.js → chunk-TR6NECEZ.js} +1 -1
  245. package/dist/{chunk-YGN4CQIP.js → chunk-TYBPTKFT.js} +1 -1
  246. package/dist/{chunk-GJH7XMSK.js → chunk-U2QUMKCB.js} +8 -6
  247. package/dist/{chunk-47CKWKEX.cjs → chunk-U6PLSPMD.cjs} +9 -4
  248. package/dist/chunk-UOQECODR.js +34 -0
  249. package/dist/chunk-UR27UDTB.js +354 -0
  250. package/dist/chunk-UWZ4G3SQ.js +93 -0
  251. package/dist/{chunk-Y72HH2TF.cjs → chunk-V3SZLWEQ.cjs} +33 -24
  252. package/dist/chunk-V4HGZSKQ.cjs +183 -0
  253. package/dist/{chunk-3PDTTAKJ.js → chunk-V5ELP2XE.js} +19 -12
  254. package/dist/{chunk-3K2ESU53.cjs → chunk-VKOXFT4L.cjs} +2 -2
  255. package/dist/{chunk-XTB6VJVQ.cjs → chunk-VLGGMQUN.cjs} +6 -6
  256. package/dist/chunk-VQHSYAPZ.cjs +3897 -0
  257. package/dist/chunk-VUGOOGHB.js +400 -0
  258. package/dist/chunk-W5QLA6WP.cjs +866 -0
  259. package/dist/chunk-WBU4Q4GS.cjs +400 -0
  260. package/dist/{chunk-KWXVKLQ5.cjs → chunk-WGNMOVMT.cjs} +7 -82
  261. package/dist/chunk-WJYFLQ7G.cjs +27 -0
  262. package/dist/{chunk-RKJTGGMU.cjs → chunk-WKRDBCP2.cjs} +221 -16
  263. package/dist/{chunk-ZSPXQYG2.js → chunk-WNJXIACY.js} +7 -5
  264. package/dist/{chunk-AYS2ASM7.js → chunk-WPE2XHVX.js} +1 -1
  265. package/dist/chunk-WTB7AFL6.cjs +101 -0
  266. package/dist/{chunk-JYTDYJVW.js → chunk-X3TI5TJJ.js} +1 -1
  267. package/dist/chunk-X5P6QQOB.cjs +719 -0
  268. package/dist/{chunk-245KJE5Y.cjs → chunk-X7XMITIL.cjs} +14 -6
  269. package/dist/chunk-XF2WIKHR.cjs +34 -0
  270. package/dist/{chunk-DV2ZHK7B.cjs → chunk-XNIMSVS6.cjs} +49 -26
  271. package/dist/chunk-XW3XCK4E.cjs +59 -0
  272. package/dist/{chunk-N23UAW4I.js → chunk-XZVDYC5U.js} +7 -2
  273. package/dist/chunk-Y5BDE24P.cjs +444 -0
  274. package/dist/{chunk-NAGQ2PDC.js → chunk-YC5OBZQU.js} +1604 -433
  275. package/dist/chunk-YISPVAXO.cjs +2340 -0
  276. package/dist/{chunk-KQGPTCQJ.js → chunk-YQDI753V.js} +68 -25
  277. package/dist/{chunk-UJ2JSM6H.js → chunk-YVQI26H4.js} +2 -0
  278. package/dist/{chunk-NNPAM4HC.cjs → chunk-YWH55BWK.cjs} +15 -6
  279. package/dist/{chunk-X2YOZQIP.cjs → chunk-YWTIXHU6.cjs} +266 -19
  280. package/dist/{chunk-XX2ZO7DS.js → chunk-YXM6SA7P.js} +25 -16
  281. package/dist/chunk-YZWE7XSM.js +5 -0
  282. package/dist/chunk-ZASDSY7P.cjs +114 -0
  283. package/dist/{chunk-2UC22DJU.js → chunk-ZNGRLCFQ.js} +30 -4
  284. package/dist/{chunk-KANW6OYC.cjs → chunk-ZNYZB7XY.cjs} +34 -8
  285. package/dist/{chunk-NA6WQDYW.js → chunk-ZPLCAXJW.js} +1088 -116
  286. package/dist/{chunk-7UOUW76C.js → chunk-ZQAT5VT5.js} +101 -24
  287. package/dist/chunk-ZUYYHKQA.js +44 -0
  288. package/dist/clear-QJXU25IF.cjs +12 -0
  289. package/dist/{clear-A3N4GK2S.js → clear-Y5TO3RZA.js} +3 -3
  290. package/dist/communityInstaller-LXMVKVAV.cjs +22 -0
  291. package/dist/{communityInstaller-LOP2EDH5.js → communityInstaller-RVL4STPS.js} +8 -5
  292. package/dist/completion-JX4T2ONW.cjs +17 -0
  293. package/dist/completion-SE3XYG74.js +17 -0
  294. package/dist/config-3224PRW4.cjs +21 -0
  295. package/dist/{config-HPJPKTO6.js → config-7KPHKFTP.js} +7 -4
  296. package/dist/{constants-LISJW3DD.js → constants-EJFAWJQI.js} +1 -1
  297. package/dist/constants-MCCGUU5F.cjs +21 -0
  298. package/dist/{defaultHooks-IHSJR2AX.cjs → defaultHooks-2V2CQL63.cjs} +25 -10
  299. package/dist/{defaultHooks-KUKHK3AG.js → defaultHooks-TMHDU3FS.js} +25 -10
  300. package/dist/export-BJVIDZC4.js +15 -0
  301. package/dist/export-KU4557HK.cjs +15 -0
  302. package/dist/feature-K3LG5IJP.cjs +14 -0
  303. package/dist/feature-V4JF5TNJ.js +14 -0
  304. package/dist/features-5OJTLKS7.js +23 -0
  305. package/dist/features-VCBJQXCX.cjs +23 -0
  306. package/dist/feedback-D4437VE4.js +18 -0
  307. package/dist/feedback-VZPEHGFY.cjs +18 -0
  308. package/dist/fffSearchProvider-2YCNKOYD.js +412 -0
  309. package/dist/fffSearchProvider-W6627E2V.cjs +412 -0
  310. package/dist/{filesystem-Z7BWAWMZ.js → filesystem-L6DQKGWK.js} +3 -2
  311. package/dist/filesystem-PGUPCMVK.cjs +11 -0
  312. package/dist/go-X4E6BCD6.js +12 -0
  313. package/dist/go-XREVFS5I.cjs +12 -0
  314. package/dist/goal-4M3J6JS2.cjs +16 -0
  315. package/dist/goal-EI66BV7W.js +16 -0
  316. package/dist/help-GGFS7WHY.cjs +12 -0
  317. package/dist/{help-GFQXNZOK.js → help-MLIROWKM.js} +2 -2
  318. package/dist/{history-E3N6BJP7.js → history-GQJ6RZD6.js} +2 -2
  319. package/dist/history-J4LUIOSI.cjs +14 -0
  320. package/dist/hooks-FSRIUS6A.cjs +18 -0
  321. package/dist/hooks-PPFHCF7T.js +18 -0
  322. package/dist/i18n-CI6VFXL5.cjs +33 -0
  323. package/dist/{i18n-SY7QRM22.js → i18n-Q7UZJRPL.js} +1 -1
  324. package/dist/ide-BUSVE54P.js +15 -0
  325. package/dist/ide-YR27BPGM.cjs +15 -0
  326. package/dist/immediateCommandRouter-MTEHZXQX.js +15 -0
  327. package/dist/immediateCommandRouter-ROXU3MWT.cjs +15 -0
  328. package/dist/{import-W7SVLSTC.js → import-3VBKI6BN.js} +3 -3
  329. package/dist/{import-ADI37ZUR.cjs → import-C7S6UJMW.cjs} +3 -3
  330. package/dist/import-DBK4OCDF.cjs +10 -0
  331. package/dist/{import-KGKKZ3B7.js → import-U47DXCA7.js} +2 -2
  332. package/dist/index.cjs +837 -23011
  333. package/dist/index.d.cts +95 -0
  334. package/dist/index.d.ts +95 -0
  335. package/dist/index.js +864 -23038
  336. package/dist/init-OXTYS72D.cjs +10 -0
  337. package/dist/{init-7MFK626E.js → init-Q2O4R42R.js} +2 -2
  338. package/dist/inkMode-VUE6ZDLD.cjs +7 -0
  339. package/dist/inkMode-WBNFOSAT.js +7 -0
  340. package/dist/inputPrompt-3CFZDUBH.js +90 -0
  341. package/dist/inputPrompt-JMACL4EB.cjs +90 -0
  342. package/dist/language-EK3M6UBV.cjs +22 -0
  343. package/dist/language-Q3RUGGOW.js +22 -0
  344. package/dist/learn-3DSX7DYG.cjs +23 -0
  345. package/dist/learn-OPOH5L43.js +23 -0
  346. package/dist/login-GST7MWXJ.cjs +27 -0
  347. package/dist/login-Q7DZKAX4.js +27 -0
  348. package/dist/logout-2G7OUK7I.cjs +24 -0
  349. package/dist/logout-FNBBL2UI.js +24 -0
  350. package/dist/mcp-AH3MMUBU.js +21 -0
  351. package/dist/mcp-DW7R63IB.cjs +21 -0
  352. package/dist/{mcp-install-2FEROZTL.js → mcp-install-222PCKSW.js} +18 -10
  353. package/dist/{mcp-install-WM6BQRI5.cjs → mcp-install-IA4ZS2SV.cjs} +22 -14
  354. package/dist/memory-6NX3DAIY.cjs +10 -0
  355. package/dist/{memory-J73WZH2I.js → memory-VB46T5H3.js} +2 -2
  356. package/dist/model-64NAELFS.cjs +10 -0
  357. package/dist/{model-AES267IN.js → model-SJJG64AM.js} +2 -2
  358. package/dist/new-DU5SOOOY.cjs +12 -0
  359. package/dist/{new-5CLF3MKH.js → new-ERZ5C6CN.js} +3 -3
  360. package/dist/onboarding-2U2BV2KE.cjs +36 -0
  361. package/dist/onboarding-ZQXMPSMJ.js +36 -0
  362. package/dist/permissions-7ACNFK7A.js +10 -0
  363. package/dist/permissions-GSNNV7RJ.cjs +10 -0
  364. package/dist/plan-XEJMOT55.cjs +13 -0
  365. package/dist/{plan-65HMS5HQ.js → plan-YYUAXPTL.js} +3 -1
  366. package/dist/pr-review-CW6J7P62.cjs +9 -0
  367. package/dist/pr-review-YZSBQVT2.js +9 -0
  368. package/dist/{quit-XDZYRSPU.js → quit-WY6T267G.js} +2 -2
  369. package/dist/quit-XIRE2KRE.cjs +10 -0
  370. package/dist/rawMode-6W5AXAKI.cjs +7 -0
  371. package/dist/rawMode-GFNLXQPU.js +7 -0
  372. package/dist/{registry-PTHWERKC.js → registry-4DXUDKJN.js} +29 -44
  373. package/dist/{registry-IVT4G2RT.cjs → registry-UEO3ETZ7.cjs} +65 -80
  374. package/dist/repeat-P4FAPE3Y.cjs +17 -0
  375. package/dist/{repeat-EVCWUL6Z.js → repeat-RALE6AUO.js} +7 -3
  376. package/dist/resume-RQZ3WXBP.cjs +17 -0
  377. package/dist/resume-XSXZMDMD.js +17 -0
  378. package/dist/review-QHP2KP4Q.js +9 -0
  379. package/dist/review-UWHWQHCB.cjs +9 -0
  380. package/dist/ripgrep-67SCU2BA.cjs +9 -0
  381. package/dist/ripgrep-VHJQQ55W.js +9 -0
  382. package/dist/rpc-XH7QLN4H.js +3874 -0
  383. package/dist/rpc-YF54T7JU.cjs +3874 -0
  384. package/dist/search-VXXFGZWU.cjs +21 -0
  385. package/dist/search-YAWGX7P7.js +21 -0
  386. package/dist/{sessions-6GWEBMKS.js → sessions-NJYHJOEL.js} +2 -2
  387. package/dist/sessions-OSG3UJEZ.cjs +10 -0
  388. package/dist/settings-SO2UIGWV.cjs +42 -0
  389. package/dist/settings-ZXUQH3DO.js +42 -0
  390. package/dist/setup-KG7EGKF5.js +30 -0
  391. package/dist/setup-RSOPCQ57.cjs +30 -0
  392. package/dist/share-WFAGZ5PY.js +17 -0
  393. package/dist/share-ZU3SGACF.cjs +17 -0
  394. package/dist/skills-KBVAQAD2.cjs +29 -0
  395. package/dist/skills-NBTNDVAY.js +29 -0
  396. package/dist/{skills-ZZCIAS7C.js → skills-OB6RDW7D.js} +10 -7
  397. package/dist/{skills-PG542VEB.cjs → skills-ZROBG3RZ.cjs} +13 -10
  398. package/dist/{skills-install-SRC3Z2MS.js → skills-install-BHTIEMKH.js} +21 -70
  399. package/dist/{skills-install-67DOBPJC.cjs → skills-install-ILX6QVEF.cjs} +34 -83
  400. package/dist/skills-new-B45VQ2PP.cjs +18 -0
  401. package/dist/skills-new-YMRP2HNO.js +18 -0
  402. package/dist/slashCommands-53VYIBJU.js +105 -0
  403. package/dist/slashCommands-BG2RGGZ6.cjs +105 -0
  404. package/dist/status-CQ2IUOVK.cjs +24 -0
  405. package/dist/status-E7IGNVPC.js +24 -0
  406. package/dist/summarizer-DGPHE5IQ.js +17 -0
  407. package/dist/summarizer-JNXLUAQG.cjs +17 -0
  408. package/dist/sync-7C25MOT2.js +22 -0
  409. package/dist/{sync-VU2NSJ4O.js → sync-OCJN4ZSO.js} +3 -3
  410. package/dist/sync-XRP46IVG.cjs +40 -0
  411. package/dist/sync-ZMFVE7T4.cjs +22 -0
  412. package/dist/{teammate-SXRVXNQV.cjs → teammate-D77B6QRT.cjs} +31 -9
  413. package/dist/{teammate-SD26GR37.js → teammate-EZCMHOIL.js} +30 -8
  414. package/dist/templates-ARG2VRWW.cjs +11 -0
  415. package/dist/templates-UGVZV3KJ.js +11 -0
  416. package/dist/theme-KKRDE6P7.cjs +22 -0
  417. package/dist/theme-XF7XIWBQ.js +22 -0
  418. package/dist/tools-3PPTTKFV.js +9 -0
  419. package/dist/tools-THIQA7WC.cjs +9 -0
  420. package/dist/ui/questionModal.cjs +8 -5
  421. package/dist/ui/questionModal.js +7 -4
  422. package/dist/{undo-OL2EDBRY.js → undo-GNUTFXCW.js} +2 -2
  423. package/dist/undo-U4KN7QQM.cjs +10 -0
  424. package/dist/usage-QSTNSDAO.js +24 -0
  425. package/dist/usage-YDEMQBNQ.cjs +24 -0
  426. package/dist/web-3BA2WV37.cjs +37 -0
  427. package/dist/web-6FYGBX5K.js +37 -0
  428. package/dist/workspaceSafety-MDJGHK6D.cjs +9 -0
  429. package/dist/workspaceSafety-XOUMUBVB.js +9 -0
  430. package/dist/yolo-GF2YD7ZI.js +9 -0
  431. package/dist/yolo-OGDA7HNC.cjs +9 -0
  432. package/dist/yoloMode-3DJDA75U.cjs +17 -0
  433. package/dist/yoloMode-4JOOSU26.js +17 -0
  434. package/package.json +51 -49
  435. package/dist/AgentRegistry-HRPN6ZOF.cjs +0 -10
  436. package/dist/CommunitySkillsCache-KE435RAR.cjs +0 -8
  437. package/dist/GitHubRegistryFetcher-I45SESIL.cjs +0 -7
  438. package/dist/LearnAdvisor-FLBA6FDD.js +0 -9
  439. package/dist/LearnAdvisor-GG3CXQF3.cjs +0 -9
  440. package/dist/MemoryManager-2LQPIYVE.cjs +0 -8
  441. package/dist/PermissionManager-X57BXHJ6.cjs +0 -11
  442. package/dist/ProviderFactory-KPJOGQWF.cjs +0 -9
  443. package/dist/SessionManager-YBJAZXNO.cjs +0 -10
  444. package/dist/SkillsRegistry-7O72A6TZ.cjs +0 -9
  445. package/dist/SubAgent-JT4HZHN7.js +0 -11
  446. package/dist/SubAgent-VPNYDWAU.cjs +0 -11
  447. package/dist/SyncApiClient-HQXJL5BT.cjs +0 -11
  448. package/dist/about-4DB5KTHW.js +0 -12
  449. package/dist/about-LXAOXZFT.cjs +0 -12
  450. package/dist/actionExecutor-23JB2WUC.js +0 -19
  451. package/dist/actionExecutor-X5UEZSKH.cjs +0 -19
  452. package/dist/add-dir-YC37DMSF.cjs +0 -10
  453. package/dist/agents-YF3BSUU5.js +0 -12
  454. package/dist/agents-ZOUHPMYR.cjs +0 -12
  455. package/dist/agents-new-HSH4GQPG.js +0 -14
  456. package/dist/agents-new-VYUDOCE7.cjs +0 -14
  457. package/dist/autoSkill-X5W52WOE.cjs +0 -20
  458. package/dist/automode-SJGM7VEI.cjs +0 -10
  459. package/dist/chunk-ALYU6VTM.js +0 -105
  460. package/dist/chunk-B53A2NM2.js +0 -2030
  461. package/dist/chunk-BJXSNT46.js +0 -100
  462. package/dist/chunk-CB4E2T5N.cjs +0 -312
  463. package/dist/chunk-DNUOXBHL.js +0 -539
  464. package/dist/chunk-EFX2QSZX.cjs +0 -33
  465. package/dist/chunk-GCXYXLRA.cjs +0 -111
  466. package/dist/chunk-H2ZRHQQV.js +0 -33
  467. package/dist/chunk-HNRPK5MY.cjs +0 -85
  468. package/dist/chunk-HVKOZ2VP.cjs +0 -115
  469. package/dist/chunk-JJLYWH5Y.cjs +0 -100
  470. package/dist/chunk-LWUJFGOZ.js +0 -115
  471. package/dist/chunk-MERYP6AM.cjs +0 -539
  472. package/dist/chunk-MZAPWNAC.cjs +0 -207
  473. package/dist/chunk-NTSDP2WB.js +0 -226
  474. package/dist/chunk-OUZQXMHL.cjs +0 -226
  475. package/dist/chunk-PGESAU2W.cjs +0 -2030
  476. package/dist/chunk-SYVYLZZF.cjs +0 -24
  477. package/dist/chunk-SZOLA6FR.js +0 -111
  478. package/dist/chunk-VWDHR4HV.js +0 -168
  479. package/dist/chunk-Y45G6ZO5.cjs +0 -168
  480. package/dist/chunk-YRLYSQEQ.cjs +0 -105
  481. package/dist/chunk-ZYVS43MU.js +0 -312
  482. package/dist/clear-GK4IEUUS.cjs +0 -12
  483. package/dist/communityInstaller-XXC7RLE4.cjs +0 -19
  484. package/dist/completion-HWABSAEL.js +0 -14
  485. package/dist/completion-IUUVQG4D.cjs +0 -14
  486. package/dist/config-HF7WOLZF.cjs +0 -18
  487. package/dist/constants-PEO3P2SJ.cjs +0 -21
  488. package/dist/export-QJAV2FCZ.js +0 -12
  489. package/dist/export-XSRFXGWU.cjs +0 -12
  490. package/dist/feedback-4TCIL3ML.cjs +0 -15
  491. package/dist/feedback-SJ6VVEY3.js +0 -15
  492. package/dist/filesystem-W56QZUJF.cjs +0 -10
  493. package/dist/help-ISBVQL3S.cjs +0 -12
  494. package/dist/history-XQ4GTSFU.cjs +0 -14
  495. package/dist/hooks-CJNKJ5PF.js +0 -13
  496. package/dist/hooks-UTMBTAXT.cjs +0 -13
  497. package/dist/i18n-N7QQ7A5M.cjs +0 -33
  498. package/dist/ide-RTA4UJV4.js +0 -12
  499. package/dist/ide-VWVOLIFF.cjs +0 -12
  500. package/dist/immediateCommandRouter-BW34JNXL.js +0 -9
  501. package/dist/immediateCommandRouter-SHOVNB5X.cjs +0 -9
  502. package/dist/import-ZLJVONXH.cjs +0 -10
  503. package/dist/init-TBKAB4LZ.cjs +0 -10
  504. package/dist/language-MDSHEXHB.cjs +0 -18
  505. package/dist/language-PXTQSHIG.js +0 -18
  506. package/dist/learn-623TW5EK.cjs +0 -20
  507. package/dist/learn-BCPV7GM2.js +0 -20
  508. package/dist/localProjectPermissions-BHQXEWZJ.cjs +0 -18
  509. package/dist/localProjectPermissions-GMOUYQM6.js +0 -18
  510. package/dist/login-QMVEETWJ.js +0 -20
  511. package/dist/login-QYMXAL3K.cjs +0 -20
  512. package/dist/logout-2CMTDAOJ.js +0 -18
  513. package/dist/logout-ZOHVZAUK.cjs +0 -18
  514. package/dist/mcp-IUVKK65S.js +0 -18
  515. package/dist/mcp-TXC7PYG3.cjs +0 -18
  516. package/dist/memory-WRIHDEPK.cjs +0 -10
  517. package/dist/model-RLP75SF5.cjs +0 -10
  518. package/dist/new-HLSFL6A4.cjs +0 -12
  519. package/dist/permissions-GP6FTGZ2.js +0 -13
  520. package/dist/permissions-O6EKKPOG.cjs +0 -13
  521. package/dist/plan-MCAXDIM2.cjs +0 -11
  522. package/dist/quit-TQX6GXA5.cjs +0 -10
  523. package/dist/repeat-BSPS5TWD.cjs +0 -13
  524. package/dist/resume-2GOPDLL4.cjs +0 -13
  525. package/dist/resume-37IUVDA6.js +0 -13
  526. package/dist/search-7KUSHIBL.cjs +0 -17
  527. package/dist/search-OJGDRIMA.js +0 -17
  528. package/dist/sessions-CYYCHSQG.cjs +0 -10
  529. package/dist/settings-2D7CAO66.cjs +0 -30
  530. package/dist/settings-BXR6SBJP.js +0 -30
  531. package/dist/share-BXQY5IQU.js +0 -14
  532. package/dist/share-OSFXZBGS.cjs +0 -14
  533. package/dist/skills-FL6O6AOM.cjs +0 -26
  534. package/dist/skills-PNKQZRNK.js +0 -26
  535. package/dist/skills-new-XFMEHHIF.cjs +0 -15
  536. package/dist/skills-new-ZNZPHUKS.js +0 -15
  537. package/dist/slashCommands-LLCNPK3X.js +0 -76
  538. package/dist/slashCommands-RXZZS6RE.cjs +0 -76
  539. package/dist/status-BCECUJXT.cjs +0 -11
  540. package/dist/status-EFO7MQU3.js +0 -11
  541. package/dist/sync-IJYJ6KKM.js +0 -18
  542. package/dist/sync-LFT6SBPF.cjs +0 -18
  543. package/dist/sync-U7SDPBNZ.cjs +0 -40
  544. package/dist/theme-AWBHSG7J.cjs +0 -18
  545. package/dist/theme-TQLBPJ2E.js +0 -18
  546. package/dist/undo-IBBGP7A2.cjs +0 -10
@@ -0,0 +1,75 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/ui/displayUtils.ts
2
+ var ANSI_PATTERN = /\u001b\][^\u0007\u001b]*(?:\u0007|\u001b\\)|\u001b\[[0-?]*[ -/]*[@-~]/g;
3
+ function stripAnsiCodes(value) {
4
+ return value.replace(ANSI_PATTERN, "");
5
+ }
6
+ function enableBracketedPaste(output) {
7
+ try {
8
+ output.write("\x1B[?2004h");
9
+ } catch (error) {
10
+ if (process.env.DEBUG_PASTE) {
11
+ output.write(`[DEBUG] Failed to enable bracketed paste: ${error}
12
+ `);
13
+ }
14
+ }
15
+ }
16
+ function disableBracketedPaste(output) {
17
+ try {
18
+ output.write("\x1B[?2004l");
19
+ } catch (e) {
20
+ }
21
+ }
22
+ function shuffleInPlace(arr) {
23
+ for (let i = arr.length - 1; i > 0; i--) {
24
+ const j = Math.floor(Math.random() * (i + 1));
25
+ [arr[i], arr[j]] = [arr[j], arr[i]];
26
+ }
27
+ }
28
+ var PASTE_LINE_THRESHOLD = 5;
29
+ var PASTE_CHAR_THRESHOLD = 1500;
30
+ function getContentDisplay(text) {
31
+ const charCount = Array.from(text).length;
32
+ if (!text) {
33
+ return {
34
+ visual: "",
35
+ actual: "",
36
+ isPasted: false,
37
+ lineCount: 1,
38
+ charCount
39
+ };
40
+ }
41
+ const lines = text.split("\n");
42
+ const lineCount = lines.length;
43
+ if (lineCount >= PASTE_LINE_THRESHOLD || charCount >= PASTE_CHAR_THRESHOLD) {
44
+ const visual = lineCount >= PASTE_LINE_THRESHOLD ? `[Text Pasted +${lineCount} lines]` : `[Text Pasted ${charCount} chars]`;
45
+ return {
46
+ visual,
47
+ actual: text,
48
+ isPasted: true,
49
+ lineCount,
50
+ charCount
51
+ };
52
+ }
53
+ return {
54
+ visual: text,
55
+ actual: text,
56
+ isPasted: false,
57
+ lineCount,
58
+ charCount
59
+ };
60
+ }
61
+
62
+
63
+
64
+
65
+
66
+
67
+
68
+ exports.stripAnsiCodes = stripAnsiCodes; exports.enableBracketedPaste = enableBracketedPaste; exports.disableBracketedPaste = disableBracketedPaste; exports.shuffleInPlace = shuffleInPlace; exports.getContentDisplay = getContentDisplay;
69
+ /**
70
+ * @license
71
+ * Copyright 2025 Autohand AI LLC
72
+ * SPDX-License-Identifier: Apache-2.0
73
+ *
74
+ * Display utilities for smart content rendering
75
+ */
@@ -0,0 +1,468 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
+
3
+
4
+
5
+ var _chunkV4HGZSKQcjs = require('./chunk-V4HGZSKQ.cjs');
6
+
7
+
8
+ var _chunkKASXKDF2cjs = require('./chunk-KASXKDF2.cjs');
9
+
10
+ // src/goals/GoalManager.ts
11
+ var _crypto = require('crypto'); var _crypto2 = _interopRequireDefault(_crypto);
12
+ var _fsextra = require('fs-extra'); var _fsextra2 = _interopRequireDefault(_fsextra);
13
+ var _path = require('path'); var _path2 = _interopRequireDefault(_path);
14
+
15
+ // src/goals/queueBlockParser.ts
16
+ function parseQueueBlockItems(input) {
17
+ const lines = input.split(/\r?\n/);
18
+ const items = [];
19
+ for (let i = 0; i < lines.length; i++) {
20
+ const trimmed = lines[i].trim();
21
+ const bracket = trimmed.match(/^\[(\d+)\]\s+(.+)$/);
22
+ const numbered = trimmed.match(/^(\d+)[.)]\s+(.+)$/);
23
+ const match = _nullishCoalesce(bracket, () => ( numbered));
24
+ if (!match) continue;
25
+ items.push({
26
+ marker: match[1],
27
+ objectiveInput: match[2].trim(),
28
+ lineIndex: i
29
+ });
30
+ }
31
+ return items.length > 1 ? items : null;
32
+ }
33
+
34
+ // src/goals/GoalManager.ts
35
+ var GOAL_STATE_FILE = "goals.local.json";
36
+ var MAX_OBJECTIVE_LENGTH = 8e4;
37
+ var GoalManager = class {
38
+ constructor(workspaceRoot) {
39
+ this.workspaceRoot = workspaceRoot;
40
+ }
41
+
42
+ async getSnapshot() {
43
+ const snapshot = await this.readSnapshot();
44
+ const goal = snapshot.goal ? this.withLiveElapsed(snapshot.goal) : null;
45
+ return { ...snapshot, goal };
46
+ }
47
+ async listTemplates() {
48
+ return _chunkV4HGZSKQcjs.listGoalTemplateMetadata.call(void 0, this.workspaceRoot);
49
+ }
50
+ async resolveObjective(input) {
51
+ const resolution = await _chunkV4HGZSKQcjs.resolveGoalTemplateInvocation.call(void 0, input, this.workspaceRoot);
52
+ if (resolution.ok) {
53
+ return {
54
+ ok: true,
55
+ input: { objective: resolution.template.objective },
56
+ template: resolution.template.name,
57
+ templateFlags: resolution.template.flags,
58
+ templateArgs: resolution.template.args
59
+ };
60
+ }
61
+ if ("notTemplate" in resolution) return { ok: true, input: { objective: input } };
62
+ return { ok: false, message: resolution.error };
63
+ }
64
+ async createGoal(input, opts = {}) {
65
+ const snapshot = await this.readSnapshot();
66
+ const validation = validateGoalInput(input);
67
+ if (validation) return result(snapshot, false, validation);
68
+ if (snapshot.goal && snapshot.goal.status !== "complete" && !opts.replace) {
69
+ return result(snapshot, false, "A goal already exists. Clear it, complete it, or queue the new objective before replacing it.");
70
+ }
71
+ const now = Date.now();
72
+ const goal = {
73
+ goalId: _crypto2.default.randomUUID(),
74
+ objective: input.objective.trim(),
75
+ status: "active",
76
+ tokenBudget: input.tokenBudget,
77
+ timeBudgetSeconds: input.timeBudgetSeconds,
78
+ minTokensBeforeWrapUp: input.minTokensBeforeWrapUp,
79
+ minTimeSecondsBeforeWrapUp: input.minTimeSecondsBeforeWrapUp,
80
+ tokensUsed: 0,
81
+ timeUsedSeconds: 0,
82
+ createdAt: now,
83
+ updatedAt: now
84
+ };
85
+ const next = { ...snapshot, goal, updatedAt: now };
86
+ await this.writeSnapshot(next);
87
+ return result(next, true, _optionalChain([snapshot, 'access', _ => _.goal, 'optionalAccess', _2 => _2.status]) === "complete" ? "Goal created; replaced completed goal." : "Goal created.");
88
+ }
89
+ async updateGoal(input) {
90
+ const snapshot = await this.readSnapshot();
91
+ const current = snapshot.goal ? this.withLiveElapsed(snapshot.goal) : null;
92
+ if (!current) return result(snapshot, false, "No goal exists to update.");
93
+ let next = { ...current };
94
+ const changes = [];
95
+ if (input.objective !== void 0) {
96
+ const objective = input.objective.trim();
97
+ if (!objective) return result(snapshot, false, "objective must be non-empty.");
98
+ if (objective.length > MAX_OBJECTIVE_LENGTH) return result(snapshot, false, `objective is too long (max ${MAX_OBJECTIVE_LENGTH} characters).`);
99
+ next = { ...next, objective };
100
+ changes.push("objective");
101
+ }
102
+ const budgetError = applyOptionalPositiveInteger(input.tokenBudget, (value) => {
103
+ next = { ...next, tokenBudget: value };
104
+ changes.push("token budget");
105
+ });
106
+ if (budgetError) return result(snapshot, false, budgetError);
107
+ const timeBudgetError = applyOptionalPositiveInteger(input.timeBudgetSeconds, (value) => {
108
+ next = { ...next, timeBudgetSeconds: value };
109
+ changes.push("time budget");
110
+ });
111
+ if (timeBudgetError) return result(snapshot, false, timeBudgetError);
112
+ const minTokensError = applyOptionalPositiveInteger(input.minTokensBeforeWrapUp, (value) => {
113
+ next = { ...next, minTokensBeforeWrapUp: value };
114
+ changes.push("token floor");
115
+ });
116
+ if (minTokensError) return result(snapshot, false, minTokensError);
117
+ const minTimeError = applyOptionalPositiveInteger(input.minTimeSecondsBeforeWrapUp, (value) => {
118
+ next = { ...next, minTimeSecondsBeforeWrapUp: value };
119
+ changes.push("time floor");
120
+ });
121
+ if (minTimeError) return result(snapshot, false, minTimeError);
122
+ const floorError = validateFloors(next);
123
+ if (floorError) return result(snapshot, false, floorError);
124
+ if (input.status !== void 0) {
125
+ if (!["active", "paused", "complete", "budgetLimited"].includes(input.status)) {
126
+ return result(snapshot, false, "status must be active, paused, complete, or budgetLimited.");
127
+ }
128
+ if (input.status === "complete" && !floorMet(next)) {
129
+ return result(snapshot, false, "Completion floor is not met yet. Keep working, raise the floor, or clear the goal if the user explicitly wants to stop.");
130
+ }
131
+ next = transitionStatus(next, input.status);
132
+ changes.push(`status ${input.status}`);
133
+ }
134
+ if (next.status === "active" && budgetLimitReason(next)) {
135
+ return result(snapshot, false, "Cannot resume: budget is exhausted. Raise the budget or clear the goal before resuming.");
136
+ }
137
+ if (changes.length === 0) return result(snapshot, false, "No goal updates were provided.");
138
+ next = { ...next, updatedAt: Date.now() };
139
+ const updated = { ...snapshot, goal: next, updatedAt: next.updatedAt };
140
+ await this.writeSnapshot(updated);
141
+ return result(updated, true, `Goal updated: ${changes.join(", ")}.`);
142
+ }
143
+ async clearGoal() {
144
+ const snapshot = await this.readSnapshot();
145
+ const next = { ...snapshot, goal: null, updatedAt: Date.now() };
146
+ await this.writeSnapshot(next);
147
+ return result(next, true, snapshot.goal ? "Goal cleared." : "No goal was set.");
148
+ }
149
+ async enqueueGoal(input) {
150
+ const snapshot = await this.readSnapshot();
151
+ const validation = validateGoalInput(input);
152
+ if (validation) return result(snapshot, false, validation);
153
+ const queued = buildQueuedGoal(input);
154
+ const next = { ...snapshot, queue: [...snapshot.queue, queued], updatedAt: Date.now() };
155
+ await this.writeSnapshot(next);
156
+ return { ...result(next, true, "Queued goal."), queued: [queued] };
157
+ }
158
+ async enqueueGoalBlock(input, source) {
159
+ const snapshot = await this.readSnapshot();
160
+ const items = parseQueueBlockItems(input);
161
+ if (!items) return this.enqueueResolvedGoalInput(input, source);
162
+ const queued = [];
163
+ for (const item of items) {
164
+ const resolved = await this.resolveObjective(item.objectiveInput);
165
+ if (!resolved.ok) return result(snapshot, false, `Queue item ${item.marker} could not be resolved: ${resolved.message}`);
166
+ const validation = validateGoalInput(resolved.input);
167
+ if (validation) return result(snapshot, false, `Queue item ${item.marker}: ${validation}`);
168
+ queued.push(buildQueuedGoal({
169
+ ...resolved.input,
170
+ source,
171
+ template: resolved.template,
172
+ templateFlags: resolved.templateFlags,
173
+ templateArgs: resolved.templateArgs
174
+ }));
175
+ }
176
+ const next = { ...snapshot, queue: [...snapshot.queue, ...queued], updatedAt: Date.now() };
177
+ await this.writeSnapshot(next);
178
+ return { ...result(next, true, `Queued ${queued.length} goals.`), queued };
179
+ }
180
+ async enqueueResolvedGoalInput(input, source) {
181
+ const resolved = await this.resolveObjective(input);
182
+ if (!resolved.ok) {
183
+ const snapshot = await this.readSnapshot();
184
+ return result(snapshot, false, resolved.message);
185
+ }
186
+ return this.enqueueGoal({
187
+ ...resolved.input,
188
+ source,
189
+ template: resolved.template,
190
+ templateFlags: resolved.templateFlags,
191
+ templateArgs: resolved.templateArgs
192
+ });
193
+ }
194
+ async startQueuedGoal() {
195
+ const snapshot = await this.readSnapshot();
196
+ const current = snapshot.goal ? this.withLiveElapsed(snapshot.goal) : null;
197
+ if (current && current.status !== "complete" && current.status !== "budgetLimited") {
198
+ return result({ ...snapshot, goal: current }, false, "A non-terminal goal is already active. The queued goal was left in the queue.");
199
+ }
200
+ const nextQueued = snapshot.queue[0];
201
+ if (!nextQueued) return result({ ...snapshot, goal: current }, false, "No queued goals.");
202
+ let objective = nextQueued.objective;
203
+ if (nextQueued.template) {
204
+ const resolved = await _chunkV4HGZSKQcjs.resolveGoalTemplateByName.call(void 0, this.workspaceRoot, nextQueued.template, _nullishCoalesce(nextQueued.templateFlags, () => ( {})), _nullishCoalesce(nextQueued.templateArgs, () => ( "")));
205
+ if (!resolved.ok) return result(snapshot, false, "notTemplate" in resolved ? `Unknown goal template '${nextQueued.template}'.` : resolved.error);
206
+ objective = resolved.template.objective;
207
+ }
208
+ const now = Date.now();
209
+ const goal = {
210
+ goalId: _crypto2.default.randomUUID(),
211
+ objective,
212
+ status: "active",
213
+ tokenBudget: nextQueued.tokenBudget,
214
+ timeBudgetSeconds: nextQueued.timeBudgetSeconds,
215
+ minTokensBeforeWrapUp: nextQueued.minTokensBeforeWrapUp,
216
+ minTimeSecondsBeforeWrapUp: nextQueued.minTimeSecondsBeforeWrapUp,
217
+ tokensUsed: 0,
218
+ timeUsedSeconds: 0,
219
+ createdAt: now,
220
+ updatedAt: now
221
+ };
222
+ const updated = { ...snapshot, goal, queue: snapshot.queue.slice(1), updatedAt: now };
223
+ await this.writeSnapshot(updated);
224
+ return { ...result(updated, true, "Started queued goal."), started: nextQueued, dequeued: nextQueued };
225
+ }
226
+ async dequeueGoal(audit) {
227
+ const snapshot = await this.readSnapshot();
228
+ if (!_optionalChain([audit, 'optionalAccess', _3 => _3.rationale, 'optionalAccess', _4 => _4.trim, 'call', _5 => _5()]) || !_optionalChain([audit, 'access', _6 => _6.authority, 'optionalAccess', _7 => _7.trim, 'call', _8 => _8()])) {
229
+ return result(snapshot, false, "rationale and authority are required to dequeue a queued goal.");
230
+ }
231
+ const dequeued = snapshot.queue[0];
232
+ if (!dequeued) return result(snapshot, false, "No queued goals.");
233
+ const next = { ...snapshot, queue: snapshot.queue.slice(1), updatedAt: Date.now() };
234
+ await this.writeSnapshot(next);
235
+ return { ...result(next, true, "Dequeued goal."), dequeued };
236
+ }
237
+ async removeQueuedGoal(queueId) {
238
+ const snapshot = await this.readSnapshot();
239
+ const removed = snapshot.queue.find((item) => item.queueId === queueId);
240
+ if (!removed) return result(snapshot, false, `No queued goal found with id ${queueId}.`);
241
+ const next = { ...snapshot, queue: snapshot.queue.filter((item) => item.queueId !== queueId), updatedAt: Date.now() };
242
+ await this.writeSnapshot(next);
243
+ return { ...result(next, true, "Removed queued goal."), removed };
244
+ }
245
+ async recordTurnUsage(input) {
246
+ const snapshot = await this.readSnapshot();
247
+ if (!snapshot.goal) return result(snapshot, true, "No active goal.");
248
+ let goal = this.withLiveElapsed(snapshot.goal);
249
+ goal = {
250
+ ...goal,
251
+ tokensUsed: goal.tokensUsed + Math.max(0, Math.floor(_nullishCoalesce(input.tokensUsed, () => ( 0)))),
252
+ updatedAt: Date.now()
253
+ };
254
+ const limitReason = budgetLimitReason(goal);
255
+ if (limitReason) {
256
+ goal = transitionStatus(goal, "budgetLimited");
257
+ }
258
+ const next = { ...snapshot, goal, updatedAt: goal.updatedAt };
259
+ await this.writeSnapshot(next);
260
+ return result(next, true, limitReason ? `Goal budget limited: ${limitReason}.` : "Goal usage recorded.");
261
+ }
262
+ formatSnapshot(snapshot) {
263
+ const lines = [];
264
+ if (!snapshot.goal) {
265
+ lines.push("No goal is currently set.");
266
+ } else {
267
+ const goal = snapshot.goal;
268
+ lines.push(`Goal ${goal.goalId}`);
269
+ lines.push(`Status: ${goal.status}`);
270
+ lines.push(`Objective: ${goal.objective}`);
271
+ lines.push(`Elapsed: ${formatDuration(goal.timeUsedSeconds)}`);
272
+ lines.push(`Tokens: ${goal.tokensUsed}${goal.tokenBudget ? ` / ${goal.tokenBudget}` : ""}`);
273
+ if (goal.timeBudgetSeconds) lines.push(`Time budget: ${formatDuration(goal.timeBudgetSeconds)}`);
274
+ if (goal.minTokensBeforeWrapUp) lines.push(`Token floor: ${goal.minTokensBeforeWrapUp}`);
275
+ if (goal.minTimeSecondsBeforeWrapUp) lines.push(`Time floor: ${formatDuration(goal.minTimeSecondsBeforeWrapUp)}`);
276
+ }
277
+ if (snapshot.queue.length > 0) {
278
+ lines.push("");
279
+ lines.push(`Queued goals (${snapshot.queue.length}):`);
280
+ snapshot.queue.forEach((item, index) => {
281
+ lines.push(`${index + 1}. [${item.queueId}] ${truncate(item.objective, 120)}`);
282
+ });
283
+ }
284
+ return lines.join("\n");
285
+ }
286
+ async readSnapshot() {
287
+ const filePath = this.statePath();
288
+ if (!await _fsextra2.default.pathExists(filePath)) {
289
+ return emptySnapshot();
290
+ }
291
+ try {
292
+ const raw = await _fsextra2.default.readJson(filePath);
293
+ return normalizeSnapshot(raw);
294
+ } catch (e) {
295
+ return emptySnapshot();
296
+ }
297
+ }
298
+ async writeSnapshot(snapshot) {
299
+ await _fsextra2.default.ensureDir(_path2.default.dirname(this.statePath()));
300
+ await _fsextra2.default.writeJson(this.statePath(), snapshot, { spaces: 2 });
301
+ }
302
+ statePath() {
303
+ return _path2.default.join(this.workspaceRoot, _chunkKASXKDF2cjs.PROJECT_DIR_NAME, GOAL_STATE_FILE);
304
+ }
305
+ withLiveElapsed(goal) {
306
+ if (goal.status !== "active") return goal;
307
+ const elapsedDelta = Math.max(0, Math.floor((Date.now() - goal.updatedAt) / 1e3));
308
+ return { ...goal, timeUsedSeconds: goal.timeUsedSeconds + elapsedDelta };
309
+ }
310
+ };
311
+ function emptySnapshot() {
312
+ return { version: 1, goal: null, queue: [], updatedAt: Date.now() };
313
+ }
314
+ function normalizeSnapshot(raw) {
315
+ return {
316
+ version: 1,
317
+ goal: normalizeGoal(raw.goal),
318
+ queue: Array.isArray(raw.queue) ? raw.queue.map(normalizeQueuedGoal).filter((item) => Boolean(item)) : [],
319
+ updatedAt: typeof raw.updatedAt === "number" ? raw.updatedAt : Date.now()
320
+ };
321
+ }
322
+ function normalizeGoal(value) {
323
+ if (!value || typeof value !== "object") return null;
324
+ const raw = value;
325
+ if (typeof raw.goalId !== "string" || typeof raw.objective !== "string" || !isGoalStatus(raw.status)) return null;
326
+ return {
327
+ goalId: raw.goalId,
328
+ objective: raw.objective,
329
+ status: raw.status,
330
+ tokenBudget: positiveInteger(raw.tokenBudget),
331
+ timeBudgetSeconds: positiveInteger(raw.timeBudgetSeconds),
332
+ minTokensBeforeWrapUp: positiveInteger(raw.minTokensBeforeWrapUp),
333
+ minTimeSecondsBeforeWrapUp: positiveInteger(raw.minTimeSecondsBeforeWrapUp),
334
+ tokensUsed: _nullishCoalesce(positiveInteger(raw.tokensUsed), () => ( 0)),
335
+ timeUsedSeconds: _nullishCoalesce(positiveInteger(raw.timeUsedSeconds), () => ( 0)),
336
+ createdAt: typeof raw.createdAt === "number" ? raw.createdAt : Date.now(),
337
+ updatedAt: typeof raw.updatedAt === "number" ? raw.updatedAt : Date.now()
338
+ };
339
+ }
340
+ function normalizeQueuedGoal(value) {
341
+ if (!value || typeof value !== "object") return null;
342
+ const raw = value;
343
+ if (typeof raw.queueId !== "string" || typeof raw.objective !== "string") return null;
344
+ return {
345
+ queueId: raw.queueId,
346
+ objective: raw.objective,
347
+ tokenBudget: positiveInteger(raw.tokenBudget),
348
+ timeBudgetSeconds: positiveInteger(raw.timeBudgetSeconds),
349
+ minTokensBeforeWrapUp: positiveInteger(raw.minTokensBeforeWrapUp),
350
+ minTimeSecondsBeforeWrapUp: positiveInteger(raw.minTimeSecondsBeforeWrapUp),
351
+ source: raw.source === "command" || raw.source === "tool" || raw.source === "rpc" || raw.source === "cli" ? raw.source : "tool",
352
+ template: typeof raw.template === "string" ? raw.template : void 0,
353
+ templateFlags: isStringRecord(raw.templateFlags) ? raw.templateFlags : void 0,
354
+ templateArgs: typeof raw.templateArgs === "string" ? raw.templateArgs : void 0,
355
+ createdAt: typeof raw.createdAt === "number" ? raw.createdAt : Date.now()
356
+ };
357
+ }
358
+ function buildQueuedGoal(input) {
359
+ return {
360
+ queueId: `q-${Date.now()}-${_crypto2.default.randomUUID().slice(0, 8)}`,
361
+ objective: input.objective.trim(),
362
+ tokenBudget: input.tokenBudget,
363
+ timeBudgetSeconds: input.timeBudgetSeconds,
364
+ minTokensBeforeWrapUp: input.minTokensBeforeWrapUp,
365
+ minTimeSecondsBeforeWrapUp: input.minTimeSecondsBeforeWrapUp,
366
+ source: input.source,
367
+ template: input.template,
368
+ templateFlags: input.templateFlags,
369
+ templateArgs: input.templateArgs,
370
+ createdAt: Date.now()
371
+ };
372
+ }
373
+ function validateGoalInput(input) {
374
+ const objective = input.objective.trim();
375
+ if (!objective) return "objective must be non-empty.";
376
+ if (objective.length > MAX_OBJECTIVE_LENGTH) return `objective is too long (max ${MAX_OBJECTIVE_LENGTH} characters).`;
377
+ for (const [name, value] of [
378
+ ["tokenBudget", input.tokenBudget],
379
+ ["timeBudgetSeconds", input.timeBudgetSeconds],
380
+ ["minTokensBeforeWrapUp", input.minTokensBeforeWrapUp],
381
+ ["minTimeSecondsBeforeWrapUp", input.minTimeSecondsBeforeWrapUp]
382
+ ]) {
383
+ if (value !== void 0 && (!Number.isInteger(value) || value <= 0)) return `${name} must be a positive integer.`;
384
+ }
385
+ return validateFloors(input);
386
+ }
387
+ function validateFloors(input) {
388
+ if (input.tokenBudget !== void 0 && input.minTokensBeforeWrapUp !== void 0 && input.minTokensBeforeWrapUp > input.tokenBudget) {
389
+ return "minTokensBeforeWrapUp cannot be greater than tokenBudget.";
390
+ }
391
+ if (input.timeBudgetSeconds !== void 0 && input.minTimeSecondsBeforeWrapUp !== void 0 && input.minTimeSecondsBeforeWrapUp > input.timeBudgetSeconds) {
392
+ return "minTimeSecondsBeforeWrapUp cannot be greater than timeBudgetSeconds.";
393
+ }
394
+ return null;
395
+ }
396
+ function transitionStatus(goal, status) {
397
+ const now = Date.now();
398
+ if (goal.status === "active" && status !== "active") {
399
+ const elapsedDelta = Math.max(0, Math.floor((now - goal.updatedAt) / 1e3));
400
+ return { ...goal, status, timeUsedSeconds: goal.timeUsedSeconds + elapsedDelta, updatedAt: now };
401
+ }
402
+ if (goal.status !== "active" && status === "active") {
403
+ return { ...goal, status, updatedAt: now };
404
+ }
405
+ return { ...goal, status, updatedAt: now };
406
+ }
407
+ function budgetLimitReason(goal) {
408
+ if (goal.tokenBudget !== void 0 && goal.tokensUsed >= goal.tokenBudget) return "tokenBudget";
409
+ if (goal.timeBudgetSeconds !== void 0 && goal.timeUsedSeconds >= goal.timeBudgetSeconds) return "timeBudget";
410
+ return null;
411
+ }
412
+ function applyOptionalPositiveInteger(value, apply) {
413
+ if (value === void 0) return null;
414
+ if (value === null) {
415
+ apply(void 0);
416
+ return null;
417
+ }
418
+ if (!Number.isInteger(value) || value <= 0) return "budget and floor values must be positive integers or null.";
419
+ apply(value);
420
+ return null;
421
+ }
422
+ function result(snapshot, ok, message) {
423
+ const goal = snapshot.goal;
424
+ return {
425
+ ok,
426
+ goal,
427
+ queue: snapshot.queue,
428
+ message,
429
+ telemetry: goal ? {
430
+ timeRemainingSeconds: goal.timeBudgetSeconds !== void 0 ? Math.max(0, goal.timeBudgetSeconds - goal.timeUsedSeconds) : void 0,
431
+ tokensRemaining: goal.tokenBudget !== void 0 ? Math.max(0, goal.tokenBudget - goal.tokensUsed) : void 0,
432
+ completionFloorMet: floorMet(goal)
433
+ } : void 0
434
+ };
435
+ }
436
+ function floorMet(goal) {
437
+ const tokenMet = goal.minTokensBeforeWrapUp === void 0 || goal.tokensUsed >= goal.minTokensBeforeWrapUp;
438
+ const timeMet = goal.minTimeSecondsBeforeWrapUp === void 0 || goal.timeUsedSeconds >= goal.minTimeSecondsBeforeWrapUp;
439
+ return tokenMet && timeMet;
440
+ }
441
+ function positiveInteger(value) {
442
+ return typeof value === "number" && Number.isInteger(value) && value >= 0 ? value : void 0;
443
+ }
444
+ function isGoalStatus(value) {
445
+ return value === "active" || value === "paused" || value === "budgetLimited" || value === "complete";
446
+ }
447
+ function isStringRecord(value) {
448
+ if (!value || typeof value !== "object" || Array.isArray(value)) return false;
449
+ return Object.values(value).every((entry) => typeof entry === "string");
450
+ }
451
+ function truncate(value, max) {
452
+ return value.length > max ? `${value.slice(0, max - 3)}...` : value;
453
+ }
454
+ function formatDuration(seconds) {
455
+ const whole = Math.max(0, Math.floor(seconds));
456
+ const minutes = Math.floor(whole / 60);
457
+ const secs = whole % 60;
458
+ return minutes > 0 ? `${minutes}m ${secs}s` : `${secs}s`;
459
+ }
460
+
461
+
462
+
463
+ exports.GoalManager = GoalManager;
464
+ /**
465
+ * @license
466
+ * Copyright 2025 Autohand AI LLC
467
+ * SPDX-License-Identifier: Apache-2.0
468
+ */