{"version":3,"sources":["../../src/instrumentation/tracer.ts"],"names":["tracer","opentelemetry","trace","getTracer","Version","activeTracesMap","Map","buildSpansForParent","spans","parentId","traceId","filter","fwSpan","parent_id","forEach","startActiveSpan","context","span_id","startTime","start_time","attributes","target","name","data","JSON","stringify","ctx","activeSpan","setStatus","status","end","end_time","buildTraceTree","prompt","history","generatedMessage","version","runErrorSpanKey","endTime","source","undefined","response","runErrorSpan","find","span","code","SpanStatusCode","OK"],"mappings":";;;;;;;;;;;AAoBO,MAAMA,MAASC,GAAAA,8BAAAA,CAAcC,KAAMC,CAAAA,SAAAA,CAAU,uBAAuBC,mBAAAA;AAE9DC,MAAAA,eAAAA,uBAAsBC,GAAAA;AAqBnC,SAASC,mBAAoB,CAAA,EAAEC,KAAOC,EAAAA,QAAAA,EAAUC,SAAmC,EAAA;AACjFF,EACGG,KAAAA,CAAAA,MAAAA,CAAO,CAACC,MAAWA,KAAAA,MAAAA,CAAOC,cAAcJ,QAAAA,CAAAA,CACxCK,OAAQ,CAAA,CAACF,MAAAA,KAAAA;AACRZ,IAAOe,MAAAA,CAAAA,eAAAA,CACLH,MAAOI,CAAAA,OAAAA,CAAQC,OACf,EAAA;;AAEEC,MAAAA,SAAAA,EAAWN,MAAOO,CAAAA,UAAAA;;MAElBC,UAAY,EAAA;AACVC,QAAAA,MAAAA,EAAQT,OAAOQ,UAAWC,CAAAA,MAAAA;AAC1BC,QAAAA,IAAAA,EAAMV,MAAOU,CAAAA,IAAAA;AACbZ,QAAAA,OAAAA;QACA,GAAIE,MAAAA,CAAOQ,WAAWG,IAAQ,IAAA;AAAEA,UAAAA,IAAAA,EAAMC,IAAKC,CAAAA,SAAAA,CAAUb,MAAOQ,CAAAA,UAAAA,CAAWG,IAAI;AAAE,SAAA;QAC7E,GAAIX,MAAAA,CAAOQ,WAAWM,GAAO,IAAA;AAAEA,UAAAA,GAAAA,EAAKF,IAAKC,CAAAA,SAAAA,CAAUb,MAAOQ,CAAAA,UAAAA,CAAWM,GAAG;AAAE;AAC5E;AACF,KAAA,EACA,CAACC,UAAAA,KAAAA;AAECA,MAAWC,UAAAA,CAAAA,SAAAA,CAAUhB,OAAOiB,MAAM,CAAA;AAGlCtB,MAAoB,mBAAA,CAAA;AAAEC,QAAAA,KAAAA;AAAOE,QAAAA,OAAAA;AAASD,QAAAA,QAAAA,EAAUG,OAAOI,OAAQC,CAAAA;OAAQ,CAAA;AAGvEU,MAAWG,UAAAA,CAAAA,GAAAA,CAAIlB,OAAOmB,QAAQ,CAAA;KAChC,CAAA;GAEJ,CAAA;AACJ;AA9BSxB,MAAAA,CAAAA,mBAAAA,EAAAA,qBAAAA,CAAAA;AAgCF,SAASyB,cAAe,CAAA,EAC7BC,MACAC,EAAAA,OAAAA,EACAC,gBACA3B,EAAAA,KAAAA,EACAE,OACA0B,EAAAA,OAAAA,EACAC,eACAnB,EAAAA,SAAAA,EACAoB,OACAC,EAAAA,MAAAA,EACiB,EAAA;AACjBvC,EAAAA,MAAAA,CAAOe,eACL,CAAA,CAAA,oBAAA,EAAuBwB,MAAAA,CAAAA,CAAAA,EAAU7B,OAAAA,CACjC,CAAA,EAAA;;AAEEQ,IAAAA,SAAAA;;IAEAE,UAAY,EAAA;AACVV,MAAAA,OAAAA;AACA0B,MAAAA,OAAAA;AACA,MAAA,GAAIH,MAAU,IAAA;AAAEA,QAAAA;AAAO,OAAA;AACvB,MAAA,GAAIE,qBAAqBK,MAAa,IAAA;QAAEC,QAAUjB,EAAAA,IAAAA,CAAKC,UAAUU,gBAAAA;AAAkB,OAAA;AACnF,MAAA,GAAID,OAAW,IAAA;QAAEA,OAASV,EAAAA,IAAAA,CAAKC,UAAUS,OAAAA;AAAS;AACpD;AACF,GAAA,EACA,CAACP,UAAAA,KAAAA;AAEC,IAAMe,MAAAA,YAAAA,GAAelC,MAAMmC,IAAK,CAAA,CAACC,SAASA,IAAKxB,CAAAA,UAAAA,CAAWC,WAAWgB,eAAAA,CAAAA;AACrE,IAAA,IAAIK,YAAc,EAAA;AAChBf,MAAWC,UAAAA,CAAAA,SAAAA,CAAUc,aAAab,MAAM,CAAA;KACnC,MAAA;AACLF,MAAAA,UAAAA,CAAWC,SAAU,CAAA;AAAEiB,QAAAA,IAAAA,EAAMC,4BAAeC,CAAAA;OAAG,CAAA;AACjD;AAGAxC,IAAoB,mBAAA,CAAA;AAAEC,MAAAA,KAAAA;AAAOE,MAAAA,OAAAA;MAASD,QAAU+B,EAAAA;KAAU,CAAA;AAG1Db,IAAAA,UAAAA,CAAWG,IAAIQ,OAAAA,CAAAA;GACjB,CAAA;AAEJ;AA1CgBN,MAAAA,CAAAA,cAAAA,EAAAA,gBAAAA,CAAAA","file":"tracer.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Version } from \"@/version.js\";\nimport opentelemetry, { SpanStatusCode, TimeInput } from \"@opentelemetry/api\";\nimport { FrameworkSpan, GeneratedResponse } from \"./types.js\";\n\nexport const tracer = opentelemetry.trace.getTracer(\"bee-agent-framework\", Version);\n\nexport const activeTracesMap = new Map<string, string>();\n\ninterface ComputeTreeProps {\n  prompt?: string | null;\n  history: GeneratedResponse[] | undefined;\n  generatedMessage: GeneratedResponse | undefined;\n  spans: FrameworkSpan[];\n  traceId: string;\n  version: string;\n  runErrorSpanKey: string;\n  startTime: TimeInput;\n  endTime: TimeInput;\n  source: string;\n}\n\ninterface BuildSpansForParentProps {\n  spans: FrameworkSpan[];\n  traceId: string;\n  parentId: string | undefined;\n}\n\nfunction buildSpansForParent({ spans, parentId, traceId }: BuildSpansForParentProps) {\n  spans\n    .filter((fwSpan) => fwSpan.parent_id === parentId)\n    .forEach((fwSpan) => {\n      tracer.startActiveSpan(\n        fwSpan.context.span_id,\n        {\n          // custom start time\n          startTime: fwSpan.start_time,\n          // set span important attributes\n          attributes: {\n            target: fwSpan.attributes.target,\n            name: fwSpan.name,\n            traceId,\n            ...(fwSpan.attributes.data && { data: JSON.stringify(fwSpan.attributes.data) }),\n            ...(fwSpan.attributes.ctx && { ctx: JSON.stringify(fwSpan.attributes.ctx) }),\n          },\n        },\n        (activeSpan) => {\n          // set status\n          activeSpan.setStatus(fwSpan.status);\n\n          // set nested spans\n          buildSpansForParent({ spans, traceId, parentId: fwSpan.context.span_id });\n\n          // finish the span\n          activeSpan.end(fwSpan.end_time);\n        },\n      );\n    });\n}\n\nexport function buildTraceTree({\n  prompt,\n  history,\n  generatedMessage,\n  spans,\n  traceId,\n  version,\n  runErrorSpanKey,\n  startTime,\n  endTime,\n  source,\n}: ComputeTreeProps) {\n  tracer.startActiveSpan(\n    `bee-agent-framework-${source}-${traceId}`,\n    {\n      // custom start time\n      startTime,\n      // set main span important attributes\n      attributes: {\n        traceId,\n        version,\n        ...(prompt && { prompt }),\n        ...(generatedMessage !== undefined && { response: JSON.stringify(generatedMessage) }),\n        ...(history && { history: JSON.stringify(history) }),\n      },\n    },\n    (activeSpan) => {\n      // set status\n      const runErrorSpan = spans.find((span) => span.attributes.target === runErrorSpanKey);\n      if (runErrorSpan) {\n        activeSpan.setStatus(runErrorSpan.status);\n      } else {\n        activeSpan.setStatus({ code: SpanStatusCode.OK });\n      }\n\n      // set nested spans\n      buildSpansForParent({ spans, traceId, parentId: undefined });\n\n      // finish the main span with custom end time\n      activeSpan.end(endTime);\n    },\n  );\n}\n"]}