zelari-code 0.7.8 → 0.7.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/README.md +95 -44
  2. package/bin/zelari-code.js +1 -1
  3. package/dist/agents/councilApi.js +7 -7
  4. package/dist/agents/councilApi.js.map +1 -1
  5. package/dist/agents/councilDirectives.js +3 -3
  6. package/dist/agents/promoteMember.js +2 -2
  7. package/dist/agents/roles.js +50 -32
  8. package/dist/agents/roles.js.map +1 -1
  9. package/dist/agents/skills/builtin/debugging.js +4 -4
  10. package/dist/agents/skills/builtin/debugging.js.map +1 -1
  11. package/dist/agents/skills/builtin/docs.js +23 -13
  12. package/dist/agents/skills/builtin/docs.js.map +1 -1
  13. package/dist/agents/skills/builtin/git-ops.js +3 -3
  14. package/dist/agents/skills/builtin/git-ops.js.map +1 -1
  15. package/dist/agents/skills/builtin/planning.js +4 -4
  16. package/dist/agents/skills/builtin/planning.js.map +1 -1
  17. package/dist/agents/skills/builtin/refactoring.js +3 -3
  18. package/dist/agents/skills/builtin/refactoring.js.map +1 -1
  19. package/dist/agents/skills/builtin/review.js +9 -9
  20. package/dist/agents/skills/builtin/review.js.map +1 -1
  21. package/dist/agents/skills/builtin/testing.js +3 -3
  22. package/dist/agents/skills/builtin/testing.js.map +1 -1
  23. package/dist/agents/tools.js +2 -9
  24. package/dist/agents/tools.js.map +1 -1
  25. package/dist/cli/app.js +79 -18
  26. package/dist/cli/app.js.map +1 -1
  27. package/dist/cli/components/CollapsibleToolOutput.js +8 -26
  28. package/dist/cli/components/CollapsibleToolOutput.js.map +1 -1
  29. package/dist/cli/components/Header.js +6 -18
  30. package/dist/cli/components/Header.js.map +1 -1
  31. package/dist/cli/components/LiveRegion.js +7 -3
  32. package/dist/cli/components/LiveRegion.js.map +1 -1
  33. package/dist/cli/components/SelectList.js +67 -0
  34. package/dist/cli/components/SelectList.js.map +1 -0
  35. package/dist/cli/components/Sidebar.js +86 -37
  36. package/dist/cli/components/Sidebar.js.map +1 -1
  37. package/dist/cli/components/Spinner.js +51 -0
  38. package/dist/cli/components/Spinner.js.map +1 -0
  39. package/dist/cli/components/SplashScreen.js +117 -71
  40. package/dist/cli/components/SplashScreen.js.map +1 -1
  41. package/dist/cli/components/StatusBar.js +44 -32
  42. package/dist/cli/components/StatusBar.js.map +1 -1
  43. package/dist/cli/councilConfig.js +38 -0
  44. package/dist/cli/councilConfig.js.map +1 -0
  45. package/dist/cli/councilDispatcher.js +35 -49
  46. package/dist/cli/councilDispatcher.js.map +1 -1
  47. package/dist/cli/hooks/useChatTurn.js +80 -61
  48. package/dist/cli/hooks/useChatTurn.js.map +1 -1
  49. package/dist/cli/hooks/useExecutionTimer.js +25 -0
  50. package/dist/cli/hooks/useExecutionTimer.js.map +1 -0
  51. package/dist/cli/hooks/useGitChanges.js +142 -0
  52. package/dist/cli/hooks/useGitChanges.js.map +1 -0
  53. package/dist/cli/hooks/useSlashDispatch.js +20 -3
  54. package/dist/cli/hooks/useSlashDispatch.js.map +1 -1
  55. package/dist/cli/main.bundled.js +19776 -19052
  56. package/dist/cli/main.bundled.js.map +4 -4
  57. package/dist/cli/main.js +1 -1
  58. package/dist/cli/main.js.map +1 -1
  59. package/dist/cli/mcp/mcpClient.js +14 -6
  60. package/dist/cli/mcp/mcpClient.js.map +1 -1
  61. package/dist/cli/slashCommands.js +21 -4
  62. package/dist/cli/slashCommands.js.map +1 -1
  63. package/dist/cli/slashHandlers/provider.js +101 -4
  64. package/dist/cli/slashHandlers/provider.js.map +1 -1
  65. package/dist/cli/updater.js +8 -5
  66. package/dist/cli/updater.js.map +1 -1
  67. package/dist/cli/utils/cmdline.js +26 -0
  68. package/dist/cli/utils/cmdline.js.map +1 -0
  69. package/dist/cli/utils/paths.js +20 -0
  70. package/dist/cli/utils/paths.js.map +1 -0
  71. package/dist/cli/workspace/planDetect.js +17 -0
  72. package/dist/cli/workspace/planDetect.js.map +1 -0
  73. package/dist/cli/workspace/postCouncilHook.js +39 -28
  74. package/dist/cli/workspace/postCouncilHook.js.map +1 -1
  75. package/dist/cli/workspace/stubs.js +241 -196
  76. package/dist/cli/workspace/stubs.js.map +1 -1
  77. package/dist/main/core/AgentHarness.js +36 -7
  78. package/dist/main/core/AgentHarness.js.map +1 -1
  79. package/dist/main/core/tools/builtin/listFiles.js +43 -5
  80. package/dist/main/core/tools/builtin/listFiles.js.map +1 -1
  81. package/dist/main/core/tools/builtin/search.js +28 -120
  82. package/dist/main/core/tools/builtin/search.js.map +1 -1
  83. package/package.json +71 -71
  84. package/dist/cli/oauthCallbackServer.js +0 -207
  85. package/dist/cli/oauthCallbackServer.js.map +0 -1
  86. package/dist/main/core/tools/builtin/_walk.js +0 -129
  87. package/dist/main/core/tools/builtin/_walk.js.map +0 -1
  88. package/dist/main/core/tools/builtin/diff.js +0 -477
  89. package/dist/main/core/tools/builtin/diff.js.map +0 -1
@@ -1,477 +0,0 @@
1
- import { z } from 'zod';
2
- import { promises as fs } from 'node:fs';
3
- import path from 'node:path';
4
- import { typedOk, typedErr } from '../toolTypes.js';
5
- // ────────────────────────────────────────────────────────────────────────────
6
- // LCS-based diff (simplified Myers)
7
- // ────────────────────────────────────────────────────────────────────────────
8
- function lcsTable(a, b) {
9
- const m = a.length;
10
- const n = b.length;
11
- const dp = Array.from({ length: m + 1 }, () => new Array(n + 1).fill(0));
12
- for (let i = 1; i <= m; i++) {
13
- for (let j = 1; j <= n; j++) {
14
- if (a[i - 1] === b[j - 1]) {
15
- dp[i][j] = dp[i - 1][j - 1] + 1;
16
- }
17
- else {
18
- dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
19
- }
20
- }
21
- }
22
- return dp;
23
- }
24
- function buildHunks(a, b) {
25
- const dp = lcsTable(a, b);
26
- const ops = [];
27
- let i = a.length;
28
- let j = b.length;
29
- while (i > 0 && j > 0) {
30
- if (a[i - 1] === b[j - 1]) {
31
- ops.push({ kind: ' ', text: a[i - 1] });
32
- i--;
33
- j--;
34
- }
35
- else if (dp[i - 1][j] >= dp[i][j - 1]) {
36
- ops.push({ kind: '-', text: a[i - 1] });
37
- i--;
38
- }
39
- else {
40
- ops.push({ kind: '+', text: b[j - 1] });
41
- j--;
42
- }
43
- }
44
- while (i > 0) {
45
- ops.push({ kind: '-', text: a[i - 1] });
46
- i--;
47
- }
48
- while (j > 0) {
49
- ops.push({ kind: '+', text: b[j - 1] });
50
- j--;
51
- }
52
- ops.reverse();
53
- return groupIntoHunks(ops);
54
- }
55
- function groupIntoHunks(ops) {
56
- const CONTEXT = 3;
57
- const hunks = [];
58
- let i = 0;
59
- while (i < ops.length) {
60
- // Skip leading context that's not adjacent to a change
61
- while (i < ops.length && ops[i].kind === ' ')
62
- i++;
63
- if (i >= ops.length)
64
- break;
65
- // Found a change at index i. Walk back CONTEXT lines for leading context.
66
- const start = Math.max(0, i - CONTEXT);
67
- let oldStart = 0, newStart = 0;
68
- // Compute line numbers
69
- {
70
- let ol = 0, nl = 0;
71
- for (let k = 0; k < start; k++) {
72
- if (ops[k].kind !== '+')
73
- ol++;
74
- if (ops[k].kind !== '-')
75
- nl++;
76
- }
77
- oldStart = ol + 1; // 1-indexed
78
- newStart = nl + 1;
79
- }
80
- const hunkOps = [];
81
- // Leading context
82
- for (let k = start; k < i; k++)
83
- hunkOps.push(ops[k]);
84
- // Body: consume changes + trailing CONTEXT, but stop if we hit 2*CONTEXT
85
- // non-change lines (forces a new hunk).
86
- let nonChangeStreak = 0;
87
- while (i < ops.length) {
88
- const op = ops[i];
89
- hunkOps.push(op);
90
- if (op.kind === ' ') {
91
- nonChangeStreak++;
92
- if (nonChangeStreak > 2 * CONTEXT) {
93
- // Trim trailing CONTEXT and break
94
- hunkOps.splice(hunkOps.length - CONTEXT, CONTEXT);
95
- i++;
96
- break;
97
- }
98
- }
99
- else {
100
- nonChangeStreak = 0;
101
- }
102
- i++;
103
- }
104
- // Compute hunk line counts
105
- let oldLines = 0, newLines = 0;
106
- for (const op of hunkOps) {
107
- if (op.kind !== '+')
108
- oldLines++;
109
- if (op.kind !== '-')
110
- newLines++;
111
- }
112
- hunks.push({ oldStart, oldLines, newStart, newLines, ops: hunkOps });
113
- }
114
- return hunks;
115
- }
116
- function formatUnified(hunks, oldLabel, newLabel) {
117
- const lines = [`--- ${oldLabel}`, `+++ ${newLabel}`];
118
- for (const h of hunks) {
119
- lines.push(`@@ -${h.oldStart},${h.oldLines} +${h.newStart},${h.newLines} @@`);
120
- for (const op of h.ops) {
121
- lines.push(op.kind + op.text);
122
- }
123
- }
124
- return lines.join('\n');
125
- }
126
- function parseUnified(raw) {
127
- const lines = raw.split('\n');
128
- if (lines.length < 2 || !lines[0].startsWith('--- ') || !lines[1].startsWith('+++ ')) {
129
- throw new Error('Invalid unified diff: missing --- / +++ headers');
130
- }
131
- const oldLabel = lines[0].slice(4).trim();
132
- const newLabel = lines[1].slice(4).trim();
133
- const hunks = [];
134
- let i = 2;
135
- while (i < lines.length) {
136
- const m = lines[i].match(/^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/);
137
- if (!m) {
138
- i++;
139
- continue;
140
- }
141
- const oldStart = parseInt(m[1], 10);
142
- const oldLines = m[2] === undefined ? 1 : parseInt(m[2], 10);
143
- const newStart = parseInt(m[3], 10);
144
- const newLines = m[4] === undefined ? 1 : parseInt(m[4], 10);
145
- i++;
146
- const ops = [];
147
- let consumedOld = 0, consumedNew = 0;
148
- while (i < lines.length && (consumedOld < oldLines || consumedNew < newLines)) {
149
- const ln = lines[i];
150
- if (ln.length === 0) {
151
- ops.push({ kind: ' ', text: '' });
152
- consumedOld++;
153
- consumedNew++;
154
- i++;
155
- continue;
156
- }
157
- const c = ln[0];
158
- const text = ln.slice(1);
159
- if (c === ' ') {
160
- ops.push({ kind: ' ', text });
161
- consumedOld++;
162
- consumedNew++;
163
- i++;
164
- }
165
- else if (c === '-') {
166
- ops.push({ kind: '-', text });
167
- consumedOld++;
168
- i++;
169
- }
170
- else if (c === '+') {
171
- ops.push({ kind: '+', text });
172
- consumedNew++;
173
- i++;
174
- }
175
- else {
176
- // Malformed hunk body
177
- break;
178
- }
179
- }
180
- hunks.push({ oldStart, oldLines, newStart, newLines, ops });
181
- }
182
- return { oldLabel, newLabel, hunks };
183
- }
184
- // ────────────────────────────────────────────────────────────────────────────
185
- // Patch application (with optional fuzzy whitespace match)
186
- // ────────────────────────────────────────────────────────────────────────────
187
- function normalizeWhitespace(s) {
188
- return s.replace(/\s+/g, ' ').trim();
189
- }
190
- /**
191
- * Apply ALL hunks to the original file lines in a single pass.
192
- *
193
- * Correct algorithm: each hunk's oldStart refers to the ORIGINAL file, not the
194
- * post-previous-hunk state. We walk the file once, copying unmodified prefix
195
- * and rewriting per-hunk regions. Atomic: if ANY hunk fails, no commits happen.
196
- */
197
- function applyAllHunks(originalLines, hunks, fuzzy) {
198
- const out = [];
199
- let fileIdx = 0; // pointer into originalLines
200
- let hunksApplied = 0;
201
- let hunksSkipped = 0;
202
- let lastReason;
203
- for (const hunk of hunks) {
204
- const startIdx = hunk.oldStart - 1; // 0-indexed
205
- if (startIdx < 0) {
206
- hunksSkipped++;
207
- lastReason = `oldStart ${hunk.oldStart} out of range (must be >= 1)`;
208
- continue;
209
- }
210
- if (startIdx > originalLines.length) {
211
- hunksSkipped++;
212
- lastReason = `oldStart ${hunk.oldStart} beyond file end (length ${originalLines.length})`;
213
- continue;
214
- }
215
- // Copy unmodified prefix
216
- while (fileIdx < startIdx) {
217
- out.push(originalLines[fileIdx]);
218
- fileIdx++;
219
- }
220
- // Walk hunk ops against original file
221
- let hunkFileIdx = fileIdx;
222
- let hunkIdx = 0;
223
- const hunkOut = [];
224
- let hunkOk = true;
225
- while (hunkIdx < hunk.ops.length) {
226
- const op = hunk.ops[hunkIdx];
227
- if (op.kind === ' ') {
228
- const fileLine = originalLines[hunkFileIdx] ?? '';
229
- if (fileLine === op.text || (fuzzy && normalizeWhitespace(fileLine) === normalizeWhitespace(op.text))) {
230
- hunkOut.push(fileLine);
231
- hunkFileIdx++;
232
- hunkIdx++;
233
- }
234
- else {
235
- lastReason = `Context mismatch at line ${hunkFileIdx + 1}: expected "${op.text.slice(0, 60)}", got "${fileLine.slice(0, 60)}"`;
236
- hunkOk = false;
237
- break;
238
- }
239
- }
240
- else if (op.kind === '-') {
241
- const fileLine = originalLines[hunkFileIdx] ?? '';
242
- if (fileLine === op.text || (fuzzy && normalizeWhitespace(fileLine) === normalizeWhitespace(op.text))) {
243
- hunkFileIdx++;
244
- hunkIdx++;
245
- }
246
- else {
247
- lastReason = `Delete mismatch at line ${hunkFileIdx + 1}: expected "${op.text.slice(0, 60)}", got "${fileLine.slice(0, 60)}"`;
248
- hunkOk = false;
249
- break;
250
- }
251
- }
252
- else {
253
- // '+'
254
- hunkOut.push(op.text);
255
- hunkIdx++;
256
- }
257
- }
258
- if (!hunkOk) {
259
- hunksSkipped++;
260
- break; // atomic: stop on first failure
261
- }
262
- out.push(...hunkOut);
263
- fileIdx = hunkFileIdx;
264
- hunksApplied++;
265
- }
266
- // Copy remaining unmodified tail
267
- while (fileIdx < originalLines.length) {
268
- out.push(originalLines[fileIdx]);
269
- fileIdx++;
270
- }
271
- return { lines: out, hunksApplied, hunksSkipped, lastReason };
272
- }
273
- // ────────────────────────────────────────────────────────────────────────────
274
- // show_diff tool
275
- // ────────────────────────────────────────────────────────────────────────────
276
- const ShowDiffArgsSchema = z.object({
277
- path: z.string().min(1),
278
- proposedContent: z.string(),
279
- contextLines: z.number().int().nonnegative().default(3),
280
- });
281
- export { ShowDiffArgsSchema };
282
- export const showDiffTool = {
283
- name: 'show_diff',
284
- description: 'Show unified diff between current file content and proposed content. ' +
285
- 'Read-only — does NOT modify the file. Use this to preview edits before applying ' +
286
- 'with edit_file or apply_diff.',
287
- permissions: ['read'],
288
- timeoutMs: 15000,
289
- inputSchema: ShowDiffArgsSchema,
290
- execute: async (args, ctx) => {
291
- try {
292
- const absPath = path.isAbsolute(args.path) ? args.path : path.join(ctx.cwd, args.path);
293
- let current = '';
294
- try {
295
- current = await fs.readFile(absPath, 'utf-8');
296
- }
297
- catch (err) {
298
- if (err.code !== 'ENOENT') {
299
- return typedErr(err instanceof Error ? err.message : String(err));
300
- }
301
- // ENOENT → treat as empty file (creating new)
302
- }
303
- const a = current.split('\n');
304
- const b = args.proposedContent.split('\n');
305
- // Re-implement groupIntoHunks with custom CONTEXT for show_diff
306
- const CONTEXT = args.contextLines;
307
- const rawOps = [];
308
- // Inline LCS — duplicated to honor custom CONTEXT (groupIntoHunks hard-codes 3).
309
- const dp = lcsTable(a, b);
310
- let i = a.length, j = b.length;
311
- while (i > 0 && j > 0) {
312
- if (a[i - 1] === b[j - 1]) {
313
- rawOps.push({ kind: ' ', text: a[i - 1] });
314
- i--;
315
- j--;
316
- }
317
- else if (dp[i - 1][j] >= dp[i][j - 1]) {
318
- rawOps.push({ kind: '-', text: a[i - 1] });
319
- i--;
320
- }
321
- else {
322
- rawOps.push({ kind: '+', text: b[j - 1] });
323
- j--;
324
- }
325
- }
326
- while (i > 0) {
327
- rawOps.push({ kind: '-', text: a[i - 1] });
328
- i--;
329
- }
330
- while (j > 0) {
331
- rawOps.push({ kind: '+', text: b[j - 1] });
332
- j--;
333
- }
334
- rawOps.reverse();
335
- // Group with custom CONTEXT
336
- const hunks = [];
337
- let k = 0;
338
- while (k < rawOps.length) {
339
- while (k < rawOps.length && rawOps[k].kind === ' ')
340
- k++;
341
- if (k >= rawOps.length)
342
- break;
343
- const start = Math.max(0, k - CONTEXT);
344
- let oldStart = 0, newStart = 0;
345
- {
346
- let ol = 0, nl = 0;
347
- for (let q = 0; q < start; q++) {
348
- if (rawOps[q].kind !== '+')
349
- ol++;
350
- if (rawOps[q].kind !== '-')
351
- nl++;
352
- }
353
- oldStart = ol + 1;
354
- newStart = nl + 1;
355
- }
356
- const hunkOps = [];
357
- for (let q = start; q < k; q++)
358
- hunkOps.push(rawOps[q]);
359
- let nonChangeStreak = 0;
360
- while (k < rawOps.length) {
361
- const op = rawOps[k];
362
- hunkOps.push(op);
363
- if (op.kind === ' ') {
364
- nonChangeStreak++;
365
- if (nonChangeStreak > 2 * CONTEXT) {
366
- hunkOps.splice(hunkOps.length - CONTEXT, CONTEXT);
367
- k++;
368
- break;
369
- }
370
- }
371
- else {
372
- nonChangeStreak = 0;
373
- }
374
- k++;
375
- }
376
- let oldLines = 0, newLines = 0;
377
- for (const op of hunkOps) {
378
- if (op.kind !== '+')
379
- oldLines++;
380
- if (op.kind !== '-')
381
- newLines++;
382
- }
383
- hunks.push({ oldStart, oldLines, newStart, newLines, ops: hunkOps });
384
- }
385
- const diff = formatUnified(hunks, absPath, args.path);
386
- const summaries = hunks.map(h => ({
387
- oldStart: h.oldStart,
388
- oldLines: h.oldLines,
389
- newStart: h.newStart,
390
- newLines: h.newLines,
391
- added: h.ops.filter(o => o.kind === '+').length,
392
- removed: h.ops.filter(o => o.kind === '-').length,
393
- }));
394
- const added = summaries.reduce((s, h) => s + h.added, 0);
395
- const removed = summaries.reduce((s, h) => s + h.removed, 0);
396
- return typedOk({
397
- path: absPath,
398
- diff,
399
- hunks: summaries,
400
- added,
401
- removed,
402
- unchanged: added === 0 && removed === 0,
403
- });
404
- }
405
- catch (err) {
406
- return typedErr(err instanceof Error ? err.message : String(err));
407
- }
408
- },
409
- };
410
- // ────────────────────────────────────────────────────────────────────────────
411
- // apply_diff tool
412
- // ────────────────────────────────────────────────────────────────────────────
413
- const ApplyDiffArgsSchema = z.object({
414
- path: z.string().min(1),
415
- diff: z.string().min(1),
416
- fuzzyMatch: z.boolean().default(false),
417
- dryRun: z.boolean().default(false),
418
- });
419
- export { ApplyDiffArgsSchema };
420
- export const applyDiffTool = {
421
- name: 'apply_diff',
422
- description: 'Apply a unified diff patch to a file. Parses ---/+++/@@ headers and applies each ' +
423
- 'hunk sequentially. With fuzzyMatch=true, tolerates whitespace differences. ' +
424
- 'With dryRun=true, returns the final content without writing. ' +
425
- 'Atomic: if any hunk fails, no partial write occurs.',
426
- permissions: ['write'],
427
- timeoutMs: 15000,
428
- inputSchema: ApplyDiffArgsSchema,
429
- execute: async (args, ctx) => {
430
- try {
431
- const absPath = path.isAbsolute(args.path) ? args.path : path.join(ctx.cwd, args.path);
432
- let current = '';
433
- try {
434
- current = await fs.readFile(absPath, 'utf-8');
435
- }
436
- catch (err) {
437
- if (err.code !== 'ENOENT') {
438
- return typedErr(err instanceof Error ? err.message : String(err));
439
- }
440
- // ENOENT → empty file
441
- }
442
- let parsed;
443
- try {
444
- parsed = parseUnified(args.diff);
445
- }
446
- catch (err) {
447
- return typedErr(`Parse failed: ${err instanceof Error ? err.message : String(err)}`);
448
- }
449
- if (parsed.hunks.length === 0) {
450
- return typedErr('No hunks found in diff');
451
- }
452
- // Apply ALL hunks atomically against the ORIGINAL file. Each hunk's
453
- // oldStart refers to the original file, not the post-previous-hunk state.
454
- const originalLines = current.split('\n');
455
- const result = applyAllHunks(originalLines, parsed.hunks, args.fuzzyMatch);
456
- const finalContent = result.lines.join('\n');
457
- const ok = result.hunksSkipped === 0;
458
- if (ok && !args.dryRun) {
459
- await fs.mkdir(path.dirname(absPath), { recursive: true });
460
- await fs.writeFile(absPath, finalContent, 'utf-8');
461
- }
462
- return typedOk({
463
- path: absPath,
464
- applied: ok,
465
- hunksApplied: result.hunksApplied,
466
- hunksSkipped: result.hunksSkipped,
467
- finalContent: args.dryRun || !ok ? '' : finalContent, // omit content on dryRun/skip to save tokens
468
- dryRun: args.dryRun,
469
- reason: ok ? undefined : result.lastReason,
470
- });
471
- }
472
- catch (err) {
473
- return typedErr(err instanceof Error ? err.message : String(err));
474
- }
475
- },
476
- };
477
- //# sourceMappingURL=diff.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../../../../src/main/core/tools/builtin/diff.ts"],"names":[],"mappings":"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"}