zelari-code 1.6.0 → 1.7.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.
@@ -16,6 +16,8 @@
16
16
  import { AgentHarness } from '@zelari/core/harness';
17
17
  import { createBuiltinToolRegistry } from './toolRegistry.js';
18
18
  import { emitEvent, openaiCompatibleProvider, resolveHeadlessKey, resolveHeadlessProvider, } from './headless.js';
19
+ import { buildSystemPrompt, getAllTools, SINGLE_AGENT_IDENTITY_MODULE, buildLanguagePolicyModuleFor, } from '@zelari/core/skills';
20
+ import { envNumber } from './utils/envNumber.js';
19
21
  export async function runHeadless(opts) {
20
22
  const { provider, model } = resolveHeadlessProvider(opts);
21
23
  const key = await resolveHeadlessKey(provider);
@@ -42,11 +44,81 @@ async function runHeadlessSingle(opts, provider, model, providerStream) {
42
44
  description: t.function.description,
43
45
  parameters: t.function.parameters,
44
46
  }));
45
- const systemPrompt = [
46
- 'You are zelari-code, a CLI coding agent. Be concise and direct.',
47
- 'When the user asks you to write code, debug, or explore, be proactive: list files and read key files to understand the project.',
48
- 'When you finish a task, briefly summarize what you did.',
49
- ].join('\n');
47
+ const toolNames = tools.map((t) => t.name);
48
+ // v1.7.0: route through buildSystemPrompt with SINGLE_AGENT_IDENTITY_MODULE
49
+ // + the language-policy directive so the headless single-mode replies in
50
+ // the user's language. Before this, the prompt was an inline 3-line array
51
+ // missing 7 of 11 behavioral directives (anti-confabulation, act-don't-
52
+ // describe, output self-check, clarification protocol, safety, formatting,
53
+ // tool-usage) AND the response language policy — two regressions in one.
54
+ // The fallback below preserves the pre-1.7 inline behavior for any case
55
+ // where buildSystemPrompt throws (e.g. test context without a populated
56
+ // catalog).
57
+ //
58
+ // v1.7.0 fix (agy audit): build the language module ONCE outside the
59
+ // try/catch so a thrown detection error in `buildLanguagePolicyModuleFor`
60
+ // does not re-throw inside the catch (which would crash the CLI instead
61
+ // of recovering). The module's directive content is wrapped in try/catch
62
+ // too, so even a Unicode edge case degrades to a minimal "reply in
63
+ // Italian" stub.
64
+ let systemPrompt;
65
+ let languageDirectiveContent;
66
+ try {
67
+ languageDirectiveContent = buildLanguagePolicyModuleFor(opts.task).content;
68
+ }
69
+ catch {
70
+ // Detection threw (e.g. malformed input). Use a safe stub so the rest
71
+ // of the prompt assembly still proceeds.
72
+ languageDirectiveContent = '# Response Language\nReply in the user\'s language when possible, otherwise Italian.';
73
+ }
74
+ try {
75
+ const headlessRole = {
76
+ id: 'single',
77
+ name: 'Zelari Code',
78
+ codename: 'zelari',
79
+ role: 'headless coding agent',
80
+ color: '#00d9a3',
81
+ avatar: '◆',
82
+ tools: toolNames,
83
+ // v1.7.0 fix (agy audit): include platform/shell context in the role
84
+ // prompt so the agent knows its cwd and shell — previously this was
85
+ // empty (systemPrompt: '') and the agent lacked the platform block
86
+ // the TUI single-agent path gets.
87
+ systemPrompt: [
88
+ '# Platform',
89
+ `platform: ${process.platform}`,
90
+ `shell: ${process.platform === 'win32' ? 'cmd.exe / Git Bash (auto-detected)' : '/bin/sh'}`,
91
+ '',
92
+ '# Working Directory',
93
+ `You are running in: ${process.cwd()}`,
94
+ 'All relative file paths are resolved against this directory.',
95
+ 'The shell is NON-INTERACTIVE (stdin closed): pass non-interactive flags (--yes, --force, --template).',
96
+ ].join('\n'),
97
+ };
98
+ systemPrompt = buildSystemPrompt(headlessRole, {
99
+ tools: getAllTools(),
100
+ toolNames,
101
+ aiConfig: {
102
+ enabledSkills: [],
103
+ enabledTools: toolNames,
104
+ customPromptModules: [SINGLE_AGENT_IDENTITY_MODULE, {
105
+ type: 'language-policy',
106
+ title: 'Response Language',
107
+ priority: 5,
108
+ content: languageDirectiveContent,
109
+ }],
110
+ agentSkillConfigs: [],
111
+ },
112
+ });
113
+ }
114
+ catch {
115
+ systemPrompt = [
116
+ 'You are zelari-code, a CLI coding agent. Be concise and direct.',
117
+ 'When the user asks you to write code, debug, or explore, be proactive: list files and read key files to understand the project.',
118
+ 'When you finish a task, briefly summarize what you did.',
119
+ languageDirectiveContent,
120
+ ].join('\n');
121
+ }
50
122
  const harness = new AgentHarness({
51
123
  model,
52
124
  provider,
@@ -59,9 +131,8 @@ async function runHeadlessSingle(opts, provider, model, providerStream) {
59
131
  toolRegistry,
60
132
  providerStream,
61
133
  maxToolLoopIterations: (() => {
62
- const raw = process.env.ZELARI_MAX_TOOL_LOOP_ITERATIONS;
63
- const n = raw ? Number.parseInt(raw, 10) : 30;
64
- return Number.isFinite(n) && n > 0 ? n : 30;
134
+ const n = envNumber(process.env.ZELARI_MAX_TOOL_LOOP_ITERATIONS, { default: 30, min: 1 });
135
+ return n;
65
136
  })(),
66
137
  });
67
138
  let finalReason = 'completed';
@@ -1 +1 @@
1
- {"version":3,"file":"runHeadless.js","sourceRoot":"","sources":["../../src/cli/runHeadless.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runHeadless.js","sourceRoot":"","sources":["../../src/cli/runHeadless.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Parse a string from env / user input into a bounded integer.
3
+ *
4
+ * @param raw The raw env-var value (already trimmed by the caller when needed).
5
+ * Empty string and "undefined" / "null" tokens are treated as unset.
6
+ * @param opts See {@link EnvNumberOptions}.
7
+ */
8
+ export function envNumber(raw, opts) {
9
+ const { default: def, min, max } = opts;
10
+ if (raw === undefined || raw === null)
11
+ return def;
12
+ const trimmed = raw.trim();
13
+ if (trimmed.length === 0)
14
+ return def;
15
+ // Defensive: some env vars accidentally end up as the literal string
16
+ // "undefined" / "null" when JSON.stringify(undefined) leaks in. Treat
17
+ // those as unset too.
18
+ if (trimmed.toLowerCase() === 'undefined' || trimmed.toLowerCase() === 'null')
19
+ return def;
20
+ const parsed = Number.parseInt(trimmed, 10);
21
+ // parseInt with non-numeric trailing chars (e.g. "30x") silently returns
22
+ // the prefix. Reject anything that doesn't fully parse. The validation:
23
+ //
24
+ // 1. Must be finite (NaN, Infinity rejected).
25
+ // 2. The integer part of the input must round-trip to the same magnitude.
26
+ //
27
+ // We intentionally ACCEPT these input forms:
28
+ // - Leading `+` sign: "+30" → 30 (some shell scripts emit this)
29
+ // - Leading zeros: "0030" → 30 (octal-style, harmless in decimal parseInt)
30
+ // - Negative sign: "-30" → -30
31
+ //
32
+ // We intentionally REJECT:
33
+ // - Trailing junk: "30x" (parseInt returns 30 but the input was malformed)
34
+ // - Unicode minus: "−30" (U+2212, NOT ASCII U+002D; parseInt sees NaN)
35
+ // - Floats: "30.5" (truncating to 30 silently is the bug we're avoiding)
36
+ //
37
+ // Strategy: strip an optional sign, strip leading zeros, then compare the
38
+ // round-trip. If the input was a negative number, the parsed result must
39
+ // round-trip back to the same magnitude (without the sign) — and we check
40
+ // the sign explicitly.
41
+ if (!Number.isFinite(parsed))
42
+ return def;
43
+ const absStr = `${Math.abs(parsed)}`;
44
+ const body = trimmed.replace(/^[-+]/, '').replace(/^0+(?=\d)/, '');
45
+ if (body !== absStr)
46
+ return def;
47
+ // Sign sanity: input must start with `-` (negative) or `+`/digit (non-negative).
48
+ // Catches inputs like "--30" (double-negative) which parseInt would interpret
49
+ // as 30 but the syntax is bogus.
50
+ const firstChar = trimmed[0];
51
+ const expectedSign = parsed < 0 ? '-' : /[0-9+]/.test(firstChar ?? '');
52
+ const actualSign = parsed < 0 ? firstChar === '-' : firstChar !== '-';
53
+ if (!expectedSign || !actualSign)
54
+ return def;
55
+ let clamped = parsed;
56
+ if (min !== undefined && clamped < min)
57
+ clamped = min;
58
+ if (max !== undefined && clamped > max)
59
+ clamped = max;
60
+ return clamped;
61
+ }
62
+ //# sourceMappingURL=envNumber.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envNumber.js","sourceRoot":"","sources":["../../../src/cli/utils/envNumber.ts"],"names":[],"mappings":"AAoCA;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,GAA8B,EAAE,IAAsB;IAC9E,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACxC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,GAAG,CAAC;IAClD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IACrC,qEAAqE;IACrE,sEAAsE;IACtE,sBAAsB;IACtB,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,WAAW,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,MAAM;QAAE,OAAO,GAAG,CAAC;IAE1F,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC5C,yEAAyE;IACzE,wEAAwE;IACxE,EAAE;IACF,gDAAgD;IAChD,4EAA4E;IAC5E,EAAE;IACF,6CAA6C;IAC7C,qEAAqE;IACrE,kFAAkF;IAClF,sCAAsC;IACtC,EAAE;IACF,2BAA2B;IAC3B,kFAAkF;IAClF,8EAA8E;IAC9E,sFAAsF;IACtF,EAAE;IACF,0EAA0E;IAC1E,yEAAyE;IACzE,0EAA0E;IAC1E,uBAAuB;IACvB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,GAAG,CAAC;IACzC,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IACnE,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,GAAG,CAAC;IAChC,iFAAiF;IACjF,8EAA8E;IAC9E,iCAAiC;IACjC,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IACvE,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,KAAK,GAAG,CAAC;IACtE,IAAI,CAAC,YAAY,IAAI,CAAC,UAAU;QAAE,OAAO,GAAG,CAAC;IAE7C,IAAI,OAAO,GAAG,MAAM,CAAC;IACrB,IAAI,GAAG,KAAK,SAAS,IAAI,OAAO,GAAG,GAAG;QAAE,OAAO,GAAG,GAAG,CAAC;IACtD,IAAI,GAAG,KAAK,SAAS,IAAI,OAAO,GAAG,GAAG;QAAE,OAAO,GAAG,GAAG,CAAC;IACtD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -35,6 +35,7 @@
35
35
  */
36
36
  import { execSync, spawnSync } from "node:child_process";
37
37
  import { existsSync } from "node:fs";
38
+ import { dirname } from "node:path";
38
39
  /** Minimum Node major version (mirrors `engines.node` ">=20.0.0" in package.json). */
39
40
  const MIN_NODE_MAJOR = 20;
40
41
  /** Standard Git for Windows bash locations (mirrors shellResolver.STANDARD_BASH_PATHS). */
@@ -44,16 +45,45 @@ const STANDARD_BASH_PATHS = [
44
45
  "C:\\Program Files (x86)\\Git\\bin\\bash.exe",
45
46
  "C:\\Program Files (x86)\\Git\\usr\\bin\\bash.exe",
46
47
  ];
48
+ /**
49
+ * True when `p` is the WSL bash launcher, not Git Bash.
50
+ * Must stay in lockstep with `shellResolver.isWslBashPath`.
51
+ *
52
+ * @see packages/core/src/core/tools/builtin/shellResolver.ts
53
+ */
54
+ export function isWslBashPath(p) {
55
+ if (!p || typeof p !== "string")
56
+ return false;
57
+ const n = p.replace(/\//g, "\\").toLowerCase();
58
+ if (n.includes("\\windows\\system32\\bash.exe"))
59
+ return true;
60
+ if (n.includes("\\windows\\syswow64\\bash.exe"))
61
+ return true;
62
+ if (n.includes("\\windowsapps\\bash.exe"))
63
+ return true;
64
+ return false;
65
+ }
66
+ /** Accept only a real (non-WSL) bash path that exists on disk. */
67
+ function acceptBashPath(p) {
68
+ if (!p || p.trim().length === 0)
69
+ return null;
70
+ const trimmed = p.trim();
71
+ if (isWslBashPath(trimmed))
72
+ return null;
73
+ if (!existsSyncSafe(trimmed))
74
+ return null;
75
+ return trimmed;
76
+ }
47
77
  /**
48
78
  * Resolve the shell the agent will use — SYNC version of `resolveShell()`.
49
79
  *
50
80
  * Replicated (not imported) so this module has no runtime dependency on
51
81
  * @zelari/core. The detection order MUST stay in lockstep with
52
82
  * `packages/core/src/core/tools/builtin/shellResolver.ts:resolveBashWindows`:
53
- * 1. ZELARI_SHELL env var (explicit override)
54
- * 2. SHELL env var (set by Git Bash / MSYS2 sessions)
83
+ * 1. ZELARI_SHELL env var (explicit override; WSL rejected)
84
+ * 2. SHELL env var (set by Git Bash / MSYS2 sessions; WSL rejected)
55
85
  * 3. Standard Git for Windows install paths (existsSync probe)
56
- * 4. `where bash` (PATH lookup)
86
+ * 4. `where bash` (PATH lookup; skip WSL launchers)
57
87
  * 5. Fallback: cmd.exe on win32, /bin/sh on POSIX
58
88
  */
59
89
  function resolveAgentShellSync() {
@@ -62,40 +92,43 @@ function resolveAgentShellSync() {
62
92
  return { bashPath: null, isBash: true, via: "/bin/sh" };
63
93
  }
64
94
  // 1. Explicit override.
65
- const envShell = process.env.ZELARI_SHELL;
66
- if (envShell && envShell.trim().length > 0 && existsSyncSafe(envShell)) {
67
- return { bashPath: envShell, isBash: true, via: `bash (${envShell})` };
95
+ const fromEnv = acceptBashPath(process.env.ZELARI_SHELL);
96
+ if (fromEnv) {
97
+ return { bashPath: fromEnv, isBash: true, via: `bash (${fromEnv})` };
68
98
  }
69
99
  // 2. SHELL env var (Git Bash / MSYS2 sessions).
70
- const sessionShell = process.env.SHELL;
71
- if (sessionShell &&
72
- sessionShell.trim().length > 0 &&
73
- existsSyncSafe(sessionShell)) {
100
+ const fromSession = acceptBashPath(process.env.SHELL);
101
+ if (fromSession) {
74
102
  return {
75
- bashPath: sessionShell,
103
+ bashPath: fromSession,
76
104
  isBash: true,
77
- via: `bash (${sessionShell})`,
105
+ via: `bash (${fromSession})`,
78
106
  };
79
107
  }
80
108
  // 3. Standard install paths.
81
109
  for (const p of STANDARD_BASH_PATHS) {
82
- if (existsSyncSafe(p)) {
83
- return { bashPath: p, isBash: true, via: `bash (${p})` };
110
+ const accepted = acceptBashPath(p);
111
+ if (accepted) {
112
+ return { bashPath: accepted, isBash: true, via: `bash (${accepted})` };
84
113
  }
85
114
  }
86
115
  // 4. `where bash` — PATH lookup. `where` ships with Windows as a real .exe.
116
+ // Skip WSL launchers (System32/WindowsApps); prefer a later non-WSL hit.
87
117
  try {
88
118
  const result = spawnSync("where", ["bash"], {
89
119
  encoding: "utf8",
90
120
  windowsHide: true,
91
121
  });
92
122
  if (result.status === 0 && result.stdout) {
93
- const first = result.stdout
94
- .split(/\r?\n/)
95
- .find((l) => l.trim().length > 0);
96
- if (first && existsSyncSafe(first)) {
97
- const trimmed = first.trim();
98
- return { bashPath: trimmed, isBash: true, via: `bash (${trimmed})` };
123
+ for (const line of result.stdout.split(/\r?\n/)) {
124
+ const accepted = acceptBashPath(line);
125
+ if (accepted) {
126
+ return {
127
+ bashPath: accepted,
128
+ isBash: true,
129
+ via: `bash (${accepted})`,
130
+ };
131
+ }
99
132
  }
100
133
  }
101
134
  }
@@ -105,6 +138,30 @@ function resolveAgentShellSync() {
105
138
  // 5. Fallback: cmd.exe. POSIX commands (ls, which, $VAR) may fail here.
106
139
  return { bashPath: null, isBash: false, via: "cmd.exe" };
107
140
  }
141
+ /**
142
+ * Env for agent-shell probes/spawns: ensure the directory that hosts the
143
+ * running node binary is on PATH (covers "user-only Node install" when the
144
+ * main process already found node via a richer PATH than Git Bash inherits).
145
+ */
146
+ function agentProbeEnv() {
147
+ const env = { ...process.env };
148
+ try {
149
+ const nodeDir = dirname(process.execPath);
150
+ if (!nodeDir)
151
+ return env;
152
+ const sep = process.platform === "win32" ? ";" : ":";
153
+ const current = env.PATH ?? env.Path ?? "";
154
+ const parts = current.split(sep).filter((p) => p.length > 0);
155
+ const has = parts.some((p) => p.toLowerCase() === nodeDir.toLowerCase());
156
+ if (!has) {
157
+ env.PATH = `${nodeDir}${sep}${current}`;
158
+ }
159
+ }
160
+ catch {
161
+ // ignore — best-effort
162
+ }
163
+ return env;
164
+ }
108
165
  /** existsSync that swallows edge-case errors (invalid chars on win32, etc.). */
109
166
  function existsSyncSafe(p) {
110
167
  try {
@@ -123,16 +180,18 @@ function existsSyncSafe(p) {
123
180
  function probeTool(tool) {
124
181
  const shell = resolveAgentShellSync();
125
182
  let stdout = "";
183
+ const env = agentProbeEnv();
126
184
  if (shell.bashPath) {
127
185
  // Real bash (win32 Git Bash or explicit ZELARI_SHELL): spawn directly
128
186
  // with `-c` so we get the EXACT environment the agent's `bash` tool
129
187
  // gets — this is what catches the "node visible to main, invisible to
130
- // bash" mismatch.
188
+ // bash" mismatch. PATH is enriched with dirname(process.execPath).
131
189
  try {
132
190
  const r = spawnSync(shell.bashPath, ["-c", `${tool} --version`], {
133
191
  encoding: "utf8",
134
192
  stdio: ["ignore", "pipe", "ignore"],
135
193
  windowsHide: true,
194
+ env,
136
195
  });
137
196
  if (r.status === 0)
138
197
  stdout = (r.stdout || "").trim();
@@ -143,11 +202,12 @@ function probeTool(tool) {
143
202
  }
144
203
  }
145
204
  else if (process.platform === "win32") {
146
- // cmd.exe fallback (no Git Bash found). execSync with shell:true → cmd.exe.
205
+ // cmd.exe fallback (no Git Bash found / WSL-only). shell:true → cmd.exe.
147
206
  try {
148
207
  stdout = execSync(`${tool} --version`, {
149
208
  encoding: "utf8",
150
209
  stdio: ["ignore", "pipe", "ignore"],
210
+ env,
151
211
  }).trim();
152
212
  }
153
213
  catch {
@@ -160,6 +220,7 @@ function probeTool(tool) {
160
220
  stdout = execSync(`${tool} --version`, {
161
221
  encoding: "utf8",
162
222
  stdio: ["ignore", "pipe", "ignore"],
223
+ env,
163
224
  }).trim();
164
225
  }
165
226
  catch {
@@ -181,14 +242,23 @@ function probeTool(tool) {
181
242
  function nodeMissingHint() {
182
243
  const shell = resolveAgentShellSync();
183
244
  if (process.platform === "win32") {
245
+ if (!shell.isBash) {
246
+ // cmd.exe fallback still can't see node → genuine missing/broken PATH.
247
+ return (`node is not reachable from the agent's shell (${shell.via}).\n` +
248
+ ` Install Node >= ${MIN_NODE_MAJOR} (https://nodejs.org) and ensure it is\n` +
249
+ ` on PATH, then open a NEW terminal. Optional: install Git for\n` +
250
+ ` Windows so the agent can use real bash (https://git-scm.com/download/win).`);
251
+ }
252
+ // Real Git Bash (or ZELARI_SHELL) selected but node missing inside it.
184
253
  return (`node is not reachable from the agent's shell (${shell.via}).\n` +
185
254
  ` This usually means Node was installed for "current user" only,\n` +
186
- ` while Git Bash inherits the SYSTEM Path. Fix (pick one):\n` +
255
+ ` while Git Bash sees a different Path. Fix (pick one):\n` +
187
256
  ` - Reinstall Node (https://nodejs.org) and choose\n` +
188
257
  ` "Add to PATH for all users", OR\n` +
189
- ` - Add C:\\Program Files\\nodejs\\ to the SYSTEM Path\n` +
190
- ` (System Properties Environment Variables Path), OR\n` +
191
- ` - Set ZELARI_SHELL to a bash that already sees node.`);
258
+ ` - Add your nodejs folder to the User or System Path, OR\n` +
259
+ ` - Set ZELARI_SHELL to a bash that already sees node.\n` +
260
+ ` Note: WSL's C:\\Windows\\System32\\bash.exe is NOT a valid agent\n` +
261
+ ` shell — install Git for Windows instead.`);
192
262
  }
193
263
  return (`node is not on the agent's shell PATH.\n` +
194
264
  ` Install Node >= ${MIN_NODE_MAJOR} (https://nodejs.org) or, if you use\n` +
@@ -1 +1 @@
1
- {"version":3,"file":"prereqChecks.js","sourceRoot":"","sources":["../../../src/cli/utils/prereqChecks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prereqChecks.js","sourceRoot":"","sources":["../../../src/cli/utils/prereqChecks.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zelari-code",
3
- "version": "1.6.0",
3
+ "version": "1.7.1",
4
4
  "description": "Zelari Code — AI Council coding agent CLI. Multi-agent orchestration (Caronte, Nettuno, Gerione, Plutone, Minosse, Lucifero) with slash commands, provider-agnostic LLM streaming, and self-update.",
5
5
  "author": "N-THEM Studio",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -47,7 +47,7 @@
47
47
  },
48
48
  "devDependencies": {
49
49
  "@testing-library/react": "^16.3.2",
50
- "@zelari/core": "1.5.5",
50
+ "@zelari/core": "1.7.1",
51
51
  "@types/node": "^25.3.0",
52
52
  "@types/react": "^19.0.10",
53
53
  "esbuild": "^0.25.0",