{"version":3,"file":"opencode-headers.d.ts","sourceRoot":"","sources":["../../src/providers/opencode-headers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,eAAe,EAAiB,MAAM,aAAa,CAAC;AAiBnF,oFAAoF;AACpF,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,eAAe,GAAG,eAAe,CAMnF","sourcesContent":["import type { ProviderHeaders, ProviderStreams, StreamOptions } from \"../types.ts\";\n\nconst OPENCODE_SESSION_HEADER = \"x-opencode-session\";\n\nfunction hasHeader(headers: ProviderHeaders | undefined, name: string): boolean {\n\tconst expected = name.toLowerCase();\n\treturn Object.keys(headers ?? {}).some((key) => key.toLowerCase() === expected);\n}\n\nfunction withSessionHeader<TOptions extends StreamOptions>(options: TOptions | undefined): TOptions | undefined {\n\tif (!options?.sessionId || hasHeader(options.headers, OPENCODE_SESSION_HEADER)) return options;\n\treturn {\n\t\t...options,\n\t\theaders: { ...options.headers, [OPENCODE_SESSION_HEADER]: options.sessionId },\n\t};\n}\n\n/** Adds OpenCode's required per-conversation routing header before API dispatch. */\nexport function withOpenCodeSessionHeader(streams: ProviderStreams): ProviderStreams {\n\treturn {\n\t\t...streams,\n\t\tstream: (model, context, options) => streams.stream(model, context, withSessionHeader(options)),\n\t\tstreamSimple: (model, context, options) => streams.streamSimple(model, context, withSessionHeader(options)),\n\t};\n}\n"]}