@a1hvdy/cc-openclaw 0.21.2 → 0.23.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 (70) hide show
  1. package/dist/src/channels/telegram/edit-cadence.d.ts +37 -0
  2. package/dist/src/channels/telegram/edit-cadence.js +50 -0
  3. package/dist/src/channels/telegram/edit-cadence.js.map +1 -0
  4. package/dist/src/channels/telegram/live-card.d.ts +23 -0
  5. package/dist/src/channels/telegram/live-card.js +95 -0
  6. package/dist/src/channels/telegram/live-card.js.map +1 -1
  7. package/dist/src/channels/telegram/speculative-bubble.d.ts +33 -0
  8. package/dist/src/channels/telegram/speculative-bubble.js +42 -0
  9. package/dist/src/channels/telegram/speculative-bubble.js.map +1 -0
  10. package/dist/src/channels/telegram/throttle-controller.d.ts +16 -0
  11. package/dist/src/channels/telegram/throttle-controller.js +54 -1
  12. package/dist/src/channels/telegram/throttle-controller.js.map +1 -1
  13. package/dist/src/channels/telegram/tool-tracker.d.ts +4 -1
  14. package/dist/src/channels/telegram/tool-tracker.js +18 -4
  15. package/dist/src/channels/telegram/tool-tracker.js.map +1 -1
  16. package/dist/src/command-router/cc-handler.js +32 -0
  17. package/dist/src/command-router/cc-handler.js.map +1 -1
  18. package/dist/src/command-router/launch-policy.js +14 -2
  19. package/dist/src/command-router/launch-policy.js.map +1 -1
  20. package/dist/src/index.js +57 -0
  21. package/dist/src/index.js.map +1 -1
  22. package/dist/src/lib/config-service.js +12 -0
  23. package/dist/src/lib/config-service.js.map +1 -1
  24. package/dist/src/lib/config.d.ts +36 -0
  25. package/dist/src/lib/config.js +97 -0
  26. package/dist/src/lib/config.js.map +1 -1
  27. package/dist/src/lib/http-agent.d.ts +47 -0
  28. package/dist/src/lib/http-agent.js +86 -0
  29. package/dist/src/lib/http-agent.js.map +1 -0
  30. package/dist/src/lib/markdown-to-mdv2.d.ts +53 -0
  31. package/dist/src/lib/markdown-to-mdv2.js +141 -0
  32. package/dist/src/lib/markdown-to-mdv2.js.map +1 -0
  33. package/dist/src/lib/perf/async-compact.d.ts +26 -0
  34. package/dist/src/lib/perf/async-compact.js +42 -0
  35. package/dist/src/lib/perf/async-compact.js.map +1 -0
  36. package/dist/src/lib/perf/direct-sdk.d.ts +26 -0
  37. package/dist/src/lib/perf/direct-sdk.js +58 -0
  38. package/dist/src/lib/perf/direct-sdk.js.map +1 -0
  39. package/dist/src/lib/perf/haiku-route.d.ts +19 -0
  40. package/dist/src/lib/perf/haiku-route.js +49 -0
  41. package/dist/src/lib/perf/haiku-route.js.map +1 -0
  42. package/dist/src/lib/perf/predictive-continuation.d.ts +18 -0
  43. package/dist/src/lib/perf/predictive-continuation.js +37 -0
  44. package/dist/src/lib/perf/predictive-continuation.js.map +1 -0
  45. package/dist/src/lib/perf/read-batch.d.ts +33 -0
  46. package/dist/src/lib/perf/read-batch.js +48 -0
  47. package/dist/src/lib/perf/read-batch.js.map +1 -0
  48. package/dist/src/lib/perf/resident-cli-pool.d.ts +39 -0
  49. package/dist/src/lib/perf/resident-cli-pool.js +60 -0
  50. package/dist/src/lib/perf/resident-cli-pool.js.map +1 -0
  51. package/dist/src/lib/perf/skill-list-collapse.d.ts +22 -0
  52. package/dist/src/lib/perf/skill-list-collapse.js +35 -0
  53. package/dist/src/lib/perf/skill-list-collapse.js.map +1 -0
  54. package/dist/src/lib/perf/typing-prefetch.d.ts +25 -0
  55. package/dist/src/lib/perf/typing-prefetch.js +54 -0
  56. package/dist/src/lib/perf/typing-prefetch.js.map +1 -0
  57. package/dist/src/observability/perf-telemetry.d.ts +66 -0
  58. package/dist/src/observability/perf-telemetry.js +79 -0
  59. package/dist/src/observability/perf-telemetry.js.map +1 -0
  60. package/dist/src/openai-compat/streaming-handler.js +35 -1
  61. package/dist/src/openai-compat/streaming-handler.js.map +1 -1
  62. package/dist/src/session-bootstrap/cwd-patch.js +37 -0
  63. package/dist/src/session-bootstrap/cwd-patch.js.map +1 -1
  64. package/dist/src/types/runtime-config.d.ts +36 -0
  65. package/dist/src/types/runtime-config.js +44 -0
  66. package/dist/src/types/runtime-config.js.map +1 -1
  67. package/package.json +1 -1
  68. package/dist/src/patches/sysprompt-strip.spec.d.ts +0 -33
  69. package/dist/src/patches/sysprompt-strip.spec.js +0 -53
  70. package/dist/src/patches/sysprompt-strip.spec.js.map +0 -1
@@ -95,6 +95,103 @@ export function isSyspromptDumpEnabled() {
95
95
  return cfg.config.syspromptDump;
96
96
  return process.env.OPENCLAW_SYSPROMPT_DUMP === '1';
97
97
  }
98
+ /**
99
+ * M8 (perf overhaul idea #8). Default ON; only the falsey set (0/false/off,
100
+ * preserved bit-for-bit from `FALSEY()` in config-service.ts) opts out.
101
+ * Live gateway path goes through ConfigService; tests can flip the env var
102
+ * mid-process and have it take effect immediately.
103
+ */
104
+ export function getPerfCacheTelemetryEnabled() {
105
+ const cfg = getConfigService();
106
+ if (cfg)
107
+ return cfg.config.perfCacheTelemetryEnabled;
108
+ const raw = (process.env.CC_OPENCLAW_PERF_CACHE_TELEMETRY ?? '').toLowerCase();
109
+ return !(raw === '0' || raw === 'false' || raw === 'off');
110
+ }
111
+ /**
112
+ * M5 (perf overhaul idea #5). Default OFF; opt-in via
113
+ * CC_OPENCLAW_PERF_KEEPALIVE=1. Flips to default-ON after baseline data
114
+ * confirms the perf win (plan: "default ON for safe ideas once measured-good").
115
+ */
116
+ export function getPerfKeepaliveEnabled() {
117
+ const cfg = getConfigService();
118
+ if (cfg)
119
+ return cfg.config.perfKeepaliveEnabled;
120
+ return process.env.CC_OPENCLAW_PERF_KEEPALIVE === '1';
121
+ }
122
+ /**
123
+ * M3 (perf overhaul idea #3) — tiered edit cadence. Default OFF; opt-in via
124
+ * CC_OPENCLAW_PERF_EDIT_CADENCE=1.
125
+ */
126
+ export function getPerfEditCadenceEnabled() {
127
+ const cfg = getConfigService();
128
+ if (cfg)
129
+ return cfg.config.perfEditCadenceEnabled;
130
+ return process.env.CC_OPENCLAW_PERF_EDIT_CADENCE === '1';
131
+ }
132
+ /** M9 (perf overhaul idea #9) — speculative thinking bubble. Default OFF. */
133
+ export function getPerfSpecBubbleEnabled() {
134
+ const cfg = getConfigService();
135
+ if (cfg)
136
+ return cfg.config.perfSpecBubbleEnabled;
137
+ return process.env.CC_OPENCLAW_PERF_SPEC_BUBBLE === '1';
138
+ }
139
+ /** M4 — skill-list-on-demand. Default OFF. */
140
+ export function getPerfSkillOnDemandEnabled() {
141
+ const cfg = getConfigService();
142
+ if (cfg)
143
+ return cfg.config.perfSkillOnDemandEnabled;
144
+ return process.env.CC_OPENCLAW_PERF_SKILL_ONDEMAND === '1';
145
+ }
146
+ /** M11 — predictive continuation. Default OFF. */
147
+ export function getPerfPredictiveContinueEnabled() {
148
+ const cfg = getConfigService();
149
+ if (cfg)
150
+ return cfg.config.perfPredictiveContinueEnabled;
151
+ return process.env.CC_OPENCLAW_PERF_PREDICTIVE_CONTINUE === '1';
152
+ }
153
+ /** M2 — typing-prefetch subprocess warmup. Default OFF. */
154
+ export function getPerfTypingPrefetchEnabled() {
155
+ const cfg = getConfigService();
156
+ if (cfg)
157
+ return cfg.config.perfTypingPrefetchEnabled;
158
+ return process.env.CC_OPENCLAW_PERF_TYPING_PREFETCH === '1';
159
+ }
160
+ /** M10 — Haiku cheap-route. Default OFF. */
161
+ export function getPerfHaikuRouteEnabled() {
162
+ const cfg = getConfigService();
163
+ if (cfg)
164
+ return cfg.config.perfHaikuRouteEnabled;
165
+ return process.env.CC_OPENCLAW_PERF_HAIKU_ROUTE === '1';
166
+ }
167
+ /** M6 — async lossless compaction. Default OFF (medium risk). */
168
+ export function getPerfAsyncCompactEnabled() {
169
+ const cfg = getConfigService();
170
+ if (cfg)
171
+ return cfg.config.perfAsyncCompactEnabled;
172
+ return process.env.CC_OPENCLAW_PERF_ASYNC_COMPACT === '1';
173
+ }
174
+ /** M7 — Read([paths]) batching. Default OFF (medium risk). */
175
+ export function getPerfReadBatchEnabled() {
176
+ const cfg = getConfigService();
177
+ if (cfg)
178
+ return cfg.config.perfReadBatchEnabled;
179
+ return process.env.CC_OPENCLAW_PERF_READ_BATCH === '1';
180
+ }
181
+ /** M1 — resident CLI pool. Default OFF (medium risk). */
182
+ export function getPerfResidentCliEnabled() {
183
+ const cfg = getConfigService();
184
+ if (cfg)
185
+ return cfg.config.perfResidentCliEnabled;
186
+ return process.env.CC_OPENCLAW_PERF_RESIDENT_CLI === '1';
187
+ }
188
+ /** M12 — direct claude-code SDK in-process. Default OFF (HIGH RISK, hard-gated). */
189
+ export function getPerfDirectSdkEnabled() {
190
+ const cfg = getConfigService();
191
+ if (cfg)
192
+ return cfg.config.perfDirectSdkEnabled;
193
+ return process.env.CC_OPENCLAW_PERF_DIRECT_SDK === '1';
194
+ }
98
195
  // ── SessionManager bootstrap caps (cwd-patch eager-init) ─────────────────
99
196
  // Defaults preserved from cwd-patch.ts:844-845.
100
197
  export function getMaxConcurrentSessions() {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,4EAA4E;AAC5E,8EAA8E;AAC9E,0EAA0E;AAC1E,+CAA+C;AAE/C,MAAM,UAAU,yBAAyB;IACvC,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,sBAAsB,CAAC;IAClD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;IAClD,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAClE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,4EAA4E;AAC5E,+DAA+D;AAC/D,4EAA4E;AAC5E,qEAAqE;AACrE,sEAAsE;AACtE,qEAAqE;AACrE,qEAAqE;AAErE,MAAM,UAAU,qBAAqB;IACnC,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,wBAAwB,CAAC;IACpD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;IAC9C,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAClE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,mBAAmB;IACjC,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC;IAC7C,OAAO,OAAO,CAAC,GAAG,CAAC,qBAAqB,KAAK,GAAG,CAAC;AACnD,CAAC;AAED,4EAA4E;AAC5E,2EAA2E;AAC3E,sDAAsD;AACtD,EAAE;AACF,0EAA0E;AAC1E,+DAA+D;AAE/D,MAAM,UAAU,WAAW;IACzB,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IACzC,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,eAAe;IAC7B,OAAO,WAAW,EAAE,KAAK,OAAO,CAAC;AACnC,CAAC;AAED,4EAA4E;AAC5E,iEAAiE;AACjE,0EAA0E;AAC1E,uEAAuE;AACvE,sEAAsE;AAEtE,MAAM,UAAU,uBAAuB;IACrC,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,uBAAuB,CAAC;IACnD,OAAO,OAAO,CAAC,GAAG,CAAC,wBAAwB,KAAK,GAAG,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC;IACzC,OAAO,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,GAAG,CAAC;AACrD,CAAC;AAED,4EAA4E;AAC5E,gDAAgD;AAEhD,MAAM,UAAU,wBAAwB;IACtC,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,qBAAqB,CAAC;IACjD,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC;IAC7C,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC;AACzE,CAAC;AAED,4EAA4E;AAC5E,2EAA2E;AAC3E,2EAA2E;AAC3E,0EAA0E;AAC1E,EAAE;AACF,yEAAyE;AACzE,mEAAmE;AACnE,EAAE;AACF,4DAA4D;AAE5D,MAAM,UAAU,gCAAgC;IAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;IACnD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,MAAM,CAAC;QAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC1C,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5C,CAAC;AAED,4EAA4E;AAE5E,MAAM,UAAU,aAAa;IAC3B,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;IACtC,OAAO,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,WAAW,CAAC;AACzD,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,YAAY;IAC1B,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;IACrC,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,uBAAuB,CAAC;AACxF,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,cAAc;IAC5B,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC;IACvC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;IAC5C,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,cAAc;IAC5B,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC;IACxC,OAAO,OAAO,CAAC,GAAG,CAAC,qBAAqB,KAAK,GAAG,CAAC;AACnD,CAAC;AAED,4EAA4E;AAC5E,yEAAyE;AACzE,2EAA2E;AAE3E,MAAM,UAAU,aAAa;IAC3B,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IAClC,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IAClC,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,4EAA4E;AAC5E,2EAA2E;AAC3E,2EAA2E;AAE3E,MAAM,UAAU,kBAAkB;IAChC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IACxC,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IACrC,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IACrC,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,4EAA4E;AAC5E,wEAAwE;AACxE,gEAAgE;AAEhE,MAAM,UAAU,YAAY;IAC1B,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;IACrC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IACjC,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;IACpC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;IAChC,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;IACrC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IACjC,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,+EAA+E;AAC/E,6EAA6E;AAC7E,0EAA0E;AAC1E,6EAA6E;AAC7E,0EAA0E;AAC1E,mDAAmD;AACnD,EAAE;AACF,2EAA2E;AAC3E,sDAAsD;AACtD,qEAAqE;AACrE,yEAAyE;AACzE,yDAAyD;AAEzD,IAAI,iBAAiB,GAAkB,IAAI,CAAC;AAC5C,IAAI,wBAAwB,GAAG,KAAK,CAAC;AAErC,MAAM,UAAU,cAAc;IAC5B,sCAAsC;IACtC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC7E,IAAI,WAAW,KAAK,KAAK,IAAI,WAAW,KAAK,QAAQ,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;QAC/G,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAC9B,wBAAwB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;YACrG,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA+C,CAAC;YAC7E,iBAAiB,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,IAAI,IAAI,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,mEAAmE;YACnE,iBAAiB,GAAG,IAAI,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,iBAAiB,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IACzD,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,8BAA8B;IAC5C,iBAAiB,GAAG,IAAI,CAAC;IACzB,wBAAwB,GAAG,KAAK,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;IACrC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IACjC,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,8BAA8B,CAAC;AAC5D,CAAC;AAED,4EAA4E;AAC5E,+DAA+D;AAE/D,MAAM,UAAU,6BAA6B;IAC3C,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,oBAAoB,CAAC;IAChD,OAAO,OAAO,CAAC,GAAG,CAAC,wBAAwB,KAAK,GAAG,CAAC;AACtD,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,sBAAsB;IACpC,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC;IACzC,OAAO,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,GAAG,CAAC;AACrD,CAAC;AAED,4EAA4E;AAC5E,4EAA4E;AAE5E,MAAM,UAAU,6BAA6B;IAC3C,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,2BAA2B,CAAC;IACvD,OAAO,OAAO,CAAC,GAAG,CAAC,wCAAwC,KAAK,GAAG,CAAC;AACtE,CAAC;AAED,4EAA4E;AAC5E,wDAAwD;AAExD,MAAM,UAAU,gBAAgB;IAC9B,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC;IACzC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACvD,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACrC,CAAC;AAED,4EAA4E;AAE5E;;;;GAIG;AACH,MAAM,UAAU,8BAA8B;IAC5C,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC;IACtD,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,+BAA+B;IAC7C,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC;IAC7C,OAAO,OAAO,CAAC,GAAG,CAAC,iCAAiC,KAAK,GAAG,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;IACrC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;IAC/C,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,oFAAoF;AACpF,0EAA0E;AAC1E,uEAAuE;AACvE,EAAE;AACF,6EAA6E;AAC7E,oDAAoD;AAEpD,MAAM,UAAU,sBAAsB;IACpC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;IAC7C,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,4EAA4E;AAC5E,kDAAkD;AAClD,yEAAyE;AACzE,EAAE;AACF,uEAAuE;AACvE,uBAAuB;AAEvB,MAAM,UAAU,sBAAsB;IACpC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IACzC,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,4EAA4E;AAE5E,MAAM,UAAU,sBAAsB;IACpC,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,oBAAoB,CAAC;IAChD,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IACtC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3B,CAAC;AAED,4EAA4E;AAC5E,4EAA4E;AAC5E,0EAA0E;AAC1E,EAAE;AACF,yEAAyE;AAEzE,MAAM,UAAU,YAAY;IAC1B,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC;AACpC,CAAC;AAED,4EAA4E;AAC5E,2EAA2E;AAC3E,+DAA+D;AAC/D,EAAE;AACF,2EAA2E;AAC3E,uBAAuB;AAEvB,MAAM,UAAU,gBAAgB;IAC9B,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;IAC9C,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,6EAA6E;AAC7E,+DAA+D;AAE/D,MAAM,UAAU,oBAAoB;IAClC,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC;IAC9C,OAAO,OAAO,CAAC,GAAG,CAAC,iCAAiC,KAAK,GAAG,CAAC;AAC/D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC;IAClE,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAClD,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACrD,CAAC;AAED,4EAA4E;AAC5E,gEAAgE;AAEhE,MAAM,UAAU,qBAAqB;IACnC,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,mBAAmB,CAAC;IAC/C,OAAO,OAAO,CAAC,GAAG,CAAC,kCAAkC,KAAK,GAAG,CAAC;AAChE,CAAC;AAED,8EAA8E;AAC9E,yEAAyE;AACzE,4EAA4E;AAC5E,2EAA2E;AAC3E,yEAAyE;AACzE,uEAAuE;AACvE,iEAAiE;AACjE,wEAAwE;AAExE,MAAM,UAAU,yBAAyB;IACvC,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC;IAC3C,OAAO,OAAO,CAAC,GAAG,CAAC,4BAA4B,KAAK,GAAG,CAAC;AAC1D,CAAC;AAED,4EAA4E;AAC5E,4EAA4E;AAC5E,wEAAwE;AACxE,8EAA8E;AAC9E,YAAY;AAEZ,MAAM,UAAU,yBAAyB;IACvC,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC;IAC3C,OAAO,OAAO,CAAC,GAAG,CAAC,4BAA4B,KAAK,GAAG,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/lib/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * M5 (perf overhaul idea #5) — undici keepAlive agent pool.
3
+ *
4
+ * Sets undici's global dispatcher to a keepAlive Agent so every Node 18+
5
+ * `fetch()` call in cc-openclaw reuses TCP+TLS sockets per upstream origin.
6
+ * For the Riyadh→US-East corridor (150-200ms RTT), eliminating one TLS 1.3
7
+ * handshake saves roughly 1 TCP + 2 TLS round trips = 450-600ms tail latency
8
+ * per reuse. Undici's `Agent` already pools per-origin internally; we just
9
+ * tune `connections` (concurrent sockets) and `keepAliveTimeout` (idle hold).
10
+ *
11
+ * Flag: CC_OPENCLAW_PERF_KEEPALIVE (default OFF until M8 baseline confirms
12
+ * the win — per plan, "default ON for safe ideas... once measured-good").
13
+ *
14
+ * Install is idempotent — second invocation in the same process is a no-op
15
+ * so importing from multiple bootstrap entry points is safe. The previous
16
+ * dispatcher is closed gracefully to avoid socket leaks during reinstall.
17
+ *
18
+ * Test hook: pass a custom factory to `installPerfKeepaliveAgent({ factory })`
19
+ * so the test suite can verify install+settings without binding real sockets.
20
+ */
21
+ export interface KeepaliveOptions {
22
+ /** Max idle time a kept-alive socket stays open. Default 60s. */
23
+ keepAliveTimeout?: number;
24
+ /** Hard ceiling on idle socket age. Default 120s. */
25
+ keepAliveMaxTimeout?: number;
26
+ /** Concurrent sockets per origin. Default 8 — enough for cc-openclaw's
27
+ * fan-out to Anthropic + OpenAI fallback without saturating either. */
28
+ connections?: number;
29
+ }
30
+ interface InstallSnapshot {
31
+ installed: boolean;
32
+ options: Required<KeepaliveOptions>;
33
+ installedAt: string;
34
+ }
35
+ /**
36
+ * Install the keepAlive agent as undici's global dispatcher. Idempotent —
37
+ * subsequent calls in the same process return the existing snapshot without
38
+ * reinstalling. Returns null when the flag is off (no-op, no snapshot).
39
+ *
40
+ * `factory` exists for tests; production code never passes it.
41
+ */
42
+ export declare function installPerfKeepaliveAgent(opts?: KeepaliveOptions, factory?: (resolved: Required<KeepaliveOptions>) => unknown): InstallSnapshot | null;
43
+ /** Inspect current install state — used by /health + diagnostics. */
44
+ export declare function getPerfKeepaliveSnapshot(): InstallSnapshot | null;
45
+ /** Test hook — clear the install snapshot so the next call reinstalls. */
46
+ export declare function _resetPerfKeepaliveForTests(): void;
47
+ export {};
@@ -0,0 +1,86 @@
1
+ /**
2
+ * M5 (perf overhaul idea #5) — undici keepAlive agent pool.
3
+ *
4
+ * Sets undici's global dispatcher to a keepAlive Agent so every Node 18+
5
+ * `fetch()` call in cc-openclaw reuses TCP+TLS sockets per upstream origin.
6
+ * For the Riyadh→US-East corridor (150-200ms RTT), eliminating one TLS 1.3
7
+ * handshake saves roughly 1 TCP + 2 TLS round trips = 450-600ms tail latency
8
+ * per reuse. Undici's `Agent` already pools per-origin internally; we just
9
+ * tune `connections` (concurrent sockets) and `keepAliveTimeout` (idle hold).
10
+ *
11
+ * Flag: CC_OPENCLAW_PERF_KEEPALIVE (default OFF until M8 baseline confirms
12
+ * the win — per plan, "default ON for safe ideas... once measured-good").
13
+ *
14
+ * Install is idempotent — second invocation in the same process is a no-op
15
+ * so importing from multiple bootstrap entry points is safe. The previous
16
+ * dispatcher is closed gracefully to avoid socket leaks during reinstall.
17
+ *
18
+ * Test hook: pass a custom factory to `installPerfKeepaliveAgent({ factory })`
19
+ * so the test suite can verify install+settings without binding real sockets.
20
+ */
21
+ // undici is lazy-loaded inside installPerfKeepaliveAgent to keep the
22
+ // cold-start import budget at zero when the flag is off (which is the
23
+ // default). Eager `import from 'undici'` here pushed the plugin-entry
24
+ // import time over the 2000ms cold-start budget enforced by
25
+ // tests/perf/cold-start.test.ts.
26
+ import { createRequire } from 'node:module';
27
+ import { getPerfKeepaliveEnabled, isLogLevelDebug } from './config.js';
28
+ const requireFromHere = createRequire(import.meta.url);
29
+ let snapshot = null;
30
+ const DEFAULTS = {
31
+ keepAliveTimeout: 60_000,
32
+ keepAliveMaxTimeout: 120_000,
33
+ connections: 8,
34
+ };
35
+ /**
36
+ * Install the keepAlive agent as undici's global dispatcher. Idempotent —
37
+ * subsequent calls in the same process return the existing snapshot without
38
+ * reinstalling. Returns null when the flag is off (no-op, no snapshot).
39
+ *
40
+ * `factory` exists for tests; production code never passes it.
41
+ */
42
+ export function installPerfKeepaliveAgent(opts = {}, factory) {
43
+ if (!getPerfKeepaliveEnabled())
44
+ return null;
45
+ if (snapshot)
46
+ return snapshot;
47
+ const resolved = {
48
+ keepAliveTimeout: opts.keepAliveTimeout ?? DEFAULTS.keepAliveTimeout,
49
+ keepAliveMaxTimeout: opts.keepAliveMaxTimeout ?? DEFAULTS.keepAliveMaxTimeout,
50
+ connections: opts.connections ?? DEFAULTS.connections,
51
+ };
52
+ try {
53
+ // Lazy-load undici only when actually installing. Cost is amortized
54
+ // across the rest of the process lifetime (Node caches require()).
55
+ const undici = requireFromHere('undici');
56
+ const prev = undici.getGlobalDispatcher();
57
+ // Default factory uses the just-loaded undici.Agent. Tests inject
58
+ // their own factory to avoid binding real sockets.
59
+ const realFactory = factory ?? ((r) => new undici.Agent(r));
60
+ const next = realFactory(resolved);
61
+ undici.setGlobalDispatcher(next);
62
+ // Close the previous dispatcher to release pooled sockets, but never
63
+ // throw — install must not break the gateway boot path on this branch.
64
+ if (prev && typeof prev.close === 'function') {
65
+ void prev.close().catch(() => { });
66
+ }
67
+ snapshot = { installed: true, options: resolved, installedAt: new Date().toISOString() };
68
+ return snapshot;
69
+ }
70
+ catch (err) {
71
+ if (isLogLevelDebug()) {
72
+ const msg = err instanceof Error ? err.message : String(err);
73
+ process.stderr.write(`[http-agent] install failed: ${msg}\n`);
74
+ }
75
+ return null;
76
+ }
77
+ }
78
+ /** Inspect current install state — used by /health + diagnostics. */
79
+ export function getPerfKeepaliveSnapshot() {
80
+ return snapshot;
81
+ }
82
+ /** Test hook — clear the install snapshot so the next call reinstalls. */
83
+ export function _resetPerfKeepaliveForTests() {
84
+ snapshot = null;
85
+ }
86
+ //# sourceMappingURL=http-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-agent.js","sourceRoot":"","sources":["../../../src/lib/http-agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,qEAAqE;AACrE,sEAAsE;AACtE,sEAAsE;AACtE,4DAA4D;AAC5D,iCAAiC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEvE,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAkBvD,IAAI,QAAQ,GAA2B,IAAI,CAAC;AAE5C,MAAM,QAAQ,GAA+B;IAC3C,gBAAgB,EAAE,MAAM;IACxB,mBAAmB,EAAE,OAAO;IAC5B,WAAW,EAAE,CAAC;CACf,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CACvC,OAAyB,EAAE,EAC3B,OAA2D;IAE3D,IAAI,CAAC,uBAAuB,EAAE;QAAE,OAAO,IAAI,CAAC;IAC5C,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,MAAM,QAAQ,GAA+B;QAC3C,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IAAI,QAAQ,CAAC,gBAAgB;QACpE,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,IAAI,QAAQ,CAAC,mBAAmB;QAC7E,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW;KACtD,CAAC;IAEF,IAAI,CAAC;QACH,oEAAoE;QACpE,mEAAmE;QACnE,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAItC,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAC1C,kEAAkE;QAClE,mDAAmD;QACnD,MAAM,WAAW,GAAG,OAAO,IAAI,CAAC,CAAC,CAA6B,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,CAAC,mBAAmB,CAAC,IAAa,CAAC,CAAC;QAC1C,qEAAqE;QACrE,uEAAuE;QACvE,IAAI,IAAI,IAAI,OAAQ,IAA2C,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YACrF,KAAM,IAA0C,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC3E,CAAC;QACD,QAAQ,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;QACzF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,IAAI,eAAe,EAAE,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,GAAG,IAAI,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,wBAAwB;IACtC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,2BAA2B;IACzC,QAAQ,GAAG,IAAI,CAAC;AAClB,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * markdown-to-mdv2 — v0.20.2 Slice 6 "rich render" converter.
3
+ *
4
+ * Converts a subset of CommonMark Markdown to Telegram MarkdownV2 with
5
+ * STRUCTURE PRESERVED — `**bold**` becomes `*bold*` (Telegram bold), not
6
+ * `\*\*bold\*\*` (literal asterisks). Companion to markdown-v2.ts whose
7
+ * escapeMarkdownV2 escapes EVERYTHING including syntax markers.
8
+ *
9
+ * Why both: markdown-v2.ts is the safe fallback for content where loss of
10
+ * formatting is acceptable but loss of punctuation isn't (v0.20.1 fix).
11
+ * This module is the rich path — gated by CC_OPENCLAW_RICH_RENDER=1, off
12
+ * by default in v0.20.2 so the chat-bubble path can opt in without
13
+ * regressing the v0.20.1 guarantee for un-opted callers.
14
+ *
15
+ * Supported source syntax → Telegram MarkdownV2 output:
16
+ * `**bold**` → `*bold*`
17
+ * `*italic*` → `_italic_` (single-asterisk italic)
18
+ * `_italic_` → `_italic_`
19
+ * `` `inline code` `` → `` `inline code` `` (content backslash-escaped)
20
+ * ` ```lang\n…\n``` ` → ` ```lang\n…\n``` ` (preserved verbatim)
21
+ * `# Header` / `## H2` / `### H3` … `###### H6` → `*Header*`
22
+ * `[label](url)` → `[label](url)` (label escaped, url paren-escaped)
23
+ * All other content → backslash-escaped per MarkdownV2 spec
24
+ *
25
+ * Out of scope (intentional v0 limits — keeps the converter <150 LOC and
26
+ * easy to reason about; expand in v0.20.3+ if A1 hits the gap):
27
+ * - Nested formatting (`**bold _italic_**`) — inner is escaped as plain text
28
+ * - Block quotes (`> quote`) — emitted as escaped text
29
+ * - Lists (`- item`, `1. item`) — markers escaped, content escaped (no list semantics in Telegram MarkdownV2 anyway)
30
+ * - Tables — markdown tables don't render in Telegram regardless
31
+ * - HTML tags — content-escaped
32
+ *
33
+ * Algorithm (placeholder substitution, NUL-sentinel keyed):
34
+ * 1. Extract code fences → placeholders (highest priority — content inside is verbatim)
35
+ * 2. Extract inline code → placeholders (same priority — content escape rules differ)
36
+ * 3. Extract bold (`**…**`) → placeholders with body text-escaped
37
+ * 4. Extract italic (`*…*` and `_…_`) → placeholders
38
+ * 5. Extract headers (`#…`) at line start → placeholders
39
+ * 6. Extract links (`[label](url)`) → placeholders
40
+ * 7. Escape remaining body as plain text (every MarkdownV2 special char)
41
+ * 8. Restore placeholders verbatim
42
+ *
43
+ * NUL (0x00) sentinels chosen because:
44
+ * - NUL is not in the MarkdownV2 special-char set (won't be escaped in step 7)
45
+ * - Digits in the index suffix are also not in the special-char set
46
+ * - "CODE"/"BOLD"/etc letters are not in the special-char set
47
+ * So placeholders survive the bulk-escape step intact.
48
+ */
49
+ /**
50
+ * Convert standard CommonMark Markdown to Telegram MarkdownV2 with structural
51
+ * syntax preserved. Returns '' for null/undefined.
52
+ */
53
+ export declare function markdownToMdv2(input: string | null | undefined): string;
@@ -0,0 +1,141 @@
1
+ /**
2
+ * markdown-to-mdv2 — v0.20.2 Slice 6 "rich render" converter.
3
+ *
4
+ * Converts a subset of CommonMark Markdown to Telegram MarkdownV2 with
5
+ * STRUCTURE PRESERVED — `**bold**` becomes `*bold*` (Telegram bold), not
6
+ * `\*\*bold\*\*` (literal asterisks). Companion to markdown-v2.ts whose
7
+ * escapeMarkdownV2 escapes EVERYTHING including syntax markers.
8
+ *
9
+ * Why both: markdown-v2.ts is the safe fallback for content where loss of
10
+ * formatting is acceptable but loss of punctuation isn't (v0.20.1 fix).
11
+ * This module is the rich path — gated by CC_OPENCLAW_RICH_RENDER=1, off
12
+ * by default in v0.20.2 so the chat-bubble path can opt in without
13
+ * regressing the v0.20.1 guarantee for un-opted callers.
14
+ *
15
+ * Supported source syntax → Telegram MarkdownV2 output:
16
+ * `**bold**` → `*bold*`
17
+ * `*italic*` → `_italic_` (single-asterisk italic)
18
+ * `_italic_` → `_italic_`
19
+ * `` `inline code` `` → `` `inline code` `` (content backslash-escaped)
20
+ * ` ```lang\n…\n``` ` → ` ```lang\n…\n``` ` (preserved verbatim)
21
+ * `# Header` / `## H2` / `### H3` … `###### H6` → `*Header*`
22
+ * `[label](url)` → `[label](url)` (label escaped, url paren-escaped)
23
+ * All other content → backslash-escaped per MarkdownV2 spec
24
+ *
25
+ * Out of scope (intentional v0 limits — keeps the converter <150 LOC and
26
+ * easy to reason about; expand in v0.20.3+ if A1 hits the gap):
27
+ * - Nested formatting (`**bold _italic_**`) — inner is escaped as plain text
28
+ * - Block quotes (`> quote`) — emitted as escaped text
29
+ * - Lists (`- item`, `1. item`) — markers escaped, content escaped (no list semantics in Telegram MarkdownV2 anyway)
30
+ * - Tables — markdown tables don't render in Telegram regardless
31
+ * - HTML tags — content-escaped
32
+ *
33
+ * Algorithm (placeholder substitution, NUL-sentinel keyed):
34
+ * 1. Extract code fences → placeholders (highest priority — content inside is verbatim)
35
+ * 2. Extract inline code → placeholders (same priority — content escape rules differ)
36
+ * 3. Extract bold (`**…**`) → placeholders with body text-escaped
37
+ * 4. Extract italic (`*…*` and `_…_`) → placeholders
38
+ * 5. Extract headers (`#…`) at line start → placeholders
39
+ * 6. Extract links (`[label](url)`) → placeholders
40
+ * 7. Escape remaining body as plain text (every MarkdownV2 special char)
41
+ * 8. Restore placeholders verbatim
42
+ *
43
+ * NUL (0x00) sentinels chosen because:
44
+ * - NUL is not in the MarkdownV2 special-char set (won't be escaped in step 7)
45
+ * - Digits in the index suffix are also not in the special-char set
46
+ * - "CODE"/"BOLD"/etc letters are not in the special-char set
47
+ * So placeholders survive the bulk-escape step intact.
48
+ */
49
+ /** MarkdownV2 special characters (Telegram Bot API spec). Outside code spans
50
+ * / pre blocks, these MUST be backslash-escaped when intended as content. */
51
+ const MDV2_TEXT_SPECIAL = /[_*[\]()~`>#+\-=|{}.!\\]/g;
52
+ /** Inside code spans (`` `x` ``), Telegram requires escaping backtick and
53
+ * backslash only. Other chars (including `.`, `*`, etc.) render literally. */
54
+ const MDV2_CODE_SPECIAL = /[`\\]/g;
55
+ function escapeText(s) {
56
+ return s.replace(MDV2_TEXT_SPECIAL, '\\$&');
57
+ }
58
+ function escapeCodeContent(s) {
59
+ return s.replace(MDV2_CODE_SPECIAL, '\\$&');
60
+ }
61
+ /** Escape URL inside `[label](url)` — Telegram requires `\` and `)` escaped. */
62
+ function escapeUrl(s) {
63
+ return s.replace(/[)\\]/g, '\\$&');
64
+ }
65
+ /**
66
+ * Convert standard CommonMark Markdown to Telegram MarkdownV2 with structural
67
+ * syntax preserved. Returns '' for null/undefined.
68
+ */
69
+ export function markdownToMdv2(input) {
70
+ if (input == null)
71
+ return '';
72
+ let text = String(input);
73
+ // Step 1 — extract code fences (triple-backtick blocks). Body verbatim
74
+ // except backticks and backslashes are escaped per Telegram spec.
75
+ const codeBlocks = [];
76
+ text = text.replace(/```([a-zA-Z0-9_+\-]*)\n?([\s\S]*?)```/g, (_m, lang, body) => {
77
+ const idx = codeBlocks.length;
78
+ const langStr = lang || '';
79
+ const escapedBody = escapeCodeContent(body);
80
+ codeBlocks.push('```' + langStr + '\n' + escapedBody + '```');
81
+ return `\x00CODEBLOCK${idx}\x00`;
82
+ });
83
+ // Step 2 — extract inline code (single-backtick spans). Same escape rules
84
+ // as code block content (only backtick + backslash).
85
+ const inlineCodes = [];
86
+ text = text.replace(/`([^`\n]+)`/g, (_m, body) => {
87
+ const idx = inlineCodes.length;
88
+ inlineCodes.push('`' + escapeCodeContent(body) + '`');
89
+ return `\x00INLINECODE${idx}\x00`;
90
+ });
91
+ // Step 3 — extract bold (`**…**`). Inner body is escaped as plain text;
92
+ // nested formatting markers in the body become literal characters (v0 limit).
93
+ const bolds = [];
94
+ text = text.replace(/\*\*([^*\n]+)\*\*/g, (_m, body) => {
95
+ const idx = bolds.length;
96
+ bolds.push('*' + escapeText(body) + '*');
97
+ return `\x00BOLD${idx}\x00`;
98
+ });
99
+ // Step 4a — extract italic via single asterisk (`*…*`). Telegram uses `_`
100
+ // for italic, so converting * → _ is the structural transform here.
101
+ const italics = [];
102
+ text = text.replace(/(?<![\w*])\*([^*\n]+)\*(?!\w)/g, (_m, body) => {
103
+ const idx = italics.length;
104
+ italics.push('_' + escapeText(body) + '_');
105
+ return `\x00ITALIC${idx}\x00`;
106
+ });
107
+ // Step 4b — extract italic via single underscore (`_…_`). Telegram syntax
108
+ // matches CommonMark for this case.
109
+ text = text.replace(/(?<![\w_])_([^_\n]+)_(?!\w)/g, (_m, body) => {
110
+ const idx = italics.length;
111
+ italics.push('_' + escapeText(body) + '_');
112
+ return `\x00ITALIC${idx}\x00`;
113
+ });
114
+ // Step 5 — extract ATX headers (`# H1` … `###### H6`) at line start.
115
+ // Telegram has no header syntax; we promote header text to bold.
116
+ const headers = [];
117
+ text = text.replace(/^(#{1,6})\s+(.+?)\s*#*\s*$/gm, (_m, _hashes, body) => {
118
+ const idx = headers.length;
119
+ headers.push('*' + escapeText(body) + '*');
120
+ return `\x00HEADER${idx}\x00`;
121
+ });
122
+ // Step 6 — extract links (`[label](url)`).
123
+ const links = [];
124
+ text = text.replace(/\[([^\]\n]+)\]\(([^)\s]+)\)/g, (_m, label, url) => {
125
+ const idx = links.length;
126
+ links.push('[' + escapeText(label) + '](' + escapeUrl(url) + ')');
127
+ return `\x00LINK${idx}\x00`;
128
+ });
129
+ // Step 7 — escape all remaining content. Placeholder sentinels survive
130
+ // because NUL and digits and capital letters are not in MDV2_TEXT_SPECIAL.
131
+ text = escapeText(text);
132
+ // Step 8 — restore placeholders verbatim.
133
+ text = text.replace(/\x00CODEBLOCK(\d+)\x00/g, (_m, idx) => codeBlocks[Number(idx)]);
134
+ text = text.replace(/\x00INLINECODE(\d+)\x00/g, (_m, idx) => inlineCodes[Number(idx)]);
135
+ text = text.replace(/\x00BOLD(\d+)\x00/g, (_m, idx) => bolds[Number(idx)]);
136
+ text = text.replace(/\x00ITALIC(\d+)\x00/g, (_m, idx) => italics[Number(idx)]);
137
+ text = text.replace(/\x00HEADER(\d+)\x00/g, (_m, idx) => headers[Number(idx)]);
138
+ text = text.replace(/\x00LINK(\d+)\x00/g, (_m, idx) => links[Number(idx)]);
139
+ return text;
140
+ }
141
+ //# sourceMappingURL=markdown-to-mdv2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-to-mdv2.js","sourceRoot":"","sources":["../../../src/lib/markdown-to-mdv2.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAEH;8EAC8E;AAC9E,MAAM,iBAAiB,GAAG,2BAA2B,CAAC;AAEtD;+EAC+E;AAC/E,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAEnC,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,iBAAiB,CAAC,CAAS;IAClC,OAAO,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;AAC9C,CAAC;AAED,gFAAgF;AAChF,SAAS,SAAS,CAAC,CAAS;IAC1B,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACrC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAgC;IAC7D,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,EAAE,CAAC;IAC7B,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAEzB,uEAAuE;IACvE,kEAAkE;IAClE,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,wCAAwC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QAC/E,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QAC3B,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC5C,UAAU,CAAC,IAAI,CAAC,KAAK,GAAG,OAAO,GAAG,IAAI,GAAG,WAAW,GAAG,KAAK,CAAC,CAAC;QAC9D,OAAO,gBAAgB,GAAG,MAAM,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,0EAA0E;IAC1E,qDAAqD;IACrD,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE;QAC/C,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC;QAC/B,WAAW,CAAC,IAAI,CAAC,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QACtD,OAAO,iBAAiB,GAAG,MAAM,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,wEAAwE;IACxE,8EAA8E;IAC9E,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE;QACrD,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QACzC,OAAO,WAAW,GAAG,MAAM,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,0EAA0E;IAC1E,oEAAoE;IACpE,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,gCAAgC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE;QACjE,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QAC3C,OAAO,aAAa,GAAG,MAAM,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,0EAA0E;IAC1E,oCAAoC;IACpC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,8BAA8B,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE;QAC/D,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QAC3C,OAAO,aAAa,GAAG,MAAM,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,qEAAqE;IACrE,iEAAiE;IACjE,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,8BAA8B,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACxE,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QAC3C,OAAO,aAAa,GAAG,MAAM,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,2CAA2C;IAC3C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,8BAA8B,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACrE,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;QAClE,OAAO,WAAW,GAAG,MAAM,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,uEAAuE;IACvE,2EAA2E;IAC3E,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAExB,0CAA0C;IAC1C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrF,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,0BAA0B,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACvF,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3E,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/E,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/E,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAE3E,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * M6 (perf overhaul idea #6) — async-lossless-compaction scheduler.
3
+ *
4
+ * Lossless-claw's DAG summarization currently runs on the hot path (turn N
5
+ * blocks while compaction completes). This scheduler defers the work to a
6
+ * setImmediate callback so turn N returns immediately; the summary lands
7
+ * before turn N+1 reads it (or N+1 skips the stale summary if compaction
8
+ * hasn't finished — that branch is the cost of the speedup).
9
+ *
10
+ * Flag: CC_OPENCLAW_PERF_ASYNC_COMPACT (default OFF, medium risk —
11
+ * compaction freshness can drift if N+1 fires before N's compaction lands).
12
+ *
13
+ * Per-session serialization: only one async compaction in flight per
14
+ * sessionKey at a time. Subsequent calls during in-flight work are dropped
15
+ * (the in-flight one will pick up the latest state at execution time).
16
+ */
17
+ export interface AsyncCompactResult {
18
+ scheduled: boolean;
19
+ reason: 'flag_off' | 'in_flight' | 'scheduled';
20
+ }
21
+ /**
22
+ * Schedule `compactFn` to run after the current turn returns. Returns
23
+ * synchronously; the caller never awaits compaction completion.
24
+ */
25
+ export declare function scheduleAsyncCompaction(sessionKey: string, compactFn: () => Promise<void> | void): AsyncCompactResult;
26
+ export declare function _resetAsyncCompactForTests(): void;
@@ -0,0 +1,42 @@
1
+ /**
2
+ * M6 (perf overhaul idea #6) — async-lossless-compaction scheduler.
3
+ *
4
+ * Lossless-claw's DAG summarization currently runs on the hot path (turn N
5
+ * blocks while compaction completes). This scheduler defers the work to a
6
+ * setImmediate callback so turn N returns immediately; the summary lands
7
+ * before turn N+1 reads it (or N+1 skips the stale summary if compaction
8
+ * hasn't finished — that branch is the cost of the speedup).
9
+ *
10
+ * Flag: CC_OPENCLAW_PERF_ASYNC_COMPACT (default OFF, medium risk —
11
+ * compaction freshness can drift if N+1 fires before N's compaction lands).
12
+ *
13
+ * Per-session serialization: only one async compaction in flight per
14
+ * sessionKey at a time. Subsequent calls during in-flight work are dropped
15
+ * (the in-flight one will pick up the latest state at execution time).
16
+ */
17
+ import { getPerfAsyncCompactEnabled } from '../config.js';
18
+ const inFlight = new Set();
19
+ /**
20
+ * Schedule `compactFn` to run after the current turn returns. Returns
21
+ * synchronously; the caller never awaits compaction completion.
22
+ */
23
+ export function scheduleAsyncCompaction(sessionKey, compactFn) {
24
+ if (!getPerfAsyncCompactEnabled())
25
+ return { scheduled: false, reason: 'flag_off' };
26
+ if (!sessionKey || !compactFn)
27
+ return { scheduled: false, reason: 'flag_off' };
28
+ if (inFlight.has(sessionKey))
29
+ return { scheduled: false, reason: 'in_flight' };
30
+ inFlight.add(sessionKey);
31
+ setImmediate(() => {
32
+ void Promise.resolve()
33
+ .then(() => compactFn())
34
+ .catch(() => { })
35
+ .finally(() => inFlight.delete(sessionKey));
36
+ });
37
+ return { scheduled: true, reason: 'scheduled' };
38
+ }
39
+ export function _resetAsyncCompactForTests() {
40
+ inFlight.clear();
41
+ }
42
+ //# sourceMappingURL=async-compact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-compact.js","sourceRoot":"","sources":["../../../../src/lib/perf/async-compact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAE1D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;AAOnC;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,UAAkB,EAClB,SAAqC;IAErC,IAAI,CAAC,0BAA0B,EAAE;QAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IACnF,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAC/E,IAAI,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAC/E,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACzB,YAAY,CAAC,GAAG,EAAE;QAChB,KAAK,OAAO,CAAC,OAAO,EAAE;aACnB,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC;aACvB,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;aACf,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,0BAA0B;IACxC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * M12 (perf overhaul idea #12) — direct claude-code SDK in-process.
3
+ *
4
+ * Bypasses the `claude` CLI subprocess entirely by calling the
5
+ * `@anthropic-ai/claude-code` SDK in the cc-openclaw Node process.
6
+ * Eliminates all subprocess overhead (Node bootstrap, bundle parse, auth
7
+ * handshake) at the cost of losing CLI session/checkpoint features and
8
+ * recoupling to upstream SDK API churn.
9
+ *
10
+ * Flag: CC_OPENCLAW_PERF_DIRECT_SDK (default OFF, HIGH RISK — ships LAST
11
+ * with the resident-CLI pool as the fallback).
12
+ *
13
+ * Probes the SDK availability without bringing it as a hard dependency:
14
+ * dynamic require with a swallowed ENOENT. The actual invocation is
15
+ * delegated to the registered handler — session-manager owns the call
16
+ * details (model, prompt, options) and decides whether the SDK supports
17
+ * the requested feature set for this turn.
18
+ */
19
+ export interface DirectSdkAvailability {
20
+ enabled: boolean;
21
+ available: boolean;
22
+ reason: 'flag_off' | 'sdk_missing' | 'sdk_loaded' | 'probe_error';
23
+ version: string | null;
24
+ }
25
+ export declare function probeDirectSdkAvailability(): DirectSdkAvailability;
26
+ export declare function _resetDirectSdkProbeForTests(): void;