/** * mixin-resolver.ts * * Resolves agent composition mixin refs (persona, ruleset, knowledge) to text * for rendering into the agent definition at install time. * * Three ref forms: * Local path — "./extra-rules.md" or "/abs/path/rules.md" * Read directly relative to agentDir (or absolute). * Bare name — "skaile-base" * Resolved from repos as `${defaultKind}:skaile-base` * Qualified — "persona:researcher@ext-repo#v2.0" * Full AssetRef syntax; repo qualifier searches specific repo only. * * Knowledge bundles (kind="knowledge") resolve to a directory — all *.md files * inside are loaded in priority order (same priority-based loadKnowledge logic used by the asset-manager). */ import type { AgentManifest, CatalogEntry } from "@skaile/workspaces/core"; /** * A resolved mixin with its content loaded from disk. * * @docLink packages/runner/dev-guide#key-conventions */ export interface ResolvedMixin { /** Text content ready for system prompt injection. */ content: string; /** Absolute path to the source file, for debugging. */ source: string; } /** * Pre-built repo catalog map: repoName → CatalogEntry[]. * Built by the caller (session-builder) from wsConfig.repositories using * ensureRepo() + scanRepo() from @skaile/workspaces/core/repo-manager. * Local repos are scanned directly; remote repos use the global cache. * @docLink packages/runner/dev-guide#key-conventions */ export type RepoMap = Record; /** * Content of an agent mixin, loaded from `CONVENTIONS.md` or `RULES.md`. * * @docLink packages/runner/dev-guide#key-conventions */ export interface AgentMixinContent { personas: ResolvedMixin[]; rules: ResolvedMixin[]; knowledge: ResolvedMixin[]; } /** * Resolve a single mixin ref to its text content. * Returns null if the ref cannot be resolved (missing file or unknown catalog name). * Never throws — callers filter nulls. * @docLink packages/runner/dev-guide#key-conventions */ export declare function resolveMixin(ref: string, defaultKind: string, agentDir: string, repos: RepoMap): Promise; /** * Resolve all mixin arrays from a manifest. * All three kinds resolve concurrently. Unresolvable refs are silently skipped. * @docLink packages/runner/dev-guide#key-conventions */ export declare function resolveAgentMixins(manifest: Pick, agentDir: string, repos: RepoMap): Promise; //# sourceMappingURL=mixin-resolver.d.ts.map