import { type ExtensionAPI, type ExtensionContext } from "@earendil-works/pi-coding-agent"; import { type AvailableModel, type ModelTask, type ProfileName, type ResolvedTaskRoute, type ThinkingLevel } from "@henryqw/pi-task-models"; export { DISPLAY_TEXT_CONTRACT, hasDisplayControlCharacters } from "./display-text.ts"; export { parseRoleMcpAllowlist, roleMcpFlagValue, selectRoleMcpConfig, type RoleMcpConfig } from "./mcp-role.ts"; export { addUsage, capEphemeralSubagentOutput, createEphemeralSubagentExecutor, DEFAULT_MAX_TURNS, EphemeralSubagentError, EXECUTION_BUDGET_ENV, formatDuration, type EphemeralSubagentActivityEvent, type EphemeralSubagentErrorCode, type EphemeralSubagentExecutionBudget, type EphemeralSubagentExecutor, type EphemeralSubagentExecutorOptions, type EphemeralSubagentResult, type EphemeralSubagentRunInput, type EphemeralSubagentTimeout, } from "./ephemeral.ts"; export { createChildWorktree, finalizeChildWorktree, inspectIndexFlags, inspectWorktreeDirty, WorktreeSetupError, worktreeContextNote, type WorktreeDirtyInspection, type WorktreeInfo, type WorktreePayload, } from "./worktree.ts"; export { prepareExactReviewEvidence, REVIEW_MAX_PATCH_BYTES, REVIEW_MAX_PATHS, type PreparedReviewEvidence, type PrepareExactReviewEvidenceInput, } from "./review-evidence.ts"; export declare const PI_ORCHESTRATOR_PROCESS_LEASE = "PI_ORCHESTRATOR_PROCESS_LEASE"; export declare const ROLE_MCP_POLICY_FLAG = "pi-subagent-role-mcps"; export declare const ROLE_TOOL_POLICY_FLAG = "pi-subagent-role-tools"; export declare const CHILD_EXCLUDED_TOOL_NAMES: readonly ["delegate_task", "ask_question", "orchestrate_execute", "orchestrate_status", "orchestrate_resume", "orchestrate_abort"]; export declare const CHILD_EXCLUDED_TOOLS: string; export declare const DELEGATE_TASK: { readonly id: "pi-subagent/delegateTask"; readonly label: "Subagent delegation"; readonly purpose: "Launch an isolated Pi subagent."; readonly defaultProfile: "fast"; }; export type RoleName = string; export interface Role { name: RoleName; description: string; modelClass?: ProfileName; tools: string[]; isolation?: string; extensions: string[]; skills: string[]; mcps?: string[]; systemPrompt: string; } export interface PiLaunch { env: Record; args: string[]; } export interface ResolvedRoleLaunch extends PiLaunch { model: AvailableModel; thinkingLevel: ThinkingLevel; missingSkills: string[]; } export interface PreparedRoleLaunch extends ResolvedRoleLaunch { role: RoleName; isolation?: "worktree"; tools: readonly string[]; systemPrompt: string; promptArgIndex: number; } export interface CreateRoleLaunchInput { role: Role; route: ResolvedTaskRoute; extensions?: readonly string[]; tools?: readonly string[]; env?: Readonly>; } export interface ResolveRoleLaunchInput extends Omit { task: ModelTask; modelClass?: ProfileName; agentDir?: string; } export interface ResolveConfiguredRoleLaunchInput { role: string; modelClass: ProfileName; } export interface ResolvedRoleSkills { paths: string[]; missing: string[]; } /** Normalize one arbitrary Role name using the Role configuration contract. */ export declare function parseRoleName(value: unknown, source?: string): RoleName; declare const BUILTIN_ROLE_NAMES: readonly ["implementer", "reviewer", "scout"]; export type BuiltinRoleName = (typeof BUILTIN_ROLE_NAMES)[number]; export declare function loadBuiltinRole(name: BuiltinRoleName): Role; /** * Validated package-shipped Roles plus valid user roles from `config/pi-subagent`. * A user role with a built-in name overrides the default; duplicate names among * user files are an error. Missing user directory returns the built-ins. */ export declare function loadRoles(agentDir?: string): Role[]; export declare function resolveTaskRoute(ctx: ExtensionContext, profileName: ProfileName, agentDir?: string): ResolvedTaskRoute; export declare function resolveRoleSkills(pi: Pick, role: Role): ResolvedRoleSkills; /** Resolve all enabled package resources selected by one Role's extension sources. */ export declare function resolveRolePackageResources(role: Role, ctx: Pick): Promise<{ extensions: string[]; skills: string[]; prompts: string[]; themes: string[]; }>; export declare function createRoleLaunch(pi: Pick, ctx: Pick, input: CreateRoleLaunchInput): ResolvedRoleLaunch; export declare function resolveRoleLaunch(pi: Pick, ctx: ExtensionContext, input: ResolveRoleLaunchInput): ResolvedRoleLaunch; /** Prepare a resolved or resolvable Role launch while keeping its system prompt out of argv. */ export declare function prepareRoleLaunch(pi: Pick, ctx: ExtensionContext, input: ResolveRoleLaunchInput): PreparedRoleLaunch; export declare function prepareRoleLaunch(pi: Pick, ctx: ExtensionContext, input: CreateRoleLaunchInput): PreparedRoleLaunch; /** Resolve and prepare a configured Role with its package-owned resources. */ export declare function resolveConfiguredRoleLaunch(pi: Pick, ctx: ExtensionContext, input: ResolveConfiguredRoleLaunchInput): Promise; /** Restore the system prompt pair after a caller has prepared its launch argv. */ export declare function finalizeRoleLaunch(prepared: PreparedRoleLaunch): ResolvedRoleLaunch;