visionclaw 0.1.214-beta.0 → 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/external-context/finapp-capability.d.ts +2 -19
- package/dist/agent/external-context/finapp-capability.d.ts.map +1 -1
- package/dist/agent/external-context/finapp-capability.js +2 -23
- package/dist/agent/external-context/finapp-capability.js.map +1 -1
- package/dist/agent/external-context/interrupt.d.ts +13 -0
- package/dist/agent/external-context/interrupt.d.ts.map +1 -0
- package/dist/agent/external-context/interrupt.js +16 -0
- package/dist/agent/external-context/interrupt.js.map +1 -0
- package/dist/agent/external-context/providers/finapp.d.ts +15 -1
- package/dist/agent/external-context/providers/finapp.d.ts.map +1 -1
- package/dist/agent/external-context/providers/finapp.js +127 -50
- package/dist/agent/external-context/providers/finapp.js.map +1 -1
- package/dist/agent/external-context/registry.d.ts +15 -2
- package/dist/agent/external-context/registry.d.ts.map +1 -1
- package/dist/agent/external-context/registry.js +88 -8
- package/dist/agent/external-context/registry.js.map +1 -1
- package/dist/agent/external-context/runtime.d.ts +3 -1
- package/dist/agent/external-context/runtime.d.ts.map +1 -1
- package/dist/agent/external-context/runtime.js +7 -1
- package/dist/agent/external-context/runtime.js.map +1 -1
- package/dist/agent/external-context/types.d.ts +22 -0
- package/dist/agent/external-context/types.d.ts.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 +8 -4
- package/dist/agent/interrupt-handler.d.ts.map +1 -1
- package/dist/agent/interrupt-handler.js +48 -29
- package/dist/agent/interrupt-handler.js.map +1 -1
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +20 -6
- 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 +5 -3
- package/dist/agent/system-prompt.d.ts.map +1 -1
- package/dist/agent/system-prompt.js +7 -55
- package/dist/agent/system-prompt.js.map +1 -1
- package/dist/agent/wake-cycle-runner.d.ts +3 -0
- package/dist/agent/wake-cycle-runner.d.ts.map +1 -1
- package/dist/agent/wake-cycle-runner.js +16 -6
- package/dist/agent/wake-cycle-runner.js.map +1 -1
- package/dist/builtin-skills/fin-app/SKILL.md +1 -1
- package/dist/channels/credential-backed.d.ts +10 -0
- package/dist/channels/credential-backed.d.ts.map +1 -0
- package/dist/channels/credential-backed.js +12 -0
- package/dist/channels/credential-backed.js.map +1 -0
- package/dist/channels/manager.d.ts +4 -1
- package/dist/channels/manager.d.ts.map +1 -1
- package/dist/channels/manager.js +47 -33
- package/dist/channels/manager.js.map +1 -1
- package/dist/channels/telegram-status.d.ts +6 -0
- package/dist/channels/telegram-status.d.ts.map +1 -1
- package/dist/channels/telegram-status.js +111 -15
- package/dist/channels/telegram-status.js.map +1 -1
- package/dist/data-processing/batch-process.d.ts.map +1 -1
- package/dist/data-processing/batch-process.js +2 -1
- package/dist/data-processing/batch-process.js.map +1 -1
- package/dist/event-trigger/providers/finapp-monitor.d.ts +3 -0
- package/dist/event-trigger/providers/finapp-monitor.d.ts.map +1 -0
- package/dist/event-trigger/providers/finapp-monitor.js +25 -0
- package/dist/event-trigger/providers/finapp-monitor.js.map +1 -0
- package/dist/event-trigger/sidecar.d.ts +10 -6
- package/dist/event-trigger/sidecar.d.ts.map +1 -1
- package/dist/event-trigger/sidecar.js +18 -50
- package/dist/event-trigger/sidecar.js.map +1 -1
- package/dist/event-trigger/wake-routing.d.ts +21 -0
- package/dist/event-trigger/wake-routing.d.ts.map +1 -0
- package/dist/event-trigger/wake-routing.js +38 -0
- package/dist/event-trigger/wake-routing.js.map +1 -0
- 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 +3550 -3057
- package/package.json +6 -4
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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"}
|
|
@@ -1,27 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* in-flight turn does not keep a stale client fence set.
|
|
2
|
+
* Fin-App-specific interpretation of client capability metadata.
|
|
3
|
+
* The external-context registry owns collection and interrupt refresh.
|
|
5
4
|
*/
|
|
6
|
-
import type { VisionClawConfig } from "../../config/types.js";
|
|
7
5
|
import type { CommandMessage } from "../../channels/interface.js";
|
|
8
|
-
import type { SessionMode } from "../mailbox.js";
|
|
9
6
|
/** True when any message carries Fin-App fence capability meta. */
|
|
10
7
|
export declare function batchHasFinAppFenceCapability(messages: readonly CommandMessage[]): boolean;
|
|
11
|
-
/**
|
|
12
|
-
* Recollect Fin-App external context from `messages` and publish it as the
|
|
13
|
-
* current wake's external context. No-op when the batch has no Fin-App fence
|
|
14
|
-
* capability meta (keeps the prior wake catalog intact for non-finapp interrupts).
|
|
15
|
-
*/
|
|
16
|
-
export declare function refreshFinAppExternalContextFromMessages(input: {
|
|
17
|
-
config: VisionClawConfig;
|
|
18
|
-
messages: readonly CommandMessage[];
|
|
19
|
-
sessionMode: SessionMode;
|
|
20
|
-
trigger?: "message" | "heartbeat";
|
|
21
|
-
}): Promise<{
|
|
22
|
-
refreshed: boolean;
|
|
23
|
-
digest: string | null;
|
|
24
|
-
}>;
|
|
25
8
|
/**
|
|
26
9
|
* Text blocks that force an in-flight model turn to see the new client fence
|
|
27
10
|
* catalog even when the session system prompt was baked at wake start.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finapp-capability.d.ts","sourceRoot":"","sources":["../../../src/agent/external-context/finapp-capability.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"finapp-capability.d.ts","sourceRoot":"","sources":["../../../src/agent/external-context/finapp-capability.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE,mEAAmE;AACnE,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,GAAG,OAAO,CAQ1F;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,GAAG,MAAM,GAAG,IAAI,CA4BhG"}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* in-flight turn does not keep a stale client fence set.
|
|
2
|
+
* Fin-App-specific interpretation of client capability metadata.
|
|
3
|
+
* The external-context registry owns collection and interrupt refresh.
|
|
5
4
|
*/
|
|
6
|
-
import { createDefaultExternalContextRegistry } from "./registry.js";
|
|
7
|
-
import { setCurrentExternalContext } from "./runtime.js";
|
|
8
5
|
/** True when any message carries Fin-App fence capability meta. */
|
|
9
6
|
export function batchHasFinAppFenceCapability(messages) {
|
|
10
7
|
return messages.some((msg) => {
|
|
@@ -16,24 +13,6 @@ export function batchHasFinAppFenceCapability(messages) {
|
|
|
16
13
|
|| (typeof restrict === "string" && restrict.trim().length > 0);
|
|
17
14
|
});
|
|
18
15
|
}
|
|
19
|
-
/**
|
|
20
|
-
* Recollect Fin-App external context from `messages` and publish it as the
|
|
21
|
-
* current wake's external context. No-op when the batch has no Fin-App fence
|
|
22
|
-
* capability meta (keeps the prior wake catalog intact for non-finapp interrupts).
|
|
23
|
-
*/
|
|
24
|
-
export async function refreshFinAppExternalContextFromMessages(input) {
|
|
25
|
-
if (!batchHasFinAppFenceCapability(input.messages)) {
|
|
26
|
-
return { refreshed: false, digest: null };
|
|
27
|
-
}
|
|
28
|
-
const registry = createDefaultExternalContextRegistry(input.config);
|
|
29
|
-
const result = await registry.collect({
|
|
30
|
-
trigger: input.trigger ?? "message",
|
|
31
|
-
sessionMode: input.sessionMode,
|
|
32
|
-
messages: [...input.messages],
|
|
33
|
-
});
|
|
34
|
-
setCurrentExternalContext(result.section, result.digest);
|
|
35
|
-
return { refreshed: true, digest: result.digest };
|
|
36
|
-
}
|
|
37
16
|
/**
|
|
38
17
|
* Text blocks that force an in-flight model turn to see the new client fence
|
|
39
18
|
* catalog even when the session system prompt was baked at wake start.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finapp-capability.js","sourceRoot":"","sources":["../../../src/agent/external-context/finapp-capability.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"finapp-capability.js","sourceRoot":"","sources":["../../../src/agent/external-context/finapp-capability.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,mEAAmE;AACnE,MAAM,UAAU,6BAA6B,CAAC,QAAmC;IAC/E,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;QAC3B,IAAI,GAAG,CAAC,OAAO,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC3C,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,kBAAkB,CAAC;QAC7C,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,EAAE,qBAAqB,CAAC;QACjD,OAAO,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;eAC5D,CAAC,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,6BAA6B,CAAC,QAAmC;IAC/E,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACjD,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,GAAG,CAAC,OAAO,KAAK,QAAQ;YAAE,SAAS;QACvC,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,IAAI,EAAE,kBAAkB,KAAK,QAAQ;YAC9D,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE;YACpC,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,QAAQ,GAAG,OAAO,GAAG,CAAC,IAAI,EAAE,qBAAqB,KAAK,QAAQ;YAClE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE;YACvC,CAAC,CAAC,EAAE,CAAC;QACP,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ;YAAE,SAAS;QACpC,MAAM,KAAK,GAAG;YACZ,wHAAwH;SACzH,CAAC;QACF,IAAI,OAAO;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,0EAA0E;YAC1E,sEAAsE;YACtE,qEAAqE;YACrE,KAAK,CAAC,IAAI,CACR,kHAAkH,CACnH,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { CommandMessage } from "../../channels/interface.js";
|
|
2
|
+
import type { SessionMode } from "../mailbox.js";
|
|
3
|
+
import type { ExternalContextRegistry } from "./registry.js";
|
|
4
|
+
/** Keep the existing wake context when no provider recognizes an interrupt update. */
|
|
5
|
+
export declare function refreshExternalContextFromMessages(input: {
|
|
6
|
+
messages: readonly CommandMessage[];
|
|
7
|
+
sessionMode: SessionMode;
|
|
8
|
+
trigger?: "message" | "heartbeat";
|
|
9
|
+
}, registry: ExternalContextRegistry): Promise<{
|
|
10
|
+
refreshed: boolean;
|
|
11
|
+
digest: string | null;
|
|
12
|
+
}>;
|
|
13
|
+
//# sourceMappingURL=interrupt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interrupt.d.ts","sourceRoot":"","sources":["../../../src/agent/external-context/interrupt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAG7D,sFAAsF;AACtF,wBAAsB,kCAAkC,CAAC,KAAK,EAAE;IAC9D,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;IACpC,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;CACnC,EAAE,QAAQ,EAAE,uBAAuB,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAW5F"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { getCurrentExternalContextProviderBlocks, setCurrentExternalContext } from "./runtime.js";
|
|
2
|
+
/** Keep the existing wake context when no provider recognizes an interrupt update. */
|
|
3
|
+
export async function refreshExternalContextFromMessages(input, registry) {
|
|
4
|
+
if (!registry.ownsInterrupt(input.messages))
|
|
5
|
+
return { refreshed: false, digest: null };
|
|
6
|
+
const result = await registry.collect({
|
|
7
|
+
trigger: input.trigger ?? "message",
|
|
8
|
+
sessionMode: input.sessionMode,
|
|
9
|
+
messages: [...input.messages],
|
|
10
|
+
interrupt: true,
|
|
11
|
+
previousProviderBlocks: getCurrentExternalContextProviderBlocks(),
|
|
12
|
+
});
|
|
13
|
+
setCurrentExternalContext(result.section, result.digest, result.providerBlocks);
|
|
14
|
+
return { refreshed: true, digest: result.digest };
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=interrupt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interrupt.js","sourceRoot":"","sources":["../../../src/agent/external-context/interrupt.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uCAAuC,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAElG,sFAAsF;AACtF,MAAM,CAAC,KAAK,UAAU,kCAAkC,CAAC,KAIxD,EAAE,QAAiC;IAClC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACvF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;QACpC,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,SAAS;QACnC,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC7B,SAAS,EAAE,IAAI;QACf,sBAAsB,EAAE,uCAAuC,EAAE;KAClE,CAAC,CAAC;IACH,yBAAyB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;IAChF,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AACpD,CAAC"}
|
|
@@ -1,10 +1,24 @@
|
|
|
1
|
+
import { type CommandMessage } from "../../../channels/interface.js";
|
|
1
2
|
import type { VisionClawConfig } from "../../../config/types.js";
|
|
2
|
-
import type { ExternalContextBlock, ExternalContextProvider, ExternalContextProviderInput } from "../types.js";
|
|
3
|
+
import type { ExternalContextBlock, ExternalContextProvider, ExternalContextProviderInput, ExternalConversationContext } from "../types.js";
|
|
3
4
|
export declare class FinAppExternalContextProvider implements ExternalContextProvider {
|
|
4
5
|
private readonly config;
|
|
5
6
|
readonly source = "fin-app";
|
|
7
|
+
private credentialScope;
|
|
6
8
|
private readonly cache;
|
|
7
9
|
constructor(config: VisionClawConfig);
|
|
10
|
+
selectMessage(input: ExternalContextProviderInput): CommandMessage | undefined;
|
|
11
|
+
systemPrompt(conversation: ExternalConversationContext): string | null;
|
|
12
|
+
ownsInterrupt(messages: readonly CommandMessage[]): boolean;
|
|
13
|
+
canReuseContext(input: ExternalContextProviderInput, blocks: readonly ExternalContextBlock[]): boolean;
|
|
14
|
+
build(input: ExternalContextProviderInput): Promise<ExternalContextBlock[]>;
|
|
15
|
+
}
|
|
16
|
+
/** Local client capabilities have their own snapshot and cannot be lost to a remote fetch timeout. */
|
|
17
|
+
export declare class FinAppClientContextProvider implements ExternalContextProvider {
|
|
18
|
+
readonly source = "fin-app-client";
|
|
19
|
+
selectMessage(input: ExternalContextProviderInput): CommandMessage | undefined;
|
|
20
|
+
ownsInterrupt(messages: readonly CommandMessage[]): boolean;
|
|
21
|
+
interruptText(messages: readonly CommandMessage[]): string | null;
|
|
8
22
|
build(input: ExternalContextProviderInput): Promise<ExternalContextBlock[]>;
|
|
9
23
|
}
|
|
10
24
|
//# sourceMappingURL=finapp.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finapp.d.ts","sourceRoot":"","sources":["../../../../src/agent/external-context/providers/finapp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"finapp.d.ts","sourceRoot":"","sources":["../../../../src/agent/external-context/providers/finapp.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAGtF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAgB5I,qBAAa,6BAA8B,YAAW,uBAAuB;IAK/D,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJnC,QAAQ,CAAC,MAAM,aAAa;IAC5B,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyE;gBAElE,MAAM,EAAE,gBAAgB;IAErD,aAAa,CAAC,KAAK,EAAE,4BAA4B,GAAG,cAAc,GAAG,SAAS;IAI9E,YAAY,CAAC,YAAY,EAAE,2BAA2B,GAAG,MAAM,GAAG,IAAI;IAMtE,aAAa,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,GAAG,OAAO;IAI3D,eAAe,CAAC,KAAK,EAAE,4BAA4B,EAAE,MAAM,EAAE,SAAS,oBAAoB,EAAE,GAAG,OAAO;IAShG,KAAK,CAAC,KAAK,EAAE,4BAA4B,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;CAiElF;AAeD,sGAAsG;AACtG,qBAAa,2BAA4B,YAAW,uBAAuB;IACzE,QAAQ,CAAC,MAAM,oBAAoB;IAEnC,aAAa,CAAC,KAAK,EAAE,4BAA4B,GAAG,cAAc,GAAG,SAAS;IAI9E,aAAa,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,GAAG,OAAO;IAI3D,aAAa,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,GAAG,MAAM,GAAG,IAAI;IAIjE,KAAK,CAAC,KAAK,EAAE,4BAA4B,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;CA4C5E"}
|
|
@@ -1,64 +1,55 @@
|
|
|
1
1
|
import crypto from "node:crypto";
|
|
2
|
+
import { resolveThreadId } from "../../../channels/interface.js";
|
|
3
|
+
import { isFinAppThreadId, isFinAppThreadMessage, loadFinAppCoreContract } from "../../fin-app/core-contract.js";
|
|
4
|
+
import { batchHasFinAppFenceCapability, finAppCapabilityInterruptText } from "../finapp-capability.js";
|
|
2
5
|
import { resolveFinAppCredentials } from "../../../finapp-credentials.js";
|
|
3
6
|
const CONTEXT_CACHE_TTL_MS = 45_000;
|
|
4
7
|
export class FinAppExternalContextProvider {
|
|
5
8
|
config;
|
|
6
9
|
source = "fin-app";
|
|
10
|
+
credentialScope = null;
|
|
7
11
|
cache = new Map();
|
|
8
12
|
constructor(config) {
|
|
9
13
|
this.config = config;
|
|
10
14
|
}
|
|
15
|
+
selectMessage(input) {
|
|
16
|
+
return selectFinAppMessage(input);
|
|
17
|
+
}
|
|
18
|
+
systemPrompt(conversation) {
|
|
19
|
+
if (!isFinAppThreadId(conversation.threadId) && !conversation.messages?.some(isFinAppThreadMessage))
|
|
20
|
+
return null;
|
|
21
|
+
return loadFinAppCoreContract()
|
|
22
|
+
?? "## Fin-App Core Contract\n\nThe Fin-App core contract could not be loaded. Do not perform Fin-App writes or provide renderer-sensitive output until the contract is available.";
|
|
23
|
+
}
|
|
24
|
+
ownsInterrupt(messages) {
|
|
25
|
+
return batchHasFinAppFenceCapability(messages);
|
|
26
|
+
}
|
|
27
|
+
canReuseContext(input, blocks) {
|
|
28
|
+
const scope = credentialScope(resolveFinAppCredentials(this.config));
|
|
29
|
+
const message = selectFinAppMessage(input);
|
|
30
|
+
const threadId = message ? resolveThreadId(message) : undefined;
|
|
31
|
+
const key = threadId ? contextCacheKey(threadId, message?.meta ?? {}) : undefined;
|
|
32
|
+
return scope !== null && blocks.every((block) => block.metadata?.credentialScope === scope
|
|
33
|
+
&& (!key || block.metadata.cacheKey === key));
|
|
34
|
+
}
|
|
11
35
|
async build(input) {
|
|
12
36
|
if (input.channel !== "finapp")
|
|
13
37
|
return [];
|
|
14
|
-
const blocks = [];
|
|
15
|
-
const fenceCatalog = typeof input.channelMeta.fenceCatalogPrompt === "string"
|
|
16
|
-
? input.channelMeta.fenceCatalogPrompt.trim()
|
|
17
|
-
: "";
|
|
18
|
-
if (fenceCatalog) {
|
|
19
|
-
blocks.push({
|
|
20
|
-
source: "fin-app-fence-catalog",
|
|
21
|
-
scope: "thread",
|
|
22
|
-
threadId: input.threadId,
|
|
23
|
-
title: "Fin-App fence catalog",
|
|
24
|
-
generatedAt: new Date().toISOString(),
|
|
25
|
-
digest: crypto.createHash("sha256").update(fenceCatalog).digest("hex").slice(0, 16),
|
|
26
|
-
// Above thread context and above the forbid appendix so schemas win.
|
|
27
|
-
priority: 115,
|
|
28
|
-
content: fenceCatalog,
|
|
29
|
-
metadata: {
|
|
30
|
-
clientFences: input.channelMeta.clientFences,
|
|
31
|
-
},
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
const fencePrompt = typeof input.channelMeta.fenceCapabilityPrompt === "string"
|
|
35
|
-
? input.channelMeta.fenceCapabilityPrompt.trim()
|
|
36
|
-
: "";
|
|
37
|
-
if (fencePrompt) {
|
|
38
|
-
blocks.push({
|
|
39
|
-
source: "fin-app-fences",
|
|
40
|
-
scope: "thread",
|
|
41
|
-
threadId: input.threadId,
|
|
42
|
-
title: "Fin-App client fences",
|
|
43
|
-
generatedAt: new Date().toISOString(),
|
|
44
|
-
digest: crypto.createHash("sha256").update(fencePrompt).digest("hex").slice(0, 16),
|
|
45
|
-
priority: 110,
|
|
46
|
-
content: fencePrompt,
|
|
47
|
-
metadata: {
|
|
48
|
-
clientFences: input.channelMeta.clientFences,
|
|
49
|
-
},
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
38
|
const credentials = resolveFinAppCredentials(this.config);
|
|
39
|
+
// A shared provider must never reuse data after credentials/service scope changes.
|
|
40
|
+
const scope = credentialScope(credentials);
|
|
41
|
+
if (scope !== this.credentialScope) {
|
|
42
|
+
this.cache.clear();
|
|
43
|
+
this.credentialScope = scope;
|
|
44
|
+
}
|
|
53
45
|
if (!credentials)
|
|
54
|
-
return
|
|
46
|
+
return [];
|
|
55
47
|
const userId = typeof input.channelMeta.userId === "number" ? input.channelMeta.userId : undefined;
|
|
56
|
-
const locale = input.channelMeta.locale === "zh" ? "zh" : input.channelMeta.locale === "en" ? "en" : "unknown";
|
|
57
48
|
const messageKind = input.channelMeta.kind === "system" ? "system" : "user";
|
|
58
|
-
const cacheKey =
|
|
49
|
+
const cacheKey = contextCacheKey(input.threadId, input.channelMeta);
|
|
59
50
|
const cached = this.cache.get(cacheKey);
|
|
60
51
|
if (cached && Date.now() - cached.fetchedAt < CONTEXT_CACHE_TTL_MS) {
|
|
61
|
-
return [
|
|
52
|
+
return [cached.block];
|
|
62
53
|
}
|
|
63
54
|
try {
|
|
64
55
|
const response = await fetch(`${credentials.baseUrl}/api/internal/thread-context`, {
|
|
@@ -68,14 +59,18 @@ export class FinAppExternalContextProvider {
|
|
|
68
59
|
"Content-Type": "application/json",
|
|
69
60
|
},
|
|
70
61
|
body: JSON.stringify({ threadKey: input.threadId, ...(userId !== undefined ? { userId } : {}) }),
|
|
71
|
-
signal: AbortSignal.timeout(900),
|
|
62
|
+
signal: input.signal ? AbortSignal.any([input.signal, AbortSignal.timeout(900)]) : AbortSignal.timeout(900),
|
|
72
63
|
});
|
|
64
|
+
if (credentialScope(resolveFinAppCredentials(this.config)) !== scope)
|
|
65
|
+
return [];
|
|
66
|
+
input.signal?.throwIfAborted();
|
|
73
67
|
if (!response.ok) {
|
|
74
|
-
|
|
75
|
-
return [...blocks, withDegradedReason(cached.block, `fin-app context endpoint HTTP ${response.status}`)];
|
|
76
|
-
return blocks;
|
|
68
|
+
throw new Error(`fin-app context endpoint HTTP ${response.status}`);
|
|
77
69
|
}
|
|
78
70
|
const context = await response.json();
|
|
71
|
+
if (credentialScope(resolveFinAppCredentials(this.config)) !== scope)
|
|
72
|
+
return [];
|
|
73
|
+
input.signal?.throwIfAborted();
|
|
79
74
|
const block = {
|
|
80
75
|
source: "fin-app",
|
|
81
76
|
scope: "thread",
|
|
@@ -87,19 +82,101 @@ export class FinAppExternalContextProvider {
|
|
|
87
82
|
priority: 100,
|
|
88
83
|
content: renderFinAppContext(context, messageKind),
|
|
89
84
|
metadata: {
|
|
85
|
+
credentialScope: scope,
|
|
86
|
+
cacheKey,
|
|
90
87
|
threadKey: context.threadKey,
|
|
91
88
|
degradedReason: context.degradedReason,
|
|
92
89
|
},
|
|
93
90
|
};
|
|
94
|
-
|
|
95
|
-
|
|
91
|
+
// A request from the previous credential scope may finish after rotation.
|
|
92
|
+
if (this.credentialScope === scope)
|
|
93
|
+
this.cache.set(cacheKey, { fetchedAt: Date.now(), block });
|
|
94
|
+
return [block];
|
|
96
95
|
}
|
|
97
96
|
catch (err) {
|
|
97
|
+
if (credentialScope(resolveFinAppCredentials(this.config)) !== scope)
|
|
98
|
+
return [];
|
|
98
99
|
if (cached)
|
|
99
|
-
return [
|
|
100
|
-
|
|
100
|
+
return [withDegradedReason(cached.block, err instanceof Error ? err.message : String(err))];
|
|
101
|
+
// Transient failure must reach the registry so it can reuse a valid snapshot.
|
|
102
|
+
throw err;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
function credentialScope(credentials) {
|
|
107
|
+
return credentials
|
|
108
|
+
? crypto.createHash("sha256").update(JSON.stringify([credentials.baseUrl, credentials.apiKey])).digest("hex")
|
|
109
|
+
: null;
|
|
110
|
+
}
|
|
111
|
+
function contextCacheKey(threadId, meta) {
|
|
112
|
+
const userId = typeof meta.userId === "number" ? meta.userId : "unknown";
|
|
113
|
+
const locale = meta.locale === "zh" ? "zh" : meta.locale === "en" ? "en" : "unknown";
|
|
114
|
+
const kind = meta.kind === "system" ? "system" : "user";
|
|
115
|
+
return JSON.stringify([userId, threadId, locale, kind]);
|
|
116
|
+
}
|
|
117
|
+
/** Local client capabilities have their own snapshot and cannot be lost to a remote fetch timeout. */
|
|
118
|
+
export class FinAppClientContextProvider {
|
|
119
|
+
source = "fin-app-client";
|
|
120
|
+
selectMessage(input) {
|
|
121
|
+
return selectFinAppMessage(input);
|
|
122
|
+
}
|
|
123
|
+
ownsInterrupt(messages) {
|
|
124
|
+
return batchHasFinAppFenceCapability(messages);
|
|
125
|
+
}
|
|
126
|
+
interruptText(messages) {
|
|
127
|
+
return finAppCapabilityInterruptText(messages);
|
|
128
|
+
}
|
|
129
|
+
build(input) {
|
|
130
|
+
if (input.channel !== "finapp")
|
|
131
|
+
return Promise.resolve([]);
|
|
132
|
+
const blocks = [];
|
|
133
|
+
const fenceCatalog = typeof input.channelMeta.fenceCatalogPrompt === "string"
|
|
134
|
+
? input.channelMeta.fenceCatalogPrompt.trim()
|
|
135
|
+
: "";
|
|
136
|
+
if (fenceCatalog) {
|
|
137
|
+
blocks.push({
|
|
138
|
+
source: "fin-app-fence-catalog",
|
|
139
|
+
scope: "thread",
|
|
140
|
+
threadId: input.threadId,
|
|
141
|
+
title: "Fin-App fence catalog",
|
|
142
|
+
generatedAt: new Date().toISOString(),
|
|
143
|
+
digest: crypto.createHash("sha256").update(fenceCatalog).digest("hex").slice(0, 16),
|
|
144
|
+
// Above thread context and above the forbid appendix so schemas win.
|
|
145
|
+
priority: 115,
|
|
146
|
+
content: fenceCatalog,
|
|
147
|
+
metadata: {
|
|
148
|
+
clientFences: input.channelMeta.clientFences,
|
|
149
|
+
},
|
|
150
|
+
});
|
|
101
151
|
}
|
|
152
|
+
const fencePrompt = typeof input.channelMeta.fenceCapabilityPrompt === "string"
|
|
153
|
+
? input.channelMeta.fenceCapabilityPrompt.trim()
|
|
154
|
+
: "";
|
|
155
|
+
if (fencePrompt) {
|
|
156
|
+
blocks.push({
|
|
157
|
+
source: "fin-app-fences",
|
|
158
|
+
scope: "thread",
|
|
159
|
+
threadId: input.threadId,
|
|
160
|
+
title: "Fin-App client fences",
|
|
161
|
+
generatedAt: new Date().toISOString(),
|
|
162
|
+
digest: crypto.createHash("sha256").update(fencePrompt).digest("hex").slice(0, 16),
|
|
163
|
+
priority: 110,
|
|
164
|
+
content: fencePrompt,
|
|
165
|
+
metadata: {
|
|
166
|
+
clientFences: input.channelMeta.clientFences,
|
|
167
|
+
},
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
return Promise.resolve(blocks);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
function selectFinAppMessage(input) {
|
|
174
|
+
if (input.interrupt) {
|
|
175
|
+
const latestUpdate = [...input.messages].reverse().find((message) => batchHasFinAppFenceCapability([message]));
|
|
176
|
+
if (latestUpdate)
|
|
177
|
+
return latestUpdate;
|
|
102
178
|
}
|
|
179
|
+
return input.messages.find((message) => message.channel === "finapp");
|
|
103
180
|
}
|
|
104
181
|
function renderFinAppContext(context, messageKind) {
|
|
105
182
|
const lines = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finapp.js","sourceRoot":"","sources":["../../../../src/agent/external-context/providers/finapp.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"finapp.js","sourceRoot":"","sources":["../../../../src/agent/external-context/providers/finapp.ts"],"names":[],"mappings":"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"}
|