Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 13 additions & 15 deletions packages/opencode/src/session/prompt.ts
Original file line number Diff line number Diff line change
Expand Up @@ -826,19 +826,18 @@ export namespace SessionPrompt {
description: item.description,
inputSchema: jsonSchema(schema as any),
async execute(args, options) {
const ctx = context(args, options)
const out = { args }
await Plugin.trigger(
"tool.execute.before",
{
tool: item.id,
sessionID: ctx.sessionID,
callID: ctx.callID,
},
{
args,
sessionID: input.session.id,
callID: options.toolCallId,
},
out,
)
const result = await item.execute(args, ctx)
const ctx = context(out.args, options)
const result = await item.execute(out.args, ctx)
const output = {
...result,
attachments: result.attachments?.map((attachment) => ({
Expand All @@ -854,7 +853,7 @@ export namespace SessionPrompt {
tool: item.id,
sessionID: ctx.sessionID,
callID: ctx.callID,
args,
args: out.args,
},
output,
)
Expand All @@ -872,19 +871,18 @@ export namespace SessionPrompt {
item.inputSchema = jsonSchema(transformed)
// Wrap execute to add plugin hooks and format output
item.execute = async (args, opts) => {
const ctx = context(args, opts)
const out = { args }

await Plugin.trigger(
"tool.execute.before",
{
tool: key,
sessionID: ctx.sessionID,
sessionID: input.session.id,
callID: opts.toolCallId,
},
{
args,
},
out,
)
const ctx = context(out.args, opts)

await ctx.ask({
permission: key,
Expand All @@ -893,15 +891,15 @@ export namespace SessionPrompt {
always: ["*"],
})

const result = await execute(args, opts)
const result = await execute(out.args, opts)

await Plugin.trigger(
"tool.execute.after",
{
tool: key,
sessionID: ctx.sessionID,
callID: opts.toolCallId,
args,
args: out.args,
},
result,
)
Expand Down
Loading