agent-nuvira 3.5.7 → 3.5.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/README.md +19 -1
  2. package/dist/agents/agents/package-agent.d.ts +22 -0
  3. package/dist/agents/agents/package-agent.d.ts.map +1 -1
  4. package/dist/agents/agents/package-agent.js +92 -4
  5. package/dist/agents/agents/package-agent.js.map +1 -1
  6. package/dist/agents/release-preflight.d.ts +42 -5
  7. package/dist/agents/release-preflight.d.ts.map +1 -1
  8. package/dist/agents/release-preflight.js +82 -5
  9. package/dist/agents/release-preflight.js.map +1 -1
  10. package/dist/cli/chat.d.ts.map +1 -1
  11. package/dist/cli/chat.js +99 -9
  12. package/dist/cli/chat.js.map +1 -1
  13. package/dist/cli/cli-program.d.ts.map +1 -1
  14. package/dist/cli/cli-program.js +6 -0
  15. package/dist/cli/cli-program.js.map +1 -1
  16. package/dist/cli/code-map.d.ts +51 -0
  17. package/dist/cli/code-map.d.ts.map +1 -1
  18. package/dist/cli/code-map.js +174 -2
  19. package/dist/cli/code-map.js.map +1 -1
  20. package/dist/cli/credentials.d.ts.map +1 -1
  21. package/dist/cli/credentials.js +4 -1
  22. package/dist/cli/credentials.js.map +1 -1
  23. package/dist/cli/execute.js +5 -5
  24. package/dist/cli/execute.js.map +1 -1
  25. package/dist/cli/loop-executor.d.ts.map +1 -1
  26. package/dist/cli/loop-executor.js +76 -13
  27. package/dist/cli/loop-executor.js.map +1 -1
  28. package/dist/cli/motion.d.ts +53 -0
  29. package/dist/cli/motion.d.ts.map +1 -0
  30. package/dist/cli/motion.js +516 -0
  31. package/dist/cli/motion.js.map +1 -0
  32. package/dist/config/process-env.d.ts.map +1 -1
  33. package/dist/config/process-env.js +2 -2
  34. package/dist/config/process-env.js.map +1 -1
  35. package/dist/editing/types.d.ts +23 -1
  36. package/dist/editing/types.d.ts.map +1 -1
  37. package/dist/editing/types.js +51 -7
  38. package/dist/editing/types.js.map +1 -1
  39. package/dist/inference/route-resolver.d.ts +39 -0
  40. package/dist/inference/route-resolver.d.ts.map +1 -1
  41. package/dist/inference/route-resolver.js +51 -2
  42. package/dist/inference/route-resolver.js.map +1 -1
  43. package/dist/inference/thinking-replay.d.ts +86 -0
  44. package/dist/inference/thinking-replay.d.ts.map +1 -0
  45. package/dist/inference/thinking-replay.js +110 -0
  46. package/dist/inference/thinking-replay.js.map +1 -0
  47. package/dist/inference/tools.d.ts +9 -0
  48. package/dist/inference/tools.d.ts.map +1 -1
  49. package/dist/inference/tools.js +12 -1
  50. package/dist/inference/tools.js.map +1 -1
  51. package/dist/learning/assessment-protocol.d.ts +120 -0
  52. package/dist/learning/assessment-protocol.d.ts.map +1 -0
  53. package/dist/learning/assessment-protocol.js +236 -0
  54. package/dist/learning/assessment-protocol.js.map +1 -0
  55. package/dist/learning/assessment-turn-context.d.ts +54 -0
  56. package/dist/learning/assessment-turn-context.d.ts.map +1 -0
  57. package/dist/learning/assessment-turn-context.js +71 -0
  58. package/dist/learning/assessment-turn-context.js.map +1 -0
  59. package/dist/learning/exhaustion-report.d.ts +24 -1
  60. package/dist/learning/exhaustion-report.d.ts.map +1 -1
  61. package/dist/learning/exhaustion-report.js +18 -6
  62. package/dist/learning/exhaustion-report.js.map +1 -1
  63. package/dist/learning/machine-facts.d.ts +7 -0
  64. package/dist/learning/machine-facts.d.ts.map +1 -1
  65. package/dist/learning/machine-facts.js +37 -2
  66. package/dist/learning/machine-facts.js.map +1 -1
  67. package/dist/learning/perf-probe.d.ts +140 -0
  68. package/dist/learning/perf-probe.d.ts.map +1 -0
  69. package/dist/learning/perf-probe.js +316 -0
  70. package/dist/learning/perf-probe.js.map +1 -0
  71. package/dist/learning/self-check-discovery.d.ts +117 -0
  72. package/dist/learning/self-check-discovery.d.ts.map +1 -0
  73. package/dist/learning/self-check-discovery.js +334 -0
  74. package/dist/learning/self-check-discovery.js.map +1 -0
  75. package/dist/skills/bundled-skills-phase3.d.ts.map +1 -1
  76. package/dist/skills/bundled-skills-phase3.js +3 -3
  77. package/dist/skills/bundled-skills-phase3.js.map +1 -1
  78. package/dist/skills/sandbox-executor.d.ts.map +1 -1
  79. package/dist/skills/sandbox-executor.js +115 -34
  80. package/dist/skills/sandbox-executor.js.map +1 -1
  81. package/dist/tools/child-agent-runtime.js +19 -1
  82. package/dist/tools/child-agent-runtime.js.map +1 -1
  83. package/dist/tools/credentials-tool.d.ts.map +1 -1
  84. package/dist/tools/credentials-tool.js +4 -1
  85. package/dist/tools/credentials-tool.js.map +1 -1
  86. package/dist/tools/loop-project-context.d.ts +7 -0
  87. package/dist/tools/loop-project-context.d.ts.map +1 -1
  88. package/dist/tools/loop-project-context.js +44 -0
  89. package/dist/tools/loop-project-context.js.map +1 -1
  90. package/dist/tools/modality/motion-tool.d.ts +28 -1
  91. package/dist/tools/modality/motion-tool.d.ts.map +1 -1
  92. package/dist/tools/modality/motion-tool.js +261 -10
  93. package/dist/tools/modality/motion-tool.js.map +1 -1
  94. package/dist/tools/modality/motion.d.ts +403 -3
  95. package/dist/tools/modality/motion.d.ts.map +1 -1
  96. package/dist/tools/modality/motion.js +1096 -41
  97. package/dist/tools/modality/motion.js.map +1 -1
  98. package/dist/tools/pipeline-tool.d.ts.map +1 -1
  99. package/dist/tools/pipeline-tool.js +19 -1
  100. package/dist/tools/pipeline-tool.js.map +1 -1
  101. package/dist/tools/plan-store.d.ts +90 -6
  102. package/dist/tools/plan-store.d.ts.map +1 -1
  103. package/dist/tools/plan-store.js +140 -13
  104. package/dist/tools/plan-store.js.map +1 -1
  105. package/dist/tools/publish-tool.d.ts.map +1 -1
  106. package/dist/tools/publish-tool.js +9 -0
  107. package/dist/tools/publish-tool.js.map +1 -1
  108. package/dist/tools/registry.d.ts.map +1 -1
  109. package/dist/tools/registry.js +59 -7
  110. package/dist/tools/registry.js.map +1 -1
  111. package/dist/tools/tool-loop.d.ts +17 -0
  112. package/dist/tools/tool-loop.d.ts.map +1 -1
  113. package/dist/tools/tool-loop.js +4 -1
  114. package/dist/tools/tool-loop.js.map +1 -1
  115. package/dist/web-dashboard/chat-console.d.ts.map +1 -1
  116. package/dist/web-dashboard/chat-console.js +11 -1
  117. package/dist/web-dashboard/chat-console.js.map +1 -1
  118. package/dist/web-dashboard/motion-data.d.ts +62 -0
  119. package/dist/web-dashboard/motion-data.d.ts.map +1 -0
  120. package/dist/web-dashboard/motion-data.js +91 -0
  121. package/dist/web-dashboard/motion-data.js.map +1 -0
  122. package/dist/web-dashboard/project-context.js +6 -0
  123. package/dist/web-dashboard/project-context.js.map +1 -1
  124. package/dist/web-dashboard/server.d.ts.map +1 -1
  125. package/dist/web-dashboard/server.js +83 -33
  126. package/dist/web-dashboard/server.js.map +1 -1
  127. package/dist/web-dashboard/src/types.d.ts +31 -0
  128. package/dist/web-dashboard/src/types.d.ts.map +1 -1
  129. package/package.json +1 -1
  130. package/src/web-dashboard/public/assets/{index-CzRU84ET.css → index-CXdBvA0N.css} +1 -1
  131. package/src/web-dashboard/public/assets/{index-V0rIqVbg.js → index-DfjkO16t.js} +81 -81
  132. package/src/web-dashboard/public/assets/index-DfjkO16t.js.map +1 -0
  133. package/src/web-dashboard/public/index.html +2 -2
  134. package/src/web-dashboard/public/assets/index-V0rIqVbg.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/editing/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/editing/types.ts"],"names":[],"mappings":"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"}
@@ -19,16 +19,60 @@ export const EXTENSION_TO_LANGUAGE = {
19
19
  '.go': 'go',
20
20
  '.rs': 'rust',
21
21
  };
22
- /** Converts a 0-based index position to SourcePosition by scanning the code */
22
+ /**
23
+ * The line-start offsets of the string {@link offsetToPosition} was last asked
24
+ * about, so a position costs a binary search instead of a copy of the prefix.
25
+ */
26
+ let cachedLineStartsCode = null;
27
+ let cachedLineStarts = [];
28
+ /**
29
+ * Converts a 0-based index position to SourcePosition by scanning the code.
30
+ *
31
+ * ONE INDEX PER FILE, NOT ONE PER POSITION (measured 2026-10-16). The plain
32
+ * implementation walked the string from the start on every single call
33
+ * (`code.slice(0, offset).split('\n')`), which is O(size) per position and so
34
+ * O(size × positions) per file. That is invisible on a hand-written file and
35
+ * fatal on a generated one: `analyzeStructure` over the dashboard's own
36
+ * committed bundle (`src/web-dashboard/public/assets/index-V0rIqVbg.js`, 1.5 MB
37
+ * on one line) took **64 s**, with 93.2% of the CPU samples inside this
38
+ * function, and `buildCodeMap` over this repository did not finish in 45 s. The
39
+ * dashboard builds that map SYNCHRONOUSLY while answering a request (the chat's
40
+ * project context, `getProjectBundle`), so the whole time was time the server
41
+ * answered nothing at all — which the browser reports, accurately but
42
+ * uselessly, as "Could not reach the dashboard server."
43
+ *
44
+ * The line starts are remembered for ONE string — the file being analyzed — as
45
+ * the offsets a line begins at, so the same input now costs one pass plus a
46
+ * binary search. Behavior is UNCHANGED, including the clamps the old arithmetic
47
+ * did implicitly: `offset <= 0` is still line 1 column 1, and an offset past the
48
+ * end still reports the last line and the column the end of the file sits at
49
+ * (`slice` stopped at the end). Memory is bounded by one file's index.
50
+ */
23
51
  export function offsetToPosition(code, offset) {
24
52
  if (offset <= 0)
25
53
  return { line: 1, column: 1 };
26
- const before = code.slice(0, offset);
27
- const lines = before.split('\n');
28
- return {
29
- line: lines.length,
30
- column: lines[lines.length - 1].length + 1,
31
- };
54
+ if (cachedLineStartsCode !== code) {
55
+ const starts = [0];
56
+ for (let i = 0; i < code.length; i += 1) {
57
+ if (code.charCodeAt(i) === 0x0a)
58
+ starts.push(i + 1);
59
+ }
60
+ cachedLineStartsCode = code;
61
+ cachedLineStarts = starts;
62
+ }
63
+ const starts = cachedLineStarts;
64
+ const pos = Math.min(offset, code.length);
65
+ // Largest line start <= pos: that is the line `pos` falls on.
66
+ let lo = 0;
67
+ let hi = starts.length - 1;
68
+ while (lo < hi) {
69
+ const mid = (lo + hi + 1) >> 1;
70
+ if (starts[mid] <= pos)
71
+ lo = mid;
72
+ else
73
+ hi = mid - 1;
74
+ }
75
+ return { line: lo + 1, column: pos - starts[lo] + 1 };
32
76
  }
33
77
  /** Converts a SourcePosition back to a 0-based offset */
34
78
  export function positionToOffset(code, pos) {
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/editing/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/editing/types.ts"],"names":[],"mappings":"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"}
@@ -92,6 +92,37 @@ export declare function servedRouteFrom(route: ResolvedRoute): ServedRoute;
92
92
  /** Run `fn` with strict model mode forced on/off for this async turn. */
93
93
  export declare function withStrictModel<T>(strict: boolean, fn: () => T): T;
94
94
  export declare function strictModelMode(): boolean;
95
+ /**
96
+ * THE CONTRACT OF A NAMED MODEL — a pin HOLDS, and switching needs permission.
97
+ *
98
+ * WHY A SEPARATE PREDICATE FROM {@link strictModelMode}. That one answers "is
99
+ * this process/turn configured to refuse substitution?", which is OFF unless
100
+ * asked for — correct for an unpinned run, where the router picking a healthy
101
+ * model is the feature. It is the WRONG question for a run that NAMED a pair,
102
+ * because a pin is not a preference: the caller spent money and review time on a
103
+ * specific model, so "it ran on something else" is not a degraded answer, it is a
104
+ * different experiment. Measured (2026-10-16, this repository): a `-p deepseek
105
+ * -m deepseek-flash` assessment run slid to `local/deepseek-coder:latest` — a
106
+ * small local model — for its final synthesis, and the result was scored as if
107
+ * DeepSeek had produced it. The cost was not only the wasted paid tokens: the
108
+ * comparison it invalidated had to be thrown away, and the report a user would
109
+ * have trusted was written by a model they never named. `NUVIRA_STRICT_MODEL` was
110
+ * already able to prevent this; leaving it off-by-default for a NAMED pair put
111
+ * the burden on the operator to remember a second flag to get the contract they
112
+ * had already stated by pinning.
113
+ *
114
+ * SO: named pair + no explicit env choice ⇒ it holds. The tri-state env is how an
115
+ * operator overrides it:
116
+ * - `NUVIRA_STRICT_MODEL=1` → hold, whatever the caller pinned (unchanged).
117
+ * - `NUVIRA_STRICT_MODEL=0` → an EXPLICIT "substitution is allowed": the
118
+ * documented repair-and-announce behaviour, for a job that would rather
119
+ * deliver on a stand-in than not deliver.
120
+ * - unset → `pinned`, i.e. a named pair holds while an unpinned run is
121
+ * byte-identical to before this rule.
122
+ * A per-turn `withStrictModel` scope still outranks all three (the dashboard's
123
+ * per-chat "this model only" switch, and the CLI's own pin, both use it).
124
+ */
125
+ export declare function strictPinPolicy(pinned: boolean): boolean;
95
126
  /** Test hook: forget what has already been announced. */
96
127
  export declare function resetSubstitutionReporting(): void;
97
128
  /** Test hook: forget which happy-path routes have been audited. */
@@ -134,6 +165,14 @@ export declare function reportSubstitution(input: {
134
165
  * The wording is stable on purpose: `error-repair.ts` classifies on
135
166
  * `strict model mode` / `forbids substituting` to refuse spending repair
136
167
  * attempts on a pin only the user can change.
168
+ *
169
+ * THE REMEDY NAMES THE OPT-OUT THAT EXISTS (2026-10-16). It used to say "unset
170
+ * NUVIRA_STRICT_MODEL to let the router repair it" — and that is now wrong twice
171
+ * over: the variable is typically ALREADY unset (the pin itself is what turned the
172
+ * rule on), so the instruction asks for a change that changes nothing, and the
173
+ * real escape — `NUVIRA_STRICT_MODEL=0` — was never named. A refusal whose advice
174
+ * cannot work reads as the tool being stuck. So the sentence offers exactly the two
175
+ * routes that do work: name a model the provider serves, or set the variable to 0.
137
176
  */
138
177
  export declare function strictPinRefusal(providerType: string, requested: string | undefined): string | undefined;
139
178
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"route-resolver.d.ts","sourceRoot":"","sources":["../../src/inference/route-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAUxD,gEAAgE;AAChE,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,KAAK,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAEnG,MAAM,WAAW,YAAY;IAC3B,oEAAoE;IACpE,YAAY,EAAE,MAAM,CAAC;IACrB,iFAAiF;IACjF,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,mFAAmF;IACnF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,+DAA+D;AAC/D,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,GAAG,WAAW,CAQjE;AAoBD,yEAAyE;AACzE,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAElE;AAED,wBAAgB,eAAe,IAAI,OAAO,CAIzC;AAcD,yDAAyD;AACzD,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD;AAuBD,mEAAmE;AACnE,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAED,oFAAoF;AACpF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,MAAM,CAKT;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,IAAI,CAoCP;AA2DD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,MAAM,GAAG,SAAS,CAYpB;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAmFhF"}
1
+ {"version":3,"file":"route-resolver.d.ts","sourceRoot":"","sources":["../../src/inference/route-resolver.ts"],"names":[],"mappings":"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"}
@@ -78,6 +78,47 @@ export function strictModelMode() {
78
78
  return scoped;
79
79
  return process.env.NUVIRA_STRICT_MODEL === '1';
80
80
  }
81
+ /**
82
+ * THE CONTRACT OF A NAMED MODEL — a pin HOLDS, and switching needs permission.
83
+ *
84
+ * WHY A SEPARATE PREDICATE FROM {@link strictModelMode}. That one answers "is
85
+ * this process/turn configured to refuse substitution?", which is OFF unless
86
+ * asked for — correct for an unpinned run, where the router picking a healthy
87
+ * model is the feature. It is the WRONG question for a run that NAMED a pair,
88
+ * because a pin is not a preference: the caller spent money and review time on a
89
+ * specific model, so "it ran on something else" is not a degraded answer, it is a
90
+ * different experiment. Measured (2026-10-16, this repository): a `-p deepseek
91
+ * -m deepseek-flash` assessment run slid to `local/deepseek-coder:latest` — a
92
+ * small local model — for its final synthesis, and the result was scored as if
93
+ * DeepSeek had produced it. The cost was not only the wasted paid tokens: the
94
+ * comparison it invalidated had to be thrown away, and the report a user would
95
+ * have trusted was written by a model they never named. `NUVIRA_STRICT_MODEL` was
96
+ * already able to prevent this; leaving it off-by-default for a NAMED pair put
97
+ * the burden on the operator to remember a second flag to get the contract they
98
+ * had already stated by pinning.
99
+ *
100
+ * SO: named pair + no explicit env choice ⇒ it holds. The tri-state env is how an
101
+ * operator overrides it:
102
+ * - `NUVIRA_STRICT_MODEL=1` → hold, whatever the caller pinned (unchanged).
103
+ * - `NUVIRA_STRICT_MODEL=0` → an EXPLICIT "substitution is allowed": the
104
+ * documented repair-and-announce behaviour, for a job that would rather
105
+ * deliver on a stand-in than not deliver.
106
+ * - unset → `pinned`, i.e. a named pair holds while an unpinned run is
107
+ * byte-identical to before this rule.
108
+ * A per-turn `withStrictModel` scope still outranks all three (the dashboard's
109
+ * per-chat "this model only" switch, and the CLI's own pin, both use it).
110
+ */
111
+ export function strictPinPolicy(pinned) {
112
+ const scoped = strictOverride.getStore();
113
+ if (scoped !== undefined)
114
+ return scoped;
115
+ const env = process.env.NUVIRA_STRICT_MODEL;
116
+ if (env === '1')
117
+ return true;
118
+ if (env === '0')
119
+ return false;
120
+ return pinned;
121
+ }
81
122
  /**
82
123
  * Substitutions already reported in this process, keyed by `provider::requested→served`.
83
124
  *
@@ -236,6 +277,14 @@ function verifiedEquivalent(model, excludeProvider) {
236
277
  * The wording is stable on purpose: `error-repair.ts` classifies on
237
278
  * `strict model mode` / `forbids substituting` to refuse spending repair
238
279
  * attempts on a pin only the user can change.
280
+ *
281
+ * THE REMEDY NAMES THE OPT-OUT THAT EXISTS (2026-10-16). It used to say "unset
282
+ * NUVIRA_STRICT_MODEL to let the router repair it" — and that is now wrong twice
283
+ * over: the variable is typically ALREADY unset (the pin itself is what turned the
284
+ * rule on), so the instruction asks for a change that changes nothing, and the
285
+ * real escape — `NUVIRA_STRICT_MODEL=0` — was never named. A refusal whose advice
286
+ * cannot work reads as the tool being stuck. So the sentence offers exactly the two
287
+ * routes that do work: name a model the provider serves, or set the variable to 0.
239
288
  */
240
289
  export function strictPinRefusal(providerType, requested) {
241
290
  if (!requested || requested === 'default')
@@ -248,7 +297,7 @@ export function strictPinRefusal(providerType, requested) {
248
297
  'Strict model mode is on and forbids substituting another model. ' +
249
298
  (equivalent
250
299
  ? `The same model is verified on '${equivalent}' — pin that instead.`
251
- : 'Pick a model this provider serves (`nuvira models`), or unset NUVIRA_STRICT_MODEL to let the router repair it.'));
300
+ : 'Pick a model this provider serves (`nuvira models`), or set NUVIRA_STRICT_MODEL=0 to let a substitute answer instead.'));
252
301
  }
253
302
  /**
254
303
  * Resolve `{providerType, provider, model}` as ONE validated pair.
@@ -289,7 +338,7 @@ export async function resolveRoute(request) {
289
338
  if (request.strict ?? strictModelMode()) {
290
339
  throw new Error(`Model '${requested}' is not available on '${providerType}', and strict model mode ` +
291
340
  'forbids substituting another model. Pick a model this provider serves ' +
292
- '(`nuvira models`), or unset NUVIRA_STRICT_MODEL to let the router repair it.');
341
+ '(`nuvira models`), or set NUVIRA_STRICT_MODEL=0 to let a substitute answer instead.');
293
342
  }
294
343
  reportSubstitution({
295
344
  providerType,
@@ -1 +1 @@
1
- {"version":3,"file":"route-resolver.js","sourceRoot":"","sources":["../../src/inference/route-resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"route-resolver.js","sourceRoot":"","sources":["../../src/inference/route-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * THINKING-MODE REASONING REPLAY — the wire invariant DeepSeek's tool-calling
3
+ * thinking mode enforces, kept true by the harness instead of by luck.
4
+ *
5
+ * THE CONTRACT (DeepSeek's own docs, quoted in full because the exact wording is
6
+ * the whole argument): "For turns that do perform tool calls, the
7
+ * `reasoning_content` must be fully passed back to the API in all subsequent
8
+ * requests. If your code does not correctly pass back `reasoning_content`, the
9
+ * API will return a 400 error."
10
+ *
11
+ * OBSERVED FAILURE (2026-10-16, a real assessment run on this repository —
12
+ * `~/.nuvira/debug-logs/cli-chat-1792147116253.log`, provider `deepseek`,
13
+ * model `deepseek-flash`, transport `native`). Late in the turn, after the loop
14
+ * recovered a tool call the model had written as TEXT, four consecutive requests
15
+ * were rejected:
16
+ *
17
+ * 400 {"error":{"message":"The `reasoning_content` in the thinking mode must
18
+ * be passed back to the API. (request_id: ffd98335-…)"}}
19
+ *
20
+ * …each with a DIFFERENT request_id and an identical body, so all four were the
21
+ * same invalid request re-sent: the loop's bounded mid-turn continuation retried
22
+ * the identical thread four times (`continuation 2/4` … `4/4`) and the turn only
23
+ * completed because the provider walk eventually reached a candidate that
24
+ * tolerated the thread. Nothing repaired the request, because nothing could see
25
+ * what was wrong with it.
26
+ *
27
+ * WHAT WAS WRONG. The loop records `reasoningContent` on an assistant turn only
28
+ * when that step's response carried one (`tool-loop.ts`: `...(response.reasoningContent
29
+ * ? { reasoningContent: response.reasoningContent } : {})`), which is correct and
30
+ * is not the bug. The bug is that a conversation can end up INCONSISTENT — some
31
+ * assistant turns with reasoning, one tool-call turn without — because a single
32
+ * step returned no reasoning (a provider/gateway that omits it for a tool call, or
33
+ * a tool call recovered from text rather than a native `tool_calls` field).
34
+ * Demonstrated deterministically against this repository's own loop: a mock
35
+ * provider that reasons on step 1 and not on step 2 makes step 3's request carry
36
+ * `toolCalls: [c2]` with no reasoning, while the sibling turn still has it.
37
+ * Reported identically by other harnesses (opencode #24722, claude-code-router
38
+ * #1378): "if ALL assistant messages consistently include `reasoning_content`
39
+ * (including the `tool_calls` message), the request succeeds".
40
+ *
41
+ * THE REPAIR, AND WHY THIS ONE. The API accepts either consistent extreme, and
42
+ * this module picks the one that never discards the model's own reasoning: a gap
43
+ * is FILLED so the conversation stays uniform, rather than the whole thread being
44
+ * stripped to match the gap. Stripping would throw away real reasoning from every
45
+ * earlier turn (which the contract says the endpoint wants), so filling is both
46
+ * the smaller loss and the remedy the API's own bug report suggests.
47
+ *
48
+ * MEASURED SAFE (2026-10-16, live, `api.deepseek.com`, model `deepseek-flash`,
49
+ * via this repository's configured provider): a tool-call turn carrying the
50
+ * placeholder below is accepted — HTTP 200 with a normal completion — exactly
51
+ * like the same conversation with the gap unfilled and with all reasoning
52
+ * stripped. So on today's endpoint this is a NO-OP for a thread that would
53
+ * otherwise be served, and it closes the gap for the endpoint that enforces the
54
+ * rule (the run above shows that endpoint exists and that we can meet it).
55
+ *
56
+ * NARROWNESS. Nothing is added unless the conversation ALREADY carries reasoning
57
+ * on some assistant turn — a non-thinking provider's thread is untouched, and the
58
+ * wire stays byte-identical. Only turns that carry `tool_calls` are filled, which
59
+ * is the turn class the contract names; a content-only assistant turn is left
60
+ * alone because no rule requires it and inventing text there would be noise.
61
+ */
62
+ import type { ToolMessage } from './interface.js';
63
+ /**
64
+ * What a gap is filled with.
65
+ *
66
+ * Deliberately a statement of FACT about our own bookkeeping rather than an
67
+ * invented chain of thought: the endpoint requires the field's presence on a
68
+ * tool-call turn, and the model reading it back must not be told a plausible lie
69
+ * about what it was thinking. A thinking model that sees this knows only that the
70
+ * reasoning for that call was not retained — which is true.
71
+ */
72
+ export declare const REASONING_NOT_RETAINED = "(reasoning for this tool call was not retained)";
73
+ /**
74
+ * Apply the invariant to a conversation, returning a NEW array only when a gap
75
+ * had to be filled (otherwise the caller's array is returned unchanged, so a
76
+ * valid conversation keeps the exact wire shape it had).
77
+ *
78
+ * Returns the messages plus how many gaps were filled, so a caller can log that
79
+ * it happened — a repair nobody can see is indistinguishable from a request that
80
+ * was always valid.
81
+ */
82
+ export declare function applyThinkingReplayInvariant(messages: readonly ToolMessage[]): {
83
+ messages: readonly ToolMessage[];
84
+ filled: number;
85
+ };
86
+ //# sourceMappingURL=thinking-replay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thinking-replay.d.ts","sourceRoot":"","sources":["../../src/inference/thinking-replay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,oDAAoD,CAAC;AAgBxF;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,SAAS,WAAW,EAAE,GAC/B;IAAE,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAatD"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * THINKING-MODE REASONING REPLAY — the wire invariant DeepSeek's tool-calling
3
+ * thinking mode enforces, kept true by the harness instead of by luck.
4
+ *
5
+ * THE CONTRACT (DeepSeek's own docs, quoted in full because the exact wording is
6
+ * the whole argument): "For turns that do perform tool calls, the
7
+ * `reasoning_content` must be fully passed back to the API in all subsequent
8
+ * requests. If your code does not correctly pass back `reasoning_content`, the
9
+ * API will return a 400 error."
10
+ *
11
+ * OBSERVED FAILURE (2026-10-16, a real assessment run on this repository —
12
+ * `~/.nuvira/debug-logs/cli-chat-1792147116253.log`, provider `deepseek`,
13
+ * model `deepseek-flash`, transport `native`). Late in the turn, after the loop
14
+ * recovered a tool call the model had written as TEXT, four consecutive requests
15
+ * were rejected:
16
+ *
17
+ * 400 {"error":{"message":"The `reasoning_content` in the thinking mode must
18
+ * be passed back to the API. (request_id: ffd98335-…)"}}
19
+ *
20
+ * …each with a DIFFERENT request_id and an identical body, so all four were the
21
+ * same invalid request re-sent: the loop's bounded mid-turn continuation retried
22
+ * the identical thread four times (`continuation 2/4` … `4/4`) and the turn only
23
+ * completed because the provider walk eventually reached a candidate that
24
+ * tolerated the thread. Nothing repaired the request, because nothing could see
25
+ * what was wrong with it.
26
+ *
27
+ * WHAT WAS WRONG. The loop records `reasoningContent` on an assistant turn only
28
+ * when that step's response carried one (`tool-loop.ts`: `...(response.reasoningContent
29
+ * ? { reasoningContent: response.reasoningContent } : {})`), which is correct and
30
+ * is not the bug. The bug is that a conversation can end up INCONSISTENT — some
31
+ * assistant turns with reasoning, one tool-call turn without — because a single
32
+ * step returned no reasoning (a provider/gateway that omits it for a tool call, or
33
+ * a tool call recovered from text rather than a native `tool_calls` field).
34
+ * Demonstrated deterministically against this repository's own loop: a mock
35
+ * provider that reasons on step 1 and not on step 2 makes step 3's request carry
36
+ * `toolCalls: [c2]` with no reasoning, while the sibling turn still has it.
37
+ * Reported identically by other harnesses (opencode #24722, claude-code-router
38
+ * #1378): "if ALL assistant messages consistently include `reasoning_content`
39
+ * (including the `tool_calls` message), the request succeeds".
40
+ *
41
+ * THE REPAIR, AND WHY THIS ONE. The API accepts either consistent extreme, and
42
+ * this module picks the one that never discards the model's own reasoning: a gap
43
+ * is FILLED so the conversation stays uniform, rather than the whole thread being
44
+ * stripped to match the gap. Stripping would throw away real reasoning from every
45
+ * earlier turn (which the contract says the endpoint wants), so filling is both
46
+ * the smaller loss and the remedy the API's own bug report suggests.
47
+ *
48
+ * MEASURED SAFE (2026-10-16, live, `api.deepseek.com`, model `deepseek-flash`,
49
+ * via this repository's configured provider): a tool-call turn carrying the
50
+ * placeholder below is accepted — HTTP 200 with a normal completion — exactly
51
+ * like the same conversation with the gap unfilled and with all reasoning
52
+ * stripped. So on today's endpoint this is a NO-OP for a thread that would
53
+ * otherwise be served, and it closes the gap for the endpoint that enforces the
54
+ * rule (the run above shows that endpoint exists and that we can meet it).
55
+ *
56
+ * NARROWNESS. Nothing is added unless the conversation ALREADY carries reasoning
57
+ * on some assistant turn — a non-thinking provider's thread is untouched, and the
58
+ * wire stays byte-identical. Only turns that carry `tool_calls` are filled, which
59
+ * is the turn class the contract names; a content-only assistant turn is left
60
+ * alone because no rule requires it and inventing text there would be noise.
61
+ */
62
+ /**
63
+ * What a gap is filled with.
64
+ *
65
+ * Deliberately a statement of FACT about our own bookkeeping rather than an
66
+ * invented chain of thought: the endpoint requires the field's presence on a
67
+ * tool-call turn, and the model reading it back must not be told a plausible lie
68
+ * about what it was thinking. A thinking model that sees this knows only that the
69
+ * reasoning for that call was not retained — which is true.
70
+ */
71
+ export const REASONING_NOT_RETAINED = '(reasoning for this tool call was not retained)';
72
+ /**
73
+ * True when any assistant turn in the conversation carries reasoning.
74
+ *
75
+ * That is the signal that this is a thinking-mode conversation: the endpoint is
76
+ * already receiving `reasoning_content` on some turns, so it is entitled to
77
+ * require it on the tool-call turns too (and does, per the contract above).
78
+ * A thread with no reasoning anywhere is a non-thinking conversation and is left
79
+ * completely untouched — missing reasoning is NOT an error by itself; the API
80
+ * accepts a thread that never had any.
81
+ */
82
+ function conversationCarriesReasoning(messages) {
83
+ return messages.some((m) => m.role === 'assistant' && Boolean(m.reasoningContent));
84
+ }
85
+ /**
86
+ * Apply the invariant to a conversation, returning a NEW array only when a gap
87
+ * had to be filled (otherwise the caller's array is returned unchanged, so a
88
+ * valid conversation keeps the exact wire shape it had).
89
+ *
90
+ * Returns the messages plus how many gaps were filled, so a caller can log that
91
+ * it happened — a repair nobody can see is indistinguishable from a request that
92
+ * was always valid.
93
+ */
94
+ export function applyThinkingReplayInvariant(messages) {
95
+ if (!conversationCarriesReasoning(messages))
96
+ return { messages, filled: 0 };
97
+ let filled = 0;
98
+ const out = messages.map((m) => {
99
+ if (m.role !== 'assistant')
100
+ return m;
101
+ if (!m.toolCalls || m.toolCalls.length === 0)
102
+ return m;
103
+ if (m.reasoningContent)
104
+ return m;
105
+ filled += 1;
106
+ return { ...m, reasoningContent: REASONING_NOT_RETAINED };
107
+ });
108
+ return { messages: filled > 0 ? out : messages, filled };
109
+ }
110
+ //# sourceMappingURL=thinking-replay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thinking-replay.js","sourceRoot":"","sources":["../../src/inference/thinking-replay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAIH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,iDAAiD,CAAC;AAExF;;;;;;;;;GASG;AACH,SAAS,4BAA4B,CAAC,QAAgC;IACpE,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACrF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,4BAA4B,CAC1C,QAAgC;IAEhC,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IAE5E,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC7B,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW;YAAE,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QACvD,IAAI,CAAC,CAAC,gBAAgB;YAAE,OAAO,CAAC,CAAC;QACjC,MAAM,IAAI,CAAC,CAAC;QACZ,OAAO,EAAE,GAAG,CAAC,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC3D,CAAC"}
@@ -38,6 +38,15 @@ interface WireResponse {
38
38
  /**
39
39
  * Build the wire `messages` array: assistant messages carry `tool_calls`,
40
40
  * tool messages carry `tool_call_id`.
41
+ *
42
+ * This is the ONE place every tool conversation is rendered for the wire (both
43
+ * the streaming and non-streaming helpers below), so it is also the one place the
44
+ * thinking-mode REPLAY INVARIANT has to hold: in a conversation that already
45
+ * carries reasoning, every tool-call turn must carry it too, or the endpoint
46
+ * rejects the request — see {@link applyThinkingReplayInvariant}, which fills the
47
+ * gap the loop can leave behind. A conversation with no reasoning anywhere is
48
+ * returned exactly as given, so nothing here changes a shape that was already
49
+ * valid.
41
50
  */
42
51
  export declare function buildWireMessages(messages: ToolMessage[]): Array<Record<string, unknown>>;
43
52
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/inference/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAIpG,oEAAoE;AACpE,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C;AAED,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,OAAO,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;YAAC,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;YAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,CAAC;QACtG,0EAA0E;QAC1E,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC/B,CAAC,CAAC;IACH,2EAA2E;IAC3E,KAAK,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAwBzF;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG;IAC/D,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,KAAK,CAAC,EAAE,kBAAkB,CAAC;CAC5B,CAcA;AAED,4EAA4E;AAC5E,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,YAAY,GAAG,gBAAgB,CAqB1E;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAAC,IAAI,EAAE;IACnD;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC3I;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAuD5B;AA+CD;;;;;;GAMG;AACH,wBAAsB,8BAA8B,CAClD,IAAI,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC,CAAC,EACpD,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAC/B,OAAO,CAAC,gBAAgB,CAAC,CAkL3B"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/inference/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAKpG,oEAAoE;AACpE,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C;AAED,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,OAAO,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;YAAC,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;YAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,CAAC;QACtG,0EAA0E;QAC1E,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC/B,CAAC,CAAC;IACH,2EAA2E;IAC3E,KAAK,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAyBzF;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG;IAC/D,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,KAAK,CAAC,EAAE,kBAAkB,CAAC;CAC5B,CAcA;AAED,4EAA4E;AAC5E,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,YAAY,GAAG,gBAAgB,CAqB1E;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAAC,IAAI,EAAE;IACnD;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC3I;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAuD5B;AA+CD;;;;;;GAMG;AACH,wBAAsB,8BAA8B,CAClD,IAAI,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC,CAAC,EACpD,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAC/B,OAAO,CAAC,gBAAgB,CAAC,CAkL3B"}
@@ -10,12 +10,23 @@
10
10
  */
11
11
  import { attachHttpContext } from './http-error.js';
12
12
  import { parseSSELine } from './sse.js';
13
+ import { applyThinkingReplayInvariant } from './thinking-replay.js';
13
14
  /**
14
15
  * Build the wire `messages` array: assistant messages carry `tool_calls`,
15
16
  * tool messages carry `tool_call_id`.
17
+ *
18
+ * This is the ONE place every tool conversation is rendered for the wire (both
19
+ * the streaming and non-streaming helpers below), so it is also the one place the
20
+ * thinking-mode REPLAY INVARIANT has to hold: in a conversation that already
21
+ * carries reasoning, every tool-call turn must carry it too, or the endpoint
22
+ * rejects the request — see {@link applyThinkingReplayInvariant}, which fills the
23
+ * gap the loop can leave behind. A conversation with no reasoning anywhere is
24
+ * returned exactly as given, so nothing here changes a shape that was already
25
+ * valid.
16
26
  */
17
27
  export function buildWireMessages(messages) {
18
- return messages.map((m) => {
28
+ const { messages: replayable } = applyThinkingReplayInvariant(messages);
29
+ return replayable.map((m) => {
19
30
  // Reasoning replay: a thinking model (DeepSeek v4) requires its prior
20
31
  // `reasoning_content` echoed on the assistant turn that carried the tool
21
32
  // calls, or the NEXT request is rejected. Emitted only when present, so
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/inference/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/inference/tools.ts"],"names":[],"mappings":"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"}