llm-stream-assemble 1.2.0 → 1.3.5

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/adapters/errors.ts","../../src/adapters/utils.ts","../../src/adapters/openai-chat/parser/errors.ts","../../src/adapters/openai-chat/parser/chunks.ts","../../src/adapters/openai-chat/parser/stream-parser.ts","../../src/adapters/openai-chat/parser/response.ts","../../src/adapters/openai-chat/parser/types.ts","../../src/adapters/openai-chat/parser/index.ts","../../src/adapters/openai-compatible.ts"],"names":[],"mappings":";;;AAQO,SAAS,kBAAA,CAAmB,OAAe,OAAA,EAAwB;AACzE,EAAA,OAAO,IAAI,KAAA,CAAM,CAAA,qBAAA,EAAwB,KAAK,CAAA,EAAA,EAAK,OAAO,CAAA,CAAE,CAAA;AAC7D;AAEO,SAAS,mBAAA,CAAoB,KAAA,EAAc,WAAA,GAAc,KAAA,EAAmB;AAClF,EAAA,OAAO;AAAA,IACN,EAAE,IAAA,EAAM,gBAAA,EAAkB,KAAA,EAAO,WAAA,EAAY;AAAA,IAC7C,EAAE,IAAA,EAAM,QAAA,EAAU,MAAA,EAAQ,OAAA;AAAQ,GACnC;AACD;AAMO,SAAS,8BAAA,CACf,YAAA,EACA,KAAA,EACA,WAAA,EACA,eAAA,EACa;AACb,EAAA,MAAM,OAAA,GAAU,QAAA,CAAS,YAAA,CAAa,OAAO,CAAA,IAAK,eAAA;AAClD,EAAA,MAAM,KAAA,GAAQ,kBAAA,CAAmB,KAAA,EAAO,OAAO,CAAA;AAC/C,EAAA,MAAA,CAAO,cAAA,CAAe,OAAO,KAAA,EAAO;AAAA,IACnC,KAAA,EAAO,YAAA;AAAA,IACP,UAAA,EAAY;AAAA,GACZ,CAAA;AACD,EAAA,OAAO,mBAAA,CAAoB,OAAO,WAAW,CAAA;AAC9C;;;AChCO,SAAS,SAAS,KAAA,EAAkD;AAC1E,EAAA,OAAO,OAAO,UAAU,QAAA,IAAY,KAAA,KAAU,QAAQ,CAAC,KAAA,CAAM,QAAQ,KAAK,CAAA;AAC3E;AAEO,SAAS,SAAS,KAAA,EAAoC;AAC5D,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,GAAW,KAAA,GAAQ,MAAA;AAC5C;AAEO,SAAS,SAAS,KAAA,EAAoC;AAC5D,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,QAAA,CAAS,KAAK,IAAI,KAAA,GAAQ,MAAA;AACtE;AAEO,SAAS,iBAAiB,KAAA,EAA0C;AAC1E,EAAA,OAAO,MAAA,CAAO,WAAA;AAAA,IACb,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAA,CAAE,MAAA,CAAO,CAAC,GAAG,KAAK,CAAA,KAAM,KAAA,KAAU,MAAS;AAAA,GAChE;AACD;AAEO,SAAS,oBAAA,CAAqB,SAAiB,OAAA,EAAwB;AAC7E,EAAA,OAAO,kBAAA,CAAmB,SAAS,OAAO,CAAA;AAC3C;AAEO,SAAS,oBAA8B,MAAA,EAI5B;AACjB,EAAA,OAAO;AAAA,IACN,WAAW,GAAA,EAAK;AACf,MAAA,OAAO,MAAA,CAAO,MAAA,CAAO,UAAA,CAAW,GAAG,CAAA;AAAA,IACpC,CAAA;AAAA,IACA,cAAc,IAAA,EAAM;AACnB,MAAA,OAAO,MAAA,CAAO,aAAA,CAAc,IAAA,EAAM,MAAA,CAAO,OAAO,CAAA;AAAA,IACjD;AAAA,GACD;AACD;AAEO,SAAS,gBAAA,CAAiB,KAAa,OAAA,EAA0B;AACvE,EAAA,IAAI;AACH,IAAA,OAAO,IAAA,CAAK,MAAM,GAAG,CAAA;AAAA,EACtB,SAAS,KAAA,EAAO;AACf,IAAA,MAAM,UAAU,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK,CAAA;AACrE,IAAA,MAAM,oBAAA,CAAqB,SAAS,OAAO,CAAA;AAAA,EAC5C;AACD;;;AC3CO,SAAS,oBAAA,CACf,SACA,OAAA,EACsC;AACtC,EAAA,IAAI,QAAA,CAAS,OAAA,CAAQ,KAAK,CAAA,SAAU,OAAA,CAAQ,KAAA;AAC5C,EAAA,IAAI,CAAC,OAAA,CAAQ,eAAA,EAAiB,OAAO,MAAA;AAErC,EAAA,MAAM,WAAA,GAAc,QAAA,CAAS,OAAA,CAAQ,KAAK,CAAA;AAC1C,EAAA,IAAI,WAAA,EAAa,OAAO,EAAE,OAAA,EAAS,WAAA,EAAY;AAE/C,EAAA,MAAM,YAAA,GAAe,QAAA,CAAS,OAAA,CAAQ,MAAM,CAAA;AAC5C,EAAA,IAAI,YAAA,EAAc,OAAO,EAAE,OAAA,EAAS,YAAA,EAAa;AACjD,EAAA,IAAI,QAAA,CAAS,OAAA,CAAQ,MAAM,CAAA,SAAU,OAAA,CAAQ,MAAA;AAE7C,EAAA,MAAM,eAAA,GAAkB,QAAA,CAAS,OAAA,CAAQ,OAAO,CAAA;AAChD,EAAA,MAAM,YAAA,GAAe,QAAA,CAAS,OAAA,CAAQ,IAAI,CAAA;AAC1C,EAAA,IAAI,mBAAmB,YAAA,KAAiB,OAAA,EAAS,OAAO,EAAE,SAAS,eAAA,EAAgB;AAEnF,EAAA,OAAO,MAAA;AACR;AAEO,SAAS,yBAAA,CACf,YAAA,EACA,WAAA,EACA,OAAA,EACa;AACb,EAAA,OAAO,8BAAA;AAAA,IACN,YAAA;AAAA,IACA,OAAA,CAAQ,WAAA;AAAA,IACR,WAAA;AAAA,IACA;AAAA,GACD;AACD;AAEO,SAAS,uBAAA,CAAwB,KAAA,EAAe,OAAA,GAAU,wBAAA,EAAiC;AACjG,EAAA,MAAM,kBAAA,CAAmB,OAAO,OAAO,CAAA;AACxC;AAEO,SAAS,4BAA4B,OAAA,EAAqD;AAChG,EAAA,MAAM,kBAAA;AAAA,IACL,CAAA,EAAG,QAAQ,WAAW,CAAA,WAAA,CAAA;AAAA,IACtB;AAAA,GACD;AACD;AAEO,SAAS,+BACf,OAAA,EACQ;AACR,EAAA,MAAM,kBAAA;AAAA,IACL,CAAA,EAAG,QAAQ,WAAW,CAAA,cAAA,CAAA;AAAA,IACtB;AAAA,GACD;AACD;;;ACpDO,SAAS,eAAe,OAAA,EAA8C;AAC5E,EAAA,MAAM,SAAqB,EAAC;AAC5B,EAAA,MAAM,EAAA,GAAK,QAAA,CAAS,OAAA,CAAQ,EAAE,CAAA;AAC9B,EAAA,IAAI,IAAI,MAAA,CAAO,IAAA,CAAK,EAAE,IAAA,EAAM,eAAA,EAAiB,IAAI,CAAA;AAEjD,EAAA,MAAM,QAAA,GAAoD,EAAE,IAAA,EAAM,UAAA,EAAY,KAAK,OAAA,EAAQ;AAC3F,EAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,OAAA,CAAQ,KAAK,CAAA;AACpC,EAAA,MAAM,OAAA,GAAU,QAAA,CAAS,OAAA,CAAQ,OAAO,CAAA;AACxC,EAAA,IAAI,KAAA,WAAgB,KAAA,GAAQ,KAAA;AAC5B,EAAA,IAAI,EAAA,WAAa,UAAA,GAAa,EAAA;AAC9B,EAAA,IAAI,OAAA,KAAY,MAAA,EAAW,QAAA,CAAS,OAAA,GAAU,OAAA;AAC9C,EAAA,IAAI,SAAS,KAAA,IAAS,QAAA,CAAS,UAAA,IAAc,QAAA,CAAS,YAAY,MAAA,EAAW;AAC5E,IAAA,MAAA,CAAO,KAAK,QAAQ,CAAA;AAAA,EACrB;AACA,EAAA,OAAO,MAAA;AACR;AAEO,SAAS,YAAY,OAAA,EAA2C;AACtE,EAAA,OACC,QAAA,CAAS,OAAA,CAAQ,EAAE,CAAA,KAAM,MAAA,IACzB,QAAA,CAAS,OAAA,CAAQ,KAAK,CAAA,KAAM,MAAA,IAC5B,QAAA,CAAS,OAAA,CAAQ,OAAO,CAAA,KAAM,MAAA;AAEhC;AAEO,SAAS,uBAAuB,OAAA,EAA2C;AACjF,EAAA,OACC,WAAA,CAAY,OAAO,CAAA,IACnB,OAAO,QAAQ,MAAA,KAAW,QAAA,IAC1B,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ,OAAO,CAAA,IAC7B,QAAA,CAAS,QAAQ,KAAK,CAAA;AAExB;AAEO,SAAS,eAAA,CACf,QACA,OAAA,EACa;AACb,EAAA,MAAM,SAAqB,EAAC;AAC5B,EAAA,MAAM,OAAA,uBAAc,GAAA,CAAI;AAAA,IACvB,WAAA;AAAA,IACA,mBAAA;AAAA,IACA,mBAAA;AAAA,IACA,GAAG,OAAA,CAAQ;AAAA,GACX,CAAA;AACD,EAAA,KAAA,MAAW,SAAS,OAAA,EAAS;AAC5B,IAAA,MAAM,IAAA,GAAO,QAAA,CAAS,MAAA,CAAO,KAAK,CAAC,CAAA;AACnC,IAAA,IAAI,CAAC,IAAA,EAAM;AACX,IAAA,MAAA,CAAO,IAAA,CAAK;AAAA,MACX,IAAA,EAAM,iBAAA;AAAA,MACN,IAAA;AAAA,MACA,OAAA,EAAS,KAAA,KAAU,mBAAA,GAAsB,SAAA,GAAY;AAAA,KACrD,CAAA;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACR;AAEO,SAAS,kBAAA,CACf,KAAA,EACA,WAAA,EACA,OAAA,EACa;AACb,EAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,SAAkB,EAAC;AACnD,EAAA,MAAM,YAAA,GAAe,sBAAsB,KAAK,CAAA;AAChD,EAAA,IAAI,YAAA,EAAc;AACjB,IAAA,OAAO,CAAC,gBAAgB,EAAE,IAAA,EAAM,UAAU,MAAA,EAAQ,YAAA,EAAa,EAAG,WAAW,CAAC,CAAA;AAAA,EAC/E;AACA,EAAA,OAAO;AAAA,IACN;AAAA,MACC,IAAA,EAAM,gBAAA;AAAA,MACN,KAAA,EAAO,kBAAA;AAAA,QACN,OAAA,CAAQ,WAAA;AAAA,QACR,CAAA,yCAAA,EAA4C,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,OAC1D;AAAA,MACA,WAAA,EAAa;AAAA,KACd;AAAA,IACA,gBAAgB,EAAE,IAAA,EAAM,UAAU,MAAA,EAAQ,OAAA,IAAW,WAAW;AAAA,GACjE;AACD;AAEO,SAAS,UAAA,CACf,OACA,OAAA,EACuB;AACvB,EAAA,IAAI,CAAC,QAAA,CAAS,KAAK,CAAA,EAAG,OAAO,MAAA;AAC7B,EAAA,MAAM,WAAA,GAAc,WAAA,CAAY,KAAA,EAAO,OAAA,CAAQ,qBAAqB,CAAA;AACpE,EAAA,MAAM,YAAA,GAAe,WAAA,CAAY,KAAA,EAAO,OAAA,CAAQ,sBAAsB,CAAA;AACtE,EAAA,MAAM,UAAU,QAAA,CAAS,KAAA,CAAM,yBAAyB,CAAA,GACrD,MAAM,yBAAA,GACN,MAAA;AACH,EAAA,MAAM,eAAA,GAAkB,OAAA,GAAU,QAAA,CAAS,OAAA,CAAQ,gBAAgB,CAAA,GAAI,MAAA;AACvE,EAAA,IAAI,WAAA,KAAgB,MAAA,IAAa,YAAA,KAAiB,MAAA,IAAa,oBAAoB,MAAA,EAAW;AAC7F,IAAA,OAAO,MAAA;AAAA,EACR;AACA,EAAA,MAAM,KAAA,GAA8C,EAAE,IAAA,EAAM,OAAA,EAAS,KAAK,KAAA,EAAM;AAChF,EAAA,IAAI,WAAA,KAAgB,MAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,EAAA,IAAI,YAAA,KAAiB,MAAA,EAAW,KAAA,CAAM,YAAA,GAAe,YAAA;AACrD,EAAA,IAAI,eAAA,KAAoB,MAAA,EAAW,KAAA,CAAM,eAAA,GAAkB,eAAA;AAC3D,EAAA,OAAO,KAAA;AACR;AAEO,SAAS,cAAA,CACf,MAAA,EACA,QAAA,EACA,OAAA,EACqB;AACrB,EAAA,OAAO,SAAS,MAAA,CAAO,KAAK,CAAA,KAAM,OAAA,CAAQ,4BAA4B,QAAA,GAAW,MAAA,CAAA;AAClF;AAEO,SAAS,eAAe,KAAA,EAKlB;AACZ,EAAA,OAAO,gBAAA,CAAiB;AAAA,IACvB,IAAA,EAAM,YAAA;AAAA,IACN,IAAI,KAAA,CAAM,EAAA;AAAA,IACV,MAAM,KAAA,CAAM,IAAA;AAAA,IACZ,OAAO,KAAA,CAAM,KAAA;AAAA,IACb,aAAa,KAAA,CAAM;AAAA,GACnB,CAAA;AACF;AAEO,SAAS,cAAc,KAAA,EAKjB;AACZ,EAAA,OAAO,gBAAA,CAAiB;AAAA,IACvB,IAAA,EAAM,iBAAA;AAAA,IACN,IAAI,KAAA,CAAM,EAAA;AAAA,IACV,OAAO,KAAA,CAAM,KAAA;AAAA,IACb,OAAO,KAAA,CAAM,KAAA;AAAA,IACb,aAAa,KAAA,CAAM;AAAA,GACnB,CAAA;AACF;AAEO,SAAS,cAAc,KAAA,EAIjB;AACZ,EAAA,OAAO,gBAAA,CAAiB;AAAA,IACvB,IAAA,EAAM,WAAA;AAAA,IACN,IAAI,KAAA,CAAM,EAAA;AAAA,IACV,OAAO,KAAA,CAAM,KAAA;AAAA,IACb,aAAa,KAAA,CAAM;AAAA,GACnB,CAAA;AACF;AAEO,SAAS,eAAA,CAAoC,OAAU,WAAA,EAAoC;AACjG,EAAA,IAAI,WAAA,KAAgB,QAAW,OAAO,KAAA;AACtC,EAAA,OAAO,gBAAA,CAAiB,EAAE,GAAG,KAAA,EAAO,aAAa,CAAA;AAClD;AAEO,SAAS,OAAA,CACf,WAAA,EACA,cAAA,EACA,SAAA,EACS;AACT,EAAA,OAAO,GAAG,SAAA,CAAU,WAAA,EAAa,cAAc,CAAC,IAAI,SAAS,CAAA,CAAA;AAC9D;AAEO,SAAS,SAAA,CAAU,aAAiC,cAAA,EAAgC;AAC1F,EAAA,OAAO,gBAAgB,MAAA,GAAY,CAAA,eAAA,EAAkB,cAAc,CAAA,CAAA,GAAK,OAAO,WAAW,CAAA;AAC3F;AAEA,SAAS,sBAAsB,KAAA,EAA0C;AACxE,EAAA,IACC,UAAU,MAAA,IACV,KAAA,KAAU,YACV,KAAA,KAAU,gBAAA,IACV,UAAU,YAAA,EACT;AACD,IAAA,OAAO,KAAA;AAAA,EACR;AACA,EAAA,IAAI,KAAA,KAAU,iBAAiB,OAAO,YAAA;AACtC,EAAA,OAAO,MAAA;AACR;AAEA,SAAS,WAAA,CAAY,QAAiC,MAAA,EAAsC;AAC3F,EAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC3B,IAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,MAAA,CAAO,KAAK,CAAC,CAAA;AACpC,IAAA,IAAI,KAAA,KAAU,QAAW,OAAO,KAAA;AAAA,EACjC;AACA,EAAA,OAAO,MAAA;AACR;;;AC1KO,IAAM,uBAAN,MAA2B;AAAA,EAKjC,YAA6B,OAAA,EAA8C;AAA9C,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAAA,EAA+C;AAAA,EAA/C,OAAA;AAAA,EAJrB,eAAA,GAAkB,KAAA;AAAA,EACT,KAAA,uBAAY,GAAA,EAAuB;AAAA,EACnC,aAAA,uBAAoB,GAAA,EAAY;AAAA,EAIjD,WAAW,GAAA,EAAyB;AACnC,IAAA,IAAI,GAAA,CAAI,IAAA,EAAK,KAAM,QAAA,SAAiB,EAAC;AAErC,IAAA,MAAM,UAAU,gBAAA,CAAiB,GAAA,EAAK,GAAG,IAAA,CAAK,OAAA,CAAQ,WAAW,CAAA,WAAA,CAAa,CAAA;AAC9E,IAAA,IAAI,CAAC,QAAA,CAAS,OAAO,CAAA,EAAG;AACvB,MAAA,uBAAA,CAAwB,CAAA,EAAG,IAAA,CAAK,OAAA,CAAQ,WAAW,CAAA,WAAA,CAAa,CAAA;AAAA,IACjE;AAEA,IAAA,MAAM,UAAA,GAAa,oBAAA,CAAqB,OAAA,EAAS,IAAA,CAAK,OAAO,CAAA;AAC7D,IAAA,IAAI,YAAY,OAAO,yBAAA,CAA0B,UAAA,EAAY,KAAA,EAAO,KAAK,OAAO,CAAA;AAEhF,IAAA,IAAI,CAAC,IAAA,CAAK,OAAA,CAAQ,eAAA,IAAmB,QAAA,CAAS,OAAA,CAAQ,KAAK,CAAA,IAAK,CAAC,QAAA,CAAS,OAAA,CAAQ,KAAK,CAAA,EAAG;AACzF,MAAA,OAAO,EAAC;AAAA,IACT;AAEA,IAAA,IAAI,KAAK,OAAA,CAAQ,0BAAA,IAA8B,CAAC,IAAA,CAAK,mBAAA,CAAoB,OAAO,CAAA,EAAG;AAClF,MAAA,2BAAA,CAA4B,KAAK,OAAO,CAAA;AAAA,IACzC;AAEA,IAAA,MAAM,SAAqB,EAAC;AAC5B,IAAA,IAAI,CAAC,IAAA,CAAK,eAAA,IAAmB,WAAA,CAAY,OAAO,CAAA,EAAG;AAClD,MAAA,MAAA,CAAO,IAAA,CAAK,GAAG,cAAA,CAAe,OAAO,CAAC,CAAA;AACtC,MAAA,IAAA,CAAK,eAAA,GAAkB,IAAA;AAAA,IACxB;AAEA,IAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,OAAA,CAAQ,KAAA,EAAO,KAAK,OAAO,CAAA;AACpD,IAAA,IAAI,KAAA,EAAO,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA;AAE5B,IAAA,MAAM,OAAA,GAAU,MAAM,OAAA,CAAQ,OAAA,CAAQ,OAAO,CAAA,GAAI,OAAA,CAAQ,UAAU,EAAC;AACpE,IAAA,KAAA,IAAS,WAAW,CAAA,EAAG,QAAA,GAAW,OAAA,CAAQ,MAAA,EAAQ,YAAY,CAAA,EAAG;AAChE,MAAA,MAAM,MAAA,GAAS,QAAQ,QAAQ,CAAA;AAC/B,MAAA,IAAI,CAAC,QAAA,CAAS,MAAM,CAAA,EAAG;AACvB,MAAA,MAAA,CAAO,KAAK,GAAG,IAAA,CAAK,YAAA,CAAa,MAAA,EAAQ,QAAQ,CAAC,CAAA;AAAA,IACnD;AAEA,IAAA,OAAO,MAAA;AAAA,EACR;AAAA,EAEQ,oBAAoB,OAAA,EAA2C;AACtE,IAAA,OACC,WAAA,CAAY,OAAO,CAAA,IACnB,OAAO,QAAQ,MAAA,KAAW,QAAA,IAC1B,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ,OAAO,CAAA,IAC7B,QAAA,CAAS,QAAQ,KAAK,CAAA;AAAA,EAExB;AAAA,EAEQ,YAAA,CAAa,QAAiC,QAAA,EAA8B;AACnF,IAAA,MAAM,WAAA,GAAc,cAAA,CAAe,MAAA,EAAQ,QAAA,EAAU,KAAK,OAAO,CAAA;AACjE,IAAA,MAAM,SAAqB,EAAC;AAC5B,IAAA,MAAM,QAAQ,QAAA,CAAS,MAAA,CAAO,KAAK,CAAA,GAAI,OAAO,KAAA,GAAQ,MAAA;AAEtD,IAAA,IAAI,KAAA,EAAO;AACV,MAAA,MAAA,CAAO,KAAK,GAAG,IAAA,CAAK,YAAY,KAAA,EAAO,WAAA,EAAa,QAAQ,CAAC,CAAA;AAAA,IAC9D;AAEA,IAAA,MAAA,CAAO,IAAA,CAAK,GAAG,kBAAA,CAAmB,MAAA,CAAO,eAAe,WAAA,EAAa,IAAA,CAAK,OAAO,CAAC,CAAA;AAClF,IAAA,OAAO,MAAA;AAAA,EACR;AAAA,EAEQ,WAAA,CACP,KAAA,EACA,WAAA,EACA,cAAA,EACa;AACb,IAAA,MAAM,SAAqB,EAAC;AAC5B,IAAA,MAAM,OAAA,GAAU,QAAA,CAAS,KAAA,CAAM,OAAO,CAAA;AACtC,IAAA,IAAI,OAAA,IAAW,OAAA,CAAQ,MAAA,GAAS,CAAA,EAAG;AAClC,MAAA,MAAA,CAAO,IAAA;AAAA,QACN,KAAK,OAAA,CAAQ,QAAA,GACV,EAAE,IAAA,EAAM,cAAc,KAAA,EAAO,OAAA,EAAQ,GACrC,eAAA,CAAgB,EAAE,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,OAAA,IAAW,WAAW;AAAA,OACtE;AAAA,IACD;AAEA,IAAA,MAAM,OAAA,GAAU,QAAA,CAAS,KAAA,CAAM,OAAO,CAAA;AACtC,IAAA,IAAI,OAAA,IAAW,OAAA,CAAQ,MAAA,GAAS,CAAA,EAAG;AAClC,MAAA,MAAA,CAAO,KAAK,EAAE,IAAA,EAAM,eAAA,EAAiB,IAAA,EAAM,SAAS,CAAA;AAAA,IACrD;AAEA,IAAA,MAAA,CAAO,KAAK,GAAG,eAAA,CAAgB,KAAA,EAAO,IAAA,CAAK,OAAO,CAAC,CAAA;AACnD,IAAA,MAAA,CAAO,IAAA,CAAK,GAAG,IAAA,CAAK,cAAA,CAAe,MAAM,UAAA,EAAY,WAAA,EAAa,cAAc,CAAC,CAAA;AACjF,IAAA,MAAA,CAAO,IAAA,CAAK,GAAG,IAAA,CAAK,oBAAA,CAAqB,MAAM,aAAA,EAAe,WAAA,EAAa,cAAc,CAAC,CAAA;AAC1F,IAAA,OAAO,MAAA;AAAA,EACR;AAAA,EAEQ,cAAA,CACP,KAAA,EACA,WAAA,EACA,cAAA,EACa;AACb,IAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,SAAU,EAAC;AACnC,IAAA,MAAM,SAAqB,EAAC;AAE5B,IAAA,KAAA,IAAS,WAAW,CAAA,EAAG,QAAA,GAAW,KAAA,CAAM,MAAA,EAAQ,YAAY,CAAA,EAAG;AAC9D,MAAA,MAAM,QAAA,GAAW,MAAM,QAAQ,CAAA;AAC/B,MAAA,IAAI,CAAC,QAAA,CAAS,QAAQ,CAAA,EAAG;AAEzB,MAAA,MAAM,SAAA,GAAY,QAAA,CAAS,QAAA,CAAS,KAAK,CAAA,IAAK,QAAA;AAC9C,MAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,WAAA,EAAa,cAAA,EAAgB,SAAS,CAAA;AAC1D,MAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,SAAA,CAAU,GAAG,CAAA;AAChC,MAAA,MAAM,EAAA,GAAK,QAAA,CAAS,QAAA,CAAS,EAAE,CAAA;AAC/B,MAAA,MAAM,KAAK,QAAA,CAAS,QAAA,CAAS,QAAQ,CAAA,GAAI,SAAS,QAAA,GAAW,MAAA;AAC7D,MAAA,MAAM,IAAA,GAAO,QAAA,CAAS,EAAA,EAAI,IAAI,CAAA;AAC9B,MAAA,MAAM,IAAA,GAAO,QAAA,CAAS,EAAA,EAAI,SAAS,CAAA;AAEnC,MAAA,IAAI,EAAA,QAAU,EAAA,GAAK,EAAA;AACnB,MAAA,IAAI,IAAA,QAAY,IAAA,GAAO,IAAA;AAEvB,MAAA,IAAI,CAAC,MAAM,YAAA,KAAiB,EAAA,IAAM,QAAS,IAAA,IAAQ,IAAA,CAAK,SAAS,CAAA,CAAA,EAAK;AACrE,QAAA,MAAA,CAAO,IAAA;AAAA,UACN,cAAA,CAAe;AAAA,YACd,IAAI,KAAA,CAAM,EAAA;AAAA,YACV,MAAM,KAAA,CAAM,IAAA;AAAA,YACZ,KAAA,EAAO,SAAA;AAAA,YACP;AAAA,WACA;AAAA,SACF;AACA,QAAA,KAAA,CAAM,YAAA,GAAe,IAAA;AAAA,MACtB;AAEA,MAAA,IAAI,IAAA,IAAQ,IAAA,CAAK,MAAA,GAAS,CAAA,EAAG;AAC5B,QAAA,KAAA,CAAM,YAAA,GAAe,IAAA;AACrB,QAAA,MAAA,CAAO,IAAA;AAAA,UACN,aAAA,CAAc;AAAA,YACb,IAAI,KAAA,CAAM,EAAA;AAAA,YACV,KAAA,EAAO,IAAA;AAAA,YACP,KAAA,EAAO,SAAA;AAAA,YACP;AAAA,WACA;AAAA,SACF;AAAA,MACD;AAAA,IACD;AAEA,IAAA,OAAO,MAAA;AAAA,EACR;AAAA,EAEQ,oBAAA,CACP,KAAA,EACA,WAAA,EACA,cAAA,EACa;AACb,IAAA,IAAI,CAAC,QAAA,CAAS,KAAK,CAAA,SAAU,EAAC;AAC9B,IAAA,MAAM,SAAqB,EAAC;AAC5B,IAAA,MAAM,IAAA,GAAO,QAAA,CAAS,KAAA,CAAM,IAAI,CAAA;AAChC,IAAA,MAAM,IAAA,GAAO,QAAA,CAAS,KAAA,CAAM,SAAS,CAAA;AACrC,IAAA,MAAM,SAAA,GAAY,SAAA,CAAU,WAAA,EAAa,cAAc,CAAA;AACvD,IAAA,MAAM,KAAK,CAAA,EAAG,IAAA,CAAK,QAAQ,sBAAsB,CAAA,CAAA,EAAI,eAAe,cAAc,CAAA,CAAA;AAElF,IAAA,IAAI,QAAQ,CAAC,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,SAAS,CAAA,EAAG;AAC/C,MAAA,MAAA,CAAO,IAAA,CAAK,eAAA,CAAgB,EAAE,IAAA,EAAM,YAAA,EAAc,EAAA,EAAI,IAAA,EAAM,KAAA,EAAO,CAAA,EAAE,EAAG,WAAW,CAAC,CAAA;AACpF,MAAA,IAAA,CAAK,aAAA,CAAc,IAAI,SAAS,CAAA;AAAA,IACjC;AAEA,IAAA,IAAI,IAAA,IAAQ,IAAA,CAAK,MAAA,GAAS,CAAA,EAAG;AAC5B,MAAA,IAAI,CAAC,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,SAAS,CAAA,EAAG;AACvC,QAAA,MAAA,CAAO,IAAA;AAAA,UACN,eAAA;AAAA,YACC,EAAE,MAAM,YAAA,EAAc,EAAA,EAAI,MAAM,IAAA,IAAQ,SAAA,EAAW,OAAO,CAAA,EAAE;AAAA,YAC5D;AAAA;AACD,SACD;AACA,QAAA,IAAA,CAAK,aAAA,CAAc,IAAI,SAAS,CAAA;AAAA,MACjC;AACA,MAAA,MAAA,CAAO,IAAA;AAAA,QACN,eAAA,CAAgB,EAAE,IAAA,EAAM,iBAAA,EAAmB,EAAA,EAAI,OAAO,IAAA,EAAM,KAAA,EAAO,CAAA,EAAE,EAAG,WAAW;AAAA,OACpF;AAAA,IACD;AAEA,IAAA,OAAO,MAAA;AAAA,EACR;AAAA,EAEQ,UAAU,GAAA,EAAwB;AACzC,IAAA,IAAI,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAG,CAAA;AAC9B,IAAA,IAAI,CAAC,KAAA,EAAO;AACX,MAAA,KAAA,GAAQ,EAAE,IAAA,EAAM,SAAA,EAAW,YAAA,EAAc,KAAA,EAAO,cAAc,KAAA,EAAM;AACpE,MAAA,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAA,EAAK,KAAK,CAAA;AAAA,IAC1B;AACA,IAAA,OAAO,KAAA;AAAA,EACR;AACD,CAAA;;;AC5LO,SAAS,aAAA,CACf,MACA,OAAA,EACa;AACb,EAAA,IAAI,CAAC,QAAA,CAAS,IAAI,CAAA,EAAG;AACpB,IAAA,uBAAA;AAAA,MACC,CAAA,EAAG,QAAQ,WAAW,CAAA,cAAA,CAAA;AAAA,MACtB;AAAA,KACD;AAAA,EACD;AAEA,EAAA,MAAM,UAAA,GAAa,oBAAA,CAAqB,IAAA,EAAM,OAAO,CAAA;AACrD,EAAA,IAAI,UAAA,EAAY,OAAO,yBAAA,CAA0B,UAAA,EAAY,OAAO,OAAO,CAAA;AAE3E,EAAA,IAAI,OAAA,CAAQ,0BAAA,IAA8B,CAAC,sBAAA,CAAuB,IAAI,CAAA,EAAG;AACxE,IAAA,8BAAA,CAA+B,OAAO,CAAA;AAAA,EACvC;AAEA,EAAA,MAAM,SAAqB,EAAC;AAC5B,EAAA,MAAM,eAA2B,EAAC;AAClC,EAAA,MAAA,CAAO,IAAA,CAAK,GAAG,cAAA,CAAe,IAAI,CAAC,CAAA;AAEnC,EAAA,MAAM,OAAA,GAAU,MAAM,OAAA,CAAQ,IAAA,CAAK,OAAO,CAAA,GAAI,IAAA,CAAK,UAAU,EAAC;AAC9D,EAAA,KAAA,IAAS,WAAW,CAAA,EAAG,QAAA,GAAW,OAAA,CAAQ,MAAA,EAAQ,YAAY,CAAA,EAAG;AAChE,IAAA,MAAM,MAAA,GAAS,QAAQ,QAAQ,CAAA;AAC/B,IAAA,IAAI,CAAC,QAAA,CAAS,MAAM,CAAA,EAAG;AACvB,IAAA,MAAA,CAAO,KAAK,GAAG,oBAAA,CAAqB,MAAA,EAAQ,QAAA,EAAU,OAAO,CAAC,CAAA;AAC9D,IAAA,YAAA,CAAa,KAAK,GAAG,0BAAA,CAA2B,MAAA,EAAQ,QAAA,EAAU,OAAO,CAAC,CAAA;AAAA,EAC3E;AAEA,EAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,IAAA,CAAK,KAAA,EAAO,OAAO,CAAA;AAC5C,EAAA,IAAI,KAAA,EAAO,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA;AAC5B,EAAA,MAAA,CAAO,IAAA,CAAK,GAAG,YAAY,CAAA;AAC3B,EAAA,OAAO,MAAA;AACR;AAEA,SAAS,oBAAA,CACR,MAAA,EACA,QAAA,EACA,OAAA,EACa;AACb,EAAA,MAAM,WAAA,GAAc,cAAA,CAAe,MAAA,EAAQ,QAAA,EAAU,OAAO,CAAA;AAC5D,EAAA,MAAM,UAAU,QAAA,CAAS,MAAA,CAAO,OAAO,CAAA,GAAI,OAAO,OAAA,GAAU,MAAA;AAC5D,EAAA,MAAM,SAAqB,EAAC;AAE5B,EAAA,IAAI,OAAA,EAAS;AACZ,IAAA,MAAM,OAAA,GAAU,QAAA,CAAS,OAAA,CAAQ,OAAO,CAAA;AACxC,IAAA,IAAI,OAAA,IAAW,OAAA,CAAQ,MAAA,GAAS,CAAA,EAAG;AAClC,MAAA,MAAA,CAAO,IAAA;AAAA,QACN,OAAA,CAAQ,QAAA,GACL,EAAE,IAAA,EAAM,cAAc,KAAA,EAAO,OAAA,EAAQ,GACrC,eAAA,CAAgB,EAAE,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,OAAA,IAAW,WAAW;AAAA,OACtE;AAAA,IACD;AAEA,IAAA,MAAM,OAAA,GAAU,QAAA,CAAS,OAAA,CAAQ,OAAO,CAAA;AACxC,IAAA,IAAI,OAAA,IAAW,OAAA,CAAQ,MAAA,GAAS,CAAA,EAAG;AAClC,MAAA,MAAA,CAAO,KAAK,EAAE,IAAA,EAAM,eAAA,EAAiB,IAAA,EAAM,SAAS,CAAA;AAAA,IACrD;AAEA,IAAA,MAAA,CAAO,IAAA,CAAK,GAAG,eAAA,CAAgB,OAAA,EAAS,OAAO,CAAC,CAAA;AAChD,IAAA,MAAA,CAAO,KAAK,GAAG,sBAAA,CAAuB,OAAA,CAAQ,UAAA,EAAY,WAAW,CAAC,CAAA;AACtE,IAAA,MAAA,CAAO,IAAA;AAAA,MACN,GAAG,4BAAA,CAA6B,OAAA,CAAQ,aAAA,EAAe,WAAA,EAAa,UAAU,OAAO;AAAA,KACtF;AAAA,EACD;AAEA,EAAA,OAAO,MAAA;AACR;AAEA,SAAS,0BAAA,CACR,MAAA,EACA,QAAA,EACA,OAAA,EACa;AACb,EAAA,MAAM,WAAA,GAAc,cAAA,CAAe,MAAA,EAAQ,QAAA,EAAU,OAAO,CAAA;AAC5D,EAAA,OAAO,kBAAA,CAAmB,MAAA,CAAO,aAAA,EAAe,WAAA,EAAa,OAAO,CAAA;AACrE;AAEA,SAAS,sBAAA,CAAuB,OAAgB,WAAA,EAA6C;AAC5F,EAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,SAAU,EAAC;AACnC,EAAA,MAAM,SAAqB,EAAC;AAE5B,EAAA,KAAA,IAAS,WAAW,CAAA,EAAG,QAAA,GAAW,KAAA,CAAM,MAAA,EAAQ,YAAY,CAAA,EAAG;AAC9D,IAAA,MAAM,QAAA,GAAW,MAAM,QAAQ,CAAA;AAC/B,IAAA,IAAI,CAAC,QAAA,CAAS,QAAQ,CAAA,EAAG;AACzB,IAAA,MAAM,KAAK,QAAA,CAAS,QAAA,CAAS,QAAQ,CAAA,GAAI,SAAS,QAAA,GAAW,MAAA;AAC7D,IAAA,MAAM,EAAA,GAAK,QAAA,CAAS,QAAA,CAAS,EAAE,CAAA;AAC/B,IAAA,MAAM,IAAA,GAAO,QAAA,CAAS,EAAA,EAAI,IAAI,CAAA,IAAK,SAAA;AACnC,IAAA,MAAM,IAAA,GAAO,QAAA,CAAS,EAAA,EAAI,SAAS,CAAA,IAAK,EAAA;AACxC,IAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,QAAA,CAAS,KAAK,CAAA,IAAK,QAAA;AAE1C,IAAA,MAAA,CAAO,IAAA,CAAK,eAAe,EAAE,EAAA,EAAI,MAAM,KAAA,EAAO,WAAA,EAAa,CAAC,CAAA;AAC5D,IAAA,IAAI,IAAA,CAAK,MAAA,GAAS,CAAA,EAAG,MAAA,CAAO,IAAA,CAAK,aAAA,CAAc,EAAE,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,WAAA,EAAa,CAAC,CAAA;AACvF,IAAA,MAAA,CAAO,KAAK,aAAA,CAAc,EAAE,IAAI,KAAA,EAAO,WAAA,EAAa,CAAC,CAAA;AAAA,EACtD;AAEA,EAAA,OAAO,MAAA;AACR;AAEA,SAAS,4BAAA,CACR,KAAA,EACA,WAAA,EACA,cAAA,EACA,OAAA,EACa;AACb,EAAA,IAAI,CAAC,QAAA,CAAS,KAAK,CAAA,SAAU,EAAC;AAC9B,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,KAAA,CAAM,IAAI,CAAA,IAAK,SAAA;AACrC,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,KAAA,CAAM,SAAS,CAAA,IAAK,EAAA;AAC1C,EAAA,MAAM,KAAK,CAAA,EAAG,OAAA,CAAQ,sBAAsB,CAAA,CAAA,EAAI,eAAe,cAAc,CAAA,CAAA;AAC7E,EAAA,MAAM,MAAA,GAAqB;AAAA,IAC1B,eAAA,CAAgB,EAAE,IAAA,EAAM,YAAA,EAAc,IAAI,IAAA,EAAM,KAAA,EAAO,CAAA,EAAE,EAAG,WAAW;AAAA,GACxE;AACA,EAAA,IAAI,IAAA,CAAK,SAAS,CAAA,EAAG;AACpB,IAAA,MAAA,CAAO,IAAA;AAAA,MACN,eAAA,CAAgB,EAAE,IAAA,EAAM,iBAAA,EAAmB,EAAA,EAAI,OAAO,IAAA,EAAM,KAAA,EAAO,CAAA,EAAE,EAAG,WAAW;AAAA,KACpF;AAAA,EACD;AACA,EAAA,MAAA,CAAO,IAAA,CAAK,eAAA,CAAgB,EAAE,IAAA,EAAM,WAAA,EAAa,IAAI,KAAA,EAAO,CAAA,EAAE,EAAG,WAAW,CAAC,CAAA;AAC7E,EAAA,OAAO,MAAA;AACR;;;ACpHO,SAAS,iBACf,OAAA,EACsC;AACtC,EAAA,OAAO;AAAA,IACN,QAAA,EAAU,QAAQ,QAAA,IAAY,KAAA;AAAA,IAC9B,sBAAA,EAAwB,QAAQ,sBAAA,IAA0B,iBAAA;AAAA,IAC1D,aAAa,OAAA,CAAQ,WAAA;AAAA,IACrB,eAAA,EAAiB,QAAQ,eAAA,IAAmB,KAAA;AAAA,IAC5C,oBAAA,EAAsB,QAAQ,oBAAA,IAAwB,KAAA;AAAA,IACtD,yBAAA,EAA2B,QAAQ,yBAAA,IAA6B,IAAA;AAAA,IAChE,qBAAA,EAAuB,OAAA,CAAQ,qBAAA,IAAyB,EAAC;AAAA,IACzD,qBAAA,EAAuB,OAAA,CAAQ,qBAAA,IAAyB,CAAC,eAAe,CAAA;AAAA,IACxE,sBAAA,EAAwB,OAAA,CAAQ,sBAAA,IAA0B,CAAC,mBAAmB,CAAA;AAAA,IAC9E,0BAAA,EAA4B,QAAQ,0BAAA,IAA8B;AAAA,GACnE;AACD;;;ACjCO,SAAS,4BAA4B,OAAA,EAAqD;AAChG,EAAA,MAAM,UAAA,GAAa,iBAAiB,OAAO,CAAA;AAC3C,EAAA,MAAM,MAAA,GAAS,IAAI,oBAAA,CAAqB,UAAU,CAAA;AAClD,EAAA,OAAO,mBAAA,CAAoB;AAAA,IAC1B,MAAA;AAAA,IACA,aAAA;AAAA,IACA,OAAA,EAAS;AAAA,GACT,CAAA;AACF;;;ACqBA,IAAM,cAAA,GAAiB;AAAA,EACtB,eAAA,EAAiB,IAAA;AAAA,EACjB,oBAAA,EAAsB,IAAA;AAAA,EACtB,yBAAA,EAA2B,IAAA;AAAA,EAC3B,qBAAA,EAAuB,CAAC,UAAA,EAAY,kBAAkB;AACvD,CAAA;AAEA,IAAM,gBAAA,GAA+E;AAAA,EACpF,UAAU,EAAE,qBAAA,EAAuB,CAAC,mBAAA,EAAqB,WAAA,EAAa,UAAU,CAAA,EAAE;AAAA,EAClF,UAAA,EAAY,EAAE,qBAAA,EAAuB,CAAC,WAAW,CAAA,EAAE;AAAA,EACnD,UAAU,EAAE,qBAAA,EAAuB,CAAC,WAAA,EAAa,iBAAiB,CAAA,EAAE;AAAA,EACpE,KAAA,EAAO;AAAA,IACN,eAAA,EAAiB,KAAA;AAAA,IACjB,oBAAA,EAAsB,KAAA;AAAA,IACtB,yBAAA,EAA2B,IAAA;AAAA,IAC3B,uBAAuB;AAAC;AAE1B,CAAA;AAEO,SAAS,uBAAA,CACf,OAAA,GAA0C,EAAC,EAC3B;AAChB,EAAA,MAAM,MAAA,GAAS,cAAA,CAAe,OAAA,CAAQ,QAAA,IAAY,SAAS,CAAA;AAC3D,EAAA,MAAM,4BAAA,GACL,OAAA,CAAQ,oBAAA,IACR,MAAA,CAAO,wBACP,cAAA,CAAe,oBAAA;AAChB,EAAA,MAAM,uBAAA,GACL,OAAA,CAAQ,eAAA,IAAmB,MAAA,CAAO,mBAAmB,cAAA,CAAe,eAAA;AACrE,EAAA,MAAM,iCAAA,GACL,OAAA,CAAQ,yBAAA,IACR,MAAA,CAAO,6BACP,cAAA,CAAe,yBAAA;AAEhB,EAAA,OAAO,2BAAA,CAA4B;AAAA,IAClC,GAAG,OAAA;AAAA,IACH,eAAA,EAAiB,uBAAA;AAAA,IACjB,oBAAA,EAAsB,4BAAA;AAAA,IACtB,yBAAA,EAA2B,iCAAA;AAAA,IAC3B,WAAA,EAAa,yBAAA;AAAA,IACb,qBAAA,EAAuB,CAAC,eAAA,EAAiB,cAAc,CAAA;AAAA,IACvD,sBAAA,EAAwB,CAAC,mBAAA,EAAqB,eAAe,CAAA;AAAA,IAC7D,4BAA4B,4BAAA,KAAiC,KAAA;AAAA,IAC7D,qBAAA,EAAuB;AAAA,MACtB,GAAI,MAAA,CAAO,qBAAA,IAAyB,EAAC;AAAA,MACrC,GAAI,OAAA,CAAQ,qBAAA,IAAyB;AAAC;AACvC,GACA,CAAA;AACF;AAEA,SAAS,eAAe,QAAA,EAAqD;AAC5E,EAAA,OAAO;AAAA,IACN,GAAG,cAAA;AAAA,IACH,GAAG,iBAAiB,QAAQ;AAAA,GAC7B;AACD","file":"openai-compatible.cjs","sourcesContent":["/** Internal adapter error helpers. Not part of the public API. */\nimport type { RawChunk } from \"../core/types\";\nimport { asString } from \"./utils\";\n\nexport function libraryError(message: string): Error {\n\treturn new Error(`llm-stream-assemble: ${message}`);\n}\n\nexport function adapterScopedError(scope: string, message: string): Error {\n\treturn new Error(`llm-stream-assemble: ${scope}: ${message}`);\n}\n\nexport function providerErrorChunks(error: Error, recoverable = false): RawChunk[] {\n\treturn [\n\t\t{ kind: \"provider-error\", error, recoverable },\n\t\t{ kind: \"finish\", reason: \"error\" },\n\t];\n}\n\nexport function providerErrorChunksFromMessage(message: string, recoverable = false): RawChunk[] {\n\treturn providerErrorChunks(libraryError(message), recoverable);\n}\n\nexport function providerErrorChunksFromPayload(\n\terrorPayload: Record<string, unknown>,\n\tscope: string,\n\trecoverable: boolean,\n\tfallbackMessage: string,\n): RawChunk[] {\n\tconst message = asString(errorPayload.message) ?? fallbackMessage;\n\tconst error = adapterScopedError(scope, message);\n\tObject.defineProperty(error, \"raw\", {\n\t\tvalue: errorPayload,\n\t\tenumerable: false,\n\t});\n\treturn providerErrorChunks(error, recoverable);\n}\n","/** Internal adapter utilities. Not part of the public API. */\nimport type { RawChunk, StreamAdapter } from \"../core/types\";\nimport { adapterScopedError } from \"./errors\";\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nexport function asString(value: unknown): string | undefined {\n\treturn typeof value === \"string\" ? value : undefined;\n}\n\nexport function asNumber(value: unknown): number | undefined {\n\treturn typeof value === \"number\" && Number.isFinite(value) ? value : undefined;\n}\n\nexport function optionalRawChunk(input: Record<string, unknown>): RawChunk {\n\treturn Object.fromEntries(\n\t\tObject.entries(input).filter(([, value]) => value !== undefined),\n\t) as RawChunk;\n}\n\nexport function prefixedAdapterError(feature: string, message: string): Error {\n\treturn adapterScopedError(feature, message);\n}\n\nexport function createStreamAdapter<TOptions>(config: {\n\tparser: { parseChunk(raw: string): RawChunk[] };\n\tparseResponse: (body: unknown, options: TOptions) => RawChunk[];\n\toptions: TOptions;\n}): StreamAdapter {\n\treturn {\n\t\tparseChunk(raw) {\n\t\t\treturn config.parser.parseChunk(raw);\n\t\t},\n\t\tparseResponse(body) {\n\t\t\treturn config.parseResponse(body, config.options);\n\t\t},\n\t};\n}\n\nexport function parseAdapterJSON(raw: string, feature: string): unknown {\n\ttry {\n\t\treturn JSON.parse(raw) as unknown;\n\t} catch (error) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tthrow prefixedAdapterError(feature, message);\n\t}\n}\n","import type { RawChunk } from \"../../../core/types\";\nimport { asString, isRecord } from \"../../utils\";\nimport { adapterScopedError, providerErrorChunksFromPayload } from \"../../errors\";\nimport type { RequiredOpenAIChatLikeParserOptions } from \"./types\";\n\nexport function providerErrorPayload(\n\tpayload: Record<string, unknown>,\n\toptions: RequiredOpenAIChatLikeParserOptions,\n): Record<string, unknown> | undefined {\n\tif (isRecord(payload.error)) return payload.error;\n\tif (!options.looseErrorShape) return undefined;\n\n\tconst errorString = asString(payload.error);\n\tif (errorString) return { message: errorString };\n\n\tconst detailString = asString(payload.detail);\n\tif (detailString) return { message: detailString };\n\tif (isRecord(payload.detail)) return payload.detail;\n\n\tconst topLevelMessage = asString(payload.message);\n\tconst topLevelType = asString(payload.type);\n\tif (topLevelMessage && topLevelType === \"error\") return { message: topLevelMessage };\n\n\treturn undefined;\n}\n\nexport function openAIProviderErrorChunks(\n\terrorPayload: Record<string, unknown>,\n\trecoverable: boolean,\n\toptions: RequiredOpenAIChatLikeParserOptions,\n): RawChunk[] {\n\treturn providerErrorChunksFromPayload(\n\t\terrorPayload,\n\t\toptions.errorPrefix,\n\t\trecoverable,\n\t\t\"OpenAI-compatible provider error\",\n\t);\n}\n\nexport function throwAdapterObjectError(scope: string, message = \"expected a JSON object\"): never {\n\tthrow adapterScopedError(scope, message);\n}\n\nexport function throwUnrecognizedChunkError(options: RequiredOpenAIChatLikeParserOptions): never {\n\tthrow adapterScopedError(\n\t\t`${options.errorPrefix}.parseChunk`,\n\t\t\"expected an OpenAI-compatible chat completion chunk\",\n\t);\n}\n\nexport function throwUnrecognizedResponseError(\n\toptions: RequiredOpenAIChatLikeParserOptions,\n): never {\n\tthrow adapterScopedError(\n\t\t`${options.errorPrefix}.parseResponse`,\n\t\t\"expected an OpenAI-compatible chat completion object\",\n\t);\n}\n\nexport { adapterScopedError };\n","import type { FinishReason, RawChunk } from \"../../../core/types\";\nimport { asNumber, asString, isRecord, optionalRawChunk } from \"../../utils\";\nimport { adapterScopedError } from \"../../errors\";\nimport type { RequiredOpenAIChatLikeParserOptions } from \"./types\";\n\nexport function metadataChunks(payload: Record<string, unknown>): RawChunk[] {\n\tconst chunks: RawChunk[] = [];\n\tconst id = asString(payload.id);\n\tif (id) chunks.push({ kind: \"message-start\", id });\n\n\tconst metadata: Extract<RawChunk, { kind: \"metadata\" }> = { kind: \"metadata\", raw: payload };\n\tconst model = asString(payload.model);\n\tconst created = asNumber(payload.created);\n\tif (model) metadata.model = model;\n\tif (id) metadata.responseId = id;\n\tif (created !== undefined) metadata.created = created;\n\tif (metadata.model || metadata.responseId || metadata.created !== undefined) {\n\t\tchunks.push(metadata);\n\t}\n\treturn chunks;\n}\n\nexport function hasMetadata(payload: Record<string, unknown>): boolean {\n\treturn (\n\t\tasString(payload.id) !== undefined ||\n\t\tasString(payload.model) !== undefined ||\n\t\tasNumber(payload.created) !== undefined\n\t);\n}\n\nexport function isRecognizableResponse(payload: Record<string, unknown>): boolean {\n\treturn (\n\t\thasMetadata(payload) ||\n\t\ttypeof payload.object === \"string\" ||\n\t\tArray.isArray(payload.choices) ||\n\t\tisRecord(payload.usage)\n\t);\n}\n\nexport function reasoningChunks(\n\tsource: Record<string, unknown>,\n\toptions: RequiredOpenAIChatLikeParserOptions,\n): RawChunk[] {\n\tconst chunks: RawChunk[] = [];\n\tconst aliases = new Set([\n\t\t\"reasoning\",\n\t\t\"reasoning_content\",\n\t\t\"reasoning_summary\",\n\t\t...options.reasoningFieldAliases,\n\t]);\n\tfor (const field of aliases) {\n\t\tconst text = asString(source[field]);\n\t\tif (!text) continue;\n\t\tchunks.push({\n\t\t\tkind: \"reasoning-delta\",\n\t\t\ttext,\n\t\t\tvariant: field === \"reasoning_summary\" ? \"summary\" : \"detail\",\n\t\t});\n\t}\n\treturn chunks;\n}\n\nexport function finishReasonChunks(\n\tvalue: unknown,\n\tchoiceIndex: number | undefined,\n\toptions: RequiredOpenAIChatLikeParserOptions,\n): RawChunk[] {\n\tif (value === null || value === undefined) return [];\n\tconst finishReason = normalizeFinishReason(value);\n\tif (finishReason) {\n\t\treturn [withChoiceIndex({ kind: \"finish\", reason: finishReason }, choiceIndex)];\n\t}\n\treturn [\n\t\t{\n\t\t\tkind: \"provider-error\",\n\t\t\terror: adapterScopedError(\n\t\t\t\toptions.errorPrefix,\n\t\t\t\t`unknown OpenAI-compatible finish_reason: ${String(value)}`,\n\t\t\t),\n\t\t\trecoverable: true,\n\t\t},\n\t\twithChoiceIndex({ kind: \"finish\", reason: \"error\" }, choiceIndex),\n\t];\n}\n\nexport function usageChunk(\n\tvalue: unknown,\n\toptions: RequiredOpenAIChatLikeParserOptions,\n): RawChunk | undefined {\n\tif (!isRecord(value)) return undefined;\n\tconst inputTokens = firstNumber(value, options.usageInputTokenFields);\n\tconst outputTokens = firstNumber(value, options.usageOutputTokenFields);\n\tconst details = isRecord(value.completion_tokens_details)\n\t\t? value.completion_tokens_details\n\t\t: undefined;\n\tconst reasoningTokens = details ? asNumber(details.reasoning_tokens) : undefined;\n\tif (inputTokens === undefined && outputTokens === undefined && reasoningTokens === undefined) {\n\t\treturn undefined;\n\t}\n\tconst chunk: Extract<RawChunk, { kind: \"usage\" }> = { kind: \"usage\", raw: value };\n\tif (inputTokens !== undefined) chunk.inputTokens = inputTokens;\n\tif (outputTokens !== undefined) chunk.outputTokens = outputTokens;\n\tif (reasoningTokens !== undefined) chunk.reasoningTokens = reasoningTokens;\n\treturn chunk;\n}\n\nexport function choiceIndexFor(\n\tchoice: Record<string, unknown>,\n\tposition: number,\n\toptions: RequiredOpenAIChatLikeParserOptions,\n): number | undefined {\n\treturn asNumber(choice.index) ?? (options.useChoicePositionFallback ? position : undefined);\n}\n\nexport function toolStartChunk(input: {\n\tid: string | undefined;\n\tname: string;\n\tindex: number;\n\tchoiceIndex: number | undefined;\n}): RawChunk {\n\treturn optionalRawChunk({\n\t\tkind: \"tool-start\",\n\t\tid: input.id,\n\t\tname: input.name,\n\t\tindex: input.index,\n\t\tchoiceIndex: input.choiceIndex,\n\t});\n}\n\nexport function toolArgsChunk(input: {\n\tid: string | undefined;\n\tdelta: string;\n\tindex: number;\n\tchoiceIndex: number | undefined;\n}): RawChunk {\n\treturn optionalRawChunk({\n\t\tkind: \"tool-args-delta\",\n\t\tid: input.id,\n\t\tdelta: input.delta,\n\t\tindex: input.index,\n\t\tchoiceIndex: input.choiceIndex,\n\t});\n}\n\nexport function toolDoneChunk(input: {\n\tid: string | undefined;\n\tindex: number;\n\tchoiceIndex: number | undefined;\n}): RawChunk {\n\treturn optionalRawChunk({\n\t\tkind: \"tool-done\",\n\t\tid: input.id,\n\t\tindex: input.index,\n\t\tchoiceIndex: input.choiceIndex,\n\t});\n}\n\nexport function withChoiceIndex<T extends RawChunk>(chunk: T, choiceIndex: number | undefined): T {\n\tif (choiceIndex === undefined) return chunk;\n\treturn optionalRawChunk({ ...chunk, choiceIndex }) as T;\n}\n\nexport function toolKey(\n\tchoiceIndex: number | undefined,\n\tchoicePosition: number,\n\ttoolIndex: number,\n): string {\n\treturn `${choiceKey(choiceIndex, choicePosition)}:${toolIndex}`;\n}\n\nexport function choiceKey(choiceIndex: number | undefined, choicePosition: number): string {\n\treturn choiceIndex === undefined ? `unknown-choice:${choicePosition}` : String(choiceIndex);\n}\n\nfunction normalizeFinishReason(value: unknown): FinishReason | undefined {\n\tif (\n\t\tvalue === \"stop\" ||\n\t\tvalue === \"length\" ||\n\t\tvalue === \"content_filter\" ||\n\t\tvalue === \"tool_calls\"\n\t) {\n\t\treturn value;\n\t}\n\tif (value === \"function_call\") return \"tool_calls\";\n\treturn undefined;\n}\n\nfunction firstNumber(source: Record<string, unknown>, fields: string[]): number | undefined {\n\tfor (const field of fields) {\n\t\tconst value = asNumber(source[field]);\n\t\tif (value !== undefined) return value;\n\t}\n\treturn undefined;\n}\n","import type { RawChunk } from \"../../../core/types\";\nimport { asNumber, asString, isRecord, parseAdapterJSON } from \"../../utils\";\nimport {\n\topenAIProviderErrorChunks,\n\tproviderErrorPayload,\n\tthrowAdapterObjectError,\n\tthrowUnrecognizedChunkError,\n} from \"./errors\";\nimport {\n\tchoiceIndexFor,\n\tchoiceKey,\n\tfinishReasonChunks,\n\thasMetadata,\n\tmetadataChunks,\n\treasoningChunks,\n\ttoolArgsChunk,\n\ttoolKey,\n\ttoolStartChunk,\n\tusageChunk,\n\twithChoiceIndex,\n} from \"./chunks\";\nimport type { RequiredOpenAIChatLikeParserOptions, ToolState } from \"./types\";\n\nexport class OpenAIChatLikeParser {\n\tprivate metadataEmitted = false;\n\tprivate readonly tools = new Map<string, ToolState>();\n\tprivate readonly legacyStarted = new Set<string>();\n\n\tconstructor(private readonly options: RequiredOpenAIChatLikeParserOptions) {}\n\n\tparseChunk(raw: string): RawChunk[] {\n\t\tif (raw.trim() === \"[DONE]\") return [];\n\n\t\tconst payload = parseAdapterJSON(raw, `${this.options.errorPrefix}.parseChunk`);\n\t\tif (!isRecord(payload)) {\n\t\t\tthrowAdapterObjectError(`${this.options.errorPrefix}.parseChunk`);\n\t\t}\n\n\t\tconst looseError = providerErrorPayload(payload, this.options);\n\t\tif (looseError) return openAIProviderErrorChunks(looseError, false, this.options);\n\n\t\tif (!this.options.looseErrorShape && asString(payload.error) && !isRecord(payload.error)) {\n\t\t\treturn [];\n\t\t}\n\n\t\tif (this.options.rejectUnrecognizedPayloads && !this.isRecognizableChunk(payload)) {\n\t\t\tthrowUnrecognizedChunkError(this.options);\n\t\t}\n\n\t\tconst chunks: RawChunk[] = [];\n\t\tif (!this.metadataEmitted && hasMetadata(payload)) {\n\t\t\tchunks.push(...metadataChunks(payload));\n\t\t\tthis.metadataEmitted = true;\n\t\t}\n\n\t\tconst usage = usageChunk(payload.usage, this.options);\n\t\tif (usage) chunks.push(usage);\n\n\t\tconst choices = Array.isArray(payload.choices) ? payload.choices : [];\n\t\tfor (let position = 0; position < choices.length; position += 1) {\n\t\t\tconst choice = choices[position];\n\t\t\tif (!isRecord(choice)) continue;\n\t\t\tchunks.push(...this.choiceChunks(choice, position));\n\t\t}\n\n\t\treturn chunks;\n\t}\n\n\tprivate isRecognizableChunk(payload: Record<string, unknown>): boolean {\n\t\treturn (\n\t\t\thasMetadata(payload) ||\n\t\t\ttypeof payload.object === \"string\" ||\n\t\t\tArray.isArray(payload.choices) ||\n\t\t\tisRecord(payload.usage)\n\t\t);\n\t}\n\n\tprivate choiceChunks(choice: Record<string, unknown>, position: number): RawChunk[] {\n\t\tconst choiceIndex = choiceIndexFor(choice, position, this.options);\n\t\tconst chunks: RawChunk[] = [];\n\t\tconst delta = isRecord(choice.delta) ? choice.delta : undefined;\n\n\t\tif (delta) {\n\t\t\tchunks.push(...this.deltaChunks(delta, choiceIndex, position));\n\t\t}\n\n\t\tchunks.push(...finishReasonChunks(choice.finish_reason, choiceIndex, this.options));\n\t\treturn chunks;\n\t}\n\n\tprivate deltaChunks(\n\t\tdelta: Record<string, unknown>,\n\t\tchoiceIndex: number | undefined,\n\t\tchoicePosition: number,\n\t): RawChunk[] {\n\t\tconst chunks: RawChunk[] = [];\n\t\tconst content = asString(delta.content);\n\t\tif (content && content.length > 0) {\n\t\t\tchunks.push(\n\t\t\t\tthis.options.jsonMode\n\t\t\t\t\t? { kind: \"json-delta\", delta: content }\n\t\t\t\t\t: withChoiceIndex({ kind: \"text-delta\", text: content }, choiceIndex),\n\t\t\t);\n\t\t}\n\n\t\tconst refusal = asString(delta.refusal);\n\t\tif (refusal && refusal.length > 0) {\n\t\t\tchunks.push({ kind: \"refusal-delta\", text: refusal });\n\t\t}\n\n\t\tchunks.push(...reasoningChunks(delta, this.options));\n\t\tchunks.push(...this.toolCallChunks(delta.tool_calls, choiceIndex, choicePosition));\n\t\tchunks.push(...this.legacyFunctionChunks(delta.function_call, choiceIndex, choicePosition));\n\t\treturn chunks;\n\t}\n\n\tprivate toolCallChunks(\n\t\tvalue: unknown,\n\t\tchoiceIndex: number | undefined,\n\t\tchoicePosition: number,\n\t): RawChunk[] {\n\t\tif (!Array.isArray(value)) return [];\n\t\tconst chunks: RawChunk[] = [];\n\n\t\tfor (let position = 0; position < value.length; position += 1) {\n\t\t\tconst toolCall = value[position];\n\t\t\tif (!isRecord(toolCall)) continue;\n\n\t\t\tconst toolIndex = asNumber(toolCall.index) ?? position;\n\t\t\tconst key = toolKey(choiceIndex, choicePosition, toolIndex);\n\t\t\tconst state = this.toolState(key);\n\t\t\tconst id = asString(toolCall.id);\n\t\t\tconst fn = isRecord(toolCall.function) ? toolCall.function : undefined;\n\t\t\tconst name = asString(fn?.name);\n\t\t\tconst args = asString(fn?.arguments);\n\n\t\t\tif (id) state.id = id;\n\t\t\tif (name) state.name = name;\n\n\t\t\tif (!state.startEmitted && (id || name || (args && args.length > 0))) {\n\t\t\t\tchunks.push(\n\t\t\t\t\ttoolStartChunk({\n\t\t\t\t\t\tid: state.id,\n\t\t\t\t\t\tname: state.name,\n\t\t\t\t\t\tindex: toolIndex,\n\t\t\t\t\t\tchoiceIndex,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t\tstate.startEmitted = true;\n\t\t\t}\n\n\t\t\tif (args && args.length > 0) {\n\t\t\t\tstate.sawArguments = true;\n\t\t\t\tchunks.push(\n\t\t\t\t\ttoolArgsChunk({\n\t\t\t\t\t\tid: state.id,\n\t\t\t\t\t\tdelta: args,\n\t\t\t\t\t\tindex: toolIndex,\n\t\t\t\t\t\tchoiceIndex,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn chunks;\n\t}\n\n\tprivate legacyFunctionChunks(\n\t\tvalue: unknown,\n\t\tchoiceIndex: number | undefined,\n\t\tchoicePosition: number,\n\t): RawChunk[] {\n\t\tif (!isRecord(value)) return [];\n\t\tconst chunks: RawChunk[] = [];\n\t\tconst name = asString(value.name);\n\t\tconst args = asString(value.arguments);\n\t\tconst legacyKey = choiceKey(choiceIndex, choicePosition);\n\t\tconst id = `${this.options.legacyFunctionIdPrefix}:${choiceIndex ?? choicePosition}`;\n\n\t\tif (name && !this.legacyStarted.has(legacyKey)) {\n\t\t\tchunks.push(withChoiceIndex({ kind: \"tool-start\", id, name, index: 0 }, choiceIndex));\n\t\t\tthis.legacyStarted.add(legacyKey);\n\t\t}\n\n\t\tif (args && args.length > 0) {\n\t\t\tif (!this.legacyStarted.has(legacyKey)) {\n\t\t\t\tchunks.push(\n\t\t\t\t\twithChoiceIndex(\n\t\t\t\t\t\t{ kind: \"tool-start\", id, name: name ?? \"unknown\", index: 0 },\n\t\t\t\t\t\tchoiceIndex,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t\tthis.legacyStarted.add(legacyKey);\n\t\t\t}\n\t\t\tchunks.push(\n\t\t\t\twithChoiceIndex({ kind: \"tool-args-delta\", id, delta: args, index: 0 }, choiceIndex),\n\t\t\t);\n\t\t}\n\n\t\treturn chunks;\n\t}\n\n\tprivate toolState(key: string): ToolState {\n\t\tlet state = this.tools.get(key);\n\t\tif (!state) {\n\t\t\tstate = { name: \"unknown\", startEmitted: false, sawArguments: false };\n\t\t\tthis.tools.set(key, state);\n\t\t}\n\t\treturn state;\n\t}\n}\n","import type { RawChunk } from \"../../../core/types\";\nimport { asNumber, asString, isRecord } from \"../../utils\";\nimport {\n\topenAIProviderErrorChunks,\n\tproviderErrorPayload,\n\tthrowAdapterObjectError,\n\tthrowUnrecognizedResponseError,\n} from \"./errors\";\nimport {\n\tchoiceIndexFor,\n\tfinishReasonChunks,\n\tisRecognizableResponse,\n\tmetadataChunks,\n\treasoningChunks,\n\ttoolArgsChunk,\n\ttoolDoneChunk,\n\ttoolStartChunk,\n\tusageChunk,\n\twithChoiceIndex,\n} from \"./chunks\";\nimport type { RequiredOpenAIChatLikeParserOptions } from \"./types\";\n\nexport function parseResponse(\n\tbody: unknown,\n\toptions: RequiredOpenAIChatLikeParserOptions,\n): RawChunk[] {\n\tif (!isRecord(body)) {\n\t\tthrowAdapterObjectError(\n\t\t\t`${options.errorPrefix}.parseResponse`,\n\t\t\t\"expected an OpenAI-compatible chat completion object\",\n\t\t);\n\t}\n\n\tconst looseError = providerErrorPayload(body, options);\n\tif (looseError) return openAIProviderErrorChunks(looseError, false, options);\n\n\tif (options.rejectUnrecognizedPayloads && !isRecognizableResponse(body)) {\n\t\tthrowUnrecognizedResponseError(options);\n\t}\n\n\tconst chunks: RawChunk[] = [];\n\tconst finishChunks: RawChunk[] = [];\n\tchunks.push(...metadataChunks(body));\n\n\tconst choices = Array.isArray(body.choices) ? body.choices : [];\n\tfor (let position = 0; position < choices.length; position += 1) {\n\t\tconst choice = choices[position];\n\t\tif (!isRecord(choice)) continue;\n\t\tchunks.push(...responseChoiceChunks(choice, position, options));\n\t\tfinishChunks.push(...responseChoiceFinishChunks(choice, position, options));\n\t}\n\n\tconst usage = usageChunk(body.usage, options);\n\tif (usage) chunks.push(usage);\n\tchunks.push(...finishChunks);\n\treturn chunks;\n}\n\nfunction responseChoiceChunks(\n\tchoice: Record<string, unknown>,\n\tposition: number,\n\toptions: RequiredOpenAIChatLikeParserOptions,\n): RawChunk[] {\n\tconst choiceIndex = choiceIndexFor(choice, position, options);\n\tconst message = isRecord(choice.message) ? choice.message : undefined;\n\tconst chunks: RawChunk[] = [];\n\n\tif (message) {\n\t\tconst content = asString(message.content);\n\t\tif (content && content.length > 0) {\n\t\t\tchunks.push(\n\t\t\t\toptions.jsonMode\n\t\t\t\t\t? { kind: \"json-delta\", delta: content }\n\t\t\t\t\t: withChoiceIndex({ kind: \"text-delta\", text: content }, choiceIndex),\n\t\t\t);\n\t\t}\n\n\t\tconst refusal = asString(message.refusal);\n\t\tif (refusal && refusal.length > 0) {\n\t\t\tchunks.push({ kind: \"refusal-delta\", text: refusal });\n\t\t}\n\n\t\tchunks.push(...reasoningChunks(message, options));\n\t\tchunks.push(...responseToolCallChunks(message.tool_calls, choiceIndex));\n\t\tchunks.push(\n\t\t\t...responseLegacyFunctionChunks(message.function_call, choiceIndex, position, options),\n\t\t);\n\t}\n\n\treturn chunks;\n}\n\nfunction responseChoiceFinishChunks(\n\tchoice: Record<string, unknown>,\n\tposition: number,\n\toptions: RequiredOpenAIChatLikeParserOptions,\n): RawChunk[] {\n\tconst choiceIndex = choiceIndexFor(choice, position, options);\n\treturn finishReasonChunks(choice.finish_reason, choiceIndex, options);\n}\n\nfunction responseToolCallChunks(value: unknown, choiceIndex: number | undefined): RawChunk[] {\n\tif (!Array.isArray(value)) return [];\n\tconst chunks: RawChunk[] = [];\n\n\tfor (let position = 0; position < value.length; position += 1) {\n\t\tconst toolCall = value[position];\n\t\tif (!isRecord(toolCall)) continue;\n\t\tconst fn = isRecord(toolCall.function) ? toolCall.function : undefined;\n\t\tconst id = asString(toolCall.id);\n\t\tconst name = asString(fn?.name) ?? \"unknown\";\n\t\tconst args = asString(fn?.arguments) ?? \"\";\n\t\tconst index = asNumber(toolCall.index) ?? position;\n\n\t\tchunks.push(toolStartChunk({ id, name, index, choiceIndex }));\n\t\tif (args.length > 0) chunks.push(toolArgsChunk({ id, delta: args, index, choiceIndex }));\n\t\tchunks.push(toolDoneChunk({ id, index, choiceIndex }));\n\t}\n\n\treturn chunks;\n}\n\nfunction responseLegacyFunctionChunks(\n\tvalue: unknown,\n\tchoiceIndex: number | undefined,\n\tchoicePosition: number,\n\toptions: RequiredOpenAIChatLikeParserOptions,\n): RawChunk[] {\n\tif (!isRecord(value)) return [];\n\tconst name = asString(value.name) ?? \"unknown\";\n\tconst args = asString(value.arguments) ?? \"\";\n\tconst id = `${options.legacyFunctionIdPrefix}:${choiceIndex ?? choicePosition}`;\n\tconst chunks: RawChunk[] = [\n\t\twithChoiceIndex({ kind: \"tool-start\", id, name, index: 0 }, choiceIndex),\n\t];\n\tif (args.length > 0) {\n\t\tchunks.push(\n\t\t\twithChoiceIndex({ kind: \"tool-args-delta\", id, delta: args, index: 0 }, choiceIndex),\n\t\t);\n\t}\n\tchunks.push(withChoiceIndex({ kind: \"tool-done\", id, index: 0 }, choiceIndex));\n\treturn chunks;\n}\n","export interface OpenAIChatLikeParserOptions {\n\tjsonMode?: boolean;\n\tlegacyFunctionIdPrefix?: string;\n\terrorPrefix: \"openaiChatAdapter\" | \"openaiCompatibleAdapter\";\n\tlooseErrorShape?: boolean;\n\tallowMissingMetadata?: boolean;\n\tuseChoicePositionFallback?: boolean;\n\treasoningFieldAliases?: string[];\n\tusageInputTokenFields?: string[];\n\tusageOutputTokenFields?: string[];\n\trejectUnrecognizedPayloads?: boolean;\n}\n\nexport interface RequiredOpenAIChatLikeParserOptions {\n\tjsonMode: boolean;\n\tlegacyFunctionIdPrefix: string;\n\terrorPrefix: \"openaiChatAdapter\" | \"openaiCompatibleAdapter\";\n\tlooseErrorShape: boolean;\n\tallowMissingMetadata: boolean;\n\tuseChoicePositionFallback: boolean;\n\treasoningFieldAliases: string[];\n\tusageInputTokenFields: string[];\n\tusageOutputTokenFields: string[];\n\trejectUnrecognizedPayloads: boolean;\n}\n\nexport function normalizeOptions(\n\toptions: OpenAIChatLikeParserOptions,\n): RequiredOpenAIChatLikeParserOptions {\n\treturn {\n\t\tjsonMode: options.jsonMode ?? false,\n\t\tlegacyFunctionIdPrefix: options.legacyFunctionIdPrefix ?? \"legacy_function\",\n\t\terrorPrefix: options.errorPrefix,\n\t\tlooseErrorShape: options.looseErrorShape ?? false,\n\t\tallowMissingMetadata: options.allowMissingMetadata ?? false,\n\t\tuseChoicePositionFallback: options.useChoicePositionFallback ?? true,\n\t\treasoningFieldAliases: options.reasoningFieldAliases ?? [],\n\t\tusageInputTokenFields: options.usageInputTokenFields ?? [\"prompt_tokens\"],\n\t\tusageOutputTokenFields: options.usageOutputTokenFields ?? [\"completion_tokens\"],\n\t\trejectUnrecognizedPayloads: options.rejectUnrecognizedPayloads ?? false,\n\t};\n}\n\nexport interface ToolState {\n\tid?: string;\n\tname: string;\n\tstartEmitted: boolean;\n\tsawArguments: boolean;\n}\n","import type { StreamAdapter } from \"../../../core/types\";\nimport { createStreamAdapter } from \"../../utils\";\nimport { OpenAIChatLikeParser } from \"./stream-parser\";\nimport { parseResponse } from \"./response\";\nimport { normalizeOptions, type OpenAIChatLikeParserOptions } from \"./types\";\n\nexport type { OpenAIChatLikeParserOptions } from \"./types\";\n\nexport function createOpenAIChatLikeAdapter(options: OpenAIChatLikeParserOptions): StreamAdapter {\n\tconst normalized = normalizeOptions(options);\n\tconst parser = new OpenAIChatLikeParser(normalized);\n\treturn createStreamAdapter({\n\t\tparser,\n\t\tparseResponse,\n\t\toptions: normalized,\n\t});\n}\n","import type { StreamAdapter } from \"../core/types\";\nimport { createOpenAIChatLikeAdapter } from \"./openai-chat/parser\";\n\nexport type OpenAICompatibleProvider =\n\t| \"generic\"\n\t| \"openrouter\"\n\t| \"groq\"\n\t| \"deepseek\"\n\t| \"mistral\"\n\t| \"ollama\"\n\t| \"lmstudio\"\n\t| \"together\"\n\t| \"fireworks\"\n\t| \"perplexity\"\n\t| \"xai\"\n\t| \"azure\";\n\nexport interface OpenAICompatibleAdapterOptions {\n\tprovider?: OpenAICompatibleProvider;\n\tjsonMode?: boolean;\n\tlegacyFunctionIdPrefix?: string;\n\tlooseErrorShape?: boolean;\n\tallowMissingMetadata?: boolean;\n\tuseChoicePositionFallback?: boolean;\n\treasoningFieldAliases?: string[];\n}\n\ntype PresetOverrides = Partial<\n\tPick<\n\t\tOpenAICompatibleAdapterOptions,\n\t\t| \"reasoningFieldAliases\"\n\t\t| \"looseErrorShape\"\n\t\t| \"allowMissingMetadata\"\n\t\t| \"useChoicePositionFallback\"\n\t>\n>;\n\nconst DEFAULT_PRESET = {\n\tlooseErrorShape: true,\n\tallowMissingMetadata: true,\n\tuseChoicePositionFallback: true,\n\treasoningFieldAliases: [\"thinking\", \"thinking_content\"],\n} as const satisfies PresetOverrides;\n\nconst PRESET_OVERRIDES: Partial<Record<OpenAICompatibleProvider, PresetOverrides>> = {\n\tdeepseek: { reasoningFieldAliases: [\"reasoning_content\", \"reasoning\", \"thinking\"] },\n\topenrouter: { reasoningFieldAliases: [\"reasoning\"] },\n\ttogether: { reasoningFieldAliases: [\"reasoning\", \"reasoning_delta\"] },\n\tazure: {\n\t\tlooseErrorShape: false,\n\t\tallowMissingMetadata: false,\n\t\tuseChoicePositionFallback: true,\n\t\treasoningFieldAliases: [],\n\t},\n};\n\nexport function openaiCompatibleAdapter(\n\toptions: OpenAICompatibleAdapterOptions = {},\n): StreamAdapter {\n\tconst preset = providerPreset(options.provider ?? \"generic\");\n\tconst resolvedAllowMissingMetadata =\n\t\toptions.allowMissingMetadata ??\n\t\tpreset.allowMissingMetadata ??\n\t\tDEFAULT_PRESET.allowMissingMetadata;\n\tconst resolvedLooseErrorShape =\n\t\toptions.looseErrorShape ?? preset.looseErrorShape ?? DEFAULT_PRESET.looseErrorShape;\n\tconst resolvedUseChoicePositionFallback =\n\t\toptions.useChoicePositionFallback ??\n\t\tpreset.useChoicePositionFallback ??\n\t\tDEFAULT_PRESET.useChoicePositionFallback;\n\n\treturn createOpenAIChatLikeAdapter({\n\t\t...options,\n\t\tlooseErrorShape: resolvedLooseErrorShape,\n\t\tallowMissingMetadata: resolvedAllowMissingMetadata,\n\t\tuseChoicePositionFallback: resolvedUseChoicePositionFallback,\n\t\terrorPrefix: \"openaiCompatibleAdapter\",\n\t\tusageInputTokenFields: [\"prompt_tokens\", \"input_tokens\"],\n\t\tusageOutputTokenFields: [\"completion_tokens\", \"output_tokens\"],\n\t\trejectUnrecognizedPayloads: resolvedAllowMissingMetadata === false,\n\t\treasoningFieldAliases: [\n\t\t\t...(preset.reasoningFieldAliases ?? []),\n\t\t\t...(options.reasoningFieldAliases ?? []),\n\t\t],\n\t});\n}\n\nfunction providerPreset(provider: OpenAICompatibleProvider): PresetOverrides {\n\treturn {\n\t\t...DEFAULT_PRESET,\n\t\t...PRESET_OVERRIDES[provider],\n\t};\n}\n"]}
1
+ {"version":3,"sources":["../../src/adapters/errors.ts","../../src/adapters/utils.ts","../../src/adapters/openai-chat/parser/errors.ts","../../src/adapters/openai-chat/parser/chunks.ts","../../src/adapters/openai-chat/parser/stream-parser.ts","../../src/adapters/openai-chat/parser/response.ts","../../src/adapters/openai-chat/parser/types.ts","../../src/adapters/openai-chat/parser/index.ts","../../src/adapters/openai-compatible-presets.ts","../../src/adapters/openai-compatible-resolve.ts","../../src/adapters/openai-compatible.ts"],"names":[],"mappings":"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","file":"openai-compatible.cjs","sourcesContent":["/** Internal adapter error helpers. Not part of the public API. */\nimport type { RawChunk } from \"../core/types\";\nimport { asString } from \"./utils\";\n\nexport function libraryError(message: string): Error {\n\treturn new Error(`llm-stream-assemble: ${message}`);\n}\n\nexport function adapterScopedError(scope: string, message: string): Error {\n\treturn new Error(`llm-stream-assemble: ${scope}: ${message}`);\n}\n\nexport function providerErrorChunks(error: Error, recoverable = false): RawChunk[] {\n\treturn [\n\t\t{ kind: \"provider-error\", error, recoverable },\n\t\t{ kind: \"finish\", reason: \"error\" },\n\t];\n}\n\nexport function providerErrorChunksFromMessage(message: string, recoverable = false): RawChunk[] {\n\treturn providerErrorChunks(libraryError(message), recoverable);\n}\n\nexport function providerErrorChunksFromPayload(\n\terrorPayload: Record<string, unknown>,\n\tscope: string,\n\trecoverable: boolean,\n\tfallbackMessage: string,\n): RawChunk[] {\n\tconst message = asString(errorPayload.message) ?? fallbackMessage;\n\tconst error = adapterScopedError(scope, message);\n\tObject.defineProperty(error, \"raw\", {\n\t\tvalue: errorPayload,\n\t\tenumerable: false,\n\t});\n\treturn providerErrorChunks(error, recoverable);\n}\n","/** Internal adapter utilities. Not part of the public API. */\nimport type { RawChunk, StreamAdapter } from \"../core/types\";\nimport { adapterScopedError } from \"./errors\";\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nexport function asString(value: unknown): string | undefined {\n\treturn typeof value === \"string\" ? value : undefined;\n}\n\nexport function asNumber(value: unknown): number | undefined {\n\treturn typeof value === \"number\" && Number.isFinite(value) ? value : undefined;\n}\n\nexport function optionalRawChunk(input: Record<string, unknown>): RawChunk {\n\treturn Object.fromEntries(\n\t\tObject.entries(input).filter(([, value]) => value !== undefined),\n\t) as RawChunk;\n}\n\nexport function prefixedAdapterError(feature: string, message: string): Error {\n\treturn adapterScopedError(feature, message);\n}\n\nexport function createStreamAdapter<TOptions>(config: {\n\tparser: { parseChunk(raw: string): RawChunk[] };\n\tparseResponse: (body: unknown, options: TOptions) => RawChunk[];\n\toptions: TOptions;\n}): StreamAdapter {\n\treturn {\n\t\tparseChunk(raw) {\n\t\t\treturn config.parser.parseChunk(raw);\n\t\t},\n\t\tparseResponse(body) {\n\t\t\treturn config.parseResponse(body, config.options);\n\t\t},\n\t};\n}\n\nexport function parseAdapterJSON(raw: string, feature: string): unknown {\n\ttry {\n\t\treturn JSON.parse(raw) as unknown;\n\t} catch (error) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tthrow prefixedAdapterError(feature, message);\n\t}\n}\n","import type { RawChunk } from \"../../../core/types\";\nimport { asString, isRecord } from \"../../utils\";\nimport { adapterScopedError, providerErrorChunksFromPayload } from \"../../errors\";\nimport type { RequiredOpenAIChatLikeParserOptions } from \"./types\";\n\nexport function providerErrorPayload(\n\tpayload: Record<string, unknown>,\n\toptions: RequiredOpenAIChatLikeParserOptions,\n): Record<string, unknown> | undefined {\n\tif (isRecord(payload.error)) return payload.error;\n\tif (!options.looseErrorShape) return undefined;\n\n\tconst errorString = asString(payload.error);\n\tif (errorString) return { message: errorString };\n\n\tconst detailString = asString(payload.detail);\n\tif (detailString) return { message: detailString };\n\tif (isRecord(payload.detail)) return payload.detail;\n\n\tconst topLevelMessage = asString(payload.message);\n\tconst topLevelType = asString(payload.type);\n\tif (topLevelMessage && topLevelType === \"error\") return { message: topLevelMessage };\n\n\treturn undefined;\n}\n\nexport function openAIProviderErrorChunks(\n\terrorPayload: Record<string, unknown>,\n\trecoverable: boolean,\n\toptions: RequiredOpenAIChatLikeParserOptions,\n): RawChunk[] {\n\treturn providerErrorChunksFromPayload(\n\t\terrorPayload,\n\t\toptions.errorPrefix,\n\t\trecoverable,\n\t\t\"OpenAI-compatible provider error\",\n\t);\n}\n\nexport function throwAdapterObjectError(scope: string, message = \"expected a JSON object\"): never {\n\tthrow adapterScopedError(scope, message);\n}\n\nexport function throwUnrecognizedChunkError(options: RequiredOpenAIChatLikeParserOptions): never {\n\tthrow adapterScopedError(\n\t\t`${options.errorPrefix}.parseChunk`,\n\t\t\"expected an OpenAI-compatible chat completion chunk\",\n\t);\n}\n\nexport function throwUnrecognizedResponseError(\n\toptions: RequiredOpenAIChatLikeParserOptions,\n): never {\n\tthrow adapterScopedError(\n\t\t`${options.errorPrefix}.parseResponse`,\n\t\t\"expected an OpenAI-compatible chat completion object\",\n\t);\n}\n\nexport { adapterScopedError };\n","import type { FinishReason, RawChunk } from \"../../../core/types\";\nimport { asNumber, asString, isRecord, optionalRawChunk } from \"../../utils\";\nimport { adapterScopedError } from \"../../errors\";\nimport type { RequiredOpenAIChatLikeParserOptions } from \"./types\";\n\nexport function metadataChunks(payload: Record<string, unknown>): RawChunk[] {\n\tconst chunks: RawChunk[] = [];\n\tconst id = asString(payload.id);\n\tif (id) chunks.push({ kind: \"message-start\", id });\n\n\tconst metadata: Extract<RawChunk, { kind: \"metadata\" }> = { kind: \"metadata\", raw: payload };\n\tconst model = asString(payload.model);\n\tconst created = asNumber(payload.created);\n\tif (model) metadata.model = model;\n\tif (id) metadata.responseId = id;\n\tif (created !== undefined) metadata.created = created;\n\tif (metadata.model || metadata.responseId || metadata.created !== undefined) {\n\t\tchunks.push(metadata);\n\t}\n\treturn chunks;\n}\n\nexport function hasMetadata(payload: Record<string, unknown>): boolean {\n\treturn (\n\t\tasString(payload.id) !== undefined ||\n\t\tasString(payload.model) !== undefined ||\n\t\tasNumber(payload.created) !== undefined\n\t);\n}\n\nexport function isRecognizableResponse(payload: Record<string, unknown>): boolean {\n\treturn (\n\t\thasMetadata(payload) ||\n\t\ttypeof payload.object === \"string\" ||\n\t\tArray.isArray(payload.choices) ||\n\t\tisRecord(payload.usage)\n\t);\n}\n\nexport function reasoningChunks(\n\tsource: Record<string, unknown>,\n\toptions: RequiredOpenAIChatLikeParserOptions,\n): RawChunk[] {\n\tconst chunks: RawChunk[] = [];\n\tconst aliases = new Set([\n\t\t\"reasoning\",\n\t\t\"reasoning_content\",\n\t\t\"reasoning_summary\",\n\t\t...options.reasoningFieldAliases,\n\t]);\n\tfor (const field of aliases) {\n\t\tconst text = asString(source[field]);\n\t\tif (!text) continue;\n\t\tchunks.push({\n\t\t\tkind: \"reasoning-delta\",\n\t\t\ttext,\n\t\t\tvariant: field === \"reasoning_summary\" ? \"summary\" : \"detail\",\n\t\t});\n\t}\n\treturn chunks;\n}\n\nexport function finishReasonChunks(\n\tvalue: unknown,\n\tchoiceIndex: number | undefined,\n\toptions: RequiredOpenAIChatLikeParserOptions,\n): RawChunk[] {\n\tif (value === null || value === undefined) return [];\n\tconst finishReason = normalizeFinishReason(value);\n\tif (finishReason) {\n\t\treturn [withChoiceIndex({ kind: \"finish\", reason: finishReason }, choiceIndex)];\n\t}\n\treturn [\n\t\t{\n\t\t\tkind: \"provider-error\",\n\t\t\terror: adapterScopedError(\n\t\t\t\toptions.errorPrefix,\n\t\t\t\t`unknown OpenAI-compatible finish_reason: ${String(value)}`,\n\t\t\t),\n\t\t\trecoverable: true,\n\t\t},\n\t\twithChoiceIndex({ kind: \"finish\", reason: \"error\" }, choiceIndex),\n\t];\n}\n\nexport function usageChunk(\n\tvalue: unknown,\n\toptions: RequiredOpenAIChatLikeParserOptions,\n): RawChunk | undefined {\n\tif (!isRecord(value)) return undefined;\n\tconst inputTokens = firstNumber(value, options.usageInputTokenFields);\n\tconst outputTokens = firstNumber(value, options.usageOutputTokenFields);\n\tconst details = isRecord(value.completion_tokens_details)\n\t\t? value.completion_tokens_details\n\t\t: undefined;\n\tconst reasoningTokens = details ? asNumber(details.reasoning_tokens) : undefined;\n\tif (inputTokens === undefined && outputTokens === undefined && reasoningTokens === undefined) {\n\t\treturn undefined;\n\t}\n\tconst chunk: Extract<RawChunk, { kind: \"usage\" }> = { kind: \"usage\", raw: value };\n\tif (inputTokens !== undefined) chunk.inputTokens = inputTokens;\n\tif (outputTokens !== undefined) chunk.outputTokens = outputTokens;\n\tif (reasoningTokens !== undefined) chunk.reasoningTokens = reasoningTokens;\n\treturn chunk;\n}\n\nexport function choiceIndexFor(\n\tchoice: Record<string, unknown>,\n\tposition: number,\n\toptions: RequiredOpenAIChatLikeParserOptions,\n): number | undefined {\n\treturn asNumber(choice.index) ?? (options.useChoicePositionFallback ? position : undefined);\n}\n\nexport function toolStartChunk(input: {\n\tid: string | undefined;\n\tname: string;\n\tindex: number;\n\tchoiceIndex: number | undefined;\n}): RawChunk {\n\treturn optionalRawChunk({\n\t\tkind: \"tool-start\",\n\t\tid: input.id,\n\t\tname: input.name,\n\t\tindex: input.index,\n\t\tchoiceIndex: input.choiceIndex,\n\t});\n}\n\nexport function toolArgsChunk(input: {\n\tid: string | undefined;\n\tdelta: string;\n\tindex: number;\n\tchoiceIndex: number | undefined;\n}): RawChunk {\n\treturn optionalRawChunk({\n\t\tkind: \"tool-args-delta\",\n\t\tid: input.id,\n\t\tdelta: input.delta,\n\t\tindex: input.index,\n\t\tchoiceIndex: input.choiceIndex,\n\t});\n}\n\nexport function toolDoneChunk(input: {\n\tid: string | undefined;\n\tindex: number;\n\tchoiceIndex: number | undefined;\n}): RawChunk {\n\treturn optionalRawChunk({\n\t\tkind: \"tool-done\",\n\t\tid: input.id,\n\t\tindex: input.index,\n\t\tchoiceIndex: input.choiceIndex,\n\t});\n}\n\nexport function withChoiceIndex<T extends RawChunk>(chunk: T, choiceIndex: number | undefined): T {\n\tif (choiceIndex === undefined) return chunk;\n\treturn optionalRawChunk({ ...chunk, choiceIndex }) as T;\n}\n\nexport function toolKey(\n\tchoiceIndex: number | undefined,\n\tchoicePosition: number,\n\ttoolIndex: number,\n): string {\n\treturn `${choiceKey(choiceIndex, choicePosition)}:${toolIndex}`;\n}\n\nexport function choiceKey(choiceIndex: number | undefined, choicePosition: number): string {\n\treturn choiceIndex === undefined ? `unknown-choice:${choicePosition}` : String(choiceIndex);\n}\n\nfunction normalizeFinishReason(value: unknown): FinishReason | undefined {\n\tif (\n\t\tvalue === \"stop\" ||\n\t\tvalue === \"length\" ||\n\t\tvalue === \"content_filter\" ||\n\t\tvalue === \"tool_calls\"\n\t) {\n\t\treturn value;\n\t}\n\tif (value === \"function_call\") return \"tool_calls\";\n\treturn undefined;\n}\n\nfunction firstNumber(source: Record<string, unknown>, fields: string[]): number | undefined {\n\tfor (const field of fields) {\n\t\tconst value = asNumber(source[field]);\n\t\tif (value !== undefined) return value;\n\t}\n\treturn undefined;\n}\n","import type { RawChunk } from \"../../../core/types\";\nimport { asNumber, asString, isRecord, parseAdapterJSON } from \"../../utils\";\nimport {\n\topenAIProviderErrorChunks,\n\tproviderErrorPayload,\n\tthrowAdapterObjectError,\n\tthrowUnrecognizedChunkError,\n} from \"./errors\";\nimport {\n\tchoiceIndexFor,\n\tchoiceKey,\n\tfinishReasonChunks,\n\thasMetadata,\n\tmetadataChunks,\n\treasoningChunks,\n\ttoolArgsChunk,\n\ttoolKey,\n\ttoolStartChunk,\n\tusageChunk,\n\twithChoiceIndex,\n} from \"./chunks\";\nimport type { RequiredOpenAIChatLikeParserOptions, ToolState } from \"./types\";\n\nexport class OpenAIChatLikeParser {\n\tprivate metadataEmitted = false;\n\tprivate readonly tools = new Map<string, ToolState>();\n\tprivate readonly legacyStarted = new Set<string>();\n\n\tconstructor(private readonly options: RequiredOpenAIChatLikeParserOptions) {}\n\n\tparseChunk(raw: string): RawChunk[] {\n\t\tif (raw.trim() === \"[DONE]\") return [];\n\n\t\tconst payload = parseAdapterJSON(raw, `${this.options.errorPrefix}.parseChunk`);\n\t\tif (!isRecord(payload)) {\n\t\t\tthrowAdapterObjectError(`${this.options.errorPrefix}.parseChunk`);\n\t\t}\n\n\t\tconst looseError = providerErrorPayload(payload, this.options);\n\t\tif (looseError) return openAIProviderErrorChunks(looseError, false, this.options);\n\n\t\tif (!this.options.looseErrorShape && asString(payload.error) && !isRecord(payload.error)) {\n\t\t\treturn [];\n\t\t}\n\n\t\tif (this.options.rejectUnrecognizedPayloads && !this.isRecognizableChunk(payload)) {\n\t\t\tthrowUnrecognizedChunkError(this.options);\n\t\t}\n\n\t\tconst chunks: RawChunk[] = [];\n\t\tif (!this.metadataEmitted && hasMetadata(payload)) {\n\t\t\tchunks.push(...metadataChunks(payload));\n\t\t\tthis.metadataEmitted = true;\n\t\t}\n\n\t\tconst usage = usageChunk(payload.usage, this.options);\n\t\tif (usage) chunks.push(usage);\n\n\t\tconst choices = Array.isArray(payload.choices) ? payload.choices : [];\n\t\tfor (let position = 0; position < choices.length; position += 1) {\n\t\t\tconst choice = choices[position];\n\t\t\tif (!isRecord(choice)) continue;\n\t\t\tchunks.push(...this.choiceChunks(choice, position));\n\t\t}\n\n\t\treturn chunks;\n\t}\n\n\tprivate isRecognizableChunk(payload: Record<string, unknown>): boolean {\n\t\treturn (\n\t\t\thasMetadata(payload) ||\n\t\t\ttypeof payload.object === \"string\" ||\n\t\t\tArray.isArray(payload.choices) ||\n\t\t\tisRecord(payload.usage)\n\t\t);\n\t}\n\n\tprivate choiceChunks(choice: Record<string, unknown>, position: number): RawChunk[] {\n\t\tconst choiceIndex = choiceIndexFor(choice, position, this.options);\n\t\tconst chunks: RawChunk[] = [];\n\t\tconst delta = isRecord(choice.delta) ? choice.delta : undefined;\n\n\t\tif (delta) {\n\t\t\tchunks.push(...this.deltaChunks(delta, choiceIndex, position));\n\t\t}\n\n\t\tchunks.push(...finishReasonChunks(choice.finish_reason, choiceIndex, this.options));\n\t\treturn chunks;\n\t}\n\n\tprivate deltaChunks(\n\t\tdelta: Record<string, unknown>,\n\t\tchoiceIndex: number | undefined,\n\t\tchoicePosition: number,\n\t): RawChunk[] {\n\t\tconst chunks: RawChunk[] = [];\n\t\tconst content = asString(delta.content);\n\t\tif (content && content.length > 0) {\n\t\t\tchunks.push(\n\t\t\t\tthis.options.jsonMode\n\t\t\t\t\t? { kind: \"json-delta\", delta: content }\n\t\t\t\t\t: withChoiceIndex({ kind: \"text-delta\", text: content }, choiceIndex),\n\t\t\t);\n\t\t}\n\n\t\tconst refusal = asString(delta.refusal);\n\t\tif (refusal && refusal.length > 0) {\n\t\t\tchunks.push({ kind: \"refusal-delta\", text: refusal });\n\t\t}\n\n\t\tchunks.push(...reasoningChunks(delta, this.options));\n\t\tchunks.push(...this.toolCallChunks(delta.tool_calls, choiceIndex, choicePosition));\n\t\tchunks.push(...this.legacyFunctionChunks(delta.function_call, choiceIndex, choicePosition));\n\t\treturn chunks;\n\t}\n\n\tprivate toolCallChunks(\n\t\tvalue: unknown,\n\t\tchoiceIndex: number | undefined,\n\t\tchoicePosition: number,\n\t): RawChunk[] {\n\t\tif (!Array.isArray(value)) return [];\n\t\tconst chunks: RawChunk[] = [];\n\n\t\tfor (let position = 0; position < value.length; position += 1) {\n\t\t\tconst toolCall = value[position];\n\t\t\tif (!isRecord(toolCall)) continue;\n\n\t\t\tconst toolIndex = asNumber(toolCall.index) ?? position;\n\t\t\tconst key = toolKey(choiceIndex, choicePosition, toolIndex);\n\t\t\tconst state = this.toolState(key);\n\t\t\tconst id = asString(toolCall.id);\n\t\t\tconst fn = isRecord(toolCall.function) ? toolCall.function : undefined;\n\t\t\tconst name = asString(fn?.name);\n\t\t\tconst args = asString(fn?.arguments);\n\n\t\t\tif (id) state.id = id;\n\t\t\tif (name) state.name = name;\n\n\t\t\tif (!state.startEmitted && (id || name || (args && args.length > 0))) {\n\t\t\t\tchunks.push(\n\t\t\t\t\ttoolStartChunk({\n\t\t\t\t\t\tid: state.id,\n\t\t\t\t\t\tname: state.name,\n\t\t\t\t\t\tindex: toolIndex,\n\t\t\t\t\t\tchoiceIndex,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t\tstate.startEmitted = true;\n\t\t\t}\n\n\t\t\tif (args && args.length > 0) {\n\t\t\t\tstate.sawArguments = true;\n\t\t\t\tchunks.push(\n\t\t\t\t\ttoolArgsChunk({\n\t\t\t\t\t\tid: state.id,\n\t\t\t\t\t\tdelta: args,\n\t\t\t\t\t\tindex: toolIndex,\n\t\t\t\t\t\tchoiceIndex,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn chunks;\n\t}\n\n\tprivate legacyFunctionChunks(\n\t\tvalue: unknown,\n\t\tchoiceIndex: number | undefined,\n\t\tchoicePosition: number,\n\t): RawChunk[] {\n\t\tif (!isRecord(value)) return [];\n\t\tconst chunks: RawChunk[] = [];\n\t\tconst name = asString(value.name);\n\t\tconst args = asString(value.arguments);\n\t\tconst legacyKey = choiceKey(choiceIndex, choicePosition);\n\t\tconst id = `${this.options.legacyFunctionIdPrefix}:${choiceIndex ?? choicePosition}`;\n\n\t\tif (name && !this.legacyStarted.has(legacyKey)) {\n\t\t\tchunks.push(withChoiceIndex({ kind: \"tool-start\", id, name, index: 0 }, choiceIndex));\n\t\t\tthis.legacyStarted.add(legacyKey);\n\t\t}\n\n\t\tif (args && args.length > 0) {\n\t\t\tif (!this.legacyStarted.has(legacyKey)) {\n\t\t\t\tchunks.push(\n\t\t\t\t\twithChoiceIndex(\n\t\t\t\t\t\t{ kind: \"tool-start\", id, name: name ?? \"unknown\", index: 0 },\n\t\t\t\t\t\tchoiceIndex,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t\tthis.legacyStarted.add(legacyKey);\n\t\t\t}\n\t\t\tchunks.push(\n\t\t\t\twithChoiceIndex({ kind: \"tool-args-delta\", id, delta: args, index: 0 }, choiceIndex),\n\t\t\t);\n\t\t}\n\n\t\treturn chunks;\n\t}\n\n\tprivate toolState(key: string): ToolState {\n\t\tlet state = this.tools.get(key);\n\t\tif (!state) {\n\t\t\tstate = { name: \"unknown\", startEmitted: false, sawArguments: false };\n\t\t\tthis.tools.set(key, state);\n\t\t}\n\t\treturn state;\n\t}\n}\n","import type { RawChunk } from \"../../../core/types\";\nimport { asNumber, asString, isRecord } from \"../../utils\";\nimport {\n\topenAIProviderErrorChunks,\n\tproviderErrorPayload,\n\tthrowAdapterObjectError,\n\tthrowUnrecognizedResponseError,\n} from \"./errors\";\nimport {\n\tchoiceIndexFor,\n\tfinishReasonChunks,\n\tisRecognizableResponse,\n\tmetadataChunks,\n\treasoningChunks,\n\ttoolArgsChunk,\n\ttoolDoneChunk,\n\ttoolStartChunk,\n\tusageChunk,\n\twithChoiceIndex,\n} from \"./chunks\";\nimport type { RequiredOpenAIChatLikeParserOptions } from \"./types\";\n\nexport function parseResponse(\n\tbody: unknown,\n\toptions: RequiredOpenAIChatLikeParserOptions,\n): RawChunk[] {\n\tif (!isRecord(body)) {\n\t\tthrowAdapterObjectError(\n\t\t\t`${options.errorPrefix}.parseResponse`,\n\t\t\t\"expected an OpenAI-compatible chat completion object\",\n\t\t);\n\t}\n\n\tconst looseError = providerErrorPayload(body, options);\n\tif (looseError) return openAIProviderErrorChunks(looseError, false, options);\n\n\tif (options.rejectUnrecognizedPayloads && !isRecognizableResponse(body)) {\n\t\tthrowUnrecognizedResponseError(options);\n\t}\n\n\tconst chunks: RawChunk[] = [];\n\tconst finishChunks: RawChunk[] = [];\n\tchunks.push(...metadataChunks(body));\n\n\tconst choices = Array.isArray(body.choices) ? body.choices : [];\n\tfor (let position = 0; position < choices.length; position += 1) {\n\t\tconst choice = choices[position];\n\t\tif (!isRecord(choice)) continue;\n\t\tchunks.push(...responseChoiceChunks(choice, position, options));\n\t\tfinishChunks.push(...responseChoiceFinishChunks(choice, position, options));\n\t}\n\n\tconst usage = usageChunk(body.usage, options);\n\tif (usage) chunks.push(usage);\n\tchunks.push(...finishChunks);\n\treturn chunks;\n}\n\nfunction responseChoiceChunks(\n\tchoice: Record<string, unknown>,\n\tposition: number,\n\toptions: RequiredOpenAIChatLikeParserOptions,\n): RawChunk[] {\n\tconst choiceIndex = choiceIndexFor(choice, position, options);\n\tconst message = isRecord(choice.message) ? choice.message : undefined;\n\tconst chunks: RawChunk[] = [];\n\n\tif (message) {\n\t\tconst content = asString(message.content);\n\t\tif (content && content.length > 0) {\n\t\t\tchunks.push(\n\t\t\t\toptions.jsonMode\n\t\t\t\t\t? { kind: \"json-delta\", delta: content }\n\t\t\t\t\t: withChoiceIndex({ kind: \"text-delta\", text: content }, choiceIndex),\n\t\t\t);\n\t\t}\n\n\t\tconst refusal = asString(message.refusal);\n\t\tif (refusal && refusal.length > 0) {\n\t\t\tchunks.push({ kind: \"refusal-delta\", text: refusal });\n\t\t}\n\n\t\tchunks.push(...reasoningChunks(message, options));\n\t\tchunks.push(...responseToolCallChunks(message.tool_calls, choiceIndex));\n\t\tchunks.push(\n\t\t\t...responseLegacyFunctionChunks(message.function_call, choiceIndex, position, options),\n\t\t);\n\t}\n\n\treturn chunks;\n}\n\nfunction responseChoiceFinishChunks(\n\tchoice: Record<string, unknown>,\n\tposition: number,\n\toptions: RequiredOpenAIChatLikeParserOptions,\n): RawChunk[] {\n\tconst choiceIndex = choiceIndexFor(choice, position, options);\n\treturn finishReasonChunks(choice.finish_reason, choiceIndex, options);\n}\n\nfunction responseToolCallChunks(value: unknown, choiceIndex: number | undefined): RawChunk[] {\n\tif (!Array.isArray(value)) return [];\n\tconst chunks: RawChunk[] = [];\n\n\tfor (let position = 0; position < value.length; position += 1) {\n\t\tconst toolCall = value[position];\n\t\tif (!isRecord(toolCall)) continue;\n\t\tconst fn = isRecord(toolCall.function) ? toolCall.function : undefined;\n\t\tconst id = asString(toolCall.id);\n\t\tconst name = asString(fn?.name) ?? \"unknown\";\n\t\tconst args = asString(fn?.arguments) ?? \"\";\n\t\tconst index = asNumber(toolCall.index) ?? position;\n\n\t\tchunks.push(toolStartChunk({ id, name, index, choiceIndex }));\n\t\tif (args.length > 0) chunks.push(toolArgsChunk({ id, delta: args, index, choiceIndex }));\n\t\tchunks.push(toolDoneChunk({ id, index, choiceIndex }));\n\t}\n\n\treturn chunks;\n}\n\nfunction responseLegacyFunctionChunks(\n\tvalue: unknown,\n\tchoiceIndex: number | undefined,\n\tchoicePosition: number,\n\toptions: RequiredOpenAIChatLikeParserOptions,\n): RawChunk[] {\n\tif (!isRecord(value)) return [];\n\tconst name = asString(value.name) ?? \"unknown\";\n\tconst args = asString(value.arguments) ?? \"\";\n\tconst id = `${options.legacyFunctionIdPrefix}:${choiceIndex ?? choicePosition}`;\n\tconst chunks: RawChunk[] = [\n\t\twithChoiceIndex({ kind: \"tool-start\", id, name, index: 0 }, choiceIndex),\n\t];\n\tif (args.length > 0) {\n\t\tchunks.push(\n\t\t\twithChoiceIndex({ kind: \"tool-args-delta\", id, delta: args, index: 0 }, choiceIndex),\n\t\t);\n\t}\n\tchunks.push(withChoiceIndex({ kind: \"tool-done\", id, index: 0 }, choiceIndex));\n\treturn chunks;\n}\n","export interface OpenAIChatLikeParserOptions {\n\tjsonMode?: boolean;\n\tlegacyFunctionIdPrefix?: string;\n\terrorPrefix: \"openaiChatAdapter\" | \"openaiCompatibleAdapter\";\n\tlooseErrorShape?: boolean;\n\tallowMissingMetadata?: boolean;\n\tuseChoicePositionFallback?: boolean;\n\treasoningFieldAliases?: string[];\n\tusageInputTokenFields?: string[];\n\tusageOutputTokenFields?: string[];\n\trejectUnrecognizedPayloads?: boolean;\n}\n\nexport interface RequiredOpenAIChatLikeParserOptions {\n\tjsonMode: boolean;\n\tlegacyFunctionIdPrefix: string;\n\terrorPrefix: \"openaiChatAdapter\" | \"openaiCompatibleAdapter\";\n\tlooseErrorShape: boolean;\n\tallowMissingMetadata: boolean;\n\tuseChoicePositionFallback: boolean;\n\treasoningFieldAliases: string[];\n\tusageInputTokenFields: string[];\n\tusageOutputTokenFields: string[];\n\trejectUnrecognizedPayloads: boolean;\n}\n\nexport function normalizeOptions(\n\toptions: OpenAIChatLikeParserOptions,\n): RequiredOpenAIChatLikeParserOptions {\n\treturn {\n\t\tjsonMode: options.jsonMode ?? false,\n\t\tlegacyFunctionIdPrefix: options.legacyFunctionIdPrefix ?? \"legacy_function\",\n\t\terrorPrefix: options.errorPrefix,\n\t\tlooseErrorShape: options.looseErrorShape ?? false,\n\t\tallowMissingMetadata: options.allowMissingMetadata ?? false,\n\t\tuseChoicePositionFallback: options.useChoicePositionFallback ?? true,\n\t\treasoningFieldAliases: options.reasoningFieldAliases ?? [],\n\t\tusageInputTokenFields: options.usageInputTokenFields ?? [\"prompt_tokens\"],\n\t\tusageOutputTokenFields: options.usageOutputTokenFields ?? [\"completion_tokens\"],\n\t\trejectUnrecognizedPayloads: options.rejectUnrecognizedPayloads ?? false,\n\t};\n}\n\nexport interface ToolState {\n\tid?: string;\n\tname: string;\n\tstartEmitted: boolean;\n\tsawArguments: boolean;\n}\n","import type { StreamAdapter } from \"../../../core/types\";\nimport { createStreamAdapter } from \"../../utils\";\nimport { OpenAIChatLikeParser } from \"./stream-parser\";\nimport { parseResponse } from \"./response\";\nimport { normalizeOptions, type OpenAIChatLikeParserOptions } from \"./types\";\n\nexport type { OpenAIChatLikeParserOptions } from \"./types\";\n\nexport function createOpenAIChatLikeAdapter(options: OpenAIChatLikeParserOptions): StreamAdapter {\n\tconst normalized = normalizeOptions(options);\n\tconst parser = new OpenAIChatLikeParser(normalized);\n\treturn createStreamAdapter({\n\t\tparser,\n\t\tparseResponse,\n\t\toptions: normalized,\n\t});\n}\n","export const OPENAI_COMPATIBLE_PROVIDERS = [\n\t\"generic\",\n\t\"openrouter\",\n\t\"groq\",\n\t\"deepseek\",\n\t\"mistral\",\n\t\"ollama\",\n\t\"lmstudio\",\n\t\"together\",\n\t\"fireworks\",\n\t\"perplexity\",\n\t\"xai\",\n\t\"azure\",\n\t\"cloudflare\",\n] as const;\n\nexport type OpenAICompatibleProvider = (typeof OPENAI_COMPATIBLE_PROVIDERS)[number];\n\nexport type HostCompatiblePreset = Exclude<OpenAICompatibleProvider, \"generic\">;\n\nexport const HOST_COMPATIBLE_PRESETS = OPENAI_COMPATIBLE_PROVIDERS.filter(\n\t(p): p is HostCompatiblePreset => p !== \"generic\",\n);\n\n/** Presets with strict defaults (`allowMissingMetadata: false`, `looseErrorShape: false`). */\nexport const STRICT_COMPATIBLE_PRESETS = [\n\t\"azure\",\n] as const satisfies readonly OpenAICompatibleProvider[];\n\nexport function isStrictCompatiblePreset(provider: OpenAICompatibleProvider): boolean {\n\treturn (STRICT_COMPATIBLE_PRESETS as readonly string[]).includes(provider);\n}\n\nexport const LOOSE_HOST_PRESETS = HOST_COMPATIBLE_PRESETS.filter(\n\t(p) => !isStrictCompatiblePreset(p),\n);\n\nexport type PresetOverrides = Partial<{\n\treasoningFieldAliases: string[];\n\tlooseErrorShape: boolean;\n\tallowMissingMetadata: boolean;\n\tuseChoicePositionFallback: boolean;\n}>;\n\nexport const DEFAULT_PRESET = {\n\tlooseErrorShape: true,\n\tallowMissingMetadata: true,\n\tuseChoicePositionFallback: true,\n\treasoningFieldAliases: [\"thinking\", \"thinking_content\"],\n} as const satisfies PresetOverrides;\n\nexport const PRESET_OVERRIDES: Partial<Record<OpenAICompatibleProvider, PresetOverrides>> = {\n\tdeepseek: { reasoningFieldAliases: [\"reasoning_content\", \"reasoning\", \"thinking\"] },\n\topenrouter: { reasoningFieldAliases: [\"reasoning\"] },\n\ttogether: { reasoningFieldAliases: [\"reasoning\", \"reasoning_delta\"] },\n\tazure: {\n\t\tlooseErrorShape: false,\n\t\tallowMissingMetadata: false,\n\t\tuseChoicePositionFallback: true,\n\t\treasoningFieldAliases: [],\n\t},\n};\n\nexport const PRESET_OVERRIDE_KEYS = Object.keys(PRESET_OVERRIDES) as HostCompatiblePreset[];\n\nexport function hasPresetOverride(provider: OpenAICompatibleProvider): boolean {\n\treturn provider in PRESET_OVERRIDES;\n}\n\nexport function providerPreset(provider: OpenAICompatibleProvider): PresetOverrides {\n\treturn {\n\t\t...DEFAULT_PRESET,\n\t\t...PRESET_OVERRIDES[provider],\n\t};\n}\n","import {\n\tDEFAULT_PRESET,\n\ttype OpenAICompatibleProvider,\n\tproviderPreset,\n} from \"./openai-compatible-presets\";\n\nexport interface OpenAICompatibleAdapterOptions {\n\tprovider?: OpenAICompatibleProvider;\n\tjsonMode?: boolean;\n\tlegacyFunctionIdPrefix?: string;\n\tlooseErrorShape?: boolean;\n\tallowMissingMetadata?: boolean;\n\tuseChoicePositionFallback?: boolean;\n\treasoningFieldAliases?: string[];\n}\n\nexport interface ResolvedCompatibleAdapterConfig {\n\tlooseErrorShape: boolean;\n\tallowMissingMetadata: boolean;\n\tuseChoicePositionFallback: boolean;\n\trejectUnrecognizedPayloads: boolean;\n\treasoningFieldAliases: string[];\n}\n\nexport function resolveCompatibleAdapterConfig(\n\toptions: OpenAICompatibleAdapterOptions = {},\n): ResolvedCompatibleAdapterConfig {\n\tconst preset = providerPreset(options.provider ?? \"generic\");\n\tconst allowMissingMetadata =\n\t\toptions.allowMissingMetadata ??\n\t\tpreset.allowMissingMetadata ??\n\t\tDEFAULT_PRESET.allowMissingMetadata;\n\tconst looseErrorShape =\n\t\toptions.looseErrorShape ?? preset.looseErrorShape ?? DEFAULT_PRESET.looseErrorShape;\n\tconst useChoicePositionFallback =\n\t\toptions.useChoicePositionFallback ??\n\t\tpreset.useChoicePositionFallback ??\n\t\tDEFAULT_PRESET.useChoicePositionFallback;\n\n\treturn {\n\t\tlooseErrorShape,\n\t\tallowMissingMetadata,\n\t\tuseChoicePositionFallback,\n\t\trejectUnrecognizedPayloads: allowMissingMetadata === false,\n\t\treasoningFieldAliases: [\n\t\t\t...(preset.reasoningFieldAliases ?? []),\n\t\t\t...(options.reasoningFieldAliases ?? []),\n\t\t],\n\t};\n}\n\nexport function compatibleProviderLabel(provider: OpenAICompatibleProvider | undefined): string {\n\treturn provider ?? \"generic\";\n}\n","import type { StreamAdapter } from \"../core/types\";\nimport { createOpenAIChatLikeAdapter } from \"./openai-chat/parser\";\nimport {\n\tresolveCompatibleAdapterConfig,\n\ttype OpenAICompatibleAdapterOptions,\n} from \"./openai-compatible-resolve\";\n\nexport type { OpenAICompatibleProvider } from \"./openai-compatible-presets\";\nexport {\n\tDEFAULT_PRESET,\n\tHOST_COMPATIBLE_PRESETS,\n\tLOOSE_HOST_PRESETS,\n\tOPENAI_COMPATIBLE_PROVIDERS,\n\tPRESET_OVERRIDE_KEYS,\n\tPRESET_OVERRIDES,\n\tSTRICT_COMPATIBLE_PRESETS,\n\thasPresetOverride,\n\tisStrictCompatiblePreset,\n\tproviderPreset,\n} from \"./openai-compatible-presets\";\nexport {\n\ttype OpenAICompatibleAdapterOptions,\n\ttype ResolvedCompatibleAdapterConfig,\n\tcompatibleProviderLabel,\n\tresolveCompatibleAdapterConfig,\n} from \"./openai-compatible-resolve\";\n\nexport function openaiCompatibleAdapter(\n\toptions: OpenAICompatibleAdapterOptions = {},\n): StreamAdapter {\n\tconst resolved = resolveCompatibleAdapterConfig(options);\n\n\treturn createOpenAIChatLikeAdapter({\n\t\t...options,\n\t\tlooseErrorShape: resolved.looseErrorShape,\n\t\tallowMissingMetadata: resolved.allowMissingMetadata,\n\t\tuseChoicePositionFallback: resolved.useChoicePositionFallback,\n\t\terrorPrefix: \"openaiCompatibleAdapter\",\n\t\tusageInputTokenFields: [\"prompt_tokens\", \"input_tokens\"],\n\t\tusageOutputTokenFields: [\"completion_tokens\", \"output_tokens\"],\n\t\trejectUnrecognizedPayloads: resolved.rejectUnrecognizedPayloads,\n\t\treasoningFieldAliases: resolved.reasoningFieldAliases,\n\t});\n}\n"]}
@@ -1,6 +1,30 @@
1
1
  import { S as StreamAdapter } from '../types-CskRfrmD.cjs';
2
2
 
3
- type OpenAICompatibleProvider = "generic" | "openrouter" | "groq" | "deepseek" | "mistral" | "ollama" | "lmstudio" | "together" | "fireworks" | "perplexity" | "xai" | "azure";
3
+ declare const OPENAI_COMPATIBLE_PROVIDERS: readonly ["generic", "openrouter", "groq", "deepseek", "mistral", "ollama", "lmstudio", "together", "fireworks", "perplexity", "xai", "azure", "cloudflare"];
4
+ type OpenAICompatibleProvider = (typeof OPENAI_COMPATIBLE_PROVIDERS)[number];
5
+ type HostCompatiblePreset = Exclude<OpenAICompatibleProvider, "generic">;
6
+ declare const HOST_COMPATIBLE_PRESETS: HostCompatiblePreset[];
7
+ /** Presets with strict defaults (`allowMissingMetadata: false`, `looseErrorShape: false`). */
8
+ declare const STRICT_COMPATIBLE_PRESETS: readonly ["azure"];
9
+ declare function isStrictCompatiblePreset(provider: OpenAICompatibleProvider): boolean;
10
+ declare const LOOSE_HOST_PRESETS: HostCompatiblePreset[];
11
+ type PresetOverrides = Partial<{
12
+ reasoningFieldAliases: string[];
13
+ looseErrorShape: boolean;
14
+ allowMissingMetadata: boolean;
15
+ useChoicePositionFallback: boolean;
16
+ }>;
17
+ declare const DEFAULT_PRESET: {
18
+ readonly looseErrorShape: true;
19
+ readonly allowMissingMetadata: true;
20
+ readonly useChoicePositionFallback: true;
21
+ readonly reasoningFieldAliases: ["thinking", "thinking_content"];
22
+ };
23
+ declare const PRESET_OVERRIDES: Partial<Record<OpenAICompatibleProvider, PresetOverrides>>;
24
+ declare const PRESET_OVERRIDE_KEYS: HostCompatiblePreset[];
25
+ declare function hasPresetOverride(provider: OpenAICompatibleProvider): boolean;
26
+ declare function providerPreset(provider: OpenAICompatibleProvider): PresetOverrides;
27
+
4
28
  interface OpenAICompatibleAdapterOptions {
5
29
  provider?: OpenAICompatibleProvider;
6
30
  jsonMode?: boolean;
@@ -10,6 +34,16 @@ interface OpenAICompatibleAdapterOptions {
10
34
  useChoicePositionFallback?: boolean;
11
35
  reasoningFieldAliases?: string[];
12
36
  }
37
+ interface ResolvedCompatibleAdapterConfig {
38
+ looseErrorShape: boolean;
39
+ allowMissingMetadata: boolean;
40
+ useChoicePositionFallback: boolean;
41
+ rejectUnrecognizedPayloads: boolean;
42
+ reasoningFieldAliases: string[];
43
+ }
44
+ declare function resolveCompatibleAdapterConfig(options?: OpenAICompatibleAdapterOptions): ResolvedCompatibleAdapterConfig;
45
+ declare function compatibleProviderLabel(provider: OpenAICompatibleProvider | undefined): string;
46
+
13
47
  declare function openaiCompatibleAdapter(options?: OpenAICompatibleAdapterOptions): StreamAdapter;
14
48
 
15
- export { type OpenAICompatibleAdapterOptions, type OpenAICompatibleProvider, openaiCompatibleAdapter };
49
+ export { DEFAULT_PRESET, HOST_COMPATIBLE_PRESETS, LOOSE_HOST_PRESETS, OPENAI_COMPATIBLE_PROVIDERS, type OpenAICompatibleAdapterOptions, type OpenAICompatibleProvider, PRESET_OVERRIDES, PRESET_OVERRIDE_KEYS, type ResolvedCompatibleAdapterConfig, STRICT_COMPATIBLE_PRESETS, compatibleProviderLabel, hasPresetOverride, isStrictCompatiblePreset, openaiCompatibleAdapter, providerPreset, resolveCompatibleAdapterConfig };
@@ -1,6 +1,30 @@
1
1
  import { S as StreamAdapter } from '../types-CskRfrmD.js';
2
2
 
3
- type OpenAICompatibleProvider = "generic" | "openrouter" | "groq" | "deepseek" | "mistral" | "ollama" | "lmstudio" | "together" | "fireworks" | "perplexity" | "xai" | "azure";
3
+ declare const OPENAI_COMPATIBLE_PROVIDERS: readonly ["generic", "openrouter", "groq", "deepseek", "mistral", "ollama", "lmstudio", "together", "fireworks", "perplexity", "xai", "azure", "cloudflare"];
4
+ type OpenAICompatibleProvider = (typeof OPENAI_COMPATIBLE_PROVIDERS)[number];
5
+ type HostCompatiblePreset = Exclude<OpenAICompatibleProvider, "generic">;
6
+ declare const HOST_COMPATIBLE_PRESETS: HostCompatiblePreset[];
7
+ /** Presets with strict defaults (`allowMissingMetadata: false`, `looseErrorShape: false`). */
8
+ declare const STRICT_COMPATIBLE_PRESETS: readonly ["azure"];
9
+ declare function isStrictCompatiblePreset(provider: OpenAICompatibleProvider): boolean;
10
+ declare const LOOSE_HOST_PRESETS: HostCompatiblePreset[];
11
+ type PresetOverrides = Partial<{
12
+ reasoningFieldAliases: string[];
13
+ looseErrorShape: boolean;
14
+ allowMissingMetadata: boolean;
15
+ useChoicePositionFallback: boolean;
16
+ }>;
17
+ declare const DEFAULT_PRESET: {
18
+ readonly looseErrorShape: true;
19
+ readonly allowMissingMetadata: true;
20
+ readonly useChoicePositionFallback: true;
21
+ readonly reasoningFieldAliases: ["thinking", "thinking_content"];
22
+ };
23
+ declare const PRESET_OVERRIDES: Partial<Record<OpenAICompatibleProvider, PresetOverrides>>;
24
+ declare const PRESET_OVERRIDE_KEYS: HostCompatiblePreset[];
25
+ declare function hasPresetOverride(provider: OpenAICompatibleProvider): boolean;
26
+ declare function providerPreset(provider: OpenAICompatibleProvider): PresetOverrides;
27
+
4
28
  interface OpenAICompatibleAdapterOptions {
5
29
  provider?: OpenAICompatibleProvider;
6
30
  jsonMode?: boolean;
@@ -10,6 +34,16 @@ interface OpenAICompatibleAdapterOptions {
10
34
  useChoicePositionFallback?: boolean;
11
35
  reasoningFieldAliases?: string[];
12
36
  }
37
+ interface ResolvedCompatibleAdapterConfig {
38
+ looseErrorShape: boolean;
39
+ allowMissingMetadata: boolean;
40
+ useChoicePositionFallback: boolean;
41
+ rejectUnrecognizedPayloads: boolean;
42
+ reasoningFieldAliases: string[];
43
+ }
44
+ declare function resolveCompatibleAdapterConfig(options?: OpenAICompatibleAdapterOptions): ResolvedCompatibleAdapterConfig;
45
+ declare function compatibleProviderLabel(provider: OpenAICompatibleProvider | undefined): string;
46
+
13
47
  declare function openaiCompatibleAdapter(options?: OpenAICompatibleAdapterOptions): StreamAdapter;
14
48
 
15
- export { type OpenAICompatibleAdapterOptions, type OpenAICompatibleProvider, openaiCompatibleAdapter };
49
+ export { DEFAULT_PRESET, HOST_COMPATIBLE_PRESETS, LOOSE_HOST_PRESETS, OPENAI_COMPATIBLE_PROVIDERS, type OpenAICompatibleAdapterOptions, type OpenAICompatibleProvider, PRESET_OVERRIDES, PRESET_OVERRIDE_KEYS, type ResolvedCompatibleAdapterConfig, STRICT_COMPATIBLE_PRESETS, compatibleProviderLabel, hasPresetOverride, isStrictCompatiblePreset, openaiCompatibleAdapter, providerPreset, resolveCompatibleAdapterConfig };
@@ -482,7 +482,34 @@ function createOpenAIChatLikeAdapter(options) {
482
482
  });
483
483
  }
484
484
 
485
- // src/adapters/openai-compatible.ts
485
+ // src/adapters/openai-compatible-presets.ts
486
+ var OPENAI_COMPATIBLE_PROVIDERS = [
487
+ "generic",
488
+ "openrouter",
489
+ "groq",
490
+ "deepseek",
491
+ "mistral",
492
+ "ollama",
493
+ "lmstudio",
494
+ "together",
495
+ "fireworks",
496
+ "perplexity",
497
+ "xai",
498
+ "azure",
499
+ "cloudflare"
500
+ ];
501
+ var HOST_COMPATIBLE_PRESETS = OPENAI_COMPATIBLE_PROVIDERS.filter(
502
+ (p) => p !== "generic"
503
+ );
504
+ var STRICT_COMPATIBLE_PRESETS = [
505
+ "azure"
506
+ ];
507
+ function isStrictCompatiblePreset(provider) {
508
+ return STRICT_COMPATIBLE_PRESETS.includes(provider);
509
+ }
510
+ var LOOSE_HOST_PRESETS = HOST_COMPATIBLE_PRESETS.filter(
511
+ (p) => !isStrictCompatiblePreset(p)
512
+ );
486
513
  var DEFAULT_PRESET = {
487
514
  looseErrorShape: true,
488
515
  allowMissingMetadata: true,
@@ -500,33 +527,54 @@ var PRESET_OVERRIDES = {
500
527
  reasoningFieldAliases: []
501
528
  }
502
529
  };
503
- function openaiCompatibleAdapter(options = {}) {
530
+ var PRESET_OVERRIDE_KEYS = Object.keys(PRESET_OVERRIDES);
531
+ function hasPresetOverride(provider) {
532
+ return provider in PRESET_OVERRIDES;
533
+ }
534
+ function providerPreset(provider) {
535
+ return {
536
+ ...DEFAULT_PRESET,
537
+ ...PRESET_OVERRIDES[provider]
538
+ };
539
+ }
540
+
541
+ // src/adapters/openai-compatible-resolve.ts
542
+ function resolveCompatibleAdapterConfig(options = {}) {
504
543
  const preset = providerPreset(options.provider ?? "generic");
505
- const resolvedAllowMissingMetadata = options.allowMissingMetadata ?? preset.allowMissingMetadata ?? DEFAULT_PRESET.allowMissingMetadata;
506
- const resolvedLooseErrorShape = options.looseErrorShape ?? preset.looseErrorShape ?? DEFAULT_PRESET.looseErrorShape;
507
- const resolvedUseChoicePositionFallback = options.useChoicePositionFallback ?? preset.useChoicePositionFallback ?? DEFAULT_PRESET.useChoicePositionFallback;
544
+ const allowMissingMetadata = options.allowMissingMetadata ?? preset.allowMissingMetadata ?? DEFAULT_PRESET.allowMissingMetadata;
545
+ const looseErrorShape = options.looseErrorShape ?? preset.looseErrorShape ?? DEFAULT_PRESET.looseErrorShape;
546
+ const useChoicePositionFallback = options.useChoicePositionFallback ?? preset.useChoicePositionFallback ?? DEFAULT_PRESET.useChoicePositionFallback;
547
+ return {
548
+ looseErrorShape,
549
+ allowMissingMetadata,
550
+ useChoicePositionFallback,
551
+ rejectUnrecognizedPayloads: allowMissingMetadata === false,
552
+ reasoningFieldAliases: [
553
+ ...preset.reasoningFieldAliases ?? [],
554
+ ...options.reasoningFieldAliases ?? []
555
+ ]
556
+ };
557
+ }
558
+ function compatibleProviderLabel(provider) {
559
+ return provider ?? "generic";
560
+ }
561
+
562
+ // src/adapters/openai-compatible.ts
563
+ function openaiCompatibleAdapter(options = {}) {
564
+ const resolved = resolveCompatibleAdapterConfig(options);
508
565
  return createOpenAIChatLikeAdapter({
509
566
  ...options,
510
- looseErrorShape: resolvedLooseErrorShape,
511
- allowMissingMetadata: resolvedAllowMissingMetadata,
512
- useChoicePositionFallback: resolvedUseChoicePositionFallback,
567
+ looseErrorShape: resolved.looseErrorShape,
568
+ allowMissingMetadata: resolved.allowMissingMetadata,
569
+ useChoicePositionFallback: resolved.useChoicePositionFallback,
513
570
  errorPrefix: "openaiCompatibleAdapter",
514
571
  usageInputTokenFields: ["prompt_tokens", "input_tokens"],
515
572
  usageOutputTokenFields: ["completion_tokens", "output_tokens"],
516
- rejectUnrecognizedPayloads: resolvedAllowMissingMetadata === false,
517
- reasoningFieldAliases: [
518
- ...preset.reasoningFieldAliases ?? [],
519
- ...options.reasoningFieldAliases ?? []
520
- ]
573
+ rejectUnrecognizedPayloads: resolved.rejectUnrecognizedPayloads,
574
+ reasoningFieldAliases: resolved.reasoningFieldAliases
521
575
  });
522
576
  }
523
- function providerPreset(provider) {
524
- return {
525
- ...DEFAULT_PRESET,
526
- ...PRESET_OVERRIDES[provider]
527
- };
528
- }
529
577
 
530
- export { openaiCompatibleAdapter };
578
+ export { DEFAULT_PRESET, HOST_COMPATIBLE_PRESETS, LOOSE_HOST_PRESETS, OPENAI_COMPATIBLE_PROVIDERS, PRESET_OVERRIDES, PRESET_OVERRIDE_KEYS, STRICT_COMPATIBLE_PRESETS, compatibleProviderLabel, hasPresetOverride, isStrictCompatiblePreset, openaiCompatibleAdapter, providerPreset, resolveCompatibleAdapterConfig };
531
579
  //# sourceMappingURL=openai-compatible.js.map
532
580
  //# sourceMappingURL=openai-compatible.js.map