zelari-code 2.1.0 → 2.1.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.
Files changed (114) hide show
  1. package/README.md +4 -4
  2. package/package.json +8 -5
  3. package/dist/cli/ast/engine.test.js +0 -101
  4. package/dist/cli/ast/engine.test.js.map +0 -1
  5. package/dist/cli/ast/tools.test.js +0 -124
  6. package/dist/cli/ast/tools.test.js.map +0 -1
  7. package/dist/cli/headless.test.js +0 -107
  8. package/dist/cli/headless.test.js.map +0 -1
  9. package/dist/cli/headlessE2eSession.test.js +0 -189
  10. package/dist/cli/headlessE2eSession.test.js.map +0 -1
  11. package/dist/cli/headlessHistorySeed.test.js +0 -158
  12. package/dist/cli/headlessHistorySeed.test.js.map +0 -1
  13. package/dist/cli/headlessSessionEvent.test.js +0 -83
  14. package/dist/cli/headlessSessionEvent.test.js.map +0 -1
  15. package/dist/cli/headlessSpine.test.js +0 -153
  16. package/dist/cli/headlessSpine.test.js.map +0 -1
  17. package/dist/cli/hooks/observationStore.test.js +0 -135
  18. package/dist/cli/hooks/observationStore.test.js.map +0 -1
  19. package/dist/cli/hooks/sessionSurface.test.js +0 -112
  20. package/dist/cli/hooks/sessionSurface.test.js.map +0 -1
  21. package/dist/cli/kraken/candidateRegistry.test.js +0 -211
  22. package/dist/cli/kraken/candidateRegistry.test.js.map +0 -1
  23. package/dist/cli/kraken/completionGate.test.js +0 -172
  24. package/dist/cli/kraken/completionGate.test.js.map +0 -1
  25. package/dist/cli/kraken/evidenceAnchoring.test.js +0 -92
  26. package/dist/cli/kraken/evidenceAnchoring.test.js.map +0 -1
  27. package/dist/cli/kraken/evidenceProvenance.test.js +0 -113
  28. package/dist/cli/kraken/evidenceProvenance.test.js.map +0 -1
  29. package/dist/cli/kraken/executor.workbench.test.js +0 -134
  30. package/dist/cli/kraken/executor.workbench.test.js.map +0 -1
  31. package/dist/cli/kraken/metrics.test.js +0 -145
  32. package/dist/cli/kraken/metrics.test.js.map +0 -1
  33. package/dist/cli/kraken/nativeVerification.test.js +0 -207
  34. package/dist/cli/kraken/nativeVerification.test.js.map +0 -1
  35. package/dist/cli/kraken/planner.test.js +0 -43
  36. package/dist/cli/kraken/planner.test.js.map +0 -1
  37. package/dist/cli/kraken/scriptPlanner.test.js +0 -152
  38. package/dist/cli/kraken/scriptPlanner.test.js.map +0 -1
  39. package/dist/cli/kraken/selectionPlaybook.test.js +0 -55
  40. package/dist/cli/kraken/selectionPlaybook.test.js.map +0 -1
  41. package/dist/cli/kraken/skillSuggest.test.js +0 -157
  42. package/dist/cli/kraken/skillSuggest.test.js.map +0 -1
  43. package/dist/cli/kraken/strictDefaults.test.js +0 -149
  44. package/dist/cli/kraken/strictDefaults.test.js.map +0 -1
  45. package/dist/cli/kraken/strictGatePackIndependence.test.js +0 -112
  46. package/dist/cli/kraken/strictGatePackIndependence.test.js.map +0 -1
  47. package/dist/cli/kraken/turnRuntime.test.js +0 -377
  48. package/dist/cli/kraken/turnRuntime.test.js.map +0 -1
  49. package/dist/cli/kraken/verificationBridge.session.test.js +0 -104
  50. package/dist/cli/kraken/verificationBridge.session.test.js.map +0 -1
  51. package/dist/cli/kraken/verificationBridge.test.js +0 -177
  52. package/dist/cli/kraken/verificationBridge.test.js.map +0 -1
  53. package/dist/cli/kraken/verifier.test.js +0 -232
  54. package/dist/cli/kraken/verifier.test.js.map +0 -1
  55. package/dist/cli/kraken/verifierAdvisoryLock.test.js +0 -154
  56. package/dist/cli/kraken/verifierAdvisoryLock.test.js.map +0 -1
  57. package/dist/cli/kraken/verifierLifecycle.test.js +0 -181
  58. package/dist/cli/kraken/verifierLifecycle.test.js.map +0 -1
  59. package/dist/cli/kraken/verifierRoundTrip.test.js +0 -166
  60. package/dist/cli/kraken/verifierRoundTrip.test.js.map +0 -1
  61. package/dist/cli/kraken/verifierSettings.test.js +0 -237
  62. package/dist/cli/kraken/verifierSettings.test.js.map +0 -1
  63. package/dist/cli/kraken/verifyReport.test.js +0 -111
  64. package/dist/cli/kraken/verifyReport.test.js.map +0 -1
  65. package/dist/cli/kraken/weaknessMeter.test.js +0 -212
  66. package/dist/cli/kraken/weaknessMeter.test.js.map +0 -1
  67. package/dist/cli/kraken/workbench.test.js +0 -253
  68. package/dist/cli/kraken/workbench.test.js.map +0 -1
  69. package/dist/cli/kraken/workbenchView.test.js +0 -130
  70. package/dist/cli/kraken/workbenchView.test.js.map +0 -1
  71. package/dist/cli/legacyContextIsolation.test.js +0 -65
  72. package/dist/cli/legacyContextIsolation.test.js.map +0 -1
  73. package/dist/cli/lsp/tools.test.js +0 -90
  74. package/dist/cli/lsp/tools.test.js.map +0 -1
  75. package/dist/cli/missionContinuation.test.js +0 -117
  76. package/dist/cli/missionContinuation.test.js.map +0 -1
  77. package/dist/cli/profileMatrix.test.js +0 -130
  78. package/dist/cli/profileMatrix.test.js.map +0 -1
  79. package/dist/cli/provider/capabilities.test.js +0 -46
  80. package/dist/cli/provider/capabilities.test.js.map +0 -1
  81. package/dist/cli/provider/openai-compatible.timeout.test.js +0 -72
  82. package/dist/cli/provider/openai-compatible.timeout.test.js.map +0 -1
  83. package/dist/cli/providerConfig.test.js +0 -85
  84. package/dist/cli/providerConfig.test.js.map +0 -1
  85. package/dist/cli/sessionReplayInvariant.test.js +0 -187
  86. package/dist/cli/sessionReplayInvariant.test.js.map +0 -1
  87. package/dist/cli/sessionSpine.test.js +0 -171
  88. package/dist/cli/sessionSpine.test.js.map +0 -1
  89. package/dist/cli/thinking.test.js +0 -214
  90. package/dist/cli/thinking.test.js.map +0 -1
  91. package/dist/cli/tools/inspectCommand.schema.test.js +0 -82
  92. package/dist/cli/tools/inspectCommand.schema.test.js.map +0 -1
  93. package/dist/cli/tools/inspectCommand.test.js +0 -311
  94. package/dist/cli/tools/inspectCommand.test.js.map +0 -1
  95. package/dist/cli/tools/krakenCsvFanout.test.js +0 -200
  96. package/dist/cli/tools/krakenCsvFanout.test.js.map +0 -1
  97. package/dist/cli/tools/krakenSelectTool.test.js +0 -246
  98. package/dist/cli/tools/krakenSelectTool.test.js.map +0 -1
  99. package/dist/cli/tools/observeBatch.test.js +0 -329
  100. package/dist/cli/tools/observeBatch.test.js.map +0 -1
  101. package/dist/cli/tools/taskTool.dynamicChecks.test.js +0 -156
  102. package/dist/cli/tools/taskTool.dynamicChecks.test.js.map +0 -1
  103. package/dist/cli/tools/taskTool.planSafety.test.js +0 -280
  104. package/dist/cli/tools/taskTool.planSafety.test.js.map +0 -1
  105. package/dist/cli/tools/taskTool.verifyReport.test.js +0 -140
  106. package/dist/cli/tools/taskTool.verifyReport.test.js.map +0 -1
  107. package/dist/cli/utils/contextGrowthSummary.test.js +0 -74
  108. package/dist/cli/utils/contextGrowthSummary.test.js.map +0 -1
  109. package/dist/cli/workspace/planDriftCheck.test.js +0 -146
  110. package/dist/cli/workspace/planDriftCheck.test.js.map +0 -1
  111. package/dist/cli/workspace/planStore.test.js +0 -295
  112. package/dist/cli/workspace/planStore.test.js.map +0 -1
  113. package/dist/cli/zelariMission.test.js +0 -44
  114. package/dist/cli/zelariMission.test.js.map +0 -1
@@ -1,329 +0,0 @@
1
- /**
2
- * observe_batch — tests (2026-07 context-growth plan, Fase 1 acceptance).
3
- *
4
- * Covers: aggregation + input order, isolated failures, per-op args
5
- * validation, schema limits (max ops, dup ids), evidence determinism,
6
- * evidence/raw modes, aggregate cap with explicit truncation, per-op
7
- * timeout, Ground Truth batch meta.
8
- */
9
- import { fileURLToPath } from 'node:url';
10
- import path from 'node:path';
11
- import { describe, it, expect, afterEach } from 'vitest';
12
- import { z } from 'zod';
13
- import { createObserveBatchTool, projectEvidence, ObserveBatchArgsSchema, AGGREGATE_CAP_BYTES, MAX_OPERATIONS, } from './observeBatch.js';
14
- import { typedOk, typedErr } from '@zelari/core/harness/tools/toolTypes';
15
- // Pin repo root: npm test --workspace=@zelari/core runs with cwd packages/core
16
- // (same as the publish workflow). Do NOT use process.cwd() / path.resolve().
17
- const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..', '..');
18
- function fakeCtx() {
19
- return {
20
- signal: new AbortController().signal,
21
- cwd: '/tmp',
22
- audit: () => { },
23
- sessionId: 'test',
24
- };
25
- }
26
- function sleep(ms) {
27
- return new Promise((r) => setTimeout(r, ms));
28
- }
29
- function okGrepTool(behavior) {
30
- return {
31
- name: 'grep_content',
32
- description: 'fake',
33
- permissions: ['read'],
34
- timeoutMs: 5000,
35
- inputSchema: z.record(z.string(), z.unknown()),
36
- execute: async (args) => {
37
- const value = behavior
38
- ? behavior(args)
39
- : {
40
- matches: [
41
- { relPath: 'src/a.ts', line: 10, text: 'x' },
42
- { relPath: 'src/b.ts', line: 22, text: 'y' },
43
- ],
44
- totalMatches: 2,
45
- truncated: false,
46
- };
47
- return typedOk(value, { status: 'complete', counts: { matches: 2, filesWalked: 7 } });
48
- },
49
- };
50
- }
51
- const okReadTool = {
52
- name: 'read_file',
53
- description: 'fake',
54
- permissions: ['read'],
55
- timeoutMs: 5000,
56
- inputSchema: z.record(z.string(), z.unknown()),
57
- execute: async () => typedOk({ path: 'src/a.ts', content: 'line1\nline2', totalLines: 120, readLines: { start: 1, end: 2 }, sizeBytes: 4000 }, { status: 'complete', counts: { lines: 120, bytes: 4000 } }),
58
- };
59
- const okListTool = {
60
- name: 'list_files',
61
- description: 'fake',
62
- permissions: ['read'],
63
- timeoutMs: 5000,
64
- inputSchema: z.record(z.string(), z.unknown()),
65
- execute: async () => typedOk({ dir: '/tmp', entries: [{ name: 'src', type: 'directory' }, { name: 'a.ts', type: 'file' }], truncated: false }, { status: 'complete', counts: { filesWalked: 2 } }),
66
- };
67
- function deps(over = {}) {
68
- return {
69
- tools: {
70
- read_file: okReadTool,
71
- grep_content: okGrepTool(),
72
- list_files: okListTool,
73
- ...over,
74
- },
75
- };
76
- }
77
- async function run(depsArg, args) {
78
- const tool = createObserveBatchTool(depsArg);
79
- const parsed = tool.inputSchema.parse(args);
80
- const res = await tool.execute(parsed, fakeCtx());
81
- expect(res.ok).toBe(true);
82
- return res.value;
83
- }
84
- function stripDynamic(result) {
85
- const clone = JSON.parse(JSON.stringify(result));
86
- for (const o of clone.observations)
87
- delete o.durationMs;
88
- delete clone.totals.wallMs;
89
- return clone;
90
- }
91
- afterEach(() => {
92
- delete process.env.ZELARI_OBSERVE_OP_TIMEOUT_MS;
93
- });
94
- describe('observe_batch schema', () => {
95
- it('rejects more than MAX_OPERATIONS', () => {
96
- const ops = Array.from({ length: MAX_OPERATIONS + 1 }, (_, i) => ({ id: `op${i}`, tool: 'read_file' }));
97
- expect(() => ObserveBatchArgsSchema.parse({ operations: ops })).toThrow(/at most/);
98
- });
99
- it('rejects duplicate ids', () => {
100
- expect(() => ObserveBatchArgsSchema.parse({ operations: [{ id: 'a', tool: 'read_file' }, { id: 'a', tool: 'list_files' }] })).toThrow(/unique/);
101
- });
102
- it('defaults resultMode to evidence and args to undefined', () => {
103
- const parsed = ObserveBatchArgsSchema.parse({ operations: [{ id: 'a', tool: 'read_file' }] });
104
- expect(parsed.resultMode).toBe('evidence');
105
- });
106
- });
107
- describe('observe_batch execution', () => {
108
- it('aggregates independent ops and preserves input order', async () => {
109
- const slowFirst = {
110
- ...okGrepTool(),
111
- execute: async () => {
112
- await sleep(60);
113
- return typedOk({ matches: [], totalMatches: 0, truncated: false }, { status: 'complete', counts: { matches: 0 } });
114
- },
115
- };
116
- const result = await run(deps({ grep_content: slowFirst }), {
117
- operations: [
118
- { id: 'first', tool: 'grep_content', args: { pattern: 'x' } },
119
- { id: 'second', tool: 'read_file', args: { path: 'a.ts' } },
120
- { id: 'third', tool: 'list_files' },
121
- ],
122
- });
123
- expect(result.failures).toEqual([]);
124
- expect(result.observations.map((o) => o.id)).toEqual(['first', 'second', 'third']);
125
- expect(result.totals).toMatchObject({ ops: 3, ok: 3, failed: 0 });
126
- expect(result.truncated).toBe(false);
127
- });
128
- it('isolates per-op failures (typedErr + throw) without failing the batch', async () => {
129
- const boom = {
130
- ...okGrepTool(),
131
- execute: async () => typedErr('boom'),
132
- };
133
- const thrower = {
134
- ...okReadTool,
135
- execute: async () => {
136
- throw new Error('kaboom');
137
- },
138
- };
139
- const result = await run(deps({ grep_content: boom, read_file: thrower }), {
140
- operations: [
141
- { id: 'ok', tool: 'list_files' },
142
- { id: 'err', tool: 'grep_content' },
143
- { id: 'thr', tool: 'read_file' },
144
- ],
145
- });
146
- expect(result.observations.map((o) => o.id)).toEqual(['ok']);
147
- const errIds = result.failures.map((f) => f.id).sort();
148
- expect(errIds).toEqual(['err', 'thr']);
149
- expect(result.failures.find((f) => f.id === 'err')?.error).toContain('boom');
150
- expect(result.totals).toMatchObject({ ops: 3, ok: 1, failed: 2 });
151
- });
152
- it('validates each op args against the underlying schema (defaults + rejection)', async () => {
153
- const strict = {
154
- ...okReadTool,
155
- inputSchema: z.object({ path: z.string() }),
156
- execute: async () => typedOk({ path: 'x', content: '', totalLines: 0, readLines: { start: 1, end: 1 }, sizeBytes: 0 }),
157
- };
158
- const result = await run(deps({ read_file: strict }), {
159
- operations: [
160
- { id: 'bad', tool: 'read_file', args: {} },
161
- { id: 'good', tool: 'read_file', args: { path: 'ok.ts' } },
162
- ],
163
- });
164
- expect(result.failures).toHaveLength(1);
165
- expect(result.failures[0]?.error).toMatch(/invalid args.*path/);
166
- expect(result.observations.map((o) => o.id)).toEqual(['good']);
167
- });
168
- it('times out a stuck op (env knob) instead of hanging the batch', async () => {
169
- process.env.ZELARI_OBSERVE_OP_TIMEOUT_MS = '50';
170
- const stuck = {
171
- ...okReadTool,
172
- execute: async () => {
173
- await sleep(500);
174
- return typedOk({ path: 'x', content: '', totalLines: 0, readLines: { start: 1, end: 1 }, sizeBytes: 0 });
175
- },
176
- };
177
- const result = await run(deps({ read_file: stuck }), { operations: [{ id: 'stuck', tool: 'read_file' }, { id: 'ok', tool: 'list_files' }] });
178
- expect(result.failures[0]?.error).toMatch(/TIMEOUT after \d+ms/);
179
- expect(result.observations.map((o) => o.id)).toEqual(['ok']);
180
- });
181
- });
182
- describe('observe_batch result modes + caps', () => {
183
- it('evidence mode (default): no raw payload, compact deterministic evidence', async () => {
184
- const result = await run(deps(), {
185
- operations: [
186
- { id: 'g', tool: 'grep_content', args: { pattern: 'refreshSession' } },
187
- { id: 'r', tool: 'read_file', args: { path: 'src/a.ts' } },
188
- { id: 'l', tool: 'list_files' },
189
- ],
190
- });
191
- for (const o of result.observations) {
192
- expect(o.raw).toBeUndefined();
193
- expect(o.rawOmitted).toBeUndefined();
194
- expect(o.bytes).toBeLessThan(400);
195
- }
196
- const g = result.observations.find((o) => o.id === 'g');
197
- expect(g?.evidence).toMatchObject({ tool: 'grep_content', pattern: 'refreshSession', matches: 2, filesWalked: 7 });
198
- const r = result.observations.find((o) => o.id === 'r');
199
- expect(r?.evidence).toMatchObject({ tool: 'read_file', path: 'src/a.ts', totalLines: 120 });
200
- expect(result.totals.bytes).toBeLessThan(1200);
201
- });
202
- it('raw mode includes payloads until the aggregate cap, then omits explicitly', async () => {
203
- const bigPayload = { path: 'big.ts', content: 'x'.repeat(AGGREGATE_CAP_BYTES - 2048), totalLines: 1, readLines: { start: 1, end: 1 }, sizeBytes: AGGREGATE_CAP_BYTES };
204
- const bigRead = {
205
- ...okReadTool,
206
- execute: async () => typedOk(bigPayload, { status: 'complete' }),
207
- };
208
- const result = await run(deps({ read_file: bigRead }), {
209
- resultMode: 'raw',
210
- operations: [
211
- { id: 'first', tool: 'read_file' },
212
- { id: 'second', tool: 'read_file' },
213
- ],
214
- });
215
- const first = result.observations.find((o) => o.id === 'first');
216
- const second = result.observations.find((o) => o.id === 'second');
217
- expect(first?.raw).toBeDefined();
218
- expect(first?.rawOmitted).toBeUndefined();
219
- expect(second?.raw).toBeUndefined();
220
- expect(second?.rawOmitted).toBe(true);
221
- expect(second?.evidence).toBeDefined();
222
- expect(result.truncated).toBe(true);
223
- });
224
- it('batch meta reflects Ground Truth status (partial on mixed outcome)', async () => {
225
- const boom = { ...okGrepTool(), execute: async () => typedErr('x') };
226
- const tool = createObserveBatchTool(deps({ grep_content: boom }));
227
- const parsed = tool.inputSchema.parse({ operations: [{ id: 'a', tool: 'grep_content' }, { id: 'b', tool: 'list_files' }] });
228
- const res = await tool.execute(parsed, fakeCtx());
229
- expect(res.ok).toBe(true);
230
- if (res.ok)
231
- expect(res.meta?.status).toBe('partial');
232
- });
233
- });
234
- describe('observe_batch integration (real registry + real builtins)', () => {
235
- it('runs real read-only tools through the wrapped registry and projects evidence', async () => {
236
- const { createBuiltinToolRegistry } = await import('../toolRegistry.js');
237
- const { registry } = createBuiltinToolRegistry({ lspProvider: null, root: repoRoot });
238
- expect(registry.list().includes('observe_batch')).toBe(true);
239
- const toolsDir = path.join(repoRoot, 'src', 'cli', 'tools');
240
- const pkgJson = path.join(repoRoot, 'package.json');
241
- const res = await registry.invoke('observe_batch', {
242
- operations: [
243
- { id: 'l', tool: 'list_files', args: { path: toolsDir, maxDepth: 1 } },
244
- {
245
- id: 'g',
246
- tool: 'grep_content',
247
- args: { pattern: 'observe_batch', path: toolsDir, include: ['*.ts'], contextLines: 0, maxMatches: 3 },
248
- },
249
- { id: 'r', tool: 'read_file', args: { path: pkgJson, startLine: 1, endLine: 5 } },
250
- ],
251
- });
252
- expect(res.ok).toBe(true);
253
- if (!res.ok)
254
- return;
255
- const v = res.value;
256
- expect(v.failures).toEqual([]);
257
- expect(v.observations).toHaveLength(3);
258
- const l = v.observations.find((o) => o.id === 'l');
259
- expect(l?.evidence).toMatchObject({ tool: 'list_files', entries: expect.any(Number) });
260
- const sample = (l?.evidence).sample ?? [];
261
- expect(sample.length).toBeGreaterThan(0);
262
- expect(sample.some((n) => n.endsWith('.ts'))).toBe(true);
263
- const g = v.observations.find((o) => o.id === 'g');
264
- expect(g?.evidence).toMatchObject({ tool: 'grep_content', pattern: 'observe_batch' });
265
- expect((g?.evidence).matches).toBeGreaterThan(0);
266
- expect((g?.evidence).top?.[0]).toMatch(/observeBatch(\.test)?\.ts:\d+/);
267
- const r = v.observations.find((o) => o.id === 'r');
268
- expect(r?.evidence).toMatchObject({ tool: 'read_file' });
269
- expect(String((r?.evidence).path ?? '')).toMatch(/package\.json$/);
270
- expect(r?.raw).toBeUndefined(); // evidence mode: no payload in context
271
- });
272
- it('is registered in readOnly sub-agent registries and disabled by the kill switch', async () => {
273
- const { createBuiltinToolRegistry } = await import('../toolRegistry.js');
274
- const ro = createBuiltinToolRegistry({ lspProvider: null, readOnly: true });
275
- expect(ro.registry.list().includes('observe_batch')).toBe(true);
276
- process.env.ZELARI_OBSERVE_BATCH = '0';
277
- try {
278
- const off = createBuiltinToolRegistry({ lspProvider: null });
279
- expect(off.registry.list().includes('observe_batch')).toBe(false);
280
- }
281
- finally {
282
- delete process.env.ZELARI_OBSERVE_BATCH;
283
- }
284
- });
285
- });
286
- describe('projectEvidence determinism', () => {
287
- it('is byte-identical for the same inputs', () => {
288
- const args = { pattern: 'foo' };
289
- const value = {
290
- matches: Array.from({ length: 9 }, (_, i) => ({ relPath: `f${i}.ts`, line: i + 1, text: 'foo' })),
291
- totalMatches: 9,
292
- truncated: false,
293
- };
294
- const meta = { status: 'partial', counts: { matches: 9, filesWalked: 40 }, truncated: true };
295
- const a = JSON.stringify(projectEvidence('grep_content', args, value, meta));
296
- const b = JSON.stringify(projectEvidence('grep_content', args, value, meta));
297
- expect(a).toBe(b);
298
- const ev = JSON.parse(a);
299
- expect(ev.matches).toBe(9);
300
- expect(ev.filesWalked).toBe(40);
301
- expect(ev.top).toHaveLength(5);
302
- expect(ev.top[0]).toBe('f0.ts:1');
303
- });
304
- it('two identical batch executions yield identical results modulo timings', async () => {
305
- const ops = {
306
- operations: [
307
- { id: 'g', tool: 'grep_content', args: { pattern: 'p' } },
308
- { id: 'r', tool: 'read_file', args: { path: 'a' } },
309
- { id: 'l', tool: 'list_files' },
310
- ],
311
- };
312
- const a = await run(deps(), ops);
313
- const b = await run(deps(), ops);
314
- expect(stripDynamic(a)).toEqual(stripDynamic(b));
315
- });
316
- it('list_files evidence reports count + sample with dir suffix', () => {
317
- const ev = projectEvidence('list_files', {}, {
318
- dir: '/x',
319
- entries: [
320
- { name: 'src', type: 'directory' },
321
- { name: 'a.ts', type: 'file' },
322
- { name: 'b.ts', type: 'file' },
323
- ],
324
- truncated: false,
325
- });
326
- expect(ev).toMatchObject({ tool: 'list_files', dir: '/x', entries: 3, sample: ['src/', 'a.ts', 'b.ts'] });
327
- });
328
- });
329
- //# sourceMappingURL=observeBatch.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"observeBatch.test.js","sourceRoot":"","sources":["../../../src/cli/tools/observeBatch.test.ts"],"names":[],"mappings":"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"}
@@ -1,156 +0,0 @@
1
- /**
2
- * taskTool.dynamicChecks.test — Fase 6 / ADR-0020 (Kraken Verified Selection).
3
- *
4
- * BUILD dynamic checks: le requiredChecks di una selezione `selected`
5
- * diventano proof obligations AUTOMATICHE di ogni tentacle verify:
6
- * - append dedupe case-insensitive sull'acceptance del parent
7
- * - mai iniettate su explore/general
8
- * - mai con needs_more_evidence (i check restano advisory)
9
- * - assenza di selezione ⇒ comportamento invariato
10
- */
11
- import { describe, expect, it, beforeEach, afterEach } from 'vitest';
12
- import { tmpdir } from 'node:os';
13
- import path from 'node:path';
14
- import fs from 'node:fs';
15
- import { ToolRegistry } from '@zelari/core/harness/tools/registry';
16
- import { createTaskTool, resetTaskSpawnCount, } from './taskTool.js';
17
- import { resetKrakenCandidates, setKrakenSelection, } from '../kraken/candidateRegistry.js';
18
- function tmpRoot() {
19
- return fs.mkdtempSync(path.join(tmpdir(), 'zelari-dyn-checks-'));
20
- }
21
- function makeCtx(cwd = tmpRoot()) {
22
- return {
23
- signal: new AbortController().signal,
24
- cwd,
25
- audit: () => undefined,
26
- sessionId: 'dynamic-checks-test',
27
- };
28
- }
29
- /**
30
- * Deps fake che cattura il user prompt del tentacle via harnessFactory:
31
- * config.messages[0] = system, [1] = user (buildTaskUserPrompt output).
32
- */
33
- function capturingDeps() {
34
- const prompts = [];
35
- const deps = {
36
- createSubAgentContext: async ({ agent }) => {
37
- const ctx = {
38
- providerStream: (() => {
39
- throw new Error('not invoked by the scripted harness');
40
- }),
41
- model: 'test-model',
42
- provider: 'test-provider',
43
- registry: new ToolRegistry(),
44
- tools: [],
45
- agent,
46
- };
47
- return ctx;
48
- },
49
- harnessFactory: (config) => {
50
- prompts.push(String(config.messages[1]?.content ?? ''));
51
- return {
52
- run: async function* () {
53
- yield { type: 'message_start' };
54
- yield { type: 'message_delta', delta: 'verified' };
55
- yield { type: 'message_end' };
56
- },
57
- };
58
- },
59
- allowWorktree: false,
60
- };
61
- return { deps, userPrompts: () => prompts };
62
- }
63
- const CHECKS = [
64
- 'unit test for session refresh passes',
65
- 'no Set-Cookie regression on logout',
66
- ];
67
- function verdict(status, requiredChecks = CHECKS) {
68
- return {
69
- status,
70
- winnerIndex: status === 'selected' ? 1 : null,
71
- rationale: 'grounded in evidence',
72
- requiredChecks,
73
- degraded: false,
74
- verifier: { provider: 'p', model: 'm' },
75
- judgedBy: 'llm',
76
- };
77
- }
78
- async function spawnVerify(deps, acceptance) {
79
- const tool = createTaskTool(deps);
80
- const res = await tool.execute({
81
- description: 'verify the fix',
82
- prompt: 'Verify the implementation.',
83
- agent: 'verify',
84
- ...(acceptance ? { acceptance } : {}),
85
- }, makeCtx());
86
- if (!res.ok)
87
- throw new Error(`task failed: ${String(res.error)}`);
88
- return '';
89
- }
90
- describe('verify acceptance injection (ADR-0020 Fase 6)', () => {
91
- beforeEach(() => {
92
- resetTaskSpawnCount();
93
- resetKrakenCandidates();
94
- });
95
- afterEach(() => {
96
- resetKrakenCandidates();
97
- });
98
- it('selected verdict → requiredChecks become the verify acceptance', async () => {
99
- const { deps, userPrompts } = capturingDeps();
100
- setKrakenSelection(verdict('selected'));
101
- await spawnVerify(deps);
102
- const prompt = userPrompts()[0];
103
- expect(prompt).toContain('## Acceptance criteria');
104
- expect(prompt).toContain(CHECKS[0]);
105
- expect(prompt).toContain(CHECKS[1]);
106
- });
107
- it('merges with parent acceptance, deduped case-insensitively', async () => {
108
- const { deps, userPrompts } = capturingDeps();
109
- setKrakenSelection(verdict('selected'));
110
- await spawnVerify(deps, [
111
- 'Existing criterion', // parent-provided, must be kept
112
- 'Unit Test For Session Refresh Passes', // same check, different case
113
- ]);
114
- const prompt = userPrompts()[0];
115
- expect(prompt).toContain('Existing criterion');
116
- // dedupe: the case-variant does not produce a second copy
117
- expect(prompt.match(/session refresh passes/gi)).toHaveLength(1);
118
- // the non-duplicated required check is appended once
119
- expect(prompt.match(/Set-Cookie regression/gi)).toHaveLength(1);
120
- });
121
- it('needs_more_evidence → checks stay advisory (no injection)', async () => {
122
- const { deps, userPrompts } = capturingDeps();
123
- setKrakenSelection(verdict('needs_more_evidence'));
124
- await spawnVerify(deps);
125
- expect(userPrompts()[0]).not.toContain('## Acceptance criteria');
126
- expect(userPrompts()[0]).not.toContain(CHECKS[0]);
127
- });
128
- it('explore tentacle is never touched by the injection', async () => {
129
- const { deps, userPrompts } = capturingDeps();
130
- setKrakenSelection(verdict('selected'));
131
- const tool = createTaskTool(deps);
132
- await tool.execute({ description: 'explore', prompt: 'Look around.', agent: 'explore' }, makeCtx());
133
- expect(userPrompts()[0]).not.toContain('## Acceptance criteria');
134
- expect(userPrompts()[0]).not.toContain(CHECKS[0]);
135
- });
136
- it('general tentacle keeps its own acceptance only', async () => {
137
- const { deps, userPrompts } = capturingDeps();
138
- setKrakenSelection(verdict('selected'));
139
- const tool = createTaskTool(deps);
140
- await tool.execute({
141
- description: 'impl',
142
- prompt: 'Implement.',
143
- agent: 'general',
144
- acceptance: ['Only criterion'],
145
- }, makeCtx());
146
- const prompt = userPrompts()[0];
147
- expect(prompt).toContain('Only criterion');
148
- expect(prompt).not.toContain(CHECKS[0]);
149
- });
150
- it('no selection this turn → verify prompt unchanged (no acceptance)', async () => {
151
- const { deps, userPrompts } = capturingDeps();
152
- await spawnVerify(deps);
153
- expect(userPrompts()[0]).not.toContain('## Acceptance criteria');
154
- });
155
- });
156
- //# sourceMappingURL=taskTool.dynamicChecks.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"taskTool.dynamicChecks.test.js","sourceRoot":"","sources":["../../../src/cli/tools/taskTool.dynamicChecks.test.ts"],"names":[],"mappings":"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"}