fix(types): restore CI compatibility for plugin hooks and tool context
This commit is contained in:
@@ -2,7 +2,17 @@ import type { Plugin, ToolDefinition } from "@opencode-ai/plugin"
|
||||
|
||||
export type PluginContext = Parameters<Plugin>[0]
|
||||
export type PluginInstance = Awaited<ReturnType<Plugin>>
|
||||
export type PluginInterface = Omit<PluginInstance, "experimental.session.compacting">
|
||||
|
||||
type ChatHeadersHook = PluginInstance extends { "chat.headers"?: infer T }
|
||||
? T
|
||||
: (input: unknown, output: unknown) => Promise<void>
|
||||
|
||||
export type PluginInterface = Omit<
|
||||
PluginInstance,
|
||||
"experimental.session.compacting" | "chat.headers"
|
||||
> & {
|
||||
"chat.headers"?: ChatHeadersHook
|
||||
}
|
||||
|
||||
export type ToolsRecord = Record<string, ToolDefinition>
|
||||
|
||||
|
||||
@@ -16,6 +16,10 @@ type ToolContextWithCallID = ToolContext & {
|
||||
call_id?: string
|
||||
}
|
||||
|
||||
type ToolContextWithMetadata = ToolContextWithCallID & {
|
||||
metadata?: (value: unknown) => void
|
||||
}
|
||||
|
||||
function resolveToolCallID(ctx: ToolContextWithCallID): string | undefined {
|
||||
if (typeof ctx.callID === "string" && ctx.callID.trim() !== "") return ctx.callID
|
||||
if (typeof ctx.callId === "string" && ctx.callId.trim() !== "") return ctx.callId
|
||||
@@ -135,6 +139,7 @@ Use \\n in text to represent literal newlines.`,
|
||||
},
|
||||
execute: async (args: HashlineEditArgs, context: ToolContext) => {
|
||||
try {
|
||||
const metadataContext = context as ToolContextWithMetadata
|
||||
const filePath = args.filePath
|
||||
const { edits } = args
|
||||
|
||||
@@ -179,9 +184,11 @@ Use \\n in text to represent literal newlines.`,
|
||||
},
|
||||
}
|
||||
|
||||
context.metadata(meta)
|
||||
if (typeof metadataContext.metadata === "function") {
|
||||
metadataContext.metadata(meta)
|
||||
}
|
||||
|
||||
const callID = resolveToolCallID(context)
|
||||
const callID = resolveToolCallID(metadataContext)
|
||||
if (callID) {
|
||||
storeToolMetadata(context.sessionID, callID, meta)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user