openclaw-observability 2026.4.1 → 2026.4.21

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 (112) hide show
  1. package/README.md +4 -4
  2. package/dist/cloud/api-key-auth.d.ts.map +1 -1
  3. package/dist/cloud/api-key-auth.js +4 -9
  4. package/dist/cloud/api-key-auth.js.map +1 -1
  5. package/dist/cloud/types.d.ts +2 -3
  6. package/dist/cloud/types.d.ts.map +1 -1
  7. package/dist/config.d.ts +34 -5
  8. package/dist/config.d.ts.map +1 -1
  9. package/dist/config.js +35 -2
  10. package/dist/config.js.map +1 -1
  11. package/dist/gateway/register-observability-gateway.d.ts +6 -4
  12. package/dist/gateway/register-observability-gateway.d.ts.map +1 -1
  13. package/dist/gateway/register-observability-gateway.js +105 -2
  14. package/dist/gateway/register-observability-gateway.js.map +1 -1
  15. package/dist/hooks/messages.d.ts +4 -3
  16. package/dist/hooks/messages.d.ts.map +1 -1
  17. package/dist/hooks/messages.js +23 -1
  18. package/dist/hooks/messages.js.map +1 -1
  19. package/dist/hooks/session.d.ts +4 -3
  20. package/dist/hooks/session.d.ts.map +1 -1
  21. package/dist/hooks/session.js +9 -4
  22. package/dist/hooks/session.js.map +1 -1
  23. package/dist/hooks/subagent.d.ts +4 -3
  24. package/dist/hooks/subagent.d.ts.map +1 -1
  25. package/dist/hooks/subagent.js +4 -1
  26. package/dist/hooks/subagent.js.map +1 -1
  27. package/dist/hooks/tools.d.ts +3 -3
  28. package/dist/hooks/tools.d.ts.map +1 -1
  29. package/dist/hooks/tools.js +122 -4
  30. package/dist/hooks/tools.js.map +1 -1
  31. package/dist/index.d.ts +2 -2
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +472 -118
  34. package/dist/index.js.map +1 -1
  35. package/dist/llm/replay-runtime.d.ts +16 -0
  36. package/dist/llm/replay-runtime.d.ts.map +1 -0
  37. package/dist/llm/replay-runtime.js +596 -0
  38. package/dist/llm/replay-runtime.js.map +1 -0
  39. package/dist/llm/replay.d.ts +3 -0
  40. package/dist/llm/replay.d.ts.map +1 -1
  41. package/dist/llm/replay.js.map +1 -1
  42. package/dist/redaction.d.ts +1 -1
  43. package/dist/redaction.js +1 -1
  44. package/dist/runtime/index.d.ts +1 -1
  45. package/dist/runtime/index.d.ts.map +1 -1
  46. package/dist/runtime/index.js +3 -1
  47. package/dist/runtime/index.js.map +1 -1
  48. package/dist/runtime/session-context.d.ts +4 -3
  49. package/dist/runtime/session-context.d.ts.map +1 -1
  50. package/dist/runtime/session-context.js +37 -17
  51. package/dist/runtime/session-context.js.map +1 -1
  52. package/dist/security/chain-detector.d.ts +4 -4
  53. package/dist/security/chain-detector.d.ts.map +1 -1
  54. package/dist/security/chain-detector.js.map +1 -1
  55. package/dist/security/rules.d.ts +2 -2
  56. package/dist/security/rules.d.ts.map +1 -1
  57. package/dist/security/rules.js +9 -2
  58. package/dist/security/rules.js.map +1 -1
  59. package/dist/security/scanner.d.ts +8 -3
  60. package/dist/security/scanner.d.ts.map +1 -1
  61. package/dist/security/scanner.js +85 -7
  62. package/dist/security/scanner.js.map +1 -1
  63. package/dist/security/types.d.ts +3 -0
  64. package/dist/security/types.d.ts.map +1 -1
  65. package/dist/storage/buffer.d.ts +7 -7
  66. package/dist/storage/buffer.d.ts.map +1 -1
  67. package/dist/storage/buffer.js +2 -2
  68. package/dist/storage/buffer.js.map +1 -1
  69. package/dist/storage/cloud-export-writer.d.ts +23 -0
  70. package/dist/storage/cloud-export-writer.d.ts.map +1 -0
  71. package/dist/storage/cloud-export-writer.js +202 -0
  72. package/dist/storage/cloud-export-writer.js.map +1 -0
  73. package/dist/storage/duckdb-local-writer.d.ts +19 -3
  74. package/dist/storage/duckdb-local-writer.d.ts.map +1 -1
  75. package/dist/storage/duckdb-local-writer.js +261 -81
  76. package/dist/storage/duckdb-local-writer.js.map +1 -1
  77. package/dist/storage/duckdb-observability-forwarder.d.ts +16 -0
  78. package/dist/storage/duckdb-observability-forwarder.d.ts.map +1 -0
  79. package/dist/storage/duckdb-observability-forwarder.js +289 -0
  80. package/dist/storage/duckdb-observability-forwarder.js.map +1 -0
  81. package/dist/storage/mysql-writer.d.ts +35 -6
  82. package/dist/storage/mysql-writer.d.ts.map +1 -1
  83. package/dist/storage/mysql-writer.js +251 -32
  84. package/dist/storage/mysql-writer.js.map +1 -1
  85. package/dist/storage/schema.d.ts +2 -2
  86. package/dist/storage/schema.d.ts.map +1 -1
  87. package/dist/storage/schema.js +181 -53
  88. package/dist/storage/schema.js.map +1 -1
  89. package/dist/storage/structured-model.d.ts +11 -2
  90. package/dist/storage/structured-model.d.ts.map +1 -1
  91. package/dist/storage/structured-model.js +183 -5
  92. package/dist/storage/structured-model.js.map +1 -1
  93. package/dist/storage/writer.d.ts +14 -2
  94. package/dist/storage/writer.d.ts.map +1 -1
  95. package/dist/types.d.ts +28 -4
  96. package/dist/types.d.ts.map +1 -1
  97. package/dist/types.js +3 -1
  98. package/dist/types.js.map +1 -1
  99. package/dist/web/api.d.ts +80 -2
  100. package/dist/web/api.d.ts.map +1 -1
  101. package/dist/web/api.js +917 -113
  102. package/dist/web/api.js.map +1 -1
  103. package/dist/web/routes.d.ts +22 -2
  104. package/dist/web/routes.d.ts.map +1 -1
  105. package/dist/web/routes.js +264 -21
  106. package/dist/web/routes.js.map +1 -1
  107. package/dist/web/ui.d.ts +3 -1
  108. package/dist/web/ui.d.ts.map +1 -1
  109. package/dist/web/ui.js +2678 -633
  110. package/dist/web/ui.js.map +1 -1
  111. package/openclaw.plugin.json +145 -4
  112. package/package.json +1 -1
@@ -0,0 +1,596 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.REPLAY_RUN_PREFIX = exports.REPLAY_SESSION_PREFIX = void 0;
37
+ exports.runReplayRequestViaRuntime = runReplayRequestViaRuntime;
38
+ const node_crypto_1 = require("node:crypto");
39
+ const fs = __importStar(require("node:fs"));
40
+ const path = __importStar(require("node:path"));
41
+ const replay_1 = require("./replay");
42
+ exports.REPLAY_SESSION_PREFIX = 'replay-';
43
+ exports.REPLAY_RUN_PREFIX = 'replay:';
44
+ function resolveProviderAndModel(providers, requestProviderId, rawModel) {
45
+ const modelInput = String(rawModel || '').trim();
46
+ if (!modelInput)
47
+ throw new Error('model is required');
48
+ let providerId = String(requestProviderId || '').trim();
49
+ let modelId = modelInput;
50
+ if (!providerId && modelInput.includes('/')) {
51
+ const idx = modelInput.indexOf('/');
52
+ providerId = modelInput.slice(0, idx).trim();
53
+ modelId = modelInput.slice(idx + 1).trim();
54
+ }
55
+ if (!modelId)
56
+ throw new Error('model is required');
57
+ if (providerId) {
58
+ const provider = providers.find((p) => p.providerId === providerId);
59
+ if (!provider)
60
+ throw new Error(`provider not found: ${providerId}`);
61
+ return { providerId, model: modelId };
62
+ }
63
+ const matchedProviders = providers.filter((p) => p.models.some((m) => m.id === modelId));
64
+ if (matchedProviders.length === 1) {
65
+ return { providerId: matchedProviders[0].providerId, model: modelId };
66
+ }
67
+ if (providers.length === 1) {
68
+ return { providerId: providers[0].providerId, model: modelId };
69
+ }
70
+ if (matchedProviders.length > 1) {
71
+ throw new Error(`model "${modelId}" exists in multiple providers, please specify providerId`);
72
+ }
73
+ throw new Error(`cannot resolve provider for model "${modelId}"`);
74
+ }
75
+ function toRecord(value) {
76
+ if (value && typeof value === 'object' && !Array.isArray(value))
77
+ return value;
78
+ return {};
79
+ }
80
+ function toStringOrUndefined(value) {
81
+ if (typeof value !== 'string')
82
+ return undefined;
83
+ const trimmed = value.trim();
84
+ return trimmed ? trimmed : undefined;
85
+ }
86
+ function toFiniteNumberOrUndefined(value) {
87
+ const n = Number(value);
88
+ if (!Number.isFinite(n))
89
+ return undefined;
90
+ return n;
91
+ }
92
+ function extractTextFromContent(content) {
93
+ if (typeof content === 'string')
94
+ return content.trim();
95
+ if (!Array.isArray(content))
96
+ return '';
97
+ const texts = [];
98
+ for (const part of content) {
99
+ if (typeof part === 'string') {
100
+ const t = part.trim();
101
+ if (t)
102
+ texts.push(t);
103
+ continue;
104
+ }
105
+ if (!part || typeof part !== 'object')
106
+ continue;
107
+ const item = part;
108
+ const type = typeof item.type === 'string' ? item.type : '';
109
+ if (type === 'text' || type === 'input_text' || type === 'output_text') {
110
+ const t = typeof item.text === 'string' ? item.text.trim() : '';
111
+ if (t)
112
+ texts.push(t);
113
+ continue;
114
+ }
115
+ if (type === 'thinking') {
116
+ const t = typeof item.thinking === 'string' ? item.thinking.trim() : '';
117
+ if (t)
118
+ texts.push(t);
119
+ continue;
120
+ }
121
+ if (type === 'toolCall' || type === 'toolResult') {
122
+ try {
123
+ const json = JSON.stringify(item);
124
+ if (json)
125
+ texts.push(json);
126
+ }
127
+ catch {
128
+ // ignore non-serializable tool payload
129
+ }
130
+ }
131
+ }
132
+ return texts.join('\n\n').trim();
133
+ }
134
+ function extractLastUserPromptFromHistory(value) {
135
+ if (!Array.isArray(value))
136
+ return '';
137
+ for (let i = value.length - 1; i >= 0; i--) {
138
+ const msgRaw = value[i];
139
+ if (!msgRaw || typeof msgRaw !== 'object')
140
+ continue;
141
+ const msg = msgRaw;
142
+ const role = String(msg.role || '').toLowerCase();
143
+ if (role !== 'user')
144
+ continue;
145
+ const text = extractTextFromContent(msg.content);
146
+ if (text)
147
+ return text;
148
+ }
149
+ return '';
150
+ }
151
+ function collectReplayTextFromMessages(messagesRaw) {
152
+ if (!Array.isArray(messagesRaw)) {
153
+ return {
154
+ text: '',
155
+ usage: { promptTokens: null, completionTokens: null, totalTokens: null },
156
+ };
157
+ }
158
+ let assistantMsg = null;
159
+ for (let i = messagesRaw.length - 1; i >= 0; i--) {
160
+ const item = messagesRaw[i];
161
+ if (!item || typeof item !== 'object')
162
+ continue;
163
+ const itemObj = item;
164
+ const messageObj = (itemObj.message && typeof itemObj.message === 'object')
165
+ ? itemObj.message
166
+ : itemObj;
167
+ if (messageObj.role === 'assistant') {
168
+ assistantMsg = messageObj;
169
+ break;
170
+ }
171
+ }
172
+ if (!assistantMsg) {
173
+ return {
174
+ text: '',
175
+ usage: { promptTokens: null, completionTokens: null, totalTokens: null },
176
+ };
177
+ }
178
+ const content = Array.isArray(assistantMsg.content) ? assistantMsg.content : [];
179
+ const parts = [];
180
+ for (const item of content) {
181
+ if (!item || typeof item !== 'object')
182
+ continue;
183
+ const p = item;
184
+ if (p.isReasoning === true)
185
+ continue;
186
+ if (typeof p.type === 'string' && p.type.length > 0 && p.type !== 'text')
187
+ continue;
188
+ if (typeof p.text !== 'string')
189
+ continue;
190
+ const txt = p.text.trim();
191
+ if (txt)
192
+ parts.push(txt);
193
+ }
194
+ const usageRaw = (assistantMsg.usage && typeof assistantMsg.usage === 'object')
195
+ ? assistantMsg.usage
196
+ : {};
197
+ const promptTokens = Number.isFinite(Number(usageRaw.input))
198
+ ? Number(usageRaw.input)
199
+ : (Number.isFinite(Number(usageRaw.promptTokens)) ? Number(usageRaw.promptTokens) : null);
200
+ const completionTokens = Number.isFinite(Number(usageRaw.output))
201
+ ? Number(usageRaw.output)
202
+ : (Number.isFinite(Number(usageRaw.completionTokens)) ? Number(usageRaw.completionTokens) : null);
203
+ const totalTokens = Number.isFinite(Number(usageRaw.totalTokens))
204
+ ? Number(usageRaw.totalTokens)
205
+ : (promptTokens != null && completionTokens != null ? promptTokens + completionTokens : null);
206
+ return {
207
+ text: parts.join('\n\n'),
208
+ usage: { promptTokens, completionTokens, totalTokens },
209
+ finishReason: typeof assistantMsg.stopReason === 'string' ? assistantMsg.stopReason : undefined,
210
+ providerId: typeof assistantMsg.provider === 'string' ? assistantMsg.provider : undefined,
211
+ model: typeof assistantMsg.model === 'string' ? assistantMsg.model : undefined,
212
+ };
213
+ }
214
+ function parseOpenclawConfig(configPath) {
215
+ if (!fs.existsSync(configPath)) {
216
+ throw new Error(`openclaw config not found: ${configPath}`);
217
+ }
218
+ const raw = fs.readFileSync(configPath, 'utf8');
219
+ try {
220
+ const parsed = JSON.parse(raw);
221
+ if (!parsed || typeof parsed !== 'object')
222
+ throw new Error('invalid object');
223
+ return parsed;
224
+ }
225
+ catch (e) {
226
+ throw new Error(`invalid openclaw config json: ${e.message}`);
227
+ }
228
+ }
229
+ function readSessionMessages(sessionFile) {
230
+ try {
231
+ if (!fs.existsSync(sessionFile))
232
+ return [];
233
+ const raw = fs.readFileSync(sessionFile, 'utf8');
234
+ const lines = raw.split(/\r?\n/).map((line) => line.trim()).filter(Boolean);
235
+ const messages = [];
236
+ for (const line of lines) {
237
+ try {
238
+ const entry = JSON.parse(line);
239
+ if (entry.type !== 'message')
240
+ continue;
241
+ messages.push(entry);
242
+ }
243
+ catch {
244
+ // ignore malformed lines
245
+ }
246
+ }
247
+ return messages;
248
+ }
249
+ catch {
250
+ return [];
251
+ }
252
+ }
253
+ function toIsoFromUnknownTimestamp(value, fallbackMs) {
254
+ const n = Number(value);
255
+ if (Number.isFinite(n) && n > 0) {
256
+ const ms = n > 1e12 ? n : n * 1000;
257
+ return new Date(ms).toISOString();
258
+ }
259
+ const s = typeof value === 'string' ? value.trim() : '';
260
+ if (s) {
261
+ const t = Date.parse(s);
262
+ if (Number.isFinite(t))
263
+ return new Date(t).toISOString();
264
+ }
265
+ return new Date(fallbackMs).toISOString();
266
+ }
267
+ function normalizeTranscriptContent(rawContent) {
268
+ if (typeof rawContent === 'string') {
269
+ const text = rawContent.trim();
270
+ return text ? [{ type: 'text', text }] : [];
271
+ }
272
+ if (!Array.isArray(rawContent))
273
+ return [];
274
+ const out = [];
275
+ for (const item of rawContent) {
276
+ if (typeof item === 'string') {
277
+ const text = item.trim();
278
+ if (text)
279
+ out.push({ type: 'text', text });
280
+ continue;
281
+ }
282
+ if (!item || typeof item !== 'object')
283
+ continue;
284
+ out.push(item);
285
+ }
286
+ return out;
287
+ }
288
+ function normalizeTranscriptMessage(raw) {
289
+ if (!raw || typeof raw !== 'object')
290
+ return null;
291
+ const msg = raw;
292
+ const role = toStringOrUndefined(msg.role);
293
+ if (!role)
294
+ return null;
295
+ const content = normalizeTranscriptContent(msg.content);
296
+ const normalized = {
297
+ role,
298
+ content,
299
+ };
300
+ // Preserve commonly used structured fields when present.
301
+ if (typeof msg.toolCallId === 'string')
302
+ normalized.toolCallId = msg.toolCallId;
303
+ if (typeof msg.toolName === 'string')
304
+ normalized.toolName = msg.toolName;
305
+ if (msg.details && typeof msg.details === 'object')
306
+ normalized.details = msg.details;
307
+ if (typeof msg.isError === 'boolean')
308
+ normalized.isError = msg.isError;
309
+ const timestamp = Number(msg.timestamp);
310
+ if (Number.isFinite(timestamp) && timestamp > 0)
311
+ normalized.timestamp = timestamp;
312
+ return normalized;
313
+ }
314
+ function appendJsonlLine(lines, value) {
315
+ lines.push(JSON.stringify(value));
316
+ }
317
+ function seedReplaySessionTranscript(params) {
318
+ if (fs.existsSync(params.sessionFile))
319
+ return;
320
+ const source = Array.isArray(params.historyMessages) && params.historyMessages.length > 0
321
+ ? params.historyMessages
322
+ : (Array.isArray(params.fallbackMessages) ? params.fallbackMessages : []);
323
+ if (source.length === 0)
324
+ return;
325
+ fs.mkdirSync(path.dirname(params.sessionFile), { recursive: true });
326
+ const now = Date.now();
327
+ const lines = [];
328
+ let parentId = null;
329
+ const mkId = () => (0, node_crypto_1.randomUUID)().slice(0, 8);
330
+ const push = (entry) => {
331
+ appendJsonlLine(lines, entry);
332
+ if (typeof entry.id === 'string')
333
+ parentId = entry.id;
334
+ };
335
+ push({
336
+ type: 'session',
337
+ version: 3,
338
+ id: params.sessionId,
339
+ timestamp: new Date(now).toISOString(),
340
+ cwd: process.cwd(),
341
+ });
342
+ push({
343
+ type: 'model_change',
344
+ id: mkId(),
345
+ parentId,
346
+ timestamp: new Date(now + 1).toISOString(),
347
+ provider: params.providerId,
348
+ modelId: params.model,
349
+ });
350
+ push({
351
+ type: 'thinking_level_change',
352
+ id: mkId(),
353
+ parentId,
354
+ timestamp: new Date(now + 2).toISOString(),
355
+ thinkingLevel: params.thinkLevel || 'off',
356
+ });
357
+ for (let i = 0; i < source.length; i++) {
358
+ const normalized = normalizeTranscriptMessage(source[i]);
359
+ if (!normalized)
360
+ continue;
361
+ const tsIso = toIsoFromUnknownTimestamp((source[i] && typeof source[i] === 'object') ? source[i].timestamp : undefined, now + 10 + i);
362
+ push({
363
+ type: 'message',
364
+ id: mkId(),
365
+ parentId,
366
+ timestamp: tsIso,
367
+ message: normalized,
368
+ });
369
+ }
370
+ fs.writeFileSync(params.sessionFile, lines.join('\n') + '\n', 'utf8');
371
+ }
372
+ async function runReplayRequestViaRuntime(params) {
373
+ const replayInput = toRecord(params.replayInput);
374
+ const inputStreamParams = toRecord(replayInput.streamParams);
375
+ const providers = (0, replay_1.listReplayProviders)(params.configPath);
376
+ if (!providers.length) {
377
+ throw new Error('no model providers found in openclaw config');
378
+ }
379
+ const providerId = toStringOrUndefined(params.providerId) || toStringOrUndefined(replayInput.provider);
380
+ const model = toStringOrUndefined(params.model) || toStringOrUndefined(replayInput.model) || '';
381
+ const resolved = resolveProviderAndModel(providers, providerId, model);
382
+ const historyMessages = Array.isArray(replayInput.historyMessages) ? replayInput.historyMessages : undefined;
383
+ const fallbackMessages = Array.isArray(replayInput.messages) ? replayInput.messages : undefined;
384
+ // Fidelity-first: when replayInput carries the captured source payload,
385
+ // prioritize it over top-level prompt fields so replay can match original run.
386
+ const userPrompt = String(toStringOrUndefined(replayInput.userMessage)
387
+ || toStringOrUndefined(replayInput.prompt)
388
+ || extractLastUserPromptFromHistory(historyMessages || fallbackMessages)
389
+ || params.userPrompt
390
+ || '').trim();
391
+ if (!userPrompt) {
392
+ throw new Error('userPrompt is required');
393
+ }
394
+ // Keep replay transport aligned with original runtime contract:
395
+ // pass history/messages as structured fields instead of folding them into systemPrompt.
396
+ const systemPrompt = toStringOrUndefined(params.systemPrompt)
397
+ || toStringOrUndefined(replayInput.systemPrompt)
398
+ || toStringOrUndefined(replayInput.extraSystemPrompt);
399
+ const temperature = params.temperature != null
400
+ ? Number(params.temperature)
401
+ : toFiniteNumberOrUndefined(inputStreamParams.temperature ?? replayInput.temperature);
402
+ const maxTokens = params.maxTokens != null
403
+ ? Number(params.maxTokens)
404
+ : toFiniteNumberOrUndefined(inputStreamParams.maxTokens ?? replayInput.maxTokens);
405
+ const thinkLevel = toStringOrUndefined(replayInput.thinkLevel) || 'medium';
406
+ const timeoutMs = toFiniteNumberOrUndefined(replayInput.timeoutMs) || 120000;
407
+ const images = Array.isArray(replayInput.images) ? replayInput.images : undefined;
408
+ const streamParams = {
409
+ ...inputStreamParams,
410
+ temperature: temperature == null ? inputStreamParams.temperature : temperature,
411
+ maxTokens: maxTokens == null ? inputStreamParams.maxTokens : maxTokens,
412
+ };
413
+ const runtimeObj = (params.runtime && typeof params.runtime === 'object')
414
+ ? params.runtime
415
+ : {};
416
+ const sessionId = `${exports.REPLAY_SESSION_PREFIX}${(0, node_crypto_1.randomUUID)()}`;
417
+ const sessionKey = `agent:main:${sessionId}`;
418
+ const startedAt = Date.now();
419
+ const runSubagent = runtimeObj.subagent;
420
+ const preferEmbeddedForReplayFidelity = Array.isArray(historyMessages) || Array.isArray(fallbackMessages);
421
+ if (!preferEmbeddedForReplayFidelity
422
+ && runSubagent
423
+ && typeof runSubagent.run === 'function'
424
+ && typeof runSubagent.waitForRun === 'function'
425
+ && typeof runSubagent.getSessionMessages === 'function') {
426
+ try {
427
+ let runRaw;
428
+ try {
429
+ runRaw = await runSubagent.run({
430
+ sessionKey,
431
+ message: userPrompt,
432
+ deliver: false,
433
+ provider: resolved.providerId,
434
+ model: resolved.model,
435
+ extraSystemPrompt: systemPrompt,
436
+ streamParams,
437
+ images,
438
+ historyMessages,
439
+ messages: fallbackMessages,
440
+ thinkLevel,
441
+ timeoutMs,
442
+ lane: exports.REPLAY_RUN_PREFIX,
443
+ });
444
+ }
445
+ catch (e) {
446
+ const msg = String(e?.message || e || '');
447
+ const isOverrideDenied = /override is not authorized/i.test(msg);
448
+ if (!isOverrideDenied)
449
+ throw e;
450
+ runRaw = await runSubagent.run({
451
+ sessionKey,
452
+ message: userPrompt,
453
+ deliver: false,
454
+ extraSystemPrompt: systemPrompt,
455
+ streamParams,
456
+ images,
457
+ historyMessages,
458
+ messages: fallbackMessages,
459
+ thinkLevel,
460
+ timeoutMs,
461
+ lane: exports.REPLAY_RUN_PREFIX,
462
+ });
463
+ }
464
+ const runObj = (runRaw && typeof runRaw === 'object') ? runRaw : {};
465
+ const runId = typeof runObj.runId === 'string' ? runObj.runId : undefined;
466
+ if (!runId)
467
+ throw new Error('runtime.subagent.run returned invalid runId');
468
+ const waitRaw = await runSubagent.waitForRun({ runId, timeoutMs: 120000 });
469
+ const waitObj = (waitRaw && typeof waitRaw === 'object')
470
+ ? waitRaw
471
+ : {};
472
+ const status = typeof waitObj.status === 'string' ? waitObj.status : '';
473
+ if (status === 'error') {
474
+ throw new Error(typeof waitObj.error === 'string' && waitObj.error ? waitObj.error : 'replay run failed');
475
+ }
476
+ if (status === 'timeout') {
477
+ throw new Error('replay run timed out');
478
+ }
479
+ const sessionMessagesRaw = await runSubagent.getSessionMessages({
480
+ sessionKey,
481
+ limit: 100,
482
+ });
483
+ const sessionMessagesObj = (sessionMessagesRaw && typeof sessionMessagesRaw === 'object')
484
+ ? sessionMessagesRaw
485
+ : {};
486
+ const extracted = collectReplayTextFromMessages(sessionMessagesObj.messages);
487
+ const latencyMs = Date.now() - startedAt;
488
+ return {
489
+ providerId: extracted.providerId || resolved.providerId,
490
+ model: extracted.model || resolved.model,
491
+ text: extracted.text,
492
+ usage: extracted.usage,
493
+ latencyMs,
494
+ finishReason: extracted.finishReason,
495
+ replaySessionId: sessionId,
496
+ replayRunId: `${exports.REPLAY_RUN_PREFIX}${runId}`,
497
+ };
498
+ }
499
+ catch (e) {
500
+ const msg = String(e?.message || e || '');
501
+ const shouldFallbackToEmbedded = /missing scope/i.test(msg)
502
+ || /operator\.write/i.test(msg)
503
+ || /gateway request scope/i.test(msg);
504
+ if (!shouldFallbackToEmbedded)
505
+ throw e;
506
+ // fallback to embedded run below
507
+ }
508
+ }
509
+ const agent = runtimeObj.agent;
510
+ if (!agent)
511
+ throw new Error('runtime.agent unavailable');
512
+ if (typeof agent.resolveAgentWorkspaceDir !== 'function')
513
+ throw new Error('runtime.agent.resolveAgentWorkspaceDir unavailable');
514
+ if (typeof agent.resolveAgentDir !== 'function')
515
+ throw new Error('runtime.agent.resolveAgentDir unavailable');
516
+ if (typeof agent.session?.resolveSessionFilePath !== 'function')
517
+ throw new Error('runtime.agent.session.resolveSessionFilePath unavailable');
518
+ if (typeof agent.runEmbeddedPiAgent !== 'function')
519
+ throw new Error('runtime.agent.runEmbeddedPiAgent unavailable');
520
+ const openclawConfig = parseOpenclawConfig(params.configPath);
521
+ const agentId = 'main';
522
+ const runId = `${exports.REPLAY_RUN_PREFIX}${(0, node_crypto_1.randomUUID)()}`;
523
+ const workspaceDir = agent.resolveAgentWorkspaceDir(openclawConfig, agentId);
524
+ const agentDir = agent.resolveAgentDir(openclawConfig, agentId, process.env);
525
+ const sessionFile = agent.session.resolveSessionFilePath(sessionId, undefined, { agentId });
526
+ seedReplaySessionTranscript({
527
+ sessionFile,
528
+ sessionId,
529
+ providerId: resolved.providerId,
530
+ model: resolved.model,
531
+ thinkLevel,
532
+ historyMessages,
533
+ fallbackMessages,
534
+ });
535
+ const resultRaw = await agent.runEmbeddedPiAgent({
536
+ sessionId,
537
+ sessionKey,
538
+ agentId,
539
+ trigger: 'manual',
540
+ senderIsOwner: true,
541
+ messageChannel: 'webchat',
542
+ sessionFile,
543
+ workspaceDir,
544
+ agentDir,
545
+ config: openclawConfig,
546
+ prompt: userPrompt,
547
+ provider: resolved.providerId,
548
+ model: resolved.model,
549
+ thinkLevel,
550
+ timeoutMs,
551
+ runId,
552
+ extraSystemPrompt: systemPrompt,
553
+ streamParams,
554
+ images,
555
+ historyMessages,
556
+ messages: fallbackMessages,
557
+ });
558
+ const resultObj = (resultRaw && typeof resultRaw === 'object')
559
+ ? resultRaw
560
+ : {};
561
+ const meta = (resultObj.meta && typeof resultObj.meta === 'object')
562
+ ? resultObj.meta
563
+ : {};
564
+ const agentMeta = (meta.agentMeta && typeof meta.agentMeta === 'object')
565
+ ? meta.agentMeta
566
+ : {};
567
+ const usageRaw = (agentMeta.usage && typeof agentMeta.usage === 'object')
568
+ ? agentMeta.usage
569
+ : {};
570
+ const promptTokens = Number.isFinite(Number(usageRaw.input)) ? Number(usageRaw.input) : null;
571
+ const completionTokens = Number.isFinite(Number(usageRaw.output)) ? Number(usageRaw.output) : null;
572
+ const totalTokens = Number.isFinite(Number(usageRaw.total))
573
+ ? Number(usageRaw.total)
574
+ : (promptTokens != null && completionTokens != null ? promptTokens + completionTokens : null);
575
+ const latencyMs = Number.isFinite(Number(meta.durationMs)) ? Number(meta.durationMs) : (Date.now() - startedAt);
576
+ let textExtracted = collectReplayTextFromMessages(resultObj.payloads);
577
+ if (!textExtracted.text) {
578
+ textExtracted = collectReplayTextFromMessages(readSessionMessages(sessionFile));
579
+ }
580
+ const finishReason = typeof meta.stopReason === 'string' ? meta.stopReason : undefined;
581
+ return {
582
+ providerId: textExtracted.providerId || resolved.providerId,
583
+ model: textExtracted.model || resolved.model,
584
+ text: textExtracted.text,
585
+ usage: {
586
+ promptTokens,
587
+ completionTokens,
588
+ totalTokens,
589
+ },
590
+ latencyMs,
591
+ finishReason,
592
+ replaySessionId: sessionId,
593
+ replayRunId: runId,
594
+ };
595
+ }
596
+ //# sourceMappingURL=replay-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replay-runtime.js","sourceRoot":"","sources":["../../src/llm/replay-runtime.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ export interface ReplayRunParams {
13
13
  model: string;
14
14
  userPrompt: string;
15
15
  systemPrompt?: string;
16
+ replayInput?: Record<string, unknown>;
16
17
  temperature?: number;
17
18
  maxTokens?: number;
18
19
  }
@@ -27,6 +28,8 @@ export interface ReplayRunResult {
27
28
  };
28
29
  latencyMs: number;
29
30
  finishReason?: string;
31
+ replaySessionId?: string;
32
+ replayRunId?: string;
30
33
  }
31
34
  export declare function listReplayProviders(configPath: string): ReplayProviderInfo[];
32
35
  export declare function runReplayRequest(params: ReplayRunParams): Promise<ReplayRunResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"replay.d.ts","sourceRoot":"","sources":["../../src/llm/replay.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;QAChC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AA6DD,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAQ5E;AAmKD,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAyCxF"}
1
+ {"version":3,"file":"replay.d.ts","sourceRoot":"","sources":["../../src/llm/replay.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;QAChC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA6DD,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAQ5E;AAmKD,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAyCxF"}