refactor(plugin): rename session HTTP hook
This commit is contained in:
parent
3a7f507135
commit
a21598901d
6 changed files with 13 additions and 12 deletions
|
|
@ -225,7 +225,7 @@ export const OpenAIPlugin = define({
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
yield* ctx.session.hook("request", (evt) =>
|
yield* ctx.session.hook("http", (evt) =>
|
||||||
Effect.sync(() => {
|
Effect.sync(() => {
|
||||||
if (!chatgpt || evt.model.providerID !== Provider.ID.openai) return
|
if (!chatgpt || evt.model.providerID !== Provider.ID.openai) return
|
||||||
const url = new URL(evt.url)
|
const url = new URL(evt.url)
|
||||||
|
|
|
||||||
|
|
@ -222,7 +222,7 @@ export const layer = Layer.effect(
|
||||||
const options: StreamOptions = {
|
const options: StreamOptions = {
|
||||||
transform: (request) =>
|
transform: (request) =>
|
||||||
hooks
|
hooks
|
||||||
.trigger("session", "request", {
|
.trigger("session", "http", {
|
||||||
sessionID: session.id,
|
sessionID: session.id,
|
||||||
agent: agent.id,
|
agent: agent.id,
|
||||||
model: resolved.ref,
|
model: resolved.ref,
|
||||||
|
|
|
||||||
|
|
@ -100,7 +100,7 @@ describe("OpenAIPlugin", () => {
|
||||||
})
|
})
|
||||||
yield* addPlugin()
|
yield* addPlugin()
|
||||||
|
|
||||||
const request = yield* (yield* PluginHooks.Service).trigger("session", "request", {
|
const request = yield* (yield* PluginHooks.Service).trigger("session", "http", {
|
||||||
sessionID: Session.ID.make("ses_test"),
|
sessionID: Session.ID.make("ses_test"),
|
||||||
agent: Agent.ID.make("build"),
|
agent: Agent.ID.make("build"),
|
||||||
model: Model.Ref.make({ providerID: Provider.ID.openai, id: Model.ID.make("gpt-5.5") }),
|
model: Model.Ref.make({ providerID: Provider.ID.openai, id: Model.ID.make("gpt-5.5") }),
|
||||||
|
|
@ -109,7 +109,7 @@ describe("OpenAIPlugin", () => {
|
||||||
headers: {},
|
headers: {},
|
||||||
body: "{}",
|
body: "{}",
|
||||||
})
|
})
|
||||||
const custom = yield* (yield* PluginHooks.Service).trigger("session", "request", {
|
const custom = yield* (yield* PluginHooks.Service).trigger("session", "http", {
|
||||||
sessionID: Session.ID.make("ses_test"),
|
sessionID: Session.ID.make("ses_test"),
|
||||||
agent: Agent.ID.make("build"),
|
agent: Agent.ID.make("build"),
|
||||||
model: Model.Ref.make({ providerID: Provider.ID.make("custom-openai"), id: Model.ID.make("gpt-5.5") }),
|
model: Model.Ref.make({ providerID: Provider.ID.make("custom-openai"), id: Model.ID.make("gpt-5.5") }),
|
||||||
|
|
@ -118,7 +118,7 @@ describe("OpenAIPlugin", () => {
|
||||||
headers: {},
|
headers: {},
|
||||||
body: "{}",
|
body: "{}",
|
||||||
})
|
})
|
||||||
const proxy = yield* (yield* PluginHooks.Service).trigger("session", "request", {
|
const proxy = yield* (yield* PluginHooks.Service).trigger("session", "http", {
|
||||||
sessionID: Session.ID.make("ses_test"),
|
sessionID: Session.ID.make("ses_test"),
|
||||||
agent: Agent.ID.make("build"),
|
agent: Agent.ID.make("build"),
|
||||||
model: Model.Ref.make({ providerID: Provider.ID.openai, id: Model.ID.make("gpt-5.5") }),
|
model: Model.Ref.make({ providerID: Provider.ID.openai, id: Model.ID.make("gpt-5.5") }),
|
||||||
|
|
@ -184,7 +184,7 @@ describe("OpenAIPlugin", () => {
|
||||||
})
|
})
|
||||||
yield* addPlugin()
|
yield* addPlugin()
|
||||||
|
|
||||||
const request = yield* (yield* PluginHooks.Service).trigger("session", "request", {
|
const request = yield* (yield* PluginHooks.Service).trigger("session", "http", {
|
||||||
sessionID: Session.ID.make("ses_test"),
|
sessionID: Session.ID.make("ses_test"),
|
||||||
agent: Agent.ID.make("build"),
|
agent: Agent.ID.make("build"),
|
||||||
model: Model.Ref.make({ providerID: Provider.ID.openai, id: Model.ID.make("gpt-5.5") }),
|
model: Model.Ref.make({ providerID: Provider.ID.openai, id: Model.ID.make("gpt-5.5") }),
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ export interface SessionContext {
|
||||||
tools: Record<string, { description: string; input: JsonSchema.JsonSchema }>
|
tools: Record<string, { description: string; input: JsonSchema.JsonSchema }>
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface SessionRequest extends HttpRequest {
|
export interface SessionHttp extends HttpRequest {
|
||||||
readonly sessionID: Session.ID
|
readonly sessionID: Session.ID
|
||||||
readonly agent: Agent.ID
|
readonly agent: Agent.ID
|
||||||
readonly model: Model.Ref
|
readonly model: Model.Ref
|
||||||
|
|
@ -24,7 +24,7 @@ export interface SessionRequest extends HttpRequest {
|
||||||
|
|
||||||
export interface SessionHooks {
|
export interface SessionHooks {
|
||||||
readonly context: SessionContext
|
readonly context: SessionContext
|
||||||
readonly request: SessionRequest
|
readonly http: SessionHttp
|
||||||
}
|
}
|
||||||
|
|
||||||
export type SessionDomain = Pick<
|
export type SessionDomain = Pick<
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ export interface SessionContext {
|
||||||
tools: Record<string, { description: string; input: JsonSchema.JsonSchema }>
|
tools: Record<string, { description: string; input: JsonSchema.JsonSchema }>
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface SessionRequest extends HttpRequest {
|
export interface SessionHttp extends HttpRequest {
|
||||||
readonly sessionID: Session.ID
|
readonly sessionID: Session.ID
|
||||||
readonly agent: Agent.ID
|
readonly agent: Agent.ID
|
||||||
readonly model: Model.Ref
|
readonly model: Model.Ref
|
||||||
|
|
@ -24,7 +24,7 @@ export interface SessionRequest extends HttpRequest {
|
||||||
|
|
||||||
export interface SessionHooks {
|
export interface SessionHooks {
|
||||||
readonly context: SessionContext
|
readonly context: SessionContext
|
||||||
readonly request: SessionRequest
|
readonly http: SessionHttp
|
||||||
}
|
}
|
||||||
|
|
||||||
export type SessionDomain = Pick<
|
export type SessionDomain = Pick<
|
||||||
|
|
|
||||||
5
packages/www/content/docs/build/plugins.mdx
vendored
5
packages/www/content/docs/build/plugins.mdx
vendored
|
|
@ -246,7 +246,8 @@ mutable fields:
|
||||||
| ------------------------------------------- | ------------------------------------------------------------------------------ |
|
| ------------------------------------------- | ------------------------------------------------------------------------------ |
|
||||||
| `ctx.aisdk.hook("sdk", callback)` | `sdk`, after inspecting `model`, `package`, and `options` |
|
| `ctx.aisdk.hook("sdk", callback)` | `sdk`, after inspecting `model`, `package`, and `options` |
|
||||||
| `ctx.aisdk.hook("language", callback)` | `language`, after inspecting `model`, `sdk`, and `options` |
|
| `ctx.aisdk.hook("language", callback)` | `language`, after inspecting `model`, `sdk`, and `options` |
|
||||||
| `ctx.session.hook("request", callback)` | `system`, `messages`, and the `tools` record immediately before model dispatch |
|
| `ctx.session.hook("context", callback)` | `system`, `messages`, and the `tools` record immediately before model dispatch |
|
||||||
|
| `ctx.session.hook("http", callback)` | `url`, `headers`, and `body` before the model request is sent |
|
||||||
| `ctx.tool.hook("execute.before", callback)` | `input`, before the selected tool executes |
|
| `ctx.tool.hook("execute.before", callback)` | `input`, before the selected tool executes |
|
||||||
| `ctx.tool.hook("execute.after", callback)` | Terminal `result` on success or `error` on failure |
|
| `ctx.tool.hook("execute.after", callback)` | Terminal `result` on success or `error` on failure |
|
||||||
|
|
||||||
|
|
@ -259,7 +260,7 @@ import { Plugin } from "@opencode-ai/plugin"
|
||||||
export default Plugin.define({
|
export default Plugin.define({
|
||||||
id: "acme.guards",
|
id: "acme.guards",
|
||||||
setup: async (ctx) => {
|
setup: async (ctx) => {
|
||||||
await ctx.session.hook("request", (event) => {
|
await ctx.session.hook("context", (event) => {
|
||||||
delete event.tools.write
|
delete event.tools.write
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue