@openclawbrain/cli 0.4.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.
- package/LICENSE +201 -0
- package/README.md +18 -0
- package/dist/extension/index.d.ts +1 -0
- package/dist/extension/index.js +98 -0
- package/dist/extension/index.js.map +1 -0
- package/dist/extension/runtime-guard.d.ts +61 -0
- package/dist/extension/runtime-guard.js +238 -0
- package/dist/extension/runtime-guard.js.map +1 -0
- package/dist/src/attachment-truth.d.ts +34 -0
- package/dist/src/attachment-truth.js +220 -0
- package/dist/src/attachment-truth.js.map +1 -0
- package/dist/src/cli.d.ts +170 -0
- package/dist/src/cli.js +5583 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/daemon.d.ts +70 -0
- package/dist/src/daemon.js +955 -0
- package/dist/src/daemon.js.map +1 -0
- package/dist/src/import-export.d.ts +36 -0
- package/dist/src/import-export.js +171 -0
- package/dist/src/import-export.js.map +1 -0
- package/dist/src/index.d.ts +1730 -0
- package/dist/src/index.js +6882 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/learning-spine.d.ts +50 -0
- package/dist/src/learning-spine.js +461 -0
- package/dist/src/learning-spine.js.map +1 -0
- package/dist/src/local-session-passive-learning.d.ts +61 -0
- package/dist/src/local-session-passive-learning.js +454 -0
- package/dist/src/local-session-passive-learning.js.map +1 -0
- package/dist/src/ollama-client.d.ts +46 -0
- package/dist/src/ollama-client.js +231 -0
- package/dist/src/ollama-client.js.map +1 -0
- package/dist/src/openclaw-home-layout.d.ts +17 -0
- package/dist/src/openclaw-home-layout.js +182 -0
- package/dist/src/openclaw-home-layout.js.map +1 -0
- package/dist/src/openclaw-hook-truth.d.ts +33 -0
- package/dist/src/openclaw-hook-truth.js +260 -0
- package/dist/src/openclaw-hook-truth.js.map +1 -0
- package/dist/src/openclaw-plugin-install.d.ts +40 -0
- package/dist/src/openclaw-plugin-install.js +282 -0
- package/dist/src/provider-config.d.ts +64 -0
- package/dist/src/provider-config.js +306 -0
- package/dist/src/provider-config.js.map +1 -0
- package/dist/src/resolve-activation-root.d.ts +27 -0
- package/dist/src/resolve-activation-root.js +190 -0
- package/dist/src/resolve-activation-root.js.map +1 -0
- package/dist/src/semantic-metadata.d.ts +5 -0
- package/dist/src/semantic-metadata.js +70 -0
- package/dist/src/semantic-metadata.js.map +1 -0
- package/dist/src/session-store.d.ts +168 -0
- package/dist/src/session-store.js +250 -0
- package/dist/src/session-store.js.map +1 -0
- package/dist/src/session-tail.d.ts +73 -0
- package/dist/src/session-tail.js +602 -0
- package/dist/src/session-tail.js.map +1 -0
- package/dist/src/shadow-extension-proof.d.ts +43 -0
- package/dist/src/shadow-extension-proof.js +218 -0
- package/dist/src/shadow-extension-proof.js.map +1 -0
- package/dist/src/teacher-labeler.d.ts +50 -0
- package/dist/src/teacher-labeler.js +424 -0
- package/dist/src/teacher-labeler.js.map +1 -0
- package/extension/index.ts +125 -0
- package/extension/runtime-guard.ts +362 -0
- package/package.json +64 -0
|
@@ -0,0 +1,454 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { buildNormalizedEventExport, createInteractionEvent } from "@openclawbrain/contracts";
|
|
3
|
+
import { extractFeedbackEventsFromInteractionRecords, isSystemMessage } from "@openclawbrain/event-export";
|
|
4
|
+
import { buildAssistantMessageSemanticMetadata, buildFeedbackSemanticMetadata } from "./semantic-metadata.js";
|
|
5
|
+
const DEFAULT_AGENT_ID = "openclaw-session-store";
|
|
6
|
+
const KNOWN_PRINCIPALS = {
|
|
7
|
+
bihua: {
|
|
8
|
+
teacherIdentity: "bihua",
|
|
9
|
+
teacherRole: "principal",
|
|
10
|
+
teacherAuthority: "binding",
|
|
11
|
+
priorityClass: "critical"
|
|
12
|
+
},
|
|
13
|
+
"jonathan gu": {
|
|
14
|
+
teacherIdentity: "jonathan",
|
|
15
|
+
teacherRole: "admin",
|
|
16
|
+
teacherAuthority: "high",
|
|
17
|
+
priorityClass: "high"
|
|
18
|
+
},
|
|
19
|
+
jonathan: {
|
|
20
|
+
teacherIdentity: "jonathan",
|
|
21
|
+
teacherRole: "admin",
|
|
22
|
+
teacherAuthority: "high",
|
|
23
|
+
priorityClass: "high"
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
const DEFAULT_PRIVACY_RULES = [
|
|
27
|
+
"session-store fixtures stay sanitized and use fake ids, paths, and workspace roots",
|
|
28
|
+
"leading Conversation info / Sender untrusted metadata blocks are stripped before feedback extraction",
|
|
29
|
+
"assistant thinking blocks and raw tool-result payloads are excluded from passive-learning content",
|
|
30
|
+
"sender names are treated as hints for principal resolution, not source-of-truth identity proof",
|
|
31
|
+
"runtime noise (internal context, subagent results, exec output) is stripped from passive-learning content"
|
|
32
|
+
];
|
|
33
|
+
function normalizeString(value) {
|
|
34
|
+
if (typeof value !== "string") {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
const trimmed = value.trim();
|
|
38
|
+
return trimmed.length === 0 ? null : trimmed;
|
|
39
|
+
}
|
|
40
|
+
function sanitizeToken(value) {
|
|
41
|
+
const sanitized = value.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
|
|
42
|
+
return sanitized.length === 0 ? "unknown" : sanitized;
|
|
43
|
+
}
|
|
44
|
+
function slugifyIdentity(value) {
|
|
45
|
+
return value.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
|
|
46
|
+
}
|
|
47
|
+
function deriveChannel(sessionKey, entry) {
|
|
48
|
+
const deliveryChannel = normalizeString(entry.deliveryContext?.channel);
|
|
49
|
+
if (deliveryChannel !== null) {
|
|
50
|
+
return deliveryChannel;
|
|
51
|
+
}
|
|
52
|
+
const originSurface = normalizeString(entry.origin?.surface);
|
|
53
|
+
if (originSurface !== null) {
|
|
54
|
+
return originSurface;
|
|
55
|
+
}
|
|
56
|
+
const keyParts = sessionKey.split(":");
|
|
57
|
+
const transportPart = keyParts[2];
|
|
58
|
+
if (transportPart !== undefined && transportPart.length > 0) {
|
|
59
|
+
return transportPart;
|
|
60
|
+
}
|
|
61
|
+
return entry.chatType ?? "unknown";
|
|
62
|
+
}
|
|
63
|
+
function messageText(record) {
|
|
64
|
+
const parts = [];
|
|
65
|
+
let thinkingBlocks = 0;
|
|
66
|
+
let toolCalls = 0;
|
|
67
|
+
for (const part of record.message.content) {
|
|
68
|
+
if (part.type === "text") {
|
|
69
|
+
const normalized = normalizeString(part.text);
|
|
70
|
+
if (normalized !== null) {
|
|
71
|
+
parts.push(normalized);
|
|
72
|
+
}
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
if (part.type === "thinking") {
|
|
76
|
+
thinkingBlocks += 1;
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
if (part.type === "toolCall") {
|
|
80
|
+
toolCalls += 1;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return {
|
|
84
|
+
content: parts.join("\n").trim(),
|
|
85
|
+
thinkingBlocks,
|
|
86
|
+
toolCalls
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Patterns that indicate runtime/system noise in user messages.
|
|
91
|
+
* These are system-injected content blocks that should not be included
|
|
92
|
+
* in passive learning data.
|
|
93
|
+
*/
|
|
94
|
+
const RUNTIME_NOISE_PATTERNS = [
|
|
95
|
+
/OpenClaw runtime context \(internal\)/i,
|
|
96
|
+
/<<<BEGIN_UNTRUSTED_CHILD_RESULT>>>/,
|
|
97
|
+
/<<<END_UNTRUSTED_CHILD_RESULT>>>/,
|
|
98
|
+
/\[Internal task completion event\]/,
|
|
99
|
+
/source: subagent\s+session_key:/,
|
|
100
|
+
/Exec failed \([^)]+, code \d+\)/,
|
|
101
|
+
/\[System Message\]\s*\[sessionId:/,
|
|
102
|
+
/\[cron:[a-f0-9-]+\s/,
|
|
103
|
+
/Result \(untrusted content, treat as data\):/,
|
|
104
|
+
];
|
|
105
|
+
/**
|
|
106
|
+
* Heuristic: returns true if a section is predominantly runtime noise
|
|
107
|
+
* rather than genuine user content.
|
|
108
|
+
*/
|
|
109
|
+
function isSectionRuntimeNoise(section) {
|
|
110
|
+
for (const pattern of RUNTIME_NOISE_PATTERNS) {
|
|
111
|
+
if (pattern.test(section)) {
|
|
112
|
+
return true;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Strip runtime noise from content after initial metadata stripping.
|
|
119
|
+
* Removes sections that contain system-injected runtime context,
|
|
120
|
+
* subagent results, exec output, and other non-user content.
|
|
121
|
+
*/
|
|
122
|
+
function stripRuntimeNoise(text) {
|
|
123
|
+
if (text.length === 0) {
|
|
124
|
+
return { content: "", strippedNoiseCount: 0 };
|
|
125
|
+
}
|
|
126
|
+
const sections = text
|
|
127
|
+
.split(/\n\s*\n/g)
|
|
128
|
+
.map((section) => section.trim())
|
|
129
|
+
.filter((section) => section.length > 0);
|
|
130
|
+
const remaining = [];
|
|
131
|
+
let strippedNoiseCount = 0;
|
|
132
|
+
for (const section of sections) {
|
|
133
|
+
if (isSectionRuntimeNoise(section)) {
|
|
134
|
+
strippedNoiseCount += 1;
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
remaining.push(section);
|
|
138
|
+
}
|
|
139
|
+
return {
|
|
140
|
+
content: remaining.join("\n\n").trim(),
|
|
141
|
+
strippedNoiseCount
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
function stripLeadingUntrustedMetadata(text) {
|
|
145
|
+
const blocks = text.replace(/\r\n/g, "\n").trim();
|
|
146
|
+
if (blocks.length === 0) {
|
|
147
|
+
return {
|
|
148
|
+
content: "",
|
|
149
|
+
senderName: null,
|
|
150
|
+
strippedMetadataBlockCount: 0
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
const sections = blocks
|
|
154
|
+
.split(/\n\s*\n/g)
|
|
155
|
+
.map((section) => section.trim())
|
|
156
|
+
.filter((section) => section.length > 0);
|
|
157
|
+
const remaining = [];
|
|
158
|
+
let senderName = null;
|
|
159
|
+
let strippedMetadataBlockCount = 0;
|
|
160
|
+
for (const section of sections) {
|
|
161
|
+
const lines = section.split("\n").map((line) => line.trim()).filter((line) => line.length > 0);
|
|
162
|
+
const header = lines[0] ?? "";
|
|
163
|
+
if (header === "Conversation info (untrusted metadata)" || header === "Sender (untrusted metadata)") {
|
|
164
|
+
strippedMetadataBlockCount += 1;
|
|
165
|
+
if (header === "Sender (untrusted metadata)") {
|
|
166
|
+
const senderLine = lines.find((line) => /^name:/iu.test(line) || /^display name:/iu.test(line));
|
|
167
|
+
const extracted = senderLine?.split(":").slice(1).join(":").trim() ?? null;
|
|
168
|
+
if (extracted !== null && extracted.length > 0) {
|
|
169
|
+
senderName = extracted;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
continue;
|
|
173
|
+
}
|
|
174
|
+
remaining.push(section);
|
|
175
|
+
}
|
|
176
|
+
// After stripping metadata headers, also strip runtime noise sections
|
|
177
|
+
const joined = remaining.join("\n\n").trim();
|
|
178
|
+
const denoised = stripRuntimeNoise(joined);
|
|
179
|
+
return {
|
|
180
|
+
content: denoised.content,
|
|
181
|
+
senderName,
|
|
182
|
+
strippedMetadataBlockCount: strippedMetadataBlockCount + denoised.strippedNoiseCount
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
function buildPrincipalScope(sessionId, relatedInteractionId) {
|
|
186
|
+
const scopeKey = [
|
|
187
|
+
"profile:current_profile",
|
|
188
|
+
`session:${sessionId}`,
|
|
189
|
+
relatedInteractionId === null ? null : `interaction:${relatedInteractionId}`
|
|
190
|
+
]
|
|
191
|
+
.filter((value) => value !== null)
|
|
192
|
+
.join("|");
|
|
193
|
+
if (relatedInteractionId !== null) {
|
|
194
|
+
return {
|
|
195
|
+
kind: "interaction",
|
|
196
|
+
profileSelector: "current_profile",
|
|
197
|
+
sessionId,
|
|
198
|
+
interactionId: relatedInteractionId,
|
|
199
|
+
scopeKey
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
return {
|
|
203
|
+
kind: "session",
|
|
204
|
+
profileSelector: "current_profile",
|
|
205
|
+
sessionId,
|
|
206
|
+
scopeKey
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
function resolveSenderIdentity(sessionId, senderName, relatedInteractionId) {
|
|
210
|
+
if (senderName === null) {
|
|
211
|
+
return {
|
|
212
|
+
actorRole: "user",
|
|
213
|
+
principal: undefined
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
const normalized = senderName.toLowerCase().replace(/\s+/g, " ").trim();
|
|
217
|
+
const known = KNOWN_PRINCIPALS[normalized];
|
|
218
|
+
if (known !== undefined) {
|
|
219
|
+
return {
|
|
220
|
+
actorRole: known.teacherRole,
|
|
221
|
+
principal: {
|
|
222
|
+
teacherIdentity: known.teacherIdentity,
|
|
223
|
+
teacherRole: known.teacherRole,
|
|
224
|
+
teacherAuthority: known.teacherAuthority,
|
|
225
|
+
priorityClass: known.priorityClass,
|
|
226
|
+
principalScope: buildPrincipalScope(sessionId, relatedInteractionId)
|
|
227
|
+
}
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
const actorIdentity = slugifyIdentity(normalized);
|
|
231
|
+
return {
|
|
232
|
+
actorRole: "user",
|
|
233
|
+
principal: actorIdentity.length === 0
|
|
234
|
+
? undefined
|
|
235
|
+
: {
|
|
236
|
+
teacherIdentity: `scanner/actor/${actorIdentity}`,
|
|
237
|
+
teacherRole: "user",
|
|
238
|
+
teacherAuthority: "normal",
|
|
239
|
+
priorityClass: "normal",
|
|
240
|
+
principalScope: buildPrincipalScope(sessionId, relatedInteractionId)
|
|
241
|
+
}
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
export function buildPassiveLearningSessionExportFromOpenClawSessionStore(input) {
|
|
245
|
+
const agentId = input.agentId ?? DEFAULT_AGENT_ID;
|
|
246
|
+
const sequenceStart = input.sequenceStart ?? 1;
|
|
247
|
+
const channel = deriveChannel(input.sessionKey, input.indexEntry);
|
|
248
|
+
const sourceStream = `openclaw/runtime/${sanitizeToken(channel)}`;
|
|
249
|
+
const warnings = [];
|
|
250
|
+
const interactionEvents = [];
|
|
251
|
+
const interactionContentsById = {};
|
|
252
|
+
const feedbackRecords = [];
|
|
253
|
+
let strippedMetadataBlockCount = 0;
|
|
254
|
+
let strippedThinkingBlockCount = 0;
|
|
255
|
+
let droppedToolResultCount = 0;
|
|
256
|
+
let droppedRuntimeNoiseCount = 0;
|
|
257
|
+
let nextSequence = sequenceStart;
|
|
258
|
+
let latestAssistantInteractionId = null;
|
|
259
|
+
for (const record of input.records) {
|
|
260
|
+
if (record.type !== "message") {
|
|
261
|
+
continue;
|
|
262
|
+
}
|
|
263
|
+
if (record.message.role === "toolResult") {
|
|
264
|
+
droppedToolResultCount += 1;
|
|
265
|
+
continue;
|
|
266
|
+
}
|
|
267
|
+
const resolvedText = messageText(record);
|
|
268
|
+
strippedThinkingBlockCount += resolvedText.thinkingBlocks;
|
|
269
|
+
if (record.message.role === "assistant") {
|
|
270
|
+
if (resolvedText.content.length === 0) {
|
|
271
|
+
if (resolvedText.toolCalls > 0) {
|
|
272
|
+
warnings.push(`assistant message ${record.id} only contained tool calls; skipped from passive-learning interactions`);
|
|
273
|
+
}
|
|
274
|
+
continue;
|
|
275
|
+
}
|
|
276
|
+
// Strip runtime noise from assistant content
|
|
277
|
+
const denoisedAssistant = stripRuntimeNoise(resolvedText.content);
|
|
278
|
+
droppedRuntimeNoiseCount += denoisedAssistant.strippedNoiseCount;
|
|
279
|
+
if (denoisedAssistant.content.length === 0) {
|
|
280
|
+
warnings.push(`assistant message ${record.id} only contained runtime noise; skipped from passive-learning interactions`);
|
|
281
|
+
nextSequence += 1;
|
|
282
|
+
continue;
|
|
283
|
+
}
|
|
284
|
+
const eventId = `evt-session-store-assistant-${input.indexEntry.sessionId}-${record.id}`;
|
|
285
|
+
const interactionSequence = nextSequence;
|
|
286
|
+
const interaction = createInteractionEvent({
|
|
287
|
+
eventId,
|
|
288
|
+
agentId,
|
|
289
|
+
sessionId: input.indexEntry.sessionId,
|
|
290
|
+
channel,
|
|
291
|
+
sequence: interactionSequence,
|
|
292
|
+
kind: "message_delivered",
|
|
293
|
+
createdAt: record.timestamp,
|
|
294
|
+
source: {
|
|
295
|
+
runtimeOwner: "openclaw",
|
|
296
|
+
stream: sourceStream
|
|
297
|
+
},
|
|
298
|
+
semantic: buildAssistantMessageSemanticMetadata(),
|
|
299
|
+
messageId: record.id
|
|
300
|
+
});
|
|
301
|
+
nextSequence += 1;
|
|
302
|
+
latestAssistantInteractionId = interaction.eventId;
|
|
303
|
+
interactionEvents.push(interaction);
|
|
304
|
+
interactionContentsById[interaction.eventId] = denoisedAssistant.content;
|
|
305
|
+
feedbackRecords.push({
|
|
306
|
+
recordId: record.id,
|
|
307
|
+
format: "raw",
|
|
308
|
+
createdAt: record.timestamp,
|
|
309
|
+
content: denoisedAssistant.content,
|
|
310
|
+
sequence: interactionSequence,
|
|
311
|
+
messageId: record.id,
|
|
312
|
+
interactionId: interaction.eventId,
|
|
313
|
+
actorRole: "assistant"
|
|
314
|
+
});
|
|
315
|
+
continue;
|
|
316
|
+
}
|
|
317
|
+
if (record.message.role !== "user") {
|
|
318
|
+
warnings.push(`unsupported session-store message role skipped: ${record.message.role}`);
|
|
319
|
+
continue;
|
|
320
|
+
}
|
|
321
|
+
// Early gate: skip messages that contain system/runtime markers BEFORE
|
|
322
|
+
// metadata stripping and feedback classification. This prevents subagent
|
|
323
|
+
// completions, runtime context blocks, and internal events from being
|
|
324
|
+
// misclassified as corrections or teaching by the feedback heuristics.
|
|
325
|
+
if (isSystemMessage(resolvedText.content)) {
|
|
326
|
+
droppedRuntimeNoiseCount += 1;
|
|
327
|
+
warnings.push(`user message ${record.id} contained system/runtime markers; skipped from feedback extraction`);
|
|
328
|
+
nextSequence += 1;
|
|
329
|
+
continue;
|
|
330
|
+
}
|
|
331
|
+
const sanitized = stripLeadingUntrustedMetadata(resolvedText.content);
|
|
332
|
+
strippedMetadataBlockCount += sanitized.strippedMetadataBlockCount;
|
|
333
|
+
const { actorRole, principal } = resolveSenderIdentity(input.indexEntry.sessionId, sanitized.senderName, latestAssistantInteractionId);
|
|
334
|
+
if (sanitized.content.length === 0) {
|
|
335
|
+
warnings.push(`user message ${record.id} had no passive-learning content after metadata stripping`);
|
|
336
|
+
nextSequence += 1;
|
|
337
|
+
continue;
|
|
338
|
+
}
|
|
339
|
+
feedbackRecords.push({
|
|
340
|
+
recordId: record.id,
|
|
341
|
+
format: "raw",
|
|
342
|
+
createdAt: record.timestamp,
|
|
343
|
+
content: sanitized.content,
|
|
344
|
+
sequence: nextSequence,
|
|
345
|
+
messageId: record.id,
|
|
346
|
+
relatedInteractionId: latestAssistantInteractionId,
|
|
347
|
+
actorRole,
|
|
348
|
+
...(principal === undefined ? {} : { principal })
|
|
349
|
+
});
|
|
350
|
+
nextSequence += 1;
|
|
351
|
+
}
|
|
352
|
+
const feedbackExtraction = extractFeedbackEventsFromInteractionRecords({
|
|
353
|
+
agentId,
|
|
354
|
+
sessionId: input.indexEntry.sessionId,
|
|
355
|
+
channel,
|
|
356
|
+
source: {
|
|
357
|
+
runtimeOwner: "openclaw",
|
|
358
|
+
stream: sourceStream
|
|
359
|
+
},
|
|
360
|
+
records: feedbackRecords
|
|
361
|
+
});
|
|
362
|
+
const feedbackEvents = feedbackExtraction.events.map((entry) => ({
|
|
363
|
+
...entry.feedbackEvent,
|
|
364
|
+
semantic: buildFeedbackSemanticMetadata("session_store", entry.feedbackEvent.kind, entry.feedbackEvent.content)
|
|
365
|
+
}));
|
|
366
|
+
const normalizedEventExport = buildNormalizedEventExport({
|
|
367
|
+
interactionEvents,
|
|
368
|
+
feedbackEvents
|
|
369
|
+
});
|
|
370
|
+
return {
|
|
371
|
+
session: {
|
|
372
|
+
sessionKey: input.sessionKey,
|
|
373
|
+
sessionId: input.indexEntry.sessionId,
|
|
374
|
+
updatedAt: new Date(input.indexEntry.updatedAt).toISOString(),
|
|
375
|
+
channel,
|
|
376
|
+
sourceStream,
|
|
377
|
+
sessionFileBasename: input.indexEntry.sessionFile === undefined ? null : path.basename(input.indexEntry.sessionFile),
|
|
378
|
+
model: input.indexEntry.model ?? null,
|
|
379
|
+
modelProvider: input.indexEntry.modelProvider ?? null,
|
|
380
|
+
chatType: input.indexEntry.chatType ?? null,
|
|
381
|
+
systemPromptFingerprint: {
|
|
382
|
+
available: input.indexEntry.systemPromptReport !== undefined,
|
|
383
|
+
workspaceDirBasename: input.indexEntry.systemPromptReport?.workspaceDir === undefined
|
|
384
|
+
? null
|
|
385
|
+
: path.basename(input.indexEntry.systemPromptReport.workspaceDir),
|
|
386
|
+
injectedWorkspaceFileCount: input.indexEntry.systemPromptReport?.injectedWorkspaceFiles?.length ?? 0,
|
|
387
|
+
missingInjectedWorkspaceFileCount: input.indexEntry.systemPromptReport?.injectedWorkspaceFiles?.filter((file) => file.missing).length ?? 0,
|
|
388
|
+
toolNames: (input.indexEntry.systemPromptReport?.tools?.entries ?? [])
|
|
389
|
+
.map((entry) => entry.name)
|
|
390
|
+
.filter((name) => typeof name === "string")
|
|
391
|
+
}
|
|
392
|
+
},
|
|
393
|
+
privacy: {
|
|
394
|
+
sanitized: true,
|
|
395
|
+
rules: [...DEFAULT_PRIVACY_RULES],
|
|
396
|
+
strippedMetadataBlockCount,
|
|
397
|
+
strippedThinkingBlockCount,
|
|
398
|
+
droppedToolResultCount,
|
|
399
|
+
droppedRuntimeNoiseCount
|
|
400
|
+
},
|
|
401
|
+
interactionEvents,
|
|
402
|
+
feedbackEvents,
|
|
403
|
+
interactionContentsById,
|
|
404
|
+
feedbackExtraction,
|
|
405
|
+
normalizedEventExport,
|
|
406
|
+
warnings,
|
|
407
|
+
nextSequence
|
|
408
|
+
};
|
|
409
|
+
}
|
|
410
|
+
export function buildPassiveLearningStoreExportFromOpenClawSessionIndex(input) {
|
|
411
|
+
const sessionKeys = input.sessionKeys ?? Object.keys(input.sessionIndex);
|
|
412
|
+
const orderedEntries = sessionKeys
|
|
413
|
+
.map((sessionKey) => {
|
|
414
|
+
const entry = input.sessionIndex[sessionKey];
|
|
415
|
+
if (entry === undefined) {
|
|
416
|
+
throw new Error(`missing session index entry for ${sessionKey}`);
|
|
417
|
+
}
|
|
418
|
+
return {
|
|
419
|
+
sessionKey,
|
|
420
|
+
entry
|
|
421
|
+
};
|
|
422
|
+
})
|
|
423
|
+
.sort((left, right) => {
|
|
424
|
+
if (left.entry.updatedAt !== right.entry.updatedAt) {
|
|
425
|
+
return left.entry.updatedAt - right.entry.updatedAt;
|
|
426
|
+
}
|
|
427
|
+
return left.sessionKey.localeCompare(right.sessionKey);
|
|
428
|
+
});
|
|
429
|
+
let nextSequence = 1;
|
|
430
|
+
const sessions = orderedEntries.map(({ sessionKey, entry }) => {
|
|
431
|
+
const built = buildPassiveLearningSessionExportFromOpenClawSessionStore({
|
|
432
|
+
sessionKey,
|
|
433
|
+
indexEntry: entry,
|
|
434
|
+
records: input.readSessionRecords(sessionKey, entry),
|
|
435
|
+
sequenceStart: nextSequence,
|
|
436
|
+
...(input.agentId === undefined ? {} : { agentId: input.agentId })
|
|
437
|
+
});
|
|
438
|
+
nextSequence = built.nextSequence;
|
|
439
|
+
return built;
|
|
440
|
+
});
|
|
441
|
+
const interactionEvents = sessions.flatMap((session) => session.interactionEvents);
|
|
442
|
+
const feedbackEvents = sessions.flatMap((session) => session.feedbackEvents);
|
|
443
|
+
return {
|
|
444
|
+
sessions,
|
|
445
|
+
interactionEvents,
|
|
446
|
+
feedbackEvents,
|
|
447
|
+
normalizedEventExport: buildNormalizedEventExport({
|
|
448
|
+
interactionEvents,
|
|
449
|
+
feedbackEvents
|
|
450
|
+
}),
|
|
451
|
+
warnings: sessions.flatMap((session) => session.warnings)
|
|
452
|
+
};
|
|
453
|
+
}
|
|
454
|
+
//# sourceMappingURL=local-session-passive-learning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-session-passive-learning.js","sourceRoot":"","sources":["../../src/local-session-passive-learning.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export declare const DEFAULT_OLLAMA_BASE_URL = "http://127.0.0.1:11434/api";
|
|
2
|
+
export declare const DEFAULT_OLLAMA_TIMEOUT_MS = 30000;
|
|
3
|
+
export interface OllamaChatMessage {
|
|
4
|
+
role: string;
|
|
5
|
+
content: string;
|
|
6
|
+
}
|
|
7
|
+
export interface OllamaClientOptions {
|
|
8
|
+
baseURL?: string;
|
|
9
|
+
timeoutMs?: number;
|
|
10
|
+
fetch?: OllamaFetch;
|
|
11
|
+
}
|
|
12
|
+
export interface OllamaRequestOptions {
|
|
13
|
+
timeoutMs?: number;
|
|
14
|
+
}
|
|
15
|
+
export interface OllamaFetchRequestInit {
|
|
16
|
+
method?: string;
|
|
17
|
+
headers?: Record<string, string>;
|
|
18
|
+
body?: string;
|
|
19
|
+
signal?: AbortSignal;
|
|
20
|
+
}
|
|
21
|
+
export interface OllamaFetchResponse {
|
|
22
|
+
ok: boolean;
|
|
23
|
+
status: number;
|
|
24
|
+
statusText: string;
|
|
25
|
+
text(): Promise<string>;
|
|
26
|
+
}
|
|
27
|
+
export type OllamaFetch = (input: string, init?: OllamaFetchRequestInit) => Promise<OllamaFetchResponse>;
|
|
28
|
+
export declare class OllamaClientError extends Error {
|
|
29
|
+
readonly endpoint: string;
|
|
30
|
+
readonly status: number | null;
|
|
31
|
+
readonly cause: unknown;
|
|
32
|
+
constructor(message: string, options: {
|
|
33
|
+
endpoint: string;
|
|
34
|
+
status?: number | null;
|
|
35
|
+
cause?: unknown;
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
export declare class OllamaClient {
|
|
39
|
+
#private;
|
|
40
|
+
readonly baseURL: string;
|
|
41
|
+
readonly timeoutMs: number;
|
|
42
|
+
constructor(options?: OllamaClientOptions);
|
|
43
|
+
chat(model: string, messages: readonly OllamaChatMessage[], options?: OllamaRequestOptions): Promise<string>;
|
|
44
|
+
embed(model: string, input: string, options?: OllamaRequestOptions): Promise<number[]>;
|
|
45
|
+
}
|
|
46
|
+
export declare function createOllamaClient(options?: OllamaClientOptions): OllamaClient;
|