import { type Theme } from "../modes/interactive/theme/theme.ts"; import type { ResourceDiagnostic } from "./diagnostics.ts"; export type { ResourceCollision, ResourceDiagnostic } from "./diagnostics.ts"; import { type EventBus } from "./event-bus.ts"; import type { InlineExtension, LoadExtensionsResult } from "./extensions/types.ts"; import { type PathMetadata, type ResolvedResource } from "./package-manager.ts"; import type { PromptTemplate } from "./prompt-templates.ts"; import { SettingsManager } from "./settings-manager.ts"; import type { AgentPersona } from "./agents.ts"; import type { Skill } from "./skills.ts"; export interface ResourceExtensionPaths { skillPaths?: Array<{ path: string; metadata: PathMetadata; }>; promptPaths?: Array<{ path: string; metadata: PathMetadata; }>; themePaths?: Array<{ path: string; metadata: PathMetadata; }>; } export interface ResourceLoaderReloadOptions { resolveProjectTrust?: (input: { extensionsResult: LoadExtensionsResult; }) => Promise; } export interface ResourceLoader { getExtensions(): LoadExtensionsResult; getExtensionDiagnostics(): ResourceDiagnostic[]; getSkills(): { skills: Skill[]; diagnostics: ResourceDiagnostic[]; }; getResolvedSkills(): ResolvedResource[]; /** * Skills eligible for the system-prompt skill index (trust-filtered, * model-invocation-eligible). Extensions may replace this view via * setSkillsIndexFilter to implement progressive disclosure without * touching the resolved catalog. */ getPromptSkills(): Skill[]; /** * Replace the skill view used when rendering the system-prompt skill index. * The filter receives the default eligible view and returns the view to * render. Passing undefined restores the default. The resolved catalog * (getSkills/getResolvedSkills) is never mutated. */ setSkillsIndexFilter(filter: ((skills: Skill[]) => Skill[]) | undefined): void; getPrompts(): { prompts: PromptTemplate[]; diagnostics: ResourceDiagnostic[]; }; getThemes(): { themes: Theme[]; diagnostics: ResourceDiagnostic[]; }; getAgents(): { agents: AgentPersona[]; diagnostics: ResourceDiagnostic[]; }; getAgentsFiles(): { agentsFiles: Array<{ path: string; content: string; }>; }; getSystemPrompt(): string | undefined; getSystemPromptSource(): { path: string; } | undefined; getAppendSystemPrompt(): string[]; getAppendSystemPromptSources(): Array<{ path: string; }>; extendResources(paths: ResourceExtensionPaths): void; reload(options?: ResourceLoaderReloadOptions): Promise; } export declare function loadProjectContextFiles(options: { cwd: string; agentDir: string; }): Array<{ path: string; content: string; }>; export interface DefaultResourceLoaderOptions { cwd: string; agentDir: string; settingsManager?: SettingsManager; eventBus?: EventBus; additionalExtensionPaths?: string[]; additionalSkillPaths?: string[]; additionalAgentPaths?: string[]; additionalPromptTemplatePaths?: string[]; additionalThemePaths?: string[]; extensionFactories?: InlineExtension[]; noExtensions?: boolean; noSkills?: boolean; noAgents?: boolean; noPromptTemplates?: boolean; noThemes?: boolean; noContextFiles?: boolean; systemPrompt?: string; appendSystemPrompt?: string[]; extensionsOverride?: (base: LoadExtensionsResult) => LoadExtensionsResult; skillsOverride?: (base: { skills: Skill[]; diagnostics: ResourceDiagnostic[]; }) => { skills: Skill[]; diagnostics: ResourceDiagnostic[]; }; promptsOverride?: (base: { prompts: PromptTemplate[]; diagnostics: ResourceDiagnostic[]; }) => { prompts: PromptTemplate[]; diagnostics: ResourceDiagnostic[]; }; themesOverride?: (base: { themes: Theme[]; diagnostics: ResourceDiagnostic[]; }) => { themes: Theme[]; diagnostics: ResourceDiagnostic[]; }; agentsOverride?: (base: { agents: AgentPersona[]; diagnostics: ResourceDiagnostic[]; }) => { agents: AgentPersona[]; diagnostics: ResourceDiagnostic[]; }; agentsFilesOverride?: (base: { agentsFiles: Array<{ path: string; content: string; }>; }) => { agentsFiles: Array<{ path: string; content: string; }>; }; systemPromptOverride?: (base: string | undefined) => string | undefined; appendSystemPromptOverride?: (base: string[]) => string[]; } export declare class DefaultResourceLoader implements ResourceLoader { private cwd; private agentDir; private settingsManager; private eventBus; private packageManager; private additionalExtensionPaths; private additionalSkillPaths; private additionalAgentPaths; private additionalPromptTemplatePaths; private additionalThemePaths; private extensionFactories; private noExtensions; private noSkills; private noAgents; private noPromptTemplates; private noThemes; private noContextFiles; private systemPromptSource?; private appendSystemPromptSource?; private extensionsOverride?; private skillsOverride?; private agentsOverride?; private promptsOverride?; private themesOverride?; private agentsFilesOverride?; private systemPromptOverride?; private appendSystemPromptOverride?; private extensionsResult; private extensionDiagnostics; private skills; private skillDiagnostics; private resolvedSkills; private skillsIndexFilter; private agents; private agentDiagnostics; private prompts; private promptDiagnostics; private themes; private themeDiagnostics; private agentsFiles; private systemPrompt?; private systemPromptSourcePath?; private appendSystemPrompt; private appendSystemPromptSourcePaths; private lastSkillPaths; private extensionSkillSourceInfos; private extensionPromptSourceInfos; private extensionThemeSourceInfos; private resourceMetadataByPath; private lastPromptPaths; private lastThemePaths; private loaded; constructor(options: DefaultResourceLoaderOptions); getExtensions(): LoadExtensionsResult; getExtensionDiagnostics(): ResourceDiagnostic[]; getSkills(): { skills: Skill[]; diagnostics: ResourceDiagnostic[]; }; getResolvedSkills(): ResolvedResource[]; getPromptSkills(): Skill[]; setSkillsIndexFilter(filter: ((skills: Skill[]) => Skill[]) | undefined): void; getPrompts(): { prompts: PromptTemplate[]; diagnostics: ResourceDiagnostic[]; }; getThemes(): { themes: Theme[]; diagnostics: ResourceDiagnostic[]; }; getAgents(): { agents: AgentPersona[]; diagnostics: ResourceDiagnostic[]; }; getAgentsFiles(): { agentsFiles: Array<{ path: string; content: string; }>; }; getSystemPrompt(): string | undefined; getSystemPromptSource(): { path: string; } | undefined; getAppendSystemPrompt(): string[]; getAppendSystemPromptSources(): Array<{ path: string; }>; extendResources(paths: ResourceExtensionPaths): void; loadProjectTrustExtensions(): Promise; reload(options?: ResourceLoaderReloadOptions): Promise; private loadCurrentExtensionSet; private resolveExtensionLoadPath; private loadFinalExtensionSet; private addExtensionConflictDiagnostics; /** * Enumerate every skill subdirectory in the bundled/CLI additional skill dirs, * enabling them by default while honoring explicit user overrides. * Returns resolved resources (SKILL.md paths + enabled state). */ private additionalResolvedSkills; private mapSkillPath; private normalizeExtensionPaths; private updateSkillsFromPaths; private updatePromptsFromPaths; private updateThemesFromPaths; private updateAgentsFromPaths; private applyExtensionSourceInfo; private findSourceInfoForPath; private getDefaultSourceInfoForPath; private mergePaths; private resolveResourcePath; private loadThemes; private loadThemesFromDir; private loadThemeFromFile; private loadExtensionFactories; private dedupePrompts; private dedupeThemes; private discoverSystemPromptFile; private discoverAppendSystemPromptFile; private isUnderPath; private detectExtensionConflicts; }