@agent-inspect/openai-agents 6.28.0 → 6.29.1

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 CHANGED
@@ -81,9 +81,29 @@ function summarizeUsage(usage) {
81
81
  if (typeof details === "object" && details !== null && !Array.isArray(details)) {
82
82
  const detailRecord = details;
83
83
  const cached = detailRecord.cached_tokens ?? detailRecord.cached_input_tokens;
84
- if (typeof cached === "number" && Number.isFinite(cached)) {
84
+ if (typeof cached === "number" && Number.isFinite(cached) && cached >= 0) {
85
85
  tokenUsage.cached = cached;
86
86
  }
87
+ const cacheWrite = detailRecord.cache_creation_tokens ?? detailRecord.cached_creation_tokens ?? detailRecord.cache_write_tokens;
88
+ if (typeof cacheWrite === "number" && Number.isFinite(cacheWrite) && cacheWrite >= 0) {
89
+ tokenUsage.cacheWrite = cacheWrite;
90
+ }
91
+ const reasoning = detailRecord.reasoning_tokens ?? detailRecord.output_tokens_details;
92
+ if (typeof reasoning === "number" && Number.isFinite(reasoning) && reasoning >= 0) {
93
+ tokenUsage.reasoning = reasoning;
94
+ } else if (typeof reasoning === "object" && reasoning !== null && !Array.isArray(reasoning)) {
95
+ const nested = reasoning.reasoning_tokens;
96
+ if (typeof nested === "number" && Number.isFinite(nested) && nested >= 0) {
97
+ tokenUsage.reasoning = nested;
98
+ }
99
+ }
100
+ }
101
+ const outputDetails = record.output_tokens_details;
102
+ if (typeof outputDetails === "object" && outputDetails !== null && !Array.isArray(outputDetails)) {
103
+ const nested = outputDetails.reasoning_tokens;
104
+ if (typeof nested === "number" && Number.isFinite(nested) && nested >= 0 && tokenUsage.reasoning === void 0) {
105
+ tokenUsage.reasoning = nested;
106
+ }
87
107
  }
88
108
  return Object.keys(tokenUsage).length > 0 ? tokenUsage : void 0;
89
109
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["createAdapterPreviewCapture","fileWriter"],"mappings":";;;;;;AAsIA,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;AAOA,SAAS,kBAAA,CACP,MACA,KAAA,EACyB;AACzB,EAAA,MAAM,SAAA,GAAY,CAChB,KAAA,EACA,MAAA,KAEA,KAAA,KAAU,OAAA,GAAU,EAAE,KAAA,EAAM,GAAI,EAAE,KAAA,EAAO,MAAA,EAAO;AAElD,EAAA,QAAQ,KAAK,IAAA;AAAM,IACjB,KAAK,YAAA;AACH,MAAA,OAAO,SAAA,CAAU,IAAA,CAAK,KAAA,EAAO,IAAA,CAAK,MAAM,CAAA;AAAA,IAC1C,KAAK,UAAA;AACH,MAAA,OAAO,SAAA,CAAU,IAAA,CAAK,KAAA,EAAO,IAAA,CAAK,MAAM,CAAA;AAAA,IAC1C,KAAK,UAAA;AACH,MAAA,OAAO,SAAA,CAAU,IAAA,CAAK,MAAA,EAAQ,IAAA,CAAK,SAAS,CAAA;AAAA,IAC9C,KAAK,eAAA;AACH,MAAA,OAAO,SAAA,CAAU,IAAA,CAAK,KAAA,CAAM,IAAA,EAAM,KAAK,MAAM,CAAA;AAAA,IAC/C,KAAK,QAAA;AACH,MAAA,OAAO,SAAA,CAAU,IAAA,CAAK,KAAA,EAAO,IAAA,CAAK,OAAO,IAAI,CAAA;AAAA,IAC/C,KAAK,QAAA;AACH,MAAA,OAAO,EAAE,KAAA,EAAO,IAAA,CAAK,IAAA,EAAK;AAAA,IAC5B,KAAK,cAAA;AACH,MAAA,OAAO,EAAE,KAAA,EAAO,IAAA,CAAK,KAAA,EAAM;AAAA,IAC7B;AACE,MAAA,OAAO,EAAC;AAAA;AAEd;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,EAsB1F,YAA6B,OAAA,EAA0C;AAA1C,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAC3B,IAAA,IAAA,CAAK,gBAAA,GAAmB,QAAQ,OAAA,IAAW,eAAA;AAC3C,IAAA,IAAA,CAAK,UAAUA,oCAAA,CAA4B;AAAA,MACzC,SAAS,IAAA,CAAK,gBAAA;AAAA,MACd,kBAAkB,OAAA,CAAQ,gBAAA;AAAA,MAC1B,iBAAiB,OAAA,CAAQ,eAAA;AAAA,MACzB,cAAc,OAAA,CAAQ;AAAA,KACvB,CAAA;AACD,IAAA,IAAA,CAAK,gBAAA,GAAmB,KAAK,OAAA,CAAQ,OAAA;AACrC,IAAA,IAAA,CAAK,MAAA,GAAS,OAAA,CAAQ,MAAA,KAAW,OAAA,CAAQ,QAAA,GAAWC,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,SAAA;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,EAxB6B,OAAA;AAAA,EArBpB,WAAA,GAAc,oBAAA;AAAA,EACd,SAAA,GAAY,IAAA;AAAA,EAEJ,MAAA;AAAA,EACA,gBAAA;AAAA,EACA,OAAA;AAAA,EACA,gBAAA;AAAA,EACA,WAAA,GAGb;AAAA,IACF,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,EA4BjB,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,EAAyB,IAAA;AAAA;AAAA;AAAA,UAGzB,gBAAA,EAAkB,KAAK,OAAA,CAAQ,cAAA,GAC3B,KAAK,OAAA,CAAQ,gBAAA,GACb,KAAK,OAAA,CAAQ,gBAAA;AAAA,UACjB,eAAA,EAAiB,IAAA,CAAK,OAAA,CAAQ,cAAA,GAC1B,IAAA,CAAK,QAAQ,eAAA,GACb,wBAAA,CAAyB,IAAA,CAAK,OAAA,CAAQ,eAAe,CAAA;AAAA,UACzD,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,CAAA;AAAA,UACvC,GAAG,IAAA,CAAK,iBAAA,CAAkB,IAAA,EAAM,OAAO;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,CAAA;AAAA,UAC3D,GAAG,IAAA,CAAK,iBAAA,CAAkB,IAAA,EAAM,KAAK;AAAA,SACvC;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,EAAa,SAAS,IAAA,CAAK,OAAA,CAAQ,gBAAe,EAAE;AAAA,EACvE;AAAA;AAAA,EAGQ,iBAAA,CACN,MACA,KAAA,EACyB;AACzB,IAAA,IAAI,CAAC,IAAA,CAAK,OAAA,CAAQ,cAAA,SAAuB,EAAC;AAC1C,IAAA,OAAO,KAAK,OAAA,CAAQ,kBAAA;AAAA,MAClB,EAAC;AAAA,MACD,kBAAA,CAAmB,IAAA,CAAK,QAAA,EAAU,KAAK;AAAA,KACzC;AAAA,EACF;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,IAAI,IAAA,CAAK,qBAAqB,SAAA,EAAW;AAEzC,IAAA,MAAM,qBAA+B,EAAC;AACtC,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,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 { createAdapterPreviewCapture } from \"agent-inspect/advanced\";\nimport type {\n AdapterCaptureDiagnostics,\n AdapterDiagnosticListener,\n AdapterPreviewCapture,\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 * `metadata-only` is the default. `preview` persists bounded, redacted span\n * input/output preview attributes through the shared adapter capture helper.\n *\n * @experimental This package is part of the framework adapter train.\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` persists bounded, redacted span input/output\n * previews. It never persists full span content.\n */\n capture?: AgentInspectOpenAiAgentsCaptureMode;\n\n /**\n * Redaction profile applied to preview attributes before persistence.\n * `share` and `strict` also cap `maxPreviewChars`.\n *\n * @experimental Effective only when `capture: \"preview\"`.\n */\n redactionProfile?: RedactionProfile;\n\n /**\n * Upper bound for each serialized preview attribute. Defaults to 200.\n *\n * @experimental Effective only when `capture: \"preview\"`.\n */\n maxPreviewChars?: number;\n\n /**\n * Receives bounded capture diagnostics such as\n * `AI_CAPTURE_FIELD_UNAVAILABLE`. Listener failures are isolated.\n *\n * @experimental\n */\n onDiagnostic?: AdapterDiagnosticListener;\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 /** Shared preview-capture counters (`@experimental`). */\n capture: AdapterCaptureDiagnostics;\n}\n\nexport interface AgentInspectOpenAiAgentsProcessor extends TracingProcessor {\n /**\n * Documents the local-only replacement install mode for this adapter.\n *\n * `addTraceProcessor()` remains an advanced user-owned choice outside this\n * package because it can preserve existing/default exporters.\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\n/**\n * Raw span fields eligible for bounded preview capture, keyed by the logical\n * preview name. Span types without a payload concept return `{}` so preview\n * mode does not report false \"field unavailable\" diagnostics for them.\n */\nfunction spanPreviewSources(\n data: SpanData,\n phase: \"start\" | \"end\",\n): Record<string, unknown> {\n const withPhase = (\n input: unknown,\n output: unknown,\n ): Record<string, unknown> =>\n phase === \"start\" ? { input } : { input, output };\n\n switch (data.type) {\n case \"generation\":\n return withPhase(data.input, data.output);\n case \"function\":\n return withPhase(data.input, data.output);\n case \"response\":\n return withPhase(data._input, data._response);\n case \"transcription\":\n return withPhase(data.input.data, data.output);\n case \"speech\":\n return withPhase(data.input, data.output.data);\n case \"custom\":\n return { input: data.data };\n case \"speech_group\":\n return { input: data.input };\n default:\n return {};\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 preview: AdapterPreviewCapture;\n private readonly effectiveCapture: AgentInspectOpenAiAgentsCaptureMode;\n private readonly diagnostics: Omit<\n AgentInspectOpenAiAgentsDiagnostics,\n \"capture\"\n > = {\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.preview = createAdapterPreviewCapture({\n capture: this.requestedCapture,\n redactionProfile: options.redactionProfile,\n maxPreviewChars: options.maxPreviewChars,\n onDiagnostic: options.onDiagnostic,\n });\n this.effectiveCapture = this.preview.capture;\n this.writer = options.writer ?? (options.traceDir ? fileWriter({ dir: options.traceDir }) : undefined);\n for (const key of [\n \"options\",\n \"writer\",\n \"requestedCapture\",\n \"preview\",\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: true,\n // Preview rows report the effective bound/profile, which the\n // `share` and `strict` profiles can lower below the request.\n redactionProfile: this.preview.previewEnabled\n ? this.preview.redactionProfile\n : this.options.redactionProfile,\n maxPreviewChars: this.preview.previewEnabled\n ? this.preview.maxPreviewChars\n : 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 ...this.previewAttributes(span, \"start\"),\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 ...this.previewAttributes(span, \"end\"),\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, capture: this.preview.getDiagnostics() };\n }\n\n /** Bounded preview attributes for one span phase (empty unless enabled). */\n private previewAttributes(\n span: Span<SpanData>,\n phase: \"start\" | \"end\",\n ): Record<string, unknown> {\n if (!this.preview.previewEnabled) return {};\n return this.preview.applyPreviewFields(\n {},\n spanPreviewSources(span.spanData, phase),\n );\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 if (this.effectiveCapture === \"preview\") return;\n\n const previewOnlyOptions: string[] = [];\n if (this.options.redactionProfile !== undefined) previewOnlyOptions.push(\"redactionProfile\");\n if (this.options.maxPreviewChars !== undefined) previewOnlyOptions.push(\"maxPreviewChars\");\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":["createAdapterPreviewCapture","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 { createAdapterPreviewCapture } from \"agent-inspect/advanced\";\nimport type {\n AdapterCaptureDiagnostics,\n AdapterDiagnosticListener,\n AdapterPreviewCapture,\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 * `metadata-only` is the default. `preview` persists bounded, redacted span\n * input/output preview attributes through the shared adapter capture helper.\n *\n * @experimental This package is part of the framework adapter train.\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` persists bounded, redacted span input/output\n * previews. It never persists full span content.\n */\n capture?: AgentInspectOpenAiAgentsCaptureMode;\n\n /**\n * Redaction profile applied to preview attributes before persistence.\n * `share` and `strict` also cap `maxPreviewChars`.\n *\n * @experimental Effective only when `capture: \"preview\"`.\n */\n redactionProfile?: RedactionProfile;\n\n /**\n * Upper bound for each serialized preview attribute. Defaults to 200.\n *\n * @experimental Effective only when `capture: \"preview\"`.\n */\n maxPreviewChars?: number;\n\n /**\n * Receives bounded capture diagnostics such as\n * `AI_CAPTURE_FIELD_UNAVAILABLE`. Listener failures are isolated.\n *\n * @experimental\n */\n onDiagnostic?: AdapterDiagnosticListener;\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 /** Shared preview-capture counters (`@experimental`). */\n capture: AdapterCaptureDiagnostics;\n}\n\nexport interface AgentInspectOpenAiAgentsProcessor extends TracingProcessor {\n /**\n * Documents the local-only replacement install mode for this adapter.\n *\n * `addTraceProcessor()` remains an advanced user-owned choice outside this\n * package because it can preserve existing/default exporters.\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) && cached >= 0) {\n tokenUsage.cached = cached;\n }\n const cacheWrite =\n detailRecord.cache_creation_tokens ??\n detailRecord.cached_creation_tokens ??\n detailRecord.cache_write_tokens;\n if (\n typeof cacheWrite === \"number\" &&\n Number.isFinite(cacheWrite) &&\n cacheWrite >= 0\n ) {\n tokenUsage.cacheWrite = cacheWrite;\n }\n const reasoning =\n detailRecord.reasoning_tokens ?? detailRecord.output_tokens_details;\n if (typeof reasoning === \"number\" && Number.isFinite(reasoning) && reasoning >= 0) {\n tokenUsage.reasoning = reasoning;\n } else if (\n typeof reasoning === \"object\" &&\n reasoning !== null &&\n !Array.isArray(reasoning)\n ) {\n const nested = (reasoning as Record<string, unknown>).reasoning_tokens;\n if (typeof nested === \"number\" && Number.isFinite(nested) && nested >= 0) {\n tokenUsage.reasoning = nested;\n }\n }\n }\n\n const outputDetails = record.output_tokens_details;\n if (\n typeof outputDetails === \"object\" &&\n outputDetails !== null &&\n !Array.isArray(outputDetails)\n ) {\n const nested = (outputDetails as Record<string, unknown>).reasoning_tokens;\n if (\n typeof nested === \"number\" &&\n Number.isFinite(nested) &&\n nested >= 0 &&\n tokenUsage.reasoning === undefined\n ) {\n tokenUsage.reasoning = nested;\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\n/**\n * Raw span fields eligible for bounded preview capture, keyed by the logical\n * preview name. Span types without a payload concept return `{}` so preview\n * mode does not report false \"field unavailable\" diagnostics for them.\n */\nfunction spanPreviewSources(\n data: SpanData,\n phase: \"start\" | \"end\",\n): Record<string, unknown> {\n const withPhase = (\n input: unknown,\n output: unknown,\n ): Record<string, unknown> =>\n phase === \"start\" ? { input } : { input, output };\n\n switch (data.type) {\n case \"generation\":\n return withPhase(data.input, data.output);\n case \"function\":\n return withPhase(data.input, data.output);\n case \"response\":\n return withPhase(data._input, data._response);\n case \"transcription\":\n return withPhase(data.input.data, data.output);\n case \"speech\":\n return withPhase(data.input, data.output.data);\n case \"custom\":\n return { input: data.data };\n case \"speech_group\":\n return { input: data.input };\n default:\n return {};\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 preview: AdapterPreviewCapture;\n private readonly effectiveCapture: AgentInspectOpenAiAgentsCaptureMode;\n private readonly diagnostics: Omit<\n AgentInspectOpenAiAgentsDiagnostics,\n \"capture\"\n > = {\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.preview = createAdapterPreviewCapture({\n capture: this.requestedCapture,\n redactionProfile: options.redactionProfile,\n maxPreviewChars: options.maxPreviewChars,\n onDiagnostic: options.onDiagnostic,\n });\n this.effectiveCapture = this.preview.capture;\n this.writer = options.writer ?? (options.traceDir ? fileWriter({ dir: options.traceDir }) : undefined);\n for (const key of [\n \"options\",\n \"writer\",\n \"requestedCapture\",\n \"preview\",\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: true,\n // Preview rows report the effective bound/profile, which the\n // `share` and `strict` profiles can lower below the request.\n redactionProfile: this.preview.previewEnabled\n ? this.preview.redactionProfile\n : this.options.redactionProfile,\n maxPreviewChars: this.preview.previewEnabled\n ? this.preview.maxPreviewChars\n : 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 ...this.previewAttributes(span, \"start\"),\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 ...this.previewAttributes(span, \"end\"),\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, capture: this.preview.getDiagnostics() };\n }\n\n /** Bounded preview attributes for one span phase (empty unless enabled). */\n private previewAttributes(\n span: Span<SpanData>,\n phase: \"start\" | \"end\",\n ): Record<string, unknown> {\n if (!this.preview.previewEnabled) return {};\n return this.preview.applyPreviewFields(\n {},\n spanPreviewSources(span.spanData, phase),\n );\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 if (this.effectiveCapture === \"preview\") return;\n\n const previewOnlyOptions: string[] = [];\n if (this.options.redactionProfile !== undefined) previewOnlyOptions.push(\"redactionProfile\");\n if (this.options.maxPreviewChars !== undefined) previewOnlyOptions.push(\"maxPreviewChars\");\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.mjs CHANGED
@@ -79,9 +79,29 @@ function summarizeUsage(usage) {
79
79
  if (typeof details === "object" && details !== null && !Array.isArray(details)) {
80
80
  const detailRecord = details;
81
81
  const cached = detailRecord.cached_tokens ?? detailRecord.cached_input_tokens;
82
- if (typeof cached === "number" && Number.isFinite(cached)) {
82
+ if (typeof cached === "number" && Number.isFinite(cached) && cached >= 0) {
83
83
  tokenUsage.cached = cached;
84
84
  }
85
+ const cacheWrite = detailRecord.cache_creation_tokens ?? detailRecord.cached_creation_tokens ?? detailRecord.cache_write_tokens;
86
+ if (typeof cacheWrite === "number" && Number.isFinite(cacheWrite) && cacheWrite >= 0) {
87
+ tokenUsage.cacheWrite = cacheWrite;
88
+ }
89
+ const reasoning = detailRecord.reasoning_tokens ?? detailRecord.output_tokens_details;
90
+ if (typeof reasoning === "number" && Number.isFinite(reasoning) && reasoning >= 0) {
91
+ tokenUsage.reasoning = reasoning;
92
+ } else if (typeof reasoning === "object" && reasoning !== null && !Array.isArray(reasoning)) {
93
+ const nested = reasoning.reasoning_tokens;
94
+ if (typeof nested === "number" && Number.isFinite(nested) && nested >= 0) {
95
+ tokenUsage.reasoning = nested;
96
+ }
97
+ }
98
+ }
99
+ const outputDetails = record.output_tokens_details;
100
+ if (typeof outputDetails === "object" && outputDetails !== null && !Array.isArray(outputDetails)) {
101
+ const nested = outputDetails.reasoning_tokens;
102
+ if (typeof nested === "number" && Number.isFinite(nested) && nested >= 0 && tokenUsage.reasoning === void 0) {
103
+ tokenUsage.reasoning = nested;
104
+ }
85
105
  }
86
106
  return Object.keys(tokenUsage).length > 0 ? tokenUsage : void 0;
87
107
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;AAsIA,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;AAOA,SAAS,kBAAA,CACP,MACA,KAAA,EACyB;AACzB,EAAA,MAAM,SAAA,GAAY,CAChB,KAAA,EACA,MAAA,KAEA,KAAA,KAAU,OAAA,GAAU,EAAE,KAAA,EAAM,GAAI,EAAE,KAAA,EAAO,MAAA,EAAO;AAElD,EAAA,QAAQ,KAAK,IAAA;AAAM,IACjB,KAAK,YAAA;AACH,MAAA,OAAO,SAAA,CAAU,IAAA,CAAK,KAAA,EAAO,IAAA,CAAK,MAAM,CAAA;AAAA,IAC1C,KAAK,UAAA;AACH,MAAA,OAAO,SAAA,CAAU,IAAA,CAAK,KAAA,EAAO,IAAA,CAAK,MAAM,CAAA;AAAA,IAC1C,KAAK,UAAA;AACH,MAAA,OAAO,SAAA,CAAU,IAAA,CAAK,MAAA,EAAQ,IAAA,CAAK,SAAS,CAAA;AAAA,IAC9C,KAAK,eAAA;AACH,MAAA,OAAO,SAAA,CAAU,IAAA,CAAK,KAAA,CAAM,IAAA,EAAM,KAAK,MAAM,CAAA;AAAA,IAC/C,KAAK,QAAA;AACH,MAAA,OAAO,SAAA,CAAU,IAAA,CAAK,KAAA,EAAO,IAAA,CAAK,OAAO,IAAI,CAAA;AAAA,IAC/C,KAAK,QAAA;AACH,MAAA,OAAO,EAAE,KAAA,EAAO,IAAA,CAAK,IAAA,EAAK;AAAA,IAC5B,KAAK,cAAA;AACH,MAAA,OAAO,EAAE,KAAA,EAAO,IAAA,CAAK,KAAA,EAAM;AAAA,IAC7B;AACE,MAAA,OAAO,EAAC;AAAA;AAEd;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,EAsB1F,YAA6B,OAAA,EAA0C;AAA1C,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAC3B,IAAA,IAAA,CAAK,gBAAA,GAAmB,QAAQ,OAAA,IAAW,eAAA;AAC3C,IAAA,IAAA,CAAK,UAAU,2BAAA,CAA4B;AAAA,MACzC,SAAS,IAAA,CAAK,gBAAA;AAAA,MACd,kBAAkB,OAAA,CAAQ,gBAAA;AAAA,MAC1B,iBAAiB,OAAA,CAAQ,eAAA;AAAA,MACzB,cAAc,OAAA,CAAQ;AAAA,KACvB,CAAA;AACD,IAAA,IAAA,CAAK,gBAAA,GAAmB,KAAK,OAAA,CAAQ,OAAA;AACrC,IAAA,IAAA,CAAK,MAAA,GAAS,OAAA,CAAQ,MAAA,KAAW,OAAA,CAAQ,QAAA,GAAW,UAAA,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,SAAA;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,EAxB6B,OAAA;AAAA,EArBpB,WAAA,GAAc,oBAAA;AAAA,EACd,SAAA,GAAY,IAAA;AAAA,EAEJ,MAAA;AAAA,EACA,gBAAA;AAAA,EACA,OAAA;AAAA,EACA,gBAAA;AAAA,EACA,WAAA,GAGb;AAAA,IACF,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,EA4BjB,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,EAAyB,IAAA;AAAA;AAAA;AAAA,UAGzB,gBAAA,EAAkB,KAAK,OAAA,CAAQ,cAAA,GAC3B,KAAK,OAAA,CAAQ,gBAAA,GACb,KAAK,OAAA,CAAQ,gBAAA;AAAA,UACjB,eAAA,EAAiB,IAAA,CAAK,OAAA,CAAQ,cAAA,GAC1B,IAAA,CAAK,QAAQ,eAAA,GACb,wBAAA,CAAyB,IAAA,CAAK,OAAA,CAAQ,eAAe,CAAA;AAAA,UACzD,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,CAAA;AAAA,UACvC,GAAG,IAAA,CAAK,iBAAA,CAAkB,IAAA,EAAM,OAAO;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,CAAA;AAAA,UAC3D,GAAG,IAAA,CAAK,iBAAA,CAAkB,IAAA,EAAM,KAAK;AAAA,SACvC;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,EAAa,SAAS,IAAA,CAAK,OAAA,CAAQ,gBAAe,EAAE;AAAA,EACvE;AAAA;AAAA,EAGQ,iBAAA,CACN,MACA,KAAA,EACyB;AACzB,IAAA,IAAI,CAAC,IAAA,CAAK,OAAA,CAAQ,cAAA,SAAuB,EAAC;AAC1C,IAAA,OAAO,KAAK,OAAA,CAAQ,kBAAA;AAAA,MAClB,EAAC;AAAA,MACD,kBAAA,CAAmB,IAAA,CAAK,QAAA,EAAU,KAAK;AAAA,KACzC;AAAA,EACF;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,IAAI,IAAA,CAAK,qBAAqB,SAAA,EAAW;AAEzC,IAAA,MAAM,qBAA+B,EAAC;AACtC,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,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.mjs","sourcesContent":["import type {\n Span,\n SpanData,\n SpanError,\n Trace,\n TracingProcessor,\n} from \"@openai/agents\";\nimport { createAdapterPreviewCapture } from \"agent-inspect/advanced\";\nimport type {\n AdapterCaptureDiagnostics,\n AdapterDiagnosticListener,\n AdapterPreviewCapture,\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 * `metadata-only` is the default. `preview` persists bounded, redacted span\n * input/output preview attributes through the shared adapter capture helper.\n *\n * @experimental This package is part of the framework adapter train.\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` persists bounded, redacted span input/output\n * previews. It never persists full span content.\n */\n capture?: AgentInspectOpenAiAgentsCaptureMode;\n\n /**\n * Redaction profile applied to preview attributes before persistence.\n * `share` and `strict` also cap `maxPreviewChars`.\n *\n * @experimental Effective only when `capture: \"preview\"`.\n */\n redactionProfile?: RedactionProfile;\n\n /**\n * Upper bound for each serialized preview attribute. Defaults to 200.\n *\n * @experimental Effective only when `capture: \"preview\"`.\n */\n maxPreviewChars?: number;\n\n /**\n * Receives bounded capture diagnostics such as\n * `AI_CAPTURE_FIELD_UNAVAILABLE`. Listener failures are isolated.\n *\n * @experimental\n */\n onDiagnostic?: AdapterDiagnosticListener;\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 /** Shared preview-capture counters (`@experimental`). */\n capture: AdapterCaptureDiagnostics;\n}\n\nexport interface AgentInspectOpenAiAgentsProcessor extends TracingProcessor {\n /**\n * Documents the local-only replacement install mode for this adapter.\n *\n * `addTraceProcessor()` remains an advanced user-owned choice outside this\n * package because it can preserve existing/default exporters.\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\n/**\n * Raw span fields eligible for bounded preview capture, keyed by the logical\n * preview name. Span types without a payload concept return `{}` so preview\n * mode does not report false \"field unavailable\" diagnostics for them.\n */\nfunction spanPreviewSources(\n data: SpanData,\n phase: \"start\" | \"end\",\n): Record<string, unknown> {\n const withPhase = (\n input: unknown,\n output: unknown,\n ): Record<string, unknown> =>\n phase === \"start\" ? { input } : { input, output };\n\n switch (data.type) {\n case \"generation\":\n return withPhase(data.input, data.output);\n case \"function\":\n return withPhase(data.input, data.output);\n case \"response\":\n return withPhase(data._input, data._response);\n case \"transcription\":\n return withPhase(data.input.data, data.output);\n case \"speech\":\n return withPhase(data.input, data.output.data);\n case \"custom\":\n return { input: data.data };\n case \"speech_group\":\n return { input: data.input };\n default:\n return {};\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 preview: AdapterPreviewCapture;\n private readonly effectiveCapture: AgentInspectOpenAiAgentsCaptureMode;\n private readonly diagnostics: Omit<\n AgentInspectOpenAiAgentsDiagnostics,\n \"capture\"\n > = {\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.preview = createAdapterPreviewCapture({\n capture: this.requestedCapture,\n redactionProfile: options.redactionProfile,\n maxPreviewChars: options.maxPreviewChars,\n onDiagnostic: options.onDiagnostic,\n });\n this.effectiveCapture = this.preview.capture;\n this.writer = options.writer ?? (options.traceDir ? fileWriter({ dir: options.traceDir }) : undefined);\n for (const key of [\n \"options\",\n \"writer\",\n \"requestedCapture\",\n \"preview\",\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: true,\n // Preview rows report the effective bound/profile, which the\n // `share` and `strict` profiles can lower below the request.\n redactionProfile: this.preview.previewEnabled\n ? this.preview.redactionProfile\n : this.options.redactionProfile,\n maxPreviewChars: this.preview.previewEnabled\n ? this.preview.maxPreviewChars\n : 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 ...this.previewAttributes(span, \"start\"),\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 ...this.previewAttributes(span, \"end\"),\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, capture: this.preview.getDiagnostics() };\n }\n\n /** Bounded preview attributes for one span phase (empty unless enabled). */\n private previewAttributes(\n span: Span<SpanData>,\n phase: \"start\" | \"end\",\n ): Record<string, unknown> {\n if (!this.preview.previewEnabled) return {};\n return this.preview.applyPreviewFields(\n {},\n spanPreviewSources(span.spanData, phase),\n );\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 if (this.effectiveCapture === \"preview\") return;\n\n const previewOnlyOptions: string[] = [];\n if (this.options.redactionProfile !== undefined) previewOnlyOptions.push(\"redactionProfile\");\n if (this.options.maxPreviewChars !== undefined) previewOnlyOptions.push(\"maxPreviewChars\");\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 { createAdapterPreviewCapture } from \"agent-inspect/advanced\";\nimport type {\n AdapterCaptureDiagnostics,\n AdapterDiagnosticListener,\n AdapterPreviewCapture,\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 * `metadata-only` is the default. `preview` persists bounded, redacted span\n * input/output preview attributes through the shared adapter capture helper.\n *\n * @experimental This package is part of the framework adapter train.\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` persists bounded, redacted span input/output\n * previews. It never persists full span content.\n */\n capture?: AgentInspectOpenAiAgentsCaptureMode;\n\n /**\n * Redaction profile applied to preview attributes before persistence.\n * `share` and `strict` also cap `maxPreviewChars`.\n *\n * @experimental Effective only when `capture: \"preview\"`.\n */\n redactionProfile?: RedactionProfile;\n\n /**\n * Upper bound for each serialized preview attribute. Defaults to 200.\n *\n * @experimental Effective only when `capture: \"preview\"`.\n */\n maxPreviewChars?: number;\n\n /**\n * Receives bounded capture diagnostics such as\n * `AI_CAPTURE_FIELD_UNAVAILABLE`. Listener failures are isolated.\n *\n * @experimental\n */\n onDiagnostic?: AdapterDiagnosticListener;\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 /** Shared preview-capture counters (`@experimental`). */\n capture: AdapterCaptureDiagnostics;\n}\n\nexport interface AgentInspectOpenAiAgentsProcessor extends TracingProcessor {\n /**\n * Documents the local-only replacement install mode for this adapter.\n *\n * `addTraceProcessor()` remains an advanced user-owned choice outside this\n * package because it can preserve existing/default exporters.\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) && cached >= 0) {\n tokenUsage.cached = cached;\n }\n const cacheWrite =\n detailRecord.cache_creation_tokens ??\n detailRecord.cached_creation_tokens ??\n detailRecord.cache_write_tokens;\n if (\n typeof cacheWrite === \"number\" &&\n Number.isFinite(cacheWrite) &&\n cacheWrite >= 0\n ) {\n tokenUsage.cacheWrite = cacheWrite;\n }\n const reasoning =\n detailRecord.reasoning_tokens ?? detailRecord.output_tokens_details;\n if (typeof reasoning === \"number\" && Number.isFinite(reasoning) && reasoning >= 0) {\n tokenUsage.reasoning = reasoning;\n } else if (\n typeof reasoning === \"object\" &&\n reasoning !== null &&\n !Array.isArray(reasoning)\n ) {\n const nested = (reasoning as Record<string, unknown>).reasoning_tokens;\n if (typeof nested === \"number\" && Number.isFinite(nested) && nested >= 0) {\n tokenUsage.reasoning = nested;\n }\n }\n }\n\n const outputDetails = record.output_tokens_details;\n if (\n typeof outputDetails === \"object\" &&\n outputDetails !== null &&\n !Array.isArray(outputDetails)\n ) {\n const nested = (outputDetails as Record<string, unknown>).reasoning_tokens;\n if (\n typeof nested === \"number\" &&\n Number.isFinite(nested) &&\n nested >= 0 &&\n tokenUsage.reasoning === undefined\n ) {\n tokenUsage.reasoning = nested;\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\n/**\n * Raw span fields eligible for bounded preview capture, keyed by the logical\n * preview name. Span types without a payload concept return `{}` so preview\n * mode does not report false \"field unavailable\" diagnostics for them.\n */\nfunction spanPreviewSources(\n data: SpanData,\n phase: \"start\" | \"end\",\n): Record<string, unknown> {\n const withPhase = (\n input: unknown,\n output: unknown,\n ): Record<string, unknown> =>\n phase === \"start\" ? { input } : { input, output };\n\n switch (data.type) {\n case \"generation\":\n return withPhase(data.input, data.output);\n case \"function\":\n return withPhase(data.input, data.output);\n case \"response\":\n return withPhase(data._input, data._response);\n case \"transcription\":\n return withPhase(data.input.data, data.output);\n case \"speech\":\n return withPhase(data.input, data.output.data);\n case \"custom\":\n return { input: data.data };\n case \"speech_group\":\n return { input: data.input };\n default:\n return {};\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 preview: AdapterPreviewCapture;\n private readonly effectiveCapture: AgentInspectOpenAiAgentsCaptureMode;\n private readonly diagnostics: Omit<\n AgentInspectOpenAiAgentsDiagnostics,\n \"capture\"\n > = {\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.preview = createAdapterPreviewCapture({\n capture: this.requestedCapture,\n redactionProfile: options.redactionProfile,\n maxPreviewChars: options.maxPreviewChars,\n onDiagnostic: options.onDiagnostic,\n });\n this.effectiveCapture = this.preview.capture;\n this.writer = options.writer ?? (options.traceDir ? fileWriter({ dir: options.traceDir }) : undefined);\n for (const key of [\n \"options\",\n \"writer\",\n \"requestedCapture\",\n \"preview\",\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: true,\n // Preview rows report the effective bound/profile, which the\n // `share` and `strict` profiles can lower below the request.\n redactionProfile: this.preview.previewEnabled\n ? this.preview.redactionProfile\n : this.options.redactionProfile,\n maxPreviewChars: this.preview.previewEnabled\n ? this.preview.maxPreviewChars\n : 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 ...this.previewAttributes(span, \"start\"),\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 ...this.previewAttributes(span, \"end\"),\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, capture: this.preview.getDiagnostics() };\n }\n\n /** Bounded preview attributes for one span phase (empty unless enabled). */\n private previewAttributes(\n span: Span<SpanData>,\n phase: \"start\" | \"end\",\n ): Record<string, unknown> {\n if (!this.preview.previewEnabled) return {};\n return this.preview.applyPreviewFields(\n {},\n spanPreviewSources(span.spanData, phase),\n );\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 if (this.effectiveCapture === \"preview\") return;\n\n const previewOnlyOptions: string[] = [];\n if (this.options.redactionProfile !== undefined) previewOnlyOptions.push(\"redactionProfile\");\n if (this.options.maxPreviewChars !== undefined) previewOnlyOptions.push(\"maxPreviewChars\");\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": "6.28.0",
3
+ "version": "6.29.1",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "description": "OpenAI Agents JS processor integration for AgentInspect local traces and TraceContract checks",
@@ -37,7 +37,7 @@
37
37
  "@openai/agents": "^0.12.0"
38
38
  },
39
39
  "dependencies": {
40
- "agent-inspect": "6.28.0"
40
+ "agent-inspect": "6.29.1"
41
41
  },
42
42
  "publishConfig": {
43
43
  "access": "public"