@a1hvdy/cc-openclaw 0.26.4 → 0.26.6

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 (444) hide show
  1. package/dist/src/channels/adapter.js +0 -1
  2. package/dist/src/channels/telegram-mirror/askuser.js +16 -10
  3. package/dist/src/channels/telegram-mirror/burst-accumulator.js +0 -1
  4. package/dist/src/channels/telegram-mirror/callback-mapping.js +0 -1
  5. package/dist/src/channels/telegram-mirror/card-renderer.js +63 -21
  6. package/dist/src/channels/telegram-mirror/card-state.js +0 -1
  7. package/dist/src/channels/telegram-mirror/commands.js +0 -1
  8. package/dist/src/channels/telegram-mirror/compose-buffer.js +0 -1
  9. package/dist/src/channels/telegram-mirror/cost-views.js +0 -1
  10. package/dist/src/channels/telegram-mirror/failure/callback-data-overflow.js +0 -1
  11. package/dist/src/channels/telegram-mirror/failure/gateway-down.js +0 -1
  12. package/dist/src/channels/telegram-mirror/failure/in-flight-conflict.js +0 -1
  13. package/dist/src/channels/telegram-mirror/failure/index.js +0 -1
  14. package/dist/src/channels/telegram-mirror/failure/model-5xx.js +0 -1
  15. package/dist/src/channels/telegram-mirror/failure/network-blip.js +0 -1
  16. package/dist/src/channels/telegram-mirror/failure/pool-exhausted-fallback.js +0 -1
  17. package/dist/src/channels/telegram-mirror/failure/rate-limit.js +0 -1
  18. package/dist/src/channels/telegram-mirror/failure/returning-after-24h.js +0 -1
  19. package/dist/src/channels/telegram-mirror/failure/types.js +0 -1
  20. package/dist/src/channels/telegram-mirror/inbound-handler.js +0 -1
  21. package/dist/src/channels/telegram-mirror/index.js +0 -1
  22. package/dist/src/channels/telegram-mirror/plan-attachment.js +0 -1
  23. package/dist/src/channels/telegram-mirror/quota-reader.js +0 -1
  24. package/dist/src/channels/telegram-mirror/sessions-keyboard.js +0 -1
  25. package/dist/src/channels/telegram-mirror/soak-log.js +0 -1
  26. package/dist/src/channels/telegram-mirror/state-machine.js +21 -2
  27. package/dist/src/channels/telegram-mirror/status-line.js +0 -1
  28. package/dist/src/channels/telegram-mirror/sync-commands.js +0 -1
  29. package/dist/src/channels/telegram-mirror/threshold-watcher.js +0 -1
  30. package/dist/src/channels/telegram-mirror/turn-bridge.js +21 -2
  31. package/dist/src/cli/checks/bridge-wiring.js +0 -1
  32. package/dist/src/cli/checks/config-schema.js +0 -1
  33. package/dist/src/cli/checks/critical-openclaw-json-keys.js +0 -1
  34. package/dist/src/cli/checks/install-path.js +0 -1
  35. package/dist/src/cli/checks/patch-scaffold.js +0 -1
  36. package/dist/src/cli/doctor.js +0 -1
  37. package/dist/src/cli/index.js +0 -1
  38. package/dist/src/cli/migrate.js +0 -1
  39. package/dist/src/command-router/cc-handler.js +0 -1
  40. package/dist/src/command-router/index.js +0 -1
  41. package/dist/src/command-router/launch-policy.js +0 -1
  42. package/dist/src/command-router/resume-policy.js +0 -1
  43. package/dist/src/command-router/turn-formatter.js +0 -1
  44. package/dist/src/config/drift-detector.js +0 -1
  45. package/dist/src/config/loader.js +0 -1
  46. package/dist/src/config/schema.js +0 -1
  47. package/dist/src/constants.js +0 -1
  48. package/dist/src/council/build-agent-prompt.js +0 -1
  49. package/dist/src/council/cleanup-worktrees.js +0 -1
  50. package/dist/src/council/consensus.js +0 -1
  51. package/dist/src/council/council.js +0 -1
  52. package/dist/src/council/index.js +0 -1
  53. package/dist/src/council/system-prompt.js +0 -1
  54. package/dist/src/council/write-worktree-claude-md.js +0 -1
  55. package/dist/src/engines/base-oneshot-session.js +0 -1
  56. package/dist/src/engines/heartbeat-guard.js +0 -1
  57. package/dist/src/engines/index.js +0 -1
  58. package/dist/src/engines/persistent-codex-session.js +0 -1
  59. package/dist/src/engines/persistent-cursor-session.js +0 -1
  60. package/dist/src/engines/persistent-custom-session.js +0 -1
  61. package/dist/src/engines/persistent-gemini-session.js +0 -1
  62. package/dist/src/engines/persistent-session.js +30 -1
  63. package/dist/src/engines/resolve-bin.js +0 -1
  64. package/dist/src/engines/subprocess-pool.js +0 -1
  65. package/dist/src/health/handler.js +0 -1
  66. package/dist/src/health/index.js +0 -1
  67. package/dist/src/health/metrics.js +0 -1
  68. package/dist/src/index.js +0 -1
  69. package/dist/src/lib/auto-recovery.js +0 -1
  70. package/dist/src/lib/cache-parity.js +0 -1
  71. package/dist/src/lib/circuit-breaker.js +0 -1
  72. package/dist/src/lib/config-service.js +0 -1
  73. package/dist/src/lib/config.js +0 -1
  74. package/dist/src/lib/cost-rollup.js +0 -1
  75. package/dist/src/lib/debounce.js +0 -1
  76. package/dist/src/lib/debug-tap.js +0 -1
  77. package/dist/src/lib/domain-error.js +0 -1
  78. package/dist/src/lib/drift-detector.js +0 -1
  79. package/dist/src/lib/env-overrides.js +0 -1
  80. package/dist/src/lib/error-formatter.js +0 -1
  81. package/dist/src/lib/error-renderer.js +0 -1
  82. package/dist/src/lib/heartbeat-config.js +0 -1
  83. package/dist/src/lib/heartbeat-workaround.js +0 -1
  84. package/dist/src/lib/http-agent.js +0 -1
  85. package/dist/src/lib/index.js +0 -1
  86. package/dist/src/lib/json-array.js +0 -1
  87. package/dist/src/lib/markdown-to-mdv2.js +0 -1
  88. package/dist/src/lib/markdown-v2.js +0 -1
  89. package/dist/src/lib/perf/async-compact.js +0 -1
  90. package/dist/src/lib/perf/direct-sdk.js +0 -1
  91. package/dist/src/lib/perf/haiku-route.js +0 -1
  92. package/dist/src/lib/perf/predictive-continuation.js +0 -1
  93. package/dist/src/lib/perf/read-batch.js +0 -1
  94. package/dist/src/lib/perf/skill-list-collapse.js +0 -1
  95. package/dist/src/lib/perf/speculative-bubble.js +0 -1
  96. package/dist/src/lib/perf/typing-prefetch.js +0 -1
  97. package/dist/src/lib/register-guard.js +0 -1
  98. package/dist/src/lib/req-shape-log.js +0 -1
  99. package/dist/src/lib/safe-upstream-probes.js +0 -1
  100. package/dist/src/lib/session-registry.js +0 -1
  101. package/dist/src/lib/spawn-async.js +0 -1
  102. package/dist/src/lib/stale-pid-files.js +0 -1
  103. package/dist/src/lib/status-tee-reader.js +0 -1
  104. package/dist/src/lib/sysprompt-strip.js +0 -1
  105. package/dist/src/lib/telegram-bot-api.js +0 -1
  106. package/dist/src/lib/telemetry.js +0 -1
  107. package/dist/src/lib/test-mode.js +0 -1
  108. package/dist/src/lib/trajectory.js +0 -1
  109. package/dist/src/lib/vendor-paths.js +0 -1
  110. package/dist/src/lifecycle/boot.js +0 -1
  111. package/dist/src/lifecycle/patch-manifest.js +0 -1
  112. package/dist/src/lifecycle/phase-import-upstream.js +0 -1
  113. package/dist/src/lifecycle/phase-install-patches.js +0 -1
  114. package/dist/src/lifecycle/phase-schedule-jobs.js +0 -1
  115. package/dist/src/lifecycle/phase-start-server.js +0 -1
  116. package/dist/src/lifecycle/phase-validate-config.js +0 -1
  117. package/dist/src/lifecycle/phase-validate-upstream.js +0 -1
  118. package/dist/src/lifecycle/phase-wire-handlers.js +0 -1
  119. package/dist/src/lifecycle/safe-restart.js +0 -1
  120. package/dist/src/logger.js +0 -1
  121. package/dist/src/mcp/bridge.js +0 -1
  122. package/dist/src/mcp/index.js +0 -1
  123. package/dist/src/models.js +0 -1
  124. package/dist/src/observability/event-bus.js +0 -1
  125. package/dist/src/observability/get-event-bus.js +0 -1
  126. package/dist/src/observability/observability-service.js +0 -1
  127. package/dist/src/observability/perf-telemetry.js +0 -1
  128. package/dist/src/observability/subscribers/metrics.js +0 -1
  129. package/dist/src/observability/subscribers/session-capture.js +0 -1
  130. package/dist/src/openai-compat/bridges/allowlist.js +0 -1
  131. package/dist/src/openai-compat/bridges/factory.js +0 -1
  132. package/dist/src/openai-compat/bridges/media-bridge.js +0 -1
  133. package/dist/src/openai-compat/bridges/openclaw-api-shim.js +0 -1
  134. package/dist/src/openai-compat/bridges/openclaw-native-tools.js +0 -1
  135. package/dist/src/openai-compat/bridges/openclaw-tool-registry.js +0 -1
  136. package/dist/src/openai-compat/bridges/tts-media-bridge.js +0 -1
  137. package/dist/src/openai-compat/cli-stream-parser.js +0 -1
  138. package/dist/src/openai-compat/index.js +0 -1
  139. package/dist/src/openai-compat/message-extractor.js +0 -1
  140. package/dist/src/openai-compat/mode-flags.js +0 -1
  141. package/dist/src/openai-compat/non-streaming-handler.js +4 -2
  142. package/dist/src/openai-compat/openai-chunk-types.js +0 -1
  143. package/dist/src/openai-compat/openai-compat.js +0 -1
  144. package/dist/src/openai-compat/openai-types.js +0 -1
  145. package/dist/src/openai-compat/parse-route-body.js +0 -1
  146. package/dist/src/openai-compat/prompts.js +0 -1
  147. package/dist/src/openai-compat/response-formatter.js +0 -1
  148. package/dist/src/openai-compat/session-key-resolver.js +0 -1
  149. package/dist/src/openai-compat/skill-resolver.js +0 -1
  150. package/dist/src/openai-compat/sse-translator.js +0 -1
  151. package/dist/src/openai-compat/status-reporter.js +0 -1
  152. package/dist/src/openai-compat/streaming-handler.js +6 -2
  153. package/dist/src/openai-compat/tool-calls-parser.js +0 -1
  154. package/dist/src/openai-compat/tool-results-serializer.js +0 -1
  155. package/dist/src/openai-compat/tts-rule.js +0 -1
  156. package/dist/src/openai-compat/voice-recovery.js +0 -1
  157. package/dist/src/patches/cache-parity-registry.js +0 -1
  158. package/dist/src/patches/claude-md-injection.js +0 -1
  159. package/dist/src/patches/cwd-redirect.js +0 -1
  160. package/dist/src/patches/embedded-server-route.js +0 -1
  161. package/dist/src/patches/pricing-overrides.js +0 -1
  162. package/dist/src/patches/resume-registry-restore.js +0 -1
  163. package/dist/src/patches/session-pid-tracking.js +0 -1
  164. package/dist/src/patches/sysprompt-strip.js +0 -1
  165. package/dist/src/patches/tools-restoration.js +0 -1
  166. package/dist/src/persistence/migration-v0.js +0 -1
  167. package/dist/src/persistence/session-registry.js +0 -1
  168. package/dist/src/persistence/snapshot.js +0 -1
  169. package/dist/src/persistence/wal.js +0 -1
  170. package/dist/src/proxy/anthropic-adapter.js +0 -1
  171. package/dist/src/proxy/handler.js +0 -1
  172. package/dist/src/proxy/index.js +0 -1
  173. package/dist/src/proxy/schema-cleaner.js +0 -1
  174. package/dist/src/proxy/thought-cache.js +0 -1
  175. package/dist/src/session/embedded-server.js +0 -1
  176. package/dist/src/session/inbox-manager.js +0 -1
  177. package/dist/src/session/index.js +0 -1
  178. package/dist/src/session/persisted-sessions.js +0 -1
  179. package/dist/src/session/session-manager.js +0 -1
  180. package/dist/src/session/watchdogs.js +0 -1
  181. package/dist/src/session-bootstrap/boot-self-heal.js +0 -1
  182. package/dist/src/session-bootstrap/cwd-patch.js +0 -1
  183. package/dist/src/session-bootstrap/index.js +0 -1
  184. package/dist/src/session-bootstrap/resume-registry.js +0 -1
  185. package/dist/src/session-bootstrap/session-hygiene.js +0 -1
  186. package/dist/src/session-bootstrap/sysprompt-strip.js +0 -1
  187. package/dist/src/session-bootstrap/think-conflict-resolver.js +0 -1
  188. package/dist/src/types/index.js +0 -1
  189. package/dist/src/types/route.js +0 -1
  190. package/dist/src/types/runtime-config.js +0 -1
  191. package/dist/src/types/session.js +0 -1
  192. package/dist/src/types/sse.js +0 -1
  193. package/dist/src/types/tool-bridge.js +0 -1
  194. package/dist/src/types/upstream.js +0 -1
  195. package/dist/src/types.js +0 -1
  196. package/dist/src/validation.js +0 -1
  197. package/package.json +1 -1
  198. package/dist/src/channels/adapter.js.map +0 -1
  199. package/dist/src/channels/telegram/card-renderer.d.ts +0 -80
  200. package/dist/src/channels/telegram/card-renderer.js +0 -169
  201. package/dist/src/channels/telegram/card-renderer.js.map +0 -1
  202. package/dist/src/channels/telegram/completion-summary.d.ts +0 -21
  203. package/dist/src/channels/telegram/completion-summary.js +0 -218
  204. package/dist/src/channels/telegram/completion-summary.js.map +0 -1
  205. package/dist/src/channels/telegram/edit-cadence.d.ts +0 -37
  206. package/dist/src/channels/telegram/edit-cadence.js +0 -50
  207. package/dist/src/channels/telegram/edit-cadence.js.map +0 -1
  208. package/dist/src/channels/telegram/error-renderer.d.ts +0 -29
  209. package/dist/src/channels/telegram/error-renderer.js +0 -133
  210. package/dist/src/channels/telegram/error-renderer.js.map +0 -1
  211. package/dist/src/channels/telegram/event-reducer.d.ts +0 -33
  212. package/dist/src/channels/telegram/event-reducer.js +0 -647
  213. package/dist/src/channels/telegram/event-reducer.js.map +0 -1
  214. package/dist/src/channels/telegram/format-helpers.d.ts +0 -20
  215. package/dist/src/channels/telegram/format-helpers.js +0 -34
  216. package/dist/src/channels/telegram/format-helpers.js.map +0 -1
  217. package/dist/src/channels/telegram/index.d.ts +0 -13
  218. package/dist/src/channels/telegram/index.js +0 -14
  219. package/dist/src/channels/telegram/index.js.map +0 -1
  220. package/dist/src/channels/telegram/injector.d.ts +0 -53
  221. package/dist/src/channels/telegram/injector.js +0 -271
  222. package/dist/src/channels/telegram/injector.js.map +0 -1
  223. package/dist/src/channels/telegram/insight-formatter.d.ts +0 -36
  224. package/dist/src/channels/telegram/insight-formatter.js +0 -36
  225. package/dist/src/channels/telegram/insight-formatter.js.map +0 -1
  226. package/dist/src/channels/telegram/live-card.d.ts +0 -185
  227. package/dist/src/channels/telegram/live-card.js +0 -868
  228. package/dist/src/channels/telegram/live-card.js.map +0 -1
  229. package/dist/src/channels/telegram/logger.d.ts +0 -10
  230. package/dist/src/channels/telegram/logger.js +0 -13
  231. package/dist/src/channels/telegram/logger.js.map +0 -1
  232. package/dist/src/channels/telegram/result-preview.d.ts +0 -12
  233. package/dist/src/channels/telegram/result-preview.js +0 -48
  234. package/dist/src/channels/telegram/result-preview.js.map +0 -1
  235. package/dist/src/channels/telegram/speculative-bubble.d.ts +0 -33
  236. package/dist/src/channels/telegram/speculative-bubble.js +0 -42
  237. package/dist/src/channels/telegram/speculative-bubble.js.map +0 -1
  238. package/dist/src/channels/telegram/state-machine.d.ts +0 -22
  239. package/dist/src/channels/telegram/state-machine.js +0 -72
  240. package/dist/src/channels/telegram/state-machine.js.map +0 -1
  241. package/dist/src/channels/telegram/throttle-controller.d.ts +0 -88
  242. package/dist/src/channels/telegram/throttle-controller.js +0 -203
  243. package/dist/src/channels/telegram/throttle-controller.js.map +0 -1
  244. package/dist/src/channels/telegram/tool-tracker.d.ts +0 -149
  245. package/dist/src/channels/telegram/tool-tracker.js +0 -578
  246. package/dist/src/channels/telegram/tool-tracker.js.map +0 -1
  247. package/dist/src/channels/telegram-mirror/askuser.js.map +0 -1
  248. package/dist/src/channels/telegram-mirror/burst-accumulator.js.map +0 -1
  249. package/dist/src/channels/telegram-mirror/callback-mapping.js.map +0 -1
  250. package/dist/src/channels/telegram-mirror/card-renderer.js.map +0 -1
  251. package/dist/src/channels/telegram-mirror/card-state.js.map +0 -1
  252. package/dist/src/channels/telegram-mirror/commands.js.map +0 -1
  253. package/dist/src/channels/telegram-mirror/compose-buffer.js.map +0 -1
  254. package/dist/src/channels/telegram-mirror/cost-views.js.map +0 -1
  255. package/dist/src/channels/telegram-mirror/failure/callback-data-overflow.js.map +0 -1
  256. package/dist/src/channels/telegram-mirror/failure/gateway-down.js.map +0 -1
  257. package/dist/src/channels/telegram-mirror/failure/in-flight-conflict.js.map +0 -1
  258. package/dist/src/channels/telegram-mirror/failure/index.js.map +0 -1
  259. package/dist/src/channels/telegram-mirror/failure/model-5xx.js.map +0 -1
  260. package/dist/src/channels/telegram-mirror/failure/network-blip.js.map +0 -1
  261. package/dist/src/channels/telegram-mirror/failure/pool-exhausted-fallback.js.map +0 -1
  262. package/dist/src/channels/telegram-mirror/failure/rate-limit.js.map +0 -1
  263. package/dist/src/channels/telegram-mirror/failure/returning-after-24h.js.map +0 -1
  264. package/dist/src/channels/telegram-mirror/failure/types.js.map +0 -1
  265. package/dist/src/channels/telegram-mirror/inbound-handler.js.map +0 -1
  266. package/dist/src/channels/telegram-mirror/index.js.map +0 -1
  267. package/dist/src/channels/telegram-mirror/plan-attachment.js.map +0 -1
  268. package/dist/src/channels/telegram-mirror/quota-reader.js.map +0 -1
  269. package/dist/src/channels/telegram-mirror/sessions-keyboard.js.map +0 -1
  270. package/dist/src/channels/telegram-mirror/soak-log.js.map +0 -1
  271. package/dist/src/channels/telegram-mirror/state-machine.js.map +0 -1
  272. package/dist/src/channels/telegram-mirror/status-line.js.map +0 -1
  273. package/dist/src/channels/telegram-mirror/sync-commands.js.map +0 -1
  274. package/dist/src/channels/telegram-mirror/threshold-watcher.js.map +0 -1
  275. package/dist/src/channels/telegram-mirror/turn-bridge.js.map +0 -1
  276. package/dist/src/cli/checks/bridge-wiring.js.map +0 -1
  277. package/dist/src/cli/checks/config-schema.js.map +0 -1
  278. package/dist/src/cli/checks/critical-openclaw-json-keys.js.map +0 -1
  279. package/dist/src/cli/checks/install-path.js.map +0 -1
  280. package/dist/src/cli/checks/patch-scaffold.js.map +0 -1
  281. package/dist/src/cli/doctor.js.map +0 -1
  282. package/dist/src/cli/index.js.map +0 -1
  283. package/dist/src/cli/migrate.js.map +0 -1
  284. package/dist/src/command-router/cc-handler.js.map +0 -1
  285. package/dist/src/command-router/index.js.map +0 -1
  286. package/dist/src/command-router/launch-policy.js.map +0 -1
  287. package/dist/src/command-router/resume-policy.js.map +0 -1
  288. package/dist/src/command-router/turn-formatter.js.map +0 -1
  289. package/dist/src/config/drift-detector.js.map +0 -1
  290. package/dist/src/config/loader.js.map +0 -1
  291. package/dist/src/config/schema.js.map +0 -1
  292. package/dist/src/constants.js.map +0 -1
  293. package/dist/src/council/build-agent-prompt.js.map +0 -1
  294. package/dist/src/council/cleanup-worktrees.js.map +0 -1
  295. package/dist/src/council/consensus.js.map +0 -1
  296. package/dist/src/council/council.js.map +0 -1
  297. package/dist/src/council/index.js.map +0 -1
  298. package/dist/src/council/system-prompt.js.map +0 -1
  299. package/dist/src/council/write-worktree-claude-md.js.map +0 -1
  300. package/dist/src/engines/base-oneshot-session.js.map +0 -1
  301. package/dist/src/engines/heartbeat-guard.js.map +0 -1
  302. package/dist/src/engines/index.js.map +0 -1
  303. package/dist/src/engines/persistent-codex-session.js.map +0 -1
  304. package/dist/src/engines/persistent-cursor-session.js.map +0 -1
  305. package/dist/src/engines/persistent-custom-session.js.map +0 -1
  306. package/dist/src/engines/persistent-gemini-session.js.map +0 -1
  307. package/dist/src/engines/persistent-session.js.map +0 -1
  308. package/dist/src/engines/resolve-bin.js.map +0 -1
  309. package/dist/src/engines/subprocess-pool.js.map +0 -1
  310. package/dist/src/health/handler.js.map +0 -1
  311. package/dist/src/health/index.js.map +0 -1
  312. package/dist/src/health/metrics.js.map +0 -1
  313. package/dist/src/index.js.map +0 -1
  314. package/dist/src/lib/auto-recovery.js.map +0 -1
  315. package/dist/src/lib/cache-parity.js.map +0 -1
  316. package/dist/src/lib/circuit-breaker.js.map +0 -1
  317. package/dist/src/lib/config-service.js.map +0 -1
  318. package/dist/src/lib/config.js.map +0 -1
  319. package/dist/src/lib/cost-rollup.js.map +0 -1
  320. package/dist/src/lib/debounce.js.map +0 -1
  321. package/dist/src/lib/debug-tap.js.map +0 -1
  322. package/dist/src/lib/domain-error.js.map +0 -1
  323. package/dist/src/lib/drift-detector.js.map +0 -1
  324. package/dist/src/lib/env-overrides.js.map +0 -1
  325. package/dist/src/lib/error-formatter.js.map +0 -1
  326. package/dist/src/lib/error-renderer.js.map +0 -1
  327. package/dist/src/lib/heartbeat-config.js.map +0 -1
  328. package/dist/src/lib/heartbeat-workaround.js.map +0 -1
  329. package/dist/src/lib/http-agent.js.map +0 -1
  330. package/dist/src/lib/index.js.map +0 -1
  331. package/dist/src/lib/json-array.js.map +0 -1
  332. package/dist/src/lib/markdown-to-mdv2.js.map +0 -1
  333. package/dist/src/lib/markdown-v2.js.map +0 -1
  334. package/dist/src/lib/perf/async-compact.js.map +0 -1
  335. package/dist/src/lib/perf/direct-sdk.js.map +0 -1
  336. package/dist/src/lib/perf/haiku-route.js.map +0 -1
  337. package/dist/src/lib/perf/predictive-continuation.js.map +0 -1
  338. package/dist/src/lib/perf/read-batch.js.map +0 -1
  339. package/dist/src/lib/perf/skill-list-collapse.js.map +0 -1
  340. package/dist/src/lib/perf/speculative-bubble.js.map +0 -1
  341. package/dist/src/lib/perf/typing-prefetch.js.map +0 -1
  342. package/dist/src/lib/register-guard.js.map +0 -1
  343. package/dist/src/lib/req-shape-log.js.map +0 -1
  344. package/dist/src/lib/safe-upstream-probes.js.map +0 -1
  345. package/dist/src/lib/session-registry.js.map +0 -1
  346. package/dist/src/lib/spawn-async.js.map +0 -1
  347. package/dist/src/lib/stale-pid-files.js.map +0 -1
  348. package/dist/src/lib/status-tee-reader.js.map +0 -1
  349. package/dist/src/lib/sysprompt-strip.js.map +0 -1
  350. package/dist/src/lib/telegram-bot-api.js.map +0 -1
  351. package/dist/src/lib/telemetry.js.map +0 -1
  352. package/dist/src/lib/test-mode.js.map +0 -1
  353. package/dist/src/lib/trajectory.js.map +0 -1
  354. package/dist/src/lib/vendor-paths.js.map +0 -1
  355. package/dist/src/lifecycle/boot.js.map +0 -1
  356. package/dist/src/lifecycle/patch-manifest.js.map +0 -1
  357. package/dist/src/lifecycle/phase-import-upstream.js.map +0 -1
  358. package/dist/src/lifecycle/phase-install-patches.js.map +0 -1
  359. package/dist/src/lifecycle/phase-schedule-jobs.js.map +0 -1
  360. package/dist/src/lifecycle/phase-start-server.js.map +0 -1
  361. package/dist/src/lifecycle/phase-validate-config.js.map +0 -1
  362. package/dist/src/lifecycle/phase-validate-upstream.js.map +0 -1
  363. package/dist/src/lifecycle/phase-wire-handlers.js.map +0 -1
  364. package/dist/src/lifecycle/safe-restart.js.map +0 -1
  365. package/dist/src/logger.js.map +0 -1
  366. package/dist/src/mcp/bridge.js.map +0 -1
  367. package/dist/src/mcp/index.js.map +0 -1
  368. package/dist/src/models.js.map +0 -1
  369. package/dist/src/observability/event-bus.js.map +0 -1
  370. package/dist/src/observability/get-event-bus.js.map +0 -1
  371. package/dist/src/observability/observability-service.js.map +0 -1
  372. package/dist/src/observability/perf-telemetry.js.map +0 -1
  373. package/dist/src/observability/subscribers/metrics.js.map +0 -1
  374. package/dist/src/observability/subscribers/session-capture.js.map +0 -1
  375. package/dist/src/openai-compat/bridges/allowlist.js.map +0 -1
  376. package/dist/src/openai-compat/bridges/factory.js.map +0 -1
  377. package/dist/src/openai-compat/bridges/media-bridge.js.map +0 -1
  378. package/dist/src/openai-compat/bridges/openclaw-api-shim.js.map +0 -1
  379. package/dist/src/openai-compat/bridges/openclaw-native-tools.js.map +0 -1
  380. package/dist/src/openai-compat/bridges/openclaw-tool-registry.js.map +0 -1
  381. package/dist/src/openai-compat/bridges/tts-media-bridge.js.map +0 -1
  382. package/dist/src/openai-compat/cli-stream-parser.js.map +0 -1
  383. package/dist/src/openai-compat/index.js.map +0 -1
  384. package/dist/src/openai-compat/message-extractor.js.map +0 -1
  385. package/dist/src/openai-compat/mode-flags.js.map +0 -1
  386. package/dist/src/openai-compat/non-streaming-handler.js.map +0 -1
  387. package/dist/src/openai-compat/openai-chunk-types.js.map +0 -1
  388. package/dist/src/openai-compat/openai-compat.js.map +0 -1
  389. package/dist/src/openai-compat/openai-types.js.map +0 -1
  390. package/dist/src/openai-compat/parse-route-body.js.map +0 -1
  391. package/dist/src/openai-compat/prompts.js.map +0 -1
  392. package/dist/src/openai-compat/response-formatter.js.map +0 -1
  393. package/dist/src/openai-compat/session-key-resolver.js.map +0 -1
  394. package/dist/src/openai-compat/skill-resolver.js.map +0 -1
  395. package/dist/src/openai-compat/sse-translator.js.map +0 -1
  396. package/dist/src/openai-compat/status-reporter.js.map +0 -1
  397. package/dist/src/openai-compat/streaming-handler.js.map +0 -1
  398. package/dist/src/openai-compat/tool-calls-parser.js.map +0 -1
  399. package/dist/src/openai-compat/tool-results-serializer.js.map +0 -1
  400. package/dist/src/openai-compat/tts-rule.js.map +0 -1
  401. package/dist/src/openai-compat/voice-recovery.js.map +0 -1
  402. package/dist/src/patches/cache-parity-registry.js.map +0 -1
  403. package/dist/src/patches/claude-md-injection.js.map +0 -1
  404. package/dist/src/patches/cwd-redirect.js.map +0 -1
  405. package/dist/src/patches/embedded-server-route.js.map +0 -1
  406. package/dist/src/patches/pricing-overrides.js.map +0 -1
  407. package/dist/src/patches/resume-registry-restore.js.map +0 -1
  408. package/dist/src/patches/session-pid-tracking.js.map +0 -1
  409. package/dist/src/patches/sysprompt-strip.js.map +0 -1
  410. package/dist/src/patches/sysprompt-strip.spec.d.ts +0 -33
  411. package/dist/src/patches/sysprompt-strip.spec.js +0 -53
  412. package/dist/src/patches/sysprompt-strip.spec.js.map +0 -1
  413. package/dist/src/patches/tools-restoration.js.map +0 -1
  414. package/dist/src/persistence/migration-v0.js.map +0 -1
  415. package/dist/src/persistence/session-registry.js.map +0 -1
  416. package/dist/src/persistence/snapshot.js.map +0 -1
  417. package/dist/src/persistence/wal.js.map +0 -1
  418. package/dist/src/proxy/anthropic-adapter.js.map +0 -1
  419. package/dist/src/proxy/handler.js.map +0 -1
  420. package/dist/src/proxy/index.js.map +0 -1
  421. package/dist/src/proxy/schema-cleaner.js.map +0 -1
  422. package/dist/src/proxy/thought-cache.js.map +0 -1
  423. package/dist/src/session/embedded-server.js.map +0 -1
  424. package/dist/src/session/inbox-manager.js.map +0 -1
  425. package/dist/src/session/index.js.map +0 -1
  426. package/dist/src/session/persisted-sessions.js.map +0 -1
  427. package/dist/src/session/session-manager.js.map +0 -1
  428. package/dist/src/session/watchdogs.js.map +0 -1
  429. package/dist/src/session-bootstrap/boot-self-heal.js.map +0 -1
  430. package/dist/src/session-bootstrap/cwd-patch.js.map +0 -1
  431. package/dist/src/session-bootstrap/index.js.map +0 -1
  432. package/dist/src/session-bootstrap/resume-registry.js.map +0 -1
  433. package/dist/src/session-bootstrap/session-hygiene.js.map +0 -1
  434. package/dist/src/session-bootstrap/sysprompt-strip.js.map +0 -1
  435. package/dist/src/session-bootstrap/think-conflict-resolver.js.map +0 -1
  436. package/dist/src/types/index.js.map +0 -1
  437. package/dist/src/types/route.js.map +0 -1
  438. package/dist/src/types/runtime-config.js.map +0 -1
  439. package/dist/src/types/session.js.map +0 -1
  440. package/dist/src/types/sse.js.map +0 -1
  441. package/dist/src/types/tool-bridge.js.map +0 -1
  442. package/dist/src/types/upstream.js.map +0 -1
  443. package/dist/src/types.js.map +0 -1
  444. package/dist/src/validation.js.map +0 -1
@@ -1,218 +0,0 @@
1
- /**
2
- * telegram completion-summary — TypeScript port of savvy-claude-code/ux-bridge.js
3
- *
4
- * Handles reply_dispatch finalization for Savvy cards:
5
- * - Marks card done, generates next-steps, renders final state
6
- * - Auto-collapse after delay, TTL-delete collapsed card
7
- * - Completion reactions + auto-pin/unpin error cards
8
- * - Persists card summary to daily JSONL log
9
- * - Updates session history cache
10
- *
11
- * Source lines: 2077–2222 of ux-bridge.js
12
- */
13
- import { appendFileSync, mkdirSync } from 'node:fs';
14
- import { defaultRegisterGuard } from '../../lib/register-guard.js';
15
- import { telegramApi, _logger, } from './live-card.js';
16
- import { activeSavvyCards, activeSavvyChatIds, savvyQuotaFetcher, setSavvyQuotaFetcher, sessionHistoryCache, savvyButtons, renderSavvyCard, generateNextSteps, } from './tool-tracker.js';
17
- // ── Constants ─────────────────────────────────────────────────────────────
18
- const PLUGIN_TAG = '[cc-openclaw/telegram/completion-summary]';
19
- const SAVVY_LOG_DIR = '/home/a1xai/.openclaw/sessions/savvy-turns';
20
- const MAX_HISTORY_CACHE = 50;
21
- // Track last pinned error card per chat for auto-unpin on clean follow-up
22
- const lastPinnedErrorCard = new Map(); // chatId → messageId
23
- // ── Internal types ────────────────────────────────────────────────────────
24
- // (local alias — tool-tracker's SavvyCardState is not re-exported, use unknown cast)
25
- // ── register() ────────────────────────────────────────────────────────────
26
- /**
27
- * Register the completion-summary plugin hook (reply_dispatch).
28
- * Idempotent — subsequent calls are no-ops.
29
- */
30
- export function register(api) {
31
- const logger = api.logger || _logger;
32
- defaultRegisterGuard.guard('channels/telegram/completion-summary', api, () => {
33
- // ── reply_dispatch: finalize card when Savvy sends its reply ──────────
34
- api.on('reply_dispatch', (event) => {
35
- const ev = event;
36
- const sk = ev.sessionKey;
37
- if (!sk)
38
- return;
39
- const entry = activeSavvyCards.get(sk);
40
- if (!entry) {
41
- // v0.10.1: log + persist a minimal JSONL entry so the daily savvy-turns
42
- // file isn't completely empty when activeSavvyCards has a key-alignment
43
- // miss. Diagnostics for the v0.10.2 root-cause fix (session-key drift
44
- // between tool-tracker and completion-summary).
45
- logger.info(`${PLUGIN_TAG} [savvy-card] reply_dispatch for unknown sessionKey=${sk} — writing minimal log entry`);
46
- try {
47
- const dayStr = new Date().toISOString().slice(0, 10);
48
- mkdirSync(SAVVY_LOG_DIR, { recursive: true });
49
- appendFileSync(`${SAVVY_LOG_DIR}/${dayStr}.jsonl`, JSON.stringify({
50
- ts: Date.now(),
51
- sessionKey: sk,
52
- status: 'card-miss',
53
- note: 'reply_dispatch fired but activeSavvyCards lookup returned undefined',
54
- }) + '\n');
55
- }
56
- catch {
57
- // Best-effort — never block dispatch on logging
58
- }
59
- return;
60
- }
61
- // Clean up bridge + stall timer
62
- if (entry._bridgeCleanup) {
63
- entry._bridgeCleanup();
64
- entry._bridgeCleanup = null;
65
- }
66
- if (entry._stallTimer)
67
- clearInterval(entry._stallTimer);
68
- // If debounce timer never fired, skip card entirely (fast turn)
69
- if (entry._initialTimer && !entry._initialSent) {
70
- clearTimeout(entry._initialTimer);
71
- if (entry._typingInterval) {
72
- clearInterval(entry._typingInterval);
73
- entry._typingInterval = null;
74
- }
75
- activeSavvyChatIds.delete(entry.chatId);
76
- activeSavvyCards.delete(sk);
77
- logger.info(`${PLUGIN_TAG} [savvy-card] Fast turn — skipped card for sessionKey=${sk}`);
78
- return;
79
- }
80
- // Flush pending throttled edit — final render supersedes
81
- if (entry._pendingEdit?.timer) {
82
- clearTimeout(entry._pendingEdit.timer);
83
- entry._pendingEdit = null;
84
- }
85
- entry._lastEditAt = 0;
86
- if (entry._typingInterval) {
87
- clearInterval(entry._typingInterval);
88
- entry._typingInterval = null;
89
- }
90
- entry.state.markDone();
91
- if (generateNextSteps) {
92
- // TODO(P2): SavvyCardState type lives in tool-tracker — cast via unknown
93
- const steps = generateNextSteps(entry.state.getState());
94
- entry.state.setNextSteps(steps);
95
- }
96
- const finalState = entry.state.getState();
97
- const _render = renderSavvyCard;
98
- if (_render) {
99
- const cardText = _render(finalState);
100
- const markup = savvyButtons(finalState, sk, entry.chatId);
101
- entry.queue.updateCard(cardText, markup);
102
- }
103
- // v0.21.2 mirror fix — defer entry-delete + cleanup to next tick so the
104
- // `message_sending` hook in tool-tracker (which sets assistantText and
105
- // re-renders the card) has a chance to run BEFORE the entry is removed
106
- // from activeSavvyCards/activeSavvyChatIds. Without this defer, message_sending
107
- // fires too late: by then activeSavvyChatIds.has(chatId) is false and the
108
- // tool-tracker handler returns early, leaving the live-card without the
109
- // assistant text mirror surfaced. setTimeout(0) lets any pending payload-
110
- // delivery synchronous work (which includes message_sending firing) flush
111
- // before cleanup. The user-visible card has already been edited at line 125
112
- // with the metrics+next-step shape; the late re-render from tool-tracker
113
- // mutates the same Telegram message_id with the mirror added.
114
- setTimeout(() => {
115
- activeSavvyChatIds.delete(entry.chatId);
116
- activeSavvyCards.delete(sk);
117
- if (savvyQuotaFetcher && activeSavvyCards.size === 0) {
118
- savvyQuotaFetcher.stopPolling();
119
- setSavvyQuotaFetcher(null);
120
- }
121
- }, 500);
122
- // Auto-collapse after delay (skip error-heavy 🔴 cards)
123
- if (!finalState.delegated && finalState.qualityScore?.emoji !== '🔴') {
124
- const collapseDelay = finalState.qualityScore?.emoji === '🟡' ? 30000 : 20000;
125
- const collapseQueue = entry.queue;
126
- const collapseEntry = entry;
127
- setTimeout(() => {
128
- const elapsedSec = Math.round((finalState.elapsedMs || 0) / 1000);
129
- const qualEmoji = finalState.qualityScore?.emoji || '✅';
130
- let collapsed;
131
- if (finalState.filesModified && finalState.filesModified.length > 0) {
132
- const fileList = finalState.filesModified.slice(0, 3).join(', ');
133
- const extra = finalState.filesModified.length > 3 ? ` \\+${finalState.filesModified.length - 3}` : '';
134
- collapsed = `${qualEmoji} *Savvy* — edited ${fileList}${extra} \\(${elapsedSec}s\\)`;
135
- }
136
- else {
137
- collapsed = `${qualEmoji} *Savvy* — ${finalState.toolCount} tools in ${elapsedSec}s`;
138
- }
139
- collapseQueue.updateCard(collapsed, { inline_keyboard: [] });
140
- setTimeout(() => {
141
- if (collapseQueue.cardMessageId) {
142
- telegramApi('deleteMessage', {
143
- chat_id: collapseEntry.chatId,
144
- message_id: collapseQueue.cardMessageId,
145
- }).catch(() => { });
146
- }
147
- }, 5 * 60 * 1000);
148
- }, collapseDelay);
149
- }
150
- // Completion reaction on card
151
- const cardMsgId = entry.queue.cardMessageId;
152
- if (cardMsgId) {
153
- const reactionEmoji = finalState.qualityScore?.emoji === '🔴' ? '😬'
154
- : finalState.qualityScore?.emoji === '🟡' ? '🤔'
155
- : '👍';
156
- telegramApi('setMessageReaction', {
157
- chat_id: entry.chatId,
158
- message_id: cardMsgId,
159
- reaction: [{ type: 'emoji', emoji: reactionEmoji }],
160
- }).catch(() => { });
161
- if (finalState.qualityScore?.emoji === '🔴') {
162
- telegramApi('pinChatMessage', {
163
- chat_id: entry.chatId,
164
- message_id: cardMsgId,
165
- disable_notification: true,
166
- }).catch(() => { });
167
- lastPinnedErrorCard.set(entry.chatId, cardMsgId);
168
- }
169
- }
170
- // Auto-unpin previous error card on clean follow-up
171
- if (finalState.qualityScore?.emoji === '🟢') {
172
- const pinnedId = lastPinnedErrorCard.get(entry.chatId);
173
- if (pinnedId) {
174
- telegramApi('unpinChatMessage', {
175
- chat_id: entry.chatId,
176
- message_id: pinnedId,
177
- }).catch(() => { });
178
- lastPinnedErrorCard.delete(entry.chatId);
179
- }
180
- }
181
- // Persist card summary to daily JSONL log
182
- try {
183
- const dayStr = new Date().toISOString().slice(0, 10);
184
- mkdirSync(SAVVY_LOG_DIR, { recursive: true });
185
- appendFileSync(`${SAVVY_LOG_DIR}/${dayStr}.jsonl`, JSON.stringify({
186
- ts: Date.now(),
187
- sessionKey: sk,
188
- chatId: entry.chatId,
189
- cardMessageId: cardMsgId || null,
190
- toolCount: finalState.toolCount,
191
- errorCount: finalState.errorCount,
192
- elapsedMs: finalState.elapsedMs,
193
- filesModified: finalState.filesModified,
194
- qualityScore: finalState.qualityScore,
195
- status: finalState.status,
196
- }) + '\n');
197
- }
198
- catch (e) {
199
- logger.warn(`${PLUGIN_TAG} Failed to persist Savvy card summary: ${e.message}`);
200
- }
201
- // Update session history cache for next card's badge
202
- sessionHistoryCache.set(String(entry.chatId), {
203
- toolCount: finalState.toolCount,
204
- elapsedMs: finalState.elapsedMs,
205
- qualityEmoji: finalState.qualityScore?.emoji || '✅',
206
- ts: Date.now(),
207
- });
208
- if (sessionHistoryCache.size > MAX_HISTORY_CACHE) {
209
- const oldest = sessionHistoryCache.keys().next().value;
210
- if (oldest)
211
- sessionHistoryCache.delete(oldest);
212
- }
213
- logger.info(`${PLUGIN_TAG} [savvy-card] Done → finalized sessionKey=${sk}`);
214
- });
215
- logger.info(`${PLUGIN_TAG} completion-summary hooks registered (reply_dispatch)`);
216
- }); // end defaultRegisterGuard.guard
217
- }
218
- //# sourceMappingURL=completion-summary.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"completion-summary.js","sourceRoot":"","sources":["../../../../src/channels/telegram/completion-summary.ts"],"names":[],"mappings":"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"}
@@ -1,37 +0,0 @@
1
- /**
2
- * M3 (perf overhaul idea #3) — tiered edit cadence.
3
- *
4
- * Computes the trailing-edit delay for the live-card throttle. When the
5
- * perf-edit-cadence flag is on, returns a 1500ms base interval with ±20%
6
- * jitter applied; when off, returns the legacy 1200ms-exact value preserved
7
- * bit-for-bit from `tool-tracker.ts:124` (v0.13.0 throttle).
8
- *
9
- * Why jitter: Telegram's per-chat editMessageText rate limit clusters 429s
10
- * at the integer-second boundary when multiple cards in the same chat tick
11
- * in lockstep. Spreading the trailing edit ±300ms breaks the clustering
12
- * without going above the rate ceiling on any individual card.
13
- *
14
- * Tier-1 (t=0 placeholder) and tier-2 (immediate first content edit) are
15
- * already handled by the `since >= interval` fast path in
16
- * `throttledUpdateCard` — the very first call always finds `_lastEditAt=0`
17
- * and fires immediately. This module's job is the tier-3 trailing edit
18
- * pacing only.
19
- *
20
- * `rng` is injected for test determinism — production passes Math.random.
21
- */
22
- export declare const LEGACY_EDIT_INTERVAL_MS = 1200;
23
- export declare const PERF_EDIT_INTERVAL_MS = 1500;
24
- export declare const PERF_EDIT_JITTER_PCT = 0.2;
25
- /**
26
- * Compute the trailing-edit delay given the current throttle state.
27
- * `since` is the elapsed ms since the last edit; the caller pre-decides
28
- * whether to fire immediately (since >= interval) or schedule a trailing
29
- * edit using this delay.
30
- */
31
- export declare function computeTrailingDelayMs(since: number, rng?: () => number): number;
32
- /**
33
- * Resolve the active interval for "is this call past the throttle window?"
34
- * decisions. The flag flip changes both the schedule delay AND the
35
- * immediate-fire boundary so the two stay consistent.
36
- */
37
- export declare function getActiveEditIntervalMs(): number;
@@ -1,50 +0,0 @@
1
- /**
2
- * M3 (perf overhaul idea #3) — tiered edit cadence.
3
- *
4
- * Computes the trailing-edit delay for the live-card throttle. When the
5
- * perf-edit-cadence flag is on, returns a 1500ms base interval with ±20%
6
- * jitter applied; when off, returns the legacy 1200ms-exact value preserved
7
- * bit-for-bit from `tool-tracker.ts:124` (v0.13.0 throttle).
8
- *
9
- * Why jitter: Telegram's per-chat editMessageText rate limit clusters 429s
10
- * at the integer-second boundary when multiple cards in the same chat tick
11
- * in lockstep. Spreading the trailing edit ±300ms breaks the clustering
12
- * without going above the rate ceiling on any individual card.
13
- *
14
- * Tier-1 (t=0 placeholder) and tier-2 (immediate first content edit) are
15
- * already handled by the `since >= interval` fast path in
16
- * `throttledUpdateCard` — the very first call always finds `_lastEditAt=0`
17
- * and fires immediately. This module's job is the tier-3 trailing edit
18
- * pacing only.
19
- *
20
- * `rng` is injected for test determinism — production passes Math.random.
21
- */
22
- import { getPerfEditCadenceEnabled } from '../../lib/config.js';
23
- export const LEGACY_EDIT_INTERVAL_MS = 1200;
24
- export const PERF_EDIT_INTERVAL_MS = 1500;
25
- export const PERF_EDIT_JITTER_PCT = 0.2;
26
- /**
27
- * Compute the trailing-edit delay given the current throttle state.
28
- * `since` is the elapsed ms since the last edit; the caller pre-decides
29
- * whether to fire immediately (since >= interval) or schedule a trailing
30
- * edit using this delay.
31
- */
32
- export function computeTrailingDelayMs(since, rng = Math.random) {
33
- const enabled = getPerfEditCadenceEnabled();
34
- const interval = enabled ? PERF_EDIT_INTERVAL_MS : LEGACY_EDIT_INTERVAL_MS;
35
- const baseDelay = interval - since;
36
- if (!enabled)
37
- return baseDelay;
38
- // ±PERF_EDIT_JITTER_PCT applied as a uniform multiplier in [1-pct, 1+pct].
39
- const jitter = 1 + (rng() * 2 - 1) * PERF_EDIT_JITTER_PCT;
40
- return Math.max(0, Math.round(baseDelay * jitter));
41
- }
42
- /**
43
- * Resolve the active interval for "is this call past the throttle window?"
44
- * decisions. The flag flip changes both the schedule delay AND the
45
- * immediate-fire boundary so the two stay consistent.
46
- */
47
- export function getActiveEditIntervalMs() {
48
- return getPerfEditCadenceEnabled() ? PERF_EDIT_INTERVAL_MS : LEGACY_EDIT_INTERVAL_MS;
49
- }
50
- //# sourceMappingURL=edit-cadence.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"edit-cadence.js","sourceRoot":"","sources":["../../../../src/channels/telegram/edit-cadence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAEhE,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAC5C,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAC1C,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAExC;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAa,EACb,MAAoB,IAAI,CAAC,MAAM;IAE/B,MAAM,OAAO,GAAG,yBAAyB,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,uBAAuB,CAAC;IAC3E,MAAM,SAAS,GAAG,QAAQ,GAAG,KAAK,CAAC;IACnC,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,2EAA2E;IAC3E,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,oBAAoB,CAAC;IAC1D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC;AACrD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,yBAAyB,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,uBAAuB,CAAC;AACvF,CAAC"}
@@ -1,29 +0,0 @@
1
- /**
2
- * error-renderer — send formatted errors to Telegram via the existing queue.
3
- *
4
- * Takes a FormattedError (from error-formatter) and dispatches it via the
5
- * live-card's telegramApi, with per-code 1h dedup to avoid noise.
6
- * Reads BOT_TOKEN and chat routing from the live-card module's shared state.
7
- */
8
- import type { FormattedError, Severity } from '../../lib/error-formatter.js';
9
- /** Test-only reset. */
10
- export declare function _resetDedupForTests(): void;
11
- export interface RenderOptions {
12
- /** Override chat ID (e.g. session-specific routing). */
13
- chatId?: string;
14
- /** Thread ID for Telegram topic groups. */
15
- threadId?: string;
16
- /** Skip dedup check — force send regardless of window. */
17
- forceSend?: boolean;
18
- /** Write to drift jsonl as well. Defaults to true for warning+ severity. */
19
- writeJsonl?: boolean;
20
- }
21
- /**
22
- * Send a FormattedError to Telegram.
23
- *
24
- * Returns true if the message was sent, false if deduped/silenced/no-token.
25
- */
26
- export declare function renderError(formatted: FormattedError, opts?: RenderOptions): Promise<boolean>;
27
- /** Only send if severity is 'critical' or 'error'. */
28
- export declare function renderErrorIfSevere(formatted: FormattedError, opts?: RenderOptions): Promise<boolean>;
29
- export type { Severity };
@@ -1,133 +0,0 @@
1
- // phase: 4 | pillar: 2 | agent: P2.B
2
- /**
3
- * error-renderer — send formatted errors to Telegram via the existing queue.
4
- *
5
- * Takes a FormattedError (from error-formatter) and dispatches it via the
6
- * live-card's telegramApi, with per-code 1h dedup to avoid noise.
7
- * Reads BOT_TOKEN and chat routing from the live-card module's shared state.
8
- */
9
- import { appendFileSync, mkdirSync, existsSync } from 'node:fs';
10
- import { join } from 'node:path';
11
- import { homedir } from 'node:os';
12
- import { telegramApi, BOT_TOKEN } from './live-card.js';
13
- // ─── Config ───────────────────────────────────────────────────────────────────
14
- /** Milliseconds between repeated Telegram alerts for the same error code. */
15
- function getDedupWindowMs() {
16
- const v = process.env.OPENCLAW_CC_OPENCLAW_DRIFT_DEDUPE_WINDOW_MS;
17
- const n = v !== undefined ? parseInt(v, 10) : NaN;
18
- return Number.isFinite(n) && n > 0 ? n : 3_600_000; // default 1h
19
- }
20
- /** Path for drift/error jsonl log. */
21
- const DRIFT_JSONL_PATH = join(homedir(), '.openclaw', 'workspace', 'memory', 'cc-openclaw-drift.jsonl');
22
- // ─── Dedup state ─────────────────────────────────────────────────────────────
23
- /**
24
- * Per-code last-sent timestamps for dedup. Module-level singleton so it
25
- * persists across calls within a process lifetime.
26
- */
27
- const _lastSentAt = new Map();
28
- /** Returns true if this code was sent within the dedup window. */
29
- function isDupe(code) {
30
- const last = _lastSentAt.get(code);
31
- if (last === undefined)
32
- return false;
33
- return Date.now() - last < getDedupWindowMs();
34
- }
35
- /** Mark a code as sent now. */
36
- function markSent(code) {
37
- _lastSentAt.set(code, Date.now());
38
- }
39
- /** Test-only reset. */
40
- export function _resetDedupForTests() {
41
- _lastSentAt.clear();
42
- }
43
- // ─── Chat ID resolution ───────────────────────────────────────────────────────
44
- /**
45
- * Resolve the Telegram chat ID to send error alerts to.
46
- * Prefers OPENCLAW_ERROR_CHAT_ID env var, falls back to
47
- * OPENCLAW_ADMIN_CHAT_ID, falls back to null (silenced).
48
- */
49
- function resolveErrorChatId() {
50
- const v = process.env.OPENCLAW_ERROR_CHAT_ID || process.env.OPENCLAW_ADMIN_CHAT_ID;
51
- return v && v.trim() ? v.trim() : null;
52
- }
53
- // ─── JSONL writer ─────────────────────────────────────────────────────────────
54
- function writeDriftJsonl(formatted) {
55
- try {
56
- const dir = join(homedir(), '.openclaw', 'workspace', 'memory');
57
- if (!existsSync(dir))
58
- mkdirSync(dir, { recursive: true });
59
- appendFileSync(DRIFT_JSONL_PATH, JSON.stringify(formatted.jsonlRow) + '\n');
60
- }
61
- catch (err) {
62
- // Must never crash the plugin — stderr only
63
- process.stderr.write(`[cc-openclaw/error-renderer] jsonl write failed: ${err.message}\n`);
64
- }
65
- }
66
- /**
67
- * Send a FormattedError to Telegram.
68
- *
69
- * Returns true if the message was sent, false if deduped/silenced/no-token.
70
- */
71
- export async function renderError(formatted, opts = {}) {
72
- const { jsonlRow, telegramText } = formatted;
73
- // Always write jsonl for warning/critical/error unless explicitly disabled
74
- const shouldWriteJsonl = opts.writeJsonl !== false && jsonlRow.severity !== 'info';
75
- if (shouldWriteJsonl) {
76
- writeDriftJsonl(formatted);
77
- }
78
- // Check dedup
79
- if (!opts.forceSend && isDupe(jsonlRow.code)) {
80
- return false;
81
- }
82
- // Resolve destination
83
- const chatId = opts.chatId ?? resolveErrorChatId();
84
- if (!chatId)
85
- return false;
86
- // Require bot token
87
- if (!BOT_TOKEN)
88
- return false;
89
- const params = {
90
- chat_id: chatId,
91
- text: telegramText,
92
- parse_mode: 'MarkdownV2',
93
- };
94
- if (opts.threadId) {
95
- params.message_thread_id = opts.threadId;
96
- }
97
- try {
98
- const res = await telegramApi('sendMessage', params);
99
- if (res.ok) {
100
- markSent(jsonlRow.code);
101
- return true;
102
- }
103
- // If MarkdownV2 fails (parse error), fall back to plain text
104
- if (res.error_code === 400) {
105
- const fallback = await telegramApi('sendMessage', {
106
- chat_id: chatId,
107
- text: `${jsonlRow.code}: ${jsonlRow.message} (${jsonlRow.ts.slice(0, 19)})`,
108
- ...(opts.threadId ? { message_thread_id: opts.threadId } : {}),
109
- });
110
- if (fallback.ok) {
111
- markSent(jsonlRow.code);
112
- return true;
113
- }
114
- }
115
- return false;
116
- }
117
- catch (err) {
118
- process.stderr.write(`[cc-openclaw/error-renderer] send failed: ${err.message}\n`);
119
- return false;
120
- }
121
- }
122
- // ─── Severity-filtered convenience ───────────────────────────────────────────
123
- /** Only send if severity is 'critical' or 'error'. */
124
- export async function renderErrorIfSevere(formatted, opts = {}) {
125
- const sev = formatted.jsonlRow.severity;
126
- if (sev === 'info' || sev === 'warning') {
127
- // Still write jsonl
128
- writeDriftJsonl(formatted);
129
- return false;
130
- }
131
- return renderError(formatted, opts);
132
- }
133
- //# sourceMappingURL=error-renderer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error-renderer.js","sourceRoot":"","sources":["../../../../src/channels/telegram/error-renderer.ts"],"names":[],"mappings":"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"}
@@ -1,33 +0,0 @@
1
- /**
2
- * telegram event-reducer — TypeScript port of savvy-claude-code/ux-bridge.js
3
- *
4
- * Central register() that wires all remaining api.on() hooks:
5
- * before_dispatch ×4 — /quota command, /sessions command, claude-local UX
6
- * feed, callback_query routing
7
- * before_model_resolve — per-chat model override (F5)
8
- * before_tool_call — Stage 4 gateway UX metadata injection
9
- * MiniMax usage tracking (before_dispatch)
10
- *
11
- * Depends on: live-card, tool-tracker, completion-summary, state-machine
12
- * (all must be registered before or alongside this module).
13
- *
14
- * Source lines: 1042–1615 of ux-bridge.js
15
- */
16
- export interface PluginApi {
17
- on(event: string, handler: (...args: unknown[]) => unknown | Promise<unknown>): void;
18
- logger?: Console;
19
- config?: Record<string, unknown>;
20
- runtime?: {
21
- subagent?: {
22
- run?(opts: Record<string, unknown>): Promise<{
23
- runId?: string;
24
- }>;
25
- };
26
- };
27
- }
28
- /**
29
- * Register all event-reducer hooks (command dispatch, model override,
30
- * callback routing, Stage 4 injection).
31
- * Idempotent — subsequent calls are no-ops.
32
- */
33
- export declare function register(api: PluginApi): void;