@moxxy/sdk 0.43.0 → 0.45.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/dist/agent-account-limit.d.ts +41 -0
- package/dist/agent-account-limit.d.ts.map +1 -0
- package/dist/agent-account-limit.js +64 -0
- package/dist/agent-account-limit.js.map +1 -0
- package/dist/agent-computer-use.d.ts +10 -0
- package/dist/agent-computer-use.d.ts.map +1 -0
- package/dist/agent-computer-use.js +24 -0
- package/dist/agent-computer-use.js.map +1 -0
- package/dist/agent-context-window.d.ts +22 -0
- package/dist/agent-context-window.d.ts.map +1 -0
- package/dist/agent-context-window.js +40 -0
- package/dist/agent-context-window.js.map +1 -0
- package/dist/agent-no-reply.d.ts +11 -0
- package/dist/agent-no-reply.d.ts.map +1 -0
- package/dist/agent-no-reply.js +13 -0
- package/dist/agent-no-reply.js.map +1 -0
- package/dist/agent-step.d.ts +14 -0
- package/dist/agent-step.d.ts.map +1 -0
- package/dist/agent-step.js +26 -0
- package/dist/agent-step.js.map +1 -0
- package/dist/agent-work.d.ts +34 -0
- package/dist/agent-work.d.ts.map +1 -0
- package/dist/agent-work.js +80 -0
- package/dist/agent-work.js.map +1 -0
- package/dist/attachment-payload.d.ts +95 -0
- package/dist/attachment-payload.d.ts.map +1 -0
- package/dist/attachment-payload.js +155 -0
- package/dist/attachment-payload.js.map +1 -0
- package/dist/auto-approve.d.ts +9 -0
- package/dist/auto-approve.d.ts.map +1 -1
- package/dist/auto-approve.js +18 -0
- package/dist/auto-approve.js.map +1 -1
- package/dist/channel-auth.d.ts +3 -3
- package/dist/channel-auth.d.ts.map +1 -1
- package/dist/channel-auth.js +1 -1
- package/dist/channel.d.ts +1 -1
- package/dist/client-session.d.ts +9 -5
- package/dist/client-session.d.ts.map +1 -1
- package/dist/computer-control.d.ts +11 -11
- package/dist/computer-control.d.ts.map +1 -1
- package/dist/computer-control.js +1 -1
- package/dist/computer-control.js.map +1 -1
- package/dist/conversation-history.d.ts +50 -0
- package/dist/conversation-history.d.ts.map +1 -0
- package/dist/conversation-history.js +227 -0
- package/dist/conversation-history.js.map +1 -0
- package/dist/cron.d.ts +58 -0
- package/dist/cron.d.ts.map +1 -0
- package/dist/cron.js +320 -0
- package/dist/cron.js.map +1 -0
- package/dist/define.d.ts +2 -1
- package/dist/define.d.ts.map +1 -1
- package/dist/define.js +1 -0
- package/dist/define.js.map +1 -1
- package/dist/event-store.d.ts +1 -1
- package/dist/event-store.d.ts.map +1 -1
- package/dist/event-store.js +1 -0
- package/dist/event-store.js.map +1 -1
- package/dist/events.d.ts +23 -1
- package/dist/events.d.ts.map +1 -1
- package/dist/file-diff.d.ts +31 -0
- package/dist/file-diff.d.ts.map +1 -0
- package/dist/file-diff.js +196 -0
- package/dist/file-diff.js.map +1 -0
- package/dist/index.d.ts +23 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -4
- package/dist/index.js.map +1 -1
- package/dist/mode/agent-step-loop.d.ts +13 -0
- package/dist/mode/agent-step-loop.d.ts.map +1 -0
- package/dist/mode/agent-step-loop.js +578 -0
- package/dist/mode/agent-step-loop.js.map +1 -0
- package/dist/mode/checkpoint-gate.d.ts +25 -0
- package/dist/mode/checkpoint-gate.d.ts.map +1 -0
- package/dist/mode/checkpoint-gate.js +150 -0
- package/dist/mode/checkpoint-gate.js.map +1 -0
- package/dist/mode/checkpoint.d.ts +6 -0
- package/dist/mode/checkpoint.d.ts.map +1 -1
- package/dist/mode/collect-stream.d.ts +2 -0
- package/dist/mode/collect-stream.d.ts.map +1 -1
- package/dist/mode/collect-stream.js +1 -1
- package/dist/mode/collect-stream.js.map +1 -1
- package/dist/mode/project-messages.d.ts +3 -1
- package/dist/mode/project-messages.d.ts.map +1 -1
- package/dist/mode/project-messages.js +122 -81
- package/dist/mode/project-messages.js.map +1 -1
- package/dist/mode/react-loop-options.d.ts +113 -0
- package/dist/mode/react-loop-options.d.ts.map +1 -0
- package/dist/mode/react-loop-options.js +2 -0
- package/dist/mode/react-loop-options.js.map +1 -0
- package/dist/mode/react-loop.d.ts +2 -99
- package/dist/mode/react-loop.d.ts.map +1 -1
- package/dist/mode/react-loop.js +7 -145
- package/dist/mode/react-loop.js.map +1 -1
- package/dist/mode.d.ts +19 -7
- package/dist/mode.d.ts.map +1 -1
- package/dist/mode.js +1 -1
- package/dist/mode.js.map +1 -1
- package/dist/npm-registry.d.ts +22 -0
- package/dist/npm-registry.d.ts.map +1 -0
- package/dist/npm-registry.js +54 -0
- package/dist/npm-registry.js.map +1 -0
- package/dist/permission.d.ts +31 -0
- package/dist/permission.d.ts.map +1 -1
- package/dist/process-invocation.d.ts +2 -0
- package/dist/process-invocation.d.ts.map +1 -1
- package/dist/process-invocation.js +2 -2
- package/dist/process-invocation.js.map +1 -1
- package/dist/process-tree.d.ts +9 -0
- package/dist/process-tree.d.ts.map +1 -0
- package/dist/process-tree.js +40 -0
- package/dist/process-tree.js.map +1 -0
- package/dist/provider-login-bridge.js +1 -1
- package/dist/provider-login-bridge.js.map +1 -1
- package/dist/provider.d.ts +408 -0
- package/dist/provider.d.ts.map +1 -1
- package/dist/question-draft.d.ts +19 -0
- package/dist/question-draft.d.ts.map +1 -0
- package/dist/question-draft.js +30 -0
- package/dist/question-draft.js.map +1 -0
- package/dist/question.d.ts +204 -0
- package/dist/question.d.ts.map +1 -0
- package/dist/question.js +141 -0
- package/dist/question.js.map +1 -0
- package/dist/questions.d.ts +7 -0
- package/dist/questions.d.ts.map +1 -0
- package/dist/questions.js +7 -0
- package/dist/questions.js.map +1 -0
- package/dist/resolvers.d.ts +14 -1
- package/dist/resolvers.d.ts.map +1 -1
- package/dist/resolvers.js +33 -21
- package/dist/resolvers.js.map +1 -1
- package/dist/schemas.d.ts +53 -53
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +3 -2
- package/dist/schemas.js.map +1 -1
- package/dist/server.d.ts +2 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +3 -0
- package/dist/server.js.map +1 -1
- package/dist/session-like.d.ts +19 -1
- package/dist/session-like.d.ts.map +1 -1
- package/dist/starting-model.d.ts +12 -0
- package/dist/starting-model.d.ts.map +1 -0
- package/dist/starting-model.js +9 -0
- package/dist/starting-model.js.map +1 -0
- package/dist/tool-dispatch.d.ts.map +1 -1
- package/dist/tool-dispatch.js +10 -4
- package/dist/tool-dispatch.js.map +1 -1
- package/dist/tool-display.d.ts +79 -3
- package/dist/tool-display.d.ts.map +1 -1
- package/dist/tool-display.js +117 -3
- package/dist/tool-display.js.map +1 -1
- package/dist/tool-modes.d.ts +1 -1
- package/dist/tool-modes.d.ts.map +1 -1
- package/dist/tool-modes.js +8 -2
- package/dist/tool-modes.js.map +1 -1
- package/dist/tool-output.d.ts +15 -0
- package/dist/tool-output.d.ts.map +1 -0
- package/dist/tool-output.js +39 -0
- package/dist/tool-output.js.map +1 -0
- package/dist/tool.d.ts +14 -1
- package/dist/tool.d.ts.map +1 -1
- package/dist/tunnel.d.ts +3 -3
- package/dist/tunnel.d.ts.map +1 -1
- package/dist/tunnel.js +2 -2
- package/dist/workflow-approval.d.ts +9 -9
- package/dist/workflow-approval.d.ts.map +1 -1
- package/dist/workflow-approval.js +1 -1
- package/dist/workflow-approval.js.map +1 -1
- package/package.json +37 -5
- package/src/agent-account-limit.test.ts +87 -0
- package/src/agent-account-limit.ts +89 -0
- package/src/agent-computer-use.test.ts +26 -0
- package/src/agent-computer-use.ts +29 -0
- package/src/agent-context-window.ts +51 -0
- package/src/agent-no-reply.ts +16 -0
- package/src/agent-step.ts +26 -0
- package/src/agent-work.ts +102 -0
- package/src/attachment-payload.test.ts +165 -0
- package/src/attachment-payload.ts +187 -0
- package/src/auto-approve.test.ts +13 -1
- package/src/auto-approve.ts +19 -0
- package/src/channel-auth.ts +3 -3
- package/src/channel.ts +1 -1
- package/src/client-session.ts +9 -2
- package/src/computer-control.ts +1 -1
- package/src/conversation-history.test.ts +184 -0
- package/src/conversation-history.ts +272 -0
- package/src/cron.test.ts +280 -0
- package/src/cron.ts +355 -0
- package/src/define.test.ts +1 -1
- package/src/define.ts +3 -1
- package/src/event-store.ts +2 -1
- package/src/events.ts +23 -1
- package/src/file-diff.test.ts +103 -0
- package/src/file-diff.ts +208 -0
- package/src/index.ts +140 -1
- package/src/json-file-store.test.ts +1 -1
- package/src/loop-helpers.test.ts +15 -0
- package/src/mode/agent-step-loop.ts +645 -0
- package/src/mode/checkpoint-gate.ts +198 -0
- package/src/mode/checkpoint.ts +6 -0
- package/src/mode/collect-stream.ts +1 -1
- package/src/mode/project-messages.test.ts +118 -1
- package/src/mode/project-messages.ts +136 -77
- package/src/mode/react-loop-options.ts +124 -0
- package/src/mode/react-loop.ts +10 -296
- package/src/mode.ts +19 -7
- package/src/npm-registry.test.ts +95 -0
- package/src/npm-registry.ts +57 -0
- package/src/permission.ts +30 -0
- package/src/process-invocation.test.ts +25 -0
- package/src/process-invocation.ts +8 -3
- package/src/process-tree.ts +37 -0
- package/src/provider-login-bridge.ts +1 -1
- package/src/provider-schema-constraints.test.ts +1 -1
- package/src/provider-utils.test.ts +1 -1
- package/src/provider.ts +346 -0
- package/src/question-draft.test.ts +57 -0
- package/src/question-draft.ts +47 -0
- package/src/question.test.ts +130 -0
- package/src/question.ts +229 -0
- package/src/questions.ts +6 -0
- package/src/resolvers.test.ts +84 -1
- package/src/resolvers.ts +40 -27
- package/src/schemas.test.ts +5 -0
- package/src/schemas.ts +3 -2
- package/src/server.ts +3 -0
- package/src/session-like.ts +19 -1
- package/src/skill-mentions.test.ts +1 -1
- package/src/starting-model.test.ts +19 -0
- package/src/starting-model.ts +11 -0
- package/src/token-efficiency.test.ts +1 -1
- package/src/tool-dispatch.ts +10 -4
- package/src/tool-display.test.ts +119 -0
- package/src/tool-display.ts +162 -4
- package/src/tool-gating.test.ts +1 -1
- package/src/tool-icon.test.ts +1 -1
- package/src/tool-modes.test.ts +18 -1
- package/src/tool-modes.ts +6 -2
- package/src/tool-output.test.ts +46 -0
- package/src/tool-output.ts +46 -0
- package/src/tool.ts +14 -1
- package/src/tunnel.ts +3 -3
- package/src/workflow-approval.ts +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-step-loop.js","sourceRoot":"","sources":["../../src/mode/agent-step-loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { MoxxyEvent } from '../events.js';
|
|
2
|
+
import type { ModeContext } from '../mode.js';
|
|
3
|
+
import type { StopReason } from '../provider-utils.js';
|
|
4
|
+
import type { TurnCheckpoint } from './checkpoint.js';
|
|
5
|
+
/** Gate outcome: end the turn, or loop again (optionally with a volatile nudge). */
|
|
6
|
+
export type GateVerdict = {
|
|
7
|
+
readonly kind: 'end';
|
|
8
|
+
} | {
|
|
9
|
+
readonly kind: 'loop';
|
|
10
|
+
readonly volatileText?: string;
|
|
11
|
+
};
|
|
12
|
+
export interface GateRound {
|
|
13
|
+
readonly candidateText: string;
|
|
14
|
+
readonly stopReason: StopReason;
|
|
15
|
+
readonly iteration: number;
|
|
16
|
+
readonly consecutiveIdle: number;
|
|
17
|
+
readonly injectionsUsed: number;
|
|
18
|
+
readonly injectionBudget: number;
|
|
19
|
+
readonly maxInjectChars: number;
|
|
20
|
+
}
|
|
21
|
+
export declare function runCheckpointGate(ctx: ModeContext, checkpoints: ReadonlyArray<TurnCheckpoint>, round: GateRound): AsyncGenerator<MoxxyEvent, GateVerdict>;
|
|
22
|
+
export declare function emitAbort(ctx: ModeContext, reason: string): Promise<MoxxyEvent>;
|
|
23
|
+
export declare function emitError(ctx: ModeContext, kind: 'retryable' | 'fatal', message: string): Promise<MoxxyEvent>;
|
|
24
|
+
export declare function emitCheckpointEvent(ctx: ModeContext, subtype: string, payload: unknown): Promise<MoxxyEvent>;
|
|
25
|
+
//# sourceMappingURL=checkpoint-gate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpoint-gate.d.ts","sourceRoot":"","sources":["../../src/mode/checkpoint-gate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAoB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAUxE,oFAAoF;AACpF,MAAM,MAAM,WAAW,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/G,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,wBAAuB,iBAAiB,CACtC,GAAG,EAAE,WAAW,EAChB,WAAW,EAAE,aAAa,CAAC,cAAc,CAAC,EAC1C,KAAK,EAAE,SAAS,GACf,cAAc,CAAC,UAAU,EAAE,WAAW,CAAC,CAwHzC;AAOD,wBAAsB,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAQrF;AAED,wBAAsB,SAAS,CAC7B,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,WAAW,GAAG,OAAO,EAC3B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,UAAU,CAAC,CASrB;AAED,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,UAAU,CAAC,CAUrB"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { asPluginId } from '../ids.js';
|
|
2
|
+
/**
|
|
3
|
+
* The turn-end checkpoint gate and the loop's own lifecycle events, shared by
|
|
4
|
+
* the ReAct loop and the agent-connection loop.
|
|
5
|
+
*/
|
|
6
|
+
const DEFAULT_CHECKPOINT_TIMEOUT_MS = 120_000;
|
|
7
|
+
const CHECKPOINT_EVENT_PLUGIN_ID = asPluginId('react-loop');
|
|
8
|
+
export async function* runCheckpointGate(ctx, checkpoints, round) {
|
|
9
|
+
// Natural completions face every checkpoint; truncated/errored candidates
|
|
10
|
+
// only face the idle-tolerant ones — reviewing a half-sentence as if it
|
|
11
|
+
// were a completion claim wastes a checker run and confuses the model.
|
|
12
|
+
const eligible = checkpoints.filter((cp) => (round.stopReason === 'end_turn' || (cp.gateOn ?? 'end_turn') === 'idle') && (cp.applies?.(ctx) ?? true));
|
|
13
|
+
if (eligible.length === 0)
|
|
14
|
+
return { kind: 'end' };
|
|
15
|
+
// Budget exhausted → the answer ships as-is, but LOUDLY: silent
|
|
16
|
+
// degradation would let the user believe a gated answer passed its gates.
|
|
17
|
+
if (round.injectionsUsed >= round.injectionBudget) {
|
|
18
|
+
yield await emitError(ctx, 'retryable', `checkpoint budget exhausted (${round.injectionBudget} rounds) — ` +
|
|
19
|
+
`ending the turn with unresolved checkpoint feedback; verify the result manually.`);
|
|
20
|
+
return { kind: 'end' };
|
|
21
|
+
}
|
|
22
|
+
for (const cp of eligible) {
|
|
23
|
+
// User cancelled mid-gate: end the turn WITHOUT retracting the
|
|
24
|
+
// already-logged answer — an abort must never un-say what was said.
|
|
25
|
+
if (ctx.signal.aborted)
|
|
26
|
+
return { kind: 'end' };
|
|
27
|
+
yield await emitCheckpointEvent(ctx, 'checkpoint_started', {
|
|
28
|
+
name: cp.name,
|
|
29
|
+
iteration: round.iteration,
|
|
30
|
+
});
|
|
31
|
+
const timeoutMs = Math.max(1_000, cp.timeoutMs ?? DEFAULT_CHECKPOINT_TIMEOUT_MS);
|
|
32
|
+
const timeoutCtl = new AbortController();
|
|
33
|
+
const timer = setTimeout(() => timeoutCtl.abort(), timeoutMs);
|
|
34
|
+
timer.unref?.();
|
|
35
|
+
let result;
|
|
36
|
+
try {
|
|
37
|
+
result = await cp.run({
|
|
38
|
+
candidateText: round.candidateText,
|
|
39
|
+
stopReason: round.stopReason,
|
|
40
|
+
iteration: round.iteration,
|
|
41
|
+
consecutiveIdle: round.consecutiveIdle,
|
|
42
|
+
injectionsUsed: round.injectionsUsed,
|
|
43
|
+
injectionBudget: round.injectionBudget,
|
|
44
|
+
signal: AbortSignal.any([ctx.signal, timeoutCtl.signal]),
|
|
45
|
+
}, ctx);
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
if (ctx.signal.aborted)
|
|
49
|
+
return { kind: 'end' };
|
|
50
|
+
// Fail OPEN, visibly. A crashed or timed-out checker downgrades the
|
|
51
|
+
// gate to a warning — it must never wedge the turn (fail-closed is a
|
|
52
|
+
// turn that can never end) and never crash it (the answer is already
|
|
53
|
+
// logged).
|
|
54
|
+
const why = timeoutCtl.signal.aborted
|
|
55
|
+
? `timed out after ${timeoutMs}ms`
|
|
56
|
+
: `failed: ${err instanceof Error ? err.message : String(err)}`;
|
|
57
|
+
yield await emitError(ctx, 'retryable', `checkpoint "${cp.name}" ${why} — proceeding unchecked`);
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
finally {
|
|
61
|
+
clearTimeout(timer);
|
|
62
|
+
}
|
|
63
|
+
switch (result.action) {
|
|
64
|
+
case 'pass': {
|
|
65
|
+
yield await emitCheckpointEvent(ctx, 'checkpoint_passed', { name: cp.name });
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
case 'stop': {
|
|
69
|
+
// The checkpoint already emitted its own wrap-up events.
|
|
70
|
+
yield await emitCheckpointEvent(ctx, 'checkpoint_stopped', { name: cp.name });
|
|
71
|
+
return { kind: 'end' };
|
|
72
|
+
}
|
|
73
|
+
case 'retry': {
|
|
74
|
+
yield await emitCheckpointEvent(ctx, 'checkpoint_retry', { name: cp.name });
|
|
75
|
+
return { kind: 'loop' };
|
|
76
|
+
}
|
|
77
|
+
case 'inject': {
|
|
78
|
+
// Guard the guard: an inject with blank text would loop the turn
|
|
79
|
+
// with no new signal for the model — a checker bug; fail open.
|
|
80
|
+
const feedback = result.text?.trim();
|
|
81
|
+
if (!feedback) {
|
|
82
|
+
yield await emitError(ctx, 'retryable', `checkpoint "${cp.name}" injected empty feedback — ignored`);
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
const clamped = clampChars(feedback, round.maxInjectChars);
|
|
86
|
+
if (result.volatile) {
|
|
87
|
+
yield await emitCheckpointEvent(ctx, 'checkpoint_injected', {
|
|
88
|
+
name: cp.name,
|
|
89
|
+
volatile: true,
|
|
90
|
+
});
|
|
91
|
+
return { kind: 'loop', volatileText: clamped };
|
|
92
|
+
}
|
|
93
|
+
// Persistent: a checkpoint-origin user prompt. Projected as a
|
|
94
|
+
// user-role message by the existing projection case, marked via the
|
|
95
|
+
// same `origin` machinery trigger prompts use, cache-safe because it
|
|
96
|
+
// is an ordinary append at the log tail.
|
|
97
|
+
yield await ctx.emit({
|
|
98
|
+
type: 'user_prompt',
|
|
99
|
+
sessionId: ctx.sessionId,
|
|
100
|
+
turnId: ctx.turnId,
|
|
101
|
+
source: 'system',
|
|
102
|
+
text: clamped,
|
|
103
|
+
origin: { kind: 'checkpoint', name: cp.name },
|
|
104
|
+
});
|
|
105
|
+
yield await emitCheckpointEvent(ctx, 'checkpoint_injected', {
|
|
106
|
+
name: cp.name,
|
|
107
|
+
volatile: false,
|
|
108
|
+
});
|
|
109
|
+
return { kind: 'loop' };
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return { kind: 'end' };
|
|
114
|
+
}
|
|
115
|
+
function clampChars(text, max) {
|
|
116
|
+
if (text.length <= max)
|
|
117
|
+
return text;
|
|
118
|
+
return `${text.slice(0, max)}\n…[checkpoint feedback truncated: ${text.length - max} chars dropped]`;
|
|
119
|
+
}
|
|
120
|
+
export async function emitAbort(ctx, reason) {
|
|
121
|
+
return ctx.emit({
|
|
122
|
+
type: 'abort',
|
|
123
|
+
sessionId: ctx.sessionId,
|
|
124
|
+
turnId: ctx.turnId,
|
|
125
|
+
source: 'system',
|
|
126
|
+
reason,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
export async function emitError(ctx, kind, message) {
|
|
130
|
+
return ctx.emit({
|
|
131
|
+
type: 'error',
|
|
132
|
+
sessionId: ctx.sessionId,
|
|
133
|
+
turnId: ctx.turnId,
|
|
134
|
+
source: 'system',
|
|
135
|
+
kind,
|
|
136
|
+
message,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
export async function emitCheckpointEvent(ctx, subtype, payload) {
|
|
140
|
+
return ctx.emit({
|
|
141
|
+
type: 'plugin_event',
|
|
142
|
+
sessionId: ctx.sessionId,
|
|
143
|
+
turnId: ctx.turnId,
|
|
144
|
+
source: 'system',
|
|
145
|
+
pluginId: CHECKPOINT_EVENT_PLUGIN_ID,
|
|
146
|
+
subtype,
|
|
147
|
+
payload,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=checkpoint-gate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpoint-gate.js","sourceRoot":"","sources":["../../src/mode/checkpoint-gate.ts"],"names":[],"mappings":"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"}
|
|
@@ -102,6 +102,12 @@ export interface TurnCheckpoint {
|
|
|
102
102
|
* (goal/collab-style stall handling wants these too).
|
|
103
103
|
*/
|
|
104
104
|
readonly gateOn?: 'end_turn' | 'idle';
|
|
105
|
+
/**
|
|
106
|
+
* Also gate turns done by a vendor's agent (an agent connection). Off by
|
|
107
|
+
* default: the agent decides when its turn is done, as in its own tool, so
|
|
108
|
+
* Moxxy's end-of-turn reminders stay out of it.
|
|
109
|
+
*/
|
|
110
|
+
readonly agentConnections?: boolean;
|
|
105
111
|
/**
|
|
106
112
|
* A cheap test of whether this turn needs the checkpoint at all. When it
|
|
107
113
|
* says no, the checkpoint is skipped without a trace — no lifecycle events —
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../../src/mode/checkpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC3B;IACE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AACH;;;GAGG;GACD;IAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CAAE;AAC9B;;;;GAIG;GACD;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhC,MAAM,WAAW,iBAAiB;IAChC,qEAAqE;IACrE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,uDAAuD;IACvD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,uFAAuF;IACvF,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,qFAAqF;IACrF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IACtC;;;;;OAKG;IACH,OAAO,CAAC,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC;IACpC,GAAG,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC5E"}
|
|
1
|
+
{"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../../src/mode/checkpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC3B;IACE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AACH;;;GAGG;GACD;IAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CAAE;AAC9B;;;;GAIG;GACD;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhC,MAAM,WAAW,iBAAiB;IAChC,qEAAqE;IACrE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,uDAAuD;IACvD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,uFAAuF;IACvF,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,qFAAqF;IACrF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IACtC;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC;;;;;OAKG;IACH,OAAO,CAAC,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC;IACpC,GAAG,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC5E"}
|
|
@@ -16,6 +16,8 @@ export interface CollectedToolUse {
|
|
|
16
16
|
readonly name: string;
|
|
17
17
|
readonly input: unknown;
|
|
18
18
|
}
|
|
19
|
+
/** Sum two usage frames so multi-`message_end` responses don't undercount. */
|
|
20
|
+
export declare function addUsage(a: TokenUsage, b: TokenUsage): TokenUsage;
|
|
19
21
|
export interface StreamResult {
|
|
20
22
|
readonly timing?: ProviderCallTiming;
|
|
21
23
|
readonly text: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collect-stream.d.ts","sourceRoot":"","sources":["../../src/mode/collect-stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,eAAe,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAG5E;;;;;;;;GAQG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;
|
|
1
|
+
{"version":3,"file":"collect-stream.d.ts","sourceRoot":"","sources":["../../src/mode/collect-stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,eAAe,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAG5E;;;;;;;;GAQG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED,8EAA8E;AAC9E,wBAAgB,QAAQ,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,UAAU,CAejE;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IACnD,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IACjF,0FAA0F;IAC1F,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE;QACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;KAC3D,CAAC;CACH;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,aAAa,CAAC,eAAe,CAAC,EACxC,IAAI,GAAE;IACJ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACvB,GACL,OAAO,CAAC,YAAY,CAAC,CAsNvB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { applyLazyTools, shouldGateTools } from '../tool-gating.js';
|
|
2
2
|
import { providerTiming } from './provider-timing.js';
|
|
3
3
|
/** Sum two usage frames so multi-`message_end` responses don't undercount. */
|
|
4
|
-
function addUsage(a, b) {
|
|
4
|
+
export function addUsage(a, b) {
|
|
5
5
|
const cacheRead = a.cacheReadTokens !== undefined || b.cacheReadTokens !== undefined
|
|
6
6
|
? (a.cacheReadTokens ?? 0) + (b.cacheReadTokens ?? 0)
|
|
7
7
|
: undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collect-stream.js","sourceRoot":"","sources":["../../src/mode/collect-stream.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAkBtD,8EAA8E;AAC9E,
|
|
1
|
+
{"version":3,"file":"collect-stream.js","sourceRoot":"","sources":["../../src/mode/collect-stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,7 +47,9 @@ export interface ProjectMessagesOptions {
|
|
|
47
47
|
* what the inline switch arm produced. Caller decides how to wrap it as a
|
|
48
48
|
* message / record the stable prefix.
|
|
49
49
|
*/
|
|
50
|
-
export declare function projectUserPrompt(event: UserPromptEvent, el: ElisionState
|
|
50
|
+
export declare function projectUserPrompt(event: UserPromptEvent, el: ElisionState,
|
|
51
|
+
/** Which attachments go to the model in full; the rest become a short note. Default: all. */
|
|
52
|
+
sendsInFull?: (index: number) => boolean): ContentBlock[];
|
|
51
53
|
/**
|
|
52
54
|
* Precompute the set of callIds that have a matching tool_result (or
|
|
53
55
|
* tool_call_denied) somewhere in the log. Used to synthesize a fallback
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-messages.d.ts","sourceRoot":"","sources":["../../src/mode/project-messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,KAAK,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"project-messages.d.ts","sourceRoot":"","sources":["../../src/mode/project-messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,KAAK,EAAE,UAAU,EAAwB,eAAe,EAAE,MAAM,cAAc,CAAC;AAYtF,OAAO,EAML,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAC;AAG7B,8EAA8E;AAC9E,eAAO,MAAM,mBAAmB,QAKb,CAAC;AAEpB;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAMtH;AAED;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CACzC,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,GAC3B,MAAM,GAAG,SAAS,CAoBpB;AAED,MAAM,WAAW,sBAAsB;IACrC,qEAAqE;IACrE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,8FAA8F;IAC9F,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC;;;;;;;OAOG;IACH,QAAQ,CAAC,uBAAuB,CAAC,EAAE,YAAY,CAAC;CACjD;AA4FD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,eAAe,EACtB,EAAE,EAAE,YAAY;AAChB,6FAA6F;AAC7F,WAAW,GAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAoB,GACnD,YAAY,EAAE,CAqBhB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAQhF;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC;IACrC;;;;;;;OAOG;IACH,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAED,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,EAC7B,IAAI,GAAE,sBAA2B,GAChC,eAAe,EAAE,CAEnB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,EAC7B,IAAI,GAAE,sBAA2B,GAChC,iBAAiB,CA6OnB"}
|
|
@@ -1,54 +1,8 @@
|
|
|
1
1
|
import { toolPatternMatches } from '../skill-mentions.js';
|
|
2
|
+
import { MODEL_ATTACHMENT_BUDGET_CHARS, attachmentBytes, attachmentKey, restoredAttachmentRef, } from '../attachment-payload.js';
|
|
2
3
|
import { activeCompactionRanges, makeCompactionLookup, } from '../compaction-state.js';
|
|
3
4
|
import { computeElisionState, conversationalStub, conversationalStubbed, toolResultStubText, toolResultStubbed, } from '../elision-state.js';
|
|
4
|
-
import {
|
|
5
|
-
/**
|
|
6
|
-
* Stringify an arbitrary tool output for the model-facing tool_result text.
|
|
7
|
-
* `tool_result.output` is `unknown` and comes straight from whatever a tool
|
|
8
|
-
* returned, so it can be circular or contain a BigInt — either of which makes
|
|
9
|
-
* `JSON.stringify` THROW. Because projection runs on every request over the
|
|
10
|
-
* append-only log, an unguarded throw here permanently wedges the session
|
|
11
|
-
* (every subsequent re-projection re-throws). Mirrors the try/catch guard the
|
|
12
|
-
* sibling sizing paths (`safeJsonLen`, `toolResultBytes`) already use.
|
|
13
|
-
*/
|
|
14
|
-
function safeStringifyOutput(output) {
|
|
15
|
-
if (typeof output === 'string')
|
|
16
|
-
return output;
|
|
17
|
-
try {
|
|
18
|
-
return JSON.stringify(output ?? '');
|
|
19
|
-
}
|
|
20
|
-
catch {
|
|
21
|
-
try {
|
|
22
|
-
return String(output ?? '');
|
|
23
|
-
}
|
|
24
|
-
catch {
|
|
25
|
-
return '[unserializable tool output]';
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* An image ContentBlock extracted from an image-shaped tool output. A tool can
|
|
31
|
-
* return either `{ mediaType, base64 }` (the desktop screenshot/clipboard shape)
|
|
32
|
-
* or the provider-native `{ type:'image', mediaType, data }` — both normalize to
|
|
33
|
-
* the same provider `image` block so the model SEES the pixels instead of a
|
|
34
|
-
* stringified blob of base64.
|
|
35
|
-
*/
|
|
36
|
-
function imageBlockFromOutput(output) {
|
|
37
|
-
if (typeof output !== 'object' || output === null)
|
|
38
|
-
return null;
|
|
39
|
-
const o = output;
|
|
40
|
-
if (typeof o.mediaType !== 'string')
|
|
41
|
-
return null;
|
|
42
|
-
// `{ mediaType, base64 }` (raw shape) or `{ type:'image', mediaType, data }`.
|
|
43
|
-
const data = typeof o.base64 === 'string'
|
|
44
|
-
? o.base64
|
|
45
|
-
: o.type === 'image' && typeof o.data === 'string'
|
|
46
|
-
? o.data
|
|
47
|
-
: null;
|
|
48
|
-
if (data === null)
|
|
49
|
-
return null;
|
|
50
|
-
return { type: 'image', mediaType: o.mediaType, data };
|
|
51
|
-
}
|
|
5
|
+
import { toolOutputForModel } from '../tool-output.js';
|
|
52
6
|
/** Appended to the system prompt while elision is active (see projection). */
|
|
53
7
|
export const ELISION_SYSTEM_NOTE = 'Context note: to stay within budget, older turns may appear as stubs like ' +
|
|
54
8
|
'`[output elided — recall("id") to view]` or `[elided user turn · recall({ seq: N })]`. ' +
|
|
@@ -99,6 +53,88 @@ export function buildSystemPromptWithSkills(baseSystemPrompt, skills) {
|
|
|
99
53
|
const skillBlock = `${header}\n${entries}`;
|
|
100
54
|
return baseSystemPrompt ? `${baseSystemPrompt}\n\n${skillBlock}` : skillBlock;
|
|
101
55
|
}
|
|
56
|
+
function hasModelPayload(att) {
|
|
57
|
+
return att.kind === 'image' || att.kind === 'document';
|
|
58
|
+
}
|
|
59
|
+
function attachmentLeftOutNote(att, seq, index) {
|
|
60
|
+
const label = `${att.kind}${att.name ? ` "${att.name}"` : ''}`;
|
|
61
|
+
const mb = (attachmentBytes(att) / (1024 * 1024)).toFixed(1);
|
|
62
|
+
return (`[${label} (${mb} MB) was attached earlier in this conversation and is no longer sent ` +
|
|
63
|
+
`with each request, to keep the request within the model's size limit. ` +
|
|
64
|
+
`To see it again, call recall({ attachment: "${attachmentKey(seq, index)}" }).]`);
|
|
65
|
+
}
|
|
66
|
+
/** The image or document block an attachment the model reads as bytes becomes. */
|
|
67
|
+
function attachmentBlock(att) {
|
|
68
|
+
if (att.kind === 'image') {
|
|
69
|
+
return { type: 'image', mediaType: att.mediaType ?? 'image/png', data: att.content };
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
type: 'document',
|
|
73
|
+
mediaType: att.mediaType ?? 'application/pdf',
|
|
74
|
+
data: att.content,
|
|
75
|
+
...(att.name ? { name: att.name } : {}),
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/** The prompts that carry attachments, by seq, so a restoring recall finds its original. */
|
|
79
|
+
function attachmentPromptsBySeq(events) {
|
|
80
|
+
const prompts = new Map();
|
|
81
|
+
for (const e of events) {
|
|
82
|
+
if (e.type === 'user_prompt' && e.attachments && e.attachments.length > 0)
|
|
83
|
+
prompts.set(e.seq, e);
|
|
84
|
+
}
|
|
85
|
+
return prompts;
|
|
86
|
+
}
|
|
87
|
+
/** The image/document a `recall({ attachment })` result brings back, or null. */
|
|
88
|
+
function restoredAttachment(e, prompts) {
|
|
89
|
+
if (!e.ok || e.error)
|
|
90
|
+
return null;
|
|
91
|
+
const ref = restoredAttachmentRef(e.output);
|
|
92
|
+
if (!ref)
|
|
93
|
+
return null;
|
|
94
|
+
const prompt = prompts.get(ref.seq);
|
|
95
|
+
const att = prompt ? prompt.attachments?.[ref.index] : undefined;
|
|
96
|
+
return att && hasModelPayload(att) && att.omittedBytes === undefined ? att : null;
|
|
97
|
+
}
|
|
98
|
+
/** The budget key of what a restoring recall result shows. */
|
|
99
|
+
const restoreKey = (seq) => `r:${seq}`;
|
|
100
|
+
/**
|
|
101
|
+
* Keys of the image/document payloads that go to the model in full: an
|
|
102
|
+
* attachment's `seq:index`, or `r:seq` for one a recall result restores.
|
|
103
|
+
* Newest first, while they fit {@link MODEL_ATTACHMENT_BUDGET_CHARS}, so a
|
|
104
|
+
* restored attachment takes its place among the newest. Deterministic for a
|
|
105
|
+
* given log, so the prompt cache sees a stable prefix.
|
|
106
|
+
*/
|
|
107
|
+
function attachmentsSentInFull(events, el, isCompacted, prompts) {
|
|
108
|
+
const keys = new Set();
|
|
109
|
+
let room = MODEL_ATTACHMENT_BUDGET_CHARS;
|
|
110
|
+
const take = (key, att) => {
|
|
111
|
+
if (att.content.length > room)
|
|
112
|
+
return;
|
|
113
|
+
room -= att.content.length;
|
|
114
|
+
keys.add(key);
|
|
115
|
+
};
|
|
116
|
+
for (let i = events.length - 1; i >= 0; i -= 1) {
|
|
117
|
+
const e = events[i];
|
|
118
|
+
if (!e || isCompacted(e.seq))
|
|
119
|
+
continue;
|
|
120
|
+
if (e.type === 'tool_result') {
|
|
121
|
+
if (toolResultStubbed(e, el))
|
|
122
|
+
continue;
|
|
123
|
+
const att = restoredAttachment(e, prompts);
|
|
124
|
+
if (att)
|
|
125
|
+
take(restoreKey(e.seq), att);
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
if (e.type !== 'user_prompt' || !e.attachments || conversationalStubbed(e, el))
|
|
129
|
+
continue;
|
|
130
|
+
for (const [index, att] of e.attachments.entries()) {
|
|
131
|
+
if (!hasModelPayload(att) || att.omittedBytes !== undefined)
|
|
132
|
+
continue;
|
|
133
|
+
take(attachmentKey(e.seq, index), att);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return keys;
|
|
137
|
+
}
|
|
102
138
|
/**
|
|
103
139
|
* Pure projection of a single `user_prompt` event to its content blocks.
|
|
104
140
|
*
|
|
@@ -108,28 +144,21 @@ export function buildSystemPromptWithSkills(baseSystemPrompt, skills) {
|
|
|
108
144
|
* what the inline switch arm produced. Caller decides how to wrap it as a
|
|
109
145
|
* message / record the stable prefix.
|
|
110
146
|
*/
|
|
111
|
-
export function projectUserPrompt(event, el
|
|
147
|
+
export function projectUserPrompt(event, el,
|
|
148
|
+
/** Which attachments go to the model in full; the rest become a short note. Default: all. */
|
|
149
|
+
sendsInFull = () => true) {
|
|
112
150
|
// Elided + conversational: collapse to a stub (anchor/tiny kept full).
|
|
113
151
|
if (conversationalStubbed(event, el)) {
|
|
114
152
|
return [{ type: 'text', text: conversationalStub('user', event.seq) }];
|
|
115
153
|
}
|
|
116
154
|
const blocks = [{ type: 'text', text: event.text }];
|
|
117
155
|
if (event.attachments) {
|
|
118
|
-
for (const att of event.attachments) {
|
|
119
|
-
if (att.
|
|
120
|
-
blocks.push({
|
|
121
|
-
type: 'image',
|
|
122
|
-
mediaType: att.mediaType ?? 'image/png',
|
|
123
|
-
data: att.content,
|
|
124
|
-
});
|
|
156
|
+
for (const [index, att] of event.attachments.entries()) {
|
|
157
|
+
if (att.omittedBytes !== undefined || (hasModelPayload(att) && !sendsInFull(index))) {
|
|
158
|
+
blocks.push({ type: 'text', text: attachmentLeftOutNote(att, event.seq, index) });
|
|
125
159
|
}
|
|
126
|
-
else if (att
|
|
127
|
-
blocks.push(
|
|
128
|
-
type: 'document',
|
|
129
|
-
mediaType: att.mediaType ?? 'application/pdf',
|
|
130
|
-
data: att.content,
|
|
131
|
-
...(att.name ? { name: att.name } : {}),
|
|
132
|
-
});
|
|
160
|
+
else if (hasModelPayload(att)) {
|
|
161
|
+
blocks.push(attachmentBlock(att));
|
|
133
162
|
}
|
|
134
163
|
else {
|
|
135
164
|
blocks.push({
|
|
@@ -208,6 +237,8 @@ export function projectMessages(ctx, opts = {}) {
|
|
|
208
237
|
// Only VISIBLE results count: one swallowed by a compaction is never sent, so
|
|
209
238
|
// its still-visible tool_use needs the fallback just like a missing one.
|
|
210
239
|
const resolvedCallIds = resolvedCallIdSet(allEvents.filter((e) => !compactionFor(e.seq)));
|
|
240
|
+
const attachmentPrompts = attachmentPromptsBySeq(allEvents);
|
|
241
|
+
const sentInFull = attachmentsSentInFull(allEvents, el, (seq) => compactionFor(seq) !== null, attachmentPrompts);
|
|
211
242
|
// callIds whose tool_use block is projected. A tool_result outside this set
|
|
212
243
|
// answers a call a compaction summarized away (the result landed after later
|
|
213
244
|
// turns began); providers reject a result with no matching call.
|
|
@@ -276,7 +307,10 @@ export function projectMessages(ctx, opts = {}) {
|
|
|
276
307
|
case 'user_prompt': {
|
|
277
308
|
flush();
|
|
278
309
|
pendingReasoning = null;
|
|
279
|
-
messages.push({
|
|
310
|
+
messages.push({
|
|
311
|
+
role: 'user',
|
|
312
|
+
content: projectUserPrompt(e, el, (index) => sentInFull.has(`${e.seq}:${index}`)),
|
|
313
|
+
});
|
|
280
314
|
recordStable(e.seq);
|
|
281
315
|
break;
|
|
282
316
|
}
|
|
@@ -357,37 +391,44 @@ export function projectMessages(ctx, opts = {}) {
|
|
|
357
391
|
// Stub bulky old tool output to a recall-able marker (decision shared
|
|
358
392
|
// with estimateContextTokens via toolResultStubbed).
|
|
359
393
|
let text;
|
|
360
|
-
// An image-shaped output (a screenshot/clipboard grab) is carried as
|
|
361
|
-
// provider `image`
|
|
394
|
+
// An image-shaped output (a screenshot/clipboard grab) is carried as
|
|
395
|
+
// provider `image` blocks so the model SEES the pixels — only when the
|
|
362
396
|
// result isn't stubbed (elided) or an error and the call succeeded.
|
|
363
|
-
let
|
|
397
|
+
let images = [];
|
|
398
|
+
// A `recall({ attachment })` result: the original image/document goes
|
|
399
|
+
// beside it, from the prompt that carried it, while the budget allows.
|
|
400
|
+
let restored = null;
|
|
401
|
+
const restoredAtt = toolResultStubbed(e, el) ? null : restoredAttachment(e, attachmentPrompts);
|
|
364
402
|
if (toolResultStubbed(e, el)) {
|
|
365
403
|
text = toolResultStubText(e, el);
|
|
366
404
|
}
|
|
367
405
|
else if (e.error) {
|
|
368
406
|
text = `[error:${e.error.kind}] ${e.error.message}`;
|
|
369
407
|
}
|
|
370
|
-
else if (
|
|
371
|
-
// Rich result (e.g. a file diff): the model only needs the short
|
|
372
|
-
// `forModel` summary — the structured `display` is for channels.
|
|
373
|
-
text = e.output.forModel;
|
|
374
|
-
}
|
|
375
|
-
else if (e.ok && (image = imageBlockFromOutput(e.output))) {
|
|
376
|
-
// Short marker satisfies the tool_use→tool_result pairing; the image
|
|
377
|
-
// block (appended below) carries the actual pixels.
|
|
408
|
+
else if (restoredAtt) {
|
|
378
409
|
const description = e.output.forModel;
|
|
379
|
-
text = typeof description === 'string'
|
|
380
|
-
|
|
381
|
-
|
|
410
|
+
text = typeof description === 'string' ? description : '[attachment restored — see below]';
|
|
411
|
+
if (sentInFull.has(restoreKey(e.seq))) {
|
|
412
|
+
restored = attachmentBlock(restoredAtt);
|
|
413
|
+
}
|
|
414
|
+
else {
|
|
415
|
+
text +=
|
|
416
|
+
' [It could not be shown again: newer attachments already fill what one request may carry.' +
|
|
417
|
+
' Ask the person to attach it again if you need it now.]';
|
|
418
|
+
}
|
|
382
419
|
}
|
|
383
420
|
else {
|
|
384
|
-
|
|
421
|
+
const forModel = toolOutputForModel(e.output);
|
|
422
|
+
text = forModel.text;
|
|
423
|
+
if (e.ok)
|
|
424
|
+
images = forModel.images;
|
|
385
425
|
}
|
|
386
426
|
const content = [
|
|
387
427
|
{ type: 'tool_result', toolUseId: e.callId, content: text, isError: !e.ok },
|
|
428
|
+
...images,
|
|
388
429
|
];
|
|
389
|
-
if (
|
|
390
|
-
content.push(
|
|
430
|
+
if (restored)
|
|
431
|
+
content.push(restored);
|
|
391
432
|
messages.push({ role: 'tool_result', content });
|
|
392
433
|
recordStable(e.seq);
|
|
393
434
|
break;
|