@bikdotai/bik-component-library 0.0.821 → 0.0.822-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/dist/cjs/components/agent-builder/AgentBuilder.js +1 -1
  2. package/dist/cjs/components/agent-builder/AgentBuilder.js.map +1 -1
  3. package/dist/cjs/components/agent-builder/AgentBuilder.styled.js +66 -90
  4. package/dist/cjs/components/agent-builder/AgentBuilder.styled.js.map +1 -1
  5. package/dist/cjs/components/agent-builder/components/CreateSubAgentPanel.js +1 -1
  6. package/dist/cjs/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -1
  7. package/dist/cjs/components/agent-builder/components/MentionPicker.js +19 -19
  8. package/dist/cjs/components/agent-builder/components/MentionPicker.js.map +1 -1
  9. package/dist/cjs/components/agent-builder/components/SelectableListSection.js +14 -1
  10. package/dist/cjs/components/agent-builder/components/SelectableListSection.js.map +1 -1
  11. package/dist/cjs/components/agent-builder/constants/charLimits.js.map +1 -1
  12. package/dist/cjs/components/agent-builder/context/AgentBuilderContext.js +1 -1
  13. package/dist/cjs/components/agent-builder/context/AgentBuilderContext.js.map +1 -1
  14. package/dist/cjs/components/agent-builder/steps/Step1About.js +1 -1
  15. package/dist/cjs/components/agent-builder/steps/Step1About.js.map +1 -1
  16. package/dist/cjs/components/agent-builder/steps/Step2WhenItStepsIn.js +1 -1
  17. package/dist/cjs/components/agent-builder/steps/Step2WhenItStepsIn.js.map +1 -1
  18. package/dist/cjs/components/agent-builder/steps/Step3HowItResponds.js +1 -1
  19. package/dist/cjs/components/agent-builder/steps/Step3HowItResponds.js.map +1 -1
  20. package/dist/cjs/components/agent-builder/steps/Step4HandoverRules.js +1 -1
  21. package/dist/cjs/components/agent-builder/steps/Step4HandoverRules.js.map +1 -1
  22. package/dist/cjs/components/agent-builder/utils/sourceIcons.js +1 -1
  23. package/dist/cjs/components/agent-builder/utils/sourceIcons.js.map +1 -1
  24. package/dist/cjs/components/agent-listing/AgentListing.js +1 -1
  25. package/dist/cjs/components/agent-listing/AgentListing.js.map +1 -1
  26. package/dist/cjs/components/agent-listing/AgentListingFilters.js +1 -1
  27. package/dist/cjs/components/agent-listing/AgentListingFilters.js.map +1 -1
  28. package/dist/cjs/components/dropdown/utils.js +2 -0
  29. package/dist/cjs/components/dropdown/utils.js.map +1 -0
  30. package/dist/cjs/index.js +1 -1
  31. package/dist/cjs/utils/arrayUtils.js +2 -0
  32. package/dist/cjs/utils/arrayUtils.js.map +1 -0
  33. package/dist/esm/components/agent-builder/AgentBuilder.js +67 -65
  34. package/dist/esm/components/agent-builder/AgentBuilder.js.map +1 -1
  35. package/dist/esm/components/agent-builder/AgentBuilder.model.d.ts +7 -0
  36. package/dist/esm/components/agent-builder/AgentBuilder.styled.js +117 -141
  37. package/dist/esm/components/agent-builder/AgentBuilder.styled.js.map +1 -1
  38. package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.d.ts +3 -0
  39. package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js +95 -96
  40. package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -1
  41. package/dist/esm/components/agent-builder/components/MentionPicker.d.ts +4 -0
  42. package/dist/esm/components/agent-builder/components/MentionPicker.js +64 -69
  43. package/dist/esm/components/agent-builder/components/MentionPicker.js.map +1 -1
  44. package/dist/esm/components/agent-builder/components/SelectableListSection.d.ts +10 -0
  45. package/dist/esm/components/agent-builder/components/SelectableListSection.js +161 -106
  46. package/dist/esm/components/agent-builder/components/SelectableListSection.js.map +1 -1
  47. package/dist/esm/components/agent-builder/constants/charLimits.d.ts +6 -0
  48. package/dist/esm/components/agent-builder/constants/charLimits.js.map +1 -1
  49. package/dist/esm/components/agent-builder/context/AgentBuilderContext.d.ts +4 -0
  50. package/dist/esm/components/agent-builder/context/AgentBuilderContext.js +126 -120
  51. package/dist/esm/components/agent-builder/context/AgentBuilderContext.js.map +1 -1
  52. package/dist/esm/components/agent-builder/index.d.ts +1 -0
  53. package/dist/esm/components/agent-builder/steps/Step1About.js +6 -7
  54. package/dist/esm/components/agent-builder/steps/Step1About.js.map +1 -1
  55. package/dist/esm/components/agent-builder/steps/Step2WhenItStepsIn.js +59 -59
  56. package/dist/esm/components/agent-builder/steps/Step2WhenItStepsIn.js.map +1 -1
  57. package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js +114 -109
  58. package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js.map +1 -1
  59. package/dist/esm/components/agent-builder/steps/Step4HandoverRules.js +26 -27
  60. package/dist/esm/components/agent-builder/steps/Step4HandoverRules.js.map +1 -1
  61. package/dist/esm/components/agent-builder/utils/sourceIcons.d.ts +6 -0
  62. package/dist/esm/components/agent-builder/utils/sourceIcons.js +12 -7
  63. package/dist/esm/components/agent-builder/utils/sourceIcons.js.map +1 -1
  64. package/dist/esm/components/agent-listing/AgentListing.js +91 -90
  65. package/dist/esm/components/agent-listing/AgentListing.js.map +1 -1
  66. package/dist/esm/components/agent-listing/AgentListingFilters.js +31 -30
  67. package/dist/esm/components/agent-listing/AgentListingFilters.js.map +1 -1
  68. package/dist/esm/components/dropdown/index.d.ts +1 -0
  69. package/dist/esm/components/dropdown/utils.d.ts +9 -0
  70. package/dist/esm/components/dropdown/utils.js +5 -0
  71. package/dist/esm/components/dropdown/utils.js.map +1 -0
  72. package/dist/esm/index.js +10 -8
  73. package/dist/esm/index.js.map +1 -1
  74. package/dist/esm/utils/arrayUtils.d.ts +7 -0
  75. package/dist/esm/utils/arrayUtils.js +5 -0
  76. package/dist/esm/utils/arrayUtils.js.map +1 -0
  77. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Step3HowItResponds.js","sources":["../../../../../src/components/agent-builder/steps/Step3HowItResponds.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { Dropdown } from '@src/components/dropdown';\nimport { SingleOption } from '@src/components/dropdown/type';\nimport { TitleSmall } from '@src/components/TypographyStyle';\nimport { COLORS } from '@src/constants/Theme';\nimport { AgentTool, SubAgentDraft, SubAgentRef } from '../AgentBuilder.model';\nimport {\n\tSideSection,\n\tStep3Grid,\n\tStep3Main,\n\tStep3Side,\n} from '../AgentBuilder.styled';\nimport { CreateSubAgentPanel } from '../components/CreateSubAgentPanel';\nimport { MentionField } from '../components/MentionField';\nimport {\n\tSelectableItem,\n\tSelectableListSection,\n\tSourceGroup,\n} from '../components/SelectableListSection';\nimport { StepSectionHeader } from '../components/StepSectionHeader';\nimport { AGENT_CHAR_LIMITS } from '../constants/charLimits';\nimport { STEP_DEFINITIONS } from '../constants/steps';\nimport { useAgentBuilderContext } from '../context/AgentBuilderContext';\nimport { appTypeLabel, toolSourceLabel } from '../utils/mentionSerialization';\nimport { SOURCE_ICONS } from '../utils/sourceIcons';\n\n/** Source brand glyph for a tool, as a dropdown leadingIcon element. */\nconst toolIconEl = (source: string): JSX.Element | undefined => {\n\tconst ic = SOURCE_ICONS[source];\n\treturn ic\n\t\t? React.createElement(ic.Icon, { width: ic.w, height: ic.h })\n\t\t: undefined;\n};\n\n/** Dropdown option for a tool: icon left of the name, no description. */\nconst toolOption = (t: AgentTool): SingleOption => ({\n\tlabel: t.display_name,\n\tvalue: t.tool_id,\n\tleadingIcon: toolIconEl(t.source ?? 'manifest'),\n});\n\nconst STEP = STEP_DEFINITIONS[2];\n\n/** Drawer state — null when closed; `key` remounts it fresh per open. */\ninterface SubAgentPanelState {\n\tkey: number;\n\ttitle: string;\n\teditingId?: string;\n\tinitial?: SubAgentDraft;\n}\n\nexport const Step3HowItResponds: React.FC = () => {\n\tconst {\n\t\tvalue,\n\t\tpatch,\n\t\tupdateField,\n\t\tremoveReference,\n\t\tavailableTools,\n\t\tavailableSubAgents,\n\t\tavailableModels,\n\t\tapplicationType,\n\t\tinsertMention,\n\t\tonCreateSubAgent,\n\t\tonFetchSubAgent,\n\t\tonUpdateSubAgent,\n\t\tonImproveSubAgent,\n\t\tregisterSubAgentCreator,\n\t} = useAgentBuilderContext();\n\n\tconst [panel, setPanel] = useState<SubAgentPanelState | null>(null);\n\tconst panelKeyRef = useRef(0);\n\t// Sub-agents created / edited in this session, so a chip resolves (and reflects\n\t// a renamed sub-agent) before the consumer refreshes `availableSubAgents`.\n\tconst [createdSubAgents, setCreatedSubAgents] = useState<SubAgentRef[]>([]);\n\t// Created/edited refs take precedence over the consumer-supplied list.\n\tconst subAgentById = new Map<string, SubAgentRef>();\n\tavailableSubAgents.forEach((s) => subAgentById.set(s.id, s));\n\tcreatedSubAgents.forEach((s) => subAgentById.set(s.id, s));\n\tconst knownSubAgents = Array.from(subAgentById.values());\n\n\tconst openCreate = useCallback(() => {\n\t\tpanelKeyRef.current += 1;\n\t\tsetPanel({ key: panelKeyRef.current, title: 'Create sub-agent' });\n\t}, []);\n\n\t// Let the `@` picker's \"Create new\" row open this step's drawer.\n\tuseEffect(() => {\n\t\tif (!onCreateSubAgent) {\n\t\t\treturn;\n\t\t}\n\t\tregisterSubAgentCreator(openCreate);\n\t\treturn () => registerSubAgentCreator(null);\n\t}, [registerSubAgentCreator, openCreate, onCreateSubAgent]);\n\n\tconst openConfigure = useCallback(\n\t\tasync (id: string) => {\n\t\t\tif (!onFetchSubAgent) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst data = await onFetchSubAgent(id);\n\t\t\tpanelKeyRef.current += 1;\n\t\t\tsetPanel({\n\t\t\t\tkey: panelKeyRef.current,\n\t\t\t\ttitle: 'Edit sub-agent',\n\t\t\t\teditingId: id,\n\t\t\t\tinitial: data,\n\t\t\t});\n\t\t},\n\t\t[onFetchSubAgent],\n\t);\n\n\tconst handlePanelSave = useCallback(\n\t\tasync (draft: SubAgentDraft) => {\n\t\t\tif (panel?.editingId) {\n\t\t\t\tif (onUpdateSubAgent) {\n\t\t\t\t\tconst ref = await onUpdateSubAgent(panel.editingId, draft);\n\t\t\t\t\tsetCreatedSubAgents((prev) => [\n\t\t\t\t\t\t...prev.filter((s) => s.id !== ref.id),\n\t\t\t\t\t\tref,\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t} else if (onCreateSubAgent) {\n\t\t\t\tconst ref = await onCreateSubAgent(draft);\n\t\t\t\tsetCreatedSubAgents((prev) => [...prev, ref]);\n\t\t\t\tpatch({ subagents: [...value.subagents, ref.id] });\n\t\t\t\tinsertMention('subagent', ref.id, `sub-agent: ${ref.name}`);\n\t\t\t}\n\t\t\tsetPanel(null);\n\t\t},\n\t\t[\n\t\t\tpanel,\n\t\t\tonUpdateSubAgent,\n\t\t\tonCreateSubAgent,\n\t\t\tpatch,\n\t\t\tvalue.subagents,\n\t\t\tinsertMention,\n\t\t],\n\t);\n\n\tconst toolItems: SelectableItem[] = value.tools\n\t\t.map((id): SelectableItem | null => {\n\t\t\tconst tool = availableTools.find((t) => t.tool_id === id);\n\t\t\treturn tool\n\t\t\t\t? {\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tlabel: tool.display_name,\n\t\t\t\t\t\ticon: SOURCE_ICONS[tool.source ?? 'manifest'],\n\t\t\t\t }\n\t\t\t\t: null;\n\t\t})\n\t\t.filter((x): x is SelectableItem => x !== null);\n\n\t// All tools are offered (even already-added ones) so a tool can be referenced\n\t// again in the text; the chip list below still shows each only once.\n\tconst toolOptions: SingleOption[] = availableTools.map(toolOption);\n\n\t// Group tools by source (Manifest / Shopify / …) for the empty-state buttons.\n\tconst toolSourceGroups: SourceGroup[] = (() => {\n\t\tconst order: string[] = [];\n\t\tconst bySource = new Map<string, SingleOption[]>();\n\t\tavailableTools.forEach((t) => {\n\t\t\tconst src = t.source ?? 'manifest';\n\t\t\tif (!bySource.has(src)) {\n\t\t\t\tbySource.set(src, []);\n\t\t\t\torder.push(src);\n\t\t\t}\n\t\t\tbySource.get(src)?.push(toolOption(t));\n\t\t});\n\t\treturn order.map((src) => ({\n\t\t\tsource: src,\n\t\t\tlabel: toolSourceLabel(src),\n\t\t\toptions: bySource.get(src) ?? [],\n\t\t}));\n\t})();\n\n\tconst subAgentItems: SelectableItem[] = value.subagents\n\t\t.map((id): SelectableItem | null => {\n\t\t\tconst sub = subAgentById.get(id);\n\t\t\treturn sub ? { id, label: sub.name } : null;\n\t\t})\n\t\t.filter((x): x is SelectableItem => x !== null);\n\n\tconst subAgentOptions: SingleOption[] = knownSubAgents.map((s) => ({\n\t\tlabel: s.name,\n\t\tvalue: s.id,\n\t}));\n\n\tconst modelOptions: SingleOption[] = availableModels.map((m) => ({\n\t\tlabel: m.label,\n\t\tvalue: m.value,\n\t\tselected: m.value === value.model,\n\t}));\n\tconst selectedModel = availableModels.find((m) => m.value === value.model);\n\n\treturn (\n\t\t<div className=\"bik-agent-step bik-agent-step--response\">\n\t\t\t<StepSectionHeader title={STEP.title} helper={STEP.helper} />\n\n\t\t\t<Step3Grid>\n\t\t\t\t<Step3Main>\n\t\t\t\t\t<MentionField\n\t\t\t\t\t\tfieldKey=\"instructions\"\n\t\t\t\t\t\tdata-test=\"agent-instructions\"\n\t\t\t\t\t\tlabel=\"Instructions\"\n\t\t\t\t\t\tmaxLength={AGENT_CHAR_LIMITS.instructions}\n\t\t\t\t\t\tplaceholder=\"Write what this agent should do. Type @ to reference a tool or sub-agent.\"\n\t\t\t\t\t\tminHeight=\"200px\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<MentionField\n\t\t\t\t\t\tfieldKey=\"guardrail\"\n\t\t\t\t\t\tdata-test=\"agent-guardrail\"\n\t\t\t\t\t\tlabel=\"Guardrails\"\n\t\t\t\t\t\tmaxLength={AGENT_CHAR_LIMITS.guardrail}\n\t\t\t\t\t\tplaceholder=\"Things this agent must never do. Type @ to reference a tool or sub-agent.\"\n\t\t\t\t\t\tminHeight=\"140px\"\n\t\t\t\t\t/>\n\t\t\t\t</Step3Main>\n\n\t\t\t\t<Step3Side>\n\t\t\t\t\t<SelectableListSection\n\t\t\t\t\t\ttitle=\"Tools\"\n\t\t\t\t\t\thelper=\"Actions this agent can take while responding.\"\n\t\t\t\t\t\tdataTestPrefix=\"agent-tools\"\n\t\t\t\t\t\titems={toolItems}\n\t\t\t\t\t\taddableOptions={toolOptions}\n\t\t\t\t\t\tsourceGroups={toolSourceGroups}\n\t\t\t\t\t\temptyText=\"No tools added yet.\"\n\t\t\t\t\t\tonAdd={(id) => {\n\t\t\t\t\t\t\t// Always drop a chip at the cursor; keep the list deduped.\n\t\t\t\t\t\t\tinsertMention('tool', id);\n\t\t\t\t\t\t\tif (!value.tools.includes(id)) {\n\t\t\t\t\t\t\t\tpatch({ tools: [...value.tools, id] });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonRemove={(id) => removeReference('tool', id)}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<SelectableListSection\n\t\t\t\t\t\ttitle=\"Sub-agents\"\n\t\t\t\t\t\thelper=\"Other agents this agent can hand off the conversation to.\"\n\t\t\t\t\t\tdataTestPrefix=\"agent-subagents\"\n\t\t\t\t\t\titems={subAgentItems}\n\t\t\t\t\t\taddableOptions={subAgentOptions}\n\t\t\t\t\t\temptyText=\"No sub-agents added yet.\"\n\t\t\t\t\t\tonAdd={(id) => {\n\t\t\t\t\t\t\tinsertMention('subagent', id);\n\t\t\t\t\t\t\tif (!value.subagents.includes(id)) {\n\t\t\t\t\t\t\t\tpatch({ subagents: [...value.subagents, id] });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonRemove={(id) => removeReference('subagent', id)}\n\t\t\t\t\t\tonConfigure={onFetchSubAgent ? openConfigure : undefined}\n\t\t\t\t\t\tcreateOption={\n\t\t\t\t\t\t\tonCreateSubAgent\n\t\t\t\t\t\t\t\t? { label: 'Create new', onSelect: openCreate }\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{availableModels.length > 0 && (\n\t\t\t\t\t\t<SideSection>\n\t\t\t\t\t\t\t<TitleSmall color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\tAdvanced settings\n\t\t\t\t\t\t\t</TitleSmall>\n\t\t\t\t\t\t\t<TitleSmall color={COLORS.content.secondary}>\n\t\t\t\t\t\t\t\tSelect AI model\n\t\t\t\t\t\t\t</TitleSmall>\n\t\t\t\t\t\t\t<Dropdown\n\t\t\t\t\t\t\t\tdata-test=\"agent-model\"\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\twidth=\"100%\"\n\t\t\t\t\t\t\t\tplaceHolder=\"Select model\"\n\t\t\t\t\t\t\t\toptions={modelOptions}\n\t\t\t\t\t\t\t\tdefaultOptions={\n\t\t\t\t\t\t\t\t\tselectedModel\n\t\t\t\t\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: selectedModel.label,\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: selectedModel.value,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t ]\n\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonSelect={(opt) => {\n\t\t\t\t\t\t\t\t\tconst single = Array.isArray(opt) ? opt[0] : opt;\n\t\t\t\t\t\t\t\t\tconst v = (single as SingleOption)?.value;\n\t\t\t\t\t\t\t\t\tif (v) {\n\t\t\t\t\t\t\t\t\t\tupdateField('model', v);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</SideSection>\n\t\t\t\t\t)}\n\t\t\t\t</Step3Side>\n\t\t\t</Step3Grid>\n\n\t\t\t{panel && (\n\t\t\t\t<CreateSubAgentPanel\n\t\t\t\t\tkey={panel.key}\n\t\t\t\t\ttitle={panel.title}\n\t\t\t\t\tinitial={panel.initial}\n\t\t\t\t\tavailableTools={availableTools}\n\t\t\t\t\tappLabel={appTypeLabel(applicationType)}\n\t\t\t\t\tonImprove={onImproveSubAgent}\n\t\t\t\t\tonClose={() => setPanel(null)}\n\t\t\t\t\tonSave={handlePanelSave}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n"],"names":["toolIconEl","source","ic","SOURCE_ICONS","React","toolOption","t","STEP","STEP_DEFINITIONS","Step3HowItResponds","value","patch","updateField","removeReference","availableTools","availableSubAgents","availableModels","applicationType","insertMention","onCreateSubAgent","onFetchSubAgent","onUpdateSubAgent","onImproveSubAgent","registerSubAgentCreator","useAgentBuilderContext","panel","setPanel","useState","panelKeyRef","useRef","createdSubAgents","setCreatedSubAgents","subAgentById","s","knownSubAgents","openCreate","useCallback","useEffect","openConfigure","id","data","handlePanelSave","draft","ref","prev","toolItems","tool","x","toolOptions","toolSourceGroups","order","bySource","src","toolSourceLabel","subAgentItems","sub","subAgentOptions","modelOptions","m","selectedModel","jsxs","jsx","StepSectionHeader","Step3Grid","Step3Main","MentionField","AGENT_CHAR_LIMITS","Step3Side","SelectableListSection","SideSection","TitleSmall","COLORS","Dropdown","opt","v","CreateSubAgentPanel","appTypeLabel"],"mappings":"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"}
1
+ {"version":3,"file":"Step3HowItResponds.js","sources":["../../../../../src/components/agent-builder/steps/Step3HowItResponds.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { Dropdown, unwrapDropdownValue } from '@src/components/dropdown';\nimport { SingleOption } from '@src/components/dropdown/type';\nimport { TitleSmall } from '@src/components/TypographyStyle';\nimport { COLORS } from '@src/constants/Theme';\nimport { AgentTool, SubAgentDraft, SubAgentRef } from '../AgentBuilder.model';\nimport {\n\tSideSection,\n\tStep3Grid,\n\tStep3Main,\n\tStep3Side,\n} from '../AgentBuilder.styled';\nimport { CreateSubAgentPanel } from '../components/CreateSubAgentPanel';\nimport { MentionField } from '../components/MentionField';\nimport {\n\tSelectableItem,\n\tSelectableListSection,\n\tSourceGroup,\n} from '../components/SelectableListSection';\nimport { StepSectionHeader } from '../components/StepSectionHeader';\nimport { STEP_DEFINITIONS } from '../constants/steps';\nimport { useAgentBuilderContext } from '../context/AgentBuilderContext';\nimport {\n\tappTypeLabel,\n\tbuildAgentMentionItems,\n\ttoolSourceLabel,\n} from '../utils/mentionSerialization';\nimport { renderSourceIcon, SOURCE_ICONS } from '../utils/sourceIcons';\n\n/** Source brand glyph for a tool, as a dropdown leadingIcon element. */\nconst toolIconEl = (source: string): JSX.Element | undefined =>\n\trenderSourceIcon(SOURCE_ICONS[source]) ?? undefined;\n\n/** Dropdown option for a tool: icon left of the name, no description. */\nconst toolOption = (t: AgentTool): SingleOption => ({\n\tlabel: t.display_name,\n\tvalue: t.tool_id,\n\tleadingIcon: toolIconEl(t.source ?? 'manifest'),\n});\n\nconst STEP = STEP_DEFINITIONS[2];\n\n/** Drawer state — null when closed; `key` remounts it fresh per open. */\ninterface SubAgentPanelState {\n\tkey: number;\n\ttitle: string;\n\teditingId?: string;\n\tinitial?: SubAgentDraft;\n}\n\nexport const Step3HowItResponds: React.FC = () => {\n\tconst {\n\t\tvalue,\n\t\tpatch,\n\t\tupdateField,\n\t\tremoveReference,\n\t\tavailableTools,\n\t\tavailableSubAgents,\n\t\tavailableModels,\n\t\tapplicationType,\n\t\tcharLimits,\n\t\tinsertMention,\n\t\tonCreateSubAgent,\n\t\tonFetchSubAgent,\n\t\tonUpdateSubAgent,\n\t\tonImproveSubAgent,\n\t\tregisterSubAgentCreator,\n\t} = useAgentBuilderContext();\n\n\tconst [panel, setPanel] = useState<SubAgentPanelState | null>(null);\n\tconst panelKeyRef = useRef(0);\n\t// Sub-agents created / edited in this session, so a chip resolves (and reflects\n\t// a renamed sub-agent) before the consumer refreshes `availableSubAgents`.\n\tconst [createdSubAgents, setCreatedSubAgents] = useState<SubAgentRef[]>([]);\n\t// Created/edited refs take precedence over the consumer-supplied list.\n\tconst subAgentById = new Map<string, SubAgentRef>();\n\tavailableSubAgents.forEach((s) => subAgentById.set(s.id, s));\n\tcreatedSubAgents.forEach((s) => subAgentById.set(s.id, s));\n\tconst knownSubAgents = Array.from(subAgentById.values());\n\n\tconst openCreate = useCallback(() => {\n\t\tpanelKeyRef.current += 1;\n\t\tsetPanel({ key: panelKeyRef.current, title: 'Create sub-agent' });\n\t}, []);\n\n\t// Let the `@` picker's \"Create new\" row open this step's drawer.\n\tuseEffect(() => {\n\t\tif (!onCreateSubAgent) {\n\t\t\treturn;\n\t\t}\n\t\tregisterSubAgentCreator(openCreate);\n\t\treturn () => registerSubAgentCreator(null);\n\t}, [registerSubAgentCreator, openCreate, onCreateSubAgent]);\n\n\tconst openConfigure = useCallback(\n\t\tasync (id: string) => {\n\t\t\tif (!onFetchSubAgent) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst data = await onFetchSubAgent(id);\n\t\t\tpanelKeyRef.current += 1;\n\t\t\tsetPanel({\n\t\t\t\tkey: panelKeyRef.current,\n\t\t\t\ttitle: 'Edit sub-agent',\n\t\t\t\teditingId: id,\n\t\t\t\tinitial: data,\n\t\t\t});\n\t\t},\n\t\t[onFetchSubAgent],\n\t);\n\n\tconst handlePanelSave = useCallback(\n\t\tasync (draft: SubAgentDraft) => {\n\t\t\tif (panel?.editingId) {\n\t\t\t\tif (onUpdateSubAgent) {\n\t\t\t\t\tconst ref = await onUpdateSubAgent(panel.editingId, draft);\n\t\t\t\t\tsetCreatedSubAgents((prev) => [\n\t\t\t\t\t\t...prev.filter((s) => s.id !== ref.id),\n\t\t\t\t\t\tref,\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t} else if (onCreateSubAgent) {\n\t\t\t\tconst ref = await onCreateSubAgent(draft);\n\t\t\t\tsetCreatedSubAgents((prev) => [...prev, ref]);\n\t\t\t\tpatch({ subagents: [...value.subagents, ref.id] });\n\t\t\t\tinsertMention('subagent', ref.id, `sub-agent: ${ref.name}`);\n\t\t\t}\n\t\t\tsetPanel(null);\n\t\t},\n\t\t[\n\t\t\tpanel,\n\t\t\tonUpdateSubAgent,\n\t\t\tonCreateSubAgent,\n\t\t\tpatch,\n\t\t\tvalue.subagents,\n\t\t\tinsertMention,\n\t\t],\n\t);\n\n\tconst toolItems: SelectableItem[] = value.tools\n\t\t.map((id): SelectableItem | null => {\n\t\t\tconst tool = availableTools.find((t) => t.tool_id === id);\n\t\t\treturn tool\n\t\t\t\t? {\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tlabel: tool.display_name,\n\t\t\t\t\t\ticon: SOURCE_ICONS[tool.source ?? 'manifest'],\n\t\t\t\t }\n\t\t\t\t: null;\n\t\t})\n\t\t.filter((x): x is SelectableItem => x !== null);\n\n\t// All tools are offered (even already-added ones) so a tool can be referenced\n\t// again in the text; the chip list below still shows each only once.\n\tconst toolOptions: SingleOption[] = availableTools.map(toolOption);\n\n\t// Group tools by source (Manifest / Shopify / …) for the empty-state buttons.\n\tconst toolSourceGroups: SourceGroup[] = (() => {\n\t\tconst order: string[] = [];\n\t\tconst bySource = new Map<string, SingleOption[]>();\n\t\tavailableTools.forEach((t) => {\n\t\t\tconst src = t.source ?? 'manifest';\n\t\t\tif (!bySource.has(src)) {\n\t\t\t\tbySource.set(src, []);\n\t\t\t\torder.push(src);\n\t\t\t}\n\t\t\tbySource.get(src)?.push(toolOption(t));\n\t\t});\n\t\treturn order.map((src) => ({\n\t\t\tsource: src,\n\t\t\tlabel: toolSourceLabel(src),\n\t\t\toptions: bySource.get(src) ?? [],\n\t\t}));\n\t})();\n\n\tconst subAgentItems: SelectableItem[] = value.subagents\n\t\t.map((id): SelectableItem | null => {\n\t\t\tconst sub = subAgentById.get(id);\n\t\t\treturn sub ? { id, label: sub.name } : null;\n\t\t})\n\t\t.filter((x): x is SelectableItem => x !== null);\n\n\tconst subAgentOptions: SingleOption[] = knownSubAgents.map((s) => ({\n\t\tlabel: s.name,\n\t\tvalue: s.id,\n\t}));\n\n\t// Per-section `@`-picker items so the header \"+\" opens the same reference\n\t// picker as the Instructions editor, drilled straight into this section's\n\t// category (tools OR sub-agents).\n\tconst appLabel = appTypeLabel(applicationType);\n\tconst toolMentionItems = buildAgentMentionItems(availableTools, [], appLabel);\n\tconst subAgentMentionItems = buildAgentMentionItems(\n\t\t[],\n\t\tknownSubAgents,\n\t\tappLabel,\n\t);\n\n\tconst modelOptions: SingleOption[] = availableModels.map((m) => ({\n\t\tlabel: m.label,\n\t\tvalue: m.value,\n\t\tselected: m.value === value.model,\n\t}));\n\tconst selectedModel = availableModels.find((m) => m.value === value.model);\n\n\treturn (\n\t\t<div className=\"bik-agent-step bik-agent-step--response\">\n\t\t\t<StepSectionHeader title={STEP.title} helper={STEP.helper} />\n\n\t\t\t<Step3Grid>\n\t\t\t\t<Step3Main>\n\t\t\t\t\t<MentionField\n\t\t\t\t\t\tfieldKey=\"instructions\"\n\t\t\t\t\t\tdata-test=\"agent-instructions\"\n\t\t\t\t\t\tlabel=\"Instructions\"\n\t\t\t\t\t\tmaxLength={charLimits.instructions}\n\t\t\t\t\t\tplaceholder=\"Write what this agent should do. Type @ to reference a tool or sub-agent.\"\n\t\t\t\t\t\tminHeight=\"200px\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<MentionField\n\t\t\t\t\t\tfieldKey=\"guardrail\"\n\t\t\t\t\t\tdata-test=\"agent-guardrail\"\n\t\t\t\t\t\tlabel=\"Guardrails\"\n\t\t\t\t\t\tmaxLength={charLimits.guardrail}\n\t\t\t\t\t\tplaceholder=\"Things this agent must never do. Type @ to reference a tool or sub-agent.\"\n\t\t\t\t\t\tminHeight=\"140px\"\n\t\t\t\t\t/>\n\t\t\t\t</Step3Main>\n\n\t\t\t\t<Step3Side>\n\t\t\t\t\t<SelectableListSection\n\t\t\t\t\t\ttitle=\"Tools\"\n\t\t\t\t\t\thelper=\"Actions this agent can take while responding.\"\n\t\t\t\t\t\tdataTestPrefix=\"agent-tools\"\n\t\t\t\t\t\titems={toolItems}\n\t\t\t\t\t\taddableOptions={toolOptions}\n\t\t\t\t\t\tsourceGroups={toolSourceGroups}\n\t\t\t\t\t\tmentionItems={toolMentionItems}\n\t\t\t\t\t\temptyText=\"No tools added yet.\"\n\t\t\t\t\t\tonAdd={(id) => {\n\t\t\t\t\t\t\t// Always drop a chip at the cursor; keep the list deduped.\n\t\t\t\t\t\t\tinsertMention('tool', id);\n\t\t\t\t\t\t\tif (!value.tools.includes(id)) {\n\t\t\t\t\t\t\t\tpatch({ tools: [...value.tools, id] });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonRemove={(id) => removeReference('tool', id)}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<SelectableListSection\n\t\t\t\t\t\ttitle=\"Sub-agents\"\n\t\t\t\t\t\thelper=\"Other agents this agent can hand off the conversation to.\"\n\t\t\t\t\t\tdataTestPrefix=\"agent-subagents\"\n\t\t\t\t\t\titems={subAgentItems}\n\t\t\t\t\t\taddableOptions={subAgentOptions}\n\t\t\t\t\t\tmentionItems={subAgentMentionItems}\n\t\t\t\t\t\temptyText=\"No sub-agents added yet.\"\n\t\t\t\t\t\tonAdd={(id) => {\n\t\t\t\t\t\t\tinsertMention('subagent', id);\n\t\t\t\t\t\t\tif (!value.subagents.includes(id)) {\n\t\t\t\t\t\t\t\tpatch({ subagents: [...value.subagents, id] });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonRemove={(id) => removeReference('subagent', id)}\n\t\t\t\t\t\tonConfigure={onFetchSubAgent ? openConfigure : undefined}\n\t\t\t\t\t\tcreateOption={\n\t\t\t\t\t\t\tonCreateSubAgent\n\t\t\t\t\t\t\t\t? { label: 'Create new', onSelect: openCreate }\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{availableModels.length > 0 && (\n\t\t\t\t\t\t<SideSection>\n\t\t\t\t\t\t\t<TitleSmall color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\tAdvanced settings\n\t\t\t\t\t\t\t</TitleSmall>\n\t\t\t\t\t\t\t<TitleSmall color={COLORS.content.secondary}>\n\t\t\t\t\t\t\t\tSelect AI model\n\t\t\t\t\t\t\t</TitleSmall>\n\t\t\t\t\t\t\t<Dropdown\n\t\t\t\t\t\t\t\tdata-test=\"agent-model\"\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\twidth=\"100%\"\n\t\t\t\t\t\t\t\tplaceHolder=\"Select model\"\n\t\t\t\t\t\t\t\toptions={modelOptions}\n\t\t\t\t\t\t\t\tdefaultOptions={\n\t\t\t\t\t\t\t\t\tselectedModel\n\t\t\t\t\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: selectedModel.label,\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: selectedModel.value,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t ]\n\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonSelect={(opt) => {\n\t\t\t\t\t\t\t\t\tconst v = unwrapDropdownValue(opt);\n\t\t\t\t\t\t\t\t\tif (v) {\n\t\t\t\t\t\t\t\t\t\tupdateField('model', v);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</SideSection>\n\t\t\t\t\t)}\n\t\t\t\t</Step3Side>\n\t\t\t</Step3Grid>\n\n\t\t\t{panel && (\n\t\t\t\t<CreateSubAgentPanel\n\t\t\t\t\tkey={panel.key}\n\t\t\t\t\ttitle={panel.title}\n\t\t\t\t\tinitial={panel.initial}\n\t\t\t\t\tavailableTools={availableTools}\n\t\t\t\t\tappLabel={appTypeLabel(applicationType)}\n\t\t\t\t\tcharLimits={charLimits}\n\t\t\t\t\tonImprove={onImproveSubAgent}\n\t\t\t\t\tonClose={() => setPanel(null)}\n\t\t\t\t\tonSave={handlePanelSave}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n"],"names":["toolIconEl","source","renderSourceIcon","SOURCE_ICONS","toolOption","t","STEP","STEP_DEFINITIONS","Step3HowItResponds","value","patch","updateField","removeReference","availableTools","availableSubAgents","availableModels","applicationType","charLimits","insertMention","onCreateSubAgent","onFetchSubAgent","onUpdateSubAgent","onImproveSubAgent","registerSubAgentCreator","useAgentBuilderContext","panel","setPanel","useState","panelKeyRef","useRef","createdSubAgents","setCreatedSubAgents","subAgentById","s","knownSubAgents","openCreate","useCallback","useEffect","openConfigure","id","data","handlePanelSave","draft","ref","prev","toolItems","tool","x","toolOptions","toolSourceGroups","order","bySource","src","toolSourceLabel","subAgentItems","sub","subAgentOptions","appLabel","appTypeLabel","toolMentionItems","buildAgentMentionItems","subAgentMentionItems","modelOptions","m","selectedModel","jsxs","jsx","StepSectionHeader","Step3Grid","Step3Main","MentionField","Step3Side","SelectableListSection","SideSection","TitleSmall","COLORS","Dropdown","opt","v","unwrapDropdownValue","CreateSubAgentPanel"],"mappings":"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"}
@@ -1,33 +1,32 @@
1
- import { jsxs as o, jsx as e } from "react/jsx-runtime";
1
+ import { jsxs as n, jsx as e } from "react/jsx-runtime";
2
2
  import { RadioButton as d } from "../../radioButton/RadioButton.js";
3
3
  import { TitleSmall as a, BodyCaption as l } from "../../TypographyStyle.js";
4
- import { COLORS as n } from "../../../constants/Theme.js";
5
- import { FieldBlock as f, CardRow as u, RadioCard as s, RadioCardText as h } from "../AgentBuilder.styled.js";
6
- import { AiTextArea as v } from "../components/AiTextArea.js";
7
- import { StepSectionHeader as g } from "../components/StepSectionHeader.js";
8
- import { AGENT_CHAR_LIMITS as C } from "../constants/charLimits.js";
4
+ import { COLORS as o } from "../../../constants/Theme.js";
5
+ import { FieldBlock as u, CardRow as v, RadioCard as s, RadioCardText as h } from "../AgentBuilder.styled.js";
6
+ import { AiTextArea as g } from "../components/AiTextArea.js";
7
+ import { StepSectionHeader as C } from "../components/StepSectionHeader.js";
9
8
  import { STEP_DEFINITIONS as S } from "../constants/steps.js";
10
- import { useAgentBuilderContext as A } from "../context/AgentBuilderContext.js";
11
- const m = S[3], O = () => {
12
- const { value: p, patch: c } = A(), { handover: t } = p, r = (i) => c({ handover: { ...t, method: i } });
13
- return /* @__PURE__ */ o("div", { className: "bik-agent-step bik-agent-step--handover", children: [
14
- /* @__PURE__ */ e(g, { title: m.title, helper: m.helper }),
9
+ import { useAgentBuilderContext as x } from "../context/AgentBuilderContext.js";
10
+ const m = S[3], _ = () => {
11
+ const { value: p, patch: c, charLimits: f } = x(), { handover: t } = p, r = (i) => c({ handover: { ...t, method: i } });
12
+ return /* @__PURE__ */ n("div", { className: "bik-agent-step bik-agent-step--handover", children: [
13
+ /* @__PURE__ */ e(C, { title: m.title, helper: m.helper }),
15
14
  /* @__PURE__ */ e(
16
- v,
15
+ g,
17
16
  {
18
17
  "data-test": "handover-when",
19
18
  label: "Handover when",
20
19
  value: t.when,
21
20
  onChange: (i) => c({ handover: { ...t, when: i } }),
22
- maxLength: C.handoverWhen,
21
+ maxLength: f.handoverWhen,
23
22
  placeholder: "e.g. Hand over if the customer is angry or requests a human agent.",
24
23
  minHeight: "120px"
25
24
  }
26
25
  ),
27
- /* @__PURE__ */ o(f, { children: [
28
- /* @__PURE__ */ e(a, { color: n.content.primary, children: "Handover method" }),
29
- /* @__PURE__ */ o(u, { children: [
30
- /* @__PURE__ */ o(
26
+ /* @__PURE__ */ n(u, { children: [
27
+ /* @__PURE__ */ e(a, { color: o.content.primary, children: "Handover method" }),
28
+ /* @__PURE__ */ n(v, { children: [
29
+ /* @__PURE__ */ n(
31
30
  s,
32
31
  {
33
32
  "data-test": "handover-method-default",
@@ -40,17 +39,17 @@ const m = S[3], O = () => {
40
39
  isActive: t.method === "default",
41
40
  onValueChange: () => r("default"),
42
41
  skipSelectingOff: !0,
43
- activeColor: n.content.brand
42
+ activeColor: o.content.brand
44
43
  }
45
44
  ),
46
- /* @__PURE__ */ o(h, { children: [
47
- /* @__PURE__ */ e(a, { color: n.content.primary, children: "Use default settings" }),
48
- /* @__PURE__ */ e(l, { color: n.content.secondary, children: "Defined in Customize > Agent handover" })
45
+ /* @__PURE__ */ n(h, { children: [
46
+ /* @__PURE__ */ e(a, { color: o.content.primary, children: "Use default settings" }),
47
+ /* @__PURE__ */ e(l, { color: o.content.secondary, children: "Defined in Customize > Agent handover" })
49
48
  ] })
50
49
  ]
51
50
  }
52
51
  ),
53
- /* @__PURE__ */ o(
52
+ /* @__PURE__ */ n(
54
53
  s,
55
54
  {
56
55
  "data-test": "handover-method-specific",
@@ -63,12 +62,12 @@ const m = S[3], O = () => {
63
62
  isActive: t.method === "specific_channels",
64
63
  onValueChange: () => r("specific_channels"),
65
64
  skipSelectingOff: !0,
66
- activeColor: n.content.brand
65
+ activeColor: o.content.brand
67
66
  }
68
67
  ),
69
- /* @__PURE__ */ o(h, { children: [
70
- /* @__PURE__ */ e(a, { color: n.content.primary, children: "Choose specific channels" }),
71
- /* @__PURE__ */ e(l, { color: n.content.secondary, children: "Always hands over regardless of business hours." })
68
+ /* @__PURE__ */ n(h, { children: [
69
+ /* @__PURE__ */ e(a, { color: o.content.primary, children: "Choose specific channels" }),
70
+ /* @__PURE__ */ e(l, { color: o.content.secondary, children: "Always hands over regardless of business hours." })
72
71
  ] })
73
72
  ]
74
73
  }
@@ -78,6 +77,6 @@ const m = S[3], O = () => {
78
77
  ] });
79
78
  };
80
79
  export {
81
- O as Step4HandoverRules
80
+ _ as Step4HandoverRules
82
81
  };
83
82
  //# sourceMappingURL=Step4HandoverRules.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Step4HandoverRules.js","sources":["../../../../../src/components/agent-builder/steps/Step4HandoverRules.tsx"],"sourcesContent":["import React from 'react';\nimport { RadioButton } from '@src/components/radioButton/RadioButton';\nimport { BodyCaption, TitleSmall } from '@src/components/TypographyStyle';\nimport { COLORS } from '@src/constants/Theme';\nimport { HandoverMethod } from '../AgentBuilder.model';\nimport {\n\tCardRow,\n\tFieldBlock,\n\tRadioCard,\n\tRadioCardText,\n} from '../AgentBuilder.styled';\nimport { AiTextArea } from '../components/AiTextArea';\nimport { StepSectionHeader } from '../components/StepSectionHeader';\nimport { AGENT_CHAR_LIMITS } from '../constants/charLimits';\nimport { STEP_DEFINITIONS } from '../constants/steps';\nimport { useAgentBuilderContext } from '../context/AgentBuilderContext';\n\nconst STEP = STEP_DEFINITIONS[3];\n\nexport const Step4HandoverRules: React.FC = () => {\n\tconst { value, patch } = useAgentBuilderContext();\n\tconst { handover } = value;\n\n\tconst setMethod = (method: HandoverMethod) =>\n\t\tpatch({ handover: { ...handover, method } });\n\n\treturn (\n\t\t<div className=\"bik-agent-step bik-agent-step--handover\">\n\t\t\t<StepSectionHeader title={STEP.title} helper={STEP.helper} />\n\n\t\t\t<AiTextArea\n\t\t\t\tdata-test=\"handover-when\"\n\t\t\t\tlabel=\"Handover when\"\n\t\t\t\tvalue={handover.when}\n\t\t\t\tonChange={(text) => patch({ handover: { ...handover, when: text } })}\n\t\t\t\tmaxLength={AGENT_CHAR_LIMITS.handoverWhen}\n\t\t\t\tplaceholder=\"e.g. Hand over if the customer is angry or requests a human agent.\"\n\t\t\t\tminHeight=\"120px\"\n\t\t\t/>\n\n\t\t\t<FieldBlock>\n\t\t\t\t<TitleSmall color={COLORS.content.primary}>Handover method</TitleSmall>\n\t\t\t\t<CardRow>\n\t\t\t\t\t<RadioCard\n\t\t\t\t\t\tdata-test=\"handover-method-default\"\n\t\t\t\t\t\tselected={handover.method === 'default'}\n\t\t\t\t\t\tonClick={() => setMethod('default')}\n\t\t\t\t\t>\n\t\t\t\t\t\t<RadioButton\n\t\t\t\t\t\t\tisActive={handover.method === 'default'}\n\t\t\t\t\t\t\tonValueChange={() => setMethod('default')}\n\t\t\t\t\t\t\tskipSelectingOff\n\t\t\t\t\t\t\tactiveColor={COLORS.content.brand}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<RadioCardText>\n\t\t\t\t\t\t\t<TitleSmall color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\tUse default settings\n\t\t\t\t\t\t\t</TitleSmall>\n\t\t\t\t\t\t\t<BodyCaption color={COLORS.content.secondary}>\n\t\t\t\t\t\t\t\tDefined in Customize &gt; Agent handover\n\t\t\t\t\t\t\t</BodyCaption>\n\t\t\t\t\t\t</RadioCardText>\n\t\t\t\t\t</RadioCard>\n\n\t\t\t\t\t<RadioCard\n\t\t\t\t\t\tdata-test=\"handover-method-specific\"\n\t\t\t\t\t\tselected={handover.method === 'specific_channels'}\n\t\t\t\t\t\tonClick={() => setMethod('specific_channels')}\n\t\t\t\t\t>\n\t\t\t\t\t\t<RadioButton\n\t\t\t\t\t\t\tisActive={handover.method === 'specific_channels'}\n\t\t\t\t\t\t\tonValueChange={() => setMethod('specific_channels')}\n\t\t\t\t\t\t\tskipSelectingOff\n\t\t\t\t\t\t\tactiveColor={COLORS.content.brand}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<RadioCardText>\n\t\t\t\t\t\t\t<TitleSmall color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\tChoose specific channels\n\t\t\t\t\t\t\t</TitleSmall>\n\t\t\t\t\t\t\t<BodyCaption color={COLORS.content.secondary}>\n\t\t\t\t\t\t\t\tAlways hands over regardless of business hours.\n\t\t\t\t\t\t\t</BodyCaption>\n\t\t\t\t\t\t</RadioCardText>\n\t\t\t\t\t</RadioCard>\n\t\t\t\t</CardRow>\n\t\t\t</FieldBlock>\n\t\t</div>\n\t);\n};\n"],"names":["STEP","STEP_DEFINITIONS","Step4HandoverRules","value","patch","useAgentBuilderContext","handover","setMethod","method","jsxs","jsx","StepSectionHeader","AiTextArea","text","AGENT_CHAR_LIMITS","FieldBlock","TitleSmall","COLORS","CardRow","RadioCard","RadioButton","RadioCardText","BodyCaption"],"mappings":";;;;;;;;;;AAiBA,MAAMA,IAAOC,EAAiB,CAAC,GAElBC,IAA+B,MAAM;AACjD,QAAM,EAAE,OAAAC,GAAO,OAAAC,EAAA,IAAUC,EAAA,GACnB,EAAE,UAAAC,MAAaH,GAEfI,IAAY,CAACC,MAClBJ,EAAM,EAAE,UAAU,EAAE,GAAGE,GAAU,QAAAE,EAAA,GAAU;AAE5C,SACC,gBAAAC,EAAC,OAAA,EAAI,WAAU,2CACd,UAAA;AAAA,IAAA,gBAAAC,EAACC,KAAkB,OAAOX,EAAK,OAAO,QAAQA,EAAK,QAAQ;AAAA,IAE3D,gBAAAU;AAAA,MAACE;AAAA,MAAA;AAAA,QACA,aAAU;AAAA,QACV,OAAM;AAAA,QACN,OAAON,EAAS;AAAA,QAChB,UAAU,CAACO,MAAST,EAAM,EAAE,UAAU,EAAE,GAAGE,GAAU,MAAMO,EAAA,GAAQ;AAAA,QACnE,WAAWC,EAAkB;AAAA,QAC7B,aAAY;AAAA,QACZ,WAAU;AAAA,MAAA;AAAA,IAAA;AAAA,sBAGVC,GAAA,EACA,UAAA;AAAA,MAAA,gBAAAL,EAACM,GAAA,EAAW,OAAOC,EAAO,QAAQ,SAAS,UAAA,mBAAe;AAAA,wBACzDC,GAAA,EACA,UAAA;AAAA,QAAA,gBAAAT;AAAA,UAACU;AAAA,UAAA;AAAA,YACA,aAAU;AAAA,YACV,UAAUb,EAAS,WAAW;AAAA,YAC9B,SAAS,MAAMC,EAAU,SAAS;AAAA,YAElC,UAAA;AAAA,cAAA,gBAAAG;AAAA,gBAACU;AAAA,gBAAA;AAAA,kBACA,UAAUd,EAAS,WAAW;AAAA,kBAC9B,eAAe,MAAMC,EAAU,SAAS;AAAA,kBACxC,kBAAgB;AAAA,kBAChB,aAAaU,EAAO,QAAQ;AAAA,gBAAA;AAAA,cAAA;AAAA,gCAE5BI,GAAA,EACA,UAAA;AAAA,gBAAA,gBAAAX,EAACM,GAAA,EAAW,OAAOC,EAAO,QAAQ,SAAS,UAAA,wBAE3C;AAAA,kCACCK,GAAA,EAAY,OAAOL,EAAO,QAAQ,WAAW,UAAA,wCAAA,CAE9C;AAAA,cAAA,EAAA,CACD;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAGD,gBAAAR;AAAA,UAACU;AAAA,UAAA;AAAA,YACA,aAAU;AAAA,YACV,UAAUb,EAAS,WAAW;AAAA,YAC9B,SAAS,MAAMC,EAAU,mBAAmB;AAAA,YAE5C,UAAA;AAAA,cAAA,gBAAAG;AAAA,gBAACU;AAAA,gBAAA;AAAA,kBACA,UAAUd,EAAS,WAAW;AAAA,kBAC9B,eAAe,MAAMC,EAAU,mBAAmB;AAAA,kBAClD,kBAAgB;AAAA,kBAChB,aAAaU,EAAO,QAAQ;AAAA,gBAAA;AAAA,cAAA;AAAA,gCAE5BI,GAAA,EACA,UAAA;AAAA,gBAAA,gBAAAX,EAACM,GAAA,EAAW,OAAOC,EAAO,QAAQ,SAAS,UAAA,4BAE3C;AAAA,kCACCK,GAAA,EAAY,OAAOL,EAAO,QAAQ,WAAW,UAAA,kDAAA,CAE9C;AAAA,cAAA,EAAA,CACD;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MACD,EAAA,CACD;AAAA,IAAA,EAAA,CACD;AAAA,EAAA,GACD;AAEF;"}
1
+ {"version":3,"file":"Step4HandoverRules.js","sources":["../../../../../src/components/agent-builder/steps/Step4HandoverRules.tsx"],"sourcesContent":["import React from 'react';\nimport { RadioButton } from '@src/components/radioButton/RadioButton';\nimport { BodyCaption, TitleSmall } from '@src/components/TypographyStyle';\nimport { COLORS } from '@src/constants/Theme';\nimport { HandoverMethod } from '../AgentBuilder.model';\nimport {\n\tCardRow,\n\tFieldBlock,\n\tRadioCard,\n\tRadioCardText,\n} from '../AgentBuilder.styled';\nimport { AiTextArea } from '../components/AiTextArea';\nimport { StepSectionHeader } from '../components/StepSectionHeader';\nimport { STEP_DEFINITIONS } from '../constants/steps';\nimport { useAgentBuilderContext } from '../context/AgentBuilderContext';\n\nconst STEP = STEP_DEFINITIONS[3];\n\nexport const Step4HandoverRules: React.FC = () => {\n\tconst { value, patch, charLimits } = useAgentBuilderContext();\n\tconst { handover } = value;\n\n\tconst setMethod = (method: HandoverMethod) =>\n\t\tpatch({ handover: { ...handover, method } });\n\n\treturn (\n\t\t<div className=\"bik-agent-step bik-agent-step--handover\">\n\t\t\t<StepSectionHeader title={STEP.title} helper={STEP.helper} />\n\n\t\t\t<AiTextArea\n\t\t\t\tdata-test=\"handover-when\"\n\t\t\t\tlabel=\"Handover when\"\n\t\t\t\tvalue={handover.when}\n\t\t\t\tonChange={(text) => patch({ handover: { ...handover, when: text } })}\n\t\t\t\tmaxLength={charLimits.handoverWhen}\n\t\t\t\tplaceholder=\"e.g. Hand over if the customer is angry or requests a human agent.\"\n\t\t\t\tminHeight=\"120px\"\n\t\t\t/>\n\n\t\t\t<FieldBlock>\n\t\t\t\t<TitleSmall color={COLORS.content.primary}>Handover method</TitleSmall>\n\t\t\t\t<CardRow>\n\t\t\t\t\t<RadioCard\n\t\t\t\t\t\tdata-test=\"handover-method-default\"\n\t\t\t\t\t\tselected={handover.method === 'default'}\n\t\t\t\t\t\tonClick={() => setMethod('default')}\n\t\t\t\t\t>\n\t\t\t\t\t\t<RadioButton\n\t\t\t\t\t\t\tisActive={handover.method === 'default'}\n\t\t\t\t\t\t\tonValueChange={() => setMethod('default')}\n\t\t\t\t\t\t\tskipSelectingOff\n\t\t\t\t\t\t\tactiveColor={COLORS.content.brand}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<RadioCardText>\n\t\t\t\t\t\t\t<TitleSmall color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\tUse default settings\n\t\t\t\t\t\t\t</TitleSmall>\n\t\t\t\t\t\t\t<BodyCaption color={COLORS.content.secondary}>\n\t\t\t\t\t\t\t\tDefined in Customize &gt; Agent handover\n\t\t\t\t\t\t\t</BodyCaption>\n\t\t\t\t\t\t</RadioCardText>\n\t\t\t\t\t</RadioCard>\n\n\t\t\t\t\t<RadioCard\n\t\t\t\t\t\tdata-test=\"handover-method-specific\"\n\t\t\t\t\t\tselected={handover.method === 'specific_channels'}\n\t\t\t\t\t\tonClick={() => setMethod('specific_channels')}\n\t\t\t\t\t>\n\t\t\t\t\t\t<RadioButton\n\t\t\t\t\t\t\tisActive={handover.method === 'specific_channels'}\n\t\t\t\t\t\t\tonValueChange={() => setMethod('specific_channels')}\n\t\t\t\t\t\t\tskipSelectingOff\n\t\t\t\t\t\t\tactiveColor={COLORS.content.brand}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<RadioCardText>\n\t\t\t\t\t\t\t<TitleSmall color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\tChoose specific channels\n\t\t\t\t\t\t\t</TitleSmall>\n\t\t\t\t\t\t\t<BodyCaption color={COLORS.content.secondary}>\n\t\t\t\t\t\t\t\tAlways hands over regardless of business hours.\n\t\t\t\t\t\t\t</BodyCaption>\n\t\t\t\t\t\t</RadioCardText>\n\t\t\t\t\t</RadioCard>\n\t\t\t\t</CardRow>\n\t\t\t</FieldBlock>\n\t\t</div>\n\t);\n};\n"],"names":["STEP","STEP_DEFINITIONS","Step4HandoverRules","value","patch","charLimits","useAgentBuilderContext","handover","setMethod","method","jsxs","jsx","StepSectionHeader","AiTextArea","text","FieldBlock","TitleSmall","COLORS","CardRow","RadioCard","RadioButton","RadioCardText","BodyCaption"],"mappings":";;;;;;;;;AAgBA,MAAMA,IAAOC,EAAiB,CAAC,GAElBC,IAA+B,MAAM;AACjD,QAAM,EAAE,OAAAC,GAAO,OAAAC,GAAO,YAAAC,EAAA,IAAeC,EAAA,GAC/B,EAAE,UAAAC,MAAaJ,GAEfK,IAAY,CAACC,MAClBL,EAAM,EAAE,UAAU,EAAE,GAAGG,GAAU,QAAAE,EAAA,GAAU;AAE5C,SACC,gBAAAC,EAAC,OAAA,EAAI,WAAU,2CACd,UAAA;AAAA,IAAA,gBAAAC,EAACC,KAAkB,OAAOZ,EAAK,OAAO,QAAQA,EAAK,QAAQ;AAAA,IAE3D,gBAAAW;AAAA,MAACE;AAAA,MAAA;AAAA,QACA,aAAU;AAAA,QACV,OAAM;AAAA,QACN,OAAON,EAAS;AAAA,QAChB,UAAU,CAACO,MAASV,EAAM,EAAE,UAAU,EAAE,GAAGG,GAAU,MAAMO,EAAA,GAAQ;AAAA,QACnE,WAAWT,EAAW;AAAA,QACtB,aAAY;AAAA,QACZ,WAAU;AAAA,MAAA;AAAA,IAAA;AAAA,sBAGVU,GAAA,EACA,UAAA;AAAA,MAAA,gBAAAJ,EAACK,GAAA,EAAW,OAAOC,EAAO,QAAQ,SAAS,UAAA,mBAAe;AAAA,wBACzDC,GAAA,EACA,UAAA;AAAA,QAAA,gBAAAR;AAAA,UAACS;AAAA,UAAA;AAAA,YACA,aAAU;AAAA,YACV,UAAUZ,EAAS,WAAW;AAAA,YAC9B,SAAS,MAAMC,EAAU,SAAS;AAAA,YAElC,UAAA;AAAA,cAAA,gBAAAG;AAAA,gBAACS;AAAA,gBAAA;AAAA,kBACA,UAAUb,EAAS,WAAW;AAAA,kBAC9B,eAAe,MAAMC,EAAU,SAAS;AAAA,kBACxC,kBAAgB;AAAA,kBAChB,aAAaS,EAAO,QAAQ;AAAA,gBAAA;AAAA,cAAA;AAAA,gCAE5BI,GAAA,EACA,UAAA;AAAA,gBAAA,gBAAAV,EAACK,GAAA,EAAW,OAAOC,EAAO,QAAQ,SAAS,UAAA,wBAE3C;AAAA,kCACCK,GAAA,EAAY,OAAOL,EAAO,QAAQ,WAAW,UAAA,wCAAA,CAE9C;AAAA,cAAA,EAAA,CACD;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAGD,gBAAAP;AAAA,UAACS;AAAA,UAAA;AAAA,YACA,aAAU;AAAA,YACV,UAAUZ,EAAS,WAAW;AAAA,YAC9B,SAAS,MAAMC,EAAU,mBAAmB;AAAA,YAE5C,UAAA;AAAA,cAAA,gBAAAG;AAAA,gBAACS;AAAA,gBAAA;AAAA,kBACA,UAAUb,EAAS,WAAW;AAAA,kBAC9B,eAAe,MAAMC,EAAU,mBAAmB;AAAA,kBAClD,kBAAgB;AAAA,kBAChB,aAAaS,EAAO,QAAQ;AAAA,gBAAA;AAAA,cAAA;AAAA,gCAE5BI,GAAA,EACA,UAAA;AAAA,gBAAA,gBAAAV,EAACK,GAAA,EAAW,OAAOC,EAAO,QAAQ,SAAS,UAAA,4BAE3C;AAAA,kCACCK,GAAA,EAAY,OAAOL,EAAO,QAAQ,WAAW,UAAA,kDAAA,CAE9C;AAAA,cAAA,EAAA,CACD;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MACD,EAAA,CACD;AAAA,IAAA,EAAA,CACD;AAAA,EAAA,GACD;AAEF;"}
@@ -8,3 +8,9 @@ export interface SourceIcon {
8
8
  }
9
9
  /** Per-source brand glyph — shared by the `@` picker and the Tools source buttons. */
10
10
  export declare const SOURCE_ICONS: Record<string, SourceIcon>;
11
+ /**
12
+ * Render a {@link SourceIcon} at its own aspect ratio. `sizeDelta` nudges both
13
+ * dimensions (e.g. `-4` for the smaller source-button glyph). Returns `null` when
14
+ * no icon is supplied, so callers can drop their own `icon &&` guard.
15
+ */
16
+ export declare const renderSourceIcon: (icon: SourceIcon | undefined, sizeDelta?: number) => React.ReactElement | null;
@@ -1,10 +1,15 @@
1
- import o from "../../../assets/icons/ManifestGlass.svg.js";
2
- import f from "../../../assets/icons/Shopify.svg.js";
3
- const t = {
4
- manifest: { Icon: o, w: 24, h: 24 },
5
- shopify: { Icon: f, w: 21, h: 24 }
6
- };
1
+ import e from "../../../assets/icons/ManifestGlass.svg.js";
2
+ import r from "../../../assets/icons/Shopify.svg.js";
3
+ import f from "react";
4
+ const c = {
5
+ manifest: { Icon: e, w: 24, h: 24 },
6
+ shopify: { Icon: r, w: 21, h: 24 }
7
+ }, p = (o, t = 0) => o ? f.createElement(o.Icon, {
8
+ width: o.w + t,
9
+ height: o.h + t
10
+ }) : null;
7
11
  export {
8
- t as SOURCE_ICONS
12
+ c as SOURCE_ICONS,
13
+ p as renderSourceIcon
9
14
  };
10
15
  //# sourceMappingURL=sourceIcons.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sourceIcons.js","sources":["../../../../../src/components/agent-builder/utils/sourceIcons.ts"],"sourcesContent":["import ManifestGlass from '@src/assets/icons/ManifestGlass.svg';\nimport Shopify from '@src/assets/icons/Shopify.svg';\nimport type React from 'react';\n\nexport type IconComp = React.FunctionComponent<React.SVGAttributes<SVGElement>>;\n\n/** Brand glyph for a tool source, with its own size so each keeps its aspect ratio. */\nexport interface SourceIcon {\n\tIcon: IconComp;\n\tw: number;\n\th: number;\n}\n\n/** Per-source brand glyph — shared by the `@` picker and the Tools source buttons. */\nexport const SOURCE_ICONS: Record<string, SourceIcon> = {\n\tmanifest: { Icon: ManifestGlass, w: 24, h: 24 },\n\tshopify: { Icon: Shopify, w: 21, h: 24 },\n};\n"],"names":["SOURCE_ICONS","ManifestGlass","Shopify"],"mappings":";;AAcO,MAAMA,IAA2C;AAAA,EACvD,UAAU,EAAE,MAAMC,GAAe,GAAG,IAAI,GAAG,GAAA;AAAA,EAC3C,SAAS,EAAE,MAAMC,GAAS,GAAG,IAAI,GAAG,GAAA;AACrC;"}
1
+ {"version":3,"file":"sourceIcons.js","sources":["../../../../../src/components/agent-builder/utils/sourceIcons.ts"],"sourcesContent":["import ManifestGlass from '@src/assets/icons/ManifestGlass.svg';\nimport Shopify from '@src/assets/icons/Shopify.svg';\nimport React from 'react';\n\nexport type IconComp = React.FunctionComponent<React.SVGAttributes<SVGElement>>;\n\n/** Brand glyph for a tool source, with its own size so each keeps its aspect ratio. */\nexport interface SourceIcon {\n\tIcon: IconComp;\n\tw: number;\n\th: number;\n}\n\n/** Per-source brand glyph — shared by the `@` picker and the Tools source buttons. */\nexport const SOURCE_ICONS: Record<string, SourceIcon> = {\n\tmanifest: { Icon: ManifestGlass, w: 24, h: 24 },\n\tshopify: { Icon: Shopify, w: 21, h: 24 },\n};\n\n/**\n * Render a {@link SourceIcon} at its own aspect ratio. `sizeDelta` nudges both\n * dimensions (e.g. `-4` for the smaller source-button glyph). Returns `null` when\n * no icon is supplied, so callers can drop their own `icon &&` guard.\n */\nexport const renderSourceIcon = (\n\ticon: SourceIcon | undefined,\n\tsizeDelta = 0,\n): React.ReactElement | null =>\n\ticon\n\t\t? React.createElement(icon.Icon, {\n\t\t\t\twidth: icon.w + sizeDelta,\n\t\t\t\theight: icon.h + sizeDelta,\n\t\t })\n\t\t: null;\n"],"names":["SOURCE_ICONS","ManifestGlass","Shopify","renderSourceIcon","icon","sizeDelta","React"],"mappings":";;;AAcO,MAAMA,IAA2C;AAAA,EACvD,UAAU,EAAE,MAAMC,GAAe,GAAG,IAAI,GAAG,GAAA;AAAA,EAC3C,SAAS,EAAE,MAAMC,GAAS,GAAG,IAAI,GAAG,GAAA;AACrC,GAOaC,IAAmB,CAC/BC,GACAC,IAAY,MAEZD,IACGE,EAAM,cAAcF,EAAK,MAAM;AAAA,EAC/B,OAAOA,EAAK,IAAIC;AAAA,EAChB,QAAQD,EAAK,IAAIC;AACjB,CAAC,IACD;"}
@@ -1,150 +1,151 @@
1
- import { jsxs as z, jsx as i, Fragment as Q } from "react/jsx-runtime";
2
- import { useState as L, useCallback as n } from "react";
3
- import { TablePagination as U } from "../TablePagination/TablePagination.js";
4
- import { ZeroState as W } from "../zeroState/ZeroState.js";
5
- import { Page as X, Body as Y, EmptyHolder as _ } from "./AgentListing.styled.js";
6
- import { AgentListingFilters as ee } from "./AgentListingFilters.js";
7
- import { AgentListingHeader as te } from "./AgentListingHeader.js";
8
- import { AgentTable as ne } from "./AgentTable.js";
9
- import { DeleteAgentModal as oe } from "./DeleteAgentModal.js";
1
+ import { jsxs as z, jsx as i, Fragment as K } from "react/jsx-runtime";
2
+ import { useState as D, useCallback as n } from "react";
3
+ import { TablePagination as Q } from "../TablePagination/TablePagination.js";
4
+ import { ZeroState as U } from "../zeroState/ZeroState.js";
5
+ import { Page as W, Body as X, EmptyHolder as Y } from "./AgentListing.styled.js";
6
+ import { AgentListingFilters as _ } from "./AgentListingFilters.js";
7
+ import { AgentListingHeader as ee } from "./AgentListingHeader.js";
8
+ import { AgentTable as te } from "./AgentTable.js";
9
+ import { DeleteAgentModal as ne } from "./DeleteAgentModal.js";
10
+ import { unwrapDropdownValue as oe } from "../dropdown/utils.js";
10
11
  const ie = ({
11
- config: R,
12
+ config: L,
12
13
  onSearchChange: f,
13
- onSearchSubmit: l,
14
- onFilterChange: r,
15
- onSortChange: g,
14
+ onSearchSubmit: r,
15
+ onFilterChange: g,
16
+ onSortChange: d,
16
17
  onNewAgent: A,
17
- onBrowseTemplates: d,
18
+ onBrowseTemplates: c,
18
19
  onRunAgent: S,
19
20
  onEditAgent: b,
20
21
  onDeleteAgent: s,
21
- onRowClick: c,
22
- ...T
22
+ onRowClick: m,
23
+ ...R
23
24
  }) => {
24
- const [a, m] = L(
25
+ const [a, h] = D(
25
26
  null
26
- ), [y, C] = L(!1), {
27
- agents: N,
28
- isLoading: h,
29
- searchValue: D,
30
- searchPlaceholder: x = "Search",
31
- filterOptions: B,
32
- filterPlaceholder: E = "Filters",
33
- sortOptions: F,
34
- selectedSort: I,
35
- title: O = "AI Agents",
27
+ ), [C, N] = D(!1), {
28
+ agents: w,
29
+ isLoading: p,
30
+ searchValue: T,
31
+ searchPlaceholder: v = "Search",
32
+ filterOptions: x,
33
+ filterPlaceholder: B = "Filters",
34
+ sortOptions: E,
35
+ selectedSort: F,
36
+ title: I = "AI Agents",
36
37
  pagination: o,
37
38
  emptyState: u,
38
- debugLog: P
39
- } = R, k = !h && N.length === 0, t = n(
40
- (e, ...p) => {
41
- P && console.log(`[AgentListing] ${e}`, ...p);
39
+ debugLog: y
40
+ } = L, O = !p && w.length === 0, t = n(
41
+ (e, ...l) => {
42
+ y && console.log(`[AgentListing] ${e}`, ...l);
42
43
  },
43
- [P]
44
- ), j = n(
44
+ [y]
45
+ ), k = n(
45
46
  (e) => {
46
47
  t("onSearchChange", e), f(e);
47
48
  },
48
49
  [t, f]
49
- ), H = n(
50
- (e) => {
51
- t("onSearchSubmit", e), l?.(e);
52
- },
53
- [t, l]
54
- ), q = n(
50
+ ), j = n(
55
51
  (e) => {
56
- t("onFilterChange", e), r?.(e);
52
+ t("onSearchSubmit", e), r?.(e);
57
53
  },
58
54
  [t, r]
59
- ), M = n(
55
+ ), H = n(
60
56
  (e) => {
61
- t("onSortChange", e), g?.(e);
57
+ t("onFilterChange", e), g?.(e);
62
58
  },
63
59
  [t, g]
64
- ), w = n(() => {
60
+ ), V = n(
61
+ (e) => {
62
+ t("onSortChange", e), d?.(e);
63
+ },
64
+ [t, d]
65
+ ), P = n(() => {
65
66
  t("onNewAgent"), A();
66
- }, [t, A]), V = n(() => {
67
- t("onBrowseTemplates"), d?.();
68
- }, [t, d]), Z = n(
67
+ }, [t, A]), q = n(() => {
68
+ t("onBrowseTemplates"), c?.();
69
+ }, [t, c]), M = n(
69
70
  (e) => {
70
71
  t("onRunAgent", e.id), S(e);
71
72
  },
72
73
  [t, S]
73
- ), $ = n(
74
+ ), Z = n(
74
75
  (e) => {
75
76
  t("onEditAgent", e.id), b(e);
76
77
  },
77
78
  [t, b]
78
- ), G = n(
79
+ ), $ = n(
79
80
  (e) => {
80
- t("onRowClick", e.id), c?.(e);
81
+ t("onRowClick", e.id), m?.(e);
81
82
  },
82
- [t, c]
83
- ), J = n(
83
+ [t, m]
84
+ ), G = n(
84
85
  (e) => {
85
- t("onDeleteAgent", e.id), m(e);
86
+ t("onDeleteAgent", e.id), h(e);
86
87
  },
87
88
  [t]
88
- ), K = n(async () => {
89
+ ), J = n(async () => {
89
90
  if (!(!a || !s)) {
90
- C(!0);
91
+ N(!0);
91
92
  try {
92
- await s(a), m(null);
93
+ await s(a), h(null);
93
94
  } finally {
94
- C(!1);
95
+ N(!1);
95
96
  }
96
97
  }
97
98
  }, [a, s]);
98
- return /* @__PURE__ */ z(X, { "data-test": T["data-test"] ?? "agent-listing", children: [
99
+ return /* @__PURE__ */ z(W, { "data-test": R["data-test"] ?? "agent-listing", children: [
99
100
  /* @__PURE__ */ i(
100
- te,
101
+ ee,
101
102
  {
102
- title: O,
103
- onNewAgent: w,
104
- onBrowseTemplates: d ? V : void 0
103
+ title: I,
104
+ onNewAgent: P,
105
+ onBrowseTemplates: c ? q : void 0
105
106
  }
106
107
  ),
107
108
  /* @__PURE__ */ i(
108
- ee,
109
+ _,
109
110
  {
110
- searchValue: D,
111
- onSearchChange: j,
112
- onSearchSubmit: l ? H : void 0,
113
- searchPlaceholder: x,
114
- filterOptions: B,
115
- onFilterChange: r ? q : void 0,
116
- filterPlaceholder: E,
117
- sortOptions: F,
118
- selectedSort: I,
119
- onSortChange: g ? M : void 0
111
+ searchValue: T,
112
+ onSearchChange: k,
113
+ onSearchSubmit: r ? j : void 0,
114
+ searchPlaceholder: v,
115
+ filterOptions: x,
116
+ onFilterChange: g ? H : void 0,
117
+ filterPlaceholder: B,
118
+ sortOptions: E,
119
+ selectedSort: F,
120
+ onSortChange: d ? V : void 0
120
121
  }
121
122
  ),
122
- /* @__PURE__ */ i(Y, { children: h || k ? /* @__PURE__ */ i(_, { children: /* @__PURE__ */ i(
123
- W,
123
+ /* @__PURE__ */ i(X, { children: p || O ? /* @__PURE__ */ i(Y, { children: /* @__PURE__ */ i(
124
+ U,
124
125
  {
125
- isLoading: h,
126
+ isLoading: p,
126
127
  title: u?.title ?? "No agents yet",
127
128
  subTitle: u?.subTitle ?? "Create your first AI agent to start automating conversations.",
128
129
  actionButton: u?.actionButton ?? {
129
130
  buttonText: "New AI agent",
130
131
  buttonType: "primary",
131
132
  size: "small",
132
- onClick: w
133
+ onClick: P
133
134
  }
134
135
  }
135
- ) }) : /* @__PURE__ */ z(Q, { children: [
136
+ ) }) : /* @__PURE__ */ z(K, { children: [
136
137
  /* @__PURE__ */ i(
137
- ne,
138
+ te,
138
139
  {
139
- agents: N,
140
- onRunAgent: Z,
141
- onEditAgent: $,
142
- onDeleteAgent: s ? J : void 0,
143
- onRowClick: c ? G : void 0
140
+ agents: w,
141
+ onRunAgent: M,
142
+ onEditAgent: Z,
143
+ onDeleteAgent: s ? G : void 0,
144
+ onRowClick: m ? $ : void 0
144
145
  }
145
146
  ),
146
147
  o && o.totalRows > 0 && /* @__PURE__ */ i(
147
- U,
148
+ Q,
148
149
  {
149
150
  pageNumber: o.pageNumber,
150
151
  pageSize: o.pageSize,
@@ -152,19 +153,19 @@ const ie = ({
152
153
  hidePageSizeOptions: o.hidePageSizeOptions,
153
154
  updatePageNumber: o.onPageChange,
154
155
  updatePageSize: (e) => {
155
- const p = Array.isArray(e) ? e[0] : e, v = Number(p?.value);
156
- Number.isNaN(v) || o.onPageSizeChange(v);
156
+ const l = Number(oe(e));
157
+ Number.isNaN(l) || o.onPageSizeChange(l);
157
158
  }
158
159
  }
159
160
  )
160
161
  ] }) }),
161
162
  a && /* @__PURE__ */ i(
162
- oe,
163
+ ne,
163
164
  {
164
165
  agentName: a.name,
165
- isDeleting: y,
166
- onClose: () => y ? void 0 : m(null),
167
- onConfirm: K
166
+ isDeleting: C,
167
+ onClose: () => C ? void 0 : h(null),
168
+ onConfirm: J
168
169
  }
169
170
  )
170
171
  ] });
@@ -1 +1 @@
1
- {"version":3,"file":"AgentListing.js","sources":["../../../../src/components/agent-listing/AgentListing.tsx"],"sourcesContent":["import React, { useCallback, useState } from 'react';\nimport { DropdownOption } from '@src/components/dropdown/type';\nimport { TablePagination } from '@src/components/TablePagination/TablePagination';\nimport { ZeroState } from '@src/components/zeroState/ZeroState';\nimport { AgentListingProps, AgentListItem } from './AgentListing.model';\nimport { Body, EmptyHolder, Page } from './AgentListing.styled';\nimport { AgentListingFilters } from './AgentListingFilters';\nimport { AgentListingHeader } from './AgentListingHeader';\nimport { AgentTable } from './AgentTable';\nimport { DeleteAgentModal } from './DeleteAgentModal';\n\n/**\n * Full body of the \"AI Agents\" listing screen (header + filters + table).\n * Presentational and fully controlled — the consumer owns data, search, sort,\n * pagination and routing. Render it inside your app shell (next to the sidebar).\n *\n * @example\n * <AgentListing\n * agents={rows}\n * searchValue={search}\n * onSearchChange={setSearch}\n * onNewAgent={() => router.push('/agents/new')}\n * onRunAgent={runAgent}\n * onEditAgent={(a) => router.push(`/agents/${a.id}`)}\n * />\n */\nexport const AgentListing: React.FC<AgentListingProps> = ({\n\tconfig,\n\tonSearchChange,\n\tonSearchSubmit,\n\tonFilterChange,\n\tonSortChange,\n\tonNewAgent,\n\tonBrowseTemplates,\n\tonRunAgent,\n\tonEditAgent,\n\tonDeleteAgent,\n\tonRowClick,\n\t...rest\n}) => {\n\t// Agent pending delete-confirmation (null = dialog closed).\n\tconst [pendingDelete, setPendingDelete] = useState<AgentListItem | null>(\n\t\tnull,\n\t);\n\tconst [isDeleting, setIsDeleting] = useState(false);\n\tconst {\n\t\tagents,\n\t\tisLoading,\n\t\tsearchValue,\n\t\tsearchPlaceholder = 'Search',\n\t\tfilterOptions,\n\t\tfilterPlaceholder = 'Filters',\n\t\tsortOptions,\n\t\tselectedSort,\n\t\ttitle = 'AI Agents',\n\t\tpagination,\n\t\temptyState,\n\t\tdebugLog,\n\t} = config;\n\n\tconst showEmpty = !isLoading && agents.length === 0;\n\n\t// Gated debug logging: each handler logs at its start only when `debugLog`.\n\tconst logAction = useCallback(\n\t\t(action: string, ...args: unknown[]) => {\n\t\t\tif (debugLog) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.log(`[AgentListing] ${action}`, ...args);\n\t\t\t}\n\t\t},\n\t\t[debugLog],\n\t);\n\n\tconst handleSearchChange = useCallback(\n\t\t(v: string) => {\n\t\t\tlogAction('onSearchChange', v);\n\t\t\tonSearchChange(v);\n\t\t},\n\t\t[logAction, onSearchChange],\n\t);\n\tconst handleSearchSubmit = useCallback(\n\t\t(v: string) => {\n\t\t\tlogAction('onSearchSubmit', v);\n\t\t\tonSearchSubmit?.(v);\n\t\t},\n\t\t[logAction, onSearchSubmit],\n\t);\n\tconst handleFilterChange = useCallback(\n\t\t(selected: DropdownOption | DropdownOption[]) => {\n\t\t\tlogAction('onFilterChange', selected);\n\t\t\tonFilterChange?.(selected);\n\t\t},\n\t\t[logAction, onFilterChange],\n\t);\n\tconst handleSortChange = useCallback(\n\t\t(v: string) => {\n\t\t\tlogAction('onSortChange', v);\n\t\t\tonSortChange?.(v);\n\t\t},\n\t\t[logAction, onSortChange],\n\t);\n\tconst handleNewAgent = useCallback(() => {\n\t\tlogAction('onNewAgent');\n\t\tonNewAgent();\n\t}, [logAction, onNewAgent]);\n\tconst handleBrowseTemplates = useCallback(() => {\n\t\tlogAction('onBrowseTemplates');\n\t\tonBrowseTemplates?.();\n\t}, [logAction, onBrowseTemplates]);\n\tconst handleRunAgent = useCallback(\n\t\t(agent: AgentListItem) => {\n\t\t\tlogAction('onRunAgent', agent.id);\n\t\t\tonRunAgent(agent);\n\t\t},\n\t\t[logAction, onRunAgent],\n\t);\n\tconst handleEditAgent = useCallback(\n\t\t(agent: AgentListItem) => {\n\t\t\tlogAction('onEditAgent', agent.id);\n\t\t\tonEditAgent(agent);\n\t\t},\n\t\t[logAction, onEditAgent],\n\t);\n\tconst handleRowClick = useCallback(\n\t\t(agent: AgentListItem) => {\n\t\t\tlogAction('onRowClick', agent.id);\n\t\t\tonRowClick?.(agent);\n\t\t},\n\t\t[logAction, onRowClick],\n\t);\n\t// Row delete just opens the confirm dialog; the actual delete runs on confirm.\n\tconst handleDeleteRequest = useCallback(\n\t\t(agent: AgentListItem) => {\n\t\t\tlogAction('onDeleteAgent', agent.id);\n\t\t\tsetPendingDelete(agent);\n\t\t},\n\t\t[logAction],\n\t);\n\tconst handleConfirmDelete = useCallback(async () => {\n\t\tif (!pendingDelete || !onDeleteAgent) {\n\t\t\treturn;\n\t\t}\n\t\tsetIsDeleting(true);\n\t\ttry {\n\t\t\tawait onDeleteAgent(pendingDelete);\n\t\t\tsetPendingDelete(null);\n\t\t} finally {\n\t\t\tsetIsDeleting(false);\n\t\t}\n\t}, [pendingDelete, onDeleteAgent]);\n\n\treturn (\n\t\t<Page data-test={rest['data-test'] ?? 'agent-listing'}>\n\t\t\t<AgentListingHeader\n\t\t\t\ttitle={title}\n\t\t\t\tonNewAgent={handleNewAgent}\n\t\t\t\tonBrowseTemplates={\n\t\t\t\t\tonBrowseTemplates ? handleBrowseTemplates : undefined\n\t\t\t\t}\n\t\t\t/>\n\n\t\t\t<AgentListingFilters\n\t\t\t\tsearchValue={searchValue}\n\t\t\t\tonSearchChange={handleSearchChange}\n\t\t\t\tonSearchSubmit={onSearchSubmit ? handleSearchSubmit : undefined}\n\t\t\t\tsearchPlaceholder={searchPlaceholder}\n\t\t\t\tfilterOptions={filterOptions}\n\t\t\t\tonFilterChange={onFilterChange ? handleFilterChange : undefined}\n\t\t\t\tfilterPlaceholder={filterPlaceholder}\n\t\t\t\tsortOptions={sortOptions}\n\t\t\t\tselectedSort={selectedSort}\n\t\t\t\tonSortChange={onSortChange ? handleSortChange : undefined}\n\t\t\t/>\n\n\t\t\t<Body>\n\t\t\t\t{isLoading || showEmpty ? (\n\t\t\t\t\t<EmptyHolder>\n\t\t\t\t\t\t<ZeroState\n\t\t\t\t\t\t\tisLoading={isLoading}\n\t\t\t\t\t\t\ttitle={emptyState?.title ?? 'No agents yet'}\n\t\t\t\t\t\t\tsubTitle={\n\t\t\t\t\t\t\t\temptyState?.subTitle ??\n\t\t\t\t\t\t\t\t'Create your first AI agent to start automating conversations.'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tactionButton={\n\t\t\t\t\t\t\t\temptyState?.actionButton ?? {\n\t\t\t\t\t\t\t\t\tbuttonText: 'New AI agent',\n\t\t\t\t\t\t\t\t\tbuttonType: 'primary',\n\t\t\t\t\t\t\t\t\tsize: 'small',\n\t\t\t\t\t\t\t\t\tonClick: handleNewAgent,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</EmptyHolder>\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<AgentTable\n\t\t\t\t\t\t\tagents={agents}\n\t\t\t\t\t\t\tonRunAgent={handleRunAgent}\n\t\t\t\t\t\t\tonEditAgent={handleEditAgent}\n\t\t\t\t\t\t\tonDeleteAgent={onDeleteAgent ? handleDeleteRequest : undefined}\n\t\t\t\t\t\t\tonRowClick={onRowClick ? handleRowClick : undefined}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{pagination && pagination.totalRows > 0 && (\n\t\t\t\t\t\t\t<TablePagination\n\t\t\t\t\t\t\t\tpageNumber={pagination.pageNumber}\n\t\t\t\t\t\t\t\tpageSize={pagination.pageSize}\n\t\t\t\t\t\t\t\ttotalRows={pagination.totalRows}\n\t\t\t\t\t\t\t\thidePageSizeOptions={pagination.hidePageSizeOptions}\n\t\t\t\t\t\t\t\tupdatePageNumber={pagination.onPageChange}\n\t\t\t\t\t\t\t\tupdatePageSize={(opt) => {\n\t\t\t\t\t\t\t\t\tconst single = Array.isArray(opt) ? opt[0] : opt;\n\t\t\t\t\t\t\t\t\tconst value = Number((single as { value?: string })?.value);\n\t\t\t\t\t\t\t\t\tif (!Number.isNaN(value)) {\n\t\t\t\t\t\t\t\t\t\tpagination.onPageSizeChange(value);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</Body>\n\n\t\t\t{pendingDelete && (\n\t\t\t\t<DeleteAgentModal\n\t\t\t\t\tagentName={pendingDelete.name}\n\t\t\t\t\tisDeleting={isDeleting}\n\t\t\t\t\tonClose={() => (isDeleting ? undefined : setPendingDelete(null))}\n\t\t\t\t\tonConfirm={handleConfirmDelete}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</Page>\n\t);\n};\n\nAgentListing.displayName = 'AgentListing';\n"],"names":["AgentListing","config","onSearchChange","onSearchSubmit","onFilterChange","onSortChange","onNewAgent","onBrowseTemplates","onRunAgent","onEditAgent","onDeleteAgent","onRowClick","rest","pendingDelete","setPendingDelete","useState","isDeleting","setIsDeleting","agents","isLoading","searchValue","searchPlaceholder","filterOptions","filterPlaceholder","sortOptions","selectedSort","title","pagination","emptyState","debugLog","showEmpty","logAction","useCallback","action","args","handleSearchChange","v","handleSearchSubmit","handleFilterChange","selected","handleSortChange","handleNewAgent","handleBrowseTemplates","handleRunAgent","agent","handleEditAgent","handleRowClick","handleDeleteRequest","handleConfirmDelete","Page","jsx","AgentListingHeader","AgentListingFilters","Body","EmptyHolder","ZeroState","jsxs","Fragment","AgentTable","TablePagination","opt","single","value","DeleteAgentModal"],"mappings":"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"}
1
+ {"version":3,"file":"AgentListing.js","sources":["../../../../src/components/agent-listing/AgentListing.tsx"],"sourcesContent":["import React, { useCallback, useState } from 'react';\nimport { unwrapDropdownValue } from '@src/components/dropdown';\nimport { DropdownOption } from '@src/components/dropdown/type';\nimport { TablePagination } from '@src/components/TablePagination/TablePagination';\nimport { ZeroState } from '@src/components/zeroState/ZeroState';\nimport { AgentListingProps, AgentListItem } from './AgentListing.model';\nimport { Body, EmptyHolder, Page } from './AgentListing.styled';\nimport { AgentListingFilters } from './AgentListingFilters';\nimport { AgentListingHeader } from './AgentListingHeader';\nimport { AgentTable } from './AgentTable';\nimport { DeleteAgentModal } from './DeleteAgentModal';\n\n/**\n * Full body of the \"AI Agents\" listing screen (header + filters + table).\n * Presentational and fully controlled — the consumer owns data, search, sort,\n * pagination and routing. Render it inside your app shell (next to the sidebar).\n *\n * @example\n * <AgentListing\n * agents={rows}\n * searchValue={search}\n * onSearchChange={setSearch}\n * onNewAgent={() => router.push('/agents/new')}\n * onRunAgent={runAgent}\n * onEditAgent={(a) => router.push(`/agents/${a.id}`)}\n * />\n */\nexport const AgentListing: React.FC<AgentListingProps> = ({\n\tconfig,\n\tonSearchChange,\n\tonSearchSubmit,\n\tonFilterChange,\n\tonSortChange,\n\tonNewAgent,\n\tonBrowseTemplates,\n\tonRunAgent,\n\tonEditAgent,\n\tonDeleteAgent,\n\tonRowClick,\n\t...rest\n}) => {\n\t// Agent pending delete-confirmation (null = dialog closed).\n\tconst [pendingDelete, setPendingDelete] = useState<AgentListItem | null>(\n\t\tnull,\n\t);\n\tconst [isDeleting, setIsDeleting] = useState(false);\n\tconst {\n\t\tagents,\n\t\tisLoading,\n\t\tsearchValue,\n\t\tsearchPlaceholder = 'Search',\n\t\tfilterOptions,\n\t\tfilterPlaceholder = 'Filters',\n\t\tsortOptions,\n\t\tselectedSort,\n\t\ttitle = 'AI Agents',\n\t\tpagination,\n\t\temptyState,\n\t\tdebugLog,\n\t} = config;\n\n\tconst showEmpty = !isLoading && agents.length === 0;\n\n\t// Gated debug logging: each handler logs at its start only when `debugLog`.\n\tconst logAction = useCallback(\n\t\t(action: string, ...args: unknown[]) => {\n\t\t\tif (debugLog) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.log(`[AgentListing] ${action}`, ...args);\n\t\t\t}\n\t\t},\n\t\t[debugLog],\n\t);\n\n\tconst handleSearchChange = useCallback(\n\t\t(v: string) => {\n\t\t\tlogAction('onSearchChange', v);\n\t\t\tonSearchChange(v);\n\t\t},\n\t\t[logAction, onSearchChange],\n\t);\n\tconst handleSearchSubmit = useCallback(\n\t\t(v: string) => {\n\t\t\tlogAction('onSearchSubmit', v);\n\t\t\tonSearchSubmit?.(v);\n\t\t},\n\t\t[logAction, onSearchSubmit],\n\t);\n\tconst handleFilterChange = useCallback(\n\t\t(selected: DropdownOption | DropdownOption[]) => {\n\t\t\tlogAction('onFilterChange', selected);\n\t\t\tonFilterChange?.(selected);\n\t\t},\n\t\t[logAction, onFilterChange],\n\t);\n\tconst handleSortChange = useCallback(\n\t\t(v: string) => {\n\t\t\tlogAction('onSortChange', v);\n\t\t\tonSortChange?.(v);\n\t\t},\n\t\t[logAction, onSortChange],\n\t);\n\tconst handleNewAgent = useCallback(() => {\n\t\tlogAction('onNewAgent');\n\t\tonNewAgent();\n\t}, [logAction, onNewAgent]);\n\tconst handleBrowseTemplates = useCallback(() => {\n\t\tlogAction('onBrowseTemplates');\n\t\tonBrowseTemplates?.();\n\t}, [logAction, onBrowseTemplates]);\n\tconst handleRunAgent = useCallback(\n\t\t(agent: AgentListItem) => {\n\t\t\tlogAction('onRunAgent', agent.id);\n\t\t\tonRunAgent(agent);\n\t\t},\n\t\t[logAction, onRunAgent],\n\t);\n\tconst handleEditAgent = useCallback(\n\t\t(agent: AgentListItem) => {\n\t\t\tlogAction('onEditAgent', agent.id);\n\t\t\tonEditAgent(agent);\n\t\t},\n\t\t[logAction, onEditAgent],\n\t);\n\tconst handleRowClick = useCallback(\n\t\t(agent: AgentListItem) => {\n\t\t\tlogAction('onRowClick', agent.id);\n\t\t\tonRowClick?.(agent);\n\t\t},\n\t\t[logAction, onRowClick],\n\t);\n\t// Row delete just opens the confirm dialog; the actual delete runs on confirm.\n\tconst handleDeleteRequest = useCallback(\n\t\t(agent: AgentListItem) => {\n\t\t\tlogAction('onDeleteAgent', agent.id);\n\t\t\tsetPendingDelete(agent);\n\t\t},\n\t\t[logAction],\n\t);\n\tconst handleConfirmDelete = useCallback(async () => {\n\t\tif (!pendingDelete || !onDeleteAgent) {\n\t\t\treturn;\n\t\t}\n\t\tsetIsDeleting(true);\n\t\ttry {\n\t\t\tawait onDeleteAgent(pendingDelete);\n\t\t\tsetPendingDelete(null);\n\t\t} finally {\n\t\t\tsetIsDeleting(false);\n\t\t}\n\t}, [pendingDelete, onDeleteAgent]);\n\n\treturn (\n\t\t<Page data-test={rest['data-test'] ?? 'agent-listing'}>\n\t\t\t<AgentListingHeader\n\t\t\t\ttitle={title}\n\t\t\t\tonNewAgent={handleNewAgent}\n\t\t\t\tonBrowseTemplates={\n\t\t\t\t\tonBrowseTemplates ? handleBrowseTemplates : undefined\n\t\t\t\t}\n\t\t\t/>\n\n\t\t\t<AgentListingFilters\n\t\t\t\tsearchValue={searchValue}\n\t\t\t\tonSearchChange={handleSearchChange}\n\t\t\t\tonSearchSubmit={onSearchSubmit ? handleSearchSubmit : undefined}\n\t\t\t\tsearchPlaceholder={searchPlaceholder}\n\t\t\t\tfilterOptions={filterOptions}\n\t\t\t\tonFilterChange={onFilterChange ? handleFilterChange : undefined}\n\t\t\t\tfilterPlaceholder={filterPlaceholder}\n\t\t\t\tsortOptions={sortOptions}\n\t\t\t\tselectedSort={selectedSort}\n\t\t\t\tonSortChange={onSortChange ? handleSortChange : undefined}\n\t\t\t/>\n\n\t\t\t<Body>\n\t\t\t\t{isLoading || showEmpty ? (\n\t\t\t\t\t<EmptyHolder>\n\t\t\t\t\t\t<ZeroState\n\t\t\t\t\t\t\tisLoading={isLoading}\n\t\t\t\t\t\t\ttitle={emptyState?.title ?? 'No agents yet'}\n\t\t\t\t\t\t\tsubTitle={\n\t\t\t\t\t\t\t\temptyState?.subTitle ??\n\t\t\t\t\t\t\t\t'Create your first AI agent to start automating conversations.'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tactionButton={\n\t\t\t\t\t\t\t\temptyState?.actionButton ?? {\n\t\t\t\t\t\t\t\t\tbuttonText: 'New AI agent',\n\t\t\t\t\t\t\t\t\tbuttonType: 'primary',\n\t\t\t\t\t\t\t\t\tsize: 'small',\n\t\t\t\t\t\t\t\t\tonClick: handleNewAgent,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</EmptyHolder>\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<AgentTable\n\t\t\t\t\t\t\tagents={agents}\n\t\t\t\t\t\t\tonRunAgent={handleRunAgent}\n\t\t\t\t\t\t\tonEditAgent={handleEditAgent}\n\t\t\t\t\t\t\tonDeleteAgent={onDeleteAgent ? handleDeleteRequest : undefined}\n\t\t\t\t\t\t\tonRowClick={onRowClick ? handleRowClick : undefined}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{pagination && pagination.totalRows > 0 && (\n\t\t\t\t\t\t\t<TablePagination\n\t\t\t\t\t\t\t\tpageNumber={pagination.pageNumber}\n\t\t\t\t\t\t\t\tpageSize={pagination.pageSize}\n\t\t\t\t\t\t\t\ttotalRows={pagination.totalRows}\n\t\t\t\t\t\t\t\thidePageSizeOptions={pagination.hidePageSizeOptions}\n\t\t\t\t\t\t\t\tupdatePageNumber={pagination.onPageChange}\n\t\t\t\t\t\t\t\tupdatePageSize={(opt) => {\n\t\t\t\t\t\t\t\t\tconst value = Number(unwrapDropdownValue(opt));\n\t\t\t\t\t\t\t\t\tif (!Number.isNaN(value)) {\n\t\t\t\t\t\t\t\t\t\tpagination.onPageSizeChange(value);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</Body>\n\n\t\t\t{pendingDelete && (\n\t\t\t\t<DeleteAgentModal\n\t\t\t\t\tagentName={pendingDelete.name}\n\t\t\t\t\tisDeleting={isDeleting}\n\t\t\t\t\tonClose={() => (isDeleting ? undefined : setPendingDelete(null))}\n\t\t\t\t\tonConfirm={handleConfirmDelete}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</Page>\n\t);\n};\n\nAgentListing.displayName = 'AgentListing';\n"],"names":["AgentListing","config","onSearchChange","onSearchSubmit","onFilterChange","onSortChange","onNewAgent","onBrowseTemplates","onRunAgent","onEditAgent","onDeleteAgent","onRowClick","rest","pendingDelete","setPendingDelete","useState","isDeleting","setIsDeleting","agents","isLoading","searchValue","searchPlaceholder","filterOptions","filterPlaceholder","sortOptions","selectedSort","title","pagination","emptyState","debugLog","showEmpty","logAction","useCallback","action","args","handleSearchChange","v","handleSearchSubmit","handleFilterChange","selected","handleSortChange","handleNewAgent","handleBrowseTemplates","handleRunAgent","agent","handleEditAgent","handleRowClick","handleDeleteRequest","handleConfirmDelete","Page","jsx","AgentListingHeader","AgentListingFilters","Body","EmptyHolder","ZeroState","jsxs","Fragment","AgentTable","TablePagination","opt","value","unwrapDropdownValue","DeleteAgentModal"],"mappings":"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"}