zelari-code 2.11.0 → 2.11.2
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/hooks/useChatTurn.js +2 -0
- package/dist/cli/hooks/useChatTurn.js.map +1 -1
- package/dist/cli/kraken/delegationPolicy.js +112 -0
- package/dist/cli/kraken/delegationPolicy.js.map +1 -0
- package/dist/cli/kraken/planner.js +27 -12
- package/dist/cli/kraken/planner.js.map +1 -1
- package/dist/cli/kraken/scriptPlanner.js +18 -5
- package/dist/cli/kraken/scriptPlanner.js.map +1 -1
- package/dist/cli/main.bundled.js +126 -5
- package/dist/cli/main.bundled.js.map +4 -4
- package/dist/cli/missionSlice.js +2 -0
- package/dist/cli/missionSlice.js.map +1 -1
- package/dist/cli/runHeadless.js +2 -0
- package/dist/cli/runHeadless.js.map +1 -1
- package/dist/cli/toolRegistry.js +19 -3
- package/dist/cli/toolRegistry.js.map +1 -1
- package/dist/cli/tools/krakenModel.js +34 -0
- package/dist/cli/tools/krakenModel.js.map +1 -1
- package/package.json +2 -2
|
@@ -24,6 +24,7 @@ import { resolveApiKeyWithMeta } from '../keyStore.js';
|
|
|
24
24
|
import { resolveBaseUrl } from '../provider/openai-compatible.js';
|
|
25
25
|
import { getModelForProvider, getProviderConfig } from '../providerConfig.js';
|
|
26
26
|
import { PlannerTransportError } from './planner.js';
|
|
27
|
+
import { parseQualifiedModelRef, resolveKrakenPlannerModel } from '../tools/krakenModel.js';
|
|
27
28
|
const MAX_PLAN_ATTEMPTS = 2;
|
|
28
29
|
const ScriptPlannerOptionsSchema = z.object({
|
|
29
30
|
prompt: z.string().min(1),
|
|
@@ -238,7 +239,23 @@ export function extractCodeBlock(text, language) {
|
|
|
238
239
|
/** Local LLM client builder, duplicated from `planner.ts` to keep the diff
|
|
239
240
|
* small. Will be unified in a follow-up slice. */
|
|
240
241
|
async function createScriptPlannerLlmClient(opts) {
|
|
241
|
-
|
|
242
|
+
let active = (opts.provider?.trim() || getProviderConfig().activeProviderId);
|
|
243
|
+
const parent = opts.model?.trim() ||
|
|
244
|
+
getModelForProvider(active) ||
|
|
245
|
+
'grok-4.5';
|
|
246
|
+
let model = resolveKrakenPlannerModel(parent);
|
|
247
|
+
// Cross-provider script planner: a provider-qualified ref
|
|
248
|
+
// ("glm/glm-4.7-air") plans on that provider. Unknown provider (no key /
|
|
249
|
+
// no base URL) → keep the raw id (previous behavior).
|
|
250
|
+
const ref = parseQualifiedModelRef(model);
|
|
251
|
+
if (ref) {
|
|
252
|
+
const crossKey = await resolveApiKeyWithMeta(ref.provider);
|
|
253
|
+
if (crossKey?.apiKey && resolveBaseUrl(ref.provider)) {
|
|
254
|
+
active = ref.provider;
|
|
255
|
+
}
|
|
256
|
+
if (active === ref.provider)
|
|
257
|
+
model = ref.model;
|
|
258
|
+
}
|
|
242
259
|
const meta = await resolveApiKeyWithMeta(active);
|
|
243
260
|
if (!meta?.apiKey) {
|
|
244
261
|
throw new Error(`No API key for provider '${active}'. Save a key in Settings → Provider.`);
|
|
@@ -247,10 +264,6 @@ async function createScriptPlannerLlmClient(opts) {
|
|
|
247
264
|
if (!baseUrl) {
|
|
248
265
|
throw new Error(`No base URL for provider '${active}'. Set a custom endpoint in Settings.`);
|
|
249
266
|
}
|
|
250
|
-
const model = opts.model?.trim() ||
|
|
251
|
-
process.env.ZELARI_KRAKEN_PLANNER_MODEL?.trim() ||
|
|
252
|
-
getModelForProvider(active) ||
|
|
253
|
-
'grok-4.5';
|
|
254
267
|
// We just need the `complete` function. The metadata is unused past this
|
|
255
268
|
// point; the planner only needs to call the LLM.
|
|
256
269
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scriptPlanner.js","sourceRoot":"","sources":["../../../src/cli/kraken/scriptPlanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAqB,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAyB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"scriptPlanner.js","sourceRoot":"","sources":["../../../src/cli/kraken/scriptPlanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAqB,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAyB,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAE5F,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAE5B,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAoB,CAAC,QAAQ,EAAE;CACnD,CAAC,CAAC;AAiBH,wEAAwE;AACxE,MAAM,eAAe,GAAG;;;;;;;;;;;;;0FAakE,CAAC;AAE3F,MAAM,CAAC,MAAM,mCAAmC,GAAG;IACjD,sEAAsE;IACtE,EAAE;IACF,8DAA8D;IAC9D,qEAAqE;IACrE,EAAE;IACF,qEAAqE;IACrE,sEAAsE;IACtE,8CAA8C;IAC9C,EAAE;IACF,OAAO;IACP,EAAE;IACF,OAAO;IACP,4HAA4H;IAC5H,KAAK;IACL,EAAE;IACF,eAAe;IACf,EAAE;IACF,eAAe;IACf,EAAE;IACF,yEAAyE;IACzE,sEAAsE;IACtE,iDAAiD;IACjD,sEAAsE;IACtE,qEAAqE;IACrE,0EAA0E;IAC1E,yEAAyE;IACzE,wEAAwE;IACxE,oEAAoE;IACpE,4EAA4E;IAC5E,uEAAuE;IACvE,wEAAwE;IACxE,gEAAgE;IAChE,yEAAyE;IACzE,iCAAiC;IACjC,EAAE;IACF,SAAS;IACT,EAAE;IACF,8DAA8D;IAC9D,0BAA0B;IAC1B,4DAA4D;IAC5D,sEAAsE;IACtE,mCAAmC;IACnC,4EAA4E;IAC5E,EAAE;IACF,uCAAuC;IACvC,EAAE;IACF,mFAAmF;IACnF,8FAA8F;IAC9F,yFAAyF;IACzF,mEAAmE;IACnE,6BAA6B;IAC7B,EAAE;IACF,gCAAgC;IAChC,EAAE;IACF,gEAAgE;IAChE,EAAE;IACF,iFAAiF;IACjF,0EAA0E;IAC1E,+EAA+E;IAC/E,8EAA8E;IAC9E,6EAA6E;IAC7E,+EAA+E;IAC/E,+EAA+E;IAC/E,EAAE;IACF,wEAAwE;IACxE,0EAA0E;IAC1E,2EAA2E;IAC3E,mBAAmB;IACnB,EAAE;IACF,kCAAkC;IAClC,EAAE;IACF,OAAO;IACP,sGAAsG;IACtG,yFAAyF;IACzF,mHAAmH;IACnH,iIAAiI;IACjI,wFAAwF;IACxF,wBAAwB;IACxB,GAAG;IACH,wBAAwB;IACxB,KAAK;CACN,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAuB;IACtD,oEAAoE;IACpE,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IACD,MAAM,MAAM,GAAG,0BAA0B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtD,MAAM,MAAM,GACV,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,4BAA4B,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC/G,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,iBAAiB,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;IAC7E,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;IAEnF,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG;QACvB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;QAC7D,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAE9C,IAAI,SAA6B,CAAC;IAClC,IAAI,WAAW,GAAG,QAAQ,CAAC;IAC3B,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,iBAAiB,EAAE,OAAO,EAAE,EAAE,CAAC;QAC9D,QAAQ,GAAG,OAAO,CAAC;QACnB,IAAI,IAAY,CAAC;QACjB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,mCAAmC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QACnG,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,qBAAqB,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACpF,CAAC;QACD,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QACpB,MAAM,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YACnB,SAAS,GAAG,wCAAwC,CAAC;YACrD,WAAW,GAAG,GAAG,QAAQ,yHAAyH,CAAC;YACnJ,SAAS;QACX,CAAC;QACD,IAAI,CAAC;YACH,MAAM,KAAK,CAAC;gBACV,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAClF,MAAM,EAAE,KAAK;gBACb,KAAK,EAAE,KAAK;gBACZ,QAAQ,EAAE,QAAQ;aACnB,CAAC,CAAC;YACH,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC/D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,SAAS,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,WAAW,GAAG,GAAG,QAAQ,iFAAiF,SAAS,oEAAoE,CAAC;QAC1L,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CACb,oEAAoE,iBAAiB,eAAe,SAAS,IAAI,SAAS,EAAE,CAC7H,CAAC;AACJ,CAAC;AAED;uEACuE;AACvE,KAAK,UAAU,uBAAuB,CAAC,IAA0C;IAC/E,IAAI,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1C,IAAI,CAAC,IAAI,CAAC,GAAG;QAAE,OAAO,wCAAwC,CAAC;IAC/D,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,qCAAqC,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;IAChG,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACvE,OAAO,qBAAqB,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,eAAe,CAAC,MAAc,EAAE,SAAiB,EAAE,eAAwB;IAClF,OAAO;QACL,SAAS;QACT,MAAM,CAAC,IAAI,EAAE;QACb,EAAE;QACF,mEAAmE;QACnE,SAAS;QACT,EAAE;QACF,eAAe,CAAC,CAAC,CAAC,iDAAiD,eAAe,IAAI,CAAC,CAAC,CAAC,EAAE;QAC3F,wEAAwE;KACzE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,QAA8B;IAC3E,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,SAAS,GAAG,QAAQ,GAAG,kDAAkD,EAAE,GAAG,CAAC,CAAC;IACtG,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC;IAC3B,kEAAkE;IAClE,kDAAkD;IAClD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;mDACmD;AACnD,KAAK,UAAU,4BAA4B,CAAC,IAG3C;IACC,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,iBAAiB,EAAE,CAAC,gBAAgB,CAAiB,CAAC;IAC7F,MAAM,MAAM,GACV,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE;QAClB,mBAAmB,CAAC,MAAM,CAAC;QAC3B,UAAU,CAAC;IACb,IAAI,KAAK,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAC9C,0DAA0D;IAC1D,yEAAyE;IACzE,sDAAsD;IACtD,MAAM,GAAG,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,GAAG,CAAC,QAAwB,CAAC,CAAC;QAC3E,IAAI,QAAQ,EAAE,MAAM,IAAI,cAAc,CAAC,GAAG,CAAC,QAAwB,CAAC,EAAE,CAAC;YACrE,MAAM,GAAG,GAAG,CAAC,QAAwB,CAAC;QACxC,CAAC;QACD,IAAI,MAAM,KAAK,GAAG,CAAC,QAAQ;YAAE,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACjD,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACjD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,4BAA4B,MAAM,uCAAuC,CAAC,CAAC;IAC7F,CAAC;IACD,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,6BAA6B,MAAM,uCAAuC,CAAC,CAAC;IAC9F,CAAC;IACD,yEAAyE;IACzE,iDAAiD;IACjD,OAAO;QACL,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAoC;YAC/D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,mBAAmB,EAAE;gBACrD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACnE;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,KAAK;oBACL,QAAQ,EAAE;wBACR,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE;wBACnC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;qBAChC;oBACD,MAAM,EAAE,KAAK;oBACb,WAAW,EAAE,GAAG;iBACjB,CAAC;aACH,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC9C,MAAM,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACnE,CAAC;YACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAuD,CAAC;YACtF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC;YACpD,IAAI,OAAO,OAAO,KAAK,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC5E,OAAO,OAAO,CAAC;QACjB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/cli/main.bundled.js
CHANGED
|
@@ -45404,7 +45404,9 @@ var krakenModel_exports = {};
|
|
|
45404
45404
|
__export(krakenModel_exports, {
|
|
45405
45405
|
isCheapModelId: () => isCheapModelId,
|
|
45406
45406
|
isKrakenAutoModelEnabled: () => isKrakenAutoModelEnabled,
|
|
45407
|
+
parseQualifiedModelRef: () => parseQualifiedModelRef,
|
|
45407
45408
|
pickCheapModel: () => pickCheapModel,
|
|
45409
|
+
resolveKrakenPlannerModel: () => resolveKrakenPlannerModel,
|
|
45408
45410
|
resolveKrakenSubModel: () => resolveKrakenSubModel,
|
|
45409
45411
|
resolveKrakenSubModelAsync: () => resolveKrakenSubModelAsync,
|
|
45410
45412
|
resolvePersonaModel: () => resolvePersonaModel
|
|
@@ -45439,6 +45441,15 @@ function isKrakenAutoModelEnabled(env = process.env) {
|
|
|
45439
45441
|
if (v === "0" || v === "false" || v === "no" || v === "off") return false;
|
|
45440
45442
|
return true;
|
|
45441
45443
|
}
|
|
45444
|
+
function parseQualifiedModelRef(ref) {
|
|
45445
|
+
const s = ref?.trim() ?? "";
|
|
45446
|
+
const slash = s.indexOf("/");
|
|
45447
|
+
if (slash <= 0 || slash === s.length - 1) return null;
|
|
45448
|
+
const provider = s.slice(0, slash).trim();
|
|
45449
|
+
const model = s.slice(slash + 1).trim();
|
|
45450
|
+
if (!provider || !model) return null;
|
|
45451
|
+
return { provider, model };
|
|
45452
|
+
}
|
|
45442
45453
|
function resolveKrakenSubModel(agent, parentModel, env = process.env, opts = {}) {
|
|
45443
45454
|
const kindKey = agent === "explore" ? "ZELARI_KRAKEN_EXPLORE_MODEL" : agent === "verify" ? "ZELARI_KRAKEN_VERIFY_MODEL" : "ZELARI_KRAKEN_GENERAL_MODEL";
|
|
45444
45455
|
const specific = env[kindKey]?.trim();
|
|
@@ -45457,6 +45468,11 @@ function resolveKrakenSubModel(agent, parentModel, env = process.env, opts = {})
|
|
|
45457
45468
|
}
|
|
45458
45469
|
return parentModel;
|
|
45459
45470
|
}
|
|
45471
|
+
function resolveKrakenPlannerModel(parentModel, env = process.env) {
|
|
45472
|
+
const specific = env.ZELARI_KRAKEN_PLANNER_MODEL?.trim();
|
|
45473
|
+
if (specific) return specific;
|
|
45474
|
+
return parentModel.trim();
|
|
45475
|
+
}
|
|
45460
45476
|
function resolvePersonaModel(kind2, parentModel, env = process.env, opts = {}) {
|
|
45461
45477
|
const personaKey = kind2 === "spec" ? "ZELARI_KRAKEN_SPEC_MODEL" : kind2 === "conformance" ? "ZELARI_KRAKEN_CONFORMANCE_MODEL" : kind2 === "oracle" ? "ZELARI_KRAKEN_ORACLE_MODEL" : "";
|
|
45462
45478
|
const specific = personaKey ? env[personaKey]?.trim() : void 0;
|
|
@@ -45756,9 +45772,19 @@ function createKrakenSubAgentContextFactory(opts) {
|
|
|
45756
45772
|
return async ({ agent, cwd: subCwd }) => {
|
|
45757
45773
|
const cfg = providerOverride ? await providerConfigFor(providerOverride) : await providerFromEnv();
|
|
45758
45774
|
if (!cfg) return null;
|
|
45759
|
-
const { resolveKrakenSubModel: resolveKrakenSubModel2 } = await Promise.resolve().then(() => (init_krakenModel(), krakenModel_exports));
|
|
45760
|
-
const
|
|
45761
|
-
|
|
45775
|
+
const { resolveKrakenSubModel: resolveKrakenSubModel2, parseQualifiedModelRef: parseQualifiedModelRef2 } = await Promise.resolve().then(() => (init_krakenModel(), krakenModel_exports));
|
|
45776
|
+
const resolvedModel = resolveKrakenSubModel2(agent, modelOverride || cfg.model);
|
|
45777
|
+
let effCfg = cfg;
|
|
45778
|
+
let model = resolvedModel;
|
|
45779
|
+
const ref = parseQualifiedModelRef2(resolvedModel);
|
|
45780
|
+
if (ref) {
|
|
45781
|
+
const cross = ref.provider === cfg.providerId ? cfg : await providerConfigFor(ref.provider);
|
|
45782
|
+
if (cross) {
|
|
45783
|
+
effCfg = cross;
|
|
45784
|
+
model = ref.model;
|
|
45785
|
+
}
|
|
45786
|
+
}
|
|
45787
|
+
const subCfg = { ...effCfg, model };
|
|
45762
45788
|
const subProfile = taskAgentToProfile(agent);
|
|
45763
45789
|
const subRoot = subCwd || root;
|
|
45764
45790
|
const { registry: subRegistry } = createBuiltinToolRegistry({
|
|
@@ -46138,6 +46164,85 @@ var init_metrics3 = __esm({
|
|
|
46138
46164
|
}
|
|
46139
46165
|
});
|
|
46140
46166
|
|
|
46167
|
+
// src/cli/kraken/delegationPolicy.ts
|
|
46168
|
+
function resolveDelegationPolicy(raw = process.env[KRAKEN_DELEGATION_ENV]) {
|
|
46169
|
+
const v = (raw ?? "").trim().toLowerCase();
|
|
46170
|
+
if (!v) return "automatic";
|
|
46171
|
+
return ALIASES[v] ?? "automatic";
|
|
46172
|
+
}
|
|
46173
|
+
function krakenDelegationPlaybook(include, policy = resolveDelegationPolicy()) {
|
|
46174
|
+
if (!include || policy === "automatic") return [];
|
|
46175
|
+
return [
|
|
46176
|
+
{
|
|
46177
|
+
type: "custom",
|
|
46178
|
+
title: "Kraken Delegation Policy",
|
|
46179
|
+
// After KRAKEN_LEAD_PLAYBOOK_MODULE (25). Custom modules get +1000
|
|
46180
|
+
// in the builder, so this still sorts with the other Kraken extras.
|
|
46181
|
+
priority: 26,
|
|
46182
|
+
content: FRAGMENTS[policy]
|
|
46183
|
+
}
|
|
46184
|
+
];
|
|
46185
|
+
}
|
|
46186
|
+
var KRAKEN_DELEGATION_ENV, ALIASES, PREFER_CONTENT, AGGRESSIVE_CONTENT, LEAD_ONLY_CONTENT, FRAGMENTS;
|
|
46187
|
+
var init_delegationPolicy = __esm({
|
|
46188
|
+
"src/cli/kraken/delegationPolicy.ts"() {
|
|
46189
|
+
"use strict";
|
|
46190
|
+
KRAKEN_DELEGATION_ENV = "ZELARI_KRAKEN_DELEGATION";
|
|
46191
|
+
ALIASES = {
|
|
46192
|
+
automatic: "automatic",
|
|
46193
|
+
auto: "automatic",
|
|
46194
|
+
default: "automatic",
|
|
46195
|
+
prefer: "prefer",
|
|
46196
|
+
"prefer-tentacles": "prefer",
|
|
46197
|
+
tentacles: "prefer",
|
|
46198
|
+
aggressive: "aggressive",
|
|
46199
|
+
always: "aggressive",
|
|
46200
|
+
"lead-only": "lead-only",
|
|
46201
|
+
lead_only: "lead-only",
|
|
46202
|
+
leadonly: "lead-only",
|
|
46203
|
+
off: "lead-only"
|
|
46204
|
+
};
|
|
46205
|
+
PREFER_CONTENT = `# Kraken Delegation Policy
|
|
46206
|
+
|
|
46207
|
+
Current policy: **prefer tentacles**.
|
|
46208
|
+
|
|
46209
|
+
You are still the parent brain, but default to the \`task\` tool for non-trivial work instead of doing the whole job yourself.
|
|
46210
|
+
|
|
46211
|
+
- **explore** \u2014 unfamiliar area, multi-file search, map call sites (parallel OK).
|
|
46212
|
+
- **general** \u2014 isolated implement slice with a clear path scope.
|
|
46213
|
+
- **verify** \u2014 after meaningful writes, spawn verify (or run tests yourself).
|
|
46214
|
+
- Lead-direct tools are OK for: one-file trivial reads, \`todo_write\`, \`ask_user\`, and the final synthesis.
|
|
46215
|
+
- Do not skip tentacles just because you *can* grep/edit yourself. If you skip, say why in one line.
|
|
46216
|
+
- Keep the existing caps (\u22644 explore, \u22642 general per turn) and task-contract quality.
|
|
46217
|
+
`;
|
|
46218
|
+
AGGRESSIVE_CONTENT = `# Kraken Delegation Policy
|
|
46219
|
+
|
|
46220
|
+
Current policy: **aggressive**.
|
|
46221
|
+
|
|
46222
|
+
You are an orchestrator, not an implementer. DEFAULT to spawning tentacles.
|
|
46223
|
+
|
|
46224
|
+
- Almost every research question \u2192 \`task(agent=explore)\`.
|
|
46225
|
+
- Almost every code change \u2192 \`task(agent=general)\`, then \`task(agent=verify)\`.
|
|
46226
|
+
- Lead may use tools only for: \`todo_write\`, \`ask_user\`, reading tentacle results, and the final summary.
|
|
46227
|
+
- Do not implement or explore the repo yourself unless the user explicitly asked for lead-only, or the change is a one-line typo you can verify immediately.
|
|
46228
|
+
- Still respect task contracts (Goal / Scope / Acceptance / Constraints) and spawn caps.
|
|
46229
|
+
`;
|
|
46230
|
+
LEAD_ONLY_CONTENT = `# Kraken Delegation Policy
|
|
46231
|
+
|
|
46232
|
+
Current policy: **lead only**.
|
|
46233
|
+
|
|
46234
|
+
- Do **not** spawn \`task\` tentacles (explore / general / verify) unless the user explicitly asks.
|
|
46235
|
+
- Do the work yourself with \`read_file\` / \`grep_content\` / \`bash\` / \`edit_file\`.
|
|
46236
|
+
- The \`task\` tool remains available for an explicit user request only.
|
|
46237
|
+
`;
|
|
46238
|
+
FRAGMENTS = {
|
|
46239
|
+
prefer: PREFER_CONTENT,
|
|
46240
|
+
aggressive: AGGRESSIVE_CONTENT,
|
|
46241
|
+
"lead-only": LEAD_ONLY_CONTENT
|
|
46242
|
+
};
|
|
46243
|
+
}
|
|
46244
|
+
});
|
|
46245
|
+
|
|
46141
46246
|
// src/cli/state/fileStateStore.ts
|
|
46142
46247
|
import { createHash as createHash15, randomUUID as randomUUID3 } from "node:crypto";
|
|
46143
46248
|
import { promises as fs21 } from "node:fs";
|
|
@@ -53227,6 +53332,7 @@ async function runAgentMissionSlice(deps) {
|
|
|
53227
53332
|
customPromptModules: [
|
|
53228
53333
|
KRAKEN_IDENTITY_MODULE,
|
|
53229
53334
|
KRAKEN_LEAD_PLAYBOOK_MODULE,
|
|
53335
|
+
...krakenDelegationPlaybook(true),
|
|
53230
53336
|
{
|
|
53231
53337
|
type: "language-policy",
|
|
53232
53338
|
title: "Response Language",
|
|
@@ -53412,6 +53518,7 @@ var init_missionSlice = __esm({
|
|
|
53412
53518
|
init_buildPolicy();
|
|
53413
53519
|
init_envNumber();
|
|
53414
53520
|
init_modelPricing();
|
|
53521
|
+
init_delegationPolicy();
|
|
53415
53522
|
MUTATING = /* @__PURE__ */ new Set(["write_file", "edit_file", "apply_diff"]);
|
|
53416
53523
|
AGENT_MISSION_IMPLEMENTER_PREAMBLE = "You are the sole implementer for this Zelari mission slice. A multi-agent council may already have produced a plan under `.zelari/` \u2014 treat it as a SPEC to apply on disk. You MUST create or modify real project files with write_file / edit_file. Prose without successful writes is a failed slice.";
|
|
53417
53524
|
}
|
|
@@ -53973,7 +54080,17 @@ function stripTrailingCommas(s) {
|
|
|
53973
54080
|
return out;
|
|
53974
54081
|
}
|
|
53975
54082
|
async function resolveLlm(opts) {
|
|
53976
|
-
|
|
54083
|
+
let active = opts.provider?.trim() || getProviderConfig().activeProviderId;
|
|
54084
|
+
const parent = opts.model?.trim() || getModelForProvider(active) || process.env.ZELARI_MODEL || "";
|
|
54085
|
+
let model = resolveKrakenPlannerModel(parent);
|
|
54086
|
+
const ref = parseQualifiedModelRef(model);
|
|
54087
|
+
if (ref) {
|
|
54088
|
+
const crossKey = await resolveApiKeyWithMeta(ref.provider);
|
|
54089
|
+
if (crossKey?.apiKey && resolveBaseUrl(ref.provider)) {
|
|
54090
|
+
active = ref.provider;
|
|
54091
|
+
}
|
|
54092
|
+
if (active === ref.provider) model = ref.model;
|
|
54093
|
+
}
|
|
53977
54094
|
const meta3 = await resolveApiKeyWithMeta(active);
|
|
53978
54095
|
if (!meta3?.apiKey) {
|
|
53979
54096
|
throw new Error(`No API key for provider '${active}'. Save a key in Settings \u2192 Provider.`);
|
|
@@ -53982,7 +54099,6 @@ async function resolveLlm(opts) {
|
|
|
53982
54099
|
if (!baseUrl) {
|
|
53983
54100
|
throw new Error(`No base URL for provider '${active}'. Set a custom endpoint in Settings.`);
|
|
53984
54101
|
}
|
|
53985
|
-
const model = opts.model?.trim() || process.env.ZELARI_KRAKEN_PLANNER_MODEL?.trim() || getModelForProvider(active) || process.env.ZELARI_MODEL || "";
|
|
53986
54102
|
if (!model) {
|
|
53987
54103
|
throw new Error(`No model selected for provider '${active}'`);
|
|
53988
54104
|
}
|
|
@@ -54218,6 +54334,7 @@ var init_planner = __esm({
|
|
|
54218
54334
|
init_keyStore();
|
|
54219
54335
|
init_openai_compatible();
|
|
54220
54336
|
init_workspaceSummary();
|
|
54337
|
+
init_krakenModel();
|
|
54221
54338
|
MAX_PLAN_ATTEMPTS = 2;
|
|
54222
54339
|
DEFAULT_PLANNER_WORKSPACE_CHARS = 3e3;
|
|
54223
54340
|
DEFAULT_LLM_TIMEOUT_MS = 3e5;
|
|
@@ -64302,6 +64419,7 @@ function krakenSelectionPlaybook(include) {
|
|
|
64302
64419
|
}
|
|
64303
64420
|
|
|
64304
64421
|
// src/cli/hooks/useChatTurn.ts
|
|
64422
|
+
init_delegationPolicy();
|
|
64305
64423
|
init_completionGate();
|
|
64306
64424
|
|
|
64307
64425
|
// src/cli/kraken/verificationBridge.ts
|
|
@@ -65551,6 +65669,7 @@ _(${req.context})_` : "") + "\n\u2192 scegli dalla lista (il turno continua dopo
|
|
|
65551
65669
|
KRAKEN_IDENTITY_MODULE,
|
|
65552
65670
|
KRAKEN_LEAD_PLAYBOOK_MODULE,
|
|
65553
65671
|
...krakenSelectionPlaybook(true),
|
|
65672
|
+
...krakenDelegationPlaybook(true),
|
|
65554
65673
|
languageModule
|
|
65555
65674
|
],
|
|
65556
65675
|
agentSkillConfigs: []
|
|
@@ -71392,6 +71511,7 @@ init_toolRegistry();
|
|
|
71392
71511
|
init_candidateRegistry();
|
|
71393
71512
|
init_metrics2();
|
|
71394
71513
|
init_completionGate();
|
|
71514
|
+
init_delegationPolicy();
|
|
71395
71515
|
init_headless();
|
|
71396
71516
|
init_claudeProvider();
|
|
71397
71517
|
init_skills2();
|
|
@@ -72210,6 +72330,7 @@ async function runHeadlessSingle(opts, provider, model, providerStream) {
|
|
|
72210
72330
|
KRAKEN_IDENTITY_MODULE,
|
|
72211
72331
|
KRAKEN_LEAD_PLAYBOOK_MODULE,
|
|
72212
72332
|
...krakenSelectionPlaybook(opts.mode === "kraken"),
|
|
72333
|
+
...krakenDelegationPlaybook(opts.mode === "kraken"),
|
|
72213
72334
|
{
|
|
72214
72335
|
type: "language-policy",
|
|
72215
72336
|
title: "Response Language",
|