← Public packages
@kody/codex
Create and manage OpenAI Agents API (Codex harness) cloud agent sessions.
src/sessions/get.ts
50 lines · 1.5 KB · TypeScriptimport { boolean, object, optional, parse, string } from 'remix/data-schema'
import { agentsFetch, pickAuth, requireSessionId } from '../client.ts'
const getInput = object(
{
sessionId: string(),
apiKeySecret: optional(string()),
dryRun: optional(boolean()),
},
{ unknownKeys: 'error' },
)
/**
* Retrieve one Agents API session (`GET /v1/agents/sessions/{session_id}`).
* Use after disconnects or on `requires_action` to inspect status and
* `required_actions`.
*
* @param raw.sessionId - Session id (`sess_…`)
* @param raw.dryRun - Preview without calling OpenAI
* @param raw.apiKeySecret - Optional alternate secret name
* @returns Session object (status, agent, environment, required_actions, …)
*
* @example
* import getSession from 'kody:@kody/codex/sessions/get'
* const session = await getSession({ sessionId: 'sess_123' })
*/
export default async function getSession(raw: unknown = {}) {
const input = parse(getInput, raw ?? {})
const auth = pickAuth(input)
const sessionId = requireSessionId(input.sessionId)
const path = `/agents/sessions/${encodeURIComponent(sessionId)}`
if (input.dryRun === true) {
return {
dryRun: true as const,
method: 'GET' as const,
path: `/v1${path}`,
sessionId,
note: 'Would retrieve session status, agent, environment, and required_actions.',
}
}
const response = await agentsFetch(path, { ...auth, method: 'GET' })
return {
ok: true,
sessionId,
session: response.body,
status: response.status,
}
}