import type { ObservationCache } from "./cache.js"; import type { Metrics } from "./metrics.js"; import type { GovernorTracker } from "../session/tracker.js"; import type { McpToolResult } from "./receipt.js"; import type { FileSystem } from "../ports/filesystem.js"; import type { JsonCodec } from "../ports/codec.js"; import type { ProcessRunner } from "../ports/process-runner.js"; import type { GitClient } from "../ports/git.js"; import type { StructuralReadingPort } from "../ports/structural-reading.js"; import type { WarpContext } from "../warp/context.js"; import type { RepoObservation } from "./repo-state.js"; import type { RunCaptureConfig } from "./run-capture-config.js"; import type { RuntimeObservabilityState, ToolCallFootprintRegion } from "./runtime-observability.js"; import type { RuntimeCausalContext } from "./runtime-causal-context.js"; import type { RuntimeWorkspaceOverlayFooting } from "./runtime-workspace-overlay.js"; import type { PersistedLocalActivityWindow, PersistedLocalHistoryAttachDeclaration, RepoConcurrencySummary, PersistedLocalHistorySummary } from "./persisted-local-history.js"; import type { McpToolName } from "../contracts/output-schemas.js"; import type { DaemonSessionView, DaemonStatusView, AuthorizedWorkspaceView, WorkspaceAuthorizeRequest, WorkspaceAuthorizeResult, WorkspaceRevokeResult } from "./daemon-control-plane.js"; import type { DaemonRepoFilter, DaemonRepoListView } from "./daemon-repos.js"; import type { MonitorActionResult, MonitorStartRequest, MonitorStatusView } from "./persistent-monitor-runtime.js"; import type { WorkspaceActionResult, CausalAttachResult, WorkspaceBindRequest, WorkspaceListOpenedResult, WorkspaceOpenRequest, WorkspaceOpenResult, WorkspaceStatus } from "./workspace-router.js"; import type { z } from "zod"; export type ToolHandler = (args: Record, ctx: ToolContext) => McpToolResult | Promise; export interface ToolDefinition { readonly name: McpToolName; readonly description: string; readonly schema?: Record; readonly policyCheck?: boolean; readonly createHandler: () => ToolHandler; } export interface ToolContext { readonly projectRoot: string; readonly graftDir: string; readonly graftignorePatterns: readonly string[]; readonly governor: GovernorTracker; readonly cache: ObservationCache; readonly metrics: Metrics; readonly fs: FileSystem; readonly codec: JsonCodec; readonly process: ProcessRunner; readonly git: GitClient; readonly runCapture: RunCaptureConfig; readonly observability: RuntimeObservabilityState; respond(tool: McpToolName, data: Record): McpToolResult; recordFootprint(entry: { readonly paths?: readonly string[]; readonly symbols?: readonly string[]; readonly regions?: readonly ToolCallFootprintRegion[]; }): void; resolvePath(relative: string): string; getWarp(): Promise; getStructuralReadingPort(): StructuralReadingPort; getRepoState(): RepoObservation; getCausalContext(): RuntimeCausalContext; getWorkspaceOverlayFooting(): Promise; getPersistedLocalHistorySummary(): Promise; getPersistedLocalActivityWindow(limit: number): Promise; getRepoConcurrencySummary(): Promise; declareCausalAttach(request: PersistedLocalHistoryAttachDeclaration): Promise; getWorkspaceStatus(): WorkspaceStatus; openWorkspace(request: WorkspaceOpenRequest): Promise; listOpenedWorkspaces(): Promise; bindWorkspace(request: WorkspaceBindRequest, actionName: string): Promise; rebindWorkspace(request: WorkspaceBindRequest, actionName: string): Promise; getDaemonStatus(): Promise; listDaemonRepos(filter: DaemonRepoFilter): Promise; listDaemonSessions(): Promise; listDaemonMonitors(): Promise; startMonitor(request: MonitorStartRequest): Promise; pauseMonitor(request: WorkspaceBindRequest): Promise; resumeMonitor(request: WorkspaceBindRequest): Promise; stopMonitor(request: WorkspaceBindRequest): Promise; nudgeMonitor(request: WorkspaceBindRequest): Promise; listWorkspaceAuthorizations(): Promise; authorizeWorkspace(request: WorkspaceAuthorizeRequest): Promise; revokeWorkspace(request: WorkspaceBindRequest): Promise; } /** * Resolve a user-provided path against projectRoot with traversal guard. * Both absolute and relative paths are confined to the project root. * Symlinks are resolved before the confinement check to prevent escapes. */ export declare function createPathResolver(projectRoot: string): (input: string) => string; /** * Runtime guard: asserts that the supplied value satisfies the ToolContext * shape. Used at composition-root boundaries to catch wiring errors early. */ export declare function assertToolContext(value: unknown): asserts value is ToolContext; //# sourceMappingURL=context.d.ts.map