@bikdotai/bik-component-library 0.0.830 → 0.0.831-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 (91) 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 +17 -65
  4. package/dist/cjs/components/agent-builder/AgentBuilder.styled.js.map +1 -1
  5. package/dist/cjs/components/agent-builder/components/ConfigToolPanel.js +41 -0
  6. package/dist/cjs/components/agent-builder/components/ConfigToolPanel.js.map +1 -0
  7. package/dist/cjs/components/agent-builder/components/CreateSubAgentPanel.js +5 -5
  8. package/dist/cjs/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -1
  9. package/dist/cjs/components/agent-builder/components/DrawerHeaderText.js +15 -0
  10. package/dist/cjs/components/agent-builder/components/DrawerHeaderText.js.map +1 -0
  11. package/dist/cjs/components/agent-builder/components/MentionEditor.js +1 -1
  12. package/dist/cjs/components/agent-builder/components/MentionEditor.js.map +1 -1
  13. package/dist/cjs/components/agent-builder/components/MentionField.js +1 -1
  14. package/dist/cjs/components/agent-builder/components/MentionField.js.map +1 -1
  15. package/dist/cjs/components/agent-builder/components/MentionPicker.js +20 -20
  16. package/dist/cjs/components/agent-builder/components/MentionPicker.js.map +1 -1
  17. package/dist/cjs/components/agent-builder/components/RestApiToolPanel.js +23 -0
  18. package/dist/cjs/components/agent-builder/components/RestApiToolPanel.js.map +1 -0
  19. package/dist/cjs/components/agent-builder/components/SelectableListSection.js +5 -5
  20. package/dist/cjs/components/agent-builder/components/SelectableListSection.js.map +1 -1
  21. package/dist/cjs/components/agent-builder/components/ToolInstructionsField.js +5 -0
  22. package/dist/cjs/components/agent-builder/components/ToolInstructionsField.js.map +1 -0
  23. package/dist/cjs/components/agent-builder/constants/tools.js +2 -0
  24. package/dist/cjs/components/agent-builder/constants/tools.js.map +1 -0
  25. package/dist/cjs/components/agent-builder/context/AgentBuilderContext.js +1 -1
  26. package/dist/cjs/components/agent-builder/context/AgentBuilderContext.js.map +1 -1
  27. package/dist/cjs/components/agent-builder/steps/Step3HowItResponds.js +1 -1
  28. package/dist/cjs/components/agent-builder/steps/Step3HowItResponds.js.map +1 -1
  29. package/dist/cjs/components/agent-builder/utils/mentionSerialization.js +3 -3
  30. package/dist/cjs/components/agent-builder/utils/mentionSerialization.js.map +1 -1
  31. package/dist/cjs/components/agent-builder/utils/sourceIcons.js +1 -1
  32. package/dist/cjs/components/agent-builder/utils/sourceIcons.js.map +1 -1
  33. package/dist/cjs/components/side-modal/SideModal.style.js +11 -10
  34. package/dist/cjs/components/side-modal/SideModal.style.js.map +1 -1
  35. package/dist/cjs/editor/extensions/mention/MentionExtension.js +1 -1
  36. package/dist/cjs/editor/extensions/mention/MentionExtension.js.map +1 -1
  37. package/dist/cjs/index.js +1 -1
  38. package/dist/esm/components/agent-builder/AgentBuilder.js +100 -96
  39. package/dist/esm/components/agent-builder/AgentBuilder.js.map +1 -1
  40. package/dist/esm/components/agent-builder/AgentBuilder.model.d.ts +144 -1
  41. package/dist/esm/components/agent-builder/AgentBuilder.styled.d.ts +0 -21
  42. package/dist/esm/components/agent-builder/AgentBuilder.styled.js +42 -111
  43. package/dist/esm/components/agent-builder/AgentBuilder.styled.js.map +1 -1
  44. package/dist/esm/components/agent-builder/components/ConfigToolPanel.d.ts +33 -0
  45. package/dist/esm/components/agent-builder/components/ConfigToolPanel.js +251 -0
  46. package/dist/esm/components/agent-builder/components/ConfigToolPanel.js.map +1 -0
  47. package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.d.ts +9 -1
  48. package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js +318 -219
  49. package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -1
  50. package/dist/esm/components/agent-builder/components/DrawerHeaderText.d.ts +33 -0
  51. package/dist/esm/components/agent-builder/components/DrawerHeaderText.js +42 -0
  52. package/dist/esm/components/agent-builder/components/DrawerHeaderText.js.map +1 -0
  53. package/dist/esm/components/agent-builder/components/MentionEditor.d.ts +6 -0
  54. package/dist/esm/components/agent-builder/components/MentionEditor.js +38 -30
  55. package/dist/esm/components/agent-builder/components/MentionEditor.js.map +1 -1
  56. package/dist/esm/components/agent-builder/components/MentionField.js +76 -51
  57. package/dist/esm/components/agent-builder/components/MentionField.js.map +1 -1
  58. package/dist/esm/components/agent-builder/components/MentionPicker.d.ts +7 -0
  59. package/dist/esm/components/agent-builder/components/MentionPicker.js +162 -145
  60. package/dist/esm/components/agent-builder/components/MentionPicker.js.map +1 -1
  61. package/dist/esm/components/agent-builder/components/RestApiToolPanel.d.ts +27 -0
  62. package/dist/esm/components/agent-builder/components/RestApiToolPanel.js +270 -0
  63. package/dist/esm/components/agent-builder/components/RestApiToolPanel.js.map +1 -0
  64. package/dist/esm/components/agent-builder/components/SelectableListSection.d.ts +14 -0
  65. package/dist/esm/components/agent-builder/components/SelectableListSection.js +166 -140
  66. package/dist/esm/components/agent-builder/components/SelectableListSection.js.map +1 -1
  67. package/dist/esm/components/agent-builder/components/ToolInstructionsField.d.ts +19 -0
  68. package/dist/esm/components/agent-builder/components/ToolInstructionsField.js +66 -0
  69. package/dist/esm/components/agent-builder/components/ToolInstructionsField.js.map +1 -0
  70. package/dist/esm/components/agent-builder/constants/tools.d.ts +77 -0
  71. package/dist/esm/components/agent-builder/constants/tools.js +34 -0
  72. package/dist/esm/components/agent-builder/constants/tools.js.map +1 -0
  73. package/dist/esm/components/agent-builder/context/AgentBuilderContext.d.ts +19 -1
  74. package/dist/esm/components/agent-builder/context/AgentBuilderContext.js +169 -140
  75. package/dist/esm/components/agent-builder/context/AgentBuilderContext.js.map +1 -1
  76. package/dist/esm/components/agent-builder/index.d.ts +2 -1
  77. package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js +241 -141
  78. package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js.map +1 -1
  79. package/dist/esm/components/agent-builder/utils/mentionSerialization.d.ts +18 -3
  80. package/dist/esm/components/agent-builder/utils/mentionSerialization.js +81 -62
  81. package/dist/esm/components/agent-builder/utils/mentionSerialization.js.map +1 -1
  82. package/dist/esm/components/agent-builder/utils/sourceIcons.d.ts +15 -9
  83. package/dist/esm/components/agent-builder/utils/sourceIcons.js +16 -8
  84. package/dist/esm/components/agent-builder/utils/sourceIcons.js.map +1 -1
  85. package/dist/esm/components/side-modal/SideModal.style.js +1 -0
  86. package/dist/esm/components/side-modal/SideModal.style.js.map +1 -1
  87. package/dist/esm/editor/extensions/mention/MentionExtension.js +60 -57
  88. package/dist/esm/editor/extensions/mention/MentionExtension.js.map +1 -1
  89. package/dist/esm/index.js +97 -95
  90. package/dist/esm/index.js.map +1 -1
  91. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),o=require("react"),oe=require("../../constants/Theme.js"),a=require("./AgentBuilder.styled.js"),ae=require("./components/AgentBuilderFooter.js"),se=require("./components/AgentBuilderTopBar.js"),re=require("./components/DiscardModal.js"),ie=require("./components/GoLiveModal.js"),le=require("./components/StepRail.js"),ue=require("./components/UndoToast.js"),D=require("./context/AgentBuilderContext.js"),ce=require("./steps/Step1About.js"),de=require("./steps/Step2WhenItStepsIn.js"),ge=require("./steps/Step3HowItResponds.js"),Se=require("./steps/Step4HandoverRules.js"),he=require("../spinner/Spinner.js"),ve=()=>{const{activeStep:u}=D.useAgentBuilderContext();switch(u){case"about":return n.jsx(ce.Step1About,{});case"trigger":return n.jsx(de.Step2WhenItStepsIn,{});case"response":return n.jsx(ge.Step3HowItResponds,{});case"handover":return n.jsx(Se.Step4HandoverRules,{});default:return null}},y=u=>{const{config:k,onChange:v,onStepChange:c,onDiscard:b,onSaveDraft:r,onPublish:C,onBack:d,onTestAgent:g,onGoToDashboard:S,onCreateSubAgent:i,onFetchSubAgent:q,onUpdateSubAgent:T,onImproveSubAgent:R,...G}=u,{value:h,activeStep:M,availableTools:P,availableSubAgents:I,availableIntents:w=[],availableModels:H=[],validation:F,applicationType:O,charLimits:U,isSaving:p,isPublishing:f,isLoading:N,footerHint:W="Changes don’t affect customers until you go live",disableStepNavigation:z,debugLog:A}=k,[E,s]=o.useState(null),[j,x]=o.useState(!1),[_,l]=o.useState(!1),[L,m]=o.useState(!1),e=o.useCallback((t,...te)=>{A&&console.log(`[AgentBuilder] ${t}`,...te)},[A]),$=o.useCallback(t=>{e("onChange",t),v(t)},[e,v]),J=o.useCallback(t=>{e("onStepChange",t),c?.(t)},[e,c]),K=o.useCallback(()=>(e("onSaveDraft"),r()),[e,r]),Q=o.useCallback(()=>(e("onPublish"),C()),[e,C]),V=o.useCallback(()=>{e("onBack"),l(!0)},[e]),X=o.useCallback(()=>{e("onDiscardAndLeave"),l(!1),b()},[e,b]),B=o.useCallback(async()=>{e("onSaveDraftAndLeave");const t=r();if(t&&typeof t.then=="function"){m(!0);try{await t}finally{m(!1)}}l(!1),d?.()},[e,r,d]),Y=o.useCallback(()=>{e("onTestAgent"),g?.()},[e,g]),Z=o.useCallback(()=>{e("onGoToDashboard"),S?.()},[e,S]),ee=o.useCallback(t=>(e("onCreateSubAgent",t),i?i(t):Promise.reject(new Error("onCreateSubAgent not provided"))),[e,i]),ne=async()=>{e("onGoLiveConfirm");const t=Q();if(t&&typeof t.then=="function"){x(!0);try{await t,s("success")}finally{x(!1)}}else s("success")};return n.jsx(D.AgentBuilderProvider,{value:h,onChange:$,activeStep:M,onStepChange:c?J:void 0,availableTools:P,availableSubAgents:I,availableIntents:w,availableModels:H,validation:F,applicationType:O,charLimits:U,disableStepNavigation:z,onCreateSubAgent:i?ee:void 0,onFetchSubAgent:q,onUpdateSubAgent:T,onImproveSubAgent:R,children:n.jsxs(a.BuilderRoot,{"data-test":G["data-test"]??"agent-builder",children:[n.jsx(se.AgentBuilderTopBar,{name:h.name,status:h.status,onBack:d?V:void 0,onSaveDraft:B,isSaving:p||L}),n.jsxs(a.Main,{children:[n.jsx(a.Rail,{children:n.jsx(le.StepRail,{})}),n.jsx(a.Content,{children:N?n.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",height:"100%"},children:n.jsx(he.Spinner,{size:"large",color:oe.COLORS.stroke.brand})}):n.jsxs(a.ContentCard,{children:[n.jsx(a.StepScroll,{children:n.jsx(ve,{})}),n.jsx(ae.AgentBuilderFooter,{footerHint:W,onTestAgent:g?Y:void 0,onGoLive:()=>{e("onGoLive"),s("confirm")},isPublishing:f||j})]})})]}),n.jsx(ie.GoLiveModal,{mode:E,onClose:()=>s(null),onConfirm:ne,onSaveDraft:()=>{s(null),K()},onGoToDashboard:S?Z:void 0,isPublishing:f||j}),n.jsx(re.DiscardModal,{open:_,onClose:()=>l(!1),onDiscard:X,onSaveDraft:B,isSaving:p||L}),n.jsx(ue.UndoToast,{})]})})};y.displayName="AgentBuilder";exports.AgentBuilder=y;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),o=require("react"),se=require("../../constants/Theme.js"),a=require("./AgentBuilder.styled.js"),re=require("./components/AgentBuilderFooter.js"),ie=require("./components/AgentBuilderTopBar.js"),le=require("./components/DiscardModal.js"),ue=require("./components/GoLiveModal.js"),ce=require("./components/StepRail.js"),de=require("./components/UndoToast.js"),T=require("./context/AgentBuilderContext.js"),ge=require("./steps/Step1About.js"),Se=require("./steps/Step2WhenItStepsIn.js"),he=require("./steps/Step3HowItResponds.js"),ve=require("./steps/Step4HandoverRules.js"),be=require("../spinner/Spinner.js"),pe=()=>{const{activeStep:u}=T.useAgentBuilderContext();switch(u){case"about":return n.jsx(ge.Step1About,{});case"trigger":return n.jsx(Se.Step2WhenItStepsIn,{});case"response":return n.jsx(he.Step3HowItResponds,{});case"handover":return n.jsx(ve.Step4HandoverRules,{});default:return null}},D=u=>{const{config:y,onChange:v,onStepChange:c,onDiscard:b,onSaveDraft:r,onPublish:p,onBack:d,onTestAgent:g,onGoToDashboard:S,onCreateSubAgent:i,onFetchSubAgent:k,onUpdateSubAgent:q,onImproveSubAgent:I,onImproveToolInstructions:R,...G}=u,{value:h,activeStep:M,availableTools:P,availableSubAgents:w,availableIntents:H=[],availableModels:F=[],configToolTemplates:O,validation:U,applicationType:N,charLimits:W,isSaving:C,isPublishing:f,isLoading:z,footerHint:E="Changes don’t affect customers until you go live",disableStepNavigation:_,debugLog:A}=y,[$,s]=o.useState(null),[j,x]=o.useState(!1),[J,l]=o.useState(!1),[m,L]=o.useState(!1),e=o.useCallback((t,...ae)=>{A&&console.log(`[AgentBuilder] ${t}`,...ae)},[A]),K=o.useCallback(t=>{e("onChange",t),v(t)},[e,v]),Q=o.useCallback(t=>{e("onStepChange",t),c?.(t)},[e,c]),V=o.useCallback(()=>(e("onSaveDraft"),r()),[e,r]),X=o.useCallback(()=>(e("onPublish"),p()),[e,p]),Y=o.useCallback(()=>{e("onBack"),l(!0)},[e]),Z=o.useCallback(()=>{e("onDiscardAndLeave"),l(!1),b()},[e,b]),B=o.useCallback(async()=>{e("onSaveDraftAndLeave");const t=r();if(t&&typeof t.then=="function"){L(!0);try{await t}finally{L(!1)}}l(!1),d?.()},[e,r,d]),ee=o.useCallback(()=>{e("onTestAgent"),g?.()},[e,g]),ne=o.useCallback(()=>{e("onGoToDashboard"),S?.()},[e,S]),te=o.useCallback(t=>(e("onCreateSubAgent",t),i?i(t):Promise.reject(new Error("onCreateSubAgent not provided"))),[e,i]),oe=async()=>{e("onGoLiveConfirm");const t=X();if(t&&typeof t.then=="function"){x(!0);try{await t,s("success")}finally{x(!1)}}else s("success")};return n.jsx(T.AgentBuilderProvider,{value:h,onChange:K,activeStep:M,onStepChange:c?Q:void 0,availableTools:P,availableSubAgents:w,availableIntents:H,availableModels:F,configToolTemplates:O,validation:U,applicationType:N,charLimits:W,disableStepNavigation:_,onCreateSubAgent:i?te:void 0,onFetchSubAgent:k,onUpdateSubAgent:q,onImproveSubAgent:I,onImproveToolInstructions:R,children:n.jsxs(a.BuilderRoot,{"data-test":G["data-test"]??"agent-builder",children:[n.jsx(ie.AgentBuilderTopBar,{name:h.name,status:h.status,onBack:d?Y:void 0,onSaveDraft:B,isSaving:C||m}),n.jsxs(a.Main,{children:[n.jsx(a.Rail,{children:n.jsx(ce.StepRail,{})}),n.jsx(a.Content,{children:z?n.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",height:"100%"},children:n.jsx(be.Spinner,{size:"large",color:se.COLORS.stroke.brand})}):n.jsxs(a.ContentCard,{children:[n.jsx(a.StepScroll,{children:n.jsx(pe,{})}),n.jsx(re.AgentBuilderFooter,{footerHint:E,onTestAgent:g?ee:void 0,onGoLive:()=>{e("onGoLive"),s("confirm")},isPublishing:f||j})]})})]}),n.jsx(ue.GoLiveModal,{mode:$,onClose:()=>s(null),onConfirm:oe,onSaveDraft:()=>{s(null),V()},onGoToDashboard:S?ne:void 0,isPublishing:f||j}),n.jsx(le.DiscardModal,{open:J,onClose:()=>l(!1),onDiscard:Z,onSaveDraft:B,isSaving:C||m}),n.jsx(de.UndoToast,{})]})})};D.displayName="AgentBuilder";exports.AgentBuilder=D;
2
2
  //# sourceMappingURL=AgentBuilder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AgentBuilder.js","sources":["../../../../src/components/agent-builder/AgentBuilder.tsx"],"sourcesContent":["import React, { useCallback, useState } from 'react';\nimport { Spinner } from '@src/components/spinner';\nimport { COLORS } from '@src/constants/Theme';\nimport {\n\tAgentBuilderProps,\n\tAgentValue,\n\tSubAgentDraft,\n} from './AgentBuilder.model';\nimport {\n\tBuilderRoot,\n\tContent,\n\tContentCard,\n\tMain,\n\tRail,\n\tStepScroll,\n} from './AgentBuilder.styled';\nimport { AgentBuilderFooter } from './components/AgentBuilderFooter';\nimport { AgentBuilderTopBar } from './components/AgentBuilderTopBar';\nimport { DiscardModal } from './components/DiscardModal';\nimport { GoLiveModal, GoLiveModalMode } from './components/GoLiveModal';\nimport { StepRail } from './components/StepRail';\nimport { UndoToast } from './components/UndoToast';\nimport {\n\tAgentBuilderProvider,\n\tuseAgentBuilderContext,\n} from './context/AgentBuilderContext';\nimport { Step1About } from './steps/Step1About';\nimport { Step2WhenItStepsIn } from './steps/Step2WhenItStepsIn';\nimport { Step3HowItResponds } from './steps/Step3HowItResponds';\nimport { Step4HandoverRules } from './steps/Step4HandoverRules';\n\nconst StepContent: React.FC = () => {\n\tconst { activeStep } = useAgentBuilderContext();\n\tswitch (activeStep) {\n\t\tcase 'about':\n\t\t\treturn <Step1About />;\n\t\tcase 'trigger':\n\t\t\treturn <Step2WhenItStepsIn />;\n\t\tcase 'response':\n\t\t\treturn <Step3HowItResponds />;\n\t\tcase 'handover':\n\t\t\treturn <Step4HandoverRules />;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n\n/**\n * 4-step creation/edit wizard body for an AI agent. Presentational and\n * controlled — the consumer owns the `value`, persistence and routing.\n *\n * @example\n * <AgentBuilder\n * value={agent}\n * onChange={(patch) => setAgent({ ...agent, ...patch })}\n * availableTools={tools}\n * availableSubAgents={subAgents}\n * onDiscard={() => router.back()}\n * onSaveDraft={saveDraft}\n * onPublish={publish}\n * />\n */\nexport const AgentBuilder: React.FC<AgentBuilderProps> = (props) => {\n\tconst {\n\t\tconfig,\n\t\tonChange,\n\t\tonStepChange,\n\t\tonDiscard,\n\t\tonSaveDraft,\n\t\tonPublish,\n\t\tonBack,\n\t\tonTestAgent,\n\t\tonGoToDashboard,\n\t\tonCreateSubAgent,\n\t\tonFetchSubAgent,\n\t\tonUpdateSubAgent,\n\t\tonImproveSubAgent,\n\t\t...rest\n\t} = props;\n\tconst {\n\t\tvalue,\n\t\tactiveStep,\n\t\tavailableTools,\n\t\tavailableSubAgents,\n\t\tavailableIntents = [],\n\t\tavailableModels = [],\n\t\tvalidation,\n\t\tapplicationType,\n\t\tcharLimits,\n\t\tisSaving,\n\t\tisPublishing,\n\t\tisLoading,\n\t\tfooterHint = 'Changes don’t affect customers until you go live',\n\t\tdisableStepNavigation,\n\t\tdebugLog,\n\t} = config;\n\n\tconst [modalMode, setModalMode] = useState<GoLiveModalMode>(null);\n\tconst [publishingLocal, setPublishingLocal] = useState(false);\n\t// Back was pressed → confirm leaving (save draft / discard) before navigating.\n\tconst [showLeaveConfirm, setShowLeaveConfirm] = useState(false);\n\tconst [savingAndLeaving, setSavingAndLeaving] = useState(false);\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(`[AgentBuilder] ${action}`, ...args);\n\t\t\t}\n\t\t},\n\t\t[debugLog],\n\t);\n\n\tconst handleChange = useCallback(\n\t\t(patch: Partial<AgentValue>) => {\n\t\t\tlogAction('onChange', patch);\n\t\t\tonChange(patch);\n\t\t},\n\t\t[logAction, onChange],\n\t);\n\tconst handleStepChange = useCallback(\n\t\t(step: Parameters<NonNullable<typeof onStepChange>>[0]) => {\n\t\t\tlogAction('onStepChange', step);\n\t\t\tonStepChange?.(step);\n\t\t},\n\t\t[logAction, onStepChange],\n\t);\n\tconst handleSaveDraft = useCallback(() => {\n\t\tlogAction('onSaveDraft');\n\t\treturn onSaveDraft();\n\t}, [logAction, onSaveDraft]);\n\tconst handlePublish = useCallback(() => {\n\t\tlogAction('onPublish');\n\t\treturn onPublish();\n\t}, [logAction, onPublish]);\n\t// Back opens the \"Save as draft?\" confirmation rather than leaving directly.\n\tconst handleBack = useCallback(() => {\n\t\tlogAction('onBack');\n\t\tsetShowLeaveConfirm(true);\n\t}, [logAction]);\n\n\t// Modal \"Discard\" defers to the parent's discard handler (same as the top bar).\n\tconst handleDiscardAndLeave = useCallback(() => {\n\t\tlogAction('onDiscardAndLeave');\n\t\tsetShowLeaveConfirm(false);\n\t\tonDiscard();\n\t}, [logAction, onDiscard]);\n\n\tconst handleSaveDraftAndLeave = useCallback(async () => {\n\t\tlogAction('onSaveDraftAndLeave');\n\t\tconst result = onSaveDraft();\n\t\tif (result && typeof (result as Promise<void>).then === 'function') {\n\t\t\tsetSavingAndLeaving(true);\n\t\t\ttry {\n\t\t\t\tawait result;\n\t\t\t} finally {\n\t\t\t\tsetSavingAndLeaving(false);\n\t\t\t}\n\t\t}\n\t\tsetShowLeaveConfirm(false);\n\t\tonBack?.();\n\t}, [logAction, onSaveDraft, onBack]);\n\tconst handleTestAgent = useCallback(() => {\n\t\tlogAction('onTestAgent');\n\t\tonTestAgent?.();\n\t}, [logAction, onTestAgent]);\n\tconst handleGoToDashboard = useCallback(() => {\n\t\tlogAction('onGoToDashboard');\n\t\tonGoToDashboard?.();\n\t}, [logAction, onGoToDashboard]);\n\tconst handleCreateSubAgent = useCallback(\n\t\t(draft: SubAgentDraft) => {\n\t\t\tlogAction('onCreateSubAgent', draft);\n\t\t\treturn onCreateSubAgent\n\t\t\t\t? onCreateSubAgent(draft)\n\t\t\t\t: Promise.reject(new Error('onCreateSubAgent not provided'));\n\t\t},\n\t\t[logAction, onCreateSubAgent],\n\t);\n\n\tconst handleConfirmGoLive = async () => {\n\t\tlogAction('onGoLiveConfirm');\n\t\tconst result = handlePublish();\n\t\tif (result && typeof (result as Promise<void>).then === 'function') {\n\t\t\tsetPublishingLocal(true);\n\t\t\ttry {\n\t\t\t\tawait result;\n\t\t\t\tsetModalMode('success');\n\t\t\t} finally {\n\t\t\t\tsetPublishingLocal(false);\n\t\t\t}\n\t\t} else {\n\t\t\tsetModalMode('success');\n\t\t}\n\t};\n\n\treturn (\n\t\t<AgentBuilderProvider\n\t\t\tvalue={value}\n\t\t\tonChange={handleChange}\n\t\t\tactiveStep={activeStep}\n\t\t\tonStepChange={onStepChange ? handleStepChange : undefined}\n\t\t\tavailableTools={availableTools}\n\t\t\tavailableSubAgents={availableSubAgents}\n\t\t\tavailableIntents={availableIntents}\n\t\t\tavailableModels={availableModels}\n\t\t\tvalidation={validation}\n\t\t\tapplicationType={applicationType}\n\t\t\tcharLimits={charLimits}\n\t\t\tdisableStepNavigation={disableStepNavigation}\n\t\t\tonCreateSubAgent={onCreateSubAgent ? handleCreateSubAgent : undefined}\n\t\t\tonFetchSubAgent={onFetchSubAgent}\n\t\t\tonUpdateSubAgent={onUpdateSubAgent}\n\t\t\tonImproveSubAgent={onImproveSubAgent}\n\t\t>\n\t\t\t<BuilderRoot data-test={rest['data-test'] ?? 'agent-builder'}>\n\t\t\t\t<AgentBuilderTopBar\n\t\t\t\t\tname={value.name}\n\t\t\t\t\tstatus={value.status}\n\t\t\t\t\tonBack={onBack ? handleBack : undefined}\n\t\t\t\t\tonSaveDraft={handleSaveDraftAndLeave}\n\t\t\t\t\tisSaving={isSaving || savingAndLeaving}\n\t\t\t\t/>\n\n\t\t\t\t<Main>\n\t\t\t\t\t<Rail>\n\t\t\t\t\t\t<StepRail />\n\t\t\t\t\t</Rail>\n\t\t\t\t\t<Content>\n\t\t\t\t\t\t{isLoading ? (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\t\t\tjustifyContent: 'center',\n\t\t\t\t\t\t\t\t\theight: '100%',\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Spinner size=\"large\" color={COLORS.stroke.brand} />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<ContentCard>\n\t\t\t\t\t\t\t\t<StepScroll>\n\t\t\t\t\t\t\t\t\t<StepContent />\n\t\t\t\t\t\t\t\t</StepScroll>\n\t\t\t\t\t\t\t\t<AgentBuilderFooter\n\t\t\t\t\t\t\t\t\tfooterHint={footerHint}\n\t\t\t\t\t\t\t\t\tonTestAgent={onTestAgent ? handleTestAgent : undefined}\n\t\t\t\t\t\t\t\t\tonGoLive={() => {\n\t\t\t\t\t\t\t\t\t\tlogAction('onGoLive');\n\t\t\t\t\t\t\t\t\t\tsetModalMode('confirm');\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tisPublishing={isPublishing || publishingLocal}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</ContentCard>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Content>\n\t\t\t\t</Main>\n\n\t\t\t\t<GoLiveModal\n\t\t\t\t\tmode={modalMode}\n\t\t\t\t\tonClose={() => setModalMode(null)}\n\t\t\t\t\tonConfirm={handleConfirmGoLive}\n\t\t\t\t\tonSaveDraft={() => {\n\t\t\t\t\t\tsetModalMode(null);\n\t\t\t\t\t\thandleSaveDraft();\n\t\t\t\t\t}}\n\t\t\t\t\tonGoToDashboard={onGoToDashboard ? handleGoToDashboard : undefined}\n\t\t\t\t\tisPublishing={isPublishing || publishingLocal}\n\t\t\t\t/>\n\n\t\t\t\t<DiscardModal\n\t\t\t\t\topen={showLeaveConfirm}\n\t\t\t\t\tonClose={() => setShowLeaveConfirm(false)}\n\t\t\t\t\tonDiscard={handleDiscardAndLeave}\n\t\t\t\t\tonSaveDraft={handleSaveDraftAndLeave}\n\t\t\t\t\tisSaving={isSaving || savingAndLeaving}\n\t\t\t\t/>\n\n\t\t\t\t<UndoToast />\n\t\t\t</BuilderRoot>\n\t\t</AgentBuilderProvider>\n\t);\n};\n\nAgentBuilder.displayName = 'AgentBuilder';\n"],"names":["StepContent","activeStep","useAgentBuilderContext","Step1About","Step2WhenItStepsIn","Step3HowItResponds","Step4HandoverRules","AgentBuilder","props","config","onChange","onStepChange","onDiscard","onSaveDraft","onPublish","onBack","onTestAgent","onGoToDashboard","onCreateSubAgent","onFetchSubAgent","onUpdateSubAgent","onImproveSubAgent","rest","value","availableTools","availableSubAgents","availableIntents","availableModels","validation","applicationType","charLimits","isSaving","isPublishing","isLoading","footerHint","disableStepNavigation","debugLog","modalMode","setModalMode","useState","publishingLocal","setPublishingLocal","showLeaveConfirm","setShowLeaveConfirm","savingAndLeaving","setSavingAndLeaving","logAction","useCallback","action","args","handleChange","patch","handleStepChange","step","handleSaveDraft","handlePublish","handleBack","handleDiscardAndLeave","handleSaveDraftAndLeave","result","handleTestAgent","handleGoToDashboard","handleCreateSubAgent","draft","handleConfirmGoLive","jsx","AgentBuilderProvider","BuilderRoot","AgentBuilderTopBar","Main","Rail","StepRail","Content","Spinner","COLORS","ContentCard","StepScroll","AgentBuilderFooter","GoLiveModal","DiscardModal","UndoToast"],"mappings":"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"}
1
+ {"version":3,"file":"AgentBuilder.js","sources":["../../../../src/components/agent-builder/AgentBuilder.tsx"],"sourcesContent":["import React, { useCallback, useState } from 'react';\nimport { Spinner } from '@src/components/spinner';\nimport { COLORS } from '@src/constants/Theme';\nimport {\n\tAgentBuilderProps,\n\tAgentValue,\n\tSubAgentDraft,\n} from './AgentBuilder.model';\nimport {\n\tBuilderRoot,\n\tContent,\n\tContentCard,\n\tMain,\n\tRail,\n\tStepScroll,\n} from './AgentBuilder.styled';\nimport { AgentBuilderFooter } from './components/AgentBuilderFooter';\nimport { AgentBuilderTopBar } from './components/AgentBuilderTopBar';\nimport { DiscardModal } from './components/DiscardModal';\nimport { GoLiveModal, GoLiveModalMode } from './components/GoLiveModal';\nimport { StepRail } from './components/StepRail';\nimport { UndoToast } from './components/UndoToast';\nimport {\n\tAgentBuilderProvider,\n\tuseAgentBuilderContext,\n} from './context/AgentBuilderContext';\nimport { Step1About } from './steps/Step1About';\nimport { Step2WhenItStepsIn } from './steps/Step2WhenItStepsIn';\nimport { Step3HowItResponds } from './steps/Step3HowItResponds';\nimport { Step4HandoverRules } from './steps/Step4HandoverRules';\n\nconst StepContent: React.FC = () => {\n\tconst { activeStep } = useAgentBuilderContext();\n\tswitch (activeStep) {\n\t\tcase 'about':\n\t\t\treturn <Step1About />;\n\t\tcase 'trigger':\n\t\t\treturn <Step2WhenItStepsIn />;\n\t\tcase 'response':\n\t\t\treturn <Step3HowItResponds />;\n\t\tcase 'handover':\n\t\t\treturn <Step4HandoverRules />;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n\n/**\n * 4-step creation/edit wizard body for an AI agent. Presentational and\n * controlled — the consumer owns the `value`, persistence and routing.\n *\n * @example\n * <AgentBuilder\n * value={agent}\n * onChange={(patch) => setAgent({ ...agent, ...patch })}\n * availableTools={tools}\n * availableSubAgents={subAgents}\n * onDiscard={() => router.back()}\n * onSaveDraft={saveDraft}\n * onPublish={publish}\n * />\n */\nexport const AgentBuilder: React.FC<AgentBuilderProps> = (props) => {\n\tconst {\n\t\tconfig,\n\t\tonChange,\n\t\tonStepChange,\n\t\tonDiscard,\n\t\tonSaveDraft,\n\t\tonPublish,\n\t\tonBack,\n\t\tonTestAgent,\n\t\tonGoToDashboard,\n\t\tonCreateSubAgent,\n\t\tonFetchSubAgent,\n\t\tonUpdateSubAgent,\n\t\tonImproveSubAgent,\n\t\tonImproveToolInstructions,\n\t\t...rest\n\t} = props;\n\tconst {\n\t\tvalue,\n\t\tactiveStep,\n\t\tavailableTools,\n\t\tavailableSubAgents,\n\t\tavailableIntents = [],\n\t\tavailableModels = [],\n\t\tconfigToolTemplates,\n\t\tvalidation,\n\t\tapplicationType,\n\t\tcharLimits,\n\t\tisSaving,\n\t\tisPublishing,\n\t\tisLoading,\n\t\tfooterHint = 'Changes don’t affect customers until you go live',\n\t\tdisableStepNavigation,\n\t\tdebugLog,\n\t} = config;\n\n\tconst [modalMode, setModalMode] = useState<GoLiveModalMode>(null);\n\tconst [publishingLocal, setPublishingLocal] = useState(false);\n\t// Back was pressed → confirm leaving (save draft / discard) before navigating.\n\tconst [showLeaveConfirm, setShowLeaveConfirm] = useState(false);\n\tconst [savingAndLeaving, setSavingAndLeaving] = useState(false);\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(`[AgentBuilder] ${action}`, ...args);\n\t\t\t}\n\t\t},\n\t\t[debugLog],\n\t);\n\n\tconst handleChange = useCallback(\n\t\t(patch: Partial<AgentValue>) => {\n\t\t\tlogAction('onChange', patch);\n\t\t\tonChange(patch);\n\t\t},\n\t\t[logAction, onChange],\n\t);\n\tconst handleStepChange = useCallback(\n\t\t(step: Parameters<NonNullable<typeof onStepChange>>[0]) => {\n\t\t\tlogAction('onStepChange', step);\n\t\t\tonStepChange?.(step);\n\t\t},\n\t\t[logAction, onStepChange],\n\t);\n\tconst handleSaveDraft = useCallback(() => {\n\t\tlogAction('onSaveDraft');\n\t\treturn onSaveDraft();\n\t}, [logAction, onSaveDraft]);\n\tconst handlePublish = useCallback(() => {\n\t\tlogAction('onPublish');\n\t\treturn onPublish();\n\t}, [logAction, onPublish]);\n\t// Back opens the \"Save as draft?\" confirmation rather than leaving directly.\n\tconst handleBack = useCallback(() => {\n\t\tlogAction('onBack');\n\t\tsetShowLeaveConfirm(true);\n\t}, [logAction]);\n\n\t// Modal \"Discard\" defers to the parent's discard handler (same as the top bar).\n\tconst handleDiscardAndLeave = useCallback(() => {\n\t\tlogAction('onDiscardAndLeave');\n\t\tsetShowLeaveConfirm(false);\n\t\tonDiscard();\n\t}, [logAction, onDiscard]);\n\n\tconst handleSaveDraftAndLeave = useCallback(async () => {\n\t\tlogAction('onSaveDraftAndLeave');\n\t\tconst result = onSaveDraft();\n\t\tif (result && typeof (result as Promise<void>).then === 'function') {\n\t\t\tsetSavingAndLeaving(true);\n\t\t\ttry {\n\t\t\t\tawait result;\n\t\t\t} finally {\n\t\t\t\tsetSavingAndLeaving(false);\n\t\t\t}\n\t\t}\n\t\tsetShowLeaveConfirm(false);\n\t\tonBack?.();\n\t}, [logAction, onSaveDraft, onBack]);\n\tconst handleTestAgent = useCallback(() => {\n\t\tlogAction('onTestAgent');\n\t\tonTestAgent?.();\n\t}, [logAction, onTestAgent]);\n\tconst handleGoToDashboard = useCallback(() => {\n\t\tlogAction('onGoToDashboard');\n\t\tonGoToDashboard?.();\n\t}, [logAction, onGoToDashboard]);\n\tconst handleCreateSubAgent = useCallback(\n\t\t(draft: SubAgentDraft) => {\n\t\t\tlogAction('onCreateSubAgent', draft);\n\t\t\treturn onCreateSubAgent\n\t\t\t\t? onCreateSubAgent(draft)\n\t\t\t\t: Promise.reject(new Error('onCreateSubAgent not provided'));\n\t\t},\n\t\t[logAction, onCreateSubAgent],\n\t);\n\n\tconst handleConfirmGoLive = async () => {\n\t\tlogAction('onGoLiveConfirm');\n\t\tconst result = handlePublish();\n\t\tif (result && typeof (result as Promise<void>).then === 'function') {\n\t\t\tsetPublishingLocal(true);\n\t\t\ttry {\n\t\t\t\tawait result;\n\t\t\t\tsetModalMode('success');\n\t\t\t} finally {\n\t\t\t\tsetPublishingLocal(false);\n\t\t\t}\n\t\t} else {\n\t\t\tsetModalMode('success');\n\t\t}\n\t};\n\n\treturn (\n\t\t<AgentBuilderProvider\n\t\t\tvalue={value}\n\t\t\tonChange={handleChange}\n\t\t\tactiveStep={activeStep}\n\t\t\tonStepChange={onStepChange ? handleStepChange : undefined}\n\t\t\tavailableTools={availableTools}\n\t\t\tavailableSubAgents={availableSubAgents}\n\t\t\tavailableIntents={availableIntents}\n\t\t\tavailableModels={availableModels}\n\t\t\tconfigToolTemplates={configToolTemplates}\n\t\t\tvalidation={validation}\n\t\t\tapplicationType={applicationType}\n\t\t\tcharLimits={charLimits}\n\t\t\tdisableStepNavigation={disableStepNavigation}\n\t\t\tonCreateSubAgent={onCreateSubAgent ? handleCreateSubAgent : undefined}\n\t\t\tonFetchSubAgent={onFetchSubAgent}\n\t\t\tonUpdateSubAgent={onUpdateSubAgent}\n\t\t\tonImproveSubAgent={onImproveSubAgent}\n\t\t\tonImproveToolInstructions={onImproveToolInstructions}\n\t\t>\n\t\t\t<BuilderRoot data-test={rest['data-test'] ?? 'agent-builder'}>\n\t\t\t\t<AgentBuilderTopBar\n\t\t\t\t\tname={value.name}\n\t\t\t\t\tstatus={value.status}\n\t\t\t\t\tonBack={onBack ? handleBack : undefined}\n\t\t\t\t\tonSaveDraft={handleSaveDraftAndLeave}\n\t\t\t\t\tisSaving={isSaving || savingAndLeaving}\n\t\t\t\t/>\n\n\t\t\t\t<Main>\n\t\t\t\t\t<Rail>\n\t\t\t\t\t\t<StepRail />\n\t\t\t\t\t</Rail>\n\t\t\t\t\t<Content>\n\t\t\t\t\t\t{isLoading ? (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\t\t\tjustifyContent: 'center',\n\t\t\t\t\t\t\t\t\theight: '100%',\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Spinner size=\"large\" color={COLORS.stroke.brand} />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<ContentCard>\n\t\t\t\t\t\t\t\t<StepScroll>\n\t\t\t\t\t\t\t\t\t<StepContent />\n\t\t\t\t\t\t\t\t</StepScroll>\n\t\t\t\t\t\t\t\t<AgentBuilderFooter\n\t\t\t\t\t\t\t\t\tfooterHint={footerHint}\n\t\t\t\t\t\t\t\t\tonTestAgent={onTestAgent ? handleTestAgent : undefined}\n\t\t\t\t\t\t\t\t\tonGoLive={() => {\n\t\t\t\t\t\t\t\t\t\tlogAction('onGoLive');\n\t\t\t\t\t\t\t\t\t\tsetModalMode('confirm');\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tisPublishing={isPublishing || publishingLocal}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</ContentCard>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Content>\n\t\t\t\t</Main>\n\n\t\t\t\t<GoLiveModal\n\t\t\t\t\tmode={modalMode}\n\t\t\t\t\tonClose={() => setModalMode(null)}\n\t\t\t\t\tonConfirm={handleConfirmGoLive}\n\t\t\t\t\tonSaveDraft={() => {\n\t\t\t\t\t\tsetModalMode(null);\n\t\t\t\t\t\thandleSaveDraft();\n\t\t\t\t\t}}\n\t\t\t\t\tonGoToDashboard={onGoToDashboard ? handleGoToDashboard : undefined}\n\t\t\t\t\tisPublishing={isPublishing || publishingLocal}\n\t\t\t\t/>\n\n\t\t\t\t<DiscardModal\n\t\t\t\t\topen={showLeaveConfirm}\n\t\t\t\t\tonClose={() => setShowLeaveConfirm(false)}\n\t\t\t\t\tonDiscard={handleDiscardAndLeave}\n\t\t\t\t\tonSaveDraft={handleSaveDraftAndLeave}\n\t\t\t\t\tisSaving={isSaving || savingAndLeaving}\n\t\t\t\t/>\n\n\t\t\t\t<UndoToast />\n\t\t\t</BuilderRoot>\n\t\t</AgentBuilderProvider>\n\t);\n};\n\nAgentBuilder.displayName = 'AgentBuilder';\n"],"names":["StepContent","activeStep","useAgentBuilderContext","Step1About","Step2WhenItStepsIn","Step3HowItResponds","Step4HandoverRules","AgentBuilder","props","config","onChange","onStepChange","onDiscard","onSaveDraft","onPublish","onBack","onTestAgent","onGoToDashboard","onCreateSubAgent","onFetchSubAgent","onUpdateSubAgent","onImproveSubAgent","onImproveToolInstructions","rest","value","availableTools","availableSubAgents","availableIntents","availableModels","configToolTemplates","validation","applicationType","charLimits","isSaving","isPublishing","isLoading","footerHint","disableStepNavigation","debugLog","modalMode","setModalMode","useState","publishingLocal","setPublishingLocal","showLeaveConfirm","setShowLeaveConfirm","savingAndLeaving","setSavingAndLeaving","logAction","useCallback","action","args","handleChange","patch","handleStepChange","step","handleSaveDraft","handlePublish","handleBack","handleDiscardAndLeave","handleSaveDraftAndLeave","result","handleTestAgent","handleGoToDashboard","handleCreateSubAgent","draft","handleConfirmGoLive","jsx","AgentBuilderProvider","BuilderRoot","AgentBuilderTopBar","Main","Rail","StepRail","Content","Spinner","COLORS","ContentCard","StepScroll","AgentBuilderFooter","GoLiveModal","DiscardModal","UndoToast"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("styled-components"),t=require("../../constants/Theme.js"),n=a=>a&&typeof a=="object"&&"default"in a?a:{default:a},e=n(i),o=i.css`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("styled-components"),t=require("../../constants/Theme.js"),r=a=>a&&typeof a=="object"&&"default"in a?a:{default:a},e=r(i),o=i.css`
2
2
  display: flex;
3
3
  align-items: center;
4
4
  justify-content: center;
@@ -20,7 +20,7 @@
20
20
  width: 100%;
21
21
  min-height: 0;
22
22
  background: ${t.COLORS.surface.standard};
23
- `,r=e.default.div.attrs({className:"bik-top-bar"})`
23
+ `,n=e.default.div.attrs({className:"bik-top-bar"})`
24
24
  display: flex;
25
25
  align-items: center;
26
26
  justify-content: space-between;
@@ -146,13 +146,13 @@
146
146
  line-height: 12px;
147
147
  background: ${a=>a.state==="complete"?t.COLORS.background.inverseLight:a.state==="active"?t.COLORS.background.brandLight:t.COLORS.background.base};
148
148
  color: ${a=>a.state==="complete"?t.COLORS.surface.standard:a.state==="active"?t.COLORS.background.inverseLight:t.COLORS.content.secondary};
149
- `,S=e.default.div.attrs({className:"bik-section-header-wrap"})`
149
+ `,w=e.default.div.attrs({className:"bik-section-header-wrap"})`
150
150
  display: flex;
151
151
  flex-direction: column;
152
152
  gap: 4px;
153
153
  padding: 16px;
154
154
  border-bottom: 1px solid ${t.COLORS.stroke.primary};
155
- `,w=e.default.div.attrs({className:"bik-section-header-wrap"})`
155
+ `,S=e.default.div.attrs({className:"bik-section-header-wrap"})`
156
156
  display: flex;
157
157
  flex-direction: column;
158
158
  gap: 16px;
@@ -240,11 +240,11 @@
240
240
  border-radius: 4px;
241
241
  background: transparent;
242
242
  cursor: pointer;
243
- `,F=e.default.div.attrs({className:"bik-agent-step bik-agent-step--response"})`
243
+ `,I=e.default.div.attrs({className:"bik-agent-step bik-agent-step--response"})`
244
244
  display: flex;
245
245
  flex-direction: column;
246
246
  min-height: 100%;
247
- `,I=e.default.div.attrs({className:"bik-step3-grid"})`
247
+ `,F=e.default.div.attrs({className:"bik-step3-grid"})`
248
248
  display: grid;
249
249
  grid-template-columns: minmax(0, 1fr) 1px 360px;
250
250
  /* Single row that fills the grid's height, so the divider spans the full
@@ -264,7 +264,7 @@
264
264
  flex: 1;
265
265
  min-height: 0;
266
266
  `}
267
- `,H=e.default.div.attrs({className:"bik-step3-divider"})`
267
+ `,M=e.default.div.attrs({className:"bik-step3-divider"})`
268
268
  width: 1px;
269
269
  align-self: stretch;
270
270
  background: ${t.COLORS.stroke.primary};
@@ -272,20 +272,21 @@
272
272
  @media (max-width: 1100px) {
273
273
  display: none;
274
274
  }
275
- `,M=e.default.div.attrs({className:"bik-side-section"})`
275
+ `,H=e.default.div.attrs({className:"bik-side-section"})`
276
276
  display: flex;
277
277
  flex-direction: column;
278
278
  gap: 8px;
279
- `,P=e.default.div.attrs({className:"bik-side-section-header"})`
279
+ `,D=e.default.div.attrs({className:"bik-side-section-header"})`
280
280
  display: flex;
281
281
  align-items: center;
282
282
  justify-content: space-between;
283
- `,z=e.default.button.attrs({className:"bik-add-icon-button"})`
283
+ `,W=e.default.button.attrs({className:"bik-add-icon-button"})`
284
284
  ${o}
285
- `,D=e.default.div.attrs({className:"bik-source-button-row"})`
285
+ `,z=e.default.div.attrs({className:"bik-source-button-row"})`
286
286
  display: flex;
287
+ flex-wrap: wrap;
287
288
  gap: 8px;
288
- `,W=e.default.button.attrs({className:"bik-source-button"})`
289
+ `,_=e.default.button.attrs({className:"bik-source-button"})`
289
290
  display: flex;
290
291
  align-items: center;
291
292
  gap: 8px;
@@ -299,7 +300,7 @@
299
300
  &:hover {
300
301
  background: ${t.COLORS.surface.subdued};
301
302
  }
302
- `,_=e.default.div.attrs({className:"bik-selectable-row"})`
303
+ `,q=e.default.div.attrs({className:"bik-selectable-row"})`
303
304
  display: flex;
304
305
  align-items: center;
305
306
  gap: 8px;
@@ -313,7 +314,7 @@
313
314
  & > svg {
314
315
  flex-shrink: 0;
315
316
  }
316
- `,q=e.default.div.attrs({className:"bik-row-text"})`
317
+ `,G=e.default.div.attrs({className:"bik-row-text"})`
317
318
  flex: 1;
318
319
  min-width: 0;
319
320
  overflow: hidden;
@@ -333,7 +334,7 @@
333
334
  background: transparent;
334
335
  padding: 0;
335
336
  cursor: pointer;
336
- `;const G=e.default.div.attrs({className:"bik-row-actions"})`
337
+ `;const P=e.default.div.attrs({className:"bik-row-actions"})`
337
338
  display: flex;
338
339
  align-items: center;
339
340
  gap: 4px;
@@ -361,58 +362,9 @@
361
362
  display: flex;
362
363
  gap: 12px;
363
364
  width: 100%;
364
- `,V=e.default.div.attrs({className:"bik-subagent-scrim"})`
365
- position: fixed;
366
- inset: 0;
367
- background: rgba(0, 0, 0, 0.32);
368
- z-index: 1000;
369
- `,X=e.default.div.attrs({className:"bik-subagent-panel"})`
370
- position: fixed;
371
- top: 0;
372
- right: 0;
373
- height: 100%;
374
- width: 421px;
375
- max-width: 100%;
376
- display: flex;
377
- flex-direction: column;
378
- background: ${t.COLORS.surface.standard};
379
- box-shadow: -8px 0 24px rgba(0, 0, 0, 0.12);
380
- z-index: 1001;
381
- box-sizing: border-box;
382
- `,Y=e.default.div.attrs({className:"bik-subagent-panel-header"})`
383
- display: flex;
384
- align-items: flex-start;
385
- justify-content: space-between;
386
- padding: 10px 12px;
387
- border-bottom: 1px solid ${t.COLORS.stroke.primary};
388
- flex-shrink: 0;
389
- `,Z=e.default.div.attrs({className:"bik-subagent-panel-header-text"})`
390
- display: flex;
391
- flex-direction: column;
392
- gap: 4px;
393
- min-width: 0;
394
- `,ee=e.default.div.attrs({className:"bik-subagent-panel-body"})`
395
- flex: 1;
396
- min-height: 0;
397
- overflow-y: auto;
398
- padding: 16px;
399
- display: flex;
400
- flex-direction: column;
401
- gap: 16px;
402
- `,te=e.default.div.attrs({className:"bik-subagent-panel-footer"})`
403
- display: flex;
404
- align-items: center;
405
- gap: 8px;
406
- padding: 8px 12px;
407
- min-height: 48px;
408
- border-top: 1px solid ${t.COLORS.stroke.primary};
409
- flex-shrink: 0;
410
- `,ae=e.default.button.attrs({className:"bik-subagent-close"})`
411
- ${o}
412
- flex-shrink: 0;
413
365
  `;e.default.div.attrs({className:"bik-field-action-row"})`
414
366
  display: flex;
415
367
  align-items: center;
416
368
  gap: 8px;
417
- `;exports.AddChipButton=j;exports.AddIconButton=z;exports.AiTextAreaInput=C;exports.AiTextAreaShell=R;exports.BackButton=l;exports.BuilderRoot=s;exports.CardRow=N;exports.ChipCloseButton=T;exports.ChipWrap=$;exports.Content=u;exports.ContentCard=x;exports.FieldBlock=O;exports.FieldLabelRow=v;exports.Footer=b;exports.FooterActions=m;exports.FooterHint=g;exports.IntentChip=A;exports.Main=c;exports.ModalActions=U;exports.ModalBody=K;exports.ModalIcon=Q;exports.RadioCard=L;exports.RadioCardText=B;exports.Rail=p;exports.RailItem=k;exports.RailList=h;exports.RowActionDivider=E;exports.RowActions=G;exports.RowMenuButton=J;exports.RowText=q;exports.SectionBodyWrap=w;exports.SectionHeaderWrap=S;exports.SelectableRow=_;exports.SideSection=M;exports.SideSectionHeader=P;exports.SourceButton=W;exports.SourceButtonRow=D;exports.Step3Divider=H;exports.Step3Grid=I;exports.Step3Root=F;exports.StepBadge=y;exports.StepScroll=f;exports.SubAgentCloseButton=ae;exports.SubAgentPanel=X;exports.SubAgentPanelBody=ee;exports.SubAgentPanelFooter=te;exports.SubAgentPanelHeader=Y;exports.SubAgentPanelHeaderText=Z;exports.SubAgentScrim=V;exports.TopBar=r;exports.TopBarSide=d;
369
+ `;exports.AddChipButton=j;exports.AddIconButton=W;exports.AiTextAreaInput=C;exports.AiTextAreaShell=R;exports.BackButton=l;exports.BuilderRoot=s;exports.CardRow=N;exports.ChipCloseButton=T;exports.ChipWrap=$;exports.Content=u;exports.ContentCard=x;exports.FieldBlock=O;exports.FieldLabelRow=v;exports.Footer=b;exports.FooterActions=m;exports.FooterHint=g;exports.IntentChip=A;exports.Main=c;exports.ModalActions=U;exports.ModalBody=K;exports.ModalIcon=Q;exports.RadioCard=L;exports.RadioCardText=B;exports.Rail=p;exports.RailItem=k;exports.RailList=h;exports.RowActionDivider=E;exports.RowActions=P;exports.RowMenuButton=J;exports.RowText=G;exports.SectionBodyWrap=S;exports.SectionHeaderWrap=w;exports.SelectableRow=q;exports.SideSection=H;exports.SideSectionHeader=D;exports.SourceButton=_;exports.SourceButtonRow=z;exports.Step3Divider=M;exports.Step3Grid=F;exports.Step3Root=I;exports.StepBadge=y;exports.StepScroll=f;exports.TopBar=n;exports.TopBarSide=d;
418
370
  //# sourceMappingURL=AgentBuilder.styled.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AgentBuilder.styled.js","sources":["../../../../src/components/agent-builder/AgentBuilder.styled.tsx"],"sourcesContent":["import styled, { css } from 'styled-components';\nimport { COLORS } from '@src/constants/Theme';\n\n// Shared look for the 24×24 transparent icon buttons (add / row-menu / close).\nconst iconActionButton = css`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: 24px;\n\theight: 24px;\n\tborder: none;\n\tbackground: transparent;\n\tpadding: 0;\n\tcursor: pointer;\n\tborder-radius: 4px;\n\n\t&:hover {\n\t\tbackground: ${COLORS.surface.subdued};\n\t}\n`;\n\nexport const BuilderRoot = styled.div.attrs({ className: 'bik-builder-root' })`\n\tdisplay: flex;\n\tflex-direction: column;\n\theight: 100%;\n\twidth: 100%;\n\tmin-height: 0;\n\tbackground: ${COLORS.surface.standard};\n`;\n\nexport const TopBar = styled.div.attrs({ className: 'bik-top-bar' })`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\theight: 56px;\n\tpadding: 12px 16px;\n\tborder-bottom: 1px solid ${COLORS.stroke.primary};\n\tflex-shrink: 0;\n`;\n\nexport const TopBarSide = styled.div.attrs({ className: 'bik-top-bar-side' })`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 8px;\n`;\n\nexport const BackButton = styled.button.attrs({ className: 'bik-back-button' })`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: 28px;\n\theight: 28px;\n\tborder: none;\n\tbackground: transparent;\n\tpadding: 0;\n\tcursor: pointer;\n\tborder-radius: 4px;\n\n\t&:hover {\n\t\tbackground: ${COLORS.surface.subdued};\n\t}\n`;\n\nexport const Main = styled.div.attrs({ className: 'bik-main' })`\n\tdisplay: flex;\n\tflex: 1;\n\tmin-height: 0;\n`;\n\nexport const Rail = styled.div.attrs({ className: 'bik-rail' })`\n\twidth: 234px;\n\tflex-shrink: 0;\n\tborder-right: 1px solid ${COLORS.stroke.primary};\n\tpadding: 16px;\n\toverflow-y: auto;\n\tbackground: ${COLORS.surface.standard};\n`;\n\nexport const Content = styled.div.attrs({ className: 'bik-content' })`\n\tflex: 1;\n\tmin-width: 0;\n\tmin-height: 0;\n\toverflow: hidden;\n\tdisplay: flex;\n\tflex-direction: column;\n\tpadding: 16px;\n\tbackground: ${COLORS.surface.standard};\n`;\n\nexport const ContentCard = styled.div.attrs({ className: 'bik-content-card' })`\n\tflex: 1;\n\tmin-height: 0;\n\tdisplay: flex;\n\tflex-direction: column;\n\toverflow: hidden;\n\tborder: 1px solid ${COLORS.stroke.primary};\n\tborder-radius: 8px;\n\tbox-sizing: border-box;\n`;\n\n// Scrollable step body inside the card; the footer stays pinned below it.\nexport const StepScroll = styled.div.attrs({ className: 'bik-step-scroll' })`\n\tflex: 1;\n\tmin-height: 0;\n\toverflow-y: auto;\n`;\n\nexport const Footer = styled.div.attrs({ className: 'bik-footer' })`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tmin-height: 56px;\n\tpadding: 12px 16px;\n\tborder-top: 1px solid ${COLORS.stroke.primary};\n\tflex-shrink: 0;\n\tbox-shadow: 0px -2px 12px 0px #0000000a;\n`;\n\nexport const FooterHint = styled.div.attrs({ className: 'bik-footer-hint' })`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 6px;\n`;\n\nexport const FooterActions = styled.div.attrs({\n\tclassName: 'bik-footer-actions',\n})`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 8px;\n`;\n\n// ── Step rail items ─────────────────────────────────────────────────────────\n\nexport const RailList = styled.div.attrs({ className: 'bik-rail-list' })`\n\tdisplay: flex;\n\tflex-direction: column;\n`;\n\nexport const RailItem = styled.button.attrs({ className: 'bik-rail-item' })`\n\tposition: relative;\n\tdisplay: flex;\n\talign-items: flex-start;\n\tgap: 8px;\n\t/* Bottom padding leaves room for the connector down to the next badge. */\n\tpadding: 0 0 24px;\n\tborder: none;\n\tbackground: transparent;\n\tcursor: pointer;\n\ttext-align: left;\n\twidth: 100%;\n\n\t&:last-child {\n\t\tpadding-bottom: 0;\n\t}\n\n\t&:disabled {\n\t\tcursor: default;\n\t}\n\n\t/* Dashed connector line between consecutive step badges (centered on the badge). */\n\t&:not(:last-child)::after {\n\t\tcontent: '';\n\t\tposition: absolute;\n\t\tleft: 9px;\n\t\ttop: 20px;\n\t\twidth: 0;\n\t\theight: 24px;\n\t\tborder-left: 1px dashed #e0e0e0;\n\t\tpointer-events: none;\n\t}\n`;\n\nexport const StepBadge = styled.div.attrs({ className: 'bik-step-badge' })<{\n\tstate: 'active' | 'complete' | 'inactive';\n}>`\n\twidth: 20px;\n\theight: 20px;\n\tflex-shrink: 0;\n\tborder-radius: 50%;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tfont-family: Inter;\n\tfont-size: 10px;\n\tfont-weight: 400;\n\tline-height: 12px;\n\tbackground: ${(p) =>\n\t\tp.state === 'complete'\n\t\t\t? COLORS.background.inverseLight\n\t\t\t: p.state === 'active'\n\t\t\t? COLORS.background.brandLight\n\t\t\t: COLORS.background.base};\n\tcolor: ${(p) =>\n\t\tp.state === 'complete'\n\t\t\t? COLORS.surface.standard\n\t\t\t: p.state === 'active'\n\t\t\t? COLORS.background.inverseLight\n\t\t\t: COLORS.content.secondary};\n`;\n\n// ── Shared step pieces ──────────────────────────────────────────────────────\n\nexport const SectionHeaderWrap = styled.div.attrs({\n\tclassName: 'bik-section-header-wrap',\n})`\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 4px;\n\tpadding: 16px;\n\tborder-bottom: 1px solid ${COLORS.stroke.primary};\n`;\n\nexport const SectionBodyWrap = styled.div.attrs({\n\tclassName: 'bik-section-header-wrap',\n})`\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 16px;\n\tpadding: 16px;\n`;\n\nexport const FieldBlock = styled.div.attrs({ className: 'bik-field-block' })`\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px;\n`;\n\nexport const FieldLabelRow = styled.div.attrs({\n\tclassName: 'bik-field-label-row',\n})`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n`;\n\n// ── Labelled text area ──────────────────────────────────────────────────────\n\nexport const AiTextAreaShell = styled.div.attrs({\n\tclassName: 'bik-ai-text-area-shell',\n})<{\n\tfocused?: boolean;\n\tminHeight?: string;\n}>`\n\tdisplay: flex;\n\tflex-direction: column;\n\tborder: 1px solid\n\t\t${(p) => (p.focused ? COLORS.stroke.brand : COLORS.stroke.primary)};\n\tborder-radius: 4px;\n\tpadding: 8px 12px;\n\tgap: 8px;\n\tmin-height: ${(p) => p.minHeight ?? '120px'};\n\tbackground: ${COLORS.surface.standard};\n`;\n\nexport const AiTextAreaInput = styled.textarea.attrs({\n\tclassName: 'bik-ai-text-area-input',\n})`\n\tflex: 1;\n\tborder: none;\n\toutline: none;\n\tresize: none;\n\tfont-family: Inter;\n\tfont-size: 14px;\n\tline-height: 20px;\n\tcolor: ${COLORS.content.primary};\n\tbackground: transparent;\n\tmin-height: 60px;\n\n\t&::placeholder {\n\t\tcolor: ${COLORS.content.placeholder};\n\t}\n`;\n\n// ── Radio card (Step 2 / Step 4 option cards) ───────────────────────────────\n\nexport const CardRow = styled.div.attrs({ className: 'bik-card-row' })`\n\tdisplay: flex;\n\tgap: 12px;\n`;\n\nexport const RadioCard = styled.button.attrs({ className: 'bik-radio-card' })<{\n\tselected?: boolean;\n}>`\n\tflex: 1;\n\tdisplay: flex;\n\talign-items: flex-start;\n\tgap: 12px;\n\tpadding: 16px;\n\tborder: 1px solid\n\t\t${(p) => (p.selected ? COLORS.stroke.brand : COLORS.stroke.primary)};\n\tbackground: ${(p) =>\n\t\tp.selected ? COLORS.background.brandLight : COLORS.surface.standard};\n\tborder-radius: 8px;\n\tcursor: pointer;\n\ttext-align: left;\n\twidth: 100%;\n`;\n\nexport const RadioCardText = styled.div.attrs({\n\tclassName: 'bik-radio-card-text',\n})`\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 4px;\n`;\n\n// ── Intent chips (Step 2) ───────────────────────────────────────────────────\n\nexport const ChipWrap = styled.div.attrs({ className: 'bik-chip-wrap' })`\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: center;\n\tgap: 8px;\n`;\n\nexport const IntentChip = styled.div.attrs({ className: 'bik-intent-chip' })`\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 6px;\n\tpadding: 4px 8px;\n\tborder: 1px solid ${COLORS.stroke.primary};\n\tborder-radius: 4px;\n\tbackground: ${COLORS.surface.standard};\n`;\n\nexport const ChipCloseButton = styled.button.attrs({\n\tclassName: 'bik-chip-close-button',\n})`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tborder: none;\n\tbackground: transparent;\n\tpadding: 0;\n\tcursor: pointer;\n`;\n\nexport const AddChipButton = styled.button.attrs({\n\tclassName: 'bik-add-chip-button',\n})`\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 6px;\n\tpadding: 4px 8px;\n\tborder: 1px dashed ${COLORS.stroke.primary};\n\tborder-radius: 4px;\n\tbackground: transparent;\n\tcursor: pointer;\n`;\n\n// ── Step 3 two-column layout + tool / sub-agent rows ────────────────────────\n\n// Fills the scroll area so the step header + grow-body chain reaches the footer.\nexport const Step3Root = styled.div.attrs({\n\tclassName: 'bik-agent-step bik-agent-step--response',\n})`\n\tdisplay: flex;\n\tflex-direction: column;\n\tmin-height: 100%;\n`;\n\nexport const Step3Grid = styled.div.attrs({ className: 'bik-step3-grid' })<{\n\t$grow?: boolean;\n}>`\n\tdisplay: grid;\n\tgrid-template-columns: minmax(0, 1fr) 1px 360px;\n\t/* Single row that fills the grid's height, so the divider spans the full\n\t height (down to the footer) rather than stopping at the taller column. */\n\tgrid-template-rows: 1fr;\n\tflex: 1;\n\tmin-height: 0;\n\n\t@media (max-width: 1100px) {\n\t\tgrid-template-columns: 1fr;\n\t\tgrid-template-rows: auto;\n\t}\n\n\t/* Fill the remaining card height so a full-height child (e.g. the Step 3\n\t column divider) can stretch all the way down to the footer. */\n\t${(p) =>\n\t\tp.$grow &&\n\t\tcss`\n\t\t\tflex: 1;\n\t\t\tmin-height: 0;\n\t\t`}\n`;\n\n// Vertical rule between the main column and the side (tools / sub-agents) column;\n// hidden once the grid collapses to a single column.\nexport const Step3Divider = styled.div.attrs({\n\tclassName: 'bik-step3-divider',\n})`\n\twidth: 1px;\n\talign-self: stretch;\n\tbackground: ${COLORS.stroke.primary};\n\n\t@media (max-width: 1100px) {\n\t\tdisplay: none;\n\t}\n`;\n\nexport const SideSection = styled.div.attrs({ className: 'bik-side-section' })`\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px;\n`;\n\nexport const SideSectionHeader = styled.div.attrs({\n\tclassName: 'bik-side-section-header',\n})`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n`;\n\nexport const AddIconButton = styled.button.attrs({\n\tclassName: 'bik-add-icon-button',\n})`\n\t${iconActionButton}\n`;\n\n// Empty-state tool-source picker (e.g. Manifest / Shopify buttons).\nexport const SourceButtonRow = styled.div.attrs({\n\tclassName: 'bik-source-button-row',\n})`\n\tdisplay: flex;\n\tgap: 8px;\n`;\n\nexport const SourceButton = styled.button.attrs({\n\tclassName: 'bik-source-button',\n})`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 8px;\n\tpadding: 6px;\n\tborder: 1px solid ${COLORS.stroke.primary};\n\tborder-radius: 4px;\n\tbackground: ${COLORS.surface.standard};\n\tcursor: pointer;\n\theight: 28px;\n\n\t&:hover {\n\t\tbackground: ${COLORS.surface.subdued};\n\t}\n`;\n\nexport const SelectableRow = styled.div.attrs({\n\tclassName: 'bik-selectable-row',\n})`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 8px;\n\tpadding: 8px 12px;\n\tborder: 1px solid ${COLORS.stroke.primary};\n\tborder-radius: 4px;\n\tmin-width: 0;\n\toverflow: hidden;\n\n\t/* Leading icon (e.g. tool source) keeps its size; the label takes the rest. */\n\t& > svg {\n\t\tflex-shrink: 0;\n\t}\n`;\n\nexport const RowText = styled.div.attrs({ className: 'bik-row-text' })`\n\tflex: 1;\n\tmin-width: 0;\n\toverflow: hidden;\n\n\t/* Truncate the label to one line with an ellipsis. */\n\t& > * {\n\t\tdisplay: block;\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t}\n`;\n\nexport const RowRemoveButton = styled.button.attrs({\n\tclassName: 'bik-row-remove-button',\n})`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tborder: none;\n\tbackground: transparent;\n\tpadding: 0;\n\tcursor: pointer;\n`;\n\n// ── Per-row actions (always-visible edit / delete icon buttons) ───────────────\n\nexport const RowActions = styled.div.attrs({ className: 'bik-row-actions' })`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 4px;\n\tflex-shrink: 0;\n`;\n\n// Vertical separator between the edit and delete icon buttons.\nexport const RowActionDivider = styled.span.attrs({\n\tclassName: 'bik-row-action-divider',\n})`\n\twidth: 1px;\n\talign-self: stretch;\n\tmargin: 4px 0;\n\tbackground: ${COLORS.stroke.primary};\n`;\n\nexport const RowMenuButton = styled.button.attrs({\n\tclassName: 'bik-row-menu-button',\n})`\n\t${iconActionButton}\n`;\n\n// ── Go-live modal ───────────────────────────────────────────────────────────\n\nexport const ModalBody = styled.div.attrs({ className: 'bik-modal-body' })`\n\tpadding: 24px;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tgap: 16px;\n\ttext-align: center;\n`;\n\nexport const ModalIcon = styled.div.attrs({ className: 'bik-modal-icon' })`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tmargin-bottom: 4px;\n`;\n\nexport const ModalActions = styled.div.attrs({\n\tclassName: 'bik-modal-actions',\n})`\n\tdisplay: flex;\n\tgap: 12px;\n\twidth: 100%;\n`;\n\n// ── Create sub-agent drawer ─────────────────────────────────────────────────\n\nexport const SubAgentScrim = styled.div.attrs({\n\tclassName: 'bik-subagent-scrim',\n})`\n\tposition: fixed;\n\tinset: 0;\n\tbackground: rgba(0, 0, 0, 0.32);\n\tz-index: 1000;\n`;\n\nexport const SubAgentPanel = styled.div.attrs({\n\tclassName: 'bik-subagent-panel',\n})`\n\tposition: fixed;\n\ttop: 0;\n\tright: 0;\n\theight: 100%;\n\twidth: 421px;\n\tmax-width: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n\tbackground: ${COLORS.surface.standard};\n\tbox-shadow: -8px 0 24px rgba(0, 0, 0, 0.12);\n\tz-index: 1001;\n\tbox-sizing: border-box;\n`;\n\nexport const SubAgentPanelHeader = styled.div.attrs({\n\tclassName: 'bik-subagent-panel-header',\n})`\n\tdisplay: flex;\n\talign-items: flex-start;\n\tjustify-content: space-between;\n\tpadding: 10px 12px;\n\tborder-bottom: 1px solid ${COLORS.stroke.primary};\n\tflex-shrink: 0;\n`;\n\nexport const SubAgentPanelHeaderText = styled.div.attrs({\n\tclassName: 'bik-subagent-panel-header-text',\n})`\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 4px;\n\tmin-width: 0;\n`;\n\nexport const SubAgentPanelBody = styled.div.attrs({\n\tclassName: 'bik-subagent-panel-body',\n})`\n\tflex: 1;\n\tmin-height: 0;\n\toverflow-y: auto;\n\tpadding: 16px;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 16px;\n`;\n\nexport const SubAgentPanelFooter = styled.div.attrs({\n\tclassName: 'bik-subagent-panel-footer',\n})`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 8px;\n\tpadding: 8px 12px;\n\tmin-height: 48px;\n\tborder-top: 1px solid ${COLORS.stroke.primary};\n\tflex-shrink: 0;\n`;\n\nexport const SubAgentCloseButton = styled.button.attrs({\n\tclassName: 'bik-subagent-close',\n})`\n\t${iconActionButton}\n\tflex-shrink: 0;\n`;\n\n/** Inline action row inside a rich field (e.g. \"Improve with AI\"). */\nexport const FieldActionRow = styled.div.attrs({\n\tclassName: 'bik-field-action-row',\n})`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 8px;\n`;\n"],"names":["iconActionButton","css","COLORS","BuilderRoot","styled","TopBar","TopBarSide","BackButton","Main","Rail","Content","ContentCard","StepScroll","Footer","FooterHint","FooterActions","RailList","RailItem","StepBadge","p","SectionHeaderWrap","SectionBodyWrap","FieldBlock","FieldLabelRow","AiTextAreaShell","AiTextAreaInput","CardRow","RadioCard","RadioCardText","ChipWrap","IntentChip","ChipCloseButton","AddChipButton","Step3Root","Step3Grid","Step3Divider","SideSection","SideSectionHeader","AddIconButton","SourceButtonRow","SourceButton","SelectableRow","RowText","RowActions","RowActionDivider","RowMenuButton","ModalBody","ModalIcon","ModalActions","SubAgentScrim","SubAgentPanel","SubAgentPanelHeader","SubAgentPanelHeaderText","SubAgentPanelBody","SubAgentPanelFooter","SubAgentCloseButton"],"mappings":"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"}
1
+ {"version":3,"file":"AgentBuilder.styled.js","sources":["../../../../src/components/agent-builder/AgentBuilder.styled.tsx"],"sourcesContent":["import styled, { css } from 'styled-components';\nimport { COLORS } from '@src/constants/Theme';\n\n// Shared look for the 24×24 transparent icon buttons (add / row-menu / close).\nconst iconActionButton = css`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: 24px;\n\theight: 24px;\n\tborder: none;\n\tbackground: transparent;\n\tpadding: 0;\n\tcursor: pointer;\n\tborder-radius: 4px;\n\n\t&:hover {\n\t\tbackground: ${COLORS.surface.subdued};\n\t}\n`;\n\nexport const BuilderRoot = styled.div.attrs({ className: 'bik-builder-root' })`\n\tdisplay: flex;\n\tflex-direction: column;\n\theight: 100%;\n\twidth: 100%;\n\tmin-height: 0;\n\tbackground: ${COLORS.surface.standard};\n`;\n\nexport const TopBar = styled.div.attrs({ className: 'bik-top-bar' })`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\theight: 56px;\n\tpadding: 12px 16px;\n\tborder-bottom: 1px solid ${COLORS.stroke.primary};\n\tflex-shrink: 0;\n`;\n\nexport const TopBarSide = styled.div.attrs({ className: 'bik-top-bar-side' })`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 8px;\n`;\n\nexport const BackButton = styled.button.attrs({ className: 'bik-back-button' })`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: 28px;\n\theight: 28px;\n\tborder: none;\n\tbackground: transparent;\n\tpadding: 0;\n\tcursor: pointer;\n\tborder-radius: 4px;\n\n\t&:hover {\n\t\tbackground: ${COLORS.surface.subdued};\n\t}\n`;\n\nexport const Main = styled.div.attrs({ className: 'bik-main' })`\n\tdisplay: flex;\n\tflex: 1;\n\tmin-height: 0;\n`;\n\nexport const Rail = styled.div.attrs({ className: 'bik-rail' })`\n\twidth: 234px;\n\tflex-shrink: 0;\n\tborder-right: 1px solid ${COLORS.stroke.primary};\n\tpadding: 16px;\n\toverflow-y: auto;\n\tbackground: ${COLORS.surface.standard};\n`;\n\nexport const Content = styled.div.attrs({ className: 'bik-content' })`\n\tflex: 1;\n\tmin-width: 0;\n\tmin-height: 0;\n\toverflow: hidden;\n\tdisplay: flex;\n\tflex-direction: column;\n\tpadding: 16px;\n\tbackground: ${COLORS.surface.standard};\n`;\n\nexport const ContentCard = styled.div.attrs({ className: 'bik-content-card' })`\n\tflex: 1;\n\tmin-height: 0;\n\tdisplay: flex;\n\tflex-direction: column;\n\toverflow: hidden;\n\tborder: 1px solid ${COLORS.stroke.primary};\n\tborder-radius: 8px;\n\tbox-sizing: border-box;\n`;\n\n// Scrollable step body inside the card; the footer stays pinned below it.\nexport const StepScroll = styled.div.attrs({ className: 'bik-step-scroll' })`\n\tflex: 1;\n\tmin-height: 0;\n\toverflow-y: auto;\n`;\n\nexport const Footer = styled.div.attrs({ className: 'bik-footer' })`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tmin-height: 56px;\n\tpadding: 12px 16px;\n\tborder-top: 1px solid ${COLORS.stroke.primary};\n\tflex-shrink: 0;\n\tbox-shadow: 0px -2px 12px 0px #0000000a;\n`;\n\nexport const FooterHint = styled.div.attrs({ className: 'bik-footer-hint' })`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 6px;\n`;\n\nexport const FooterActions = styled.div.attrs({\n\tclassName: 'bik-footer-actions',\n})`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 8px;\n`;\n\n// ── Step rail items ─────────────────────────────────────────────────────────\n\nexport const RailList = styled.div.attrs({ className: 'bik-rail-list' })`\n\tdisplay: flex;\n\tflex-direction: column;\n`;\n\nexport const RailItem = styled.button.attrs({ className: 'bik-rail-item' })`\n\tposition: relative;\n\tdisplay: flex;\n\talign-items: flex-start;\n\tgap: 8px;\n\t/* Bottom padding leaves room for the connector down to the next badge. */\n\tpadding: 0 0 24px;\n\tborder: none;\n\tbackground: transparent;\n\tcursor: pointer;\n\ttext-align: left;\n\twidth: 100%;\n\n\t&:last-child {\n\t\tpadding-bottom: 0;\n\t}\n\n\t&:disabled {\n\t\tcursor: default;\n\t}\n\n\t/* Dashed connector line between consecutive step badges (centered on the badge). */\n\t&:not(:last-child)::after {\n\t\tcontent: '';\n\t\tposition: absolute;\n\t\tleft: 9px;\n\t\ttop: 20px;\n\t\twidth: 0;\n\t\theight: 24px;\n\t\tborder-left: 1px dashed #e0e0e0;\n\t\tpointer-events: none;\n\t}\n`;\n\nexport const StepBadge = styled.div.attrs({ className: 'bik-step-badge' })<{\n\tstate: 'active' | 'complete' | 'inactive';\n}>`\n\twidth: 20px;\n\theight: 20px;\n\tflex-shrink: 0;\n\tborder-radius: 50%;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tfont-family: Inter;\n\tfont-size: 10px;\n\tfont-weight: 400;\n\tline-height: 12px;\n\tbackground: ${(p) =>\n\t\tp.state === 'complete'\n\t\t\t? COLORS.background.inverseLight\n\t\t\t: p.state === 'active'\n\t\t\t? COLORS.background.brandLight\n\t\t\t: COLORS.background.base};\n\tcolor: ${(p) =>\n\t\tp.state === 'complete'\n\t\t\t? COLORS.surface.standard\n\t\t\t: p.state === 'active'\n\t\t\t? COLORS.background.inverseLight\n\t\t\t: COLORS.content.secondary};\n`;\n\n// ── Shared step pieces ──────────────────────────────────────────────────────\n\nexport const SectionHeaderWrap = styled.div.attrs({\n\tclassName: 'bik-section-header-wrap',\n})`\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 4px;\n\tpadding: 16px;\n\tborder-bottom: 1px solid ${COLORS.stroke.primary};\n`;\n\nexport const SectionBodyWrap = styled.div.attrs({\n\tclassName: 'bik-section-header-wrap',\n})`\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 16px;\n\tpadding: 16px;\n`;\n\nexport const FieldBlock = styled.div.attrs({ className: 'bik-field-block' })`\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px;\n`;\n\nexport const FieldLabelRow = styled.div.attrs({\n\tclassName: 'bik-field-label-row',\n})`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n`;\n\n// ── Labelled text area ──────────────────────────────────────────────────────\n\nexport const AiTextAreaShell = styled.div.attrs({\n\tclassName: 'bik-ai-text-area-shell',\n})<{\n\tfocused?: boolean;\n\tminHeight?: string;\n}>`\n\tdisplay: flex;\n\tflex-direction: column;\n\tborder: 1px solid\n\t\t${(p) => (p.focused ? COLORS.stroke.brand : COLORS.stroke.primary)};\n\tborder-radius: 4px;\n\tpadding: 8px 12px;\n\tgap: 8px;\n\tmin-height: ${(p) => p.minHeight ?? '120px'};\n\tbackground: ${COLORS.surface.standard};\n`;\n\nexport const AiTextAreaInput = styled.textarea.attrs({\n\tclassName: 'bik-ai-text-area-input',\n})`\n\tflex: 1;\n\tborder: none;\n\toutline: none;\n\tresize: none;\n\tfont-family: Inter;\n\tfont-size: 14px;\n\tline-height: 20px;\n\tcolor: ${COLORS.content.primary};\n\tbackground: transparent;\n\tmin-height: 60px;\n\n\t&::placeholder {\n\t\tcolor: ${COLORS.content.placeholder};\n\t}\n`;\n\n// ── Radio card (Step 2 / Step 4 option cards) ───────────────────────────────\n\nexport const CardRow = styled.div.attrs({ className: 'bik-card-row' })`\n\tdisplay: flex;\n\tgap: 12px;\n`;\n\nexport const RadioCard = styled.button.attrs({ className: 'bik-radio-card' })<{\n\tselected?: boolean;\n}>`\n\tflex: 1;\n\tdisplay: flex;\n\talign-items: flex-start;\n\tgap: 12px;\n\tpadding: 16px;\n\tborder: 1px solid\n\t\t${(p) => (p.selected ? COLORS.stroke.brand : COLORS.stroke.primary)};\n\tbackground: ${(p) =>\n\t\tp.selected ? COLORS.background.brandLight : COLORS.surface.standard};\n\tborder-radius: 8px;\n\tcursor: pointer;\n\ttext-align: left;\n\twidth: 100%;\n`;\n\nexport const RadioCardText = styled.div.attrs({\n\tclassName: 'bik-radio-card-text',\n})`\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 4px;\n`;\n\n// ── Intent chips (Step 2) ───────────────────────────────────────────────────\n\nexport const ChipWrap = styled.div.attrs({ className: 'bik-chip-wrap' })`\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: center;\n\tgap: 8px;\n`;\n\nexport const IntentChip = styled.div.attrs({ className: 'bik-intent-chip' })`\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 6px;\n\tpadding: 4px 8px;\n\tborder: 1px solid ${COLORS.stroke.primary};\n\tborder-radius: 4px;\n\tbackground: ${COLORS.surface.standard};\n`;\n\nexport const ChipCloseButton = styled.button.attrs({\n\tclassName: 'bik-chip-close-button',\n})`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tborder: none;\n\tbackground: transparent;\n\tpadding: 0;\n\tcursor: pointer;\n`;\n\nexport const AddChipButton = styled.button.attrs({\n\tclassName: 'bik-add-chip-button',\n})`\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 6px;\n\tpadding: 4px 8px;\n\tborder: 1px dashed ${COLORS.stroke.primary};\n\tborder-radius: 4px;\n\tbackground: transparent;\n\tcursor: pointer;\n`;\n\n// ── Step 3 two-column layout + tool / sub-agent rows ────────────────────────\n\n// Fills the scroll area so the step header + grow-body chain reaches the footer.\nexport const Step3Root = styled.div.attrs({\n\tclassName: 'bik-agent-step bik-agent-step--response',\n})`\n\tdisplay: flex;\n\tflex-direction: column;\n\tmin-height: 100%;\n`;\n\nexport const Step3Grid = styled.div.attrs({ className: 'bik-step3-grid' })<{\n\t$grow?: boolean;\n}>`\n\tdisplay: grid;\n\tgrid-template-columns: minmax(0, 1fr) 1px 360px;\n\t/* Single row that fills the grid's height, so the divider spans the full\n\t height (down to the footer) rather than stopping at the taller column. */\n\tgrid-template-rows: 1fr;\n\tflex: 1;\n\tmin-height: 0;\n\n\t@media (max-width: 1100px) {\n\t\tgrid-template-columns: 1fr;\n\t\tgrid-template-rows: auto;\n\t}\n\n\t/* Fill the remaining card height so a full-height child (e.g. the Step 3\n\t column divider) can stretch all the way down to the footer. */\n\t${(p) =>\n\t\tp.$grow &&\n\t\tcss`\n\t\t\tflex: 1;\n\t\t\tmin-height: 0;\n\t\t`}\n`;\n\n// Vertical rule between the main column and the side (tools / sub-agents) column;\n// hidden once the grid collapses to a single column.\nexport const Step3Divider = styled.div.attrs({\n\tclassName: 'bik-step3-divider',\n})`\n\twidth: 1px;\n\talign-self: stretch;\n\tbackground: ${COLORS.stroke.primary};\n\n\t@media (max-width: 1100px) {\n\t\tdisplay: none;\n\t}\n`;\n\nexport const SideSection = styled.div.attrs({ className: 'bik-side-section' })`\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px;\n`;\n\nexport const SideSectionHeader = styled.div.attrs({\n\tclassName: 'bik-side-section-header',\n})`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n`;\n\nexport const AddIconButton = styled.button.attrs({\n\tclassName: 'bik-add-icon-button',\n})`\n\t${iconActionButton}\n`;\n\n// Empty-state tool-source picker (e.g. Manifest / Shopify buttons).\nexport const SourceButtonRow = styled.div.attrs({\n\tclassName: 'bik-source-button-row',\n})`\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: 8px;\n`;\n\nexport const SourceButton = styled.button.attrs({\n\tclassName: 'bik-source-button',\n})`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 8px;\n\tpadding: 6px;\n\tborder: 1px solid ${COLORS.stroke.primary};\n\tborder-radius: 4px;\n\tbackground: ${COLORS.surface.standard};\n\tcursor: pointer;\n\theight: 28px;\n\n\t&:hover {\n\t\tbackground: ${COLORS.surface.subdued};\n\t}\n`;\n\nexport const SelectableRow = styled.div.attrs({\n\tclassName: 'bik-selectable-row',\n})`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 8px;\n\tpadding: 8px 12px;\n\tborder: 1px solid ${COLORS.stroke.primary};\n\tborder-radius: 4px;\n\tmin-width: 0;\n\toverflow: hidden;\n\n\t/* Leading icon (e.g. tool source) keeps its size; the label takes the rest. */\n\t& > svg {\n\t\tflex-shrink: 0;\n\t}\n`;\n\nexport const RowText = styled.div.attrs({ className: 'bik-row-text' })`\n\tflex: 1;\n\tmin-width: 0;\n\toverflow: hidden;\n\n\t/* Truncate the label to one line with an ellipsis. */\n\t& > * {\n\t\tdisplay: block;\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t}\n`;\n\nexport const RowRemoveButton = styled.button.attrs({\n\tclassName: 'bik-row-remove-button',\n})`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tborder: none;\n\tbackground: transparent;\n\tpadding: 0;\n\tcursor: pointer;\n`;\n\n// ── Per-row actions (always-visible edit / delete icon buttons) ───────────────\n\nexport const RowActions = styled.div.attrs({ className: 'bik-row-actions' })`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 4px;\n\tflex-shrink: 0;\n`;\n\n// Vertical separator between the edit and delete icon buttons.\nexport const RowActionDivider = styled.span.attrs({\n\tclassName: 'bik-row-action-divider',\n})`\n\twidth: 1px;\n\talign-self: stretch;\n\tmargin: 4px 0;\n\tbackground: ${COLORS.stroke.primary};\n`;\n\nexport const RowMenuButton = styled.button.attrs({\n\tclassName: 'bik-row-menu-button',\n})`\n\t${iconActionButton}\n`;\n\n// ── Go-live modal ───────────────────────────────────────────────────────────\n\nexport const ModalBody = styled.div.attrs({ className: 'bik-modal-body' })`\n\tpadding: 24px;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tgap: 16px;\n\ttext-align: center;\n`;\n\nexport const ModalIcon = styled.div.attrs({ className: 'bik-modal-icon' })`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tmargin-bottom: 4px;\n`;\n\nexport const ModalActions = styled.div.attrs({\n\tclassName: 'bik-modal-actions',\n})`\n\tdisplay: flex;\n\tgap: 12px;\n\twidth: 100%;\n`;\n\n/** Inline action row inside a rich field (e.g. \"Improve with AI\"). */\nexport const FieldActionRow = styled.div.attrs({\n\tclassName: 'bik-field-action-row',\n})`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 8px;\n`;\n"],"names":["iconActionButton","css","COLORS","BuilderRoot","styled","TopBar","TopBarSide","BackButton","Main","Rail","Content","ContentCard","StepScroll","Footer","FooterHint","FooterActions","RailList","RailItem","StepBadge","p","SectionHeaderWrap","SectionBodyWrap","FieldBlock","FieldLabelRow","AiTextAreaShell","AiTextAreaInput","CardRow","RadioCard","RadioCardText","ChipWrap","IntentChip","ChipCloseButton","AddChipButton","Step3Root","Step3Grid","Step3Divider","SideSection","SideSectionHeader","AddIconButton","SourceButtonRow","SourceButton","SelectableRow","RowText","RowActions","RowActionDivider","RowMenuButton","ModalBody","ModalIcon","ModalActions"],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),I=require("../../../assets/icons/cross.svg.js"),b=require("react"),L=require("styled-components"),S=require("../../TypographyStyle.js"),r=require("../../../constants/Theme.js"),q=require("../AgentBuilder.styled.js"),E=require("../constants/charLimits.js"),j=require("../constants/tools.js"),B=require("../utils/sourceIcons.js"),T=require("./DrawerHeaderText.js"),D=require("./ToolInstructionsField.js"),$=require("../../side-modal/SideModal.js"),A=require("../../switch/Switch.js"),P=require("../../input/Input.js"),F=require("../../tag/Tag.js"),H=t=>t&&typeof t=="object"&&"default"in t?t:{default:t},p=H(L),Y={send_email:{title:"Handover to email",subtitle:"Notify someone by email when this agent can't continue. You pick the recipient, the AI drafts the message."},send_slack_message:{title:"Send Slack message",subtitle:"Post a message to a Slack channel. You pick the channel, the AI composes the message from the conversation."}},M=({chips:t,onChange:a,placeholder:c,nativeID:u,hint:h})=>{const[d,y]=b.useState(""),m=()=>{const n=d.split(",").map(i=>i.trim()).filter(Boolean);n.length&&a([...t,...n.filter(i=>!t.includes(i))]),y("")};return o.jsxs(W,{children:[o.jsx(G,{id:u,type:"text",placeholder:c,value:d,onChange:n=>y(n.target.value),onBlur:m,onKeyDown:n=>{n.key==="Enter"||n.key===","?(n.preventDefault(),m()):n.key==="Backspace"&&d===""&&t.length>0&&a(t.slice(0,-1))}}),h,t.length>0&&o.jsx(U,{children:t.map((n,i)=>o.jsx(F.Tag,{tagText:n,theme:"light",type:"neutral",variant:"regular",TrailingIcon:I.default,onTrailingIconClicked:()=>a(t.filter((f,g)=>g!==i))},`${n}-${i}`))})]})},z=(t,a)=>{const c={};return Object.keys(t).forEach(u=>{c[u]=a?.params[u]?.value??t[u].value}),c},V=t=>String(t??"").split(",").map(a=>a.trim()).filter(Boolean),N=({toolKey:t,template:a,onClose:c,onSave:u,initial:h,onImprove:d,charLimits:y=E.AGENT_CHAR_LIMITS,zIndex:m})=>{const[n,i]=b.useState(()=>z(a,h)),[f,g]=b.useState(!1),k=Object.values(a),w=t==="send_email",x=(e,l)=>i(s=>({...s,[e]:l})),O=k.every(e=>!e.required||String(n[e.key]??"").trim()!==""),_=async()=>{if(!O||f)return;const e={};k.forEach(v=>{e[v.key]={...v,value:n[v.key]}});const l={id:h?.id??`${t}_${Date.now().toString(36)}`,tool_key:t,params:e},s=u(l);if(s&&typeof s.then=="function"){g(!0);try{await s}finally{g(!1)}}},R=e=>{const l=`config-tool-${e.key.toLowerCase()}`;switch(e.component){case"KeywordInput":if(!w)break;return o.jsxs(q.FieldBlock,{children:[o.jsx(S.TitleSmall,{color:r.COLORS.content.primary,children:e.title}),o.jsx(M,{nativeID:l,placeholder:e.hint??"",chips:V(n[e.key]),onChange:s=>x(e.key,s.join(",")),hint:o.jsx(S.BodyCaption,{color:r.COLORS.content.secondary,children:"Press Enter or comma to add multiple emails"})})]},e.key);case"MultilineInput":return o.jsx(D.ToolInstructionsField,{"data-test":l,label:e.title,value:String(n[e.key]??""),onChange:s=>x(e.key,s),maxLength:y.instructions,placeholder:e.hint??"",onImprove:d},e.key);case"Switch":return o.jsxs(J,{children:[o.jsxs(Q,{children:[o.jsx(S.TitleSmall,{color:r.COLORS.content.primary,children:e.title}),e.hint&&o.jsx(S.BodyCaption,{color:r.COLORS.content.secondary,children:e.hint})]}),o.jsx(A.Switch,{"data-test":l,value:!!n[e.key],onValueChange:async s=>x(e.key,s)})]},e.key)}return o.jsx(P.Input,{"data-test":l,variant:"small",labelText:e.title,labelTextBold:!0,placeholder:e.hint??"",value:String(n[e.key]??""),onChangeText:s=>x(e.key,s)},e.key)},C=Y[t];return o.jsx($.SideModal,{header:C.title,closeOnEscapeKey:!1,zIndex:m,headerCustomComponent:o.jsx(T.DrawerHeaderText,{title:C.title,subtitle:C.subtitle,icon:B.SOURCE_ICONS[t==="send_slack_message"?j.ToolSource.Slack:j.ToolSource.EmailHandover]}),hideCrossButton:!1,width:"431px",headerStyle:T.DRAWER_HEADER_STYLE,bodyStyle:T.DRAWER_BODY_STYLE,onClose:c,saveButtonProps:{"data-test":"config-tool-save",buttonText:"Save",buttonType:"primary",size:"small",disabled:!O,isLoading:f,onClick:_},cancelButtonProps:{"data-test":"config-tool-cancel",buttonText:"Cancel",buttonType:"tertiaryGray",size:"small",onClick:c},children:k.map(R)})},W=p.default.div`
2
+ display: flex;
3
+ flex-direction: column;
4
+ gap: 8px;
5
+ `,G=p.default.input`
6
+ width: 100%;
7
+ min-width: 0;
8
+ box-sizing: border-box;
9
+ height: 32px;
10
+ padding: 0 8px;
11
+ border: 1px solid ${r.COLORS.stroke.primary};
12
+ border-radius: 4px;
13
+ font-family: 'Inter', sans-serif;
14
+ font-size: 14px;
15
+ color: ${r.COLORS.content.primary};
16
+ background: ${r.COLORS.surface.standard};
17
+ outline: none;
18
+
19
+ &::placeholder {
20
+ color: ${r.COLORS.content.secondary};
21
+ }
22
+
23
+ &:focus {
24
+ border-color: ${r.COLORS.stroke.brand};
25
+ }
26
+ `,U=p.default.div`
27
+ display: flex;
28
+ flex-wrap: wrap;
29
+ gap: 6px;
30
+ `,J=p.default.div`
31
+ display: flex;
32
+ align-items: center;
33
+ justify-content: space-between;
34
+ gap: 12px;
35
+ `,Q=p.default.div`
36
+ display: flex;
37
+ flex-direction: column;
38
+ gap: 4px;
39
+ min-width: 0;
40
+ `;exports.ConfigToolPanel=N;
41
+ //# sourceMappingURL=ConfigToolPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigToolPanel.js","sources":["../../../../../src/components/agent-builder/components/ConfigToolPanel.tsx"],"sourcesContent":["import CrossIcon from '@src/assets/icons/cross.svg';\nimport React, { useState } from 'react';\nimport styled from 'styled-components';\nimport { Input } from '@src/components/input';\nimport { SideModal } from '@src/components/side-modal';\nimport { Switch } from '@src/components/switch';\nimport { Tag } from '@src/components/tag';\nimport { BodyCaption, TitleSmall } from '@src/components/TypographyStyle';\nimport { COLORS } from '@src/constants/Theme';\nimport {\n\tConfigToolConfig,\n\tConfigToolKey,\n\tParamField,\n\tParamsBlob,\n} from '../AgentBuilder.model';\nimport { FieldBlock } from '../AgentBuilder.styled';\nimport type { AgentCharLimits } from '../constants/charLimits';\nimport { AGENT_CHAR_LIMITS } from '../constants/charLimits';\nimport { ToolSource } from '../constants/tools';\nimport { SOURCE_ICONS } from '../utils/sourceIcons';\nimport {\n\tDRAWER_BODY_STYLE,\n\tDRAWER_HEADER_STYLE,\n\tDrawerHeaderText,\n} from './DrawerHeaderText';\nimport { ToolInstructionsField } from './ToolInstructionsField';\n\n/** Header copy per shared-drawer tool. */\nconst TOOL_COPY: Record<ConfigToolKey, { title: string; subtitle: string }> = {\n\tsend_email: {\n\t\ttitle: 'Handover to email',\n\t\tsubtitle:\n\t\t\t\"Notify someone by email when this agent can't continue. You pick the recipient, the AI drafts the message.\",\n\t},\n\tsend_slack_message: {\n\t\ttitle: 'Send Slack message',\n\t\tsubtitle:\n\t\t\t'Post a message to a Slack channel. You pick the channel, the AI composes the message from the conversation.',\n\t},\n};\n\ninterface ConfigToolPanelProps {\n\t/** Which tool this drawer configures (drives copy + persistence). */\n\ttoolKey: ConfigToolKey;\n\t/**\n\t * The backend template (`list-catalog` → params) for `toolKey`. The form is\n\t * DYNAMIC: exactly these fields render, in this order, each by its\n\t * `component` kind (KeywordInput | MultilineInput | Switch | fallback input).\n\t */\n\ttemplate: ParamsBlob;\n\tonClose: () => void;\n\t/** Persist the filled template. A pending promise shows the Save loader. */\n\tonSave: (config: ConfigToolConfig) => void | Promise<void>;\n\t/** Seed values when editing an existing tool. */\n\tinitial?: ConfigToolConfig;\n\t/** Optional \"Improve with AI\" for multiline fields. Omit to hide it. */\n\tonImprove?: (text: string) => Promise<string>;\n\tcharLimits?: AgentCharLimits;\n\t/** SideModal stacking order — raise it when opened over another drawer. */\n\tzIndex?: number;\n}\n\ninterface EmailChipsFieldProps {\n\tchips: string[];\n\tonChange: (next: string[]) => void;\n\tplaceholder: string;\n\tnativeID?: string;\n\t/** Optional helper caption shown between the input and the chips. */\n\thint?: React.ReactNode;\n}\n\n/**\n * Email entry field: type an address and press Enter / comma (or blur) to add\n * it. Added emails render as removable chips BELOW the input — not inside it.\n * Backspace on an empty input removes the last chip.\n */\nconst EmailChipsField: React.FC<EmailChipsFieldProps> = ({\n\tchips,\n\tonChange,\n\tplaceholder,\n\tnativeID,\n\thint,\n}) => {\n\tconst [buffer, setBuffer] = useState('');\n\n\tconst commit = () => {\n\t\tconst parts = buffer\n\t\t\t.split(',')\n\t\t\t.map((s) => s.trim())\n\t\t\t.filter(Boolean);\n\t\tif (parts.length) {\n\t\t\tonChange([...chips, ...parts.filter((p) => !chips.includes(p))]);\n\t\t}\n\t\tsetBuffer('');\n\t};\n\n\treturn (\n\t\t<ChipsFieldWrap>\n\t\t\t<EmailInputBox\n\t\t\t\tid={nativeID}\n\t\t\t\ttype=\"text\"\n\t\t\t\tplaceholder={placeholder}\n\t\t\t\tvalue={buffer}\n\t\t\t\tonChange={(e) => setBuffer(e.target.value)}\n\t\t\t\tonBlur={commit}\n\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\tif (e.key === 'Enter' || e.key === ',') {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tcommit();\n\t\t\t\t\t} else if (\n\t\t\t\t\t\te.key === 'Backspace' &&\n\t\t\t\t\t\tbuffer === '' &&\n\t\t\t\t\t\tchips.length > 0\n\t\t\t\t\t) {\n\t\t\t\t\t\tonChange(chips.slice(0, -1));\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t{hint}\n\t\t\t{chips.length > 0 && (\n\t\t\t\t<ChipRow>\n\t\t\t\t\t{chips.map((email, i) => (\n\t\t\t\t\t\t<Tag\n\t\t\t\t\t\t\tkey={`${email}-${i}`}\n\t\t\t\t\t\t\ttagText={email}\n\t\t\t\t\t\t\ttheme=\"light\"\n\t\t\t\t\t\t\ttype=\"neutral\"\n\t\t\t\t\t\t\tvariant=\"regular\"\n\t\t\t\t\t\t\tTrailingIcon={CrossIcon}\n\t\t\t\t\t\t\tonTrailingIconClicked={() =>\n\t\t\t\t\t\t\t\tonChange(chips.filter((_, idx) => idx !== i))\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</ChipRow>\n\t\t\t)}\n\t\t</ChipsFieldWrap>\n\t);\n};\n\n/** Field values keyed by param key (the editable part of a {@link ParamsBlob}). */\ntype ParamValues = Record<string, string | boolean | number | object>;\n\nconst seedValues = (\n\ttemplate: ParamsBlob,\n\tinitial?: ConfigToolConfig,\n): ParamValues => {\n\tconst values: ParamValues = {};\n\tObject.keys(template).forEach((key) => {\n\t\tvalues[key] = initial?.params[key]?.value ?? template[key].value;\n\t});\n\treturn values;\n};\n\n/** Chips ↔ the string value KeywordInput fields carry (comma-separated). */\nconst toChips = (value: unknown): string[] =>\n\tString(value ?? '')\n\t\t.split(',')\n\t\t.map((s) => s.trim())\n\t\t.filter(Boolean);\n\n/**\n * Shared right-side drawer for the params-driven configurable tools (email /\n * Slack). Fully backend-driven: it renders the template fields by their\n * `component` kind and returns the same blob with values filled in. KeywordInput\n * renders as multi-value email chips only for `send_email`; every other tool\n * gets a plain single-line input. Mount it fresh per open (key it) so `initial`\n * seeds the state. Built on the shared `SideModal` shell.\n */\nexport const ConfigToolPanel: React.FC<ConfigToolPanelProps> = ({\n\ttoolKey,\n\ttemplate,\n\tonClose,\n\tonSave,\n\tinitial,\n\tonImprove,\n\tcharLimits = AGENT_CHAR_LIMITS,\n\tzIndex,\n}) => {\n\tconst [values, setValues] = useState<ParamValues>(() =>\n\t\tseedValues(template, initial),\n\t);\n\tconst [saving, setSaving] = useState(false);\n\n\tconst fields = Object.values(template);\n\tconst isEmail = toolKey === 'send_email';\n\tconst setValue = (key: string, value: string | boolean | number | object) =>\n\t\tsetValues((prev) => ({ ...prev, [key]: value }));\n\n\tconst canSave = fields.every(\n\t\t(f) => !f.required || String(values[f.key] ?? '').trim() !== '',\n\t);\n\n\tconst handleSave = async () => {\n\t\tif (!canSave || saving) {\n\t\t\treturn;\n\t\t}\n\t\tconst params: ParamsBlob = {};\n\t\tfields.forEach((f) => {\n\t\t\t// Save the FULL descriptor with only `value` changed — the backend\n\t\t\t// infers each field's type from `component` and reads `required`.\n\t\t\tparams[f.key] = { ...f, value: values[f.key] };\n\t\t});\n\t\tconst config: ConfigToolConfig = {\n\t\t\tid: initial?.id ?? `${toolKey}_${Date.now().toString(36)}`,\n\t\t\ttool_key: toolKey,\n\t\t\tparams,\n\t\t};\n\t\tconst result = onSave(config);\n\t\tif (result && typeof (result as Promise<void>).then === 'function') {\n\t\t\tsetSaving(true);\n\t\t\ttry {\n\t\t\t\tawait result;\n\t\t\t} finally {\n\t\t\t\tsetSaving(false);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst renderField = (field: ParamField) => {\n\t\tconst testId = `config-tool-${field.key.toLowerCase()}`;\n\t\tswitch (field.component) {\n\t\t\t// Multi-value email chips — only for the email tool. Slack's KeywordInput\n\t\t\t// (channelId) falls through to the plain input below.\n\t\t\tcase 'KeywordInput':\n\t\t\t\tif (!isEmail) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\treturn (\n\t\t\t\t\t<FieldBlock key={field.key}>\n\t\t\t\t\t\t<TitleSmall color={COLORS.content.primary}>\n\t\t\t\t\t\t\t{field.title}\n\t\t\t\t\t\t</TitleSmall>\n\t\t\t\t\t\t<EmailChipsField\n\t\t\t\t\t\t\tnativeID={testId}\n\t\t\t\t\t\t\tplaceholder={field.hint ?? ''}\n\t\t\t\t\t\t\tchips={toChips(values[field.key])}\n\t\t\t\t\t\t\tonChange={(chips) => setValue(field.key, chips.join(','))}\n\t\t\t\t\t\t\thint={\n\t\t\t\t\t\t\t\t<BodyCaption color={COLORS.content.secondary}>\n\t\t\t\t\t\t\t\t\tPress Enter or comma to add multiple emails\n\t\t\t\t\t\t\t\t</BodyCaption>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FieldBlock>\n\t\t\t\t);\n\t\t\tcase 'MultilineInput':\n\t\t\t\treturn (\n\t\t\t\t\t<ToolInstructionsField\n\t\t\t\t\t\tkey={field.key}\n\t\t\t\t\t\tdata-test={testId}\n\t\t\t\t\t\tlabel={field.title}\n\t\t\t\t\t\tvalue={String(values[field.key] ?? '')}\n\t\t\t\t\t\tonChange={(text) => setValue(field.key, text)}\n\t\t\t\t\t\tmaxLength={charLimits.instructions}\n\t\t\t\t\t\tplaceholder={field.hint ?? ''}\n\t\t\t\t\t\tonImprove={onImprove}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\tcase 'Switch':\n\t\t\t\treturn (\n\t\t\t\t\t<SwitchRow key={field.key}>\n\t\t\t\t\t\t<SwitchText>\n\t\t\t\t\t\t\t<TitleSmall color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\t{field.title}\n\t\t\t\t\t\t\t</TitleSmall>\n\t\t\t\t\t\t\t{field.hint && (\n\t\t\t\t\t\t\t\t<BodyCaption color={COLORS.content.secondary}>\n\t\t\t\t\t\t\t\t\t{field.hint}\n\t\t\t\t\t\t\t\t</BodyCaption>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</SwitchText>\n\t\t\t\t\t\t<Switch\n\t\t\t\t\t\t\tdata-test={testId}\n\t\t\t\t\t\t\tvalue={Boolean(values[field.key])}\n\t\t\t\t\t\t\tonValueChange={async (next) => setValue(field.key, next)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</SwitchRow>\n\t\t\t\t);\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t\treturn (\n\t\t\t<Input\n\t\t\t\tkey={field.key}\n\t\t\t\tdata-test={testId}\n\t\t\t\tvariant=\"small\"\n\t\t\t\tlabelText={field.title}\n\t\t\t\tlabelTextBold\n\t\t\t\tplaceholder={field.hint ?? ''}\n\t\t\t\tvalue={String(values[field.key] ?? '')}\n\t\t\t\tonChangeText={(text) => setValue(field.key, text)}\n\t\t\t/>\n\t\t);\n\t};\n\n\tconst copy = TOOL_COPY[toolKey];\n\n\treturn (\n\t\t<SideModal\n\t\t\theader={copy.title}\n\t\t\tcloseOnEscapeKey={false}\n\t\t\tzIndex={zIndex}\n\t\t\theaderCustomComponent={\n\t\t\t\t<DrawerHeaderText\n\t\t\t\t\ttitle={copy.title}\n\t\t\t\t\tsubtitle={copy.subtitle}\n\t\t\t\t\ticon={\n\t\t\t\t\t\tSOURCE_ICONS[\n\t\t\t\t\t\t\ttoolKey === 'send_slack_message'\n\t\t\t\t\t\t\t\t? ToolSource.Slack\n\t\t\t\t\t\t\t\t: ToolSource.EmailHandover\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t}\n\t\t\thideCrossButton={false}\n\t\t\twidth=\"431px\"\n\t\t\theaderStyle={DRAWER_HEADER_STYLE}\n\t\t\tbodyStyle={DRAWER_BODY_STYLE}\n\t\t\tonClose={onClose}\n\t\t\tsaveButtonProps={{\n\t\t\t\t'data-test': 'config-tool-save',\n\t\t\t\tbuttonText: 'Save',\n\t\t\t\tbuttonType: 'primary',\n\t\t\t\tsize: 'small',\n\t\t\t\tdisabled: !canSave,\n\t\t\t\tisLoading: saving,\n\t\t\t\tonClick: handleSave,\n\t\t\t}}\n\t\t\tcancelButtonProps={{\n\t\t\t\t'data-test': 'config-tool-cancel',\n\t\t\t\tbuttonText: 'Cancel',\n\t\t\t\tbuttonType: 'tertiaryGray',\n\t\t\t\tsize: 'small',\n\t\t\t\tonClick: onClose,\n\t\t\t}}\n\t\t>\n\t\t\t{fields.map(renderField)}\n\t\t</SideModal>\n\t);\n};\n\nconst ChipsFieldWrap = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px;\n`;\n\nconst EmailInputBox = styled.input`\n\twidth: 100%;\n\tmin-width: 0;\n\tbox-sizing: border-box;\n\theight: 32px;\n\tpadding: 0 8px;\n\tborder: 1px solid ${COLORS.stroke.primary};\n\tborder-radius: 4px;\n\tfont-family: 'Inter', sans-serif;\n\tfont-size: 14px;\n\tcolor: ${COLORS.content.primary};\n\tbackground: ${COLORS.surface.standard};\n\toutline: none;\n\n\t&::placeholder {\n\t\tcolor: ${COLORS.content.secondary};\n\t}\n\n\t&:focus {\n\t\tborder-color: ${COLORS.stroke.brand};\n\t}\n`;\n\nconst ChipRow = styled.div`\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: 6px;\n`;\n\nconst SwitchRow = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tgap: 12px;\n`;\n\nconst SwitchText = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 4px;\n\tmin-width: 0;\n`;\n"],"names":["TOOL_COPY","EmailChipsField","chips","onChange","placeholder","nativeID","hint","buffer","setBuffer","useState","commit","parts","s","p","ChipsFieldWrap","jsx","EmailInputBox","e","ChipRow","email","Tag","CrossIcon","_","idx","seedValues","template","initial","values","key","toChips","value","ConfigToolPanel","toolKey","onClose","onSave","onImprove","charLimits","AGENT_CHAR_LIMITS","zIndex","setValues","saving","setSaving","fields","isEmail","setValue","prev","canSave","f","handleSave","params","config","result","renderField","field","testId","FieldBlock","TitleSmall","COLORS","BodyCaption","ToolInstructionsField","text","SwitchRow","jsxs","SwitchText","Switch","next","Input","copy","SideModal","DrawerHeaderText","SOURCE_ICONS","ToolSource","DRAWER_HEADER_STYLE","DRAWER_BODY_STYLE","styled"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),ut=require("../../../assets/icons/cross.svg.js"),o=require("react"),ct=require("styled-components"),w=require("../../TypographyStyle.js"),N=require("../../../utils/arrayUtils.js"),l=require("../../../constants/Theme.js"),c=require("../AgentBuilder.styled.js"),lt=require("../constants/charLimits.js"),H=require("../utils/mentionSerialization.js"),p=require("../utils/sourceIcons.js"),K=require("./MentionEditor.js"),dt=require("./SelectableListSection.js"),gt=require("../../input/Input.js"),z=require("../../button/Button.js"),mt=require("../../toaster/Toaster.js"),pt=i=>i&&typeof i=="object"&&"default"in i?i:{default:i},ht=pt(ct),F=ht.default.button`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),o=require("react"),ve=require("styled-components"),se=require("../../../utils/arrayUtils.js"),H=require("../../../constants/Theme.js"),ke=require("../constants/charLimits.js"),a=require("../constants/tools.js"),f=require("../utils/mentionSerialization.js"),g=require("../utils/sourceIcons.js"),Ee=require("./ConfigToolPanel.js"),F=require("./DrawerHeaderText.js"),re=require("./MentionEditor.js"),Le=require("./RestApiToolPanel.js"),Me=require("./SelectableListSection.js"),qe=require("../../side-modal/SideModal.js"),Ne=require("../../input/Input.js"),je=require("../../toaster/Toaster.js"),we=u=>u&&typeof u=="object"&&"default"in u?u:{default:u},Ke=we(ve),Ue=1e3,ie=1002,ae=(u,S)=>{const i=u??[];return i.some(d=>d.id===S.id)?i.map(d=>d.id===S.id?S:d):[...i,S]},le=Ke.default.button`
2
2
  align-self: flex-start;
3
- border: 1px solid ${l.COLORS.stroke.primary};
4
- color: ${l.COLORS.content.primary};
5
- background: ${l.COLORS.surface.standard};
3
+ border: 1px solid ${H.COLORS.stroke.primary};
4
+ color: ${H.COLORS.content.primary};
5
+ background: ${H.COLORS.surface.standard};
6
6
  border-radius: 8px;
7
7
  padding: 6px 12px;
8
8
  font-size: 13px;
@@ -14,5 +14,5 @@
14
14
  cursor: default;
15
15
  opacity: 0.6;
16
16
  }
17
- `,St=({onClose:i,onSave:$,availableTools:u,onImprove:h,title:D="Create sub-agent",initial:S,appLabel:L="Manifest",charLimits:C=lt.AGENT_CHAR_LIMITS})=>{const[I,W]=o.useState(S?.name??""),[d,b]=o.useState(S?.instructions??""),[g,f]=o.useState(S?.guardrail??""),[j,y]=o.useState(S?.tools??[]),[k,B]=o.useState(!1),[J,v]=o.useState(0),[Q,R]=o.useState(0),[m,M]=o.useState(null),T=o.useMemo(()=>H.buildAgentMentionItems(u,[],L),[u,L]),x=o.useRef({}),O=o.useRef("instructions"),V=o.useCallback(t=>{x.current.instructions=t??void 0},[]),X=o.useCallback(t=>{x.current.guardrail=t??void 0},[]),Y=o.useCallback(()=>{O.current="instructions"},[]),Z=o.useCallback(()=>{O.current="guardrail"},[]),P=o.useCallback((t,n)=>{t==="tool"&&y(s=>N.addUnique(s,n))},[]),tt=o.useCallback(t=>{(x.current[O.current]??x.current.instructions)?.("tool",t)},[]),[q,A]=o.useState(null),_=o.useRef(null),E=o.useRef(0),et=t=>{const n=u.find(r=>r.tool_id===t),s=`{{tool:${t}}}`,a=r=>r.split(s).join("");_.current={instructions:d,guardrail:g,tools:j},b(r=>a(r)),f(r=>a(r)),y(r=>r.filter(it=>it!==t)),v(r=>r+1),R(r=>r+1),E.current+=1,A({id:E.current,message:`Tool "${n?.display_name??"Tool"}" removed`})},nt=()=>{const t=_.current;t&&(b(t.instructions),f(t.guardrail),y(t.tools),v(n=>n+1),R(n=>n+1),_.current=null),A(null)},G=I.trim().length>0&&(d.trim().length>0||g.trim().length>0),ot=j.map(t=>{const n=u.find(s=>s.tool_id===t);return n?{id:t,label:n.display_name,icon:p.SOURCE_ICONS[n.source??"manifest"]}:null}).filter(t=>t!==null),st=u.map(t=>({label:t.display_name,value:t.tool_id,leadingIcon:p.renderSourceIcon(p.SOURCE_ICONS[t.source??"manifest"])??void 0})),rt=(()=>{const t=[],n=new Map;return u.forEach(s=>{const a=s.source??"manifest";n.has(a)||(n.set(a,[]),t.push(a)),n.get(a)?.push({label:s.display_name,value:s.tool_id,leadingIcon:p.renderSourceIcon(p.SOURCE_ICONS[s.source??"manifest"])??void 0})}),t.map(s=>({source:s,label:H.toolSourceLabel(s),options:n.get(s)??[]}))})(),at=async()=>{if(!G||k)return;const t=$({name:I.trim(),instructions:d,guardrail:g,tools:j});if(t&&typeof t.then=="function"){B(!0);try{await t}finally{B(!1)}}},U=async t=>{if(!(!h||m)){M(t);try{const s=await h(t,t==="instructions"?d:g);t==="instructions"?(b(s),v(a=>a+1)):(f(s),R(a=>a+1))}finally{M(null)}}};return e.jsxs(e.Fragment,{children:[e.jsx(c.SubAgentScrim,{onClick:i,"data-test":"subagent-scrim"}),e.jsxs(c.SubAgentPanel,{"data-test":"create-subagent-panel",children:[e.jsxs(c.SubAgentPanelHeader,{children:[e.jsxs(c.SubAgentPanelHeaderText,{children:[e.jsx(w.TitleRegular,{color:l.COLORS.content.primary,children:D}),e.jsx(w.BodySecondary,{color:l.COLORS.content.secondary,children:"Each sub-agent handles one piece of the job. Use @ in the main instructions to call them."})]}),e.jsx(c.SubAgentCloseButton,{onClick:i,"aria-label":"Close",children:e.jsx(ut.default,{width:20,height:20,color:l.COLORS.content.secondary})})]}),e.jsxs(c.SubAgentPanelBody,{children:[e.jsx(gt.Input,{"data-test":"subagent-name",labelText:"Agent name",labelTextBold:!0,placeholder:"Enter agent name",value:I,maxCharLimit:C.name,maxCharLimitPosition:"TOP",maxCharStyle:{fontSize:12,lineHeight:"16px"},onChangeText:W}),e.jsx(K.MentionEditor,{"data-test":"subagent-instructions",label:"Instructions",value:d,onChange:b,maxLength:C.instructions,placeholder:"Write the steps in plain English. Type @ to reference a tool.",minHeight:"160px",resetKey:`instr-${J}`,mentionItems:T,tools:u,onMentionSelect:P,onFocus:Y,registerInsert:V,action:h?e.jsx(F,{type:"button","data-test":"subagent-improve-instructions",disabled:m!==null,onClick:()=>U("instructions"),children:m==="instructions"?"Improving…":"Improve with AI"}):void 0}),e.jsx(K.MentionEditor,{"data-test":"subagent-guardrail",label:"Guardrails",value:g,onChange:f,maxLength:C.guardrail,placeholder:"e.g. Never discuss competitor pricing. Type @ to reference a tool.",minHeight:"160px",resetKey:`guard-${Q}`,mentionItems:T,tools:u,onMentionSelect:P,onFocus:Z,registerInsert:X,action:h?e.jsx(F,{type:"button","data-test":"subagent-improve-guardrail",disabled:m!==null,onClick:()=>U("guardrail"),children:m==="guardrail"?"Improving…":"Improve with AI"}):void 0}),e.jsx(dt.SelectableListSection,{title:"Tools this agent can use",dataTestPrefix:"subagent-tools",items:ot,addableOptions:st,sourceGroups:rt,mentionItems:T,emptyText:"No tools added yet.",onAdd:t=>{tt(t),y(n=>N.addUnique(n,t))},onRemove:et})]}),e.jsxs(c.SubAgentPanelFooter,{children:[e.jsx(z.Button,{"data-test":"subagent-save",buttonType:"primary",size:"small",buttonText:"Save",disabled:!G,isLoading:k,onClick:at}),e.jsx(z.Button,{"data-test":"subagent-cancel",buttonType:"tertiaryGray",size:"small",buttonText:"Cancel",onClick:i})]})]}),q&&e.jsx(mt.Toaster,{text:q.message,type:"info",position:"top-right",autoClose:5e3,hideCloseButton:!0,buttonProps:{buttonText:"Undo",showButton:!0,onButtonClick:()=>(nt(),{})},onCloseToast:()=>A(null)},q.id)]})};exports.CreateSubAgentPanel=St;
17
+ `,Be=({onClose:u,onSave:S,availableTools:i,onImprove:d,onImproveToolInstructions:W,configToolTemplates:$,title:Y="Create sub-agent",initial:C,appLabel:X="Manifest",charLimits:y=ke.AGENT_CHAR_LIMITS})=>{const[E,ce]=o.useState(C?.name??""),[b,O]=o.useState(C?.instructions??""),[h,_]=o.useState(C?.guardrail??""),[L,A]=o.useState(C?.tools??[]),[m,M]=o.useState(C?.configTools??[]),[p,q]=o.useState(C?.restApiTools??[]),[l,T]=o.useState(null),v=o.useRef(0),[Z,J]=o.useState(!1),[ue,N]=o.useState(0),[de,j]=o.useState(0),[I,Q]=o.useState(null),w=o.useMemo(()=>[...f.buildAgentMentionItems(i,[],X),...f.buildCustomToolMentionItems(m,p)],[i,X,m,p]),k=o.useRef({}),K=o.useRef("instructions"),pe=o.useCallback(e=>{k.current.instructions=e??void 0},[]),ge=o.useCallback(e=>{k.current.guardrail=e??void 0},[]),me=o.useCallback(()=>{K.current="instructions"},[]),fe=o.useCallback(()=>{K.current="guardrail"},[]),V=o.useCallback((e,t)=>{e==="tool"&&A(n=>se.addUnique(n,t))},[]),x=o.useCallback((e,t)=>{(k.current[K.current]??k.current.instructions)?.("tool",e,t)},[]),U=o.useCallback(e=>{v.current+=1,T({key:v.current,kind:"restapi",initialRest:e})},[]),B=o.useCallback((e,t)=>{v.current+=1,T({key:v.current,kind:"config",toolKey:e,initialConfig:t})},[]),Se=o.useCallback(e=>{const t=a.CONFIG_TOOL_SOURCES[e];t?B(t):U()},[B,U]),Ce=o.useCallback(e=>{const t=!p.some(n=>n.id===e.id);q(n=>ae(n,e)),t&&x(e.id,f.restApiMentionItem(e).label),T(null)},[p,x]),Te=o.useCallback(e=>{const t=!m.some(n=>n.id===e.id);M(n=>ae(n,e)),t&&x(e.id,f.configToolMentionItem(e).label),T(null)},[m,x]),[D,P]=o.useState(null),G=o.useRef(null),ee=o.useRef(0),ye=e=>{const t=i.find(s=>s.tool_id===e)?.display_name??p.find(s=>s.id===e)?.name??"Tool",n=`{{tool:${e}}}`,c=s=>s.split(n).join("");G.current={instructions:b,guardrail:h,tools:L,configTools:m,restApiTools:p},O(s=>c(s)),_(s=>c(s)),A(s=>s.filter(R=>R!==e)),M(s=>s.filter(R=>R.id!==e)),q(s=>s.filter(R=>R.id!==e)),N(s=>s+1),j(s=>s+1),ee.current+=1,P({id:ee.current,message:`Tool "${t}" removed`})},be=()=>{const e=G.current;e&&(O(e.instructions),_(e.guardrail),A(e.tools),M(e.configTools),q(e.restApiTools),N(t=>t+1),j(t=>t+1),G.current=null),P(null)},te=E.trim().length>0&&(b.trim().length>0||h.trim().length>0),he=L.map(e=>{const t=i.find(n=>n.tool_id===e);return t?{id:e,label:t.display_name,icon:g.sourceIcon(t.source??a.ToolSource.Manifest)}:null}).filter(e=>e!==null),Ie=p.map(e=>({id:e.id,label:f.restApiToolName(e),icon:g.SOURCE_ICONS[a.ToolSource.RestApi],onConfigure:()=>U(e)})),xe=m.map(e=>({id:e.id,label:f.configToolName(e),icon:g.SOURCE_ICONS[e.tool_key==="send_slack_message"?a.ToolSource.Slack:a.ToolSource.EmailHandover],onConfigure:()=>B(e.tool_key,e)})),Re=[...he,...Ie,...xe],z=a.TOOL_ACTION_SOURCES.filter(e=>{const t=a.CONFIG_TOOL_SOURCES[e];return!t||!!$?.[t]}).map(e=>({source:e,label:a.TOOL_ACTION_LABELS[e]??a.TOOL_SOURCE_LABELS[e],icon:g.SOURCE_ICONS[e],onSelect:()=>Se(e)})),oe=l?.kind==="config"&&l.toolKey?$?.[l.toolKey]:void 0,Oe=i.map(e=>({label:e.display_name,value:e.tool_id,leadingIcon:g.renderSourceIcon(g.sourceIcon(e.source??a.ToolSource.Manifest))??void 0})),_e=(()=>{const e=[],t=new Map;return i.forEach(n=>{const c=n.source??a.ToolSource.Manifest;t.has(c)||(t.set(c,[]),e.push(c)),t.get(c)?.push({label:n.display_name,value:n.tool_id,leadingIcon:g.renderSourceIcon(g.sourceIcon(n.source??a.ToolSource.Manifest))??void 0})}),e.map(n=>({source:n,label:f.toolSourceLabel(n),options:t.get(n)??[]}))})(),Ae=async()=>{if(!te||Z)return;const e=S({name:E.trim(),instructions:b,guardrail:h,tools:L,configTools:m,restApiTools:p});if(e&&typeof e.then=="function"){J(!0);try{await e}finally{J(!1)}}},ne=async e=>{if(!(!d||I)){Q(e);try{const n=await d(e,e==="instructions"?b:h);e==="instructions"?(O(n),N(c=>c+1)):(_(n),j(c=>c+1))}finally{Q(null)}}};return r.jsxs(r.Fragment,{children:[r.jsxs(qe.SideModal,{header:Y,closeOnEscapeKey:!1,zIndex:Ue,headerCustomComponent:r.jsx(F.DrawerHeaderText,{title:Y,subtitle:"Each sub-agent handles one piece of the job. Use @ in the main instructions to call them."}),width:"421px",headerStyle:F.DRAWER_HEADER_STYLE,bodyStyle:F.DRAWER_BODY_STYLE,onClose:u,saveButtonProps:{"data-test":"subagent-save",buttonText:"Save",buttonType:"primary",size:"small",disabled:!te,isLoading:Z,onClick:Ae},cancelButtonProps:{"data-test":"subagent-cancel",buttonText:"Cancel",buttonType:"tertiaryGray",size:"small",onClick:u},children:[r.jsx(Ne.Input,{"data-test":"subagent-name",labelText:"Agent name",labelTextBold:!0,placeholder:"Enter agent name",value:E,maxCharLimit:y.name,maxCharLimitPosition:"TOP",maxCharStyle:{fontSize:12,lineHeight:"16px"},onChangeText:ce}),r.jsx(re.MentionEditor,{"data-test":"subagent-instructions",label:"Instructions",value:b,onChange:O,maxLength:y.instructions,placeholder:"Write the steps in plain English. Type @ to reference a tool.",minHeight:"160px",resetKey:`instr-${ue}`,mentionItems:w,tools:i,toolActions:z,onMentionSelect:V,onFocus:me,registerInsert:pe,action:d?r.jsx(le,{type:"button","data-test":"subagent-improve-instructions",disabled:I!==null,onClick:()=>ne("instructions"),children:I==="instructions"?"Improving…":"Improve with AI"}):void 0}),r.jsx(re.MentionEditor,{"data-test":"subagent-guardrail",label:"Guardrails",value:h,onChange:_,maxLength:y.guardrail,placeholder:"e.g. Never discuss competitor pricing. Type @ to reference a tool.",minHeight:"160px",resetKey:`guard-${de}`,mentionItems:w,tools:i,toolActions:z,onMentionSelect:V,onFocus:fe,registerInsert:ge,action:d?r.jsx(le,{type:"button","data-test":"subagent-improve-guardrail",disabled:I!==null,onClick:()=>ne("guardrail"),children:I==="guardrail"?"Improving…":"Improve with AI"}):void 0}),r.jsx(Me.SelectableListSection,{title:"Tools this agent can use",dataTestPrefix:"subagent-tools",items:Re,addableOptions:Oe,sourceGroups:_e,mentionItems:w,actionSources:z,emptyText:"No tools added yet.",onAdd:e=>{x(e),A(t=>se.addUnique(t,e))},onRemove:ye})]}),l?.kind==="restapi"&&r.jsx(Le.RestApiToolPanel,{initial:l.initialRest,charLimits:y,onImprove:W,onClose:()=>T(null),onSave:Ce,zIndex:ie},l.key),l?.kind==="config"&&l.toolKey&&oe&&r.jsx(Ee.ConfigToolPanel,{toolKey:l.toolKey,template:oe,initial:l.initialConfig,charLimits:y,onImprove:W,onClose:()=>T(null),onSave:Te,zIndex:ie},l.key),D&&r.jsx(je.Toaster,{text:D.message,type:"info",position:"top-right",autoClose:5e3,hideCloseButton:!0,buttonProps:{buttonText:"Undo",showButton:!0,onButtonClick:()=>(be(),{})},onCloseToast:()=>P(null)},D.id)]})};exports.CreateSubAgentPanel=Be;
18
18
  //# sourceMappingURL=CreateSubAgentPanel.js.map