@a1hvdy/cc-openclaw 0.3.2

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 (491) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +207 -0
  3. package/configs/.gitkeep +0 -0
  4. package/configs/council-reviewer-prompt.md +82 -0
  5. package/configs/council-system-prompt.md +141 -0
  6. package/dist/scripts/bench/ab-harness.d.ts +58 -0
  7. package/dist/scripts/bench/ab-harness.d.ts.map +1 -0
  8. package/dist/scripts/bench/ab-harness.js +78 -0
  9. package/dist/scripts/bench/ab-harness.js.map +1 -0
  10. package/dist/src/channels/adapter.d.ts +103 -0
  11. package/dist/src/channels/adapter.d.ts.map +1 -0
  12. package/dist/src/channels/adapter.js +38 -0
  13. package/dist/src/channels/adapter.js.map +1 -0
  14. package/dist/src/channels/telegram/completion-summary.d.ts +22 -0
  15. package/dist/src/channels/telegram/completion-summary.d.ts.map +1 -0
  16. package/dist/src/channels/telegram/completion-summary.js +186 -0
  17. package/dist/src/channels/telegram/completion-summary.js.map +1 -0
  18. package/dist/src/channels/telegram/error-renderer.d.ts +30 -0
  19. package/dist/src/channels/telegram/error-renderer.d.ts.map +1 -0
  20. package/dist/src/channels/telegram/error-renderer.js +133 -0
  21. package/dist/src/channels/telegram/error-renderer.js.map +1 -0
  22. package/dist/src/channels/telegram/event-reducer.d.ts +34 -0
  23. package/dist/src/channels/telegram/event-reducer.d.ts.map +1 -0
  24. package/dist/src/channels/telegram/event-reducer.js +579 -0
  25. package/dist/src/channels/telegram/event-reducer.js.map +1 -0
  26. package/dist/src/channels/telegram/index.d.ts +14 -0
  27. package/dist/src/channels/telegram/index.d.ts.map +1 -0
  28. package/dist/src/channels/telegram/index.js +14 -0
  29. package/dist/src/channels/telegram/index.js.map +1 -0
  30. package/dist/src/channels/telegram/injector.d.ts +54 -0
  31. package/dist/src/channels/telegram/injector.d.ts.map +1 -0
  32. package/dist/src/channels/telegram/injector.js +200 -0
  33. package/dist/src/channels/telegram/injector.js.map +1 -0
  34. package/dist/src/channels/telegram/live-card.d.ts +230 -0
  35. package/dist/src/channels/telegram/live-card.d.ts.map +1 -0
  36. package/dist/src/channels/telegram/live-card.js +916 -0
  37. package/dist/src/channels/telegram/live-card.js.map +1 -0
  38. package/dist/src/channels/telegram/state-machine.d.ts +23 -0
  39. package/dist/src/channels/telegram/state-machine.d.ts.map +1 -0
  40. package/dist/src/channels/telegram/state-machine.js +72 -0
  41. package/dist/src/channels/telegram/state-machine.js.map +1 -0
  42. package/dist/src/channels/telegram/tool-tracker.d.ts +147 -0
  43. package/dist/src/channels/telegram/tool-tracker.d.ts.map +1 -0
  44. package/dist/src/channels/telegram/tool-tracker.js +520 -0
  45. package/dist/src/channels/telegram/tool-tracker.js.map +1 -0
  46. package/dist/src/circuit-breaker.d.ts +22 -0
  47. package/dist/src/circuit-breaker.d.ts.map +1 -0
  48. package/dist/src/circuit-breaker.js +47 -0
  49. package/dist/src/circuit-breaker.js.map +1 -0
  50. package/dist/src/command-router/cc-handler.d.ts +67 -0
  51. package/dist/src/command-router/cc-handler.d.ts.map +1 -0
  52. package/dist/src/command-router/cc-handler.js +980 -0
  53. package/dist/src/command-router/cc-handler.js.map +1 -0
  54. package/dist/src/command-router/index.d.ts +3 -0
  55. package/dist/src/command-router/index.d.ts.map +1 -0
  56. package/dist/src/command-router/index.js +2 -0
  57. package/dist/src/command-router/index.js.map +1 -0
  58. package/dist/src/constants.d.ts +132 -0
  59. package/dist/src/constants.d.ts.map +1 -0
  60. package/dist/src/constants.js +140 -0
  61. package/dist/src/constants.js.map +1 -0
  62. package/dist/src/council/consensus.d.ts +21 -0
  63. package/dist/src/council/consensus.d.ts.map +1 -0
  64. package/dist/src/council/consensus.js +52 -0
  65. package/dist/src/council/consensus.js.map +1 -0
  66. package/dist/src/council/council.d.ts +68 -0
  67. package/dist/src/council/council.d.ts.map +1 -0
  68. package/dist/src/council/council.js +914 -0
  69. package/dist/src/council/council.js.map +1 -0
  70. package/dist/src/council/index.d.ts +3 -0
  71. package/dist/src/council/index.d.ts.map +1 -0
  72. package/dist/src/council/index.js +3 -0
  73. package/dist/src/council/index.js.map +1 -0
  74. package/dist/src/engines/base-oneshot-session.d.ts +88 -0
  75. package/dist/src/engines/base-oneshot-session.d.ts.map +1 -0
  76. package/dist/src/engines/base-oneshot-session.js +228 -0
  77. package/dist/src/engines/base-oneshot-session.js.map +1 -0
  78. package/dist/src/engines/index.d.ts +7 -0
  79. package/dist/src/engines/index.d.ts.map +1 -0
  80. package/dist/src/engines/index.js +7 -0
  81. package/dist/src/engines/index.js.map +1 -0
  82. package/dist/src/engines/persistent-codex-session.d.ts +17 -0
  83. package/dist/src/engines/persistent-codex-session.d.ts.map +1 -0
  84. package/dist/src/engines/persistent-codex-session.js +106 -0
  85. package/dist/src/engines/persistent-codex-session.js.map +1 -0
  86. package/dist/src/engines/persistent-cursor-session.d.ts +22 -0
  87. package/dist/src/engines/persistent-cursor-session.d.ts.map +1 -0
  88. package/dist/src/engines/persistent-cursor-session.js +242 -0
  89. package/dist/src/engines/persistent-cursor-session.js.map +1 -0
  90. package/dist/src/engines/persistent-custom-session.d.ts +79 -0
  91. package/dist/src/engines/persistent-custom-session.d.ts.map +1 -0
  92. package/dist/src/engines/persistent-custom-session.js +939 -0
  93. package/dist/src/engines/persistent-custom-session.js.map +1 -0
  94. package/dist/src/engines/persistent-gemini-session.d.ts +22 -0
  95. package/dist/src/engines/persistent-gemini-session.d.ts.map +1 -0
  96. package/dist/src/engines/persistent-gemini-session.js +217 -0
  97. package/dist/src/engines/persistent-gemini-session.js.map +1 -0
  98. package/dist/src/engines/persistent-session.d.ts +77 -0
  99. package/dist/src/engines/persistent-session.d.ts.map +1 -0
  100. package/dist/src/engines/persistent-session.js +730 -0
  101. package/dist/src/engines/persistent-session.js.map +1 -0
  102. package/dist/src/health/handler.d.ts +40 -0
  103. package/dist/src/health/handler.d.ts.map +1 -0
  104. package/dist/src/health/handler.js +70 -0
  105. package/dist/src/health/handler.js.map +1 -0
  106. package/dist/src/health/index.d.ts +2 -0
  107. package/dist/src/health/index.d.ts.map +1 -0
  108. package/dist/src/health/index.js +2 -0
  109. package/dist/src/health/index.js.map +1 -0
  110. package/dist/src/index.d.ts +49 -0
  111. package/dist/src/index.d.ts.map +1 -0
  112. package/dist/src/index.js +84 -0
  113. package/dist/src/index.js.map +1 -0
  114. package/dist/src/lib/auto-recovery.d.ts +45 -0
  115. package/dist/src/lib/auto-recovery.d.ts.map +1 -0
  116. package/dist/src/lib/auto-recovery.js +217 -0
  117. package/dist/src/lib/auto-recovery.js.map +1 -0
  118. package/dist/src/lib/cache-parity.d.ts +39 -0
  119. package/dist/src/lib/cache-parity.d.ts.map +1 -0
  120. package/dist/src/lib/cache-parity.js +92 -0
  121. package/dist/src/lib/cache-parity.js.map +1 -0
  122. package/dist/src/lib/circuit-breaker.d.ts +22 -0
  123. package/dist/src/lib/circuit-breaker.d.ts.map +1 -0
  124. package/dist/src/lib/circuit-breaker.js +47 -0
  125. package/dist/src/lib/circuit-breaker.js.map +1 -0
  126. package/dist/src/lib/config.d.ts +74 -0
  127. package/dist/src/lib/config.d.ts.map +1 -0
  128. package/dist/src/lib/config.js +244 -0
  129. package/dist/src/lib/config.js.map +1 -0
  130. package/dist/src/lib/drift-detector.d.ts +47 -0
  131. package/dist/src/lib/drift-detector.d.ts.map +1 -0
  132. package/dist/src/lib/drift-detector.js +192 -0
  133. package/dist/src/lib/drift-detector.js.map +1 -0
  134. package/dist/src/lib/error-formatter.d.ts +78 -0
  135. package/dist/src/lib/error-formatter.d.ts.map +1 -0
  136. package/dist/src/lib/error-formatter.js +149 -0
  137. package/dist/src/lib/error-formatter.js.map +1 -0
  138. package/dist/src/lib/heartbeat-workaround.d.ts +45 -0
  139. package/dist/src/lib/heartbeat-workaround.d.ts.map +1 -0
  140. package/dist/src/lib/heartbeat-workaround.js +61 -0
  141. package/dist/src/lib/heartbeat-workaround.js.map +1 -0
  142. package/dist/src/lib/index.d.ts +8 -0
  143. package/dist/src/lib/index.d.ts.map +1 -0
  144. package/dist/src/lib/index.js +8 -0
  145. package/dist/src/lib/index.js.map +1 -0
  146. package/dist/src/lib/register-guard.d.ts +49 -0
  147. package/dist/src/lib/register-guard.d.ts.map +1 -0
  148. package/dist/src/lib/register-guard.js +73 -0
  149. package/dist/src/lib/register-guard.js.map +1 -0
  150. package/dist/src/lib/route-flag.d.ts +50 -0
  151. package/dist/src/lib/route-flag.d.ts.map +1 -0
  152. package/dist/src/lib/route-flag.js +52 -0
  153. package/dist/src/lib/route-flag.js.map +1 -0
  154. package/dist/src/lib/sysprompt-strip.d.ts +54 -0
  155. package/dist/src/lib/sysprompt-strip.d.ts.map +1 -0
  156. package/dist/src/lib/sysprompt-strip.js +75 -0
  157. package/dist/src/lib/sysprompt-strip.js.map +1 -0
  158. package/dist/src/lib/telemetry.d.ts +39 -0
  159. package/dist/src/lib/telemetry.d.ts.map +1 -0
  160. package/dist/src/lib/telemetry.js +73 -0
  161. package/dist/src/lib/telemetry.js.map +1 -0
  162. package/dist/src/lib/test-mode.d.ts +27 -0
  163. package/dist/src/lib/test-mode.d.ts.map +1 -0
  164. package/dist/src/lib/test-mode.js +38 -0
  165. package/dist/src/lib/test-mode.js.map +1 -0
  166. package/dist/src/lib/vendor-paths.d.ts +15 -0
  167. package/dist/src/lib/vendor-paths.d.ts.map +1 -0
  168. package/dist/src/lib/vendor-paths.js +32 -0
  169. package/dist/src/lib/vendor-paths.js.map +1 -0
  170. package/dist/src/logger.d.ts +17 -0
  171. package/dist/src/logger.d.ts.map +1 -0
  172. package/dist/src/logger.js +46 -0
  173. package/dist/src/logger.js.map +1 -0
  174. package/dist/src/mcp/bridge.d.ts +22 -0
  175. package/dist/src/mcp/bridge.d.ts.map +1 -0
  176. package/dist/src/mcp/bridge.js +78 -0
  177. package/dist/src/mcp/bridge.js.map +1 -0
  178. package/dist/src/mcp/index.d.ts +3 -0
  179. package/dist/src/mcp/index.d.ts.map +1 -0
  180. package/dist/src/mcp/index.js +2 -0
  181. package/dist/src/mcp/index.js.map +1 -0
  182. package/dist/src/models.d.ts +70 -0
  183. package/dist/src/models.d.ts.map +1 -0
  184. package/dist/src/models.js +289 -0
  185. package/dist/src/models.js.map +1 -0
  186. package/dist/src/openai-compat/cli-stream-parser.d.ts +135 -0
  187. package/dist/src/openai-compat/cli-stream-parser.d.ts.map +1 -0
  188. package/dist/src/openai-compat/cli-stream-parser.js +195 -0
  189. package/dist/src/openai-compat/cli-stream-parser.js.map +1 -0
  190. package/dist/src/openai-compat/index.d.ts +2 -0
  191. package/dist/src/openai-compat/index.d.ts.map +1 -0
  192. package/dist/src/openai-compat/index.js +2 -0
  193. package/dist/src/openai-compat/index.js.map +1 -0
  194. package/dist/src/openai-compat/openai-compat.d.ts +281 -0
  195. package/dist/src/openai-compat/openai-compat.d.ts.map +1 -0
  196. package/dist/src/openai-compat/openai-compat.js +939 -0
  197. package/dist/src/openai-compat/openai-compat.js.map +1 -0
  198. package/dist/src/openai-compat/skill-resolver.d.ts +36 -0
  199. package/dist/src/openai-compat/skill-resolver.d.ts.map +1 -0
  200. package/dist/src/openai-compat/skill-resolver.js +134 -0
  201. package/dist/src/openai-compat/skill-resolver.js.map +1 -0
  202. package/dist/src/openai-compat/sse-translator.d.ts +32 -0
  203. package/dist/src/openai-compat/sse-translator.d.ts.map +1 -0
  204. package/dist/src/openai-compat/sse-translator.js +155 -0
  205. package/dist/src/openai-compat/sse-translator.js.map +1 -0
  206. package/dist/src/proxy/anthropic-adapter.d.ts +137 -0
  207. package/dist/src/proxy/anthropic-adapter.d.ts.map +1 -0
  208. package/dist/src/proxy/anthropic-adapter.js +392 -0
  209. package/dist/src/proxy/anthropic-adapter.js.map +1 -0
  210. package/dist/src/proxy/handler.d.ts +40 -0
  211. package/dist/src/proxy/handler.d.ts.map +1 -0
  212. package/dist/src/proxy/handler.js +378 -0
  213. package/dist/src/proxy/handler.js.map +1 -0
  214. package/dist/src/proxy/index.d.ts +5 -0
  215. package/dist/src/proxy/index.d.ts.map +1 -0
  216. package/dist/src/proxy/index.js +5 -0
  217. package/dist/src/proxy/index.js.map +1 -0
  218. package/dist/src/proxy/schema-cleaner.d.ts +12 -0
  219. package/dist/src/proxy/schema-cleaner.d.ts.map +1 -0
  220. package/dist/src/proxy/schema-cleaner.js +34 -0
  221. package/dist/src/proxy/schema-cleaner.js.map +1 -0
  222. package/dist/src/proxy/thought-cache.d.ts +20 -0
  223. package/dist/src/proxy/thought-cache.d.ts.map +1 -0
  224. package/dist/src/proxy/thought-cache.js +53 -0
  225. package/dist/src/proxy/thought-cache.js.map +1 -0
  226. package/dist/src/session/embedded-server.d.ts +26 -0
  227. package/dist/src/session/embedded-server.d.ts.map +1 -0
  228. package/dist/src/session/embedded-server.js +367 -0
  229. package/dist/src/session/embedded-server.js.map +1 -0
  230. package/dist/src/session/inbox-manager.d.ts +39 -0
  231. package/dist/src/session/inbox-manager.d.ts.map +1 -0
  232. package/dist/src/session/inbox-manager.js +111 -0
  233. package/dist/src/session/inbox-manager.js.map +1 -0
  234. package/dist/src/session/index.d.ts +4 -0
  235. package/dist/src/session/index.d.ts.map +1 -0
  236. package/dist/src/session/index.js +4 -0
  237. package/dist/src/session/index.js.map +1 -0
  238. package/dist/src/session/session-manager.d.ts +212 -0
  239. package/dist/src/session/session-manager.d.ts.map +1 -0
  240. package/dist/src/session/session-manager.js +1351 -0
  241. package/dist/src/session/session-manager.js.map +1 -0
  242. package/dist/src/session-bootstrap/cwd-patch.d.ts +51 -0
  243. package/dist/src/session-bootstrap/cwd-patch.d.ts.map +1 -0
  244. package/dist/src/session-bootstrap/cwd-patch.js +955 -0
  245. package/dist/src/session-bootstrap/cwd-patch.js.map +1 -0
  246. package/dist/src/session-bootstrap/index.d.ts +4 -0
  247. package/dist/src/session-bootstrap/index.d.ts.map +1 -0
  248. package/dist/src/session-bootstrap/index.js +4 -0
  249. package/dist/src/session-bootstrap/index.js.map +1 -0
  250. package/dist/src/session-bootstrap/sysprompt-strip.d.ts +26 -0
  251. package/dist/src/session-bootstrap/sysprompt-strip.d.ts.map +1 -0
  252. package/dist/src/session-bootstrap/sysprompt-strip.js +57 -0
  253. package/dist/src/session-bootstrap/sysprompt-strip.js.map +1 -0
  254. package/dist/src/session-bootstrap/think-conflict-resolver.d.ts +33 -0
  255. package/dist/src/session-bootstrap/think-conflict-resolver.d.ts.map +1 -0
  256. package/dist/src/session-bootstrap/think-conflict-resolver.js +234 -0
  257. package/dist/src/session-bootstrap/think-conflict-resolver.js.map +1 -0
  258. package/dist/src/types.d.ts +489 -0
  259. package/dist/src/types.d.ts.map +1 -0
  260. package/dist/src/types.js +8 -0
  261. package/dist/src/types.js.map +1 -0
  262. package/dist/src/validation.d.ts +32 -0
  263. package/dist/src/validation.d.ts.map +1 -0
  264. package/dist/src/validation.js +104 -0
  265. package/dist/src/validation.js.map +1 -0
  266. package/dist/tests/_helpers/subprocess-mock.d.ts +35 -0
  267. package/dist/tests/_helpers/subprocess-mock.d.ts.map +1 -0
  268. package/dist/tests/_helpers/subprocess-mock.js +136 -0
  269. package/dist/tests/_helpers/subprocess-mock.js.map +1 -0
  270. package/dist/tests/auto-recovery.test.d.ts +2 -0
  271. package/dist/tests/auto-recovery.test.d.ts.map +1 -0
  272. package/dist/tests/auto-recovery.test.js +189 -0
  273. package/dist/tests/auto-recovery.test.js.map +1 -0
  274. package/dist/tests/bench-harness.test.d.ts +2 -0
  275. package/dist/tests/bench-harness.test.d.ts.map +1 -0
  276. package/dist/tests/bench-harness.test.js +21 -0
  277. package/dist/tests/bench-harness.test.js.map +1 -0
  278. package/dist/tests/cache-parity.test.d.ts +2 -0
  279. package/dist/tests/cache-parity.test.d.ts.map +1 -0
  280. package/dist/tests/cache-parity.test.js +401 -0
  281. package/dist/tests/cache-parity.test.js.map +1 -0
  282. package/dist/tests/command-router.test.d.ts +2 -0
  283. package/dist/tests/command-router.test.d.ts.map +1 -0
  284. package/dist/tests/command-router.test.js +60 -0
  285. package/dist/tests/command-router.test.js.map +1 -0
  286. package/dist/tests/council.test.d.ts +2 -0
  287. package/dist/tests/council.test.d.ts.map +1 -0
  288. package/dist/tests/council.test.js +20 -0
  289. package/dist/tests/council.test.js.map +1 -0
  290. package/dist/tests/drift-detector.test.d.ts +2 -0
  291. package/dist/tests/drift-detector.test.d.ts.map +1 -0
  292. package/dist/tests/drift-detector.test.js +268 -0
  293. package/dist/tests/drift-detector.test.js.map +1 -0
  294. package/dist/tests/eager-bootstrap-gating.test.d.ts +9 -0
  295. package/dist/tests/eager-bootstrap-gating.test.d.ts.map +1 -0
  296. package/dist/tests/eager-bootstrap-gating.test.js +97 -0
  297. package/dist/tests/eager-bootstrap-gating.test.js.map +1 -0
  298. package/dist/tests/engines.test.d.ts +2 -0
  299. package/dist/tests/engines.test.d.ts.map +1 -0
  300. package/dist/tests/engines.test.js +8 -0
  301. package/dist/tests/engines.test.js.map +1 -0
  302. package/dist/tests/error-formatter.test.d.ts +2 -0
  303. package/dist/tests/error-formatter.test.d.ts.map +1 -0
  304. package/dist/tests/error-formatter.test.js +220 -0
  305. package/dist/tests/error-formatter.test.js.map +1 -0
  306. package/dist/tests/health.test.d.ts +2 -0
  307. package/dist/tests/health.test.d.ts.map +1 -0
  308. package/dist/tests/health.test.js +110 -0
  309. package/dist/tests/health.test.js.map +1 -0
  310. package/dist/tests/heartbeat-workaround.test.d.ts +2 -0
  311. package/dist/tests/heartbeat-workaround.test.d.ts.map +1 -0
  312. package/dist/tests/heartbeat-workaround.test.js +90 -0
  313. package/dist/tests/heartbeat-workaround.test.js.map +1 -0
  314. package/dist/tests/index.test.d.ts +2 -0
  315. package/dist/tests/index.test.d.ts.map +1 -0
  316. package/dist/tests/index.test.js +7 -0
  317. package/dist/tests/index.test.js.map +1 -0
  318. package/dist/tests/lib-sysprompt-strip.test.d.ts +2 -0
  319. package/dist/tests/lib-sysprompt-strip.test.d.ts.map +1 -0
  320. package/dist/tests/lib-sysprompt-strip.test.js +145 -0
  321. package/dist/tests/lib-sysprompt-strip.test.js.map +1 -0
  322. package/dist/tests/listener-activation.test.d.ts +2 -0
  323. package/dist/tests/listener-activation.test.d.ts.map +1 -0
  324. package/dist/tests/listener-activation.test.js +87 -0
  325. package/dist/tests/listener-activation.test.js.map +1 -0
  326. package/dist/tests/mcp-bridge.test.d.ts +2 -0
  327. package/dist/tests/mcp-bridge.test.d.ts.map +1 -0
  328. package/dist/tests/mcp-bridge.test.js +137 -0
  329. package/dist/tests/mcp-bridge.test.js.map +1 -0
  330. package/dist/tests/openai-compat.test.d.ts +2 -0
  331. package/dist/tests/openai-compat.test.d.ts.map +1 -0
  332. package/dist/tests/openai-compat.test.js +8 -0
  333. package/dist/tests/openai-compat.test.js.map +1 -0
  334. package/dist/tests/proxy-heartbeat-integration.test.d.ts +15 -0
  335. package/dist/tests/proxy-heartbeat-integration.test.d.ts.map +1 -0
  336. package/dist/tests/proxy-heartbeat-integration.test.js +122 -0
  337. package/dist/tests/proxy-heartbeat-integration.test.js.map +1 -0
  338. package/dist/tests/proxy.test.d.ts +2 -0
  339. package/dist/tests/proxy.test.d.ts.map +1 -0
  340. package/dist/tests/proxy.test.js +8 -0
  341. package/dist/tests/proxy.test.js.map +1 -0
  342. package/dist/tests/register-guard-stacking.test.d.ts +2 -0
  343. package/dist/tests/register-guard-stacking.test.d.ts.map +1 -0
  344. package/dist/tests/register-guard-stacking.test.js +61 -0
  345. package/dist/tests/register-guard-stacking.test.js.map +1 -0
  346. package/dist/tests/register-guard.test.d.ts +2 -0
  347. package/dist/tests/register-guard.test.d.ts.map +1 -0
  348. package/dist/tests/register-guard.test.js +129 -0
  349. package/dist/tests/register-guard.test.js.map +1 -0
  350. package/dist/tests/route-flag-rollback.test.d.ts +2 -0
  351. package/dist/tests/route-flag-rollback.test.d.ts.map +1 -0
  352. package/dist/tests/route-flag-rollback.test.js +70 -0
  353. package/dist/tests/route-flag-rollback.test.js.map +1 -0
  354. package/dist/tests/route-flag.test.d.ts +2 -0
  355. package/dist/tests/route-flag.test.d.ts.map +1 -0
  356. package/dist/tests/route-flag.test.js +101 -0
  357. package/dist/tests/route-flag.test.js.map +1 -0
  358. package/dist/tests/session-bootstrap.test.d.ts +2 -0
  359. package/dist/tests/session-bootstrap.test.d.ts.map +1 -0
  360. package/dist/tests/session-bootstrap.test.js +183 -0
  361. package/dist/tests/session-bootstrap.test.js.map +1 -0
  362. package/dist/tests/session.test.d.ts +2 -0
  363. package/dist/tests/session.test.d.ts.map +1 -0
  364. package/dist/tests/session.test.js +17 -0
  365. package/dist/tests/session.test.js.map +1 -0
  366. package/dist/tests/state-machine.test.d.ts +2 -0
  367. package/dist/tests/state-machine.test.d.ts.map +1 -0
  368. package/dist/tests/state-machine.test.js +133 -0
  369. package/dist/tests/state-machine.test.js.map +1 -0
  370. package/dist/tests/streaming/cli-stream-parser.test.d.ts +2 -0
  371. package/dist/tests/streaming/cli-stream-parser.test.d.ts.map +1 -0
  372. package/dist/tests/streaming/cli-stream-parser.test.js +233 -0
  373. package/dist/tests/streaming/cli-stream-parser.test.js.map +1 -0
  374. package/dist/tests/streaming/feature-flag.test.d.ts +14 -0
  375. package/dist/tests/streaming/feature-flag.test.d.ts.map +1 -0
  376. package/dist/tests/streaming/feature-flag.test.js +163 -0
  377. package/dist/tests/streaming/feature-flag.test.js.map +1 -0
  378. package/dist/tests/streaming/no-tools-prompt.test.d.ts +17 -0
  379. package/dist/tests/streaming/no-tools-prompt.test.d.ts.map +1 -0
  380. package/dist/tests/streaming/no-tools-prompt.test.js +229 -0
  381. package/dist/tests/streaming/no-tools-prompt.test.js.map +1 -0
  382. package/dist/tests/streaming/skill-plus-tools.test.d.ts +14 -0
  383. package/dist/tests/streaming/skill-plus-tools.test.d.ts.map +1 -0
  384. package/dist/tests/streaming/skill-plus-tools.test.js +234 -0
  385. package/dist/tests/streaming/skill-plus-tools.test.js.map +1 -0
  386. package/dist/tests/streaming/sse-translator.test.d.ts +2 -0
  387. package/dist/tests/streaming/sse-translator.test.d.ts.map +1 -0
  388. package/dist/tests/streaming/sse-translator.test.js +227 -0
  389. package/dist/tests/streaming/sse-translator.test.js.map +1 -0
  390. package/dist/tests/streaming/tool-result-roundtrip.test.d.ts +11 -0
  391. package/dist/tests/streaming/tool-result-roundtrip.test.d.ts.map +1 -0
  392. package/dist/tests/streaming/tool-result-roundtrip.test.js +215 -0
  393. package/dist/tests/streaming/tool-result-roundtrip.test.js.map +1 -0
  394. package/dist/tests/streaming/tool-use-translation.test.d.ts +10 -0
  395. package/dist/tests/streaming/tool-use-translation.test.d.ts.map +1 -0
  396. package/dist/tests/streaming/tool-use-translation.test.js +251 -0
  397. package/dist/tests/streaming/tool-use-translation.test.js.map +1 -0
  398. package/dist/tests/telegram-bridge.test.d.ts +2 -0
  399. package/dist/tests/telegram-bridge.test.d.ts.map +1 -0
  400. package/dist/tests/telegram-bridge.test.js +17 -0
  401. package/dist/tests/telegram-bridge.test.js.map +1 -0
  402. package/dist/tests/telegram-injector.test.d.ts +2 -0
  403. package/dist/tests/telegram-injector.test.d.ts.map +1 -0
  404. package/dist/tests/telegram-injector.test.js +74 -0
  405. package/dist/tests/telegram-injector.test.js.map +1 -0
  406. package/dist/tests/telemetry.test.d.ts +2 -0
  407. package/dist/tests/telemetry.test.d.ts.map +1 -0
  408. package/dist/tests/telemetry.test.js +405 -0
  409. package/dist/tests/telemetry.test.js.map +1 -0
  410. package/dist/tests/test-mode.test.d.ts +2 -0
  411. package/dist/tests/test-mode.test.d.ts.map +1 -0
  412. package/dist/tests/test-mode.test.js +39 -0
  413. package/dist/tests/test-mode.test.js.map +1 -0
  414. package/mcp-config.template.json +13 -0
  415. package/mcp-tools.json +1 -0
  416. package/openclaw-mcp-bridge.cjs +152 -0
  417. package/openclaw.plugin.json +30 -0
  418. package/package.json +45 -0
  419. package/skills/.gitkeep +0 -0
  420. package/stubs/commands-status-deps.runtime.js +10 -0
  421. package/stubs/status.runtime.js +149 -0
  422. package/vendor/base-oneshot-session.d.ts +87 -0
  423. package/vendor/base-oneshot-session.js +227 -0
  424. package/vendor/base-oneshot-session.js.map +1 -0
  425. package/vendor/circuit-breaker.d.ts +21 -0
  426. package/vendor/circuit-breaker.js +47 -0
  427. package/vendor/circuit-breaker.js.map +1 -0
  428. package/vendor/consensus.d.ts +20 -0
  429. package/vendor/consensus.js +52 -0
  430. package/vendor/consensus.js.map +1 -0
  431. package/vendor/constants.d.ts +130 -0
  432. package/vendor/constants.js +139 -0
  433. package/vendor/constants.js.map +1 -0
  434. package/vendor/council.d.ts +67 -0
  435. package/vendor/council.js +913 -0
  436. package/vendor/council.js.map +1 -0
  437. package/vendor/embedded-server.d.ts +25 -0
  438. package/vendor/embedded-server.js +360 -0
  439. package/vendor/embedded-server.js.map +1 -0
  440. package/vendor/inbox-manager.d.ts +38 -0
  441. package/vendor/inbox-manager.js +111 -0
  442. package/vendor/inbox-manager.js.map +1 -0
  443. package/vendor/index.d.ts +63 -0
  444. package/vendor/index.js +705 -0
  445. package/vendor/index.js.map +1 -0
  446. package/vendor/logger.d.ts +16 -0
  447. package/vendor/logger.js +44 -0
  448. package/vendor/logger.js.map +1 -0
  449. package/vendor/models.d.ts +69 -0
  450. package/vendor/models.js +289 -0
  451. package/vendor/models.js.map +1 -0
  452. package/vendor/openai-compat.d.ts +197 -0
  453. package/vendor/openai-compat.js +721 -0
  454. package/vendor/openai-compat.js.map +1 -0
  455. package/vendor/persistent-codex-session.d.ts +16 -0
  456. package/vendor/persistent-codex-session.js +105 -0
  457. package/vendor/persistent-codex-session.js.map +1 -0
  458. package/vendor/persistent-cursor-session.d.ts +21 -0
  459. package/vendor/persistent-cursor-session.js +241 -0
  460. package/vendor/persistent-cursor-session.js.map +1 -0
  461. package/vendor/persistent-custom-session.d.ts +78 -0
  462. package/vendor/persistent-custom-session.js +937 -0
  463. package/vendor/persistent-custom-session.js.map +1 -0
  464. package/vendor/persistent-gemini-session.d.ts +21 -0
  465. package/vendor/persistent-gemini-session.js +216 -0
  466. package/vendor/persistent-gemini-session.js.map +1 -0
  467. package/vendor/persistent-session.d.ts +74 -0
  468. package/vendor/persistent-session.js +684 -0
  469. package/vendor/persistent-session.js.map +1 -0
  470. package/vendor/proxy/anthropic-adapter.d.ts +136 -0
  471. package/vendor/proxy/anthropic-adapter.js +392 -0
  472. package/vendor/proxy/anthropic-adapter.js.map +1 -0
  473. package/vendor/proxy/handler.d.ts +39 -0
  474. package/vendor/proxy/handler.js +323 -0
  475. package/vendor/proxy/handler.js.map +1 -0
  476. package/vendor/proxy/schema-cleaner.d.ts +11 -0
  477. package/vendor/proxy/schema-cleaner.js +34 -0
  478. package/vendor/proxy/schema-cleaner.js.map +1 -0
  479. package/vendor/proxy/thought-cache.d.ts +19 -0
  480. package/vendor/proxy/thought-cache.js +53 -0
  481. package/vendor/proxy/thought-cache.js.map +1 -0
  482. package/vendor/session-manager.d.ts +211 -0
  483. package/vendor/session-manager.js +1345 -0
  484. package/vendor/session-manager.js.map +1 -0
  485. package/vendor/skill-resolver.js +107 -0
  486. package/vendor/types.d.ts +466 -0
  487. package/vendor/types.js +8 -0
  488. package/vendor/types.js.map +1 -0
  489. package/vendor/validation.d.ts +31 -0
  490. package/vendor/validation.js +104 -0
  491. package/vendor/validation.js.map +1 -0
@@ -0,0 +1,14 @@
1
+ /**
2
+ * src/channels/telegram/index.ts — barrel
3
+ *
4
+ * Re-exports all register functions from the 6 telegram channel files.
5
+ * Consumers call each register-function with the PluginApi to activate
6
+ * the corresponding hooks.
7
+ */
8
+ export { register as registerInjector } from './injector.js';
9
+ export { register as registerLiveCard } from './live-card.js';
10
+ export { register as registerToolTracker } from './tool-tracker.js';
11
+ export { register as registerCompletionSummary } from './completion-summary.js';
12
+ export { register as registerStateMachine } from './state-machine.js';
13
+ export { register as registerEventReducer } from './event-reducer.js';
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/channels/telegram/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,IAAI,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,QAAQ,IAAI,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,QAAQ,IAAI,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,QAAQ,IAAI,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,QAAQ,IAAI,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,QAAQ,IAAI,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * telegram-ux-injector — TypeScript port of savvy-claude-code/ux-injector.js
3
+ *
4
+ * Captures Telegram metadata (chatId, threadId) at dispatch time and injects
5
+ * it into claude_session_send tool calls via before_tool_call param mutation.
6
+ *
7
+ * This enables the UX bridge to activate for ALL Telegram-originating sessions,
8
+ * not just /cc. Gated by UX_BRIDGE_ALL_SESSIONS env var (default: OFF).
9
+ *
10
+ * Architecture:
11
+ * before_dispatch → captures { chatId, threadId } per sessionKey (non-claiming)
12
+ * before_tool_call → injects telegramChatId/telegramThreadId into claude_session_send params
13
+ * Gateway applies adjusted params → execute handler receives metadata
14
+ * UX bridge (telegram-ux-bridge) activates on telegramChatId presence
15
+ *
16
+ * Zero dist/ modifications. Uses only the gateway's native hook infrastructure.
17
+ *
18
+ * ROADMAP: Stage 4 of unified-execution-ux
19
+ * Depends on: Stage 2 (claude_session_send schema accepts telegram fields)
20
+ */
21
+ export interface PluginApi {
22
+ on(event: string, handler: (...args: unknown[]) => unknown | Promise<unknown>): void;
23
+ logger?: Console;
24
+ }
25
+ interface ParsedConversationId {
26
+ chatId: string;
27
+ threadId: string | undefined;
28
+ }
29
+ export declare const METADATA_TTL_MS: number;
30
+ export declare const MAX_STORE_SIZE = 100;
31
+ export declare function cleanStaleEntries(): void;
32
+ /**
33
+ * Parse a gateway conversationId into raw Telegram chatId + threadId.
34
+ *
35
+ * Formats observed:
36
+ * "telegram:-100xxx:topic:456" → chatId="-100xxx", threadId="456"
37
+ * "-100xxx:topic:456" → chatId="-100xxx", threadId="456"
38
+ * "telegram:-100xxx" → chatId="-100xxx", threadId=undefined
39
+ * "-100xxx" → chatId="-100xxx", threadId=undefined
40
+ */
41
+ export declare function parseConversationId(conversationId: string): ParsedConversationId;
42
+ /**
43
+ * Register the telegram-ux-injector plugin with the OpenClaw API.
44
+ * Idempotent: subsequent calls are no-ops (prevents listener stacking).
45
+ */
46
+ export declare function register(api: PluginApi): void;
47
+ declare const _default: {
48
+ id: string;
49
+ name: string;
50
+ description: string;
51
+ register: typeof register;
52
+ };
53
+ export default _default;
54
+ //# sourceMappingURL=injector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injector.d.ts","sourceRoot":"","sources":["../../../../src/channels/telegram/injector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,MAAM,WAAW,SAAS;IACxB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACrF,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAWD,UAAU,oBAAoB;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAwBD,eAAO,MAAM,eAAe,QAAgB,CAAC;AAC7C,eAAO,MAAM,cAAc,MAAM,CAAC;AAmBlC,wBAAgB,iBAAiB,IAAI,IAAI,CAOxC;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,oBAAoB,CAUhF;AAID;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAwJ7C;;;;;;;AAGD,wBAME"}
@@ -0,0 +1,200 @@
1
+ /**
2
+ * telegram-ux-injector — TypeScript port of savvy-claude-code/ux-injector.js
3
+ *
4
+ * Captures Telegram metadata (chatId, threadId) at dispatch time and injects
5
+ * it into claude_session_send tool calls via before_tool_call param mutation.
6
+ *
7
+ * This enables the UX bridge to activate for ALL Telegram-originating sessions,
8
+ * not just /cc. Gated by UX_BRIDGE_ALL_SESSIONS env var (default: OFF).
9
+ *
10
+ * Architecture:
11
+ * before_dispatch → captures { chatId, threadId } per sessionKey (non-claiming)
12
+ * before_tool_call → injects telegramChatId/telegramThreadId into claude_session_send params
13
+ * Gateway applies adjusted params → execute handler receives metadata
14
+ * UX bridge (telegram-ux-bridge) activates on telegramChatId presence
15
+ *
16
+ * Zero dist/ modifications. Uses only the gateway's native hook infrastructure.
17
+ *
18
+ * ROADMAP: Stage 4 of unified-execution-ux
19
+ * Depends on: Stage 2 (claude_session_send schema accepts telegram fields)
20
+ */
21
+ // ── Constants ─────────────────────────────────────────────────────────────
22
+ const PLUGIN_TAG = '[cc-openclaw/telegram/injector]';
23
+ const ENV_FLAG = 'UX_BRIDGE_ALL_SESSIONS';
24
+ export const METADATA_TTL_MS = 5 * 60 * 1000; // 5 minutes
25
+ export const MAX_STORE_SIZE = 100;
26
+ // ── Metadata Store ────────────────────────────────────────────────────────
27
+ // Per-sessionKey metadata store.
28
+ // Populated at before_dispatch (message arrival), consumed at before_tool_call
29
+ // (when Savvy calls claude_session_send). The sessionKey bridges the two hooks.
30
+ const metadataStore = new Map();
31
+ // ── Idempotency Guard ─────────────────────────────────────────────────────
32
+ import { defaultRegisterGuard } from '../../lib/register-guard.js';
33
+ // ── Helpers ───────────────────────────────────────────────────────────────
34
+ function isEnabled() {
35
+ return process.env[ENV_FLAG] === 'true';
36
+ }
37
+ export function cleanStaleEntries() {
38
+ const now = Date.now();
39
+ for (const [key, entry] of metadataStore) {
40
+ if (now - entry.capturedAt > METADATA_TTL_MS) {
41
+ metadataStore.delete(key);
42
+ }
43
+ }
44
+ }
45
+ /**
46
+ * Parse a gateway conversationId into raw Telegram chatId + threadId.
47
+ *
48
+ * Formats observed:
49
+ * "telegram:-100xxx:topic:456" → chatId="-100xxx", threadId="456"
50
+ * "-100xxx:topic:456" → chatId="-100xxx", threadId="456"
51
+ * "telegram:-100xxx" → chatId="-100xxx", threadId=undefined
52
+ * "-100xxx" → chatId="-100xxx", threadId=undefined
53
+ */
54
+ export function parseConversationId(conversationId) {
55
+ const raw = (conversationId || '').replace(/^telegram:/i, '');
56
+ const topicMatch = raw.match(/^(-?\d+):topic:(\d+)$/);
57
+ if (topicMatch) {
58
+ return { chatId: topicMatch[1], threadId: topicMatch[2] };
59
+ }
60
+ if (/^-?\d+$/.test(raw)) {
61
+ return { chatId: raw, threadId: undefined };
62
+ }
63
+ return { chatId: '', threadId: undefined };
64
+ }
65
+ // ── register() ────────────────────────────────────────────────────────────
66
+ /**
67
+ * Register the telegram-ux-injector plugin with the OpenClaw API.
68
+ * Idempotent: subsequent calls are no-ops (prevents listener stacking).
69
+ */
70
+ export function register(api) {
71
+ const logger = api.logger || console;
72
+ defaultRegisterGuard.guard('channels/telegram/injector', api, () => {
73
+ const flagValue = process.env[ENV_FLAG] || 'unset';
74
+ logger.info(`${PLUGIN_TAG} Registering (${ENV_FLAG}=${flagValue})`);
75
+ // ── before_dispatch: capture Telegram metadata (non-claiming) ────────
76
+ //
77
+ // Fires for every inbound message. For Telegram messages, we extract
78
+ // chatId and threadId from ctx.conversationId and store them keyed by
79
+ // ctx.sessionKey. This data is consumed later in before_tool_call.
80
+ //
81
+ // This hook NEVER claims the message (returns undefined). It is purely
82
+ // a metadata capture pass. The cc-handler or model dispatch proceeds
83
+ // normally after this hook.
84
+ api.on('before_dispatch', async (...args) => {
85
+ if (!isEnabled())
86
+ return undefined;
87
+ const event = args[0];
88
+ const ctx = args[1];
89
+ if (event.channel !== 'telegram')
90
+ return undefined;
91
+ const sessionKey = ctx.sessionKey;
92
+ if (!sessionKey)
93
+ return undefined;
94
+ const { chatId, threadId } = parseConversationId(ctx.conversationId ?? '');
95
+ if (!chatId)
96
+ return undefined;
97
+ const rawMsg = event.raw?.message;
98
+ const origMessageId = typeof rawMsg?.message_id === 'number' ? rawMsg.message_id : null;
99
+ metadataStore.set(sessionKey, {
100
+ chatId,
101
+ threadId,
102
+ origMessageId,
103
+ capturedAt: Date.now(),
104
+ });
105
+ // Also share via globalThis for savvy-card-tracker access.
106
+ // The sk: prefix distinguishes sessionKey entries from sessionName entries.
107
+ const UX_META = Symbol.for('telegram-ux-bridge:metadata');
108
+ const globalStore = globalThis[UX_META];
109
+ if (!globalStore || !(globalStore instanceof Map)) {
110
+ globalThis[UX_META] = new Map();
111
+ }
112
+ globalThis[UX_META].set(`sk:${sessionKey}`, {
113
+ chatId,
114
+ threadId,
115
+ origMessageId,
116
+ storedAt: Date.now(),
117
+ });
118
+ // Periodic cleanup to prevent unbounded growth
119
+ if (metadataStore.size > MAX_STORE_SIZE) {
120
+ cleanStaleEntries();
121
+ }
122
+ logger.info(`${PLUGIN_TAG} Captured: sessionKey=${sessionKey} chat=${chatId} thread=${threadId || 'none'}`);
123
+ // Non-claiming — let the message proceed to cc-handler or model
124
+ return undefined;
125
+ });
126
+ // ── before_tool_call: inject metadata into claude_session_send ────────
127
+ //
128
+ // When Savvy (GPT) decides to delegate and calls claude_session_send,
129
+ // this hook fires BEFORE the tool's execute handler. If we have stored
130
+ // Telegram metadata for this sessionKey, we inject telegramChatId and
131
+ // telegramThreadId into the tool params. The gateway's native param
132
+ // adjustment infrastructure (adjustedParamsByToolCallId) delivers the
133
+ // modified params to the execute handler.
134
+ //
135
+ // The execute handler (Stage 2) already passes these fields through to
136
+ // SessionManager.sendMessage(), where the UX bridge (telegram-ux-bridge)
137
+ // picks them up and activates live card delivery.
138
+ //
139
+ // Skip injection if the caller already provided explicit metadata
140
+ // (defensive — currently no caller does for Savvy-delegated calls).
141
+ api.on('before_tool_call', async (...args) => {
142
+ if (!isEnabled())
143
+ return undefined;
144
+ const event = args[0];
145
+ const ctx = args[1];
146
+ if (event.toolName !== 'claude_session_send')
147
+ return undefined;
148
+ const sessionKey = ctx.sessionKey;
149
+ if (!sessionKey)
150
+ return undefined;
151
+ const metadata = metadataStore.get(sessionKey);
152
+ if (!metadata)
153
+ return undefined;
154
+ // Don't override explicit metadata
155
+ if (event.params?.telegramChatId)
156
+ return undefined;
157
+ // TTL check — stale entries shouldn't inject
158
+ if (Date.now() - metadata.capturedAt > METADATA_TTL_MS) {
159
+ metadataStore.delete(sessionKey);
160
+ return undefined;
161
+ }
162
+ logger.info(`${PLUGIN_TAG} Injecting into claude_session_send: chat=${metadata.chatId} thread=${metadata.threadId || 'none'} sessionKey=${sessionKey}`);
163
+ // Share metadata via globalThis for ux-bridge to pick up.
164
+ // The tool handler in dist/ doesn't forward telegram fields to
165
+ // SessionManager.sendMessage options, so the bridge reads this
166
+ // store directly when options.telegramChatId is missing.
167
+ const UX_META = Symbol.for('telegram-ux-bridge:metadata');
168
+ const globalStore = globalThis[UX_META];
169
+ if (!globalStore || !(globalStore instanceof Map)) {
170
+ globalThis[UX_META] = new Map();
171
+ }
172
+ const sessionName = typeof event.params?.name === 'string' ? event.params.name : undefined;
173
+ if (sessionName) {
174
+ globalThis[UX_META].set(sessionName, {
175
+ chatId: metadata.chatId,
176
+ threadId: metadata.threadId,
177
+ storedAt: Date.now(),
178
+ });
179
+ }
180
+ // Return adjusted params — gateway merges these into the tool call
181
+ const adjusted = {
182
+ ...event.params,
183
+ telegramChatId: metadata.chatId,
184
+ };
185
+ if (metadata.threadId) {
186
+ adjusted.telegramThreadId = metadata.threadId;
187
+ }
188
+ return { params: adjusted };
189
+ });
190
+ logger.info(`${PLUGIN_TAG} Hooks registered (active when ${ENV_FLAG}=true)`);
191
+ }); // end defaultRegisterGuard.guard
192
+ }
193
+ // Default export compatible with the original plugin object shape
194
+ export default {
195
+ id: 'telegram-ux-injector',
196
+ name: 'Telegram UX Metadata Injector',
197
+ description: 'Injects Telegram UX metadata into Savvy-delegated claude_session_send calls (Stage 4)',
198
+ register,
199
+ };
200
+ //# sourceMappingURL=injector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injector.js","sourceRoot":"","sources":["../../../../src/channels/telegram/injector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,230 @@
1
+ /**
2
+ * telegram live-card — TypeScript port of savvy-claude-code/ux-bridge.js
3
+ *
4
+ * Handles:
5
+ * - Telegram Bot API HTTP calls (sendTg, editTg, telegramApi)
6
+ * - TelegramMessageQueue — serialises per-session card edits
7
+ * - bridgeEvent — maps raw stream events to TranscriptEntry shape
8
+ * - applyPatch — patches SessionManager.prototype.sendMessage to drive
9
+ * TelegramUXPipeline for every Telegram-originating CC session
10
+ *
11
+ * Source lines: 1–930 of ux-bridge.js
12
+ */
13
+ export interface PluginApi {
14
+ on(event: string, handler: (...args: unknown[]) => unknown | Promise<unknown>): void;
15
+ logger?: Console;
16
+ config?: Record<string, unknown>;
17
+ registerService?(opts: {
18
+ id: string;
19
+ start(): Promise<void>;
20
+ stop(): void;
21
+ }): void;
22
+ runtime?: {
23
+ subagent?: {
24
+ run?(opts: Record<string, unknown>): Promise<{
25
+ runId?: string;
26
+ }>;
27
+ };
28
+ };
29
+ }
30
+ export declare const UX_MODULE_PATH = "/home/a1xai/.openclaw/workspace/lib/telegram-ux";
31
+ export declare const VERBOSITY_STORE = "/home/a1xai/.openclaw/workspace/lib/telegram-ux/verbosity-prefs.json";
32
+ export declare let BOT_TOKEN: string;
33
+ export declare let minimaxTracker: unknown;
34
+ export declare let buttonHandler: null | {
35
+ buildButtons(state: unknown, sessionName: string): unknown;
36
+ buildSavvyButtons(state: unknown, sessionKey: string, opts: unknown): unknown;
37
+ parseCallback(data: string): {
38
+ action: string;
39
+ sessionId: string;
40
+ } | null;
41
+ parseSavvyCallback?(data: string): {
42
+ action: string;
43
+ sessionKey: string;
44
+ } | null;
45
+ parseNextStepCallback?(data: string): {
46
+ action: string;
47
+ } | null;
48
+ handleAction(action: string, ctx: unknown): {
49
+ text?: string;
50
+ };
51
+ formatTranscript(state: unknown): string;
52
+ };
53
+ export declare let nsCommands: Record<string, string> | null;
54
+ export declare const activeSessions: Map<string, {
55
+ pipeline: SessionPipeline;
56
+ queue: TelegramMessageQueue;
57
+ name: string;
58
+ }>;
59
+ export declare const recentlyFinishedSessions: Map<string, {
60
+ pipeline: SessionPipeline;
61
+ queue: TelegramMessageQueue;
62
+ name: string;
63
+ finishedAt: number;
64
+ }>;
65
+ export declare const FINISHED_SESSION_TTL_MS: number;
66
+ export declare const delegatedCardStore: Map<string, {
67
+ cardMessageId: number;
68
+ chatId: string;
69
+ threadId: string | undefined;
70
+ }>;
71
+ 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;
83
+ export interface QuotaState {
84
+ sevenDay?: {
85
+ usedPercent?: number;
86
+ resetsAt?: number;
87
+ };
88
+ fiveHour?: {
89
+ usedPercent?: number;
90
+ resetsAt?: number;
91
+ };
92
+ sevenDaySonnet?: {
93
+ usedPercent?: number;
94
+ };
95
+ sevenDayOpus?: {
96
+ usedPercent?: number;
97
+ };
98
+ extraUsage?: {
99
+ isEnabled?: boolean;
100
+ usedCredits?: number;
101
+ monthlyLimit?: number;
102
+ currency?: string;
103
+ };
104
+ source?: string;
105
+ }
106
+ interface SessionPipeline {
107
+ start(): void;
108
+ finish(result: unknown): void;
109
+ abort(): void;
110
+ processTranscriptEntry(entry: unknown): void;
111
+ setPermissionMode(mode: string): void;
112
+ setSessionType(type: string): void;
113
+ setTokenUsage(input: number, output: number): void;
114
+ setContextPercent(pct: number): void;
115
+ setCachedTokens(tokens: number, pct: number | null): void;
116
+ setModel(model: string): void;
117
+ setMiniMaxUsage(usage: unknown): void;
118
+ setGptUsage(usage: unknown): void;
119
+ setQuotaPercent(pct: number, resetsAt: unknown): void;
120
+ setQuota7d(pct: number, resetsAt: unknown): void;
121
+ setContextWindowSize(size: number): void;
122
+ cycleVerbosity(): string;
123
+ _handleStall(idleMs: number): void;
124
+ _handleStallRecovery(): void;
125
+ _cardState?: {
126
+ getState(): CardState;
127
+ };
128
+ _livenessCheck?: () => boolean;
129
+ }
130
+ interface CardState {
131
+ elapsedMs: number;
132
+ toolCount: number;
133
+ toolSummary: Record<string, number>;
134
+ errorCount: number;
135
+ stallCount: number;
136
+ thinkingMs: number;
137
+ filesModified: string[];
138
+ subagents: unknown[];
139
+ status: string;
140
+ startedAt?: number;
141
+ [key: string]: unknown;
142
+ }
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;
221
+ export declare function loadUxModule(): Record<string, unknown>;
222
+ export declare function applyPatch(): Promise<void>;
223
+ export declare function cleanStaleStatusFiles(): void;
224
+ /**
225
+ * Register the live-card plugin hooks.
226
+ * Idempotent — subsequent calls are no-ops.
227
+ */
228
+ export declare function register(api: PluginApi): void;
229
+ export {};
230
+ //# sourceMappingURL=live-card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-card.d.ts","sourceRoot":"","sources":["../../../../src/channels/telegram/live-card.ts"],"names":[],"mappings":"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"}