hostCapabilityCatalog top-level property
The capability catalog — the CLI's ceiling (AC10). Wiring sites cite the verified sweep (2026-09-29); line anchors drift, the files are the contract.
Implementation
final Map<HostCapability, CapabilitySpec>
hostCapabilityCatalog = Map.unmodifiable({
HostCapability.configSections: CapabilitySpec(
capability: HostCapability.configSections,
title:
'Config sections (roles:/tools:/ttsr:/redact:/providerTimeouts:/agent:)',
note: 'Parsed once, applied to every host whose profile has the row on.',
cliWiringSites: [
'bin/fah.dart (AgentCliConfig)',
'lib/src/cli/cli_config.dart (fromYaml)',
],
surface: CapabilitySurface(
tokens: {'roles:', 'ttsr:', 'redact:', 'providerTimeouts:'},
promptSectionIds: {'config-sections'},
),
),
HostCapability.compaction: CapabilitySpec(
capability: HostCapability.compaction,
title: 'Compaction wiring',
note: 'roles.smol judge, overWindowRelief, contextWindowCap (#1077).',
cliWiringSites: [
'bin/fah.dart (compactionEngine, contextWindowCap)',
'lib/src/cli/agent_cli.dart',
],
surface: CapabilitySurface(
tokens: {'overWindowRelief', 'contextWindowCap'},
promptSectionIds: {'compaction'},
),
),
HostCapability.loadModes: CapabilitySpec(
capability: HostCapability.loadModes,
title: 'Load modes + discover_tools',
note: 'Essential-set demotion and the discover_tools registration.',
cliWiringSites: [
'bin/fah.dart (loadMode)',
'lib/src/cli/agent_cli_tools.dart',
],
surface: CapabilitySurface(tokens: {'discover_tools'}),
),
HostCapability.mcp: CapabilitySpec(
capability: HostCapability.mcp,
title: 'MCP servers',
note:
'Transports: stdio (spawned) + remote (HTTP). One '
'transport-parametrized factory: it creates exactly the transports '
'the cell declares — stdio spawn on process hosts, remote fetch on '
'web/extension — so a remote-only host never supplies a stdio '
'spawner.',
cliWiringSites: [
'bin/fah.dart (mcpConfig)',
'lib/src/mcp/io_mcp_transport.dart',
'lib/src/mcp/mcp_http_transport.dart',
],
requiredServices: {'mcpTransportFactory'},
surface: CapabilitySurface(
tokens: {'mcp__', 'mcp:'},
promptSectionIds: {'mcp'},
),
),
HostCapability.messagingFabric: CapabilitySpec(
capability: HostCapability.messagingFabric,
title: 'Messaging fabric',
note:
'Transports: file + hub (FallbackMessagingRepository) + a2a. The '
'file transport needs no host service beyond the session root it '
'writes under; hub rides the hub plugin (slice-2 run-narrowing '
'drops the hub transport when the plugin is absent — the file '
'fabric keeps working).',
cliWiringSites: [
'lib/src/messaging/agent_fabric.dart (buildAgentFabric)',
'bin/fah.dart (a2aConfig, hubFabric)',
],
requiredServicesByTransport: {
'hub': {'hubFabric'},
'file': {'sessionRoot'},
},
surface: CapabilitySurface(
tokens: {'schedule_message', 'agent_message', 'a2a'},
),
),
HostCapability.approvalGate: CapabilitySpec(
capability: HostCapability.approvalGate,
title: 'Approval gate',
note: 'Modes + unattended + always-allow sets.',
cliWiringSites: [
'bin/fah.dart (approvalMode, alwaysAllowTools)',
'lib/src/cli/agent_cli.dart (ApprovalManager)',
],
surface: CapabilitySurface(
tokens: {'approval'},
promptSectionIds: {'approval'},
),
),
HostCapability.skills: CapabilitySpec(
capability: HostCapability.skills,
title: 'Skills + project context',
note: 'Skill discovery roots and the AGENTS.md project context.',
cliWiringSites: [
'lib/src/cli/agent_cli.dart (discoverSkills)',
'bin/fah.dart (skillsAccess)',
],
surface: CapabilitySurface(
tokens: {'skills'},
promptSectionIds: {'skills'},
),
),
HostCapability.sandboxEnv: CapabilitySpec(
capability: HostCapability.sandboxEnv,
title: 'Sandbox env',
note:
'Backends: cube (passthrough/policy/kernel) + local on the CLI; '
'platform / WasiSandbox / MemoryShell are host-side factories.',
cliWiringSites: [
'bin/fah.dart (cubeSpec, fsProbe)',
'lib/src/cli/agent_cli.dart (SandboxedExecutionEnv)',
],
requiredServices: {'cubeSpec', 'fsProbe'},
surface: CapabilitySurface(tokens: {'cube', 'sandbox'}),
),
HostCapability.backgroundShellJobs: CapabilitySpec(
capability: HostCapability.backgroundShellJobs,
title: 'Background shell jobs',
note: 'The bash_job board over .fah/bash_jobs logs.',
cliWiringSites: [
'bin/fah.dart (jobs)',
'lib/src/cli/agent_cli.dart (ShellJobRegistry)',
],
// Review #1230: with no required services the capability could never
// be run-narrowed off — a host without a job factory kept it "wired".
requiredServices: {'shellJobFactory'},
surface: CapabilitySurface(tokens: {'bash_job'}),
),
HostCapability.sqliteLspDap: CapabilitySpec(
capability: HostCapability.sqliteLspDap,
title: 'sqlite / lsp / dap',
note:
'FFI sqlite reader, process lsp transport, dap_* via the hub plugin. '
'Per-transport services: the sqlite reader rides the ffi transport, '
'the lsp tool the process transport — a host without one keeps the '
'other (the base file tools never depend on this row).',
cliWiringSites: [
'bin/fah.dart (sqliteEngine, lspConfig, dapHubState)',
'bin/fah_hub_plugin.dart (registerTool)',
],
requiredServicesByTransport: {
'ffi': {'sqliteEngine'},
'process': {'lspTransportFactory'},
},
surface: CapabilitySurface(tokens: {'sqlite', 'lsp', 'dap'}),
),
HostCapability.onDeviceProviders: CapabilitySpec(
capability: HostCapability.onDeviceProviders,
title: 'On-device providers (webllm/gemma)',
note:
'NOT CLI-wired (matrix ❌ on the VM); wired in the Flutter app '
'(flutter_app/lib/main.dart).',
requiredServices: {'onDeviceProviderFactory'},
surface: CapabilitySurface(tokens: {'webllm', 'gemma'}),
),
HostCapability.jsApps: CapabilitySpec(
capability: HostCapability.jsApps,
title: 'JS apps (jsr) + dynamic_message',
note:
'The browser-API app surface — matrix-pinned off on the VM. Owns '
'NO bare "jsr" token: the CLI wires an `fa jsr` widget pass-through '
'(#1062), claimed by [HostCapability.jsExtensions]. The CLI\'s '
'process-based QuickJS machinery is [HostCapability.jsExtensions].',
requiredServices: {'dynamicMessageSink'},
surface: CapabilitySurface(
tokens: {'dynamic_message'},
promptSectionIds: {'js-apps'},
),
),
HostCapability.checkpointRewind: CapabilitySpec(
capability: HostCapability.checkpointRewind,
title: 'Checkpoint / rewind',
note: 'CheckpointRewindController + checkpoint/rewind tools.',
cliWiringSites: ['lib/src/cli/agent_cli.dart (CheckpointRewindController)'],
surface: CapabilitySurface(tokens: {'checkpoint', 'rewind'}),
),
HostCapability.hostExtensionApi: CapabilitySpec(
capability: HostCapability.hostExtensionApi,
title: 'Host extension API',
note:
'PluginContext.register — host tools, inboxes, slash commands. '
'Core behaviors stay SDK-invariant (AC9).',
cliWiringSites: [
'bin/fah.dart (plugins, pluginConfig)',
'lib/src/cli/agent_cli.dart (PluginContext)',
],
surface: CapabilitySurface(
tokens: {'plugin'},
promptSectionIds: {'extensions'},
),
),
HostCapability.webSearch: CapabilitySpec(
capability: HostCapability.webSearch,
title: 'Web search',
note:
'Inventory-driven (AC10): web_search/web_fetch over '
'WebSearchConfig secrets; no matrix row pins it.',
cliWiringSites: [
'bin/fah.dart (webSearchConfig)',
'lib/src/cli/agent_cli_tools.dart',
],
requiredServices: {'webSearchSecrets'},
surface: CapabilitySurface(tokens: {'web_search', 'web_fetch'}),
),
HostCapability.visionTranscribe: CapabilitySpec(
capability: HostCapability.visionTranscribe,
title: 'Vision + transcribe',
note:
'Inventory-driven (AC10): inspect_image/transcribe_audio/image '
'generation over the host vision/transcribe configs. No REQUIRED '
'services: the CLI registers generate_image/generate_video '
'unconditionally (config-gated models), and inspect/transcribe '
'ride per-tool config presence inside the assembly — the row '
'narrows only when a host profile declares it off.',
cliWiringSites: [
'bin/fah.dart (visionConfig, transcribeConfig)',
'lib/src/cli/agent_cli.dart',
],
surface: CapabilitySurface(
tokens: {'inspect_image', 'transcribe_audio', 'generate_image'},
),
),
HostCapability.subagents: CapabilitySpec(
capability: HostCapability.subagents,
title: 'Subagents + task system',
note:
'Inventory-driven (AC10): subagents: config, SubagentManager, '
'task/agent tools, heartbeat. Slice 3: the builder assembles the '
'complex (fabric → manager → heartbeat → task/monitoring tools) '
'from the typed SubagentServices bundle — absent from the run, '
'the capability narrows off like any missing platform service.',
cliWiringSites: [
'bin/fah.dart (subagents)',
'lib/src/cli/agent_cli.dart (SubagentManager, taskTool)',
],
requiredServices: {'sessionRoot', 'subagentServices'},
surface: CapabilitySurface(tokens: {'task', 'agent_directory', 'subagent'}),
),
HostCapability.browserBridge: CapabilitySpec(
capability: HostCapability.browserBridge,
title: 'Browser bridge tools',
note:
'Inventory-driven (AC10): the browser_* family over the loopback '
'bridge — the automation surface the CLI wires today.',
cliWiringSites: [
'bin/fah.dart (browserBridgeHandle, browserController)',
'lib/src/cli/agent_cli.dart (browserTools)',
],
requiredServices: {'browserBridgeHandle'},
surface: CapabilitySurface(
tokens: {'browser_navigate', 'browser_click', 'browser_eval'},
),
),
HostCapability.jsExtensions: CapabilitySpec(
capability: HostCapability.jsExtensions,
title: 'QuickJS JS extensions + jsr widget pass-through',
note:
'Inventory-driven (AC10): per-extension isolated QuickJS engines '
'(process transport) — not the browser-API [HostCapability.jsApps] '
'row. Owns the `fa jsr` widget pass-through + `/jsr` REPL alias '
'(#1062): the only legitimate "jsr" surfaces on the CLI.',
cliWiringSites: [
'bin/fah.dart (extRuntimeFactory)',
'lib/src/cli/agent_cli.dart (initJsExtensions)',
],
requiredServices: {'extRuntimeFactory'},
surface: CapabilitySurface(tokens: {'js_ext', 'jsr.ext', 'fa jsr', '/jsr'}),
),
});