v1.12 track B.3: agent whitelists + .codecontextignore template + CLAUDE.md updates
Removed /opt/boocode/AGENTS.md (per-project override) — the project's agents now resolve from the global /data/AGENTS.md only. Eliminates the two-files-must-stay-in-sync footgun that surfaced during B.3 verification. Fix: agents.ts ALL_TOOL_NAMES was a hardcoded 9-item whitelist that silently filtered any unknown tool name from agent.tools arrays. This caused web_search/web_fetch (v1.11.8) and the 8 codecontext tools to be dropped at parse time. Replaced with ALL_TOOLS.map(t => t.name) for single source of truth. Pre-existing exposure was dormant since no builtin agent listed web_search; surfaced by adding codecontext.
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import { promises as fs } from 'node:fs';
|
||||
import { join } from 'node:path';
|
||||
import type { Agent, AgentsResponse, AgentParseError } from '../types/api.js';
|
||||
import { ALL_TOOLS } from './tools.js';
|
||||
|
||||
// v1.8.1: global agents live at /data/AGENTS.md inside the container
|
||||
// (./data:/data:ro mount on the host). Per-project AGENTS.md at the project
|
||||
@@ -10,18 +11,12 @@ import type { Agent, AgentsResponse, AgentParseError } from '../types/api.js';
|
||||
const GLOBAL_AGENTS_PATH = '/data/AGENTS.md';
|
||||
const CACHE_TTL_MS = 60_000;
|
||||
|
||||
// Tools whitelist universe matches services/tools.ts ALL_TOOLS. Keep in sync.
|
||||
// Batch 9.6: skill_find / skill_use / skill_resource added. Agents without an
|
||||
// explicit `tools:` field inherit the full default set (which now includes
|
||||
// the skill tools); agents with an explicit `tools:` array must list any
|
||||
// skill tool they want to use — strict opt-in.
|
||||
// Batch 9.7: ask_user_input added — same opt-in semantics. Agents with an
|
||||
// explicit tools list that omits it cannot trigger the interactive picker.
|
||||
const ALL_TOOL_NAMES = [
|
||||
'view_file', 'list_dir', 'grep', 'find_files', 'git_status',
|
||||
'skill_find', 'skill_use', 'skill_resource',
|
||||
'ask_user_input',
|
||||
] as const;
|
||||
// v1.12 Track B.3: derive from services/tools.ts ALL_TOOLS so new tools are
|
||||
// auto-recognized in agent frontmatter `tools:` arrays. The previous
|
||||
// hand-maintained list drifted (web_search/web_fetch from v1.11.8 + the 8
|
||||
// codecontext tools were missing), silently filtering valid tool names out
|
||||
// of agents that opted in. Single source of truth is tools.ts now.
|
||||
const ALL_TOOL_NAMES: readonly string[] = ALL_TOOLS.map((t) => t.name);
|
||||
const DEFAULT_TOOLS: string[] = [...ALL_TOOL_NAMES];
|
||||
const DEFAULT_TEMPERATURE = 0.7;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user