vigiles API reference
    Preparing search index...

    Interface HarnessDialect

    interface HarnessDialect {
        builtinAgentTools: readonly string[];
        hookEvents: readonly string[];
        instructionTargets: readonly string[];
        knownMcpServers?: readonly string[];
        mcpToolPattern: RegExp;
        name: string;
        neverAvailableTools: readonly string[];
        noEffectHookEvents?: readonly string[];
        permissionDecisionHookEvents?: readonly string[];
        pluginRootToken: string;
        sideEffectingTools?: readonly string[];
        skillFrontmatter: SkillFrontmatterProfile;
    }
    Index

    Properties

    builtinAgentTools: readonly string[]

    Built-in tools a subagent may list in its tools: contract.

    hookEvents: readonly string[]

    Hook event names the harness fires.

    instructionTargets: readonly string[]

    Instruction-file targets the harness reads (also the h1 heading).

    knownMcpServers?: readonly string[]

    MCP servers the harness provides itself, available to a contract WITHOUT the plugin declaring them — e.g. Claude Code's built-in ide integration (mcp__ide__getDiagnostics). The mcp-tool-resolves check allowlists these so a reference to a built-in server is never flagged as an undeclared one. Optional (additive, non-breaking for existing adapters) — defaults to none.

    mcpToolPattern: RegExp

    Matches an MCP tool reference, e.g. mcp__server__tool.

    name: string

    Stable identifier, e.g. "claude-code".

    neverAvailableTools: readonly string[]

    Tools the platform never exposes to a subagent (a listed one is dead).

    noEffectHookEvents?: readonly string[]

    The subset of hookEvents where a block decision (exit 2 / a deny field) is SILENTLY IGNORED ENTIRELY — no veto AND no model feedback (Claude Code's SessionStart / SessionEnd / Notification / PreCompact: exit 2 there writes stderr only to the user). The basis for the hook-block-ineffective "wrong-event" check, which fires ONLY on these (so it stays FP-safe and never cries wolf on a PostToolUse feedback/nudge hook). Optional (additive, non-breaking) — absent ⇒ the harness's block semantics are undeclared and the check does not run for it.

    permissionDecisionHookEvents?: readonly string[]

    The subset of blocking events whose deny REQUIRES the structured permissionDecision field (e.g. Claude Code's PreToolUse), where the legacy top-level decision field is silently ignored. The basis for the hook-block-ineffective "wrong-field" check. Optional (additive).

    pluginRootToken: string

    The env token expanded to the plugin root in hook commands.

    sideEffectingTools?: readonly string[]

    Tools that PRODUCE side effects (write, exec, network, spawn) — the complement of read-only within builtinAgentTools. The basis for effect-surface analysis and the pure: contract: a tool here is denied to a pure skill and counts toward a harness's side-effect surface. Bash is listed (undecidable at the tool-name level → conservatively side-effecting); an MCP tool not classifiable from the name is treated as unknown-effect. Optional (additive, non-breaking) — absent ⇒ no tool is known-side-effecting.

    skillFrontmatter: SkillFrontmatterProfile

    Which SKILL.md frontmatter keys this harness understands — the profile the compiler renders under:

    • "claude-code" — the full Claude Code set (name, description, plus the CC-only keys: disable-model-invocation, argument-hint, …).
    • "minimal" — name + description ONLY (the cross-tool SKILL.md shape Codex and OpenCode read; CC-only keys are omitted because they'd be inert noise).