/** * `vigiles/adapter` — the harness-adapter authoring kit. * * Everything you need to teach vigiles a new harness, in one import: the five * port interfaces to implement, the `HarnessAdapter` bundle that groups them, * the conformance kit to validate yours, and the registry the CLI detects * through. vigiles ships a Claude Code adapter; building your own is welcome and * supported — see `docs/authoring-an-adapter.md`. * * import { * type HarnessAdapter, type HarnessDialect, type PluginLayout, * type HarnessRuntime, type HookProtocol, type ModelMock, * assertAdapterConformance, * } from "vigiles/adapter"; * * export const myHarnessAdapter: HarnessAdapter = { name: "my-harness", … }; */ export type { HarnessAdapter, AdapterCapabilities } from "./core/adapter.js"; export type { HarnessDialect } from "./core/dialect.js"; export type { PluginLayout, SurfaceDirs, SurfaceKind } from "./core/layout.js"; export type { OutputStyle, OutputStyleRules } from "./core/output-style.js"; export type { ModelRequest } from "./core/harness-driver.js"; export { executableSourceDirs, materializePrefix, surfaceDirs, } from "./core/layout.js"; /** * The instruction-chain vocabulary `PluginLayout.instructionChain` speaks. * * Exported because the method is on the port: without these an adapter author * cannot write a return type, which makes the interface unimplementable from * outside this package. `EMPTY_CHAIN` is the honest answer for a harness with no * instruction surface — spelling out five empty arrays at each such site invites * one of them to be forgotten. */ export type { InstructionChain, InstructionRole, InstructionScope, LoadedInstruction, NamedImport, NotLoadedReason, PatternFrom, UnloadedInstruction, } from "./core/instruction-chain.js"; export { EMPTY_CHAIN } from "./core/instruction-chain.js"; /** * ⚠️ `SettingsCodec` was in the same position and is exported here for the same * reason: `PluginLayout.settings` has been typed as one since the codec landed, * and the authoring barrel never re-exported it, so `docs/adapter-api.md` * documents a field whose type a third party could not name. One line, and the * alternative is a port that cannot be implemented from outside. */ export type { SettingsCodec } from "./core/settings-codec.js"; export { jsonSettingsCodec, tomlSettingsCodec } from "./core/settings-codec.js"; export type { HarnessRuntime, RunEnvPolicy } from "./core/runtime.js"; export type { HookProtocol } from "./core/hook-protocol.js"; export type { ModelMock } from "./core/model-mock.js"; /** * The `claims(path)` helper every shipped adapter uses: derive "is this path * mine?" from the adapter's own `PluginLayout`, so a layout that moves takes its * claim with it. Override `claims` by hand only for a location the layout fields * cannot express. See `core/surface-discovery.ts` for why a claim is a question * about a PATH and never about a root. */ export { layoutClaims } from "./core/surface-discovery.js"; export { checkAdapterConformance, assertAdapterConformance, assertAdapterLoadsHooks, assertHarnessTestable, type ConformanceResult, } from "./adapter-conformance.js"; export { ADAPTERS, defaultAdapter, detectAdapter, detectAdapterResult, resolveAdapter, getAdapter, type DetectResult, type HarnessName, } from "./adapter-registry.js"; //# sourceMappingURL=adapter.d.ts.map