The OpenAI Agents SDK adapter (@deedglass/sdk/openai-agents)
Tested with @openai/agents 0.18.0 (2026-10-04), invoking tools the way the runner does
(invoke(runContext, inputJson)); the peer range is >=0.18 <1.
import { Agent, run, tool } from '@openai/agents';import { Deedglass } from '@deedglass/sdk';import { governTool, deedglassTools } from '@deedglass/sdk/openai-agents';
const dg = new Deedglass();const refund = governTool(tool({ name: 'refund_customer', parameters, execute }), { client: dg, connector: 'billing' });const agent = new Agent({ name: 'support', tools: [refund, ...(await deedglassTools(dg))] });governTool(tool, options)returns a newFunctionToolwhoseinvokeparses the JSON input, runs the proxy flow, then calls the originalinvokeonce, only when authorized.deedglassTools(client)buildstool({ name, parameters: input_schema, strict: false, execute })for each connector tool. Names fit^[a-zA-Z0-9_-]{1,64}$(github.create_issuebecomesgithub__create_issue); a collision or a longer name is refused.- Pending and denied return their sentence to the model by default.
- The Agents SDK’s
needsApprovalinterrupts the run for your own UI; Deedglass approvals go to the org’s approvers and are sealed. They compose.