@memberjunction/ng-core-entity-forms 6.2.0-edge.4 → 6.2.0-edge.5

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.
Files changed (132) hide show
  1. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +7 -0
  2. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
  3. package/dist/lib/custom/AIAgents/ai-agent-form.component.js +31 -17
  4. package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
  5. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts +7 -1
  6. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts.map +1 -1
  7. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +191 -178
  8. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
  9. package/dist/lib/custom/AIPromptRuns/prompt-run-data-capture-note.component.d.ts +48 -0
  10. package/dist/lib/custom/AIPromptRuns/prompt-run-data-capture-note.component.d.ts.map +1 -0
  11. package/dist/lib/custom/AIPromptRuns/prompt-run-data-capture-note.component.js +195 -0
  12. package/dist/lib/custom/AIPromptRuns/prompt-run-data-capture-note.component.js.map +1 -0
  13. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +324 -322
  14. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
  15. package/dist/lib/custom/RecordProcesses/record-process-form.component.d.ts.map +1 -1
  16. package/dist/lib/custom/RecordProcesses/record-process-form.component.js +6 -3
  17. package/dist/lib/custom/RecordProcesses/record-process-form.component.js.map +1 -1
  18. package/dist/lib/custom/SearchScopes/searchscope-form.component.d.ts +3 -3
  19. package/dist/lib/custom/SearchScopes/searchscope-form.component.d.ts.map +1 -1
  20. package/dist/lib/custom/SearchScopes/searchscope-form.component.js +5 -7
  21. package/dist/lib/custom/SearchScopes/searchscope-form.component.js.map +1 -1
  22. package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.d.ts.map +1 -1
  23. package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.js +8 -8
  24. package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.js.map +1 -1
  25. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts +37 -5
  26. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts.map +1 -1
  27. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js +155 -79
  28. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js.map +1 -1
  29. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts +8 -0
  30. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts.map +1 -1
  31. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +59 -8
  32. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js.map +1 -1
  33. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +34 -9
  34. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
  35. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +164 -43
  36. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
  37. package/dist/lib/custom/ai-agent-run/run-tree-timeline-projection.js +3 -1
  38. package/dist/lib/custom/ai-agent-run/run-tree-timeline-projection.js.map +1 -1
  39. package/dist/lib/custom/custom-forms.module.d.ts +82 -80
  40. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  41. package/dist/lib/custom/custom-forms.module.js +10 -0
  42. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  43. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.d.ts.map +1 -1
  44. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +65 -47
  45. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
  46. package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js +115 -117
  47. package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js.map +1 -1
  48. package/dist/lib/generated/Entities/MJAIAgentRunStep/mjaiagentrunstep.form.component.d.ts.map +1 -1
  49. package/dist/lib/generated/Entities/MJAIAgentRunStep/mjaiagentrunstep.form.component.js +64 -24
  50. package/dist/lib/generated/Entities/MJAIAgentRunStep/mjaiagentrunstep.form.component.js.map +1 -1
  51. package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.js +74 -52
  52. package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.js.map +1 -1
  53. package/dist/lib/generated/Entities/MJAIAgentSessionRecordingShard/mjaiagentsessionrecordingshard.form.component.d.ts +10 -0
  54. package/dist/lib/generated/Entities/MJAIAgentSessionRecordingShard/mjaiagentsessionrecordingshard.form.component.d.ts.map +1 -0
  55. package/dist/lib/generated/Entities/MJAIAgentSessionRecordingShard/mjaiagentsessionrecordingshard.form.component.js +86 -0
  56. package/dist/lib/generated/Entities/MJAIAgentSessionRecordingShard/mjaiagentsessionrecordingshard.form.component.js.map +1 -0
  57. package/dist/lib/generated/Entities/MJAIAgentUserPolicy/mjaiagentuserpolicy.form.component.d.ts +10 -0
  58. package/dist/lib/generated/Entities/MJAIAgentUserPolicy/mjaiagentuserpolicy.form.component.d.ts.map +1 -0
  59. package/dist/lib/generated/Entities/MJAIAgentUserPolicy/mjaiagentuserpolicy.form.component.js +132 -0
  60. package/dist/lib/generated/Entities/MJAIAgentUserPolicy/mjaiagentuserpolicy.form.component.js.map +1 -0
  61. package/dist/lib/generated/Entities/MJAIBridgeAgentIdentity/mjaibridgeagentidentity.form.component.js +12 -10
  62. package/dist/lib/generated/Entities/MJAIBridgeAgentIdentity/mjaibridgeagentidentity.form.component.js.map +1 -1
  63. package/dist/lib/generated/Entities/MJAIModel/mjaimodel.form.component.d.ts.map +1 -1
  64. package/dist/lib/generated/Entities/MJAIModel/mjaimodel.form.component.js +86 -32
  65. package/dist/lib/generated/Entities/MJAIModel/mjaimodel.form.component.js.map +1 -1
  66. package/dist/lib/generated/Entities/MJAIPersona/mjaipersona.form.component.d.ts.map +1 -1
  67. package/dist/lib/generated/Entities/MJAIPersona/mjaipersona.form.component.js +25 -7
  68. package/dist/lib/generated/Entities/MJAIPersona/mjaipersona.form.component.js.map +1 -1
  69. package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.d.ts.map +1 -1
  70. package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js +180 -160
  71. package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js.map +1 -1
  72. package/dist/lib/generated/Entities/MJActionParam/mjactionparam.form.component.js +16 -14
  73. package/dist/lib/generated/Entities/MJActionParam/mjactionparam.form.component.js.map +1 -1
  74. package/dist/lib/generated/Entities/MJArchiveConfiguration/mjarchiveconfiguration.form.component.js +23 -21
  75. package/dist/lib/generated/Entities/MJArchiveConfiguration/mjarchiveconfiguration.form.component.js.map +1 -1
  76. package/dist/lib/generated/Entities/MJArchiveRun/mjarchiverun.form.component.js +21 -19
  77. package/dist/lib/generated/Entities/MJArchiveRun/mjarchiverun.form.component.js.map +1 -1
  78. package/dist/lib/generated/Entities/MJCommunicationProvider/mjcommunicationprovider.form.component.js +30 -20
  79. package/dist/lib/generated/Entities/MJCommunicationProvider/mjcommunicationprovider.form.component.js.map +1 -1
  80. package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js +69 -75
  81. package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js.map +1 -1
  82. package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.d.ts.map +1 -1
  83. package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js +35 -17
  84. package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js.map +1 -1
  85. package/dist/lib/generated/Entities/MJFeaturePipelineVersion/mjfeaturepipelineversion.form.component.d.ts +10 -0
  86. package/dist/lib/generated/Entities/MJFeaturePipelineVersion/mjfeaturepipelineversion.form.component.d.ts.map +1 -0
  87. package/dist/lib/generated/Entities/MJFeaturePipelineVersion/mjfeaturepipelineversion.form.component.js +130 -0
  88. package/dist/lib/generated/Entities/MJFeaturePipelineVersion/mjfeaturepipelineversion.form.component.js.map +1 -0
  89. package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.js +26 -14
  90. package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.js.map +1 -1
  91. package/dist/lib/generated/Entities/MJFeatureValueCache/mjfeaturevaluecache.form.component.js +23 -19
  92. package/dist/lib/generated/Entities/MJFeatureValueCache/mjfeaturevaluecache.form.component.js.map +1 -1
  93. package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.js +29 -27
  94. package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.js.map +1 -1
  95. package/dist/lib/generated/Entities/MJProcessRunDetail/mjprocessrundetail.form.component.js +17 -15
  96. package/dist/lib/generated/Entities/MJProcessRunDetail/mjprocessrundetail.form.component.js.map +1 -1
  97. package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.d.ts.map +1 -1
  98. package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js +27 -9
  99. package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js.map +1 -1
  100. package/dist/lib/generated/Entities/MJTest/mjtest.form.component.d.ts.map +1 -1
  101. package/dist/lib/generated/Entities/MJTest/mjtest.form.component.js +24 -6
  102. package/dist/lib/generated/Entities/MJTest/mjtest.form.component.js.map +1 -1
  103. package/dist/lib/generated/Entities/MJTestRun/mjtestrun.form.component.d.ts.map +1 -1
  104. package/dist/lib/generated/Entities/MJTestRun/mjtestrun.form.component.js +29 -11
  105. package/dist/lib/generated/Entities/MJTestRun/mjtestrun.form.component.js.map +1 -1
  106. package/dist/lib/generated/Entities/MJTheme/mjtheme.form.component.d.ts.map +1 -1
  107. package/dist/lib/generated/Entities/MJTheme/mjtheme.form.component.js +13 -3
  108. package/dist/lib/generated/Entities/MJTheme/mjtheme.form.component.js.map +1 -1
  109. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
  110. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +176 -122
  111. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
  112. package/dist/lib/generated/Entities/MJUserRoutine/mjuserroutine.form.component.js +31 -25
  113. package/dist/lib/generated/Entities/MJUserRoutine/mjuserroutine.form.component.js.map +1 -1
  114. package/dist/lib/generated/generated-forms.module.d.ts +129 -126
  115. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  116. package/dist/lib/generated/generated-forms.module.js +9 -0
  117. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  118. package/dist/lib/panels/feature-values/feature-values.logic.d.ts +55 -0
  119. package/dist/lib/panels/feature-values/feature-values.logic.d.ts.map +1 -0
  120. package/dist/lib/panels/feature-values/feature-values.logic.js +88 -0
  121. package/dist/lib/panels/feature-values/feature-values.logic.js.map +1 -0
  122. package/dist/lib/panels/feature-values/feature-values.panel.d.ts +39 -0
  123. package/dist/lib/panels/feature-values/feature-values.panel.d.ts.map +1 -0
  124. package/dist/lib/panels/feature-values/feature-values.panel.js +303 -0
  125. package/dist/lib/panels/feature-values/feature-values.panel.js.map +1 -0
  126. package/dist/lib/shared/components/template-editor.component.js +2 -2
  127. package/dist/lib/shared/components/template-editor.component.js.map +1 -1
  128. package/dist/public-api.d.ts +1 -0
  129. package/dist/public-api.d.ts.map +1 -1
  130. package/dist/public-api.js +1 -0
  131. package/dist/public-api.js.map +1 -1
  132. package/package.json +48 -48
@@ -1 +1 @@
1
- {"version":3,"file":"ai-agent-run-timeline.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/ai-agent-run/ai-agent-run-timeline.component.ts","../../../../src/lib/custom/ai-agent-run/ai-agent-run-timeline.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\nimport { Subject, Observable, combineLatest, BehaviorSubject } from 'rxjs';\nimport { takeUntil, map, shareReplay, filter } from 'rxjs/operators';\nimport { MJAIAgentRunEntity, MJAIAgentRunStepEntity, MJActionExecutionLogEntity, MJAIPromptRunEntity, MJTaskEntity } from '@memberjunction/core-entities';\nimport { AIAgentRunDataHelper } from './ai-agent-run-data.service';\nimport { AIEngineBase } from '@memberjunction/ai-engine-base';\nimport { UUIDsEqual } from '@memberjunction/global';\n\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nimport { FindAgentRunTreeNodes, type AgentRunTreeNode } from '@memberjunction/ai-core-plus';\nimport { NormalizeStatus, ProjectRunTreeToTimeline } from './run-tree-timeline-projection';\nimport { SortAgentRunStepsByExecutionOrder } from './agent-run-step-order';\nimport { ActionEngineBase } from '@memberjunction/actions-base';\n\n/**\n * Node kinds whose row is a LOOP, not the work inside it.\n *\n * A ForEach carries the ActionID of the action it repeats, so resolving an icon from it would draw\n * \"a Google search\" on a row that is a loop over five of them — losing the one distinction the row\n * exists to make.\n */\nconst LOOP_KINDS: ReadonlySet<string> = new Set(['ForEach', 'While']);\nexport interface TimelineItem {\n id: string; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n /**\n * What the row represents.\n *\n * `taskgraph` and `task` are dispatcher work — a graph that outlives the run that submitted it,\n * and the steps inside it. They are rendered as ordinary rows rather than as an embedded diagram,\n * and colour-coded so their provenance is visible without opening anything.\n */\n type: 'step' | 'subrun' | 'action' | 'prompt' | 'taskgraph' | 'task'; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n /**\n * Where this row's work ran, when that is not obvious from its type.\n *\n * `'workflow'` means it ran on the task-graph dispatcher and outlives the agent run that\n * submitted it. Kept separate from `type` on purpose: a workflow step that runs an action IS an\n * action and should render as one — provenance styles it, it does not redefine it.\n */\n provenance?: 'workflow'; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n title: string; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n subtitle: string; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n status: string; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n /**\n * When this row started, or NULL when it has not.\n *\n * Nullable on purpose. A projection that needed \"sorts last\" once filled this with the maximum\n * Date, and every unstarted row then displayed that sentinel as a real clock time — identical on\n * every row and indistinguishable from data. Ordering belongs to whatever produced the rows; a row\n * that has not run has no start time, and says so by having none.\n */\n startTime: Date | null; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n endTime?: Date; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n duration?: string; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n icon: string; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n logoUrl?: string; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n color: string; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n data: any; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n children?: TimelineItem[]; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n level: number; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n parentId?: string; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n isExpanded?: boolean; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n childrenLoaded?: boolean; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n hasNoChildren?: boolean; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n}\n\n@Component({\n standalone: false,\n selector: 'mj-ai-agent-run-timeline',\n templateUrl: './ai-agent-run-timeline.component.html',\n styleUrls: ['./ai-agent-run-timeline.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AIAgentRunTimelineComponent extends BaseAngularComponent implements OnInit, OnDestroy {\n @Input() AiAgentRunId!: string;\n\n /** @deprecated Use {@link AiAgentRunId}. */\n @Input() set aiAgentRunId(value: string) {\n this.AiAgentRunId = value;\n }\n /** @deprecated Use {@link AiAgentRunId}. */\n get aiAgentRunId(): string {\n return this.AiAgentRunId;\n }\n\n /**\n * The run's execution tree, loaded ONCE by the form and shared with every tab.\n *\n * Received rather than fetched: three tabs need the same structure, and letting each load its own\n * issues the same recursive query three times AND lets the tabs disagree — a tab that loaded a\n * second earlier shows a different run than the one beside it.\n */\n /**\n * Setter, not a plain field: a TaskGraph step's row takes its STATUS from the graph (see\n * `graphNodeForStep`), and the tree usually arrives after the step rows have already been built.\n * Republishing rebuilds them, so a dispatched workflow stops reading Completed the moment the\n * tree says it is still running.\n */\n @Input()\n public set RunTree(value: AgentRunTreeNode | null) {\n this.runTree = value;\n this.runTree$.next(value);\n }\n public get RunTree(): AgentRunTreeNode | null {\n return this.runTree;\n }\n private runTree: AgentRunTreeNode | null = null;\n private runTree$ = new BehaviorSubject<AgentRunTreeNode | null>(null);\n @Input() DataHelper!: AIAgentRunDataHelper;\n\n /** @deprecated Use {@link DataHelper}. */\n @Input() set dataHelper(value: AIAgentRunDataHelper) {\n this.DataHelper = value;\n }\n /** @deprecated Use {@link DataHelper}. */\n get dataHelper(): AIAgentRunDataHelper {\n return this.DataHelper;\n } // Data helper passed from parent\n @Output() ItemSelected = new EventEmitter<TimelineItem>();\n\n /**\n * @deprecated Use {@link ItemSelected}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (itemSelected) keeps working. Must stay AFTER ItemSelected: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() itemSelected = this.ItemSelected;\n @Output() NavigateToEntity = new EventEmitter<{ entityName: string; recordId: string }>();\n\n /**\n * @deprecated Use {@link NavigateToEntity}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (navigateToEntity) keeps working. Must stay AFTER NavigateToEntity: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() navigateToEntity = this.NavigateToEntity;\n\n private destroy$ = new Subject<void>();\n /** Resolved once the action cache is warm, so a first paint without icons can be re-rendered with them. */\n private actionsReady = false;\n /**\n * Execution-log id → action id, for the RUN-STEP path only.\n *\n * The tree path needs none of this — it carries `ActionID` outright. A run step of type `Actions`\n * still names only its log, so this map stays for that case, built from logs the data service has\n * already fetched by id.\n */\n private actionIDByLogID = new Map<string, string>();\n \n // Public observables from data helper\n Steps$!: Observable<MJAIAgentRunStepEntity[]>;\n\n /** @deprecated Use {@link Steps$}. */\n get steps$(): Observable<MJAIAgentRunStepEntity[]> {\n return this.Steps$;\n }\n /** @deprecated Use {@link Steps$}. */\n set steps$(value: Observable<MJAIAgentRunStepEntity[]>) {\n this.Steps$ = value;\n }\n SubRuns$!: Observable<MJAIAgentRunEntity[]>;\n\n /** @deprecated Use {@link SubRuns$}. */\n get subRuns$(): Observable<MJAIAgentRunEntity[]> {\n return this.SubRuns$;\n }\n /** @deprecated Use {@link SubRuns$}. */\n set subRuns$(value: Observable<MJAIAgentRunEntity[]>) {\n this.SubRuns$ = value;\n }\n ActionLogs$!: Observable<MJActionExecutionLogEntity[]>;\n\n /** @deprecated Use {@link ActionLogs$}. */\n get actionLogs$(): Observable<MJActionExecutionLogEntity[]> {\n return this.ActionLogs$;\n }\n /** @deprecated Use {@link ActionLogs$}. */\n set actionLogs$(value: Observable<MJActionExecutionLogEntity[]>) {\n this.ActionLogs$ = value;\n }\n PromptRuns$!: Observable<MJAIPromptRunEntity[]>;\n\n /** @deprecated Use {@link PromptRuns$}. */\n get promptRuns$(): Observable<MJAIPromptRunEntity[]> {\n return this.PromptRuns$;\n }\n /** @deprecated Use {@link PromptRuns$}. */\n set promptRuns$(value: Observable<MJAIPromptRunEntity[]>) {\n this.PromptRuns$ = value;\n }\n \n TimelineItems$!: Observable<TimelineItem[]>;\n\n /** @deprecated Use {@link TimelineItems$}. */\n get timelineItems$(): Observable<TimelineItem[]> {\n return this.TimelineItems$;\n }\n /** @deprecated Use {@link TimelineItems$}. */\n set timelineItems$(value: Observable<TimelineItem[]>) {\n this.TimelineItems$ = value;\n }\n \n Loading = true;\n\n /** @deprecated Use {@link Loading}. */\n get loading() {\n return this.Loading;\n }\n /** @deprecated Use {@link Loading}. */\n set loading(value) {\n this.Loading = value;\n }\n error: string | null = null;\n SelectedItem: TimelineItem | null = null;\n\n /** @deprecated Use {@link SelectedItem}. */\n get selectedItem(): TimelineItem | null {\n return this.SelectedItem;\n }\n /** @deprecated Use {@link SelectedItem}. */\n set selectedItem(value: TimelineItem | null) {\n this.SelectedItem = value;\n }\n\n /** Graph steps currently being expanded, so a second click cannot start a second load. */\n private expandingGraphIDs = new Set<string>();\n\n constructor(\n private cdr: ChangeDetectorRef\n ) {\n super();}\n \n async ngOnInit() {\n // AIEngineBase is deferred at startup; ensure it's loaded before timeline\n // items render — getStepIconInfo / sub-agent lookups read .Agents synchronously.\n await AIEngineBase.Instance.EnsureLoaded();\n // Same reason, for the same kind of read: `resolveActionIcon` looks up `.Actions` synchronously\n // inside the projection. Cheap when another surface already warmed it, and a no-op on reload.\n try {\n await ActionEngineBase.Instance.EnsureLoaded();\n this.actionsReady = true;\n } catch {\n // An action cache that will not load costs icons, not rows — every action keeps the generic\n // glyph it had before. Never worth failing a run view over.\n this.actionsReady = false;\n }\n\n // Initialize observables from the data helper\n this.Steps$ = this.DataHelper.steps$;\n this.SubRuns$ = this.DataHelper.subRuns$;\n this.ActionLogs$ = this.DataHelper.actionLogs$;\n this.PromptRuns$ = this.DataHelper.promptRuns$;\n \n // Combine all data sources to build timeline.\n // Skip emissions where steps are empty but data is still loading —\n // the BehaviorSubjects initialise with [] so combineLatest fires\n // immediately with an empty array before the real data arrives.\n this.TimelineItems$ = combineLatest([\n this.Steps$,\n this.SubRuns$,\n this.ActionLogs$,\n this.PromptRuns$,\n this.DataHelper.loading$,\n this.runTree$\n ]).pipe(\n filter(([steps, _subRuns, _actionLogs, _promptRuns, isLoading]) => {\n // While loading, suppress the empty-array emission so the\n // template keeps showing the mj-loading indicator.\n return !(isLoading && steps.length === 0);\n }),\n map(([steps, subRuns, actionLogs, promptRuns]) => {\n // Built here rather than on demand: this is where the logs arrive, and the resolver runs\n // synchronously inside the projection, which cannot await anything.\n this.actionIDByLogID = new Map(\n (actionLogs ?? [])\n .filter((log) => log.ID && log.ActionID)\n .map((log) => [log.ID.toLowerCase(), log.ActionID]),\n );\n return this.buildTimelineItems(steps, subRuns, actionLogs, promptRuns);\n }),\n shareReplay(1)\n );\n \n // Data loading is now handled by the parent component through the helper\n // Subscribe to loading state from helper\n this.DataHelper.loading$.pipe(takeUntil(this.destroy$)).subscribe(loading => {\n this.Loading = loading;\n this.cdr.markForCheck();\n });\n\n this.DataHelper.error$.pipe(takeUntil(this.destroy$)).subscribe(error => {\n this.error = error;\n this.cdr.markForCheck();\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n // This method is now just for compatibility - actual loading is done by parent\n async loadData() {\n if (!this.AiAgentRunId) return;\n // The parent component should handle data loading through the helper\n return this.DataHelper.loadAgentRunData(this.AiAgentRunId);\n }\n \n private buildTimelineItems(\n steps: MJAIAgentRunStepEntity[],\n subRuns: MJAIAgentRunEntity[],\n actionLogs: MJActionExecutionLogEntity[],\n promptRuns: MJAIPromptRunEntity[]\n ): TimelineItem[] {\n return this.buildHierarchicalItems(steps, 0, promptRuns);\n }\n\n private buildHierarchicalItems(\n steps: MJAIAgentRunStepEntity[],\n baseLevel: number,\n promptRuns?: MJAIPromptRunEntity[]\n ): TimelineItem[] {\n // Walk in execution order, not persist order. Children are pushed in this walk, so a\n // loop's iterations and root siblings both inherit the sort. Query OrderBy is the\n // same pair; this is the belt for a caller that handed us an unsorted array.\n const ordered = SortAgentRunStepsByExecutionOrder(steps);\n\n // Create a map of all timeline items by step ID\n const itemMap = new Map<string, TimelineItem>();\n\n // First pass: create all timeline items\n ordered.forEach(step => {\n const item = this.createTimelineItemFromStep(step, baseLevel, promptRuns);\n itemMap.set(step.ID, item);\n });\n\n // Second pass: build parent-child relationships based on ParentID\n ordered.forEach(step => {\n if (step.ParentID) {\n const parentItem = itemMap.get(step.ParentID);\n const childItem = itemMap.get(step.ID);\n\n if (parentItem && childItem) {\n // Initialize children array if needed\n if (!parentItem.children) {\n parentItem.children = [];\n }\n\n // Set child's level based on parent's level\n childItem.level = parentItem.level + 1;\n\n // Add child to parent's children array\n parentItem.children.push(childItem);\n }\n }\n });\n\n // Return only root-level items (those without a ParentID)\n const rootItems: TimelineItem[] = [];\n ordered.forEach(step => {\n if (!step.ParentID) {\n const item = itemMap.get(step.ID);\n if (item) {\n rootItems.push(item);\n }\n }\n });\n\n return rootItems;\n }\n \n /**\n * Font Awesome class for a node that runs a known action or agent, or null to keep the default.\n *\n * **Why the row kind is the wrong answer.** The same action reaches this timeline through two\n * arms of the run-tree query — as a graph Task and as a loop pass — and each arm had its own\n * generic glyph, so one Google Custom Search drew a lightning bolt and the next a paper plane.\n * What the step IS does not change with where it ran.\n *\n * **No hop.** The tree carries `ActionID` and `AgentID` directly (a task holds them as columns;\n * a pass takes them from the log it expanded from), so this is one cache read. The first version\n * of this went through the execution log and silently resolved NOTHING for graph steps, because\n * the logs it consulted are only loaded for run steps of type `Actions` — of which a dispatched\n * workflow has none.\n *\n * **Loops keep their own icon.** A ForEach carries the ActionID of the action it repeats, and\n * drawing that action's mark on the loop row would say \"this is a Google search\" about a row that\n * is a loop over five of them. The distinction the loop icon carries is worth more.\n */\n private resolveActionIcon(node: AgentRunTreeNode): string | null {\n if (LOOP_KINDS.has(node.SourceKind ?? '')) return null;\n\n if (node.ActionID) {\n const action = ActionEngineBase.Instance.Actions?.find((a) => UUIDsEqual(a.ID, node.ActionID!));\n if (action?.IconClass) return action.IconClass;\n }\n if (node.AgentID) {\n const agent = AIEngineBase.Instance.Agents?.find((a) => UUIDsEqual(a.ID, node.AgentID!));\n if (agent?.IconClass) return agent.IconClass;\n }\n return null;\n }\n\n\n\n /**\n * The graph a TaskGraph step dispatched, from the run tree.\n *\n * Null until the tree arrives (the setter above republishes then) and null for a submission that\n * produced no graph — a failed submit, where the step's own status IS the story.\n */\n private graphNodeForStep(stepID: string): AgentRunTreeNode | null {\n if (!this.runTree) return null;\n const stepNode = FindAgentRunTreeNodes(this.runTree, (n) => UUIDsEqual(n.NodeID, stepID))[0] ?? null;\n return stepNode?.Children.find((c) => c.NodeType === 'TaskGraph') ?? null;\n }\n\n private createTimelineItemFromStep(step: MJAIAgentRunStepEntity, level: number, promptRuns?: MJAIPromptRunEntity[]): TimelineItem {\n let subtitle = `Type: ${step.StepType}`;\n\n // For prompt steps, try to find the associated prompt run to get model/vendor info\n if (step.StepType === 'Prompt' && step.TargetLogID && promptRuns) {\n const promptRun = promptRuns.find(pr => UUIDsEqual(pr.ID, step.TargetLogID));\n if (promptRun) {\n subtitle = `Model: ${promptRun.Model || 'Unknown'} | Vendor: ${promptRun.Vendor || 'Unknown'}`;\n }\n }\n\n // Get icon and logoUrl based on step type\n const iconInfo = this.getStepIconInfo(step);\n\n // A dispatched workflow's row describes the WORKFLOW, not the handoff that started it. The\n // step's own status is about submission — Completed in ~300ms, correctly — and showing that\n // under a title naming the workflow is how the timeline came to report a running graph as\n // finished while the page header said \"Workflow still running\".\n const graph = step.StepType === 'TaskGraph' ? this.graphNodeForStep(step.ID) : null;\n if (graph) {\n subtitle = `${subtitle} · dispatched in ${this.CalculateDuration(step.StartedAt, step.CompletedAt)}`;\n }\n\n return {\n id: step.ID,\n type: 'step',\n title: step.StepName || `Step ${step.StepNumber}`,\n subtitle: subtitle,\n status: graph ? NormalizeStatus(graph.Status) : step.Status,\n startTime: step.StartedAt,\n endTime: (graph ? graph.CompletedAt : step.CompletedAt) || undefined,\n // A graph that has not started yet has no duration of its own — the submission's stands in,\n // and the subtitle says which it is either way.\n duration: graph?.StartedAt\n ? this.CalculateDuration(graph.StartedAt, graph.CompletedAt)\n : this.CalculateDuration(step.StartedAt, step.CompletedAt),\n icon: iconInfo.icon,\n logoUrl: iconInfo.logoUrl,\n color: this.getStatusColor(graph ? NormalizeStatus(graph.Status) : step.Status),\n data: step,\n children: [],\n level,\n isExpanded: false\n };\n }\n \n\n private getStepIconInfo(step: MJAIAgentRunStepEntity): { icon: string; logoUrl?: string } {\n // For sub-agents, try to get agent-specific icon/logo\n if (step.StepType === 'Sub-Agent' && step.TargetID) {\n const agent = AIEngineBase.Instance.Agents.find(a => UUIDsEqual(a.ID, step.TargetID));\n if (agent) {\n // Prefer LogoURL - if present, use it with robot as fallback icon (icon won't be shown when logoUrl exists)\n if (agent.LogoURL) {\n return { icon: 'fa-robot', logoUrl: agent.LogoURL };\n }\n // Next preference: IconClass from agent metadata\n else if (agent.IconClass) {\n return { icon: agent.IconClass };\n }\n // Agent exists but has no custom icon or logo - use default robot icon\n else {\n return { icon: 'fa-robot' };\n }\n }\n }\n\n // An action step draws its OWN action's icon, exactly as a sub-agent step draws its agent's —\n // the two cases are the same idea, and only one of them was implemented. `TargetLogID` names\n // the execution log this run already loaded; that log names the action, whose IconClass is in\n // ActionEngineBase's cache. A step whose action cannot be resolved (an action with no icon, a\n // cache that did not load) falls through to the step-type default below, which is the same\n // lightning bolt it drew before.\n if (step.StepType === 'Actions' && step.TargetLogID) {\n const actionID = this.actionIDByLogID.get(step.TargetLogID.toLowerCase());\n const action = actionID\n ? ActionEngineBase.Instance.Actions?.find((a) => UUIDsEqual(a.ID, actionID))\n : undefined;\n if (action?.IconClass) return { icon: action.IconClass };\n }\n\n // Default icons for each step type (includes fa-robot for sub-agents without agent metadata)\n const icon = this.getStepIcon(step.StepType);\n return { icon };\n }\n\n private getStepIcon(stepType: string): string {\n const iconMap: Record<string, string> = {\n 'Prompt': 'fa-brain',\n 'Tool': 'fa-tools',\n 'Sub-Agent': 'fa-robot',\n 'Decision': 'fa-code-branch',\n 'Actions': 'fa-wrench',\n 'Validation': 'fa-square-check',\n 'ForEach': 'fa-repeat',\n 'While': 'fa-rotate',\n 'Skill': 'fa-wand-magic-sparkles',\n 'Plan': 'fa-clipboard-check'\n };\n return iconMap[stepType] || 'fa-circle';\n }\n \n private getStatusColor(status: string): string {\n const colorMap: Record<string, string> = {\n 'Running': 'info',\n 'Completed': 'success',\n 'Failed': 'error',\n 'Cancelled': 'warning',\n 'Paused': 'secondary'\n };\n return colorMap[status] || 'secondary';\n }\n \n CalculateDuration(start: Date, end?: Date | null): string {\n if (!end) return 'Running...';\n \n const startTime = new Date(start).getTime();\n const endTime = new Date(end).getTime();\n const duration = endTime - startTime;\n \n if (duration < 1000) return `${duration}ms`;\n if (duration < 60000) return `${(duration / 1000).toFixed(1)}s`;\n if (duration < 3600000) return `${Math.floor(duration / 60000)}m ${Math.floor((duration % 60000) / 1000)}s`;\n return `${Math.floor(duration / 3600000)}h ${Math.floor((duration % 3600000) / 60000)}m`;\n }\n\n /** @deprecated Use {@link CalculateDuration}. */\n calculateDuration(start: Date, end?: Date | null): string {\n return this.CalculateDuration(start, end);\n }\n \n SelectItem(item: TimelineItem) {\n this.SelectedItem = item;\n this.ItemSelected.emit(item);\n }\n\n /** @deprecated Use {@link SelectItem}. */\n selectItem(item: TimelineItem) {\n return this.SelectItem(item);\n }\n \n async ToggleItemExpansion(item: TimelineItem, event: Event) {\n event.stopPropagation();\n\n // Toggle expansion state\n item.isExpanded = !item.isExpanded;\n\n // For Sub-Agent steps, load their run data on demand (requires DB query)\n if (item.isExpanded && !item.childrenLoaded && item.type === 'step' && item.data?.StepType === 'Sub-Agent') {\n await this.loadSubAgentChildren(item);\n }\n\n // A TaskGraph step expands into the graph's own steps — one query for the whole subtree, so it\n // never shows a per-level loading state the way the sub-agent path has to.\n if (item.isExpanded && item.type === 'step' && item.data?.StepType === 'TaskGraph') {\n await this.ExpandTaskGraph(item);\n }\n\n // For parent steps (loop containers like ForEach/While), children are already loaded via ParentID\n // Just toggle - no additional loading needed since we already have all steps from the run\n // The children were already attached in buildTimelineItems()\n }\n\n /** @deprecated Use {@link ToggleItemExpansion}. */\n async toggleItemExpansion(item: TimelineItem, event: Event) {\n return this.ToggleItemExpansion(item, event);\n }\n \n private async loadSubAgentChildren(item: TimelineItem) {\n try {\n const subAgentRunId = item.data?.TargetLogID;\n\n if (!subAgentRunId) {\n item.hasNoChildren = true;\n item.children = [];\n item.childrenLoaded = true;\n return;\n }\n\n // Load sub-agent data through service\n const data = await this.DataHelper.loadSubAgentData(subAgentRunId);\n\n if (!data.steps || data.steps.length === 0) {\n item.hasNoChildren = true;\n item.children = [];\n item.childrenLoaded = true;\n return;\n }\n\n // Build hierarchical timeline items with ParentID relationships\n // This ensures that loop steps (ForEach/While) within sub-agents also show their children\n item.children = this.buildHierarchicalItems(data.steps, item.level + 1, data.promptRuns);\n\n item.childrenLoaded = true;\n // Trigger change detection after updating the data\n this.cdr.markForCheck();\n } catch (error) {\n console.error('🔄 Timeline: Error loading sub-agent children:', error);\n item.hasNoChildren = true;\n item.childrenLoaded = true;\n // Trigger change detection for error state\n this.cdr.markForCheck();\n }\n }\n \n NavigateToSubRun(runId: string, event: Event) {\n event.stopPropagation();\n this.NavigateToEntity.emit({ entityName: 'MJ: AI Agent Runs', recordId: runId });\n }\n\n /** @deprecated Use {@link NavigateToSubRun}. */\n navigateToSubRun(runId: string, event: Event) {\n return this.NavigateToSubRun(runId, event);\n }\n \n NavigateToActionLog(logId: string, event: Event) {\n event.stopPropagation();\n this.NavigateToEntity.emit({ entityName: 'MJ: Action Execution Logs', recordId: logId });\n }\n\n /** @deprecated Use {@link NavigateToActionLog}. */\n navigateToActionLog(logId: string, event: Event) {\n return this.NavigateToActionLog(logId, event);\n }\n \n NavigateToPromptRun(runId: string, event: Event) {\n event.stopPropagation();\n this.NavigateToEntity.emit({ entityName: 'MJ: AI Prompt Runs', recordId: runId });\n }\n\n /** @deprecated Use {@link NavigateToPromptRun}. */\n navigateToPromptRun(runId: string, event: Event) {\n return this.NavigateToPromptRun(runId, event);\n }\n \n /**\n * TrackBy function for timeline items\n */\n /**\n * The graph a TaskGraph step submitted, read from the step's own output.\n *\n * `executeTasksStep` records `parentTaskID` there whether or not submission succeeded, because a\n * rejected graph is the case where forensics matter most. A step with no id therefore means the\n * graph never reached the dispatcher — a real state the caller renders differently, which is why\n * this returns null rather than an empty string.\n */\n GetGraphParentTaskID(item: TimelineItem): string | null {\n const raw = item?.data?.OutputData;\n if (!raw) return null;\n try {\n const parsed = typeof raw === 'string' ? JSON.parse(raw) : raw;\n const id = parsed?.parentTaskID;\n return typeof id === 'string' && id.length > 0 ? id : null;\n } catch {\n return null;\n }\n }\n\n /**\n * A step inside the graph was selected.\n *\n * An Agent node carries the run it started, so selecting one offers the same navigation a\n * Sub-Agent step already does — that link is the seam between the two views, and without it a\n * dispatched sub-agent run is unreachable from the run that caused it.\n */\n OnGraphNodeSelected(event: { TaskID: string; Task: MJTaskEntity | null }): void {\n const agentRunID = event.Task?.AgentRunID;\n if (agentRunID) {\n this.NavigateToEntity.emit({ entityName: 'MJ: AI Agent Runs', recordId: agentRunID });\n return;\n }\n if (event.Task?.ActionID) {\n this.NavigateToEntity.emit({ entityName: 'MJ: Tasks', recordId: event.TaskID });\n }\n }\n\n /**\n * Expands a task-graph step into the graph's own steps, as ordinary timeline rows.\n *\n * **The graph's steps are steps.** They used to appear as an embedded canvas inside the list — a\n * diagram wedged into a vertical column, in a different visual language from everything around it,\n * and the only work in a run that could not be read, selected or navigated the same way as the\n * rest. They are rows now, colour-coded so their provenance is obvious, with the canvas moved to\n * the detail panel where edges have room to be seen.\n *\n * One query rather than a walk: the whole subtree arrives at once, so there is no\n * \"Loading sub-agent steps…\" and no per-level round trip.\n */\n async ExpandTaskGraph(item: TimelineItem): Promise<void> {\n if (item.childrenLoaded || this.expandingGraphIDs.has(item.id)) return;\n\n this.expandingGraphIDs.add(item.id);\n this.cdr.markForCheck();\n try {\n if (!this.RunTree) {\n this.error = 'The run tree is not loaded yet, so this workflow cannot be expanded.';\n return;\n }\n\n // The graph hangs off THIS step in the tree, so the subtree to splice in is the node whose id\n // matches the step — not the whole run, which is already on screen above it.\n const stepNode = FindAgentRunTreeNodes(this.RunTree, (n) => n.NodeID === item.id)[0] ?? null;\n\n item.children = ProjectRunTreeToTimeline(stepNode, item.level + 1, true, (n) => this.resolveActionIcon(n));\n item.childrenLoaded = true;\n item.hasNoChildren = item.children.length === 0;\n } catch (e) {\n this.error = e instanceof Error ? e.message : String(e);\n } finally {\n this.expandingGraphIDs.delete(item.id);\n this.cdr.markForCheck();\n }\n }\n\n /** True while a graph's steps are being fetched, so the row can say so. */\n IsExpandingGraph(item: TimelineItem): boolean {\n return this.expandingGraphIDs.has(item.id);\n }\n\n TrackByItemId(index: number, item: TimelineItem): string {\n return item.id;\n }\n\n /** @deprecated Use {@link TrackByItemId}. */\n trackByItemId(index: number, item: TimelineItem): string {\n return this.TrackByItemId(index, item);\n }\n \n CreateSubRunDataHelper(): AIAgentRunDataHelper {\n // Create a new data helper instance for sub-runs to prevent caching conflicts\n return new AIAgentRunDataHelper();\n }\n\n /** @deprecated Use {@link CreateSubRunDataHelper}. */\n createSubRunDataHelper(): AIAgentRunDataHelper {\n return this.CreateSubRunDataHelper();\n }\n}","@if (loading) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading run steps...\" size=\"medium\"></mj-loading>\n </div>\n} @else if (timelineItems$ | async; as items) {\n <div class=\"timeline-container\">\n @if (items.length > 0) {\n <div class=\"timeline\">\n @for (item of items; track trackByItemId($index, item)) {\n <!-- Main Timeline Item -->\n <mj-ai-agent-run-step-node\n [item]=\"item\"\n [isSelected]=\"selectedItem?.id === item.id\"\n (itemClick)=\"selectItem(item)\"\n (expandToggle)=\"toggleItemExpansion(item, $event)\"\n (navigateToEntity)=\"navigateToEntity.emit($event)\">\n </mj-ai-agent-run-step-node>\n <!-- Children Container (for both Sub-Agent and ParentID relationships) -->\n @if (item.isExpanded) {\n <!-- Show loading indicator while loading Sub-Agent children -->\n @if (item.type === 'step' && item.data?.StepType === 'Sub-Agent' && !item.childrenLoaded) {\n <div class=\"loading-children\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading sub-agent steps...\n </div>\n }\n <!-- Show no children message for Sub-Agents -->\n @if (item.type === 'step' && item.data?.StepType === 'Sub-Agent' && item.childrenLoaded && item.hasNoChildren) {\n <div class=\"no-children\">\n <i class=\"fas fa-info-circle\"></i> No sub-agent steps found\n </div>\n }\n <!-- Render children recursively (works for both Sub-Agent and ParentID children) -->\n @if (item.children && item.children.length > 0) {\n <ng-container *ngTemplateOutlet=\"recursiveSteps; context: { $implicit: item.children }\"></ng-container>\n }\n <!-- A TaskGraph step stands in for a whole graph of Task rows. Its steps render as\n ORDINARY ROWS, colour-coded for provenance — they are steps, and squeezing a diagram\n into the column made them the only work in a run that could not be read, selected or\n navigated like everything else. The canvas lives in the detail panel, where edges\n (which branch was taken, and why) have the room they need. -->\n @if (item.type === 'step' && item.data?.StepType === 'TaskGraph') {\n @if (IsExpandingGraph(item)) {\n <div class=\"loading-children\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading workflow steps...\n </div>\n } @else if (!GetGraphParentTaskID(item)) {\n <div class=\"no-children\">\n <i class=\"fas fa-info-circle\"></i>\n This workflow was recorded but never reached the dispatcher.\n </div>\n } @else if (item.childrenLoaded && item.hasNoChildren) {\n <div class=\"no-children\">\n <i class=\"fas fa-info-circle\"></i> This workflow has no steps yet.\n </div>\n }\n }\n <!-- For actual sub-run items (from the initial load) - legacy support -->\n @if (item.type === 'subrun' && item.data?.ID) {\n <mj-ai-agent-run-timeline\n [aiAgentRunId]=\"item.data.ID\"\n [dataHelper]=\"createSubRunDataHelper()\"\n [autoRefresh]=\"false\"\n (itemSelected)=\"selectItem($event)\"\n (navigateToEntity)=\"navigateToEntity.emit($event)\">\n </mj-ai-agent-run-timeline>\n }\n }\n }\n </div>\n }\n @if (items.length === 0) {\n <mj-empty-state\n Icon=\"fa-solid fa-stream\"\n Title=\"No execution steps found\" />\n }\n </div>\n} @else {\n <!-- timelineItems$ hasn't emitted yet -->\n <div class=\"loading-state\">\n <mj-loading text=\"Loading run steps...\" size=\"medium\"></mj-loading>\n </div>\n}\n\n@if (error) {\n <mj-empty-state\n Variant=\"error\"\n [Message]=\"error\" />\n}\n\n<!-- Recursive template for rendering nested children (ParentID relationships) -->\n<ng-template #recursiveSteps let-steps>\n @for (step of steps; track trackByItemId($index, step)) {\n <mj-ai-agent-run-step-node\n [item]=\"step\"\n [isSelected]=\"selectedItem?.id === step.id\"\n (itemClick)=\"selectItem(step)\"\n (expandToggle)=\"toggleItemExpansion(step, $event)\"\n (navigateToEntity)=\"navigateToEntity.emit($event)\">\n </mj-ai-agent-run-step-node>\n <!-- Recursively render this step's children if expanded -->\n @if (step.isExpanded && step.children && step.children.length > 0) {\n <ng-container *ngTemplateOutlet=\"recursiveSteps; context: { $implicit: step.children }\"></ng-container>\n }\n }\n</ng-template>"]}
1
+ {"version":3,"file":"ai-agent-run-timeline.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/ai-agent-run/ai-agent-run-timeline.component.ts","../../../../src/lib/custom/ai-agent-run/ai-agent-run-timeline.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\nimport { Subject, Observable, combineLatest, BehaviorSubject } from 'rxjs';\nimport { takeUntil, map, shareReplay, filter } from 'rxjs/operators';\nimport { MJAIAgentRunEntity, MJAIAgentRunStepEntity, MJActionExecutionLogEntity, MJAIPromptRunEntity, MJTaskEntity } from '@memberjunction/core-entities';\nimport { AIAgentRunDataHelper } from './ai-agent-run-data.service';\nimport { AIEngineBase } from '@memberjunction/ai-engine-base';\nimport { UUIDsEqual } from '@memberjunction/global';\n\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nimport { FindAgentRunTreeNodes, type AgentRunTreeNode } from '@memberjunction/ai-core-plus';\nimport { NormalizeStatus, ProjectRunTreeToTimeline } from './run-tree-timeline-projection';\nimport { SortAgentRunStepsByExecutionOrder } from './agent-run-step-order';\nimport { ActionEngineBase } from '@memberjunction/actions-base';\n\n/**\n * Node kinds whose row is a LOOP, not the work inside it.\n *\n * A ForEach carries the ActionID of the action it repeats, so resolving an icon from it would draw\n * \"a Google search\" on a row that is a loop over five of them — losing the one distinction the row\n * exists to make.\n */\nconst LOOP_KINDS: ReadonlySet<string> = new Set(['ForEach', 'While']);\nexport interface TimelineItem {\n id: string; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n /**\n * What the row represents.\n *\n * `taskgraph` and `task` are dispatcher work — a graph that outlives the run that submitted it,\n * and the steps inside it. They are rendered as ordinary rows rather than as an embedded diagram,\n * and colour-coded so their provenance is visible without opening anything.\n */\n type: 'step' | 'subrun' | 'action' | 'prompt' | 'taskgraph' | 'task'; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n /**\n * Where this row's work ran, when that is not obvious from its type.\n *\n * `'workflow'` means it ran on the task-graph dispatcher and outlives the agent run that\n * submitted it. Kept separate from `type` on purpose: a workflow step that runs an action IS an\n * action and should render as one — provenance styles it, it does not redefine it.\n */\n provenance?: 'workflow'; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n title: string; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n subtitle: string; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n status: string; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n /**\n * When this row started, or NULL when it has not.\n *\n * Nullable on purpose. A projection that needed \"sorts last\" once filled this with the maximum\n * Date, and every unstarted row then displayed that sentinel as a real clock time — identical on\n * every row and indistinguishable from data. Ordering belongs to whatever produced the rows; a row\n * that has not run has no start time, and says so by having none.\n */\n startTime: Date | null; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n endTime?: Date; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n duration?: string; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n icon: string; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n logoUrl?: string; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n color: string; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n data: any; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n children?: TimelineItem[]; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n level: number; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n parentId?: string; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n isExpanded?: boolean; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n childrenLoaded?: boolean; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n hasNoChildren?: boolean; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub\n}\n\n@Component({\n standalone: false,\n selector: 'mj-ai-agent-run-timeline',\n templateUrl: './ai-agent-run-timeline.component.html',\n styleUrls: ['./ai-agent-run-timeline.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AIAgentRunTimelineComponent extends BaseAngularComponent implements OnInit, OnDestroy {\n @Input() AiAgentRunId!: string;\n\n /** @deprecated Use {@link AiAgentRunId}. */\n @Input() set aiAgentRunId(value: string) {\n this.AiAgentRunId = value;\n }\n /** @deprecated Use {@link AiAgentRunId}. */\n get aiAgentRunId(): string {\n return this.AiAgentRunId;\n }\n\n /**\n * The run's execution tree, loaded ONCE by the form and shared with every tab.\n *\n * Received rather than fetched: three tabs need the same structure, and letting each load its own\n * issues the same recursive query three times AND lets the tabs disagree — a tab that loaded a\n * second earlier shows a different run than the one beside it.\n */\n /**\n * Setter, not a plain field: a TaskGraph step's row takes its STATUS from the graph (see\n * `graphNodeForStep`), and the tree usually arrives after the step rows have already been built.\n * Republishing rebuilds them, so a dispatched workflow stops reading Completed the moment the\n * tree says it is still running.\n */\n @Input()\n public set RunTree(value: AgentRunTreeNode | null) {\n this.runTree = value;\n this.runTree$.next(value);\n }\n public get RunTree(): AgentRunTreeNode | null {\n return this.runTree;\n }\n private runTree: AgentRunTreeNode | null = null;\n private runTree$ = new BehaviorSubject<AgentRunTreeNode | null>(null);\n @Input() DataHelper!: AIAgentRunDataHelper;\n\n /** @deprecated Use {@link DataHelper}. */\n @Input() set dataHelper(value: AIAgentRunDataHelper) {\n this.DataHelper = value;\n }\n /** @deprecated Use {@link DataHelper}. */\n get dataHelper(): AIAgentRunDataHelper {\n return this.DataHelper;\n } // Data helper passed from parent\n @Output() ItemSelected = new EventEmitter<TimelineItem>();\n\n /**\n * @deprecated Use {@link ItemSelected}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (itemSelected) keeps working. Must stay AFTER ItemSelected: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() itemSelected = this.ItemSelected;\n @Output() NavigateToEntity = new EventEmitter<{ entityName: string; recordId: string }>();\n\n /**\n * @deprecated Use {@link NavigateToEntity}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (navigateToEntity) keeps working. Must stay AFTER NavigateToEntity: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() navigateToEntity = this.NavigateToEntity;\n\n private destroy$ = new Subject<void>();\n /** Resolved once the action cache is warm, so a first paint without icons can be re-rendered with them. */\n private actionsReady = false;\n /**\n * Execution-log id → action id, for the RUN-STEP path only.\n *\n * The tree path needs none of this — it carries `ActionID` outright. A run step of type `Actions`\n * still names only its log, so this map stays for that case, built from logs the data service has\n * already fetched by id.\n */\n private actionIDByLogID = new Map<string, string>();\n \n // Public observables from data helper\n Steps$!: Observable<MJAIAgentRunStepEntity[]>;\n\n /** @deprecated Use {@link Steps$}. */\n get steps$(): Observable<MJAIAgentRunStepEntity[]> {\n return this.Steps$;\n }\n /** @deprecated Use {@link Steps$}. */\n set steps$(value: Observable<MJAIAgentRunStepEntity[]>) {\n this.Steps$ = value;\n }\n SubRuns$!: Observable<MJAIAgentRunEntity[]>;\n\n /** @deprecated Use {@link SubRuns$}. */\n get subRuns$(): Observable<MJAIAgentRunEntity[]> {\n return this.SubRuns$;\n }\n /** @deprecated Use {@link SubRuns$}. */\n set subRuns$(value: Observable<MJAIAgentRunEntity[]>) {\n this.SubRuns$ = value;\n }\n ActionLogs$!: Observable<MJActionExecutionLogEntity[]>;\n\n /** @deprecated Use {@link ActionLogs$}. */\n get actionLogs$(): Observable<MJActionExecutionLogEntity[]> {\n return this.ActionLogs$;\n }\n /** @deprecated Use {@link ActionLogs$}. */\n set actionLogs$(value: Observable<MJActionExecutionLogEntity[]>) {\n this.ActionLogs$ = value;\n }\n PromptRuns$!: Observable<MJAIPromptRunEntity[]>;\n\n /** @deprecated Use {@link PromptRuns$}. */\n get promptRuns$(): Observable<MJAIPromptRunEntity[]> {\n return this.PromptRuns$;\n }\n /** @deprecated Use {@link PromptRuns$}. */\n set promptRuns$(value: Observable<MJAIPromptRunEntity[]>) {\n this.PromptRuns$ = value;\n }\n \n TimelineItems$!: Observable<TimelineItem[]>;\n\n /** @deprecated Use {@link TimelineItems$}. */\n get timelineItems$(): Observable<TimelineItem[]> {\n return this.TimelineItems$;\n }\n /** @deprecated Use {@link TimelineItems$}. */\n set timelineItems$(value: Observable<TimelineItem[]>) {\n this.TimelineItems$ = value;\n }\n \n Loading = true;\n\n /** @deprecated Use {@link Loading}. */\n get loading() {\n return this.Loading;\n }\n /** @deprecated Use {@link Loading}. */\n set loading(value) {\n this.Loading = value;\n }\n error: string | null = null;\n SelectedItem: TimelineItem | null = null;\n\n /** @deprecated Use {@link SelectedItem}. */\n get selectedItem(): TimelineItem | null {\n return this.SelectedItem;\n }\n /** @deprecated Use {@link SelectedItem}. */\n set selectedItem(value: TimelineItem | null) {\n this.SelectedItem = value;\n }\n\n /** Graph steps currently being expanded, so a second click cannot start a second load. */\n private expandingGraphIDs = new Set<string>();\n /**\n * Tracks user-expanded timeline node IDs (lowercased) across `runTree$` poll cycles so\n * live workflow refreshes do not collapse an open TaskGraph or its expanded child tasks.\n */\n private expandedItemIds = new Set<string>();\n /** Cached children for expanded Sub-Agent steps so they survive `runTree$` poll rebuilds. */\n private loadedSubAgentChildren = new Map<string, TimelineItem[]>();\n\n constructor(\n private cdr: ChangeDetectorRef\n ) {\n super();}\n \n async ngOnInit() {\n // AIEngineBase is deferred at startup; ensure it's loaded before timeline\n // items render — getStepIconInfo / sub-agent lookups read .Agents synchronously.\n await AIEngineBase.Instance.EnsureLoaded();\n // Same reason, for the same kind of read: `resolveActionIcon` looks up `.Actions` synchronously\n // inside the projection. Cheap when another surface already warmed it, and a no-op on reload.\n try {\n await ActionEngineBase.Instance.EnsureLoaded();\n this.actionsReady = true;\n } catch {\n // An action cache that will not load costs icons, not rows — every action keeps the generic\n // glyph it had before. Never worth failing a run view over.\n this.actionsReady = false;\n }\n\n // Initialize observables from the data helper\n this.Steps$ = this.DataHelper.steps$;\n this.SubRuns$ = this.DataHelper.subRuns$;\n this.ActionLogs$ = this.DataHelper.actionLogs$;\n this.PromptRuns$ = this.DataHelper.promptRuns$;\n \n // Combine all data sources to build timeline.\n // Skip emissions where steps are empty but data is still loading —\n // the BehaviorSubjects initialise with [] so combineLatest fires\n // immediately with an empty array before the real data arrives.\n this.TimelineItems$ = combineLatest([\n this.Steps$,\n this.SubRuns$,\n this.ActionLogs$,\n this.PromptRuns$,\n this.DataHelper.loading$,\n this.runTree$\n ]).pipe(\n filter(([steps, _subRuns, _actionLogs, _promptRuns, isLoading]) => {\n // While loading, suppress the empty-array emission so the\n // template keeps showing the mj-loading indicator.\n return !(isLoading && steps.length === 0);\n }),\n map(([steps, subRuns, actionLogs, promptRuns]) => {\n // Built here rather than on demand: this is where the logs arrive, and the resolver runs\n // synchronously inside the projection, which cannot await anything.\n this.actionIDByLogID = new Map(\n (actionLogs ?? [])\n .filter((log) => log.ID && log.ActionID)\n .map((log) => [log.ID.toLowerCase(), log.ActionID]),\n );\n return this.buildTimelineItems(steps, subRuns, actionLogs, promptRuns);\n }),\n shareReplay(1)\n );\n \n // Data loading is now handled by the parent component through the helper\n // Subscribe to loading state from helper\n this.DataHelper.loading$.pipe(takeUntil(this.destroy$)).subscribe(loading => {\n this.Loading = loading;\n this.cdr.markForCheck();\n });\n\n this.DataHelper.error$.pipe(takeUntil(this.destroy$)).subscribe(error => {\n this.error = error;\n this.cdr.markForCheck();\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n // This method is now just for compatibility - actual loading is done by parent\n async loadData() {\n if (!this.AiAgentRunId) return;\n // The parent component should handle data loading through the helper\n return this.DataHelper.loadAgentRunData(this.AiAgentRunId);\n }\n \n private buildTimelineItems(\n steps: MJAIAgentRunStepEntity[],\n subRuns: MJAIAgentRunEntity[],\n actionLogs: MJActionExecutionLogEntity[],\n promptRuns: MJAIPromptRunEntity[]\n ): TimelineItem[] {\n return this.buildHierarchicalItems(steps, 0, promptRuns);\n }\n\n private buildHierarchicalItems(\n steps: MJAIAgentRunStepEntity[],\n baseLevel: number,\n promptRuns?: MJAIPromptRunEntity[]\n ): TimelineItem[] {\n // Walk in execution order, not persist order. Children are pushed in this walk, so a\n // loop's iterations and root siblings both inherit the sort. Query OrderBy is the\n // same pair; this is the belt for a caller that handed us an unsorted array.\n const ordered = SortAgentRunStepsByExecutionOrder(steps);\n\n // Create a map of all timeline items by step ID\n const itemMap = new Map<string, TimelineItem>();\n\n // First pass: create all timeline items\n ordered.forEach(step => {\n const item = this.createTimelineItemFromStep(step, baseLevel, promptRuns);\n itemMap.set(step.ID, item);\n });\n\n // Second pass: build parent-child relationships based on ParentID\n ordered.forEach(step => {\n if (step.ParentID) {\n const parentItem = itemMap.get(step.ParentID);\n const childItem = itemMap.get(step.ID);\n\n if (parentItem && childItem) {\n // Initialize children array if needed\n if (!parentItem.children) {\n parentItem.children = [];\n }\n\n // Set child's level based on parent's level\n childItem.level = parentItem.level + 1;\n\n // Add child to parent's children array\n parentItem.children.push(childItem);\n }\n }\n });\n\n // Return only root-level items (those without a ParentID)\n const rootItems: TimelineItem[] = [];\n ordered.forEach(step => {\n if (!step.ParentID) {\n const item = itemMap.get(step.ID);\n if (item) {\n rootItems.push(item);\n }\n }\n });\n\n return rootItems;\n }\n \n /**\n * Font Awesome class for a node that runs a known action or agent, or null to keep the default.\n *\n * **Why the row kind is the wrong answer.** The same action reaches this timeline through two\n * arms of the run-tree query — as a graph Task and as a loop pass — and each arm had its own\n * generic glyph, so one Google Custom Search drew a lightning bolt and the next a paper plane.\n * What the step IS does not change with where it ran.\n *\n * **No hop.** The tree carries `ActionID` and `AgentID` directly (a task holds them as columns;\n * a pass takes them from the log it expanded from), so this is one cache read. The first version\n * of this went through the execution log and silently resolved NOTHING for graph steps, because\n * the logs it consulted are only loaded for run steps of type `Actions` — of which a dispatched\n * workflow has none.\n *\n * **Loops keep their own icon.** A ForEach carries the ActionID of the action it repeats, and\n * drawing that action's mark on the loop row would say \"this is a Google search\" about a row that\n * is a loop over five of them. The distinction the loop icon carries is worth more.\n */\n private resolveActionIcon(node: AgentRunTreeNode): string | null {\n if (LOOP_KINDS.has(node.SourceKind ?? '')) return null;\n\n if (node.ActionID) {\n const action = ActionEngineBase.Instance.Actions?.find((a) => UUIDsEqual(a.ID, node.ActionID!));\n if (action?.IconClass) return action.IconClass;\n }\n if (node.AgentID) {\n const agent = AIEngineBase.Instance.Agents?.find((a) => UUIDsEqual(a.ID, node.AgentID!));\n if (agent?.IconClass) return agent.IconClass;\n }\n return null;\n }\n\n\n\n /**\n * The graph a TaskGraph step dispatched, from the run tree.\n *\n * Null until the tree arrives (the setter above republishes then) and null for a submission that\n * produced no graph — a failed submit, where the step's own status IS the story.\n */\n private graphNodeForStep(stepID: string): AgentRunTreeNode | null {\n if (!this.runTree) return null;\n const stepNode = FindAgentRunTreeNodes(this.runTree, (n) => UUIDsEqual(n.NodeID, stepID))[0] ?? null;\n return stepNode?.Children.find((c) => c.NodeType === 'TaskGraph') ?? null;\n }\n\n private createTimelineItemFromStep(step: MJAIAgentRunStepEntity, level: number, promptRuns?: MJAIPromptRunEntity[]): TimelineItem {\n let subtitle = `Type: ${step.StepType}`;\n\n // For prompt steps, try to find the associated prompt run to get model/vendor info\n if (step.StepType === 'Prompt' && step.TargetLogID && promptRuns) {\n const promptRun = promptRuns.find(pr => UUIDsEqual(pr.ID, step.TargetLogID));\n if (promptRun) {\n subtitle = `Model: ${promptRun.Model || 'Unknown'} | Vendor: ${promptRun.Vendor || 'Unknown'}`;\n }\n }\n\n // Get icon and logoUrl based on step type\n const iconInfo = this.getStepIconInfo(step);\n\n // A dispatched workflow's row describes the WORKFLOW, not the handoff that started it. The\n // step's own status is about submission — Completed in ~300ms, correctly — and showing that\n // under a title naming the workflow is how the timeline came to report a running graph as\n // finished while the page header said \"Workflow still running\".\n const graph = step.StepType === 'TaskGraph' ? this.graphNodeForStep(step.ID) : null;\n if (graph) {\n subtitle = `${subtitle} · dispatched in ${this.CalculateDuration(step.StartedAt, step.CompletedAt)}`;\n }\n\n const isExpanded = this.expandedItemIds.has(step.ID.toLowerCase());\n let children: TimelineItem[] = [];\n let childrenLoaded: boolean | undefined = undefined;\n let hasNoChildren: boolean | undefined = undefined;\n\n if (step.StepType === 'TaskGraph' && isExpanded && this.RunTree) {\n const stepNode = FindAgentRunTreeNodes(this.RunTree, (n) => UUIDsEqual(n.NodeID, step.ID))[0] ?? null;\n if (stepNode) {\n children = ProjectRunTreeToTimeline(stepNode, level + 1, true, (n) => this.resolveActionIcon(n));\n this.restoreExpansionState(children);\n childrenLoaded = true;\n hasNoChildren = children.length === 0;\n }\n } else if (step.StepType === 'Sub-Agent') {\n const cachedChildren = this.loadedSubAgentChildren.get(step.ID.toLowerCase());\n if (cachedChildren) {\n children = cachedChildren;\n this.restoreExpansionState(children);\n childrenLoaded = true;\n hasNoChildren = children.length === 0;\n }\n }\n\n return {\n id: step.ID,\n type: 'step',\n title: step.StepName || `Step ${step.StepNumber}`,\n subtitle: subtitle,\n status: graph ? NormalizeStatus(graph.Status) : step.Status,\n startTime: step.StartedAt,\n endTime: (graph ? graph.CompletedAt : step.CompletedAt) || undefined,\n // A graph that has not started yet has no duration of its own — the submission's stands in,\n // and the subtitle says which it is either way.\n duration: graph?.StartedAt\n ? this.CalculateDuration(graph.StartedAt, graph.CompletedAt)\n : this.CalculateDuration(step.StartedAt, step.CompletedAt),\n icon: iconInfo.icon,\n logoUrl: iconInfo.logoUrl,\n color: this.getStatusColor(graph ? NormalizeStatus(graph.Status) : step.Status),\n data: step,\n children,\n level,\n isExpanded,\n childrenLoaded,\n hasNoChildren\n };\n }\n \n\n private getStepIconInfo(step: MJAIAgentRunStepEntity): { icon: string; logoUrl?: string } {\n // For sub-agents, try to get agent-specific icon/logo\n if (step.StepType === 'Sub-Agent' && step.TargetID) {\n const agent = AIEngineBase.Instance.Agents.find(a => UUIDsEqual(a.ID, step.TargetID));\n if (agent) {\n // Prefer LogoURL - if present, use it with robot as fallback icon (icon won't be shown when logoUrl exists)\n if (agent.LogoURL) {\n return { icon: 'fa-robot', logoUrl: agent.LogoURL };\n }\n // Next preference: IconClass from agent metadata\n else if (agent.IconClass) {\n return { icon: agent.IconClass };\n }\n // Agent exists but has no custom icon or logo - use default robot icon\n else {\n return { icon: 'fa-robot' };\n }\n }\n }\n\n // An action step draws its OWN action's icon, exactly as a sub-agent step draws its agent's —\n // the two cases are the same idea, and only one of them was implemented. `TargetLogID` names\n // the execution log this run already loaded; that log names the action, whose IconClass is in\n // ActionEngineBase's cache. A step whose action cannot be resolved (an action with no icon, a\n // cache that did not load) falls through to the step-type default below, which is the same\n // lightning bolt it drew before.\n if (step.StepType === 'Actions' && step.TargetLogID) {\n const actionID = this.actionIDByLogID.get(step.TargetLogID.toLowerCase());\n const action = actionID\n ? ActionEngineBase.Instance.Actions?.find((a) => UUIDsEqual(a.ID, actionID))\n : undefined;\n if (action?.IconClass) return { icon: action.IconClass };\n }\n\n // Default icons for each step type (includes fa-robot for sub-agents without agent metadata)\n const icon = this.getStepIcon(step.StepType);\n return { icon };\n }\n\n private getStepIcon(stepType: string): string {\n const iconMap: Record<string, string> = {\n 'Prompt': 'fa-brain',\n 'Tool': 'fa-tools',\n 'Sub-Agent': 'fa-robot',\n 'Decision': 'fa-code-branch',\n 'Actions': 'fa-wrench',\n 'Validation': 'fa-square-check',\n 'ForEach': 'fa-repeat',\n 'While': 'fa-rotate',\n 'Skill': 'fa-wand-magic-sparkles',\n 'Plan': 'fa-clipboard-check',\n 'TaskGraph': 'fa-diagram-project'\n };\n return iconMap[stepType] || 'fa-circle';\n }\n \n private getStatusColor(status: string): string {\n const colorMap: Record<string, string> = {\n 'Running': 'info',\n 'Completed': 'success',\n 'Failed': 'error',\n 'Cancelled': 'warning',\n 'Paused': 'secondary'\n };\n return colorMap[status] || 'secondary';\n }\n \n CalculateDuration(start: Date, end?: Date | null): string {\n if (!end) return 'Running...';\n \n const startTime = new Date(start).getTime();\n const endTime = new Date(end).getTime();\n const duration = endTime - startTime;\n \n if (duration < 1000) return `${duration}ms`;\n if (duration < 60000) return `${(duration / 1000).toFixed(1)}s`;\n if (duration < 3600000) return `${Math.floor(duration / 60000)}m ${Math.floor((duration % 60000) / 1000)}s`;\n return `${Math.floor(duration / 3600000)}h ${Math.floor((duration % 3600000) / 60000)}m`;\n }\n\n /** @deprecated Use {@link CalculateDuration}. */\n calculateDuration(start: Date, end?: Date | null): string {\n return this.CalculateDuration(start, end);\n }\n \n SelectItem(item: TimelineItem) {\n this.SelectedItem = item;\n this.ItemSelected.emit(item);\n }\n\n /** @deprecated Use {@link SelectItem}. */\n selectItem(item: TimelineItem) {\n return this.SelectItem(item);\n }\n \n async ToggleItemExpansion(item: TimelineItem, event: Event) {\n event.stopPropagation();\n\n // Toggle expansion state and persist in expandedItemIds so live runTree$ polls preserve it\n item.isExpanded = !item.isExpanded;\n const key = item.id.toLowerCase();\n if (item.isExpanded) {\n this.expandedItemIds.add(key);\n } else {\n this.expandedItemIds.delete(key);\n }\n\n // For Sub-Agent steps, load their run data on demand (requires DB query)\n if (item.isExpanded && !item.childrenLoaded && item.type === 'step' && item.data?.StepType === 'Sub-Agent') {\n await this.loadSubAgentChildren(item);\n }\n\n // A TaskGraph step expands into the graph's own steps — one query for the whole subtree, so it\n // never shows a per-level loading state the way the sub-agent path has to.\n if (item.isExpanded && item.type === 'step' && item.data?.StepType === 'TaskGraph') {\n await this.ExpandTaskGraph(item);\n }\n\n // For parent steps (loop containers like ForEach/While) and projected workflow tasks,\n // children are already attached — trigger OnPush change detection immediately.\n this.cdr.markForCheck();\n }\n\n /** @deprecated Use {@link ToggleItemExpansion}. */\n async toggleItemExpansion(item: TimelineItem, event: Event) {\n return this.ToggleItemExpansion(item, event);\n }\n\n private restoreExpansionState(items: TimelineItem[] | undefined): void {\n if (!items) return;\n for (const item of items) {\n item.isExpanded = this.expandedItemIds.has(item.id.toLowerCase());\n if (item.children && item.children.length > 0) {\n this.restoreExpansionState(item.children);\n }\n }\n }\n \n private async loadSubAgentChildren(item: TimelineItem) {\n try {\n const subAgentRunId = item.data?.TargetLogID;\n\n if (!subAgentRunId) {\n item.hasNoChildren = true;\n item.children = [];\n item.childrenLoaded = true;\n return;\n }\n\n // Load sub-agent data through service\n const data = await this.DataHelper.loadSubAgentData(subAgentRunId);\n\n if (!data.steps || data.steps.length === 0) {\n item.hasNoChildren = true;\n item.children = [];\n item.childrenLoaded = true;\n return;\n }\n\n // Build hierarchical timeline items with ParentID relationships\n // This ensures that loop steps (ForEach/While) within sub-agents also show their children\n item.children = this.buildHierarchicalItems(data.steps, item.level + 1, data.promptRuns);\n this.loadedSubAgentChildren.set(item.id.toLowerCase(), item.children);\n\n item.childrenLoaded = true;\n // Trigger change detection after updating the data\n this.cdr.markForCheck();\n } catch (error) {\n console.error('🔄 Timeline: Error loading sub-agent children:', error);\n item.hasNoChildren = true;\n item.childrenLoaded = true;\n // Trigger change detection for error state\n this.cdr.markForCheck();\n }\n }\n \n NavigateToSubRun(runId: string, event: Event) {\n event.stopPropagation();\n this.NavigateToEntity.emit({ entityName: 'MJ: AI Agent Runs', recordId: runId });\n }\n\n /** @deprecated Use {@link NavigateToSubRun}. */\n navigateToSubRun(runId: string, event: Event) {\n return this.NavigateToSubRun(runId, event);\n }\n \n NavigateToActionLog(logId: string, event: Event) {\n event.stopPropagation();\n this.NavigateToEntity.emit({ entityName: 'MJ: Action Execution Logs', recordId: logId });\n }\n\n /** @deprecated Use {@link NavigateToActionLog}. */\n navigateToActionLog(logId: string, event: Event) {\n return this.NavigateToActionLog(logId, event);\n }\n \n NavigateToPromptRun(runId: string, event: Event) {\n event.stopPropagation();\n this.NavigateToEntity.emit({ entityName: 'MJ: AI Prompt Runs', recordId: runId });\n }\n\n /** @deprecated Use {@link NavigateToPromptRun}. */\n navigateToPromptRun(runId: string, event: Event) {\n return this.NavigateToPromptRun(runId, event);\n }\n \n /**\n * TrackBy function for timeline items\n */\n /**\n * The graph a TaskGraph step submitted, read from the step's own output.\n *\n * `executeTasksStep` records `parentTaskID` there whether or not submission succeeded, because a\n * rejected graph is the case where forensics matter most. A step with no id therefore means the\n * graph never reached the dispatcher — a real state the caller renders differently, which is why\n * this returns null rather than an empty string.\n */\n GetGraphParentTaskID(item: TimelineItem): string | null {\n const raw = item?.data?.OutputData;\n if (!raw) return null;\n try {\n const parsed = typeof raw === 'string' ? JSON.parse(raw) : raw;\n const id = parsed?.parentTaskID;\n return typeof id === 'string' && id.length > 0 ? id : null;\n } catch {\n return null;\n }\n }\n\n /**\n * A step inside the graph was selected.\n *\n * An Agent node carries the run it started, so selecting one offers the same navigation a\n * Sub-Agent step already does — that link is the seam between the two views, and without it a\n * dispatched sub-agent run is unreachable from the run that caused it.\n */\n OnGraphNodeSelected(event: { TaskID: string; Task: MJTaskEntity | null }): void {\n const agentRunID = event.Task?.AgentRunID;\n if (agentRunID) {\n this.NavigateToEntity.emit({ entityName: 'MJ: AI Agent Runs', recordId: agentRunID });\n return;\n }\n if (event.Task?.ActionID) {\n this.NavigateToEntity.emit({ entityName: 'MJ: Tasks', recordId: event.TaskID });\n }\n }\n\n /**\n * Expands a task-graph step into the graph's own steps, as ordinary timeline rows.\n *\n * **The graph's steps are steps.** They used to appear as an embedded canvas inside the list — a\n * diagram wedged into a vertical column, in a different visual language from everything around it,\n * and the only work in a run that could not be read, selected or navigated the same way as the\n * rest. They are rows now, colour-coded so their provenance is obvious, with the canvas moved to\n * the detail panel where edges have room to be seen.\n *\n * One query rather than a walk: the whole subtree arrives at once, so there is no\n * \"Loading sub-agent steps…\" and no per-level round trip.\n */\n async ExpandTaskGraph(item: TimelineItem): Promise<void> {\n if (item.childrenLoaded || this.expandingGraphIDs.has(item.id)) return;\n\n this.expandingGraphIDs.add(item.id);\n this.cdr.markForCheck();\n try {\n if (!this.RunTree) {\n this.error = 'The run tree is not loaded yet, so this workflow cannot be expanded.';\n return;\n }\n\n // The graph hangs off THIS step in the tree, so the subtree to splice in is the node whose id\n // matches the step — not the whole run, which is already on screen above it.\n const stepNode = FindAgentRunTreeNodes(this.RunTree, (n) => UUIDsEqual(n.NodeID, item.id))[0] ?? null;\n\n item.children = ProjectRunTreeToTimeline(stepNode, item.level + 1, true, (n) => this.resolveActionIcon(n));\n this.restoreExpansionState(item.children);\n item.childrenLoaded = true;\n item.hasNoChildren = item.children.length === 0;\n } catch (e) {\n this.error = e instanceof Error ? e.message : String(e);\n } finally {\n this.expandingGraphIDs.delete(item.id);\n this.cdr.markForCheck();\n }\n }\n\n /** True while a graph's steps are being fetched, so the row can say so. */\n IsExpandingGraph(item: TimelineItem): boolean {\n return this.expandingGraphIDs.has(item.id);\n }\n\n TrackByItemId(index: number, item: TimelineItem): string {\n return item.id;\n }\n\n /** @deprecated Use {@link TrackByItemId}. */\n trackByItemId(index: number, item: TimelineItem): string {\n return this.TrackByItemId(index, item);\n }\n \n CreateSubRunDataHelper(): AIAgentRunDataHelper {\n // Create a new data helper instance for sub-runs to prevent caching conflicts\n return new AIAgentRunDataHelper();\n }\n\n /** @deprecated Use {@link CreateSubRunDataHelper}. */\n createSubRunDataHelper(): AIAgentRunDataHelper {\n return this.CreateSubRunDataHelper();\n }\n}","@if (loading) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading run steps...\" size=\"medium\"></mj-loading>\n </div>\n} @else if (timelineItems$ | async; as items) {\n <div class=\"timeline-container\">\n @if (items.length > 0) {\n <div class=\"timeline\">\n @for (item of items; track trackByItemId($index, item)) {\n <!-- Main Timeline Item -->\n <mj-ai-agent-run-step-node\n [item]=\"item\"\n [isSelected]=\"selectedItem?.id === item.id\"\n (itemClick)=\"selectItem(item)\"\n (expandToggle)=\"toggleItemExpansion(item, $event)\"\n (navigateToEntity)=\"navigateToEntity.emit($event)\">\n </mj-ai-agent-run-step-node>\n <!-- Children Container (for both Sub-Agent and ParentID relationships) -->\n @if (item.isExpanded) {\n <!-- Show loading indicator while loading Sub-Agent children -->\n @if (item.type === 'step' && item.data?.StepType === 'Sub-Agent' && !item.childrenLoaded) {\n <div class=\"loading-children\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading sub-agent steps...\n </div>\n }\n <!-- Show no children message for Sub-Agents -->\n @if (item.type === 'step' && item.data?.StepType === 'Sub-Agent' && item.childrenLoaded && item.hasNoChildren) {\n <div class=\"no-children\">\n <i class=\"fas fa-info-circle\"></i> No sub-agent steps found\n </div>\n }\n <!-- Render children recursively (works for both Sub-Agent and ParentID children) -->\n @if (item.children && item.children.length > 0) {\n <ng-container *ngTemplateOutlet=\"recursiveSteps; context: { $implicit: item.children }\"></ng-container>\n }\n <!-- A TaskGraph step stands in for a whole graph of Task rows. Its steps render as\n ORDINARY ROWS, colour-coded for provenance — they are steps, and squeezing a diagram\n into the column made them the only work in a run that could not be read, selected or\n navigated like everything else. The canvas lives in the detail panel, where edges\n (which branch was taken, and why) have the room they need. -->\n @if (item.type === 'step' && item.data?.StepType === 'TaskGraph') {\n @if (IsExpandingGraph(item)) {\n <div class=\"loading-children\">\n <i class=\"fas fa-spinner fa-spin\"></i> Loading workflow steps...\n </div>\n } @else if (!GetGraphParentTaskID(item)) {\n <div class=\"no-children\">\n <i class=\"fas fa-info-circle\"></i>\n This workflow was recorded but never reached the dispatcher.\n </div>\n } @else if (item.childrenLoaded && item.hasNoChildren) {\n <div class=\"no-children\">\n <i class=\"fas fa-info-circle\"></i> This workflow has no steps yet.\n </div>\n }\n }\n <!-- For actual sub-run items (from the initial load) - legacy support -->\n @if (item.type === 'subrun' && item.data?.ID) {\n <mj-ai-agent-run-timeline\n [aiAgentRunId]=\"item.data.ID\"\n [dataHelper]=\"createSubRunDataHelper()\"\n [autoRefresh]=\"false\"\n (itemSelected)=\"selectItem($event)\"\n (navigateToEntity)=\"navigateToEntity.emit($event)\">\n </mj-ai-agent-run-timeline>\n }\n }\n }\n </div>\n }\n @if (items.length === 0) {\n <mj-empty-state\n Icon=\"fa-solid fa-stream\"\n Title=\"No execution steps found\" />\n }\n </div>\n} @else {\n <!-- timelineItems$ hasn't emitted yet -->\n <div class=\"loading-state\">\n <mj-loading text=\"Loading run steps...\" size=\"medium\"></mj-loading>\n </div>\n}\n\n@if (error) {\n <mj-empty-state\n Variant=\"error\"\n [Message]=\"error\" />\n}\n\n<!-- Recursive template for rendering nested children (ParentID relationships) -->\n<ng-template #recursiveSteps let-steps>\n @for (step of steps; track trackByItemId($index, step)) {\n <mj-ai-agent-run-step-node\n [item]=\"step\"\n [isSelected]=\"selectedItem?.id === step.id\"\n (itemClick)=\"selectItem(step)\"\n (expandToggle)=\"toggleItemExpansion(step, $event)\"\n (navigateToEntity)=\"navigateToEntity.emit($event)\">\n </mj-ai-agent-run-step-node>\n <!-- Recursively render this step's children if expanded -->\n @if (step.isExpanded && step.children && step.children.length > 0) {\n <ng-container *ngTemplateOutlet=\"recursiveSteps; context: { $implicit: step.children }\"></ng-container>\n }\n }\n</ng-template>"]}
@@ -1,7 +1,8 @@
1
1
  import { OnInit, OnDestroy } from '@angular/core';
2
- import { MJAIAgentRunEntityExtended, MJAIAgentEntityExtended, type AgentRunTreeNode } from '@memberjunction/ai-core-plus';
2
+ import { MJAIAgentRunEntityExtended, MJAIAgentEntityExtended, type AgentRunTreeNode, type TaskGraphSpec } from '@memberjunction/ai-core-plus';
3
3
  import { TimelineItem, AIAgentRunTimelineComponent } from './ai-agent-run-timeline.component';
4
4
  import { MJAIAgentRunFormComponent } from '../../generated/Entities/MJAIAgentRun/mjaiagentrun.form.component';
5
+ import { ParseJSONRecursive } from '@memberjunction/global';
5
6
  import { AIAgentRunAnalyticsComponent } from './ai-agent-run-analytics.component';
6
7
  import { AgentRunCostMetrics } from './ai-agent-run-cost.service';
7
8
  import { AIAgentRunDataHelper } from './ai-agent-run-data.service';
@@ -58,6 +59,18 @@ export declare class MJAIAgentRunFormComponentExtended extends MJAIAgentRunFormC
58
59
  private _cachedParsedStartingPayload;
59
60
  private _cachedParsedFinalPayload;
60
61
  private _cachedParsedData;
62
+ private _cachedStartingPayloadRaw;
63
+ private _cachedStartingPayloadObject;
64
+ private _cachedFinalPayloadRaw;
65
+ private _cachedFinalPayloadObject;
66
+ private _cachedStepStartRaw;
67
+ private _cachedStepStartItem;
68
+ private _cachedStepPayloadAtStartObject;
69
+ private _cachedStepEndRaw;
70
+ private _cachedStepEndItem;
71
+ private _cachedStepPayloadAtEndObject;
72
+ private _lastRunTreeForWorkflowRunning;
73
+ private _cachedWorkflowStillRunning;
61
74
  private _allParsingComplete;
62
75
  TimelineComponent?: AIAgentRunTimelineComponent;
63
76
  /** @deprecated Use {@link TimelineComponent}. */
@@ -223,6 +236,13 @@ export declare class MJAIAgentRunFormComponentExtended extends MJAIAgentRunFormC
223
236
  CopyToClipboard(text: string): Promise<void>;
224
237
  /** @deprecated Use {@link CopyToClipboard}. */
225
238
  copyToClipboard(text: string): Promise<void>;
239
+ /** True while a workflow is being saved via `WorkflowSaveOperation`. */
240
+ SavingWorkflow: boolean;
241
+ /**
242
+ * Persists the selected `TaskGraph` step's `TaskGraphSpec` as a Draft Flow Agent workflow
243
+ * via `WorkflowSaveOperation` and opens the resulting `MJ: AI Agents` record.
244
+ */
245
+ OnSaveAsWorkflowRequested(spec: TaskGraphSpec): Promise<void>;
226
246
  /**
227
247
  * Get the Result field with recursive JSON parsing applied
228
248
  */
@@ -250,15 +270,15 @@ export declare class MJAIAgentRunFormComponentExtended extends MJAIAgentRunFormC
250
270
  /**
251
271
  * Get parsed Starting Payload as an object for deep diff
252
272
  */
253
- get StartingPayloadObject(): any;
273
+ get StartingPayloadObject(): ReturnType<typeof ParseJSONRecursive> | null;
254
274
  /** @deprecated Use {@link StartingPayloadObject}. */
255
- get startingPayloadObject(): any;
275
+ get startingPayloadObject(): ReturnType<typeof ParseJSONRecursive> | null;
256
276
  /**
257
277
  * Get parsed Final Payload as an object for deep diff
258
278
  */
259
- get FinalPayloadObject(): any;
279
+ get FinalPayloadObject(): ReturnType<typeof ParseJSONRecursive> | null;
260
280
  /** @deprecated Use {@link FinalPayloadObject}. */
261
- get finalPayloadObject(): any;
281
+ get finalPayloadObject(): ReturnType<typeof ParseJSONRecursive> | null;
262
282
  /**
263
283
  * Clear all cached parsed results
264
284
  */
@@ -279,6 +299,11 @@ export declare class MJAIAgentRunFormComponentExtended extends MJAIAgentRunFormC
279
299
  get ShowPayloadDiff(): boolean;
280
300
  /** @deprecated Use {@link ShowPayloadDiff}. */
281
301
  get showPayloadDiff(): boolean;
302
+ /**
303
+ * True for an older run that has `Result` but no `FinalPayload`. When `FinalPayload` is set it
304
+ * holds the same JSON and has its own panel.
305
+ */
306
+ get ShowResultPanel(): boolean;
282
307
  /**
283
308
  * Check if selected timeline item is a step with payload changes
284
309
  */
@@ -288,15 +313,15 @@ export declare class MJAIAgentRunFormComponentExtended extends MJAIAgentRunFormC
288
313
  /**
289
314
  * Get parsed PayloadAtStart for the selected step
290
315
  */
291
- get StepPayloadAtStartObject(): any;
316
+ get StepPayloadAtStartObject(): ReturnType<typeof ParseJSONRecursive> | null;
292
317
  /** @deprecated Use {@link StepPayloadAtStartObject}. */
293
- get stepPayloadAtStartObject(): any;
318
+ get stepPayloadAtStartObject(): ReturnType<typeof ParseJSONRecursive> | null;
294
319
  /**
295
320
  * Get parsed PayloadAtEnd for the selected step
296
321
  */
297
- get StepPayloadAtEndObject(): any;
322
+ get StepPayloadAtEndObject(): ReturnType<typeof ParseJSONRecursive> | null;
298
323
  /** @deprecated Use {@link StepPayloadAtEndObject}. */
299
- get stepPayloadAtEndObject(): any;
324
+ get stepPayloadAtEndObject(): ReturnType<typeof ParseJSONRecursive> | null;
300
325
  static ɵfac: i0.ɵɵFactoryDeclaration<MJAIAgentRunFormComponentExtended, never>;
301
326
  static ɵcmp: i0.ɵɵComponentDeclaration<MJAIAgentRunFormComponentExtended, "mj-ai-agent-run-form", never, {}, {}, never, never, false, never>;
302
327
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ai-agent-run.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/ai-agent-run/ai-agent-run.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-agent-run.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/ai-agent-run/ai-agent-run.component.ts"],"names":[],"mappings":"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"}