@gaodefa/daocore 2026.5.51 → 2026.5.53

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 (1135) hide show
  1. package/dist/abort-DbmSukS6.js +277 -0
  2. package/dist/abort.runtime-DfTphPUe.js +2 -0
  3. package/dist/abort.runtime.js +1 -1
  4. package/dist/account-inspect-CrOeeGkg.js +173 -0
  5. package/dist/accounts-CF5wlCaC.js +119 -0
  6. package/dist/accounts-CfFTGexZ.js +107 -0
  7. package/dist/accounts-Cr9iBKG5.js +2 -0
  8. package/dist/accounts-DdAZRSd-.js +107 -0
  9. package/dist/acp/control-plane/manager.d.ts +2 -1
  10. package/dist/acp-runtime-B1CfWEsR.js +26 -0
  11. package/dist/acp-spawn-Bq8RHmXn.js +1275 -0
  12. package/dist/acp-spawn-BxyX0qDU.js +2 -0
  13. package/dist/acp-stateful-target-driver-y9Vk9ZkZ.js +89 -0
  14. package/dist/action-kill-Xr3eQUBu.js +33 -0
  15. package/dist/action-runtime-CweBFa8U.js +469 -0
  16. package/dist/action-runtime-api-DZY1J62H.js +2 -0
  17. package/dist/action-send-HdOQtFcz.js +39 -0
  18. package/dist/action-spawn-DWrPplrX.js +47 -0
  19. package/dist/actions-zZzXK7Ic.js +161 -0
  20. package/dist/actions.runtime-CK0aV6y4.js +5 -0
  21. package/dist/agent-command-DB0sppso.js +1367 -0
  22. package/dist/agent-command-DKqx29vm.d.ts +105 -0
  23. package/dist/agent-components.runtime-Drdzm2-F.js +10 -0
  24. package/dist/agent-components.runtime.js +1 -1
  25. package/dist/agent-harness-CGtBwZh6.d.ts +146 -0
  26. package/dist/agent-harness-runtime-Btzminw9.js +180 -0
  27. package/dist/agent-harness-task-runtime-DWiDnwnT.js +140 -0
  28. package/dist/agent-nenZtwAX.js +3 -0
  29. package/dist/agent-runner-execution-Cun_PNBn.js +1713 -0
  30. package/dist/agent-runner-utils-BfF--s17.js +266 -0
  31. package/dist/agent-runner.runtime-vxDguHci.js +3455 -0
  32. package/dist/agent-runner.runtime.js +1 -1
  33. package/dist/agent-runtime-C5xeqCn8.js +229 -0
  34. package/dist/agent-svdKN_62.js +2 -0
  35. package/dist/agent-via-gateway-DQa8cmBa.js +463 -0
  36. package/dist/api-BQxP3H11.js +134 -0
  37. package/dist/api-CT5SnVgO.js +2 -0
  38. package/dist/api-CtX70NwR.js +2 -0
  39. package/dist/api-CvUdFHq7.js +6 -0
  40. package/dist/api-DG9oHhm4.js +639 -0
  41. package/dist/api-DzfMdJ46.js +3 -0
  42. package/dist/apply-D8UoOoVD.js +41 -0
  43. package/dist/apply-DrHwBR1D.js +54 -0
  44. package/dist/approval-handler.runtime-CT8PWJ9W.js +130 -0
  45. package/dist/assistant-ByynDFnI.js +291 -0
  46. package/dist/attachment-normalize-DEAS_ziY.js +225 -0
  47. package/dist/attempt-execution-CQUmv8x2.js +558 -0
  48. package/dist/attempt-execution.runtime-AZYQQuAv.js +3 -0
  49. package/dist/attempt-execution.runtime.js +1 -1
  50. package/dist/attempt-execution.shared-2ZOaCHct.js +38 -0
  51. package/dist/attempt.prompt-helpers-B7ano4Xa.js +475 -0
  52. package/dist/attempt.tool-run-context-DBta4Vhq.js +2094 -0
  53. package/dist/binding-routing-DYUUioo1.js +113 -0
  54. package/dist/binding-targets-DthC_zAF.js +121 -0
  55. package/dist/bot-CHP8Hnzo.js +7894 -0
  56. package/dist/bot-deps-CLDgPV_x.js +747 -0
  57. package/dist/bot-deps-W9zVbYpY.js +2 -0
  58. package/dist/bot-message-context.runtime-B1-gGjAv.js +7 -0
  59. package/dist/bot-message-context.runtime.js +1 -1
  60. package/dist/bot-message-context.session.runtime-DUtlPLJq.js +12 -0
  61. package/dist/bot-message-context.session.runtime.js +1 -1
  62. package/dist/bot-native-commands.delivery.runtime-B2_Sb8-0.js +4 -0
  63. package/dist/bot-native-commands.delivery.runtime.js +1 -1
  64. package/dist/bot-native-commands.runtime-pplrKHcn.js +13 -0
  65. package/dist/bot-native-commands.runtime.js +1 -1
  66. package/dist/bridge-server-Du_qnIXr.js +113 -0
  67. package/dist/browser-cli-B2-Lzvd1.js +230 -0
  68. package/dist/browser-cli-actions-input-ZF6YYuIY.js +473 -0
  69. package/dist/browser-cli-actions-observe-DWLHFME1.js +81 -0
  70. package/dist/browser-cli-bTjCd41u.js +2 -0
  71. package/dist/browser-cli-debug-lzd4l2hl.js +137 -0
  72. package/dist/browser-cli-inspect-C5OnFKqx.js +104 -0
  73. package/dist/browser-cli-manage-BofwSOgU.js +443 -0
  74. package/dist/browser-cli-resize-CLs1i6Nu.js +26 -0
  75. package/dist/browser-cli-shared-6Jygx3GN.js +50 -0
  76. package/dist/browser-cli-state-BdoHl8ny.js +337 -0
  77. package/dist/browser-control-auth-DuI4vfIv.js +2 -0
  78. package/dist/browser-profiles-DkblgTjb.js +2 -0
  79. package/dist/browser-runtime-BiJKNDAE.js +384 -0
  80. package/dist/build-CrC0bToI.js +257 -0
  81. package/dist/build-info.json +2 -2
  82. package/dist/bundled/boot-md/handler.js +2 -2
  83. package/dist/bundled/session-memory/handler.js +1 -1
  84. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  85. package/dist/capability-cli-BHlS8tBg.js +1782 -0
  86. package/dist/channel-5iqpbW6B.js +867 -0
  87. package/dist/channel-BW3tbxJQ.js +1496 -0
  88. package/dist/channel-BWo67yh1.js +2126 -0
  89. package/dist/channel-BdhbzWTg.d.ts +427 -0
  90. package/dist/channel-BsDZhXfM.js +362 -0
  91. package/dist/channel-C95y8CWt.js +1556 -0
  92. package/dist/channel-CMKGn1i6.js +376 -0
  93. package/dist/channel-CMUiDCTQ.js +740 -0
  94. package/dist/channel-CNvxy1bb.js +808 -0
  95. package/dist/channel-CQzh6Wn1.js +653 -0
  96. package/dist/channel-CchnfGMs.js +481 -0
  97. package/dist/channel-CjWH9zRX.js +1777 -0
  98. package/dist/channel-CjZoZfa2.js +238 -0
  99. package/dist/channel-DKHlpUHA.js +1134 -0
  100. package/dist/channel-DfP8Sc0t.d.ts +6 -0
  101. package/dist/channel-DhZvHOpE.js +562 -0
  102. package/dist/channel-DtL_IvqV.js +508 -0
  103. package/dist/channel-GdNHqdaw.js +1249 -0
  104. package/dist/channel-ZkqVX5SL.js +955 -0
  105. package/dist/channel-actions.runtime-DYiOBQDx.js +265 -0
  106. package/dist/channel-actions.runtime.js +1 -1
  107. package/dist/channel-core-CiUQ9zxC.js +5 -0
  108. package/dist/channel-inbound-Ctv6wSJ3.js +80 -0
  109. package/dist/channel-lifecycle-DCTZ2J_8.d.ts +126 -0
  110. package/dist/channel-pairing-pKisqGWj.d.ts +58 -0
  111. package/dist/channel-plugin-runtime-CgGpeLjf.js +998 -0
  112. package/dist/channel-runtime-CPbfvG0l.js +408 -0
  113. package/dist/channel.runtime-5ebeoN8j.js +1008 -0
  114. package/dist/channel.runtime-B2Olk7LG.js +4 -0
  115. package/dist/channel.runtime-B4CnXDGx.js +652 -0
  116. package/dist/channel.runtime-BzLoF_dR.js +21009 -0
  117. package/dist/channel.runtime-CNCIcAd6.js +109 -0
  118. package/dist/channel.runtime-C_--rR-H.js +88 -0
  119. package/dist/channel.runtime-CmK77Uxp.js +254 -0
  120. package/dist/channel.runtime-DF5K3pkO.js +2528 -0
  121. package/dist/channel.runtime-iKNOt2eM.js +733 -0
  122. package/dist/channel.setup-CxvbmJQ2.js +343 -0
  123. package/dist/channel.setup-CzdDnMh7.js +1098 -0
  124. package/dist/channel.setup-Sku9g-22.js +10 -0
  125. package/dist/chat-BV-WLur6.js +2666 -0
  126. package/dist/chrome-CBr1Nlj5.js +1503 -0
  127. package/dist/cli/run-main.js +5 -5
  128. package/dist/cli-compaction-CzfXx99c.js +347 -0
  129. package/dist/cli-lsMRD5BD.js +1341 -0
  130. package/dist/cli-metadata-Cpdwx3O7.js +22 -0
  131. package/dist/cli-runner-DFh20BoX.js +2 -0
  132. package/dist/cli-runner-DjgUGfBa.js +540 -0
  133. package/dist/cli-runner.runtime-Cjd2VdQI.js +3 -0
  134. package/dist/cli-runner.runtime-uAtVtWM7.js +4 -0
  135. package/dist/cli-runner.runtime.js +1 -1
  136. package/dist/cli-startup-metadata.json +8 -8
  137. package/dist/client-D-yT6rne.js +650 -0
  138. package/dist/client-adapter-PXk4JoQR.js +897 -0
  139. package/dist/client-factory-C9zVXY0y.js +9 -0
  140. package/dist/command-auth-PrmmYdot.js +135 -0
  141. package/dist/command-handlers-DuHt0qVp.js +1609 -0
  142. package/dist/command-registry-B_v8R74Z.js +4 -0
  143. package/dist/command-registry-QvQgQxqT.js +9 -0
  144. package/dist/command-registry-core-dLVpK66o.js +110 -0
  145. package/dist/command-status.runtime-DM3aUyTe.js +90 -0
  146. package/dist/command-status.runtime.js +1 -1
  147. package/dist/commands-acp-DzUZwawt.js +74 -0
  148. package/dist/commands-compact.runtime-B6-Vv1CH.js +10 -0
  149. package/dist/commands-compact.runtime.js +1 -1
  150. package/dist/commands-handlers.runtime-CaTYrYbd.js +6154 -0
  151. package/dist/commands-handlers.runtime.js +1 -1
  152. package/dist/commands-status-NuvnoSL-.js +16 -0
  153. package/dist/commands-status-SMWi-mj9.js +3 -0
  154. package/dist/commands-status.runtime-SMWi-mj9.js +3 -0
  155. package/dist/commands-status.runtime.js +1 -1
  156. package/dist/commands-subagents-control.runtime-Cm9cxI8S.js +2 -0
  157. package/dist/commands-subagents-control.runtime-e7gSoCXL.js +3 -0
  158. package/dist/commands-subagents-control.runtime.js +1 -1
  159. package/dist/commands-system-prompt-C9pVUDbu.js +162 -0
  160. package/dist/commands-system-prompt-JP4vOPVK.js +2 -0
  161. package/dist/commands.runtime-Dg6eg0rn.js +176 -0
  162. package/dist/commands.runtime.js +1 -1
  163. package/dist/commitments/runtime.js +1 -1
  164. package/dist/compact-B2rH1SUd.js +480 -0
  165. package/dist/compact-D80suJg8.js +1141 -0
  166. package/dist/compact.runtime-D8nzDxmY.js +12 -0
  167. package/dist/compact.runtime.js +1 -1
  168. package/dist/completion-cli-DWxWi4aD.js +315 -0
  169. package/dist/computer-use-BGvZ1YTf.js +367 -0
  170. package/dist/config-DV-fdSq3.js +373 -0
  171. package/dist/config-DkblgTjb.js +2 -0
  172. package/dist/config-mutations-DsTp_oTJ.js +159 -0
  173. package/dist/context-engine-host-compat-BwIxzf7F.js +2 -0
  174. package/dist/context-engine-host-compat-CXhSw3Ub.js +288 -0
  175. package/dist/context-engine-lifecycle-CxxoOuT8.js +1274 -0
  176. package/dist/control-auth-Bb_hAwJF.js +114 -0
  177. package/dist/control-service-Dom28xYt.js +145 -0
  178. package/dist/control-ui/assets/agents-D8cdE1Eu.js +1008 -0
  179. package/dist/control-ui/assets/channel-config-extras-DHmcFd3r.js +2 -0
  180. package/dist/control-ui/assets/channels-C6IYonLY.js +367 -0
  181. package/dist/control-ui/assets/cron-BV8QhIs0.js +1013 -0
  182. package/dist/control-ui/assets/debug-CMKISsjW.js +97 -0
  183. package/dist/control-ui/assets/index-D_0M09s2.js +7406 -0
  184. package/dist/control-ui/assets/index-R-oyCoNF.css +1 -0
  185. package/dist/control-ui/assets/instances-Bjzgcv3j.js +57 -0
  186. package/dist/control-ui/assets/logs-Ca4STw-4.js +74 -0
  187. package/dist/control-ui/assets/nodes-CIYAksjC.js +436 -0
  188. package/dist/control-ui/assets/sessions-Cvu-i-9a.js +399 -0
  189. package/dist/control-ui/assets/skills-bzc2YBGL.js +314 -0
  190. package/dist/control-ui/assets/skills-shared-Dh00XbS9.js +11 -0
  191. package/dist/control-ui/index.html +2 -2
  192. package/dist/control-ui/sw.js +1 -1
  193. package/dist/conversation-binding-runtime-BXeidhrY.js +4 -0
  194. package/dist/conversation-runtime-Das7yftQ.js +31 -0
  195. package/dist/core-AxrxO8_x.js +282 -0
  196. package/dist/core-api-BL4BNR1C.js +5 -0
  197. package/dist/core-api-Bnc3J2fe.js +2 -0
  198. package/dist/crestodian/crestodian.js +1 -1
  199. package/dist/crestodian/rescue-message.js +1 -1
  200. package/dist/crestodian-CnfWHGFm.js +55 -0
  201. package/dist/daocore-tools-C1WpZGCu.js +11727 -0
  202. package/dist/delivery--FvYHWJO.js +1002 -0
  203. package/dist/dialogue-B40qxVGM.js +37 -0
  204. package/dist/dir-fetch-tool-fbOAtLfN.js +565 -0
  205. package/dist/dir-list-tool-BQ3k3hKf.js +100 -0
  206. package/dist/direct-dm-CuNsmrdk.js +64 -0
  207. package/dist/directive-handling.fast-lane-CQYYvYi_.js +68 -0
  208. package/dist/directive-handling.impl-DoLFcRUI.js +2 -0
  209. package/dist/directive-handling.impl-RsdNckR4.js +818 -0
  210. package/dist/directive-handling.model-selection-Ad4n0BBf.js +122 -0
  211. package/dist/directive-handling.persist.runtime-Dq8SQvB4.js +263 -0
  212. package/dist/directive-handling.persist.runtime.js +1 -1
  213. package/dist/dispatch-Bmw9mO6a.js +1640 -0
  214. package/dist/dispatch-acp-transcript.runtime-B7DKK79t.js +40 -0
  215. package/dist/dispatch-acp-transcript.runtime.js +1 -1
  216. package/dist/dispatch-acp.runtime-cVH58wGq.js +18 -0
  217. package/dist/dispatch-acp.runtime.js +1 -1
  218. package/dist/doctor-HffoL5ik.js +6 -0
  219. package/dist/doctor-Qg1Gj0PC.js +2 -0
  220. package/dist/doctor-config-flow-Dudp0oO_.js +1741 -0
  221. package/dist/doctor-core-checks-BTvmehLq.js +573 -0
  222. package/dist/doctor-core-checks-CcacCMGd.js +2 -0
  223. package/dist/doctor-health-DIu25ot8.js +65 -0
  224. package/dist/doctor-health-contributions-ZQUAiwng.js +696 -0
  225. package/dist/doctor-lint-C8RjoIYq.js +94 -0
  226. package/dist/doctor-state-integrity-D5NJcM0t.js +1231 -0
  227. package/dist/doctor-update-07o96Num.js +58 -0
  228. package/dist/dynamic-tools-BSIfb0RP.js +486 -0
  229. package/dist/embedded-backend-499B1IIV.js +579 -0
  230. package/dist/embedded-gateway-stub.runtime-Bqr2Z4Co.js +12 -0
  231. package/dist/embedded-gateway-stub.runtime.js +1 -1
  232. package/dist/exec-approvals-ClTqhSd7.js +149 -0
  233. package/dist/extensionAPI.js +1 -1
  234. package/dist/extensions/active-memory/index.js +1 -1
  235. package/dist/extensions/admin-http-rpc/index.js +1 -1
  236. package/dist/extensions/anthropic/doctor-contract-api.d.ts +1 -1
  237. package/dist/extensions/browser/browser-bridge.js +1 -1
  238. package/dist/extensions/browser/browser-config.js +4 -4
  239. package/dist/extensions/browser/browser-control-auth.js +2 -2
  240. package/dist/extensions/browser/browser-doctor.js +2 -2
  241. package/dist/extensions/browser/browser-maintenance.js +1 -1
  242. package/dist/extensions/browser/browser-profiles.js +2 -2
  243. package/dist/extensions/browser/browser-runtime-api.js +11 -11
  244. package/dist/extensions/browser/cli-metadata.js +1 -1
  245. package/dist/extensions/browser/index.js +1 -1
  246. package/dist/extensions/browser/plugin-registration.js +1 -1
  247. package/dist/extensions/browser/register.runtime.js +4 -4
  248. package/dist/extensions/browser/runtime-api.js +13 -13
  249. package/dist/extensions/browser/test-support.d.ts +1 -1
  250. package/dist/extensions/canvas/index.js +1 -1
  251. package/dist/extensions/clickclack/api.js +2 -2
  252. package/dist/extensions/clickclack/channel-plugin-api.js +1 -1
  253. package/dist/extensions/clickclack/runtime-api.js +2 -2
  254. package/dist/extensions/device-pair/api.js +1 -1
  255. package/dist/extensions/device-pair/pair-command-approve.js +1 -1
  256. package/dist/extensions/file-transfer/index.js +4 -4
  257. package/dist/extensions/google/doctor-contract-api.d.ts +1 -1
  258. package/dist/extensions/image-generation-core/api.d.ts +1 -1
  259. package/dist/extensions/imessage/api.js +2 -2
  260. package/dist/extensions/imessage/channel-plugin-api.js +1 -1
  261. package/dist/extensions/imessage/message-tool-api.d.ts +1 -1
  262. package/dist/extensions/imessage/runtime-api.d.ts +1 -1
  263. package/dist/extensions/imessage/runtime-api.js +3 -3
  264. package/dist/extensions/irc/api.js +2 -2
  265. package/dist/extensions/irc/channel-plugin-api.js +1 -1
  266. package/dist/extensions/llm-task/index.js +1 -1
  267. package/dist/extensions/mattermost/api.js +1 -1
  268. package/dist/extensions/mattermost/channel-plugin-api.js +1 -1
  269. package/dist/extensions/mattermost/channel-plugin-runtime.js +1 -1
  270. package/dist/extensions/mattermost/policy-api.js +1 -1
  271. package/dist/extensions/mattermost/runtime-api.d.ts +7 -7
  272. package/dist/extensions/mattermost/runtime-api.js +2 -2
  273. package/dist/extensions/mattermost/slash-route-api.js +1 -1
  274. package/dist/extensions/memory-core/cli-metadata.js +1 -1
  275. package/dist/extensions/migrate-claude/apply.js +1 -1
  276. package/dist/extensions/migrate-claude/index.js +1 -1
  277. package/dist/extensions/migrate-claude/plan.js +1 -1
  278. package/dist/extensions/migrate-claude/provider.js +1 -1
  279. package/dist/extensions/migrate-claude/targets.js +1 -1
  280. package/dist/extensions/migrate-hermes/apply.js +1 -1
  281. package/dist/extensions/migrate-hermes/index.js +1 -1
  282. package/dist/extensions/migrate-hermes/model.js +1 -1
  283. package/dist/extensions/migrate-hermes/plan.js +1 -1
  284. package/dist/extensions/migrate-hermes/provider.js +1 -1
  285. package/dist/extensions/migrate-hermes/secrets.js +1 -1
  286. package/dist/extensions/migrate-hermes/targets.js +1 -1
  287. package/dist/extensions/policy/api.js +1 -1
  288. package/dist/extensions/policy/index.js +2 -2
  289. package/dist/extensions/signal/api.d.ts +1 -1
  290. package/dist/extensions/signal/api.js +6 -6
  291. package/dist/extensions/signal/channel-plugin-api.js +1 -1
  292. package/dist/extensions/signal/reaction-runtime-api.js +1 -1
  293. package/dist/extensions/signal/runtime-api.d.ts +2 -2
  294. package/dist/extensions/signal/runtime-api.js +7 -7
  295. package/dist/extensions/skill-workshop/api.js +1 -1
  296. package/dist/extensions/skill-workshop/index.js +2 -2
  297. package/dist/extensions/telegram/account-inspect-api.js +1 -1
  298. package/dist/extensions/telegram/api.d.ts +1 -1
  299. package/dist/extensions/telegram/api.js +11 -11
  300. package/dist/extensions/telegram/channel-plugin-api.js +2 -2
  301. package/dist/extensions/telegram/contract-api.js +3 -3
  302. package/dist/extensions/telegram/runtime-api.js +7 -7
  303. package/dist/extensions/telegram/security-audit-contract-api.js +1 -1
  304. package/dist/extensions/telegram/setup-plugin-api.js +1 -1
  305. package/dist/extensions/telegram/test-api.js +2 -2
  306. package/dist/extensions/video-generation-core/api.d.ts +1 -1
  307. package/dist/extensions/webhooks/api.js +1 -1
  308. package/dist/extensions/webhooks/index.js +1 -1
  309. package/dist/extensions/webhooks/runtime-api.d.ts +2 -2
  310. package/dist/extensions/xai/index.js +4 -4
  311. package/dist/extensions/xai/realtime-transcription-provider.js +1 -1
  312. package/dist/extensions/xai/speech-provider.js +1 -1
  313. package/dist/extensions/xai/test-api.js +1 -1
  314. package/dist/extensions/xai/tts.js +1 -1
  315. package/dist/extensions/xai/web-search.js +1 -1
  316. package/dist/extensions/xai/xai-oauth.js +1 -1
  317. package/dist/file-fetch-tool-CJu8umi9.js +124 -0
  318. package/dist/file-write-tool-Dz49CI0K.js +127 -0
  319. package/dist/format-DBhooCE7.js +1145 -0
  320. package/dist/gateway-cli-D21vxek0.js +435 -0
  321. package/dist/gateway-method-runtime-qsRZHdfx.js +21 -0
  322. package/dist/get-reply-D140C4TM.js +4689 -0
  323. package/dist/get-reply-from-config.runtime-CaM7M0Zp.js +2 -0
  324. package/dist/get-reply-from-config.runtime.js +1 -1
  325. package/dist/graph-users-cBY7anTM.js +1419 -0
  326. package/dist/group-access-CZOQhsjs.js +112 -0
  327. package/dist/group-keys-B_lbVBmI.d.ts +17 -0
  328. package/dist/handle-action.guild-admin-DjuZqjM2.js +288 -0
  329. package/dist/harness-XL58LNpX.js +61 -0
  330. package/dist/health-CFPXXpFW.js +4 -0
  331. package/dist/heartbeat-runner-D_o-itnk.js +5 -0
  332. package/dist/heartbeat-runner.runtime-CPVGa3Gd.js +4 -0
  333. package/dist/heartbeat-runner.runtime.js +1 -1
  334. package/dist/hook-runtime-UU80d5qW.d.ts +108 -0
  335. package/dist/hooks-Bx3n6o-5.js +534 -0
  336. package/dist/inbound-direct-dm-runtime-6nIJyODo.js +2 -0
  337. package/dist/inbound-reply-dispatch-CoeXQvL6.js +148 -0
  338. package/dist/index.d.ts +1 -1
  339. package/dist/index.js +1 -1
  340. package/dist/init-C8Yc8LlO.js +59 -0
  341. package/dist/inline-buttons-BMPhhfsN.js +40 -0
  342. package/dist/internal-events-BS1EMi0C.js +90 -0
  343. package/dist/isolated-agent-Ct_AYfLb.js +2 -0
  344. package/dist/isolated-agent-DxVGoLjs.js +1118 -0
  345. package/dist/lifecycle-CGcqxM3V.js +571 -0
  346. package/dist/list.probe-R_AqbwD1.js +449 -0
  347. package/dist/list.status-command-DcaLppGJ.js +789 -0
  348. package/dist/llm-slug-generator-Bz1MaPt1.js +78 -0
  349. package/dist/llm-slug-generator.js +1 -1
  350. package/dist/local-dispatch.runtime-DnXAlwr7.js +9 -0
  351. package/dist/local-dispatch.runtime.js +1 -1
  352. package/dist/manager-D058VQAp.d.ts +10 -0
  353. package/dist/manager.core-DKeUsAcV.d.ts +198 -0
  354. package/dist/manager.runtime-1A0jFsbF.js +2714 -0
  355. package/dist/manager.runtime.js +1 -1
  356. package/dist/markdown-to-line-Gq4y1nH-.js +811 -0
  357. package/dist/mcp-http-BMgo3eu6.js +2 -0
  358. package/dist/mcp-http-BdgsyrHJ.js +555 -0
  359. package/dist/media-understanding-provider-CYrAwQ2G.js +339 -0
  360. package/dist/message-actions-DoFxM22K.js +145 -0
  361. package/dist/message-handler-CEvRtI9d.js +384 -0
  362. package/dist/message-handler-CJclaiC-.js +1715 -0
  363. package/dist/message-handler.preflight-DDVS50X3.js +1125 -0
  364. package/dist/message-handler.process-BuFXf8os.js +1484 -0
  365. package/dist/model-BqQrUk9a.js +74 -0
  366. package/dist/model-selection-2Lm1qMLE.js +272 -0
  367. package/dist/models-BjMdWXf2.js +104 -0
  368. package/dist/models-cli-RRK90p8k.js +256 -0
  369. package/dist/models-wWhwx_am.js +2 -0
  370. package/dist/monitor-C7VAs-uK.js +834 -0
  371. package/dist/monitor-CezSJDeG.js +60 -0
  372. package/dist/monitor-Cnzchc9n.js +2788 -0
  373. package/dist/monitor-Dcvw55ky.js +4377 -0
  374. package/dist/monitor-DuxFMl7d.js +715 -0
  375. package/dist/monitor-DxrfxRZL.js +2 -0
  376. package/dist/monitor-auth-UPQgTP9Y.js +179 -0
  377. package/dist/monitor-fYdQKsGp.js +1370 -0
  378. package/dist/monitor-polling.runtime-Db4NoLLg.js +883 -0
  379. package/dist/monitor-polling.runtime.js +1 -1
  380. package/dist/monitor-wcLtLTfx.js +1657 -0
  381. package/dist/monitor-webhook.runtime-DAr7kRbV.js +387 -0
  382. package/dist/monitor-webhook.runtime.js +1 -1
  383. package/dist/monitor.account-C1mUBkKA.js +5233 -0
  384. package/dist/monitor.runtime-Bqj8vHGY.js +2 -0
  385. package/dist/monitor.runtime.js +1 -1
  386. package/dist/monitor.webhook-Ir3T5B1s.js +180 -0
  387. package/dist/node-cli-sessions-MBQKJyrs.js +1228 -0
  388. package/dist/openai-http-9jmQ2o9Z.js +824 -0
  389. package/dist/openresponses-http-C3-s16Dp.js +1173 -0
  390. package/dist/operations-C1hhf_yC.js +805 -0
  391. package/dist/outbound-adapter-C5zBbuVO.js +543 -0
  392. package/dist/outbound-session-route-Bq_utu59.js +45 -0
  393. package/dist/outbound.runtime-QHoe8EWX.js +2 -0
  394. package/dist/outbound.runtime.js +1 -1
  395. package/dist/pairing-store-C-WQTUHq.d.ts +87 -0
  396. package/dist/pi-embedded-6xH25qP-.js +4 -0
  397. package/dist/pi-embedded-CkcV64LR.js +3796 -0
  398. package/dist/pi-embedded.runtime-CKpyReN5.js +4 -0
  399. package/dist/pi-embedded.runtime.js +1 -1
  400. package/dist/pi-tools-BbGodehg.js +2413 -0
  401. package/dist/plan-B_EcRdNP.js +112 -0
  402. package/dist/plan-DmMZJkHt.js +81 -0
  403. package/dist/plugin-CjfnnqXb.js +12396 -0
  404. package/dist/plugin-app-cache-key-Dak7S3ax.js +46 -0
  405. package/dist/plugin-enabled-B9wCs568.js +233 -0
  406. package/dist/plugin-registration-B3AVf0Xj.js +88 -0
  407. package/dist/plugin-sdk/.boundary-entry-shims.stamp +1 -1
  408. package/dist/plugin-sdk/acp-runtime-backend.js +1 -1
  409. package/dist/plugin-sdk/acp-runtime.js +2 -2
  410. package/dist/plugin-sdk/agent-harness-runtime.js +6 -6
  411. package/dist/plugin-sdk/agent-harness-task-runtime.js +1 -1
  412. package/dist/plugin-sdk/agent-harness.js +7 -7
  413. package/dist/plugin-sdk/agent-runtime.js +2 -2
  414. package/dist/plugin-sdk/channel-core.js +2 -2
  415. package/dist/plugin-sdk/channel-inbound.js +2 -2
  416. package/dist/plugin-sdk/channel-test-helpers.js +1 -1
  417. package/dist/plugin-sdk/command-auth.js +1 -1
  418. package/dist/plugin-sdk/command-status-runtime.js +1 -1
  419. package/dist/plugin-sdk/compat.js +1 -1
  420. package/dist/plugin-sdk/conversation-binding-runtime.js +2 -2
  421. package/dist/plugin-sdk/conversation-runtime.js +3 -3
  422. package/dist/plugin-sdk/core.js +2 -2
  423. package/dist/plugin-sdk/direct-dm.js +1 -1
  424. package/dist/plugin-sdk/gateway-method-runtime.js +1 -1
  425. package/dist/plugin-sdk/health.js +2 -2
  426. package/dist/plugin-sdk/inbound-reply-dispatch.js +1 -1
  427. package/dist/plugin-sdk/index.js +1 -1
  428. package/dist/plugin-sdk/mattermost.js +1 -1
  429. package/dist/plugin-sdk/plugin-test-contracts.js +2 -2
  430. package/dist/plugin-sdk/provider-test-contracts.js +4 -4
  431. package/dist/plugin-sdk/reply-runtime.js +4 -4
  432. package/dist/plugin-sdk/testing.js +2 -2
  433. package/dist/plugin-sdk/zalouser.js +1 -1
  434. package/dist/plugin-service-C2toP50L.js +1229 -0
  435. package/dist/plugins/runtime/index.js +4 -4
  436. package/dist/policy-B5jHUD04.js +138 -0
  437. package/dist/policy-C7_EFtGD.js +680 -0
  438. package/dist/postinstall-inventory.json +11606 -0
  439. package/dist/prepare.runtime-C41yGgw-.js +732 -0
  440. package/dist/prepare.runtime.js +1 -1
  441. package/dist/preview-warnings-rfGY8dVy.js +392 -0
  442. package/dist/probe-B0eSVoSm.js +682 -0
  443. package/dist/probe-CqAGxL6l.js +2 -0
  444. package/dist/probe-DFyoiqiI.js +2204 -0
  445. package/dist/probe-hR0HWnET.js +47 -0
  446. package/dist/program-CD73-5Xj.js +131 -0
  447. package/dist/provider-B0ujadL5.js +32 -0
  448. package/dist/provider-BxR_JJXW.js +152 -0
  449. package/dist/provider-C9mKa8qP.js +32 -0
  450. package/dist/provider-DbGPdInL.js +8735 -0
  451. package/dist/provider-dispatcher-CGPKPaP5.js +22 -0
  452. package/dist/provider-dispatcher.runtime.js +1 -1
  453. package/dist/provider-session.runtime-DKkydJWv.js +9 -0
  454. package/dist/provider-session.runtime.js +1 -1
  455. package/dist/provider.runtime-ChrWUTdG.js +2 -0
  456. package/dist/provider.runtime.js +1 -1
  457. package/dist/public-surface-loader-CMOWVmyY.js +114 -0
  458. package/dist/pw-ai-mygsAPX7.js +3029 -0
  459. package/dist/pw-role-snapshot-7_IMuYRR.js +333 -0
  460. package/dist/reaction-level-DFUu127f.js +19 -0
  461. package/dist/reaction-runtime-api-6LQnr6q_.js +116 -0
  462. package/dist/realtime-transcription-provider-LrzigbIT.js +205 -0
  463. package/dist/register-B9TeJvXU.js +2178 -0
  464. package/dist/register.agent-o9BDHbH2.js +156 -0
  465. package/dist/register.crestodian-BOUP_Pon.js +24 -0
  466. package/dist/register.maintenance-BC83-YdR.js +83 -0
  467. package/dist/register.runtime-DSHYrjtd.js +54 -0
  468. package/dist/register.subclis-BS5Lj5wU.js +3 -0
  469. package/dist/register.subclis-QQq9COp0.js +31 -0
  470. package/dist/register.subclis-core-DnNechJo.js +273 -0
  471. package/dist/repair-sequencing-CqjW4_hd.js +640 -0
  472. package/dist/reply-delivery-KRwW1tqL.js +196 -0
  473. package/dist/reply-runtime-DuaOZ9MH.d.ts +34 -0
  474. package/dist/reply-runtime-SSrAwVeQ.js +11 -0
  475. package/dist/reply.runtime-CaM7M0Zp.js +2 -0
  476. package/dist/reply.runtime.js +1 -1
  477. package/dist/request-CatWtIoq.js +54 -0
  478. package/dist/resolve-allowlist-Dxe9wc_Y.js +220 -0
  479. package/dist/result-fallback-classifier-B3kvqc2o.js +79 -0
  480. package/dist/route-BPWKlRDB.js +469 -0
  481. package/dist/route-resolution-BhkvdIUP.js +274 -0
  482. package/dist/routes-BOmtNSeT.js +2 -0
  483. package/dist/routes-Cr9bRW8t.js +3602 -0
  484. package/dist/run-attempt-DWBeHRdc.js +7704 -0
  485. package/dist/run-command-DNNFNkbv.js +23 -0
  486. package/dist/run-command-Kp7LWkQv.js +2 -0
  487. package/dist/run-embedded.runtime-BxV8m38U.js +4 -0
  488. package/dist/run-embedded.runtime.js +1 -1
  489. package/dist/run-execution-cli.runtime-B9I1oAEO.js +4 -0
  490. package/dist/run-execution-cli.runtime.js +1 -1
  491. package/dist/run-executor.runtime.js +1 -1
  492. package/dist/run-subagent-registry.runtime-BIsbEmUD.js +2 -0
  493. package/dist/run-subagent-registry.runtime.js +1 -1
  494. package/dist/run-vAv9-st8.js +1162 -0
  495. package/dist/runtime-3PDZU_1b.d.ts +17 -0
  496. package/dist/runtime-BXJM8M8F.js +1287 -0
  497. package/dist/runtime-BodO4UZT.js +438 -0
  498. package/dist/runtime-C_5j10Cp.js +6179 -0
  499. package/dist/runtime-api-9CEihqK3.d.ts +3151 -0
  500. package/dist/runtime-api-BbNLHCZ5.js +24 -0
  501. package/dist/runtime-api-HUquGiJa.js +4 -0
  502. package/dist/runtime-api-I6ur4A1S.js +17 -0
  503. package/dist/runtime-api-MQL0v6n2.js +13 -0
  504. package/dist/runtime-api-a340pYdX.js +13 -0
  505. package/dist/runtime-api-g_pGO9f3.js +21 -0
  506. package/dist/runtime-api-hLSYbpGH.js +3 -0
  507. package/dist/runtime-api.actions-Blt2bAHw.d.ts +23 -0
  508. package/dist/runtime-api.actions-CawQ9WKM.js +3 -0
  509. package/dist/runtime-api.monitor-DN3P4USq.js +6 -0
  510. package/dist/runtime-api.send-BIA6QfVI.js +4 -0
  511. package/dist/runtime-api.send-BygcWA7R.d.ts +38 -0
  512. package/dist/runtime-api.threads-DYnc3Jvu.js +2 -0
  513. package/dist/runtime-channel-CYlRNrxR.js +150 -0
  514. package/dist/runtime-channel-Ci0dC0Tq.js +2 -0
  515. package/dist/runtime-doctor-DVYwKwIT.d.ts +47 -0
  516. package/dist/runtime-embedded-pi.runtime-Wc_lZOzO.js +2 -0
  517. package/dist/runtime-embedded-pi.runtime.js +1 -1
  518. package/dist/sanitize-outbound-BFrYI8F4.js +127 -0
  519. package/dist/sdk-setup-tools-DLjnnh3Y.js +8 -0
  520. package/dist/secrets-DibHCqDz.js +113 -0
  521. package/dist/security-audit-CyMhUYN9.js +122 -0
  522. package/dist/security-audit-DAk0I2g8.js +118 -0
  523. package/dist/security-audit.runtime-DtdxZcEG.js +2 -0
  524. package/dist/security-audit.runtime.js +1 -1
  525. package/dist/selection-BJ2yQ0yh.js +16157 -0
  526. package/dist/selection-CJ3YNIjG.js +3 -0
  527. package/dist/send-Ar9e_pA3.js +1631 -0
  528. package/dist/send-BETlETJ5.d.ts +231 -0
  529. package/dist/send-BN-3u18j.js +2 -0
  530. package/dist/send-BYlEXkEO.js +143 -0
  531. package/dist/send-BusufuyP.js +192 -0
  532. package/dist/send-CpcmWYrM.d.ts +104 -0
  533. package/dist/send.components-C3FzEyYz.js +500 -0
  534. package/dist/send.components-CMi7rcIs.js +2 -0
  535. package/dist/send.runtime-D-nw3p-S.js +2 -0
  536. package/dist/send.runtime.js +1 -1
  537. package/dist/send.types-D_3tsfSL.d.ts +159 -0
  538. package/dist/server-CJVI2gjZ.js +24 -0
  539. package/dist/server-DZl7k4VX.js +73 -0
  540. package/dist/server-close.runtime.js +1 -1
  541. package/dist/server-context-BAAz3W-8.js +2 -0
  542. package/dist/server-context-BLrLchWj.js +955 -0
  543. package/dist/server-cron-CiyrI-WY.js +2 -0
  544. package/dist/server-cron-CzhteL8F.js +2989 -0
  545. package/dist/server-methods-DQ0gaIXu.js +16494 -0
  546. package/dist/server-node-events-D1TywtBI.js +596 -0
  547. package/dist/server-plugin-bootstrap-ByEZkPkc.js +70 -0
  548. package/dist/server-plugins-BVVgDSdq.d.ts +1 -0
  549. package/dist/server-plugins-CEZ-W7dG.js +432 -0
  550. package/dist/server-reload-handlers-DDXJwZWE.js +714 -0
  551. package/dist/server-restart-sentinel-C9l1iG1h.js +747 -0
  552. package/dist/server-restart-sentinel-CyweyjEa.js +2 -0
  553. package/dist/server-runtime-services-BQ08Hyco.js +2 -0
  554. package/dist/server-runtime-services-BjKoAkjM.js +267 -0
  555. package/dist/server-startup-plugins-C_Y62xZe.js +113 -0
  556. package/dist/server-startup-post-attach-DCAmn6Ct.js +716 -0
  557. package/dist/server-ws-runtime-CvN63X_w.js +349 -0
  558. package/dist/server.impl-yHI7jtXF.js +2586 -0
  559. package/dist/service-mHxeSPC2.js +1446 -0
  560. package/dist/session-binding-DtmTypDj.js +2 -0
  561. package/dist/session-binding-xtRKSQOW.js +219 -0
  562. package/dist/session-kill-http-GnTgzcvZ.js +121 -0
  563. package/dist/session-reset-service-Bw6li9Te.js +625 -0
  564. package/dist/session-route-D-PISLLo.js +93 -0
  565. package/dist/session-status.runtime-jiGvxIDK.js +2 -0
  566. package/dist/session-status.runtime.js +1 -1
  567. package/dist/session-subagent-reactivation.runtime-B9QimjvS.js +2 -0
  568. package/dist/session-subagent-reactivation.runtime.js +1 -1
  569. package/dist/session-tab-registry-BoqXuTYc.js +521 -0
  570. package/dist/sessions-history-http-CG934aaV.js +430 -0
  571. package/dist/sessions.runtime-Cl91aZ2M.js +2 -0
  572. package/dist/sessions.runtime.js +1 -1
  573. package/dist/setup-api-DAqXqbGP.js +29 -0
  574. package/dist/setup-core-Czt7XqlN.js +174 -0
  575. package/dist/setup-surface-CHETBocT.js +405 -0
  576. package/dist/setup-surface-CVtEDUic.js +320 -0
  577. package/dist/setup-surface-YW9INYKN.js +288 -0
  578. package/dist/setup-surface-utUyMdYz.js +221 -0
  579. package/dist/shared-DwZ1ZQM4.js +121 -0
  580. package/dist/shared-client-B2kMpTHH.js +2 -0
  581. package/dist/shared-client-DHJbz0yn.js +629 -0
  582. package/dist/side-question-Dlr5pcZK.js +683 -0
  583. package/dist/skill-tool-dispatch.runtime-CbDumhVh.js +143 -0
  584. package/dist/skill-tool-dispatch.runtime.js +1 -1
  585. package/dist/slash-state-BxzZ0Rmv.js +2166 -0
  586. package/dist/speech-provider-INk_7d-9.js +184 -0
  587. package/dist/src-DAMtNlRl.js +4256 -0
  588. package/dist/startup-context-DhSjA04E.js +313 -0
  589. package/dist/status-subagents.runtime-UViaj6fy.js +18 -0
  590. package/dist/status-subagents.runtime.js +1 -1
  591. package/dist/status-text-D4yQvJnW.js +296 -0
  592. package/dist/sticker-cache-CpE2UF0o.js +206 -0
  593. package/dist/sticker-vision.runtime-C5lk740o.js +17 -0
  594. package/dist/sticker-vision.runtime.js +1 -1
  595. package/dist/subagent-announce-DDensDxS.js +354 -0
  596. package/dist/subagent-announce-delivery-16skgjOt.js +958 -0
  597. package/dist/subagent-control-C2SGCamc.js +508 -0
  598. package/dist/subagent-hooks-BqabvLsv.js +2 -0
  599. package/dist/subagent-hooks-CGeDwTHC.js +2 -0
  600. package/dist/subagent-hooks-CR0M3L4o.js +146 -0
  601. package/dist/subagent-hooks-Dw9C-nUM.js +2 -0
  602. package/dist/subagent-hooks-api-B03j55PK.js +22 -0
  603. package/dist/subagent-hooks-api-B2i15coF.js +23 -0
  604. package/dist/subagent-hooks-api-BcopR7NZ.js +23 -0
  605. package/dist/subagent-hooks-eOUaLnxx.js +116 -0
  606. package/dist/subagent-hooks-l4-8TBr2.js +230 -0
  607. package/dist/subagent-orphan-recovery-CytpmJnf.js +352 -0
  608. package/dist/subagent-registry-BVVgDSdq.d.ts +1 -0
  609. package/dist/subagent-registry-DTDYUst1.js +2351 -0
  610. package/dist/subagent-registry-kGjRY7OP.js +3 -0
  611. package/dist/subagent-registry-read-BVVgDSdq.d.ts +1 -0
  612. package/dist/subagent-registry.runtime.js +1 -1
  613. package/dist/subagent-session-cleanup-C7MqSx3u.js +525 -0
  614. package/dist/subagent-spawn-DuLVHzht.js +1164 -0
  615. package/dist/target-id-BqKER5JR.js +107 -0
  616. package/dist/targets-DYNDWy1s.js +44 -0
  617. package/dist/targets-DuRWAuVM.js +19 -0
  618. package/dist/targets-aaR2Mlk_.js +19 -0
  619. package/dist/task-registry-control.runtime.d.ts +1 -1
  620. package/dist/task-registry-control.runtime.js +1 -1
  621. package/dist/telegram/token.js +1 -1
  622. package/dist/test-fixtures-xgg7UsEw.d.ts +27 -0
  623. package/dist/test-support-BVVgDSdq.d.ts +1 -0
  624. package/dist/testing-7ayMtB6I.js +267 -0
  625. package/dist/thread-bindings-BzpAXUwZ.js +232 -0
  626. package/dist/thread-bindings-Cu4J90KY.js +8 -0
  627. package/dist/thread-bindings-D5o9c3aE.js +228 -0
  628. package/dist/thread-bindings-DMy2kJ74.js +571 -0
  629. package/dist/thread-bindings.discord-api-BDj-jkBV.js +187 -0
  630. package/dist/thread-bindings.manager-C5jC_3Mo.js +2 -0
  631. package/dist/thread-bindings.manager-CLK7FYoE.js +536 -0
  632. package/dist/thread-lifecycle-DYeO0OTi.js +1614 -0
  633. package/dist/token-Ccki3ia9.js +134 -0
  634. package/dist/tool-BqIYC7Fz.js +139 -0
  635. package/dist/tool-actions.runtime-Cjbhroli.js +534 -0
  636. package/dist/tool-actions.runtime.js +1 -1
  637. package/dist/tool-resolution-D4klFB4B.js +149 -0
  638. package/dist/tools-effective-inventory-YuOuPKR8.js +204 -0
  639. package/dist/tools-invoke-http-BmQFkxSN.js +67 -0
  640. package/dist/tools-invoke-shared-DD4l34hg.js +200 -0
  641. package/dist/tts-BAQZtO6A.js +66 -0
  642. package/dist/tui-B-CC1PjA.js +2 -0
  643. package/dist/tui-backend-DLm_nQL8.js +256 -0
  644. package/dist/tui-cli-BfCs3qwc.js +37 -0
  645. package/dist/tui-qi8Vakes.js +4709 -0
  646. package/dist/typed-cases-cPb0tZig.d.ts +68 -0
  647. package/dist/update-cli-BP32xvfl.js +3664 -0
  648. package/dist/update-runner-DnbwY3OV.js +2390 -0
  649. package/dist/vision-tools-De-gGPAw.js +1409 -0
  650. package/dist/web-search-DJMus2yt.js +62 -0
  651. package/dist/web-search-provider.runtime-6Md25pj8.js +2 -0
  652. package/dist/web-search-provider.runtime-CBUbt7xF.js +328 -0
  653. package/dist/web-search-provider.runtime.js +1 -1
  654. package/dist/webhook-targets-Bixk4LO_.d.ts +99 -0
  655. package/dist/xai-oauth-Cud_8Og7.js +479 -0
  656. package/dist/xai-user-agent-dCQuZI6k.js +32 -0
  657. package/package.json +1 -1
  658. package/dist/abort-fu5ot-XT.js +0 -277
  659. package/dist/abort.runtime-D5daoBjn.js +0 -2
  660. package/dist/account-inspect-BzG5-Rgz.js +0 -173
  661. package/dist/accounts-CPcG2JIz.js +0 -107
  662. package/dist/accounts-CiDgcaPY.js +0 -2
  663. package/dist/accounts-DcI0wEyL.js +0 -107
  664. package/dist/accounts-xBYbyTsZ.js +0 -119
  665. package/dist/acp-runtime-DpVkymzf.js +0 -26
  666. package/dist/acp-spawn-CbNHSZr-.js +0 -1275
  667. package/dist/acp-spawn-DFG0HgXi.js +0 -2
  668. package/dist/acp-stateful-target-driver-pz6XosZ9.js +0 -89
  669. package/dist/action-kill-DJuPSfgy.js +0 -33
  670. package/dist/action-runtime-DxnMH2dB.js +0 -469
  671. package/dist/action-runtime-api-Dvo3Gbll.js +0 -2
  672. package/dist/action-send-WtfSYfhf.js +0 -39
  673. package/dist/action-spawn-CA4-_H9p.js +0 -47
  674. package/dist/actions-BQ2B4Vhj.js +0 -161
  675. package/dist/actions.runtime-Bw0OZtGG.js +0 -5
  676. package/dist/agent-CsPtASj4.js +0 -2
  677. package/dist/agent-command-D5KxwCVS.d.ts +0 -141
  678. package/dist/agent-command-DeA1YV0L.js +0 -1367
  679. package/dist/agent-components.runtime-CP2KCzTj.js +0 -10
  680. package/dist/agent-harness-CEPgjZ3p.d.ts +0 -146
  681. package/dist/agent-harness-runtime-hAssTrVq.js +0 -180
  682. package/dist/agent-harness-task-runtime-VSFzRIbH.js +0 -140
  683. package/dist/agent-rg2WmmbX.js +0 -3
  684. package/dist/agent-runner-execution-lRuwJobi.js +0 -1713
  685. package/dist/agent-runner-utils-Bluglnku.js +0 -266
  686. package/dist/agent-runner.runtime-B709koec.js +0 -3455
  687. package/dist/agent-runtime-DKr0TX79.js +0 -229
  688. package/dist/agent-via-gateway-J8tTS5o6.js +0 -463
  689. package/dist/api-BVSGXSkS.js +0 -3
  690. package/dist/api-C7LbY8d2.js +0 -6
  691. package/dist/api-ClLB89eP.js +0 -2
  692. package/dist/api-D7kpdmvQ.js +0 -2
  693. package/dist/api-DJaf27mk.js +0 -639
  694. package/dist/api-XpFyLrKp.js +0 -134
  695. package/dist/apply-CHHI0r0H.js +0 -41
  696. package/dist/apply-DoQ4g3Kr.js +0 -54
  697. package/dist/approval-handler.runtime-Jbt7zH9f.js +0 -130
  698. package/dist/assistant-DQw33Vzx.js +0 -291
  699. package/dist/attachment-normalize-CrbLuYsp.js +0 -225
  700. package/dist/attempt-execution-DkgSHSVj.js +0 -558
  701. package/dist/attempt-execution.runtime-DCcD7P4g.js +0 -3
  702. package/dist/attempt-execution.shared-Cok8CE9p.js +0 -38
  703. package/dist/attempt.prompt-helpers-Kok600qT.js +0 -475
  704. package/dist/attempt.tool-run-context-C5nkRM5Y.js +0 -2094
  705. package/dist/binding-routing-BILfy0c8.js +0 -113
  706. package/dist/binding-targets-BrYDo8Jx.js +0 -121
  707. package/dist/bot-CxJsNrtp.js +0 -7894
  708. package/dist/bot-deps-BWdw7DXt.js +0 -2
  709. package/dist/bot-deps-BbL_ePix.js +0 -747
  710. package/dist/bot-message-context.runtime-qkq-RzJY.js +0 -7
  711. package/dist/bot-message-context.session.runtime-CxuxYsNb.js +0 -12
  712. package/dist/bot-native-commands.delivery.runtime-BOjc08fe.js +0 -4
  713. package/dist/bot-native-commands.runtime-LtWQYEai.js +0 -13
  714. package/dist/bridge-server-BvrlsnvW.js +0 -113
  715. package/dist/browser-cli-BmH-wDEt.js +0 -230
  716. package/dist/browser-cli-D7JUe5WT.js +0 -2
  717. package/dist/browser-cli-actions-input-BtCjZh2W.js +0 -473
  718. package/dist/browser-cli-actions-observe-CKCy--u8.js +0 -81
  719. package/dist/browser-cli-debug-D7KF3hoB.js +0 -137
  720. package/dist/browser-cli-inspect-B5_Q_bKp.js +0 -104
  721. package/dist/browser-cli-manage-BNRyXUfb.js +0 -443
  722. package/dist/browser-cli-resize-BR9dybJM.js +0 -26
  723. package/dist/browser-cli-shared-ZfP-ZP1r.js +0 -50
  724. package/dist/browser-cli-state-BJRQ87Hp.js +0 -337
  725. package/dist/browser-control-auth-C1ZlS07R.js +0 -2
  726. package/dist/browser-profiles-BLgaJJYW.js +0 -2
  727. package/dist/browser-runtime-CX-EDgFi.js +0 -384
  728. package/dist/build-DOEtxYaU.js +0 -257
  729. package/dist/capability-cli-Mj0McddT.js +0 -1782
  730. package/dist/channel-BDvizmrp.js +0 -1556
  731. package/dist/channel-C749d8mG.js +0 -376
  732. package/dist/channel-CWP6h4W5.js +0 -1134
  733. package/dist/channel-CgzMA_Q0.js +0 -2126
  734. package/dist/channel-Chx_WUyI.js +0 -867
  735. package/dist/channel-Ctnzf_tM.js +0 -238
  736. package/dist/channel-CusFbCv9.js +0 -653
  737. package/dist/channel-D5jjabnb.js +0 -1249
  738. package/dist/channel-DF-fw8lK.js +0 -1496
  739. package/dist/channel-DKAG-w5b.js +0 -481
  740. package/dist/channel-DSbpV7ax.js +0 -808
  741. package/dist/channel-DiN2VJEK.js +0 -955
  742. package/dist/channel-DvN94bvt.js +0 -740
  743. package/dist/channel-DxtVMwdk.js +0 -508
  744. package/dist/channel-GubQ1f0C.js +0 -362
  745. package/dist/channel-JqEqZ04S.d.ts +0 -6
  746. package/dist/channel-MXOd30fz.d.ts +0 -427
  747. package/dist/channel-actions.runtime-DEb9ZniG.js +0 -265
  748. package/dist/channel-core-Dr6fp5Ub.js +0 -5
  749. package/dist/channel-inbound-FG-Mc5xc.js +0 -80
  750. package/dist/channel-lifecycle-DCl2GbRW.d.ts +0 -125
  751. package/dist/channel-pairing-BRqfYy30.d.ts +0 -58
  752. package/dist/channel-plugin-runtime-hiqeg-_c.js +0 -998
  753. package/dist/channel-rej8M5lJ.js +0 -1777
  754. package/dist/channel-runtime-DJp4CruI.js +0 -408
  755. package/dist/channel-z0v-MMYk.js +0 -562
  756. package/dist/channel.runtime-1o_vRC84.js +0 -109
  757. package/dist/channel.runtime-BXrIcht7.js +0 -254
  758. package/dist/channel.runtime-C9opTci8.js +0 -2528
  759. package/dist/channel.runtime-CBvyS9OE.js +0 -1008
  760. package/dist/channel.runtime-CSwcAfTq.js +0 -88
  761. package/dist/channel.runtime-DKFrmmAg.js +0 -652
  762. package/dist/channel.runtime-DTBcVFL7.js +0 -733
  763. package/dist/channel.runtime-E2IhUtz8.js +0 -4
  764. package/dist/channel.runtime-s8LoLneR.js +0 -21009
  765. package/dist/channel.setup-BU4bp4OI.js +0 -10
  766. package/dist/channel.setup-CpygZ2ZG.js +0 -343
  767. package/dist/channel.setup-Z7jM_Q-v.js +0 -1098
  768. package/dist/chat-BQA8JGz8.js +0 -2666
  769. package/dist/chrome-YaZdp6CU.js +0 -1503
  770. package/dist/cli-DvGvBxMy.js +0 -1341
  771. package/dist/cli-compaction-0ER1653L.js +0 -347
  772. package/dist/cli-metadata-BJX-MSNl.js +0 -22
  773. package/dist/cli-runner-BGc4U7E0.js +0 -2
  774. package/dist/cli-runner-CH30meJN.js +0 -540
  775. package/dist/cli-runner.runtime-BqU9giS7.js +0 -4
  776. package/dist/cli-runner.runtime-D14IpD46.js +0 -3
  777. package/dist/client-DqnCi7vL.js +0 -650
  778. package/dist/client-adapter-BKZ5qBVY.js +0 -897
  779. package/dist/client-factory-BbBpLxaP.js +0 -9
  780. package/dist/command-auth-fZ1DLCTo.js +0 -135
  781. package/dist/command-handlers-CHbhwC1N.js +0 -1609
  782. package/dist/command-registry-_Oons836.js +0 -4
  783. package/dist/command-registry-core-Btb-M6JE.js +0 -110
  784. package/dist/command-registry-gWuCKROh.js +0 -9
  785. package/dist/command-status.runtime-DLav1SGb.js +0 -90
  786. package/dist/commands-acp-DVbINB4V.js +0 -74
  787. package/dist/commands-compact.runtime-CqQIDvM8.js +0 -10
  788. package/dist/commands-handlers.runtime-DJBGEdTB.js +0 -6154
  789. package/dist/commands-status-BaDacW0z.js +0 -3
  790. package/dist/commands-status-CTZ-HwUc.js +0 -16
  791. package/dist/commands-status.runtime-BaDacW0z.js +0 -3
  792. package/dist/commands-subagents-control.runtime-B6SOliNd.js +0 -2
  793. package/dist/commands-subagents-control.runtime-DTdEiA7w.js +0 -3
  794. package/dist/commands-system-prompt-BAdsJpn8.js +0 -162
  795. package/dist/commands-system-prompt-CX5iT-44.js +0 -2
  796. package/dist/commands.runtime-DObObKfz.js +0 -176
  797. package/dist/compact-Bs_eAw33.js +0 -480
  798. package/dist/compact-Ck7hE3ba.js +0 -1141
  799. package/dist/compact.runtime-el4EYgrW.js +0 -12
  800. package/dist/completion-cli-BbDnqYnS.js +0 -315
  801. package/dist/computer-use-GvCUpEEf.js +0 -367
  802. package/dist/config-BLgaJJYW.js +0 -2
  803. package/dist/config-FCIVG4Db.js +0 -373
  804. package/dist/config-mutations-BIPJigAd.js +0 -159
  805. package/dist/context-engine-host-compat--OOY7QEI.js +0 -2
  806. package/dist/context-engine-host-compat-DYVeYR5u.js +0 -288
  807. package/dist/context-engine-lifecycle-DAB4GWd5.js +0 -1274
  808. package/dist/control-auth-BekRscGw.js +0 -114
  809. package/dist/control-service-Hg9bqOzH.js +0 -145
  810. package/dist/control-ui/assets/agents-BRFjPVUQ.js +0 -1008
  811. package/dist/control-ui/assets/channel-config-extras-BySqgsd3.js +0 -2
  812. package/dist/control-ui/assets/channels-CC3sudX4.js +0 -367
  813. package/dist/control-ui/assets/cron-D0s06fzI.js +0 -1013
  814. package/dist/control-ui/assets/debug-9oq9PYZU.js +0 -97
  815. package/dist/control-ui/assets/index-ChE1ypG4.js +0 -7381
  816. package/dist/control-ui/assets/index-Crl1466m.css +0 -1
  817. package/dist/control-ui/assets/instances-k9LggJet.js +0 -57
  818. package/dist/control-ui/assets/logs-DKvc2q9b.js +0 -74
  819. package/dist/control-ui/assets/nodes-Bn7kmEGE.js +0 -436
  820. package/dist/control-ui/assets/sessions-0K-_jD8O.js +0 -399
  821. package/dist/control-ui/assets/skills-C9d4OZr_.js +0 -314
  822. package/dist/control-ui/assets/skills-shared-Bv7GgVjx.js +0 -11
  823. package/dist/conversation-binding-runtime-CC1fW5Mc.js +0 -4
  824. package/dist/conversation-runtime-YK1oLoen.js +0 -31
  825. package/dist/core-D9SaX41X.js +0 -282
  826. package/dist/core-api-6x_6ros_.js +0 -2
  827. package/dist/core-api-DQaZ_B6s.js +0 -5
  828. package/dist/crestodian-DLJAlHQO.js +0 -55
  829. package/dist/daocore-tools-DnGMRYJ5.js +0 -11727
  830. package/dist/delivery-dlloZivQ.js +0 -1002
  831. package/dist/dialogue-BQcF-xHi.js +0 -37
  832. package/dist/dir-fetch-tool-BmkLMRQd.js +0 -565
  833. package/dist/dir-list-tool-lJdvGnnr.js +0 -100
  834. package/dist/direct-dm-BfzS7vxm.js +0 -64
  835. package/dist/directive-handling.fast-lane-BdYkpgfF.js +0 -68
  836. package/dist/directive-handling.impl-DRIFqx-C.js +0 -818
  837. package/dist/directive-handling.impl-DoXcyCdO.js +0 -2
  838. package/dist/directive-handling.model-selection-xgiP4xbL.js +0 -122
  839. package/dist/directive-handling.persist.runtime-Dl-jD_0m.js +0 -263
  840. package/dist/dispatch-acp-transcript.runtime-B-PwrS4S.js +0 -40
  841. package/dist/dispatch-acp.runtime-CQHluA8f.js +0 -18
  842. package/dist/dispatch-kxJ95i3A.js +0 -1640
  843. package/dist/doctor-3QQaqcgK.js +0 -2
  844. package/dist/doctor-B9I7SuuU.js +0 -6
  845. package/dist/doctor-config-flow-DZQY34yK.js +0 -1741
  846. package/dist/doctor-core-checks-C_o9kgoZ.js +0 -2
  847. package/dist/doctor-core-checks-jWtsa4Nz.js +0 -573
  848. package/dist/doctor-health-BJ5wJFg5.js +0 -65
  849. package/dist/doctor-health-contributions-DxNPaNU6.js +0 -696
  850. package/dist/doctor-lint-DQrwNSTd.js +0 -94
  851. package/dist/doctor-state-integrity-Ctb6H9Pr.js +0 -1231
  852. package/dist/doctor-update-BZrZGmOg.js +0 -58
  853. package/dist/dynamic-tools-B9sHtLKs.js +0 -486
  854. package/dist/embedded-backend-CVEWr5Vd.js +0 -579
  855. package/dist/embedded-gateway-stub.runtime-BUl3fCUr.js +0 -12
  856. package/dist/exec-approvals-U0VRo553.js +0 -149
  857. package/dist/file-fetch-tool-PskYnfdX.js +0 -124
  858. package/dist/file-write-tool-BWMKcxSs.js +0 -127
  859. package/dist/format-Dk3-Jpqj.js +0 -1145
  860. package/dist/gateway-cli-BEtRyNAV.js +0 -435
  861. package/dist/gateway-method-runtime-Ba3mc5Ui.js +0 -21
  862. package/dist/get-reply-B-kNh5PS.js +0 -4689
  863. package/dist/get-reply-from-config.runtime-D-49TKR5.js +0 -2
  864. package/dist/graph-users-DIK-qpar.js +0 -1419
  865. package/dist/group-access-B6LDV7nR.js +0 -112
  866. package/dist/group-keys-DnxWQtll.d.ts +0 -17
  867. package/dist/handle-action.guild-admin-Dz9DREmk.js +0 -288
  868. package/dist/harness-CJWitSNk.js +0 -61
  869. package/dist/health-SAxsj7q2.js +0 -4
  870. package/dist/heartbeat-runner-D2IpmXX0.js +0 -5
  871. package/dist/heartbeat-runner.runtime-BKwSStf9.js +0 -4
  872. package/dist/hook-runtime-Cm73yH0T.d.ts +0 -107
  873. package/dist/hooks-C9V4TVXi.js +0 -534
  874. package/dist/inbound-direct-dm-runtime-C-KKlFVB.js +0 -2
  875. package/dist/inbound-reply-dispatch-3Kvtrdcn.js +0 -148
  876. package/dist/init-BGepd_Xi.js +0 -59
  877. package/dist/inline-buttons-Dqa993W-.js +0 -40
  878. package/dist/internal-events-hTD06P4Z.js +0 -90
  879. package/dist/isolated-agent-C30IhhQ4.js +0 -1118
  880. package/dist/isolated-agent-D9rwsYrc.js +0 -2
  881. package/dist/lifecycle-lYxX16zr.js +0 -571
  882. package/dist/list.probe-BuLNPfwh.js +0 -449
  883. package/dist/list.status-command-C9FwGWNZ.js +0 -789
  884. package/dist/llm-slug-generator-DEOtPI7b.js +0 -78
  885. package/dist/local-dispatch.runtime-D2mwqssZ.js +0 -9
  886. package/dist/manager-CSN9j9hh.d.ts +0 -205
  887. package/dist/manager.runtime-eqnbDApb.js +0 -2714
  888. package/dist/markdown-to-line-n4E_Ss2j.js +0 -811
  889. package/dist/mcp-http-DG2YDXx1.js +0 -555
  890. package/dist/mcp-http-DiGvYUK1.js +0 -2
  891. package/dist/media-understanding-provider-BAzC42im.js +0 -339
  892. package/dist/message-actions-DfM9sh0u.js +0 -145
  893. package/dist/message-handler-D3j7tiLC.js +0 -1715
  894. package/dist/message-handler-PdqXVaqc.js +0 -384
  895. package/dist/message-handler.preflight-DVTL11NJ.js +0 -1125
  896. package/dist/message-handler.process-Beo6fyUz.js +0 -1484
  897. package/dist/model-DiiSzCXH.js +0 -74
  898. package/dist/model-selection-CeDXYcsy.js +0 -272
  899. package/dist/models-BecxnLfn.js +0 -104
  900. package/dist/models-BxPknoYN.js +0 -2
  901. package/dist/models-cli-CmGPOjEx.js +0 -256
  902. package/dist/monitor-B2qfveOv.js +0 -60
  903. package/dist/monitor-BIKmDw4B.js +0 -2
  904. package/dist/monitor-CJXHxvh-.js +0 -1657
  905. package/dist/monitor-CqndMsTS.js +0 -4377
  906. package/dist/monitor-Dg9KC5G4.js +0 -834
  907. package/dist/monitor-IbL8Gw1Y.js +0 -2788
  908. package/dist/monitor-LxpNUkve.js +0 -1370
  909. package/dist/monitor-auth-EPov6Z4x.js +0 -179
  910. package/dist/monitor-i7_7ne6w.js +0 -715
  911. package/dist/monitor-polling.runtime-BRFuwAQo.js +0 -883
  912. package/dist/monitor-webhook.runtime-CGyP4NKq.js +0 -387
  913. package/dist/monitor.account-L5cJkJbV.js +0 -5233
  914. package/dist/monitor.runtime-Caq1xo2T.js +0 -2
  915. package/dist/monitor.webhook-CWo_j5xt.js +0 -180
  916. package/dist/node-cli-sessions-Dlrq3Hrt.js +0 -1228
  917. package/dist/openai-http-Cbs9WY_K.js +0 -824
  918. package/dist/openresponses-http-Djc1TNo5.js +0 -1173
  919. package/dist/operations-CePwJ_bf.js +0 -805
  920. package/dist/outbound-adapter-Cmcx_Msg.js +0 -543
  921. package/dist/outbound-session-route-DIvKTIer.js +0 -45
  922. package/dist/outbound.runtime-BCm1uM9e.js +0 -2
  923. package/dist/pairing-challenge-DD0D0sfM.d.ts +0 -87
  924. package/dist/pi-embedded-BGYOawy9.js +0 -3796
  925. package/dist/pi-embedded-s_XN5zci.js +0 -4
  926. package/dist/pi-embedded.runtime-Iv_ADnNC.js +0 -4
  927. package/dist/pi-tools-b-Wh6fBG.js +0 -2413
  928. package/dist/plan-9Cb-QHmS.js +0 -112
  929. package/dist/plan-DOX8mLZM.js +0 -81
  930. package/dist/plugin-CRqD5XqH.js +0 -12396
  931. package/dist/plugin-app-cache-key-BKpHiVS2.js +0 -46
  932. package/dist/plugin-enabled-BEi_lYEW.js +0 -233
  933. package/dist/plugin-registration-D99tHdMd.js +0 -88
  934. package/dist/plugin-sdk/scripts/lib/plugin-sdk-doc-metadata.d.ts +0 -107
  935. package/dist/plugin-service-DBTlrK7m.js +0 -1229
  936. package/dist/policy-B-G2ltps.js +0 -680
  937. package/dist/policy-DCljYbZL.js +0 -138
  938. package/dist/prepare.runtime-Ewb81gRo.js +0 -732
  939. package/dist/preview-warnings-DhWnG_r-.js +0 -392
  940. package/dist/probe-Bqu475Tv.js +0 -2204
  941. package/dist/probe-CRWUBMuB.js +0 -682
  942. package/dist/probe-Dm3lYN25.js +0 -47
  943. package/dist/probe-LLx6ayxG.js +0 -2
  944. package/dist/program-vxEyXm2e.js +0 -131
  945. package/dist/provider-B2aKgXI0.js +0 -32
  946. package/dist/provider-BUYMN3uZ.js +0 -152
  947. package/dist/provider-BlBfyHXO.js +0 -32
  948. package/dist/provider-D3O0zKex.js +0 -8735
  949. package/dist/provider-dispatcher-CYuX21il.js +0 -22
  950. package/dist/provider-session.runtime-xIOzPEA7.js +0 -9
  951. package/dist/provider.runtime-C94TKQWq.js +0 -2
  952. package/dist/public-surface-loader-CDa3nA_L.js +0 -114
  953. package/dist/pw-ai-BH_nTHa5.js +0 -3029
  954. package/dist/pw-role-snapshot-BPi5ipRX.js +0 -333
  955. package/dist/reaction-level-CSHisLIF.js +0 -19
  956. package/dist/reaction-runtime-api-D5YNDU-7.js +0 -116
  957. package/dist/realtime-transcription-provider-B6-wne03.js +0 -205
  958. package/dist/register-AeYt54B0.js +0 -2178
  959. package/dist/register.agent-DuW_Cioa.js +0 -156
  960. package/dist/register.crestodian-DfuAvHf8.js +0 -24
  961. package/dist/register.maintenance-DhSW2XSZ.js +0 -83
  962. package/dist/register.runtime-CYWai1dl.js +0 -54
  963. package/dist/register.subclis-B4c9g5v0.js +0 -31
  964. package/dist/register.subclis-Do4TSxcj.js +0 -3
  965. package/dist/register.subclis-core-Dm9-Cc4K.js +0 -273
  966. package/dist/repair-sequencing-CKX_OEBn.js +0 -640
  967. package/dist/reply-delivery-Dx31Fawb.js +0 -196
  968. package/dist/reply-runtime-DyCbxbOD.js +0 -11
  969. package/dist/reply.runtime-D-49TKR5.js +0 -2
  970. package/dist/request-CZtiBI4R.js +0 -54
  971. package/dist/resolve-allowlist-C-WRtkEq.js +0 -220
  972. package/dist/result-fallback-classifier-BkI5uV-W.js +0 -79
  973. package/dist/route-BEeC4HAl.js +0 -469
  974. package/dist/route-resolution-CHA13yYB.js +0 -274
  975. package/dist/routes-CfBm1qOU.js +0 -2
  976. package/dist/routes-DsgV54GJ.js +0 -3602
  977. package/dist/run-DL8UkH0h.js +0 -1162
  978. package/dist/run-attempt-D0qv7bs7.js +0 -7704
  979. package/dist/run-command-BWyjy--D.js +0 -23
  980. package/dist/run-command-IDml3oWg.js +0 -2
  981. package/dist/run-embedded.runtime-DeIZpKHe.js +0 -4
  982. package/dist/run-execution-cli.runtime-yf9gfWAm.js +0 -4
  983. package/dist/run-subagent-registry.runtime-oZs4xMMU.js +0 -2
  984. package/dist/runtime-BDbGwqGy.js +0 -6179
  985. package/dist/runtime-Bwn06s0u.js +0 -438
  986. package/dist/runtime-CD6WyVpL.js +0 -1287
  987. package/dist/runtime-DbTiSX85.d.ts +0 -17
  988. package/dist/runtime-api-BzvORSkx.js +0 -4
  989. package/dist/runtime-api-CAORRCZU.js +0 -17
  990. package/dist/runtime-api-CZGRk5D1.js +0 -24
  991. package/dist/runtime-api-CZm1iIlw.js +0 -13
  992. package/dist/runtime-api-D0d1LZvp.js +0 -21
  993. package/dist/runtime-api-DPIkVTDM.js +0 -3
  994. package/dist/runtime-api-DbQDZRSI.js +0 -13
  995. package/dist/runtime-api-k3v6Q0lb2.d.ts +0 -3151
  996. package/dist/runtime-api.actions-C2-n4QQ5.d.ts +0 -23
  997. package/dist/runtime-api.actions-CuYXLj2I.js +0 -3
  998. package/dist/runtime-api.monitor-BPMqlEBC.js +0 -6
  999. package/dist/runtime-api.send-cXGaIwD8.js +0 -4
  1000. package/dist/runtime-api.send-t0FX9tXf.d.ts +0 -38
  1001. package/dist/runtime-api.threads-DF6EqVSY.js +0 -2
  1002. package/dist/runtime-channel-B2dCbld0.js +0 -2
  1003. package/dist/runtime-channel-BfzwZ133.js +0 -150
  1004. package/dist/runtime-doctor-_yVIDUi3.d.ts +0 -48
  1005. package/dist/runtime-embedded-pi.runtime-Bz4-Me2g.js +0 -2
  1006. package/dist/sanitize-outbound-52UJkVc2.js +0 -127
  1007. package/dist/sdk-setup-tools-DzA0rD_t.js +0 -8
  1008. package/dist/secrets-BzY28DjS.js +0 -113
  1009. package/dist/security-audit-B_x9Bqsd.js +0 -122
  1010. package/dist/security-audit-CaX5F2YD.js +0 -118
  1011. package/dist/security-audit.runtime-BZFJXu8H.js +0 -2
  1012. package/dist/selection-B4V4O6zr.js +0 -16157
  1013. package/dist/selection-Cp7REh-j.js +0 -3
  1014. package/dist/send-B5TXXeBz.d.ts +0 -231
  1015. package/dist/send-C8NgsGx0.js +0 -2
  1016. package/dist/send-CktHKbVL.js +0 -192
  1017. package/dist/send-DEMaBWpw.d.ts +0 -105
  1018. package/dist/send-DSDSSxuo.js +0 -1631
  1019. package/dist/send-I0iE28XZ.js +0 -143
  1020. package/dist/send.components-CdYNwUR8.js +0 -500
  1021. package/dist/send.components-DDmsziVe.js +0 -2
  1022. package/dist/send.runtime-DEr6-5Rp.js +0 -2
  1023. package/dist/send.types-DywwIqYK.d.ts +0 -160
  1024. package/dist/server-Bdu2XxWz.js +0 -24
  1025. package/dist/server-BnVdhBLM.js +0 -73
  1026. package/dist/server-context-B7bIBpAz.js +0 -2
  1027. package/dist/server-context-BlPO5a-j.js +0 -955
  1028. package/dist/server-cron-3tDiqp95.js +0 -2989
  1029. package/dist/server-cron-Ckfa7HkP.js +0 -2
  1030. package/dist/server-methods-BNAICSKA.js +0 -16494
  1031. package/dist/server-node-events-BSp5sE0Q.js +0 -596
  1032. package/dist/server-plugin-bootstrap-Noai-kpp.js +0 -70
  1033. package/dist/server-plugins-DYPvxv5q.js +0 -432
  1034. package/dist/server-reload-handlers-I8gCBw7C.js +0 -714
  1035. package/dist/server-restart-sentinel-Bykg5_Sm.js +0 -747
  1036. package/dist/server-restart-sentinel-Dz8m-1uN.js +0 -2
  1037. package/dist/server-runtime-services-B2DpVh1J.js +0 -2
  1038. package/dist/server-runtime-services-DPDcSogD.js +0 -267
  1039. package/dist/server-startup-plugins-DHFkcvFX.js +0 -113
  1040. package/dist/server-startup-post-attach-BvKY1MjB.js +0 -716
  1041. package/dist/server-ws-runtime-DbsgWSNE.js +0 -349
  1042. package/dist/server.impl-DkzYcRnc.js +0 -2586
  1043. package/dist/service-oKCE97n8.js +0 -1446
  1044. package/dist/session-binding-BCYHcgKv.js +0 -219
  1045. package/dist/session-binding-Dbc5SyV1.js +0 -2
  1046. package/dist/session-kill-http-MtEei2A_.js +0 -121
  1047. package/dist/session-reset-service-BetsGXPL.js +0 -625
  1048. package/dist/session-route-BNumUO6m.js +0 -93
  1049. package/dist/session-status.runtime-8-kVkZLZ.js +0 -2
  1050. package/dist/session-subagent-reactivation.runtime-C4xmUBc4.js +0 -2
  1051. package/dist/session-tab-registry-DldD575V.js +0 -521
  1052. package/dist/sessions-history-http-Dh8uuG7K.js +0 -430
  1053. package/dist/sessions.runtime-CTD1EISY.js +0 -2
  1054. package/dist/setup-api-ClFwxmWg.js +0 -29
  1055. package/dist/setup-core-DF053J7r.js +0 -174
  1056. package/dist/setup-surface-C3vtcmut.js +0 -221
  1057. package/dist/setup-surface-hKgM61lK.js +0 -288
  1058. package/dist/setup-surface-kl5kIfCD.js +0 -405
  1059. package/dist/setup-surface-o44p_EZs.js +0 -320
  1060. package/dist/shared-DuNbDPVK.js +0 -121
  1061. package/dist/shared-client-BGdKzX6-.js +0 -2
  1062. package/dist/shared-client-DiaCaBiw.js +0 -629
  1063. package/dist/side-question-vADB_V7t.js +0 -683
  1064. package/dist/skill-tool-dispatch.runtime-DeTiaxln.js +0 -143
  1065. package/dist/slash-state-TiAtCc3B.js +0 -2166
  1066. package/dist/speech-provider-Dko5aOz2.js +0 -184
  1067. package/dist/src-Bczx7izw.js +0 -4256
  1068. package/dist/startup-context-sYE5tS1C.js +0 -313
  1069. package/dist/status-subagents.runtime-B79dVmOZ.js +0 -18
  1070. package/dist/status-text-CNV3Xo_z.js +0 -296
  1071. package/dist/sticker-cache-ClnmeK7n.js +0 -206
  1072. package/dist/sticker-vision.runtime-DKWYX_Z0.js +0 -17
  1073. package/dist/subagent-announce-BxgiPcah.js +0 -354
  1074. package/dist/subagent-announce-delivery-M73wDt9b.js +0 -958
  1075. package/dist/subagent-control-Svp4alxT.js +0 -508
  1076. package/dist/subagent-hooks-B8fQ4SB-.js +0 -2
  1077. package/dist/subagent-hooks-Bide9UGs.js +0 -2
  1078. package/dist/subagent-hooks-BroJYfmc.js +0 -116
  1079. package/dist/subagent-hooks-CeLaGy0S.js +0 -2
  1080. package/dist/subagent-hooks-D0jzCSJB.js +0 -230
  1081. package/dist/subagent-hooks-DMtU9Utn.js +0 -146
  1082. package/dist/subagent-hooks-api-6X1AhZ92.js +0 -23
  1083. package/dist/subagent-hooks-api-C3hw2s-7.js +0 -22
  1084. package/dist/subagent-hooks-api-D0utPXhG.js +0 -23
  1085. package/dist/subagent-orphan-recovery-DlyXF_8M.js +0 -352
  1086. package/dist/subagent-registry-Ct9aaUSq.js +0 -2351
  1087. package/dist/subagent-registry-_ThKY_a5.js +0 -3
  1088. package/dist/subagent-session-cleanup-D9jhUKCY.js +0 -525
  1089. package/dist/subagent-spawn-Bl5_-Qro.js +0 -1164
  1090. package/dist/target-id-DgUyIiaj.js +0 -107
  1091. package/dist/targets-CV6YGekF.js +0 -19
  1092. package/dist/targets-Ct6zFYUl.js +0 -19
  1093. package/dist/targets-DQxwAOx5.js +0 -44
  1094. package/dist/test-fixtures-HY6a4nTW.d.ts +0 -26
  1095. package/dist/testing-JsUCJjUs.js +0 -267
  1096. package/dist/thread-bindings-BJJr5qB6.js +0 -232
  1097. package/dist/thread-bindings-BVe9r2rW.js +0 -571
  1098. package/dist/thread-bindings-p78_o8d0.js +0 -228
  1099. package/dist/thread-bindings-yvtEoUyM.js +0 -8
  1100. package/dist/thread-bindings.discord-api-DpdJ31xq.js +0 -187
  1101. package/dist/thread-bindings.manager-DkA46uP3.js +0 -536
  1102. package/dist/thread-bindings.manager-MVNj26UO.js +0 -2
  1103. package/dist/thread-lifecycle-CLhulJIV.js +0 -1614
  1104. package/dist/token-VGmXler6.js +0 -134
  1105. package/dist/tool-BJkgiGjR.js +0 -139
  1106. package/dist/tool-actions.runtime-DhrT4z_Z.js +0 -534
  1107. package/dist/tool-resolution-BJLcYvry.js +0 -149
  1108. package/dist/tools-effective-inventory-D1c6J-sI.js +0 -204
  1109. package/dist/tools-invoke-http-B-k9cOYf.js +0 -67
  1110. package/dist/tools-invoke-shared-qMHGnaLY.js +0 -200
  1111. package/dist/tts-CmxOJYRq.js +0 -66
  1112. package/dist/tui-BcRfXYtK.js +0 -2
  1113. package/dist/tui-ChmyCc_c.js +0 -4709
  1114. package/dist/tui-backend-BOAgkU7O.js +0 -256
  1115. package/dist/tui-cli-C_1WxXuf.js +0 -37
  1116. package/dist/typed-cases-D8uyQEzR.d.ts +0 -68
  1117. package/dist/update-cli-CBJVr7p3.js +0 -3664
  1118. package/dist/update-runner-DHzvirfV.js +0 -2379
  1119. package/dist/vision-tools-BIOoLPOZ.js +0 -1409
  1120. package/dist/web-search-8-XCZJzj.js +0 -62
  1121. package/dist/web-search-provider.runtime-BORgiL3n.js +0 -2
  1122. package/dist/web-search-provider.runtime-CCXm-JLK.js +0 -328
  1123. package/dist/webhook-targets-CW4Nl_cq.d.ts +0 -99
  1124. package/dist/xai-oauth-CcxHOluD.js +0 -479
  1125. package/dist/xai-user-agent-BE2MgJak.js +0 -32
  1126. /package/dist/{accounts-CqgATPC-2.d.ts → accounts-CqgATPC-.d.ts} +0 -0
  1127. /package/dist/{acp-runtime-backend-DFDX5U10.js → acp-runtime-backend-BQNm-KYC.js} +0 -0
  1128. /package/dist/{channel-actions-DMH2vVzJ.js → channel-actions-CMUt5769.js} +0 -0
  1129. /package/dist/{command-status-runtime-Du_onNYh.js → command-status-runtime-DXZZv5h_.js} +0 -0
  1130. /package/dist/{delegate-CDb4qcfr.js → delegate-BTCHfZIj.js} +0 -0
  1131. /package/dist/{dispatch-acp-0Se8OniI.js → dispatch-acp-DtdYZo4i.js} +0 -0
  1132. /package/dist/{heartbeat-runner-BdsqQ3pi.js → heartbeat-runner-BqUKIwmn.js} +0 -0
  1133. /package/dist/{library-CsfrQOyp.js → library-DavrGMix.js} +0 -0
  1134. /package/dist/{run-executor.runtime-OlsZwyZw.js → run-executor.runtime-DMU7greB.js} +0 -0
  1135. /package/dist/{shared-DxV6gup5.js → shared-Kl_LS_vA.js} +0 -0
@@ -1,1231 +0,0 @@
1
- import { c as normalizeOptionalString, s as normalizeOptionalLowercaseString } from "./string-coerce-DyL154ka.js";
2
- import { o as resolveRequiredHomeDir } from "./home-dir-Bs0GlzoJ.js";
3
- import { g as resolveOAuthDir, v as resolveStateDir } from "./paths-ZwPDM6zn.js";
4
- import { t as formatCliCommand } from "./command-format-tWmMYcvZ.js";
5
- import { g as shortenHomePath } from "./utils-CNnMhEDp.js";
6
- import { r as normalizeProviderId } from "./provider-id-zTW9Rdln.js";
7
- import { r as resolveAgentModelFallbackValues } from "./model-input-ChW9XXsQ.js";
8
- import { u as resolveAgentModelFallbacksOverride } from "./agent-scope-Dx1S0aWX.js";
9
- import { a as isSubagentSessionKey, c as parseAgentSessionKey } from "./session-key-utils-Ce_xWkNq.js";
10
- import { d as resolveAgentIdFromSessionKey, l as normalizeAgentId, v as toAgentStoreSessionKey } from "./session-key-Bte0mmcq.js";
11
- import { c as resolveDefaultAgentId, n as listAgentIds, r as resolveAgentConfig, t as listAgentEntries } from "./agent-scope-config-CJUQxn7u.js";
12
- import { t as resolveAgentHarnessPolicy } from "./policy-DqVcSoDg.js";
13
- import { t as asNullableObjectRecord } from "./record-coerce-aMlBWINm.js";
14
- import { i as resolveMainSessionKey, t as canonicalizeMainSessionAlias } from "./main-session-D3q_5w0B.js";
15
- import { r as isPrimarySessionTranscriptFileName, t as formatSessionArchiveTimestamp } from "./artifacts-BZhcmsUl.js";
16
- import { a as resolveSessionFilePathOptions, i as resolveSessionFilePath, l as resolveSessionTranscriptsDirForAgent, u as resolveStorePath } from "./paths-8MFrTNIB.js";
17
- import { t as loadSessionStore } from "./store-load-B817r-3Z.js";
18
- import { u as updateSessionStore } from "./store-C4uyNaPD.js";
19
- import { i as parseModelRef, n as modelKey } from "./model-selection-normalize-DLmoprpp.js";
20
- import { s as resolveDefaultModelForAgent } from "./model-selection-D1TyOrqK.js";
21
- import { i as isSubagentRecoveryWedgedEntry, r as formatSubagentRecoveryWedgedReason, t as clearWedgedSubagentRecoveryAbort } from "./subagent-recovery-state-Bz-c9nEo.js";
22
- import "./selection-B4V4O6zr.js";
23
- import { n as isHeartbeatOkResponse, r as isHeartbeatUserMessage } from "./heartbeat-filter-B0XYZgGB.js";
24
- import { n as resolveHeartbeatIntervalMs } from "./heartbeat-summary-D4s-V11G.js";
25
- import { f as listConfiguredChannelIdsForReadOnlyScope } from "./channel-plugin-ids-l7ScZ28F.js";
26
- import { t as resolveHeartbeatDeliveryTarget } from "./targets-DIYZ3VNP.js";
27
- import { t as resolveDaoCoreAgentDir } from "./agent-dir-compat-X9XMR4LI.js";
28
- import { t as note } from "./note-CbITX52o.js";
29
- import { t as resolveMemoryBackendConfig } from "./backend-config-Dgzzeq8z.js";
30
- import "./engine-storage-CGtcXK3z.js";
31
- import { a as listPluginDoctorSessionRouteStateOwners } from "./doctor-contract-registry-DG39WvaV.js";
32
- import fs from "node:fs";
33
- import path from "node:path";
34
- import os from "node:os";
35
- //#region src/commands/doctor-heartbeat-main-session-repair.ts
36
- function countLabel$2(count, singular, plural = `${singular}s`) {
37
- return `${count} ${count === 1 ? singular : plural}`;
38
- }
39
- function existsFile$1(filePath) {
40
- try {
41
- return fs.existsSync(filePath) && fs.statSync(filePath).isFile();
42
- } catch {
43
- return false;
44
- }
45
- }
46
- function sessionEntryHasSyntheticHeartbeatOwnership(entry) {
47
- return typeof entry.heartbeatIsolatedBaseSessionKey === "string" && entry.heartbeatIsolatedBaseSessionKey.trim().length > 0;
48
- }
49
- function parseTranscriptMessageLine(line) {
50
- let parsed;
51
- try {
52
- parsed = JSON.parse(line);
53
- } catch {
54
- return null;
55
- }
56
- const record = asNullableObjectRecord(parsed);
57
- if (!record) return null;
58
- const message = asNullableObjectRecord(record.message) ?? record;
59
- const role = message.role;
60
- if (typeof role !== "string") return null;
61
- return {
62
- role,
63
- content: message.content
64
- };
65
- }
66
- function summarizeTranscriptHeartbeatMessages(transcriptPath) {
67
- let raw;
68
- try {
69
- raw = fs.readFileSync(transcriptPath, "utf8");
70
- } catch {
71
- return null;
72
- }
73
- const summary = {
74
- inspectedMessages: 0,
75
- userMessages: 0,
76
- heartbeatUserMessages: 0,
77
- nonHeartbeatUserMessages: 0,
78
- assistantMessages: 0,
79
- heartbeatOkAssistantMessages: 0
80
- };
81
- for (const line of raw.split(/\r?\n/)) {
82
- const trimmed = line.trim();
83
- if (!trimmed) continue;
84
- const message = parseTranscriptMessageLine(trimmed);
85
- if (!message) continue;
86
- summary.inspectedMessages += 1;
87
- if (message.role === "user") {
88
- summary.userMessages += 1;
89
- if (isHeartbeatUserMessage(message)) summary.heartbeatUserMessages += 1;
90
- else summary.nonHeartbeatUserMessages += 1;
91
- } else if (message.role === "assistant") {
92
- summary.assistantMessages += 1;
93
- if (isHeartbeatOkResponse(message)) summary.heartbeatOkAssistantMessages += 1;
94
- }
95
- }
96
- return summary.inspectedMessages > 0 ? summary : null;
97
- }
98
- function resolveHeartbeatMainSessionRepairCandidate(params) {
99
- const { entry, transcriptPath } = params;
100
- if (!entry) return null;
101
- if (!(entry.lastInteractionAt === void 0)) return null;
102
- const hasSyntheticHeartbeatOwnership = sessionEntryHasSyntheticHeartbeatOwnership(entry);
103
- if (hasSyntheticHeartbeatOwnership && !transcriptPath) return { reason: "metadata" };
104
- if (!transcriptPath) return null;
105
- const summary = summarizeTranscriptHeartbeatMessages(transcriptPath);
106
- if (!summary) return null;
107
- if (summary.heartbeatUserMessages > 0 && summary.userMessages === summary.heartbeatUserMessages && summary.nonHeartbeatUserMessages === 0) return {
108
- reason: hasSyntheticHeartbeatOwnership ? "metadata" : "transcript",
109
- summary
110
- };
111
- return null;
112
- }
113
- function resolveHeartbeatMainRecoveryKey(params) {
114
- const parsed = parseAgentSessionKey(params.mainKey);
115
- if (!parsed) return null;
116
- const stamp = formatSessionArchiveTimestamp(params.nowMs).toLowerCase();
117
- const base = `agent:${parsed.agentId}:heartbeat-recovered-${stamp}`;
118
- if (!params.store[base]) return base;
119
- for (let index = 2; index <= 100; index += 1) {
120
- const candidate = `${base}-${index}`;
121
- if (!params.store[candidate]) return candidate;
122
- }
123
- return null;
124
- }
125
- function moveHeartbeatMainSessionEntry(params) {
126
- const entry = params.store[params.mainKey];
127
- if (!entry || params.store[params.recoveredKey]) return false;
128
- params.store[params.recoveredKey] = entry;
129
- delete params.store[params.mainKey];
130
- return true;
131
- }
132
- function resolveTuiLastSessionPath(stateDir) {
133
- return path.join(stateDir, "tui", "last-session.json");
134
- }
135
- function clearTuiLastSessionPointers(params) {
136
- if (params.sessionKeys.size === 0 || !existsFile$1(params.filePath)) return 0;
137
- let parsed;
138
- try {
139
- parsed = JSON.parse(fs.readFileSync(params.filePath, "utf8"));
140
- } catch {
141
- return 0;
142
- }
143
- const store = asNullableObjectRecord(parsed);
144
- if (!store) return 0;
145
- let removed = 0;
146
- const next = {};
147
- for (const [key, value] of Object.entries(store)) {
148
- const sessionKey = asNullableObjectRecord(value)?.sessionKey;
149
- if (typeof sessionKey === "string" && params.sessionKeys.has(sessionKey)) {
150
- removed += 1;
151
- continue;
152
- }
153
- next[key] = value;
154
- }
155
- if (removed === 0) return 0;
156
- try {
157
- fs.writeFileSync(params.filePath, `${JSON.stringify(next, null, 2)}\n`, { mode: 384 });
158
- } catch {
159
- return 0;
160
- }
161
- return removed;
162
- }
163
- async function repairHeartbeatPoisonedMainSession(params) {
164
- const mainKey = resolveMainSessionKey(params.cfg);
165
- const mainEntry = params.store[mainKey];
166
- if (!mainEntry?.sessionId) return;
167
- let transcriptPath;
168
- try {
169
- transcriptPath = resolveSessionFilePath(mainEntry.sessionId, mainEntry, params.sessionPathOpts);
170
- } catch {
171
- transcriptPath = void 0;
172
- }
173
- const candidate = resolveHeartbeatMainSessionRepairCandidate({
174
- entry: mainEntry,
175
- transcriptPath
176
- });
177
- if (!candidate) return;
178
- const recoveredKey = resolveHeartbeatMainRecoveryKey({
179
- mainKey,
180
- store: params.store
181
- });
182
- if (!recoveredKey) {
183
- params.warnings.push(`- Main session ${mainKey} appears heartbeat-owned, but doctor could not choose a safe recovery key.`);
184
- return;
185
- }
186
- const reason = candidate.reason === "metadata" ? "heartbeat metadata" : `${candidate.summary?.heartbeatUserMessages ?? 0} heartbeat-only user message(s)`;
187
- params.warnings.push([`- Main session ${mainKey} appears to be a heartbeat-owned session (${reason}).`, ` Doctor can move it to ${recoveredKey} and let the next interactive launch create a fresh main session.`].join("\n"));
188
- if (!await params.prompter.confirmRuntimeRepair({
189
- message: `Move heartbeat-owned main session ${mainKey} to ${recoveredKey} and clear stale TUI restore pointers?`,
190
- initialValue: true
191
- })) return;
192
- let movedEntry;
193
- await updateSessionStore(params.absoluteStorePath, (currentStore) => {
194
- const currentEntry = currentStore[mainKey];
195
- if (!resolveHeartbeatMainSessionRepairCandidate({
196
- entry: currentEntry,
197
- transcriptPath
198
- })) return;
199
- if (moveHeartbeatMainSessionEntry({
200
- store: currentStore,
201
- mainKey,
202
- recoveredKey
203
- })) movedEntry = currentEntry;
204
- });
205
- if (!movedEntry) {
206
- params.warnings.push(`- Main session ${mainKey} changed before repair could move it.`);
207
- return;
208
- }
209
- params.store[recoveredKey] = movedEntry;
210
- delete params.store[mainKey];
211
- const clearedPointers = clearTuiLastSessionPointers({
212
- filePath: resolveTuiLastSessionPath(params.stateDir),
213
- sessionKeys: new Set([mainKey])
214
- });
215
- params.changes.push(`- Moved heartbeat-owned main session ${mainKey} to ${recoveredKey}.`);
216
- if (clearedPointers > 0) params.changes.push(`- Cleared ${countLabel$2(clearedPointers, "stale TUI last-session pointer")} for ${mainKey}.`);
217
- }
218
- //#endregion
219
- //#region src/commands/doctor-heartbeat-session-target.ts
220
- function hasExplicitHeartbeatAgents(cfg) {
221
- return listAgentEntries(cfg).some((entry) => Boolean(entry?.heartbeat));
222
- }
223
- function resolveHeartbeatConfig(cfg, agentId) {
224
- const defaults = cfg.agents?.defaults?.heartbeat;
225
- const overrides = resolveAgentConfig(cfg, agentId)?.heartbeat;
226
- if (!defaults && !overrides) return overrides;
227
- return {
228
- ...defaults,
229
- ...overrides
230
- };
231
- }
232
- function listHeartbeatDoctorAgents(cfg) {
233
- if (hasExplicitHeartbeatAgents(cfg)) return listAgentEntries(cfg).filter((entry) => entry?.heartbeat).map((entry) => normalizeAgentId(entry.id)).filter((agentId) => agentId);
234
- if (cfg.agents?.defaults?.heartbeat) return listAgentIds(cfg);
235
- return [];
236
- }
237
- /**
238
- * Detect heartbeat configs that pin a non-existent session. The runtime
239
- * resolves `heartbeat.session` to a sessionKey via `resolveHeartbeatSession`;
240
- * if the entry is missing, `resolveHeartbeatDeliveryTarget` falls back to
241
- * `{channel:"none", reason:"no-target"}` and the heartbeat fires a model
242
- * call whose reply has nowhere to land. Common cause: the configured Slack
243
- * channel ID does not match any channel the agent has ever joined (e.g.,
244
- * heartbeat pins channel `c0b2eddpw95` but the agent only has sessions in
245
- * `c0ag7jag35g`, or the agent has no Slack bot at all).
246
- *
247
- * Warning only — repair would mean rewriting the config, which is the
248
- * operator's intent to express.
249
- */
250
- function describeHeartbeatSessionTargetIssues(cfg) {
251
- const warnings = [];
252
- const sessionScope = cfg.session?.scope ?? "per-sender";
253
- for (const agentId of listHeartbeatDoctorAgents(cfg)) {
254
- if (!agentId) continue;
255
- const resolvedAgentId = normalizeAgentId(agentId);
256
- const heartbeatConfig = resolveHeartbeatConfig(cfg, resolvedAgentId);
257
- if (!heartbeatConfig) continue;
258
- if (!resolveHeartbeatIntervalMs(cfg, void 0, heartbeatConfig)) continue;
259
- const configuredSession = normalizeOptionalString(heartbeatConfig.session);
260
- if (!configuredSession) continue;
261
- const normalizedSession = configuredSession.toLowerCase();
262
- if (normalizedSession === "main" || normalizedSession === "global") continue;
263
- if (isSubagentSessionKey(configuredSession)) continue;
264
- if (sessionScope === "global") continue;
265
- const target = normalizeOptionalString(heartbeatConfig.target);
266
- if (!target || target === "none") continue;
267
- const deliveryWithoutSession = resolveHeartbeatDeliveryTarget({
268
- cfg,
269
- heartbeat: heartbeatConfig
270
- });
271
- if (deliveryWithoutSession.channel !== "none" && deliveryWithoutSession.to) continue;
272
- const candidateSession = toAgentStoreSessionKey({
273
- agentId: resolvedAgentId,
274
- requestKey: configuredSession,
275
- mainKey: cfg.session?.mainKey
276
- });
277
- if (isSubagentSessionKey(candidateSession)) continue;
278
- const canonicalSession = canonicalizeMainSessionAlias({
279
- cfg,
280
- agentId: resolvedAgentId,
281
- sessionKey: candidateSession
282
- });
283
- if (canonicalSession === "global" || isSubagentSessionKey(canonicalSession) || resolveAgentIdFromSessionKey(canonicalSession) !== resolvedAgentId) continue;
284
- const storeAgentId = resolvedAgentId;
285
- const storePath = resolveStorePath(cfg.session?.store, { agentId: storeAgentId });
286
- if (loadSessionStore(storePath)[canonicalSession]) continue;
287
- warnings.push([
288
- `- Agent ${agentId} heartbeat.session pins ${configuredSession} (resolved to ${canonicalSession}) but that session has no entry in ${storePath}.`,
289
- ` Heartbeats will run but resolve delivery to channel="none"/reason="no-target", so replies are dropped silently.`,
290
- ` Fix: point heartbeat.session at a session the agent actually owns, set heartbeat.target="none" to suppress delivery, or remove the heartbeat.session field to fall back to the agent main session.`
291
- ].join("\n"));
292
- }
293
- return warnings;
294
- }
295
- //#endregion
296
- //#region src/commands/doctor-session-state-providers.ts
297
- function countLabel$1(count, singular, plural = `${singular}s`) {
298
- return `${count} ${count === 1 ? singular : plural}`;
299
- }
300
- function normalizeString(value) {
301
- return typeof value === "string" && value.trim() ? value.trim() : void 0;
302
- }
303
- function normalizeIdSet(values) {
304
- return new Set((values ?? []).map((value) => normalizeProviderId(value)));
305
- }
306
- function normalizePrefixList(values) {
307
- return (values ?? []).map((value) => value.trim().toLowerCase()).filter(Boolean);
308
- }
309
- function ownsPrefixedValue(prefixes, value) {
310
- const normalized = normalizeString(value)?.toLowerCase();
311
- return normalized !== void 0 && prefixes.some((prefix) => normalized.startsWith(prefix));
312
- }
313
- function countSessionLabel(count) {
314
- return countLabel$1(count, "session");
315
- }
316
- function repairExample(repair) {
317
- return `${repair.key} (${repair.reasons.join(", ")})`;
318
- }
319
- function resolveSessionAgentId(cfg, sessionKey) {
320
- return parseAgentSessionKey(sessionKey)?.agentId ?? resolveDefaultAgentId(cfg);
321
- }
322
- function resolveConfiguredDoctorSessionStateRoute(params) {
323
- const agentId = resolveSessionAgentId(params.cfg, params.sessionKey);
324
- const primary = resolveDefaultModelForAgent({
325
- cfg: params.cfg,
326
- agentId
327
- });
328
- const configuredModelRefs = /* @__PURE__ */ new Set();
329
- const addRef = (provider, model) => {
330
- configuredModelRefs.add(modelKey(provider, model));
331
- };
332
- addRef(primary.provider, primary.model);
333
- const fallbacks = resolveAgentModelFallbacksOverride(params.cfg, agentId) ?? resolveAgentModelFallbackValues(params.cfg.agents?.defaults?.model);
334
- for (const fallback of fallbacks) {
335
- const parsed = parseModelRef(fallback, primary.provider, { allowPluginNormalization: false });
336
- if (parsed) addRef(parsed.provider, parsed.model);
337
- }
338
- const runtime = resolveAgentHarnessPolicy({
339
- provider: primary.provider,
340
- modelId: primary.model,
341
- config: params.cfg,
342
- agentId,
343
- sessionKey: params.sessionKey
344
- }).runtime;
345
- return {
346
- defaultProvider: primary.provider,
347
- configuredModelRefs: [...configuredModelRefs],
348
- runtime
349
- };
350
- }
351
- function resolvePluginDoctorSessionRouteStateOwners(params) {
352
- return listPluginDoctorSessionRouteStateOwners({
353
- config: params.cfg,
354
- env: params.env
355
- });
356
- }
357
- function entryMayContainPluginSessionRouteState(entry) {
358
- const record = entry;
359
- return normalizeString(record.providerOverride) !== void 0 || normalizeString(record.modelOverride) !== void 0 || normalizeString(record.modelOverrideSource) !== void 0 || record.liveModelSwitchPending !== void 0 || normalizeString(record.modelProvider) !== void 0 || normalizeString(record.model) !== void 0 || normalizeString(record.agentHarnessId) !== void 0 || normalizeString(record.agentRuntimeOverride) !== void 0 || record.cliSessionBindings !== void 0 || record.cliSessionIds !== void 0 || normalizeString(record.authProfileOverride) !== void 0 || normalizeString(record.authProfileOverrideSource) !== void 0;
360
- }
361
- function storeMayContainPluginSessionRouteState(store) {
362
- return Object.values(store).some((entry) => entryMayContainPluginSessionRouteState(entry));
363
- }
364
- function resolvePersistedOverrideModelRef(params) {
365
- const overrideModel = normalizeString(params.overrideModel);
366
- if (!overrideModel) return null;
367
- const overrideProvider = normalizeString(params.overrideProvider);
368
- return parseModelRef(overrideProvider ? `${overrideProvider}/${overrideModel}` : overrideModel, params.defaultProvider, { allowPluginNormalization: false });
369
- }
370
- function addReason(reasons, reason) {
371
- if (!reasons.includes(reason)) reasons.push(reason);
372
- }
373
- function routeAllowsOwnerState(params) {
374
- const providerIds = normalizeIdSet(params.owner.providerIds);
375
- const runtimeIds = normalizeIdSet(params.owner.runtimeIds);
376
- const routeRuntime = normalizeString(params.route?.runtime);
377
- if (routeRuntime && runtimeIds.has(normalizeProviderId(routeRuntime))) return true;
378
- return params.route?.configuredModelRefs.some((ref) => {
379
- const slash = ref.indexOf("/");
380
- return slash > 0 && providerIds.has(normalizeProviderId(ref.slice(0, slash)));
381
- }) ?? false;
382
- }
383
- function hasOwnedCliSession(params) {
384
- const bindings = params.entry.cliSessionBindings;
385
- const ids = params.entry.cliSessionIds;
386
- return params.cliSessionKeys.some((key) => {
387
- const normalized = normalizeProviderId(key);
388
- return bindings !== null && typeof bindings === "object" && normalized in bindings && bindings[normalized] !== void 0 || ids !== null && typeof ids === "object" && normalized in ids && ids[normalized] !== void 0;
389
- });
390
- }
391
- function modelRefKey(provider, model) {
392
- return modelKey(provider, model).toLowerCase();
393
- }
394
- function scanEntryForOwner(params) {
395
- const providerIds = normalizeIdSet(params.owner.providerIds);
396
- const runtimeIds = normalizeIdSet(params.owner.runtimeIds);
397
- const cliSessionKeys = [...normalizeIdSet(params.owner.cliSessionKeys)];
398
- const authProfilePrefixes = normalizePrefixList(params.owner.authProfilePrefixes);
399
- const routeAllowsOwner = routeAllowsOwnerState({
400
- owner: params.owner,
401
- route: params.route
402
- });
403
- const routeRuntime = normalizeString(params.route?.runtime);
404
- const routeAllowsOwnerRuntime = routeRuntime !== void 0 && runtimeIds.has(normalizeProviderId(routeRuntime));
405
- const reasons = [];
406
- const pinnedRuntimeKeys = [];
407
- const directOverride = resolvePersistedOverrideModelRef({
408
- defaultProvider: params.route?.defaultProvider ?? "",
409
- overrideProvider: params.entry.providerOverride,
410
- overrideModel: params.entry.modelOverride
411
- });
412
- const directOverrideKey = directOverride ? modelRefKey(directOverride.provider, directOverride.model) : void 0;
413
- const directOverrideIsOwned = directOverride !== null && providerIds.has(normalizeProviderId(directOverride.provider));
414
- const directOverrideIsConfigured = directOverrideKey !== void 0 && (params.route?.configuredModelRefs.some((ref) => ref.toLowerCase() === directOverrideKey) ?? false);
415
- const directOverrideSource = params.entry.modelOverrideSource === "user" ? "user" : params.entry.modelOverrideSource === "auto" ? "auto" : params.entry.modelOverride ? "legacy" : void 0;
416
- if (directOverrideIsOwned && !directOverrideIsConfigured) {
417
- if (directOverrideSource === "auto") addReason(reasons, "auto model override");
418
- else if (!routeAllowsOwner && directOverride) return { manualReview: {
419
- key: params.key,
420
- ownerLabel: params.owner.label,
421
- message: `${params.key} (${modelRefKey(directOverride.provider, directOverride.model)}, ${directOverrideSource === "user" ? "user" : "legacy"})`
422
- } };
423
- }
424
- const explicitOwnedOverride = directOverrideIsOwned && directOverrideSource !== void 0 && directOverrideSource !== "auto";
425
- if (!routeAllowsOwnerRuntime && !explicitOwnedOverride) {
426
- const harnessId = normalizeString(params.entry.agentHarnessId);
427
- if (harnessId && runtimeIds.has(normalizeProviderId(harnessId))) {
428
- addReason(reasons, "pinned runtime");
429
- pinnedRuntimeKeys.push("agentHarnessId");
430
- }
431
- const runtimeOverride = normalizeString(params.entry.agentRuntimeOverride);
432
- if (runtimeOverride && runtimeIds.has(normalizeProviderId(runtimeOverride))) {
433
- addReason(reasons, "pinned runtime");
434
- pinnedRuntimeKeys.push("agentRuntimeOverride");
435
- }
436
- }
437
- if (!routeAllowsOwner && !explicitOwnedOverride) {
438
- const runtimeModel = normalizeString(params.entry.model);
439
- const runtimeRef = runtimeModel ? parseModelRef(runtimeModel, normalizeString(params.entry.modelProvider) ?? "", { allowPluginNormalization: false }) : null;
440
- if (runtimeRef && providerIds.has(normalizeProviderId(runtimeRef.provider))) addReason(reasons, "runtime model state");
441
- if (hasOwnedCliSession({
442
- entry: params.entry,
443
- cliSessionKeys
444
- })) addReason(reasons, "CLI session binding");
445
- if (params.entry.authProfileOverrideSource === "auto" && ownsPrefixedValue(authProfilePrefixes, params.entry.authProfileOverride)) addReason(reasons, "auto auth profile override");
446
- }
447
- if (reasons.length === 0) return {};
448
- return { repair: {
449
- key: params.key,
450
- ownerId: params.owner.id,
451
- ownerLabel: params.owner.label,
452
- reasons,
453
- pinnedRuntimeKeys,
454
- cliSessionKeys
455
- } };
456
- }
457
- function scanSessionRouteStateOwners(params) {
458
- const repairs = [];
459
- const manualReview = [];
460
- for (const [key, entry] of Object.entries(params.store)) {
461
- if (!entry || typeof entry !== "object") continue;
462
- for (const owner of params.owners) {
463
- const scan = scanEntryForOwner({
464
- key,
465
- entry,
466
- owner,
467
- route: params.routes[key]
468
- });
469
- if (scan.repair) repairs.push(scan.repair);
470
- if (scan.manualReview) manualReview.push(scan.manualReview);
471
- }
472
- }
473
- return {
474
- repairs,
475
- manualReview
476
- };
477
- }
478
- function clearEntryKey(entry, key) {
479
- if (entry[key] !== void 0) {
480
- delete entry[key];
481
- return true;
482
- }
483
- return false;
484
- }
485
- function clearRecordKeys(entry, recordKey, ownedKeys) {
486
- const value = entry[recordKey];
487
- if (value === null || typeof value !== "object") return false;
488
- const record = value;
489
- let changed = false;
490
- const next = { ...record };
491
- for (const key of ownedKeys) {
492
- const normalized = normalizeProviderId(key);
493
- if (next[normalized] !== void 0) {
494
- delete next[normalized];
495
- changed = true;
496
- }
497
- }
498
- if (!changed) return false;
499
- entry[recordKey] = Object.keys(next).length > 0 ? next : void 0;
500
- return true;
501
- }
502
- function applySessionRouteStateRepair(params) {
503
- let changed = false;
504
- const clear = (key) => {
505
- changed = clearEntryKey(params.entry, key) || changed;
506
- };
507
- if (params.repair.reasons.includes("auto model override")) {
508
- clear("providerOverride");
509
- clear("modelOverride");
510
- clear("modelOverrideSource");
511
- clear("liveModelSwitchPending");
512
- }
513
- if (params.repair.reasons.includes("runtime model state")) {
514
- clear("model");
515
- clear("modelProvider");
516
- clear("contextTokens");
517
- clear("systemPromptReport");
518
- clear("fallbackNoticeSelectedModel");
519
- clear("fallbackNoticeActiveModel");
520
- clear("fallbackNoticeReason");
521
- }
522
- if (params.repair.reasons.includes("pinned runtime")) for (const key of params.repair.pinnedRuntimeKeys) clear(key);
523
- if (params.repair.reasons.includes("CLI session binding")) {
524
- changed = clearRecordKeys(params.entry, "cliSessionBindings", params.repair.cliSessionKeys) || changed;
525
- changed = clearRecordKeys(params.entry, "cliSessionIds", params.repair.cliSessionKeys) || changed;
526
- }
527
- if (params.repair.reasons.includes("auto auth profile override")) {
528
- clear("authProfileOverride");
529
- clear("authProfileOverrideSource");
530
- clear("authProfileOverrideCompactionCount");
531
- }
532
- if (changed) params.entry.updatedAt = params.now;
533
- return changed;
534
- }
535
- function groupRepairsByOwner(repairs) {
536
- const grouped = /* @__PURE__ */ new Map();
537
- for (const repair of repairs) {
538
- const key = repair.ownerLabel;
539
- grouped.set(key, [...grouped.get(key) ?? [], repair]);
540
- }
541
- return grouped;
542
- }
543
- async function runPluginSessionStateDoctorRepairs(params) {
544
- if (!storeMayContainPluginSessionRouteState(params.store)) return;
545
- const owners = resolvePluginDoctorSessionRouteStateOwners({
546
- cfg: params.cfg,
547
- env: params.env
548
- });
549
- if (owners.length === 0) return;
550
- const routes = Object.fromEntries(Object.keys(params.store).map((sessionKey) => [sessionKey, resolveConfiguredDoctorSessionStateRoute({
551
- cfg: params.cfg,
552
- sessionKey,
553
- env: params.env
554
- })]));
555
- const store = params.store;
556
- const scan = scanSessionRouteStateOwners({
557
- owners,
558
- store,
559
- routes
560
- });
561
- if (scan.repairs.length > 0) for (const [ownerLabel, repairs] of groupRepairsByOwner(scan.repairs)) {
562
- const staleCount = countSessionLabel(repairs.length);
563
- params.warnings.push([
564
- `- Found stale ${ownerLabel} session routing state in ${staleCount} outside the current configured model/runtime route.`,
565
- " This can keep later message-channel runs pinned to an old runtime/provider after defaults move elsewhere.",
566
- ` Examples: ${repairs.slice(0, 3).map(repairExample).join(", ")}`
567
- ].join("\n"));
568
- if (await params.prompter.confirmRuntimeRepair({
569
- message: `Clear stale ${ownerLabel} session routing state for ${staleCount}?`,
570
- initialValue: true
571
- })) {
572
- let repaired = 0;
573
- const repairedAt = Date.now();
574
- const repairsByKey = new Map(repairs.map((repair) => [repair.key, repair]));
575
- await updateSessionStore(params.absoluteStorePath, (currentStore) => {
576
- const currentMutableStore = currentStore;
577
- for (const [key, repair] of repairsByKey) {
578
- const current = currentMutableStore[key];
579
- if (current && applySessionRouteStateRepair({
580
- entry: current,
581
- repair,
582
- now: repairedAt
583
- })) repaired += 1;
584
- }
585
- });
586
- if (repaired > 0) params.changes.push(`- Cleared stale ${ownerLabel} session routing state for ${countSessionLabel(repaired)}.`);
587
- }
588
- }
589
- if (scan.manualReview.length > 0) {
590
- const grouped = /* @__PURE__ */ new Map();
591
- for (const hit of scan.manualReview) grouped.set(hit.ownerLabel, [...grouped.get(hit.ownerLabel) ?? [], hit]);
592
- for (const [ownerLabel, hits] of grouped) params.warnings.push([
593
- `- Found explicit ${ownerLabel} model overrides in ${countSessionLabel(hits.length)} outside the current configured route.`,
594
- " Doctor leaves explicit or legacy user selections untouched; switch them with /model or reset the session if that provider is no longer intended.",
595
- ` Examples: ${hits.slice(0, 3).map((hit) => hit.message).join(", ")}`
596
- ].join("\n"));
597
- }
598
- }
599
- //#endregion
600
- //#region src/commands/doctor-state-integrity.ts
601
- function countLabel(count, singular, plural = `${singular}s`) {
602
- return `${count} ${count === 1 ? singular : plural}`;
603
- }
604
- function formatFilePreview(paths, limit = 3) {
605
- const names = paths.slice(0, limit).map((filePath) => path.basename(filePath));
606
- const remaining = paths.length - names.length;
607
- if (remaining > 0) return `${names.join(", ")}, and ${remaining} more`;
608
- return names.join(", ");
609
- }
610
- function existsDir(dir) {
611
- try {
612
- return fs.existsSync(dir) && fs.statSync(dir).isDirectory();
613
- } catch {
614
- return false;
615
- }
616
- }
617
- function existsFile(filePath) {
618
- try {
619
- return fs.existsSync(filePath) && fs.statSync(filePath).isFile();
620
- } catch {
621
- return false;
622
- }
623
- }
624
- function tryResolveNativeRealPath(targetPath) {
625
- try {
626
- return fs.realpathSync.native(targetPath);
627
- } catch {
628
- return null;
629
- }
630
- }
631
- function resolveComparableTranscriptPath(filePath) {
632
- return tryResolveNativeRealPath(filePath) ?? path.resolve(filePath);
633
- }
634
- function areComparablePathsEqual(leftPath, rightPath) {
635
- const leftRealPath = tryResolveNativeRealPath(leftPath);
636
- const rightRealPath = tryResolveNativeRealPath(rightPath);
637
- return leftRealPath !== null && leftRealPath === rightRealPath;
638
- }
639
- function isReachableConfiguredAgentDir(params) {
640
- if (params.dirName === params.agentId) return true;
641
- const rawDir = path.join(params.agentsRoot, params.dirName, "agent");
642
- const normalizedDir = path.join(params.agentsRoot, params.agentId, "agent");
643
- const rawRealPath = tryResolveNativeRealPath(rawDir);
644
- const normalizedRealPath = tryResolveNativeRealPath(normalizedDir);
645
- return rawRealPath !== null && rawRealPath === normalizedRealPath;
646
- }
647
- function formatOrphanAgentDirLabel(entry) {
648
- return entry.dirName === entry.agentId ? entry.agentId : `${entry.dirName} (id ${entry.agentId})`;
649
- }
650
- function formatOrphanAgentDirPreview(entries, limit = 3) {
651
- const labels = entries.slice(0, limit).map(formatOrphanAgentDirLabel);
652
- const remaining = entries.length - labels.length;
653
- if (remaining > 0) return `${labels.join(", ")}, and ${remaining} more`;
654
- return labels.join(", ");
655
- }
656
- function listOrphanAgentDirs(cfg, stateDir) {
657
- const configuredIds = /* @__PURE__ */ new Set();
658
- configuredIds.add(normalizeAgentId(resolveDefaultAgentId(cfg)));
659
- for (const entry of listAgentEntries(cfg)) configuredIds.add(normalizeAgentId(entry.id));
660
- const agentsRoot = path.join(stateDir, "agents");
661
- const liveCompatibilityAgentDir = resolveDaoCoreAgentDir();
662
- try {
663
- return fs.readdirSync(agentsRoot, { withFileTypes: true }).filter((entry) => entry.isDirectory()).map((entry) => ({
664
- dirName: entry.name,
665
- agentId: normalizeAgentId(entry.name)
666
- })).filter(({ dirName, agentId }) => {
667
- const nestedAgentDir = path.join(agentsRoot, dirName, "agent");
668
- if (!existsDir(nestedAgentDir)) return false;
669
- if (areComparablePathsEqual(nestedAgentDir, liveCompatibilityAgentDir)) return false;
670
- if (!configuredIds.has(agentId)) return true;
671
- return !isReachableConfiguredAgentDir({
672
- agentsRoot,
673
- dirName,
674
- agentId
675
- });
676
- }).toSorted((left, right) => left.agentId.localeCompare(right.agentId) || left.dirName.localeCompare(right.dirName));
677
- } catch {
678
- return [];
679
- }
680
- }
681
- function canWriteDir(dir) {
682
- try {
683
- fs.accessSync(dir, fs.constants.W_OK);
684
- return true;
685
- } catch {
686
- return false;
687
- }
688
- }
689
- function ensureDir(dir) {
690
- try {
691
- fs.mkdirSync(dir, { recursive: true });
692
- return { ok: true };
693
- } catch (err) {
694
- return {
695
- ok: false,
696
- error: String(err)
697
- };
698
- }
699
- }
700
- function dirPermissionHint(dir) {
701
- const uid = typeof process.getuid === "function" ? process.getuid() : null;
702
- const gid = typeof process.getgid === "function" ? process.getgid() : null;
703
- try {
704
- const stat = fs.statSync(dir);
705
- if (uid !== null && stat.uid !== uid) return `Owner mismatch (uid ${stat.uid}). Run: sudo chown -R $USER "${dir}"`;
706
- if (gid !== null && stat.gid !== gid) return `Group mismatch (gid ${stat.gid}). If access fails, run: sudo chown -R $USER "${dir}"`;
707
- } catch {
708
- return null;
709
- }
710
- return null;
711
- }
712
- function addUserRwx(mode) {
713
- return mode & 511 | 448;
714
- }
715
- function countJsonlLines(filePath) {
716
- try {
717
- const raw = fs.readFileSync(filePath, "utf-8");
718
- if (!raw) return 0;
719
- let count = 0;
720
- for (let i = 0; i < raw.length; i += 1) if (raw[i] === "\n") count += 1;
721
- if (!raw.endsWith("\n")) count += 1;
722
- return count;
723
- } catch {
724
- return 0;
725
- }
726
- }
727
- function findOtherStateDirs(stateDir) {
728
- const resolvedState = path.resolve(stateDir);
729
- const roots = process.platform === "darwin" ? ["/Users"] : process.platform === "linux" ? ["/home"] : [];
730
- const found = [];
731
- for (const root of roots) {
732
- let entries = [];
733
- try {
734
- entries = fs.readdirSync(root, { withFileTypes: true });
735
- } catch {
736
- continue;
737
- }
738
- for (const entry of entries) {
739
- if (!entry.isDirectory()) continue;
740
- if (entry.name.startsWith(".")) continue;
741
- const candidates = [".daocore"].map((dir) => path.resolve(root, entry.name, dir));
742
- for (const candidate of candidates) {
743
- if (candidate === resolvedState) continue;
744
- if (existsDir(candidate)) found.push(candidate);
745
- }
746
- }
747
- }
748
- return found;
749
- }
750
- function isPathUnderRoot(targetPath, rootPath) {
751
- const normalizedTarget = path.resolve(targetPath);
752
- const normalizedRoot = path.resolve(rootPath);
753
- const rootToken = path.parse(normalizedRoot).root;
754
- if (normalizedRoot === rootToken) return normalizedTarget.startsWith(rootToken);
755
- return normalizedTarget === normalizedRoot || normalizedTarget.startsWith(`${normalizedRoot}${path.sep}`);
756
- }
757
- function tryResolveRealPath(targetPath) {
758
- try {
759
- return fs.realpathSync(targetPath);
760
- } catch {
761
- return null;
762
- }
763
- }
764
- function decodeMountInfoPath(value) {
765
- return value.replace(/\\([0-7]{3})/g, (_, octal) => String.fromCharCode(Number.parseInt(octal, 8)));
766
- }
767
- function escapeControlCharsForTerminal(value) {
768
- let escaped = "";
769
- for (const char of value) {
770
- if (char === "\x1B") {
771
- escaped += "\\x1b";
772
- continue;
773
- }
774
- if (char === "\r") {
775
- escaped += "\\r";
776
- continue;
777
- }
778
- if (char === "\n") {
779
- escaped += "\\n";
780
- continue;
781
- }
782
- if (char === " ") {
783
- escaped += "\\t";
784
- continue;
785
- }
786
- const code = char.charCodeAt(0);
787
- if (code >= 0 && code <= 8 || code === 11 || code === 12 || code >= 14 && code <= 31) {
788
- escaped += `\\x${code.toString(16).padStart(2, "0")}`;
789
- continue;
790
- }
791
- if (code === 127) {
792
- escaped += "\\x7f";
793
- continue;
794
- }
795
- escaped += char;
796
- }
797
- return escaped;
798
- }
799
- function parseLinuxMountInfo(rawMountInfo) {
800
- const entries = [];
801
- for (const line of rawMountInfo.split("\n")) {
802
- const trimmed = line.trim();
803
- if (!trimmed) continue;
804
- const separatorIndex = trimmed.indexOf(" - ");
805
- if (separatorIndex === -1) continue;
806
- const left = trimmed.slice(0, separatorIndex);
807
- const right = trimmed.slice(separatorIndex + 3);
808
- const leftFields = left.split(" ");
809
- const rightFields = right.split(" ");
810
- if (leftFields.length < 5 || rightFields.length < 2) continue;
811
- entries.push({
812
- mountPoint: decodeMountInfoPath(leftFields[4]),
813
- fsType: rightFields[0],
814
- source: decodeMountInfoPath(rightFields[1])
815
- });
816
- }
817
- return entries;
818
- }
819
- function isPathUnderRootWithPathOps(targetPath, rootPath, pathOps) {
820
- const normalizedTarget = pathOps.resolve(targetPath);
821
- const normalizedRoot = pathOps.resolve(rootPath);
822
- const rootToken = pathOps.parse(normalizedRoot).root;
823
- if (normalizedRoot === rootToken) return normalizedTarget.startsWith(rootToken);
824
- return normalizedTarget === normalizedRoot || normalizedTarget.startsWith(`${normalizedRoot}${pathOps.sep}`);
825
- }
826
- function findLinuxMountInfoEntryForPath(targetPath, entries, pathOps) {
827
- const normalizedTarget = pathOps.resolve(targetPath);
828
- let bestMatch = null;
829
- for (const entry of entries) {
830
- if (!isPathUnderRootWithPathOps(normalizedTarget, entry.mountPoint, pathOps)) continue;
831
- if (!bestMatch || pathOps.resolve(entry.mountPoint).length > pathOps.resolve(bestMatch.mountPoint).length) bestMatch = entry;
832
- }
833
- return bestMatch;
834
- }
835
- function isMmcDevicePath(devicePath, pathOps) {
836
- const name = pathOps.basename(devicePath);
837
- return /^mmcblk\d+(?:p\d+)?$/.test(name);
838
- }
839
- function tryReadLinuxMountInfo() {
840
- try {
841
- return fs.readFileSync("/proc/self/mountinfo", "utf8");
842
- } catch {
843
- return null;
844
- }
845
- }
846
- function detectLinuxSdBackedStateDir(stateDir, deps) {
847
- if ((deps?.platform ?? process.platform) !== "linux") return null;
848
- const linuxPath = path.posix;
849
- const resolvedStatePath = (deps?.resolveRealPath ?? tryResolveRealPath)(stateDir) ?? linuxPath.resolve(stateDir);
850
- const mountInfo = deps?.mountInfo ?? tryReadLinuxMountInfo();
851
- if (!mountInfo) return null;
852
- const mountEntry = findLinuxMountInfoEntryForPath(resolvedStatePath, parseLinuxMountInfo(mountInfo), linuxPath);
853
- if (!mountEntry) return null;
854
- const sourceCandidates = [mountEntry.source];
855
- if (mountEntry.source.startsWith("/dev/")) {
856
- const resolvedDevicePath = (deps?.resolveDeviceRealPath ?? tryResolveRealPath)(mountEntry.source);
857
- if (resolvedDevicePath) sourceCandidates.push(linuxPath.resolve(resolvedDevicePath));
858
- }
859
- if (!sourceCandidates.some((candidate) => isMmcDevicePath(candidate, linuxPath))) return null;
860
- return {
861
- path: linuxPath.resolve(resolvedStatePath),
862
- mountPoint: linuxPath.resolve(mountEntry.mountPoint),
863
- fsType: mountEntry.fsType,
864
- source: mountEntry.source
865
- };
866
- }
867
- function formatLinuxSdBackedStateDirWarning(displayStateDir, linuxSdBackedStateDir) {
868
- const displayMountPoint = linuxSdBackedStateDir.mountPoint === "/" ? "/" : shortenHomePath(linuxSdBackedStateDir.mountPoint);
869
- return [
870
- `- State directory appears to be on SD/eMMC storage (${displayStateDir}; device ${escapeControlCharsForTerminal(linuxSdBackedStateDir.source)}, fs ${escapeControlCharsForTerminal(linuxSdBackedStateDir.fsType)}, mount ${escapeControlCharsForTerminal(displayMountPoint)}).`,
871
- "- SD/eMMC media can be slower for random I/O and wear faster under session/log churn.",
872
- "- For better startup and state durability, prefer SSD/NVMe (or USB SSD on Raspberry Pi) for DAOCORE_STATE_DIR."
873
- ].join("\n");
874
- }
875
- function detectMacCloudSyncedStateDir(stateDir, deps) {
876
- if ((deps?.platform ?? process.platform) !== "darwin") return null;
877
- const homedir = deps?.homedir ?? os.homedir();
878
- const roots = [{
879
- storage: "iCloud Drive",
880
- root: path.join(homedir, "Library", "Mobile Documents", "com~apple~CloudDocs")
881
- }, {
882
- storage: "CloudStorage provider",
883
- root: path.join(homedir, "Library", "CloudStorage")
884
- }];
885
- const realPath = (deps?.resolveRealPath ?? tryResolveRealPath)(stateDir);
886
- const candidates = realPath ? [path.resolve(realPath)] : [path.resolve(stateDir)];
887
- for (const candidate of candidates) for (const { storage, root } of roots) if (isPathUnderRoot(candidate, root)) return {
888
- path: candidate,
889
- storage
890
- };
891
- return null;
892
- }
893
- function isPairingPolicy(value) {
894
- return normalizeOptionalLowercaseString(value) === "pairing";
895
- }
896
- function hasPairingPolicy(value) {
897
- const record = asNullableObjectRecord(value);
898
- if (!record) return false;
899
- if (isPairingPolicy(record.dmPolicy)) return true;
900
- const dm = asNullableObjectRecord(record.dm);
901
- if (dm && isPairingPolicy(dm.policy)) return true;
902
- const accounts = asNullableObjectRecord(record.accounts);
903
- if (!accounts) return false;
904
- for (const accountCfg of Object.values(accounts)) if (hasPairingPolicy(accountCfg)) return true;
905
- return false;
906
- }
907
- function isSlashRoutingSessionKey(sessionKey) {
908
- const raw = normalizeOptionalLowercaseString(sessionKey);
909
- if (!raw) return false;
910
- const scoped = parseAgentSessionKey(raw)?.rest ?? raw;
911
- return /^[^:]+:slash:[^:]+(?:$|:)/.test(scoped);
912
- }
913
- function shouldRequireOAuthDir(cfg, env) {
914
- if (env.DAOCORE_OAUTH_DIR?.trim()) return true;
915
- const channels = asNullableObjectRecord(cfg.channels);
916
- if (!channels) return false;
917
- const withPersistedAuth = new Set(listConfiguredChannelIdsForReadOnlyScope({
918
- config: cfg,
919
- env
920
- }));
921
- const withoutPersistedAuth = new Set(listConfiguredChannelIdsForReadOnlyScope({
922
- config: cfg,
923
- env,
924
- includePersistedAuthState: false
925
- }));
926
- if ([...withPersistedAuth].some((channelId) => !withoutPersistedAuth.has(channelId))) return true;
927
- for (const [channelId, channelCfg] of Object.entries(channels)) {
928
- if (channelId === "defaults" || channelId === "modelByChannel") continue;
929
- if (hasPairingPolicy(channelCfg)) return true;
930
- }
931
- return false;
932
- }
933
- function shouldSuppressOrphanTranscriptWarning(cfg, agentId) {
934
- const backendConfig = resolveMemoryBackendConfig({
935
- cfg,
936
- agentId
937
- });
938
- return backendConfig?.backend === "qmd" && backendConfig.qmd?.sessions.enabled === true;
939
- }
940
- async function noteStateIntegrity(cfg, prompter, configPath) {
941
- const warnings = [];
942
- const changes = [];
943
- const noteFn = prompter.note ?? note;
944
- const env = process.env;
945
- const homedir = () => resolveRequiredHomeDir(env, os.homedir);
946
- const stateDir = resolveStateDir(env, homedir);
947
- const defaultStateDir = path.join(homedir(), ".daocore");
948
- const oauthDir = resolveOAuthDir(env, stateDir);
949
- const agentId = resolveDefaultAgentId(cfg);
950
- const sessionsDir = resolveSessionTranscriptsDirForAgent(agentId, env, homedir);
951
- const storePath = resolveStorePath(cfg.session?.store, { agentId });
952
- const storeDir = path.dirname(storePath);
953
- const absoluteStorePath = path.resolve(storePath);
954
- const displayStateDir = shortenHomePath(stateDir);
955
- const displayOauthDir = shortenHomePath(oauthDir);
956
- const displaySessionsDir = shortenHomePath(sessionsDir);
957
- const displayStoreDir = shortenHomePath(storeDir);
958
- const displayConfigPath = configPath ? shortenHomePath(configPath) : void 0;
959
- const requireOAuthDir = shouldRequireOAuthDir(cfg, env);
960
- const cloudSyncedStateDir = detectMacCloudSyncedStateDir(stateDir);
961
- const linuxSdBackedStateDir = detectLinuxSdBackedStateDir(stateDir);
962
- const suppressOrphanTranscriptWarning = shouldSuppressOrphanTranscriptWarning(cfg, agentId);
963
- if (cloudSyncedStateDir) warnings.push([
964
- `- State directory is under macOS cloud-synced storage (${displayStateDir}; ${cloudSyncedStateDir.storage}).`,
965
- "- This can cause slow I/O and sync/lock races for sessions and credentials.",
966
- "- Prefer a local non-synced state dir (for example: ~/.daocore).",
967
- ` Set locally: DAOCORE_STATE_DIR=~/.daocore ${formatCliCommand("daocore doctor")}`
968
- ].join("\n"));
969
- if (linuxSdBackedStateDir) warnings.push(formatLinuxSdBackedStateDirWarning(displayStateDir, linuxSdBackedStateDir));
970
- let stateDirExists = existsDir(stateDir);
971
- if (!stateDirExists) {
972
- warnings.push(`- CRITICAL: state directory missing (${displayStateDir}). Sessions, credentials, logs, and config are stored there.`);
973
- if (cfg.gateway?.mode === "remote") warnings.push("- Gateway is in remote mode; run doctor on the remote host where the gateway runs.");
974
- if (await prompter.confirmRuntimeRepair({
975
- message: `Create ${displayStateDir} now?`,
976
- initialValue: false
977
- })) {
978
- const created = ensureDir(stateDir);
979
- if (created.ok) {
980
- changes.push(`- Created ${displayStateDir}`);
981
- stateDirExists = true;
982
- } else warnings.push(`- Failed to create ${displayStateDir}: ${created.error}`);
983
- }
984
- }
985
- if (stateDirExists && !canWriteDir(stateDir)) {
986
- warnings.push(`- State directory not writable (${displayStateDir}).`);
987
- const hint = dirPermissionHint(stateDir);
988
- if (hint) warnings.push(` ${hint}`);
989
- if (await prompter.confirmRuntimeRepair({
990
- message: `Repair permissions on ${displayStateDir}?`,
991
- initialValue: true
992
- })) try {
993
- const target = addUserRwx(fs.statSync(stateDir).mode);
994
- fs.chmodSync(stateDir, target);
995
- changes.push(`- Repaired permissions on ${displayStateDir}`);
996
- } catch (err) {
997
- warnings.push(`- Failed to repair ${displayStateDir}: ${String(err)}`);
998
- }
999
- }
1000
- if (stateDirExists && process.platform !== "win32") try {
1001
- const dirLstat = fs.lstatSync(stateDir);
1002
- const isDirSymlink = dirLstat.isSymbolicLink();
1003
- const stat = isDirSymlink ? fs.statSync(stateDir) : dirLstat;
1004
- if (!(isDirSymlink ? fs.realpathSync(stateDir) : stateDir).startsWith("/nix/store/") && (stat.mode & 63) !== 0) {
1005
- warnings.push(`- State directory permissions are too open (${displayStateDir}). Recommend chmod 700.`);
1006
- if (await prompter.confirmRuntimeRepair({
1007
- message: `Tighten permissions on ${displayStateDir} to 700?`,
1008
- initialValue: true
1009
- })) {
1010
- fs.chmodSync(stateDir, 448);
1011
- changes.push(`- Tightened permissions on ${displayStateDir} to 700`);
1012
- }
1013
- }
1014
- } catch (err) {
1015
- warnings.push(`- Failed to read ${displayStateDir} permissions: ${String(err)}`);
1016
- }
1017
- if (configPath && existsFile(configPath) && process.platform !== "win32") try {
1018
- const configLstat = fs.lstatSync(configPath);
1019
- const isSymlink = configLstat.isSymbolicLink();
1020
- const stat = isSymlink ? fs.statSync(configPath) : configLstat;
1021
- if (!(isSymlink ? fs.realpathSync(configPath) : configPath).startsWith("/nix/store/") && (stat.mode & 63) !== 0) {
1022
- warnings.push(`- Config file is group/world readable (${displayConfigPath ?? configPath}). Recommend chmod 600.`);
1023
- if (await prompter.confirmRuntimeRepair({
1024
- message: `Tighten permissions on ${displayConfigPath ?? configPath} to 600?`,
1025
- initialValue: true
1026
- })) {
1027
- fs.chmodSync(configPath, 384);
1028
- changes.push(`- Tightened permissions on ${displayConfigPath ?? configPath} to 600`);
1029
- }
1030
- }
1031
- } catch (err) {
1032
- warnings.push(`- Failed to read config permissions (${displayConfigPath ?? configPath}): ${String(err)}`);
1033
- }
1034
- if (stateDirExists) {
1035
- const dirCandidates = /* @__PURE__ */ new Map();
1036
- dirCandidates.set(sessionsDir, "Sessions dir");
1037
- dirCandidates.set(storeDir, "Session store dir");
1038
- if (requireOAuthDir) dirCandidates.set(oauthDir, "OAuth dir");
1039
- else if (!existsDir(oauthDir)) warnings.push(`- OAuth dir not present (${displayOauthDir}). Skipping create because no WhatsApp/pairing channel config is active.`);
1040
- const displayDirFor = (dir) => {
1041
- if (dir === sessionsDir) return displaySessionsDir;
1042
- if (dir === storeDir) return displayStoreDir;
1043
- if (dir === oauthDir) return displayOauthDir;
1044
- return shortenHomePath(dir);
1045
- };
1046
- for (const [dir, label] of dirCandidates) {
1047
- const displayDir = displayDirFor(dir);
1048
- if (!existsDir(dir)) {
1049
- warnings.push(`- CRITICAL: ${label} missing (${displayDir}).`);
1050
- if (await prompter.confirmRuntimeRepair({
1051
- message: `Create ${label} at ${displayDir}?`,
1052
- initialValue: true
1053
- })) {
1054
- const created = ensureDir(dir);
1055
- if (created.ok) changes.push(`- Created ${label}: ${displayDir}`);
1056
- else warnings.push(`- Failed to create ${displayDir}: ${created.error}`);
1057
- }
1058
- continue;
1059
- }
1060
- if (!canWriteDir(dir)) {
1061
- warnings.push(`- ${label} not writable (${displayDir}).`);
1062
- const hint = dirPermissionHint(dir);
1063
- if (hint) warnings.push(` ${hint}`);
1064
- if (await prompter.confirmRuntimeRepair({
1065
- message: `Repair permissions on ${label}?`,
1066
- initialValue: true
1067
- })) try {
1068
- const target = addUserRwx(fs.statSync(dir).mode);
1069
- fs.chmodSync(dir, target);
1070
- changes.push(`- Repaired permissions on ${label}: ${displayDir}`);
1071
- } catch (err) {
1072
- warnings.push(`- Failed to repair ${displayDir}: ${String(err)}`);
1073
- }
1074
- }
1075
- }
1076
- }
1077
- const extraStateDirs = /* @__PURE__ */ new Set();
1078
- if (path.resolve(stateDir) !== path.resolve(defaultStateDir)) {
1079
- if (existsDir(defaultStateDir)) extraStateDirs.add(defaultStateDir);
1080
- }
1081
- for (const other of findOtherStateDirs(stateDir)) extraStateDirs.add(other);
1082
- if (extraStateDirs.size > 0) warnings.push([
1083
- "- Multiple state directories detected. This can split session history.",
1084
- ...Array.from(extraStateDirs).map((dir) => ` - ${shortenHomePath(dir)}`),
1085
- ` Active state dir: ${displayStateDir}`
1086
- ].join("\n"));
1087
- const orphanAgentDirs = listOrphanAgentDirs(cfg, stateDir);
1088
- if (orphanAgentDirs.length > 0) warnings.push([
1089
- `- Found ${countLabel(orphanAgentDirs.length, "agent directory", "agent directories")} on disk without a matching agents.list entry.`,
1090
- " These agents can still have sessions/auth state on disk, but config-driven routing, identity, and model selection will ignore them.",
1091
- ` Examples: ${formatOrphanAgentDirPreview(orphanAgentDirs)}`,
1092
- ` Restore the missing agents.list entries or remove stale dirs after confirming they are no longer needed: ${shortenHomePath(path.join(stateDir, "agents"))}`
1093
- ].join("\n"));
1094
- const store = loadSessionStore(storePath);
1095
- const sessionPathOpts = resolveSessionFilePathOptions({
1096
- agentId,
1097
- storePath
1098
- });
1099
- const entries = Object.entries(store).filter(([, entry]) => entry && typeof entry === "object");
1100
- if (entries.length > 0) {
1101
- const recentTranscriptCandidates = entries.slice().toSorted((a, b) => {
1102
- const aUpdated = typeof a[1].updatedAt === "number" ? a[1].updatedAt : 0;
1103
- return (typeof b[1].updatedAt === "number" ? b[1].updatedAt : 0) - aUpdated;
1104
- }).slice(0, 5).filter(([key]) => !isSlashRoutingSessionKey(key));
1105
- const missing = recentTranscriptCandidates.filter(([, entry]) => {
1106
- const sessionId = entry.sessionId;
1107
- if (!sessionId) return false;
1108
- return !existsFile(resolveSessionFilePath(sessionId, entry, sessionPathOpts));
1109
- });
1110
- if (missing.length > 0) warnings.push([
1111
- `- ${missing.length}/${recentTranscriptCandidates.length} recent sessions are missing transcripts.`,
1112
- ` Verify sessions in store: ${formatCliCommand(`daocore sessions --store "${absoluteStorePath}"`)}`,
1113
- ` Preview cleanup impact: ${formatCliCommand(`daocore sessions cleanup --store "${absoluteStorePath}" --dry-run`)}`,
1114
- ` Prune missing entries: ${formatCliCommand(`daocore sessions cleanup --store "${absoluteStorePath}" --enforce --fix-missing`)}`
1115
- ].join("\n"));
1116
- const wedgedSubagentSessions = entries.filter(([, entry]) => isSubagentRecoveryWedgedEntry(entry));
1117
- if (wedgedSubagentSessions.length > 0) {
1118
- const wedgedCount = countLabel(wedgedSubagentSessions.length, "wedged subagent session");
1119
- warnings.push([
1120
- `- Found ${wedgedCount} with automatic restart recovery tombstoned.`,
1121
- " DaoCore will not auto-resume these child sessions on restart; reconcile their task records instead.",
1122
- ` Examples: ${wedgedSubagentSessions.slice(0, 3).map(([key]) => key).join(", ")}`,
1123
- ` Fix: ${formatCliCommand("daocore tasks maintenance --apply")}`
1124
- ].join("\n"));
1125
- if (await prompter.confirmRuntimeRepair({
1126
- message: `Clear stale aborted recovery flags for ${wedgedCount}?`,
1127
- initialValue: true
1128
- })) {
1129
- let repaired = 0;
1130
- const repairedAt = Date.now();
1131
- await updateSessionStore(absoluteStorePath, (currentStore) => {
1132
- for (const [key] of wedgedSubagentSessions) {
1133
- const current = currentStore[key];
1134
- if (current && clearWedgedSubagentRecoveryAbort(current, repairedAt)) {
1135
- repaired += 1;
1136
- currentStore[key] = current;
1137
- }
1138
- }
1139
- });
1140
- if (repaired > 0) changes.push(`- Cleared aborted restart-recovery flags for ${countLabel(repaired, "wedged subagent session")}.`);
1141
- }
1142
- const wedgedReasons = wedgedSubagentSessions.map(([, entry]) => formatSubagentRecoveryWedgedReason(entry)).filter((reason, index, all) => all.indexOf(reason) === index).slice(0, 2);
1143
- if (wedgedReasons.length > 0) warnings.push(wedgedReasons.map((reason) => ` Reason: ${reason}`).join("\n"));
1144
- }
1145
- await runPluginSessionStateDoctorRepairs({
1146
- cfg,
1147
- store,
1148
- absoluteStorePath,
1149
- prompter,
1150
- env,
1151
- warnings,
1152
- changes
1153
- });
1154
- await repairHeartbeatPoisonedMainSession({
1155
- cfg,
1156
- store,
1157
- absoluteStorePath,
1158
- stateDir,
1159
- sessionPathOpts,
1160
- prompter,
1161
- warnings,
1162
- changes
1163
- });
1164
- for (const warning of describeHeartbeatSessionTargetIssues(cfg)) warnings.push(warning);
1165
- const mainEntry = store[resolveMainSessionKey(cfg)];
1166
- if (mainEntry?.sessionId) {
1167
- const transcriptPath = resolveSessionFilePath(mainEntry.sessionId, mainEntry, sessionPathOpts);
1168
- if (!existsFile(transcriptPath)) warnings.push(`- Main session transcript missing (${shortenHomePath(transcriptPath)}). History will appear to reset.`);
1169
- else {
1170
- const lineCount = countJsonlLines(transcriptPath);
1171
- if (lineCount <= 1) warnings.push(`- Main session transcript has only ${lineCount} line. Session history may not be appending.`);
1172
- }
1173
- }
1174
- }
1175
- if (existsDir(sessionsDir)) {
1176
- const referencedTranscriptPaths = /* @__PURE__ */ new Set();
1177
- for (const [, entry] of entries) {
1178
- if (!entry?.sessionId) continue;
1179
- try {
1180
- referencedTranscriptPaths.add(resolveComparableTranscriptPath(resolveSessionFilePath(entry.sessionId, entry, sessionPathOpts)));
1181
- } catch {}
1182
- }
1183
- const orphanTranscriptPaths = fs.readdirSync(sessionsDir, { withFileTypes: true }).filter((entry) => entry.isFile() && isPrimarySessionTranscriptFileName(entry.name)).map((entry) => path.join(sessionsDir, entry.name)).filter((filePath) => !referencedTranscriptPaths.has(resolveComparableTranscriptPath(filePath)));
1184
- if (orphanTranscriptPaths.length > 0 && !suppressOrphanTranscriptWarning) {
1185
- const orphanCount = countLabel(orphanTranscriptPaths.length, "orphan transcript file");
1186
- const orphanPreview = formatFilePreview(orphanTranscriptPaths);
1187
- warnings.push([
1188
- `- Found ${orphanCount} in ${displaySessionsDir}.`,
1189
- " These .jsonl files are no longer referenced by sessions.json, so they are not part of any active session history.",
1190
- " Doctor can archive them safely by renaming each file to *.deleted.<timestamp>.",
1191
- ` Examples: ${orphanPreview}`
1192
- ].join("\n"));
1193
- if (await prompter.confirmRuntimeRepair({
1194
- message: `Archive ${orphanCount} in ${displaySessionsDir}? This only renames them to *.deleted.<timestamp>.`,
1195
- initialValue: false,
1196
- requiresInteractiveConfirmation: true
1197
- })) {
1198
- let archived = 0;
1199
- const archivedAt = formatSessionArchiveTimestamp();
1200
- for (const orphanPath of orphanTranscriptPaths) {
1201
- const archivedPath = `${orphanPath}.deleted.${archivedAt}`;
1202
- try {
1203
- fs.renameSync(orphanPath, archivedPath);
1204
- archived += 1;
1205
- } catch (err) {
1206
- warnings.push(`- Failed to archive orphan transcript ${shortenHomePath(orphanPath)}: ${String(err)}`);
1207
- }
1208
- }
1209
- if (archived > 0) changes.push(`- Archived ${countLabel(archived, "orphan transcript file")} in ${displaySessionsDir} as .deleted timestamped backups.`);
1210
- }
1211
- }
1212
- }
1213
- if (warnings.length > 0) noteFn(warnings.join("\n"), "State integrity");
1214
- if (changes.length > 0) noteFn(changes.join("\n"), "Doctor changes");
1215
- }
1216
- function collectWorkspaceBackupTip(workspaceDir) {
1217
- if (!existsDir(workspaceDir)) return null;
1218
- const gitMarker = path.join(workspaceDir, ".git");
1219
- if (fs.existsSync(gitMarker)) return null;
1220
- return [
1221
- "- Tip: back up the workspace in a private git repo (GitHub or GitLab).",
1222
- "- Keep ~/.daocore out of git; it contains credentials and session history.",
1223
- "- Details: /concepts/agent-workspace#git-backup-recommended"
1224
- ].join("\n");
1225
- }
1226
- function noteWorkspaceBackupTip(workspaceDir) {
1227
- const tip = collectWorkspaceBackupTip(workspaceDir);
1228
- if (tip) note(tip, "Workspace");
1229
- }
1230
- //#endregion
1231
- export { collectWorkspaceBackupTip, noteStateIntegrity, noteWorkspaceBackupTip };