@agent-inspect/openai-agents 1.8.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":["fileWriter"],"mappings":";;;;;AAkHA,IAAM,oBAAA,GAAuB;AAAA,EAC3B,IAAA,EAAM,SAAA;AAAA,EACN,IAAA,EAAM,8BAAA;AAAA,EACN,OAAA,EAAS;AACX,CAAA;AAEA,SAAS,MAAA,GAAiB;AACxB,EAAA,OAAA,iBAAO,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAChC;AAEA,SAAS,eAAe,KAAA,EAAwB;AAC9C,EAAA,IAAI,iBAAiB,KAAA,IAAS,KAAA,CAAM,OAAA,CAAQ,IAAA,OAAW,EAAA,EAAI;AACzD,IAAA,OAAO,KAAA,CAAM,OAAA;AAAA,EACf;AACA,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,CAAM,IAAA,OAAW,EAAA,EAAI;AACpD,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,OAAO,uCAAA;AACT;AAEA,SAAS,UAAA,CAAW,WAAmB,OAAA,EAAqC;AAC1E,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,SAAS,CAAA;AACpC,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,OAAO,CAAA;AAChC,EAAA,IAAI,CAAC,MAAA,CAAO,QAAA,CAAS,OAAO,CAAA,IAAK,CAAC,MAAA,CAAO,QAAA,CAAS,KAAK,CAAA,EAAG,OAAO,MAAA;AACjE,EAAA,OAAO,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,KAAA,GAAQ,OAAO,CAAA;AACpC;AAEA,SAAS,gBAAgB,KAAA,EAAoC;AAC3D,EAAA,IAAI,OAAO,UAAU,QAAA,IAAY,KAAA,KAAU,QAAQ,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACvE,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,OAAO,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,CAAE,MAAA;AAC5B;AAEA,SAAS,yBAAyB,KAAA,EAAoC;AACpE,EAAA,IAAI,OAAO,UAAU,QAAA,IAAY,CAAC,OAAO,QAAA,CAAS,KAAK,CAAA,IAAK,KAAA,GAAQ,CAAA,EAAG;AACrE,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,OAAO,IAAA,CAAK,MAAM,KAAK,CAAA;AACzB;AAEA,SAAS,iBAAiB,KAAA,EAAyC;AACjE,EAAA,IAAI,KAAA,KAAU,IAAA,EAAM,OAAO,EAAE,MAAM,MAAA,EAAO;AAC1C,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG,OAAO,EAAE,IAAA,EAAM,OAAA,EAAS,SAAA,EAAW,KAAA,CAAM,MAAA,EAAO;AAE1E,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,OAAO,EAAE,IAAA,EAAM,QAAA,EAAU,UAAU,eAAA,CAAgB,KAAK,KAAK,CAAA,EAAE;AAAA,EACjE;AACA,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,OAAO,EAAE,IAAA,EAAM,QAAA,EAAU,MAAA,EAAQ,MAAM,MAAA,EAAO;AAAA,EAChD;AACA,EAAA,MAAM,YAAY,OAAO,KAAA;AACzB,EAAA,IAAI,SAAA,KAAc,QAAA,IAAY,SAAA,KAAc,SAAA,IAAa,cAAc,QAAA,EAAU;AAC/E,IAAA,OAAO,EAAE,MAAM,SAAA,EAAU;AAAA,EAC3B;AACA,EAAA,IAAI,SAAA,KAAc,WAAA,EAAa,OAAO,EAAE,MAAM,WAAA,EAAY;AAC1D,EAAA,OAAO,EAAE,MAAM,SAAA,EAAU;AAC3B;AAEA,SAAS,yBAAyB,KAAA,EAAqD;AACrF,EAAA,OAAO,KAAA,KAAU,MAAA,GAAY,MAAA,GAAY,gBAAA,CAAiB,KAAK,CAAA;AACjE;AAEA,SAAS,eAAe,KAAA,EAAwE;AAC9F,EAAA,IAAI,CAAC,KAAA,EAAO,OAAA,EAAS,OAAO,MAAA;AAC5B,EAAA,OAAO,EAAE,OAAA,EAAS,KAAA,CAAM,OAAA,EAAQ;AAClC;AAEA,SAAS,eAAe,KAAA,EAAiD;AACvE,EAAA,IAAI,OAAO,UAAU,QAAA,IAAY,KAAA,KAAU,QAAQ,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACvE,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,MAAM,MAAA,GAAS,KAAA;AACf,EAAA,MAAM,aAAkC,EAAC;AACzC,EAAA,IAAI,OAAO,OAAO,YAAA,KAAiB,QAAA,IAAY,OAAO,QAAA,CAAS,MAAA,CAAO,YAAY,CAAA,EAAG;AACnF,IAAA,UAAA,CAAW,QAAQ,MAAA,CAAO,YAAA;AAAA,EAC5B;AACA,EAAA,IAAI,OAAO,OAAO,aAAA,KAAkB,QAAA,IAAY,OAAO,QAAA,CAAS,MAAA,CAAO,aAAa,CAAA,EAAG;AACrF,IAAA,UAAA,CAAW,SAAS,MAAA,CAAO,aAAA;AAAA,EAC7B;AACA,EAAA,IAAI,UAAA,CAAW,KAAA,KAAU,MAAA,IAAa,UAAA,CAAW,WAAW,MAAA,EAAW;AACrE,IAAA,UAAA,CAAW,KAAA,GAAA,CAAS,UAAA,CAAW,KAAA,IAAS,CAAA,KAAM,WAAW,MAAA,IAAU,CAAA,CAAA;AAAA,EACrE;AAEA,EAAA,MAAM,UAAU,MAAA,CAAO,OAAA;AACvB,EAAA,IAAI,OAAO,YAAY,QAAA,IAAY,OAAA,KAAY,QAAQ,CAAC,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,EAAG;AAC9E,IAAA,MAAM,YAAA,GAAe,OAAA;AACrB,IAAA,MAAM,MAAA,GAAS,YAAA,CAAa,aAAA,IAAiB,YAAA,CAAa,mBAAA;AAC1D,IAAA,IAAI,OAAO,MAAA,KAAW,QAAA,IAAY,MAAA,CAAO,QAAA,CAAS,MAAM,CAAA,EAAG;AACzD,MAAA,UAAA,CAAW,MAAA,GAAS,MAAA;AAAA,IACtB;AAAA,EACF;AAEA,EAAA,OAAO,OAAO,IAAA,CAAK,UAAU,CAAA,CAAE,MAAA,GAAS,IAAI,UAAA,GAAa,MAAA;AAC3D;AAEA,SAAS,SAAS,IAAA,EAAmD;AACnE,EAAA,QAAQ,IAAA;AAAM,IACZ,KAAK,OAAA;AACH,MAAA,OAAO,OAAA;AAAA,IACT,KAAK,YAAA;AAAA,IACL,KAAK,UAAA;AAAA,IACL,KAAK,eAAA;AAAA,IACL,KAAK,QAAA;AACH,MAAA,OAAO,KAAA;AAAA,IACT,KAAK,UAAA;AAAA,IACL,KAAK,WAAA;AACH,MAAA,OAAO,MAAA;AAAA,IACT,KAAK,SAAA;AAAA,IACL,KAAK,WAAA;AACH,MAAA,OAAO,UAAA;AAAA,IACT,KAAK,QAAA;AAAA,IACL,KAAK,cAAA;AACH,MAAA,OAAO,OAAA;AAAA,IACT;AACE,MAAA,OAAO,OAAA;AAAA;AAEb;AAEA,SAAS,SAAS,IAAA,EAAwB;AACxC,EAAA,QAAQ,KAAK,IAAA;AAAM,IACjB,KAAK,OAAA;AAAA,IACL,KAAK,UAAA;AAAA,IACL,KAAK,QAAA;AAAA,IACL,KAAK,WAAA;AACH,MAAA,OAAO,IAAA,CAAK,IAAA;AAAA,IACd,KAAK,YAAA;AACH,MAAA,OAAO,IAAA,CAAK,KAAA,GAAQ,CAAA,WAAA,EAAc,IAAA,CAAK,KAAK,CAAA,CAAA,GAAK,YAAA;AAAA,IACnD,KAAK,UAAA;AACH,MAAA,OAAO,IAAA,CAAK,WAAA,GAAc,CAAA,SAAA,EAAY,IAAA,CAAK,WAAW,CAAA,CAAA,GAAK,UAAA;AAAA,IAC7D,KAAK,SAAA;AACH,MAAA,OAAO,IAAA,CAAK,QAAA,GAAW,CAAA,QAAA,EAAW,IAAA,CAAK,QAAQ,CAAA,CAAA,GAAK,SAAA;AAAA,IACtD,KAAK,WAAA;AACH,MAAA,OAAO,IAAA,CAAK,MAAA,GAAS,CAAA,UAAA,EAAa,IAAA,CAAK,MAAM,CAAA,CAAA,GAAK,WAAA;AAAA,IACpD,KAAK,eAAA;AACH,MAAA,OAAO,IAAA,CAAK,KAAA,GAAQ,CAAA,cAAA,EAAiB,IAAA,CAAK,KAAK,CAAA,CAAA,GAAK,eAAA;AAAA,IACtD,KAAK,QAAA;AACH,MAAA,OAAO,IAAA,CAAK,KAAA,GAAQ,CAAA,OAAA,EAAU,IAAA,CAAK,KAAK,CAAA,CAAA,GAAK,QAAA;AAAA,IAC/C,KAAK,cAAA;AACH,MAAA,OAAO,cAAA;AAAA,IACT;AACE,MAAA,OAAO,oBAAA;AAAA;AAEb;AAEA,SAAS,qBAAqB,IAAA,EAA+C;AAC3E,EAAA,OAAO;AAAA,IACL,WAAA,EAAa,cAAA;AAAA,IACb,QAAQ,IAAA,CAAK,MAAA;AAAA,IACb,QAAA,EAAU,qBAAA,CAAsB,IAAA,CAAK,QAAA,CAAS,IAAI,CAAA;AAAA,IAClD,QAAA,EAAU,KAAK,QAAA,CAAS,IAAA;AAAA,IACxB,SAAS,IAAA,CAAK,OAAA;AAAA,IACd,QAAQ,IAAA,CAAK,MAAA;AAAA,IACb,YAAA,EAAc,KAAK,QAAA,IAAY,MAAA;AAAA,IAC/B,qBAAA,EAAuB,eAAA,CAAgB,IAAA,CAAK,aAAa;AAAA,GAC3D;AACF;AAEA,SAAS,uBAAuB,IAAA,EAAyC;AACvE,EAAA,QAAQ,KAAK,IAAA;AAAM,IACjB,KAAK,OAAA;AACH,MAAA,OAAO;AAAA,QACL,WAAW,IAAA,CAAK,IAAA;AAAA,QAChB,YAAA,EAAc,IAAA,CAAK,QAAA,EAAU,MAAA,IAAU,CAAA;AAAA,QACvC,cAAc,IAAA,CAAK,QAAA;AAAA,QACnB,SAAA,EAAW,IAAA,CAAK,KAAA,EAAO,MAAA,IAAU,CAAA;AAAA,QACjC,WAAW,IAAA,CAAK,KAAA;AAAA,QAChB,YAAY,IAAA,CAAK;AAAA,OACnB;AAAA,IACF,KAAK,UAAA;AACH,MAAA,OAAO;AAAA,QACL,UAAU,IAAA,CAAK,IAAA;AAAA,QACf,QAAA,EAAU,KAAK,KAAA,KAAU,MAAA;AAAA,QACzB,SAAA,EAAW,KAAK,MAAA,KAAW,MAAA;AAAA,QAC3B,YAAA,EAAc,gBAAA,CAAiB,IAAA,CAAK,KAAK,CAAA;AAAA,QACzC,aAAA,EAAe,gBAAA,CAAiB,IAAA,CAAK,MAAM,CAAA;AAAA,QAC3C,cAAA,EAAgB,wBAAA,CAAyB,IAAA,CAAK,QAAQ;AAAA,OACxD;AAAA,IACF,KAAK,YAAA;AACH,MAAA,OAAO;AAAA,QACL,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,mBAAA,EAAqB,eAAA,CAAgB,IAAA,CAAK,YAAY,CAAA;AAAA,QACtD,YAAA,EAAc,wBAAA,CAAyB,IAAA,CAAK,KAAK,CAAA;AAAA,QACjD,aAAA,EAAe,wBAAA,CAAyB,IAAA,CAAK,MAAM,CAAA;AAAA,QACnD,oBAAA,EAAsB,eAAA,CAAgB,IAAA,CAAK,KAAA,EAAO,OAAO;AAAA,OAC3D;AAAA,IACF,KAAK,UAAA;AACH,MAAA,OAAO;AAAA,QACL,YAAY,IAAA,CAAK,WAAA;AAAA,QACjB,YAAA,EAAc,wBAAA,CAAyB,IAAA,CAAK,MAAM,CAAA;AAAA,QAClD,eAAA,EAAiB,wBAAA,CAAyB,IAAA,CAAK,SAAS;AAAA,OAC1D;AAAA,IACF,KAAK,SAAA;AACH,MAAA,OAAO;AAAA,QACL,WAAW,IAAA,CAAK,UAAA;AAAA,QAChB,SAAS,IAAA,CAAK;AAAA,OAChB;AAAA,IACF,KAAK,QAAA;AACH,MAAA,OAAO;AAAA,QACL,YAAY,IAAA,CAAK,IAAA;AAAA,QACjB,WAAA,EAAa,gBAAA,CAAiB,IAAA,CAAK,IAAI;AAAA,OACzC;AAAA,IACF,KAAK,WAAA;AACH,MAAA,OAAO;AAAA,QACL,eAAe,IAAA,CAAK,IAAA;AAAA,QACpB,WAAW,IAAA,CAAK;AAAA,OAClB;AAAA,IACF,KAAK,WAAA;AACH,MAAA,OAAO;AAAA,QACL,QAAQ,IAAA,CAAK,MAAA;AAAA,QACb,SAAA,EAAW,IAAA,CAAK,MAAA,EAAQ,MAAA,IAAU,CAAA;AAAA,QAClC,WAAW,IAAA,CAAK;AAAA,OAClB;AAAA,IACF,KAAK,eAAA;AACH,MAAA,OAAO;AAAA,QACL,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,WAAA,EAAa,KAAK,KAAA,CAAM,MAAA;AAAA,QACxB,YAAA,EAAc,gBAAA,CAAiB,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAAA,QAC9C,aAAA,EAAe,wBAAA,CAAyB,IAAA,CAAK,MAAM,CAAA;AAAA,QACnD,mBAAA,EAAqB,eAAA,CAAgB,IAAA,CAAK,YAAY;AAAA,OACxD;AAAA,IACF,KAAK,QAAA;AACH,MAAA,OAAO;AAAA,QACL,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,YAAA,EAAc,wBAAA,CAAyB,IAAA,CAAK,KAAK,CAAA;AAAA,QACjD,YAAA,EAAc,KAAK,MAAA,CAAO,MAAA;AAAA,QAC1B,aAAA,EAAe,gBAAA,CAAiB,IAAA,CAAK,MAAA,CAAO,IAAI,CAAA;AAAA,QAChD,mBAAA,EAAqB,eAAA,CAAgB,IAAA,CAAK,YAAY;AAAA,OACxD;AAAA,IACF,KAAK,cAAA;AACH,MAAA,OAAO;AAAA,QACL,YAAA,EAAc,wBAAA,CAAyB,IAAA,CAAK,KAAK;AAAA,OACnD;AAAA,IACF;AACE,MAAA,OAAO,EAAC;AAAA;AAEd;AAEA,SAAS,sBAAsB,IAAA,EAA4B;AACzD,EAAA,QAAQ,IAAA;AAAM,IACZ,KAAK,YAAA;AAAA,IACL,KAAK,UAAA;AAAA,IACL,KAAK,eAAA;AAAA,IACL,KAAK,QAAA;AACH,MAAA,OAAO,KAAA;AAAA,IACT,KAAK,UAAA;AAAA,IACL,KAAK,WAAA;AACH,MAAA,OAAO,MAAA;AAAA,IACT,KAAK,SAAA;AAAA,IACL,KAAK,WAAA;AACH,MAAA,OAAO,UAAA;AAAA,IACT,KAAK,OAAA;AACH,MAAA,OAAO,OAAA;AAAA,IACT,KAAK,QAAA;AAAA,IACL,KAAK,cAAA;AACH,MAAA,OAAO,QAAA;AAAA,IACT;AACE,MAAA,OAAO,OAAA;AAAA;AAEb;AAEA,SAAS,iBAAiB,IAAA,EAAyB;AACjD,EAAA,QAAQ,KAAK,IAAA;AAAM,IACjB,KAAK,YAAA;AACH,MAAA,OAAO,wBAAA,CAAyB,KAAK,KAAK,CAAA;AAAA,IAC5C,KAAK,UAAA;AACH,MAAA,OAAO,gBAAA,CAAiB,KAAK,KAAK,CAAA;AAAA,IACpC,KAAK,UAAA;AACH,MAAA,OAAO,wBAAA,CAAyB,KAAK,MAAM,CAAA;AAAA,IAC7C,KAAK,QAAA;AACH,MAAA,OAAO,gBAAA,CAAiB,KAAK,IAAI,CAAA;AAAA,IACnC,KAAK,eAAA;AACH,MAAA,OAAO,EAAE,MAAA,EAAQ,IAAA,CAAK,KAAA,CAAM,MAAA,EAAQ,GAAG,gBAAA,CAAiB,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,EAAE;AAAA,IAC3E,KAAK,QAAA;AAAA,IACL,KAAK,cAAA;AACH,MAAA,OAAO,wBAAA,CAAyB,KAAK,KAAK,CAAA;AAAA,IAC5C;AACE,MAAA,OAAO,MAAA;AAAA;AAEb;AAEA,SAAS,kBAAkB,IAAA,EAAyB;AAClD,EAAA,QAAQ,KAAK,IAAA;AAAM,IACjB,KAAK,YAAA;AACH,MAAA,OAAO,wBAAA,CAAyB,KAAK,MAAM,CAAA;AAAA,IAC7C,KAAK,UAAA;AACH,MAAA,OAAO,gBAAA,CAAiB,KAAK,MAAM,CAAA;AAAA,IACrC,KAAK,UAAA;AACH,MAAA,OAAO,wBAAA,CAAyB,KAAK,SAAS,CAAA;AAAA,IAChD,KAAK,WAAA;AACH,MAAA,OAAO,EAAE,SAAA,EAAW,IAAA,CAAK,SAAA,EAAU;AAAA,IACrC,KAAK,WAAA;AACH,MAAA,OAAO,EAAE,SAAA,EAAW,IAAA,CAAK,MAAA,EAAQ,UAAU,CAAA,EAAE;AAAA,IAC/C,KAAK,eAAA;AACH,MAAA,OAAO,wBAAA,CAAyB,KAAK,MAAM,CAAA;AAAA,IAC7C,KAAK,QAAA;AACH,MAAA,OAAO,EAAE,MAAA,EAAQ,IAAA,CAAK,MAAA,CAAO,MAAA,EAAQ,GAAG,gBAAA,CAAiB,IAAA,CAAK,MAAA,CAAO,IAAI,CAAA,EAAE;AAAA,IAC7E;AACE,MAAA,OAAO,MAAA;AAAA;AAEb;AAEA,SAAS,aAAa,OAAA,EAAyB;AAC7C,EAAA,OAAO,uBAAuB,OAAO,CAAA,CAAA;AACvC;AAEA,SAAS,YAAY,MAAA,EAAwB;AAC3C,EAAA,OAAO,sBAAsB,MAAM,CAAA,CAAA;AACrC;AAEA,IAAM,2CAAN,MAA4F;AAAA,EAkB1F,YAA6B,OAAA,EAA0C;AAA1C,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAC3B,IAAA,IAAA,CAAK,gBAAA,GAAmB,QAAQ,OAAA,IAAW,eAAA;AAC3C,IAAA,IAAA,CAAK,MAAA,GAAS,OAAA,CAAQ,MAAA,KAAW,OAAA,CAAQ,QAAA,GAAWA,kBAAA,CAAW,EAAE,GAAA,EAAK,OAAA,CAAQ,QAAA,EAAU,CAAA,GAAI,MAAA,CAAA;AAC5F,IAAA,KAAA,MAAW,GAAA,IAAO;AAAA,MAChB,SAAA;AAAA,MACA,QAAA;AAAA,MACA,kBAAA;AAAA,MACA,kBAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA,KACF,EAAY;AACV,MAAA,MAAA,CAAO,eAAe,IAAA,EAAM,GAAA,EAAK,EAAE,UAAA,EAAY,OAAO,CAAA;AAAA,IACxD;AACA,IAAA,IAAA,CAAK,2BAAA,EAA4B;AAAA,EACnC;AAAA,EAhB6B,OAAA;AAAA,EAjBpB,WAAA,GAAc,oBAAA;AAAA,EACd,SAAA,GAAY,IAAA;AAAA,EAEJ,MAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA,GAAoC,eAAA;AAAA,EACpC,WAAA,GAAmD;AAAA,IAClE,aAAA,EAAe,CAAA;AAAA,IACf,iBAAA,EAAmB,CAAA;AAAA,IACnB,aAAA,EAAe,CAAA;AAAA,IACf,gBAAA,EAAkB,CAAA;AAAA,IAClB,yBAAA,EAA2B;AAAA,GAC7B;AAAA,EACiB,YAAA,uBAAmB,GAAA,EAAyB;AAAA,EAC5C,WAAA,uBAAkB,GAAA,EAAwB;AAAA,EACnD,MAAA,GAAS,KAAA;AAAA,EAoBjB,KAAA,GAAc;AAAA,EAEd;AAAA,EAEA,MAAM,aAAa,KAAA,EAA6B;AAC9C,IAAA,MAAM,IAAA,CAAK,eAAA,CAAgB,cAAA,EAAgB,YAAY;AACrD,MAAA,IAAI,KAAK,MAAA,EAAQ;AACf,QAAA,IAAA,CAAK,uBAAuB,sDAAsD,CAAA;AAClF,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,YAAY,MAAA,EAAO;AACzB,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,OAAA,CAAQ,YAAA,IAAgB,MAAM,IAAA,IAAQ,mBAAA;AACxD,MAAA,MAAM,OAAA,GAAU,YAAA,CAAa,KAAA,CAAM,OAAO,CAAA;AAC1C,MAAA,IAAA,CAAK,YAAA,CAAa,IAAI,KAAA,CAAM,OAAA,EAAS,EAAE,OAAA,EAAS,SAAA,EAAW,MAAM,CAAA;AAEjE,MAAA,MAAM,KAAK,KAAA,CAAM;AAAA,QACf,aAAA,EAAe,KAAA;AAAA,QACf,OAAA;AAAA,QACA,OAAO,KAAA,CAAM,OAAA;AAAA,QACb,IAAA,EAAM,KAAA;AAAA,QACN,IAAA;AAAA,QACA,MAAA,EAAQ,SAAA;AAAA,QACR,SAAA,EAAW,SAAA;AAAA,QACX,SAAA;AAAA,QACA,UAAA,EAAY,UAAA;AAAA,QACZ,MAAA,EAAQ,oBAAA;AAAA,QACR,UAAA,EAAY;AAAA,UACV,WAAA,EAAa,aAAA;AAAA,UACb,aAAa,IAAA,CAAK,WAAA;AAAA,UAClB,SAAS,IAAA,CAAK,gBAAA;AAAA,UACd,kBACE,IAAA,CAAK,gBAAA,KAAqB,IAAA,CAAK,gBAAA,GAC3B,SACA,IAAA,CAAK,gBAAA;AAAA,UACX,uBAAA,EACE,IAAA,CAAK,gBAAA,KAAqB,SAAA,GAAY,KAAA,GAAQ,MAAA;AAAA,UAChD,gBAAA,EAAkB,KAAK,OAAA,CAAQ,gBAAA;AAAA,UAC/B,eAAA,EAAiB,wBAAA,CAAyB,IAAA,CAAK,OAAA,CAAQ,eAAe,CAAA;AAAA,UACtE,OAAA,EAAS,MAAM,OAAA,IAAW,MAAA;AAAA,UAC1B,gBAAA,EAAkB,eAAA,CAAgB,KAAA,CAAM,QAAQ;AAAA,SAClD;AAAA,QACA,KAAA,EAAO;AAAA,UACL,SAAS,KAAA,CAAM;AAAA;AACjB,OACD,CAAA;AAAA,IACH,CAAC,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,WAAW,KAAA,EAA6B;AAC5C,IAAA,MAAM,IAAA,CAAK,eAAA,CAAgB,YAAA,EAAc,YAAY;AACnD,MAAA,IAAI,KAAK,MAAA,EAAQ;AACf,QAAA,IAAA,CAAK,uBAAuB,oDAAoD,CAAA;AAChF,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,YAAA,CAAa,GAAA,CAAI,MAAM,OAAO,CAAA;AAClD,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,IAAA,CAAK,sBAAA;AAAA,UACH,CAAA,iCAAA,EAAoC,MAAM,OAAO,CAAA,gCAAA;AAAA,SACnD;AACA,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,UAAU,MAAA,EAAO;AACvB,MAAA,MAAM,KAAK,KAAA,CAAM;AAAA,QACf,aAAA,EAAe,KAAA;AAAA,QACf,SAAS,MAAA,CAAO,OAAA;AAAA,QAChB,OAAO,KAAA,CAAM,OAAA;AAAA,QACb,IAAA,EAAM,KAAA;AAAA,QACN,MAAM,MAAA,CAAO,IAAA;AAAA,QACb,MAAA,EAAQ,IAAA;AAAA,QACR,SAAA,EAAW,OAAA;AAAA,QACX,WAAW,MAAA,CAAO,SAAA;AAAA,QAClB,OAAA;AAAA,QACA,UAAA,EAAY,UAAA,CAAW,MAAA,CAAO,SAAA,EAAW,OAAO,CAAA;AAAA,QAChD,UAAA,EAAY,UAAA;AAAA,QACZ,MAAA,EAAQ,oBAAA;AAAA,QACR,UAAA,EAAY;AAAA,UACV,WAAA,EAAa,eAAA;AAAA,UACb,aAAa,IAAA,CAAK,WAAA;AAAA,UAClB,OAAA,EAAS,MAAM,OAAA,IAAW,MAAA;AAAA,UAC1B,gBAAA,EAAkB,eAAA,CAAgB,KAAA,CAAM,QAAQ;AAAA,SAClD;AAAA,QACA,KAAA,EAAO;AAAA,UACL,SAAS,KAAA,CAAM;AAAA;AACjB,OACD,CAAA;AACD,MAAA,IAAA,CAAK,YAAA,CAAa,MAAA,CAAO,KAAA,CAAM,OAAO,CAAA;AAAA,IACxC,CAAC,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,YAAY,IAAA,EAAqC;AACrD,IAAA,MAAM,IAAA,CAAK,eAAA,CAAgB,aAAA,EAAe,YAAY;AACpD,MAAA,IAAI,KAAK,MAAA,EAAQ;AACf,QAAA,IAAA,CAAK,uBAAuB,qDAAqD,CAAA;AACjF,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,SAAA,GAAY,IAAA,CAAK,SAAA,IAAa,MAAA,EAAO;AAC3C,MAAA,MAAM,OAAA,GAAU,WAAA,CAAY,IAAA,CAAK,MAAM,CAAA;AACvC,MAAA,MAAM,QAAA,GAAW,IAAA,CAAK,oBAAA,CAAqB,IAAI,CAAA;AAC/C,MAAA,MAAM,IAAA,GAAO,QAAA,CAAS,IAAA,CAAK,QAAA,CAAS,IAAI,CAAA;AACxC,MAAA,MAAM,IAAA,GAAO,QAAA,CAAS,IAAA,CAAK,QAAQ,CAAA;AACnC,MAAA,IAAA,CAAK,WAAA,CAAY,GAAA,CAAI,IAAA,CAAK,MAAA,EAAQ;AAAA,QAChC,OAAA;AAAA,QACA,OAAO,IAAA,CAAK,OAAA;AAAA,QACZ,QAAA;AAAA,QACA,SAAA;AAAA,QACA,IAAA;AAAA,QACA;AAAA,OACD,CAAA;AAED,MAAA,MAAM,KAAK,KAAA,CAAM;AAAA,QACf,aAAA,EAAe,KAAA;AAAA,QACf,OAAA;AAAA,QACA,OAAO,IAAA,CAAK,OAAA;AAAA,QACZ,QAAA;AAAA,QACA,IAAA;AAAA,QACA,IAAA;AAAA,QACA,MAAA,EAAQ,SAAA;AAAA,QACR,SAAA,EAAW,SAAA;AAAA,QACX,SAAA;AAAA,QACA,UAAA,EAAY,UAAA;AAAA,QACZ,MAAA,EAAQ,oBAAA;AAAA,QACR,UAAA,EAAY;AAAA,UACV,GAAG,qBAAqB,IAAI,CAAA;AAAA,UAC5B,GAAG,sBAAA,CAAuB,IAAA,CAAK,QAAQ;AAAA,SACzC;AAAA,QACA,YAAA,EAAc,gBAAA,CAAiB,IAAA,CAAK,QAAQ,CAAA;AAAA,QAC5C,UAAA,EAAY,cAAA;AAAA,UACV,KAAK,QAAA,CAAS,IAAA,KAAS,YAAA,GAAe,IAAA,CAAK,SAAS,KAAA,GAAQ;AAAA,SAC9D;AAAA,QACA,KAAA,EAAO;AAAA,UACL,SAAS,IAAA,CAAK,OAAA;AAAA,UACd,QAAQ,IAAA,CAAK,MAAA;AAAA,UACb,YAAA,EAAc,KAAK,QAAA,IAAY;AAAA;AACjC,OACD,CAAA;AAAA,IACH,CAAC,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,UAAU,IAAA,EAAqC;AACnD,IAAA,MAAM,IAAA,CAAK,eAAA,CAAgB,WAAA,EAAa,YAAY;AAClD,MAAA,IAAI,KAAK,MAAA,EAAQ;AACf,QAAA,IAAA,CAAK,uBAAuB,mDAAmD,CAAA;AAC/E,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,WAAA,CAAY,GAAA,CAAI,KAAK,MAAM,CAAA;AAC/C,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,IAAA,CAAK,sBAAA;AAAA,UACH,CAAA,+BAAA,EAAkC,KAAK,MAAM,CAAA,gCAAA;AAAA,SAC/C;AACA,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,OAAA,IAAW,MAAA,EAAO;AACvC,MAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,IAAA,CAAK,KAAK,CAAA;AACvC,MAAA,MAAM,KAAK,KAAA,CAAM;AAAA,QACf,aAAA,EAAe,KAAA;AAAA,QACf,SAAS,MAAA,CAAO,OAAA;AAAA,QAChB,OAAO,MAAA,CAAO,KAAA;AAAA,QACd,UAAU,MAAA,CAAO,QAAA;AAAA,QACjB,MAAM,MAAA,CAAO,IAAA;AAAA,QACb,MAAM,MAAA,CAAO,IAAA;AAAA,QACb,MAAA,EAAQ,QAAQ,OAAA,GAAU,IAAA;AAAA,QAC1B,SAAA,EAAW,OAAA;AAAA,QACX,WAAW,MAAA,CAAO,SAAA;AAAA,QAClB,OAAA;AAAA,QACA,UAAA,EAAY,UAAA,CAAW,MAAA,CAAO,SAAA,EAAW,OAAO,CAAA;AAAA,QAChD,UAAA,EAAY,UAAA;AAAA,QACZ,MAAA,EAAQ,oBAAA;AAAA,QACR,UAAA,EAAY;AAAA,UACV,GAAG,qBAAqB,IAAI,CAAA;AAAA,UAC5B,GAAG,sBAAA,CAAuB,IAAA,CAAK,QAAQ,CAAA;AAAA,UACvC,WAAA,EAAa,gBAAA;AAAA,UACb,gBAAA,EAAkB,wBAAA,CAAyB,IAAA,CAAK,KAAA,EAAO,IAAI;AAAA,SAC7D;AAAA,QACA,YAAA,EAAc,gBAAA,CAAiB,IAAA,CAAK,QAAQ,CAAA;AAAA,QAC5C,aAAA,EAAe,iBAAA,CAAkB,IAAA,CAAK,QAAQ,CAAA;AAAA,QAC9C,KAAA;AAAA,QACA,UAAA,EAAY,cAAA;AAAA,UACV,KAAK,QAAA,CAAS,IAAA,KAAS,YAAA,GAAe,IAAA,CAAK,SAAS,KAAA,GAAQ;AAAA,SAC9D;AAAA,QACA,KAAA,EAAO;AAAA,UACL,SAAS,IAAA,CAAK,OAAA;AAAA,UACd,QAAQ,IAAA,CAAK,MAAA;AAAA,UACb,YAAA,EAAc,KAAK,QAAA,IAAY;AAAA;AACjC,OACD,CAAA;AACD,MAAA,IAAA,CAAK,WAAA,CAAY,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA;AAAA,IACrC,CAAC,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,UAAA,GAA4B;AAChC,IAAA,IAAI;AACF,MAAA,MAAM,IAAA,CAAK,QAAQ,KAAA,IAAQ;AAAA,IAC7B,SAAS,KAAA,EAAO;AACd,MAAA,IAAA,CAAK,YAAY,aAAA,IAAiB,CAAA;AAClC,MAAA,IAAA,CAAK,WAAA,CAAY,SAAA,GAAY,cAAA,CAAe,KAAK,CAAA;AAAA,IACnD;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,QAAA,EAAkC;AAC/C,IAAA,IAAI,KAAK,MAAA,EAAQ;AACjB,IAAA,IAAI;AACF,MAAA,MAAM,IAAA,CAAK,QAAQ,KAAA,IAAQ;AAAA,IAC7B,SAAS,KAAA,EAAO;AACd,MAAA,IAAA,CAAK,YAAY,gBAAA,IAAoB,CAAA;AACrC,MAAA,IAAA,CAAK,WAAA,CAAY,SAAA,GAAY,cAAA,CAAe,KAAK,CAAA;AAAA,IACnD,CAAA,SAAE;AACA,MAAA,IAAA,CAAK,MAAA,GAAS,IAAA;AACd,MAAA,IAAA,CAAK,aAAa,KAAA,EAAM;AACxB,MAAA,IAAA,CAAK,YAAY,KAAA,EAAM;AAAA,IACzB;AAAA,EACF;AAAA,EAEA,cAAA,GAAsD;AACpD,IAAA,OAAO,EAAE,GAAG,IAAA,CAAK,WAAA,EAAY;AAAA,EAC/B;AAAA,EAEA,cAAA,GAA+C;AAC7C,IAAA,OAAO,IAAA,CAAK,QAAQ,QAAA,IAAW;AAAA,EACjC;AAAA,EAEQ,qBAAqB,IAAA,EAA0C;AACrE,IAAA,IAAI,IAAA,CAAK,QAAA,EAAU,OAAO,WAAA,CAAY,KAAK,QAAQ,CAAA;AACnD,IAAA,OAAO,IAAA,CAAK,YAAA,CAAa,GAAA,CAAI,IAAA,CAAK,OAAO,CAAA,EAAG,OAAA;AAAA,EAC9C;AAAA,EAEA,MAAc,eAAA,CACZ,YAAA,EACA,GAAA,EACe;AACf,IAAA,IAAI;AACF,MAAA,MAAM,GAAA,EAAI;AAAA,IACZ,SAAS,KAAA,EAAO;AACd,MAAA,IAAA,CAAK,uBAAuB,CAAA,EAAG,YAAY,KAAK,cAAA,CAAe,KAAK,CAAC,CAAA,CAAE,CAAA;AAAA,IACzE;AAAA,EACF;AAAA,EAEQ,uBAAuB,OAAA,EAAuB;AACpD,IAAA,IAAA,CAAK,YAAY,iBAAA,IAAqB,CAAA;AACtC,IAAA,IAAA,CAAK,YAAY,WAAA,GAAc,OAAA;AAAA,EACjC;AAAA,EAEQ,2BAAA,GAAoC;AAC1C,IAAA,MAAM,qBAA+B,EAAC;AACtC,IAAA,IAAI,IAAA,CAAK,gBAAA,KAAqB,SAAA,EAAW,kBAAA,CAAmB,KAAK,SAAS,CAAA;AAC1E,IAAA,IAAI,KAAK,OAAA,CAAQ,gBAAA,KAAqB,MAAA,EAAW,kBAAA,CAAmB,KAAK,kBAAkB,CAAA;AAC3F,IAAA,IAAI,KAAK,OAAA,CAAQ,eAAA,KAAoB,MAAA,EAAW,kBAAA,CAAmB,KAAK,iBAAiB,CAAA;AAEzF,IAAA,IAAI,IAAA,CAAK,qBAAqB,SAAA,EAAW;AACvC,MAAA,IAAA,CAAK,sBAAA;AAAA,QACH,CAAA,gHAAA,EAAmH,kBAAA,CAAmB,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA;AAAA,OAClJ;AACA,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,kBAAA,CAAmB,SAAS,CAAA,EAAG;AACjC,MAAA,IAAA,CAAK,sBAAA;AAAA,QACH,CAAA,4EAAA,EAA+E,kBAAA,CAAmB,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA;AAAA,OAC9G;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAc,MAAM,KAAA,EAA6C;AAC/D,IAAA,IAAI,CAAC,KAAK,MAAA,EAAQ;AAElB,IAAA,IAAI;AACF,MAAA,MAAM,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA;AAAA,IAC/B,SAAS,KAAA,EAAO;AACd,MAAA,IAAA,CAAK,YAAY,aAAA,IAAiB,CAAA;AAClC,MAAA,IAAA,CAAK,WAAA,CAAY,SAAA,GAAY,cAAA,CAAe,KAAK,CAAA;AAAA,IACnD;AAAA,EACF;AACF,CAAA;AAeO,SAAS,qBAAA,CACd,OAAA,GAA2C,EAAC,EACT;AACnC,EAAA,OAAO,IAAI,yCAAyC,OAAO,CAAA;AAC7D","file":"index.cjs","sourcesContent":["import type {\n Span,\n SpanData,\n SpanError,\n Trace,\n TracingProcessor,\n} from \"@openai/agents\";\nimport type {\n PersistedInspectError,\n PersistedInspectEvent,\n PersistedTokenUsage,\n RedactionProfile,\n} from \"agent-inspect\";\nimport { fileWriter } from \"agent-inspect/writers\";\nimport type { TraceWriter, TraceWriterStats } from \"agent-inspect/writers\";\n\n/**\n * Experimental capture mode for the OpenAI Agents JS adapter.\n *\n * @experimental This package is part of the v1.8 adapter train. `preview` is\n * currently rejected with diagnostics and falls back to metadata-only capture.\n */\nexport type AgentInspectOpenAiAgentsCaptureMode = \"metadata-only\" | \"preview\";\n\n/**\n * Options for the experimental OpenAI Agents JS tracing processor.\n *\n * @experimental Install processors with `setTraceProcessors([...])`\n * replacement behavior for local-only tracing. Do not use `addTraceProcessor()`\n * as the default path because it preserves the SDK's default exporter.\n */\nexport interface AgentInspectOpenAiAgentsOptions {\n /**\n * Explicit local writer for persisted v0.2 AgentInspect events.\n */\n writer?: TraceWriter;\n\n /**\n * Convenience local trace directory for writer-owned persistence.\n */\n traceDir?: string;\n\n /**\n * Optional workflow name overriding the SDK trace name.\n */\n workflowName?: string;\n\n /**\n * Capture policy. Defaults to metadata-only.\n *\n * @experimental `preview` is not implemented yet; requesting it records a\n * diagnostic warning and keeps metadata-only persistence.\n */\n capture?: AgentInspectOpenAiAgentsCaptureMode;\n\n /**\n * Redaction profile for future preview capture.\n *\n * @experimental Currently diagnostic-only because the processor persists\n * metadata summaries and never writes raw span content by default.\n */\n redactionProfile?: RedactionProfile;\n\n /**\n * Bounds future preview capture.\n *\n * @experimental Currently diagnostic-only because `preview` falls back to\n * metadata-only capture.\n */\n maxPreviewChars?: number;\n}\n\nexport interface AgentInspectOpenAiAgentsDiagnostics {\n writeFailures: number;\n lifecycleWarnings: number;\n flushFailures: number;\n shutdownFailures: number;\n lastError?: string;\n lastWarning?: string;\n runtimeMappingImplemented: true;\n}\n\nexport interface AgentInspectOpenAiAgentsProcessor extends TracingProcessor {\n /**\n * Documents the only safe default install mode for this adapter.\n */\n readonly installMode: \"setTraceProcessors\";\n\n /**\n * This processor never installs itself globally and performs no network I/O.\n */\n readonly localOnly: true;\n\n getDiagnostics(): AgentInspectOpenAiAgentsDiagnostics;\n getWriterStats(): TraceWriterStats | undefined;\n}\n\ntype ActiveTrace = {\n eventId: string;\n startedAt: string;\n name: string;\n};\n\ntype ActiveSpan = {\n eventId: string;\n runId: string;\n parentId?: string;\n startedAt: string;\n name: string;\n kind: PersistedInspectEvent[\"kind\"];\n};\n\ntype SpanDataType = SpanData[\"type\"];\n\nconst OPENAI_AGENTS_SOURCE = {\n type: \"adapter\",\n name: \"@agent-inspect/openai-agents\",\n version: \"experimental\",\n} as const;\n\nfunction nowIso(): string {\n return new Date().toISOString();\n}\n\nfunction normalizeError(error: unknown): string {\n if (error instanceof Error && error.message.trim() !== \"\") {\n return error.message;\n }\n if (typeof error === \"string\" && error.trim() !== \"\") {\n return error;\n }\n return \"Unknown OpenAI Agents processor error\";\n}\n\nfunction durationMs(startedAt: string, endedAt: string): number | undefined {\n const started = Date.parse(startedAt);\n const ended = Date.parse(endedAt);\n if (!Number.isFinite(started) || !Number.isFinite(ended)) return undefined;\n return Math.max(0, ended - started);\n}\n\nfunction countRecordKeys(value: unknown): number | undefined {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return undefined;\n }\n return Object.keys(value).length;\n}\n\nfunction normalizeMaxPreviewChars(value: unknown): number | undefined {\n if (typeof value !== \"number\" || !Number.isFinite(value) || value < 0) {\n return undefined;\n }\n return Math.floor(value);\n}\n\nfunction summarizeUnknown(value: unknown): Record<string, unknown> {\n if (value === null) return { type: \"null\" };\n if (Array.isArray(value)) return { type: \"array\", itemCount: value.length };\n\n if (typeof value === \"object\") {\n return { type: \"object\", keyCount: countRecordKeys(value) ?? 0 };\n }\n if (typeof value === \"string\") {\n return { type: \"string\", length: value.length };\n }\n const valueType = typeof value;\n if (valueType === \"number\" || valueType === \"boolean\" || valueType === \"bigint\") {\n return { type: valueType };\n }\n if (valueType === \"undefined\") return { type: \"undefined\" };\n return { type: \"unknown\" };\n}\n\nfunction summarizeOptionalUnknown(value: unknown): Record<string, unknown> | undefined {\n return value === undefined ? undefined : summarizeUnknown(value);\n}\n\nfunction summarizeError(error: SpanError | null | undefined): PersistedInspectError | undefined {\n if (!error?.message) return undefined;\n return { message: error.message };\n}\n\nfunction summarizeUsage(usage: unknown): PersistedTokenUsage | undefined {\n if (typeof usage !== \"object\" || usage === null || Array.isArray(usage)) {\n return undefined;\n }\n\n const record = usage as Record<string, unknown>;\n const tokenUsage: PersistedTokenUsage = {};\n if (typeof record.input_tokens === \"number\" && Number.isFinite(record.input_tokens)) {\n tokenUsage.input = record.input_tokens;\n }\n if (typeof record.output_tokens === \"number\" && Number.isFinite(record.output_tokens)) {\n tokenUsage.output = record.output_tokens;\n }\n if (tokenUsage.input !== undefined || tokenUsage.output !== undefined) {\n tokenUsage.total = (tokenUsage.input ?? 0) + (tokenUsage.output ?? 0);\n }\n\n const details = record.details;\n if (typeof details === \"object\" && details !== null && !Array.isArray(details)) {\n const detailRecord = details as Record<string, unknown>;\n const cached = detailRecord.cached_tokens ?? detailRecord.cached_input_tokens;\n if (typeof cached === \"number\" && Number.isFinite(cached)) {\n tokenUsage.cached = cached;\n }\n }\n\n return Object.keys(tokenUsage).length > 0 ? tokenUsage : undefined;\n}\n\nfunction spanKind(type: SpanDataType): PersistedInspectEvent[\"kind\"] {\n switch (type) {\n case \"agent\":\n return \"AGENT\";\n case \"generation\":\n case \"response\":\n case \"transcription\":\n case \"speech\":\n return \"LLM\";\n case \"function\":\n case \"mcp_tools\":\n return \"TOOL\";\n case \"handoff\":\n case \"guardrail\":\n return \"DECISION\";\n case \"custom\":\n case \"speech_group\":\n return \"LOGIC\";\n default:\n return \"LOGIC\";\n }\n}\n\nfunction spanName(data: SpanData): string {\n switch (data.type) {\n case \"agent\":\n case \"function\":\n case \"custom\":\n case \"guardrail\":\n return data.name;\n case \"generation\":\n return data.model ? `generation:${data.model}` : \"generation\";\n case \"response\":\n return data.response_id ? `response:${data.response_id}` : \"response\";\n case \"handoff\":\n return data.to_agent ? `handoff:${data.to_agent}` : \"handoff\";\n case \"mcp_tools\":\n return data.server ? `mcp-tools:${data.server}` : \"mcp-tools\";\n case \"transcription\":\n return data.model ? `transcription:${data.model}` : \"transcription\";\n case \"speech\":\n return data.model ? `speech:${data.model}` : \"speech\";\n case \"speech_group\":\n return \"speech-group\";\n default:\n return \"openai-agents-span\";\n }\n}\n\nfunction commonSpanAttributes(span: Span<SpanData>): Record<string, unknown> {\n return {\n legacyEvent: \"step_started\",\n stepId: span.spanId,\n stepType: mapSpanTypeToStepType(span.spanData.type),\n spanType: span.spanData.type,\n traceId: span.traceId,\n spanId: span.spanId,\n parentSpanId: span.parentId ?? undefined,\n traceMetadataKeyCount: countRecordKeys(span.traceMetadata),\n };\n}\n\nfunction specificSpanAttributes(data: SpanData): Record<string, unknown> {\n switch (data.type) {\n case \"agent\":\n return {\n agentName: data.name,\n handoffCount: data.handoffs?.length ?? 0,\n handoffNames: data.handoffs,\n toolCount: data.tools?.length ?? 0,\n toolNames: data.tools,\n outputType: data.output_type,\n };\n case \"function\":\n return {\n toolName: data.name,\n hasInput: data.input !== undefined,\n hasOutput: data.output !== undefined,\n inputSummary: summarizeUnknown(data.input),\n outputSummary: summarizeUnknown(data.output),\n mcpDataSummary: summarizeOptionalUnknown(data.mcp_data),\n };\n case \"generation\":\n return {\n model: data.model,\n modelConfigKeyCount: countRecordKeys(data.model_config),\n inputSummary: summarizeOptionalUnknown(data.input),\n outputSummary: summarizeOptionalUnknown(data.output),\n usageDetailsKeyCount: countRecordKeys(data.usage?.details),\n };\n case \"response\":\n return {\n responseId: data.response_id,\n inputSummary: summarizeOptionalUnknown(data._input),\n responseSummary: summarizeOptionalUnknown(data._response),\n };\n case \"handoff\":\n return {\n fromAgent: data.from_agent,\n toAgent: data.to_agent,\n };\n case \"custom\":\n return {\n customName: data.name,\n dataSummary: summarizeUnknown(data.data),\n };\n case \"guardrail\":\n return {\n guardrailName: data.name,\n triggered: data.triggered,\n };\n case \"mcp_tools\":\n return {\n server: data.server,\n toolCount: data.result?.length ?? 0,\n toolNames: data.result,\n };\n case \"transcription\":\n return {\n model: data.model,\n inputFormat: data.input.format,\n inputSummary: summarizeUnknown(data.input.data),\n outputSummary: summarizeOptionalUnknown(data.output),\n modelConfigKeyCount: countRecordKeys(data.model_config),\n };\n case \"speech\":\n return {\n model: data.model,\n inputSummary: summarizeOptionalUnknown(data.input),\n outputFormat: data.output.format,\n outputSummary: summarizeUnknown(data.output.data),\n modelConfigKeyCount: countRecordKeys(data.model_config),\n };\n case \"speech_group\":\n return {\n inputSummary: summarizeOptionalUnknown(data.input),\n };\n default:\n return {};\n }\n}\n\nfunction mapSpanTypeToStepType(type: SpanDataType): string {\n switch (type) {\n case \"generation\":\n case \"response\":\n case \"transcription\":\n case \"speech\":\n return \"llm\";\n case \"function\":\n case \"mcp_tools\":\n return \"tool\";\n case \"handoff\":\n case \"guardrail\":\n return \"decision\";\n case \"agent\":\n return \"logic\";\n case \"custom\":\n case \"speech_group\":\n return \"custom\";\n default:\n return \"logic\";\n }\n}\n\nfunction spanInputSummary(data: SpanData): unknown {\n switch (data.type) {\n case \"generation\":\n return summarizeOptionalUnknown(data.input);\n case \"function\":\n return summarizeUnknown(data.input);\n case \"response\":\n return summarizeOptionalUnknown(data._input);\n case \"custom\":\n return summarizeUnknown(data.data);\n case \"transcription\":\n return { format: data.input.format, ...summarizeUnknown(data.input.data) };\n case \"speech\":\n case \"speech_group\":\n return summarizeOptionalUnknown(data.input);\n default:\n return undefined;\n }\n}\n\nfunction spanOutputSummary(data: SpanData): unknown {\n switch (data.type) {\n case \"generation\":\n return summarizeOptionalUnknown(data.output);\n case \"function\":\n return summarizeUnknown(data.output);\n case \"response\":\n return summarizeOptionalUnknown(data._response);\n case \"guardrail\":\n return { triggered: data.triggered };\n case \"mcp_tools\":\n return { toolCount: data.result?.length ?? 0 };\n case \"transcription\":\n return summarizeOptionalUnknown(data.output);\n case \"speech\":\n return { format: data.output.format, ...summarizeUnknown(data.output.data) };\n default:\n return undefined;\n }\n}\n\nfunction traceEventId(traceId: string): string {\n return `openai_agents_trace:${traceId}`;\n}\n\nfunction spanEventId(spanId: string): string {\n return `openai_agents_span:${spanId}`;\n}\n\nclass AgentInspectOpenAiAgentsTracingProcessor implements AgentInspectOpenAiAgentsProcessor {\n readonly installMode = \"setTraceProcessors\" as const;\n readonly localOnly = true as const;\n\n private readonly writer: TraceWriter | undefined;\n private readonly requestedCapture: AgentInspectOpenAiAgentsCaptureMode;\n private readonly effectiveCapture: \"metadata-only\" = \"metadata-only\";\n private readonly diagnostics: AgentInspectOpenAiAgentsDiagnostics = {\n writeFailures: 0,\n lifecycleWarnings: 0,\n flushFailures: 0,\n shutdownFailures: 0,\n runtimeMappingImplemented: true,\n };\n private readonly activeTraces = new Map<string, ActiveTrace>();\n private readonly activeSpans = new Map<string, ActiveSpan>();\n private closed = false;\n\n constructor(private readonly options: AgentInspectOpenAiAgentsOptions) {\n this.requestedCapture = options.capture ?? \"metadata-only\";\n this.writer = options.writer ?? (options.traceDir ? fileWriter({ dir: options.traceDir }) : undefined);\n for (const key of [\n \"options\",\n \"writer\",\n \"requestedCapture\",\n \"effectiveCapture\",\n \"diagnostics\",\n \"activeTraces\",\n \"activeSpans\",\n \"closed\",\n ] as const) {\n Object.defineProperty(this, key, { enumerable: false });\n }\n this.recordCaptureOptionWarnings();\n }\n\n start(): void {\n // Local writer-backed processor has no export loop to start.\n }\n\n async onTraceStart(trace: Trace): Promise<void> {\n await this.handleLifecycle(\"onTraceStart\", async () => {\n if (this.closed) {\n this.recordLifecycleWarning(\"onTraceStart ignored because processor is shut down.\");\n return;\n }\n\n const startedAt = nowIso();\n const name = this.options.workflowName ?? trace.name ?? \"openai-agents-run\";\n const eventId = traceEventId(trace.traceId);\n this.activeTraces.set(trace.traceId, { eventId, startedAt, name });\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId,\n runId: trace.traceId,\n kind: \"RUN\",\n name,\n status: \"running\",\n timestamp: startedAt,\n startedAt,\n confidence: \"explicit\",\n source: OPENAI_AGENTS_SOURCE,\n attributes: {\n legacyEvent: \"run_started\",\n installMode: this.installMode,\n capture: this.effectiveCapture,\n requestedCapture:\n this.requestedCapture === this.effectiveCapture\n ? undefined\n : this.requestedCapture,\n previewCaptureSupported:\n this.requestedCapture === \"preview\" ? false : undefined,\n redactionProfile: this.options.redactionProfile,\n maxPreviewChars: normalizeMaxPreviewChars(this.options.maxPreviewChars),\n groupId: trace.groupId ?? undefined,\n metadataKeyCount: countRecordKeys(trace.metadata),\n },\n trace: {\n traceId: trace.traceId,\n },\n });\n });\n }\n\n async onTraceEnd(trace: Trace): Promise<void> {\n await this.handleLifecycle(\"onTraceEnd\", async () => {\n if (this.closed) {\n this.recordLifecycleWarning(\"onTraceEnd ignored because processor is shut down.\");\n return;\n }\n\n const active = this.activeTraces.get(trace.traceId);\n if (!active) {\n this.recordLifecycleWarning(\n `onTraceEnd ignored because trace ${trace.traceId} has no matching start callback.`,\n );\n return;\n }\n\n const endedAt = nowIso();\n await this.write({\n schemaVersion: \"0.2\",\n eventId: active.eventId,\n runId: trace.traceId,\n kind: \"RUN\",\n name: active.name,\n status: \"ok\",\n timestamp: endedAt,\n startedAt: active.startedAt,\n endedAt,\n durationMs: durationMs(active.startedAt, endedAt),\n confidence: \"explicit\",\n source: OPENAI_AGENTS_SOURCE,\n attributes: {\n legacyEvent: \"run_completed\",\n installMode: this.installMode,\n groupId: trace.groupId ?? undefined,\n metadataKeyCount: countRecordKeys(trace.metadata),\n },\n trace: {\n traceId: trace.traceId,\n },\n });\n this.activeTraces.delete(trace.traceId);\n });\n }\n\n async onSpanStart(span: Span<SpanData>): Promise<void> {\n await this.handleLifecycle(\"onSpanStart\", async () => {\n if (this.closed) {\n this.recordLifecycleWarning(\"onSpanStart ignored because processor is shut down.\");\n return;\n }\n\n const startedAt = span.startedAt ?? nowIso();\n const eventId = spanEventId(span.spanId);\n const parentId = this.resolveParentEventId(span);\n const kind = spanKind(span.spanData.type);\n const name = spanName(span.spanData);\n this.activeSpans.set(span.spanId, {\n eventId,\n runId: span.traceId,\n parentId,\n startedAt,\n name,\n kind,\n });\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId,\n runId: span.traceId,\n parentId,\n kind,\n name,\n status: \"running\",\n timestamp: startedAt,\n startedAt,\n confidence: \"explicit\",\n source: OPENAI_AGENTS_SOURCE,\n attributes: {\n ...commonSpanAttributes(span),\n ...specificSpanAttributes(span.spanData),\n },\n inputSummary: spanInputSummary(span.spanData),\n tokenUsage: summarizeUsage(\n span.spanData.type === \"generation\" ? span.spanData.usage : undefined,\n ),\n trace: {\n traceId: span.traceId,\n spanId: span.spanId,\n parentSpanId: span.parentId ?? undefined,\n },\n });\n });\n }\n\n async onSpanEnd(span: Span<SpanData>): Promise<void> {\n await this.handleLifecycle(\"onSpanEnd\", async () => {\n if (this.closed) {\n this.recordLifecycleWarning(\"onSpanEnd ignored because processor is shut down.\");\n return;\n }\n\n const active = this.activeSpans.get(span.spanId);\n if (!active) {\n this.recordLifecycleWarning(\n `onSpanEnd ignored because span ${span.spanId} has no matching start callback.`,\n );\n return;\n }\n\n const endedAt = span.endedAt ?? nowIso();\n const error = summarizeError(span.error);\n await this.write({\n schemaVersion: \"0.2\",\n eventId: active.eventId,\n runId: active.runId,\n parentId: active.parentId,\n kind: active.kind,\n name: active.name,\n status: error ? \"error\" : \"ok\",\n timestamp: endedAt,\n startedAt: active.startedAt,\n endedAt,\n durationMs: durationMs(active.startedAt, endedAt),\n confidence: \"explicit\",\n source: OPENAI_AGENTS_SOURCE,\n attributes: {\n ...commonSpanAttributes(span),\n ...specificSpanAttributes(span.spanData),\n legacyEvent: \"step_completed\",\n errorDataSummary: summarizeOptionalUnknown(span.error?.data),\n },\n inputSummary: spanInputSummary(span.spanData),\n outputSummary: spanOutputSummary(span.spanData),\n error,\n tokenUsage: summarizeUsage(\n span.spanData.type === \"generation\" ? span.spanData.usage : undefined,\n ),\n trace: {\n traceId: span.traceId,\n spanId: span.spanId,\n parentSpanId: span.parentId ?? undefined,\n },\n });\n this.activeSpans.delete(span.spanId);\n });\n }\n\n async forceFlush(): Promise<void> {\n try {\n await this.writer?.flush?.();\n } catch (error) {\n this.diagnostics.flushFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n }\n }\n\n async shutdown(_timeout?: number): Promise<void> {\n if (this.closed) return;\n try {\n await this.writer?.close?.();\n } catch (error) {\n this.diagnostics.shutdownFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n } finally {\n this.closed = true;\n this.activeTraces.clear();\n this.activeSpans.clear();\n }\n }\n\n getDiagnostics(): AgentInspectOpenAiAgentsDiagnostics {\n return { ...this.diagnostics };\n }\n\n getWriterStats(): TraceWriterStats | undefined {\n return this.writer?.getStats?.();\n }\n\n private resolveParentEventId(span: Span<SpanData>): string | undefined {\n if (span.parentId) return spanEventId(span.parentId);\n return this.activeTraces.get(span.traceId)?.eventId;\n }\n\n private async handleLifecycle(\n callbackName: string,\n run: () => Promise<void>,\n ): Promise<void> {\n try {\n await run();\n } catch (error) {\n this.recordLifecycleWarning(`${callbackName}: ${normalizeError(error)}`);\n }\n }\n\n private recordLifecycleWarning(message: string): void {\n this.diagnostics.lifecycleWarnings += 1;\n this.diagnostics.lastWarning = message;\n }\n\n private recordCaptureOptionWarnings(): void {\n const previewOnlyOptions: string[] = [];\n if (this.requestedCapture === \"preview\") previewOnlyOptions.push(\"capture\");\n if (this.options.redactionProfile !== undefined) previewOnlyOptions.push(\"redactionProfile\");\n if (this.options.maxPreviewChars !== undefined) previewOnlyOptions.push(\"maxPreviewChars\");\n\n if (this.requestedCapture === \"preview\") {\n this.recordLifecycleWarning(\n `OpenAI Agents preview capture is not supported yet; falling back to metadata-only capture. Unsupported options: ${previewOnlyOptions.join(\", \")}.`,\n );\n return;\n }\n\n if (previewOnlyOptions.length > 0) {\n this.recordLifecycleWarning(\n `OpenAI Agents preview-only options have no effect in metadata-only capture: ${previewOnlyOptions.join(\", \")}.`,\n );\n }\n }\n\n private async write(event: PersistedInspectEvent): Promise<void> {\n if (!this.writer) return;\n\n try {\n await this.writer.write(event);\n } catch (error) {\n this.diagnostics.writeFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n }\n }\n}\n\n/**\n * Create an AgentInspect OpenAI Agents JS tracing processor.\n *\n * @experimental Install the returned processor explicitly with replacement\n * semantics:\n *\n * ```ts\n * setTraceProcessors([agentInspectProcessor(options)]);\n * ```\n *\n * The processor does not call `setTraceProcessors()`, `addTraceProcessor()`,\n * OpenAI exporters, or network APIs on import or construction.\n */\nexport function agentInspectProcessor(\n options: AgentInspectOpenAiAgentsOptions = {},\n): AgentInspectOpenAiAgentsProcessor {\n return new AgentInspectOpenAiAgentsTracingProcessor(options);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":["fileWriter"],"mappings":"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","file":"index.cjs","sourcesContent":["import type {\n Span,\n SpanData,\n SpanError,\n Trace,\n TracingProcessor,\n} from \"@openai/agents\";\nimport type {\n RedactionProfile,\n} from \"agent-inspect/advanced\";\nimport type {\n PersistedInspectError,\n PersistedInspectEvent,\n PersistedTokenUsage,\n} from \"agent-inspect/persisted\";\nimport { fileWriter } from \"agent-inspect/writers\";\nimport type { TraceWriter, TraceWriterStats } from \"agent-inspect/writers\";\n\n/**\n * Experimental capture mode for the OpenAI Agents JS adapter.\n *\n * @experimental This package is part of the v1.8 adapter train. `preview` is\n * currently rejected with diagnostics and falls back to metadata-only capture.\n */\nexport type AgentInspectOpenAiAgentsCaptureMode = \"metadata-only\" | \"preview\";\n\n/**\n * Options for the experimental OpenAI Agents JS tracing processor.\n *\n * @experimental Install processors with `setTraceProcessors([...])`\n * replacement behavior for local-only tracing. Do not use `addTraceProcessor()`\n * as the default path because it preserves the SDK's default exporter.\n */\nexport interface AgentInspectOpenAiAgentsOptions {\n /**\n * Explicit local writer for persisted v0.2 AgentInspect events.\n */\n writer?: TraceWriter;\n\n /**\n * Convenience local trace directory for writer-owned persistence.\n */\n traceDir?: string;\n\n /**\n * Optional workflow name overriding the SDK trace name.\n */\n workflowName?: string;\n\n /**\n * Capture policy. Defaults to metadata-only.\n *\n * @experimental `preview` is not implemented yet; requesting it records a\n * diagnostic warning and keeps metadata-only persistence.\n */\n capture?: AgentInspectOpenAiAgentsCaptureMode;\n\n /**\n * Redaction profile for future preview capture.\n *\n * @experimental Currently diagnostic-only because the processor persists\n * metadata summaries and never writes raw span content by default.\n */\n redactionProfile?: RedactionProfile;\n\n /**\n * Bounds future preview capture.\n *\n * @experimental Currently diagnostic-only because `preview` falls back to\n * metadata-only capture.\n */\n maxPreviewChars?: number;\n}\n\nexport interface AgentInspectOpenAiAgentsDiagnostics {\n writeFailures: number;\n lifecycleWarnings: number;\n flushFailures: number;\n shutdownFailures: number;\n lastError?: string;\n lastWarning?: string;\n runtimeMappingImplemented: true;\n}\n\nexport interface AgentInspectOpenAiAgentsProcessor extends TracingProcessor {\n /**\n * Documents the only safe default install mode for this adapter.\n */\n readonly installMode: \"setTraceProcessors\";\n\n /**\n * This processor never installs itself globally and performs no network I/O.\n */\n readonly localOnly: true;\n\n getDiagnostics(): AgentInspectOpenAiAgentsDiagnostics;\n getWriterStats(): TraceWriterStats | undefined;\n}\n\ntype ActiveTrace = {\n eventId: string;\n startedAt: string;\n name: string;\n};\n\ntype ActiveSpan = {\n eventId: string;\n runId: string;\n parentId?: string;\n startedAt: string;\n name: string;\n kind: PersistedInspectEvent[\"kind\"];\n};\n\ntype SpanDataType = SpanData[\"type\"];\n\nconst OPENAI_AGENTS_SOURCE = {\n type: \"adapter\",\n name: \"@agent-inspect/openai-agents\",\n version: \"experimental\",\n} as const;\n\nfunction nowIso(): string {\n return new Date().toISOString();\n}\n\nfunction normalizeError(error: unknown): string {\n if (error instanceof Error && error.message.trim() !== \"\") {\n return error.message;\n }\n if (typeof error === \"string\" && error.trim() !== \"\") {\n return error;\n }\n return \"Unknown OpenAI Agents processor error\";\n}\n\nfunction durationMs(startedAt: string, endedAt: string): number | undefined {\n const started = Date.parse(startedAt);\n const ended = Date.parse(endedAt);\n if (!Number.isFinite(started) || !Number.isFinite(ended)) return undefined;\n return Math.max(0, ended - started);\n}\n\nfunction countRecordKeys(value: unknown): number | undefined {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return undefined;\n }\n return Object.keys(value).length;\n}\n\nfunction normalizeMaxPreviewChars(value: unknown): number | undefined {\n if (typeof value !== \"number\" || !Number.isFinite(value) || value < 0) {\n return undefined;\n }\n return Math.floor(value);\n}\n\nfunction summarizeUnknown(value: unknown): Record<string, unknown> {\n if (value === null) return { type: \"null\" };\n if (Array.isArray(value)) return { type: \"array\", itemCount: value.length };\n\n if (typeof value === \"object\") {\n return { type: \"object\", keyCount: countRecordKeys(value) ?? 0 };\n }\n if (typeof value === \"string\") {\n return { type: \"string\", length: value.length };\n }\n const valueType = typeof value;\n if (valueType === \"number\" || valueType === \"boolean\" || valueType === \"bigint\") {\n return { type: valueType };\n }\n if (valueType === \"undefined\") return { type: \"undefined\" };\n return { type: \"unknown\" };\n}\n\nfunction summarizeOptionalUnknown(value: unknown): Record<string, unknown> | undefined {\n return value === undefined ? undefined : summarizeUnknown(value);\n}\n\nfunction summarizeError(error: SpanError | null | undefined): PersistedInspectError | undefined {\n if (!error?.message) return undefined;\n return { message: error.message };\n}\n\nfunction summarizeUsage(usage: unknown): PersistedTokenUsage | undefined {\n if (typeof usage !== \"object\" || usage === null || Array.isArray(usage)) {\n return undefined;\n }\n\n const record = usage as Record<string, unknown>;\n const tokenUsage: PersistedTokenUsage = {};\n if (typeof record.input_tokens === \"number\" && Number.isFinite(record.input_tokens)) {\n tokenUsage.input = record.input_tokens;\n }\n if (typeof record.output_tokens === \"number\" && Number.isFinite(record.output_tokens)) {\n tokenUsage.output = record.output_tokens;\n }\n if (tokenUsage.input !== undefined || tokenUsage.output !== undefined) {\n tokenUsage.total = (tokenUsage.input ?? 0) + (tokenUsage.output ?? 0);\n }\n\n const details = record.details;\n if (typeof details === \"object\" && details !== null && !Array.isArray(details)) {\n const detailRecord = details as Record<string, unknown>;\n const cached = detailRecord.cached_tokens ?? detailRecord.cached_input_tokens;\n if (typeof cached === \"number\" && Number.isFinite(cached)) {\n tokenUsage.cached = cached;\n }\n }\n\n return Object.keys(tokenUsage).length > 0 ? tokenUsage : undefined;\n}\n\nfunction spanKind(type: SpanDataType): PersistedInspectEvent[\"kind\"] {\n switch (type) {\n case \"agent\":\n return \"AGENT\";\n case \"generation\":\n case \"response\":\n case \"transcription\":\n case \"speech\":\n return \"LLM\";\n case \"function\":\n case \"mcp_tools\":\n return \"TOOL\";\n case \"handoff\":\n case \"guardrail\":\n return \"DECISION\";\n case \"custom\":\n case \"speech_group\":\n return \"LOGIC\";\n default:\n return \"LOGIC\";\n }\n}\n\nfunction spanName(data: SpanData): string {\n switch (data.type) {\n case \"agent\":\n case \"function\":\n case \"custom\":\n case \"guardrail\":\n return data.name;\n case \"generation\":\n return data.model ? `generation:${data.model}` : \"generation\";\n case \"response\":\n return data.response_id ? `response:${data.response_id}` : \"response\";\n case \"handoff\":\n return data.to_agent ? `handoff:${data.to_agent}` : \"handoff\";\n case \"mcp_tools\":\n return data.server ? `mcp-tools:${data.server}` : \"mcp-tools\";\n case \"transcription\":\n return data.model ? `transcription:${data.model}` : \"transcription\";\n case \"speech\":\n return data.model ? `speech:${data.model}` : \"speech\";\n case \"speech_group\":\n return \"speech-group\";\n default:\n return \"openai-agents-span\";\n }\n}\n\nfunction commonSpanAttributes(span: Span<SpanData>): Record<string, unknown> {\n return {\n legacyEvent: \"step_started\",\n stepId: span.spanId,\n stepType: mapSpanTypeToStepType(span.spanData.type),\n spanType: span.spanData.type,\n traceId: span.traceId,\n spanId: span.spanId,\n parentSpanId: span.parentId ?? undefined,\n traceMetadataKeyCount: countRecordKeys(span.traceMetadata),\n };\n}\n\nfunction specificSpanAttributes(data: SpanData): Record<string, unknown> {\n switch (data.type) {\n case \"agent\":\n return {\n agentName: data.name,\n handoffCount: data.handoffs?.length ?? 0,\n handoffNames: data.handoffs,\n toolCount: data.tools?.length ?? 0,\n toolNames: data.tools,\n outputType: data.output_type,\n };\n case \"function\":\n return {\n toolName: data.name,\n hasInput: data.input !== undefined,\n hasOutput: data.output !== undefined,\n inputSummary: summarizeUnknown(data.input),\n outputSummary: summarizeUnknown(data.output),\n mcpDataSummary: summarizeOptionalUnknown(data.mcp_data),\n };\n case \"generation\":\n return {\n model: data.model,\n modelConfigKeyCount: countRecordKeys(data.model_config),\n inputSummary: summarizeOptionalUnknown(data.input),\n outputSummary: summarizeOptionalUnknown(data.output),\n usageDetailsKeyCount: countRecordKeys(data.usage?.details),\n };\n case \"response\":\n return {\n responseId: data.response_id,\n inputSummary: summarizeOptionalUnknown(data._input),\n responseSummary: summarizeOptionalUnknown(data._response),\n };\n case \"handoff\":\n return {\n fromAgent: data.from_agent,\n toAgent: data.to_agent,\n };\n case \"custom\":\n return {\n customName: data.name,\n dataSummary: summarizeUnknown(data.data),\n };\n case \"guardrail\":\n return {\n guardrailName: data.name,\n triggered: data.triggered,\n };\n case \"mcp_tools\":\n return {\n server: data.server,\n toolCount: data.result?.length ?? 0,\n toolNames: data.result,\n };\n case \"transcription\":\n return {\n model: data.model,\n inputFormat: data.input.format,\n inputSummary: summarizeUnknown(data.input.data),\n outputSummary: summarizeOptionalUnknown(data.output),\n modelConfigKeyCount: countRecordKeys(data.model_config),\n };\n case \"speech\":\n return {\n model: data.model,\n inputSummary: summarizeOptionalUnknown(data.input),\n outputFormat: data.output.format,\n outputSummary: summarizeUnknown(data.output.data),\n modelConfigKeyCount: countRecordKeys(data.model_config),\n };\n case \"speech_group\":\n return {\n inputSummary: summarizeOptionalUnknown(data.input),\n };\n default:\n return {};\n }\n}\n\nfunction mapSpanTypeToStepType(type: SpanDataType): string {\n switch (type) {\n case \"generation\":\n case \"response\":\n case \"transcription\":\n case \"speech\":\n return \"llm\";\n case \"function\":\n case \"mcp_tools\":\n return \"tool\";\n case \"handoff\":\n case \"guardrail\":\n return \"decision\";\n case \"agent\":\n return \"logic\";\n case \"custom\":\n case \"speech_group\":\n return \"custom\";\n default:\n return \"logic\";\n }\n}\n\nfunction spanInputSummary(data: SpanData): unknown {\n switch (data.type) {\n case \"generation\":\n return summarizeOptionalUnknown(data.input);\n case \"function\":\n return summarizeUnknown(data.input);\n case \"response\":\n return summarizeOptionalUnknown(data._input);\n case \"custom\":\n return summarizeUnknown(data.data);\n case \"transcription\":\n return { format: data.input.format, ...summarizeUnknown(data.input.data) };\n case \"speech\":\n case \"speech_group\":\n return summarizeOptionalUnknown(data.input);\n default:\n return undefined;\n }\n}\n\nfunction spanOutputSummary(data: SpanData): unknown {\n switch (data.type) {\n case \"generation\":\n return summarizeOptionalUnknown(data.output);\n case \"function\":\n return summarizeUnknown(data.output);\n case \"response\":\n return summarizeOptionalUnknown(data._response);\n case \"guardrail\":\n return { triggered: data.triggered };\n case \"mcp_tools\":\n return { toolCount: data.result?.length ?? 0 };\n case \"transcription\":\n return summarizeOptionalUnknown(data.output);\n case \"speech\":\n return { format: data.output.format, ...summarizeUnknown(data.output.data) };\n default:\n return undefined;\n }\n}\n\nfunction traceEventId(traceId: string): string {\n return `openai_agents_trace:${traceId}`;\n}\n\nfunction spanEventId(spanId: string): string {\n return `openai_agents_span:${spanId}`;\n}\n\nclass AgentInspectOpenAiAgentsTracingProcessor implements AgentInspectOpenAiAgentsProcessor {\n readonly installMode = \"setTraceProcessors\" as const;\n readonly localOnly = true as const;\n\n private readonly writer: TraceWriter | undefined;\n private readonly requestedCapture: AgentInspectOpenAiAgentsCaptureMode;\n private readonly effectiveCapture: \"metadata-only\" = \"metadata-only\";\n private readonly diagnostics: AgentInspectOpenAiAgentsDiagnostics = {\n writeFailures: 0,\n lifecycleWarnings: 0,\n flushFailures: 0,\n shutdownFailures: 0,\n runtimeMappingImplemented: true,\n };\n private readonly activeTraces = new Map<string, ActiveTrace>();\n private readonly activeSpans = new Map<string, ActiveSpan>();\n private closed = false;\n\n constructor(private readonly options: AgentInspectOpenAiAgentsOptions) {\n this.requestedCapture = options.capture ?? \"metadata-only\";\n this.writer = options.writer ?? (options.traceDir ? fileWriter({ dir: options.traceDir }) : undefined);\n for (const key of [\n \"options\",\n \"writer\",\n \"requestedCapture\",\n \"effectiveCapture\",\n \"diagnostics\",\n \"activeTraces\",\n \"activeSpans\",\n \"closed\",\n ] as const) {\n Object.defineProperty(this, key, { enumerable: false });\n }\n this.recordCaptureOptionWarnings();\n }\n\n start(): void {\n // Local writer-backed processor has no export loop to start.\n }\n\n async onTraceStart(trace: Trace): Promise<void> {\n await this.handleLifecycle(\"onTraceStart\", async () => {\n if (this.closed) {\n this.recordLifecycleWarning(\"onTraceStart ignored because processor is shut down.\");\n return;\n }\n\n const startedAt = nowIso();\n const name = this.options.workflowName ?? trace.name ?? \"openai-agents-run\";\n const eventId = traceEventId(trace.traceId);\n this.activeTraces.set(trace.traceId, { eventId, startedAt, name });\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId,\n runId: trace.traceId,\n kind: \"RUN\",\n name,\n status: \"running\",\n timestamp: startedAt,\n startedAt,\n confidence: \"explicit\",\n source: OPENAI_AGENTS_SOURCE,\n attributes: {\n legacyEvent: \"run_started\",\n installMode: this.installMode,\n capture: this.effectiveCapture,\n requestedCapture:\n this.requestedCapture === this.effectiveCapture\n ? undefined\n : this.requestedCapture,\n previewCaptureSupported:\n this.requestedCapture === \"preview\" ? false : undefined,\n redactionProfile: this.options.redactionProfile,\n maxPreviewChars: normalizeMaxPreviewChars(this.options.maxPreviewChars),\n groupId: trace.groupId ?? undefined,\n metadataKeyCount: countRecordKeys(trace.metadata),\n },\n trace: {\n traceId: trace.traceId,\n },\n });\n });\n }\n\n async onTraceEnd(trace: Trace): Promise<void> {\n await this.handleLifecycle(\"onTraceEnd\", async () => {\n if (this.closed) {\n this.recordLifecycleWarning(\"onTraceEnd ignored because processor is shut down.\");\n return;\n }\n\n const active = this.activeTraces.get(trace.traceId);\n if (!active) {\n this.recordLifecycleWarning(\n `onTraceEnd ignored because trace ${trace.traceId} has no matching start callback.`,\n );\n return;\n }\n\n const endedAt = nowIso();\n await this.write({\n schemaVersion: \"0.2\",\n eventId: active.eventId,\n runId: trace.traceId,\n kind: \"RUN\",\n name: active.name,\n status: \"ok\",\n timestamp: endedAt,\n startedAt: active.startedAt,\n endedAt,\n durationMs: durationMs(active.startedAt, endedAt),\n confidence: \"explicit\",\n source: OPENAI_AGENTS_SOURCE,\n attributes: {\n legacyEvent: \"run_completed\",\n installMode: this.installMode,\n groupId: trace.groupId ?? undefined,\n metadataKeyCount: countRecordKeys(trace.metadata),\n },\n trace: {\n traceId: trace.traceId,\n },\n });\n this.activeTraces.delete(trace.traceId);\n });\n }\n\n async onSpanStart(span: Span<SpanData>): Promise<void> {\n await this.handleLifecycle(\"onSpanStart\", async () => {\n if (this.closed) {\n this.recordLifecycleWarning(\"onSpanStart ignored because processor is shut down.\");\n return;\n }\n\n const startedAt = span.startedAt ?? nowIso();\n const eventId = spanEventId(span.spanId);\n const parentId = this.resolveParentEventId(span);\n const kind = spanKind(span.spanData.type);\n const name = spanName(span.spanData);\n this.activeSpans.set(span.spanId, {\n eventId,\n runId: span.traceId,\n parentId,\n startedAt,\n name,\n kind,\n });\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId,\n runId: span.traceId,\n parentId,\n kind,\n name,\n status: \"running\",\n timestamp: startedAt,\n startedAt,\n confidence: \"explicit\",\n source: OPENAI_AGENTS_SOURCE,\n attributes: {\n ...commonSpanAttributes(span),\n ...specificSpanAttributes(span.spanData),\n },\n inputSummary: spanInputSummary(span.spanData),\n tokenUsage: summarizeUsage(\n span.spanData.type === \"generation\" ? span.spanData.usage : undefined,\n ),\n trace: {\n traceId: span.traceId,\n spanId: span.spanId,\n parentSpanId: span.parentId ?? undefined,\n },\n });\n });\n }\n\n async onSpanEnd(span: Span<SpanData>): Promise<void> {\n await this.handleLifecycle(\"onSpanEnd\", async () => {\n if (this.closed) {\n this.recordLifecycleWarning(\"onSpanEnd ignored because processor is shut down.\");\n return;\n }\n\n const active = this.activeSpans.get(span.spanId);\n if (!active) {\n this.recordLifecycleWarning(\n `onSpanEnd ignored because span ${span.spanId} has no matching start callback.`,\n );\n return;\n }\n\n const endedAt = span.endedAt ?? nowIso();\n const error = summarizeError(span.error);\n await this.write({\n schemaVersion: \"0.2\",\n eventId: active.eventId,\n runId: active.runId,\n parentId: active.parentId,\n kind: active.kind,\n name: active.name,\n status: error ? \"error\" : \"ok\",\n timestamp: endedAt,\n startedAt: active.startedAt,\n endedAt,\n durationMs: durationMs(active.startedAt, endedAt),\n confidence: \"explicit\",\n source: OPENAI_AGENTS_SOURCE,\n attributes: {\n ...commonSpanAttributes(span),\n ...specificSpanAttributes(span.spanData),\n legacyEvent: \"step_completed\",\n errorDataSummary: summarizeOptionalUnknown(span.error?.data),\n },\n inputSummary: spanInputSummary(span.spanData),\n outputSummary: spanOutputSummary(span.spanData),\n error,\n tokenUsage: summarizeUsage(\n span.spanData.type === \"generation\" ? span.spanData.usage : undefined,\n ),\n trace: {\n traceId: span.traceId,\n spanId: span.spanId,\n parentSpanId: span.parentId ?? undefined,\n },\n });\n this.activeSpans.delete(span.spanId);\n });\n }\n\n async forceFlush(): Promise<void> {\n try {\n await this.writer?.flush?.();\n } catch (error) {\n this.diagnostics.flushFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n }\n }\n\n async shutdown(_timeout?: number): Promise<void> {\n if (this.closed) return;\n try {\n await this.writer?.close?.();\n } catch (error) {\n this.diagnostics.shutdownFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n } finally {\n this.closed = true;\n this.activeTraces.clear();\n this.activeSpans.clear();\n }\n }\n\n getDiagnostics(): AgentInspectOpenAiAgentsDiagnostics {\n return { ...this.diagnostics };\n }\n\n getWriterStats(): TraceWriterStats | undefined {\n return this.writer?.getStats?.();\n }\n\n private resolveParentEventId(span: Span<SpanData>): string | undefined {\n if (span.parentId) return spanEventId(span.parentId);\n return this.activeTraces.get(span.traceId)?.eventId;\n }\n\n private async handleLifecycle(\n callbackName: string,\n run: () => Promise<void>,\n ): Promise<void> {\n try {\n await run();\n } catch (error) {\n this.recordLifecycleWarning(`${callbackName}: ${normalizeError(error)}`);\n }\n }\n\n private recordLifecycleWarning(message: string): void {\n this.diagnostics.lifecycleWarnings += 1;\n this.diagnostics.lastWarning = message;\n }\n\n private recordCaptureOptionWarnings(): void {\n const previewOnlyOptions: string[] = [];\n if (this.requestedCapture === \"preview\") previewOnlyOptions.push(\"capture\");\n if (this.options.redactionProfile !== undefined) previewOnlyOptions.push(\"redactionProfile\");\n if (this.options.maxPreviewChars !== undefined) previewOnlyOptions.push(\"maxPreviewChars\");\n\n if (this.requestedCapture === \"preview\") {\n this.recordLifecycleWarning(\n `OpenAI Agents preview capture is not supported yet; falling back to metadata-only capture. Unsupported options: ${previewOnlyOptions.join(\", \")}.`,\n );\n return;\n }\n\n if (previewOnlyOptions.length > 0) {\n this.recordLifecycleWarning(\n `OpenAI Agents preview-only options have no effect in metadata-only capture: ${previewOnlyOptions.join(\", \")}.`,\n );\n }\n }\n\n private async write(event: PersistedInspectEvent): Promise<void> {\n if (!this.writer) return;\n\n try {\n await this.writer.write(event);\n } catch (error) {\n this.diagnostics.writeFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n }\n }\n}\n\n/**\n * Create an AgentInspect OpenAI Agents JS tracing processor.\n *\n * @experimental Install the returned processor explicitly with replacement\n * semantics:\n *\n * ```ts\n * setTraceProcessors([agentInspectProcessor(options)]);\n * ```\n *\n * The processor does not call `setTraceProcessors()`, `addTraceProcessor()`,\n * OpenAI exporters, or network APIs on import or construction.\n */\nexport function agentInspectProcessor(\n options: AgentInspectOpenAiAgentsOptions = {},\n): AgentInspectOpenAiAgentsProcessor {\n return new AgentInspectOpenAiAgentsTracingProcessor(options);\n}\n"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { TracingProcessor } from '@openai/agents';
|
|
2
|
-
import { RedactionProfile } from 'agent-inspect';
|
|
3
2
|
import { TraceWriter, TraceWriterStats } from 'agent-inspect/writers';
|
|
4
3
|
|
|
4
|
+
/** Named redaction presets for trace writing and share-safe exports (v1.3.0+). */
|
|
5
|
+
type RedactionProfile = "local" | "share" | "strict";
|
|
6
|
+
|
|
5
7
|
/**
|
|
6
8
|
* Experimental capture mode for the OpenAI Agents JS adapter.
|
|
7
9
|
*
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { TracingProcessor } from '@openai/agents';
|
|
2
|
-
import { RedactionProfile } from 'agent-inspect';
|
|
3
2
|
import { TraceWriter, TraceWriterStats } from 'agent-inspect/writers';
|
|
4
3
|
|
|
4
|
+
/** Named redaction presets for trace writing and share-safe exports (v1.3.0+). */
|
|
5
|
+
type RedactionProfile = "local" | "share" | "strict";
|
|
6
|
+
|
|
5
7
|
/**
|
|
6
8
|
* Experimental capture mode for the OpenAI Agents JS adapter.
|
|
7
9
|
*
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["import type {\n Span,\n SpanData,\n SpanError,\n Trace,\n TracingProcessor,\n} from \"@openai/agents\";\nimport type {\n PersistedInspectError,\n PersistedInspectEvent,\n PersistedTokenUsage,\n RedactionProfile,\n} from \"agent-inspect\";\nimport { fileWriter } from \"agent-inspect/writers\";\nimport type { TraceWriter, TraceWriterStats } from \"agent-inspect/writers\";\n\n/**\n * Experimental capture mode for the OpenAI Agents JS adapter.\n *\n * @experimental This package is part of the v1.8 adapter train. `preview` is\n * currently rejected with diagnostics and falls back to metadata-only capture.\n */\nexport type AgentInspectOpenAiAgentsCaptureMode = \"metadata-only\" | \"preview\";\n\n/**\n * Options for the experimental OpenAI Agents JS tracing processor.\n *\n * @experimental Install processors with `setTraceProcessors([...])`\n * replacement behavior for local-only tracing. Do not use `addTraceProcessor()`\n * as the default path because it preserves the SDK's default exporter.\n */\nexport interface AgentInspectOpenAiAgentsOptions {\n /**\n * Explicit local writer for persisted v0.2 AgentInspect events.\n */\n writer?: TraceWriter;\n\n /**\n * Convenience local trace directory for writer-owned persistence.\n */\n traceDir?: string;\n\n /**\n * Optional workflow name overriding the SDK trace name.\n */\n workflowName?: string;\n\n /**\n * Capture policy. Defaults to metadata-only.\n *\n * @experimental `preview` is not implemented yet; requesting it records a\n * diagnostic warning and keeps metadata-only persistence.\n */\n capture?: AgentInspectOpenAiAgentsCaptureMode;\n\n /**\n * Redaction profile for future preview capture.\n *\n * @experimental Currently diagnostic-only because the processor persists\n * metadata summaries and never writes raw span content by default.\n */\n redactionProfile?: RedactionProfile;\n\n /**\n * Bounds future preview capture.\n *\n * @experimental Currently diagnostic-only because `preview` falls back to\n * metadata-only capture.\n */\n maxPreviewChars?: number;\n}\n\nexport interface AgentInspectOpenAiAgentsDiagnostics {\n writeFailures: number;\n lifecycleWarnings: number;\n flushFailures: number;\n shutdownFailures: number;\n lastError?: string;\n lastWarning?: string;\n runtimeMappingImplemented: true;\n}\n\nexport interface AgentInspectOpenAiAgentsProcessor extends TracingProcessor {\n /**\n * Documents the only safe default install mode for this adapter.\n */\n readonly installMode: \"setTraceProcessors\";\n\n /**\n * This processor never installs itself globally and performs no network I/O.\n */\n readonly localOnly: true;\n\n getDiagnostics(): AgentInspectOpenAiAgentsDiagnostics;\n getWriterStats(): TraceWriterStats | undefined;\n}\n\ntype ActiveTrace = {\n eventId: string;\n startedAt: string;\n name: string;\n};\n\ntype ActiveSpan = {\n eventId: string;\n runId: string;\n parentId?: string;\n startedAt: string;\n name: string;\n kind: PersistedInspectEvent[\"kind\"];\n};\n\ntype SpanDataType = SpanData[\"type\"];\n\nconst OPENAI_AGENTS_SOURCE = {\n type: \"adapter\",\n name: \"@agent-inspect/openai-agents\",\n version: \"experimental\",\n} as const;\n\nfunction nowIso(): string {\n return new Date().toISOString();\n}\n\nfunction normalizeError(error: unknown): string {\n if (error instanceof Error && error.message.trim() !== \"\") {\n return error.message;\n }\n if (typeof error === \"string\" && error.trim() !== \"\") {\n return error;\n }\n return \"Unknown OpenAI Agents processor error\";\n}\n\nfunction durationMs(startedAt: string, endedAt: string): number | undefined {\n const started = Date.parse(startedAt);\n const ended = Date.parse(endedAt);\n if (!Number.isFinite(started) || !Number.isFinite(ended)) return undefined;\n return Math.max(0, ended - started);\n}\n\nfunction countRecordKeys(value: unknown): number | undefined {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return undefined;\n }\n return Object.keys(value).length;\n}\n\nfunction normalizeMaxPreviewChars(value: unknown): number | undefined {\n if (typeof value !== \"number\" || !Number.isFinite(value) || value < 0) {\n return undefined;\n }\n return Math.floor(value);\n}\n\nfunction summarizeUnknown(value: unknown): Record<string, unknown> {\n if (value === null) return { type: \"null\" };\n if (Array.isArray(value)) return { type: \"array\", itemCount: value.length };\n\n if (typeof value === \"object\") {\n return { type: \"object\", keyCount: countRecordKeys(value) ?? 0 };\n }\n if (typeof value === \"string\") {\n return { type: \"string\", length: value.length };\n }\n const valueType = typeof value;\n if (valueType === \"number\" || valueType === \"boolean\" || valueType === \"bigint\") {\n return { type: valueType };\n }\n if (valueType === \"undefined\") return { type: \"undefined\" };\n return { type: \"unknown\" };\n}\n\nfunction summarizeOptionalUnknown(value: unknown): Record<string, unknown> | undefined {\n return value === undefined ? undefined : summarizeUnknown(value);\n}\n\nfunction summarizeError(error: SpanError | null | undefined): PersistedInspectError | undefined {\n if (!error?.message) return undefined;\n return { message: error.message };\n}\n\nfunction summarizeUsage(usage: unknown): PersistedTokenUsage | undefined {\n if (typeof usage !== \"object\" || usage === null || Array.isArray(usage)) {\n return undefined;\n }\n\n const record = usage as Record<string, unknown>;\n const tokenUsage: PersistedTokenUsage = {};\n if (typeof record.input_tokens === \"number\" && Number.isFinite(record.input_tokens)) {\n tokenUsage.input = record.input_tokens;\n }\n if (typeof record.output_tokens === \"number\" && Number.isFinite(record.output_tokens)) {\n tokenUsage.output = record.output_tokens;\n }\n if (tokenUsage.input !== undefined || tokenUsage.output !== undefined) {\n tokenUsage.total = (tokenUsage.input ?? 0) + (tokenUsage.output ?? 0);\n }\n\n const details = record.details;\n if (typeof details === \"object\" && details !== null && !Array.isArray(details)) {\n const detailRecord = details as Record<string, unknown>;\n const cached = detailRecord.cached_tokens ?? detailRecord.cached_input_tokens;\n if (typeof cached === \"number\" && Number.isFinite(cached)) {\n tokenUsage.cached = cached;\n }\n }\n\n return Object.keys(tokenUsage).length > 0 ? tokenUsage : undefined;\n}\n\nfunction spanKind(type: SpanDataType): PersistedInspectEvent[\"kind\"] {\n switch (type) {\n case \"agent\":\n return \"AGENT\";\n case \"generation\":\n case \"response\":\n case \"transcription\":\n case \"speech\":\n return \"LLM\";\n case \"function\":\n case \"mcp_tools\":\n return \"TOOL\";\n case \"handoff\":\n case \"guardrail\":\n return \"DECISION\";\n case \"custom\":\n case \"speech_group\":\n return \"LOGIC\";\n default:\n return \"LOGIC\";\n }\n}\n\nfunction spanName(data: SpanData): string {\n switch (data.type) {\n case \"agent\":\n case \"function\":\n case \"custom\":\n case \"guardrail\":\n return data.name;\n case \"generation\":\n return data.model ? `generation:${data.model}` : \"generation\";\n case \"response\":\n return data.response_id ? `response:${data.response_id}` : \"response\";\n case \"handoff\":\n return data.to_agent ? `handoff:${data.to_agent}` : \"handoff\";\n case \"mcp_tools\":\n return data.server ? `mcp-tools:${data.server}` : \"mcp-tools\";\n case \"transcription\":\n return data.model ? `transcription:${data.model}` : \"transcription\";\n case \"speech\":\n return data.model ? `speech:${data.model}` : \"speech\";\n case \"speech_group\":\n return \"speech-group\";\n default:\n return \"openai-agents-span\";\n }\n}\n\nfunction commonSpanAttributes(span: Span<SpanData>): Record<string, unknown> {\n return {\n legacyEvent: \"step_started\",\n stepId: span.spanId,\n stepType: mapSpanTypeToStepType(span.spanData.type),\n spanType: span.spanData.type,\n traceId: span.traceId,\n spanId: span.spanId,\n parentSpanId: span.parentId ?? undefined,\n traceMetadataKeyCount: countRecordKeys(span.traceMetadata),\n };\n}\n\nfunction specificSpanAttributes(data: SpanData): Record<string, unknown> {\n switch (data.type) {\n case \"agent\":\n return {\n agentName: data.name,\n handoffCount: data.handoffs?.length ?? 0,\n handoffNames: data.handoffs,\n toolCount: data.tools?.length ?? 0,\n toolNames: data.tools,\n outputType: data.output_type,\n };\n case \"function\":\n return {\n toolName: data.name,\n hasInput: data.input !== undefined,\n hasOutput: data.output !== undefined,\n inputSummary: summarizeUnknown(data.input),\n outputSummary: summarizeUnknown(data.output),\n mcpDataSummary: summarizeOptionalUnknown(data.mcp_data),\n };\n case \"generation\":\n return {\n model: data.model,\n modelConfigKeyCount: countRecordKeys(data.model_config),\n inputSummary: summarizeOptionalUnknown(data.input),\n outputSummary: summarizeOptionalUnknown(data.output),\n usageDetailsKeyCount: countRecordKeys(data.usage?.details),\n };\n case \"response\":\n return {\n responseId: data.response_id,\n inputSummary: summarizeOptionalUnknown(data._input),\n responseSummary: summarizeOptionalUnknown(data._response),\n };\n case \"handoff\":\n return {\n fromAgent: data.from_agent,\n toAgent: data.to_agent,\n };\n case \"custom\":\n return {\n customName: data.name,\n dataSummary: summarizeUnknown(data.data),\n };\n case \"guardrail\":\n return {\n guardrailName: data.name,\n triggered: data.triggered,\n };\n case \"mcp_tools\":\n return {\n server: data.server,\n toolCount: data.result?.length ?? 0,\n toolNames: data.result,\n };\n case \"transcription\":\n return {\n model: data.model,\n inputFormat: data.input.format,\n inputSummary: summarizeUnknown(data.input.data),\n outputSummary: summarizeOptionalUnknown(data.output),\n modelConfigKeyCount: countRecordKeys(data.model_config),\n };\n case \"speech\":\n return {\n model: data.model,\n inputSummary: summarizeOptionalUnknown(data.input),\n outputFormat: data.output.format,\n outputSummary: summarizeUnknown(data.output.data),\n modelConfigKeyCount: countRecordKeys(data.model_config),\n };\n case \"speech_group\":\n return {\n inputSummary: summarizeOptionalUnknown(data.input),\n };\n default:\n return {};\n }\n}\n\nfunction mapSpanTypeToStepType(type: SpanDataType): string {\n switch (type) {\n case \"generation\":\n case \"response\":\n case \"transcription\":\n case \"speech\":\n return \"llm\";\n case \"function\":\n case \"mcp_tools\":\n return \"tool\";\n case \"handoff\":\n case \"guardrail\":\n return \"decision\";\n case \"agent\":\n return \"logic\";\n case \"custom\":\n case \"speech_group\":\n return \"custom\";\n default:\n return \"logic\";\n }\n}\n\nfunction spanInputSummary(data: SpanData): unknown {\n switch (data.type) {\n case \"generation\":\n return summarizeOptionalUnknown(data.input);\n case \"function\":\n return summarizeUnknown(data.input);\n case \"response\":\n return summarizeOptionalUnknown(data._input);\n case \"custom\":\n return summarizeUnknown(data.data);\n case \"transcription\":\n return { format: data.input.format, ...summarizeUnknown(data.input.data) };\n case \"speech\":\n case \"speech_group\":\n return summarizeOptionalUnknown(data.input);\n default:\n return undefined;\n }\n}\n\nfunction spanOutputSummary(data: SpanData): unknown {\n switch (data.type) {\n case \"generation\":\n return summarizeOptionalUnknown(data.output);\n case \"function\":\n return summarizeUnknown(data.output);\n case \"response\":\n return summarizeOptionalUnknown(data._response);\n case \"guardrail\":\n return { triggered: data.triggered };\n case \"mcp_tools\":\n return { toolCount: data.result?.length ?? 0 };\n case \"transcription\":\n return summarizeOptionalUnknown(data.output);\n case \"speech\":\n return { format: data.output.format, ...summarizeUnknown(data.output.data) };\n default:\n return undefined;\n }\n}\n\nfunction traceEventId(traceId: string): string {\n return `openai_agents_trace:${traceId}`;\n}\n\nfunction spanEventId(spanId: string): string {\n return `openai_agents_span:${spanId}`;\n}\n\nclass AgentInspectOpenAiAgentsTracingProcessor implements AgentInspectOpenAiAgentsProcessor {\n readonly installMode = \"setTraceProcessors\" as const;\n readonly localOnly = true as const;\n\n private readonly writer: TraceWriter | undefined;\n private readonly requestedCapture: AgentInspectOpenAiAgentsCaptureMode;\n private readonly effectiveCapture: \"metadata-only\" = \"metadata-only\";\n private readonly diagnostics: AgentInspectOpenAiAgentsDiagnostics = {\n writeFailures: 0,\n lifecycleWarnings: 0,\n flushFailures: 0,\n shutdownFailures: 0,\n runtimeMappingImplemented: true,\n };\n private readonly activeTraces = new Map<string, ActiveTrace>();\n private readonly activeSpans = new Map<string, ActiveSpan>();\n private closed = false;\n\n constructor(private readonly options: AgentInspectOpenAiAgentsOptions) {\n this.requestedCapture = options.capture ?? \"metadata-only\";\n this.writer = options.writer ?? (options.traceDir ? fileWriter({ dir: options.traceDir }) : undefined);\n for (const key of [\n \"options\",\n \"writer\",\n \"requestedCapture\",\n \"effectiveCapture\",\n \"diagnostics\",\n \"activeTraces\",\n \"activeSpans\",\n \"closed\",\n ] as const) {\n Object.defineProperty(this, key, { enumerable: false });\n }\n this.recordCaptureOptionWarnings();\n }\n\n start(): void {\n // Local writer-backed processor has no export loop to start.\n }\n\n async onTraceStart(trace: Trace): Promise<void> {\n await this.handleLifecycle(\"onTraceStart\", async () => {\n if (this.closed) {\n this.recordLifecycleWarning(\"onTraceStart ignored because processor is shut down.\");\n return;\n }\n\n const startedAt = nowIso();\n const name = this.options.workflowName ?? trace.name ?? \"openai-agents-run\";\n const eventId = traceEventId(trace.traceId);\n this.activeTraces.set(trace.traceId, { eventId, startedAt, name });\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId,\n runId: trace.traceId,\n kind: \"RUN\",\n name,\n status: \"running\",\n timestamp: startedAt,\n startedAt,\n confidence: \"explicit\",\n source: OPENAI_AGENTS_SOURCE,\n attributes: {\n legacyEvent: \"run_started\",\n installMode: this.installMode,\n capture: this.effectiveCapture,\n requestedCapture:\n this.requestedCapture === this.effectiveCapture\n ? undefined\n : this.requestedCapture,\n previewCaptureSupported:\n this.requestedCapture === \"preview\" ? false : undefined,\n redactionProfile: this.options.redactionProfile,\n maxPreviewChars: normalizeMaxPreviewChars(this.options.maxPreviewChars),\n groupId: trace.groupId ?? undefined,\n metadataKeyCount: countRecordKeys(trace.metadata),\n },\n trace: {\n traceId: trace.traceId,\n },\n });\n });\n }\n\n async onTraceEnd(trace: Trace): Promise<void> {\n await this.handleLifecycle(\"onTraceEnd\", async () => {\n if (this.closed) {\n this.recordLifecycleWarning(\"onTraceEnd ignored because processor is shut down.\");\n return;\n }\n\n const active = this.activeTraces.get(trace.traceId);\n if (!active) {\n this.recordLifecycleWarning(\n `onTraceEnd ignored because trace ${trace.traceId} has no matching start callback.`,\n );\n return;\n }\n\n const endedAt = nowIso();\n await this.write({\n schemaVersion: \"0.2\",\n eventId: active.eventId,\n runId: trace.traceId,\n kind: \"RUN\",\n name: active.name,\n status: \"ok\",\n timestamp: endedAt,\n startedAt: active.startedAt,\n endedAt,\n durationMs: durationMs(active.startedAt, endedAt),\n confidence: \"explicit\",\n source: OPENAI_AGENTS_SOURCE,\n attributes: {\n legacyEvent: \"run_completed\",\n installMode: this.installMode,\n groupId: trace.groupId ?? undefined,\n metadataKeyCount: countRecordKeys(trace.metadata),\n },\n trace: {\n traceId: trace.traceId,\n },\n });\n this.activeTraces.delete(trace.traceId);\n });\n }\n\n async onSpanStart(span: Span<SpanData>): Promise<void> {\n await this.handleLifecycle(\"onSpanStart\", async () => {\n if (this.closed) {\n this.recordLifecycleWarning(\"onSpanStart ignored because processor is shut down.\");\n return;\n }\n\n const startedAt = span.startedAt ?? nowIso();\n const eventId = spanEventId(span.spanId);\n const parentId = this.resolveParentEventId(span);\n const kind = spanKind(span.spanData.type);\n const name = spanName(span.spanData);\n this.activeSpans.set(span.spanId, {\n eventId,\n runId: span.traceId,\n parentId,\n startedAt,\n name,\n kind,\n });\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId,\n runId: span.traceId,\n parentId,\n kind,\n name,\n status: \"running\",\n timestamp: startedAt,\n startedAt,\n confidence: \"explicit\",\n source: OPENAI_AGENTS_SOURCE,\n attributes: {\n ...commonSpanAttributes(span),\n ...specificSpanAttributes(span.spanData),\n },\n inputSummary: spanInputSummary(span.spanData),\n tokenUsage: summarizeUsage(\n span.spanData.type === \"generation\" ? span.spanData.usage : undefined,\n ),\n trace: {\n traceId: span.traceId,\n spanId: span.spanId,\n parentSpanId: span.parentId ?? undefined,\n },\n });\n });\n }\n\n async onSpanEnd(span: Span<SpanData>): Promise<void> {\n await this.handleLifecycle(\"onSpanEnd\", async () => {\n if (this.closed) {\n this.recordLifecycleWarning(\"onSpanEnd ignored because processor is shut down.\");\n return;\n }\n\n const active = this.activeSpans.get(span.spanId);\n if (!active) {\n this.recordLifecycleWarning(\n `onSpanEnd ignored because span ${span.spanId} has no matching start callback.`,\n );\n return;\n }\n\n const endedAt = span.endedAt ?? nowIso();\n const error = summarizeError(span.error);\n await this.write({\n schemaVersion: \"0.2\",\n eventId: active.eventId,\n runId: active.runId,\n parentId: active.parentId,\n kind: active.kind,\n name: active.name,\n status: error ? \"error\" : \"ok\",\n timestamp: endedAt,\n startedAt: active.startedAt,\n endedAt,\n durationMs: durationMs(active.startedAt, endedAt),\n confidence: \"explicit\",\n source: OPENAI_AGENTS_SOURCE,\n attributes: {\n ...commonSpanAttributes(span),\n ...specificSpanAttributes(span.spanData),\n legacyEvent: \"step_completed\",\n errorDataSummary: summarizeOptionalUnknown(span.error?.data),\n },\n inputSummary: spanInputSummary(span.spanData),\n outputSummary: spanOutputSummary(span.spanData),\n error,\n tokenUsage: summarizeUsage(\n span.spanData.type === \"generation\" ? span.spanData.usage : undefined,\n ),\n trace: {\n traceId: span.traceId,\n spanId: span.spanId,\n parentSpanId: span.parentId ?? undefined,\n },\n });\n this.activeSpans.delete(span.spanId);\n });\n }\n\n async forceFlush(): Promise<void> {\n try {\n await this.writer?.flush?.();\n } catch (error) {\n this.diagnostics.flushFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n }\n }\n\n async shutdown(_timeout?: number): Promise<void> {\n if (this.closed) return;\n try {\n await this.writer?.close?.();\n } catch (error) {\n this.diagnostics.shutdownFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n } finally {\n this.closed = true;\n this.activeTraces.clear();\n this.activeSpans.clear();\n }\n }\n\n getDiagnostics(): AgentInspectOpenAiAgentsDiagnostics {\n return { ...this.diagnostics };\n }\n\n getWriterStats(): TraceWriterStats | undefined {\n return this.writer?.getStats?.();\n }\n\n private resolveParentEventId(span: Span<SpanData>): string | undefined {\n if (span.parentId) return spanEventId(span.parentId);\n return this.activeTraces.get(span.traceId)?.eventId;\n }\n\n private async handleLifecycle(\n callbackName: string,\n run: () => Promise<void>,\n ): Promise<void> {\n try {\n await run();\n } catch (error) {\n this.recordLifecycleWarning(`${callbackName}: ${normalizeError(error)}`);\n }\n }\n\n private recordLifecycleWarning(message: string): void {\n this.diagnostics.lifecycleWarnings += 1;\n this.diagnostics.lastWarning = message;\n }\n\n private recordCaptureOptionWarnings(): void {\n const previewOnlyOptions: string[] = [];\n if (this.requestedCapture === \"preview\") previewOnlyOptions.push(\"capture\");\n if (this.options.redactionProfile !== undefined) previewOnlyOptions.push(\"redactionProfile\");\n if (this.options.maxPreviewChars !== undefined) previewOnlyOptions.push(\"maxPreviewChars\");\n\n if (this.requestedCapture === \"preview\") {\n this.recordLifecycleWarning(\n `OpenAI Agents preview capture is not supported yet; falling back to metadata-only capture. Unsupported options: ${previewOnlyOptions.join(\", \")}.`,\n );\n return;\n }\n\n if (previewOnlyOptions.length > 0) {\n this.recordLifecycleWarning(\n `OpenAI Agents preview-only options have no effect in metadata-only capture: ${previewOnlyOptions.join(\", \")}.`,\n );\n }\n }\n\n private async write(event: PersistedInspectEvent): Promise<void> {\n if (!this.writer) return;\n\n try {\n await this.writer.write(event);\n } catch (error) {\n this.diagnostics.writeFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n }\n }\n}\n\n/**\n * Create an AgentInspect OpenAI Agents JS tracing processor.\n *\n * @experimental Install the returned processor explicitly with replacement\n * semantics:\n *\n * ```ts\n * setTraceProcessors([agentInspectProcessor(options)]);\n * ```\n *\n * The processor does not call `setTraceProcessors()`, `addTraceProcessor()`,\n * OpenAI exporters, or network APIs on import or construction.\n */\nexport function agentInspectProcessor(\n options: AgentInspectOpenAiAgentsOptions = {},\n): AgentInspectOpenAiAgentsProcessor {\n return new AgentInspectOpenAiAgentsTracingProcessor(options);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["import type {\n Span,\n SpanData,\n SpanError,\n Trace,\n TracingProcessor,\n} from \"@openai/agents\";\nimport type {\n RedactionProfile,\n} from \"agent-inspect/advanced\";\nimport type {\n PersistedInspectError,\n PersistedInspectEvent,\n PersistedTokenUsage,\n} from \"agent-inspect/persisted\";\nimport { fileWriter } from \"agent-inspect/writers\";\nimport type { TraceWriter, TraceWriterStats } from \"agent-inspect/writers\";\n\n/**\n * Experimental capture mode for the OpenAI Agents JS adapter.\n *\n * @experimental This package is part of the v1.8 adapter train. `preview` is\n * currently rejected with diagnostics and falls back to metadata-only capture.\n */\nexport type AgentInspectOpenAiAgentsCaptureMode = \"metadata-only\" | \"preview\";\n\n/**\n * Options for the experimental OpenAI Agents JS tracing processor.\n *\n * @experimental Install processors with `setTraceProcessors([...])`\n * replacement behavior for local-only tracing. Do not use `addTraceProcessor()`\n * as the default path because it preserves the SDK's default exporter.\n */\nexport interface AgentInspectOpenAiAgentsOptions {\n /**\n * Explicit local writer for persisted v0.2 AgentInspect events.\n */\n writer?: TraceWriter;\n\n /**\n * Convenience local trace directory for writer-owned persistence.\n */\n traceDir?: string;\n\n /**\n * Optional workflow name overriding the SDK trace name.\n */\n workflowName?: string;\n\n /**\n * Capture policy. Defaults to metadata-only.\n *\n * @experimental `preview` is not implemented yet; requesting it records a\n * diagnostic warning and keeps metadata-only persistence.\n */\n capture?: AgentInspectOpenAiAgentsCaptureMode;\n\n /**\n * Redaction profile for future preview capture.\n *\n * @experimental Currently diagnostic-only because the processor persists\n * metadata summaries and never writes raw span content by default.\n */\n redactionProfile?: RedactionProfile;\n\n /**\n * Bounds future preview capture.\n *\n * @experimental Currently diagnostic-only because `preview` falls back to\n * metadata-only capture.\n */\n maxPreviewChars?: number;\n}\n\nexport interface AgentInspectOpenAiAgentsDiagnostics {\n writeFailures: number;\n lifecycleWarnings: number;\n flushFailures: number;\n shutdownFailures: number;\n lastError?: string;\n lastWarning?: string;\n runtimeMappingImplemented: true;\n}\n\nexport interface AgentInspectOpenAiAgentsProcessor extends TracingProcessor {\n /**\n * Documents the only safe default install mode for this adapter.\n */\n readonly installMode: \"setTraceProcessors\";\n\n /**\n * This processor never installs itself globally and performs no network I/O.\n */\n readonly localOnly: true;\n\n getDiagnostics(): AgentInspectOpenAiAgentsDiagnostics;\n getWriterStats(): TraceWriterStats | undefined;\n}\n\ntype ActiveTrace = {\n eventId: string;\n startedAt: string;\n name: string;\n};\n\ntype ActiveSpan = {\n eventId: string;\n runId: string;\n parentId?: string;\n startedAt: string;\n name: string;\n kind: PersistedInspectEvent[\"kind\"];\n};\n\ntype SpanDataType = SpanData[\"type\"];\n\nconst OPENAI_AGENTS_SOURCE = {\n type: \"adapter\",\n name: \"@agent-inspect/openai-agents\",\n version: \"experimental\",\n} as const;\n\nfunction nowIso(): string {\n return new Date().toISOString();\n}\n\nfunction normalizeError(error: unknown): string {\n if (error instanceof Error && error.message.trim() !== \"\") {\n return error.message;\n }\n if (typeof error === \"string\" && error.trim() !== \"\") {\n return error;\n }\n return \"Unknown OpenAI Agents processor error\";\n}\n\nfunction durationMs(startedAt: string, endedAt: string): number | undefined {\n const started = Date.parse(startedAt);\n const ended = Date.parse(endedAt);\n if (!Number.isFinite(started) || !Number.isFinite(ended)) return undefined;\n return Math.max(0, ended - started);\n}\n\nfunction countRecordKeys(value: unknown): number | undefined {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return undefined;\n }\n return Object.keys(value).length;\n}\n\nfunction normalizeMaxPreviewChars(value: unknown): number | undefined {\n if (typeof value !== \"number\" || !Number.isFinite(value) || value < 0) {\n return undefined;\n }\n return Math.floor(value);\n}\n\nfunction summarizeUnknown(value: unknown): Record<string, unknown> {\n if (value === null) return { type: \"null\" };\n if (Array.isArray(value)) return { type: \"array\", itemCount: value.length };\n\n if (typeof value === \"object\") {\n return { type: \"object\", keyCount: countRecordKeys(value) ?? 0 };\n }\n if (typeof value === \"string\") {\n return { type: \"string\", length: value.length };\n }\n const valueType = typeof value;\n if (valueType === \"number\" || valueType === \"boolean\" || valueType === \"bigint\") {\n return { type: valueType };\n }\n if (valueType === \"undefined\") return { type: \"undefined\" };\n return { type: \"unknown\" };\n}\n\nfunction summarizeOptionalUnknown(value: unknown): Record<string, unknown> | undefined {\n return value === undefined ? undefined : summarizeUnknown(value);\n}\n\nfunction summarizeError(error: SpanError | null | undefined): PersistedInspectError | undefined {\n if (!error?.message) return undefined;\n return { message: error.message };\n}\n\nfunction summarizeUsage(usage: unknown): PersistedTokenUsage | undefined {\n if (typeof usage !== \"object\" || usage === null || Array.isArray(usage)) {\n return undefined;\n }\n\n const record = usage as Record<string, unknown>;\n const tokenUsage: PersistedTokenUsage = {};\n if (typeof record.input_tokens === \"number\" && Number.isFinite(record.input_tokens)) {\n tokenUsage.input = record.input_tokens;\n }\n if (typeof record.output_tokens === \"number\" && Number.isFinite(record.output_tokens)) {\n tokenUsage.output = record.output_tokens;\n }\n if (tokenUsage.input !== undefined || tokenUsage.output !== undefined) {\n tokenUsage.total = (tokenUsage.input ?? 0) + (tokenUsage.output ?? 0);\n }\n\n const details = record.details;\n if (typeof details === \"object\" && details !== null && !Array.isArray(details)) {\n const detailRecord = details as Record<string, unknown>;\n const cached = detailRecord.cached_tokens ?? detailRecord.cached_input_tokens;\n if (typeof cached === \"number\" && Number.isFinite(cached)) {\n tokenUsage.cached = cached;\n }\n }\n\n return Object.keys(tokenUsage).length > 0 ? tokenUsage : undefined;\n}\n\nfunction spanKind(type: SpanDataType): PersistedInspectEvent[\"kind\"] {\n switch (type) {\n case \"agent\":\n return \"AGENT\";\n case \"generation\":\n case \"response\":\n case \"transcription\":\n case \"speech\":\n return \"LLM\";\n case \"function\":\n case \"mcp_tools\":\n return \"TOOL\";\n case \"handoff\":\n case \"guardrail\":\n return \"DECISION\";\n case \"custom\":\n case \"speech_group\":\n return \"LOGIC\";\n default:\n return \"LOGIC\";\n }\n}\n\nfunction spanName(data: SpanData): string {\n switch (data.type) {\n case \"agent\":\n case \"function\":\n case \"custom\":\n case \"guardrail\":\n return data.name;\n case \"generation\":\n return data.model ? `generation:${data.model}` : \"generation\";\n case \"response\":\n return data.response_id ? `response:${data.response_id}` : \"response\";\n case \"handoff\":\n return data.to_agent ? `handoff:${data.to_agent}` : \"handoff\";\n case \"mcp_tools\":\n return data.server ? `mcp-tools:${data.server}` : \"mcp-tools\";\n case \"transcription\":\n return data.model ? `transcription:${data.model}` : \"transcription\";\n case \"speech\":\n return data.model ? `speech:${data.model}` : \"speech\";\n case \"speech_group\":\n return \"speech-group\";\n default:\n return \"openai-agents-span\";\n }\n}\n\nfunction commonSpanAttributes(span: Span<SpanData>): Record<string, unknown> {\n return {\n legacyEvent: \"step_started\",\n stepId: span.spanId,\n stepType: mapSpanTypeToStepType(span.spanData.type),\n spanType: span.spanData.type,\n traceId: span.traceId,\n spanId: span.spanId,\n parentSpanId: span.parentId ?? undefined,\n traceMetadataKeyCount: countRecordKeys(span.traceMetadata),\n };\n}\n\nfunction specificSpanAttributes(data: SpanData): Record<string, unknown> {\n switch (data.type) {\n case \"agent\":\n return {\n agentName: data.name,\n handoffCount: data.handoffs?.length ?? 0,\n handoffNames: data.handoffs,\n toolCount: data.tools?.length ?? 0,\n toolNames: data.tools,\n outputType: data.output_type,\n };\n case \"function\":\n return {\n toolName: data.name,\n hasInput: data.input !== undefined,\n hasOutput: data.output !== undefined,\n inputSummary: summarizeUnknown(data.input),\n outputSummary: summarizeUnknown(data.output),\n mcpDataSummary: summarizeOptionalUnknown(data.mcp_data),\n };\n case \"generation\":\n return {\n model: data.model,\n modelConfigKeyCount: countRecordKeys(data.model_config),\n inputSummary: summarizeOptionalUnknown(data.input),\n outputSummary: summarizeOptionalUnknown(data.output),\n usageDetailsKeyCount: countRecordKeys(data.usage?.details),\n };\n case \"response\":\n return {\n responseId: data.response_id,\n inputSummary: summarizeOptionalUnknown(data._input),\n responseSummary: summarizeOptionalUnknown(data._response),\n };\n case \"handoff\":\n return {\n fromAgent: data.from_agent,\n toAgent: data.to_agent,\n };\n case \"custom\":\n return {\n customName: data.name,\n dataSummary: summarizeUnknown(data.data),\n };\n case \"guardrail\":\n return {\n guardrailName: data.name,\n triggered: data.triggered,\n };\n case \"mcp_tools\":\n return {\n server: data.server,\n toolCount: data.result?.length ?? 0,\n toolNames: data.result,\n };\n case \"transcription\":\n return {\n model: data.model,\n inputFormat: data.input.format,\n inputSummary: summarizeUnknown(data.input.data),\n outputSummary: summarizeOptionalUnknown(data.output),\n modelConfigKeyCount: countRecordKeys(data.model_config),\n };\n case \"speech\":\n return {\n model: data.model,\n inputSummary: summarizeOptionalUnknown(data.input),\n outputFormat: data.output.format,\n outputSummary: summarizeUnknown(data.output.data),\n modelConfigKeyCount: countRecordKeys(data.model_config),\n };\n case \"speech_group\":\n return {\n inputSummary: summarizeOptionalUnknown(data.input),\n };\n default:\n return {};\n }\n}\n\nfunction mapSpanTypeToStepType(type: SpanDataType): string {\n switch (type) {\n case \"generation\":\n case \"response\":\n case \"transcription\":\n case \"speech\":\n return \"llm\";\n case \"function\":\n case \"mcp_tools\":\n return \"tool\";\n case \"handoff\":\n case \"guardrail\":\n return \"decision\";\n case \"agent\":\n return \"logic\";\n case \"custom\":\n case \"speech_group\":\n return \"custom\";\n default:\n return \"logic\";\n }\n}\n\nfunction spanInputSummary(data: SpanData): unknown {\n switch (data.type) {\n case \"generation\":\n return summarizeOptionalUnknown(data.input);\n case \"function\":\n return summarizeUnknown(data.input);\n case \"response\":\n return summarizeOptionalUnknown(data._input);\n case \"custom\":\n return summarizeUnknown(data.data);\n case \"transcription\":\n return { format: data.input.format, ...summarizeUnknown(data.input.data) };\n case \"speech\":\n case \"speech_group\":\n return summarizeOptionalUnknown(data.input);\n default:\n return undefined;\n }\n}\n\nfunction spanOutputSummary(data: SpanData): unknown {\n switch (data.type) {\n case \"generation\":\n return summarizeOptionalUnknown(data.output);\n case \"function\":\n return summarizeUnknown(data.output);\n case \"response\":\n return summarizeOptionalUnknown(data._response);\n case \"guardrail\":\n return { triggered: data.triggered };\n case \"mcp_tools\":\n return { toolCount: data.result?.length ?? 0 };\n case \"transcription\":\n return summarizeOptionalUnknown(data.output);\n case \"speech\":\n return { format: data.output.format, ...summarizeUnknown(data.output.data) };\n default:\n return undefined;\n }\n}\n\nfunction traceEventId(traceId: string): string {\n return `openai_agents_trace:${traceId}`;\n}\n\nfunction spanEventId(spanId: string): string {\n return `openai_agents_span:${spanId}`;\n}\n\nclass AgentInspectOpenAiAgentsTracingProcessor implements AgentInspectOpenAiAgentsProcessor {\n readonly installMode = \"setTraceProcessors\" as const;\n readonly localOnly = true as const;\n\n private readonly writer: TraceWriter | undefined;\n private readonly requestedCapture: AgentInspectOpenAiAgentsCaptureMode;\n private readonly effectiveCapture: \"metadata-only\" = \"metadata-only\";\n private readonly diagnostics: AgentInspectOpenAiAgentsDiagnostics = {\n writeFailures: 0,\n lifecycleWarnings: 0,\n flushFailures: 0,\n shutdownFailures: 0,\n runtimeMappingImplemented: true,\n };\n private readonly activeTraces = new Map<string, ActiveTrace>();\n private readonly activeSpans = new Map<string, ActiveSpan>();\n private closed = false;\n\n constructor(private readonly options: AgentInspectOpenAiAgentsOptions) {\n this.requestedCapture = options.capture ?? \"metadata-only\";\n this.writer = options.writer ?? (options.traceDir ? fileWriter({ dir: options.traceDir }) : undefined);\n for (const key of [\n \"options\",\n \"writer\",\n \"requestedCapture\",\n \"effectiveCapture\",\n \"diagnostics\",\n \"activeTraces\",\n \"activeSpans\",\n \"closed\",\n ] as const) {\n Object.defineProperty(this, key, { enumerable: false });\n }\n this.recordCaptureOptionWarnings();\n }\n\n start(): void {\n // Local writer-backed processor has no export loop to start.\n }\n\n async onTraceStart(trace: Trace): Promise<void> {\n await this.handleLifecycle(\"onTraceStart\", async () => {\n if (this.closed) {\n this.recordLifecycleWarning(\"onTraceStart ignored because processor is shut down.\");\n return;\n }\n\n const startedAt = nowIso();\n const name = this.options.workflowName ?? trace.name ?? \"openai-agents-run\";\n const eventId = traceEventId(trace.traceId);\n this.activeTraces.set(trace.traceId, { eventId, startedAt, name });\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId,\n runId: trace.traceId,\n kind: \"RUN\",\n name,\n status: \"running\",\n timestamp: startedAt,\n startedAt,\n confidence: \"explicit\",\n source: OPENAI_AGENTS_SOURCE,\n attributes: {\n legacyEvent: \"run_started\",\n installMode: this.installMode,\n capture: this.effectiveCapture,\n requestedCapture:\n this.requestedCapture === this.effectiveCapture\n ? undefined\n : this.requestedCapture,\n previewCaptureSupported:\n this.requestedCapture === \"preview\" ? false : undefined,\n redactionProfile: this.options.redactionProfile,\n maxPreviewChars: normalizeMaxPreviewChars(this.options.maxPreviewChars),\n groupId: trace.groupId ?? undefined,\n metadataKeyCount: countRecordKeys(trace.metadata),\n },\n trace: {\n traceId: trace.traceId,\n },\n });\n });\n }\n\n async onTraceEnd(trace: Trace): Promise<void> {\n await this.handleLifecycle(\"onTraceEnd\", async () => {\n if (this.closed) {\n this.recordLifecycleWarning(\"onTraceEnd ignored because processor is shut down.\");\n return;\n }\n\n const active = this.activeTraces.get(trace.traceId);\n if (!active) {\n this.recordLifecycleWarning(\n `onTraceEnd ignored because trace ${trace.traceId} has no matching start callback.`,\n );\n return;\n }\n\n const endedAt = nowIso();\n await this.write({\n schemaVersion: \"0.2\",\n eventId: active.eventId,\n runId: trace.traceId,\n kind: \"RUN\",\n name: active.name,\n status: \"ok\",\n timestamp: endedAt,\n startedAt: active.startedAt,\n endedAt,\n durationMs: durationMs(active.startedAt, endedAt),\n confidence: \"explicit\",\n source: OPENAI_AGENTS_SOURCE,\n attributes: {\n legacyEvent: \"run_completed\",\n installMode: this.installMode,\n groupId: trace.groupId ?? undefined,\n metadataKeyCount: countRecordKeys(trace.metadata),\n },\n trace: {\n traceId: trace.traceId,\n },\n });\n this.activeTraces.delete(trace.traceId);\n });\n }\n\n async onSpanStart(span: Span<SpanData>): Promise<void> {\n await this.handleLifecycle(\"onSpanStart\", async () => {\n if (this.closed) {\n this.recordLifecycleWarning(\"onSpanStart ignored because processor is shut down.\");\n return;\n }\n\n const startedAt = span.startedAt ?? nowIso();\n const eventId = spanEventId(span.spanId);\n const parentId = this.resolveParentEventId(span);\n const kind = spanKind(span.spanData.type);\n const name = spanName(span.spanData);\n this.activeSpans.set(span.spanId, {\n eventId,\n runId: span.traceId,\n parentId,\n startedAt,\n name,\n kind,\n });\n\n await this.write({\n schemaVersion: \"0.2\",\n eventId,\n runId: span.traceId,\n parentId,\n kind,\n name,\n status: \"running\",\n timestamp: startedAt,\n startedAt,\n confidence: \"explicit\",\n source: OPENAI_AGENTS_SOURCE,\n attributes: {\n ...commonSpanAttributes(span),\n ...specificSpanAttributes(span.spanData),\n },\n inputSummary: spanInputSummary(span.spanData),\n tokenUsage: summarizeUsage(\n span.spanData.type === \"generation\" ? span.spanData.usage : undefined,\n ),\n trace: {\n traceId: span.traceId,\n spanId: span.spanId,\n parentSpanId: span.parentId ?? undefined,\n },\n });\n });\n }\n\n async onSpanEnd(span: Span<SpanData>): Promise<void> {\n await this.handleLifecycle(\"onSpanEnd\", async () => {\n if (this.closed) {\n this.recordLifecycleWarning(\"onSpanEnd ignored because processor is shut down.\");\n return;\n }\n\n const active = this.activeSpans.get(span.spanId);\n if (!active) {\n this.recordLifecycleWarning(\n `onSpanEnd ignored because span ${span.spanId} has no matching start callback.`,\n );\n return;\n }\n\n const endedAt = span.endedAt ?? nowIso();\n const error = summarizeError(span.error);\n await this.write({\n schemaVersion: \"0.2\",\n eventId: active.eventId,\n runId: active.runId,\n parentId: active.parentId,\n kind: active.kind,\n name: active.name,\n status: error ? \"error\" : \"ok\",\n timestamp: endedAt,\n startedAt: active.startedAt,\n endedAt,\n durationMs: durationMs(active.startedAt, endedAt),\n confidence: \"explicit\",\n source: OPENAI_AGENTS_SOURCE,\n attributes: {\n ...commonSpanAttributes(span),\n ...specificSpanAttributes(span.spanData),\n legacyEvent: \"step_completed\",\n errorDataSummary: summarizeOptionalUnknown(span.error?.data),\n },\n inputSummary: spanInputSummary(span.spanData),\n outputSummary: spanOutputSummary(span.spanData),\n error,\n tokenUsage: summarizeUsage(\n span.spanData.type === \"generation\" ? span.spanData.usage : undefined,\n ),\n trace: {\n traceId: span.traceId,\n spanId: span.spanId,\n parentSpanId: span.parentId ?? undefined,\n },\n });\n this.activeSpans.delete(span.spanId);\n });\n }\n\n async forceFlush(): Promise<void> {\n try {\n await this.writer?.flush?.();\n } catch (error) {\n this.diagnostics.flushFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n }\n }\n\n async shutdown(_timeout?: number): Promise<void> {\n if (this.closed) return;\n try {\n await this.writer?.close?.();\n } catch (error) {\n this.diagnostics.shutdownFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n } finally {\n this.closed = true;\n this.activeTraces.clear();\n this.activeSpans.clear();\n }\n }\n\n getDiagnostics(): AgentInspectOpenAiAgentsDiagnostics {\n return { ...this.diagnostics };\n }\n\n getWriterStats(): TraceWriterStats | undefined {\n return this.writer?.getStats?.();\n }\n\n private resolveParentEventId(span: Span<SpanData>): string | undefined {\n if (span.parentId) return spanEventId(span.parentId);\n return this.activeTraces.get(span.traceId)?.eventId;\n }\n\n private async handleLifecycle(\n callbackName: string,\n run: () => Promise<void>,\n ): Promise<void> {\n try {\n await run();\n } catch (error) {\n this.recordLifecycleWarning(`${callbackName}: ${normalizeError(error)}`);\n }\n }\n\n private recordLifecycleWarning(message: string): void {\n this.diagnostics.lifecycleWarnings += 1;\n this.diagnostics.lastWarning = message;\n }\n\n private recordCaptureOptionWarnings(): void {\n const previewOnlyOptions: string[] = [];\n if (this.requestedCapture === \"preview\") previewOnlyOptions.push(\"capture\");\n if (this.options.redactionProfile !== undefined) previewOnlyOptions.push(\"redactionProfile\");\n if (this.options.maxPreviewChars !== undefined) previewOnlyOptions.push(\"maxPreviewChars\");\n\n if (this.requestedCapture === \"preview\") {\n this.recordLifecycleWarning(\n `OpenAI Agents preview capture is not supported yet; falling back to metadata-only capture. Unsupported options: ${previewOnlyOptions.join(\", \")}.`,\n );\n return;\n }\n\n if (previewOnlyOptions.length > 0) {\n this.recordLifecycleWarning(\n `OpenAI Agents preview-only options have no effect in metadata-only capture: ${previewOnlyOptions.join(\", \")}.`,\n );\n }\n }\n\n private async write(event: PersistedInspectEvent): Promise<void> {\n if (!this.writer) return;\n\n try {\n await this.writer.write(event);\n } catch (error) {\n this.diagnostics.writeFailures += 1;\n this.diagnostics.lastError = normalizeError(error);\n }\n }\n}\n\n/**\n * Create an AgentInspect OpenAI Agents JS tracing processor.\n *\n * @experimental Install the returned processor explicitly with replacement\n * semantics:\n *\n * ```ts\n * setTraceProcessors([agentInspectProcessor(options)]);\n * ```\n *\n * The processor does not call `setTraceProcessors()`, `addTraceProcessor()`,\n * OpenAI exporters, or network APIs on import or construction.\n */\nexport function agentInspectProcessor(\n options: AgentInspectOpenAiAgentsOptions = {},\n): AgentInspectOpenAiAgentsProcessor {\n return new AgentInspectOpenAiAgentsTracingProcessor(options);\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-inspect/openai-agents",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Optional OpenAI Agents JS tracing processor integration for AgentInspect local traces",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"@openai/agents": "^0.12.0"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"agent-inspect": "
|
|
39
|
+
"agent-inspect": "2.0.0"
|
|
40
40
|
},
|
|
41
41
|
"publishConfig": {
|
|
42
42
|
"access": "public"
|