@memberjunction/ng-flow-editor 5.4.1 → 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-flow-transformer.service.d.ts","sourceRoot":"","sources":["../../../src/lib/agent-editor/agent-flow-transformer.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAC7F,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAuB,kBAAkB,EAAgB,MAAM,0BAA0B,CAAC;;AAE3H,uDAAuD;AACvD,MAAM,WAAW,gBAAgB;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAAE;AAE1F,+DAA+D;AAC/D,MAAM,WAAW,eAAe;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAAE;AAElH,gDAAgD;AAChD,eAAO,MAAM,uBAAuB,EAAE,kBAAkB,EAwDvD,CAAC;AAEF;;GAEG;AACH,qBACa,2BAA2B;IAEtC,oDAAoD;IACpD,YAAY,CACV,KAAK,EAAE,mBAAmB,EAAE,EAC5B,OAAO,CAAC,EAAE,gBAAgB,EAAE,EAC5B,MAAM,CAAC,EAAE,eAAe,EAAE,GACzB,QAAQ,EAAE;IAIb,0DAA0D;IAC1D,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,EAAE,GAAG,cAAc,EAAE;IAItE,gFAAgF;IAChF,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM;IAiBpD,4DAA4D;IAC5D,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI;IASlE,kDAAkD;IAClD,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC;IASrD;;;OAGG;IACH,yBAAyB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,GAAG,IAAI;IAgBnE,OAAO,CAAC,uBAAuB;IAW/B;;;OAGG;IACH,0BAA0B,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO;IAgB9D,OAAO,CAAC,0BAA0B;IAWlC;;;;;;;;OAQG;IACH,eAAe,CACb,IAAI,EAAE,mBAAmB,EACzB,OAAO,CAAC,EAAE,gBAAgB,EAAE,EAC5B,MAAM,CAAC,EAAE,eAAe,EAAE,GACzB;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE;IAwB5C,OAAO,CAAC,mBAAmB;IAsB3B,8FAA8F;IAC9F,UAAU,CACR,IAAI,EAAE,mBAAmB,EACzB,OAAO,CAAC,EAAE,gBAAgB,EAAE,EAC5B,MAAM,CAAC,EAAE,eAAe,EAAE,GACzB,QAAQ;IA0DX,OAAO,CAAC,gBAAgB;IAwCxB,OAAO,CAAC,gBAAgB;IAgDxB,qEAAqE;IACrE,OAAO,CAAC,gBAAgB;IA4BxB,wEAAwE;IACxE,OAAO,CAAC,2BAA2B;IAmBnC,oCAAoC;IACpC,OAAO,CAAC,eAAe;IASvB,qCAAqC;IACrC,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,iBAAiB;IAOzB,2DAA2D;IAC3D,OAAO,CAAC,mBAAmB;IAS3B,8DAA8D;IAC9D,OAAO,CAAC,eAAe;IASvB,gEAAgE;IAChE,yBAAyB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM;IAa5D,OAAO,CAAC,iBAAiB;yCAzbd,2BAA2B;6CAA3B,2BAA2B;CA8bvC"}
1
+ {"version":3,"file":"agent-flow-transformer.service.d.ts","sourceRoot":"","sources":["../../../src/lib/agent-editor/agent-flow-transformer.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAC7F,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAuB,kBAAkB,EAAgB,MAAM,0BAA0B,CAAC;;AAG3H,uDAAuD;AACvD,MAAM,WAAW,gBAAgB;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAAE;AAE1F,+DAA+D;AAC/D,MAAM,WAAW,eAAe;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAAE;AAElH,gDAAgD;AAChD,eAAO,MAAM,uBAAuB,EAAE,kBAAkB,EAwDvD,CAAC;AAEF;;GAEG;AACH,qBACa,2BAA2B;IAEtC,oDAAoD;IACpD,YAAY,CACV,KAAK,EAAE,mBAAmB,EAAE,EAC5B,OAAO,CAAC,EAAE,gBAAgB,EAAE,EAC5B,MAAM,CAAC,EAAE,eAAe,EAAE,GACzB,QAAQ,EAAE;IAIb,0DAA0D;IAC1D,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,EAAE,GAAG,cAAc,EAAE;IAItE,gFAAgF;IAChF,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM;IAiBpD,4DAA4D;IAC5D,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI;IASlE,kDAAkD;IAClD,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC;IASrD;;;OAGG;IACH,yBAAyB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,GAAG,IAAI;IAgBnE,OAAO,CAAC,uBAAuB;IAW/B;;;OAGG;IACH,0BAA0B,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO;IAgB9D,OAAO,CAAC,0BAA0B;IAWlC;;;;;;;;OAQG;IACH,eAAe,CACb,IAAI,EAAE,mBAAmB,EACzB,OAAO,CAAC,EAAE,gBAAgB,EAAE,EAC5B,MAAM,CAAC,EAAE,eAAe,EAAE,GACzB;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE;IAwB5C,OAAO,CAAC,mBAAmB;IAsB3B,8FAA8F;IAC9F,UAAU,CACR,IAAI,EAAE,mBAAmB,EACzB,OAAO,CAAC,EAAE,gBAAgB,EAAE,EAC5B,MAAM,CAAC,EAAE,eAAe,EAAE,GACzB,QAAQ;IA0DX,OAAO,CAAC,gBAAgB;IAwCxB,OAAO,CAAC,gBAAgB;IAgDxB,qEAAqE;IACrE,OAAO,CAAC,gBAAgB;IA4BxB,wEAAwE;IACxE,OAAO,CAAC,2BAA2B;IAmBnC,oCAAoC;IACpC,OAAO,CAAC,eAAe;IASvB,qCAAqC;IACrC,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,iBAAiB;IAOzB,2DAA2D;IAC3D,OAAO,CAAC,mBAAmB;IAS3B,8DAA8D;IAC9D,OAAO,CAAC,eAAe;IASvB,gEAAgE;IAChE,yBAAyB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM;IAa5D,OAAO,CAAC,iBAAiB;yCAzbd,2BAA2B;6CAA3B,2BAA2B;CA8bvC"}
@@ -1,4 +1,5 @@
1
1
  import { Injectable } from '@angular/core';
2
+ import { UUIDsEqual } from '@memberjunction/global';
2
3
  import * as i0 from "@angular/core";
3
4
  /** Step types mapped to visual configuration */
4
5
  export const AGENT_STEP_TYPE_CONFIGS = [
@@ -177,11 +178,11 @@ export class AgentFlowTransformerService {
177
178
  ResolveStepIcon(step, actions, agents) {
178
179
  const fallbackIcon = this.getIconForType(step.StepType);
179
180
  if (step.StepType === 'Action' && step.ActionID && actions) {
180
- const action = actions.find(a => a.ID === step.ActionID);
181
+ const action = actions.find(a => UUIDsEqual(a.ID, step.ActionID));
181
182
  return { Icon: action?.IconClass || fallbackIcon };
182
183
  }
183
184
  if (step.StepType === 'Sub-Agent' && step.SubAgentID && agents) {
184
- const agent = agents.find(a => a.ID === step.SubAgentID);
185
+ const agent = agents.find(a => UUIDsEqual(a.ID, step.SubAgentID));
185
186
  if (agent?.LogoURL) {
186
187
  return { Icon: agent.IconClass || fallbackIcon, LogoURL: agent.LogoURL };
187
188
  }
@@ -196,12 +197,12 @@ export class AgentFlowTransformerService {
196
197
  resolveLoopBodyIcon(step, actions, agents) {
197
198
  const fallbackIcon = this.getIconForType(step.StepType);
198
199
  if (step.LoopBodyType === 'Action' && step.ActionID && actions) {
199
- const action = actions.find(a => a.ID === step.ActionID);
200
+ const action = actions.find(a => UUIDsEqual(a.ID, step.ActionID));
200
201
  if (action?.IconClass)
201
202
  return { Icon: fallbackIcon }; // Loop keeps its own icon; body icon handled separately
202
203
  }
203
204
  if (step.LoopBodyType === 'Sub-Agent' && step.SubAgentID && agents) {
204
- const agent = agents.find(a => a.ID === step.SubAgentID);
205
+ const agent = agents.find(a => UUIDsEqual(a.ID, step.SubAgentID));
205
206
  if (agent?.LogoURL)
206
207
  return { Icon: fallbackIcon, LogoURL: agent.LogoURL };
207
208
  }
@@ -266,7 +267,7 @@ export class AgentFlowTransformerService {
266
267
  const hasCondition = path.Condition != null && path.Condition.trim().length > 0;
267
268
  const isAlwaysPath = !hasCondition;
268
269
  // Analyze sibling paths from the same origin step
269
- const siblingPaths = allPaths.filter(p => p.OriginStepID === path.OriginStepID);
270
+ const siblingPaths = allPaths.filter(p => UUIDsEqual(p.OriginStepID, path.OriginStepID));
270
271
  const isOnlyPath = siblingPaths.length === 1;
271
272
  const unconditionalSiblings = siblingPaths.filter(p => !p.Condition || p.Condition.trim().length === 0);
272
273
  // Flag as ambiguous when 2+ unconditional paths exist from the same source.
@@ -345,7 +346,7 @@ export class AgentFlowTransformerService {
345
346
  data['LoopIterationSummary'] = this.BuildLoopIterationSummary(step);
346
347
  // Store logo URL for loop body sub-agents
347
348
  if (bodyType === 'Sub-Agent' && step.SubAgentID && agents) {
348
- const agent = agents.find(a => a.ID === step.SubAgentID);
349
+ const agent = agents.find(a => UUIDsEqual(a.ID, step.SubAgentID));
349
350
  if (agent?.LogoURL) {
350
351
  data['LoopBodyLogoURL'] = agent.LogoURL;
351
352
  }
@@ -361,11 +362,11 @@ export class AgentFlowTransformerService {
361
362
  const bodyType = step.LoopBodyType;
362
363
  const fallback = this.getBodyTypeIcon(bodyType ?? '');
363
364
  if (bodyType === 'Action' && step.ActionID && actions) {
364
- const action = actions.find(a => a.ID === step.ActionID);
365
+ const action = actions.find(a => UUIDsEqual(a.ID, step.ActionID));
365
366
  return action?.IconClass || fallback;
366
367
  }
367
368
  if (bodyType === 'Sub-Agent' && step.SubAgentID && agents) {
368
- const agent = agents.find(a => a.ID === step.SubAgentID);
369
+ const agent = agents.find(a => UUIDsEqual(a.ID, step.SubAgentID));
369
370
  return agent?.IconClass || fallback;
370
371
  }
371
372
  return fallback;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-flow-transformer.service.js","sourceRoot":"","sources":["../../../src/lib/agent-editor/agent-flow-transformer.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable } from '@angular/core';\nimport { MJAIAgentStepEntity, MJAIAgentStepPathEntity } from '@memberjunction/core-entities';\nimport { FlowNode, FlowConnection, FlowConnectionStyle, FlowNodeTypeConfig, FlowNodePort } from '../interfaces/flow-types';\n\n/** Picker item shape for Actions with optional icon */\nexport interface ActionPickerItem { ID: string; Name: string; IconClass?: string | null; }\n\n/** Picker item shape for Agents with optional icon and logo */\nexport interface AgentPickerItem { ID: string; Name: string; IconClass?: string | null; LogoURL?: string | null; }\n\n/** Step types mapped to visual configuration */\nexport const AGENT_STEP_TYPE_CONFIGS: FlowNodeTypeConfig[] = [\n {\n Type: 'Action',\n Label: 'Action',\n Icon: 'fa-bolt',\n Color: '#3B82F6',\n Category: 'Steps',\n DefaultPorts: [\n { ID: 'input', Direction: 'input', Side: 'top', Multiple: true },\n { ID: 'output', Direction: 'output', Side: 'bottom', Multiple: true }\n ]\n },\n {\n Type: 'Prompt',\n Label: 'Prompt',\n Icon: 'fa-comment-dots',\n Color: '#8B5CF6',\n Category: 'Steps',\n DefaultPorts: [\n { ID: 'input', Direction: 'input', Side: 'top', Multiple: true },\n { ID: 'output', Direction: 'output', Side: 'bottom', Multiple: true }\n ]\n },\n {\n Type: 'Sub-Agent',\n Label: 'Sub-Agent',\n Icon: 'fa-robot',\n Color: '#10B981',\n Category: 'Steps',\n DefaultPorts: [\n { ID: 'input', Direction: 'input', Side: 'top', Multiple: true },\n { ID: 'output', Direction: 'output', Side: 'bottom', Multiple: true }\n ]\n },\n {\n Type: 'ForEach',\n Label: 'For Each',\n Icon: 'fa-arrows-repeat',\n Color: '#F59E0B',\n Category: 'Loops',\n DefaultPorts: [\n { ID: 'input', Direction: 'input', Side: 'top', Multiple: true },\n { ID: 'output', Direction: 'output', Side: 'bottom', Multiple: true }\n ]\n },\n {\n Type: 'While',\n Label: 'While',\n Icon: 'fa-rotate',\n Color: '#F97316',\n Category: 'Loops',\n DefaultPorts: [\n { ID: 'input', Direction: 'input', Side: 'top', Multiple: true },\n { ID: 'output', Direction: 'output', Side: 'bottom', Multiple: true }\n ]\n }\n];\n\n/**\n * Transforms MJ AIAgentStep/Path entities to/from generic FlowNode/FlowConnection models.\n */\n@Injectable()\nexport class AgentFlowTransformerService {\n\n /** Convert MJ step entities to generic FlowNodes */\n StepsToNodes(\n steps: MJAIAgentStepEntity[],\n actions?: ActionPickerItem[],\n agents?: AgentPickerItem[]\n ): FlowNode[] {\n return steps.map(step => this.StepToNode(step, actions, agents));\n }\n\n /** Convert MJ path entities to generic FlowConnections */\n PathsToConnections(paths: MJAIAgentStepPathEntity[]): FlowConnection[] {\n return paths.map(path => this.pathToConnection(path, paths));\n }\n\n /** Build the subtitle for a step based on its configured action/prompt/agent */\n BuildStepSubtitle(step: MJAIAgentStepEntity): string {\n switch (step.StepType) {\n case 'Action':\n return step.Action ? `Action: ${step.Action}` : 'No action selected';\n case 'Prompt':\n return step.Prompt ? `Prompt: ${step.Prompt}` : 'No prompt selected';\n case 'Sub-Agent':\n return step.SubAgent ? `Agent: ${step.SubAgent}` : 'No sub-agent selected';\n case 'ForEach':\n return this.buildLoopSubtitle(step, 'For Each');\n case 'While':\n return this.buildLoopSubtitle(step, 'While');\n default:\n return step.StepType;\n }\n }\n\n /** Apply FlowNode position changes back to a step entity */\n ApplyNodePosition(step: MJAIAgentStepEntity, node: FlowNode): void {\n step.PositionX = Math.round(node.Position.X);\n step.PositionY = Math.round(node.Position.Y);\n if (node.Size) {\n step.Width = Math.round(node.Size.Width);\n step.Height = Math.round(node.Size.Height);\n }\n }\n\n /** Map FlowNode status from step entity status */\n MapStepStatus(stepStatus: string): FlowNode['Status'] {\n switch (stepStatus) {\n case 'Active': return 'default';\n case 'Disabled': return 'disabled';\n case 'Pending': return 'pending';\n default: return 'default';\n }\n }\n\n /**\n * Returns a short human-readable message describing what's missing,\n * or null if the step is fully configured.\n */\n BuildConfigWarningMessage(step: MJAIAgentStepEntity): string | null {\n switch (step.StepType) {\n case 'Action':\n return !step.ActionID ? 'No action selected' : null;\n case 'Prompt':\n return !step.PromptID ? 'No prompt selected' : null;\n case 'Sub-Agent':\n return !step.SubAgentID ? 'No sub-agent selected' : null;\n case 'ForEach':\n case 'While':\n return this.buildLoopWarningMessage(step);\n default:\n return null;\n }\n }\n\n private buildLoopWarningMessage(step: MJAIAgentStepEntity): string | null {\n const bodyType = step.LoopBodyType;\n if (!bodyType) return 'No loop body type selected';\n switch (bodyType) {\n case 'Action': return !step.ActionID ? 'No action selected for loop body' : null;\n case 'Prompt': return !step.PromptID ? 'No prompt selected for loop body' : null;\n case 'Sub-Agent': return !step.SubAgentID ? 'No sub-agent selected for loop body' : null;\n default: return null;\n }\n }\n\n /**\n * Returns true when a step is missing its required configuration reference\n * (e.g., an Action step with no ActionID, a Prompt step with no PromptID).\n */\n IsStepMissingConfiguration(step: MJAIAgentStepEntity): boolean {\n switch (step.StepType) {\n case 'Action':\n return !step.ActionID;\n case 'Prompt':\n return !step.PromptID;\n case 'Sub-Agent':\n return !step.SubAgentID;\n case 'ForEach':\n case 'While':\n return this.isLoopBodyMissingReference(step);\n default:\n return false;\n }\n }\n\n private isLoopBodyMissingReference(step: MJAIAgentStepEntity): boolean {\n const bodyType = step.LoopBodyType;\n if (!bodyType) return true; // No body type selected at all\n switch (bodyType) {\n case 'Action': return !step.ActionID;\n case 'Prompt': return !step.PromptID;\n case 'Sub-Agent': return !step.SubAgentID;\n default: return false;\n }\n }\n\n /**\n * Resolve the best icon and optional logo URL for a step based on its\n * configured action/agent and available picker data.\n *\n * Resolution chain:\n * - Action step: action's IconClass -> step-type fallback\n * - Sub-Agent step: agent's LogoURL (stored in Data) -> agent's IconClass -> step-type fallback\n * - Other steps: step-type icon\n */\n ResolveStepIcon(\n step: MJAIAgentStepEntity,\n actions?: ActionPickerItem[],\n agents?: AgentPickerItem[]\n ): { Icon: string; LogoURL?: string | null } {\n const fallbackIcon = this.getIconForType(step.StepType);\n\n if (step.StepType === 'Action' && step.ActionID && actions) {\n const action = actions.find(a => a.ID === step.ActionID);\n return { Icon: action?.IconClass || fallbackIcon };\n }\n\n if (step.StepType === 'Sub-Agent' && step.SubAgentID && agents) {\n const agent = agents.find(a => a.ID === step.SubAgentID);\n if (agent?.LogoURL) {\n return { Icon: agent.IconClass || fallbackIcon, LogoURL: agent.LogoURL };\n }\n return { Icon: agent?.IconClass || fallbackIcon };\n }\n\n // For loop steps, resolve based on loop body type\n if ((step.StepType === 'ForEach' || step.StepType === 'While') && step.LoopBodyType) {\n return this.resolveLoopBodyIcon(step, actions, agents);\n }\n\n return { Icon: fallbackIcon };\n }\n\n private resolveLoopBodyIcon(\n step: MJAIAgentStepEntity,\n actions?: ActionPickerItem[],\n agents?: AgentPickerItem[]\n ): { Icon: string; LogoURL?: string | null } {\n const fallbackIcon = this.getIconForType(step.StepType);\n\n if (step.LoopBodyType === 'Action' && step.ActionID && actions) {\n const action = actions.find(a => a.ID === step.ActionID);\n if (action?.IconClass) return { Icon: fallbackIcon }; // Loop keeps its own icon; body icon handled separately\n }\n\n if (step.LoopBodyType === 'Sub-Agent' && step.SubAgentID && agents) {\n const agent = agents.find(a => a.ID === step.SubAgentID);\n if (agent?.LogoURL) return { Icon: fallbackIcon, LogoURL: agent.LogoURL };\n }\n\n return { Icon: fallbackIcon };\n }\n\n // ── Public Conversion Methods ───────────────────────────────\n\n /** Convert a single MJ step entity to a FlowNode (public for direct use when adding nodes) */\n StepToNode(\n step: MJAIAgentStepEntity,\n actions?: ActionPickerItem[],\n agents?: AgentPickerItem[]\n ): FlowNode {\n const stepId = step.ID;\n const ports: FlowNodePort[] = [\n {\n ID: `${stepId}-input`,\n Direction: 'input',\n Side: 'top',\n Multiple: true,\n Disabled: step.StartingStep === true\n },\n {\n ID: `${stepId}-output`,\n Direction: 'output',\n Side: 'bottom',\n Multiple: true\n }\n ];\n\n // Show warning status when the step is missing its required configuration,\n // unless the step is explicitly disabled (respect the user's intent).\n const baseStatus = this.MapStepStatus(step.Status);\n const warningMessage = (baseStatus !== 'disabled') ? this.BuildConfigWarningMessage(step) : null;\n const effectiveStatus = warningMessage ? 'warning' : baseStatus;\n\n // Build loop-specific data for ForEach/While nodes\n const data: Record<string, unknown> = { StepEntityID: stepId };\n if (step.StepType === 'ForEach' || step.StepType === 'While') {\n this.populateLoopData(step, data, actions, agents);\n }\n\n // Resolve icon (and optional logo URL) from picker data\n const resolved = this.ResolveStepIcon(step, actions, agents);\n if (resolved.LogoURL) {\n data['LogoURL'] = resolved.LogoURL;\n }\n\n return {\n ID: stepId,\n Type: step.StepType,\n Label: step.Name,\n Subtitle: this.BuildStepSubtitle(step),\n Icon: resolved.Icon,\n Status: effectiveStatus,\n StatusMessage: warningMessage ?? undefined,\n IsStartNode: step.StartingStep === true,\n Position: {\n X: step.PositionX ?? 0,\n Y: step.PositionY ?? 0\n },\n Size: {\n Width: step.Width ?? 220,\n Height: step.Height ?? 100\n },\n Ports: ports,\n Data: data\n };\n }\n\n private pathToConnection(path: MJAIAgentStepPathEntity, allPaths: MJAIAgentStepPathEntity[]): FlowConnection {\n const hasCondition = path.Condition != null && path.Condition.trim().length > 0;\n const isAlwaysPath = !hasCondition;\n\n // Analyze sibling paths from the same origin step\n const siblingPaths = allPaths.filter(p => p.OriginStepID === path.OriginStepID);\n const isOnlyPath = siblingPaths.length === 1;\n const unconditionalSiblings = siblingPaths.filter(\n p => !p.Condition || p.Condition.trim().length === 0\n );\n // Flag as ambiguous when 2+ unconditional paths exist from the same source.\n // Multiple unconditional paths are always ambiguous because only the\n // highest-priority one will execute — regardless of whether they have descriptions.\n const hasAmbiguousAlways = isAlwaysPath && unconditionalSiblings.length > 1;\n\n // Build label, icon, and visual style\n const visual = this.buildPathVisuals(path, hasCondition, isOnlyPath, hasAmbiguousAlways);\n\n return {\n ID: path.ID,\n SourceNodeID: path.OriginStepID,\n SourcePortID: `${path.OriginStepID}-output`,\n TargetNodeID: path.DestinationStepID,\n TargetPortID: `${path.DestinationStepID}-input`,\n Label: visual.label,\n LabelIcon: visual.labelIcon,\n LabelIconColor: visual.labelIconColor,\n LabelDetail: visual.labelDetail,\n Condition: path.Condition ?? undefined,\n Priority: path.Priority,\n Style: visual.style,\n Color: visual.color,\n Data: {\n PathEntityID: path.ID,\n IsAlwaysPath: !hasCondition,\n HasAmbiguousAlways: hasAmbiguousAlways\n }\n };\n }\n\n private buildPathVisuals(\n path: MJAIAgentStepPathEntity,\n hasCondition: boolean,\n isOnlyPath: boolean,\n hasAmbiguousAlways: boolean\n ): { label?: string; labelIcon?: string; labelIconColor?: string; labelDetail?: string; color: string; style: FlowConnectionStyle } {\n // Conditional path — amber dashed with condition text\n if (hasCondition) {\n return {\n label: path.Description || path.Condition!,\n color: '#f59e0b',\n style: 'dashed'\n };\n }\n\n // Sole unconditional (only exit path) — neutral dark slate with Default indicator\n if (isOnlyPath) {\n return {\n label: path.Description || 'Default',\n labelIcon: 'fa-circle-check',\n labelIconColor: '#16a34a',\n color: '#64748b',\n style: 'solid'\n };\n }\n\n // Ambiguous: multiple unconditional paths from the same step\n if (hasAmbiguousAlways) {\n return {\n label: path.Description || 'Default',\n labelIcon: 'fa-triangle-exclamation',\n labelIconColor: '#ef4444',\n labelDetail: 'Duplicate default paths: only the highest-priority one will execute',\n color: '#ef4444',\n style: 'solid'\n };\n }\n\n // Valid default path (unconditional among conditional siblings) — forest green with checkmark\n return {\n label: path.Description || 'Default',\n labelIcon: 'fa-circle-check',\n labelIconColor: '#16a34a',\n color: '#16a34a',\n style: 'solid'\n };\n }\n\n /** Populate loop-specific display data on the node's Data payload */\n private populateLoopData(\n step: MJAIAgentStepEntity,\n data: Record<string, unknown>,\n actions?: ActionPickerItem[],\n agents?: AgentPickerItem[]\n ): void {\n const bodyType = step.LoopBodyType;\n data['LoopBodyType'] = bodyType ?? null;\n data['LoopBodyName'] = bodyType ? this.resolveLoopBodyName(step) : null;\n data['LoopBodyIcon'] = bodyType ? this.resolveLoopBodySpecificIcon(step, actions, agents) : null;\n data['LoopBodyColor'] = bodyType ? this.getBodyTypeColor(bodyType) : null;\n data['LoopIterationSummary'] = this.BuildLoopIterationSummary(step);\n\n // Store logo URL for loop body sub-agents\n if (bodyType === 'Sub-Agent' && step.SubAgentID && agents) {\n const agent = agents.find(a => a.ID === step.SubAgentID);\n if (agent?.LogoURL) {\n data['LoopBodyLogoURL'] = agent.LogoURL;\n }\n }\n\n const config = this.parseLoopConfig(step);\n if (config) {\n data['MaxIterations'] = config['maxIterations'] ?? null;\n data['LoopItemVariable'] = config['itemVariable'] ?? null;\n }\n }\n\n /** Resolve the best icon for a loop body, checking picker data first */\n private resolveLoopBodySpecificIcon(\n step: MJAIAgentStepEntity,\n actions?: ActionPickerItem[],\n agents?: AgentPickerItem[]\n ): string {\n const bodyType = step.LoopBodyType;\n const fallback = this.getBodyTypeIcon(bodyType ?? '');\n\n if (bodyType === 'Action' && step.ActionID && actions) {\n const action = actions.find(a => a.ID === step.ActionID);\n return action?.IconClass || fallback;\n }\n if (bodyType === 'Sub-Agent' && step.SubAgentID && agents) {\n const agent = agents.find(a => a.ID === step.SubAgentID);\n return agent?.IconClass || fallback;\n }\n return fallback;\n }\n\n /** Get icon for a loop body type */\n private getBodyTypeIcon(bodyType: string): string {\n switch (bodyType) {\n case 'Action': return 'fa-bolt';\n case 'Prompt': return 'fa-comment-dots';\n case 'Sub-Agent': return 'fa-robot';\n default: return 'fa-circle-nodes';\n }\n }\n\n /** Get color for a loop body type */\n private getBodyTypeColor(bodyType: string): string {\n switch (bodyType) {\n case 'Action': return '#3B82F6';\n case 'Prompt': return '#8B5CF6';\n case 'Sub-Agent': return '#10B981';\n default: return '#6B7280';\n }\n }\n\n private getIconForType(stepType: string): string {\n const config = AGENT_STEP_TYPE_CONFIGS.find(c => c.Type === stepType);\n return config?.Icon ?? 'fa-circle-nodes';\n }\n\n private buildLoopSubtitle(step: MJAIAgentStepEntity, prefix: string): string {\n const bodyType = step.LoopBodyType;\n if (!bodyType) return `${prefix} (no body type)`;\n const bodyName = this.resolveLoopBodyName(step);\n return bodyName ? `${prefix} → ${bodyName}` : `${prefix} → ${bodyType}`;\n }\n\n /** Resolve the display name for the loop body operation */\n private resolveLoopBodyName(step: MJAIAgentStepEntity): string | null {\n switch (step.LoopBodyType) {\n case 'Action': return step.Action ?? null;\n case 'Prompt': return step.Prompt ?? null;\n case 'Sub-Agent': return step.SubAgent ?? null;\n default: return null;\n }\n }\n\n /** Parse the Configuration JSON, returning null on failure */\n private parseLoopConfig(step: MJAIAgentStepEntity): Record<string, unknown> | null {\n if (!step.Configuration) return null;\n try {\n return JSON.parse(step.Configuration) as Record<string, unknown>;\n } catch {\n return null;\n }\n }\n\n /** Build a short iteration summary for display on loop nodes */\n BuildLoopIterationSummary(step: MJAIAgentStepEntity): string {\n const config = this.parseLoopConfig(step);\n if (step.StepType === 'ForEach') {\n const collection = config?.['collectionPath'] as string | undefined;\n return collection ? `over ${collection}` : 'over collection';\n }\n if (step.StepType === 'While') {\n const condition = config?.['condition'] as string | undefined;\n return condition ? `while ${this.truncateCondition(condition)}` : 'while condition';\n }\n return '';\n }\n\n private truncateCondition(condition: string): string {\n const maxLen = 30;\n if (condition.length <= maxLen) return condition;\n return condition.substring(0, maxLen) + '...';\n }\n}\n"]}
1
+ {"version":3,"file":"agent-flow-transformer.service.js","sourceRoot":"","sources":["../../../src/lib/agent-editor/agent-flow-transformer.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable } from '@angular/core';\nimport { MJAIAgentStepEntity, MJAIAgentStepPathEntity } from '@memberjunction/core-entities';\nimport { FlowNode, FlowConnection, FlowConnectionStyle, FlowNodeTypeConfig, FlowNodePort } from '../interfaces/flow-types';\nimport { UUIDsEqual } from '@memberjunction/global';\n\n/** Picker item shape for Actions with optional icon */\nexport interface ActionPickerItem { ID: string; Name: string; IconClass?: string | null; }\n\n/** Picker item shape for Agents with optional icon and logo */\nexport interface AgentPickerItem { ID: string; Name: string; IconClass?: string | null; LogoURL?: string | null; }\n\n/** Step types mapped to visual configuration */\nexport const AGENT_STEP_TYPE_CONFIGS: FlowNodeTypeConfig[] = [\n {\n Type: 'Action',\n Label: 'Action',\n Icon: 'fa-bolt',\n Color: '#3B82F6',\n Category: 'Steps',\n DefaultPorts: [\n { ID: 'input', Direction: 'input', Side: 'top', Multiple: true },\n { ID: 'output', Direction: 'output', Side: 'bottom', Multiple: true }\n ]\n },\n {\n Type: 'Prompt',\n Label: 'Prompt',\n Icon: 'fa-comment-dots',\n Color: '#8B5CF6',\n Category: 'Steps',\n DefaultPorts: [\n { ID: 'input', Direction: 'input', Side: 'top', Multiple: true },\n { ID: 'output', Direction: 'output', Side: 'bottom', Multiple: true }\n ]\n },\n {\n Type: 'Sub-Agent',\n Label: 'Sub-Agent',\n Icon: 'fa-robot',\n Color: '#10B981',\n Category: 'Steps',\n DefaultPorts: [\n { ID: 'input', Direction: 'input', Side: 'top', Multiple: true },\n { ID: 'output', Direction: 'output', Side: 'bottom', Multiple: true }\n ]\n },\n {\n Type: 'ForEach',\n Label: 'For Each',\n Icon: 'fa-arrows-repeat',\n Color: '#F59E0B',\n Category: 'Loops',\n DefaultPorts: [\n { ID: 'input', Direction: 'input', Side: 'top', Multiple: true },\n { ID: 'output', Direction: 'output', Side: 'bottom', Multiple: true }\n ]\n },\n {\n Type: 'While',\n Label: 'While',\n Icon: 'fa-rotate',\n Color: '#F97316',\n Category: 'Loops',\n DefaultPorts: [\n { ID: 'input', Direction: 'input', Side: 'top', Multiple: true },\n { ID: 'output', Direction: 'output', Side: 'bottom', Multiple: true }\n ]\n }\n];\n\n/**\n * Transforms MJ AIAgentStep/Path entities to/from generic FlowNode/FlowConnection models.\n */\n@Injectable()\nexport class AgentFlowTransformerService {\n\n /** Convert MJ step entities to generic FlowNodes */\n StepsToNodes(\n steps: MJAIAgentStepEntity[],\n actions?: ActionPickerItem[],\n agents?: AgentPickerItem[]\n ): FlowNode[] {\n return steps.map(step => this.StepToNode(step, actions, agents));\n }\n\n /** Convert MJ path entities to generic FlowConnections */\n PathsToConnections(paths: MJAIAgentStepPathEntity[]): FlowConnection[] {\n return paths.map(path => this.pathToConnection(path, paths));\n }\n\n /** Build the subtitle for a step based on its configured action/prompt/agent */\n BuildStepSubtitle(step: MJAIAgentStepEntity): string {\n switch (step.StepType) {\n case 'Action':\n return step.Action ? `Action: ${step.Action}` : 'No action selected';\n case 'Prompt':\n return step.Prompt ? `Prompt: ${step.Prompt}` : 'No prompt selected';\n case 'Sub-Agent':\n return step.SubAgent ? `Agent: ${step.SubAgent}` : 'No sub-agent selected';\n case 'ForEach':\n return this.buildLoopSubtitle(step, 'For Each');\n case 'While':\n return this.buildLoopSubtitle(step, 'While');\n default:\n return step.StepType;\n }\n }\n\n /** Apply FlowNode position changes back to a step entity */\n ApplyNodePosition(step: MJAIAgentStepEntity, node: FlowNode): void {\n step.PositionX = Math.round(node.Position.X);\n step.PositionY = Math.round(node.Position.Y);\n if (node.Size) {\n step.Width = Math.round(node.Size.Width);\n step.Height = Math.round(node.Size.Height);\n }\n }\n\n /** Map FlowNode status from step entity status */\n MapStepStatus(stepStatus: string): FlowNode['Status'] {\n switch (stepStatus) {\n case 'Active': return 'default';\n case 'Disabled': return 'disabled';\n case 'Pending': return 'pending';\n default: return 'default';\n }\n }\n\n /**\n * Returns a short human-readable message describing what's missing,\n * or null if the step is fully configured.\n */\n BuildConfigWarningMessage(step: MJAIAgentStepEntity): string | null {\n switch (step.StepType) {\n case 'Action':\n return !step.ActionID ? 'No action selected' : null;\n case 'Prompt':\n return !step.PromptID ? 'No prompt selected' : null;\n case 'Sub-Agent':\n return !step.SubAgentID ? 'No sub-agent selected' : null;\n case 'ForEach':\n case 'While':\n return this.buildLoopWarningMessage(step);\n default:\n return null;\n }\n }\n\n private buildLoopWarningMessage(step: MJAIAgentStepEntity): string | null {\n const bodyType = step.LoopBodyType;\n if (!bodyType) return 'No loop body type selected';\n switch (bodyType) {\n case 'Action': return !step.ActionID ? 'No action selected for loop body' : null;\n case 'Prompt': return !step.PromptID ? 'No prompt selected for loop body' : null;\n case 'Sub-Agent': return !step.SubAgentID ? 'No sub-agent selected for loop body' : null;\n default: return null;\n }\n }\n\n /**\n * Returns true when a step is missing its required configuration reference\n * (e.g., an Action step with no ActionID, a Prompt step with no PromptID).\n */\n IsStepMissingConfiguration(step: MJAIAgentStepEntity): boolean {\n switch (step.StepType) {\n case 'Action':\n return !step.ActionID;\n case 'Prompt':\n return !step.PromptID;\n case 'Sub-Agent':\n return !step.SubAgentID;\n case 'ForEach':\n case 'While':\n return this.isLoopBodyMissingReference(step);\n default:\n return false;\n }\n }\n\n private isLoopBodyMissingReference(step: MJAIAgentStepEntity): boolean {\n const bodyType = step.LoopBodyType;\n if (!bodyType) return true; // No body type selected at all\n switch (bodyType) {\n case 'Action': return !step.ActionID;\n case 'Prompt': return !step.PromptID;\n case 'Sub-Agent': return !step.SubAgentID;\n default: return false;\n }\n }\n\n /**\n * Resolve the best icon and optional logo URL for a step based on its\n * configured action/agent and available picker data.\n *\n * Resolution chain:\n * - Action step: action's IconClass -> step-type fallback\n * - Sub-Agent step: agent's LogoURL (stored in Data) -> agent's IconClass -> step-type fallback\n * - Other steps: step-type icon\n */\n ResolveStepIcon(\n step: MJAIAgentStepEntity,\n actions?: ActionPickerItem[],\n agents?: AgentPickerItem[]\n ): { Icon: string; LogoURL?: string | null } {\n const fallbackIcon = this.getIconForType(step.StepType);\n\n if (step.StepType === 'Action' && step.ActionID && actions) {\n const action = actions.find(a => UUIDsEqual(a.ID, step.ActionID));\n return { Icon: action?.IconClass || fallbackIcon };\n }\n\n if (step.StepType === 'Sub-Agent' && step.SubAgentID && agents) {\n const agent = agents.find(a => UUIDsEqual(a.ID, step.SubAgentID));\n if (agent?.LogoURL) {\n return { Icon: agent.IconClass || fallbackIcon, LogoURL: agent.LogoURL };\n }\n return { Icon: agent?.IconClass || fallbackIcon };\n }\n\n // For loop steps, resolve based on loop body type\n if ((step.StepType === 'ForEach' || step.StepType === 'While') && step.LoopBodyType) {\n return this.resolveLoopBodyIcon(step, actions, agents);\n }\n\n return { Icon: fallbackIcon };\n }\n\n private resolveLoopBodyIcon(\n step: MJAIAgentStepEntity,\n actions?: ActionPickerItem[],\n agents?: AgentPickerItem[]\n ): { Icon: string; LogoURL?: string | null } {\n const fallbackIcon = this.getIconForType(step.StepType);\n\n if (step.LoopBodyType === 'Action' && step.ActionID && actions) {\n const action = actions.find(a => UUIDsEqual(a.ID, step.ActionID));\n if (action?.IconClass) return { Icon: fallbackIcon }; // Loop keeps its own icon; body icon handled separately\n }\n\n if (step.LoopBodyType === 'Sub-Agent' && step.SubAgentID && agents) {\n const agent = agents.find(a => UUIDsEqual(a.ID, step.SubAgentID));\n if (agent?.LogoURL) return { Icon: fallbackIcon, LogoURL: agent.LogoURL };\n }\n\n return { Icon: fallbackIcon };\n }\n\n // ── Public Conversion Methods ───────────────────────────────\n\n /** Convert a single MJ step entity to a FlowNode (public for direct use when adding nodes) */\n StepToNode(\n step: MJAIAgentStepEntity,\n actions?: ActionPickerItem[],\n agents?: AgentPickerItem[]\n ): FlowNode {\n const stepId = step.ID;\n const ports: FlowNodePort[] = [\n {\n ID: `${stepId}-input`,\n Direction: 'input',\n Side: 'top',\n Multiple: true,\n Disabled: step.StartingStep === true\n },\n {\n ID: `${stepId}-output`,\n Direction: 'output',\n Side: 'bottom',\n Multiple: true\n }\n ];\n\n // Show warning status when the step is missing its required configuration,\n // unless the step is explicitly disabled (respect the user's intent).\n const baseStatus = this.MapStepStatus(step.Status);\n const warningMessage = (baseStatus !== 'disabled') ? this.BuildConfigWarningMessage(step) : null;\n const effectiveStatus = warningMessage ? 'warning' : baseStatus;\n\n // Build loop-specific data for ForEach/While nodes\n const data: Record<string, unknown> = { StepEntityID: stepId };\n if (step.StepType === 'ForEach' || step.StepType === 'While') {\n this.populateLoopData(step, data, actions, agents);\n }\n\n // Resolve icon (and optional logo URL) from picker data\n const resolved = this.ResolveStepIcon(step, actions, agents);\n if (resolved.LogoURL) {\n data['LogoURL'] = resolved.LogoURL;\n }\n\n return {\n ID: stepId,\n Type: step.StepType,\n Label: step.Name,\n Subtitle: this.BuildStepSubtitle(step),\n Icon: resolved.Icon,\n Status: effectiveStatus,\n StatusMessage: warningMessage ?? undefined,\n IsStartNode: step.StartingStep === true,\n Position: {\n X: step.PositionX ?? 0,\n Y: step.PositionY ?? 0\n },\n Size: {\n Width: step.Width ?? 220,\n Height: step.Height ?? 100\n },\n Ports: ports,\n Data: data\n };\n }\n\n private pathToConnection(path: MJAIAgentStepPathEntity, allPaths: MJAIAgentStepPathEntity[]): FlowConnection {\n const hasCondition = path.Condition != null && path.Condition.trim().length > 0;\n const isAlwaysPath = !hasCondition;\n\n // Analyze sibling paths from the same origin step\n const siblingPaths = allPaths.filter(p => UUIDsEqual(p.OriginStepID, path.OriginStepID));\n const isOnlyPath = siblingPaths.length === 1;\n const unconditionalSiblings = siblingPaths.filter(\n p => !p.Condition || p.Condition.trim().length === 0\n );\n // Flag as ambiguous when 2+ unconditional paths exist from the same source.\n // Multiple unconditional paths are always ambiguous because only the\n // highest-priority one will execute — regardless of whether they have descriptions.\n const hasAmbiguousAlways = isAlwaysPath && unconditionalSiblings.length > 1;\n\n // Build label, icon, and visual style\n const visual = this.buildPathVisuals(path, hasCondition, isOnlyPath, hasAmbiguousAlways);\n\n return {\n ID: path.ID,\n SourceNodeID: path.OriginStepID,\n SourcePortID: `${path.OriginStepID}-output`,\n TargetNodeID: path.DestinationStepID,\n TargetPortID: `${path.DestinationStepID}-input`,\n Label: visual.label,\n LabelIcon: visual.labelIcon,\n LabelIconColor: visual.labelIconColor,\n LabelDetail: visual.labelDetail,\n Condition: path.Condition ?? undefined,\n Priority: path.Priority,\n Style: visual.style,\n Color: visual.color,\n Data: {\n PathEntityID: path.ID,\n IsAlwaysPath: !hasCondition,\n HasAmbiguousAlways: hasAmbiguousAlways\n }\n };\n }\n\n private buildPathVisuals(\n path: MJAIAgentStepPathEntity,\n hasCondition: boolean,\n isOnlyPath: boolean,\n hasAmbiguousAlways: boolean\n ): { label?: string; labelIcon?: string; labelIconColor?: string; labelDetail?: string; color: string; style: FlowConnectionStyle } {\n // Conditional path — amber dashed with condition text\n if (hasCondition) {\n return {\n label: path.Description || path.Condition!,\n color: '#f59e0b',\n style: 'dashed'\n };\n }\n\n // Sole unconditional (only exit path) — neutral dark slate with Default indicator\n if (isOnlyPath) {\n return {\n label: path.Description || 'Default',\n labelIcon: 'fa-circle-check',\n labelIconColor: '#16a34a',\n color: '#64748b',\n style: 'solid'\n };\n }\n\n // Ambiguous: multiple unconditional paths from the same step\n if (hasAmbiguousAlways) {\n return {\n label: path.Description || 'Default',\n labelIcon: 'fa-triangle-exclamation',\n labelIconColor: '#ef4444',\n labelDetail: 'Duplicate default paths: only the highest-priority one will execute',\n color: '#ef4444',\n style: 'solid'\n };\n }\n\n // Valid default path (unconditional among conditional siblings) — forest green with checkmark\n return {\n label: path.Description || 'Default',\n labelIcon: 'fa-circle-check',\n labelIconColor: '#16a34a',\n color: '#16a34a',\n style: 'solid'\n };\n }\n\n /** Populate loop-specific display data on the node's Data payload */\n private populateLoopData(\n step: MJAIAgentStepEntity,\n data: Record<string, unknown>,\n actions?: ActionPickerItem[],\n agents?: AgentPickerItem[]\n ): void {\n const bodyType = step.LoopBodyType;\n data['LoopBodyType'] = bodyType ?? null;\n data['LoopBodyName'] = bodyType ? this.resolveLoopBodyName(step) : null;\n data['LoopBodyIcon'] = bodyType ? this.resolveLoopBodySpecificIcon(step, actions, agents) : null;\n data['LoopBodyColor'] = bodyType ? this.getBodyTypeColor(bodyType) : null;\n data['LoopIterationSummary'] = this.BuildLoopIterationSummary(step);\n\n // Store logo URL for loop body sub-agents\n if (bodyType === 'Sub-Agent' && step.SubAgentID && agents) {\n const agent = agents.find(a => UUIDsEqual(a.ID, step.SubAgentID));\n if (agent?.LogoURL) {\n data['LoopBodyLogoURL'] = agent.LogoURL;\n }\n }\n\n const config = this.parseLoopConfig(step);\n if (config) {\n data['MaxIterations'] = config['maxIterations'] ?? null;\n data['LoopItemVariable'] = config['itemVariable'] ?? null;\n }\n }\n\n /** Resolve the best icon for a loop body, checking picker data first */\n private resolveLoopBodySpecificIcon(\n step: MJAIAgentStepEntity,\n actions?: ActionPickerItem[],\n agents?: AgentPickerItem[]\n ): string {\n const bodyType = step.LoopBodyType;\n const fallback = this.getBodyTypeIcon(bodyType ?? '');\n\n if (bodyType === 'Action' && step.ActionID && actions) {\n const action = actions.find(a => UUIDsEqual(a.ID, step.ActionID));\n return action?.IconClass || fallback;\n }\n if (bodyType === 'Sub-Agent' && step.SubAgentID && agents) {\n const agent = agents.find(a => UUIDsEqual(a.ID, step.SubAgentID));\n return agent?.IconClass || fallback;\n }\n return fallback;\n }\n\n /** Get icon for a loop body type */\n private getBodyTypeIcon(bodyType: string): string {\n switch (bodyType) {\n case 'Action': return 'fa-bolt';\n case 'Prompt': return 'fa-comment-dots';\n case 'Sub-Agent': return 'fa-robot';\n default: return 'fa-circle-nodes';\n }\n }\n\n /** Get color for a loop body type */\n private getBodyTypeColor(bodyType: string): string {\n switch (bodyType) {\n case 'Action': return '#3B82F6';\n case 'Prompt': return '#8B5CF6';\n case 'Sub-Agent': return '#10B981';\n default: return '#6B7280';\n }\n }\n\n private getIconForType(stepType: string): string {\n const config = AGENT_STEP_TYPE_CONFIGS.find(c => c.Type === stepType);\n return config?.Icon ?? 'fa-circle-nodes';\n }\n\n private buildLoopSubtitle(step: MJAIAgentStepEntity, prefix: string): string {\n const bodyType = step.LoopBodyType;\n if (!bodyType) return `${prefix} (no body type)`;\n const bodyName = this.resolveLoopBodyName(step);\n return bodyName ? `${prefix} → ${bodyName}` : `${prefix} → ${bodyType}`;\n }\n\n /** Resolve the display name for the loop body operation */\n private resolveLoopBodyName(step: MJAIAgentStepEntity): string | null {\n switch (step.LoopBodyType) {\n case 'Action': return step.Action ?? null;\n case 'Prompt': return step.Prompt ?? null;\n case 'Sub-Agent': return step.SubAgent ?? null;\n default: return null;\n }\n }\n\n /** Parse the Configuration JSON, returning null on failure */\n private parseLoopConfig(step: MJAIAgentStepEntity): Record<string, unknown> | null {\n if (!step.Configuration) return null;\n try {\n return JSON.parse(step.Configuration) as Record<string, unknown>;\n } catch {\n return null;\n }\n }\n\n /** Build a short iteration summary for display on loop nodes */\n BuildLoopIterationSummary(step: MJAIAgentStepEntity): string {\n const config = this.parseLoopConfig(step);\n if (step.StepType === 'ForEach') {\n const collection = config?.['collectionPath'] as string | undefined;\n return collection ? `over ${collection}` : 'over collection';\n }\n if (step.StepType === 'While') {\n const condition = config?.['condition'] as string | undefined;\n return condition ? `while ${this.truncateCondition(condition)}` : 'while condition';\n }\n return '';\n }\n\n private truncateCondition(condition: string): string {\n const maxLen = 30;\n if (condition.length <= maxLen) return condition;\n return condition.substring(0, maxLen) + '...';\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"agent-properties-panel.component.d.ts","sourceRoot":"","sources":["../../../src/lib/agent-editor/agent-properties-panel.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-properties-panel.component.d.ts","sourceRoot":"","sources":["../../../src/lib/agent-editor/agent-properties-panel.component.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { Component, Input, Output, EventEmitter, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';
2
+ import { UUIDsEqual } from '@memberjunction/global';
2
3
  import * as i0 from "@angular/core";
3
4
  import * as i1 from "@angular/common";
4
5
  import * as i2 from "@angular/forms";
@@ -908,14 +909,14 @@ export class AgentPropertiesPanelComponent {
908
909
  get originStepName() {
909
910
  if (!this.PathEntity)
910
911
  return '';
911
- const step = this.AllSteps.find(s => s.ID === this.PathEntity.OriginStepID);
912
+ const step = this.AllSteps.find(s => UUIDsEqual(s.ID, this.PathEntity.OriginStepID));
912
913
  return step?.Name ?? 'Unknown Step';
913
914
  }
914
915
  /** Path: destination step name */
915
916
  get destinationStepName() {
916
917
  if (!this.PathEntity)
917
918
  return '';
918
- const step = this.AllSteps.find(s => s.ID === this.PathEntity.DestinationStepID);
919
+ const step = this.AllSteps.find(s => UUIDsEqual(s.ID, this.PathEntity.DestinationStepID));
919
920
  return step?.Name ?? 'Unknown Step';
920
921
  }
921
922
  /** Path: whether a condition is set */
@@ -930,19 +931,19 @@ export class AgentPropertiesPanelComponent {
930
931
  get selectedActionName() {
931
932
  if (!this.Step?.ActionID)
932
933
  return 'None selected';
933
- return this.Actions.find(a => a.ID === this.Step.ActionID)?.Name ?? 'Unknown';
934
+ return this.Actions.find(a => UUIDsEqual(a.ID, this.Step.ActionID))?.Name ?? 'Unknown';
934
935
  }
935
936
  /** Resolved prompt name for display */
936
937
  get selectedPromptName() {
937
938
  if (!this.Step?.PromptID)
938
939
  return 'None selected';
939
- return this.Prompts.find(p => p.ID === this.Step.PromptID)?.Name ?? 'Unknown';
940
+ return this.Prompts.find(p => UUIDsEqual(p.ID, this.Step.PromptID))?.Name ?? 'Unknown';
940
941
  }
941
942
  /** Resolved agent name for display */
942
943
  get selectedAgentName() {
943
944
  if (!this.Step?.SubAgentID)
944
945
  return 'None selected';
945
- return this.Agents.find(a => a.ID === this.Step.SubAgentID)?.Name ?? 'Unknown';
946
+ return this.Agents.find(a => UUIDsEqual(a.ID, this.Step.SubAgentID))?.Name ?? 'Unknown';
946
947
  }
947
948
  // ── Section Collapse ──────────────────────────────────────
948
949
  ToggleSection(sectionId) {
@@ -1135,5 +1136,5 @@ export class AgentPropertiesPanelComponent {
1135
1136
  }], CloseRequested: [{
1136
1137
  type: Output
1137
1138
  }] }); })();
1138
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AgentPropertiesPanelComponent, { className: "AgentPropertiesPanelComponent", filePath: "src/lib/agent-editor/agent-properties-panel.component.ts", lineNumber: 35 }); })();
1139
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AgentPropertiesPanelComponent, { className: "AgentPropertiesPanelComponent", filePath: "src/lib/agent-editor/agent-properties-panel.component.ts", lineNumber: 36 }); })();
1139
1140
  //# sourceMappingURL=agent-properties-panel.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-properties-panel.component.js","sourceRoot":"","sources":["../../../src/lib/agent-editor/agent-properties-panel.component.ts","../../../src/lib/agent-editor/agent-properties-panel.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';\nimport { MJAIAgentStepEntity, MJAIAgentStepPathEntity } from '@memberjunction/core-entities';\nimport { FlowConnection } from '../interfaces/flow-types';\n\n/** Step type accent color mapping */\nconst STEP_TYPE_COLORS: Record<string, string> = {\n Action: '#3b82f6',\n Prompt: '#8b5cf6',\n 'Sub-Agent': '#10b981',\n ForEach: '#f59e0b',\n While: '#f59e0b'\n};\n\n/** Step type icon mapping */\nconst STEP_TYPE_ICONS: Record<string, string> = {\n Action: 'fa-bolt',\n Prompt: 'fa-comment-dots',\n 'Sub-Agent': 'fa-robot',\n ForEach: 'fa-arrows-spin',\n While: 'fa-rotate'\n};\n\n/**\n * Properties panel for editing AI Agent step and path configurations.\n * Shows context-aware sections based on the selected step type.\n */\n@Component({\n standalone: false,\n selector: 'mj-agent-properties-panel',\n templateUrl: './agent-properties-panel.component.html',\n styleUrls: ['./agent-properties-panel.component.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class AgentPropertiesPanelComponent {\n // ── Inputs ──────────────────────────────────────────────────\n @Input() Step: MJAIAgentStepEntity | null = null;\n @Input() SelectedConnection: FlowConnection | null = null;\n @Input() PathEntity: MJAIAgentStepPathEntity | null = null;\n @Input() ReadOnly = false;\n @Input() Actions: Array<{ ID: string; Name: string; IconClass?: string | null }> = [];\n @Input() Prompts: Array<{ ID: string; Name: string }> = [];\n @Input() Agents: Array<{ ID: string; Name: string; IconClass?: string | null; LogoURL?: string | null }> = [];\n @Input() AllSteps: MJAIAgentStepEntity[] = [];\n\n // ── Outputs ─────────────────────────────────────────────────\n @Output() StepChanged = new EventEmitter<MJAIAgentStepEntity>();\n @Output() PathChanged = new EventEmitter<MJAIAgentStepPathEntity>();\n @Output() DeleteStepRequested = new EventEmitter<MJAIAgentStepEntity>();\n @Output() DeletePathRequested = new EventEmitter<MJAIAgentStepPathEntity>();\n @Output() CloseRequested = new EventEmitter<void>();\n\n // ── Collapsible section state ─────────────────────────────\n protected collapsedSections: Record<string, boolean> = {};\n\n // ── Computed Properties ─────────────────────────────────────\n\n get isStepSelected(): boolean {\n return this.Step != null;\n }\n\n get isConnectionSelected(): boolean {\n return this.SelectedConnection != null && this.PathEntity != null;\n }\n\n get showActionPicker(): boolean {\n return this.Step?.StepType === 'Action' ||\n ((this.Step?.StepType === 'ForEach' || this.Step?.StepType === 'While') && this.Step?.LoopBodyType === 'Action');\n }\n\n get showPromptPicker(): boolean {\n return this.Step?.StepType === 'Prompt' ||\n ((this.Step?.StepType === 'ForEach' || this.Step?.StepType === 'While') && this.Step?.LoopBodyType === 'Prompt');\n }\n\n get showAgentPicker(): boolean {\n return this.Step?.StepType === 'Sub-Agent' ||\n ((this.Step?.StepType === 'ForEach' || this.Step?.StepType === 'While') && this.Step?.LoopBodyType === 'Sub-Agent');\n }\n\n get showLoopConfig(): boolean {\n return this.Step?.StepType === 'ForEach' || this.Step?.StepType === 'While';\n }\n\n get stepTypeLabel(): string {\n switch (this.Step?.StepType) {\n case 'Action': return 'Action';\n case 'Prompt': return 'Prompt';\n case 'Sub-Agent': return 'Sub-Agent';\n case 'ForEach': return 'For Each Loop';\n case 'While': return 'While Loop';\n default: return 'Step';\n }\n }\n\n get stepTypeColor(): string {\n return STEP_TYPE_COLORS[this.Step?.StepType ?? ''] ?? '#64748b';\n }\n\n get stepTypeIcon(): string {\n return STEP_TYPE_ICONS[this.Step?.StepType ?? ''] ?? 'fa-circle-nodes';\n }\n\n get statusColor(): string {\n switch (this.Step?.Status) {\n case 'Active': return '#10b981';\n case 'Disabled': return '#94a3b8';\n case 'Pending': return '#f59e0b';\n default: return '#94a3b8';\n }\n }\n\n /** Path: origin step name */\n get originStepName(): string {\n if (!this.PathEntity) return '';\n const step = this.AllSteps.find(s => s.ID === this.PathEntity!.OriginStepID);\n return step?.Name ?? 'Unknown Step';\n }\n\n /** Path: destination step name */\n get destinationStepName(): string {\n if (!this.PathEntity) return '';\n const step = this.AllSteps.find(s => s.ID === this.PathEntity!.DestinationStepID);\n return step?.Name ?? 'Unknown Step';\n }\n\n /** Path: whether a condition is set */\n get isConditionalPath(): boolean {\n return this.PathEntity?.Condition != null && this.PathEntity.Condition.trim().length > 0;\n }\n\n /** Path accent color */\n get pathAccentColor(): string {\n return this.isConditionalPath ? '#f59e0b' : '#94a3b8';\n }\n\n /** Resolved action name for display */\n get selectedActionName(): string {\n if (!this.Step?.ActionID) return 'None selected';\n return this.Actions.find(a => a.ID === this.Step!.ActionID)?.Name ?? 'Unknown';\n }\n\n /** Resolved prompt name for display */\n get selectedPromptName(): string {\n if (!this.Step?.PromptID) return 'None selected';\n return this.Prompts.find(p => p.ID === this.Step!.PromptID)?.Name ?? 'Unknown';\n }\n\n /** Resolved agent name for display */\n get selectedAgentName(): string {\n if (!this.Step?.SubAgentID) return 'None selected';\n return this.Agents.find(a => a.ID === this.Step!.SubAgentID)?.Name ?? 'Unknown';\n }\n\n // ── Section Collapse ──────────────────────────────────────\n\n ToggleSection(sectionId: string): void {\n this.collapsedSections[sectionId] = !this.collapsedSections[sectionId];\n }\n\n IsSectionCollapsed(sectionId: string): boolean {\n return this.collapsedSections[sectionId] === true;\n }\n\n // ── Step Event Handlers ─────────────────────────────────────\n\n OnNameChange(value: string): void {\n if (!this.Step || this.ReadOnly) return;\n this.Step.Name = value;\n this.StepChanged.emit(this.Step);\n }\n\n OnDescriptionChange(value: string): void {\n if (!this.Step || this.ReadOnly) return;\n this.Step.Description = value;\n this.StepChanged.emit(this.Step);\n }\n\n OnStatusChange(value: string): void {\n if (!this.Step || this.ReadOnly) return;\n this.Step.Status = value as 'Active' | 'Disabled' | 'Pending';\n this.StepChanged.emit(this.Step);\n }\n\n OnStartingStepChange(checked: boolean): void {\n if (!this.Step || this.ReadOnly) return;\n this.Step.StartingStep = checked;\n this.StepChanged.emit(this.Step);\n }\n\n OnActionChange(actionId: string): void {\n if (!this.Step || this.ReadOnly) return;\n this.Step.ActionID = actionId || null;\n this.StepChanged.emit(this.Step);\n }\n\n OnPromptChange(promptId: string): void {\n if (!this.Step || this.ReadOnly) return;\n this.Step.PromptID = promptId || null;\n this.StepChanged.emit(this.Step);\n }\n\n OnSubAgentChange(agentId: string): void {\n if (!this.Step || this.ReadOnly) return;\n this.Step.SubAgentID = agentId || null;\n this.StepChanged.emit(this.Step);\n }\n\n OnLoopBodyTypeChange(value: string): void {\n if (!this.Step || this.ReadOnly) return;\n this.Step.LoopBodyType = value as 'Action' | 'Prompt' | 'Sub-Agent';\n this.StepChanged.emit(this.Step);\n }\n\n OnInputMappingChange(value: string): void {\n if (!this.Step || this.ReadOnly) return;\n this.Step.ActionInputMapping = value || null;\n this.StepChanged.emit(this.Step);\n }\n\n OnOutputMappingChange(value: string): void {\n if (!this.Step || this.ReadOnly) return;\n this.Step.ActionOutputMapping = value || null;\n this.StepChanged.emit(this.Step);\n }\n\n OnErrorBehaviorChange(value: string): void {\n if (!this.Step || this.ReadOnly) return;\n this.Step.OnErrorBehavior = value as 'fail' | 'continue' | 'retry';\n this.StepChanged.emit(this.Step);\n }\n\n OnRetryCountChange(value: number): void {\n if (!this.Step || this.ReadOnly) return;\n this.Step.RetryCount = value;\n this.StepChanged.emit(this.Step);\n }\n\n OnTimeoutChange(value: number): void {\n if (!this.Step || this.ReadOnly) return;\n this.Step.TimeoutSeconds = value;\n this.StepChanged.emit(this.Step);\n }\n\n OnConfigurationChange(value: string): void {\n if (!this.Step || this.ReadOnly) return;\n this.Step.Configuration = value || null;\n this.StepChanged.emit(this.Step);\n }\n\n // ── Path Event Handlers ─────────────────────────────────────\n\n OnPathDescriptionChange(value: string): void {\n if (!this.PathEntity || this.ReadOnly) return;\n this.PathEntity.Description = value;\n this.PathChanged.emit(this.PathEntity);\n }\n\n OnPathConditionChange(value: string): void {\n if (!this.PathEntity || this.ReadOnly) return;\n this.PathEntity.Condition = value || null;\n this.PathChanged.emit(this.PathEntity);\n }\n\n OnPathPriorityChange(value: number): void {\n if (!this.PathEntity || this.ReadOnly) return;\n this.PathEntity.Priority = value;\n this.PathChanged.emit(this.PathEntity);\n }\n\n OnDeleteStep(): void {\n if (this.Step) {\n this.DeleteStepRequested.emit(this.Step);\n }\n }\n\n OnDeletePath(): void {\n if (this.PathEntity) {\n this.DeletePathRequested.emit(this.PathEntity);\n }\n }\n\n // ── Template Helpers ──────────────────────────────────────\n\n /** Safely extract string value from an input/textarea/select change event */\n protected InputValue(event: Event): string {\n return (event.target as HTMLInputElement).value;\n }\n\n /** Safely extract checked state from a checkbox change event */\n protected CheckedValue(event: Event): boolean {\n return (event.target as HTMLInputElement).checked;\n }\n\n /** Safely extract numeric value from a number input event */\n protected NumericValue(event: Event): number {\n return +(event.target as HTMLInputElement).value;\n }\n\n /** Format JSON for display */\n protected FormatJsonDisplay(value: string | null | undefined): string {\n if (!value) return '';\n try {\n return JSON.stringify(JSON.parse(value), null, 2);\n } catch {\n return value;\n }\n }\n}\n","<div class=\"mj-agent-props\">\n\n <!-- Empty State -->\n @if (!isStepSelected && !isConnectionSelected) {\n <div class=\"mj-agent-props-empty\">\n <i class=\"fa-solid fa-mouse-pointer\"></i>\n <p>Select a step or connection to view its properties</p>\n </div>\n }\n\n <!-- ============================================ -->\n <!-- STEP PROPERTIES -->\n <!-- ============================================ -->\n @if (isStepSelected) {\n <!-- Step Header -->\n <div class=\"mj-agent-props-header mj-agent-props-header--step\"\n [style.border-left-color]=\"stepTypeColor\">\n <div class=\"mj-agent-props-header-top\">\n <span class=\"mj-agent-props-header-label\">STEP</span>\n <button class=\"mj-agent-props-close\" (click)=\"CloseRequested.emit()\" title=\"Close\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n <!-- Identity card -->\n <div class=\"mj-agent-props-identity\">\n <div class=\"mj-agent-props-identity-icon\" [style.background]=\"stepTypeColor\">\n <i class=\"fa-solid\" [ngClass]=\"stepTypeIcon\"></i>\n </div>\n <div class=\"mj-agent-props-identity-info\">\n <span class=\"mj-agent-props-identity-name\">{{ Step!.Name }}</span>\n <span class=\"mj-agent-props-identity-meta\">\n <span class=\"mj-agent-props-type-pill\" [style.color]=\"stepTypeColor\"\n [style.background]=\"stepTypeColor + '18'\">{{ stepTypeLabel }}</span>\n <span class=\"mj-agent-props-status-dot\" [style.background]=\"statusColor\"></span>\n <span class=\"mj-agent-props-status-label\">{{ Step!.Status }}</span>\n @if (Step!.StartingStep) {\n <span class=\"mj-agent-props-start-badge\">Start</span>\n }\n </span>\n </div>\n </div>\n </div>\n <div class=\"mj-agent-props-content\">\n <!-- ── General Section ─────────────────── -->\n <div class=\"mj-agent-props-section\">\n <button class=\"mj-agent-props-section-header\" (click)=\"ToggleSection('general')\">\n <span class=\"mj-agent-props-section-title\">General</span>\n <i class=\"fa-solid\" [ngClass]=\"IsSectionCollapsed('general') ? 'fa-chevron-right' : 'fa-chevron-down'\"></i>\n </button>\n @if (!IsSectionCollapsed('general')) {\n <div class=\"mj-agent-props-section-body\">\n <div class=\"mj-agent-props-field\">\n <label>Name</label>\n @if (!ReadOnly) {\n <input type=\"text\" [value]=\"Step!.Name\"\n (input)=\"OnNameChange(InputValue($event))\"\n placeholder=\"Step name...\" class=\"mj-agent-props-input\">\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">{{ Step!.Name }}</div>\n }\n </div>\n <div class=\"mj-agent-props-field\">\n <label>Description</label>\n @if (!ReadOnly) {\n <textarea [value]=\"Step!.Description || ''\"\n (input)=\"OnDescriptionChange(InputValue($event))\"\n placeholder=\"Optional description...\" rows=\"2\"\n class=\"mj-agent-props-input mj-agent-props-textarea\"></textarea>\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">\n {{ Step!.Description || '—' }}\n </div>\n }\n </div>\n <div class=\"mj-agent-props-field\">\n <label>Status</label>\n @if (!ReadOnly) {\n <select [value]=\"Step!.Status\"\n (change)=\"OnStatusChange(InputValue($event))\"\n class=\"mj-agent-props-input\">\n <option value=\"Active\">Active</option>\n <option value=\"Disabled\">Disabled</option>\n <option value=\"Pending\">Pending</option>\n </select>\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">\n <span class=\"mj-agent-props-status-dot\" [style.background]=\"statusColor\"></span>\n {{ Step!.Status }}\n </div>\n }\n </div>\n @if (!ReadOnly) {\n <div class=\"mj-agent-props-field mj-agent-props-field--row\">\n <label class=\"mj-agent-props-checkbox-label\">\n <input type=\"checkbox\" [checked]=\"Step!.StartingStep\"\n (change)=\"OnStartingStepChange(CheckedValue($event))\">\n Starting Step\n </label>\n </div>\n }\n @if (ReadOnly && Step!.StartingStep) {\n <div class=\"mj-agent-props-field\">\n <label>Starting Step</label>\n <div class=\"mj-agent-props-readonly-value\">\n <span class=\"mj-agent-props-start-badge\">Yes — this is the entry point</span>\n </div>\n </div>\n }\n </div>\n }\n </div>\n <!-- ── Configuration Section ───────────── -->\n <div class=\"mj-agent-props-section\">\n <button class=\"mj-agent-props-section-header\" (click)=\"ToggleSection('config')\">\n <span class=\"mj-agent-props-section-title\">Configuration</span>\n <i class=\"fa-solid\" [ngClass]=\"IsSectionCollapsed('config') ? 'fa-chevron-right' : 'fa-chevron-down'\"></i>\n </button>\n @if (!IsSectionCollapsed('config')) {\n <div class=\"mj-agent-props-section-body\">\n <!-- Loop Body Type (ForEach / While) -->\n @if (showLoopConfig) {\n <div class=\"mj-agent-props-field\">\n <label>Loop Body Type</label>\n @if (!ReadOnly) {\n <select [value]=\"Step!.LoopBodyType || 'Action'\"\n (change)=\"OnLoopBodyTypeChange(InputValue($event))\"\n class=\"mj-agent-props-input\">\n <option value=\"Action\">Action</option>\n <option value=\"Prompt\">Prompt</option>\n <option value=\"Sub-Agent\">Sub-Agent</option>\n </select>\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">\n {{ Step!.LoopBodyType || 'Action' }}\n </div>\n }\n </div>\n }\n <!-- Action Picker -->\n @if (showActionPicker) {\n <div class=\"mj-agent-props-field\">\n <label>Action</label>\n @if (!ReadOnly) {\n <select [value]=\"Step!.ActionID || ''\"\n (change)=\"OnActionChange(InputValue($event))\"\n class=\"mj-agent-props-input\">\n <option value=\"\">-- Select Action --</option>\n @for (action of Actions; track action) {\n <option [value]=\"action.ID\">{{ action.Name }}</option>\n }\n </select>\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">{{ selectedActionName }}</div>\n }\n </div>\n }\n <!-- Prompt Picker -->\n @if (showPromptPicker) {\n <div class=\"mj-agent-props-field\">\n <label>Prompt</label>\n @if (!ReadOnly) {\n <select [value]=\"Step!.PromptID || ''\"\n (change)=\"OnPromptChange(InputValue($event))\"\n class=\"mj-agent-props-input\">\n <option value=\"\">-- Select Prompt --</option>\n @for (prompt of Prompts; track prompt) {\n <option [value]=\"prompt.ID\">{{ prompt.Name }}</option>\n }\n </select>\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">{{ selectedPromptName }}</div>\n }\n </div>\n }\n <!-- Sub-Agent Picker -->\n @if (showAgentPicker) {\n <div class=\"mj-agent-props-field\">\n <label>Sub-Agent</label>\n @if (!ReadOnly) {\n <select [value]=\"Step!.SubAgentID || ''\"\n (change)=\"OnSubAgentChange(InputValue($event))\"\n class=\"mj-agent-props-input\">\n <option value=\"\">-- Select Agent --</option>\n @for (agent of Agents; track agent) {\n <option [value]=\"agent.ID\">{{ agent.Name }}</option>\n }\n </select>\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">{{ selectedAgentName }}</div>\n }\n </div>\n }\n <!-- Loop Configuration (JSON) -->\n @if (showLoopConfig) {\n <div class=\"mj-agent-props-field\">\n <label>Loop Configuration</label>\n <mj-code-editor\n [value]=\"FormatJsonDisplay(Step!.Configuration)\"\n language=\"json\"\n [readonly]=\"ReadOnly\"\n setup=\"minimal\"\n [lineWrapping]=\"true\"\n (change)=\"OnConfigurationChange($any($event))\">\n </mj-code-editor>\n </div>\n }\n </div>\n }\n </div>\n <!-- ── Data Mapping Section (Action steps) ─── -->\n @if (Step!.StepType === 'Action' || showActionPicker) {\n <div class=\"mj-agent-props-section\">\n <button class=\"mj-agent-props-section-header\" (click)=\"ToggleSection('mapping')\">\n <span class=\"mj-agent-props-section-title\">Data Mapping</span>\n <i class=\"fa-solid\" [ngClass]=\"IsSectionCollapsed('mapping') ? 'fa-chevron-right' : 'fa-chevron-down'\"></i>\n </button>\n @if (!IsSectionCollapsed('mapping')) {\n <div class=\"mj-agent-props-section-body\">\n <div class=\"mj-agent-props-field\">\n <label>Input Mapping</label>\n <mj-code-editor\n [value]=\"FormatJsonDisplay(Step!.ActionInputMapping)\"\n language=\"json\"\n [readonly]=\"ReadOnly\"\n setup=\"minimal\"\n [lineWrapping]=\"true\"\n placeholder=\"Enter JSON input mapping...\"\n (change)=\"OnInputMappingChange($any($event))\">\n </mj-code-editor>\n </div>\n <div class=\"mj-agent-props-field\">\n <label>Output Mapping</label>\n <mj-code-editor\n [value]=\"FormatJsonDisplay(Step!.ActionOutputMapping)\"\n language=\"json\"\n [readonly]=\"ReadOnly\"\n setup=\"minimal\"\n [lineWrapping]=\"true\"\n placeholder=\"Enter JSON output mapping...\"\n (change)=\"OnOutputMappingChange($any($event))\">\n </mj-code-editor>\n </div>\n </div>\n }\n </div>\n }\n <!-- ── Error Handling Section ──────────── -->\n <div class=\"mj-agent-props-section\">\n <button class=\"mj-agent-props-section-header\" (click)=\"ToggleSection('errors')\">\n <span class=\"mj-agent-props-section-title\">Error Handling</span>\n <i class=\"fa-solid\" [ngClass]=\"IsSectionCollapsed('errors') ? 'fa-chevron-right' : 'fa-chevron-down'\"></i>\n </button>\n @if (!IsSectionCollapsed('errors')) {\n <div class=\"mj-agent-props-section-body\">\n <div class=\"mj-agent-props-field\">\n <label>On Error</label>\n @if (!ReadOnly) {\n <select [value]=\"Step!.OnErrorBehavior\"\n (change)=\"OnErrorBehaviorChange(InputValue($event))\"\n class=\"mj-agent-props-input\">\n <option value=\"fail\">Fail (stop flow)</option>\n <option value=\"continue\">Continue (ignore error)</option>\n <option value=\"retry\">Retry</option>\n </select>\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">\n {{ Step!.OnErrorBehavior === 'fail' ? 'Fail (stop flow)' :\n Step!.OnErrorBehavior === 'continue' ? 'Continue (ignore error)' : 'Retry' }}\n </div>\n }\n </div>\n @if (Step!.OnErrorBehavior === 'retry') {\n <div class=\"mj-agent-props-field\">\n <label>Retry Count</label>\n @if (!ReadOnly) {\n <input type=\"number\" [value]=\"Step!.RetryCount\" min=\"0\" max=\"10\"\n (input)=\"OnRetryCountChange(NumericValue($event))\"\n class=\"mj-agent-props-input\">\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">{{ Step!.RetryCount }}</div>\n }\n </div>\n }\n <div class=\"mj-agent-props-field\">\n <label>Timeout (seconds)</label>\n @if (!ReadOnly) {\n <input type=\"number\" [value]=\"Step!.TimeoutSeconds\" min=\"1\"\n (input)=\"OnTimeoutChange(NumericValue($event))\"\n class=\"mj-agent-props-input\">\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">{{ Step!.TimeoutSeconds }}s</div>\n }\n </div>\n </div>\n }\n </div>\n <!-- ── Danger Zone ─────────────────────── -->\n @if (!ReadOnly) {\n <div class=\"mj-agent-props-section mj-agent-props-danger\">\n <button class=\"mj-agent-props-delete-btn\" (click)=\"OnDeleteStep()\">\n <i class=\"fa-solid fa-trash-can\"></i> Delete Step\n </button>\n </div>\n }\n </div>\n }\n\n <!-- ============================================ -->\n <!-- PATH PROPERTIES -->\n <!-- ============================================ -->\n @if (isConnectionSelected) {\n <!-- Path Header -->\n <div class=\"mj-agent-props-header mj-agent-props-header--path\"\n [style.border-left-color]=\"pathAccentColor\">\n <div class=\"mj-agent-props-header-top\">\n <span class=\"mj-agent-props-header-label\">PATH</span>\n <button class=\"mj-agent-props-close\" (click)=\"CloseRequested.emit()\" title=\"Close\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n <!-- Path identity card -->\n <div class=\"mj-agent-props-identity\">\n <div class=\"mj-agent-props-identity-icon mj-agent-props-identity-icon--path\"\n [style.background]=\"pathAccentColor\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n </div>\n <div class=\"mj-agent-props-identity-info\">\n <span class=\"mj-agent-props-path-route\">\n <span class=\"mj-agent-props-path-step-name\">{{ originStepName }}</span>\n <i class=\"fa-solid fa-arrow-right mj-agent-props-path-arrow\"></i>\n <span class=\"mj-agent-props-path-step-name\">{{ destinationStepName }}</span>\n </span>\n <span class=\"mj-agent-props-identity-meta\">\n <span class=\"mj-agent-props-type-pill\"\n [style.color]=\"pathAccentColor\"\n [style.background]=\"pathAccentColor + '18'\">\n {{ isConditionalPath ? 'Conditional' : 'Always' }}\n </span>\n @if (PathEntity!.Priority !== 0) {\n <span class=\"mj-agent-props-priority-badge\">\n Priority: {{ PathEntity!.Priority }}\n </span>\n }\n </span>\n </div>\n </div>\n </div>\n <div class=\"mj-agent-props-content\">\n <!-- ── Overview Section ────────────────── -->\n <div class=\"mj-agent-props-section\">\n <button class=\"mj-agent-props-section-header\" (click)=\"ToggleSection('path-overview')\">\n <span class=\"mj-agent-props-section-title\">Route</span>\n <i class=\"fa-solid\" [ngClass]=\"IsSectionCollapsed('path-overview') ? 'fa-chevron-right' : 'fa-chevron-down'\"></i>\n </button>\n @if (!IsSectionCollapsed('path-overview')) {\n <div class=\"mj-agent-props-section-body\">\n <div class=\"mj-agent-props-field\">\n <label>From</label>\n <div class=\"mj-agent-props-readonly-value mj-agent-props-readonly-value--muted\">\n {{ originStepName }}\n </div>\n </div>\n <div class=\"mj-agent-props-field\">\n <label>To</label>\n <div class=\"mj-agent-props-readonly-value mj-agent-props-readonly-value--muted\">\n {{ destinationStepName }}\n </div>\n </div>\n <span class=\"mj-agent-props-hint\">To change the route, rewire the connection on the canvas.</span>\n </div>\n }\n </div>\n <!-- ── Path Settings Section ───────────── -->\n <div class=\"mj-agent-props-section\">\n <button class=\"mj-agent-props-section-header\" (click)=\"ToggleSection('path-settings')\">\n <span class=\"mj-agent-props-section-title\">Settings</span>\n <i class=\"fa-solid\" [ngClass]=\"IsSectionCollapsed('path-settings') ? 'fa-chevron-right' : 'fa-chevron-down'\"></i>\n </button>\n @if (!IsSectionCollapsed('path-settings')) {\n <div class=\"mj-agent-props-section-body\">\n <div class=\"mj-agent-props-field\">\n <label>Description</label>\n @if (!ReadOnly) {\n <input type=\"text\" [value]=\"PathEntity!.Description || ''\"\n (input)=\"OnPathDescriptionChange(InputValue($event))\"\n placeholder=\"Path label...\" class=\"mj-agent-props-input\">\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">\n {{ PathEntity!.Description || '—' }}\n </div>\n }\n @if (!ReadOnly) {\n <span class=\"mj-agent-props-hint\">Displayed as a label on the connection line</span>\n }\n </div>\n <div class=\"mj-agent-props-field\">\n <label>Condition</label>\n @if (!ReadOnly) {\n <mj-code-editor\n [value]=\"PathEntity!.Condition || ''\"\n language=\"javascript\"\n [readonly]=\"false\"\n setup=\"minimal\"\n [lineWrapping]=\"true\"\n placeholder=\"e.g. payload.status === 'active'\"\n (change)=\"OnPathConditionChange($any($event))\">\n </mj-code-editor>\n }\n @if (ReadOnly && PathEntity!.Condition) {\n <mj-code-editor\n [value]=\"PathEntity!.Condition\"\n language=\"javascript\"\n [readonly]=\"true\"\n setup=\"minimal\"\n [lineWrapping]=\"true\">\n </mj-code-editor>\n }\n @if (ReadOnly && !PathEntity!.Condition) {\n <div class=\"mj-agent-props-readonly-value mj-agent-props-readonly-value--muted\">\n No condition (always taken)\n </div>\n }\n @if (!ReadOnly) {\n <span class=\"mj-agent-props-hint\">\n JavaScript expression evaluated at runtime. Leave empty for unconditional.\n </span>\n }\n </div>\n <div class=\"mj-agent-props-field\">\n <label>Priority</label>\n @if (!ReadOnly) {\n <input type=\"number\" [value]=\"PathEntity!.Priority\" min=\"-100\" max=\"100\"\n (input)=\"OnPathPriorityChange(NumericValue($event))\"\n class=\"mj-agent-props-input\">\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">{{ PathEntity!.Priority }}</div>\n }\n <span class=\"mj-agent-props-hint\">Higher priority paths are evaluated first when multiple paths leave a step.</span>\n </div>\n </div>\n }\n </div>\n <!-- ── Danger Zone ─────────────────────── -->\n @if (!ReadOnly) {\n <div class=\"mj-agent-props-section mj-agent-props-danger\">\n <button class=\"mj-agent-props-delete-btn\" (click)=\"OnDeletePath()\">\n <i class=\"fa-solid fa-trash-can\"></i> Delete Path\n </button>\n </div>\n }\n </div>\n }\n</div>\n"]}
1
+ {"version":3,"file":"agent-properties-panel.component.js","sourceRoot":"","sources":["../../../src/lib/agent-editor/agent-properties-panel.component.ts","../../../src/lib/agent-editor/agent-properties-panel.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAGnH,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;;;;;;ICChD,8BAAkC;IAChC,uBAAyC;IACzC,yBAAG;IAAA,kEAAkD;IACvD,AADuD,iBAAI,EACrD;;;IA6BI,gCAAyC;IAAA,qBAAK;IAAA,iBAAO;;;;IAkBnD,iCAE0D;IADxD,oOAAS,oBAAa,yBAAkB,CAAC,KAAC;IAD5C,iBAE0D;;;IAFvC,wCAAoB;;;IAKvC,+BAA2C;IAAA,YAAgB;IAAA,iBAAM;;;IAAtB,cAAgB;IAAhB,sCAAgB;;;;IAM3D,oCAGqD;IAFnD,uOAAS,2BAAoB,yBAAkB,CAAC,KAAC;IAEE,iBAAW;;;IAHtD,qDAAiC;;;IAM3C,+BAA2C;IACzC,YACF;IAAA,iBAAM;;;IADJ,cACF;IADE,oEACF;;;;IAMA,kCAE+B;IAD7B,wOAAU,sBAAe,yBAAkB,CAAC,KAAC;IAE7C,kCAAuB;IAAA,sBAAM;IAAA,iBAAS;IACtC,kCAAyB;IAAA,wBAAQ;IAAA,iBAAS;IAC1C,kCAAwB;IAAA,uBAAO;IACjC,AADiC,iBAAS,EACjC;;;IAND,0CAAsB;;;IAS9B,+BAA2C;IACzC,2BAAgF;IAChF,YACF;IAAA,iBAAM;;;IAFoC,cAAgC;IAAhC,gDAAgC;IACxE,cACF;IADE,mDACF;;;;IAME,AADF,AADF,+BAA4D,gBACb,gBAEa;IAAtD,uOAAU,4BAAqB,2BAAoB,CAAC,KAAC;IADvD,iBACwD;IACxD,+BACF;IACF,AADE,iBAAQ,EACJ;;;IAJqB,eAA8B;IAA9B,kDAA8B;;;IAQvD,AADF,+BAAkC,YACzB;IAAA,6BAAa;IAAA,iBAAQ;IAE1B,AADF,+BAA2C,eACA;IAAA,kDAA6B;IAE1E,AADE,AADwE,iBAAO,EACzE,EACF;;;IAzDN,AADF,AADF,+BAAyC,cACL,YACzB;IAAA,oBAAI;IAAA,iBAAQ;IACnB,+HAAiB;IAKjB,6HAAgB;IAGlB,iBAAM;IAEJ,AADF,+BAAkC,YACzB;IAAA,2BAAW;IAAA,iBAAQ;IAC1B,kIAAiB;IAMjB,+HAAgB;IAKlB,iBAAM;IAEJ,AADF,gCAAkC,aACzB;IAAA,uBAAM;IAAA,iBAAQ;IACrB,kIAAiB;IASjB,+HAAgB;IAMlB,iBAAM;IACN,+HAAiB;IASjB,+HAAsC;IAQxC,iBAAM;;;IA1DF,eAIC;IAJD,2CAIC;IACD,cAEC;IAFD,0CAEC;IAID,eAKC;IALD,2CAKC;IACD,cAIC;IAJD,2CAIC;IAID,eAQC;IARD,4CAQC;IACD,cAKC;IALD,2CAKC;IAEH,cAQC;IARD,4CAQC;IACD,cAOC;IAPD,uEAOC;;;;IAiBK,kCAE+B;IAD7B,qPAAU,4BAAqB,yBAAkB,CAAC,KAAC;IAEnD,kCAAuB;IAAA,sBAAM;IAAA,iBAAS;IACtC,kCAAuB;IAAA,sBAAM;IAAA,iBAAS;IACtC,kCAA0B;IAAA,yBAAS;IACrC,AADqC,iBAAS,EACrC;;;IAND,4DAAwC;;;IAShD,+BAA2C;IACzC,YACF;IAAA,iBAAM;;;IADJ,cACF;IADE,qEACF;;;IAbF,AADF,+BAAkC,YACzB;IAAA,8BAAc;IAAA,iBAAQ;IAC7B,8IAAiB;IASjB,2IAAgB;IAKlB,iBAAM;;;IAdJ,eAQC;IARD,2CAQC;IACD,cAIC;IAJD,0CAIC;;;IAaK,kCAA4B;IAAA,YAAiB;IAAA,iBAAS;;;IAA9C,oCAAmB;IAAC,cAAiB;IAAjB,oCAAiB;;;;IALjD,kCAE+B;IAD7B,qPAAU,sBAAe,yBAAkB,CAAC,KAAC;IAE7C,kCAAiB;IAAA,mCAAmB;IAAA,iBAAS;IAC7C,+KAEC;IACH,iBAAS;;;IAPD,kDAA8B;IAIpC,eAEC;IAFD,6BAEC;;;IAIH,+BAA2C;IAAA,YAAwB;IAAA,iBAAM;;;IAA9B,cAAwB;IAAxB,+CAAwB;;;IAZrE,AADF,+BAAkC,YACzB;IAAA,sBAAM;IAAA,iBAAQ;IACrB,8IAAiB;IAUjB,2IAAgB;IAGlB,iBAAM;;;IAbJ,eASC;IATD,2CASC;IACD,cAEC;IAFD,0CAEC;;;IAaK,kCAA4B;IAAA,YAAiB;IAAA,iBAAS;;;IAA9C,qCAAmB;IAAC,cAAiB;IAAjB,qCAAiB;;;;IALjD,kCAE+B;IAD7B,sPAAU,sBAAe,yBAAkB,CAAC,KAAC;IAE7C,kCAAiB;IAAA,mCAAmB;IAAA,iBAAS;IAC7C,+KAEC;IACH,iBAAS;;;IAPD,kDAA8B;IAIpC,eAEC;IAFD,6BAEC;;;IAIH,+BAA2C;IAAA,YAAwB;IAAA,iBAAM;;;IAA9B,cAAwB;IAAxB,+CAAwB;;;IAZrE,AADF,+BAAkC,YACzB;IAAA,sBAAM;IAAA,iBAAQ;IACrB,8IAAiB;IAUjB,2IAAgB;IAGlB,iBAAM;;;IAbJ,eASC;IATD,2CASC;IACD,cAEC;IAFD,0CAEC;;;IAaK,kCAA2B;IAAA,YAAgB;IAAA,iBAAS;;;IAA5C,oCAAkB;IAAC,cAAgB;IAAhB,oCAAgB;;;;IAL/C,kCAE+B;IAD7B,sPAAU,wBAAiB,yBAAkB,CAAC,KAAC;IAE/C,kCAAiB;IAAA,kCAAkB;IAAA,iBAAS;IAC5C,+KAEC;IACH,iBAAS;;;IAPD,oDAAgC;IAItC,eAEC;IAFD,4BAEC;;;IAIH,+BAA2C;IAAA,YAAuB;IAAA,iBAAM;;;IAA7B,cAAuB;IAAvB,8CAAuB;;;IAZpE,AADF,+BAAkC,YACzB;IAAA,yBAAS;IAAA,iBAAQ;IACxB,8IAAiB;IAUjB,2IAAgB;IAGlB,iBAAM;;;IAbJ,eASC;IATD,2CASC;IACD,cAEC;IAFD,0CAEC;;;;IAMD,AADF,+BAAkC,YACzB;IAAA,kCAAkB;IAAA,iBAAQ;IACjC,0CAMiD;IAA/C,gPAAU,oCAAmC,KAAC;IAElD,AADE,iBAAiB,EACb;;;IAPF,eAAgD;IAIhD,AAFA,AAFA,2EAAgD,6BAE3B,sBAEA;;;IAvF7B,+BAAyC;IAEvC,6HAAsB;IAoBtB,6HAAwB;IAmBxB,6HAAwB;IAmBxB,6HAAuB;IAmBvB,6HAAsB;IAaxB,iBAAM;;;IA1FJ,cAkBC;IAlBD,gDAkBC;IAED,cAiBC;IAjBD,kDAiBC;IAED,cAiBC;IAjBD,kDAiBC;IAED,cAiBC;IAjBD,iDAiBC;IAED,cAYC;IAZD,gDAYC;;;;IAcG,AADF,AADF,+BAAyC,cACL,YACzB;IAAA,6BAAa;IAAA,iBAAQ;IAC5B,0CAOgD;IAA9C,gPAAU,mCAAkC,KAAC;IAEjD,AADE,iBAAiB,EACb;IAEJ,AADF,+BAAkC,YACzB;IAAA,8BAAc;IAAA,iBAAQ;IAC7B,0CAOiD;IAA/C,gPAAU,oCAAmC,KAAC;IAGpD,AADE,AADE,iBAAiB,EACb,EACF;;;IArBA,eAAqD;IAIrD,AAFA,AAFA,gFAAqD,6BAEhC,sBAEA;IAQrB,eAAsD;IAItD,AAFA,AAFA,iFAAsD,6BAEjC,sBAEA;;;;IAzB7B,AADF,+BAAoC,iBAC+C;IAAnC,kNAAS,qBAAc,SAAS,CAAC,KAAC;IAC9E,gCAA2C;IAAA,4BAAY;IAAA,iBAAO;IAC9D,wBAA2G;IAC7G,iBAAS;IACT,6HAAsC;IA4BxC,iBAAM;;;IA9BkB,eAAkF;IAAlF,uGAAkF;IAExG,cA2BC;IA3BD,gEA2BC;;;;IAcK,kCAE+B;IAD7B,wOAAU,6BAAsB,yBAAkB,CAAC,KAAC;IAEpD,kCAAqB;IAAA,gCAAgB;IAAA,iBAAS;IAC9C,kCAAyB;IAAA,uCAAuB;IAAA,iBAAS;IACzD,kCAAsB;IAAA,qBAAK;IAC7B,AAD6B,iBAAS,EAC7B;;;IAND,mDAA+B;;;IASvC,+BAA2C;IACzC,YAEF;IAAA,iBAAM;;;IAFJ,cAEF;IAFE,+KAEF;;;;IAOE,iCAE+B;IAD7B,mPAAS,0BAAmB,2BAAoB,CAAC,KAAC;IADpD,iBAE+B;;;IAFV,8CAA0B;;;IAK/C,+BAA2C;IAAA,YAAsB;IAAA,iBAAM;;;IAA5B,cAAsB;IAAtB,4CAAsB;;;IAPnE,AADF,+BAAkC,YACzB;IAAA,2BAAW;IAAA,iBAAQ;IAC1B,6IAAiB;IAKjB,2IAAgB;IAGlB,iBAAM;;;IARJ,eAIC;IAJD,2CAIC;IACD,cAEC;IAFD,0CAEC;;;;IAMD,iCAE+B;IAD7B,sOAAS,uBAAgB,2BAAoB,CAAC,KAAC;IADjD,iBAE+B;;;IAFV,kDAA8B;;;IAKnD,+BAA2C;IAAA,YAA2B;IAAA,iBAAM;;;IAAjC,cAA2B;IAA3B,0DAA2B;;;IAtCxE,AADF,AADF,+BAAyC,cACL,YACzB;IAAA,wBAAQ;IAAA,iBAAQ;IACvB,gIAAiB;IASjB,6HAAgB;IAMlB,iBAAM;IACN,6HAAyC;IAcvC,AADF,+BAAkC,YACzB;IAAA,iCAAiB;IAAA,iBAAQ;IAChC,iIAAiB;IAKjB,+HAAgB;IAIpB,AADE,iBAAM,EACF;;;IAxCF,eAQC;IARD,2CAQC;IACD,cAKC;IALD,0CAKC;IAEH,cAYC;IAZD,kEAYC;IAGC,eAIC;IAJD,4CAIC;IACD,cAEC;IAFD,2CAEC;;;;IAQL,AADF,+BAA0D,iBACW;IAAzB,kNAAS,qBAAc,KAAC;IAChE,wBAAqC;IAAC,6BACxC;IACF,AADE,iBAAS,EACL;;;;IAtSN,AADF,AAFF,8BAC4C,aACH,cACK;IAAA,oBAAI;IAAA,iBAAO;IACrD,iCAAmF;IAA9C,iMAAS,4BAAqB,KAAC;IAClE,uBAAiC;IAErC,AADE,iBAAS,EACL;IAGJ,AADF,8BAAqC,aAC0C;IAC3E,wBAAiD;IACnD,iBAAM;IAEJ,AADF,+BAA0C,gBACG;IAAA,aAAgB;IAAA,iBAAO;IAEhE,AADF,iCAA2C,gBAEC;IAAA,aAAmB;IAAA,iBAAO;IACpE,4BAAgF;IAChF,iCAA0C;IAAA,aAAkB;IAAA,iBAAO;IACnE,iHAA0B;IAMlC,AADE,AADE,AADE,iBAAO,EACH,EACF,EACF;IAIF,AADF,AAFF,gCAAoC,eAEE,kBAC+C;IAAnC,kMAAS,qBAAc,SAAS,CAAC,KAAC;IAC9E,iCAA2C;IAAA,wBAAO;IAAA,iBAAO;IACzD,yBAA2G;IAC7G,iBAAS;IACT,iHAAsC;IAgExC,iBAAM;IAGJ,AADF,gCAAoC,kBAC8C;IAAlC,kMAAS,qBAAc,QAAQ,CAAC,KAAC;IAC7E,iCAA2C;IAAA,8BAAa;IAAA,iBAAO;IAC/D,yBAA0G;IAC5G,iBAAS;IACT,gHAAqC;IA+FvC,iBAAM;IAEN,gHAAuD;IAsCrD,AADF,gCAAoC,kBAC8C;IAAlC,kMAAS,qBAAc,QAAQ,CAAC,KAAC;IAC7E,iCAA2C;IAAA,+BAAc;IAAA,iBAAO;IAChE,yBAA0G;IAC5G,iBAAS;IACT,iHAAqC;IA8CvC,iBAAM;IAEN,gHAAiB;IAOnB,iBAAM;;;IA1SJ,yDAAyC;IASG,eAAkC;IAAlC,kDAAkC;IACtD,cAAwB;IAAxB,6CAAwB;IAGD,eAAgB;IAAhB,sCAAgB;IAElB,eAA6B;IACpE,AADuC,6CAA6B,2CAC3B;IAAC,cAAmB;IAAnB,0CAAmB;IACrB,cAAgC;IAAhC,gDAAgC;IAC9B,eAAkB;IAAlB,wCAAkB;IAC5D,cAEC;IAFD,oDAEC;IAUiB,eAAkF;IAAlF,uGAAkF;IAExG,cA+DC;IA/DD,iEA+DC;IAMqB,eAAiF;IAAjF,sGAAiF;IAEvG,cA8FC;IA9FD,gEA8FC;IAGH,cAmCC;IAnCD,wFAmCC;IAKuB,eAAiF;IAAjF,sGAAiF;IAEvG,cA6CC;IA7CD,gEA6CC;IAGH,cAMC;IAND,4CAMC;;;IAoCO,gCAA4C;IAC1C,YACF;IAAA,iBAAO;;;IADL,cACF;IADE,qEACF;;;IAgBA,AADF,AADF,+BAAyC,cACL,YACzB;IAAA,oBAAI;IAAA,iBAAQ;IACnB,+BAAgF;IAC9E,YACF;IACF,AADE,iBAAM,EACF;IAEJ,AADF,+BAAkC,YACzB;IAAA,kBAAE;IAAA,iBAAQ;IACjB,+BAAgF;IAC9E,aACF;IACF,AADE,iBAAM,EACF;IACN,iCAAkC;IAAA,0EAAyD;IAC7F,AAD6F,iBAAO,EAC9F;;;IAVA,eACF;IADE,sDACF;IAKE,eACF;IADE,2DACF;;;;IAiBE,iCAE2D;IADzD,qOAAS,+BAAwB,yBAAkB,CAAC,KAAC;IADvD,iBAE2D;;;IAFxC,2DAAuC;;;IAK1D,+BAA2C;IACzC,YACF;IAAA,iBAAM;;;IADJ,cACF;IADE,0EACF;;;IAGA,gCAAkC;IAAA,2DAA2C;IAAA,iBAAO;;;;IAMpF,0CAOiD;IAA/C,iPAAU,oCAAmC,KAAC;IAChD,iBAAiB;;;IAHf,AAFA,AAFA,yDAAqC,mBAEnB,sBAEG;;;IAMvB,qCAMiB;;;IADf,AAFA,AAFA,mDAA+B,kBAEd,sBAEI;;;IAIvB,+BAAgF;IAC9E,6CACF;IAAA,iBAAM;;;IAGN,gCAAkC;IAChC,4FACF;IAAA,iBAAO;;;;IAMP,iCAE+B;IAD7B,sOAAS,4BAAqB,2BAAoB,CAAC,KAAC;IADtD,iBAE+B;;;IAFV,kDAA8B;;;IAKnD,+BAA2C;IAAA,YAA0B;IAAA,iBAAM;;;IAAhC,cAA0B;IAA1B,gDAA0B;;;IAxDvE,AADF,AADF,+BAAyC,cACL,YACzB;IAAA,2BAAW;IAAA,iBAAQ;IAC1B,+HAAiB;IAKjB,6HAAgB;IAKhB,8HAAiB;IAGnB,iBAAM;IAEJ,AADF,+BAAkC,YACzB;IAAA,yBAAS;IAAA,iBAAQ;IACxB,0IAAiB;IAWjB,0IAAyC;IASzC,+HAA0C;IAK1C,gIAAiB;IAKnB,iBAAM;IAEJ,AADF,gCAAkC,aACzB;IAAA,yBAAQ;IAAA,iBAAQ;IACvB,iIAAiB;IAKjB,+HAAgB;IAGhB,iCAAkC;IAAA,4FAA2E;IAEjH,AADE,AAD+G,iBAAO,EAChH,EACF;;;IA3DF,eAIC;IAJD,2CAIC;IACD,cAIC;IAJD,0CAIC;IACD,cAEC;IAFD,2CAEC;IAID,eAUC;IAVD,4CAUC;IACD,cAQC;IARD,0EAQC;IACD,cAIC;IAJD,2EAIC;IACD,cAIC;IAJD,4CAIC;IAID,eAIC;IAJD,4CAIC;IACD,cAEC;IAFD,2CAEC;;;;IASL,AADF,+BAA0D,iBACW;IAAzB,kNAAS,qBAAc,KAAC;IAChE,wBAAqC;IAAC,6BACxC;IACF,AADE,iBAAS,EACL;;;;IAvIN,AADF,AAFF,+BAC8C,aACL,cACK;IAAA,oBAAI;IAAA,iBAAO;IACrD,iCAAmF;IAA9C,kMAAS,4BAAqB,KAAC;IAClE,uBAAiC;IAErC,AADE,iBAAS,EACL;IAGJ,AADF,8BAAqC,cAEI;IACrC,wBAAuC;IACzC,iBAAM;IAGF,AADF,AADF,+BAA0C,gBACA,gBACM;IAAA,aAAoB;IAAA,iBAAO;IACvE,yBAAiE;IACjE,iCAA4C;IAAA,aAAyB;IACvE,AADuE,iBAAO,EACvE;IAEL,AADF,iCAA2C,gBAGK;IAC5C,aACF;IAAA,iBAAO;IACP,iHAAkC;IAQ1C,AADE,AADE,AADE,iBAAO,EACH,EACF,EACF;IAIF,AADF,AAFF,gCAAoC,eAEE,kBACqD;IAAzC,mMAAS,qBAAc,eAAe,CAAC,KAAC;IACpF,iCAA2C;IAAA,sBAAK;IAAA,iBAAO;IACvD,yBAAiH;IACnH,iBAAS;IACT,iHAA4C;IAiB9C,iBAAM;IAGJ,AADF,gCAAoC,kBACqD;IAAzC,mMAAS,qBAAc,eAAe,CAAC,KAAC;IACpF,iCAA2C;IAAA,yBAAQ;IAAA,iBAAO;IAC1D,yBAAiH;IACnH,iBAAS;IACT,iHAA4C;IAiE9C,iBAAM;IAEN,gHAAiB;IAOnB,iBAAM;;;IA3IJ,2DAA2C;IAUvC,eAAoC;IAApC,oDAAoC;IAKU,eAAoB;IAApB,2CAAoB;IAEpB,eAAyB;IAAzB,gDAAyB;IAInE,eAA+B;IAC/B,AADA,+CAA+B,6CACY;IAC3C,cACF;IADE,oFACF;IACA,cAIC;IAJD,4DAIC;IAUiB,eAAwF;IAAxF,6GAAwF;IAE9G,cAgBC;IAhBD,uEAgBC;IAMqB,eAAwF;IAAxF,6GAAwF;IAE9G,cAgEC;IAhED,uEAgEC;IAGH,cAMC;IAND,4CAMC;;ADxcP,qCAAqC;AACrC,MAAM,gBAAgB,GAA2B;IAC/C,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,WAAW,EAAE,SAAS;IACtB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,SAAS;CACjB,CAAC;AAEF,6BAA6B;AAC7B,MAAM,eAAe,GAA2B;IAC9C,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,iBAAiB;IACzB,WAAW,EAAE,UAAU;IACvB,OAAO,EAAE,gBAAgB;IACzB,KAAK,EAAE,WAAW;CACnB,CAAC;AAEF;;;GAGG;AASH,MAAM,OAAO,6BAA6B;IACxC,+DAA+D;IACtD,IAAI,GAA+B,IAAI,CAAC;IACxC,kBAAkB,GAA0B,IAAI,CAAC;IACjD,UAAU,GAAmC,IAAI,CAAC;IAClD,QAAQ,GAAG,KAAK,CAAC;IACjB,OAAO,GAAmE,EAAE,CAAC;IAC7E,OAAO,GAAwC,EAAE,CAAC;IAClD,MAAM,GAA4F,EAAE,CAAC;IACrG,QAAQ,GAA0B,EAAE,CAAC;IAE9C,+DAA+D;IACrD,WAAW,GAAG,IAAI,YAAY,EAAuB,CAAC;IACtD,WAAW,GAAG,IAAI,YAAY,EAA2B,CAAC;IAC1D,mBAAmB,GAAG,IAAI,YAAY,EAAuB,CAAC;IAC9D,mBAAmB,GAAG,IAAI,YAAY,EAA2B,CAAC;IAClE,cAAc,GAAG,IAAI,YAAY,EAAQ,CAAC;IAEpD,6DAA6D;IACnD,iBAAiB,GAA4B,EAAE,CAAC;IAE1D,+DAA+D;IAE/D,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;IAC3B,CAAC;IAED,IAAI,oBAAoB;QACtB,OAAO,IAAI,CAAC,kBAAkB,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;IACpE,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,IAAI,EAAE,QAAQ,KAAK,QAAQ;YAChC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,YAAY,KAAK,QAAQ,CAAC,CAAC;IAC1H,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,IAAI,EAAE,QAAQ,KAAK,QAAQ;YAChC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,YAAY,KAAK,QAAQ,CAAC,CAAC;IAC1H,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,IAAI,EAAE,QAAQ,KAAK,WAAW;YACnC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,YAAY,KAAK,WAAW,CAAC,CAAC;IAC7H,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,IAAI,EAAE,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC;IAC9E,CAAC;IAED,IAAI,aAAa;QACf,QAAQ,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;YAC5B,KAAK,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC;YAC/B,KAAK,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC;YAC/B,KAAK,WAAW,CAAC,CAAC,OAAO,WAAW,CAAC;YACrC,KAAK,SAAS,CAAC,CAAC,OAAO,eAAe,CAAC;YACvC,KAAK,OAAO,CAAC,CAAC,OAAO,YAAY,CAAC;YAClC,OAAO,CAAC,CAAC,OAAO,MAAM,CAAC;QACzB,CAAC;IACH,CAAC;IAED,IAAI,aAAa;QACf,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAC,IAAI,SAAS,CAAC;IAClE,CAAC;IAED,IAAI,YAAY;QACd,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAC,IAAI,iBAAiB,CAAC;IACzE,CAAC;IAED,IAAI,WAAW;QACb,QAAQ,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;YAC1B,KAAK,QAAQ,CAAC,CAAC,OAAO,SAAS,CAAC;YAChC,KAAK,UAAU,CAAC,CAAC,OAAO,SAAS,CAAC;YAClC,KAAK,SAAS,CAAC,CAAC,OAAO,SAAS,CAAC;YACjC,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,IAAI,cAAc;QAChB,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,UAAW,CAAC,YAAY,CAAC,CAAC,CAAC;QACtF,OAAO,IAAI,EAAE,IAAI,IAAI,cAAc,CAAC;IACtC,CAAC;IAED,kCAAkC;IAClC,IAAI,mBAAmB;QACrB,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,UAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC3F,OAAO,IAAI,EAAE,IAAI,IAAI,cAAc,CAAC;IACtC,CAAC;IAED,uCAAuC;IACvC,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,UAAU,EAAE,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3F,CAAC;IAED,wBAAwB;IACxB,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IACxD,CAAC;IAED,uCAAuC;IACvC,IAAI,kBAAkB;QACpB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ;YAAE,OAAO,eAAe,CAAC;QACjD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,IAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,IAAI,SAAS,CAAC;IAC1F,CAAC;IAED,uCAAuC;IACvC,IAAI,kBAAkB;QACpB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ;YAAE,OAAO,eAAe,CAAC;QACjD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,IAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,IAAI,SAAS,CAAC;IAC1F,CAAC;IAED,sCAAsC;IACtC,IAAI,iBAAiB;QACnB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU;YAAE,OAAO,eAAe,CAAC;QACnD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,IAAK,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,IAAI,SAAS,CAAC;IAC3F,CAAC;IAED,6DAA6D;IAE7D,aAAa,CAAC,SAAiB;QAC7B,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;IACzE,CAAC;IAED,kBAAkB,CAAC,SAAiB;QAClC,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;IACpD,CAAC;IAED,+DAA+D;IAE/D,YAAY,CAAC,KAAa;QACxB,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QACxC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,mBAAmB,CAAC,KAAa;QAC/B,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QACxC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,cAAc,CAAC,KAAa;QAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QACxC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,KAA0C,CAAC;QAC9D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,oBAAoB,CAAC,OAAgB;QACnC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QACxC,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;QACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,cAAc,CAAC,QAAgB;QAC7B,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QACxC,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC;QACtC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,cAAc,CAAC,QAAgB;QAC7B,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QACxC,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC;QACtC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,gBAAgB,CAAC,OAAe;QAC9B,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QACxC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,OAAO,IAAI,IAAI,CAAC;QACvC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,oBAAoB,CAAC,KAAa;QAChC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QACxC,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,KAA0C,CAAC;QACpE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,oBAAoB,CAAC,KAAa;QAChC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QACxC,IAAI,CAAC,IAAI,CAAC,kBAAkB,GAAG,KAAK,IAAI,IAAI,CAAC;QAC7C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,qBAAqB,CAAC,KAAa;QACjC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QACxC,IAAI,CAAC,IAAI,CAAC,mBAAmB,GAAG,KAAK,IAAI,IAAI,CAAC;QAC9C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,qBAAqB,CAAC,KAAa;QACjC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QACxC,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,KAAsC,CAAC;QACnE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,kBAAkB,CAAC,KAAa;QAC9B,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QACxC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,eAAe,CAAC,KAAa;QAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QACxC,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,qBAAqB,CAAC,KAAa;QACjC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QACxC,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,KAAK,IAAI,IAAI,CAAC;QACxC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,+DAA+D;IAE/D,uBAAuB,CAAC,KAAa;QACnC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC9C,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,KAAK,CAAC;QACpC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAED,qBAAqB,CAAC,KAAa;QACjC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC9C,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,KAAK,IAAI,IAAI,CAAC;QAC1C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAED,oBAAoB,CAAC,KAAa;QAChC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC9C,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAED,YAAY;QACV,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,YAAY;QACV,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,6DAA6D;IAE7D,6EAA6E;IACnE,UAAU,CAAC,KAAY;QAC/B,OAAQ,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC;IAClD,CAAC;IAED,gEAAgE;IACtD,YAAY,CAAC,KAAY;QACjC,OAAQ,KAAK,CAAC,MAA2B,CAAC,OAAO,CAAC;IACpD,CAAC;IAED,6DAA6D;IACnD,YAAY,CAAC,KAAY;QACjC,OAAO,CAAE,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC;IACnD,CAAC;IAED,8BAA8B;IACpB,iBAAiB,CAAC,KAAgC;QAC1D,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACpD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;uHAjRU,6BAA6B;6DAA7B,6BAA6B;YCnC1C,8BAA4B;YAG1B,+FAAgD;YAUhD,uFAAsB;YAmTtB,uFAA4B;YAgJ9B,iBAAM;;YA7cJ,cAKC;YALD,2EAKC;YAKD,cA8SC;YA9SD,6CA8SC;YAKD,cA+IC;YA/ID,mDA+IC;;;iFD5aU,6BAA6B;cARzC,SAAS;6BACI,KAAK,YACP,2BAA2B,iBAGtB,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,OAAO;;kBAI/C,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBAGL,MAAM;;kBACN,MAAM;;kBACN,MAAM;;kBACN,MAAM;;kBACN,MAAM;;kFAhBI,6BAA6B","sourcesContent":["import { Component, Input, Output, EventEmitter, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';\nimport { MJAIAgentStepEntity, MJAIAgentStepPathEntity } from '@memberjunction/core-entities';\nimport { FlowConnection } from '../interfaces/flow-types';\nimport { UUIDsEqual } from '@memberjunction/global';\n\n/** Step type accent color mapping */\nconst STEP_TYPE_COLORS: Record<string, string> = {\n Action: '#3b82f6',\n Prompt: '#8b5cf6',\n 'Sub-Agent': '#10b981',\n ForEach: '#f59e0b',\n While: '#f59e0b'\n};\n\n/** Step type icon mapping */\nconst STEP_TYPE_ICONS: Record<string, string> = {\n Action: 'fa-bolt',\n Prompt: 'fa-comment-dots',\n 'Sub-Agent': 'fa-robot',\n ForEach: 'fa-arrows-spin',\n While: 'fa-rotate'\n};\n\n/**\n * Properties panel for editing AI Agent step and path configurations.\n * Shows context-aware sections based on the selected step type.\n */\n@Component({\n standalone: false,\n selector: 'mj-agent-properties-panel',\n templateUrl: './agent-properties-panel.component.html',\n styleUrls: ['./agent-properties-panel.component.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class AgentPropertiesPanelComponent {\n // ── Inputs ──────────────────────────────────────────────────\n @Input() Step: MJAIAgentStepEntity | null = null;\n @Input() SelectedConnection: FlowConnection | null = null;\n @Input() PathEntity: MJAIAgentStepPathEntity | null = null;\n @Input() ReadOnly = false;\n @Input() Actions: Array<{ ID: string; Name: string; IconClass?: string | null }> = [];\n @Input() Prompts: Array<{ ID: string; Name: string }> = [];\n @Input() Agents: Array<{ ID: string; Name: string; IconClass?: string | null; LogoURL?: string | null }> = [];\n @Input() AllSteps: MJAIAgentStepEntity[] = [];\n\n // ── Outputs ─────────────────────────────────────────────────\n @Output() StepChanged = new EventEmitter<MJAIAgentStepEntity>();\n @Output() PathChanged = new EventEmitter<MJAIAgentStepPathEntity>();\n @Output() DeleteStepRequested = new EventEmitter<MJAIAgentStepEntity>();\n @Output() DeletePathRequested = new EventEmitter<MJAIAgentStepPathEntity>();\n @Output() CloseRequested = new EventEmitter<void>();\n\n // ── Collapsible section state ─────────────────────────────\n protected collapsedSections: Record<string, boolean> = {};\n\n // ── Computed Properties ─────────────────────────────────────\n\n get isStepSelected(): boolean {\n return this.Step != null;\n }\n\n get isConnectionSelected(): boolean {\n return this.SelectedConnection != null && this.PathEntity != null;\n }\n\n get showActionPicker(): boolean {\n return this.Step?.StepType === 'Action' ||\n ((this.Step?.StepType === 'ForEach' || this.Step?.StepType === 'While') && this.Step?.LoopBodyType === 'Action');\n }\n\n get showPromptPicker(): boolean {\n return this.Step?.StepType === 'Prompt' ||\n ((this.Step?.StepType === 'ForEach' || this.Step?.StepType === 'While') && this.Step?.LoopBodyType === 'Prompt');\n }\n\n get showAgentPicker(): boolean {\n return this.Step?.StepType === 'Sub-Agent' ||\n ((this.Step?.StepType === 'ForEach' || this.Step?.StepType === 'While') && this.Step?.LoopBodyType === 'Sub-Agent');\n }\n\n get showLoopConfig(): boolean {\n return this.Step?.StepType === 'ForEach' || this.Step?.StepType === 'While';\n }\n\n get stepTypeLabel(): string {\n switch (this.Step?.StepType) {\n case 'Action': return 'Action';\n case 'Prompt': return 'Prompt';\n case 'Sub-Agent': return 'Sub-Agent';\n case 'ForEach': return 'For Each Loop';\n case 'While': return 'While Loop';\n default: return 'Step';\n }\n }\n\n get stepTypeColor(): string {\n return STEP_TYPE_COLORS[this.Step?.StepType ?? ''] ?? '#64748b';\n }\n\n get stepTypeIcon(): string {\n return STEP_TYPE_ICONS[this.Step?.StepType ?? ''] ?? 'fa-circle-nodes';\n }\n\n get statusColor(): string {\n switch (this.Step?.Status) {\n case 'Active': return '#10b981';\n case 'Disabled': return '#94a3b8';\n case 'Pending': return '#f59e0b';\n default: return '#94a3b8';\n }\n }\n\n /** Path: origin step name */\n get originStepName(): string {\n if (!this.PathEntity) return '';\n const step = this.AllSteps.find(s => UUIDsEqual(s.ID, this.PathEntity!.OriginStepID));\n return step?.Name ?? 'Unknown Step';\n }\n\n /** Path: destination step name */\n get destinationStepName(): string {\n if (!this.PathEntity) return '';\n const step = this.AllSteps.find(s => UUIDsEqual(s.ID, this.PathEntity!.DestinationStepID));\n return step?.Name ?? 'Unknown Step';\n }\n\n /** Path: whether a condition is set */\n get isConditionalPath(): boolean {\n return this.PathEntity?.Condition != null && this.PathEntity.Condition.trim().length > 0;\n }\n\n /** Path accent color */\n get pathAccentColor(): string {\n return this.isConditionalPath ? '#f59e0b' : '#94a3b8';\n }\n\n /** Resolved action name for display */\n get selectedActionName(): string {\n if (!this.Step?.ActionID) return 'None selected';\n return this.Actions.find(a => UUIDsEqual(a.ID, this.Step!.ActionID))?.Name ?? 'Unknown';\n }\n\n /** Resolved prompt name for display */\n get selectedPromptName(): string {\n if (!this.Step?.PromptID) return 'None selected';\n return this.Prompts.find(p => UUIDsEqual(p.ID, this.Step!.PromptID))?.Name ?? 'Unknown';\n }\n\n /** Resolved agent name for display */\n get selectedAgentName(): string {\n if (!this.Step?.SubAgentID) return 'None selected';\n return this.Agents.find(a => UUIDsEqual(a.ID, this.Step!.SubAgentID))?.Name ?? 'Unknown';\n }\n\n // ── Section Collapse ──────────────────────────────────────\n\n ToggleSection(sectionId: string): void {\n this.collapsedSections[sectionId] = !this.collapsedSections[sectionId];\n }\n\n IsSectionCollapsed(sectionId: string): boolean {\n return this.collapsedSections[sectionId] === true;\n }\n\n // ── Step Event Handlers ─────────────────────────────────────\n\n OnNameChange(value: string): void {\n if (!this.Step || this.ReadOnly) return;\n this.Step.Name = value;\n this.StepChanged.emit(this.Step);\n }\n\n OnDescriptionChange(value: string): void {\n if (!this.Step || this.ReadOnly) return;\n this.Step.Description = value;\n this.StepChanged.emit(this.Step);\n }\n\n OnStatusChange(value: string): void {\n if (!this.Step || this.ReadOnly) return;\n this.Step.Status = value as 'Active' | 'Disabled' | 'Pending';\n this.StepChanged.emit(this.Step);\n }\n\n OnStartingStepChange(checked: boolean): void {\n if (!this.Step || this.ReadOnly) return;\n this.Step.StartingStep = checked;\n this.StepChanged.emit(this.Step);\n }\n\n OnActionChange(actionId: string): void {\n if (!this.Step || this.ReadOnly) return;\n this.Step.ActionID = actionId || null;\n this.StepChanged.emit(this.Step);\n }\n\n OnPromptChange(promptId: string): void {\n if (!this.Step || this.ReadOnly) return;\n this.Step.PromptID = promptId || null;\n this.StepChanged.emit(this.Step);\n }\n\n OnSubAgentChange(agentId: string): void {\n if (!this.Step || this.ReadOnly) return;\n this.Step.SubAgentID = agentId || null;\n this.StepChanged.emit(this.Step);\n }\n\n OnLoopBodyTypeChange(value: string): void {\n if (!this.Step || this.ReadOnly) return;\n this.Step.LoopBodyType = value as 'Action' | 'Prompt' | 'Sub-Agent';\n this.StepChanged.emit(this.Step);\n }\n\n OnInputMappingChange(value: string): void {\n if (!this.Step || this.ReadOnly) return;\n this.Step.ActionInputMapping = value || null;\n this.StepChanged.emit(this.Step);\n }\n\n OnOutputMappingChange(value: string): void {\n if (!this.Step || this.ReadOnly) return;\n this.Step.ActionOutputMapping = value || null;\n this.StepChanged.emit(this.Step);\n }\n\n OnErrorBehaviorChange(value: string): void {\n if (!this.Step || this.ReadOnly) return;\n this.Step.OnErrorBehavior = value as 'fail' | 'continue' | 'retry';\n this.StepChanged.emit(this.Step);\n }\n\n OnRetryCountChange(value: number): void {\n if (!this.Step || this.ReadOnly) return;\n this.Step.RetryCount = value;\n this.StepChanged.emit(this.Step);\n }\n\n OnTimeoutChange(value: number): void {\n if (!this.Step || this.ReadOnly) return;\n this.Step.TimeoutSeconds = value;\n this.StepChanged.emit(this.Step);\n }\n\n OnConfigurationChange(value: string): void {\n if (!this.Step || this.ReadOnly) return;\n this.Step.Configuration = value || null;\n this.StepChanged.emit(this.Step);\n }\n\n // ── Path Event Handlers ─────────────────────────────────────\n\n OnPathDescriptionChange(value: string): void {\n if (!this.PathEntity || this.ReadOnly) return;\n this.PathEntity.Description = value;\n this.PathChanged.emit(this.PathEntity);\n }\n\n OnPathConditionChange(value: string): void {\n if (!this.PathEntity || this.ReadOnly) return;\n this.PathEntity.Condition = value || null;\n this.PathChanged.emit(this.PathEntity);\n }\n\n OnPathPriorityChange(value: number): void {\n if (!this.PathEntity || this.ReadOnly) return;\n this.PathEntity.Priority = value;\n this.PathChanged.emit(this.PathEntity);\n }\n\n OnDeleteStep(): void {\n if (this.Step) {\n this.DeleteStepRequested.emit(this.Step);\n }\n }\n\n OnDeletePath(): void {\n if (this.PathEntity) {\n this.DeletePathRequested.emit(this.PathEntity);\n }\n }\n\n // ── Template Helpers ──────────────────────────────────────\n\n /** Safely extract string value from an input/textarea/select change event */\n protected InputValue(event: Event): string {\n return (event.target as HTMLInputElement).value;\n }\n\n /** Safely extract checked state from a checkbox change event */\n protected CheckedValue(event: Event): boolean {\n return (event.target as HTMLInputElement).checked;\n }\n\n /** Safely extract numeric value from a number input event */\n protected NumericValue(event: Event): number {\n return +(event.target as HTMLInputElement).value;\n }\n\n /** Format JSON for display */\n protected FormatJsonDisplay(value: string | null | undefined): string {\n if (!value) return '';\n try {\n return JSON.stringify(JSON.parse(value), null, 2);\n } catch {\n return value;\n }\n }\n}\n","<div class=\"mj-agent-props\">\n\n <!-- Empty State -->\n @if (!isStepSelected && !isConnectionSelected) {\n <div class=\"mj-agent-props-empty\">\n <i class=\"fa-solid fa-mouse-pointer\"></i>\n <p>Select a step or connection to view its properties</p>\n </div>\n }\n\n <!-- ============================================ -->\n <!-- STEP PROPERTIES -->\n <!-- ============================================ -->\n @if (isStepSelected) {\n <!-- Step Header -->\n <div class=\"mj-agent-props-header mj-agent-props-header--step\"\n [style.border-left-color]=\"stepTypeColor\">\n <div class=\"mj-agent-props-header-top\">\n <span class=\"mj-agent-props-header-label\">STEP</span>\n <button class=\"mj-agent-props-close\" (click)=\"CloseRequested.emit()\" title=\"Close\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n <!-- Identity card -->\n <div class=\"mj-agent-props-identity\">\n <div class=\"mj-agent-props-identity-icon\" [style.background]=\"stepTypeColor\">\n <i class=\"fa-solid\" [ngClass]=\"stepTypeIcon\"></i>\n </div>\n <div class=\"mj-agent-props-identity-info\">\n <span class=\"mj-agent-props-identity-name\">{{ Step!.Name }}</span>\n <span class=\"mj-agent-props-identity-meta\">\n <span class=\"mj-agent-props-type-pill\" [style.color]=\"stepTypeColor\"\n [style.background]=\"stepTypeColor + '18'\">{{ stepTypeLabel }}</span>\n <span class=\"mj-agent-props-status-dot\" [style.background]=\"statusColor\"></span>\n <span class=\"mj-agent-props-status-label\">{{ Step!.Status }}</span>\n @if (Step!.StartingStep) {\n <span class=\"mj-agent-props-start-badge\">Start</span>\n }\n </span>\n </div>\n </div>\n </div>\n <div class=\"mj-agent-props-content\">\n <!-- ── General Section ─────────────────── -->\n <div class=\"mj-agent-props-section\">\n <button class=\"mj-agent-props-section-header\" (click)=\"ToggleSection('general')\">\n <span class=\"mj-agent-props-section-title\">General</span>\n <i class=\"fa-solid\" [ngClass]=\"IsSectionCollapsed('general') ? 'fa-chevron-right' : 'fa-chevron-down'\"></i>\n </button>\n @if (!IsSectionCollapsed('general')) {\n <div class=\"mj-agent-props-section-body\">\n <div class=\"mj-agent-props-field\">\n <label>Name</label>\n @if (!ReadOnly) {\n <input type=\"text\" [value]=\"Step!.Name\"\n (input)=\"OnNameChange(InputValue($event))\"\n placeholder=\"Step name...\" class=\"mj-agent-props-input\">\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">{{ Step!.Name }}</div>\n }\n </div>\n <div class=\"mj-agent-props-field\">\n <label>Description</label>\n @if (!ReadOnly) {\n <textarea [value]=\"Step!.Description || ''\"\n (input)=\"OnDescriptionChange(InputValue($event))\"\n placeholder=\"Optional description...\" rows=\"2\"\n class=\"mj-agent-props-input mj-agent-props-textarea\"></textarea>\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">\n {{ Step!.Description || '—' }}\n </div>\n }\n </div>\n <div class=\"mj-agent-props-field\">\n <label>Status</label>\n @if (!ReadOnly) {\n <select [value]=\"Step!.Status\"\n (change)=\"OnStatusChange(InputValue($event))\"\n class=\"mj-agent-props-input\">\n <option value=\"Active\">Active</option>\n <option value=\"Disabled\">Disabled</option>\n <option value=\"Pending\">Pending</option>\n </select>\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">\n <span class=\"mj-agent-props-status-dot\" [style.background]=\"statusColor\"></span>\n {{ Step!.Status }}\n </div>\n }\n </div>\n @if (!ReadOnly) {\n <div class=\"mj-agent-props-field mj-agent-props-field--row\">\n <label class=\"mj-agent-props-checkbox-label\">\n <input type=\"checkbox\" [checked]=\"Step!.StartingStep\"\n (change)=\"OnStartingStepChange(CheckedValue($event))\">\n Starting Step\n </label>\n </div>\n }\n @if (ReadOnly && Step!.StartingStep) {\n <div class=\"mj-agent-props-field\">\n <label>Starting Step</label>\n <div class=\"mj-agent-props-readonly-value\">\n <span class=\"mj-agent-props-start-badge\">Yes — this is the entry point</span>\n </div>\n </div>\n }\n </div>\n }\n </div>\n <!-- ── Configuration Section ───────────── -->\n <div class=\"mj-agent-props-section\">\n <button class=\"mj-agent-props-section-header\" (click)=\"ToggleSection('config')\">\n <span class=\"mj-agent-props-section-title\">Configuration</span>\n <i class=\"fa-solid\" [ngClass]=\"IsSectionCollapsed('config') ? 'fa-chevron-right' : 'fa-chevron-down'\"></i>\n </button>\n @if (!IsSectionCollapsed('config')) {\n <div class=\"mj-agent-props-section-body\">\n <!-- Loop Body Type (ForEach / While) -->\n @if (showLoopConfig) {\n <div class=\"mj-agent-props-field\">\n <label>Loop Body Type</label>\n @if (!ReadOnly) {\n <select [value]=\"Step!.LoopBodyType || 'Action'\"\n (change)=\"OnLoopBodyTypeChange(InputValue($event))\"\n class=\"mj-agent-props-input\">\n <option value=\"Action\">Action</option>\n <option value=\"Prompt\">Prompt</option>\n <option value=\"Sub-Agent\">Sub-Agent</option>\n </select>\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">\n {{ Step!.LoopBodyType || 'Action' }}\n </div>\n }\n </div>\n }\n <!-- Action Picker -->\n @if (showActionPicker) {\n <div class=\"mj-agent-props-field\">\n <label>Action</label>\n @if (!ReadOnly) {\n <select [value]=\"Step!.ActionID || ''\"\n (change)=\"OnActionChange(InputValue($event))\"\n class=\"mj-agent-props-input\">\n <option value=\"\">-- Select Action --</option>\n @for (action of Actions; track action) {\n <option [value]=\"action.ID\">{{ action.Name }}</option>\n }\n </select>\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">{{ selectedActionName }}</div>\n }\n </div>\n }\n <!-- Prompt Picker -->\n @if (showPromptPicker) {\n <div class=\"mj-agent-props-field\">\n <label>Prompt</label>\n @if (!ReadOnly) {\n <select [value]=\"Step!.PromptID || ''\"\n (change)=\"OnPromptChange(InputValue($event))\"\n class=\"mj-agent-props-input\">\n <option value=\"\">-- Select Prompt --</option>\n @for (prompt of Prompts; track prompt) {\n <option [value]=\"prompt.ID\">{{ prompt.Name }}</option>\n }\n </select>\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">{{ selectedPromptName }}</div>\n }\n </div>\n }\n <!-- Sub-Agent Picker -->\n @if (showAgentPicker) {\n <div class=\"mj-agent-props-field\">\n <label>Sub-Agent</label>\n @if (!ReadOnly) {\n <select [value]=\"Step!.SubAgentID || ''\"\n (change)=\"OnSubAgentChange(InputValue($event))\"\n class=\"mj-agent-props-input\">\n <option value=\"\">-- Select Agent --</option>\n @for (agent of Agents; track agent) {\n <option [value]=\"agent.ID\">{{ agent.Name }}</option>\n }\n </select>\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">{{ selectedAgentName }}</div>\n }\n </div>\n }\n <!-- Loop Configuration (JSON) -->\n @if (showLoopConfig) {\n <div class=\"mj-agent-props-field\">\n <label>Loop Configuration</label>\n <mj-code-editor\n [value]=\"FormatJsonDisplay(Step!.Configuration)\"\n language=\"json\"\n [readonly]=\"ReadOnly\"\n setup=\"minimal\"\n [lineWrapping]=\"true\"\n (change)=\"OnConfigurationChange($any($event))\">\n </mj-code-editor>\n </div>\n }\n </div>\n }\n </div>\n <!-- ── Data Mapping Section (Action steps) ─── -->\n @if (Step!.StepType === 'Action' || showActionPicker) {\n <div class=\"mj-agent-props-section\">\n <button class=\"mj-agent-props-section-header\" (click)=\"ToggleSection('mapping')\">\n <span class=\"mj-agent-props-section-title\">Data Mapping</span>\n <i class=\"fa-solid\" [ngClass]=\"IsSectionCollapsed('mapping') ? 'fa-chevron-right' : 'fa-chevron-down'\"></i>\n </button>\n @if (!IsSectionCollapsed('mapping')) {\n <div class=\"mj-agent-props-section-body\">\n <div class=\"mj-agent-props-field\">\n <label>Input Mapping</label>\n <mj-code-editor\n [value]=\"FormatJsonDisplay(Step!.ActionInputMapping)\"\n language=\"json\"\n [readonly]=\"ReadOnly\"\n setup=\"minimal\"\n [lineWrapping]=\"true\"\n placeholder=\"Enter JSON input mapping...\"\n (change)=\"OnInputMappingChange($any($event))\">\n </mj-code-editor>\n </div>\n <div class=\"mj-agent-props-field\">\n <label>Output Mapping</label>\n <mj-code-editor\n [value]=\"FormatJsonDisplay(Step!.ActionOutputMapping)\"\n language=\"json\"\n [readonly]=\"ReadOnly\"\n setup=\"minimal\"\n [lineWrapping]=\"true\"\n placeholder=\"Enter JSON output mapping...\"\n (change)=\"OnOutputMappingChange($any($event))\">\n </mj-code-editor>\n </div>\n </div>\n }\n </div>\n }\n <!-- ── Error Handling Section ──────────── -->\n <div class=\"mj-agent-props-section\">\n <button class=\"mj-agent-props-section-header\" (click)=\"ToggleSection('errors')\">\n <span class=\"mj-agent-props-section-title\">Error Handling</span>\n <i class=\"fa-solid\" [ngClass]=\"IsSectionCollapsed('errors') ? 'fa-chevron-right' : 'fa-chevron-down'\"></i>\n </button>\n @if (!IsSectionCollapsed('errors')) {\n <div class=\"mj-agent-props-section-body\">\n <div class=\"mj-agent-props-field\">\n <label>On Error</label>\n @if (!ReadOnly) {\n <select [value]=\"Step!.OnErrorBehavior\"\n (change)=\"OnErrorBehaviorChange(InputValue($event))\"\n class=\"mj-agent-props-input\">\n <option value=\"fail\">Fail (stop flow)</option>\n <option value=\"continue\">Continue (ignore error)</option>\n <option value=\"retry\">Retry</option>\n </select>\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">\n {{ Step!.OnErrorBehavior === 'fail' ? 'Fail (stop flow)' :\n Step!.OnErrorBehavior === 'continue' ? 'Continue (ignore error)' : 'Retry' }}\n </div>\n }\n </div>\n @if (Step!.OnErrorBehavior === 'retry') {\n <div class=\"mj-agent-props-field\">\n <label>Retry Count</label>\n @if (!ReadOnly) {\n <input type=\"number\" [value]=\"Step!.RetryCount\" min=\"0\" max=\"10\"\n (input)=\"OnRetryCountChange(NumericValue($event))\"\n class=\"mj-agent-props-input\">\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">{{ Step!.RetryCount }}</div>\n }\n </div>\n }\n <div class=\"mj-agent-props-field\">\n <label>Timeout (seconds)</label>\n @if (!ReadOnly) {\n <input type=\"number\" [value]=\"Step!.TimeoutSeconds\" min=\"1\"\n (input)=\"OnTimeoutChange(NumericValue($event))\"\n class=\"mj-agent-props-input\">\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">{{ Step!.TimeoutSeconds }}s</div>\n }\n </div>\n </div>\n }\n </div>\n <!-- ── Danger Zone ─────────────────────── -->\n @if (!ReadOnly) {\n <div class=\"mj-agent-props-section mj-agent-props-danger\">\n <button class=\"mj-agent-props-delete-btn\" (click)=\"OnDeleteStep()\">\n <i class=\"fa-solid fa-trash-can\"></i> Delete Step\n </button>\n </div>\n }\n </div>\n }\n\n <!-- ============================================ -->\n <!-- PATH PROPERTIES -->\n <!-- ============================================ -->\n @if (isConnectionSelected) {\n <!-- Path Header -->\n <div class=\"mj-agent-props-header mj-agent-props-header--path\"\n [style.border-left-color]=\"pathAccentColor\">\n <div class=\"mj-agent-props-header-top\">\n <span class=\"mj-agent-props-header-label\">PATH</span>\n <button class=\"mj-agent-props-close\" (click)=\"CloseRequested.emit()\" title=\"Close\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n <!-- Path identity card -->\n <div class=\"mj-agent-props-identity\">\n <div class=\"mj-agent-props-identity-icon mj-agent-props-identity-icon--path\"\n [style.background]=\"pathAccentColor\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n </div>\n <div class=\"mj-agent-props-identity-info\">\n <span class=\"mj-agent-props-path-route\">\n <span class=\"mj-agent-props-path-step-name\">{{ originStepName }}</span>\n <i class=\"fa-solid fa-arrow-right mj-agent-props-path-arrow\"></i>\n <span class=\"mj-agent-props-path-step-name\">{{ destinationStepName }}</span>\n </span>\n <span class=\"mj-agent-props-identity-meta\">\n <span class=\"mj-agent-props-type-pill\"\n [style.color]=\"pathAccentColor\"\n [style.background]=\"pathAccentColor + '18'\">\n {{ isConditionalPath ? 'Conditional' : 'Always' }}\n </span>\n @if (PathEntity!.Priority !== 0) {\n <span class=\"mj-agent-props-priority-badge\">\n Priority: {{ PathEntity!.Priority }}\n </span>\n }\n </span>\n </div>\n </div>\n </div>\n <div class=\"mj-agent-props-content\">\n <!-- ── Overview Section ────────────────── -->\n <div class=\"mj-agent-props-section\">\n <button class=\"mj-agent-props-section-header\" (click)=\"ToggleSection('path-overview')\">\n <span class=\"mj-agent-props-section-title\">Route</span>\n <i class=\"fa-solid\" [ngClass]=\"IsSectionCollapsed('path-overview') ? 'fa-chevron-right' : 'fa-chevron-down'\"></i>\n </button>\n @if (!IsSectionCollapsed('path-overview')) {\n <div class=\"mj-agent-props-section-body\">\n <div class=\"mj-agent-props-field\">\n <label>From</label>\n <div class=\"mj-agent-props-readonly-value mj-agent-props-readonly-value--muted\">\n {{ originStepName }}\n </div>\n </div>\n <div class=\"mj-agent-props-field\">\n <label>To</label>\n <div class=\"mj-agent-props-readonly-value mj-agent-props-readonly-value--muted\">\n {{ destinationStepName }}\n </div>\n </div>\n <span class=\"mj-agent-props-hint\">To change the route, rewire the connection on the canvas.</span>\n </div>\n }\n </div>\n <!-- ── Path Settings Section ───────────── -->\n <div class=\"mj-agent-props-section\">\n <button class=\"mj-agent-props-section-header\" (click)=\"ToggleSection('path-settings')\">\n <span class=\"mj-agent-props-section-title\">Settings</span>\n <i class=\"fa-solid\" [ngClass]=\"IsSectionCollapsed('path-settings') ? 'fa-chevron-right' : 'fa-chevron-down'\"></i>\n </button>\n @if (!IsSectionCollapsed('path-settings')) {\n <div class=\"mj-agent-props-section-body\">\n <div class=\"mj-agent-props-field\">\n <label>Description</label>\n @if (!ReadOnly) {\n <input type=\"text\" [value]=\"PathEntity!.Description || ''\"\n (input)=\"OnPathDescriptionChange(InputValue($event))\"\n placeholder=\"Path label...\" class=\"mj-agent-props-input\">\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">\n {{ PathEntity!.Description || '—' }}\n </div>\n }\n @if (!ReadOnly) {\n <span class=\"mj-agent-props-hint\">Displayed as a label on the connection line</span>\n }\n </div>\n <div class=\"mj-agent-props-field\">\n <label>Condition</label>\n @if (!ReadOnly) {\n <mj-code-editor\n [value]=\"PathEntity!.Condition || ''\"\n language=\"javascript\"\n [readonly]=\"false\"\n setup=\"minimal\"\n [lineWrapping]=\"true\"\n placeholder=\"e.g. payload.status === 'active'\"\n (change)=\"OnPathConditionChange($any($event))\">\n </mj-code-editor>\n }\n @if (ReadOnly && PathEntity!.Condition) {\n <mj-code-editor\n [value]=\"PathEntity!.Condition\"\n language=\"javascript\"\n [readonly]=\"true\"\n setup=\"minimal\"\n [lineWrapping]=\"true\">\n </mj-code-editor>\n }\n @if (ReadOnly && !PathEntity!.Condition) {\n <div class=\"mj-agent-props-readonly-value mj-agent-props-readonly-value--muted\">\n No condition (always taken)\n </div>\n }\n @if (!ReadOnly) {\n <span class=\"mj-agent-props-hint\">\n JavaScript expression evaluated at runtime. Leave empty for unconditional.\n </span>\n }\n </div>\n <div class=\"mj-agent-props-field\">\n <label>Priority</label>\n @if (!ReadOnly) {\n <input type=\"number\" [value]=\"PathEntity!.Priority\" min=\"-100\" max=\"100\"\n (input)=\"OnPathPriorityChange(NumericValue($event))\"\n class=\"mj-agent-props-input\">\n }\n @if (ReadOnly) {\n <div class=\"mj-agent-props-readonly-value\">{{ PathEntity!.Priority }}</div>\n }\n <span class=\"mj-agent-props-hint\">Higher priority paths are evaluated first when multiple paths leave a step.</span>\n </div>\n </div>\n }\n </div>\n <!-- ── Danger Zone ─────────────────────── -->\n @if (!ReadOnly) {\n <div class=\"mj-agent-props-section mj-agent-props-danger\">\n <button class=\"mj-agent-props-delete-btn\" (click)=\"OnDeletePath()\">\n <i class=\"fa-solid fa-trash-can\"></i> Delete Path\n </button>\n </div>\n }\n </div>\n }\n</div>\n"]}
@@ -10,6 +10,7 @@ export declare class AgentStepListComponent {
10
10
  Paths: MJAIAgentStepPathEntity[];
11
11
  SelectedStepID: string | null;
12
12
  StepClicked: EventEmitter<MJAIAgentStepEntity>;
13
+ IsStepSelected(step: MJAIAgentStepEntity): boolean;
13
14
  getConfiguredItem(step: MJAIAgentStepEntity): string;
14
15
  static ɵfac: i0.ɵɵFactoryDeclaration<AgentStepListComponent, never>;
15
16
  static ɵcmp: i0.ɵɵComponentDeclaration<AgentStepListComponent, "mj-agent-step-list", never, { "Steps": { "alias": "Steps"; "required": false; }; "Paths": { "alias": "Paths"; "required": false; }; "SelectedStepID": { "alias": "SelectedStepID"; "required": false; }; }, { "StepClicked": "StepClicked"; }, never, never, false, never>;