fix(types): restore CI compatibility for plugin hooks and tool context
This commit is contained in:
parent
850fb0378e
commit
6e82ef2384
@ -2,7 +2,17 @@ import type { Plugin, ToolDefinition } from "@opencode-ai/plugin"
|
|||||||
|
|
||||||
export type PluginContext = Parameters<Plugin>[0]
|
export type PluginContext = Parameters<Plugin>[0]
|
||||||
export type PluginInstance = Awaited<ReturnType<Plugin>>
|
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>
|
export type ToolsRecord = Record<string, ToolDefinition>
|
||||||
|
|
||||||
|
|||||||
@ -16,6 +16,10 @@ type ToolContextWithCallID = ToolContext & {
|
|||||||
call_id?: string
|
call_id?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ToolContextWithMetadata = ToolContextWithCallID & {
|
||||||
|
metadata?: (value: unknown) => void
|
||||||
|
}
|
||||||
|
|
||||||
function resolveToolCallID(ctx: ToolContextWithCallID): string | undefined {
|
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
|
||||||
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) => {
|
execute: async (args: HashlineEditArgs, context: ToolContext) => {
|
||||||
try {
|
try {
|
||||||
|
const metadataContext = context as ToolContextWithMetadata
|
||||||
const filePath = args.filePath
|
const filePath = args.filePath
|
||||||
const { edits } = args
|
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) {
|
if (callID) {
|
||||||
storeToolMetadata(context.sessionID, callID, meta)
|
storeToolMetadata(context.sessionID, callID, meta)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user