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.
Files changed (59) hide show
  1. package/dist/cli/desktopConfig.js +51 -4
  2. package/dist/cli/desktopConfig.js.map +1 -1
  3. package/dist/cli/hooks/useChatTurn.js +80 -0
  4. package/dist/cli/hooks/useChatTurn.js.map +1 -1
  5. package/dist/cli/kraken/candidateRegistry.js +195 -0
  6. package/dist/cli/kraken/candidateRegistry.js.map +1 -0
  7. package/dist/cli/kraken/candidateRegistry.test.js +211 -0
  8. package/dist/cli/kraken/candidateRegistry.test.js.map +1 -0
  9. package/dist/cli/kraken/completionGate.js +116 -0
  10. package/dist/cli/kraken/completionGate.js.map +1 -0
  11. package/dist/cli/kraken/completionGate.test.js +172 -0
  12. package/dist/cli/kraken/completionGate.test.js.map +1 -0
  13. package/dist/cli/kraken/metrics.js +96 -0
  14. package/dist/cli/kraken/metrics.js.map +1 -0
  15. package/dist/cli/kraken/metrics.test.js +145 -0
  16. package/dist/cli/kraken/metrics.test.js.map +1 -0
  17. package/dist/cli/kraken/selectionPlaybook.js +23 -0
  18. package/dist/cli/kraken/selectionPlaybook.js.map +1 -0
  19. package/dist/cli/kraken/selectionPlaybook.test.js +55 -0
  20. package/dist/cli/kraken/selectionPlaybook.test.js.map +1 -0
  21. package/dist/cli/kraken/turnRuntime.js +207 -0
  22. package/dist/cli/kraken/turnRuntime.js.map +1 -0
  23. package/dist/cli/kraken/turnRuntime.test.js +377 -0
  24. package/dist/cli/kraken/turnRuntime.test.js.map +1 -0
  25. package/dist/cli/kraken/verifier.js +233 -0
  26. package/dist/cli/kraken/verifier.js.map +1 -0
  27. package/dist/cli/kraken/verifier.test.js +232 -0
  28. package/dist/cli/kraken/verifier.test.js.map +1 -0
  29. package/dist/cli/kraken/verifierSettings.test.js +237 -0
  30. package/dist/cli/kraken/verifierSettings.test.js.map +1 -0
  31. package/dist/cli/kraken/verifyReport.js +115 -0
  32. package/dist/cli/kraken/verifyReport.js.map +1 -0
  33. package/dist/cli/kraken/verifyReport.test.js +111 -0
  34. package/dist/cli/kraken/verifyReport.test.js.map +1 -0
  35. package/dist/cli/main.bundled.js +1369 -111
  36. package/dist/cli/main.bundled.js.map +4 -4
  37. package/dist/cli/provider/openai-compatible.js +40 -6
  38. package/dist/cli/provider/openai-compatible.js.map +1 -1
  39. package/dist/cli/provider/openai-compatible.timeout.test.js +72 -0
  40. package/dist/cli/provider/openai-compatible.timeout.test.js.map +1 -0
  41. package/dist/cli/providerConfig.js +46 -0
  42. package/dist/cli/providerConfig.js.map +1 -1
  43. package/dist/cli/runHeadless.js +85 -0
  44. package/dist/cli/runHeadless.js.map +1 -1
  45. package/dist/cli/toolRegistry.js +50 -6
  46. package/dist/cli/toolRegistry.js.map +1 -1
  47. package/dist/cli/tools/krakenSelectTool.js +165 -0
  48. package/dist/cli/tools/krakenSelectTool.js.map +1 -0
  49. package/dist/cli/tools/krakenSelectTool.test.js +246 -0
  50. package/dist/cli/tools/krakenSelectTool.test.js.map +1 -0
  51. package/dist/cli/tools/taskTool.dynamicChecks.test.js +156 -0
  52. package/dist/cli/tools/taskTool.dynamicChecks.test.js.map +1 -0
  53. package/dist/cli/tools/taskTool.js +174 -6
  54. package/dist/cli/tools/taskTool.js.map +1 -1
  55. package/dist/cli/tools/taskTool.planSafety.test.js +280 -0
  56. package/dist/cli/tools/taskTool.planSafety.test.js.map +1 -0
  57. package/dist/cli/tools/taskTool.verifyReport.test.js +140 -0
  58. package/dist/cli/tools/taskTool.verifyReport.test.js.map +1 -0
  59. 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: TaskArgsSchema,
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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"}