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.
@@ -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
- const active = (opts.provider?.trim() || getProviderConfig().activeProviderId);
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":"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"}
1
+ {"version":3,"file":"scriptPlanner.js","sourceRoot":"","sources":["../../../src/cli/kraken/scriptPlanner.ts"],"names":[],"mappings":"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"}
@@ -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 model = resolveKrakenSubModel2(agent, modelOverride || cfg.model);
45761
- const subCfg = { ...cfg, model };
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
- const active = opts.provider?.trim() || getProviderConfig().activeProviderId;
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",