@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,46 @@
1
+ /**
2
+ * Structured logging interface with level control.
3
+ *
4
+ * Default implementation logs to console, filtered by OPENCLAW_LOG_LEVEL env var.
5
+ * Valid levels: debug, info, warn, error. Default: info.
6
+ */
7
+ import { getLogLevel } from './lib/config.js';
8
+ const LEVELS = { debug: 0, info: 1, warn: 2, error: 3 };
9
+ function parseLevel(envVal) {
10
+ if (envVal && envVal in LEVELS)
11
+ return envVal;
12
+ return 'info';
13
+ }
14
+ /** Create a console-backed logger with optional prefix and env-var level control. */
15
+ export function createConsoleLogger(prefix) {
16
+ // Env read centralized in src/lib/config.ts (PRP_v3 §5 hard rule).
17
+ const level = parseLevel(getLogLevel());
18
+ const threshold = LEVELS[level];
19
+ const pfx = prefix ? `[${prefix}] ` : '';
20
+ return {
21
+ debug: (msg, ...args) => {
22
+ if (threshold <= LEVELS.debug)
23
+ console.log(`${pfx}${msg}`, ...args);
24
+ },
25
+ info: (msg, ...args) => {
26
+ if (threshold <= LEVELS.info)
27
+ console.log(`${pfx}${msg}`, ...args);
28
+ },
29
+ warn: (msg, ...args) => {
30
+ if (threshold <= LEVELS.warn)
31
+ console.warn(`${pfx}${msg}`, ...args);
32
+ },
33
+ error: (msg, ...args) => {
34
+ if (threshold <= LEVELS.error)
35
+ console.error(`${pfx}${msg}`, ...args);
36
+ },
37
+ };
38
+ }
39
+ /** No-op logger — useful in tests to suppress output. */
40
+ export const nullLogger = {
41
+ debug: () => { },
42
+ info: () => { },
43
+ warn: () => { },
44
+ error: () => { },
45
+ };
46
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAS9C,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAW,CAAC;AAGjE,SAAS,UAAU,CAAC,MAAe;IACjC,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM;QAAE,OAAO,MAAkB,CAAC;IAC1D,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,mBAAmB,CAAC,MAAe;IACjD,mEAAmE;IACnE,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAChC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAEzC,OAAO;QACL,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE;YACtB,IAAI,SAAS,IAAI,MAAM,CAAC,KAAK;gBAAE,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE;YACrB,IAAI,SAAS,IAAI,MAAM,CAAC,IAAI;gBAAE,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE;YACrB,IAAI,SAAS,IAAI,MAAM,CAAC,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QACtE,CAAC;QACD,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE;YACtB,IAAI,SAAS,IAAI,MAAM,CAAC,KAAK;gBAAE,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QACxE,CAAC;KACF,CAAC;AACJ,CAAC;AAED,yDAAyD;AACzD,MAAM,CAAC,MAAM,UAAU,GAAW;IAChC,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;IACf,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;IACd,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;IACd,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;CAChB,CAAC"}
@@ -0,0 +1,22 @@
1
+ export interface PluginApi {
2
+ on(event: string, handler: (...args: unknown[]) => unknown): void;
3
+ logger?: Console;
4
+ }
5
+ export declare class McpBridge {
6
+ private child;
7
+ start(): void;
8
+ stop(): Promise<void>;
9
+ isRunning(): boolean;
10
+ }
11
+ /**
12
+ * Passive registration: validate the sidecar binary is present at the
13
+ * expected bundled path. No event hooks. No process spawning.
14
+ *
15
+ * Returns the resolved sidecar path so callers (or tests) can probe it.
16
+ */
17
+ export declare function register(api: PluginApi): {
18
+ sidecarPath: string;
19
+ sidecarExists: boolean;
20
+ };
21
+ export declare function _resetRegisteredForTests(): void;
22
+ //# sourceMappingURL=bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../../src/mcp/bridge.ts"],"names":[],"mappings":"AAqCA,MAAM,WAAW,SAAS;IACxB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,GAAG,IAAI,CAAC;IAClE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,KAAK,CAA+C;IAE5D,KAAK,IAAI,IAAI;IAOb,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAUrB,SAAS,IAAI,OAAO;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,SAAS,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,OAAO,CAAA;CAAE,CAaxF;AAGD,wBAAgB,wBAAwB,IAAI,IAAI,CAAmE"}
@@ -0,0 +1,78 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { existsSync } from 'node:fs';
3
+ import { fileURLToPath } from 'node:url';
4
+ import { dirname, join } from 'node:path';
5
+ import { defaultRegisterGuard } from '../lib/register-guard.js';
6
+ /**
7
+ * MCP bridge surface for cc-openclaw.
8
+ *
9
+ * IMPORTANT: The sidecar (`openclaw-mcp-bridge.cjs`) is NOT spawned by the
10
+ * OpenClaw plugin host. It is spawned by Claude Code's MCP client via the
11
+ * `--mcp-config` flag (wired by `session-bootstrap/cwd-patch.ts`). That CLI
12
+ * reads `mcp-config.json` and runs `node openclaw-mcp-bridge.cjs` itself,
13
+ * managing stdio + lifecycle for the duration of each Claude Code child.
14
+ *
15
+ * Earlier P1 design called `api.on('onSessionStart' | 'onSessionEnd', ...)`
16
+ * to start/stop the sidecar from the plugin host. That was wrong on two
17
+ * counts:
18
+ * 1. Those hook names aren't real OpenClaw events (gateway emits
19
+ * `before_dispatch`, `before_tool_call`, `reply_dispatch`, etc.) — the
20
+ * gateway dropped them with "unknown typed hook" warnings, so the
21
+ * handlers never fired anyway.
22
+ * 2. Even if they had fired, the sidecar would conflict with Claude Code's
23
+ * own MCP client trying to spawn the same script over the same stdio.
24
+ *
25
+ * register() is therefore a passive validator: it confirms the sidecar `.cjs`
26
+ * is reachable from the deployed plugin dir and logs a clear error if not,
27
+ * so an MCP misconfiguration surfaces at plugin load instead of at first
28
+ * /cc session attempting a tool call. The McpBridge class is retained for
29
+ * standalone use (tests, manual probes); it is not auto-wired.
30
+ */
31
+ const __dirname = dirname(fileURLToPath(import.meta.url));
32
+ // Compiled path is `<plugin-root>/dist/src/mcp/bridge.js`, so the sidecar at
33
+ // the plugin root requires `..` × 3 (mcp → src → dist → root). Don't shorten
34
+ // to `..` × 2 — that resolves to `dist/` and the .cjs is NOT bundled there.
35
+ const SIDECAR_PATH = join(__dirname, '..', '..', '..', 'openclaw-mcp-bridge.cjs');
36
+ export class McpBridge {
37
+ child = null;
38
+ start() {
39
+ if (this.child)
40
+ return;
41
+ this.child = spawn('node', [SIDECAR_PATH], { stdio: ['pipe', 'pipe', 'pipe'] });
42
+ this.child.stderr.on('data', (chunk) => process.stderr.write(`[cc-openclaw/mcp] ${chunk}`));
43
+ this.child.on('exit', () => { this.child = null; });
44
+ }
45
+ stop() {
46
+ return new Promise((resolve) => {
47
+ const c = this.child;
48
+ if (!c)
49
+ return resolve();
50
+ const killTimer = setTimeout(() => c.kill('SIGKILL'), 3000);
51
+ c.once('exit', () => { clearTimeout(killTimer); this.child = null; resolve(); });
52
+ c.kill('SIGTERM');
53
+ });
54
+ }
55
+ isRunning() { return this.child !== null; }
56
+ }
57
+ /**
58
+ * Passive registration: validate the sidecar binary is present at the
59
+ * expected bundled path. No event hooks. No process spawning.
60
+ *
61
+ * Returns the resolved sidecar path so callers (or tests) can probe it.
62
+ */
63
+ export function register(api) {
64
+ const result = { sidecarPath: SIDECAR_PATH, sidecarExists: existsSync(SIDECAR_PATH) };
65
+ defaultRegisterGuard.guard('mcp/bridge', api, () => {
66
+ const log = api.logger || console;
67
+ if (result.sidecarExists) {
68
+ log.info(`[cc-openclaw/mcp] sidecar present at ${SIDECAR_PATH}`);
69
+ }
70
+ else {
71
+ log.error(`[cc-openclaw/mcp] sidecar MISSING at ${SIDECAR_PATH} — /cc sessions will lose MCP tool access. Verify the deployed plugin dir contains openclaw-mcp-bridge.cjs.`);
72
+ }
73
+ });
74
+ return result;
75
+ }
76
+ // TODO(P3): per-module reset shims can be removed once all callers use defaultRegisterGuard directly.
77
+ export function _resetRegisteredForTests() { }
78
+ //# sourceMappingURL=bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../../src/mcp/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAuC,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,6EAA6E;AAC7E,6EAA6E;AAC7E,4EAA4E;AAC5E,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,yBAAyB,CAAC,CAAC;AAOlF,MAAM,OAAO,SAAS;IACZ,KAAK,GAA0C,IAAI,CAAC;IAE5D,KAAK;QACH,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QAChF,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5F,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,IAAI;QACF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YACrB,IAAI,CAAC,CAAC;gBAAE,OAAO,OAAO,EAAE,CAAC;YACzB,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;YAC5D,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACjF,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,KAAc,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC;CACrD;AAED;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAc;IACrC,MAAM,MAAM,GAAG,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;IACtF,oBAAoB,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE;QACjD,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC;QAClC,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACzB,GAAG,CAAC,IAAI,CAAC,wCAAwC,YAAY,EAAE,CAAC,CAAC;QACnE,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,KAAK,CACP,wCAAwC,YAAY,6GAA6G,CAClK,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,sGAAsG;AACtG,MAAM,UAAU,wBAAwB,KAA0E,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { McpBridge, register, _resetRegisteredForTests } from './bridge.js';
2
+ export type { PluginApi } from './bridge.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC5E,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { McpBridge, register, _resetRegisteredForTests } from './bridge.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Centralized Model Registry — single source of truth for all model metadata.
3
+ *
4
+ * Every model definition lives here. All other files derive from this registry.
5
+ * To add a model: add one entry to MODELS[]. Everything else auto-generates.
6
+ */
7
+ import type { EngineType } from './types.js';
8
+ export type ProviderName = 'anthropic' | 'openai' | 'google' | 'cursor' | 'custom';
9
+ export interface ModelPricing {
10
+ input: number;
11
+ output: number;
12
+ cached?: number;
13
+ }
14
+ export interface ModelDef {
15
+ /** Canonical model ID, e.g. 'claude-opus-4-6' */
16
+ id: string;
17
+ /** Which CLI engine to use */
18
+ engine: EngineType;
19
+ /** Upstream provider for API routing */
20
+ provider: ProviderName;
21
+ /** Token pricing */
22
+ pricing: ModelPricing;
23
+ /** Short aliases that resolve to this model */
24
+ aliases?: string[];
25
+ /** Whether to expose in /v1/models (default: true) */
26
+ listed?: boolean;
27
+ /** Context window size in tokens */
28
+ contextWindow?: number;
29
+ }
30
+ /** Resolve a model string (id or alias) to its full definition. Returns undefined for unknown models. */
31
+ export declare function lookupModel(idOrAlias: string): ModelDef | undefined;
32
+ /** Resolve alias → canonical id. Returns the input unchanged if not an alias. */
33
+ export declare function resolveAlias(alias: string): string;
34
+ /** Resolve model string to engine + canonical model. Pattern fallback for unknown models. */
35
+ export declare function resolveEngineAndModel(model: string): {
36
+ engine: EngineType;
37
+ model: string;
38
+ };
39
+ /** Resolve model string to provider + API model name. Used by proxy handler. */
40
+ export declare function resolveProvider(model: string): {
41
+ provider: ProviderName;
42
+ apiModel: string;
43
+ };
44
+ /** Get context window size for a model. Returns 200k default for unknown models. */
45
+ export declare function getContextWindow(model: string): number;
46
+ /** Get pricing for a model. Falls back to sonnet pricing for unknown models. */
47
+ export declare function getModelPricing(model?: string, defaultModel?: string): ModelPricing;
48
+ export declare function overrideModelPricing(overrides: Record<string, Partial<ModelPricing>>): void;
49
+ /** Reset all pricing overrides (for testing). */
50
+ export declare function _resetPricingOverrides(): void;
51
+ /** Get /v1/models list — auto-generated from registry. */
52
+ export declare function getModelList(): {
53
+ object: string;
54
+ data: Array<{
55
+ id: string;
56
+ object: string;
57
+ owned_by: string;
58
+ }>;
59
+ };
60
+ /** Get all model aliases as a Record (backward compat). */
61
+ export declare function getAliases(): Record<string, string>;
62
+ /** Check if a model string is a Gemini model. */
63
+ export declare function isGeminiModel(model: string): boolean;
64
+ /** Check if a model string is a Claude model. */
65
+ export declare function isClaudeModel(model: string): boolean;
66
+ /** Rough token estimate: ~4 chars per token. */
67
+ export declare function estimateTokens(text: string): number;
68
+ /** Resolve a model string to its full definition. Throws for unknown models. */
69
+ export declare function lookupModelStrict(idOrAlias: string): ModelDef;
70
+ //# sourceMappingURL=models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEnF,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,iDAAiD;IACjD,EAAE,EAAE,MAAM,CAAC;IACX,8BAA8B;IAC9B,MAAM,EAAE,UAAU,CAAC;IACnB,wCAAwC;IACxC,QAAQ,EAAE,YAAY,CAAC;IACvB,oBAAoB;IACpB,OAAO,EAAE,YAAY,CAAC;IACtB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,sDAAsD;IACtD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oCAAoC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAoKD,yGAAyG;AACzG,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAEnE;AAED,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGlD;AAED,6FAA6F;AAC7F,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAc1F;AAED,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CA6B3F;AAED,oFAAoF;AACpF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAItD;AAED,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,YAAY,SAAsB,GAAG,YAAY,CAUhG;AAKD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,IAAI,CAS3F;AAED,iDAAiD;AACjD,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAED,0DAA0D;AAC1D,wBAAgB,YAAY,IAAI;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAOhH;AAED,2DAA2D;AAC3D,wBAAgB,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQnD;AAED,iDAAiD;AACjD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,iDAAiD;AACjD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAGpD;AAED,gDAAgD;AAChD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,gFAAgF;AAChF,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAI7D"}
@@ -0,0 +1,289 @@
1
+ /**
2
+ * Centralized Model Registry — single source of truth for all model metadata.
3
+ *
4
+ * Every model definition lives here. All other files derive from this registry.
5
+ * To add a model: add one entry to MODELS[]. Everything else auto-generates.
6
+ */
7
+ // ─── Model Definitions ───────────────────────────────────────────────────────
8
+ const MODELS = [
9
+ // ── Anthropic ──────────────────────────────────────────────────────────
10
+ {
11
+ id: 'claude-opus-4-6',
12
+ engine: 'claude',
13
+ provider: 'anthropic',
14
+ pricing: { input: 5, output: 25, cached: 0.5 },
15
+ aliases: ['opus'],
16
+ contextWindow: 200_000,
17
+ },
18
+ {
19
+ id: 'claude-sonnet-4-6',
20
+ engine: 'claude',
21
+ provider: 'anthropic',
22
+ pricing: { input: 3, output: 15, cached: 0.3 },
23
+ aliases: ['sonnet'],
24
+ contextWindow: 200_000,
25
+ },
26
+ {
27
+ id: 'claude-haiku-4-5',
28
+ engine: 'claude',
29
+ provider: 'anthropic',
30
+ pricing: { input: 1, output: 5, cached: 0.1 },
31
+ aliases: ['haiku'],
32
+ contextWindow: 200_000,
33
+ },
34
+ // ── OpenAI GPT-5.4 ────────────────────────────────────────────────────
35
+ {
36
+ id: 'gpt-5.4',
37
+ engine: 'codex',
38
+ provider: 'openai',
39
+ pricing: { input: 2.5, output: 15, cached: 0.25 },
40
+ contextWindow: 256_000,
41
+ },
42
+ {
43
+ id: 'gpt-5.4-mini',
44
+ engine: 'codex',
45
+ provider: 'openai',
46
+ pricing: { input: 0.75, output: 4.5, cached: 0.075 },
47
+ contextWindow: 256_000,
48
+ },
49
+ {
50
+ id: 'gpt-5.4-nano',
51
+ engine: 'codex',
52
+ provider: 'openai',
53
+ pricing: { input: 0.2, output: 1.25, cached: 0.02 },
54
+ contextWindow: 128_000,
55
+ },
56
+ // ── OpenAI Reasoning ───────────────────────────────────────────────────
57
+ {
58
+ id: 'o3',
59
+ engine: 'codex',
60
+ provider: 'openai',
61
+ pricing: { input: 2, output: 8 },
62
+ contextWindow: 200_000,
63
+ },
64
+ {
65
+ id: 'o4-mini',
66
+ engine: 'codex',
67
+ provider: 'openai',
68
+ pricing: { input: 0.55, output: 2.2 },
69
+ contextWindow: 200_000,
70
+ },
71
+ {
72
+ id: 'codex-mini-latest',
73
+ engine: 'codex',
74
+ provider: 'openai',
75
+ pricing: { input: 1.5, output: 6 },
76
+ contextWindow: 200_000,
77
+ },
78
+ // ── Google Gemini 3.x ──────────────────────────────────────────────────
79
+ {
80
+ id: 'gemini-3.1-pro-preview',
81
+ engine: 'gemini',
82
+ provider: 'google',
83
+ pricing: { input: 2, output: 12 },
84
+ aliases: ['gemini-pro'],
85
+ contextWindow: 1_000_000,
86
+ },
87
+ {
88
+ id: 'gemini-3-flash-preview',
89
+ engine: 'gemini',
90
+ provider: 'google',
91
+ pricing: { input: 0.5, output: 3 },
92
+ aliases: ['gemini-flash'],
93
+ contextWindow: 1_000_000,
94
+ },
95
+ // ── Google Gemini 2.5 (stable) ─────────────────────────────────────────
96
+ {
97
+ id: 'gemini-2.5-pro',
98
+ engine: 'gemini',
99
+ provider: 'google',
100
+ pricing: { input: 1.25, output: 10, cached: 0.315 },
101
+ listed: false,
102
+ contextWindow: 1_000_000,
103
+ },
104
+ {
105
+ id: 'gemini-2.5-flash',
106
+ engine: 'gemini',
107
+ provider: 'google',
108
+ pricing: { input: 0.15, output: 0.6, cached: 0.0375 },
109
+ listed: false,
110
+ contextWindow: 1_000_000,
111
+ },
112
+ // ── Cursor Composer ────────────────────────────────────────────────────
113
+ {
114
+ id: 'composer-2',
115
+ engine: 'cursor',
116
+ provider: 'cursor',
117
+ pricing: { input: 0.5, output: 2.5 },
118
+ contextWindow: 200_000,
119
+ },
120
+ {
121
+ id: 'composer-2-fast',
122
+ engine: 'cursor',
123
+ provider: 'cursor',
124
+ pricing: { input: 1.5, output: 7.5 },
125
+ contextWindow: 200_000,
126
+ },
127
+ {
128
+ id: 'composer-1.5',
129
+ engine: 'cursor',
130
+ provider: 'cursor',
131
+ pricing: { input: 3.5, output: 17.5 },
132
+ listed: false,
133
+ contextWindow: 200_000,
134
+ },
135
+ // ── Legacy (backward compat) ───────────────────────────────────────────
136
+ {
137
+ id: 'gpt-4o',
138
+ engine: 'codex',
139
+ provider: 'openai',
140
+ pricing: { input: 2.5, output: 10, cached: 1.25 },
141
+ listed: false,
142
+ contextWindow: 128_000,
143
+ },
144
+ ];
145
+ // ─── Derived Lookup Tables (generated once at import time) ───────────────────
146
+ /** id → ModelDef */
147
+ const _byId = new Map();
148
+ /** alias → ModelDef */
149
+ const _byAlias = new Map();
150
+ for (const m of MODELS) {
151
+ _byId.set(m.id, m);
152
+ if (m.aliases) {
153
+ for (const a of m.aliases)
154
+ _byAlias.set(a, m);
155
+ }
156
+ }
157
+ // ─── Public API ──────────────────────────────────────────────────────────────
158
+ /** Resolve a model string (id or alias) to its full definition. Returns undefined for unknown models. */
159
+ export function lookupModel(idOrAlias) {
160
+ return _byId.get(idOrAlias) || _byAlias.get(idOrAlias);
161
+ }
162
+ /** Resolve alias → canonical id. Returns the input unchanged if not an alias. */
163
+ export function resolveAlias(alias) {
164
+ const m = _byAlias.get(alias);
165
+ return m ? m.id : alias;
166
+ }
167
+ /** Resolve model string to engine + canonical model. Pattern fallback for unknown models. */
168
+ export function resolveEngineAndModel(model) {
169
+ // 1. Exact match (id or alias)
170
+ const known = lookupModel(model);
171
+ if (known)
172
+ return { engine: known.engine, model: known.id };
173
+ // 2. Pattern-based fallback for unknown models
174
+ if (model.startsWith('gemini') || model.includes('gemini'))
175
+ return { engine: 'gemini', model };
176
+ if (model.startsWith('gpt') || model.startsWith('o3') || model.startsWith('o4') || model.startsWith('codex'))
177
+ return { engine: 'codex', model };
178
+ if (model.startsWith('composer') || model.startsWith('cursor') || model === 'auto')
179
+ return { engine: 'cursor', model };
180
+ // 3. Default: claude engine passthrough
181
+ return { engine: 'claude', model };
182
+ }
183
+ /** Resolve model string to provider + API model name. Used by proxy handler. */
184
+ export function resolveProvider(model) {
185
+ // Strip vendor prefixes
186
+ let clean = model;
187
+ for (const prefix of ['anthropic/', 'openai/', 'openai-codex/', 'gemini/', 'google/', 'cursor/']) {
188
+ if (clean.startsWith(prefix)) {
189
+ clean = clean.slice(prefix.length);
190
+ break;
191
+ }
192
+ }
193
+ const known = lookupModel(clean);
194
+ if (known)
195
+ return { provider: known.provider, apiModel: known.id };
196
+ // Pattern fallback
197
+ const lower = clean.toLowerCase();
198
+ if (lower.includes('claude') || lower.includes('opus') || lower.includes('sonnet') || lower.includes('haiku'))
199
+ return { provider: 'anthropic', apiModel: clean };
200
+ if (lower.includes('gemini'))
201
+ return { provider: 'google', apiModel: clean };
202
+ if (lower.includes('gpt') ||
203
+ lower.startsWith('o1') ||
204
+ lower.startsWith('o3') ||
205
+ lower.startsWith('o4') ||
206
+ lower.startsWith('codex'))
207
+ return { provider: 'openai', apiModel: clean };
208
+ if (lower.startsWith('composer') || lower.startsWith('cursor'))
209
+ return { provider: 'cursor', apiModel: clean };
210
+ return { provider: 'openai', apiModel: clean };
211
+ }
212
+ /** Get context window size for a model. Returns 200k default for unknown models. */
213
+ export function getContextWindow(model) {
214
+ const clean = model.replace(/^(anthropic|openai|openai-codex|google|gemini|cursor)\//g, '');
215
+ const known = lookupModel(clean);
216
+ return known?.contextWindow ?? 200_000;
217
+ }
218
+ /** Get pricing for a model. Falls back to sonnet pricing for unknown models. */
219
+ export function getModelPricing(model, defaultModel = 'claude-sonnet-4-6') {
220
+ if (!model)
221
+ return lookupModel(defaultModel)?.pricing ?? { input: 0, output: 0 };
222
+ const clean = model.replace(/^(anthropic|openai|openai-codex|google|gemini|cursor)\//g, '');
223
+ // Check overrides first
224
+ const override = _pricingOverrides.get(clean);
225
+ if (override)
226
+ return override;
227
+ const known = lookupModel(clean);
228
+ if (known)
229
+ return known.pricing;
230
+ console.warn(`[models] Unknown model "${model}" — falling back to ${defaultModel} pricing`);
231
+ return lookupModel(defaultModel)?.pricing ?? { input: 0, output: 0 };
232
+ }
233
+ /** Mutable pricing table for runtime overrides (backward compat). */
234
+ const _pricingOverrides = new Map();
235
+ export function overrideModelPricing(overrides) {
236
+ for (const [model, pricing] of Object.entries(overrides)) {
237
+ const base = lookupModel(model)?.pricing ?? { input: 0, output: 0 };
238
+ _pricingOverrides.set(model, {
239
+ input: pricing.input ?? base.input,
240
+ output: pricing.output ?? base.output,
241
+ cached: pricing.cached ?? base.cached,
242
+ });
243
+ }
244
+ }
245
+ /** Reset all pricing overrides (for testing). */
246
+ export function _resetPricingOverrides() {
247
+ _pricingOverrides.clear();
248
+ }
249
+ /** Get /v1/models list — auto-generated from registry. */
250
+ export function getModelList() {
251
+ const data = MODELS.filter((m) => m.listed !== false).map((m) => ({
252
+ id: m.id,
253
+ object: 'model',
254
+ owned_by: m.provider,
255
+ }));
256
+ return { object: 'list', data };
257
+ }
258
+ /** Get all model aliases as a Record (backward compat). */
259
+ export function getAliases() {
260
+ const result = {};
261
+ for (const m of MODELS) {
262
+ if (m.aliases) {
263
+ for (const a of m.aliases)
264
+ result[a] = m.id;
265
+ }
266
+ }
267
+ return result;
268
+ }
269
+ /** Check if a model string is a Gemini model. */
270
+ export function isGeminiModel(model) {
271
+ return model.toLowerCase().includes('gemini');
272
+ }
273
+ /** Check if a model string is a Claude model. */
274
+ export function isClaudeModel(model) {
275
+ const l = model.toLowerCase();
276
+ return l.includes('claude') || l.includes('opus') || l.includes('sonnet') || l.includes('haiku');
277
+ }
278
+ /** Rough token estimate: ~4 chars per token. */
279
+ export function estimateTokens(text) {
280
+ return Math.ceil(text.length / 4);
281
+ }
282
+ /** Resolve a model string to its full definition. Throws for unknown models. */
283
+ export function lookupModelStrict(idOrAlias) {
284
+ const m = lookupModel(idOrAlias);
285
+ if (!m)
286
+ throw new Error(`Unknown model: ${idOrAlias}`);
287
+ return m;
288
+ }
289
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"}