@ocxp/client 0.2.0 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +12 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +72 -7
- package/dist/index.d.ts +72 -7
- package/dist/index.js +12 -8
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/generated/core/bodySerializer.gen.ts","../src/generated/core/serverSentEvents.gen.ts","../src/generated/core/pathSerializer.gen.ts","../src/generated/core/utils.gen.ts","../src/generated/core/auth.gen.ts","../src/generated/client/utils.gen.ts","../src/generated/client/client.gen.ts","../src/generated/client.gen.ts","../src/generated/sdk.gen.ts","../src/client.ts","../src/path.ts","../src/path-service.ts","../src/websocket.ts","../src/types/errors.ts","../src/schemas/common.ts","../src/schemas/content.ts","../src/schemas/session.ts","../src/schemas/project.ts","../src/schemas/repository.ts","../src/schemas/auth.ts","../src/schemas/discovery.ts","../src/schemas/websocket.ts","../src/schemas/github.ts"],"names":["joinedValues","config","request","error","finalError","url","client","OCXPErrorCode","z"],"mappings":"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","file":"index.cjs","sourcesContent":["// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { ArrayStyle, ObjectStyle, SerializerOptions } from './pathSerializer.gen';\n\nexport type QuerySerializer = (query: Record<string, unknown>) => string;\n\nexport type BodySerializer = (body: any) => any;\n\ntype QuerySerializerOptionsObject = {\n allowReserved?: boolean;\n array?: Partial<SerializerOptions<ArrayStyle>>;\n object?: Partial<SerializerOptions<ObjectStyle>>;\n};\n\nexport type QuerySerializerOptions = QuerySerializerOptionsObject & {\n /**\n * Per-parameter serialization overrides. When provided, these settings\n * override the global array/object settings for specific parameter names.\n */\n parameters?: Record<string, QuerySerializerOptionsObject>;\n};\n\nconst serializeFormDataPair = (data: FormData, key: string, value: unknown): void => {\n if (typeof value === 'string' || value instanceof Blob) {\n data.append(key, value);\n } else if (value instanceof Date) {\n data.append(key, value.toISOString());\n } else {\n data.append(key, JSON.stringify(value));\n }\n};\n\nconst serializeUrlSearchParamsPair = (data: URLSearchParams, key: string, value: unknown): void => {\n if (typeof value === 'string') {\n data.append(key, value);\n } else {\n data.append(key, JSON.stringify(value));\n }\n};\n\nexport const formDataBodySerializer = {\n bodySerializer: <T extends Record<string, any> | Array<Record<string, any>>>(\n body: T\n ): FormData => {\n const data = new FormData();\n\n Object.entries(body).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeFormDataPair(data, key, v));\n } else {\n serializeFormDataPair(data, key, value);\n }\n });\n\n return data;\n },\n};\n\nexport const jsonBodySerializer = {\n bodySerializer: <T>(body: T): string =>\n JSON.stringify(body, (_key, value) => (typeof value === 'bigint' ? value.toString() : value)),\n};\n\nexport const urlSearchParamsBodySerializer = {\n bodySerializer: <T extends Record<string, any> | Array<Record<string, any>>>(body: T): string => {\n const data = new URLSearchParams();\n\n Object.entries(body).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeUrlSearchParamsPair(data, key, v));\n } else {\n serializeUrlSearchParamsPair(data, key, value);\n }\n });\n\n return data.toString();\n },\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Config } from './types.gen';\n\nexport type ServerSentEventsOptions<TData = unknown> = Omit<RequestInit, 'method'> &\n Pick<Config, 'method' | 'responseTransformer' | 'responseValidator'> & {\n /**\n * Fetch API implementation. You can use this option to provide a custom\n * fetch instance.\n *\n * @default globalThis.fetch\n */\n fetch?: typeof fetch;\n /**\n * Implementing clients can call request interceptors inside this hook.\n */\n onRequest?: (url: string, init: RequestInit) => Promise<Request>;\n /**\n * Callback invoked when a network or parsing error occurs during streaming.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @param error The error that occurred.\n */\n onSseError?: (error: unknown) => void;\n /**\n * Callback invoked when an event is streamed from the server.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @param event Event streamed from the server.\n * @returns Nothing (void).\n */\n onSseEvent?: (event: StreamEvent<TData>) => void;\n serializedBody?: RequestInit['body'];\n /**\n * Default retry delay in milliseconds.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @default 3000\n */\n sseDefaultRetryDelay?: number;\n /**\n * Maximum number of retry attempts before giving up.\n */\n sseMaxRetryAttempts?: number;\n /**\n * Maximum retry delay in milliseconds.\n *\n * Applies only when exponential backoff is used.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @default 30000\n */\n sseMaxRetryDelay?: number;\n /**\n * Optional sleep function for retry backoff.\n *\n * Defaults to using `setTimeout`.\n */\n sseSleepFn?: (ms: number) => Promise<void>;\n url: string;\n };\n\nexport interface StreamEvent<TData = unknown> {\n data: TData;\n event?: string;\n id?: string;\n retry?: number;\n}\n\nexport type ServerSentEventsResult<TData = unknown, TReturn = void, TNext = unknown> = {\n stream: AsyncGenerator<\n TData extends Record<string, unknown> ? TData[keyof TData] : TData,\n TReturn,\n TNext\n >;\n};\n\nexport const createSseClient = <TData = unknown>({\n onRequest,\n onSseError,\n onSseEvent,\n responseTransformer,\n responseValidator,\n sseDefaultRetryDelay,\n sseMaxRetryAttempts,\n sseMaxRetryDelay,\n sseSleepFn,\n url,\n ...options\n}: ServerSentEventsOptions): ServerSentEventsResult<TData> => {\n let lastEventId: string | undefined;\n\n const sleep = sseSleepFn ?? ((ms: number) => new Promise((resolve) => setTimeout(resolve, ms)));\n\n const createStream = async function* () {\n let retryDelay: number = sseDefaultRetryDelay ?? 3000;\n let attempt = 0;\n const signal = options.signal ?? new AbortController().signal;\n\n while (true) {\n if (signal.aborted) break;\n\n attempt++;\n\n const headers =\n options.headers instanceof Headers\n ? options.headers\n : new Headers(options.headers as Record<string, string> | undefined);\n\n if (lastEventId !== undefined) {\n headers.set('Last-Event-ID', lastEventId);\n }\n\n try {\n const requestInit: RequestInit = {\n redirect: 'follow',\n ...options,\n body: options.serializedBody,\n headers,\n signal,\n };\n let request = new Request(url, requestInit);\n if (onRequest) {\n request = await onRequest(url, requestInit);\n }\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = options.fetch ?? globalThis.fetch;\n const response = await _fetch(request);\n\n if (!response.ok) throw new Error(`SSE failed: ${response.status} ${response.statusText}`);\n\n if (!response.body) throw new Error('No body in SSE response');\n\n const reader = response.body.pipeThrough(new TextDecoderStream()).getReader();\n\n let buffer = '';\n\n const abortHandler = () => {\n try {\n reader.cancel();\n } catch {\n // noop\n }\n };\n\n signal.addEventListener('abort', abortHandler);\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer += value;\n // Normalize line endings: CRLF -> LF, then CR -> LF\n buffer = buffer.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n\n const chunks = buffer.split('\\n\\n');\n buffer = chunks.pop() ?? '';\n\n for (const chunk of chunks) {\n const lines = chunk.split('\\n');\n const dataLines: Array<string> = [];\n let eventName: string | undefined;\n\n for (const line of lines) {\n if (line.startsWith('data:')) {\n dataLines.push(line.replace(/^data:\\s*/, ''));\n } else if (line.startsWith('event:')) {\n eventName = line.replace(/^event:\\s*/, '');\n } else if (line.startsWith('id:')) {\n lastEventId = line.replace(/^id:\\s*/, '');\n } else if (line.startsWith('retry:')) {\n const parsed = Number.parseInt(line.replace(/^retry:\\s*/, ''), 10);\n if (!Number.isNaN(parsed)) {\n retryDelay = parsed;\n }\n }\n }\n\n let data: unknown;\n let parsedJson = false;\n\n if (dataLines.length) {\n const rawData = dataLines.join('\\n');\n try {\n data = JSON.parse(rawData);\n parsedJson = true;\n } catch {\n data = rawData;\n }\n }\n\n if (parsedJson) {\n if (responseValidator) {\n await responseValidator(data);\n }\n\n if (responseTransformer) {\n data = await responseTransformer(data);\n }\n }\n\n onSseEvent?.({\n data,\n event: eventName,\n id: lastEventId,\n retry: retryDelay,\n });\n\n if (dataLines.length) {\n yield data as any;\n }\n }\n }\n } finally {\n signal.removeEventListener('abort', abortHandler);\n reader.releaseLock();\n }\n\n break; // exit loop on normal completion\n } catch (error) {\n // connection failed or aborted; retry after delay\n onSseError?.(error);\n\n if (sseMaxRetryAttempts !== undefined && attempt >= sseMaxRetryAttempts) {\n break; // stop after firing error\n }\n\n // exponential backoff: double retry each attempt, cap at 30s\n const backoff = Math.min(retryDelay * 2 ** (attempt - 1), sseMaxRetryDelay ?? 30000);\n await sleep(backoff);\n }\n }\n };\n\n const stream = createStream();\n\n return { stream };\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\ninterface SerializeOptions<T> extends SerializePrimitiveOptions, SerializerOptions<T> {}\n\ninterface SerializePrimitiveOptions {\n allowReserved?: boolean;\n name: string;\n}\n\nexport interface SerializerOptions<T> {\n /**\n * @default true\n */\n explode: boolean;\n style: T;\n}\n\nexport type ArrayStyle = 'form' | 'spaceDelimited' | 'pipeDelimited';\nexport type ArraySeparatorStyle = ArrayStyle | MatrixStyle;\ntype MatrixStyle = 'label' | 'matrix' | 'simple';\nexport type ObjectStyle = 'form' | 'deepObject';\ntype ObjectSeparatorStyle = ObjectStyle | MatrixStyle;\n\ninterface SerializePrimitiveParam extends SerializePrimitiveOptions {\n value: string;\n}\n\nexport const separatorArrayExplode = (style: ArraySeparatorStyle) => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\n\nexport const separatorArrayNoExplode = (style: ArraySeparatorStyle) => {\n switch (style) {\n case 'form':\n return ',';\n case 'pipeDelimited':\n return '|';\n case 'spaceDelimited':\n return '%20';\n default:\n return ',';\n }\n};\n\nexport const separatorObjectExplode = (style: ObjectSeparatorStyle) => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\n\nexport const serializeArrayParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n}: SerializeOptions<ArraySeparatorStyle> & {\n value: unknown[];\n}) => {\n if (!explode) {\n const joinedValues = (\n allowReserved ? value : value.map((v) => encodeURIComponent(v as string))\n ).join(separatorArrayNoExplode(style));\n switch (style) {\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n case 'simple':\n return joinedValues;\n default:\n return `${name}=${joinedValues}`;\n }\n }\n\n const separator = separatorArrayExplode(style);\n const joinedValues = value\n .map((v) => {\n if (style === 'label' || style === 'simple') {\n return allowReserved ? v : encodeURIComponent(v as string);\n }\n\n return serializePrimitiveParam({\n allowReserved,\n name,\n value: v as string,\n });\n })\n .join(separator);\n return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues;\n};\n\nexport const serializePrimitiveParam = ({\n allowReserved,\n name,\n value,\n}: SerializePrimitiveParam) => {\n if (value === undefined || value === null) {\n return '';\n }\n\n if (typeof value === 'object') {\n throw new Error(\n 'Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.'\n );\n }\n\n return `${name}=${allowReserved ? value : encodeURIComponent(value)}`;\n};\n\nexport const serializeObjectParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n valueOnly,\n}: SerializeOptions<ObjectSeparatorStyle> & {\n value: Record<string, unknown> | Date;\n valueOnly?: boolean;\n}) => {\n if (value instanceof Date) {\n return valueOnly ? value.toISOString() : `${name}=${value.toISOString()}`;\n }\n\n if (style !== 'deepObject' && !explode) {\n let values: string[] = [];\n Object.entries(value).forEach(([key, v]) => {\n values = [...values, key, allowReserved ? (v as string) : encodeURIComponent(v as string)];\n });\n const joinedValues = values.join(',');\n switch (style) {\n case 'form':\n return `${name}=${joinedValues}`;\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n default:\n return joinedValues;\n }\n }\n\n const separator = separatorObjectExplode(style);\n const joinedValues = Object.entries(value)\n .map(([key, v]) =>\n serializePrimitiveParam({\n allowReserved,\n name: style === 'deepObject' ? `${name}[${key}]` : key,\n value: v as string,\n })\n )\n .join(separator);\n return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { BodySerializer, QuerySerializer } from './bodySerializer.gen';\nimport {\n type ArraySeparatorStyle,\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from './pathSerializer.gen';\n\nexport interface PathSerializer {\n path: Record<string, unknown>;\n url: string;\n}\n\nexport const PATH_PARAM_RE = /\\{[^{}]+\\}/g;\n\nexport const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => {\n let url = _url;\n const matches = _url.match(PATH_PARAM_RE);\n if (matches) {\n for (const match of matches) {\n let explode = false;\n let name = match.substring(1, match.length - 1);\n let style: ArraySeparatorStyle = 'simple';\n\n if (name.endsWith('*')) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n\n if (name.startsWith('.')) {\n name = name.substring(1);\n style = 'label';\n } else if (name.startsWith(';')) {\n name = name.substring(1);\n style = 'matrix';\n }\n\n const value = path[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n if (Array.isArray(value)) {\n url = url.replace(match, serializeArrayParam({ explode, name, style, value }));\n continue;\n }\n\n if (typeof value === 'object') {\n url = url.replace(\n match,\n serializeObjectParam({\n explode,\n name,\n style,\n value: value as Record<string, unknown>,\n valueOnly: true,\n })\n );\n continue;\n }\n\n if (style === 'matrix') {\n url = url.replace(\n match,\n `;${serializePrimitiveParam({\n name,\n value: value as string,\n })}`\n );\n continue;\n }\n\n const replaceValue = encodeURIComponent(\n style === 'label' ? `.${value as string}` : (value as string)\n );\n url = url.replace(match, replaceValue);\n }\n }\n return url;\n};\n\nexport const getUrl = ({\n baseUrl,\n path,\n query,\n querySerializer,\n url: _url,\n}: {\n baseUrl?: string;\n path?: Record<string, unknown>;\n query?: Record<string, unknown>;\n querySerializer: QuerySerializer;\n url: string;\n}) => {\n const pathUrl = _url.startsWith('/') ? _url : `/${_url}`;\n let url = (baseUrl ?? '') + pathUrl;\n if (path) {\n url = defaultPathSerializer({ path, url });\n }\n let search = query ? querySerializer(query) : '';\n if (search.startsWith('?')) {\n search = search.substring(1);\n }\n if (search) {\n url += `?${search}`;\n }\n return url;\n};\n\nexport function getValidRequestBody(options: {\n body?: unknown;\n bodySerializer?: BodySerializer | null;\n serializedBody?: unknown;\n}) {\n const hasBody = options.body !== undefined;\n const isSerializedBody = hasBody && options.bodySerializer;\n\n if (isSerializedBody) {\n if ('serializedBody' in options) {\n const hasSerializedBody =\n options.serializedBody !== undefined && options.serializedBody !== '';\n\n return hasSerializedBody ? options.serializedBody : null;\n }\n\n // not all clients implement a serializedBody property (i.e. client-axios)\n return options.body !== '' ? options.body : null;\n }\n\n // plain/text body\n if (hasBody) {\n return options.body;\n }\n\n // no body was provided\n return undefined;\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\nexport type AuthToken = string | undefined;\n\nexport interface Auth {\n /**\n * Which part of the request do we use to send the auth?\n *\n * @default 'header'\n */\n in?: 'header' | 'query' | 'cookie';\n /**\n * Header or query parameter name.\n *\n * @default 'Authorization'\n */\n name?: string;\n scheme?: 'basic' | 'bearer';\n type: 'apiKey' | 'http';\n}\n\nexport const getAuthToken = async (\n auth: Auth,\n callback: ((auth: Auth) => Promise<AuthToken> | AuthToken) | AuthToken\n): Promise<string | undefined> => {\n const token = typeof callback === 'function' ? await callback(auth) : callback;\n\n if (!token) {\n return;\n }\n\n if (auth.scheme === 'bearer') {\n return `Bearer ${token}`;\n }\n\n if (auth.scheme === 'basic') {\n return `Basic ${btoa(token)}`;\n }\n\n return token;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { getAuthToken } from '../core/auth.gen';\nimport type { QuerySerializerOptions } from '../core/bodySerializer.gen';\nimport { jsonBodySerializer } from '../core/bodySerializer.gen';\nimport {\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from '../core/pathSerializer.gen';\nimport { getUrl } from '../core/utils.gen';\nimport type { Client, ClientOptions, Config, RequestOptions } from './types.gen';\n\nexport const createQuerySerializer = <T = unknown>({\n parameters = {},\n ...args\n}: QuerySerializerOptions = {}) => {\n const querySerializer = (queryParams: T) => {\n const search: string[] = [];\n if (queryParams && typeof queryParams === 'object') {\n for (const name in queryParams) {\n const value = queryParams[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n const options = parameters[name] || args;\n\n if (Array.isArray(value)) {\n const serializedArray = serializeArrayParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'form',\n value,\n ...options.array,\n });\n if (serializedArray) search.push(serializedArray);\n } else if (typeof value === 'object') {\n const serializedObject = serializeObjectParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'deepObject',\n value: value as Record<string, unknown>,\n ...options.object,\n });\n if (serializedObject) search.push(serializedObject);\n } else {\n const serializedPrimitive = serializePrimitiveParam({\n allowReserved: options.allowReserved,\n name,\n value: value as string,\n });\n if (serializedPrimitive) search.push(serializedPrimitive);\n }\n }\n }\n return search.join('&');\n };\n return querySerializer;\n};\n\n/**\n * Infers parseAs value from provided Content-Type header.\n */\nexport const getParseAs = (contentType: string | null): Exclude<Config['parseAs'], 'auto'> => {\n if (!contentType) {\n // If no Content-Type header is provided, the best we can do is return the raw response body,\n // which is effectively the same as the 'stream' option.\n return 'stream';\n }\n\n const cleanContent = contentType.split(';')[0]?.trim();\n\n if (!cleanContent) {\n return;\n }\n\n if (cleanContent.startsWith('application/json') || cleanContent.endsWith('+json')) {\n return 'json';\n }\n\n if (cleanContent === 'multipart/form-data') {\n return 'formData';\n }\n\n if (\n ['application/', 'audio/', 'image/', 'video/'].some((type) => cleanContent.startsWith(type))\n ) {\n return 'blob';\n }\n\n if (cleanContent.startsWith('text/')) {\n return 'text';\n }\n\n return;\n};\n\nconst checkForExistence = (\n options: Pick<RequestOptions, 'auth' | 'query'> & {\n headers: Headers;\n },\n name?: string\n): boolean => {\n if (!name) {\n return false;\n }\n if (\n options.headers.has(name) ||\n options.query?.[name] ||\n options.headers.get('Cookie')?.includes(`${name}=`)\n ) {\n return true;\n }\n return false;\n};\n\nexport const setAuthParams = async ({\n security,\n ...options\n}: Pick<Required<RequestOptions>, 'security'> &\n Pick<RequestOptions, 'auth' | 'query'> & {\n headers: Headers;\n }) => {\n for (const auth of security) {\n if (checkForExistence(options, auth.name)) {\n continue;\n }\n\n const token = await getAuthToken(auth, options.auth);\n\n if (!token) {\n continue;\n }\n\n const name = auth.name ?? 'Authorization';\n\n switch (auth.in) {\n case 'query':\n if (!options.query) {\n options.query = {};\n }\n options.query[name] = token;\n break;\n case 'cookie':\n options.headers.append('Cookie', `${name}=${token}`);\n break;\n case 'header':\n default:\n options.headers.set(name, token);\n break;\n }\n }\n};\n\nexport const buildUrl: Client['buildUrl'] = (options) =>\n getUrl({\n baseUrl: options.baseUrl as string,\n path: options.path,\n query: options.query,\n querySerializer:\n typeof options.querySerializer === 'function'\n ? options.querySerializer\n : createQuerySerializer(options.querySerializer),\n url: options.url,\n });\n\nexport const mergeConfigs = (a: Config, b: Config): Config => {\n const config = { ...a, ...b };\n if (config.baseUrl?.endsWith('/')) {\n config.baseUrl = config.baseUrl.substring(0, config.baseUrl.length - 1);\n }\n config.headers = mergeHeaders(a.headers, b.headers);\n return config;\n};\n\nconst headersEntries = (headers: Headers): Array<[string, string]> => {\n const entries: Array<[string, string]> = [];\n headers.forEach((value, key) => {\n entries.push([key, value]);\n });\n return entries;\n};\n\nexport const mergeHeaders = (\n ...headers: Array<Required<Config>['headers'] | undefined>\n): Headers => {\n const mergedHeaders = new Headers();\n for (const header of headers) {\n if (!header) {\n continue;\n }\n\n const iterator = header instanceof Headers ? headersEntries(header) : Object.entries(header);\n\n for (const [key, value] of iterator) {\n if (value === null) {\n mergedHeaders.delete(key);\n } else if (Array.isArray(value)) {\n for (const v of value) {\n mergedHeaders.append(key, v as string);\n }\n } else if (value !== undefined) {\n // assume object headers are meant to be JSON stringified, i.e. their\n // content value in OpenAPI specification is 'application/json'\n mergedHeaders.set(\n key,\n typeof value === 'object' ? JSON.stringify(value) : (value as string)\n );\n }\n }\n }\n return mergedHeaders;\n};\n\ntype ErrInterceptor<Err, Res, Req, Options> = (\n error: Err,\n response: Res,\n request: Req,\n options: Options\n) => Err | Promise<Err>;\n\ntype ReqInterceptor<Req, Options> = (request: Req, options: Options) => Req | Promise<Req>;\n\ntype ResInterceptor<Res, Req, Options> = (\n response: Res,\n request: Req,\n options: Options\n) => Res | Promise<Res>;\n\nclass Interceptors<Interceptor> {\n fns: Array<Interceptor | null> = [];\n\n clear(): void {\n this.fns = [];\n }\n\n eject(id: number | Interceptor): void {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = null;\n }\n }\n\n exists(id: number | Interceptor): boolean {\n const index = this.getInterceptorIndex(id);\n return Boolean(this.fns[index]);\n }\n\n getInterceptorIndex(id: number | Interceptor): number {\n if (typeof id === 'number') {\n return this.fns[id] ? id : -1;\n }\n return this.fns.indexOf(id);\n }\n\n update(id: number | Interceptor, fn: Interceptor): number | Interceptor | false {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = fn;\n return id;\n }\n return false;\n }\n\n use(fn: Interceptor): number {\n this.fns.push(fn);\n return this.fns.length - 1;\n }\n}\n\nexport interface Middleware<Req, Res, Err, Options> {\n error: Interceptors<ErrInterceptor<Err, Res, Req, Options>>;\n request: Interceptors<ReqInterceptor<Req, Options>>;\n response: Interceptors<ResInterceptor<Res, Req, Options>>;\n}\n\nexport const createInterceptors = <Req, Res, Err, Options>(): Middleware<\n Req,\n Res,\n Err,\n Options\n> => ({\n error: new Interceptors<ErrInterceptor<Err, Res, Req, Options>>(),\n request: new Interceptors<ReqInterceptor<Req, Options>>(),\n response: new Interceptors<ResInterceptor<Res, Req, Options>>(),\n});\n\nconst defaultQuerySerializer = createQuerySerializer({\n allowReserved: false,\n array: {\n explode: true,\n style: 'form',\n },\n object: {\n explode: true,\n style: 'deepObject',\n },\n});\n\nconst defaultHeaders = {\n 'Content-Type': 'application/json',\n};\n\nexport const createConfig = <T extends ClientOptions = ClientOptions>(\n override: Config<Omit<ClientOptions, keyof T> & T> = {}\n): Config<Omit<ClientOptions, keyof T> & T> => ({\n ...jsonBodySerializer,\n headers: defaultHeaders,\n parseAs: 'auto',\n querySerializer: defaultQuerySerializer,\n ...override,\n});\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { createSseClient } from '../core/serverSentEvents.gen';\nimport type { HttpMethod } from '../core/types.gen';\nimport { getValidRequestBody } from '../core/utils.gen';\nimport type { Client, Config, RequestOptions, ResolvedRequestOptions } from './types.gen';\nimport {\n buildUrl,\n createConfig,\n createInterceptors,\n getParseAs,\n mergeConfigs,\n mergeHeaders,\n setAuthParams,\n} from './utils.gen';\n\ntype ReqInit = Omit<RequestInit, 'body' | 'headers'> & {\n body?: any;\n headers: ReturnType<typeof mergeHeaders>;\n};\n\nexport const createClient = (config: Config = {}): Client => {\n let _config = mergeConfigs(createConfig(), config);\n\n const getConfig = (): Config => ({ ..._config });\n\n const setConfig = (config: Config): Config => {\n _config = mergeConfigs(_config, config);\n return getConfig();\n };\n\n const interceptors = createInterceptors<Request, Response, unknown, ResolvedRequestOptions>();\n\n const beforeRequest = async (options: RequestOptions) => {\n const opts = {\n ..._config,\n ...options,\n fetch: options.fetch ?? _config.fetch ?? globalThis.fetch,\n headers: mergeHeaders(_config.headers, options.headers),\n serializedBody: undefined,\n };\n\n if (opts.security) {\n await setAuthParams({\n ...opts,\n security: opts.security,\n });\n }\n\n if (opts.requestValidator) {\n await opts.requestValidator(opts);\n }\n\n if (opts.body !== undefined && opts.bodySerializer) {\n opts.serializedBody = opts.bodySerializer(opts.body);\n }\n\n // remove Content-Type header if body is empty to avoid sending invalid requests\n if (opts.body === undefined || opts.serializedBody === '') {\n opts.headers.delete('Content-Type');\n }\n\n const url = buildUrl(opts);\n\n return { opts, url };\n };\n\n const request: Client['request'] = async (options) => {\n // @ts-expect-error\n const { opts, url } = await beforeRequest(options);\n const requestInit: ReqInit = {\n redirect: 'follow',\n ...opts,\n body: getValidRequestBody(opts),\n };\n\n let request = new Request(url, requestInit);\n\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = opts.fetch!;\n let response: Response;\n\n try {\n response = await _fetch(request);\n } catch (error) {\n // Handle fetch exceptions (AbortError, network errors, etc.)\n let finalError = error;\n\n for (const fn of interceptors.error.fns) {\n if (fn) {\n finalError = (await fn(error, undefined as any, request, opts)) as unknown;\n }\n }\n\n finalError = finalError || ({} as unknown);\n\n if (opts.throwOnError) {\n throw finalError;\n }\n\n // Return error response\n return opts.responseStyle === 'data'\n ? undefined\n : {\n error: finalError,\n request,\n response: undefined as any,\n };\n }\n\n for (const fn of interceptors.response.fns) {\n if (fn) {\n response = await fn(response, request, opts);\n }\n }\n\n const result = {\n request,\n response,\n };\n\n if (response.ok) {\n const parseAs =\n (opts.parseAs === 'auto'\n ? getParseAs(response.headers.get('Content-Type'))\n : opts.parseAs) ?? 'json';\n\n if (response.status === 204 || response.headers.get('Content-Length') === '0') {\n let emptyData: any;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'text':\n emptyData = await response[parseAs]();\n break;\n case 'formData':\n emptyData = new FormData();\n break;\n case 'stream':\n emptyData = response.body;\n break;\n case 'json':\n default:\n emptyData = {};\n break;\n }\n return opts.responseStyle === 'data'\n ? emptyData\n : {\n data: emptyData,\n ...result,\n };\n }\n\n let data: any;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'formData':\n case 'json':\n case 'text':\n data = await response[parseAs]();\n break;\n case 'stream':\n return opts.responseStyle === 'data'\n ? response.body\n : {\n data: response.body,\n ...result,\n };\n }\n\n if (parseAs === 'json') {\n if (opts.responseValidator) {\n await opts.responseValidator(data);\n }\n\n if (opts.responseTransformer) {\n data = await opts.responseTransformer(data);\n }\n }\n\n return opts.responseStyle === 'data'\n ? data\n : {\n data,\n ...result,\n };\n }\n\n const textError = await response.text();\n let jsonError: unknown;\n\n try {\n jsonError = JSON.parse(textError);\n } catch {\n // noop\n }\n\n const error = jsonError ?? textError;\n let finalError = error;\n\n for (const fn of interceptors.error.fns) {\n if (fn) {\n finalError = (await fn(error, response, request, opts)) as string;\n }\n }\n\n finalError = finalError || ({} as string);\n\n if (opts.throwOnError) {\n throw finalError;\n }\n\n // TODO: we probably want to return error and improve types\n return opts.responseStyle === 'data'\n ? undefined\n : {\n error: finalError,\n ...result,\n };\n };\n\n const makeMethodFn = (method: Uppercase<HttpMethod>) => (options: RequestOptions) =>\n request({ ...options, method });\n\n const makeSseFn = (method: Uppercase<HttpMethod>) => async (options: RequestOptions) => {\n const { opts, url } = await beforeRequest(options);\n return createSseClient({\n ...opts,\n body: opts.body as BodyInit | null | undefined,\n headers: opts.headers as unknown as Record<string, string>,\n method,\n onRequest: async (url, init) => {\n let request = new Request(url, init);\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n return request;\n },\n url,\n });\n };\n\n return {\n buildUrl,\n connect: makeMethodFn('CONNECT'),\n delete: makeMethodFn('DELETE'),\n get: makeMethodFn('GET'),\n getConfig,\n head: makeMethodFn('HEAD'),\n interceptors,\n options: makeMethodFn('OPTIONS'),\n patch: makeMethodFn('PATCH'),\n post: makeMethodFn('POST'),\n put: makeMethodFn('PUT'),\n request,\n setConfig,\n sse: {\n connect: makeSseFn('CONNECT'),\n delete: makeSseFn('DELETE'),\n get: makeSseFn('GET'),\n head: makeSseFn('HEAD'),\n options: makeSseFn('OPTIONS'),\n patch: makeSseFn('PATCH'),\n post: makeSseFn('POST'),\n put: makeSseFn('PUT'),\n trace: makeSseFn('TRACE'),\n },\n trace: makeMethodFn('TRACE'),\n } as Client;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { type ClientOptions, type Config, createClient, createConfig } from './client';\nimport type { ClientOptions as ClientOptions2 } from './types.gen';\n\n/**\n * The `createClientConfig()` function will be called on client initialization\n * and the returned object will become the client's initial configuration.\n *\n * You may want to initialize your client this way instead of calling\n * `setConfig()`. This is useful for example if you're using Next.js\n * to ensure your client always has the correct values.\n */\nexport type CreateClientConfig<T extends ClientOptions = ClientOptions2> = (\n override?: Config<ClientOptions & T>\n) => Config<Required<ClientOptions> & T>;\n\nexport const client = createClient(\n createConfig<ClientOptions2>({\n baseUrl: 'https://ix8b43sg3j.execute-api.us-west-2.amazonaws.com',\n })\n);\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport {\n type Client,\n type Options as Options2,\n type TDataShape,\n urlSearchParamsBodySerializer,\n} from './client';\nimport { client } from './client.gen';\nimport type {\n AcknowledgeMemoData,\n AcknowledgeMemoErrors,\n AcknowledgeMemoResponses,\n AddDatabaseData,\n AddDatabaseErrors,\n AddDatabaseResponses,\n AddLinkedRepoData,\n AddLinkedRepoErrors,\n AddLinkedRepoResponses,\n AddMissionData,\n AddMissionErrors,\n AddMissionResponses,\n AddSessionData,\n AddSessionErrors,\n AddSessionResponses,\n ArchiveSessionData,\n ArchiveSessionErrors,\n ArchiveSessionResponses,\n BatchResolveOcxpUrisData,\n BatchResolveOcxpUrisErrors,\n BatchResolveOcxpUrisResponses,\n BulkDeleteContentData,\n BulkDeleteContentErrors,\n BulkDeleteContentResponses,\n BulkMoveContentData,\n BulkMoveContentErrors,\n BulkMoveContentResponses,\n BulkReadContentData,\n BulkReadContentErrors,\n BulkReadContentResponses,\n BulkWriteContentData,\n BulkWriteContentErrors,\n BulkWriteContentResponses,\n CreateDatabaseData,\n CreateDatabaseErrors,\n CreateDatabaseResponses,\n CreateFolderData,\n CreateFolderErrors,\n CreateFolderResponses,\n CreateMemoData,\n CreateMemoErrors,\n CreateMemoResponses,\n CreateMissionData,\n CreateMissionErrors,\n CreateMissionResponses,\n CreateProjectData,\n CreateProjectErrors,\n CreateProjectResponses,\n CreateSessionData,\n CreateSessionErrors,\n CreateSessionResponses,\n DeleteContentData,\n DeleteContentErrors,\n DeleteContentResponses,\n DeleteDatabaseData,\n DeleteDatabaseErrors,\n DeleteDatabaseResponses,\n DeleteGithubTokenData,\n DeleteGithubTokenResponses,\n DeleteMemoData,\n DeleteMemoErrors,\n DeleteMemoResponses,\n DeleteMissionData,\n DeleteMissionErrors,\n DeleteMissionResponses,\n DeleteProjectData,\n DeleteProjectErrors,\n DeleteProjectResponses,\n DeleteRepoData,\n DeleteRepoErrors,\n DeleteRepoResponses,\n DiscoverContextData,\n DiscoverContextErrors,\n DiscoverContextResponses,\n DownloadMissionPackData,\n DownloadMissionPackErrors,\n DownloadMissionPackResponses,\n DownloadRepositoryData,\n DownloadRepositoryErrors,\n DownloadRepositoryResponses,\n ExportCheckpointAsSopData,\n ExportCheckpointAsSopErrors,\n ExportCheckpointAsSopResponses,\n ForkSessionData,\n ForkSessionErrors,\n ForkSessionResponses,\n GetAuthConfigData,\n GetAuthConfigResponses,\n GetCheckpointData,\n GetCheckpointErrors,\n GetCheckpointResponses,\n GetContentStatsData,\n GetContentStatsErrors,\n GetContentStatsResponses,\n GetContentTreeData,\n GetContentTreeErrors,\n GetContentTreeResponses,\n GetContentTypesData,\n GetContentTypesErrors,\n GetContentTypesResponses,\n GetContextReposData,\n GetContextReposErrors,\n GetContextReposResponses,\n GetCurrentUserData,\n GetCurrentUserResponses,\n GetDatabaseData,\n GetDatabaseErrors,\n GetDatabaseOverviewData,\n GetDatabaseOverviewErrors,\n GetDatabaseOverviewResponses,\n GetDatabaseResponses,\n GetGithubTokenStatusData,\n GetGithubTokenStatusResponses,\n GetMemoData,\n GetMemoErrors,\n GetMemoForSourceData,\n GetMemoForSourceErrors,\n GetMemoForSourceResponses,\n GetMemoResponses,\n GetMissionContextData,\n GetMissionContextErrors,\n GetMissionContextResponses,\n GetMissionData,\n GetMissionErrors,\n GetMissionResponses,\n GetProjectData,\n GetProjectDatabasesData,\n GetProjectDatabasesErrors,\n GetProjectDatabasesResponses,\n GetProjectErrors,\n GetProjectResponses,\n GetRepoDownloadStatusData,\n GetRepoDownloadStatusErrors,\n GetRepoDownloadStatusResponses,\n GetSampleData,\n GetSampleErrors,\n GetSampleResponses,\n GetSchemaData,\n GetSchemaErrors,\n GetSchemaResponses,\n GetSessionMessagesData,\n GetSessionMessagesErrors,\n GetSessionMessagesResponses,\n GithubCheckAccessData,\n GithubCheckAccessErrors,\n GithubCheckAccessResponses,\n GithubGetContentsData,\n GithubGetContentsErrors,\n GithubGetContentsResponses,\n GithubListBranchesData,\n GithubListBranchesErrors,\n GithubListBranchesResponses,\n HealthCheck2Data,\n HealthCheck2Responses,\n HealthCheckData,\n HealthCheckErrors,\n HealthCheckResponses,\n IgnoreMemoData,\n IgnoreMemoErrors,\n IgnoreMemoResponses,\n IngestDocumentsData,\n IngestDocumentsErrors,\n IngestDocumentsResponses,\n ListContentData,\n ListContentErrors,\n ListContentResponses,\n ListContextDatabasesData,\n ListContextDatabasesErrors,\n ListContextDatabasesResponses,\n ListDatabasesAliasData,\n ListDatabasesAliasErrors,\n ListDatabasesAliasResponses,\n ListDatabasesData,\n ListDatabasesErrors,\n ListDatabasesResponses,\n ListDownloadedReposData,\n ListDownloadedReposErrors,\n ListDownloadedReposResponses,\n ListMemosData,\n ListMemosErrors,\n ListMemosResponses,\n ListMissionBranchesData,\n ListMissionBranchesErrors,\n ListMissionBranchesResponses,\n ListMissionCheckpointsData,\n ListMissionCheckpointsErrors,\n ListMissionCheckpointsResponses,\n ListMissionsData,\n ListMissionsErrors,\n ListMissionsResponses,\n ListProjectsAliasData,\n ListProjectsAliasErrors,\n ListProjectsAliasResponses,\n ListProjectsData,\n ListProjectsErrors,\n ListProjectsResponses,\n ListSessionsData,\n ListSessionsErrors,\n ListSessionsResponses,\n ListTablesData,\n ListTablesErrors,\n ListTablesResponses,\n ListWorkspacesData,\n ListWorkspacesResponses,\n LockContentData,\n LockContentErrors,\n LockContentResponses,\n LoginData,\n LoginErrors,\n LoginForAccessTokenData,\n LoginForAccessTokenErrors,\n LoginForAccessTokenResponses,\n LoginResponses,\n MoveContentData,\n MoveContentErrors,\n MoveContentResponses,\n PromoteCheckpointToLongtermData,\n PromoteCheckpointToLongtermErrors,\n PromoteCheckpointToLongtermResponses,\n QueryContentData,\n QueryContentErrors,\n QueryContentResponses,\n QueryKnowledgeBaseData,\n QueryKnowledgeBaseErrors,\n QueryKnowledgeBaseResponses,\n RagKnowledgeBaseData,\n RagKnowledgeBaseErrors,\n RagKnowledgeBaseResponses,\n ReadContentData,\n ReadContentErrors,\n ReadContentResponses,\n RefreshTokensData,\n RefreshTokensErrors,\n RefreshTokensResponses,\n RegenerateMetadataData,\n RegenerateMetadataErrors,\n RegenerateMetadataResponses,\n RegenerateMissionData,\n RegenerateMissionErrors,\n RegenerateMissionResponses,\n RemoveDatabaseData,\n RemoveDatabaseErrors,\n RemoveDatabaseResponses,\n RemoveLinkedRepoData,\n RemoveLinkedRepoErrors,\n RemoveLinkedRepoResponses,\n RemoveMissionData,\n RemoveMissionErrors,\n RemoveMissionResponses,\n RemoveSessionData,\n RemoveSessionErrors,\n RemoveSessionResponses,\n ResolveMemoData,\n ResolveMemoErrors,\n ResolveMemoResponses,\n ResolveOcxpUriData,\n ResolveOcxpUriErrors,\n ResolveOcxpUriResponses,\n SearchContentData,\n SearchContentErrors,\n SearchContentResponses,\n SetDefaultDatabaseData,\n SetDefaultDatabaseErrors,\n SetDefaultDatabaseResponses,\n SetDefaultRepoData,\n SetDefaultRepoErrors,\n SetDefaultRepoResponses,\n SetGithubTokenData,\n SetGithubTokenErrors,\n SetGithubTokenResponses,\n SystemInfoData,\n SystemInfoErrors,\n SystemInfoResponses,\n TestDatabaseConnectionData,\n TestDatabaseConnectionErrors,\n TestDatabaseConnectionResponses,\n ToolCreateMissionData,\n ToolCreateMissionErrors,\n ToolCreateMissionResponses,\n ToolUpdateMissionData,\n ToolUpdateMissionErrors,\n ToolUpdateMissionResponses,\n UnlockContentData,\n UnlockContentErrors,\n UnlockContentResponses,\n UpdateDatabaseData,\n UpdateDatabaseErrors,\n UpdateDatabaseResponses,\n UpdateMissionData,\n UpdateMissionErrors,\n UpdateMissionResponses,\n UpdateProjectData,\n UpdateProjectErrors,\n UpdateProjectResponses,\n UpdateSessionMetadataData,\n UpdateSessionMetadataErrors,\n UpdateSessionMetadataResponses,\n ValidateOcxpUriData,\n ValidateOcxpUriErrors,\n ValidateOcxpUriResponses,\n ValidateResponseData,\n ValidateResponseErrors,\n ValidateResponseResponses,\n WriteContentData,\n WriteContentErrors,\n WriteContentResponses,\n} from './types.gen';\n\nexport type Options<\n TData extends TDataShape = TDataShape,\n ThrowOnError extends boolean = boolean,\n> = Options2<TData, ThrowOnError> & {\n /**\n * You can provide a client instance returned by `createClient()` instead of\n * individual options. This might be also useful if you want to implement a\n * custom client.\n */\n client?: Client;\n /**\n * You can pass arbitrary values through the `meta` object. This can be\n * used to access values that aren't defined as part of the SDK function.\n */\n meta?: Record<string, unknown>;\n};\n\n/**\n * Resolve Ocxp Uri\n *\n * Resolve OCXP URI to actual file locations.\n *\n * Converts ocxp://workspace/content_type/path to:\n * - S3 URI (s3://bucket/path)\n * - Local filesystem path (/vault/path)\n * - Obsidian URI (obsidian://open?vault=...&file=...)\n *\n * Args:\n * request: Resolution request with URI and mode\n * workspace: Current workspace from auth context\n *\n * Returns:\n * OCXPResolution with resolved paths and existence check\n *\n * Raises:\n * HTTPException: If URI format is invalid or content type is unknown\n */\nexport const resolveOcxpUri = <ThrowOnError extends boolean = false>(\n options: Options<ResolveOcxpUriData, ThrowOnError>\n) =>\n (options.client ?? client).post<ResolveOcxpUriResponses, ResolveOcxpUriErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/resolution/resolve',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Validate Ocxp Uri\n *\n * Validate OCXP URI format and content type.\n *\n * Args:\n * request: Validation request with URI\n *\n * Returns:\n * OCXPValidateResponse with validation result\n */\nexport const validateOcxpUri = <ThrowOnError extends boolean = false>(\n options: Options<ValidateOcxpUriData, ThrowOnError>\n) =>\n (options.client ?? client).post<ValidateOcxpUriResponses, ValidateOcxpUriErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/resolution/validate',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Batch Resolve Ocxp Uris\n *\n * Batch resolve multiple OCXP URIs in a single request.\n *\n * Args:\n * request: Batch resolution request with list of URIs\n * workspace: Current workspace from auth context\n *\n * Returns:\n * OCXPBatchResolveResponse with results and errors\n */\nexport const batchResolveOcxpUris = <ThrowOnError extends boolean = false>(\n options: Options<BatchResolveOcxpUrisData, ThrowOnError>\n) =>\n (options.client ?? client).post<\n BatchResolveOcxpUrisResponses,\n BatchResolveOcxpUrisErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/resolution/batch',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Bulk Read Content\n *\n * Bulk read content.\n */\nexport const bulkReadContent = <ThrowOnError extends boolean = false>(\n options: Options<BulkReadContentData, ThrowOnError>\n) =>\n (options.client ?? client).post<BulkReadContentResponses, BulkReadContentErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/{content_type}/bulk/read',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Bulk Write Content\n *\n * Bulk write content.\n */\nexport const bulkWriteContent = <ThrowOnError extends boolean = false>(\n options: Options<BulkWriteContentData, ThrowOnError>\n) =>\n (options.client ?? client).post<BulkWriteContentResponses, BulkWriteContentErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/{content_type}/bulk/write',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Bulk Delete Content\n *\n * Bulk delete content using batch operations.\n */\nexport const bulkDeleteContent = <ThrowOnError extends boolean = false>(\n options: Options<BulkDeleteContentData, ThrowOnError>\n) =>\n (options.client ?? client).post<\n BulkDeleteContentResponses,\n BulkDeleteContentErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/{content_type}/bulk/delete',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Bulk Move Content\n *\n * Bulk move (copy + delete) content.\n *\n * Performs batch copy followed by batch delete for efficiency.\n * Individual item failures are reported in results.\n */\nexport const bulkMoveContent = <ThrowOnError extends boolean = false>(\n options: Options<BulkMoveContentData, ThrowOnError>\n) =>\n (options.client ?? client).post<BulkMoveContentResponses, BulkMoveContentErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/{content_type}/bulk/move',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Regenerate metadata for S3 documents\n *\n * Regenerates Bedrock KB metadata sidecars for existing S3 documents.\n *\n * Use cases:\n * - After schema changes (e.g., adding new metadata fields)\n * - Fixing incorrect metadata from previous versions\n * - Bulk metadata updates for a workspace or project\n *\n * Background processing:\n * - If max_files is None or > 1000, job is queued for background processing\n * - Use job_id to check status via /admin/jobs/{job_id} endpoint\n *\n * Dry run mode:\n * - Shows what would change without updating S3\n * - Useful for validating changes before applying\n */\nexport const regenerateMetadata = <ThrowOnError extends boolean = false>(\n options: Options<RegenerateMetadataData, ThrowOnError>\n) =>\n (options.client ?? client).post<\n RegenerateMetadataResponses,\n RegenerateMetadataErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/admin/metadata/regenerate',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Health check\n *\n * Check system health and component status\n */\nexport const healthCheck = <ThrowOnError extends boolean = false>(\n options?: Options<HealthCheckData, ThrowOnError>\n) =>\n (options?.client ?? client).get<HealthCheckResponses, HealthCheckErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/admin/health',\n ...options,\n });\n\n/**\n * System information\n *\n * Get system configuration and runtime information\n */\nexport const systemInfo = <ThrowOnError extends boolean = false>(\n options?: Options<SystemInfoData, ThrowOnError>\n) =>\n (options?.client ?? client).get<SystemInfoResponses, SystemInfoErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/admin/info',\n ...options,\n });\n\n/**\n * Discover Context\n *\n * Discover relevant context using smart strategy selection.\n *\n * OCXP automatically selects the best retrieval strategy:\n * - **Semantic search** (default): Fast vector similarity search\n * - **RAG with LLM answer**: When `include_answer=True`\n * - **Hybrid search**: When `search_type=HYBRID`\n *\n * The response includes:\n * - **results**: Ranked context snippets with scores\n * - **answer**: LLM-generated answer (only if include_answer=True)\n * - **strategy_used**: Which strategy was applied\n * - **reranked**: Whether results were quality-reranked\n *\n * **Replaces:**\n * - `POST /ocxp/kb/query` - Use this with default options\n * - `POST /ocxp/kb/rag` - Use this with `include_answer=True`\n *\n * **Example Request:**\n * ```json\n * {\n * \"query\": \"How does authentication work?\",\n * \"options\": {\n * \"content_type\": \"code\",\n * \"project\": \"brain\",\n * \"include_answer\": true,\n * \"max_results\": 5\n * }\n * }\n * ```\n */\nexport const discoverContext = <ThrowOnError extends boolean = false>(\n options: Options<DiscoverContextData, ThrowOnError>\n) =>\n (options.client ?? client).post<DiscoverContextResponses, DiscoverContextErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/discover',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Validate Response\n *\n * Validate AI response against context.\n *\n * Checks for:\n * - **Hallucination**: Claims not supported by context\n * - **Outdated**: References to stale information\n * - **Incomplete**: Missing key context\n * - **Contradiction**: Conflicts with source context\n *\n * The response includes:\n * - **valid**: True if no high-severity issues found\n * - **confidence**: Confidence in validation (0.0 - 1.0)\n * - **quality_score**: Overall quality score (0.0 - 1.0)\n * - **issues**: List of specific issues found\n * - **verified_claims**: Number of claims verified against context\n * - **unverified_claims**: Number of claims that couldn't be verified\n *\n * **Example Request:**\n * ```json\n * {\n * \"response\": \"The authentication uses JWT tokens with a 1-hour expiry.\",\n * \"context_ids\": [\"kb-0\", \"kb-1\", \"kb-2\"],\n * \"query\": \"How does authentication work?\",\n * \"strict_mode\": false\n * }\n * ```\n *\n * **Example Response:**\n * ```json\n * {\n * \"valid\": true,\n * \"confidence\": 0.85,\n * \"quality_score\": 0.9,\n * \"issues\": [],\n * \"verified_claims\": 5,\n * \"unverified_claims\": 1\n * }\n * ```\n */\nexport const validateResponse = <ThrowOnError extends boolean = false>(\n options: Options<ValidateResponseData, ThrowOnError>\n) =>\n (options.client ?? client).post<ValidateResponseResponses, ValidateResponseErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/validate',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Ingest Documents\n *\n * Ingest documents directly into Bedrock KB.\n *\n * Triggers immediate indexing of specific documents that already exist in S3.\n * Documents are batched (max 25 per API call) for efficiency.\n *\n * **Prerequisites:**\n * - Documents must already be written to S3 via OCXP content API\n * - Each document should have a `.metadata.json` sidecar for filtering\n *\n * **Use Case:**\n * Called from Obsidian plugin when user clicks \"Index Now\" button\n * to immediately index pending files instead of waiting for 5-min sync.\n *\n * **Example Request:**\n * ```json\n * {\n * \"documents\": [\n * {\"path\": \"project/uuid/auth.md\"},\n * {\"path\": \"project/uuid/flows/login.md\"}\n * ]\n * }\n * ```\n *\n * **Example Response:**\n * ```json\n * {\n * \"indexed\": 2,\n * \"failed\": 0,\n * \"skipped\": 0,\n * \"results\": [\n * {\"path\": \"project/uuid/auth.md\", \"status\": \"indexed\"},\n * {\"path\": \"project/uuid/flows/login.md\", \"status\": \"indexed\"}\n * ]\n * }\n * ```\n */\nexport const ingestDocuments = <ThrowOnError extends boolean = false>(\n options: Options<IngestDocumentsData, ThrowOnError>\n) =>\n (options.client ?? client).post<IngestDocumentsResponses, IngestDocumentsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/ingest',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * List all sessions\n *\n * Returns sessions for the workspace filtered by status. Uses AgentCore Memory when available for fast retrieval. Ordered by most recently updated.\n */\nexport const listSessions = <ThrowOnError extends boolean = false>(\n options?: Options<ListSessionsData, ThrowOnError>\n) =>\n (options?.client ?? client).get<ListSessionsResponses, ListSessionsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/session',\n ...options,\n });\n\n/**\n * Create session\n *\n * Creates a new session linked to a mission in DynamoDB. Used by Brain to establish session-mission relationship.\n */\nexport const createSession = <ThrowOnError extends boolean = false>(\n options: Options<CreateSessionData, ThrowOnError>\n) =>\n (options.client ?? client).post<CreateSessionResponses, CreateSessionErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/session',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Get session messages\n *\n * Loads message history for a session from S3 storage.\n */\nexport const getSessionMessages = <ThrowOnError extends boolean = false>(\n options: Options<GetSessionMessagesData, ThrowOnError>\n) =>\n (options.client ?? client).get<\n GetSessionMessagesResponses,\n GetSessionMessagesErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/session/{session_id}/messages',\n ...options,\n });\n\n/**\n * Update session metadata\n *\n * Updates session title and message count. Creates session if it does not exist.\n */\nexport const updateSessionMetadata = <ThrowOnError extends boolean = false>(\n options: Options<UpdateSessionMetadataData, ThrowOnError>\n) =>\n (options.client ?? client).post<\n UpdateSessionMetadataResponses,\n UpdateSessionMetadataErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/session/{session_id}/metadata',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Fork session\n *\n * Creates a new session branched from an existing one at a specified message point.\n */\nexport const forkSession = <ThrowOnError extends boolean = false>(\n options: Options<ForkSessionData, ThrowOnError>\n) =>\n (options.client ?? client).post<ForkSessionResponses, ForkSessionErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/session/{session_id}/fork',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Archive session\n *\n * Soft deletes a session by changing its status to archived.\n */\nexport const archiveSession = <ThrowOnError extends boolean = false>(\n options: Options<ArchiveSessionData, ThrowOnError>\n) =>\n (options.client ?? client).post<ArchiveSessionResponses, ArchiveSessionErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/session/{session_id}/archive',\n ...options,\n });\n\n/**\n * List mission checkpoints\n *\n * Returns all checkpoints for a mission from AgentCore Memory, optionally filtered by branch\n */\nexport const listMissionCheckpoints = <ThrowOnError extends boolean = false>(\n options: Options<ListMissionCheckpointsData, ThrowOnError>\n) =>\n (options.client ?? client).get<\n ListMissionCheckpointsResponses,\n ListMissionCheckpointsErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/missions/{mission_id}/checkpoints',\n ...options,\n });\n\n/**\n * Get checkpoint details\n *\n * Returns detailed checkpoint information including metadata\n */\nexport const getCheckpoint = <ThrowOnError extends boolean = false>(\n options: Options<GetCheckpointData, ThrowOnError>\n) =>\n (options.client ?? client).get<GetCheckpointResponses, GetCheckpointErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/checkpoints/{checkpoint_id}',\n ...options,\n });\n\n/**\n * List checkpoint branches\n *\n * Returns all branches for a mission\n */\nexport const listMissionBranches = <ThrowOnError extends boolean = false>(\n options: Options<ListMissionBranchesData, ThrowOnError>\n) =>\n (options.client ?? client).get<\n ListMissionBranchesResponses,\n ListMissionBranchesErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/missions/{mission_id}/checkpoints/branches',\n ...options,\n });\n\n/**\n * Export checkpoint as SOP markdown\n *\n * Export checkpoint data as a Standard Operating Procedure .md file\n */\nexport const exportCheckpointAsSop = <ThrowOnError extends boolean = false>(\n options: Options<ExportCheckpointAsSopData, ThrowOnError>\n) =>\n (options.client ?? client).post<\n ExportCheckpointAsSopResponses,\n ExportCheckpointAsSopErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/checkpoints/{checkpoint_id}/export',\n ...options,\n });\n\n/**\n * Promote checkpoint to long-term memory\n *\n * Convert checkpoint event to long-term memory record for permanent storage\n */\nexport const promoteCheckpointToLongterm = <ThrowOnError extends boolean = false>(\n options: Options<PromoteCheckpointToLongtermData, ThrowOnError>\n) =>\n (options.client ?? client).post<\n PromoteCheckpointToLongtermResponses,\n PromoteCheckpointToLongtermErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/checkpoints/{checkpoint_id}/promote',\n ...options,\n });\n\n/**\n * List all projects\n *\n * Returns all projects in the workspace with their linked repos and missions.\n */\nexport const listProjects = <ThrowOnError extends boolean = false>(\n options?: Options<ListProjectsData, ThrowOnError>\n) =>\n (options?.client ?? client).get<ListProjectsResponses, ListProjectsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/project',\n ...options,\n });\n\n/**\n * Create a new project\n *\n * Creates a project with auto-generated UUID. Projects link repos, missions, and sessions for context scoping.\n */\nexport const createProject = <ThrowOnError extends boolean = false>(\n options: Options<CreateProjectData, ThrowOnError>\n) =>\n (options.client ?? client).post<CreateProjectResponses, CreateProjectErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/project',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * List all projects (alias)\n *\n * Alias for GET /ocxp/project. Returns all projects in the workspace.\n */\nexport const listProjectsAlias = <ThrowOnError extends boolean = false>(\n options?: Options<ListProjectsAliasData, ThrowOnError>\n) =>\n (options?.client ?? client).get<\n ListProjectsAliasResponses,\n ListProjectsAliasErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/project/list',\n ...options,\n });\n\n/**\n * Delete project\n *\n * Permanently deletes a project and its metadata. Linked repos are not deleted.\n */\nexport const deleteProject = <ThrowOnError extends boolean = false>(\n options: Options<DeleteProjectData, ThrowOnError>\n) =>\n (options.client ?? client).delete<DeleteProjectResponses, DeleteProjectErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/project/{project_id}',\n ...options,\n });\n\n/**\n * Get project details\n *\n * Returns full project details including linked repos, missions, and metadata.\n */\nexport const getProject = <ThrowOnError extends boolean = false>(\n options: Options<GetProjectData, ThrowOnError>\n) =>\n (options.client ?? client).get<GetProjectResponses, GetProjectErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/project/{project_id}',\n ...options,\n });\n\n/**\n * Update project\n *\n * Updates project name and/or description. Only provided fields are updated.\n */\nexport const updateProject = <ThrowOnError extends boolean = false>(\n options: Options<UpdateProjectData, ThrowOnError>\n) =>\n (options.client ?? client).put<UpdateProjectResponses, UpdateProjectErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/project/{project_id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Link repository to project\n *\n * Links a repository to the project with category, priority, and auto-include settings for KB queries.\n */\nexport const addLinkedRepo = <ThrowOnError extends boolean = false>(\n options: Options<AddLinkedRepoData, ThrowOnError>\n) =>\n (options.client ?? client).post<AddLinkedRepoResponses, AddLinkedRepoErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/project/{project_id}/repos',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Unlink repository from project\n *\n * Removes a repository link from the project. The repository itself is not deleted.\n */\nexport const removeLinkedRepo = <ThrowOnError extends boolean = false>(\n options: Options<RemoveLinkedRepoData, ThrowOnError>\n) =>\n (options.client ?? client).delete<\n RemoveLinkedRepoResponses,\n RemoveLinkedRepoErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/project/{project_id}/repos/{repo_id}',\n ...options,\n });\n\n/**\n * Set default repository\n *\n * Sets the default repository for the project. Used for integration and primary context.\n */\nexport const setDefaultRepo = <ThrowOnError extends boolean = false>(\n options: Options<SetDefaultRepoData, ThrowOnError>\n) =>\n (options.client ?? client).put<SetDefaultRepoResponses, SetDefaultRepoErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/project/{project_id}/default-repo',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Get context repositories\n *\n * Returns all repositories marked for auto-include in KB queries.\n */\nexport const getContextRepos = <ThrowOnError extends boolean = false>(\n options: Options<GetContextReposData, ThrowOnError>\n) =>\n (options.client ?? client).get<GetContextReposResponses, GetContextReposErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/project/{project_id}/context-repos',\n ...options,\n });\n\n/**\n * Add mission to project\n *\n * Associates a mission with the project for context grouping.\n */\nexport const addMission = <ThrowOnError extends boolean = false>(\n options: Options<AddMissionData, ThrowOnError>\n) =>\n (options.client ?? client).post<AddMissionResponses, AddMissionErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/project/{project_id}/missions',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Remove mission from project\n *\n * Removes the mission association from the project. The mission itself is not deleted.\n */\nexport const removeMission = <ThrowOnError extends boolean = false>(\n options: Options<RemoveMissionData, ThrowOnError>\n) =>\n (options.client ?? client).delete<RemoveMissionResponses, RemoveMissionErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/project/{project_id}/missions/{mission_id}',\n ...options,\n });\n\n/**\n * Get project databases\n *\n * Returns all databases linked to the project.\n */\nexport const getProjectDatabases = <ThrowOnError extends boolean = false>(\n options: Options<GetProjectDatabasesData, ThrowOnError>\n) =>\n (options.client ?? client).get<\n GetProjectDatabasesResponses,\n GetProjectDatabasesErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/project/{project_id}/databases',\n ...options,\n });\n\n/**\n * Link database to project\n *\n * Links a database configuration to the project for agent context.\n */\nexport const addDatabase = <ThrowOnError extends boolean = false>(\n options: Options<AddDatabaseData, ThrowOnError>\n) =>\n (options.client ?? client).post<AddDatabaseResponses, AddDatabaseErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/project/{project_id}/databases',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Unlink database from project\n *\n * Removes a database link from the project. The database config is not deleted.\n */\nexport const removeDatabase = <ThrowOnError extends boolean = false>(\n options: Options<RemoveDatabaseData, ThrowOnError>\n) =>\n (options.client ?? client).delete<RemoveDatabaseResponses, RemoveDatabaseErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/project/{project_id}/databases/{database_id}',\n ...options,\n });\n\n/**\n * Set default database\n *\n * Sets the default database for the project. Used when no specific database_id is provided.\n */\nexport const setDefaultDatabase = <ThrowOnError extends boolean = false>(\n options: Options<SetDefaultDatabaseData, ThrowOnError>\n) =>\n (options.client ?? client).put<\n SetDefaultDatabaseResponses,\n SetDefaultDatabaseErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/project/{project_id}/default-database',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * List all missions\n *\n * Returns all missions in the workspace, optionally filtered by project or mission IDs.\n */\nexport const listMissions = <ThrowOnError extends boolean = false>(\n options?: Options<ListMissionsData, ThrowOnError>\n) =>\n (options?.client ?? client).get<ListMissionsResponses, ListMissionsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/mission',\n ...options,\n });\n\n/**\n * Create a new mission\n *\n * Creates a mission with auto-generated UUID and context folder.\n */\nexport const createMission = <ThrowOnError extends boolean = false>(\n options: Options<CreateMissionData, ThrowOnError>\n) =>\n (options.client ?? client).post<CreateMissionResponses, CreateMissionErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/mission',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Delete mission\n *\n * Permanently deletes a mission and its metadata.\n */\nexport const deleteMission = <ThrowOnError extends boolean = false>(\n options: Options<DeleteMissionData, ThrowOnError>\n) =>\n (options.client ?? client).delete<DeleteMissionResponses, DeleteMissionErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/mission/{mission_id}',\n ...options,\n });\n\n/**\n * Get mission details\n *\n * Returns full mission details including status, progress, and linked sessions.\n */\nexport const getMission = <ThrowOnError extends boolean = false>(\n options: Options<GetMissionData, ThrowOnError>\n) =>\n (options.client ?? client).get<GetMissionResponses, GetMissionErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/mission/{mission_id}',\n ...options,\n });\n\n/**\n * Update mission\n *\n * Updates mission metadata. Only provided fields are updated.\n */\nexport const updateMission = <ThrowOnError extends boolean = false>(\n options: Options<UpdateMissionData, ThrowOnError>\n) =>\n (options.client ?? client).put<UpdateMissionResponses, UpdateMissionErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/mission/{mission_id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Add session to mission\n *\n * Associates a session with the mission.\n */\nexport const addSession = <ThrowOnError extends boolean = false>(\n options: Options<AddSessionData, ThrowOnError>\n) =>\n (options.client ?? client).post<AddSessionResponses, AddSessionErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/mission/{mission_id}/sessions',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Remove session from mission\n *\n * Removes the session association from the mission. The session itself is not deleted.\n */\nexport const removeSession = <ThrowOnError extends boolean = false>(\n options: Options<RemoveSessionData, ThrowOnError>\n) =>\n (options.client ?? client).delete<RemoveSessionResponses, RemoveSessionErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/mission/{mission_id}/sessions/{session_id}',\n ...options,\n });\n\n/**\n * Regenerate mission\n *\n * Archives old generated docs and triggers AgentCore regeneration with updated ticket info.\n */\nexport const regenerateMission = <ThrowOnError extends boolean = false>(\n options: Options<RegenerateMissionData, ThrowOnError>\n) =>\n (options.client ?? client).post<\n RegenerateMissionResponses,\n RegenerateMissionErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/mission/{mission_id}/regenerate',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Download mission pack as ZIP\n *\n * Download complete mission as ZIP file.\n *\n * Includes:\n * - All mission files (PHASES.md, TASKS.md, README.md, documents/)\n * - Mission metadata JSON\n * - Preserves folder structure\n * - Excludes archive/ folders\n */\nexport const downloadMissionPack = <ThrowOnError extends boolean = false>(\n options: Options<DownloadMissionPackData, ThrowOnError>\n) =>\n (options.client ?? client).get<\n DownloadMissionPackResponses,\n DownloadMissionPackErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/mission/{mission_id}/download',\n ...options,\n });\n\n/**\n * Query Knowledge Base\n *\n * DEPRECATED: Use POST /ocxp/context/discover instead.\n *\n * This endpoint will be removed in v2.0. Migrate to the new unified interface.\n *\n * Semantic search with optional project scoping and external docs fallback.\n *\n * @deprecated\n */\nexport const queryKnowledgeBase = <ThrowOnError extends boolean = false>(\n options: Options<QueryKnowledgeBaseData, ThrowOnError>\n) =>\n (options.client ?? client).post<\n QueryKnowledgeBaseResponses,\n QueryKnowledgeBaseErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/kb/query',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Rag Knowledge Base\n *\n * DEPRECATED: Use POST /ocxp/context/discover with include_answer=true instead.\n *\n * This endpoint will be removed in v2.0. Migrate to the new unified interface.\n *\n * RAG query with LLM response and citations.\n *\n * @deprecated\n */\nexport const ragKnowledgeBase = <ThrowOnError extends boolean = false>(\n options: Options<RagKnowledgeBaseData, ThrowOnError>\n) =>\n (options.client ?? client).post<RagKnowledgeBaseResponses, RagKnowledgeBaseErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/kb/rag',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * List memos\n *\n * List memos for the workspace with optional filters.\n */\nexport const listMemos = <ThrowOnError extends boolean = false>(\n options?: Options<ListMemosData, ThrowOnError>\n) =>\n (options?.client ?? client).get<ListMemosResponses, ListMemosErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/memo',\n ...options,\n });\n\n/**\n * Create memo\n *\n * Create a new memo (general or security finding).\n */\nexport const createMemo = <ThrowOnError extends boolean = false>(\n options: Options<CreateMemoData, ThrowOnError>\n) =>\n (options.client ?? client).post<CreateMemoResponses, CreateMemoErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/memo',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Delete memo\n *\n * Delete a memo permanently.\n */\nexport const deleteMemo = <ThrowOnError extends boolean = false>(\n options: Options<DeleteMemoData, ThrowOnError>\n) =>\n (options.client ?? client).delete<DeleteMemoResponses, DeleteMemoErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/memo/{memo_id}',\n ...options,\n });\n\n/**\n * Get memo by ID\n *\n * Get a specific memo by its ID.\n */\nexport const getMemo = <ThrowOnError extends boolean = false>(\n options: Options<GetMemoData, ThrowOnError>\n) =>\n (options.client ?? client).get<GetMemoResponses, GetMemoErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/memo/{memo_id}',\n ...options,\n });\n\n/**\n * Get memo for source\n *\n * Get memo for a specific source entity (repo, project, mission, doc).\n */\nexport const getMemoForSource = <ThrowOnError extends boolean = false>(\n options: Options<GetMemoForSourceData, ThrowOnError>\n) =>\n (options.client ?? client).get<GetMemoForSourceResponses, GetMemoForSourceErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/memo/source/{source_type}/{source_id}',\n ...options,\n });\n\n/**\n * Resolve memo\n *\n * Mark a memo as resolved. Sets TTL for auto-deletion.\n */\nexport const resolveMemo = <ThrowOnError extends boolean = false>(\n options: Options<ResolveMemoData, ThrowOnError>\n) =>\n (options.client ?? client).post<ResolveMemoResponses, ResolveMemoErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/memo/{memo_id}/resolve',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Acknowledge memo\n *\n * Mark a memo as acknowledged (developer has seen it).\n */\nexport const acknowledgeMemo = <ThrowOnError extends boolean = false>(\n options: Options<AcknowledgeMemoData, ThrowOnError>\n) =>\n (options.client ?? client).post<AcknowledgeMemoResponses, AcknowledgeMemoErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/memo/{memo_id}/acknowledge',\n ...options,\n });\n\n/**\n * Ignore memo\n *\n * Mark a memo as ignored (false positive or accepted risk).\n */\nexport const ignoreMemo = <ThrowOnError extends boolean = false>(\n options: Options<IgnoreMemoData, ThrowOnError>\n) =>\n (options.client ?? client).post<IgnoreMemoResponses, IgnoreMemoErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/memo/{memo_id}/ignore',\n ...options,\n });\n\n/**\n * Start repository download\n *\n * Initiates an async download of a Git repository. Returns a job ID for status tracking. If the repository already exists (deduplicated), returns immediately with status='linked'.\n */\nexport const downloadRepository = <ThrowOnError extends boolean = false>(\n options: Options<DownloadRepositoryData, ThrowOnError>\n) =>\n (options.client ?? client).post<\n DownloadRepositoryResponses,\n DownloadRepositoryErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/repo/download',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Get download status\n *\n * Returns the current status and progress of a repository download job.\n */\nexport const getRepoDownloadStatus = <ThrowOnError extends boolean = false>(\n options: Options<GetRepoDownloadStatusData, ThrowOnError>\n) =>\n (options.client ?? client).get<\n GetRepoDownloadStatusResponses,\n GetRepoDownloadStatusErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/repo/status/{job_id}',\n ...options,\n });\n\n/**\n * List downloaded repositories\n *\n * Returns all repositories that have been downloaded for the workspace.\n */\nexport const listDownloadedRepos = <ThrowOnError extends boolean = false>(\n options?: Options<ListDownloadedReposData, ThrowOnError>\n) =>\n (options?.client ?? client).get<\n ListDownloadedReposResponses,\n ListDownloadedReposErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/repo/list',\n ...options,\n });\n\n/**\n * Delete repository\n *\n * Permanently deletes a downloaded repository. Uses repo_id (owner/repo format).\n */\nexport const deleteRepo = <ThrowOnError extends boolean = false>(\n options: Options<DeleteRepoData, ThrowOnError>\n) =>\n (options.client ?? client).delete<DeleteRepoResponses, DeleteRepoErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/repo/{repo_id}',\n ...options,\n });\n\n/**\n * Github Check Access\n *\n * Check GitHub repository access.\n *\n * Uses the user's stored GitHub token for private repository access.\n * Public repositories are accessible without a token.\n */\nexport const githubCheckAccess = <ThrowOnError extends boolean = false>(\n options: Options<GithubCheckAccessData, ThrowOnError>\n) =>\n (options.client ?? client).post<\n GithubCheckAccessResponses,\n GithubCheckAccessErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/github/check-access',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Github List Branches\n *\n * List repository branches.\n *\n * Uses the user's stored GitHub token for private repository access.\n */\nexport const githubListBranches = <ThrowOnError extends boolean = false>(\n options: Options<GithubListBranchesData, ThrowOnError>\n) =>\n (options.client ?? client).post<\n GithubListBranchesResponses,\n GithubListBranchesErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/github/branches',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Github Get Contents\n *\n * Get repository contents.\n *\n * Uses the user's stored GitHub token for private repository access.\n */\nexport const githubGetContents = <ThrowOnError extends boolean = false>(\n options: Options<GithubGetContentsData, ThrowOnError>\n) =>\n (options.client ?? client).post<\n GithubGetContentsResponses,\n GithubGetContentsErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/github/contents',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * List all database configurations\n *\n * Returns all database configurations in the workspace.\n */\nexport const listDatabases = <ThrowOnError extends boolean = false>(\n options?: Options<ListDatabasesData, ThrowOnError>\n) =>\n (options?.client ?? client).get<ListDatabasesResponses, ListDatabasesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/database',\n ...options,\n });\n\n/**\n * Create a new database configuration\n *\n * Creates a database configuration with auto-generated UUID. Use postgres_lambda for Lambda-proxied connections.\n */\nexport const createDatabase = <ThrowOnError extends boolean = false>(\n options: Options<CreateDatabaseData, ThrowOnError>\n) =>\n (options.client ?? client).post<CreateDatabaseResponses, CreateDatabaseErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/database',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * List all database configurations (alias)\n *\n * Alias for GET /ocxp/database. Returns all databases in the workspace.\n */\nexport const listDatabasesAlias = <ThrowOnError extends boolean = false>(\n options?: Options<ListDatabasesAliasData, ThrowOnError>\n) =>\n (options?.client ?? client).get<\n ListDatabasesAliasResponses,\n ListDatabasesAliasErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/database/list',\n ...options,\n });\n\n/**\n * Delete database configuration\n *\n * Permanently deletes a database configuration.\n */\nexport const deleteDatabase = <ThrowOnError extends boolean = false>(\n options: Options<DeleteDatabaseData, ThrowOnError>\n) =>\n (options.client ?? client).delete<DeleteDatabaseResponses, DeleteDatabaseErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/database/{database_id}',\n ...options,\n });\n\n/**\n * Get database configuration details\n *\n * Returns full database configuration including connection settings and allowed tables.\n */\nexport const getDatabase = <ThrowOnError extends boolean = false>(\n options: Options<GetDatabaseData, ThrowOnError>\n) =>\n (options.client ?? client).get<GetDatabaseResponses, GetDatabaseErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/database/{database_id}',\n ...options,\n });\n\n/**\n * Update database configuration\n *\n * Updates database configuration. Only provided fields are updated.\n */\nexport const updateDatabase = <ThrowOnError extends boolean = false>(\n options: Options<UpdateDatabaseData, ThrowOnError>\n) =>\n (options.client ?? client).put<UpdateDatabaseResponses, UpdateDatabaseErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/database/{database_id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Test database connection\n *\n * Tests the database connection and returns status.\n */\nexport const testDatabaseConnection = <ThrowOnError extends boolean = false>(\n options: Options<TestDatabaseConnectionData, ThrowOnError>\n) =>\n (options.client ?? client).post<\n TestDatabaseConnectionResponses,\n TestDatabaseConnectionErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/database/{database_id}/test',\n ...options,\n });\n\n/**\n * Get database schema\n *\n * Returns database schema information including tables and their metadata.\n */\nexport const getSchema = <ThrowOnError extends boolean = false>(\n options?: Options<GetSchemaData, ThrowOnError>\n) =>\n (options?.client ?? client).get<GetSchemaResponses, GetSchemaErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/database/schema',\n ...options,\n });\n\n/**\n * Get sample data from table\n *\n * Returns sample rows from a specified table.\n */\nexport const getSample = <ThrowOnError extends boolean = false>(\n options: Options<GetSampleData, ThrowOnError>\n) =>\n (options.client ?? client).get<GetSampleResponses, GetSampleErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/database/sample/{table_name}',\n ...options,\n });\n\n/**\n * List available tables\n *\n * Returns list of tables available in the database. Supports caching.\n */\nexport const listTables = <ThrowOnError extends boolean = false>(\n options?: Options<ListTablesData, ThrowOnError>\n) =>\n (options?.client ?? client).get<ListTablesResponses, ListTablesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/database/tables',\n ...options,\n });\n\n/**\n * List configured databases\n *\n * Returns list of database configurations available in the workspace.\n */\nexport const listContextDatabases = <ThrowOnError extends boolean = false>(\n options?: Options<ListContextDatabasesData, ThrowOnError>\n) =>\n (options?.client ?? client).get<\n ListContextDatabasesResponses,\n ListContextDatabasesErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/database/databases',\n ...options,\n });\n\n/**\n * Get complete database overview\n *\n * Returns complete database structure with tables, columns, and foreign keys in a single call. Supports caching.\n */\nexport const getDatabaseOverview = <ThrowOnError extends boolean = false>(\n options?: Options<GetDatabaseOverviewData, ThrowOnError>\n) =>\n (options?.client ?? client).get<\n GetDatabaseOverviewResponses,\n GetDatabaseOverviewErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/database/overview',\n ...options,\n });\n\n/**\n * Get content types\n *\n * Returns all available content types (mission, context, repo, etc.) with optional item counts.\n */\nexport const getContentTypes = <ThrowOnError extends boolean = false>(\n options?: Options<GetContentTypesData, ThrowOnError>\n) =>\n (options?.client ?? client).get<GetContentTypesResponses, GetContentTypesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/types',\n ...options,\n });\n\n/**\n * List content\n *\n * Lists all content items of a specific type, optionally filtered by path.\n */\nexport const listContent = <ThrowOnError extends boolean = false>(\n options: Options<ListContentData, ThrowOnError>\n) =>\n (options.client ?? client).get<ListContentResponses, ListContentErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/{content_type}/list',\n ...options,\n });\n\n/**\n * Query content\n *\n * Advanced query with filters on name, path, size, etc. Supports eq, ne, contains, startsWith, gt, lt operators.\n */\nexport const queryContent = <ThrowOnError extends boolean = false>(\n options: Options<QueryContentData, ThrowOnError>\n) =>\n (options.client ?? client).post<QueryContentResponses, QueryContentErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/{content_type}/query',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Search content\n *\n * Full-text search in content names and paths. Case-insensitive.\n */\nexport const searchContent = <ThrowOnError extends boolean = false>(\n options: Options<SearchContentData, ThrowOnError>\n) =>\n (options.client ?? client).get<SearchContentResponses, SearchContentErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/{content_type}/search',\n ...options,\n });\n\n/**\n * Get content tree\n *\n * Returns hierarchical tree structure of content with configurable depth.\n */\nexport const getContentTree = <ThrowOnError extends boolean = false>(\n options: Options<GetContentTreeData, ThrowOnError>\n) =>\n (options.client ?? client).get<GetContentTreeResponses, GetContentTreeErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/{content_type}/tree',\n ...options,\n });\n\n/**\n * Get content statistics\n *\n * Returns file counts and sizes grouped by extension for a content path.\n */\nexport const getContentStats = <ThrowOnError extends boolean = false>(\n options: Options<GetContentStatsData, ThrowOnError>\n) =>\n (options.client ?? client).get<GetContentStatsResponses, GetContentStatsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/{content_type}/stats',\n ...options,\n });\n\n/**\n * Delete content\n *\n * Deletes content. Use recursive=true with confirm=true to delete directories.\n */\nexport const deleteContent = <ThrowOnError extends boolean = false>(\n options: Options<DeleteContentData, ThrowOnError>\n) =>\n (options.client ?? client).delete<DeleteContentResponses, DeleteContentErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/{content_type}/{content_id}',\n ...options,\n });\n\n/**\n * Read content\n *\n * Reads content by type and path. Binary files are base64-encoded.\n */\nexport const readContent = <ThrowOnError extends boolean = false>(\n options: Options<ReadContentData, ThrowOnError>\n) =>\n (options.client ?? client).get<ReadContentResponses, ReadContentErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/{content_type}/{content_id}',\n ...options,\n });\n\n/**\n * Write content\n *\n * Writes content to storage. Supports ETag for optimistic locking and ifNotExists for creation-only.\n */\nexport const writeContent = <ThrowOnError extends boolean = false>(\n options: Options<WriteContentData, ThrowOnError>\n) =>\n (options.client ?? client).post<WriteContentResponses, WriteContentErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/{content_type}/{content_id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Create folder\n *\n * Creates a folder with metadata.json for Bedrock KB indexing. The metadata.json serves as a folder marker (S3 doesn't have real folders) and provides KB-filterable attributes.\n */\nexport const createFolder = <ThrowOnError extends boolean = false>(\n options: Options<CreateFolderData, ThrowOnError>\n) =>\n (options.client ?? client).post<CreateFolderResponses, CreateFolderErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/{content_type}/folder/{folder_path}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Move content\n *\n * Moves content from source to destination path. Use overwrite=true to replace existing.\n */\nexport const moveContent = <ThrowOnError extends boolean = false>(\n options: Options<MoveContentData, ThrowOnError>\n) =>\n (options.client ?? client).post<MoveContentResponses, MoveContentErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/move',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Lock content\n *\n * Acquires an exclusive lock on content for the specified TTL (seconds). Stub endpoint for SDK compatibility.\n */\nexport const lockContent = <ThrowOnError extends boolean = false>(\n options: Options<LockContentData, ThrowOnError>\n) =>\n (options.client ?? client).post<LockContentResponses, LockContentErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/lock',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Unlock content\n *\n * Releases an exclusive lock on content. Stub endpoint for SDK compatibility.\n */\nexport const unlockContent = <ThrowOnError extends boolean = false>(\n options: Options<UnlockContentData, ThrowOnError>\n) =>\n (options.client ?? client).post<UnlockContentResponses, UnlockContentErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/unlock',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Create a new mission\n *\n * Creates a mission with optional project association and goals list.\n */\nexport const toolCreateMission = <ThrowOnError extends boolean = false>(\n options: Options<ToolCreateMissionData, ThrowOnError>\n) =>\n (options.client ?? client).post<\n ToolCreateMissionResponses,\n ToolCreateMissionErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/tools/mission/create',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Update mission status\n *\n * Updates mission status, progress percentage, and/or notes.\n */\nexport const toolUpdateMission = <ThrowOnError extends boolean = false>(\n options: Options<ToolUpdateMissionData, ThrowOnError>\n) =>\n (options.client ?? client).post<\n ToolUpdateMissionResponses,\n ToolUpdateMissionErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/tools/mission/{mission_id}/update',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Get mission context\n *\n * Returns mission context data optimized for AI consumption.\n */\nexport const getMissionContext = <ThrowOnError extends boolean = false>(\n options: Options<GetMissionContextData, ThrowOnError>\n) =>\n (options.client ?? client).get<GetMissionContextResponses, GetMissionContextErrors, ThrowOnError>(\n {\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/tools/mission/{mission_id}/context',\n ...options,\n }\n );\n\n/**\n * Login For Access Token\n *\n * OAuth2 compatible login endpoint for Swagger UI.\n *\n * Authenticates with Cognito using username/password and returns JWT tokens.\n * Use this endpoint to get a token for testing other endpoints in Swagger.\n * Returns snake_case fields per OAuth2 spec for Swagger compatibility.\n */\nexport const loginForAccessToken = <ThrowOnError extends boolean = false>(\n options: Options<LoginForAccessTokenData, ThrowOnError>\n) =>\n (options.client ?? client).post<\n LoginForAccessTokenResponses,\n LoginForAccessTokenErrors,\n ThrowOnError\n >({\n ...urlSearchParamsBodySerializer,\n url: '/auth/token',\n ...options,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n ...options.headers,\n },\n });\n\n/**\n * Login\n *\n * JSON login endpoint for programmatic clients.\n *\n * Authenticates with Cognito using username/password and returns JWT tokens.\n * Use /auth/token for OAuth2 form-based login (Swagger UI).\n */\nexport const login = <ThrowOnError extends boolean = false>(\n options: Options<LoginData, ThrowOnError>\n) =>\n (options.client ?? client).post<LoginResponses, LoginErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/auth/login',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Refresh Tokens\n *\n * Refresh access token using refresh token.\n *\n * Returns new access and ID tokens. The refresh token remains valid\n * until it expires (configured in Cognito).\n */\nexport const refreshTokens = <ThrowOnError extends boolean = false>(\n options: Options<RefreshTokensData, ThrowOnError>\n) =>\n (options.client ?? client).post<RefreshTokensResponses, RefreshTokensErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/auth/refresh',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Get Auth Config\n *\n * Get Cognito configuration for frontend.\n */\nexport const getAuthConfig = <ThrowOnError extends boolean = false>(\n options?: Options<GetAuthConfigData, ThrowOnError>\n) =>\n (options?.client ?? client).get<GetAuthConfigResponses, unknown, ThrowOnError>({\n url: '/auth/config',\n ...options,\n });\n\n/**\n * Get Current User\n *\n * Get current authenticated user info.\n */\nexport const getCurrentUser = <ThrowOnError extends boolean = false>(\n options?: Options<GetCurrentUserData, ThrowOnError>\n) =>\n (options?.client ?? client).get<GetCurrentUserResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/auth/me',\n ...options,\n });\n\n/**\n * List Workspaces\n *\n * List workspaces for authenticated user.\n */\nexport const listWorkspaces = <ThrowOnError extends boolean = false>(\n options?: Options<ListWorkspacesData, ThrowOnError>\n) =>\n (options?.client ?? client).get<ListWorkspacesResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/auth/workspaces',\n ...options,\n });\n\n/**\n * Delete Github Token\n *\n * Remove user's stored GitHub token.\n *\n * Deletes the GitHub token from DynamoDB. The user will need to\n * reconfigure their token for future GitHub operations.\n */\nexport const deleteGithubToken = <ThrowOnError extends boolean = false>(\n options?: Options<DeleteGithubTokenData, ThrowOnError>\n) =>\n (options?.client ?? client).delete<DeleteGithubTokenResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/auth/github-token',\n ...options,\n });\n\n/**\n * Get Github Token Status\n *\n * Check if user has a GitHub token configured.\n *\n * Returns whether a token is stored and the associated GitHub username,\n * but never returns the actual token value.\n */\nexport const getGithubTokenStatus = <ThrowOnError extends boolean = false>(\n options?: Options<GetGithubTokenStatusData, ThrowOnError>\n) =>\n (options?.client ?? client).get<GetGithubTokenStatusResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/auth/github-token',\n ...options,\n });\n\n/**\n * Set Github Token\n *\n * Save user's GitHub token for server-side repository operations.\n *\n * The token is stored securely in DynamoDB linked to the user's Cognito identity.\n * This enables GitHub operations without transmitting the token on every request.\n */\nexport const setGithubToken = <ThrowOnError extends boolean = false>(\n options: Options<SetGithubTokenData, ThrowOnError>\n) =>\n (options.client ?? client).put<SetGithubTokenResponses, SetGithubTokenErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/auth/github-token',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Health Check\n */\nexport const healthCheck2 = <ThrowOnError extends boolean = false>(\n options?: Options<HealthCheck2Data, ThrowOnError>\n) =>\n (options?.client ?? client).get<HealthCheck2Responses, unknown, ThrowOnError>({\n url: '/health',\n ...options,\n });\n","/**\n * OCXPClient - Custom wrapper for the generated OCXP SDK\n * Provides workspace injection and auth token management\n */\n\nimport { createClient, createConfig, type Client, type ClientOptions } from './generated/client';\nimport * as sdk from './generated/sdk.gen';\nimport type {\n WriteRequest,\n QueryFilter,\n KbQueryRequest,\n MissionCreate,\n MissionResponse,\n MissionListResponse,\n RegenerateMissionResponse,\n ProjectListResponse,\n ProjectResponse,\n ProjectCreate,\n ProjectUpdate,\n AddRepoRequest,\n AddMissionRequest,\n SetDefaultRepoRequest,\n SessionListResponse,\n SessionResponse,\n SessionMessagesResponse,\n SessionMetadataUpdate,\n SessionForkResponse,\n ForkRequest,\n RepoDownloadResponse,\n RepoStatusResponse,\n RepoListResponse,\n RepoDeleteResponse,\n AuthConfig,\n UserResponse,\n WorkspacesResponse,\n LinkedRepoResponse,\n TokenResponse,\n RefreshResponse,\n ContentTreeResponse,\n // Database types\n DatabaseCreate,\n DatabaseUpdate,\n DatabaseConfigResponse,\n DatabaseListResponse,\n DatabaseSchemaResponse,\n DatabaseSampleResponse,\n} from './generated/types.gen';\n\n// Clean return types for SDK methods\nexport interface ListEntry {\n name: string;\n type: string;\n path: string;\n size?: number;\n mtime?: string;\n}\n\nexport interface ListResult {\n entries: ListEntry[];\n cursor?: string | null;\n hasMore: boolean;\n total: number;\n}\n\nexport interface ReadResult {\n content: string;\n size?: number;\n mtime?: string;\n encoding?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface WriteResult {\n path: string;\n etag?: string;\n}\n\nexport interface DeleteResult {\n deleted: boolean;\n path: string;\n}\n\nexport interface ContentTypesResult {\n types: Array<{ name: string; description: string }>;\n total: number;\n}\n\n// Type for SDK response wrapper\ntype SdkResponse<T> = { data: T; error: undefined } | { data: undefined; error: unknown };\n\n// Helper to extract data from SDK response\nfunction extractData<T>(response: SdkResponse<T>): T {\n if (response.error) {\n throw new Error(\n typeof response.error === 'object' && response.error !== null\n ? (response.error as { message?: string }).message || JSON.stringify(response.error)\n : String(response.error)\n );\n }\n return response.data as T;\n}\n\nexport interface OCXPClientOptions {\n /** Base URL of the OCXP server */\n endpoint: string;\n /** Default workspace for all operations */\n workspace?: string;\n /** Static token or async function to get token */\n token?: string | (() => Promise<string>);\n}\n\nexport type ContentTypeValue = 'mission' | 'project' | 'context' | 'sop' | 'repo' | 'artifact' | 'kb' | 'docs';\n\n/**\n * OCXPClient provides a high-level interface to the OCXP API\n */\nexport class OCXPClient {\n private client: Client;\n private workspace: string;\n private tokenProvider?: string | (() => Promise<string>);\n\n constructor(options: OCXPClientOptions) {\n this.workspace = options.workspace || 'dev';\n this.tokenProvider = options.token;\n\n const config = createConfig<ClientOptions>({\n baseUrl: options.endpoint.replace(/\\/$/, ''),\n throwOnError: true,\n });\n\n this.client = createClient(config);\n }\n\n /**\n * Get headers including workspace and auth\n */\n private async getHeaders(): Promise<Record<string, string>> {\n const headers: Record<string, string> = {\n 'X-Workspace': this.workspace,\n };\n\n if (this.tokenProvider) {\n const token =\n typeof this.tokenProvider === 'function' ? await this.tokenProvider() : this.tokenProvider;\n\n if (token) {\n headers['Authorization'] = `Bearer ${token}`;\n }\n }\n\n return headers;\n }\n\n /**\n * Set the workspace for subsequent operations\n */\n setWorkspace(workspace: string): void {\n this.workspace = workspace;\n }\n\n /**\n * Get current workspace\n */\n getWorkspace(): string {\n return this.workspace;\n }\n\n /**\n * Get the underlying client for SDK function calls\n */\n getClient(): Client {\n return this.client;\n }\n\n /**\n * Set the auth token or token provider\n */\n setToken(token: string | (() => Promise<string>)): void {\n this.tokenProvider = token;\n }\n\n // ============== Content Types ==============\n\n /**\n * Get available content types with metadata\n */\n async getContentTypes(counts = false): Promise<ContentTypesResult> {\n const headers = await this.getHeaders();\n const response = await sdk.getContentTypes({\n client: this.client,\n query: { counts },\n headers,\n });\n const data = extractData(response) as { types: Array<{ name: string; description: string }>; total: number };\n return {\n types: data.types || [],\n total: data.total || 0,\n };\n }\n\n // ============== CRUD Operations ==============\n\n /**\n * List content of a specific type\n */\n async list(type: ContentTypeValue, path?: string, limit?: number): Promise<ListResult> {\n const headers = await this.getHeaders();\n const response = await sdk.listContent({\n client: this.client,\n path: { content_type: type },\n query: { path, limit },\n headers,\n });\n const data = extractData(response) as { entries: ListEntry[]; cursor?: string; has_more?: boolean; total: number };\n return {\n entries: data.entries || [],\n cursor: data.cursor,\n hasMore: data.has_more || false,\n total: data.total || 0,\n };\n }\n\n /**\n * Read content by ID\n */\n async read(type: ContentTypeValue, id: string): Promise<ReadResult> {\n const headers = await this.getHeaders();\n const response = await sdk.readContent({\n client: this.client,\n path: { content_type: type, content_id: id },\n headers,\n });\n const data = extractData(response) as { content: string; size?: number; mtime?: string; encoding?: string; metadata?: Record<string, unknown> };\n return {\n content: data.content || '',\n size: data.size,\n mtime: data.mtime,\n encoding: data.encoding,\n metadata: data.metadata,\n };\n }\n\n /**\n * Write content\n */\n async write(\n type: ContentTypeValue,\n id: string,\n content: string,\n options?: {\n encoding?: string;\n etag?: string;\n ifNotExists?: boolean;\n }\n ): Promise<WriteResult> {\n const headers = await this.getHeaders();\n const body: WriteRequest = {\n content,\n encoding: options?.encoding || 'utf-8',\n etag: options?.etag,\n ifNotExists: options?.ifNotExists,\n };\n\n const response = await sdk.writeContent({\n client: this.client,\n path: { content_type: type, content_id: id },\n body,\n headers,\n });\n const data = extractData(response) as { path: string; etag?: string };\n return {\n path: data.path || `${type}/${id}`,\n etag: data.etag,\n };\n }\n\n /**\n * Delete content\n */\n async delete(\n type: ContentTypeValue,\n id: string,\n recursive = false,\n confirm = false\n ): Promise<DeleteResult> {\n const headers = await this.getHeaders();\n const response = await sdk.deleteContent({\n client: this.client,\n path: { content_type: type, content_id: id },\n query: { recursive, confirm },\n headers,\n });\n const data = extractData(response) as { path: string; deleted: boolean };\n return {\n deleted: data.deleted ?? true,\n path: data.path || `${type}/${id}`,\n };\n }\n\n // ============== Query & Search ==============\n\n /**\n * Query content with filters\n */\n async query(type: ContentTypeValue, filters?: QueryFilter[], limit?: number) {\n const headers = await this.getHeaders();\n return sdk.queryContent({\n client: this.client,\n path: { content_type: type },\n body: { filters: filters || [], limit: limit || 100 },\n headers,\n });\n }\n\n /**\n * Full-text search\n */\n async search(type: ContentTypeValue, q: string, limit?: number) {\n const headers = await this.getHeaders();\n return sdk.searchContent({\n client: this.client,\n path: { content_type: type },\n query: { q, limit },\n headers,\n });\n }\n\n // ============== Tree & Stats ==============\n\n /**\n * Get hierarchical tree structure from S3 context\n */\n async tree(type: ContentTypeValue, path?: string, depth?: number): Promise<ContentTreeResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.getContentTree({\n client: this.client,\n path: { content_type: type },\n query: { path, depth },\n headers,\n });\n return extractData(response) as ContentTreeResponse;\n }\n\n /**\n * Get content statistics\n */\n async stats(type: ContentTypeValue, path?: string) {\n const headers = await this.getHeaders();\n return sdk.getContentStats({\n client: this.client,\n path: { content_type: type },\n query: { path },\n headers,\n });\n }\n\n // ============== Bulk Operations ==============\n\n /**\n * Read multiple items at once\n */\n async bulkRead(type: ContentTypeValue, ids: string[]) {\n const headers = await this.getHeaders();\n return sdk.bulkReadContent({\n client: this.client,\n path: { content_type: type },\n body: { ids },\n headers,\n });\n }\n\n /**\n * Write multiple items at once\n */\n async bulkWrite(type: ContentTypeValue, items: Array<{ id: string; content: string }>) {\n const headers = await this.getHeaders();\n return sdk.bulkWriteContent({\n client: this.client,\n path: { content_type: type },\n body: { items },\n headers,\n });\n }\n\n /**\n * Delete multiple items at once\n */\n async bulkDelete(type: ContentTypeValue, ids: string[]) {\n const headers = await this.getHeaders();\n return sdk.bulkDeleteContent({\n client: this.client,\n path: { content_type: type },\n body: { ids },\n headers,\n });\n }\n\n // ============== Knowledge Base ==============\n\n /**\n * Semantic search in Knowledge Base with optional external docs fallback\n */\n async kbQuery(\n query: string,\n options?: {\n searchType?: 'SEMANTIC' | 'HYBRID';\n maxResults?: number;\n docId?: string;\n repoIds?: string[];\n projectId?: string;\n missionId?: string;\n /** Enable external docs fallback (Context7, AWS Docs) when KB has no/low results. Default: true */\n enableFallback?: boolean;\n /** Score threshold (0-1) below which fallback triggers. Default: 0.5 */\n fallbackThreshold?: number;\n /** Save external docs to S3 for future KB queries. Default: true */\n persistExternalDocs?: boolean;\n }\n ) {\n const headers = await this.getHeaders();\n const body: KbQueryRequest = {\n query,\n search_type: options?.searchType || 'SEMANTIC',\n max_results: options?.maxResults || 5,\n doc_id: options?.docId,\n repo_ids: options?.repoIds,\n project_id: options?.projectId,\n mission_id: options?.missionId,\n enable_fallback: options?.enableFallback ?? true,\n fallback_threshold: options?.fallbackThreshold ?? 0.5,\n persist_external_docs: options?.persistExternalDocs ?? true,\n };\n\n const response = await sdk.queryKnowledgeBase({\n client: this.client,\n body,\n headers,\n });\n return extractData(response);\n }\n\n /**\n * RAG with citations\n */\n async kbRag(query: string, sessionId?: string) {\n const headers = await this.getHeaders();\n const response = await sdk.ragKnowledgeBase({\n client: this.client,\n body: { query, session_id: sessionId },\n headers,\n });\n return extractData(response);\n }\n\n // ============== Mission Operations ==============\n\n /**\n * List all missions in workspace\n */\n async listMissions(options?: { projectId?: string; status?: string; limit?: number }): Promise<MissionListResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.listMissions({\n client: this.client,\n query: {\n project_id: options?.projectId,\n status: options?.status,\n limit: options?.limit,\n },\n headers,\n });\n return extractData(response) as MissionListResponse;\n }\n\n /**\n * Create a new mission with auto-generated UUID\n */\n async createMission(title: string, description?: string, projectId?: string, goals?: string[]): Promise<MissionResponse> {\n const headers = await this.getHeaders();\n const body: MissionCreate = {\n title,\n description,\n project_id: projectId,\n goals,\n };\n\n const response = await sdk.createMission({\n client: this.client,\n body,\n headers,\n });\n return extractData(response) as MissionResponse;\n }\n\n /**\n * Get mission by ID\n */\n async getMission(missionId: string): Promise<MissionResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.getMission({\n client: this.client,\n path: { mission_id: missionId },\n headers,\n });\n return extractData(response) as MissionResponse;\n }\n\n /**\n * Update mission\n */\n async updateMission(missionId: string, updates: { title?: string; description?: string; status?: string; progress?: number; notes?: string }): Promise<MissionResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.updateMission({\n client: this.client,\n path: { mission_id: missionId },\n body: updates,\n headers,\n });\n return extractData(response) as MissionResponse;\n }\n\n /**\n * Delete mission\n */\n async deleteMission(missionId: string): Promise<void> {\n const headers = await this.getHeaders();\n await sdk.deleteMission({\n client: this.client,\n path: { mission_id: missionId },\n headers,\n });\n }\n\n /**\n * Add session to mission\n */\n async addMissionSession(missionId: string, sessionId: string): Promise<MissionResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.addSession({\n client: this.client,\n path: { mission_id: missionId },\n body: { session_id: sessionId },\n headers,\n });\n return extractData(response) as MissionResponse;\n }\n\n /**\n * Remove session from mission\n */\n async removeMissionSession(missionId: string, sessionId: string): Promise<MissionResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.removeSession({\n client: this.client,\n path: { mission_id: missionId, session_id: sessionId },\n headers,\n });\n return extractData(response) as MissionResponse;\n }\n\n /**\n * Regenerate mission - archives old docs and triggers AgentCore\n */\n async regenerateMission(\n missionId: string,\n options?: {\n ticket_id?: string;\n ticket_summary?: string;\n ticket_description?: string;\n archive_old_docs?: boolean;\n auto_increment_version?: boolean;\n }\n ): Promise<RegenerateMissionResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.regenerateMission({\n client: this.client,\n path: { mission_id: missionId },\n body: {\n ticket_id: options?.ticket_id,\n ticket_summary: options?.ticket_summary,\n ticket_description: options?.ticket_description,\n archive_old_docs: options?.archive_old_docs ?? true,\n auto_increment_version: options?.auto_increment_version ?? true,\n },\n headers,\n });\n return extractData(response) as RegenerateMissionResponse;\n }\n\n /**\n * Download mission pack as ZIP file\n * @param missionId - Mission ID\n * @returns Blob containing ZIP file\n */\n async downloadMissionPack(missionId: string): Promise<Blob> {\n const headers = await this.getHeaders();\n const config = this.client.getConfig();\n const baseUrl = config.baseUrl || '';\n\n // Use fetch directly for blob response\n const response = await fetch(`${baseUrl}/ocxp/mission/${missionId}/download`, {\n method: 'GET',\n headers: {\n ...headers,\n 'X-Workspace': this.workspace,\n },\n });\n\n if (!response.ok) {\n throw new Error(`Failed to download mission: ${response.status} ${response.statusText}`);\n }\n\n return await response.blob();\n }\n\n // ============== Tools ==============\n\n /**\n * Get mission context for agents\n */\n async getMissionContext(missionId: string) {\n const headers = await this.getHeaders();\n return sdk.getMissionContext({\n client: this.client,\n path: { mission_id: missionId },\n headers,\n });\n }\n\n // ============== Locking ==============\n\n /**\n * Acquire exclusive lock on content\n * @param contentType - Content type (e.g., \"mission\")\n * @param contentId - Content ID (e.g., \"my-mission\")\n * @param ttl - Lock time-to-live in seconds\n */\n async lock(contentType: string, contentId: string, ttl?: number) {\n const headers = await this.getHeaders();\n return sdk.lockContent({\n client: this.client,\n body: {\n content_type: contentType,\n content_id: contentId,\n ttl,\n },\n headers,\n });\n }\n\n /**\n * Release exclusive lock\n * @param contentType - Content type\n * @param contentId - Content ID\n */\n async unlock(contentType: string, contentId: string) {\n const headers = await this.getHeaders();\n return sdk.unlockContent({\n client: this.client,\n body: {\n content_type: contentType,\n content_id: contentId,\n },\n headers,\n });\n }\n\n /**\n * Move/rename content\n * @param source - Source path (e.g., \"mission/old-id\")\n * @param destination - Destination path (e.g., \"mission/new-id\")\n * @param overwrite - Whether to overwrite existing content at destination\n */\n async move(source: string, destination: string, overwrite = false) {\n const headers = await this.getHeaders();\n const response = await sdk.moveContent({\n client: this.client,\n body: { source, destination, overwrite },\n headers,\n });\n return extractData(response);\n }\n\n // ============== GitHub API Proxy ==============\n\n /**\n * Check if a repository is accessible\n * @param repoUrl - Full GitHub repository URL\n */\n async githubCheckAccess(repoUrl: string) {\n const headers = await this.getHeaders();\n const response = await sdk.githubCheckAccess({\n client: this.client,\n body: { repo_url: repoUrl },\n headers,\n });\n return extractData(response);\n }\n\n /**\n * List branches for a repository\n * @param repoUrl - Full GitHub repository URL\n */\n async githubListBranches(repoUrl: string) {\n const headers = await this.getHeaders();\n const response = await sdk.githubListBranches({\n client: this.client,\n body: { repo_url: repoUrl },\n headers,\n });\n return extractData(response);\n }\n\n /**\n * Get repository contents at a path\n * @param repoUrl - Full GitHub repository URL\n * @param path - Path within the repository\n * @param ref - Git ref (branch, tag, or commit)\n */\n async githubGetContents(repoUrl: string, path = '', ref?: string) {\n const headers = await this.getHeaders();\n const response = await sdk.githubGetContents({\n client: this.client,\n body: { repo_url: repoUrl, path, ref },\n headers,\n });\n return extractData(response);\n }\n\n // ============== Repository Management ==============\n\n /**\n * Download repository and trigger vectorization\n * @param repoUrl - Full GitHub repository URL\n * @param branch - Optional branch (default: main)\n * @param options - Download options (mode, repo_type, path)\n */\n async downloadRepository(\n repoUrl: string,\n branch?: string,\n options?: {\n mode?: string;\n repo_type?: 'code' | 'docs' | 'auto';\n path?: string;\n }\n ): Promise<RepoDownloadResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.downloadRepository({\n client: this.client,\n body: {\n repo_url: repoUrl,\n branch,\n mode: options?.mode,\n repo_type: options?.repo_type,\n path: options?.path,\n },\n headers,\n });\n return extractData(response) as RepoDownloadResponse;\n }\n\n /**\n * Get repository download status\n */\n async getRepoStatus(jobId: string): Promise<RepoStatusResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.getRepoDownloadStatus({\n client: this.client,\n path: { job_id: jobId },\n headers,\n });\n return extractData(response) as RepoStatusResponse;\n }\n\n /**\n * List all downloaded repositories in workspace\n */\n async listRepos(): Promise<RepoListResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.listDownloadedRepos({\n client: this.client,\n headers,\n });\n return extractData(response) as RepoListResponse;\n }\n\n /**\n * Delete a downloaded repository by its UUID\n */\n async deleteRepo(repoId: string): Promise<RepoDeleteResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.deleteRepo({\n client: this.client,\n path: { repo_id: repoId },\n headers,\n });\n return extractData(response) as RepoDeleteResponse;\n }\n\n // ============== Database Operations ==============\n\n /**\n * List all database configurations in workspace\n */\n async listDatabases(): Promise<DatabaseListResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.listDatabases({\n client: this.client,\n headers,\n });\n return extractData(response) as DatabaseListResponse;\n }\n\n /**\n * Create a new database configuration\n */\n async createDatabase(config: DatabaseCreate): Promise<DatabaseConfigResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.createDatabase({\n client: this.client,\n body: config,\n headers,\n });\n return extractData(response) as DatabaseConfigResponse;\n }\n\n /**\n * Get database configuration by ID\n */\n async getDatabase(databaseId: string): Promise<DatabaseConfigResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.getDatabase({\n client: this.client,\n path: { database_id: databaseId },\n headers,\n });\n return extractData(response) as DatabaseConfigResponse;\n }\n\n /**\n * Update database configuration\n */\n async updateDatabase(databaseId: string, updates: DatabaseUpdate): Promise<DatabaseConfigResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.updateDatabase({\n client: this.client,\n path: { database_id: databaseId },\n body: updates,\n headers,\n });\n return extractData(response) as DatabaseConfigResponse;\n }\n\n /**\n * Delete database configuration\n */\n async deleteDatabase(databaseId: string): Promise<void> {\n const headers = await this.getHeaders();\n await sdk.deleteDatabase({\n client: this.client,\n path: { database_id: databaseId },\n headers,\n });\n }\n\n /**\n * Test database connection\n */\n async testDatabaseConnection(databaseId: string): Promise<{ success: boolean; message: string; latency_ms?: number }> {\n const headers = await this.getHeaders();\n const response = await sdk.testDatabaseConnection({\n client: this.client,\n path: { database_id: databaseId },\n headers,\n });\n return extractData(response) as { success: boolean; message: string; latency_ms?: number };\n }\n\n /**\n * Get database schema (tables and columns)\n */\n async getDatabaseSchema(databaseId?: string): Promise<DatabaseSchemaResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.getSchema({\n client: this.client,\n query: { database_id: databaseId },\n headers,\n });\n return extractData(response) as DatabaseSchemaResponse;\n }\n\n /**\n * Get sample data from a table\n */\n async getDatabaseSample(tableName: string, databaseId?: string, limit?: number): Promise<DatabaseSampleResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.getSample({\n client: this.client,\n path: { table_name: tableName },\n query: { database_id: databaseId, limit },\n headers,\n });\n return extractData(response) as DatabaseSampleResponse;\n }\n\n /**\n * List all tables in database\n */\n async listDatabaseTables(databaseId?: string): Promise<{ tables: string[] }> {\n const headers = await this.getHeaders();\n const response = await sdk.listTables({\n client: this.client,\n query: { database_id: databaseId },\n headers,\n });\n return extractData(response) as { tables: string[] };\n }\n\n // ============== Project Operations ==============\n\n /**\n * List all projects in workspace\n */\n async listProjects(limit?: number): Promise<ProjectListResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.listProjects({\n client: this.client,\n query: { limit },\n headers,\n });\n return extractData(response) as ProjectListResponse;\n }\n\n /**\n * Create a new project with auto-generated UUID\n */\n async createProject(name: string, description?: string): Promise<ProjectResponse> {\n const headers = await this.getHeaders();\n const body: ProjectCreate = {\n name,\n description,\n };\n const response = await sdk.createProject({\n client: this.client,\n body,\n headers,\n });\n return extractData(response) as ProjectResponse;\n }\n\n /**\n * Get project by ID\n */\n async getProject(projectId: string): Promise<ProjectResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.getProject({\n client: this.client,\n path: { project_id: projectId },\n headers,\n });\n return extractData(response) as ProjectResponse;\n }\n\n /**\n * Update project\n */\n async updateProject(projectId: string, updates: ProjectUpdate): Promise<ProjectResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.updateProject({\n client: this.client,\n path: { project_id: projectId },\n body: updates,\n headers,\n });\n return extractData(response) as ProjectResponse;\n }\n\n /**\n * Delete project\n */\n async deleteProject(projectId: string): Promise<void> {\n const headers = await this.getHeaders();\n await sdk.deleteProject({\n client: this.client,\n path: { project_id: projectId },\n headers,\n });\n }\n\n /**\n * Add repository to project\n */\n async addProjectRepo(\n projectId: string,\n repoId: string,\n options?: { category?: string; priority?: number; autoInclude?: boolean; branch?: string }\n ): Promise<ProjectResponse> {\n const headers = await this.getHeaders();\n const body: AddRepoRequest = {\n repo_id: repoId,\n category: options?.category,\n priority: options?.priority,\n auto_include: options?.autoInclude,\n branch: options?.branch,\n };\n const response = await sdk.addLinkedRepo({\n client: this.client,\n path: { project_id: projectId },\n body,\n headers,\n });\n return extractData(response) as ProjectResponse;\n }\n\n /**\n * Remove repository from project\n */\n async removeProjectRepo(projectId: string, repoId: string): Promise<ProjectResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.removeLinkedRepo({\n client: this.client,\n path: { project_id: projectId, repo_id: repoId },\n headers,\n });\n return extractData(response) as ProjectResponse;\n }\n\n /**\n * Set default repository for project\n */\n async setDefaultRepo(projectId: string, repoId: string | null): Promise<ProjectResponse> {\n const headers = await this.getHeaders();\n const body: SetDefaultRepoRequest = { repo_id: repoId };\n const response = await sdk.setDefaultRepo({\n client: this.client,\n path: { project_id: projectId },\n body,\n headers,\n });\n return extractData(response) as ProjectResponse;\n }\n\n /**\n * Get context repositories for project (auto-include enabled)\n */\n async getContextRepos(projectId: string): Promise<LinkedRepoResponse[]> {\n const headers = await this.getHeaders();\n const response = await sdk.getContextRepos({\n client: this.client,\n path: { project_id: projectId },\n headers,\n });\n const data = extractData(response) as { repos?: LinkedRepoResponse[] };\n return data.repos || [];\n }\n\n /**\n * Add mission to project\n */\n async addProjectMission(projectId: string, missionId: string): Promise<ProjectResponse> {\n const headers = await this.getHeaders();\n const body: AddMissionRequest = { mission_id: missionId };\n const response = await sdk.addMission({\n client: this.client,\n path: { project_id: projectId },\n body,\n headers,\n });\n return extractData(response) as ProjectResponse;\n }\n\n /**\n * Remove mission from project\n */\n async removeProjectMission(projectId: string, missionId: string): Promise<ProjectResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.removeMission({\n client: this.client,\n path: { project_id: projectId, mission_id: missionId },\n headers,\n });\n return extractData(response) as ProjectResponse;\n }\n\n // ============== Session Operations ==============\n\n /**\n * List all sessions in workspace\n */\n async listSessions(limit?: number, status?: string): Promise<SessionListResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.listSessions({\n client: this.client,\n query: { limit, status },\n headers,\n });\n return extractData(response) as SessionListResponse;\n }\n\n /**\n * Get session messages\n */\n async getSessionMessages(sessionId: string, limit?: number): Promise<SessionMessagesResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.getSessionMessages({\n client: this.client,\n path: { session_id: sessionId },\n query: { limit },\n headers,\n });\n return extractData(response) as SessionMessagesResponse;\n }\n\n /**\n * Update session metadata\n */\n async updateSessionMetadata(sessionId: string, updates: SessionMetadataUpdate): Promise<SessionResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.updateSessionMetadata({\n client: this.client,\n path: { session_id: sessionId },\n body: updates,\n headers,\n });\n return extractData(response) as SessionResponse;\n }\n\n /**\n * Fork session\n */\n async forkSession(sessionId: string, missionId: string, forkPoint?: number): Promise<SessionForkResponse> {\n const headers = await this.getHeaders();\n const body: ForkRequest = { mission_id: missionId, fork_point: forkPoint };\n const response = await sdk.forkSession({\n client: this.client,\n path: { session_id: sessionId },\n body,\n headers,\n });\n return extractData(response) as SessionForkResponse;\n }\n\n /**\n * Archive session\n */\n async archiveSession(sessionId: string): Promise<void> {\n const headers = await this.getHeaders();\n await sdk.archiveSession({\n client: this.client,\n path: { session_id: sessionId },\n headers,\n });\n }\n\n // ============== Auth Operations ==============\n\n /**\n * Get auth configuration (public endpoint)\n */\n async getAuthConfig(): Promise<AuthConfig> {\n const response = await sdk.getAuthConfig({\n client: this.client,\n });\n return extractData(response) as AuthConfig;\n }\n\n /**\n * Get current authenticated user\n */\n async getCurrentUser(): Promise<UserResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.getCurrentUser({\n client: this.client,\n headers,\n });\n return extractData(response) as UserResponse;\n }\n\n /**\n * List workspaces for authenticated user\n */\n async listWorkspaces(): Promise<WorkspacesResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.listWorkspaces({\n client: this.client,\n headers,\n });\n return extractData(response) as WorkspacesResponse;\n }\n\n /**\n * Login with username and password (JSON endpoint for programmatic clients)\n * @param username - Cognito username\n * @param password - User password\n * @returns Token response with access_token, refresh_token, and expires_in\n */\n async login(username: string, password: string): Promise<TokenResponse> {\n const response = await sdk.login({\n client: this.client,\n body: { username, password },\n });\n return extractData(response) as TokenResponse;\n }\n\n /**\n * Refresh access token using refresh token\n * @param refreshToken - The refresh token from login\n * @returns New access token (refresh token remains the same)\n */\n async refreshToken(refreshToken: string): Promise<RefreshResponse> {\n const response = await sdk.refreshTokens({\n client: this.client,\n body: { refreshToken },\n });\n return extractData(response) as RefreshResponse;\n }\n\n /**\n * Set GitHub token for the authenticated user\n * Stores the token server-side linked to the Cognito identity\n * @param token - GitHub Personal Access Token\n * @returns Success response\n */\n async setGitHubToken(token: string): Promise<{ success: boolean }> {\n const headers = await this.getHeaders();\n const response = await this.client.request<{ success: boolean } | true, unknown>({\n method: 'PUT',\n url: '/auth/github-token',\n headers,\n body: { github_token: token },\n });\n if (response.error) {\n throw new Error(`Failed to set GitHub token: ${typeof response.error === 'object' ? JSON.stringify(response.error) : response.error}`);\n }\n // Handle case where response.data might be true (boolean) or object\n if (response.data === true) {\n return { success: true };\n }\n return response.data || { success: true };\n }\n\n /**\n * Get GitHub token status for the authenticated user\n * @returns Token status (configured or not)\n */\n async getGitHubTokenStatus(): Promise<{ configured: boolean; username?: string }> {\n const headers = await this.getHeaders();\n const response = await this.client.request<{ configured: boolean; username?: string }, unknown>({\n method: 'GET',\n url: '/auth/github-token',\n headers,\n });\n if (response.error) {\n throw new Error(`Failed to get GitHub token status: ${typeof response.error === 'object' ? JSON.stringify(response.error) : response.error}`);\n }\n const data = response.data;\n if (data && typeof data === 'object' && 'configured' in data) {\n return data as { configured: boolean; username?: string };\n }\n return { configured: false };\n }\n\n /**\n * Delete GitHub token for the authenticated user\n * @returns Success response\n */\n async deleteGitHubToken(): Promise<{ success: boolean }> {\n const headers = await this.getHeaders();\n const response = await this.client.request<{ success: boolean } | true, unknown>({\n method: 'DELETE',\n url: '/auth/github-token',\n headers,\n });\n if (response.error) {\n throw new Error(`Failed to delete GitHub token: ${typeof response.error === 'object' ? JSON.stringify(response.error) : response.error}`);\n }\n // Handle case where response.data might be true (boolean) or object\n if (response.data === true) {\n return { success: true };\n }\n return response.data || { success: true };\n }\n\n // ============== Namespaced Accessors ==============\n\n private _mission?: MissionNamespace;\n private _project?: ProjectNamespace;\n private _session?: SessionNamespace;\n private _kb?: KBNamespace;\n\n /**\n * Mission namespace for convenient mission operations\n * @example ocxp.mission.list({ status: 'pending' })\n */\n get mission(): MissionNamespace {\n if (!this._mission) {\n this._mission = new MissionNamespace(this);\n }\n return this._mission;\n }\n\n /**\n * Project namespace for convenient project operations\n * @example ocxp.project.list()\n */\n get project(): ProjectNamespace {\n if (!this._project) {\n this._project = new ProjectNamespace(this);\n }\n return this._project;\n }\n\n /**\n * Session namespace for convenient session operations\n * @example ocxp.session.list({ status: 'active' })\n */\n get session(): SessionNamespace {\n if (!this._session) {\n this._session = new SessionNamespace(this);\n }\n return this._session;\n }\n\n /**\n * KB namespace for convenient knowledge base operations\n * @example ocxp.kb.query('search term')\n */\n get kb(): KBNamespace {\n if (!this._kb) {\n this._kb = new KBNamespace(this);\n }\n return this._kb;\n }\n}\n\n// ============== Namespace Classes ==============\n\n/**\n * Mission namespace for convenient mission operations\n */\nexport class MissionNamespace {\n constructor(private client: OCXPClient) {}\n\n /**\n * List missions with optional filtering\n * @example ocxp.mission.list({ status: 'active', limit: 10 })\n */\n async list(options?: { projectId?: string; status?: string; limit?: number }): Promise<MissionListResponse> {\n return this.client.listMissions(options);\n }\n\n /**\n * Get a mission by ID\n * @example ocxp.mission.get('uuid')\n */\n async get(missionId: string): Promise<MissionResponse> {\n return this.client.getMission(missionId);\n }\n\n /**\n * Create a new mission with auto-generated UUID\n * @example ocxp.mission.create({ title: 'My Mission', description: 'Description' })\n */\n async create(data: { title: string; description?: string; projectId?: string; goals?: string[] }): Promise<MissionResponse> {\n return this.client.createMission(data.title, data.description, data.projectId, data.goals);\n }\n\n /**\n * Update mission\n */\n async update(missionId: string, updates: { title?: string; description?: string; status?: string; progress?: number; notes?: string }): Promise<MissionResponse> {\n return this.client.updateMission(missionId, updates);\n }\n\n /**\n * Delete mission\n */\n async delete(missionId: string): Promise<void> {\n return this.client.deleteMission(missionId);\n }\n\n /**\n * Add session to mission\n */\n async addSession(missionId: string, sessionId: string): Promise<MissionResponse> {\n return this.client.addMissionSession(missionId, sessionId);\n }\n\n /**\n * Remove session from mission\n */\n async removeSession(missionId: string, sessionId: string): Promise<MissionResponse> {\n return this.client.removeMissionSession(missionId, sessionId);\n }\n\n /**\n * Regenerate mission - archives old docs and triggers AgentCore\n * @example ocxp.mission.regenerate('uuid', { ticket_id: 'AMC-123' })\n */\n async regenerate(\n missionId: string,\n options?: {\n ticket_id?: string;\n ticket_summary?: string;\n ticket_description?: string;\n archive_old_docs?: boolean;\n auto_increment_version?: boolean;\n }\n ): Promise<RegenerateMissionResponse> {\n return this.client.regenerateMission(missionId, options);\n }\n\n /**\n * Download mission pack as ZIP\n * @example await ocxp.mission.download('mission-id')\n */\n async download(missionId: string): Promise<Blob> {\n return this.client.downloadMissionPack(missionId);\n }\n\n /**\n * Get mission context for agents\n * @example ocxp.mission.getContext('uuid')\n */\n async getContext(missionId: string) {\n return this.client.getMissionContext(missionId);\n }\n\n /**\n * Get mission content tree structure from S3\n * @example ocxp.mission.tree('subfolder', 5)\n */\n async tree(path?: string, depth?: number): Promise<ContentTreeResponse> {\n return this.client.tree('mission', path, depth);\n }\n}\n\n/**\n * Project namespace for convenient project operations\n */\nexport class ProjectNamespace {\n constructor(private client: OCXPClient) {}\n\n /**\n * List all projects\n * @example ocxp.project.list()\n */\n async list(limit?: number): Promise<ProjectListResponse> {\n return this.client.listProjects(limit);\n }\n\n /**\n * Get a project by ID\n * @example ocxp.project.get('my-project')\n */\n async get(projectId: string): Promise<ProjectResponse> {\n return this.client.getProject(projectId);\n }\n\n /**\n * Create a new project with auto-generated UUID\n * @example ocxp.project.create({ name: 'My Project', description: 'Optional description' })\n */\n async create(data: { name: string; description?: string }): Promise<ProjectResponse> {\n return this.client.createProject(data.name, data.description);\n }\n\n /**\n * Update a project\n */\n async update(projectId: string, data: ProjectUpdate): Promise<ProjectResponse> {\n return this.client.updateProject(projectId, data);\n }\n\n /**\n * Delete a project\n */\n async delete(projectId: string): Promise<void> {\n return this.client.deleteProject(projectId);\n }\n\n /**\n * Add a repository to a project\n */\n async addRepo(projectId: string, repoId: string, options?: { category?: string; priority?: number; autoInclude?: boolean; branch?: string }): Promise<ProjectResponse> {\n return this.client.addProjectRepo(projectId, repoId, options);\n }\n\n /**\n * Remove a repository from a project\n */\n async removeRepo(projectId: string, repoId: string): Promise<ProjectResponse> {\n return this.client.removeProjectRepo(projectId, repoId);\n }\n\n /**\n * Set the default repository for a project\n */\n async setDefaultRepo(projectId: string, repoId: string | null): Promise<ProjectResponse> {\n return this.client.setDefaultRepo(projectId, repoId);\n }\n\n /**\n * Get context repositories for a project\n */\n async getContextRepos(projectId: string): Promise<LinkedRepoResponse[]> {\n return this.client.getContextRepos(projectId);\n }\n\n /**\n * Add a mission to a project\n */\n async addMission(projectId: string, missionId: string): Promise<ProjectResponse> {\n return this.client.addProjectMission(projectId, missionId);\n }\n\n /**\n * Remove a mission from a project\n */\n async removeMission(projectId: string, missionId: string): Promise<ProjectResponse> {\n return this.client.removeProjectMission(projectId, missionId);\n }\n\n /**\n * Get project content tree structure from S3\n * @example ocxp.project.tree('subfolder', 5)\n */\n async tree(path?: string, depth?: number): Promise<ContentTreeResponse> {\n return this.client.tree('project', path, depth);\n }\n}\n\n/**\n * Session namespace for convenient session operations\n */\nexport class SessionNamespace {\n constructor(private client: OCXPClient) {}\n\n /**\n * List sessions with optional filtering\n * @example ocxp.session.list({ status: 'active', limit: 10 })\n */\n async list(options?: { status?: string; limit?: number }): Promise<SessionListResponse> {\n return this.client.listSessions(options?.limit, options?.status);\n }\n\n /**\n * Get session messages\n * @example ocxp.session.getMessages('session-id')\n */\n async getMessages(sessionId: string): Promise<SessionMessagesResponse> {\n return this.client.getSessionMessages(sessionId);\n }\n\n /**\n * Update session metadata\n */\n async updateMetadata(sessionId: string, data: SessionMetadataUpdate): Promise<SessionResponse> {\n return this.client.updateSessionMetadata(sessionId, data);\n }\n\n /**\n * Fork a session\n */\n async fork(sessionId: string, missionId: string, forkPoint?: number): Promise<SessionForkResponse> {\n return this.client.forkSession(sessionId, missionId, forkPoint);\n }\n\n /**\n * Archive a session\n */\n async archive(sessionId: string): Promise<void> {\n return this.client.archiveSession(sessionId);\n }\n}\n\n/**\n * KB namespace for convenient knowledge base operations\n */\nexport class KBNamespace {\n constructor(private client: OCXPClient) {}\n\n /**\n * Query the knowledge base with optional filtering and external docs fallback\n * @example ocxp.kb.query('search term', { searchType: 'HYBRID', maxResults: 10 })\n * @example ocxp.kb.query('authentication', { projectId: 'my-project', missionId: 'CTX-123' })\n * @example ocxp.kb.query('strands agent', { enableFallback: true, persistExternalDocs: true })\n */\n async query(query: string, options?: {\n searchType?: 'SEMANTIC' | 'HYBRID';\n maxResults?: number;\n docId?: string;\n repoIds?: string[];\n projectId?: string;\n missionId?: string;\n /** Enable external docs fallback (Context7, AWS Docs) when KB has no/low results. Default: true */\n enableFallback?: boolean;\n /** Score threshold (0-1) below which fallback triggers. Default: 0.5 */\n fallbackThreshold?: number;\n /** Save external docs to S3 for future KB queries. Default: true */\n persistExternalDocs?: boolean;\n }) {\n return this.client.kbQuery(query, options);\n }\n\n /**\n * RAG query with LLM response and citations\n * @example ocxp.kb.rag('What is OCXP?')\n */\n async rag(query: string, sessionId?: string) {\n return this.client.kbRag(query, sessionId);\n }\n}\n\n/**\n * Create a new OCXP client instance\n */\nexport function createOCXPClient(options: OCXPClientOptions): OCXPClient {\n return new OCXPClient(options);\n}\n","/**\n * OCXP Path Utilities\n *\n * Provides path parsing and normalization for OCXP content paths.\n * Paths follow the format: {type}/{id}/{subpath}\n *\n * All content types use singular form:\n * - mission, project, context, sop, repo, artifact, kb, docs\n *\n * Examples:\n * - 'mission/CTX-123/PHASES.md' -> { type: 'mission', id: 'CTX-123/PHASES.md' }\n * - 'mission/' -> { type: 'mission', id: undefined }\n * - 'project/my-project' -> { type: 'project', id: 'my-project' }\n */\n\nimport type { ContentTypeValue } from './client';\n\n/**\n * Valid content types for OCXP API\n */\nexport const VALID_CONTENT_TYPES: ContentTypeValue[] = [\n 'mission',\n 'project',\n 'context',\n 'sop',\n 'repo',\n 'artifact',\n 'kb',\n 'docs',\n];\n\n/**\n * Mapping from plural/alternate forms to canonical singular form\n */\nconst TYPE_ALIASES: Record<string, ContentTypeValue> = {\n mission: 'mission',\n missions: 'mission',\n project: 'project',\n projects: 'project',\n context: 'context',\n contexts: 'context',\n sop: 'sop',\n sops: 'sop',\n repo: 'repo',\n repos: 'repo',\n artifact: 'artifact',\n artifacts: 'artifact',\n kb: 'kb',\n kbs: 'kb',\n docs: 'docs',\n};\n\n/**\n * Parsed path result\n */\nexport interface ParsedPath {\n /** Content type (mission, project, etc.) */\n type: ContentTypeValue;\n /** Content ID (everything after the type) */\n id: string | undefined;\n}\n\n/**\n * Parse a path into content type and id\n *\n * @example\n * parsePath('mission/CTX-123/PHASES.md') // { type: 'mission', id: 'CTX-123/PHASES.md' }\n * parsePath('mission/') // { type: 'mission', id: undefined }\n * parsePath('project/my-project') // { type: 'project', id: 'my-project' }\n * parsePath('context/shared/utils') // { type: 'context', id: 'shared/utils' }\n *\n * Note: Also handles legacy plural forms (missions/, projects/) for backward compatibility.\n *\n * @param path - Path string like 'mission/id/file.md'\n * @returns Parsed path with type and id\n * @throws Error if path is invalid or type is not recognized\n */\nexport function parsePath(path: string): ParsedPath {\n // Remove leading/trailing slashes for parsing\n const normalized = path.replace(/^\\/+/, '').replace(/\\/+$/, '');\n const parts = normalized.split('/');\n\n if (parts.length === 0 || !parts[0]) {\n throw new Error(`Invalid path: ${path}`);\n }\n\n const typeKey = parts[0].toLowerCase();\n const type = TYPE_ALIASES[typeKey];\n\n if (!type) {\n throw new Error(\n `Invalid content type: ${parts[0]}. Valid types: ${VALID_CONTENT_TYPES.join(', ')}`\n );\n }\n\n // Get the id (everything after the type)\n const id = parts.length > 1 ? parts.slice(1).join('/') : undefined;\n\n return { type, id };\n}\n\n/**\n * Normalize path to use singular content type prefixes\n *\n * Legacy S3 storage used plural folders (missions/) but OCXP API uses\n * singular form (mission/). This function converts plural to singular\n * for backward compatibility with legacy data.\n *\n * @example\n * normalizePath('missions/id/file.md') // 'mission/id/file.md'\n * normalizePath('projects/my-project') // 'project/my-project'\n * normalizePath('mission/id/file.md') // 'mission/id/file.md' (already normalized)\n *\n * @param path - Path string to normalize\n * @returns Normalized path with singular type prefix\n */\nexport function normalizePath(path: string): string {\n return (\n path\n // S3 plural to OCXP singular\n .replace(/^missions\\//, 'mission/')\n .replace(/^projects\\//, 'project/')\n .replace(/^contexts\\//, 'context/')\n .replace(/^sops\\//, 'sop/')\n .replace(/^repos\\//, 'repo/')\n .replace(/^artifacts\\//, 'artifact/')\n .replace(/^kbs\\//, 'kb/')\n );\n}\n\n/**\n * Check if a content type string is valid\n *\n * @param type - Type string to validate\n * @returns true if valid content type\n */\nexport function isValidContentType(type: string): type is ContentTypeValue {\n return VALID_CONTENT_TYPES.includes(type as ContentTypeValue);\n}\n\n/**\n * Get the canonical content type for a type string (handles aliases)\n *\n * @param type - Type string (may be plural or alias)\n * @returns Canonical content type or undefined if invalid\n */\nexport function getCanonicalType(type: string): ContentTypeValue | undefined {\n return TYPE_ALIASES[type.toLowerCase()];\n}\n\n/**\n * Build a path from type and id\n *\n * @example\n * buildPath('mission', 'CTX-123/PHASES.md') // 'mission/CTX-123/PHASES.md'\n * buildPath('mission') // 'mission/'\n *\n * @param type - Content type\n * @param id - Optional content ID\n * @returns Combined path string\n */\nexport function buildPath(type: ContentTypeValue, id?: string): string {\n if (id) {\n return `${type}/${id}`;\n }\n return `${type}/`;\n}\n","/**\n * OCXPPathService - Path-based wrapper for OCXPClient\n *\n * Provides a simplified interface for file operations using path strings\n * instead of separate type and id parameters.\n *\n * @example\n * ```typescript\n * const service = new OCXPPathService({\n * endpoint: 'https://api.example.com',\n * workspace: 'prod',\n * token: () => authManager.getAccessToken(),\n * });\n *\n * // List operations\n * const entries = await service.list('mission/');\n *\n * // Read operations\n * const file = await service.read('mission/my-mission/PHASES.md');\n *\n * // Write operations\n * await service.write('mission/my-mission/PHASES.md', content);\n * await service.delete('mission/old-mission/README.md');\n * ```\n */\n\nimport { OCXPClient, type OCXPClientOptions } from './client';\nimport { parsePath, normalizePath } from './path';\n\n/**\n * Entry from list operations\n */\nexport interface PathEntry {\n /** File or directory name */\n name: string;\n /** Full path */\n path: string;\n /** Entry type */\n type: 'file' | 'directory';\n /** File size in bytes */\n size?: number;\n /** Last modified time (ISO string) */\n mtime?: string;\n /** Content hash */\n hash?: string;\n}\n\n/**\n * Read result with path context\n */\nexport interface PathReadResult {\n /** Original path */\n path: string;\n /** Content type */\n type: string;\n /** File content */\n content: string;\n /** Content encoding */\n encoding: string;\n /** File info */\n info?: {\n path: string;\n size?: number;\n mtime?: string;\n };\n}\n\n/**\n * Write options\n */\nexport interface PathWriteOptions {\n /** Content encoding */\n encoding?: string;\n /** Content type */\n contentType?: string;\n /** Custom metadata */\n metadata?: Record<string, unknown>;\n /** Only write if file doesn't exist */\n ifNotExists?: boolean;\n /** ETag for conditional writes */\n etag?: string;\n}\n\n/**\n * Write result\n */\nexport interface PathWriteResult {\n /** Operation success */\n success: boolean;\n /** Path that was written */\n path: string;\n /** File size after write */\n size?: number;\n}\n\n/**\n * Move result\n */\nexport interface PathMoveResult {\n /** Operation success */\n success: boolean;\n /** Source path */\n sourcePath: string;\n /** Destination path */\n destPath: string;\n}\n\n/**\n * File info\n */\nexport interface PathFileInfo {\n /** File path */\n path: string;\n /** File size in bytes */\n size?: number;\n /** Last modified time (ISO string) */\n mtime?: string;\n /** Content hash */\n hash?: string;\n /** MIME content type */\n contentType?: string;\n}\n\n/**\n * List result with path context\n */\nexport interface PathListResult {\n /** Original path */\n path: string;\n /** List entries */\n entries: PathEntry[];\n /** Pagination cursor */\n cursor?: string | null;\n /** More entries available */\n hasMore?: boolean;\n /** Total count */\n total?: number;\n}\n\n/**\n * Path service options (extends client options)\n */\nexport interface OCXPPathServiceOptions extends OCXPClientOptions {\n /** Request timeout in milliseconds */\n timeout?: number;\n}\n\n/**\n * Token provider function type\n */\nexport type TokenProvider = () => Promise<string | null>;\n\n/**\n * OCXPPathService - Path-based file operations via OCXP protocol\n *\n * This service wraps OCXPClient and provides a simpler interface using\n * path strings like 'mission/id/file.md' instead of separate type and id.\n */\nexport class OCXPPathService {\n private client: OCXPClient;\n private readonly endpoint: string;\n private readonly workspace: string;\n\n constructor(options: OCXPPathServiceOptions) {\n this.endpoint = options.endpoint;\n this.workspace = options.workspace || 'dev';\n\n this.client = new OCXPClient({\n endpoint: options.endpoint,\n workspace: this.workspace,\n token: options.token,\n });\n }\n\n // ===========================================================================\n // Read Operations\n // ===========================================================================\n\n /**\n * List directory contents\n *\n * @param path - Path like 'mission/' or 'project/'\n * @param limit - Maximum entries to return\n * @returns List result with entries\n */\n async list(path: string, limit?: number): Promise<PathListResult> {\n const { type, id } = parsePath(path);\n\n const result = await this.client.list(type, id, limit);\n\n return {\n path,\n entries: result.entries.map(\n (entry): PathEntry => ({\n name: entry.name ?? '',\n path: normalizePath(entry.path ?? ''),\n type: (entry.type ?? 'file') as 'file' | 'directory',\n size: entry.size,\n mtime: entry.mtime,\n })\n ),\n cursor: result.cursor,\n hasMore: result.hasMore,\n total: result.total,\n };\n }\n\n /**\n * Read file content\n *\n * @param path - Path like 'mission/CTX-123/PHASES.md'\n * @returns Read result with content\n */\n async read(path: string): Promise<PathReadResult> {\n const { type, id } = parsePath(path);\n\n if (!id) {\n throw new Error(`Cannot read directory path: ${path}`);\n }\n\n const result = await this.client.read(type, id);\n\n return {\n path,\n type: 'text',\n content: result.content,\n encoding: result.encoding ?? 'utf-8',\n info: {\n path,\n size: result.size,\n mtime: result.mtime,\n },\n };\n }\n\n /**\n * Check if path exists\n *\n * @param path - Path to check\n * @returns true if exists\n */\n async exists(path: string): Promise<boolean> {\n try {\n const { type, id } = parsePath(path);\n\n if (!id) {\n // For directory paths, try list instead\n await this.client.list(type);\n return true;\n }\n\n await this.client.read(type, id);\n return true;\n } catch {\n return false;\n }\n }\n\n /**\n * Get file metadata\n *\n * @param path - Path to get info for\n * @returns File info\n */\n async info(path: string): Promise<PathFileInfo> {\n const { type, id } = parsePath(path);\n\n const result = (await this.client.stats(type, id)) as unknown as {\n data?: {\n size?: number;\n mtime?: string;\n hash?: string;\n contentType?: string;\n };\n };\n\n const data = result?.data || {};\n\n return {\n path,\n size: data.size,\n mtime: data.mtime,\n hash: data.hash,\n contentType: data.contentType,\n };\n }\n\n // ===========================================================================\n // Write Operations\n // ===========================================================================\n\n /**\n * Write/update file content\n *\n * @param path - Path like 'mission/CTX-123/PHASES.md'\n * @param content - File content\n * @param options - Write options\n * @returns Write result\n */\n async write(path: string, content: string, options?: PathWriteOptions): Promise<PathWriteResult> {\n const { type, id } = parsePath(path);\n\n if (!id) {\n throw new Error(`Cannot write to directory path: ${path}`);\n }\n\n await this.client.write(type, id, content, {\n encoding: options?.encoding,\n ifNotExists: options?.ifNotExists,\n etag: options?.etag,\n });\n\n return {\n success: true,\n path,\n };\n }\n\n /**\n * Delete a file\n *\n * @param path - Path like 'mission/CTX-123/PHASES.md'\n * @returns Write result\n */\n async delete(path: string): Promise<PathWriteResult> {\n const { type, id } = parsePath(path);\n\n if (!id) {\n throw new Error(`Cannot delete directory path without id: ${path}`);\n }\n\n await this.client.delete(type, id);\n\n return {\n success: true,\n path,\n };\n }\n\n /**\n * Move/rename a file\n *\n * Implemented as read + write + delete\n *\n * @param sourcePath - Source path\n * @param destPath - Destination path\n * @returns Move result\n */\n async move(sourcePath: string, destPath: string): Promise<PathMoveResult> {\n // Read source content\n const content = await this.read(sourcePath);\n\n // Write to destination\n await this.write(destPath, content.content);\n\n // Delete source\n await this.delete(sourcePath);\n\n return {\n success: true,\n sourcePath,\n destPath,\n };\n }\n\n // ===========================================================================\n // Utility Methods\n // ===========================================================================\n\n /**\n * Get the underlying OCXPClient\n */\n getClient(): OCXPClient {\n return this.client;\n }\n\n /**\n * Get the API endpoint\n */\n getEndpoint(): string {\n return this.endpoint;\n }\n\n /**\n * Get the workspace ID\n */\n getWorkspace(): string {\n return this.workspace;\n }\n\n /**\n * Update the workspace\n */\n setWorkspace(workspace: string): void {\n this.client.setWorkspace(workspace);\n }\n\n /**\n * Update the auth token\n */\n setToken(token: string | (() => Promise<string>)): void {\n this.client.setToken(token);\n }\n}\n\n/**\n * Create a new OCXPPathService instance\n */\nexport function createPathService(options: OCXPPathServiceOptions): OCXPPathService {\n return new OCXPPathService(options);\n}\n","/**\n * WebSocket service for OCXP real-time communication\n * Provides push notifications for job progress, sync events, etc.\n */\n\nexport type WebSocketMessageType = 'job_progress' | 'repo_status' | 'notification' | 'sync_event';\n\nexport interface WebSocketMessage {\n type: WebSocketMessageType;\n [key: string]: unknown;\n}\n\nexport interface JobProgressMessage extends WebSocketMessage {\n type: 'job_progress';\n job_id: string;\n status: string;\n progress: number;\n files_processed: number;\n total_files: number;\n error?: string;\n}\n\nexport interface RepoStatusMessage extends WebSocketMessage {\n type: 'repo_status';\n repo_id: string;\n status: string;\n kb_synced: boolean;\n s3_path?: string;\n files_count?: number;\n}\n\nexport interface NotificationMessage extends WebSocketMessage {\n type: 'notification';\n title: string;\n message: string;\n level: 'info' | 'warning' | 'error' | 'success';\n action?: {\n label: string;\n url: string;\n };\n}\n\nexport interface SyncEventMessage extends WebSocketMessage {\n type: 'sync_event';\n event: string;\n path?: string;\n content_type?: string;\n}\n\nexport interface WebSocketServiceOptions {\n /** WebSocket endpoint (wss://...) */\n endpoint: string;\n /** Workspace for scoping */\n workspace: string;\n /** Optional user ID */\n userId?: string;\n /** Token provider (same as OCXPClient) */\n token?: string | (() => Promise<string>);\n /** Max reconnection attempts (default: 5) */\n maxReconnectAttempts?: number;\n /** Reconnection delay base in ms (default: 1000) */\n reconnectDelayMs?: number;\n /** Connection timeout in ms (default: 10000) */\n connectionTimeoutMs?: number;\n}\n\nexport type WebSocketEventHandler<T extends WebSocketMessage = WebSocketMessage> = (\n message: T\n) => void;\n\nexport type ConnectionState = 'disconnected' | 'connecting' | 'connected' | 'reconnecting';\n\nexport class WebSocketService {\n private ws: WebSocket | null = null;\n private reconnectAttempts = 0;\n private reconnectTimeout: ReturnType<typeof setTimeout> | null = null;\n private eventHandlers: Map<WebSocketMessageType | '*', Set<WebSocketEventHandler>> = new Map();\n private connectionStateHandlers: Set<(state: ConnectionState) => void> = new Set();\n private connectionPromise: Promise<void> | null = null;\n private _connectionState: ConnectionState = 'disconnected';\n private shouldReconnect = true;\n\n constructor(private options: WebSocketServiceOptions) {}\n\n /**\n * Get current connection state\n */\n get connectionState(): ConnectionState {\n return this._connectionState;\n }\n\n /**\n * Check if connected\n */\n get connected(): boolean {\n return this.ws?.readyState === WebSocket.OPEN;\n }\n\n /**\n * Connect to WebSocket server\n */\n async connect(): Promise<void> {\n if (this.connectionPromise) return this.connectionPromise;\n if (this.connected) return Promise.resolve();\n\n this.shouldReconnect = true;\n this.connectionPromise = this.doConnect();\n return this.connectionPromise;\n }\n\n private setConnectionState(state: ConnectionState): void {\n this._connectionState = state;\n this.connectionStateHandlers.forEach((handler) => handler(state));\n }\n\n private async doConnect(): Promise<void> {\n this.setConnectionState('connecting');\n\n const token =\n typeof this.options.token === 'function' ? await this.options.token() : this.options.token;\n\n const params = new URLSearchParams({\n workspace: this.options.workspace,\n });\n\n if (this.options.userId) {\n params.set('user_id', this.options.userId);\n }\n\n if (token) {\n params.set('token', token);\n }\n\n const url = `${this.options.endpoint}?${params}`;\n\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n this.ws?.close();\n reject(new Error('WebSocket connection timeout'));\n }, this.options.connectionTimeoutMs ?? 10000);\n\n try {\n this.ws = new WebSocket(url);\n } catch (error) {\n clearTimeout(timeout);\n this.connectionPromise = null;\n this.setConnectionState('disconnected');\n reject(error instanceof Error ? error : new Error(String(error)));\n return;\n }\n\n this.ws.onopen = () => {\n clearTimeout(timeout);\n this.reconnectAttempts = 0;\n this.setConnectionState('connected');\n resolve();\n };\n\n this.ws.onmessage = (event: MessageEvent<string>) => {\n try {\n const message = JSON.parse(event.data) as WebSocketMessage;\n this.dispatchMessage(message);\n } catch {\n // Ignore invalid messages\n }\n };\n\n this.ws.onclose = (event) => {\n clearTimeout(timeout);\n this.connectionPromise = null;\n\n if (this.shouldReconnect && event.code !== 1000) {\n this.setConnectionState('reconnecting');\n this.handleReconnect();\n } else {\n this.setConnectionState('disconnected');\n }\n };\n\n this.ws.onerror = () => {\n clearTimeout(timeout);\n this.connectionPromise = null;\n reject(new Error('WebSocket connection failed'));\n };\n });\n }\n\n private handleReconnect(): void {\n if (!this.shouldReconnect) return;\n\n const maxAttempts = this.options.maxReconnectAttempts ?? 5;\n if (this.reconnectAttempts >= maxAttempts) {\n this.setConnectionState('disconnected');\n return;\n }\n\n const delay = (this.options.reconnectDelayMs ?? 1000) * Math.pow(2, this.reconnectAttempts);\n this.reconnectAttempts++;\n\n this.reconnectTimeout = setTimeout(() => {\n this.connect().catch(() => {\n // Reconnect failed, will try again via onclose\n });\n }, delay);\n }\n\n private dispatchMessage(message: WebSocketMessage): void {\n // Dispatch to type-specific handlers\n const handlers = this.eventHandlers.get(message.type);\n handlers?.forEach((handler) => handler(message));\n\n // Dispatch to wildcard handlers\n const wildcardHandlers = this.eventHandlers.get('*');\n wildcardHandlers?.forEach((handler) => handler(message));\n }\n\n /**\n * Subscribe to message types\n * @returns Unsubscribe function\n */\n on<T extends WebSocketMessage = WebSocketMessage>(\n type: WebSocketMessageType | '*',\n handler: WebSocketEventHandler<T>\n ): () => void {\n if (!this.eventHandlers.has(type)) {\n this.eventHandlers.set(type, new Set());\n }\n this.eventHandlers.get(type)!.add(handler as WebSocketEventHandler);\n\n return () => this.eventHandlers.get(type)?.delete(handler as WebSocketEventHandler);\n }\n\n /**\n * Subscribe to job progress updates\n */\n onJobProgress(handler: WebSocketEventHandler<JobProgressMessage>): () => void {\n return this.on('job_progress', handler);\n }\n\n /**\n * Subscribe to repository status updates\n */\n onRepoStatus(handler: WebSocketEventHandler<RepoStatusMessage>): () => void {\n return this.on('repo_status', handler);\n }\n\n /**\n * Subscribe to notifications\n */\n onNotification(handler: WebSocketEventHandler<NotificationMessage>): () => void {\n return this.on('notification', handler);\n }\n\n /**\n * Subscribe to sync events\n */\n onSyncEvent(handler: WebSocketEventHandler<SyncEventMessage>): () => void {\n return this.on('sync_event', handler);\n }\n\n /**\n * Subscribe to connection state changes\n */\n onConnectionStateChange(handler: (state: ConnectionState) => void): () => void {\n this.connectionStateHandlers.add(handler);\n return () => this.connectionStateHandlers.delete(handler);\n }\n\n /**\n * Subscribe to specific job updates\n */\n subscribeToJob(jobId: string): void {\n this.send({ action: 'subscribe', type: 'job', id: jobId });\n }\n\n /**\n * Subscribe to repository updates\n */\n subscribeToRepo(repoId: string): void {\n this.send({ action: 'subscribe', type: 'repo', id: repoId });\n }\n\n /**\n * Send message to server\n */\n send(data: object): void {\n if (this.ws?.readyState === WebSocket.OPEN) {\n this.ws.send(JSON.stringify(data));\n }\n }\n\n /**\n * Send ping to keep connection alive\n */\n ping(): void {\n this.send({ action: 'ping' });\n }\n\n /**\n * Disconnect and cleanup\n */\n disconnect(): void {\n this.shouldReconnect = false;\n\n if (this.reconnectTimeout) {\n clearTimeout(this.reconnectTimeout);\n this.reconnectTimeout = null;\n }\n\n if (this.ws) {\n this.ws.close(1000, 'Client disconnect');\n this.ws = null;\n }\n\n this.connectionPromise = null;\n this.reconnectAttempts = 0;\n this.setConnectionState('disconnected');\n }\n\n /**\n * Clear all event handlers\n */\n clearHandlers(): void {\n this.eventHandlers.clear();\n this.connectionStateHandlers.clear();\n }\n}\n\n/**\n * Create WebSocket service with same options pattern as OCXPClient\n */\nexport function createWebSocketService(options: WebSocketServiceOptions): WebSocketService {\n return new WebSocketService(options);\n}\n","/**\n * OCXP Error Types\n *\n * Typed error classes for the OCXP SDK providing structured error handling\n * with error codes, HTTP status codes, and detailed context.\n */\n\n/**\n * Error codes for OCXP operations\n */\nexport enum OCXPErrorCode {\n /** Network-level error (connection failed, timeout, etc.) */\n NETWORK_ERROR = 'NETWORK_ERROR',\n /** Request or response validation failed */\n VALIDATION_ERROR = 'VALIDATION_ERROR',\n /** Authentication or authorization failed */\n AUTH_ERROR = 'AUTH_ERROR',\n /** Resource not found */\n NOT_FOUND = 'NOT_FOUND',\n /** Rate limit exceeded */\n RATE_LIMITED = 'RATE_LIMITED',\n /** Conflict (e.g., etag mismatch) */\n CONFLICT = 'CONFLICT',\n /** Operation timed out */\n TIMEOUT = 'TIMEOUT',\n /** Server-side error */\n SERVER_ERROR = 'SERVER_ERROR',\n /** Unknown error */\n UNKNOWN = 'UNKNOWN',\n}\n\n/**\n * Base error class for all OCXP errors\n */\nexport class OCXPError extends Error {\n /** Error code for programmatic handling */\n public readonly code: OCXPErrorCode;\n /** HTTP status code if applicable */\n public readonly statusCode: number;\n /** Additional error details */\n public readonly details?: Record<string, unknown>;\n /** Request ID for debugging */\n public readonly requestId?: string;\n /** Original cause of the error */\n public override readonly cause?: Error;\n\n constructor(\n message: string,\n code: OCXPErrorCode = OCXPErrorCode.UNKNOWN,\n statusCode: number = 500,\n options?: {\n details?: Record<string, unknown>;\n requestId?: string;\n cause?: Error;\n }\n ) {\n super(message);\n this.name = 'OCXPError';\n this.code = code;\n this.statusCode = statusCode;\n this.details = options?.details;\n this.requestId = options?.requestId;\n this.cause = options?.cause;\n\n // Maintains proper stack trace for where error was thrown (V8 engines)\n if ('captureStackTrace' in Error && typeof Error.captureStackTrace === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n (\n Error.captureStackTrace as (\n targetObject: object,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n constructorOpt?: Function\n ) => void\n )(this, this.constructor);\n }\n }\n\n /**\n * Convert error to JSON for logging/serialization\n */\n toJSON(): Record<string, unknown> {\n return {\n name: this.name,\n message: this.message,\n code: this.code,\n statusCode: this.statusCode,\n details: this.details,\n requestId: this.requestId,\n stack: this.stack,\n };\n }\n}\n\n/**\n * Network-level error (connection failed, DNS resolution, etc.)\n */\nexport class OCXPNetworkError extends OCXPError {\n constructor(\n message: string,\n options?: {\n details?: Record<string, unknown>;\n requestId?: string;\n cause?: Error;\n }\n ) {\n super(message, OCXPErrorCode.NETWORK_ERROR, 0, options);\n this.name = 'OCXPNetworkError';\n }\n}\n\n/**\n * Validation error (request or response validation failed)\n */\nexport class OCXPValidationError extends OCXPError {\n /** Field-level validation errors */\n public readonly validationErrors?: Record<string, string[]>;\n\n constructor(\n message: string,\n validationErrors?: Record<string, string[]>,\n options?: {\n details?: Record<string, unknown>;\n requestId?: string;\n cause?: Error;\n }\n ) {\n super(message, OCXPErrorCode.VALIDATION_ERROR, 400, {\n ...options,\n details: { ...options?.details, validationErrors },\n });\n this.name = 'OCXPValidationError';\n this.validationErrors = validationErrors;\n }\n}\n\n/**\n * Authentication or authorization error\n */\nexport class OCXPAuthError extends OCXPError {\n constructor(\n message: string,\n options?: {\n details?: Record<string, unknown>;\n requestId?: string;\n cause?: Error;\n }\n ) {\n super(message, OCXPErrorCode.AUTH_ERROR, 401, options);\n this.name = 'OCXPAuthError';\n }\n}\n\n/**\n * Resource not found error\n */\nexport class OCXPNotFoundError extends OCXPError {\n /** The resource path that was not found */\n public readonly path?: string;\n\n constructor(\n message: string,\n path?: string,\n options?: {\n details?: Record<string, unknown>;\n requestId?: string;\n cause?: Error;\n }\n ) {\n super(message, OCXPErrorCode.NOT_FOUND, 404, {\n ...options,\n details: { ...options?.details, path },\n });\n this.name = 'OCXPNotFoundError';\n this.path = path;\n }\n}\n\n/**\n * Rate limit exceeded error\n */\nexport class OCXPRateLimitError extends OCXPError {\n /** Seconds until rate limit resets */\n public readonly retryAfter?: number;\n\n constructor(\n message: string = 'Rate limit exceeded',\n retryAfter?: number,\n options?: {\n details?: Record<string, unknown>;\n requestId?: string;\n cause?: Error;\n }\n ) {\n super(message, OCXPErrorCode.RATE_LIMITED, 429, {\n ...options,\n details: { ...options?.details, retryAfter },\n });\n this.name = 'OCXPRateLimitError';\n this.retryAfter = retryAfter;\n }\n}\n\n/**\n * Conflict error (e.g., etag mismatch, concurrent modification)\n */\nexport class OCXPConflictError extends OCXPError {\n /** Expected etag value */\n public readonly expectedEtag?: string;\n /** Actual etag value */\n public readonly actualEtag?: string;\n\n constructor(\n message: string,\n options?: {\n expectedEtag?: string;\n actualEtag?: string;\n details?: Record<string, unknown>;\n requestId?: string;\n cause?: Error;\n }\n ) {\n super(message, OCXPErrorCode.CONFLICT, 409, {\n details: {\n ...options?.details,\n expectedEtag: options?.expectedEtag,\n actualEtag: options?.actualEtag,\n },\n requestId: options?.requestId,\n cause: options?.cause,\n });\n this.name = 'OCXPConflictError';\n this.expectedEtag = options?.expectedEtag;\n this.actualEtag = options?.actualEtag;\n }\n}\n\n/**\n * Operation timeout error\n */\nexport class OCXPTimeoutError extends OCXPError {\n /** Timeout duration in milliseconds */\n public readonly timeoutMs?: number;\n\n constructor(\n message: string = 'Operation timed out',\n timeoutMs?: number,\n options?: {\n details?: Record<string, unknown>;\n requestId?: string;\n cause?: Error;\n }\n ) {\n super(message, OCXPErrorCode.TIMEOUT, 408, {\n ...options,\n details: { ...options?.details, timeoutMs },\n });\n this.name = 'OCXPTimeoutError';\n this.timeoutMs = timeoutMs;\n }\n}\n\n/**\n * Type guard to check if an error is an OCXPError\n */\nexport function isOCXPError(error: unknown): error is OCXPError {\n return error instanceof OCXPError;\n}\n\n/**\n * Type guard for specific error types\n */\nexport function isOCXPNetworkError(error: unknown): error is OCXPNetworkError {\n return error instanceof OCXPNetworkError;\n}\n\nexport function isOCXPValidationError(error: unknown): error is OCXPValidationError {\n return error instanceof OCXPValidationError;\n}\n\nexport function isOCXPAuthError(error: unknown): error is OCXPAuthError {\n return error instanceof OCXPAuthError;\n}\n\nexport function isOCXPNotFoundError(error: unknown): error is OCXPNotFoundError {\n return error instanceof OCXPNotFoundError;\n}\n\nexport function isOCXPRateLimitError(error: unknown): error is OCXPRateLimitError {\n return error instanceof OCXPRateLimitError;\n}\n\nexport function isOCXPConflictError(error: unknown): error is OCXPConflictError {\n return error instanceof OCXPConflictError;\n}\n\nexport function isOCXPTimeoutError(error: unknown): error is OCXPTimeoutError {\n return error instanceof OCXPTimeoutError;\n}\n\n/**\n * Map HTTP status code to appropriate OCXP error\n */\nexport function mapHttpError(\n statusCode: number,\n message: string,\n options?: {\n details?: Record<string, unknown>;\n requestId?: string;\n path?: string;\n retryAfter?: number;\n }\n): OCXPError {\n const baseOptions = {\n details: options?.details,\n requestId: options?.requestId,\n };\n\n switch (statusCode) {\n case 400:\n return new OCXPValidationError(message, undefined, baseOptions);\n case 401:\n case 403:\n return new OCXPAuthError(message, baseOptions);\n case 404:\n return new OCXPNotFoundError(message, options?.path, baseOptions);\n case 408:\n return new OCXPTimeoutError(message, undefined, baseOptions);\n case 409:\n return new OCXPConflictError(message, baseOptions);\n case 429:\n return new OCXPRateLimitError(message, options?.retryAfter, baseOptions);\n default:\n if (statusCode >= 500) {\n return new OCXPError(message, OCXPErrorCode.SERVER_ERROR, statusCode, baseOptions);\n }\n return new OCXPError(message, OCXPErrorCode.UNKNOWN, statusCode, baseOptions);\n }\n}\n","/**\n * Common Zod Schemas for OCXP API\n *\n * Shared schemas used across all API responses.\n */\n\nimport { z } from 'zod';\n\n/**\n * Response metadata schema\n */\nexport const MetaSchema = z.object({\n requestId: z.string(),\n timestamp: z.string(),\n durationMs: z.number(),\n operation: z.string(),\n});\n\nexport type Meta = z.infer<typeof MetaSchema>;\n\n/**\n * Error response schema\n */\nexport const ErrorResponseSchema = z.object({\n code: z.string(),\n message: z.string(),\n details: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport type ErrorResponse = z.infer<typeof ErrorResponseSchema>;\n\n/**\n * Base OCXP Response wrapper schema\n * All API responses follow this structure\n */\nexport const OCXPResponseSchema = z.object({\n success: z.boolean(),\n data: z.unknown().optional(),\n error: ErrorResponseSchema.nullable().optional(),\n notifications: z.array(z.unknown()).optional(),\n meta: MetaSchema.optional(),\n});\n\nexport type OCXPResponse = z.infer<typeof OCXPResponseSchema>;\n\n/**\n * Pagination schema for list responses\n */\nexport const PaginationSchema = z.object({\n cursor: z.string().nullable().optional(),\n hasMore: z.boolean(),\n total: z.number(),\n});\n\nexport type Pagination = z.infer<typeof PaginationSchema>;\n\n/**\n * Content type enum - the 8 valid content types\n */\nexport const ContentTypeSchema = z.enum([\n 'mission',\n 'project',\n 'context',\n 'sop',\n 'repo',\n 'artifact',\n 'kb',\n 'docs',\n]);\n\nexport type ContentType = z.infer<typeof ContentTypeSchema>;\n\n/**\n * Helper to create typed OCXP response schema\n */\nexport function createResponseSchema<T extends z.ZodTypeAny>(dataSchema: T) {\n return z.object({\n success: z.boolean(),\n data: dataSchema.optional(),\n error: ErrorResponseSchema.nullable().optional(),\n notifications: z.array(z.unknown()).optional(),\n meta: MetaSchema.optional(),\n });\n}\n","/**\n * Content CRUD Zod Schemas\n *\n * Schemas for content operations: list, read, write, delete, query, search, etc.\n */\n\nimport { z } from 'zod';\nimport { createResponseSchema } from './common';\n\n/**\n * List entry schema - represents a file or directory in a list response\n */\nexport const ListEntrySchema = z.object({\n name: z.string(),\n type: z.enum(['file', 'directory']),\n path: z.string(),\n size: z.number().optional(),\n mtime: z.string().optional(),\n});\n\nexport type ListEntry = z.infer<typeof ListEntrySchema>;\n\n/**\n * List response data schema\n */\nexport const ListDataSchema = z.object({\n entries: z.array(ListEntrySchema),\n cursor: z.string().nullable().optional(),\n hasMore: z.boolean().optional().default(false),\n total: z.number().optional().default(0),\n});\n\nexport type ListData = z.infer<typeof ListDataSchema>;\n\n/**\n * List response schema\n */\nexport const ListResponseSchema = createResponseSchema(ListDataSchema);\n\nexport type ListResponse = z.infer<typeof ListResponseSchema>;\n\n/**\n * Read response data schema\n */\nexport const ReadDataSchema = z.object({\n content: z.string(),\n size: z.number().optional(),\n mtime: z.string().optional(),\n encoding: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n etag: z.string().optional(),\n});\n\nexport type ReadData = z.infer<typeof ReadDataSchema>;\n\n/**\n * Read response schema\n */\nexport const ReadResponseSchema = createResponseSchema(ReadDataSchema);\n\nexport type ReadResponse = z.infer<typeof ReadResponseSchema>;\n\n/**\n * Write response data schema\n */\nexport const WriteDataSchema = z.object({\n path: z.string(),\n etag: z.string().optional(),\n size: z.number().optional(),\n});\n\nexport type WriteData = z.infer<typeof WriteDataSchema>;\n\n/**\n * Write response schema\n */\nexport const WriteResponseSchema = createResponseSchema(WriteDataSchema);\n\nexport type WriteResponse = z.infer<typeof WriteResponseSchema>;\n\n/**\n * Delete response data schema\n */\nexport const DeleteDataSchema = z.object({\n path: z.string(),\n deleted: z.boolean().optional().default(true),\n});\n\nexport type DeleteData = z.infer<typeof DeleteDataSchema>;\n\n/**\n * Delete response schema\n */\nexport const DeleteResponseSchema = createResponseSchema(DeleteDataSchema);\n\nexport type DeleteResponse = z.infer<typeof DeleteResponseSchema>;\n\n/**\n * Query filter schema\n */\nexport const QueryFilterSchema = z.object({\n field: z.string(),\n operator: z.enum(['eq', 'ne', 'gt', 'lt', 'gte', 'lte', 'contains', 'startsWith']),\n value: z.unknown(),\n});\n\nexport type QueryFilter = z.infer<typeof QueryFilterSchema>;\n\n/**\n * Query response data schema\n */\nexport const QueryDataSchema = z.object({\n items: z.array(z.record(z.string(), z.unknown())),\n cursor: z.string().nullable().optional(),\n hasMore: z.boolean().optional().default(false),\n total: z.number().optional().default(0),\n});\n\nexport type QueryData = z.infer<typeof QueryDataSchema>;\n\n/**\n * Query response schema\n */\nexport const QueryResponseSchema = createResponseSchema(QueryDataSchema);\n\nexport type QueryResponse = z.infer<typeof QueryResponseSchema>;\n\n/**\n * Search response data schema\n */\nexport const SearchDataSchema = z.object({\n results: z.array(\n z.object({\n path: z.string(),\n score: z.number().optional(),\n highlights: z.array(z.string()).optional(),\n content: z.string().optional(),\n })\n ),\n total: z.number().optional().default(0),\n});\n\nexport type SearchData = z.infer<typeof SearchDataSchema>;\n\n/**\n * Search response schema\n */\nexport const SearchResponseSchema = createResponseSchema(SearchDataSchema);\n\nexport type SearchResponse = z.infer<typeof SearchResponseSchema>;\n\n/**\n * Tree node schema\n */\nexport const TreeNodeSchema: z.ZodType<TreeNode> = z.lazy(() =>\n z.object({\n name: z.string(),\n path: z.string(),\n type: z.enum(['file', 'directory']),\n size: z.number().optional(),\n children: z.array(TreeNodeSchema).optional(),\n })\n);\n\nexport interface TreeNode {\n name: string;\n path: string;\n type: 'file' | 'directory';\n size?: number;\n children?: TreeNode[];\n}\n\n/**\n * Tree response data schema\n */\nexport const TreeDataSchema = z.object({\n root: TreeNodeSchema,\n depth: z.number().optional(),\n});\n\nexport type TreeData = z.infer<typeof TreeDataSchema>;\n\n/**\n * Tree response schema\n */\nexport const TreeResponseSchema = createResponseSchema(TreeDataSchema);\n\nexport type TreeResponse = z.infer<typeof TreeResponseSchema>;\n\n/**\n * Stats response data schema\n */\nexport const StatsDataSchema = z.object({\n totalFiles: z.number(),\n totalSize: z.number(),\n lastModified: z.string().optional(),\n fileTypes: z.record(z.string(), z.number()).optional(),\n});\n\nexport type StatsData = z.infer<typeof StatsDataSchema>;\n\n/**\n * Stats response schema\n */\nexport const StatsResponseSchema = createResponseSchema(StatsDataSchema);\n\nexport type StatsResponse = z.infer<typeof StatsResponseSchema>;\n\n/**\n * Content type info schema\n */\nexport const ContentTypeInfoSchema = z.object({\n name: z.string(),\n description: z.string().optional(),\n prefix: z.string().nullable().optional(),\n isVirtual: z.boolean().optional(),\n isGlobal: z.boolean().optional(),\n count: z.number().nullable().optional(),\n endpoints: z.record(z.string(), z.string()).optional(),\n});\n\nexport type ContentTypeInfo = z.infer<typeof ContentTypeInfoSchema>;\n\n/**\n * Get content types response data schema\n */\nexport const ContentTypesDataSchema = z.object({\n types: z.array(ContentTypeInfoSchema),\n});\n\nexport type ContentTypesData = z.infer<typeof ContentTypesDataSchema>;\n\n/**\n * Content types response schema\n */\nexport const ContentTypesResponseSchema = createResponseSchema(ContentTypesDataSchema);\n\nexport type ContentTypesResponse = z.infer<typeof ContentTypesResponseSchema>;\n\n/**\n * Presigned URL response data schema\n */\nexport const PresignedUrlDataSchema = z.object({\n url: z.string(),\n expiresAt: z.string().optional(),\n method: z.enum(['GET', 'PUT']).optional(),\n});\n\nexport type PresignedUrlData = z.infer<typeof PresignedUrlDataSchema>;\n\n/**\n * Presigned URL response schema\n */\nexport const PresignedUrlResponseSchema = createResponseSchema(PresignedUrlDataSchema);\n\nexport type PresignedUrlResponse = z.infer<typeof PresignedUrlResponseSchema>;\n","/**\n * Session Zod Schemas\n *\n * Schemas for session management operations.\n */\n\nimport { z } from 'zod';\nimport { createResponseSchema } from './common';\n\n/**\n * Session message schema\n */\nexport const SessionMessageSchema = z.object({\n id: z.string(),\n role: z.enum(['user', 'assistant', 'system']),\n content: z.string(),\n timestamp: z.string(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport type SessionMessage = z.infer<typeof SessionMessageSchema>;\n\n/**\n * Session schema\n */\nexport const SessionSchema = z.object({\n id: z.string(),\n missionId: z.string().optional(),\n title: z.string().optional(),\n createdAt: z.string(),\n updatedAt: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n messageCount: z.number().optional(),\n});\n\nexport type Session = z.infer<typeof SessionSchema>;\n\n/**\n * List sessions response data schema\n */\nexport const ListSessionsDataSchema = z.object({\n sessions: z.array(SessionSchema),\n total: z.number().optional(),\n});\n\nexport type ListSessionsData = z.infer<typeof ListSessionsDataSchema>;\n\n/**\n * List sessions response schema\n */\nexport const ListSessionsResponseSchema = createResponseSchema(ListSessionsDataSchema);\n\nexport type ListSessionsResponse = z.infer<typeof ListSessionsResponseSchema>;\n\n/**\n * Create session response data schema\n */\nexport const CreateSessionDataSchema = z.object({\n sessionId: z.string(),\n missionId: z.string().optional(),\n});\n\nexport type CreateSessionData = z.infer<typeof CreateSessionDataSchema>;\n\n/**\n * Create session response schema\n */\nexport const CreateSessionResponseSchema = createResponseSchema(CreateSessionDataSchema);\n\nexport type CreateSessionResponse = z.infer<typeof CreateSessionResponseSchema>;\n\n/**\n * Get session messages response data schema\n */\nexport const GetSessionMessagesDataSchema = z.object({\n messages: z.array(SessionMessageSchema),\n sessionId: z.string(),\n});\n\nexport type GetSessionMessagesData = z.infer<typeof GetSessionMessagesDataSchema>;\n\n/**\n * Get session messages response schema\n */\nexport const GetSessionMessagesResponseSchema = createResponseSchema(GetSessionMessagesDataSchema);\n\nexport type GetSessionMessagesResponse = z.infer<typeof GetSessionMessagesResponseSchema>;\n\n/**\n * Update session metadata response data schema\n */\nexport const UpdateSessionMetadataDataSchema = z.object({\n sessionId: z.string(),\n metadata: z.record(z.string(), z.unknown()),\n});\n\nexport type UpdateSessionMetadataData = z.infer<typeof UpdateSessionMetadataDataSchema>;\n\n/**\n * Update session metadata response schema\n */\nexport const UpdateSessionMetadataResponseSchema = createResponseSchema(\n UpdateSessionMetadataDataSchema\n);\n\nexport type UpdateSessionMetadataResponse = z.infer<typeof UpdateSessionMetadataResponseSchema>;\n\n/**\n * Fork session response data schema\n */\nexport const ForkSessionDataSchema = z.object({\n sessionId: z.string(),\n forkedFromId: z.string(),\n});\n\nexport type ForkSessionData = z.infer<typeof ForkSessionDataSchema>;\n\n/**\n * Fork session response schema\n */\nexport const ForkSessionResponseSchema = createResponseSchema(ForkSessionDataSchema);\n\nexport type ForkSessionResponse = z.infer<typeof ForkSessionResponseSchema>;\n","/**\n * Project Zod Schemas\n *\n * Schemas for project management operations.\n */\n\nimport { z } from 'zod';\nimport { createResponseSchema } from './common';\n\n/**\n * Project repo reference schema\n */\nexport const ProjectRepoSchema = z.object({\n repoId: z.string(),\n isDefault: z.boolean().optional(),\n addedAt: z.string().optional(),\n});\n\nexport type ProjectRepo = z.infer<typeof ProjectRepoSchema>;\n\n/**\n * Project mission reference schema\n */\nexport const ProjectMissionSchema = z.object({\n missionId: z.string(),\n addedAt: z.string().optional(),\n});\n\nexport type ProjectMission = z.infer<typeof ProjectMissionSchema>;\n\n/**\n * Project schema\n */\nexport const ProjectSchema = z.object({\n id: z.string(),\n name: z.string(),\n description: z.string().optional(),\n createdAt: z.string(),\n updatedAt: z.string().optional(),\n repos: z.array(ProjectRepoSchema).optional(),\n missions: z.array(ProjectMissionSchema).optional(),\n defaultRepoId: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport type Project = z.infer<typeof ProjectSchema>;\n\n/**\n * List projects response data schema\n */\nexport const ListProjectsDataSchema = z.object({\n projects: z.array(ProjectSchema),\n total: z.number().optional(),\n});\n\nexport type ListProjectsData = z.infer<typeof ListProjectsDataSchema>;\n\n/**\n * List projects response schema\n */\nexport const ListProjectsResponseSchema = createResponseSchema(ListProjectsDataSchema);\n\nexport type ListProjectsResponse = z.infer<typeof ListProjectsResponseSchema>;\n\n/**\n * Create project response data schema\n */\nexport const CreateProjectDataSchema = z.object({\n projectId: z.string(),\n project: ProjectSchema.optional(),\n});\n\nexport type CreateProjectData = z.infer<typeof CreateProjectDataSchema>;\n\n/**\n * Create project response schema\n */\nexport const CreateProjectResponseSchema = createResponseSchema(CreateProjectDataSchema);\n\nexport type CreateProjectResponse = z.infer<typeof CreateProjectResponseSchema>;\n\n/**\n * Get project response data schema\n */\nexport const GetProjectDataSchema = ProjectSchema;\n\nexport type GetProjectData = z.infer<typeof GetProjectDataSchema>;\n\n/**\n * Get project response schema\n */\nexport const GetProjectResponseSchema = createResponseSchema(GetProjectDataSchema);\n\nexport type GetProjectResponse = z.infer<typeof GetProjectResponseSchema>;\n\n/**\n * Update project response data schema\n */\nexport const UpdateProjectDataSchema = z.object({\n projectId: z.string(),\n project: ProjectSchema.optional(),\n});\n\nexport type UpdateProjectData = z.infer<typeof UpdateProjectDataSchema>;\n\n/**\n * Update project response schema\n */\nexport const UpdateProjectResponseSchema = createResponseSchema(UpdateProjectDataSchema);\n\nexport type UpdateProjectResponse = z.infer<typeof UpdateProjectResponseSchema>;\n\n/**\n * Delete project response data schema\n */\nexport const DeleteProjectDataSchema = z.object({\n projectId: z.string(),\n deleted: z.boolean(),\n});\n\nexport type DeleteProjectData = z.infer<typeof DeleteProjectDataSchema>;\n\n/**\n * Delete project response schema\n */\nexport const DeleteProjectResponseSchema = createResponseSchema(DeleteProjectDataSchema);\n\nexport type DeleteProjectResponse = z.infer<typeof DeleteProjectResponseSchema>;\n\n/**\n * Add project repo response data schema\n */\nexport const AddProjectRepoDataSchema = z.object({\n projectId: z.string(),\n repoId: z.string(),\n});\n\nexport type AddProjectRepoData = z.infer<typeof AddProjectRepoDataSchema>;\n\n/**\n * Add project repo response schema\n */\nexport const AddProjectRepoResponseSchema = createResponseSchema(AddProjectRepoDataSchema);\n\nexport type AddProjectRepoResponse = z.infer<typeof AddProjectRepoResponseSchema>;\n\n/**\n * Context repos response data schema\n */\nexport const ContextReposDataSchema = z.object({\n repos: z.array(\n z.object({\n repoId: z.string(),\n name: z.string().optional(),\n isDefault: z.boolean().optional(),\n })\n ),\n});\n\nexport type ContextReposData = z.infer<typeof ContextReposDataSchema>;\n\n/**\n * Context repos response schema\n */\nexport const ContextReposResponseSchema = createResponseSchema(ContextReposDataSchema);\n\nexport type ContextReposResponse = z.infer<typeof ContextReposResponseSchema>;\n","/**\n * Repository Zod Schemas\n *\n * Schemas for repository management operations.\n */\n\nimport { z } from 'zod';\nimport { createResponseSchema } from './common';\n\n/**\n * Repository download status enum\n */\nexport const RepoStatusEnum = z.enum([\n 'queued',\n 'processing',\n 'uploading',\n 'vectorizing',\n 'complete',\n 'failed',\n]);\n\nexport type RepoStatus = z.infer<typeof RepoStatusEnum>;\n\n/**\n * Repository download request schema\n */\nexport const RepoDownloadRequestSchema = z.object({\n github_url: z.string(),\n repo_id: z.string(),\n branch: z.string().optional().default('main'),\n path: z.string().nullable().optional(),\n mode: z.enum(['full', 'docs_only']).optional().default('full'),\n include_extensions: z.array(z.string()).optional(),\n exclude_patterns: z.array(z.string()).optional(),\n max_file_size_kb: z.number().min(1).max(5000).optional().default(500),\n visibility: z.enum(['private', 'public']).optional().default('private'),\n trigger_vectorization: z.boolean().optional().default(true),\n generate_metadata: z.boolean().optional().default(true),\n is_private: z.boolean().optional().default(false),\n});\n\nexport type RepoDownloadRequest = z.infer<typeof RepoDownloadRequestSchema>;\n\n/**\n * Repository download response data schema\n */\nexport const RepoDownloadDataSchema = z.object({\n repo_id: z.string(),\n job_id: z.string(),\n s3_path: z.string().optional(),\n status: RepoStatusEnum,\n files_processed: z.number().optional(),\n metadata_files_created: z.number().optional(),\n ingestion_job_id: z.string().nullable().optional(),\n});\n\nexport type RepoDownloadData = z.infer<typeof RepoDownloadDataSchema>;\n\n/**\n * Repository download response schema\n */\nexport const RepoDownloadResponseSchema = createResponseSchema(RepoDownloadDataSchema);\n\nexport type RepoDownloadResponse = z.infer<typeof RepoDownloadResponseSchema>;\n\n/**\n * Repository status response data schema\n */\nexport const RepoStatusDataSchema = z.object({\n job_id: z.string(),\n status: RepoStatusEnum,\n progress: z.number().min(0).max(100).optional(),\n files_processed: z.number().optional(),\n total_files: z.number().optional(),\n error: z.string().nullable().optional(),\n started_at: z.string().nullable().optional(),\n completed_at: z.string().nullable().optional(),\n});\n\nexport type RepoStatusData = z.infer<typeof RepoStatusDataSchema>;\n\n/**\n * Repository status response schema\n */\nexport const RepoStatusResponseSchema = createResponseSchema(RepoStatusDataSchema);\n\nexport type RepoStatusResponse = z.infer<typeof RepoStatusResponseSchema>;\n\n/**\n * Repository list item schema\n */\nexport const RepoListItemSchema = z.object({\n repo_id: z.string(),\n github_url: z.string().optional(),\n branch: z.string().optional(),\n visibility: z.enum(['private', 'public']).optional(),\n mode: z.enum(['full', 'docs_only']).optional(),\n files_count: z.number().optional(),\n last_synced: z.string().optional(),\n s3_path: z.string().optional(),\n});\n\nexport type RepoListItem = z.infer<typeof RepoListItemSchema>;\n\n/**\n * Repository list response data schema\n */\nexport const RepoListDataSchema = z.object({\n repos: z.array(RepoListItemSchema),\n total: z.number().optional(),\n});\n\nexport type RepoListData = z.infer<typeof RepoListDataSchema>;\n\n/**\n * Repository list response schema\n */\nexport const RepoListResponseSchema = createResponseSchema(RepoListDataSchema);\n\nexport type RepoListResponse = z.infer<typeof RepoListResponseSchema>;\n\n/**\n * Repository exists response data schema\n */\nexport const RepoExistsDataSchema = z.object({\n repo_id: z.string(),\n exists: z.boolean(),\n indexed_at: z.string().nullable().optional(),\n files_count: z.number().optional(),\n});\n\nexport type RepoExistsData = z.infer<typeof RepoExistsDataSchema>;\n\n/**\n * Repository exists response schema\n */\nexport const RepoExistsResponseSchema = createResponseSchema(RepoExistsDataSchema);\n\nexport type RepoExistsResponse = z.infer<typeof RepoExistsResponseSchema>;\n\n/**\n * Repository delete response data schema\n */\nexport const RepoDeleteDataSchema = z.object({\n repo_id: z.string(),\n success: z.boolean(),\n s3_files_deleted: z.number().optional(),\n projects_updated: z.number().optional(),\n error: z.string().optional(),\n});\n\nexport type RepoDeleteData = z.infer<typeof RepoDeleteDataSchema>;\n\n/**\n * Repository delete response schema\n */\nexport const RepoDeleteResponseSchema = createResponseSchema(RepoDeleteDataSchema);\n\nexport type RepoDeleteResponse = z.infer<typeof RepoDeleteResponseSchema>;\n","/**\n * Auth Zod Schemas\n *\n * Schemas for authentication and authorization operations.\n */\n\nimport { z } from 'zod';\nimport { createResponseSchema } from './common';\n\n/**\n * Auth token response data schema\n */\nexport const AuthTokenDataSchema = z.object({\n accessToken: z.string(),\n tokenType: z.string().optional().default('Bearer'),\n expiresIn: z.number().optional(),\n expiresAt: z.string().optional(),\n refreshToken: z.string().optional(),\n scope: z.string().optional(),\n});\n\nexport type AuthTokenData = z.infer<typeof AuthTokenDataSchema>;\n\n/**\n * Auth token response schema\n */\nexport const AuthTokenResponseSchema = createResponseSchema(AuthTokenDataSchema);\n\nexport type AuthTokenResponse = z.infer<typeof AuthTokenResponseSchema>;\n\n/**\n * Auth user info schema\n */\nexport const AuthUserInfoSchema = z.object({\n userId: z.string(),\n email: z.string().optional(),\n name: z.string().optional(),\n roles: z.array(z.string()).optional(),\n permissions: z.array(z.string()).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport type AuthUserInfo = z.infer<typeof AuthUserInfoSchema>;\n\n/**\n * Auth user info response schema\n */\nexport const AuthUserInfoResponseSchema = createResponseSchema(AuthUserInfoSchema);\n\nexport type AuthUserInfoResponse = z.infer<typeof AuthUserInfoResponseSchema>;\n\n/**\n * Auth validate response data schema\n */\nexport const AuthValidateDataSchema = z.object({\n valid: z.boolean(),\n userId: z.string().optional(),\n expiresAt: z.string().optional(),\n});\n\nexport type AuthValidateData = z.infer<typeof AuthValidateDataSchema>;\n\n/**\n * Auth validate response schema\n */\nexport const AuthValidateResponseSchema = createResponseSchema(AuthValidateDataSchema);\n\nexport type AuthValidateResponse = z.infer<typeof AuthValidateResponseSchema>;\n","/**\n * Discovery & Knowledge Base Zod Schemas\n *\n * Schemas for discovery, search, and knowledge base operations.\n */\n\nimport { z } from 'zod';\nimport { createResponseSchema } from './common';\n\n/**\n * Search result item schema\n */\nexport const SearchResultItemSchema = z.object({\n id: z.string(),\n path: z.string().optional(),\n content: z.string().optional(),\n score: z.number().optional(),\n highlights: z.array(z.string()).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n source: z.string().optional(),\n type: z.string().optional(),\n});\n\nexport type SearchResultItem = z.infer<typeof SearchResultItemSchema>;\n\n/**\n * Vector search response data schema\n */\nexport const VectorSearchDataSchema = z.object({\n results: z.array(SearchResultItemSchema),\n total: z.number().optional(),\n query: z.string().optional(),\n processingTimeMs: z.number().optional(),\n});\n\nexport type VectorSearchData = z.infer<typeof VectorSearchDataSchema>;\n\n/**\n * Vector search response schema\n */\nexport const VectorSearchResponseSchema = createResponseSchema(VectorSearchDataSchema);\n\nexport type VectorSearchResponse = z.infer<typeof VectorSearchResponseSchema>;\n\n/**\n * KB document schema\n */\nexport const KBDocumentSchema = z.object({\n id: z.string(),\n title: z.string().optional(),\n content: z.string(),\n path: z.string().optional(),\n source: z.string().optional(),\n createdAt: z.string().optional(),\n updatedAt: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n vectorId: z.string().optional(),\n});\n\nexport type KBDocument = z.infer<typeof KBDocumentSchema>;\n\n/**\n * KB list response data schema\n */\nexport const KBListDataSchema = z.object({\n documents: z.array(KBDocumentSchema),\n total: z.number().optional(),\n cursor: z.string().nullable().optional(),\n hasMore: z.boolean().optional(),\n});\n\nexport type KBListData = z.infer<typeof KBListDataSchema>;\n\n/**\n * KB list response schema\n */\nexport const KBListResponseSchema = createResponseSchema(KBListDataSchema);\n\nexport type KBListResponse = z.infer<typeof KBListResponseSchema>;\n\n/**\n * KB ingest response data schema\n */\nexport const KBIngestDataSchema = z.object({\n documentId: z.string(),\n vectorId: z.string().optional(),\n chunksCreated: z.number().optional(),\n status: z.enum(['pending', 'processing', 'complete', 'failed']).optional(),\n});\n\nexport type KBIngestData = z.infer<typeof KBIngestDataSchema>;\n\n/**\n * KB ingest response schema\n */\nexport const KBIngestResponseSchema = createResponseSchema(KBIngestDataSchema);\n\nexport type KBIngestResponse = z.infer<typeof KBIngestResponseSchema>;\n\n/**\n * Discovery endpoint schema\n */\nexport const DiscoveryEndpointSchema = z.object({\n name: z.string(),\n path: z.string(),\n methods: z.array(z.string()),\n description: z.string().optional(),\n parameters: z.array(z.record(z.string(), z.unknown())).optional(),\n});\n\nexport type DiscoveryEndpoint = z.infer<typeof DiscoveryEndpointSchema>;\n\n/**\n * Discovery response data schema\n */\nexport const DiscoveryDataSchema = z.object({\n version: z.string().optional(),\n endpoints: z.array(DiscoveryEndpointSchema),\n contentTypes: z.array(z.string()).optional(),\n capabilities: z.array(z.string()).optional(),\n});\n\nexport type DiscoveryData = z.infer<typeof DiscoveryDataSchema>;\n\n/**\n * Discovery response schema\n */\nexport const DiscoveryResponseSchema = createResponseSchema(DiscoveryDataSchema);\n\nexport type DiscoveryResponse = z.infer<typeof DiscoveryResponseSchema>;\n\n/**\n * Ingestion job schema\n */\nexport const IngestionJobSchema = z.object({\n jobId: z.string(),\n status: z.enum(['queued', 'processing', 'complete', 'failed']),\n progress: z.number().min(0).max(100).optional(),\n documentsProcessed: z.number().optional(),\n totalDocuments: z.number().optional(),\n error: z.string().nullable().optional(),\n startedAt: z.string().nullable().optional(),\n completedAt: z.string().nullable().optional(),\n});\n\nexport type IngestionJob = z.infer<typeof IngestionJobSchema>;\n\n/**\n * Ingestion job response schema\n */\nexport const IngestionJobResponseSchema = createResponseSchema(IngestionJobSchema);\n\nexport type IngestionJobResponse = z.infer<typeof IngestionJobResponseSchema>;\n","/**\n * WebSocket Message Zod Schemas\n *\n * Schemas for WebSocket communication messages.\n */\n\nimport { z } from 'zod';\n\n/**\n * WebSocket message types\n */\nexport const WSMessageTypeSchema = z.enum([\n 'chat',\n 'chat_response',\n 'stream_start',\n 'stream_chunk',\n 'stream_end',\n 'error',\n 'ping',\n 'pong',\n 'connected',\n 'disconnected',\n 'session_start',\n 'session_end',\n 'typing',\n 'status',\n]);\n\nexport type WSMessageType = z.infer<typeof WSMessageTypeSchema>;\n\n/**\n * Base WebSocket message schema\n */\nexport const WSBaseMessageSchema = z.object({\n type: WSMessageTypeSchema,\n id: z.string().optional(),\n timestamp: z.string().optional(),\n sessionId: z.string().optional(),\n});\n\nexport type WSBaseMessage = z.infer<typeof WSBaseMessageSchema>;\n\n/**\n * Chat message schema (user -> server)\n */\nexport const WSChatMessageSchema = WSBaseMessageSchema.extend({\n type: z.literal('chat'),\n content: z.string(),\n missionId: z.string().optional(),\n projectId: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport type WSChatMessage = z.infer<typeof WSChatMessageSchema>;\n\n/**\n * Chat response schema (server -> client)\n */\nexport const WSChatResponseSchema = WSBaseMessageSchema.extend({\n type: z.literal('chat_response'),\n content: z.string(),\n role: z.enum(['assistant', 'system']).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n usage: z\n .object({\n promptTokens: z.number().optional(),\n completionTokens: z.number().optional(),\n totalTokens: z.number().optional(),\n })\n .optional(),\n});\n\nexport type WSChatResponse = z.infer<typeof WSChatResponseSchema>;\n\n/**\n * Stream start message schema\n */\nexport const WSStreamStartSchema = WSBaseMessageSchema.extend({\n type: z.literal('stream_start'),\n streamId: z.string(),\n});\n\nexport type WSStreamStart = z.infer<typeof WSStreamStartSchema>;\n\n/**\n * Stream chunk message schema\n */\nexport const WSStreamChunkSchema = WSBaseMessageSchema.extend({\n type: z.literal('stream_chunk'),\n streamId: z.string(),\n content: z.string(),\n index: z.number().optional(),\n});\n\nexport type WSStreamChunk = z.infer<typeof WSStreamChunkSchema>;\n\n/**\n * Stream end message schema\n */\nexport const WSStreamEndSchema = WSBaseMessageSchema.extend({\n type: z.literal('stream_end'),\n streamId: z.string(),\n usage: z\n .object({\n promptTokens: z.number().optional(),\n completionTokens: z.number().optional(),\n totalTokens: z.number().optional(),\n })\n .optional(),\n});\n\nexport type WSStreamEnd = z.infer<typeof WSStreamEndSchema>;\n\n/**\n * Error message schema\n */\nexport const WSErrorMessageSchema = WSBaseMessageSchema.extend({\n type: z.literal('error'),\n code: z.string(),\n message: z.string(),\n details: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport type WSErrorMessage = z.infer<typeof WSErrorMessageSchema>;\n\n/**\n * Ping/Pong message schema\n */\nexport const WSPingPongSchema = WSBaseMessageSchema.extend({\n type: z.enum(['ping', 'pong']),\n});\n\nexport type WSPingPong = z.infer<typeof WSPingPongSchema>;\n\n/**\n * Connected message schema\n */\nexport const WSConnectedSchema = WSBaseMessageSchema.extend({\n type: z.literal('connected'),\n connectionId: z.string().optional(),\n serverVersion: z.string().optional(),\n});\n\nexport type WSConnected = z.infer<typeof WSConnectedSchema>;\n\n/**\n * Status message schema\n */\nexport const WSStatusSchema = WSBaseMessageSchema.extend({\n type: z.literal('status'),\n status: z.enum(['ready', 'busy', 'processing', 'idle']),\n message: z.string().optional(),\n});\n\nexport type WSStatus = z.infer<typeof WSStatusSchema>;\n\n/**\n * Union of all WebSocket message types\n */\nexport const WSMessageSchema = z.discriminatedUnion('type', [\n WSChatMessageSchema,\n WSChatResponseSchema,\n WSStreamStartSchema,\n WSStreamChunkSchema,\n WSStreamEndSchema,\n WSErrorMessageSchema,\n WSPingPongSchema.extend({ type: z.literal('ping') }),\n WSPingPongSchema.extend({ type: z.literal('pong') }),\n WSConnectedSchema,\n WSStatusSchema,\n]);\n\nexport type WSMessage = z.infer<typeof WSMessageSchema>;\n\n/**\n * Safe parse result type\n */\nexport type WSParseResult =\n | { success: true; data: WSMessage }\n | { success: false; error: z.ZodError };\n\n/**\n * Parse and validate a WebSocket message\n */\nexport function parseWSMessage(data: string): WSMessage {\n const parsed: unknown = JSON.parse(data);\n return WSMessageSchema.parse(parsed);\n}\n\n/**\n * Safe parse for WebSocket messages (returns result object)\n */\nexport function safeParseWSMessage(data: string): WSParseResult {\n try {\n const parsed: unknown = JSON.parse(data);\n const result = WSMessageSchema.safeParse(parsed);\n if (result.success) {\n return { success: true, data: result.data };\n }\n return { success: false, error: result.error };\n } catch {\n return {\n success: false,\n error: new z.ZodError([\n {\n code: 'custom',\n message: 'Invalid JSON',\n path: [],\n },\n ]),\n };\n }\n}\n","/**\n * GitHub Proxy Zod Schemas\n *\n * Schemas for GitHub proxy operations.\n */\n\nimport { z } from 'zod';\nimport { createResponseSchema } from './common';\n\n/**\n * GitHub file info schema\n */\nexport const GithubFileInfoSchema = z.object({\n name: z.string(),\n path: z.string(),\n sha: z.string(),\n size: z.number(),\n type: z.enum(['file', 'dir', 'symlink', 'submodule']),\n url: z.string().optional(),\n html_url: z.string().optional(),\n git_url: z.string().optional(),\n download_url: z.string().nullable().optional(),\n content: z.string().optional(),\n encoding: z.string().optional(),\n});\n\nexport type GithubFileInfo = z.infer<typeof GithubFileInfoSchema>;\n\n/**\n * GitHub repository info schema\n */\nexport const GithubRepoInfoSchema = z.object({\n id: z.number(),\n name: z.string(),\n full_name: z.string(),\n private: z.boolean(),\n owner: z.object({\n login: z.string(),\n id: z.number(),\n avatar_url: z.string().optional(),\n type: z.string().optional(),\n }),\n html_url: z.string(),\n description: z.string().nullable().optional(),\n fork: z.boolean().optional(),\n created_at: z.string().optional(),\n updated_at: z.string().optional(),\n pushed_at: z.string().optional(),\n size: z.number().optional(),\n stargazers_count: z.number().optional(),\n watchers_count: z.number().optional(),\n language: z.string().nullable().optional(),\n default_branch: z.string().optional(),\n visibility: z.string().optional(),\n});\n\nexport type GithubRepoInfo = z.infer<typeof GithubRepoInfoSchema>;\n\n/**\n * GitHub branch info schema\n */\nexport const GithubBranchInfoSchema = z.object({\n name: z.string(),\n commit: z.object({\n sha: z.string(),\n url: z.string().optional(),\n }),\n protected: z.boolean().optional(),\n});\n\nexport type GithubBranchInfo = z.infer<typeof GithubBranchInfoSchema>;\n\n/**\n * GitHub commit info schema\n */\nexport const GithubCommitInfoSchema = z.object({\n sha: z.string(),\n message: z.string().optional(),\n author: z\n .object({\n name: z.string().optional(),\n email: z.string().optional(),\n date: z.string().optional(),\n })\n .optional(),\n committer: z\n .object({\n name: z.string().optional(),\n email: z.string().optional(),\n date: z.string().optional(),\n })\n .optional(),\n url: z.string().optional(),\n html_url: z.string().optional(),\n});\n\nexport type GithubCommitInfo = z.infer<typeof GithubCommitInfoSchema>;\n\n/**\n * GitHub proxy file response data schema\n */\nexport const GithubFileDataSchema = z.object({\n file: GithubFileInfoSchema,\n content: z.string().optional(),\n encoding: z.string().optional(),\n});\n\nexport type GithubFileData = z.infer<typeof GithubFileDataSchema>;\n\n/**\n * GitHub proxy file response schema\n */\nexport const GithubFileResponseSchema = createResponseSchema(GithubFileDataSchema);\n\nexport type GithubFileResponse = z.infer<typeof GithubFileResponseSchema>;\n\n/**\n * GitHub proxy directory response data schema\n */\nexport const GithubDirectoryDataSchema = z.object({\n entries: z.array(GithubFileInfoSchema),\n path: z.string(),\n});\n\nexport type GithubDirectoryData = z.infer<typeof GithubDirectoryDataSchema>;\n\n/**\n * GitHub proxy directory response schema\n */\nexport const GithubDirectoryResponseSchema = createResponseSchema(GithubDirectoryDataSchema);\n\nexport type GithubDirectoryResponse = z.infer<typeof GithubDirectoryResponseSchema>;\n\n/**\n * GitHub proxy repo info response data schema\n */\nexport const GithubRepoDataSchema = z.object({\n repository: GithubRepoInfoSchema,\n});\n\nexport type GithubRepoData = z.infer<typeof GithubRepoDataSchema>;\n\n/**\n * GitHub proxy repo info response schema\n */\nexport const GithubRepoResponseSchema = createResponseSchema(GithubRepoDataSchema);\n\nexport type GithubRepoResponse = z.infer<typeof GithubRepoResponseSchema>;\n\n/**\n * GitHub proxy branches response data schema\n */\nexport const GithubBranchesDataSchema = z.object({\n branches: z.array(GithubBranchInfoSchema),\n});\n\nexport type GithubBranchesData = z.infer<typeof GithubBranchesDataSchema>;\n\n/**\n * GitHub proxy branches response schema\n */\nexport const GithubBranchesResponseSchema = createResponseSchema(GithubBranchesDataSchema);\n\nexport type GithubBranchesResponse = z.infer<typeof GithubBranchesResponseSchema>;\n\n/**\n * GitHub proxy commits response data schema\n */\nexport const GithubCommitsDataSchema = z.object({\n commits: z.array(GithubCommitInfoSchema),\n});\n\nexport type GithubCommitsData = z.infer<typeof GithubCommitsDataSchema>;\n\n/**\n * GitHub proxy commits response schema\n */\nexport const GithubCommitsResponseSchema = createResponseSchema(GithubCommitsDataSchema);\n\nexport type GithubCommitsResponse = z.infer<typeof GithubCommitsResponseSchema>;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/generated/core/bodySerializer.gen.ts","../src/generated/core/serverSentEvents.gen.ts","../src/generated/core/pathSerializer.gen.ts","../src/generated/core/utils.gen.ts","../src/generated/core/auth.gen.ts","../src/generated/client/utils.gen.ts","../src/generated/client/client.gen.ts","../src/generated/client.gen.ts","../src/generated/sdk.gen.ts","../src/client.ts","../src/path.ts","../src/path-service.ts","../src/websocket.ts","../src/types/errors.ts","../src/schemas/common.ts","../src/schemas/content.ts","../src/schemas/session.ts","../src/schemas/project.ts","../src/schemas/repository.ts","../src/schemas/auth.ts","../src/schemas/discovery.ts","../src/schemas/websocket.ts","../src/schemas/github.ts"],"names":["joinedValues","config","request","error","finalError","url","client","OCXPErrorCode","z"],"mappings":"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","file":"index.cjs","sourcesContent":["// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { ArrayStyle, ObjectStyle, SerializerOptions } from './pathSerializer.gen';\n\nexport type QuerySerializer = (query: Record<string, unknown>) => string;\n\nexport type BodySerializer = (body: any) => any;\n\ntype QuerySerializerOptionsObject = {\n allowReserved?: boolean;\n array?: Partial<SerializerOptions<ArrayStyle>>;\n object?: Partial<SerializerOptions<ObjectStyle>>;\n};\n\nexport type QuerySerializerOptions = QuerySerializerOptionsObject & {\n /**\n * Per-parameter serialization overrides. When provided, these settings\n * override the global array/object settings for specific parameter names.\n */\n parameters?: Record<string, QuerySerializerOptionsObject>;\n};\n\nconst serializeFormDataPair = (data: FormData, key: string, value: unknown): void => {\n if (typeof value === 'string' || value instanceof Blob) {\n data.append(key, value);\n } else if (value instanceof Date) {\n data.append(key, value.toISOString());\n } else {\n data.append(key, JSON.stringify(value));\n }\n};\n\nconst serializeUrlSearchParamsPair = (data: URLSearchParams, key: string, value: unknown): void => {\n if (typeof value === 'string') {\n data.append(key, value);\n } else {\n data.append(key, JSON.stringify(value));\n }\n};\n\nexport const formDataBodySerializer = {\n bodySerializer: <T extends Record<string, any> | Array<Record<string, any>>>(\n body: T\n ): FormData => {\n const data = new FormData();\n\n Object.entries(body).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeFormDataPair(data, key, v));\n } else {\n serializeFormDataPair(data, key, value);\n }\n });\n\n return data;\n },\n};\n\nexport const jsonBodySerializer = {\n bodySerializer: <T>(body: T): string =>\n JSON.stringify(body, (_key, value) => (typeof value === 'bigint' ? value.toString() : value)),\n};\n\nexport const urlSearchParamsBodySerializer = {\n bodySerializer: <T extends Record<string, any> | Array<Record<string, any>>>(body: T): string => {\n const data = new URLSearchParams();\n\n Object.entries(body).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeUrlSearchParamsPair(data, key, v));\n } else {\n serializeUrlSearchParamsPair(data, key, value);\n }\n });\n\n return data.toString();\n },\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Config } from './types.gen';\n\nexport type ServerSentEventsOptions<TData = unknown> = Omit<RequestInit, 'method'> &\n Pick<Config, 'method' | 'responseTransformer' | 'responseValidator'> & {\n /**\n * Fetch API implementation. You can use this option to provide a custom\n * fetch instance.\n *\n * @default globalThis.fetch\n */\n fetch?: typeof fetch;\n /**\n * Implementing clients can call request interceptors inside this hook.\n */\n onRequest?: (url: string, init: RequestInit) => Promise<Request>;\n /**\n * Callback invoked when a network or parsing error occurs during streaming.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @param error The error that occurred.\n */\n onSseError?: (error: unknown) => void;\n /**\n * Callback invoked when an event is streamed from the server.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @param event Event streamed from the server.\n * @returns Nothing (void).\n */\n onSseEvent?: (event: StreamEvent<TData>) => void;\n serializedBody?: RequestInit['body'];\n /**\n * Default retry delay in milliseconds.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @default 3000\n */\n sseDefaultRetryDelay?: number;\n /**\n * Maximum number of retry attempts before giving up.\n */\n sseMaxRetryAttempts?: number;\n /**\n * Maximum retry delay in milliseconds.\n *\n * Applies only when exponential backoff is used.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @default 30000\n */\n sseMaxRetryDelay?: number;\n /**\n * Optional sleep function for retry backoff.\n *\n * Defaults to using `setTimeout`.\n */\n sseSleepFn?: (ms: number) => Promise<void>;\n url: string;\n };\n\nexport interface StreamEvent<TData = unknown> {\n data: TData;\n event?: string;\n id?: string;\n retry?: number;\n}\n\nexport type ServerSentEventsResult<TData = unknown, TReturn = void, TNext = unknown> = {\n stream: AsyncGenerator<\n TData extends Record<string, unknown> ? TData[keyof TData] : TData,\n TReturn,\n TNext\n >;\n};\n\nexport const createSseClient = <TData = unknown>({\n onRequest,\n onSseError,\n onSseEvent,\n responseTransformer,\n responseValidator,\n sseDefaultRetryDelay,\n sseMaxRetryAttempts,\n sseMaxRetryDelay,\n sseSleepFn,\n url,\n ...options\n}: ServerSentEventsOptions): ServerSentEventsResult<TData> => {\n let lastEventId: string | undefined;\n\n const sleep = sseSleepFn ?? ((ms: number) => new Promise((resolve) => setTimeout(resolve, ms)));\n\n const createStream = async function* () {\n let retryDelay: number = sseDefaultRetryDelay ?? 3000;\n let attempt = 0;\n const signal = options.signal ?? new AbortController().signal;\n\n while (true) {\n if (signal.aborted) break;\n\n attempt++;\n\n const headers =\n options.headers instanceof Headers\n ? options.headers\n : new Headers(options.headers as Record<string, string> | undefined);\n\n if (lastEventId !== undefined) {\n headers.set('Last-Event-ID', lastEventId);\n }\n\n try {\n const requestInit: RequestInit = {\n redirect: 'follow',\n ...options,\n body: options.serializedBody,\n headers,\n signal,\n };\n let request = new Request(url, requestInit);\n if (onRequest) {\n request = await onRequest(url, requestInit);\n }\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = options.fetch ?? globalThis.fetch;\n const response = await _fetch(request);\n\n if (!response.ok) throw new Error(`SSE failed: ${response.status} ${response.statusText}`);\n\n if (!response.body) throw new Error('No body in SSE response');\n\n const reader = response.body.pipeThrough(new TextDecoderStream()).getReader();\n\n let buffer = '';\n\n const abortHandler = () => {\n try {\n reader.cancel();\n } catch {\n // noop\n }\n };\n\n signal.addEventListener('abort', abortHandler);\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer += value;\n // Normalize line endings: CRLF -> LF, then CR -> LF\n buffer = buffer.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n\n const chunks = buffer.split('\\n\\n');\n buffer = chunks.pop() ?? '';\n\n for (const chunk of chunks) {\n const lines = chunk.split('\\n');\n const dataLines: Array<string> = [];\n let eventName: string | undefined;\n\n for (const line of lines) {\n if (line.startsWith('data:')) {\n dataLines.push(line.replace(/^data:\\s*/, ''));\n } else if (line.startsWith('event:')) {\n eventName = line.replace(/^event:\\s*/, '');\n } else if (line.startsWith('id:')) {\n lastEventId = line.replace(/^id:\\s*/, '');\n } else if (line.startsWith('retry:')) {\n const parsed = Number.parseInt(line.replace(/^retry:\\s*/, ''), 10);\n if (!Number.isNaN(parsed)) {\n retryDelay = parsed;\n }\n }\n }\n\n let data: unknown;\n let parsedJson = false;\n\n if (dataLines.length) {\n const rawData = dataLines.join('\\n');\n try {\n data = JSON.parse(rawData);\n parsedJson = true;\n } catch {\n data = rawData;\n }\n }\n\n if (parsedJson) {\n if (responseValidator) {\n await responseValidator(data);\n }\n\n if (responseTransformer) {\n data = await responseTransformer(data);\n }\n }\n\n onSseEvent?.({\n data,\n event: eventName,\n id: lastEventId,\n retry: retryDelay,\n });\n\n if (dataLines.length) {\n yield data as any;\n }\n }\n }\n } finally {\n signal.removeEventListener('abort', abortHandler);\n reader.releaseLock();\n }\n\n break; // exit loop on normal completion\n } catch (error) {\n // connection failed or aborted; retry after delay\n onSseError?.(error);\n\n if (sseMaxRetryAttempts !== undefined && attempt >= sseMaxRetryAttempts) {\n break; // stop after firing error\n }\n\n // exponential backoff: double retry each attempt, cap at 30s\n const backoff = Math.min(retryDelay * 2 ** (attempt - 1), sseMaxRetryDelay ?? 30000);\n await sleep(backoff);\n }\n }\n };\n\n const stream = createStream();\n\n return { stream };\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\ninterface SerializeOptions<T> extends SerializePrimitiveOptions, SerializerOptions<T> {}\n\ninterface SerializePrimitiveOptions {\n allowReserved?: boolean;\n name: string;\n}\n\nexport interface SerializerOptions<T> {\n /**\n * @default true\n */\n explode: boolean;\n style: T;\n}\n\nexport type ArrayStyle = 'form' | 'spaceDelimited' | 'pipeDelimited';\nexport type ArraySeparatorStyle = ArrayStyle | MatrixStyle;\ntype MatrixStyle = 'label' | 'matrix' | 'simple';\nexport type ObjectStyle = 'form' | 'deepObject';\ntype ObjectSeparatorStyle = ObjectStyle | MatrixStyle;\n\ninterface SerializePrimitiveParam extends SerializePrimitiveOptions {\n value: string;\n}\n\nexport const separatorArrayExplode = (style: ArraySeparatorStyle) => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\n\nexport const separatorArrayNoExplode = (style: ArraySeparatorStyle) => {\n switch (style) {\n case 'form':\n return ',';\n case 'pipeDelimited':\n return '|';\n case 'spaceDelimited':\n return '%20';\n default:\n return ',';\n }\n};\n\nexport const separatorObjectExplode = (style: ObjectSeparatorStyle) => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\n\nexport const serializeArrayParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n}: SerializeOptions<ArraySeparatorStyle> & {\n value: unknown[];\n}) => {\n if (!explode) {\n const joinedValues = (\n allowReserved ? value : value.map((v) => encodeURIComponent(v as string))\n ).join(separatorArrayNoExplode(style));\n switch (style) {\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n case 'simple':\n return joinedValues;\n default:\n return `${name}=${joinedValues}`;\n }\n }\n\n const separator = separatorArrayExplode(style);\n const joinedValues = value\n .map((v) => {\n if (style === 'label' || style === 'simple') {\n return allowReserved ? v : encodeURIComponent(v as string);\n }\n\n return serializePrimitiveParam({\n allowReserved,\n name,\n value: v as string,\n });\n })\n .join(separator);\n return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues;\n};\n\nexport const serializePrimitiveParam = ({\n allowReserved,\n name,\n value,\n}: SerializePrimitiveParam) => {\n if (value === undefined || value === null) {\n return '';\n }\n\n if (typeof value === 'object') {\n throw new Error(\n 'Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.'\n );\n }\n\n return `${name}=${allowReserved ? value : encodeURIComponent(value)}`;\n};\n\nexport const serializeObjectParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n valueOnly,\n}: SerializeOptions<ObjectSeparatorStyle> & {\n value: Record<string, unknown> | Date;\n valueOnly?: boolean;\n}) => {\n if (value instanceof Date) {\n return valueOnly ? value.toISOString() : `${name}=${value.toISOString()}`;\n }\n\n if (style !== 'deepObject' && !explode) {\n let values: string[] = [];\n Object.entries(value).forEach(([key, v]) => {\n values = [...values, key, allowReserved ? (v as string) : encodeURIComponent(v as string)];\n });\n const joinedValues = values.join(',');\n switch (style) {\n case 'form':\n return `${name}=${joinedValues}`;\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n default:\n return joinedValues;\n }\n }\n\n const separator = separatorObjectExplode(style);\n const joinedValues = Object.entries(value)\n .map(([key, v]) =>\n serializePrimitiveParam({\n allowReserved,\n name: style === 'deepObject' ? `${name}[${key}]` : key,\n value: v as string,\n })\n )\n .join(separator);\n return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { BodySerializer, QuerySerializer } from './bodySerializer.gen';\nimport {\n type ArraySeparatorStyle,\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from './pathSerializer.gen';\n\nexport interface PathSerializer {\n path: Record<string, unknown>;\n url: string;\n}\n\nexport const PATH_PARAM_RE = /\\{[^{}]+\\}/g;\n\nexport const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => {\n let url = _url;\n const matches = _url.match(PATH_PARAM_RE);\n if (matches) {\n for (const match of matches) {\n let explode = false;\n let name = match.substring(1, match.length - 1);\n let style: ArraySeparatorStyle = 'simple';\n\n if (name.endsWith('*')) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n\n if (name.startsWith('.')) {\n name = name.substring(1);\n style = 'label';\n } else if (name.startsWith(';')) {\n name = name.substring(1);\n style = 'matrix';\n }\n\n const value = path[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n if (Array.isArray(value)) {\n url = url.replace(match, serializeArrayParam({ explode, name, style, value }));\n continue;\n }\n\n if (typeof value === 'object') {\n url = url.replace(\n match,\n serializeObjectParam({\n explode,\n name,\n style,\n value: value as Record<string, unknown>,\n valueOnly: true,\n })\n );\n continue;\n }\n\n if (style === 'matrix') {\n url = url.replace(\n match,\n `;${serializePrimitiveParam({\n name,\n value: value as string,\n })}`\n );\n continue;\n }\n\n const replaceValue = encodeURIComponent(\n style === 'label' ? `.${value as string}` : (value as string)\n );\n url = url.replace(match, replaceValue);\n }\n }\n return url;\n};\n\nexport const getUrl = ({\n baseUrl,\n path,\n query,\n querySerializer,\n url: _url,\n}: {\n baseUrl?: string;\n path?: Record<string, unknown>;\n query?: Record<string, unknown>;\n querySerializer: QuerySerializer;\n url: string;\n}) => {\n const pathUrl = _url.startsWith('/') ? _url : `/${_url}`;\n let url = (baseUrl ?? '') + pathUrl;\n if (path) {\n url = defaultPathSerializer({ path, url });\n }\n let search = query ? querySerializer(query) : '';\n if (search.startsWith('?')) {\n search = search.substring(1);\n }\n if (search) {\n url += `?${search}`;\n }\n return url;\n};\n\nexport function getValidRequestBody(options: {\n body?: unknown;\n bodySerializer?: BodySerializer | null;\n serializedBody?: unknown;\n}) {\n const hasBody = options.body !== undefined;\n const isSerializedBody = hasBody && options.bodySerializer;\n\n if (isSerializedBody) {\n if ('serializedBody' in options) {\n const hasSerializedBody =\n options.serializedBody !== undefined && options.serializedBody !== '';\n\n return hasSerializedBody ? options.serializedBody : null;\n }\n\n // not all clients implement a serializedBody property (i.e. client-axios)\n return options.body !== '' ? options.body : null;\n }\n\n // plain/text body\n if (hasBody) {\n return options.body;\n }\n\n // no body was provided\n return undefined;\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\nexport type AuthToken = string | undefined;\n\nexport interface Auth {\n /**\n * Which part of the request do we use to send the auth?\n *\n * @default 'header'\n */\n in?: 'header' | 'query' | 'cookie';\n /**\n * Header or query parameter name.\n *\n * @default 'Authorization'\n */\n name?: string;\n scheme?: 'basic' | 'bearer';\n type: 'apiKey' | 'http';\n}\n\nexport const getAuthToken = async (\n auth: Auth,\n callback: ((auth: Auth) => Promise<AuthToken> | AuthToken) | AuthToken\n): Promise<string | undefined> => {\n const token = typeof callback === 'function' ? await callback(auth) : callback;\n\n if (!token) {\n return;\n }\n\n if (auth.scheme === 'bearer') {\n return `Bearer ${token}`;\n }\n\n if (auth.scheme === 'basic') {\n return `Basic ${btoa(token)}`;\n }\n\n return token;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { getAuthToken } from '../core/auth.gen';\nimport type { QuerySerializerOptions } from '../core/bodySerializer.gen';\nimport { jsonBodySerializer } from '../core/bodySerializer.gen';\nimport {\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from '../core/pathSerializer.gen';\nimport { getUrl } from '../core/utils.gen';\nimport type { Client, ClientOptions, Config, RequestOptions } from './types.gen';\n\nexport const createQuerySerializer = <T = unknown>({\n parameters = {},\n ...args\n}: QuerySerializerOptions = {}) => {\n const querySerializer = (queryParams: T) => {\n const search: string[] = [];\n if (queryParams && typeof queryParams === 'object') {\n for (const name in queryParams) {\n const value = queryParams[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n const options = parameters[name] || args;\n\n if (Array.isArray(value)) {\n const serializedArray = serializeArrayParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'form',\n value,\n ...options.array,\n });\n if (serializedArray) search.push(serializedArray);\n } else if (typeof value === 'object') {\n const serializedObject = serializeObjectParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'deepObject',\n value: value as Record<string, unknown>,\n ...options.object,\n });\n if (serializedObject) search.push(serializedObject);\n } else {\n const serializedPrimitive = serializePrimitiveParam({\n allowReserved: options.allowReserved,\n name,\n value: value as string,\n });\n if (serializedPrimitive) search.push(serializedPrimitive);\n }\n }\n }\n return search.join('&');\n };\n return querySerializer;\n};\n\n/**\n * Infers parseAs value from provided Content-Type header.\n */\nexport const getParseAs = (contentType: string | null): Exclude<Config['parseAs'], 'auto'> => {\n if (!contentType) {\n // If no Content-Type header is provided, the best we can do is return the raw response body,\n // which is effectively the same as the 'stream' option.\n return 'stream';\n }\n\n const cleanContent = contentType.split(';')[0]?.trim();\n\n if (!cleanContent) {\n return;\n }\n\n if (cleanContent.startsWith('application/json') || cleanContent.endsWith('+json')) {\n return 'json';\n }\n\n if (cleanContent === 'multipart/form-data') {\n return 'formData';\n }\n\n if (\n ['application/', 'audio/', 'image/', 'video/'].some((type) => cleanContent.startsWith(type))\n ) {\n return 'blob';\n }\n\n if (cleanContent.startsWith('text/')) {\n return 'text';\n }\n\n return;\n};\n\nconst checkForExistence = (\n options: Pick<RequestOptions, 'auth' | 'query'> & {\n headers: Headers;\n },\n name?: string\n): boolean => {\n if (!name) {\n return false;\n }\n if (\n options.headers.has(name) ||\n options.query?.[name] ||\n options.headers.get('Cookie')?.includes(`${name}=`)\n ) {\n return true;\n }\n return false;\n};\n\nexport const setAuthParams = async ({\n security,\n ...options\n}: Pick<Required<RequestOptions>, 'security'> &\n Pick<RequestOptions, 'auth' | 'query'> & {\n headers: Headers;\n }) => {\n for (const auth of security) {\n if (checkForExistence(options, auth.name)) {\n continue;\n }\n\n const token = await getAuthToken(auth, options.auth);\n\n if (!token) {\n continue;\n }\n\n const name = auth.name ?? 'Authorization';\n\n switch (auth.in) {\n case 'query':\n if (!options.query) {\n options.query = {};\n }\n options.query[name] = token;\n break;\n case 'cookie':\n options.headers.append('Cookie', `${name}=${token}`);\n break;\n case 'header':\n default:\n options.headers.set(name, token);\n break;\n }\n }\n};\n\nexport const buildUrl: Client['buildUrl'] = (options) =>\n getUrl({\n baseUrl: options.baseUrl as string,\n path: options.path,\n query: options.query,\n querySerializer:\n typeof options.querySerializer === 'function'\n ? options.querySerializer\n : createQuerySerializer(options.querySerializer),\n url: options.url,\n });\n\nexport const mergeConfigs = (a: Config, b: Config): Config => {\n const config = { ...a, ...b };\n if (config.baseUrl?.endsWith('/')) {\n config.baseUrl = config.baseUrl.substring(0, config.baseUrl.length - 1);\n }\n config.headers = mergeHeaders(a.headers, b.headers);\n return config;\n};\n\nconst headersEntries = (headers: Headers): Array<[string, string]> => {\n const entries: Array<[string, string]> = [];\n headers.forEach((value, key) => {\n entries.push([key, value]);\n });\n return entries;\n};\n\nexport const mergeHeaders = (\n ...headers: Array<Required<Config>['headers'] | undefined>\n): Headers => {\n const mergedHeaders = new Headers();\n for (const header of headers) {\n if (!header) {\n continue;\n }\n\n const iterator = header instanceof Headers ? headersEntries(header) : Object.entries(header);\n\n for (const [key, value] of iterator) {\n if (value === null) {\n mergedHeaders.delete(key);\n } else if (Array.isArray(value)) {\n for (const v of value) {\n mergedHeaders.append(key, v as string);\n }\n } else if (value !== undefined) {\n // assume object headers are meant to be JSON stringified, i.e. their\n // content value in OpenAPI specification is 'application/json'\n mergedHeaders.set(\n key,\n typeof value === 'object' ? JSON.stringify(value) : (value as string)\n );\n }\n }\n }\n return mergedHeaders;\n};\n\ntype ErrInterceptor<Err, Res, Req, Options> = (\n error: Err,\n response: Res,\n request: Req,\n options: Options\n) => Err | Promise<Err>;\n\ntype ReqInterceptor<Req, Options> = (request: Req, options: Options) => Req | Promise<Req>;\n\ntype ResInterceptor<Res, Req, Options> = (\n response: Res,\n request: Req,\n options: Options\n) => Res | Promise<Res>;\n\nclass Interceptors<Interceptor> {\n fns: Array<Interceptor | null> = [];\n\n clear(): void {\n this.fns = [];\n }\n\n eject(id: number | Interceptor): void {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = null;\n }\n }\n\n exists(id: number | Interceptor): boolean {\n const index = this.getInterceptorIndex(id);\n return Boolean(this.fns[index]);\n }\n\n getInterceptorIndex(id: number | Interceptor): number {\n if (typeof id === 'number') {\n return this.fns[id] ? id : -1;\n }\n return this.fns.indexOf(id);\n }\n\n update(id: number | Interceptor, fn: Interceptor): number | Interceptor | false {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = fn;\n return id;\n }\n return false;\n }\n\n use(fn: Interceptor): number {\n this.fns.push(fn);\n return this.fns.length - 1;\n }\n}\n\nexport interface Middleware<Req, Res, Err, Options> {\n error: Interceptors<ErrInterceptor<Err, Res, Req, Options>>;\n request: Interceptors<ReqInterceptor<Req, Options>>;\n response: Interceptors<ResInterceptor<Res, Req, Options>>;\n}\n\nexport const createInterceptors = <Req, Res, Err, Options>(): Middleware<\n Req,\n Res,\n Err,\n Options\n> => ({\n error: new Interceptors<ErrInterceptor<Err, Res, Req, Options>>(),\n request: new Interceptors<ReqInterceptor<Req, Options>>(),\n response: new Interceptors<ResInterceptor<Res, Req, Options>>(),\n});\n\nconst defaultQuerySerializer = createQuerySerializer({\n allowReserved: false,\n array: {\n explode: true,\n style: 'form',\n },\n object: {\n explode: true,\n style: 'deepObject',\n },\n});\n\nconst defaultHeaders = {\n 'Content-Type': 'application/json',\n};\n\nexport const createConfig = <T extends ClientOptions = ClientOptions>(\n override: Config<Omit<ClientOptions, keyof T> & T> = {}\n): Config<Omit<ClientOptions, keyof T> & T> => ({\n ...jsonBodySerializer,\n headers: defaultHeaders,\n parseAs: 'auto',\n querySerializer: defaultQuerySerializer,\n ...override,\n});\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { createSseClient } from '../core/serverSentEvents.gen';\nimport type { HttpMethod } from '../core/types.gen';\nimport { getValidRequestBody } from '../core/utils.gen';\nimport type { Client, Config, RequestOptions, ResolvedRequestOptions } from './types.gen';\nimport {\n buildUrl,\n createConfig,\n createInterceptors,\n getParseAs,\n mergeConfigs,\n mergeHeaders,\n setAuthParams,\n} from './utils.gen';\n\ntype ReqInit = Omit<RequestInit, 'body' | 'headers'> & {\n body?: any;\n headers: ReturnType<typeof mergeHeaders>;\n};\n\nexport const createClient = (config: Config = {}): Client => {\n let _config = mergeConfigs(createConfig(), config);\n\n const getConfig = (): Config => ({ ..._config });\n\n const setConfig = (config: Config): Config => {\n _config = mergeConfigs(_config, config);\n return getConfig();\n };\n\n const interceptors = createInterceptors<Request, Response, unknown, ResolvedRequestOptions>();\n\n const beforeRequest = async (options: RequestOptions) => {\n const opts = {\n ..._config,\n ...options,\n fetch: options.fetch ?? _config.fetch ?? globalThis.fetch,\n headers: mergeHeaders(_config.headers, options.headers),\n serializedBody: undefined,\n };\n\n if (opts.security) {\n await setAuthParams({\n ...opts,\n security: opts.security,\n });\n }\n\n if (opts.requestValidator) {\n await opts.requestValidator(opts);\n }\n\n if (opts.body !== undefined && opts.bodySerializer) {\n opts.serializedBody = opts.bodySerializer(opts.body);\n }\n\n // remove Content-Type header if body is empty to avoid sending invalid requests\n if (opts.body === undefined || opts.serializedBody === '') {\n opts.headers.delete('Content-Type');\n }\n\n const url = buildUrl(opts);\n\n return { opts, url };\n };\n\n const request: Client['request'] = async (options) => {\n // @ts-expect-error\n const { opts, url } = await beforeRequest(options);\n const requestInit: ReqInit = {\n redirect: 'follow',\n ...opts,\n body: getValidRequestBody(opts),\n };\n\n let request = new Request(url, requestInit);\n\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = opts.fetch!;\n let response: Response;\n\n try {\n response = await _fetch(request);\n } catch (error) {\n // Handle fetch exceptions (AbortError, network errors, etc.)\n let finalError = error;\n\n for (const fn of interceptors.error.fns) {\n if (fn) {\n finalError = (await fn(error, undefined as any, request, opts)) as unknown;\n }\n }\n\n finalError = finalError || ({} as unknown);\n\n if (opts.throwOnError) {\n throw finalError;\n }\n\n // Return error response\n return opts.responseStyle === 'data'\n ? undefined\n : {\n error: finalError,\n request,\n response: undefined as any,\n };\n }\n\n for (const fn of interceptors.response.fns) {\n if (fn) {\n response = await fn(response, request, opts);\n }\n }\n\n const result = {\n request,\n response,\n };\n\n if (response.ok) {\n const parseAs =\n (opts.parseAs === 'auto'\n ? getParseAs(response.headers.get('Content-Type'))\n : opts.parseAs) ?? 'json';\n\n if (response.status === 204 || response.headers.get('Content-Length') === '0') {\n let emptyData: any;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'text':\n emptyData = await response[parseAs]();\n break;\n case 'formData':\n emptyData = new FormData();\n break;\n case 'stream':\n emptyData = response.body;\n break;\n case 'json':\n default:\n emptyData = {};\n break;\n }\n return opts.responseStyle === 'data'\n ? emptyData\n : {\n data: emptyData,\n ...result,\n };\n }\n\n let data: any;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'formData':\n case 'json':\n case 'text':\n data = await response[parseAs]();\n break;\n case 'stream':\n return opts.responseStyle === 'data'\n ? response.body\n : {\n data: response.body,\n ...result,\n };\n }\n\n if (parseAs === 'json') {\n if (opts.responseValidator) {\n await opts.responseValidator(data);\n }\n\n if (opts.responseTransformer) {\n data = await opts.responseTransformer(data);\n }\n }\n\n return opts.responseStyle === 'data'\n ? data\n : {\n data,\n ...result,\n };\n }\n\n const textError = await response.text();\n let jsonError: unknown;\n\n try {\n jsonError = JSON.parse(textError);\n } catch {\n // noop\n }\n\n const error = jsonError ?? textError;\n let finalError = error;\n\n for (const fn of interceptors.error.fns) {\n if (fn) {\n finalError = (await fn(error, response, request, opts)) as string;\n }\n }\n\n finalError = finalError || ({} as string);\n\n if (opts.throwOnError) {\n throw finalError;\n }\n\n // TODO: we probably want to return error and improve types\n return opts.responseStyle === 'data'\n ? undefined\n : {\n error: finalError,\n ...result,\n };\n };\n\n const makeMethodFn = (method: Uppercase<HttpMethod>) => (options: RequestOptions) =>\n request({ ...options, method });\n\n const makeSseFn = (method: Uppercase<HttpMethod>) => async (options: RequestOptions) => {\n const { opts, url } = await beforeRequest(options);\n return createSseClient({\n ...opts,\n body: opts.body as BodyInit | null | undefined,\n headers: opts.headers as unknown as Record<string, string>,\n method,\n onRequest: async (url, init) => {\n let request = new Request(url, init);\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n return request;\n },\n url,\n });\n };\n\n return {\n buildUrl,\n connect: makeMethodFn('CONNECT'),\n delete: makeMethodFn('DELETE'),\n get: makeMethodFn('GET'),\n getConfig,\n head: makeMethodFn('HEAD'),\n interceptors,\n options: makeMethodFn('OPTIONS'),\n patch: makeMethodFn('PATCH'),\n post: makeMethodFn('POST'),\n put: makeMethodFn('PUT'),\n request,\n setConfig,\n sse: {\n connect: makeSseFn('CONNECT'),\n delete: makeSseFn('DELETE'),\n get: makeSseFn('GET'),\n head: makeSseFn('HEAD'),\n options: makeSseFn('OPTIONS'),\n patch: makeSseFn('PATCH'),\n post: makeSseFn('POST'),\n put: makeSseFn('PUT'),\n trace: makeSseFn('TRACE'),\n },\n trace: makeMethodFn('TRACE'),\n } as Client;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { type ClientOptions, type Config, createClient, createConfig } from './client';\nimport type { ClientOptions as ClientOptions2 } from './types.gen';\n\n/**\n * The `createClientConfig()` function will be called on client initialization\n * and the returned object will become the client's initial configuration.\n *\n * You may want to initialize your client this way instead of calling\n * `setConfig()`. This is useful for example if you're using Next.js\n * to ensure your client always has the correct values.\n */\nexport type CreateClientConfig<T extends ClientOptions = ClientOptions2> = (\n override?: Config<ClientOptions & T>\n) => Config<Required<ClientOptions> & T>;\n\nexport const client = createClient(\n createConfig<ClientOptions2>({\n baseUrl: 'https://ix8b43sg3j.execute-api.us-west-2.amazonaws.com',\n })\n);\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport {\n type Client,\n type Options as Options2,\n type TDataShape,\n urlSearchParamsBodySerializer,\n} from './client';\nimport { client } from './client.gen';\nimport type {\n AcknowledgeMemoData,\n AcknowledgeMemoErrors,\n AcknowledgeMemoResponses,\n AddDatabaseData,\n AddDatabaseErrors,\n AddDatabaseResponses,\n AddLinkedRepoData,\n AddLinkedRepoErrors,\n AddLinkedRepoResponses,\n AddMissionData,\n AddMissionErrors,\n AddMissionResponses,\n AddSessionData,\n AddSessionErrors,\n AddSessionResponses,\n ArchiveSessionData,\n ArchiveSessionErrors,\n ArchiveSessionResponses,\n BatchResolveOcxpUrisData,\n BatchResolveOcxpUrisErrors,\n BatchResolveOcxpUrisResponses,\n BulkDeleteContentData,\n BulkDeleteContentErrors,\n BulkDeleteContentResponses,\n BulkMoveContentData,\n BulkMoveContentErrors,\n BulkMoveContentResponses,\n BulkReadContentData,\n BulkReadContentErrors,\n BulkReadContentResponses,\n BulkWriteContentData,\n BulkWriteContentErrors,\n BulkWriteContentResponses,\n CreateDatabaseData,\n CreateDatabaseErrors,\n CreateDatabaseResponses,\n CreateFolderData,\n CreateFolderErrors,\n CreateFolderResponses,\n CreateMemoData,\n CreateMemoErrors,\n CreateMemoResponses,\n CreateMissionData,\n CreateMissionErrors,\n CreateMissionResponses,\n CreateProjectData,\n CreateProjectErrors,\n CreateProjectResponses,\n CreateSessionData,\n CreateSessionErrors,\n CreateSessionResponses,\n DeleteContentData,\n DeleteContentErrors,\n DeleteContentResponses,\n DeleteDatabaseData,\n DeleteDatabaseErrors,\n DeleteDatabaseResponses,\n DeleteGithubTokenData,\n DeleteGithubTokenResponses,\n DeleteMemoData,\n DeleteMemoErrors,\n DeleteMemoResponses,\n DeleteMissionData,\n DeleteMissionErrors,\n DeleteMissionResponses,\n DeleteProjectData,\n DeleteProjectErrors,\n DeleteProjectResponses,\n DeleteRepoData,\n DeleteRepoErrors,\n DeleteRepoResponses,\n DiscoverContextData,\n DiscoverContextErrors,\n DiscoverContextResponses,\n DownloadMissionPackData,\n DownloadMissionPackErrors,\n DownloadMissionPackResponses,\n DownloadRepositoryData,\n DownloadRepositoryErrors,\n DownloadRepositoryResponses,\n ExportCheckpointAsSopData,\n ExportCheckpointAsSopErrors,\n ExportCheckpointAsSopResponses,\n ForkSessionData,\n ForkSessionErrors,\n ForkSessionResponses,\n GetAuthConfigData,\n GetAuthConfigResponses,\n GetCheckpointData,\n GetCheckpointErrors,\n GetCheckpointResponses,\n GetContentStatsData,\n GetContentStatsErrors,\n GetContentStatsResponses,\n GetContentTreeData,\n GetContentTreeErrors,\n GetContentTreeResponses,\n GetContentTypesData,\n GetContentTypesErrors,\n GetContentTypesResponses,\n GetContextReposData,\n GetContextReposErrors,\n GetContextReposResponses,\n GetCurrentUserData,\n GetCurrentUserResponses,\n GetDatabaseData,\n GetDatabaseErrors,\n GetDatabaseOverviewData,\n GetDatabaseOverviewErrors,\n GetDatabaseOverviewResponses,\n GetDatabaseResponses,\n GetGithubTokenStatusData,\n GetGithubTokenStatusResponses,\n GetMemoData,\n GetMemoErrors,\n GetMemoForSourceData,\n GetMemoForSourceErrors,\n GetMemoForSourceResponses,\n GetMemoResponses,\n GetMissionContextData,\n GetMissionContextErrors,\n GetMissionContextResponses,\n GetMissionData,\n GetMissionErrors,\n GetMissionResponses,\n GetProjectData,\n GetProjectDatabasesData,\n GetProjectDatabasesErrors,\n GetProjectDatabasesResponses,\n GetProjectErrors,\n GetProjectResponses,\n GetRepoDownloadStatusData,\n GetRepoDownloadStatusErrors,\n GetRepoDownloadStatusResponses,\n GetSampleData,\n GetSampleErrors,\n GetSampleResponses,\n GetSchemaData,\n GetSchemaErrors,\n GetSchemaResponses,\n GetSessionMessagesData,\n GetSessionMessagesErrors,\n GetSessionMessagesResponses,\n GithubCheckAccessData,\n GithubCheckAccessErrors,\n GithubCheckAccessResponses,\n GithubGetContentsData,\n GithubGetContentsErrors,\n GithubGetContentsResponses,\n GithubListBranchesData,\n GithubListBranchesErrors,\n GithubListBranchesResponses,\n HealthCheck2Data,\n HealthCheck2Responses,\n HealthCheckData,\n HealthCheckErrors,\n HealthCheckResponses,\n IgnoreMemoData,\n IgnoreMemoErrors,\n IgnoreMemoResponses,\n IngestDocumentsData,\n IngestDocumentsErrors,\n IngestDocumentsResponses,\n ListContentData,\n ListContentErrors,\n ListContentResponses,\n ListContextDatabasesData,\n ListContextDatabasesErrors,\n ListContextDatabasesResponses,\n ListDatabasesAliasData,\n ListDatabasesAliasErrors,\n ListDatabasesAliasResponses,\n ListDatabasesData,\n ListDatabasesErrors,\n ListDatabasesResponses,\n ListDownloadedReposData,\n ListDownloadedReposErrors,\n ListDownloadedReposResponses,\n ListMemosData,\n ListMemosErrors,\n ListMemosResponses,\n ListMissionBranchesData,\n ListMissionBranchesErrors,\n ListMissionBranchesResponses,\n ListMissionCheckpointsData,\n ListMissionCheckpointsErrors,\n ListMissionCheckpointsResponses,\n ListMissionsData,\n ListMissionsErrors,\n ListMissionsResponses,\n ListProjectsAliasData,\n ListProjectsAliasErrors,\n ListProjectsAliasResponses,\n ListProjectsData,\n ListProjectsErrors,\n ListProjectsResponses,\n ListSessionsData,\n ListSessionsErrors,\n ListSessionsResponses,\n ListTablesData,\n ListTablesErrors,\n ListTablesResponses,\n ListVersionsData,\n ListVersionsErrors,\n ListVersionsResponses,\n ListWorkspacesData,\n ListWorkspacesResponses,\n LockContentData,\n LockContentErrors,\n LockContentResponses,\n LoginData,\n LoginErrors,\n LoginForAccessTokenData,\n LoginForAccessTokenErrors,\n LoginForAccessTokenResponses,\n LoginResponses,\n MoveContentData,\n MoveContentErrors,\n MoveContentResponses,\n PromoteCheckpointToLongtermData,\n PromoteCheckpointToLongtermErrors,\n PromoteCheckpointToLongtermResponses,\n QueryContentData,\n QueryContentErrors,\n QueryContentResponses,\n QueryKnowledgeBaseData,\n QueryKnowledgeBaseErrors,\n QueryKnowledgeBaseResponses,\n RagKnowledgeBaseData,\n RagKnowledgeBaseErrors,\n RagKnowledgeBaseResponses,\n ReadContentData,\n ReadContentErrors,\n ReadContentResponses,\n RefreshTokensData,\n RefreshTokensErrors,\n RefreshTokensResponses,\n RegenerateMetadataData,\n RegenerateMetadataErrors,\n RegenerateMetadataResponses,\n RegenerateMissionData,\n RegenerateMissionErrors,\n RegenerateMissionResponses,\n RemoveDatabaseData,\n RemoveDatabaseErrors,\n RemoveDatabaseResponses,\n RemoveLinkedRepoData,\n RemoveLinkedRepoErrors,\n RemoveLinkedRepoResponses,\n RemoveMissionData,\n RemoveMissionErrors,\n RemoveMissionResponses,\n RemoveSessionData,\n RemoveSessionErrors,\n RemoveSessionResponses,\n ResolveMemoData,\n ResolveMemoErrors,\n ResolveMemoResponses,\n ResolveOcxpUriData,\n ResolveOcxpUriErrors,\n ResolveOcxpUriResponses,\n SearchContentData,\n SearchContentErrors,\n SearchContentResponses,\n SetDefaultDatabaseData,\n SetDefaultDatabaseErrors,\n SetDefaultDatabaseResponses,\n SetDefaultRepoData,\n SetDefaultRepoErrors,\n SetDefaultRepoResponses,\n SetGithubTokenData,\n SetGithubTokenErrors,\n SetGithubTokenResponses,\n SystemInfoData,\n SystemInfoErrors,\n SystemInfoResponses,\n TestDatabaseConnectionData,\n TestDatabaseConnectionErrors,\n TestDatabaseConnectionResponses,\n ToolCreateMissionData,\n ToolCreateMissionErrors,\n ToolCreateMissionResponses,\n ToolUpdateMissionData,\n ToolUpdateMissionErrors,\n ToolUpdateMissionResponses,\n UnlockContentData,\n UnlockContentErrors,\n UnlockContentResponses,\n UpdateDatabaseData,\n UpdateDatabaseErrors,\n UpdateDatabaseResponses,\n UpdateMissionData,\n UpdateMissionErrors,\n UpdateMissionResponses,\n UpdateProjectData,\n UpdateProjectErrors,\n UpdateProjectResponses,\n UpdateSessionMetadataData,\n UpdateSessionMetadataErrors,\n UpdateSessionMetadataResponses,\n ValidateOcxpUriData,\n ValidateOcxpUriErrors,\n ValidateOcxpUriResponses,\n ValidateResponseData,\n ValidateResponseErrors,\n ValidateResponseResponses,\n WriteContentData,\n WriteContentErrors,\n WriteContentResponses,\n} from './types.gen';\n\nexport type Options<\n TData extends TDataShape = TDataShape,\n ThrowOnError extends boolean = boolean,\n> = Options2<TData, ThrowOnError> & {\n /**\n * You can provide a client instance returned by `createClient()` instead of\n * individual options. This might be also useful if you want to implement a\n * custom client.\n */\n client?: Client;\n /**\n * You can pass arbitrary values through the `meta` object. This can be\n * used to access values that aren't defined as part of the SDK function.\n */\n meta?: Record<string, unknown>;\n};\n\n/**\n * Resolve Ocxp Uri\n *\n * Resolve OCXP URI to actual file locations.\n *\n * Converts ocxp://workspace/content_type/path to:\n * - S3 URI (s3://bucket/path)\n * - Local filesystem path (/vault/path)\n * - Obsidian URI (obsidian://open?vault=...&file=...)\n *\n * Args:\n * request: Resolution request with URI and mode\n * workspace: Current workspace from auth context\n *\n * Returns:\n * OCXPResolution with resolved paths and existence check\n *\n * Raises:\n * HTTPException: If URI format is invalid or content type is unknown\n */\nexport const resolveOcxpUri = <ThrowOnError extends boolean = false>(\n options: Options<ResolveOcxpUriData, ThrowOnError>\n) =>\n (options.client ?? client).post<ResolveOcxpUriResponses, ResolveOcxpUriErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/resolution/resolve',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Validate Ocxp Uri\n *\n * Validate OCXP URI format and content type.\n *\n * Args:\n * request: Validation request with URI\n *\n * Returns:\n * OCXPValidateResponse with validation result\n */\nexport const validateOcxpUri = <ThrowOnError extends boolean = false>(\n options: Options<ValidateOcxpUriData, ThrowOnError>\n) =>\n (options.client ?? client).post<ValidateOcxpUriResponses, ValidateOcxpUriErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/resolution/validate',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Batch Resolve Ocxp Uris\n *\n * Batch resolve multiple OCXP URIs in a single request.\n *\n * Args:\n * request: Batch resolution request with list of URIs\n * workspace: Current workspace from auth context\n *\n * Returns:\n * OCXPBatchResolveResponse with results and errors\n */\nexport const batchResolveOcxpUris = <ThrowOnError extends boolean = false>(\n options: Options<BatchResolveOcxpUrisData, ThrowOnError>\n) =>\n (options.client ?? client).post<\n BatchResolveOcxpUrisResponses,\n BatchResolveOcxpUrisErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/resolution/batch',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Bulk Read Content\n *\n * Bulk read content.\n */\nexport const bulkReadContent = <ThrowOnError extends boolean = false>(\n options: Options<BulkReadContentData, ThrowOnError>\n) =>\n (options.client ?? client).post<BulkReadContentResponses, BulkReadContentErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/{content_type}/bulk/read',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Bulk Write Content\n *\n * Bulk write content.\n */\nexport const bulkWriteContent = <ThrowOnError extends boolean = false>(\n options: Options<BulkWriteContentData, ThrowOnError>\n) =>\n (options.client ?? client).post<BulkWriteContentResponses, BulkWriteContentErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/{content_type}/bulk/write',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Bulk Delete Content\n *\n * Bulk delete content using batch operations.\n */\nexport const bulkDeleteContent = <ThrowOnError extends boolean = false>(\n options: Options<BulkDeleteContentData, ThrowOnError>\n) =>\n (options.client ?? client).post<\n BulkDeleteContentResponses,\n BulkDeleteContentErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/{content_type}/bulk/delete',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Bulk Move Content\n *\n * Bulk move (copy + delete) content.\n *\n * Performs batch copy followed by batch delete for efficiency.\n * Individual item failures are reported in results.\n */\nexport const bulkMoveContent = <ThrowOnError extends boolean = false>(\n options: Options<BulkMoveContentData, ThrowOnError>\n) =>\n (options.client ?? client).post<BulkMoveContentResponses, BulkMoveContentErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/{content_type}/bulk/move',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Regenerate metadata for S3 documents\n *\n * Regenerates Bedrock KB metadata sidecars for existing S3 documents.\n *\n * Use cases:\n * - After schema changes (e.g., adding new metadata fields)\n * - Fixing incorrect metadata from previous versions\n * - Bulk metadata updates for a workspace or project\n *\n * Background processing:\n * - If max_files is None or > 1000, job is queued for background processing\n * - Use job_id to check status via /admin/jobs/{job_id} endpoint\n *\n * Dry run mode:\n * - Shows what would change without updating S3\n * - Useful for validating changes before applying\n */\nexport const regenerateMetadata = <ThrowOnError extends boolean = false>(\n options: Options<RegenerateMetadataData, ThrowOnError>\n) =>\n (options.client ?? client).post<\n RegenerateMetadataResponses,\n RegenerateMetadataErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/admin/metadata/regenerate',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Health check\n *\n * Check system health and component status\n */\nexport const healthCheck = <ThrowOnError extends boolean = false>(\n options?: Options<HealthCheckData, ThrowOnError>\n) =>\n (options?.client ?? client).get<HealthCheckResponses, HealthCheckErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/admin/health',\n ...options,\n });\n\n/**\n * System information\n *\n * Get system configuration and runtime information\n */\nexport const systemInfo = <ThrowOnError extends boolean = false>(\n options?: Options<SystemInfoData, ThrowOnError>\n) =>\n (options?.client ?? client).get<SystemInfoResponses, SystemInfoErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/admin/info',\n ...options,\n });\n\n/**\n * Discover Context\n *\n * Discover relevant context using smart strategy selection.\n *\n * OCXP automatically selects the best retrieval strategy:\n * - **Semantic search** (default): Fast vector similarity search\n * - **RAG with LLM answer**: When `include_answer=True`\n * - **Hybrid search**: When `search_type=HYBRID`\n *\n * The response includes:\n * - **results**: Ranked context snippets with scores\n * - **answer**: LLM-generated answer (only if include_answer=True)\n * - **strategy_used**: Which strategy was applied\n * - **reranked**: Whether results were quality-reranked\n *\n * **Replaces:**\n * - `POST /ocxp/kb/query` - Use this with default options\n * - `POST /ocxp/kb/rag` - Use this with `include_answer=True`\n *\n * **Example Request:**\n * ```json\n * {\n * \"query\": \"How does authentication work?\",\n * \"options\": {\n * \"content_type\": \"code\",\n * \"project\": \"brain\",\n * \"include_answer\": true,\n * \"max_results\": 5\n * }\n * }\n * ```\n */\nexport const discoverContext = <ThrowOnError extends boolean = false>(\n options: Options<DiscoverContextData, ThrowOnError>\n) =>\n (options.client ?? client).post<DiscoverContextResponses, DiscoverContextErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/discover',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Validate Response\n *\n * Validate AI response against context.\n *\n * Checks for:\n * - **Hallucination**: Claims not supported by context\n * - **Outdated**: References to stale information\n * - **Incomplete**: Missing key context\n * - **Contradiction**: Conflicts with source context\n *\n * The response includes:\n * - **valid**: True if no high-severity issues found\n * - **confidence**: Confidence in validation (0.0 - 1.0)\n * - **quality_score**: Overall quality score (0.0 - 1.0)\n * - **issues**: List of specific issues found\n * - **verified_claims**: Number of claims verified against context\n * - **unverified_claims**: Number of claims that couldn't be verified\n *\n * **Example Request:**\n * ```json\n * {\n * \"response\": \"The authentication uses JWT tokens with a 1-hour expiry.\",\n * \"context_ids\": [\"kb-0\", \"kb-1\", \"kb-2\"],\n * \"query\": \"How does authentication work?\",\n * \"strict_mode\": false\n * }\n * ```\n *\n * **Example Response:**\n * ```json\n * {\n * \"valid\": true,\n * \"confidence\": 0.85,\n * \"quality_score\": 0.9,\n * \"issues\": [],\n * \"verified_claims\": 5,\n * \"unverified_claims\": 1\n * }\n * ```\n */\nexport const validateResponse = <ThrowOnError extends boolean = false>(\n options: Options<ValidateResponseData, ThrowOnError>\n) =>\n (options.client ?? client).post<ValidateResponseResponses, ValidateResponseErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/validate',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Ingest Documents\n *\n * Ingest documents directly into Bedrock KB.\n *\n * Triggers immediate indexing of specific documents that already exist in S3.\n * Documents are batched (max 25 per API call) for efficiency.\n *\n * **Prerequisites:**\n * - Documents must already be written to S3 via OCXP content API\n * - Each document should have a `.metadata.json` sidecar for filtering\n *\n * **Use Case:**\n * Called from Obsidian plugin when user clicks \"Index Now\" button\n * to immediately index pending files instead of waiting for 5-min sync.\n *\n * **Example Request:**\n * ```json\n * {\n * \"documents\": [\n * {\"path\": \"project/uuid/auth.md\"},\n * {\"path\": \"project/uuid/flows/login.md\"}\n * ]\n * }\n * ```\n *\n * **Example Response:**\n * ```json\n * {\n * \"indexed\": 2,\n * \"failed\": 0,\n * \"skipped\": 0,\n * \"results\": [\n * {\"path\": \"project/uuid/auth.md\", \"status\": \"indexed\"},\n * {\"path\": \"project/uuid/flows/login.md\", \"status\": \"indexed\"}\n * ]\n * }\n * ```\n */\nexport const ingestDocuments = <ThrowOnError extends boolean = false>(\n options: Options<IngestDocumentsData, ThrowOnError>\n) =>\n (options.client ?? client).post<IngestDocumentsResponses, IngestDocumentsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/ingest',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * List all sessions\n *\n * Returns sessions for the workspace filtered by status. Uses AgentCore Memory when available for fast retrieval. Ordered by most recently updated.\n */\nexport const listSessions = <ThrowOnError extends boolean = false>(\n options?: Options<ListSessionsData, ThrowOnError>\n) =>\n (options?.client ?? client).get<ListSessionsResponses, ListSessionsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/session',\n ...options,\n });\n\n/**\n * Create session\n *\n * Creates a new session linked to a mission in DynamoDB. Used by Brain to establish session-mission relationship.\n */\nexport const createSession = <ThrowOnError extends boolean = false>(\n options: Options<CreateSessionData, ThrowOnError>\n) =>\n (options.client ?? client).post<CreateSessionResponses, CreateSessionErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/session',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Get session messages\n *\n * Loads message history for a session from S3 storage.\n */\nexport const getSessionMessages = <ThrowOnError extends boolean = false>(\n options: Options<GetSessionMessagesData, ThrowOnError>\n) =>\n (options.client ?? client).get<\n GetSessionMessagesResponses,\n GetSessionMessagesErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/session/{session_id}/messages',\n ...options,\n });\n\n/**\n * Update session metadata\n *\n * Updates session title and message count. Creates session if it does not exist.\n */\nexport const updateSessionMetadata = <ThrowOnError extends boolean = false>(\n options: Options<UpdateSessionMetadataData, ThrowOnError>\n) =>\n (options.client ?? client).post<\n UpdateSessionMetadataResponses,\n UpdateSessionMetadataErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/session/{session_id}/metadata',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Fork session\n *\n * Creates a new session branched from an existing one at a specified message point.\n */\nexport const forkSession = <ThrowOnError extends boolean = false>(\n options: Options<ForkSessionData, ThrowOnError>\n) =>\n (options.client ?? client).post<ForkSessionResponses, ForkSessionErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/session/{session_id}/fork',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Archive session\n *\n * Soft deletes a session by changing its status to archived.\n */\nexport const archiveSession = <ThrowOnError extends boolean = false>(\n options: Options<ArchiveSessionData, ThrowOnError>\n) =>\n (options.client ?? client).post<ArchiveSessionResponses, ArchiveSessionErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/session/{session_id}/archive',\n ...options,\n });\n\n/**\n * List mission checkpoints\n *\n * Returns all checkpoints for a mission from AgentCore Memory, optionally filtered by branch\n */\nexport const listMissionCheckpoints = <ThrowOnError extends boolean = false>(\n options: Options<ListMissionCheckpointsData, ThrowOnError>\n) =>\n (options.client ?? client).get<\n ListMissionCheckpointsResponses,\n ListMissionCheckpointsErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/missions/{mission_id}/checkpoints',\n ...options,\n });\n\n/**\n * Get checkpoint details\n *\n * Returns detailed checkpoint information including metadata\n */\nexport const getCheckpoint = <ThrowOnError extends boolean = false>(\n options: Options<GetCheckpointData, ThrowOnError>\n) =>\n (options.client ?? client).get<GetCheckpointResponses, GetCheckpointErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/checkpoints/{checkpoint_id}',\n ...options,\n });\n\n/**\n * List checkpoint branches\n *\n * Returns all branches for a mission\n */\nexport const listMissionBranches = <ThrowOnError extends boolean = false>(\n options: Options<ListMissionBranchesData, ThrowOnError>\n) =>\n (options.client ?? client).get<\n ListMissionBranchesResponses,\n ListMissionBranchesErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/missions/{mission_id}/checkpoints/branches',\n ...options,\n });\n\n/**\n * Export checkpoint as SOP markdown\n *\n * Export checkpoint data as a Standard Operating Procedure .md file\n */\nexport const exportCheckpointAsSop = <ThrowOnError extends boolean = false>(\n options: Options<ExportCheckpointAsSopData, ThrowOnError>\n) =>\n (options.client ?? client).post<\n ExportCheckpointAsSopResponses,\n ExportCheckpointAsSopErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/checkpoints/{checkpoint_id}/export',\n ...options,\n });\n\n/**\n * Promote checkpoint to long-term memory\n *\n * Convert checkpoint event to long-term memory record for permanent storage\n */\nexport const promoteCheckpointToLongterm = <ThrowOnError extends boolean = false>(\n options: Options<PromoteCheckpointToLongtermData, ThrowOnError>\n) =>\n (options.client ?? client).post<\n PromoteCheckpointToLongtermResponses,\n PromoteCheckpointToLongtermErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/checkpoints/{checkpoint_id}/promote',\n ...options,\n });\n\n/**\n * List all projects\n *\n * Returns all projects in the workspace with their linked repos and missions.\n */\nexport const listProjects = <ThrowOnError extends boolean = false>(\n options?: Options<ListProjectsData, ThrowOnError>\n) =>\n (options?.client ?? client).get<ListProjectsResponses, ListProjectsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/project',\n ...options,\n });\n\n/**\n * Create a new project\n *\n * Creates a project with auto-generated UUID. Projects link repos, missions, and sessions for context scoping.\n */\nexport const createProject = <ThrowOnError extends boolean = false>(\n options: Options<CreateProjectData, ThrowOnError>\n) =>\n (options.client ?? client).post<CreateProjectResponses, CreateProjectErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/project',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * List all projects (alias)\n *\n * Alias for GET /ocxp/project. Returns all projects in the workspace.\n */\nexport const listProjectsAlias = <ThrowOnError extends boolean = false>(\n options?: Options<ListProjectsAliasData, ThrowOnError>\n) =>\n (options?.client ?? client).get<\n ListProjectsAliasResponses,\n ListProjectsAliasErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/project/list',\n ...options,\n });\n\n/**\n * Delete project\n *\n * Permanently deletes a project and its metadata. Linked repos are not deleted.\n */\nexport const deleteProject = <ThrowOnError extends boolean = false>(\n options: Options<DeleteProjectData, ThrowOnError>\n) =>\n (options.client ?? client).delete<DeleteProjectResponses, DeleteProjectErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/project/{project_id}',\n ...options,\n });\n\n/**\n * Get project details\n *\n * Returns full project details including linked repos, missions, and metadata.\n */\nexport const getProject = <ThrowOnError extends boolean = false>(\n options: Options<GetProjectData, ThrowOnError>\n) =>\n (options.client ?? client).get<GetProjectResponses, GetProjectErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/project/{project_id}',\n ...options,\n });\n\n/**\n * Update project\n *\n * Updates project name and/or description. Only provided fields are updated.\n */\nexport const updateProject = <ThrowOnError extends boolean = false>(\n options: Options<UpdateProjectData, ThrowOnError>\n) =>\n (options.client ?? client).put<UpdateProjectResponses, UpdateProjectErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/project/{project_id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Link repository to project\n *\n * Links a repository to the project with category, priority, and auto-include settings for KB queries.\n */\nexport const addLinkedRepo = <ThrowOnError extends boolean = false>(\n options: Options<AddLinkedRepoData, ThrowOnError>\n) =>\n (options.client ?? client).post<AddLinkedRepoResponses, AddLinkedRepoErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/project/{project_id}/repos',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Unlink repository from project\n *\n * Removes a repository link from the project. The repository itself is not deleted.\n */\nexport const removeLinkedRepo = <ThrowOnError extends boolean = false>(\n options: Options<RemoveLinkedRepoData, ThrowOnError>\n) =>\n (options.client ?? client).delete<\n RemoveLinkedRepoResponses,\n RemoveLinkedRepoErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/project/{project_id}/repos/{repo_id}',\n ...options,\n });\n\n/**\n * Set default repository\n *\n * Sets the default repository for the project. Used for integration and primary context.\n */\nexport const setDefaultRepo = <ThrowOnError extends boolean = false>(\n options: Options<SetDefaultRepoData, ThrowOnError>\n) =>\n (options.client ?? client).put<SetDefaultRepoResponses, SetDefaultRepoErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/project/{project_id}/default-repo',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Get context repositories\n *\n * Returns all repositories marked for auto-include in KB queries.\n */\nexport const getContextRepos = <ThrowOnError extends boolean = false>(\n options: Options<GetContextReposData, ThrowOnError>\n) =>\n (options.client ?? client).get<GetContextReposResponses, GetContextReposErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/project/{project_id}/context-repos',\n ...options,\n });\n\n/**\n * Add mission to project\n *\n * Associates a mission with the project for context grouping.\n */\nexport const addMission = <ThrowOnError extends boolean = false>(\n options: Options<AddMissionData, ThrowOnError>\n) =>\n (options.client ?? client).post<AddMissionResponses, AddMissionErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/project/{project_id}/missions',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Remove mission from project\n *\n * Removes the mission association from the project. The mission itself is not deleted.\n */\nexport const removeMission = <ThrowOnError extends boolean = false>(\n options: Options<RemoveMissionData, ThrowOnError>\n) =>\n (options.client ?? client).delete<RemoveMissionResponses, RemoveMissionErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/project/{project_id}/missions/{mission_id}',\n ...options,\n });\n\n/**\n * Get project databases\n *\n * Returns all databases linked to the project.\n */\nexport const getProjectDatabases = <ThrowOnError extends boolean = false>(\n options: Options<GetProjectDatabasesData, ThrowOnError>\n) =>\n (options.client ?? client).get<\n GetProjectDatabasesResponses,\n GetProjectDatabasesErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/project/{project_id}/databases',\n ...options,\n });\n\n/**\n * Link database to project\n *\n * Links a database configuration to the project for agent context.\n */\nexport const addDatabase = <ThrowOnError extends boolean = false>(\n options: Options<AddDatabaseData, ThrowOnError>\n) =>\n (options.client ?? client).post<AddDatabaseResponses, AddDatabaseErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/project/{project_id}/databases',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Unlink database from project\n *\n * Removes a database link from the project. The database config is not deleted.\n */\nexport const removeDatabase = <ThrowOnError extends boolean = false>(\n options: Options<RemoveDatabaseData, ThrowOnError>\n) =>\n (options.client ?? client).delete<RemoveDatabaseResponses, RemoveDatabaseErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/project/{project_id}/databases/{database_id}',\n ...options,\n });\n\n/**\n * Set default database\n *\n * Sets the default database for the project. Used when no specific database_id is provided.\n */\nexport const setDefaultDatabase = <ThrowOnError extends boolean = false>(\n options: Options<SetDefaultDatabaseData, ThrowOnError>\n) =>\n (options.client ?? client).put<\n SetDefaultDatabaseResponses,\n SetDefaultDatabaseErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/project/{project_id}/default-database',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * List all missions\n *\n * Returns all missions in the workspace, optionally filtered by project or mission IDs.\n */\nexport const listMissions = <ThrowOnError extends boolean = false>(\n options?: Options<ListMissionsData, ThrowOnError>\n) =>\n (options?.client ?? client).get<ListMissionsResponses, ListMissionsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/mission',\n ...options,\n });\n\n/**\n * Create a new mission\n *\n * Creates a mission with auto-generated UUID and context folder.\n */\nexport const createMission = <ThrowOnError extends boolean = false>(\n options: Options<CreateMissionData, ThrowOnError>\n) =>\n (options.client ?? client).post<CreateMissionResponses, CreateMissionErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/mission',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Delete mission\n *\n * Permanently deletes a mission and its metadata.\n */\nexport const deleteMission = <ThrowOnError extends boolean = false>(\n options: Options<DeleteMissionData, ThrowOnError>\n) =>\n (options.client ?? client).delete<DeleteMissionResponses, DeleteMissionErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/mission/{mission_id}',\n ...options,\n });\n\n/**\n * Get mission details\n *\n * Returns full mission details including status, progress, and linked sessions.\n */\nexport const getMission = <ThrowOnError extends boolean = false>(\n options: Options<GetMissionData, ThrowOnError>\n) =>\n (options.client ?? client).get<GetMissionResponses, GetMissionErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/mission/{mission_id}',\n ...options,\n });\n\n/**\n * Update mission\n *\n * Updates mission metadata. Only provided fields are updated.\n */\nexport const updateMission = <ThrowOnError extends boolean = false>(\n options: Options<UpdateMissionData, ThrowOnError>\n) =>\n (options.client ?? client).put<UpdateMissionResponses, UpdateMissionErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/mission/{mission_id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Add session to mission\n *\n * Associates a session with the mission.\n */\nexport const addSession = <ThrowOnError extends boolean = false>(\n options: Options<AddSessionData, ThrowOnError>\n) =>\n (options.client ?? client).post<AddSessionResponses, AddSessionErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/mission/{mission_id}/sessions',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Remove session from mission\n *\n * Removes the session association from the mission. The session itself is not deleted.\n */\nexport const removeSession = <ThrowOnError extends boolean = false>(\n options: Options<RemoveSessionData, ThrowOnError>\n) =>\n (options.client ?? client).delete<RemoveSessionResponses, RemoveSessionErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/mission/{mission_id}/sessions/{session_id}',\n ...options,\n });\n\n/**\n * Regenerate mission\n *\n * Archives old generated docs and triggers AgentCore regeneration with updated ticket info.\n */\nexport const regenerateMission = <ThrowOnError extends boolean = false>(\n options: Options<RegenerateMissionData, ThrowOnError>\n) =>\n (options.client ?? client).post<\n RegenerateMissionResponses,\n RegenerateMissionErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/mission/{mission_id}/regenerate',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Download mission pack as ZIP\n *\n * Download complete mission as ZIP file.\n *\n * Includes:\n * - All mission files (PHASES.md, TASKS.md, README.md, documents/)\n * - Mission metadata JSON\n * - Preserves folder structure\n * - Excludes archive/ folders\n */\nexport const downloadMissionPack = <ThrowOnError extends boolean = false>(\n options: Options<DownloadMissionPackData, ThrowOnError>\n) =>\n (options.client ?? client).get<\n DownloadMissionPackResponses,\n DownloadMissionPackErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/mission/{mission_id}/download',\n ...options,\n });\n\n/**\n * Query Knowledge Base\n *\n * DEPRECATED: Use POST /ocxp/context/discover instead.\n *\n * This endpoint will be removed in v2.0. Migrate to the new unified interface.\n *\n * Semantic search with optional project scoping and external docs fallback.\n *\n * @deprecated\n */\nexport const queryKnowledgeBase = <ThrowOnError extends boolean = false>(\n options: Options<QueryKnowledgeBaseData, ThrowOnError>\n) =>\n (options.client ?? client).post<\n QueryKnowledgeBaseResponses,\n QueryKnowledgeBaseErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/kb/query',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Rag Knowledge Base\n *\n * DEPRECATED: Use POST /ocxp/context/discover with include_answer=true instead.\n *\n * This endpoint will be removed in v2.0. Migrate to the new unified interface.\n *\n * RAG query with LLM response and citations.\n *\n * @deprecated\n */\nexport const ragKnowledgeBase = <ThrowOnError extends boolean = false>(\n options: Options<RagKnowledgeBaseData, ThrowOnError>\n) =>\n (options.client ?? client).post<RagKnowledgeBaseResponses, RagKnowledgeBaseErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/kb/rag',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * List memos\n *\n * List memos for the workspace with optional filters.\n */\nexport const listMemos = <ThrowOnError extends boolean = false>(\n options?: Options<ListMemosData, ThrowOnError>\n) =>\n (options?.client ?? client).get<ListMemosResponses, ListMemosErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/memo',\n ...options,\n });\n\n/**\n * Create memo\n *\n * Create a new memo (general or security finding).\n */\nexport const createMemo = <ThrowOnError extends boolean = false>(\n options: Options<CreateMemoData, ThrowOnError>\n) =>\n (options.client ?? client).post<CreateMemoResponses, CreateMemoErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/memo',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Delete memo\n *\n * Delete a memo permanently.\n */\nexport const deleteMemo = <ThrowOnError extends boolean = false>(\n options: Options<DeleteMemoData, ThrowOnError>\n) =>\n (options.client ?? client).delete<DeleteMemoResponses, DeleteMemoErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/memo/{memo_id}',\n ...options,\n });\n\n/**\n * Get memo by ID\n *\n * Get a specific memo by its ID.\n */\nexport const getMemo = <ThrowOnError extends boolean = false>(\n options: Options<GetMemoData, ThrowOnError>\n) =>\n (options.client ?? client).get<GetMemoResponses, GetMemoErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/memo/{memo_id}',\n ...options,\n });\n\n/**\n * Get memo for source\n *\n * Get memo for a specific source entity (repo, project, mission, doc).\n */\nexport const getMemoForSource = <ThrowOnError extends boolean = false>(\n options: Options<GetMemoForSourceData, ThrowOnError>\n) =>\n (options.client ?? client).get<GetMemoForSourceResponses, GetMemoForSourceErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/memo/source/{source_type}/{source_id}',\n ...options,\n });\n\n/**\n * Resolve memo\n *\n * Mark a memo as resolved. Sets TTL for auto-deletion.\n */\nexport const resolveMemo = <ThrowOnError extends boolean = false>(\n options: Options<ResolveMemoData, ThrowOnError>\n) =>\n (options.client ?? client).post<ResolveMemoResponses, ResolveMemoErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/memo/{memo_id}/resolve',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Acknowledge memo\n *\n * Mark a memo as acknowledged (developer has seen it).\n */\nexport const acknowledgeMemo = <ThrowOnError extends boolean = false>(\n options: Options<AcknowledgeMemoData, ThrowOnError>\n) =>\n (options.client ?? client).post<AcknowledgeMemoResponses, AcknowledgeMemoErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/memo/{memo_id}/acknowledge',\n ...options,\n });\n\n/**\n * Ignore memo\n *\n * Mark a memo as ignored (false positive or accepted risk).\n */\nexport const ignoreMemo = <ThrowOnError extends boolean = false>(\n options: Options<IgnoreMemoData, ThrowOnError>\n) =>\n (options.client ?? client).post<IgnoreMemoResponses, IgnoreMemoErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/memo/{memo_id}/ignore',\n ...options,\n });\n\n/**\n * Start repository download\n *\n * Initiates an async download of a Git repository. Returns a job ID for status tracking. If the repository already exists (deduplicated), returns immediately with status='linked'.\n */\nexport const downloadRepository = <ThrowOnError extends boolean = false>(\n options: Options<DownloadRepositoryData, ThrowOnError>\n) =>\n (options.client ?? client).post<\n DownloadRepositoryResponses,\n DownloadRepositoryErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/repo/download',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Get download status\n *\n * Returns the current status and progress of a repository download job.\n */\nexport const getRepoDownloadStatus = <ThrowOnError extends boolean = false>(\n options: Options<GetRepoDownloadStatusData, ThrowOnError>\n) =>\n (options.client ?? client).get<\n GetRepoDownloadStatusResponses,\n GetRepoDownloadStatusErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/repo/status/{job_id}',\n ...options,\n });\n\n/**\n * List downloaded repositories\n *\n * Returns all repositories that have been downloaded for the workspace.\n */\nexport const listDownloadedRepos = <ThrowOnError extends boolean = false>(\n options?: Options<ListDownloadedReposData, ThrowOnError>\n) =>\n (options?.client ?? client).get<\n ListDownloadedReposResponses,\n ListDownloadedReposErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/repo/list',\n ...options,\n });\n\n/**\n * Delete repository\n *\n * Permanently deletes a downloaded repository. Uses repo_id (owner/repo format).\n */\nexport const deleteRepo = <ThrowOnError extends boolean = false>(\n options: Options<DeleteRepoData, ThrowOnError>\n) =>\n (options.client ?? client).delete<DeleteRepoResponses, DeleteRepoErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/repo/{repo_id}',\n ...options,\n });\n\n/**\n * Github Check Access\n *\n * Check GitHub repository access.\n *\n * Uses the user's stored GitHub token for private repository access.\n * Public repositories are accessible without a token.\n */\nexport const githubCheckAccess = <ThrowOnError extends boolean = false>(\n options: Options<GithubCheckAccessData, ThrowOnError>\n) =>\n (options.client ?? client).post<\n GithubCheckAccessResponses,\n GithubCheckAccessErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/github/check-access',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Github List Branches\n *\n * List repository branches.\n *\n * Uses the user's stored GitHub token for private repository access.\n */\nexport const githubListBranches = <ThrowOnError extends boolean = false>(\n options: Options<GithubListBranchesData, ThrowOnError>\n) =>\n (options.client ?? client).post<\n GithubListBranchesResponses,\n GithubListBranchesErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/github/branches',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Github Get Contents\n *\n * Get repository contents.\n *\n * Uses the user's stored GitHub token for private repository access.\n */\nexport const githubGetContents = <ThrowOnError extends boolean = false>(\n options: Options<GithubGetContentsData, ThrowOnError>\n) =>\n (options.client ?? client).post<\n GithubGetContentsResponses,\n GithubGetContentsErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/github/contents',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * List all database configurations\n *\n * Returns all database configurations in the workspace.\n */\nexport const listDatabases = <ThrowOnError extends boolean = false>(\n options?: Options<ListDatabasesData, ThrowOnError>\n) =>\n (options?.client ?? client).get<ListDatabasesResponses, ListDatabasesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/database',\n ...options,\n });\n\n/**\n * Create a new database configuration\n *\n * Creates a database configuration with auto-generated UUID. Use postgres_lambda for Lambda-proxied connections.\n */\nexport const createDatabase = <ThrowOnError extends boolean = false>(\n options: Options<CreateDatabaseData, ThrowOnError>\n) =>\n (options.client ?? client).post<CreateDatabaseResponses, CreateDatabaseErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/database',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * List all database configurations (alias)\n *\n * Alias for GET /ocxp/database. Returns all databases in the workspace.\n */\nexport const listDatabasesAlias = <ThrowOnError extends boolean = false>(\n options?: Options<ListDatabasesAliasData, ThrowOnError>\n) =>\n (options?.client ?? client).get<\n ListDatabasesAliasResponses,\n ListDatabasesAliasErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/database/list',\n ...options,\n });\n\n/**\n * Delete database configuration\n *\n * Permanently deletes a database configuration.\n */\nexport const deleteDatabase = <ThrowOnError extends boolean = false>(\n options: Options<DeleteDatabaseData, ThrowOnError>\n) =>\n (options.client ?? client).delete<DeleteDatabaseResponses, DeleteDatabaseErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/database/{database_id}',\n ...options,\n });\n\n/**\n * Get database configuration details\n *\n * Returns full database configuration including connection settings and allowed tables.\n */\nexport const getDatabase = <ThrowOnError extends boolean = false>(\n options: Options<GetDatabaseData, ThrowOnError>\n) =>\n (options.client ?? client).get<GetDatabaseResponses, GetDatabaseErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/database/{database_id}',\n ...options,\n });\n\n/**\n * Update database configuration\n *\n * Updates database configuration. Only provided fields are updated.\n */\nexport const updateDatabase = <ThrowOnError extends boolean = false>(\n options: Options<UpdateDatabaseData, ThrowOnError>\n) =>\n (options.client ?? client).put<UpdateDatabaseResponses, UpdateDatabaseErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/database/{database_id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Test database connection\n *\n * Tests the database connection and returns status.\n */\nexport const testDatabaseConnection = <ThrowOnError extends boolean = false>(\n options: Options<TestDatabaseConnectionData, ThrowOnError>\n) =>\n (options.client ?? client).post<\n TestDatabaseConnectionResponses,\n TestDatabaseConnectionErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/database/{database_id}/test',\n ...options,\n });\n\n/**\n * Get database schema\n *\n * Returns database schema information including tables and their metadata.\n */\nexport const getSchema = <ThrowOnError extends boolean = false>(\n options?: Options<GetSchemaData, ThrowOnError>\n) =>\n (options?.client ?? client).get<GetSchemaResponses, GetSchemaErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/database/schema',\n ...options,\n });\n\n/**\n * Get sample data from table\n *\n * Returns sample rows from a specified table.\n */\nexport const getSample = <ThrowOnError extends boolean = false>(\n options: Options<GetSampleData, ThrowOnError>\n) =>\n (options.client ?? client).get<GetSampleResponses, GetSampleErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/database/sample/{table_name}',\n ...options,\n });\n\n/**\n * List available tables\n *\n * Returns list of tables available in the database. Supports caching.\n */\nexport const listTables = <ThrowOnError extends boolean = false>(\n options?: Options<ListTablesData, ThrowOnError>\n) =>\n (options?.client ?? client).get<ListTablesResponses, ListTablesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/database/tables',\n ...options,\n });\n\n/**\n * List configured databases\n *\n * Returns list of database configurations available in the workspace.\n */\nexport const listContextDatabases = <ThrowOnError extends boolean = false>(\n options?: Options<ListContextDatabasesData, ThrowOnError>\n) =>\n (options?.client ?? client).get<\n ListContextDatabasesResponses,\n ListContextDatabasesErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/database/databases',\n ...options,\n });\n\n/**\n * Get complete database overview\n *\n * Returns complete database structure with tables, columns, and foreign keys in a single call. Supports caching.\n */\nexport const getDatabaseOverview = <ThrowOnError extends boolean = false>(\n options?: Options<GetDatabaseOverviewData, ThrowOnError>\n) =>\n (options?.client ?? client).get<\n GetDatabaseOverviewResponses,\n GetDatabaseOverviewErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/database/overview',\n ...options,\n });\n\n/**\n * Get content types\n *\n * Returns all available content types (mission, context, repo, etc.) with optional item counts.\n */\nexport const getContentTypes = <ThrowOnError extends boolean = false>(\n options?: Options<GetContentTypesData, ThrowOnError>\n) =>\n (options?.client ?? client).get<GetContentTypesResponses, GetContentTypesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/types',\n ...options,\n });\n\n/**\n * List content\n *\n * Lists all content items of a specific type, optionally filtered by path.\n */\nexport const listContent = <ThrowOnError extends boolean = false>(\n options: Options<ListContentData, ThrowOnError>\n) =>\n (options.client ?? client).get<ListContentResponses, ListContentErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/{content_type}/list',\n ...options,\n });\n\n/**\n * Query content\n *\n * Advanced query with filters on name, path, size, etc. Supports eq, ne, contains, startsWith, gt, lt operators.\n */\nexport const queryContent = <ThrowOnError extends boolean = false>(\n options: Options<QueryContentData, ThrowOnError>\n) =>\n (options.client ?? client).post<QueryContentResponses, QueryContentErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/{content_type}/query',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Search content\n *\n * Full-text search in content names and paths. Case-insensitive.\n */\nexport const searchContent = <ThrowOnError extends boolean = false>(\n options: Options<SearchContentData, ThrowOnError>\n) =>\n (options.client ?? client).get<SearchContentResponses, SearchContentErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/{content_type}/search',\n ...options,\n });\n\n/**\n * Get content tree\n *\n * Returns hierarchical tree structure of content with configurable depth.\n */\nexport const getContentTree = <ThrowOnError extends boolean = false>(\n options: Options<GetContentTreeData, ThrowOnError>\n) =>\n (options.client ?? client).get<GetContentTreeResponses, GetContentTreeErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/{content_type}/tree',\n ...options,\n });\n\n/**\n * Get content statistics\n *\n * Returns file counts and sizes grouped by extension for a content path.\n */\nexport const getContentStats = <ThrowOnError extends boolean = false>(\n options: Options<GetContentStatsData, ThrowOnError>\n) =>\n (options.client ?? client).get<GetContentStatsResponses, GetContentStatsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/{content_type}/stats',\n ...options,\n });\n\n/**\n * List file versions\n *\n * Lists all versions of a file. S3 versioning must be enabled on the bucket.\n */\nexport const listVersions = <ThrowOnError extends boolean = false>(\n options: Options<ListVersionsData, ThrowOnError>\n) =>\n (options.client ?? client).get<ListVersionsResponses, ListVersionsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/{content_type}/{content_id}/versions',\n ...options,\n });\n\n/**\n * Delete content\n *\n * Deletes content. Use recursive=true with confirm=true to delete directories.\n */\nexport const deleteContent = <ThrowOnError extends boolean = false>(\n options: Options<DeleteContentData, ThrowOnError>\n) =>\n (options.client ?? client).delete<DeleteContentResponses, DeleteContentErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/{content_type}/{content_id}',\n ...options,\n });\n\n/**\n * Read content\n *\n * Reads content by type and path. Binary files are base64-encoded. Use versionId param to read a specific version.\n */\nexport const readContent = <ThrowOnError extends boolean = false>(\n options: Options<ReadContentData, ThrowOnError>\n) =>\n (options.client ?? client).get<ReadContentResponses, ReadContentErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/{content_type}/{content_id}',\n ...options,\n });\n\n/**\n * Write content\n *\n * Writes content to storage. Supports ETag for optimistic locking and ifNotExists for creation-only.\n */\nexport const writeContent = <ThrowOnError extends boolean = false>(\n options: Options<WriteContentData, ThrowOnError>\n) =>\n (options.client ?? client).post<WriteContentResponses, WriteContentErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/{content_type}/{content_id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Create folder\n *\n * Creates a folder with metadata.json for Bedrock KB indexing. The metadata.json serves as a folder marker (S3 doesn't have real folders) and provides KB-filterable attributes.\n */\nexport const createFolder = <ThrowOnError extends boolean = false>(\n options: Options<CreateFolderData, ThrowOnError>\n) =>\n (options.client ?? client).post<CreateFolderResponses, CreateFolderErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/{content_type}/folder/{folder_path}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Move content\n *\n * Moves content from source to destination path. Use overwrite=true to replace existing.\n */\nexport const moveContent = <ThrowOnError extends boolean = false>(\n options: Options<MoveContentData, ThrowOnError>\n) =>\n (options.client ?? client).post<MoveContentResponses, MoveContentErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/move',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Lock content\n *\n * Acquires an exclusive lock on content for the specified TTL (seconds). Stub endpoint for SDK compatibility.\n */\nexport const lockContent = <ThrowOnError extends boolean = false>(\n options: Options<LockContentData, ThrowOnError>\n) =>\n (options.client ?? client).post<LockContentResponses, LockContentErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/lock',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Unlock content\n *\n * Releases an exclusive lock on content. Stub endpoint for SDK compatibility.\n */\nexport const unlockContent = <ThrowOnError extends boolean = false>(\n options: Options<UnlockContentData, ThrowOnError>\n) =>\n (options.client ?? client).post<UnlockContentResponses, UnlockContentErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/ocxp/context/unlock',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Create a new mission\n *\n * Creates a mission with optional project association and goals list.\n */\nexport const toolCreateMission = <ThrowOnError extends boolean = false>(\n options: Options<ToolCreateMissionData, ThrowOnError>\n) =>\n (options.client ?? client).post<\n ToolCreateMissionResponses,\n ToolCreateMissionErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/tools/mission/create',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Update mission status\n *\n * Updates mission status, progress percentage, and/or notes.\n */\nexport const toolUpdateMission = <ThrowOnError extends boolean = false>(\n options: Options<ToolUpdateMissionData, ThrowOnError>\n) =>\n (options.client ?? client).post<\n ToolUpdateMissionResponses,\n ToolUpdateMissionErrors,\n ThrowOnError\n >({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/tools/mission/{mission_id}/update',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Get mission context\n *\n * Returns mission context data optimized for AI consumption.\n */\nexport const getMissionContext = <ThrowOnError extends boolean = false>(\n options: Options<GetMissionContextData, ThrowOnError>\n) =>\n (options.client ?? client).get<GetMissionContextResponses, GetMissionContextErrors, ThrowOnError>(\n {\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/tools/mission/{mission_id}/context',\n ...options,\n }\n );\n\n/**\n * Login For Access Token\n *\n * OAuth2 compatible login endpoint for Swagger UI.\n *\n * Authenticates with Cognito using username/password and returns JWT tokens.\n * Use this endpoint to get a token for testing other endpoints in Swagger.\n * Returns snake_case fields per OAuth2 spec for Swagger compatibility.\n */\nexport const loginForAccessToken = <ThrowOnError extends boolean = false>(\n options: Options<LoginForAccessTokenData, ThrowOnError>\n) =>\n (options.client ?? client).post<\n LoginForAccessTokenResponses,\n LoginForAccessTokenErrors,\n ThrowOnError\n >({\n ...urlSearchParamsBodySerializer,\n url: '/auth/token',\n ...options,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n ...options.headers,\n },\n });\n\n/**\n * Login\n *\n * JSON login endpoint for programmatic clients.\n *\n * Authenticates with Cognito using username/password and returns JWT tokens.\n * Use /auth/token for OAuth2 form-based login (Swagger UI).\n */\nexport const login = <ThrowOnError extends boolean = false>(\n options: Options<LoginData, ThrowOnError>\n) =>\n (options.client ?? client).post<LoginResponses, LoginErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/auth/login',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Refresh Tokens\n *\n * Refresh access token using refresh token.\n *\n * Returns new access and ID tokens. The refresh token remains valid\n * until it expires (configured in Cognito).\n */\nexport const refreshTokens = <ThrowOnError extends boolean = false>(\n options: Options<RefreshTokensData, ThrowOnError>\n) =>\n (options.client ?? client).post<RefreshTokensResponses, RefreshTokensErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/auth/refresh',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Get Auth Config\n *\n * Get Cognito configuration for frontend.\n */\nexport const getAuthConfig = <ThrowOnError extends boolean = false>(\n options?: Options<GetAuthConfigData, ThrowOnError>\n) =>\n (options?.client ?? client).get<GetAuthConfigResponses, unknown, ThrowOnError>({\n url: '/auth/config',\n ...options,\n });\n\n/**\n * Get Current User\n *\n * Get current authenticated user info.\n */\nexport const getCurrentUser = <ThrowOnError extends boolean = false>(\n options?: Options<GetCurrentUserData, ThrowOnError>\n) =>\n (options?.client ?? client).get<GetCurrentUserResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/auth/me',\n ...options,\n });\n\n/**\n * List Workspaces\n *\n * List workspaces for authenticated user.\n */\nexport const listWorkspaces = <ThrowOnError extends boolean = false>(\n options?: Options<ListWorkspacesData, ThrowOnError>\n) =>\n (options?.client ?? client).get<ListWorkspacesResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/auth/workspaces',\n ...options,\n });\n\n/**\n * Delete Github Token\n *\n * Remove user's stored GitHub token.\n *\n * Deletes the GitHub token from DynamoDB. The user will need to\n * reconfigure their token for future GitHub operations.\n */\nexport const deleteGithubToken = <ThrowOnError extends boolean = false>(\n options?: Options<DeleteGithubTokenData, ThrowOnError>\n) =>\n (options?.client ?? client).delete<DeleteGithubTokenResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/auth/github-token',\n ...options,\n });\n\n/**\n * Get Github Token Status\n *\n * Check if user has a GitHub token configured.\n *\n * Returns whether a token is stored and the associated GitHub username,\n * but never returns the actual token value.\n */\nexport const getGithubTokenStatus = <ThrowOnError extends boolean = false>(\n options?: Options<GetGithubTokenStatusData, ThrowOnError>\n) =>\n (options?.client ?? client).get<GetGithubTokenStatusResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/auth/github-token',\n ...options,\n });\n\n/**\n * Set Github Token\n *\n * Save user's GitHub token for server-side repository operations.\n *\n * The token is stored securely in DynamoDB linked to the user's Cognito identity.\n * This enables GitHub operations without transmitting the token on every request.\n */\nexport const setGithubToken = <ThrowOnError extends boolean = false>(\n options: Options<SetGithubTokenData, ThrowOnError>\n) =>\n (options.client ?? client).put<SetGithubTokenResponses, SetGithubTokenErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/auth/github-token',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers,\n },\n });\n\n/**\n * Health Check\n */\nexport const healthCheck2 = <ThrowOnError extends boolean = false>(\n options?: Options<HealthCheck2Data, ThrowOnError>\n) =>\n (options?.client ?? client).get<HealthCheck2Responses, unknown, ThrowOnError>({\n url: '/health',\n ...options,\n });\n","/**\n * OCXPClient - Custom wrapper for the generated OCXP SDK\n * Provides workspace injection and auth token management\n */\n\nimport { createClient, createConfig, type Client, type ClientOptions } from './generated/client';\nimport * as sdk from './generated/sdk.gen';\nimport type {\n WriteRequest,\n QueryFilter,\n KbQueryRequest,\n MissionCreate,\n MissionResponse,\n MissionListResponse,\n RegenerateMissionResponse,\n ProjectListResponse,\n ProjectResponse,\n ProjectCreate,\n ProjectUpdate,\n AddRepoRequest,\n AddMissionRequest,\n SetDefaultRepoRequest,\n SessionListResponse,\n SessionResponse,\n SessionMessagesResponse,\n SessionMetadataUpdate,\n SessionForkResponse,\n ForkRequest,\n RepoDownloadResponse,\n RepoStatusResponse,\n RepoListResponse,\n RepoDeleteResponse,\n AuthConfig,\n UserResponse,\n WorkspacesResponse,\n LinkedRepoResponse,\n TokenResponse,\n RefreshResponse,\n ContentTreeResponse,\n // Database types\n DatabaseCreate,\n DatabaseUpdate,\n DatabaseConfigResponse,\n DatabaseListResponse,\n DatabaseSchemaResponse,\n DatabaseSampleResponse,\n} from './generated/types.gen';\n\n// Clean return types for SDK methods\nexport interface ListEntry {\n name: string;\n type: string;\n path: string;\n size?: number;\n mtime?: string;\n}\n\nexport interface ListResult {\n entries: ListEntry[];\n cursor?: string | null;\n hasMore: boolean;\n total: number;\n}\n\nexport interface ReadResult {\n content: string;\n size?: number;\n mtime?: string;\n encoding?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface WriteResult {\n path: string;\n etag?: string;\n}\n\nexport interface DeleteResult {\n deleted: boolean;\n path: string;\n}\n\nexport interface ContentTypesResult {\n types: Array<{ name: string; description: string }>;\n total: number;\n}\n\n// Type for SDK response wrapper\ntype SdkResponse<T> = { data: T; error: undefined } | { data: undefined; error: unknown };\n\n// Helper to extract data from SDK response\nfunction extractData<T>(response: SdkResponse<T>): T {\n if (response.error) {\n throw new Error(\n typeof response.error === 'object' && response.error !== null\n ? (response.error as { message?: string }).message || JSON.stringify(response.error)\n : String(response.error)\n );\n }\n return response.data as T;\n}\n\nexport interface OCXPClientOptions {\n /** Base URL of the OCXP server */\n endpoint: string;\n /** Default workspace for all operations */\n workspace?: string;\n /** Static token or async function to get token */\n token?: string | (() => Promise<string>);\n}\n\nexport type ContentTypeValue = 'mission' | 'project' | 'context' | 'sop' | 'repo' | 'artifact' | 'kb' | 'docs';\n\n/**\n * OCXPClient provides a high-level interface to the OCXP API\n */\nexport class OCXPClient {\n private client: Client;\n private workspace: string;\n private tokenProvider?: string | (() => Promise<string>);\n\n constructor(options: OCXPClientOptions) {\n this.workspace = options.workspace || 'dev';\n this.tokenProvider = options.token;\n\n const config = createConfig<ClientOptions>({\n baseUrl: options.endpoint.replace(/\\/$/, ''),\n throwOnError: true,\n });\n\n this.client = createClient(config);\n }\n\n /**\n * Get headers including workspace and auth\n */\n private async getHeaders(): Promise<Record<string, string>> {\n const headers: Record<string, string> = {\n 'X-Workspace': this.workspace,\n };\n\n if (this.tokenProvider) {\n const token =\n typeof this.tokenProvider === 'function' ? await this.tokenProvider() : this.tokenProvider;\n\n if (token) {\n headers['Authorization'] = `Bearer ${token}`;\n }\n }\n\n return headers;\n }\n\n /**\n * Set the workspace for subsequent operations\n */\n setWorkspace(workspace: string): void {\n this.workspace = workspace;\n }\n\n /**\n * Get current workspace\n */\n getWorkspace(): string {\n return this.workspace;\n }\n\n /**\n * Get the underlying client for SDK function calls\n */\n getClient(): Client {\n return this.client;\n }\n\n /**\n * Set the auth token or token provider\n */\n setToken(token: string | (() => Promise<string>)): void {\n this.tokenProvider = token;\n }\n\n // ============== Content Types ==============\n\n /**\n * Get available content types with metadata\n */\n async getContentTypes(counts = false): Promise<ContentTypesResult> {\n const headers = await this.getHeaders();\n const response = await sdk.getContentTypes({\n client: this.client,\n query: { counts },\n headers,\n });\n const data = extractData(response) as { types: Array<{ name: string; description: string }>; total: number };\n return {\n types: data.types || [],\n total: data.total || 0,\n };\n }\n\n // ============== CRUD Operations ==============\n\n /**\n * List content of a specific type\n */\n async list(type: ContentTypeValue, path?: string, limit?: number): Promise<ListResult> {\n const headers = await this.getHeaders();\n const response = await sdk.listContent({\n client: this.client,\n path: { content_type: type },\n query: { path, limit },\n headers,\n });\n const data = extractData(response) as { entries: ListEntry[]; cursor?: string; has_more?: boolean; total: number };\n return {\n entries: data.entries || [],\n cursor: data.cursor,\n hasMore: data.has_more || false,\n total: data.total || 0,\n };\n }\n\n /**\n * Read content by ID\n */\n async read(type: ContentTypeValue, id: string): Promise<ReadResult> {\n const headers = await this.getHeaders();\n const response = await sdk.readContent({\n client: this.client,\n path: { content_type: type, content_id: id },\n headers,\n });\n const data = extractData(response) as { content: string; size?: number; mtime?: string; encoding?: string; metadata?: Record<string, unknown> };\n return {\n content: data.content || '',\n size: data.size,\n mtime: data.mtime,\n encoding: data.encoding,\n metadata: data.metadata,\n };\n }\n\n /**\n * Write content\n */\n async write(\n type: ContentTypeValue,\n id: string,\n content: string,\n options?: {\n encoding?: string;\n etag?: string;\n ifNotExists?: boolean;\n }\n ): Promise<WriteResult> {\n const headers = await this.getHeaders();\n const body: WriteRequest = {\n content,\n encoding: options?.encoding || 'utf-8',\n etag: options?.etag,\n ifNotExists: options?.ifNotExists,\n };\n\n const response = await sdk.writeContent({\n client: this.client,\n path: { content_type: type, content_id: id },\n body,\n headers,\n });\n const data = extractData(response) as { path: string; etag?: string };\n return {\n path: data.path || `${type}/${id}`,\n etag: data.etag,\n };\n }\n\n /**\n * Delete content\n */\n async delete(\n type: ContentTypeValue,\n id: string,\n recursive = false,\n confirm = false\n ): Promise<DeleteResult> {\n const headers = await this.getHeaders();\n const response = await sdk.deleteContent({\n client: this.client,\n path: { content_type: type, content_id: id },\n query: { recursive, confirm },\n headers,\n });\n const data = extractData(response) as { path: string; deleted: boolean };\n return {\n deleted: data.deleted ?? true,\n path: data.path || `${type}/${id}`,\n };\n }\n\n // ============== Query & Search ==============\n\n /**\n * Query content with filters\n */\n async query(type: ContentTypeValue, filters?: QueryFilter[], limit?: number) {\n const headers = await this.getHeaders();\n return sdk.queryContent({\n client: this.client,\n path: { content_type: type },\n body: { filters: filters || [], limit: limit || 100 },\n headers,\n });\n }\n\n /**\n * Full-text search\n */\n async search(type: ContentTypeValue, q: string, limit?: number) {\n const headers = await this.getHeaders();\n return sdk.searchContent({\n client: this.client,\n path: { content_type: type },\n query: { q, limit },\n headers,\n });\n }\n\n // ============== Tree & Stats ==============\n\n /**\n * Get hierarchical tree structure from S3 context\n * @param includeVersions - If true, includes S3 version IDs for files\n */\n async tree(type: ContentTypeValue, path?: string, depth?: number, includeVersions?: boolean): Promise<ContentTreeResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.getContentTree({\n client: this.client,\n path: { content_type: type },\n query: { path, depth, includeVersions },\n headers,\n });\n return extractData(response) as ContentTreeResponse;\n }\n\n /**\n * Get content statistics\n */\n async stats(type: ContentTypeValue, path?: string) {\n const headers = await this.getHeaders();\n return sdk.getContentStats({\n client: this.client,\n path: { content_type: type },\n query: { path },\n headers,\n });\n }\n\n // ============== Bulk Operations ==============\n\n /**\n * Read multiple items at once\n */\n async bulkRead(type: ContentTypeValue, ids: string[]) {\n const headers = await this.getHeaders();\n return sdk.bulkReadContent({\n client: this.client,\n path: { content_type: type },\n body: { ids },\n headers,\n });\n }\n\n /**\n * Write multiple items at once\n */\n async bulkWrite(type: ContentTypeValue, items: Array<{ id: string; content: string }>) {\n const headers = await this.getHeaders();\n return sdk.bulkWriteContent({\n client: this.client,\n path: { content_type: type },\n body: { items },\n headers,\n });\n }\n\n /**\n * Delete multiple items at once\n */\n async bulkDelete(type: ContentTypeValue, ids: string[]) {\n const headers = await this.getHeaders();\n return sdk.bulkDeleteContent({\n client: this.client,\n path: { content_type: type },\n body: { ids },\n headers,\n });\n }\n\n // ============== Knowledge Base ==============\n\n /**\n * Semantic search in Knowledge Base with optional external docs fallback\n */\n async kbQuery(\n query: string,\n options?: {\n searchType?: 'SEMANTIC' | 'HYBRID';\n maxResults?: number;\n docId?: string;\n repoIds?: string[];\n projectId?: string;\n missionId?: string;\n /** Enable external docs fallback (Context7, AWS Docs) when KB has no/low results. Default: true */\n enableFallback?: boolean;\n /** Score threshold (0-1) below which fallback triggers. Default: 0.5 */\n fallbackThreshold?: number;\n /** Save external docs to S3 for future KB queries. Default: true */\n persistExternalDocs?: boolean;\n }\n ) {\n const headers = await this.getHeaders();\n const body: KbQueryRequest = {\n query,\n search_type: options?.searchType || 'SEMANTIC',\n max_results: options?.maxResults || 5,\n doc_id: options?.docId,\n repo_ids: options?.repoIds,\n project_id: options?.projectId,\n mission_id: options?.missionId,\n enable_fallback: options?.enableFallback ?? true,\n fallback_threshold: options?.fallbackThreshold ?? 0.5,\n persist_external_docs: options?.persistExternalDocs ?? true,\n };\n\n const response = await sdk.queryKnowledgeBase({\n client: this.client,\n body,\n headers,\n });\n return extractData(response);\n }\n\n /**\n * RAG with citations\n */\n async kbRag(query: string, sessionId?: string) {\n const headers = await this.getHeaders();\n const response = await sdk.ragKnowledgeBase({\n client: this.client,\n body: { query, session_id: sessionId },\n headers,\n });\n return extractData(response);\n }\n\n // ============== Mission Operations ==============\n\n /**\n * List all missions in workspace\n */\n async listMissions(options?: { projectId?: string; status?: string; limit?: number }): Promise<MissionListResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.listMissions({\n client: this.client,\n query: {\n project_id: options?.projectId,\n status: options?.status,\n limit: options?.limit,\n },\n headers,\n });\n return extractData(response) as MissionListResponse;\n }\n\n /**\n * Create a new mission with auto-generated UUID\n */\n async createMission(title: string, description?: string, projectId?: string, goals?: string[]): Promise<MissionResponse> {\n const headers = await this.getHeaders();\n const body: MissionCreate = {\n title,\n description,\n project_id: projectId,\n goals,\n };\n\n const response = await sdk.createMission({\n client: this.client,\n body,\n headers,\n });\n return extractData(response) as MissionResponse;\n }\n\n /**\n * Get mission by ID\n */\n async getMission(missionId: string): Promise<MissionResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.getMission({\n client: this.client,\n path: { mission_id: missionId },\n headers,\n });\n return extractData(response) as MissionResponse;\n }\n\n /**\n * Update mission\n */\n async updateMission(missionId: string, updates: { title?: string; description?: string; status?: string; progress?: number; notes?: string }): Promise<MissionResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.updateMission({\n client: this.client,\n path: { mission_id: missionId },\n body: updates,\n headers,\n });\n return extractData(response) as MissionResponse;\n }\n\n /**\n * Delete mission\n */\n async deleteMission(missionId: string): Promise<void> {\n const headers = await this.getHeaders();\n await sdk.deleteMission({\n client: this.client,\n path: { mission_id: missionId },\n headers,\n });\n }\n\n /**\n * Add session to mission\n */\n async addMissionSession(missionId: string, sessionId: string): Promise<MissionResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.addSession({\n client: this.client,\n path: { mission_id: missionId },\n body: { session_id: sessionId },\n headers,\n });\n return extractData(response) as MissionResponse;\n }\n\n /**\n * Remove session from mission\n */\n async removeMissionSession(missionId: string, sessionId: string): Promise<MissionResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.removeSession({\n client: this.client,\n path: { mission_id: missionId, session_id: sessionId },\n headers,\n });\n return extractData(response) as MissionResponse;\n }\n\n /**\n * Regenerate mission - archives old docs and triggers AgentCore\n */\n async regenerateMission(\n missionId: string,\n options?: {\n ticket_id?: string;\n ticket_summary?: string;\n ticket_description?: string;\n archive_old_docs?: boolean;\n auto_increment_version?: boolean;\n }\n ): Promise<RegenerateMissionResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.regenerateMission({\n client: this.client,\n path: { mission_id: missionId },\n body: {\n ticket_id: options?.ticket_id,\n ticket_summary: options?.ticket_summary,\n ticket_description: options?.ticket_description,\n archive_old_docs: options?.archive_old_docs ?? true,\n auto_increment_version: options?.auto_increment_version ?? true,\n },\n headers,\n });\n return extractData(response) as RegenerateMissionResponse;\n }\n\n /**\n * Download mission pack as ZIP file\n * @param missionId - Mission ID\n * @returns Blob containing ZIP file\n */\n async downloadMissionPack(missionId: string): Promise<Blob> {\n const headers = await this.getHeaders();\n const config = this.client.getConfig();\n const baseUrl = config.baseUrl || '';\n\n // Use fetch directly for blob response\n const response = await fetch(`${baseUrl}/ocxp/mission/${missionId}/download`, {\n method: 'GET',\n headers: {\n ...headers,\n 'X-Workspace': this.workspace,\n },\n });\n\n if (!response.ok) {\n throw new Error(`Failed to download mission: ${response.status} ${response.statusText}`);\n }\n\n return await response.blob();\n }\n\n // ============== Tools ==============\n\n /**\n * Get mission context for agents\n */\n async getMissionContext(missionId: string) {\n const headers = await this.getHeaders();\n return sdk.getMissionContext({\n client: this.client,\n path: { mission_id: missionId },\n headers,\n });\n }\n\n // ============== Locking ==============\n\n /**\n * Acquire exclusive lock on content\n * @param contentType - Content type (e.g., \"mission\")\n * @param contentId - Content ID (e.g., \"my-mission\")\n * @param ttl - Lock time-to-live in seconds\n */\n async lock(contentType: string, contentId: string, ttl?: number) {\n const headers = await this.getHeaders();\n return sdk.lockContent({\n client: this.client,\n body: {\n content_type: contentType,\n content_id: contentId,\n ttl,\n },\n headers,\n });\n }\n\n /**\n * Release exclusive lock\n * @param contentType - Content type\n * @param contentId - Content ID\n */\n async unlock(contentType: string, contentId: string) {\n const headers = await this.getHeaders();\n return sdk.unlockContent({\n client: this.client,\n body: {\n content_type: contentType,\n content_id: contentId,\n },\n headers,\n });\n }\n\n /**\n * Move/rename content\n * @param source - Source path (e.g., \"mission/old-id\")\n * @param destination - Destination path (e.g., \"mission/new-id\")\n * @param overwrite - Whether to overwrite existing content at destination\n */\n async move(source: string, destination: string, overwrite = false) {\n const headers = await this.getHeaders();\n const response = await sdk.moveContent({\n client: this.client,\n body: { source, destination, overwrite },\n headers,\n });\n return extractData(response);\n }\n\n // ============== GitHub API Proxy ==============\n\n /**\n * Check if a repository is accessible\n * @param repoUrl - Full GitHub repository URL\n */\n async githubCheckAccess(repoUrl: string) {\n const headers = await this.getHeaders();\n const response = await sdk.githubCheckAccess({\n client: this.client,\n body: { repo_url: repoUrl },\n headers,\n });\n return extractData(response);\n }\n\n /**\n * List branches for a repository\n * @param repoUrl - Full GitHub repository URL\n */\n async githubListBranches(repoUrl: string) {\n const headers = await this.getHeaders();\n const response = await sdk.githubListBranches({\n client: this.client,\n body: { repo_url: repoUrl },\n headers,\n });\n return extractData(response);\n }\n\n /**\n * Get repository contents at a path\n * @param repoUrl - Full GitHub repository URL\n * @param path - Path within the repository\n * @param ref - Git ref (branch, tag, or commit)\n */\n async githubGetContents(repoUrl: string, path = '', ref?: string) {\n const headers = await this.getHeaders();\n const response = await sdk.githubGetContents({\n client: this.client,\n body: { repo_url: repoUrl, path, ref },\n headers,\n });\n return extractData(response);\n }\n\n // ============== Repository Management ==============\n\n /**\n * Download repository and trigger vectorization\n * @param repoUrl - Full GitHub repository URL\n * @param branch - Optional branch (default: main)\n * @param options - Download options (mode, repo_type, path)\n */\n async downloadRepository(\n repoUrl: string,\n branch?: string,\n options?: {\n mode?: string;\n repo_type?: 'code' | 'docs' | 'auto';\n path?: string;\n }\n ): Promise<RepoDownloadResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.downloadRepository({\n client: this.client,\n body: {\n repo_url: repoUrl,\n branch,\n mode: options?.mode,\n repo_type: options?.repo_type,\n path: options?.path,\n },\n headers,\n });\n return extractData(response) as RepoDownloadResponse;\n }\n\n /**\n * Get repository download status\n */\n async getRepoStatus(jobId: string): Promise<RepoStatusResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.getRepoDownloadStatus({\n client: this.client,\n path: { job_id: jobId },\n headers,\n });\n return extractData(response) as RepoStatusResponse;\n }\n\n /**\n * List all downloaded repositories in workspace\n */\n async listRepos(): Promise<RepoListResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.listDownloadedRepos({\n client: this.client,\n headers,\n });\n return extractData(response) as RepoListResponse;\n }\n\n /**\n * Delete a downloaded repository by its UUID\n */\n async deleteRepo(repoId: string): Promise<RepoDeleteResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.deleteRepo({\n client: this.client,\n path: { repo_id: repoId },\n headers,\n });\n return extractData(response) as RepoDeleteResponse;\n }\n\n // ============== Database Operations ==============\n\n /**\n * List all database configurations in workspace\n */\n async listDatabases(): Promise<DatabaseListResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.listDatabases({\n client: this.client,\n headers,\n });\n return extractData(response) as DatabaseListResponse;\n }\n\n /**\n * Create a new database configuration\n */\n async createDatabase(config: DatabaseCreate): Promise<DatabaseConfigResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.createDatabase({\n client: this.client,\n body: config,\n headers,\n });\n return extractData(response) as DatabaseConfigResponse;\n }\n\n /**\n * Get database configuration by ID\n */\n async getDatabase(databaseId: string): Promise<DatabaseConfigResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.getDatabase({\n client: this.client,\n path: { database_id: databaseId },\n headers,\n });\n return extractData(response) as DatabaseConfigResponse;\n }\n\n /**\n * Update database configuration\n */\n async updateDatabase(databaseId: string, updates: DatabaseUpdate): Promise<DatabaseConfigResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.updateDatabase({\n client: this.client,\n path: { database_id: databaseId },\n body: updates,\n headers,\n });\n return extractData(response) as DatabaseConfigResponse;\n }\n\n /**\n * Delete database configuration\n */\n async deleteDatabase(databaseId: string): Promise<void> {\n const headers = await this.getHeaders();\n await sdk.deleteDatabase({\n client: this.client,\n path: { database_id: databaseId },\n headers,\n });\n }\n\n /**\n * Test database connection\n */\n async testDatabaseConnection(databaseId: string): Promise<{ success: boolean; message: string; latency_ms?: number }> {\n const headers = await this.getHeaders();\n const response = await sdk.testDatabaseConnection({\n client: this.client,\n path: { database_id: databaseId },\n headers,\n });\n return extractData(response) as { success: boolean; message: string; latency_ms?: number };\n }\n\n /**\n * Get database schema (tables and columns)\n */\n async getDatabaseSchema(databaseId?: string): Promise<DatabaseSchemaResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.getSchema({\n client: this.client,\n query: { database_id: databaseId },\n headers,\n });\n return extractData(response) as DatabaseSchemaResponse;\n }\n\n /**\n * Get sample data from a table\n */\n async getDatabaseSample(tableName: string, databaseId?: string, limit?: number): Promise<DatabaseSampleResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.getSample({\n client: this.client,\n path: { table_name: tableName },\n query: { database_id: databaseId, limit },\n headers,\n });\n return extractData(response) as DatabaseSampleResponse;\n }\n\n /**\n * List all tables in database\n */\n async listDatabaseTables(databaseId?: string): Promise<{ tables: string[] }> {\n const headers = await this.getHeaders();\n const response = await sdk.listTables({\n client: this.client,\n query: { database_id: databaseId },\n headers,\n });\n return extractData(response) as { tables: string[] };\n }\n\n // ============== Project Operations ==============\n\n /**\n * List all projects in workspace\n */\n async listProjects(limit?: number): Promise<ProjectListResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.listProjects({\n client: this.client,\n query: { limit },\n headers,\n });\n return extractData(response) as ProjectListResponse;\n }\n\n /**\n * Create a new project with auto-generated UUID\n */\n async createProject(name: string, description?: string): Promise<ProjectResponse> {\n const headers = await this.getHeaders();\n const body: ProjectCreate = {\n name,\n description,\n };\n const response = await sdk.createProject({\n client: this.client,\n body,\n headers,\n });\n return extractData(response) as ProjectResponse;\n }\n\n /**\n * Get project by ID\n */\n async getProject(projectId: string): Promise<ProjectResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.getProject({\n client: this.client,\n path: { project_id: projectId },\n headers,\n });\n return extractData(response) as ProjectResponse;\n }\n\n /**\n * Update project\n */\n async updateProject(projectId: string, updates: ProjectUpdate): Promise<ProjectResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.updateProject({\n client: this.client,\n path: { project_id: projectId },\n body: updates,\n headers,\n });\n return extractData(response) as ProjectResponse;\n }\n\n /**\n * Delete project\n */\n async deleteProject(projectId: string): Promise<void> {\n const headers = await this.getHeaders();\n await sdk.deleteProject({\n client: this.client,\n path: { project_id: projectId },\n headers,\n });\n }\n\n /**\n * Add repository to project\n */\n async addProjectRepo(\n projectId: string,\n repoId: string,\n options?: { category?: string; priority?: number; autoInclude?: boolean; branch?: string }\n ): Promise<ProjectResponse> {\n const headers = await this.getHeaders();\n const body: AddRepoRequest = {\n repo_id: repoId,\n category: options?.category,\n priority: options?.priority,\n auto_include: options?.autoInclude,\n branch: options?.branch,\n };\n const response = await sdk.addLinkedRepo({\n client: this.client,\n path: { project_id: projectId },\n body,\n headers,\n });\n return extractData(response) as ProjectResponse;\n }\n\n /**\n * Remove repository from project\n */\n async removeProjectRepo(projectId: string, repoId: string): Promise<ProjectResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.removeLinkedRepo({\n client: this.client,\n path: { project_id: projectId, repo_id: repoId },\n headers,\n });\n return extractData(response) as ProjectResponse;\n }\n\n /**\n * Set default repository for project\n */\n async setDefaultRepo(projectId: string, repoId: string | null): Promise<ProjectResponse> {\n const headers = await this.getHeaders();\n const body: SetDefaultRepoRequest = { repo_id: repoId };\n const response = await sdk.setDefaultRepo({\n client: this.client,\n path: { project_id: projectId },\n body,\n headers,\n });\n return extractData(response) as ProjectResponse;\n }\n\n /**\n * Get context repositories for project (auto-include enabled)\n */\n async getContextRepos(projectId: string): Promise<LinkedRepoResponse[]> {\n const headers = await this.getHeaders();\n const response = await sdk.getContextRepos({\n client: this.client,\n path: { project_id: projectId },\n headers,\n });\n const data = extractData(response) as { repos?: LinkedRepoResponse[] };\n return data.repos || [];\n }\n\n /**\n * Add mission to project\n */\n async addProjectMission(projectId: string, missionId: string): Promise<ProjectResponse> {\n const headers = await this.getHeaders();\n const body: AddMissionRequest = { mission_id: missionId };\n const response = await sdk.addMission({\n client: this.client,\n path: { project_id: projectId },\n body,\n headers,\n });\n return extractData(response) as ProjectResponse;\n }\n\n /**\n * Remove mission from project\n */\n async removeProjectMission(projectId: string, missionId: string): Promise<ProjectResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.removeMission({\n client: this.client,\n path: { project_id: projectId, mission_id: missionId },\n headers,\n });\n return extractData(response) as ProjectResponse;\n }\n\n // ============== Session Operations ==============\n\n /**\n * List all sessions in workspace\n */\n async listSessions(limit?: number, status?: string): Promise<SessionListResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.listSessions({\n client: this.client,\n query: { limit, status },\n headers,\n });\n return extractData(response) as SessionListResponse;\n }\n\n /**\n * Get session messages\n */\n async getSessionMessages(sessionId: string, limit?: number): Promise<SessionMessagesResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.getSessionMessages({\n client: this.client,\n path: { session_id: sessionId },\n query: { limit },\n headers,\n });\n return extractData(response) as SessionMessagesResponse;\n }\n\n /**\n * Update session metadata\n */\n async updateSessionMetadata(sessionId: string, updates: SessionMetadataUpdate): Promise<SessionResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.updateSessionMetadata({\n client: this.client,\n path: { session_id: sessionId },\n body: updates,\n headers,\n });\n return extractData(response) as SessionResponse;\n }\n\n /**\n * Fork session\n */\n async forkSession(sessionId: string, missionId: string, forkPoint?: number): Promise<SessionForkResponse> {\n const headers = await this.getHeaders();\n const body: ForkRequest = { mission_id: missionId, fork_point: forkPoint };\n const response = await sdk.forkSession({\n client: this.client,\n path: { session_id: sessionId },\n body,\n headers,\n });\n return extractData(response) as SessionForkResponse;\n }\n\n /**\n * Archive session\n */\n async archiveSession(sessionId: string): Promise<void> {\n const headers = await this.getHeaders();\n await sdk.archiveSession({\n client: this.client,\n path: { session_id: sessionId },\n headers,\n });\n }\n\n // ============== Auth Operations ==============\n\n /**\n * Get auth configuration (public endpoint)\n */\n async getAuthConfig(): Promise<AuthConfig> {\n const response = await sdk.getAuthConfig({\n client: this.client,\n });\n return extractData(response) as AuthConfig;\n }\n\n /**\n * Get current authenticated user\n */\n async getCurrentUser(): Promise<UserResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.getCurrentUser({\n client: this.client,\n headers,\n });\n return extractData(response) as UserResponse;\n }\n\n /**\n * List workspaces for authenticated user\n */\n async listWorkspaces(): Promise<WorkspacesResponse> {\n const headers = await this.getHeaders();\n const response = await sdk.listWorkspaces({\n client: this.client,\n headers,\n });\n return extractData(response) as WorkspacesResponse;\n }\n\n /**\n * Login with username and password (JSON endpoint for programmatic clients)\n * @param username - Cognito username\n * @param password - User password\n * @returns Token response with access_token, refresh_token, and expires_in\n */\n async login(username: string, password: string): Promise<TokenResponse> {\n const response = await sdk.login({\n client: this.client,\n body: { username, password },\n });\n return extractData(response) as TokenResponse;\n }\n\n /**\n * Refresh access token using refresh token\n * @param refreshToken - The refresh token from login\n * @returns New access token (refresh token remains the same)\n */\n async refreshToken(refreshToken: string): Promise<RefreshResponse> {\n const response = await sdk.refreshTokens({\n client: this.client,\n body: { refreshToken },\n });\n return extractData(response) as RefreshResponse;\n }\n\n /**\n * Set GitHub token for the authenticated user\n * Stores the token server-side linked to the Cognito identity\n * @param token - GitHub Personal Access Token\n * @returns Success response\n */\n async setGitHubToken(token: string): Promise<{ success: boolean }> {\n const headers = await this.getHeaders();\n const response = await this.client.request<{ success: boolean } | true, unknown>({\n method: 'PUT',\n url: '/auth/github-token',\n headers,\n body: { github_token: token },\n });\n if (response.error) {\n throw new Error(`Failed to set GitHub token: ${typeof response.error === 'object' ? JSON.stringify(response.error) : response.error}`);\n }\n // Handle case where response.data might be true (boolean) or object\n if (response.data === true) {\n return { success: true };\n }\n return response.data || { success: true };\n }\n\n /**\n * Get GitHub token status for the authenticated user\n * @returns Token status (configured or not)\n */\n async getGitHubTokenStatus(): Promise<{ configured: boolean; username?: string }> {\n const headers = await this.getHeaders();\n const response = await this.client.request<{ configured: boolean; username?: string }, unknown>({\n method: 'GET',\n url: '/auth/github-token',\n headers,\n });\n if (response.error) {\n throw new Error(`Failed to get GitHub token status: ${typeof response.error === 'object' ? JSON.stringify(response.error) : response.error}`);\n }\n const data = response.data;\n if (data && typeof data === 'object' && 'configured' in data) {\n return data as { configured: boolean; username?: string };\n }\n return { configured: false };\n }\n\n /**\n * Delete GitHub token for the authenticated user\n * @returns Success response\n */\n async deleteGitHubToken(): Promise<{ success: boolean }> {\n const headers = await this.getHeaders();\n const response = await this.client.request<{ success: boolean } | true, unknown>({\n method: 'DELETE',\n url: '/auth/github-token',\n headers,\n });\n if (response.error) {\n throw new Error(`Failed to delete GitHub token: ${typeof response.error === 'object' ? JSON.stringify(response.error) : response.error}`);\n }\n // Handle case where response.data might be true (boolean) or object\n if (response.data === true) {\n return { success: true };\n }\n return response.data || { success: true };\n }\n\n // ============== Namespaced Accessors ==============\n\n private _mission?: MissionNamespace;\n private _project?: ProjectNamespace;\n private _session?: SessionNamespace;\n private _kb?: KBNamespace;\n\n /**\n * Mission namespace for convenient mission operations\n * @example ocxp.mission.list({ status: 'pending' })\n */\n get mission(): MissionNamespace {\n if (!this._mission) {\n this._mission = new MissionNamespace(this);\n }\n return this._mission;\n }\n\n /**\n * Project namespace for convenient project operations\n * @example ocxp.project.list()\n */\n get project(): ProjectNamespace {\n if (!this._project) {\n this._project = new ProjectNamespace(this);\n }\n return this._project;\n }\n\n /**\n * Session namespace for convenient session operations\n * @example ocxp.session.list({ status: 'active' })\n */\n get session(): SessionNamespace {\n if (!this._session) {\n this._session = new SessionNamespace(this);\n }\n return this._session;\n }\n\n /**\n * KB namespace for convenient knowledge base operations\n * @example ocxp.kb.query('search term')\n */\n get kb(): KBNamespace {\n if (!this._kb) {\n this._kb = new KBNamespace(this);\n }\n return this._kb;\n }\n}\n\n// ============== Namespace Classes ==============\n\n/**\n * Mission namespace for convenient mission operations\n */\nexport class MissionNamespace {\n constructor(private client: OCXPClient) {}\n\n /**\n * List missions with optional filtering\n * @example ocxp.mission.list({ status: 'active', limit: 10 })\n */\n async list(options?: { projectId?: string; status?: string; limit?: number }): Promise<MissionListResponse> {\n return this.client.listMissions(options);\n }\n\n /**\n * Get a mission by ID\n * @example ocxp.mission.get('uuid')\n */\n async get(missionId: string): Promise<MissionResponse> {\n return this.client.getMission(missionId);\n }\n\n /**\n * Create a new mission with auto-generated UUID\n * @example ocxp.mission.create({ title: 'My Mission', description: 'Description' })\n */\n async create(data: { title: string; description?: string; projectId?: string; goals?: string[] }): Promise<MissionResponse> {\n return this.client.createMission(data.title, data.description, data.projectId, data.goals);\n }\n\n /**\n * Update mission\n */\n async update(missionId: string, updates: { title?: string; description?: string; status?: string; progress?: number; notes?: string }): Promise<MissionResponse> {\n return this.client.updateMission(missionId, updates);\n }\n\n /**\n * Delete mission\n */\n async delete(missionId: string): Promise<void> {\n return this.client.deleteMission(missionId);\n }\n\n /**\n * Add session to mission\n */\n async addSession(missionId: string, sessionId: string): Promise<MissionResponse> {\n return this.client.addMissionSession(missionId, sessionId);\n }\n\n /**\n * Remove session from mission\n */\n async removeSession(missionId: string, sessionId: string): Promise<MissionResponse> {\n return this.client.removeMissionSession(missionId, sessionId);\n }\n\n /**\n * Regenerate mission - archives old docs and triggers AgentCore\n * @example ocxp.mission.regenerate('uuid', { ticket_id: 'AMC-123' })\n */\n async regenerate(\n missionId: string,\n options?: {\n ticket_id?: string;\n ticket_summary?: string;\n ticket_description?: string;\n archive_old_docs?: boolean;\n auto_increment_version?: boolean;\n }\n ): Promise<RegenerateMissionResponse> {\n return this.client.regenerateMission(missionId, options);\n }\n\n /**\n * Download mission pack as ZIP\n * @example await ocxp.mission.download('mission-id')\n */\n async download(missionId: string): Promise<Blob> {\n return this.client.downloadMissionPack(missionId);\n }\n\n /**\n * Get mission context for agents\n * @example ocxp.mission.getContext('uuid')\n */\n async getContext(missionId: string) {\n return this.client.getMissionContext(missionId);\n }\n\n /**\n * Get mission content tree structure from S3\n * @param includeVersions - If true, includes S3 version IDs for files\n * @example ocxp.mission.tree('mission-id', 5, true)\n */\n async tree(path?: string, depth?: number, includeVersions?: boolean): Promise<ContentTreeResponse> {\n return this.client.tree('mission', path, depth, includeVersions);\n }\n}\n\n/**\n * Project namespace for convenient project operations\n */\nexport class ProjectNamespace {\n constructor(private client: OCXPClient) {}\n\n /**\n * List all projects\n * @example ocxp.project.list()\n */\n async list(limit?: number): Promise<ProjectListResponse> {\n return this.client.listProjects(limit);\n }\n\n /**\n * Get a project by ID\n * @example ocxp.project.get('my-project')\n */\n async get(projectId: string): Promise<ProjectResponse> {\n return this.client.getProject(projectId);\n }\n\n /**\n * Create a new project with auto-generated UUID\n * @example ocxp.project.create({ name: 'My Project', description: 'Optional description' })\n */\n async create(data: { name: string; description?: string }): Promise<ProjectResponse> {\n return this.client.createProject(data.name, data.description);\n }\n\n /**\n * Update a project\n */\n async update(projectId: string, data: ProjectUpdate): Promise<ProjectResponse> {\n return this.client.updateProject(projectId, data);\n }\n\n /**\n * Delete a project\n */\n async delete(projectId: string): Promise<void> {\n return this.client.deleteProject(projectId);\n }\n\n /**\n * Add a repository to a project\n */\n async addRepo(projectId: string, repoId: string, options?: { category?: string; priority?: number; autoInclude?: boolean; branch?: string }): Promise<ProjectResponse> {\n return this.client.addProjectRepo(projectId, repoId, options);\n }\n\n /**\n * Remove a repository from a project\n */\n async removeRepo(projectId: string, repoId: string): Promise<ProjectResponse> {\n return this.client.removeProjectRepo(projectId, repoId);\n }\n\n /**\n * Set the default repository for a project\n */\n async setDefaultRepo(projectId: string, repoId: string | null): Promise<ProjectResponse> {\n return this.client.setDefaultRepo(projectId, repoId);\n }\n\n /**\n * Get context repositories for a project\n */\n async getContextRepos(projectId: string): Promise<LinkedRepoResponse[]> {\n return this.client.getContextRepos(projectId);\n }\n\n /**\n * Add a mission to a project\n */\n async addMission(projectId: string, missionId: string): Promise<ProjectResponse> {\n return this.client.addProjectMission(projectId, missionId);\n }\n\n /**\n * Remove a mission from a project\n */\n async removeMission(projectId: string, missionId: string): Promise<ProjectResponse> {\n return this.client.removeProjectMission(projectId, missionId);\n }\n\n /**\n * Get project content tree structure from S3\n * @param includeVersions - If true, includes S3 version IDs for files\n * @example ocxp.project.tree('subfolder', 5, true)\n */\n async tree(path?: string, depth?: number, includeVersions?: boolean): Promise<ContentTreeResponse> {\n return this.client.tree('project', path, depth, includeVersions);\n }\n}\n\n/**\n * Session namespace for convenient session operations\n */\nexport class SessionNamespace {\n constructor(private client: OCXPClient) {}\n\n /**\n * List sessions with optional filtering\n * @example ocxp.session.list({ status: 'active', limit: 10 })\n */\n async list(options?: { status?: string; limit?: number }): Promise<SessionListResponse> {\n return this.client.listSessions(options?.limit, options?.status);\n }\n\n /**\n * Get session messages\n * @example ocxp.session.getMessages('session-id')\n */\n async getMessages(sessionId: string): Promise<SessionMessagesResponse> {\n return this.client.getSessionMessages(sessionId);\n }\n\n /**\n * Update session metadata\n */\n async updateMetadata(sessionId: string, data: SessionMetadataUpdate): Promise<SessionResponse> {\n return this.client.updateSessionMetadata(sessionId, data);\n }\n\n /**\n * Fork a session\n */\n async fork(sessionId: string, missionId: string, forkPoint?: number): Promise<SessionForkResponse> {\n return this.client.forkSession(sessionId, missionId, forkPoint);\n }\n\n /**\n * Archive a session\n */\n async archive(sessionId: string): Promise<void> {\n return this.client.archiveSession(sessionId);\n }\n}\n\n/**\n * KB namespace for convenient knowledge base operations\n */\nexport class KBNamespace {\n constructor(private client: OCXPClient) {}\n\n /**\n * Query the knowledge base with optional filtering and external docs fallback\n * @example ocxp.kb.query('search term', { searchType: 'HYBRID', maxResults: 10 })\n * @example ocxp.kb.query('authentication', { projectId: 'my-project', missionId: 'CTX-123' })\n * @example ocxp.kb.query('strands agent', { enableFallback: true, persistExternalDocs: true })\n */\n async query(query: string, options?: {\n searchType?: 'SEMANTIC' | 'HYBRID';\n maxResults?: number;\n docId?: string;\n repoIds?: string[];\n projectId?: string;\n missionId?: string;\n /** Enable external docs fallback (Context7, AWS Docs) when KB has no/low results. Default: true */\n enableFallback?: boolean;\n /** Score threshold (0-1) below which fallback triggers. Default: 0.5 */\n fallbackThreshold?: number;\n /** Save external docs to S3 for future KB queries. Default: true */\n persistExternalDocs?: boolean;\n }) {\n return this.client.kbQuery(query, options);\n }\n\n /**\n * RAG query with LLM response and citations\n * @example ocxp.kb.rag('What is OCXP?')\n */\n async rag(query: string, sessionId?: string) {\n return this.client.kbRag(query, sessionId);\n }\n}\n\n/**\n * Create a new OCXP client instance\n */\nexport function createOCXPClient(options: OCXPClientOptions): OCXPClient {\n return new OCXPClient(options);\n}\n","/**\n * OCXP Path Utilities\n *\n * Provides path parsing and normalization for OCXP content paths.\n * Paths follow the format: {type}/{id}/{subpath}\n *\n * All content types use singular form:\n * - mission, project, context, sop, repo, artifact, kb, docs\n *\n * Examples:\n * - 'mission/CTX-123/PHASES.md' -> { type: 'mission', id: 'CTX-123/PHASES.md' }\n * - 'mission/' -> { type: 'mission', id: undefined }\n * - 'project/my-project' -> { type: 'project', id: 'my-project' }\n */\n\nimport type { ContentTypeValue } from './client';\n\n/**\n * Valid content types for OCXP API\n */\nexport const VALID_CONTENT_TYPES: ContentTypeValue[] = [\n 'mission',\n 'project',\n 'context',\n 'sop',\n 'repo',\n 'artifact',\n 'kb',\n 'docs',\n];\n\n/**\n * Mapping from plural/alternate forms to canonical singular form\n */\nconst TYPE_ALIASES: Record<string, ContentTypeValue> = {\n mission: 'mission',\n missions: 'mission',\n project: 'project',\n projects: 'project',\n context: 'context',\n contexts: 'context',\n sop: 'sop',\n sops: 'sop',\n repo: 'repo',\n repos: 'repo',\n artifact: 'artifact',\n artifacts: 'artifact',\n kb: 'kb',\n kbs: 'kb',\n docs: 'docs',\n};\n\n/**\n * Parsed path result\n */\nexport interface ParsedPath {\n /** Content type (mission, project, etc.) */\n type: ContentTypeValue;\n /** Content ID (everything after the type) */\n id: string | undefined;\n}\n\n/**\n * Parse a path into content type and id\n *\n * @example\n * parsePath('mission/CTX-123/PHASES.md') // { type: 'mission', id: 'CTX-123/PHASES.md' }\n * parsePath('mission/') // { type: 'mission', id: undefined }\n * parsePath('project/my-project') // { type: 'project', id: 'my-project' }\n * parsePath('context/shared/utils') // { type: 'context', id: 'shared/utils' }\n *\n * Note: Also handles legacy plural forms (missions/, projects/) for backward compatibility.\n *\n * @param path - Path string like 'mission/id/file.md'\n * @returns Parsed path with type and id\n * @throws Error if path is invalid or type is not recognized\n */\nexport function parsePath(path: string): ParsedPath {\n // Remove leading/trailing slashes for parsing\n const normalized = path.replace(/^\\/+/, '').replace(/\\/+$/, '');\n const parts = normalized.split('/');\n\n if (parts.length === 0 || !parts[0]) {\n throw new Error(`Invalid path: ${path}`);\n }\n\n const typeKey = parts[0].toLowerCase();\n const type = TYPE_ALIASES[typeKey];\n\n if (!type) {\n throw new Error(\n `Invalid content type: ${parts[0]}. Valid types: ${VALID_CONTENT_TYPES.join(', ')}`\n );\n }\n\n // Get the id (everything after the type)\n const id = parts.length > 1 ? parts.slice(1).join('/') : undefined;\n\n return { type, id };\n}\n\n/**\n * Normalize path to use singular content type prefixes\n *\n * Legacy S3 storage used plural folders (missions/) but OCXP API uses\n * singular form (mission/). This function converts plural to singular\n * for backward compatibility with legacy data.\n *\n * @example\n * normalizePath('missions/id/file.md') // 'mission/id/file.md'\n * normalizePath('projects/my-project') // 'project/my-project'\n * normalizePath('mission/id/file.md') // 'mission/id/file.md' (already normalized)\n *\n * @param path - Path string to normalize\n * @returns Normalized path with singular type prefix\n */\nexport function normalizePath(path: string): string {\n return (\n path\n // S3 plural to OCXP singular\n .replace(/^missions\\//, 'mission/')\n .replace(/^projects\\//, 'project/')\n .replace(/^contexts\\//, 'context/')\n .replace(/^sops\\//, 'sop/')\n .replace(/^repos\\//, 'repo/')\n .replace(/^artifacts\\//, 'artifact/')\n .replace(/^kbs\\//, 'kb/')\n );\n}\n\n/**\n * Check if a content type string is valid\n *\n * @param type - Type string to validate\n * @returns true if valid content type\n */\nexport function isValidContentType(type: string): type is ContentTypeValue {\n return VALID_CONTENT_TYPES.includes(type as ContentTypeValue);\n}\n\n/**\n * Get the canonical content type for a type string (handles aliases)\n *\n * @param type - Type string (may be plural or alias)\n * @returns Canonical content type or undefined if invalid\n */\nexport function getCanonicalType(type: string): ContentTypeValue | undefined {\n return TYPE_ALIASES[type.toLowerCase()];\n}\n\n/**\n * Build a path from type and id\n *\n * @example\n * buildPath('mission', 'CTX-123/PHASES.md') // 'mission/CTX-123/PHASES.md'\n * buildPath('mission') // 'mission/'\n *\n * @param type - Content type\n * @param id - Optional content ID\n * @returns Combined path string\n */\nexport function buildPath(type: ContentTypeValue, id?: string): string {\n if (id) {\n return `${type}/${id}`;\n }\n return `${type}/`;\n}\n","/**\n * OCXPPathService - Path-based wrapper for OCXPClient\n *\n * Provides a simplified interface for file operations using path strings\n * instead of separate type and id parameters.\n *\n * @example\n * ```typescript\n * const service = new OCXPPathService({\n * endpoint: 'https://api.example.com',\n * workspace: 'prod',\n * token: () => authManager.getAccessToken(),\n * });\n *\n * // List operations\n * const entries = await service.list('mission/');\n *\n * // Read operations\n * const file = await service.read('mission/my-mission/PHASES.md');\n *\n * // Write operations\n * await service.write('mission/my-mission/PHASES.md', content);\n * await service.delete('mission/old-mission/README.md');\n * ```\n */\n\nimport { OCXPClient, type OCXPClientOptions } from './client';\nimport { parsePath, normalizePath } from './path';\n\n/**\n * Entry from list operations\n */\nexport interface PathEntry {\n /** File or directory name */\n name: string;\n /** Full path */\n path: string;\n /** Entry type */\n type: 'file' | 'directory';\n /** File size in bytes */\n size?: number;\n /** Last modified time (ISO string) */\n mtime?: string;\n /** Content hash */\n hash?: string;\n}\n\n/**\n * Read result with path context\n */\nexport interface PathReadResult {\n /** Original path */\n path: string;\n /** Content type */\n type: string;\n /** File content */\n content: string;\n /** Content encoding */\n encoding: string;\n /** File info */\n info?: {\n path: string;\n size?: number;\n mtime?: string;\n };\n}\n\n/**\n * Write options\n */\nexport interface PathWriteOptions {\n /** Content encoding */\n encoding?: string;\n /** Content type */\n contentType?: string;\n /** Custom metadata */\n metadata?: Record<string, unknown>;\n /** Only write if file doesn't exist */\n ifNotExists?: boolean;\n /** ETag for conditional writes */\n etag?: string;\n}\n\n/**\n * Write result\n */\nexport interface PathWriteResult {\n /** Operation success */\n success: boolean;\n /** Path that was written */\n path: string;\n /** File size after write */\n size?: number;\n}\n\n/**\n * Move result\n */\nexport interface PathMoveResult {\n /** Operation success */\n success: boolean;\n /** Source path */\n sourcePath: string;\n /** Destination path */\n destPath: string;\n}\n\n/**\n * File info\n */\nexport interface PathFileInfo {\n /** File path */\n path: string;\n /** File size in bytes */\n size?: number;\n /** Last modified time (ISO string) */\n mtime?: string;\n /** Content hash */\n hash?: string;\n /** MIME content type */\n contentType?: string;\n}\n\n/**\n * List result with path context\n */\nexport interface PathListResult {\n /** Original path */\n path: string;\n /** List entries */\n entries: PathEntry[];\n /** Pagination cursor */\n cursor?: string | null;\n /** More entries available */\n hasMore?: boolean;\n /** Total count */\n total?: number;\n}\n\n/**\n * Path service options (extends client options)\n */\nexport interface OCXPPathServiceOptions extends OCXPClientOptions {\n /** Request timeout in milliseconds */\n timeout?: number;\n}\n\n/**\n * Token provider function type\n */\nexport type TokenProvider = () => Promise<string | null>;\n\n/**\n * OCXPPathService - Path-based file operations via OCXP protocol\n *\n * This service wraps OCXPClient and provides a simpler interface using\n * path strings like 'mission/id/file.md' instead of separate type and id.\n */\nexport class OCXPPathService {\n private client: OCXPClient;\n private readonly endpoint: string;\n private readonly workspace: string;\n\n constructor(options: OCXPPathServiceOptions) {\n this.endpoint = options.endpoint;\n this.workspace = options.workspace || 'dev';\n\n this.client = new OCXPClient({\n endpoint: options.endpoint,\n workspace: this.workspace,\n token: options.token,\n });\n }\n\n // ===========================================================================\n // Read Operations\n // ===========================================================================\n\n /**\n * List directory contents\n *\n * @param path - Path like 'mission/' or 'project/'\n * @param limit - Maximum entries to return\n * @returns List result with entries\n */\n async list(path: string, limit?: number): Promise<PathListResult> {\n const { type, id } = parsePath(path);\n\n const result = await this.client.list(type, id, limit);\n\n return {\n path,\n entries: result.entries.map(\n (entry): PathEntry => ({\n name: entry.name ?? '',\n path: normalizePath(entry.path ?? ''),\n type: (entry.type ?? 'file') as 'file' | 'directory',\n size: entry.size,\n mtime: entry.mtime,\n })\n ),\n cursor: result.cursor,\n hasMore: result.hasMore,\n total: result.total,\n };\n }\n\n /**\n * Read file content\n *\n * @param path - Path like 'mission/CTX-123/PHASES.md'\n * @returns Read result with content\n */\n async read(path: string): Promise<PathReadResult> {\n const { type, id } = parsePath(path);\n\n if (!id) {\n throw new Error(`Cannot read directory path: ${path}`);\n }\n\n const result = await this.client.read(type, id);\n\n return {\n path,\n type: 'text',\n content: result.content,\n encoding: result.encoding ?? 'utf-8',\n info: {\n path,\n size: result.size,\n mtime: result.mtime,\n },\n };\n }\n\n /**\n * Check if path exists\n *\n * @param path - Path to check\n * @returns true if exists\n */\n async exists(path: string): Promise<boolean> {\n try {\n const { type, id } = parsePath(path);\n\n if (!id) {\n // For directory paths, try list instead\n await this.client.list(type);\n return true;\n }\n\n await this.client.read(type, id);\n return true;\n } catch {\n return false;\n }\n }\n\n /**\n * Get file metadata\n *\n * @param path - Path to get info for\n * @returns File info\n */\n async info(path: string): Promise<PathFileInfo> {\n const { type, id } = parsePath(path);\n\n const result = (await this.client.stats(type, id)) as unknown as {\n data?: {\n size?: number;\n mtime?: string;\n hash?: string;\n contentType?: string;\n };\n };\n\n const data = result?.data || {};\n\n return {\n path,\n size: data.size,\n mtime: data.mtime,\n hash: data.hash,\n contentType: data.contentType,\n };\n }\n\n // ===========================================================================\n // Write Operations\n // ===========================================================================\n\n /**\n * Write/update file content\n *\n * @param path - Path like 'mission/CTX-123/PHASES.md'\n * @param content - File content\n * @param options - Write options\n * @returns Write result\n */\n async write(path: string, content: string, options?: PathWriteOptions): Promise<PathWriteResult> {\n const { type, id } = parsePath(path);\n\n if (!id) {\n throw new Error(`Cannot write to directory path: ${path}`);\n }\n\n await this.client.write(type, id, content, {\n encoding: options?.encoding,\n ifNotExists: options?.ifNotExists,\n etag: options?.etag,\n });\n\n return {\n success: true,\n path,\n };\n }\n\n /**\n * Delete a file\n *\n * @param path - Path like 'mission/CTX-123/PHASES.md'\n * @returns Write result\n */\n async delete(path: string): Promise<PathWriteResult> {\n const { type, id } = parsePath(path);\n\n if (!id) {\n throw new Error(`Cannot delete directory path without id: ${path}`);\n }\n\n await this.client.delete(type, id);\n\n return {\n success: true,\n path,\n };\n }\n\n /**\n * Move/rename a file\n *\n * Implemented as read + write + delete\n *\n * @param sourcePath - Source path\n * @param destPath - Destination path\n * @returns Move result\n */\n async move(sourcePath: string, destPath: string): Promise<PathMoveResult> {\n // Read source content\n const content = await this.read(sourcePath);\n\n // Write to destination\n await this.write(destPath, content.content);\n\n // Delete source\n await this.delete(sourcePath);\n\n return {\n success: true,\n sourcePath,\n destPath,\n };\n }\n\n // ===========================================================================\n // Utility Methods\n // ===========================================================================\n\n /**\n * Get the underlying OCXPClient\n */\n getClient(): OCXPClient {\n return this.client;\n }\n\n /**\n * Get the API endpoint\n */\n getEndpoint(): string {\n return this.endpoint;\n }\n\n /**\n * Get the workspace ID\n */\n getWorkspace(): string {\n return this.workspace;\n }\n\n /**\n * Update the workspace\n */\n setWorkspace(workspace: string): void {\n this.client.setWorkspace(workspace);\n }\n\n /**\n * Update the auth token\n */\n setToken(token: string | (() => Promise<string>)): void {\n this.client.setToken(token);\n }\n}\n\n/**\n * Create a new OCXPPathService instance\n */\nexport function createPathService(options: OCXPPathServiceOptions): OCXPPathService {\n return new OCXPPathService(options);\n}\n","/**\n * WebSocket service for OCXP real-time communication\n * Provides push notifications for job progress, sync events, etc.\n */\n\nexport type WebSocketMessageType = 'job_progress' | 'repo_status' | 'notification' | 'sync_event';\n\nexport interface WebSocketMessage {\n type: WebSocketMessageType;\n [key: string]: unknown;\n}\n\nexport interface JobProgressMessage extends WebSocketMessage {\n type: 'job_progress';\n job_id: string;\n status: string;\n progress: number;\n files_processed: number;\n total_files: number;\n error?: string;\n}\n\nexport interface RepoStatusMessage extends WebSocketMessage {\n type: 'repo_status';\n repo_id: string;\n status: string;\n kb_synced: boolean;\n s3_path?: string;\n files_count?: number;\n}\n\nexport interface NotificationMessage extends WebSocketMessage {\n type: 'notification';\n title: string;\n message: string;\n level: 'info' | 'warning' | 'error' | 'success';\n action?: {\n label: string;\n url: string;\n };\n}\n\nexport interface SyncEventMessage extends WebSocketMessage {\n type: 'sync_event';\n event: string;\n path?: string;\n content_type?: string;\n}\n\nexport interface WebSocketServiceOptions {\n /** WebSocket endpoint (wss://...) */\n endpoint: string;\n /** Workspace for scoping */\n workspace: string;\n /** Optional user ID */\n userId?: string;\n /** Token provider (same as OCXPClient) */\n token?: string | (() => Promise<string>);\n /** Max reconnection attempts (default: 5) */\n maxReconnectAttempts?: number;\n /** Reconnection delay base in ms (default: 1000) */\n reconnectDelayMs?: number;\n /** Connection timeout in ms (default: 10000) */\n connectionTimeoutMs?: number;\n}\n\nexport type WebSocketEventHandler<T extends WebSocketMessage = WebSocketMessage> = (\n message: T\n) => void;\n\nexport type ConnectionState = 'disconnected' | 'connecting' | 'connected' | 'reconnecting';\n\nexport class WebSocketService {\n private ws: WebSocket | null = null;\n private reconnectAttempts = 0;\n private reconnectTimeout: ReturnType<typeof setTimeout> | null = null;\n private eventHandlers: Map<WebSocketMessageType | '*', Set<WebSocketEventHandler>> = new Map();\n private connectionStateHandlers: Set<(state: ConnectionState) => void> = new Set();\n private connectionPromise: Promise<void> | null = null;\n private _connectionState: ConnectionState = 'disconnected';\n private shouldReconnect = true;\n\n constructor(private options: WebSocketServiceOptions) {}\n\n /**\n * Get current connection state\n */\n get connectionState(): ConnectionState {\n return this._connectionState;\n }\n\n /**\n * Check if connected\n */\n get connected(): boolean {\n return this.ws?.readyState === WebSocket.OPEN;\n }\n\n /**\n * Connect to WebSocket server\n */\n async connect(): Promise<void> {\n if (this.connectionPromise) return this.connectionPromise;\n if (this.connected) return Promise.resolve();\n\n this.shouldReconnect = true;\n this.connectionPromise = this.doConnect();\n return this.connectionPromise;\n }\n\n private setConnectionState(state: ConnectionState): void {\n this._connectionState = state;\n this.connectionStateHandlers.forEach((handler) => handler(state));\n }\n\n private async doConnect(): Promise<void> {\n this.setConnectionState('connecting');\n\n const token =\n typeof this.options.token === 'function' ? await this.options.token() : this.options.token;\n\n const params = new URLSearchParams({\n workspace: this.options.workspace,\n });\n\n if (this.options.userId) {\n params.set('user_id', this.options.userId);\n }\n\n if (token) {\n params.set('token', token);\n }\n\n const url = `${this.options.endpoint}?${params}`;\n\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n this.ws?.close();\n reject(new Error('WebSocket connection timeout'));\n }, this.options.connectionTimeoutMs ?? 10000);\n\n try {\n this.ws = new WebSocket(url);\n } catch (error) {\n clearTimeout(timeout);\n this.connectionPromise = null;\n this.setConnectionState('disconnected');\n reject(error instanceof Error ? error : new Error(String(error)));\n return;\n }\n\n this.ws.onopen = () => {\n clearTimeout(timeout);\n this.reconnectAttempts = 0;\n this.setConnectionState('connected');\n resolve();\n };\n\n this.ws.onmessage = (event: MessageEvent<string>) => {\n try {\n const message = JSON.parse(event.data) as WebSocketMessage;\n this.dispatchMessage(message);\n } catch {\n // Ignore invalid messages\n }\n };\n\n this.ws.onclose = (event) => {\n clearTimeout(timeout);\n this.connectionPromise = null;\n\n if (this.shouldReconnect && event.code !== 1000) {\n this.setConnectionState('reconnecting');\n this.handleReconnect();\n } else {\n this.setConnectionState('disconnected');\n }\n };\n\n this.ws.onerror = () => {\n clearTimeout(timeout);\n this.connectionPromise = null;\n reject(new Error('WebSocket connection failed'));\n };\n });\n }\n\n private handleReconnect(): void {\n if (!this.shouldReconnect) return;\n\n const maxAttempts = this.options.maxReconnectAttempts ?? 5;\n if (this.reconnectAttempts >= maxAttempts) {\n this.setConnectionState('disconnected');\n return;\n }\n\n const delay = (this.options.reconnectDelayMs ?? 1000) * Math.pow(2, this.reconnectAttempts);\n this.reconnectAttempts++;\n\n this.reconnectTimeout = setTimeout(() => {\n this.connect().catch(() => {\n // Reconnect failed, will try again via onclose\n });\n }, delay);\n }\n\n private dispatchMessage(message: WebSocketMessage): void {\n // Dispatch to type-specific handlers\n const handlers = this.eventHandlers.get(message.type);\n handlers?.forEach((handler) => handler(message));\n\n // Dispatch to wildcard handlers\n const wildcardHandlers = this.eventHandlers.get('*');\n wildcardHandlers?.forEach((handler) => handler(message));\n }\n\n /**\n * Subscribe to message types\n * @returns Unsubscribe function\n */\n on<T extends WebSocketMessage = WebSocketMessage>(\n type: WebSocketMessageType | '*',\n handler: WebSocketEventHandler<T>\n ): () => void {\n if (!this.eventHandlers.has(type)) {\n this.eventHandlers.set(type, new Set());\n }\n this.eventHandlers.get(type)!.add(handler as WebSocketEventHandler);\n\n return () => this.eventHandlers.get(type)?.delete(handler as WebSocketEventHandler);\n }\n\n /**\n * Subscribe to job progress updates\n */\n onJobProgress(handler: WebSocketEventHandler<JobProgressMessage>): () => void {\n return this.on('job_progress', handler);\n }\n\n /**\n * Subscribe to repository status updates\n */\n onRepoStatus(handler: WebSocketEventHandler<RepoStatusMessage>): () => void {\n return this.on('repo_status', handler);\n }\n\n /**\n * Subscribe to notifications\n */\n onNotification(handler: WebSocketEventHandler<NotificationMessage>): () => void {\n return this.on('notification', handler);\n }\n\n /**\n * Subscribe to sync events\n */\n onSyncEvent(handler: WebSocketEventHandler<SyncEventMessage>): () => void {\n return this.on('sync_event', handler);\n }\n\n /**\n * Subscribe to connection state changes\n */\n onConnectionStateChange(handler: (state: ConnectionState) => void): () => void {\n this.connectionStateHandlers.add(handler);\n return () => this.connectionStateHandlers.delete(handler);\n }\n\n /**\n * Subscribe to specific job updates\n */\n subscribeToJob(jobId: string): void {\n this.send({ action: 'subscribe', type: 'job', id: jobId });\n }\n\n /**\n * Subscribe to repository updates\n */\n subscribeToRepo(repoId: string): void {\n this.send({ action: 'subscribe', type: 'repo', id: repoId });\n }\n\n /**\n * Send message to server\n */\n send(data: object): void {\n if (this.ws?.readyState === WebSocket.OPEN) {\n this.ws.send(JSON.stringify(data));\n }\n }\n\n /**\n * Send ping to keep connection alive\n */\n ping(): void {\n this.send({ action: 'ping' });\n }\n\n /**\n * Disconnect and cleanup\n */\n disconnect(): void {\n this.shouldReconnect = false;\n\n if (this.reconnectTimeout) {\n clearTimeout(this.reconnectTimeout);\n this.reconnectTimeout = null;\n }\n\n if (this.ws) {\n this.ws.close(1000, 'Client disconnect');\n this.ws = null;\n }\n\n this.connectionPromise = null;\n this.reconnectAttempts = 0;\n this.setConnectionState('disconnected');\n }\n\n /**\n * Clear all event handlers\n */\n clearHandlers(): void {\n this.eventHandlers.clear();\n this.connectionStateHandlers.clear();\n }\n}\n\n/**\n * Create WebSocket service with same options pattern as OCXPClient\n */\nexport function createWebSocketService(options: WebSocketServiceOptions): WebSocketService {\n return new WebSocketService(options);\n}\n","/**\n * OCXP Error Types\n *\n * Typed error classes for the OCXP SDK providing structured error handling\n * with error codes, HTTP status codes, and detailed context.\n */\n\n/**\n * Error codes for OCXP operations\n */\nexport enum OCXPErrorCode {\n /** Network-level error (connection failed, timeout, etc.) */\n NETWORK_ERROR = 'NETWORK_ERROR',\n /** Request or response validation failed */\n VALIDATION_ERROR = 'VALIDATION_ERROR',\n /** Authentication or authorization failed */\n AUTH_ERROR = 'AUTH_ERROR',\n /** Resource not found */\n NOT_FOUND = 'NOT_FOUND',\n /** Rate limit exceeded */\n RATE_LIMITED = 'RATE_LIMITED',\n /** Conflict (e.g., etag mismatch) */\n CONFLICT = 'CONFLICT',\n /** Operation timed out */\n TIMEOUT = 'TIMEOUT',\n /** Server-side error */\n SERVER_ERROR = 'SERVER_ERROR',\n /** Unknown error */\n UNKNOWN = 'UNKNOWN',\n}\n\n/**\n * Base error class for all OCXP errors\n */\nexport class OCXPError extends Error {\n /** Error code for programmatic handling */\n public readonly code: OCXPErrorCode;\n /** HTTP status code if applicable */\n public readonly statusCode: number;\n /** Additional error details */\n public readonly details?: Record<string, unknown>;\n /** Request ID for debugging */\n public readonly requestId?: string;\n /** Original cause of the error */\n public override readonly cause?: Error;\n\n constructor(\n message: string,\n code: OCXPErrorCode = OCXPErrorCode.UNKNOWN,\n statusCode: number = 500,\n options?: {\n details?: Record<string, unknown>;\n requestId?: string;\n cause?: Error;\n }\n ) {\n super(message);\n this.name = 'OCXPError';\n this.code = code;\n this.statusCode = statusCode;\n this.details = options?.details;\n this.requestId = options?.requestId;\n this.cause = options?.cause;\n\n // Maintains proper stack trace for where error was thrown (V8 engines)\n if ('captureStackTrace' in Error && typeof Error.captureStackTrace === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n (\n Error.captureStackTrace as (\n targetObject: object,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n constructorOpt?: Function\n ) => void\n )(this, this.constructor);\n }\n }\n\n /**\n * Convert error to JSON for logging/serialization\n */\n toJSON(): Record<string, unknown> {\n return {\n name: this.name,\n message: this.message,\n code: this.code,\n statusCode: this.statusCode,\n details: this.details,\n requestId: this.requestId,\n stack: this.stack,\n };\n }\n}\n\n/**\n * Network-level error (connection failed, DNS resolution, etc.)\n */\nexport class OCXPNetworkError extends OCXPError {\n constructor(\n message: string,\n options?: {\n details?: Record<string, unknown>;\n requestId?: string;\n cause?: Error;\n }\n ) {\n super(message, OCXPErrorCode.NETWORK_ERROR, 0, options);\n this.name = 'OCXPNetworkError';\n }\n}\n\n/**\n * Validation error (request or response validation failed)\n */\nexport class OCXPValidationError extends OCXPError {\n /** Field-level validation errors */\n public readonly validationErrors?: Record<string, string[]>;\n\n constructor(\n message: string,\n validationErrors?: Record<string, string[]>,\n options?: {\n details?: Record<string, unknown>;\n requestId?: string;\n cause?: Error;\n }\n ) {\n super(message, OCXPErrorCode.VALIDATION_ERROR, 400, {\n ...options,\n details: { ...options?.details, validationErrors },\n });\n this.name = 'OCXPValidationError';\n this.validationErrors = validationErrors;\n }\n}\n\n/**\n * Authentication or authorization error\n */\nexport class OCXPAuthError extends OCXPError {\n constructor(\n message: string,\n options?: {\n details?: Record<string, unknown>;\n requestId?: string;\n cause?: Error;\n }\n ) {\n super(message, OCXPErrorCode.AUTH_ERROR, 401, options);\n this.name = 'OCXPAuthError';\n }\n}\n\n/**\n * Resource not found error\n */\nexport class OCXPNotFoundError extends OCXPError {\n /** The resource path that was not found */\n public readonly path?: string;\n\n constructor(\n message: string,\n path?: string,\n options?: {\n details?: Record<string, unknown>;\n requestId?: string;\n cause?: Error;\n }\n ) {\n super(message, OCXPErrorCode.NOT_FOUND, 404, {\n ...options,\n details: { ...options?.details, path },\n });\n this.name = 'OCXPNotFoundError';\n this.path = path;\n }\n}\n\n/**\n * Rate limit exceeded error\n */\nexport class OCXPRateLimitError extends OCXPError {\n /** Seconds until rate limit resets */\n public readonly retryAfter?: number;\n\n constructor(\n message: string = 'Rate limit exceeded',\n retryAfter?: number,\n options?: {\n details?: Record<string, unknown>;\n requestId?: string;\n cause?: Error;\n }\n ) {\n super(message, OCXPErrorCode.RATE_LIMITED, 429, {\n ...options,\n details: { ...options?.details, retryAfter },\n });\n this.name = 'OCXPRateLimitError';\n this.retryAfter = retryAfter;\n }\n}\n\n/**\n * Conflict error (e.g., etag mismatch, concurrent modification)\n */\nexport class OCXPConflictError extends OCXPError {\n /** Expected etag value */\n public readonly expectedEtag?: string;\n /** Actual etag value */\n public readonly actualEtag?: string;\n\n constructor(\n message: string,\n options?: {\n expectedEtag?: string;\n actualEtag?: string;\n details?: Record<string, unknown>;\n requestId?: string;\n cause?: Error;\n }\n ) {\n super(message, OCXPErrorCode.CONFLICT, 409, {\n details: {\n ...options?.details,\n expectedEtag: options?.expectedEtag,\n actualEtag: options?.actualEtag,\n },\n requestId: options?.requestId,\n cause: options?.cause,\n });\n this.name = 'OCXPConflictError';\n this.expectedEtag = options?.expectedEtag;\n this.actualEtag = options?.actualEtag;\n }\n}\n\n/**\n * Operation timeout error\n */\nexport class OCXPTimeoutError extends OCXPError {\n /** Timeout duration in milliseconds */\n public readonly timeoutMs?: number;\n\n constructor(\n message: string = 'Operation timed out',\n timeoutMs?: number,\n options?: {\n details?: Record<string, unknown>;\n requestId?: string;\n cause?: Error;\n }\n ) {\n super(message, OCXPErrorCode.TIMEOUT, 408, {\n ...options,\n details: { ...options?.details, timeoutMs },\n });\n this.name = 'OCXPTimeoutError';\n this.timeoutMs = timeoutMs;\n }\n}\n\n/**\n * Type guard to check if an error is an OCXPError\n */\nexport function isOCXPError(error: unknown): error is OCXPError {\n return error instanceof OCXPError;\n}\n\n/**\n * Type guard for specific error types\n */\nexport function isOCXPNetworkError(error: unknown): error is OCXPNetworkError {\n return error instanceof OCXPNetworkError;\n}\n\nexport function isOCXPValidationError(error: unknown): error is OCXPValidationError {\n return error instanceof OCXPValidationError;\n}\n\nexport function isOCXPAuthError(error: unknown): error is OCXPAuthError {\n return error instanceof OCXPAuthError;\n}\n\nexport function isOCXPNotFoundError(error: unknown): error is OCXPNotFoundError {\n return error instanceof OCXPNotFoundError;\n}\n\nexport function isOCXPRateLimitError(error: unknown): error is OCXPRateLimitError {\n return error instanceof OCXPRateLimitError;\n}\n\nexport function isOCXPConflictError(error: unknown): error is OCXPConflictError {\n return error instanceof OCXPConflictError;\n}\n\nexport function isOCXPTimeoutError(error: unknown): error is OCXPTimeoutError {\n return error instanceof OCXPTimeoutError;\n}\n\n/**\n * Map HTTP status code to appropriate OCXP error\n */\nexport function mapHttpError(\n statusCode: number,\n message: string,\n options?: {\n details?: Record<string, unknown>;\n requestId?: string;\n path?: string;\n retryAfter?: number;\n }\n): OCXPError {\n const baseOptions = {\n details: options?.details,\n requestId: options?.requestId,\n };\n\n switch (statusCode) {\n case 400:\n return new OCXPValidationError(message, undefined, baseOptions);\n case 401:\n case 403:\n return new OCXPAuthError(message, baseOptions);\n case 404:\n return new OCXPNotFoundError(message, options?.path, baseOptions);\n case 408:\n return new OCXPTimeoutError(message, undefined, baseOptions);\n case 409:\n return new OCXPConflictError(message, baseOptions);\n case 429:\n return new OCXPRateLimitError(message, options?.retryAfter, baseOptions);\n default:\n if (statusCode >= 500) {\n return new OCXPError(message, OCXPErrorCode.SERVER_ERROR, statusCode, baseOptions);\n }\n return new OCXPError(message, OCXPErrorCode.UNKNOWN, statusCode, baseOptions);\n }\n}\n","/**\n * Common Zod Schemas for OCXP API\n *\n * Shared schemas used across all API responses.\n */\n\nimport { z } from 'zod';\n\n/**\n * Response metadata schema\n */\nexport const MetaSchema = z.object({\n requestId: z.string(),\n timestamp: z.string(),\n durationMs: z.number(),\n operation: z.string(),\n});\n\nexport type Meta = z.infer<typeof MetaSchema>;\n\n/**\n * Error response schema\n */\nexport const ErrorResponseSchema = z.object({\n code: z.string(),\n message: z.string(),\n details: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport type ErrorResponse = z.infer<typeof ErrorResponseSchema>;\n\n/**\n * Base OCXP Response wrapper schema\n * All API responses follow this structure\n */\nexport const OCXPResponseSchema = z.object({\n success: z.boolean(),\n data: z.unknown().optional(),\n error: ErrorResponseSchema.nullable().optional(),\n notifications: z.array(z.unknown()).optional(),\n meta: MetaSchema.optional(),\n});\n\nexport type OCXPResponse = z.infer<typeof OCXPResponseSchema>;\n\n/**\n * Pagination schema for list responses\n */\nexport const PaginationSchema = z.object({\n cursor: z.string().nullable().optional(),\n hasMore: z.boolean(),\n total: z.number(),\n});\n\nexport type Pagination = z.infer<typeof PaginationSchema>;\n\n/**\n * Content type enum - the 8 valid content types\n */\nexport const ContentTypeSchema = z.enum([\n 'mission',\n 'project',\n 'context',\n 'sop',\n 'repo',\n 'artifact',\n 'kb',\n 'docs',\n]);\n\nexport type ContentType = z.infer<typeof ContentTypeSchema>;\n\n/**\n * Helper to create typed OCXP response schema\n */\nexport function createResponseSchema<T extends z.ZodTypeAny>(dataSchema: T) {\n return z.object({\n success: z.boolean(),\n data: dataSchema.optional(),\n error: ErrorResponseSchema.nullable().optional(),\n notifications: z.array(z.unknown()).optional(),\n meta: MetaSchema.optional(),\n });\n}\n","/**\n * Content CRUD Zod Schemas\n *\n * Schemas for content operations: list, read, write, delete, query, search, etc.\n */\n\nimport { z } from 'zod';\nimport { createResponseSchema } from './common';\n\n/**\n * List entry schema - represents a file or directory in a list response\n */\nexport const ListEntrySchema = z.object({\n name: z.string(),\n type: z.enum(['file', 'directory']),\n path: z.string(),\n size: z.number().optional(),\n mtime: z.string().optional(),\n});\n\nexport type ListEntry = z.infer<typeof ListEntrySchema>;\n\n/**\n * List response data schema\n */\nexport const ListDataSchema = z.object({\n entries: z.array(ListEntrySchema),\n cursor: z.string().nullable().optional(),\n hasMore: z.boolean().optional().default(false),\n total: z.number().optional().default(0),\n});\n\nexport type ListData = z.infer<typeof ListDataSchema>;\n\n/**\n * List response schema\n */\nexport const ListResponseSchema = createResponseSchema(ListDataSchema);\n\nexport type ListResponse = z.infer<typeof ListResponseSchema>;\n\n/**\n * Read response data schema\n */\nexport const ReadDataSchema = z.object({\n content: z.string(),\n size: z.number().optional(),\n mtime: z.string().optional(),\n encoding: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n etag: z.string().optional(),\n});\n\nexport type ReadData = z.infer<typeof ReadDataSchema>;\n\n/**\n * Read response schema\n */\nexport const ReadResponseSchema = createResponseSchema(ReadDataSchema);\n\nexport type ReadResponse = z.infer<typeof ReadResponseSchema>;\n\n/**\n * Write response data schema\n */\nexport const WriteDataSchema = z.object({\n path: z.string(),\n etag: z.string().optional(),\n size: z.number().optional(),\n});\n\nexport type WriteData = z.infer<typeof WriteDataSchema>;\n\n/**\n * Write response schema\n */\nexport const WriteResponseSchema = createResponseSchema(WriteDataSchema);\n\nexport type WriteResponse = z.infer<typeof WriteResponseSchema>;\n\n/**\n * Delete response data schema\n */\nexport const DeleteDataSchema = z.object({\n path: z.string(),\n deleted: z.boolean().optional().default(true),\n});\n\nexport type DeleteData = z.infer<typeof DeleteDataSchema>;\n\n/**\n * Delete response schema\n */\nexport const DeleteResponseSchema = createResponseSchema(DeleteDataSchema);\n\nexport type DeleteResponse = z.infer<typeof DeleteResponseSchema>;\n\n/**\n * Query filter schema\n */\nexport const QueryFilterSchema = z.object({\n field: z.string(),\n operator: z.enum(['eq', 'ne', 'gt', 'lt', 'gte', 'lte', 'contains', 'startsWith']),\n value: z.unknown(),\n});\n\nexport type QueryFilter = z.infer<typeof QueryFilterSchema>;\n\n/**\n * Query response data schema\n */\nexport const QueryDataSchema = z.object({\n items: z.array(z.record(z.string(), z.unknown())),\n cursor: z.string().nullable().optional(),\n hasMore: z.boolean().optional().default(false),\n total: z.number().optional().default(0),\n});\n\nexport type QueryData = z.infer<typeof QueryDataSchema>;\n\n/**\n * Query response schema\n */\nexport const QueryResponseSchema = createResponseSchema(QueryDataSchema);\n\nexport type QueryResponse = z.infer<typeof QueryResponseSchema>;\n\n/**\n * Search response data schema\n */\nexport const SearchDataSchema = z.object({\n results: z.array(\n z.object({\n path: z.string(),\n score: z.number().optional(),\n highlights: z.array(z.string()).optional(),\n content: z.string().optional(),\n })\n ),\n total: z.number().optional().default(0),\n});\n\nexport type SearchData = z.infer<typeof SearchDataSchema>;\n\n/**\n * Search response schema\n */\nexport const SearchResponseSchema = createResponseSchema(SearchDataSchema);\n\nexport type SearchResponse = z.infer<typeof SearchResponseSchema>;\n\n/**\n * Tree node schema\n */\nexport const TreeNodeSchema: z.ZodType<TreeNode> = z.lazy(() =>\n z.object({\n name: z.string(),\n path: z.string(),\n type: z.enum(['file', 'directory']),\n size: z.number().optional(),\n version_id: z.string().optional(),\n children: z.array(TreeNodeSchema).optional(),\n })\n);\n\nexport interface TreeNode {\n name: string;\n path: string;\n type: 'file' | 'directory';\n size?: number;\n version_id?: string; // S3 version ID for files\n children?: TreeNode[];\n}\n\n/**\n * Tree response data schema\n */\nexport const TreeDataSchema = z.object({\n root: TreeNodeSchema,\n depth: z.number().optional(),\n});\n\nexport type TreeData = z.infer<typeof TreeDataSchema>;\n\n/**\n * Tree response schema\n */\nexport const TreeResponseSchema = createResponseSchema(TreeDataSchema);\n\nexport type TreeResponse = z.infer<typeof TreeResponseSchema>;\n\n/**\n * Stats response data schema\n */\nexport const StatsDataSchema = z.object({\n totalFiles: z.number(),\n totalSize: z.number(),\n lastModified: z.string().optional(),\n fileTypes: z.record(z.string(), z.number()).optional(),\n});\n\nexport type StatsData = z.infer<typeof StatsDataSchema>;\n\n/**\n * Stats response schema\n */\nexport const StatsResponseSchema = createResponseSchema(StatsDataSchema);\n\nexport type StatsResponse = z.infer<typeof StatsResponseSchema>;\n\n/**\n * Content type info schema\n */\nexport const ContentTypeInfoSchema = z.object({\n name: z.string(),\n description: z.string().optional(),\n prefix: z.string().nullable().optional(),\n isVirtual: z.boolean().optional(),\n isGlobal: z.boolean().optional(),\n count: z.number().nullable().optional(),\n endpoints: z.record(z.string(), z.string()).optional(),\n});\n\nexport type ContentTypeInfo = z.infer<typeof ContentTypeInfoSchema>;\n\n/**\n * Get content types response data schema\n */\nexport const ContentTypesDataSchema = z.object({\n types: z.array(ContentTypeInfoSchema),\n});\n\nexport type ContentTypesData = z.infer<typeof ContentTypesDataSchema>;\n\n/**\n * Content types response schema\n */\nexport const ContentTypesResponseSchema = createResponseSchema(ContentTypesDataSchema);\n\nexport type ContentTypesResponse = z.infer<typeof ContentTypesResponseSchema>;\n\n/**\n * Presigned URL response data schema\n */\nexport const PresignedUrlDataSchema = z.object({\n url: z.string(),\n expiresAt: z.string().optional(),\n method: z.enum(['GET', 'PUT']).optional(),\n});\n\nexport type PresignedUrlData = z.infer<typeof PresignedUrlDataSchema>;\n\n/**\n * Presigned URL response schema\n */\nexport const PresignedUrlResponseSchema = createResponseSchema(PresignedUrlDataSchema);\n\nexport type PresignedUrlResponse = z.infer<typeof PresignedUrlResponseSchema>;\n","/**\n * Session Zod Schemas\n *\n * Schemas for session management operations.\n */\n\nimport { z } from 'zod';\nimport { createResponseSchema } from './common';\n\n/**\n * Session message schema\n */\nexport const SessionMessageSchema = z.object({\n id: z.string(),\n role: z.enum(['user', 'assistant', 'system']),\n content: z.string(),\n timestamp: z.string(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport type SessionMessage = z.infer<typeof SessionMessageSchema>;\n\n/**\n * Session schema\n */\nexport const SessionSchema = z.object({\n id: z.string(),\n missionId: z.string().optional(),\n title: z.string().optional(),\n createdAt: z.string(),\n updatedAt: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n messageCount: z.number().optional(),\n});\n\nexport type Session = z.infer<typeof SessionSchema>;\n\n/**\n * List sessions response data schema\n */\nexport const ListSessionsDataSchema = z.object({\n sessions: z.array(SessionSchema),\n total: z.number().optional(),\n});\n\nexport type ListSessionsData = z.infer<typeof ListSessionsDataSchema>;\n\n/**\n * List sessions response schema\n */\nexport const ListSessionsResponseSchema = createResponseSchema(ListSessionsDataSchema);\n\nexport type ListSessionsResponse = z.infer<typeof ListSessionsResponseSchema>;\n\n/**\n * Create session response data schema\n */\nexport const CreateSessionDataSchema = z.object({\n sessionId: z.string(),\n missionId: z.string().optional(),\n});\n\nexport type CreateSessionData = z.infer<typeof CreateSessionDataSchema>;\n\n/**\n * Create session response schema\n */\nexport const CreateSessionResponseSchema = createResponseSchema(CreateSessionDataSchema);\n\nexport type CreateSessionResponse = z.infer<typeof CreateSessionResponseSchema>;\n\n/**\n * Get session messages response data schema\n */\nexport const GetSessionMessagesDataSchema = z.object({\n messages: z.array(SessionMessageSchema),\n sessionId: z.string(),\n});\n\nexport type GetSessionMessagesData = z.infer<typeof GetSessionMessagesDataSchema>;\n\n/**\n * Get session messages response schema\n */\nexport const GetSessionMessagesResponseSchema = createResponseSchema(GetSessionMessagesDataSchema);\n\nexport type GetSessionMessagesResponse = z.infer<typeof GetSessionMessagesResponseSchema>;\n\n/**\n * Update session metadata response data schema\n */\nexport const UpdateSessionMetadataDataSchema = z.object({\n sessionId: z.string(),\n metadata: z.record(z.string(), z.unknown()),\n});\n\nexport type UpdateSessionMetadataData = z.infer<typeof UpdateSessionMetadataDataSchema>;\n\n/**\n * Update session metadata response schema\n */\nexport const UpdateSessionMetadataResponseSchema = createResponseSchema(\n UpdateSessionMetadataDataSchema\n);\n\nexport type UpdateSessionMetadataResponse = z.infer<typeof UpdateSessionMetadataResponseSchema>;\n\n/**\n * Fork session response data schema\n */\nexport const ForkSessionDataSchema = z.object({\n sessionId: z.string(),\n forkedFromId: z.string(),\n});\n\nexport type ForkSessionData = z.infer<typeof ForkSessionDataSchema>;\n\n/**\n * Fork session response schema\n */\nexport const ForkSessionResponseSchema = createResponseSchema(ForkSessionDataSchema);\n\nexport type ForkSessionResponse = z.infer<typeof ForkSessionResponseSchema>;\n","/**\n * Project Zod Schemas\n *\n * Schemas for project management operations.\n */\n\nimport { z } from 'zod';\nimport { createResponseSchema } from './common';\n\n/**\n * Project repo reference schema\n */\nexport const ProjectRepoSchema = z.object({\n repoId: z.string(),\n isDefault: z.boolean().optional(),\n addedAt: z.string().optional(),\n});\n\nexport type ProjectRepo = z.infer<typeof ProjectRepoSchema>;\n\n/**\n * Project mission reference schema\n */\nexport const ProjectMissionSchema = z.object({\n missionId: z.string(),\n addedAt: z.string().optional(),\n});\n\nexport type ProjectMission = z.infer<typeof ProjectMissionSchema>;\n\n/**\n * Project schema\n */\nexport const ProjectSchema = z.object({\n id: z.string(),\n name: z.string(),\n description: z.string().optional(),\n createdAt: z.string(),\n updatedAt: z.string().optional(),\n repos: z.array(ProjectRepoSchema).optional(),\n missions: z.array(ProjectMissionSchema).optional(),\n defaultRepoId: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport type Project = z.infer<typeof ProjectSchema>;\n\n/**\n * List projects response data schema\n */\nexport const ListProjectsDataSchema = z.object({\n projects: z.array(ProjectSchema),\n total: z.number().optional(),\n});\n\nexport type ListProjectsData = z.infer<typeof ListProjectsDataSchema>;\n\n/**\n * List projects response schema\n */\nexport const ListProjectsResponseSchema = createResponseSchema(ListProjectsDataSchema);\n\nexport type ListProjectsResponse = z.infer<typeof ListProjectsResponseSchema>;\n\n/**\n * Create project response data schema\n */\nexport const CreateProjectDataSchema = z.object({\n projectId: z.string(),\n project: ProjectSchema.optional(),\n});\n\nexport type CreateProjectData = z.infer<typeof CreateProjectDataSchema>;\n\n/**\n * Create project response schema\n */\nexport const CreateProjectResponseSchema = createResponseSchema(CreateProjectDataSchema);\n\nexport type CreateProjectResponse = z.infer<typeof CreateProjectResponseSchema>;\n\n/**\n * Get project response data schema\n */\nexport const GetProjectDataSchema = ProjectSchema;\n\nexport type GetProjectData = z.infer<typeof GetProjectDataSchema>;\n\n/**\n * Get project response schema\n */\nexport const GetProjectResponseSchema = createResponseSchema(GetProjectDataSchema);\n\nexport type GetProjectResponse = z.infer<typeof GetProjectResponseSchema>;\n\n/**\n * Update project response data schema\n */\nexport const UpdateProjectDataSchema = z.object({\n projectId: z.string(),\n project: ProjectSchema.optional(),\n});\n\nexport type UpdateProjectData = z.infer<typeof UpdateProjectDataSchema>;\n\n/**\n * Update project response schema\n */\nexport const UpdateProjectResponseSchema = createResponseSchema(UpdateProjectDataSchema);\n\nexport type UpdateProjectResponse = z.infer<typeof UpdateProjectResponseSchema>;\n\n/**\n * Delete project response data schema\n */\nexport const DeleteProjectDataSchema = z.object({\n projectId: z.string(),\n deleted: z.boolean(),\n});\n\nexport type DeleteProjectData = z.infer<typeof DeleteProjectDataSchema>;\n\n/**\n * Delete project response schema\n */\nexport const DeleteProjectResponseSchema = createResponseSchema(DeleteProjectDataSchema);\n\nexport type DeleteProjectResponse = z.infer<typeof DeleteProjectResponseSchema>;\n\n/**\n * Add project repo response data schema\n */\nexport const AddProjectRepoDataSchema = z.object({\n projectId: z.string(),\n repoId: z.string(),\n});\n\nexport type AddProjectRepoData = z.infer<typeof AddProjectRepoDataSchema>;\n\n/**\n * Add project repo response schema\n */\nexport const AddProjectRepoResponseSchema = createResponseSchema(AddProjectRepoDataSchema);\n\nexport type AddProjectRepoResponse = z.infer<typeof AddProjectRepoResponseSchema>;\n\n/**\n * Context repos response data schema\n */\nexport const ContextReposDataSchema = z.object({\n repos: z.array(\n z.object({\n repoId: z.string(),\n name: z.string().optional(),\n isDefault: z.boolean().optional(),\n })\n ),\n});\n\nexport type ContextReposData = z.infer<typeof ContextReposDataSchema>;\n\n/**\n * Context repos response schema\n */\nexport const ContextReposResponseSchema = createResponseSchema(ContextReposDataSchema);\n\nexport type ContextReposResponse = z.infer<typeof ContextReposResponseSchema>;\n","/**\n * Repository Zod Schemas\n *\n * Schemas for repository management operations.\n */\n\nimport { z } from 'zod';\nimport { createResponseSchema } from './common';\n\n/**\n * Repository download status enum\n */\nexport const RepoStatusEnum = z.enum([\n 'queued',\n 'processing',\n 'uploading',\n 'vectorizing',\n 'complete',\n 'failed',\n]);\n\nexport type RepoStatus = z.infer<typeof RepoStatusEnum>;\n\n/**\n * Repository download request schema\n */\nexport const RepoDownloadRequestSchema = z.object({\n github_url: z.string(),\n repo_id: z.string(),\n branch: z.string().optional().default('main'),\n path: z.string().nullable().optional(),\n mode: z.enum(['full', 'docs_only']).optional().default('full'),\n include_extensions: z.array(z.string()).optional(),\n exclude_patterns: z.array(z.string()).optional(),\n max_file_size_kb: z.number().min(1).max(5000).optional().default(500),\n visibility: z.enum(['private', 'public']).optional().default('private'),\n trigger_vectorization: z.boolean().optional().default(true),\n generate_metadata: z.boolean().optional().default(true),\n is_private: z.boolean().optional().default(false),\n});\n\nexport type RepoDownloadRequest = z.infer<typeof RepoDownloadRequestSchema>;\n\n/**\n * Repository download response data schema\n */\nexport const RepoDownloadDataSchema = z.object({\n repo_id: z.string(),\n job_id: z.string(),\n s3_path: z.string().optional(),\n status: RepoStatusEnum,\n files_processed: z.number().optional(),\n metadata_files_created: z.number().optional(),\n ingestion_job_id: z.string().nullable().optional(),\n});\n\nexport type RepoDownloadData = z.infer<typeof RepoDownloadDataSchema>;\n\n/**\n * Repository download response schema\n */\nexport const RepoDownloadResponseSchema = createResponseSchema(RepoDownloadDataSchema);\n\nexport type RepoDownloadResponse = z.infer<typeof RepoDownloadResponseSchema>;\n\n/**\n * Repository status response data schema\n */\nexport const RepoStatusDataSchema = z.object({\n job_id: z.string(),\n status: RepoStatusEnum,\n progress: z.number().min(0).max(100).optional(),\n files_processed: z.number().optional(),\n total_files: z.number().optional(),\n error: z.string().nullable().optional(),\n started_at: z.string().nullable().optional(),\n completed_at: z.string().nullable().optional(),\n});\n\nexport type RepoStatusData = z.infer<typeof RepoStatusDataSchema>;\n\n/**\n * Repository status response schema\n */\nexport const RepoStatusResponseSchema = createResponseSchema(RepoStatusDataSchema);\n\nexport type RepoStatusResponse = z.infer<typeof RepoStatusResponseSchema>;\n\n/**\n * Repository list item schema\n */\nexport const RepoListItemSchema = z.object({\n repo_id: z.string(),\n github_url: z.string().optional(),\n branch: z.string().optional(),\n visibility: z.enum(['private', 'public']).optional(),\n mode: z.enum(['full', 'docs_only']).optional(),\n files_count: z.number().optional(),\n last_synced: z.string().optional(),\n s3_path: z.string().optional(),\n});\n\nexport type RepoListItem = z.infer<typeof RepoListItemSchema>;\n\n/**\n * Repository list response data schema\n */\nexport const RepoListDataSchema = z.object({\n repos: z.array(RepoListItemSchema),\n total: z.number().optional(),\n});\n\nexport type RepoListData = z.infer<typeof RepoListDataSchema>;\n\n/**\n * Repository list response schema\n */\nexport const RepoListResponseSchema = createResponseSchema(RepoListDataSchema);\n\nexport type RepoListResponse = z.infer<typeof RepoListResponseSchema>;\n\n/**\n * Repository exists response data schema\n */\nexport const RepoExistsDataSchema = z.object({\n repo_id: z.string(),\n exists: z.boolean(),\n indexed_at: z.string().nullable().optional(),\n files_count: z.number().optional(),\n});\n\nexport type RepoExistsData = z.infer<typeof RepoExistsDataSchema>;\n\n/**\n * Repository exists response schema\n */\nexport const RepoExistsResponseSchema = createResponseSchema(RepoExistsDataSchema);\n\nexport type RepoExistsResponse = z.infer<typeof RepoExistsResponseSchema>;\n\n/**\n * Repository delete response data schema\n */\nexport const RepoDeleteDataSchema = z.object({\n repo_id: z.string(),\n success: z.boolean(),\n s3_files_deleted: z.number().optional(),\n projects_updated: z.number().optional(),\n error: z.string().optional(),\n});\n\nexport type RepoDeleteData = z.infer<typeof RepoDeleteDataSchema>;\n\n/**\n * Repository delete response schema\n */\nexport const RepoDeleteResponseSchema = createResponseSchema(RepoDeleteDataSchema);\n\nexport type RepoDeleteResponse = z.infer<typeof RepoDeleteResponseSchema>;\n","/**\n * Auth Zod Schemas\n *\n * Schemas for authentication and authorization operations.\n */\n\nimport { z } from 'zod';\nimport { createResponseSchema } from './common';\n\n/**\n * Auth token response data schema\n */\nexport const AuthTokenDataSchema = z.object({\n accessToken: z.string(),\n tokenType: z.string().optional().default('Bearer'),\n expiresIn: z.number().optional(),\n expiresAt: z.string().optional(),\n refreshToken: z.string().optional(),\n scope: z.string().optional(),\n});\n\nexport type AuthTokenData = z.infer<typeof AuthTokenDataSchema>;\n\n/**\n * Auth token response schema\n */\nexport const AuthTokenResponseSchema = createResponseSchema(AuthTokenDataSchema);\n\nexport type AuthTokenResponse = z.infer<typeof AuthTokenResponseSchema>;\n\n/**\n * Auth user info schema\n */\nexport const AuthUserInfoSchema = z.object({\n userId: z.string(),\n email: z.string().optional(),\n name: z.string().optional(),\n roles: z.array(z.string()).optional(),\n permissions: z.array(z.string()).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport type AuthUserInfo = z.infer<typeof AuthUserInfoSchema>;\n\n/**\n * Auth user info response schema\n */\nexport const AuthUserInfoResponseSchema = createResponseSchema(AuthUserInfoSchema);\n\nexport type AuthUserInfoResponse = z.infer<typeof AuthUserInfoResponseSchema>;\n\n/**\n * Auth validate response data schema\n */\nexport const AuthValidateDataSchema = z.object({\n valid: z.boolean(),\n userId: z.string().optional(),\n expiresAt: z.string().optional(),\n});\n\nexport type AuthValidateData = z.infer<typeof AuthValidateDataSchema>;\n\n/**\n * Auth validate response schema\n */\nexport const AuthValidateResponseSchema = createResponseSchema(AuthValidateDataSchema);\n\nexport type AuthValidateResponse = z.infer<typeof AuthValidateResponseSchema>;\n","/**\n * Discovery & Knowledge Base Zod Schemas\n *\n * Schemas for discovery, search, and knowledge base operations.\n */\n\nimport { z } from 'zod';\nimport { createResponseSchema } from './common';\n\n/**\n * Search result item schema\n */\nexport const SearchResultItemSchema = z.object({\n id: z.string(),\n path: z.string().optional(),\n content: z.string().optional(),\n score: z.number().optional(),\n highlights: z.array(z.string()).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n source: z.string().optional(),\n type: z.string().optional(),\n});\n\nexport type SearchResultItem = z.infer<typeof SearchResultItemSchema>;\n\n/**\n * Vector search response data schema\n */\nexport const VectorSearchDataSchema = z.object({\n results: z.array(SearchResultItemSchema),\n total: z.number().optional(),\n query: z.string().optional(),\n processingTimeMs: z.number().optional(),\n});\n\nexport type VectorSearchData = z.infer<typeof VectorSearchDataSchema>;\n\n/**\n * Vector search response schema\n */\nexport const VectorSearchResponseSchema = createResponseSchema(VectorSearchDataSchema);\n\nexport type VectorSearchResponse = z.infer<typeof VectorSearchResponseSchema>;\n\n/**\n * KB document schema\n */\nexport const KBDocumentSchema = z.object({\n id: z.string(),\n title: z.string().optional(),\n content: z.string(),\n path: z.string().optional(),\n source: z.string().optional(),\n createdAt: z.string().optional(),\n updatedAt: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n vectorId: z.string().optional(),\n});\n\nexport type KBDocument = z.infer<typeof KBDocumentSchema>;\n\n/**\n * KB list response data schema\n */\nexport const KBListDataSchema = z.object({\n documents: z.array(KBDocumentSchema),\n total: z.number().optional(),\n cursor: z.string().nullable().optional(),\n hasMore: z.boolean().optional(),\n});\n\nexport type KBListData = z.infer<typeof KBListDataSchema>;\n\n/**\n * KB list response schema\n */\nexport const KBListResponseSchema = createResponseSchema(KBListDataSchema);\n\nexport type KBListResponse = z.infer<typeof KBListResponseSchema>;\n\n/**\n * KB ingest response data schema\n */\nexport const KBIngestDataSchema = z.object({\n documentId: z.string(),\n vectorId: z.string().optional(),\n chunksCreated: z.number().optional(),\n status: z.enum(['pending', 'processing', 'complete', 'failed']).optional(),\n});\n\nexport type KBIngestData = z.infer<typeof KBIngestDataSchema>;\n\n/**\n * KB ingest response schema\n */\nexport const KBIngestResponseSchema = createResponseSchema(KBIngestDataSchema);\n\nexport type KBIngestResponse = z.infer<typeof KBIngestResponseSchema>;\n\n/**\n * Discovery endpoint schema\n */\nexport const DiscoveryEndpointSchema = z.object({\n name: z.string(),\n path: z.string(),\n methods: z.array(z.string()),\n description: z.string().optional(),\n parameters: z.array(z.record(z.string(), z.unknown())).optional(),\n});\n\nexport type DiscoveryEndpoint = z.infer<typeof DiscoveryEndpointSchema>;\n\n/**\n * Discovery response data schema\n */\nexport const DiscoveryDataSchema = z.object({\n version: z.string().optional(),\n endpoints: z.array(DiscoveryEndpointSchema),\n contentTypes: z.array(z.string()).optional(),\n capabilities: z.array(z.string()).optional(),\n});\n\nexport type DiscoveryData = z.infer<typeof DiscoveryDataSchema>;\n\n/**\n * Discovery response schema\n */\nexport const DiscoveryResponseSchema = createResponseSchema(DiscoveryDataSchema);\n\nexport type DiscoveryResponse = z.infer<typeof DiscoveryResponseSchema>;\n\n/**\n * Ingestion job schema\n */\nexport const IngestionJobSchema = z.object({\n jobId: z.string(),\n status: z.enum(['queued', 'processing', 'complete', 'failed']),\n progress: z.number().min(0).max(100).optional(),\n documentsProcessed: z.number().optional(),\n totalDocuments: z.number().optional(),\n error: z.string().nullable().optional(),\n startedAt: z.string().nullable().optional(),\n completedAt: z.string().nullable().optional(),\n});\n\nexport type IngestionJob = z.infer<typeof IngestionJobSchema>;\n\n/**\n * Ingestion job response schema\n */\nexport const IngestionJobResponseSchema = createResponseSchema(IngestionJobSchema);\n\nexport type IngestionJobResponse = z.infer<typeof IngestionJobResponseSchema>;\n","/**\n * WebSocket Message Zod Schemas\n *\n * Schemas for WebSocket communication messages.\n */\n\nimport { z } from 'zod';\n\n/**\n * WebSocket message types\n */\nexport const WSMessageTypeSchema = z.enum([\n 'chat',\n 'chat_response',\n 'stream_start',\n 'stream_chunk',\n 'stream_end',\n 'error',\n 'ping',\n 'pong',\n 'connected',\n 'disconnected',\n 'session_start',\n 'session_end',\n 'typing',\n 'status',\n]);\n\nexport type WSMessageType = z.infer<typeof WSMessageTypeSchema>;\n\n/**\n * Base WebSocket message schema\n */\nexport const WSBaseMessageSchema = z.object({\n type: WSMessageTypeSchema,\n id: z.string().optional(),\n timestamp: z.string().optional(),\n sessionId: z.string().optional(),\n});\n\nexport type WSBaseMessage = z.infer<typeof WSBaseMessageSchema>;\n\n/**\n * Chat message schema (user -> server)\n */\nexport const WSChatMessageSchema = WSBaseMessageSchema.extend({\n type: z.literal('chat'),\n content: z.string(),\n missionId: z.string().optional(),\n projectId: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport type WSChatMessage = z.infer<typeof WSChatMessageSchema>;\n\n/**\n * Chat response schema (server -> client)\n */\nexport const WSChatResponseSchema = WSBaseMessageSchema.extend({\n type: z.literal('chat_response'),\n content: z.string(),\n role: z.enum(['assistant', 'system']).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n usage: z\n .object({\n promptTokens: z.number().optional(),\n completionTokens: z.number().optional(),\n totalTokens: z.number().optional(),\n })\n .optional(),\n});\n\nexport type WSChatResponse = z.infer<typeof WSChatResponseSchema>;\n\n/**\n * Stream start message schema\n */\nexport const WSStreamStartSchema = WSBaseMessageSchema.extend({\n type: z.literal('stream_start'),\n streamId: z.string(),\n});\n\nexport type WSStreamStart = z.infer<typeof WSStreamStartSchema>;\n\n/**\n * Stream chunk message schema\n */\nexport const WSStreamChunkSchema = WSBaseMessageSchema.extend({\n type: z.literal('stream_chunk'),\n streamId: z.string(),\n content: z.string(),\n index: z.number().optional(),\n});\n\nexport type WSStreamChunk = z.infer<typeof WSStreamChunkSchema>;\n\n/**\n * Stream end message schema\n */\nexport const WSStreamEndSchema = WSBaseMessageSchema.extend({\n type: z.literal('stream_end'),\n streamId: z.string(),\n usage: z\n .object({\n promptTokens: z.number().optional(),\n completionTokens: z.number().optional(),\n totalTokens: z.number().optional(),\n })\n .optional(),\n});\n\nexport type WSStreamEnd = z.infer<typeof WSStreamEndSchema>;\n\n/**\n * Error message schema\n */\nexport const WSErrorMessageSchema = WSBaseMessageSchema.extend({\n type: z.literal('error'),\n code: z.string(),\n message: z.string(),\n details: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport type WSErrorMessage = z.infer<typeof WSErrorMessageSchema>;\n\n/**\n * Ping/Pong message schema\n */\nexport const WSPingPongSchema = WSBaseMessageSchema.extend({\n type: z.enum(['ping', 'pong']),\n});\n\nexport type WSPingPong = z.infer<typeof WSPingPongSchema>;\n\n/**\n * Connected message schema\n */\nexport const WSConnectedSchema = WSBaseMessageSchema.extend({\n type: z.literal('connected'),\n connectionId: z.string().optional(),\n serverVersion: z.string().optional(),\n});\n\nexport type WSConnected = z.infer<typeof WSConnectedSchema>;\n\n/**\n * Status message schema\n */\nexport const WSStatusSchema = WSBaseMessageSchema.extend({\n type: z.literal('status'),\n status: z.enum(['ready', 'busy', 'processing', 'idle']),\n message: z.string().optional(),\n});\n\nexport type WSStatus = z.infer<typeof WSStatusSchema>;\n\n/**\n * Union of all WebSocket message types\n */\nexport const WSMessageSchema = z.discriminatedUnion('type', [\n WSChatMessageSchema,\n WSChatResponseSchema,\n WSStreamStartSchema,\n WSStreamChunkSchema,\n WSStreamEndSchema,\n WSErrorMessageSchema,\n WSPingPongSchema.extend({ type: z.literal('ping') }),\n WSPingPongSchema.extend({ type: z.literal('pong') }),\n WSConnectedSchema,\n WSStatusSchema,\n]);\n\nexport type WSMessage = z.infer<typeof WSMessageSchema>;\n\n/**\n * Safe parse result type\n */\nexport type WSParseResult =\n | { success: true; data: WSMessage }\n | { success: false; error: z.ZodError };\n\n/**\n * Parse and validate a WebSocket message\n */\nexport function parseWSMessage(data: string): WSMessage {\n const parsed: unknown = JSON.parse(data);\n return WSMessageSchema.parse(parsed);\n}\n\n/**\n * Safe parse for WebSocket messages (returns result object)\n */\nexport function safeParseWSMessage(data: string): WSParseResult {\n try {\n const parsed: unknown = JSON.parse(data);\n const result = WSMessageSchema.safeParse(parsed);\n if (result.success) {\n return { success: true, data: result.data };\n }\n return { success: false, error: result.error };\n } catch {\n return {\n success: false,\n error: new z.ZodError([\n {\n code: 'custom',\n message: 'Invalid JSON',\n path: [],\n },\n ]),\n };\n }\n}\n","/**\n * GitHub Proxy Zod Schemas\n *\n * Schemas for GitHub proxy operations.\n */\n\nimport { z } from 'zod';\nimport { createResponseSchema } from './common';\n\n/**\n * GitHub file info schema\n */\nexport const GithubFileInfoSchema = z.object({\n name: z.string(),\n path: z.string(),\n sha: z.string(),\n size: z.number(),\n type: z.enum(['file', 'dir', 'symlink', 'submodule']),\n url: z.string().optional(),\n html_url: z.string().optional(),\n git_url: z.string().optional(),\n download_url: z.string().nullable().optional(),\n content: z.string().optional(),\n encoding: z.string().optional(),\n});\n\nexport type GithubFileInfo = z.infer<typeof GithubFileInfoSchema>;\n\n/**\n * GitHub repository info schema\n */\nexport const GithubRepoInfoSchema = z.object({\n id: z.number(),\n name: z.string(),\n full_name: z.string(),\n private: z.boolean(),\n owner: z.object({\n login: z.string(),\n id: z.number(),\n avatar_url: z.string().optional(),\n type: z.string().optional(),\n }),\n html_url: z.string(),\n description: z.string().nullable().optional(),\n fork: z.boolean().optional(),\n created_at: z.string().optional(),\n updated_at: z.string().optional(),\n pushed_at: z.string().optional(),\n size: z.number().optional(),\n stargazers_count: z.number().optional(),\n watchers_count: z.number().optional(),\n language: z.string().nullable().optional(),\n default_branch: z.string().optional(),\n visibility: z.string().optional(),\n});\n\nexport type GithubRepoInfo = z.infer<typeof GithubRepoInfoSchema>;\n\n/**\n * GitHub branch info schema\n */\nexport const GithubBranchInfoSchema = z.object({\n name: z.string(),\n commit: z.object({\n sha: z.string(),\n url: z.string().optional(),\n }),\n protected: z.boolean().optional(),\n});\n\nexport type GithubBranchInfo = z.infer<typeof GithubBranchInfoSchema>;\n\n/**\n * GitHub commit info schema\n */\nexport const GithubCommitInfoSchema = z.object({\n sha: z.string(),\n message: z.string().optional(),\n author: z\n .object({\n name: z.string().optional(),\n email: z.string().optional(),\n date: z.string().optional(),\n })\n .optional(),\n committer: z\n .object({\n name: z.string().optional(),\n email: z.string().optional(),\n date: z.string().optional(),\n })\n .optional(),\n url: z.string().optional(),\n html_url: z.string().optional(),\n});\n\nexport type GithubCommitInfo = z.infer<typeof GithubCommitInfoSchema>;\n\n/**\n * GitHub proxy file response data schema\n */\nexport const GithubFileDataSchema = z.object({\n file: GithubFileInfoSchema,\n content: z.string().optional(),\n encoding: z.string().optional(),\n});\n\nexport type GithubFileData = z.infer<typeof GithubFileDataSchema>;\n\n/**\n * GitHub proxy file response schema\n */\nexport const GithubFileResponseSchema = createResponseSchema(GithubFileDataSchema);\n\nexport type GithubFileResponse = z.infer<typeof GithubFileResponseSchema>;\n\n/**\n * GitHub proxy directory response data schema\n */\nexport const GithubDirectoryDataSchema = z.object({\n entries: z.array(GithubFileInfoSchema),\n path: z.string(),\n});\n\nexport type GithubDirectoryData = z.infer<typeof GithubDirectoryDataSchema>;\n\n/**\n * GitHub proxy directory response schema\n */\nexport const GithubDirectoryResponseSchema = createResponseSchema(GithubDirectoryDataSchema);\n\nexport type GithubDirectoryResponse = z.infer<typeof GithubDirectoryResponseSchema>;\n\n/**\n * GitHub proxy repo info response data schema\n */\nexport const GithubRepoDataSchema = z.object({\n repository: GithubRepoInfoSchema,\n});\n\nexport type GithubRepoData = z.infer<typeof GithubRepoDataSchema>;\n\n/**\n * GitHub proxy repo info response schema\n */\nexport const GithubRepoResponseSchema = createResponseSchema(GithubRepoDataSchema);\n\nexport type GithubRepoResponse = z.infer<typeof GithubRepoResponseSchema>;\n\n/**\n * GitHub proxy branches response data schema\n */\nexport const GithubBranchesDataSchema = z.object({\n branches: z.array(GithubBranchInfoSchema),\n});\n\nexport type GithubBranchesData = z.infer<typeof GithubBranchesDataSchema>;\n\n/**\n * GitHub proxy branches response schema\n */\nexport const GithubBranchesResponseSchema = createResponseSchema(GithubBranchesDataSchema);\n\nexport type GithubBranchesResponse = z.infer<typeof GithubBranchesResponseSchema>;\n\n/**\n * GitHub proxy commits response data schema\n */\nexport const GithubCommitsDataSchema = z.object({\n commits: z.array(GithubCommitInfoSchema),\n});\n\nexport type GithubCommitsData = z.infer<typeof GithubCommitsDataSchema>;\n\n/**\n * GitHub proxy commits response schema\n */\nexport const GithubCommitsResponseSchema = createResponseSchema(GithubCommitsDataSchema);\n\nexport type GithubCommitsResponse = z.infer<typeof GithubCommitsResponseSchema>;\n"]}
|