/** * OpenCode 2.x 兼容层 * * OpenCode 2.0 重写了插件 API:v1 的 `(input, options) => Hooks` 函数形态被 * `{ id, setup(ctx) }` 定义取代,全部 hook 也从"返回对象上的键"改成了 * 必须显式注册的 domain(`ctx.agent.transform` / `ctx.tool.hook` / ...)。 * * 本模块只做一件事:把 v2 的 `ctx` 反向适配成 v1 的 `PluginInput` 形状, * 让 `src/index.ts` 里的编排逻辑(上下文引擎、任务追踪、编排引擎、council) * 无需为每个 client 调用点改写。适配是**窄的**——只覆盖 v1 实际用到的 * `session.create/abort/messages/prompt` 四个方法,不做通用代理。 * * 之所以不直接改写业务代码:那些模块有完整的单元测试覆盖,把它们全部 * 迁到 v2 的 `{ sessionID }` 参数风格会引入大量与本次移植无关的回归面。 */ /** v1 风格的 session 调用入参(`{ path, body, query }`) */ export interface V1CallOptions { path?: Record; body?: Record; query?: Record; } /** v2 domain 上我们实际依赖的最小方法集 */ export interface V2SessionLike { create?: (input: Record) => Promise; remove?: (input: Record) => Promise; interrupt?: (input: Record) => Promise; prompt?: (input: Record) => Promise; context?: (input: Record) => Promise; } export interface V2ContextLike { session?: V2SessionLike & Record; location?: { directory?: string; }; agent?: unknown; tool?: unknown; event?: unknown; permission?: unknown; shell?: unknown; skill?: unknown; command?: unknown; options?: Record; } /** * 构造 v1 形状的 `PluginInput`。 * * 只填 v1 业务代码真正读到的字段;`project` / `worktree` / `serverUrl` / `$` * 在 v2 里没有对应物,给安全占位值而不是让调用方崩溃——这些字段在当前 * 业务路径里未被解引用(已核对 src/ 下全部 `input.` 访问点)。 */ export declare function createV1Input(ctx: V2ContextLike): Record; //# sourceMappingURL=compat.d.ts.map