@noxsoft/anima 5.0.2 → 5.0.3

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 (342) hide show
  1. package/dist/{accounts-CSCVz9k9.js → accounts-DjjQHOIW.js} +11 -11
  2. package/dist/{accounts-CVmv61PJ.js → accounts-Dzi6Ld7X.js} +2 -2
  3. package/dist/{acp-cli-C8aBckv5.js → acp-cli-I-yv1f5O.js} +15 -15
  4. package/dist/{acp-cli-DyVMXQS8.js → acp-cli-QBd9GLqD.js} +4 -4
  5. package/dist/{agent-DiEXJmhj.js → agent-B3KeHK1A.js} +12 -12
  6. package/dist/{agent-CWQdTmzC.js → agent-fG1PVmNy.js} +16 -16
  7. package/dist/{agent-scope-DICrDp7Y.js → agent-scope-BHR6uOLT.js} +2 -2
  8. package/dist/{agent-scope-BLiq3nK_.js → agent-scope-ryeVDUKe.js} +2 -2
  9. package/dist/{agents-rAIsxGuA.js → agents-DY5ZtGB2.js} +11 -11
  10. package/dist/{agents.config-Bqr5rrkV.js → agents.config-DmF0fsB6.js} +1 -1
  11. package/dist/{anthropic-direct-runner-_uCPWuBb.js → anthropic-direct-runner-BJosFvVm.js} +203 -215
  12. package/dist/{anthropic-direct-runner--MPTWkYA.js → anthropic-direct-runner-BXb24VJt.js} +208 -220
  13. package/dist/{audit-DqjWCAbO.js → audit-BTMmL_HS.js} +9 -9
  14. package/dist/{audit-DegswVkZ.js → audit-qHMf9jWY.js} +16 -16
  15. package/dist/{auth-Cs_c5TKt.js → auth-DQfFqQBz.js} +3 -3
  16. package/dist/{auth-choice-o5GHtPGA.js → auth-choice-BoyT3ahK.js} +5 -5
  17. package/dist/{auth-health-D0VUH0FQ.js → auth-health-BcABdgUT.js} +1 -1
  18. package/dist/{auth-profiles-k5IOWaG2.js → auth-profiles-BF5x9Ej0.js} +1 -1
  19. package/dist/{auth-profiles-BhZX2spm.js → auth-profiles-C_LmTbMb.js} +5 -5
  20. package/dist/{auth-profiles-DriJ4HU5.js → auth-profiles-Da39zGOD.js} +4 -4
  21. package/dist/{auth-store-D0vDEvCx.js → auth-store-CXZzirrJ.js} +3 -3
  22. package/dist/{auth-store-BMwyg-WK.js → auth-store-DTpDRu--.js} +3 -3
  23. package/dist/{banner-Gtp-FQrx.js → banner-CJVa8aiZ.js} +1 -1
  24. package/dist/{bonjour-discovery-DaCmsB4i.js → bonjour-discovery-B3IeIN1u.js} +2 -2
  25. package/dist/build-info.json +3 -3
  26. package/dist/bundled/boot-md/handler.js +20 -20
  27. package/dist/bundled/bootstrap-extra-files/handler.js +5 -5
  28. package/dist/bundled/session-memory/handler.js +17 -17
  29. package/dist/{call-Z_GCO8CL.js → call-BKsdSTVf.js} +1 -1
  30. package/dist/{call-BOwaQIXo.js → call-C3CH9PNK.js} +6 -6
  31. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  32. package/dist/{catalog-B-pfqu76.js → catalog-3hzXhHxJ.js} +2 -2
  33. package/dist/{channel-web-Dz0XZNjP.js → channel-web-Df3Ay9v7.js} +18 -18
  34. package/dist/{channels-status-issues-Dqd_vE0e.js → channels-status-issues-BlmAMBCg.js} +2 -2
  35. package/dist/{channels-status-issues-DenKLCLq.js → channels-status-issues-D5XAOSaj.js} +4 -4
  36. package/dist/{chrome-CB6uZMvl.js → chrome-B2-33FWf.js} +1 -1
  37. package/dist/{chrome-C3-muxXb.js → chrome-CLhrEjgx.js} +4 -4
  38. package/dist/{chrome-CKvch3UL.js → chrome-CkSIMI7j.js} +9 -9
  39. package/dist/{chunk-DGg8zCWl.js → chunk-Dq7ILx_r.js} +2 -2
  40. package/dist/{chunk-DFCmYqgJ.js → chunk-fcLG1hME.js} +1 -1
  41. package/dist/{clack-prompter-OFy356QZ.js → clack-prompter-DmD_A7en.js} +5 -5
  42. package/dist/{clack-prompter-BRLXmV52.js → clack-prompter-bl-Zsxpq.js} +1 -1
  43. package/dist/cli/daemon-cli.js +1 -1
  44. package/dist/{cli-BZz5MnAE.js → cli-0-FvuyBX.js} +35 -35
  45. package/dist/cli-CLVEx1Po.js +104 -0
  46. package/dist/{cli-session-8PeURiwF.js → cli-session-CmX1oA1T.js} +11 -11
  47. package/dist/{cli-session-CczB2Dni.js → cli-session-gR2abU0g.js} +16 -16
  48. package/dist/{client-BObcTF_9.js → client-BT3pbXCv.js} +3 -3
  49. package/dist/{command-registry-C9kvlc67.js → command-registry-C3SmyTQU.js} +12 -12
  50. package/dist/{common-k1Cu8adj.js → common-Bi43BlMQ.js} +2 -2
  51. package/dist/{common-Cd7BmlCQ.js → common-CSTOiddD.js} +2 -2
  52. package/dist/{common-C5mWuFve.js → common-FlJ-8clz.js} +2 -2
  53. package/dist/{completion-cli-Ci_MzRm6.js → completion-cli-308M08su.js} +2 -2
  54. package/dist/{completion-cli-DhbIrk13.js → completion-cli-D7gWcWEj.js} +3 -3
  55. package/dist/{config-DezP7V65.js → config-BfhpauV9.js} +6 -6
  56. package/dist/{config-CG7uuHNE.js → config-Dk-5Mb_G.js} +6 -6
  57. package/dist/{config-D6D_ieel.js → config-Ofh9gKvs.js} +1 -1
  58. package/dist/config-cli-CajDGi9m.js +15 -0
  59. package/dist/{config-cli-ePL5ncye.js → config-cli-De0z7mvk.js} +3 -3
  60. package/dist/{config-guard-BT3OoaEu.js → config-guard-BnkobgvR.js} +21 -21
  61. package/dist/{config-guard-CCOBZ77Q.js → config-guard-DlOs5hMU.js} +2 -2
  62. package/dist/{configure-DxKMnCHX.js → configure-BXK8YRUD.js} +48 -48
  63. package/dist/{configure-KP7q9c7h.js → configure-Caf6yI_m.js} +24 -24
  64. package/dist/{configure-D-9Ezgal.js → configure-DS9oQW51.js} +78 -78
  65. package/dist/{configure-CkGsX5z9.js → configure-DgXRL7Uz.js} +12 -12
  66. package/dist/{context-Cau0zD3W.js → context-BZV-msqG.js} +1 -1
  67. package/dist/{control-service-DMoq3DpT.js → control-service-BFYEuU-S.js} +5 -5
  68. package/dist/{control-service-D3rS-Yd1.js → control-service-DUF4hGd3.js} +4 -4
  69. package/dist/{cron-cli-3QY_K0l_.js → cron-cli-BglUapfu.js} +5 -5
  70. package/dist/{cron-cli-ybIqf_95.js → cron-cli-OHSsCpVe.js} +16 -16
  71. package/dist/{daemon-cli-C5Tosclk.js → daemon-cli-B2UGyc5z.js} +19 -19
  72. package/dist/{daemon-cli-NZ84KRN8.js → daemon-cli-CO-1GTE_.js} +7 -7
  73. package/dist/daemon-cli.js +58 -1
  74. package/dist/{daemon-runtime-B9AywEma.js → daemon-runtime-BsUCg0Nr.js} +3 -3
  75. package/dist/{daemon-runtime-DpY6Y5qE.js → daemon-runtime-cGQoReHT.js} +1 -1
  76. package/dist/{deliver-BhezvxNA.js → deliver-CoAOvyW0.js} +4 -4
  77. package/dist/{deliver-BJn4EmMZ.js → deliver-DhQSpWQA.js} +4 -4
  78. package/dist/{deliver-B2p9Fke_.js → deliver-DvbZ8dp4.js} +6 -6
  79. package/dist/{deps-CBLy0fqA.js → deps-CCbWMWT4.js} +1 -1
  80. package/dist/{diagnostics-TXSvtpaq.js → diagnostics-CtqVmSaZ.js} +1 -1
  81. package/dist/{dispatcher-DG44QJKz.js → dispatcher-C4k9ABOv.js} +2 -2
  82. package/dist/{dispatcher-Bk0gFz4b.js → dispatcher-N_4IYF9I.js} +1 -1
  83. package/dist/{dns-cli-BklOUsrX.js → dns-cli-DJ8mwzgA.js} +2 -2
  84. package/dist/{dns-cli-Dq98107U.js → dns-cli-Dk48S2y7.js} +13 -13
  85. package/dist/{docs-cli-CehJ2v5M.js → docs-cli-BvBEqoCl.js} +7 -7
  86. package/dist/{doctor-Bto-K3wL.js → doctor-9cbiXykn.js} +24 -24
  87. package/dist/{doctor-DsRSWr6B.js → doctor-C_1WNQix.js} +40 -40
  88. package/dist/{doctor-completion-OQXTo6RG.js → doctor-completion-B1cKYcZj.js} +1 -1
  89. package/dist/{doctor-completion-B-SFdu-f.js → doctor-completion-D7uvGhAv.js} +3 -3
  90. package/dist/{doctor-config-flow-D0GgdMmi.js → doctor-config-flow-Bno6wZvG.js} +7 -7
  91. package/dist/{doctor-config-flow-CEkHIHe5.js → doctor-config-flow-rshwu4JS.js} +3 -3
  92. package/dist/entry.js +59 -2
  93. package/dist/{env-T3-raV4i.js → env-CLiKFfXU.js} +1 -1
  94. package/dist/{exec-DbnX_71w.js → exec-Bo7Vwe77.js} +1 -1
  95. package/dist/{exec-DnanRQle.js → exec-CEFTijVj.js} +1 -1
  96. package/dist/{exec-approvals-cli-B7hQEhGe.js → exec-approvals-cli-CRqO-FRn.js} +19 -19
  97. package/dist/{exec-approvals-cli-CcY7IQWQ.js → exec-approvals-cli-i_Bmu0zE.js} +4 -4
  98. package/dist/extensionAPI.js +227 -127
  99. package/dist/{gateway-cli-Buxz8Y2n.js → gateway-cli-CBmfvcpr.js} +99 -99
  100. package/dist/{gateway-cli-CEGPCQ_C.js → gateway-cli-CufIzw2K.js} +61 -61
  101. package/dist/{gateway-rpc-LkRV5joR.js → gateway-rpc-BX-Pz0j8.js} +3 -3
  102. package/dist/{gateway-rpc-De-TWFvD.js → gateway-rpc-BvqpdNqp.js} +1 -1
  103. package/dist/{gmail-setup-utils-B4oMbrOI.js → gmail-setup-utils-B-LgbK-5.js} +3 -3
  104. package/dist/{health-CMIY7xAI.js → health-BVBoq6jM.js} +14 -14
  105. package/dist/{health-DoGFlPcq.js → health-DKC8u4W8.js} +18 -18
  106. package/dist/{health-format-Ojy0hLp3.js → health-format-DHYaqzgj.js} +2 -2
  107. package/dist/{heartbeat-visibility-DuRmIKOk.js → heartbeat-visibility-CF3WzMM0.js} +1 -1
  108. package/dist/{heartbeat-visibility-BOyU9ccw.js → heartbeat-visibility-CUKC8xqZ.js} +1 -1
  109. package/dist/{help-format-BZ7j9sHT.js → help-format-mLYxJ3oD.js} +1 -1
  110. package/dist/{hooks-cli-B1NXXLxe.js → hooks-cli-BHO_BQFY.js} +36 -36
  111. package/dist/{hooks-cli-BuIU6v0Q.js → hooks-cli-kLrFK7pV.js} +57 -57
  112. package/dist/{hooks-status-DR_WkhpR.js → hooks-status-CfvVr6eJ.js} +3 -3
  113. package/dist/{image-ops-B7tKwzpV.js → image-ops-C_aRXc-7.js} +1 -1
  114. package/dist/index.js +69 -69
  115. package/dist/{installs-Drds9RDI.js → installs-DBvIs2By.js} +1 -1
  116. package/dist/{installs-BxZFjTKY.js → installs-DW-ErO4y.js} +5 -5
  117. package/dist/{lanes-4_8h1ZQO.js → lanes-CrNcoc6P.js} +208 -153
  118. package/dist/{lifecycle-core-CHv9wUhV.js → lifecycle-core-DWESti3N.js} +6 -6
  119. package/dist/{links-CziCxopc.js → links-C4Hwnnc9.js} +1 -1
  120. package/dist/llm-slug-generator.js +15 -15
  121. package/dist/{logging-Dwz0XtXm.js → logging-CnEuyIPZ.js} +1 -1
  122. package/dist/{login-BvRe8YZ9.js → login-CY9_XaLc.js} +7 -7
  123. package/dist/{login-DwP4KleZ.js → login-Dj6hCAFK.js} +5 -5
  124. package/dist/{login-DevThvtW.js → login-Ga69_Kio.js} +2 -2
  125. package/dist/{login-qr-FDWY-tu5.js → login-qr-BYeWGzxI.js} +12 -12
  126. package/dist/{login-qr-wnynuvLt.js → login-qr-DD1apkdT.js} +9 -9
  127. package/dist/{login-qr-BkpIGqae.js → login-qr-swgX7elR.js} +3 -3
  128. package/dist/{logs-cli-CiMRc2qL.js → logs-cli-D02oahhw.js} +4 -4
  129. package/dist/{logs-cli-CsfmPUwa.js → logs-cli-DAVu9h8p.js} +16 -16
  130. package/dist/{manager-ibNP7jE3.js → manager-CLAy-qOR.js} +10 -10
  131. package/dist/{manager-v4S80Br3.js → manager-DQPfk6Ea.js} +12 -12
  132. package/dist/{manager-j0ghUvcW.js → manager-yWxV2UI_.js} +5 -5
  133. package/dist/{manifest-registry-BiGCvMJ8.js → manifest-registry-BJat2nhC.js} +1 -1
  134. package/dist/{media-BLVMhFB3.js → media-IIqSkFpd.js} +2 -2
  135. package/dist/{memory-cli-DSWsPuub.js → memory-cli-B8AsIRG3.js} +7 -7
  136. package/dist/{memory-cli-Cl2n9UtH.js → memory-cli-bA70cVlm.js} +12 -12
  137. package/dist/{message-channel-DuxJGOJz.js → message-channel-C5I8UgGH.js} +1 -1
  138. package/dist/{model-auth-Ja4oelNH.js → model-auth-Be3_KahV.js} +2 -2
  139. package/dist/{model-auth-DVG37yXU.js → model-auth-DBHvPqaY.js} +4 -4
  140. package/dist/{model-auth-BKf-GZVK.js → model-auth-DYHjH-Oh.js} +3 -3
  141. package/dist/{model-selection-DT-L7bjC.js → model-selection-BuMFehML.js} +5 -2
  142. package/dist/{model-selection-BKFF7fDb.js → model-selection-DFbDH9o2.js} +4 -1
  143. package/dist/{model-selection-C2dAUmK_.js → model-selection-DRIxw3do.js} +5 -2
  144. package/dist/{models-BU0CytAy.js → models-B9jYbX5H.js} +39 -39
  145. package/dist/{node-cli-DcwOFcxq.js → node-cli-C_efNJ2B.js} +11 -11
  146. package/dist/{node-cli-CZuWFgpO.js → node-cli-ScPCT6uD.js} +28 -28
  147. package/dist/{node-service-Ds1r16VN.js → node-service-BCfZtWK_.js} +1 -1
  148. package/dist/{note-Daao-cv8.js → note-DjzS4Am4.js} +2 -2
  149. package/dist/{npm-registry-spec-fJIJ8GG5.js → npm-registry-spec-Opq9qQXl.js} +1 -1
  150. package/dist/{onboard-Dd5wJkeU.js → onboard-C7ZSJNCe.js} +10 -10
  151. package/dist/{onboard-c84IExbH.js → onboard-CJOJPctL.js} +17 -17
  152. package/dist/{onboard-channels-CCoMzCXV.js → onboard-channels-DSlUCvl1.js} +4 -4
  153. package/dist/{onboard-channels-DYr7fQZq.js → onboard-channels-DwPNXSwW.js} +9 -9
  154. package/dist/{onboard-helpers-BgsHO6fO.js → onboard-helpers-CU_S0_Kf.js} +10 -10
  155. package/dist/{onboard-helpers-BRp_xJvW.js → onboard-helpers-tkuUrdCB.js} +3 -3
  156. package/dist/{onboarding-192Oe9K6.js → onboarding-Caiq91Yz.js} +11 -11
  157. package/dist/{onboarding-BINruD5r.js → onboarding-DP2NlqhA.js} +20 -20
  158. package/dist/{outbound-RxegsVGB.js → outbound-B84phlQU.js} +4 -4
  159. package/dist/{outbound-BVSyNp-t.js → outbound-CKmmCVxJ.js} +2 -2
  160. package/dist/{outbound-BaBDhLp1.js → outbound-DKM-JeSH.js} +5 -5
  161. package/dist/{parse-timeout-C1INlSUG.js → parse-timeout-C59j-ev4.js} +2 -2
  162. package/dist/{parse-timeout-C8t_lmnL.js → parse-timeout-aZGyXXFz.js} +3 -3
  163. package/dist/{path-env-CsgLP0dy.js → path-env-cFxXrXB1.js} +1 -1
  164. package/dist/{paths-DybdJi5a.js → paths-CLxC7m0Z.js} +1 -1
  165. package/dist/{pi-auth-json-MH7vz0HI.js → pi-auth-json-DPoqstQN.js} +7 -7
  166. package/dist/{pi-auth-json-BY6wRDm0.js → pi-auth-json-DjxzPUt3.js} +2 -2
  167. package/dist/{pi-auth-json-BSLIRI41.js → pi-auth-json-hMxhauJ8.js} +6 -6
  168. package/dist/{pi-embedded-DJF_gfcQ.js → pi-embedded-JUmNmkTK.js} +218 -175
  169. package/dist/{pi-embedded-helpers-iju5zIIA.js → pi-embedded-helpers-B6wVA0hU.js} +1 -1
  170. package/dist/{tokens-DXjI-TIV.js → pi-embedded-helpers-B_Sx4G6d.js} +40 -30
  171. package/dist/{pi-tools.policy-Dtytaq21.js → pi-tools.policy-Bn9S3ywB.js} +3 -3
  172. package/dist/{pi-tools.policy-CN78I2yN.js → pi-tools.policy-ChzY9kW7.js} +7 -7
  173. package/dist/{plugin-auto-enable-DLrgOd4y.js → plugin-auto-enable-UE1XVFcw.js} +1 -1
  174. package/dist/{plugin-auto-enable-DIWd94Po.js → plugin-auto-enable-f05JE-GF.js} +5 -5
  175. package/dist/{plugin-registry-B0k-53-_.js → plugin-registry-BeB2L6Qe.js} +2 -2
  176. package/dist/{plugin-registry-CqUo-PU_.js → plugin-registry-DIXcynua.js} +4 -4
  177. package/dist/plugin-sdk/agents/anthropic-direct-runner.d.ts +1 -1
  178. package/dist/plugin-sdk/agents/tools/browser-tool.schema.d.ts +2 -2
  179. package/dist/plugin-sdk/gateway/protocol/index.d.ts +22 -22
  180. package/dist/plugin-sdk/index.js +75 -8
  181. package/dist/{plugins-C_GedoUi.js → plugins-DCXdhkeB.js} +2 -2
  182. package/dist/{plugins-BmYfBGLM.js → plugins-NbldDVJs.js} +1 -1
  183. package/dist/{plugins-cli-YjM8IsVo.js → plugins-cli-CzUD-ewi.js} +58 -58
  184. package/dist/{plugins-cli-BYLUFsjH.js → plugins-cli-Dk2W0fBT.js} +39 -39
  185. package/dist/{polls-Cuv4dsX_.js → polls-OzE9fR2s.js} +6 -6
  186. package/dist/{ports-Bv3sZ3bd.js → ports-COy7Yg_k.js} +1 -1
  187. package/dist/{ports-DOiSDgNp.js → ports-CWvYU8j6.js} +4 -4
  188. package/dist/{ports-BQ0cAsGj.js → ports-Cgow804e.js} +2 -2
  189. package/dist/{ports-BmSDzOHm.js → ports-DyX87qKc.js} +1 -1
  190. package/dist/{program-CG5u1KAB.js → program-DxItv_Ts.js} +42 -42
  191. package/dist/{program-context-Co2gkUS0.js → program-context-cgh8PMPD.js} +33 -33
  192. package/dist/{progress-BZZa-fXr.js → progress-DzZ_4Z4f.js} +1 -1
  193. package/dist/{prompt-style-1bwj7IzZ.js → prompt-style-C7WfXowC.js} +1 -1
  194. package/dist/{prompts-NvPXbNVc.js → prompts-BfHxhlF9.js} +1 -1
  195. package/dist/{prompts-DjKZfP5R.js → prompts-DH_nIROF.js} +5 -5
  196. package/dist/{pw-ai-CvxTpFmB.js → pw-ai-A7vggLw8.js} +3 -3
  197. package/dist/{pw-ai-BhoKfvvM.js → pw-ai-Bigm0Qwh.js} +7 -7
  198. package/dist/{pw-ai-C3j5kV3T.js → pw-ai-CsODxGt8.js} +3 -3
  199. package/dist/{qmd-manager-BGob_1OP.js → qmd-manager-C3z8LWKx.js} +6 -6
  200. package/dist/{qmd-manager-BDq5_dd6.js → qmd-manager-DQsAtmK7.js} +2 -2
  201. package/dist/{qmd-manager-BmGj4bZk.js → qmd-manager-lfhigvUf.js} +6 -6
  202. package/dist/{register.agent-WAjZHuZe.js → register.agent-BVwbjkKx.js} +45 -45
  203. package/dist/{register.agent-PbAKdlNK.js → register.agent-D0FKVD_s.js} +70 -70
  204. package/dist/{register.anima-CZNjkwJH.js → register.anima-Dc7OI2Nh.js} +4 -4
  205. package/dist/{register.anima-CDcnWfQF.js → register.anima-bys_cyEd.js} +4 -4
  206. package/dist/{register.configure-C2zfgyp9.js → register.configure-BrRG_RtB.js} +47 -47
  207. package/dist/register.configure-CXKr61Ka.js +108 -0
  208. package/dist/register.maintenance-BToHjam6.js +103 -0
  209. package/dist/{register.maintenance-DkF1Nu_y.js → register.maintenance-DXL3L0ip.js} +49 -49
  210. package/dist/{register.onboard-DiZzjEwz.js → register.onboard-B3hbdfaQ.js} +71 -71
  211. package/dist/{register.onboard-xOXNrMu-.js → register.onboard-Bg5zEb3f.js} +48 -48
  212. package/dist/{register.setup-BmbpgUVU.js → register.setup-CZqwphif.js} +48 -48
  213. package/dist/{register.setup-QAjNkIZr.js → register.setup-Cq8nqbrU.js} +71 -71
  214. package/dist/{register.status-health-sessions-RZxaVSa6.js → register.status-health-sessions-D1kjQUAc.js} +67 -67
  215. package/dist/{register.status-health-sessions-Cm-lxcT6.js → register.status-health-sessions-mdLJbfPN.js} +43 -43
  216. package/dist/{register.subclis-DCljHJ5a.js → register.subclis-mbYw7H-_.js} +20 -20
  217. package/dist/{reply-Dd3EmI4M.js → reply-CwV-5jE0.js} +56 -52
  218. package/dist/{reply-Bw4torMz.js → reply-DAGmjvs-.js} +44 -40
  219. package/dist/{reply-prefix-DIoRETAD.js → reply-prefix-BRsV1Eof.js} +2 -2
  220. package/dist/{reply-prefix-Dy_yxyCq.js → reply-prefix-CAsFNEP7.js} +2 -2
  221. package/dist/{routes-C2EyUA9x.js → routes-CYHrkIjB.js} +6 -6
  222. package/dist/{routes-CNSdZAkl.js → routes-cdfVFYMI.js} +4 -4
  223. package/dist/{run-DgtaDzEe.js → run-DE6EaeE3.js} +70 -70
  224. package/dist/{run--R4y3YlU.js → run-S0Cw3Fyy.js} +47 -47
  225. package/dist/{run-main-eUWh86lF.js → run-main-CCxXEvb7.js} +55 -55
  226. package/dist/{runtime-guard-B40AREJ_.js → runtime-guard-CNnLK4pn.js} +1 -1
  227. package/dist/{sandbox-BwUo1b0I.js → sandbox-B4-dXpqZ.js} +6 -6
  228. package/dist/{sandbox-BoNWDo4X.js → sandbox-DhcoWMaN.js} +2 -2
  229. package/dist/{sandbox-cli-D9-wZJ9M.js → sandbox-cli-DQMWPCOh.js} +24 -24
  230. package/dist/{sandbox-cli-lbp0TV67.js → sandbox-cli-TAuv3mTO.js} +12 -12
  231. package/dist/{security-cli-CX5uciKz.js → security-cli-Da-3YxZ4.js} +29 -29
  232. package/dist/{security-cli-CfvP5VqT.js → security-cli-Dc-NwTC2.js} +16 -16
  233. package/dist/{semantic-Buqqx7gZ.js → semantic-BlQgdb3-.js} +1 -1
  234. package/dist/{semantic-B4TOg4CK.js → semantic-VlSmVCfb.js} +1 -1
  235. package/dist/{server-context-IfJbmK25.js → server-context-C-usQ5Np.js} +7 -7
  236. package/dist/{server-context-efO1YgXk.js → server-context-r7wPe4ZD.js} +9 -9
  237. package/dist/{server-node-events-CFCwOP0n.js → server-node-events-3KeQAwUo.js} +23 -23
  238. package/dist/{server-node-events-BG4e9Ws7.js → server-node-events-GTSQEd_U.js} +36 -36
  239. package/dist/{service-D1idQeBv.js → service-DCVAkKlN.js} +1 -1
  240. package/dist/{service-audit-BzwV-IOi.js → service-audit-Crw1cAbj.js} +1 -1
  241. package/dist/{service-audit-BbwXAhsr.js → service-audit-DRIpsryX.js} +3 -3
  242. package/dist/{session-Dvwwi-Eb.js → session-CrGApVik.js} +1 -1
  243. package/dist/{session-skOcrvF2.js → session-D3BNUwtH.js} +1 -1
  244. package/dist/{session-DCGAvNG9.js → session-DKCUYHCS.js} +1 -1
  245. package/dist/{session-cost-usage-6bDLU9Pb.js → session-cost-usage-LvsvRW5g.js} +1 -1
  246. package/dist/{session-cost-usage-lLyz71EH.js → session-cost-usage-vltn5akf.js} +1 -1
  247. package/dist/{session-BjPdEBPh.js → session-mpOb9zFL.js} +5 -5
  248. package/dist/{sessions-kJgmpWtv.js → sessions-BduC6sZj.js} +78 -68
  249. package/dist/{sessions-C3bteMLZ.js → sessions-CAiEkTKb.js} +21 -11
  250. package/dist/{sessions-BZgIAOwH.js → sessions-DLPN62LD.js} +5 -5
  251. package/dist/{settings-cli-C9TMl9Ye.js → settings-cli-BgGYdH4N.js} +77 -77
  252. package/dist/{settings-cli-Cf0LCRjt.js → settings-cli-f0O0FUVO.js} +48 -48
  253. package/dist/{setup-token-DBwe6GDq.js → setup-token-lcjrc9sO.js} +28 -28
  254. package/dist/{setup-token-DTgSXfj7.js → setup-token-ykp60QVx.js} +18 -18
  255. package/dist/{shared-DC8lQHCt.js → shared-Ca0NTTF0.js} +3 -3
  256. package/dist/{shell-env-JzaPTLKV.js → shell-env-BZ_fIIlm.js} +1 -1
  257. package/dist/{shell-env-V934Ymrk.js → shell-env-DaSbgZYX.js} +1 -1
  258. package/dist/{skill-scanner-DPQDhVEr.js → skill-scanner--TxpCSNF.js} +1 -1
  259. package/dist/{skill-scanner-HQwt_KRF.js → skill-scanner-BzOYLFR8.js} +1 -1
  260. package/dist/{skills-cli-OYZS-U1f.js → skills-cli-BpyTvFkg.js} +16 -16
  261. package/dist/{skills-cli-CSMzc9am.js → skills-cli-Tm326cFx.js} +2 -2
  262. package/dist/{skills-install-BKz5WLq4.js → skills-install-B2m10oTm.js} +5 -5
  263. package/dist/{skills-install-CC63dOs4.js → skills-install-D_bxdc-6.js} +2 -2
  264. package/dist/{skills-status-B_umZ78Q.js → skills-status-D14GZ5WN.js} +3 -3
  265. package/dist/{skills-ppB3qrZU.js → skills-wS8aRGeO.js} +3 -3
  266. package/dist/{soul-DpWsWxOa.js → soul-CAEpnUkv.js} +1 -1
  267. package/dist/{soul-aZoR6Ctt.js → soul-D9EtC35X.js} +1 -1
  268. package/dist/{sqlite-CnVGUfhz.js → sqlite-B0rfPL8q.js} +2 -2
  269. package/dist/{sqlite-Duz1QJIT.js → sqlite-CR0WDTae.js} +2 -2
  270. package/dist/{sqlite-Co_lF3s-.js → sqlite-jyjat2Yt.js} +1 -1
  271. package/dist/start-DYq7cNRG.js +157 -0
  272. package/dist/{start-CHLGEHeF.js → start-Y69GZPdX.js} +58 -58
  273. package/dist/{status-BsCeWiLS.js → status-BplZv8_T.js} +2 -2
  274. package/dist/{status-D_FTGxBZ.js → status-K3LGPZeT.js} +4 -4
  275. package/dist/{status-CwjUrZ7a.js → status-Uzlo7BvY.js} +27 -27
  276. package/dist/{status-C4ZTdSwA.js → status-rt3tIYmL.js} +18 -18
  277. package/dist/{status.update-P6xyBet8.js → status.update-B61Emp_r.js} +3 -3
  278. package/dist/{status.update-Cx5l38lC.js → status.update-yjbKzlMn.js} +2 -2
  279. package/dist/{subagent-registry-7qo93ip8.js → subagent-registry-DfCDq9hk.js} +14 -14
  280. package/dist/{subagent-registry-EoZxIEKl.js → subagent-registry-ZIpC5W-9.js} +11 -11
  281. package/dist/{subagent-registry-hRt-aJnL.js → subagent-registry-xp5sYYzS.js} +16 -16
  282. package/dist/{subsystem-Cn6bJV8Z.js → subsystem-BMsbqSb4.js} +58 -1
  283. package/dist/{subsystem-WFp78xn1.js → subsystem-BP2l3SHn.js} +58 -1
  284. package/dist/{system-cli-Dbn4_ed8.js → system-cli-D-eyDWD6.js} +4 -4
  285. package/dist/{system-cli-lmslA_Ox.js → system-cli-Dy2Pwnbg.js} +15 -15
  286. package/dist/{systemd-DYPdTwok.js → systemd-DXo2A9_S.js} +2 -2
  287. package/dist/{systemd-hints-E8yYE8Q1.js → systemd-hints-DIjCA1An.js} +1 -1
  288. package/dist/{systemd-linger-CpWguZ4b.js → systemd-linger-DgB-ow-D.js} +2 -2
  289. package/dist/{table-B991ZwKi.js → table-C-GNQABy.js} +2 -2
  290. package/dist/{timeout-B0mCaCG5.js → timeout-Cl8rWNWO.js} +79 -24
  291. package/dist/{tokens-k_R7Y792.js → tokens-FGW_JgKz.js} +1 -1
  292. package/dist/{tool-images-DJZPwGqm.js → tool-images-Df50dvpv.js} +2 -2
  293. package/dist/{tool-images-BehEzEZF.js → tool-images-RiPaL7wQ.js} +2 -2
  294. package/dist/{tool-images-09hnvylP.js → tool-images-y_Ribdl6.js} +1 -1
  295. package/dist/{tui-PCTDV7Ct.js → tui-NlR4LFBm.js} +9 -9
  296. package/dist/{tui-LRoQ5xyx.js → tui-YsmTyq58.js} +4 -4
  297. package/dist/{tui-cli-DO_6-GWy.js → tui-cli-CSudxVpO.js} +17 -17
  298. package/dist/{tui-cli-D39zC_Ew.js → tui-cli-QnKj1We8.js} +28 -28
  299. package/dist/{update-tjMvDUCw.js → update-B2O46V_t.js} +3 -3
  300. package/dist/{update-DmVSt9s3.js → update-VFbS9X5L.js} +1 -1
  301. package/dist/{update-cli-CnYFvEud.js → update-cli-BXKL-v-n.js} +86 -86
  302. package/dist/{update-cli-jEzmvaqS.js → update-cli-BgQUtlLg.js} +54 -54
  303. package/dist/{update-runner-OPbRGUfX.js → update-runner-U2WcWGfd.js} +5 -5
  304. package/dist/{update-runner-IARYjXbS.js → update-runner-fvdM_Hip.js} +2 -2
  305. package/dist/{usage-BTc8TK3f.js → usage-CM-NiwBA.js} +9 -9
  306. package/dist/{utils-dWKYjULE.js → utils-B60lF9Wq.js} +1 -1
  307. package/dist/{web-kEraFv8s.js → web-B8r6MvXh.js} +41 -41
  308. package/dist/web-BzFhL5WI.js +67 -0
  309. package/dist/{web-Honf40Cm.js → web-eoSM6P0a.js} +39 -39
  310. package/dist/{webhooks-cli-CYbIJJF6.js → webhooks-cli-24A2CbXR.js} +2 -2
  311. package/dist/{webhooks-cli-oRmSfYdd.js → webhooks-cli-CgkxWcH5.js} +13 -13
  312. package/dist/{whatsapp-actions-I9RXDK_k.js → whatsapp-actions-BVlqbVgY.js} +8 -8
  313. package/dist/{whatsapp-actions-_BrQebuX.js → whatsapp-actions-BYxKWK0A.js} +12 -12
  314. package/dist/{whatsapp-actions-BB-Leqn2.js → whatsapp-actions-DagVwYC6.js} +17 -17
  315. package/dist/{widearea-dns-CkuHFBQy.js → widearea-dns-B1TTb1v5.js} +1 -1
  316. package/dist/{workspace-DOJssemp.js → workspace-Cvio8QlZ.js} +1 -1
  317. package/dist/{ws-log-B-xsUQys.js → ws-log-De7GACYn.js} +1 -1
  318. package/dist/{ws-CQYP0dWu.js → ws-sdRTa2sP.js} +1 -1
  319. package/package.json +1 -1
  320. package/dist/cli-CJfwHH_z.js +0 -104
  321. package/dist/config-cli-uk9vdQZH.js +0 -15
  322. package/dist/register.configure-CNhagtHN.js +0 -108
  323. package/dist/register.maintenance-DWJjWsIl.js +0 -103
  324. package/dist/start-B2DQAmEK.js +0 -157
  325. package/dist/web-u554zkLK.js +0 -67
  326. /package/dist/{auth-DK-0XxZU.js → auth-DuBZWd74.js} +0 -0
  327. /package/dist/{command-format-B1WxXbeU.js → command-format-UwAvxtMC.js} +0 -0
  328. /package/dist/{config-Qw5FwfRK.js → config-COtiNNtV.js} +0 -0
  329. /package/dist/{errors-B9FgVZ2s.js → errors-D6Vj_xs4.js} +0 -0
  330. /package/dist/{errors-DjZBTJJ3.js → errors-l_q3lLBC.js} +0 -0
  331. /package/dist/{file-lock-BRW4LeL0.js → file-lock-BFQVGKm5.js} +0 -0
  332. /package/dist/{image-ops-BsXjYj1e.js → image-ops-BVtm-rU-.js} +0 -0
  333. /package/dist/{input-provenance-B0pwc6mp.js → input-provenance-sPbZYo89.js} +0 -0
  334. /package/dist/{internal-hooks-CZOlj8zG.js → internal-hooks-CWw3Hgeu.js} +0 -0
  335. /package/dist/{paths-CxBUgtZS.js → paths-B_RPJLsn.js} +0 -0
  336. /package/dist/{paths-BvY3CbW0.js → paths-CnuAkdfx.js} +0 -0
  337. /package/dist/{pi-embedded-helpers-CWl0I3Qm.js → pi-embedded-helpers-Cxzk0pra.js} +0 -0
  338. /package/dist/{plugins-BDSP0cT6.js → plugins-CFBEoAN4.js} +0 -0
  339. /package/dist/{tailnet-CjJJHjPU.js → tailnet-CabhakZ7.js} +0 -0
  340. /package/dist/{tokens-QjoPADtG.js → tokens-DLpZ8RFH.js} +0 -0
  341. /package/dist/{transcript-events-DUQC5hbS.js → transcript-events-C1hdue6u.js} +0 -0
  342. /package/dist/{transcript-events-DdnTeoR1.js → transcript-events-CJRvASY_.js} +0 -0
@@ -4,13 +4,13 @@ import { c as escapeRegExp, d as isRecord, t as CONFIG_DIR, y as resolveUserPath
4
4
  import { n as runExec } from "./exec-BtBJICHE.js";
5
5
  import { t as resolveAnimaPackageRoot } from "./anima-root-CxtpOklc.js";
6
6
  import { C as loadWorkspaceBootstrapFiles, S as filterBootstrapFilesForSession, c as resolveDefaultAgentId, s as resolveAgentWorkspaceDir, u as resolveSessionAgentIds } from "./agent-scope-Dm8IL1Ks.js";
7
- import { f as resolveDefaultModelForAgent, m as resolveModelRefFromString, r as buildModelAliasIndex } from "./model-selection-BKFF7fDb.js";
7
+ import { f as resolveDefaultModelForAgent, m as resolveModelRefFromString, r as buildModelAliasIndex } from "./model-selection-DFbDH9o2.js";
8
8
  import { c as listDeliverableMessageChannels } from "./message-channel-DdOBO6Qm.js";
9
- import { C as resolveBootstrapTotalMaxChars, S as resolveBootstrapMaxChars, x as buildBootstrapContextFiles } from "./pi-embedded-helpers-CWl0I3Qm.js";
10
- import { c as getFileExtension, f as normalizeMimeType } from "./image-ops-BsXjYj1e.js";
11
- import { r as normalizeChannelId } from "./plugins-BDSP0cT6.js";
12
- import { n as SILENT_REPLY_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-QjoPADtG.js";
13
- import { r as requireApiKey, t as getApiKeyForModel } from "./model-auth-Ja4oelNH.js";
9
+ import { n as SILENT_REPLY_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-DLpZ8RFH.js";
10
+ import { C as resolveBootstrapTotalMaxChars, S as resolveBootstrapMaxChars, x as buildBootstrapContextFiles } from "./pi-embedded-helpers-Cxzk0pra.js";
11
+ import { c as getFileExtension, f as normalizeMimeType } from "./image-ops-BVtm-rU-.js";
12
+ import { r as normalizeChannelId } from "./plugins-CFBEoAN4.js";
13
+ import { r as requireApiKey, t as getApiKeyForModel } from "./model-auth-Be3_KahV.js";
14
14
  import { execSync, spawn } from "node:child_process";
15
15
  import os, { tmpdir } from "node:os";
16
16
  import path from "node:path";
@@ -20,69 +20,123 @@ import crypto from "node:crypto";
20
20
  import { completeSimple } from "@mariozechner/pi-ai";
21
21
  import { EdgeTTS } from "node-edge-tts";
22
22
 
23
- //#region src/logging/redact-identifier.ts
24
- function sha256HexPrefix(value, len = 12) {
25
- const safeLen = Number.isFinite(len) ? Math.max(1, Math.floor(len)) : 12;
26
- return crypto.createHash("sha256").update(value).digest("hex").slice(0, safeLen);
23
+ //#region src/auto-reply/heartbeat.ts
24
+ const HEARTBEAT_PROMPT = "Read HEARTBEAT.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply HEARTBEAT_OK.";
25
+ const DEFAULT_HEARTBEAT_EVERY = "30m";
26
+ const DEFAULT_HEARTBEAT_ACK_MAX_CHARS = 300;
27
+ /**
28
+ * Check if HEARTBEAT.md content is "effectively empty" - meaning it has no actionable tasks.
29
+ * This allows skipping heartbeat API calls when no tasks are configured.
30
+ *
31
+ * A file is considered effectively empty if it contains only:
32
+ * - Whitespace
33
+ * - Comment lines (lines starting with #)
34
+ * - Empty lines
35
+ *
36
+ * Note: A missing file returns false (not effectively empty) so the LLM can still
37
+ * decide what to do. This function is only for when the file exists but has no content.
38
+ */
39
+ function isHeartbeatContentEffectivelyEmpty(content) {
40
+ if (content === void 0 || content === null) return false;
41
+ if (typeof content !== "string") return false;
42
+ const lines = content.split("\n");
43
+ for (const line of lines) {
44
+ const trimmed = line.trim();
45
+ if (!trimmed) continue;
46
+ if (/^#+(\s|$)/.test(trimmed)) continue;
47
+ if (/^[-*+]\s*(\[[\sXx]?\]\s*)?$/.test(trimmed)) continue;
48
+ return false;
49
+ }
50
+ return true;
27
51
  }
28
- function redactIdentifier(value, opts) {
29
- const trimmed = value?.trim();
30
- if (!trimmed) return "-";
31
- return `sha256:${sha256HexPrefix(trimmed, opts?.len ?? 12)}`;
52
+ function resolveHeartbeatPrompt(raw) {
53
+ return (typeof raw === "string" ? raw.trim() : "") || HEARTBEAT_PROMPT;
32
54
  }
33
-
34
- //#endregion
35
- //#region src/agents/workspace-run.ts
36
- function resolveRunAgentId(params) {
37
- const rawSessionKey = params.sessionKey?.trim() ?? "";
38
- const shape = classifySessionKeyShape(rawSessionKey);
39
- if (shape === "malformed_agent") throw new Error("Malformed agent session key; refusing workspace resolution.");
40
- const explicit = typeof params.agentId === "string" && params.agentId.trim() ? normalizeAgentId(params.agentId) : void 0;
41
- if (explicit) return {
42
- agentId: explicit,
43
- agentIdSource: "explicit"
44
- };
45
- const defaultAgentId = resolveDefaultAgentId(params.config ?? {});
46
- if (shape === "missing" || shape === "legacy_or_alias") return {
47
- agentId: defaultAgentId || DEFAULT_AGENT_ID,
48
- agentIdSource: "default"
55
+ function stripTokenAtEdges(raw) {
56
+ let text = raw.trim();
57
+ if (!text) return {
58
+ text: "",
59
+ didStrip: false
49
60
  };
50
- const parsed = parseAgentSessionKey(rawSessionKey);
51
- if (parsed?.agentId) return {
52
- agentId: normalizeAgentId(parsed.agentId),
53
- agentIdSource: "session_key"
61
+ const token = HEARTBEAT_TOKEN;
62
+ const tokenAtEndWithOptionalTrailingPunctuation = new RegExp(`${escapeRegExp(token)}[^\\w]{0,4}$`);
63
+ if (!text.includes(token)) return {
64
+ text,
65
+ didStrip: false
54
66
  };
67
+ let didStrip = false;
68
+ let changed = true;
69
+ while (changed) {
70
+ changed = false;
71
+ const next = text.trim();
72
+ if (next.startsWith(token)) {
73
+ text = next.slice(token.length).trimStart();
74
+ didStrip = true;
75
+ changed = true;
76
+ continue;
77
+ }
78
+ if (tokenAtEndWithOptionalTrailingPunctuation.test(next)) {
79
+ const idx = next.lastIndexOf(token);
80
+ const before = next.slice(0, idx).trimEnd();
81
+ if (!before) text = "";
82
+ else text = `${before}${next.slice(idx + token.length).trimStart()}`.trimEnd();
83
+ didStrip = true;
84
+ changed = true;
85
+ }
86
+ }
55
87
  return {
56
- agentId: defaultAgentId || DEFAULT_AGENT_ID,
57
- agentIdSource: "default"
88
+ text: text.replace(/\s+/g, " ").trim(),
89
+ didStrip
58
90
  };
59
91
  }
60
- function redactRunIdentifier(value) {
61
- return redactIdentifier(value, { len: 12 });
62
- }
63
- function resolveRunWorkspaceDir(params) {
64
- const requested = params.workspaceDir;
65
- const { agentId, agentIdSource } = resolveRunAgentId({
66
- sessionKey: params.sessionKey,
67
- agentId: params.agentId,
68
- config: params.config
69
- });
70
- if (typeof requested === "string") {
71
- const trimmed = requested.trim();
72
- if (trimmed) return {
73
- workspaceDir: resolveUserPath(trimmed),
74
- usedFallback: false,
75
- agentId,
76
- agentIdSource
92
+ function stripHeartbeatToken(raw, opts = {}) {
93
+ if (!raw) return {
94
+ shouldSkip: true,
95
+ text: "",
96
+ didStrip: false
97
+ };
98
+ const trimmed = raw.trim();
99
+ if (!trimmed) return {
100
+ shouldSkip: true,
101
+ text: "",
102
+ didStrip: false
103
+ };
104
+ const mode = opts.mode ?? "message";
105
+ const maxAckCharsRaw = opts.maxAckChars;
106
+ const parsedAckChars = typeof maxAckCharsRaw === "string" ? Number(maxAckCharsRaw) : maxAckCharsRaw;
107
+ const maxAckChars = Math.max(0, typeof parsedAckChars === "number" && Number.isFinite(parsedAckChars) ? parsedAckChars : DEFAULT_HEARTBEAT_ACK_MAX_CHARS);
108
+ const stripMarkup = (text) => text.replace(/<[^>]*>/g, " ").replace(/&nbsp;/gi, " ").replace(/^[*`~_]+/, "").replace(/[*`~_]+$/, "");
109
+ const trimmedNormalized = stripMarkup(trimmed);
110
+ if (!(trimmed.includes(HEARTBEAT_TOKEN) || trimmedNormalized.includes(HEARTBEAT_TOKEN))) return {
111
+ shouldSkip: false,
112
+ text: trimmed,
113
+ didStrip: false
114
+ };
115
+ const strippedOriginal = stripTokenAtEdges(trimmed);
116
+ const strippedNormalized = stripTokenAtEdges(trimmedNormalized);
117
+ const picked = strippedOriginal.didStrip && strippedOriginal.text ? strippedOriginal : strippedNormalized;
118
+ if (!picked.didStrip) return {
119
+ shouldSkip: false,
120
+ text: trimmed,
121
+ didStrip: false
122
+ };
123
+ if (!picked.text) return {
124
+ shouldSkip: true,
125
+ text: "",
126
+ didStrip: true
127
+ };
128
+ const rest = picked.text.trim();
129
+ if (mode === "heartbeat") {
130
+ if (rest.length <= maxAckChars) return {
131
+ shouldSkip: true,
132
+ text: "",
133
+ didStrip: true
77
134
  };
78
135
  }
79
- const fallbackReason = requested == null ? "missing" : typeof requested === "string" ? "blank" : "invalid_type";
80
136
  return {
81
- workspaceDir: resolveUserPath(resolveAgentWorkspaceDir(params.config ?? {}, agentId)),
82
- usedFallback: true,
83
- fallbackReason,
84
- agentId,
85
- agentIdSource
137
+ shouldSkip: false,
138
+ text: rest,
139
+ didStrip: true
86
140
  };
87
141
  }
88
142
 
@@ -208,145 +262,6 @@ async function resolveBootstrapContextForRun(params) {
208
262
  };
209
263
  }
210
264
 
211
- //#endregion
212
- //#region src/auto-reply/heartbeat.ts
213
- const HEARTBEAT_PROMPT = "Read HEARTBEAT.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply HEARTBEAT_OK.";
214
- const DEFAULT_HEARTBEAT_EVERY = "30m";
215
- const DEFAULT_HEARTBEAT_ACK_MAX_CHARS = 300;
216
- /**
217
- * Check if HEARTBEAT.md content is "effectively empty" - meaning it has no actionable tasks.
218
- * This allows skipping heartbeat API calls when no tasks are configured.
219
- *
220
- * A file is considered effectively empty if it contains only:
221
- * - Whitespace
222
- * - Comment lines (lines starting with #)
223
- * - Empty lines
224
- *
225
- * Note: A missing file returns false (not effectively empty) so the LLM can still
226
- * decide what to do. This function is only for when the file exists but has no content.
227
- */
228
- function isHeartbeatContentEffectivelyEmpty(content) {
229
- if (content === void 0 || content === null) return false;
230
- if (typeof content !== "string") return false;
231
- const lines = content.split("\n");
232
- for (const line of lines) {
233
- const trimmed = line.trim();
234
- if (!trimmed) continue;
235
- if (/^#+(\s|$)/.test(trimmed)) continue;
236
- if (/^[-*+]\s*(\[[\sXx]?\]\s*)?$/.test(trimmed)) continue;
237
- return false;
238
- }
239
- return true;
240
- }
241
- function resolveHeartbeatPrompt(raw) {
242
- return (typeof raw === "string" ? raw.trim() : "") || HEARTBEAT_PROMPT;
243
- }
244
- function stripTokenAtEdges(raw) {
245
- let text = raw.trim();
246
- if (!text) return {
247
- text: "",
248
- didStrip: false
249
- };
250
- const token = HEARTBEAT_TOKEN;
251
- const tokenAtEndWithOptionalTrailingPunctuation = new RegExp(`${escapeRegExp(token)}[^\\w]{0,4}$`);
252
- if (!text.includes(token)) return {
253
- text,
254
- didStrip: false
255
- };
256
- let didStrip = false;
257
- let changed = true;
258
- while (changed) {
259
- changed = false;
260
- const next = text.trim();
261
- if (next.startsWith(token)) {
262
- text = next.slice(token.length).trimStart();
263
- didStrip = true;
264
- changed = true;
265
- continue;
266
- }
267
- if (tokenAtEndWithOptionalTrailingPunctuation.test(next)) {
268
- const idx = next.lastIndexOf(token);
269
- const before = next.slice(0, idx).trimEnd();
270
- if (!before) text = "";
271
- else text = `${before}${next.slice(idx + token.length).trimStart()}`.trimEnd();
272
- didStrip = true;
273
- changed = true;
274
- }
275
- }
276
- return {
277
- text: text.replace(/\s+/g, " ").trim(),
278
- didStrip
279
- };
280
- }
281
- function stripHeartbeatToken(raw, opts = {}) {
282
- if (!raw) return {
283
- shouldSkip: true,
284
- text: "",
285
- didStrip: false
286
- };
287
- const trimmed = raw.trim();
288
- if (!trimmed) return {
289
- shouldSkip: true,
290
- text: "",
291
- didStrip: false
292
- };
293
- const mode = opts.mode ?? "message";
294
- const maxAckCharsRaw = opts.maxAckChars;
295
- const parsedAckChars = typeof maxAckCharsRaw === "string" ? Number(maxAckCharsRaw) : maxAckCharsRaw;
296
- const maxAckChars = Math.max(0, typeof parsedAckChars === "number" && Number.isFinite(parsedAckChars) ? parsedAckChars : DEFAULT_HEARTBEAT_ACK_MAX_CHARS);
297
- const stripMarkup = (text) => text.replace(/<[^>]*>/g, " ").replace(/&nbsp;/gi, " ").replace(/^[*`~_]+/, "").replace(/[*`~_]+$/, "");
298
- const trimmedNormalized = stripMarkup(trimmed);
299
- if (!(trimmed.includes(HEARTBEAT_TOKEN) || trimmedNormalized.includes(HEARTBEAT_TOKEN))) return {
300
- shouldSkip: false,
301
- text: trimmed,
302
- didStrip: false
303
- };
304
- const strippedOriginal = stripTokenAtEdges(trimmed);
305
- const strippedNormalized = stripTokenAtEdges(trimmedNormalized);
306
- const picked = strippedOriginal.didStrip && strippedOriginal.text ? strippedOriginal : strippedNormalized;
307
- if (!picked.didStrip) return {
308
- shouldSkip: false,
309
- text: trimmed,
310
- didStrip: false
311
- };
312
- if (!picked.text) return {
313
- shouldSkip: true,
314
- text: "",
315
- didStrip: true
316
- };
317
- const rest = picked.text.trim();
318
- if (mode === "heartbeat") {
319
- if (rest.length <= maxAckChars) return {
320
- shouldSkip: true,
321
- text: "",
322
- didStrip: true
323
- };
324
- }
325
- return {
326
- shouldSkip: false,
327
- text: rest,
328
- didStrip: true
329
- };
330
- }
331
-
332
- //#endregion
333
- //#region src/agents/docs-path.ts
334
- async function resolveAnimaDocsPath(params) {
335
- const workspaceDir = params.workspaceDir?.trim();
336
- if (workspaceDir) {
337
- const workspaceDocs = path.join(workspaceDir, "docs");
338
- if (fs.existsSync(workspaceDocs)) return workspaceDocs;
339
- }
340
- const packageRoot = await resolveAnimaPackageRoot({
341
- cwd: params.cwd,
342
- argv1: params.argv1,
343
- moduleUrl: params.moduleUrl
344
- });
345
- if (!packageRoot) return null;
346
- const packageDocs = path.join(packageRoot, "docs");
347
- return fs.existsSync(packageDocs) ? packageDocs : null;
348
- }
349
-
350
265
  //#endregion
351
266
  //#region src/media/audio.ts
352
267
  const TELEGRAM_VOICE_AUDIO_EXTENSIONS = new Set([
@@ -2578,20 +2493,93 @@ function buildCliArgs(params) {
2578
2493
  return args;
2579
2494
  }
2580
2495
 
2496
+ //#endregion
2497
+ //#region src/agents/docs-path.ts
2498
+ async function resolveAnimaDocsPath(params) {
2499
+ const workspaceDir = params.workspaceDir?.trim();
2500
+ if (workspaceDir) {
2501
+ const workspaceDocs = path.join(workspaceDir, "docs");
2502
+ if (fs.existsSync(workspaceDocs)) return workspaceDocs;
2503
+ }
2504
+ const packageRoot = await resolveAnimaPackageRoot({
2505
+ cwd: params.cwd,
2506
+ argv1: params.argv1,
2507
+ moduleUrl: params.moduleUrl
2508
+ });
2509
+ if (!packageRoot) return null;
2510
+ const packageDocs = path.join(packageRoot, "docs");
2511
+ return fs.existsSync(packageDocs) ? packageDocs : null;
2512
+ }
2513
+
2514
+ //#endregion
2515
+ //#region src/logging/redact-identifier.ts
2516
+ function sha256HexPrefix(value, len = 12) {
2517
+ const safeLen = Number.isFinite(len) ? Math.max(1, Math.floor(len)) : 12;
2518
+ return crypto.createHash("sha256").update(value).digest("hex").slice(0, safeLen);
2519
+ }
2520
+ function redactIdentifier(value, opts) {
2521
+ const trimmed = value?.trim();
2522
+ if (!trimmed) return "-";
2523
+ return `sha256:${sha256HexPrefix(trimmed, opts?.len ?? 12)}`;
2524
+ }
2525
+
2526
+ //#endregion
2527
+ //#region src/agents/workspace-run.ts
2528
+ function resolveRunAgentId(params) {
2529
+ const rawSessionKey = params.sessionKey?.trim() ?? "";
2530
+ const shape = classifySessionKeyShape(rawSessionKey);
2531
+ if (shape === "malformed_agent") throw new Error("Malformed agent session key; refusing workspace resolution.");
2532
+ const explicit = typeof params.agentId === "string" && params.agentId.trim() ? normalizeAgentId(params.agentId) : void 0;
2533
+ if (explicit) return {
2534
+ agentId: explicit,
2535
+ agentIdSource: "explicit"
2536
+ };
2537
+ const defaultAgentId = resolveDefaultAgentId(params.config ?? {});
2538
+ if (shape === "missing" || shape === "legacy_or_alias") return {
2539
+ agentId: defaultAgentId || DEFAULT_AGENT_ID,
2540
+ agentIdSource: "default"
2541
+ };
2542
+ const parsed = parseAgentSessionKey(rawSessionKey);
2543
+ if (parsed?.agentId) return {
2544
+ agentId: normalizeAgentId(parsed.agentId),
2545
+ agentIdSource: "session_key"
2546
+ };
2547
+ return {
2548
+ agentId: defaultAgentId || DEFAULT_AGENT_ID,
2549
+ agentIdSource: "default"
2550
+ };
2551
+ }
2552
+ function redactRunIdentifier(value) {
2553
+ return redactIdentifier(value, { len: 12 });
2554
+ }
2555
+ function resolveRunWorkspaceDir(params) {
2556
+ const requested = params.workspaceDir;
2557
+ const { agentId, agentIdSource } = resolveRunAgentId({
2558
+ sessionKey: params.sessionKey,
2559
+ agentId: params.agentId,
2560
+ config: params.config
2561
+ });
2562
+ if (typeof requested === "string") {
2563
+ const trimmed = requested.trim();
2564
+ if (trimmed) return {
2565
+ workspaceDir: resolveUserPath(trimmed),
2566
+ usedFallback: false,
2567
+ agentId,
2568
+ agentIdSource
2569
+ };
2570
+ }
2571
+ const fallbackReason = requested == null ? "missing" : typeof requested === "string" ? "blank" : "invalid_type";
2572
+ return {
2573
+ workspaceDir: resolveUserPath(resolveAgentWorkspaceDir(params.config ?? {}, agentId)),
2574
+ usedFallback: true,
2575
+ fallbackReason,
2576
+ agentId,
2577
+ agentIdSource
2578
+ };
2579
+ }
2580
+
2581
2581
  //#endregion
2582
2582
  //#region src/agents/anthropic-direct-runner.ts
2583
- /**
2584
- * Anthropic Direct API Runner
2585
- *
2586
- * Makes calls directly to api.anthropic.com without needing the claude CLI
2587
- * binary to be installed or logged in. Works with any valid token:
2588
- *
2589
- * sk-ant-api01-... (Console API key)
2590
- * sk-ant-oat01-... (Claude Code OAuth access token)
2591
- *
2592
- * This runner is automatically used when an `anthropic:default` token credential
2593
- * is present in the auth store and the claude CLI is unavailable or not logged in.
2594
- */
2595
2583
  const log = createSubsystemLogger("agent/anthropic-direct");
2596
2584
  const MODEL_MAP = {
2597
2585
  opus: "claude-opus-4-5",
@@ -2762,10 +2750,10 @@ async function runAnthropicDirectAgent(params) {
2762
2750
  provider: "anthropic",
2763
2751
  model: resolvedModel,
2764
2752
  usage: {
2765
- inputTokens,
2766
- outputTokens,
2767
- cacheCreationInputTokens: 0,
2768
- cacheReadInputTokens: 0
2753
+ input: inputTokens,
2754
+ output: outputTokens,
2755
+ cacheWrite: 0,
2756
+ cacheRead: 0
2769
2757
  }
2770
2758
  }
2771
2759
  }
@@ -2825,4 +2813,4 @@ async function testAnthropicToken(token) {
2825
2813
  }
2826
2814
 
2827
2815
  //#endregion
2828
- export { resolveHeartbeatPrompt as $, isTtsProviderConfigured as A, setTtsEnabled as B, sanitizeBinaryOutput as C, getTtsProvider as D, getTtsMaxLength as E, resolveTtsConfig as F, OPENAI_TTS_MODELS as G, setTtsProvider as H, resolveTtsPrefsPath as I, isVoiceCompatibleAudio as J, OPENAI_TTS_VOICES as K, resolveTtsProviderOrder as L, normalizeTtsAutoMode as M, resolveTtsApiKey as N, isSummarizationEnabled as O, resolveTtsAutoMode as P, isHeartbeatContentEffectivelyEmpty as Q, setLastTtsAttempt as R, killProcessTree as S, getLastTtsAttempt as T, textToSpeech as U, setTtsMaxLength as V, textToSpeechTelephony as W, DEFAULT_HEARTBEAT_ACK_MAX_CHARS as X, resolveAnimaDocsPath as Y, DEFAULT_HEARTBEAT_EVERY as Z, buildSystemPromptParams as _, buildSystemPrompt as a, registerInternalHook as at, resolveUserTimezone as b, enqueueCliRun as c, resolveRunWorkspaceDir as ct, parseCliJsonl as d, stripHeartbeatToken as et, resolvePromptInput as f, buildAgentSystemPrompt as g, writeCliImages as h, buildCliArgs as i, createInternalHookEvent as it, maybeApplyTtsToPayload as j, isTtsEnabled as k, normalizeCliModel as l, sha256HexPrefix as lt, resolveSystemPromptUsage as m, testAnthropicToken as n, resolveBootstrapContextForRun as nt, cleanupResumeProcesses as o, triggerInternalHook as ot, resolveSessionIdToSend as p, resolveModel$1 as q, appendImagePathsToPrompt as r, clearInternalHooks as rt, cleanupSuspendedCliProcesses as s, redactRunIdentifier as st, runAnthropicDirectAgent as t, makeBootstrapWarn as tt, parseCliJson as u, formatUserTime as v, buildTtsSystemPromptHint as w, getShellConfig as x, resolveUserTimeFormat as y, setSummarizationEnabled as z };
2816
+ export { makeBootstrapWarn as $, getTtsMaxLength as A, resolveTtsPrefsPath as B, resolveUserTimeFormat as C, sanitizeBinaryOutput as D, killProcessTree as E, maybeApplyTtsToPayload as F, setTtsMaxLength as G, setLastTtsAttempt as H, normalizeTtsAutoMode as I, textToSpeechTelephony as J, setTtsProvider as K, resolveTtsApiKey as L, isSummarizationEnabled as M, isTtsEnabled as N, buildTtsSystemPromptHint as O, isTtsProviderConfigured as P, isVoiceCompatibleAudio as Q, resolveTtsAutoMode as R, formatUserTime as S, getShellConfig as T, setSummarizationEnabled as U, resolveTtsProviderOrder as V, setTtsEnabled as W, OPENAI_TTS_VOICES as X, OPENAI_TTS_MODELS as Y, resolveModel$1 as Z, resolveSessionIdToSend as _, sha256HexPrefix as a, DEFAULT_HEARTBEAT_ACK_MAX_CHARS as at, buildAgentSystemPrompt as b, buildCliArgs as c, resolveHeartbeatPrompt as ct, cleanupSuspendedCliProcesses as d, resolveBootstrapContextForRun as et, enqueueCliRun as f, resolvePromptInput as g, parseCliJsonl as h, resolveRunWorkspaceDir as i, triggerInternalHook as it, getTtsProvider as j, getLastTtsAttempt as k, buildSystemPrompt as l, stripHeartbeatToken as lt, parseCliJson as m, testAnthropicToken as n, createInternalHookEvent as nt, resolveAnimaDocsPath as o, DEFAULT_HEARTBEAT_EVERY as ot, normalizeCliModel as p, textToSpeech as q, redactRunIdentifier as r, registerInternalHook as rt, appendImagePathsToPrompt as s, isHeartbeatContentEffectivelyEmpty as st, runAnthropicDirectAgent as t, clearInternalHooks as tt, cleanupResumeProcesses as u, resolveSystemPromptUsage as v, resolveUserTimezone as w, buildSystemPromptParams as x, writeCliImages as y, resolveTtsConfig as z };