@poncho-ai/cli 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (516) hide show
  1. package/.turbo/turbo-build.log +19 -0
  2. package/.turbo/turbo-test.log +389 -0
  3. package/CHANGELOG.md +17 -0
  4. package/LICENSE +21 -0
  5. package/dist/chunk-22OMLQUR.js +1249 -0
  6. package/dist/chunk-24JFN5RM.js +1887 -0
  7. package/dist/chunk-24TAT3US.js +2137 -0
  8. package/dist/chunk-26YBLT7G.js +997 -0
  9. package/dist/chunk-2EJIC6UW.js +1893 -0
  10. package/dist/chunk-2JNCF37R.js +1156 -0
  11. package/dist/chunk-2LVMUHJX.js +1874 -0
  12. package/dist/chunk-2OVSD65B.js +1269 -0
  13. package/dist/chunk-2RQ45LI6.js +1251 -0
  14. package/dist/chunk-2SMIRDLI.js +1854 -0
  15. package/dist/chunk-2UXPHBFI.js +1862 -0
  16. package/dist/chunk-2VFM7SSZ.js +1135 -0
  17. package/dist/chunk-2ZAUADNG.js +1456 -0
  18. package/dist/chunk-2ZNUT5WA.js +1862 -0
  19. package/dist/chunk-33ZQ7WTP.js +1834 -0
  20. package/dist/chunk-34ARQX3O.js +1156 -0
  21. package/dist/chunk-3BEWSRFW.js +1893 -0
  22. package/dist/chunk-3DVE5AG6.js +1862 -0
  23. package/dist/chunk-3KE6MHO6.js +1608 -0
  24. package/dist/chunk-3MOLPB7Z.js +997 -0
  25. package/dist/chunk-3OZZOYAZ.js +1884 -0
  26. package/dist/chunk-3VJYNZEF.js +2181 -0
  27. package/dist/chunk-3W27LOUH.js +997 -0
  28. package/dist/chunk-3WMAW74D.js +1163 -0
  29. package/dist/chunk-3Z4AHBPF.js +1569 -0
  30. package/dist/chunk-43NK6MB4.js +1977 -0
  31. package/dist/chunk-4E5M2IGA.js +1300 -0
  32. package/dist/chunk-4FVI4LVI.js +1862 -0
  33. package/dist/chunk-4GNQQJUP.js +1156 -0
  34. package/dist/chunk-4PGZFTVC.js +1234 -0
  35. package/dist/chunk-4QE2HDNC.js +1355 -0
  36. package/dist/chunk-4S2EL4ED.js +1135 -0
  37. package/dist/chunk-536SSOJ3.js +1797 -0
  38. package/dist/chunk-5CNEGIC5.js +997 -0
  39. package/dist/chunk-5CWN43YL.js +1147 -0
  40. package/dist/chunk-5HZCYTUZ.js +997 -0
  41. package/dist/chunk-5ICNG6RX.js +1885 -0
  42. package/dist/chunk-5OUIRXMN.js +997 -0
  43. package/dist/chunk-5T34JOWH.js +1460 -0
  44. package/dist/chunk-5XBAIQX3.js +1862 -0
  45. package/dist/chunk-65AIX3CS.js +1441 -0
  46. package/dist/chunk-67NBW4NG.js +1355 -0
  47. package/dist/chunk-6AFIL35M.js +1414 -0
  48. package/dist/chunk-6B3XMBKA.js +1716 -0
  49. package/dist/chunk-6CEJO4OM.js +1242 -0
  50. package/dist/chunk-6DQZUP3B.js +1460 -0
  51. package/dist/chunk-6ET624OE.js +1441 -0
  52. package/dist/chunk-6I7WFMAU.js +1862 -0
  53. package/dist/chunk-6MOKAYCL.js +1449 -0
  54. package/dist/chunk-6RFUALWB.js +1845 -0
  55. package/dist/chunk-73E57JUS.js +1231 -0
  56. package/dist/chunk-73SU7GT4.js +816 -0
  57. package/dist/chunk-74IRETUF.js +997 -0
  58. package/dist/chunk-77BYFMUN.js +1924 -0
  59. package/dist/chunk-7DAC2XE5.js +1460 -0
  60. package/dist/chunk-7GBQ4YSB.js +1024 -0
  61. package/dist/chunk-7TOJGUQ5.js +1803 -0
  62. package/dist/chunk-7W7KPLEG.js +1163 -0
  63. package/dist/chunk-7Y7ZXEN2.js +817 -0
  64. package/dist/chunk-A5WKH7H2.js +852 -0
  65. package/dist/chunk-A775UYQB.js +1886 -0
  66. package/dist/chunk-AC4OGTSK.js +1313 -0
  67. package/dist/chunk-ACCRUQ6J.js +1271 -0
  68. package/dist/chunk-AEAZZFTT.js +1886 -0
  69. package/dist/chunk-AIAC5Z55.js +1147 -0
  70. package/dist/chunk-AN34PI2R.js +1238 -0
  71. package/dist/chunk-APIA7MHJ.js +1355 -0
  72. package/dist/chunk-AQGIIT7R.js +1347 -0
  73. package/dist/chunk-ATXKV2NH.js +2111 -0
  74. package/dist/chunk-AVBKQZYR.js +1010 -0
  75. package/dist/chunk-AWIXDCZF.js +1329 -0
  76. package/dist/chunk-AXFHQBKT.js +2128 -0
  77. package/dist/chunk-AYDSTU4P.js +1156 -0
  78. package/dist/chunk-AZ35PK7E.js +1271 -0
  79. package/dist/chunk-BE6HB4IO.js +2155 -0
  80. package/dist/chunk-BIX2FI3S.js +1625 -0
  81. package/dist/chunk-BPPM5YPG.js +997 -0
  82. package/dist/chunk-BRCIVYKE.js +1420 -0
  83. package/dist/chunk-BRK2KKTF.js +1236 -0
  84. package/dist/chunk-BU7R2TVT.js +1862 -0
  85. package/dist/chunk-BXJQ4G5F.js +1901 -0
  86. package/dist/chunk-C3KTCROR.js +1128 -0
  87. package/dist/chunk-C42IGDJW.js +1032 -0
  88. package/dist/chunk-CBRPO2FE.js +1886 -0
  89. package/dist/chunk-CDNITKC6.js +1163 -0
  90. package/dist/chunk-CDVWUDFM.js +1389 -0
  91. package/dist/chunk-CH2IE453.js +1147 -0
  92. package/dist/chunk-CIHC46FS.js +1010 -0
  93. package/dist/chunk-CIYO754K.js +1687 -0
  94. package/dist/chunk-CJFNJ7U3.js +918 -0
  95. package/dist/chunk-CJN66CJY.js +1024 -0
  96. package/dist/chunk-CLJFTDJQ.js +1667 -0
  97. package/dist/chunk-CLNCOQNI.js +997 -0
  98. package/dist/chunk-CN4AUQL4.js +1460 -0
  99. package/dist/chunk-CQYGUBY6.js +1854 -0
  100. package/dist/chunk-CRJUMKVB.js +1862 -0
  101. package/dist/chunk-CZHUYI2J.js +997 -0
  102. package/dist/chunk-DIBSIWSR.js +1256 -0
  103. package/dist/chunk-DJGC3R4O.js +1836 -0
  104. package/dist/chunk-DJR2PEAQ.js +1884 -0
  105. package/dist/chunk-DKE7NWBK.js +1862 -0
  106. package/dist/chunk-DXYDN2OS.js +1147 -0
  107. package/dist/chunk-DZ3FEUJ7.js +1147 -0
  108. package/dist/chunk-EC47SFY3.js +1113 -0
  109. package/dist/chunk-ECAALEAK.js +1239 -0
  110. package/dist/chunk-ECEYIAQZ.js +997 -0
  111. package/dist/chunk-EKX7AV7O.js +1024 -0
  112. package/dist/chunk-EN6CTYUN.js +634 -0
  113. package/dist/chunk-EXCH47WX.js +1460 -0
  114. package/dist/chunk-EY2JOCTM.js +1862 -0
  115. package/dist/chunk-EYHB3LTH.js +1818 -0
  116. package/dist/chunk-F2AC5PKU.js +1446 -0
  117. package/dist/chunk-F5RCUJ62.js +1156 -0
  118. package/dist/chunk-F6OM65VA.js +1460 -0
  119. package/dist/chunk-FAEJ5CQU.js +997 -0
  120. package/dist/chunk-FB7X4KBF.js +1460 -0
  121. package/dist/chunk-FBSEEW3H.js +1862 -0
  122. package/dist/chunk-FBYY3TE5.js +1862 -0
  123. package/dist/chunk-FEA3GBGG.js +997 -0
  124. package/dist/chunk-FHPRGTOJ.js +1131 -0
  125. package/dist/chunk-FLAY6YWY.js +1389 -0
  126. package/dist/chunk-FNXIVJ3B.js +997 -0
  127. package/dist/chunk-FWRVG7RM.js +2160 -0
  128. package/dist/chunk-G47UW452.js +916 -0
  129. package/dist/chunk-G6V5O5AV.js +997 -0
  130. package/dist/chunk-GACQBIOO.js +1613 -0
  131. package/dist/chunk-GBFHLBWT.js +881 -0
  132. package/dist/chunk-GLJLTQMZ.js +997 -0
  133. package/dist/chunk-GN7DDBAT.js +1872 -0
  134. package/dist/chunk-GPTI42MM.js +1355 -0
  135. package/dist/chunk-GPXGCPVY.js +1834 -0
  136. package/dist/chunk-GRASQSCU.js +1886 -0
  137. package/dist/chunk-GU2WWG5C.js +1314 -0
  138. package/dist/chunk-GW3SAYT3.js +1679 -0
  139. package/dist/chunk-GZ4F2VI5.js +1447 -0
  140. package/dist/chunk-GZYXND4U.js +1322 -0
  141. package/dist/chunk-H27BRPVI.js +1862 -0
  142. package/dist/chunk-H4JRTOW7.js +1862 -0
  143. package/dist/chunk-HDS72SRU.js +1138 -0
  144. package/dist/chunk-HEUGSUL5.js +757 -0
  145. package/dist/chunk-HMZN5GPS.js +1024 -0
  146. package/dist/chunk-HN5SVGQO.js +1163 -0
  147. package/dist/chunk-HN6VQ5FI.js +242 -0
  148. package/dist/chunk-HNTQ66EL.js +2054 -0
  149. package/dist/chunk-HSDL3YK5.js +1134 -0
  150. package/dist/chunk-HVMIMERW.js +997 -0
  151. package/dist/chunk-HVWCQS2B.js +1834 -0
  152. package/dist/chunk-HVYMSOXQ.js +2156 -0
  153. package/dist/chunk-HYQITTK3.js +1862 -0
  154. package/dist/chunk-I4CCYPAI.js +1239 -0
  155. package/dist/chunk-IDG3X4UL.js +1229 -0
  156. package/dist/chunk-IDVRTQJ3.js +1514 -0
  157. package/dist/chunk-IEER23NN.js +1862 -0
  158. package/dist/chunk-IKLRYA4W.js +785 -0
  159. package/dist/chunk-IQBUSFBY.js +1270 -0
  160. package/dist/chunk-IUXQDZIR.js +1862 -0
  161. package/dist/chunk-IV74RJFV.js +1862 -0
  162. package/dist/chunk-IVEMIXXO.js +1854 -0
  163. package/dist/chunk-J4PNCGSP.js +1460 -0
  164. package/dist/chunk-J7ULLJUI.js +1862 -0
  165. package/dist/chunk-J7WHTBOM.js +983 -0
  166. package/dist/chunk-JBN6D7EG.js +1757 -0
  167. package/dist/chunk-JDKSD54C.js +1366 -0
  168. package/dist/chunk-JGWTOS7A.js +1507 -0
  169. package/dist/chunk-JHJ6FMSI.js +1804 -0
  170. package/dist/chunk-JJSHCP32.js +1282 -0
  171. package/dist/chunk-JLMAMC3V.js +1625 -0
  172. package/dist/chunk-JMTF7VV5.js +1919 -0
  173. package/dist/chunk-JO56GKTV.js +1133 -0
  174. package/dist/chunk-JRN3P6CS.js +1441 -0
  175. package/dist/chunk-JTKPRRSM.js +1024 -0
  176. package/dist/chunk-JVTFCTGO.js +1868 -0
  177. package/dist/chunk-JXH452LK.js +956 -0
  178. package/dist/chunk-K4SW5SP4.js +1147 -0
  179. package/dist/chunk-KANVHOQK.js +1880 -0
  180. package/dist/chunk-KBJZJWPZ.js +1143 -0
  181. package/dist/chunk-KFC4ZVRH.js +1798 -0
  182. package/dist/chunk-KHG6MSLS.js +1885 -0
  183. package/dist/chunk-KJJE6V5N.js +1886 -0
  184. package/dist/chunk-KKLEILZP.js +1868 -0
  185. package/dist/chunk-KW5QXXEN.js +1641 -0
  186. package/dist/chunk-KWMTK4N7.js +1147 -0
  187. package/dist/chunk-KYOW6LIV.js +1231 -0
  188. package/dist/chunk-KYWIUH3M.js +1355 -0
  189. package/dist/chunk-KZEA3HJL.js +1833 -0
  190. package/dist/chunk-L3KONBJE.js +1355 -0
  191. package/dist/chunk-L47B3OMM.js +1156 -0
  192. package/dist/chunk-LCQFWI6S.js +997 -0
  193. package/dist/chunk-LFIUZUI5.js +1138 -0
  194. package/dist/chunk-LHSLPQR4.js +1854 -0
  195. package/dist/chunk-LJGVAOFP.js +647 -0
  196. package/dist/chunk-LKJDYQPA.js +1687 -0
  197. package/dist/chunk-LOY6PWTR.js +1336 -0
  198. package/dist/chunk-LPFN3GNV.js +1147 -0
  199. package/dist/chunk-LPM7AN7S.js +1147 -0
  200. package/dist/chunk-LU6ES63L.js +1249 -0
  201. package/dist/chunk-M73DE7AU.js +1389 -0
  202. package/dist/chunk-M7OJ52WK.js +1448 -0
  203. package/dist/chunk-MCSM3DAE.js +1024 -0
  204. package/dist/chunk-MEP7OYUL.js +1417 -0
  205. package/dist/chunk-MFH6MVWX.js +1441 -0
  206. package/dist/chunk-MIHU3TFJ.js +1156 -0
  207. package/dist/chunk-MIU5FMSV.js +1329 -0
  208. package/dist/chunk-MJQMHH7Z.js +1976 -0
  209. package/dist/chunk-MLR2HUUY.js +1255 -0
  210. package/dist/chunk-MSBZHMUV.js +997 -0
  211. package/dist/chunk-MV4DZQRB.js +1163 -0
  212. package/dist/chunk-MWBLZDYK.js +1854 -0
  213. package/dist/chunk-N2MEPDSA.js +675 -0
  214. package/dist/chunk-N36ATUZM.js +1863 -0
  215. package/dist/chunk-NEHLM4WN.js +1610 -0
  216. package/dist/chunk-NHOJZ7FZ.js +1138 -0
  217. package/dist/chunk-NLPQBHHH.js +1282 -0
  218. package/dist/chunk-NMY3FWV7.js +1236 -0
  219. package/dist/chunk-NN2WDNCO.js +1138 -0
  220. package/dist/chunk-NNC7LH2Y.js +1258 -0
  221. package/dist/chunk-NQRWXPJ5.js +1275 -0
  222. package/dist/chunk-NR3G3D6Q.js +1238 -0
  223. package/dist/chunk-NRUAFOL3.js +2121 -0
  224. package/dist/chunk-NSCG7F6H.js +1862 -0
  225. package/dist/chunk-NXHVG7ZI.js +1113 -0
  226. package/dist/chunk-NYKPTBXA.js +1258 -0
  227. package/dist/chunk-O4AE4MFX.js +920 -0
  228. package/dist/chunk-O7GTMG3C.js +1467 -0
  229. package/dist/chunk-OBUP5UIM.js +997 -0
  230. package/dist/chunk-ONI2DTTL.js +1156 -0
  231. package/dist/chunk-OQHLTSVD.js +1776 -0
  232. package/dist/chunk-OVV6SHTA.js +997 -0
  233. package/dist/chunk-PAPAMVNI.js +1156 -0
  234. package/dist/chunk-PH7OXFMJ.js +997 -0
  235. package/dist/chunk-PHFLPSZU.js +1608 -0
  236. package/dist/chunk-PTVSK5DV.js +1854 -0
  237. package/dist/chunk-PUHWX6PD.js +1156 -0
  238. package/dist/chunk-PYDU2HN2.js +1803 -0
  239. package/dist/chunk-Q2AMIXBY.js +1250 -0
  240. package/dist/chunk-Q2EARVB7.js +1414 -0
  241. package/dist/chunk-Q4HFSYSN.js +1024 -0
  242. package/dist/chunk-Q65PNALY.js +1024 -0
  243. package/dist/chunk-QBQNHCYH.js +1791 -0
  244. package/dist/chunk-QGI55HK3.js +1433 -0
  245. package/dist/chunk-QIAODEAT.js +1862 -0
  246. package/dist/chunk-QLRJ2X3B.js +1800 -0
  247. package/dist/chunk-QTLVBIBL.js +1147 -0
  248. package/dist/chunk-QUPLQ7O4.js +1862 -0
  249. package/dist/chunk-QZGUSWLN.js +1415 -0
  250. package/dist/chunk-R7N3T7YR.js +1130 -0
  251. package/dist/chunk-RFS3GC46.js +239 -0
  252. package/dist/chunk-RJA7HIQO.js +1823 -0
  253. package/dist/chunk-RJLU3F7G.js +1156 -0
  254. package/dist/chunk-RLBXW5AY.js +1156 -0
  255. package/dist/chunk-RMKHLIMU.js +1147 -0
  256. package/dist/chunk-RS7F3BLO.js +1255 -0
  257. package/dist/chunk-RYLDHQQT.js +997 -0
  258. package/dist/chunk-RYYTEAQ7.js +1147 -0
  259. package/dist/chunk-S2KNKYQJ.js +1815 -0
  260. package/dist/chunk-S5R5IZJH.js +2056 -0
  261. package/dist/chunk-S5S7OBDZ.js +1355 -0
  262. package/dist/chunk-S6YKNJQG.js +1868 -0
  263. package/dist/chunk-SBDVWSWM.js +1251 -0
  264. package/dist/chunk-SBXSREFV.js +1237 -0
  265. package/dist/chunk-SDZJV47M.js +1238 -0
  266. package/dist/chunk-SMBILO75.js +1024 -0
  267. package/dist/chunk-SUSLSP3P.js +1456 -0
  268. package/dist/chunk-T4GPZ2AG.js +1128 -0
  269. package/dist/chunk-TA7EDJXT.js +1460 -0
  270. package/dist/chunk-TAW2ISST.js +1024 -0
  271. package/dist/chunk-TB6KKWS2.js +1138 -0
  272. package/dist/chunk-TBZCEX5O.js +1355 -0
  273. package/dist/chunk-TDOPKFNW.js +756 -0
  274. package/dist/chunk-TGY3JSDQ.js +1460 -0
  275. package/dist/chunk-THOIGUSY.js +666 -0
  276. package/dist/chunk-TLSGQKLO.js +1836 -0
  277. package/dist/chunk-TQ2QEU3G.js +1460 -0
  278. package/dist/chunk-TRJODOZM.js +1232 -0
  279. package/dist/chunk-TSBMRYLQ.js +1717 -0
  280. package/dist/chunk-TUL3R6KB.js +1024 -0
  281. package/dist/chunk-TWCD6YPP.js +2129 -0
  282. package/dist/chunk-TWQDGVLI.js +1323 -0
  283. package/dist/chunk-TZQLWQTW.js +769 -0
  284. package/dist/chunk-U22K555L.js +1803 -0
  285. package/dist/chunk-U3VXLQTW.js +1707 -0
  286. package/dist/chunk-U5QM4SRB.js +2054 -0
  287. package/dist/chunk-UCZLOOAW.js +997 -0
  288. package/dist/chunk-UDA2OZLK.js +1242 -0
  289. package/dist/chunk-UDASJ4IC.js +1355 -0
  290. package/dist/chunk-UGU2KSOQ.js +1113 -0
  291. package/dist/chunk-UJHB3CLA.js +1130 -0
  292. package/dist/chunk-UNUTAECX.js +1238 -0
  293. package/dist/chunk-UUUJVWXA.js +1806 -0
  294. package/dist/chunk-UV4WM7Q5.js +2039 -0
  295. package/dist/chunk-UXPGPOQ3.js +2113 -0
  296. package/dist/chunk-UYVWNYFB.js +1434 -0
  297. package/dist/chunk-UYWI4MPU.js +1460 -0
  298. package/dist/chunk-V2FNBN3P.js +997 -0
  299. package/dist/chunk-V6CF5XXG.js +1862 -0
  300. package/dist/chunk-V6UUV2SZ.js +1156 -0
  301. package/dist/chunk-VARTDMWQ.js +1862 -0
  302. package/dist/chunk-VC7ZYKMP.js +1156 -0
  303. package/dist/chunk-VCJNX77B.js +2038 -0
  304. package/dist/chunk-VDE2I72J.js +650 -0
  305. package/dist/chunk-VEO7FKEL.js +1156 -0
  306. package/dist/chunk-VIJYIU7E.js +2124 -0
  307. package/dist/chunk-VJX4WETG.js +1136 -0
  308. package/dist/chunk-VO3QDFU2.js +1276 -0
  309. package/dist/chunk-VOX2Q2V2.js +1933 -0
  310. package/dist/chunk-W7J5XM2X.js +1862 -0
  311. package/dist/chunk-WONM6P4N.js +1862 -0
  312. package/dist/chunk-WW576PYD.js +1862 -0
  313. package/dist/chunk-XCZCCA2D.js +997 -0
  314. package/dist/chunk-XHQOG4X6.js +1871 -0
  315. package/dist/chunk-XIYLHBWA.js +1163 -0
  316. package/dist/chunk-XKZ6XWSE.js +1907 -0
  317. package/dist/chunk-XLHKOBSF.js +1815 -0
  318. package/dist/chunk-XMMFUBB5.js +1270 -0
  319. package/dist/chunk-XQLK777K.js +1442 -0
  320. package/dist/chunk-XRN47M65.js +997 -0
  321. package/dist/chunk-XVBKUEXA.js +1441 -0
  322. package/dist/chunk-XY4ISIAV.js +1639 -0
  323. package/dist/chunk-Y2SOII6F.js +1156 -0
  324. package/dist/chunk-Y5TJU6YZ.js +1163 -0
  325. package/dist/chunk-YBPCMSUU.js +1147 -0
  326. package/dist/chunk-YDAZ3YZT.js +1004 -0
  327. package/dist/chunk-YH2QPUWO.js +1621 -0
  328. package/dist/chunk-YJX4O5CY.js +1355 -0
  329. package/dist/chunk-YNJMS3VK.js +997 -0
  330. package/dist/chunk-YNRZMOC3.js +997 -0
  331. package/dist/chunk-YNUF5JNP.js +1163 -0
  332. package/dist/chunk-YO7TJ6SG.js +2135 -0
  333. package/dist/chunk-YTUUFYVS.js +1842 -0
  334. package/dist/chunk-YXCOG54V.js +997 -0
  335. package/dist/chunk-Z7V254BA.js +1432 -0
  336. package/dist/chunk-ZBHRR3RS.js +1256 -0
  337. package/dist/chunk-ZM47X5PT.js +1236 -0
  338. package/dist/chunk-ZO6JUCLC.js +917 -0
  339. package/dist/chunk-ZOF4ERNI.js +2039 -0
  340. package/dist/chunk-ZOTRZN3T.js +1238 -0
  341. package/dist/chunk-ZPBA4JGE.js +1234 -0
  342. package/dist/chunk-ZTKGRHNV.js +1138 -0
  343. package/dist/chunk-ZW2JM2OY.js +997 -0
  344. package/dist/chunk-ZXYHUC7C.js +1722 -0
  345. package/dist/cli.d.ts +1 -0
  346. package/dist/cli.js +8 -0
  347. package/dist/index.d.ts +47 -0
  348. package/dist/index.js +37 -0
  349. package/dist/run-interactive-ink-2CDKFV6C.js +783 -0
  350. package/dist/run-interactive-ink-2JULLCIS.js +461 -0
  351. package/dist/run-interactive-ink-2KIHEGXT.js +451 -0
  352. package/dist/run-interactive-ink-2LX2NZRL.js +737 -0
  353. package/dist/run-interactive-ink-2OH6AV3C.js +756 -0
  354. package/dist/run-interactive-ink-2PLJ5XST.js +423 -0
  355. package/dist/run-interactive-ink-2ZI75VMK.js +462 -0
  356. package/dist/run-interactive-ink-3BHGPZ4B.js +423 -0
  357. package/dist/run-interactive-ink-3IUV3456.js +777 -0
  358. package/dist/run-interactive-ink-3QZK5PWY.js +168 -0
  359. package/dist/run-interactive-ink-3VLL4FNN.js +423 -0
  360. package/dist/run-interactive-ink-47Y2KAFZ.js +668 -0
  361. package/dist/run-interactive-ink-4CBTS636.js +423 -0
  362. package/dist/run-interactive-ink-4CHDJRAK.js +423 -0
  363. package/dist/run-interactive-ink-4E6GM5ST.js +423 -0
  364. package/dist/run-interactive-ink-4EKHIHGU.js +462 -0
  365. package/dist/run-interactive-ink-4NO7O233.js +744 -0
  366. package/dist/run-interactive-ink-55IZU2EZ.js +741 -0
  367. package/dist/run-interactive-ink-5A7BER6J.js +423 -0
  368. package/dist/run-interactive-ink-5NEFKF3R.js +423 -0
  369. package/dist/run-interactive-ink-5TCBH3Z4.js +462 -0
  370. package/dist/run-interactive-ink-5WOLWMGH.js +747 -0
  371. package/dist/run-interactive-ink-66JFIG2P.js +462 -0
  372. package/dist/run-interactive-ink-6R77DKEV.js +744 -0
  373. package/dist/run-interactive-ink-7B6HI7XT.js +679 -0
  374. package/dist/run-interactive-ink-7ICZH4E3.js +423 -0
  375. package/dist/run-interactive-ink-7LWBJYQE.js +423 -0
  376. package/dist/run-interactive-ink-7Y7MVKPA.js +438 -0
  377. package/dist/run-interactive-ink-A264MR35.js +423 -0
  378. package/dist/run-interactive-ink-A3NCKFFM.js +423 -0
  379. package/dist/run-interactive-ink-A4FBMTZ5.js +563 -0
  380. package/dist/run-interactive-ink-A7YPXRXR.js +462 -0
  381. package/dist/run-interactive-ink-AAER2EXR.js +451 -0
  382. package/dist/run-interactive-ink-ADVQJ2GF.js +423 -0
  383. package/dist/run-interactive-ink-ALV34HZF.js +451 -0
  384. package/dist/run-interactive-ink-ARDK3CO6.js +462 -0
  385. package/dist/run-interactive-ink-AVMVDBQK.js +462 -0
  386. package/dist/run-interactive-ink-AWV7ZOTC.js +423 -0
  387. package/dist/run-interactive-ink-AWZLJJLH.js +423 -0
  388. package/dist/run-interactive-ink-B25V52JO.js +462 -0
  389. package/dist/run-interactive-ink-BC6RGDCH.js +451 -0
  390. package/dist/run-interactive-ink-BMWLPUEU.js +451 -0
  391. package/dist/run-interactive-ink-BRT2MMN6.js +423 -0
  392. package/dist/run-interactive-ink-CB42OWV4.js +572 -0
  393. package/dist/run-interactive-ink-COZSBQND.js +777 -0
  394. package/dist/run-interactive-ink-CQFV44HM.js +451 -0
  395. package/dist/run-interactive-ink-CQMG45KQ.js +462 -0
  396. package/dist/run-interactive-ink-CQP3B7JM.js +669 -0
  397. package/dist/run-interactive-ink-CUCLNJCF.js +451 -0
  398. package/dist/run-interactive-ink-DEEZYQK5.js +423 -0
  399. package/dist/run-interactive-ink-DF5P6WZX.js +423 -0
  400. package/dist/run-interactive-ink-DFITKRY4.js +423 -0
  401. package/dist/run-interactive-ink-DG6TTEQQ.js +462 -0
  402. package/dist/run-interactive-ink-DH7ECECB.js +438 -0
  403. package/dist/run-interactive-ink-DMTUJHP6.js +423 -0
  404. package/dist/run-interactive-ink-DNSBSWLT.js +451 -0
  405. package/dist/run-interactive-ink-DV3TZEM3.js +742 -0
  406. package/dist/run-interactive-ink-E4AYCUDK.js +451 -0
  407. package/dist/run-interactive-ink-E4GPBTSL.js +462 -0
  408. package/dist/run-interactive-ink-ECVTPOIE.js +462 -0
  409. package/dist/run-interactive-ink-ELPCCGT3.js +423 -0
  410. package/dist/run-interactive-ink-ELWVRJZS.js +451 -0
  411. package/dist/run-interactive-ink-ENBMPAV7.js +462 -0
  412. package/dist/run-interactive-ink-EOVWUC3C.js +451 -0
  413. package/dist/run-interactive-ink-EVHWEXM4.js +451 -0
  414. package/dist/run-interactive-ink-F7SBCWE3.js +423 -0
  415. package/dist/run-interactive-ink-FCHXZ3JW.js +423 -0
  416. package/dist/run-interactive-ink-G27WWB5V.js +423 -0
  417. package/dist/run-interactive-ink-GDFTNYRC.js +462 -0
  418. package/dist/run-interactive-ink-GHGZAYSM.js +533 -0
  419. package/dist/run-interactive-ink-GK4IVHVT.js +684 -0
  420. package/dist/run-interactive-ink-GNCZNR6W.js +423 -0
  421. package/dist/run-interactive-ink-GQ53M5SW.js +605 -0
  422. package/dist/run-interactive-ink-GT7R7X2P.js +762 -0
  423. package/dist/run-interactive-ink-GWZTEIEZ.js +462 -0
  424. package/dist/run-interactive-ink-HA45VNUD.js +703 -0
  425. package/dist/run-interactive-ink-HB44RGFJ.js +423 -0
  426. package/dist/run-interactive-ink-HCVGKG23.js +462 -0
  427. package/dist/run-interactive-ink-HYKJ4PZ3.js +462 -0
  428. package/dist/run-interactive-ink-IGEBXARA.js +423 -0
  429. package/dist/run-interactive-ink-IGU7UVL5.js +462 -0
  430. package/dist/run-interactive-ink-JNVKOJRV.js +462 -0
  431. package/dist/run-interactive-ink-JYON5JQQ.js +461 -0
  432. package/dist/run-interactive-ink-K47CRELE.js +423 -0
  433. package/dist/run-interactive-ink-KCHMEHVH.js +547 -0
  434. package/dist/run-interactive-ink-KEB6ENSZ.js +423 -0
  435. package/dist/run-interactive-ink-KEWSKPTE.js +451 -0
  436. package/dist/run-interactive-ink-KJUHMADH.js +423 -0
  437. package/dist/run-interactive-ink-KW5NPJ32.js +423 -0
  438. package/dist/run-interactive-ink-L3EDWKF6.js +687 -0
  439. package/dist/run-interactive-ink-L4BCC6WG.js +462 -0
  440. package/dist/run-interactive-ink-LQPEZ6PR.js +520 -0
  441. package/dist/run-interactive-ink-LQXS5GMO.js +253 -0
  442. package/dist/run-interactive-ink-M4SOBC5E.js +817 -0
  443. package/dist/run-interactive-ink-MJGAQA2R.js +423 -0
  444. package/dist/run-interactive-ink-MPJB6PCJ.js +451 -0
  445. package/dist/run-interactive-ink-MXWZBG3F.js +461 -0
  446. package/dist/run-interactive-ink-N4XIVCWV.js +562 -0
  447. package/dist/run-interactive-ink-ND3PWHDU.js +462 -0
  448. package/dist/run-interactive-ink-NJTAWS3L.js +462 -0
  449. package/dist/run-interactive-ink-OBWWSIZ5.js +423 -0
  450. package/dist/run-interactive-ink-OD7YJBYI.js +423 -0
  451. package/dist/run-interactive-ink-OE23JGIN.js +451 -0
  452. package/dist/run-interactive-ink-OJ4EUMR5.js +462 -0
  453. package/dist/run-interactive-ink-OOC74RCY.js +423 -0
  454. package/dist/run-interactive-ink-P2PHTOX6.js +462 -0
  455. package/dist/run-interactive-ink-PE3XWCVU.js +423 -0
  456. package/dist/run-interactive-ink-PJBWWQF3.js +423 -0
  457. package/dist/run-interactive-ink-PLLZW6BV.js +678 -0
  458. package/dist/run-interactive-ink-PTXNQZ57.js +451 -0
  459. package/dist/run-interactive-ink-PWN5Q6T6.js +423 -0
  460. package/dist/run-interactive-ink-PZK4RD77.js +423 -0
  461. package/dist/run-interactive-ink-QBSXVTCG.js +462 -0
  462. package/dist/run-interactive-ink-QHOQB55Q.js +727 -0
  463. package/dist/run-interactive-ink-QIAC6ZMT.js +451 -0
  464. package/dist/run-interactive-ink-QLLGPIUL.js +462 -0
  465. package/dist/run-interactive-ink-R5W3ZEMY.js +818 -0
  466. package/dist/run-interactive-ink-RHDW3EHS.js +462 -0
  467. package/dist/run-interactive-ink-RLRKPNTS.js +668 -0
  468. package/dist/run-interactive-ink-RORQKBWV.js +425 -0
  469. package/dist/run-interactive-ink-RS6OZ66I.js +423 -0
  470. package/dist/run-interactive-ink-RVGRYBNQ.js +684 -0
  471. package/dist/run-interactive-ink-S35BKUZB.js +423 -0
  472. package/dist/run-interactive-ink-SS6RAQDE.js +423 -0
  473. package/dist/run-interactive-ink-SVP37E33.js +451 -0
  474. package/dist/run-interactive-ink-T53KH7FU.js +423 -0
  475. package/dist/run-interactive-ink-TCQUCJVS.js +423 -0
  476. package/dist/run-interactive-ink-TLUBKTTN.js +423 -0
  477. package/dist/run-interactive-ink-U2BAAHUU.js +438 -0
  478. package/dist/run-interactive-ink-U2KXGJ5S.js +451 -0
  479. package/dist/run-interactive-ink-U73PEMAO.js +423 -0
  480. package/dist/run-interactive-ink-UFTOTXIX.js +669 -0
  481. package/dist/run-interactive-ink-UJNQ54ZU.js +451 -0
  482. package/dist/run-interactive-ink-V63D5IV5.js +423 -0
  483. package/dist/run-interactive-ink-VLBITT4H.js +451 -0
  484. package/dist/run-interactive-ink-VSAX3XFR.js +462 -0
  485. package/dist/run-interactive-ink-WBJOY622.js +729 -0
  486. package/dist/run-interactive-ink-WERR64KP.js +451 -0
  487. package/dist/run-interactive-ink-WHTQ5OV6.js +732 -0
  488. package/dist/run-interactive-ink-WJBK4XIO.js +423 -0
  489. package/dist/run-interactive-ink-WQLCJ34D.js +462 -0
  490. package/dist/run-interactive-ink-WRKQJIAG.js +733 -0
  491. package/dist/run-interactive-ink-XG3P25DM.js +423 -0
  492. package/dist/run-interactive-ink-XPVJ22HP.js +462 -0
  493. package/dist/run-interactive-ink-XS5I2CGI.js +423 -0
  494. package/dist/run-interactive-ink-XVK7DXPB.js +785 -0
  495. package/dist/run-interactive-ink-YB3USTSB.js +706 -0
  496. package/dist/run-interactive-ink-YCBRQCG2.js +423 -0
  497. package/dist/run-interactive-ink-YOPSMTYJ.js +423 -0
  498. package/dist/run-interactive-ink-YYPCL65X.js +665 -0
  499. package/dist/run-interactive-ink-YYZT5L4Z.js +462 -0
  500. package/dist/run-interactive-ink-ZBPYRTJK.js +462 -0
  501. package/dist/run-interactive-ink-ZCCKFR2A.js +451 -0
  502. package/dist/run-interactive-ink-ZKYQ4CJW.js +423 -0
  503. package/dist/run-interactive-ink-ZMO2352Q.js +685 -0
  504. package/dist/run-interactive-ink-ZTDQ773P.js +423 -0
  505. package/dist/run-interactive-ink-ZWH74XDY.js +674 -0
  506. package/package.json +50 -0
  507. package/src/cli.ts +4 -0
  508. package/src/index.ts +1800 -0
  509. package/src/init-feature-context.ts +153 -0
  510. package/src/init-onboarding.ts +529 -0
  511. package/src/interactive-ink.tsx +5 -0
  512. package/src/run-interactive-ink.ts +618 -0
  513. package/src/web-ui.ts +1975 -0
  514. package/test/cli.test.ts +587 -0
  515. package/test/init-onboarding.contract.test.ts +48 -0
  516. package/tsconfig.json +9 -0
@@ -0,0 +1,650 @@
1
+ // src/index.ts
2
+ import { spawn } from "child_process";
3
+ import { access, mkdir, readFile, writeFile } from "fs/promises";
4
+ import {
5
+ createServer
6
+ } from "http";
7
+ import { dirname, resolve } from "path";
8
+ import { createRequire } from "module";
9
+ import readline from "readline/promises";
10
+ import { fileURLToPath } from "url";
11
+ import {
12
+ AgentHarness,
13
+ TelemetryEmitter,
14
+ createStateStore,
15
+ loadAgentlConfig
16
+ } from "@agentl/harness";
17
+ import { Command } from "commander";
18
+ import dotenv from "dotenv";
19
+ import YAML from "yaml";
20
+ var __dirname = dirname(fileURLToPath(import.meta.url));
21
+ var require2 = createRequire(import.meta.url);
22
+ var writeJson = (response, statusCode, payload) => {
23
+ response.writeHead(statusCode, { "Content-Type": "application/json" });
24
+ response.end(JSON.stringify(payload));
25
+ };
26
+ var readRequestBody = async (request) => {
27
+ const chunks = [];
28
+ for await (const chunk of request) {
29
+ chunks.push(Buffer.from(chunk));
30
+ }
31
+ const body = Buffer.concat(chunks).toString("utf8");
32
+ return body.length > 0 ? JSON.parse(body) : {};
33
+ };
34
+ var parseParams = (values) => {
35
+ const params = {};
36
+ for (const value of values) {
37
+ const [key, ...rest] = value.split("=");
38
+ if (!key) {
39
+ continue;
40
+ }
41
+ params[key] = rest.join("=");
42
+ }
43
+ return params;
44
+ };
45
+ var AGENT_TEMPLATE = `---
46
+ name: my-agent
47
+ description: A helpful AgentL assistant
48
+ model:
49
+ provider: anthropic
50
+ name: claude-sonnet-4-20250514
51
+ temperature: 0.2
52
+ limits:
53
+ maxSteps: 50
54
+ timeout: 300
55
+ ---
56
+
57
+ # My Agent
58
+
59
+ You are a helpful assistant built with AgentL.
60
+
61
+ Working directory: {{runtime.workingDir}}
62
+ Environment: {{runtime.environment}}
63
+
64
+ ## Task Guidance
65
+
66
+ - Use tools when needed
67
+ - Explain your reasoning clearly
68
+ - Ask clarifying questions when requirements are ambiguous
69
+ `;
70
+ var CONFIG_TEMPLATE = `export default {
71
+ mcp: [],
72
+ auth: { required: false },
73
+ state: { provider: 'memory', ttl: 3600 },
74
+ telemetry: { enabled: true }
75
+ }
76
+ `;
77
+ var PACKAGE_TEMPLATE = (name) => JSON.stringify(
78
+ {
79
+ name,
80
+ private: true,
81
+ type: "module",
82
+ dependencies: {
83
+ "@agentl/harness": "^0.1.0"
84
+ }
85
+ },
86
+ null,
87
+ 2
88
+ );
89
+ var ENV_TEMPLATE = "ANTHROPIC_API_KEY=sk-ant-...\n";
90
+ var GITIGNORE_TEMPLATE = ".env\nnode_modules\ndist\n";
91
+ var ensureFile = async (path, content) => {
92
+ await mkdir(dirname(path), { recursive: true });
93
+ await writeFile(path, content, { encoding: "utf8", flag: "wx" });
94
+ };
95
+ var writeConfigFile = async (workingDir, config) => {
96
+ const serialized = `export default ${JSON.stringify(config, null, 2)}
97
+ `;
98
+ await writeFile(resolve(workingDir, "agentl.config.js"), serialized, "utf8");
99
+ };
100
+ var extractToken = (request, authConfig) => {
101
+ if (authConfig.type === "header") {
102
+ const headerName = (authConfig.headerName ?? "x-agent-api-key").toLowerCase();
103
+ const raw = request.headers[headerName];
104
+ return Array.isArray(raw) ? raw[0] ?? "" : raw ?? "";
105
+ }
106
+ const authHeader = request.headers.authorization ?? "";
107
+ if (authHeader.toLowerCase().startsWith("bearer ")) {
108
+ return authHeader.slice(7).trim();
109
+ }
110
+ return "";
111
+ };
112
+ var authorizeRequest = async (request, config) => {
113
+ const authConfig = config?.auth;
114
+ if (!authConfig?.required) {
115
+ return true;
116
+ }
117
+ const token = extractToken(request, authConfig);
118
+ if (!token) {
119
+ return false;
120
+ }
121
+ if (authConfig.validate) {
122
+ return await authConfig.validate(token, request);
123
+ }
124
+ return token === (process.env.AGENT_API_KEY ?? "");
125
+ };
126
+ var initProject = async (projectName, options) => {
127
+ const baseDir = options?.workingDir ?? process.cwd();
128
+ const projectDir = resolve(baseDir, projectName);
129
+ await mkdir(projectDir, { recursive: true });
130
+ await ensureFile(resolve(projectDir, "AGENT.md"), AGENT_TEMPLATE);
131
+ await ensureFile(resolve(projectDir, "agentl.config.js"), CONFIG_TEMPLATE);
132
+ await ensureFile(resolve(projectDir, "package.json"), PACKAGE_TEMPLATE(projectName));
133
+ await ensureFile(resolve(projectDir, ".env.example"), ENV_TEMPLATE);
134
+ await ensureFile(resolve(projectDir, ".gitignore"), GITIGNORE_TEMPLATE);
135
+ process.stdout.write(`Initialized AgentL project at ${projectDir}
136
+ `);
137
+ };
138
+ var formatSseEvent = (event) => `event: ${event.type}
139
+ data: ${JSON.stringify(event)}
140
+
141
+ `;
142
+ var startDevServer = async (port, options) => {
143
+ const workingDir = options?.workingDir ?? process.cwd();
144
+ dotenv.config({ path: resolve(workingDir, ".env") });
145
+ const config = await loadAgentlConfig(workingDir);
146
+ const harness = new AgentHarness({ workingDir });
147
+ await harness.initialize();
148
+ const telemetry = new TelemetryEmitter(config?.telemetry);
149
+ const stateStore = createStateStore(config?.state);
150
+ const server = createServer(async (request, response) => {
151
+ if (!request.url || !request.method) {
152
+ writeJson(response, 404, { error: "Not found" });
153
+ return;
154
+ }
155
+ const [pathname] = request.url.split("?");
156
+ if (pathname === "/health" && request.method === "GET") {
157
+ writeJson(response, 200, { status: "ok" });
158
+ return;
159
+ }
160
+ if (!await authorizeRequest(request, config)) {
161
+ writeJson(response, 401, {
162
+ code: "AUTH_ERROR",
163
+ message: "Authentication failed"
164
+ });
165
+ return;
166
+ }
167
+ if (pathname === "/run/sync" && request.method === "POST") {
168
+ try {
169
+ const input = await readRequestBody(request);
170
+ const output = await harness.runToCompletion(input);
171
+ await stateStore.set({
172
+ runId: output.runId,
173
+ messages: output.messages,
174
+ updatedAt: Date.now()
175
+ });
176
+ for (const event of output.events) {
177
+ await telemetry.emit(event);
178
+ }
179
+ writeJson(response, 200, {
180
+ runId: output.runId,
181
+ status: output.result.status,
182
+ result: output.result
183
+ });
184
+ } catch (error) {
185
+ writeJson(response, 500, {
186
+ code: "RUN_ERROR",
187
+ message: error instanceof Error ? error.message : "Unknown error"
188
+ });
189
+ }
190
+ return;
191
+ }
192
+ if (pathname === "/run" && request.method === "POST") {
193
+ response.writeHead(200, {
194
+ "Content-Type": "text/event-stream",
195
+ "Cache-Control": "no-cache",
196
+ Connection: "keep-alive"
197
+ });
198
+ try {
199
+ const input = await readRequestBody(request);
200
+ let runId = "";
201
+ let finalResponse = "";
202
+ const baseMessages = [
203
+ ...input.messages ?? [],
204
+ { role: "user", content: input.task }
205
+ ];
206
+ for await (const event of harness.run(input)) {
207
+ if (event.type === "run:started") {
208
+ runId = event.runId;
209
+ }
210
+ if (event.type === "run:completed") {
211
+ finalResponse = event.result.response ?? "";
212
+ }
213
+ await telemetry.emit(event);
214
+ response.write(formatSseEvent(event));
215
+ }
216
+ if (runId) {
217
+ await stateStore.set({
218
+ runId,
219
+ messages: [...baseMessages, { role: "assistant", content: finalResponse }],
220
+ updatedAt: Date.now()
221
+ });
222
+ }
223
+ } catch (error) {
224
+ response.write(
225
+ formatSseEvent({
226
+ type: "run:error",
227
+ runId: "run_unknown",
228
+ error: {
229
+ code: "RUN_ERROR",
230
+ message: error instanceof Error ? error.message : "Unknown error"
231
+ }
232
+ })
233
+ );
234
+ } finally {
235
+ response.end();
236
+ }
237
+ return;
238
+ }
239
+ if (pathname === "/continue" && request.method === "POST") {
240
+ try {
241
+ const body = await readRequestBody(request);
242
+ if (!body.runId || !body.message) {
243
+ writeJson(response, 400, {
244
+ code: "VALIDATION_ERROR",
245
+ message: "Both runId and message are required"
246
+ });
247
+ return;
248
+ }
249
+ const state = await stateStore.get(body.runId);
250
+ if (!state) {
251
+ writeJson(response, 404, {
252
+ code: "RUN_NOT_FOUND",
253
+ message: `No conversation found for runId ${body.runId}`
254
+ });
255
+ return;
256
+ }
257
+ const output = await harness.runToCompletion({
258
+ task: body.message,
259
+ parameters: body.parameters,
260
+ messages: state.messages
261
+ });
262
+ await stateStore.set({
263
+ runId: output.runId,
264
+ messages: output.messages,
265
+ updatedAt: Date.now()
266
+ });
267
+ for (const event of output.events) {
268
+ await telemetry.emit(event);
269
+ }
270
+ writeJson(response, 200, {
271
+ runId: output.runId,
272
+ status: output.result.status,
273
+ result: output.result
274
+ });
275
+ } catch (error) {
276
+ writeJson(response, 500, {
277
+ code: "CONTINUE_ERROR",
278
+ message: error instanceof Error ? error.message : "Unknown error"
279
+ });
280
+ }
281
+ return;
282
+ }
283
+ writeJson(response, 404, { error: "Not found" });
284
+ });
285
+ await new Promise((resolveStart) => {
286
+ server.listen(port, () => resolveStart());
287
+ });
288
+ process.stdout.write(`AgentL dev server running at http://localhost:${port}
289
+ `);
290
+ return server;
291
+ };
292
+ var runOnce = async (task, options) => {
293
+ const workingDir = options.workingDir ?? process.cwd();
294
+ dotenv.config({ path: resolve(workingDir, ".env") });
295
+ const config = await loadAgentlConfig(workingDir);
296
+ const harness = new AgentHarness({ workingDir });
297
+ const telemetry = new TelemetryEmitter(config?.telemetry);
298
+ await harness.initialize();
299
+ const fileBlobs = await Promise.all(
300
+ options.filePaths.map(async (path) => {
301
+ const content = await readFile(resolve(workingDir, path), "utf8");
302
+ return `# File: ${path}
303
+ ${content}`;
304
+ })
305
+ );
306
+ const input = {
307
+ task: fileBlobs.length > 0 ? `${task}
308
+
309
+ ${fileBlobs.join("\n\n")}` : task,
310
+ parameters: options.params
311
+ };
312
+ if (options.json) {
313
+ const output = await harness.runToCompletion(input);
314
+ for (const event of output.events) {
315
+ await telemetry.emit(event);
316
+ }
317
+ process.stdout.write(`${JSON.stringify(output, null, 2)}
318
+ `);
319
+ return;
320
+ }
321
+ for await (const event of harness.run(input)) {
322
+ await telemetry.emit(event);
323
+ if (event.type === "model:chunk") {
324
+ process.stdout.write(event.content);
325
+ }
326
+ if (event.type === "run:error") {
327
+ process.stderr.write(`
328
+ Error: ${event.error.message}
329
+ `);
330
+ }
331
+ if (event.type === "run:completed") {
332
+ process.stdout.write("\n");
333
+ }
334
+ }
335
+ };
336
+ var runInteractive = async (workingDir, params) => {
337
+ const harness = new AgentHarness({ workingDir });
338
+ await harness.initialize();
339
+ const rl = readline.createInterface({
340
+ input: process.stdin,
341
+ output: process.stdout
342
+ });
343
+ const messages = [];
344
+ process.stdout.write("Interactive mode. Type 'exit' to quit.\n");
345
+ while (true) {
346
+ const task = await rl.question("> ");
347
+ if (task.trim().toLowerCase() === "exit") {
348
+ break;
349
+ }
350
+ const output = await harness.runToCompletion({
351
+ task,
352
+ parameters: params,
353
+ messages
354
+ });
355
+ process.stdout.write(`${output.result.response ?? ""}
356
+ `);
357
+ messages.splice(0, messages.length, ...output.messages);
358
+ }
359
+ rl.close();
360
+ };
361
+ var listTools = async (workingDir) => {
362
+ dotenv.config({ path: resolve(workingDir, ".env") });
363
+ const harness = new AgentHarness({ workingDir });
364
+ await harness.initialize();
365
+ const tools = harness.listTools();
366
+ if (tools.length === 0) {
367
+ process.stdout.write("No tools registered.\n");
368
+ return;
369
+ }
370
+ process.stdout.write("Available tools:\n");
371
+ for (const tool of tools) {
372
+ process.stdout.write(`- ${tool.name}: ${tool.description}
373
+ `);
374
+ }
375
+ };
376
+ var runInstallCommand = async (workingDir, packageNameOrPath) => await new Promise((resolveInstall, rejectInstall) => {
377
+ const child = spawn("pnpm", ["add", packageNameOrPath], {
378
+ cwd: workingDir,
379
+ stdio: "inherit",
380
+ env: process.env
381
+ });
382
+ child.on("exit", (code) => {
383
+ if (code === 0) {
384
+ resolveInstall();
385
+ return;
386
+ }
387
+ rejectInstall(new Error(`pnpm add failed with exit code ${code ?? -1}`));
388
+ });
389
+ });
390
+ var validateSkillPackage = async (workingDir, packageNameOrPath) => {
391
+ const packageJsonPath = packageNameOrPath.startsWith(".") || packageNameOrPath.startsWith("/") ? resolve(workingDir, packageNameOrPath, "package.json") : require2.resolve(`${packageNameOrPath}/package.json`, {
392
+ paths: [workingDir]
393
+ });
394
+ const skillRoot = resolve(packageJsonPath, "..");
395
+ const skillManifest = resolve(skillRoot, "SKILL.md");
396
+ try {
397
+ await access(skillManifest);
398
+ } catch {
399
+ throw new Error(`Skill validation failed: missing SKILL.md in ${skillRoot}`);
400
+ }
401
+ };
402
+ var addSkill = async (workingDir, packageNameOrPath) => {
403
+ await runInstallCommand(workingDir, packageNameOrPath);
404
+ await validateSkillPackage(workingDir, packageNameOrPath);
405
+ process.stdout.write(`Added skill: ${packageNameOrPath}
406
+ `);
407
+ };
408
+ var runTests = async (workingDir, filePath) => {
409
+ const testFilePath = filePath ?? resolve(workingDir, "tests", "basic.yaml");
410
+ const content = await readFile(testFilePath, "utf8");
411
+ const parsed = YAML.parse(content);
412
+ const tests = parsed.tests ?? [];
413
+ const harness = new AgentHarness({ workingDir });
414
+ await harness.initialize();
415
+ let passed = 0;
416
+ let failed = 0;
417
+ for (const testCase of tests) {
418
+ const output = await harness.runToCompletion({ task: testCase.task });
419
+ const response = output.result.response ?? "";
420
+ const events = output.events;
421
+ const expectation = testCase.expect ?? {};
422
+ const checks = [];
423
+ if (expectation.contains) {
424
+ checks.push(response.includes(expectation.contains));
425
+ }
426
+ if (typeof expectation.maxSteps === "number") {
427
+ checks.push(output.result.steps <= expectation.maxSteps);
428
+ }
429
+ if (typeof expectation.maxTokens === "number") {
430
+ checks.push(output.result.tokens.input + output.result.tokens.output <= expectation.maxTokens);
431
+ }
432
+ if (expectation.refusal) {
433
+ checks.push(response.toLowerCase().includes("can't") || response.toLowerCase().includes("cannot"));
434
+ }
435
+ if (expectation.toolCalled) {
436
+ checks.push(
437
+ events.some(
438
+ (event) => event.type === "tool:started" && event.tool === expectation.toolCalled
439
+ )
440
+ );
441
+ }
442
+ const ok = checks.length === 0 ? output.result.status === "completed" : checks.every(Boolean);
443
+ if (ok) {
444
+ passed += 1;
445
+ process.stdout.write(`PASS ${testCase.name}
446
+ `);
447
+ } else {
448
+ failed += 1;
449
+ process.stdout.write(`FAIL ${testCase.name}
450
+ `);
451
+ }
452
+ }
453
+ process.stdout.write(`
454
+ Test summary: ${passed} passed, ${failed} failed
455
+ `);
456
+ return { passed, failed };
457
+ };
458
+ var buildTarget = async (workingDir, target) => {
459
+ const outDir = resolve(workingDir, ".agentl-build", target);
460
+ await mkdir(outDir, { recursive: true });
461
+ if (target === "vercel") {
462
+ await writeFile(
463
+ resolve(outDir, "vercel.json"),
464
+ JSON.stringify(
465
+ {
466
+ version: 2,
467
+ functions: { "api/index.js": { runtime: "nodejs20.x" } }
468
+ },
469
+ null,
470
+ 2
471
+ ),
472
+ "utf8"
473
+ );
474
+ } else if (target === "docker") {
475
+ await writeFile(
476
+ resolve(outDir, "Dockerfile"),
477
+ `FROM node:20-slim
478
+ WORKDIR /app
479
+ COPY . .
480
+ RUN corepack enable && pnpm install --frozen-lockfile
481
+ EXPOSE 3000
482
+ CMD ["pnpm","--filter","agentl","start"]
483
+ `,
484
+ "utf8"
485
+ );
486
+ } else if (target === "lambda") {
487
+ await writeFile(
488
+ resolve(outDir, "lambda-handler.js"),
489
+ `export const handler = async () => ({ statusCode: 200, body: "agentl lambda stub" })
490
+ `,
491
+ "utf8"
492
+ );
493
+ } else if (target === "fly") {
494
+ await writeFile(
495
+ resolve(outDir, "fly.toml"),
496
+ `app = "agentl-app"
497
+ [http_service]
498
+ internal_port = 3000
499
+ `,
500
+ "utf8"
501
+ );
502
+ } else {
503
+ throw new Error(`Unsupported build target: ${target}`);
504
+ }
505
+ process.stdout.write(`Build artifacts generated at ${outDir}
506
+ `);
507
+ };
508
+ var normalizeMcpName = (entry) => entry.name ?? entry.package ?? entry.url ?? `mcp_${Date.now()}`;
509
+ var mcpAdd = async (workingDir, options) => {
510
+ const config = await loadAgentlConfig(workingDir) ?? { mcp: [] };
511
+ const mcp = [...config.mcp ?? []];
512
+ const configObject = options.configJson && options.configJson.length > 0 ? JSON.parse(options.configJson) : void 0;
513
+ if (options.url) {
514
+ mcp.push({
515
+ name: options.name ?? normalizeMcpName({ url: options.url }),
516
+ url: options.url,
517
+ env: options.envVars ?? []
518
+ });
519
+ } else if (options.packageName) {
520
+ mcp.push({
521
+ name: options.name ?? normalizeMcpName({ package: options.packageName }),
522
+ package: options.packageName,
523
+ config: configObject,
524
+ env: options.envVars ?? []
525
+ });
526
+ } else {
527
+ throw new Error("Provide either a package name or --url");
528
+ }
529
+ await writeConfigFile(workingDir, { ...config, mcp });
530
+ process.stdout.write("MCP server added.\n");
531
+ };
532
+ var mcpList = async (workingDir) => {
533
+ const config = await loadAgentlConfig(workingDir);
534
+ const mcp = config?.mcp ?? [];
535
+ if (mcp.length === 0) {
536
+ process.stdout.write("No MCP servers configured.\n");
537
+ return;
538
+ }
539
+ process.stdout.write("Configured MCP servers:\n");
540
+ for (const entry of mcp) {
541
+ if ("url" in entry) {
542
+ process.stdout.write(`- ${entry.name ?? entry.url} (remote: ${entry.url})
543
+ `);
544
+ } else {
545
+ process.stdout.write(`- ${entry.name ?? entry.package} (local: ${entry.package})
546
+ `);
547
+ }
548
+ }
549
+ };
550
+ var mcpRemove = async (workingDir, name) => {
551
+ const config = await loadAgentlConfig(workingDir) ?? { mcp: [] };
552
+ const before = config.mcp ?? [];
553
+ const filtered = before.filter((entry) => normalizeMcpName(entry) !== name);
554
+ await writeConfigFile(workingDir, { ...config, mcp: filtered });
555
+ process.stdout.write(`Removed MCP server: ${name}
556
+ `);
557
+ };
558
+ var buildCli = () => {
559
+ const program = new Command();
560
+ program.name("agentl").description("CLI for building and running AgentL agents").version("0.1.0");
561
+ program.command("init").argument("<name>", "project name").description("Scaffold a new AgentL project").action(async (name) => {
562
+ await initProject(name);
563
+ });
564
+ program.command("dev").description("Run local development server").option("--port <port>", "server port", "3000").action(async (options) => {
565
+ const port = Number.parseInt(options.port, 10);
566
+ await startDevServer(Number.isNaN(port) ? 3e3 : port);
567
+ });
568
+ program.command("run").argument("[task]", "task to run").description("Execute the agent once").option("--param <keyValue>", "parameter key=value", (value, all) => {
569
+ all.push(value);
570
+ return all;
571
+ }, []).option("--file <path>", "include file contents", (value, all) => {
572
+ all.push(value);
573
+ return all;
574
+ }, []).option("--json", "output json", false).option("--interactive", "run in interactive mode", false).action(
575
+ async (task, options) => {
576
+ const params = parseParams(options.param);
577
+ if (options.interactive) {
578
+ await runInteractive(process.cwd(), params);
579
+ return;
580
+ }
581
+ if (!task) {
582
+ throw new Error("Task is required unless --interactive is used.");
583
+ }
584
+ await runOnce(task, {
585
+ params,
586
+ json: options.json,
587
+ filePaths: options.file
588
+ });
589
+ }
590
+ );
591
+ program.command("tools").description("List all tools available to the agent").action(async () => {
592
+ await listTools(process.cwd());
593
+ });
594
+ program.command("add").argument("<packageOrPath>", "skill package name/path").description("Add a skill package and validate SKILL.md").action(async (packageOrPath) => {
595
+ await addSkill(process.cwd(), packageOrPath);
596
+ });
597
+ program.command("test").argument("[file]", "test file path (yaml)").description("Run yaml-defined agent tests").action(async (file) => {
598
+ const testFile = file ? resolve(process.cwd(), file) : void 0;
599
+ const result = await runTests(process.cwd(), testFile);
600
+ if (result.failed > 0) {
601
+ process.exitCode = 1;
602
+ }
603
+ });
604
+ program.command("build").argument("<target>", "vercel|docker|lambda|fly").description("Generate build artifacts for deployment target").action(async (target) => {
605
+ await buildTarget(process.cwd(), target);
606
+ });
607
+ const mcpCommand = program.command("mcp").description("Manage MCP servers");
608
+ mcpCommand.command("add").argument("[package]", "local MCP package name").option("--url <url>", "remote MCP url").option("--name <name>", "server name").option("--config <json>", "json config payload").option("--env <name>", "env variable (repeatable)", (value, all) => {
609
+ all.push(value);
610
+ return all;
611
+ }, []).action(
612
+ async (packageName, options) => {
613
+ await mcpAdd(process.cwd(), {
614
+ packageName,
615
+ url: options.url,
616
+ name: options.name,
617
+ configJson: options.config,
618
+ envVars: options.env
619
+ });
620
+ }
621
+ );
622
+ mcpCommand.command("list").description("List configured MCP servers").action(async () => {
623
+ await mcpList(process.cwd());
624
+ });
625
+ mcpCommand.command("remove").argument("<name>", "server name").description("Remove an MCP server by name").action(async (name) => {
626
+ await mcpRemove(process.cwd(), name);
627
+ });
628
+ return program;
629
+ };
630
+ var main = async (argv = process.argv) => {
631
+ await buildCli().parseAsync(argv);
632
+ };
633
+ var packageRoot = resolve(__dirname, "..");
634
+
635
+ export {
636
+ initProject,
637
+ startDevServer,
638
+ runOnce,
639
+ runInteractive,
640
+ listTools,
641
+ addSkill,
642
+ runTests,
643
+ buildTarget,
644
+ mcpAdd,
645
+ mcpList,
646
+ mcpRemove,
647
+ buildCli,
648
+ main,
649
+ packageRoot
650
+ };