abtars 0.3.4-alpha.0 → 0.3.4-alpha.2

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 (392) hide show
  1. package/bundle/{_registry.generated-7DRCE4V6.js → _registry.generated-RC6PEH6Z.js} +16 -15
  2. package/bundle/{_registry.generated-7DRCE4V6.js.map → _registry.generated-RC6PEH6Z.js.map} +1 -1
  3. package/bundle/abtars-browser.js +6 -5
  4. package/bundle/abtars-browser.js.map +1 -1
  5. package/bundle/abtars-cli.js +73 -46
  6. package/bundle/abtars-cli.js.map +3 -3
  7. package/bundle/abtars-restart.js +7 -7
  8. package/bundle/abtars-rss.js +2 -1
  9. package/bundle/abtars-rss.js.map +2 -2
  10. package/bundle/abtars-task.js +6 -5
  11. package/bundle/abtars-task.js.map +1 -1
  12. package/bundle/abtars-todo.js +2 -1
  13. package/bundle/abtars-todo.js.map +1 -1
  14. package/bundle/abtars.js +307 -212
  15. package/bundle/abtars.js.map +4 -4
  16. package/bundle/{acp-raw-client-AZJCEB6S.js → acp-raw-client-E6FM45NC.js} +4 -3
  17. package/bundle/{acp-raw-client-AZJCEB6S.js.map → acp-raw-client-E6FM45NC.js.map} +1 -1
  18. package/bundle/{action-gate-QYJL57IX.js → action-gate-G2V47NHW.js} +4 -3
  19. package/bundle/{action-gate-QYJL57IX.js.map → action-gate-G2V47NHW.js.map} +1 -1
  20. package/bundle/{agent-api-adapter-PYMNQXHE.js → agent-api-adapter-PTJYZKQK.js} +5 -4
  21. package/bundle/{agent-api-adapter-PYMNQXHE.js.map → agent-api-adapter-PTJYZKQK.js.map} +1 -1
  22. package/bundle/{agent-api-rate-limit-4GEZ4YN5.js → agent-api-rate-limit-WCFXJMGY.js} +6 -5
  23. package/bundle/{agent-registry-563P4EUJ.js → agent-registry-GU7ABOK5.js} +9 -8
  24. package/bundle/bootstrap-POWWTU6I.js +63 -0
  25. package/bundle/bootstrap-POWWTU6I.js.map +7 -0
  26. package/bundle/{bridge-lock-transport-LXCF2IVN.js → bridge-lock-transport-4ZH7QTJP.js} +6 -5
  27. package/bundle/{browser-2VZOGOGX.js → browser-EJNS35NT.js} +8 -7
  28. package/bundle/{budget-PPA7WY3D.js → budget-45QOBDWA.js} +5 -4
  29. package/bundle/{budget-PPA7WY3D.js.map → budget-45QOBDWA.js.map} +1 -1
  30. package/bundle/{capability-WXEA2WFK.js → capability-JFWX3IQF.js} +7 -6
  31. package/bundle/{chunk-CB6S3ZRF.js → chunk-2FAZIA37.js} +3 -3
  32. package/bundle/{chunk-VJATH7AN.js → chunk-2KC5G3EA.js} +9 -8
  33. package/bundle/chunk-2KC5G3EA.js.map +7 -0
  34. package/bundle/{chunk-OY2HAK33.js → chunk-36ZEYDKZ.js} +1 -1
  35. package/bundle/chunk-36ZEYDKZ.js.map +7 -0
  36. package/bundle/{chunk-2FZJDMAF.js → chunk-3CACHBDI.js} +10 -10
  37. package/bundle/{chunk-O4GKI3Q3.js → chunk-4S554KLW.js} +4 -4
  38. package/bundle/{chunk-3QW2K53E.js → chunk-5GCLBUBS.js} +11 -19
  39. package/bundle/chunk-5GCLBUBS.js.map +7 -0
  40. package/bundle/{chunk-RJX45XIC.js → chunk-5HDSQFT6.js} +9 -4
  41. package/bundle/chunk-5HDSQFT6.js.map +7 -0
  42. package/bundle/{chunk-EDZGF6BC.js → chunk-5NY2YULC.js} +11 -4
  43. package/bundle/chunk-5NY2YULC.js.map +7 -0
  44. package/bundle/{chunk-LE23VPN3.js → chunk-63A7ZRIH.js} +4 -4
  45. package/bundle/{chunk-LE23VPN3.js.map → chunk-63A7ZRIH.js.map} +1 -1
  46. package/bundle/{chunk-SSCGWDIC.js → chunk-65VCEC32.js} +2 -2
  47. package/bundle/{chunk-V2QIAXWZ.js → chunk-7BSQ5UQO.js} +3 -3
  48. package/bundle/{chunk-E7MV7WFT.js → chunk-7Z3HBPRY.js} +6 -6
  49. package/bundle/{chunk-TY26WMQY.js → chunk-AFREM7FX.js} +2 -2
  50. package/bundle/{chunk-GCFIK6OB.js → chunk-AO32N2VB.js} +92 -20
  51. package/bundle/chunk-AO32N2VB.js.map +7 -0
  52. package/bundle/{chunk-N5VROZ7A.js → chunk-B6ZN6COK.js} +5 -5
  53. package/bundle/{chunk-M6Q3IQ4H.js → chunk-BFDBGESM.js} +259 -122
  54. package/bundle/chunk-BFDBGESM.js.map +7 -0
  55. package/bundle/{chunk-YEOZN5IE.js → chunk-DYBW4XXL.js} +2 -2
  56. package/bundle/{chunk-56D3Y44D.js → chunk-EFJVUJBE.js} +10 -10
  57. package/bundle/{chunk-S6HEHCCG.js → chunk-EQSG2CRM.js} +83 -46
  58. package/bundle/chunk-EQSG2CRM.js.map +7 -0
  59. package/bundle/{chunk-FIAVVKGN.js → chunk-EUZDKV3C.js} +3 -3
  60. package/bundle/{chunk-2LKQV2ND.js → chunk-FRKW6LWB.js} +3 -3
  61. package/bundle/{chunk-H2K23MOF.js → chunk-GALQBVKO.js} +21 -5
  62. package/bundle/chunk-GALQBVKO.js.map +7 -0
  63. package/bundle/{chunk-DNDYD5SL.js → chunk-GP4XUKI5.js} +3 -3
  64. package/bundle/{chunk-SXNY6HC4.js → chunk-GPZNXY2U.js} +6 -6
  65. package/bundle/chunk-GPZNXY2U.js.map +7 -0
  66. package/bundle/{chunk-W726UGI6.js → chunk-GRVWZO4C.js} +3 -3
  67. package/bundle/{chunk-IXKQ4JMX.js → chunk-GVM5YU5I.js} +33 -17
  68. package/bundle/chunk-GVM5YU5I.js.map +7 -0
  69. package/bundle/{chunk-OOKNHOCB.js → chunk-GWILHZPT.js} +2 -2
  70. package/bundle/{chunk-3LQOJVTB.js → chunk-HFOCNYEO.js} +1842 -1220
  71. package/bundle/{chunk-3LQOJVTB.js.map → chunk-HFOCNYEO.js.map} +4 -4
  72. package/bundle/{chunk-NP72ZB7P.js → chunk-HMKVL7AX.js} +53 -47
  73. package/bundle/chunk-HMKVL7AX.js.map +7 -0
  74. package/bundle/{chunk-BNBC4T45.js → chunk-HT2BPTZY.js} +3 -3
  75. package/bundle/{chunk-BU7LTI2W.js → chunk-HZDLFLRP.js} +6 -7
  76. package/bundle/chunk-HZDLFLRP.js.map +7 -0
  77. package/bundle/{chunk-FVUL44T4.js → chunk-IJT4KWXT.js} +2 -2
  78. package/bundle/{chunk-IK4R3RBZ.js → chunk-JNIHEDKF.js} +3 -3
  79. package/bundle/{chunk-J5NOL4DB.js → chunk-JQDJPUHM.js} +16 -6
  80. package/bundle/chunk-JQDJPUHM.js.map +7 -0
  81. package/bundle/{chunk-SESM4GBM.js → chunk-KTYGKPYM.js} +52 -25
  82. package/bundle/chunk-KTYGKPYM.js.map +7 -0
  83. package/bundle/chunk-LME23AA2.js +37 -0
  84. package/bundle/chunk-LME23AA2.js.map +7 -0
  85. package/bundle/{chunk-4PIVWXUJ.js → chunk-LUNA6PM5.js} +2 -2
  86. package/bundle/{chunk-37EX63K4.js → chunk-LUW62WGO.js} +6998 -3621
  87. package/bundle/chunk-LUW62WGO.js.map +7 -0
  88. package/bundle/{chunk-MV5KOWOR.js → chunk-NDCRWEEJ.js} +7 -7
  89. package/bundle/{chunk-7WHXTCVD.js → chunk-NRUSRJXR.js} +8 -3
  90. package/bundle/chunk-NRUSRJXR.js.map +7 -0
  91. package/bundle/{chunk-C3EYYJN3.js → chunk-O7KQG6ME.js} +17 -5
  92. package/bundle/chunk-O7KQG6ME.js.map +7 -0
  93. package/bundle/{chunk-ZOCEBV62.js → chunk-OKAQICWY.js} +3 -3
  94. package/bundle/{chunk-TCI6FZTP.js → chunk-OLAURO5G.js} +9 -9
  95. package/bundle/{chunk-YME7NRGP.js → chunk-OXTSWQCX.js} +2 -2
  96. package/bundle/{chunk-HDOFJVFS.js → chunk-PEDX56EL.js} +3 -3
  97. package/bundle/{chunk-7RAGSHSH.js → chunk-PROPYS3P.js} +12 -10
  98. package/bundle/chunk-PROPYS3P.js.map +7 -0
  99. package/bundle/{chunk-ASYX43OU.js → chunk-Q32H6VPU.js} +26 -26
  100. package/bundle/{chunk-P5O6QZDC.js → chunk-QROWBWLL.js} +10 -6
  101. package/bundle/chunk-QROWBWLL.js.map +7 -0
  102. package/bundle/{chunk-S7ZIGIR5.js → chunk-R76K6L6H.js} +27 -27
  103. package/bundle/{chunk-S7ZIGIR5.js.map → chunk-R76K6L6H.js.map} +1 -1
  104. package/bundle/{chunk-MQJG7OJX.js → chunk-RIHQ37U5.js} +38 -36
  105. package/bundle/chunk-RIHQ37U5.js.map +7 -0
  106. package/bundle/{chunk-IQKADER4.js → chunk-RWRRGE4U.js} +2 -2
  107. package/bundle/{chunk-72T2Q7IG.js → chunk-S5GD5EJ5.js} +271 -282
  108. package/bundle/chunk-S5GD5EJ5.js.map +7 -0
  109. package/bundle/{chunk-ULO2PX3T.js → chunk-TEFZ4JA4.js} +3 -3
  110. package/bundle/{chunk-2RGR3LSV.js → chunk-TMUYFERL.js} +2 -2
  111. package/bundle/{chunk-KBPVJGD7.js → chunk-URQPDCK5.js} +3 -3
  112. package/bundle/chunk-UUIHL65U.js +77 -0
  113. package/bundle/chunk-UUIHL65U.js.map +7 -0
  114. package/bundle/{chunk-FJF42RZY.js → chunk-VUIX5AGB.js} +3 -3
  115. package/bundle/{chunk-5V4VHKEA.js → chunk-WBTJ2E62.js} +5 -4
  116. package/bundle/chunk-WBTJ2E62.js.map +7 -0
  117. package/bundle/{chunk-ZY6DH2S4.js → chunk-WTIGZO3N.js} +80 -70
  118. package/bundle/chunk-WTIGZO3N.js.map +7 -0
  119. package/bundle/{chunk-4HNCOQSK.js → chunk-WYHGNI56.js} +7 -7
  120. package/bundle/{chunk-24V4A6RP.js → chunk-XX6BGTPO.js} +4 -4
  121. package/bundle/{chunk-T7TAWGBX.js → chunk-Y76VUJSF.js} +2 -2
  122. package/bundle/{chunk-TVSPVZTX.js → chunk-YDY6QVWJ.js} +3 -3
  123. package/bundle/{chunk-V6CV3QPH.js → chunk-YRSMGJFP.js} +2 -2
  124. package/bundle/{chunk-WP7FZHMI.js → chunk-YSKCQH6E.js} +2 -2
  125. package/bundle/{chunk-NGZVJ52F.js → chunk-ZKJOFASV.js} +7 -7
  126. package/bundle/{chunk-WGWM4IZM.js → chunk-ZT5ZBGWS.js} +4 -4
  127. package/bundle/{chunk-WGWM4IZM.js.map → chunk-ZT5ZBGWS.js.map} +1 -1
  128. package/bundle/{chunk-43DKPXTP.js → chunk-ZV4IWKDJ.js} +4 -4
  129. package/bundle/{commands-XXFU2ZF7.js → commands-EWA4HNCM.js} +20 -20
  130. package/bundle/{config-EWDZ234X.js → config-M3P5IOAI.js} +8 -7
  131. package/bundle/{config-show-6J33O4TE.js → config-show-3DHPP26D.js} +5 -5
  132. package/bundle/{context-OCS7HLJP.js → context-5P7IYYU2.js} +5 -2
  133. package/bundle/{context-OCS7HLJP.js.map → context-5P7IYYU2.js.map} +1 -1
  134. package/bundle/{daemon-LTDAXNA2.js → daemon-TB23FFWY.js} +7 -7
  135. package/bundle/{delegation-tools-YDTWQMZD.js → delegation-tools-P2SCNL23.js} +14 -11
  136. package/bundle/{registry-client-VN2MM2HI.js → deploy-YYUCGGP3.js} +10 -6
  137. package/bundle/{deploy-lib-import-RGZJ3CGC.js → deploy-lib-import-T3UP4G6G.js} +5 -3
  138. package/bundle/{deps-PHSLIA77.js → deps-WVK553KF.js} +21 -19
  139. package/bundle/deps-WVK553KF.js.map +7 -0
  140. package/bundle/{direct-api-transport-OAKYQBJR.js → direct-api-transport-WQ6HA5OX.js} +30 -28
  141. package/bundle/direct-api-transport-WQ6HA5OX.js.map +7 -0
  142. package/bundle/{discord-adapter-WUNYPTDE.js → discord-adapter-4TTETYDI.js} +26 -26
  143. package/bundle/{dist-7HEHHQI2.js → dist-KMK7TZGN.js} +376 -348
  144. package/bundle/dist-KMK7TZGN.js.map +7 -0
  145. package/bundle/{dns-wakeup-F55ALHXJ.js → dns-wakeup-IDOJIXBX.js} +4 -3
  146. package/bundle/{dns-wakeup-F55ALHXJ.js.map → dns-wakeup-IDOJIXBX.js.map} +1 -1
  147. package/bundle/{doctor-probes-3SLIUGKS.js → doctor-probes-VDWFJKUB.js} +4 -3
  148. package/bundle/{env-schema-MSDP2YBO.js → env-schema-4JXQUOH4.js} +5 -4
  149. package/bundle/{gossip-CS3G3447.js → gossip-3C3BSNPN.js} +7 -6
  150. package/bundle/{guardrails-24XK2COI.js → guardrails-DL7ZSWVN.js} +6 -5
  151. package/bundle/{health-check-FRUNRVNQ.js → health-check-YKWFD2LZ.js} +5 -6
  152. package/bundle/{health-check-FRUNRVNQ.js.map → health-check-YKWFD2LZ.js.map} +2 -2
  153. package/bundle/{heartbeat-system-G4IFQXT6.js → heartbeat-system-TDDIOVTC.js} +7 -6
  154. package/bundle/{heartbeat-tier3-3ZO3EVXP.js → heartbeat-tier3-55T2HUNE.js} +45 -44
  155. package/bundle/heartbeat-tier3-55T2HUNE.js.map +7 -0
  156. package/bundle/{hook-system-X6INNJGV.js → hook-system-M3POLUIB.js} +5 -4
  157. package/bundle/{hotskills-6FQYTJIO.js → hotskills-FWX4QI7V.js} +7 -6
  158. package/bundle/{install-ZAHTZ5M5.js → install-4MXBYIUG.js} +23 -20
  159. package/bundle/install-4MXBYIUG.js.map +7 -0
  160. package/bundle/{install-manifest-QX7KVDCA.js → install-manifest-5PPWMD2W.js} +4 -3
  161. package/bundle/{install-manifest-QX7KVDCA.js.map → install-manifest-5PPWMD2W.js.map} +1 -1
  162. package/bundle/{irc-adapter-IEJQKKJF.js → irc-adapter-PTTZD32W.js} +5 -4
  163. package/bundle/{irc-adapter-IEJQKKJF.js.map → irc-adapter-PTTZD32W.js.map} +1 -1
  164. package/bundle/{irc-config-TTWNYFLH.js → irc-config-CP7ZMUOX.js} +6 -5
  165. package/bundle/{irc-config-TTWNYFLH.js.map → irc-config-CP7ZMUOX.js.map} +1 -1
  166. package/bundle/{kanban-board-J6RO3ZU7.js → kanban-board-M326B2XJ.js} +7 -5
  167. package/bundle/{kanban-channel-5EIXBFSA.js → kanban-channel-IJ52OMNA.js} +8 -6
  168. package/bundle/{lazy-require-V6EFUATC.js → lazy-require-KCRVT4SI.js} +11 -6
  169. package/bundle/{logger-Y3VILPRH.js → logger-OWCSNYCA.js} +4 -3
  170. package/bundle/{logs-YS3GDURO.js → logs-FXS4SCEM.js} +5 -5
  171. package/bundle/{main-chat-YLZDNQPO.js → main-chat-ZNUZCTNS.js} +6 -5
  172. package/bundle/{master-user-Z4M7KCJE.js → master-user-HSKM4ZFN.js} +7 -6
  173. package/bundle/{media-utils-P6RZ2K3U.js → media-utils-3ZYOD7SK.js} +44 -43
  174. package/bundle/{media-utils-P6RZ2K3U.js.map → media-utils-3ZYOD7SK.js.map} +2 -2
  175. package/bundle/{message-pipeline-MHEBDJLH.js → message-pipeline-KSONH4MT.js} +20 -20
  176. package/bundle/meta.json +9327 -8582
  177. package/bundle/{migrate-layout-RJJQLVGR.js → migrate-layout-IJIEJY3A.js} +8 -4
  178. package/bundle/migrate-layout-IJIEJY3A.js.map +7 -0
  179. package/bundle/{nerve-VZNMFDGY.js → nerve-IGSXBKZZ.js} +5 -4
  180. package/bundle/{notification-VV2OR6NW.js → notification-BFSIEECG.js} +8 -7
  181. package/bundle/{openrouter-credits-LXC7P4G6.js → openrouter-credits-NTVZDRYM.js} +5 -4
  182. package/bundle/{openrouter-credits-LXC7P4G6.js.map → openrouter-credits-NTVZDRYM.js.map} +1 -1
  183. package/bundle/{orc-KC4USP55.js → orc-EIGVTHAV.js} +4 -4
  184. package/bundle/{orc-tools-CHRSXSAS.js → orc-tools-A3G7WCSJ.js} +5 -4
  185. package/bundle/{paths-EDK6KWHG.js → paths-3ZVW3NFL.js} +6 -2
  186. package/bundle/{paths-RZF6WDMG.js → paths-X4LRYUI6.js} +3 -2
  187. package/bundle/{peer-auth-SRONOLNG.js → peer-auth-QC4EF2PM.js} +9 -8
  188. package/bundle/{peer-client-VOF77T6C.js → peer-client-RGEU5HOK.js} +9 -8
  189. package/bundle/{peer-client-VOF77T6C.js.map → peer-client-RGEU5HOK.js.map} +1 -1
  190. package/bundle/{peer-config-FRWLEYQ5.js → peer-config-TN55LFDC.js} +6 -5
  191. package/bundle/{peer-jwt-XY3XRIA2.js → peer-jwt-NCCPXJRX.js} +6 -5
  192. package/bundle/{peer-transport-UBBXTDRP.js → peer-transport-I6JPLFZ2.js} +8 -7
  193. package/bundle/{phase-transport-4NQHZX75.js → phase-transport-2BRWACDF.js} +18 -16
  194. package/bundle/public/css/dashboard.css +542 -0
  195. package/bundle/public/index.html +180 -0
  196. package/bundle/public/js/app.js +437 -0
  197. package/bundle/public/memory-universe.js +384 -0
  198. package/bundle/{reconcile-2EUXJ6W5.js → reconcile-CTFCLQRN.js} +5 -4
  199. package/bundle/{reconciler-FFQGV4DO.js → reconciler-FHESO6OC.js} +14 -11
  200. package/bundle/{reconciler-FFQGV4DO.js.map → reconciler-FHESO6OC.js.map} +1 -1
  201. package/bundle/{restore-NFDE2RG6.js → restore-IFHPI7I7.js} +13 -9
  202. package/bundle/{restore-NFDE2RG6.js.map → restore-IFHPI7I7.js.map} +3 -3
  203. package/bundle/{rollback-MVZ53XS4.js → rollback-ANRI3T5Z.js} +5 -5
  204. package/bundle/{chunk-SKY6656M.js → sandbox-runtime-QROWHDCS.js} +11 -28
  205. package/bundle/{chunk-SKY6656M.js.map → sandbox-runtime-QROWHDCS.js.map} +1 -1
  206. package/bundle/{self-healer-utils-KD6LV63S.js → self-healer-utils-IFAYOQO2.js} +5 -4
  207. package/bundle/{self-healer-utils-KD6LV63S.js.map → self-healer-utils-IFAYOQO2.js.map} +1 -1
  208. package/bundle/{sha-tracker-2DB4R2TW.js → sha-tracker-ZWBP6CIJ.js} +5 -4
  209. package/bundle/{skill-session-BPDVA6ZG.js → skill-session-AXBDQSLQ.js} +5 -4
  210. package/bundle/{skill-session-BPDVA6ZG.js.map → skill-session-AXBDQSLQ.js.map} +1 -1
  211. package/bundle/{skill-stats-TPD2NROA.js → skill-stats-JORH5DGM.js} +6 -5
  212. package/bundle/{skill-watcher-D7QYYYON.js → skill-watcher-E4MGLKLS.js} +6 -5
  213. package/bundle/{sleep-GH6DLBJJ.js → sleep-SRCSXY6T.js} +10 -9
  214. package/bundle/{soul-bundle-GXLMDBCC.js → soul-bundle-VWAVHCZ6.js} +10 -9
  215. package/bundle/{spin-4DBYHS3E.js → spin-IMW2MZOH.js} +13 -10
  216. package/bundle/{spin-notifications-IKYJPER5.js → spin-notifications-SE2HVZI7.js} +7 -5
  217. package/bundle/{spin-notifications-IKYJPER5.js.map → spin-notifications-SE2HVZI7.js.map} +1 -1
  218. package/bundle/{spin-types-PLJH3SIK.js → spin-types-BLPYAETA.js} +5 -4
  219. package/bundle/{src-SUFZ27S5.js → src-6BTCMOD3.js} +4 -4
  220. package/bundle/{sse-parser-anthropic-U7ILHOY5.js → sse-parser-anthropic-A6R4Z2TB.js} +5 -4
  221. package/bundle/{sse-parser-anthropic-U7ILHOY5.js.map → sse-parser-anthropic-A6R4Z2TB.js.map} +1 -1
  222. package/bundle/{sse-parser-responses-OI73R3AH.js → sse-parser-responses-HSZY3QGJ.js} +5 -4
  223. package/bundle/{sse-parser-responses-OI73R3AH.js.map → sse-parser-responses-HSZY3QGJ.js.map} +1 -1
  224. package/bundle/{ssrf-guard-6GP4QYVA.js → ssrf-guard-O6SHIK6Q.js} +5 -4
  225. package/bundle/{ssrf-guard-6GP4QYVA.js.map → ssrf-guard-O6SHIK6Q.js.map} +1 -1
  226. package/bundle/{start-JT2BPMSW.js → start-7QZIWO3S.js} +5 -5
  227. package/bundle/start-7QZIWO3S.js.map +7 -0
  228. package/bundle/{stt-KD3AABKG.js → stt-LGVPXMVR.js} +6 -5
  229. package/bundle/{subagent-runtime-LVECAUPV.js → subagent-runtime-3UJB4HUB.js} +6 -5
  230. package/bundle/system-status-ATGKRRQI.js +349 -0
  231. package/bundle/system-status-ATGKRRQI.js.map +7 -0
  232. package/bundle/{task-store-2XRDM3AW.js → task-store-W5BFIAIH.js} +6 -5
  233. package/bundle/{telegram-adapter-UJ3RYYV6.js → telegram-adapter-7G773NII.js} +35 -35
  234. package/bundle/{tool-registry-YU6WBXPA.js → tool-registry-J6TE3I2T.js} +25 -23
  235. package/bundle/{tool-sandbox-RNNPDR5M.js → tool-sandbox-4UC6GAKA.js} +6 -5
  236. package/bundle/{transport-config-OK3MZPJK.js → transport-config-KBF5W2DP.js} +9 -8
  237. package/bundle/{update-ENNPRW7Y.js → update-424ZZQQ6.js} +6 -6
  238. package/bundle/{update-check-SJB6GV3A.js → update-check-7UWKBJOP.js} +3 -2
  239. package/bundle/{update-check-SJB6GV3A.js.map → update-check-7UWKBJOP.js.map} +1 -1
  240. package/bundle/{usage-tracker-HRSGC7QC.js → usage-tracker-NXD364VX.js} +2 -2
  241. package/bundle/{user-registry-6PUJJ5J2.js → user-registry-35BW4XKM.js} +6 -5
  242. package/bundle/{wrapper-WLHLG4MI.js → wrapper-W66YICNZ.js} +3 -3
  243. package/bundle/{ws-peer-client-WHW3RJTD.js → ws-peer-client-AIXCXF7V.js} +15 -14
  244. package/bundle/{ws-peer-client-WHW3RJTD.js.map → ws-peer-client-AIXCXF7V.js.map} +2 -2
  245. package/package.json +4 -8
  246. package/scripts/emergency-deploy.sh +11 -8
  247. package/scripts/emergency-update.sh +156 -23
  248. package/templates/config/.env +1 -1
  249. package/templates/config/models.json +13 -0
  250. package/bundle/chunk-37EX63K4.js.map +0 -7
  251. package/bundle/chunk-3QW2K53E.js.map +0 -7
  252. package/bundle/chunk-5V4VHKEA.js.map +0 -7
  253. package/bundle/chunk-72T2Q7IG.js.map +0 -7
  254. package/bundle/chunk-7RAGSHSH.js.map +0 -7
  255. package/bundle/chunk-7WHXTCVD.js.map +0 -7
  256. package/bundle/chunk-BU7LTI2W.js.map +0 -7
  257. package/bundle/chunk-C3EYYJN3.js.map +0 -7
  258. package/bundle/chunk-CAOIIVFP.js +0 -110
  259. package/bundle/chunk-CAOIIVFP.js.map +0 -7
  260. package/bundle/chunk-EDZGF6BC.js.map +0 -7
  261. package/bundle/chunk-GCFIK6OB.js.map +0 -7
  262. package/bundle/chunk-H2K23MOF.js.map +0 -7
  263. package/bundle/chunk-HAZHNBBY.js +0 -156
  264. package/bundle/chunk-HAZHNBBY.js.map +0 -7
  265. package/bundle/chunk-IXKQ4JMX.js.map +0 -7
  266. package/bundle/chunk-J5NOL4DB.js.map +0 -7
  267. package/bundle/chunk-JAJ3DUQ2.js +0 -30
  268. package/bundle/chunk-JAJ3DUQ2.js.map +0 -7
  269. package/bundle/chunk-KMFR5AVY.js +0 -45
  270. package/bundle/chunk-KMFR5AVY.js.map +0 -7
  271. package/bundle/chunk-M6Q3IQ4H.js.map +0 -7
  272. package/bundle/chunk-MQJG7OJX.js.map +0 -7
  273. package/bundle/chunk-NP72ZB7P.js.map +0 -7
  274. package/bundle/chunk-OY2HAK33.js.map +0 -7
  275. package/bundle/chunk-P5O6QZDC.js.map +0 -7
  276. package/bundle/chunk-RJX45XIC.js.map +0 -7
  277. package/bundle/chunk-S6HEHCCG.js.map +0 -7
  278. package/bundle/chunk-SESM4GBM.js.map +0 -7
  279. package/bundle/chunk-SXNY6HC4.js.map +0 -7
  280. package/bundle/chunk-VJATH7AN.js.map +0 -7
  281. package/bundle/chunk-ZY6DH2S4.js.map +0 -7
  282. package/bundle/deps-PHSLIA77.js.map +0 -7
  283. package/bundle/direct-api-transport-OAKYQBJR.js.map +0 -7
  284. package/bundle/dist-7HEHHQI2.js.map +0 -7
  285. package/bundle/heartbeat-tier3-3ZO3EVXP.js.map +0 -7
  286. package/bundle/install-ZAHTZ5M5.js.map +0 -7
  287. package/bundle/migrate-layout-RJJQLVGR.js.map +0 -7
  288. package/bundle/phase-config-V4XETN5F.js +0 -18
  289. package/bundle/sandbox-runtime-WHACQLLN.js +0 -22
  290. package/bundle/start-JT2BPMSW.js.map +0 -7
  291. package/bundle/system-status-XXJWTVJN.js +0 -243
  292. package/bundle/system-status-XXJWTVJN.js.map +0 -7
  293. package/bundle/user-registry-6PUJJ5J2.js.map +0 -7
  294. package/bundle/wrapper-WLHLG4MI.js.map +0 -7
  295. /package/bundle/{agent-api-rate-limit-4GEZ4YN5.js.map → agent-api-rate-limit-WCFXJMGY.js.map} +0 -0
  296. /package/bundle/{agent-registry-563P4EUJ.js.map → agent-registry-GU7ABOK5.js.map} +0 -0
  297. /package/bundle/{bridge-lock-transport-LXCF2IVN.js.map → bridge-lock-transport-4ZH7QTJP.js.map} +0 -0
  298. /package/bundle/{browser-2VZOGOGX.js.map → browser-EJNS35NT.js.map} +0 -0
  299. /package/bundle/{capability-WXEA2WFK.js.map → capability-JFWX3IQF.js.map} +0 -0
  300. /package/bundle/{chunk-CB6S3ZRF.js.map → chunk-2FAZIA37.js.map} +0 -0
  301. /package/bundle/{chunk-2FZJDMAF.js.map → chunk-3CACHBDI.js.map} +0 -0
  302. /package/bundle/{chunk-O4GKI3Q3.js.map → chunk-4S554KLW.js.map} +0 -0
  303. /package/bundle/{chunk-SSCGWDIC.js.map → chunk-65VCEC32.js.map} +0 -0
  304. /package/bundle/{chunk-V2QIAXWZ.js.map → chunk-7BSQ5UQO.js.map} +0 -0
  305. /package/bundle/{chunk-E7MV7WFT.js.map → chunk-7Z3HBPRY.js.map} +0 -0
  306. /package/bundle/{chunk-TY26WMQY.js.map → chunk-AFREM7FX.js.map} +0 -0
  307. /package/bundle/{chunk-N5VROZ7A.js.map → chunk-B6ZN6COK.js.map} +0 -0
  308. /package/bundle/{chunk-YEOZN5IE.js.map → chunk-DYBW4XXL.js.map} +0 -0
  309. /package/bundle/{chunk-56D3Y44D.js.map → chunk-EFJVUJBE.js.map} +0 -0
  310. /package/bundle/{chunk-FIAVVKGN.js.map → chunk-EUZDKV3C.js.map} +0 -0
  311. /package/bundle/{chunk-2LKQV2ND.js.map → chunk-FRKW6LWB.js.map} +0 -0
  312. /package/bundle/{chunk-DNDYD5SL.js.map → chunk-GP4XUKI5.js.map} +0 -0
  313. /package/bundle/{chunk-W726UGI6.js.map → chunk-GRVWZO4C.js.map} +0 -0
  314. /package/bundle/{chunk-OOKNHOCB.js.map → chunk-GWILHZPT.js.map} +0 -0
  315. /package/bundle/{chunk-BNBC4T45.js.map → chunk-HT2BPTZY.js.map} +0 -0
  316. /package/bundle/{chunk-FVUL44T4.js.map → chunk-IJT4KWXT.js.map} +0 -0
  317. /package/bundle/{chunk-IK4R3RBZ.js.map → chunk-JNIHEDKF.js.map} +0 -0
  318. /package/bundle/{chunk-4PIVWXUJ.js.map → chunk-LUNA6PM5.js.map} +0 -0
  319. /package/bundle/{chunk-MV5KOWOR.js.map → chunk-NDCRWEEJ.js.map} +0 -0
  320. /package/bundle/{chunk-ZOCEBV62.js.map → chunk-OKAQICWY.js.map} +0 -0
  321. /package/bundle/{chunk-TCI6FZTP.js.map → chunk-OLAURO5G.js.map} +0 -0
  322. /package/bundle/{chunk-YME7NRGP.js.map → chunk-OXTSWQCX.js.map} +0 -0
  323. /package/bundle/{chunk-HDOFJVFS.js.map → chunk-PEDX56EL.js.map} +0 -0
  324. /package/bundle/{chunk-ASYX43OU.js.map → chunk-Q32H6VPU.js.map} +0 -0
  325. /package/bundle/{chunk-IQKADER4.js.map → chunk-RWRRGE4U.js.map} +0 -0
  326. /package/bundle/{chunk-ULO2PX3T.js.map → chunk-TEFZ4JA4.js.map} +0 -0
  327. /package/bundle/{chunk-2RGR3LSV.js.map → chunk-TMUYFERL.js.map} +0 -0
  328. /package/bundle/{chunk-KBPVJGD7.js.map → chunk-URQPDCK5.js.map} +0 -0
  329. /package/bundle/{chunk-FJF42RZY.js.map → chunk-VUIX5AGB.js.map} +0 -0
  330. /package/bundle/{chunk-4HNCOQSK.js.map → chunk-WYHGNI56.js.map} +0 -0
  331. /package/bundle/{chunk-24V4A6RP.js.map → chunk-XX6BGTPO.js.map} +0 -0
  332. /package/bundle/{chunk-T7TAWGBX.js.map → chunk-Y76VUJSF.js.map} +0 -0
  333. /package/bundle/{chunk-TVSPVZTX.js.map → chunk-YDY6QVWJ.js.map} +0 -0
  334. /package/bundle/{chunk-V6CV3QPH.js.map → chunk-YRSMGJFP.js.map} +0 -0
  335. /package/bundle/{chunk-WP7FZHMI.js.map → chunk-YSKCQH6E.js.map} +0 -0
  336. /package/bundle/{chunk-NGZVJ52F.js.map → chunk-ZKJOFASV.js.map} +0 -0
  337. /package/bundle/{chunk-43DKPXTP.js.map → chunk-ZV4IWKDJ.js.map} +0 -0
  338. /package/bundle/{commands-XXFU2ZF7.js.map → commands-EWA4HNCM.js.map} +0 -0
  339. /package/bundle/{config-EWDZ234X.js.map → config-M3P5IOAI.js.map} +0 -0
  340. /package/bundle/{config-show-6J33O4TE.js.map → config-show-3DHPP26D.js.map} +0 -0
  341. /package/bundle/{daemon-LTDAXNA2.js.map → daemon-TB23FFWY.js.map} +0 -0
  342. /package/bundle/{delegation-tools-YDTWQMZD.js.map → delegation-tools-P2SCNL23.js.map} +0 -0
  343. /package/bundle/{deploy-lib-import-RGZJ3CGC.js.map → deploy-YYUCGGP3.js.map} +0 -0
  344. /package/bundle/{doctor-probes-3SLIUGKS.js.map → deploy-lib-import-T3UP4G6G.js.map} +0 -0
  345. /package/bundle/{discord-adapter-WUNYPTDE.js.map → discord-adapter-4TTETYDI.js.map} +0 -0
  346. /package/bundle/{env-schema-MSDP2YBO.js.map → doctor-probes-VDWFJKUB.js.map} +0 -0
  347. /package/bundle/{gossip-CS3G3447.js.map → env-schema-4JXQUOH4.js.map} +0 -0
  348. /package/bundle/{guardrails-24XK2COI.js.map → gossip-3C3BSNPN.js.map} +0 -0
  349. /package/bundle/{heartbeat-system-G4IFQXT6.js.map → guardrails-DL7ZSWVN.js.map} +0 -0
  350. /package/bundle/{hook-system-X6INNJGV.js.map → heartbeat-system-TDDIOVTC.js.map} +0 -0
  351. /package/bundle/{hotskills-6FQYTJIO.js.map → hook-system-M3POLUIB.js.map} +0 -0
  352. /package/bundle/{kanban-board-J6RO3ZU7.js.map → hotskills-FWX4QI7V.js.map} +0 -0
  353. /package/bundle/{kanban-channel-5EIXBFSA.js.map → kanban-board-M326B2XJ.js.map} +0 -0
  354. /package/bundle/{lazy-require-V6EFUATC.js.map → kanban-channel-IJ52OMNA.js.map} +0 -0
  355. /package/bundle/{logger-Y3VILPRH.js.map → lazy-require-KCRVT4SI.js.map} +0 -0
  356. /package/bundle/{main-chat-YLZDNQPO.js.map → logger-OWCSNYCA.js.map} +0 -0
  357. /package/bundle/{logs-YS3GDURO.js.map → logs-FXS4SCEM.js.map} +0 -0
  358. /package/bundle/{master-user-Z4M7KCJE.js.map → main-chat-ZNUZCTNS.js.map} +0 -0
  359. /package/bundle/{message-pipeline-MHEBDJLH.js.map → master-user-HSKM4ZFN.js.map} +0 -0
  360. /package/bundle/{nerve-VZNMFDGY.js.map → message-pipeline-KSONH4MT.js.map} +0 -0
  361. /package/bundle/{notification-VV2OR6NW.js.map → nerve-IGSXBKZZ.js.map} +0 -0
  362. /package/bundle/{orc-tools-CHRSXSAS.js.map → notification-BFSIEECG.js.map} +0 -0
  363. /package/bundle/{orc-KC4USP55.js.map → orc-EIGVTHAV.js.map} +0 -0
  364. /package/bundle/{paths-EDK6KWHG.js.map → orc-tools-A3G7WCSJ.js.map} +0 -0
  365. /package/bundle/{paths-RZF6WDMG.js.map → paths-3ZVW3NFL.js.map} +0 -0
  366. /package/bundle/{peer-auth-SRONOLNG.js.map → paths-X4LRYUI6.js.map} +0 -0
  367. /package/bundle/{peer-config-FRWLEYQ5.js.map → peer-auth-QC4EF2PM.js.map} +0 -0
  368. /package/bundle/{peer-jwt-XY3XRIA2.js.map → peer-config-TN55LFDC.js.map} +0 -0
  369. /package/bundle/{peer-transport-UBBXTDRP.js.map → peer-jwt-NCCPXJRX.js.map} +0 -0
  370. /package/bundle/{phase-config-V4XETN5F.js.map → peer-transport-I6JPLFZ2.js.map} +0 -0
  371. /package/bundle/{phase-transport-4NQHZX75.js.map → phase-transport-2BRWACDF.js.map} +0 -0
  372. /package/bundle/{reconcile-2EUXJ6W5.js.map → reconcile-CTFCLQRN.js.map} +0 -0
  373. /package/bundle/{registry-client-VN2MM2HI.js.map → rollback-ANRI3T5Z.js.map} +0 -0
  374. /package/bundle/{rollback-MVZ53XS4.js.map → sha-tracker-ZWBP6CIJ.js.map} +0 -0
  375. /package/bundle/{sandbox-runtime-WHACQLLN.js.map → skill-stats-JORH5DGM.js.map} +0 -0
  376. /package/bundle/{sha-tracker-2DB4R2TW.js.map → skill-watcher-E4MGLKLS.js.map} +0 -0
  377. /package/bundle/{skill-stats-TPD2NROA.js.map → sleep-SRCSXY6T.js.map} +0 -0
  378. /package/bundle/{skill-watcher-D7QYYYON.js.map → soul-bundle-VWAVHCZ6.js.map} +0 -0
  379. /package/bundle/{sleep-GH6DLBJJ.js.map → spin-IMW2MZOH.js.map} +0 -0
  380. /package/bundle/{soul-bundle-GXLMDBCC.js.map → spin-types-BLPYAETA.js.map} +0 -0
  381. /package/bundle/{spin-4DBYHS3E.js.map → src-6BTCMOD3.js.map} +0 -0
  382. /package/bundle/{spin-types-PLJH3SIK.js.map → stt-LGVPXMVR.js.map} +0 -0
  383. /package/bundle/{src-SUFZ27S5.js.map → subagent-runtime-3UJB4HUB.js.map} +0 -0
  384. /package/bundle/{stt-KD3AABKG.js.map → task-store-W5BFIAIH.js.map} +0 -0
  385. /package/bundle/{telegram-adapter-UJ3RYYV6.js.map → telegram-adapter-7G773NII.js.map} +0 -0
  386. /package/bundle/{subagent-runtime-LVECAUPV.js.map → tool-registry-J6TE3I2T.js.map} +0 -0
  387. /package/bundle/{task-store-2XRDM3AW.js.map → tool-sandbox-4UC6GAKA.js.map} +0 -0
  388. /package/bundle/{tool-registry-YU6WBXPA.js.map → transport-config-KBF5W2DP.js.map} +0 -0
  389. /package/bundle/{tool-sandbox-RNNPDR5M.js.map → update-424ZZQQ6.js.map} +0 -0
  390. /package/bundle/{transport-config-OK3MZPJK.js.map → usage-tracker-NXD364VX.js.map} +0 -0
  391. /package/bundle/{update-ENNPRW7Y.js.map → user-registry-35BW4XKM.js.map} +0 -0
  392. /package/bundle/{usage-tracker-HRSGC7QC.js.map → wrapper-W66YICNZ.js.map} +0 -0
@@ -4,23 +4,17 @@ import {
4
4
  init_logger,
5
5
  logError,
6
6
  logInfo
7
- } from "./chunk-OOKNHOCB.js";
8
- import {
9
- __esm,
10
- __export
11
- } from "./chunk-7K2YZTLD.js";
7
+ } from "./chunk-GWILHZPT.js";
8
+ import "./chunk-GALQBVKO.js";
9
+ import "./chunk-O7KQG6ME.js";
10
+ import "./chunk-7K2YZTLD.js";
12
11
 
13
12
  // src/components/sandbox-runtime.ts
14
- var sandbox_runtime_exports = {};
15
- __export(sandbox_runtime_exports, {
16
- dockerAvailable: () => dockerAvailable,
17
- getActiveSandboxes: () => getActiveSandboxes,
18
- killAllSandboxes: () => killAllSandboxes,
19
- killSandbox: () => killSandbox,
20
- spawnSandbox: () => spawnSandbox
21
- });
13
+ init_logger();
22
14
  import { randomBytes } from "node:crypto";
23
15
  import { spawnSync } from "node:child_process";
16
+ var TAG = "sandbox";
17
+ var activeSessions = /* @__PURE__ */ new Map();
24
18
  function dockerAvailable() {
25
19
  const result = spawnSync("docker", ["info"], { stdio: "pipe", timeout: 5e3 });
26
20
  return result.status === 0;
@@ -92,22 +86,11 @@ function killAllSandboxes() {
92
86
  function getActiveSandboxes() {
93
87
  return activeSessions;
94
88
  }
95
- var TAG, activeSessions;
96
- var init_sandbox_runtime = __esm({
97
- "src/components/sandbox-runtime.ts"() {
98
- init_logger();
99
- TAG = "sandbox";
100
- activeSessions = /* @__PURE__ */ new Map();
101
- }
102
- });
103
-
104
89
  export {
105
90
  dockerAvailable,
106
- spawnSandbox,
107
- killSandbox,
108
- killAllSandboxes,
109
91
  getActiveSandboxes,
110
- sandbox_runtime_exports,
111
- init_sandbox_runtime
92
+ killAllSandboxes,
93
+ killSandbox,
94
+ spawnSandbox
112
95
  };
113
- //# sourceMappingURL=chunk-SKY6656M.js.map
96
+ //# sourceMappingURL=sandbox-runtime-QROWHDCS.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/components/sandbox-runtime.ts"],
4
4
  "sourcesContent": ["/**\n * sandbox-runtime.ts \u2014 spawn and manage Docker containers for sandboxed sessions.\n * Only active when SECURITY_MODE=sandbox and Docker is available.\n */\n\nimport { randomBytes } from \"node:crypto\";\nimport { spawnSync } from \"node:child_process\";\nimport { logInfo, logError } from \"./logger.js\";\n\nconst TAG = \"sandbox\";\n\nexport interface SandboxSession {\n containerId: string;\n sessionToken: string;\n sessionType: string;\n startedAt: number;\n}\n\nconst activeSessions = new Map<string, SandboxSession>();\n\n/** Check if Docker is available on this machine. */\nexport function dockerAvailable(): boolean {\n const result = spawnSync(\"docker\", [\"info\"], { stdio: \"pipe\", timeout: 5000 });\n return result.status === 0;\n}\n\n/** Spawn a sandboxed session in a Docker container. */\nexport function spawnSandbox(opts: {\n sessionId: string;\n sessionType: string;\n apiKey: string;\n socketPath: string;\n workspacePath: string;\n image?: string;\n memoryLimit?: string;\n timeoutSec?: number;\n network?: \"bridge\" | \"none\";\n}): SandboxSession | null {\n const token = randomBytes(32).toString(\"hex\");\n const image = opts.image ?? \"abtars-sandbox:latest\";\n const memLimit = opts.memoryLimit ?? \"512m\";\n const timeout = opts.timeoutSec ?? 300;\n const network = opts.network ?? (opts.sessionType === \"B\" ? \"bridge\" : \"none\");\n\n const args = [\n \"run\", \"--rm\", \"-d\",\n \"--name\", `abtars-session-${opts.sessionId}`,\n \"--memory\", memLimit,\n \"--pids-limit\", \"100\",\n \"--security-opt\", \"no-new-privileges:true\",\n \"--network\", network,\n \"--stop-timeout\", String(timeout),\n \"-e\", `SESSION_TOKEN=${token}`,\n \"-e\", `SESSION_ID=${opts.sessionId}`,\n \"-e\", `SESSION_TYPE=${opts.sessionType}`,\n \"-e\", `API_KEY=${opts.apiKey}`,\n \"-v\", `${opts.socketPath}:/run/bridge.sock:ro`,\n \"-v\", `${opts.workspacePath}:/workspace`,\n image,\n ];\n\n const result = spawnSync(\"docker\", args, { encoding: \"utf-8\", timeout: 30_000 });\n if (result.status !== 0) {\n logError(TAG, `Failed to spawn sandbox: ${(result.stderr || \"\").trim()}`);\n return null;\n }\n\n const containerId = (result.stdout || \"\").trim().slice(0, 12);\n logInfo(TAG, `Spawned sandbox ${containerId} for session ${opts.sessionId} (type=${opts.sessionType}, net=${network})`);\n\n const session: SandboxSession = {\n containerId,\n sessionToken: token,\n sessionType: opts.sessionType,\n startedAt: Date.now(),\n };\n\n activeSessions.set(opts.sessionId, session);\n return session;\n}\n\n/** Stop and remove a sandboxed session container. */\nexport function killSandbox(sessionId: string): void {\n const session = activeSessions.get(sessionId);\n if (!session) return;\n\n spawnSync(\"docker\", [\"kill\", session.containerId], { stdio: \"pipe\", timeout: 10_000 });\n activeSessions.delete(sessionId);\n logInfo(TAG, `Killed sandbox ${session.containerId} (session ${sessionId})`);\n}\n\n/** Kill all active sandbox containers (bridge shutdown). */\nexport function killAllSandboxes(): void {\n for (const [id] of activeSessions) {\n killSandbox(id);\n }\n}\n\n/** Get active sandbox sessions for observability. */\nexport function getActiveSandboxes(): ReadonlyMap<string, SandboxSession> {\n return activeSessions;\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,SAAS,mBAAmB;AAC5B,SAAS,iBAAiB;AAenB,SAAS,kBAA2B;AACzC,QAAM,SAAS,UAAU,UAAU,CAAC,MAAM,GAAG,EAAE,OAAO,QAAQ,SAAS,IAAK,CAAC;AAC7E,SAAO,OAAO,WAAW;AAC3B;AAGO,SAAS,aAAa,MAUH;AACxB,QAAM,QAAQ,YAAY,EAAE,EAAE,SAAS,KAAK;AAC5C,QAAM,QAAQ,KAAK,SAAS;AAC5B,QAAM,WAAW,KAAK,eAAe;AACrC,QAAM,UAAU,KAAK,cAAc;AACnC,QAAM,UAAU,KAAK,YAAY,KAAK,gBAAgB,MAAM,WAAW;AAEvE,QAAM,OAAO;AAAA,IACX;AAAA,IAAO;AAAA,IAAQ;AAAA,IACf;AAAA,IAAU,kBAAkB,KAAK,SAAS;AAAA,IAC1C;AAAA,IAAY;AAAA,IACZ;AAAA,IAAgB;AAAA,IAChB;AAAA,IAAkB;AAAA,IAClB;AAAA,IAAa;AAAA,IACb;AAAA,IAAkB,OAAO,OAAO;AAAA,IAChC;AAAA,IAAM,iBAAiB,KAAK;AAAA,IAC5B;AAAA,IAAM,cAAc,KAAK,SAAS;AAAA,IAClC;AAAA,IAAM,gBAAgB,KAAK,WAAW;AAAA,IACtC;AAAA,IAAM,WAAW,KAAK,MAAM;AAAA,IAC5B;AAAA,IAAM,GAAG,KAAK,UAAU;AAAA,IACxB;AAAA,IAAM,GAAG,KAAK,aAAa;AAAA,IAC3B;AAAA,EACF;AAEA,QAAM,SAAS,UAAU,UAAU,MAAM,EAAE,UAAU,SAAS,SAAS,IAAO,CAAC;AAC/E,MAAI,OAAO,WAAW,GAAG;AACvB,aAAS,KAAK,6BAA6B,OAAO,UAAU,IAAI,KAAK,CAAC,EAAE;AACxE,WAAO;AAAA,EACT;AAEA,QAAM,eAAe,OAAO,UAAU,IAAI,KAAK,EAAE,MAAM,GAAG,EAAE;AAC5D,UAAQ,KAAK,mBAAmB,WAAW,gBAAgB,KAAK,SAAS,UAAU,KAAK,WAAW,SAAS,OAAO,GAAG;AAEtH,QAAM,UAA0B;AAAA,IAC9B;AAAA,IACA,cAAc;AAAA,IACd,aAAa,KAAK;AAAA,IAClB,WAAW,KAAK,IAAI;AAAA,EACtB;AAEA,iBAAe,IAAI,KAAK,WAAW,OAAO;AAC1C,SAAO;AACT;AAGO,SAAS,YAAY,WAAyB;AACnD,QAAM,UAAU,eAAe,IAAI,SAAS;AAC5C,MAAI,CAAC,QAAS;AAEd,YAAU,UAAU,CAAC,QAAQ,QAAQ,WAAW,GAAG,EAAE,OAAO,QAAQ,SAAS,IAAO,CAAC;AACrF,iBAAe,OAAO,SAAS;AAC/B,UAAQ,KAAK,kBAAkB,QAAQ,WAAW,aAAa,SAAS,GAAG;AAC7E;AAGO,SAAS,mBAAyB;AACvC,aAAW,CAAC,EAAE,KAAK,gBAAgB;AACjC,gBAAY,EAAE;AAAA,EAChB;AACF;AAGO,SAAS,qBAA0D;AACxE,SAAO;AACT;AArGA,IASM,KASA;AAlBN;AAAA;AAOA;AAEA,IAAM,MAAM;AASZ,IAAM,iBAAiB,oBAAI,IAA4B;AAAA;AAAA;",
5
+ "mappings": ";;;;;;;;;;;;AAOA;AAFA,SAAS,mBAAmB;AAC5B,SAAS,iBAAiB;AAG1B,IAAM,MAAM;AASZ,IAAM,iBAAiB,oBAAI,IAA4B;AAGhD,SAAS,kBAA2B;AACzC,QAAM,SAAS,UAAU,UAAU,CAAC,MAAM,GAAG,EAAE,OAAO,QAAQ,SAAS,IAAK,CAAC;AAC7E,SAAO,OAAO,WAAW;AAC3B;AAGO,SAAS,aAAa,MAUH;AACxB,QAAM,QAAQ,YAAY,EAAE,EAAE,SAAS,KAAK;AAC5C,QAAM,QAAQ,KAAK,SAAS;AAC5B,QAAM,WAAW,KAAK,eAAe;AACrC,QAAM,UAAU,KAAK,cAAc;AACnC,QAAM,UAAU,KAAK,YAAY,KAAK,gBAAgB,MAAM,WAAW;AAEvE,QAAM,OAAO;AAAA,IACX;AAAA,IAAO;AAAA,IAAQ;AAAA,IACf;AAAA,IAAU,kBAAkB,KAAK,SAAS;AAAA,IAC1C;AAAA,IAAY;AAAA,IACZ;AAAA,IAAgB;AAAA,IAChB;AAAA,IAAkB;AAAA,IAClB;AAAA,IAAa;AAAA,IACb;AAAA,IAAkB,OAAO,OAAO;AAAA,IAChC;AAAA,IAAM,iBAAiB,KAAK;AAAA,IAC5B;AAAA,IAAM,cAAc,KAAK,SAAS;AAAA,IAClC;AAAA,IAAM,gBAAgB,KAAK,WAAW;AAAA,IACtC;AAAA,IAAM,WAAW,KAAK,MAAM;AAAA,IAC5B;AAAA,IAAM,GAAG,KAAK,UAAU;AAAA,IACxB;AAAA,IAAM,GAAG,KAAK,aAAa;AAAA,IAC3B;AAAA,EACF;AAEA,QAAM,SAAS,UAAU,UAAU,MAAM,EAAE,UAAU,SAAS,SAAS,IAAO,CAAC;AAC/E,MAAI,OAAO,WAAW,GAAG;AACvB,aAAS,KAAK,6BAA6B,OAAO,UAAU,IAAI,KAAK,CAAC,EAAE;AACxE,WAAO;AAAA,EACT;AAEA,QAAM,eAAe,OAAO,UAAU,IAAI,KAAK,EAAE,MAAM,GAAG,EAAE;AAC5D,UAAQ,KAAK,mBAAmB,WAAW,gBAAgB,KAAK,SAAS,UAAU,KAAK,WAAW,SAAS,OAAO,GAAG;AAEtH,QAAM,UAA0B;AAAA,IAC9B;AAAA,IACA,cAAc;AAAA,IACd,aAAa,KAAK;AAAA,IAClB,WAAW,KAAK,IAAI;AAAA,EACtB;AAEA,iBAAe,IAAI,KAAK,WAAW,OAAO;AAC1C,SAAO;AACT;AAGO,SAAS,YAAY,WAAyB;AACnD,QAAM,UAAU,eAAe,IAAI,SAAS;AAC5C,MAAI,CAAC,QAAS;AAEd,YAAU,UAAU,CAAC,QAAQ,QAAQ,WAAW,GAAG,EAAE,OAAO,QAAQ,SAAS,IAAO,CAAC;AACrF,iBAAe,OAAO,SAAS;AAC/B,UAAQ,KAAK,kBAAkB,QAAQ,WAAW,aAAa,SAAS,GAAG;AAC7E;AAGO,SAAS,mBAAyB;AACvC,aAAW,CAAC,EAAE,KAAK,gBAAgB;AACjC,gBAAY,EAAE;AAAA,EAChB;AACF;AAGO,SAAS,qBAA0D;AACxE,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -3,12 +3,13 @@
3
3
  import {
4
4
  init_log_and_swallow,
5
5
  logAndSwallow
6
- } from "./chunk-WP7FZHMI.js";
6
+ } from "./chunk-YSKCQH6E.js";
7
7
  import {
8
8
  init_logger,
9
9
  logInfo
10
- } from "./chunk-OOKNHOCB.js";
11
- import "./chunk-H2K23MOF.js";
10
+ } from "./chunk-GWILHZPT.js";
11
+ import "./chunk-GALQBVKO.js";
12
+ import "./chunk-O7KQG6ME.js";
12
13
  import "./chunk-7K2YZTLD.js";
13
14
 
14
15
  // src/components/self-healer-utils.ts
@@ -41,4 +42,4 @@ function healPort(port) {
41
42
  export {
42
43
  healPort
43
44
  };
44
- //# sourceMappingURL=self-healer-utils-KD6LV63S.js.map
45
+ //# sourceMappingURL=self-healer-utils-IFAYOQO2.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/components/self-healer-utils.ts"],
4
4
  "sourcesContent": ["/**\n * Shared healing utilities \u2014 called by service-registry during background retry.\n */\nimport { execFileSync } from \"node:child_process\";\nimport { logInfo } from \"./logger.js\";\nimport { logAndSwallow } from \"./log-and-swallow.js\";\n\nconst TAG = \"self-healer\";\n\n/** Kill the process holding a port. Returns true if killed, false if nothing found. */\nexport function healPort(port: number): boolean {\n try {\n const cmd = process.platform === \"darwin\" ? \"lsof\" : \"fuser\";\n const args = process.platform === \"darwin\" ? [\"-ti\", `:${port}`] : [`${port}/tcp`];\n const out = execFileSync(cmd, args, { encoding: \"utf-8\", timeout: 5000 }).trim();\n if (!out) return false;\n const pids = out.split(/\\s+/).map(Number).filter(p => p > 0 && p !== process.pid);\n if (pids.length === 0) return false;\n for (const pid of pids) {\n try { process.kill(pid, \"SIGKILL\"); } catch (err) { logAndSwallow(TAG, \"kill pid\", err); }\n }\n logInfo(TAG, `healPort(${port}): killed PID ${pids.join(\", \")}`);\n return true;\n } catch (err) {\n logAndSwallow(TAG, \"healPort\", err);\n return false;\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;AAIA;AACA;AAFA,SAAS,oBAAoB;AAI7B,IAAM,MAAM;AAGL,SAAS,SAAS,MAAuB;AAC9C,MAAI;AACF,UAAM,MAAM,QAAQ,aAAa,WAAW,SAAS;AACrD,UAAM,OAAO,QAAQ,aAAa,WAAW,CAAC,OAAO,IAAI,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,MAAM;AACjF,UAAM,MAAM,aAAa,KAAK,MAAM,EAAE,UAAU,SAAS,SAAS,IAAK,CAAC,EAAE,KAAK;AAC/E,QAAI,CAAC,IAAK,QAAO;AACjB,UAAM,OAAO,IAAI,MAAM,KAAK,EAAE,IAAI,MAAM,EAAE,OAAO,OAAK,IAAI,KAAK,MAAM,QAAQ,GAAG;AAChF,QAAI,KAAK,WAAW,EAAG,QAAO;AAC9B,eAAW,OAAO,MAAM;AACtB,UAAI;AAAE,gBAAQ,KAAK,KAAK,SAAS;AAAA,MAAG,SAAS,KAAK;AAAE,sBAAc,KAAK,YAAY,GAAG;AAAA,MAAG;AAAA,IAC3F;AACA,YAAQ,KAAK,YAAY,IAAI,iBAAiB,KAAK,KAAK,IAAI,CAAC,EAAE;AAC/D,WAAO;AAAA,EACT,SAAS,KAAK;AACZ,kBAAc,KAAK,YAAY,GAAG;AAClC,WAAO;AAAA,EACT;AACF;",
5
+ "mappings": ";;;;;;;;;;;;;;;AAIA;AACA;AAFA,SAAS,oBAAoB;AAI7B,IAAM,MAAM;AAGL,SAAS,SAAS,MAAuB;AAC9C,MAAI;AACF,UAAM,MAAM,QAAQ,aAAa,WAAW,SAAS;AACrD,UAAM,OAAO,QAAQ,aAAa,WAAW,CAAC,OAAO,IAAI,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,MAAM;AACjF,UAAM,MAAM,aAAa,KAAK,MAAM,EAAE,UAAU,SAAS,SAAS,IAAK,CAAC,EAAE,KAAK;AAC/E,QAAI,CAAC,IAAK,QAAO;AACjB,UAAM,OAAO,IAAI,MAAM,KAAK,EAAE,IAAI,MAAM,EAAE,OAAO,OAAK,IAAI,KAAK,MAAM,QAAQ,GAAG;AAChF,QAAI,KAAK,WAAW,EAAG,QAAO;AAC9B,eAAW,OAAO,MAAM;AACtB,UAAI;AAAE,gBAAQ,KAAK,KAAK,SAAS;AAAA,MAAG,SAAS,KAAK;AAAE,sBAAc,KAAK,YAAY,GAAG;AAAA,MAAG;AAAA,IAC3F;AACA,YAAQ,KAAK,YAAY,IAAI,iBAAiB,KAAK,KAAK,IAAI,CAAC,EAAE;AAC/D,WAAO;AAAA,EACT,SAAS,KAAK;AACZ,kBAAc,KAAK,YAAY,GAAG;AAClC,WAAO;AAAA,EACT;AACF;",
6
6
  "names": []
7
7
  }
@@ -10,9 +10,10 @@ import {
10
10
  reload,
11
11
  resetAutofixState,
12
12
  shouldAttempt
13
- } from "./chunk-FVUL44T4.js";
14
- import "./chunk-OOKNHOCB.js";
15
- import "./chunk-H2K23MOF.js";
13
+ } from "./chunk-IJT4KWXT.js";
14
+ import "./chunk-GWILHZPT.js";
15
+ import "./chunk-GALQBVKO.js";
16
+ import "./chunk-O7KQG6ME.js";
16
17
  import "./chunk-7K2YZTLD.js";
17
18
  export {
18
19
  addSelfFix,
@@ -25,4 +26,4 @@ export {
25
26
  resetAutofixState,
26
27
  shouldAttempt
27
28
  };
28
- //# sourceMappingURL=sha-tracker-2DB4R2TW.js.map
29
+ //# sourceMappingURL=sha-tracker-ZWBP6CIJ.js.map
@@ -4,11 +4,12 @@ import {
4
4
  init_logger,
5
5
  logInfo,
6
6
  logWarn
7
- } from "./chunk-OOKNHOCB.js";
7
+ } from "./chunk-GWILHZPT.js";
8
8
  import {
9
9
  abtarsHome,
10
10
  init_paths
11
- } from "./chunk-H2K23MOF.js";
11
+ } from "./chunk-GALQBVKO.js";
12
+ import "./chunk-O7KQG6ME.js";
12
13
  import "./chunk-7K2YZTLD.js";
13
14
 
14
15
  // src/components/skill-session.ts
@@ -77,7 +78,7 @@ ${context}`);
77
78
  if (message) parts.push(`[USER MESSAGE]
78
79
  ${message}`);
79
80
  const goal = parts.join("\n\n");
80
- const { spin } = await import("./spin-4DBYHS3E.js");
81
+ const { spin } = await import("./spin-IMW2MZOH.js");
81
82
  const timeout = (config.timeout ?? 1800) * 1e3;
82
83
  const { cardId } = spin.dispatch({
83
84
  type: "T",
@@ -142,4 +143,4 @@ export {
142
143
  launchSkill,
143
144
  listRunnableSkills
144
145
  };
145
- //# sourceMappingURL=skill-session-BPDVA6ZG.js.map
146
+ //# sourceMappingURL=skill-session-AXBDQSLQ.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/components/skill-session.ts"],
4
4
  "sourcesContent": ["/**\n * skill-session.ts \u2014 Launch and manage skill sessions (#1141).\n *\n * Skills with skill.json are launchable into dedicated T-sessions.\n * Entry points: /skill run, model dispatch_skill tool, task with skill field.\n */\n\nimport { existsSync, readFileSync, mkdirSync, readdirSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { execSync } from \"node:child_process\";\nimport { abtarsHome } from \"../paths.js\";\nimport { logInfo, logWarn } from \"./logger.js\";\n\nconst TAG = \"skill-session\";\n\nexport interface SkillConfig {\n agent?: string;\n interactive?: boolean;\n contextPath?: string;\n description?: string;\n memory?: boolean;\n tools?: string[];\n timeout?: number;\n prerequisites?: string[];\n}\n\ninterface ActiveSkillSession {\n skillName: string;\n sessionId: string;\n userId: string;\n chatId: string;\n startedAt: number;\n timeout: number;\n}\n\n/** Active skill sessions keyed by chatId */\nconst activeSessions = new Map<string, ActiveSkillSession>();\n\nconst SKILL_SUBDIRS = [\"self\", \"custom\", \"downloaded\", \"core\"];\n\n/** Resolve a skill directory by name \u2014 searches self \u2192 custom \u2192 downloaded \u2192 core. */\nfunction resolveSkillDir(name: string): string | null {\n const base = join(abtarsHome(), \"skills\");\n for (const sub of SKILL_SUBDIRS) {\n const dir = join(base, sub, name);\n if (existsSync(join(dir, \"skill.json\"))) return dir;\n }\n // Also check core/skills in the app bundle\n const bundleDir = join(abtarsHome(), \"app\", \"bundle\", \"core\", \"skills\", name);\n if (existsSync(join(bundleDir, \"skill.json\"))) return bundleDir;\n return null;\n}\n\n/** Read and parse skill.json from a skill directory. */\nfunction readSkillConfig(dir: string): SkillConfig | null {\n try {\n return JSON.parse(readFileSync(join(dir, \"skill.json\"), \"utf-8\")) as SkillConfig;\n } catch { return null; }\n}\n\n/** Check prerequisites (which <bin>). Returns first missing binary or null if all OK. */\nfunction checkPrerequisites(config: SkillConfig): string | null {\n for (const bin of config.prerequisites ?? []) {\n try { execSync(`which ${bin}`, { stdio: \"ignore\" }); }\n catch { return bin; }\n }\n return null;\n}\n\n/** Launch a skill session. Returns error message or null on success. */\nexport async function launchSkill(skillName: string, userId: string, chatId: string, message?: string): Promise<string | null> {\n const dir = resolveSkillDir(skillName);\n if (!dir) return `Skill \"${skillName}\" not found or has no skill.json`;\n\n const config = readSkillConfig(dir);\n if (!config) return `Failed to read skill.json for \"${skillName}\"`;\n\n // Check prerequisites\n const missing = checkPrerequisites(config);\n if (missing) return `Cannot run ${skillName}: \"${missing}\" not found on PATH`;\n\n // End existing skill session for this chat if any\n if (activeSessions.has(chatId)) {\n await endSkillSession(chatId);\n }\n\n // Read SKILL.md\n const skillMdPath = join(dir, \"SKILL.md\");\n const skillMd = existsSync(skillMdPath) ? readFileSync(skillMdPath, \"utf-8\").trim() : \"\";\n if (!skillMd) return `Skill \"${skillName}\" has no SKILL.md`;\n\n // Read CONTEXT.md (resolve ${userId} in contextPath)\n let context = \"\";\n if (config.contextPath) {\n const ctxPath = join(abtarsHome(), config.contextPath.replace(\"${userId}\", userId));\n if (existsSync(ctxPath)) {\n const raw = readFileSync(ctxPath, \"utf-8\").trim();\n context = raw.length > 30000 ? raw.slice(0, 30000) : raw;\n }\n // Ensure directory exists for model to write later\n mkdirSync(join(ctxPath, \"..\"), { recursive: true });\n }\n\n // Build goal prompt\n const parts: string[] = [];\n parts.push(`[SKILL: ${skillName}]\\n${skillMd}`);\n if (context) parts.push(`[SKILL CONTEXT \u2014 progress from previous sessions]\\n${context}`);\n if (message) parts.push(`[USER MESSAGE]\\n${message}`);\n const goal = parts.join(\"\\n\\n\");\n\n // Dispatch via Spin\n const { spin } = await import(\"./spin.js\");\n const timeout = (config.timeout ?? 1800) * 1000;\n\n const { cardId } = spin.dispatch({\n type: \"T\",\n agent: (config.agent ?? \"professor\") as any,\n goal,\n title: `Skill: ${skillName}`,\n source: \"task\",\n timeoutMs: timeout,\n chatId,\n });\n\n // Track active session\n const sessionId = `skill_${skillName}_${Date.now()}`;\n activeSessions.set(chatId, {\n skillName,\n sessionId,\n userId,\n chatId,\n startedAt: Date.now(),\n timeout: config.timeout ?? 1800,\n });\n\n logInfo(TAG, `Launched skill \"${skillName}\" for ${userId} (chat ${chatId}, card ${cardId}, interactive=${config.interactive ?? false})`);\n return null;\n}\n\n/** End an active skill session for a chatId. */\nexport async function endSkillSession(chatId: string): Promise<boolean> {\n const session = activeSessions.get(chatId);\n if (!session) return false;\n activeSessions.delete(chatId);\n logInfo(TAG, `Ended skill \"${session.skillName}\" for ${session.userId} (${Math.round((Date.now() - session.startedAt) / 1000)}s)`);\n return true;\n}\n\n/** Get active skill session for a chatId (used by pipeline routing). */\nexport function getActiveSkillSession(chatId: string): ActiveSkillSession | undefined {\n const session = activeSessions.get(chatId);\n if (!session) return undefined;\n // Check timeout\n if (Date.now() - session.startedAt > session.timeout * 1000) {\n activeSessions.delete(chatId);\n logWarn(TAG, `Skill \"${session.skillName}\" timed out for ${session.userId}`);\n return undefined;\n }\n return session;\n}\n\n/** List all launchable skills (have skill.json). */\nexport function listRunnableSkills(): Array<{ name: string; description: string; interactive: boolean }> {\n const base = join(abtarsHome(), \"skills\");\n const results: Array<{ name: string; description: string; interactive: boolean }> = [];\n for (const sub of SKILL_SUBDIRS) {\n const subDir = join(base, sub);\n if (!existsSync(subDir)) continue;\n try {\n for (const entry of readdirSync(subDir, { withFileTypes: true })) {\n if (!entry.isDirectory()) continue;\n const dir = join(subDir, entry.name);\n if (!existsSync(join(dir, \"skill.json\"))) continue;\n const config = readSkillConfig(dir);\n if (config) results.push({ name: entry.name, description: config.description ?? \"\", interactive: config.interactive ?? false });\n }\n } catch {}\n }\n return results;\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -7,10 +7,11 @@ import {
7
7
  flush,
8
8
  init,
9
9
  setProvenance
10
- } from "./chunk-ULO2PX3T.js";
11
- import "./chunk-WP7FZHMI.js";
12
- import "./chunk-OOKNHOCB.js";
13
- import "./chunk-H2K23MOF.js";
10
+ } from "./chunk-TEFZ4JA4.js";
11
+ import "./chunk-YSKCQH6E.js";
12
+ import "./chunk-GWILHZPT.js";
13
+ import "./chunk-GALQBVKO.js";
14
+ import "./chunk-O7KQG6ME.js";
14
15
  import "./chunk-7K2YZTLD.js";
15
16
  export {
16
17
  _getStats,
@@ -20,4 +21,4 @@ export {
20
21
  init,
21
22
  setProvenance
22
23
  };
23
- //# sourceMappingURL=skill-stats-TPD2NROA.js.map
24
+ //# sourceMappingURL=skill-stats-JORH5DGM.js.map
@@ -3,13 +3,14 @@
3
3
  import {
4
4
  SkillWatcher,
5
5
  init_skill_watcher
6
- } from "./chunk-FIAVVKGN.js";
7
- import "./chunk-WP7FZHMI.js";
8
- import "./chunk-OOKNHOCB.js";
9
- import "./chunk-H2K23MOF.js";
6
+ } from "./chunk-EUZDKV3C.js";
7
+ import "./chunk-YSKCQH6E.js";
8
+ import "./chunk-GWILHZPT.js";
9
+ import "./chunk-GALQBVKO.js";
10
+ import "./chunk-O7KQG6ME.js";
10
11
  import "./chunk-7K2YZTLD.js";
11
12
  init_skill_watcher();
12
13
  export {
13
14
  SkillWatcher
14
15
  };
15
- //# sourceMappingURL=skill-watcher-D7QYYYON.js.map
16
+ //# sourceMappingURL=skill-watcher-E4MGLKLS.js.map
@@ -3,18 +3,19 @@
3
3
  import {
4
4
  createSleepHandle,
5
5
  register
6
- } from "./chunk-TCI6FZTP.js";
7
- import "./chunk-JAJ3DUQ2.js";
8
- import "./chunk-V6CV3QPH.js";
9
- import "./chunk-W726UGI6.js";
6
+ } from "./chunk-OLAURO5G.js";
7
+ import "./chunk-YRSMGJFP.js";
8
+ import "./chunk-UUIHL65U.js";
9
+ import "./chunk-GRVWZO4C.js";
10
10
  import "./chunk-N5KN3LGD.js";
11
- import "./chunk-SSCGWDIC.js";
12
- import "./chunk-WP7FZHMI.js";
13
- import "./chunk-OOKNHOCB.js";
14
- import "./chunk-H2K23MOF.js";
11
+ import "./chunk-65VCEC32.js";
12
+ import "./chunk-YSKCQH6E.js";
13
+ import "./chunk-GWILHZPT.js";
14
+ import "./chunk-GALQBVKO.js";
15
+ import "./chunk-O7KQG6ME.js";
15
16
  import "./chunk-7K2YZTLD.js";
16
17
  export {
17
18
  createSleepHandle,
18
19
  register
19
20
  };
20
- //# sourceMappingURL=sleep-GH6DLBJJ.js.map
21
+ //# sourceMappingURL=sleep-SRCSXY6T.js.map
@@ -4,18 +4,19 @@ import {
4
4
  buildSoulBundle,
5
5
  getInstanceName,
6
6
  init_soul_bundle
7
- } from "./chunk-56D3Y44D.js";
8
- import "./chunk-O4GKI3Q3.js";
9
- import "./chunk-4PIVWXUJ.js";
10
- import "./chunk-43DKPXTP.js";
11
- import "./chunk-SSCGWDIC.js";
12
- import "./chunk-WP7FZHMI.js";
13
- import "./chunk-OOKNHOCB.js";
14
- import "./chunk-H2K23MOF.js";
7
+ } from "./chunk-EFJVUJBE.js";
8
+ import "./chunk-ZV4IWKDJ.js";
9
+ import "./chunk-4S554KLW.js";
10
+ import "./chunk-LUNA6PM5.js";
11
+ import "./chunk-65VCEC32.js";
12
+ import "./chunk-YSKCQH6E.js";
13
+ import "./chunk-GWILHZPT.js";
14
+ import "./chunk-GALQBVKO.js";
15
+ import "./chunk-O7KQG6ME.js";
15
16
  import "./chunk-7K2YZTLD.js";
16
17
  init_soul_bundle();
17
18
  export {
18
19
  buildSoulBundle,
19
20
  getInstanceName
20
21
  };
21
- //# sourceMappingURL=soul-bundle-GXLMDBCC.js.map
22
+ //# sourceMappingURL=soul-bundle-VWAVHCZ6.js.map
@@ -5,21 +5,24 @@ import {
5
5
  init_spin,
6
6
  isHollow,
7
7
  spin
8
- } from "./chunk-GCFIK6OB.js";
8
+ } from "./chunk-AO32N2VB.js";
9
+ import "./chunk-AFREM7FX.js";
10
+ import "./chunk-ZV4IWKDJ.js";
9
11
  import {
10
12
  parseSessionType,
11
13
  sessionCreatedAt,
12
14
  sessionType,
13
15
  typeAgent,
14
16
  typeLabel
15
- } from "./chunk-T7TAWGBX.js";
16
- import "./chunk-S6HEHCCG.js";
17
- import "./chunk-YME7NRGP.js";
18
- import "./chunk-TY26WMQY.js";
19
- import "./chunk-43DKPXTP.js";
20
- import "./chunk-SSCGWDIC.js";
21
- import "./chunk-OOKNHOCB.js";
22
- import "./chunk-H2K23MOF.js";
17
+ } from "./chunk-Y76VUJSF.js";
18
+ import "./chunk-EQSG2CRM.js";
19
+ import "./chunk-GVM5YU5I.js";
20
+ import "./chunk-OXTSWQCX.js";
21
+ import "./chunk-65VCEC32.js";
22
+ import "./chunk-YSKCQH6E.js";
23
+ import "./chunk-GWILHZPT.js";
24
+ import "./chunk-GALQBVKO.js";
25
+ import "./chunk-O7KQG6ME.js";
23
26
  import "./chunk-7K2YZTLD.js";
24
27
  init_spin();
25
28
  export {
@@ -32,4 +35,4 @@ export {
32
35
  typeAgent,
33
36
  typeLabel
34
37
  };
35
- //# sourceMappingURL=spin-4DBYHS3E.js.map
38
+ //# sourceMappingURL=spin-IMW2MZOH.js.map
@@ -3,13 +3,15 @@
3
3
  import {
4
4
  init_kanban_board,
5
5
  kanbanGetCard
6
- } from "./chunk-S6HEHCCG.js";
6
+ } from "./chunk-EQSG2CRM.js";
7
+ import "./chunk-GVM5YU5I.js";
7
8
  import {
8
9
  init_nerve,
9
10
  nerve
10
- } from "./chunk-YME7NRGP.js";
11
- import "./chunk-OOKNHOCB.js";
12
- import "./chunk-H2K23MOF.js";
11
+ } from "./chunk-OXTSWQCX.js";
12
+ import "./chunk-GWILHZPT.js";
13
+ import "./chunk-GALQBVKO.js";
14
+ import "./chunk-O7KQG6ME.js";
13
15
  import {
14
16
  __esm
15
17
  } from "./chunk-7K2YZTLD.js";
@@ -46,4 +48,4 @@ init_spin_notifications();
46
48
  export {
47
49
  drainOrcNotifications
48
50
  };
49
- //# sourceMappingURL=spin-notifications-IKYJPER5.js.map
51
+ //# sourceMappingURL=spin-notifications-SE2HVZI7.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/components/spin-notifications.ts"],
4
4
  "sourcesContent": ["/**\n * spin-notifications.ts \u2014 Per-project notification buffer for Orc (#907).\n * Subscribes to Nerve card:done/card:failed. Buffers structured messages\n * keyed by parent_id. Orc drains its project's buffer before each turn.\n */\n\nimport { nerve } from \"./nerve.js\";\nimport { kanbanGetCard } from \"./tasks/kanban-board.js\";\n\nconst buffers = new Map<number, string[]>();\n\nnerve.on(\"card:done\", (cardId: number) => {\n const card = kanbanGetCard(cardId);\n if (!card || !card.parent_id) return;\n const buf = buffers.get(card.parent_id) ?? [];\n buf.push(`[WORKER COMPLETE] Card #${cardId} \"${card.title}\" \u2014 done. Summary: \"${card.result_summary?.slice(0, 150) ?? \"\"}\"`);\n buffers.set(card.parent_id, buf);\n});\n\nnerve.on(\"card:failed\", (cardId: number) => {\n const card = kanbanGetCard(cardId);\n if (!card || !card.parent_id) return;\n const buf = buffers.get(card.parent_id) ?? [];\n buf.push(`[WORKER FAILED] Card #${cardId} \"${card.title}\" \u2014 ${card.error?.slice(0, 100) ?? \"unknown error\"}`);\n buffers.set(card.parent_id, buf);\n});\n\n/** Drain notifications for a specific project card. Returns and clears buffered messages. */\nexport function drainOrcNotifications(projectCardId: number): string[] {\n const msgs = buffers.get(projectCardId) ?? [];\n buffers.delete(projectCardId);\n return msgs;\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;AA4BO,SAAS,sBAAsB,eAAiC;AACrE,QAAM,OAAO,QAAQ,IAAI,aAAa,KAAK,CAAC;AAC5C,UAAQ,OAAO,aAAa;AAC5B,SAAO;AACT;AAhCA,IASM;AATN;AAAA;AAMA;AACA;AAEA,IAAM,UAAU,oBAAI,IAAsB;AAE1C,UAAM,GAAG,aAAa,CAAC,WAAmB;AACxC,YAAM,OAAO,cAAc,MAAM;AACjC,UAAI,CAAC,QAAQ,CAAC,KAAK,UAAW;AAC9B,YAAM,MAAM,QAAQ,IAAI,KAAK,SAAS,KAAK,CAAC;AAC5C,UAAI,KAAK,2BAA2B,MAAM,KAAK,KAAK,KAAK,4BAAuB,KAAK,gBAAgB,MAAM,GAAG,GAAG,KAAK,EAAE,GAAG;AAC3H,cAAQ,IAAI,KAAK,WAAW,GAAG;AAAA,IACjC,CAAC;AAED,UAAM,GAAG,eAAe,CAAC,WAAmB;AAC1C,YAAM,OAAO,cAAc,MAAM;AACjC,UAAI,CAAC,QAAQ,CAAC,KAAK,UAAW;AAC9B,YAAM,MAAM,QAAQ,IAAI,KAAK,SAAS,KAAK,CAAC;AAC5C,UAAI,KAAK,yBAAyB,MAAM,KAAK,KAAK,KAAK,YAAO,KAAK,OAAO,MAAM,GAAG,GAAG,KAAK,eAAe,EAAE;AAC5G,cAAQ,IAAI,KAAK,WAAW,GAAG;AAAA,IACjC,CAAC;AAAA;AAAA;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AA4BO,SAAS,sBAAsB,eAAiC;AACrE,QAAM,OAAO,QAAQ,IAAI,aAAa,KAAK,CAAC;AAC5C,UAAQ,OAAO,aAAa;AAC5B,SAAO;AACT;AAhCA,IASM;AATN;AAAA;AAMA;AACA;AAEA,IAAM,UAAU,oBAAI,IAAsB;AAE1C,UAAM,GAAG,aAAa,CAAC,WAAmB;AACxC,YAAM,OAAO,cAAc,MAAM;AACjC,UAAI,CAAC,QAAQ,CAAC,KAAK,UAAW;AAC9B,YAAM,MAAM,QAAQ,IAAI,KAAK,SAAS,KAAK,CAAC;AAC5C,UAAI,KAAK,2BAA2B,MAAM,KAAK,KAAK,KAAK,4BAAuB,KAAK,gBAAgB,MAAM,GAAG,GAAG,KAAK,EAAE,GAAG;AAC3H,cAAQ,IAAI,KAAK,WAAW,GAAG;AAAA,IACjC,CAAC;AAED,UAAM,GAAG,eAAe,CAAC,WAAmB;AAC1C,YAAM,OAAO,cAAc,MAAM;AACjC,UAAI,CAAC,QAAQ,CAAC,KAAK,UAAW;AAC9B,YAAM,MAAM,QAAQ,IAAI,KAAK,SAAS,KAAK,CAAC;AAC5C,UAAI,KAAK,yBAAyB,MAAM,KAAK,KAAK,KAAK,YAAO,KAAK,OAAO,MAAM,GAAG,GAAG,KAAK,eAAe,EAAE;AAC5G,cAAQ,IAAI,KAAK,WAAW,GAAG;AAAA,IACjC,CAAC;AAAA;AAAA;",
6
6
  "names": []
7
7
  }
@@ -7,9 +7,10 @@ import {
7
7
  sessionType,
8
8
  typeAgent,
9
9
  typeLabel
10
- } from "./chunk-T7TAWGBX.js";
11
- import "./chunk-OOKNHOCB.js";
12
- import "./chunk-H2K23MOF.js";
10
+ } from "./chunk-Y76VUJSF.js";
11
+ import "./chunk-GWILHZPT.js";
12
+ import "./chunk-GALQBVKO.js";
13
+ import "./chunk-O7KQG6ME.js";
13
14
  import "./chunk-7K2YZTLD.js";
14
15
  init_spin_types();
15
16
  export {
@@ -19,4 +20,4 @@ export {
19
20
  typeAgent,
20
21
  typeLabel
21
22
  };
22
- //# sourceMappingURL=spin-types-PLJH3SIK.js.map
23
+ //# sourceMappingURL=spin-types-BLPYAETA.js.map
@@ -2,9 +2,9 @@
2
2
  import { createRequire as __bundleCreateRequire } from 'node:module'; import { fileURLToPath as __bundleFileURLToPath } from 'node:url'; import { dirname as __bundleDirname } from 'node:path'; const require = __bundleCreateRequire(import.meta.url); const __chunk_filename = __bundleFileURLToPath(import.meta.url); const __chunk_dirname = __bundleDirname(__chunk_filename);
3
3
  import {
4
4
  require_src
5
- } from "./chunk-3LQOJVTB.js";
6
- import "./chunk-LE23VPN3.js";
7
- import "./chunk-S7ZIGIR5.js";
5
+ } from "./chunk-HFOCNYEO.js";
6
+ import "./chunk-63A7ZRIH.js";
7
+ import "./chunk-R76K6L6H.js";
8
8
  import "./chunk-7K2YZTLD.js";
9
9
  export default require_src();
10
- //# sourceMappingURL=src-SUFZ27S5.js.map
10
+ //# sourceMappingURL=src-6BTCMOD3.js.map
@@ -3,9 +3,10 @@
3
3
  import {
4
4
  init_log_and_swallow,
5
5
  logAndSwallow
6
- } from "./chunk-WP7FZHMI.js";
7
- import "./chunk-OOKNHOCB.js";
8
- import "./chunk-H2K23MOF.js";
6
+ } from "./chunk-YSKCQH6E.js";
7
+ import "./chunk-GWILHZPT.js";
8
+ import "./chunk-GALQBVKO.js";
9
+ import "./chunk-O7KQG6ME.js";
9
10
  import "./chunk-7K2YZTLD.js";
10
11
 
11
12
  // src/components/transport/sse-parser-anthropic.ts
@@ -70,4 +71,4 @@ async function* parseAnthropicSSE(response, signal) {
70
71
  export {
71
72
  parseAnthropicSSE
72
73
  };
73
- //# sourceMappingURL=sse-parser-anthropic-U7ILHOY5.js.map
74
+ //# sourceMappingURL=sse-parser-anthropic-A6R4Z2TB.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/components/transport/sse-parser-anthropic.ts"],
4
4
  "sourcesContent": ["/**\n * sse-parser-anthropic.ts \u2014 Anthropic Messages API streaming parser (#472).\n * Yields same SSEEvent types as sse-parser.ts for consumer compatibility.\n * v1: text streaming only. Tool calls (tool_use blocks) not yet mapped.\n */\n\nimport type { SSEEvent } from \"./sse-parser.js\";\nimport { logAndSwallow } from \"../log-and-swallow.js\";\n\nconst TAG = \"sse_parser_anthropic\";\n\nexport async function* parseAnthropicSSE(\n response: Response,\n signal: AbortSignal,\n): AsyncGenerator<SSEEvent> {\n const reader = response.body?.getReader();\n if (!reader) throw new Error(\"Response body is not readable\");\n\n const decoder = new TextDecoder();\n let buffer = \"\";\n let usage: { prompt_tokens: number; completion_tokens: number } | null = null;\n\n try {\n while (true) {\n if (signal.aborted) break;\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() ?? \"\";\n\n let eventType = \"\";\n for (const line of lines) {\n if (line.startsWith(\"event: \")) {\n eventType = line.slice(7).trim();\n } else if (line.startsWith(\"data: \") && eventType) {\n const data = line.slice(6).trim();\n let parsed: Record<string, unknown>;\n try { parsed = JSON.parse(data); } catch (err) { logAndSwallow(TAG, \"JSON.parse SSE chunk\", err); eventType = \"\"; continue; }\n\n if (eventType === \"content_block_delta\") {\n const delta = parsed[\"delta\"] as Record<string, unknown> | undefined;\n if (delta?.[\"type\"] === \"text_delta\" && typeof delta[\"text\"] === \"string\") {\n yield { type: \"chunk\", content: delta[\"text\"] as string };\n } else if (delta?.[\"type\"] === \"input_json_delta\" && typeof delta[\"partial_json\"] === \"string\") {\n yield { type: \"tool_call_delta\", index: (parsed[\"index\"] as number) ?? 0, id: undefined, name: undefined, arguments: delta[\"partial_json\"] as string };\n }\n } else if (eventType === \"content_block_start\") {\n const block = parsed[\"content_block\"] as Record<string, unknown> | undefined;\n if (block?.[\"type\"] === \"tool_use\") {\n yield { type: \"tool_call_delta\", index: (parsed[\"index\"] as number) ?? 0, id: block[\"id\"] as string, name: block[\"name\"] as string, arguments: undefined };\n }\n } else if (eventType === \"message_delta\") {\n const u = parsed[\"usage\"] as Record<string, number> | undefined;\n if (u) usage = { prompt_tokens: u[\"input_tokens\"] ?? 0, completion_tokens: u[\"output_tokens\"] ?? 0 };\n } else if (eventType === \"message_stop\") {\n yield { type: \"done\", usage };\n return;\n }\n eventType = \"\";\n }\n }\n }\n yield { type: \"done\", usage };\n } finally {\n reader.releaseLock();\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;AAOA;AAEA,IAAM,MAAM;AAEZ,gBAAuB,kBACrB,UACA,QAC0B;AAC1B,QAAM,SAAS,SAAS,MAAM,UAAU;AACxC,MAAI,CAAC,OAAQ,OAAM,IAAI,MAAM,+BAA+B;AAE5D,QAAM,UAAU,IAAI,YAAY;AAChC,MAAI,SAAS;AACb,MAAI,QAAqE;AAEzE,MAAI;AACF,WAAO,MAAM;AACX,UAAI,OAAO,QAAS;AACpB,YAAM,EAAE,MAAM,MAAM,IAAI,MAAM,OAAO,KAAK;AAC1C,UAAI,KAAM;AAEV,gBAAU,QAAQ,OAAO,OAAO,EAAE,QAAQ,KAAK,CAAC;AAChD,YAAM,QAAQ,OAAO,MAAM,IAAI;AAC/B,eAAS,MAAM,IAAI,KAAK;AAExB,UAAI,YAAY;AAChB,iBAAW,QAAQ,OAAO;AACxB,YAAI,KAAK,WAAW,SAAS,GAAG;AAC9B,sBAAY,KAAK,MAAM,CAAC,EAAE,KAAK;AAAA,QACjC,WAAW,KAAK,WAAW,QAAQ,KAAK,WAAW;AACjD,gBAAM,OAAO,KAAK,MAAM,CAAC,EAAE,KAAK;AAChC,cAAI;AACJ,cAAI;AAAE,qBAAS,KAAK,MAAM,IAAI;AAAA,UAAG,SAAS,KAAK;AAAE,0BAAc,KAAK,wBAAwB,GAAG;AAAG,wBAAY;AAAI;AAAA,UAAU;AAE5H,cAAI,cAAc,uBAAuB;AACvC,kBAAM,QAAQ,OAAO,OAAO;AAC5B,gBAAI,QAAQ,MAAM,MAAM,gBAAgB,OAAO,MAAM,MAAM,MAAM,UAAU;AACzE,oBAAM,EAAE,MAAM,SAAS,SAAS,MAAM,MAAM,EAAY;AAAA,YAC1D,WAAW,QAAQ,MAAM,MAAM,sBAAsB,OAAO,MAAM,cAAc,MAAM,UAAU;AAC9F,oBAAM,EAAE,MAAM,mBAAmB,OAAQ,OAAO,OAAO,KAAgB,GAAG,IAAI,QAAW,MAAM,QAAW,WAAW,MAAM,cAAc,EAAY;AAAA,YACvJ;AAAA,UACF,WAAW,cAAc,uBAAuB;AAC9C,kBAAM,QAAQ,OAAO,eAAe;AACpC,gBAAI,QAAQ,MAAM,MAAM,YAAY;AAClC,oBAAM,EAAE,MAAM,mBAAmB,OAAQ,OAAO,OAAO,KAAgB,GAAG,IAAI,MAAM,IAAI,GAAa,MAAM,MAAM,MAAM,GAAa,WAAW,OAAU;AAAA,YAC3J;AAAA,UACF,WAAW,cAAc,iBAAiB;AACxC,kBAAM,IAAI,OAAO,OAAO;AACxB,gBAAI,EAAG,SAAQ,EAAE,eAAe,EAAE,cAAc,KAAK,GAAG,mBAAmB,EAAE,eAAe,KAAK,EAAE;AAAA,UACrG,WAAW,cAAc,gBAAgB;AACvC,kBAAM,EAAE,MAAM,QAAQ,MAAM;AAC5B;AAAA,UACF;AACA,sBAAY;AAAA,QACd;AAAA,MACF;AAAA,IACF;AACA,UAAM,EAAE,MAAM,QAAQ,MAAM;AAAA,EAC9B,UAAE;AACA,WAAO,YAAY;AAAA,EACrB;AACF;",
5
+ "mappings": ";;;;;;;;;;;;AAOA;AAEA,IAAM,MAAM;AAEZ,gBAAuB,kBACrB,UACA,QAC0B;AAC1B,QAAM,SAAS,SAAS,MAAM,UAAU;AACxC,MAAI,CAAC,OAAQ,OAAM,IAAI,MAAM,+BAA+B;AAE5D,QAAM,UAAU,IAAI,YAAY;AAChC,MAAI,SAAS;AACb,MAAI,QAAqE;AAEzE,MAAI;AACF,WAAO,MAAM;AACX,UAAI,OAAO,QAAS;AACpB,YAAM,EAAE,MAAM,MAAM,IAAI,MAAM,OAAO,KAAK;AAC1C,UAAI,KAAM;AAEV,gBAAU,QAAQ,OAAO,OAAO,EAAE,QAAQ,KAAK,CAAC;AAChD,YAAM,QAAQ,OAAO,MAAM,IAAI;AAC/B,eAAS,MAAM,IAAI,KAAK;AAExB,UAAI,YAAY;AAChB,iBAAW,QAAQ,OAAO;AACxB,YAAI,KAAK,WAAW,SAAS,GAAG;AAC9B,sBAAY,KAAK,MAAM,CAAC,EAAE,KAAK;AAAA,QACjC,WAAW,KAAK,WAAW,QAAQ,KAAK,WAAW;AACjD,gBAAM,OAAO,KAAK,MAAM,CAAC,EAAE,KAAK;AAChC,cAAI;AACJ,cAAI;AAAE,qBAAS,KAAK,MAAM,IAAI;AAAA,UAAG,SAAS,KAAK;AAAE,0BAAc,KAAK,wBAAwB,GAAG;AAAG,wBAAY;AAAI;AAAA,UAAU;AAE5H,cAAI,cAAc,uBAAuB;AACvC,kBAAM,QAAQ,OAAO,OAAO;AAC5B,gBAAI,QAAQ,MAAM,MAAM,gBAAgB,OAAO,MAAM,MAAM,MAAM,UAAU;AACzE,oBAAM,EAAE,MAAM,SAAS,SAAS,MAAM,MAAM,EAAY;AAAA,YAC1D,WAAW,QAAQ,MAAM,MAAM,sBAAsB,OAAO,MAAM,cAAc,MAAM,UAAU;AAC9F,oBAAM,EAAE,MAAM,mBAAmB,OAAQ,OAAO,OAAO,KAAgB,GAAG,IAAI,QAAW,MAAM,QAAW,WAAW,MAAM,cAAc,EAAY;AAAA,YACvJ;AAAA,UACF,WAAW,cAAc,uBAAuB;AAC9C,kBAAM,QAAQ,OAAO,eAAe;AACpC,gBAAI,QAAQ,MAAM,MAAM,YAAY;AAClC,oBAAM,EAAE,MAAM,mBAAmB,OAAQ,OAAO,OAAO,KAAgB,GAAG,IAAI,MAAM,IAAI,GAAa,MAAM,MAAM,MAAM,GAAa,WAAW,OAAU;AAAA,YAC3J;AAAA,UACF,WAAW,cAAc,iBAAiB;AACxC,kBAAM,IAAI,OAAO,OAAO;AACxB,gBAAI,EAAG,SAAQ,EAAE,eAAe,EAAE,cAAc,KAAK,GAAG,mBAAmB,EAAE,eAAe,KAAK,EAAE;AAAA,UACrG,WAAW,cAAc,gBAAgB;AACvC,kBAAM,EAAE,MAAM,QAAQ,MAAM;AAC5B;AAAA,UACF;AACA,sBAAY;AAAA,QACd;AAAA,MACF;AAAA,IACF;AACA,UAAM,EAAE,MAAM,QAAQ,MAAM;AAAA,EAC9B,UAAE;AACA,WAAO,YAAY;AAAA,EACrB;AACF;",
6
6
  "names": []
7
7
  }
@@ -3,9 +3,10 @@
3
3
  import {
4
4
  init_log_and_swallow,
5
5
  logAndSwallow
6
- } from "./chunk-WP7FZHMI.js";
7
- import "./chunk-OOKNHOCB.js";
8
- import "./chunk-H2K23MOF.js";
6
+ } from "./chunk-YSKCQH6E.js";
7
+ import "./chunk-GWILHZPT.js";
8
+ import "./chunk-GALQBVKO.js";
9
+ import "./chunk-O7KQG6ME.js";
9
10
  import "./chunk-7K2YZTLD.js";
10
11
 
11
12
  // src/components/transport/sse-parser-responses.ts
@@ -61,4 +62,4 @@ async function* parseResponsesSSE(response, signal) {
61
62
  export {
62
63
  parseResponsesSSE
63
64
  };
64
- //# sourceMappingURL=sse-parser-responses-OI73R3AH.js.map
65
+ //# sourceMappingURL=sse-parser-responses-HSZY3QGJ.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/components/transport/sse-parser-responses.ts"],
4
4
  "sourcesContent": ["/**\n * sse-parser-responses.ts \u2014 OpenAI Responses API streaming parser (#472).\n * Yields same SSEEvent types as sse-parser.ts for consumer compatibility.\n * v1: text streaming only.\n */\n\nimport type { SSEEvent } from \"./sse-parser.js\";\nimport { logAndSwallow } from \"../log-and-swallow.js\";\n\nconst TAG = \"sse_parser_responses\";\n\nexport async function* parseResponsesSSE(\n response: Response,\n signal: AbortSignal,\n): AsyncGenerator<SSEEvent> {\n const reader = response.body?.getReader();\n if (!reader) throw new Error(\"Response body is not readable\");\n\n const decoder = new TextDecoder();\n let buffer = \"\";\n\n try {\n while (true) {\n if (signal.aborted) break;\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() ?? \"\";\n\n let eventType = \"\";\n for (const line of lines) {\n if (line.startsWith(\"event: \")) {\n eventType = line.slice(7).trim();\n } else if (line.startsWith(\"data: \") && eventType) {\n const data = line.slice(6).trim();\n let parsed: Record<string, unknown>;\n try { parsed = JSON.parse(data); } catch (err) { logAndSwallow(TAG, \"JSON.parse SSE chunk\", err); eventType = \"\"; continue; }\n\n if (eventType === \"response.output_text.delta\") {\n const delta = parsed[\"delta\"] as string | undefined;\n if (delta) yield { type: \"chunk\", content: delta };\n } else if (eventType === \"response.function_call_arguments.delta\") {\n yield { type: \"tool_call_delta\", index: 0, id: (parsed[\"call_id\"] as string) ?? undefined, name: undefined, arguments: (parsed[\"delta\"] as string) ?? \"\" };\n } else if (eventType === \"response.function_call_arguments.done\") {\n yield { type: \"tool_call_delta\", index: 0, id: (parsed[\"call_id\"] as string) ?? undefined, name: (parsed[\"name\"] as string) ?? undefined, arguments: undefined };\n } else if (eventType === \"response.completed\" || eventType === \"response.done\") {\n yield { type: \"done\", usage: null };\n return;\n }\n eventType = \"\";\n }\n }\n }\n yield { type: \"done\", usage: null };\n } finally {\n reader.releaseLock();\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;AAOA;AAEA,IAAM,MAAM;AAEZ,gBAAuB,kBACrB,UACA,QAC0B;AAC1B,QAAM,SAAS,SAAS,MAAM,UAAU;AACxC,MAAI,CAAC,OAAQ,OAAM,IAAI,MAAM,+BAA+B;AAE5D,QAAM,UAAU,IAAI,YAAY;AAChC,MAAI,SAAS;AAEb,MAAI;AACF,WAAO,MAAM;AACX,UAAI,OAAO,QAAS;AACpB,YAAM,EAAE,MAAM,MAAM,IAAI,MAAM,OAAO,KAAK;AAC1C,UAAI,KAAM;AAEV,gBAAU,QAAQ,OAAO,OAAO,EAAE,QAAQ,KAAK,CAAC;AAChD,YAAM,QAAQ,OAAO,MAAM,IAAI;AAC/B,eAAS,MAAM,IAAI,KAAK;AAExB,UAAI,YAAY;AAChB,iBAAW,QAAQ,OAAO;AACxB,YAAI,KAAK,WAAW,SAAS,GAAG;AAC9B,sBAAY,KAAK,MAAM,CAAC,EAAE,KAAK;AAAA,QACjC,WAAW,KAAK,WAAW,QAAQ,KAAK,WAAW;AACjD,gBAAM,OAAO,KAAK,MAAM,CAAC,EAAE,KAAK;AAChC,cAAI;AACJ,cAAI;AAAE,qBAAS,KAAK,MAAM,IAAI;AAAA,UAAG,SAAS,KAAK;AAAE,0BAAc,KAAK,wBAAwB,GAAG;AAAG,wBAAY;AAAI;AAAA,UAAU;AAE5H,cAAI,cAAc,8BAA8B;AAC9C,kBAAM,QAAQ,OAAO,OAAO;AAC5B,gBAAI,MAAO,OAAM,EAAE,MAAM,SAAS,SAAS,MAAM;AAAA,UACnD,WAAW,cAAc,0CAA0C;AACjE,kBAAM,EAAE,MAAM,mBAAmB,OAAO,GAAG,IAAK,OAAO,SAAS,KAAgB,QAAW,MAAM,QAAW,WAAY,OAAO,OAAO,KAAgB,GAAG;AAAA,UAC3J,WAAW,cAAc,yCAAyC;AAChE,kBAAM,EAAE,MAAM,mBAAmB,OAAO,GAAG,IAAK,OAAO,SAAS,KAAgB,QAAW,MAAO,OAAO,MAAM,KAAgB,QAAW,WAAW,OAAU;AAAA,UACjK,WAAW,cAAc,wBAAwB,cAAc,iBAAiB;AAC9E,kBAAM,EAAE,MAAM,QAAQ,OAAO,KAAK;AAClC;AAAA,UACF;AACA,sBAAY;AAAA,QACd;AAAA,MACF;AAAA,IACF;AACA,UAAM,EAAE,MAAM,QAAQ,OAAO,KAAK;AAAA,EACpC,UAAE;AACA,WAAO,YAAY;AAAA,EACrB;AACF;",
5
+ "mappings": ";;;;;;;;;;;;AAOA;AAEA,IAAM,MAAM;AAEZ,gBAAuB,kBACrB,UACA,QAC0B;AAC1B,QAAM,SAAS,SAAS,MAAM,UAAU;AACxC,MAAI,CAAC,OAAQ,OAAM,IAAI,MAAM,+BAA+B;AAE5D,QAAM,UAAU,IAAI,YAAY;AAChC,MAAI,SAAS;AAEb,MAAI;AACF,WAAO,MAAM;AACX,UAAI,OAAO,QAAS;AACpB,YAAM,EAAE,MAAM,MAAM,IAAI,MAAM,OAAO,KAAK;AAC1C,UAAI,KAAM;AAEV,gBAAU,QAAQ,OAAO,OAAO,EAAE,QAAQ,KAAK,CAAC;AAChD,YAAM,QAAQ,OAAO,MAAM,IAAI;AAC/B,eAAS,MAAM,IAAI,KAAK;AAExB,UAAI,YAAY;AAChB,iBAAW,QAAQ,OAAO;AACxB,YAAI,KAAK,WAAW,SAAS,GAAG;AAC9B,sBAAY,KAAK,MAAM,CAAC,EAAE,KAAK;AAAA,QACjC,WAAW,KAAK,WAAW,QAAQ,KAAK,WAAW;AACjD,gBAAM,OAAO,KAAK,MAAM,CAAC,EAAE,KAAK;AAChC,cAAI;AACJ,cAAI;AAAE,qBAAS,KAAK,MAAM,IAAI;AAAA,UAAG,SAAS,KAAK;AAAE,0BAAc,KAAK,wBAAwB,GAAG;AAAG,wBAAY;AAAI;AAAA,UAAU;AAE5H,cAAI,cAAc,8BAA8B;AAC9C,kBAAM,QAAQ,OAAO,OAAO;AAC5B,gBAAI,MAAO,OAAM,EAAE,MAAM,SAAS,SAAS,MAAM;AAAA,UACnD,WAAW,cAAc,0CAA0C;AACjE,kBAAM,EAAE,MAAM,mBAAmB,OAAO,GAAG,IAAK,OAAO,SAAS,KAAgB,QAAW,MAAM,QAAW,WAAY,OAAO,OAAO,KAAgB,GAAG;AAAA,UAC3J,WAAW,cAAc,yCAAyC;AAChE,kBAAM,EAAE,MAAM,mBAAmB,OAAO,GAAG,IAAK,OAAO,SAAS,KAAgB,QAAW,MAAO,OAAO,MAAM,KAAgB,QAAW,WAAW,OAAU;AAAA,UACjK,WAAW,cAAc,wBAAwB,cAAc,iBAAiB;AAC9E,kBAAM,EAAE,MAAM,QAAQ,OAAO,KAAK;AAClC;AAAA,UACF;AACA,sBAAY;AAAA,QACd;AAAA,MACF;AAAA,IACF;AACA,UAAM,EAAE,MAAM,QAAQ,OAAO,KAAK;AAAA,EACpC,UAAE;AACA,WAAO,YAAY;AAAA,EACrB;AACF;",
6
6
  "names": []
7
7
  }
@@ -3,9 +3,10 @@
3
3
  import {
4
4
  init_log_and_swallow,
5
5
  logAndSwallow
6
- } from "./chunk-WP7FZHMI.js";
7
- import "./chunk-OOKNHOCB.js";
8
- import "./chunk-H2K23MOF.js";
6
+ } from "./chunk-YSKCQH6E.js";
7
+ import "./chunk-GWILHZPT.js";
8
+ import "./chunk-GALQBVKO.js";
9
+ import "./chunk-O7KQG6ME.js";
9
10
  import "./chunk-7K2YZTLD.js";
10
11
 
11
12
  // src/capabilities/browser/ssrf-guard.ts
@@ -62,4 +63,4 @@ async function isPrivateHost(hostname) {
62
63
  export {
63
64
  isPrivateHost
64
65
  };
65
- //# sourceMappingURL=ssrf-guard-6GP4QYVA.js.map
66
+ //# sourceMappingURL=ssrf-guard-O6SHIK6Q.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/capabilities/browser/ssrf-guard.ts"],
4
4
  "sourcesContent": ["/**\n * SSRF guard \u2014 reject private/internal IP addresses.\n * Adapted from NemoClaw's ssrf.ts.\n */\n\nimport { logAndSwallow } from \"../../components/log-and-swallow.js\";\nimport { resolve4, resolve6 } from \"node:dns/promises\";\n\nconst PRIVATE_RANGES_V4: ReadonlyArray<[number, number, number]> = [\n // [network, mask, bits] \u2014 network & mask === candidate & mask \u2192 private\n [0x7F000000, 0xFF000000, 8], // 127.0.0.0/8\n [0x0A000000, 0xFF000000, 8], // 10.0.0.0/8\n [0xAC100000, 0xFFF00000, 12], // 172.16.0.0/12\n [0xC0A80000, 0xFFFF0000, 16], // 192.168.0.0/16\n [0xA9FE0000, 0xFFFF0000, 16], // 169.254.0.0/16 (link-local)\n [0x64400000, 0xFFC00000, 10], // 100.64.0.0/10 (CGNAT)\n [0x00000000, 0xFFFFFFFF, 32], // 0.0.0.0\n];\n\nfunction ipv4ToInt(ip: string): number {\n const parts = ip.split(\".\").map(Number);\n return ((parts[0]! << 24) | (parts[1]! << 16) | (parts[2]! << 8) | parts[3]!) >>> 0;\n}\n\nfunction isPrivateV4(ip: string): boolean {\n const n = ipv4ToInt(ip);\n return PRIVATE_RANGES_V4.some(([net, mask]) => (n & mask) >>> 0 === (net & mask) >>> 0);\n}\n\nfunction isPrivateV6(ip: string): boolean {\n const lower = ip.toLowerCase();\n return lower === \"::1\" || lower.startsWith(\"fd\") || lower.startsWith(\"fe80\") || lower.startsWith(\"::ffff:127.\");\n}\n\n/** Check if a hostname resolves to a private IP. Resolves DNS to catch rebinding. */\nexport async function isPrivateHost(hostname: string): Promise<boolean> {\n // Direct IP check\n if (/^\\d+\\.\\d+\\.\\d+\\.\\d+$/.test(hostname)) return isPrivateV4(hostname);\n if (hostname.includes(\":\")) return isPrivateV6(hostname);\n if (hostname === \"localhost\") return true;\n\n // DNS resolution check (catches DNS rebinding)\n const timeout = (p: Promise<string[]>): Promise<string[]> =>\n Promise.race([p, new Promise<string[]>((_, reject) => setTimeout(() => reject(new Error(\"dns timeout\")), 2000))]);\n\n try {\n const v4 = await timeout(resolve4(hostname));\n if (v4.some(isPrivateV4)) return true;\n } catch (err) { logAndSwallow(\"ssrf_guard\", \"op\", err); }\n\n try {\n const v6 = await timeout(resolve6(hostname));\n if (v6.some(isPrivateV6)) return true;\n } catch (err) { logAndSwallow(\"ssrf_guard\", \"op\", err); }\n\n return false;\n}\n"],
5
- "mappings": ";;;;;;;;;;;AAKA;AACA,SAAS,UAAU,gBAAgB;AAEnC,IAAM,oBAA6D;AAAA;AAAA,EAEjE,CAAC,YAAY,YAAY,CAAC;AAAA;AAAA,EAC1B,CAAC,WAAY,YAAY,CAAC;AAAA;AAAA,EAC1B,CAAC,YAAY,YAAY,EAAE;AAAA;AAAA,EAC3B,CAAC,YAAY,YAAY,EAAE;AAAA;AAAA,EAC3B,CAAC,YAAY,YAAY,EAAE;AAAA;AAAA,EAC3B,CAAC,YAAY,YAAY,EAAE;AAAA;AAAA,EAC3B,CAAC,GAAY,YAAY,EAAE;AAAA;AAC7B;AAEA,SAAS,UAAU,IAAoB;AACrC,QAAM,QAAQ,GAAG,MAAM,GAAG,EAAE,IAAI,MAAM;AACtC,UAAS,MAAM,CAAC,KAAM,KAAO,MAAM,CAAC,KAAM,KAAO,MAAM,CAAC,KAAM,IAAK,MAAM,CAAC,OAAQ;AACpF;AAEA,SAAS,YAAY,IAAqB;AACxC,QAAM,IAAI,UAAU,EAAE;AACtB,SAAO,kBAAkB,KAAK,CAAC,CAAC,KAAK,IAAI,OAAO,IAAI,UAAU,OAAO,MAAM,UAAU,CAAC;AACxF;AAEA,SAAS,YAAY,IAAqB;AACxC,QAAM,QAAQ,GAAG,YAAY;AAC7B,SAAO,UAAU,SAAS,MAAM,WAAW,IAAI,KAAK,MAAM,WAAW,MAAM,KAAK,MAAM,WAAW,aAAa;AAChH;AAGA,eAAsB,cAAc,UAAoC;AAEtE,MAAI,uBAAuB,KAAK,QAAQ,EAAG,QAAO,YAAY,QAAQ;AACtE,MAAI,SAAS,SAAS,GAAG,EAAG,QAAO,YAAY,QAAQ;AACvD,MAAI,aAAa,YAAa,QAAO;AAGrC,QAAM,UAAU,CAAC,MACf,QAAQ,KAAK,CAAC,GAAG,IAAI,QAAkB,CAAC,GAAG,WAAW,WAAW,MAAM,OAAO,IAAI,MAAM,aAAa,CAAC,GAAG,GAAI,CAAC,CAAC,CAAC;AAElH,MAAI;AACF,UAAM,KAAK,MAAM,QAAQ,SAAS,QAAQ,CAAC;AAC3C,QAAI,GAAG,KAAK,WAAW,EAAG,QAAO;AAAA,EACnC,SAAS,KAAK;AAAE,kBAAc,cAAc,MAAM,GAAG;AAAA,EAAG;AAExD,MAAI;AACF,UAAM,KAAK,MAAM,QAAQ,SAAS,QAAQ,CAAC;AAC3C,QAAI,GAAG,KAAK,WAAW,EAAG,QAAO;AAAA,EACnC,SAAS,KAAK;AAAE,kBAAc,cAAc,MAAM,GAAG;AAAA,EAAG;AAExD,SAAO;AACT;",
5
+ "mappings": ";;;;;;;;;;;;AAKA;AACA,SAAS,UAAU,gBAAgB;AAEnC,IAAM,oBAA6D;AAAA;AAAA,EAEjE,CAAC,YAAY,YAAY,CAAC;AAAA;AAAA,EAC1B,CAAC,WAAY,YAAY,CAAC;AAAA;AAAA,EAC1B,CAAC,YAAY,YAAY,EAAE;AAAA;AAAA,EAC3B,CAAC,YAAY,YAAY,EAAE;AAAA;AAAA,EAC3B,CAAC,YAAY,YAAY,EAAE;AAAA;AAAA,EAC3B,CAAC,YAAY,YAAY,EAAE;AAAA;AAAA,EAC3B,CAAC,GAAY,YAAY,EAAE;AAAA;AAC7B;AAEA,SAAS,UAAU,IAAoB;AACrC,QAAM,QAAQ,GAAG,MAAM,GAAG,EAAE,IAAI,MAAM;AACtC,UAAS,MAAM,CAAC,KAAM,KAAO,MAAM,CAAC,KAAM,KAAO,MAAM,CAAC,KAAM,IAAK,MAAM,CAAC,OAAQ;AACpF;AAEA,SAAS,YAAY,IAAqB;AACxC,QAAM,IAAI,UAAU,EAAE;AACtB,SAAO,kBAAkB,KAAK,CAAC,CAAC,KAAK,IAAI,OAAO,IAAI,UAAU,OAAO,MAAM,UAAU,CAAC;AACxF;AAEA,SAAS,YAAY,IAAqB;AACxC,QAAM,QAAQ,GAAG,YAAY;AAC7B,SAAO,UAAU,SAAS,MAAM,WAAW,IAAI,KAAK,MAAM,WAAW,MAAM,KAAK,MAAM,WAAW,aAAa;AAChH;AAGA,eAAsB,cAAc,UAAoC;AAEtE,MAAI,uBAAuB,KAAK,QAAQ,EAAG,QAAO,YAAY,QAAQ;AACtE,MAAI,SAAS,SAAS,GAAG,EAAG,QAAO,YAAY,QAAQ;AACvD,MAAI,aAAa,YAAa,QAAO;AAGrC,QAAM,UAAU,CAAC,MACf,QAAQ,KAAK,CAAC,GAAG,IAAI,QAAkB,CAAC,GAAG,WAAW,WAAW,MAAM,OAAO,IAAI,MAAM,aAAa,CAAC,GAAG,GAAI,CAAC,CAAC,CAAC;AAElH,MAAI;AACF,UAAM,KAAK,MAAM,QAAQ,SAAS,QAAQ,CAAC;AAC3C,QAAI,GAAG,KAAK,WAAW,EAAG,QAAO;AAAA,EACnC,SAAS,KAAK;AAAE,kBAAc,cAAc,MAAM,GAAG;AAAA,EAAG;AAExD,MAAI;AACF,UAAM,KAAK,MAAM,QAAQ,SAAS,QAAQ,CAAC;AAC3C,QAAI,GAAG,KAAK,WAAW,EAAG,QAAO;AAAA,EACnC,SAAS,KAAK;AAAE,kBAAc,cAAc,MAAM,GAAG;AAAA,EAAG;AAExD,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -2,13 +2,13 @@
2
2
  import { createRequire as __bundleCreateRequire } from 'node:module'; import { fileURLToPath as __bundleFileURLToPath } from 'node:url'; import { dirname as __bundleDirname } from 'node:path'; const require = __bundleCreateRequire(import.meta.url); const __chunk_filename = __bundleFileURLToPath(import.meta.url); const __chunk_dirname = __bundleDirname(__chunk_filename);
3
3
  import {
4
4
  printBanner
5
- } from "./chunk-TVSPVZTX.js";
6
- import "./chunk-EDZGF6BC.js";
7
- import "./chunk-C3EYYJN3.js";
5
+ } from "./chunk-YDY6QVWJ.js";
6
+ import "./chunk-5NY2YULC.js";
8
7
  import {
9
8
  abtarsHome,
10
9
  init_paths
11
- } from "./chunk-H2K23MOF.js";
10
+ } from "./chunk-GALQBVKO.js";
11
+ import "./chunk-O7KQG6ME.js";
12
12
  import "./chunk-7K2YZTLD.js";
13
13
 
14
14
  // src/cli/commands/start.ts
@@ -108,4 +108,4 @@ async function start() {
108
108
  export {
109
109
  start
110
110
  };
111
- //# sourceMappingURL=start-JT2BPMSW.js.map
111
+ //# sourceMappingURL=start-7QZIWO3S.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/cli/commands/start.ts"],
4
+ "sourcesContent": ["import { printBanner } from './banner.js';\nimport { existsSync, readFileSync, unlinkSync } from \"node:fs\";\nimport { execFileSync } from \"node:child_process\";\nimport { join } from \"node:path\";\nimport { homedir } from \"node:os\";\nimport { abtarsHome } from \"../../paths.js\";\n\n\nfunction pidAlive(pid: number): boolean {\n try { process.kill(pid, 0); return true; } catch { return false; }\n}\n\nfunction readJsonField(file: string, field: string): unknown {\n try { return JSON.parse(readFileSync(file, \"utf-8\"))[field]; } catch { return undefined; }\n}\n\nexport async function start(): Promise<number> {\n await printBanner(\"start\");\n const home = abtarsHome();\n const lockFile = join(home, \"bridge.lock\");\n const startReasonFile = join(home, \".start-reason\");\n\n // Clear stop sentinel so WD/bridge can start\n try { unlinkSync(startReasonFile); } catch {}\n try { unlinkSync(join(home, \".stopped\")); } catch {}\n\n const installMode = readJsonField(join(home, \"manifest.json\"), \"installMode\") as string | undefined;\n\n // Daemon mode \u2014 let launchd/systemd handle it\n if (installMode === \"daemon\") {\n if (process.platform === \"darwin\") {\n const plistPath = join(homedir(), \"Library\", \"LaunchAgents\", \"com.abtars.watchdog.plist\");\n const uid = `gui/${process.getuid!()}`;\n try { execFileSync(\"launchctl\", [\"bootstrap\", uid, plistPath], { timeout: 5000 }); } catch {}\n } else {\n try { execFileSync(\"systemctl\", [\"--user\", \"unmask\", \"abtars-watchdog\"], { timeout: 5000 }); } catch {}\n try { execFileSync(\"systemctl\", [\"--user\", \"enable\", \"abtars-watchdog\"], { timeout: 5000 }); } catch {}\n try { execFileSync(\"systemctl\", [\"--user\", \"start\", \"abtars-watchdog\"], { timeout: 5000 }); } catch {}\n }\n process.stdout.write(`\u2713 Service loaded. Watchdog starting...\\n`);\n return 0;\n }\n\n // Simple mode \u2014 spawn bridge directly\n if (existsSync(lockFile)) {\n try {\n const lock = JSON.parse(readFileSync(lockFile, \"utf-8\"));\n if (lock.pid && pidAlive(lock.pid)) {\n process.stdout.write(`Bridge already running (pid ${lock.pid}).\\n`);\n return 0;\n }\n } catch { /* corrupt lock \u2014 proceed */ }\n }\n\n const entryPoint = join(home, \"app\", \"bundle\", \"abtars.js\");\n if (!existsSync(entryPoint)) {\n process.stderr.write(`No release deployed. Run 'abtars update' first.\\n`);\n return 1;\n }\n\n const { spawn } = await import(\"node:child_process\");\n const { openSync, closeSync, mkdirSync } = await import(\"node:fs\");\n mkdirSync(join(home, \"logs\"), { recursive: true });\n const logFd = openSync(join(home, \"logs\", \"bridge.log\"), \"a\");\n const br = spawn(\"node\", [\"--max-old-space-size=1024\", entryPoint], {\n detached: true,\n stdio: [\"ignore\", logFd, logFd],\n cwd: home,\n env: { ...process.env, ABTARS_START_REASON: \"manual-start\" },\n });\n br.unref();\n closeSync(logFd);\n process.stdout.write(`\u2713 Bridge started (pid ${br.pid}).\\n`);\n return 0;\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -3,13 +3,14 @@
3
3
  import {
4
4
  LANGUAGE_HINT_PROMPT,
5
5
  transcribeAudio
6
- } from "./chunk-ZOCEBV62.js";
7
- import "./chunk-WP7FZHMI.js";
8
- import "./chunk-OOKNHOCB.js";
9
- import "./chunk-H2K23MOF.js";
6
+ } from "./chunk-OKAQICWY.js";
7
+ import "./chunk-YSKCQH6E.js";
8
+ import "./chunk-GWILHZPT.js";
9
+ import "./chunk-GALQBVKO.js";
10
+ import "./chunk-O7KQG6ME.js";
10
11
  import "./chunk-7K2YZTLD.js";
11
12
  export {
12
13
  LANGUAGE_HINT_PROMPT,
13
14
  transcribeAudio
14
15
  };
15
- //# sourceMappingURL=stt-KD3AABKG.js.map
16
+ //# sourceMappingURL=stt-LGVPXMVR.js.map