visionclaw 0.1.214-beta.1 → 0.1.214-beta.10
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/dist/agent/context.d.ts +6 -2
- package/dist/agent/context.d.ts.map +1 -1
- package/dist/agent/context.js +41 -13
- package/dist/agent/context.js.map +1 -1
- package/dist/agent/fast-responder.d.ts +16 -0
- package/dist/agent/fast-responder.d.ts.map +1 -1
- package/dist/agent/fast-responder.js +119 -64
- package/dist/agent/fast-responder.js.map +1 -1
- package/dist/agent/heartbeat-manager.js +2 -2
- package/dist/agent/heartbeat-manager.js.map +1 -1
- package/dist/agent/interrupt-handler.d.ts +1 -1
- package/dist/agent/interrupt-handler.d.ts.map +1 -1
- package/dist/agent/interrupt-handler.js +9 -3
- package/dist/agent/interrupt-handler.js.map +1 -1
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +10 -2
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/memory-injector.js +6 -6
- package/dist/agent/memory-injector.js.map +1 -1
- package/dist/agent/memory-protocol.d.ts +14 -0
- package/dist/agent/memory-protocol.d.ts.map +1 -0
- package/dist/agent/memory-protocol.js +58 -0
- package/dist/agent/memory-protocol.js.map +1 -0
- package/dist/agent/owner-initiated-eligibility.d.ts +21 -0
- package/dist/agent/owner-initiated-eligibility.d.ts.map +1 -0
- package/dist/agent/owner-initiated-eligibility.js +34 -0
- package/dist/agent/owner-initiated-eligibility.js.map +1 -0
- package/dist/agent/runtime-credentials.d.ts +7 -0
- package/dist/agent/runtime-credentials.d.ts.map +1 -1
- package/dist/agent/runtime-credentials.js +43 -17
- package/dist/agent/runtime-credentials.js.map +1 -1
- package/dist/agent/session-manager.d.ts +1 -0
- package/dist/agent/session-manager.d.ts.map +1 -1
- package/dist/agent/session-manager.js +33 -35
- package/dist/agent/session-manager.js.map +1 -1
- package/dist/agent/state.d.ts +5 -6
- package/dist/agent/state.d.ts.map +1 -1
- package/dist/agent/state.js.map +1 -1
- package/dist/agent/system-prompt.d.ts.map +1 -1
- package/dist/agent/system-prompt.js +3 -41
- package/dist/agent/system-prompt.js.map +1 -1
- package/dist/agent/wake-cycle-runner.d.ts.map +1 -1
- package/dist/agent/wake-cycle-runner.js +5 -0
- package/dist/agent/wake-cycle-runner.js.map +1 -1
- package/dist/builtin-skills/fin-app/SKILL.md +1 -1
- package/dist/channels/telegram-status.d.ts +3 -0
- package/dist/channels/telegram-status.d.ts.map +1 -1
- package/dist/channels/telegram-status.js +59 -8
- package/dist/channels/telegram-status.js.map +1 -1
- package/dist/onboarding/bootstrap-client.d.ts +2 -2
- package/dist/onboarding/bootstrap-client.d.ts.map +1 -1
- package/dist/onboarding/bootstrap-client.js +8 -0
- package/dist/onboarding/bootstrap-client.js.map +1 -1
- package/dist/onboarding/onboarding-service-client.d.ts +1 -1
- package/dist/onboarding/onboarding-service-client.d.ts.map +1 -1
- package/dist/onboarding/setup-steps.d.ts.map +1 -1
- package/dist/onboarding/setup-steps.js +3 -1
- package/dist/onboarding/setup-steps.js.map +1 -1
- package/dist/onboarding/telegram-onboarding.d.ts.map +1 -1
- package/dist/onboarding/telegram-onboarding.js +6 -0
- package/dist/onboarding/telegram-onboarding.js.map +1 -1
- package/dist/threads/supervisor.d.ts.map +1 -1
- package/dist/threads/supervisor.js +11 -3
- package/dist/threads/supervisor.js.map +1 -1
- package/dist/tools/memory.js +1 -1
- package/dist/tools/memory.js.map +1 -1
- package/dist-agent/bundle.cjs +570 -371
- package/package.json +3 -2
package/dist/agent/context.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type VisionClawConfig } from "../config/types.js";
|
|
2
2
|
import type { CommandMessage } from "../channels/interface.js";
|
|
3
|
-
import type { FastResponse } from "./fast-responder.js";
|
|
3
|
+
import type { FastResponse, FastResponseMode } from "./fast-responder.js";
|
|
4
4
|
import type { VersionCheckResult } from "../utils/version-check.js";
|
|
5
5
|
import type { PendingUpgradeInfo, PendingRestartInfo } from "../config/index.js";
|
|
6
6
|
import type { SessionMode } from "./mailbox.js";
|
|
@@ -70,13 +70,17 @@ export declare function buildInterruptContext(options: {
|
|
|
70
70
|
messages: CommandMessage[];
|
|
71
71
|
}): Promise<ContentBlock[]>;
|
|
72
72
|
/**
|
|
73
|
-
* Build an interrupt context that includes the fast responder's briefing.
|
|
73
|
+
* Build an interrupt/watchdog context that includes the fast responder's briefing.
|
|
74
74
|
* The primary agent sees what the user said AND what was already replied,
|
|
75
75
|
* so it can decide whether to follow up or skip.
|
|
76
|
+
*
|
|
77
|
+
* `mode` must match the fast-responder path that sent the replies: interrupt
|
|
78
|
+
* (new message while busy) vs watchdog (this wake's message went unanswered).
|
|
76
79
|
*/
|
|
77
80
|
export declare function buildInterruptWithBriefing(options: {
|
|
78
81
|
messages: CommandMessage[];
|
|
79
82
|
fastResponse: FastResponse;
|
|
83
|
+
mode: FastResponseMode;
|
|
80
84
|
}): ContentBlock[];
|
|
81
85
|
/**
|
|
82
86
|
* Build a fresh context after compaction. Returns multimodal blocks.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/agent/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/agent/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAQhD;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAQxC;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IACE,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EACF;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,UAAU,EAAE,WAAW,GAAG,YAAY,GAAG,WAAW,GAAG,YAAY,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GACrG;QAAE,IAAI,EAAE,KAAK,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CAClC,CAAC;AAEN;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;CAChB;AAsED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE;IAC9C,MAAM,EAAE,gBAAgB,CAAC;IACzB,OAAO,EAAE,WAAW,GAAG,SAAS,CAAC;IACjC,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,aAAa,CAAC,EAAE,WAAW,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACzC,aAAa,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;CAC3C,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAuK1B;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE;IACnD,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAoB1B;AAyBD;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE;IAClD,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,IAAI,EAAE,gBAAgB,CAAC;CACxB,GAAG,YAAY,EAAE,CA6BjB;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE;IAClD,MAAM,EAAE,gBAAgB,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;CAC7B,GAAG,YAAY,EAAE,CAoBjB"}
|
package/dist/agent/context.js
CHANGED
|
@@ -4,6 +4,7 @@ import { downloadAndResizeForVision, resizeBase64ForVision } from "../tools/scre
|
|
|
4
4
|
import { buildMemoryInjection } from "./memory-injector.js";
|
|
5
5
|
import { getActiveThreadsSnapshot, renderActiveThreadsBlock } from "../threads/active-threads-store.js";
|
|
6
6
|
import { logger } from "../logger.js";
|
|
7
|
+
import { isOwnerInitiatedMessage } from "./owner-initiated-eligibility.js";
|
|
7
8
|
/**
|
|
8
9
|
* Format the current wall-clock time with full date, long time, and timezone.
|
|
9
10
|
* Used at the top of each wake/interrupt/post-compaction/calendar/auto-
|
|
@@ -185,6 +186,7 @@ export async function buildWakeContext(options) {
|
|
|
185
186
|
blocks.push({ type: "text", text: activeThreadsBlock });
|
|
186
187
|
}
|
|
187
188
|
// --- Messages: each message's text + its attachments together ---
|
|
189
|
+
const hasOwnerInitiatedMessage = messages.some(isOwnerInitiatedMessage);
|
|
188
190
|
if (messages.length > 0) {
|
|
189
191
|
for (const msg of messages) {
|
|
190
192
|
await emitMessageBlocks(msg, blocks);
|
|
@@ -205,6 +207,15 @@ export async function buildWakeContext(options) {
|
|
|
205
207
|
},
|
|
206
208
|
});
|
|
207
209
|
}
|
|
210
|
+
// --- Passive ingress guidance ---
|
|
211
|
+
if (messages.length > 0 && !hasOwnerInitiatedMessage) {
|
|
212
|
+
blocks.push({
|
|
213
|
+
type: "text",
|
|
214
|
+
text: "**IMPORTANT**: This wake was triggered by passive ingress (email/external-wake) — not an active owner chat. " +
|
|
215
|
+
"Do NOT send \"收到任务\" or progress-update style `notify_user` calls. " +
|
|
216
|
+
"Only notify the owner when task completion or a critical decision requires their input.",
|
|
217
|
+
});
|
|
218
|
+
}
|
|
208
219
|
blocks.push({
|
|
209
220
|
type: "text",
|
|
210
221
|
text: "Review the above context and decide what to do. If there is nothing to do, call the `finish` tool.",
|
|
@@ -234,39 +245,56 @@ export async function buildInterruptContext(options) {
|
|
|
234
245
|
});
|
|
235
246
|
return blocks;
|
|
236
247
|
}
|
|
248
|
+
function briefingTitle(mode, now) {
|
|
249
|
+
return mode === "watchdog"
|
|
250
|
+
? `[Watchdog — auto-acknowledged] at ${now}`
|
|
251
|
+
: `[Interrupt — auto-acknowledged] at ${now}`;
|
|
252
|
+
}
|
|
253
|
+
function briefingFollowUpLine(mode, needsPrimaryAction) {
|
|
254
|
+
if (!needsPrimaryAction) {
|
|
255
|
+
return "No further action needed — the quick-response handler fully handled this.";
|
|
256
|
+
}
|
|
257
|
+
if (mode === "watchdog") {
|
|
258
|
+
return ("Do not send another acknowledgment — those replies already went out. " +
|
|
259
|
+
"Keep working on this wake's request; the user already knows you received it.");
|
|
260
|
+
}
|
|
261
|
+
return ("Do not send another acknowledgment — those replies already went out. " +
|
|
262
|
+
"After you finish your current task, do the work in the handler assessment. " +
|
|
263
|
+
"Do not wait for another message.");
|
|
264
|
+
}
|
|
237
265
|
/**
|
|
238
|
-
* Build an interrupt context that includes the fast responder's briefing.
|
|
266
|
+
* Build an interrupt/watchdog context that includes the fast responder's briefing.
|
|
239
267
|
* The primary agent sees what the user said AND what was already replied,
|
|
240
268
|
* so it can decide whether to follow up or skip.
|
|
269
|
+
*
|
|
270
|
+
* `mode` must match the fast-responder path that sent the replies: interrupt
|
|
271
|
+
* (new message while busy) vs watchdog (this wake's message went unanswered).
|
|
241
272
|
*/
|
|
242
273
|
export function buildInterruptWithBriefing(options) {
|
|
243
|
-
const { messages, fastResponse } = options;
|
|
274
|
+
const { messages, fastResponse, mode } = options;
|
|
244
275
|
const now = formatNowWithTz();
|
|
245
276
|
const parts = [];
|
|
246
|
-
parts.push(
|
|
277
|
+
parts.push(briefingTitle(mode, now));
|
|
247
278
|
parts.push("");
|
|
248
279
|
for (const msg of messages) {
|
|
249
|
-
parts.push(
|
|
280
|
+
parts.push(formatMessageHeading(msg));
|
|
281
|
+
if (msg.text)
|
|
282
|
+
parts.push(msg.text);
|
|
250
283
|
if (msg.attachments.length > 0) {
|
|
251
284
|
for (const att of msg.attachments) {
|
|
252
285
|
const location = att.url ?? att.localPath ?? "(embedded)";
|
|
253
|
-
parts.push(`
|
|
286
|
+
parts.push(`Attachment [${att.type}]: ${location}${att.filename ? ` (${att.filename})` : ""}`);
|
|
254
287
|
}
|
|
255
288
|
}
|
|
289
|
+
parts.push("");
|
|
256
290
|
}
|
|
257
|
-
parts.push("");
|
|
258
291
|
parts.push("Your quick-response handler already replied:");
|
|
259
292
|
for (const r of fastResponse.replies) {
|
|
260
|
-
parts.push(` → [${r.channel}] ${r.sender}: "${r.reply}"`);
|
|
293
|
+
parts.push(` → [${channelDisplayName(r.channel)}] ${r.sender}: "${r.reply}"`);
|
|
261
294
|
}
|
|
262
295
|
parts.push(`Handler assessment: ${fastResponse.briefForPrimary}`);
|
|
263
296
|
parts.push("");
|
|
264
|
-
|
|
265
|
-
parts.push("DO NOT duplicate the replies. Only follow up on this when you finish your current task or you have NEW information.");
|
|
266
|
-
}
|
|
267
|
-
else {
|
|
268
|
-
parts.push("No further action needed — the quick-response handler fully handled this.");
|
|
269
|
-
}
|
|
297
|
+
parts.push(briefingFollowUpLine(mode, fastResponse.needsPrimaryAction));
|
|
270
298
|
return [{ type: "text", text: parts.join("\n") }];
|
|
271
299
|
}
|
|
272
300
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/agent/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAyB,MAAM,oBAAoB,CAAC;AAM/E,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AACxG,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/agent/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,15 @@ declare const FastResponseSchema: z.ZodObject<{
|
|
|
12
12
|
}, z.core.$strip>;
|
|
13
13
|
export type FastResponse = z.infer<typeof FastResponseSchema>;
|
|
14
14
|
export type FastResponseMode = "interrupt" | "watchdog";
|
|
15
|
+
/** Exported for golden renders and unit tests. */
|
|
16
|
+
export declare function buildInterruptPreamble(): string[];
|
|
17
|
+
/** Exported for golden renders and unit tests. */
|
|
18
|
+
export declare function buildFastResponderRecipientList(recipients: {
|
|
19
|
+
channel: string;
|
|
20
|
+
sender: string;
|
|
21
|
+
}[]): string;
|
|
22
|
+
/** Shared by the runtime and golden renders so branch precedence stays visible. */
|
|
23
|
+
export declare function resolveFastResponderPreamble(mode: FastResponseMode, compacting: boolean, learning: boolean): string[];
|
|
15
24
|
/**
|
|
16
25
|
* Make a single lightweight API call to acknowledge one or more user messages
|
|
17
26
|
* that arrived while the primary agent is busy. Handles the batch case where
|
|
@@ -33,5 +42,12 @@ export declare function fastRespond(options: {
|
|
|
33
42
|
compacting?: boolean;
|
|
34
43
|
learning?: boolean;
|
|
35
44
|
}): Promise<FastResponse | null>;
|
|
45
|
+
export declare function buildFastResponderAppendPrompt(preamble: string[], recipientList: string, options?: {
|
|
46
|
+
includeFinAppGuidance?: boolean;
|
|
47
|
+
includeWeixinGuidance?: boolean;
|
|
48
|
+
}): string;
|
|
49
|
+
export declare function buildFastResponderSystemPrompt(systemPrompt: string, preamble: string[], recipientList: string, appendOptions?: Parameters<typeof buildFastResponderAppendPrompt>[2]): string;
|
|
50
|
+
export declare function buildFastResponderMessageSummary(messages: CommandMessage[]): string;
|
|
51
|
+
export declare function buildFastResponderUserPrompt(activitySummary: string, eligibleMessageCount: number, messageSummary: string): string;
|
|
36
52
|
export {};
|
|
37
53
|
//# sourceMappingURL=fast-responder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fast-responder.d.ts","sourceRoot":"","sources":["../../src/agent/fast-responder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG/E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAiB3D,QAAA,MAAM,kBAAkB;;;;;;;;iBAkBtB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"fast-responder.d.ts","sourceRoot":"","sources":["../../src/agent/fast-responder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG/E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAiB3D,QAAA,MAAM,kBAAkB;;;;;;;;iBAkBtB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,UAAU,CAAC;AAqCxD,kDAAkD;AAClD,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CAWjD;AAMD,kDAAkD;AAClD,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,GAChD,MAAM,CAmBR;AAED,mFAAmF;AACnF,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,gBAAgB,EACtB,UAAU,EAAE,OAAO,EACnB,QAAQ,EAAE,OAAO,GAChB,MAAM,EAAE,CAKV;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,gBAAgB,CAAC;IACzB,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAmD/B;AAED,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,MAAM,EAAE,EAClB,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE;IACP,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CAC5B,GACL,MAAM,CAiCR;AAED,wBAAgB,8BAA8B,CAC5C,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAAE,EAClB,aAAa,EAAE,MAAM,EACrB,aAAa,CAAC,EAAE,UAAU,CAAC,OAAO,8BAA8B,CAAC,CAAC,CAAC,CAAC,GACnE,MAAM,CAGR;AAED,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,MAAM,CAanF;AAED,wBAAgB,4BAA4B,CAC1C,eAAe,EAAE,MAAM,EACvB,oBAAoB,EAAE,MAAM,EAC5B,cAAc,EAAE,MAAM,GACrB,MAAM,CAQR"}
|
|
@@ -28,6 +28,81 @@ const FastResponseSchema = z.object({
|
|
|
28
28
|
.string()
|
|
29
29
|
.describe("A concise summary for the primary agent describing what these messages are about and what you told each sender."),
|
|
30
30
|
});
|
|
31
|
+
function buildLearningPreamble() {
|
|
32
|
+
return [
|
|
33
|
+
"You are currently in Skill Learning Mode — merging an upstream update into one of your built-in skills. This takes a moment.",
|
|
34
|
+
"1. Let the user know you are in the middle of learning/updating your skills and will be available shortly.",
|
|
35
|
+
"2. Ask them to wait a moment — you'll get back to them once the skill merge is done.",
|
|
36
|
+
"3. Keep the reply concise and friendly (1-2 sentences). Match the user's language.",
|
|
37
|
+
"4. Do NOT ask the user any questions — you are only an acknowledgment layer.",
|
|
38
|
+
"5. Do NOT commit to performing any new action.",
|
|
39
|
+
];
|
|
40
|
+
}
|
|
41
|
+
function buildCompactingPreamble() {
|
|
42
|
+
return [
|
|
43
|
+
"You are currently compressing your context (memory cleanup). This takes a moment.",
|
|
44
|
+
"1. Let the user know you are in the middle of context compression and will be available shortly.",
|
|
45
|
+
"2. Ask them to wait a moment — you'll get back to them once the compression is done.",
|
|
46
|
+
"3. Keep the reply concise and friendly (1-2 sentences). Match the user's language.",
|
|
47
|
+
"4. Do NOT ask the user any questions — you are only an acknowledgment layer.",
|
|
48
|
+
"5. Do NOT commit to performing any new action.",
|
|
49
|
+
];
|
|
50
|
+
}
|
|
51
|
+
function buildWatchdogPreamble() {
|
|
52
|
+
return [
|
|
53
|
+
"You are working on a task but haven't responded to the user yet. Send a quick acknowledgment so they know their message was received and you are working on it.",
|
|
54
|
+
"1. Acknowledge the user's message(s) so they know they were received.",
|
|
55
|
+
"2. If the message is a simple greeting or conversational, respond naturally.",
|
|
56
|
+
"3. These messages triggered the current wake. Confirm receipt and tell the user you are working on their request now.",
|
|
57
|
+
"4. Keep each reply concise and friendly (1-3 sentences). Match the user's language.",
|
|
58
|
+
"5. Do NOT ask the user any questions — you are only an acknowledgment layer.",
|
|
59
|
+
"6. You may answer only trivial greetings or pure status questions grounded in Current Agent Activity. Never answer substantive requests, calendar queries, or factual lookups — set needsPrimaryAction=true instead.",
|
|
60
|
+
"7. Do NOT commit to performing any new action (e.g., searching, browsing, sending emails). Only relay information already available in the conversation context.",
|
|
61
|
+
];
|
|
62
|
+
}
|
|
63
|
+
/** Exported for golden renders and unit tests. */
|
|
64
|
+
export function buildInterruptPreamble() {
|
|
65
|
+
return [
|
|
66
|
+
"Because you are currently working on a task, this is a side process that you should handle the incoming messages as quickly as possible.",
|
|
67
|
+
"1. Acknowledge the user's message(s) so they know they were received.",
|
|
68
|
+
"2. If the user asks about status or what the agent is doing, summarize only what appears in the Current Agent Activity section below.",
|
|
69
|
+
"3. If the user sends a new task or request (including lookups, calendar, email, or searches), confirm it has been queued for the main agent — do not perform or promise that work here.",
|
|
70
|
+
"4. Keep each reply concise and friendly (1-3 sentences). Match the user's language.",
|
|
71
|
+
"5. Do NOT ask the user any questions — you are only an acknowledgment layer.",
|
|
72
|
+
"6. You may answer only trivial greetings or pure status questions grounded in Current Agent Activity. Never answer new work, calendar queries, or factual lookups — set needsPrimaryAction=true instead.",
|
|
73
|
+
"7. Do NOT commit to performing any new action (e.g., searching, browsing, sending emails). Only relay information already available in the conversation context.",
|
|
74
|
+
];
|
|
75
|
+
}
|
|
76
|
+
function normalizeFastResponderChannel(channel) {
|
|
77
|
+
return channel === "fin-app" ? "finapp" : channel;
|
|
78
|
+
}
|
|
79
|
+
/** Exported for golden renders and unit tests. */
|
|
80
|
+
export function buildFastResponderRecipientList(recipients) {
|
|
81
|
+
const byKey = new Map();
|
|
82
|
+
for (const recipient of recipients) {
|
|
83
|
+
const channel = normalizeFastResponderChannel(recipient.channel);
|
|
84
|
+
const key = `${channel}::${recipient.sender}`;
|
|
85
|
+
if (!byKey.has(key)) {
|
|
86
|
+
byKey.set(key, { channel, sender: recipient.sender });
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
const entries = [...byKey.values()];
|
|
90
|
+
// Every recipient needs a reply on their original channel, even in mixed batches.
|
|
91
|
+
entries.sort((a, b) => `${a.channel}::${a.sender}`.localeCompare(`${b.channel}::${b.sender}`));
|
|
92
|
+
return entries
|
|
93
|
+
.map((entry) => ` - channel="${entry.channel}", sender="${entry.sender}"`)
|
|
94
|
+
.join("\n");
|
|
95
|
+
}
|
|
96
|
+
/** Shared by the runtime and golden renders so branch precedence stays visible. */
|
|
97
|
+
export function resolveFastResponderPreamble(mode, compacting, learning) {
|
|
98
|
+
if (learning)
|
|
99
|
+
return buildLearningPreamble();
|
|
100
|
+
if (compacting)
|
|
101
|
+
return buildCompactingPreamble();
|
|
102
|
+
if (mode === "watchdog")
|
|
103
|
+
return buildWatchdogPreamble();
|
|
104
|
+
return buildInterruptPreamble();
|
|
105
|
+
}
|
|
31
106
|
/**
|
|
32
107
|
* Make a single lightweight API call to acknowledge one or more user messages
|
|
33
108
|
* that arrived while the primary agent is busy. Handles the batch case where
|
|
@@ -54,62 +129,17 @@ export async function fastRespond(options) {
|
|
|
54
129
|
recipientKeys.set(key, { channel: m.channel, sender: m.sender });
|
|
55
130
|
}
|
|
56
131
|
}
|
|
57
|
-
const recipientList = [...recipientKeys.values()]
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
const parts = [
|
|
63
|
-
`- ${formatMessageSummary(m)} at ${m.timestamp}`,
|
|
64
|
-
];
|
|
65
|
-
if (m.attachments.length > 0) {
|
|
66
|
-
parts.push(` Attachments: ${m.attachments.map((a) => `[${a.type}] ${a.filename ?? a.url ?? "(embedded)"}`).join(", ")}`);
|
|
67
|
-
}
|
|
68
|
-
return parts.join("\n");
|
|
69
|
-
})
|
|
70
|
-
.join("\n");
|
|
71
|
-
const preamble = learning
|
|
72
|
-
? [
|
|
73
|
-
`You are currently in Skill Learning Mode — merging an upstream update into one of your built-in skills. This takes a moment.`,
|
|
74
|
-
"1. Let the user know you are in the middle of learning/updating your skills and will be available shortly.",
|
|
75
|
-
"2. Ask them to wait a moment — you'll get back to them once the skill merge is done.",
|
|
76
|
-
"3. Keep the reply concise and friendly (1-2 sentences). Match the user's language.",
|
|
77
|
-
"4. Do NOT ask the user any questions — you are only an acknowledgment layer.",
|
|
78
|
-
"5. Do NOT commit to performing any new action.",
|
|
79
|
-
]
|
|
80
|
-
: compacting
|
|
81
|
-
? [
|
|
82
|
-
`You are currently compressing your context (memory cleanup). This takes a moment.`,
|
|
83
|
-
"1. Let the user know you are in the middle of context compression and will be available shortly.",
|
|
84
|
-
"2. Ask them to wait a moment — you'll get back to them once the compression is done.",
|
|
85
|
-
"3. Keep the reply concise and friendly (1-2 sentences). Match the user's language.",
|
|
86
|
-
"4. Do NOT ask the user any questions — you are only an acknowledgment layer.",
|
|
87
|
-
"5. Do NOT commit to performing any new action.",
|
|
88
|
-
]
|
|
89
|
-
: mode === "watchdog"
|
|
90
|
-
? [
|
|
91
|
-
`You are working on a task but haven't responded to the user yet. Send a quick acknowledgment so they know their message was received and you are working on it.`,
|
|
92
|
-
"1. Acknowledge the user's message(s) so they know they were received.",
|
|
93
|
-
"2. If the message is a simple greeting or conversational, respond naturally.",
|
|
94
|
-
"3. If the user sends a task or request, let them know you're starting on it.",
|
|
95
|
-
"4. Keep each reply concise and friendly (1-3 sentences).",
|
|
96
|
-
"5. Do NOT ask the user any questions — you are only an acknowledgment layer.",
|
|
97
|
-
"6. If the user's follow-up can be answered confidently from the recent conversation context alone, answer it briefly. Otherwise, just confirm receipt and say you're working on it.",
|
|
98
|
-
"7. Do NOT commit to performing any new action (e.g., searching, browsing, sending emails). Only relay information already available in the conversation context.",
|
|
99
|
-
]
|
|
100
|
-
: [
|
|
101
|
-
`Because you are currently working on a task, this is a side process that you should handle the incoming messages as quickly as possible.`,
|
|
102
|
-
"1. Acknowledge the user's message(s) so they know they were received.",
|
|
103
|
-
"2. If the user is asking about status or what the agent is doing, summarize the current activity.",
|
|
104
|
-
"3. If the user sends a new task or request, tell them it has been queued.",
|
|
105
|
-
"4. Keep each reply concise and friendly (1-3 sentences).",
|
|
106
|
-
"5. Do NOT ask the user any questions — you are only an acknowledgment layer.",
|
|
107
|
-
"6. If the user's follow-up can be answered confidently from the recent conversation context alone, answer it briefly. Otherwise, just confirm receipt and say it has been queued.",
|
|
108
|
-
"7. Do NOT commit to performing any new action (e.g., searching, browsing, sending emails). Only relay information already available in the conversation context.",
|
|
109
|
-
];
|
|
132
|
+
const recipientList = buildFastResponderRecipientList([...recipientKeys.values()]);
|
|
133
|
+
const messageSummary = buildFastResponderMessageSummary(eligible);
|
|
134
|
+
const preamble = resolveFastResponderPreamble(mode, compacting, learning);
|
|
135
|
+
const includeFinAppGuidance = eligible.some((m) => m.channel === "finapp" || m.channel === "fin-app");
|
|
136
|
+
const includeWeixinGuidance = eligible.some((m) => m.channel === "weixin");
|
|
110
137
|
try {
|
|
111
138
|
return await runSideCall(config, {
|
|
112
|
-
systemPrompt: buildFastResponderSystemPrompt(systemPrompt, preamble, recipientList
|
|
139
|
+
systemPrompt: buildFastResponderSystemPrompt(systemPrompt, preamble, recipientList, {
|
|
140
|
+
includeFinAppGuidance,
|
|
141
|
+
includeWeixinGuidance,
|
|
142
|
+
}),
|
|
113
143
|
userMessage: buildFastResponderUserPrompt(activitySummary, eligible.length, messageSummary),
|
|
114
144
|
schema: FastResponseSchema,
|
|
115
145
|
schemaName: "fast_response",
|
|
@@ -121,21 +151,46 @@ export async function fastRespond(options) {
|
|
|
121
151
|
return null;
|
|
122
152
|
}
|
|
123
153
|
}
|
|
124
|
-
function
|
|
125
|
-
|
|
154
|
+
export function buildFastResponderAppendPrompt(preamble, recipientList, options = {}) {
|
|
155
|
+
const lines = [
|
|
126
156
|
...preamble,
|
|
127
157
|
"",
|
|
128
158
|
`You MUST produce exactly one reply per unique recipient. The recipients are:\n${recipientList}`,
|
|
129
159
|
"Each reply should be personalized and reference their specific message(s).",
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
"
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
160
|
+
];
|
|
161
|
+
const channelNotes = [];
|
|
162
|
+
if (options.includeFinAppGuidance) {
|
|
163
|
+
channelNotes.push("**finapp**: `sender` is a thread ID (e.g. fin-holdings, fin-home), not a person name. Address the owner/user — never the thread ID.");
|
|
164
|
+
}
|
|
165
|
+
if (options.includeWeixinGuidance) {
|
|
166
|
+
channelNotes.push("**weixin**: This is the remote owner command transport, not the desktop WeChat app unless the message explicitly asks you to operate that app.");
|
|
167
|
+
}
|
|
168
|
+
if (channelNotes.length > 0) {
|
|
169
|
+
lines.push("", "Channel-specific guidance for this batch:");
|
|
170
|
+
for (const note of channelNotes) {
|
|
171
|
+
lines.push(`- ${note}`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
lines.push("Use the exact channel and sender strings listed above in your output.", "Be VERY careful about `needsPrimaryAction`: set it to true when anything is unclear, requires search/read file/calendar lookup, or needs the main agent to follow up.", "", "IMPORTANT: You must NOT perform or promise additional actions. Only acknowledge receipt and describe the current processing state as instructed above; ground any status summary in Current Agent Activity.");
|
|
175
|
+
return lines.join("\n");
|
|
176
|
+
}
|
|
177
|
+
export function buildFastResponderSystemPrompt(systemPrompt, preamble, recipientList, appendOptions) {
|
|
178
|
+
const append = buildFastResponderAppendPrompt(preamble, recipientList, appendOptions);
|
|
179
|
+
return systemPrompt ? `${systemPrompt}\n\n${append}` : append;
|
|
180
|
+
}
|
|
181
|
+
export function buildFastResponderMessageSummary(messages) {
|
|
182
|
+
const eligible = messages.filter((m) => !isEmailChannel(m.channel) && m.channel !== "system");
|
|
183
|
+
return eligible
|
|
184
|
+
.map((m) => {
|
|
185
|
+
const parts = [`- ${formatMessageSummary(m)} at ${m.timestamp}`];
|
|
186
|
+
if (m.attachments.length > 0) {
|
|
187
|
+
parts.push(` Attachments: ${m.attachments.map((a) => `[${a.type}] ${a.filename ?? a.url ?? "(embedded)"}`).join(", ")}`);
|
|
188
|
+
}
|
|
189
|
+
return parts.join("\n");
|
|
190
|
+
})
|
|
191
|
+
.join("\n");
|
|
137
192
|
}
|
|
138
|
-
function buildFastResponderUserPrompt(activitySummary, eligibleMessageCount, messageSummary) {
|
|
193
|
+
export function buildFastResponderUserPrompt(activitySummary, eligibleMessageCount, messageSummary) {
|
|
139
194
|
return [
|
|
140
195
|
"## Current Agent Activity",
|
|
141
196
|
activitySummary,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fast-responder.js","sourceRoot":"","sources":["../../src/agent/fast-responder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAuB,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,UAAU,GAAG,IAAI,CAAC;AAExB,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,CAAC,yGAAyG,CAAC;IACtH,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,CAAC,4HAA4H,CAAC;IACzI,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,CAAC,mIAAmI,CAAC;CACjJ,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,OAAO,EAAE,CAAC;SACP,KAAK,CAAC,oBAAoB,CAAC;SAC3B,QAAQ,CACP,0EAA0E;QAC1E,2EAA2E;QAC3E,+FAA+F,CAChG;IACH,kBAAkB,EAAE,CAAC;SAClB,OAAO,EAAE;SACT,QAAQ,CACP,wGAAwG,CACzG;IACH,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,CACP,iHAAiH,CAClH;CACJ,CAAC,CAAC;AAMH;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAQjC;IACC,MAAM,EACJ,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,MAAM,EACN,IAAI,GAAG,WAAW,EAClB,UAAU,GAAG,KAAK,EAClB,QAAQ,GAAG,KAAK,GACjB,GAAG,OAAO,CAAC;IAEZ,uEAAuE;IACvE,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC;IAC9F,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvC,uEAAuE;IACvE,MAAM,aAAa,GAAG,IAAI,GAAG,EAA+C,CAAC;IAC7E,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QACxC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"fast-responder.js","sourceRoot":"","sources":["../../src/agent/fast-responder.ts"],"names":[],"mappings":"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"}
|
|
@@ -610,8 +610,8 @@ export class HeartbeatManager {
|
|
|
610
610
|
state.memoryEnabled = resp.memoryEnabled;
|
|
611
611
|
logger.system(`Memory system: ${resp.memoryEnabled ? "enabled" : "disabled"}`);
|
|
612
612
|
// The Claude provider pre-warms a subprocess with the system
|
|
613
|
-
// prompt baked in, and the "Memory Protocol"
|
|
614
|
-
//
|
|
613
|
+
// prompt baked in, and the "Memory Protocol" wording changes with
|
|
614
|
+
// memoryEnabled. Discard warm children so the next turn
|
|
615
615
|
// rebuilds the prompt from the new gate state. (OpenAI rebuilds
|
|
616
616
|
// on every sendAndStream, so this is a no-op there but cheap.)
|
|
617
617
|
try {
|