@a1hvdy/cc-openclaw 0.10.4 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (473) hide show
  1. package/dist/src/channels/telegram/card-renderer.d.ts +63 -0
  2. package/dist/src/channels/telegram/card-renderer.js +149 -0
  3. package/dist/src/channels/telegram/card-renderer.js.map +1 -0
  4. package/dist/src/channels/telegram/event-reducer.js +3 -15
  5. package/dist/src/channels/telegram/event-reducer.js.map +1 -1
  6. package/dist/src/channels/telegram/format-helpers.d.ts +20 -0
  7. package/dist/src/channels/telegram/format-helpers.js +34 -0
  8. package/dist/src/channels/telegram/format-helpers.js.map +1 -0
  9. package/dist/src/channels/telegram/insight-formatter.d.ts +36 -0
  10. package/dist/src/channels/telegram/insight-formatter.js +36 -0
  11. package/dist/src/channels/telegram/insight-formatter.js.map +1 -0
  12. package/dist/src/channels/telegram/live-card.d.ts +7 -90
  13. package/dist/src/channels/telegram/live-card.js +25 -286
  14. package/dist/src/channels/telegram/live-card.js.map +1 -1
  15. package/dist/src/channels/telegram/logger.d.ts +10 -0
  16. package/dist/src/channels/telegram/logger.js +13 -0
  17. package/dist/src/channels/telegram/logger.js.map +1 -0
  18. package/dist/src/channels/telegram/result-preview.d.ts +12 -0
  19. package/dist/src/channels/telegram/result-preview.js +48 -0
  20. package/dist/src/channels/telegram/result-preview.js.map +1 -0
  21. package/dist/src/channels/telegram/throttle-controller.d.ts +54 -0
  22. package/dist/src/channels/telegram/throttle-controller.js +132 -0
  23. package/dist/src/channels/telegram/throttle-controller.js.map +1 -0
  24. package/dist/src/channels/telegram/tool-tracker.d.ts +1 -2
  25. package/dist/src/channels/telegram/tool-tracker.js +9 -51
  26. package/dist/src/channels/telegram/tool-tracker.js.map +1 -1
  27. package/dist/src/cli/checks/bridge-wiring.d.ts +14 -0
  28. package/dist/src/cli/checks/bridge-wiring.js +64 -0
  29. package/dist/src/cli/checks/bridge-wiring.js.map +1 -0
  30. package/dist/src/cli/checks/config-schema.d.ts +11 -0
  31. package/dist/src/cli/checks/config-schema.js +51 -0
  32. package/dist/src/cli/checks/config-schema.js.map +1 -0
  33. package/dist/src/cli/checks/critical-openclaw-json-keys.d.ts +21 -0
  34. package/dist/src/cli/checks/critical-openclaw-json-keys.js +106 -0
  35. package/dist/src/cli/checks/critical-openclaw-json-keys.js.map +1 -0
  36. package/dist/src/cli/checks/install-path.d.ts +11 -0
  37. package/dist/src/cli/checks/install-path.js +89 -0
  38. package/dist/src/cli/checks/install-path.js.map +1 -0
  39. package/dist/src/cli/checks/patch-scaffold.d.ts +17 -0
  40. package/dist/src/cli/checks/patch-scaffold.js +56 -0
  41. package/dist/src/cli/checks/patch-scaffold.js.map +1 -0
  42. package/dist/src/cli/doctor.d.ts +20 -0
  43. package/dist/src/cli/doctor.js +93 -0
  44. package/dist/src/cli/doctor.js.map +1 -0
  45. package/dist/src/cli/index.d.ts +8 -0
  46. package/dist/src/cli/index.js +39 -0
  47. package/dist/src/cli/index.js.map +1 -0
  48. package/dist/src/cli/migrate.d.ts +29 -0
  49. package/dist/src/cli/migrate.js +75 -0
  50. package/dist/src/cli/migrate.js.map +1 -0
  51. package/dist/src/command-router/cc-handler.js +35 -709
  52. package/dist/src/command-router/cc-handler.js.map +1 -1
  53. package/dist/src/command-router/launch-policy.d.ts +93 -0
  54. package/dist/src/command-router/launch-policy.js +323 -0
  55. package/dist/src/command-router/launch-policy.js.map +1 -0
  56. package/dist/src/command-router/resume-policy.d.ts +18 -0
  57. package/dist/src/command-router/resume-policy.js +236 -0
  58. package/dist/src/command-router/resume-policy.js.map +1 -0
  59. package/dist/src/command-router/turn-formatter.d.ts +19 -0
  60. package/dist/src/command-router/turn-formatter.js +144 -0
  61. package/dist/src/command-router/turn-formatter.js.map +1 -0
  62. package/dist/src/config/drift-detector.d.ts +28 -0
  63. package/dist/src/config/drift-detector.js +75 -0
  64. package/dist/src/config/drift-detector.js.map +1 -0
  65. package/dist/src/config/loader.d.ts +8 -0
  66. package/dist/src/config/loader.js +69 -0
  67. package/dist/src/config/loader.js.map +1 -0
  68. package/dist/src/config/schema.d.ts +188 -0
  69. package/dist/src/config/schema.js +98 -0
  70. package/dist/src/config/schema.js.map +1 -0
  71. package/dist/src/council/build-agent-prompt.d.ts +11 -0
  72. package/dist/src/council/build-agent-prompt.js +96 -0
  73. package/dist/src/council/build-agent-prompt.js.map +1 -0
  74. package/dist/src/council/cleanup-worktrees.d.ts +10 -0
  75. package/dist/src/council/cleanup-worktrees.js +22 -0
  76. package/dist/src/council/cleanup-worktrees.js.map +1 -0
  77. package/dist/src/council/council.js +15 -186
  78. package/dist/src/council/council.js.map +1 -1
  79. package/dist/src/council/system-prompt.d.ts +16 -0
  80. package/dist/src/council/system-prompt.js +40 -0
  81. package/dist/src/council/system-prompt.js.map +1 -0
  82. package/dist/src/council/write-worktree-claude-md.d.ts +10 -0
  83. package/dist/src/council/write-worktree-claude-md.js +41 -0
  84. package/dist/src/council/write-worktree-claude-md.js.map +1 -0
  85. package/dist/src/engines/persistent-custom-session.js +3 -8
  86. package/dist/src/engines/persistent-custom-session.js.map +1 -1
  87. package/dist/src/engines/resolve-bin.d.ts +14 -0
  88. package/dist/src/engines/resolve-bin.js +18 -0
  89. package/dist/src/engines/resolve-bin.js.map +1 -0
  90. package/dist/src/lib/config-service.js +8 -0
  91. package/dist/src/lib/config-service.js.map +1 -1
  92. package/dist/src/lib/debounce.d.ts +12 -0
  93. package/dist/src/lib/debounce.js +23 -0
  94. package/dist/src/lib/debounce.js.map +1 -0
  95. package/dist/src/lib/domain-error.d.ts +59 -0
  96. package/dist/src/lib/domain-error.js +79 -0
  97. package/dist/src/lib/domain-error.js.map +1 -0
  98. package/dist/src/lib/json-array.d.ts +10 -0
  99. package/dist/src/lib/json-array.js +23 -0
  100. package/dist/src/lib/json-array.js.map +1 -0
  101. package/dist/src/lib/safe-upstream-probes.d.ts +25 -0
  102. package/dist/src/lib/safe-upstream-probes.js +42 -0
  103. package/dist/src/lib/safe-upstream-probes.js.map +1 -0
  104. package/dist/src/lib/spawn-async.d.ts +18 -0
  105. package/dist/src/lib/spawn-async.js +47 -0
  106. package/dist/src/lib/spawn-async.js.map +1 -0
  107. package/dist/src/lib/stale-pid-files.d.ts +17 -0
  108. package/dist/src/lib/stale-pid-files.js +40 -0
  109. package/dist/src/lib/stale-pid-files.js.map +1 -0
  110. package/dist/src/lifecycle/boot.d.ts +59 -0
  111. package/dist/src/lifecycle/boot.js +132 -0
  112. package/dist/src/lifecycle/boot.js.map +1 -0
  113. package/dist/src/lifecycle/patch-manifest.d.ts +82 -0
  114. package/dist/src/lifecycle/patch-manifest.js +126 -0
  115. package/dist/src/lifecycle/patch-manifest.js.map +1 -0
  116. package/dist/src/lifecycle/phase-import-upstream.d.ts +12 -0
  117. package/dist/src/lifecycle/phase-import-upstream.js +18 -0
  118. package/dist/src/lifecycle/phase-import-upstream.js.map +1 -0
  119. package/dist/src/lifecycle/phase-install-patches.d.ts +12 -0
  120. package/dist/src/lifecycle/phase-install-patches.js +31 -0
  121. package/dist/src/lifecycle/phase-install-patches.js.map +1 -0
  122. package/dist/src/lifecycle/phase-schedule-jobs.d.ts +12 -0
  123. package/dist/src/lifecycle/phase-schedule-jobs.js +15 -0
  124. package/dist/src/lifecycle/phase-schedule-jobs.js.map +1 -0
  125. package/dist/src/lifecycle/phase-start-server.d.ts +11 -0
  126. package/dist/src/lifecycle/phase-start-server.js +11 -0
  127. package/dist/src/lifecycle/phase-start-server.js.map +1 -0
  128. package/dist/src/lifecycle/phase-validate-config.d.ts +9 -0
  129. package/dist/src/lifecycle/phase-validate-config.js +25 -0
  130. package/dist/src/lifecycle/phase-validate-config.js.map +1 -0
  131. package/dist/src/lifecycle/phase-validate-upstream.d.ts +11 -0
  132. package/dist/src/lifecycle/phase-validate-upstream.js +16 -0
  133. package/dist/src/lifecycle/phase-validate-upstream.js.map +1 -0
  134. package/dist/src/lifecycle/phase-wire-handlers.d.ts +12 -0
  135. package/dist/src/lifecycle/phase-wire-handlers.js +16 -0
  136. package/dist/src/lifecycle/phase-wire-handlers.js.map +1 -0
  137. package/dist/src/observability/event-bus.d.ts +65 -0
  138. package/dist/src/observability/event-bus.js +52 -0
  139. package/dist/src/observability/event-bus.js.map +1 -0
  140. package/dist/src/observability/get-event-bus.d.ts +25 -0
  141. package/dist/src/observability/get-event-bus.js +34 -0
  142. package/dist/src/observability/get-event-bus.js.map +1 -0
  143. package/dist/src/observability/observability-service.d.ts +19 -0
  144. package/dist/src/observability/observability-service.js +24 -0
  145. package/dist/src/observability/observability-service.js.map +1 -0
  146. package/dist/src/observability/subscribers/metrics.d.ts +11 -0
  147. package/dist/src/observability/subscribers/metrics.js +21 -0
  148. package/dist/src/observability/subscribers/metrics.js.map +1 -0
  149. package/dist/src/observability/subscribers/session-capture.d.ts +15 -0
  150. package/dist/src/observability/subscribers/session-capture.js +25 -0
  151. package/dist/src/observability/subscribers/session-capture.js.map +1 -0
  152. package/dist/src/openai-compat/bridges/allowlist.d.ts +19 -0
  153. package/dist/src/openai-compat/bridges/allowlist.js +28 -0
  154. package/dist/src/openai-compat/bridges/allowlist.js.map +1 -0
  155. package/dist/src/openai-compat/bridges/factory.d.ts +30 -0
  156. package/dist/src/openai-compat/bridges/factory.js +84 -0
  157. package/dist/src/openai-compat/bridges/factory.js.map +1 -0
  158. package/dist/src/openai-compat/bridges/media-bridge.d.ts +34 -0
  159. package/dist/src/openai-compat/bridges/media-bridge.js +20 -0
  160. package/dist/src/openai-compat/bridges/media-bridge.js.map +1 -0
  161. package/dist/src/openai-compat/bridges/openclaw-api-shim.d.ts +54 -0
  162. package/dist/src/openai-compat/bridges/openclaw-api-shim.js +45 -0
  163. package/dist/src/openai-compat/bridges/openclaw-api-shim.js.map +1 -0
  164. package/dist/src/openai-compat/bridges/openclaw-native-tools.d.ts +61 -0
  165. package/dist/src/openai-compat/bridges/openclaw-native-tools.js +171 -0
  166. package/dist/src/openai-compat/bridges/openclaw-native-tools.js.map +1 -0
  167. package/dist/src/openai-compat/bridges/openclaw-tool-registry.d.ts +26 -0
  168. package/dist/src/openai-compat/bridges/openclaw-tool-registry.js +38 -0
  169. package/dist/src/openai-compat/bridges/openclaw-tool-registry.js.map +1 -0
  170. package/dist/src/openai-compat/bridges/tts-media-bridge.d.ts +19 -0
  171. package/dist/src/openai-compat/bridges/tts-media-bridge.js +59 -0
  172. package/dist/src/openai-compat/bridges/tts-media-bridge.js.map +1 -0
  173. package/dist/src/openai-compat/openai-chunk-types.d.ts +35 -0
  174. package/dist/src/openai-compat/openai-chunk-types.js +9 -0
  175. package/dist/src/openai-compat/openai-chunk-types.js.map +1 -0
  176. package/dist/src/openai-compat/openai-compat.d.ts +2 -90
  177. package/dist/src/openai-compat/openai-compat.js +68 -68
  178. package/dist/src/openai-compat/openai-compat.js.map +1 -1
  179. package/dist/src/openai-compat/openai-types.d.ts +71 -0
  180. package/dist/src/openai-compat/openai-types.js +11 -0
  181. package/dist/src/openai-compat/openai-types.js.map +1 -0
  182. package/dist/src/openai-compat/parse-route-body.d.ts +24 -0
  183. package/dist/src/openai-compat/parse-route-body.js +45 -0
  184. package/dist/src/openai-compat/parse-route-body.js.map +1 -0
  185. package/dist/src/openai-compat/tts-rule.d.ts +20 -0
  186. package/dist/src/openai-compat/tts-rule.js +58 -0
  187. package/dist/src/openai-compat/tts-rule.js.map +1 -0
  188. package/dist/src/openai-compat/voice-recovery.js +0 -1
  189. package/dist/src/openai-compat/voice-recovery.js.map +1 -1
  190. package/dist/src/patches/cache-parity-registry.d.ts +20 -0
  191. package/dist/src/patches/cache-parity-registry.js +64 -0
  192. package/dist/src/patches/cache-parity-registry.js.map +1 -0
  193. package/dist/src/patches/claude-md-injection.d.ts +10 -0
  194. package/dist/src/patches/claude-md-injection.js +46 -0
  195. package/dist/src/patches/claude-md-injection.js.map +1 -0
  196. package/dist/src/patches/cwd-redirect.d.ts +10 -0
  197. package/dist/src/patches/cwd-redirect.js +51 -0
  198. package/dist/src/patches/cwd-redirect.js.map +1 -0
  199. package/dist/src/patches/embedded-server-route.d.ts +23 -0
  200. package/dist/src/patches/embedded-server-route.js +64 -0
  201. package/dist/src/patches/embedded-server-route.js.map +1 -0
  202. package/dist/src/patches/pricing-overrides.d.ts +10 -0
  203. package/dist/src/patches/pricing-overrides.js +55 -0
  204. package/dist/src/patches/pricing-overrides.js.map +1 -0
  205. package/dist/src/patches/resume-registry-restore.d.ts +11 -0
  206. package/dist/src/patches/resume-registry-restore.js +48 -0
  207. package/dist/src/patches/resume-registry-restore.js.map +1 -0
  208. package/dist/src/patches/session-pid-tracking.d.ts +10 -0
  209. package/dist/src/patches/session-pid-tracking.js +45 -0
  210. package/dist/src/patches/session-pid-tracking.js.map +1 -0
  211. package/dist/src/patches/sysprompt-strip.d.ts +46 -0
  212. package/dist/src/patches/sysprompt-strip.js +78 -0
  213. package/dist/src/patches/sysprompt-strip.js.map +1 -0
  214. package/dist/src/patches/sysprompt-strip.spec.d.ts +33 -0
  215. package/dist/src/patches/sysprompt-strip.spec.js +53 -0
  216. package/dist/src/patches/sysprompt-strip.spec.js.map +1 -0
  217. package/dist/src/patches/tools-restoration.d.ts +12 -0
  218. package/dist/src/patches/tools-restoration.js +43 -0
  219. package/dist/src/patches/tools-restoration.js.map +1 -0
  220. package/dist/src/persistence/migration-v0.d.ts +24 -0
  221. package/dist/src/persistence/migration-v0.js +142 -0
  222. package/dist/src/persistence/migration-v0.js.map +1 -0
  223. package/dist/src/persistence/session-registry.d.ts +57 -0
  224. package/dist/src/persistence/session-registry.js +58 -0
  225. package/dist/src/persistence/session-registry.js.map +1 -0
  226. package/dist/src/persistence/snapshot.d.ts +18 -0
  227. package/dist/src/persistence/snapshot.js +32 -0
  228. package/dist/src/persistence/snapshot.js.map +1 -0
  229. package/dist/src/persistence/wal.d.ts +17 -0
  230. package/dist/src/persistence/wal.js +32 -0
  231. package/dist/src/persistence/wal.js.map +1 -0
  232. package/dist/src/session/persisted-sessions.d.ts +26 -0
  233. package/dist/src/session/persisted-sessions.js +70 -0
  234. package/dist/src/session/persisted-sessions.js.map +1 -0
  235. package/dist/src/session/session-manager.d.ts +2 -11
  236. package/dist/src/session/session-manager.js +22 -66
  237. package/dist/src/session/session-manager.js.map +1 -1
  238. package/dist/src/session-bootstrap/boot-self-heal.d.ts +32 -0
  239. package/dist/src/session-bootstrap/boot-self-heal.js +54 -0
  240. package/dist/src/session-bootstrap/boot-self-heal.js.map +1 -0
  241. package/dist/src/session-bootstrap/cwd-patch.js +11 -87
  242. package/dist/src/session-bootstrap/cwd-patch.js.map +1 -1
  243. package/dist/src/session-bootstrap/resume-registry.d.ts +29 -0
  244. package/dist/src/session-bootstrap/resume-registry.js +58 -0
  245. package/dist/src/session-bootstrap/resume-registry.js.map +1 -0
  246. package/dist/src/session-bootstrap/session-hygiene.d.ts +23 -0
  247. package/dist/src/session-bootstrap/session-hygiene.js +41 -0
  248. package/dist/src/session-bootstrap/session-hygiene.js.map +1 -0
  249. package/dist/src/types/runtime-config.d.ts +11 -0
  250. package/dist/src/types/runtime-config.js +9 -0
  251. package/dist/src/types/runtime-config.js.map +1 -1
  252. package/dist/src/types/tool-bridge.d.ts +2 -1
  253. package/dist/src/types/tool-bridge.js +1 -0
  254. package/dist/src/types/tool-bridge.js.map +1 -1
  255. package/package.json +1 -1
  256. package/dist/scripts/bench/ab-harness.d.ts +0 -58
  257. package/dist/scripts/bench/ab-harness.d.ts.map +0 -1
  258. package/dist/scripts/bench/ab-harness.js +0 -78
  259. package/dist/scripts/bench/ab-harness.js.map +0 -1
  260. package/dist/src/channels/adapter.d.ts.map +0 -1
  261. package/dist/src/channels/telegram/completion-summary.d.ts.map +0 -1
  262. package/dist/src/channels/telegram/error-renderer.d.ts.map +0 -1
  263. package/dist/src/channels/telegram/event-reducer.d.ts.map +0 -1
  264. package/dist/src/channels/telegram/index.d.ts.map +0 -1
  265. package/dist/src/channels/telegram/injector.d.ts.map +0 -1
  266. package/dist/src/channels/telegram/live-card.d.ts.map +0 -1
  267. package/dist/src/channels/telegram/state-machine.d.ts.map +0 -1
  268. package/dist/src/channels/telegram/tool-tracker.d.ts.map +0 -1
  269. package/dist/src/command-router/cc-handler.d.ts.map +0 -1
  270. package/dist/src/command-router/index.d.ts.map +0 -1
  271. package/dist/src/constants.d.ts.map +0 -1
  272. package/dist/src/council/consensus.d.ts.map +0 -1
  273. package/dist/src/council/council.d.ts.map +0 -1
  274. package/dist/src/council/index.d.ts.map +0 -1
  275. package/dist/src/engines/base-oneshot-session.d.ts.map +0 -1
  276. package/dist/src/engines/index.d.ts.map +0 -1
  277. package/dist/src/engines/persistent-codex-session.d.ts.map +0 -1
  278. package/dist/src/engines/persistent-cursor-session.d.ts.map +0 -1
  279. package/dist/src/engines/persistent-custom-session.d.ts.map +0 -1
  280. package/dist/src/engines/persistent-gemini-session.d.ts.map +0 -1
  281. package/dist/src/engines/persistent-session.d.ts.map +0 -1
  282. package/dist/src/health/handler.d.ts.map +0 -1
  283. package/dist/src/health/index.d.ts.map +0 -1
  284. package/dist/src/index.d.ts.map +0 -1
  285. package/dist/src/lib/auto-recovery.d.ts.map +0 -1
  286. package/dist/src/lib/cache-parity.d.ts.map +0 -1
  287. package/dist/src/lib/circuit-breaker.d.ts.map +0 -1
  288. package/dist/src/lib/config.d.ts.map +0 -1
  289. package/dist/src/lib/drift-detector.d.ts.map +0 -1
  290. package/dist/src/lib/error-formatter.d.ts.map +0 -1
  291. package/dist/src/lib/heartbeat-workaround.d.ts.map +0 -1
  292. package/dist/src/lib/index.d.ts.map +0 -1
  293. package/dist/src/lib/register-guard.d.ts.map +0 -1
  294. package/dist/src/lib/route-flag.d.ts +0 -49
  295. package/dist/src/lib/route-flag.d.ts.map +0 -1
  296. package/dist/src/lib/route-flag.js +0 -52
  297. package/dist/src/lib/route-flag.js.map +0 -1
  298. package/dist/src/lib/sysprompt-strip.d.ts.map +0 -1
  299. package/dist/src/lib/telemetry.d.ts.map +0 -1
  300. package/dist/src/lib/test-mode.d.ts.map +0 -1
  301. package/dist/src/lib/vendor-paths.d.ts.map +0 -1
  302. package/dist/src/logger.d.ts.map +0 -1
  303. package/dist/src/mcp/bridge.d.ts.map +0 -1
  304. package/dist/src/mcp/index.d.ts.map +0 -1
  305. package/dist/src/models.d.ts.map +0 -1
  306. package/dist/src/openai-compat/cli-stream-parser.d.ts.map +0 -1
  307. package/dist/src/openai-compat/index.d.ts.map +0 -1
  308. package/dist/src/openai-compat/openai-compat.d.ts.map +0 -1
  309. package/dist/src/openai-compat/skill-resolver.d.ts.map +0 -1
  310. package/dist/src/openai-compat/sse-translator.d.ts.map +0 -1
  311. package/dist/src/proxy/anthropic-adapter.d.ts.map +0 -1
  312. package/dist/src/proxy/handler.d.ts.map +0 -1
  313. package/dist/src/proxy/index.d.ts.map +0 -1
  314. package/dist/src/proxy/schema-cleaner.d.ts.map +0 -1
  315. package/dist/src/proxy/thought-cache.d.ts.map +0 -1
  316. package/dist/src/session/embedded-server.d.ts.map +0 -1
  317. package/dist/src/session/inbox-manager.d.ts.map +0 -1
  318. package/dist/src/session/index.d.ts.map +0 -1
  319. package/dist/src/session/session-manager.d.ts.map +0 -1
  320. package/dist/src/session-bootstrap/cwd-patch.d.ts.map +0 -1
  321. package/dist/src/session-bootstrap/index.d.ts.map +0 -1
  322. package/dist/src/session-bootstrap/sysprompt-strip.d.ts.map +0 -1
  323. package/dist/src/session-bootstrap/think-conflict-resolver.d.ts.map +0 -1
  324. package/dist/src/types.d.ts.map +0 -1
  325. package/dist/src/validation.d.ts.map +0 -1
  326. package/dist/tests/_helpers/subprocess-mock.d.ts +0 -35
  327. package/dist/tests/_helpers/subprocess-mock.d.ts.map +0 -1
  328. package/dist/tests/_helpers/subprocess-mock.js +0 -136
  329. package/dist/tests/_helpers/subprocess-mock.js.map +0 -1
  330. package/dist/tests/auto-recovery.test.d.ts +0 -2
  331. package/dist/tests/auto-recovery.test.d.ts.map +0 -1
  332. package/dist/tests/auto-recovery.test.js +0 -185
  333. package/dist/tests/auto-recovery.test.js.map +0 -1
  334. package/dist/tests/bench-harness.test.d.ts +0 -2
  335. package/dist/tests/bench-harness.test.d.ts.map +0 -1
  336. package/dist/tests/bench-harness.test.js +0 -21
  337. package/dist/tests/bench-harness.test.js.map +0 -1
  338. package/dist/tests/cache-parity.test.d.ts +0 -2
  339. package/dist/tests/cache-parity.test.d.ts.map +0 -1
  340. package/dist/tests/cache-parity.test.js +0 -401
  341. package/dist/tests/cache-parity.test.js.map +0 -1
  342. package/dist/tests/command-router.test.d.ts +0 -2
  343. package/dist/tests/command-router.test.d.ts.map +0 -1
  344. package/dist/tests/command-router.test.js +0 -60
  345. package/dist/tests/command-router.test.js.map +0 -1
  346. package/dist/tests/council.test.d.ts +0 -2
  347. package/dist/tests/council.test.d.ts.map +0 -1
  348. package/dist/tests/council.test.js +0 -20
  349. package/dist/tests/council.test.js.map +0 -1
  350. package/dist/tests/drift-detector.test.d.ts +0 -2
  351. package/dist/tests/drift-detector.test.d.ts.map +0 -1
  352. package/dist/tests/drift-detector.test.js +0 -268
  353. package/dist/tests/drift-detector.test.js.map +0 -1
  354. package/dist/tests/eager-bootstrap-gating.test.d.ts +0 -9
  355. package/dist/tests/eager-bootstrap-gating.test.d.ts.map +0 -1
  356. package/dist/tests/eager-bootstrap-gating.test.js +0 -97
  357. package/dist/tests/eager-bootstrap-gating.test.js.map +0 -1
  358. package/dist/tests/engines.test.d.ts +0 -2
  359. package/dist/tests/engines.test.d.ts.map +0 -1
  360. package/dist/tests/engines.test.js +0 -8
  361. package/dist/tests/engines.test.js.map +0 -1
  362. package/dist/tests/error-formatter.test.d.ts +0 -2
  363. package/dist/tests/error-formatter.test.d.ts.map +0 -1
  364. package/dist/tests/error-formatter.test.js +0 -220
  365. package/dist/tests/error-formatter.test.js.map +0 -1
  366. package/dist/tests/health.test.d.ts +0 -2
  367. package/dist/tests/health.test.d.ts.map +0 -1
  368. package/dist/tests/health.test.js +0 -110
  369. package/dist/tests/health.test.js.map +0 -1
  370. package/dist/tests/heartbeat-workaround.test.d.ts +0 -2
  371. package/dist/tests/heartbeat-workaround.test.d.ts.map +0 -1
  372. package/dist/tests/heartbeat-workaround.test.js +0 -90
  373. package/dist/tests/heartbeat-workaround.test.js.map +0 -1
  374. package/dist/tests/index.test.d.ts +0 -2
  375. package/dist/tests/index.test.d.ts.map +0 -1
  376. package/dist/tests/index.test.js +0 -7
  377. package/dist/tests/index.test.js.map +0 -1
  378. package/dist/tests/lib-sysprompt-strip.test.d.ts +0 -2
  379. package/dist/tests/lib-sysprompt-strip.test.d.ts.map +0 -1
  380. package/dist/tests/lib-sysprompt-strip.test.js +0 -145
  381. package/dist/tests/lib-sysprompt-strip.test.js.map +0 -1
  382. package/dist/tests/listener-activation.test.d.ts +0 -2
  383. package/dist/tests/listener-activation.test.d.ts.map +0 -1
  384. package/dist/tests/listener-activation.test.js +0 -87
  385. package/dist/tests/listener-activation.test.js.map +0 -1
  386. package/dist/tests/mcp-bridge.test.d.ts +0 -2
  387. package/dist/tests/mcp-bridge.test.d.ts.map +0 -1
  388. package/dist/tests/mcp-bridge.test.js +0 -137
  389. package/dist/tests/mcp-bridge.test.js.map +0 -1
  390. package/dist/tests/openai-compat.test.d.ts +0 -2
  391. package/dist/tests/openai-compat.test.d.ts.map +0 -1
  392. package/dist/tests/openai-compat.test.js +0 -8
  393. package/dist/tests/openai-compat.test.js.map +0 -1
  394. package/dist/tests/proxy-heartbeat-integration.test.d.ts +0 -15
  395. package/dist/tests/proxy-heartbeat-integration.test.d.ts.map +0 -1
  396. package/dist/tests/proxy-heartbeat-integration.test.js +0 -122
  397. package/dist/tests/proxy-heartbeat-integration.test.js.map +0 -1
  398. package/dist/tests/proxy.test.d.ts +0 -2
  399. package/dist/tests/proxy.test.d.ts.map +0 -1
  400. package/dist/tests/proxy.test.js +0 -8
  401. package/dist/tests/proxy.test.js.map +0 -1
  402. package/dist/tests/register-guard-stacking.test.d.ts +0 -2
  403. package/dist/tests/register-guard-stacking.test.d.ts.map +0 -1
  404. package/dist/tests/register-guard-stacking.test.js +0 -61
  405. package/dist/tests/register-guard-stacking.test.js.map +0 -1
  406. package/dist/tests/register-guard.test.d.ts +0 -2
  407. package/dist/tests/register-guard.test.d.ts.map +0 -1
  408. package/dist/tests/register-guard.test.js +0 -129
  409. package/dist/tests/register-guard.test.js.map +0 -1
  410. package/dist/tests/route-flag-rollback.test.d.ts +0 -2
  411. package/dist/tests/route-flag-rollback.test.d.ts.map +0 -1
  412. package/dist/tests/route-flag-rollback.test.js +0 -70
  413. package/dist/tests/route-flag-rollback.test.js.map +0 -1
  414. package/dist/tests/route-flag.test.d.ts +0 -2
  415. package/dist/tests/route-flag.test.d.ts.map +0 -1
  416. package/dist/tests/route-flag.test.js +0 -101
  417. package/dist/tests/route-flag.test.js.map +0 -1
  418. package/dist/tests/session-bootstrap.test.d.ts +0 -2
  419. package/dist/tests/session-bootstrap.test.d.ts.map +0 -1
  420. package/dist/tests/session-bootstrap.test.js +0 -183
  421. package/dist/tests/session-bootstrap.test.js.map +0 -1
  422. package/dist/tests/session.test.d.ts +0 -2
  423. package/dist/tests/session.test.d.ts.map +0 -1
  424. package/dist/tests/session.test.js +0 -17
  425. package/dist/tests/session.test.js.map +0 -1
  426. package/dist/tests/state-machine.test.d.ts +0 -2
  427. package/dist/tests/state-machine.test.d.ts.map +0 -1
  428. package/dist/tests/state-machine.test.js +0 -133
  429. package/dist/tests/state-machine.test.js.map +0 -1
  430. package/dist/tests/streaming/cli-stream-parser.test.d.ts +0 -2
  431. package/dist/tests/streaming/cli-stream-parser.test.d.ts.map +0 -1
  432. package/dist/tests/streaming/cli-stream-parser.test.js +0 -233
  433. package/dist/tests/streaming/cli-stream-parser.test.js.map +0 -1
  434. package/dist/tests/streaming/feature-flag.test.d.ts +0 -14
  435. package/dist/tests/streaming/feature-flag.test.d.ts.map +0 -1
  436. package/dist/tests/streaming/feature-flag.test.js +0 -163
  437. package/dist/tests/streaming/feature-flag.test.js.map +0 -1
  438. package/dist/tests/streaming/no-tools-prompt.test.d.ts +0 -17
  439. package/dist/tests/streaming/no-tools-prompt.test.d.ts.map +0 -1
  440. package/dist/tests/streaming/no-tools-prompt.test.js +0 -229
  441. package/dist/tests/streaming/no-tools-prompt.test.js.map +0 -1
  442. package/dist/tests/streaming/skill-plus-tools.test.d.ts +0 -14
  443. package/dist/tests/streaming/skill-plus-tools.test.d.ts.map +0 -1
  444. package/dist/tests/streaming/skill-plus-tools.test.js +0 -234
  445. package/dist/tests/streaming/skill-plus-tools.test.js.map +0 -1
  446. package/dist/tests/streaming/sse-translator.test.d.ts +0 -2
  447. package/dist/tests/streaming/sse-translator.test.d.ts.map +0 -1
  448. package/dist/tests/streaming/sse-translator.test.js +0 -227
  449. package/dist/tests/streaming/sse-translator.test.js.map +0 -1
  450. package/dist/tests/streaming/tool-result-roundtrip.test.d.ts +0 -11
  451. package/dist/tests/streaming/tool-result-roundtrip.test.d.ts.map +0 -1
  452. package/dist/tests/streaming/tool-result-roundtrip.test.js +0 -215
  453. package/dist/tests/streaming/tool-result-roundtrip.test.js.map +0 -1
  454. package/dist/tests/streaming/tool-use-translation.test.d.ts +0 -10
  455. package/dist/tests/streaming/tool-use-translation.test.d.ts.map +0 -1
  456. package/dist/tests/streaming/tool-use-translation.test.js +0 -251
  457. package/dist/tests/streaming/tool-use-translation.test.js.map +0 -1
  458. package/dist/tests/telegram-bridge.test.d.ts +0 -2
  459. package/dist/tests/telegram-bridge.test.d.ts.map +0 -1
  460. package/dist/tests/telegram-bridge.test.js +0 -17
  461. package/dist/tests/telegram-bridge.test.js.map +0 -1
  462. package/dist/tests/telegram-injector.test.d.ts +0 -2
  463. package/dist/tests/telegram-injector.test.d.ts.map +0 -1
  464. package/dist/tests/telegram-injector.test.js +0 -74
  465. package/dist/tests/telegram-injector.test.js.map +0 -1
  466. package/dist/tests/telemetry.test.d.ts +0 -2
  467. package/dist/tests/telemetry.test.d.ts.map +0 -1
  468. package/dist/tests/telemetry.test.js +0 -405
  469. package/dist/tests/telemetry.test.js.map +0 -1
  470. package/dist/tests/test-mode.test.d.ts +0 -2
  471. package/dist/tests/test-mode.test.d.ts.map +0 -1
  472. package/dist/tests/test-mode.test.js +0 -39
  473. package/dist/tests/test-mode.test.js.map +0 -1
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Phase 3 — validate-upstream
3
+ *
4
+ * Runs PatchManifest.validate() against the imported upstream namespace.
5
+ * Re-throws validation failures as DriftError (already typed by PatchManifest).
6
+ *
7
+ * Boot refuses and surfaces a drift report if ANY probe fails.
8
+ * install() is NEVER called from this phase — that is phase 4.
9
+ */
10
+ import type { PatchManifest } from './patch-manifest.js';
11
+ export declare function validateUpstream(manifest: PatchManifest, _upstreamNs: unknown): Promise<void>;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Phase 3 — validate-upstream
3
+ *
4
+ * Runs PatchManifest.validate() against the imported upstream namespace.
5
+ * Re-throws validation failures as DriftError (already typed by PatchManifest).
6
+ *
7
+ * Boot refuses and surfaces a drift report if ANY probe fails.
8
+ * install() is NEVER called from this phase — that is phase 4.
9
+ */
10
+ export async function validateUpstream(manifest, _upstreamNs) {
11
+ // upstreamNs is unused at this layer — each PatchSpec resolves its own
12
+ // target via PatchSpec.resolve(). The parameter is kept in the signature
13
+ // for boot.ts wiring symmetry.
14
+ await manifest.validate();
15
+ }
16
+ //# sourceMappingURL=phase-validate-upstream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phase-validate-upstream.js","sourceRoot":"","sources":["../../../src/lifecycle/phase-validate-upstream.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAuB,EACvB,WAAoB;IAEpB,uEAAuE;IACvE,yEAAyE;IACzE,+BAA+B;IAC/B,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Phase 5 — wire-handlers
3
+ *
4
+ * Registers EventBus subscribers BEFORE the server starts accepting traffic
5
+ * (phase 6). This ordering closes the v0.6.0 subscription-vs-traffic race
6
+ * where SessionCaptureSubscriber missed early session events.
7
+ *
8
+ * Phase E wires the real subscribers (SessionCaptureSubscriber, MetricsSubscriber).
9
+ * This scaffold calls ObservabilityService.init(bus) which registers stubs.
10
+ */
11
+ import type { EventBus } from '../observability/event-bus.js';
12
+ export declare function wireHandlers(bus: EventBus): void;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Phase 5 — wire-handlers
3
+ *
4
+ * Registers EventBus subscribers BEFORE the server starts accepting traffic
5
+ * (phase 6). This ordering closes the v0.6.0 subscription-vs-traffic race
6
+ * where SessionCaptureSubscriber missed early session events.
7
+ *
8
+ * Phase E wires the real subscribers (SessionCaptureSubscriber, MetricsSubscriber).
9
+ * This scaffold calls ObservabilityService.init(bus) which registers stubs.
10
+ */
11
+ import { ObservabilityService } from '../observability/observability-service.js';
12
+ export function wireHandlers(bus) {
13
+ const svc = new ObservabilityService();
14
+ svc.init(bus);
15
+ }
16
+ //# sourceMappingURL=phase-wire-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phase-wire-handlers.js","sourceRoot":"","sources":["../../../src/lifecycle/phase-wire-handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,MAAM,UAAU,YAAY,CAAC,GAAa;IACxC,MAAM,GAAG,GAAG,IAAI,oBAAoB,EAAE,CAAC;IACvC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChB,CAAC"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * EventBus — typed event emitter replacing all globalThis.__openclaw_* Maps.
3
+ *
4
+ * Contract (PRP §3.2 G4):
5
+ * - on<K>(event, listener) returns an unsubscribe function (no EventEmitter leak)
6
+ * - emit<K>(event, payload) is synchronous; delivery <1ms target
7
+ * - Subscribers wired in boot phase 5 BEFORE traffic (phase 6 start-server)
8
+ *
9
+ * EventMap keys use dot-notation: "session.started", "boot.ready", etc.
10
+ * Adding a new event requires only a type entry here — no subclass needed.
11
+ */
12
+ import type { Config } from '../config/schema.js';
13
+ type SessionName = string & {
14
+ readonly __brand: 'SessionName';
15
+ };
16
+ export type EventMap = {
17
+ /** Emitted when a Claude CLI session subprocess starts. `pid` is `null`
18
+ * when the underlying ISession adapter doesn't expose a process id yet. */
19
+ 'session.started': {
20
+ name: SessionName;
21
+ pid: number | null;
22
+ };
23
+ /** Emitted when a session subprocess exits cleanly. */
24
+ 'session.completed': {
25
+ name: SessionName;
26
+ tokens: number;
27
+ };
28
+ /** Emitted on every tool_use event within a session turn. */
29
+ 'session.tool-use': {
30
+ name: SessionName;
31
+ tool: string;
32
+ input: unknown;
33
+ };
34
+ /** Emitted after PatchManifest.install() succeeds for a single spec. */
35
+ 'patch.installed': {
36
+ id: string;
37
+ };
38
+ /** Emitted when a PatchSpec probe fails during validate-upstream. */
39
+ 'patch.drift': {
40
+ id: string;
41
+ expected: string;
42
+ actual: string;
43
+ };
44
+ /** Emitted at the end of a successful 7-phase boot. */
45
+ 'boot.ready': {
46
+ config: Config;
47
+ };
48
+ };
49
+ type Listener<K extends keyof EventMap> = (payload: EventMap[K]) => void;
50
+ export declare class EventBus {
51
+ private readonly listeners;
52
+ /**
53
+ * Subscribe to an event. Returns an unsubscribe function.
54
+ * Calling the returned function is idempotent.
55
+ */
56
+ on<K extends keyof EventMap>(event: K, listener: Listener<K>): () => void;
57
+ /**
58
+ * Emit an event synchronously. All listeners receive the payload in
59
+ * registration order. Errors in listeners propagate to the caller.
60
+ */
61
+ emit<K extends keyof EventMap>(event: K, payload: EventMap[K]): void;
62
+ /** Number of active listeners across all event keys. */
63
+ get listenerCount(): number;
64
+ }
65
+ export {};
@@ -0,0 +1,52 @@
1
+ /**
2
+ * EventBus — typed event emitter replacing all globalThis.__openclaw_* Maps.
3
+ *
4
+ * Contract (PRP §3.2 G4):
5
+ * - on<K>(event, listener) returns an unsubscribe function (no EventEmitter leak)
6
+ * - emit<K>(event, payload) is synchronous; delivery <1ms target
7
+ * - Subscribers wired in boot phase 5 BEFORE traffic (phase 6 start-server)
8
+ *
9
+ * EventMap keys use dot-notation: "session.started", "boot.ready", etc.
10
+ * Adding a new event requires only a type entry here — no subclass needed.
11
+ */
12
+ // ── EventBus class ────────────────────────────────────────────────────────────
13
+ export class EventBus {
14
+ listeners = new Map();
15
+ /**
16
+ * Subscribe to an event. Returns an unsubscribe function.
17
+ * Calling the returned function is idempotent.
18
+ */
19
+ on(event, listener) {
20
+ let set = this.listeners.get(event);
21
+ if (!set) {
22
+ set = new Set();
23
+ this.listeners.set(event, set);
24
+ }
25
+ // Cast: the Set stores Listener<keyof EventMap>; narrowed by K on emit.
26
+ set.add(listener);
27
+ return () => {
28
+ set.delete(listener);
29
+ };
30
+ }
31
+ /**
32
+ * Emit an event synchronously. All listeners receive the payload in
33
+ * registration order. Errors in listeners propagate to the caller.
34
+ */
35
+ emit(event, payload) {
36
+ const set = this.listeners.get(event);
37
+ if (!set)
38
+ return;
39
+ for (const listener of set) {
40
+ listener(payload);
41
+ }
42
+ }
43
+ /** Number of active listeners across all event keys. */
44
+ get listenerCount() {
45
+ let total = 0;
46
+ for (const set of this.listeners.values()) {
47
+ total += set.size;
48
+ }
49
+ return total;
50
+ }
51
+ }
52
+ //# sourceMappingURL=event-bus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../../src/observability/event-bus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA+BH,iFAAiF;AAEjF,MAAM,OAAO,QAAQ;IACF,SAAS,GAAG,IAAI,GAAG,EAAiD,CAAC;IAEtF;;;OAGG;IACH,EAAE,CAA2B,KAAQ,EAAE,QAAqB;QAC1D,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;QACD,wEAAwE;QACvE,GAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAExC,OAAO,GAAG,EAAE;YACT,GAAwB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,IAAI,CAA2B,KAAQ,EAAE,OAAoB;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,KAAK,MAAM,QAAQ,IAAI,GAAG,EAAE,CAAC;YAC1B,QAAwB,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,wDAAwD;IACxD,IAAI,aAAa;QACf,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1C,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC;QACpB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * `getEventBus()` — process-wide singleton accessor for the EventBus.
3
+ *
4
+ * Phase E#5 (v0.12.0): the EventBus moves from scaffold to hot path. This
5
+ * module is the bootstrap seam: every hot-path callsite that emits a typed
6
+ * event imports this accessor instead of constructing its own EventBus.
7
+ *
8
+ * The singleton replaces the long-deprecated `globalThis.__openclaw_*` Map
9
+ * pattern. Listeners must be registered before traffic starts (boot phase 5
10
+ * per PRP §3.4); subscribers added later still work but may miss events
11
+ * fired during a race window.
12
+ *
13
+ * Test isolation: vitest unit tests can call `__resetEventBusForTests()` to
14
+ * drop all listeners between cases. Production code never calls it.
15
+ */
16
+ import { EventBus } from './event-bus.js';
17
+ /**
18
+ * Returns the singleton EventBus. Lazy-initializes on first call.
19
+ */
20
+ export declare function getEventBus(): EventBus;
21
+ /**
22
+ * Test-only helper. Drops the singleton so each test starts with zero
23
+ * listeners. Never call from production code.
24
+ */
25
+ export declare function __resetEventBusForTests(): void;
@@ -0,0 +1,34 @@
1
+ /**
2
+ * `getEventBus()` — process-wide singleton accessor for the EventBus.
3
+ *
4
+ * Phase E#5 (v0.12.0): the EventBus moves from scaffold to hot path. This
5
+ * module is the bootstrap seam: every hot-path callsite that emits a typed
6
+ * event imports this accessor instead of constructing its own EventBus.
7
+ *
8
+ * The singleton replaces the long-deprecated `globalThis.__openclaw_*` Map
9
+ * pattern. Listeners must be registered before traffic starts (boot phase 5
10
+ * per PRP §3.4); subscribers added later still work but may miss events
11
+ * fired during a race window.
12
+ *
13
+ * Test isolation: vitest unit tests can call `__resetEventBusForTests()` to
14
+ * drop all listeners between cases. Production code never calls it.
15
+ */
16
+ import { EventBus } from './event-bus.js';
17
+ let _instance = null;
18
+ /**
19
+ * Returns the singleton EventBus. Lazy-initializes on first call.
20
+ */
21
+ export function getEventBus() {
22
+ if (!_instance) {
23
+ _instance = new EventBus();
24
+ }
25
+ return _instance;
26
+ }
27
+ /**
28
+ * Test-only helper. Drops the singleton so each test starts with zero
29
+ * listeners. Never call from production code.
30
+ */
31
+ export function __resetEventBusForTests() {
32
+ _instance = null;
33
+ }
34
+ //# sourceMappingURL=get-event-bus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-event-bus.js","sourceRoot":"","sources":["../../../src/observability/get-event-bus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,IAAI,SAAS,GAAoB,IAAI,CAAC;AAEtC;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC7B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB;IACrC,SAAS,GAAG,IAAI,CAAC;AACnB,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * ObservabilityService — composes EventBus + all subscribers.
3
+ *
4
+ * init(bus) is called in boot phase 5 (wire-handlers) before the server
5
+ * starts accepting traffic. This ordering closes the subscription-vs-traffic
6
+ * race that existed prior to v0.6.0.
7
+ *
8
+ * Phase E wires real subscriber logic; stubs here keep build green.
9
+ */
10
+ import type { EventBus } from './event-bus.js';
11
+ export declare class ObservabilityService {
12
+ private readonly sessionCapture;
13
+ private readonly metrics;
14
+ /**
15
+ * Register all subscribers against the provided bus.
16
+ * Must be called before traffic is accepted (boot phase 5).
17
+ */
18
+ init(bus: EventBus): void;
19
+ }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * ObservabilityService — composes EventBus + all subscribers.
3
+ *
4
+ * init(bus) is called in boot phase 5 (wire-handlers) before the server
5
+ * starts accepting traffic. This ordering closes the subscription-vs-traffic
6
+ * race that existed prior to v0.6.0.
7
+ *
8
+ * Phase E wires real subscriber logic; stubs here keep build green.
9
+ */
10
+ import { SessionCaptureSubscriber } from './subscribers/session-capture.js';
11
+ import { MetricsSubscriber } from './subscribers/metrics.js';
12
+ export class ObservabilityService {
13
+ sessionCapture = new SessionCaptureSubscriber();
14
+ metrics = new MetricsSubscriber();
15
+ /**
16
+ * Register all subscribers against the provided bus.
17
+ * Must be called before traffic is accepted (boot phase 5).
18
+ */
19
+ init(bus) {
20
+ this.sessionCapture.register(bus);
21
+ this.metrics.register(bus);
22
+ }
23
+ }
24
+ //# sourceMappingURL=observability-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observability-service.js","sourceRoot":"","sources":["../../../src/observability/observability-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,OAAO,oBAAoB;IACd,cAAc,GAAG,IAAI,wBAAwB,EAAE,CAAC;IAChD,OAAO,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAEnD;;;OAGG;IACH,IAAI,CAAC,GAAa;QAChB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * MetricsSubscriber — collects per-session token and timing metrics.
3
+ *
4
+ * Replaces globalThis.__openclaw_perfMap (AS2).
5
+ * Phase E wires real aggregation and exposes metrics via /enhancer/metrics.
6
+ * Stub body here.
7
+ */
8
+ import type { EventBus } from '../event-bus.js';
9
+ export declare class MetricsSubscriber {
10
+ register(bus: EventBus): void;
11
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * MetricsSubscriber — collects per-session token and timing metrics.
3
+ *
4
+ * Replaces globalThis.__openclaw_perfMap (AS2).
5
+ * Phase E wires real aggregation and exposes metrics via /enhancer/metrics.
6
+ * Stub body here.
7
+ */
8
+ export class MetricsSubscriber {
9
+ register(bus) {
10
+ bus.on('session.completed', (_payload) => {
11
+ // Phase E: accumulate token counts, compute latency, update perfMap.
12
+ });
13
+ bus.on('patch.installed', (_payload) => {
14
+ // Phase E: record patch install time for cold-start budget tracking.
15
+ });
16
+ bus.on('patch.drift', (_payload) => {
17
+ // Phase E: emit warning to Telegram live-card or log file.
18
+ });
19
+ }
20
+ }
21
+ //# sourceMappingURL=metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../../src/observability/subscribers/metrics.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,OAAO,iBAAiB;IAC5B,QAAQ,CAAC,GAAa;QACpB,GAAG,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,QAAQ,EAAE,EAAE;YACvC,qEAAqE;QACvE,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,QAAQ,EAAE,EAAE;YACrC,qEAAqE;QACvE,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,QAAQ,EAAE,EAAE;YACjC,2DAA2D;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * SessionCaptureSubscriber — replaces the 5s ultrareview poller (LP2).
3
+ *
4
+ * Wired in boot phase 5 (wire-handlers) BEFORE traffic starts.
5
+ * Phase E implements the real capture logic (writing to SessionRegistry WAL,
6
+ * updating live-card state, etc.). Stub body here.
7
+ */
8
+ import type { EventBus } from '../event-bus.js';
9
+ export declare class SessionCaptureSubscriber {
10
+ /**
11
+ * Register listeners on the bus. Returns nothing; unsubscribe handles
12
+ * are held internally (Phase E: stored for clean shutdown).
13
+ */
14
+ register(bus: EventBus): void;
15
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * SessionCaptureSubscriber — replaces the 5s ultrareview poller (LP2).
3
+ *
4
+ * Wired in boot phase 5 (wire-handlers) BEFORE traffic starts.
5
+ * Phase E implements the real capture logic (writing to SessionRegistry WAL,
6
+ * updating live-card state, etc.). Stub body here.
7
+ */
8
+ export class SessionCaptureSubscriber {
9
+ /**
10
+ * Register listeners on the bus. Returns nothing; unsubscribe handles
11
+ * are held internally (Phase E: stored for clean shutdown).
12
+ */
13
+ register(bus) {
14
+ bus.on('session.started', (_payload) => {
15
+ // Phase E: persist session start to SessionRegistry WAL.
16
+ });
17
+ bus.on('session.completed', (_payload) => {
18
+ // Phase E: finalize WAL entry, trigger snapshot if N-minute threshold met.
19
+ });
20
+ bus.on('session.tool-use', (_payload) => {
21
+ // Phase E: update live-card tool tracker, emit metrics.
22
+ });
23
+ }
24
+ }
25
+ //# sourceMappingURL=session-capture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-capture.js","sourceRoot":"","sources":["../../../../src/observability/subscribers/session-capture.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,OAAO,wBAAwB;IACnC;;;OAGG;IACH,QAAQ,CAAC,GAAa;QACpB,GAAG,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,QAAQ,EAAE,EAAE;YACrC,yDAAyD;QAC3D,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,QAAQ,EAAE,EAAE;YACvC,2EAA2E;QAC7E,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC,QAAQ,EAAE,EAAE;YACtC,wDAAwD;QAC1D,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * OpenClaw native tool allowList — typed-config-driven (Phase E #1, Q1 resolution).
3
+ *
4
+ * Reads from `ConfigService.config.nativeToolsAllowList` when available;
5
+ * falls back to the v0.11.x hardcoded default when `ConfigService` is unset
6
+ * (tests, scripts run without a boot path). The hardcoded fallback is
7
+ * intentionally identical to what shipped at v0.11.0 so existing tests that
8
+ * import `OPENCLAW_TOOL_ALLOWLIST` keep passing without rewrite.
9
+ *
10
+ * Env override: `CC_OPENCLAW_NATIVE_TOOLS_ALLOWLIST="message.voice,message.image,..."`.
11
+ * Q1 expanded default ships at v1.0.0-rc1 alongside the `CC_OPENCLAW_NATIVE_TOOLS=1` flip.
12
+ */
13
+ /**
14
+ * v0.11.x default — kept exported for legacy callers and for the
15
+ * `ConfigService`-unset fallback path. New code should call `isAllowedTool`.
16
+ */
17
+ export declare const OPENCLAW_TOOL_ALLOWLIST: ReadonlySet<string>;
18
+ /** Return true when `toolName` is in the active allowList. */
19
+ export declare function isAllowedTool(toolName: string): boolean;
@@ -0,0 +1,28 @@
1
+ /**
2
+ * OpenClaw native tool allowList — typed-config-driven (Phase E #1, Q1 resolution).
3
+ *
4
+ * Reads from `ConfigService.config.nativeToolsAllowList` when available;
5
+ * falls back to the v0.11.x hardcoded default when `ConfigService` is unset
6
+ * (tests, scripts run without a boot path). The hardcoded fallback is
7
+ * intentionally identical to what shipped at v0.11.0 so existing tests that
8
+ * import `OPENCLAW_TOOL_ALLOWLIST` keep passing without rewrite.
9
+ *
10
+ * Env override: `CC_OPENCLAW_NATIVE_TOOLS_ALLOWLIST="message.voice,message.image,..."`.
11
+ * Q1 expanded default ships at v1.0.0-rc1 alongside the `CC_OPENCLAW_NATIVE_TOOLS=1` flip.
12
+ */
13
+ import { getConfigService } from '../../lib/config-service.js';
14
+ /**
15
+ * v0.11.x default — kept exported for legacy callers and for the
16
+ * `ConfigService`-unset fallback path. New code should call `isAllowedTool`.
17
+ */
18
+ export const OPENCLAW_TOOL_ALLOWLIST = new Set([
19
+ 'message.voice',
20
+ ]);
21
+ /** Return true when `toolName` is in the active allowList. */
22
+ export function isAllowedTool(toolName) {
23
+ const cfg = getConfigService();
24
+ if (cfg)
25
+ return cfg.config.nativeToolsAllowList.includes(toolName);
26
+ return OPENCLAW_TOOL_ALLOWLIST.has(toolName);
27
+ }
28
+ //# sourceMappingURL=allowlist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"allowlist.js","sourceRoot":"","sources":["../../../../src/openai-compat/bridges/allowlist.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAwB,IAAI,GAAG,CAAC;IAClE,eAAe;CAChB,CAAC,CAAC;AAEH,8DAA8D;AAC9D,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACnE,OAAO,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * factory.ts — Bridge factory: reads env flags and returns the active IToolBridge.
3
+ *
4
+ * Mode precedence (highest wins):
5
+ * CC_OPENCLAW_NATIVE_TOOLS=1 → OpenClawNative (v0.11.0, default OFF)
6
+ * CC_OPENCLAW_TOOL_STREAM=1 → NativeStream
7
+ * OPENAI_COMPAT_TOOLS_PER_MESSAGE=1 → PerMessage
8
+ * (default) → Embedded
9
+ *
10
+ * The three existing modes (Embedded, PerMessage, NativeStream) are NOT
11
+ * implemented as full IToolBridge classes in this PR — their logic lives
12
+ * inside openai-compat.ts. The factory stubs them as thin wrappers that
13
+ * satisfy IToolBridge so callers can type-check against the interface.
14
+ * Only OpenClawNativeBridge is a real implementation here.
15
+ *
16
+ * Coexistence rule: existing flag readers (`isToolsPerMessageModeEnabled`,
17
+ * `isToolStreamMode`) are not touched — factory reads them via the same
18
+ * env vars, not via those helpers, to avoid coupling factory → mode-flags.
19
+ */
20
+ import type { IToolBridge } from '../../types/tool-bridge.js';
21
+ import { ToolMode } from '../../types/tool-bridge.js';
22
+ /**
23
+ * Return the active IToolBridge based on env flags.
24
+ *
25
+ * Call once per request — bridges are lightweight and stateless (except
26
+ * OpenClawNativeToolsBridge which caches the gateway config read).
27
+ */
28
+ export declare function makeToolBridge(): IToolBridge;
29
+ /** Read the active mode without constructing a bridge. Useful for logging. */
30
+ export declare function activeToolMode(): ToolMode;
@@ -0,0 +1,84 @@
1
+ /**
2
+ * factory.ts — Bridge factory: reads env flags and returns the active IToolBridge.
3
+ *
4
+ * Mode precedence (highest wins):
5
+ * CC_OPENCLAW_NATIVE_TOOLS=1 → OpenClawNative (v0.11.0, default OFF)
6
+ * CC_OPENCLAW_TOOL_STREAM=1 → NativeStream
7
+ * OPENAI_COMPAT_TOOLS_PER_MESSAGE=1 → PerMessage
8
+ * (default) → Embedded
9
+ *
10
+ * The three existing modes (Embedded, PerMessage, NativeStream) are NOT
11
+ * implemented as full IToolBridge classes in this PR — their logic lives
12
+ * inside openai-compat.ts. The factory stubs them as thin wrappers that
13
+ * satisfy IToolBridge so callers can type-check against the interface.
14
+ * Only OpenClawNativeBridge is a real implementation here.
15
+ *
16
+ * Coexistence rule: existing flag readers (`isToolsPerMessageModeEnabled`,
17
+ * `isToolStreamMode`) are not touched — factory reads them via the same
18
+ * env vars, not via those helpers, to avoid coupling factory → mode-flags.
19
+ */
20
+ import { ToolMode } from '../../types/tool-bridge.js';
21
+ import { OpenClawNativeToolsBridge } from './openclaw-native-tools.js';
22
+ // ── Stub bridges for legacy modes ─────────────────────────────────────────
23
+ // These stubs let the factory return typed IToolBridge values for the existing
24
+ // modes. They are NOT functional implementations — the real logic lives in
25
+ // openai-compat.ts / streaming-handler.ts. Their presence here is purely for
26
+ // the mode-selection interface.
27
+ class EmbeddedToolsBridgeStub {
28
+ mode = ToolMode.Embedded;
29
+ buildToolPreamble(_tools) { return ''; }
30
+ translateToolUse(_event) { return null; }
31
+ serializeToolResult(call, result) {
32
+ return `<tool_result tool_use_id="${call.id}" name="${call.function.name}">${result}</tool_result>`;
33
+ }
34
+ }
35
+ class PerMessageToolsBridgeStub {
36
+ mode = ToolMode.PerMessage;
37
+ buildToolPreamble(_tools) { return ''; }
38
+ translateToolUse(_event) { return null; }
39
+ serializeToolResult(call, result) {
40
+ return `<tool_result tool_use_id="${call.id}" name="${call.function.name}">${result}</tool_result>`;
41
+ }
42
+ }
43
+ class NativeStreamToolsBridgeStub {
44
+ mode = ToolMode.NativeStream;
45
+ buildToolPreamble(_tools) { return ''; }
46
+ translateToolUse(_event) { return null; }
47
+ serializeToolResult(call, result) {
48
+ return `<tool_result tool_use_id="${call.id}" name="${call.function.name}">${result}</tool_result>`;
49
+ }
50
+ }
51
+ // ── Factory ────────────────────────────────────────────────────────────────
52
+ /**
53
+ * Return the active IToolBridge based on env flags.
54
+ *
55
+ * Call once per request — bridges are lightweight and stateless (except
56
+ * OpenClawNativeToolsBridge which caches the gateway config read).
57
+ */
58
+ export function makeToolBridge() {
59
+ // OpenClawNative: highest precedence, default OFF for v0.11.0 soak
60
+ if (process.env.CC_OPENCLAW_NATIVE_TOOLS === '1') {
61
+ return new OpenClawNativeToolsBridge();
62
+ }
63
+ // NativeStream
64
+ if (process.env.CC_OPENCLAW_TOOL_STREAM === '1') {
65
+ return new NativeStreamToolsBridgeStub();
66
+ }
67
+ // PerMessage (legacy)
68
+ if (process.env.OPENAI_COMPAT_TOOLS_PER_MESSAGE === '1') {
69
+ return new PerMessageToolsBridgeStub();
70
+ }
71
+ // Default: Embedded
72
+ return new EmbeddedToolsBridgeStub();
73
+ }
74
+ /** Read the active mode without constructing a bridge. Useful for logging. */
75
+ export function activeToolMode() {
76
+ if (process.env.CC_OPENCLAW_NATIVE_TOOLS === '1')
77
+ return ToolMode.OpenClawNative;
78
+ if (process.env.CC_OPENCLAW_TOOL_STREAM === '1')
79
+ return ToolMode.NativeStream;
80
+ if (process.env.OPENAI_COMPAT_TOOLS_PER_MESSAGE === '1')
81
+ return ToolMode.PerMessage;
82
+ return ToolMode.Embedded;
83
+ }
84
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../../src/openai-compat/bridges/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAEvE,6EAA6E;AAC7E,+EAA+E;AAC/E,2EAA2E;AAC3E,6EAA6E;AAC7E,gCAAgC;AAEhC,MAAM,uBAAuB;IAClB,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC;IAClC,iBAAiB,CAAC,MAAiD,IAAY,OAAO,EAAE,CAAC,CAAC,CAAC;IAC3F,gBAAgB,CAAC,MAAe,IAA4B,OAAO,IAAI,CAAC,CAAC,CAAC;IAC1E,mBAAmB,CAAC,IAAoB,EAAE,MAAc;QACtD,OAAO,6BAA6B,IAAI,CAAC,EAAE,WAAW,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,gBAAgB,CAAC;IACtG,CAAC;CACF;AAED,MAAM,yBAAyB;IACpB,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC;IACpC,iBAAiB,CAAC,MAAiD,IAAY,OAAO,EAAE,CAAC,CAAC,CAAC;IAC3F,gBAAgB,CAAC,MAAe,IAA4B,OAAO,IAAI,CAAC,CAAC,CAAC;IAC1E,mBAAmB,CAAC,IAAoB,EAAE,MAAc;QACtD,OAAO,6BAA6B,IAAI,CAAC,EAAE,WAAW,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,gBAAgB,CAAC;IACtG,CAAC;CACF;AAED,MAAM,2BAA2B;IACtB,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC;IACtC,iBAAiB,CAAC,MAAiD,IAAY,OAAO,EAAE,CAAC,CAAC,CAAC;IAC3F,gBAAgB,CAAC,MAAe,IAA4B,OAAO,IAAI,CAAC,CAAC,CAAC;IAC1E,mBAAmB,CAAC,IAAoB,EAAE,MAAc;QACtD,OAAO,6BAA6B,IAAI,CAAC,EAAE,WAAW,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,gBAAgB,CAAC;IACtG,CAAC;CACF;AAED,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,UAAU,cAAc;IAC5B,mEAAmE;IACnE,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,KAAK,GAAG,EAAE,CAAC;QACjD,OAAO,IAAI,yBAAyB,EAAE,CAAC;IACzC,CAAC;IACD,eAAe;IACf,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,GAAG,EAAE,CAAC;QAChD,OAAO,IAAI,2BAA2B,EAAE,CAAC;IAC3C,CAAC;IACD,sBAAsB;IACtB,IAAI,OAAO,CAAC,GAAG,CAAC,+BAA+B,KAAK,GAAG,EAAE,CAAC;QACxD,OAAO,IAAI,yBAAyB,EAAE,CAAC;IACzC,CAAC;IACD,oBAAoB;IACpB,OAAO,IAAI,uBAAuB,EAAE,CAAC;AACvC,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,cAAc;IAC5B,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,KAAK,GAAG;QAAE,OAAO,QAAQ,CAAC,cAAc,CAAC;IACjF,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,GAAG;QAAE,OAAO,QAAQ,CAAC,YAAY,CAAC;IAC9E,IAAI,OAAO,CAAC,GAAG,CAAC,+BAA+B,KAAK,GAAG;QAAE,OAAO,QAAQ,CAAC,UAAU,CAAC;IACpF,OAAO,QAAQ,CAAC,QAAQ,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * media-bridge.ts — Shared contract for media delivery bridges.
3
+ *
4
+ * `MediaBridge` is the interface all media-type sub-bridges implement.
5
+ * `TtsMediaBridge` (tts-media-bridge.ts) is the v0.11.0 concrete impl.
6
+ * Future: `ImageMediaBridge`, `FileMediaBridge` for v0.12.0.
7
+ */
8
+ /** Structured result from a media bridge execution. */
9
+ export interface MediaBridgeResult {
10
+ /** Text to inject into the SSE stream in place of the tool_call. */
11
+ readonly text: string;
12
+ /** Whether the bridge produced output via the native channel. */
13
+ readonly delivered: boolean;
14
+ /** Delivery channel used. Informational — not load-bearing. */
15
+ readonly via: string;
16
+ }
17
+ /** Every media sub-bridge must satisfy this contract. */
18
+ export interface MediaBridge {
19
+ /** Canonical tool name this bridge handles (e.g. `message.voice`). */
20
+ readonly toolName: string;
21
+ /**
22
+ * Execute the media delivery. `args` is the raw JSON-parsed tool arguments
23
+ * from the model's tool_call. Returns a `MediaBridgeResult` — never throws;
24
+ * fallback text is always produced on error.
25
+ */
26
+ execute(args: Record<string, unknown>): Promise<MediaBridgeResult>;
27
+ }
28
+ /** Thrown by bridge internals for structured error propagation.
29
+ * Caught at the `OpenClawNativeToolsBridge` boundary — never escapes to callers. */
30
+ export declare class MediaBridgeError extends Error {
31
+ readonly toolName: string;
32
+ readonly cause?: unknown | undefined;
33
+ constructor(message: string, toolName: string, cause?: unknown | undefined);
34
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * media-bridge.ts — Shared contract for media delivery bridges.
3
+ *
4
+ * `MediaBridge` is the interface all media-type sub-bridges implement.
5
+ * `TtsMediaBridge` (tts-media-bridge.ts) is the v0.11.0 concrete impl.
6
+ * Future: `ImageMediaBridge`, `FileMediaBridge` for v0.12.0.
7
+ */
8
+ /** Thrown by bridge internals for structured error propagation.
9
+ * Caught at the `OpenClawNativeToolsBridge` boundary — never escapes to callers. */
10
+ export class MediaBridgeError extends Error {
11
+ toolName;
12
+ cause;
13
+ constructor(message, toolName, cause) {
14
+ super(message);
15
+ this.toolName = toolName;
16
+ this.cause = cause;
17
+ this.name = 'MediaBridgeError';
18
+ }
19
+ }
20
+ //# sourceMappingURL=media-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-bridge.js","sourceRoot":"","sources":["../../../../src/openai-compat/bridges/media-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAyBH;qFACqF;AACrF,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAGvB;IACA;IAHlB,YACE,OAAe,EACC,QAAgB,EAChB,KAAe;QAE/B,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,aAAQ,GAAR,QAAQ,CAAQ;QAChB,UAAK,GAAL,KAAK,CAAU;QAG/B,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF"}