UNPKG

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
/** * 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