@harborclient/sdk 1.3.3 → 1.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/components/AnchorMenuPanel/index.d.ts +35 -0
  3. package/dist/components/AnchorMenuPanel/index.d.ts.map +1 -0
  4. package/dist/components/AnchorMenuPanel/index.js +364 -0
  5. package/dist/components/Breadcrumb/SegmentShell.d.ts +12 -1
  6. package/dist/components/Breadcrumb/SegmentShell.d.ts.map +1 -1
  7. package/dist/components/Breadcrumb/SegmentShell.js +7 -5
  8. package/dist/components/CodeEditor/index.d.ts +7 -4
  9. package/dist/components/CodeEditor/index.d.ts.map +1 -1
  10. package/dist/components/CodeEditor/index.js +15 -176
  11. package/dist/components/CodeEditor/selectionActionToolbar.d.ts +162 -0
  12. package/dist/components/CodeEditor/selectionActionToolbar.d.ts.map +1 -0
  13. package/dist/components/CodeEditor/selectionActionToolbar.js +319 -0
  14. package/dist/components/CopyToChatButton/constants.d.ts +18 -0
  15. package/dist/components/CopyToChatButton/constants.d.ts.map +1 -0
  16. package/dist/components/CopyToChatButton/constants.js +19 -0
  17. package/dist/components/CopyToChatButton/index.d.ts +49 -0
  18. package/dist/components/CopyToChatButton/index.d.ts.map +1 -0
  19. package/dist/components/CopyToChatButton/index.js +43 -0
  20. package/dist/components/FloatingDialog/floatingDialogPosition.d.ts +52 -0
  21. package/dist/components/FloatingDialog/floatingDialogPosition.d.ts.map +1 -0
  22. package/dist/components/FloatingDialog/floatingDialogPosition.js +33 -0
  23. package/dist/components/FloatingDialog/index.d.ts +95 -0
  24. package/dist/components/FloatingDialog/index.d.ts.map +1 -0
  25. package/dist/components/FloatingDialog/index.js +275 -0
  26. package/dist/components/FormGroup/index.d.ts +7 -1
  27. package/dist/components/FormGroup/index.d.ts.map +1 -1
  28. package/dist/components/FormGroup/index.js +8 -11
  29. package/dist/components/PageHeader/index.d.ts +2 -1
  30. package/dist/components/PageHeader/index.d.ts.map +1 -1
  31. package/dist/components/PageHeader/index.js +3 -2
  32. package/dist/components/PageSidebar/index.d.ts +1 -0
  33. package/dist/components/PageSidebar/index.d.ts.map +1 -1
  34. package/dist/components/PageSidebar/index.js +4 -13
  35. package/dist/components/Resizable/useResizable.d.ts +6 -0
  36. package/dist/components/Resizable/useResizable.d.ts.map +1 -1
  37. package/dist/components/Resizable/useResizable.js +113 -11
  38. package/dist/components/SettingFieldActions/index.d.ts +42 -0
  39. package/dist/components/SettingFieldActions/index.d.ts.map +1 -0
  40. package/dist/components/SettingFieldActions/index.js +66 -0
  41. package/dist/components/SidebarItem/SidebarEnvironmentItem.d.ts +42 -4
  42. package/dist/components/SidebarItem/SidebarEnvironmentItem.d.ts.map +1 -1
  43. package/dist/components/SidebarItem/SidebarEnvironmentItem.js +34 -5
  44. package/dist/components/SidebarItem/SidebarHistoryItem.d.ts +5 -1
  45. package/dist/components/SidebarItem/SidebarHistoryItem.d.ts.map +1 -1
  46. package/dist/components/SidebarItem/SidebarHistoryItem.js +2 -2
  47. package/dist/components/SidebarItem/SidebarWorkspaceItem.d.ts +9 -1
  48. package/dist/components/SidebarItem/SidebarWorkspaceItem.d.ts.map +1 -1
  49. package/dist/components/SidebarItem/SidebarWorkspaceItem.js +15 -2
  50. package/dist/components/TabBar/TabContextMenu.d.ts +3 -0
  51. package/dist/components/TabBar/TabContextMenu.d.ts.map +1 -1
  52. package/dist/components/TabBar/TabContextMenu.js +25 -16
  53. package/dist/components/VariableTable/index.d.ts +1 -1
  54. package/dist/components/VariableTable/index.d.ts.map +1 -1
  55. package/dist/components/VariableTable/index.js +14 -3
  56. package/dist/components/index.d.ts +6 -2
  57. package/dist/components/index.d.ts.map +1 -1
  58. package/dist/components/index.js +5 -1
  59. package/dist/runtime/createBridgedPluginContext.js +240 -2
  60. package/dist/snippets.d.ts +48 -2
  61. package/dist/styles.css +16 -0
  62. package/dist/types.d.ts +1159 -30
  63. package/dist/types.d.ts.map +1 -1
  64. package/dist/ui/index.d.ts +1 -0
  65. package/dist/ui/index.d.ts.map +1 -1
  66. package/dist/ui/index.js +1 -0
  67. package/package.json +1 -1
  68. package/dist/components/SelectionActionToolbar/index.d.ts +0 -41
  69. package/dist/components/SelectionActionToolbar/index.d.ts.map +0 -1
  70. package/dist/components/SelectionActionToolbar/index.js +0 -13
@@ -2,20 +2,13 @@ import { jsx as _jsx } from "@harborclient/sdk/jsx-runtime";
2
2
  import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from '@harborclient/sdk/react';
3
3
  import { clampMenuPosition } from '../menuPosition.js';
4
4
  import { portalToBody } from '../portalToBody.js';
5
+ import { findAdjacentEnabledIndex, findEdgeEnabledIndex, isMenuItemEnabled, menuItemClass } from '../rowActionsMenuHelpers.js';
5
6
  import { cn, resolveTabListKeyAction } from '../utils.js';
6
- /**
7
- * Tailwind classes for a single menu item button.
8
- *
9
- * @param variant - Visual variant for default or destructive actions.
10
- */
11
- function menuItemClass(variant) {
12
- const base = 'block w-full cursor-pointer border-none bg-transparent px-3.5 py-1.5 text-left app-no-drag';
13
- return variant === 'danger'
14
- ? `${base} text-text hover:bg-danger/15 hover:text-danger`
15
- : `${base} text-text hover:bg-selection`;
16
- }
17
7
  /**
18
8
  * Cursor-positioned context menu for tab bars, rendered in a portal at the click point.
9
+ *
10
+ * @param props - Menu groups, cursor anchor, and close handler.
11
+ * @returns Portal menu panel, or null when there are no items.
19
12
  */
20
13
  export function TabContextMenu({ groups, position, onClose }) {
21
14
  const menuRef = useRef(null);
@@ -41,7 +34,7 @@ export function TabContextMenu({ groups, position, onClose }) {
41
34
  });
42
35
  }, []);
43
36
  /**
44
- * Re-clamps the menu after mount and focuses the first item once dimensions are known.
37
+ * Re-clamps the menu after mount and focuses the first enabled item once dimensions are known.
45
38
  */
46
39
  useLayoutEffect(() => {
47
40
  const menu = menuRef.current;
@@ -53,8 +46,11 @@ export function TabContextMenu({ groups, position, onClose }) {
53
46
  width: rect.width,
54
47
  height: rect.height
55
48
  }));
56
- itemRefs.current[0]?.focus();
57
- }, [position, groups]);
49
+ const firstEnabled = findEdgeEnabledIndex(flatItems, false);
50
+ if (firstEnabled != null) {
51
+ focusItem(firstEnabled);
52
+ }
53
+ }, [position, groups, flatItems, focusItem]);
58
54
  /**
59
55
  * Closes the menu on outside click or Escape while it is open.
60
56
  */
@@ -90,6 +86,15 @@ export function TabContextMenu({ groups, position, onClose }) {
90
86
  closeMenu();
91
87
  return;
92
88
  }
89
+ if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {
90
+ const direction = event.key === 'ArrowDown' ? 1 : -1;
91
+ const next = findAdjacentEnabledIndex(flatItems, focusedIndex, direction);
92
+ if (next != null) {
93
+ event.preventDefault();
94
+ focusItem(next);
95
+ }
96
+ return;
97
+ }
93
98
  const arrowIndex = resolveTabListKeyAction(event.key, focusedIndex, flatItems.length);
94
99
  if (arrowIndex !== null) {
95
100
  event.preventDefault();
@@ -99,7 +104,7 @@ export function TabContextMenu({ groups, position, onClose }) {
99
104
  if (flatItems.length === 0) {
100
105
  return null;
101
106
  }
102
- return portalToBody(_jsx("div", { ref: menuRef, role: "menu", "aria-label": "Tab actions", className: "hc-tab-context-menu app-no-drag fixed z-50 min-w-[200px] rounded-md border border-separator bg-surface py-1 shadow-md", style: { left: clampedPosition.x, top: clampedPosition.y }, onKeyDown: handleMenuKeyDown, children: groups.map((group, groupIndex) => {
107
+ return portalToBody(_jsx("div", { ref: menuRef, role: "menu", "aria-label": "Tab actions", className: "hc-tab-context-menu app-no-drag fixed z-[70] min-w-[200px] rounded-md border border-separator bg-surface py-1 shadow-md", style: { left: clampedPosition.x, top: clampedPosition.y }, onKeyDown: handleMenuKeyDown, children: groups.map((group, groupIndex) => {
103
108
  let flatIndex = groups
104
109
  .slice(0, groupIndex)
105
110
  .reduce((count, groupItems) => count + groupItems.length, 0);
@@ -107,10 +112,14 @@ export function TabContextMenu({ groups, position, onClose }) {
107
112
  ? 'hc-tab-context-menu-group border-t border-separator'
108
113
  : 'hc-tab-context-menu-group', children: group.map((item) => {
109
114
  const itemIndex = flatIndex++;
115
+ const disabled = !isMenuItemEnabled(item);
110
116
  return (_jsx("button", { ref: (element) => {
111
117
  itemRefs.current[itemIndex] = element;
112
- }, type: "button", role: "menuitem", tabIndex: itemIndex === focusedIndex ? 0 : -1, className: cn('hc-tab-context-menu-item', menuItemClass(item.variant)), onClick: (event) => {
118
+ }, type: "button", role: "menuitem", disabled: disabled, tabIndex: itemIndex === focusedIndex && !disabled ? 0 : -1, className: cn('hc-tab-context-menu-item', menuItemClass(item.variant, disabled)), onClick: (event) => {
113
119
  event.stopPropagation();
120
+ if (disabled) {
121
+ return;
122
+ }
114
123
  closeMenu();
115
124
  item.onSelect?.();
116
125
  }, children: item.label }, item.label));
@@ -19,7 +19,7 @@ interface Props extends Omit<ComponentPropsWithoutRef<'div'>, 'children' | 'onCh
19
19
  focusKey?: string;
20
20
  }
21
21
  /**
22
- * Editable table for key/value/default/share variable rows.
22
+ * Editable table for key/value/default/share variable rows with an enable toggle.
23
23
  */
24
24
  export declare function VariableTable({ variables, onChange, description, focusKey, className, ...props }: Props): JSX.Element;
25
25
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/VariableTable/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,wBAAwB,EAAE,KAAK,GAAG,EAAqB,MAAM,OAAO,CAAC;AACnF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAY/C,UAAU,KAAM,SAAQ,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IACpF;;OAEG;IACH,SAAS,EAAE,QAAQ,EAAE,CAAC;IAEtB;;OAEG;IACH,QAAQ,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;IAE1C;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CA4JrB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/VariableTable/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,wBAAwB,EAAE,KAAK,GAAG,EAAqB,MAAM,OAAO,CAAC;AACnF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAkB/C,UAAU,KAAM,SAAQ,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IACpF;;OAEG;IACH,SAAS,EAAE,QAAQ,EAAE,CAAC;IAEtB;;OAEG;IACH,QAAQ,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;IAE1C;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CA4KrB"}
@@ -9,15 +9,24 @@ import { cn } from '../utils.js';
9
9
  /**
10
10
  * Returns a blank variable row for new table entries.
11
11
  */
12
- const emptyVariable = () => ({ key: '', value: '', defaultValue: '', share: false });
12
+ const emptyVariable = () => ({
13
+ key: '',
14
+ value: '',
15
+ defaultValue: '',
16
+ enabled: true,
17
+ share: false
18
+ });
13
19
  /**
14
- * Editable table for key/value/default/share variable rows.
20
+ * Editable table for key/value/default/share variable rows with an enable toggle.
15
21
  */
16
22
  export function VariableTable({ variables, onChange, description, focusKey, className, ...props }) {
17
23
  const valueInputRefs = useRef(new Map());
18
24
  const lastFocusedKeyRef = useRef(undefined);
19
25
  /**
20
26
  * Updates a single variable row by index.
27
+ *
28
+ * @param index - Row index to patch.
29
+ * @param patch - Fields to merge into the row.
21
30
  */
22
31
  const updateVariable = (index, patch) => {
23
32
  onChange(variables.map((row, i) => (i === index ? { ...row, ...patch } : row)));
@@ -30,6 +39,8 @@ export function VariableTable({ variables, onChange, description, focusKey, clas
30
39
  };
31
40
  /**
32
41
  * Removes a variable row, keeping at least one empty row.
42
+ *
43
+ * @param index - Row index to remove.
33
44
  */
34
45
  const removeVariable = (index) => {
35
46
  if (variables.length === 1) {
@@ -69,7 +80,7 @@ export function VariableTable({ variables, onChange, description, focusKey, clas
69
80
  });
70
81
  });
71
82
  }, [focusKey, variables]);
72
- return (_jsxs("div", { ...props, className: cn('hc-variable-table', className), children: [description && (_jsx("p", { className: "hc-variable-table-description mb-3 text-[14px] text-muted", children: description })), _jsxs("div", { className: "hc-variable-table-content flex flex-col gap-1.5", children: [_jsxs(Table, { children: [_jsx(TableHeader, { children: _jsxs("tr", { children: [_jsx(TableHead, { children: "Key" }), _jsx(TableHead, { children: "Value" }), _jsx(TableHead, { children: "Default" }), _jsx(TableHead, { className: "w-14 text-center", children: "Share" }), _jsx(TableHead, { className: "w-7 p-0 text-center" })] }) }), _jsx(TableBody, { children: variables.map((variable, index) => (_jsxs("tr", { children: [_jsx(TableCell, { children: _jsx(Input, { type: "text", className: "w-full", value: variable.key, placeholder: "variable", "aria-label": `Key, row ${index + 1}`, onChange: (e) => updateVariable(index, { key: e.target.value }) }) }), _jsx(TableCell, { children: _jsx(Input, { ref: (element) => {
83
+ return (_jsxs("div", { ...props, className: cn('hc-variable-table', className), children: [description && (_jsx("p", { className: "hc-variable-table-description mb-3 text-[14px] text-muted", children: description })), _jsxs("div", { className: "hc-variable-table-content flex flex-col gap-1.5", children: [_jsxs(Table, { children: [_jsx(TableHeader, { children: _jsxs("tr", { children: [_jsx(TableHead, { className: "w-6 p-0", children: _jsx("span", { className: "sr-only", children: "Enable" }) }), _jsx(TableHead, { children: "Key" }), _jsx(TableHead, { children: "Value" }), _jsx(TableHead, { children: "Default" }), _jsx(TableHead, { className: "w-14 text-center", children: "Share" }), _jsx(TableHead, { className: "w-7 p-0 text-center" })] }) }), _jsx(TableBody, { children: variables.map((variable, index) => (_jsxs("tr", { children: [_jsx(TableCell, { className: "w-6 text-center", children: _jsx(Checkbox, { checked: variable.enabled !== false, onChange: (e) => updateVariable(index, { enabled: e.target.checked }), "aria-label": `Enable, row ${index + 1}`, title: "Enable variable" }) }), _jsx(TableCell, { children: _jsx(Input, { type: "text", className: "w-full", value: variable.key, placeholder: "variable", "aria-label": `Key, row ${index + 1}`, onChange: (e) => updateVariable(index, { key: e.target.value }) }) }), _jsx(TableCell, { children: _jsx(Input, { ref: (element) => {
73
84
  if (element)
74
85
  valueInputRefs.current.set(index, element);
75
86
  else
@@ -18,6 +18,8 @@ export type { StatusDotVariant, StatusDotSize } from './StatusDot/index.js';
18
18
  export { Breadcrumb } from './Breadcrumb/index.js';
19
19
  export type { BreadcrumbSegment } from './Breadcrumb/index.js';
20
20
  export { Button } from './Button/index.js';
21
+ export { CopyToChatButton, COPY_TO_CHAT_ICON, COPY_TO_CHAT_LABEL, COPY_TO_CHAT_SHORTCUT_CODEMIRROR_KEY, COPY_TO_CHAT_SHORTCUT_HINT, COPY_TO_CHAT_SHORTCUT_LETTER, copyToChatActionLabel } from './CopyToChatButton/index.js';
22
+ export type { Props as CopyToChatButtonProps } from './CopyToChatButton/index.js';
21
23
  export { CodeEditor, CODE_EDITOR_THEME_OPTIONS } from './CodeEditor/index.js';
22
24
  export { CodeEditorConfigProvider, useCodeEditorConfig, DEFAULT_CODE_EDITOR_CONFIG } from './CodeEditor/config.js';
23
25
  export type { CodeEditorConfig } from './CodeEditor/config.js';
@@ -44,6 +46,8 @@ export type { Props as KeyValueEditorProps } from './KeyValueEditor/index.js';
44
46
  export { MethodSelect } from './MethodSelect/index.js';
45
47
  export { Modal, ModalFooter, ModalFormLayout } from './Modal/index.js';
46
48
  export { ModalHeader } from './Modal/ModalHeader.js';
49
+ export { FloatingDialog } from './FloatingDialog/index.js';
50
+ export { FLOATING_DIALOG_DEFAULT_LEFT, FLOATING_DIALOG_DEFAULT_TOP, FLOATING_DIALOG_VIEWPORT_MARGIN_PX, isFloatingDialogFullyOnScreen, type FloatingDialogPosition, type FloatingDialogSize } from './FloatingDialog/floatingDialogPosition.js';
47
51
  export { PromptModal } from './PromptModal/index.js';
48
52
  export type { Props as PromptModalProps } from './PromptModal/index.js';
49
53
  export { defaultCanSubmitPromptValue } from './PromptModal/promptModal.logic.js';
@@ -61,8 +65,6 @@ export type { Props as ProgressBarProps } from './ProgressBar/index.js';
61
65
  export { applyResizableSizes, Resizable, RESIZABLE_SYNC_EVENT, ResizeHandle, useResizable } from './Resizable/index.js';
62
66
  export type { UseResizableOptions, UseResizableResult } from './Resizable/useResizable.js';
63
67
  export { Scrollbars, type ScrollbarsAxis } from './Scrollbars/index.js';
64
- export { SelectionActionToolbar } from './SelectionActionToolbar/index.js';
65
- export type { Props as SelectionActionToolbarProps } from './SelectionActionToolbar/index.js';
66
68
  export { ScreenshotCarousel } from './ScreenshotCarousel/index.js';
67
69
  export { ScreenshotLightbox } from './ScreenshotCarousel/ScreenshotLightbox.js';
68
70
  export { screenshotCarouselImageFrameClassName, screenshotCarouselLightboxEnabled, type ScreenshotCarouselVariant } from './ScreenshotCarousel/variants.js';
@@ -73,9 +75,11 @@ export { ResourceList, ResourceListRow, ResourceListPrimary, ResourceListEmptyIt
73
75
  export { RoundButton } from './RoundButton/index.js';
74
76
  export { RowActionsMenu } from './RowActionsMenu/index.js';
75
77
  export type { MenuItem } from './RowActionsMenu/index.js';
78
+ export { AnchorMenuPanel } from './AnchorMenuPanel/index.js';
76
79
  export { buildReorderMenuGroup } from './rowActionsMenuHelpers.js';
77
80
  export { SettingIdLabel } from './SettingIdLabel/index.js';
78
81
  export type { Props as SettingIdLabelProps } from './SettingIdLabel/index.js';
82
+ export { SettingFieldActions } from './SettingFieldActions/index.js';
79
83
  export { SettingSectionHeading } from './SettingSectionHeading/index.js';
80
84
  export type { Props as SettingSectionHeadingProps } from './SettingSectionHeading/index.js';
81
85
  export { SortButton } from './SortButton/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,YAAY,EAAE,KAAK,IAAI,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,YAAY,EAAE,KAAK,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EACL,WAAW,EACX,wBAAwB,EACxB,4BAA4B,EAC5B,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,mCAAmC,EACnC,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,YAAY,EAAE,KAAK,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACxE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,0BAA0B,EAC3B,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,YAAY,EACV,KAAK,IAAI,eAAe,EACxB,oBAAoB,EACpB,kBAAkB,EAClB,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,YAAY,EAAE,KAAK,IAAI,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACpF,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,YAAY,EAAE,KAAK,IAAI,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,6BAA6B,EAC7B,qBAAqB,EACrB,yBAAyB,EAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,YAAY,EAAE,KAAK,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EACL,KAAK,EACL,QAAQ,EACR,KAAK,EACL,MAAM,EACN,MAAM,EACN,QAAQ,EACR,KAAK,EACL,UAAU,EACV,YAAY,EACZ,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,YAAY,EAAE,KAAK,IAAI,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,YAAY,EAAE,KAAK,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EACL,iBAAiB,EACjB,0BAA0B,EAC1B,8BAA8B,EAC9B,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,KAAK,YAAY,EACjB,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,YAAY,EAAE,KAAK,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EACL,mBAAmB,EACnB,SAAS,EACT,oBAAoB,EACpB,YAAY,EACZ,YAAY,EACb,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC3F,OAAO,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,YAAY,EAAE,KAAK,IAAI,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAC9F,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EACL,qCAAqC,EACrC,iCAAiC,EACjC,KAAK,yBAAyB,EAC/B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,cAAc,EACd,eAAe,EACf,KAAK,oBAAoB,EAC1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EACL,cAAc,EACd,UAAU,EACV,oBAAoB,EACpB,+BAA+B,EAC/B,qBAAqB,EACtB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,YAAY,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,YAAY,EAAE,KAAK,IAAI,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,YAAY,EAAE,KAAK,IAAI,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAC5F,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,YAAY,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAChG,YAAY,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,YAAY,EACV,KAAK,IAAI,4BAA4B,EACrC,kBAAkB,EACnB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,MAAM,EACN,WAAW,EACX,YAAY,EACZ,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,uBAAuB,EACvB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EACL,KAAK,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,YAAY,EAAE,KAAK,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EACL,oBAAoB,EACpB,6BAA6B,EAC7B,uBAAuB,EACxB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,YAAY,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EACL,WAAW,EACX,cAAc,EACd,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,0BAA0B,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACxB,mBAAmB,EACnB,2BAA2B,EAC3B,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,yBAAyB,EACzB,4BAA4B,EAC5B,0BAA0B,EAC1B,0BAA0B,EAC1B,kCAAkC,EAClC,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC7B,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ export { Badge } from './Badge/index.js';
12
12
  export { StatusDot, statusDotVariantClass } from './StatusDot/index.js';
13
13
  export { Breadcrumb } from './Breadcrumb/index.js';
14
14
  export { Button } from './Button/index.js';
15
+ export { CopyToChatButton, COPY_TO_CHAT_ICON, COPY_TO_CHAT_LABEL, COPY_TO_CHAT_SHORTCUT_CODEMIRROR_KEY, COPY_TO_CHAT_SHORTCUT_HINT, COPY_TO_CHAT_SHORTCUT_LETTER, copyToChatActionLabel } from './CopyToChatButton/index.js';
15
16
  export { CodeEditor, CODE_EDITOR_THEME_OPTIONS } from './CodeEditor/index.js';
16
17
  export { CodeEditorConfigProvider, useCodeEditorConfig, DEFAULT_CODE_EDITOR_CONFIG } from './CodeEditor/config.js';
17
18
  export { EmptyState } from './EmptyState/index.js';
@@ -31,6 +32,8 @@ export { KeyValueEditor } from './KeyValueEditor/index.js';
31
32
  export { MethodSelect } from './MethodSelect/index.js';
32
33
  export { Modal, ModalFooter, ModalFormLayout } from './Modal/index.js';
33
34
  export { ModalHeader } from './Modal/ModalHeader.js';
35
+ export { FloatingDialog } from './FloatingDialog/index.js';
36
+ export { FLOATING_DIALOG_DEFAULT_LEFT, FLOATING_DIALOG_DEFAULT_TOP, FLOATING_DIALOG_VIEWPORT_MARGIN_PX, isFloatingDialogFullyOnScreen } from './FloatingDialog/floatingDialogPosition.js';
34
37
  export { PromptModal } from './PromptModal/index.js';
35
38
  export { defaultCanSubmitPromptValue } from './PromptModal/promptModal.logic.js';
36
39
  export { portalToBody } from './portalToBody.js';
@@ -44,7 +47,6 @@ export { PanelCloseButton } from './PanelCloseButton/index.js';
44
47
  export { ProgressBar } from './ProgressBar/index.js';
45
48
  export { applyResizableSizes, Resizable, RESIZABLE_SYNC_EVENT, ResizeHandle, useResizable } from './Resizable/index.js';
46
49
  export { Scrollbars } from './Scrollbars/index.js';
47
- export { SelectionActionToolbar } from './SelectionActionToolbar/index.js';
48
50
  export { ScreenshotCarousel } from './ScreenshotCarousel/index.js';
49
51
  export { ScreenshotLightbox } from './ScreenshotCarousel/ScreenshotLightbox.js';
50
52
  export { screenshotCarouselImageFrameClassName, screenshotCarouselLightboxEnabled } from './ScreenshotCarousel/variants.js';
@@ -54,8 +56,10 @@ export { DEFAULT_HEIGHT, MIN_HEIGHT, footerPanelClassName, footerPanelCloseButto
54
56
  export { ResourceList, ResourceListRow, ResourceListPrimary, ResourceListEmptyItem } from './ResourceList/index.js';
55
57
  export { RoundButton } from './RoundButton/index.js';
56
58
  export { RowActionsMenu } from './RowActionsMenu/index.js';
59
+ export { AnchorMenuPanel } from './AnchorMenuPanel/index.js';
57
60
  export { buildReorderMenuGroup } from './rowActionsMenuHelpers.js';
58
61
  export { SettingIdLabel } from './SettingIdLabel/index.js';
62
+ export { SettingFieldActions } from './SettingFieldActions/index.js';
59
63
  export { SettingSectionHeading } from './SettingSectionHeading/index.js';
60
64
  export { SortButton } from './SortButton/index.js';
61
65
  export { SortButtonIcon } from './SortButton/SortButtonIcon.js';
@@ -358,6 +358,17 @@ export function createBridgedPluginContext({ pluginId, mode, contributionId, rea
358
358
  }
359
359
  };
360
360
 
361
+ /**
362
+ * Reads `replaces` from a sidebar panel manifest entry (manifest-authoritative).
363
+ *
364
+ * @param {string} contributionId - Raw contribution id.
365
+ * @returns {'collections'|undefined}
366
+ */
367
+ const getSidebarPanelReplaces = (contributionId) => {
368
+ const entry = manifest.contributes?.sidebarPanels?.find((panel) => panel.id === contributionId);
369
+ return entry?.replaces === 'collections' ? 'collections' : undefined;
370
+ };
371
+
361
372
  /**
362
373
  * Asserts that a menu command is declared in manifest.contributes.menus.
363
374
  *
@@ -583,6 +594,7 @@ export function createBridgedPluginContext({ pluginId, mode, contributionId, rea
583
594
  if (!canRegisterUi()) {
584
595
  return noopDisposable();
585
596
  }
597
+ const replaces = getSidebarPanelReplaces(panel.id);
586
598
  return registerUiContribution(
587
599
  'sidebarPanels',
588
600
  panel.id,
@@ -591,7 +603,8 @@ export function createBridgedPluginContext({ pluginId, mode, contributionId, rea
591
603
  title: panel.title,
592
604
  icon: panel.icon,
593
605
  order: panel.order,
594
- contributionId: panel.id
606
+ contributionId: panel.id,
607
+ ...(replaces ? { replaces } : {})
595
608
  },
596
609
  panel.Component
597
610
  );
@@ -782,6 +795,47 @@ export function createBridgedPluginContext({ pluginId, mode, contributionId, rea
782
795
  });
783
796
  });
784
797
  },
798
+ registerWorkflowToolbarAction: (action) => {
799
+ assertManifestContribution('workflowToolbarActions', action.id);
800
+ if (!isAgent) {
801
+ return noopDisposable();
802
+ }
803
+ void bridgeInvoke('registerContribution', {
804
+ kind: 'workflowToolbarActions',
805
+ contribution: {
806
+ pluginId,
807
+ id: action.id,
808
+ title: action.title,
809
+ command: action.command,
810
+ icon: action.icon,
811
+ order: action.order
812
+ }
813
+ });
814
+ return track(() => {
815
+ void bridgeInvoke('unregisterContribution', {
816
+ kind: 'workflowToolbarActions',
817
+ contributionId: action.id
818
+ });
819
+ });
820
+ },
821
+ registerWorkflowActionBlock: (block) => {
822
+ assertManifestContribution('workflowActionBlocks', block.id);
823
+ if (!canRegisterUi()) {
824
+ return noopDisposable();
825
+ }
826
+ return registerUiContribution(
827
+ 'workflowActionBlocks',
828
+ block.id,
829
+ {
830
+ id: `plugin:${pluginId}:${block.id}`,
831
+ title: block.title,
832
+ order: block.order,
833
+ actionTypes: block.actionTypes,
834
+ contributionId: block.id
835
+ },
836
+ block.Component
837
+ );
838
+ },
785
839
  registerContextMenuItem: (item) => {
786
840
  assertManifestContribution('contextMenus', item.id);
787
841
  if (!isAgent) {
@@ -865,6 +919,43 @@ export function createBridgedPluginContext({ pluginId, mode, contributionId, rea
865
919
  assertUi();
866
920
  await bridgeInvoke('host.loadRequest', { requestId });
867
921
  },
922
+ loadDocument: async (documentId) => {
923
+ assertUi();
924
+ await bridgeInvoke('host.loadDocument', { documentId });
925
+ },
926
+ openCollectionSettings: async (collectionId) => {
927
+ assertUi();
928
+ await bridgeInvoke('host.openCollectionSettings', { collectionId });
929
+ },
930
+ openCollectionRunner: async (collectionId) => {
931
+ assertUi();
932
+ await bridgeInvoke('host.openCollectionRunner', { collectionId });
933
+ },
934
+ openShareModal: async (collectionId) => {
935
+ assertUi();
936
+ await bridgeInvoke('host.openShareModal', { collectionId });
937
+ },
938
+ showEntityContextMenu: async (input) => {
939
+ assertUi();
940
+ await bridgeInvoke('host.showEntityContextMenu', input);
941
+ },
942
+ getSidebarSelection: async () => {
943
+ assertUi();
944
+ return bridgeInvoke('host.getSidebarSelection');
945
+ },
946
+ setSidebarSelection: async (selection) => {
947
+ assertUi();
948
+ await bridgeInvoke('host.setSidebarSelection', { selection });
949
+ },
950
+ onSidebarSelectionChanged: (listener) => {
951
+ assertUi();
952
+ const unsubscribe = bridgeOn('sidebar.selection.changed', listener);
953
+ return track({
954
+ dispose: () => {
955
+ unsubscribe();
956
+ }
957
+ });
958
+ },
868
959
  sendRequest: async () => {
869
960
  assertUi();
870
961
  await bridgeInvoke('host.sendRequest');
@@ -881,6 +972,152 @@ export function createBridgedPluginContext({ pluginId, mode, contributionId, rea
881
972
  assertUi();
882
973
  return bridgeInvoke('host.createCollection', { payload });
883
974
  },
975
+ updateCollection: async (input) => {
976
+ assertUi();
977
+ return bridgeInvoke('host.updateCollection', input);
978
+ },
979
+ deleteCollection: async (collectionId) => {
980
+ assertUi();
981
+ await bridgeInvoke('host.deleteCollection', { collectionId });
982
+ },
983
+ reorderCollections: async (orderedIds) => {
984
+ assertUi();
985
+ await bridgeInvoke('host.reorderCollections', { orderedIds });
986
+ },
987
+ setCollectionArchived: async (input) => {
988
+ assertUi();
989
+ await bridgeInvoke('host.setCollectionArchived', input);
990
+ },
991
+ duplicateCollection: async (collectionId) => {
992
+ assertUi();
993
+ return bridgeInvoke('host.duplicateCollection', { collectionId });
994
+ },
995
+ createFolder: async (input) => {
996
+ assertUi();
997
+ return bridgeInvoke('host.createFolder', input);
998
+ },
999
+ renameFolder: async (input) => {
1000
+ assertUi();
1001
+ return bridgeInvoke('host.renameFolder', input);
1002
+ },
1003
+ deleteFolder: async (input) => {
1004
+ assertUi();
1005
+ await bridgeInvoke('host.deleteFolder', input);
1006
+ },
1007
+ moveFolder: async (input) => {
1008
+ assertUi();
1009
+ return bridgeInvoke('host.moveFolder', input);
1010
+ },
1011
+ reorderFolders: async (input) => {
1012
+ assertUi();
1013
+ await bridgeInvoke('host.reorderFolders', input);
1014
+ },
1015
+ createRequest: async (input) => {
1016
+ assertUi();
1017
+ return bridgeInvoke('host.createRequest', input);
1018
+ },
1019
+ deleteRequest: async (requestId) => {
1020
+ assertUi();
1021
+ await bridgeInvoke('host.deleteRequest', { requestId });
1022
+ },
1023
+ duplicateRequest: async (requestId) => {
1024
+ assertUi();
1025
+ return bridgeInvoke('host.duplicateRequest', { requestId });
1026
+ },
1027
+ moveRequest: async (input) => {
1028
+ assertUi();
1029
+ await bridgeInvoke('host.moveRequest', input);
1030
+ },
1031
+ reorderRequests: async (input) => {
1032
+ assertUi();
1033
+ await bridgeInvoke('host.reorderRequests', input);
1034
+ },
1035
+ createDocument: async (input) => {
1036
+ assertUi();
1037
+ return bridgeInvoke('host.createDocument', input);
1038
+ },
1039
+ renameDocument: async (input) => {
1040
+ assertUi();
1041
+ return bridgeInvoke('host.renameDocument', input);
1042
+ },
1043
+ deleteDocument: async (input) => {
1044
+ assertUi();
1045
+ await bridgeInvoke('host.deleteDocument', input);
1046
+ },
1047
+ moveDocument: async (input) => {
1048
+ assertUi();
1049
+ await bridgeInvoke('host.moveDocument', input);
1050
+ },
1051
+ reorderDocuments: async (input) => {
1052
+ assertUi();
1053
+ await bridgeInvoke('host.reorderDocuments', input);
1054
+ },
1055
+ reorderContainerItems: async (input) => {
1056
+ assertUi();
1057
+ await bridgeInvoke('host.reorderContainerItems', input);
1058
+ },
1059
+ listCollections: async (options) => {
1060
+ assertUi();
1061
+ return bridgeInvoke('host.listCollections', { options });
1062
+ },
1063
+ listFolders: async (collectionId) => {
1064
+ assertUi();
1065
+ return bridgeInvoke('host.listFolders', { collectionId });
1066
+ },
1067
+ listRequests: async (collectionId) => {
1068
+ assertUi();
1069
+ return bridgeInvoke('host.listRequests', { collectionId });
1070
+ },
1071
+ listDocuments: async (collectionId) => {
1072
+ assertUi();
1073
+ return bridgeInvoke('host.listDocuments', { collectionId });
1074
+ },
1075
+ listLibraryTree: async (options) => {
1076
+ assertUi();
1077
+ return bridgeInvoke('host.listLibraryTree', { options });
1078
+ },
1079
+ onLibraryChanged: (listener) => {
1080
+ assertUi();
1081
+ const unsubscribe = bridgeOn('library.changed', listener);
1082
+ return track({
1083
+ dispose: () => {
1084
+ unsubscribe();
1085
+ }
1086
+ });
1087
+ },
1088
+ listWorkflows: async () => {
1089
+ assertUi();
1090
+ return bridgeInvoke('host.listWorkflows');
1091
+ },
1092
+ getWorkflow: async (workflowId) => {
1093
+ assertUi();
1094
+ return bridgeInvoke('host.getWorkflow', { workflowId });
1095
+ },
1096
+ createWorkflow: async (input) => {
1097
+ assertUi();
1098
+ return bridgeInvoke('host.createWorkflow', { input });
1099
+ },
1100
+ updateWorkflow: async (input) => {
1101
+ assertUi();
1102
+ return bridgeInvoke('host.updateWorkflow', { input });
1103
+ },
1104
+ renameWorkflow: async (workflowId, name) => {
1105
+ assertUi();
1106
+ return bridgeInvoke('host.renameWorkflow', { workflowId, name });
1107
+ },
1108
+ deleteWorkflow: async (workflowId) => {
1109
+ assertUi();
1110
+ await bridgeInvoke('host.deleteWorkflow', { workflowId });
1111
+ },
1112
+ onWorkflowsChanged: (listener) => {
1113
+ assertUi();
1114
+ const unsubscribe = bridgeOn('workflows.changed', listener);
1115
+ return track({
1116
+ dispose: () => {
1117
+ unsubscribe();
1118
+ }
1119
+ });
1120
+ },
884
1121
  listCollectionRequests: async (collectionId, folderId) => {
885
1122
  assertUi();
886
1123
  return bridgeInvoke('host.listCollectionRequests', { collectionId, folderId });
@@ -1029,7 +1266,8 @@ export function mountContributionView({
1029
1266
  'responseTabs',
1030
1267
  'collectionSettingsTabs',
1031
1268
  'modals',
1032
- 'mainViews'
1269
+ 'mainViews',
1270
+ 'sidebarPanels'
1033
1271
  ]);
1034
1272
 
1035
1273
  if (FILL_SURFACE_KINDS.has(kind) && slot === 'content') {
@@ -66,7 +66,12 @@ interface HcVariableBagApi {
66
66
  set(key: string, value: unknown): void;
67
67
 
68
68
  /**
69
- * Removes a single key from this scope for the remainder of the script run.
69
+ * Removes a single key, or every key under a namespace prefix.
70
+ *
71
+ * Pass an exact key (`'token'`) or a trailing `.*` pattern
72
+ * (`'workflow_a.*'`) to clear `workflow_a.foo`, `workflow_a.foo.bar`, etc.
73
+ * The bare namespace key (`'workflow_a'`) is not cleared by the pattern.
74
+ * Non-request scopes persist clears after send.
70
75
  */
71
76
  clear(key: string): void;
72
77
  }
@@ -189,7 +194,7 @@ interface HcCookieApi {
189
194
  }
190
195
 
191
196
  /**
192
- * Collection runner flow control available in pre/post scripts during a run.
197
+ * Collection runner and workflow flow control available in pre/post scripts.
193
198
  */
194
199
  interface HcExecutionApi {
195
200
  /**
@@ -201,6 +206,19 @@ interface HcExecutionApi {
201
206
  * Skips the HTTP send and post-request scripts for the current request.
202
207
  */
203
208
  skipRequest(): void;
209
+
210
+ /**
211
+ * Jumps to the workflow action with the given UUID after the current action finishes.
212
+ * No-op when the script is not running inside a workflow.
213
+ */
214
+ workflowNextAction(actionId: string): void;
215
+
216
+ /**
217
+ * Skips the remainder of the current workflow action and advances to the next.
218
+ * During request.send pre-scripts, also skips the HTTP send and post-request scripts.
219
+ * No-op when the script is not running inside a workflow.
220
+ */
221
+ workflowSkipAction(): void;
204
222
  }
205
223
 
206
224
  /**
@@ -215,6 +233,12 @@ interface HcInfoApi {
215
233
  readonly requestId: string;
216
234
  /** Collection run iteration index; 0 for manual sends and non-data-driven runs. */
217
235
  readonly iteration: number;
236
+ /** UUID of the workflow being played, or empty when not in a workflow. */
237
+ readonly workflowId: string;
238
+ /** UUID of the workflow action currently executing, or empty when not in a workflow. */
239
+ readonly workflowActionId: string;
240
+ /** 0-based index of the workflow action currently executing, or -1 when not in a workflow. */
241
+ readonly workflowActionIteration: number;
218
242
  }
219
243
 
220
244
  /**
@@ -317,6 +341,17 @@ interface HcResponseApi {
317
341
  document(): HcResponseDocument;
318
342
  }
319
343
 
344
+ /**
345
+ * Optional configuration for hc.ask.
346
+ */
347
+ interface HcAskOptions {
348
+ /**
349
+ * Model selection as `"name"` or `"name: source"`.
350
+ * Omit to use the first available model.
351
+ */
352
+ model?: string;
353
+ }
354
+
320
355
  /**
321
356
  * HarborClient script sandbox API exposed as the global hc object.
322
357
  */
@@ -357,6 +392,17 @@ interface HcScriptApi {
357
392
  * @throws When the setting is disabled or sendRequest is unavailable in this context.
358
393
  */
359
394
  sendRequest(req: HcSendRequestInput): Promise<HcSendRequestResponse>;
395
+ /**
396
+ * Sends a one-shot prompt to a configured AI model.
397
+ * Includes the current send's request (and response in post-request scripts)
398
+ * in the model context. Returns null when AI is not configured or the
399
+ * model selection cannot be resolved.
400
+ *
401
+ * @param prompt - Text sent to the model.
402
+ * @param options - Optional `{ model }` where model is `"name"` or `"name: source"`.
403
+ * Omit model (or options) to use the first available model.
404
+ */
405
+ ask(prompt: string, options?: HcAskOptions): Promise<string | null>;
360
406
  test(name: string, fn: () => void): void;
361
407
  /** Chai BDD expect; see https://www.chaijs.com/api/bdd/ */
362
408
  expect: HcExpectStatic;
package/dist/styles.css CHANGED
@@ -117,3 +117,19 @@ body {
117
117
  font-size: 16px;
118
118
  line-height: 1.5;
119
119
  }
120
+
121
+ /**
122
+ * Labeled Copy to chat: darken the trailing segment so it reads over code editors.
123
+ * Light theme keeps breadcrumb-current; request breadcrumbs are unaffected.
124
+ */
125
+ :root[data-theme='dark'] .hc-copy-to-chat-button .hc-breadcrumb-segment.bg-breadcrumb-current {
126
+ background-color: var(--mac-surface);
127
+ }
128
+
129
+ @media (prefers-color-scheme: dark) {
130
+ :root:not([data-theme='light'])
131
+ .hc-copy-to-chat-button
132
+ .hc-breadcrumb-segment.bg-breadcrumb-current {
133
+ background-color: var(--mac-surface);
134
+ }
135
+ }