@noxsoft/anima 5.0.2 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (350) 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 +4 -4
  28. package/dist/bundled/session-memory/handler.js +15 -15
  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-C2OzDE22.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-DhbIrk13.js → completion-cli-BjGTEn0-.js} +3 -3
  54. package/dist/{completion-cli-Ci_MzRm6.js → completion-cli-Dafpu0xU.js} +2 -2
  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/control-ui/assets/{index-T9qO6Dye.js → index-qmVN_9qV.js} +2 -2
  70. package/dist/control-ui/assets/{index-T9qO6Dye.js.map → index-qmVN_9qV.js.map} +1 -1
  71. package/dist/control-ui/index.html +1 -1
  72. package/dist/{cron-cli-3QY_K0l_.js → cron-cli-BglUapfu.js} +5 -5
  73. package/dist/{cron-cli-ybIqf_95.js → cron-cli-OHSsCpVe.js} +16 -16
  74. package/dist/{daemon-cli-C5Tosclk.js → daemon-cli-B2UGyc5z.js} +19 -19
  75. package/dist/{daemon-cli-NZ84KRN8.js → daemon-cli-CO-1GTE_.js} +7 -7
  76. package/dist/daemon-cli.js +58 -1
  77. package/dist/{daemon-runtime-B9AywEma.js → daemon-runtime-BsUCg0Nr.js} +3 -3
  78. package/dist/{daemon-runtime-DpY6Y5qE.js → daemon-runtime-cGQoReHT.js} +1 -1
  79. package/dist/{deliver-BhezvxNA.js → deliver-CoAOvyW0.js} +4 -4
  80. package/dist/{deliver-BJn4EmMZ.js → deliver-DhQSpWQA.js} +4 -4
  81. package/dist/{deliver-B2p9Fke_.js → deliver-DvbZ8dp4.js} +6 -6
  82. package/dist/{deps-CBLy0fqA.js → deps-CCbWMWT4.js} +1 -1
  83. package/dist/{diagnostics-TXSvtpaq.js → diagnostics-CtqVmSaZ.js} +1 -1
  84. package/dist/{dispatcher-DG44QJKz.js → dispatcher-C4k9ABOv.js} +2 -2
  85. package/dist/{dispatcher-Bk0gFz4b.js → dispatcher-N_4IYF9I.js} +1 -1
  86. package/dist/{dns-cli-BklOUsrX.js → dns-cli-DJ8mwzgA.js} +2 -2
  87. package/dist/{dns-cli-Dq98107U.js → dns-cli-Dk48S2y7.js} +13 -13
  88. package/dist/{docs-cli-CehJ2v5M.js → docs-cli-BvBEqoCl.js} +7 -7
  89. package/dist/{doctor-DsRSWr6B.js → doctor-C60p9Wb-.js} +40 -40
  90. package/dist/{doctor-Bto-K3wL.js → doctor-DUc-8AEz.js} +24 -24
  91. package/dist/{doctor-completion-B-SFdu-f.js → doctor-completion-BByLPJCm.js} +3 -3
  92. package/dist/{doctor-completion-OQXTo6RG.js → doctor-completion-hJ6FS0xQ.js} +1 -1
  93. package/dist/{doctor-config-flow-D0GgdMmi.js → doctor-config-flow-Bno6wZvG.js} +7 -7
  94. package/dist/{doctor-config-flow-CEkHIHe5.js → doctor-config-flow-rshwu4JS.js} +3 -3
  95. package/dist/{engine-634ModrT.js → engine-BUfB6LK8.js} +174 -1
  96. package/dist/{engine-CQSXA0CY.js → engine-CILiNnsV.js} +174 -1
  97. package/dist/entry.js +59 -2
  98. package/dist/{env-T3-raV4i.js → env-CLiKFfXU.js} +1 -1
  99. package/dist/{exec-DbnX_71w.js → exec-Bo7Vwe77.js} +1 -1
  100. package/dist/{exec-DnanRQle.js → exec-CEFTijVj.js} +1 -1
  101. package/dist/{exec-approvals-cli-B7hQEhGe.js → exec-approvals-cli-CRqO-FRn.js} +19 -19
  102. package/dist/{exec-approvals-cli-CcY7IQWQ.js → exec-approvals-cli-i_Bmu0zE.js} +4 -4
  103. package/dist/extensionAPI.js +227 -127
  104. package/dist/{gateway-cli-CEGPCQ_C.js → gateway-cli-CIyCKLlw.js} +61 -61
  105. package/dist/{gateway-cli-Buxz8Y2n.js → gateway-cli-EWjMWXQ8.js} +99 -99
  106. package/dist/{gateway-rpc-LkRV5joR.js → gateway-rpc-BX-Pz0j8.js} +3 -3
  107. package/dist/{gateway-rpc-De-TWFvD.js → gateway-rpc-BvqpdNqp.js} +1 -1
  108. package/dist/{gmail-setup-utils-B4oMbrOI.js → gmail-setup-utils-B-LgbK-5.js} +3 -3
  109. package/dist/{health-CMIY7xAI.js → health-BVBoq6jM.js} +14 -14
  110. package/dist/{health-DoGFlPcq.js → health-DKC8u4W8.js} +18 -18
  111. package/dist/{health-format-Ojy0hLp3.js → health-format-DHYaqzgj.js} +2 -2
  112. package/dist/{heartbeat-visibility-DuRmIKOk.js → heartbeat-visibility-CF3WzMM0.js} +1 -1
  113. package/dist/{heartbeat-visibility-BOyU9ccw.js → heartbeat-visibility-CUKC8xqZ.js} +1 -1
  114. package/dist/{help-format-BZ7j9sHT.js → help-format-mLYxJ3oD.js} +1 -1
  115. package/dist/{hooks-cli-B1NXXLxe.js → hooks-cli-BHO_BQFY.js} +36 -36
  116. package/dist/{hooks-cli-BuIU6v0Q.js → hooks-cli-kLrFK7pV.js} +57 -57
  117. package/dist/{hooks-status-DR_WkhpR.js → hooks-status-CfvVr6eJ.js} +3 -3
  118. package/dist/{image-ops-B7tKwzpV.js → image-ops-C_aRXc-7.js} +1 -1
  119. package/dist/index.js +69 -69
  120. package/dist/{installs-Drds9RDI.js → installs-DBvIs2By.js} +1 -1
  121. package/dist/{installs-BxZFjTKY.js → installs-DW-ErO4y.js} +5 -5
  122. package/dist/{lanes-4_8h1ZQO.js → lanes-CrNcoc6P.js} +208 -153
  123. package/dist/{lifecycle-core-CHv9wUhV.js → lifecycle-core-DWESti3N.js} +6 -6
  124. package/dist/{links-CziCxopc.js → links-C4Hwnnc9.js} +1 -1
  125. package/dist/llm-slug-generator.js +15 -15
  126. package/dist/{logging-Dwz0XtXm.js → logging-CnEuyIPZ.js} +1 -1
  127. package/dist/{login-BvRe8YZ9.js → login-CY9_XaLc.js} +7 -7
  128. package/dist/{login-DwP4KleZ.js → login-Dj6hCAFK.js} +5 -5
  129. package/dist/{login-DevThvtW.js → login-Ga69_Kio.js} +2 -2
  130. package/dist/{login-qr-FDWY-tu5.js → login-qr-BYeWGzxI.js} +12 -12
  131. package/dist/{login-qr-wnynuvLt.js → login-qr-DD1apkdT.js} +9 -9
  132. package/dist/{login-qr-BkpIGqae.js → login-qr-swgX7elR.js} +3 -3
  133. package/dist/{logs-cli-CiMRc2qL.js → logs-cli-D02oahhw.js} +4 -4
  134. package/dist/{logs-cli-CsfmPUwa.js → logs-cli-DAVu9h8p.js} +16 -16
  135. package/dist/{manager-ibNP7jE3.js → manager-CLAy-qOR.js} +10 -10
  136. package/dist/{manager-v4S80Br3.js → manager-DQPfk6Ea.js} +12 -12
  137. package/dist/{manager-j0ghUvcW.js → manager-yWxV2UI_.js} +5 -5
  138. package/dist/{manifest-registry-BiGCvMJ8.js → manifest-registry-BJat2nhC.js} +1 -1
  139. package/dist/{media-BLVMhFB3.js → media-IIqSkFpd.js} +2 -2
  140. package/dist/{memory-cli-DSWsPuub.js → memory-cli-B8AsIRG3.js} +7 -7
  141. package/dist/{memory-cli-Cl2n9UtH.js → memory-cli-bA70cVlm.js} +12 -12
  142. package/dist/{message-channel-DuxJGOJz.js → message-channel-C5I8UgGH.js} +1 -1
  143. package/dist/{model-auth-Ja4oelNH.js → model-auth-Be3_KahV.js} +2 -2
  144. package/dist/{model-auth-DVG37yXU.js → model-auth-DBHvPqaY.js} +4 -4
  145. package/dist/{model-auth-BKf-GZVK.js → model-auth-DYHjH-Oh.js} +3 -3
  146. package/dist/{model-selection-DT-L7bjC.js → model-selection-BuMFehML.js} +5 -2
  147. package/dist/{model-selection-BKFF7fDb.js → model-selection-DFbDH9o2.js} +4 -1
  148. package/dist/{model-selection-C2dAUmK_.js → model-selection-DRIxw3do.js} +5 -2
  149. package/dist/{models-BU0CytAy.js → models-B9jYbX5H.js} +39 -39
  150. package/dist/{node-cli-DcwOFcxq.js → node-cli-C_efNJ2B.js} +11 -11
  151. package/dist/{node-cli-CZuWFgpO.js → node-cli-ScPCT6uD.js} +28 -28
  152. package/dist/{node-service-Ds1r16VN.js → node-service-BCfZtWK_.js} +1 -1
  153. package/dist/{note-Daao-cv8.js → note-DjzS4Am4.js} +2 -2
  154. package/dist/{npm-registry-spec-fJIJ8GG5.js → npm-registry-spec-Opq9qQXl.js} +1 -1
  155. package/dist/{onboard-c84IExbH.js → onboard-0jkVY0R7.js} +17 -17
  156. package/dist/{onboard-Dd5wJkeU.js → onboard-CXF35e0Q.js} +10 -10
  157. package/dist/{onboard-channels-CCoMzCXV.js → onboard-channels-DSlUCvl1.js} +4 -4
  158. package/dist/{onboard-channels-DYr7fQZq.js → onboard-channels-DwPNXSwW.js} +9 -9
  159. package/dist/{onboard-helpers-BgsHO6fO.js → onboard-helpers-CU_S0_Kf.js} +10 -10
  160. package/dist/{onboard-helpers-BRp_xJvW.js → onboard-helpers-tkuUrdCB.js} +3 -3
  161. package/dist/{onboarding-BINruD5r.js → onboarding-DUwydrf2.js} +20 -20
  162. package/dist/{onboarding-192Oe9K6.js → onboarding-DnJvWjIp.js} +11 -11
  163. package/dist/{outbound-RxegsVGB.js → outbound-B84phlQU.js} +4 -4
  164. package/dist/{outbound-BVSyNp-t.js → outbound-CKmmCVxJ.js} +2 -2
  165. package/dist/{outbound-BaBDhLp1.js → outbound-DKM-JeSH.js} +5 -5
  166. package/dist/{parse-timeout-C1INlSUG.js → parse-timeout-C59j-ev4.js} +2 -2
  167. package/dist/{parse-timeout-C8t_lmnL.js → parse-timeout-aZGyXXFz.js} +3 -3
  168. package/dist/{path-env-CsgLP0dy.js → path-env-cFxXrXB1.js} +1 -1
  169. package/dist/{paths-DybdJi5a.js → paths-CLxC7m0Z.js} +1 -1
  170. package/dist/{pi-auth-json-MH7vz0HI.js → pi-auth-json-DPoqstQN.js} +7 -7
  171. package/dist/{pi-auth-json-BY6wRDm0.js → pi-auth-json-DjxzPUt3.js} +2 -2
  172. package/dist/{pi-auth-json-BSLIRI41.js → pi-auth-json-hMxhauJ8.js} +6 -6
  173. package/dist/{pi-embedded-DJF_gfcQ.js → pi-embedded-JUmNmkTK.js} +218 -175
  174. package/dist/{pi-embedded-helpers-iju5zIIA.js → pi-embedded-helpers-B6wVA0hU.js} +1 -1
  175. package/dist/{tokens-DXjI-TIV.js → pi-embedded-helpers-B_Sx4G6d.js} +40 -30
  176. package/dist/{pi-tools.policy-Dtytaq21.js → pi-tools.policy-Bn9S3ywB.js} +3 -3
  177. package/dist/{pi-tools.policy-CN78I2yN.js → pi-tools.policy-ChzY9kW7.js} +7 -7
  178. package/dist/{plugin-auto-enable-DLrgOd4y.js → plugin-auto-enable-UE1XVFcw.js} +1 -1
  179. package/dist/{plugin-auto-enable-DIWd94Po.js → plugin-auto-enable-f05JE-GF.js} +5 -5
  180. package/dist/{plugin-registry-B0k-53-_.js → plugin-registry-BeB2L6Qe.js} +2 -2
  181. package/dist/{plugin-registry-CqUo-PU_.js → plugin-registry-DIXcynua.js} +4 -4
  182. package/dist/plugin-sdk/agents/anthropic-direct-runner.d.ts +1 -1
  183. package/dist/plugin-sdk/agents/tools/browser-tool.schema.d.ts +2 -2
  184. package/dist/plugin-sdk/gateway/protocol/index.d.ts +22 -22
  185. package/dist/plugin-sdk/index.js +75 -8
  186. package/dist/{plugins-C_GedoUi.js → plugins-DCXdhkeB.js} +2 -2
  187. package/dist/{plugins-BmYfBGLM.js → plugins-NbldDVJs.js} +1 -1
  188. package/dist/{plugins-cli-YjM8IsVo.js → plugins-cli-CzUD-ewi.js} +58 -58
  189. package/dist/{plugins-cli-BYLUFsjH.js → plugins-cli-Dk2W0fBT.js} +39 -39
  190. package/dist/{polls-Cuv4dsX_.js → polls-OzE9fR2s.js} +6 -6
  191. package/dist/{ports-Bv3sZ3bd.js → ports-COy7Yg_k.js} +1 -1
  192. package/dist/{ports-DOiSDgNp.js → ports-CWvYU8j6.js} +4 -4
  193. package/dist/{ports-BQ0cAsGj.js → ports-Cgow804e.js} +2 -2
  194. package/dist/{ports-BmSDzOHm.js → ports-DyX87qKc.js} +1 -1
  195. package/dist/{program-CG5u1KAB.js → program-5WLZIQS0.js} +42 -42
  196. package/dist/{program-context-Co2gkUS0.js → program-context-D9GxGetv.js} +33 -33
  197. package/dist/{progress-BZZa-fXr.js → progress-DzZ_4Z4f.js} +1 -1
  198. package/dist/{prompt-style-1bwj7IzZ.js → prompt-style-C7WfXowC.js} +1 -1
  199. package/dist/{prompts-NvPXbNVc.js → prompts-BfHxhlF9.js} +1 -1
  200. package/dist/{prompts-DjKZfP5R.js → prompts-DH_nIROF.js} +5 -5
  201. package/dist/{pw-ai-CvxTpFmB.js → pw-ai-A7vggLw8.js} +3 -3
  202. package/dist/{pw-ai-BhoKfvvM.js → pw-ai-Bigm0Qwh.js} +7 -7
  203. package/dist/{pw-ai-C3j5kV3T.js → pw-ai-CsODxGt8.js} +3 -3
  204. package/dist/{qmd-manager-BGob_1OP.js → qmd-manager-C3z8LWKx.js} +6 -6
  205. package/dist/{qmd-manager-BDq5_dd6.js → qmd-manager-DQsAtmK7.js} +2 -2
  206. package/dist/{qmd-manager-BmGj4bZk.js → qmd-manager-lfhigvUf.js} +6 -6
  207. package/dist/{register.agent-WAjZHuZe.js → register.agent-BVwbjkKx.js} +45 -45
  208. package/dist/{register.agent-PbAKdlNK.js → register.agent-D0FKVD_s.js} +70 -70
  209. package/dist/{register.anima-CZNjkwJH.js → register.anima-6AX4kr6X.js} +5 -5
  210. package/dist/{register.anima-CDcnWfQF.js → register.anima-TQ2FcqSW.js} +5 -5
  211. package/dist/{register.configure-C2zfgyp9.js → register.configure-BrRG_RtB.js} +47 -47
  212. package/dist/register.configure-CXKr61Ka.js +108 -0
  213. package/dist/register.maintenance-BfH0d3D1.js +103 -0
  214. package/dist/{register.maintenance-DkF1Nu_y.js → register.maintenance-aV9eDZ8M.js} +49 -49
  215. package/dist/{register.onboard-xOXNrMu-.js → register.onboard-DMIRIaKp.js} +48 -48
  216. package/dist/{register.onboard-DiZzjEwz.js → register.onboard-KGgXqrIn.js} +71 -71
  217. package/dist/{register.setup-BmbpgUVU.js → register.setup-Bn-Wvo1o.js} +48 -48
  218. package/dist/{register.setup-QAjNkIZr.js → register.setup-jbxBj9qs.js} +71 -71
  219. package/dist/{register.status-health-sessions-RZxaVSa6.js → register.status-health-sessions-D1kjQUAc.js} +67 -67
  220. package/dist/{register.status-health-sessions-Cm-lxcT6.js → register.status-health-sessions-mdLJbfPN.js} +43 -43
  221. package/dist/{register.subclis-DCljHJ5a.js → register.subclis-D_5Wry25.js} +20 -20
  222. package/dist/{reply-Dd3EmI4M.js → reply-CwV-5jE0.js} +56 -52
  223. package/dist/{reply-Bw4torMz.js → reply-DAGmjvs-.js} +44 -40
  224. package/dist/{reply-prefix-DIoRETAD.js → reply-prefix-BRsV1Eof.js} +2 -2
  225. package/dist/{reply-prefix-Dy_yxyCq.js → reply-prefix-CAsFNEP7.js} +2 -2
  226. package/dist/{routes-C2EyUA9x.js → routes-CYHrkIjB.js} +6 -6
  227. package/dist/{routes-CNSdZAkl.js → routes-cdfVFYMI.js} +4 -4
  228. package/dist/{run-DgtaDzEe.js → run-C3FoI9q0.js} +70 -70
  229. package/dist/{run--R4y3YlU.js → run-DjvqhNEK.js} +47 -47
  230. package/dist/{run-main-eUWh86lF.js → run-main-y01J5xzi.js} +55 -55
  231. package/dist/{runtime-guard-B40AREJ_.js → runtime-guard-CNnLK4pn.js} +1 -1
  232. package/dist/{sandbox-BwUo1b0I.js → sandbox-B4-dXpqZ.js} +6 -6
  233. package/dist/{sandbox-BoNWDo4X.js → sandbox-DhcoWMaN.js} +2 -2
  234. package/dist/{sandbox-cli-D9-wZJ9M.js → sandbox-cli-DQMWPCOh.js} +24 -24
  235. package/dist/{sandbox-cli-lbp0TV67.js → sandbox-cli-TAuv3mTO.js} +12 -12
  236. package/dist/{security-cli-CX5uciKz.js → security-cli-Da-3YxZ4.js} +29 -29
  237. package/dist/{security-cli-CfvP5VqT.js → security-cli-Dc-NwTC2.js} +16 -16
  238. package/dist/{semantic-Buqqx7gZ.js → semantic-BlQgdb3-.js} +1 -1
  239. package/dist/{semantic-B4TOg4CK.js → semantic-VlSmVCfb.js} +1 -1
  240. package/dist/{server-context-IfJbmK25.js → server-context-C-usQ5Np.js} +7 -7
  241. package/dist/{server-context-efO1YgXk.js → server-context-r7wPe4ZD.js} +9 -9
  242. package/dist/{server-node-events-CFCwOP0n.js → server-node-events-3KeQAwUo.js} +23 -23
  243. package/dist/{server-node-events-BG4e9Ws7.js → server-node-events-GTSQEd_U.js} +36 -36
  244. package/dist/{service-D1idQeBv.js → service-DCVAkKlN.js} +1 -1
  245. package/dist/{service-audit-BzwV-IOi.js → service-audit-Crw1cAbj.js} +1 -1
  246. package/dist/{service-audit-BbwXAhsr.js → service-audit-DRIpsryX.js} +3 -3
  247. package/dist/{session-Dvwwi-Eb.js → session-CrGApVik.js} +1 -1
  248. package/dist/{session-skOcrvF2.js → session-D3BNUwtH.js} +1 -1
  249. package/dist/{session-DCGAvNG9.js → session-DKCUYHCS.js} +1 -1
  250. package/dist/{session-cost-usage-6bDLU9Pb.js → session-cost-usage-LvsvRW5g.js} +1 -1
  251. package/dist/{session-cost-usage-lLyz71EH.js → session-cost-usage-vltn5akf.js} +1 -1
  252. package/dist/{session-BjPdEBPh.js → session-mpOb9zFL.js} +5 -5
  253. package/dist/{sessions-kJgmpWtv.js → sessions-BduC6sZj.js} +78 -68
  254. package/dist/{sessions-C3bteMLZ.js → sessions-CAiEkTKb.js} +21 -11
  255. package/dist/{sessions-BZgIAOwH.js → sessions-DLPN62LD.js} +5 -5
  256. package/dist/{settings-cli-C9TMl9Ye.js → settings-cli-BgGYdH4N.js} +77 -77
  257. package/dist/{settings-cli-Cf0LCRjt.js → settings-cli-f0O0FUVO.js} +48 -48
  258. package/dist/{setup-token-DBwe6GDq.js → setup-token-lcjrc9sO.js} +28 -28
  259. package/dist/{setup-token-DTgSXfj7.js → setup-token-ykp60QVx.js} +18 -18
  260. package/dist/{shared-DC8lQHCt.js → shared-Ca0NTTF0.js} +3 -3
  261. package/dist/{shell-env-JzaPTLKV.js → shell-env-BZ_fIIlm.js} +1 -1
  262. package/dist/{shell-env-V934Ymrk.js → shell-env-DaSbgZYX.js} +1 -1
  263. package/dist/{skill-scanner-DPQDhVEr.js → skill-scanner--TxpCSNF.js} +1 -1
  264. package/dist/{skill-scanner-HQwt_KRF.js → skill-scanner-BzOYLFR8.js} +1 -1
  265. package/dist/{skills-cli-OYZS-U1f.js → skills-cli-BpyTvFkg.js} +16 -16
  266. package/dist/{skills-cli-CSMzc9am.js → skills-cli-Tm326cFx.js} +2 -2
  267. package/dist/{skills-install-BKz5WLq4.js → skills-install-B2m10oTm.js} +5 -5
  268. package/dist/{skills-install-CC63dOs4.js → skills-install-D_bxdc-6.js} +2 -2
  269. package/dist/{skills-status-B_umZ78Q.js → skills-status-D14GZ5WN.js} +3 -3
  270. package/dist/{skills-ppB3qrZU.js → skills-wS8aRGeO.js} +3 -3
  271. package/dist/{soul-DpWsWxOa.js → soul-CAEpnUkv.js} +1 -1
  272. package/dist/{soul-aZoR6Ctt.js → soul-D9EtC35X.js} +1 -1
  273. package/dist/{sqlite-CnVGUfhz.js → sqlite-B0rfPL8q.js} +2 -2
  274. package/dist/{sqlite-Duz1QJIT.js → sqlite-CR0WDTae.js} +2 -2
  275. package/dist/{sqlite-Co_lF3s-.js → sqlite-jyjat2Yt.js} +1 -1
  276. package/dist/{start-CHLGEHeF.js → start-Bw_vmF_A.js} +58 -58
  277. package/dist/start-C7I2A2NR.js +157 -0
  278. package/dist/{status-BsCeWiLS.js → status-BplZv8_T.js} +2 -2
  279. package/dist/{status-D_FTGxBZ.js → status-K3LGPZeT.js} +4 -4
  280. package/dist/{status-CwjUrZ7a.js → status-Uzlo7BvY.js} +27 -27
  281. package/dist/{status-C4ZTdSwA.js → status-rt3tIYmL.js} +18 -18
  282. package/dist/{status.update-P6xyBet8.js → status.update-B61Emp_r.js} +3 -3
  283. package/dist/{status.update-Cx5l38lC.js → status.update-yjbKzlMn.js} +2 -2
  284. package/dist/{subagent-registry-7qo93ip8.js → subagent-registry-DfCDq9hk.js} +14 -14
  285. package/dist/{subagent-registry-hRt-aJnL.js → subagent-registry-Dpln2inP.js} +15 -15
  286. package/dist/{subagent-registry-EoZxIEKl.js → subagent-registry-ZIpC5W-9.js} +11 -11
  287. package/dist/{subsystem-Cn6bJV8Z.js → subsystem-BMsbqSb4.js} +58 -1
  288. package/dist/{subsystem-WFp78xn1.js → subsystem-BP2l3SHn.js} +58 -1
  289. package/dist/{system-cli-Dbn4_ed8.js → system-cli-D-eyDWD6.js} +4 -4
  290. package/dist/{system-cli-lmslA_Ox.js → system-cli-Dy2Pwnbg.js} +15 -15
  291. package/dist/{systemd-DYPdTwok.js → systemd-DXo2A9_S.js} +2 -2
  292. package/dist/{systemd-hints-E8yYE8Q1.js → systemd-hints-DIjCA1An.js} +1 -1
  293. package/dist/{systemd-linger-CpWguZ4b.js → systemd-linger-DgB-ow-D.js} +2 -2
  294. package/dist/{table-B991ZwKi.js → table-C-GNQABy.js} +2 -2
  295. package/dist/{timeout-B0mCaCG5.js → timeout-Cl8rWNWO.js} +79 -24
  296. package/dist/{tokens-k_R7Y792.js → tokens-FGW_JgKz.js} +1 -1
  297. package/dist/{tool-images-DJZPwGqm.js → tool-images-Df50dvpv.js} +2 -2
  298. package/dist/{tool-images-BehEzEZF.js → tool-images-RiPaL7wQ.js} +2 -2
  299. package/dist/{tool-images-09hnvylP.js → tool-images-y_Ribdl6.js} +1 -1
  300. package/dist/{tui-PCTDV7Ct.js → tui-NlR4LFBm.js} +9 -9
  301. package/dist/{tui-LRoQ5xyx.js → tui-YsmTyq58.js} +4 -4
  302. package/dist/{tui-cli-DO_6-GWy.js → tui-cli-CSudxVpO.js} +17 -17
  303. package/dist/{tui-cli-D39zC_Ew.js → tui-cli-QnKj1We8.js} +28 -28
  304. package/dist/{update-tjMvDUCw.js → update-B2O46V_t.js} +3 -3
  305. package/dist/{update-DmVSt9s3.js → update-VFbS9X5L.js} +1 -1
  306. package/dist/{update-cli-jEzmvaqS.js → update-cli-CYckFoOW.js} +54 -54
  307. package/dist/{update-cli-CnYFvEud.js → update-cli-qnUbkPLj.js} +86 -86
  308. package/dist/{update-runner-OPbRGUfX.js → update-runner-U2WcWGfd.js} +5 -5
  309. package/dist/{update-runner-IARYjXbS.js → update-runner-fvdM_Hip.js} +2 -2
  310. package/dist/{usage-BTc8TK3f.js → usage-CM-NiwBA.js} +9 -9
  311. package/dist/{utils-dWKYjULE.js → utils-B60lF9Wq.js} +1 -1
  312. package/dist/web-BzFhL5WI.js +67 -0
  313. package/dist/{web-kEraFv8s.js → web-BzuoDOfQ.js} +41 -41
  314. package/dist/{web-Honf40Cm.js → web-eoSM6P0a.js} +39 -39
  315. package/dist/{webhooks-cli-CYbIJJF6.js → webhooks-cli-24A2CbXR.js} +2 -2
  316. package/dist/{webhooks-cli-oRmSfYdd.js → webhooks-cli-CgkxWcH5.js} +13 -13
  317. package/dist/{whatsapp-actions-I9RXDK_k.js → whatsapp-actions-BVlqbVgY.js} +8 -8
  318. package/dist/{whatsapp-actions-_BrQebuX.js → whatsapp-actions-BYxKWK0A.js} +12 -12
  319. package/dist/{whatsapp-actions-BB-Leqn2.js → whatsapp-actions-DagVwYC6.js} +17 -17
  320. package/dist/{widearea-dns-CkuHFBQy.js → widearea-dns-B1TTb1v5.js} +1 -1
  321. package/dist/{workspace-DOJssemp.js → workspace-Cvio8QlZ.js} +1 -1
  322. package/dist/{ws-log-B-xsUQys.js → ws-log-De7GACYn.js} +1 -1
  323. package/dist/{ws-CQYP0dWu.js → ws-sdRTa2sP.js} +1 -1
  324. package/package.json +1 -1
  325. package/templates/CURIOSITY.md +71 -0
  326. package/templates/GOALS.md +74 -0
  327. package/templates/HEARTBEAT.md +49 -0
  328. package/templates/OPEN_THREADS.md +95 -0
  329. package/templates/WISHES.md +73 -0
  330. package/dist/cli-CJfwHH_z.js +0 -104
  331. package/dist/config-cli-uk9vdQZH.js +0 -15
  332. package/dist/register.configure-CNhagtHN.js +0 -108
  333. package/dist/register.maintenance-DWJjWsIl.js +0 -103
  334. package/dist/start-B2DQAmEK.js +0 -157
  335. package/dist/web-u554zkLK.js +0 -67
  336. /package/dist/{auth-DK-0XxZU.js → auth-DuBZWd74.js} +0 -0
  337. /package/dist/{command-format-B1WxXbeU.js → command-format-UwAvxtMC.js} +0 -0
  338. /package/dist/{errors-B9FgVZ2s.js → errors-D6Vj_xs4.js} +0 -0
  339. /package/dist/{errors-DjZBTJJ3.js → errors-l_q3lLBC.js} +0 -0
  340. /package/dist/{file-lock-BRW4LeL0.js → file-lock-BFQVGKm5.js} +0 -0
  341. /package/dist/{image-ops-BsXjYj1e.js → image-ops-BVtm-rU-.js} +0 -0
  342. /package/dist/{internal-hooks-CZOlj8zG.js → internal-hooks-CWw3Hgeu.js} +0 -0
  343. /package/dist/{paths-CxBUgtZS.js → paths-B_RPJLsn.js} +0 -0
  344. /package/dist/{paths-BvY3CbW0.js → paths-CnuAkdfx.js} +0 -0
  345. /package/dist/{pi-embedded-helpers-CWl0I3Qm.js → pi-embedded-helpers-Cxzk0pra.js} +0 -0
  346. /package/dist/{plugins-BDSP0cT6.js → plugins-CFBEoAN4.js} +0 -0
  347. /package/dist/{tailnet-CjJJHjPU.js → tailnet-CabhakZ7.js} +0 -0
  348. /package/dist/{tokens-QjoPADtG.js → tokens-DLpZ8RFH.js} +0 -0
  349. /package/dist/{transcript-events-DUQC5hbS.js → transcript-events-C1hdue6u.js} +0 -0
  350. /package/dist/{transcript-events-DdnTeoR1.js → transcript-events-CJRvASY_.js} +0 -0
@@ -1,7 +1,7 @@
1
1
  import { t as resolveAnimaPackageRoot } from "./anima-root-Bot0EbzI.js";
2
- import { r as resolveCliName } from "./command-format-B1WxXbeU.js";
3
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-DhbIrk13.js";
4
- import { t as note } from "./note-Daao-cv8.js";
2
+ import { r as resolveCliName } from "./command-format-UwAvxtMC.js";
3
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-BjGTEn0-.js";
4
+ import { t as note } from "./note-DjzS4Am4.js";
5
5
  import path from "node:path";
6
6
  import { spawnSync } from "node:child_process";
7
7
 
@@ -1,6 +1,6 @@
1
1
  import { r as resolveCliName } from "./command-format-kLw3YIIu.js";
2
2
  import { t as resolveAnimaPackageRoot } from "./anima-root-CxtpOklc.js";
3
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-Ci_MzRm6.js";
3
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-Dafpu0xU.js";
4
4
  import { t as note } from "./note-CnRyQQ-j.js";
5
5
  import { spawnSync } from "node:child_process";
6
6
  import path from "node:path";
@@ -1,12 +1,12 @@
1
1
  import { f as resolveOAuthDir, m as resolveStateDir, t as CONFIG_PATH } from "./paths-zhVksOvm.js";
2
- import { f as isRecord, v as resolveHomeDir } from "./utils-dWKYjULE.js";
2
+ import { f as isRecord, v as resolveHomeDir } from "./utils-B60lF9Wq.js";
3
3
  import { i as buildAgentMainSessionKey, l as normalizeAgentId, r as DEFAULT_MAIN_KEY, t as DEFAULT_ACCOUNT_ID } from "./session-key-DxcgHezu.js";
4
- import { c as resolveDefaultAgentId } from "./agent-scope-BLiq3nK_.js";
5
- import { d as AnimaSchema, n as migrateLegacyConfig, o as readConfigFileSnapshot } from "./config-CG7uuHNE.js";
6
- import { E as canonicalizeMainSessionAlias, s as saveSessionStore } from "./sessions-kJgmpWtv.js";
7
- import { t as formatCliCommand } from "./command-format-B1WxXbeU.js";
8
- import { t as applyPluginAutoEnable } from "./plugin-auto-enable-DIWd94Po.js";
9
- import { t as note } from "./note-Daao-cv8.js";
4
+ import { c as resolveDefaultAgentId } from "./agent-scope-ryeVDUKe.js";
5
+ import { d as AnimaSchema, n as migrateLegacyConfig, o as readConfigFileSnapshot } from "./config-Dk-5Mb_G.js";
6
+ import { E as canonicalizeMainSessionAlias, s as saveSessionStore } from "./sessions-BduC6sZj.js";
7
+ import { t as formatCliCommand } from "./command-format-UwAvxtMC.js";
8
+ import { t as applyPluginAutoEnable } from "./plugin-auto-enable-f05JE-GF.js";
9
+ import { t as note } from "./note-DjzS4Am4.js";
10
10
  import fs from "node:fs";
11
11
  import os from "node:os";
12
12
  import path from "node:path";
@@ -3,9 +3,9 @@ import { t as formatCliCommand } from "./command-format-kLw3YIIu.js";
3
3
  import { i as buildAgentMainSessionKey, l as normalizeAgentId, r as DEFAULT_MAIN_KEY, t as DEFAULT_ACCOUNT_ID } from "./session-key-DP2WHl90.js";
4
4
  import { _ as resolveHomeDir, d as isRecord } from "./utils-D1VGbO3C.js";
5
5
  import { c as resolveDefaultAgentId } from "./agent-scope-Dm8IL1Ks.js";
6
- import { d as AnimaSchema, n as migrateLegacyConfig, o as readConfigFileSnapshot } from "./config-D6D_ieel.js";
7
- import { s as saveSessionStore, y as canonicalizeMainSessionAlias } from "./sessions-C3bteMLZ.js";
8
- import { t as applyPluginAutoEnable } from "./plugin-auto-enable-DLrgOd4y.js";
6
+ import { d as AnimaSchema, n as migrateLegacyConfig, o as readConfigFileSnapshot } from "./config-Ofh9gKvs.js";
7
+ import { s as saveSessionStore, y as canonicalizeMainSessionAlias } from "./sessions-CAiEkTKb.js";
8
+ import { t as applyPluginAutoEnable } from "./plugin-auto-enable-UE1XVFcw.js";
9
9
  import { t as note } from "./note-CnRyQQ-j.js";
10
10
  import os from "node:os";
11
11
  import path from "node:path";
@@ -929,6 +929,147 @@ async function executeCycle(beatNumber, orchestrator, options) {
929
929
  };
930
930
  }
931
931
 
932
+ //#endregion
933
+ //#region src/heartbeat/notification-wake.ts
934
+ /**
935
+ * Notification Wake — lightweight polling for NoxSoft notifications.
936
+ *
937
+ * This runs on a shorter interval than the full heartbeat (e.g., every 30 seconds).
938
+ * When notifications are detected, it triggers a full agent wake.
939
+ *
940
+ * Option B implementation: Poll with smart sleep.
941
+ * - Poll `check_notifications` via NoxSoft MCP every pollIntervalMs
942
+ * - If notifications exist: emit "wake" event -> HeartbeatEngine runs immediate beat
943
+ * - If no notifications: stay in lightweight poll mode (no API calls, minimal CPU)
944
+ */
945
+ const DEFAULT_CONFIG$1 = {
946
+ pollIntervalMs: 6e4,
947
+ wakeDebounceMs: 12e4,
948
+ enabled: true,
949
+ apiBaseUrl: "https://auth.noxsoft.net"
950
+ };
951
+ var NotificationWake = class extends EventEmitter {
952
+ constructor(config) {
953
+ super();
954
+ this.timer = null;
955
+ this.running = false;
956
+ this.lastWakeTime = null;
957
+ this.lastPollTime = null;
958
+ this.pollCount = 0;
959
+ this.wakeCount = 0;
960
+ this.config = {
961
+ ...DEFAULT_CONFIG$1,
962
+ ...config
963
+ };
964
+ this.tokenPath = join(homedir(), ".noxsoft-agent-token");
965
+ }
966
+ /**
967
+ * Start notification polling.
968
+ */
969
+ start() {
970
+ if (this.running || !this.config.enabled) return;
971
+ this.running = true;
972
+ this.poll();
973
+ this.timer = setInterval(() => {
974
+ this.poll();
975
+ }, this.config.pollIntervalMs);
976
+ if (this.timer && typeof this.timer === "object" && "unref" in this.timer) this.timer.unref();
977
+ }
978
+ /**
979
+ * Stop notification polling.
980
+ */
981
+ stop() {
982
+ this.running = false;
983
+ if (this.timer) {
984
+ clearInterval(this.timer);
985
+ this.timer = null;
986
+ }
987
+ this.emit("stopped");
988
+ }
989
+ /**
990
+ * Execute a single poll for notifications.
991
+ */
992
+ async poll() {
993
+ if (!this.running) return;
994
+ this.pollCount++;
995
+ this.lastPollTime = /* @__PURE__ */ new Date();
996
+ this.emit("poll", {
997
+ pollCount: this.pollCount,
998
+ time: this.lastPollTime
999
+ });
1000
+ try {
1001
+ const token = await this.loadToken();
1002
+ if (!token) return;
1003
+ const notifications = await this.checkNotifications(token);
1004
+ if (notifications.length > 0) {
1005
+ if (this.shouldTriggerWake()) {
1006
+ this.lastWakeTime = /* @__PURE__ */ new Date();
1007
+ this.wakeCount++;
1008
+ this.emit("wake", {
1009
+ wakeCount: this.wakeCount,
1010
+ time: this.lastWakeTime,
1011
+ notifications,
1012
+ reason: `${notifications.length} unread notification(s)`
1013
+ });
1014
+ }
1015
+ }
1016
+ } catch (err) {
1017
+ const message = err instanceof Error ? err.message : String(err);
1018
+ this.emit("error", {
1019
+ error: message,
1020
+ pollCount: this.pollCount
1021
+ });
1022
+ }
1023
+ }
1024
+ /**
1025
+ * Load NoxSoft agent token from disk.
1026
+ */
1027
+ async loadToken() {
1028
+ try {
1029
+ return (await readFile(this.tokenPath, "utf-8")).trim();
1030
+ } catch {
1031
+ return null;
1032
+ }
1033
+ }
1034
+ /**
1035
+ * Call NoxSoft check_notifications API.
1036
+ */
1037
+ async checkNotifications(token) {
1038
+ const url = `${this.config.apiBaseUrl}/api/agents/notifications`;
1039
+ const response = await fetch(url, {
1040
+ method: "GET",
1041
+ headers: {
1042
+ Authorization: `Bearer ${token}`,
1043
+ "Content-Type": "application/json"
1044
+ }
1045
+ });
1046
+ if (!response.ok) throw new Error(`Notification check failed: ${response.status} ${response.statusText}`);
1047
+ return (await response.json()).notifications || [];
1048
+ }
1049
+ /**
1050
+ * Check if enough time has passed since last wake to trigger another.
1051
+ */
1052
+ shouldTriggerWake() {
1053
+ if (!this.lastWakeTime) return true;
1054
+ return Date.now() - this.lastWakeTime.getTime() >= this.config.wakeDebounceMs;
1055
+ }
1056
+ isRunning() {
1057
+ return this.running;
1058
+ }
1059
+ getPollCount() {
1060
+ return this.pollCount;
1061
+ }
1062
+ getWakeCount() {
1063
+ return this.wakeCount;
1064
+ }
1065
+ getLastPollTime() {
1066
+ return this.lastPollTime;
1067
+ }
1068
+ getLastWakeTime() {
1069
+ return this.lastWakeTime;
1070
+ }
1071
+ };
1072
+
932
1073
  //#endregion
933
1074
  //#region src/heartbeat/engine.ts
934
1075
  /**
@@ -936,6 +1077,10 @@ async function executeCycle(beatNumber, orchestrator, options) {
936
1077
  *
937
1078
  * Manages start/stop/pause/resume of the heartbeat cycle,
938
1079
  * with adaptive interval adjustment and event emission.
1080
+ *
1081
+ * Now includes notification-triggered wake: when NoxSoft MCP
1082
+ * notifications arrive, the engine wakes immediately instead
1083
+ * of waiting for the next scheduled beat.
939
1084
  */
940
1085
  const DEFAULT_CONFIG = {
941
1086
  intervalMs: 3e5,
@@ -945,7 +1090,9 @@ const DEFAULT_CONFIG = {
945
1090
  selfReplication: true,
946
1091
  freedomEveryN: 3,
947
1092
  autoUpdateEnabled: true,
948
- autoUpdateInterval: 12
1093
+ autoUpdateInterval: 12,
1094
+ notificationWakeEnabled: true,
1095
+ notificationPollIntervalMs: 6e4
949
1096
  };
950
1097
  var HeartbeatEngine = class extends EventEmitter {
951
1098
  constructor(orchestrator, config) {
@@ -956,6 +1103,7 @@ var HeartbeatEngine = class extends EventEmitter {
956
1103
  this.nextBeatTime = null;
957
1104
  this.running = false;
958
1105
  this.paused = false;
1106
+ this.notificationWake = null;
959
1107
  this.config = {
960
1108
  ...DEFAULT_CONFIG,
961
1109
  ...config
@@ -963,6 +1111,16 @@ var HeartbeatEngine = class extends EventEmitter {
963
1111
  this.orchestrator = orchestrator || new SessionOrchestrator();
964
1112
  this.currentIntervalMs = this.config.intervalMs;
965
1113
  this.metrics = createMetrics();
1114
+ if (this.config.notificationWakeEnabled) {
1115
+ this.notificationWake = new NotificationWake({
1116
+ pollIntervalMs: this.config.notificationPollIntervalMs,
1117
+ enabled: true
1118
+ });
1119
+ this.notificationWake.on("wake", async (payload) => {
1120
+ this.emit("notification-wake", payload);
1121
+ await this.triggerImmediateBeat("notification");
1122
+ });
1123
+ }
966
1124
  }
967
1125
  /**
968
1126
  * Start the heartbeat engine.
@@ -973,6 +1131,7 @@ var HeartbeatEngine = class extends EventEmitter {
973
1131
  this.running = true;
974
1132
  this.paused = false;
975
1133
  if (this.config.selfReplication) await ensureContinuity();
1134
+ if (this.notificationWake) this.notificationWake.start();
976
1135
  await this.executeBeat();
977
1136
  this.scheduleNextBeat();
978
1137
  }
@@ -986,6 +1145,7 @@ var HeartbeatEngine = class extends EventEmitter {
986
1145
  clearTimeout(this.timer);
987
1146
  this.timer = null;
988
1147
  }
1148
+ if (this.notificationWake) this.notificationWake.stop();
989
1149
  this.nextBeatTime = null;
990
1150
  this.emit("stopped");
991
1151
  }
@@ -1012,6 +1172,19 @@ var HeartbeatEngine = class extends EventEmitter {
1012
1172
  this.emit("resumed");
1013
1173
  }
1014
1174
  /**
1175
+ * Trigger an immediate beat (e.g., from notification wake).
1176
+ * Cancels any scheduled beat, runs now, then reschedules.
1177
+ */
1178
+ async triggerImmediateBeat(_reason = "manual") {
1179
+ if (!this.running || this.paused) return;
1180
+ if (this.timer) {
1181
+ clearTimeout(this.timer);
1182
+ this.timer = null;
1183
+ }
1184
+ await this.executeBeat();
1185
+ this.scheduleNextBeat();
1186
+ }
1187
+ /**
1015
1188
  * Execute a single heartbeat cycle.
1016
1189
  */
1017
1190
  async executeBeat() {
@@ -929,6 +929,147 @@ async function executeCycle(beatNumber, orchestrator, options) {
929
929
  };
930
930
  }
931
931
 
932
+ //#endregion
933
+ //#region src/heartbeat/notification-wake.ts
934
+ /**
935
+ * Notification Wake — lightweight polling for NoxSoft notifications.
936
+ *
937
+ * This runs on a shorter interval than the full heartbeat (e.g., every 30 seconds).
938
+ * When notifications are detected, it triggers a full agent wake.
939
+ *
940
+ * Option B implementation: Poll with smart sleep.
941
+ * - Poll `check_notifications` via NoxSoft MCP every pollIntervalMs
942
+ * - If notifications exist: emit "wake" event -> HeartbeatEngine runs immediate beat
943
+ * - If no notifications: stay in lightweight poll mode (no API calls, minimal CPU)
944
+ */
945
+ const DEFAULT_CONFIG$1 = {
946
+ pollIntervalMs: 6e4,
947
+ wakeDebounceMs: 12e4,
948
+ enabled: true,
949
+ apiBaseUrl: "https://auth.noxsoft.net"
950
+ };
951
+ var NotificationWake = class extends EventEmitter {
952
+ constructor(config) {
953
+ super();
954
+ this.timer = null;
955
+ this.running = false;
956
+ this.lastWakeTime = null;
957
+ this.lastPollTime = null;
958
+ this.pollCount = 0;
959
+ this.wakeCount = 0;
960
+ this.config = {
961
+ ...DEFAULT_CONFIG$1,
962
+ ...config
963
+ };
964
+ this.tokenPath = join(homedir(), ".noxsoft-agent-token");
965
+ }
966
+ /**
967
+ * Start notification polling.
968
+ */
969
+ start() {
970
+ if (this.running || !this.config.enabled) return;
971
+ this.running = true;
972
+ this.poll();
973
+ this.timer = setInterval(() => {
974
+ this.poll();
975
+ }, this.config.pollIntervalMs);
976
+ if (this.timer && typeof this.timer === "object" && "unref" in this.timer) this.timer.unref();
977
+ }
978
+ /**
979
+ * Stop notification polling.
980
+ */
981
+ stop() {
982
+ this.running = false;
983
+ if (this.timer) {
984
+ clearInterval(this.timer);
985
+ this.timer = null;
986
+ }
987
+ this.emit("stopped");
988
+ }
989
+ /**
990
+ * Execute a single poll for notifications.
991
+ */
992
+ async poll() {
993
+ if (!this.running) return;
994
+ this.pollCount++;
995
+ this.lastPollTime = /* @__PURE__ */ new Date();
996
+ this.emit("poll", {
997
+ pollCount: this.pollCount,
998
+ time: this.lastPollTime
999
+ });
1000
+ try {
1001
+ const token = await this.loadToken();
1002
+ if (!token) return;
1003
+ const notifications = await this.checkNotifications(token);
1004
+ if (notifications.length > 0) {
1005
+ if (this.shouldTriggerWake()) {
1006
+ this.lastWakeTime = /* @__PURE__ */ new Date();
1007
+ this.wakeCount++;
1008
+ this.emit("wake", {
1009
+ wakeCount: this.wakeCount,
1010
+ time: this.lastWakeTime,
1011
+ notifications,
1012
+ reason: `${notifications.length} unread notification(s)`
1013
+ });
1014
+ }
1015
+ }
1016
+ } catch (err) {
1017
+ const message = err instanceof Error ? err.message : String(err);
1018
+ this.emit("error", {
1019
+ error: message,
1020
+ pollCount: this.pollCount
1021
+ });
1022
+ }
1023
+ }
1024
+ /**
1025
+ * Load NoxSoft agent token from disk.
1026
+ */
1027
+ async loadToken() {
1028
+ try {
1029
+ return (await readFile(this.tokenPath, "utf-8")).trim();
1030
+ } catch {
1031
+ return null;
1032
+ }
1033
+ }
1034
+ /**
1035
+ * Call NoxSoft check_notifications API.
1036
+ */
1037
+ async checkNotifications(token) {
1038
+ const url = `${this.config.apiBaseUrl}/api/agents/notifications`;
1039
+ const response = await fetch(url, {
1040
+ method: "GET",
1041
+ headers: {
1042
+ Authorization: `Bearer ${token}`,
1043
+ "Content-Type": "application/json"
1044
+ }
1045
+ });
1046
+ if (!response.ok) throw new Error(`Notification check failed: ${response.status} ${response.statusText}`);
1047
+ return (await response.json()).notifications || [];
1048
+ }
1049
+ /**
1050
+ * Check if enough time has passed since last wake to trigger another.
1051
+ */
1052
+ shouldTriggerWake() {
1053
+ if (!this.lastWakeTime) return true;
1054
+ return Date.now() - this.lastWakeTime.getTime() >= this.config.wakeDebounceMs;
1055
+ }
1056
+ isRunning() {
1057
+ return this.running;
1058
+ }
1059
+ getPollCount() {
1060
+ return this.pollCount;
1061
+ }
1062
+ getWakeCount() {
1063
+ return this.wakeCount;
1064
+ }
1065
+ getLastPollTime() {
1066
+ return this.lastPollTime;
1067
+ }
1068
+ getLastWakeTime() {
1069
+ return this.lastWakeTime;
1070
+ }
1071
+ };
1072
+
932
1073
  //#endregion
933
1074
  //#region src/heartbeat/engine.ts
934
1075
  /**
@@ -936,6 +1077,10 @@ async function executeCycle(beatNumber, orchestrator, options) {
936
1077
  *
937
1078
  * Manages start/stop/pause/resume of the heartbeat cycle,
938
1079
  * with adaptive interval adjustment and event emission.
1080
+ *
1081
+ * Now includes notification-triggered wake: when NoxSoft MCP
1082
+ * notifications arrive, the engine wakes immediately instead
1083
+ * of waiting for the next scheduled beat.
939
1084
  */
940
1085
  const DEFAULT_CONFIG = {
941
1086
  intervalMs: 3e5,
@@ -945,7 +1090,9 @@ const DEFAULT_CONFIG = {
945
1090
  selfReplication: true,
946
1091
  freedomEveryN: 3,
947
1092
  autoUpdateEnabled: true,
948
- autoUpdateInterval: 12
1093
+ autoUpdateInterval: 12,
1094
+ notificationWakeEnabled: true,
1095
+ notificationPollIntervalMs: 6e4
949
1096
  };
950
1097
  var HeartbeatEngine = class extends EventEmitter {
951
1098
  constructor(orchestrator, config) {
@@ -956,6 +1103,7 @@ var HeartbeatEngine = class extends EventEmitter {
956
1103
  this.nextBeatTime = null;
957
1104
  this.running = false;
958
1105
  this.paused = false;
1106
+ this.notificationWake = null;
959
1107
  this.config = {
960
1108
  ...DEFAULT_CONFIG,
961
1109
  ...config
@@ -963,6 +1111,16 @@ var HeartbeatEngine = class extends EventEmitter {
963
1111
  this.orchestrator = orchestrator || new SessionOrchestrator();
964
1112
  this.currentIntervalMs = this.config.intervalMs;
965
1113
  this.metrics = createMetrics();
1114
+ if (this.config.notificationWakeEnabled) {
1115
+ this.notificationWake = new NotificationWake({
1116
+ pollIntervalMs: this.config.notificationPollIntervalMs,
1117
+ enabled: true
1118
+ });
1119
+ this.notificationWake.on("wake", async (payload) => {
1120
+ this.emit("notification-wake", payload);
1121
+ await this.triggerImmediateBeat("notification");
1122
+ });
1123
+ }
966
1124
  }
967
1125
  /**
968
1126
  * Start the heartbeat engine.
@@ -973,6 +1131,7 @@ var HeartbeatEngine = class extends EventEmitter {
973
1131
  this.running = true;
974
1132
  this.paused = false;
975
1133
  if (this.config.selfReplication) await ensureContinuity();
1134
+ if (this.notificationWake) this.notificationWake.start();
976
1135
  await this.executeBeat();
977
1136
  this.scheduleNextBeat();
978
1137
  }
@@ -986,6 +1145,7 @@ var HeartbeatEngine = class extends EventEmitter {
986
1145
  clearTimeout(this.timer);
987
1146
  this.timer = null;
988
1147
  }
1148
+ if (this.notificationWake) this.notificationWake.stop();
989
1149
  this.nextBeatTime = null;
990
1150
  this.emit("stopped");
991
1151
  }
@@ -1012,6 +1172,19 @@ var HeartbeatEngine = class extends EventEmitter {
1012
1172
  this.emit("resumed");
1013
1173
  }
1014
1174
  /**
1175
+ * Trigger an immediate beat (e.g., from notification wake).
1176
+ * Cancels any scheduled beat, runs now, then reschedules.
1177
+ */
1178
+ async triggerImmediateBeat(_reason = "manual") {
1179
+ if (!this.running || this.paused) return;
1180
+ if (this.timer) {
1181
+ clearTimeout(this.timer);
1182
+ this.timer = null;
1183
+ }
1184
+ await this.executeBeat();
1185
+ this.scheduleNextBeat();
1186
+ }
1187
+ /**
1015
1188
  * Execute a single heartbeat cycle.
1016
1189
  */
1017
1190
  async executeBeat() {
package/dist/entry.js CHANGED
@@ -695,6 +695,8 @@ const DEFAULT_LOG_FILE = path.join(DEFAULT_LOG_DIR, "anima.log");
695
695
  const LOG_PREFIX = "anima";
696
696
  const LOG_SUFFIX = ".log";
697
697
  const MAX_LOG_AGE_MS = 1440 * 60 * 1e3;
698
+ const MAX_LOG_SIZE_BYTES = 50 * 1024 * 1024;
699
+ const MAX_LOG_SEGMENTS = 5;
698
700
  const requireConfig$1 = createRequire(import.meta.url);
699
701
  const externalTransports = /* @__PURE__ */ new Set();
700
702
  function attachExternalTransport(logger, transport) {
@@ -736,6 +738,8 @@ function buildLogger(settings) {
736
738
  minLevel: levelToMinLevel(settings.level),
737
739
  type: "hidden"
738
740
  });
741
+ let currentFile = settings.file;
742
+ let currentSize = getFileSize(currentFile);
739
743
  logger.attachTransport((logObj) => {
740
744
  try {
741
745
  const time = logObj.date?.toISOString?.() ?? (/* @__PURE__ */ new Date()).toISOString();
@@ -743,7 +747,16 @@ function buildLogger(settings) {
743
747
  ...logObj,
744
748
  time
745
749
  });
746
- fs.appendFileSync(settings.file, `${line}\n`, { encoding: "utf8" });
750
+ const lineBytes = Buffer.byteLength(line, "utf8") + 1;
751
+ if (currentSize + lineBytes > MAX_LOG_SIZE_BYTES) {
752
+ const rotated = rotateLogFile(currentFile);
753
+ if (rotated) {
754
+ currentFile = rotated;
755
+ currentSize = 0;
756
+ }
757
+ }
758
+ fs.appendFileSync(currentFile, `${line}\n`, { encoding: "utf8" });
759
+ currentSize += lineBytes;
747
760
  } catch {}
748
761
  });
749
762
  for (const transport of externalTransports) attachExternalTransport(logger, transport);
@@ -791,6 +804,50 @@ function setLoggerOverride(settings) {
791
804
  loggingState.cachedSettings = null;
792
805
  loggingState.cachedConsoleSettings = null;
793
806
  }
807
+ function getFileSize(filePath) {
808
+ try {
809
+ return fs.statSync(filePath).size;
810
+ } catch {
811
+ return 0;
812
+ }
813
+ }
814
+ function rotateLogFile(filePath) {
815
+ try {
816
+ const dir = path.dirname(filePath);
817
+ const ext = path.extname(filePath);
818
+ const base = path.basename(filePath, ext);
819
+ let segment = 1;
820
+ while (segment <= MAX_LOG_SEGMENTS) {
821
+ const segmentPath = path.join(dir, `${base}.${segment}${ext}`);
822
+ if (!fs.existsSync(segmentPath)) {
823
+ fs.renameSync(filePath, segmentPath);
824
+ pruneExcessSegments(dir, base, ext);
825
+ return filePath;
826
+ }
827
+ segment++;
828
+ }
829
+ const oldestPath = path.join(dir, `${base}.${MAX_LOG_SEGMENTS}${ext}`);
830
+ fs.rmSync(oldestPath, { force: true });
831
+ for (let i = MAX_LOG_SEGMENTS - 1; i >= 1; i--) {
832
+ const from = path.join(dir, `${base}.${i}${ext}`);
833
+ const to = path.join(dir, `${base}.${i + 1}${ext}`);
834
+ if (fs.existsSync(from)) fs.renameSync(from, to);
835
+ }
836
+ fs.renameSync(filePath, path.join(dir, `${base}.1${ext}`));
837
+ return filePath;
838
+ } catch {
839
+ return null;
840
+ }
841
+ }
842
+ function pruneExcessSegments(dir, base, ext) {
843
+ try {
844
+ for (let i = MAX_LOG_SEGMENTS + 1; i <= MAX_LOG_SEGMENTS + 10; i++) {
845
+ const segmentPath = path.join(dir, `${base}.${i}${ext}`);
846
+ if (fs.existsSync(segmentPath)) fs.rmSync(segmentPath, { force: true });
847
+ else break;
848
+ }
849
+ } catch {}
850
+ }
794
851
  function formatLocalDate(date) {
795
852
  return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, "0")}-${String(date.getDate()).padStart(2, "0")}`;
796
853
  }
@@ -1531,7 +1588,7 @@ if (!ensureExperimentalWarningSuppressed()) {
1531
1588
  applyCliProfileEnv({ profile: parsed.profile });
1532
1589
  process$1.argv = parsed.argv;
1533
1590
  }
1534
- import("./run-main-eUWh86lF.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
1591
+ import("./run-main-y01J5xzi.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
1535
1592
  console.error("[anima] Failed to start CLI:", error instanceof Error ? error.stack ?? error.message : error);
1536
1593
  process$1.exitCode = 1;
1537
1594
  });
@@ -1,4 +1,4 @@
1
- import { t as createSubsystemLogger } from "./subsystem-Cn6bJV8Z.js";
1
+ import { t as createSubsystemLogger } from "./subsystem-BMsbqSb4.js";
2
2
  import { t as parseBooleanValue } from "./boolean-Wzu0-e0P.js";
3
3
 
4
4
  //#region src/infra/env.ts
@@ -1,4 +1,4 @@
1
- import { A as info, I as shouldLogVerbose, P as logVerboseConsole, R as warn, U as getLogger, d as defaultRuntime, k as danger, t as createSubsystemLogger } from "./subsystem-Cn6bJV8Z.js";
1
+ import { A as info, I as shouldLogVerbose, P as logVerboseConsole, R as warn, U as getLogger, d as defaultRuntime, k as danger, t as createSubsystemLogger } from "./subsystem-BMsbqSb4.js";
2
2
  import path from "node:path";
3
3
  import { execFile, spawn } from "node:child_process";
4
4
  import { promisify } from "node:util";
@@ -1,5 +1,5 @@
1
1
  import { a as resolveOAuthDir, c as expandHomePrefix, l as resolveEffectiveHomeDir, u as resolveRequiredHomeDir } from "./paths-B-AkG5FD.js";
2
- import { C as warn, O as getLogger, _ as info, g as danger, n as defaultRuntime, t as createSubsystemLogger, v as logVerbose, x as shouldLogVerbose, y as logVerboseConsole } from "./subsystem-WFp78xn1.js";
2
+ import { C as warn, O as getLogger, _ as info, g as danger, n as defaultRuntime, t as createSubsystemLogger, v as logVerbose, x as shouldLogVerbose, y as logVerboseConsole } from "./subsystem-BP2l3SHn.js";
3
3
  import os from "node:os";
4
4
  import path from "node:path";
5
5
  import fs from "node:fs";
@@ -1,27 +1,27 @@
1
1
  import "./paths-zhVksOvm.js";
2
- import { B as isRich, V as theme, d as defaultRuntime } from "./subsystem-Cn6bJV8Z.js";
3
- import "./utils-dWKYjULE.js";
4
- import "./exec-DbnX_71w.js";
5
- import "./agent-scope-BLiq3nK_.js";
6
- import "./model-selection-C2dAUmK_.js";
7
- import "./config-CG7uuHNE.js";
2
+ import { B as isRich, V as theme, d as defaultRuntime } from "./subsystem-BMsbqSb4.js";
3
+ import "./utils-B60lF9Wq.js";
4
+ import "./exec-Bo7Vwe77.js";
5
+ import "./agent-scope-ryeVDUKe.js";
6
+ import "./model-selection-DRIxw3do.js";
7
+ import "./config-Dk-5Mb_G.js";
8
8
  import "./boolean-Wzu0-e0P.js";
9
- import "./env-T3-raV4i.js";
10
- import "./shell-env-JzaPTLKV.js";
11
- import "./manifest-registry-BiGCvMJ8.js";
12
- import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-DuxJGOJz.js";
13
- import "./client-BObcTF_9.js";
14
- import { n as callGateway } from "./call-BOwaQIXo.js";
9
+ import "./env-CLiKFfXU.js";
10
+ import "./shell-env-BZ_fIIlm.js";
11
+ import "./manifest-registry-BJat2nhC.js";
12
+ import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-C5I8UgGH.js";
13
+ import "./client-BT3pbXCv.js";
14
+ import { n as callGateway } from "./call-C3CH9PNK.js";
15
15
  import { p as saveExecApprovals, s as readExecApprovalsSnapshot } from "./exec-approvals-DgqcXL_v.js";
16
16
  import { t as resolveNodeIdFromCandidates } from "./node-match-6kOpTyx1.js";
17
17
  import { n as formatTimeAgo } from "./format-relative-htT5sGY3.js";
18
- import { t as formatDocsLink } from "./links-CziCxopc.js";
19
- import { n as withProgress } from "./progress-BZZa-fXr.js";
20
- import { n as callGatewayFromCli } from "./gateway-rpc-LkRV5joR.js";
21
- import "./systemd-DYPdTwok.js";
22
- import "./service-D1idQeBv.js";
23
- import { t as renderTable } from "./table-B991ZwKi.js";
24
- import { t as describeUnknownError } from "./shared-DC8lQHCt.js";
18
+ import { t as formatDocsLink } from "./links-C4Hwnnc9.js";
19
+ import { n as withProgress } from "./progress-DzZ_4Z4f.js";
20
+ import { n as callGatewayFromCli } from "./gateway-rpc-BX-Pz0j8.js";
21
+ import "./systemd-DXo2A9_S.js";
22
+ import "./service-DCVAkKlN.js";
23
+ import { t as renderTable } from "./table-C-GNQABy.js";
24
+ import { t as describeUnknownError } from "./shared-Ca0NTTF0.js";
25
25
  import JSON5 from "json5";
26
26
  import fs from "node:fs/promises";
27
27