zelari-code 1.48.0 → 1.49.0
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/desktopConfig.js +51 -4
- package/dist/cli/desktopConfig.js.map +1 -1
- package/dist/cli/hooks/useChatTurn.js +80 -0
- package/dist/cli/hooks/useChatTurn.js.map +1 -1
- package/dist/cli/kraken/candidateRegistry.js +195 -0
- package/dist/cli/kraken/candidateRegistry.js.map +1 -0
- package/dist/cli/kraken/candidateRegistry.test.js +211 -0
- package/dist/cli/kraken/candidateRegistry.test.js.map +1 -0
- package/dist/cli/kraken/completionGate.js +116 -0
- package/dist/cli/kraken/completionGate.js.map +1 -0
- package/dist/cli/kraken/completionGate.test.js +172 -0
- package/dist/cli/kraken/completionGate.test.js.map +1 -0
- package/dist/cli/kraken/metrics.js +96 -0
- package/dist/cli/kraken/metrics.js.map +1 -0
- package/dist/cli/kraken/metrics.test.js +145 -0
- package/dist/cli/kraken/metrics.test.js.map +1 -0
- package/dist/cli/kraken/selectionPlaybook.js +23 -0
- package/dist/cli/kraken/selectionPlaybook.js.map +1 -0
- package/dist/cli/kraken/selectionPlaybook.test.js +55 -0
- package/dist/cli/kraken/selectionPlaybook.test.js.map +1 -0
- package/dist/cli/kraken/turnRuntime.js +207 -0
- package/dist/cli/kraken/turnRuntime.js.map +1 -0
- package/dist/cli/kraken/turnRuntime.test.js +377 -0
- package/dist/cli/kraken/turnRuntime.test.js.map +1 -0
- package/dist/cli/kraken/verifier.js +233 -0
- package/dist/cli/kraken/verifier.js.map +1 -0
- package/dist/cli/kraken/verifier.test.js +232 -0
- package/dist/cli/kraken/verifier.test.js.map +1 -0
- package/dist/cli/kraken/verifierSettings.test.js +237 -0
- package/dist/cli/kraken/verifierSettings.test.js.map +1 -0
- package/dist/cli/kraken/verifyReport.js +115 -0
- package/dist/cli/kraken/verifyReport.js.map +1 -0
- package/dist/cli/kraken/verifyReport.test.js +111 -0
- package/dist/cli/kraken/verifyReport.test.js.map +1 -0
- package/dist/cli/main.bundled.js +1369 -111
- package/dist/cli/main.bundled.js.map +4 -4
- package/dist/cli/provider/openai-compatible.js +40 -6
- package/dist/cli/provider/openai-compatible.js.map +1 -1
- package/dist/cli/provider/openai-compatible.timeout.test.js +72 -0
- package/dist/cli/provider/openai-compatible.timeout.test.js.map +1 -0
- package/dist/cli/providerConfig.js +46 -0
- package/dist/cli/providerConfig.js.map +1 -1
- package/dist/cli/runHeadless.js +85 -0
- package/dist/cli/runHeadless.js.map +1 -1
- package/dist/cli/toolRegistry.js +50 -6
- package/dist/cli/toolRegistry.js.map +1 -1
- package/dist/cli/tools/krakenSelectTool.js +165 -0
- package/dist/cli/tools/krakenSelectTool.js.map +1 -0
- package/dist/cli/tools/krakenSelectTool.test.js +246 -0
- package/dist/cli/tools/krakenSelectTool.test.js.map +1 -0
- package/dist/cli/tools/taskTool.dynamicChecks.test.js +156 -0
- package/dist/cli/tools/taskTool.dynamicChecks.test.js.map +1 -0
- package/dist/cli/tools/taskTool.js +174 -6
- package/dist/cli/tools/taskTool.js.map +1 -1
- package/dist/cli/tools/taskTool.planSafety.test.js +280 -0
- package/dist/cli/tools/taskTool.planSafety.test.js.map +1 -0
- package/dist/cli/tools/taskTool.verifyReport.test.js +140 -0
- package/dist/cli/tools/taskTool.verifyReport.test.js.map +1 -0
- package/package.json +2 -2
|
@@ -22,6 +22,9 @@ import { typedOk, typedErr, } from '@zelari/core/harness/tools/toolTypes';
|
|
|
22
22
|
import { appendKrakenRadio } from './krakenRadio.js';
|
|
23
23
|
import { createKrakenWorktree, cleanupKrakenWorktree, formatWorktreeFooter, isKrakenWorktreeEnabled, shouldKeepWorktree, mergeKrakenWorktree, isKrakenWorktreeAutoMergeEnabled, } from './krakenWorktree.js';
|
|
24
24
|
import { krakenTentacleStart, krakenTentacleEnd } from './krakenLive.js';
|
|
25
|
+
import { candidateInstructions, isKrakenSelectionEnabled, krakenRequiredChecks, parseCandidateReport, registerCandidate, reserveCandidateSlot, setKrakenCheckResults, } from '../kraken/candidateRegistry.js';
|
|
26
|
+
import { allUnknownCheckResults, parseVerifyReport } from '../kraken/verifyReport.js';
|
|
27
|
+
import { recordCandidateTokens } from '../kraken/metrics.js';
|
|
25
28
|
const EXPLORE_PROMPT = [
|
|
26
29
|
'You are a focused EXPLORE tentacle of Kraken (parent super-agent).',
|
|
27
30
|
'READ-ONLY tools only (read, list, grep, fetch). No edits, no shell.',
|
|
@@ -48,6 +51,15 @@ const VERIFY_PROMPT = [
|
|
|
48
51
|
'targeted checks over full suite when possible.',
|
|
49
52
|
'Report: pass/fail, commands run, key output, and gaps vs Acceptance criteria.',
|
|
50
53
|
'If Acceptance criteria are listed, check each one explicitly.',
|
|
54
|
+
'End your final message with ONE <verify-report> block per acceptance',
|
|
55
|
+
'criterion (required checks included), in this exact shape:',
|
|
56
|
+
'<verify-report>',
|
|
57
|
+
'check: <criterion text as given>',
|
|
58
|
+
'status: pass | fail | unknown',
|
|
59
|
+
'note: <one line of evidence (command + outcome)>',
|
|
60
|
+
'</verify-report>',
|
|
61
|
+
'Use status=unknown when you could NOT determine the outcome (degraded',
|
|
62
|
+
'tool, timeout, inconclusive evidence) — never guess pass.',
|
|
51
63
|
].join('\n');
|
|
52
64
|
/** Reset spawn counter (call at start of each parent user turn). */
|
|
53
65
|
export function resetTaskSpawnCount() {
|
|
@@ -84,6 +96,32 @@ export function buildTaskUserPrompt(args) {
|
|
|
84
96
|
}
|
|
85
97
|
return parts.join('\n');
|
|
86
98
|
}
|
|
99
|
+
/**
|
|
100
|
+
* Fase 6 (ADR-0020): BUILD dynamic checks. When kraken_select selected a
|
|
101
|
+
* candidate this turn, its requiredChecks become proof obligations of
|
|
102
|
+
* every verify tentacle — appended to the parent's acceptance (deduped,
|
|
103
|
+
* case-insensitive) or the whole acceptance when the parent provided
|
|
104
|
+
* none. Explore/general are never touched; verify is PLAN-rejected
|
|
105
|
+
* (Fase 1), so this path is BUILD-only by construction. No flag gate
|
|
106
|
+
* needed: a verdict can only exist when the selection tool ran.
|
|
107
|
+
*/
|
|
108
|
+
export function withKrakenRequiredChecks(agent, acceptance) {
|
|
109
|
+
if (agent !== 'verify')
|
|
110
|
+
return acceptance;
|
|
111
|
+
const required = krakenRequiredChecks();
|
|
112
|
+
if (required.length === 0)
|
|
113
|
+
return acceptance;
|
|
114
|
+
const seen = new Set((acceptance ?? []).map((a) => a.trim().toLowerCase()));
|
|
115
|
+
const merged = [...(acceptance ?? [])];
|
|
116
|
+
for (const check of required) {
|
|
117
|
+
const key = check.trim().toLowerCase();
|
|
118
|
+
if (!seen.has(key)) {
|
|
119
|
+
seen.add(key);
|
|
120
|
+
merged.push(check);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return merged;
|
|
124
|
+
}
|
|
87
125
|
export function systemPromptForAgent(agent) {
|
|
88
126
|
if (agent === 'general')
|
|
89
127
|
return GENERAL_PROMPT;
|
|
@@ -145,6 +183,14 @@ const TaskArgsSchema = z.object({
|
|
|
145
183
|
.optional()
|
|
146
184
|
.describe('Optional acceptance checklist (contract). Appended to the prompt as Acceptance criteria.'),
|
|
147
185
|
});
|
|
186
|
+
const TaskPurposeSchema = z
|
|
187
|
+
.enum(['candidate'])
|
|
188
|
+
.optional()
|
|
189
|
+
.describe('Mark this explore tentacle as one CANDIDATE hypothesis (alpha: requires ' +
|
|
190
|
+
'ZELARI_KRAKEN_SELECTION=1). Forces agent=explore, structured report.');
|
|
191
|
+
const TaskArgsWithPurposeSchema = TaskArgsSchema.extend({
|
|
192
|
+
purpose: TaskPurposeSchema,
|
|
193
|
+
});
|
|
148
194
|
/**
|
|
149
195
|
* Run a sub-agent to completion and return the text of its final assistant
|
|
150
196
|
* message (the "conclusion"). Intermediate tool-call turns are discarded.
|
|
@@ -162,6 +208,7 @@ export async function runSubAgent(harness, opts = {}) {
|
|
|
162
208
|
let current = '';
|
|
163
209
|
let lastCompleted = '';
|
|
164
210
|
let error;
|
|
211
|
+
let usage;
|
|
165
212
|
if (signal?.aborted)
|
|
166
213
|
return { result: '', aborted: true };
|
|
167
214
|
for await (const ev of harness.run()) {
|
|
@@ -182,6 +229,23 @@ export async function runSubAgent(harness, opts = {}) {
|
|
|
182
229
|
case 'message_end':
|
|
183
230
|
if (current.trim())
|
|
184
231
|
lastCompleted = current;
|
|
232
|
+
// Fase 10: capture provider-reported usage (summed across the
|
|
233
|
+
// sub-agent's tool-loop turns) so candidate token costs are real,
|
|
234
|
+
// never approximated.
|
|
235
|
+
if (ev.usage) {
|
|
236
|
+
usage = usage
|
|
237
|
+
? {
|
|
238
|
+
promptTokens: usage.promptTokens + ev.usage.promptTokens,
|
|
239
|
+
completionTokens: usage.completionTokens + ev.usage.completionTokens,
|
|
240
|
+
totalTokens: usage.totalTokens + ev.usage.totalTokens,
|
|
241
|
+
...((usage.cachedPromptTokens ?? 0) + (ev.usage.cachedPromptTokens ?? 0) > 0
|
|
242
|
+
? {
|
|
243
|
+
cachedPromptTokens: (usage.cachedPromptTokens ?? 0) + (ev.usage.cachedPromptTokens ?? 0),
|
|
244
|
+
}
|
|
245
|
+
: {}),
|
|
246
|
+
}
|
|
247
|
+
: ev.usage;
|
|
248
|
+
}
|
|
185
249
|
current = '';
|
|
186
250
|
break;
|
|
187
251
|
case 'error':
|
|
@@ -192,7 +256,7 @@ export async function runSubAgent(harness, opts = {}) {
|
|
|
192
256
|
}
|
|
193
257
|
}
|
|
194
258
|
const result = (lastCompleted || current).trim();
|
|
195
|
-
return { result, ...(error ? { error } : {}) };
|
|
259
|
+
return { result, ...(error ? { error } : {}), ...(usage ? { usage } : {}) };
|
|
196
260
|
}
|
|
197
261
|
/**
|
|
198
262
|
* Run one Kraken tentacle end-to-end: optional worktree isolation, radio +
|
|
@@ -286,7 +350,7 @@ export async function runTentacle(opts) {
|
|
|
286
350
|
const userContent = buildTaskUserPrompt({
|
|
287
351
|
prompt: args.prompt,
|
|
288
352
|
scope: args.scope,
|
|
289
|
-
acceptance: args.acceptance,
|
|
353
|
+
acceptance: withKrakenRequiredChecks(agent, args.acceptance),
|
|
290
354
|
});
|
|
291
355
|
const maxToolCalls = maxToolCallsForThoroughness(thoroughness, agent);
|
|
292
356
|
const runCwd = sub.cwd || effectiveCwd;
|
|
@@ -324,7 +388,7 @@ export async function runTentacle(opts) {
|
|
|
324
388
|
error: `task: failed to start sub-agent — ${err instanceof Error ? err.message : String(err)}`,
|
|
325
389
|
};
|
|
326
390
|
}
|
|
327
|
-
const { result, error, aborted } = await runSubAgent(harness, {
|
|
391
|
+
const { result, error, aborted, usage } = await runSubAgent(harness, {
|
|
328
392
|
...(opts.signal ? { signal: opts.signal } : {}),
|
|
329
393
|
});
|
|
330
394
|
const durationMs = Date.now() - started;
|
|
@@ -434,12 +498,29 @@ export async function runTentacle(opts) {
|
|
|
434
498
|
model: sub.model,
|
|
435
499
|
result,
|
|
436
500
|
footer,
|
|
501
|
+
...(usage ? { usage } : {}),
|
|
437
502
|
worktreePath: worktree?.path ?? null,
|
|
438
503
|
worktreeHandle: worktree,
|
|
439
504
|
};
|
|
440
505
|
}
|
|
441
506
|
/** Build the `task` tool from injected sub-agent deps. */
|
|
442
|
-
export function createTaskTool(deps) {
|
|
507
|
+
export function createTaskTool(deps, policy = {}) {
|
|
508
|
+
const allowedAgents = policy.allowedAgents ?? ['explore', 'general', 'verify'];
|
|
509
|
+
const restricted = policy.allowedAgents !== undefined &&
|
|
510
|
+
!(policy.allowedAgents.includes('explore') &&
|
|
511
|
+
policy.allowedAgents.includes('general') &&
|
|
512
|
+
policy.allowedAgents.includes('verify'));
|
|
513
|
+
// When restricted, narrow the zod enum too so conforming providers cannot
|
|
514
|
+
// emit a disallowed kind (belt) on top of the execute-time gate (braces).
|
|
515
|
+
const inputSchema = restricted
|
|
516
|
+
? TaskArgsSchema.extend({
|
|
517
|
+
agent: z
|
|
518
|
+
.enum(allowedAgents)
|
|
519
|
+
.optional()
|
|
520
|
+
.describe(`Sub-agent type. In this mode ONLY ${allowedAgents.join('|')} is allowed ` +
|
|
521
|
+
'(plan-safe read-only tentacles).'),
|
|
522
|
+
})
|
|
523
|
+
: TaskArgsSchema;
|
|
443
524
|
return {
|
|
444
525
|
name: 'task',
|
|
445
526
|
description: 'Delegate a focused sub-task to an isolated sub-agent with its own context; ' +
|
|
@@ -448,12 +529,40 @@ export function createTaskTool(deps) {
|
|
|
448
529
|
'- agent=general: can edit files for one bounded unit of work\n' +
|
|
449
530
|
'- agent=verify: read + bash to run tests/checks\n' +
|
|
450
531
|
'Provide a fully self-contained `prompt` (sub-agent cannot see this conversation). ' +
|
|
451
|
-
'Optional scope[] + acceptance[] contracts. After general, follow up with verify.'
|
|
532
|
+
'Optional scope[] + acceptance[] contracts. After general, follow up with verify.' +
|
|
533
|
+
(restricted
|
|
534
|
+
? `\nRESTRICTED in this mode: only agent=${allowedAgents.join('|')} is allowed.`
|
|
535
|
+
: ''),
|
|
452
536
|
permissions: ['read', 'network', 'write', 'execute'],
|
|
453
537
|
timeoutMs: 300_000,
|
|
454
|
-
inputSchema
|
|
538
|
+
inputSchema,
|
|
455
539
|
execute: async (args, ctx) => {
|
|
456
540
|
const agent = args.agent ?? 'explore';
|
|
541
|
+
let candidateSlot = 0;
|
|
542
|
+
// Fase 1 (ADR-0020): policy gate BEFORE the spawn budget — a rejected
|
|
543
|
+
// kind must not consume the per-turn tentacle budget.
|
|
544
|
+
if (!allowedAgents.includes(agent)) {
|
|
545
|
+
return typedErr(`task: agent=${agent} is not allowed in this mode. Allowed: ${allowedAgents.join(', ')} ` +
|
|
546
|
+
'(plan-safe read-only tentacles). Re-issue with an allowed agent kind.');
|
|
547
|
+
}
|
|
548
|
+
// Fase 3 (ADR-0020): candidate contract — explore-only, flag-gated,
|
|
549
|
+
// capped per turn. Checked BEFORE the spawn budget (same rule as the
|
|
550
|
+
// policy gate: a rejected candidate must not consume the budget).
|
|
551
|
+
const isCandidate = args.purpose === 'candidate';
|
|
552
|
+
if (isCandidate) {
|
|
553
|
+
if (!isKrakenSelectionEnabled()) {
|
|
554
|
+
return typedErr('task: purpose=candidate requires ZELARI_KRAKEN_SELECTION=1 (alpha feature). ' +
|
|
555
|
+
'Spawn a plain explore tentacle instead.');
|
|
556
|
+
}
|
|
557
|
+
if (agent !== 'explore') {
|
|
558
|
+
return typedErr('task: purpose=candidate forces agent=explore (candidates are read-only ' +
|
|
559
|
+
'in v1 — zero candidate implementations, ADR-0020).');
|
|
560
|
+
}
|
|
561
|
+
const slot = reserveCandidateSlot();
|
|
562
|
+
if ('error' in slot)
|
|
563
|
+
return typedErr(slot.error);
|
|
564
|
+
candidateSlot = slot.index;
|
|
565
|
+
}
|
|
457
566
|
const thoroughness = args.thoroughness ?? 'medium';
|
|
458
567
|
const sessionId = ctx.sessionId || 'default';
|
|
459
568
|
const parentCwd = ctx.cwd || process.cwd();
|
|
@@ -476,7 +585,66 @@ export function createTaskTool(deps) {
|
|
|
476
585
|
thoroughness,
|
|
477
586
|
parentCwd,
|
|
478
587
|
sessionId,
|
|
588
|
+
// Fase 1 (ADR-0020): propagate the parent turn's cancellation signal
|
|
589
|
+
// so cancel/timeout unwinds the tentacle instead of letting it run on.
|
|
590
|
+
...(ctx.signal ? { signal: ctx.signal } : {}),
|
|
591
|
+
...(isCandidate
|
|
592
|
+
? {
|
|
593
|
+
systemPromptOverride: systemPromptForAgent('explore') +
|
|
594
|
+
'\n\n' +
|
|
595
|
+
candidateInstructions(candidateSlot),
|
|
596
|
+
}
|
|
597
|
+
: {}),
|
|
479
598
|
});
|
|
599
|
+
// Fase 3 (ADR-0020): register the structured report (malformed reports
|
|
600
|
+
// are preserved as degraded evidence, never dropped). The parent still
|
|
601
|
+
// sees the full conclusion text including the <candidate-report> block.
|
|
602
|
+
if (isCandidate) {
|
|
603
|
+
// Fase 10: real provider-reported tokens (0 when unreported/failed).
|
|
604
|
+
recordCandidateTokens(res.ok ? res.usage?.totalTokens ?? 0 : 0);
|
|
605
|
+
if (res.ok) {
|
|
606
|
+
const parsed = parseCandidateReport(res.result);
|
|
607
|
+
registerCandidate(parsed.ok
|
|
608
|
+
? {
|
|
609
|
+
status: 'ok',
|
|
610
|
+
index: candidateSlot,
|
|
611
|
+
description: args.description,
|
|
612
|
+
report: parsed.report,
|
|
613
|
+
raw: res.result,
|
|
614
|
+
}
|
|
615
|
+
: {
|
|
616
|
+
status: 'malformed',
|
|
617
|
+
index: candidateSlot,
|
|
618
|
+
description: args.description,
|
|
619
|
+
error: parsed.error,
|
|
620
|
+
raw: res.result,
|
|
621
|
+
});
|
|
622
|
+
}
|
|
623
|
+
else {
|
|
624
|
+
// Failed tentacle: the slot is consumed and tracked as malformed
|
|
625
|
+
// (no report arrived — degraded by definition).
|
|
626
|
+
registerCandidate({
|
|
627
|
+
status: 'malformed',
|
|
628
|
+
index: candidateSlot,
|
|
629
|
+
description: args.description,
|
|
630
|
+
error: res.error,
|
|
631
|
+
raw: '',
|
|
632
|
+
});
|
|
633
|
+
}
|
|
634
|
+
}
|
|
635
|
+
// Fase 7 (ADR-0020): structured verification — the verify tentacle
|
|
636
|
+
// reports pass/fail/unknown per required check. A failed tentacle or
|
|
637
|
+
// a missing block leaves checks `unknown`: a degraded observation is
|
|
638
|
+
// never proof. Only runs when a selection exists this turn (required
|
|
639
|
+
// checks come from a `selected` verdict — Fase 6 routing).
|
|
640
|
+
if (agent === 'verify') {
|
|
641
|
+
const required = krakenRequiredChecks();
|
|
642
|
+
if (required.length > 0) {
|
|
643
|
+
setKrakenCheckResults(res.ok
|
|
644
|
+
? parseVerifyReport(res.result, required)
|
|
645
|
+
: allUnknownCheckResults(required, `verify tentacle failed: ${res.error}`));
|
|
646
|
+
}
|
|
647
|
+
}
|
|
480
648
|
if (!res.ok)
|
|
481
649
|
return typedErr(res.error);
|
|
482
650
|
return typedOk({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taskTool.js","sourceRoot":"","sources":["../../../src/cli/tools/taskTool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taskTool.js","sourceRoot":"","sources":["../../../src/cli/tools/taskTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* taskTool.planSafety.test — Fase 1 / ADR-0020 (Kraken Verified Selection).
|
|
3
|
+
*
|
|
4
|
+
* DoD della Fase 1:
|
|
5
|
+
* - PLAN può spawnare explore (task registrato, policy explore-only)
|
|
6
|
+
* - PLAN non può spawnare general né verify
|
|
7
|
+
* - PLAN non espone write/bash (read-only invariato)
|
|
8
|
+
* - BUILD task continua a comportarsi come prima
|
|
9
|
+
* - Cancel parent cancella il tentacolo (signal propagato a runTentacle)
|
|
10
|
+
*/
|
|
11
|
+
import { describe, expect, it, beforeEach } from 'vitest';
|
|
12
|
+
import { tmpdir } from 'node:os';
|
|
13
|
+
import path from 'node:path';
|
|
14
|
+
import fs from 'node:fs';
|
|
15
|
+
import { fileURLToPath } from 'node:url';
|
|
16
|
+
import { ToolRegistry } from '@zelari/core/harness/tools/registry';
|
|
17
|
+
import { createBuiltinToolRegistry } from '../toolRegistry.js';
|
|
18
|
+
import { createTaskTool, resetTaskSpawnCount, } from './taskTool.js';
|
|
19
|
+
import { isKrakenSelectionEnabled, krakenCandidates, resetKrakenCandidates, } from '../kraken/candidateRegistry.js';
|
|
20
|
+
import { AuditLogger } from '../safety/auditLogger.js';
|
|
21
|
+
import { defaultPermissionPolicy } from '../safety/toolPermissions.js';
|
|
22
|
+
const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..', '..');
|
|
23
|
+
function tmpRoot() {
|
|
24
|
+
return fs.mkdtempSync(path.join(tmpdir(), 'zelari-plan-safe-'));
|
|
25
|
+
}
|
|
26
|
+
function makeRegistry(extra = {}) {
|
|
27
|
+
return createBuiltinToolRegistry({
|
|
28
|
+
root: repoRoot,
|
|
29
|
+
lspProvider: null,
|
|
30
|
+
audit: new AuditLogger(path.join(tmpdir(), `zelari-plansafe-${Date.now()}-${Math.random().toString(36).slice(2)}.log`)),
|
|
31
|
+
permissionPolicy: defaultPermissionPolicy({ auto: true }),
|
|
32
|
+
...extra,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
function makeCtx(cwd = tmpRoot()) {
|
|
36
|
+
return {
|
|
37
|
+
signal: new AbortController().signal,
|
|
38
|
+
cwd,
|
|
39
|
+
audit: () => undefined,
|
|
40
|
+
sessionId: 'plan-safety-test',
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/** Deps fake: null context = "no provider" path, enough to observe the gate. */
|
|
44
|
+
function probeDeps() {
|
|
45
|
+
const calls = [];
|
|
46
|
+
const deps = {
|
|
47
|
+
createSubAgentContext: async ({ agent }) => {
|
|
48
|
+
calls.push(agent);
|
|
49
|
+
return null;
|
|
50
|
+
},
|
|
51
|
+
allowWorktree: false,
|
|
52
|
+
};
|
|
53
|
+
return { deps, calls };
|
|
54
|
+
}
|
|
55
|
+
/** Deps fake with a valid context + scripted harness (signal tests). */
|
|
56
|
+
function scriptedDeps() {
|
|
57
|
+
let started = 0;
|
|
58
|
+
const deps = {
|
|
59
|
+
createSubAgentContext: async ({ agent }) => {
|
|
60
|
+
const ctx = {
|
|
61
|
+
providerStream: (() => {
|
|
62
|
+
throw new Error('not invoked by the scripted harness');
|
|
63
|
+
}),
|
|
64
|
+
model: 'test-model',
|
|
65
|
+
provider: 'test-provider',
|
|
66
|
+
registry: new ToolRegistry(),
|
|
67
|
+
tools: [],
|
|
68
|
+
agent,
|
|
69
|
+
};
|
|
70
|
+
return ctx;
|
|
71
|
+
},
|
|
72
|
+
harnessFactory: () => ({
|
|
73
|
+
run: async function* () {
|
|
74
|
+
started++;
|
|
75
|
+
yield { type: 'message_start' };
|
|
76
|
+
yield { type: 'message_delta', delta: 'tentacle conclusion' };
|
|
77
|
+
yield { type: 'message_end' };
|
|
78
|
+
},
|
|
79
|
+
}),
|
|
80
|
+
allowWorktree: false,
|
|
81
|
+
};
|
|
82
|
+
return { deps, harnessStarted: () => started };
|
|
83
|
+
}
|
|
84
|
+
describe('registry gating (ADR-0020 Fase 1)', () => {
|
|
85
|
+
it('planMode registry registers task AND stays read-only', () => {
|
|
86
|
+
const { tools } = makeRegistry({ planMode: true });
|
|
87
|
+
const names = tools.map((t) => t.name);
|
|
88
|
+
expect(names).toContain('task');
|
|
89
|
+
expect(names).not.toContain('write_file');
|
|
90
|
+
expect(names).not.toContain('edit_file');
|
|
91
|
+
expect(names).not.toContain('apply_diff');
|
|
92
|
+
expect(names).not.toContain('bash');
|
|
93
|
+
});
|
|
94
|
+
it('planMode task is wired explore-only (restricted schema + description)', () => {
|
|
95
|
+
const { registry } = makeRegistry({ planMode: true });
|
|
96
|
+
const task = registry.get('task');
|
|
97
|
+
expect(task).toBeTruthy();
|
|
98
|
+
expect(task?.description).toContain('RESTRICTED in this mode');
|
|
99
|
+
// zod enum narrowed: general is not a valid value anymore
|
|
100
|
+
const bad = task?.inputSchema
|
|
101
|
+
?.safeParse({ description: 'd', prompt: 'p', agent: 'general' });
|
|
102
|
+
expect(bad?.success).toBe(false);
|
|
103
|
+
const good = task?.inputSchema
|
|
104
|
+
?.safeParse({ description: 'd', prompt: 'p', agent: 'explore' });
|
|
105
|
+
expect(good?.success).toBe(true);
|
|
106
|
+
});
|
|
107
|
+
it('planExploreTask=false restores the pre-ADR-0020 behaviour (no task in plan)', () => {
|
|
108
|
+
const { tools } = makeRegistry({ planMode: true, planExploreTask: false });
|
|
109
|
+
expect(tools.map((t) => t.name)).not.toContain('task');
|
|
110
|
+
});
|
|
111
|
+
it('full BUILD registry keeps task unrestricted (regression)', () => {
|
|
112
|
+
const { registry, tools } = makeRegistry();
|
|
113
|
+
expect(tools.map((t) => t.name)).toContain('task');
|
|
114
|
+
expect(registry.get('task')?.description).not.toContain('RESTRICTED in this mode');
|
|
115
|
+
});
|
|
116
|
+
it('explicit readOnly registry omits task (sub-agent anti-recursion, regression)', () => {
|
|
117
|
+
const { tools } = makeRegistry({ readOnly: true });
|
|
118
|
+
expect(tools.map((t) => t.name)).not.toContain('task');
|
|
119
|
+
});
|
|
120
|
+
it('explore sub-profile omits task (no nesting, regression)', () => {
|
|
121
|
+
const { tools } = makeRegistry({ profile: 'explore' });
|
|
122
|
+
expect(tools.map((t) => t.name)).not.toContain('task');
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
describe('task policy (ADR-0020 Fase 1)', () => {
|
|
126
|
+
beforeEach(() => {
|
|
127
|
+
resetTaskSpawnCount();
|
|
128
|
+
});
|
|
129
|
+
it('explore-only policy rejects agent=general BEFORE spawning or consuming budget', async () => {
|
|
130
|
+
const { deps, calls } = probeDeps();
|
|
131
|
+
const tool = createTaskTool(deps, { allowedAgents: ['explore'] });
|
|
132
|
+
const res = await tool.execute({ description: 'd', prompt: 'p', agent: 'general' }, makeCtx());
|
|
133
|
+
expect(res.ok).toBe(false);
|
|
134
|
+
if (!res.ok) {
|
|
135
|
+
expect(res.error).toMatch(/not allowed in this mode/i);
|
|
136
|
+
expect(res.error).toContain('explore');
|
|
137
|
+
}
|
|
138
|
+
expect(calls).toHaveLength(0);
|
|
139
|
+
// budget NOT consumed: the very next spawn is still allowed
|
|
140
|
+
const next = await tool.execute({ description: 'd', prompt: 'p', agent: 'verify' }, makeCtx());
|
|
141
|
+
expect(next.ok).toBe(false);
|
|
142
|
+
if (!next.ok)
|
|
143
|
+
expect(next.error).toMatch(/not allowed in this mode/i);
|
|
144
|
+
expect(calls).toHaveLength(0);
|
|
145
|
+
});
|
|
146
|
+
it('explore-only policy accepts the default agent (explore reaches the context factory)', async () => {
|
|
147
|
+
const { deps, calls } = probeDeps();
|
|
148
|
+
const tool = createTaskTool(deps, { allowedAgents: ['explore'] });
|
|
149
|
+
const res = await tool.execute({ description: 'd', prompt: 'p' }, makeCtx());
|
|
150
|
+
expect(calls).toEqual(['explore']);
|
|
151
|
+
// fake context is null → "no provider", which PROVES we got past the gate
|
|
152
|
+
expect(res.ok).toBe(false);
|
|
153
|
+
if (!res.ok)
|
|
154
|
+
expect(res.error).toMatch(/no provider/);
|
|
155
|
+
});
|
|
156
|
+
it('unrestricted BUILD tool still accepts general (regression)', async () => {
|
|
157
|
+
const { deps, calls } = probeDeps();
|
|
158
|
+
const tool = createTaskTool(deps);
|
|
159
|
+
const res = await tool.execute({ description: 'd', prompt: 'p', agent: 'general' }, makeCtx());
|
|
160
|
+
expect(calls).toEqual(['general']);
|
|
161
|
+
expect(res.ok).toBe(false);
|
|
162
|
+
if (!res.ok)
|
|
163
|
+
expect(res.error).toMatch(/no provider/);
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
describe('cancellation propagation (ADR-0020 Fase 1)', () => {
|
|
167
|
+
beforeEach(() => {
|
|
168
|
+
resetTaskSpawnCount();
|
|
169
|
+
});
|
|
170
|
+
it('an already-aborted parent signal cancels the tentacle instead of running it', async () => {
|
|
171
|
+
const { deps, harnessStarted } = scriptedDeps();
|
|
172
|
+
const tool = createTaskTool(deps);
|
|
173
|
+
const controller = new AbortController();
|
|
174
|
+
controller.abort();
|
|
175
|
+
const res = await tool.execute({ description: 'd', prompt: 'p', agent: 'explore' }, { ...makeCtx(), signal: controller.signal });
|
|
176
|
+
expect(res.ok).toBe(false);
|
|
177
|
+
if (!res.ok)
|
|
178
|
+
expect(res.error).toMatch(/cancelled/i);
|
|
179
|
+
expect(harnessStarted()).toBe(0);
|
|
180
|
+
});
|
|
181
|
+
it('a live signal does not break the normal tentacle run (regression)', async () => {
|
|
182
|
+
const { deps, harnessStarted } = scriptedDeps();
|
|
183
|
+
const tool = createTaskTool(deps);
|
|
184
|
+
const res = await tool.execute({ description: 'd', prompt: 'p', agent: 'explore' }, makeCtx());
|
|
185
|
+
expect(res.ok).toBe(true);
|
|
186
|
+
if (res.ok)
|
|
187
|
+
expect(res.value.result).toContain('tentacle conclusion');
|
|
188
|
+
expect(harnessStarted()).toBe(1);
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
describe('candidate contract (ADR-0020 Fase 3)', () => {
|
|
192
|
+
const ctx = makeCtx();
|
|
193
|
+
beforeEach(() => {
|
|
194
|
+
resetTaskSpawnCount();
|
|
195
|
+
resetKrakenCandidates();
|
|
196
|
+
});
|
|
197
|
+
it('purpose=candidate is refused while the alpha flag is OFF', async () => {
|
|
198
|
+
const prev = process.env.ZELARI_KRAKEN_SELECTION;
|
|
199
|
+
delete process.env.ZELARI_KRAKEN_SELECTION;
|
|
200
|
+
try {
|
|
201
|
+
const { deps, calls } = probeDeps();
|
|
202
|
+
const tool = createTaskTool(deps);
|
|
203
|
+
const res = await tool.execute({ description: 'd', prompt: 'p', purpose: 'candidate' }, ctx);
|
|
204
|
+
expect(res.ok).toBe(false);
|
|
205
|
+
if (!res.ok)
|
|
206
|
+
expect(res.error).toMatch(/ZELARI_KRAKEN_SELECTION=1/);
|
|
207
|
+
expect(calls).toHaveLength(0);
|
|
208
|
+
expect(krakenCandidates()).toHaveLength(0);
|
|
209
|
+
}
|
|
210
|
+
finally {
|
|
211
|
+
if (prev === undefined)
|
|
212
|
+
delete process.env.ZELARI_KRAKEN_SELECTION;
|
|
213
|
+
else
|
|
214
|
+
process.env.ZELARI_KRAKEN_SELECTION = prev;
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
it('candidate forces agent=explore (general rejected without spawning)', async () => {
|
|
218
|
+
process.env.ZELARI_KRAKEN_SELECTION = '1';
|
|
219
|
+
try {
|
|
220
|
+
const { deps, calls } = probeDeps();
|
|
221
|
+
const tool = createTaskTool(deps);
|
|
222
|
+
const res = await tool.execute({ description: 'd', prompt: 'p', agent: 'general', purpose: 'candidate' }, ctx);
|
|
223
|
+
expect(res.ok).toBe(false);
|
|
224
|
+
if (!res.ok)
|
|
225
|
+
expect(res.error).toMatch(/forces agent=explore/);
|
|
226
|
+
expect(calls).toHaveLength(0);
|
|
227
|
+
expect(isKrakenSelectionEnabled()).toBe(true);
|
|
228
|
+
}
|
|
229
|
+
finally {
|
|
230
|
+
delete process.env.ZELARI_KRAKEN_SELECTION;
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
it('candidate failures are registered as malformed (slot consumed, evidence preserved)', async () => {
|
|
234
|
+
process.env.ZELARI_KRAKEN_SELECTION = '1';
|
|
235
|
+
try {
|
|
236
|
+
// probeDeps returns a null context → tentacle fails with no provider
|
|
237
|
+
const { deps } = probeDeps();
|
|
238
|
+
const tool = createTaskTool(deps);
|
|
239
|
+
const res = await tool.execute({ description: 'd', prompt: 'p', purpose: 'candidate' }, ctx);
|
|
240
|
+
expect(res.ok).toBe(false);
|
|
241
|
+
const all = krakenCandidates();
|
|
242
|
+
expect(all).toHaveLength(1);
|
|
243
|
+
expect(all[0].status).toBe('malformed');
|
|
244
|
+
}
|
|
245
|
+
finally {
|
|
246
|
+
delete process.env.ZELARI_KRAKEN_SELECTION;
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
});
|
|
250
|
+
describe('kraken_select gating (ADR-0020 Fase 4)', () => {
|
|
251
|
+
it('absent by default (flag off → registry unchanged)', () => {
|
|
252
|
+
const { tools } = makeRegistry();
|
|
253
|
+
expect(tools.find((t) => t.name === 'kraken_select')).toBeUndefined();
|
|
254
|
+
});
|
|
255
|
+
it('registered on the parent full registry when krakenSelect=true', () => {
|
|
256
|
+
const { tools, registry } = makeRegistry({ krakenSelect: true });
|
|
257
|
+
const summary = tools.find((t) => t.name === 'kraken_select');
|
|
258
|
+
expect(summary).toBeDefined();
|
|
259
|
+
expect(summary?.permissions).toContain('read');
|
|
260
|
+
expect(registry.get('kraken_select')).toBeDefined();
|
|
261
|
+
});
|
|
262
|
+
it('stays available in PLAN mode (selection is plan-safe)', () => {
|
|
263
|
+
const { tools } = makeRegistry({ krakenSelect: true, planMode: true });
|
|
264
|
+
expect(tools.find((t) => t.name === 'kraken_select')).toBeDefined();
|
|
265
|
+
});
|
|
266
|
+
it('NEVER registered on read-only sub-agent profiles (tentacles)', () => {
|
|
267
|
+
const { tools, registry } = makeRegistry({ krakenSelect: true, readOnly: true });
|
|
268
|
+
expect(tools.find((t) => t.name === 'kraken_select')).toBeUndefined();
|
|
269
|
+
expect(registry.get('kraken_select')).toBeUndefined();
|
|
270
|
+
});
|
|
271
|
+
it('execute is safe without deps wiring (no candidates → typedOk no-op)', async () => {
|
|
272
|
+
resetKrakenCandidates();
|
|
273
|
+
const { registry } = makeRegistry({ krakenSelect: true });
|
|
274
|
+
const tool = registry.get('kraken_select');
|
|
275
|
+
expect(tool).toBeDefined();
|
|
276
|
+
const res = await tool.execute({}, makeCtx());
|
|
277
|
+
expect(res.ok).toBe(true);
|
|
278
|
+
});
|
|
279
|
+
});
|
|
280
|
+
//# sourceMappingURL=taskTool.planSafety.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taskTool.planSafety.test.js","sourceRoot":"","sources":["../../../src/cli/tools/taskTool.planSafety.test.ts"],"names":[],"mappings":"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"}
|