aiwg
Version:
Deployment tool and support utility for AI context. Copies agents, skills, commands, rules, and behaviors into the paths each AI platform reads (Claude Code, Codex, Copilot, Cursor, Warp, OpenClaw, and 6 more) so one source of truth works across 10 platfo
160 lines • 5.86 kB
TypeScript
/**
* Provider Capability Matrix Loader
*
* Loads and queries the authoritative provider capability matrix from
* agentic/code/providers/capability-matrix.yaml. Provides typed access
* for the scheduler, agent teams, steward, and runtime-info CLI.
*
* @issue #604
* @unblocks #597, #598, #599
*/
export type ProviderStatus = 'stable' | 'experimental' | 'deprecated';
export type FeatureKey = 'cron' | 'agent_teams' | 'tasks' | 'mcp' | 'behaviors' | 'mission_control' | 'daemon';
/**
* Daemon support tier for a provider.
*
* - `native` — full headless daemon (aiwg daemon start/stop/status)
* - `pty-adapter` — PTY bridge for TUI-based platforms (secondary/opt-in mode)
* - `unsupported` — requires a display server or IDE host; daemon not applicable
*
* @issue #656
*/
export type DaemonTier = 'native' | 'pty-adapter' | 'unsupported';
export type EmulationStrategy = 'native' | 'hooks' | 'aiwg-mc' | 'aiwg-schedule' | 'aiwg-daemon' | null;
export type DeployTarget = 'project' | 'home' | 'mixed';
export interface ArtifactPaths {
agents: string;
commands: string;
skills: string;
skills_cross_agent?: string;
rules: string;
behaviors: string | null;
}
export interface HookWiring {
at_link_support: boolean;
hook_file?: string;
hook_directive?: string;
fallback?: string;
context_file: string;
}
export interface ProviderCapabilities {
display_name: string;
aliases?: string[];
status: ProviderStatus;
/** Primary daemon support tier. @issue #656 */
daemon_tier: DaemonTier;
/** True if the provider also supports the PTY adapter as a secondary mode. @issue #656 */
daemon_pty_adapter: boolean;
artifact_paths: ArtifactPaths;
native_features: Record<FeatureKey, boolean>;
emulation: Record<FeatureKey, EmulationStrategy>;
hook_wiring: HookWiring;
deploy_target: DeployTarget;
aggregated_output: boolean;
agent_capabilities?: Record<string, AgentCapabilities>;
}
export interface AgentCapabilities {
context_window?: number;
max_output_tokens?: number;
max_tool_calls?: number;
max_concurrent_subagents?: number;
supports_streaming?: boolean;
million_context_requires_extra_usage?: boolean;
quota_available?: boolean;
notes?: string;
recovery?: Record<string, string>;
}
export type DispatchPreflightStatus = 'ok' | 'would_overflow' | 'quota_unavailable' | 'tool_budget_exceeded' | 'unknown_provider';
export interface DispatchPreflightInput {
provider: string;
agentType?: string;
promptTokens?: number;
contextTokens?: number;
outputTokens?: number;
toolCalls?: number;
requiresMillionContext?: boolean;
}
export interface DispatchPreflightResult {
status: DispatchPreflightStatus;
provider: string;
agentType: string;
estimatedTokens: number;
contextWindow: number | null;
maxOutputTokens: number | null;
maxToolCalls: number | null;
recoveryHint: string | null;
message: string;
}
export interface FeatureDefinition {
description: string;
native_example: string | null;
emulation_strategies: Record<string, string>;
}
export interface CapabilityMatrix {
version: string;
providers: Record<string, ProviderCapabilities>;
features: Record<FeatureKey, FeatureDefinition>;
}
/**
* Load the capability matrix from disk (cached after first load).
*/
export declare function loadCapabilityMatrix(): CapabilityMatrix;
/**
* Force-reload the matrix (e.g. after edits during validate-metadata).
*/
export declare function reloadCapabilityMatrix(): CapabilityMatrix;
/**
* Get the full capabilities object for a provider by key or alias.
*/
export declare function getProviderCapabilities(providerKey: string): ProviderCapabilities | undefined;
export declare function getAgentCapabilities(providerKey: string, agentType?: string): AgentCapabilities | undefined;
/**
* Pre-flight a provider subagent dispatch before spawning work. The helper is
* intentionally deterministic: callers pass token/tool estimates and receive a
* structured routing signal instead of pattern-matching provider error strings.
*/
export declare function preflightSubagentDispatch(input: DispatchPreflightInput): DispatchPreflightResult;
/**
* Check whether a provider supports a feature natively (without emulation).
*/
export declare function supportsNative(caps: ProviderCapabilities, feature: FeatureKey): boolean;
/**
* Get the emulation strategy for a feature on a provider.
* Returns 'native' if the provider supports it natively, or the
* emulation strategy string, or null if unsupported entirely.
*/
export declare function getEmulationStrategy(caps: ProviderCapabilities, feature: FeatureKey): EmulationStrategy;
/**
* List all provider keys.
*/
export declare function listProviders(): string[];
/**
* List all providers that natively support a given feature.
*/
export declare function providersWithNativeSupport(feature: FeatureKey): string[];
/**
* Get the feature definition (description, examples, strategies).
*/
export declare function getFeatureDefinition(feature: FeatureKey): FeatureDefinition | undefined;
/**
* Get the daemon tier for a provider.
* Returns 'unsupported' if the provider is not found or has no daemon_tier.
*
* @issue #656
*/
export declare function getDaemonTier(providerKey: string): DaemonTier;
/**
* List all providers that support daemon mode (Tier 1: native).
*
* @issue #656
*/
export declare function daemonCapableProviders(): string[];
/**
* Format the full capability matrix as a human-readable table string.
*/
export declare function formatCapabilityTable(): string;
/**
* Format a single feature's support across all providers.
*/
export declare function formatFeatureSupport(feature: FeatureKey): string;
//# sourceMappingURL=capability-matrix.d.ts.map