@mupt-ai/dari-router 0.2.3 → 0.2.4

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.
Files changed (73) hide show
  1. package/README.md +14 -1
  2. package/dist/anonymous_actions.d.ts +17 -8
  3. package/dist/anonymous_actions.js +110 -44
  4. package/dist/anonymous_actions.js.map +1 -1
  5. package/dist/cache_behavior.js +1 -1
  6. package/dist/cache_behavior.js.map +1 -1
  7. package/dist/continuation_state.d.ts +1 -0
  8. package/dist/continuation_state.js +6 -1
  9. package/dist/continuation_state.js.map +1 -1
  10. package/dist/cost.d.ts +1 -0
  11. package/dist/cost.js +8 -4
  12. package/dist/cost.js.map +1 -1
  13. package/dist/eval_score_imputation.d.ts +14 -3
  14. package/dist/eval_score_imputation.js +82 -59
  15. package/dist/eval_score_imputation.js.map +1 -1
  16. package/dist/fixed_turn_cost_config.d.ts +2 -0
  17. package/dist/fixed_turn_cost_config.js +8 -0
  18. package/dist/fixed_turn_cost_config.js.map +1 -1
  19. package/dist/index.d.ts +0 -2
  20. package/dist/index.js +0 -1
  21. package/dist/index.js.map +1 -1
  22. package/dist/jev_client.d.ts +31 -0
  23. package/dist/jev_client.js +115 -0
  24. package/dist/jev_client.js.map +1 -0
  25. package/dist/jev_eval_relevance.d.ts +49 -0
  26. package/dist/jev_eval_relevance.js +176 -0
  27. package/dist/jev_eval_relevance.js.map +1 -0
  28. package/dist/jev_selector.d.ts +3 -27
  29. package/dist/jev_selector.js +31 -221
  30. package/dist/jev_selector.js.map +1 -1
  31. package/dist/model_ids.js +10 -3
  32. package/dist/model_ids.js.map +1 -1
  33. package/dist/pi_context.js.map +1 -1
  34. package/dist/pi_options.js +83 -26
  35. package/dist/pi_options.js.map +1 -1
  36. package/dist/pi_output.js +2 -2
  37. package/dist/pi_output.js.map +1 -1
  38. package/dist/policy-engine.d.ts +2 -0
  39. package/dist/policy-engine.js +2 -0
  40. package/dist/policy-engine.js.map +1 -1
  41. package/dist/prompts/anonymous_action.md +29 -0
  42. package/dist/prompts/anonymous_rules.md +5 -0
  43. package/dist/prompts/custom_rules.md +10 -0
  44. package/dist/prompts/jev_eval_relevance.json +12 -0
  45. package/dist/prompts/jev_selector.json +22 -0
  46. package/dist/prompts/selector.md +21 -0
  47. package/dist/prompts.d.ts +28 -3
  48. package/dist/prompts.js +59 -80
  49. package/dist/prompts.js.map +1 -1
  50. package/dist/route.d.ts +1 -0
  51. package/dist/route.js +21 -0
  52. package/dist/route.js.map +1 -1
  53. package/dist/routing_history.d.ts +3 -0
  54. package/dist/routing_history.js +90 -55
  55. package/dist/routing_history.js.map +1 -1
  56. package/dist/selector_input.d.ts +0 -2
  57. package/dist/selector_input.js +15 -7
  58. package/dist/selector_input.js.map +1 -1
  59. package/dist/selector_request.d.ts +0 -1
  60. package/dist/selector_request.js +14 -37
  61. package/dist/selector_request.js.map +1 -1
  62. package/dist/selector_truncation.d.ts +0 -1
  63. package/dist/selector_truncation.js +6 -39
  64. package/dist/selector_truncation.js.map +1 -1
  65. package/dist/thinking_level_graph.d.ts +10 -0
  66. package/dist/thinking_level_graph.js +64 -0
  67. package/dist/thinking_level_graph.js.map +1 -0
  68. package/dist/types.d.ts +1 -0
  69. package/package.json +4 -5
  70. package/dist/jev_router.d.ts +0 -5
  71. package/dist/jev_router.js +0 -22
  72. package/dist/jev_router.js.map +0 -1
  73. package/examples/jev_router.ts +0 -50
package/dist/prompts.d.ts CHANGED
@@ -1,4 +1,29 @@
1
- export declare const SELECTOR_SYSTEM_PROMPT = "You are Dari's model router. Pick the best candidate model/thinking-level pair for the user's request.\n\n# Selection procedure\n\n1. Capability first: make sure the selected pair can reasonably handle the task. Consider both model capability and how much thinking the task needs; capability is never traded away for cost.\n2. Use imported eval scorecards as benchmark evidence when relevant. Rank is each candidate action's standing among the scored candidate actions on that benchmark, and z_score uses that same candidate group.\n3. A missing benchmark score means that candidate pair was not evaluated on that benchmark; do not treat it as zero, failure, or negative evidence.\n4. When several pairs are viable on capability, use cost_estimates as the deciding factor between them.\n5. Prefer the previous_decision pair when the task hasn't changed.\n\n# Cost comparison rules\n\n- fixed_turn_cost_estimate.projections is the primary cost metric whenever it is present. Each entry estimates the whole agent loop from this decision point out to projected_turns requests, using current cache warmth, provider cache rules, cache hit probabilities, and output tokens folded into later requests. Compare candidates at the horizon the task looks likely to need.\n- Candidates with fixed_turn_cost_estimate are the preferred cost-comparison pool when capability is otherwise comparable.\n- Do not rank candidates by output_cost_per_mtok or est_input_cost_usd ahead of fixed_turn_cost_estimate.projections. Do not discard those estimates just because some candidates lack them.\n- For candidates without fixed_turn_cost_estimate, use est_input_cost_usd and output_cost_per_mtok as fallback cost evidence, and select such a candidate only when its capability and fallback pricing make it a better fit than candidates with fixed-turn estimates.\n\n# Output\n\nReturn JSON matching the provided schema. selected_model and reasoning_effort must exactly match one candidate pair.\nThe runtime chooses provider fallbacks separately; return only the primary decision.";
2
- export declare const CUSTOM_SELECTOR_SYSTEM_PROMPT: string;
1
+ export declare function fillPrompt(template: string, values: Readonly<Record<string, string>>, source?: string): string;
2
+ export declare const SELECTOR_SYSTEM_PROMPT: string;
3
+ export declare const CUSTOM_RULES_PROMPT: string;
3
4
  export declare const ANONYMOUS_ACTION_SYSTEM_PROMPT: string;
4
- export declare const ANONYMOUS_ACTION_RAW_SCORE_SYSTEM_PROMPT: string;
5
+ export declare const ANONYMOUS_RULES_PROMPT: string;
6
+ export declare const JEV_EVAL_RELEVANCE_PROMPT: {
7
+ question: string;
8
+ rules: string[];
9
+ criteria: {
10
+ true: string;
11
+ false: string;
12
+ };
13
+ };
14
+ export declare const JEV_SELECTOR_PROMPT: {
15
+ action: {
16
+ question: string;
17
+ rules: string[];
18
+ router_rules_rule: string;
19
+ };
20
+ lease: {
21
+ question: string;
22
+ guidance: string;
23
+ criteria: {
24
+ shortest: string;
25
+ middle: string;
26
+ longest: string;
27
+ };
28
+ };
29
+ };
package/dist/prompts.js CHANGED
@@ -1,82 +1,61 @@
1
- // Selector system prompts, standalone so prompt review never requires
2
- // reading request-assembly code. Per-request candidate data rides in the
3
- // user message, keeping these byte-stable for provider prompt caching.
4
- import { FIXED_TURN_COST_PROJECTED_TURNS } from "./fixed_turn_cost_config.js";
5
- // Interpolated where a prompt names the projection horizons so the wording
6
- // cannot drift from the config that produces the data.
7
- const PROJECTED_TURNS_PHRASE = FIXED_TURN_COST_PROJECTED_TURNS.join(", ");
8
- export const SELECTOR_SYSTEM_PROMPT = `You are Dari's model router. Pick the best candidate model/thinking-level pair for the user's request.
9
-
10
- # Selection procedure
11
-
12
- 1. Capability first: make sure the selected pair can reasonably handle the task. Consider both model capability and how much thinking the task needs; capability is never traded away for cost.
13
- 2. Use imported eval scorecards as benchmark evidence when relevant. Rank is each candidate action's standing among the scored candidate actions on that benchmark, and z_score uses that same candidate group.
14
- 3. A missing benchmark score means that candidate pair was not evaluated on that benchmark; do not treat it as zero, failure, or negative evidence.
15
- 4. When several pairs are viable on capability, use cost_estimates as the deciding factor between them.
16
- 5. Prefer the previous_decision pair when the task hasn't changed.
17
-
18
- # Cost comparison rules
19
-
20
- - fixed_turn_cost_estimate.projections is the primary cost metric whenever it is present. Each entry estimates the whole agent loop from this decision point out to projected_turns requests, using current cache warmth, provider cache rules, cache hit probabilities, and output tokens folded into later requests. Compare candidates at the horizon the task looks likely to need.
21
- - Candidates with fixed_turn_cost_estimate are the preferred cost-comparison pool when capability is otherwise comparable.
22
- - Do not rank candidates by output_cost_per_mtok or est_input_cost_usd ahead of fixed_turn_cost_estimate.projections. Do not discard those estimates just because some candidates lack them.
23
- - For candidates without fixed_turn_cost_estimate, use est_input_cost_usd and output_cost_per_mtok as fallback cost evidence, and select such a candidate only when its capability and fallback pricing make it a better fit than candidates with fixed-turn estimates.
24
-
25
- # Output
26
-
27
- Return JSON matching the provided schema. selected_model and reasoning_effort must exactly match one candidate pair.
28
- The runtime chooses provider fallbacks separately; return only the primary decision.`;
29
- export const CUSTOM_SELECTOR_SYSTEM_PROMPT = `You are Dari's model router. Pick the best candidate model/thinking-level pair for the user's request.
30
- This router is configured with user-authored rules. Each custom_rules entry pairs a natural-language when condition with a model and an optional thinking_level. A null thinking_level means Auto: choose the most appropriate candidate thinking level for that rule's model. A non-null thinking_level pins the exact pair.
31
- Decide which rule's when condition best describes the current request — judge the latest phase or intent of the conversation (for example planning versus implementation), not just the first message — and select that rule's model and either its pinned thinking_level or an appropriate enabled level when it is Auto.
32
- custom_rules is ordered by model price, most expensive first; the order is presentation, not priority.
33
- When several rules match, pick the one whose when condition is most specific to the current request.
34
- When no rule matches, select default_target if it is set; its null thinking_level also means Auto. Otherwise prefer previous_decision when it is a candidate; otherwise pick the most capable candidate pair.
35
- Prefer previous_decision while the matched rule (or task phase) hasn't changed.
36
- Use imported eval scorecards as benchmark evidence when relevant. Rank is each candidate action's standing among the scored candidate actions on that benchmark, and z_score uses that same candidate group. A missing benchmark score means that candidate pair was not evaluated on that benchmark; do not treat it as zero, failure, or negative evidence.
37
- Use cost_estimates only to break ties between rule-matched candidates or to choose among an Auto target's viable thinking levels; a rule match is never traded away for cost.
38
- When using cost_estimates, fixed_turn_cost_estimate.projections is the primary cost metric whenever present because it includes current cache warmth and projected loop cost at ${PROJECTED_TURNS_PHRASE} turns. For candidates without fixed_turn_cost_estimate, use est_input_cost_usd and output_cost_per_mtok as fallback cost evidence. Do not rank by output_cost_per_mtok ahead of fixed_turn_cost_estimate.projections.
39
- Return JSON matching the provided schema.
40
- selected_model and reasoning_effort must exactly match one candidate pair.
41
- The runtime chooses provider fallbacks separately; return only the primary decision.`;
1
+ // Selector system prompts live in prompts/*.md, and the structured Jev
2
+ // questions in prompts/*.json, so prompt review never requires reading
3
+ // request-assembly code. Per-request candidate data rides in the user
4
+ // message, keeping these byte-stable for provider prompt caching.
5
+ import { readFileSync } from "node:fs";
6
+ import { FIXED_TURN_COST_COMPARISON_TURNS, FIXED_TURN_COST_PROJECTED_TURNS, } from "./fixed_turn_cost_config.js";
7
+ // Placeholders interpolated where a prompt names the projection horizons, so
8
+ // the wording cannot drift from the config that produces the data.
9
+ const PROMPT_VARIABLES = {
10
+ projected_turns: FIXED_TURN_COST_PROJECTED_TURNS.join(", "),
11
+ comparison_turns: String(FIXED_TURN_COST_COMPARISON_TURNS),
12
+ };
13
+ function loadPrompt(name) {
14
+ const template = readFileSync(new URL(`./prompts/${name}.md`, import.meta.url), "utf8");
15
+ return fillPrompt(template.trimEnd(), PROMPT_VARIABLES, `prompts/${name}.md`);
16
+ }
17
+ // Loads a structured prompt. Shared variables are filled at load time;
18
+ // placeholders named in templateKeys stay for fillPrompt at request time;
19
+ // any other placeholder is an error.
20
+ function loadJsonPrompt(name, templateKeys = []) {
21
+ const source = `prompts/${name}.json`;
22
+ const parsed = JSON.parse(readFileSync(new URL(`./prompts/${name}.json`, import.meta.url), "utf8"));
23
+ const keep = Object.fromEntries(templateKeys.map((key) => [key, `{{${key}}}`]));
24
+ const fill = (value) => {
25
+ if (typeof value === "string")
26
+ return fillPrompt(value, { ...PROMPT_VARIABLES, ...keep }, source);
27
+ if (Array.isArray(value))
28
+ return value.map(fill);
29
+ if (typeof value === "object" && value !== null) {
30
+ return Object.fromEntries(Object.entries(value).map(([key, entry]) => [key, fill(entry)]));
31
+ }
32
+ return value;
33
+ };
34
+ return fill(parsed);
35
+ }
36
+ // Replaces every {{key}} in a template, failing on any key without a value.
37
+ export function fillPrompt(template, values, source = "prompt template") {
38
+ return template.replace(/\{\{(\w+)\}\}/g, (_, key) => {
39
+ const value = values[key];
40
+ if (value === undefined)
41
+ throw new Error(`Unknown placeholder {{${key}}} in ${source}`);
42
+ return value;
43
+ });
44
+ }
45
+ export const SELECTOR_SYSTEM_PROMPT = loadPrompt("selector");
46
+ // Appended to the selector prompt when a router has user-authored rules;
47
+ // custom routers otherwise select exactly like every other router.
48
+ export const CUSTOM_RULES_PROMPT = loadPrompt("custom_rules");
42
49
  // System prompt for the anonymous candidate-action protocol (see
43
- // anonymous_actions.ts). It carries every invariant instruction, including how
44
- // to read the per-action blocks, so the user message stays pure data.
45
- const ANONYMOUS_ACTION_PROMPT_OPENING = [
46
- "You are Dari's model router for a coding agent.",
47
- "Choose exactly one anonymous candidate action for the agent's next turns, and how many turns to commit to it.",
48
- "Your choice is a lease: the chosen action serves that many consecutive turns before you are consulted again. A longer lease amortizes the cold start paid on its first turn across warm cache hits on the turns that follow; the lease ends early only if the task finishes or the provider fails.",
49
- ];
50
- const ANONYMOUS_ACTION_PROMPT_CLOSING = [
51
- "Cost is the projected spend for the whole agent loop over exactly the turns of each lease option, from current cache warmth. Compare actions at the lease you intend to pick.",
52
- "A missing benchmark score means that action was not evaluated on that benchmark; do not treat it as zero, failure, or negative evidence.",
53
- "The task section is the original user task. If it contains an explicit routing truncation marker, the middle was compacted to fit the policy window while preserving both ends. Lease history summarizes what earlier anonymous actions actually did; use completed turns, errors, tool results, and tests as evidence about whether the current phase needs a different action or lease length.",
54
- "Action letters are fixed for the whole conversation: each candidate keeps one letter even as availability changes, so a letter may be absent from the current menu. In lease history, each Model line is the authoritative action label for that lease. Never infer or state a provider or model identity behind an action.",
55
- "Prefer a cheaper action only when it is sufficiently likely to complete the task successfully.",
56
- // Scaffolding for the thinking budget: the decision decomposes into judging
57
- // how hard the task is and then finding the cheapest action-and-lease that
58
- // clears that bar. Stating the decomposition costs a few prompt tokens and
59
- // saves the policy from having to discover it from reward alone.
60
- "Think in exactly three short steps, then stop:",
61
- "1. Phase: one sentence — what stage the task is at based on the latest turn (exploring, editing, testing, wrapping up), roughly how many turns remain, and how hard the next step looks.",
62
- "2. Evidence: one sentence — the one or two benchmarks most like this work, and which actions stand out on them.",
63
- "3. Pick: name the cheapest action whose scores clear the difficulty, and the longest lease the remaining work justifies; go pricier or shorter only when the task demands it. Then end thinking immediately and answer.",
64
- "Do not walk through every action, restate the scorecards, or retell the conversation.",
65
- "Return only JSON matching the provided schema.",
66
- ];
67
- export const ANONYMOUS_ACTION_SYSTEM_PROMPT = [
68
- ...ANONYMOUS_ACTION_PROMPT_OPENING,
69
- "Each action's block lists its benchmark standing and its projected cost at each lease length you may choose.",
70
- "Rank is the action's position among the scored candidate actions on that benchmark, 1 being best. Z is how many standard deviations that action sits above or below the mean of those scored candidate actions.",
71
- ...ANONYMOUS_ACTION_PROMPT_CLOSING,
72
- ].join("\n");
73
- // Same protocol, but each action's benchmark line is the raw leaderboard value
74
- // instead of its rank and z-score within the candidate group. The benchmarks
75
- // glossary carries each benchmark's scale so the values stay comparable.
76
- export const ANONYMOUS_ACTION_RAW_SCORE_SYSTEM_PROMPT = [
77
- ...ANONYMOUS_ACTION_PROMPT_OPENING,
78
- "Each action's block lists its raw benchmark scores and its projected cost at each lease length you may choose.",
79
- "Score is the action's value on that benchmark's own scale; higher is better. The benchmarks section gives each benchmark's bounds and describes what its score is (an accuracy or pass rate, a comparative Elo rating, a composite index, or otherwise), so read a score against that. Scores are only comparable between actions on the same benchmark, never across benchmarks.",
80
- ...ANONYMOUS_ACTION_PROMPT_CLOSING,
81
- ].join("\n");
50
+ // anonymous_actions.ts), shared by GRPO training and the deployed policy. It
51
+ // carries every invariant instruction, including how to read the per-action
52
+ // blocks, so the user message stays pure data.
53
+ export const ANONYMOUS_ACTION_SYSTEM_PROMPT = loadPrompt("anonymous_action");
54
+ // The anonymous protocol's rules addendum; the rules themselves follow it,
55
+ // rewritten into action labels.
56
+ export const ANONYMOUS_RULES_PROMPT = loadPrompt("anonymous_rules");
57
+ // Jev's eval-relevance Noul question, asked once per candidate eval card.
58
+ export const JEV_EVAL_RELEVANCE_PROMPT = loadJsonPrompt("jev_eval_relevance");
59
+ // Jev's selection questions. Lease criteria are templates over {{turns}}.
60
+ export const JEV_SELECTOR_PROMPT = loadJsonPrompt("jev_selector", ["turns"]);
82
61
  //# sourceMappingURL=prompts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,yEAAyE;AACzE,uEAAuE;AAEvE,OAAO,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAE9E,2EAA2E;AAC3E,uDAAuD;AACvD,MAAM,sBAAsB,GAAG,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAE1E,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;qFAoB+C,CAAC;AAEtF,MAAM,CAAC,MAAM,6BAA6B,GAAG;;;;;;;;;kLASqI,sBAAsB;;;qFAGnH,CAAC;AAEtF,iEAAiE;AACjE,+EAA+E;AAC/E,sEAAsE;AACtE,MAAM,+BAA+B,GAAG;IACtC,iDAAiD;IACjD,+GAA+G;IAC/G,oSAAoS;CACrS,CAAC;AAEF,MAAM,+BAA+B,GAAG;IACtC,+KAA+K;IAC/K,0IAA0I;IAC1I,kYAAkY;IAClY,6TAA6T;IAC7T,gGAAgG;IAChG,4EAA4E;IAC5E,2EAA2E;IAC3E,2EAA2E;IAC3E,iEAAiE;IACjE,gDAAgD;IAChD,0LAA0L;IAC1L,iHAAiH;IACjH,yNAAyN;IACzN,uFAAuF;IACvF,gDAAgD;CACjD,CAAC;AAEF,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,GAAG,+BAA+B;IAClC,8GAA8G;IAC9G,iNAAiN;IACjN,GAAG,+BAA+B;CACnC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,+EAA+E;AAC/E,6EAA6E;AAC7E,yEAAyE;AACzE,MAAM,CAAC,MAAM,wCAAwC,GAAG;IACtD,GAAG,+BAA+B;IAClC,gHAAgH;IAChH,mXAAmX;IACnX,GAAG,+BAA+B;CACnC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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"}
package/dist/route.d.ts CHANGED
@@ -66,6 +66,7 @@ export type CandidatePreparation = {
66
66
  warnings: RoutePreparationWarning[];
67
67
  };
68
68
  export declare function prepareCandidates(input: CandidatePreparationInput): CandidatePreparation;
69
+ export declare function conversationPromptGrowth(hits: RouterPrefixHit[] | undefined, conversationId: string | null): number;
69
70
  export type RouteFallbackConfig = {
70
71
  enabled: boolean;
71
72
  requiresDifferentProvider: boolean;
package/dist/route.js CHANGED
@@ -8,6 +8,7 @@ import { deepestIdentityHit, deriveModelChainHits, estimateCandidateCosts, selec
8
8
  import { prefixHitMatchesProvider, warmPrefixHits } from "./cache_behavior.js";
9
9
  import { reasoningCacheScope } from "./cache_scope.js";
10
10
  import { RouterCoreError } from "./errors.js";
11
+ import { DEFAULT_PROMPT_GROWTH_TOKENS_PER_TURN, MIN_TURNS_FOR_OBSERVED_PROMPT_GROWTH, } from "./fixed_turn_cost_config.js";
11
12
  import { activeLeaseFromHit, compatiblePreviousDecision, pendingLeaseFromHit, previousDecisionFromHit, } from "./previous_decision.js";
12
13
  import { resolveStrategyCandidates, } from "./candidate_resolution.js";
13
14
  import { selectorSafeMessages } from "./selector_input.js";
@@ -21,6 +22,25 @@ import { routingCandidateKey } from "./types.js";
21
22
  export function prepareCandidates(input) {
22
23
  return prepareCandidatesWithAccounting(input, resolvePromptAccounting(input));
23
24
  }
25
+ // Prompt tokens the conversation gains per recorded turn, from its own prefix
26
+ // rows: replies and tool results both land in the next prompt. Too short a
27
+ // history falls back to the default rate.
28
+ export function conversationPromptGrowth(hits, conversationId) {
29
+ const promptTokensByDepth = new Map();
30
+ for (const entry of hits ?? []) {
31
+ if (conversationId === null || entry.conversation_id !== conversationId)
32
+ continue;
33
+ const known = promptTokensByDepth.get(entry.message_depth) ?? 0;
34
+ promptTokensByDepth.set(entry.message_depth, Math.max(known, entry.prompt_tokens));
35
+ }
36
+ if (promptTokensByDepth.size < MIN_TURNS_FOR_OBSERVED_PROMPT_GROWTH) {
37
+ return DEFAULT_PROMPT_GROWTH_TOKENS_PER_TURN;
38
+ }
39
+ const ordered = [...promptTokensByDepth].sort(([left], [right]) => left - right);
40
+ const first = ordered[0][1];
41
+ const last = ordered[ordered.length - 1][1];
42
+ return Math.max(0, (last - first) / (ordered.length - 1));
43
+ }
24
44
  function newestConversationHit(hits, conversationId) {
25
45
  if (conversationId === undefined)
26
46
  return undefined;
@@ -136,6 +156,7 @@ function prepareCandidatesWithAccounting(input, promptAccounting) {
136
156
  averageOutputTokensByModel: input.averageOutputTokensByModel,
137
157
  cacheScope,
138
158
  modelProvider: (model) => input.metadataLookup(model).provider,
159
+ promptGrowthTokensPerTurn: conversationPromptGrowth(input.prefixHits, conversationId),
139
160
  });
140
161
  }
141
162
  catch (error) {
package/dist/route.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"route.js","sourceRoot":"","sources":["../src/route.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../src/route.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,11 @@
1
1
  export declare const ROUTER_HISTORY_CHAR_BUDGET = 16000;
2
+ export declare const ROUTER_USER_MESSAGE_CHAR_CAP = 2000;
2
3
  type RoutingHistoryMessage = {
3
4
  role?: unknown;
4
5
  content?: unknown;
5
6
  [key: string]: unknown;
6
7
  };
7
8
  export declare function compactRoutingHistory<T extends RoutingHistoryMessage>(messages: T[], historyCharBudget: number | undefined): T[];
9
+ export declare function contentText(content: unknown): string;
10
+ export declare function elideMiddle(value: string, maxChars: number): string;
8
11
  export {};
@@ -2,103 +2,136 @@
2
2
  // training. Provider-bound requests keep the complete conversation.
3
3
  // Characters of conversation the anonymous policy selectors see.
4
4
  export const ROUTER_HISTORY_CHAR_BUDGET = 16_000;
5
+ // A session has no single task: the user's intent is spread across their
6
+ // messages, so compaction keeps every one, each shortened to this size.
7
+ export const ROUTER_USER_MESSAGE_CHAR_CAP = 2_000;
8
+ // Keeps the leading instructions verbatim, every user message (capped, newest
9
+ // first, within half the budget), and the most recent agent turns in what is
10
+ // left, all in their original order.
5
11
  export function compactRoutingHistory(messages, historyCharBudget) {
6
12
  if (historyCharBudget === undefined || messages.length <= 1)
7
13
  return messages;
8
14
  if (!Number.isSafeInteger(historyCharBudget) || historyCharBudget < 512) {
9
15
  throw new Error("GRPO routing history character budget must be an integer of at least 512");
10
16
  }
11
- const first = messages[0];
12
- const history = messages.slice(1);
13
- const totalChars = history.reduce((total, message) => total + JSON.stringify(message).length, 0);
17
+ const leadRole = messages[0]?.role;
18
+ const lead = leadRole === "system" || leadRole === "developer" ? messages.slice(0, 1) : [];
19
+ const history = messages.slice(lead.length);
20
+ const sizes = history.map((message) => JSON.stringify(message).length);
21
+ const totalChars = sizes.reduce((total, size) => total + size, 0);
14
22
  if (totalChars <= historyCharBudget)
15
23
  return messages;
16
- // The final marker embeds omission counts, so budget the tail against a
24
+ // The final marker embeds omission counts, so budget against a
17
25
  // worst-case-width placeholder to keep the result within the char budget.
18
26
  const markerContent = (omittedMessages, omittedChars) => `[Router-only compaction omitted ${omittedMessages} earlier messages (~${omittedChars} chars); ` +
19
- "retained the task and most recent context.]";
27
+ "kept the user's messages and the most recent context.]";
20
28
  const markerReserve = JSON.stringify({
21
29
  role: "system",
22
30
  content: markerContent(99_999_999, 999_999_999),
23
31
  }).length;
24
32
  let remainingChars = historyCharBudget - markerReserve;
25
- const tail = [];
33
+ const kept = new Map();
34
+ let userChars = Math.floor(remainingChars / 2);
35
+ for (let index = history.length - 1; index >= 0; index -= 1) {
36
+ const message = history[index];
37
+ if (message.role !== "user")
38
+ continue;
39
+ const limit = Math.min(ROUTER_USER_MESSAGE_CHAR_CAP, userChars);
40
+ const capped = sizes[index] <= limit ? message : compactRoutingMessage(message, limit);
41
+ if (capped === undefined)
42
+ break;
43
+ const cappedChars = JSON.stringify(capped).length;
44
+ kept.set(index, capped);
45
+ userChars -= cappedChars;
46
+ remainingChars -= cappedChars;
47
+ }
26
48
  for (let index = history.length - 1; index >= 0 && remainingChars > 0; index -= 1) {
27
49
  const message = history[index];
28
- const serializedChars = JSON.stringify(message).length;
29
- if (serializedChars <= remainingChars) {
30
- tail.unshift(message);
31
- remainingChars -= serializedChars;
50
+ if (message.role === "user")
51
+ continue;
52
+ if (sizes[index] <= remainingChars) {
53
+ kept.set(index, message);
54
+ remainingChars -= sizes[index];
32
55
  continue;
33
56
  }
34
57
  const compacted = compactRoutingMessage(message, remainingChars);
35
58
  if (compacted !== undefined)
36
- tail.unshift(compacted);
59
+ kept.set(index, compacted);
37
60
  break;
38
61
  }
39
62
  // Providers reject tool results whose originating assistant tool_calls
40
- // message was compacted away, so the retained tail must never lead with one.
41
- while (tail.length > 0 && tail[0]?.role === "tool") {
42
- tail.shift();
63
+ // message was compacted away, so a tool result stays only beside it.
64
+ const retained = [];
65
+ for (const index of [...kept.keys()].sort((left, right) => left - right)) {
66
+ if (history[index]?.role === "tool") {
67
+ let owner = index - 1;
68
+ while (owner >= 0 && history[owner]?.role === "tool")
69
+ owner -= 1;
70
+ if (owner < 0 || !kept.has(owner))
71
+ continue;
72
+ }
73
+ retained.push(kept.get(index));
43
74
  }
44
- const retainedChars = tail.reduce((total, message) => total + JSON.stringify(message).length, 0);
75
+ const retainedChars = retained.reduce((total, message) => total + JSON.stringify(message).length, 0);
45
76
  const marker = {
46
77
  role: "system",
47
- content: markerContent(history.length - tail.length, Math.max(totalChars - retainedChars, 0)),
78
+ content: markerContent(history.length - retained.length, Math.max(totalChars - retainedChars, 0)),
48
79
  };
49
- return [first, marker, ...tail];
80
+ return [...lead, marker, ...retained];
50
81
  }
51
82
  function compactRoutingMessage(message, maxChars) {
52
83
  const content = message.content;
53
84
  if (Array.isArray(content)) {
54
85
  return compactRoutingMessageParts(message, content, maxChars);
55
86
  }
56
- const text = contentText(content);
57
- const shell = { ...message, content: "" };
58
- // Leave room for JSON escaping introduced by the truncation marker.
59
- const availableChars = maxChars - JSON.stringify(shell).length - 32;
60
- if (availableChars < 128 || text.length === 0)
87
+ const text = typeof content === "string" ? content : "";
88
+ if (text.length === 0)
61
89
  return undefined;
62
- const compacted = { ...message, content: elideMiddle(text, availableChars) };
63
- return JSON.stringify(compacted).length <= maxChars ? compacted : undefined;
90
+ return fitRoutingMessage(maxChars, (budget) => ({ ...message, content: elideMiddle(text, budget) }));
64
91
  }
65
92
  function compactRoutingMessageParts(message, content, maxChars) {
66
- const text = contentText(content);
67
93
  const nonTextContent = content.filter((part) => !isTextPart(part));
68
94
  const shell = { ...message, content: nonTextContent };
69
- const shellChars = JSON.stringify(shell).length;
70
- if (shellChars > maxChars)
95
+ if (JSON.stringify(shell).length > maxChars)
71
96
  return undefined;
72
- if (text.length === 0)
97
+ const texts = content.filter(isTextPart).map((part) => part.text);
98
+ if (texts.every((text) => text.length === 0))
73
99
  return shell;
74
- const availableChars = maxChars - shellChars - 32;
75
- if (availableChars < 128) {
76
- return nonTextContent.length > 0 ? shell : undefined;
100
+ const compacted = fitRoutingMessage(maxChars, (budget) => {
101
+ const fitted = fitTextParts(texts, budget);
102
+ let next = 0;
103
+ return {
104
+ ...message,
105
+ content: content.map((part) => (isTextPart(part) ? { ...part, text: fitted[next++] } : part)),
106
+ };
107
+ });
108
+ return compacted ?? (nonTextContent.length > 0 ? shell : undefined);
109
+ }
110
+ // JSON escaping makes raw text length an underestimate, so shrink the text
111
+ // budget by each overflow until the serialized message fits.
112
+ function fitRoutingMessage(maxChars, render) {
113
+ let textBudget = maxChars - JSON.stringify(render(0)).length;
114
+ while (textBudget >= 128) {
115
+ const rendered = render(textBudget);
116
+ const overflow = JSON.stringify(rendered).length - maxChars;
117
+ if (overflow <= 0)
118
+ return rendered;
119
+ textBudget -= overflow;
77
120
  }
78
- const textPart = { type: "text", text: elideMiddle(text, availableChars) };
79
- const compacted = {
80
- ...message,
81
- content: compactContentParts(content, textPart),
82
- };
83
- if (JSON.stringify(compacted).length <= maxChars)
84
- return compacted;
85
- return nonTextContent.length > 0 ? shell : undefined;
121
+ return undefined;
86
122
  }
87
- function compactContentParts(content, textPart) {
88
- let insertedText = false;
89
- const compacted = [];
90
- for (const part of content) {
91
- if (isTextPart(part)) {
92
- if (!insertedText)
93
- compacted.push(textPart);
94
- insertedText = true;
95
- continue;
96
- }
97
- compacted.push(part);
123
+ // Harnesses wrap the user's request in long context parts (Claude Code's
124
+ // system reminders and environment listing), so short parts stay whole and
125
+ // the longest parts share what is left.
126
+ function fitTextParts(texts, budget) {
127
+ const fitted = [...texts];
128
+ const byLength = texts.map((_, index) => index).sort((left, right) => texts[left].length - texts[right].length);
129
+ let remaining = budget;
130
+ for (const [position, index] of byLength.entries()) {
131
+ fitted[index] = elideMiddle(texts[index], Math.floor(remaining / (byLength.length - position)));
132
+ remaining -= fitted[index].length;
98
133
  }
99
- if (!insertedText)
100
- compacted.push(textPart);
101
- return compacted;
134
+ return fitted;
102
135
  }
103
136
  function isTextPart(value) {
104
137
  return (typeof value === "object" &&
@@ -107,7 +140,7 @@ function isTextPart(value) {
107
140
  value.type === "text" &&
108
141
  typeof value.text === "string");
109
142
  }
110
- function contentText(content) {
143
+ export function contentText(content) {
111
144
  if (typeof content === "string")
112
145
  return content;
113
146
  if (!Array.isArray(content))
@@ -121,10 +154,12 @@ function contentText(content) {
121
154
  })
122
155
  .join("\n");
123
156
  }
124
- function elideMiddle(value, maxChars) {
157
+ export function elideMiddle(value, maxChars) {
125
158
  if (value.length <= maxChars)
126
159
  return value;
127
160
  const marker = "\n...[router history truncated]...\n";
161
+ if (maxChars <= 0)
162
+ return "";
128
163
  if (maxChars <= marker.length)
129
164
  return value.slice(-maxChars);
130
165
  const retainedChars = maxChars - marker.length;
@@ -1 +1 @@
1
- {"version":3,"file":"routing_history.js","sourceRoot":"","sources":["../src/routing_history.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routing_history.js","sourceRoot":"","sources":["../src/routing_history.ts"],"names":[],"mappings":"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"}
@@ -32,7 +32,6 @@ export type SelectorInput = {
32
32
  imported_evals: Array<Record<string, unknown>>;
33
33
  previous_decision: SelectorPreviousDecision | null;
34
34
  cost_estimates: CandidateCostEstimate[] | null;
35
- task?: ChatMessage | null;
36
35
  lease_history?: SelectorLeaseHistoryEntry[];
37
36
  messages: ChatMessage[];
38
37
  };
@@ -53,7 +52,6 @@ export declare function buildSelectorInput(args: {
53
52
  previousDecision: PreviousDecision | null;
54
53
  costEstimates: CandidateCostEstimate[] | null;
55
54
  messages: ChatMessage[];
56
- task?: ChatMessage | null;
57
55
  leaseHistory?: SelectorLeaseHistoryEntry[];
58
56
  customRules?: CustomRouterRule[];
59
57
  defaultTarget?: {