@a1hvdy/cc-openclaw 0.9.2 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (297) hide show
  1. package/dist/src/channels/telegram/card-renderer.d.ts +63 -0
  2. package/dist/src/channels/telegram/card-renderer.js +149 -0
  3. package/dist/src/channels/telegram/card-renderer.js.map +1 -0
  4. package/dist/src/channels/telegram/completion-summary.js +20 -1
  5. package/dist/src/channels/telegram/completion-summary.js.map +1 -1
  6. package/dist/src/channels/telegram/insight-formatter.d.ts +36 -0
  7. package/dist/src/channels/telegram/insight-formatter.js +36 -0
  8. package/dist/src/channels/telegram/insight-formatter.js.map +1 -0
  9. package/dist/src/channels/telegram/live-card.d.ts +7 -90
  10. package/dist/src/channels/telegram/live-card.js +22 -265
  11. package/dist/src/channels/telegram/live-card.js.map +1 -1
  12. package/dist/src/channels/telegram/logger.d.ts +10 -0
  13. package/dist/src/channels/telegram/logger.js +13 -0
  14. package/dist/src/channels/telegram/logger.js.map +1 -0
  15. package/dist/src/channels/telegram/throttle-controller.d.ts +54 -0
  16. package/dist/src/channels/telegram/throttle-controller.js +132 -0
  17. package/dist/src/channels/telegram/throttle-controller.js.map +1 -0
  18. package/dist/src/channels/telegram/tool-tracker.js +3 -14
  19. package/dist/src/channels/telegram/tool-tracker.js.map +1 -1
  20. package/dist/src/cli/doctor.d.ts +24 -0
  21. package/dist/src/cli/doctor.js +194 -0
  22. package/dist/src/cli/doctor.js.map +1 -0
  23. package/dist/src/cli/index.d.ts +8 -0
  24. package/dist/src/cli/index.js +39 -0
  25. package/dist/src/cli/index.js.map +1 -0
  26. package/dist/src/command-router/cc-handler.js +35 -709
  27. package/dist/src/command-router/cc-handler.js.map +1 -1
  28. package/dist/src/command-router/launch-policy.d.ts +93 -0
  29. package/dist/src/command-router/launch-policy.js +323 -0
  30. package/dist/src/command-router/launch-policy.js.map +1 -0
  31. package/dist/src/command-router/resume-policy.d.ts +18 -0
  32. package/dist/src/command-router/resume-policy.js +236 -0
  33. package/dist/src/command-router/resume-policy.js.map +1 -0
  34. package/dist/src/command-router/turn-formatter.d.ts +19 -0
  35. package/dist/src/command-router/turn-formatter.js +144 -0
  36. package/dist/src/command-router/turn-formatter.js.map +1 -0
  37. package/dist/src/constants.d.ts +33 -2
  38. package/dist/src/constants.js +33 -2
  39. package/dist/src/constants.js.map +1 -1
  40. package/dist/src/lib/config.d.ts +3 -0
  41. package/dist/src/lib/config.js +46 -0
  42. package/dist/src/lib/config.js.map +1 -1
  43. package/dist/src/lib/trajectory.d.ts +1 -1
  44. package/dist/src/lib/trajectory.js.map +1 -1
  45. package/dist/src/openai-compat/bridges/allowlist.d.ts +10 -0
  46. package/dist/src/openai-compat/bridges/allowlist.js +17 -0
  47. package/dist/src/openai-compat/bridges/allowlist.js.map +1 -0
  48. package/dist/src/openai-compat/bridges/factory.d.ts +30 -0
  49. package/dist/src/openai-compat/bridges/factory.js +84 -0
  50. package/dist/src/openai-compat/bridges/factory.js.map +1 -0
  51. package/dist/src/openai-compat/bridges/media-bridge.d.ts +34 -0
  52. package/dist/src/openai-compat/bridges/media-bridge.js +20 -0
  53. package/dist/src/openai-compat/bridges/media-bridge.js.map +1 -0
  54. package/dist/src/openai-compat/bridges/openclaw-native-tools.d.ts +61 -0
  55. package/dist/src/openai-compat/bridges/openclaw-native-tools.js +171 -0
  56. package/dist/src/openai-compat/bridges/openclaw-native-tools.js.map +1 -0
  57. package/dist/src/openai-compat/bridges/openclaw-tool-registry.d.ts +26 -0
  58. package/dist/src/openai-compat/bridges/openclaw-tool-registry.js +38 -0
  59. package/dist/src/openai-compat/bridges/openclaw-tool-registry.js.map +1 -0
  60. package/dist/src/openai-compat/bridges/tts-media-bridge.d.ts +19 -0
  61. package/dist/src/openai-compat/bridges/tts-media-bridge.js +59 -0
  62. package/dist/src/openai-compat/bridges/tts-media-bridge.js.map +1 -0
  63. package/dist/src/openai-compat/non-streaming-handler.js +52 -3
  64. package/dist/src/openai-compat/non-streaming-handler.js.map +1 -1
  65. package/dist/src/openai-compat/openai-compat.js +64 -2
  66. package/dist/src/openai-compat/openai-compat.js.map +1 -1
  67. package/dist/src/openai-compat/streaming-handler.js +107 -1
  68. package/dist/src/openai-compat/streaming-handler.js.map +1 -1
  69. package/dist/src/openai-compat/voice-recovery.d.ts +56 -0
  70. package/dist/src/openai-compat/voice-recovery.js +231 -0
  71. package/dist/src/openai-compat/voice-recovery.js.map +1 -0
  72. package/dist/src/session/session-manager.d.ts +51 -0
  73. package/dist/src/session/session-manager.js +165 -1
  74. package/dist/src/session/session-manager.js.map +1 -1
  75. package/dist/src/types/tool-bridge.d.ts +2 -1
  76. package/dist/src/types/tool-bridge.js +1 -0
  77. package/dist/src/types/tool-bridge.js.map +1 -1
  78. package/package.json +1 -1
  79. package/dist/scripts/bench/ab-harness.d.ts +0 -58
  80. package/dist/scripts/bench/ab-harness.d.ts.map +0 -1
  81. package/dist/scripts/bench/ab-harness.js +0 -78
  82. package/dist/scripts/bench/ab-harness.js.map +0 -1
  83. package/dist/src/channels/adapter.d.ts.map +0 -1
  84. package/dist/src/channels/telegram/completion-summary.d.ts.map +0 -1
  85. package/dist/src/channels/telegram/error-renderer.d.ts.map +0 -1
  86. package/dist/src/channels/telegram/event-reducer.d.ts.map +0 -1
  87. package/dist/src/channels/telegram/index.d.ts.map +0 -1
  88. package/dist/src/channels/telegram/injector.d.ts.map +0 -1
  89. package/dist/src/channels/telegram/live-card.d.ts.map +0 -1
  90. package/dist/src/channels/telegram/state-machine.d.ts.map +0 -1
  91. package/dist/src/channels/telegram/tool-tracker.d.ts.map +0 -1
  92. package/dist/src/command-router/cc-handler.d.ts.map +0 -1
  93. package/dist/src/command-router/index.d.ts.map +0 -1
  94. package/dist/src/constants.d.ts.map +0 -1
  95. package/dist/src/council/consensus.d.ts.map +0 -1
  96. package/dist/src/council/council.d.ts.map +0 -1
  97. package/dist/src/council/index.d.ts.map +0 -1
  98. package/dist/src/engines/base-oneshot-session.d.ts.map +0 -1
  99. package/dist/src/engines/index.d.ts.map +0 -1
  100. package/dist/src/engines/persistent-codex-session.d.ts.map +0 -1
  101. package/dist/src/engines/persistent-cursor-session.d.ts.map +0 -1
  102. package/dist/src/engines/persistent-custom-session.d.ts.map +0 -1
  103. package/dist/src/engines/persistent-gemini-session.d.ts.map +0 -1
  104. package/dist/src/engines/persistent-session.d.ts.map +0 -1
  105. package/dist/src/health/handler.d.ts.map +0 -1
  106. package/dist/src/health/index.d.ts.map +0 -1
  107. package/dist/src/index.d.ts.map +0 -1
  108. package/dist/src/lib/auto-recovery.d.ts.map +0 -1
  109. package/dist/src/lib/cache-parity.d.ts.map +0 -1
  110. package/dist/src/lib/circuit-breaker.d.ts.map +0 -1
  111. package/dist/src/lib/config.d.ts.map +0 -1
  112. package/dist/src/lib/debug-tap.d.ts.map +0 -1
  113. package/dist/src/lib/drift-detector.d.ts.map +0 -1
  114. package/dist/src/lib/error-formatter.d.ts.map +0 -1
  115. package/dist/src/lib/heartbeat-workaround.d.ts.map +0 -1
  116. package/dist/src/lib/index.d.ts.map +0 -1
  117. package/dist/src/lib/register-guard.d.ts.map +0 -1
  118. package/dist/src/lib/route-flag.d.ts +0 -49
  119. package/dist/src/lib/route-flag.d.ts.map +0 -1
  120. package/dist/src/lib/route-flag.js +0 -52
  121. package/dist/src/lib/route-flag.js.map +0 -1
  122. package/dist/src/lib/sysprompt-strip.d.ts.map +0 -1
  123. package/dist/src/lib/telemetry.d.ts.map +0 -1
  124. package/dist/src/lib/test-mode.d.ts.map +0 -1
  125. package/dist/src/lib/vendor-paths.d.ts.map +0 -1
  126. package/dist/src/logger.d.ts.map +0 -1
  127. package/dist/src/mcp/bridge.d.ts.map +0 -1
  128. package/dist/src/mcp/index.d.ts.map +0 -1
  129. package/dist/src/models.d.ts.map +0 -1
  130. package/dist/src/openai-compat/cli-stream-parser.d.ts.map +0 -1
  131. package/dist/src/openai-compat/index.d.ts.map +0 -1
  132. package/dist/src/openai-compat/openai-compat.d.ts.map +0 -1
  133. package/dist/src/openai-compat/skill-resolver.d.ts.map +0 -1
  134. package/dist/src/openai-compat/sse-translator.d.ts.map +0 -1
  135. package/dist/src/proxy/anthropic-adapter.d.ts.map +0 -1
  136. package/dist/src/proxy/handler.d.ts.map +0 -1
  137. package/dist/src/proxy/index.d.ts.map +0 -1
  138. package/dist/src/proxy/schema-cleaner.d.ts.map +0 -1
  139. package/dist/src/proxy/thought-cache.d.ts.map +0 -1
  140. package/dist/src/session/embedded-server.d.ts.map +0 -1
  141. package/dist/src/session/inbox-manager.d.ts.map +0 -1
  142. package/dist/src/session/index.d.ts.map +0 -1
  143. package/dist/src/session/session-manager.d.ts.map +0 -1
  144. package/dist/src/session-bootstrap/cwd-patch.d.ts.map +0 -1
  145. package/dist/src/session-bootstrap/index.d.ts.map +0 -1
  146. package/dist/src/session-bootstrap/sysprompt-strip.d.ts.map +0 -1
  147. package/dist/src/session-bootstrap/think-conflict-resolver.d.ts.map +0 -1
  148. package/dist/src/types.d.ts.map +0 -1
  149. package/dist/src/validation.d.ts.map +0 -1
  150. package/dist/tests/_helpers/subprocess-mock.d.ts +0 -35
  151. package/dist/tests/_helpers/subprocess-mock.d.ts.map +0 -1
  152. package/dist/tests/_helpers/subprocess-mock.js +0 -136
  153. package/dist/tests/_helpers/subprocess-mock.js.map +0 -1
  154. package/dist/tests/auto-recovery.test.d.ts +0 -2
  155. package/dist/tests/auto-recovery.test.d.ts.map +0 -1
  156. package/dist/tests/auto-recovery.test.js +0 -189
  157. package/dist/tests/auto-recovery.test.js.map +0 -1
  158. package/dist/tests/bench-harness.test.d.ts +0 -2
  159. package/dist/tests/bench-harness.test.d.ts.map +0 -1
  160. package/dist/tests/bench-harness.test.js +0 -21
  161. package/dist/tests/bench-harness.test.js.map +0 -1
  162. package/dist/tests/cache-parity.test.d.ts +0 -2
  163. package/dist/tests/cache-parity.test.d.ts.map +0 -1
  164. package/dist/tests/cache-parity.test.js +0 -401
  165. package/dist/tests/cache-parity.test.js.map +0 -1
  166. package/dist/tests/command-router.test.d.ts +0 -2
  167. package/dist/tests/command-router.test.d.ts.map +0 -1
  168. package/dist/tests/command-router.test.js +0 -60
  169. package/dist/tests/command-router.test.js.map +0 -1
  170. package/dist/tests/council.test.d.ts +0 -2
  171. package/dist/tests/council.test.d.ts.map +0 -1
  172. package/dist/tests/council.test.js +0 -20
  173. package/dist/tests/council.test.js.map +0 -1
  174. package/dist/tests/drift-detector.test.d.ts +0 -2
  175. package/dist/tests/drift-detector.test.d.ts.map +0 -1
  176. package/dist/tests/drift-detector.test.js +0 -268
  177. package/dist/tests/drift-detector.test.js.map +0 -1
  178. package/dist/tests/eager-bootstrap-gating.test.d.ts +0 -9
  179. package/dist/tests/eager-bootstrap-gating.test.d.ts.map +0 -1
  180. package/dist/tests/eager-bootstrap-gating.test.js +0 -97
  181. package/dist/tests/eager-bootstrap-gating.test.js.map +0 -1
  182. package/dist/tests/engines.test.d.ts +0 -2
  183. package/dist/tests/engines.test.d.ts.map +0 -1
  184. package/dist/tests/engines.test.js +0 -8
  185. package/dist/tests/engines.test.js.map +0 -1
  186. package/dist/tests/error-formatter.test.d.ts +0 -2
  187. package/dist/tests/error-formatter.test.d.ts.map +0 -1
  188. package/dist/tests/error-formatter.test.js +0 -220
  189. package/dist/tests/error-formatter.test.js.map +0 -1
  190. package/dist/tests/health.test.d.ts +0 -2
  191. package/dist/tests/health.test.d.ts.map +0 -1
  192. package/dist/tests/health.test.js +0 -110
  193. package/dist/tests/health.test.js.map +0 -1
  194. package/dist/tests/heartbeat-workaround.test.d.ts +0 -2
  195. package/dist/tests/heartbeat-workaround.test.d.ts.map +0 -1
  196. package/dist/tests/heartbeat-workaround.test.js +0 -90
  197. package/dist/tests/heartbeat-workaround.test.js.map +0 -1
  198. package/dist/tests/index.test.d.ts +0 -2
  199. package/dist/tests/index.test.d.ts.map +0 -1
  200. package/dist/tests/index.test.js +0 -7
  201. package/dist/tests/index.test.js.map +0 -1
  202. package/dist/tests/lib-sysprompt-strip.test.d.ts +0 -2
  203. package/dist/tests/lib-sysprompt-strip.test.d.ts.map +0 -1
  204. package/dist/tests/lib-sysprompt-strip.test.js +0 -145
  205. package/dist/tests/lib-sysprompt-strip.test.js.map +0 -1
  206. package/dist/tests/listener-activation.test.d.ts +0 -2
  207. package/dist/tests/listener-activation.test.d.ts.map +0 -1
  208. package/dist/tests/listener-activation.test.js +0 -87
  209. package/dist/tests/listener-activation.test.js.map +0 -1
  210. package/dist/tests/mcp-bridge.test.d.ts +0 -2
  211. package/dist/tests/mcp-bridge.test.d.ts.map +0 -1
  212. package/dist/tests/mcp-bridge.test.js +0 -137
  213. package/dist/tests/mcp-bridge.test.js.map +0 -1
  214. package/dist/tests/openai-compat.test.d.ts +0 -2
  215. package/dist/tests/openai-compat.test.d.ts.map +0 -1
  216. package/dist/tests/openai-compat.test.js +0 -8
  217. package/dist/tests/openai-compat.test.js.map +0 -1
  218. package/dist/tests/proxy-heartbeat-integration.test.d.ts +0 -15
  219. package/dist/tests/proxy-heartbeat-integration.test.d.ts.map +0 -1
  220. package/dist/tests/proxy-heartbeat-integration.test.js +0 -122
  221. package/dist/tests/proxy-heartbeat-integration.test.js.map +0 -1
  222. package/dist/tests/proxy.test.d.ts +0 -2
  223. package/dist/tests/proxy.test.d.ts.map +0 -1
  224. package/dist/tests/proxy.test.js +0 -8
  225. package/dist/tests/proxy.test.js.map +0 -1
  226. package/dist/tests/register-guard-stacking.test.d.ts +0 -2
  227. package/dist/tests/register-guard-stacking.test.d.ts.map +0 -1
  228. package/dist/tests/register-guard-stacking.test.js +0 -61
  229. package/dist/tests/register-guard-stacking.test.js.map +0 -1
  230. package/dist/tests/register-guard.test.d.ts +0 -2
  231. package/dist/tests/register-guard.test.d.ts.map +0 -1
  232. package/dist/tests/register-guard.test.js +0 -129
  233. package/dist/tests/register-guard.test.js.map +0 -1
  234. package/dist/tests/route-flag-rollback.test.d.ts +0 -2
  235. package/dist/tests/route-flag-rollback.test.d.ts.map +0 -1
  236. package/dist/tests/route-flag-rollback.test.js +0 -70
  237. package/dist/tests/route-flag-rollback.test.js.map +0 -1
  238. package/dist/tests/route-flag.test.d.ts +0 -2
  239. package/dist/tests/route-flag.test.d.ts.map +0 -1
  240. package/dist/tests/route-flag.test.js +0 -101
  241. package/dist/tests/route-flag.test.js.map +0 -1
  242. package/dist/tests/session-bootstrap.test.d.ts +0 -2
  243. package/dist/tests/session-bootstrap.test.d.ts.map +0 -1
  244. package/dist/tests/session-bootstrap.test.js +0 -183
  245. package/dist/tests/session-bootstrap.test.js.map +0 -1
  246. package/dist/tests/session.test.d.ts +0 -2
  247. package/dist/tests/session.test.d.ts.map +0 -1
  248. package/dist/tests/session.test.js +0 -17
  249. package/dist/tests/session.test.js.map +0 -1
  250. package/dist/tests/state-machine.test.d.ts +0 -2
  251. package/dist/tests/state-machine.test.d.ts.map +0 -1
  252. package/dist/tests/state-machine.test.js +0 -133
  253. package/dist/tests/state-machine.test.js.map +0 -1
  254. package/dist/tests/streaming/cli-stream-parser.test.d.ts +0 -2
  255. package/dist/tests/streaming/cli-stream-parser.test.d.ts.map +0 -1
  256. package/dist/tests/streaming/cli-stream-parser.test.js +0 -233
  257. package/dist/tests/streaming/cli-stream-parser.test.js.map +0 -1
  258. package/dist/tests/streaming/feature-flag.test.d.ts +0 -14
  259. package/dist/tests/streaming/feature-flag.test.d.ts.map +0 -1
  260. package/dist/tests/streaming/feature-flag.test.js +0 -163
  261. package/dist/tests/streaming/feature-flag.test.js.map +0 -1
  262. package/dist/tests/streaming/no-tools-prompt.test.d.ts +0 -17
  263. package/dist/tests/streaming/no-tools-prompt.test.d.ts.map +0 -1
  264. package/dist/tests/streaming/no-tools-prompt.test.js +0 -229
  265. package/dist/tests/streaming/no-tools-prompt.test.js.map +0 -1
  266. package/dist/tests/streaming/skill-plus-tools.test.d.ts +0 -14
  267. package/dist/tests/streaming/skill-plus-tools.test.d.ts.map +0 -1
  268. package/dist/tests/streaming/skill-plus-tools.test.js +0 -234
  269. package/dist/tests/streaming/skill-plus-tools.test.js.map +0 -1
  270. package/dist/tests/streaming/sse-translator.test.d.ts +0 -2
  271. package/dist/tests/streaming/sse-translator.test.d.ts.map +0 -1
  272. package/dist/tests/streaming/sse-translator.test.js +0 -227
  273. package/dist/tests/streaming/sse-translator.test.js.map +0 -1
  274. package/dist/tests/streaming/tool-result-roundtrip.test.d.ts +0 -11
  275. package/dist/tests/streaming/tool-result-roundtrip.test.d.ts.map +0 -1
  276. package/dist/tests/streaming/tool-result-roundtrip.test.js +0 -215
  277. package/dist/tests/streaming/tool-result-roundtrip.test.js.map +0 -1
  278. package/dist/tests/streaming/tool-use-translation.test.d.ts +0 -10
  279. package/dist/tests/streaming/tool-use-translation.test.d.ts.map +0 -1
  280. package/dist/tests/streaming/tool-use-translation.test.js +0 -251
  281. package/dist/tests/streaming/tool-use-translation.test.js.map +0 -1
  282. package/dist/tests/telegram-bridge.test.d.ts +0 -2
  283. package/dist/tests/telegram-bridge.test.d.ts.map +0 -1
  284. package/dist/tests/telegram-bridge.test.js +0 -17
  285. package/dist/tests/telegram-bridge.test.js.map +0 -1
  286. package/dist/tests/telegram-injector.test.d.ts +0 -2
  287. package/dist/tests/telegram-injector.test.d.ts.map +0 -1
  288. package/dist/tests/telegram-injector.test.js +0 -74
  289. package/dist/tests/telegram-injector.test.js.map +0 -1
  290. package/dist/tests/telemetry.test.d.ts +0 -2
  291. package/dist/tests/telemetry.test.d.ts.map +0 -1
  292. package/dist/tests/telemetry.test.js +0 -405
  293. package/dist/tests/telemetry.test.js.map +0 -1
  294. package/dist/tests/test-mode.test.d.ts +0 -2
  295. package/dist/tests/test-mode.test.d.ts.map +0 -1
  296. package/dist/tests/test-mode.test.js +0 -39
  297. package/dist/tests/test-mode.test.js.map +0 -1
@@ -0,0 +1,63 @@
1
+ /**
2
+ * telegram/card-renderer.ts
3
+ *
4
+ * Telegram Bot API HTTP layer + stream-event bridge.
5
+ * Extracted from live-card.ts (lines 214–458) per Phase 5 decomposition.
6
+ *
7
+ * Exports: telegramApi, sendTg, editTg, bridgeEvent, StreamEvent, TranscriptEntry
8
+ */
9
+ export declare function telegramApi(method: string, params: Record<string, unknown>): Promise<{
10
+ ok: boolean;
11
+ result?: {
12
+ message_id?: number;
13
+ };
14
+ error_code?: number;
15
+ description?: string;
16
+ parameters?: {
17
+ retry_after?: number;
18
+ };
19
+ }>;
20
+ /** Send a Telegram message. Tries MarkdownV2 first, falls back to plain text. */
21
+ export declare function sendTg(chatId: string, text: string, threadId?: string, replyMarkup?: unknown, replyToMessageId?: number | null): Promise<{
22
+ ok: boolean;
23
+ result?: {
24
+ message_id?: number;
25
+ };
26
+ }>;
27
+ /** Edit a Telegram message. Tries MarkdownV2 first, falls back to plain text. */
28
+ export declare function editTg(chatId: string, messageId: number, text: string, replyMarkup?: unknown): Promise<{
29
+ ok: boolean;
30
+ }>;
31
+ export interface StreamEvent {
32
+ type: string;
33
+ id?: string;
34
+ tool_use_id?: string;
35
+ parent_tool_use_id?: string;
36
+ parentToolUseId?: string;
37
+ tool?: {
38
+ name?: string;
39
+ input?: Record<string, unknown>;
40
+ parent_tool_use_id?: string;
41
+ };
42
+ tool_name?: string;
43
+ input?: Record<string, unknown>;
44
+ content?: unknown;
45
+ output?: unknown;
46
+ is_error?: boolean;
47
+ error?: unknown;
48
+ result?: string;
49
+ }
50
+ export interface TranscriptEntry {
51
+ kind: 'tool_call' | 'tool_result' | 'assistant';
52
+ ts: string;
53
+ name?: string;
54
+ input?: Record<string, unknown>;
55
+ toolUseId?: string;
56
+ parentToolUseId?: string;
57
+ toolName?: string;
58
+ content?: unknown;
59
+ isError?: boolean;
60
+ text?: string;
61
+ delta?: boolean;
62
+ }
63
+ export declare function bridgeEvent(event: StreamEvent): TranscriptEntry | null;
@@ -0,0 +1,149 @@
1
+ /**
2
+ * telegram/card-renderer.ts
3
+ *
4
+ * Telegram Bot API HTTP layer + stream-event bridge.
5
+ * Extracted from live-card.ts (lines 214–458) per Phase 5 decomposition.
6
+ *
7
+ * Exports: telegramApi, sendTg, editTg, bridgeEvent, StreamEvent, TranscriptEntry
8
+ */
9
+ import { request as httpsRequest } from 'node:https';
10
+ import { _logger } from './logger.js';
11
+ import { BOT_TOKEN } from './live-card.js';
12
+ const PLUGIN_TAG = '[cc-openclaw/telegram/live-card]';
13
+ // ── Telegram Bot API ──────────────────────────────────────────────────────
14
+ export function telegramApi(method, params) {
15
+ return new Promise((resolve, reject) => {
16
+ const body = JSON.stringify(params);
17
+ const options = {
18
+ hostname: 'api.telegram.org',
19
+ path: `/bot${BOT_TOKEN}/${method}`,
20
+ method: 'POST',
21
+ headers: {
22
+ 'Content-Type': 'application/json',
23
+ 'Content-Length': Buffer.byteLength(body),
24
+ },
25
+ };
26
+ const req = httpsRequest(options, (res) => {
27
+ let data = '';
28
+ res.on('data', (chunk) => (data += chunk));
29
+ res.on('end', () => {
30
+ try {
31
+ resolve(JSON.parse(data));
32
+ }
33
+ catch {
34
+ resolve({ ok: false, description: 'JSON parse error' });
35
+ }
36
+ });
37
+ });
38
+ req.on('error', (err) => reject(err));
39
+ req.setTimeout(10_000, () => {
40
+ req.destroy(new Error('Telegram API timeout'));
41
+ });
42
+ req.write(body);
43
+ req.end();
44
+ });
45
+ }
46
+ /** Send a Telegram message. Tries MarkdownV2 first, falls back to plain text. */
47
+ export async function sendTg(chatId, text, threadId, replyMarkup, replyToMessageId) {
48
+ try {
49
+ const base = { chat_id: chatId, disable_web_page_preview: true };
50
+ if (threadId)
51
+ base.message_thread_id = Number(threadId);
52
+ if (replyMarkup)
53
+ base.reply_markup = replyMarkup;
54
+ if (replyToMessageId)
55
+ base.reply_to_message_id = Number(replyToMessageId);
56
+ const res = await telegramApi('sendMessage', {
57
+ ...base,
58
+ text,
59
+ parse_mode: 'MarkdownV2',
60
+ });
61
+ if (res.ok)
62
+ return res;
63
+ const plain = text.replace(/[_*[\]()~`>#+\-=|{}.!\\]/g, '');
64
+ return telegramApi('sendMessage', {
65
+ ...base,
66
+ text: plain || 'Session update',
67
+ });
68
+ }
69
+ catch {
70
+ return { ok: false };
71
+ }
72
+ }
73
+ /** Edit a Telegram message. Tries MarkdownV2 first, falls back to plain text. */
74
+ export async function editTg(chatId, messageId, text, replyMarkup) {
75
+ try {
76
+ const params = {
77
+ chat_id: chatId,
78
+ message_id: messageId,
79
+ text,
80
+ parse_mode: 'MarkdownV2',
81
+ disable_web_page_preview: true,
82
+ };
83
+ if (replyMarkup)
84
+ params.reply_markup = replyMarkup;
85
+ const res = await telegramApi('editMessageText', params);
86
+ if (!res.ok && (res.error_code === 429 || res.description?.includes('Too Many Requests'))) {
87
+ const retryAfterSec = res.parameters?.retry_after || 5;
88
+ const waitMs = Math.min(retryAfterSec * 1000, 30000);
89
+ _logger.warn(`${PLUGIN_TAG} editTg 429 — waiting ${waitMs}ms`);
90
+ await new Promise(r => setTimeout(r, waitMs));
91
+ const retry = await telegramApi('editMessageText', params);
92
+ if (retry.ok)
93
+ return retry;
94
+ }
95
+ if (res.ok)
96
+ return res;
97
+ const plain = text.replace(/[_*[\]()~`>#+\-=|{}.!\\]/g, '');
98
+ const fallback = {
99
+ chat_id: chatId,
100
+ message_id: messageId,
101
+ text: plain || 'Session update',
102
+ disable_web_page_preview: true,
103
+ };
104
+ if (replyMarkup)
105
+ fallback.reply_markup = replyMarkup;
106
+ return telegramApi('editMessageText', fallback);
107
+ }
108
+ catch {
109
+ return { ok: false };
110
+ }
111
+ }
112
+ export function bridgeEvent(event) {
113
+ const ts = new Date().toISOString();
114
+ if (event.type === 'tool_use') {
115
+ const parentToolUseId = event.parent_tool_use_id ||
116
+ event.tool?.parent_tool_use_id ||
117
+ event.parentToolUseId ||
118
+ '';
119
+ return {
120
+ kind: 'tool_call',
121
+ ts,
122
+ name: event.tool?.name || 'Unknown',
123
+ input: event.tool?.input || {},
124
+ toolUseId: event.id || event.tool_use_id || '',
125
+ parentToolUseId,
126
+ };
127
+ }
128
+ if (event.type === 'tool_result') {
129
+ return {
130
+ kind: 'tool_result',
131
+ ts,
132
+ toolUseId: event.tool_use_id || event.id || '',
133
+ toolName: event.tool_name || event.tool?.name || undefined,
134
+ content: event.content || event.output || '',
135
+ isError: Boolean(event.is_error || event.error),
136
+ parentToolUseId: event.parent_tool_use_id || event.parentToolUseId || '',
137
+ };
138
+ }
139
+ if (event.type === 'text') {
140
+ return {
141
+ kind: 'assistant',
142
+ ts,
143
+ text: event.result || '',
144
+ delta: true,
145
+ };
146
+ }
147
+ return null;
148
+ }
149
+ //# sourceMappingURL=card-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card-renderer.js","sourceRoot":"","sources":["../../../../src/channels/telegram/card-renderer.ts"],"names":[],"mappings":"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"}
@@ -37,8 +37,27 @@ export function register(api) {
37
37
  if (!sk)
38
38
  return;
39
39
  const entry = activeSavvyCards.get(sk);
40
- if (!entry)
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
+ }
41
59
  return;
60
+ }
42
61
  // Clean up bridge + stall timer
43
62
  if (entry._bridgeCleanup) {
44
63
  entry._bridgeCleanup();
@@ -1 +1 @@
1
- {"version":3,"file":"completion-summary.js","sourceRoot":"","sources":["../../../../src/channels/telegram/completion-summary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"completion-summary.js","sourceRoot":"","sources":["../../../../src/channels/telegram/completion-summary.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * insight-formatter — pure tip extraction from Savvy card state + TipsEngine.
3
+ *
4
+ * Extracted from tool-tracker.ts (Step 5 of Phase 5 v0.11.0 decomposition,
5
+ * PRPs/phase5-live-card-split.md).
6
+ *
7
+ * Two call sites in tool-tracker.ts duplicated the toolSummary build + getTip
8
+ * orchestration: `after_tool_call` (~L617-625) and `message_sending` (~L675-683).
9
+ * This module factors that pattern into one pure function.
10
+ *
11
+ * The TipsEngine is loaded by tool-tracker.ts (stays there — the `__require`
12
+ * indirection to the workspace path is wired up alongside the other lazy
13
+ * module loads inside register()). This file only consumes the TipsEngine
14
+ * instance via an interface, keeping it framework-agnostic and testable.
15
+ */
16
+ /** Minimal shape this module needs from a SavvyCardState — type-safe without
17
+ * importing tool-tracker's full SavvyCardState interface (avoids a cycle).
18
+ */
19
+ export interface InsightCardState {
20
+ activityLog: string[];
21
+ elapsedMs: number;
22
+ [key: string]: unknown;
23
+ }
24
+ /** Minimal shape this module needs from a TipsEngine. */
25
+ export interface TipsEngineLike {
26
+ getTip(ctx: unknown): unknown;
27
+ }
28
+ /**
29
+ * Build a tool-frequency summary from a SavvyCardState's activityLog and
30
+ * call TipsEngine.getTip. Returns whatever the engine returns (typically a
31
+ * `{ emoji, text }` shape or null; consumers pass it to `state.setTip(tip)`).
32
+ *
33
+ * Pure: no I/O, no logging, no Telegram side effects. Safe to unit-test
34
+ * with a TipsEngine double.
35
+ */
36
+ export declare function extractInsightTip(state: InsightCardState, tipsEngine: TipsEngineLike): unknown;
@@ -0,0 +1,36 @@
1
+ /**
2
+ * insight-formatter — pure tip extraction from Savvy card state + TipsEngine.
3
+ *
4
+ * Extracted from tool-tracker.ts (Step 5 of Phase 5 v0.11.0 decomposition,
5
+ * PRPs/phase5-live-card-split.md).
6
+ *
7
+ * Two call sites in tool-tracker.ts duplicated the toolSummary build + getTip
8
+ * orchestration: `after_tool_call` (~L617-625) and `message_sending` (~L675-683).
9
+ * This module factors that pattern into one pure function.
10
+ *
11
+ * The TipsEngine is loaded by tool-tracker.ts (stays there — the `__require`
12
+ * indirection to the workspace path is wired up alongside the other lazy
13
+ * module loads inside register()). This file only consumes the TipsEngine
14
+ * instance via an interface, keeping it framework-agnostic and testable.
15
+ */
16
+ /**
17
+ * Build a tool-frequency summary from a SavvyCardState's activityLog and
18
+ * call TipsEngine.getTip. Returns whatever the engine returns (typically a
19
+ * `{ emoji, text }` shape or null; consumers pass it to `state.setTip(tip)`).
20
+ *
21
+ * Pure: no I/O, no logging, no Telegram side effects. Safe to unit-test
22
+ * with a TipsEngine double.
23
+ */
24
+ export function extractInsightTip(state, tipsEngine) {
25
+ const toolSummary = {};
26
+ for (const t of state.activityLog) {
27
+ const key = t === 'exec' ? 'execute' : t;
28
+ toolSummary[key] = (toolSummary[key] || 0) + 1;
29
+ }
30
+ return tipsEngine.getTip({
31
+ ...state,
32
+ toolSummary,
33
+ elapsedSec: Math.round(state.elapsedMs / 1000),
34
+ });
35
+ }
36
+ //# sourceMappingURL=insight-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insight-formatter.js","sourceRoot":"","sources":["../../../../src/channels/telegram/insight-formatter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAgBH;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAuB,EACvB,UAA0B;IAE1B,MAAM,WAAW,GAA2B,EAAE,CAAC;IAC/C,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,UAAU,CAAC,MAAM,CAAC;QACvB,GAAG,KAAK;QACR,WAAW;QACX,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;KAC/C,CAAC,CAAC;AACL,CAAC"}
@@ -10,6 +10,7 @@
10
10
  *
11
11
  * Source lines: 1–930 of ux-bridge.js
12
12
  */
13
+ import { TelegramMessageQueue } from './throttle-controller.js';
13
14
  export interface PluginApi {
14
15
  on(event: string, handler: (...args: unknown[]) => unknown | Promise<unknown>): void;
15
16
  logger?: Console;
@@ -69,17 +70,7 @@ export declare const delegatedCardStore: Map<string, {
69
70
  threadId: string | undefined;
70
71
  }>;
71
72
  export declare let latestQuotaState: QuotaState | null;
72
- /**
73
- * Shared cross-handler dedup. Any handler dispatching to Telegram should
74
- * (a) mark via `markDispatchedToTelegram(chatId, payload)` and (b) check via
75
- * `wasDispatchedToTelegram(chatId, payload)` to short-circuit duplicates.
76
- *
77
- * Used to bridge the gap between cc-openclaw's patched SessionManager.send
78
- * path and the gateway's native ACP message_sending path — both can fire
79
- * for the same agent reply, producing the doubled-greeting on /new.
80
- */
81
- export declare function markDispatchedToTelegram(chatId: string, payload: unknown): void;
82
- export declare function wasDispatchedToTelegram(chatId: string, payload: unknown): boolean;
73
+ export { markDispatchedToTelegram, wasDispatchedToTelegram } from './throttle-controller.js';
83
74
  export interface QuotaState {
84
75
  sevenDay?: {
85
76
  usedPercent?: number;
@@ -140,84 +131,11 @@ interface CardState {
140
131
  startedAt?: number;
141
132
  [key: string]: unknown;
142
133
  }
143
- export declare function telegramApi(method: string, params: Record<string, unknown>): Promise<{
144
- ok: boolean;
145
- result?: {
146
- message_id?: number;
147
- };
148
- error_code?: number;
149
- description?: string;
150
- parameters?: {
151
- retry_after?: number;
152
- };
153
- }>;
154
- /** Send a Telegram message. Tries MarkdownV2 first, falls back to plain text. */
155
- export declare function sendTg(chatId: string, text: string, threadId?: string, replyMarkup?: unknown, replyToMessageId?: number | null): Promise<{
156
- ok: boolean;
157
- result?: {
158
- message_id?: number;
159
- };
160
- }>;
161
- /** Edit a Telegram message. Tries MarkdownV2 first, falls back to plain text. */
162
- export declare function editTg(chatId: string, messageId: number, text: string, replyMarkup?: unknown): Promise<{
163
- ok: boolean;
164
- }>;
165
- export declare class TelegramMessageQueue {
166
- chatId: string;
167
- threadId: string | undefined;
168
- cardMessageId: number | null;
169
- _replyToMessageId: number | null;
170
- /**
171
- * Sticky flag — set true the first time `sendMessage()` is called for this
172
- * queue instance. Lets the fast-turn fallback in `applyPatch()` detect that
173
- * a new message was already dispatched by the pipeline's `onNewMessage`
174
- * callback and avoid double-firing. Bug context: 2026-04-29 doubled-greeting
175
- * on `/new` was caused by both the pipeline AND the fallback emitting the
176
- * same model output as separate Telegram messages.
177
- */
178
- messageSent: boolean;
179
- private _cardChain;
180
- private _msgChain;
181
- constructor(chatId: string, threadId: string | undefined, existingCardMessageId: number | null, replyToMessageId?: number | null);
182
- /** Send or edit the session card. */
183
- updateCard(text: string, replyMarkup?: unknown): void;
184
- /** Send a standalone message (error alert, completion summary). */
185
- sendMessage(text: string): void;
186
- }
187
- interface StreamEvent {
188
- type: string;
189
- id?: string;
190
- tool_use_id?: string;
191
- parent_tool_use_id?: string;
192
- parentToolUseId?: string;
193
- tool?: {
194
- name?: string;
195
- input?: Record<string, unknown>;
196
- parent_tool_use_id?: string;
197
- };
198
- tool_name?: string;
199
- input?: Record<string, unknown>;
200
- content?: unknown;
201
- output?: unknown;
202
- is_error?: boolean;
203
- error?: unknown;
204
- result?: string;
205
- }
206
- interface TranscriptEntry {
207
- kind: 'tool_call' | 'tool_result' | 'assistant';
208
- ts: string;
209
- name?: string;
210
- input?: Record<string, unknown>;
211
- toolUseId?: string;
212
- parentToolUseId?: string;
213
- toolName?: string;
214
- content?: unknown;
215
- isError?: boolean;
216
- text?: string;
217
- delta?: boolean;
218
- }
219
- export declare function bridgeEvent(event: StreamEvent): TranscriptEntry | null;
220
- export declare let _logger: Console;
134
+ export { telegramApi, sendTg, editTg } from './card-renderer.js';
135
+ export { TelegramMessageQueue } from './throttle-controller.js';
136
+ export { bridgeEvent } from './card-renderer.js';
137
+ export type { StreamEvent, TranscriptEntry } from './card-renderer.js';
138
+ export { _logger, setLogger } from './logger.js';
221
139
  export declare function loadUxModule(): Record<string, unknown>;
222
140
  export declare function applyPatch(): Promise<void>;
223
141
  export declare function cleanStaleStatusFiles(): void;
@@ -226,4 +144,3 @@ export declare function cleanStaleStatusFiles(): void;
226
144
  * Idempotent — subsequent calls are no-ops.
227
145
  */
228
146
  export declare function register(api: PluginApi): void;
229
- export {};