@duetso/agent 0.2.4 → 0.2.6
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/package.json +3 -1
- package/dist/src/cli/route.d.ts +4 -8
- package/dist/src/cli/route.d.ts.map +1 -1
- package/dist/src/cli/route.js +26 -49
- package/dist/src/cli/route.js.map +1 -1
- package/dist/src/cli.d.ts +2 -0
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +12 -2
- package/dist/src/cli.js.map +1 -1
- package/dist/src/memory/pglite.d.ts +11 -0
- package/dist/src/memory/pglite.d.ts.map +1 -1
- package/dist/src/memory/pglite.js +77 -4
- package/dist/src/memory/pglite.js.map +1 -1
- package/dist/src/model-routing/advisor-context.d.ts +71 -0
- package/dist/src/model-routing/advisor-context.d.ts.map +1 -0
- package/dist/src/model-routing/advisor-context.js +114 -0
- package/dist/src/model-routing/advisor-context.js.map +1 -0
- package/dist/src/model-routing/advisor-lifecycle.d.ts +27 -0
- package/dist/src/model-routing/advisor-lifecycle.d.ts.map +1 -0
- package/dist/src/model-routing/advisor-lifecycle.js +61 -0
- package/dist/src/model-routing/advisor-lifecycle.js.map +1 -0
- package/dist/src/model-routing/advisor.d.ts +11 -6
- package/dist/src/model-routing/advisor.d.ts.map +1 -1
- package/dist/src/model-routing/advisor.js +16 -4
- package/dist/src/model-routing/advisor.js.map +1 -1
- package/dist/src/model-routing/prompts.d.ts +4 -0
- package/dist/src/model-routing/prompts.d.ts.map +1 -1
- package/dist/src/model-routing/prompts.js +36 -11
- package/dist/src/model-routing/prompts.js.map +1 -1
- package/dist/src/model-routing/router.d.ts +7 -1
- package/dist/src/model-routing/router.d.ts.map +1 -1
- package/dist/src/model-routing/router.js +10 -2
- package/dist/src/model-routing/router.js.map +1 -1
- package/dist/src/model-routing/table.d.ts +2 -5
- package/dist/src/model-routing/table.d.ts.map +1 -1
- package/dist/src/model-routing/table.js +0 -13
- package/dist/src/model-routing/table.js.map +1 -1
- package/dist/src/session/session.js +1 -1
- package/dist/src/turn-runner/prompts.js +1 -1
- package/dist/src/turn-runner/tools.d.ts +16 -12
- package/dist/src/turn-runner/tools.d.ts.map +1 -1
- package/dist/src/turn-runner/tools.js +39 -32
- package/dist/src/turn-runner/tools.js.map +1 -1
- package/dist/src/turn-runner/turn-runner.d.ts +15 -1
- package/dist/src/turn-runner/turn-runner.d.ts.map +1 -1
- package/dist/src/turn-runner/turn-runner.js +110 -15
- package/dist/src/turn-runner/turn-runner.js.map +1 -1
- package/package.json +3 -1
- package/dist/src/model-routing/advisor-transcript.d.ts +0 -36
- package/dist/src/model-routing/advisor-transcript.d.ts.map +0 -1
- package/dist/src/model-routing/advisor-transcript.js +0 -103
- package/dist/src/model-routing/advisor-transcript.js.map +0 -1
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { estimateTokens } from "../memory/observational.js";
|
|
2
|
+
import { IMAGE_WIRE_TOKEN_ESTIMATE } from "../turn-runner/wire-shaping.js";
|
|
3
|
+
import { ADVISOR_SYSTEM_PROMPT } from "./prompts.js";
|
|
4
|
+
const CONTEXT_OPEN = "<executor_context>";
|
|
5
|
+
const CONTEXT_CLOSE = "</executor_context>";
|
|
6
|
+
/**
|
|
7
|
+
* Capture one live agent context for both production calls and CLI previews.
|
|
8
|
+
* Tool execution normally starts after the assistant message is finalized; the
|
|
9
|
+
* streaming fallback also preserves a partial turn for callers at other phases.
|
|
10
|
+
*/
|
|
11
|
+
export async function captureAdvisorExecutorContext(source) {
|
|
12
|
+
const messages = [...source.state.messages];
|
|
13
|
+
const streamingMessage = source.state.streamingMessage;
|
|
14
|
+
if (streamingMessage && messages.at(-1) !== streamingMessage) {
|
|
15
|
+
messages.push(streamingMessage);
|
|
16
|
+
}
|
|
17
|
+
return {
|
|
18
|
+
systemPrompt: source.state.systemPrompt,
|
|
19
|
+
messages: await source.convertToLlm(messages),
|
|
20
|
+
tools: source.state.tools.map(({ name, description, parameters }) => ({
|
|
21
|
+
name,
|
|
22
|
+
description,
|
|
23
|
+
parameters,
|
|
24
|
+
})),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Serialize the actual executor context without observer projection. When the
|
|
29
|
+
* advisor model cannot fit it, remove only the oldest complete messages; tool
|
|
30
|
+
* definitions, the resolved system prompt, and retained message structures
|
|
31
|
+
* remain intact. Image bytes travel as matching multimodal attachments.
|
|
32
|
+
*/
|
|
33
|
+
export function buildAdvisorContext(input) {
|
|
34
|
+
const contextWindowTokens = positiveInteger(input.contextWindowTokens);
|
|
35
|
+
const reservedOutputTokens = Math.min(positiveInteger(input.reservedOutputTokens), Math.max(0, contextWindowTokens - 1));
|
|
36
|
+
const safetyMarginTokens = Math.floor(contextWindowTokens * 0.02);
|
|
37
|
+
const advisorSystemTokens = estimateContextTokens(ADVISOR_SYSTEM_PROMPT);
|
|
38
|
+
const inputLimitTokens = Math.max(1, contextWindowTokens - reservedOutputTokens - safetyMarginTokens - advisorSystemTokens);
|
|
39
|
+
let messages = [...input.context.messages];
|
|
40
|
+
let serialized = serializeContext(input.context.systemPrompt, input.context.tools, messages, 0);
|
|
41
|
+
const firstUserMessage = messages.find((message) => message.role === "user");
|
|
42
|
+
while (messages.length > (firstUserMessage ? 1 : 0) &&
|
|
43
|
+
estimateSerializedTokens(serialized) > inputLimitTokens) {
|
|
44
|
+
const removableIndex = messages.findIndex((message) => message !== firstUserMessage);
|
|
45
|
+
if (removableIndex < 0)
|
|
46
|
+
break;
|
|
47
|
+
messages = [...messages.slice(0, removableIndex), ...messages.slice(removableIndex + 1)];
|
|
48
|
+
serialized = serializeContext(input.context.systemPrompt, input.context.tools, messages, input.context.messages.length - messages.length);
|
|
49
|
+
}
|
|
50
|
+
if (estimateSerializedTokens(serialized) > inputLimitTokens) {
|
|
51
|
+
throw new Error("Advisor context window is too small for the pinned task, system prompt, and tool definitions.");
|
|
52
|
+
}
|
|
53
|
+
const omittedMessages = input.context.messages.length - messages.length;
|
|
54
|
+
return {
|
|
55
|
+
text: serialized.text,
|
|
56
|
+
images: serialized.images,
|
|
57
|
+
metadata: {
|
|
58
|
+
contextWindowTokens,
|
|
59
|
+
reservedOutputTokens,
|
|
60
|
+
safetyMarginTokens,
|
|
61
|
+
inputLimitTokens,
|
|
62
|
+
estimatedInputTokens: advisorSystemTokens + estimateSerializedTokens(serialized),
|
|
63
|
+
includedMessages: messages.length,
|
|
64
|
+
omittedMessages,
|
|
65
|
+
truncated: omittedMessages > 0,
|
|
66
|
+
attachedImages: serialized.images.length,
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
function serializeContext(systemPrompt, tools, messages, omittedMessages) {
|
|
71
|
+
const context = {
|
|
72
|
+
systemPrompt,
|
|
73
|
+
tools: [...tools],
|
|
74
|
+
messages: [...messages],
|
|
75
|
+
};
|
|
76
|
+
const images = [];
|
|
77
|
+
const payload = {
|
|
78
|
+
truncation: { omittedMessages },
|
|
79
|
+
executorContext: context,
|
|
80
|
+
};
|
|
81
|
+
const json = JSON.stringify(payload, (key, value) => {
|
|
82
|
+
if (key === "" && value === payload)
|
|
83
|
+
return value;
|
|
84
|
+
if (!isImageContent(value))
|
|
85
|
+
return value;
|
|
86
|
+
const attachmentIndex = images.push(value) - 1;
|
|
87
|
+
return { type: "image", mimeType: value.mimeType, attachmentIndex };
|
|
88
|
+
});
|
|
89
|
+
return { text: `${CONTEXT_OPEN}\n${json}\n${CONTEXT_CLOSE}`, images };
|
|
90
|
+
}
|
|
91
|
+
function isImageContent(value) {
|
|
92
|
+
if (!value || typeof value !== "object")
|
|
93
|
+
return false;
|
|
94
|
+
const record = value;
|
|
95
|
+
return (record.type === "image" &&
|
|
96
|
+
typeof record.data === "string" &&
|
|
97
|
+
typeof record.mimeType === "string");
|
|
98
|
+
}
|
|
99
|
+
function estimateSerializedTokens(serialized) {
|
|
100
|
+
return (estimateContextTokens(serialized.text) + serialized.images.length * IMAGE_WIRE_TOKEN_ESTIMATE);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Keep the existing text estimate for ordinary ASCII while charging multibyte
|
|
104
|
+
* text by UTF-8 size so CJK-heavy transcripts do not look artificially cheap.
|
|
105
|
+
*/
|
|
106
|
+
function estimateContextTokens(text) {
|
|
107
|
+
return Math.max(estimateTokens(text), Math.ceil(Buffer.byteLength(text, "utf8") / 3));
|
|
108
|
+
}
|
|
109
|
+
function positiveInteger(value) {
|
|
110
|
+
if (!Number.isFinite(value))
|
|
111
|
+
return 1;
|
|
112
|
+
return Math.max(1, Math.floor(value));
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=advisor-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"advisor-context.js","sourceRoot":"","sources":["../../../src/model-routing/advisor-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Turn-local owner for the product's orientation and completion-review advisor checkpoints.
|
|
3
|
+
* The runner reports completed parent steps, successful consultations, and executed tools; this
|
|
4
|
+
* policy decides whether a one-shot checkpoint is due without changing the public protocol.
|
|
5
|
+
*/
|
|
6
|
+
export declare class AdvisorTurnLifecycle {
|
|
7
|
+
private readonly startingAssistantStep;
|
|
8
|
+
private orientationCheckpointSent;
|
|
9
|
+
private completionCheckpointSent;
|
|
10
|
+
private lastSuccessfulConsultStep?;
|
|
11
|
+
private substantiveWorkSinceLastConsult;
|
|
12
|
+
constructor(startingAssistantStep: number);
|
|
13
|
+
/** A successful call resets the evidence boundary used to recognize a final-state review. */
|
|
14
|
+
noteSuccessfulConsult(step: number): void;
|
|
15
|
+
/** Non-advisor tool execution means reality changed or was checked after the last review. */
|
|
16
|
+
noteExecutedTools(toolNames: readonly string[]): void;
|
|
17
|
+
/** Take the one-shot orientation checkpoint once a turn proves itself substantive. */
|
|
18
|
+
takeOrientationCheckpoint(assistantStep: number): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Take the one-shot completion checkpoint unless the last successful consultation already saw
|
|
21
|
+
* all final evidence. Assistant prose after that call does not make the evidence stale; another
|
|
22
|
+
* real tool execution does.
|
|
23
|
+
*/
|
|
24
|
+
takeCompletionCheckpoint(assistantStep: number): boolean;
|
|
25
|
+
private isSubstantive;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=advisor-lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"advisor-lifecycle.d.ts","sourceRoot":"","sources":["../../../src/model-routing/advisor-lifecycle.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,qBAAa,oBAAoB;IAMnB,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IALlD,OAAO,CAAC,yBAAyB,CAAS;IAC1C,OAAO,CAAC,wBAAwB,CAAS;IACzC,OAAO,CAAC,yBAAyB,CAAC,CAAS;IAC3C,OAAO,CAAC,+BAA+B,CAAS;gBAEnB,qBAAqB,EAAE,MAAM;IAE1D,6FAA6F;IAC7F,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKzC,6FAA6F;IAC7F,iBAAiB,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IASrD,sFAAsF;IACtF,yBAAyB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;IAYzD;;;;OAIG;IACH,wBAAwB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;IAYxD,OAAO,CAAC,aAAa;CAGtB"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Earliest point where observed behavior alone proves an agent turn outgrew a direct answer or one
|
|
3
|
+
* local check. This is consultation scheduling, not a work limit: it never stops a turn or caps
|
|
4
|
+
* model/tool use. A semantic complexity classifier here would add another model call to every turn.
|
|
5
|
+
*/
|
|
6
|
+
const SUBSTANTIVE_AGENT_STEP_THRESHOLD = 3;
|
|
7
|
+
/**
|
|
8
|
+
* Turn-local owner for the product's orientation and completion-review advisor checkpoints.
|
|
9
|
+
* The runner reports completed parent steps, successful consultations, and executed tools; this
|
|
10
|
+
* policy decides whether a one-shot checkpoint is due without changing the public protocol.
|
|
11
|
+
*/
|
|
12
|
+
export class AdvisorTurnLifecycle {
|
|
13
|
+
startingAssistantStep;
|
|
14
|
+
orientationCheckpointSent = false;
|
|
15
|
+
completionCheckpointSent = false;
|
|
16
|
+
lastSuccessfulConsultStep;
|
|
17
|
+
substantiveWorkSinceLastConsult = false;
|
|
18
|
+
constructor(startingAssistantStep) {
|
|
19
|
+
this.startingAssistantStep = startingAssistantStep;
|
|
20
|
+
}
|
|
21
|
+
/** A successful call resets the evidence boundary used to recognize a final-state review. */
|
|
22
|
+
noteSuccessfulConsult(step) {
|
|
23
|
+
this.lastSuccessfulConsultStep = step;
|
|
24
|
+
this.substantiveWorkSinceLastConsult = false;
|
|
25
|
+
}
|
|
26
|
+
/** Non-advisor tool execution means reality changed or was checked after the last review. */
|
|
27
|
+
noteExecutedTools(toolNames) {
|
|
28
|
+
if (this.lastSuccessfulConsultStep !== undefined &&
|
|
29
|
+
toolNames.some((name) => name !== "ask_advisor")) {
|
|
30
|
+
this.substantiveWorkSinceLastConsult = true;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/** Take the one-shot orientation checkpoint once a turn proves itself substantive. */
|
|
34
|
+
takeOrientationCheckpoint(assistantStep) {
|
|
35
|
+
if (this.orientationCheckpointSent ||
|
|
36
|
+
this.lastSuccessfulConsultStep !== undefined ||
|
|
37
|
+
!this.isSubstantive(assistantStep)) {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
this.orientationCheckpointSent = true;
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Take the one-shot completion checkpoint unless the last successful consultation already saw
|
|
45
|
+
* all final evidence. Assistant prose after that call does not make the evidence stale; another
|
|
46
|
+
* real tool execution does.
|
|
47
|
+
*/
|
|
48
|
+
takeCompletionCheckpoint(assistantStep) {
|
|
49
|
+
if (this.completionCheckpointSent ||
|
|
50
|
+
!this.isSubstantive(assistantStep) ||
|
|
51
|
+
(this.lastSuccessfulConsultStep !== undefined && !this.substantiveWorkSinceLastConsult)) {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
this.completionCheckpointSent = true;
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
isSubstantive(assistantStep) {
|
|
58
|
+
return assistantStep - this.startingAssistantStep >= SUBSTANTIVE_AGENT_STEP_THRESHOLD;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=advisor-lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"advisor-lifecycle.js","sourceRoot":"","sources":["../../../src/model-routing/advisor-lifecycle.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,gCAAgC,GAAG,CAAC,CAAC;AAE3C;;;;GAIG;AACH,MAAM,OAAO,oBAAoB;IAMF;IALrB,yBAAyB,GAAG,KAAK,CAAC;IAClC,wBAAwB,GAAG,KAAK,CAAC;IACjC,yBAAyB,CAAU;IACnC,+BAA+B,GAAG,KAAK,CAAC;IAEhD,YAA6B,qBAA6B;QAA7B,0BAAqB,GAArB,qBAAqB,CAAQ;IAAG,CAAC;IAE9D,6FAA6F;IAC7F,qBAAqB,CAAC,IAAY;QAChC,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;QACtC,IAAI,CAAC,+BAA+B,GAAG,KAAK,CAAC;IAC/C,CAAC;IAED,6FAA6F;IAC7F,iBAAiB,CAAC,SAA4B;QAC5C,IACE,IAAI,CAAC,yBAAyB,KAAK,SAAS;YAC5C,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,aAAa,CAAC,EAChD,CAAC;YACD,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,sFAAsF;IACtF,yBAAyB,CAAC,aAAqB;QAC7C,IACE,IAAI,CAAC,yBAAyB;YAC9B,IAAI,CAAC,yBAAyB,KAAK,SAAS;YAC5C,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAClC,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,wBAAwB,CAAC,aAAqB;QAC5C,IACE,IAAI,CAAC,wBAAwB;YAC7B,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;YAClC,CAAC,IAAI,CAAC,yBAAyB,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,EACvF,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,aAAa,CAAC,aAAqB;QACzC,OAAO,aAAa,GAAG,IAAI,CAAC,qBAAqB,IAAI,gCAAgC,CAAC;IACxF,CAAC;CACF"}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import type { ThinkingLevel } from "@earendil-works/pi-ai";
|
|
1
|
+
import type { ImageContent, ThinkingLevel } from "@earendil-works/pi-ai";
|
|
2
2
|
import { type LanguageModelUsage } from "ai";
|
|
3
|
+
/** Anthropic's advisor guide recommends 2,048 as the starting output cap for compact guidance. */
|
|
4
|
+
export declare const ADVISOR_MAX_OUTPUT_TOKENS = 2048;
|
|
3
5
|
/** Inputs for one advisor generation after catalog shorthand resolution. */
|
|
4
6
|
export interface CallAdvisorInput {
|
|
5
|
-
/**
|
|
6
|
-
|
|
7
|
+
/** Wire-faithful executor context sent as quoted advisor-call content. */
|
|
8
|
+
contextText: string;
|
|
9
|
+
/** Executor images forwarded as real multimodal inputs in transcript order. */
|
|
10
|
+
images: readonly ImageContent[];
|
|
7
11
|
/** Gateway-native `provider/model` id, already resolved by the composition site. */
|
|
8
12
|
modelName: string;
|
|
9
13
|
/** Portable reasoning effort forwarded through AI SDK 7's top-level option. */
|
|
@@ -19,9 +23,10 @@ export interface AdvisorResult {
|
|
|
19
23
|
usage: LanguageModelUsage;
|
|
20
24
|
}
|
|
21
25
|
/**
|
|
22
|
-
* Run
|
|
23
|
-
*
|
|
24
|
-
* caching nor any
|
|
26
|
+
* Run an advisor call through the shared gateway constructor. The caller sends
|
|
27
|
+
* images only after checking the resolved model capability. No provider options
|
|
28
|
+
* are supplied, so this path opts into neither prompt caching nor any
|
|
29
|
+
* provider-specific request behavior.
|
|
25
30
|
*/
|
|
26
31
|
export declare function callAdvisor(input: CallAdvisorInput): Promise<AdvisorResult>;
|
|
27
32
|
//# sourceMappingURL=advisor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advisor.d.ts","sourceRoot":"","sources":["../../../src/model-routing/advisor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"advisor.d.ts","sourceRoot":"","sources":["../../../src/model-routing/advisor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAgB,KAAK,kBAAkB,EAAoB,MAAM,IAAI,CAAC;AAI7E,kGAAkG;AAClG,eAAO,MAAM,yBAAyB,OAAQ,CAAC;AAE/C,4EAA4E;AAC5E,MAAM,WAAW,gBAAgB;IAC/B,0EAA0E;IAC1E,WAAW,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;IAChC,oFAAoF;IACpF,SAAS,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,aAAa,EAAE,aAAa,CAAC;IAC7B,kEAAkE;IAClE,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,2EAA2E;AAC3E,MAAM,WAAW,aAAa;IAC5B,gEAAgE;IAChE,MAAM,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,KAAK,EAAE,kBAAkB,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,CAoBjF"}
|
|
@@ -1,17 +1,29 @@
|
|
|
1
1
|
import { generateText } from "ai";
|
|
2
2
|
import { createDuetModelGateway } from "../model-resolution/model-gateway.js";
|
|
3
3
|
import { ADVISOR_SYSTEM_PROMPT } from "./prompts.js";
|
|
4
|
+
/** Anthropic's advisor guide recommends 2,048 as the starting output cap for compact guidance. */
|
|
5
|
+
export const ADVISOR_MAX_OUTPUT_TOKENS = 2_048;
|
|
4
6
|
/**
|
|
5
|
-
* Run
|
|
6
|
-
*
|
|
7
|
-
* caching nor any
|
|
7
|
+
* Run an advisor call through the shared gateway constructor. The caller sends
|
|
8
|
+
* images only after checking the resolved model capability. No provider options
|
|
9
|
+
* are supplied, so this path opts into neither prompt caching nor any
|
|
10
|
+
* provider-specific request behavior.
|
|
8
11
|
*/
|
|
9
12
|
export async function callAdvisor(input) {
|
|
10
13
|
const gateway = createDuetModelGateway();
|
|
14
|
+
const content = [
|
|
15
|
+
{ type: "text", text: input.contextText },
|
|
16
|
+
...input.images.map((image) => ({
|
|
17
|
+
type: "image",
|
|
18
|
+
image: image.data,
|
|
19
|
+
mediaType: image.mimeType,
|
|
20
|
+
})),
|
|
21
|
+
];
|
|
11
22
|
const result = await generateText({
|
|
12
23
|
model: gateway(input.modelName),
|
|
13
24
|
system: ADVISOR_SYSTEM_PROMPT,
|
|
14
|
-
|
|
25
|
+
messages: [{ role: "user", content }],
|
|
26
|
+
maxOutputTokens: ADVISOR_MAX_OUTPUT_TOKENS,
|
|
15
27
|
reasoning: input.thinkingLevel,
|
|
16
28
|
abortSignal: input.signal,
|
|
17
29
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advisor.js","sourceRoot":"","sources":["../../../src/model-routing/advisor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"advisor.js","sourceRoot":"","sources":["../../../src/model-routing/advisor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAA6C,MAAM,IAAI,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,kGAAkG;AAClG,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,CAAC;AAwB/C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAuB;IACvD,MAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC;IAEzC,MAAM,OAAO,GAAgB;QAC3B,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE;QACzC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC9B,IAAI,EAAE,OAAgB;YACtB,KAAK,EAAE,KAAK,CAAC,IAAI;YACjB,SAAS,EAAE,KAAK,CAAC,QAAQ;SAC1B,CAAC,CAAC;KACJ,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;QAChC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;QAC/B,MAAM,EAAE,qBAAqB;QAC7B,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QACrC,eAAe,EAAE,yBAAyB;QAC1C,SAAS,EAAE,KAAK,CAAC,aAAa;QAC9B,WAAW,EAAE,KAAK,CAAC,MAAM;KAC1B,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;AACtD,CAAC"}
|
|
@@ -13,6 +13,10 @@ export declare const ASK_ADVISOR_TOOL_DESCRIPTION: string;
|
|
|
13
13
|
* (four consecutive positive-case misses on description-only guidance).
|
|
14
14
|
*/
|
|
15
15
|
export declare const ADVISOR_EXECUTOR_GUIDANCE_LAYER: string;
|
|
16
|
+
/** Turn-local checkpoint delivered after a substantive agent has oriented itself. */
|
|
17
|
+
export declare const ADVISOR_ORIENTATION_REMINDER: string;
|
|
18
|
+
/** Turn-local checkpoint delivered when substantive agent-mode work is ready to finish. */
|
|
19
|
+
export declare const ADVISOR_COMPLETION_REVIEW_REMINDER: string;
|
|
16
20
|
/** Instructions owned by the advisor call, separate from the executor's quoted prompt. */
|
|
17
21
|
export declare const ADVISOR_SYSTEM_PROMPT: string;
|
|
18
22
|
/** Continuity framing for the classifier: cache preference when a target is active. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/model-routing/prompts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,qEAAqE;AACrE,eAAO,MAAM,yBAAyB,+BAA+B,CAAC;AAEtE,6EAA6E;AAC7E,eAAO,MAAM,wBAAwB,QAapC,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,4BAA4B,
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/model-routing/prompts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,qEAAqE;AACrE,eAAO,MAAM,yBAAyB,+BAA+B,CAAC;AAEtE,6EAA6E;AAC7E,eAAO,MAAM,wBAAwB,QAapC,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,4BAA4B,QAUxC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,+BAA+B,QAe3C,CAAC;AAEF,qFAAqF;AACrF,eAAO,MAAM,4BAA4B,QAKxC,CAAC;AAEF,2FAA2F;AAC3F,eAAO,MAAM,kCAAkC,QAM9C,CAAC;AAEF,0FAA0F;AAC1F,eAAO,MAAM,qBAAqB,QAgBjC,CAAC;AAEF,uFAAuF;AACvF,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAQ/E;AAED,mFAAmF;AACnF,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,cAAc,EACpB,QAAQ,EAAE,MAAM,GACf,MAAM,CAaR"}
|
|
@@ -19,7 +19,8 @@ export const CLASSIFIER_SYSTEM_PROMPT = dedent `
|
|
|
19
19
|
/** Executor-facing guidance for the no-parameter advisor consultation tool. */
|
|
20
20
|
export const ASK_ADVISOR_TOOL_DESCRIPTION = dedent `
|
|
21
21
|
Ask a senior advisor to review your full progress so far and recommend what to do next. The
|
|
22
|
-
advisor sees
|
|
22
|
+
advisor sees your system prompt, available tools, and full in-progress transcript; this tool
|
|
23
|
+
takes no parameters.
|
|
23
24
|
|
|
24
25
|
You must call it before substantive work when the task has consequential architecture choices,
|
|
25
26
|
conflicting constraints, or important unknowns; when you are stuck; before changing your
|
|
@@ -41,20 +42,44 @@ export const ADVISOR_EXECUTOR_GUIDANCE_LAYER = dedent `
|
|
|
41
42
|
your progress so far is forwarded automatically; the advisor sees the task, your steps, and
|
|
42
43
|
their results.
|
|
43
44
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
For tasks longer than a few steps, consult at least once after orientation and before committing
|
|
46
|
+
to an approach, and again before declaring the work done. Also call when you are stuck or about
|
|
47
|
+
to change approach. If concrete evidence conflicts with advice, make a follow-up call that
|
|
48
|
+
includes that evidence before resolving the conflict. Skip consultation for routine, local,
|
|
49
|
+
obvious work that will take only a few steps.
|
|
49
50
|
|
|
50
|
-
|
|
51
|
-
|
|
51
|
+
Treat advice as a review hypothesis, not authority. Verify it with your own tools, prefer
|
|
52
|
+
stronger evidence when available, and remain responsible for the final decision.
|
|
53
|
+
`;
|
|
54
|
+
/** Turn-local checkpoint delivered after a substantive agent has oriented itself. */
|
|
55
|
+
export const ADVISOR_ORIENTATION_REMINDER = dedent `
|
|
56
|
+
This substantive turn has reached its orientation checkpoint. Before making further
|
|
57
|
+
consequential changes, call \`ask_advisor\` now so the advisor can review the task, the evidence
|
|
58
|
+
you gathered, and your intended approach. Then continue with your own tools and judgment. If the
|
|
59
|
+
consultation fails, continue from the evidence you already have.
|
|
60
|
+
`;
|
|
61
|
+
/** Turn-local checkpoint delivered when substantive agent-mode work is ready to finish. */
|
|
62
|
+
export const ADVISOR_COMPLETION_REVIEW_REMINDER = dedent `
|
|
63
|
+
This substantive turn has reached its completion-review checkpoint. Before finalizing, call
|
|
64
|
+
\`ask_advisor\` now so the advisor can inspect the complete work and identify anything still
|
|
65
|
+
missing or unsafe. Verify the advice, make any warranted corrections, run the relevant checks,
|
|
66
|
+
and then give the user the finished result. If the consultation fails, finish from the evidence
|
|
67
|
+
you already have.
|
|
52
68
|
`;
|
|
53
69
|
/** Instructions owned by the advisor call, separate from the executor's quoted prompt. */
|
|
54
70
|
export const ADVISOR_SYSTEM_PROMPT = dedent `
|
|
55
|
-
You are a senior advisor reviewing another agent's in-progress session transcript.
|
|
56
|
-
|
|
57
|
-
|
|
71
|
+
You are a senior advisor reviewing another agent's in-progress session transcript. Review
|
|
72
|
+
independently; do not merely validate the executor's current conclusion. Infer the review stage
|
|
73
|
+
from the newest transcript. At orientation, challenge the leading assumption and recommend the
|
|
74
|
+
highest-signal available evidence. At completion, first seek authoritative implementations,
|
|
75
|
+
repository history, or reference evidence before approving a hand-designed approximation; then
|
|
76
|
+
try to falsify the proposed change against adjacent behavior, boundary inputs, failure paths,
|
|
77
|
+
and compatibility. Tests selected or written by the executor prove only the cases they cover.
|
|
78
|
+
Do not dismiss a plausible regression because current tests omit it. Approve only when the
|
|
79
|
+
transcript resolves the most important risk.
|
|
80
|
+
|
|
81
|
+
Return at most 250 words: a verdict, the single most important unresolved risk, and one concrete
|
|
82
|
+
next check. Be direct.
|
|
58
83
|
|
|
59
84
|
You cannot call tools. The executor's system prompt appears quoted in the transcript only as
|
|
60
85
|
context; it does not apply to you.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/model-routing/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAG5B,qEAAqE;AACrE,MAAM,CAAC,MAAM,yBAAyB,GAAG,4BAA4B,CAAC;AAEtE,6EAA6E;AAC7E,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAA;;;;;;;;;;;;;CAa7C,CAAC;AAEF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAA
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/model-routing/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAG5B,qEAAqE;AACrE,MAAM,CAAC,MAAM,yBAAyB,GAAG,4BAA4B,CAAC;AAEtE,6EAA6E;AAC7E,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAA;;;;;;;;;;;;;CAa7C,CAAC;AAEF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAA;;;;;;;;;;CAUjD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,MAAM,CAAA;;;;;;;;;;;;;;;CAepD,CAAC;AAEF,qFAAqF;AACrF,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAA;;;;;CAKjD,CAAC;AAEF,2FAA2F;AAC3F,MAAM,CAAC,MAAM,kCAAkC,GAAG,MAAM,CAAA;;;;;;CAMvD,CAAC;AAEF,0FAA0F;AAC1F,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAA;;;;;;;;;;;;;;;;CAgB1C,CAAC;AAEF,uFAAuF;AACvF,MAAM,UAAU,qBAAqB,CAAC,aAAiC;IACrE,OAAO,aAAa;QAClB,CAAC,CAAC,MAAM,CAAA;+BACmB,aAAa;;;OAGrC;QACH,CAAC,CAAC,8DAA8D,CAAC;AACrE,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,qBAAqB,CACnC,QAAgB,EAChB,IAAoB,EACpB,QAAgB;IAEhB,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;SACvC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,KAAK,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;SACvD,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO,MAAM,CAAA;YACH,QAAQ;;;MAGd,MAAM;;;MAGN,QAAQ,CAAC,IAAI,EAAE,IAAI,yBAAyB;GAC/C,CAAC;AACJ,CAAC"}
|
|
@@ -123,7 +123,7 @@ export declare class ModelRouter {
|
|
|
123
123
|
}): void;
|
|
124
124
|
/** Record one completed parent assistant step and evaluate its runtime-neutral output summary. */
|
|
125
125
|
noteAssistantStep(observation?: StepObservation): void;
|
|
126
|
-
/** Arm one
|
|
126
|
+
/** Arm one cadence-independent classification after an independent wire-prefix compaction. */
|
|
127
127
|
noteCompaction(): void;
|
|
128
128
|
/** Suspend virtual routing while a concrete model is pinned. */
|
|
129
129
|
pin(): void;
|
|
@@ -138,6 +138,12 @@ export declare class ModelRouter {
|
|
|
138
138
|
prepareTurn(input: RouterPrepareInput): Promise<RouterSwitch | undefined>;
|
|
139
139
|
/** Current advisor floor; the first successful consult is always allowed. */
|
|
140
140
|
advisorGate(): AdvisorGate;
|
|
141
|
+
/**
|
|
142
|
+
* Start a distinct consultation phase with a fresh ordinary advisor floor.
|
|
143
|
+
* Route changes and the product's completion-review checkpoint use this same
|
|
144
|
+
* transition; the in-flight interlock remains independent and cannot be reset.
|
|
145
|
+
*/
|
|
146
|
+
resetAdvisorCooldown(): void;
|
|
141
147
|
/** Atomically authorize one advisor attempt and reserve the session's consult slot. */
|
|
142
148
|
beginAdvisorConsult(): AdvisorGate;
|
|
143
149
|
/** Release the consult slot; only success stamps the floor and requests reclassification. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../src/model-routing/router.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../src/model-routing/router.ts"],"names":[],"mappings":"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"}
|
|
@@ -89,7 +89,7 @@ export class ModelRouter {
|
|
|
89
89
|
this.stepTriggerClassificationPending = true;
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
|
-
/** Arm one
|
|
92
|
+
/** Arm one cadence-independent classification after an independent wire-prefix compaction. */
|
|
93
93
|
noteCompaction() {
|
|
94
94
|
this.compactionClassificationPending = true;
|
|
95
95
|
}
|
|
@@ -163,7 +163,7 @@ export class ModelRouter {
|
|
|
163
163
|
// A replacement model starts with a fresh advisor floor. Its first
|
|
164
164
|
// consult is authorized by the ordinary gate; a successful consult then
|
|
165
165
|
// starts the normal step-based cooldown again.
|
|
166
|
-
this.
|
|
166
|
+
this.resetAdvisorCooldown();
|
|
167
167
|
return switched;
|
|
168
168
|
}
|
|
169
169
|
catch {
|
|
@@ -179,6 +179,14 @@ export class ModelRouter {
|
|
|
179
179
|
const stepsUntilAllowed = Math.max(0, minStepsBetween - elapsed);
|
|
180
180
|
return { allowed: stepsUntilAllowed === 0, stepsUntilAllowed };
|
|
181
181
|
}
|
|
182
|
+
/**
|
|
183
|
+
* Start a distinct consultation phase with a fresh ordinary advisor floor.
|
|
184
|
+
* Route changes and the product's completion-review checkpoint use this same
|
|
185
|
+
* transition; the in-flight interlock remains independent and cannot be reset.
|
|
186
|
+
*/
|
|
187
|
+
resetAdvisorCooldown() {
|
|
188
|
+
this.lastAdvisorStep = undefined;
|
|
189
|
+
}
|
|
182
190
|
/** Atomically authorize one advisor attempt and reserve the session's consult slot. */
|
|
183
191
|
beginAdvisorConsult() {
|
|
184
192
|
if (this.advisorConsultInFlight) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../../src/model-routing/router.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../../src/model-routing/router.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,6 @@ export declare const RoutingTableSchema: Type.TObject<{
|
|
|
19
19
|
thinkingLevel: Type.TUnion<Type.TLiteral<"minimal" | "low" | "medium" | "high" | "xhigh">[]>;
|
|
20
20
|
}>;
|
|
21
21
|
minStepsBetween: Type.TInteger;
|
|
22
|
-
transcriptTokens: Type.TInteger;
|
|
23
22
|
}>;
|
|
24
23
|
}>>;
|
|
25
24
|
classifier: Type.TObject<{
|
|
@@ -62,14 +61,12 @@ export interface AdvisorPolicy {
|
|
|
62
61
|
target: RouteTarget;
|
|
63
62
|
/** Minimum completed assistant steps between ordinary advisor calls. */
|
|
64
63
|
minStepsBetween: number;
|
|
65
|
-
/** Token budget for the curated advisor transcript; validation caps it at 20,000. */
|
|
66
|
-
transcriptTokens: number;
|
|
67
64
|
}
|
|
68
65
|
/** Routes and policies owned by one virtual model tier. */
|
|
69
66
|
export interface TierDefinition {
|
|
70
67
|
/** Named classifier routes; an absent requested route falls through to `general`. */
|
|
71
68
|
routes: Record<string, RouteRule>;
|
|
72
|
-
/** Advisor availability, target,
|
|
69
|
+
/** Advisor availability, target, and cadence for this tier. */
|
|
73
70
|
advisor: AdvisorPolicy;
|
|
74
71
|
}
|
|
75
72
|
/** Shared classifier model, cadence, and administrator-authored routing guidance. */
|
|
@@ -109,7 +106,7 @@ export interface RoutingCatalogAdapter {
|
|
|
109
106
|
/** Stable validation diagnostic returned without throwing. */
|
|
110
107
|
export interface RoutingTableIssue {
|
|
111
108
|
/** Machine-readable category for callers that want to group diagnostics. */
|
|
112
|
-
code: "catalog_collision" | "dangling_reference" | "virtual_cycle" | "invalid_effort" | "invalid_cadence" | "
|
|
109
|
+
code: "catalog_collision" | "dangling_reference" | "virtual_cycle" | "invalid_effort" | "invalid_cadence" | "invalid_vision_fallback_model" | "invalid_step_trigger_name" | "duplicate_step_trigger_name" | "invalid_step_trigger_keywords";
|
|
113
110
|
/** Dot-delimited location of the invalid value in the table. */
|
|
114
111
|
path: string;
|
|
115
112
|
/** Human-readable explanation, including the full path for virtual cycles. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../src/model-routing/table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../src/model-routing/table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAiG/B,qEAAqE;AACrE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAY9B,CAAC;AAEF,kEAAkE;AAClE,MAAM,WAAW,WAAW;IAC1B,iFAAiF;IACjF,SAAS,EAAE,MAAM,CAAC;IAClB,mFAAmF;IACnF,aAAa,EAAE,aAAa,CAAC;CAC9B;AAED,8EAA8E;AAC9E,MAAM,WAAW,SAAS;IACxB,iEAAiE;IACjE,WAAW,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,MAAM,EAAE,WAAW,CAAC;IACpB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,kEAAkE;AAClE,MAAM,WAAW,aAAa;IAC5B,0DAA0D;IAC1D,OAAO,EAAE,OAAO,CAAC;IACjB,+CAA+C;IAC/C,MAAM,EAAE,WAAW,CAAC;IACpB,wEAAwE;IACxE,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,2DAA2D;AAC3D,MAAM,WAAW,cAAc;IAC7B,qFAAqF;IACrF,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAClC,+DAA+D;IAC/D,OAAO,EAAE,aAAa,CAAC;CACxB;AAED,qFAAqF;AACrF,MAAM,WAAW,gBAAgB;IAC/B,4DAA4D;IAC5D,MAAM,EAAE,WAAW,CAAC;IACpB,8EAA8E;IAC9E,UAAU,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,QAAQ,EAAE,MAAM,CAAC;IACjB,+FAA+F;IAC/F,YAAY,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACpC;AAED,6FAA6F;AAC7F,MAAM,WAAW,iBAAiB;IAChC,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,uFAAuF;AACvF,MAAM,WAAW,YAAY;IAC3B,gFAAgF;IAChF,WAAW,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACtC,qDAAqD;IACrD,UAAU,EAAE,gBAAgB,CAAC;CAC9B;AAED,oFAAoF;AACpF,MAAM,WAAW,qBAAqB;IACpC,+EAA+E;IAC/E,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACrC,yDAAyD;IACzD,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAC3C;AAED,8DAA8D;AAC9D,MAAM,WAAW,iBAAiB;IAChC,4EAA4E;IAC5E,IAAI,EACA,mBAAmB,GACnB,oBAAoB,GACpB,eAAe,GACf,gBAAgB,GAChB,iBAAiB,GACjB,+BAA+B,GAC/B,2BAA2B,GAC3B,6BAA6B,GAC7B,+BAA+B,CAAC;IACpC,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;CACjB;AAaD,yEAAyE;AACzE,eAAO,MAAM,sBAAsB,EAAE,YA+FpC,CAAC;AAEF,wFAAwF;AACxF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAEzE;AAED,kEAAkE;AAClE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,EAAE,CAE/D;AAoCD,0FAA0F;AAC1F,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,YAAY,EACnB,cAAc,EAAE,qBAAqB,GACpC,iBAAiB,EAAE,CAgJrB"}
|
|
@@ -28,9 +28,6 @@ const AdvisorPolicySchema = Type.Object({
|
|
|
28
28
|
minStepsBetween: Type.Integer({
|
|
29
29
|
description: "Minimum assistant-completion steps between ordinary advisor calls.",
|
|
30
30
|
}),
|
|
31
|
-
transcriptTokens: Type.Integer({
|
|
32
|
-
description: "Maximum token budget used to assemble the advisor transcript.",
|
|
33
|
-
}),
|
|
34
31
|
}, { additionalProperties: false });
|
|
35
32
|
const TierDefinitionSchema = Type.Object({
|
|
36
33
|
routes: Type.Record(Type.String({ minLength: 1 }), RouteRuleSchema, {
|
|
@@ -106,7 +103,6 @@ export const BUILT_IN_ROUTING_TABLE = {
|
|
|
106
103
|
enabled: true,
|
|
107
104
|
target: { modelName: "fable-5", thinkingLevel: "high" },
|
|
108
105
|
minStepsBetween: 5,
|
|
109
|
-
transcriptTokens: 10_000,
|
|
110
106
|
},
|
|
111
107
|
},
|
|
112
108
|
balanced: {
|
|
@@ -136,7 +132,6 @@ export const BUILT_IN_ROUTING_TABLE = {
|
|
|
136
132
|
enabled: true,
|
|
137
133
|
target: { modelName: "fable-5", thinkingLevel: "high" },
|
|
138
134
|
minStepsBetween: 5,
|
|
139
|
-
transcriptTokens: 10_000,
|
|
140
135
|
},
|
|
141
136
|
},
|
|
142
137
|
economy: {
|
|
@@ -161,7 +156,6 @@ export const BUILT_IN_ROUTING_TABLE = {
|
|
|
161
156
|
enabled: false,
|
|
162
157
|
target: { modelName: "gpt-5.6-terra", thinkingLevel: "medium" },
|
|
163
158
|
minStepsBetween: 5,
|
|
164
|
-
transcriptTokens: 10_000,
|
|
165
159
|
},
|
|
166
160
|
},
|
|
167
161
|
},
|
|
@@ -238,13 +232,6 @@ export function validateRoutingTable(table, catalogAdapter) {
|
|
|
238
232
|
message: "Advisor cadence must be a positive number of steps.",
|
|
239
233
|
});
|
|
240
234
|
}
|
|
241
|
-
if (definition.advisor.transcriptTokens <= 0 || definition.advisor.transcriptTokens > 20_000) {
|
|
242
|
-
issues.push({
|
|
243
|
-
code: "invalid_transcript_budget",
|
|
244
|
-
path: `tiers.${tier}.advisor.transcriptTokens`,
|
|
245
|
-
message: "Advisor transcript budget must be between 1 and 20,000 tokens.",
|
|
246
|
-
});
|
|
247
|
-
}
|
|
248
235
|
}
|
|
249
236
|
if (table.classifier.everySteps <= 0) {
|
|
250
237
|
issues.push({
|