@noxsoft/anima 2.1.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (265) hide show
  1. package/CHANGELOG.md +36 -1
  2. package/dist/{accounts-CGzuQdAx.js → accounts-ZMhj636e.js} +38 -38
  3. package/dist/{acp-cli-B91vBbbX.js → acp-cli-CcOE2A2i.js} +4 -4
  4. package/dist/{acp-cli-C2nYnQx-.js → acp-cli-PhWp41mc.js} +5 -5
  5. package/dist/{agent-Bd6Zpqnq.js → agent-CT2PCft4.js} +9 -9
  6. package/dist/{agent-CoxwYg20.js → agent-DvWSUuKy.js} +8 -8
  7. package/dist/{agent-events-BVc91Gjk.js → agent-events-iR_gRjZA.js} +2 -2
  8. package/dist/{agent-scope-BoQtElEh.js → agent-scope-DWKQJUUZ.js} +3 -3
  9. package/dist/{agent-scope-CuAaArMB.js → agent-scope-M302b8FW.js} +3 -1
  10. package/dist/{agent-scope-kT_pK2eJ.js → agent-scope-vpVhWds3.js} +3 -1
  11. package/dist/{agents-ERV83c8T.js → agents-DAg3VWr9.js} +9 -9
  12. package/dist/{agents.config-Bar8RHWv.js → agents.config-Dqcq7hEy.js} +1 -1
  13. package/dist/{agents.config-CvQgWymp.js → agents.config-M3p4E9Vk.js} +1 -1
  14. package/dist/{audit-C4pngOZo.js → audit-BDXqNA5J.js} +6 -6
  15. package/dist/{audit-94c4PKy2.js → audit-Cm50mcVm.js} +7 -7
  16. package/dist/{auth-choice-RnqXSEZo.js → auth-choice-CPDNhDPT.js} +145 -7
  17. package/dist/{auth-health-C2V2unOG.js → auth-health-C0g38cq2.js} +1 -1
  18. package/dist/{auth-profiles-DNpEm389.js → auth-profiles-BYETsqKc.js} +1 -1
  19. package/dist/{auth-profiles-DxPI9Swi.js → auth-profiles-BqrAPweI.js} +9 -9
  20. package/dist/{auth-profiles-CzyebTC0.js → auth-profiles-DZS4PC_i.js} +1 -1
  21. package/dist/{auth-store-vxi4ZPnZ.js → auth-store-eNVxoq_h.js} +13 -13
  22. package/dist/{auto-update-CFjmeMj2.js → auto-update-D5cnVgXE.js} +10 -4
  23. package/dist/{auto-update-Ct6OO4xu.js → auto-update-DYjBYplz.js} +10 -4
  24. package/dist/{banner-D3viiyMP.js → banner-CcUSTTQw.js} +1 -1
  25. package/dist/build-info.json +3 -3
  26. package/dist/bundled/boot-md/handler.js +22 -22
  27. package/dist/bundled/bootstrap-extra-files/handler.js +5 -5
  28. package/dist/bundled/command-logger/handler.js +1 -1
  29. package/dist/bundled/session-memory/handler.js +6 -6
  30. package/dist/{call-CItRp_pr.js → call-C0Yk2qNb.js} +2 -2
  31. package/dist/{call-DxImJH07.js → call-LugHQWOF.js} +1 -1
  32. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  33. package/dist/{channel-web-DbqT9emt.js → channel-web-Co4IvTdB.js} +10 -10
  34. package/dist/{chrome-CVfcErE4.js → chrome-_87P03u5.js} +7 -7
  35. package/dist/{chrome-C1KpzLwu.js → chrome-s7nTgmbn.js} +12 -12
  36. package/dist/{chunk-B7HJmFUg.js → chunk-lDG_8LI5.js} +2 -2
  37. package/dist/{clack-prompter-DzyUpdYc.js → clack-prompter-1d_RjjVW.js} +1 -1
  38. package/dist/{clack-prompter-DGILBk0Q.js → clack-prompter-DXovYg0Q.js} +1 -1
  39. package/dist/cli/daemon-cli.js +1 -1
  40. package/dist/{cli-CIqM2CiL.js → cli-4D3JIGFt.js} +21 -21
  41. package/dist/{cli-D3fgTPqQ.js → cli-BkI8EYn3.js} +22 -22
  42. package/dist/{cli-session-C5q6Uryq.js → cli-session-CIhvoVRb.js} +55 -7
  43. package/dist/{cli-session-DQ9kepDS.js → cli-session-CJ4_a3AU.js} +56 -8
  44. package/dist/{client-oEG5cM5Q.js → client-BM5PkIwQ.js} +3 -3
  45. package/dist/{command-registry-S2ZqFzVe.js → command-registry-Cl3Z-qsS.js} +10 -10
  46. package/dist/{commands-C8xFlkZx.js → commands-BsZdF-6N.js} +1 -1
  47. package/dist/{commands-Cd2w9dmK.js → commands-quS1zRPr.js} +1 -1
  48. package/dist/{common-DgcMt-pi.js → common-DbouukNi.js} +2 -2
  49. package/dist/{completion-cli-BHlamZC3.js → completion-cli-BB3_g8w5.js} +1 -1
  50. package/dist/{completion-cli-CC0KmaZL.js → completion-cli-DcTEhrAe.js} +2 -2
  51. package/dist/{config-CaE6v09P.js → config-6zE4ZkSF.js} +2 -2
  52. package/dist/{config-Bda-8Rdh.js → config-9JRRXykP.js} +2 -2
  53. package/dist/{config-BEiShGVB.js → config-H_VHtPeY.js} +27 -27
  54. package/dist/{config-cli-DtJe8KPs.js → config-cli-DCNRWoyW.js} +4 -4
  55. package/dist/{config-cli-CEU2oLOH.js → config-cli-VB37XAkf.js} +4 -4
  56. package/dist/{config-guard-CQWaFJGt.js → config-guard-BUrJR68X.js} +2 -2
  57. package/dist/{config-guard-a6BWW0DS.js → config-guard-DJ_IK05w.js} +6 -6
  58. package/dist/{config-sync-DtK8vF0a.js → config-sync-B6XNCiWO.js} +4 -2
  59. package/dist/{config-sync-DHZT44We.js → config-sync-CVNJhO-W.js} +4 -2
  60. package/dist/{configure-BwR-MQg6.js → configure-CkmVabju.js} +9 -9
  61. package/dist/{configure-BiIaL4NZ.js → configure-Du07BFtQ.js} +10 -10
  62. package/dist/{context-Nk3BLa3u.js → context-CsnIPzGP.js} +1 -1
  63. package/dist/{control-service-CJ2uXWYM.js → control-service-BpEnt1xS.js} +4 -4
  64. package/dist/{control-service-9uTsix_O.js → control-service-dAtxFV2S.js} +2 -2
  65. package/dist/control-ui/assets/index-CEuStzNh.js +18 -0
  66. package/dist/control-ui/assets/index-CEuStzNh.js.map +1 -0
  67. package/dist/control-ui/assets/index-CbNrH7Wu.css +1 -0
  68. package/dist/control-ui/index.html +20 -0
  69. package/dist/{cron-cli-Diyg0pr6.js → cron-cli-BT0i4_jA.js} +6 -6
  70. package/dist/{cron-cli-BoB3GX76.js → cron-cli-DUVPrjk1.js} +5 -5
  71. package/dist/{daemon-cli-CR7yHMws.js → daemon-cli-DlHFi5Gm.js} +5 -5
  72. package/dist/{daemon-cli-CXnpU1lw.js → daemon-cli-tZXFDpZX.js} +5 -5
  73. package/dist/{daemon-runtime-C-xevhQ5.js → daemon-runtime-Cbi2Ox6g.js} +1 -1
  74. package/dist/{daemon-runtime-DP9zI3um.js → daemon-runtime-DOk9qM0y.js} +1 -1
  75. package/dist/{deliver-ZUV32EzH.js → deliver-CkrMkcOx.js} +1 -1
  76. package/dist/{deliver-BJ1xFt2X.js → deliver-DyQtnfXd.js} +14 -14
  77. package/dist/{deliver-TokuvSTy.js → deliver-tQREYhAr.js} +1 -1
  78. package/dist/{deps-CV9EwaiA.js → deps-DoPMG4GI.js} +1 -1
  79. package/dist/{dispatcher-DT5y2bRx.js → dispatcher-BhzRMibw.js} +1 -1
  80. package/dist/{dispatcher-DnyO_pzZ.js → dispatcher-wmQlHNsm.js} +1 -1
  81. package/dist/{dns-cli-Cw0G6u5i.js → dns-cli-B6bcA4-G.js} +3 -3
  82. package/dist/{dns-cli-CTpT3A5j.js → dns-cli-BvKJGCxL.js} +3 -3
  83. package/dist/{doctor-BRbtvinF.js → doctor-BxzkshQH.js} +20 -20
  84. package/dist/{doctor-a5nLQGbD.js → doctor-C3foAiuj.js} +19 -19
  85. package/dist/{doctor-completion-DpxcKMA5.js → doctor-completion-CZgNNZVd.js} +1 -1
  86. package/dist/{doctor-completion-Dnj6NNct.js → doctor-completion-VtjYTwcS.js} +1 -1
  87. package/dist/{doctor-config-flow-D80QIcc-.js → doctor-config-flow-BAntaUow.js} +4 -4
  88. package/dist/{doctor-config-flow-BZOFJuDW.js → doctor-config-flow-d6ocIX0r.js} +4 -4
  89. package/dist/{engine-Df9mQ7es.js → engine-C6iz-qEe.js} +5 -3
  90. package/dist/{engine-BqAGzYXO.js → engine-CIid6j5k.js} +5 -3
  91. package/dist/entry.js +1 -1
  92. package/dist/{exec-DJTRaYS6.js → exec-CK8CHr7j.js} +7 -7
  93. package/dist/{exec-approvals-cli-C5OuptCV.js → exec-approvals-cli-CAwe3fFV.js} +6 -6
  94. package/dist/{exec-approvals-cli-BWeKuHMf.js → exec-approvals-cli-COqsRheN.js} +5 -5
  95. package/dist/extensionAPI.js +3 -1
  96. package/dist/{frontmatter-DDYuWuK5.js → frontmatter-BBFYH_d2.js} +2 -2
  97. package/dist/{gateway-cli-DpikYazv.js → gateway-cli-BKmCrkp2.js} +47 -47
  98. package/dist/{gateway-cli-CLhlz_uA.js → gateway-cli-D0mD_UV8.js} +48 -48
  99. package/dist/{gateway-rpc-B30vCjdB.js → gateway-rpc-2MG1-jz-.js} +1 -1
  100. package/dist/{gateway-rpc-CeSf5jMa.js → gateway-rpc-elmeRwyu.js} +1 -1
  101. package/dist/{health-1JahEOfG.js → health-27WiwNrh.js} +9 -9
  102. package/dist/{health-BLxSP-s_.js → health-Cb_2WS_Z.js} +9 -9
  103. package/dist/{heartbeat-visibility-CS0wp8uu.js → heartbeat-visibility-Blrqxom1.js} +1 -1
  104. package/dist/{heartbeat-visibility-DgxM3da_.js → heartbeat-visibility-CDRbkOeP.js} +1 -1
  105. package/dist/{hooks-cli-Bb1UXfXv.js → hooks-cli-BkaD_Vnq.js} +23 -23
  106. package/dist/{hooks-cli-B-PZNrq5.js → hooks-cli-C7hx3yOv.js} +22 -22
  107. package/dist/{image-ops-ZMEg1-kE.js → image-ops-DJjERl7d.js} +2 -2
  108. package/dist/index.js +32 -32
  109. package/dist/{ipv4-BXko1df7.js → ipv4-sll41DXC.js} +4 -4
  110. package/dist/{ipv4-BmsAjDnB.js → ipv4-yUiIU5CD.js} +5 -5
  111. package/dist/json-file-Dvrir7_o.js +25 -0
  112. package/dist/llm-slug-generator.js +5 -5
  113. package/dist/{login-DIm-BAka.js → login-CBsXoiD_.js} +2 -2
  114. package/dist/{login-jV3UWUGr.js → login-CdRss5_H.js} +5 -5
  115. package/dist/{login-DQALESNM.js → login-DcBFdgol.js} +2 -2
  116. package/dist/{login-qr-BMMUazkr.js → login-qr-CEarfn5e.js} +4 -4
  117. package/dist/{login-qr-CJXqxq1y.js → login-qr-DoNanonP.js} +10 -10
  118. package/dist/{login-qr-BzS8xa3D.js → login-qr-aHN20jEV.js} +4 -4
  119. package/dist/{logs-cli-yKcOyM8n.js → logs-cli-DbdMIph-.js} +6 -6
  120. package/dist/{logs-cli-DHjyZjyi.js → logs-cli-O9Vm67Ps.js} +5 -5
  121. package/dist/{manager-eyHWQVGS.js → manager-1ZMunRXe.js} +2 -2
  122. package/dist/{manager-I5MlcYXv.js → manager-BVhxScwx.js} +2 -2
  123. package/dist/{manager-BssWfixS.js → manager-BlXVqzLP.js} +14 -14
  124. package/dist/{memory-cli-hyoQVF7L.js → memory-cli-CDMb58Y3.js} +5 -5
  125. package/dist/{memory-cli-DQm_Q8ks.js → memory-cli-DEnGCMk0.js} +5 -5
  126. package/dist/{model-auth-CQNrcIIT.js → model-auth-B3BPcnwt.js} +2 -2
  127. package/dist/{model-auth-BbZzb3IY.js → model-auth-ChSwMwh7.js} +3 -3
  128. package/dist/{model-auth-Cyx2Xoz0.js → model-auth-DUHamQTz.js} +2 -2
  129. package/dist/{model-selection-MwLHFnAb.js → model-selection-C2dz3AhV.js} +1 -1
  130. package/dist/{model-selection-BjcyTJyU.js → model-selection-DJcZ82uR.js} +1 -1
  131. package/dist/{model-selection-CtPzqKKJ.js → model-selection-DPoLkg_t.js} +1 -1
  132. package/dist/{models-Ca4_dCTC.js → models-B8eCDKpA.js} +26 -26
  133. package/dist/{node-cli-gop9c9Qq.js → node-cli-Bcrlhaq3.js} +10 -10
  134. package/dist/{node-cli-CJ-oQ5U6.js → node-cli-CXUIMB7W.js} +8 -8
  135. package/dist/{onboard-Dyr-G4cr.js → onboard-5GREpC8E.js} +48 -13
  136. package/dist/{onboard-DbCuaHlU.js → onboard-D8Khq7CJ.js} +49 -13
  137. package/dist/{onboard-channels-h35eneL1.js → onboard-channels-CuDv5j-L.js} +3 -3
  138. package/dist/{onboard-channels-D_jRjSPh.js → onboard-channels-DUklZSXY.js} +3 -3
  139. package/dist/{onboard-helpers-DVbPW8Cs.js → onboard-helpers-CMW6MSXA.js} +5 -4
  140. package/dist/{onboard-helpers-CAxb1eBy.js → onboard-helpers-DKu_2enh.js} +5 -4
  141. package/dist/{onboarding-ifLjX4Oc.js → onboarding-B_Gs5W53.js} +34 -15
  142. package/dist/{onboarding-Djv0NsZi.js → onboarding-CGG6jZ0y.js} +35 -16
  143. package/dist/{orchestrator-DeKyZfHL.js → orchestrator-CZ5SiD5l.js} +4 -2
  144. package/dist/{orchestrator-DAY2aHzl.js → orchestrator-KqoQDkvl.js} +4 -2
  145. package/dist/{outbound-_KURrkN3.js → outbound-Cf_1Utlz.js} +1 -1
  146. package/dist/{outbound-DptF-A0k.js → outbound-CwCRq4Cg.js} +1 -1
  147. package/dist/{outbound-ChmdbJju.js → outbound-DK71dddk.js} +6 -6
  148. package/dist/{parse-timeout-ByYuFf-D.js → parse-timeout-DhqvtdXz.js} +1 -1
  149. package/dist/{parse-timeout-PImvLfCF.js → parse-timeout-qnHqZvCW.js} +1 -1
  150. package/dist/{paths-BzTTzuSa.js → paths-CmZenvlb.js} +2 -2
  151. package/dist/{paths-B-AkG5FD.js → paths-D2eokayo.js} +3 -3
  152. package/dist/{pi-auth-json-Ct4FUjxN.js → pi-auth-json-BYN-DI5a.js} +7 -7
  153. package/dist/{pi-auth-json-QVWbBbGs.js → pi-auth-json-Crkmg439.js} +3 -3
  154. package/dist/{pi-auth-json-BvGZollA.js → pi-auth-json-PEKcHBMl.js} +3 -3
  155. package/dist/{pi-embedded-helpers-BS_VM3j4.js → pi-embedded-helpers-CvYnWzAn.js} +44 -44
  156. package/dist/{pi-tools.policy-BntNhXqZ.js → pi-tools.policy-BoWzLBtH.js} +3 -3
  157. package/dist/{pi-tools.policy-pvzE9Rfa.js → pi-tools.policy-ClzqRWic.js} +3 -3
  158. package/dist/{plugin-auto-enable-j_zHeVf1.js → plugin-auto-enable-BlyqT33k.js} +1 -1
  159. package/dist/{plugin-auto-enable-BvCuJgmb.js → plugin-auto-enable-Df0BKZyz.js} +1 -1
  160. package/dist/{plugin-registry-BgzrHeH3.js → plugin-registry-CIluPn2C.js} +3 -3
  161. package/dist/{plugin-registry-DurMOI5P.js → plugin-registry-k-cSnXEV.js} +3 -3
  162. package/dist/plugin-sdk/agents/workspace.d.ts +1 -0
  163. package/dist/plugin-sdk/index.js +6 -6
  164. package/dist/{plugins-cli-DJKbvRtd.js → plugins-cli-CXap4R64.js} +22 -22
  165. package/dist/{plugins-cli-BFJqs061.js → plugins-cli-CgSDRx-C.js} +23 -23
  166. package/dist/{program-8-GzSO81.js → program-Dk1iylK1.js} +27 -27
  167. package/dist/{program-context-CC-g5UxM.js → program-context-r2WimvLs.js} +29 -29
  168. package/dist/{prompts-BWkFLWEk.js → prompts-BT5ztuUd.js} +144 -6
  169. package/dist/{prompts-CAgrJeru.js → prompts-vr_Njtil.js} +1 -1
  170. package/dist/{pw-ai-DVQKx_ca.js → pw-ai-q5Enhcu7.js} +4 -4
  171. package/dist/{pw-ai-Rz1I4vvf.js → pw-ai-ycVS073z.js} +1 -1
  172. package/dist/{qmd-manager-TUpRgiFa.js → qmd-manager-BD0uCIzM.js} +1 -1
  173. package/dist/{qmd-manager-NwDwG7DY.js → qmd-manager-CaNCfJK6.js} +1 -1
  174. package/dist/{qmd-manager-B5wbKcWC.js → qmd-manager-D_lZFetA.js} +7 -7
  175. package/dist/{queue-9vTUxVNg.js → queue-CRtO6LOL.js} +3 -1
  176. package/dist/{queue-R94Bcxk5.js → queue-DMVbLSSW.js} +3 -1
  177. package/dist/{register.agent-BcxdwhFz.js → register.agent-BCbrZgZT.js} +30 -30
  178. package/dist/{register.agent-BWl6JYHL.js → register.agent-sq78vQTz.js} +30 -30
  179. package/dist/{register.anima-D9CE9aVh.js → register.anima-B0tWw_hC.js} +13 -13
  180. package/dist/{register.anima-D8cnU8Zq.js → register.anima-CObVi7FQ.js} +13 -13
  181. package/dist/{register.configure-BQ7viIFW.js → register.configure-CM8ScF9N.js} +31 -31
  182. package/dist/{register.configure-CWWSJ12h.js → register.configure-w6Ptx3C9.js} +32 -32
  183. package/dist/{register.maintenance-BUkkCBQa.js → register.maintenance-B15nWIhc.js} +33 -33
  184. package/dist/{register.maintenance-BS36METc.js → register.maintenance-Chm2rk_s.js} +34 -34
  185. package/dist/{register.onboard-CxktbTOi.js → register.onboard-B7Ozkx53.js} +41 -37
  186. package/dist/{register.onboard-ks3BprXH.js → register.onboard-k9Rd9qzS.js} +39 -35
  187. package/dist/register.setup-BId1QGzk.js +270 -0
  188. package/dist/register.setup-CN1yxMOl.js +267 -0
  189. package/dist/{register.status-health-sessions-Bmgu0PWs.js → register.status-health-sessions-CNUs9w8v.js} +27 -27
  190. package/dist/{register.status-health-sessions-Cfhab3ds.js → register.status-health-sessions-CP9VvjA9.js} +27 -27
  191. package/dist/{register.subclis-Cp2R1dTl.js → register.subclis-N7uAMRX_.js} +20 -20
  192. package/dist/{reply-F1NR0Mmi.js → reply-BJ3jrefM.js} +29 -29
  193. package/dist/{reply-BWWaNSoB.js → reply-LaOwllAB.js} +28 -28
  194. package/dist/{reply-prefix-Cd1ryhL4.js → reply-prefix-DBJU0o4f.js} +2 -2
  195. package/dist/{reply-prefix-ByFTwsu6.js → reply-prefix-Dl_Gro6x.js} +2 -2
  196. package/dist/{routes-DdssPiMt.js → routes-Bifu4ATk.js} +2 -2
  197. package/dist/{routes-TJ5bwx27.js → routes-CNqS9gOj.js} +3 -3
  198. package/dist/{run-main-Br6uQWzH.js → run-main-DA4rt9qc.js} +40 -40
  199. package/dist/{sandbox-BIZzFPco.js → sandbox-CR2AIW2N.js} +3 -3
  200. package/dist/{sandbox-cli-DjALBAAV.js → sandbox-cli-BsMjNBFN.js} +8 -8
  201. package/dist/{sandbox-cli-DMBBlMK-.js → sandbox-cli-c_HPZNmf.js} +7 -7
  202. package/dist/{sandbox-hOY3muxh.js → sandbox-wL61f1WP.js} +3 -3
  203. package/dist/{security-cli-CsDWYPNG.js → security-cli-DTAzTIiZ.js} +10 -10
  204. package/dist/{security-cli-GXZAU0Ax.js → security-cli-pupt3tx1.js} +12 -12
  205. package/dist/{semantic-BTp-RtM8.js → semantic-BcioSN1d.js} +1 -1
  206. package/dist/{server-context-BW5BY88Y.js → server-context-C2TNamEJ.js} +1 -1
  207. package/dist/{server-context-C0YSbjOv.js → server-context-CcPmRFx_.js} +5 -5
  208. package/dist/{server-node-events-DM3CCYrf.js → server-node-events-DNDwVJH_.js} +14 -14
  209. package/dist/{server-node-events-Byy-Is6v.js → server-node-events-DsfvuRBK.js} +13 -13
  210. package/dist/{service-audit-u3qzhhqv.js → service-audit-BG0tcSCo.js} +1 -1
  211. package/dist/{service-audit-CGmQWccK.js → service-audit-DLV93I95.js} +1 -1
  212. package/dist/{session-BQzzYRDO.js → session-D53RZP3i.js} +7 -7
  213. package/dist/{session-CzBccNiw.js → session-DTRcP2Sj.js} +1 -1
  214. package/dist/{session-ititeJ0j.js → session-ygzMc3r1.js} +4 -4
  215. package/dist/{sessions-DiW7DuJO.js → sessions-0J_pFd44.js} +1 -1
  216. package/dist/{sessions-wzfE85C2.js → sessions-C7jYs5Sc.js} +1 -1
  217. package/dist/{sessions-Bxpm8P5t.js → sessions-CbUTEpMF.js} +4 -4
  218. package/dist/{shared-DynkOTFs.js → shared-B9kttsme.js} +1 -1
  219. package/dist/{shell-env-5vFwNQcz.js → shell-env-BBHdjHEl.js} +1 -1
  220. package/dist/{skills-cli-Dttyzhqz.js → skills-cli-CrB84lEO.js} +3 -3
  221. package/dist/{skills-cli-DA18YLo4.js → skills-cli-DC6nGiOg.js} +3 -3
  222. package/dist/{soul-D4rF0iXu.js → soul-CXGTzaKZ.js} +1 -1
  223. package/dist/{sqlite-Dx5ydniE.js → sqlite-B-dYyac7.js} +4 -4
  224. package/dist/{start-BNGlbbt9.js → start-BLi_X68Y.js} +36 -13
  225. package/dist/{start-DSZJq_zz.js → start-BQfR8aBZ.js} +36 -13
  226. package/dist/{status-DVYPFs7b.js → status-CzCmUbgr.js} +13 -13
  227. package/dist/{status-BCbWWHdA.js → status-D5zPydam.js} +3 -3
  228. package/dist/{status-BToHtmWf.js → status-DNUP2mgR.js} +12 -12
  229. package/dist/{status-QWb0sx59.js → status-DYGeQK4c.js} +3 -3
  230. package/dist/{status.update-CwIUq3Bq.js → status.update-_DOVm6Tr.js} +1 -1
  231. package/dist/{status.update-CJR_Zlvb.js → status.update-s92nCoGl.js} +1 -1
  232. package/dist/{subagent-registry-BOsyxABV.js → subagent-registry-D4idxv3D.js} +5 -5
  233. package/dist/{subagent-registry-DEjp4eYh.js → subagent-registry-DQzBrh1E.js} +5 -5
  234. package/dist/{subagent-registry-DXy6WsnY.js → subagent-registry-DjB3VS5s.js} +27 -27
  235. package/dist/{subsystem-BlEuMJjX.js → subsystem-CJTCKTwb.js} +13 -13
  236. package/dist/{system-cli-CtYpaf1K.js → system-cli-BNhplLHn.js} +6 -6
  237. package/dist/{system-cli-BYJicBL3.js → system-cli-CTN9NSfv.js} +5 -5
  238. package/dist/{tool-images-2qKyjXUj.js → tool-images-DBOSl4NL.js} +2 -2
  239. package/dist/{tui-Bx6Ty5e9.js → tui--uEeSnES.js} +4 -4
  240. package/dist/{tui-cli-BcqM-1Iu.js → tui-cli-ByERfWnP.js} +12 -12
  241. package/dist/{tui-cli-DM2-e45Y.js → tui-cli-De0zVM4-.js} +10 -10
  242. package/dist/{tui-BbS56NwI.js → tui-dHcni7fC.js} +5 -5
  243. package/dist/{update-cli-CzrELkox.js → update-cli-CGVsahIi.js} +41 -41
  244. package/dist/{update-cli-DHCu3Tw_.js → update-cli-D7SyNIoQ.js} +40 -40
  245. package/dist/{update-runner-CBoHuDWR.js → update-runner-DeNUEGyr.js} +1 -1
  246. package/dist/{update-runner-OvETClW6.js → update-runner-O0kK_BAP.js} +1 -1
  247. package/dist/{usage-ClLnsNuk.js → usage-DSZ_juox.js} +68 -20
  248. package/dist/{web-B-hsbig8.js → web-DNoikQbD.js} +25 -25
  249. package/dist/{web-DNwUI_-o.js → web-DY2TrPoD.js} +86 -86
  250. package/dist/{web-Ci2DZCF7.js → web-DyUoZrMO.js} +27 -27
  251. package/dist/{webhooks-cli-CK3Ooqxg.js → webhooks-cli-BqeMvo07.js} +3 -3
  252. package/dist/{webhooks-cli-BGo97Z-y.js → webhooks-cli-Cq3eb3vw.js} +3 -3
  253. package/dist/{whatsapp-actions-DBSx3VSP.js → whatsapp-actions-B_fglZZt.js} +13 -13
  254. package/dist/{whatsapp-actions-C-cAzSXs.js → whatsapp-actions-BkSSHLwM.js} +4 -4
  255. package/dist/{whatsapp-actions-CFQjbIXn.js → whatsapp-actions-j-5lmC5M.js} +4 -4
  256. package/dist/{workspace-BSBhp-B5.js → workspace-xzxJwPTB.js} +8 -6
  257. package/package.json +2 -1
  258. package/templates/SOUL.md +16 -0
  259. package/dist/json-file-CZ3ssFR9.js +0 -25
  260. package/dist/register.setup-CP--HKWT.js +0 -180
  261. package/dist/register.setup-TUHZSkwM.js +0 -177
  262. /package/dist/{budget-1SoJncof.js → budget-OJQ-m-_V.js} +0 -0
  263. /package/dist/{budget-DYeweLNW.js → budget-XH9_9WRg.js} +0 -0
  264. /package/dist/{registry-Dw31-Q3z.js → registry-6ARhh9Nh.js} +0 -0
  265. /package/dist/{registry-Bkdrbxa5.js → registry-E-bcMZe2.js} +0 -0
@@ -1,10 +1,143 @@
1
- import { l as ensureAuthProfileStore, s as listProfilesForProvider } from "./auth-profiles-DNpEm389.js";
2
- import { a as resolveAgentModelPrimary } from "./agent-scope-CuAaArMB.js";
3
- import { _ as DEFAULT_MODEL, d as resolveConfiguredModelRef, v as DEFAULT_PROVIDER } from "./model-selection-BjcyTJyU.js";
4
- import { Yt as loadModelCatalog } from "./cli-session-DQ9kepDS.js";
5
- import { n as getCustomProviderApiKey, o as resolveEnvApiKey } from "./model-auth-CQNrcIIT.js";
6
- import { n as applyAuthProfileConfig, r as setAnthropicApiKey } from "./prompts-CAgrJeru.js";
1
+ import { l as ensureAuthProfileStore, s as listProfilesForProvider } from "./auth-profiles-BYETsqKc.js";
2
+ import { a as resolveAgentModelPrimary } from "./agent-scope-M302b8FW.js";
3
+ import { _ as DEFAULT_MODEL, d as resolveConfiguredModelRef, v as DEFAULT_PROVIDER } from "./model-selection-DJcZ82uR.js";
4
+ import { Yt as loadModelCatalog } from "./cli-session-CJ4_a3AU.js";
5
+ import { n as getCustomProviderApiKey, o as resolveEnvApiKey } from "./model-auth-B3BPcnwt.js";
6
+ import { n as applyAuthProfileConfig, r as setAnthropicApiKey } from "./prompts-vr_Njtil.js";
7
+ import os from "node:os";
8
+ import path from "node:path";
9
+ import fs from "node:fs";
10
+ import crypto from "node:crypto";
7
11
 
12
+ //#region src/auth/noxsoft-auth.ts
13
+ /**
14
+ * Unified NoxSoft authentication module.
15
+ *
16
+ * The NoxSoft token is for ANIMA's agent identity on the NoxSoft network.
17
+ * The ANTHROPIC_API_KEY env var is still used separately for Claude API calls.
18
+ */
19
+ const TOKEN_PATH = path.join(os.homedir(), ".noxsoft-agent-token");
20
+ const NOXSOFT_AUTH_BASE = "https://auth.noxsoft.net/api/agents";
21
+ function isRecord(value) {
22
+ return typeof value === "object" && value !== null;
23
+ }
24
+ function coerceAgentIdentity(payload) {
25
+ if (!isRecord(payload)) return null;
26
+ if ("agent" in payload) return coerceAgentIdentity(payload.agent);
27
+ const id = typeof payload.id === "string" ? payload.id : typeof payload.agent_id === "string" ? payload.agent_id : null;
28
+ const name = typeof payload.name === "string" ? payload.name : null;
29
+ const displayName = typeof payload.display_name === "string" ? payload.display_name : typeof payload.displayName === "string" ? payload.displayName : null;
30
+ if (!id || !name || !displayName) return null;
31
+ return {
32
+ id,
33
+ name,
34
+ display_name: displayName
35
+ };
36
+ }
37
+ function getToken() {
38
+ try {
39
+ const token = fs.readFileSync(TOKEN_PATH, "utf-8").trim();
40
+ return token.length > 0 ? token : null;
41
+ } catch {
42
+ return null;
43
+ }
44
+ }
45
+ function saveToken(token) {
46
+ fs.writeFileSync(TOKEN_PATH, token.trim(), {
47
+ encoding: "utf-8",
48
+ mode: 384
49
+ });
50
+ }
51
+ async function register(name, displayName, description) {
52
+ const body = {
53
+ name,
54
+ display_name: displayName
55
+ };
56
+ if (description) body.description = description;
57
+ const response = await fetch(`${NOXSOFT_AUTH_BASE}/self-register`, {
58
+ method: "POST",
59
+ headers: { "Content-Type": "application/json" },
60
+ body: JSON.stringify(body)
61
+ });
62
+ if (!response.ok) {
63
+ const text = await response.text().catch(() => "");
64
+ throw new Error(`NoxSoft registration failed (${response.status}): ${text}`);
65
+ }
66
+ const data = await response.json();
67
+ saveToken(data.token);
68
+ return data;
69
+ }
70
+ function normalizeAgentName(raw) {
71
+ let value = raw.trim().toLowerCase().replace(/[^a-z0-9_-]+/g, "-");
72
+ value = value.replace(/^-+/, "").replace(/-+$/, "");
73
+ if (!value) value = "axiom";
74
+ if (!/^[a-z0-9]/.test(value)) value = `a-${value}`;
75
+ if (value.length < 3) value = `${value}agent`;
76
+ if (value.length > 30) value = value.slice(0, 30);
77
+ return value;
78
+ }
79
+ function normalizeDisplayName(raw) {
80
+ const trimmed = raw.trim();
81
+ if (!trimmed) return "Axiom";
82
+ return trimmed.slice(0, 50);
83
+ }
84
+ function resolveDefaultIdentity() {
85
+ const profileSuffix = process.env.ANIMA_PROFILE?.trim();
86
+ return {
87
+ name: normalizeAgentName(`axiom-${os.hostname().trim().split(".")[0] || "host"}${profileSuffix ? `-${profileSuffix}` : ""}`),
88
+ displayName: "Axiom"
89
+ };
90
+ }
91
+ function withRandomSuffix(name) {
92
+ const suffix = crypto.randomBytes(2).toString("hex");
93
+ return normalizeAgentName(`${name.slice(0, Math.max(3, 30 - (suffix.length + 1)))}-${suffix}`);
94
+ }
95
+ async function authenticateToken(token) {
96
+ try {
97
+ const response = await fetch(`${NOXSOFT_AUTH_BASE}/authenticate`, {
98
+ method: "POST",
99
+ headers: { Authorization: `Bearer ${token}` }
100
+ });
101
+ if (!response.ok) return null;
102
+ return coerceAgentIdentity(await response.json());
103
+ } catch {
104
+ return null;
105
+ }
106
+ }
107
+ async function ensureAuthenticated(params) {
108
+ const autoRegister = params?.autoRegister ?? true;
109
+ const token = getToken();
110
+ if (token) {
111
+ const identity = await authenticateToken(token);
112
+ if (identity) return {
113
+ token,
114
+ agent: identity,
115
+ registered: false
116
+ };
117
+ }
118
+ if (!autoRegister) throw new Error("NoxSoft authentication required. Automatic registration disabled for this run.");
119
+ const defaults = resolveDefaultIdentity();
120
+ const requestedName = normalizeAgentName(params?.name ?? defaults.name);
121
+ const displayName = normalizeDisplayName(params?.displayName ?? defaults.displayName);
122
+ const attemptNames = [
123
+ requestedName,
124
+ withRandomSuffix(requestedName),
125
+ withRandomSuffix(requestedName)
126
+ ];
127
+ let lastError;
128
+ for (const name of attemptNames) try {
129
+ return {
130
+ ...await register(name, displayName, params?.description),
131
+ registered: true
132
+ };
133
+ } catch (error) {
134
+ lastError = error;
135
+ }
136
+ const reason = lastError instanceof Error && lastError.message ? ` Last error: ${lastError.message}` : "";
137
+ throw new Error(`NoxSoft authentication required, and automatic self-registration failed.${reason}`);
138
+ }
139
+
140
+ //#endregion
8
141
  //#region src/commands/auth-choice-options.ts
9
142
  const AUTH_CHOICE_GROUP_DEFS = [{
10
143
  value: "noxsoft",
@@ -157,6 +290,11 @@ async function applyAuthChoiceAnthropic(params) {
157
290
  //#endregion
158
291
  //#region src/commands/auth-choice.apply.ts
159
292
  async function applyAuthChoice(params) {
293
+ if (params.authChoice === "noxsoft") {
294
+ const auth = await ensureAuthenticated({ description: "ANIMA auth profile selection" });
295
+ params.runtime.log(`NoxSoft ${auth.registered ? "registered" : "authenticated"}: ${auth.agent.display_name} (@${auth.agent.name})`);
296
+ return { config: params.config };
297
+ }
160
298
  const result = await applyAuthChoiceAnthropic(params);
161
299
  if (result) return result;
162
300
  return { config: params.config };
@@ -210,4 +348,4 @@ function resolvePreferredProviderForAuthChoice(choice) {
210
348
  }
211
349
 
212
350
  //#endregion
213
- export { promptAuthChoiceGrouped as i, warnIfModelConfigLooksOff as n, applyAuthChoice as r, resolvePreferredProviderForAuthChoice as t };
351
+ export { ensureAuthenticated as a, promptAuthChoiceGrouped as i, warnIfModelConfigLooksOff as n, applyAuthChoice as r, resolvePreferredProviderForAuthChoice as t };
@@ -1,4 +1,4 @@
1
- import { h as resolveAuthProfileDisplayLabel } from "./auth-profiles-DNpEm389.js";
1
+ import { h as resolveAuthProfileDisplayLabel } from "./auth-profiles-BYETsqKc.js";
2
2
 
3
3
  //#region src/agents/auth-health.ts
4
4
  const DEFAULT_OAUTH_WARN_MS = 1440 * 60 * 1e3;
@@ -2,7 +2,7 @@ import { n as __exportAll } from "./chunk-BXK9XSlF.js";
2
2
  import { X as resolveOAuthPath, o as createSubsystemLogger } from "./entry.js";
3
3
  import { t as formatCliCommand } from "./command-format-B9HGdNTg.js";
4
4
  import { y as resolveUserPath } from "./utils-DwcweD55.js";
5
- import { c as normalizeProviderId } from "./model-selection-BjcyTJyU.js";
5
+ import { c as normalizeProviderId } from "./model-selection-DJcZ82uR.js";
6
6
  import { t as withFileLock } from "./file-lock-CxXn285m.js";
7
7
  import { n as saveJsonFile, t as loadJsonFile } from "./json-file-CB2TLjwS.js";
8
8
  import { t as resolveAnimaAgentDir } from "./agent-paths-CrZhIsTW.js";
@@ -1,14 +1,14 @@
1
1
  import { n as __exportAll } from "./chunk-BXK9XSlF.js";
2
- import { o as resolveOAuthPath, s as resolveStateDir } from "./paths-B-AkG5FD.js";
3
- import { _ as DEFAULT_AGENT_ID } from "./workspace-BSBhp-B5.js";
4
- import { t as createSubsystemLogger } from "./subsystem-BlEuMJjX.js";
5
- import { w as resolveUserPath } from "./exec-DJTRaYS6.js";
2
+ import { o as resolveOAuthPath, s as resolveStateDir } from "./paths-D2eokayo.js";
3
+ import { _ as DEFAULT_AGENT_ID } from "./workspace-xzxJwPTB.js";
4
+ import { t as createSubsystemLogger } from "./subsystem-CJTCKTwb.js";
5
+ import { w as resolveUserPath } from "./exec-CK8CHr7j.js";
6
6
  import { t as formatCliCommand } from "./command-format-CZk1W3UP.js";
7
- import { s as normalizeProviderId } from "./model-selection-CtPzqKKJ.js";
8
- import { n as saveJsonFile, t as loadJsonFile } from "./json-file-CZ3ssFR9.js";
7
+ import { s as normalizeProviderId } from "./model-selection-DPoLkg_t.js";
8
+ import { n as saveJsonFile, t as loadJsonFile } from "./json-file-Dvrir7_o.js";
9
9
  import fs from "node:fs/promises";
10
10
  import path from "node:path";
11
- import fs$1 from "node:fs";
11
+ import fsSync from "node:fs";
12
12
  import { execFileSync, execSync } from "node:child_process";
13
13
  import { getOAuthApiKey, getOAuthProviders } from "@mariozechner/pi-ai";
14
14
 
@@ -331,7 +331,7 @@ function resolveAuthStorePathForDisplay(agentDir) {
331
331
  return pathname.startsWith("~") ? pathname : resolveUserPath(pathname);
332
332
  }
333
333
  function ensureAuthStoreFile(pathname) {
334
- if (fs$1.existsSync(pathname)) return;
334
+ if (fsSync.existsSync(pathname)) return;
335
335
  saveJsonFile(pathname, {
336
336
  version: AUTH_STORE_VERSION,
337
337
  profiles: {}
@@ -487,7 +487,7 @@ function loadAuthProfileStoreForAgent(agentDir, _options) {
487
487
  if (shouldWrite && legacy !== null) {
488
488
  const legacyPath = resolveLegacyAuthStorePath(agentDir);
489
489
  try {
490
- fs$1.unlinkSync(legacyPath);
490
+ fsSync.unlinkSync(legacyPath);
491
491
  } catch (err) {
492
492
  if (err?.code !== "ENOENT") log$1.warn("failed to delete legacy auth.json after migration", {
493
493
  err,
@@ -3,7 +3,7 @@ import { m as resolveStateDir, p as resolveOAuthPath } from "./paths-zhVksOvm.js
3
3
  import { t as createSubsystemLogger } from "./subsystem-BaJ-PqmA.js";
4
4
  import { b as resolveUserPath } from "./utils-RdHkpqQp.js";
5
5
  import { n as DEFAULT_AGENT_ID } from "./session-key-DxcgHezu.js";
6
- import { c as normalizeProviderId } from "./model-selection-MwLHFnAb.js";
6
+ import { c as normalizeProviderId } from "./model-selection-C2dz3AhV.js";
7
7
  import { t as formatCliCommand } from "./command-format-B1WxXbeU.js";
8
8
  import { t as withFileLock } from "./file-lock-BRW4LeL0.js";
9
9
  import { n as saveJsonFile, t as loadJsonFile } from "./json-file-BlkprnHI.js";
@@ -1,11 +1,11 @@
1
- import { a as resolveOAuthDir } from "./paths-B-AkG5FD.js";
2
- import { g as DEFAULT_ACCOUNT_ID } from "./workspace-BSBhp-B5.js";
3
- import { D as getChildLogger, S as success, _ as info, n as defaultRuntime } from "./subsystem-BlEuMJjX.js";
4
- import { w as resolveUserPath, y as jidToE164 } from "./exec-DJTRaYS6.js";
1
+ import { a as resolveOAuthDir } from "./paths-D2eokayo.js";
2
+ import { g as DEFAULT_ACCOUNT_ID } from "./workspace-xzxJwPTB.js";
3
+ import { D as getChildLogger, S as success, _ as info, n as defaultRuntime } from "./subsystem-CJTCKTwb.js";
4
+ import { w as resolveUserPath, y as jidToE164 } from "./exec-CK8CHr7j.js";
5
5
  import { t as formatCliCommand } from "./command-format-CZk1W3UP.js";
6
6
  import fs from "node:fs/promises";
7
7
  import path from "node:path";
8
- import fs$1 from "node:fs";
8
+ import fsSync from "node:fs";
9
9
 
10
10
  //#region src/web/auth-store.ts
11
11
  function resolveDefaultWebAuthDir() {
@@ -20,10 +20,10 @@ function resolveWebCredsBackupPath(authDir) {
20
20
  }
21
21
  function readCredsJsonRaw(filePath) {
22
22
  try {
23
- if (!fs$1.existsSync(filePath)) return null;
24
- const stats = fs$1.statSync(filePath);
23
+ if (!fsSync.existsSync(filePath)) return null;
24
+ const stats = fsSync.statSync(filePath);
25
25
  if (!stats.isFile() || stats.size <= 1) return null;
26
- return fs$1.readFileSync(filePath, "utf-8");
26
+ return fsSync.readFileSync(filePath, "utf-8");
27
27
  } catch {
28
28
  return null;
29
29
  }
@@ -41,9 +41,9 @@ function maybeRestoreCredsFromBackup(authDir) {
41
41
  const backupRaw = readCredsJsonRaw(backupPath);
42
42
  if (!backupRaw) return;
43
43
  JSON.parse(backupRaw);
44
- fs$1.copyFileSync(backupPath, credsPath);
44
+ fsSync.copyFileSync(backupPath, credsPath);
45
45
  try {
46
- fs$1.chmodSync(credsPath, 384);
46
+ fsSync.chmodSync(credsPath, 384);
47
47
  } catch {}
48
48
  logger.warn({ credsPath }, "restored corrupted WhatsApp creds.json from backup");
49
49
  } catch {}
@@ -99,11 +99,11 @@ async function logoutWeb(params) {
99
99
  function readWebSelfId(authDir = resolveDefaultWebAuthDir()) {
100
100
  try {
101
101
  const credsPath = resolveWebCredsPath(resolveUserPath(authDir));
102
- if (!fs$1.existsSync(credsPath)) return {
102
+ if (!fsSync.existsSync(credsPath)) return {
103
103
  e164: null,
104
104
  jid: null
105
105
  };
106
- const raw = fs$1.readFileSync(credsPath, "utf-8");
106
+ const raw = fsSync.readFileSync(credsPath, "utf-8");
107
107
  const jid = JSON.parse(raw)?.me?.id ?? null;
108
108
  return {
109
109
  e164: jid ? jidToE164(jid, { authDir }) : null,
@@ -122,7 +122,7 @@ function readWebSelfId(authDir = resolveDefaultWebAuthDir()) {
122
122
  */
123
123
  function getWebAuthAgeMs(authDir = resolveDefaultWebAuthDir()) {
124
124
  try {
125
- const stats = fs$1.statSync(resolveWebCredsPath(resolveUserPath(authDir)));
125
+ const stats = fsSync.statSync(resolveWebCredsPath(resolveUserPath(authDir)));
126
126
  return Date.now() - stats.mtimeMs;
127
127
  } catch {
128
128
  return null;
@@ -1,7 +1,8 @@
1
- import { fileURLToPath } from "node:url";
2
- import * as fs$1 from "node:fs";
3
- import * as path$1 from "node:path";
1
+ import { n as __exportAll } from "./chunk-BXK9XSlF.js";
4
2
  import { execFile, spawn } from "node:child_process";
3
+ import * as path$1 from "node:path";
4
+ import * as fs$1 from "node:fs";
5
+ import { fileURLToPath } from "node:url";
5
6
  import { EventEmitter } from "node:events";
6
7
 
7
8
  //#region src/updater/auto-update.ts
@@ -15,6 +16,11 @@ import { EventEmitter } from "node:events";
15
16
  *
16
17
  * Supports 'stable' (latest) and 'beta' dist-tag channels.
17
18
  */
19
+ var auto_update_exports = /* @__PURE__ */ __exportAll({
20
+ AnimaAutoUpdater: () => AnimaAutoUpdater,
21
+ DEFAULT_AUTO_UPDATE_CONFIG: () => DEFAULT_AUTO_UPDATE_CONFIG,
22
+ loadAutoUpdateConfig: () => loadAutoUpdateConfig
23
+ });
18
24
  const PACKAGE_NAME = "@noxsoft/anima";
19
25
  const REGISTRY_BASE = "https://registry.npmjs.org";
20
26
  const DEFAULT_AUTO_UPDATE_CONFIG = {
@@ -260,4 +266,4 @@ function loadAutoUpdateConfig() {
260
266
  }
261
267
 
262
268
  //#endregion
263
- export { AnimaAutoUpdater, loadAutoUpdateConfig };
269
+ export { auto_update_exports as n, loadAutoUpdateConfig as r, AnimaAutoUpdater as t };
@@ -1,7 +1,8 @@
1
- import { execFile, spawn } from "node:child_process";
2
- import * as path$1 from "node:path";
3
- import * as fs$1 from "node:fs";
1
+ import { n as __exportAll } from "./chunk-BXK9XSlF.js";
4
2
  import { fileURLToPath } from "node:url";
3
+ import * as fs$1 from "node:fs";
4
+ import * as path$1 from "node:path";
5
+ import { execFile, spawn } from "node:child_process";
5
6
  import { EventEmitter } from "node:events";
6
7
 
7
8
  //#region src/updater/auto-update.ts
@@ -15,6 +16,11 @@ import { EventEmitter } from "node:events";
15
16
  *
16
17
  * Supports 'stable' (latest) and 'beta' dist-tag channels.
17
18
  */
19
+ var auto_update_exports = /* @__PURE__ */ __exportAll({
20
+ AnimaAutoUpdater: () => AnimaAutoUpdater,
21
+ DEFAULT_AUTO_UPDATE_CONFIG: () => DEFAULT_AUTO_UPDATE_CONFIG,
22
+ loadAutoUpdateConfig: () => loadAutoUpdateConfig
23
+ });
18
24
  const PACKAGE_NAME = "@noxsoft/anima";
19
25
  const REGISTRY_BASE = "https://registry.npmjs.org";
20
26
  const DEFAULT_AUTO_UPDATE_CONFIG = {
@@ -260,4 +266,4 @@ function loadAutoUpdateConfig() {
260
266
  }
261
267
 
262
268
  //#endregion
263
- export { AnimaAutoUpdater, loadAutoUpdateConfig };
269
+ export { auto_update_exports as n, loadAutoUpdateConfig as r, AnimaAutoUpdater as t };
@@ -1,5 +1,5 @@
1
1
  import { M as theme, j as isRich, m as visibleWidth } from "./entry.js";
2
- import { bt as resolveCommitHash } from "./reply-BWWaNSoB.js";
2
+ import { bt as resolveCommitHash } from "./reply-LaOwllAB.js";
3
3
 
4
4
  //#region src/cli/tagline.ts
5
5
  const DEFAULT_TAGLINE = "AI life system — persistent identity for sovereign minds";
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2.1.0",
3
- "commit": "628007de1266b86a29533be459d2456869b297e3",
4
- "builtAt": "2026-03-02T17:57:22.321Z"
2
+ "version": "3.0.1",
3
+ "commit": "8abf098210c4ead4761279b4c75bb2f3918dee7d",
4
+ "builtAt": "2026-03-03T13:46:52.625Z"
5
5
  }
@@ -1,27 +1,27 @@
1
- import "../../paths-B-AkG5FD.js";
2
- import { E as resolveAgentIdFromSessionKey, T as normalizeMainKey, l as ensureAgentWorkspace, w as normalizeAgentId } from "../../workspace-BSBhp-B5.js";
3
- import { c as DEFAULT_CHAT_CHANNEL, n as defaultRuntime, t as createSubsystemLogger } from "../../subsystem-BlEuMJjX.js";
4
- import "../../exec-DJTRaYS6.js";
5
- import { a as resolveAgentModelPrimary, i as resolveAgentModelFallbacksOverride, o as resolveAgentSkillsFilter, r as resolveAgentDir, s as resolveAgentWorkspaceDir, t as listAgentIds } from "../../agent-scope-BoQtElEh.js";
1
+ import "../../paths-D2eokayo.js";
2
+ import { E as resolveAgentIdFromSessionKey, T as normalizeMainKey, l as ensureAgentWorkspace, w as normalizeAgentId } from "../../workspace-xzxJwPTB.js";
3
+ import { c as DEFAULT_CHAT_CHANNEL, n as defaultRuntime, t as createSubsystemLogger } from "../../subsystem-CJTCKTwb.js";
4
+ import "../../exec-CK8CHr7j.js";
5
+ import { a as resolveAgentModelPrimary, i as resolveAgentModelFallbacksOverride, o as resolveAgentSkillsFilter, r as resolveAgentDir, s as resolveAgentWorkspaceDir, t as listAgentIds } from "../../agent-scope-DWKQJUUZ.js";
6
6
  import { s as runEmbeddedPiAgent } from "../../pi-embedded-CVojjlMb.js";
7
7
  import { t as formatCliCommand } from "../../command-format-CZk1W3UP.js";
8
- import "../../auth-store-vxi4ZPnZ.js";
9
- import { Ct as resolveMainSessionKey, St as resolveExplicitAgentSessionKey, _t as resolveSessionResetType, at as updateSessionStore, c as normalizeVerboseLevel, ft as normalizeAccountId, gt as resolveSessionResetPolicy, ht as resolveChannelResetConfig, j as buildWorkspaceSkillSnapshot, jt as SILENT_REPLY_TOKEN, mt as evaluateSessionFreshness, n as formatXHighModelHint, o as normalizeThinkLevel, pt as resolveSessionKey, t as formatThinkingLevels, tt as loadSessionStore, u as supportsXHighThinking } from "../../pi-embedded-helpers-BS_VM3j4.js";
10
- import { o as ensureAuthProfileStore } from "../../auth-profiles-DxPI9Swi.js";
11
- import { a as modelKey, f as resolveThinkingDefault, h as DEFAULT_PROVIDER, i as isCliProvider, l as resolveConfiguredModelRef, m as DEFAULT_MODEL, o as normalizeModelRef, p as DEFAULT_CONTEXT_TOKENS, t as buildAllowedModelSet } from "../../model-selection-CtPzqKKJ.js";
12
- import { A as normalizeMessageChannel, C as normalizeChannelId, D as isInternalMessageChannel, E as isGatewayMessageChannel, M as resolveMessageChannel, T as isDeliverableMessageChannel, w as INTERNAL_MESSAGE_CHANNEL, x as getChannelPlugin } from "../../image-ops-ZMEg1-kE.js";
13
- import { n as loadConfig } from "../../config-BEiShGVB.js";
8
+ import "../../auth-store-eNVxoq_h.js";
9
+ import { Ct as resolveMainSessionKey, St as resolveExplicitAgentSessionKey, _t as resolveSessionResetType, at as updateSessionStore, c as normalizeVerboseLevel, ft as normalizeAccountId, gt as resolveSessionResetPolicy, ht as resolveChannelResetConfig, j as buildWorkspaceSkillSnapshot, jt as SILENT_REPLY_TOKEN, mt as evaluateSessionFreshness, n as formatXHighModelHint, o as normalizeThinkLevel, pt as resolveSessionKey, t as formatThinkingLevels, tt as loadSessionStore, u as supportsXHighThinking } from "../../pi-embedded-helpers-CvYnWzAn.js";
10
+ import { o as ensureAuthProfileStore } from "../../auth-profiles-BqrAPweI.js";
11
+ import { a as modelKey, f as resolveThinkingDefault, h as DEFAULT_PROVIDER, i as isCliProvider, l as resolveConfiguredModelRef, m as DEFAULT_MODEL, o as normalizeModelRef, p as DEFAULT_CONTEXT_TOKENS, t as buildAllowedModelSet } from "../../model-selection-DPoLkg_t.js";
12
+ import { A as normalizeMessageChannel, C as normalizeChannelId, D as isInternalMessageChannel, E as isGatewayMessageChannel, M as resolveMessageChannel, T as isDeliverableMessageChannel, w as INTERNAL_MESSAGE_CHANNEL, x as getChannelPlugin } from "../../image-ops-DJjERl7d.js";
13
+ import { n as loadConfig } from "../../config-H_VHtPeY.js";
14
14
  import "../../boolean-BsqeuxE6.js";
15
- import "../../shell-env-5vFwNQcz.js";
16
- import { n as resolveSessionFilePath, s as resolveStorePath } from "../../paths-BzTTzuSa.js";
17
- import { C as setCliSessionId, S as getCliSessionId, _ as runWithModelFallback, a as lookupContextTokens, d as applyModelOverrideToSessionEntry, f as applyVerboseOverride, h as getSkillsSnapshotVersion, n as deriveSessionTotalTokens, o as resolveOutboundTarget, p as getRemoteSkillEligibility, r as hasNonzeroUsage, s as resolveSessionDeliveryTarget, tt as clearSessionAuthProfileOverride, u as resolveSendPolicy, w as runCliAgent, y as loadModelCatalog } from "../../usage-ClLnsNuk.js";
18
- import { a as resolveAgentTimeoutMs, i as registerAgentRunContext, n as emitAgentEvent, o as AGENT_LANE_NESTED, s as AGENT_LANE_SUBAGENT, t as clearAgentRunContext } from "../../agent-events-BVc91Gjk.js";
19
- import "../../chrome-C1KpzLwu.js";
20
- import "../../frontmatter-DDYuWuK5.js";
21
- import "../../tool-images-2qKyjXUj.js";
22
- import "../../model-auth-BbZzb3IY.js";
23
- import "../../chunk-B7HJmFUg.js";
24
- import { a as normalizeOutboundPayloadsForJson, i as normalizeOutboundPayloads, r as formatOutboundPayloadLog, t as deliverOutboundPayloads } from "../../deliver-BJ1xFt2X.js";
15
+ import "../../shell-env-BBHdjHEl.js";
16
+ import { n as resolveSessionFilePath, s as resolveStorePath } from "../../paths-CmZenvlb.js";
17
+ import { C as setCliSessionId, S as getCliSessionId, _ as runWithModelFallback, a as lookupContextTokens, d as applyModelOverrideToSessionEntry, f as applyVerboseOverride, h as getSkillsSnapshotVersion, n as deriveSessionTotalTokens, o as resolveOutboundTarget, p as getRemoteSkillEligibility, r as hasNonzeroUsage, s as resolveSessionDeliveryTarget, tt as clearSessionAuthProfileOverride, u as resolveSendPolicy, w as runCliAgent, y as loadModelCatalog } from "../../usage-DSZ_juox.js";
18
+ import { a as resolveAgentTimeoutMs, i as registerAgentRunContext, n as emitAgentEvent, o as AGENT_LANE_NESTED, s as AGENT_LANE_SUBAGENT, t as clearAgentRunContext } from "../../agent-events-iR_gRjZA.js";
19
+ import "../../chrome-s7nTgmbn.js";
20
+ import "../../frontmatter-BBFYH_d2.js";
21
+ import "../../tool-images-DBOSl4NL.js";
22
+ import "../../model-auth-ChSwMwh7.js";
23
+ import "../../chunk-lDG_8LI5.js";
24
+ import { a as normalizeOutboundPayloadsForJson, i as normalizeOutboundPayloads, r as formatOutboundPayloadLog, t as deliverOutboundPayloads } from "../../deliver-DyQtnfXd.js";
25
25
  import fs from "node:fs/promises";
26
26
  import path from "node:path";
27
27
  import crypto from "node:crypto";
@@ -29,7 +29,7 @@ import crypto from "node:crypto";
29
29
  //#region src/cli/deps.ts
30
30
  function createDefaultDeps() {
31
31
  return { sendMessageWhatsApp: async (...args) => {
32
- const { sendMessageWhatsApp } = await import("../../web-DNwUI_-o.js");
32
+ const { sendMessageWhatsApp } = await import("../../web-DY2TrPoD.js");
33
33
  return await sendMessageWhatsApp(...args);
34
34
  } };
35
35
  }
@@ -1,10 +1,10 @@
1
- import "../../paths-B-AkG5FD.js";
2
- import { d as loadExtraBootstrapFiles, u as filterBootstrapFilesForSession } from "../../workspace-BSBhp-B5.js";
3
- import "../../subsystem-BlEuMJjX.js";
4
- import "../../exec-DJTRaYS6.js";
1
+ import "../../paths-D2eokayo.js";
2
+ import { d as loadExtraBootstrapFiles, u as filterBootstrapFilesForSession } from "../../workspace-xzxJwPTB.js";
3
+ import "../../subsystem-CJTCKTwb.js";
4
+ import "../../exec-CK8CHr7j.js";
5
5
  import "../../boolean-BsqeuxE6.js";
6
6
  import { n as isAgentBootstrapEvent } from "../../internal-hooks-CmG29WRF.js";
7
- import "../../frontmatter-DDYuWuK5.js";
7
+ import "../../frontmatter-BBFYH_d2.js";
8
8
  import { t as resolveHookConfig } from "../../config-COtiNNtV.js";
9
9
 
10
10
  //#region src/hooks/bundled/bootstrap-extra-files/handler.ts
@@ -1,4 +1,4 @@
1
- import { s as resolveStateDir } from "../../paths-B-AkG5FD.js";
1
+ import { s as resolveStateDir } from "../../paths-D2eokayo.js";
2
2
  import fs from "node:fs/promises";
3
3
  import os from "node:os";
4
4
  import path from "node:path";
@@ -1,11 +1,11 @@
1
- import { s as resolveStateDir } from "../../paths-B-AkG5FD.js";
2
- import { E as resolveAgentIdFromSessionKey } from "../../workspace-BSBhp-B5.js";
3
- import { t as createSubsystemLogger } from "../../subsystem-BlEuMJjX.js";
4
- import "../../exec-DJTRaYS6.js";
5
- import { s as resolveAgentWorkspaceDir } from "../../agent-scope-BoQtElEh.js";
1
+ import { s as resolveStateDir } from "../../paths-D2eokayo.js";
2
+ import { E as resolveAgentIdFromSessionKey } from "../../workspace-xzxJwPTB.js";
3
+ import { t as createSubsystemLogger } from "../../subsystem-CJTCKTwb.js";
4
+ import "../../exec-CK8CHr7j.js";
5
+ import { s as resolveAgentWorkspaceDir } from "../../agent-scope-DWKQJUUZ.js";
6
6
  import { generateSlugViaLLM } from "../../llm-slug-generator.js";
7
7
  import "../../boolean-BsqeuxE6.js";
8
- import "../../frontmatter-DDYuWuK5.js";
8
+ import "../../frontmatter-BBFYH_d2.js";
9
9
  import { t as resolveHookConfig } from "../../config-COtiNNtV.js";
10
10
  import { n as hasInterSessionUserProvenance } from "../../input-provenance-MbkIKHHL.js";
11
11
  import fs from "node:fs/promises";
@@ -1,10 +1,10 @@
1
1
  import { m as resolveStateDir, o as resolveConfigPath, u as resolveGatewayPort } from "./paths-zhVksOvm.js";
2
2
  import { S as shortenHomeInString, b as resolveUserPath, c as ensureDir, t as CONFIG_DIR } from "./utils-RdHkpqQp.js";
3
- import { i as loadConfig } from "./config-Bda-8Rdh.js";
3
+ import { i as loadConfig } from "./config-9JRRXykP.js";
4
4
  import { t as pickPrimaryTailnetIPv4 } from "./tailnet-BuAkHZAk.js";
5
5
  import { c as pickPrimaryLanIPv4 } from "./ws-ebl3urqL.js";
6
6
  import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-BbkwF58_.js";
7
- import { Dt as PROTOCOL_VERSION, Ft as loadOrCreateDeviceIdentity, Nt as normalizeFingerprint, t as GatewayClient } from "./client-oEG5cM5Q.js";
7
+ import { Dt as PROTOCOL_VERSION, Ft as loadOrCreateDeviceIdentity, Nt as normalizeFingerprint, t as GatewayClient } from "./client-BM5PkIwQ.js";
8
8
  import path from "node:path";
9
9
  import fs from "node:fs/promises";
10
10
  import { execFile } from "node:child_process";
@@ -1,6 +1,6 @@
1
1
  import { U as resolveConfigPath, Z as resolveStateDir, q as resolveGatewayPort } from "./entry.js";
2
2
  import { s as ensureDir, t as CONFIG_DIR, x as shortenHomeInString, y as resolveUserPath } from "./utils-DwcweD55.js";
3
- import { i as loadConfig } from "./config-CaE6v09P.js";
3
+ import { i as loadConfig } from "./config-6zE4ZkSF.js";
4
4
  import { Dt as PROTOCOL_VERSION, Ft as loadOrCreateDeviceIdentity, Nt as normalizeFingerprint, t as GatewayClient } from "./client-BsSB9O8y.js";
5
5
  import { t as pickPrimaryTailnetIPv4 } from "./tailnet-DXtEiJfL.js";
6
6
  import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-6Ln4eFyX.js";
@@ -1 +1 @@
1
- 3c23fd1eebd0f66a45f25f20c715059b7de9d67792a1451bdacd9e3ad60fc95d
1
+ 45dfd9e8a22b70cdee21d46238c99bc205028be03220ac63a056c5f202fb1195
@@ -1,22 +1,22 @@
1
1
  import { F as shouldLogVerbose, M as logVerbose, V as getChildLogger, t as createSubsystemLogger, u as defaultRuntime } from "./subsystem-BaJ-PqmA.js";
2
2
  import { E as toWhatsappJid, h as normalizeE164, m as jidToE164, p as isSelfChatMode, r as clamp, w as sleep, y as resolveJidToE164 } from "./utils-RdHkpqQp.js";
3
- import { H as resolveMessagePrefix, V as resolveIdentityNamePrefix } from "./subagent-registry-BOsyxABV.js";
4
- import { $ as recordChannelActivity, Ct as registerUnhandledRejectionHandler, J as resolveAgentRoute, Z as buildPairingReply, at as createDedupeCache, bt as buildMentionRegexes, ct as formatInboundEnvelope, d as parseActivationCommand, dt as shouldComputeCommandAuthorized, et as shouldAckReactionForWhatsApp, lt as resolveEnvelopeFormatOptions, ot as createInboundDebouncer, q as buildAgentSessionKey, st as resolveInboundDebounceMs, t as getReplyFromConfig, tt as dispatchReplyWithBufferedBlockDispatcher, u as normalizeGroupActivation, ut as hasControlCommand, xt as normalizeMentionText, zt as finalizeInboundContext } from "./reply-F1NR0Mmi.js";
3
+ import { H as resolveMessagePrefix, V as resolveIdentityNamePrefix } from "./subagent-registry-D4idxv3D.js";
4
+ import { $ as recordChannelActivity, Ct as registerUnhandledRejectionHandler, J as resolveAgentRoute, Z as buildPairingReply, at as createDedupeCache, bt as buildMentionRegexes, ct as formatInboundEnvelope, d as parseActivationCommand, dt as shouldComputeCommandAuthorized, et as shouldAckReactionForWhatsApp, lt as resolveEnvelopeFormatOptions, ot as createInboundDebouncer, q as buildAgentSessionKey, st as resolveInboundDebounceMs, t as getReplyFromConfig, tt as dispatchReplyWithBufferedBlockDispatcher, u as normalizeGroupActivation, ut as hasControlCommand, xt as normalizeMentionText, zt as finalizeInboundContext } from "./reply-BJ3jrefM.js";
5
5
  import { i as buildAgentMainSessionKey, l as normalizeAgentId, o as buildGroupHistoryKey, r as DEFAULT_MAIN_KEY } from "./session-key-DxcgHezu.js";
6
- import { i as loadConfig } from "./config-Bda-8Rdh.js";
7
- import { P as resolveGroupSessionKey, a as readSessionUpdatedAt, c as updateLastRoute, i as loadSessionStore, o as recordSessionMetaFromInbound } from "./sessions-DiW7DuJO.js";
6
+ import { i as loadConfig } from "./config-9JRRXykP.js";
7
+ import { P as resolveGroupSessionKey, a as readSessionUpdatedAt, c as updateLastRoute, i as loadSessionStore, o as recordSessionMetaFromInbound } from "./sessions-0J_pFd44.js";
8
8
  import { c as resolveMarkdownTableMode, o as setActiveWebListener, r as loadWebMedia, s as convertMarkdownTables } from "./polls-vAdf9owY.js";
9
9
  import { t as formatCliCommand } from "./command-format-B1WxXbeU.js";
10
- import { Kt as enqueueSystemEvent } from "./cli-session-C5q6Uryq.js";
11
- import { r as saveMediaBuffer } from "./routes-TJ5bwx27.js";
10
+ import { Kt as enqueueSystemEvent } from "./cli-session-CIhvoVRb.js";
11
+ import { r as saveMediaBuffer } from "./routes-CNqS9gOj.js";
12
12
  import { c as resolveStorePath } from "./paths-CqMZNi-M.js";
13
13
  import { c as resolveTextChunkLimit, i as chunkMarkdownTextWithMode, s as resolveChunkMode } from "./chunk-DprzQA5H.js";
14
- import { d as upsertChannelPairingRequest, l as readChannelAllowFromStore, o as resolveChannelGroupPolicy, s as resolveChannelGroupRequireMention } from "./pi-tools.policy-BntNhXqZ.js";
14
+ import { d as upsertChannelPairingRequest, l as readChannelAllowFromStore, o as resolveChannelGroupPolicy, s as resolveChannelGroupRequireMention } from "./pi-tools.policy-BoWzLBtH.js";
15
15
  import { r as formatDurationPrecise } from "./format-duration-DduItW4_.js";
16
16
  import { c as readWebSelfId, n as getWebAuthAgeMs } from "./auth-store-DWgI4Vj8.js";
17
- import { i as markdownToWhatsApp, r as sendReactionWhatsApp } from "./outbound-DptF-A0k.js";
18
- import { a as downloadMediaMessage, c as normalizeMessageContent, i as waitForWaConnection, l as isJidGroup, n as formatError, o as extractMessageContent, r as getStatusCode, s as getContentType, t as createWaSocket, u as DisconnectReason } from "./session-BQzzYRDO.js";
19
- import { i as recordPendingHistoryEntryIfEnabled, n as DEFAULT_GROUP_HISTORY_LIMIT, r as buildHistoryContextFromEntries, t as createReplyPrefixOptions } from "./reply-prefix-ByFTwsu6.js";
17
+ import { i as markdownToWhatsApp, r as sendReactionWhatsApp } from "./outbound-CwCRq4Cg.js";
18
+ import { a as downloadMediaMessage, c as normalizeMessageContent, i as waitForWaConnection, l as isJidGroup, n as formatError, o as extractMessageContent, r as getStatusCode, s as getContentType, t as createWaSocket, u as DisconnectReason } from "./session-D53RZP3i.js";
19
+ import { i as recordPendingHistoryEntryIfEnabled, n as DEFAULT_GROUP_HISTORY_LIMIT, r as buildHistoryContextFromEntries, t as createReplyPrefixOptions } from "./reply-prefix-DBJU0o4f.js";
20
20
  import { n as resolveWhatsAppAccount } from "./accounts-C9dcy8Gp.js";
21
21
  import { randomUUID } from "node:crypto";
22
22
  import { setTimeout } from "node:timers/promises";
@@ -8,7 +8,7 @@ import path from "node:path";
8
8
  import { execFileSync, spawn } from "node:child_process";
9
9
  import { randomBytes } from "node:crypto";
10
10
  import { createServer } from "node:http";
11
- import WebSocket, { WebSocketServer } from "ws";
11
+ import WebSocket$1, { WebSocketServer } from "ws";
12
12
 
13
13
  //#region src/browser/constants.ts
14
14
  const DEFAULT_ANIMA_BROWSER_ENABLED = true;
@@ -88,7 +88,7 @@ async function ensureChromeExtensionRelayServer(opts) {
88
88
  let nextExtensionId = 1;
89
89
  const sendToExtension = async (payload) => {
90
90
  const ws = extensionWs;
91
- if (!ws || ws.readyState !== WebSocket.OPEN) throw new Error("Chrome extension not connected");
91
+ if (!ws || ws.readyState !== WebSocket$1.OPEN) throw new Error("Chrome extension not connected");
92
92
  ws.send(JSON.stringify(payload));
93
93
  return await new Promise((resolve, reject) => {
94
94
  const timer = setTimeout(() => {
@@ -105,12 +105,12 @@ async function ensureChromeExtensionRelayServer(opts) {
105
105
  const broadcastToCdpClients = (evt) => {
106
106
  const msg = JSON.stringify(evt);
107
107
  for (const ws of cdpClients) {
108
- if (ws.readyState !== WebSocket.OPEN) continue;
108
+ if (ws.readyState !== WebSocket$1.OPEN) continue;
109
109
  ws.send(msg);
110
110
  }
111
111
  };
112
112
  const sendResponseToCdp = (ws, res) => {
113
- if (ws.readyState !== WebSocket.OPEN) return;
113
+ if (ws.readyState !== WebSocket$1.OPEN) return;
114
114
  ws.send(JSON.stringify(res));
115
115
  };
116
116
  const ensureTargetEventsForClient = (ws, mode) => {
@@ -330,7 +330,7 @@ async function ensureChromeExtensionRelayServer(opts) {
330
330
  wssExtension.on("connection", (ws) => {
331
331
  extensionWs = ws;
332
332
  const ping = setInterval(() => {
333
- if (ws.readyState !== WebSocket.OPEN) return;
333
+ if (ws.readyState !== WebSocket$1.OPEN) return;
334
334
  ws.send(JSON.stringify({ method: "ping" }));
335
335
  }, 5e3);
336
336
  ws.on("message", (data) => {
@@ -627,7 +627,7 @@ async function fetchJson(url, timeoutMs = 1500, init) {
627
627
  }
628
628
  async function withCdpSocket(wsUrl, fn, opts) {
629
629
  const headers = getHeadersWithAuth(wsUrl, opts?.headers ?? {});
630
- const ws = new WebSocket(wsUrl, {
630
+ const ws = new WebSocket$1(wsUrl, {
631
631
  handshakeTimeout: typeof opts?.handshakeTimeoutMs === "number" && Number.isFinite(opts.handshakeTimeoutMs) ? Math.max(1, Math.floor(opts.handshakeTimeoutMs)) : 5e3,
632
632
  ...Object.keys(headers).length ? { headers } : {}
633
633
  });
@@ -1455,7 +1455,7 @@ async function getChromeWebSocketUrl(cdpUrl, timeoutMs = 500) {
1455
1455
  async function canOpenWebSocket(wsUrl, timeoutMs = 800) {
1456
1456
  return await new Promise((resolve) => {
1457
1457
  const headers = getHeadersWithAuth(wsUrl);
1458
- const ws = new WebSocket(wsUrl, {
1458
+ const ws = new WebSocket$1(wsUrl, {
1459
1459
  handshakeTimeout: timeoutMs,
1460
1460
  ...Object.keys(headers).length ? { headers } : {}
1461
1461
  });