@memberjunction/ng-ai-test-harness 5.4.0 → 5.5.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.
@@ -1 +1 @@
1
- {"version":3,"file":"agent-execution-monitor.component.d.ts","sourceRoot":"","sources":["../../src/lib/agent-execution-monitor.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-execution-monitor.component.d.ts","sourceRoot":"","sources":["../../src/lib/agent-execution-monitor.component.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { Component, Input, ViewChild, ChangeDetectionStrategy, ViewContainerRef,
2
2
  import { Subject, interval } from 'rxjs';
3
3
  import { takeUntil } from 'rxjs/operators';
4
4
  import { ExecutionNodeComponent } from './agent-execution-node.component';
5
+ import { UUIDsEqual } from '@memberjunction/global';
5
6
  import * as i0 from "@angular/core";
6
7
  const _c0 = ["executionTreeContainer"];
7
8
  const _c1 = ["executionNodesContainer"];
@@ -162,7 +163,7 @@ export class AgentExecutionMonitorComponent {
162
163
  });
163
164
  // Only clear if it's actually a different execution (different ID)
164
165
  const isDifferentExecution = (!oldRun && newRun) ||
165
- (oldRun && newRun && oldRun.ID !== newRun.ID) ||
166
+ (oldRun && newRun && !UUIDsEqual(oldRun.ID, newRun.ID)) ||
166
167
  (oldRun && !newRun);
167
168
  if (isDifferentExecution) {
168
169
  console.log('🗑️ Clearing for different agent run');
@@ -1159,5 +1160,5 @@ export class AgentExecutionMonitorComponent {
1159
1160
  type: ViewChild,
1160
1161
  args: ['executionNodesContainer', { read: ViewContainerRef }]
1161
1162
  }] }); })();
1162
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AgentExecutionMonitorComponent, { className: "AgentExecutionMonitorComponent", filePath: "lib/agent-execution-monitor.component.ts", lineNumber: 368 }); })();
1163
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AgentExecutionMonitorComponent, { className: "AgentExecutionMonitorComponent", filePath: "lib/agent-execution-monitor.component.ts", lineNumber: 369 }); })();
1163
1164
  //# sourceMappingURL=agent-execution-monitor.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-execution-monitor.component.js","sourceRoot":"","sources":["../../src/lib/agent-execution-monitor.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAuC,SAAS,EAAgD,uBAAuB,EAAE,gBAAgB,EAAgB,MAAM,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC9N,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAgB,MAAM,MAAM,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;;;;;IA6DlD,+BAA6B;IACzB,2BAA2B;IAC3B,sBACJ;IAAA,iBAAO;;;IAKP,AADJ,8BAA4B,eACG;IAAA,wBAAQ;IAAA,iBAAO;IAC1C,gCAAwB;IAAA,YAA0B;IACtD,AADsD,iBAAO,EACvD;;;IADsB,eAA0B;IAA1B,iDAA0B;;;;IAItD,kCAAwD;IAA3B,kMAAS,uBAAgB,KAAC;IACnD,wBAA6C;IAC7C,YACJ;IAAA,iBAAS;;;IADL,eACJ;IADI,yFACJ;;;IAcA,+BAAyB;IACrB,wBAA2C;IAC3C,yBAAG;IAAA,iDAAiC;IACxC,AADwC,iBAAI,EACtC;;;IAYM,gCAA2B;IAAA,YAAgC;IAAA,iBAAO;;;IAAvC,cAAgC;IAAhC,gEAAgC;;;IAkB/D,AADJ,+BAAuB,eACM;IAAA,wBAAQ;IAAA,iBAAO;IACxC,gCAAyB;IAAA,YAAyC;IACtE,AADsE,iBAAO,EACvE;;;IADuB,eAAyC;IAAzC,uEAAyC;;;IAOlE,gCAAyB;IACrB,YACJ;IAAA,iBAAO;;;;IADH,cACJ;IADI,6IACJ;;;IAJR,+BAAwB;IACpB,oIAIC;IACL,iBAAM;;;IALF,cAIC;IAJD,cAAA,qBAAc,CAIb;;AAtGzB;;;;;;;;;;;;;;;GAeG;AA4TH,MAAM,OAAO,8BAA8B;IAuDvC,YAAoB,GAAsB;QAAtB,QAAG,GAAH,GAAG,CAAmB;QAtDjC,SAAI,GAAyB,YAAY,CAAC;QAC1C,aAAQ,GAAsC,IAAI,CAAC,CAAC,sBAAsB;QAC1E,cAAS,GAAqC,EAAE,CAAC,CAAC,0BAA0B;QAC5E,eAAU,GAAY,IAAI,CAAC,CAAC,iCAAiC;QAC7D,UAAK,GAAkB,IAAI,CAAC,CAAC,kCAAkC;QAC/D,YAAO,GAAuB,OAAO,CAAC,CAAC,cAAc;QAEpD,iBAAY,GAAG,IAAI,YAAY,EAAkD,CAAC;QAK5F,6DAA6D;QAC7D,gBAAW,GAA0C,IAAI,CAAC;QAE1D,oDAAoD;QAC5C,qBAAgB,GAAG,IAAI,GAAG,EAAgD,CAAC;QAEnF,uEAAuE;QAC/D,mBAAc,GAAG,IAAI,GAAG,EAAmB,CAAC;QAC5C,0BAAqB,GAAG,IAAI,GAAG,EAAmB,CAAC;QAC3D,UAAK,GAAmB;YACpB,UAAU,EAAE,CAAC;YACb,cAAc,EAAE,CAAC;YACjB,WAAW,EAAE,CAAC;YACd,WAAW,EAAE,CAAC;YACd,SAAS,EAAE,CAAC;YACZ,WAAW,EAAE,EAAE;YACf,YAAY,EAAE,CAAC;SAClB,CAAC;QAEF,4BAA4B;QACpB,sBAAiB,GAAG,KAAK,CAAC;QAC1B,oBAAe,GAAG,KAAK,CAAC;QACxB,oBAAe,GAAG,KAAK,CAAC;QACxB,uBAAkB,GAAG,CAAC,CAAC;QACvB,oBAAe,GAAG,EAAE,CAAC,CAAC,6CAA6C;QAE3E,2BAA2B;QACnB,oBAAe,GAAG,KAAK,CAAC;QAEhC,gDAAgD;QACxC,qBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;QAE7C,qDAAqD;QAC7C,sBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;QAE9C,wCAAwC;QAChC,wBAAmB,GAAQ,IAAI,CAAC;QAChC,yBAAoB,GAAQ,IAAI,CAAC;QAEjC,aAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;IAGM,CAAC;IAE9C,WAAW,CAAC,OAAsB;QAC9B,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAAE;YAC7C,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;YACtC,gBAAgB,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;YACxC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;YAC9B,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ;YAC5B,cAAc,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC;SAC9C,CAAC,CAAC;QAEH,6CAA6C;QAC7C,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACpD,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC;YACjD,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC;YAEhD,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE;gBACjC,YAAY,EAAE,CAAC,CAAC,MAAM;gBACtB,YAAY,EAAE,CAAC,CAAC,MAAM;gBACtB,QAAQ,EAAE,MAAM,EAAE,EAAE;gBACpB,QAAQ,EAAE,MAAM,EAAE,EAAE;gBACpB,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;aACpC,CAAC,CAAC;YAEH,mEAAmE;YACnE,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC;gBACrB,CAAC,MAAM,IAAI,MAAM,IAAI,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;gBAC7C,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC;YAE/C,IAAI,oBAAoB,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;gBACpD,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;gBAC9B,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;gBAC/B,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;gBAC5B,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC;gBACnC,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YAC5B,CAAC;YAED,0EAA0E;YAC1E,IAAI,MAAM,EAAE,CAAC;gBACT,IAAI,CAAC,eAAe,EAAE,CAAC;YAC3B,CAAC;QACL,CAAC;QAED,wCAAwC;QACxC,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC/C,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC;YACpD,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC;YAEnD,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE;gBAClC,QAAQ,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;gBAC/B,QAAQ,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;aAClC,CAAC,CAAC;YAEH,qBAAqB;YACrB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC5B,CAAC;QAED,sBAAsB;QACtB,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAClD,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;YACnD,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC;YAEjD,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC;YAE/D,wCAAwC;YACxC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;YAC5B,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC;YACnC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YAExB,uDAAuD;YACvD,IAAI,YAAY,KAAK,MAAM,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACrD,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;gBACtC,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;YACxC,CAAC;YAED,gCAAgC;YAChC,IAAI,WAAW,KAAK,YAAY,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChD,IAAI,CAAC,eAAe,EAAE,CAAC;YAC3B,CAAC;iBAAM,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;gBAChC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC5B,CAAC;QACL,CAAC;IACL,CAAC;IAED,eAAe;QACX,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAE5B,OAAO,CAAC,GAAG,CAAC,iDAAiD,EAAE;YAC3D,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ;YAC5B,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC;YACxC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,uBAAuB;SAC/C,CAAC,CAAC;QAEH,oCAAoC;QACpC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACvB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC/B,CAAC;QAED,wDAAwD;QACxD,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAClF,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;YACtD,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3B,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;YACvD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC5B,CAAC;IACL,CAAC;IAED,WAAW;QACP,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;YACtC,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;QACxC,CAAC;QACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACK,mBAAmB;QACvB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC;QACzC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,eAAe;QACnB,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE;YACpC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ;YAC5B,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC;YAC7C,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,uBAAuB;SAC/C,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC3E,OAAO,CAAC,IAAI,CAAC,8BAA8B,EAAE;gBACzC,QAAQ,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;gBAChD,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;gBACpD,SAAS,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;aACnE,CAAC,CAAC;YACH,OAAO;QACX,CAAC;QAED,4BAA4B;QAC5B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,6BAA6B;QAC7B,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACjE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,yCAAyC,EAAE,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC9G,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC1C,CAAC;QAED,uBAAuB;QACvB,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,0DAA0D;QAC1D,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACK,gBAAgB;QACpB,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE;YACrC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC;YACvC,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,uBAAuB;SAC/C,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC5E,OAAO;QACX,CAAC;QAED,kDAAkD;QAClD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAExC,sDAAsD;QACtD,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAEzB,sDAAsD;QACtD,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC3B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC5B,CAAC;IACL,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,KAAuC,EAAE,KAAa,EAAE,SAAmB;QAC3F,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE;YAC/B,KAAK,EAAE,KAAK,CAAC,MAAM;YACnB,KAAK;YACL,SAAS;SACZ,CAAC,CAAC;QAEH,qDAAqD;QACrD,MAAM,WAAW,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC;QAEzF,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC7B,yCAAyC;YACzC,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBACrC,SAAS;YACb,CAAC;YAED,iCAAiC;YACjC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;YAEjD,oBAAoB;YACpB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEnC,6BAA6B;YAC7B,IAAI,IAAI,CAAC,QAAQ,KAAK,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC;gBAC3D,MAAM,YAAY,GAAG,CAAC,GAAG,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC;gBAC3E,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;YACtE,CAAC;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACK,mBAAmB,CACvB,IAAoC,EACpC,KAAa,EACb,SAAmB;QAEnB,0BAA0B;QAC1B,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAChC,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;YACzD,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAChF,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC;QAC1F,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;QAEvC,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE;YAC3C,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK;YACL,eAAe,EAAE,IAAI,CAAC,uBAAuB,CAAC,MAAM;YACpD,WAAW,EAAE,YAAY,CAAC,QAAQ,CAAC,aAAa;SACnD,CAAC,CAAC;QAEH,+CAA+C;QAC/C,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;QACvB,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;QAC/B,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC;QAC9D,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC;QAE5E,uBAAuB;QACvB,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;QACpE,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;QACrE,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAElE,kBAAkB;QAClB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QAEjD,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE;YAC/C,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI;YACxB,UAAU,EAAE,YAAY,CAAC,QAAQ,CAAC,SAAS,KAAK,KAAK;SACxD,CAAC,CAAC;QAEH,OAAO,YAAY,CAAC;IACxB,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,IAAoC;QAC5D,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC;QAC/D,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;QAChD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAE9B,uBAAuB;QACvB,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxD,IAAI,YAAY,EAAE,CAAC;YACf,YAAY,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,YAAY,CAAC;YAC/C,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;QACnD,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,IAAoC;QAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC;QACtE,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;QAEvD,uBAAuB;QACvB,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxD,IAAI,YAAY,EAAE,CAAC;YACf,YAAY,CAAC,QAAQ,CAAC,eAAe,GAAG,CAAC,YAAY,CAAC;YACtD,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;QACnD,CAAC;IACL,CAAC;IAGD;;OAEG;IACK,gBAAgB,CAAC,QAAgB;QACrC,MAAM,OAAO,GAA2B;YACpC,YAAY,EAAE,YAAY;YAC1B,QAAQ,EAAE,QAAQ;YAClB,SAAS,EAAE,QAAQ;YACnB,WAAW,EAAE,WAAW;YACxB,UAAU,EAAE,UAAU;YACtB,MAAM,EAAE,MAAM;SACjB,CAAC;QACF,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC;IACzC,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,MAAc;QACjC,MAAM,SAAS,GAA2B;YACtC,SAAS,EAAE,SAAS;YACpB,SAAS,EAAE,SAAS;YACpB,WAAW,EAAE,WAAW;YACxB,QAAQ,EAAE,QAAQ;YAClB,WAAW,EAAE,QAAQ;YACrB,QAAQ,EAAE,SAAS;SACtB,CAAC;QACF,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC;IAC1C,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,KAAU;QACnC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxC,OAAO,EAAE,CAAC;QACd,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,IAAS;QAC3B,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAE5B,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAElE,gDAAgD;YAChD,IAAI,MAAM,CAAC,UAAU;gBAAE,OAAO,WAAW,MAAM,CAAC,UAAU,EAAE,CAAC;YAC7D,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBACpB,qCAAqC;gBACrC,IAAI,CAAC,oBAAoB,GAAG;oBACxB,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,eAAe,EAAE,MAAM,CAAC,eAAe;iBAC1C,CAAC;gBACF,OAAO,WAAW,MAAM,CAAC,UAAU,EAAE,CAAC;YAC1C,CAAC;YACD,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBACtB,oCAAoC;gBACpC,IAAI,CAAC,mBAAmB,GAAG;oBACvB,SAAS,EAAE,MAAM,CAAC,YAAY;oBAC9B,OAAO,EAAE,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,OAAO;oBAC5C,cAAc,EAAE,MAAM,CAAC,iBAAiB,IAAI,MAAM,CAAC,cAAc;oBACjE,YAAY,EAAE,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,YAAY;iBAC9D,CAAC;gBACF,OAAO,cAAc,MAAM,CAAC,YAAY,EAAE,CAAC;YAC/C,CAAC;YACD,IAAI,MAAM,CAAC,OAAO;gBAAE,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACrE,IAAI,MAAM,CAAC,WAAW;gBAAE,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAE7E,8BAA8B;YAC9B,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBACtB,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;gBACnC,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;oBAC/B,OAAO,IAAI,YAAY,MAAM,CAAC,OAAO,IAAI,CAAC;gBAC9C,CAAC;gBACD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;oBACpB,OAAO,IAAI,gBAAgB,MAAM,CAAC,UAAU,IAAI,CAAC;gBACrD,CAAC;gBACD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACjB,OAAO,IAAI,YAAY,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;gBACzE,CAAC;gBACD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBAChB,OAAO,IAAI,WAAW,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACvH,CAAC;gBACD,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;YAC1B,CAAC;YAED,8BAA8B;YAC9B,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACpD,CAAC;YAED,sBAAsB;YACtB,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBACtB,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;gBACnC,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;oBAC/B,OAAO,IAAI,YAAY,MAAM,CAAC,OAAO,IAAI,CAAC;gBAC9C,CAAC;gBACD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACjB,OAAO,IAAI,YAAY,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvE,CAAC;gBACD,OAAO,OAAO,CAAC;YACnB,CAAC;YAED,kCAAkC;YAClC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC5C,OAAO,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;QAClE,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAClE,CAAC;IACL,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,IAAS;QAC3B,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAC5B,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAClE,OAAO,MAAM,CAAC,YAAY,EAAE,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC;QAChE,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,IAAS;QACzB,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAC5B,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAClE,OAAO,MAAM,CAAC,YAAY,EAAE,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC;QAC9D,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,KAAU,EAAE,GAAQ;QAC1C,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG;YAAE,OAAO,SAAS,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;QACxC,OAAO,OAAO,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED;;OAEG;IACK,gBAAgB;QACpB,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QAEzC,oCAAoC;QACpC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5C,CAAC;QAED,+DAA+D;QAC/D,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACnD,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC,GAAG,CAAC;iBAClC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAC9B,SAAS,CAAC,GAAG,EAAE;gBACZ,gCAAgC;gBAChC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAEzB,iCAAiC;gBACjC,IAAI,CAAC,cAAc,EAAE,CAAC;YAC1B,CAAC,CAAC,CAAC;QACX,CAAC;IACL,CAAC;IAED;;OAEG;IACK,iBAAiB;QACrB,2DAA2D;QAC3D,IAAI,WAAW,GAA0C,IAAI,CAAC;QAE9D,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE;YACnD,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;YACxC,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,WAAW,EAAE,CAAC;gBACpD,WAAW,GAAG,IAAI,CAAC;YACvB,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACK,gCAAgC;QACpC,qEAAqE;QACrE,qDAAqD;QACrD,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE;YACnD,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;YACxC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC5B,oCAAoC;gBACpC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;gBACrE,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,WAAW,CAAC;gBACzC,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;YACnD,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACK,2BAA2B;QAC/B,oCAAoC;QACpC,IAAI,eAAe,GAAsG,IAAI,CAAC;QAE9H,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE;YACnD,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;YACxC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;gBACxC,IAAI,CAAC,eAAe,IAAI,UAAU,GAAG,eAAe,CAAC,UAAU,EAAE,CAAC;oBAC9D,eAAe,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;gBAC3D,CAAC;YACL,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,oDAAoD;QACpD,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE;YACnD,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;YACxC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC5B,iEAAiE;gBACjE,IAAI,eAAe,IAAI,MAAM,KAAK,eAAe,CAAC,MAAM,EAAE,CAAC;oBACvD,YAAY,CAAC,QAAQ,CAAC,qBAAqB,GAAG,SAAS,CAAC;gBAC5D,CAAC;qBAAM,CAAC;oBACJ,YAAY,CAAC,QAAQ,CAAC,qBAAqB,GAAG,WAAW,CAAC;gBAC9D,CAAC;gBACD,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;YACnD,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD;;OAEG;IACK,cAAc;QAClB,IAAI,CAAC,KAAK,GAAG;YACT,UAAU,EAAE,CAAC;YACb,cAAc,EAAE,CAAC;YACjB,WAAW,EAAE,CAAC;YACd,WAAW,EAAE,CAAC;YACd,SAAS,EAAE,CAAC;YACZ,WAAW,EAAE,EAAE;YACf,aAAa,EAAE,CAAC;YAChB,YAAY,EAAE,CAAC;SAClB,CAAC;QAEF,6CAA6C;QAC7C,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,IAAI,CAAC,CAAC;YAC5D,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,CAAC,CAAC;YAEpD,qBAAqB;YACrB,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;gBACvD,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE;oBAC9C,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;YAC1E,CAAC;YAED,0BAA0B;YAC1B,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACzC,CAAC;QACL,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE;YAChC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU;YACjC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW;YACnC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;SAClC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,KAAuC;QACtD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YAExB,uCAAuC;YACvC,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAErF,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW;gBAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAC7D,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW;gBAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAEtF,gBAAgB;YAChB,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC7B,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;YAC9B,CAAC;YAED,yBAAyB;YACzB,IAAI,IAAI,CAAC,QAAQ,KAAK,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC;gBAC3D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC5C,CAAC;QACL,CAAC;IACL,CAAC;IAID;;OAEG;IACH,QAAQ,CAAC,KAAY;QACjB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,mDAAmD;YACnD,OAAO;QACX,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,MAAwB,CAAC;QAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAEpD,4DAA4D;QAC5D,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,kBAAkB,KAAK,OAAO,CAAC,SAAS,EAAE,CAAC;YAC/D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAClC,CAAC;QAED,2DAA2D;QAC3D,IAAI,UAAU,EAAE,CAAC;YACb,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QACnC,CAAC;QAED,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,SAAS,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,iBAAiB;QACb,iEAAiE;QACjE,6EAA6E;IACjF,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,OAAoB;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC;QACvC,OAAO,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IACvF,CAAC;IAED;;OAEG;IACK,mBAAmB;QACvB,IAAI,CAAC,IAAI,CAAC,sBAAsB;YAAE,OAAO;QAEzC,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC;QAC1D,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QACjC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,kBAAkB;QACtB,IAAI,CAAC,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACjF,OAAO;QACX,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC;QAC1D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAE5B,qCAAqC;QACrC,OAAO,CAAC,QAAQ,CAAC;YACb,GAAG,EAAE,OAAO,CAAC,YAAY;YACzB,QAAQ,EAAE,QAAQ;SACrB,CAAC,CAAC;QAEH,4CAA4C;QAC5C,UAAU,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QACjC,CAAC,EAAE,GAAG,CAAC,CAAC;IACZ,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,IAAc;QAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,EAAU;QACrB,IAAI,EAAE,GAAG,IAAI;YAAE,OAAO,GAAG,EAAE,IAAI,CAAC;QAChC,IAAI,EAAE,GAAG,KAAK;YAAE,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QAChD,OAAO,GAAG,OAAO,KAAK,OAAO,GAAG,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,YAAY;QACR,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,IAAY,EAAE,KAAa;QACzC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,uBAAuB;QACvB,QAAQ,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACzB,KAAK,UAAU;gBACX,OAAO,UAAU,CAAC;YACtB,KAAK,SAAS;gBACV,OAAO,WAAW,CAAC;YACvB;gBACI,uCAAuC;gBACvC,OAAO,IAAI,GAAG,GAAG,CAAC;QAC1B,CAAC;IACL,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,QAAgB;QAC3B,4BAA4B;QAC5B,oFAAoF;QACpF,IAAI,IAAI,GAAG,QAAQ,CAAC;QAEpB,UAAU;QACV,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;QACpD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;QACnD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;QAElD,OAAO;QACP,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,qBAAqB,CAAC,CAAC;QAE5D,SAAS;QACT,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QAEhD,0BAA0B;QAC1B,mEAAmE;QACnE,MAAM,QAAQ,GAAG,gCAAgC,CAAC;QAClD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;YAClC,gCAAgC;YAChC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,GAAG,EAAE,CAAC;YAC7D,iCAAiC;YACjC,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;YACxE,OAAO,YAAY,IAAI,uHAAuH,UAAU,MAAM,CAAC;QACnK,CAAC,CAAC,CAAC;QAEH,cAAc;QACd,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAEnC,QAAQ;QACR,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;QACnD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;QAEtD,cAAc;QACd,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,4BAA4B,CAAC,CAAC;QAEnE,cAAc;QACd,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;QAErD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,QAA0C;QACjE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/F,OAAO;QACX,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAE3D,2BAA2B;QAC3B,MAAM,WAAW,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC;QAE5F,yCAAyC;QACzC,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,gCAAgC,EAAE,CAAC;YACxC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QACnC,CAAC;QAED,IAAI,WAAW,GAAG,KAAK,CAAC;QAExB,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC7B,4BAA4B;YAC5B,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBACrC,yCAAyC;gBACzC,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACxD,IAAI,YAAY,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;oBACpE,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;oBAClC,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;gBACnD,CAAC;gBACD,SAAS;YACb,CAAC;YAED,oCAAoC;YACpC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpC,WAAW,GAAG,IAAI,CAAC;YAEnB,4CAA4C;YAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAE5C,gCAAgC;YAChC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;YAEjD,qCAAqC;YACrC,IAAI,IAAI,CAAC,QAAQ,KAAK,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC;gBAC3D,MAAM,YAAY,GAAG,CAAC,GAAG,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC;gBAC3E,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;YACtE,CAAC;QACL,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YACd,4EAA4E;YAC5E,IAAI,CAAC,2BAA2B,EAAE,CAAC;YAEnC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,cAAc,EAAE,CAAC;YAEtB,+DAA+D;YAC/D,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;YAEzB,wCAAwC;YACxC,UAAU,CAAC,GAAG,EAAE;gBACZ,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC9B,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,CAAC;IACL,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,IAAoC;QAC3D,wCAAwC;QACxC,sEAAsE;QACtE,OAAO,CAAC,CAAC;IACb,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,IAAoC;QACvD,2DAA2D;QAC3D,8BAA8B;QAC9B,OAAO,EAAE,CAAC;IACd,CAAC;IAGD;;OAEG;IACH,mBAAmB;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,cAAc,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;IACxF,CAAC;IAED;;OAEG;IACH,cAAc;QACV,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1E,CAAC;IACL,CAAC;IAGD;;OAEG;IACK,cAAc;QAClB,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QAEvD,4CAA4C;QAC5C,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE;YACnD,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;YACxC,IAAI,IAAI,CAAC,QAAQ,KAAK,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;gBACnE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACtC,YAAY,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACtC,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;gBAC/C,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YACxD,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,2BAA2B;QAC3B,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QACxB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAEzB,gCAAgC;QAChC,UAAU,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC,EAAE,GAAG,CAAC,CAAC;IACZ,CAAC;IAED;;OAEG;IACK,WAAW;QACf,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC;YAC1D,OAAO,CAAC,QAAQ,CAAC;gBACb,GAAG,EAAE,CAAC;gBACN,QAAQ,EAAE,QAAQ;aACrB,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED;;OAEG;IACH,UAAU;QACN,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,CAAC,CAAC;IAC1C,CAAC;+HAh/BQ,8BAA8B;oEAA9B,8BAA8B;2CAWO,gBAAgB;;;;;;;YA9TlD,AADJ,AAFJ,8BAAmE,aAEnC,aACE;YACtB,uBAA2C;YAC3C,4BAAM;YAAA,iCAAiB;YAAA,iBAAO;YAC9B,iGAAuB;YAM3B,iBAAM;YACN,gGAAsC;YAMtC,mGAAkE;YAMtE,iBAAM;YAGN,iCAImC;YAA9B,AADA,sJAAU,oBAAgB,KAAC,iIAClB,uBAAmB,KAAC;YAE9B,8BACM;YACN,mGAA2C;YAM/C,iBAAM;YAMM,AADJ,AADJ,AADJ,gCAA4B,eACA,eACG,gBACM;YAAA,sBAAK;YAAA,iBAAO;YACrC,iCAAyB;YACrB,aACA;YAAA,oGAA6B;YAIrC,AADI,iBAAO,EACL;YAEF,AADJ,gCAAuB,gBACM;YAAA,wBAAO;YAAA,iBAAO;YACvC,iCAAyB;YAAA,aAAwB;YACrD,AADqD,iBAAO,EACtD;YAEF,AADJ,gCAAuB,gBACM;YAAA,uBAAM;YAAA,iBAAO;YACtC,iCAAyB;YAAA,aAAwC;YACrE,AADqE,iBAAO,EACtE;YAEF,AADJ,gCAAuB,gBACM;YAAA,qBAAI;YAAA,iBAAO;YACpC,iCAAyB;YAAA,aAAkC;YAC/D,AAD+D,iBAAO,EAChE;YACN,mGAA2B;YAM/B,iBAAM;YACN,mGAAiC;YAUzC,AADI,iBAAM,EACJ;;YArFyB,gDAAmC;YAMtD,eAKC;YALD,8CAKC;YAEL,cAKC;YALD,iEAKC;YACD,cAKC;YALD,iGAKC;YAMA,cAAkC;YAAlC,+CAAkC;YAMnC,eAKC;YALD,uEAKC;YASW,eACA;YADA,oFACA;YAAA,cAEC;YAFD,qDAEC;YAKoB,eAAwB;YAAxB,4CAAwB;YAIxB,eAAwC;YAAxC,4DAAwC;YAIxC,eAAkC;YAAlC,0DAAkC;YAE/D,cAKC;YALD,mDAKC;YAEL,cAQC;YARD,yDAQC;;;iFAmOJ,8BAA8B;cA3T1C,SAAS;6BACI,KAAK,YACL,4BAA4B,mBACrB,uBAAuB,CAAC,MAAM,YACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAuFT;;kBAiOA,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBAEL,MAAM;;kBAEN,SAAS;mBAAC,wBAAwB;;kBAClC,SAAS;mBAAC,yBAAyB,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;;kFAXvD,8BAA8B","sourcesContent":["import { Component, Input, OnChanges, SimpleChanges, OnDestroy, ViewChild, ElementRef, AfterViewInit, ChangeDetectorRef, ChangeDetectionStrategy, ViewContainerRef, ComponentRef, Output, EventEmitter } from '@angular/core';\nimport { Subject, interval, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { ExecutionNodeComponent } from './agent-execution-node.component';\nimport { MJAIAgentRunEntityExtended, MJAIAgentRunStepEntityExtended } from '@memberjunction/ai-core-plus';\n\n/**\n * Progress message with display mode\n */\nexport interface ProgressMessage {\n id: string;\n message: string;\n timestamp: Date;\n displayMode: 'live' | 'historical' | 'both';\n metadata?: Record<string, unknown>;\n}\n\n/**\n * Mode for the execution monitor component\n */\nexport type ExecutionMonitorMode = 'live' | 'historical';\n\n/**\n * Execution statistics for display\n */\nexport interface ExecutionStats {\n totalSteps: number;\n completedSteps: number;\n failedSteps: number;\n totalTokens: number;\n totalCost: number;\n stepsByType: Record<string, number>;\n totalDuration?: number;\n totalPrompts: number;\n}\n\n/**\n * AgentExecutionMonitor Component\n * \n * A reusable component for visualizing AI agent execution flow in real-time or historically.\n * Displays a hierarchical tree of execution steps with status, timing, and preview information.\n * \n * Features:\n * - Real-time updates for live executions\n * - Historical playback for completed executions\n * - Collapsible tree structure\n * - Step status indicators with animations\n * - Execution statistics\n * - Token usage and cost tracking\n * - Error display\n * - Input/output preview\n */\n@Component({\n standalone: false,\n selector: 'mj-agent-execution-monitor',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"execution-monitor\" [class.live-mode]=\"mode === 'live'\">\n <!-- Header -->\n <div class=\"monitor-header\">\n <div class=\"header-title\">\n <i class=\"fa-solid fa-diagram-project\"></i>\n <span>Execution Monitor</span>\n @if (mode === 'live') {\n <span class=\"live-indicator\">\n <span class=\"pulse\"></span>\n LIVE\n </span>\n }\n </div>\n @if (currentStep && mode === 'live') {\n <div class=\"current-status\">\n <span class=\"status-label\">Current:</span>\n <span class=\"step-name\">{{ currentStep.StepName }}</span>\n </div>\n }\n @if (mode === 'historical' && agentRun && isExecutionComplete()) {\n <button class=\"view-run-btn\" (click)=\"onViewRunClick()\">\n <i class=\"fa-solid fa-external-link-alt\"></i>\n View {{ runType === 'agent' ? 'Agent' : 'Prompt' }} Run\n </button>\n }\n </div>\n\n <!-- Execution Tree -->\n <div class=\"execution-tree\" \n #executionTreeContainer\n [class.has-content]=\"hasContent()\"\n (scroll)=\"onScroll($event)\"\n (click)=\"onUserInteraction()\">\n <!-- Always render the container, but show empty state when no data -->\n <div #executionNodesContainer class=\"nodes-container\">\n </div>\n @if (!agentRun && liveSteps.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-hourglass-start\"></i>\n <p>Waiting for execution to begin...</p>\n </div>\n }\n </div>\n\n <!-- Statistics Footer -->\n <div class=\"monitor-footer\">\n <div class=\"stats-grid\">\n <div class=\"stat-item\">\n <span class=\"stat-label\">Steps</span>\n <span class=\"stat-value\">\n {{ stats.completedSteps }}/{{ stats.totalSteps }}\n @if (stats.failedSteps > 0) {\n <span class=\"failed-count\">({{ stats.failedSteps }} failed)</span>\n }\n </span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-label\">Prompts</span>\n <span class=\"stat-value\">{{ stats.totalPrompts }}</span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-label\">Tokens</span>\n <span class=\"stat-value\">{{ stats.totalTokens.toLocaleString() }}</span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-label\">Cost</span>\n <span class=\"stat-value\">\\${{ stats.totalCost.toFixed(4) }}</span>\n </div>\n @if (stats.totalDuration) {\n <div class=\"stat-item\">\n <span class=\"stat-label\">Duration</span>\n <span class=\"stat-value\">{{ formatDuration(stats.totalDuration) }}</span>\n </div>\n }\n </div>\n @if (getStepTypes().length > 0) {\n <div class=\"step-types\">\n @for (type of getStepTypes(); track type) {\n <span class=\"type-badge\">\n {{ stats.stepsByType[type] }} {{ pluralizeStepType(type, stats.stepsByType[type]) }}\n </span>\n }\n </div>\n }\n </div>\n </div>\n `,\n styles: [`\n :host {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n }\n \n .execution-monitor {\n display: flex;\n flex-direction: column;\n flex: 1;\n background: #fff;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n overflow: hidden;\n }\n\n /* Header */\n .monitor-header {\n padding: 16px;\n background: #f8f9fa;\n border-bottom: 1px solid #e0e0e0;\n }\n\n .header-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 16px;\n font-weight: 600;\n color: #1a1a1a;\n margin-bottom: 8px;\n }\n\n .header-title i {\n color: #2196f3;\n }\n\n .live-indicator {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 8px;\n background: #ff4444;\n color: white;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n letter-spacing: 0.5px;\n }\n\n .pulse {\n display: inline-block;\n width: 8px;\n height: 8px;\n background: white;\n border-radius: 50%;\n animation: pulse 2s infinite;\n }\n\n @keyframes pulse {\n 0% { opacity: 1; transform: scale(1); }\n 50% { opacity: 0.5; transform: scale(0.8); }\n 100% { opacity: 1; transform: scale(1); }\n }\n\n .current-status {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: #666;\n }\n\n .status-label {\n font-weight: 500;\n }\n\n .agent-path {\n color: #999;\n }\n\n .step-name {\n color: #1a1a1a;\n font-weight: 500;\n }\n\n /* Execution Tree */\n .execution-tree {\n flex: 1;\n overflow-y: auto;\n overflow-x: auto;\n padding: 16px;\n min-height: 0;\n }\n \n .nodes-container {\n /* No extra padding needed, indentation handled by node margins */\n }\n\n .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n color: #999;\n text-align: center;\n }\n\n .empty-state i {\n font-size: 48px;\n margin-bottom: 16px;\n opacity: 0.5;\n }\n\n .empty-state p {\n margin: 0;\n font-size: 14px;\n }\n\n /* Tree Nodes - These styles are for reference only, actual rendering is done by ExecutionNodeComponent */\n .tree-node {\n margin-bottom: 4px;\n }\n\n /* Footer */\n .monitor-footer {\n padding: 16px;\n background: #f8f9fa;\n border-top: 1px solid #e0e0e0;\n }\n\n .stats-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));\n gap: 16px;\n margin-bottom: 12px;\n }\n\n .stat-item {\n text-align: center;\n }\n\n .stat-label {\n display: block;\n font-size: 11px;\n color: #666;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 4px;\n }\n\n .stat-value {\n display: block;\n font-size: 16px;\n font-weight: 600;\n color: #1a1a1a;\n }\n\n .failed-count {\n color: #f44336;\n font-size: 12px;\n font-weight: normal;\n }\n\n .step-types {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n justify-content: center;\n }\n\n .type-badge {\n display: inline-block;\n padding: 4px 8px;\n background: #e3f2fd;\n color: #1976d2;\n border-radius: 4px;\n font-size: 12px;\n font-weight: 500;\n }\n \n /* View Run Button */\n .view-run-btn {\n background: #2196f3;\n color: white;\n border: none;\n padding: 6px 12px;\n border-radius: 4px;\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n transition: all 0.2s ease;\n margin-left: auto;\n }\n \n .view-run-btn:hover {\n background: #1976d2;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0,0,0,0.2);\n }\n \n .view-run-btn i {\n font-size: 12px;\n }\n\n /* Responsive */\n @media (max-width: 768px) {\n .monitor-header {\n padding: 12px;\n }\n\n .execution-tree {\n padding: 12px;\n }\n }\n `]\n})\nexport class AgentExecutionMonitorComponent implements OnChanges, OnDestroy, AfterViewInit {\n @Input() mode: ExecutionMonitorMode = 'historical';\n @Input() agentRun: MJAIAgentRunEntityExtended | null = null; // For historical mode\n @Input() liveSteps: MJAIAgentRunStepEntityExtended[] = []; // For live mode streaming\n @Input() autoExpand: boolean = true; // Auto-expand nodes in live mode\n @Input() runId: string | null = null; // ID of the run (agent or prompt)\n @Input() runType: 'agent' | 'prompt' = 'agent'; // Type of run\n \n @Output() viewRunClick = new EventEmitter<{ runId: string; runType: 'agent' | 'prompt' }>();\n \n @ViewChild('executionTreeContainer') executionTreeContainer!: ElementRef<HTMLDivElement>;\n @ViewChild('executionNodesContainer', { read: ViewContainerRef }) executionNodesContainer!: ViewContainerRef;\n \n // Store the currently rendered steps for UI state management\n currentStep: MJAIAgentRunStepEntityExtended | null = null;\n \n // Track component references for dynamic components\n private nodeComponentMap = new Map<string, ComponentRef<ExecutionNodeComponent>>();\n \n // UI state management - track expanded states separately from entities\n private expandedStates = new Map<string, boolean>();\n private detailsExpandedStates = new Map<string, boolean>();\n stats: ExecutionStats = {\n totalSteps: 0,\n completedSteps: 0,\n failedSteps: 0,\n totalTokens: 0,\n totalCost: 0,\n stepsByType: {},\n totalPrompts: 0\n };\n \n // User interaction tracking\n private userHasInteracted = false;\n private userHasScrolled = false;\n private isAutoScrolling = false;\n private lastScrollPosition = 0;\n private scrollThreshold = 50; // pixels from bottom to consider \"at bottom\"\n \n // View initialization flag\n private viewInitialized = false;\n \n // Track processed step IDs to avoid duplication\n private processedStepIds = new Set<string>();\n \n // Track which nodes were added in the current update\n private newlyAddedNodeIds = new Set<string>();\n \n // Temporary storage for parsed metadata\n private lastParsedAgentData: any = null;\n private lastParsedActionData: any = null;\n \n private destroy$ = new Subject<void>();\n private updateSubscription?: Subscription;\n \n constructor(private cdr: ChangeDetectorRef) {}\n \n ngOnChanges(changes: SimpleChanges): void {\n console.log('🔄 Execution Monitor ngOnChanges:', {\n agentRunChanged: !!changes['agentRun'],\n liveStepsChanged: !!changes['liveSteps'],\n modeChanged: !!changes['mode'],\n hasAgentRun: !!this.agentRun,\n liveStepsCount: this.liveSteps?.length || 0\n });\n \n // Handle agent run changes (historical mode)\n if (changes['agentRun'] && this.mode === 'historical') {\n const oldRun = changes['agentRun'].previousValue;\n const newRun = changes['agentRun'].currentValue;\n \n console.log('📊 Agent run changed:', {\n oldRunExists: !!oldRun,\n newRunExists: !!newRun,\n oldRunId: oldRun?.ID,\n newRunId: newRun?.ID,\n stepsCount: newRun?.Steps?.length\n });\n \n // Only clear if it's actually a different execution (different ID)\n const isDifferentExecution = (!oldRun && newRun) || \n (oldRun && newRun && oldRun.ID !== newRun.ID) ||\n (oldRun && !newRun);\n \n if (isDifferentExecution) {\n console.log('🗑️ Clearing for different agent run');\n this.processedStepIds.clear();\n this.newlyAddedNodeIds.clear();\n this.expandedStates.clear();\n this.detailsExpandedStates.clear();\n this.clearNodeComponents();\n this.currentStep = null;\n }\n \n // Always process the agent run data (will handle updates to existing run)\n if (newRun) {\n this.processAgentRun();\n }\n }\n \n // Handle live steps changes (live mode)\n if (changes['liveSteps'] && this.mode === 'live') {\n const oldSteps = changes['liveSteps'].previousValue;\n const newSteps = changes['liveSteps'].currentValue;\n \n console.log('📊 Live steps changed:', {\n oldCount: oldSteps?.length || 0,\n newCount: newSteps?.length || 0\n });\n \n // Process live steps\n this.processLiveSteps();\n }\n \n // Handle mode changes\n if (changes['mode'] && !changes['mode'].firstChange) {\n const previousMode = changes['mode'].previousValue;\n const currentMode = changes['mode'].currentValue;\n \n console.log('🔄 Mode changed:', { previousMode, currentMode });\n \n // Clear everything when switching modes\n this.processedStepIds.clear();\n this.newlyAddedNodeIds.clear();\n this.expandedStates.clear();\n this.detailsExpandedStates.clear();\n this.clearNodeComponents();\n this.currentStep = null;\n \n // Stop live updates when switching away from live mode\n if (previousMode === 'live' && this.updateSubscription) {\n this.updateSubscription.unsubscribe();\n this.updateSubscription = undefined;\n }\n \n // Process data for the new mode\n if (currentMode === 'historical' && this.agentRun) {\n this.processAgentRun();\n } else if (currentMode === 'live') {\n this.setupLiveUpdates();\n }\n }\n }\n \n ngAfterViewInit(): void {\n this.viewInitialized = true;\n \n console.log('🎯 View initialized, checking for pending data:', {\n hasAgentRun: !!this.agentRun,\n hasLiveSteps: this.liveSteps?.length > 0,\n hasContainer: !!this.executionNodesContainer\n });\n \n // Initial setup for scroll behavior\n if (this.mode === 'live') {\n this.checkIfUserAtBottom();\n }\n \n // If we have data waiting to be rendered, render it now\n if (this.mode === 'historical' && this.agentRun && this.nodeComponentMap.size === 0) {\n console.log('⚡ Processing agent run after view init');\n this.processAgentRun();\n } else if (this.mode === 'live' && this.liveSteps?.length > 0) {\n console.log('⚡ Processing live steps after view init');\n this.processLiveSteps();\n }\n }\n \n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n if (this.updateSubscription) {\n this.updateSubscription.unsubscribe();\n this.updateSubscription = undefined;\n }\n this.clearNodeComponents();\n }\n \n /**\n * Clear all dynamically created components\n */\n private clearNodeComponents(): void {\n this.nodeComponentMap.forEach(ref => ref.destroy());\n this.nodeComponentMap.clear();\n if (this.executionNodesContainer) {\n this.executionNodesContainer.clear();\n }\n }\n \n /**\n * Process agent run for historical mode\n */\n private processAgentRun(): void {\n console.log('⚙️ Processing agent run:', {\n hasAgentRun: !!this.agentRun,\n stepsCount: this.agentRun?.Steps?.length || 0,\n viewInitialized: this.viewInitialized,\n hasContainer: !!this.executionNodesContainer\n });\n \n if (!this.agentRun || !this.viewInitialized || !this.executionNodesContainer) {\n console.warn('⚠️ Cannot process agent run:', {\n agentRun: !this.agentRun ? 'missing' : 'present',\n viewInitialized: this.viewInitialized ? 'yes' : 'no',\n container: !this.executionNodesContainer ? 'missing' : 'present'\n });\n return;\n }\n \n // Clear existing components\n this.clearNodeComponents();\n \n // Render the agent run steps\n if (this.agentRun.Steps && this.agentRun.Steps.length > 0) {\n console.log('🎨 Rendering', this.agentRun.Steps.length, 'steps');\n this.renderSteps(this.agentRun.Steps, 0, []);\n console.log('✅ Finished rendering, container now has', this.executionNodesContainer.length, 'components');\n } else {\n console.warn('⚠️ No steps to render');\n }\n \n // Calculate statistics\n this.calculateStats();\n \n // Trigger change detection after rendering all components\n this.cdr.detectChanges();\n }\n \n /**\n * Process live steps for live mode\n */\n private processLiveSteps(): void {\n console.log('⚙️ Processing live steps:', {\n stepsCount: this.liveSteps?.length || 0,\n viewInitialized: this.viewInitialized,\n hasContainer: !!this.executionNodesContainer\n });\n \n if (!this.liveSteps || !this.viewInitialized || !this.executionNodesContainer) {\n return;\n }\n \n // Append new steps without clearing existing ones\n this.appendNewLiveSteps(this.liveSteps);\n \n // Trigger change detection after appending live steps\n this.cdr.detectChanges();\n \n // Set up live update monitoring if not already set up\n if (!this.updateSubscription) {\n this.setupLiveUpdates();\n }\n }\n \n /**\n * Render steps recursively with proper hierarchy\n */\n private renderSteps(steps: MJAIAgentRunStepEntityExtended[], depth: number, agentPath: string[]): void {\n console.log('🎨 Rendering steps:', {\n count: steps.length,\n depth,\n agentPath\n });\n \n // Sort steps by StepNumber to ensure proper ordering\n const sortedSteps = [...steps].sort((a, b) => (a.StepNumber || 0) - (b.StepNumber || 0));\n \n for (const step of sortedSteps) {\n // Skip if already processed in live mode\n if (this.processedStepIds.has(step.ID)) {\n continue;\n }\n \n // Create component for this step\n this.createStepComponent(step, depth, agentPath);\n \n // Mark as processed\n this.processedStepIds.add(step.ID);\n \n // Handle sub-agent recursion\n if (step.StepType === 'Sub-Agent' && step.SubAgentRun?.Steps) {\n const subAgentPath = [...agentPath, step.SubAgentRun.Agent || 'Sub-Agent'];\n this.renderSteps(step.SubAgentRun.Steps, depth + 1, subAgentPath);\n }\n }\n }\n \n /**\n * Create a component for a step\n */\n private createStepComponent(\n step: MJAIAgentRunStepEntityExtended, \n depth: number, \n agentPath: string[]\n ): ComponentRef<ExecutionNodeComponent> {\n // Ensure container exists\n if (!this.executionNodesContainer) {\n console.error('❌ executionNodesContainer not available');\n throw new Error('executionNodesContainer ViewContainerRef not initialized');\n }\n \n const componentRef = this.executionNodesContainer.createComponent(ExecutionNodeComponent);\n const instance = componentRef.instance;\n \n console.log('🔨 Creating component for step:', {\n stepId: step.ID,\n stepName: step.StepName,\n depth,\n containerLength: this.executionNodesContainer.length,\n hostElement: componentRef.location.nativeElement\n });\n \n // Pass the step data with UI state information\n instance.step = step;\n instance.depth = depth;\n instance.agentPath = agentPath;\n instance.expanded = this.expandedStates.get(step.ID) || false;\n instance.detailsExpanded = this.detailsExpandedStates.get(step.ID) || false;\n \n // Subscribe to outputs\n instance.toggleNode.subscribe(() => this.toggleStepExpansion(step));\n instance.toggleDetails.subscribe(() => this.toggleStepDetails(step));\n instance.userInteracted.subscribe(() => this.onUserInteraction());\n \n // Store reference\n this.nodeComponentMap.set(step.ID, componentRef);\n \n // Log the component state after setup\n console.log('✅ Component created and configured:', {\n stepId: step.ID,\n hasData: !!instance.step,\n isAttached: componentRef.hostView.destroyed === false\n });\n \n return componentRef;\n }\n \n /**\n * Toggle step expansion\n */\n private toggleStepExpansion(step: MJAIAgentRunStepEntityExtended): void {\n const currentState = this.expandedStates.get(step.ID) || false;\n this.expandedStates.set(step.ID, !currentState);\n this.userHasInteracted = true;\n \n // Update the component\n const componentRef = this.nodeComponentMap.get(step.ID);\n if (componentRef) {\n componentRef.instance.expanded = !currentState;\n componentRef.changeDetectorRef.detectChanges();\n }\n \n this.cdr.markForCheck();\n }\n \n /**\n * Toggle step details expansion\n */\n private toggleStepDetails(step: MJAIAgentRunStepEntityExtended): void {\n const currentState = this.detailsExpandedStates.get(step.ID) || false;\n this.detailsExpandedStates.set(step.ID, !currentState);\n \n // Update the component\n const componentRef = this.nodeComponentMap.get(step.ID);\n if (componentRef) {\n componentRef.instance.detailsExpanded = !currentState;\n componentRef.changeDetectorRef.detectChanges();\n }\n }\n \n \n /**\n * Get step type CSS class for styling\n */\n private getStepTypeClass(stepType: string): string {\n const typeMap: Record<string, string> = {\n 'Validation': 'validation',\n 'Prompt': 'prompt',\n 'Actions': 'action',\n 'Sub-Agent': 'sub-agent',\n 'Decision': 'decision',\n 'Chat': 'chat'\n };\n return typeMap[stepType] || 'prompt';\n }\n \n /**\n * Get status CSS class for styling\n */\n private getStatusClass(status: string): string {\n const statusMap: Record<string, string> = {\n 'Pending': 'pending',\n 'Running': 'running',\n 'Completed': 'completed',\n 'Failed': 'failed',\n 'Cancelled': 'failed',\n 'Paused': 'pending'\n };\n return statusMap[status] || 'pending';\n }\n \n /**\n * Helper function to safely convert a value to a preview string\n */\n private valueToPreviewString(value: any): string {\n if (value === null || value === undefined) {\n return '';\n }\n if (typeof value === 'object') {\n return JSON.stringify(value, null, 2);\n }\n return String(value);\n }\n\n /**\n * Create a preview string from data\n */\n private createPreview(data: any): string | undefined {\n if (!data) return undefined;\n \n try {\n const parsed = typeof data === 'string' ? JSON.parse(data) : data;\n \n // Extract meaningful preview and store metadata\n if (parsed.promptName) return `Prompt: ${parsed.promptName}`;\n if (parsed.actionName) {\n // Store action metadata if available\n this.lastParsedActionData = {\n actionName: parsed.actionName,\n actionId: parsed.actionId,\n actionIconClass: parsed.actionIconClass\n };\n return `Action: ${parsed.actionName}`;\n }\n if (parsed.subAgentName) {\n // Store agent metadata if available\n this.lastParsedAgentData = {\n agentName: parsed.subAgentName,\n agentId: parsed.subAgentId || parsed.agentId,\n agentIconClass: parsed.subAgentIconClass || parsed.agentIconClass,\n agentLogoURL: parsed.subAgentLogoURL || parsed.agentLogoURL\n };\n return `Sub-agent: ${parsed.subAgentName}`;\n }\n if (parsed.message) return this.valueToPreviewString(parsed.message);\n if (parsed.userMessage) return this.valueToPreviewString(parsed.userMessage);\n \n // Show action results clearly\n if (parsed.actionResult) {\n const result = parsed.actionResult;\n let preview = '';\n if (result.success !== undefined) {\n preview += `Success: ${result.success}\\n`;\n }\n if (result.resultCode) {\n preview += `Result Code: ${result.resultCode}\\n`;\n }\n if (result.message) {\n preview += `Message: ${this.valueToPreviewString(result.message)}\\n`;\n }\n if (result.result) {\n preview += `Result: ${typeof result.result === 'object' ? JSON.stringify(result.result, null, 2) : result.result}`;\n }\n return preview.trim();\n }\n \n // Legacy action result format\n if (parsed.result) {\n return this.valueToPreviewString(parsed.result);\n }\n \n // Show prompt results\n if (parsed.promptResult) {\n const result = parsed.promptResult;\n let preview = '';\n if (result.success !== undefined) {\n preview += `Success: ${result.success}\\n`;\n }\n if (result.content) {\n preview += `Content: ${this.valueToPreviewString(result.content)}`;\n }\n return preview;\n }\n \n // Fallback to stringified preview\n const str = JSON.stringify(parsed, null, 2);\n return str.length > 500 ? str.substring(0, 500) + '...' : str;\n } catch {\n return typeof data === 'string' ? data : JSON.stringify(data);\n }\n }\n \n /**\n * Extract token count from output data\n */\n private extractTokens(data: any): number | undefined {\n if (!data) return undefined;\n try {\n const parsed = typeof data === 'string' ? JSON.parse(data) : data;\n return parsed.promptResult?.tokensUsed || parsed.tokensUsed;\n } catch {\n return undefined;\n }\n }\n \n /**\n * Extract cost from output data\n */\n private extractCost(data: any): number | undefined {\n if (!data) return undefined;\n try {\n const parsed = typeof data === 'string' ? JSON.parse(data) : data;\n return parsed.promptResult?.totalCost || parsed.totalCost;\n } catch {\n return undefined;\n }\n }\n \n /**\n * Calculate duration from timestamps\n */\n private calculateDuration(start: any, end: any): number | undefined {\n if (!start || !end) return undefined;\n const startTime = new Date(start).getTime();\n const endTime = new Date(end).getTime();\n return endTime - startTime;\n }\n \n /**\n * Set up live updates for real-time execution\n */\n private setupLiveUpdates(): void {\n console.log('⚡ Setting up live updates');\n \n // Process initial live steps if any\n if (this.liveSteps && this.liveSteps.length > 0) {\n this.appendNewLiveSteps(this.liveSteps);\n }\n \n // Set up interval to check for updates (if not already set up)\n if (this.mode === 'live' && !this.updateSubscription) {\n this.updateSubscription = interval(500)\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n // Update current step indicator\n this.updateCurrentStep();\n \n // Recalculate stats periodically\n this.calculateStats();\n });\n }\n }\n \n /**\n * Update current step indicator\n */\n private updateCurrentStep(): void {\n // Find the first running step from all rendered components\n let runningStep: MJAIAgentRunStepEntityExtended | null = null;\n \n this.nodeComponentMap.forEach((componentRef, stepId) => {\n const step = componentRef.instance.step;\n if (step && step.Status === 'Running' && !runningStep) {\n runningStep = step;\n }\n });\n \n this.currentStep = runningStep;\n this.cdr.markForCheck();\n }\n \n /**\n * Mark previously new nodes as completed\n */\n private markPreviouslyNewNodesAsComplete(): void {\n // Mark ALL running steps as completed (not just previously new ones)\n // This ensures only the latest step shows as running\n this.nodeComponentMap.forEach((componentRef, stepId) => {\n const step = componentRef.instance.step;\n if (step.Status === 'Running') {\n // Create a copy with updated status\n const updatedStep = Object.assign({}, step, { Status: 'Completed' });\n componentRef.instance.step = updatedStep;\n componentRef.changeDetectorRef.detectChanges();\n }\n });\n }\n \n /**\n * Ensure only the last step in the execution order shows as running\n */\n private ensureOnlyLastStepIsRunning(): void {\n // Find the last step by step number\n let lastRunningStep: { stepId: string; stepNumber: number; componentRef: ComponentRef<ExecutionNodeComponent> } | null = null;\n \n this.nodeComponentMap.forEach((componentRef, stepId) => {\n const step = componentRef.instance.step;\n if (step.Status === 'Running') {\n const stepNumber = step.StepNumber || 0;\n if (!lastRunningStep || stepNumber > lastRunningStep.stepNumber) {\n lastRunningStep = { stepId, stepNumber, componentRef };\n }\n }\n });\n \n // Set override display status for all running steps\n this.nodeComponentMap.forEach((componentRef, stepId) => {\n const step = componentRef.instance.step;\n if (step.Status === 'Running') {\n // Override display to show as completed, except for the last one\n if (lastRunningStep && stepId === lastRunningStep.stepId) {\n componentRef.instance.overrideDisplayStatus = 'Running';\n } else {\n componentRef.instance.overrideDisplayStatus = 'Completed';\n }\n componentRef.changeDetectorRef.detectChanges();\n }\n });\n }\n \n \n /**\n * Calculate execution statistics\n */\n private calculateStats(): void {\n this.stats = {\n totalSteps: 0,\n completedSteps: 0,\n failedSteps: 0,\n totalTokens: 0,\n totalCost: 0,\n stepsByType: {},\n totalDuration: 0,\n totalPrompts: 0\n };\n \n // Use token data from agent run if available\n if (this.agentRun) {\n this.stats.totalTokens = this.agentRun.TotalTokensUsed || 0;\n this.stats.totalCost = this.agentRun.TotalCost || 0;\n \n // Calculate duration\n if (this.agentRun.StartedAt && this.agentRun.CompletedAt) {\n this.stats.totalDuration = new Date(this.agentRun.CompletedAt).getTime() - \n new Date(this.agentRun.StartedAt).getTime();\n }\n \n // Count steps recursively\n if (this.agentRun.Steps) {\n this.countSteps(this.agentRun.Steps);\n }\n }\n \n console.log('📈 Stats calculated:', {\n totalSteps: this.stats.totalSteps,\n totalTokens: this.stats.totalTokens,\n totalCost: this.stats.totalCost\n });\n }\n \n /**\n * Count steps recursively\n */\n private countSteps(steps: MJAIAgentRunStepEntityExtended[]): void {\n for (const step of steps) {\n this.stats.totalSteps++;\n \n // Map to display types for consistency\n const displayType = this.getStepTypeClass(step.StepType);\n this.stats.stepsByType[displayType] = (this.stats.stepsByType[displayType] || 0) + 1;\n \n if (step.Status === 'Completed') this.stats.completedSteps++;\n if (step.Status === 'Failed' || step.Status === 'Cancelled') this.stats.failedSteps++;\n \n // Count prompts\n if (step.StepType === 'Prompt') {\n this.stats.totalPrompts++;\n }\n \n // Recurse for sub-agents\n if (step.StepType === 'Sub-Agent' && step.SubAgentRun?.Steps) {\n this.countSteps(step.SubAgentRun.Steps);\n }\n }\n }\n \n \n \n /**\n * Handle scroll events\n */\n onScroll(event: Event): void {\n if (this.isAutoScrolling) {\n // Ignore scroll events triggered by auto-scrolling\n return;\n }\n \n const element = event.target as HTMLDivElement;\n const isAtBottom = this.isScrolledToBottom(element);\n \n // If user scrolled up from bottom, mark as user interaction\n if (!isAtBottom && this.lastScrollPosition !== element.scrollTop) {\n this.userHasScrolled = true;\n this.userHasInteracted = true;\n }\n \n // If user scrolled back to bottom, reset interaction flags\n if (isAtBottom) {\n this.userHasScrolled = false;\n this.userHasInteracted = false;\n }\n \n this.lastScrollPosition = element.scrollTop;\n }\n \n /**\n * Handle user clicks (interaction detection)\n */\n onUserInteraction(): void {\n // This is called when user clicks anywhere in the execution tree\n // The toggleNode method will set userHasInteracted for specific interactions\n }\n \n /**\n * Check if scroll is at bottom\n */\n private isScrolledToBottom(element: HTMLElement): boolean {\n const threshold = this.scrollThreshold;\n return element.scrollHeight - element.scrollTop - element.clientHeight < threshold;\n }\n \n /**\n * Check if user is at bottom (for initial setup)\n */\n private checkIfUserAtBottom(): void {\n if (!this.executionTreeContainer) return;\n \n const element = this.executionTreeContainer.nativeElement;\n if (this.isScrolledToBottom(element)) {\n this.userHasScrolled = false;\n }\n }\n \n /**\n * Auto-scroll to bottom if user hasn't interacted\n */\n private autoScrollToBottom(): void {\n if (!this.executionTreeContainer || this.userHasInteracted || this.userHasScrolled) {\n return;\n }\n \n const element = this.executionTreeContainer.nativeElement;\n this.isAutoScrolling = true;\n \n // Use smooth scrolling for better UX\n element.scrollTo({\n top: element.scrollHeight,\n behavior: 'smooth'\n });\n \n // Reset auto-scrolling flag after animation\n setTimeout(() => {\n this.isAutoScrolling = false;\n }, 300);\n }\n \n /**\n * Format agent path for display\n */\n formatAgentPath(path: string[]): string {\n return path.join(' → ');\n }\n \n /**\n * Format duration for display\n */\n formatDuration(ms: number): string {\n if (ms < 1000) return `${ms}ms`;\n if (ms < 60000) return `${(ms / 1000).toFixed(1)}s`;\n const minutes = Math.floor(ms / 60000);\n const seconds = Math.floor((ms % 60000) / 1000);\n return `${minutes}m ${seconds}s`;\n }\n \n /**\n * Get step types for display\n */\n getStepTypes(): string[] {\n return Object.keys(this.stats.stepsByType).sort();\n }\n \n /**\n * Pluralize step type based on count\n */\n pluralizeStepType(type: string, count: number): string {\n if (count === 1) {\n return type;\n }\n \n // Handle special cases\n switch (type.toLowerCase()) {\n case 'analysis':\n return 'Analyses';\n case 'summary':\n return 'Summaries';\n default:\n // Default pluralization - just add 's'\n return type + 's';\n }\n }\n \n /**\n * Format markdown content for display\n */\n formatMarkdown(markdown: string): string {\n // Basic markdown formatting\n // This is a simple implementation - you might want to use a proper markdown library\n let html = markdown;\n \n // Headers\n html = html.replace(/^### (.*$)/gim, '<h4>$1</h4>');\n html = html.replace(/^## (.*$)/gim, '<h3>$1</h3>');\n html = html.replace(/^# (.*$)/gim, '<h2>$1</h2>');\n \n // Bold\n html = html.replace(/\\*\\*(.*)\\*\\*/g, '<strong>$1</strong>');\n \n // Italic\n html = html.replace(/\\*(.*)\\*/g, '<em>$1</em>');\n \n // Detect and linkify URLs\n // This regex matches URLs starting with http://, https://, or www.\n const urlRegex = /(?:https?:\\/\\/|www\\.)[^\\s<]+/gi;\n html = html.replace(urlRegex, (url) => {\n // Ensure the URL has a protocol\n const href = url.startsWith('http') ? url : `https://${url}`;\n // Truncate long URLs for display\n const displayUrl = url.length > 50 ? url.substring(0, 50) + '...' : url;\n return `<a href=\"${href}\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"color: #2196f3; text-decoration: underline; font-size: inherit;\">${displayUrl}</a>`;\n });\n \n // Line breaks\n html = html.replace(/\\n/g, '<br>');\n \n // Lists\n html = html.replace(/^\\* (.+)$/gim, '<li>$1</li>');\n html = html.replace(/(<li>.*<\\/li>)/s, '<ul>$1</ul>');\n \n // Code blocks\n html = html.replace(/```(.*?)```/gs, '<pre><code>$1</code></pre>');\n \n // Inline code\n html = html.replace(/`([^`]+)`/g, '<code>$1</code>');\n \n return html;\n }\n \n /**\n * Append new live steps without re-rendering entire tree\n */\n private appendNewLiveSteps(newSteps: MJAIAgentRunStepEntityExtended[]): void {\n if (!newSteps || newSteps.length === 0 || !this.viewInitialized || !this.executionNodesContainer) {\n return;\n }\n \n console.log('📝 Appending', newSteps.length, 'live steps');\n \n // Sort steps by StepNumber\n const sortedSteps = [...newSteps].sort((a, b) => (a.StepNumber || 0) - (b.StepNumber || 0));\n \n // Mark previously new steps as completed\n if (this.newlyAddedNodeIds.size > 0) {\n this.markPreviouslyNewNodesAsComplete();\n this.newlyAddedNodeIds.clear();\n }\n \n let hasNewSteps = false;\n \n for (const step of sortedSteps) {\n // Skip if already processed\n if (this.processedStepIds.has(step.ID)) {\n // Update existing step if status changed\n const componentRef = this.nodeComponentMap.get(step.ID);\n if (componentRef && componentRef.instance.step.Status !== step.Status) {\n componentRef.instance.step = step;\n componentRef.changeDetectorRef.detectChanges();\n }\n continue;\n }\n \n // Mark as processed and newly added\n this.processedStepIds.add(step.ID);\n this.newlyAddedNodeIds.add(step.ID);\n hasNewSteps = true;\n \n // Determine depth based on parent hierarchy\n const depth = this.calculateStepDepth(step);\n const agentPath = this.buildAgentPath(step);\n \n // Create component for new step\n this.createStepComponent(step, depth, agentPath);\n \n // Handle sub-agent steps recursively\n if (step.StepType === 'Sub-Agent' && step.SubAgentRun?.Steps) {\n const subAgentPath = [...agentPath, step.SubAgentRun.Agent || 'Sub-Agent'];\n this.renderSteps(step.SubAgentRun.Steps, depth + 1, subAgentPath);\n }\n }\n \n if (hasNewSteps) {\n // After processing all new steps, ensure only the last one shows as running\n this.ensureOnlyLastStepIsRunning();\n \n this.updateCurrentStep();\n this.calculateStats();\n \n // Force change detection to ensure new components are rendered\n this.cdr.detectChanges();\n \n // Auto-scroll if user hasn't interacted\n setTimeout(() => {\n this.autoScrollToBottom();\n }, 100);\n }\n }\n \n /**\n * Calculate step depth based on parent hierarchy\n */\n private calculateStepDepth(step: MJAIAgentRunStepEntityExtended): number {\n // For now, return 0 for top-level steps\n // In live mode, depth information should come from the streaming data\n return 0;\n }\n \n /**\n * Build agent path for a step\n */\n private buildAgentPath(step: MJAIAgentRunStepEntityExtended): string[] {\n // In live mode, agent path should come from streaming data\n // For now, return empty array\n return [];\n }\n \n \n /**\n * Check if execution is complete\n */\n isExecutionComplete(): boolean {\n return this.stats.completedSteps > 0 && \n this.stats.completedSteps === this.stats.totalSteps - this.stats.failedSteps;\n }\n \n /**\n * Handle view run button click\n */\n onViewRunClick(): void {\n if (this.agentRun) {\n this.viewRunClick.emit({ runId: this.agentRun.ID, runType: 'agent' });\n }\n }\n \n \n /**\n * Expands all nodes that have sub-agent children\n */\n private expandAllNodes(): void {\n console.log('🔄 Auto-expanding nodes with sub-agents');\n \n // Expand all steps that have sub-agent runs\n this.nodeComponentMap.forEach((componentRef, stepId) => {\n const step = componentRef.instance.step;\n if (step.StepType === 'Sub-Agent' && step.SubAgentRun?.Steps?.length) {\n this.expandedStates.set(stepId, true);\n componentRef.instance.expanded = true;\n componentRef.changeDetectorRef.detectChanges();\n console.log(`Expanded sub-agent: ${step.StepName}`);\n }\n });\n \n // Trigger change detection\n this.cdr.markForCheck();\n this.cdr.detectChanges();\n \n // Scroll to top after expansion\n setTimeout(() => {\n this.scrollToTop();\n }, 100);\n }\n \n /**\n * Scroll the execution tree to the top\n */\n private scrollToTop(): void {\n if (this.executionTreeContainer) {\n const element = this.executionTreeContainer.nativeElement;\n element.scrollTo({\n top: 0,\n behavior: 'smooth'\n });\n }\n }\n \n /**\n * Check if there is content to display\n */\n hasContent(): boolean {\n return this.nodeComponentMap.size > 0;\n }\n}"]}
1
+ {"version":3,"file":"agent-execution-monitor.component.js","sourceRoot":"","sources":["../../src/lib/agent-execution-monitor.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, OnChanges, SimpleChanges, OnDestroy, ViewChild, ElementRef, AfterViewInit, ChangeDetectorRef, ChangeDetectionStrategy, ViewContainerRef, ComponentRef, Output, EventEmitter } from '@angular/core';\nimport { Subject, interval, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { ExecutionNodeComponent } from './agent-execution-node.component';\nimport { MJAIAgentRunEntityExtended, MJAIAgentRunStepEntityExtended } from '@memberjunction/ai-core-plus';\nimport { UUIDsEqual } from '@memberjunction/global';\n\n/**\n * Progress message with display mode\n */\nexport interface ProgressMessage {\n id: string;\n message: string;\n timestamp: Date;\n displayMode: 'live' | 'historical' | 'both';\n metadata?: Record<string, unknown>;\n}\n\n/**\n * Mode for the execution monitor component\n */\nexport type ExecutionMonitorMode = 'live' | 'historical';\n\n/**\n * Execution statistics for display\n */\nexport interface ExecutionStats {\n totalSteps: number;\n completedSteps: number;\n failedSteps: number;\n totalTokens: number;\n totalCost: number;\n stepsByType: Record<string, number>;\n totalDuration?: number;\n totalPrompts: number;\n}\n\n/**\n * AgentExecutionMonitor Component\n * \n * A reusable component for visualizing AI agent execution flow in real-time or historically.\n * Displays a hierarchical tree of execution steps with status, timing, and preview information.\n * \n * Features:\n * - Real-time updates for live executions\n * - Historical playback for completed executions\n * - Collapsible tree structure\n * - Step status indicators with animations\n * - Execution statistics\n * - Token usage and cost tracking\n * - Error display\n * - Input/output preview\n */\n@Component({\n standalone: false,\n selector: 'mj-agent-execution-monitor',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"execution-monitor\" [class.live-mode]=\"mode === 'live'\">\n <!-- Header -->\n <div class=\"monitor-header\">\n <div class=\"header-title\">\n <i class=\"fa-solid fa-diagram-project\"></i>\n <span>Execution Monitor</span>\n @if (mode === 'live') {\n <span class=\"live-indicator\">\n <span class=\"pulse\"></span>\n LIVE\n </span>\n }\n </div>\n @if (currentStep && mode === 'live') {\n <div class=\"current-status\">\n <span class=\"status-label\">Current:</span>\n <span class=\"step-name\">{{ currentStep.StepName }}</span>\n </div>\n }\n @if (mode === 'historical' && agentRun && isExecutionComplete()) {\n <button class=\"view-run-btn\" (click)=\"onViewRunClick()\">\n <i class=\"fa-solid fa-external-link-alt\"></i>\n View {{ runType === 'agent' ? 'Agent' : 'Prompt' }} Run\n </button>\n }\n </div>\n\n <!-- Execution Tree -->\n <div class=\"execution-tree\" \n #executionTreeContainer\n [class.has-content]=\"hasContent()\"\n (scroll)=\"onScroll($event)\"\n (click)=\"onUserInteraction()\">\n <!-- Always render the container, but show empty state when no data -->\n <div #executionNodesContainer class=\"nodes-container\">\n </div>\n @if (!agentRun && liveSteps.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-hourglass-start\"></i>\n <p>Waiting for execution to begin...</p>\n </div>\n }\n </div>\n\n <!-- Statistics Footer -->\n <div class=\"monitor-footer\">\n <div class=\"stats-grid\">\n <div class=\"stat-item\">\n <span class=\"stat-label\">Steps</span>\n <span class=\"stat-value\">\n {{ stats.completedSteps }}/{{ stats.totalSteps }}\n @if (stats.failedSteps > 0) {\n <span class=\"failed-count\">({{ stats.failedSteps }} failed)</span>\n }\n </span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-label\">Prompts</span>\n <span class=\"stat-value\">{{ stats.totalPrompts }}</span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-label\">Tokens</span>\n <span class=\"stat-value\">{{ stats.totalTokens.toLocaleString() }}</span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-label\">Cost</span>\n <span class=\"stat-value\">\\${{ stats.totalCost.toFixed(4) }}</span>\n </div>\n @if (stats.totalDuration) {\n <div class=\"stat-item\">\n <span class=\"stat-label\">Duration</span>\n <span class=\"stat-value\">{{ formatDuration(stats.totalDuration) }}</span>\n </div>\n }\n </div>\n @if (getStepTypes().length > 0) {\n <div class=\"step-types\">\n @for (type of getStepTypes(); track type) {\n <span class=\"type-badge\">\n {{ stats.stepsByType[type] }} {{ pluralizeStepType(type, stats.stepsByType[type]) }}\n </span>\n }\n </div>\n }\n </div>\n </div>\n `,\n styles: [`\n :host {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n }\n \n .execution-monitor {\n display: flex;\n flex-direction: column;\n flex: 1;\n background: #fff;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n overflow: hidden;\n }\n\n /* Header */\n .monitor-header {\n padding: 16px;\n background: #f8f9fa;\n border-bottom: 1px solid #e0e0e0;\n }\n\n .header-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 16px;\n font-weight: 600;\n color: #1a1a1a;\n margin-bottom: 8px;\n }\n\n .header-title i {\n color: #2196f3;\n }\n\n .live-indicator {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 8px;\n background: #ff4444;\n color: white;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n letter-spacing: 0.5px;\n }\n\n .pulse {\n display: inline-block;\n width: 8px;\n height: 8px;\n background: white;\n border-radius: 50%;\n animation: pulse 2s infinite;\n }\n\n @keyframes pulse {\n 0% { opacity: 1; transform: scale(1); }\n 50% { opacity: 0.5; transform: scale(0.8); }\n 100% { opacity: 1; transform: scale(1); }\n }\n\n .current-status {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: #666;\n }\n\n .status-label {\n font-weight: 500;\n }\n\n .agent-path {\n color: #999;\n }\n\n .step-name {\n color: #1a1a1a;\n font-weight: 500;\n }\n\n /* Execution Tree */\n .execution-tree {\n flex: 1;\n overflow-y: auto;\n overflow-x: auto;\n padding: 16px;\n min-height: 0;\n }\n \n .nodes-container {\n /* No extra padding needed, indentation handled by node margins */\n }\n\n .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n color: #999;\n text-align: center;\n }\n\n .empty-state i {\n font-size: 48px;\n margin-bottom: 16px;\n opacity: 0.5;\n }\n\n .empty-state p {\n margin: 0;\n font-size: 14px;\n }\n\n /* Tree Nodes - These styles are for reference only, actual rendering is done by ExecutionNodeComponent */\n .tree-node {\n margin-bottom: 4px;\n }\n\n /* Footer */\n .monitor-footer {\n padding: 16px;\n background: #f8f9fa;\n border-top: 1px solid #e0e0e0;\n }\n\n .stats-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));\n gap: 16px;\n margin-bottom: 12px;\n }\n\n .stat-item {\n text-align: center;\n }\n\n .stat-label {\n display: block;\n font-size: 11px;\n color: #666;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 4px;\n }\n\n .stat-value {\n display: block;\n font-size: 16px;\n font-weight: 600;\n color: #1a1a1a;\n }\n\n .failed-count {\n color: #f44336;\n font-size: 12px;\n font-weight: normal;\n }\n\n .step-types {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n justify-content: center;\n }\n\n .type-badge {\n display: inline-block;\n padding: 4px 8px;\n background: #e3f2fd;\n color: #1976d2;\n border-radius: 4px;\n font-size: 12px;\n font-weight: 500;\n }\n \n /* View Run Button */\n .view-run-btn {\n background: #2196f3;\n color: white;\n border: none;\n padding: 6px 12px;\n border-radius: 4px;\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n transition: all 0.2s ease;\n margin-left: auto;\n }\n \n .view-run-btn:hover {\n background: #1976d2;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0,0,0,0.2);\n }\n \n .view-run-btn i {\n font-size: 12px;\n }\n\n /* Responsive */\n @media (max-width: 768px) {\n .monitor-header {\n padding: 12px;\n }\n\n .execution-tree {\n padding: 12px;\n }\n }\n `]\n})\nexport class AgentExecutionMonitorComponent implements OnChanges, OnDestroy, AfterViewInit {\n @Input() mode: ExecutionMonitorMode = 'historical';\n @Input() agentRun: MJAIAgentRunEntityExtended | null = null; // For historical mode\n @Input() liveSteps: MJAIAgentRunStepEntityExtended[] = []; // For live mode streaming\n @Input() autoExpand: boolean = true; // Auto-expand nodes in live mode\n @Input() runId: string | null = null; // ID of the run (agent or prompt)\n @Input() runType: 'agent' | 'prompt' = 'agent'; // Type of run\n \n @Output() viewRunClick = new EventEmitter<{ runId: string; runType: 'agent' | 'prompt' }>();\n \n @ViewChild('executionTreeContainer') executionTreeContainer!: ElementRef<HTMLDivElement>;\n @ViewChild('executionNodesContainer', { read: ViewContainerRef }) executionNodesContainer!: ViewContainerRef;\n \n // Store the currently rendered steps for UI state management\n currentStep: MJAIAgentRunStepEntityExtended | null = null;\n \n // Track component references for dynamic components\n private nodeComponentMap = new Map<string, ComponentRef<ExecutionNodeComponent>>();\n \n // UI state management - track expanded states separately from entities\n private expandedStates = new Map<string, boolean>();\n private detailsExpandedStates = new Map<string, boolean>();\n stats: ExecutionStats = {\n totalSteps: 0,\n completedSteps: 0,\n failedSteps: 0,\n totalTokens: 0,\n totalCost: 0,\n stepsByType: {},\n totalPrompts: 0\n };\n \n // User interaction tracking\n private userHasInteracted = false;\n private userHasScrolled = false;\n private isAutoScrolling = false;\n private lastScrollPosition = 0;\n private scrollThreshold = 50; // pixels from bottom to consider \"at bottom\"\n \n // View initialization flag\n private viewInitialized = false;\n \n // Track processed step IDs to avoid duplication\n private processedStepIds = new Set<string>();\n \n // Track which nodes were added in the current update\n private newlyAddedNodeIds = new Set<string>();\n \n // Temporary storage for parsed metadata\n private lastParsedAgentData: any = null;\n private lastParsedActionData: any = null;\n \n private destroy$ = new Subject<void>();\n private updateSubscription?: Subscription;\n \n constructor(private cdr: ChangeDetectorRef) {}\n \n ngOnChanges(changes: SimpleChanges): void {\n console.log('🔄 Execution Monitor ngOnChanges:', {\n agentRunChanged: !!changes['agentRun'],\n liveStepsChanged: !!changes['liveSteps'],\n modeChanged: !!changes['mode'],\n hasAgentRun: !!this.agentRun,\n liveStepsCount: this.liveSteps?.length || 0\n });\n \n // Handle agent run changes (historical mode)\n if (changes['agentRun'] && this.mode === 'historical') {\n const oldRun = changes['agentRun'].previousValue;\n const newRun = changes['agentRun'].currentValue;\n \n console.log('📊 Agent run changed:', {\n oldRunExists: !!oldRun,\n newRunExists: !!newRun,\n oldRunId: oldRun?.ID,\n newRunId: newRun?.ID,\n stepsCount: newRun?.Steps?.length\n });\n \n // Only clear if it's actually a different execution (different ID)\n const isDifferentExecution = (!oldRun && newRun) || \n (oldRun && newRun && !UUIDsEqual(oldRun.ID, newRun.ID)) ||\n (oldRun && !newRun);\n \n if (isDifferentExecution) {\n console.log('🗑️ Clearing for different agent run');\n this.processedStepIds.clear();\n this.newlyAddedNodeIds.clear();\n this.expandedStates.clear();\n this.detailsExpandedStates.clear();\n this.clearNodeComponents();\n this.currentStep = null;\n }\n \n // Always process the agent run data (will handle updates to existing run)\n if (newRun) {\n this.processAgentRun();\n }\n }\n \n // Handle live steps changes (live mode)\n if (changes['liveSteps'] && this.mode === 'live') {\n const oldSteps = changes['liveSteps'].previousValue;\n const newSteps = changes['liveSteps'].currentValue;\n \n console.log('📊 Live steps changed:', {\n oldCount: oldSteps?.length || 0,\n newCount: newSteps?.length || 0\n });\n \n // Process live steps\n this.processLiveSteps();\n }\n \n // Handle mode changes\n if (changes['mode'] && !changes['mode'].firstChange) {\n const previousMode = changes['mode'].previousValue;\n const currentMode = changes['mode'].currentValue;\n \n console.log('🔄 Mode changed:', { previousMode, currentMode });\n \n // Clear everything when switching modes\n this.processedStepIds.clear();\n this.newlyAddedNodeIds.clear();\n this.expandedStates.clear();\n this.detailsExpandedStates.clear();\n this.clearNodeComponents();\n this.currentStep = null;\n \n // Stop live updates when switching away from live mode\n if (previousMode === 'live' && this.updateSubscription) {\n this.updateSubscription.unsubscribe();\n this.updateSubscription = undefined;\n }\n \n // Process data for the new mode\n if (currentMode === 'historical' && this.agentRun) {\n this.processAgentRun();\n } else if (currentMode === 'live') {\n this.setupLiveUpdates();\n }\n }\n }\n \n ngAfterViewInit(): void {\n this.viewInitialized = true;\n \n console.log('🎯 View initialized, checking for pending data:', {\n hasAgentRun: !!this.agentRun,\n hasLiveSteps: this.liveSteps?.length > 0,\n hasContainer: !!this.executionNodesContainer\n });\n \n // Initial setup for scroll behavior\n if (this.mode === 'live') {\n this.checkIfUserAtBottom();\n }\n \n // If we have data waiting to be rendered, render it now\n if (this.mode === 'historical' && this.agentRun && this.nodeComponentMap.size === 0) {\n console.log('⚡ Processing agent run after view init');\n this.processAgentRun();\n } else if (this.mode === 'live' && this.liveSteps?.length > 0) {\n console.log('⚡ Processing live steps after view init');\n this.processLiveSteps();\n }\n }\n \n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n if (this.updateSubscription) {\n this.updateSubscription.unsubscribe();\n this.updateSubscription = undefined;\n }\n this.clearNodeComponents();\n }\n \n /**\n * Clear all dynamically created components\n */\n private clearNodeComponents(): void {\n this.nodeComponentMap.forEach(ref => ref.destroy());\n this.nodeComponentMap.clear();\n if (this.executionNodesContainer) {\n this.executionNodesContainer.clear();\n }\n }\n \n /**\n * Process agent run for historical mode\n */\n private processAgentRun(): void {\n console.log('⚙️ Processing agent run:', {\n hasAgentRun: !!this.agentRun,\n stepsCount: this.agentRun?.Steps?.length || 0,\n viewInitialized: this.viewInitialized,\n hasContainer: !!this.executionNodesContainer\n });\n \n if (!this.agentRun || !this.viewInitialized || !this.executionNodesContainer) {\n console.warn('⚠️ Cannot process agent run:', {\n agentRun: !this.agentRun ? 'missing' : 'present',\n viewInitialized: this.viewInitialized ? 'yes' : 'no',\n container: !this.executionNodesContainer ? 'missing' : 'present'\n });\n return;\n }\n \n // Clear existing components\n this.clearNodeComponents();\n \n // Render the agent run steps\n if (this.agentRun.Steps && this.agentRun.Steps.length > 0) {\n console.log('🎨 Rendering', this.agentRun.Steps.length, 'steps');\n this.renderSteps(this.agentRun.Steps, 0, []);\n console.log('✅ Finished rendering, container now has', this.executionNodesContainer.length, 'components');\n } else {\n console.warn('⚠️ No steps to render');\n }\n \n // Calculate statistics\n this.calculateStats();\n \n // Trigger change detection after rendering all components\n this.cdr.detectChanges();\n }\n \n /**\n * Process live steps for live mode\n */\n private processLiveSteps(): void {\n console.log('⚙️ Processing live steps:', {\n stepsCount: this.liveSteps?.length || 0,\n viewInitialized: this.viewInitialized,\n hasContainer: !!this.executionNodesContainer\n });\n \n if (!this.liveSteps || !this.viewInitialized || !this.executionNodesContainer) {\n return;\n }\n \n // Append new steps without clearing existing ones\n this.appendNewLiveSteps(this.liveSteps);\n \n // Trigger change detection after appending live steps\n this.cdr.detectChanges();\n \n // Set up live update monitoring if not already set up\n if (!this.updateSubscription) {\n this.setupLiveUpdates();\n }\n }\n \n /**\n * Render steps recursively with proper hierarchy\n */\n private renderSteps(steps: MJAIAgentRunStepEntityExtended[], depth: number, agentPath: string[]): void {\n console.log('🎨 Rendering steps:', {\n count: steps.length,\n depth,\n agentPath\n });\n \n // Sort steps by StepNumber to ensure proper ordering\n const sortedSteps = [...steps].sort((a, b) => (a.StepNumber || 0) - (b.StepNumber || 0));\n \n for (const step of sortedSteps) {\n // Skip if already processed in live mode\n if (this.processedStepIds.has(step.ID)) {\n continue;\n }\n \n // Create component for this step\n this.createStepComponent(step, depth, agentPath);\n \n // Mark as processed\n this.processedStepIds.add(step.ID);\n \n // Handle sub-agent recursion\n if (step.StepType === 'Sub-Agent' && step.SubAgentRun?.Steps) {\n const subAgentPath = [...agentPath, step.SubAgentRun.Agent || 'Sub-Agent'];\n this.renderSteps(step.SubAgentRun.Steps, depth + 1, subAgentPath);\n }\n }\n }\n \n /**\n * Create a component for a step\n */\n private createStepComponent(\n step: MJAIAgentRunStepEntityExtended, \n depth: number, \n agentPath: string[]\n ): ComponentRef<ExecutionNodeComponent> {\n // Ensure container exists\n if (!this.executionNodesContainer) {\n console.error('❌ executionNodesContainer not available');\n throw new Error('executionNodesContainer ViewContainerRef not initialized');\n }\n \n const componentRef = this.executionNodesContainer.createComponent(ExecutionNodeComponent);\n const instance = componentRef.instance;\n \n console.log('🔨 Creating component for step:', {\n stepId: step.ID,\n stepName: step.StepName,\n depth,\n containerLength: this.executionNodesContainer.length,\n hostElement: componentRef.location.nativeElement\n });\n \n // Pass the step data with UI state information\n instance.step = step;\n instance.depth = depth;\n instance.agentPath = agentPath;\n instance.expanded = this.expandedStates.get(step.ID) || false;\n instance.detailsExpanded = this.detailsExpandedStates.get(step.ID) || false;\n \n // Subscribe to outputs\n instance.toggleNode.subscribe(() => this.toggleStepExpansion(step));\n instance.toggleDetails.subscribe(() => this.toggleStepDetails(step));\n instance.userInteracted.subscribe(() => this.onUserInteraction());\n \n // Store reference\n this.nodeComponentMap.set(step.ID, componentRef);\n \n // Log the component state after setup\n console.log('✅ Component created and configured:', {\n stepId: step.ID,\n hasData: !!instance.step,\n isAttached: componentRef.hostView.destroyed === false\n });\n \n return componentRef;\n }\n \n /**\n * Toggle step expansion\n */\n private toggleStepExpansion(step: MJAIAgentRunStepEntityExtended): void {\n const currentState = this.expandedStates.get(step.ID) || false;\n this.expandedStates.set(step.ID, !currentState);\n this.userHasInteracted = true;\n \n // Update the component\n const componentRef = this.nodeComponentMap.get(step.ID);\n if (componentRef) {\n componentRef.instance.expanded = !currentState;\n componentRef.changeDetectorRef.detectChanges();\n }\n \n this.cdr.markForCheck();\n }\n \n /**\n * Toggle step details expansion\n */\n private toggleStepDetails(step: MJAIAgentRunStepEntityExtended): void {\n const currentState = this.detailsExpandedStates.get(step.ID) || false;\n this.detailsExpandedStates.set(step.ID, !currentState);\n \n // Update the component\n const componentRef = this.nodeComponentMap.get(step.ID);\n if (componentRef) {\n componentRef.instance.detailsExpanded = !currentState;\n componentRef.changeDetectorRef.detectChanges();\n }\n }\n \n \n /**\n * Get step type CSS class for styling\n */\n private getStepTypeClass(stepType: string): string {\n const typeMap: Record<string, string> = {\n 'Validation': 'validation',\n 'Prompt': 'prompt',\n 'Actions': 'action',\n 'Sub-Agent': 'sub-agent',\n 'Decision': 'decision',\n 'Chat': 'chat'\n };\n return typeMap[stepType] || 'prompt';\n }\n \n /**\n * Get status CSS class for styling\n */\n private getStatusClass(status: string): string {\n const statusMap: Record<string, string> = {\n 'Pending': 'pending',\n 'Running': 'running',\n 'Completed': 'completed',\n 'Failed': 'failed',\n 'Cancelled': 'failed',\n 'Paused': 'pending'\n };\n return statusMap[status] || 'pending';\n }\n \n /**\n * Helper function to safely convert a value to a preview string\n */\n private valueToPreviewString(value: any): string {\n if (value === null || value === undefined) {\n return '';\n }\n if (typeof value === 'object') {\n return JSON.stringify(value, null, 2);\n }\n return String(value);\n }\n\n /**\n * Create a preview string from data\n */\n private createPreview(data: any): string | undefined {\n if (!data) return undefined;\n \n try {\n const parsed = typeof data === 'string' ? JSON.parse(data) : data;\n \n // Extract meaningful preview and store metadata\n if (parsed.promptName) return `Prompt: ${parsed.promptName}`;\n if (parsed.actionName) {\n // Store action metadata if available\n this.lastParsedActionData = {\n actionName: parsed.actionName,\n actionId: parsed.actionId,\n actionIconClass: parsed.actionIconClass\n };\n return `Action: ${parsed.actionName}`;\n }\n if (parsed.subAgentName) {\n // Store agent metadata if available\n this.lastParsedAgentData = {\n agentName: parsed.subAgentName,\n agentId: parsed.subAgentId || parsed.agentId,\n agentIconClass: parsed.subAgentIconClass || parsed.agentIconClass,\n agentLogoURL: parsed.subAgentLogoURL || parsed.agentLogoURL\n };\n return `Sub-agent: ${parsed.subAgentName}`;\n }\n if (parsed.message) return this.valueToPreviewString(parsed.message);\n if (parsed.userMessage) return this.valueToPreviewString(parsed.userMessage);\n \n // Show action results clearly\n if (parsed.actionResult) {\n const result = parsed.actionResult;\n let preview = '';\n if (result.success !== undefined) {\n preview += `Success: ${result.success}\\n`;\n }\n if (result.resultCode) {\n preview += `Result Code: ${result.resultCode}\\n`;\n }\n if (result.message) {\n preview += `Message: ${this.valueToPreviewString(result.message)}\\n`;\n }\n if (result.result) {\n preview += `Result: ${typeof result.result === 'object' ? JSON.stringify(result.result, null, 2) : result.result}`;\n }\n return preview.trim();\n }\n \n // Legacy action result format\n if (parsed.result) {\n return this.valueToPreviewString(parsed.result);\n }\n \n // Show prompt results\n if (parsed.promptResult) {\n const result = parsed.promptResult;\n let preview = '';\n if (result.success !== undefined) {\n preview += `Success: ${result.success}\\n`;\n }\n if (result.content) {\n preview += `Content: ${this.valueToPreviewString(result.content)}`;\n }\n return preview;\n }\n \n // Fallback to stringified preview\n const str = JSON.stringify(parsed, null, 2);\n return str.length > 500 ? str.substring(0, 500) + '...' : str;\n } catch {\n return typeof data === 'string' ? data : JSON.stringify(data);\n }\n }\n \n /**\n * Extract token count from output data\n */\n private extractTokens(data: any): number | undefined {\n if (!data) return undefined;\n try {\n const parsed = typeof data === 'string' ? JSON.parse(data) : data;\n return parsed.promptResult?.tokensUsed || parsed.tokensUsed;\n } catch {\n return undefined;\n }\n }\n \n /**\n * Extract cost from output data\n */\n private extractCost(data: any): number | undefined {\n if (!data) return undefined;\n try {\n const parsed = typeof data === 'string' ? JSON.parse(data) : data;\n return parsed.promptResult?.totalCost || parsed.totalCost;\n } catch {\n return undefined;\n }\n }\n \n /**\n * Calculate duration from timestamps\n */\n private calculateDuration(start: any, end: any): number | undefined {\n if (!start || !end) return undefined;\n const startTime = new Date(start).getTime();\n const endTime = new Date(end).getTime();\n return endTime - startTime;\n }\n \n /**\n * Set up live updates for real-time execution\n */\n private setupLiveUpdates(): void {\n console.log('⚡ Setting up live updates');\n \n // Process initial live steps if any\n if (this.liveSteps && this.liveSteps.length > 0) {\n this.appendNewLiveSteps(this.liveSteps);\n }\n \n // Set up interval to check for updates (if not already set up)\n if (this.mode === 'live' && !this.updateSubscription) {\n this.updateSubscription = interval(500)\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n // Update current step indicator\n this.updateCurrentStep();\n \n // Recalculate stats periodically\n this.calculateStats();\n });\n }\n }\n \n /**\n * Update current step indicator\n */\n private updateCurrentStep(): void {\n // Find the first running step from all rendered components\n let runningStep: MJAIAgentRunStepEntityExtended | null = null;\n \n this.nodeComponentMap.forEach((componentRef, stepId) => {\n const step = componentRef.instance.step;\n if (step && step.Status === 'Running' && !runningStep) {\n runningStep = step;\n }\n });\n \n this.currentStep = runningStep;\n this.cdr.markForCheck();\n }\n \n /**\n * Mark previously new nodes as completed\n */\n private markPreviouslyNewNodesAsComplete(): void {\n // Mark ALL running steps as completed (not just previously new ones)\n // This ensures only the latest step shows as running\n this.nodeComponentMap.forEach((componentRef, stepId) => {\n const step = componentRef.instance.step;\n if (step.Status === 'Running') {\n // Create a copy with updated status\n const updatedStep = Object.assign({}, step, { Status: 'Completed' });\n componentRef.instance.step = updatedStep;\n componentRef.changeDetectorRef.detectChanges();\n }\n });\n }\n \n /**\n * Ensure only the last step in the execution order shows as running\n */\n private ensureOnlyLastStepIsRunning(): void {\n // Find the last step by step number\n let lastRunningStep: { stepId: string; stepNumber: number; componentRef: ComponentRef<ExecutionNodeComponent> } | null = null;\n \n this.nodeComponentMap.forEach((componentRef, stepId) => {\n const step = componentRef.instance.step;\n if (step.Status === 'Running') {\n const stepNumber = step.StepNumber || 0;\n if (!lastRunningStep || stepNumber > lastRunningStep.stepNumber) {\n lastRunningStep = { stepId, stepNumber, componentRef };\n }\n }\n });\n \n // Set override display status for all running steps\n this.nodeComponentMap.forEach((componentRef, stepId) => {\n const step = componentRef.instance.step;\n if (step.Status === 'Running') {\n // Override display to show as completed, except for the last one\n if (lastRunningStep && stepId === lastRunningStep.stepId) {\n componentRef.instance.overrideDisplayStatus = 'Running';\n } else {\n componentRef.instance.overrideDisplayStatus = 'Completed';\n }\n componentRef.changeDetectorRef.detectChanges();\n }\n });\n }\n \n \n /**\n * Calculate execution statistics\n */\n private calculateStats(): void {\n this.stats = {\n totalSteps: 0,\n completedSteps: 0,\n failedSteps: 0,\n totalTokens: 0,\n totalCost: 0,\n stepsByType: {},\n totalDuration: 0,\n totalPrompts: 0\n };\n \n // Use token data from agent run if available\n if (this.agentRun) {\n this.stats.totalTokens = this.agentRun.TotalTokensUsed || 0;\n this.stats.totalCost = this.agentRun.TotalCost || 0;\n \n // Calculate duration\n if (this.agentRun.StartedAt && this.agentRun.CompletedAt) {\n this.stats.totalDuration = new Date(this.agentRun.CompletedAt).getTime() - \n new Date(this.agentRun.StartedAt).getTime();\n }\n \n // Count steps recursively\n if (this.agentRun.Steps) {\n this.countSteps(this.agentRun.Steps);\n }\n }\n \n console.log('📈 Stats calculated:', {\n totalSteps: this.stats.totalSteps,\n totalTokens: this.stats.totalTokens,\n totalCost: this.stats.totalCost\n });\n }\n \n /**\n * Count steps recursively\n */\n private countSteps(steps: MJAIAgentRunStepEntityExtended[]): void {\n for (const step of steps) {\n this.stats.totalSteps++;\n \n // Map to display types for consistency\n const displayType = this.getStepTypeClass(step.StepType);\n this.stats.stepsByType[displayType] = (this.stats.stepsByType[displayType] || 0) + 1;\n \n if (step.Status === 'Completed') this.stats.completedSteps++;\n if (step.Status === 'Failed' || step.Status === 'Cancelled') this.stats.failedSteps++;\n \n // Count prompts\n if (step.StepType === 'Prompt') {\n this.stats.totalPrompts++;\n }\n \n // Recurse for sub-agents\n if (step.StepType === 'Sub-Agent' && step.SubAgentRun?.Steps) {\n this.countSteps(step.SubAgentRun.Steps);\n }\n }\n }\n \n \n \n /**\n * Handle scroll events\n */\n onScroll(event: Event): void {\n if (this.isAutoScrolling) {\n // Ignore scroll events triggered by auto-scrolling\n return;\n }\n \n const element = event.target as HTMLDivElement;\n const isAtBottom = this.isScrolledToBottom(element);\n \n // If user scrolled up from bottom, mark as user interaction\n if (!isAtBottom && this.lastScrollPosition !== element.scrollTop) {\n this.userHasScrolled = true;\n this.userHasInteracted = true;\n }\n \n // If user scrolled back to bottom, reset interaction flags\n if (isAtBottom) {\n this.userHasScrolled = false;\n this.userHasInteracted = false;\n }\n \n this.lastScrollPosition = element.scrollTop;\n }\n \n /**\n * Handle user clicks (interaction detection)\n */\n onUserInteraction(): void {\n // This is called when user clicks anywhere in the execution tree\n // The toggleNode method will set userHasInteracted for specific interactions\n }\n \n /**\n * Check if scroll is at bottom\n */\n private isScrolledToBottom(element: HTMLElement): boolean {\n const threshold = this.scrollThreshold;\n return element.scrollHeight - element.scrollTop - element.clientHeight < threshold;\n }\n \n /**\n * Check if user is at bottom (for initial setup)\n */\n private checkIfUserAtBottom(): void {\n if (!this.executionTreeContainer) return;\n \n const element = this.executionTreeContainer.nativeElement;\n if (this.isScrolledToBottom(element)) {\n this.userHasScrolled = false;\n }\n }\n \n /**\n * Auto-scroll to bottom if user hasn't interacted\n */\n private autoScrollToBottom(): void {\n if (!this.executionTreeContainer || this.userHasInteracted || this.userHasScrolled) {\n return;\n }\n \n const element = this.executionTreeContainer.nativeElement;\n this.isAutoScrolling = true;\n \n // Use smooth scrolling for better UX\n element.scrollTo({\n top: element.scrollHeight,\n behavior: 'smooth'\n });\n \n // Reset auto-scrolling flag after animation\n setTimeout(() => {\n this.isAutoScrolling = false;\n }, 300);\n }\n \n /**\n * Format agent path for display\n */\n formatAgentPath(path: string[]): string {\n return path.join(' → ');\n }\n \n /**\n * Format duration for display\n */\n formatDuration(ms: number): string {\n if (ms < 1000) return `${ms}ms`;\n if (ms < 60000) return `${(ms / 1000).toFixed(1)}s`;\n const minutes = Math.floor(ms / 60000);\n const seconds = Math.floor((ms % 60000) / 1000);\n return `${minutes}m ${seconds}s`;\n }\n \n /**\n * Get step types for display\n */\n getStepTypes(): string[] {\n return Object.keys(this.stats.stepsByType).sort();\n }\n \n /**\n * Pluralize step type based on count\n */\n pluralizeStepType(type: string, count: number): string {\n if (count === 1) {\n return type;\n }\n \n // Handle special cases\n switch (type.toLowerCase()) {\n case 'analysis':\n return 'Analyses';\n case 'summary':\n return 'Summaries';\n default:\n // Default pluralization - just add 's'\n return type + 's';\n }\n }\n \n /**\n * Format markdown content for display\n */\n formatMarkdown(markdown: string): string {\n // Basic markdown formatting\n // This is a simple implementation - you might want to use a proper markdown library\n let html = markdown;\n \n // Headers\n html = html.replace(/^### (.*$)/gim, '<h4>$1</h4>');\n html = html.replace(/^## (.*$)/gim, '<h3>$1</h3>');\n html = html.replace(/^# (.*$)/gim, '<h2>$1</h2>');\n \n // Bold\n html = html.replace(/\\*\\*(.*)\\*\\*/g, '<strong>$1</strong>');\n \n // Italic\n html = html.replace(/\\*(.*)\\*/g, '<em>$1</em>');\n \n // Detect and linkify URLs\n // This regex matches URLs starting with http://, https://, or www.\n const urlRegex = /(?:https?:\\/\\/|www\\.)[^\\s<]+/gi;\n html = html.replace(urlRegex, (url) => {\n // Ensure the URL has a protocol\n const href = url.startsWith('http') ? url : `https://${url}`;\n // Truncate long URLs for display\n const displayUrl = url.length > 50 ? url.substring(0, 50) + '...' : url;\n return `<a href=\"${href}\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"color: #2196f3; text-decoration: underline; font-size: inherit;\">${displayUrl}</a>`;\n });\n \n // Line breaks\n html = html.replace(/\\n/g, '<br>');\n \n // Lists\n html = html.replace(/^\\* (.+)$/gim, '<li>$1</li>');\n html = html.replace(/(<li>.*<\\/li>)/s, '<ul>$1</ul>');\n \n // Code blocks\n html = html.replace(/```(.*?)```/gs, '<pre><code>$1</code></pre>');\n \n // Inline code\n html = html.replace(/`([^`]+)`/g, '<code>$1</code>');\n \n return html;\n }\n \n /**\n * Append new live steps without re-rendering entire tree\n */\n private appendNewLiveSteps(newSteps: MJAIAgentRunStepEntityExtended[]): void {\n if (!newSteps || newSteps.length === 0 || !this.viewInitialized || !this.executionNodesContainer) {\n return;\n }\n \n console.log('📝 Appending', newSteps.length, 'live steps');\n \n // Sort steps by StepNumber\n const sortedSteps = [...newSteps].sort((a, b) => (a.StepNumber || 0) - (b.StepNumber || 0));\n \n // Mark previously new steps as completed\n if (this.newlyAddedNodeIds.size > 0) {\n this.markPreviouslyNewNodesAsComplete();\n this.newlyAddedNodeIds.clear();\n }\n \n let hasNewSteps = false;\n \n for (const step of sortedSteps) {\n // Skip if already processed\n if (this.processedStepIds.has(step.ID)) {\n // Update existing step if status changed\n const componentRef = this.nodeComponentMap.get(step.ID);\n if (componentRef && componentRef.instance.step.Status !== step.Status) {\n componentRef.instance.step = step;\n componentRef.changeDetectorRef.detectChanges();\n }\n continue;\n }\n \n // Mark as processed and newly added\n this.processedStepIds.add(step.ID);\n this.newlyAddedNodeIds.add(step.ID);\n hasNewSteps = true;\n \n // Determine depth based on parent hierarchy\n const depth = this.calculateStepDepth(step);\n const agentPath = this.buildAgentPath(step);\n \n // Create component for new step\n this.createStepComponent(step, depth, agentPath);\n \n // Handle sub-agent steps recursively\n if (step.StepType === 'Sub-Agent' && step.SubAgentRun?.Steps) {\n const subAgentPath = [...agentPath, step.SubAgentRun.Agent || 'Sub-Agent'];\n this.renderSteps(step.SubAgentRun.Steps, depth + 1, subAgentPath);\n }\n }\n \n if (hasNewSteps) {\n // After processing all new steps, ensure only the last one shows as running\n this.ensureOnlyLastStepIsRunning();\n \n this.updateCurrentStep();\n this.calculateStats();\n \n // Force change detection to ensure new components are rendered\n this.cdr.detectChanges();\n \n // Auto-scroll if user hasn't interacted\n setTimeout(() => {\n this.autoScrollToBottom();\n }, 100);\n }\n }\n \n /**\n * Calculate step depth based on parent hierarchy\n */\n private calculateStepDepth(step: MJAIAgentRunStepEntityExtended): number {\n // For now, return 0 for top-level steps\n // In live mode, depth information should come from the streaming data\n return 0;\n }\n \n /**\n * Build agent path for a step\n */\n private buildAgentPath(step: MJAIAgentRunStepEntityExtended): string[] {\n // In live mode, agent path should come from streaming data\n // For now, return empty array\n return [];\n }\n \n \n /**\n * Check if execution is complete\n */\n isExecutionComplete(): boolean {\n return this.stats.completedSteps > 0 && \n this.stats.completedSteps === this.stats.totalSteps - this.stats.failedSteps;\n }\n \n /**\n * Handle view run button click\n */\n onViewRunClick(): void {\n if (this.agentRun) {\n this.viewRunClick.emit({ runId: this.agentRun.ID, runType: 'agent' });\n }\n }\n \n \n /**\n * Expands all nodes that have sub-agent children\n */\n private expandAllNodes(): void {\n console.log('🔄 Auto-expanding nodes with sub-agents');\n \n // Expand all steps that have sub-agent runs\n this.nodeComponentMap.forEach((componentRef, stepId) => {\n const step = componentRef.instance.step;\n if (step.StepType === 'Sub-Agent' && step.SubAgentRun?.Steps?.length) {\n this.expandedStates.set(stepId, true);\n componentRef.instance.expanded = true;\n componentRef.changeDetectorRef.detectChanges();\n console.log(`Expanded sub-agent: ${step.StepName}`);\n }\n });\n \n // Trigger change detection\n this.cdr.markForCheck();\n this.cdr.detectChanges();\n \n // Scroll to top after expansion\n setTimeout(() => {\n this.scrollToTop();\n }, 100);\n }\n \n /**\n * Scroll the execution tree to the top\n */\n private scrollToTop(): void {\n if (this.executionTreeContainer) {\n const element = this.executionTreeContainer.nativeElement;\n element.scrollTo({\n top: 0,\n behavior: 'smooth'\n });\n }\n }\n \n /**\n * Check if there is content to display\n */\n hasContent(): boolean {\n return this.nodeComponentMap.size > 0;\n }\n}"]}
@@ -707,6 +707,8 @@ export declare class AITestHarnessComponent implements OnInit, OnDestroy, OnChan
707
707
  * @param promptRunId - The ID of the prompt run to load
708
708
  */
709
709
  private loadFromPromptRun;
710
+ /** Case-insensitive UUID comparison for configuration ID matching in templates. */
711
+ IsConfigMatchById(config: MJAIConfigurationEntity, id: string | undefined): boolean;
710
712
  static ɵfac: i0.ɵɵFactoryDeclaration<AITestHarnessComponent, never>;
711
713
  static ɵcmp: i0.ɵɵComponentDeclaration<AITestHarnessComponent, "mj-ai-test-harness", never, { "mode": { "alias": "mode"; "required": false; }; "entity": { "alias": "entity"; "required": false; }; "originalPromptRunId": { "alias": "originalPromptRunId"; "required": false; }; "systemPromptOverride": { "alias": "systemPromptOverride"; "required": false; }; "aiAgent": { "alias": "aiAgent"; "required": false; }; "isVisible": { "alias": "isVisible"; "required": false; }; }, { "visibilityChange": "visibilityChange"; "runOpened": "runOpened"; "minimizeRequested": "minimizeRequested"; }, never, never, false, never>;
712
714
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ai-test-harness.component.d.ts","sourceRoot":"","sources":["../../src/lib/ai-test-harness.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAyB,gBAAgB,EAAmB,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACnN,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAEnE,OAAO,EAAE,aAAa,EAAgC,MAAM,gCAAgC,CAAC;AAC7F,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,8BAA8B,EAA+B,MAAM,8BAA8B,CAAC;AAC1L,OAAO,EAAyB,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAK/F,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;;AAKjD;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEjD;;;GAGG;AAEH;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAChC,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;CACpD;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACpD,yCAAyC;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,6CAA6C;IAC7C,SAAS,EAAE,IAAI,CAAC;IAChB,uDAAuD;IACvD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uDAAuD;IACvD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qDAAqD;IACrD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sEAAsE;IACtE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,+CAA+C;IAC/C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oCAAoC;IACpC,aAAa,CAAC,EAAE,GAAG,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAC9B,mDAAmD;IACnD,EAAE,EAAE,MAAM,CAAC;IACX,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,wEAAwE;IACxE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClC,oEAAoE;IACpE,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACxC,qEAAqE;IACrE,cAAc,CAAC,EAAE,GAAG,CAAC;IACrB,sCAAsC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uCAAuC;IACvC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8CAA8C;IAC9C,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,4CAA4C;IAC5C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,6CAA6C;IAC7C,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,8CAA8C;IAC9C,SAAS,EAAE,IAAI,CAAC;IAChB,8CAA8C;IAC9C,SAAS,EAAE,IAAI,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,qBAMa,sBAAuB,YAAW,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB;IASrF,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,MAAM;IAZlB;;;;;;OAMG;gBAES,SAAS,EAAE,YAAY,EACvB,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,EAClC,GAAG,EAAE,iBAAiB,EACtB,MAAM,EAAE,MAAM;IAG1B,yDAAyD;IAChD,IAAI,EAAE,eAAe,CAAW;IAEzC,2DAA2D;IAClD,MAAM,EAAE,uBAAuB,GAAG,wBAAwB,GAAG,IAAI,CAAQ;IAElF,6EAA6E;IACpE,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEnD,2EAA2E;IAClE,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEpD,gFAAgF;IACzE,gBAAgB,EAAE,OAAO,CAAS;IAEzC,oEAAoE;IACpE,OAAO,CAAC,yBAAyB,CAA6B;IAE9D,yEAAyE;IACzE,IACI,OAAO,IAAI,uBAAuB,GAAG,IAAI,CAE5C;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,uBAAuB,GAAG,IAAI,EAKhD;IAED,OAAO,CAAC,UAAU,CAAkB;IAEpC;;;OAGG;IACH,IACI,SAAS,IAAI,OAAO,CAEvB;IACD,IAAI,SAAS,CAAC,KAAK,EAAE,OAAO,EAM3B;IAED,2FAA2F;IACjF,gBAAgB,wBAA+B;IAEzD;;OAEG;IACO,SAAS;eAA6B,MAAM;iBAAW,OAAO,GAAG,QAAQ;OAAM;IAEzF;;OAEG;IACO,iBAAiB,qBAA4B;IAEvD,sFAAsF;IACtD,OAAO,CAAC,iBAAiB,CAAc;IAEvE,uFAAuF;IAC/D,OAAO,CAAC,SAAS,CAAc;IAEvD,8CAA8C;IACnB,OAAO,CAAC,YAAY,CAAqB;IAEpE,yCAAyC;IACX,OAAO,CAAC,eAAe,CAAC,CAAa;IAGnE,yEAAyE;IAClE,oBAAoB,EAAE,mBAAmB,EAAE,CAAM;IAExD,yDAAyD;IAClD,kBAAkB,EAAE,MAAM,CAAM;IAEvC,0DAA0D;IACnD,WAAW,UAAS;IAG3B,sFAAsF;IAC/E,cAAc,EAAE,mBAAmB,EAAE,CAAM;IAGlD,8CAA8C;IACvC,iBAAiB,EAAE,mBAAmB,EAAE,CAAM;IAErD,6CAA6C;IACtC,eAAe,EAAE,MAAM,CAAM;IAEpC,8CAA8C;IACvC,gBAAgB,EAAE,MAAM,CAAM;IAErC,kDAAkD;IAC3C,gBAAgB,EAAE,GAAG,EAAE,CAAM;IAEpC,qDAAqD;IAC9C,uBAAuB,EAAE,MAAM,CAAM;IAE5C,kCAAkC;IAC3B,uBAAuB,EAAE,uBAAuB,EAAE,CAAM;IAE/D,wDAAwD;IACxD,OAAO,CAAC,gBAAgB,CAAc;IAEtC,0CAA0C;IACnC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEvC,sDAAsD;IAC/C,cAAc,EAAE,OAAO,CAAS;IAEvC,oDAAoD;IAC7C,oBAAoB,EAAE,MAAM,CAAM;IAEzC,8BAA8B;IACvB,cAAc;qBACI,MAAM,GAAG,IAAI;cACpB,MAAM,GAAG,IAAI;cACb,MAAM,GAAG,IAAI;cACb,MAAM,GAAG,IAAI;0BACD,MAAM,GAAG,IAAI;yBACd,MAAM,GAAG,IAAI;cACxB,MAAM,GAAG,IAAI;uBACN,MAAM,EAAE;;;MAG/B;IAEF,4CAA4C;IACrC,iBAAiB,EAAE,MAAM,CAAM;IAEtC,oDAAoD;IAC7C,sBAAsB,EAAE,OAAO,CAAS;IAE/C,+CAA+C;IACxC,eAAe,EAAE,GAAG,EAAE,CAAM;IAEnC,wCAAwC;IACxC,SAAS,CAAC,qBAAqB;;;QAM7B;IAEF,oDAAoD;IAC7C,sBAAsB;;;MAAiC;IAG9D,6DAA6D;IACtD,WAAW,UAAQ;IAE1B,0CAA0C;IACnC,SAAS,EAAE,gBAAgB,GAAG,kBAAkB,GAAG,eAAe,GAAG,mBAAmB,GAAG,eAAe,GAAG,oBAAoB,CAAoB;IAE5J,oEAAoE;IAC7D,kBAAkB,EAAE,iBAAiB,EAAE,CAAM;IAEpD,6DAA6D;IACtD,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEnD,6CAA6C;IACtC,cAAc,EAAE,OAAO,CAAS;IAEvC,oDAAoD;IAC7C,kBAAkB,EAAE,MAAM,CAAM;IAEvC,6CAA6C;IAC7C,OAAO,CAAC,aAAa,CAA0B;IAG/C,+CAA+C;IACxC,oBAAoB,EAAE,MAAM,GAAG,YAAY,CAAgB;IAElE,6DAA6D;IACtD,eAAe,EAAE,0BAA0B,GAAG,IAAI,CAAQ;IAEjE;;OAEG;IACI,cAAc,EAAE,8BAA8B,EAAE,CAAM;IAE7D,sEAAsE;IACtE,OAAO,CAAC,kBAAkB,CAAuB;IAEjD,mDAAmD;IACnD,OAAO,CAAC,cAAc,CAAuB;IAE7C,wCAAwC;IACxC,OAAO,CAAC,sBAAsB,CAAa;IAC3C,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,eAAe,CAAa;IAEpC,mDAAmD;IAC5C,cAAc,EAAE,OAAO,CAAS;IAEvC,gDAAgD;IACzC,mBAAmB,EAAE,MAAM,CAAM;IAExC,qEAAqE;IAC9D,oBAAoB,EAAE,MAAM,CAAM;IAEzC,mDAAmD;IAC5C,qBAAqB,EAAE,OAAO,CAAS;IAE9C,wCAAwC;IACxC,OAAO,CAAC,uBAAuB,CAAkC;IAEjE,wDAAwD;IACxD,OAAO,CAAC,kBAAkB,CAAoC;IAG9D,gDAAgD;IAChD,OAAO,CAAC,QAAQ,CAAuB;IAEvC,oEAAoE;IACpE,OAAO,CAAC,YAAY,CAAS;IAG7B,gEAAgE;IAChE,OAAO,CAAC,mBAAmB,CAAM;IAEjC,6DAA6D;IAC7D,OAAO,CAAC,SAAS,CAAkB;IAEnC,mEAAmE;IACnE,OAAO,CAAC,WAAW,CAAS;IAE5B,4DAA4D;IAC5D,OAAO,CAAC,iBAAiB,CAA2B;IAEpD,gEAAgE;IAChE,OAAO,CAAC,eAAe,CAA2B;IAElD;;;OAGG;IACG,QAAQ;IAkCd;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,aAAa;IAuBlC;;;OAGG;IACH,WAAW;IAcX;;;OAGG;IACH,kBAAkB;IAgBlB,OAAO,CAAC,iBAAiB;IA2FzB;;;OAGG;YACW,mBAAmB;IA0DjC,qEAAqE;IACrE,OAAO,CAAC,YAAY,CAAa;IAEjC;;OAEG;YACW,mBAAmB;IA2DjC;;OAEG;YACW,iBAAiB;IA0C/B;;;OAGG;YACW,2BAA2B;IA4BzC;;OAEG;IACI,sBAAsB;IAsB7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwC3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqB1B;;;OAGG;YACW,sBAAsB;IA2CpC;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAoBpC;;OAEG;IACI,qBAAqB;IAuD5B;;;OAGG;IACI,YAAY;IA0CnB;;OAEG;IACI,eAAe;IAsBtB;;;OAGG;IACI,KAAK;IAKZ;;;OAGG;IACI,aAAa;IAIpB;;;OAGG;IACI,SAAS,CAAC,GAAG,EAAE,gBAAgB,GAAG,kBAAkB,GAAG,eAAe,GAAG,mBAAmB,GAAG,eAAe,GAAG,oBAAoB;IA2D5I;;;OAGG;IACU,2BAA2B,CAAC,OAAO,EAAE,mBAAmB;IAYrE;;;OAGG;YACW,YAAY;YAOZ,oBAAoB;YAOpB,mBAAmB;IAuBjC;;;;;;;;;;OAUG;IACH;;;OAGG;IACU,YAAY;IAUzB;;;OAGG;IACI,uBAAuB;IAejB,WAAW;YA4CV,YAAY;YAiOZ,aAAa;IA+K3B,OAAO,CAAC,oBAAoB;IA2B5B,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,oBAAoB;IAiB5B;;;OAGG;IACI,gBAAgB;IAQvB;;;OAGG;IACI,mBAAmB,CAAC,KAAK,EAAE,MAAM;IAIxC;;;OAGG;IACI,mBAAmB;IAQ1B;;;OAGG;IACI,sBAAsB,CAAC,KAAK,EAAE,MAAM;IAI3C;;;OAGG;IACI,iBAAiB;IASxB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,sBAAsB;IA0B9B;;OAEG;IACH,OAAO,CAAC,aAAa;IAUrB;;;;;;;;;;OAUG;IACI,gBAAgB;IA8BhB,sBAAsB;IAI7B;;OAEG;IACI,uBAAuB;IAoE9B;;OAEG;IACI,gBAAgB;IAQvB;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAUlC,OAAO,CAAC,oBAAoB;IA6BrB,gBAAgB,CAAC,YAAY,EAAE,iBAAiB;IAUvD;;OAEG;IACI,uBAAuB;IAQ9B;;OAEG;IACI,sBAAsB;IAK7B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAoGb,kBAAkB,CAAC,YAAY,EAAE,iBAAiB,EAAE,KAAK,EAAE,KAAK;IAwBtE,kBAAkB;IAiDlB,kBAAkB;IAIlB,cAAc,CAAC,KAAK,EAAE,KAAK;IA2GlC;;;;OAIG;IACI,cAAc,CAAC,KAAK,EAAE,aAAa;IAO1C;;;;OAIG;IACI,eAAe,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM;IAI5D;;;;OAIG;IACI,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAO1C;;;;;OAKG;IACI,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAYjD,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAUtD,OAAO,CAAC,uBAAuB;IAe/B;;;OAGG;IACI,iBAAiB,CAAC,OAAO,EAAE,mBAAmB;IA+DrD;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,IAAI;IAO7B;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAShC;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAA;KAAE;IAWnE;;;OAGG;IACU,WAAW,CAAC,OAAO,EAAE,mBAAmB;IAwBrD;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;;;OAIG;IACI,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAU9C;;;;;OAKG;IACI,UAAU,CAAC,OAAO,EAAE,GAAG,GAAG,MAAM;IAuBvC;;;;OAIG;IACI,UAAU,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO;IAaxC;;;OAGG;IACI,qBAAqB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAIhE;;;;OAIG;IACI,4BAA4B,CAAC,OAAO,EAAE,mBAAmB,GAAG,QAAQ;IAiB3E;;;;;OAKG;IACI,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM;IA2BhE,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ;IAuDzC,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,GAAG,QAAQ;IAuBlE;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA2BhC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAS3B;;;OAGG;IAEH;;;;OAIG;IACI,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM;IAehE;;OAEG;IACI,eAAe;IAStB;;OAEG;IACI,eAAe;IAUtB;;;;;OAKG;IACH,OAAO,CAAC,2BAA2B;IAuDnC;;;;;OAKG;IACI,qBAAqB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO;IAcnE;;;;;OAKG;IACI,aAAa,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO;IAI3D,OAAO,CAAC,UAAU;IAMlB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAU5B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAsC7B;;OAEG;IACH,OAAO,CAAC,aAAa;IAKrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAOtB;;OAEG;IACI,aAAa,IAAI,MAAM;IAK9B;;OAEG;IACI,kBAAkB,IAAI,MAAM;IAcnC;;OAEG;IACI,aAAa,IAAI,OAAO;IAO/B;;OAEG;IACI,gBAAgB,IAAI,MAAM;IAOjC;;OAEG;IACI,mBAAmB;IAY1B;;OAEG;IACI,oBAAoB;IAI3B;;;OAGG;IACI,kBAAkB,CAAC,EAAC,KAAK,EAAE,OAAO,EAAC,EAAE;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAA;KAAC;IAQxF;;;OAGG;YACW,iBAAiB;yCA17FtB,sBAAsB;2CAAtB,sBAAsB;CAyhGlC"}
1
+ {"version":3,"file":"ai-test-harness.component.d.ts","sourceRoot":"","sources":["../../src/lib/ai-test-harness.component.ts"],"names":[],"mappings":"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"}