@agent-inspect/langchain 1.1.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +188 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +20 -2
- package/dist/index.d.ts +20 -2
- package/dist/index.mjs +189 -8
- package/dist/index.mjs.map +1 -1
- package/package.json +14 -2
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/metadata.ts","../src/trace-persistence.ts","../src/agent-inspect-callback.ts"],"names":["hasActiveContext","getTraceDirFromContext","resolveTraceDir","getCurrentRunId","createRunId","resolveTraceSafetyOptions","createStepId","initializeTraceFile","prepareTraceEventForDisk","writeTraceEvent","BaseCallbackHandler","Redactor"],"mappings":";;;;;;;;AAMA,SAAS,SAAS,CAAA,EAA0C;AAC1D,EAAA,OAAO,OAAO,MAAM,QAAA,IAAY,CAAA,KAAM,QAAQ,CAAC,KAAA,CAAM,QAAQ,CAAC,CAAA;AAChE;AAEA,SAAS,IAAI,CAAA,EAAgC;AAC3C,EAAA,IAAI,OAAO,CAAA,KAAM,QAAA,IAAY,OAAO,QAAA,CAAS,CAAC,GAAG,OAAO,CAAA;AACxD,EAAA,IAAI,OAAO,CAAA,KAAM,QAAA,IAAY,CAAA,CAAE,IAAA,OAAW,EAAA,EAAI;AAC5C,IAAA,MAAM,CAAA,GAAI,OAAO,CAAC,CAAA;AAClB,IAAA,IAAI,MAAA,CAAO,QAAA,CAAS,CAAC,CAAA,EAAG,OAAO,CAAA;AAAA,EACjC;AACA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,oBAAoB,GAAA,EAAsD;AACjF,EAAA,MAAM,KAAA,GACJ,GAAA,CAAI,GAAA,CAAI,YAAY,KACpB,GAAA,CAAI,GAAA,CAAI,WAAW,CAAA,IACnB,IAAI,GAAA,CAAI,YAAY,CAAA,IACpB,GAAA,CAAI,IAAI,aAAa,CAAA;AACvB,EAAA,MAAM,MAAA,GACJ,GAAA,CAAI,GAAA,CAAI,gBAAgB,KACxB,GAAA,CAAI,GAAA,CAAI,YAAY,CAAA,IACpB,IAAI,GAAA,CAAI,aAAa,CAAA,IACrB,GAAA,CAAI,IAAI,iBAAiB,CAAA;AAC3B,EAAA,IAAI,QAAQ,GAAA,CAAI,GAAA,CAAI,WAAW,CAAA,IAAK,GAAA,CAAI,IAAI,YAAY,CAAA;AAExD,EAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,MAAA,IAAa,WAAW,MAAA,EAAW;AACtE,IAAA,KAAA,GAAQ,KAAA,GAAQ,MAAA;AAAA,EAClB;AAEA,EAAA,IAAI,KAAA,KAAU,MAAA,IAAa,MAAA,KAAW,MAAA,IAAa,UAAU,MAAA,EAAW;AACtE,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,MAAM,MAAkB,EAAC;AACzB,EAAA,IAAI,KAAA,KAAU,MAAA,EAAW,GAAA,CAAI,KAAA,GAAQ,KAAA;AACrC,EAAA,IAAI,MAAA,KAAW,MAAA,EAAW,GAAA,CAAI,MAAA,GAAS,MAAA;AACvC,EAAA,IAAI,KAAA,KAAU,MAAA,EAAW,GAAA,CAAI,KAAA,GAAQ,KAAA;AACrC,EAAA,OAAO,GAAA;AACT;AAGO,SAAS,kBAAkB,MAAA,EAAyC;AACzE,EAAA,IAAI;AACF,IAAA,IAAI,CAAC,QAAA,CAAS,MAAM,CAAA,EAAG,OAAO,KAAA,CAAA;AAE9B,IAAA,MAAM,UAAA,GAAwB;AAAA,MAC5B,SAAS,MAAA,CAAO,SAAS,CAAA,GAAI,MAAA,CAAO,UAAU,UAAA,GAAa,KAAA,CAAA;AAAA,MAC3D,SAAS,MAAA,CAAO,SAAS,CAAA,GAAI,MAAA,CAAO,UAAU,mBAAA,GAAsB,KAAA,CAAA;AAAA,MACpE,MAAA,CAAO,cAAA;AAAA,MACP,SAAS,MAAA,CAAO,iBAAiB,CAAA,GAAI,MAAA,CAAO,kBAAkB,UAAA,GAAa,KAAA,CAAA;AAAA,MAC3E,SAAS,MAAA,CAAO,iBAAiB,CAAA,GAAI,MAAA,CAAO,kBAAkB,WAAA,GAAc,KAAA;AAAA,KAC9E;AAEA,IAAA,KAAA,MAAW,KAAK,UAAA,EAAY;AAC1B,MAAA,IAAI,CAAC,QAAA,CAAS,CAAC,CAAA,EAAG;AAClB,MAAA,MAAM,IAAA,GAAO,oBAAoB,CAAC,CAAA;AAClC,MAAA,IAAI,MAAM,OAAO,IAAA;AAAA,IACnB;AAEA,IAAA,OAAO,KAAA,CAAA;AAAA,EACT,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,MAAA;AAAA,EACT;AACF;AAEA,SAAS,aAAa,kBAAA,EAAkE;AACtF,EAAA,IAAI,CAAC,QAAA,CAAS,kBAAkB,CAAA,EAAG,OAAO,MAAA;AAC1C,EAAA,MAAM,EAAA,GAAK,kBAAA,CAAmB,SAAA,IAAa,kBAAA,CAAmB,MAAA;AAC9D,EAAA,OAAO,QAAA,CAAS,EAAE,CAAA,GAAI,EAAA,GAAK,MAAA;AAC7B;AAGO,SAAS,iBAAiB,kBAAA,EAAiD;AAChF,EAAA,IAAI;AACF,IAAA,MAAM,EAAA,GAAK,aAAa,kBAAkB,CAAA;AAC1C,IAAA,MAAM,MAAA,GACH,EAAA,EAAI,KAAA,IACJ,EAAA,EAAI,aACJ,EAAA,EAAI,UAAA;AAEP,IAAA,IAAI,OAAO,MAAA,KAAW,QAAA,IAAY,MAAA,CAAO,IAAA,IAAQ,OAAO,MAAA;AAExD,IAAA,IAAI,QAAA,CAAS,kBAAkB,CAAA,EAAG;AAChC,MAAA,KAAA,MAAW,CAAA,IAAK,CAAC,OAAA,EAAS,WAAA,EAAa,YAAY,CAAA,EAAY;AAC7D,QAAA,MAAM,CAAA,GAAI,mBAAmB,CAAC,CAAA;AAC9B,QAAA,IAAI,OAAO,CAAA,KAAM,QAAA,IAAY,CAAA,CAAE,IAAA,IAAQ,OAAO,CAAA;AAAA,MAChD;AACA,MAAA,MAAM,KAAK,kBAAA,CAAmB,iBAAA;AAC9B,MAAA,IAAI,QAAA,CAAS,EAAE,CAAA,EAAG;AAChB,QAAA,MAAM,CAAA,GAAI,EAAA,CAAG,UAAA,IAAc,EAAA,CAAG,KAAA;AAC9B,QAAA,IAAI,OAAO,CAAA,KAAM,QAAA,IAAY,CAAA,CAAE,IAAA,IAAQ,OAAO,CAAA;AAAA,MAChD;AACA,MAAA,MAAM,KAAK,kBAAA,CAAmB,SAAA;AAC9B,MAAA,IAAI,QAAA,CAAS,EAAE,CAAA,EAAG;AAChB,QAAA,MAAM,IAAI,EAAA,CAAG,UAAA;AACb,QAAA,IAAI,OAAO,CAAA,KAAM,QAAA,IAAY,CAAA,CAAE,IAAA,IAAQ,OAAO,CAAA;AAAA,MAChD;AAAA,IACF;AACA,IAAA,OAAO,KAAA,CAAA;AAAA,EACT,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,MAAA;AAAA,EACT;AACF;AAGO,SAAS,WAAA,CAAY,OAAgB,QAAA,EAAsC;AAChF,EAAA,IAAI;AACF,IAAA,IAAI,QAAA,IAAY,GAAG,OAAO,KAAA,CAAA;AAC1B,IAAA,MAAM,IAAA,uBAAW,OAAA,EAAgB;AACjC,IAAA,MAAM,OAAO,IAAA,CAAK,SAAA,CAAU,KAAA,EAAO,CAAC,IAAI,CAAA,KAAM;AAC5C,MAAA,IAAI,OAAO,CAAA,KAAM,QAAA,EAAU,OAAO,EAAE,QAAA,EAAS;AAC7C,MAAA,IAAI,OAAO,CAAA,KAAM,UAAA,IAAc,OAAO,CAAA,KAAM,UAAU,OAAO,KAAA,CAAA;AAC7D,MAAA,IAAI,OAAO,CAAA,KAAM,QAAA,IAAY,CAAA,KAAM,IAAA,EAAM;AACvC,QAAA,IAAI,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,EAAG,OAAO,YAAA;AACxB,QAAA,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,MACZ;AACA,MAAA,OAAO,CAAA;AAAA,IACT,CAAC,CAAA;AACD,IAAA,IAAI,IAAA,KAAS,QAAW,OAAO,KAAA,CAAA;AAC/B,IAAA,IAAI,IAAA,CAAK,MAAA,IAAU,QAAA,EAAU,OAAO,IAAA;AACpC,IAAA,OAAO,CAAA,EAAG,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,QAAQ,CAAC,CAAA,MAAA,CAAA;AAAA,EACnC,CAAA,CAAA,MAAQ;AACN,IAAA,IAAI;AACF,MAAA,MAAM,CAAA,GAAI,OAAO,KAAK,CAAA;AACtB,MAAA,IAAI,CAAA,CAAE,MAAA,IAAU,QAAA,EAAU,OAAO,CAAA;AACjC,MAAA,OAAO,CAAA,EAAG,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,QAAQ,CAAC,CAAA,MAAA,CAAA;AAAA,IAChC,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,MAAA;AAAA,IACT;AAAA,EACF;AACF;AAEA,IAAM,iBAAA,GAAoB,EAAA;AAGnB,SAAS,gBAAgB,KAAA,EAAyC;AACvE,EAAA,IAAI;AACF,IAAA,IAAI,CAAC,QAAA,CAAS,KAAK,CAAA,SAAU,EAAC;AAC9B,IAAA,MAAM,MAA+B,EAAC;AACtC,IAAA,IAAI,CAAA,GAAI,CAAA;AACR,IAAA,KAAA,MAAW,CAAC,CAAA,EAAG,CAAC,KAAK,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAA,EAAG;AAC1C,MAAA,IAAI,KAAK,iBAAA,EAAmB;AAC5B,MAAA,IAAI,OAAO,CAAA,KAAM,UAAA,IAAc,OAAO,MAAM,QAAA,EAAU;AACtD,MAAA,IAAI,CAAA,KAAM,IAAA,IAAQ,OAAO,CAAA,KAAM,QAAA,IAAY,OAAO,CAAA,KAAM,QAAA,IAAY,OAAO,CAAA,KAAM,SAAA,EAAW;AAC1F,QAAA,GAAA,CAAI,CAAC,CAAA,GAAI,CAAA;AACT,QAAA,CAAA,EAAA;AACA,QAAA;AAAA,MACF;AACA,MAAA,IAAI,OAAO,MAAM,QAAA,EAAU;AACzB,QAAA,GAAA,CAAI,CAAC,CAAA,GAAI,CAAA,CAAE,QAAA,EAAS;AACpB,QAAA,CAAA,EAAA;AACA,QAAA;AAAA,MACF;AACA,MAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,EAAG;AACpB,QAAA,GAAA,CAAI,CAAC,CAAA,GAAI,CAAA,MAAA,EAAS,CAAA,CAAE,MAAM,CAAA,CAAA,CAAA;AAC1B,QAAA,CAAA,EAAA;AACA,QAAA;AAAA,MACF;AACA,MAAA,IAAI,QAAA,CAAS,CAAC,CAAA,EAAG;AACf,QAAA,GAAA,CAAI,CAAC,CAAA,GAAI,UAAA;AACT,QAAA,CAAA,EAAA;AACA,QAAA;AAAA,MACF;AACA,MAAA,GAAA,CAAI,CAAC,CAAA,GAAI,MAAA,CAAO,CAAC,CAAA;AACjB,MAAA,CAAA,EAAA;AAAA,IACF;AACA,IAAA,OAAO,GAAA;AAAA,EACT,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,EAAC;AAAA,EACV;AACF;ACtJA,SAAS,eAAe,IAAA,EAA6B;AACnD,EAAA,QAAQ,IAAA;AAAM,IACZ,KAAK,KAAA;AACH,MAAA,OAAO,KAAA;AAAA,IACT,KAAK,MAAA;AACH,MAAA,OAAO,MAAA;AAAA,IACT,KAAK,UAAA;AACH,MAAA,OAAO,UAAA;AAAA,IACT;AACE,MAAA,OAAO,OAAA;AAAA;AAEb;AAEA,SAAS,eAAe,KAAA,EAA8C;AACpE,EAAA,MAAM,GAAA,GAAoB;AAAA,IACxB,OAAA,EAAS,WAAA;AAAA,IACT,UAAA,EAAY;AAAA,GACd;AACA,EAAA,KAAA,MAAW,CAAC,CAAA,EAAG,CAAC,KAAK,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAA,EAAG;AAC1C,IAAA,GAAA,CAAI,CAAC,CAAA,GAAI,CAAA;AAAA,EACX;AACA,EAAA,OAAO,GAAA;AACT;AAMO,IAAM,4BAAN,MAAgC;AAAA,EAC5B,SAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EAET,WAAA,GAAc,KAAA;AAAA,EACd,aAAA,GAAgB,KAAA;AAAA,EAChB,aAAA;AAAA,EACA,YAAA;AAAA,EACS,WAAA,uBAAkB,GAAA,EAAoB;AAAA,EAE/C,WAAA,CAAY,OAAA,GAA4C,EAAC,EAAG;AAC1D,IAAA,MAAM,YAAYA,6BAAA,EAAiB;AACnC,IAAA,IAAA,CAAK,cAAc,CAAC,SAAA;AACpB,IAAA,IAAA,CAAK,OAAA,GAAU,QAAQ,MAAA,IAAU,KAAA;AACjC,IAAA,IAAA,CAAK,YAAY,SAAA,GACZC,mCAAA,EAAuB,IAAKC,4BAAA,CAAgB,EAAE,GAAA,EAAK,OAAA,CAAQ,QAAA,EAAU,IACtEA,4BAAA,CAAgB,EAAE,GAAA,EAAK,OAAA,CAAQ,UAAU,CAAA;AAC7C,IAAA,IAAA,CAAK,UACF,SAAA,GAAYC,4BAAA,KAAoB,MAAA,KACjC,OAAA,CAAQ,SACRC,wBAAA,EAAY;AACd,IAAA,IAAA,CAAK,QAAA,GAAW,QAAQ,OAAA,IAAW,iBAAA;AACnC,IAAA,IAAA,CAAK,UAAUC,sCAAA,CAA0B;AAAA,MACvC,QAAQ,OAAA,CAAQ,MAAA,GAAS,EAAE,KAAA,EAAO,OAAA,CAAQ,QAAO,GAAI,IAAA;AAAA,MACrD,kBAAkB,OAAA,CAAQ;AAAA,KAC3B,CAAA;AAAA,EACH;AAAA,EAEA,IAAI,KAAA,GAAgB;AAClB,IAAA,OAAO,IAAA,CAAK,MAAA;AAAA,EACd;AAAA,EAEA,IAAI,QAAA,GAAmB;AACrB,IAAA,OAAO,IAAA,CAAK,SAAA;AAAA,EACd;AAAA,EAEA,KAAA,GAAc;AACZ,IAAA,IAAA,CAAK,WAAA,GAAc,KAAA;AACnB,IAAA,IAAA,CAAK,aAAA,GAAgB,KAAA;AACrB,IAAA,IAAA,CAAK,aAAA,GAAgB,MAAA;AACrB,IAAA,IAAA,CAAK,YAAA,GAAe,MAAA;AACpB,IAAA,IAAA,CAAK,YAAY,KAAA,EAAM;AAAA,EACzB;AAAA,EAEA,QAAA,CAAS,SAAiB,WAAA,EAA4B;AACpD,IAAA,IAAI,CAAC,WAAA,IAAe,CAAC,IAAA,CAAK,YAAA,EAAc;AACtC,MAAA,IAAA,CAAK,YAAA,GAAe,OAAA;AAAA,IACtB;AAAA,EACF;AAAA,EAEA,gBAAgB,aAAA,EAA4C;AAC1D,IAAA,IAAI,CAAC,eAAe,OAAO,MAAA;AAC3B,IAAA,OAAO,IAAA,CAAK,WAAA,CAAY,GAAA,CAAI,aAAa,CAAA;AAAA,EAC3C;AAAA,EAEA,MAAM,YAAY,MAAA,EAOA;AAChB,IAAA,IAAI;AACF,MAAA,IAAA,CAAK,QAAA,CAAS,MAAA,CAAO,OAAA,EAAS,MAAA,CAAO,aAAa,CAAA;AAElD,MAAA,IAAI,IAAA,CAAK,WAAA,IAAe,CAAC,IAAA,CAAK,WAAA,EAAa;AACzC,QAAA,MAAM,IAAA,CAAK,iBAAA,CAAkB,MAAA,CAAO,SAAA,EAAW,OAAO,UAAU,CAAA;AAAA,MAClE;AAEA,MAAA,MAAM,SAASC,yBAAA,EAAa;AAC5B,MAAA,IAAA,CAAK,WAAA,CAAY,GAAA,CAAI,MAAA,CAAO,OAAA,EAAS,MAAM,CAAA;AAC3C,MAAA,MAAM,QAAA,GAAW,IAAA,CAAK,eAAA,CAAgB,MAAA,CAAO,aAAa,CAAA;AAE1D,MAAA,MAAM,KAAA,GAAoB;AAAA,QACxB,aAAA,EAAe,KAAA;AAAA,QACf,KAAA,EAAO,cAAA;AAAA,QACP,WAAW,MAAA,CAAO,SAAA;AAAA,QAClB,OAAO,IAAA,CAAK,MAAA;AAAA,QACZ,MAAA;AAAA,QACA,GAAI,QAAA,GAAW,EAAE,QAAA,KAAa,EAAC;AAAA,QAC/B,MAAM,MAAA,CAAO,IAAA;AAAA,QACb,IAAA,EAAM,cAAA,CAAe,MAAA,CAAO,IAAI,CAAA;AAAA,QAChC,WAAW,MAAA,CAAO,SAAA;AAAA,QAClB,QAAA,EAAU,cAAA,CAAe,MAAA,CAAO,UAAU;AAAA,OAC5C;AAEA,MAAA,MAAM,IAAA,CAAK,OAAO,KAAK,CAAA;AAAA,IACzB,SAAS,GAAA,EAAK;AACZ,MAAA,IAAA,CAAK,MAAM,GAAG,CAAA;AAAA,IAChB;AAAA,EACF;AAAA,EAEA,MAAM,UAAU,MAAA,EAOE;AAChB,IAAA,IAAI;AACF,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,WAAA,CAAY,GAAA,CAAI,OAAO,OAAO,CAAA;AAClD,MAAA,IAAI,CAAC,MAAA,EAAQ;AAEb,MAAA,MAAM,UAAA,GACJ,OAAO,MAAA,CAAO,UAAA,KAAe,QAAA,IAAY,MAAA,CAAO,QAAA,CAAS,MAAA,CAAO,UAAU,CAAA,GACtE,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,UAAU,CAAC,CAAA,GACzC,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,MAAA,CAAO,OAAA,IAAW,IAAA,CAAK,aAAA,IAAiB,MAAA,CAAO,OAAA,CAAQ,CAAA;AAEzE,MAAA,MAAM,KAAA,GAAoB;AAAA,QACxB,aAAA,EAAe,KAAA;AAAA,QACf,KAAA,EAAO,gBAAA;AAAA,QACP,WAAW,MAAA,CAAO,OAAA;AAAA,QAClB,OAAO,IAAA,CAAK,MAAA;AAAA,QACZ,MAAA;AAAA,QACA,QAAQ,MAAA,CAAO,MAAA;AAAA,QACf,SAAS,MAAA,CAAO,OAAA;AAAA,QAChB,UAAA;AAAA,QACA,GAAI,MAAA,CAAO,MAAA,KAAW,OAAA,IAAW,OAAO,YAAA,GACpC,EAAE,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,CAAO,YAAA,EAAa,KACxC;AAAC,OACP;AAEA,MAAA,MAAM,IAAA,CAAK,OAAO,KAAK,CAAA;AAEvB,MAAA,IACE,IAAA,CAAK,WAAA,IACL,CAAC,IAAA,CAAK,aAAA,IACN,IAAA,CAAK,YAAA,KAAiB,MAAA,CAAO,OAAA,IAC7B,CAAC,MAAA,CAAO,aAAA,EACR;AACA,QAAA,MAAM,IAAA,CAAK,mBAAA;AAAA,UACT,MAAA,CAAO,OAAA;AAAA,UACP,MAAA,CAAO,MAAA;AAAA,UACP,MAAA,CAAO;AAAA,SACT;AAAA,MACF;AAAA,IACF,SAAS,GAAA,EAAK;AACZ,MAAA,IAAA,CAAK,MAAM,GAAG,CAAA;AAAA,IAChB;AAAA,EACF;AAAA;AAAA,EAGA,MAAM,cAAc,MAAA,EASF;AAChB,IAAA,IAAI;AACF,MAAA,IAAA,CAAK,QAAA,CAAS,MAAA,CAAO,OAAA,EAAS,MAAA,CAAO,aAAa,CAAA;AAElD,MAAA,IAAI,IAAA,CAAK,WAAA,IAAe,CAAC,IAAA,CAAK,WAAA,EAAa;AACzC,QAAA,MAAM,IAAA,CAAK,iBAAA,CAAkB,MAAA,CAAO,SAAA,EAAW,OAAO,UAAU,CAAA;AAAA,MAClE;AAEA,MAAA,MAAM,SAASA,yBAAA,EAAa;AAC5B,MAAA,IAAA,CAAK,WAAA,CAAY,GAAA,CAAI,MAAA,CAAO,OAAA,EAAS,MAAM,CAAA;AAC3C,MAAA,MAAM,QAAA,GAAW,IAAA,CAAK,eAAA,CAAgB,MAAA,CAAO,aAAa,CAAA;AAE1D,MAAA,MAAM,OAAA,GAAsB;AAAA,QAC1B,aAAA,EAAe,KAAA;AAAA,QACf,KAAA,EAAO,cAAA;AAAA,QACP,WAAW,MAAA,CAAO,SAAA;AAAA,QAClB,OAAO,IAAA,CAAK,MAAA;AAAA,QACZ,MAAA;AAAA,QACA,GAAI,QAAA,GAAW,EAAE,QAAA,KAAa,EAAC;AAAA,QAC/B,MAAM,MAAA,CAAO,IAAA;AAAA,QACb,IAAA,EAAM,cAAA,CAAe,MAAA,CAAO,IAAI,CAAA;AAAA,QAChC,WAAW,MAAA,CAAO,SAAA;AAAA,QAClB,QAAA,EAAU,cAAA,CAAe,MAAA,CAAO,UAAU;AAAA,OAC5C;AACA,MAAA,MAAM,IAAA,CAAK,OAAO,OAAO,CAAA;AAEzB,MAAA,MAAM,SAAA,GAAwB;AAAA,QAC5B,aAAA,EAAe,KAAA;AAAA,QACf,KAAA,EAAO,gBAAA;AAAA,QACP,WAAW,MAAA,CAAO,SAAA;AAAA,QAClB,OAAO,IAAA,CAAK,MAAA;AAAA,QACZ,MAAA;AAAA,QACA,QAAQ,MAAA,CAAO,MAAA;AAAA,QACf,SAAS,MAAA,CAAO,SAAA;AAAA,QAChB,UAAA,EAAY,CAAA;AAAA,QACZ,GAAI,MAAA,CAAO,MAAA,KAAW,OAAA,IAAW,OAAO,YAAA,GACpC,EAAE,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,CAAO,YAAA,EAAa,KACxC;AAAC,OACP;AACA,MAAA,MAAM,IAAA,CAAK,OAAO,SAAS,CAAA;AAAA,IAC7B,SAAS,GAAA,EAAK;AACZ,MAAA,IAAA,CAAK,MAAM,GAAG,CAAA;AAAA,IAChB;AAAA,EACF;AAAA,EAEA,MAAM,iBAAA,CACJ,SAAA,EACA,KAAA,EACe;AACf,IAAA,IAAI,KAAK,WAAA,EAAa;AACtB,IAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,IAAA,IAAA,CAAK,aAAA,GAAgB,SAAA;AAErB,IAAA,MAAMC,gCAAA,CAAoB,IAAA,CAAK,MAAA,EAAQ,IAAA,CAAK,SAAS,CAAA;AAErD,IAAA,MAAM,QAAA,GAAoC;AAAA,MACxC,OAAA,EAAS,WAAA;AAAA,MACT,UAAA,EAAY;AAAA,KACd;AACA,IAAA,IAAI,KAAA,CAAM,cAAA,EAAgB,QAAA,CAAS,cAAA,GAAiB,KAAA,CAAM,cAAA;AAC1D,IAAA,IAAI,KAAA,CAAM,cAAA,EAAgB,QAAA,CAAS,cAAA,GAAiB,KAAA,CAAM,cAAA;AAE1D,IAAA,MAAM,KAAA,GAAoB;AAAA,MACxB,aAAA,EAAe,KAAA;AAAA,MACf,KAAA,EAAO,aAAA;AAAA,MACP,SAAA,EAAW,SAAA;AAAA,MACX,OAAO,IAAA,CAAK,MAAA;AAAA,MACZ,MAAM,IAAA,CAAK,QAAA;AAAA,MACX,SAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,IAAA,CAAK,OAAO,KAAK,CAAA;AAAA,EACzB;AAAA,EAEA,MAAM,mBAAA,CACJ,OAAA,EACA,UAAA,EACA,YAAA,EACe;AACf,IAAA,IAAI,IAAA,CAAK,aAAA,IAAiB,CAAC,IAAA,CAAK,WAAA,EAAa;AAC7C,IAAA,IAAA,CAAK,aAAA,GAAgB,IAAA;AAErB,IAAA,MAAM,SAAA,GAAY,KAAK,aAAA,IAAiB,OAAA;AACxC,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,UAAU,SAAS,CAAA;AAClD,IAAA,MAAM,SAAA,GAAY,UAAA,KAAe,OAAA,GAAU,OAAA,GAAU,SAAA;AAErD,IAAA,MAAM,KAAA,GAAoB;AAAA,MACxB,aAAA,EAAe,KAAA;AAAA,MACf,KAAA,EAAO,eAAA;AAAA,MACP,SAAA,EAAW,OAAA;AAAA,MACX,OAAO,IAAA,CAAK,MAAA;AAAA,MACZ,MAAA,EAAQ,SAAA;AAAA,MACR,OAAA;AAAA,MACA,UAAA;AAAA,MACA,GAAI,SAAA,KAAc,OAAA,IAAW,YAAA,GACzB,EAAE,KAAA,EAAO,EAAE,OAAA,EAAS,YAAA,EAAa,EAAE,GACnC;AAAC,KACP;AACA,IAAA,MAAM,IAAA,CAAK,OAAO,KAAK,CAAA;AAAA,EACzB;AAAA,EAEA,MAAM,OAAO,KAAA,EAAkC;AAC7C,IAAA,MAAM,IAAA,GAAOC,qCAAA,CAAyB,KAAA,EAAO,IAAA,CAAK,OAAO,CAAA;AACzD,IAAA,MAAMC,4BAAA,CAAgB,IAAA,EAAM,IAAA,CAAK,SAAS,CAAA;AAAA,EAC5C;AAAA,EAEA,MAAM,GAAA,EAAoB;AACxB,IAAA,IAAI,CAAC,KAAK,OAAA,EAAS;AACjB,MAAA,OAAA,CAAQ,KAAA,CAAM,6BAA6B,GAAG,CAAA;AAAA,IAChD;AAAA,EACF;AACF,CAAA;;;ACzSA,SAAS,gBAAgB,CAAA,EAAmC;AAC1D,EAAA,IAAI,OAAO,EAAE,IAAA,KAAS,QAAA,IAAY,EAAE,IAAA,CAAK,IAAA,EAAK,EAAG,OAAO,CAAA,CAAE,IAAA;AAC1D,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,CAAA,CAAE,EAAE,KAAK,CAAA,CAAE,EAAA,CAAG,MAAA,GAAS,CAAA,SAAU,CAAA,CAAE,EAAA,CAAG,CAAA,CAAE,EAAA,CAAG,SAAS,CAAC,CAAA;AACvE,EAAA,OAAO,CAAA,CAAE,IAAA;AACX;AAEA,SAAS,WAAW,GAAA,EAA4D;AAC9E,EAAA,IAAI,eAAe,KAAA,EAAO;AACxB,IAAA,OAAO,EAAE,SAAA,EAAW,GAAA,CAAI,IAAA,EAAM,YAAA,EAAc,IAAI,OAAA,EAAQ;AAAA,EAC1D;AACA,EAAA,OAAO,EAAE,YAAA,EAAc,MAAA,CAAO,GAAG,CAAA,EAAE;AACrC;AAEO,IAAM,oBAAA,GAAN,cAAmCC,wBAAA,CAAoB;AAAA,EAC5D,IAAA,GAAO,eAAA;AAAA,EAEE,KAAA;AAAA,EAKA,SAAA;AAAA,EACA,YAAA;AAAA,EACT,UAA0B,EAAC;AAAA,EAClB,OAAA,uBAAc,GAAA,EAAwB;AAAA,EAC/C,UAAA;AAAA,EAEA,WAAA,CAAY,OAAA,GAAuC,EAAC,EAAG;AACrD,IAAA,KAAA,CAAM,EAAE,CAAA;AACR,IAAA,IAAA,CAAK,KAAA,GAAQ;AAAA,MACX,OAAA,EAAS,QAAQ,OAAA,IAAW,eAAA;AAAA,MAC5B,MAAA,EAAQ,QAAQ,MAAA,IAAU,KAAA;AAAA,MAC1B,eAAA,EAAiB,QAAQ,eAAA,IAAmB,GAAA;AAAA,MAC5C,OAAA,EAAS,QAAQ,OAAA,IAAW,KAAA;AAAA,MAC5B,OAAA,EAAS,QAAQ,OAAA,IAAW,iBAAA;AAAA,MAC5B,GAAG;AAAA,KACL;AACA,IAAA,IAAA,CAAK,SAAA,GAAY,IAAIC,qBAAA,CAAS,EAAE,OAAO,IAAA,CAAK,KAAA,CAAM,QAAQ,CAAA;AAC1D,IAAA,IAAI,IAAA,CAAK,MAAM,OAAA,EAAS;AACtB,MAAA,IAAA,CAAK,YAAA,GAAe,IAAI,yBAAA,CAA0B;AAAA,QAChD,OAAA,EAAS,KAAK,KAAA,CAAM,OAAA;AAAA,QACpB,QAAA,EAAU,KAAK,KAAA,CAAM,QAAA;AAAA,QACrB,KAAA,EAAO,KAAK,KAAA,CAAM,KAAA;AAAA,QAClB,MAAA,EAAQ,KAAK,KAAA,CAAM,MAAA;AAAA,QACnB,MAAA,EAAQ,KAAK,KAAA,CAAM,MAAA;AAAA,QACnB,eAAA,EAAiB,KAAK,KAAA,CAAM;AAAA,OAC7B,CAAA;AAAA,IACH;AAAA,EACF;AAAA,EAEA,SAAA,GAA4B;AAC1B,IAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,MAC9B,GAAG,CAAA;AAAA,MACH,YAAY,CAAA,CAAE,UAAA,GAAa,EAAE,GAAG,CAAA,CAAE,YAAW,GAAI,MAAA;AAAA,MACjD,MAAA,EAAQ,EAAE,GAAG,CAAA,CAAE,MAAA;AAAO,KACxB,CAAE,CAAA;AAAA,EACJ;AAAA,EAEA,KAAA,GAAc;AACZ,IAAA,IAAA,CAAK,UAAU,EAAC;AAChB,IAAA,IAAA,CAAK,QAAQ,KAAA,EAAM;AACnB,IAAA,IAAA,CAAK,UAAA,GAAa,MAAA;AAClB,IAAA,IAAA,CAAK,cAAc,KAAA,EAAM;AAAA,EAC3B;AAAA,EAEA,WAAA,CAAY,SAAiB,WAAA,EAA4B;AACvD,IAAA,IAAI,WAAA,EAAa;AACjB,IAAA,IAAI,CAAC,IAAA,CAAK,UAAA,EAAY,IAAA,CAAK,UAAA,GAAa,OAAA;AAAA,EAC1C;AAAA,EAEA,YAAY,OAAA,EAAyB;AACnC,IAAA,OAAO,KAAK,UAAA,IAAc,OAAA;AAAA,EAC5B;AAAA,EAEA,aAAa,OAAA,EAAqC;AAChD,IAAA,MAAM,CAAA,GAAI,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,OAAO,CAAA;AAClC,IAAA,IAAI,CAAC,GAAG,OAAO,MAAA;AACf,IAAA,OAAO,IAAA,CAAK,GAAA,EAAI,GAAI,CAAA,CAAE,EAAA;AAAA,EACxB;AAAA,EAEA,cAAA,CAAe,SAAiB,IAAA,EAAyB;AACvD,IAAA,IAAA,CAAK,OAAA,CAAQ,IAAI,OAAA,EAAS,EAAE,IAAI,IAAA,CAAK,GAAA,EAAI,EAAG,IAAA,EAAM,CAAA;AAAA,EACpD;AAAA,EAEA,YAAY,OAAA,EAAuB;AACjC,IAAA,IAAA,CAAK,OAAA,CAAQ,OAAO,OAAO,CAAA;AAAA,EAC7B;AAAA,EAEA,UAAA,CACE,OAAA,EACA,WAAA,EACA,IAAA,EACA,UAAA,EACyB;AACzB,IAAA,MAAM,GAAA,GAA+B;AAAA,MACnC,cAAA,EAAgB;AAAA,KAClB;AACA,IAAA,IAAI,WAAA,MAAiB,WAAA,GAAc,WAAA;AACnC,IAAA,IAAI,KAAK,KAAA,CAAM,OAAA,EAAS,GAAA,CAAI,cAAA,GAAiB,KAAK,KAAA,CAAM,OAAA;AACxD,IAAA,IAAI,UAAA,MAAgB,OAAA,GAAU,UAAA;AAC9B,IAAA,IAAI,KAAK,KAAA,CAAM,QAAA,EAAU,GAAA,CAAI,QAAA,GAAW,KAAK,KAAA,CAAM,QAAA;AACnD,IAAA,MAAM,GAAA,GAAM,KAAK,KAAA,CAAM,OAAA;AACvB,IAAA,IAAI,GAAA,KAAQ,UAAU,IAAA,EAAM,MAAA,MAAY,IAAA,GAAO,CAAC,GAAG,IAAI,CAAA;AACvD,IAAA,OAAO,GAAA;AAAA,EACT;AAAA,EAEA,cAAA,CACE,OACA,QAAA,EACM;AACN,IAAA,IAAI,IAAA,CAAK,KAAA,CAAM,OAAA,KAAY,MAAA,IAAU,CAAC,QAAA,EAAU;AAChD,IAAA,KAAA,CAAM,WAAW,IAAA,CAAK,SAAA,CAAU,YAAA,CAAa,eAAA,CAAgB,QAAQ,CAAC,CAAA;AAAA,EACxE;AAAA,EAEA,aAAA,CAAc,OAAgC,QAAA,EAAyC;AACrF,IAAA,IAAI,IAAA,CAAK,KAAA,CAAM,OAAA,KAAY,SAAA,EAAW;AACtC,IAAA,MAAM,GAAA,GAAM,KAAK,KAAA,CAAM,eAAA;AACvB,IAAA,KAAA,MAAW,CAAC,CAAA,EAAG,CAAC,KAAK,MAAA,CAAO,OAAA,CAAQ,QAAQ,CAAA,EAAG;AAC7C,MAAA,MAAM,CAAA,GAAI,WAAA,CAAY,CAAA,EAAG,GAAG,CAAA;AAC5B,MAAA,IAAI,CAAA,KAAM,MAAA,EAAW,KAAA,CAAM,CAAC,CAAA,GAAI,CAAA;AAAA,IAClC;AAAA,EACF;AAAA,EAEA,WAAW,EAAA,EAAwB;AACjC,IAAA,IAAI;AACF,MAAA,MAAM,UAAA,GAAa,EAAA,CAAG,UAAA,GAClB,IAAA,CAAK,SAAA,CAAU,YAAA,CAAa,EAAE,GAAG,EAAA,CAAG,UAAA,EAAY,CAAA,GAChD,KAAA,CAAA;AACJ,MAAA,IAAA,CAAK,QAAQ,IAAA,CAAK,EAAE,GAAG,EAAA,EAAI,YAAY,CAAA;AAAA,IACzC,SAAS,GAAA,EAAK;AACZ,MAAA,IAAI,CAAC,IAAA,CAAK,KAAA,CAAM,MAAA,EAAQ;AACtB,QAAA,OAAA,CAAQ,KAAA,CAAM,6BAA6B,GAAG,CAAA;AAAA,MAChD;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,iBAAA,CACJ,OAAA,EACA,eACA,IAAA,EACA,IAAA,EACA,OACA,SAAA,EACe;AACf,IAAA,MAAM,IAAA,CAAK,cAAc,WAAA,CAAY;AAAA,MACnC,OAAA;AAAA,MACA,aAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA,EAAY;AAAA,KACb,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,eAAA,CACJ,OAAA,EACA,eACA,MAAA,EACA,OAAA,EACA,YACA,YAAA,EACe;AACf,IAAA,MAAM,IAAA,CAAK,cAAc,SAAA,CAAU;AAAA,MACjC,OAAA;AAAA,MACA,aAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,MACA,MAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,gBACJ,OAAA,EACA,aAAA,EACA,MACA,IAAA,EACA,KAAA,EACA,QACA,YAAA,EACe;AACf,IAAA,MAAM,IAAA,CAAK,cAAc,aAAA,CAAc;AAAA,MACrC,OAAA;AAAA,MACA,aAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,SAAA,EAAW,KAAK,GAAA,EAAI;AAAA,MACpB,UAAA,EAAY,KAAA;AAAA,MACZ,MAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,EACH;AAAA,EAEA,MAAe,gBAAA,CACb,KAAA,EACA,MAAA,EACA,KAAA,EACA,SACA,IAAA,EACA,QAAA,EACA,OAAA,EACA,WAAA,EACA,MAAA,EACe;AAEf,IAAA,IAAA,CAAK,WAAA,CAAY,OAAO,WAAW,CAAA;AACnC,IAAA,IAAA,CAAK,cAAA,CAAe,OAAO,OAAO,CAAA;AAClC,IAAA,MAAM,KAAA,GAAQ,eAAA,CAAgB,KAAK,CAAA,IAAK,OAAA;AACxC,IAAA,MAAM,WAAoC,EAAC;AAC3C,IAAA,IAAI,IAAA,CAAK,KAAA,CAAM,OAAA,KAAY,SAAA,WAAoB,YAAA,GAAe,MAAA;AAC9D,IAAA,MAAM,KAAA,GAAiC;AAAA,MACrC,GAAG,IAAA,CAAK,UAAA,CAAW,KAAA,EAAO,WAAA,EAAa,MAAM,OAAO;AAAA,KACtD;AACA,IAAA,IAAA,CAAK,cAAA,CAAe,OAAO,QAAQ,CAAA;AACnC,IAAA,IAAA,CAAK,aAAA,CAAc,OAAO,QAAQ,CAAA;AAClC,IAAA,MAAM,EAAA,GAAK,KAAK,GAAA,EAAI;AACpB,IAAA,IAAA,CAAK,UAAA,CAAW;AAAA,MACd,OAAA,EAAS,GAAG,KAAK,CAAA,YAAA,CAAA;AAAA,MACjB,KAAA,EAAO,IAAA,CAAK,WAAA,CAAY,KAAK,CAAA;AAAA,MAC7B,QAAA,EAAU,WAAA;AAAA,MACV,IAAA,EAAM,CAAA,MAAA,EAAS,OAAA,IAAW,KAAK,CAAA,CAAA;AAAA,MAC/B,IAAA,EAAM,OAAA;AAAA,MACN,SAAA,EAAW,EAAA;AAAA,MACX,MAAA,EAAQ,SAAA;AAAA,MACR,UAAA,EAAY,KAAA;AAAA,MACZ,UAAA,EAAY,UAAA;AAAA,MACZ,MAAA,EAAQ,EAAE,IAAA,EAAM,SAAA;AAAU,KAC3B,CAAA;AACD,IAAA,MAAM,IAAA,CAAK,iBAAA,CAAkB,KAAA,EAAO,WAAA,EAAa,CAAA,MAAA,EAAS,WAAW,KAAK,CAAA,CAAA,EAAI,OAAA,EAAS,KAAA,EAAO,EAAE,CAAA;AAAA,EAClG;AAAA,EAEA,MAAe,cAAA,CACb,OAAA,EACA,KAAA,EACA,WAAA,EACA,MACA,OAAA,EACe;AACf,IAAA,IAAA,CAAK,WAAA,CAAY,OAAO,WAAW,CAAA;AACnC,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,YAAA,CAAa,KAAK,CAAA;AAC1C,IAAA,IAAA,CAAK,YAAY,KAAK,CAAA;AACtB,IAAA,MAAM,WAAoC,EAAC;AAC3C,IAAA,IAAI,IAAA,CAAK,KAAA,CAAM,OAAA,KAAY,SAAA,WAAoB,aAAA,GAAgB,OAAA;AAC/D,IAAA,MAAM,KAAA,GAAiC;AAAA,MACrC,GAAG,IAAA,CAAK,UAAA,CAAW,KAAA,EAAO,WAAA,EAAa,MAAM,MAAS;AAAA,KACxD;AACA,IAAA,IAAA,CAAK,aAAA,CAAc,OAAO,QAAQ,CAAA;AAClC,IAAA,MAAM,EAAA,GAAK,KAAK,GAAA,EAAI;AACpB,IAAA,IAAA,CAAK,UAAA,CAAW;AAAA,MACd,OAAA,EAAS,GAAG,KAAK,CAAA,UAAA,CAAA;AAAA,MACjB,KAAA,EAAO,IAAA,CAAK,WAAA,CAAY,KAAK,CAAA;AAAA,MAC7B,QAAA,EAAU,WAAA;AAAA,MACV,IAAA,EAAM,WAAA;AAAA,MACN,IAAA,EAAM,OAAA;AAAA,MACN,SAAA,EAAW,EAAA;AAAA,MACX,MAAA,EAAQ,IAAA;AAAA,MACR,UAAA;AAAA,MACA,UAAA,EAAY,KAAA;AAAA,MACZ,UAAA,EAAY,UAAA;AAAA,MACZ,MAAA,EAAQ,EAAE,IAAA,EAAM,SAAA;AAAU,KAC3B,CAAA;AACD,IAAA,MAAM,KAAK,eAAA,CAAgB,KAAA,EAAO,WAAA,EAAa,SAAA,EAAW,IAAI,UAAU,CAAA;AAAA,EAC1E;AAAA,EAEA,MAAe,gBAAA,CACb,GAAA,EACA,KAAA,EACA,WAAA,EACA,MACA,OAAA,EACe;AACf,IAAA,IAAA,CAAK,WAAA,CAAY,OAAO,WAAW,CAAA;AACnC,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,YAAA,CAAa,KAAK,CAAA;AAC1C,IAAA,IAAA,CAAK,YAAY,KAAK,CAAA;AACtB,IAAA,MAAM,EAAE,SAAA,EAAW,YAAA,EAAa,GAAI,WAAW,GAAG,CAAA;AAClD,IAAA,MAAM,KAAA,GAAiC;AAAA,MACrC,GAAG,IAAA,CAAK,UAAA,CAAW,KAAA,EAAO,WAAA,EAAa,MAAM,MAAS,CAAA;AAAA,MACtD,SAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,EAAA,GAAK,KAAK,GAAA,EAAI;AACpB,IAAA,IAAA,CAAK,UAAA,CAAW;AAAA,MACd,OAAA,EAAS,GAAG,KAAK,CAAA,YAAA,CAAA;AAAA,MACjB,KAAA,EAAO,IAAA,CAAK,WAAA,CAAY,KAAK,CAAA;AAAA,MAC7B,QAAA,EAAU,WAAA;AAAA,MACV,IAAA,EAAM,aAAA;AAAA,MACN,IAAA,EAAM,OAAA;AAAA,MACN,SAAA,EAAW,EAAA;AAAA,MACX,MAAA,EAAQ,OAAA;AAAA,MACR,UAAA;AAAA,MACA,UAAA,EAAY,KAAA;AAAA,MACZ,UAAA,EAAY,UAAA;AAAA,MACZ,MAAA,EAAQ,EAAE,IAAA,EAAM,SAAA;AAAU,KAC3B,CAAA;AACD,IAAA,MAAM,KAAK,eAAA,CAAgB,KAAA,EAAO,aAAa,OAAA,EAAS,EAAA,EAAI,YAAY,YAAY,CAAA;AAAA,EACtF;AAAA,EAEA,MAAe,eACb,GAAA,EACA,OAAA,EACA,OACA,WAAA,EACA,YAAA,EACA,IAAA,EACA,QAAA,EACA,OAAA,EACe;AACf,IAAA,IAAA,CAAK,WAAA,CAAY,OAAO,WAAW,CAAA;AACnC,IAAA,IAAA,CAAK,cAAA,CAAe,OAAO,KAAK,CAAA;AAChC,IAAA,MAAM,KAAA,GAAQ,iBAAiB,GAAG,CAAA;AAClC,IAAA,MAAM,WAAoC,EAAC;AAC3C,IAAA,IAAI,IAAA,CAAK,KAAA,CAAM,OAAA,KAAY,SAAA,EAAW;AACpC,MAAA,QAAA,CAAS,gBAAgB,OAAA,CAAQ,MAAA,KAAW,CAAA,GAAI,OAAA,CAAQ,CAAC,CAAA,GAAI,OAAA;AAAA,IAC/D;AACA,IAAA,MAAM,KAAA,GAAiC;AAAA,MACrC,GAAG,IAAA,CAAK,UAAA,CAAW,KAAA,EAAO,WAAA,EAAa,MAAM,OAAO;AAAA,KACtD;AACA,IAAA,IAAI,SAAS,IAAA,CAAK,KAAA,CAAM,OAAA,KAAY,MAAA,QAAc,KAAA,GAAQ,KAAA;AAC1D,IAAA,IAAA,CAAK,cAAA,CAAe,OAAO,QAAQ,CAAA;AACnC,IAAA,IAAA,CAAK,aAAA,CAAc,OAAO,QAAQ,CAAA;AAClC,IAAA,MAAM,EAAA,GAAK,KAAK,GAAA,EAAI;AACpB,IAAA,MAAM,QAAA,GAAW,CAAA,IAAA,EAAO,KAAA,IAAS,KAAK,CAAA,CAAA;AACtC,IAAA,IAAA,CAAK,UAAA,CAAW;AAAA,MACd,OAAA,EAAS,GAAG,KAAK,CAAA,UAAA,CAAA;AAAA,MACjB,KAAA,EAAO,IAAA,CAAK,WAAA,CAAY,KAAK,CAAA;AAAA,MAC7B,QAAA,EAAU,WAAA;AAAA,MACV,IAAA,EAAM,QAAA;AAAA,MACN,IAAA,EAAM,KAAA;AAAA,MACN,SAAA,EAAW,EAAA;AAAA,MACX,MAAA,EAAQ,SAAA;AAAA,MACR,UAAA,EAAY,KAAA;AAAA,MACZ,UAAA,EAAY,UAAA;AAAA,MACZ,MAAA,EAAQ,EAAE,IAAA,EAAM,SAAA;AAAU,KAC3B,CAAA;AACD,IAAA,MAAM,KAAK,iBAAA,CAAkB,KAAA,EAAO,aAAa,QAAA,EAAU,KAAA,EAAO,OAAO,EAAE,CAAA;AAAA,EAC7E;AAAA,EAEA,MAAe,qBACb,GAAA,EACA,QAAA,EACA,OACA,WAAA,EACA,YAAA,EACA,IAAA,EACA,QAAA,EACA,OAAA,EACe;AACf,IAAA,IAAA,CAAK,WAAA,CAAY,OAAO,WAAW,CAAA;AACnC,IAAA,IAAA,CAAK,cAAA,CAAe,OAAO,KAAK,CAAA;AAChC,IAAA,MAAM,KAAA,GAAQ,iBAAiB,GAAG,CAAA;AAClC,IAAA,MAAM,WAAoC,EAAC;AAC3C,IAAA,IAAI,IAAA,CAAK,KAAA,CAAM,OAAA,KAAY,SAAA,WAAoB,YAAA,GAAe,QAAA;AAC9D,IAAA,MAAM,KAAA,GAAiC;AAAA,MACrC,GAAG,IAAA,CAAK,UAAA,CAAW,KAAA,EAAO,WAAA,EAAa,MAAM,OAAO;AAAA,KACtD;AACA,IAAA,IAAI,SAAS,IAAA,CAAK,KAAA,CAAM,OAAA,KAAY,MAAA,QAAc,KAAA,GAAQ,KAAA;AAC1D,IAAA,IAAA,CAAK,cAAA,CAAe,OAAO,QAAQ,CAAA;AACnC,IAAA,IAAA,CAAK,aAAA,CAAc,OAAO,QAAQ,CAAA;AAClC,IAAA,MAAM,EAAA,GAAK,KAAK,GAAA,EAAI;AACpB,IAAA,MAAM,QAAA,GAAW,CAAA,IAAA,EAAO,KAAA,IAAS,KAAK,CAAA,CAAA;AACtC,IAAA,IAAA,CAAK,UAAA,CAAW;AAAA,MACd,OAAA,EAAS,GAAG,KAAK,CAAA,WAAA,CAAA;AAAA,MACjB,KAAA,EAAO,IAAA,CAAK,WAAA,CAAY,KAAK,CAAA;AAAA,MAC7B,QAAA,EAAU,WAAA;AAAA,MACV,IAAA,EAAM,QAAA;AAAA,MACN,IAAA,EAAM,KAAA;AAAA,MACN,SAAA,EAAW,EAAA;AAAA,MACX,MAAA,EAAQ,SAAA;AAAA,MACR,UAAA,EAAY,KAAA;AAAA,MACZ,UAAA,EAAY,UAAA;AAAA,MACZ,MAAA,EAAQ,EAAE,IAAA,EAAM,SAAA;AAAU,KAC3B,CAAA;AACD,IAAA,MAAM,KAAK,iBAAA,CAAkB,KAAA,EAAO,aAAa,QAAA,EAAU,KAAA,EAAO,OAAO,EAAE,CAAA;AAAA,EAC7E;AAAA,EAEA,MAAe,YAAA,CACb,MAAA,EACA,KAAA,EACA,WAAA,EACA,MACA,YAAA,EACe;AACf,IAAA,IAAA,CAAK,WAAA,CAAY,OAAO,WAAW,CAAA;AACnC,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,YAAA,CAAa,KAAK,CAAA;AAC1C,IAAA,IAAA,CAAK,YAAY,KAAK,CAAA;AACtB,IAAA,MAAM,MAAA,GAAS,kBAAkB,MAAM,CAAA;AACvC,IAAA,MAAM,KAAA,GAAQ,iBAAiB,MAAM,CAAA;AACrC,IAAA,MAAM,WAAoC,EAAC;AAC3C,IAAA,IAAI,IAAA,CAAK,KAAA,CAAM,OAAA,KAAY,SAAA,WAAoB,aAAA,GAAgB,MAAA;AAC/D,IAAA,MAAM,KAAA,GAAiC;AAAA,MACrC,GAAG,IAAA,CAAK,UAAA,CAAW,KAAA,EAAO,WAAA,EAAa,MAAM,MAAS;AAAA,KACxD;AACA,IAAA,IAAI,SAAS,IAAA,CAAK,KAAA,CAAM,OAAA,KAAY,MAAA,QAAc,KAAA,GAAQ,KAAA;AAC1D,IAAA,IAAI,UAAU,IAAA,CAAK,KAAA,CAAM,OAAA,KAAY,MAAA,QAAc,MAAA,GAAS,MAAA;AAC5D,IAAA,IAAA,CAAK,aAAA,CAAc,OAAO,QAAQ,CAAA;AAClC,IAAA,MAAM,EAAA,GAAK,KAAK,GAAA,EAAI;AACpB,IAAA,IAAA,CAAK,UAAA,CAAW;AAAA,MACd,OAAA,EAAS,GAAG,KAAK,CAAA,QAAA,CAAA;AAAA,MACjB,KAAA,EAAO,IAAA,CAAK,WAAA,CAAY,KAAK,CAAA;AAAA,MAC7B,QAAA,EAAU,WAAA;AAAA,MACV,IAAA,EAAM,CAAA,IAAA,EAAO,KAAA,IAAS,KAAK,CAAA,CAAA;AAAA,MAC3B,IAAA,EAAM,KAAA;AAAA,MACN,SAAA,EAAW,EAAA;AAAA,MACX,MAAA,EAAQ,IAAA;AAAA,MACR,UAAA;AAAA,MACA,UAAA,EAAY,KAAA;AAAA,MACZ,UAAA,EAAY,UAAA;AAAA,MACZ,MAAA,EAAQ,EAAE,IAAA,EAAM,SAAA;AAAU,KAC3B,CAAA;AACD,IAAA,MAAM,KAAK,eAAA,CAAgB,KAAA,EAAO,WAAA,EAAa,SAAA,EAAW,IAAI,UAAU,CAAA;AAAA,EAC1E;AAAA,EAEA,MAAe,cAAA,CACb,GAAA,EACA,KAAA,EACA,WAAA,EACA,MACA,YAAA,EACe;AACf,IAAA,IAAA,CAAK,WAAA,CAAY,OAAO,WAAW,CAAA;AACnC,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,YAAA,CAAa,KAAK,CAAA;AAC1C,IAAA,IAAA,CAAK,YAAY,KAAK,CAAA;AACtB,IAAA,MAAM,EAAE,SAAA,EAAW,YAAA,EAAa,GAAI,WAAW,GAAG,CAAA;AAClD,IAAA,MAAM,KAAA,GAAiC;AAAA,MACrC,GAAG,IAAA,CAAK,UAAA,CAAW,KAAA,EAAO,WAAA,EAAa,MAAM,MAAS,CAAA;AAAA,MACtD,SAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,EAAA,GAAK,KAAK,GAAA,EAAI;AACpB,IAAA,IAAA,CAAK,UAAA,CAAW;AAAA,MACd,OAAA,EAAS,GAAG,KAAK,CAAA,UAAA,CAAA;AAAA,MACjB,KAAA,EAAO,IAAA,CAAK,WAAA,CAAY,KAAK,CAAA;AAAA,MAC7B,QAAA,EAAU,WAAA;AAAA,MACV,IAAA,EAAM,WAAA;AAAA,MACN,IAAA,EAAM,KAAA;AAAA,MACN,SAAA,EAAW,EAAA;AAAA,MACX,MAAA,EAAQ,OAAA;AAAA,MACR,UAAA;AAAA,MACA,UAAA,EAAY,KAAA;AAAA,MACZ,UAAA,EAAY,UAAA;AAAA,MACZ,MAAA,EAAQ,EAAE,IAAA,EAAM,SAAA;AAAU,KAC3B,CAAA;AACD,IAAA,MAAM,KAAK,eAAA,CAAgB,KAAA,EAAO,aAAa,OAAA,EAAS,EAAA,EAAI,YAAY,YAAY,CAAA;AAAA,EACtF;AAAA,EAEA,MAAe,gBACb,IAAA,EACA,KAAA,EACA,OACA,WAAA,EACA,IAAA,EACA,QAAA,EACA,OAAA,EACA,WAAA,EACe;AACf,IAAA,IAAA,CAAK,WAAA,CAAY,OAAO,WAAW,CAAA;AACnC,IAAA,IAAA,CAAK,cAAA,CAAe,OAAO,MAAM,CAAA;AACjC,IAAA,MAAM,QAAA,GAAW,eAAA,CAAgB,IAAI,CAAA,IAAK,MAAA;AAC1C,IAAA,MAAM,WAAoC,EAAC;AAC3C,IAAA,IAAI,IAAA,CAAK,KAAA,CAAM,OAAA,KAAY,SAAA,WAAoB,YAAA,GAAe,KAAA;AAC9D,IAAA,MAAM,KAAA,GAAiC;AAAA,MACrC,GAAG,IAAA,CAAK,UAAA,CAAW,KAAA,EAAO,WAAA,EAAa,MAAM,OAAO,CAAA;AAAA,MACpD,IAAA,EAAM;AAAA,KACR;AACA,IAAA,IAAA,CAAK,cAAA,CAAe,OAAO,QAAQ,CAAA;AACnC,IAAA,IAAA,CAAK,aAAA,CAAc,OAAO,QAAQ,CAAA;AAClC,IAAA,MAAM,EAAA,GAAK,KAAK,GAAA,EAAI;AACpB,IAAA,MAAM,QAAA,GAAW,QAAQ,QAAQ,CAAA,CAAA;AACjC,IAAA,IAAA,CAAK,UAAA,CAAW;AAAA,MACd,OAAA,EAAS,GAAG,KAAK,CAAA,WAAA,CAAA;AAAA,MACjB,KAAA,EAAO,IAAA,CAAK,WAAA,CAAY,KAAK,CAAA;AAAA,MAC7B,QAAA,EAAU,WAAA;AAAA,MACV,IAAA,EAAM,QAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,SAAA,EAAW,EAAA;AAAA,MACX,MAAA,EAAQ,SAAA;AAAA,MACR,UAAA,EAAY,KAAA;AAAA,MACZ,UAAA,EAAY,UAAA;AAAA,MACZ,MAAA,EAAQ,EAAE,IAAA,EAAM,SAAA;AAAU,KAC3B,CAAA;AACD,IAAA,MAAM,KAAK,iBAAA,CAAkB,KAAA,EAAO,aAAa,QAAA,EAAU,MAAA,EAAQ,OAAO,EAAE,CAAA;AAAA,EAC9E;AAAA,EAEA,MAAe,aAAA,CACb,MAAA,EACA,KAAA,EACA,aACA,IAAA,EACe;AACf,IAAA,IAAA,CAAK,WAAA,CAAY,OAAO,WAAW,CAAA;AACnC,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,YAAA,CAAa,KAAK,CAAA;AAC1C,IAAA,IAAA,CAAK,YAAY,KAAK,CAAA;AACtB,IAAA,MAAM,WAAoC,EAAC;AAC3C,IAAA,IAAI,IAAA,CAAK,KAAA,CAAM,OAAA,KAAY,SAAA,WAAoB,aAAA,GAAgB,MAAA;AAC/D,IAAA,MAAM,KAAA,GAAiC;AAAA,MACrC,GAAG,IAAA,CAAK,UAAA,CAAW,KAAA,EAAO,WAAA,EAAa,MAAM,MAAS;AAAA,KACxD;AACA,IAAA,IAAA,CAAK,aAAA,CAAc,OAAO,QAAQ,CAAA;AAClC,IAAA,MAAM,EAAA,GAAK,KAAK,GAAA,EAAI;AACpB,IAAA,IAAA,CAAK,UAAA,CAAW;AAAA,MACd,OAAA,EAAS,GAAG,KAAK,CAAA,SAAA,CAAA;AAAA,MACjB,KAAA,EAAO,IAAA,CAAK,WAAA,CAAY,KAAK,CAAA;AAAA,MAC7B,QAAA,EAAU,WAAA;AAAA,MACV,IAAA,EAAM,UAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,SAAA,EAAW,EAAA;AAAA,MACX,MAAA,EAAQ,IAAA;AAAA,MACR,UAAA;AAAA,MACA,UAAA,EAAY,KAAA;AAAA,MACZ,UAAA,EAAY,UAAA;AAAA,MACZ,MAAA,EAAQ,EAAE,IAAA,EAAM,SAAA;AAAU,KAC3B,CAAA;AACD,IAAA,MAAM,KAAK,eAAA,CAAgB,KAAA,EAAO,WAAA,EAAa,SAAA,EAAW,IAAI,UAAU,CAAA;AAAA,EAC1E;AAAA,EAEA,MAAe,eAAA,CACb,GAAA,EACA,KAAA,EACA,aACA,IAAA,EACe;AACf,IAAA,IAAA,CAAK,WAAA,CAAY,OAAO,WAAW,CAAA;AACnC,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,YAAA,CAAa,KAAK,CAAA;AAC1C,IAAA,IAAA,CAAK,YAAY,KAAK,CAAA;AACtB,IAAA,MAAM,EAAE,SAAA,EAAW,YAAA,EAAa,GAAI,WAAW,GAAG,CAAA;AAClD,IAAA,MAAM,KAAA,GAAiC;AAAA,MACrC,GAAG,IAAA,CAAK,UAAA,CAAW,KAAA,EAAO,WAAA,EAAa,MAAM,MAAS,CAAA;AAAA,MACtD,SAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,EAAA,GAAK,KAAK,GAAA,EAAI;AACpB,IAAA,IAAA,CAAK,UAAA,CAAW;AAAA,MACd,OAAA,EAAS,GAAG,KAAK,CAAA,WAAA,CAAA;AAAA,MACjB,KAAA,EAAO,IAAA,CAAK,WAAA,CAAY,KAAK,CAAA;AAAA,MAC7B,QAAA,EAAU,WAAA;AAAA,MACV,IAAA,EAAM,YAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,SAAA,EAAW,EAAA;AAAA,MACX,MAAA,EAAQ,OAAA;AAAA,MACR,UAAA;AAAA,MACA,UAAA,EAAY,KAAA;AAAA,MACZ,UAAA,EAAY,UAAA;AAAA,MACZ,MAAA,EAAQ,EAAE,IAAA,EAAM,SAAA;AAAU,KAC3B,CAAA;AACD,IAAA,MAAM,KAAK,eAAA,CAAgB,KAAA,EAAO,aAAa,OAAA,EAAS,EAAA,EAAI,YAAY,YAAY,CAAA;AAAA,EACtF;AAAA,EAEA,MAAe,qBACb,SAAA,EACA,MAAA,EACA,OACA,WAAA,EACA,IAAA,EACA,UACA,IAAA,EACe;AAEf,IAAA,IAAA,CAAK,WAAA,CAAY,OAAO,WAAW,CAAA;AACnC,IAAA,IAAA,CAAK,cAAA,CAAe,OAAO,WAAW,CAAA;AACtC,IAAA,MAAM,KAAA,GAAQ,IAAA,IAAQ,eAAA,CAAgB,SAAS,CAAA,IAAK,WAAA;AACpD,IAAA,MAAM,KAAA,GAAiC;AAAA,MACrC,GAAG,IAAA,CAAK,UAAA,CAAW,KAAA,EAAO,WAAA,EAAa,MAAM,MAAS,CAAA;AAAA,MACtD,SAAA,EAAW;AAAA,KACb;AACA,IAAA,IAAA,CAAK,cAAA,CAAe,OAAO,QAAQ,CAAA;AACnC,IAAA,MAAM,EAAA,GAAK,KAAK,GAAA,EAAI;AACpB,IAAA,MAAM,QAAA,GAAW,aAAa,KAAK,CAAA,CAAA;AACnC,IAAA,IAAA,CAAK,UAAA,CAAW;AAAA,MACd,OAAA,EAAS,GAAG,KAAK,CAAA,gBAAA,CAAA;AAAA,MACjB,KAAA,EAAO,IAAA,CAAK,WAAA,CAAY,KAAK,CAAA;AAAA,MAC7B,QAAA,EAAU,WAAA;AAAA,MACV,IAAA,EAAM,QAAA;AAAA,MACN,IAAA,EAAM,WAAA;AAAA,MACN,SAAA,EAAW,EAAA;AAAA,MACX,MAAA,EAAQ,SAAA;AAAA,MACR,UAAA,EAAY,KAAA;AAAA,MACZ,UAAA,EAAY,UAAA;AAAA,MACZ,MAAA,EAAQ,EAAE,IAAA,EAAM,SAAA;AAAU,KAC3B,CAAA;AACD,IAAA,MAAM,KAAK,iBAAA,CAAkB,KAAA,EAAO,aAAa,QAAA,EAAU,WAAA,EAAa,OAAO,EAAE,CAAA;AAAA,EACnF;AAAA,EAEA,MAAe,kBAAA,CACb,SAAA,EACA,KAAA,EACA,aACA,IAAA,EACe;AACf,IAAA,IAAA,CAAK,WAAA,CAAY,OAAO,WAAW,CAAA;AACnC,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,YAAA,CAAa,KAAK,CAAA;AAC1C,IAAA,IAAA,CAAK,YAAY,KAAK,CAAA;AACtB,IAAA,MAAM,WAAoC,EAAC;AAC3C,IAAA,IAAI,KAAK,KAAA,CAAM,OAAA,KAAY,SAAA,IAAa,SAAA,CAAU,SAAS,CAAA,EAAG;AAC5D,MAAA,QAAA,CAAS,eAAA,GAAkB,SAAA,CAAU,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA;AAAA,IACjD;AACA,IAAA,MAAM,KAAA,GAAiC;AAAA,MACrC,GAAG,IAAA,CAAK,UAAA,CAAW,KAAA,EAAO,WAAA,EAAa,MAAM,MAAS,CAAA;AAAA,MACtD,eAAe,SAAA,CAAU;AAAA,KAC3B;AACA,IAAA,IAAA,CAAK,aAAA,CAAc,OAAO,QAAQ,CAAA;AAClC,IAAA,MAAM,EAAA,GAAK,KAAK,GAAA,EAAI;AACpB,IAAA,IAAA,CAAK,UAAA,CAAW;AAAA,MACd,OAAA,EAAS,GAAG,KAAK,CAAA,cAAA,CAAA;AAAA,MACjB,KAAA,EAAO,IAAA,CAAK,WAAA,CAAY,KAAK,CAAA;AAAA,MAC7B,QAAA,EAAU,WAAA;AAAA,MACV,IAAA,EAAM,eAAA;AAAA,MACN,IAAA,EAAM,WAAA;AAAA,MACN,SAAA,EAAW,EAAA;AAAA,MACX,MAAA,EAAQ,IAAA;AAAA,MACR,UAAA;AAAA,MACA,UAAA,EAAY,KAAA;AAAA,MACZ,UAAA,EAAY,UAAA;AAAA,MACZ,MAAA,EAAQ,EAAE,IAAA,EAAM,SAAA;AAAU,KAC3B,CAAA;AACD,IAAA,MAAM,KAAK,eAAA,CAAgB,KAAA,EAAO,WAAA,EAAa,SAAA,EAAW,IAAI,UAAU,CAAA;AAAA,EAC1E;AAAA,EAEA,MAAe,oBAAA,CACb,GAAA,EACA,KAAA,EACA,aACA,IAAA,EACe;AACf,IAAA,IAAA,CAAK,WAAA,CAAY,OAAO,WAAW,CAAA;AACnC,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,YAAA,CAAa,KAAK,CAAA;AAC1C,IAAA,IAAA,CAAK,YAAY,KAAK,CAAA;AACtB,IAAA,MAAM,EAAE,SAAA,EAAW,YAAA,EAAa,GAAI,WAAW,GAAG,CAAA;AAClD,IAAA,MAAM,KAAA,GAAiC;AAAA,MACrC,GAAG,IAAA,CAAK,UAAA,CAAW,KAAA,EAAO,WAAA,EAAa,MAAM,MAAS,CAAA;AAAA,MACtD,SAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,EAAA,GAAK,KAAK,GAAA,EAAI;AACpB,IAAA,IAAA,CAAK,UAAA,CAAW;AAAA,MACd,OAAA,EAAS,GAAG,KAAK,CAAA,gBAAA,CAAA;AAAA,MACjB,KAAA,EAAO,IAAA,CAAK,WAAA,CAAY,KAAK,CAAA;AAAA,MAC7B,QAAA,EAAU,WAAA;AAAA,MACV,IAAA,EAAM,iBAAA;AAAA,MACN,IAAA,EAAM,WAAA;AAAA,MACN,SAAA,EAAW,EAAA;AAAA,MACX,MAAA,EAAQ,OAAA;AAAA,MACR,UAAA;AAAA,MACA,UAAA,EAAY,KAAA;AAAA,MACZ,UAAA,EAAY,UAAA;AAAA,MACZ,MAAA,EAAQ,EAAE,IAAA,EAAM,SAAA;AAAU,KAC3B,CAAA;AACD,IAAA,MAAM,KAAK,eAAA,CAAgB,KAAA,EAAO,aAAa,OAAA,EAAS,EAAA,EAAI,YAAY,YAAY,CAAA;AAAA,EACtF;AAAA,EAEA,MAAe,iBAAA,CACb,MAAA,EACA,KAAA,EACA,aACA,IAAA,EACe;AACf,IAAA,IAAA,CAAK,WAAA,CAAY,OAAO,WAAW,CAAA;AACnC,IAAA,MAAM,KAAA,GAAiC;AAAA,MACrC,GAAG,IAAA,CAAK,UAAA,CAAW,KAAA,EAAO,WAAA,EAAa,MAAM,MAAS,CAAA;AAAA,MACtD,MAAM,MAAA,CAAO;AAAA,KACf;AACA,IAAA,IAAI,IAAA,CAAK,KAAA,CAAM,OAAA,KAAY,SAAA,EAAW;AACpC,MAAA,IAAA,CAAK,cAAc,KAAA,EAAO;AAAA,QACxB,kBAAkB,MAAA,CAAO,SAAA;AAAA,QACzB,YAAY,MAAA,CAAO;AAAA,OACpB,CAAA;AAAA,IACH;AACA,IAAA,IAAA,CAAK,UAAA,CAAW;AAAA,MACd,SAAS,CAAA,EAAG,KAAK,CAAA,cAAA,EAAiB,IAAA,CAAK,KAAK,CAAA,CAAA;AAAA,MAC5C,KAAA,EAAO,IAAA,CAAK,WAAA,CAAY,KAAK,CAAA;AAAA,MAC7B,QAAA,EAAU,WAAA;AAAA,MACV,IAAA,EAAM,cAAA;AAAA,MACN,IAAA,EAAM,UAAA;AAAA,MACN,SAAA,EAAW,KAAK,GAAA,EAAI;AAAA,MACpB,MAAA,EAAQ,IAAA;AAAA,MACR,UAAA,EAAY,KAAA;AAAA,MACZ,UAAA,EAAY,UAAA;AAAA,MACZ,MAAA,EAAQ,EAAE,IAAA,EAAM,SAAA;AAAU,KAC3B,CAAA;AACD,IAAA,MAAM,KAAK,eAAA,CAAgB,KAAA,EAAO,aAAa,cAAA,EAAgB,UAAA,EAAY,OAAO,SAAS,CAAA;AAAA,EAC7F;AAAA,EAEA,MAAe,cAAA,CACb,MAAA,EACA,KAAA,EACA,aACA,IAAA,EACe;AACf,IAAA,IAAA,CAAK,WAAA,CAAY,OAAO,WAAW,CAAA;AACnC,IAAA,MAAM,KAAA,GAAiC;AAAA,MACrC,GAAG,IAAA,CAAK,UAAA,CAAW,KAAA,EAAO,WAAA,EAAa,MAAM,MAAS;AAAA,KACxD;AACA,IAAA,IAAI,IAAA,CAAK,KAAA,CAAM,OAAA,KAAY,SAAA,EAAW;AACpC,MAAA,IAAA,CAAK,cAAc,KAAA,EAAO;AAAA,QACxB,eAAe,MAAA,CAAO,YAAA;AAAA,QACtB,YAAY,MAAA,CAAO;AAAA,OACpB,CAAA;AAAA,IACH;AACA,IAAA,IAAA,CAAK,UAAA,CAAW;AAAA,MACd,SAAS,CAAA,EAAG,KAAK,CAAA,WAAA,EAAc,IAAA,CAAK,KAAK,CAAA,CAAA;AAAA,MACzC,KAAA,EAAO,IAAA,CAAK,WAAA,CAAY,KAAK,CAAA;AAAA,MAC7B,QAAA,EAAU,WAAA;AAAA,MACV,IAAA,EAAM,WAAA;AAAA,MACN,IAAA,EAAM,OAAA;AAAA,MACN,SAAA,EAAW,KAAK,GAAA,EAAI;AAAA,MACpB,MAAA,EAAQ,IAAA;AAAA,MACR,UAAA,EAAY,KAAA;AAAA,MACZ,UAAA,EAAY,UAAA;AAAA,MACZ,MAAA,EAAQ,EAAE,IAAA,EAAM,SAAA;AAAU,KAC3B,CAAA;AACD,IAAA,MAAM,KAAK,eAAA,CAAgB,KAAA,EAAO,aAAa,WAAA,EAAa,OAAA,EAAS,OAAO,SAAS,CAAA;AAAA,EACvF;AACF","file":"index.cjs","sourcesContent":["export interface TokenUsage {\n input?: number;\n output?: number;\n total?: number;\n}\n\nfunction isRecord(v: unknown): v is Record<string, unknown> {\n return typeof v === \"object\" && v !== null && !Array.isArray(v);\n}\n\nfunction num(v: unknown): number | undefined {\n if (typeof v === \"number\" && Number.isFinite(v)) return v;\n if (typeof v === \"string\" && v.trim() !== \"\") {\n const n = Number(v);\n if (Number.isFinite(n)) return n;\n }\n return undefined;\n}\n\nfunction normalizeTokenShape(raw: Record<string, unknown>): TokenUsage | undefined {\n const input =\n num(raw.promptTokens) ??\n num(raw.inputTokens) ??\n num(raw.input_tokens) ??\n num(raw.prompt_tokens);\n const output =\n num(raw.completionTokens) ??\n num(raw.outputTokens) ??\n num(raw.output_tokens) ??\n num(raw.completion_tokens);\n let total = num(raw.totalTokens) ?? num(raw.total_tokens);\n\n if (total === undefined && input !== undefined && output !== undefined) {\n total = input + output;\n }\n\n if (input === undefined && output === undefined && total === undefined) {\n return undefined;\n }\n\n const out: TokenUsage = {};\n if (input !== undefined) out.input = input;\n if (output !== undefined) out.output = output;\n if (total !== undefined) out.total = total;\n return out;\n}\n\n/** Extract token usage from LangChain / provider-shaped LLM outputs. Never throws. */\nexport function extractTokenUsage(output: unknown): TokenUsage | undefined {\n try {\n if (!isRecord(output)) return undefined;\n\n const candidates: unknown[] = [\n isRecord(output.llmOutput) ? output.llmOutput.tokenUsage : undefined,\n isRecord(output.llmOutput) ? output.llmOutput.estimatedTokenUsage : undefined,\n output.usage_metadata,\n isRecord(output.response_metadata) ? output.response_metadata.tokenUsage : undefined,\n isRecord(output.response_metadata) ? output.response_metadata.token_usage : undefined,\n ];\n\n for (const c of candidates) {\n if (!isRecord(c)) continue;\n const norm = normalizeTokenShape(c);\n if (norm) return norm;\n }\n\n return undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction readLcKwargs(serializedOrOutput: unknown): Record<string, unknown> | undefined {\n if (!isRecord(serializedOrOutput)) return undefined;\n const lc = serializedOrOutput.lc_kwargs ?? serializedOrOutput.kwargs;\n return isRecord(lc) ? lc : undefined;\n}\n\n/** Best-effort model name from serialized LLM / chat model or provider metadata. */\nexport function extractModelName(serializedOrOutput: unknown): string | undefined {\n try {\n const lc = readLcKwargs(serializedOrOutput);\n const fromLc =\n (lc?.model as string | undefined) ??\n (lc?.modelName as string | undefined) ??\n (lc?.model_name as string | undefined);\n\n if (typeof fromLc === \"string\" && fromLc.trim()) return fromLc;\n\n if (isRecord(serializedOrOutput)) {\n for (const k of [\"model\", \"modelName\", \"model_name\"] as const) {\n const v = serializedOrOutput[k];\n if (typeof v === \"string\" && v.trim()) return v;\n }\n const rm = serializedOrOutput.response_metadata;\n if (isRecord(rm)) {\n const m = rm.model_name ?? rm.model;\n if (typeof m === \"string\" && m.trim()) return m;\n }\n const lo = serializedOrOutput.llmOutput;\n if (isRecord(lo)) {\n const m = lo.model_name;\n if (typeof m === \"string\" && m.trim()) return m;\n }\n }\n return undefined;\n } catch {\n return undefined;\n }\n}\n\n/** Safe truncated string preview for logging-style fields. */\nexport function safePreview(value: unknown, maxChars: number): string | undefined {\n try {\n if (maxChars <= 0) return undefined;\n const seen = new WeakSet<object>();\n const json = JSON.stringify(value, (_k, v) => {\n if (typeof v === \"bigint\") return v.toString();\n if (typeof v === \"function\" || typeof v === \"symbol\") return undefined;\n if (typeof v === \"object\" && v !== null) {\n if (seen.has(v)) return \"[Circular]\";\n seen.add(v);\n }\n return v;\n });\n if (json === undefined) return undefined;\n if (json.length <= maxChars) return json;\n return `${json.slice(0, maxChars)}…`;\n } catch {\n try {\n const s = String(value);\n if (s.length <= maxChars) return s;\n return `${s.slice(0, maxChars)}…`;\n } catch {\n return undefined;\n }\n }\n}\n\nconst MAX_METADATA_KEYS = 40;\n\n/** Shallow plain metadata: drops functions/symbols; avoids deep nesting. Never throws. */\nexport function toPlainMetadata(value: unknown): Record<string, unknown> {\n try {\n if (!isRecord(value)) return {};\n const out: Record<string, unknown> = {};\n let n = 0;\n for (const [k, v] of Object.entries(value)) {\n if (n >= MAX_METADATA_KEYS) break;\n if (typeof v === \"function\" || typeof v === \"symbol\") continue;\n if (v === null || typeof v === \"string\" || typeof v === \"number\" || typeof v === \"boolean\") {\n out[k] = v;\n n++;\n continue;\n }\n if (typeof v === \"bigint\") {\n out[k] = v.toString();\n n++;\n continue;\n }\n if (Array.isArray(v)) {\n out[k] = `array(${v.length})`;\n n++;\n continue;\n }\n if (isRecord(v)) {\n out[k] = \"[object]\";\n n++;\n continue;\n }\n out[k] = String(v);\n n++;\n }\n return out;\n } catch {\n return {};\n }\n}\n","import {\n createRunId,\n createStepId,\n getCurrentRunId,\n getTraceDirFromContext,\n hasActiveContext,\n initializeTraceFile,\n prepareTraceEventForDisk,\n resolveTraceDir,\n resolveTraceSafetyOptions,\n writeTraceEvent,\n type InspectKind,\n type RedactionRule,\n type StepMetadata,\n type StepType,\n type TraceEvent,\n} from \"agent-inspect\";\n\nexport interface LangChainTracePersistenceOptions {\n runName?: string;\n traceDir?: string;\n runId?: string;\n redact?: RedactionRule[];\n silent?: boolean;\n maxPreviewChars?: number;\n}\n\nfunction kindToStepType(kind: InspectKind): StepType {\n switch (kind) {\n case \"LLM\":\n return \"llm\";\n case \"TOOL\":\n return \"tool\";\n case \"DECISION\":\n return \"decision\";\n default:\n return \"logic\";\n }\n}\n\nfunction toStepMetadata(attrs: Record<string, unknown>): StepMetadata {\n const out: StepMetadata = {\n adapter: \"langchain\",\n confidence: \"explicit\",\n };\n for (const [k, v] of Object.entries(attrs)) {\n out[k] = v;\n }\n return out;\n}\n\n/**\n * Maps LangChain callback lifecycle to schemaVersion \"0.1\" manual JSONL events.\n * One callback session creates one standalone run; inside inspectRun, steps append to the active run.\n */\nexport class LangChainTracePersistence {\n readonly #traceDir: string;\n readonly #runId: string;\n readonly #runName: string;\n readonly #standalone: boolean;\n readonly #silent: boolean;\n readonly #safety: ReturnType<typeof resolveTraceSafetyOptions>;\n\n #runStarted = false;\n #runCompleted = false;\n #runStartTime?: number;\n #rootLcRunId?: string;\n readonly #lcToStepId = new Map<string, string>();\n\n constructor(options: LangChainTracePersistenceOptions = {}) {\n const inContext = hasActiveContext();\n this.#standalone = !inContext;\n this.#silent = options.silent ?? false;\n this.#traceDir = inContext\n ? (getTraceDirFromContext() ?? resolveTraceDir({ dir: options.traceDir }))\n : resolveTraceDir({ dir: options.traceDir });\n this.#runId =\n (inContext ? getCurrentRunId() : undefined) ??\n options.runId ??\n createRunId();\n this.#runName = options.runName ?? \"langchain-agent\";\n this.#safety = resolveTraceSafetyOptions({\n redact: options.redact ? { rules: options.redact } : true,\n maxPreviewLength: options.maxPreviewChars,\n });\n }\n\n get runId(): string {\n return this.#runId;\n }\n\n get traceDir(): string {\n return this.#traceDir;\n }\n\n reset(): void {\n this.#runStarted = false;\n this.#runCompleted = false;\n this.#runStartTime = undefined;\n this.#rootLcRunId = undefined;\n this.#lcToStepId.clear();\n }\n\n noteRoot(lcRunId: string, parentRunId?: string): void {\n if (!parentRunId && !this.#rootLcRunId) {\n this.#rootLcRunId = lcRunId;\n }\n }\n\n resolveParentId(lcParentRunId?: string): string | undefined {\n if (!lcParentRunId) return undefined;\n return this.#lcToStepId.get(lcParentRunId);\n }\n\n async onStepStart(params: {\n lcRunId: string;\n lcParentRunId?: string;\n name: string;\n kind: InspectKind;\n startTime: number;\n attributes: Record<string, unknown>;\n }): Promise<void> {\n try {\n this.noteRoot(params.lcRunId, params.lcParentRunId);\n\n if (this.#standalone && !this.#runStarted) {\n await this.#ensureRunStarted(params.startTime, params.attributes);\n }\n\n const stepId = createStepId();\n this.#lcToStepId.set(params.lcRunId, stepId);\n const parentId = this.resolveParentId(params.lcParentRunId);\n\n const event: TraceEvent = {\n schemaVersion: \"0.1\",\n event: \"step_started\",\n timestamp: params.startTime,\n runId: this.#runId,\n stepId,\n ...(parentId ? { parentId } : {}),\n name: params.name,\n type: kindToStepType(params.kind),\n startTime: params.startTime,\n metadata: toStepMetadata(params.attributes),\n };\n\n await this.#write(event);\n } catch (err) {\n this.#warn(err);\n }\n }\n\n async onStepEnd(params: {\n lcRunId: string;\n lcParentRunId?: string;\n endTime: number;\n durationMs?: number;\n status: \"success\" | \"error\";\n errorMessage?: string;\n }): Promise<void> {\n try {\n const stepId = this.#lcToStepId.get(params.lcRunId);\n if (!stepId) return;\n\n const durationMs =\n typeof params.durationMs === \"number\" && Number.isFinite(params.durationMs)\n ? Math.max(0, Math.floor(params.durationMs))\n : Math.max(0, params.endTime - (this.#runStartTime ?? params.endTime));\n\n const event: TraceEvent = {\n schemaVersion: \"0.1\",\n event: \"step_completed\",\n timestamp: params.endTime,\n runId: this.#runId,\n stepId,\n status: params.status,\n endTime: params.endTime,\n durationMs,\n ...(params.status === \"error\" && params.errorMessage\n ? { error: { message: params.errorMessage } }\n : {}),\n };\n\n await this.#write(event);\n\n if (\n this.#standalone &&\n !this.#runCompleted &&\n this.#rootLcRunId === params.lcRunId &&\n !params.lcParentRunId\n ) {\n await this.#ensureRunCompleted(\n params.endTime,\n params.status,\n params.errorMessage,\n );\n }\n } catch (err) {\n this.#warn(err);\n }\n }\n\n /** Point-in-time adapter events (e.g. agent action) — writes start + completed pair. */\n async onInstantStep(params: {\n lcRunId: string;\n lcParentRunId?: string;\n name: string;\n kind: InspectKind;\n timestamp: number;\n attributes: Record<string, unknown>;\n status: \"success\" | \"error\";\n errorMessage?: string;\n }): Promise<void> {\n try {\n this.noteRoot(params.lcRunId, params.lcParentRunId);\n\n if (this.#standalone && !this.#runStarted) {\n await this.#ensureRunStarted(params.timestamp, params.attributes);\n }\n\n const stepId = createStepId();\n this.#lcToStepId.set(params.lcRunId, stepId);\n const parentId = this.resolveParentId(params.lcParentRunId);\n\n const started: TraceEvent = {\n schemaVersion: \"0.1\",\n event: \"step_started\",\n timestamp: params.timestamp,\n runId: this.#runId,\n stepId,\n ...(parentId ? { parentId } : {}),\n name: params.name,\n type: kindToStepType(params.kind),\n startTime: params.timestamp,\n metadata: toStepMetadata(params.attributes),\n };\n await this.#write(started);\n\n const completed: TraceEvent = {\n schemaVersion: \"0.1\",\n event: \"step_completed\",\n timestamp: params.timestamp,\n runId: this.#runId,\n stepId,\n status: params.status,\n endTime: params.timestamp,\n durationMs: 0,\n ...(params.status === \"error\" && params.errorMessage\n ? { error: { message: params.errorMessage } }\n : {}),\n };\n await this.#write(completed);\n } catch (err) {\n this.#warn(err);\n }\n }\n\n async #ensureRunStarted(\n startTime: number,\n attrs: Record<string, unknown>,\n ): Promise<void> {\n if (this.#runStarted) return;\n this.#runStarted = true;\n this.#runStartTime = startTime;\n\n await initializeTraceFile(this.#runId, this.#traceDir);\n\n const metadata: Record<string, unknown> = {\n adapter: \"langchain\",\n confidence: \"explicit\",\n };\n if (attrs.langchainRunId) metadata.langchainRunId = attrs.langchainRunId;\n if (attrs.adapterRunName) metadata.adapterRunName = attrs.adapterRunName;\n\n const event: TraceEvent = {\n schemaVersion: \"0.1\",\n event: \"run_started\",\n timestamp: startTime,\n runId: this.#runId,\n name: this.#runName,\n startTime,\n metadata,\n };\n await this.#write(event);\n }\n\n async #ensureRunCompleted(\n endTime: number,\n stepStatus: \"success\" | \"error\",\n errorMessage?: string,\n ): Promise<void> {\n if (this.#runCompleted || !this.#runStarted) return;\n this.#runCompleted = true;\n\n const startTime = this.#runStartTime ?? endTime;\n const durationMs = Math.max(0, endTime - startTime);\n const runStatus = stepStatus === \"error\" ? \"error\" : \"success\";\n\n const event: TraceEvent = {\n schemaVersion: \"0.1\",\n event: \"run_completed\",\n timestamp: endTime,\n runId: this.#runId,\n status: runStatus,\n endTime,\n durationMs,\n ...(runStatus === \"error\" && errorMessage\n ? { error: { message: errorMessage } }\n : {}),\n };\n await this.#write(event);\n }\n\n async #write(event: TraceEvent): Promise<void> {\n const safe = prepareTraceEventForDisk(event, this.#safety);\n await writeTraceEvent(safe, this.#traceDir);\n }\n\n #warn(err: unknown): void {\n if (!this.#silent) {\n console.error(\"[agent-inspect:langchain]\", err);\n }\n }\n}\n","import type { AgentAction, AgentFinish } from \"@langchain/core/agents\";\nimport { BaseCallbackHandler } from \"@langchain/core/callbacks/base\";\nimport type { Serialized } from \"@langchain/core/load/serializable\";\nimport type { LLMResult } from \"@langchain/core/outputs\";\nimport type { ChainValues } from \"@langchain/core/utils/types\";\n\n/** Subpaths like `@langchain/core/messages/base` are not package exports; derive from the handler contract. */\ntype ChatModelMessages = Parameters<\n NonNullable<BaseCallbackHandler[\"handleChatModelStart\"]>\n>[1];\ntype RetrieverDocuments = Parameters<\n NonNullable<BaseCallbackHandler[\"handleRetrieverEnd\"]>\n>[0];\nimport { Redactor, type InspectEvent, type InspectKind } from \"agent-inspect\";\n\nimport {\n extractModelName,\n extractTokenUsage,\n safePreview,\n toPlainMetadata,\n} from \"./metadata.js\";\nimport { LangChainTracePersistence } from \"./trace-persistence.js\";\nimport type { AgentInspectCallbackOptions } from \"./types.js\";\n\ntype StartEntry = { ts: number; kind: InspectKind };\n\nfunction serializedLabel(s: Serialized): string | undefined {\n if (typeof s.name === \"string\" && s.name.trim()) return s.name;\n if (Array.isArray(s.id) && s.id.length > 0) return s.id[s.id.length - 1];\n return s.type;\n}\n\nfunction errorShape(err: unknown): { errorName?: string; errorMessage: string } {\n if (err instanceof Error) {\n return { errorName: err.name, errorMessage: err.message };\n }\n return { errorMessage: String(err) };\n}\n\nexport class AgentInspectCallback extends BaseCallbackHandler {\n name = \"agent-inspect\";\n\n readonly #opts: Required<\n Pick<AgentInspectCallbackOptions, \"capture\" | \"silent\" | \"maxPreviewChars\">\n > &\n AgentInspectCallbackOptions;\n\n readonly #redactor: Redactor;\n readonly #persistence?: LangChainTracePersistence;\n #events: InspectEvent[] = [];\n readonly #starts = new Map<string, StartEntry>();\n #rootRunId?: string;\n\n constructor(options: AgentInspectCallbackOptions = {}) {\n super({});\n this.#opts = {\n capture: options.capture ?? \"metadata-only\",\n silent: options.silent ?? false,\n maxPreviewChars: options.maxPreviewChars ?? 200,\n persist: options.persist ?? false,\n runName: options.runName ?? \"langchain-agent\",\n ...options,\n };\n this.#redactor = new Redactor({ rules: this.#opts.redact });\n if (this.#opts.persist) {\n this.#persistence = new LangChainTracePersistence({\n runName: this.#opts.runName,\n traceDir: this.#opts.traceDir,\n runId: this.#opts.runId,\n redact: this.#opts.redact,\n silent: this.#opts.silent,\n maxPreviewChars: this.#opts.maxPreviewChars,\n });\n }\n }\n\n getEvents(): InspectEvent[] {\n return this.#events.map((e) => ({\n ...e,\n attributes: e.attributes ? { ...e.attributes } : undefined,\n source: { ...e.source },\n }));\n }\n\n clear(): void {\n this.#events = [];\n this.#starts.clear();\n this.#rootRunId = undefined;\n this.#persistence?.reset();\n }\n\n #ensureRoot(lcRunId: string, parentRunId?: string): void {\n if (parentRunId) return;\n if (!this.#rootRunId) this.#rootRunId = lcRunId;\n }\n\n #traceRunId(lcRunId: string): string {\n return this.#rootRunId ?? lcRunId;\n }\n\n #durationFor(lcRunId: string): number | undefined {\n const s = this.#starts.get(lcRunId);\n if (!s) return undefined;\n return Date.now() - s.ts;\n }\n\n #rememberStart(lcRunId: string, kind: InspectKind): void {\n this.#starts.set(lcRunId, { ts: Date.now(), kind });\n }\n\n #clearStart(lcRunId: string): void {\n this.#starts.delete(lcRunId);\n }\n\n #baseAttrs(\n lcRunId: string,\n parentRunId: string | undefined,\n tags: string[] | undefined,\n runNameArg: string | undefined,\n ): Record<string, unknown> {\n const out: Record<string, unknown> = {\n langchainRunId: lcRunId,\n };\n if (parentRunId) out.parentRunId = parentRunId;\n if (this.#opts.runName) out.adapterRunName = this.#opts.runName;\n if (runNameArg) out.runName = runNameArg;\n if (this.#opts.traceDir) out.traceDir = this.#opts.traceDir;\n const cap = this.#opts.capture;\n if (cap !== \"none\" && tags?.length) out.tags = [...tags];\n return out;\n }\n\n #mergeMetadata(\n attrs: Record<string, unknown>,\n metadata: Record<string, unknown> | undefined,\n ): void {\n if (this.#opts.capture === \"none\" || !metadata) return;\n attrs.metadata = this.#redactor.redactRecord(toPlainMetadata(metadata));\n }\n\n #applyPreview(attrs: Record<string, unknown>, previews: Record<string, unknown>): void {\n if (this.#opts.capture !== \"preview\") return;\n const max = this.#opts.maxPreviewChars;\n for (const [k, v] of Object.entries(previews)) {\n const p = safePreview(v, max);\n if (p !== undefined) attrs[k] = p;\n }\n }\n\n #pushEvent(ev: InspectEvent): void {\n try {\n const attributes = ev.attributes\n ? this.#redactor.redactRecord({ ...ev.attributes })\n : undefined;\n this.#events.push({ ...ev, attributes });\n } catch (err) {\n if (!this.#opts.silent) {\n console.error(\"[agent-inspect:langchain]\", err);\n }\n }\n }\n\n async #persistStepStart(\n lcRunId: string,\n lcParentRunId: string | undefined,\n name: string,\n kind: InspectKind,\n attrs: Record<string, unknown>,\n startTime: number,\n ): Promise<void> {\n await this.#persistence?.onStepStart({\n lcRunId,\n lcParentRunId,\n name,\n kind,\n startTime,\n attributes: attrs,\n });\n }\n\n async #persistStepEnd(\n lcRunId: string,\n lcParentRunId: string | undefined,\n status: \"success\" | \"error\",\n endTime: number,\n durationMs: number | undefined,\n errorMessage?: string,\n ): Promise<void> {\n await this.#persistence?.onStepEnd({\n lcRunId,\n lcParentRunId,\n endTime,\n durationMs,\n status,\n errorMessage,\n });\n }\n\n async #persistInstant(\n lcRunId: string,\n lcParentRunId: string | undefined,\n name: string,\n kind: InspectKind,\n attrs: Record<string, unknown>,\n status: \"success\" | \"error\",\n errorMessage?: string,\n ): Promise<void> {\n await this.#persistence?.onInstantStep({\n lcRunId,\n lcParentRunId,\n name,\n kind,\n timestamp: Date.now(),\n attributes: attrs,\n status,\n errorMessage,\n });\n }\n\n override async handleChainStart(\n chain: Serialized,\n inputs: ChainValues,\n runId: string,\n runType?: string,\n tags?: string[],\n metadata?: Record<string, unknown>,\n runName?: string,\n parentRunId?: string,\n _extra?: Record<string, unknown>,\n ): Promise<void> {\n void runType;\n this.#ensureRoot(runId, parentRunId);\n this.#rememberStart(runId, \"CHAIN\");\n const label = serializedLabel(chain) ?? \"chain\";\n const previews: Record<string, unknown> = {};\n if (this.#opts.capture === \"preview\") previews.inputPreview = inputs;\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, runName),\n };\n this.#mergeMetadata(attrs, metadata);\n this.#applyPreview(attrs, previews);\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:CHAIN:start`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: `chain:${runName ?? label}`,\n kind: \"CHAIN\",\n timestamp: ts,\n status: \"running\",\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepStart(runId, parentRunId, `chain:${runName ?? label}`, \"CHAIN\", attrs, ts);\n }\n\n override async handleChainEnd(\n outputs: ChainValues,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n _kwargs?: { inputs?: Record<string, unknown> },\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const durationMs = this.#durationFor(runId);\n this.#clearStart(runId);\n const previews: Record<string, unknown> = {};\n if (this.#opts.capture === \"preview\") previews.outputPreview = outputs;\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n };\n this.#applyPreview(attrs, previews);\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:CHAIN:end`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"chain:end\",\n kind: \"CHAIN\",\n timestamp: ts,\n status: \"ok\",\n durationMs,\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepEnd(runId, parentRunId, \"success\", ts, durationMs);\n }\n\n override async handleChainError(\n err: unknown,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n _kwargs?: { inputs?: Record<string, unknown> },\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const durationMs = this.#durationFor(runId);\n this.#clearStart(runId);\n const { errorName, errorMessage } = errorShape(err);\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n errorName,\n errorMessage,\n };\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:CHAIN:error`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"chain:error\",\n kind: \"CHAIN\",\n timestamp: ts,\n status: \"error\",\n durationMs,\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepEnd(runId, parentRunId, \"error\", ts, durationMs, errorMessage);\n }\n\n override async handleLLMStart(\n llm: Serialized,\n prompts: string[],\n runId: string,\n parentRunId?: string,\n _extraParams?: Record<string, unknown>,\n tags?: string[],\n metadata?: Record<string, unknown>,\n runName?: string,\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n this.#rememberStart(runId, \"LLM\");\n const model = extractModelName(llm);\n const previews: Record<string, unknown> = {};\n if (this.#opts.capture === \"preview\") {\n previews.promptPreview = prompts.length === 1 ? prompts[0] : prompts;\n }\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, runName),\n };\n if (model && this.#opts.capture !== \"none\") attrs.model = model;\n this.#mergeMetadata(attrs, metadata);\n this.#applyPreview(attrs, previews);\n const ts = Date.now();\n const stepName = `llm:${model ?? \"llm\"}`;\n this.#pushEvent({\n eventId: `${runId}:LLM:start`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: stepName,\n kind: \"LLM\",\n timestamp: ts,\n status: \"running\",\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepStart(runId, parentRunId, stepName, \"LLM\", attrs, ts);\n }\n\n override async handleChatModelStart(\n llm: Serialized,\n messages: ChatModelMessages,\n runId: string,\n parentRunId?: string,\n _extraParams?: Record<string, unknown>,\n tags?: string[],\n metadata?: Record<string, unknown>,\n runName?: string,\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n this.#rememberStart(runId, \"LLM\");\n const model = extractModelName(llm);\n const previews: Record<string, unknown> = {};\n if (this.#opts.capture === \"preview\") previews.inputPreview = messages;\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, runName),\n };\n if (model && this.#opts.capture !== \"none\") attrs.model = model;\n this.#mergeMetadata(attrs, metadata);\n this.#applyPreview(attrs, previews);\n const ts = Date.now();\n const stepName = `llm:${model ?? \"llm\"}`;\n this.#pushEvent({\n eventId: `${runId}:CHAT:start`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: stepName,\n kind: \"LLM\",\n timestamp: ts,\n status: \"running\",\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepStart(runId, parentRunId, stepName, \"LLM\", attrs, ts);\n }\n\n override async handleLLMEnd(\n output: LLMResult,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n _extraParams?: Record<string, unknown>,\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const durationMs = this.#durationFor(runId);\n this.#clearStart(runId);\n const tokens = extractTokenUsage(output);\n const model = extractModelName(output);\n const previews: Record<string, unknown> = {};\n if (this.#opts.capture === \"preview\") previews.outputPreview = output;\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n };\n if (model && this.#opts.capture !== \"none\") attrs.model = model;\n if (tokens && this.#opts.capture !== \"none\") attrs.tokens = tokens;\n this.#applyPreview(attrs, previews);\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:LLM:end`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: `llm:${model ?? \"llm\"}`,\n kind: \"LLM\",\n timestamp: ts,\n status: \"ok\",\n durationMs,\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepEnd(runId, parentRunId, \"success\", ts, durationMs);\n }\n\n override async handleLLMError(\n err: unknown,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n _extraParams?: Record<string, unknown>,\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const durationMs = this.#durationFor(runId);\n this.#clearStart(runId);\n const { errorName, errorMessage } = errorShape(err);\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n errorName,\n errorMessage,\n };\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:LLM:error`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"llm:error\",\n kind: \"LLM\",\n timestamp: ts,\n status: \"error\",\n durationMs,\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepEnd(runId, parentRunId, \"error\", ts, durationMs, errorMessage);\n }\n\n override async handleToolStart(\n tool: Serialized,\n input: string,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n metadata?: Record<string, unknown>,\n runName?: string,\n _toolCallId?: string,\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n this.#rememberStart(runId, \"TOOL\");\n const toolName = serializedLabel(tool) ?? \"tool\";\n const previews: Record<string, unknown> = {};\n if (this.#opts.capture === \"preview\") previews.inputPreview = input;\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, runName),\n tool: toolName,\n };\n this.#mergeMetadata(attrs, metadata);\n this.#applyPreview(attrs, previews);\n const ts = Date.now();\n const stepName = `tool:${toolName}`;\n this.#pushEvent({\n eventId: `${runId}:TOOL:start`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: stepName,\n kind: \"TOOL\",\n timestamp: ts,\n status: \"running\",\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepStart(runId, parentRunId, stepName, \"TOOL\", attrs, ts);\n }\n\n override async handleToolEnd(\n output: unknown,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const durationMs = this.#durationFor(runId);\n this.#clearStart(runId);\n const previews: Record<string, unknown> = {};\n if (this.#opts.capture === \"preview\") previews.outputPreview = output;\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n };\n this.#applyPreview(attrs, previews);\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:TOOL:end`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"tool:end\",\n kind: \"TOOL\",\n timestamp: ts,\n status: \"ok\",\n durationMs,\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepEnd(runId, parentRunId, \"success\", ts, durationMs);\n }\n\n override async handleToolError(\n err: unknown,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const durationMs = this.#durationFor(runId);\n this.#clearStart(runId);\n const { errorName, errorMessage } = errorShape(err);\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n errorName,\n errorMessage,\n };\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:TOOL:error`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"tool:error\",\n kind: \"TOOL\",\n timestamp: ts,\n status: \"error\",\n durationMs,\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepEnd(runId, parentRunId, \"error\", ts, durationMs, errorMessage);\n }\n\n override async handleRetrieverStart(\n retriever: Serialized,\n _query: string,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n metadata?: Record<string, unknown>,\n name?: string,\n ): Promise<void> {\n void _query;\n this.#ensureRoot(runId, parentRunId);\n this.#rememberStart(runId, \"RETRIEVER\");\n const rname = name ?? serializedLabel(retriever) ?? \"retriever\";\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n retriever: rname,\n };\n this.#mergeMetadata(attrs, metadata);\n const ts = Date.now();\n const stepName = `retriever:${rname}`;\n this.#pushEvent({\n eventId: `${runId}:RETRIEVER:start`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: stepName,\n kind: \"RETRIEVER\",\n timestamp: ts,\n status: \"running\",\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepStart(runId, parentRunId, stepName, \"RETRIEVER\", attrs, ts);\n }\n\n override async handleRetrieverEnd(\n documents: RetrieverDocuments,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const durationMs = this.#durationFor(runId);\n this.#clearStart(runId);\n const previews: Record<string, unknown> = {};\n if (this.#opts.capture === \"preview\" && documents.length > 0) {\n previews.documentPreview = documents.slice(0, 3);\n }\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n documentCount: documents.length,\n };\n this.#applyPreview(attrs, previews);\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:RETRIEVER:end`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"retriever:end\",\n kind: \"RETRIEVER\",\n timestamp: ts,\n status: \"ok\",\n durationMs,\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepEnd(runId, parentRunId, \"success\", ts, durationMs);\n }\n\n override async handleRetrieverError(\n err: unknown,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const durationMs = this.#durationFor(runId);\n this.#clearStart(runId);\n const { errorName, errorMessage } = errorShape(err);\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n errorName,\n errorMessage,\n };\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:RETRIEVER:error`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"retriever:error\",\n kind: \"RETRIEVER\",\n timestamp: ts,\n status: \"error\",\n durationMs,\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepEnd(runId, parentRunId, \"error\", ts, durationMs, errorMessage);\n }\n\n override async handleAgentAction(\n action: AgentAction,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n tool: action.tool,\n };\n if (this.#opts.capture === \"preview\") {\n this.#applyPreview(attrs, {\n toolInputPreview: action.toolInput,\n logPreview: action.log,\n });\n }\n this.#pushEvent({\n eventId: `${runId}:AGENT:action:${Date.now()}`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"agent:action\",\n kind: \"DECISION\",\n timestamp: Date.now(),\n status: \"ok\",\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistInstant(runId, parentRunId, \"agent:action\", \"DECISION\", attrs, \"success\");\n }\n\n override async handleAgentEnd(\n finish: AgentFinish,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n };\n if (this.#opts.capture === \"preview\") {\n this.#applyPreview(attrs, {\n outputPreview: finish.returnValues,\n logPreview: finish.log,\n });\n }\n this.#pushEvent({\n eventId: `${runId}:AGENT:end:${Date.now()}`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"agent:end\",\n kind: \"AGENT\",\n timestamp: Date.now(),\n status: \"ok\",\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistInstant(runId, parentRunId, \"agent:end\", \"AGENT\", attrs, \"success\");\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/metadata.ts","../src/streaming-metadata.ts","../src/trace-persistence.ts","../src/agent-inspect-callback.ts"],"names":["hasActiveContext","getTraceDirFromContext","resolveTraceDir","getCurrentRunId","createRunId","resolveTraceSafetyOptions","createStepId","initializeTraceFile","prepareTraceEventForDisk","writeTraceEvent","BaseCallbackHandler","Redactor","getCurrentCorrelationMetadata"],"mappings":"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","file":"index.cjs","sourcesContent":["export interface TokenUsage {\n input?: number;\n output?: number;\n total?: number;\n}\n\nfunction isRecord(v: unknown): v is Record<string, unknown> {\n return typeof v === \"object\" && v !== null && !Array.isArray(v);\n}\n\nfunction num(v: unknown): number | undefined {\n if (typeof v === \"number\" && Number.isFinite(v)) return v;\n if (typeof v === \"string\" && v.trim() !== \"\") {\n const n = Number(v);\n if (Number.isFinite(n)) return n;\n }\n return undefined;\n}\n\nfunction normalizeTokenShape(raw: Record<string, unknown>): TokenUsage | undefined {\n const input =\n num(raw.promptTokens) ??\n num(raw.inputTokens) ??\n num(raw.input_tokens) ??\n num(raw.prompt_tokens);\n const output =\n num(raw.completionTokens) ??\n num(raw.outputTokens) ??\n num(raw.output_tokens) ??\n num(raw.completion_tokens);\n let total = num(raw.totalTokens) ?? num(raw.total_tokens);\n\n if (total === undefined && input !== undefined && output !== undefined) {\n total = input + output;\n }\n\n if (input === undefined && output === undefined && total === undefined) {\n return undefined;\n }\n\n const out: TokenUsage = {};\n if (input !== undefined) out.input = input;\n if (output !== undefined) out.output = output;\n if (total !== undefined) out.total = total;\n return out;\n}\n\n/** Extract token usage from LangChain / provider-shaped LLM outputs. Never throws. */\nexport function extractTokenUsage(output: unknown): TokenUsage | undefined {\n try {\n if (!isRecord(output)) return undefined;\n\n const candidates: unknown[] = [\n isRecord(output.llmOutput) ? output.llmOutput.tokenUsage : undefined,\n isRecord(output.llmOutput) ? output.llmOutput.estimatedTokenUsage : undefined,\n output.usage_metadata,\n isRecord(output.response_metadata) ? output.response_metadata.tokenUsage : undefined,\n isRecord(output.response_metadata) ? output.response_metadata.token_usage : undefined,\n ];\n\n for (const c of candidates) {\n if (!isRecord(c)) continue;\n const norm = normalizeTokenShape(c);\n if (norm) return norm;\n }\n\n return undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction readLcKwargs(serializedOrOutput: unknown): Record<string, unknown> | undefined {\n if (!isRecord(serializedOrOutput)) return undefined;\n const lc = serializedOrOutput.lc_kwargs ?? serializedOrOutput.kwargs;\n return isRecord(lc) ? lc : undefined;\n}\n\n/** Best-effort model name from serialized LLM / chat model or provider metadata. */\nexport function extractModelName(serializedOrOutput: unknown): string | undefined {\n try {\n const lc = readLcKwargs(serializedOrOutput);\n const fromLc =\n (lc?.model as string | undefined) ??\n (lc?.modelName as string | undefined) ??\n (lc?.model_name as string | undefined);\n\n if (typeof fromLc === \"string\" && fromLc.trim()) return fromLc;\n\n if (isRecord(serializedOrOutput)) {\n for (const k of [\"model\", \"modelName\", \"model_name\"] as const) {\n const v = serializedOrOutput[k];\n if (typeof v === \"string\" && v.trim()) return v;\n }\n const rm = serializedOrOutput.response_metadata;\n if (isRecord(rm)) {\n const m = rm.model_name ?? rm.model;\n if (typeof m === \"string\" && m.trim()) return m;\n }\n const lo = serializedOrOutput.llmOutput;\n if (isRecord(lo)) {\n const m = lo.model_name;\n if (typeof m === \"string\" && m.trim()) return m;\n }\n }\n return undefined;\n } catch {\n return undefined;\n }\n}\n\n/** Safe truncated string preview for logging-style fields. */\nexport function safePreview(value: unknown, maxChars: number): string | undefined {\n try {\n if (maxChars <= 0) return undefined;\n const seen = new WeakSet<object>();\n const json = JSON.stringify(value, (_k, v) => {\n if (typeof v === \"bigint\") return v.toString();\n if (typeof v === \"function\" || typeof v === \"symbol\") return undefined;\n if (typeof v === \"object\" && v !== null) {\n if (seen.has(v)) return \"[Circular]\";\n seen.add(v);\n }\n return v;\n });\n if (json === undefined) return undefined;\n if (json.length <= maxChars) return json;\n return `${json.slice(0, maxChars)}…`;\n } catch {\n try {\n const s = String(value);\n if (s.length <= maxChars) return s;\n return `${s.slice(0, maxChars)}…`;\n } catch {\n return undefined;\n }\n }\n}\n\nconst MAX_METADATA_KEYS = 40;\n\n/** Shallow plain metadata: drops functions/symbols; avoids deep nesting. Never throws. */\nexport function toPlainMetadata(value: unknown): Record<string, unknown> {\n try {\n if (!isRecord(value)) return {};\n const out: Record<string, unknown> = {};\n let n = 0;\n for (const [k, v] of Object.entries(value)) {\n if (n >= MAX_METADATA_KEYS) break;\n if (typeof v === \"function\" || typeof v === \"symbol\") continue;\n if (v === null || typeof v === \"string\" || typeof v === \"number\" || typeof v === \"boolean\") {\n out[k] = v;\n n++;\n continue;\n }\n if (typeof v === \"bigint\") {\n out[k] = v.toString();\n n++;\n continue;\n }\n if (Array.isArray(v)) {\n out[k] = `array(${v.length})`;\n n++;\n continue;\n }\n if (isRecord(v)) {\n out[k] = \"[object]\";\n n++;\n continue;\n }\n out[k] = String(v);\n n++;\n }\n return out;\n } catch {\n return {};\n }\n}\n","export interface LlmStreamState {\n chunkCount: number;\n firstChunkAt?: number;\n lastChunkAt?: number;\n streamedCharCount: number;\n previewChars: string;\n previewTruncated: boolean;\n}\n\nexport function createLlmStreamState(): LlmStreamState {\n return {\n chunkCount: 0,\n streamedCharCount: 0,\n previewChars: \"\",\n previewTruncated: false,\n };\n}\n\nexport function recordLlmStreamToken(\n state: LlmStreamState,\n token: string,\n now: number,\n maxPreviewChars: number,\n): void {\n state.chunkCount += 1;\n if (state.firstChunkAt === undefined) {\n state.firstChunkAt = now;\n }\n state.lastChunkAt = now;\n\n if (typeof token === \"string\" && token.length > 0) {\n state.streamedCharCount += token.length;\n if (maxPreviewChars > 0) {\n const remaining = maxPreviewChars - state.previewChars.length;\n if (remaining > 0) {\n const slice = token.slice(0, remaining);\n state.previewChars += slice;\n if (token.length > remaining) {\n state.previewTruncated = true;\n }\n } else {\n state.previewTruncated = true;\n }\n }\n }\n}\n\nexport function streamMetadataFromState(\n state: LlmStreamState | undefined,\n options: {\n capturePreview: boolean;\n maxPreviewChars: number;\n },\n): Record<string, unknown> | undefined {\n if (!state || state.chunkCount === 0) {\n return undefined;\n }\n\n const out: Record<string, unknown> = {\n stream: true,\n chunkCount: state.chunkCount,\n streamedCharCount: state.streamedCharCount,\n };\n\n if (state.firstChunkAt !== undefined) {\n out.firstChunkAt = state.firstChunkAt;\n }\n if (state.lastChunkAt !== undefined) {\n out.lastChunkAt = state.lastChunkAt;\n }\n if (\n state.firstChunkAt !== undefined &&\n state.lastChunkAt !== undefined &&\n state.lastChunkAt >= state.firstChunkAt\n ) {\n out.streamDurationMs = state.lastChunkAt - state.firstChunkAt;\n }\n if (state.previewTruncated) {\n out.previewTruncated = true;\n }\n\n if (options.capturePreview && state.previewChars.length > 0) {\n const preview =\n state.previewChars.length <= options.maxPreviewChars\n ? state.previewChars\n : `${state.previewChars.slice(0, options.maxPreviewChars)}…`;\n out.streamPreview = preview;\n if (state.previewChars.length > options.maxPreviewChars) {\n out.previewTruncated = true;\n }\n }\n\n return out;\n}\n","import {\n createRunId,\n createStepId,\n getCurrentRunId,\n getTraceDirFromContext,\n hasActiveContext,\n initializeTraceFile,\n prepareTraceEventForDisk,\n resolveTraceDir,\n resolveTraceSafetyOptions,\n writeTraceEvent,\n type InspectKind,\n type RedactionRule,\n type StepMetadata,\n type StepType,\n type TraceEvent,\n} from \"agent-inspect\";\n\nexport interface LangChainTracePersistenceOptions {\n runName?: string;\n traceDir?: string;\n runId?: string;\n redact?: RedactionRule[];\n silent?: boolean;\n maxPreviewChars?: number;\n}\n\nfunction kindToStepType(kind: InspectKind): StepType {\n switch (kind) {\n case \"LLM\":\n return \"llm\";\n case \"TOOL\":\n return \"tool\";\n case \"DECISION\":\n return \"decision\";\n default:\n return \"logic\";\n }\n}\n\nfunction toStepMetadata(attrs: Record<string, unknown>): StepMetadata {\n const out: StepMetadata = {\n adapter: \"langchain\",\n confidence: \"explicit\",\n };\n for (const [k, v] of Object.entries(attrs)) {\n out[k] = v;\n }\n return out;\n}\n\n/**\n * Maps LangChain callback lifecycle to schemaVersion \"0.1\" manual JSONL events.\n * One callback session creates one standalone run; inside inspectRun, steps append to the active run.\n */\nexport class LangChainTracePersistence {\n readonly #traceDir: string;\n readonly #runId: string;\n readonly #runName: string;\n readonly #standalone: boolean;\n readonly #silent: boolean;\n readonly #safety: ReturnType<typeof resolveTraceSafetyOptions>;\n\n #runStarted = false;\n #runCompleted = false;\n #runStartTime?: number;\n #rootLcRunId?: string;\n readonly #lcToStepId = new Map<string, string>();\n\n constructor(options: LangChainTracePersistenceOptions = {}) {\n const inContext = hasActiveContext();\n this.#standalone = !inContext;\n this.#silent = options.silent ?? false;\n this.#traceDir = inContext\n ? (getTraceDirFromContext() ?? resolveTraceDir({ dir: options.traceDir }))\n : resolveTraceDir({ dir: options.traceDir });\n this.#runId =\n (inContext ? getCurrentRunId() : undefined) ??\n options.runId ??\n createRunId();\n this.#runName = options.runName ?? \"langchain-agent\";\n this.#safety = resolveTraceSafetyOptions({\n redact: options.redact ? { rules: options.redact } : true,\n maxPreviewLength: options.maxPreviewChars,\n });\n }\n\n get runId(): string {\n return this.#runId;\n }\n\n get traceDir(): string {\n return this.#traceDir;\n }\n\n reset(): void {\n this.#runStarted = false;\n this.#runCompleted = false;\n this.#runStartTime = undefined;\n this.#rootLcRunId = undefined;\n this.#lcToStepId.clear();\n }\n\n noteRoot(lcRunId: string, parentRunId?: string): void {\n if (!parentRunId && !this.#rootLcRunId) {\n this.#rootLcRunId = lcRunId;\n }\n }\n\n resolveParentId(lcParentRunId?: string): string | undefined {\n if (!lcParentRunId) return undefined;\n return this.#lcToStepId.get(lcParentRunId);\n }\n\n async onStepStart(params: {\n lcRunId: string;\n lcParentRunId?: string;\n name: string;\n kind: InspectKind;\n startTime: number;\n attributes: Record<string, unknown>;\n }): Promise<void> {\n try {\n this.noteRoot(params.lcRunId, params.lcParentRunId);\n\n if (this.#standalone && !this.#runStarted) {\n await this.#ensureRunStarted(params.startTime, params.attributes);\n }\n\n const stepId = createStepId();\n this.#lcToStepId.set(params.lcRunId, stepId);\n const parentId = this.resolveParentId(params.lcParentRunId);\n\n const event: TraceEvent = {\n schemaVersion: \"0.1\",\n event: \"step_started\",\n timestamp: params.startTime,\n runId: this.#runId,\n stepId,\n ...(parentId ? { parentId } : {}),\n name: params.name,\n type: kindToStepType(params.kind),\n startTime: params.startTime,\n metadata: toStepMetadata(params.attributes),\n };\n\n await this.#write(event);\n } catch (err) {\n this.#warn(err);\n }\n }\n\n async onStepEnd(params: {\n lcRunId: string;\n lcParentRunId?: string;\n endTime: number;\n durationMs?: number;\n status: \"success\" | \"error\";\n errorMessage?: string;\n completionAttributes?: Record<string, unknown>;\n }): Promise<void> {\n try {\n let stepId = this.#lcToStepId.get(params.lcRunId);\n if (!stepId && params.completionAttributes) {\n stepId = createStepId();\n this.#lcToStepId.set(params.lcRunId, stepId);\n const parentId = this.resolveParentId(params.lcParentRunId);\n const startTime = params.endTime - (params.durationMs ?? 0);\n const started: TraceEvent = {\n schemaVersion: \"0.1\",\n event: \"step_started\",\n timestamp: startTime,\n runId: this.#runId,\n stepId,\n ...(parentId ? { parentId } : {}),\n name: String(params.completionAttributes.name ?? \"llm:llm\"),\n type: kindToStepType(\n (params.completionAttributes.kind as InspectKind | undefined) ?? \"LLM\",\n ),\n startTime,\n metadata: toStepMetadata(params.completionAttributes),\n };\n await this.#write(started);\n }\n if (!stepId) return;\n\n const durationMs =\n typeof params.durationMs === \"number\" && Number.isFinite(params.durationMs)\n ? Math.max(0, Math.floor(params.durationMs))\n : Math.max(0, params.endTime - (this.#runStartTime ?? params.endTime));\n\n const event: TraceEvent = {\n schemaVersion: \"0.1\",\n event: \"step_completed\",\n timestamp: params.endTime,\n runId: this.#runId,\n stepId,\n status: params.status,\n endTime: params.endTime,\n durationMs,\n ...(params.status === \"error\" && params.errorMessage\n ? { error: { message: params.errorMessage } }\n : {}),\n };\n\n await this.#write(event);\n\n if (\n this.#standalone &&\n !this.#runCompleted &&\n this.#rootLcRunId === params.lcRunId &&\n !params.lcParentRunId\n ) {\n await this.#ensureRunCompleted(\n params.endTime,\n params.status,\n params.errorMessage,\n );\n }\n } catch (err) {\n this.#warn(err);\n }\n }\n\n /** Point-in-time adapter events (e.g. agent action) — writes start + completed pair. */\n async onInstantStep(params: {\n lcRunId: string;\n lcParentRunId?: string;\n name: string;\n kind: InspectKind;\n timestamp: number;\n attributes: Record<string, unknown>;\n status: \"success\" | \"error\";\n errorMessage?: string;\n }): Promise<void> {\n try {\n this.noteRoot(params.lcRunId, params.lcParentRunId);\n\n if (this.#standalone && !this.#runStarted) {\n await this.#ensureRunStarted(params.timestamp, params.attributes);\n }\n\n const stepId = createStepId();\n this.#lcToStepId.set(params.lcRunId, stepId);\n const parentId = this.resolveParentId(params.lcParentRunId);\n\n const started: TraceEvent = {\n schemaVersion: \"0.1\",\n event: \"step_started\",\n timestamp: params.timestamp,\n runId: this.#runId,\n stepId,\n ...(parentId ? { parentId } : {}),\n name: params.name,\n type: kindToStepType(params.kind),\n startTime: params.timestamp,\n metadata: toStepMetadata(params.attributes),\n };\n await this.#write(started);\n\n const completed: TraceEvent = {\n schemaVersion: \"0.1\",\n event: \"step_completed\",\n timestamp: params.timestamp,\n runId: this.#runId,\n stepId,\n status: params.status,\n endTime: params.timestamp,\n durationMs: 0,\n ...(params.status === \"error\" && params.errorMessage\n ? { error: { message: params.errorMessage } }\n : {}),\n };\n await this.#write(completed);\n } catch (err) {\n this.#warn(err);\n }\n }\n\n async #ensureRunStarted(\n startTime: number,\n attrs: Record<string, unknown>,\n ): Promise<void> {\n if (this.#runStarted) return;\n this.#runStarted = true;\n this.#runStartTime = startTime;\n\n await initializeTraceFile(this.#runId, this.#traceDir);\n\n const metadata: Record<string, unknown> = {\n adapter: \"langchain\",\n confidence: \"explicit\",\n };\n if (attrs.langchainRunId) metadata.langchainRunId = attrs.langchainRunId;\n if (attrs.adapterRunName) metadata.adapterRunName = attrs.adapterRunName;\n\n const event: TraceEvent = {\n schemaVersion: \"0.1\",\n event: \"run_started\",\n timestamp: startTime,\n runId: this.#runId,\n name: this.#runName,\n startTime,\n metadata,\n };\n await this.#write(event);\n }\n\n async #ensureRunCompleted(\n endTime: number,\n stepStatus: \"success\" | \"error\",\n errorMessage?: string,\n ): Promise<void> {\n if (this.#runCompleted || !this.#runStarted) return;\n this.#runCompleted = true;\n\n const startTime = this.#runStartTime ?? endTime;\n const durationMs = Math.max(0, endTime - startTime);\n const runStatus = stepStatus === \"error\" ? \"error\" : \"success\";\n\n const event: TraceEvent = {\n schemaVersion: \"0.1\",\n event: \"run_completed\",\n timestamp: endTime,\n runId: this.#runId,\n status: runStatus,\n endTime,\n durationMs,\n ...(runStatus === \"error\" && errorMessage\n ? { error: { message: errorMessage } }\n : {}),\n };\n await this.#write(event);\n }\n\n async #write(event: TraceEvent): Promise<void> {\n const safe = prepareTraceEventForDisk(event, this.#safety);\n await writeTraceEvent(safe, this.#traceDir);\n }\n\n #warn(err: unknown): void {\n if (!this.#silent) {\n console.error(\"[agent-inspect:langchain]\", err);\n }\n }\n}\n","import type { AgentAction, AgentFinish } from \"@langchain/core/agents\";\nimport { BaseCallbackHandler } from \"@langchain/core/callbacks/base\";\nimport type { Serialized } from \"@langchain/core/load/serializable\";\nimport type { LLMResult } from \"@langchain/core/outputs\";\nimport type { ChainValues } from \"@langchain/core/utils/types\";\n\n/** Subpaths like `@langchain/core/messages/base` are not package exports; derive from the handler contract. */\ntype ChatModelMessages = Parameters<\n NonNullable<BaseCallbackHandler[\"handleChatModelStart\"]>\n>[1];\ntype RetrieverDocuments = Parameters<\n NonNullable<BaseCallbackHandler[\"handleRetrieverEnd\"]>\n>[0];\nimport {\n getCurrentCorrelationMetadata,\n Redactor,\n type InspectEvent,\n type InspectKind,\n} from \"agent-inspect\";\n\nimport {\n extractModelName,\n extractTokenUsage,\n safePreview,\n toPlainMetadata,\n} from \"./metadata.js\";\nimport {\n createLlmStreamState,\n recordLlmStreamToken,\n streamMetadataFromState,\n type LlmStreamState,\n} from \"./streaming-metadata.js\";\nimport { LangChainTracePersistence } from \"./trace-persistence.js\";\nimport type { AgentInspectCallbackOptions } from \"./types.js\";\n\ntype StartEntry = { ts: number; kind: InspectKind };\n\nfunction serializedLabel(s: Serialized): string | undefined {\n if (typeof s.name === \"string\" && s.name.trim()) return s.name;\n if (Array.isArray(s.id) && s.id.length > 0) return s.id[s.id.length - 1];\n return s.type;\n}\n\nfunction errorShape(err: unknown): { errorName?: string; errorMessage: string } {\n if (err instanceof Error) {\n return { errorName: err.name, errorMessage: err.message };\n }\n return { errorMessage: String(err) };\n}\n\nexport class AgentInspectCallback extends BaseCallbackHandler {\n name = \"agent-inspect\";\n\n readonly #opts: Required<\n Pick<AgentInspectCallbackOptions, \"capture\" | \"silent\" | \"maxPreviewChars\">\n > &\n AgentInspectCallbackOptions;\n\n readonly #redactor: Redactor;\n readonly #persistence?: LangChainTracePersistence;\n #events: InspectEvent[] = [];\n readonly #starts = new Map<string, StartEntry>();\n readonly #streamState = new Map<string, LlmStreamState>();\n readonly #deferredPersistStart = new Map<\n string,\n {\n lcParentRunId?: string;\n name: string;\n kind: InspectKind;\n startTime: number;\n attributes: Record<string, unknown>;\n }\n >();\n #rootRunId?: string;\n\n constructor(options: AgentInspectCallbackOptions = {}) {\n super({});\n this.#opts = {\n capture: options.capture ?? \"metadata-only\",\n silent: options.silent ?? false,\n maxPreviewChars: options.maxPreviewChars ?? 200,\n persist: options.persist ?? false,\n runName: options.runName ?? \"langchain-agent\",\n ...options,\n };\n this.#redactor = new Redactor({ rules: this.#opts.redact });\n if (this.#opts.persist) {\n this.#persistence = new LangChainTracePersistence({\n runName: this.#opts.runName,\n traceDir: this.#opts.traceDir,\n runId: this.#opts.runId,\n redact: this.#opts.redact,\n silent: this.#opts.silent,\n maxPreviewChars: this.#opts.maxPreviewChars,\n });\n }\n }\n\n getEvents(): InspectEvent[] {\n return this.#events.map((e) => ({\n ...e,\n attributes: e.attributes ? { ...e.attributes } : undefined,\n source: { ...e.source },\n }));\n }\n\n clear(): void {\n this.#events = [];\n this.#starts.clear();\n this.#streamState.clear();\n this.#deferredPersistStart.clear();\n this.#rootRunId = undefined;\n this.#persistence?.reset();\n }\n\n #streamPreviewLimit(): number {\n if (this.#opts.capture !== \"preview\") return 0;\n return this.#opts.maxStreamPreviewChars ?? this.#opts.maxPreviewChars ?? 200;\n }\n\n #attachStreamMetadata(attrs: Record<string, unknown>, lcRunId: string): void {\n const meta = streamMetadataFromState(this.#streamState.get(lcRunId), {\n capturePreview: this.#opts.capture === \"preview\",\n maxPreviewChars: this.#streamPreviewLimit(),\n });\n if (meta) {\n Object.assign(attrs, meta);\n }\n }\n\n #clearStreamState(lcRunId: string): void {\n this.#streamState.delete(lcRunId);\n this.#deferredPersistStart.delete(lcRunId);\n }\n\n #mergeCorrelation(attrs: Record<string, unknown>): void {\n if (this.#opts.capture === \"none\") return;\n try {\n const corr = getCurrentCorrelationMetadata();\n if (!corr) return;\n for (const [key, value] of Object.entries(corr)) {\n if (typeof value === \"string\" && value.length > 0) {\n attrs[key] = value;\n }\n }\n } catch {\n /* instrumentation must not throw */\n }\n }\n\n async #persistLlmStepStart(\n lcRunId: string,\n lcParentRunId: string | undefined,\n name: string,\n kind: InspectKind,\n startTime: number,\n attributes: Record<string, unknown>,\n ): Promise<void> {\n if (this.#opts.stream && this.#opts.persist) {\n this.#deferredPersistStart.set(lcRunId, {\n lcParentRunId,\n name,\n kind,\n startTime,\n attributes: { ...attributes },\n });\n return;\n }\n await this.#persistStepStart(lcRunId, lcParentRunId, name, kind, attributes, startTime);\n }\n\n async #flushDeferredPersistStart(\n lcRunId: string,\n completionAttributes: Record<string, unknown>,\n ): Promise<void> {\n const pending = this.#deferredPersistStart.get(lcRunId);\n if (!pending || !this.#opts.persist) return;\n const merged = {\n ...pending.attributes,\n ...completionAttributes,\n };\n await this.#persistStepStart(\n lcRunId,\n pending.lcParentRunId,\n pending.name,\n pending.kind,\n merged,\n pending.startTime,\n );\n this.#deferredPersistStart.delete(lcRunId);\n }\n\n #ensureRoot(lcRunId: string, parentRunId?: string): void {\n if (parentRunId) return;\n if (!this.#rootRunId) this.#rootRunId = lcRunId;\n }\n\n #traceRunId(lcRunId: string): string {\n return this.#rootRunId ?? lcRunId;\n }\n\n #durationFor(lcRunId: string): number | undefined {\n const s = this.#starts.get(lcRunId);\n if (!s) return undefined;\n return Date.now() - s.ts;\n }\n\n #rememberStart(lcRunId: string, kind: InspectKind): void {\n this.#starts.set(lcRunId, { ts: Date.now(), kind });\n }\n\n #clearStart(lcRunId: string): void {\n this.#starts.delete(lcRunId);\n }\n\n #baseAttrs(\n lcRunId: string,\n parentRunId: string | undefined,\n tags: string[] | undefined,\n runNameArg: string | undefined,\n ): Record<string, unknown> {\n const out: Record<string, unknown> = {\n langchainRunId: lcRunId,\n };\n if (parentRunId) out.parentRunId = parentRunId;\n if (this.#opts.runName) out.adapterRunName = this.#opts.runName;\n if (runNameArg) out.runName = runNameArg;\n if (this.#opts.traceDir) out.traceDir = this.#opts.traceDir;\n const cap = this.#opts.capture;\n if (cap !== \"none\" && tags?.length) out.tags = [...tags];\n return out;\n }\n\n #mergeMetadata(\n attrs: Record<string, unknown>,\n metadata: Record<string, unknown> | undefined,\n ): void {\n if (this.#opts.capture === \"none\" || !metadata) return;\n attrs.metadata = this.#redactor.redactRecord(toPlainMetadata(metadata));\n }\n\n #applyPreview(attrs: Record<string, unknown>, previews: Record<string, unknown>): void {\n if (this.#opts.capture !== \"preview\") return;\n const max = this.#opts.maxPreviewChars;\n for (const [k, v] of Object.entries(previews)) {\n const p = safePreview(v, max);\n if (p !== undefined) attrs[k] = p;\n }\n }\n\n #pushEvent(ev: InspectEvent): void {\n try {\n const attributes = ev.attributes\n ? this.#redactor.redactRecord({ ...ev.attributes })\n : undefined;\n this.#events.push({ ...ev, attributes });\n } catch (err) {\n if (!this.#opts.silent) {\n console.error(\"[agent-inspect:langchain]\", err);\n }\n }\n }\n\n async #persistStepStart(\n lcRunId: string,\n lcParentRunId: string | undefined,\n name: string,\n kind: InspectKind,\n attrs: Record<string, unknown>,\n startTime: number,\n ): Promise<void> {\n await this.#persistence?.onStepStart({\n lcRunId,\n lcParentRunId,\n name,\n kind,\n startTime,\n attributes: attrs,\n });\n }\n\n async #persistStepEnd(\n lcRunId: string,\n lcParentRunId: string | undefined,\n status: \"success\" | \"error\",\n endTime: number,\n durationMs: number | undefined,\n errorMessage?: string,\n completionAttributes?: Record<string, unknown>,\n ): Promise<void> {\n await this.#persistence?.onStepEnd({\n lcRunId,\n lcParentRunId,\n endTime,\n durationMs,\n status,\n errorMessage,\n completionAttributes,\n });\n }\n\n async #persistInstant(\n lcRunId: string,\n lcParentRunId: string | undefined,\n name: string,\n kind: InspectKind,\n attrs: Record<string, unknown>,\n status: \"success\" | \"error\",\n errorMessage?: string,\n ): Promise<void> {\n await this.#persistence?.onInstantStep({\n lcRunId,\n lcParentRunId,\n name,\n kind,\n timestamp: Date.now(),\n attributes: attrs,\n status,\n errorMessage,\n });\n }\n\n override async handleChainStart(\n chain: Serialized,\n inputs: ChainValues,\n runId: string,\n runType?: string,\n tags?: string[],\n metadata?: Record<string, unknown>,\n runName?: string,\n parentRunId?: string,\n _extra?: Record<string, unknown>,\n ): Promise<void> {\n void runType;\n this.#ensureRoot(runId, parentRunId);\n this.#rememberStart(runId, \"CHAIN\");\n const label = serializedLabel(chain) ?? \"chain\";\n const previews: Record<string, unknown> = {};\n if (this.#opts.capture === \"preview\") previews.inputPreview = inputs;\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, runName),\n };\n this.#mergeMetadata(attrs, metadata);\n this.#applyPreview(attrs, previews);\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:CHAIN:start`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: `chain:${runName ?? label}`,\n kind: \"CHAIN\",\n timestamp: ts,\n status: \"running\",\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepStart(runId, parentRunId, `chain:${runName ?? label}`, \"CHAIN\", attrs, ts);\n }\n\n override async handleChainEnd(\n outputs: ChainValues,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n _kwargs?: { inputs?: Record<string, unknown> },\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const durationMs = this.#durationFor(runId);\n this.#clearStart(runId);\n const previews: Record<string, unknown> = {};\n if (this.#opts.capture === \"preview\") previews.outputPreview = outputs;\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n };\n this.#applyPreview(attrs, previews);\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:CHAIN:end`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"chain:end\",\n kind: \"CHAIN\",\n timestamp: ts,\n status: \"ok\",\n durationMs,\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepEnd(runId, parentRunId, \"success\", ts, durationMs);\n }\n\n override async handleChainError(\n err: unknown,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n _kwargs?: { inputs?: Record<string, unknown> },\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const durationMs = this.#durationFor(runId);\n this.#clearStart(runId);\n const { errorName, errorMessage } = errorShape(err);\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n errorName,\n errorMessage,\n };\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:CHAIN:error`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"chain:error\",\n kind: \"CHAIN\",\n timestamp: ts,\n status: \"error\",\n durationMs,\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepEnd(runId, parentRunId, \"error\", ts, durationMs, errorMessage);\n }\n\n override async handleLLMStart(\n llm: Serialized,\n prompts: string[],\n runId: string,\n parentRunId?: string,\n _extraParams?: Record<string, unknown>,\n tags?: string[],\n metadata?: Record<string, unknown>,\n runName?: string,\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n this.#rememberStart(runId, \"LLM\");\n const model = extractModelName(llm);\n const previews: Record<string, unknown> = {};\n if (this.#opts.capture === \"preview\") {\n previews.promptPreview = prompts.length === 1 ? prompts[0] : prompts;\n }\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, runName),\n };\n if (model && this.#opts.capture !== \"none\") attrs.model = model;\n this.#mergeMetadata(attrs, metadata);\n this.#mergeCorrelation(attrs);\n this.#applyPreview(attrs, previews);\n const ts = Date.now();\n const stepName = `llm:${model ?? \"llm\"}`;\n this.#pushEvent({\n eventId: `${runId}:LLM:start`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: stepName,\n kind: \"LLM\",\n timestamp: ts,\n status: \"running\",\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistLlmStepStart(runId, parentRunId, stepName, \"LLM\", ts, attrs);\n }\n\n override async handleChatModelStart(\n llm: Serialized,\n messages: ChatModelMessages,\n runId: string,\n parentRunId?: string,\n _extraParams?: Record<string, unknown>,\n tags?: string[],\n metadata?: Record<string, unknown>,\n runName?: string,\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n this.#rememberStart(runId, \"LLM\");\n const model = extractModelName(llm);\n const previews: Record<string, unknown> = {};\n if (this.#opts.capture === \"preview\") previews.inputPreview = messages;\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, runName),\n };\n if (model && this.#opts.capture !== \"none\") attrs.model = model;\n this.#mergeMetadata(attrs, metadata);\n this.#mergeCorrelation(attrs);\n this.#applyPreview(attrs, previews);\n const ts = Date.now();\n const stepName = `llm:${model ?? \"llm\"}`;\n this.#pushEvent({\n eventId: `${runId}:CHAT:start`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: stepName,\n kind: \"LLM\",\n timestamp: ts,\n status: \"running\",\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistLlmStepStart(runId, parentRunId, stepName, \"LLM\", ts, attrs);\n }\n\n override handleLLMNewToken(\n token: string,\n _idx: { prompt: number; completion: number },\n runId: string,\n _parentRunId?: string,\n _tags?: string[],\n _fields?: { chunk?: unknown },\n ): void | Promise<void> {\n void _idx;\n void _parentRunId;\n void _tags;\n void _fields;\n try {\n if (!this.#opts.stream) return;\n let state = this.#streamState.get(runId);\n if (!state) {\n state = createLlmStreamState();\n this.#streamState.set(runId, state);\n }\n recordLlmStreamToken(state, token, Date.now(), this.#streamPreviewLimit());\n } catch (err) {\n if (!this.#opts.silent) {\n console.error(\"[agent-inspect:langchain]\", err);\n }\n }\n }\n\n override async handleLLMEnd(\n output: LLMResult,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n _extraParams?: Record<string, unknown>,\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const durationMs = this.#durationFor(runId);\n this.#clearStart(runId);\n const tokens = extractTokenUsage(output);\n const model = extractModelName(output);\n const previews: Record<string, unknown> = {};\n if (this.#opts.capture === \"preview\") previews.outputPreview = output;\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n };\n if (model && this.#opts.capture !== \"none\") attrs.model = model;\n if (tokens && this.#opts.capture !== \"none\") attrs.tokens = tokens;\n this.#attachStreamMetadata(attrs, runId);\n this.#mergeCorrelation(attrs);\n this.#applyPreview(attrs, previews);\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:LLM:end`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: `llm:${model ?? \"llm\"}`,\n kind: \"LLM\",\n timestamp: ts,\n status: \"ok\",\n durationMs,\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#flushDeferredPersistStart(runId, attrs);\n await this.#persistStepEnd(runId, parentRunId, \"success\", ts, durationMs, undefined, {\n ...attrs,\n name: `llm:${model ?? \"llm\"}`,\n kind: \"LLM\",\n });\n this.#clearStreamState(runId);\n }\n\n override async handleLLMError(\n err: unknown,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n _extraParams?: Record<string, unknown>,\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const durationMs = this.#durationFor(runId);\n this.#clearStart(runId);\n const { errorName, errorMessage } = errorShape(err);\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n errorName,\n errorMessage,\n };\n this.#attachStreamMetadata(attrs, runId);\n this.#mergeCorrelation(attrs);\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:LLM:error`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"llm:error\",\n kind: \"LLM\",\n timestamp: ts,\n status: \"error\",\n durationMs,\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#flushDeferredPersistStart(runId, attrs);\n await this.#persistStepEnd(runId, parentRunId, \"error\", ts, durationMs, errorMessage, {\n ...attrs,\n name: \"llm:error\",\n kind: \"LLM\",\n });\n this.#clearStreamState(runId);\n }\n\n override async handleToolStart(\n tool: Serialized,\n input: string,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n metadata?: Record<string, unknown>,\n runName?: string,\n _toolCallId?: string,\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n this.#rememberStart(runId, \"TOOL\");\n const toolName = serializedLabel(tool) ?? \"tool\";\n const previews: Record<string, unknown> = {};\n if (this.#opts.capture === \"preview\") previews.inputPreview = input;\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, runName),\n tool: toolName,\n };\n this.#mergeMetadata(attrs, metadata);\n this.#applyPreview(attrs, previews);\n const ts = Date.now();\n const stepName = `tool:${toolName}`;\n this.#pushEvent({\n eventId: `${runId}:TOOL:start`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: stepName,\n kind: \"TOOL\",\n timestamp: ts,\n status: \"running\",\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepStart(runId, parentRunId, stepName, \"TOOL\", attrs, ts);\n }\n\n override async handleToolEnd(\n output: unknown,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const durationMs = this.#durationFor(runId);\n this.#clearStart(runId);\n const previews: Record<string, unknown> = {};\n if (this.#opts.capture === \"preview\") previews.outputPreview = output;\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n };\n this.#applyPreview(attrs, previews);\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:TOOL:end`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"tool:end\",\n kind: \"TOOL\",\n timestamp: ts,\n status: \"ok\",\n durationMs,\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepEnd(runId, parentRunId, \"success\", ts, durationMs);\n }\n\n override async handleToolError(\n err: unknown,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const durationMs = this.#durationFor(runId);\n this.#clearStart(runId);\n const { errorName, errorMessage } = errorShape(err);\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n errorName,\n errorMessage,\n };\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:TOOL:error`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"tool:error\",\n kind: \"TOOL\",\n timestamp: ts,\n status: \"error\",\n durationMs,\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepEnd(runId, parentRunId, \"error\", ts, durationMs, errorMessage);\n }\n\n override async handleRetrieverStart(\n retriever: Serialized,\n _query: string,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n metadata?: Record<string, unknown>,\n name?: string,\n ): Promise<void> {\n void _query;\n this.#ensureRoot(runId, parentRunId);\n this.#rememberStart(runId, \"RETRIEVER\");\n const rname = name ?? serializedLabel(retriever) ?? \"retriever\";\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n retriever: rname,\n };\n this.#mergeMetadata(attrs, metadata);\n const ts = Date.now();\n const stepName = `retriever:${rname}`;\n this.#pushEvent({\n eventId: `${runId}:RETRIEVER:start`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: stepName,\n kind: \"RETRIEVER\",\n timestamp: ts,\n status: \"running\",\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepStart(runId, parentRunId, stepName, \"RETRIEVER\", attrs, ts);\n }\n\n override async handleRetrieverEnd(\n documents: RetrieverDocuments,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const durationMs = this.#durationFor(runId);\n this.#clearStart(runId);\n const previews: Record<string, unknown> = {};\n if (this.#opts.capture === \"preview\" && documents.length > 0) {\n previews.documentPreview = documents.slice(0, 3);\n }\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n documentCount: documents.length,\n };\n this.#applyPreview(attrs, previews);\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:RETRIEVER:end`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"retriever:end\",\n kind: \"RETRIEVER\",\n timestamp: ts,\n status: \"ok\",\n durationMs,\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepEnd(runId, parentRunId, \"success\", ts, durationMs);\n }\n\n override async handleRetrieverError(\n err: unknown,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const durationMs = this.#durationFor(runId);\n this.#clearStart(runId);\n const { errorName, errorMessage } = errorShape(err);\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n errorName,\n errorMessage,\n };\n const ts = Date.now();\n this.#pushEvent({\n eventId: `${runId}:RETRIEVER:error`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"retriever:error\",\n kind: \"RETRIEVER\",\n timestamp: ts,\n status: \"error\",\n durationMs,\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistStepEnd(runId, parentRunId, \"error\", ts, durationMs, errorMessage);\n }\n\n override async handleAgentAction(\n action: AgentAction,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n tool: action.tool,\n };\n if (this.#opts.capture === \"preview\") {\n this.#applyPreview(attrs, {\n toolInputPreview: action.toolInput,\n logPreview: action.log,\n });\n }\n this.#pushEvent({\n eventId: `${runId}:AGENT:action:${Date.now()}`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"agent:action\",\n kind: \"DECISION\",\n timestamp: Date.now(),\n status: \"ok\",\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistInstant(runId, parentRunId, \"agent:action\", \"DECISION\", attrs, \"success\");\n }\n\n override async handleAgentEnd(\n finish: AgentFinish,\n runId: string,\n parentRunId?: string,\n tags?: string[],\n ): Promise<void> {\n this.#ensureRoot(runId, parentRunId);\n const attrs: Record<string, unknown> = {\n ...this.#baseAttrs(runId, parentRunId, tags, undefined),\n };\n if (this.#opts.capture === \"preview\") {\n this.#applyPreview(attrs, {\n outputPreview: finish.returnValues,\n logPreview: finish.log,\n });\n }\n this.#pushEvent({\n eventId: `${runId}:AGENT:end:${Date.now()}`,\n runId: this.#traceRunId(runId),\n parentId: parentRunId,\n name: \"agent:end\",\n kind: \"AGENT\",\n timestamp: Date.now(),\n status: \"ok\",\n attributes: attrs,\n confidence: \"explicit\",\n source: { type: \"adapter\" },\n });\n await this.#persistInstant(runId, parentRunId, \"agent:end\", \"AGENT\", attrs, \"success\");\n }\n}\n"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -6,7 +6,19 @@ import { ChainValues } from '@langchain/core/utils/types';
|
|
|
6
6
|
import { RedactionRule, InspectEvent } from 'agent-inspect';
|
|
7
7
|
|
|
8
8
|
type CaptureMode = "none" | "metadata-only" | "preview";
|
|
9
|
-
interface
|
|
9
|
+
interface LangChainStreamingOptions {
|
|
10
|
+
/**
|
|
11
|
+
* Capture streaming lifecycle metadata (chunk counts, duration).
|
|
12
|
+
* Does not capture full token text by default.
|
|
13
|
+
*/
|
|
14
|
+
stream?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Maximum streamed preview characters when `capture: "preview"`.
|
|
17
|
+
* Defaults to `maxPreviewChars` when omitted.
|
|
18
|
+
*/
|
|
19
|
+
maxStreamPreviewChars?: number;
|
|
20
|
+
}
|
|
21
|
+
interface AgentInspectCallbackOptions extends LangChainStreamingOptions {
|
|
10
22
|
runName?: string;
|
|
11
23
|
traceDir?: string;
|
|
12
24
|
silent?: boolean;
|
|
@@ -45,6 +57,12 @@ declare class AgentInspectCallback extends BaseCallbackHandler {
|
|
|
45
57
|
}): Promise<void>;
|
|
46
58
|
handleLLMStart(llm: Serialized, prompts: string[], runId: string, parentRunId?: string, _extraParams?: Record<string, unknown>, tags?: string[], metadata?: Record<string, unknown>, runName?: string): Promise<void>;
|
|
47
59
|
handleChatModelStart(llm: Serialized, messages: ChatModelMessages, runId: string, parentRunId?: string, _extraParams?: Record<string, unknown>, tags?: string[], metadata?: Record<string, unknown>, runName?: string): Promise<void>;
|
|
60
|
+
handleLLMNewToken(token: string, _idx: {
|
|
61
|
+
prompt: number;
|
|
62
|
+
completion: number;
|
|
63
|
+
}, runId: string, _parentRunId?: string, _tags?: string[], _fields?: {
|
|
64
|
+
chunk?: unknown;
|
|
65
|
+
}): void | Promise<void>;
|
|
48
66
|
handleLLMEnd(output: LLMResult, runId: string, parentRunId?: string, tags?: string[], _extraParams?: Record<string, unknown>): Promise<void>;
|
|
49
67
|
handleLLMError(err: unknown, runId: string, parentRunId?: string, tags?: string[], _extraParams?: Record<string, unknown>): Promise<void>;
|
|
50
68
|
handleToolStart(tool: Serialized, input: string, runId: string, parentRunId?: string, tags?: string[], metadata?: Record<string, unknown>, runName?: string, _toolCallId?: string): Promise<void>;
|
|
@@ -71,4 +89,4 @@ declare function safePreview(value: unknown, maxChars: number): string | undefin
|
|
|
71
89
|
/** Shallow plain metadata: drops functions/symbols; avoids deep nesting. Never throws. */
|
|
72
90
|
declare function toPlainMetadata(value: unknown): Record<string, unknown>;
|
|
73
91
|
|
|
74
|
-
export { AgentInspectCallback, type AgentInspectCallbackOptions, type CaptureMode, type LangChainRunMetadata, type TokenUsage, extractModelName, extractTokenUsage, safePreview, toPlainMetadata };
|
|
92
|
+
export { AgentInspectCallback, type AgentInspectCallbackOptions, type CaptureMode, type LangChainRunMetadata, type LangChainStreamingOptions, type TokenUsage, extractModelName, extractTokenUsage, safePreview, toPlainMetadata };
|
package/dist/index.d.ts
CHANGED
|
@@ -6,7 +6,19 @@ import { ChainValues } from '@langchain/core/utils/types';
|
|
|
6
6
|
import { RedactionRule, InspectEvent } from 'agent-inspect';
|
|
7
7
|
|
|
8
8
|
type CaptureMode = "none" | "metadata-only" | "preview";
|
|
9
|
-
interface
|
|
9
|
+
interface LangChainStreamingOptions {
|
|
10
|
+
/**
|
|
11
|
+
* Capture streaming lifecycle metadata (chunk counts, duration).
|
|
12
|
+
* Does not capture full token text by default.
|
|
13
|
+
*/
|
|
14
|
+
stream?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Maximum streamed preview characters when `capture: "preview"`.
|
|
17
|
+
* Defaults to `maxPreviewChars` when omitted.
|
|
18
|
+
*/
|
|
19
|
+
maxStreamPreviewChars?: number;
|
|
20
|
+
}
|
|
21
|
+
interface AgentInspectCallbackOptions extends LangChainStreamingOptions {
|
|
10
22
|
runName?: string;
|
|
11
23
|
traceDir?: string;
|
|
12
24
|
silent?: boolean;
|
|
@@ -45,6 +57,12 @@ declare class AgentInspectCallback extends BaseCallbackHandler {
|
|
|
45
57
|
}): Promise<void>;
|
|
46
58
|
handleLLMStart(llm: Serialized, prompts: string[], runId: string, parentRunId?: string, _extraParams?: Record<string, unknown>, tags?: string[], metadata?: Record<string, unknown>, runName?: string): Promise<void>;
|
|
47
59
|
handleChatModelStart(llm: Serialized, messages: ChatModelMessages, runId: string, parentRunId?: string, _extraParams?: Record<string, unknown>, tags?: string[], metadata?: Record<string, unknown>, runName?: string): Promise<void>;
|
|
60
|
+
handleLLMNewToken(token: string, _idx: {
|
|
61
|
+
prompt: number;
|
|
62
|
+
completion: number;
|
|
63
|
+
}, runId: string, _parentRunId?: string, _tags?: string[], _fields?: {
|
|
64
|
+
chunk?: unknown;
|
|
65
|
+
}): void | Promise<void>;
|
|
48
66
|
handleLLMEnd(output: LLMResult, runId: string, parentRunId?: string, tags?: string[], _extraParams?: Record<string, unknown>): Promise<void>;
|
|
49
67
|
handleLLMError(err: unknown, runId: string, parentRunId?: string, tags?: string[], _extraParams?: Record<string, unknown>): Promise<void>;
|
|
50
68
|
handleToolStart(tool: Serialized, input: string, runId: string, parentRunId?: string, tags?: string[], metadata?: Record<string, unknown>, runName?: string, _toolCallId?: string): Promise<void>;
|
|
@@ -71,4 +89,4 @@ declare function safePreview(value: unknown, maxChars: number): string | undefin
|
|
|
71
89
|
/** Shallow plain metadata: drops functions/symbols; avoids deep nesting. Never throws. */
|
|
72
90
|
declare function toPlainMetadata(value: unknown): Record<string, unknown>;
|
|
73
91
|
|
|
74
|
-
export { AgentInspectCallback, type AgentInspectCallbackOptions, type CaptureMode, type LangChainRunMetadata, type TokenUsage, extractModelName, extractTokenUsage, safePreview, toPlainMetadata };
|
|
92
|
+
export { AgentInspectCallback, type AgentInspectCallbackOptions, type CaptureMode, type LangChainRunMetadata, type LangChainStreamingOptions, type TokenUsage, extractModelName, extractTokenUsage, safePreview, toPlainMetadata };
|