{"version":3,"sources":["../../src/middleware/trajectory.ts"],"names":["GlobalTrajectoryMiddleware","Middleware","enabled","included","excluded","cleanups","target","ctx","pretty","traceLevel","Map","prefixByType","matchNested","emitterPriority","formatter","emitter","options","createTarget","BaseAgent","ChatModel","Tool","Requirement","Array","from","entries","x","prefix","className","instanceName","eventName","Emitter","root","child","namespace","bind","length","pop","clear","set","runId","relative","absolute","bindEmitter","input","undefined","msg","console","log","Logger","debug","push","match","_","event","logTraceId","handleTopLevelEvent","data","meta","creator","RunContext","trace","isAllowed","capitalize","name","call","matchInternalEvent","isBlocking","priority","handleNestedEvent","has","parentRunId","allowed","parentTrace","get","instance","some","extractName","targetName","type","typePrefix","formatPrefix","indent","getTraceLevel","indentParent","indentDiff","repeat","formatPayload","value","isPrimitive","String","FrameworkError","explain","serialized","Serializer","serialize","JSON","stringify","deserialize","excludedKeys","Set","key","onInternalStart","payload","message","emit","level","origin","onInternalSuccess","onInternalError","onInternalFinish","error","output","names","includes","getProp","context"],"mappings":"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","file":"trajectory.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Middleware, RunContext, RunContextCallbacks, RunInstance } from \"@/context.js\";\nimport { Callback, Emitter, EventMeta } from \"@/emitter/emitter.js\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { Logger } from \"@/logger/logger.js\";\nimport { BaseAgent } from \"@/agents/base.js\";\nimport type { AnyConstructable } from \"@/internals/types.js\";\nimport { capitalize } from \"remeda\";\nimport { ChatModel } from \"@/backend/chat.js\";\nimport { Tool } from \"@/tools/base.js\";\nimport { Requirement } from \"@/agents/requirement/requirements/requirement.js\";\nimport type { InferCallbackValue } from \"@/emitter/types.js\";\nimport { Serializer } from \"@/serializer/serializer.js\";\nimport { isPrimitive } from \"@/internals/helpers/guards.js\";\nimport { getProp } from \"@/internals/helpers/object.js\";\n\n/**\n * Information about how deep the given entity is in the execution tree.\n */\nexport interface TraceLevel {\n  /** Relative depth to the included (observed) elements */\n  relative: number;\n  /** Absolute depth from the root */\n  absolute: number;\n}\n\n/**\n * Input for custom formatter function\n */\nexport interface GlobalTrajectoryMiddlewareFormatterInput {\n  prefix: string;\n  className: string;\n  eventName: string;\n  instanceName: string | null;\n}\n\nexport interface GlobalTrajectoryMiddlewareCallbacks {\n  start: Callback<{\n    message: string;\n    level: TraceLevel;\n    origin: [InferCallbackValue<RunContextCallbacks[\"start\"]>, EventMeta];\n  }>;\n  success: Callback<{\n    message: string;\n    level: TraceLevel;\n    origin: [InferCallbackValue<RunContextCallbacks[\"success\"]>, EventMeta];\n  }>;\n  error: Callback<{\n    message: string;\n    level: TraceLevel;\n    origin: [InferCallbackValue<RunContextCallbacks[\"error\"]>, EventMeta];\n  }>;\n  finish: Callback<{\n    message: string;\n    level: TraceLevel;\n    origin: [InferCallbackValue<RunContextCallbacks[\"finish\"]>, EventMeta];\n  }>;\n}\n\ntype OutputTargetFn = (message: string) => void;\ntype OutputTarget = Logger | OutputTargetFn;\n\nexport interface GlobalTrajectoryMiddlewareOptions {\n  /** Specify output target: 'console', Logger instance, custom function, or null to disable */\n  target?: OutputTarget;\n  /** List of classes to include in the trajectory */\n  included?: AnyConstructable[];\n  /** List of classes to exclude from the trajectory */\n  excluded?: AnyConstructable[];\n  /** Use pretty formatting for the trajectory */\n  pretty?: boolean;\n  /** Customize how instances of individual classes should be printed */\n  prefixByType?: Map<AnyConstructable, string>;\n  /** Enable/Disable the logging */\n  enabled?: boolean;\n  /** Whether to observe trajectories of nested run contexts */\n  matchNested?: boolean;\n  /** Defines a priority for registered events */\n  emitterPriority?: number;\n  /** Custom formatter function */\n  formatter?: (input: GlobalTrajectoryMiddlewareFormatterInput) => string;\n}\n\n/**\n * Middleware for capturing and logging execution flow of agents, tools, and models.\n * Provides hierarchical visualization with indentation to show the call stack.\n */\nexport class GlobalTrajectoryMiddleware<T extends RunInstance = any> extends Middleware<T> {\n  protected enabled: boolean;\n  protected included: AnyConstructable[];\n  protected excluded: AnyConstructable[];\n  protected cleanups: (() => void)[] = [];\n  protected target: (message: string) => void;\n  protected ctx: RunContext<T> | null = null;\n  protected pretty: boolean;\n  protected traceLevel = new Map<string, TraceLevel>();\n  protected prefixByType: Map<any, string>;\n  protected matchNested: boolean;\n  protected emitterPriority: number;\n  protected formatter: (input: GlobalTrajectoryMiddlewareFormatterInput) => string;\n  public readonly emitter: Emitter<GlobalTrajectoryMiddlewareCallbacks>;\n\n  constructor(options: GlobalTrajectoryMiddlewareOptions = {}) {\n    super();\n\n    this.enabled = options.enabled ?? true;\n    this.included = options.included ?? [];\n    this.excluded = options.excluded ?? [];\n    this.target = this.createTarget(options.target);\n    this.pretty = options.pretty ?? false;\n    this.matchNested = options.matchNested ?? true;\n    this.emitterPriority = options.emitterPriority ?? -1; // run later\n\n    // Default prefixes\n    this.prefixByType = new Map([\n      [BaseAgent, \"🤖 \"],\n      [ChatModel, \"💬 \"],\n      [Tool, \"🛠️ \"],\n      [Requirement, \"🔎 \"],\n      ...((options.prefixByType ? Array.from(options.prefixByType.entries()) : []) as any),\n    ]);\n\n    this.formatter =\n      options.formatter ??\n      ((x) => `${x.prefix}${x.className}[${x.instanceName || x.className}][${x.eventName}]`);\n\n    this.emitter = Emitter.root.child<GlobalTrajectoryMiddlewareCallbacks>({\n      namespace: [\"middleware\", \"globalTrajectory\"],\n    });\n  }\n\n  /**\n   * Bind the middleware to a run context\n   */\n  bind(ctx: RunContext<T>): void {\n    // Cleanup previous bindings\n    while (this.cleanups.length > 0) {\n      this.cleanups.pop()!();\n    }\n\n    this.traceLevel.clear();\n    this.traceLevel.set(ctx.runId, { relative: 0, absolute: 0 });\n    this.ctx = ctx;\n\n    this.bindEmitter(ctx.emitter);\n  }\n\n  private createTarget(input?: OutputTarget): OutputTargetFn {\n    if (input === null || input === undefined) {\n      // eslint-disable-next-line no-console\n      return (msg) => console.log(msg);\n    } else if (input instanceof Logger) {\n      return (msg) => input.debug(msg);\n    } else {\n      return input;\n    }\n  }\n\n  private bindEmitter(emitter: Emitter<any>): void {\n    // Track all events for trace ID logging\n    this.cleanups.push(\n      emitter.match(\"*.*\", (_, event) => this.logTraceId(event), {\n        matchNested: true,\n      }),\n    );\n\n    // Handle top-level events\n    const handleTopLevelEvent = async (data: any, meta: EventMeta) => {\n      if (!(meta.creator instanceof RunContext)) {\n        return;\n      }\n      if (!meta.trace) {\n        return;\n      }\n\n      this.logTraceId(meta);\n      if (!this.isAllowed(meta)) {\n        return;\n      }\n      if (!this.enabled) {\n        return;\n      }\n\n      const eventName = capitalize(meta.name) as \"Start\" | \"Success\" | \"Error\" | \"Finish\";\n      await this[`onInternal${eventName}` as const].call(this, data, meta);\n    };\n\n    this.cleanups.push(\n      emitter.match(\n        matchInternalEvent([\"start\", \"success\", \"error\", \"finish\"]),\n        handleTopLevelEvent,\n        {\n          matchNested: false,\n          isBlocking: true,\n          priority: this.emitterPriority,\n        },\n      ),\n    );\n\n    // Handle nested events if enabled\n    if (this.matchNested) {\n      const handleNestedEvent = async (data: any, meta: EventMeta) => {\n        if (!(meta.creator instanceof RunContext)) {\n          return;\n        }\n        if (meta.creator.emitter !== emitter) {\n          await handleTopLevelEvent(data, meta);\n          this.bindEmitter(meta.creator.emitter);\n        }\n      };\n\n      this.cleanups.push(\n        emitter.match(matchInternalEvent([\"start\"]), handleNestedEvent, {\n          matchNested: true,\n          isBlocking: true,\n          priority: this.emitterPriority,\n        }),\n      );\n    }\n  }\n\n  private logTraceId(meta: EventMeta): void {\n    if (!meta.trace?.runId) {\n      return;\n    }\n    if (this.traceLevel.has(meta.trace.runId)) {\n      return;\n    }\n    if (meta.trace.parentRunId === meta.trace.runId) {\n      return;\n    }\n\n    if (meta.trace.parentRunId) {\n      const allowed = this.isAllowed(meta);\n      const parentTrace = this.traceLevel.get(meta.trace.parentRunId) ?? {\n        relative: 0,\n        absolute: 0,\n      };\n      this.traceLevel.set(meta.trace.runId, {\n        relative: parentTrace.relative + (allowed ? 1 : 0),\n        absolute: parentTrace.absolute + 1,\n      });\n    }\n  }\n\n  private isAllowed(meta: EventMeta): boolean {\n    let target: any = meta.creator;\n    if (target instanceof RunContext) {\n      target = target.instance;\n    }\n\n    for (const excluded of this.excluded) {\n      if (target instanceof excluded) {\n        return false;\n      }\n    }\n\n    if (this.included.length === 0) {\n      return true;\n    }\n\n    return this.included.some((included) => target instanceof included);\n  }\n\n  private extractName(meta: EventMeta): string {\n    let target: any = meta.creator;\n    if (target instanceof RunContext) {\n      target = target.instance;\n    }\n\n    const className = target.constructor.name;\n    let targetName: string | null = null;\n\n    if (target instanceof BaseAgent && target.meta?.name) {\n      targetName = target.meta.name;\n    } else if (\"name\" in target && typeof target.name === \"string\") {\n      targetName = target.name;\n    }\n\n    let prefix = \"\";\n    for (const [type, typePrefix] of this.prefixByType.entries()) {\n      if (target instanceof type) {\n        prefix = typePrefix;\n        break;\n      }\n    }\n\n    const input: GlobalTrajectoryMiddlewareFormatterInput = {\n      prefix,\n      className,\n      instanceName: targetName,\n      eventName: meta.name,\n    };\n\n    return this.formatter(input);\n  }\n\n  private formatPrefix(meta: EventMeta): string {\n    if (!meta.trace) {\n      return \"\";\n    }\n\n    const indent = this.getTraceLevel(meta, \"self\").relative;\n    const indentParent = this.getTraceLevel(meta, \"parent\").relative;\n    const indentDiff = indent - indentParent;\n\n    let prefix = \"\";\n    prefix += \"  \".repeat(indentParent * 2);\n\n    if (meta.name !== \"start\" && indent) {\n      prefix += \"<\";\n    }\n\n    prefix += \"--\".repeat(indentDiff);\n\n    if (meta.name === \"start\" && prefix && indent) {\n      prefix += \">\";\n    }\n\n    if (prefix) {\n      prefix = `${prefix} `;\n    }\n\n    const name = this.extractName(meta);\n    return `${prefix}${name}: `;\n  }\n\n  private getTraceLevel(meta: EventMeta, type: \"self\" | \"parent\" = \"self\"): TraceLevel {\n    if (!meta.trace) {\n      return { relative: 0, absolute: 0 };\n    }\n\n    const runId = type === \"parent\" ? meta.trace.parentRunId || \"\" : meta.trace.runId;\n    return this.traceLevel.get(runId) ?? { relative: 0, absolute: 0 };\n  }\n\n  private async formatPayload(value: any): Promise<string> {\n    if (isPrimitive(value)) {\n      return String(value);\n    }\n\n    if (value instanceof FrameworkError) {\n      return value.explain();\n    }\n\n    const serialized = await Serializer.serialize(value);\n    return JSON.stringify(\n      await Serializer.deserialize(serialized, [], true),\n      (() => {\n        const excludedKeys = new Set([\"emitter\", \"cleanups\", \"creator\", \"listeners\"]);\n        return (key, value) => {\n          if (excludedKeys.has(key)) {\n            return undefined;\n          }\n          if (value && value instanceof Tool) {\n            return value.name;\n          }\n          return value;\n        };\n      })(),\n      this.pretty ? 2 : undefined,\n    );\n  }\n\n  private async onInternalStart(\n    payload: InferCallbackValue<RunContextCallbacks[\"start\"]>,\n    meta: EventMeta,\n  ): Promise<void> {\n    const prefix = this.formatPrefix(meta);\n    const message = `${prefix}${await this.formatPayload(payload.input)}`;\n\n    await this.emitter.emit(\"start\", {\n      message,\n      level: this.getTraceLevel(meta),\n      origin: [payload, meta],\n    });\n\n    this.target(message);\n  }\n\n  private async onInternalSuccess(\n    payload: InferCallbackValue<RunContextCallbacks[\"success\"]>,\n    meta: EventMeta,\n  ): Promise<void> {\n    const prefix = this.formatPrefix(meta);\n    // TODO: change to payload.output once available\n    const message = `${prefix}${await this.formatPayload(payload)}`;\n\n    await this.emitter.emit(\"success\", {\n      message,\n      level: this.getTraceLevel(meta),\n      origin: [payload, meta],\n    });\n\n    this.target(message);\n  }\n\n  private async onInternalError(\n    payload: InferCallbackValue<RunContextCallbacks[\"error\"]>,\n    meta: EventMeta,\n  ): Promise<void> {\n    const prefix = this.formatPrefix(meta);\n    const message = `${prefix}${await this.formatPayload(payload)}`;\n\n    await this.emitter.emit(\"error\", {\n      message,\n      level: this.getTraceLevel(meta),\n      origin: [payload, meta],\n    });\n\n    this.target(message);\n  }\n\n  private async onInternalFinish(\n    payload: InferCallbackValue<RunContextCallbacks[\"finish\"]>,\n    meta: EventMeta,\n  ): Promise<void> {\n    const prefix = this.formatPrefix(meta);\n    const message = `${prefix}${await this.formatPayload(payload.error || payload.output)}`;\n    await this.emitter.emit(\"finish\", {\n      message,\n      level: this.getTraceLevel(meta),\n      origin: [payload, meta],\n    });\n  }\n}\n\nfunction matchInternalEvent(names: (keyof RunContextCallbacks)[]) {\n  return (meta: EventMeta): boolean =>\n    names.includes(meta.name as keyof RunContextCallbacks) &&\n    getProp(meta.context, [\"internal\"], false);\n}\n"]}