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.
- package/README.md +19 -1
- package/dist/agents/agents/package-agent.d.ts +22 -0
- package/dist/agents/agents/package-agent.d.ts.map +1 -1
- package/dist/agents/agents/package-agent.js +92 -4
- package/dist/agents/agents/package-agent.js.map +1 -1
- package/dist/agents/release-preflight.d.ts +42 -5
- package/dist/agents/release-preflight.d.ts.map +1 -1
- package/dist/agents/release-preflight.js +82 -5
- package/dist/agents/release-preflight.js.map +1 -1
- package/dist/cli/chat.d.ts.map +1 -1
- package/dist/cli/chat.js +99 -9
- package/dist/cli/chat.js.map +1 -1
- package/dist/cli/cli-program.d.ts.map +1 -1
- package/dist/cli/cli-program.js +6 -0
- package/dist/cli/cli-program.js.map +1 -1
- package/dist/cli/code-map.d.ts +51 -0
- package/dist/cli/code-map.d.ts.map +1 -1
- package/dist/cli/code-map.js +174 -2
- package/dist/cli/code-map.js.map +1 -1
- package/dist/cli/credentials.d.ts.map +1 -1
- package/dist/cli/credentials.js +4 -1
- package/dist/cli/credentials.js.map +1 -1
- package/dist/cli/execute.js +5 -5
- package/dist/cli/execute.js.map +1 -1
- package/dist/cli/loop-executor.d.ts.map +1 -1
- package/dist/cli/loop-executor.js +76 -13
- package/dist/cli/loop-executor.js.map +1 -1
- package/dist/cli/motion.d.ts +53 -0
- package/dist/cli/motion.d.ts.map +1 -0
- package/dist/cli/motion.js +516 -0
- package/dist/cli/motion.js.map +1 -0
- package/dist/config/process-env.d.ts.map +1 -1
- package/dist/config/process-env.js +2 -2
- package/dist/config/process-env.js.map +1 -1
- package/dist/editing/types.d.ts +23 -1
- package/dist/editing/types.d.ts.map +1 -1
- package/dist/editing/types.js +51 -7
- package/dist/editing/types.js.map +1 -1
- package/dist/inference/route-resolver.d.ts +39 -0
- package/dist/inference/route-resolver.d.ts.map +1 -1
- package/dist/inference/route-resolver.js +51 -2
- package/dist/inference/route-resolver.js.map +1 -1
- package/dist/inference/thinking-replay.d.ts +86 -0
- package/dist/inference/thinking-replay.d.ts.map +1 -0
- package/dist/inference/thinking-replay.js +110 -0
- package/dist/inference/thinking-replay.js.map +1 -0
- package/dist/inference/tools.d.ts +9 -0
- package/dist/inference/tools.d.ts.map +1 -1
- package/dist/inference/tools.js +12 -1
- package/dist/inference/tools.js.map +1 -1
- package/dist/learning/assessment-protocol.d.ts +120 -0
- package/dist/learning/assessment-protocol.d.ts.map +1 -0
- package/dist/learning/assessment-protocol.js +236 -0
- package/dist/learning/assessment-protocol.js.map +1 -0
- package/dist/learning/assessment-turn-context.d.ts +54 -0
- package/dist/learning/assessment-turn-context.d.ts.map +1 -0
- package/dist/learning/assessment-turn-context.js +71 -0
- package/dist/learning/assessment-turn-context.js.map +1 -0
- package/dist/learning/exhaustion-report.d.ts +24 -1
- package/dist/learning/exhaustion-report.d.ts.map +1 -1
- package/dist/learning/exhaustion-report.js +18 -6
- package/dist/learning/exhaustion-report.js.map +1 -1
- package/dist/learning/machine-facts.d.ts +7 -0
- package/dist/learning/machine-facts.d.ts.map +1 -1
- package/dist/learning/machine-facts.js +37 -2
- package/dist/learning/machine-facts.js.map +1 -1
- package/dist/learning/perf-probe.d.ts +140 -0
- package/dist/learning/perf-probe.d.ts.map +1 -0
- package/dist/learning/perf-probe.js +316 -0
- package/dist/learning/perf-probe.js.map +1 -0
- package/dist/learning/self-check-discovery.d.ts +117 -0
- package/dist/learning/self-check-discovery.d.ts.map +1 -0
- package/dist/learning/self-check-discovery.js +334 -0
- package/dist/learning/self-check-discovery.js.map +1 -0
- package/dist/skills/bundled-skills-phase3.d.ts.map +1 -1
- package/dist/skills/bundled-skills-phase3.js +3 -3
- package/dist/skills/bundled-skills-phase3.js.map +1 -1
- package/dist/skills/sandbox-executor.d.ts.map +1 -1
- package/dist/skills/sandbox-executor.js +115 -34
- package/dist/skills/sandbox-executor.js.map +1 -1
- package/dist/tools/child-agent-runtime.js +19 -1
- package/dist/tools/child-agent-runtime.js.map +1 -1
- package/dist/tools/credentials-tool.d.ts.map +1 -1
- package/dist/tools/credentials-tool.js +4 -1
- package/dist/tools/credentials-tool.js.map +1 -1
- package/dist/tools/loop-project-context.d.ts +7 -0
- package/dist/tools/loop-project-context.d.ts.map +1 -1
- package/dist/tools/loop-project-context.js +44 -0
- package/dist/tools/loop-project-context.js.map +1 -1
- package/dist/tools/modality/motion-tool.d.ts +28 -1
- package/dist/tools/modality/motion-tool.d.ts.map +1 -1
- package/dist/tools/modality/motion-tool.js +261 -10
- package/dist/tools/modality/motion-tool.js.map +1 -1
- package/dist/tools/modality/motion.d.ts +403 -3
- package/dist/tools/modality/motion.d.ts.map +1 -1
- package/dist/tools/modality/motion.js +1096 -41
- package/dist/tools/modality/motion.js.map +1 -1
- package/dist/tools/pipeline-tool.d.ts.map +1 -1
- package/dist/tools/pipeline-tool.js +19 -1
- package/dist/tools/pipeline-tool.js.map +1 -1
- package/dist/tools/plan-store.d.ts +90 -6
- package/dist/tools/plan-store.d.ts.map +1 -1
- package/dist/tools/plan-store.js +140 -13
- package/dist/tools/plan-store.js.map +1 -1
- package/dist/tools/publish-tool.d.ts.map +1 -1
- package/dist/tools/publish-tool.js +9 -0
- package/dist/tools/publish-tool.js.map +1 -1
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +59 -7
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/tool-loop.d.ts +17 -0
- package/dist/tools/tool-loop.d.ts.map +1 -1
- package/dist/tools/tool-loop.js +4 -1
- package/dist/tools/tool-loop.js.map +1 -1
- package/dist/web-dashboard/chat-console.d.ts.map +1 -1
- package/dist/web-dashboard/chat-console.js +11 -1
- package/dist/web-dashboard/chat-console.js.map +1 -1
- package/dist/web-dashboard/motion-data.d.ts +62 -0
- package/dist/web-dashboard/motion-data.d.ts.map +1 -0
- package/dist/web-dashboard/motion-data.js +91 -0
- package/dist/web-dashboard/motion-data.js.map +1 -0
- package/dist/web-dashboard/project-context.js +6 -0
- package/dist/web-dashboard/project-context.js.map +1 -1
- package/dist/web-dashboard/server.d.ts.map +1 -1
- package/dist/web-dashboard/server.js +83 -33
- package/dist/web-dashboard/server.js.map +1 -1
- package/dist/web-dashboard/src/types.d.ts +31 -0
- package/dist/web-dashboard/src/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/web-dashboard/public/assets/{index-CzRU84ET.css → index-CXdBvA0N.css} +1 -1
- package/src/web-dashboard/public/assets/{index-V0rIqVbg.js → index-DfjkO16t.js} +81 -81
- package/src/web-dashboard/public/assets/index-DfjkO16t.js.map +1 -0
- package/src/web-dashboard/public/index.html +2 -2
- 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":"AAAA;;;;;GAKG;AAIH,gEAAgE;AAChE,MAAM,MAAM,iBAAiB,GACzB,YAAY,GACZ,YAAY,GACZ,QAAQ,GACR,IAAI,GACJ,MAAM,GACN,SAAS,CAAC;AAEd,iDAAiD;AACjD,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAanE,CAAC;AAIF,mEAAmE;AACnE,MAAM,WAAW,cAAc;IAC7B,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,mDAAmD;AACnD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,cAAc,CAAC;IACtB,GAAG,EAAE,cAAc,CAAC;CACrB;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/editing/types.ts"],"names":[],"mappings":"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"}
|
package/dist/editing/types.js
CHANGED
|
@@ -19,16 +19,60 @@ export const EXTENSION_TO_LANGUAGE = {
|
|
|
19
19
|
'.go': 'go',
|
|
20
20
|
'.rs': 'rust',
|
|
21
21
|
};
|
|
22
|
-
/**
|
|
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
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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":"AAAA;;;;;GAKG;AAaH,iDAAiD;AACjD,MAAM,CAAC,MAAM,qBAAqB,GAAsC;IACtE,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,QAAQ;IACf,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,MAAM;CACd,CAAC;AAkBF
|
|
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
|
|
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
|
|
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
|
|
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;
|
|
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"}
|
package/dist/inference/tools.js
CHANGED
|
@@ -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
|
-
|
|
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":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAmBpE;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAuB;IACvD,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,4BAA4B,CAAC,QAAQ,CAAC,CAAC;IACxE,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC1B,sEAAsE;QACtE,yEAAyE;QACzE,wEAAwE;QACxE,sEAAsE;QACtE,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChH,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;YAClD,OAAO;gBACL,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI;gBAC1B,UAAU,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;oBACnC,EAAE,EAAE,EAAE,CAAC,EAAE;oBACT,IAAI,EAAE,UAAU;oBAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE;iBACrD,CAAC,CAAC;gBACH,GAAG,SAAS;aACb,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACtB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAC1E,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,SAAS,EAAE,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAuB;IAI5D,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC/C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;QAC3C,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,OAAO,EAAE,IAAI,EAAE,MAAiC,EAAE,CAAC;QACrD,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,0EAA0E;QAC1E,uEAAuE;QACvE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,qBAAqB,CAAC,IAAkB;IACtD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;IAC3C,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;IACvC,MAAM,SAAS,GAAkC,EAAE,CAAC;IACpD,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,UAAU,IAAI,EAAE,EAAE,CAAC;QAC3C,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,sBAAsB,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACtE,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACtH,CAAC;IACD,0EAA0E;IAC1E,MAAM,gBAAgB,GACpB,OAAO,OAAO,EAAE,iBAAiB,KAAK,QAAQ,IAAI,OAAO,CAAC,iBAAiB;QACzE,CAAC,CAAC,OAAO,CAAC,iBAAiB;QAC3B,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,YAAY,GAChB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;IACnG,OAAO;QACL,OAAO;QACP,SAAS;QACT,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1C,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,IAkC9C;IACC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,mBAAmB,CAAC;IAE/E,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAChC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;QAChE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC1C,WAAW;YACX,UAAU,EAAE,SAAS;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC5B,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE;aACjF,CAAC,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC;SAC9B,CAAC;QACF,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;KACrE,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACxC,mEAAmE;QACnE,qEAAqE;QACrE,MAAM,iBAAiB,CAAC,IAAI,KAAK,CAAC,2BAA2B,QAAQ,CAAC,MAAM,MAAM,SAAS,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IACrI,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAiB,CAAC;IACrD,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,IAAI,CAAC;YACH,wEAAwE;YACxE,0EAA0E;YAC1E,8BAA8B;YAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACzB,MAAM,QAAQ,GACZ,KAAK,IAAI,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,iBAAiB,KAAK,QAAQ;gBAC7F,CAAC,CAAC;oBACE,YAAY,EAAE,KAAK,CAAC,aAAa;oBACjC,gBAAgB,EAAE,KAAK,CAAC,iBAAiB;oBACzC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACnE;gBACH,CAAC,CAAC,SAAS,CAAC;YAChB,IAAI,CAAC,MAAM,CACT,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAC9D,MAAM,CAAC,OAAO,EACd,QAAQ,CACT,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,iDAAiD;QACnD,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AA+BD;;;GAGG;AACH,SAAS,sBAAsB,CAAC,IAAY;IAC1C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAClC,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAoB,CAAC;QACnD,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,IAAI,IAAI,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,IAAoD,EACpD,OAAgC;IAEhC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,mBAAmB,CAAC;IAE/E,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAChC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;QAChE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC1C,WAAW;YACX,UAAU,EAAE,SAAS;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC5B,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE;aACjF,CAAC,CAAC;YACH,MAAM,EAAE,IAAI;YACZ,oEAAoE;YACpE,oEAAoE;YACpE,cAAc,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;YACvC,0EAA0E;YAC1E,wDAAwD;YACxD,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;YACxB,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC;SAC9B,CAAC;QACF,0EAA0E;QAC1E,0EAA0E;QAC1E,sBAAsB;QACtB,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACxC,yEAAyE;QACzE,mEAAmE;QACnE,MAAM,iBAAiB,CACrB,IAAI,KAAK,CAAC,qCAAqC,QAAQ,CAAC,MAAM,MAAM,SAAS,EAAE,CAAC,EAChF,QAAQ,CAAC,MAAM,EACf,QAAQ,CAAC,OAAO,CACjB,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;IAC1C,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAE9D,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,MAAM,SAAS,GAA0B,EAAE,CAAC;IAC5C,4EAA4E;IAC5E,+EAA+E;IAC/E,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,iEAAiE;IACjE,4EAA4E;IAC5E,0EAA0E;IAC1E,IAAI,WAA+F,CAAC;IACpG,0EAA0E;IAC1E,8EAA8E;IAC9E,sEAAsE;IACtE,sCAAsC;IACtC,IAAI,YAAgC,CAAC;IACrC;;;;;;;OAOG;IACH,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,6EAA6E;IAC7E,IAAI,OAAO,GAAG,EAAE,CAAC;IAEjB,wFAAwF;IACxF,MAAM,UAAU,GAAG,CAAC,OAAe,EAAQ,EAAE;QAC3C,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,UAAU,GAAG,IAAI,CAAC;QACnD,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,KAAK,EAAE,CAAC;YACV,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;QACD,MAAM,MAAM,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACvB,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC5E,IAAI,CAAC,CAAC,EAAE;oBAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;gBACxB,IAAI,CAAC,CAAC,QAAQ,EAAE,IAAI;oBAAE,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACjD,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS;oBAAE,GAAG,CAAC,YAAY,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;YACtE,CAAC;QACH,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACrC,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtB,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAoB,CAAC;oBACnD,MAAM,WAAW,GAAG,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC;oBACxD,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW;wBAAE,YAAY,GAAG,WAAW,CAAC;oBAC/E,MAAM,cAAc,GAAG,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC;oBACtE,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc;wBAAE,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;oBAC9F,IACE,MAAM,EAAE,KAAK;wBACb,OAAO,MAAM,CAAC,KAAK,CAAC,aAAa,KAAK,QAAQ;wBAC9C,OAAO,MAAM,CAAC,KAAK,CAAC,iBAAiB,KAAK,QAAQ,EAClD,CAAC;wBACD,WAAW,GAAG;4BACZ,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa;4BACxC,gBAAgB,EAAE,MAAM,CAAC,KAAK,CAAC,iBAAiB;4BAChD,GAAG,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBACjF,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,mCAAmC;gBACrC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,CAAC;QACH,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,IAAI;gBAAE,MAAM;YAChB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAClD,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG;gBAAE,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACvE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;YAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC5B,IAAI,OAAO;oBAAE,UAAU,CAAC,OAAO,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,SAAS;YAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IAED,6EAA6E;IAC7E,+EAA+E;IAC/E,iFAAiF;IACjF,6EAA6E;IAC7E,6EAA6E;IAC7E,gFAAgF;IAChF,+EAA+E;IAC/E,gEAAgE;IAChE,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC/D,MAAM,IAAI,KAAK,CACb,+EAA+E;YAC7E,qDAAqD;YACrD,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAC1D,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAkC,EAAE,CAAC;IACtD,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,sBAAsB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACjE,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACjH,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CACT,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAC9D,OAAO,EACP,WAAW,CACZ,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,8CAA8C;QAChD,CAAC;IACH,CAAC;IACD,MAAM,gBAAgB,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjD,OAAO;QACL,OAAO;QACP,SAAS,EAAE,WAAW;QACtB,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1C,CAAC;AACJ,CAAC"}
|