@noxsoft/anima 2.0.2 → 2.0.4

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 (829) hide show
  1. package/README.md +1260 -28
  2. package/dist/accounts-Bth3PpPD.js +260 -0
  3. package/dist/accounts-D8CPKNkN.js +259 -0
  4. package/dist/acp-cli-ByK6lS6c.js +1081 -0
  5. package/dist/acp-cli-CaQCjIw4.js +1084 -0
  6. package/dist/agent-BgIkqd3F.js +725 -0
  7. package/dist/agent-N5BDcge4.js +725 -0
  8. package/dist/agent-events-COH7NDW2.js +182 -0
  9. package/dist/agent-scope-CPphqq-U.js +452 -0
  10. package/dist/agent-scope-DZgptr9J.js +452 -0
  11. package/dist/agent-scope-cj2QCT6R.js +112 -0
  12. package/dist/agents-NEudYMdg.js +774 -0
  13. package/dist/agents.config-Bujs-NIy.js +182 -0
  14. package/dist/agents.config-jp7OLssr.js +182 -0
  15. package/dist/argv-BMZMiW7v.js +73 -0
  16. package/dist/audit-C-UJhfdv.js +2401 -0
  17. package/dist/audit-CeCO7SK5.js +2401 -0
  18. package/dist/auth-BNZsOHGF.js +648 -0
  19. package/dist/auth-DMPZWzEa.js +639 -0
  20. package/dist/auth-choice-5VnaGMD-.js +2681 -0
  21. package/dist/auth-choice-DA2k4vs8.js +2681 -0
  22. package/dist/auth-health-B7FqA26_.js +149 -0
  23. package/dist/auth-health-VO_MPqVX.js +149 -0
  24. package/dist/auth-profiles-BDrNYX_n.js +1564 -0
  25. package/dist/auth-profiles-CxSHydjn.js +2689 -0
  26. package/dist/banner-BtDZPRzi.js +294 -0
  27. package/dist/browser-cli-8yQMpxb8.js +1679 -0
  28. package/dist/browser-cli-Czg3JtDH.js +1676 -0
  29. package/dist/build-info.json +3 -3
  30. package/dist/bundled/boot-md/handler.js +16 -16
  31. package/dist/bundled/bootstrap-extra-files/handler.js +4 -4
  32. package/dist/bundled/command-logger/handler.js +1 -1
  33. package/dist/bundled/session-memory/handler.js +5 -5
  34. package/dist/call-BIzCaKZb.js +282 -0
  35. package/dist/call-BYDpTVCZ.js +282 -0
  36. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  37. package/dist/catalog-CqKiUgu6.js +185 -0
  38. package/dist/catalog-DMfEg-oK.js +185 -0
  39. package/dist/channel-options-BrtCtyrT.js +32 -0
  40. package/dist/channel-options-CO21Gl8p.js +33 -0
  41. package/dist/channel-selection-Bbm1lq3P.js +51 -0
  42. package/dist/channel-selection-CqcX7Ocw.js +51 -0
  43. package/dist/channel-web-DrsT6OAE.js +2162 -0
  44. package/dist/channels-cli-Juyh1S6n.js +1304 -0
  45. package/dist/channels-cli-zNvi1m5c.js +1306 -0
  46. package/dist/channels-status-issues-CqzqshW4.js +18 -0
  47. package/dist/channels-status-issues-DdJdO866.js +18 -0
  48. package/dist/chrome-C4dOMO8z.js +1601 -0
  49. package/dist/chrome-DdcDzAtH.js +1629 -0
  50. package/dist/chrome-U3DRzjJD.js +1601 -0
  51. package/dist/chunk-D2nLsrEW.js +348 -0
  52. package/dist/clack-prompter-BI3RDW5w.js +92 -0
  53. package/dist/clack-prompter-Dwr1m_IZ.js +92 -0
  54. package/dist/cli/daemon-cli.js +1 -1
  55. package/dist/cli-C3cpDaz8.js +99 -0
  56. package/dist/cli-CjWUGdGC.js +101 -0
  57. package/dist/cli-session-BVjY_XrW.js +5463 -0
  58. package/dist/cli-session-gtuYN2Iq.js +5408 -0
  59. package/dist/client-Dswwze5_.js +1692 -0
  60. package/dist/client-LRKFjo4A.js +1692 -0
  61. package/dist/clipboard-BZKS9O1u.js +31 -0
  62. package/dist/clipboard-DES8b1AM.js +31 -0
  63. package/dist/command-format-CP1YTNCl.js +52 -0
  64. package/dist/command-format-CVL4K5cj.js +52 -0
  65. package/dist/command-format-G6N2zghg.js +38 -0
  66. package/dist/command-registry-BBvNvysr.js +248 -0
  67. package/dist/commands-AZ3n8Y2c.js +726 -0
  68. package/dist/commands-BMnD_QRY.js +726 -0
  69. package/dist/commands-registry-cFqZ6Ib4.js +766 -0
  70. package/dist/commands-registry-q13H7ng5.js +766 -0
  71. package/dist/common-CX5458fH.js +287 -0
  72. package/dist/common-DJbnT8ws.js +287 -0
  73. package/dist/completion-cli-BADRBcIl.js +432 -0
  74. package/dist/completion-cli-DMQgiObF.js +431 -0
  75. package/dist/config-CU-Axg8P.js +5704 -0
  76. package/dist/config-DaqbUdkI.js +5705 -0
  77. package/dist/config-cli-BPlbwiuA.js +244 -0
  78. package/dist/config-cli-DXgZJkPU.js +247 -0
  79. package/dist/config-guard-Ba49JNds.js +76 -0
  80. package/dist/config-guard-Cu0qMKZJ.js +93 -0
  81. package/dist/config-kVVm5EYV.js +6523 -0
  82. package/dist/config-sync-CzLnLTXt.js +91 -0
  83. package/dist/config-sync-DuydxPWx.js +91 -0
  84. package/dist/configure-CHgacLyi.js +960 -0
  85. package/dist/configure-DfHXDa1L.js +959 -0
  86. package/dist/context-DzgXOckU.js +60 -0
  87. package/dist/control-service-8_wKHwBa.js +72 -0
  88. package/dist/control-service-BtL1Jto_.js +72 -0
  89. package/dist/cron-cli-BCzSR2c0.js +448 -0
  90. package/dist/cron-cli-CCWNkykU.js +451 -0
  91. package/dist/daemon-cli-Bjkbu9Vy.js +565 -0
  92. package/dist/daemon-cli-CmlHcC1J.js +566 -0
  93. package/dist/daemon-cli.js +16 -16
  94. package/dist/daemon-runtime-C0tz7VAC.js +460 -0
  95. package/dist/daemon-runtime-rUTqCVwJ.js +460 -0
  96. package/dist/deliver-BBggsviM.js +1097 -0
  97. package/dist/deliver-CePITOl8.js +1162 -0
  98. package/dist/deliver-DFnVaetP.js +1097 -0
  99. package/dist/delivery-queue-BJQK3oh5.js +220 -0
  100. package/dist/deps-CeEKhrp7.js +42 -0
  101. package/dist/devices-cli-DQrDMrZH.js +198 -0
  102. package/dist/devices-cli-Oe-A1Dv0.js +195 -0
  103. package/dist/diagnostics-DxMFrBLO.js +35 -0
  104. package/dist/diagnostics-m79ZlMmZ.js +35 -0
  105. package/dist/directory-cli-BL6h8cGF.js +246 -0
  106. package/dist/directory-cli-Cjgmi_sj.js +243 -0
  107. package/dist/dispatcher-DAFbQM-c.js +100 -0
  108. package/dist/dispatcher-DNd40gUn.js +100 -0
  109. package/dist/dist-CqDI82ei.js +929 -0
  110. package/dist/dist-DnHRxR5U.js +929 -0
  111. package/dist/dns-cli-CFtV3BXK.js +200 -0
  112. package/dist/dns-cli-NyIHvQ5S.js +197 -0
  113. package/dist/dock-BdXLb5oY.js +753 -0
  114. package/dist/dock-jYICmNcI.js +753 -0
  115. package/dist/docs-cli-CrOaIK_H.js +161 -0
  116. package/dist/docs-cli-D_cmJDSr.js +159 -0
  117. package/dist/doctor-BpGxKrBl.js +1815 -0
  118. package/dist/doctor-D12wNQPU.js +1813 -0
  119. package/dist/doctor-completion-DeOfofek.js +92 -0
  120. package/dist/doctor-completion-DwjqdEcK.js +92 -0
  121. package/dist/doctor-config-flow-BI3mpkbd.js +1232 -0
  122. package/dist/doctor-config-flow-wMHheFkC.js +1232 -0
  123. package/dist/engine-BCtL-AMw.js +563 -0
  124. package/dist/engine-Bk_UT413.js +563 -0
  125. package/dist/entry.js +5 -5
  126. package/dist/env-v6411I8h.js +32 -0
  127. package/dist/exec-B7sUS164.js +1167 -0
  128. package/dist/exec-approvals-CroGJRUg.js +1221 -0
  129. package/dist/exec-approvals-cli-BTxF_RsH.js +371 -0
  130. package/dist/exec-approvals-cli-n1gyGwH2.js +368 -0
  131. package/dist/exec-mhSykkaa.js +255 -0
  132. package/dist/extensionAPI.js +3 -3
  133. package/dist/frontmatter-BmHq0vRD.js +204 -0
  134. package/dist/gateway-cli-DDBadlrS.js +19971 -0
  135. package/dist/gateway-cli-IZNkOMBe.js +19972 -0
  136. package/dist/gateway-rpc-Dtx8HN-n.js +28 -0
  137. package/dist/gateway-rpc-L2PVSqGj.js +28 -0
  138. package/dist/github-copilot-auth-DKyqDaGU.js +1418 -0
  139. package/dist/github-copilot-auth-DXpOMSd3.js +1418 -0
  140. package/dist/gmail-setup-utils-BKNczIJ9.js +428 -0
  141. package/dist/gmail-setup-utils-co0ppccC.js +428 -0
  142. package/dist/health-Bm8ZTvC3.js +1253 -0
  143. package/dist/health-DUf1gt4E.js +1258 -0
  144. package/dist/health-format-BksT6F68.js +208 -0
  145. package/dist/health-format-uzh1xYLD.js +208 -0
  146. package/dist/heartbeat-visibility-1TJb1Zao.js +98 -0
  147. package/dist/heartbeat-visibility-CwodtdcX.js +98 -0
  148. package/dist/help-format-C6cv_aZp.js +17 -0
  149. package/dist/helpers-N-uSFKOn.js +10 -0
  150. package/dist/hooks-cli-1POsXqOl.js +993 -0
  151. package/dist/hooks-cli-BGjILbze.js +991 -0
  152. package/dist/hooks-status-DE07n5RC.js +356 -0
  153. package/dist/hooks-status-Du-d1jde.js +356 -0
  154. package/dist/image-ops-B_AYV3tp.js +541 -0
  155. package/dist/image-ops-Bp0C6Mvr.js +541 -0
  156. package/dist/index.js +82 -82
  157. package/dist/init-9A0s7bWG.js +122 -0
  158. package/dist/init-DoyCHJDC.js +122 -0
  159. package/dist/installs-D1C9wHAq.js +383 -0
  160. package/dist/installs-Dh4dHayM.js +383 -0
  161. package/dist/ipv4-DCItfaJo.js +1964 -0
  162. package/dist/ipv4-DSOUVx0i.js +1964 -0
  163. package/dist/lanes-BvSnHq2h.js +232 -0
  164. package/dist/lifecycle-core-BY4WIf9g.js +388 -0
  165. package/dist/lifecycle-core-TQKyXO-6.js +387 -0
  166. package/dist/links-CNu_8RZl.js +15 -0
  167. package/dist/links-D2tt2ouh.js +15 -0
  168. package/dist/llm-slug-generator.js +4 -4
  169. package/dist/logging-BIeRw0WR.js +15 -0
  170. package/dist/logging-C7lb3Vjc.js +15 -0
  171. package/dist/login-DXWKewA2.js +59 -0
  172. package/dist/login-Fhh4uWmf.js +61 -0
  173. package/dist/login-pPs3UO38.js +61 -0
  174. package/dist/login-qr-CevLD8cV.js +326 -0
  175. package/dist/login-qr-GF2JMIy-.js +323 -0
  176. package/dist/login-qr-ZYYKD6Yt.js +321 -0
  177. package/dist/logs-cli-CzXbX8HZ.js +242 -0
  178. package/dist/logs-cli-D9ngH9PF.js +245 -0
  179. package/dist/manager-BD5rA3w0.js +3244 -0
  180. package/dist/manager-BDPgBQSH.js +3246 -0
  181. package/dist/manager-DRWMWM--.js +3244 -0
  182. package/dist/manifest-registry-DbvPaBXY.js +748 -0
  183. package/dist/manifest-registry-kHX_MFa1.js +748 -0
  184. package/dist/markdown-tables-CqwihY2m.js +347 -0
  185. package/dist/markdown-tables-DJV7eAJZ.js +348 -0
  186. package/dist/media-lUqN-0O9.js +1342 -0
  187. package/dist/memory-cli-BLXSpgnN.js +868 -0
  188. package/dist/memory-cli-BcGVkkRJ.js +869 -0
  189. package/dist/message-channel-D_jIO87f.js +110 -0
  190. package/dist/migrate-BpVOar4L.js +157 -0
  191. package/dist/migrate-CkgGDkWy.js +157 -0
  192. package/dist/model-selection-Cqt6aJ0G.js +2691 -0
  193. package/dist/models-CExsNQPH.js +2510 -0
  194. package/dist/models-cli-Ba3Jmwev.js +2739 -0
  195. package/dist/models-cli-iDAlsbL2.js +258 -0
  196. package/dist/net-0A_zcaQD.js +218 -0
  197. package/dist/node-cli-ATmwCXIk.js +1319 -0
  198. package/dist/node-cli-DYFR_V25.js +1322 -0
  199. package/dist/node-service-CN4LqR1A.js +67 -0
  200. package/dist/node-service-CWt3MdSC.js +67 -0
  201. package/dist/nodes-cli-BeVmhTz3.js +1197 -0
  202. package/dist/nodes-cli-QeJIfa18.js +1200 -0
  203. package/dist/nodes-screen-DHyWAlla.js +234 -0
  204. package/dist/nodes-screen-qs3jRBPk.js +234 -0
  205. package/dist/note-CSlg2BnB.js +73 -0
  206. package/dist/note-Ctvglhp1.js +73 -0
  207. package/dist/npm-registry-spec-DQd4M22q.js +351 -0
  208. package/dist/npm-registry-spec-PxisIMts.js +351 -0
  209. package/dist/onboard-DeruD10m.js +1166 -0
  210. package/dist/onboard-SAcu5N6N.js +1165 -0
  211. package/dist/onboard-channels-C4iSfFXR.js +672 -0
  212. package/dist/onboard-channels-oVTVgoyg.js +672 -0
  213. package/dist/onboard-helpers-B8roRwLP.js +365 -0
  214. package/dist/onboard-helpers-Dgh26hgP.js +365 -0
  215. package/dist/onboarding-Bi-ac8we.js +911 -0
  216. package/dist/onboarding-C2gjB2u8.js +910 -0
  217. package/dist/orchestrator-DlbAYMQP.js +357 -0
  218. package/dist/orchestrator-DlwVRVDA.js +357 -0
  219. package/dist/outbound-CkKgc6iR.js +2062 -0
  220. package/dist/outbound-Vfm5yDh3.js +214 -0
  221. package/dist/outbound-bs_VK51X.js +214 -0
  222. package/dist/outbound-send-deps-DDjiMfEL.js +55 -0
  223. package/dist/pairing-cli-CJYeuEik.js +118 -0
  224. package/dist/pairing-cli-mqopHI8s.js +121 -0
  225. package/dist/pairing-store-BsXzUDPv.js +388 -0
  226. package/dist/pairing-store-DoNj00-X.js +388 -0
  227. package/dist/path-env-C_xpiG8l.js +89 -0
  228. package/dist/path-env-DSSMHu5A.js +89 -0
  229. package/dist/paths-B1vRVCad.js +126 -0
  230. package/dist/paths-BMuHNFxg.js +238 -0
  231. package/dist/paths-BXQQzXGQ.js +129 -0
  232. package/dist/paths-Buw_geoe.js +54 -0
  233. package/dist/paths-DA9WYabg.js +222 -0
  234. package/dist/paths-DfQGx0_k.js +129 -0
  235. package/dist/pi-auth-json-DOPW3e4X.js +78 -0
  236. package/dist/pi-auth-json-MruLmI_X.js +82 -0
  237. package/dist/pi-auth-json-lae_wwwo.js +80 -0
  238. package/dist/pi-model-discovery-7q0GxMrp.js +3 -0
  239. package/dist/pi-tools.policy-Csmla32P.js +200 -0
  240. package/dist/pi-tools.policy-xYdDLEv9.js +200 -0
  241. package/dist/plugin-auto-enable-CViVVWgg.js +282 -0
  242. package/dist/plugin-auto-enable-CjZ238UI.js +282 -0
  243. package/dist/plugin-registry-B4Aw2hzq.js +32 -0
  244. package/dist/plugin-registry-DW81arxW.js +32 -0
  245. package/dist/plugin-sdk/cli/cli-name.d.ts +1 -1
  246. package/dist/plugin-sdk/config/paths.d.ts +2 -2
  247. package/dist/plugin-sdk/index.js +7 -7
  248. package/dist/plugins-DhcGAPDB.js +38 -0
  249. package/dist/plugins-DtghNRtM.js +168 -0
  250. package/dist/plugins-cli-4vWTmOAb.js +736 -0
  251. package/dist/plugins-cli-CdTMbP0X.js +734 -0
  252. package/dist/polls-D6eCdatA.js +1343 -0
  253. package/dist/ports-BtZx-JKD.js +96 -0
  254. package/dist/ports-C8bKN8s0.js +96 -0
  255. package/dist/ports-DHiKnPRX.js +344 -0
  256. package/dist/ports-vd93M_Pt.js +317 -0
  257. package/dist/program-CX3aUVeb.js +176 -0
  258. package/dist/program-context-BPos0ivo.js +496 -0
  259. package/dist/progress-oiAjiiNi.js +133 -0
  260. package/dist/prompt-style-Cm4wOtKm.js +9 -0
  261. package/dist/pw-ai-4QbK5YFe.js +1865 -0
  262. package/dist/pw-ai-BWz3Cxt7.js +1868 -0
  263. package/dist/pw-ai-C83HBue2.js +1867 -0
  264. package/dist/qmd-manager-BcMeZiGD.js +938 -0
  265. package/dist/qmd-manager-CPypGJ0P.js +935 -0
  266. package/dist/qmd-manager-CRrSkfia.js +937 -0
  267. package/dist/register.agent-DDY8KJhn.js +265 -0
  268. package/dist/register.agent-DKawm-9d.js +1003 -0
  269. package/dist/register.anima-CEWUo29k.js +193 -0
  270. package/dist/register.anima-DBWz2rk_.js +193 -0
  271. package/dist/register.configure-BX67qV8k.js +103 -0
  272. package/dist/register.configure-CWsySuiq.js +101 -0
  273. package/dist/register.maintenance-0k-ZNhDg.js +543 -0
  274. package/dist/register.maintenance-BIwx1fzX.js +543 -0
  275. package/dist/register.message-CXPsoakA.js +657 -0
  276. package/dist/register.message-DA3jvfgI.js +660 -0
  277. package/dist/register.onboard-C4HG7Hqv.js +170 -0
  278. package/dist/register.onboard-GOpdif-j.js +170 -0
  279. package/dist/register.setup-B17vZT7C.js +175 -0
  280. package/dist/register.setup-GJyUDCqh.js +175 -0
  281. package/dist/register.status-health-sessions-D5876dGx.js +313 -0
  282. package/dist/register.status-health-sessions-lOewVIZR.js +142 -0
  283. package/dist/register.subclis-Dwnujj5C.js +255 -0
  284. package/dist/reply-CR5T_oQJ.js +32212 -0
  285. package/dist/reply-prefix-BcrS4Umd.js +100 -0
  286. package/dist/reply-prefix-Btb5o2NH.js +100 -0
  287. package/dist/reply-r089HuRA.js +32212 -0
  288. package/dist/routes-B4czFzIb.js +1820 -0
  289. package/dist/routes-ucJWAk5O.js +1820 -0
  290. package/dist/rpc-BnKxnQ0v.js +70 -0
  291. package/dist/rpc-DgE-xnyx.js +70 -0
  292. package/dist/run-main-B74kv84C.js +371 -0
  293. package/dist/runtime-guard-CKFdts2L.js +60 -0
  294. package/dist/sandbox-CJTS3er6.js +858 -0
  295. package/dist/sandbox-DBSiVHt_.js +859 -0
  296. package/dist/sandbox-cli-CrkjyU5M.js +461 -0
  297. package/dist/sandbox-cli-D1r5y6Sz.js +458 -0
  298. package/dist/security-cli-BZUdnkhn.js +462 -0
  299. package/dist/security-cli-DS09ebvA.js +465 -0
  300. package/dist/server-context-C0xZbYhg.js +824 -0
  301. package/dist/server-context-DVh2z7om.js +824 -0
  302. package/dist/server-node-events-bu9lpkMH.js +233 -0
  303. package/dist/server-node-events-i1Rrww31.js +231 -0
  304. package/dist/service-CJJwLEor.js +642 -0
  305. package/dist/service-DxLxBhaU.js +642 -0
  306. package/dist/service-audit-DB4Y3Ekp.js +488 -0
  307. package/dist/service-audit-M8y4TXVb.js +488 -0
  308. package/dist/session-CGxOLFs2.js +179 -0
  309. package/dist/session-DTTbdKb0.js +181 -0
  310. package/dist/session-cost-usage-FcdJl9c3.js +600 -0
  311. package/dist/session-cost-usage-qdfsGU2a.js +600 -0
  312. package/dist/session-yOhWcsD2.js +181 -0
  313. package/dist/sessions-B-Cu7JZq.js +1296 -0
  314. package/dist/sessions-BgLN4KFr.js +180 -0
  315. package/dist/sessions-CnRjwdVr.js +1296 -0
  316. package/dist/sessions-wRKla1Qh.js +2038 -0
  317. package/dist/shared-DS3UaJSP.js +66 -0
  318. package/dist/shared-DxNHzky3.js +77 -0
  319. package/dist/shared-Qpt4hUDi.js +66 -0
  320. package/dist/shared-kzrojZ1B.js +77 -0
  321. package/dist/skill-scanner-DLJji5Ye.js +263 -0
  322. package/dist/skills-BWFIEp4j.js +807 -0
  323. package/dist/skills-DV4zKdCx.js +808 -0
  324. package/dist/skills-cli-BY53ILm2.js +289 -0
  325. package/dist/skills-cli-CO3gxl8A.js +286 -0
  326. package/dist/skills-status-DX5pcqY3.js +166 -0
  327. package/dist/skills-status-zhcKzGkp.js +166 -0
  328. package/dist/sqlite-B6MojU1I.js +321 -0
  329. package/dist/sqlite-CuprTGR7.js +453 -0
  330. package/dist/sqlite-dzD-jMjs.js +368 -0
  331. package/dist/start-Cu3aLoSf.js +297 -0
  332. package/dist/start-Dz7tMAl8.js +296 -0
  333. package/dist/status-CaSxhxfV.js +2132 -0
  334. package/dist/status-D2C0JCX3.js +2137 -0
  335. package/dist/status-DlFMsQzh.js +27 -0
  336. package/dist/status-G0CITnKR.js +27 -0
  337. package/dist/status.update-CHjhVxJY.js +79 -0
  338. package/dist/status.update-DVFelehi.js +79 -0
  339. package/dist/subagent-registry-3Xb4el-8.js +14 -0
  340. package/dist/subagent-registry-CdSjz14I.js +2760 -0
  341. package/dist/subagent-registry-DNDhbHWi.js +2759 -0
  342. package/dist/subsystem-DfKstnEK.js +860 -0
  343. package/dist/system-cli-B5mt0FWa.js +82 -0
  344. package/dist/system-cli-Dg3UQ3Zz.js +79 -0
  345. package/dist/systemd-B43AvOGx.js +452 -0
  346. package/dist/systemd-RpPE0XGg.js +452 -0
  347. package/dist/systemd-hints-DMJT-Bbc.js +36 -0
  348. package/dist/systemd-hints-vRInKcz9.js +36 -0
  349. package/dist/systemd-linger-Dzyxqsod.js +75 -0
  350. package/dist/systemd-linger-EujbmI5A.js +75 -0
  351. package/dist/table-DhXHfRX2.js +279 -0
  352. package/dist/table-bWCLW-3P.js +279 -0
  353. package/dist/timeout-Ddn-5kAO.js +232 -0
  354. package/dist/tokens-3psI_Qk2.js +14 -0
  355. package/dist/tokens-BaM53PEx.js +14 -0
  356. package/dist/trash-Bmxs1Rnm.js +23 -0
  357. package/dist/trash-C39a6hKA.js +23 -0
  358. package/dist/tui-BHgBWhHE.js +3894 -0
  359. package/dist/tui-cli-B9Sq5-cC.js +50 -0
  360. package/dist/tui-cli-Dw7v4JoJ.js +47 -0
  361. package/dist/tui-mUwDwqvd.js +3894 -0
  362. package/dist/update-DF0GHG0j.js +317 -0
  363. package/dist/update-DoZLVjva.js +317 -0
  364. package/dist/update-check-Bt1dVPVN.js +400 -0
  365. package/dist/update-check-D5qAKes7.js +400 -0
  366. package/dist/update-cli-BNu2Oi7H.js +1105 -0
  367. package/dist/update-cli-D36AmALA.js +1105 -0
  368. package/dist/update-runner-CNQQaTwA.js +894 -0
  369. package/dist/update-runner-CvxZmbu-.js +894 -0
  370. package/dist/usage-BGCwNnjk.js +4516 -0
  371. package/dist/utils-DZ8pnOD5.js +243 -0
  372. package/dist/web-B5QG839O.js +46842 -0
  373. package/dist/web-Cmnvk9v0.js +2203 -0
  374. package/dist/web-Cv2KnTnL.js +63 -0
  375. package/dist/webhooks-cli-B6y89Pj_.js +319 -0
  376. package/dist/webhooks-cli-BDzHON4w.js +316 -0
  377. package/dist/whatsapp-actions-C_5MwVxM.js +45 -0
  378. package/dist/whatsapp-actions-hgYA12To.js +53 -0
  379. package/dist/whatsapp-actions-zTiVOoOV.js +49 -0
  380. package/dist/widearea-dns-BeIdnISJ.js +127 -0
  381. package/dist/widearea-dns-CF1gxpJ-.js +127 -0
  382. package/dist/workspace-DLna1IxR.js +649 -0
  383. package/dist/ws-log-Q4wO1Ztb.js +267 -0
  384. package/dist/ws-log-xF0kxDzp.js +267 -0
  385. package/package.json +1 -2
  386. package/dist/accounts-Cc5E4IDO.js +0 -260
  387. package/dist/accounts-CcVrwKqv.js +0 -259
  388. package/dist/acp-cli-DvphOKuh.js +0 -1081
  389. package/dist/acp-cli-p28pQ65a.js +0 -1084
  390. package/dist/agent-Cj7uDJaZ.js +0 -725
  391. package/dist/agent-Cuj9-2sT.js +0 -725
  392. package/dist/agent-events-BEBQsyE5.js +0 -182
  393. package/dist/agent-scope-BVf4aSwY.js +0 -112
  394. package/dist/agent-scope-OZi7lb8S.js +0 -452
  395. package/dist/agent-scope-V1bi9OYL.js +0 -452
  396. package/dist/agents-BUWqn_Ui.js +0 -774
  397. package/dist/agents.config-Dvo2ULxs.js +0 -182
  398. package/dist/agents.config-d6H0_3oj.js +0 -182
  399. package/dist/argv-DqUHKf0o.js +0 -73
  400. package/dist/audit-C6okOOSh.js +0 -2401
  401. package/dist/audit-VWjIdwC7.js +0 -2401
  402. package/dist/auth-91o2YM96.js +0 -648
  403. package/dist/auth-choice-CAmACV13.js +0 -2681
  404. package/dist/auth-choice-p3SeHPj2.js +0 -2681
  405. package/dist/auth-health-B_jXrWe6.js +0 -149
  406. package/dist/auth-health-DCicUKYR.js +0 -149
  407. package/dist/auth-lZ26wsbN.js +0 -639
  408. package/dist/auth-profiles-CCDD56dU.js +0 -1564
  409. package/dist/auth-profiles-DxI8L7bs.js +0 -2689
  410. package/dist/banner-Cohn04J6.js +0 -294
  411. package/dist/browser-cli-DANzjztE.js +0 -1676
  412. package/dist/browser-cli-WjsVH741.js +0 -1679
  413. package/dist/call-BAHvlu2G.js +0 -282
  414. package/dist/call-Ct7EGP_L.js +0 -282
  415. package/dist/catalog-BAayBt1L.js +0 -185
  416. package/dist/catalog-BNsf97BM.js +0 -185
  417. package/dist/channel-options-Dx9nPlX8.js +0 -33
  418. package/dist/channel-options-ZdvXrTGs.js +0 -32
  419. package/dist/channel-selection-CujyiWGM.js +0 -51
  420. package/dist/channel-selection-DfGpCyh2.js +0 -51
  421. package/dist/channel-web-CC0hkgkR.js +0 -2162
  422. package/dist/channels-cli-D7lNBpIb.js +0 -1304
  423. package/dist/channels-cli-DUPG8WDv.js +0 -1306
  424. package/dist/channels-status-issues-DBc1pU_R.js +0 -18
  425. package/dist/channels-status-issues-DjO9MHIG.js +0 -18
  426. package/dist/chrome-Bi6iZ5sG.js +0 -1601
  427. package/dist/chrome-DNSv7Cpy.js +0 -1629
  428. package/dist/chrome-DScZx4Lk.js +0 -1601
  429. package/dist/chunk-mxPVo000.js +0 -348
  430. package/dist/clack-prompter-B0kl7shw.js +0 -92
  431. package/dist/clack-prompter-B1YxZdRy.js +0 -92
  432. package/dist/cli-CfHUkOD0.js +0 -101
  433. package/dist/cli-ClMrIh6l.js +0 -99
  434. package/dist/cli-session-BkPTd9Pk.js +0 -5463
  435. package/dist/cli-session-Dd8DKb5a.js +0 -5408
  436. package/dist/client-C1avc0vD.js +0 -1692
  437. package/dist/client-CC94YZrT.js +0 -1692
  438. package/dist/clipboard-B2fBy8tG.js +0 -31
  439. package/dist/clipboard-BbGnZskJ.js +0 -31
  440. package/dist/command-format-Clp46jkj.js +0 -38
  441. package/dist/command-format-DELazozB.js +0 -52
  442. package/dist/command-format-SkzzRqR1.js +0 -52
  443. package/dist/command-registry-DZ4hkmA0.js +0 -248
  444. package/dist/commands-DtYZJSPn.js +0 -568
  445. package/dist/commands-Dujk1JmY.js +0 -568
  446. package/dist/commands-registry-Bd0xbvwG.js +0 -766
  447. package/dist/commands-registry-DYfRSVF3.js +0 -766
  448. package/dist/common-D6bu0zHC.js +0 -287
  449. package/dist/common-zW9Y2P1B.js +0 -287
  450. package/dist/completion-cli-tSe7Pmqm.js +0 -431
  451. package/dist/completion-cli-vn4IScs5.js +0 -432
  452. package/dist/config-C8rUDJXY.js +0 -5704
  453. package/dist/config-CLZ_XGVw.js +0 -6523
  454. package/dist/config-SY8M0kM_.js +0 -5705
  455. package/dist/config-cli-1V7D2Wsw.js +0 -247
  456. package/dist/config-cli-CjWEC81L.js +0 -244
  457. package/dist/config-guard-BW2gpKj_.js +0 -93
  458. package/dist/config-guard-BvxuzHpo.js +0 -76
  459. package/dist/config-sync-CoIIbEOe.js +0 -91
  460. package/dist/config-sync-DvAttep0.js +0 -91
  461. package/dist/configure-Bf0oupCE.js +0 -959
  462. package/dist/configure-DRM-7zFf.js +0 -960
  463. package/dist/context-D5iEFzv9.js +0 -60
  464. package/dist/control-service-C8m8F9pr.js +0 -72
  465. package/dist/control-service-DKotCWCg.js +0 -72
  466. package/dist/cron-cli-DB_FLYHD.js +0 -448
  467. package/dist/cron-cli-bxm5lrrO.js +0 -451
  468. package/dist/daemon-cli-1LsOnICv.js +0 -566
  469. package/dist/daemon-cli-CC2NrJ7a.js +0 -565
  470. package/dist/daemon-runtime-BXZhtBL9.js +0 -460
  471. package/dist/daemon-runtime-DW4USC7r.js +0 -460
  472. package/dist/deliver-B4HuPwJA.js +0 -1162
  473. package/dist/deliver-LiY5oL52.js +0 -1097
  474. package/dist/deliver-xrmk7xjh.js +0 -1097
  475. package/dist/delivery-queue-TnQykYsg.js +0 -220
  476. package/dist/deps-CMMOiOsF.js +0 -42
  477. package/dist/devices-cli-Be5he2SA.js +0 -195
  478. package/dist/devices-cli-z6ecoFe9.js +0 -198
  479. package/dist/diagnostics-Dj75aEHN.js +0 -35
  480. package/dist/diagnostics-DlIw6fqD.js +0 -35
  481. package/dist/directory-cli-CEy-0nxj.js +0 -243
  482. package/dist/directory-cli-DpzKcigr.js +0 -246
  483. package/dist/dispatcher-10Shiuz3.js +0 -100
  484. package/dist/dispatcher-3Jae6AiW.js +0 -100
  485. package/dist/dns-cli-Bat1pkc-.js +0 -200
  486. package/dist/dns-cli-NohNyEo0.js +0 -197
  487. package/dist/dock-DbxBBv30.js +0 -753
  488. package/dist/dock-cPBY4qGl.js +0 -753
  489. package/dist/docs-cli-BWp6p-Tq.js +0 -161
  490. package/dist/docs-cli-x22FnZfL.js +0 -159
  491. package/dist/doctor-BrT5m_on.js +0 -1815
  492. package/dist/doctor-Pp2HVnjM.js +0 -1813
  493. package/dist/doctor-completion-DNTimX9o.js +0 -92
  494. package/dist/doctor-completion-ylN9QAJ6.js +0 -92
  495. package/dist/doctor-config-flow-D1w3700T.js +0 -1232
  496. package/dist/doctor-config-flow-Dq50iE1R.js +0 -1232
  497. package/dist/engine-B9avUJL5.js +0 -563
  498. package/dist/engine-BiUQ25D4.js +0 -563
  499. package/dist/env-0lJfCPsw.js +0 -32
  500. package/dist/exec-BenD3A5l.js +0 -1167
  501. package/dist/exec-Bv3pyjeM.js +0 -255
  502. package/dist/exec-approvals-CdLmKX2R.js +0 -1221
  503. package/dist/exec-approvals-cli-DXfV6G8H.js +0 -368
  504. package/dist/exec-approvals-cli-J2cZs10o.js +0 -371
  505. package/dist/frontmatter-YijVi0FQ.js +0 -204
  506. package/dist/gateway-cli-DOAbA0pc.js +0 -19972
  507. package/dist/gateway-cli-QpWtBhQy.js +0 -19971
  508. package/dist/gateway-rpc-DJKBil9s.js +0 -28
  509. package/dist/gateway-rpc-DVterpLP.js +0 -28
  510. package/dist/github-copilot-auth-4IUFp669.js +0 -1418
  511. package/dist/github-copilot-auth-C9E0IROs.js +0 -1418
  512. package/dist/gmail-setup-utils-BPo_LkKI.js +0 -428
  513. package/dist/gmail-setup-utils-D3Yqgor7.js +0 -428
  514. package/dist/health-BeZnqp6m.js +0 -1258
  515. package/dist/health-Cn2OoVWZ.js +0 -1253
  516. package/dist/health-format-CdP99j3Y.js +0 -208
  517. package/dist/health-format-JEChH08S.js +0 -208
  518. package/dist/heartbeat-visibility-BL3WAchI.js +0 -98
  519. package/dist/heartbeat-visibility-CQ9QimI7.js +0 -98
  520. package/dist/help-format-Dl4bsrLI.js +0 -17
  521. package/dist/helpers-ZKNRexvX.js +0 -10
  522. package/dist/hooks-cli-D99hXt7K.js +0 -991
  523. package/dist/hooks-cli-DMB8RiEO.js +0 -993
  524. package/dist/hooks-status-B-e96dZj.js +0 -356
  525. package/dist/hooks-status-C_9sE0ox.js +0 -356
  526. package/dist/image-ops-Dlt3T7th.js +0 -541
  527. package/dist/image-ops-omlvdfah.js +0 -541
  528. package/dist/init-Bm04RagW.js +0 -122
  529. package/dist/init-CaJBf4p1.js +0 -122
  530. package/dist/installs-C2iMRBVz.js +0 -383
  531. package/dist/installs-D-cPGdCw.js +0 -383
  532. package/dist/ipv4-Bf7NS3QU.js +0 -1964
  533. package/dist/ipv4-wWNs8IH_.js +0 -1964
  534. package/dist/lanes-CNxj3tit.js +0 -232
  535. package/dist/lifecycle-core-B_7XRcvF.js +0 -388
  536. package/dist/lifecycle-core-By83PVAK.js +0 -387
  537. package/dist/links-BfjHVTB_.js +0 -15
  538. package/dist/links-DPGe0OHw.js +0 -15
  539. package/dist/logging-DB6BQmhi.js +0 -15
  540. package/dist/logging-mcb66J0p.js +0 -15
  541. package/dist/login-BDCg6D0N.js +0 -61
  542. package/dist/login-BDfnbjnZ.js +0 -59
  543. package/dist/login-BqH1itcg.js +0 -61
  544. package/dist/login-qr-CyOw3R4r.js +0 -321
  545. package/dist/login-qr-D8ECtb72.js +0 -323
  546. package/dist/login-qr-RnR7e4Bw.js +0 -326
  547. package/dist/logs-cli--j89L74J.js +0 -245
  548. package/dist/logs-cli-DpEMg_Gq.js +0 -242
  549. package/dist/manager-B4OyvcxT.js +0 -3244
  550. package/dist/manager-Cqc1CeH7.js +0 -3246
  551. package/dist/manager-DUyQPFvj.js +0 -3244
  552. package/dist/manifest-registry-CW1zCyRF.js +0 -748
  553. package/dist/manifest-registry-D4lM2RdV.js +0 -748
  554. package/dist/markdown-tables-BT1X6jqH.js +0 -347
  555. package/dist/markdown-tables-DHgOK2vI.js +0 -348
  556. package/dist/media-THyainiE.js +0 -1342
  557. package/dist/memory-cli-BKocCWXM.js +0 -868
  558. package/dist/memory-cli-Jmma-xI_.js +0 -869
  559. package/dist/message-channel-dSTVVCyX.js +0 -110
  560. package/dist/migrate-BR6iAIjO.js +0 -157
  561. package/dist/migrate-D0EcMs0f.js +0 -157
  562. package/dist/model-selection-YcSr9CgC.js +0 -2691
  563. package/dist/models-1vUQBVfw.js +0 -2510
  564. package/dist/models-cli-BK3BwUhL.js +0 -2739
  565. package/dist/models-cli-DECrM8oA.js +0 -258
  566. package/dist/net-B5lXhYLV.js +0 -218
  567. package/dist/node-cli-cLHUNpPD.js +0 -1319
  568. package/dist/node-cli-fO7Y132S.js +0 -1322
  569. package/dist/node-service-BFxHJsno.js +0 -67
  570. package/dist/node-service-DUnan4uK.js +0 -67
  571. package/dist/nodes-cli-BCq35E6N.js +0 -1200
  572. package/dist/nodes-cli-vD7MwAKP.js +0 -1197
  573. package/dist/nodes-screen-1YiLkqr5.js +0 -234
  574. package/dist/nodes-screen-DZeD8hE5.js +0 -234
  575. package/dist/note-Bi8Wb8DV.js +0 -73
  576. package/dist/note-uiuPxhyX.js +0 -73
  577. package/dist/npm-registry-spec-B-XIShkB.js +0 -351
  578. package/dist/npm-registry-spec-za3itb5Y.js +0 -351
  579. package/dist/onboard-Ds6w_sWo.js +0 -1165
  580. package/dist/onboard-SAVx3bp4.js +0 -1166
  581. package/dist/onboard-channels-Cg_EkBa4.js +0 -672
  582. package/dist/onboard-channels-D7NbA55V.js +0 -672
  583. package/dist/onboard-helpers-DO_hgZb9.js +0 -365
  584. package/dist/onboard-helpers-_XgJgeqh.js +0 -365
  585. package/dist/onboarding-3hLmDd0r.js +0 -911
  586. package/dist/onboarding-B4LKLsbU.js +0 -910
  587. package/dist/orchestrator-BKzmyBWy.js +0 -357
  588. package/dist/orchestrator-BN3QCz2s.js +0 -357
  589. package/dist/outbound-BgA9hNlP.js +0 -2062
  590. package/dist/outbound-CjdvVhUI.js +0 -214
  591. package/dist/outbound-DOGe6qb2.js +0 -214
  592. package/dist/outbound-send-deps-Du5aBpd7.js +0 -55
  593. package/dist/pairing-cli-2vnyg_Nd.js +0 -118
  594. package/dist/pairing-cli-BH1KQtNV.js +0 -121
  595. package/dist/pairing-store-DJz_9Gv0.js +0 -388
  596. package/dist/pairing-store-DmOzxcuk.js +0 -388
  597. package/dist/path-env-Bu6k0jDQ.js +0 -89
  598. package/dist/path-env-C0zQSjw8.js +0 -89
  599. package/dist/paths-BTc4nk-6.js +0 -126
  600. package/dist/paths-BgUi2Z2G.js +0 -54
  601. package/dist/paths-C6VCWKo3.js +0 -238
  602. package/dist/paths-CCxa0o9c.js +0 -222
  603. package/dist/paths-CxRf2rBG.js +0 -129
  604. package/dist/paths-hcX1Gqg5.js +0 -129
  605. package/dist/pi-auth-json-B68R7q7_.js +0 -82
  606. package/dist/pi-auth-json-CR0jXAgq.js +0 -78
  607. package/dist/pi-auth-json-ZYzi3nxs.js +0 -80
  608. package/dist/pi-model-discovery-Cxs4pvC2.js +0 -3
  609. package/dist/pi-tools.policy-D81U5xy0.js +0 -200
  610. package/dist/pi-tools.policy-DSHkkb5b.js +0 -200
  611. package/dist/plugin-auto-enable-CxF4bpDN.js +0 -282
  612. package/dist/plugin-auto-enable-jNaAeyEh.js +0 -282
  613. package/dist/plugin-registry-C7XWotZG.js +0 -32
  614. package/dist/plugin-registry-DcUCbGax.js +0 -32
  615. package/dist/plugins-B362e77G.js +0 -168
  616. package/dist/plugins-CmSUIUNi.js +0 -38
  617. package/dist/plugins-cli-BsCEnoQ7.js +0 -734
  618. package/dist/plugins-cli-QSIsMUG7.js +0 -736
  619. package/dist/polls-CItfB1H8.js +0 -1343
  620. package/dist/ports-BVLMN1Sr.js +0 -96
  621. package/dist/ports-CqLSlU6Z.js +0 -317
  622. package/dist/ports-D94CwCrv.js +0 -344
  623. package/dist/ports-D_NHthOz.js +0 -96
  624. package/dist/program-DkJHjI0R.js +0 -176
  625. package/dist/program-context-DnyGM2SC.js +0 -496
  626. package/dist/progress-Bek_GyWS.js +0 -133
  627. package/dist/prompt-style-lu0clOOE.js +0 -9
  628. package/dist/pw-ai-BLVMuSLv.js +0 -1867
  629. package/dist/pw-ai-DZJWEF_f.js +0 -1865
  630. package/dist/pw-ai-dzf-ptcn.js +0 -1868
  631. package/dist/qmd-manager-Cur_Ekn0.js +0 -937
  632. package/dist/qmd-manager-DNAUuwjK.js +0 -938
  633. package/dist/qmd-manager-DepEoASu.js +0 -935
  634. package/dist/register.agent-CSWvzOkR.js +0 -265
  635. package/dist/register.agent-UeH2NXmH.js +0 -1003
  636. package/dist/register.anima-DOdee0dh.js +0 -193
  637. package/dist/register.anima-HHDWsz6r.js +0 -193
  638. package/dist/register.configure-CSJFxdz9.js +0 -103
  639. package/dist/register.configure-D84Fvcz4.js +0 -101
  640. package/dist/register.maintenance-B3pvNbZb.js +0 -543
  641. package/dist/register.maintenance-BKVOwkw6.js +0 -543
  642. package/dist/register.message-BAO6CPl2.js +0 -657
  643. package/dist/register.message-OXoOKE_6.js +0 -660
  644. package/dist/register.onboard-BK_ixVmD.js +0 -170
  645. package/dist/register.onboard-cfCaPx6j.js +0 -170
  646. package/dist/register.setup-BGfDnzph.js +0 -175
  647. package/dist/register.setup-Y-Q74M-0.js +0 -175
  648. package/dist/register.status-health-sessions-CT14eitH.js +0 -142
  649. package/dist/register.status-health-sessions-TfZMzAUn.js +0 -313
  650. package/dist/register.subclis-BZwdlNHC.js +0 -255
  651. package/dist/reply-mlsExaZm.js +0 -32212
  652. package/dist/reply-prefix-B0CfR4bM.js +0 -100
  653. package/dist/reply-prefix-w4a39ybC.js +0 -100
  654. package/dist/reply-qalRISe_.js +0 -32212
  655. package/dist/routes-CENsHJyg.js +0 -1820
  656. package/dist/routes-DO0HqW2e.js +0 -1820
  657. package/dist/rpc-C0pjNhBi.js +0 -70
  658. package/dist/rpc-DZ44PIXE.js +0 -70
  659. package/dist/run-main-BMpKw8Mp.js +0 -371
  660. package/dist/runtime-guard-BSUFiAQV.js +0 -60
  661. package/dist/sandbox-BIGfMYEI.js +0 -858
  662. package/dist/sandbox-DxP3IpUP.js +0 -859
  663. package/dist/sandbox-cli-DtLGH8sL.js +0 -461
  664. package/dist/sandbox-cli-_Tg7lfJ_.js +0 -458
  665. package/dist/security-cli-BRwgbedo.js +0 -462
  666. package/dist/security-cli-D3bSuyZt.js +0 -465
  667. package/dist/server-context-49XFFxFg.js +0 -824
  668. package/dist/server-context-LrlgrZzS.js +0 -824
  669. package/dist/server-node-events-Dm52i7NW.js +0 -231
  670. package/dist/server-node-events-QX523UyF.js +0 -233
  671. package/dist/service-BNVpYcQe.js +0 -642
  672. package/dist/service-D56aMXUB.js +0 -642
  673. package/dist/service-audit-D0X_XAB2.js +0 -488
  674. package/dist/service-audit-qmf6XMmP.js +0 -488
  675. package/dist/session-CrQQLLhx.js +0 -179
  676. package/dist/session-LocsOOWJ.js +0 -181
  677. package/dist/session-Vlce2BAT.js +0 -181
  678. package/dist/session-cost-usage-BwiTZuKl.js +0 -600
  679. package/dist/session-cost-usage-DT9YNXTJ.js +0 -600
  680. package/dist/sessions-BfV53TbG.js +0 -1296
  681. package/dist/sessions-BimpX_km.js +0 -180
  682. package/dist/sessions-DcXpzig0.js +0 -1296
  683. package/dist/sessions-Wd18dukK.js +0 -2038
  684. package/dist/shared-Bsr69u_7.js +0 -77
  685. package/dist/shared-Cgly1vPb.js +0 -66
  686. package/dist/shared-JOo05hST.js +0 -66
  687. package/dist/shared-f7dvQsi7.js +0 -77
  688. package/dist/skill-scanner-CkaVLABv.js +0 -263
  689. package/dist/skills-B-G7UHOa.js +0 -808
  690. package/dist/skills-B5LQx4lT.js +0 -807
  691. package/dist/skills-cli-DUGe2ZWW.js +0 -286
  692. package/dist/skills-cli-DtOk0bvK.js +0 -289
  693. package/dist/skills-status-Clq9ZnYu.js +0 -166
  694. package/dist/skills-status-JQluhU-P.js +0 -166
  695. package/dist/sqlite-BukcjdJa.js +0 -321
  696. package/dist/sqlite-CGcOZZ0C.js +0 -368
  697. package/dist/sqlite-Ck6f9KWc.js +0 -453
  698. package/dist/start--xmSFepB.js +0 -372
  699. package/dist/start-BdlZbqrr.js +0 -371
  700. package/dist/status-BgoeFm6g.js +0 -2137
  701. package/dist/status-BjjDrUq7.js +0 -27
  702. package/dist/status-Ct0DgOZ-.js +0 -2132
  703. package/dist/status-RA_uNmK0.js +0 -27
  704. package/dist/status.update-BjOH3GlS.js +0 -79
  705. package/dist/status.update-DLU1qBf0.js +0 -79
  706. package/dist/subagent-registry-9RLdKxES.js +0 -2760
  707. package/dist/subagent-registry-Byuex3zp.js +0 -2759
  708. package/dist/subagent-registry-DOBunBYS.js +0 -14
  709. package/dist/subsystem-Dowf8fSU.js +0 -860
  710. package/dist/system-cli-C5oBpzni.js +0 -79
  711. package/dist/system-cli-DXNKD_Id.js +0 -82
  712. package/dist/systemd-BSrHDyeU.js +0 -452
  713. package/dist/systemd-By5xdSB4.js +0 -452
  714. package/dist/systemd-hints-BtjL_5Rh.js +0 -36
  715. package/dist/systemd-hints-sJmr6cjb.js +0 -36
  716. package/dist/systemd-linger-CTmV2Gci.js +0 -75
  717. package/dist/systemd-linger-CmyqQkeC.js +0 -75
  718. package/dist/table-BL0lJzsm.js +0 -279
  719. package/dist/table-DoiRPsn0.js +0 -279
  720. package/dist/timeout-CswI_K-U.js +0 -232
  721. package/dist/tokens-C-X7wDKj.js +0 -14
  722. package/dist/tokens-DkvqA72p.js +0 -14
  723. package/dist/trash-BJLK1vMn.js +0 -23
  724. package/dist/trash-_x5UZ94k.js +0 -23
  725. package/dist/tui-BHjxDFZC.js +0 -3894
  726. package/dist/tui-CgOocwN8.js +0 -3894
  727. package/dist/tui-cli-5ANH8dE5.js +0 -47
  728. package/dist/tui-cli-BQ4P-JW_.js +0 -50
  729. package/dist/update-LFgxHHPd.js +0 -317
  730. package/dist/update-TxptCqk7.js +0 -317
  731. package/dist/update-check-CWc7YXmc.js +0 -400
  732. package/dist/update-check-IhlWaui6.js +0 -400
  733. package/dist/update-cli-PtXU62w7.js +0 -1105
  734. package/dist/update-cli-Va0EtETG.js +0 -1105
  735. package/dist/update-runner-BLeKFkiB.js +0 -894
  736. package/dist/update-runner-Iuzpc-_y.js +0 -894
  737. package/dist/usage-ApGvBLVg.js +0 -4516
  738. package/dist/utils-Bsw__U-F.js +0 -243
  739. package/dist/web-B6_Ky60G.js +0 -63
  740. package/dist/web-EZLQEWXY.js +0 -46842
  741. package/dist/web-pec8YJUX.js +0 -2203
  742. package/dist/webhooks-cli-BYQKTHTp.js +0 -319
  743. package/dist/webhooks-cli-C2_xtsUQ.js +0 -316
  744. package/dist/whatsapp-actions-C72VCq8f.js +0 -49
  745. package/dist/whatsapp-actions-Ck9Uv0Nw.js +0 -45
  746. package/dist/whatsapp-actions-D0reTj2k.js +0 -53
  747. package/dist/widearea-dns-B6ocX23x.js +0 -127
  748. package/dist/widearea-dns-NsEUNYwz.js +0 -127
  749. package/dist/workspace-Dcfoy5JJ.js +0 -649
  750. package/dist/ws-log-N8R5MvGE.js +0 -267
  751. package/dist/ws-log-gwFxPxj5.js +0 -267
  752. /package/dist/{auto-update-CUeF99gI.js → auto-update-CpF0fycd.js} +0 -0
  753. /package/dist/{auto-update-cgkp9ZTJ.js → auto-update-DNWdO7uF.js} +0 -0
  754. /package/dist/{brew-CVZkr0GU.js → brew-nqf_MiE4.js} +0 -0
  755. /package/dist/{budget-DxYQSekw.js → budget-CPedI-qW.js} +0 -0
  756. /package/dist/{budget-BWBp8Res.js → budget-CRpvqDRX.js} +0 -0
  757. /package/dist/{cli-utils-DtAxdCte.js → cli-utils-C1YHVD4o.js} +0 -0
  758. /package/dist/{command-options-CSbuuqHr.js → command-options-BbponVnw.js} +0 -0
  759. /package/dist/{command-options-Cp1tf96a.js → command-options-s0gnvXnS.js} +0 -0
  760. /package/dist/{constants-O8yBqCBv.js → constants-Dhb6zSIV.js} +0 -0
  761. /package/dist/{dangerous-tools-5ObDWy1N.js → dangerous-tools-DGTtJ_JR.js} +0 -0
  762. /package/dist/{dangerous-tools-Jwr7jqNw.js → dangerous-tools-DxrfTOfT.js} +0 -0
  763. /package/dist/{delivery-queue-B6IHz4Ry.js → delivery-queue-Bxm0nzw7.js} +0 -0
  764. /package/dist/{display-BDOsXu8F.js → display-Jy3UdGzA.js} +0 -0
  765. /package/dist/{errors-CHow2wtt.js → errors-CKaCqKga.js} +0 -0
  766. /package/dist/{exec-BizYYQgP.js → exec-DDmuVVNq.js} +0 -0
  767. /package/dist/{format-Mq6iU0_5.js → format-ByEjgyTF.js} +0 -0
  768. /package/dist/{format-duration-DhWzz_5b.js → format-duration-Aaj5tjJd.js} +0 -0
  769. /package/dist/{format-relative-C6kUHuOj.js → format-relative-79_Y1n2Y.js} +0 -0
  770. /package/dist/{help-format-DUBI91Ti.js → help-format-BMKzarov.js} +0 -0
  771. /package/dist/{helpers-eJFa4K6r.js → helpers-DpEB9Mh0.js} +0 -0
  772. /package/dist/{helpers-DLgbkcEn.js → helpers-FMld9sBT.js} +0 -0
  773. /package/dist/{input-provenance-DJBdpeKk.js → input-provenance-Cy_KnBlP.js} +0 -0
  774. /package/dist/{is-main-Dt9DTcH1.js → is-main-yjaVwMtJ.js} +0 -0
  775. /package/dist/{loader-l2OBdJ8x.js → loader-Br7Vr0zn.js} +0 -0
  776. /package/dist/{loader-BoYxRfcW.js → loader-CkmOrXcC.js} +0 -0
  777. /package/dist/{logging-BdnOSVPD.js → logging-CY-Q5cwf.js} +0 -0
  778. /package/dist/{message-channel-w4F2b2F6.js → message-channel-dua8OOGJ.js} +0 -0
  779. /package/dist/{mime-B1ZoR53M.js → mime-CBg4KybI.js} +0 -0
  780. /package/dist/{model-param-b-DPwyNGn8.js → model-param-b-DW9f0NN8.js} +0 -0
  781. /package/dist/{node-match-8XZnaid6.js → node-match-BV8bTBd4.js} +0 -0
  782. /package/dist/{normalize-GDK8JTNW.js → normalize-_lmlBOW9.js} +0 -0
  783. /package/dist/{openclaw-root-C85WMnVV.js → openclaw-root-JPvmPTf7.js} +0 -0
  784. /package/dist/{outbound-send-deps-ANnAhImn.js → outbound-send-deps-BfUvuWGa.js} +0 -0
  785. /package/dist/{parse-6-2MDhdT.js → parse-CZRwKocn.js} +0 -0
  786. /package/dist/{parse-log-line-Bqh1SSzC.js → parse-log-line-CvrZEK6A.js} +0 -0
  787. /package/dist/{parse-log-line-DUZCjXbl.js → parse-log-line-mLdat0AH.js} +0 -0
  788. /package/dist/{parse-port-BKB9Exlg.js → parse-port-BSOOdo7I.js} +0 -0
  789. /package/dist/{parse-port-DrfvwwiL.js → parse-port-Y0NK62x1.js} +0 -0
  790. /package/dist/{parse-timeout-Di_tcEmi.js → parse-timeout-DVPQ3n9j.js} +0 -0
  791. /package/dist/{paths-DcVEkYX5.js → paths-DHjlJ6cn.js} +0 -0
  792. /package/dist/{pi-model-discovery-DsRqYJLy.js → pi-model-discovery-DzEIEgHL.js} +0 -0
  793. /package/dist/{plugins-CDJw924T.js → plugins-D6PBOdkn.js} +0 -0
  794. /package/dist/{program-context-Bvn8046-.js → program-context-Q1hkT73c.js} +0 -0
  795. /package/dist/{progress-CbZ2D53A.js → progress-C9Ha1NJh.js} +0 -0
  796. /package/dist/{prompt-style-DKy6qQxR.js → prompt-style-DQi8j03a.js} +0 -0
  797. /package/dist/{prompts-BI__va99.js → prompts-BEHxUC3w.js} +0 -0
  798. /package/dist/{prompts-_dDWkCAz.js → prompts-CSOhuiqe.js} +0 -0
  799. /package/dist/{queue-D_u34pbL.js → queue-BJGo7kAB.js} +0 -0
  800. /package/dist/{queue-PG591iID.js → queue-DYgUbdoq.js} +0 -0
  801. /package/dist/{redact-ClVwO7Nn.js → redact-CyKvdFrg.js} +0 -0
  802. /package/dist/{registry-Bs_DJK9E.js → registry-C5MAYD4V.js} +0 -0
  803. /package/dist/{registry-D_zlP1U-.js → registry-CRrXXVs0.js} +0 -0
  804. /package/dist/{requirements-BzZxj2Wu.js → requirements-CGkxTCu4.js} +0 -0
  805. /package/dist/{requirements-DIW1svgA.js → requirements-CIDaOcbO.js} +0 -0
  806. /package/dist/{runtime-guard-DeOXA_86.js → runtime-guard-nL3Lp8T-.js} +0 -0
  807. /package/dist/{secret-equal-Dghy3xsA.js → secret-equal-DJpmLXlG.js} +0 -0
  808. /package/dist/{send-BhAfdGII.js → send-CTcxgDDU.js} +0 -0
  809. /package/dist/{send-ga9udK1_.js → send-DPezUR3-.js} +0 -0
  810. /package/dist/{send-C2t9xpXI.js → send-DZQTaG7-.js} +0 -0
  811. /package/dist/{send-DigO-i9j.js → send-VDff2gra.js} +0 -0
  812. /package/dist/{send-Dz2BDHll.js → send-bgQNV8d1.js} +0 -0
  813. /package/dist/{session-key-BGiG_JcT.js → session-key-CQT-NR6w.js} +0 -0
  814. /package/dist/{shell-argv-CAq1mLa2.js → shell-argv-n9IueeJQ.js} +0 -0
  815. /package/dist/{skill-scanner-Coo4QoCd.js → skill-scanner-o6NgVMD9.js} +0 -0
  816. /package/dist/{status-CMnlcBVc.js → status-C53kTIXF.js} +0 -0
  817. /package/dist/{status-tDZPwewW.js → status-CZDDA_Sy.js} +0 -0
  818. /package/dist/{system-run-command-X9lDJIy0.js → system-run-command-BCjUffN9.js} +0 -0
  819. /package/dist/{system-run-command-DGk7dwQP.js → system-run-command-CqAqKL9K.js} +0 -0
  820. /package/dist/{tailnet-CuiNECdL.js → tailnet-Ciwjv243.js} +0 -0
  821. /package/dist/{templates-CeYJjVzw.js → templates-37RKpACb.js} +0 -0
  822. /package/dist/{templates-I3Z0xplD.js → templates-DPalk30o.js} +0 -0
  823. /package/dist/{thinking-BXEswx1X.js → thinking-2hxwmvTl.js} +0 -0
  824. /package/dist/{transcript-events-C1hdue6u.js → transcript-events-Bp7fGnwv.js} +0 -0
  825. /package/dist/{transcript-tools-DuyYOkUq.js → transcript-tools-D4Lbxlka.js} +0 -0
  826. /package/dist/{usage-format-BAirWUSO.js → usage-format-6Uar63S0.js} +0 -0
  827. /package/dist/{utils-C9sj30YY.js → utils-DT8uXjFS.js} +0 -0
  828. /package/dist/{wsl-CqyuRvtM.js → wsl-CrPvx2kZ.js} +0 -0
  829. /package/dist/{wsl-ymJYvc9Q.js → wsl-UvJ5dHah.js} +0 -0
@@ -0,0 +1,1296 @@
1
+ import { o as createSubsystemLogger } from "./entry.js";
2
+ import { i as buildAgentMainSessionKey, l as normalizeAgentId, n as DEFAULT_AGENT_ID, u as normalizeMainKey } from "./session-key-CQT-NR6w.js";
3
+ import { m as normalizeE164 } from "./utils-DT8uXjFS.js";
4
+ import { f as parseByteSize, i as loadConfig, m as parseDurationMs } from "./config-CU-Axg8P.js";
5
+ import { c as listDeliverableMessageChannels, l as normalizeMessageChannel } from "./message-channel-dua8OOGJ.js";
6
+ import { r as normalizeChannelId } from "./plugins-D6PBOdkn.js";
7
+ import { t as getChannelDock } from "./dock-BdXLb5oY.js";
8
+ import { c as resolveStorePath, n as resolveSessionFilePath, t as resolveDefaultSessionStorePath } from "./paths-DfQGx0_k.js";
9
+ import { t as emitSessionTranscriptUpdate } from "./transcript-events-Bp7fGnwv.js";
10
+ import path from "node:path";
11
+ import fs from "node:fs";
12
+ import fs$1 from "node:fs/promises";
13
+ import crypto from "node:crypto";
14
+ import { CURRENT_SESSION_VERSION, SessionManager } from "@mariozechner/pi-coding-agent";
15
+
16
+ //#region src/utils/account-id.ts
17
+ function normalizeAccountId(value) {
18
+ if (typeof value !== "string") return;
19
+ return value.trim() || void 0;
20
+ }
21
+
22
+ //#endregion
23
+ //#region src/utils/delivery-context.ts
24
+ function normalizeDeliveryContext(context) {
25
+ if (!context) return;
26
+ const channel = typeof context.channel === "string" ? normalizeMessageChannel(context.channel) ?? context.channel.trim() : void 0;
27
+ const to = typeof context.to === "string" ? context.to.trim() : void 0;
28
+ const accountId = normalizeAccountId(context.accountId);
29
+ const threadId = typeof context.threadId === "number" && Number.isFinite(context.threadId) ? Math.trunc(context.threadId) : typeof context.threadId === "string" ? context.threadId.trim() : void 0;
30
+ const normalizedThreadId = typeof threadId === "string" ? threadId ? threadId : void 0 : threadId;
31
+ if (!channel && !to && !accountId && normalizedThreadId == null) return;
32
+ const normalized = {
33
+ channel: channel || void 0,
34
+ to: to || void 0,
35
+ accountId
36
+ };
37
+ if (normalizedThreadId != null) normalized.threadId = normalizedThreadId;
38
+ return normalized;
39
+ }
40
+ function normalizeSessionDeliveryFields(source) {
41
+ if (!source) return {
42
+ deliveryContext: void 0,
43
+ lastChannel: void 0,
44
+ lastTo: void 0,
45
+ lastAccountId: void 0,
46
+ lastThreadId: void 0
47
+ };
48
+ const merged = mergeDeliveryContext(normalizeDeliveryContext({
49
+ channel: source.lastChannel ?? source.channel,
50
+ to: source.lastTo,
51
+ accountId: source.lastAccountId,
52
+ threadId: source.lastThreadId
53
+ }), normalizeDeliveryContext(source.deliveryContext));
54
+ if (!merged) return {
55
+ deliveryContext: void 0,
56
+ lastChannel: void 0,
57
+ lastTo: void 0,
58
+ lastAccountId: void 0,
59
+ lastThreadId: void 0
60
+ };
61
+ return {
62
+ deliveryContext: merged,
63
+ lastChannel: merged.channel,
64
+ lastTo: merged.to,
65
+ lastAccountId: merged.accountId,
66
+ lastThreadId: merged.threadId
67
+ };
68
+ }
69
+ function deliveryContextFromSession(entry) {
70
+ if (!entry) return;
71
+ return normalizeSessionDeliveryFields({
72
+ channel: entry.channel,
73
+ lastChannel: entry.lastChannel,
74
+ lastTo: entry.lastTo,
75
+ lastAccountId: entry.lastAccountId,
76
+ lastThreadId: entry.lastThreadId ?? entry.deliveryContext?.threadId ?? entry.origin?.threadId,
77
+ deliveryContext: entry.deliveryContext
78
+ }).deliveryContext;
79
+ }
80
+ function mergeDeliveryContext(primary, fallback) {
81
+ const normalizedPrimary = normalizeDeliveryContext(primary);
82
+ const normalizedFallback = normalizeDeliveryContext(fallback);
83
+ if (!normalizedPrimary && !normalizedFallback) return;
84
+ return normalizeDeliveryContext({
85
+ channel: normalizedPrimary?.channel ?? normalizedFallback?.channel,
86
+ to: normalizedPrimary?.to ?? normalizedFallback?.to,
87
+ accountId: normalizedPrimary?.accountId ?? normalizedFallback?.accountId,
88
+ threadId: normalizedPrimary?.threadId ?? normalizedFallback?.threadId
89
+ });
90
+ }
91
+ function deliveryContextKey(context) {
92
+ const normalized = normalizeDeliveryContext(context);
93
+ if (!normalized?.channel || !normalized?.to) return;
94
+ const threadId = normalized.threadId != null && normalized.threadId !== "" ? String(normalized.threadId) : "";
95
+ return `${normalized.channel}|${normalized.to}|${normalized.accountId ?? ""}|${threadId}`;
96
+ }
97
+
98
+ //#endregion
99
+ //#region src/config/sessions/group.ts
100
+ const getGroupSurfaces = () => new Set([...listDeliverableMessageChannels(), "webchat"]);
101
+ function normalizeGroupLabel(raw) {
102
+ const trimmed = raw?.trim().toLowerCase() ?? "";
103
+ if (!trimmed) return "";
104
+ return trimmed.replace(/\s+/g, "-").replace(/[^a-z0-9#@._+-]+/g, "-").replace(/-{2,}/g, "-").replace(/^[-.]+|[-.]+$/g, "");
105
+ }
106
+ function shortenGroupId(value) {
107
+ const trimmed = value?.trim() ?? "";
108
+ if (!trimmed) return "";
109
+ if (trimmed.length <= 14) return trimmed;
110
+ return `${trimmed.slice(0, 6)}...${trimmed.slice(-4)}`;
111
+ }
112
+ function buildGroupDisplayName(params) {
113
+ const providerKey = (params.provider?.trim().toLowerCase() || "group").trim();
114
+ const groupChannel = params.groupChannel?.trim();
115
+ const space = params.space?.trim();
116
+ const subject = params.subject?.trim();
117
+ const detail = (groupChannel && space ? `${space}${groupChannel.startsWith("#") ? "" : "#"}${groupChannel}` : groupChannel || subject || space || "") || "";
118
+ const fallbackId = params.id?.trim() || params.key;
119
+ const rawLabel = detail || fallbackId;
120
+ let token = normalizeGroupLabel(rawLabel);
121
+ if (!token) token = normalizeGroupLabel(shortenGroupId(rawLabel));
122
+ if (!params.groupChannel && token.startsWith("#")) token = token.replace(/^#+/, "");
123
+ if (token && !/^[@#]/.test(token) && !token.startsWith("g-") && !token.includes("#")) token = `g-${token}`;
124
+ return token ? `${providerKey}:${token}` : providerKey;
125
+ }
126
+ function resolveGroupSessionKey(ctx) {
127
+ const from = typeof ctx.From === "string" ? ctx.From.trim() : "";
128
+ const chatType = ctx.ChatType?.trim().toLowerCase();
129
+ const normalizedChatType = chatType === "channel" ? "channel" : chatType === "group" ? "group" : void 0;
130
+ const isWhatsAppGroupId = from.toLowerCase().endsWith("@g.us");
131
+ if (!(normalizedChatType === "group" || normalizedChatType === "channel" || from.includes(":group:") || from.includes(":channel:") || isWhatsAppGroupId)) return null;
132
+ const providerHint = ctx.Provider?.trim().toLowerCase();
133
+ const parts = from.split(":").filter(Boolean);
134
+ const head = parts[0]?.trim().toLowerCase() ?? "";
135
+ const headIsSurface = head ? getGroupSurfaces().has(head) : false;
136
+ const provider = headIsSurface ? head : providerHint ?? (isWhatsAppGroupId ? "whatsapp" : void 0);
137
+ if (!provider) return null;
138
+ const second = parts[1]?.trim().toLowerCase();
139
+ const secondIsKind = second === "group" || second === "channel";
140
+ const kind = secondIsKind ? second : from.includes(":channel:") || normalizedChatType === "channel" ? "channel" : "group";
141
+ const finalId = (headIsSurface ? secondIsKind ? parts.slice(2).join(":") : parts.slice(1).join(":") : from).trim().toLowerCase();
142
+ if (!finalId) return null;
143
+ return {
144
+ key: `${provider}:${kind}:${finalId}`,
145
+ channel: provider,
146
+ id: finalId,
147
+ chatType: kind === "channel" ? "channel" : "group"
148
+ };
149
+ }
150
+
151
+ //#endregion
152
+ //#region src/channels/chat-type.ts
153
+ function normalizeChatType(raw) {
154
+ const value = raw?.trim().toLowerCase();
155
+ if (!value) return;
156
+ if (value === "direct" || value === "dm") return "direct";
157
+ if (value === "group") return "group";
158
+ if (value === "channel") return "channel";
159
+ }
160
+
161
+ //#endregion
162
+ //#region src/channels/conversation-label.ts
163
+ function extractConversationId(from) {
164
+ const trimmed = from?.trim();
165
+ if (!trimmed) return;
166
+ const parts = trimmed.split(":").filter(Boolean);
167
+ return parts.length > 0 ? parts[parts.length - 1] : trimmed;
168
+ }
169
+ function shouldAppendId(id) {
170
+ if (/^[0-9]+$/.test(id)) return true;
171
+ if (id.includes("@g.us")) return true;
172
+ return false;
173
+ }
174
+ function resolveConversationLabel(ctx) {
175
+ const explicit = ctx.ConversationLabel?.trim();
176
+ if (explicit) return explicit;
177
+ const threadLabel = ctx.ThreadLabel?.trim();
178
+ if (threadLabel) return threadLabel;
179
+ if (normalizeChatType(ctx.ChatType) === "direct") return ctx.SenderName?.trim() || ctx.From?.trim() || void 0;
180
+ const base = ctx.GroupChannel?.trim() || ctx.GroupSubject?.trim() || ctx.GroupSpace?.trim() || ctx.From?.trim() || "";
181
+ if (!base) return;
182
+ const id = extractConversationId(ctx.From);
183
+ if (!id) return base;
184
+ if (!shouldAppendId(id)) return base;
185
+ if (base === id) return base;
186
+ if (base.includes(id)) return base;
187
+ if (base.toLowerCase().includes(" id:")) return base;
188
+ if (base.startsWith("#") || base.startsWith("@")) return base;
189
+ return `${base} id:${id}`;
190
+ }
191
+
192
+ //#endregion
193
+ //#region src/config/sessions/metadata.ts
194
+ const mergeOrigin = (existing, next) => {
195
+ if (!existing && !next) return;
196
+ const merged = existing ? { ...existing } : {};
197
+ if (next?.label) merged.label = next.label;
198
+ if (next?.provider) merged.provider = next.provider;
199
+ if (next?.surface) merged.surface = next.surface;
200
+ if (next?.chatType) merged.chatType = next.chatType;
201
+ if (next?.from) merged.from = next.from;
202
+ if (next?.to) merged.to = next.to;
203
+ if (next?.accountId) merged.accountId = next.accountId;
204
+ if (next?.threadId != null && next.threadId !== "") merged.threadId = next.threadId;
205
+ return Object.keys(merged).length > 0 ? merged : void 0;
206
+ };
207
+ function deriveSessionOrigin(ctx) {
208
+ const label = resolveConversationLabel(ctx)?.trim();
209
+ const provider = normalizeMessageChannel(typeof ctx.OriginatingChannel === "string" && ctx.OriginatingChannel || ctx.Surface || ctx.Provider);
210
+ const surface = ctx.Surface?.trim().toLowerCase();
211
+ const chatType = normalizeChatType(ctx.ChatType) ?? void 0;
212
+ const from = ctx.From?.trim();
213
+ const to = (typeof ctx.OriginatingTo === "string" ? ctx.OriginatingTo : ctx.To)?.trim() ?? void 0;
214
+ const accountId = ctx.AccountId?.trim();
215
+ const threadId = ctx.MessageThreadId ?? void 0;
216
+ const origin = {};
217
+ if (label) origin.label = label;
218
+ if (provider) origin.provider = provider;
219
+ if (surface) origin.surface = surface;
220
+ if (chatType) origin.chatType = chatType;
221
+ if (from) origin.from = from;
222
+ if (to) origin.to = to;
223
+ if (accountId) origin.accountId = accountId;
224
+ if (threadId != null && threadId !== "") origin.threadId = threadId;
225
+ return Object.keys(origin).length > 0 ? origin : void 0;
226
+ }
227
+ function snapshotSessionOrigin(entry) {
228
+ if (!entry?.origin) return;
229
+ return { ...entry.origin };
230
+ }
231
+ function deriveGroupSessionPatch(params) {
232
+ const resolution = params.groupResolution ?? resolveGroupSessionKey(params.ctx);
233
+ if (!resolution?.channel) return null;
234
+ const channel = resolution.channel;
235
+ const subject = params.ctx.GroupSubject?.trim();
236
+ const space = params.ctx.GroupSpace?.trim();
237
+ const explicitChannel = params.ctx.GroupChannel?.trim();
238
+ const normalizedChannel = normalizeChannelId(channel);
239
+ const isChannelProvider = Boolean(normalizedChannel && getChannelDock(normalizedChannel)?.capabilities.chatTypes.includes("channel"));
240
+ const nextGroupChannel = explicitChannel ?? ((resolution.chatType === "channel" || isChannelProvider) && subject && subject.startsWith("#") ? subject : void 0);
241
+ const nextSubject = nextGroupChannel ? void 0 : subject;
242
+ const patch = {
243
+ chatType: resolution.chatType ?? "group",
244
+ channel,
245
+ groupId: resolution.id
246
+ };
247
+ if (nextSubject) patch.subject = nextSubject;
248
+ if (nextGroupChannel) patch.groupChannel = nextGroupChannel;
249
+ if (space) patch.space = space;
250
+ const displayName = buildGroupDisplayName({
251
+ provider: channel,
252
+ subject: nextSubject ?? params.existing?.subject,
253
+ groupChannel: nextGroupChannel ?? params.existing?.groupChannel,
254
+ space: space ?? params.existing?.space,
255
+ id: resolution.id,
256
+ key: params.sessionKey
257
+ });
258
+ if (displayName) patch.displayName = displayName;
259
+ return patch;
260
+ }
261
+ function deriveSessionMetaPatch(params) {
262
+ const groupPatch = deriveGroupSessionPatch(params);
263
+ const origin = deriveSessionOrigin(params.ctx);
264
+ if (!groupPatch && !origin) return null;
265
+ const patch = groupPatch ? { ...groupPatch } : {};
266
+ const mergedOrigin = mergeOrigin(params.existing?.origin, origin);
267
+ if (mergedOrigin) patch.origin = mergedOrigin;
268
+ return Object.keys(patch).length > 0 ? patch : null;
269
+ }
270
+
271
+ //#endregion
272
+ //#region src/config/sessions/main-session.ts
273
+ function resolveMainSessionKey(cfg) {
274
+ if (cfg?.session?.scope === "global") return "global";
275
+ const agents = cfg?.agents?.list ?? [];
276
+ return buildAgentMainSessionKey({
277
+ agentId: normalizeAgentId(agents.find((agent) => agent?.default)?.id ?? agents[0]?.id ?? DEFAULT_AGENT_ID),
278
+ mainKey: normalizeMainKey(cfg?.session?.mainKey)
279
+ });
280
+ }
281
+ function resolveMainSessionKeyFromConfig() {
282
+ return resolveMainSessionKey(loadConfig());
283
+ }
284
+ function resolveAgentMainSessionKey(params) {
285
+ const mainKey = normalizeMainKey(params.cfg?.session?.mainKey);
286
+ return buildAgentMainSessionKey({
287
+ agentId: params.agentId,
288
+ mainKey
289
+ });
290
+ }
291
+ function resolveExplicitAgentSessionKey(params) {
292
+ const agentId = params.agentId?.trim();
293
+ if (!agentId) return;
294
+ return resolveAgentMainSessionKey({
295
+ cfg: params.cfg,
296
+ agentId
297
+ });
298
+ }
299
+ function canonicalizeMainSessionAlias(params) {
300
+ const raw = params.sessionKey.trim();
301
+ if (!raw) return raw;
302
+ const agentId = normalizeAgentId(params.agentId);
303
+ const mainKey = normalizeMainKey(params.cfg?.session?.mainKey);
304
+ const agentMainSessionKey = buildAgentMainSessionKey({
305
+ agentId,
306
+ mainKey
307
+ });
308
+ const agentMainAliasKey = buildAgentMainSessionKey({
309
+ agentId,
310
+ mainKey: "main"
311
+ });
312
+ const isMainAlias = raw === "main" || raw === mainKey || raw === agentMainSessionKey || raw === agentMainAliasKey;
313
+ if (params.cfg?.session?.scope === "global" && isMainAlias) return "global";
314
+ if (isMainAlias) return agentMainSessionKey;
315
+ return raw;
316
+ }
317
+
318
+ //#endregion
319
+ //#region src/config/sessions/types.ts
320
+ function mergeSessionEntry(existing, patch) {
321
+ const sessionId = patch.sessionId ?? existing?.sessionId ?? crypto.randomUUID();
322
+ const updatedAt = Math.max(existing?.updatedAt ?? 0, patch.updatedAt ?? 0, Date.now());
323
+ if (!existing) return {
324
+ ...patch,
325
+ sessionId,
326
+ updatedAt
327
+ };
328
+ return {
329
+ ...existing,
330
+ ...patch,
331
+ sessionId,
332
+ updatedAt
333
+ };
334
+ }
335
+ function resolveFreshSessionTotalTokens(entry) {
336
+ const total = entry?.totalTokens;
337
+ if (typeof total !== "number" || !Number.isFinite(total) || total < 0) return;
338
+ if (entry?.totalTokensFresh === false) return;
339
+ return total;
340
+ }
341
+ const DEFAULT_RESET_TRIGGERS = ["/new", "/reset"];
342
+ const DEFAULT_IDLE_MINUTES = 60;
343
+
344
+ //#endregion
345
+ //#region src/config/sessions/reset.ts
346
+ const DEFAULT_RESET_MODE = "daily";
347
+ const DEFAULT_RESET_AT_HOUR = 4;
348
+ const THREAD_SESSION_MARKERS = [":thread:", ":topic:"];
349
+ const GROUP_SESSION_MARKERS = [":group:", ":channel:"];
350
+ function isThreadSessionKey(sessionKey) {
351
+ const normalized = (sessionKey ?? "").toLowerCase();
352
+ if (!normalized) return false;
353
+ return THREAD_SESSION_MARKERS.some((marker) => normalized.includes(marker));
354
+ }
355
+ function resolveSessionResetType(params) {
356
+ if (params.isThread || isThreadSessionKey(params.sessionKey)) return "thread";
357
+ if (params.isGroup) return "group";
358
+ const normalized = (params.sessionKey ?? "").toLowerCase();
359
+ if (GROUP_SESSION_MARKERS.some((marker) => normalized.includes(marker))) return "group";
360
+ return "direct";
361
+ }
362
+ function resolveThreadFlag(params) {
363
+ if (params.messageThreadId != null) return true;
364
+ if (params.threadLabel?.trim()) return true;
365
+ if (params.threadStarterBody?.trim()) return true;
366
+ if (params.parentSessionKey?.trim()) return true;
367
+ return isThreadSessionKey(params.sessionKey);
368
+ }
369
+ function resolveDailyResetAtMs(now, atHour) {
370
+ const normalizedAtHour = normalizeResetAtHour(atHour);
371
+ const resetAt = new Date(now);
372
+ resetAt.setHours(normalizedAtHour, 0, 0, 0);
373
+ if (now < resetAt.getTime()) resetAt.setDate(resetAt.getDate() - 1);
374
+ return resetAt.getTime();
375
+ }
376
+ function resolveSessionResetPolicy(params) {
377
+ const sessionCfg = params.sessionCfg;
378
+ const baseReset = params.resetOverride ?? sessionCfg?.reset;
379
+ const typeReset = params.resetOverride ? void 0 : sessionCfg?.resetByType?.[params.resetType] ?? (params.resetType === "direct" ? (sessionCfg?.resetByType)?.dm : void 0);
380
+ const hasExplicitReset = Boolean(baseReset || sessionCfg?.resetByType);
381
+ const legacyIdleMinutes = params.resetOverride ? void 0 : sessionCfg?.idleMinutes;
382
+ const mode = typeReset?.mode ?? baseReset?.mode ?? (!hasExplicitReset && legacyIdleMinutes != null ? "idle" : DEFAULT_RESET_MODE);
383
+ const atHour = normalizeResetAtHour(typeReset?.atHour ?? baseReset?.atHour ?? DEFAULT_RESET_AT_HOUR);
384
+ const idleMinutesRaw = typeReset?.idleMinutes ?? baseReset?.idleMinutes ?? legacyIdleMinutes;
385
+ let idleMinutes;
386
+ if (idleMinutesRaw != null) {
387
+ const normalized = Math.floor(idleMinutesRaw);
388
+ if (Number.isFinite(normalized)) idleMinutes = Math.max(normalized, 1);
389
+ } else if (mode === "idle") idleMinutes = DEFAULT_IDLE_MINUTES;
390
+ return {
391
+ mode,
392
+ atHour,
393
+ idleMinutes
394
+ };
395
+ }
396
+ function resolveChannelResetConfig(params) {
397
+ const resetByChannel = params.sessionCfg?.resetByChannel;
398
+ if (!resetByChannel) return;
399
+ const normalized = normalizeMessageChannel(params.channel);
400
+ const fallback = params.channel?.trim().toLowerCase();
401
+ const key = normalized ?? fallback;
402
+ if (!key) return;
403
+ return resetByChannel[key] ?? resetByChannel[key.toLowerCase()];
404
+ }
405
+ function evaluateSessionFreshness(params) {
406
+ const dailyResetAt = params.policy.mode === "daily" ? resolveDailyResetAtMs(params.now, params.policy.atHour) : void 0;
407
+ const idleExpiresAt = params.policy.idleMinutes != null ? params.updatedAt + params.policy.idleMinutes * 6e4 : void 0;
408
+ const staleDaily = dailyResetAt != null && params.updatedAt < dailyResetAt;
409
+ const staleIdle = idleExpiresAt != null && params.now > idleExpiresAt;
410
+ return {
411
+ fresh: !(staleDaily || staleIdle),
412
+ dailyResetAt,
413
+ idleExpiresAt
414
+ };
415
+ }
416
+ function normalizeResetAtHour(value) {
417
+ if (typeof value !== "number" || !Number.isFinite(value)) return DEFAULT_RESET_AT_HOUR;
418
+ const normalized = Math.floor(value);
419
+ if (!Number.isFinite(normalized)) return DEFAULT_RESET_AT_HOUR;
420
+ if (normalized < 0) return 0;
421
+ if (normalized > 23) return 23;
422
+ return normalized;
423
+ }
424
+
425
+ //#endregion
426
+ //#region src/config/sessions/session-key.ts
427
+ function deriveSessionKey(scope, ctx) {
428
+ if (scope === "global") return "global";
429
+ const resolvedGroup = resolveGroupSessionKey(ctx);
430
+ if (resolvedGroup) return resolvedGroup.key;
431
+ return (ctx.From ? normalizeE164(ctx.From) : "") || "unknown";
432
+ }
433
+ /**
434
+ * Resolve the session key with a canonical direct-chat bucket (default: "main").
435
+ * All non-group direct chats collapse to this bucket; groups stay isolated.
436
+ */
437
+ function resolveSessionKey(scope, ctx, mainKey) {
438
+ const explicit = ctx.SessionKey?.trim();
439
+ if (explicit) return explicit.toLowerCase();
440
+ const raw = deriveSessionKey(scope, ctx);
441
+ if (scope === "global") return raw;
442
+ const canonical = buildAgentMainSessionKey({
443
+ agentId: DEFAULT_AGENT_ID,
444
+ mainKey: normalizeMainKey(mainKey)
445
+ });
446
+ if (!(raw.includes(":group:") || raw.includes(":channel:"))) return canonical;
447
+ return `agent:${DEFAULT_AGENT_ID}:${raw}`;
448
+ }
449
+
450
+ //#endregion
451
+ //#region src/agents/session-write-lock.ts
452
+ const CLEANUP_SIGNALS = [
453
+ "SIGINT",
454
+ "SIGTERM",
455
+ "SIGQUIT",
456
+ "SIGABRT"
457
+ ];
458
+ const CLEANUP_STATE_KEY = Symbol.for("anima.sessionWriteLockCleanupState");
459
+ const HELD_LOCKS_KEY = Symbol.for("anima.sessionWriteLockHeldLocks");
460
+ function resolveHeldLocks() {
461
+ const proc = process;
462
+ if (!proc[HELD_LOCKS_KEY]) proc[HELD_LOCKS_KEY] = /* @__PURE__ */ new Map();
463
+ return proc[HELD_LOCKS_KEY];
464
+ }
465
+ const HELD_LOCKS = resolveHeldLocks();
466
+ function resolveCleanupState() {
467
+ const proc = process;
468
+ if (!proc[CLEANUP_STATE_KEY]) proc[CLEANUP_STATE_KEY] = {
469
+ registered: false,
470
+ cleanupHandlers: /* @__PURE__ */ new Map()
471
+ };
472
+ return proc[CLEANUP_STATE_KEY];
473
+ }
474
+ function isAlive(pid) {
475
+ if (!Number.isFinite(pid) || pid <= 0) return false;
476
+ try {
477
+ process.kill(pid, 0);
478
+ return true;
479
+ } catch {
480
+ return false;
481
+ }
482
+ }
483
+ /**
484
+ * Synchronously release all held locks.
485
+ * Used during process exit when async operations aren't reliable.
486
+ */
487
+ function releaseAllLocksSync() {
488
+ for (const [sessionFile, held] of HELD_LOCKS) {
489
+ try {
490
+ if (typeof held.handle.close === "function") held.handle.close().catch(() => {});
491
+ } catch {}
492
+ try {
493
+ fs.rmSync(held.lockPath, { force: true });
494
+ } catch {}
495
+ HELD_LOCKS.delete(sessionFile);
496
+ }
497
+ }
498
+ function handleTerminationSignal(signal) {
499
+ releaseAllLocksSync();
500
+ const cleanupState = resolveCleanupState();
501
+ if (process.listenerCount(signal) === 1) {
502
+ const handler = cleanupState.cleanupHandlers.get(signal);
503
+ if (handler) {
504
+ process.off(signal, handler);
505
+ cleanupState.cleanupHandlers.delete(signal);
506
+ }
507
+ try {
508
+ process.kill(process.pid, signal);
509
+ } catch {}
510
+ }
511
+ }
512
+ function registerCleanupHandlers() {
513
+ const cleanupState = resolveCleanupState();
514
+ if (!cleanupState.registered) {
515
+ cleanupState.registered = true;
516
+ process.on("exit", () => {
517
+ releaseAllLocksSync();
518
+ });
519
+ }
520
+ for (const signal of CLEANUP_SIGNALS) {
521
+ if (cleanupState.cleanupHandlers.has(signal)) continue;
522
+ try {
523
+ const handler = () => handleTerminationSignal(signal);
524
+ cleanupState.cleanupHandlers.set(signal, handler);
525
+ process.on(signal, handler);
526
+ } catch {}
527
+ }
528
+ }
529
+ async function readLockPayload(lockPath) {
530
+ try {
531
+ const raw = await fs$1.readFile(lockPath, "utf8");
532
+ const parsed = JSON.parse(raw);
533
+ if (typeof parsed.pid !== "number") return null;
534
+ if (typeof parsed.createdAt !== "string") return null;
535
+ return {
536
+ pid: parsed.pid,
537
+ createdAt: parsed.createdAt
538
+ };
539
+ } catch {
540
+ return null;
541
+ }
542
+ }
543
+ async function acquireSessionWriteLock(params) {
544
+ registerCleanupHandlers();
545
+ const timeoutMs = params.timeoutMs ?? 1e4;
546
+ const staleMs = params.staleMs ?? 1800 * 1e3;
547
+ const sessionFile = path.resolve(params.sessionFile);
548
+ const sessionDir = path.dirname(sessionFile);
549
+ await fs$1.mkdir(sessionDir, { recursive: true });
550
+ let normalizedDir = sessionDir;
551
+ try {
552
+ normalizedDir = await fs$1.realpath(sessionDir);
553
+ } catch {}
554
+ const normalizedSessionFile = path.join(normalizedDir, path.basename(sessionFile));
555
+ const lockPath = `${normalizedSessionFile}.lock`;
556
+ const held = HELD_LOCKS.get(normalizedSessionFile);
557
+ if (held) {
558
+ held.count += 1;
559
+ return { release: async () => {
560
+ const current = HELD_LOCKS.get(normalizedSessionFile);
561
+ if (!current) return;
562
+ current.count -= 1;
563
+ if (current.count > 0) return;
564
+ HELD_LOCKS.delete(normalizedSessionFile);
565
+ await current.handle.close();
566
+ await fs$1.rm(current.lockPath, { force: true });
567
+ } };
568
+ }
569
+ const startedAt = Date.now();
570
+ let attempt = 0;
571
+ while (Date.now() - startedAt < timeoutMs) {
572
+ attempt += 1;
573
+ try {
574
+ const handle = await fs$1.open(lockPath, "wx");
575
+ await handle.writeFile(JSON.stringify({
576
+ pid: process.pid,
577
+ createdAt: (/* @__PURE__ */ new Date()).toISOString()
578
+ }, null, 2), "utf8");
579
+ HELD_LOCKS.set(normalizedSessionFile, {
580
+ count: 1,
581
+ handle,
582
+ lockPath
583
+ });
584
+ return { release: async () => {
585
+ const current = HELD_LOCKS.get(normalizedSessionFile);
586
+ if (!current) return;
587
+ current.count -= 1;
588
+ if (current.count > 0) return;
589
+ HELD_LOCKS.delete(normalizedSessionFile);
590
+ await current.handle.close();
591
+ await fs$1.rm(current.lockPath, { force: true });
592
+ } };
593
+ } catch (err) {
594
+ if (err.code !== "EEXIST") throw err;
595
+ const payload = await readLockPayload(lockPath);
596
+ const createdAt = payload?.createdAt ? Date.parse(payload.createdAt) : NaN;
597
+ const stale = !Number.isFinite(createdAt) || Date.now() - createdAt > staleMs;
598
+ const alive = payload?.pid ? isAlive(payload.pid) : false;
599
+ if (stale || !alive) {
600
+ await fs$1.rm(lockPath, { force: true });
601
+ continue;
602
+ }
603
+ const delay = Math.min(1e3, 50 * attempt);
604
+ await new Promise((r) => setTimeout(r, delay));
605
+ }
606
+ }
607
+ const payload = await readLockPayload(lockPath);
608
+ const owner = payload?.pid ? `pid=${payload.pid}` : "unknown";
609
+ throw new Error(`session file locked (timeout ${timeoutMs}ms): ${owner} ${lockPath}`);
610
+ }
611
+ const __testing = {
612
+ cleanupSignals: [...CLEANUP_SIGNALS],
613
+ handleTerminationSignal,
614
+ releaseAllLocksSync
615
+ };
616
+
617
+ //#endregion
618
+ //#region src/config/cache-utils.ts
619
+ function resolveCacheTtlMs(params) {
620
+ const { envValue, defaultTtlMs } = params;
621
+ if (envValue) {
622
+ const parsed = Number.parseInt(envValue, 10);
623
+ if (Number.isFinite(parsed) && parsed >= 0) return parsed;
624
+ }
625
+ return defaultTtlMs;
626
+ }
627
+ function isCacheEnabled(ttlMs) {
628
+ return ttlMs > 0;
629
+ }
630
+ function getFileMtimeMs(filePath) {
631
+ try {
632
+ return fs.statSync(filePath).mtimeMs;
633
+ } catch {
634
+ return;
635
+ }
636
+ }
637
+
638
+ //#endregion
639
+ //#region src/config/sessions/store.ts
640
+ const log = createSubsystemLogger("sessions/store");
641
+ const SESSION_STORE_CACHE = /* @__PURE__ */ new Map();
642
+ const DEFAULT_SESSION_STORE_TTL_MS = 45e3;
643
+ function isSessionStoreRecord(value) {
644
+ return !!value && typeof value === "object" && !Array.isArray(value);
645
+ }
646
+ function getSessionStoreTtl() {
647
+ return resolveCacheTtlMs({
648
+ envValue: process.env.ANIMA_SESSION_CACHE_TTL_MS,
649
+ defaultTtlMs: DEFAULT_SESSION_STORE_TTL_MS
650
+ });
651
+ }
652
+ function isSessionStoreCacheEnabled() {
653
+ return isCacheEnabled(getSessionStoreTtl());
654
+ }
655
+ function isSessionStoreCacheValid(entry) {
656
+ const now = Date.now();
657
+ const ttl = getSessionStoreTtl();
658
+ return now - entry.loadedAt <= ttl;
659
+ }
660
+ function invalidateSessionStoreCache(storePath) {
661
+ SESSION_STORE_CACHE.delete(storePath);
662
+ }
663
+ function normalizeSessionEntryDelivery(entry) {
664
+ const normalized = normalizeSessionDeliveryFields({
665
+ channel: entry.channel,
666
+ lastChannel: entry.lastChannel,
667
+ lastTo: entry.lastTo,
668
+ lastAccountId: entry.lastAccountId,
669
+ lastThreadId: entry.lastThreadId ?? entry.deliveryContext?.threadId ?? entry.origin?.threadId,
670
+ deliveryContext: entry.deliveryContext
671
+ });
672
+ const nextDelivery = normalized.deliveryContext;
673
+ const sameDelivery = (entry.deliveryContext?.channel ?? void 0) === nextDelivery?.channel && (entry.deliveryContext?.to ?? void 0) === nextDelivery?.to && (entry.deliveryContext?.accountId ?? void 0) === nextDelivery?.accountId && (entry.deliveryContext?.threadId ?? void 0) === nextDelivery?.threadId;
674
+ const sameLast = entry.lastChannel === normalized.lastChannel && entry.lastTo === normalized.lastTo && entry.lastAccountId === normalized.lastAccountId && entry.lastThreadId === normalized.lastThreadId;
675
+ if (sameDelivery && sameLast) return entry;
676
+ return {
677
+ ...entry,
678
+ deliveryContext: nextDelivery,
679
+ lastChannel: normalized.lastChannel,
680
+ lastTo: normalized.lastTo,
681
+ lastAccountId: normalized.lastAccountId,
682
+ lastThreadId: normalized.lastThreadId
683
+ };
684
+ }
685
+ function removeThreadFromDeliveryContext(context) {
686
+ if (!context || context.threadId == null) return context;
687
+ const next = { ...context };
688
+ delete next.threadId;
689
+ return next;
690
+ }
691
+ function normalizeSessionStore(store) {
692
+ for (const [key, entry] of Object.entries(store)) {
693
+ if (!entry) continue;
694
+ const normalized = normalizeSessionEntryDelivery(entry);
695
+ if (normalized !== entry) store[key] = normalized;
696
+ }
697
+ }
698
+ function loadSessionStore(storePath, opts = {}) {
699
+ if (!opts.skipCache && isSessionStoreCacheEnabled()) {
700
+ const cached = SESSION_STORE_CACHE.get(storePath);
701
+ if (cached && isSessionStoreCacheValid(cached)) {
702
+ if (getFileMtimeMs(storePath) === cached.mtimeMs) return structuredClone(cached.store);
703
+ invalidateSessionStoreCache(storePath);
704
+ }
705
+ }
706
+ let store = {};
707
+ let mtimeMs = getFileMtimeMs(storePath);
708
+ try {
709
+ const raw = fs.readFileSync(storePath, "utf-8");
710
+ const parsed = JSON.parse(raw);
711
+ if (isSessionStoreRecord(parsed)) store = parsed;
712
+ mtimeMs = getFileMtimeMs(storePath) ?? mtimeMs;
713
+ } catch {}
714
+ for (const entry of Object.values(store)) {
715
+ if (!entry || typeof entry !== "object") continue;
716
+ const rec = entry;
717
+ if (typeof rec.channel !== "string" && typeof rec.provider === "string") {
718
+ rec.channel = rec.provider;
719
+ delete rec.provider;
720
+ }
721
+ if (typeof rec.lastChannel !== "string" && typeof rec.lastProvider === "string") {
722
+ rec.lastChannel = rec.lastProvider;
723
+ delete rec.lastProvider;
724
+ }
725
+ if (typeof rec.groupChannel !== "string" && typeof rec.room === "string") {
726
+ rec.groupChannel = rec.room;
727
+ delete rec.room;
728
+ } else if ("room" in rec) delete rec.room;
729
+ }
730
+ if (!opts.skipCache && isSessionStoreCacheEnabled()) SESSION_STORE_CACHE.set(storePath, {
731
+ store: structuredClone(store),
732
+ loadedAt: Date.now(),
733
+ storePath,
734
+ mtimeMs
735
+ });
736
+ return structuredClone(store);
737
+ }
738
+ function readSessionUpdatedAt(params) {
739
+ try {
740
+ return loadSessionStore(params.storePath)[params.sessionKey]?.updatedAt;
741
+ } catch {
742
+ return;
743
+ }
744
+ }
745
+ const DEFAULT_SESSION_PRUNE_AFTER_MS = 720 * 60 * 60 * 1e3;
746
+ const DEFAULT_SESSION_MAX_ENTRIES = 500;
747
+ const DEFAULT_SESSION_ROTATE_BYTES = 10485760;
748
+ const DEFAULT_SESSION_MAINTENANCE_MODE = "warn";
749
+ function resolvePruneAfterMs(maintenance) {
750
+ const raw = maintenance?.pruneAfter ?? maintenance?.pruneDays;
751
+ if (raw === void 0 || raw === null || raw === "") return DEFAULT_SESSION_PRUNE_AFTER_MS;
752
+ try {
753
+ return parseDurationMs(String(raw).trim(), { defaultUnit: "d" });
754
+ } catch {
755
+ return DEFAULT_SESSION_PRUNE_AFTER_MS;
756
+ }
757
+ }
758
+ function resolveRotateBytes(maintenance) {
759
+ const raw = maintenance?.rotateBytes;
760
+ if (raw === void 0 || raw === null || raw === "") return DEFAULT_SESSION_ROTATE_BYTES;
761
+ try {
762
+ return parseByteSize(String(raw).trim(), { defaultUnit: "b" });
763
+ } catch {
764
+ return DEFAULT_SESSION_ROTATE_BYTES;
765
+ }
766
+ }
767
+ /**
768
+ * Resolve maintenance settings from anima.json (`session.maintenance`).
769
+ * Falls back to built-in defaults when config is missing or unset.
770
+ */
771
+ function resolveMaintenanceConfig() {
772
+ let maintenance;
773
+ try {
774
+ maintenance = loadConfig().session?.maintenance;
775
+ } catch {}
776
+ return {
777
+ mode: maintenance?.mode ?? DEFAULT_SESSION_MAINTENANCE_MODE,
778
+ pruneAfterMs: resolvePruneAfterMs(maintenance),
779
+ maxEntries: maintenance?.maxEntries ?? DEFAULT_SESSION_MAX_ENTRIES,
780
+ rotateBytes: resolveRotateBytes(maintenance)
781
+ };
782
+ }
783
+ /**
784
+ * Remove entries whose `updatedAt` is older than the configured threshold.
785
+ * Entries without `updatedAt` are kept (cannot determine staleness).
786
+ * Mutates `store` in-place.
787
+ */
788
+ function pruneStaleEntries(store, overrideMaxAgeMs, opts = {}) {
789
+ const maxAgeMs = overrideMaxAgeMs ?? resolveMaintenanceConfig().pruneAfterMs;
790
+ const cutoffMs = Date.now() - maxAgeMs;
791
+ let pruned = 0;
792
+ for (const [key, entry] of Object.entries(store)) if (entry?.updatedAt != null && entry.updatedAt < cutoffMs) {
793
+ delete store[key];
794
+ pruned++;
795
+ }
796
+ if (pruned > 0 && opts.log !== false) log.info("pruned stale session entries", {
797
+ pruned,
798
+ maxAgeMs
799
+ });
800
+ return pruned;
801
+ }
802
+ /**
803
+ * Cap the store to the N most recently updated entries.
804
+ * Entries without `updatedAt` are sorted last (removed first when over limit).
805
+ * Mutates `store` in-place.
806
+ */
807
+ function getEntryUpdatedAt(entry) {
808
+ return entry?.updatedAt ?? Number.NEGATIVE_INFINITY;
809
+ }
810
+ function getActiveSessionMaintenanceWarning(params) {
811
+ const activeSessionKey = params.activeSessionKey.trim();
812
+ if (!activeSessionKey) return null;
813
+ const activeEntry = params.store[activeSessionKey];
814
+ if (!activeEntry) return null;
815
+ const cutoffMs = (params.nowMs ?? Date.now()) - params.pruneAfterMs;
816
+ const wouldPrune = activeEntry.updatedAt != null ? activeEntry.updatedAt < cutoffMs : false;
817
+ const keys = Object.keys(params.store);
818
+ const wouldCap = keys.length > params.maxEntries && keys.toSorted((a, b) => getEntryUpdatedAt(params.store[b]) - getEntryUpdatedAt(params.store[a])).slice(params.maxEntries).includes(activeSessionKey);
819
+ if (!wouldPrune && !wouldCap) return null;
820
+ return {
821
+ activeSessionKey,
822
+ activeUpdatedAt: activeEntry.updatedAt,
823
+ totalEntries: keys.length,
824
+ pruneAfterMs: params.pruneAfterMs,
825
+ maxEntries: params.maxEntries,
826
+ wouldPrune,
827
+ wouldCap
828
+ };
829
+ }
830
+ function capEntryCount(store, overrideMax, opts = {}) {
831
+ const maxEntries = overrideMax ?? resolveMaintenanceConfig().maxEntries;
832
+ const keys = Object.keys(store);
833
+ if (keys.length <= maxEntries) return 0;
834
+ const toRemove = keys.toSorted((a, b) => {
835
+ const aTime = getEntryUpdatedAt(store[a]);
836
+ return getEntryUpdatedAt(store[b]) - aTime;
837
+ }).slice(maxEntries);
838
+ for (const key of toRemove) delete store[key];
839
+ if (opts.log !== false) log.info("capped session entry count", {
840
+ removed: toRemove.length,
841
+ maxEntries
842
+ });
843
+ return toRemove.length;
844
+ }
845
+ async function getSessionFileSize(storePath) {
846
+ try {
847
+ return (await fs.promises.stat(storePath)).size;
848
+ } catch {
849
+ return null;
850
+ }
851
+ }
852
+ /**
853
+ * Rotate the sessions file if it exceeds the configured size threshold.
854
+ * Renames the current file to `sessions.json.bak.{timestamp}` and cleans up
855
+ * old rotation backups, keeping only the 3 most recent `.bak.*` files.
856
+ */
857
+ async function rotateSessionFile(storePath, overrideBytes) {
858
+ const maxBytes = overrideBytes ?? resolveMaintenanceConfig().rotateBytes;
859
+ const fileSize = await getSessionFileSize(storePath);
860
+ if (fileSize == null) return false;
861
+ if (fileSize <= maxBytes) return false;
862
+ const backupPath = `${storePath}.bak.${Date.now()}`;
863
+ try {
864
+ await fs.promises.rename(storePath, backupPath);
865
+ log.info("rotated session store file", {
866
+ backupPath: path.basename(backupPath),
867
+ sizeBytes: fileSize
868
+ });
869
+ } catch {
870
+ return false;
871
+ }
872
+ try {
873
+ const dir = path.dirname(storePath);
874
+ const baseName = path.basename(storePath);
875
+ const backups = (await fs.promises.readdir(dir)).filter((f) => f.startsWith(`${baseName}.bak.`)).toSorted().toReversed();
876
+ const maxBackups = 3;
877
+ if (backups.length > maxBackups) {
878
+ const toDelete = backups.slice(maxBackups);
879
+ for (const old of toDelete) await fs.promises.unlink(path.join(dir, old)).catch(() => void 0);
880
+ log.info("cleaned up old session store backups", { deleted: toDelete.length });
881
+ }
882
+ } catch {}
883
+ return true;
884
+ }
885
+ async function saveSessionStoreUnlocked(storePath, store, opts) {
886
+ invalidateSessionStoreCache(storePath);
887
+ normalizeSessionStore(store);
888
+ if (!opts?.skipMaintenance) {
889
+ const maintenance = resolveMaintenanceConfig();
890
+ if (maintenance.mode === "warn") {
891
+ const activeSessionKey = opts?.activeSessionKey?.trim();
892
+ if (activeSessionKey) {
893
+ const warning = getActiveSessionMaintenanceWarning({
894
+ store,
895
+ activeSessionKey,
896
+ pruneAfterMs: maintenance.pruneAfterMs,
897
+ maxEntries: maintenance.maxEntries
898
+ });
899
+ if (warning) {
900
+ log.warn("session maintenance would evict active session; skipping enforcement", {
901
+ activeSessionKey: warning.activeSessionKey,
902
+ wouldPrune: warning.wouldPrune,
903
+ wouldCap: warning.wouldCap,
904
+ pruneAfterMs: warning.pruneAfterMs,
905
+ maxEntries: warning.maxEntries
906
+ });
907
+ await opts?.onWarn?.(warning);
908
+ }
909
+ }
910
+ } else {
911
+ pruneStaleEntries(store, maintenance.pruneAfterMs);
912
+ capEntryCount(store, maintenance.maxEntries);
913
+ await rotateSessionFile(storePath, maintenance.rotateBytes);
914
+ }
915
+ }
916
+ await fs.promises.mkdir(path.dirname(storePath), { recursive: true });
917
+ const json = JSON.stringify(store, null, 2);
918
+ if (process.platform === "win32") {
919
+ try {
920
+ await fs.promises.writeFile(storePath, json, "utf-8");
921
+ } catch (err) {
922
+ if ((err && typeof err === "object" && "code" in err ? String(err.code) : null) === "ENOENT") return;
923
+ throw err;
924
+ }
925
+ return;
926
+ }
927
+ const tmp = `${storePath}.${process.pid}.${crypto.randomUUID()}.tmp`;
928
+ try {
929
+ await fs.promises.writeFile(tmp, json, {
930
+ mode: 384,
931
+ encoding: "utf-8"
932
+ });
933
+ await fs.promises.rename(tmp, storePath);
934
+ await fs.promises.chmod(storePath, 384);
935
+ } catch (err) {
936
+ if ((err && typeof err === "object" && "code" in err ? String(err.code) : null) === "ENOENT") {
937
+ try {
938
+ await fs.promises.mkdir(path.dirname(storePath), { recursive: true });
939
+ await fs.promises.writeFile(storePath, json, {
940
+ mode: 384,
941
+ encoding: "utf-8"
942
+ });
943
+ await fs.promises.chmod(storePath, 384);
944
+ } catch (err2) {
945
+ if ((err2 && typeof err2 === "object" && "code" in err2 ? String(err2.code) : null) === "ENOENT") return;
946
+ throw err2;
947
+ }
948
+ return;
949
+ }
950
+ throw err;
951
+ } finally {
952
+ await fs.promises.rm(tmp, { force: true });
953
+ }
954
+ }
955
+ async function saveSessionStore(storePath, store, opts) {
956
+ await withSessionStoreLock(storePath, async () => {
957
+ await saveSessionStoreUnlocked(storePath, store, opts);
958
+ });
959
+ }
960
+ async function updateSessionStore(storePath, mutator, opts) {
961
+ return await withSessionStoreLock(storePath, async () => {
962
+ const store = loadSessionStore(storePath, { skipCache: true });
963
+ const result = await mutator(store);
964
+ await saveSessionStoreUnlocked(storePath, store, opts);
965
+ return result;
966
+ });
967
+ }
968
+ const LOCK_QUEUES = /* @__PURE__ */ new Map();
969
+ function lockTimeoutError(storePath) {
970
+ return /* @__PURE__ */ new Error(`timeout waiting for session store lock: ${storePath}`);
971
+ }
972
+ function getOrCreateLockQueue(storePath) {
973
+ const existing = LOCK_QUEUES.get(storePath);
974
+ if (existing) return existing;
975
+ const created = {
976
+ running: false,
977
+ pending: []
978
+ };
979
+ LOCK_QUEUES.set(storePath, created);
980
+ return created;
981
+ }
982
+ function removePendingTask(queue, task) {
983
+ const idx = queue.pending.indexOf(task);
984
+ if (idx >= 0) queue.pending.splice(idx, 1);
985
+ }
986
+ async function drainSessionStoreLockQueue(storePath) {
987
+ const queue = LOCK_QUEUES.get(storePath);
988
+ if (!queue || queue.running) return;
989
+ queue.running = true;
990
+ try {
991
+ while (queue.pending.length > 0) {
992
+ const task = queue.pending.shift();
993
+ if (!task || task.timedOut) continue;
994
+ if (task.timer) clearTimeout(task.timer);
995
+ task.started = true;
996
+ const remainingTimeoutMs = task.timeoutAt != null ? Math.max(0, task.timeoutAt - Date.now()) : Number.POSITIVE_INFINITY;
997
+ if (task.timeoutAt != null && remainingTimeoutMs <= 0) {
998
+ task.timedOut = true;
999
+ task.reject(lockTimeoutError(storePath));
1000
+ continue;
1001
+ }
1002
+ let lock;
1003
+ let result;
1004
+ let failed;
1005
+ let hasFailure = false;
1006
+ try {
1007
+ lock = await acquireSessionWriteLock({
1008
+ sessionFile: storePath,
1009
+ timeoutMs: remainingTimeoutMs,
1010
+ staleMs: task.staleMs
1011
+ });
1012
+ result = await task.fn();
1013
+ } catch (err) {
1014
+ hasFailure = true;
1015
+ failed = err;
1016
+ } finally {
1017
+ await lock?.release().catch(() => void 0);
1018
+ }
1019
+ if (hasFailure) {
1020
+ task.reject(failed);
1021
+ continue;
1022
+ }
1023
+ task.resolve(result);
1024
+ }
1025
+ } finally {
1026
+ queue.running = false;
1027
+ if (queue.pending.length === 0) LOCK_QUEUES.delete(storePath);
1028
+ else queueMicrotask(() => {
1029
+ drainSessionStoreLockQueue(storePath);
1030
+ });
1031
+ }
1032
+ }
1033
+ async function withSessionStoreLock(storePath, fn, opts = {}) {
1034
+ const timeoutMs = opts.timeoutMs ?? 1e4;
1035
+ const staleMs = opts.staleMs ?? 3e4;
1036
+ opts.pollIntervalMs;
1037
+ const hasTimeout = timeoutMs > 0 && Number.isFinite(timeoutMs);
1038
+ const timeoutAt = hasTimeout ? Date.now() + timeoutMs : void 0;
1039
+ const queue = getOrCreateLockQueue(storePath);
1040
+ return await new Promise((resolve, reject) => {
1041
+ const task = {
1042
+ fn: async () => await fn(),
1043
+ resolve: (value) => resolve(value),
1044
+ reject,
1045
+ timeoutAt,
1046
+ staleMs,
1047
+ started: false,
1048
+ timedOut: false
1049
+ };
1050
+ if (hasTimeout) task.timer = setTimeout(() => {
1051
+ if (task.started || task.timedOut) return;
1052
+ task.timedOut = true;
1053
+ removePendingTask(queue, task);
1054
+ reject(lockTimeoutError(storePath));
1055
+ }, timeoutMs);
1056
+ queue.pending.push(task);
1057
+ drainSessionStoreLockQueue(storePath);
1058
+ });
1059
+ }
1060
+ async function updateSessionStoreEntry(params) {
1061
+ const { storePath, sessionKey, update } = params;
1062
+ return await withSessionStoreLock(storePath, async () => {
1063
+ const store = loadSessionStore(storePath);
1064
+ const existing = store[sessionKey];
1065
+ if (!existing) return null;
1066
+ const patch = await update(existing);
1067
+ if (!patch) return existing;
1068
+ const next = mergeSessionEntry(existing, patch);
1069
+ store[sessionKey] = next;
1070
+ await saveSessionStoreUnlocked(storePath, store, { activeSessionKey: sessionKey });
1071
+ return next;
1072
+ });
1073
+ }
1074
+ async function recordSessionMetaFromInbound(params) {
1075
+ const { storePath, sessionKey, ctx } = params;
1076
+ const createIfMissing = params.createIfMissing ?? true;
1077
+ return await updateSessionStore(storePath, (store) => {
1078
+ const existing = store[sessionKey];
1079
+ const patch = deriveSessionMetaPatch({
1080
+ ctx,
1081
+ sessionKey,
1082
+ existing,
1083
+ groupResolution: params.groupResolution
1084
+ });
1085
+ if (!patch) return existing ?? null;
1086
+ if (!existing && !createIfMissing) return null;
1087
+ const next = mergeSessionEntry(existing, patch);
1088
+ store[sessionKey] = next;
1089
+ return next;
1090
+ }, { activeSessionKey: sessionKey });
1091
+ }
1092
+ async function updateLastRoute(params) {
1093
+ const { storePath, sessionKey, channel, to, accountId, threadId, ctx } = params;
1094
+ return await withSessionStoreLock(storePath, async () => {
1095
+ const store = loadSessionStore(storePath);
1096
+ const existing = store[sessionKey];
1097
+ const now = Date.now();
1098
+ const explicitContext = normalizeDeliveryContext(params.deliveryContext);
1099
+ const inlineContext = normalizeDeliveryContext({
1100
+ channel,
1101
+ to,
1102
+ accountId,
1103
+ threadId
1104
+ });
1105
+ const mergedInput = mergeDeliveryContext(explicitContext, inlineContext);
1106
+ const explicitDeliveryContext = params.deliveryContext;
1107
+ const explicitThreadValue = (explicitDeliveryContext != null && Object.prototype.hasOwnProperty.call(explicitDeliveryContext, "threadId") ? explicitDeliveryContext.threadId : void 0) ?? (threadId != null && threadId !== "" ? threadId : void 0);
1108
+ const merged = mergeDeliveryContext(mergedInput, Boolean(explicitContext?.channel || explicitContext?.to || inlineContext?.channel || inlineContext?.to) && explicitThreadValue == null ? removeThreadFromDeliveryContext(deliveryContextFromSession(existing)) : deliveryContextFromSession(existing));
1109
+ const normalized = normalizeSessionDeliveryFields({ deliveryContext: {
1110
+ channel: merged?.channel,
1111
+ to: merged?.to,
1112
+ accountId: merged?.accountId,
1113
+ threadId: merged?.threadId
1114
+ } });
1115
+ const metaPatch = ctx ? deriveSessionMetaPatch({
1116
+ ctx,
1117
+ sessionKey,
1118
+ existing,
1119
+ groupResolution: params.groupResolution
1120
+ }) : null;
1121
+ const basePatch = {
1122
+ updatedAt: Math.max(existing?.updatedAt ?? 0, now),
1123
+ deliveryContext: normalized.deliveryContext,
1124
+ lastChannel: normalized.lastChannel,
1125
+ lastTo: normalized.lastTo,
1126
+ lastAccountId: normalized.lastAccountId,
1127
+ lastThreadId: normalized.lastThreadId
1128
+ };
1129
+ const next = mergeSessionEntry(existing, metaPatch ? {
1130
+ ...basePatch,
1131
+ ...metaPatch
1132
+ } : basePatch);
1133
+ store[sessionKey] = next;
1134
+ await saveSessionStoreUnlocked(storePath, store, { activeSessionKey: sessionKey });
1135
+ return next;
1136
+ });
1137
+ }
1138
+
1139
+ //#endregion
1140
+ //#region src/config/sessions/transcript.ts
1141
+ function stripQuery(value) {
1142
+ const noHash = value.split("#")[0] ?? value;
1143
+ return noHash.split("?")[0] ?? noHash;
1144
+ }
1145
+ function extractFileNameFromMediaUrl(value) {
1146
+ const trimmed = value.trim();
1147
+ if (!trimmed) return null;
1148
+ const cleaned = stripQuery(trimmed);
1149
+ try {
1150
+ const parsed = new URL(cleaned);
1151
+ const base = path.basename(parsed.pathname);
1152
+ if (!base) return null;
1153
+ try {
1154
+ return decodeURIComponent(base);
1155
+ } catch {
1156
+ return base;
1157
+ }
1158
+ } catch {
1159
+ const base = path.basename(cleaned);
1160
+ if (!base || base === "/" || base === ".") return null;
1161
+ return base;
1162
+ }
1163
+ }
1164
+ function resolveMirroredTranscriptText(params) {
1165
+ const mediaUrls = params.mediaUrls?.filter((url) => url && url.trim()) ?? [];
1166
+ if (mediaUrls.length > 0) {
1167
+ const names = mediaUrls.map((url) => extractFileNameFromMediaUrl(url)).filter((name) => Boolean(name && name.trim()));
1168
+ if (names.length > 0) return names.join(", ");
1169
+ return "media";
1170
+ }
1171
+ const trimmed = (params.text ?? "").trim();
1172
+ return trimmed ? trimmed : null;
1173
+ }
1174
+ async function ensureSessionHeader(params) {
1175
+ if (fs.existsSync(params.sessionFile)) return;
1176
+ await fs.promises.mkdir(path.dirname(params.sessionFile), { recursive: true });
1177
+ const header = {
1178
+ type: "session",
1179
+ version: CURRENT_SESSION_VERSION,
1180
+ id: params.sessionId,
1181
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
1182
+ cwd: process.cwd()
1183
+ };
1184
+ await fs.promises.writeFile(params.sessionFile, `${JSON.stringify(header)}\n`, "utf-8");
1185
+ }
1186
+ async function appendAssistantMessageToSessionTranscript(params) {
1187
+ const sessionKey = params.sessionKey.trim();
1188
+ if (!sessionKey) return {
1189
+ ok: false,
1190
+ reason: "missing sessionKey"
1191
+ };
1192
+ const mirrorText = resolveMirroredTranscriptText({
1193
+ text: params.text,
1194
+ mediaUrls: params.mediaUrls
1195
+ });
1196
+ if (!mirrorText) return {
1197
+ ok: false,
1198
+ reason: "empty text"
1199
+ };
1200
+ const storePath = params.storePath ?? resolveDefaultSessionStorePath(params.agentId);
1201
+ const entry = loadSessionStore(storePath, { skipCache: true })[sessionKey];
1202
+ if (!entry?.sessionId) return {
1203
+ ok: false,
1204
+ reason: `unknown sessionKey: ${sessionKey}`
1205
+ };
1206
+ let sessionFile;
1207
+ try {
1208
+ sessionFile = resolveSessionFilePath(entry.sessionId, entry, {
1209
+ agentId: params.agentId,
1210
+ sessionsDir: path.dirname(storePath)
1211
+ });
1212
+ } catch (err) {
1213
+ return {
1214
+ ok: false,
1215
+ reason: err instanceof Error ? err.message : String(err)
1216
+ };
1217
+ }
1218
+ await ensureSessionHeader({
1219
+ sessionFile,
1220
+ sessionId: entry.sessionId
1221
+ });
1222
+ SessionManager.open(sessionFile).appendMessage({
1223
+ role: "assistant",
1224
+ content: [{
1225
+ type: "text",
1226
+ text: mirrorText
1227
+ }],
1228
+ api: "openai-responses",
1229
+ provider: "anima",
1230
+ model: "delivery-mirror",
1231
+ usage: {
1232
+ input: 0,
1233
+ output: 0,
1234
+ cacheRead: 0,
1235
+ cacheWrite: 0,
1236
+ totalTokens: 0,
1237
+ cost: {
1238
+ input: 0,
1239
+ output: 0,
1240
+ cacheRead: 0,
1241
+ cacheWrite: 0,
1242
+ total: 0
1243
+ }
1244
+ },
1245
+ stopReason: "stop",
1246
+ timestamp: Date.now()
1247
+ });
1248
+ if (!entry.sessionFile || entry.sessionFile !== sessionFile) await updateSessionStore(storePath, (current) => {
1249
+ current[sessionKey] = {
1250
+ ...entry,
1251
+ sessionFile
1252
+ };
1253
+ }, { activeSessionKey: sessionKey });
1254
+ emitSessionTranscriptUpdate(sessionFile);
1255
+ return {
1256
+ ok: true,
1257
+ sessionFile
1258
+ };
1259
+ }
1260
+
1261
+ //#endregion
1262
+ //#region src/config/sessions/delivery-info.ts
1263
+ /**
1264
+ * Extract deliveryContext and threadId from a sessionKey.
1265
+ * Supports both :thread: (most channels) and :topic: (Telegram).
1266
+ */
1267
+ function extractDeliveryInfo(sessionKey) {
1268
+ if (!sessionKey) return {
1269
+ deliveryContext: void 0,
1270
+ threadId: void 0
1271
+ };
1272
+ const topicIndex = sessionKey.lastIndexOf(":topic:");
1273
+ const threadIndex = sessionKey.lastIndexOf(":thread:");
1274
+ const markerIndex = Math.max(topicIndex, threadIndex);
1275
+ const marker = topicIndex > threadIndex ? ":topic:" : ":thread:";
1276
+ const baseSessionKey = markerIndex === -1 ? sessionKey : sessionKey.slice(0, markerIndex);
1277
+ const threadId = (markerIndex === -1 ? void 0 : sessionKey.slice(markerIndex + marker.length))?.trim() || void 0;
1278
+ let deliveryContext;
1279
+ try {
1280
+ const store = loadSessionStore(resolveStorePath(loadConfig().session?.store));
1281
+ let entry = store[sessionKey];
1282
+ if (!entry?.deliveryContext && markerIndex !== -1 && baseSessionKey) entry = store[baseSessionKey];
1283
+ if (entry?.deliveryContext) deliveryContext = {
1284
+ channel: entry.deliveryContext.channel,
1285
+ to: entry.deliveryContext.to,
1286
+ accountId: entry.deliveryContext.accountId
1287
+ };
1288
+ } catch {}
1289
+ return {
1290
+ deliveryContext,
1291
+ threadId
1292
+ };
1293
+ }
1294
+
1295
+ //#endregion
1296
+ export { deliveryContextFromSession as A, resolveMainSessionKeyFromConfig as C, normalizeChatType as D, resolveConversationLabel as E, normalizeAccountId as F, mergeDeliveryContext as M, normalizeDeliveryContext as N, buildGroupDisplayName as O, normalizeSessionDeliveryFields as P, resolveMainSessionKey as S, snapshotSessionOrigin as T, DEFAULT_RESET_TRIGGERS as _, readSessionUpdatedAt as a, resolveAgentMainSessionKey as b, updateLastRoute as c, resolveSessionKey as d, evaluateSessionFreshness as f, resolveThreadFlag as g, resolveSessionResetType as h, loadSessionStore as i, deliveryContextKey as j, resolveGroupSessionKey as k, updateSessionStore as l, resolveSessionResetPolicy as m, appendAssistantMessageToSessionTranscript as n, recordSessionMetaFromInbound as o, resolveChannelResetConfig as p, resolveMirroredTranscriptText as r, saveSessionStore as s, extractDeliveryInfo as t, updateSessionStoreEntry as u, resolveFreshSessionTotalTokens as v, deriveSessionMetaPatch as w, resolveExplicitAgentSessionKey as x, canonicalizeMainSessionAlias as y };