zelari-code 2.8.0 → 2.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/budget/modelContextBuilder.js +17 -17
- package/dist/cli/budget/modelContextBuilder.js.map +1 -1
- package/dist/cli/budget/resourceSnapshot.js +3 -3
- package/dist/cli/budget/tokenBudget.js +8 -8
- package/dist/cli/budget/tokenBudget.js.map +1 -1
- package/dist/cli/hooks/conversationContext.js +1 -1
- package/dist/cli/hooks/conversationContext.js.map +1 -1
- package/dist/cli/hooks/useChatTurn.js +7 -2
- package/dist/cli/hooks/useChatTurn.js.map +1 -1
- package/dist/cli/main.bundled.js +538 -181
- package/dist/cli/main.bundled.js.map +4 -4
- package/dist/cli/missionSlice.js +1 -0
- package/dist/cli/missionSlice.js.map +1 -1
- package/dist/cli/provider/capabilities.js +151 -39
- package/dist/cli/provider/capabilities.js.map +1 -1
- package/dist/cli/provider/openai-compatible.js +130 -22
- package/dist/cli/provider/openai-compatible.js.map +1 -1
- package/dist/cli/provider/sse.js +58 -0
- package/dist/cli/provider/sse.js.map +1 -0
- package/dist/cli/runHeadless.js +17 -78
- package/dist/cli/runHeadless.js.map +1 -1
- package/dist/cli/sessionSpine.js +1 -1
- package/dist/cli/sessionSpine.js.map +1 -1
- package/dist/cli/tools/taskTool.js +4 -0
- package/dist/cli/tools/taskTool.js.map +1 -1
- package/package.json +2 -2
package/dist/cli/missionSlice.js
CHANGED
|
@@ -162,6 +162,7 @@ export async function runAgentMissionSlice(deps) {
|
|
|
162
162
|
tools: toolSpecs,
|
|
163
163
|
toolRegistry: deps.toolRegistry,
|
|
164
164
|
providerStream: deps.providerStream,
|
|
165
|
+
buildLiveness: { mutationRequired: writeRetry, maxRecoveries: 2 },
|
|
165
166
|
cwd: deps.projectRoot,
|
|
166
167
|
maxToolCallsPerTurn: maxToolCalls,
|
|
167
168
|
maxToolLoopIterations: maxToolLoop,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"missionSlice.js","sourceRoot":"","sources":["../../src/cli/missionSlice.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAyB,MAAM,sBAAsB,CAAC;AAI3E,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,sBAAsB,EACtB,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,mCAAmC,EACnC,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;AAEpE,gEAAgE;AAChE,MAAM,CAAC,MAAM,kCAAkC,GAC7C,8DAA8D;IAC9D,iHAAiH;IACjH,4EAA4E;IAC5E,oDAAoD,CAAC;AAOvD;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAWhC,MAAM,KAAK,GAAoB,EAAE,gBAAgB,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;IACzE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE1C,OAAO;QACL,KAAK;QACL,OAAO,CAAC,KAAK;YACX,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;gBAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;gBAChD,MAAM,EAAE,GAAG,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;gBAClC,IAAI,EAAE,IAAI,IAAI;oBAAE,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gBACtC,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;oBAAE,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;gBACjD,OAAO;YACT,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;gBACxC,MAAM,EAAE,GAAG,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;gBAClC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;gBACnE,IAAI,EAAE;oBAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC3B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO;oBAAE,OAAO;gBACjD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;gBAC1C,MAAM,QAAQ,GACZ,IAAI,KAAK,WAAW;oBACpB,gEAAgE,CAAC,IAAI,CACnE,MAAM,CACP,CAAC;gBACJ,IAAI,CAAC,QAAQ;oBAAE,KAAK,CAAC,gBAAgB,IAAI,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,WAAmB,EACnB,UAAmB;IAEnB,MAAM,IAAI,GAAG,GAAG,kCAAkC,OAAO,WAAW,EAAE,CAAC;IACvE,IAAI,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;QACvB,OAAO,GAAG,IAAI,0BAA0B,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;IAC9D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AA+BD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAA2B;IAE3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,mBAAmB,CAAC;IACtD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;IACxD,MAAM,YAAY,GAAG,6BAA6B,CAAC,GAAG,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,+BAA+B,EAAE;QACjE,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,CAAC;KACP,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,yBAAyB,EAAE;QAC/D,OAAO,EAAE,CAAC;QACV,GAAG,EAAE,CAAC;KACP,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC;IAE7C,MAAM,SAAS,GAAoB,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/E,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI;QACrB,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW;QACnC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAqC;KAC7D,CAAC,CAAC,CAAC;IACJ,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAE/C,IAAI,iBAAyB,CAAC;IAC9B,IAAI,CAAC;QACH,iBAAiB,GAAG,4BAA4B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC;IAC7E,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;YACf,qFAAqF,CAAC;IAC1F,CAAC;IAED,MAAM,UAAU,GAAG;QACjB,YAAY;QACZ,aAAa,OAAO,CAAC,QAAQ,EAAE;QAC/B,UAAU,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,SAAS,EAAE;QAC3F,EAAE;QACF,qBAAqB;QACrB,uBAAuB,IAAI,CAAC,WAAW,EAAE;QACzC,8DAA8D;QAC9D,uGAAuG;QACvG,EAAE;QACF,2DAA2D;QAC3D,kFAAkF;QAClF,iEAAiE;KAClE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,MAAM,YAAY,GAAG;QACnB,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,cAAc;QACxB,IAAI,EAAE,qBAAqB;QAC3B,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,GAAG;QACX,KAAK,EAAE,SAAS;QAChB,YAAY,EAAE,UAAU;KACzB,CAAC;IAEF,IAAI,YAAoB,CAAC;IACzB,IAAI,CAAC;QACH,YAAY,GAAG,iBAAiB,CAC9B,YAAY,EACZ;YACE,KAAK,EAAE,WAAW,EAAE;YACpB,SAAS;YACT,IAAI,EAAE,QAAQ;YACd,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,IAAI,SAAS;YAC1D,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IAAI,SAAS;YACpD,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE;gBACR,aAAa,EAAE,EAAE;gBACjB,YAAY,EAAE,SAAS;gBACvB,mBAAmB,EAAE;oBACnB,sBAAsB;oBACtB,2BAA2B;oBAC3B;wBACE,IAAI,EAAE,iBAAiB;wBACvB,KAAK,EAAE,mBAAmB;wBAC1B,QAAQ,EAAE,CAAC;wBACX,OAAO,EAAE,iBAAiB;qBAC3B;iBACF;gBACD,iBAAiB,EAAE,EAAE;aACtB;SACF,CACF,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,YAAY,GAAG;YACb,sEAAsE;YACtE,iBAAiB;YACjB,IAAI,CAAC,gBAAgB,IAAI,EAAE;SAC5B;aACE,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,WAAW,GAAG,2BAA2B,CAC7C,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,UAAU,CAChB,CAAC;IAEF,KAAK,UAAU,OAAO,CACpB,QAAwB,EACxB,MAAc;QAUd,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC;YAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ;YACR,SAAS,EAAE,MAAM;YACjB,QAAQ;YACR,KAAK,EAAE,SAAS;YAChB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,GAAG,EAAE,IAAI,CAAC,WAAW;YACrB,mBAAmB,EAAE,YAAY;YACjC,qBAAqB,EAAE,WAAW;YAClC,GAAG,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxE,CAAC,CAAC;QAEH,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,gBAAgB,GAAG,CAAC,CAAC;QAEzB,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;gBACxC,OAAO,CAAC,OAAO,CAAC,KAMf,CAAC,CAAC;gBACH,IAAI,IAAI,CAAC,OAAO;oBAAE,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC5C,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACtE,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC;gBACtB,CAAC;gBACD,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;oBAC3D,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;gBACD,IACE,KAAK,CAAC,IAAI,KAAK,aAAa;oBAC3B,KAA0E,CAAC,KAAK,EACjF,CAAC;oBACD,MAAM,CAAC,GAAI,KAAyE,CAAC,KAAK,CAAC;oBAC3F,YAAY,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC;oBACpC,gBAAgB,IAAI,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC;gBAC9C,CAAC;gBACD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAK,KAA+B,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;oBACpF,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QAED,kEAAkE;QAClE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACjB,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YAClC,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;gBACjB,IAAI,CAAC,EAAE,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;oBACxD,IAAI,GAAG,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;oBACvB,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,IAAI;YACJ,gBAAgB,EAAE,OAAO,CAAC,KAAK,CAAC,gBAAgB;YAChD,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,aAAa;YAC1C,OAAO;YACP,QAAQ,EAAE,OAAO,CAAC,WAAW,EAAE;YAC/B,YAAY;YACZ,gBAAgB;SACjB,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAmB;QAC9B,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE;QACzC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE;KACvC,CAAC;IAEF,IAAI,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC7C,IAAI,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC;IACxC,IAAI,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;IACtC,IAAI,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC;IAC9B,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC3B,IAAI,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC;IAC1C,IAAI,qBAAqB,GAAG,IAAI,CAAC,gBAAgB,CAAC;IAElD,IACE,UAAU;QACV,WAAW,KAAK,CAAC;QACjB,CAAC,OAAO,EACR,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CACT,+DAA+D,CAChE,CAAC;QACF,MAAM,WAAW,GAAG,mCAAmC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1E,MAAM,aAAa,GAAmB;YACpC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE;YACzC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;YACnD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE;SACvC,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,aAAa,EAAE,GAAG,SAAS,cAAc,CAAC,CAAC;QACvE,WAAW,IAAI,KAAK,CAAC,gBAAgB,CAAC;QACtC,YAAY,IAAI,KAAK,CAAC,aAAa,CAAC;QACpC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACtB,aAAa,GAAG,aAAa;gBAC3B,CAAC,CAAC,GAAG,aAAa,OAAO,KAAK,CAAC,IAAI,EAAE;gBACrC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;QACjB,CAAC;QACD,OAAO,GAAG,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC;QACnC,iBAAiB,IAAI,KAAK,CAAC,YAAY,CAAC;QACxC,qBAAqB,IAAI,KAAK,CAAC,gBAAgB,CAAC;IAClD,CAAC;IAED,MAAM,OAAO,GAAG,iBAAiB,CAAC,aAAa,EAAE;QAC/C,aAAa,EAAE,KAAK;QACpB,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IAEH,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC;gBACxC,aAAa,EAAE,OAAO;gBACtB,UAAU,EAAE,WAAW;gBACvB,OAAO;aACR,CAAC,CAAC;YACH,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YACjC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,wCAAwC;QAC1C,CAAC;IACH,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,iBAAiB,CAAC;YAC1B,eAAe,EAAE,OAAO;YACxB,iBAAiB,EAAE,WAAW;YAC9B,aAAa,EAAE,OAAO;YACtB,OAAO,EAAE,gBAAgB;SAC1B,CAAC,CAAC;QACH,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;QACtB,6DAA6D;QAC7D,YAAY,GAAG,WAAW,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC;IAC1D,CAAC;IAED,0EAA0E;IAC1E,8EAA8E;IAC9E,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;QACtB,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,EAAE,CACT,+EAA+E,CAChF,CAAC;QACJ,CAAC;QACD,YAAY,GAAG,KAAK,CAAC;QACrB,MAAM,CAAC,GAAG,iBAAiB,CAAC;YAC1B,eAAe,EAAE,OAAO;YACxB,iBAAiB,EAAE,CAAC;YACpB,aAAa,EAAE,OAAO,IAAI,YAAY;YACtC,OAAO,EAAE,gBAAgB;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,QAAQ;YAAE,QAAQ,GAAG,IAAI,CAAC;;YAC3B,QAAQ,GAAG,IAAI,CAAC,CAAC,kDAAkD;IAC1E,CAAC;IAED,KAAK,YAAY,CAAC;IAElB,MAAM,UAAU,GAAG,iBAAiB,GAAG,qBAAqB,CAAC;IAC7D,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,CAAC,CAAC;IAEpF,OAAO;QACL,YAAY;QACZ,GAAG,EAAE,IAAI;QACT,aAAa,EAAE,OAAO,IAAI,SAAS;QACnC,UAAU,EAAE,WAAW;QACvB,QAAQ;QACR,UAAU;QACV,OAAO;KACR,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"missionSlice.js","sourceRoot":"","sources":["../../src/cli/missionSlice.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,53 +1,165 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* Context window, reasoning replay, prompt-cache expectations, sampling
|
|
5
|
-
* defaults and compaction thresholds used to live as ad-hoc literals
|
|
6
|
-
* (`deepseek-v4` regex in tokenBudget, temperature 0.7 in the OpenAI
|
|
7
|
-
* adapter, 85/95% clamps in applyBudgetPolicy). Consumers read from
|
|
8
|
-
* {@link capabilitiesFor}; Kraken core stays provider-agnostic.
|
|
9
|
-
*
|
|
10
|
-
* Profile `deepseek-v4` currently matches the previous hardcoded values
|
|
11
|
-
* (1M ctx, cache priced, reasoning replay, same 70/85/95 compaction)
|
|
12
|
-
* so existing tests stay green. New knobs go here, not in call sites.
|
|
2
|
+
* OpenAI-compatible provider profiles — the only layer that knows provider
|
|
3
|
+
* wire quirks. Core liveness, completion and progress policy stay neutral.
|
|
13
4
|
*/
|
|
14
|
-
|
|
5
|
+
function frozenProfile(input) {
|
|
6
|
+
if (input.reasoning.levels)
|
|
7
|
+
Object.freeze(input.reasoning.levels);
|
|
8
|
+
Object.freeze(input.reasoning);
|
|
9
|
+
Object.freeze(input.promptCache);
|
|
10
|
+
Object.freeze(input.toolCalling);
|
|
11
|
+
Object.freeze(input.buildRecovery);
|
|
12
|
+
Object.freeze(input.wire);
|
|
13
|
+
Object.freeze(input.sampling);
|
|
14
|
+
Object.freeze(input.compaction);
|
|
15
|
+
return Object.freeze(input);
|
|
16
|
+
}
|
|
17
|
+
const SHARED_COMPACTION = { warnAt: 0.7, compactAt: 0.85, hardAt: 0.95 };
|
|
18
|
+
const DEFAULT_CAPS = frozenProfile({
|
|
15
19
|
contextWindow: 400_000,
|
|
16
|
-
reasoning:
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
reasoning: { supported: true, levels: ['low', 'medium', 'high'], replayReasoning: true },
|
|
21
|
+
promptCache: { supported: true, pricedCacheRead: false },
|
|
22
|
+
toolCalling: { parallel: true },
|
|
23
|
+
buildRecovery: { forceToolChoice: false, maxForcedTurns: 0 },
|
|
24
|
+
wire: {
|
|
25
|
+
grokRequestHeaders: false,
|
|
26
|
+
omitAutoToolChoice: false,
|
|
27
|
+
toolCallDeltasResetIdle: false,
|
|
28
|
+
retriesBeforeOutput: 0,
|
|
29
|
+
strictSseJson: false,
|
|
30
|
+
},
|
|
31
|
+
sampling: { temperature: 0.7 },
|
|
32
|
+
compaction: { ...SHARED_COMPACTION },
|
|
25
33
|
profile: 'default',
|
|
26
34
|
});
|
|
27
|
-
const DEEPSEEK_V4_CAPS =
|
|
35
|
+
const DEEPSEEK_V4_CAPS = frozenProfile({
|
|
28
36
|
contextWindow: 1_000_000,
|
|
29
|
-
reasoning:
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
reasoning: { supported: true, levels: ['high', 'max'], replayReasoning: true },
|
|
38
|
+
promptCache: { supported: true, pricedCacheRead: true },
|
|
39
|
+
toolCalling: { parallel: true },
|
|
40
|
+
buildRecovery: { forceToolChoice: false, maxForcedTurns: 0 },
|
|
41
|
+
wire: {
|
|
42
|
+
grokRequestHeaders: false,
|
|
43
|
+
omitAutoToolChoice: false,
|
|
44
|
+
toolCallDeltasResetIdle: false,
|
|
45
|
+
retriesBeforeOutput: 0,
|
|
46
|
+
strictSseJson: false,
|
|
47
|
+
},
|
|
48
|
+
sampling: { temperature: 0.7 },
|
|
49
|
+
compaction: { ...SHARED_COMPACTION },
|
|
38
50
|
profile: 'deepseek-v4',
|
|
39
51
|
});
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
52
|
+
const GROK_CAPS = frozenProfile({
|
|
53
|
+
contextWindow: 500_000,
|
|
54
|
+
reasoning: {
|
|
55
|
+
supported: true,
|
|
56
|
+
levels: ['low', 'medium', 'high', 'xhigh'],
|
|
57
|
+
replayReasoning: false,
|
|
58
|
+
},
|
|
59
|
+
promptCache: {
|
|
60
|
+
supported: true,
|
|
61
|
+
pricedCacheRead: true,
|
|
62
|
+
conversationAffinityHeader: 'x-grok-conv-id',
|
|
63
|
+
},
|
|
64
|
+
toolCalling: { parallel: true },
|
|
65
|
+
buildRecovery: { forceToolChoice: true, maxForcedTurns: 1 },
|
|
66
|
+
wire: {
|
|
67
|
+
grokRequestHeaders: true,
|
|
68
|
+
omitAutoToolChoice: true,
|
|
69
|
+
toolCallDeltasResetIdle: true,
|
|
70
|
+
retriesBeforeOutput: 1,
|
|
71
|
+
strictSseJson: true,
|
|
72
|
+
},
|
|
73
|
+
sampling: { temperature: 0.7 },
|
|
74
|
+
compaction: { ...SHARED_COMPACTION },
|
|
75
|
+
profile: 'grok',
|
|
76
|
+
});
|
|
77
|
+
const MINIMAX_M3_CAPS = frozenProfile({
|
|
78
|
+
contextWindow: 1_000_000,
|
|
79
|
+
reasoning: { supported: true, replayReasoning: true },
|
|
80
|
+
promptCache: { supported: false, pricedCacheRead: false },
|
|
81
|
+
toolCalling: { parallel: true },
|
|
82
|
+
buildRecovery: { forceToolChoice: false, maxForcedTurns: 0 },
|
|
83
|
+
wire: {
|
|
84
|
+
grokRequestHeaders: false,
|
|
85
|
+
omitAutoToolChoice: false,
|
|
86
|
+
toolCallDeltasResetIdle: false,
|
|
87
|
+
retriesBeforeOutput: 0,
|
|
88
|
+
strictSseJson: false,
|
|
89
|
+
},
|
|
90
|
+
sampling: { temperature: 0.7 },
|
|
91
|
+
compaction: { ...SHARED_COMPACTION },
|
|
92
|
+
profile: 'minimax',
|
|
93
|
+
});
|
|
94
|
+
const MINIMAX_M2_CAPS = frozenProfile({
|
|
95
|
+
contextWindow: 204_800,
|
|
96
|
+
reasoning: { supported: true, replayReasoning: true },
|
|
97
|
+
promptCache: { supported: false, pricedCacheRead: false },
|
|
98
|
+
toolCalling: { parallel: true },
|
|
99
|
+
buildRecovery: { forceToolChoice: false, maxForcedTurns: 0 },
|
|
100
|
+
wire: {
|
|
101
|
+
grokRequestHeaders: false,
|
|
102
|
+
omitAutoToolChoice: false,
|
|
103
|
+
toolCallDeltasResetIdle: false,
|
|
104
|
+
retriesBeforeOutput: 0,
|
|
105
|
+
strictSseJson: false,
|
|
106
|
+
},
|
|
107
|
+
sampling: { temperature: 0.7 },
|
|
108
|
+
compaction: { ...SHARED_COMPACTION },
|
|
109
|
+
profile: 'minimax',
|
|
110
|
+
});
|
|
111
|
+
const GLM_CAPS = frozenProfile({
|
|
112
|
+
contextWindow: 200_000,
|
|
113
|
+
reasoning: { supported: true, replayReasoning: true },
|
|
114
|
+
promptCache: { supported: true, pricedCacheRead: false },
|
|
115
|
+
toolCalling: { parallel: true },
|
|
116
|
+
buildRecovery: { forceToolChoice: false, maxForcedTurns: 0 },
|
|
117
|
+
wire: {
|
|
118
|
+
grokRequestHeaders: false,
|
|
119
|
+
omitAutoToolChoice: false,
|
|
120
|
+
toolCallDeltasResetIdle: false,
|
|
121
|
+
retriesBeforeOutput: 0,
|
|
122
|
+
strictSseJson: false,
|
|
123
|
+
},
|
|
124
|
+
sampling: { temperature: 0.7 },
|
|
125
|
+
compaction: { ...SHARED_COMPACTION },
|
|
126
|
+
profile: 'glm',
|
|
127
|
+
});
|
|
128
|
+
const DEEPSEEK_RE = /^deepseek-(?:v4(?:\.|-|$)|chat$|reasoner$)/i;
|
|
129
|
+
const GROK_RE = /^grok(?:\.|-|$)/i;
|
|
130
|
+
const MINIMAX_RE = /^minimax(?:\.|-|$)/i;
|
|
131
|
+
const MINIMAX_M3_RE = /^minimax-m3(?:\.|-|$)/i;
|
|
132
|
+
const GLM_RE = /^glm(?:\.|-|$)/i;
|
|
133
|
+
export function resolveHarnessProfile(model, providerId) {
|
|
134
|
+
const provider = providerId?.trim().toLowerCase();
|
|
135
|
+
if (provider === 'deepseek')
|
|
136
|
+
return 'deepseek-v4';
|
|
137
|
+
if (provider === 'grok')
|
|
138
|
+
return 'grok';
|
|
139
|
+
if (provider === 'minimax')
|
|
140
|
+
return 'minimax';
|
|
141
|
+
if (provider === 'glm')
|
|
142
|
+
return 'glm';
|
|
143
|
+
if (model && DEEPSEEK_RE.test(model))
|
|
44
144
|
return 'deepseek-v4';
|
|
145
|
+
if (model && GROK_RE.test(model))
|
|
146
|
+
return 'grok';
|
|
147
|
+
if (model && MINIMAX_RE.test(model))
|
|
148
|
+
return 'minimax';
|
|
149
|
+
if (model && GLM_RE.test(model))
|
|
150
|
+
return 'glm';
|
|
45
151
|
return 'default';
|
|
46
152
|
}
|
|
47
|
-
export function capabilitiesFor(model) {
|
|
48
|
-
|
|
153
|
+
export function capabilitiesFor(model, providerId) {
|
|
154
|
+
switch (resolveHarnessProfile(model, providerId)) {
|
|
155
|
+
case 'deepseek-v4': return DEEPSEEK_V4_CAPS;
|
|
156
|
+
case 'grok': return GROK_CAPS;
|
|
157
|
+
case 'minimax': return model && MINIMAX_M3_RE.test(model) ? MINIMAX_M3_CAPS : MINIMAX_M2_CAPS;
|
|
158
|
+
case 'glm': return GLM_CAPS;
|
|
159
|
+
default: return DEFAULT_CAPS;
|
|
160
|
+
}
|
|
49
161
|
}
|
|
50
|
-
export function isDeepSeekV4Model(model) {
|
|
51
|
-
return resolveHarnessProfile(model) === 'deepseek-v4';
|
|
162
|
+
export function isDeepSeekV4Model(model, providerId) {
|
|
163
|
+
return resolveHarnessProfile(model, providerId) === 'deepseek-v4';
|
|
52
164
|
}
|
|
53
165
|
//# sourceMappingURL=capabilities.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../src/cli/provider/capabilities.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../src/cli/provider/capabilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,10 +12,12 @@
|
|
|
12
12
|
*
|
|
13
13
|
* Implements ProviderStreamFn (AsyncIterable<ProviderDelta>).
|
|
14
14
|
*/
|
|
15
|
+
import { randomUUID } from 'node:crypto';
|
|
15
16
|
import { getOAuthToken, resolveApiKeyWithMeta } from '../keyStore.js';
|
|
16
17
|
import { getProviderConfig, getModelForProvider, getCustomEndpoint, getThinkingForProvider } from '../providerConfig.js';
|
|
17
18
|
import { translateOpenAiCompatibleThinking } from '../thinking.js';
|
|
18
19
|
import { capabilitiesFor } from './capabilities.js';
|
|
20
|
+
import { SseDataDecoder } from './sse.js';
|
|
19
21
|
/**
|
|
20
22
|
* v1.5.2: transient-HTTP retry. A single 429/5xx/network failure used to flip
|
|
21
23
|
* the whole council member turn to `reason:'error'` (AgentHarness treats any
|
|
@@ -140,8 +142,9 @@ export async function readChunkWithTimeout(reader, opts) {
|
|
|
140
142
|
reader.read(),
|
|
141
143
|
new Promise((_, reject) => {
|
|
142
144
|
idleTimer = setTimeout(() => {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
+
const totalIdleMs = Math.max(opts.idleMs, Date.now() - opts.lastUsefulAt());
|
|
146
|
+
reject(new Error(`Provider stream idle for ${Math.round(totalIdleMs / 1000)}s ` +
|
|
147
|
+
`(no useful deltas). The model/gateway stalled — try again or switch model. ` +
|
|
145
148
|
`Override with ZELARI_PROVIDER_STREAM_IDLE_MS.`));
|
|
146
149
|
}, waitMs);
|
|
147
150
|
if (opts.signal) {
|
|
@@ -252,6 +255,34 @@ export function parseCachedPromptTokens(usage) {
|
|
|
252
255
|
}
|
|
253
256
|
return 0;
|
|
254
257
|
}
|
|
258
|
+
/**
|
|
259
|
+
* Parse the two error envelopes emitted inside xAI/OpenAI-compatible SSE:
|
|
260
|
+
* nested OpenAI (`error: { message, type, code }`) and flat xAI gateway
|
|
261
|
+
* (`code: string, error: string`). Normal completion chunks return null.
|
|
262
|
+
*/
|
|
263
|
+
export function parseOpenAiStreamError(value) {
|
|
264
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
265
|
+
return null;
|
|
266
|
+
const root = value;
|
|
267
|
+
const nested = root.error;
|
|
268
|
+
if (nested && typeof nested === 'object' && !Array.isArray(nested)) {
|
|
269
|
+
const error = nested;
|
|
270
|
+
const message = typeof error.message === 'string' && error.message.trim()
|
|
271
|
+
? error.message.trim()
|
|
272
|
+
: 'unknown error';
|
|
273
|
+
const type = typeof error.type === 'string' && error.type.trim()
|
|
274
|
+
? error.type.trim()
|
|
275
|
+
: 'server_error';
|
|
276
|
+
return `Provider stream error (${type}): ${message}`;
|
|
277
|
+
}
|
|
278
|
+
if (typeof nested === 'string' && nested.trim()) {
|
|
279
|
+
const type = typeof root.code === 'string' && root.code.trim()
|
|
280
|
+
? root.code.trim()
|
|
281
|
+
: 'server_error';
|
|
282
|
+
return `Provider stream error (${type}): ${nested.trim()}`;
|
|
283
|
+
}
|
|
284
|
+
return null;
|
|
285
|
+
}
|
|
255
286
|
/**
|
|
256
287
|
* Resolve baseUrl for a given provider. Priority:
|
|
257
288
|
* 1. Custom endpoint persisted via `/provider custom <url>` (wins always)
|
|
@@ -368,7 +399,8 @@ function mapAgentMessage(m, vision) {
|
|
|
368
399
|
return { role: m.role, content: m.content };
|
|
369
400
|
}
|
|
370
401
|
export function openaiCompatibleProvider(config) {
|
|
371
|
-
|
|
402
|
+
const run = async function* (params, streamRetryAttempt = 0) {
|
|
403
|
+
const capabilities = capabilitiesFor(params.model, config.providerId);
|
|
372
404
|
// Map the provider-neutral AgentMessage[] into the OpenAI chat format.
|
|
373
405
|
// The harness keeps tool results as { role: 'tool', toolCallId, content }
|
|
374
406
|
// and assistant tool-call turns as { role: 'assistant', content,
|
|
@@ -404,7 +436,7 @@ export function openaiCompatibleProvider(config) {
|
|
|
404
436
|
model: params.model,
|
|
405
437
|
messages,
|
|
406
438
|
stream: true,
|
|
407
|
-
temperature: generation?.temperature ??
|
|
439
|
+
temperature: generation?.temperature ?? capabilities.sampling.temperature,
|
|
408
440
|
// Task G.4.2 — request the provider to send real token usage in
|
|
409
441
|
// the final chunk (gated by `stream_options.include_usage` on the
|
|
410
442
|
// OpenAI-compatible API). Providers that don't honor this (some
|
|
@@ -451,7 +483,41 @@ export function openaiCompatibleProvider(config) {
|
|
|
451
483
|
parameters: t.parameters,
|
|
452
484
|
},
|
|
453
485
|
}));
|
|
454
|
-
|
|
486
|
+
const recoveryAttempt = generation?.recoveryAttempt ?? 1;
|
|
487
|
+
const forceRecoveryTool = generation?.toolChoice === 'required' &&
|
|
488
|
+
capabilities.buildRecovery.forceToolChoice &&
|
|
489
|
+
recoveryAttempt <= capabilities.buildRecovery.maxForcedTurns;
|
|
490
|
+
if (forceRecoveryTool) {
|
|
491
|
+
body.tool_choice = 'required';
|
|
492
|
+
}
|
|
493
|
+
else if (!capabilities.wire.omitAutoToolChoice) {
|
|
494
|
+
body.tool_choice = 'auto';
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
const headers = {
|
|
498
|
+
'Content-Type': 'application/json',
|
|
499
|
+
Authorization: `Bearer ${config.apiKey}`,
|
|
500
|
+
...(config.extraHeaders ?? {}),
|
|
501
|
+
};
|
|
502
|
+
const affinityHeader = capabilities.promptCache.conversationAffinityHeader;
|
|
503
|
+
const conversationId = params.conversationId?.trim();
|
|
504
|
+
const safeConversationId = conversationId &&
|
|
505
|
+
conversationId.length <= 256 &&
|
|
506
|
+
!/[\u0000-\u001f\u007f]/.test(conversationId)
|
|
507
|
+
? conversationId
|
|
508
|
+
: undefined;
|
|
509
|
+
if (affinityHeader && safeConversationId) {
|
|
510
|
+
headers[affinityHeader] = safeConversationId;
|
|
511
|
+
}
|
|
512
|
+
if (capabilities.wire.grokRequestHeaders) {
|
|
513
|
+
// Mirrors the public Grok Build harness request identity. conv/session
|
|
514
|
+
// remain stable for affinity; req-id is unique per HTTP attempt.
|
|
515
|
+
headers.Accept = 'text/event-stream';
|
|
516
|
+
headers['x-grok-client-identifier'] = 'zelari-code';
|
|
517
|
+
headers['x-grok-req-id'] = `zelari-${randomUUID()}`;
|
|
518
|
+
headers['x-grok-model-override'] = params.model;
|
|
519
|
+
if (safeConversationId)
|
|
520
|
+
headers['x-grok-session-id'] = safeConversationId;
|
|
455
521
|
}
|
|
456
522
|
// v1.5.2: retry transient failures (429/5xx + network errors) on the
|
|
457
523
|
// initial response. Retries happen BEFORE any stream byte is read, so
|
|
@@ -483,10 +549,7 @@ export function openaiCompatibleProvider(config) {
|
|
|
483
549
|
try {
|
|
484
550
|
response = await fetch(`${config.baseUrl}/chat/completions`, {
|
|
485
551
|
method: 'POST',
|
|
486
|
-
headers
|
|
487
|
-
'Content-Type': 'application/json',
|
|
488
|
-
Authorization: `Bearer ${config.apiKey}`,
|
|
489
|
-
},
|
|
552
|
+
headers,
|
|
490
553
|
body: JSON.stringify(body),
|
|
491
554
|
// Cancel aborts the HTTP request; stream idle is enforced below
|
|
492
555
|
// per-chunk so active multi-minute streams are not killed.
|
|
@@ -556,7 +619,7 @@ export function openaiCompatibleProvider(config) {
|
|
|
556
619
|
}
|
|
557
620
|
const reader = response.body.getReader();
|
|
558
621
|
const decoder = new TextDecoder();
|
|
559
|
-
|
|
622
|
+
const sseDecoder = new SseDataDecoder();
|
|
560
623
|
// Accumulator for OpenAI tool_calls streaming (Task A1).
|
|
561
624
|
// Args JSON is delivered incrementally; we emit a `tool_call` delta
|
|
562
625
|
// when the accumulated args for a given index parse to a complete
|
|
@@ -565,6 +628,7 @@ export function openaiCompatibleProvider(config) {
|
|
|
565
628
|
// only at the end) still execute tools — critical for MiniMax-M3.
|
|
566
629
|
const toolCallAccumulator = new Map();
|
|
567
630
|
let emittedToolCall = false;
|
|
631
|
+
let emittedProviderDelta = false;
|
|
568
632
|
/** MiniMax reasoning_split may stream cumulative `reasoning_details[].text`. */
|
|
569
633
|
let reasoningDetailsBuf = '';
|
|
570
634
|
const tryParseArgs = (raw) => {
|
|
@@ -592,6 +656,7 @@ export function openaiCompatibleProvider(config) {
|
|
|
592
656
|
continue; // incomplete JSON — leave dropped
|
|
593
657
|
toolCallAccumulator.delete(idx);
|
|
594
658
|
emittedToolCall = true;
|
|
659
|
+
emittedProviderDelta = true;
|
|
595
660
|
markUseful();
|
|
596
661
|
yield {
|
|
597
662
|
kind: 'tool_call',
|
|
@@ -634,21 +699,23 @@ export function openaiCompatibleProvider(config) {
|
|
|
634
699
|
catch {
|
|
635
700
|
/* ignore */
|
|
636
701
|
}
|
|
702
|
+
if (!emittedProviderDelta &&
|
|
703
|
+
streamRetryAttempt < capabilities.wire.retriesBeforeOutput) {
|
|
704
|
+
await abortableSleep(backoffDelay(streamRetryAttempt, null), params.signal);
|
|
705
|
+
yield* run(params, streamRetryAttempt + 1);
|
|
706
|
+
return;
|
|
707
|
+
}
|
|
637
708
|
yield { kind: 'error', message: msg };
|
|
638
709
|
return;
|
|
639
710
|
}
|
|
640
711
|
const { value, done } = chunk;
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
const
|
|
646
|
-
|
|
647
|
-
for (const line of lines) {
|
|
648
|
-
const trimmed = line.trim();
|
|
649
|
-
if (!trimmed.startsWith('data:'))
|
|
712
|
+
const decoded = done
|
|
713
|
+
? decoder.decode()
|
|
714
|
+
: decoder.decode(value, { stream: true });
|
|
715
|
+
const events = sseDecoder.push(decoded, done);
|
|
716
|
+
for (const data of events) {
|
|
717
|
+
if (data.length === 0)
|
|
650
718
|
continue;
|
|
651
|
-
const data = trimmed.slice(5).trim();
|
|
652
719
|
if (data === '[DONE]') {
|
|
653
720
|
yield* flushToolAccumulator();
|
|
654
721
|
// If tools ran but the provider never sent finish_reason=tool_calls
|
|
@@ -660,7 +727,25 @@ export function openaiCompatibleProvider(config) {
|
|
|
660
727
|
return;
|
|
661
728
|
}
|
|
662
729
|
try {
|
|
663
|
-
const
|
|
730
|
+
const rawParsed = JSON.parse(data);
|
|
731
|
+
const streamError = parseOpenAiStreamError(rawParsed);
|
|
732
|
+
if (streamError) {
|
|
733
|
+
try {
|
|
734
|
+
await reader.cancel(streamError);
|
|
735
|
+
}
|
|
736
|
+
catch {
|
|
737
|
+
/* ignore */
|
|
738
|
+
}
|
|
739
|
+
if (!emittedProviderDelta &&
|
|
740
|
+
streamRetryAttempt < capabilities.wire.retriesBeforeOutput) {
|
|
741
|
+
await abortableSleep(backoffDelay(streamRetryAttempt, null), params.signal);
|
|
742
|
+
yield* run(params, streamRetryAttempt + 1);
|
|
743
|
+
return;
|
|
744
|
+
}
|
|
745
|
+
yield { kind: 'error', message: streamError };
|
|
746
|
+
return;
|
|
747
|
+
}
|
|
748
|
+
const parsed = rawParsed;
|
|
664
749
|
const choice = parsed.choices?.[0];
|
|
665
750
|
const delta = choice?.delta;
|
|
666
751
|
// Task G.4.2 — emit a `usage` delta whenever the provider
|
|
@@ -679,6 +764,7 @@ export function openaiCompatibleProvider(config) {
|
|
|
679
764
|
: promptTokens + completionTokens;
|
|
680
765
|
const cachedPromptTokens = parseCachedPromptTokens(parsed.usage);
|
|
681
766
|
markUseful();
|
|
767
|
+
emittedProviderDelta = true;
|
|
682
768
|
yield {
|
|
683
769
|
kind: 'usage',
|
|
684
770
|
usage: {
|
|
@@ -691,6 +777,7 @@ export function openaiCompatibleProvider(config) {
|
|
|
691
777
|
}
|
|
692
778
|
if (typeof delta?.content === 'string' && delta.content.length > 0) {
|
|
693
779
|
markUseful();
|
|
780
|
+
emittedProviderDelta = true;
|
|
694
781
|
yield { kind: 'text', delta: delta.content };
|
|
695
782
|
}
|
|
696
783
|
// Chain-of-thought / reasoning channel. GLM, DeepSeek, Qwen and
|
|
@@ -703,6 +790,7 @@ export function openaiCompatibleProvider(config) {
|
|
|
703
790
|
delta?.reasoning;
|
|
704
791
|
if (typeof reasoning === 'string' && reasoning.length > 0) {
|
|
705
792
|
markUseful();
|
|
793
|
+
emittedProviderDelta = true;
|
|
706
794
|
yield { kind: 'thinking', delta: reasoning };
|
|
707
795
|
}
|
|
708
796
|
// MiniMax-M3 reasoning_split format: reasoning_details[{text}]
|
|
@@ -720,6 +808,7 @@ export function openaiCompatibleProvider(config) {
|
|
|
720
808
|
reasoningDetailsBuf = t;
|
|
721
809
|
if (piece.length > 0) {
|
|
722
810
|
markUseful();
|
|
811
|
+
emittedProviderDelta = true;
|
|
723
812
|
yield { kind: 'thinking', delta: piece };
|
|
724
813
|
}
|
|
725
814
|
}
|
|
@@ -727,6 +816,7 @@ export function openaiCompatibleProvider(config) {
|
|
|
727
816
|
// Non-cumulative chunk — treat as a fresh delta.
|
|
728
817
|
reasoningDetailsBuf += t;
|
|
729
818
|
markUseful();
|
|
819
|
+
emittedProviderDelta = true;
|
|
730
820
|
yield { kind: 'thinking', delta: t };
|
|
731
821
|
}
|
|
732
822
|
}
|
|
@@ -734,6 +824,13 @@ export function openaiCompatibleProvider(config) {
|
|
|
734
824
|
// OpenAI tool_calls are streamed incrementally — accumulate args
|
|
735
825
|
// per index and emit a tool_call delta when the args JSON closes.
|
|
736
826
|
if (Array.isArray(delta?.tool_calls)) {
|
|
827
|
+
if (capabilities.wire.toolCallDeltasResetIdle &&
|
|
828
|
+
delta.tool_calls.length > 0) {
|
|
829
|
+
// Grok Build treats every partial function-call fragment as
|
|
830
|
+
// model progress. A large write_file payload can stream for
|
|
831
|
+
// minutes before its JSON is complete enough to emit.
|
|
832
|
+
markUseful();
|
|
833
|
+
}
|
|
737
834
|
// Accumulate args fragments only — parsing happens once at
|
|
738
835
|
// flush time (finish_reason / [DONE] / stream end). The old
|
|
739
836
|
// heuristic re-parsed the whole accumulated buffer on every
|
|
@@ -762,6 +859,7 @@ export function openaiCompatibleProvider(config) {
|
|
|
762
859
|
if (choice?.finish_reason) {
|
|
763
860
|
yield* flushToolAccumulator();
|
|
764
861
|
markUseful();
|
|
862
|
+
emittedProviderDelta = true;
|
|
765
863
|
const reason = choice.finish_reason === 'stop' && emittedToolCall
|
|
766
864
|
? 'tool_calls'
|
|
767
865
|
: choice.finish_reason;
|
|
@@ -769,9 +867,18 @@ export function openaiCompatibleProvider(config) {
|
|
|
769
867
|
}
|
|
770
868
|
}
|
|
771
869
|
catch {
|
|
772
|
-
|
|
870
|
+
if (capabilities.wire.strictSseJson) {
|
|
871
|
+
yield {
|
|
872
|
+
kind: 'error',
|
|
873
|
+
message: 'Malformed Grok SSE data event (expected Chat Completions JSON).',
|
|
874
|
+
};
|
|
875
|
+
return;
|
|
876
|
+
}
|
|
877
|
+
// Lenient compatibility for third-party OpenAI-shaped gateways.
|
|
773
878
|
}
|
|
774
879
|
}
|
|
880
|
+
if (done)
|
|
881
|
+
break;
|
|
775
882
|
}
|
|
776
883
|
// Stream ended without [DONE] — still flush tools + finish.
|
|
777
884
|
yield* flushToolAccumulator();
|
|
@@ -784,6 +891,7 @@ export function openaiCompatibleProvider(config) {
|
|
|
784
891
|
reader.releaseLock();
|
|
785
892
|
}
|
|
786
893
|
};
|
|
894
|
+
return (params) => run(params);
|
|
787
895
|
}
|
|
788
896
|
/**
|
|
789
897
|
* Helper: read env + keyStore + providerConfig and return a configured
|