@harborclient/sdk 1.3.4 → 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 (52) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/components/Breadcrumb/SegmentShell.d.ts +12 -1
  3. package/dist/components/Breadcrumb/SegmentShell.d.ts.map +1 -1
  4. package/dist/components/Breadcrumb/SegmentShell.js +7 -5
  5. package/dist/components/CodeEditor/index.d.ts +7 -4
  6. package/dist/components/CodeEditor/index.d.ts.map +1 -1
  7. package/dist/components/CodeEditor/index.js +15 -176
  8. package/dist/components/CodeEditor/selectionActionToolbar.d.ts +162 -0
  9. package/dist/components/CodeEditor/selectionActionToolbar.d.ts.map +1 -0
  10. package/dist/components/CodeEditor/selectionActionToolbar.js +319 -0
  11. package/dist/components/CopyToChatButton/constants.d.ts +18 -0
  12. package/dist/components/CopyToChatButton/constants.d.ts.map +1 -0
  13. package/dist/components/CopyToChatButton/constants.js +19 -0
  14. package/dist/components/CopyToChatButton/index.d.ts +49 -0
  15. package/dist/components/CopyToChatButton/index.d.ts.map +1 -0
  16. package/dist/components/CopyToChatButton/index.js +43 -0
  17. package/dist/components/FloatingDialog/floatingDialogPosition.d.ts +52 -0
  18. package/dist/components/FloatingDialog/floatingDialogPosition.d.ts.map +1 -0
  19. package/dist/components/FloatingDialog/floatingDialogPosition.js +33 -0
  20. package/dist/components/FloatingDialog/index.d.ts +95 -0
  21. package/dist/components/FloatingDialog/index.d.ts.map +1 -0
  22. package/dist/components/FloatingDialog/index.js +275 -0
  23. package/dist/components/PageHeader/index.d.ts +2 -1
  24. package/dist/components/PageHeader/index.d.ts.map +1 -1
  25. package/dist/components/PageHeader/index.js +3 -2
  26. package/dist/components/SidebarItem/SidebarEnvironmentItem.d.ts +42 -4
  27. package/dist/components/SidebarItem/SidebarEnvironmentItem.d.ts.map +1 -1
  28. package/dist/components/SidebarItem/SidebarEnvironmentItem.js +34 -5
  29. package/dist/components/SidebarItem/SidebarWorkspaceItem.d.ts +9 -1
  30. package/dist/components/SidebarItem/SidebarWorkspaceItem.d.ts.map +1 -1
  31. package/dist/components/SidebarItem/SidebarWorkspaceItem.js +15 -2
  32. package/dist/components/TabBar/TabContextMenu.d.ts +3 -0
  33. package/dist/components/TabBar/TabContextMenu.d.ts.map +1 -1
  34. package/dist/components/TabBar/TabContextMenu.js +25 -16
  35. package/dist/components/VariableTable/index.d.ts +1 -1
  36. package/dist/components/VariableTable/index.d.ts.map +1 -1
  37. package/dist/components/VariableTable/index.js +14 -3
  38. package/dist/components/index.d.ts +4 -2
  39. package/dist/components/index.d.ts.map +1 -1
  40. package/dist/components/index.js +3 -1
  41. package/dist/runtime/createBridgedPluginContext.js +74 -0
  42. package/dist/snippets.d.ts +26 -2
  43. package/dist/styles.css +16 -0
  44. package/dist/types.d.ts +273 -1
  45. package/dist/types.d.ts.map +1 -1
  46. package/dist/ui/index.d.ts +1 -0
  47. package/dist/ui/index.d.ts.map +1 -1
  48. package/dist/ui/index.js +1 -0
  49. package/package.json +1 -1
  50. package/dist/components/SelectionActionToolbar/index.d.ts +0 -41
  51. package/dist/components/SelectionActionToolbar/index.d.ts.map +0 -1
  52. package/dist/components/SelectionActionToolbar/index.js +0 -13
@@ -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';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"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"}
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';
@@ -795,6 +795,47 @@ export function createBridgedPluginContext({ pluginId, mode, contributionId, rea
795
795
  });
796
796
  });
797
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
+ },
798
839
  registerContextMenuItem: (item) => {
799
840
  assertManifestContribution('contextMenus', item.id);
800
841
  if (!isAgent) {
@@ -1044,6 +1085,39 @@ export function createBridgedPluginContext({ pluginId, mode, contributionId, rea
1044
1085
  }
1045
1086
  });
1046
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
+ },
1047
1121
  listCollectionRequests: async (collectionId, folderId) => {
1048
1122
  assertUi();
1049
1123
  return bridgeInvoke('host.listCollectionRequests', { collectionId, folderId });
@@ -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
  /**
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
+ }
package/dist/types.d.ts CHANGED
@@ -19,6 +19,10 @@ export interface Variable {
19
19
  * Fallback value used when value is empty.
20
20
  */
21
21
  defaultValue: string;
22
+ /**
23
+ * When false, the row is ignored at resolve time so a parent/lower scope can pass through.
24
+ */
25
+ enabled: boolean;
22
26
  /**
23
27
  * When true, value is included in collection exports.
24
28
  */
@@ -622,6 +626,125 @@ export interface ScriptEditorActionContribution {
622
626
  */
623
627
  phases?: ScriptPhase[];
624
628
  }
629
+ /**
630
+ * One recorded workflow step exposed to plugin toolbar commands and action-block surfaces.
631
+ */
632
+ export interface WorkflowActionRef {
633
+ /**
634
+ * Stable identifier for this action; used when other actions refer to it.
635
+ */
636
+ uuid: string;
637
+ /**
638
+ * Stable logical event name (for example `request.load`).
639
+ */
640
+ type: string;
641
+ /**
642
+ * Wall-clock time when the action was recorded; optional in portable files.
643
+ */
644
+ at?: number;
645
+ /**
646
+ * Normalized action payload.
647
+ */
648
+ payload: unknown;
649
+ }
650
+ /**
651
+ * Context passed to a workflow toolbar action command when the user clicks the button.
652
+ */
653
+ export interface WorkflowToolbarActionContext {
654
+ /**
655
+ * Database id of the workflow open in play/edit mode.
656
+ */
657
+ workflowId: number;
658
+ /**
659
+ * 0-based index of the selected timeline action, or `-1` when none is selected.
660
+ */
661
+ actionIndex: number;
662
+ /**
663
+ * Selected timeline action, or `null` when none is selected.
664
+ */
665
+ action: WorkflowActionRef | null;
666
+ /**
667
+ * True when the playback buffer has unsaved edits.
668
+ */
669
+ dirty: boolean;
670
+ }
671
+ /**
672
+ * Adds a button to the right of Save in the workflow play/edit toolbar.
673
+ *
674
+ * Register the command handler with {@link PluginCommands.register} separately.
675
+ * The handler receives a single {@link WorkflowToolbarActionContext} argument.
676
+ * Manifest: `contributes.workflowToolbarActions` plus a matching `contributes.commands` entry.
677
+ * Requires the `ui` permission.
678
+ */
679
+ export interface WorkflowToolbarActionContribution {
680
+ /**
681
+ * Action id — must match an entry in `contributes.workflowToolbarActions`.
682
+ */
683
+ id: string;
684
+ /**
685
+ * Button label or tooltip text.
686
+ */
687
+ title: string;
688
+ /**
689
+ * Command id to run on click — must match a registered command and manifest entry.
690
+ */
691
+ command: string;
692
+ /**
693
+ * Optional icon name.
694
+ */
695
+ icon?: string;
696
+ /**
697
+ * Sort order to the right of Save. Lower values appear first.
698
+ */
699
+ order?: number;
700
+ }
701
+ /**
702
+ * Context passed to {@link WorkflowActionBlockContribution} HostedSurface components.
703
+ */
704
+ export interface WorkflowActionBlockContext {
705
+ /**
706
+ * Database id of the workflow open in play/edit mode.
707
+ */
708
+ workflowId: number;
709
+ /**
710
+ * 0-based index of this timeline action.
711
+ */
712
+ actionIndex: number;
713
+ /**
714
+ * Timeline action rendered inside this block.
715
+ */
716
+ action: WorkflowActionRef;
717
+ /**
718
+ * True when this block is the playback cursor.
719
+ */
720
+ selected: boolean;
721
+ /**
722
+ * True when the block is too narrow for rich content (host may hide the surface).
723
+ */
724
+ compact: boolean;
725
+ }
726
+ /**
727
+ * Renders a HostedSurface inside matching workflow timeline action blocks.
728
+ *
729
+ * Manifest: `contributes.workflowActionBlocks`. Requires the `ui` permission.
730
+ */
731
+ export interface WorkflowActionBlockContribution extends UiContributionBase {
732
+ /**
733
+ * Block content. Receives `{ context: WorkflowActionBlockContext }`.
734
+ * Use {@link PluginContext.react} — do not bundle React.
735
+ */
736
+ Component: React.ComponentType<{
737
+ context: WorkflowActionBlockContext;
738
+ }>;
739
+ /**
740
+ * When set, limits the surface to these action types. Omit to show on every block.
741
+ */
742
+ actionTypes?: string[];
743
+ /**
744
+ * Sort order among stacked surfaces in a block. Lower values appear first.
745
+ */
746
+ order?: number;
747
+ }
625
748
  /**
626
749
  * Sidebar row type that a context menu item applies to.
627
750
  *
@@ -1331,6 +1454,24 @@ export interface PluginUi {
1331
1454
  * @returns A {@link Disposable} that unregisters the action when disposed.
1332
1455
  */
1333
1456
  registerScriptEditorAction(action: ScriptEditorActionContribution): Disposable;
1457
+ /**
1458
+ * Adds a button to the right of Save in the workflow play/edit toolbar.
1459
+ *
1460
+ * Manifest: `contributes.workflowToolbarActions` plus a matching `contributes.commands` entry.
1461
+ *
1462
+ * @param action - Toolbar action contribution.
1463
+ * @returns A {@link Disposable} that unregisters the action when disposed.
1464
+ */
1465
+ registerWorkflowToolbarAction(action: WorkflowToolbarActionContribution): Disposable;
1466
+ /**
1467
+ * Renders a HostedSurface inside matching workflow timeline action blocks.
1468
+ *
1469
+ * Manifest: `contributes.workflowActionBlocks` — `block.id` must match an entry there.
1470
+ *
1471
+ * @param block - Action block contribution.
1472
+ * @returns A {@link Disposable} that unregisters the block when disposed.
1473
+ */
1474
+ registerWorkflowActionBlock(block: WorkflowActionBlockContribution): Disposable;
1334
1475
  /**
1335
1476
  * Adds an action to sidebar row context menus.
1336
1477
  *
@@ -1602,6 +1743,10 @@ export interface PluginVariableInput {
1602
1743
  * Fallback value used when value is empty.
1603
1744
  */
1604
1745
  defaultValue?: string;
1746
+ /**
1747
+ * When false, the row is ignored at resolve time. Defaults to true when omitted.
1748
+ */
1749
+ enabled?: boolean;
1605
1750
  /**
1606
1751
  * When true, value is included in collection exports.
1607
1752
  */
@@ -1753,6 +1898,74 @@ export interface LibraryChangedEvent {
1753
1898
  /** Collection id for per-collection reasons; omitted for `collections`. */
1754
1899
  collectionId?: number;
1755
1900
  }
1901
+ /**
1902
+ * Coarse reason for a {@link WorkflowsChangedEvent}.
1903
+ */
1904
+ export type WorkflowsChangedReason = 'created' | 'updated' | 'renamed' | 'deleted' | 'refreshed';
1905
+ /**
1906
+ * Coarse invalidation signal so plugins can refetch workflows without polling.
1907
+ */
1908
+ export interface WorkflowsChangedEvent {
1909
+ /** Which workflow mutation occurred. */
1910
+ reason: WorkflowsChangedReason;
1911
+ /** Workflow database id when the change targets one row. */
1912
+ workflowId?: number;
1913
+ }
1914
+ /**
1915
+ * Full workflow row returned by {@link PluginHost} workflow CRUD methods.
1916
+ */
1917
+ export interface HostWorkflow {
1918
+ /** Database primary key. */
1919
+ id: number;
1920
+ /** Stable portable identifier for export/import. */
1921
+ uuid: string;
1922
+ /** Display name shown in the sidebar. */
1923
+ name: string;
1924
+ /** Accumulated recording duration in milliseconds. */
1925
+ durationMs: number;
1926
+ /** Pause between consecutive actions during playback, in milliseconds. */
1927
+ delayMs: number;
1928
+ /** Workflow-scoped variables for parameterization. */
1929
+ variables: Record<string, string>;
1930
+ /** Ordered recorded actions. */
1931
+ actions: WorkflowActionRef[];
1932
+ /** Creation timestamp in milliseconds since epoch. */
1933
+ createdAt: number;
1934
+ /** Last update timestamp in milliseconds since epoch. */
1935
+ updatedAt: number;
1936
+ }
1937
+ /**
1938
+ * Payload for {@link PluginHost.createWorkflow}.
1939
+ */
1940
+ export interface CreateWorkflowPayload {
1941
+ /** Display name for the workflow. */
1942
+ name: string;
1943
+ /** Optional portable uuid; generated when omitted. */
1944
+ uuid?: string;
1945
+ /** Accumulated recording duration in milliseconds. */
1946
+ durationMs: number;
1947
+ /** Optional pause between consecutive actions during playback, in milliseconds. */
1948
+ delayMs?: number;
1949
+ /** Optional workflow variables; defaults to an empty object. */
1950
+ variables?: Record<string, string>;
1951
+ /** Ordered recorded actions to persist. */
1952
+ actions: WorkflowActionRef[];
1953
+ }
1954
+ /**
1955
+ * Payload for {@link PluginHost.updateWorkflow} — replaces actions and duration.
1956
+ *
1957
+ * Name and variables are preserved. Use {@link PluginHost.renameWorkflow} to rename.
1958
+ */
1959
+ export interface UpdateWorkflowPayload {
1960
+ /** Database primary key of the workflow to update. */
1961
+ id: number;
1962
+ /** Ordered recorded actions to persist. */
1963
+ actions: WorkflowActionRef[];
1964
+ /** Accumulated recording duration in milliseconds. */
1965
+ durationMs: number;
1966
+ /** Pause between consecutive actions during playback, in milliseconds. */
1967
+ delayMs: number;
1968
+ }
1756
1969
  /**
1757
1970
  * Serializable sidebar focus/selection for replacement panels and host sync.
1758
1971
  *
@@ -2115,7 +2328,10 @@ export interface PluginSendResult {
2115
2328
  headers: Record<string, string>;
2116
2329
  /** Response body as text. */
2117
2330
  body: string;
2118
- /** Base64-encoded body for image responses. */
2331
+ /**
2332
+ * Base64-encoded body for binary / non-textual responses (images, PDF, zip, etc.);
2333
+ * omitted for JSON, text-ish, and HTML-ish bodies.
2334
+ */
2119
2335
  bodyBase64?: string;
2120
2336
  /** Round-trip time in milliseconds. */
2121
2337
  timeMs: number;
@@ -2489,6 +2705,62 @@ export interface PluginHost {
2489
2705
  * @returns A {@link Disposable} that removes the listener when disposed.
2490
2706
  */
2491
2707
  onLibraryChanged(listener: (event: LibraryChangedEvent) => void): Disposable;
2708
+ /**
2709
+ * Lists all workflows from the local registry.
2710
+ *
2711
+ * Requires the `ui` permission.
2712
+ */
2713
+ listWorkflows(): Promise<HostWorkflow[]>;
2714
+ /**
2715
+ * Returns one workflow by database id, or `null` when missing.
2716
+ *
2717
+ * Requires the `ui` permission.
2718
+ *
2719
+ * @param workflowId - Workflow database id.
2720
+ */
2721
+ getWorkflow(workflowId: number): Promise<HostWorkflow | null>;
2722
+ /**
2723
+ * Creates a workflow in the local registry.
2724
+ *
2725
+ * Requires the `ui` permission.
2726
+ *
2727
+ * @param input - Name, actions, duration, and optional uuid/variables.
2728
+ */
2729
+ createWorkflow(input: CreateWorkflowPayload): Promise<HostWorkflow>;
2730
+ /**
2731
+ * Replaces a workflow's actions and duration while preserving name and variables.
2732
+ *
2733
+ * Requires the `ui` permission.
2734
+ *
2735
+ * @param input - Workflow id, actions, and duration.
2736
+ */
2737
+ updateWorkflow(input: UpdateWorkflowPayload): Promise<HostWorkflow>;
2738
+ /**
2739
+ * Renames a workflow while preserving actions and variables.
2740
+ *
2741
+ * Requires the `ui` permission.
2742
+ *
2743
+ * @param workflowId - Workflow database id.
2744
+ * @param name - New display name.
2745
+ */
2746
+ renameWorkflow(workflowId: number, name: string): Promise<HostWorkflow>;
2747
+ /**
2748
+ * Deletes a workflow (moves it to trash when supported).
2749
+ *
2750
+ * Requires the `ui` permission. Silent — plugins must confirm first.
2751
+ *
2752
+ * @param workflowId - Workflow database id.
2753
+ */
2754
+ deleteWorkflow(workflowId: number): Promise<void>;
2755
+ /**
2756
+ * Subscribes to coarse workflow invalidation events so plugins can refetch without polling.
2757
+ *
2758
+ * Requires the `ui` permission.
2759
+ *
2760
+ * @param listener - Called when workflows are created, updated, renamed, or deleted.
2761
+ * @returns A {@link Disposable} that removes the listener when disposed.
2762
+ */
2763
+ onWorkflowsChanged(listener: (event: WorkflowsChangedEvent) => void): Disposable;
2492
2764
  /**
2493
2765
  * Returns saved requests for a collection or folder in sidebar run order.
2494
2766
  *