surface-cli 0.2.0 → 0.3.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/README.md +34 -12
- package/dist/cli.js +158 -14
- package/dist/cli.js.map +1 -1
- package/dist/config.js +2 -2
- package/dist/config.js.map +1 -1
- package/dist/contracts/account.js +8 -0
- package/dist/contracts/account.js.map +1 -1
- package/dist/paths.js +2 -0
- package/dist/paths.js.map +1 -1
- package/dist/providers/gmail/adapter.js +10 -28
- package/dist/providers/gmail/adapter.js.map +1 -1
- package/dist/providers/gmail/oauth.js +3 -0
- package/dist/providers/gmail/oauth.js.map +1 -1
- package/dist/providers/outlook/adapter.js +138 -127
- package/dist/providers/outlook/adapter.js.map +1 -1
- package/dist/refs.js +3 -0
- package/dist/refs.js.map +1 -1
- package/dist/session-daemon.js +218 -0
- package/dist/session-daemon.js.map +1 -0
- package/dist/session.js +283 -0
- package/dist/session.js.map +1 -0
- package/dist/state/database.js +480 -4
- package/dist/state/database.js.map +1 -1
- package/dist/summarizer.js +259 -76
- package/dist/summarizer.js.map +1 -1
- package/package.json +1 -1
package/dist/summarizer.js
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { execFile } from "node:child_process";
|
|
2
|
+
import { createHash } from "node:crypto";
|
|
2
3
|
import { promisify } from "node:util";
|
|
3
4
|
const execFileAsync = promisify(execFile);
|
|
4
5
|
const OPENROUTER_API_URL = "https://openrouter.ai/api/v1/chat/completions";
|
|
6
|
+
const OPENCLAW_BATCH_MAX_THREADS = 3;
|
|
7
|
+
const OPENCLAW_BATCH_MAX_INPUT_BYTES = 64 * 1024;
|
|
8
|
+
const OPENCLAW_SUMMARY_THINKING = "low";
|
|
9
|
+
const SUMMARY_PROMPT_VERSION = "2026-04-21-me-scoped-v1";
|
|
5
10
|
function clipUtf8(input, maxBytes) {
|
|
6
11
|
if (Buffer.byteLength(input, "utf8") <= maxBytes) {
|
|
7
12
|
return input;
|
|
@@ -12,7 +17,17 @@ function clipUtf8(input, maxBytes) {
|
|
|
12
17
|
}
|
|
13
18
|
return clipped;
|
|
14
19
|
}
|
|
15
|
-
function
|
|
20
|
+
function buildSummaryAccountOwner(identity) {
|
|
21
|
+
return {
|
|
22
|
+
primary_email: identity.primary_email,
|
|
23
|
+
display_name: identity.display_name,
|
|
24
|
+
email_aliases: identity.email_aliases,
|
|
25
|
+
name_aliases: identity.name_aliases,
|
|
26
|
+
primary_email_source: identity.primary_email_source,
|
|
27
|
+
display_name_source: identity.display_name_source,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function buildThreadPayload(thread, maxBytes, accountOwner) {
|
|
16
31
|
let remainingBytes = maxBytes;
|
|
17
32
|
const messages = [];
|
|
18
33
|
for (const message of thread.messages) {
|
|
@@ -27,7 +42,6 @@ function buildThreadPayload(thread, maxBytes) {
|
|
|
27
42
|
cc: message.envelope.cc,
|
|
28
43
|
sent_at: message.envelope.sent_at,
|
|
29
44
|
received_at: message.envelope.received_at,
|
|
30
|
-
unread: message.envelope.unread,
|
|
31
45
|
snippet: message.snippet,
|
|
32
46
|
body: bodyText,
|
|
33
47
|
invite: message.invite ?? null,
|
|
@@ -40,23 +54,68 @@ function buildThreadPayload(thread, maxBytes) {
|
|
|
40
54
|
});
|
|
41
55
|
}
|
|
42
56
|
return {
|
|
57
|
+
summary_prompt_version: SUMMARY_PROMPT_VERSION,
|
|
58
|
+
account_owner: accountOwner,
|
|
43
59
|
thread_ref: thread.thread_ref,
|
|
44
60
|
source: thread.source,
|
|
45
|
-
|
|
61
|
+
subject: thread.envelope.subject,
|
|
62
|
+
participants: thread.envelope.participants,
|
|
46
63
|
messages,
|
|
47
64
|
};
|
|
48
65
|
}
|
|
49
|
-
function
|
|
66
|
+
function buildSinglePrompt(payload) {
|
|
50
67
|
return JSON.stringify({
|
|
51
68
|
instructions: [
|
|
52
69
|
"Summarize this email thread for an automation agent.",
|
|
53
70
|
"Return JSON only.",
|
|
54
71
|
"Use exactly this shape: {\"brief\": string, \"needs_action\": boolean, \"importance\": \"low\" | \"medium\" | \"high\"}.",
|
|
55
|
-
"
|
|
72
|
+
"The account_owner object defines ME for this account. Judge needs_action only from ME's perspective.",
|
|
73
|
+
"Set needs_action=true only if the latest state indicates ME must reply, decide, RSVP, send information, pay, approve, complete a task, or otherwise act now.",
|
|
74
|
+
"Set needs_action=false if ME already replied and the next move is with someone else, if the thread is informational, or if the action is merely optional or marketing.",
|
|
75
|
+
"Use account_owner primary_email and email_aliases for envelope matching; use display_name and name_aliases for body-text references to ME. Do not guess that a person is ME if the identity does not match.",
|
|
76
|
+
"For threads with more than one message, include the causal chain: what changed over the thread, who did what, and what the latest state implies.",
|
|
77
|
+
"Keep brief to one sentence for one-message threads and two to four sentences for multi-message threads.",
|
|
78
|
+
"Messages are provided latest-first. Reconstruct the causal chain from older messages to newest, but base action status on the latest state.",
|
|
79
|
+
"Do not infer named programs, teams, organizations, or context that are not explicitly present in the thread.",
|
|
80
|
+
"When details are ambiguous, prefer generic wording over guessed specifics.",
|
|
56
81
|
],
|
|
57
|
-
thread:
|
|
82
|
+
thread: payload,
|
|
58
83
|
}, null, 2);
|
|
59
84
|
}
|
|
85
|
+
function buildBatchPrompt(batch) {
|
|
86
|
+
return JSON.stringify({
|
|
87
|
+
instructions: [
|
|
88
|
+
"Summarize each email thread for an automation agent.",
|
|
89
|
+
"Return JSON only.",
|
|
90
|
+
"Use exactly this shape: {\"summaries\": [{\"thread_ref\": string, \"brief\": string, \"needs_action\": boolean, \"importance\": \"low\" | \"medium\" | \"high\"}]}",
|
|
91
|
+
"Return exactly one summary object per input thread.",
|
|
92
|
+
"Do not omit threads, add extra threads, or merge two threads into one summary.",
|
|
93
|
+
"Each thread includes the same account_owner object defining ME for this account. Judge needs_action only from ME's perspective.",
|
|
94
|
+
"Set needs_action=true only if the latest state indicates ME must reply, decide, RSVP, send information, pay, approve, complete a task, or otherwise act now.",
|
|
95
|
+
"Set needs_action=false if ME already replied and the next move is with someone else, if the thread is informational, or if the action is merely optional or marketing.",
|
|
96
|
+
"Use account_owner primary_email and email_aliases for envelope matching; use display_name and name_aliases for body-text references to ME. Do not guess that a person is ME if the identity does not match.",
|
|
97
|
+
"For threads with more than one message, include the causal chain: what changed over the thread, who did what, and what the latest state implies.",
|
|
98
|
+
"Keep each brief to one sentence for one-message threads and two to four sentences for multi-message threads.",
|
|
99
|
+
"Messages are provided latest-first. Reconstruct the causal chain from older messages to newest, but base action status on the latest state.",
|
|
100
|
+
"Summarize each thread independently. Never carry named programs, teams, organizations, or context from one thread into another.",
|
|
101
|
+
"Do not infer named programs, teams, organizations, or context that are not explicitly present in that thread.",
|
|
102
|
+
"When details are ambiguous, prefer generic wording over guessed specifics.",
|
|
103
|
+
],
|
|
104
|
+
threads: batch.map((entry) => entry.payload),
|
|
105
|
+
}, null, 2);
|
|
106
|
+
}
|
|
107
|
+
function makeFingerprint(payload) {
|
|
108
|
+
return createHash("sha256").update(JSON.stringify(payload)).digest("hex");
|
|
109
|
+
}
|
|
110
|
+
function prepareThread(thread, config, accountOwner) {
|
|
111
|
+
const payload = buildThreadPayload(thread, config.summaryInputMaxBytes, accountOwner);
|
|
112
|
+
return {
|
|
113
|
+
thread,
|
|
114
|
+
payload,
|
|
115
|
+
fingerprint: makeFingerprint(payload),
|
|
116
|
+
inputBytes: Buffer.byteLength(JSON.stringify(payload), "utf8"),
|
|
117
|
+
};
|
|
118
|
+
}
|
|
60
119
|
function stripMarkdownFences(rawText) {
|
|
61
120
|
const fencedMatch = rawText.trim().match(/^```(?:json)?\s*([\s\S]*?)\s*```$/i);
|
|
62
121
|
return fencedMatch?.[1]?.trim() ?? rawText.trim();
|
|
@@ -80,7 +139,56 @@ function tryParseSummaryObject(rawText) {
|
|
|
80
139
|
importance,
|
|
81
140
|
};
|
|
82
141
|
}
|
|
83
|
-
|
|
142
|
+
function tryParseBatchSummaryObject(rawText, expectedThreadRefs) {
|
|
143
|
+
const parsed = JSON.parse(stripMarkdownFences(rawText));
|
|
144
|
+
const items = Array.isArray(parsed.summaries) ? parsed.summaries : [];
|
|
145
|
+
const summaries = new Map();
|
|
146
|
+
for (const item of items) {
|
|
147
|
+
if (!item || typeof item !== "object") {
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
const record = item;
|
|
151
|
+
const threadRef = typeof record.thread_ref === "string" ? record.thread_ref : "";
|
|
152
|
+
if (!threadRef || summaries.has(threadRef)) {
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
const parsedSummary = tryParseSummaryObject(JSON.stringify(record));
|
|
156
|
+
summaries.set(threadRef, parsedSummary);
|
|
157
|
+
}
|
|
158
|
+
if (expectedThreadRefs.some((threadRef) => !summaries.has(threadRef))) {
|
|
159
|
+
throw new Error("Batch summary response omitted one or more threads.");
|
|
160
|
+
}
|
|
161
|
+
return summaries;
|
|
162
|
+
}
|
|
163
|
+
function extractJsonFromMixedOutput(rawOutput) {
|
|
164
|
+
const trimmed = rawOutput.trim();
|
|
165
|
+
const start = trimmed.indexOf("{");
|
|
166
|
+
const end = trimmed.lastIndexOf("}");
|
|
167
|
+
if (start >= 0 && end > start) {
|
|
168
|
+
return trimmed.slice(start, end + 1);
|
|
169
|
+
}
|
|
170
|
+
return trimmed;
|
|
171
|
+
}
|
|
172
|
+
function extractTextFromOpenClawEnvelope(rawOutput) {
|
|
173
|
+
const parsed = JSON.parse(extractJsonFromMixedOutput(rawOutput));
|
|
174
|
+
const payloads = Array.isArray(parsed.payloads)
|
|
175
|
+
? parsed.payloads
|
|
176
|
+
: parsed.result && typeof parsed.result === "object" && Array.isArray(parsed.result.payloads)
|
|
177
|
+
? parsed.result.payloads
|
|
178
|
+
: Array.isArray(parsed.outputs)
|
|
179
|
+
? parsed.outputs
|
|
180
|
+
: [];
|
|
181
|
+
for (const payload of payloads) {
|
|
182
|
+
if (payload && typeof payload === "object" && typeof payload.text === "string") {
|
|
183
|
+
return payload.text;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
if (typeof parsed.summary === "string") {
|
|
187
|
+
return parsed.summary;
|
|
188
|
+
}
|
|
189
|
+
return rawOutput;
|
|
190
|
+
}
|
|
191
|
+
async function summarizeWithOpenRouter(payload, config) {
|
|
84
192
|
const apiKey = process.env.OPENROUTER_API_KEY;
|
|
85
193
|
if (!apiKey) {
|
|
86
194
|
throw new Error("OPENROUTER_API_KEY is required when summarizer_backend = openrouter.");
|
|
@@ -102,7 +210,7 @@ async function summarizeWithOpenRouter(thread, config) {
|
|
|
102
210
|
},
|
|
103
211
|
{
|
|
104
212
|
role: "user",
|
|
105
|
-
content:
|
|
213
|
+
content: buildSinglePrompt(payload),
|
|
106
214
|
},
|
|
107
215
|
],
|
|
108
216
|
}),
|
|
@@ -111,8 +219,8 @@ async function summarizeWithOpenRouter(thread, config) {
|
|
|
111
219
|
if (!response.ok) {
|
|
112
220
|
throw new Error(`OpenRouter request failed with HTTP ${response.status}: ${await response.text()}`);
|
|
113
221
|
}
|
|
114
|
-
const
|
|
115
|
-
const content =
|
|
222
|
+
const responsePayload = await response.json();
|
|
223
|
+
const content = responsePayload.choices?.[0]?.message?.content;
|
|
116
224
|
const rawText = typeof content === "string"
|
|
117
225
|
? content
|
|
118
226
|
: Array.isArray(content)
|
|
@@ -121,57 +229,9 @@ async function summarizeWithOpenRouter(thread, config) {
|
|
|
121
229
|
.map((item) => item.text)
|
|
122
230
|
.join("")
|
|
123
231
|
: "";
|
|
124
|
-
|
|
125
|
-
return {
|
|
126
|
-
backend: "openrouter",
|
|
127
|
-
model: config.summarizerModel,
|
|
128
|
-
brief: parsed.brief,
|
|
129
|
-
needs_action: parsed.needs_action,
|
|
130
|
-
importance: parsed.importance,
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
function extractJsonFromMixedOutput(rawOutput) {
|
|
134
|
-
const trimmed = rawOutput.trim();
|
|
135
|
-
const start = trimmed.indexOf("{");
|
|
136
|
-
const end = trimmed.lastIndexOf("}");
|
|
137
|
-
if (start >= 0 && end > start) {
|
|
138
|
-
return trimmed.slice(start, end + 1);
|
|
139
|
-
}
|
|
140
|
-
return trimmed;
|
|
232
|
+
return tryParseSummaryObject(rawText);
|
|
141
233
|
}
|
|
142
|
-
function
|
|
143
|
-
const parsed = JSON.parse(extractJsonFromMixedOutput(rawOutput));
|
|
144
|
-
const payloads = Array.isArray(parsed.payloads)
|
|
145
|
-
? parsed.payloads
|
|
146
|
-
: parsed.result && typeof parsed.result === "object" && Array.isArray(parsed.result.payloads)
|
|
147
|
-
? parsed.result.payloads
|
|
148
|
-
: [];
|
|
149
|
-
for (const payload of payloads) {
|
|
150
|
-
if (payload && typeof payload === "object" && typeof payload.text === "string") {
|
|
151
|
-
return payload.text;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
if (typeof parsed.summary === "string") {
|
|
155
|
-
return parsed.summary;
|
|
156
|
-
}
|
|
157
|
-
return rawOutput;
|
|
158
|
-
}
|
|
159
|
-
async function resolveOpenClawModel(agentId) {
|
|
160
|
-
try {
|
|
161
|
-
const { stdout } = await execFileAsync("openclaw", ["agents", "list", "--json"], {
|
|
162
|
-
timeout: 10_000,
|
|
163
|
-
maxBuffer: 1024 * 1024,
|
|
164
|
-
});
|
|
165
|
-
const payload = JSON.parse(stdout);
|
|
166
|
-
const matched = payload.find((agent) => agent.id === agentId)
|
|
167
|
-
?? payload.find((agent) => agent.isDefault);
|
|
168
|
-
return matched?.model ?? "openclaw/local-agent";
|
|
169
|
-
}
|
|
170
|
-
catch {
|
|
171
|
-
return "openclaw/local-agent";
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
async function summarizeWithOpenClaw(thread, config) {
|
|
234
|
+
async function runOpenClawPrompt(prompt, config) {
|
|
175
235
|
const agentId = process.env.SURFACE_OPENCLAW_AGENT ?? "main";
|
|
176
236
|
const { stdout } = await execFileAsync("openclaw", [
|
|
177
237
|
"--no-color",
|
|
@@ -182,36 +242,159 @@ async function summarizeWithOpenClaw(thread, config) {
|
|
|
182
242
|
agentId,
|
|
183
243
|
"--json",
|
|
184
244
|
"--thinking",
|
|
185
|
-
|
|
245
|
+
OPENCLAW_SUMMARY_THINKING,
|
|
186
246
|
"--timeout",
|
|
187
247
|
String(Math.max(10, Math.ceil(config.summarizerTimeoutMs / 1000))),
|
|
188
248
|
"--message",
|
|
189
|
-
|
|
249
|
+
prompt,
|
|
190
250
|
], {
|
|
191
251
|
timeout: config.summarizerTimeoutMs,
|
|
192
|
-
maxBuffer: 1024 * 1024,
|
|
252
|
+
maxBuffer: 2 * 1024 * 1024,
|
|
193
253
|
});
|
|
194
|
-
|
|
254
|
+
return extractTextFromOpenClawEnvelope(stdout);
|
|
255
|
+
}
|
|
256
|
+
async function summarizeOpenClawSingle(thread, config) {
|
|
257
|
+
return tryParseSummaryObject(await runOpenClawPrompt(buildSinglePrompt(thread.payload), config));
|
|
258
|
+
}
|
|
259
|
+
function buildOpenClawBatches(threads) {
|
|
260
|
+
const batches = [];
|
|
261
|
+
let currentBatch = [];
|
|
262
|
+
let currentBytes = 0;
|
|
263
|
+
for (const thread of threads) {
|
|
264
|
+
const nextBytes = currentBytes + thread.inputBytes;
|
|
265
|
+
if (currentBatch.length > 0
|
|
266
|
+
&& (currentBatch.length >= OPENCLAW_BATCH_MAX_THREADS || nextBytes > OPENCLAW_BATCH_MAX_INPUT_BYTES)) {
|
|
267
|
+
batches.push(currentBatch);
|
|
268
|
+
currentBatch = [];
|
|
269
|
+
currentBytes = 0;
|
|
270
|
+
}
|
|
271
|
+
currentBatch.push(thread);
|
|
272
|
+
currentBytes += thread.inputBytes;
|
|
273
|
+
}
|
|
274
|
+
if (currentBatch.length > 0) {
|
|
275
|
+
batches.push(currentBatch);
|
|
276
|
+
}
|
|
277
|
+
return batches;
|
|
278
|
+
}
|
|
279
|
+
async function summarizeOpenClawBatch(batch, config) {
|
|
280
|
+
if (batch.length === 1) {
|
|
281
|
+
return new Map([[batch[0].thread.thread_ref, await summarizeOpenClawSingle(batch[0], config)]]);
|
|
282
|
+
}
|
|
283
|
+
try {
|
|
284
|
+
const parsed = tryParseBatchSummaryObject(await runOpenClawPrompt(buildBatchPrompt(batch), config), batch.map((thread) => thread.thread.thread_ref));
|
|
285
|
+
return parsed;
|
|
286
|
+
}
|
|
287
|
+
catch (error) {
|
|
288
|
+
if (batch.length === 1) {
|
|
289
|
+
throw error;
|
|
290
|
+
}
|
|
291
|
+
const midpoint = Math.ceil(batch.length / 2);
|
|
292
|
+
const left = await summarizeOpenClawBatch(batch.slice(0, midpoint), config);
|
|
293
|
+
const right = await summarizeOpenClawBatch(batch.slice(midpoint), config);
|
|
294
|
+
return new Map([...left, ...right]);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
async function summarizeWithOpenClaw(threads, config) {
|
|
298
|
+
const summaries = new Map();
|
|
299
|
+
for (const batch of buildOpenClawBatches(threads)) {
|
|
300
|
+
try {
|
|
301
|
+
const parsed = await summarizeOpenClawBatch(batch, config);
|
|
302
|
+
for (const thread of batch) {
|
|
303
|
+
summaries.set(thread.thread.thread_ref, parsed.get(thread.thread.thread_ref) ?? null);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
catch {
|
|
307
|
+
for (const thread of batch) {
|
|
308
|
+
summaries.set(thread.thread.thread_ref, null);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
return summaries;
|
|
313
|
+
}
|
|
314
|
+
async function resolveSummaryTarget(config) {
|
|
315
|
+
if (config.summarizerBackend === "openrouter") {
|
|
316
|
+
return {
|
|
317
|
+
backend: "openrouter",
|
|
318
|
+
model: config.summarizerModel,
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
const agentId = process.env.SURFACE_OPENCLAW_AGENT ?? "main";
|
|
195
322
|
return {
|
|
196
323
|
backend: "openclaw",
|
|
197
|
-
model:
|
|
198
|
-
brief: parsed.brief,
|
|
199
|
-
needs_action: parsed.needs_action,
|
|
200
|
-
importance: parsed.importance,
|
|
324
|
+
model: `openclaw/agent:${agentId}`,
|
|
201
325
|
};
|
|
202
326
|
}
|
|
203
|
-
export async function
|
|
327
|
+
export async function summarizeAndPersistThreads(threads, config, db, accountIdentity) {
|
|
204
328
|
if (config.summarizerBackend === "none") {
|
|
205
|
-
return
|
|
329
|
+
return threads;
|
|
206
330
|
}
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
331
|
+
const target = await resolveSummaryTarget(config);
|
|
332
|
+
const accountOwner = buildSummaryAccountOwner(accountIdentity);
|
|
333
|
+
const preparedThreads = threads.map((thread) => prepareThread(thread, config, accountOwner));
|
|
334
|
+
const summaries = new Map();
|
|
335
|
+
const pending = [];
|
|
336
|
+
for (const prepared of preparedThreads) {
|
|
337
|
+
const stored = db.findStoredSummary(prepared.thread.thread_ref);
|
|
338
|
+
if (stored
|
|
339
|
+
&& stored.backend === target.backend
|
|
340
|
+
&& stored.model === target.model
|
|
341
|
+
&& stored.fingerprint === prepared.fingerprint) {
|
|
342
|
+
summaries.set(prepared.thread.thread_ref, {
|
|
343
|
+
backend: stored.backend,
|
|
344
|
+
model: stored.model,
|
|
345
|
+
brief: stored.brief,
|
|
346
|
+
needs_action: Boolean(stored.needs_action),
|
|
347
|
+
importance: stored.importance,
|
|
348
|
+
});
|
|
349
|
+
continue;
|
|
210
350
|
}
|
|
211
|
-
|
|
351
|
+
pending.push(prepared);
|
|
212
352
|
}
|
|
213
|
-
|
|
214
|
-
|
|
353
|
+
if (pending.length > 0) {
|
|
354
|
+
if (target.backend === "openrouter") {
|
|
355
|
+
for (const prepared of pending) {
|
|
356
|
+
try {
|
|
357
|
+
const parsed = await summarizeWithOpenRouter(prepared.payload, config);
|
|
358
|
+
const summary = {
|
|
359
|
+
backend: target.backend,
|
|
360
|
+
model: target.model,
|
|
361
|
+
brief: parsed.brief,
|
|
362
|
+
needs_action: parsed.needs_action,
|
|
363
|
+
importance: parsed.importance,
|
|
364
|
+
};
|
|
365
|
+
db.upsertSummary(prepared.thread.thread_ref, summary, prepared.fingerprint);
|
|
366
|
+
summaries.set(prepared.thread.thread_ref, summary);
|
|
367
|
+
}
|
|
368
|
+
catch {
|
|
369
|
+
db.clearSummary(prepared.thread.thread_ref);
|
|
370
|
+
summaries.set(prepared.thread.thread_ref, null);
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
else {
|
|
375
|
+
const parsed = await summarizeWithOpenClaw(pending, config);
|
|
376
|
+
for (const prepared of pending) {
|
|
377
|
+
const summaryShape = parsed.get(prepared.thread.thread_ref) ?? null;
|
|
378
|
+
if (summaryShape) {
|
|
379
|
+
const summary = {
|
|
380
|
+
backend: target.backend,
|
|
381
|
+
model: target.model,
|
|
382
|
+
brief: summaryShape.brief,
|
|
383
|
+
needs_action: summaryShape.needs_action,
|
|
384
|
+
importance: summaryShape.importance,
|
|
385
|
+
};
|
|
386
|
+
db.upsertSummary(prepared.thread.thread_ref, summary, prepared.fingerprint);
|
|
387
|
+
summaries.set(prepared.thread.thread_ref, summary);
|
|
388
|
+
continue;
|
|
389
|
+
}
|
|
390
|
+
db.clearSummary(prepared.thread.thread_ref);
|
|
391
|
+
summaries.set(prepared.thread.thread_ref, null);
|
|
392
|
+
}
|
|
393
|
+
}
|
|
215
394
|
}
|
|
395
|
+
return threads.map((thread) => ({
|
|
396
|
+
...thread,
|
|
397
|
+
summary: summaries.get(thread.thread_ref) ?? null,
|
|
398
|
+
}));
|
|
216
399
|
}
|
|
217
400
|
//# sourceMappingURL=summarizer.js.map
|
package/dist/summarizer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summarizer.js","sourceRoot":"","sources":["../src/summarizer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"summarizer.js","sourceRoot":"","sources":["../src/summarizer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED