@parhelia/core 0.1.12632 → 0.1.12638

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 (27) hide show
  1. package/dist/components/ui/LanguageSelector.js +1 -7
  2. package/dist/components/ui/LanguageSelector.js.map +1 -1
  3. package/dist/editor/menubar/ItemLanguageVersion.js +1 -1
  4. package/dist/editor/menubar/ItemLanguageVersion.js.map +1 -1
  5. package/dist/editor/settings/panels/AgentProfileConfigPanel.js +11 -11
  6. package/dist/editor/settings/panels/AgentProfileConfigPanel.js.map +1 -1
  7. package/dist/editor/settings/panels/ProjectTemplatesPanel.js +44 -5
  8. package/dist/editor/settings/panels/ProjectTemplatesPanel.js.map +1 -1
  9. package/dist/revision.d.ts +2 -2
  10. package/dist/revision.js +2 -2
  11. package/dist/task-board/TaskBoardWorkspace.js +1 -1
  12. package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
  13. package/dist/task-board/components/TaskCard.js +3 -2
  14. package/dist/task-board/components/TaskCard.js.map +1 -1
  15. package/dist/task-board/components/TaskDetailPanel.js +89 -4
  16. package/dist/task-board/components/TaskDetailPanel.js.map +1 -1
  17. package/dist/task-board/components/TaskRow.js +3 -2
  18. package/dist/task-board/components/TaskRow.js.map +1 -1
  19. package/dist/task-board/services/taskService.d.ts +2 -1
  20. package/dist/task-board/services/taskService.js +3 -0
  21. package/dist/task-board/services/taskService.js.map +1 -1
  22. package/dist/task-board/types.d.ts +10 -1
  23. package/dist/task-board/views/DependencyGraphView.js +17 -9
  24. package/dist/task-board/views/DependencyGraphView.js.map +1 -1
  25. package/dist/task-board/views/KanbanView.js +1 -1
  26. package/dist/task-board/views/KanbanView.js.map +1 -1
  27. package/package.json +1 -1
@@ -9,7 +9,6 @@ import { Switch } from "./switch";
9
9
  import { FilterInput, highlightMatch } from "../FilterInput";
10
10
  import { Command, CommandEmpty, CommandGroup, CommandItem, CommandList, } from "./command";
11
11
  import { Popover, PopoverContent, PopoverTrigger } from "./popover";
12
- const MAX_LANG_SELECTOR_NAME_LENGTH = 5;
13
12
  export function LanguageSelector({ selectedLanguage, onLanguageSelected, showAllLanguagesSwitch, showAllLanguages = false, disabled = false, }) {
14
13
  const [open, setOpen] = React.useState(false);
15
14
  const [showAllLanguagesInternal, setShowAllLanguagesInternal] = React.useState(showAllLanguages);
@@ -45,12 +44,7 @@ export function LanguageSelector({ selectedLanguage, onLanguageSelected, showAll
45
44
  setFilterText("");
46
45
  }
47
46
  };
48
- const langSelectorLabel = currentLanguage
49
- ? editContext?.isMobile && currentLanguage.name.length > MAX_LANG_SELECTOR_NAME_LENGTH
50
- ? `${currentLanguage.name.slice(0, MAX_LANG_SELECTOR_NAME_LENGTH)}\u2026`
51
- : currentLanguage.name
52
- : null;
53
- return (_jsxs(Popover, { open: open, onOpenChange: handleOpenChange, enableIframeClickDetection: false, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs(Button, { ref: triggerRef, variant: "select", role: "combobox", "aria-expanded": open, className: cn(disabled && "cursor-not-allowed opacity-50"), "data-testid": "language-selector", disabled: disabled, title: currentLanguage?.name ?? undefined, children: [_jsxs("div", { className: "flex items-center gap-2", children: [currentLanguage && (_jsxs(_Fragment, { children: [_jsx("img", { src: currentLanguage.icon, className: "h-5", alt: currentLanguage.name }), langSelectorLabel] })), !currentLanguage && _jsx("div", { children: "Select language" })] }), _jsx(ChevronsUpDown, { className: "h-4 w-4 shrink-0 opacity-50 hidden md:block", strokeWidth: 1 })] }) }), _jsx(PopoverContent, { className: "w-64 p-0", align: "start", container: portalContainer, onMouseDown: (e) => e.stopPropagation(), onClick: (e) => e.stopPropagation(), children: _jsxs(Command, { children: [showAllLanguagesSwitch && (_jsxs("div", { className: "flex items-center justify-center gap-2 p-2 text-xs font-light", children: [_jsx("span", { className: "cursor-pointer", onClick: () => setShowAllLanguagesInternal(false), children: "Item languages" }), _jsx(Switch, { checked: showAllLanguagesInternal, className: "cursor-pointer", onCheckedChange: (checked) => setShowAllLanguagesInternal(checked) }), _jsx("span", { className: "cursor-pointer", onClick: () => setShowAllLanguagesInternal(true), children: "All languages" })] })), _jsx("div", { className: "p-2", children: _jsx(FilterInput, { value: filterText, onChange: setFilterText, placeholder: "Filter languages...", className: "w-full", onClear: () => setFilterText("") }) }), _jsxs(CommandList, { className: "max-h-[50vh]", children: [_jsx(CommandEmpty, { children: filterText.trim()
47
+ return (_jsxs(Popover, { open: open, onOpenChange: handleOpenChange, enableIframeClickDetection: false, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs(Button, { ref: triggerRef, variant: "select", role: "combobox", "aria-expanded": open, className: cn("min-w-0 max-w-full", disabled && "cursor-not-allowed opacity-50"), "data-testid": "language-selector", disabled: disabled, title: currentLanguage?.name ?? undefined, children: [_jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [currentLanguage && (_jsxs(_Fragment, { children: [_jsx("img", { src: currentLanguage.icon, className: "h-5 shrink-0", alt: currentLanguage.name }), _jsx("span", { "data-testid": "language-selector-label", className: "truncate min-w-[5ch]", children: currentLanguage.name })] })), !currentLanguage && _jsx("div", { children: "Select language" })] }), _jsx(ChevronsUpDown, { className: "h-4 w-4 shrink-0 opacity-50 hidden md:block", strokeWidth: 1 })] }) }), _jsx(PopoverContent, { className: "w-64 p-0", align: "start", container: portalContainer, onMouseDown: (e) => e.stopPropagation(), onClick: (e) => e.stopPropagation(), children: _jsxs(Command, { children: [showAllLanguagesSwitch && (_jsxs("div", { className: "flex items-center justify-center gap-2 p-2 text-xs font-light", children: [_jsx("span", { className: "cursor-pointer", onClick: () => setShowAllLanguagesInternal(false), children: "Item languages" }), _jsx(Switch, { checked: showAllLanguagesInternal, className: "cursor-pointer", onCheckedChange: (checked) => setShowAllLanguagesInternal(checked) }), _jsx("span", { className: "cursor-pointer", onClick: () => setShowAllLanguagesInternal(true), children: "All languages" })] })), _jsx("div", { className: "p-2", children: _jsx(FilterInput, { value: filterText, onChange: setFilterText, placeholder: "Filter languages...", className: "w-full", onClear: () => setFilterText("") }) }), _jsxs(CommandList, { className: "max-h-[50vh]", children: [_jsx(CommandEmpty, { children: filterText.trim()
54
48
  ? `No languages found matching "${filterText}"`
55
49
  : "This item has no languages" }), _jsx(CommandGroup, { children: languages.map((language) => (_jsxs(CommandItem, { value: language.languageCode, onSelect: () => selectLanguage(language), className: cn("flex items-center gap-2 px-2 py-2 text-xs font-light",
56
50
  // Remove background when selected (auto-focused) but not hovered
@@ -1 +1 @@
1
- {"version":3,"file":"LanguageSelector.js","sourceRoot":"","sources":["../../../src/components/ui/LanguageSelector.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAE7D,OAAO,EACL,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,WAAW,GACZ,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEpE,MAAM,6BAA6B,GAAG,CAAC,CAAC;AAExC,MAAM,UAAU,gBAAgB,CAAC,EAC/B,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,GAAG,KAAK,EACxB,QAAQ,GAAG,KAAK,GAOjB;IACC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,CAAC,wBAAwB,EAAE,2BAA2B,CAAC,GAC3D,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IACnC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAA2B,IAAI,CAAC,CAAC;IAChE,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GACzC,KAAK,CAAC,QAAQ,CAAqB,IAAI,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,MAAM,YAAY,GAAG,WAAW,EAAE,aAAa,IAAI,EAAE,CAAC;IAEtD,MAAM,eAAe,GAAG,YAAY,CAAC,IAAI,CACvC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,gBAAgB,CAC3C,CAAC;IAEF,IAAI,SAAS,GAAG,wBAAwB;QACtC,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAW,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IAEzD,oBAAoB;IACpB,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;QACtB,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAW,EAAE,EAAE,CAC3C,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CACxD,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAEvD,MAAM,cAAc,GAAG,KAAK,EAAE,QAAkB,EAAE,EAAE;QAClD,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,CAAC;QACf,yCAAyC;QACzC,aAAa,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO;IACT,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,CAAC,OAAgB,EAAE,EAAE;QAC5C,IAAI,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAC9C,8BAA8B,CACT,CAAC;YACxB,kBAAkB,CAAC,aAAa,CAAC,CAAC;QACpC,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,CAAC;QAEjB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,mCAAmC;YACnC,aAAa,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,eAAe;QACvC,CAAC,CAAC,WAAW,EAAE,QAAQ,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,GAAG,6BAA6B;YACpF,CAAC,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,6BAA6B,CAAC,QAAQ;YACzE,CAAC,CAAC,eAAe,CAAC,IAAI;QACxB,CAAC,CAAC,IAAI,CAAC;IAGT,OAAO,CACL,MAAC,OAAO,IACN,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,gBAAgB,EAC9B,0BAA0B,EAAE,KAAK,aAEjC,KAAC,cAAc,IAAC,OAAO,kBACrB,MAAC,MAAM,IACL,GAAG,EAAE,UAAU,EACf,OAAO,EAAC,QAAQ,EAChB,IAAI,EAAC,UAAU,mBACA,IAAI,EACnB,SAAS,EAAE,EAAE,CAAC,QAAQ,IAAI,+BAA+B,CAAC,iBAC9C,mBAAmB,EAC/B,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,eAAe,EAAE,IAAI,IAAI,SAAS,aAEzC,eAAK,SAAS,EAAC,yBAAyB,aACrC,eAAe,IAAI,CAClB,8BACE,cACE,GAAG,EAAE,eAAe,CAAC,IAAI,EACzB,SAAS,EAAC,KAAK,EACf,GAAG,EAAE,eAAe,CAAC,IAAI,GACzB,EACD,iBAAiB,IACjB,CACJ,EACA,CAAC,eAAe,IAAI,4CAA0B,IAC3C,EACN,KAAC,cAAc,IACb,SAAS,EAAC,6CAA6C,EACvD,WAAW,EAAE,CAAC,GACd,IACK,GACM,EACjB,KAAC,cAAc,IACb,SAAS,EAAC,UAAU,EACpB,KAAK,EAAC,OAAO,EACb,SAAS,EAAE,eAAe,EAC1B,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,EACvC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,YAEnC,MAAC,OAAO,eACL,sBAAsB,IAAI,CACzB,eAAK,SAAS,EAAC,+DAA+D,aAC5E,eACE,SAAS,EAAC,gBAAgB,EAC1B,OAAO,EAAE,GAAG,EAAE,CAAC,2BAA2B,CAAC,KAAK,CAAC,+BAG5C,EAEP,KAAC,MAAM,IACL,OAAO,EAAE,wBAAwB,EACjC,SAAS,EAAC,gBAAgB,EAC1B,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE,CAC3B,2BAA2B,CAAC,OAAO,CAAC,GAEtC,EACF,eACE,SAAS,EAAC,gBAAgB,EAC1B,OAAO,EAAE,GAAG,EAAE,CAAC,2BAA2B,CAAC,IAAI,CAAC,8BAG3C,IACH,CACP,EACD,cAAK,SAAS,EAAC,KAAK,YAClB,KAAC,WAAW,IACV,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,aAAa,EACvB,WAAW,EAAC,qBAAqB,EACjC,SAAS,EAAC,QAAQ,EAClB,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,GAChC,GACE,EACN,MAAC,WAAW,IAAC,SAAS,EAAC,cAAc,aACnC,KAAC,YAAY,cACV,UAAU,CAAC,IAAI,EAAE;wCAChB,CAAC,CAAC,gCAAgC,UAAU,GAAG;wCAC/C,CAAC,CAAC,4BAA4B,GACnB,EACf,KAAC,YAAY,cACV,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAC3B,MAAC,WAAW,IAEV,KAAK,EAAE,QAAQ,CAAC,YAAY,EAC5B,QAAQ,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,EACxC,SAAS,EAAE,EAAE,CACX,sDAAsD;wCACtD,iEAAiE;wCACjE,qCAAqC;wCACrC,gDAAgD;wCAChD,wDAAwD,CACzD,aAED,cACE,GAAG,EAAE,QAAQ,CAAC,IAAI,EAClB,SAAS,EAAC,kBAAkB,EAC5B,GAAG,EAAE,QAAQ,CAAC,IAAI,GAClB,EACF,gBAAM,SAAS,EAAC,QAAQ,aACrB,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,QACzC,QAAQ,CAAC,QAAQ,SACb,EACP,KAAC,KAAK,IACJ,SAAS,EAAE,EAAE,CACX,SAAS,EACT,gBAAgB,KAAK,QAAQ,CAAC,YAAY;oDACxC,CAAC,CAAC,aAAa;oDACf,CAAC,CAAC,WAAW,CAChB,EACD,WAAW,EAAE,CAAC,GACd,KA5BG,QAAQ,CAAC,YAAY,CA6Bd,CACf,CAAC,GACW,IACH,IACN,GACK,IACT,CACX,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"LanguageSelector.js","sourceRoot":"","sources":["../../../src/components/ui/LanguageSelector.tsx"],"names":[],"mappings":"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"}
@@ -51,7 +51,7 @@ export function ItemLanguageVersion() {
51
51
  editContext.loadItem({ ...item, version });
52
52
  } })) : null;
53
53
  if (editContext.isMobile) {
54
- return (_jsxs("div", { className: "mr-1 flex w-full min-w-0 items-center gap-1 overflow-y-clip md:overflow-scroll", children: [_jsx(PageSelector, { itemDescriptor: item || null }), !isCompareMode && languageSelector, !isCompareMode && versionSelector] }));
54
+ return (_jsxs("div", { className: "mr-1 flex w-full min-w-0 items-center gap-1", children: [_jsx(PageSelector, { itemDescriptor: item || null }), !isCompareMode && languageSelector && (_jsx("div", { className: "flex min-w-0", children: languageSelector })), !isCompareMode && versionSelector && (_jsx("div", { className: "shrink-0", children: versionSelector }))] }));
55
55
  }
56
56
  return (_jsxs("div", { className: "mr-3 flex min-w-0 items-center gap-3", "data-testid": "item-language-version-bar", children: [_jsxs("div", { className: "flex min-w-0 items-center gap-1", children: [_jsx(PageSelector, { itemDescriptor: item || null }), _jsx("div", { className: "shrink-0", children: _jsx(FavoritesControls, { itemDescriptor: item || null, editContext: editContext }) })] }), item && (_jsx("div", { className: "shrink-0", children: _jsx(ItemActionsMenu, { isMobile: false }) })), !isCompareMode && languageSelector && (_jsx("div", { className: "shrink-0", children: languageSelector })), !isCompareMode && versionSelector && (_jsx("div", { className: "shrink-0", children: versionSelector }))] }));
57
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ItemLanguageVersion.js","sourceRoot":"","sources":["../../../src/editor/menubar/ItemLanguageVersion.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ItemLanguageVersion.js","sourceRoot":"","sources":["../../../src/editor/menubar/ItemLanguageVersion.tsx"],"names":[],"mappings":"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"}
@@ -19,17 +19,6 @@ const FIELD_GROUPS = [
19
19
  icon: _jsx(Sparkles, { className: "h-4 w-4", strokeWidth: 1.5 }),
20
20
  fieldNames: [["Default Model"], ["Models"]],
21
21
  },
22
- {
23
- title: "Tools",
24
- description: "Which tools this profile may use and tool-call behavior.",
25
- icon: _jsx(Wrench, { className: "h-4 w-4", strokeWidth: 1.5 }),
26
- fieldNames: [
27
- ["Allowed Tools"],
28
- ["Ask Mode Tools", "Read-Only Mode Tools"],
29
- ["Max Tool Calls"],
30
- ["Disable Tool Call Pruning"],
31
- ],
32
- },
33
22
  {
34
23
  title: "Skills",
35
24
  description: "Skill packs and which profiles the agent may switch to.",
@@ -41,6 +30,17 @@ const FIELD_GROUPS = [
41
30
  ["Allowed Switch Profiles"],
42
31
  ],
43
32
  },
33
+ {
34
+ title: "Tools",
35
+ description: "Which tools this profile may use and tool-call behavior.",
36
+ icon: _jsx(Wrench, { className: "h-4 w-4", strokeWidth: 1.5 }),
37
+ fieldNames: [
38
+ ["Allowed Tools"],
39
+ ["Ask Mode Tools", "Read-Only Mode Tools"],
40
+ ["Max Tool Calls"],
41
+ ["Disable Tool Call Pruning"],
42
+ ],
43
+ },
44
44
  {
45
45
  title: "Behavior",
46
46
  description: "Controls how the profile operates in the editor.",
@@ -1 +1 @@
1
- {"version":3,"file":"AgentProfileConfigPanel.js","sourceRoot":"","sources":["../../../../src/editor/settings/panels/AgentProfileConfigPanel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EACL,uBAAuB,GAExB,MAAM,2BAA2B,CAAC;AAUnC,MAAM,YAAY,GAA2B;IAC3C;QACE,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,2CAA2C;QACxD,IAAI,EAAE,KAAC,IAAI,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,GAAG,GAAI;QACpD,UAAU,EAAE;YACV,CAAC,eAAe,CAAC;YACjB,CAAC,yBAAyB,CAAC;YAC3B,CAAC,aAAa,CAAC;YACf,CAAC,kBAAkB,CAAC;SACrB;KACF;IACD;QACE,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,wCAAwC;QACrD,IAAI,EAAE,KAAC,QAAQ,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,GAAG,GAAI;QACxD,UAAU,EAAE,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;KAC5C;IACD;QACE,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,0DAA0D;QACvE,IAAI,EAAE,KAAC,MAAM,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,GAAG,GAAI;QACtD,UAAU,EAAE;YACV,CAAC,eAAe,CAAC;YACjB,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;YAC1C,CAAC,gBAAgB,CAAC;YAClB,CAAC,2BAA2B,CAAC;SAC9B;KACF;IACD;QACE,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,yDAAyD;QACtE,IAAI,EAAE,KAAC,MAAM,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,GAAG,GAAI;QACtD,UAAU,EAAE;YACV,CAAC,gBAAgB,CAAC;YAClB,CAAC,kBAAkB,CAAC;YACpB,CAAC,gBAAgB,CAAC;YAClB,CAAC,yBAAyB,CAAC;SAC5B;KACF;IACD;QACE,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,kDAAkD;QAC/D,IAAI,EAAE,KAAC,KAAK,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,GAAG,GAAI;QACrD,UAAU,EAAE;YACV,CAAC,cAAc,CAAC;YAChB,CAAC,wBAAwB,CAAC;YAC1B,CAAC,sBAAsB,CAAC;YACxB,CAAC,qBAAqB,CAAC;YACvB,CAAC,uBAAuB,CAAC;YACzB,CAAC,sBAAsB,CAAC;SACzB;KACF;CACF,CAAC;AAEF,MAAM,UAAU,uBAAuB,CAAC,EACtC,MAAM,EACN,KAAK,EACL,OAAO,EACP,OAAO,EACP,YAAY,GAAG,CAAC,GACa;IAC7B,OAAO,CACL,KAAC,uBAAuB,IACtB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,YAAY,EACzB,UAAU,EAAE,KAAC,GAAG,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,GAAG,GAAI,EACzD,cAAc,EAAC,8BAA8B,EAC7C,YAAY,EAAC,mDAAmD,EAChE,aAAa,EAAC,eAAe,EAC7B,iBAAiB,EAAC,oFAAoF,GACtG,CACH,CAAC;AACJ,CAAC;AAED,eAAe,uBAAuB,CAAC"}
1
+ {"version":3,"file":"AgentProfileConfigPanel.js","sourceRoot":"","sources":["../../../../src/editor/settings/panels/AgentProfileConfigPanel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EACL,uBAAuB,GAExB,MAAM,2BAA2B,CAAC;AAUnC,MAAM,YAAY,GAA2B;IAC3C;QACE,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,2CAA2C;QACxD,IAAI,EAAE,KAAC,IAAI,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,GAAG,GAAI;QACpD,UAAU,EAAE;YACV,CAAC,eAAe,CAAC;YACjB,CAAC,yBAAyB,CAAC;YAC3B,CAAC,aAAa,CAAC;YACf,CAAC,kBAAkB,CAAC;SACrB;KACF;IACD;QACE,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,wCAAwC;QACrD,IAAI,EAAE,KAAC,QAAQ,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,GAAG,GAAI;QACxD,UAAU,EAAE,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;KAC5C;IACD;QACE,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,yDAAyD;QACtE,IAAI,EAAE,KAAC,MAAM,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,GAAG,GAAI;QACtD,UAAU,EAAE;YACV,CAAC,gBAAgB,CAAC;YAClB,CAAC,kBAAkB,CAAC;YACpB,CAAC,gBAAgB,CAAC;YAClB,CAAC,yBAAyB,CAAC;SAC5B;KACF;IACD;QACE,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,0DAA0D;QACvE,IAAI,EAAE,KAAC,MAAM,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,GAAG,GAAI;QACtD,UAAU,EAAE;YACV,CAAC,eAAe,CAAC;YACjB,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;YAC1C,CAAC,gBAAgB,CAAC;YAClB,CAAC,2BAA2B,CAAC;SAC9B;KACF;IACD;QACE,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,kDAAkD;QAC/D,IAAI,EAAE,KAAC,KAAK,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,GAAG,GAAI;QACrD,UAAU,EAAE;YACV,CAAC,cAAc,CAAC;YAChB,CAAC,wBAAwB,CAAC;YAC1B,CAAC,sBAAsB,CAAC;YACxB,CAAC,qBAAqB,CAAC;YACvB,CAAC,uBAAuB,CAAC;YACzB,CAAC,sBAAsB,CAAC;SACzB;KACF;CACF,CAAC;AAEF,MAAM,UAAU,uBAAuB,CAAC,EACtC,MAAM,EACN,KAAK,EACL,OAAO,EACP,OAAO,EACP,YAAY,GAAG,CAAC,GACa;IAC7B,OAAO,CACL,KAAC,uBAAuB,IACtB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,YAAY,EACzB,UAAU,EAAE,KAAC,GAAG,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,GAAG,GAAI,EACzD,cAAc,EAAC,8BAA8B,EAC7C,YAAY,EAAC,mDAAmD,EAChE,aAAa,EAAC,eAAe,EAC7B,iBAAiB,EAAC,oFAAoF,GACtG,CACH,CAAC;AACJ,CAAC;AAED,eAAe,uBAAuB,CAAC"}
@@ -35,6 +35,14 @@ const PRIORITY_OPTIONS = [
35
35
  { value: "High", label: "High" },
36
36
  { value: "Critical", label: "Critical" },
37
37
  ];
38
+ const TASK_TYPE_OPTIONS = [
39
+ { value: "Task", label: "Task" },
40
+ { value: "DecisionPoint", label: "Decision Point" },
41
+ ];
42
+ const DECISION_MODE_OPTIONS = [
43
+ { value: "MultiSelect", label: "Multi-select" },
44
+ { value: "SingleSelect", label: "Single-select" },
45
+ ];
38
46
  const PROJECT_TEMPLATE_AUTOSAVE_DEBOUNCE_MS = 1200;
39
47
  const PROJECT_TEMPLATE_EXTERNAL_REFRESH_DEBOUNCE_MS = 350;
40
48
  const PROJECT_TEMPLATE_ROOT_PATHS = [
@@ -63,12 +71,22 @@ function normalizeTaskTemplate(task) {
63
71
  const rawAgentProfileId = task.agentProfileId?.trim() || null;
64
72
  const rawParentTaskId = task.parentTaskId?.trim() || null;
65
73
  const disabled = task.disabled === true;
74
+ const taskType = String(task.taskType ?? "").toLowerCase() === "decisionpoint"
75
+ ? "DecisionPoint"
76
+ : "Task";
77
+ const decisionMode = taskType === "DecisionPoint"
78
+ ? String(task.decisionMode ?? "").toLowerCase() === "singleselect"
79
+ ? "SingleSelect"
80
+ : "MultiSelect"
81
+ : null;
66
82
  const assigneeType = task.assigneeType ?? (rawAgentProfileId ? "Agent" : null);
67
83
  if (assigneeType === "Agent") {
68
84
  const canonicalAgentId = rawAgentProfileId || (isValidGuid(rawAssigneeId) ? rawAssigneeId : null);
69
85
  return {
70
86
  ...task,
71
87
  disabled,
88
+ taskType,
89
+ decisionMode,
72
90
  assigneeType: "Agent",
73
91
  assigneeId: canonicalAgentId,
74
92
  agentProfileId: canonicalAgentId,
@@ -79,6 +97,8 @@ function normalizeTaskTemplate(task) {
79
97
  return {
80
98
  ...task,
81
99
  disabled,
100
+ taskType,
101
+ decisionMode,
82
102
  assigneeType,
83
103
  assigneeId: rawAssigneeId,
84
104
  agentProfileId: null,
@@ -88,6 +108,8 @@ function normalizeTaskTemplate(task) {
88
108
  return {
89
109
  ...task,
90
110
  disabled,
111
+ taskType,
112
+ decisionMode,
91
113
  assigneeType: null,
92
114
  assigneeId: rawAssigneeId,
93
115
  agentProfileId: null,
@@ -135,6 +157,8 @@ function createEmptyTaskTemplate(taskCount, title) {
135
157
  assigneeType: null,
136
158
  assigneeId: null,
137
159
  priority: null,
160
+ taskType: "Task",
161
+ decisionMode: null,
138
162
  sortOrder: taskCount * 100,
139
163
  parentTaskId: null,
140
164
  dependencyIds: [],
@@ -170,6 +194,10 @@ function buildUpsertTemplateRequest(template) {
170
194
  title: normalizedTask.title.trim(),
171
195
  description: normalizedTask.description?.trim() || null,
172
196
  disabled: normalizedTask.disabled === true,
197
+ taskType: normalizedTask.taskType ?? "Task",
198
+ decisionMode: normalizedTask.taskType === "DecisionPoint"
199
+ ? normalizedTask.decisionMode ?? "MultiSelect"
200
+ : null,
173
201
  priority: normalizedTask.priority || null,
174
202
  sortOrder: normalizedTask.sortOrder || index * 100,
175
203
  parentTaskId: normalizedTask.parentTaskId || null,
@@ -259,7 +287,7 @@ function buildTemplateTaskItems(template, aiProfilesById) {
259
287
  taskId: task.id,
260
288
  projectId: template.id,
261
289
  parentTaskId: normalizedTask.parentTaskId ?? null,
262
- taskType: "Task",
290
+ taskType: normalizedTask.taskType ?? "Task",
263
291
  title: task.title || "Untitled Task",
264
292
  description: normalizedTask.description ?? null,
265
293
  status: "Todo",
@@ -1541,23 +1569,34 @@ export function ProjectTemplatesPanel() {
1541
1569
  }));
1542
1570
  return nextLayout;
1543
1571
  } }) }));
1544
- const taskPane = (_jsx("div", { className: "flex h-full min-h-0 flex-col overflow-hidden", "data-testid": "project-template-task-detail-pane", children: !selectedTask ? (_jsx("div", { className: "min-h-0 flex-1 overflow-y-auto p-4", children: _jsx("div", { className: "rounded-lg border border-dashed border-gray-200 bg-gray-50 p-6 text-center text-xs text-gray-500", children: "Select a task node to edit its details." }) })) : (_jsxs(_Fragment, { children: [_jsx("div", { className: "shrink-0 border-b border-gray-100 bg-white px-4 pt-4 pb-3", children: _jsxs("div", { className: "flex items-center justify-between gap-3", children: [_jsxs("div", { children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("div", { className: "text-xs font-semibold text-gray-900", "data-testid": "project-template-selected-task-title", children: selectedTask.title || "Untitled Task" }), selectedTask.disabled ? (_jsx(Badge, { variant: "outline", className: "text-[10px] uppercase", children: "Disabled" })) : null] }), _jsx("div", { className: "text-xs text-gray-500", children: "Configure task details, assignment, and dependencies." })] }), _jsxs(Button, { variant: "outline", size: "sm", onClick: handleDeleteSelectedTask, "data-testid": "project-template-remove-task-button", children: [_jsx(Trash2, { className: "h-4 w-4", strokeWidth: 1.5 }), "Remove Task"] })] }) }), _jsx("div", { className: "min-h-0 flex-1 overflow-y-auto px-4 pt-3 pb-4", children: _jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "grid gap-4 md:grid-cols-2", children: [_jsxs("div", { className: "grid gap-1.5 md:col-span-2", children: [_jsx(Label, { className: "text-xs", children: "Task title" }), _jsx(Input, { value: selectedTask.title, onChange: (event) => updateSelectedTask((currentTask) => ({
1572
+ const taskPane = (_jsx("div", { className: "flex h-full min-h-0 flex-col overflow-hidden", "data-testid": "project-template-task-detail-pane", children: !selectedTask ? (_jsx("div", { className: "min-h-0 flex-1 overflow-y-auto p-4", children: _jsx("div", { className: "rounded-lg border border-dashed border-gray-200 bg-gray-50 p-6 text-center text-xs text-gray-500", children: "Select a task node to edit its details." }) })) : (_jsxs(_Fragment, { children: [_jsx("div", { className: "shrink-0 border-b border-gray-100 bg-white px-4 pt-4 pb-3", children: _jsxs("div", { className: "flex items-center justify-between gap-3", children: [_jsxs("div", { children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("div", { className: "text-xs font-semibold text-gray-900", "data-testid": "project-template-selected-task-title", children: selectedTask.title || "Untitled Task" }), selectedTask.taskType === "DecisionPoint" ? (_jsx(Badge, { variant: "outline", className: "border-violet-200 bg-violet-50 text-[10px] uppercase text-violet-700", children: "Decision Point" })) : null, selectedTask.disabled ? (_jsx(Badge, { variant: "outline", className: "text-[10px] uppercase", children: "Disabled" })) : null] }), _jsx("div", { className: "text-xs text-gray-500", children: "Configure task details, assignment, and dependencies." })] }), _jsxs(Button, { variant: "outline", size: "sm", onClick: handleDeleteSelectedTask, "data-testid": "project-template-remove-task-button", children: [_jsx(Trash2, { className: "h-4 w-4", strokeWidth: 1.5 }), "Remove Task"] })] }) }), _jsx("div", { className: "min-h-0 flex-1 overflow-y-auto px-4 pt-3 pb-4", children: _jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "grid gap-4 md:grid-cols-2", children: [_jsxs("div", { className: "grid gap-1.5 md:col-span-2", children: [_jsx(Label, { className: "text-xs", children: "Task title" }), _jsx(Input, { value: selectedTask.title, onChange: (event) => updateSelectedTask((currentTask) => ({
1545
1573
  ...currentTask,
1546
1574
  title: event.target.value,
1547
1575
  })), placeholder: "Task title", className: "text-xs md:text-xs", "data-testid": "project-template-task-title-input" })] }), _jsxs("div", { className: "grid gap-1.5 md:col-span-2", children: [_jsx(Label, { className: "text-xs", children: "Description" }), _jsx(Textarea, { className: "text-xs", value: selectedTask.description ?? "", onChange: (event) => updateSelectedTask((currentTask) => ({
1548
1576
  ...currentTask,
1549
1577
  description: event.target.value,
1550
- })), rows: 4, placeholder: "Describe what this task should accomplish", "data-testid": "project-template-task-description-input" })] }), _jsxs("div", { className: "grid gap-1.5", children: [_jsx(Label, { className: "text-xs", children: "Priority" }), _jsx(Select, { className: "text-xs", value: selectedTask.priority ?? "", onValueChange: (value) => updateSelectedTask((currentTask) => ({
1578
+ })), rows: 4, placeholder: "Describe what this task should accomplish", "data-testid": "project-template-task-description-input" })] }), _jsxs("div", { className: "grid gap-1.5", children: [_jsx(Label, { className: "text-xs", children: "Task type" }), _jsx(Select, { className: "text-xs", value: selectedTask.taskType ?? "Task", onValueChange: (value) => updateSelectedTask((currentTask) => ({
1579
+ ...currentTask,
1580
+ taskType: value === "DecisionPoint" ? "DecisionPoint" : "Task",
1581
+ decisionMode: value === "DecisionPoint"
1582
+ ? currentTask.decisionMode ?? "MultiSelect"
1583
+ : null,
1584
+ })), options: TASK_TYPE_OPTIONS, "data-testid": "project-template-task-type-select" })] }), selectedTask.taskType === "DecisionPoint" ? (_jsxs("div", { className: "grid gap-1.5", children: [_jsx(Label, { className: "text-xs", children: "Decision mode" }), _jsx(Select, { className: "text-xs", value: selectedTask.decisionMode ?? "MultiSelect", onValueChange: (value) => updateSelectedTask((currentTask) => ({
1585
+ ...currentTask,
1586
+ decisionMode: value === "SingleSelect"
1587
+ ? "SingleSelect"
1588
+ : "MultiSelect",
1589
+ })), options: DECISION_MODE_OPTIONS, "data-testid": "project-template-task-decision-mode-select" })] })) : null, _jsxs("div", { className: "grid gap-1.5", children: [_jsx(Label, { className: "text-xs", children: "Priority" }), _jsx(Select, { className: "text-xs", value: selectedTask.priority ?? "", onValueChange: (value) => updateSelectedTask((currentTask) => ({
1551
1590
  ...currentTask,
1552
1591
  priority: value || null,
1553
- })), options: PRIORITY_OPTIONS, "data-testid": "project-template-task-priority-select" })] }), _jsxs("div", { className: "grid gap-1.5 md:col-span-2", children: [_jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsx(Label, { className: "text-xs", children: "Default assignee" }), selectedTask.assigneeType === "Agent" ? (_jsxs(Button, { type: "button", size: "sm", variant: "outline", className: "h-7 gap-1 px-2 text-xs", onClick: () => void handleEditAssignedAgentProfile(), disabled: !selectedAgentProfileId, "data-testid": "project-template-task-edit-agent-profile-button", children: [_jsx(Settings2, { className: "h-3.5 w-3.5", strokeWidth: 1.5 }), "Edit Profile"] })) : null] }), _jsx(TaskAssigneePicker, { projectTemplateId: draftTemplate.id, assigneeType: selectedTask.assigneeType ?? null, value: selectedTask.assigneeId ?? null, displayValue: selectedTaskAssigneeDisplayValue, onChange: (next) => updateSelectedTask((currentTask) => ({
1592
+ })), options: PRIORITY_OPTIONS, "data-testid": "project-template-task-priority-select" })] }), selectedTask.taskType === "DecisionPoint" ? (_jsx("div", { className: "grid gap-1.5 md:col-span-2", children: _jsx("div", { className: "rounded-md border border-violet-100 bg-violet-50 px-3 py-2 text-[11px] leading-snug text-violet-800", children: "Direct dependents of this task become selectable option roots when the project is created. Their descendants are materialized only after the Decision Point is resolved at runtime." }) })) : null, _jsxs("div", { className: "grid gap-1.5 md:col-span-2", children: [_jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsx(Label, { className: "text-xs", children: "Default assignee" }), selectedTask.assigneeType === "Agent" ? (_jsxs(Button, { type: "button", size: "sm", variant: "outline", className: "h-7 gap-1 px-2 text-xs", onClick: () => void handleEditAssignedAgentProfile(), disabled: !selectedAgentProfileId, "data-testid": "project-template-task-edit-agent-profile-button", children: [_jsx(Settings2, { className: "h-3.5 w-3.5", strokeWidth: 1.5 }), "Edit Profile"] })) : null] }), _jsx(TaskAssigneePicker, { projectTemplateId: draftTemplate.id, assigneeType: selectedTask.assigneeType ?? null, value: selectedTask.assigneeId ?? null, displayValue: selectedTaskAssigneeDisplayValue, onChange: (next) => updateSelectedTask((currentTask) => ({
1554
1593
  ...currentTask,
1555
1594
  assigneeType: next?.assigneeType ?? null,
1556
1595
  assigneeId: next?.assigneeId ?? null,
1557
1596
  agentProfileId: next?.assigneeType === "Agent"
1558
1597
  ? next.assigneeId
1559
1598
  : null,
1560
- })), placeholder: "Assign user or agent", buttonClassName: "h-8 w-full justify-between rounded-md bg-white text-xs font-medium", buttonTestId: "project-template-task-assignee-picker" }), profilesError ? (_jsx("div", { className: "text-xs text-amber-700", children: profilesError })) : null] })] }), _jsxs("div", { className: "space-y-3", children: [_jsxs("div", { className: "rounded-lg border border-gray-200 bg-gray-50 p-3", "data-testid": "project-template-dependencies-section", children: [_jsxs("div", { className: "mb-2 flex items-center justify-between gap-2", children: [_jsxs("div", { className: "flex items-center gap-2 text-xs font-medium text-gray-800", children: [_jsx(Shield, { className: "h-4 w-4 text-gray-500", strokeWidth: 1.5 }), "Dependencies"] }), _jsxs(Popover, { open: dependencyPickerOpen, onOpenChange: setDependencyPickerOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsx(Button, { type: "button", size: "sm", variant: "outline", className: "h-7 gap-1 px-2", disabled: dependencyAddCandidates.length === 0, "aria-label": "Add dependency", "data-testid": "project-template-add-dependency-button", children: _jsx(Plus, { className: "h-3.5 w-3.5", strokeWidth: 1.5 }) }) }), _jsxs(PopoverContent, { align: "end", className: "w-72 p-0", sideOffset: 6, "data-testid": "project-template-dependency-popover", children: [_jsx("div", { className: "border-b border-gray-100 px-3 py-2 text-xs font-medium text-gray-700", children: "Depends on" }), _jsx("div", { className: "max-h-56 overflow-y-auto p-1", children: dependencyAddCandidates.length === 0 ? (_jsx("div", { className: "px-2 py-3 text-center text-xs text-gray-500", children: "All other tasks are already linked." })) : (dependencyAddCandidates.map((task) => (_jsxs("button", { type: "button", className: "flex w-full items-center gap-2 rounded-md px-2 py-2 text-left text-xs hover:bg-gray-100", onClick: () => handleAddDependency(task.id), "data-testid": `project-template-dependency-option-${task.id}`, children: [_jsx(Link2, { className: "h-3.5 w-3.5 shrink-0 text-gray-400", strokeWidth: 1.5 }), _jsx("span", { className: "min-w-0 truncate font-medium text-gray-900", children: task.title || "Untitled Task" })] }, task.id)))) })] })] })] }), _jsx("p", { className: "mb-2 text-[11px] leading-snug text-gray-500", children: "This task must wait for these tasks to finish first." }), dependencyTasks.length === 0 ? (_jsx("div", { className: "text-xs text-gray-500", children: draftTemplate.taskTemplates.filter((t) => t.id !== selectedTask.id).length === 0
1599
+ })), placeholder: "Assign user or agent", buttonClassName: "h-[27px] w-full justify-between rounded-md bg-gray-5 text-xs", buttonTestId: "project-template-task-assignee-picker" }), profilesError ? (_jsx("div", { className: "text-xs text-amber-700", children: profilesError })) : null] })] }), _jsxs("div", { className: "space-y-3", children: [_jsxs("div", { className: "rounded-lg border border-gray-200 bg-gray-50 p-3", "data-testid": "project-template-dependencies-section", children: [_jsxs("div", { className: "mb-2 flex items-center justify-between gap-2", children: [_jsxs("div", { className: "flex items-center gap-2 text-xs font-medium text-gray-800", children: [_jsx(Shield, { className: "h-4 w-4 text-gray-500", strokeWidth: 1.5 }), "Dependencies"] }), _jsxs(Popover, { open: dependencyPickerOpen, onOpenChange: setDependencyPickerOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsx(Button, { type: "button", size: "sm", variant: "outline", className: "h-7 gap-1 px-2", disabled: dependencyAddCandidates.length === 0, "aria-label": "Add dependency", "data-testid": "project-template-add-dependency-button", children: _jsx(Plus, { className: "h-3.5 w-3.5", strokeWidth: 1.5 }) }) }), _jsxs(PopoverContent, { align: "end", className: "w-72 p-0", sideOffset: 6, "data-testid": "project-template-dependency-popover", children: [_jsx("div", { className: "border-b border-gray-100 px-3 py-2 text-xs font-medium text-gray-700", children: "Depends on" }), _jsx("div", { className: "max-h-56 overflow-y-auto p-1", children: dependencyAddCandidates.length === 0 ? (_jsx("div", { className: "px-2 py-3 text-center text-xs text-gray-500", children: "All other tasks are already linked." })) : (dependencyAddCandidates.map((task) => (_jsxs("button", { type: "button", className: "flex w-full items-center gap-2 rounded-md px-2 py-2 text-left text-xs hover:bg-gray-100", onClick: () => handleAddDependency(task.id), "data-testid": `project-template-dependency-option-${task.id}`, children: [_jsx(Link2, { className: "h-3.5 w-3.5 shrink-0 text-gray-400", strokeWidth: 1.5 }), _jsx("span", { className: "min-w-0 truncate font-medium text-gray-900", children: task.title || "Untitled Task" })] }, task.id)))) })] })] })] }), _jsx("p", { className: "mb-2 text-[11px] leading-snug text-gray-500", children: "This task must wait for these tasks to finish first." }), dependencyTasks.length === 0 ? (_jsx("div", { className: "text-xs text-gray-500", children: draftTemplate.taskTemplates.filter((t) => t.id !== selectedTask.id).length === 0
1561
1600
  ? "Add more task templates to create dependencies."
1562
1601
  : "No dependencies yet. Use + to add one." })) : (_jsx("ul", { className: "space-y-1.5", children: dependencyTasks.map((task) => (_jsxs("li", { tabIndex: 0, className: cn("flex items-center justify-between gap-2 rounded-md border bg-white px-3 py-2 text-xs transition-colors outline-none", selectedDependencyId === task.id
1563
1602
  ? "border-amber-300 bg-amber-50 ring-1 ring-amber-200"