@burdenoff/fluidgrids-fe-sdk 2026.718.1 → 2026.721.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/ExecutionDetailPage-6ASC7CJW.js +8 -0
  2. package/dist/{ExecutionDetailPage-R5WQJ3XX.js.map → ExecutionDetailPage-6ASC7CJW.js.map} +1 -1
  3. package/dist/ExecutionsListPage-OWOKDVXQ.js +8 -0
  4. package/dist/{ExecutionsListPage-I63SHREF.js.map → ExecutionsListPage-OWOKDVXQ.js.map} +1 -1
  5. package/dist/{WorkflowBuilder-TEBANNAC.js → WorkflowBuilder-BUBJLTBN.js} +5 -5
  6. package/dist/{WorkflowBuilder-TEBANNAC.js.map → WorkflowBuilder-BUBJLTBN.js.map} +1 -1
  7. package/dist/{blocks-7EN7SQRK.js → blocks-S63X5XLG.js} +4 -4
  8. package/dist/{blocks-7EN7SQRK.js.map → blocks-S63X5XLG.js.map} +1 -1
  9. package/dist/{chunk-OZ5RXLEP.js → chunk-4IMAQMRN.js} +277 -71
  10. package/dist/chunk-4IMAQMRN.js.map +1 -0
  11. package/dist/{chunk-H24I5TL6.js → chunk-52EJMXGS.js} +3 -3
  12. package/dist/{chunk-H24I5TL6.js.map → chunk-52EJMXGS.js.map} +1 -1
  13. package/dist/{chunk-JXH7PRTS.js → chunk-DVSO5MTE.js} +3 -3
  14. package/dist/{chunk-JXH7PRTS.js.map → chunk-DVSO5MTE.js.map} +1 -1
  15. package/dist/{chunk-6MZFOWEO.js → chunk-EQVBECAC.js} +2 -2
  16. package/dist/chunk-EQVBECAC.js.map +1 -0
  17. package/dist/{chunk-UYPB5TWQ.js → chunk-PNOA7CQV.js} +5 -2
  18. package/dist/chunk-PNOA7CQV.js.map +1 -0
  19. package/dist/{chunk-SWPT7IDI.js → chunk-X6I7YBLP.js} +247 -146
  20. package/dist/chunk-X6I7YBLP.js.map +1 -0
  21. package/dist/{global-operations-5FLHXHG3.js → global-operations-KVVOANLT.js} +3 -3
  22. package/dist/{global-operations-5FLHXHG3.js.map → global-operations-KVVOANLT.js.map} +1 -1
  23. package/dist/index.js +10 -10
  24. package/dist/index.js.map +1 -1
  25. package/package.json +1 -1
  26. package/dist/ExecutionDetailPage-R5WQJ3XX.js +0 -8
  27. package/dist/ExecutionsListPage-I63SHREF.js +0 -8
  28. package/dist/chunk-6MZFOWEO.js.map +0 -1
  29. package/dist/chunk-OZ5RXLEP.js.map +0 -1
  30. package/dist/chunk-SWPT7IDI.js.map +0 -1
  31. package/dist/chunk-UYPB5TWQ.js.map +0 -1
@@ -0,0 +1,8 @@
1
+ export { ExecutionDetailPage } from './chunk-52EJMXGS.js';
2
+ import './chunk-EQVBECAC.js';
3
+ import './chunk-UIY2HBWA.js';
4
+ import './chunk-3ZYUGTIT.js';
5
+ import './chunk-4NTHFDKQ.js';
6
+ import './chunk-5BDQNSP3.js';
7
+ //# sourceMappingURL=ExecutionDetailPage-6ASC7CJW.js.map
8
+ //# sourceMappingURL=ExecutionDetailPage-6ASC7CJW.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"ExecutionDetailPage-R5WQJ3XX.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"ExecutionDetailPage-6ASC7CJW.js"}
@@ -0,0 +1,8 @@
1
+ export { ExecutionsListPage } from './chunk-DVSO5MTE.js';
2
+ import './chunk-EQVBECAC.js';
3
+ import './chunk-OHIRHNRJ.js';
4
+ import './chunk-4NTHFDKQ.js';
5
+ import './chunk-5BDQNSP3.js';
6
+ import './chunk-WWU2O2SR.js';
7
+ //# sourceMappingURL=ExecutionsListPage-OWOKDVXQ.js.map
8
+ //# sourceMappingURL=ExecutionsListPage-OWOKDVXQ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"ExecutionsListPage-I63SHREF.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"ExecutionsListPage-OWOKDVXQ.js"}
@@ -1,9 +1,9 @@
1
- export { WorkflowBuilder } from './chunk-SWPT7IDI.js';
1
+ export { WorkflowBuilder } from './chunk-X6I7YBLP.js';
2
2
  import './chunk-MRVS73S2.js';
3
3
  import './chunk-DBOMRIP5.js';
4
- import './chunk-OZ5RXLEP.js';
4
+ import './chunk-4IMAQMRN.js';
5
5
  import './chunk-BQXHJIER.js';
6
- import './chunk-UYPB5TWQ.js';
6
+ import './chunk-PNOA7CQV.js';
7
7
  import './chunk-OHIRHNRJ.js';
8
8
  import './chunk-KU64CCSV.js';
9
9
  import './chunk-UIY2HBWA.js';
@@ -12,5 +12,5 @@ import './chunk-4NTHFDKQ.js';
12
12
  import './chunk-5BDQNSP3.js';
13
13
  import './chunk-WWU2O2SR.js';
14
14
  import './chunk-XQP33UJR.js';
15
- //# sourceMappingURL=WorkflowBuilder-TEBANNAC.js.map
16
- //# sourceMappingURL=WorkflowBuilder-TEBANNAC.js.map
15
+ //# sourceMappingURL=WorkflowBuilder-BUBJLTBN.js.map
16
+ //# sourceMappingURL=WorkflowBuilder-BUBJLTBN.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"WorkflowBuilder-TEBANNAC.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"WorkflowBuilder-BUBJLTBN.js"}
@@ -1,11 +1,11 @@
1
- export { AVAILABLE_NODES, NODES, NODES_METADATA, NODE_CONFIGS, NODE_TYPES, ensureNodeConfigsLoaded, fetchNodeManifest, isNodeConfigsInitialized, onNodeTypesUpdate, refetchStoreNodes, registerWorkflowNodeTypes } from './chunk-OZ5RXLEP.js';
1
+ export { AVAILABLE_NODES, NODES, NODES_METADATA, NODE_CONFIGS, NODE_TYPES, ensureNodeConfigsLoaded, fetchNodeManifest, isNodeConfigsInitialized, onNodeTypesUpdate, refetchStoreNodes, registerWorkflowNodeTypes } from './chunk-4IMAQMRN.js';
2
2
  import './chunk-BQXHJIER.js';
3
- import './chunk-UYPB5TWQ.js';
3
+ import './chunk-PNOA7CQV.js';
4
4
  import './chunk-KU64CCSV.js';
5
5
  import './chunk-UIY2HBWA.js';
6
6
  import './chunk-3ZYUGTIT.js';
7
7
  import './chunk-4NTHFDKQ.js';
8
8
  import './chunk-5BDQNSP3.js';
9
9
  import './chunk-WWU2O2SR.js';
10
- //# sourceMappingURL=blocks-7EN7SQRK.js.map
11
- //# sourceMappingURL=blocks-7EN7SQRK.js.map
10
+ //# sourceMappingURL=blocks-S63X5XLG.js.map
11
+ //# sourceMappingURL=blocks-S63X5XLG.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"blocks-7EN7SQRK.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"blocks-S63X5XLG.js"}
@@ -1,5 +1,5 @@
1
1
  import { getGlobalStoreClient } from './chunk-BQXHJIER.js';
2
- import { GetMyNodeInstallationsDocument } from './chunk-UYPB5TWQ.js';
2
+ import { GetMyNodeInstallationsDocument } from './chunk-PNOA7CQV.js';
3
3
  import { useFlowStore } from './chunk-KU64CCSV.js';
4
4
  import { SdkPermissionGate, FLUIDGRIDS_PERMISSIONS } from './chunk-UIY2HBWA.js';
5
5
  import { NodeEndpointConfigsDocument, NodeManifestDocument, throwIfResultError, UpdateWorkflowDefinitionDocument, CreateWorkflowDefinitionDocument, CreateWorkflowVersionDocument, TriggerWorkflowDocument, describeOperationError, WorkflowRunDocument } from './chunk-4NTHFDKQ.js';
@@ -6596,9 +6596,7 @@ var AUTHENTICATE_WITH_BASIC_AUTH = gql`
6596
6596
  }
6597
6597
  `;
6598
6598
  var AUTHENTICATE_WITH_BEARER_TOKEN = gql`
6599
- mutation AuthenticateWithBearerToken(
6600
- $input: BearerTokenAuthInput!
6601
- ) {
6599
+ mutation AuthenticateWithBearerToken($input: BearerTokenAuthInput!) {
6602
6600
  authenticateWithBearerToken(input: $input) {
6603
6601
  id
6604
6602
  name
@@ -9062,6 +9060,74 @@ function useNodeExecution() {
9062
9060
  findTriggerNode
9063
9061
  };
9064
9062
  }
9063
+ function buildOperationSeed(type, operationName, existingData) {
9064
+ const config2 = NODE_CONFIGS.find((c) => c.type === type);
9065
+ if (!config2) return null;
9066
+ const operations = config2.operations ?? [];
9067
+ const op = operations.find((o) => o.name === operationName);
9068
+ if (!op) return null;
9069
+ const manifest = config2.defaultData?.nodeData;
9070
+ const prevArgs = existingData.args ?? {};
9071
+ const manifestOps = manifest?.operations;
9072
+ const outputHandles = manifest?.outputHandles ?? manifestOps?.outputHandles;
9073
+ const inputHandles = manifest?.inputHandles ?? manifestOps?.inputHandles;
9074
+ return {
9075
+ ...existingData,
9076
+ operation_name: op.name,
9077
+ operation_type: op.type,
9078
+ args: {
9079
+ // Preserve default context/credentials; seed state from the op defaults.
9080
+ ...prevArgs,
9081
+ state: { ...op.adaptive_card?.defaultValue ?? {} }
9082
+ },
9083
+ // Slim manifest: keep node-level metadata but only the pinned operation.
9084
+ nodeData: {
9085
+ ...manifest ?? {},
9086
+ ...outputHandles !== void 0 ? { outputHandles } : {},
9087
+ ...inputHandles !== void 0 ? { inputHandles } : {},
9088
+ operations: [op]
9089
+ }
9090
+ };
9091
+ }
9092
+ function useInsertNode() {
9093
+ const { addNodes, screenToFlowPosition, getNodes, updateNode } = useReactFlow();
9094
+ return useCallback(
9095
+ (type, pos, operationName) => {
9096
+ const _pos = pos || screenToFlowPosition({
9097
+ x: window.innerWidth / 2,
9098
+ y: window.innerHeight / 2
9099
+ });
9100
+ getNodes().forEach((node) => {
9101
+ if (node.selected) {
9102
+ updateNode(node.id, { selected: false });
9103
+ }
9104
+ });
9105
+ const newNode = createNodeWithDefaultData(type, {
9106
+ position: _pos,
9107
+ selected: true
9108
+ });
9109
+ let pinTo = operationName;
9110
+ if (!pinTo) {
9111
+ const config2 = NODE_CONFIGS.find((c) => c.type === type);
9112
+ const ops = config2?.operations ?? [];
9113
+ if (ops.length === 1 && ops[0]?.name) {
9114
+ pinTo = ops[0].name;
9115
+ }
9116
+ }
9117
+ if (pinTo) {
9118
+ const seeded = buildOperationSeed(
9119
+ type,
9120
+ pinTo,
9121
+ newNode.data ?? {}
9122
+ );
9123
+ if (seeded) newNode.data = seeded;
9124
+ }
9125
+ addNodes(newNode);
9126
+ return newNode;
9127
+ },
9128
+ [screenToFlowPosition, getNodes, addNodes, updateNode]
9129
+ );
9130
+ }
9065
9131
  function isAdapterCompatible(adapterFilter, adapterType, targetNodeKind, targetAdapterOutputType, targetNodeType) {
9066
9132
  if (adapterType && targetAdapterOutputType && adapterType !== targetAdapterOutputType) {
9067
9133
  return false;
@@ -9078,72 +9144,212 @@ function isAdapterCompatible(adapterFilter, adapterType, targetNodeKind, targetA
9078
9144
  }
9079
9145
  return true;
9080
9146
  }
9081
- function AdapterConnectors({
9147
+ function useCompatibleSubNodes(adapter) {
9148
+ return useMemo(() => {
9149
+ const out = [];
9150
+ for (const cfg of NODE_CONFIGS) {
9151
+ const nodeData = cfg.defaultData?.nodeData;
9152
+ if (!nodeData?.adapterOutputType && !nodeData?.supportsAdapterMode) {
9153
+ continue;
9154
+ }
9155
+ if (!isAdapterCompatible(
9156
+ adapter.filter,
9157
+ adapter.type,
9158
+ nodeData?.kind,
9159
+ nodeData?.adapterOutputType,
9160
+ cfg.type
9161
+ )) {
9162
+ continue;
9163
+ }
9164
+ const ops = cfg.operations ?? [];
9165
+ out.push({
9166
+ type: cfg.type,
9167
+ title: cfg.detail?.title || nodeData?.name || cfg.type,
9168
+ icon: cfg.detail?.icon || nodeData?.icon || "mynaui:puzzle",
9169
+ description: cfg.detail?.description || nodeData?.description,
9170
+ adapterOperation: ops.find((o) => o.isAdapterOperation)?.name
9171
+ });
9172
+ }
9173
+ return out.sort((a, b) => a.title.localeCompare(b.title));
9174
+ }, [adapter.filter, adapter.type]);
9175
+ }
9176
+ function AdapterPort({
9082
9177
  nodeId,
9083
- adapters
9178
+ adapter,
9179
+ index,
9180
+ total
9084
9181
  }) {
9085
- const { nodeLookup, edges } = useStore(({ nodeLookup: nodeLookup2, edges: edges2 }) => ({
9086
- nodeLookup: nodeLookup2,
9087
- edges: edges2
9088
- }));
9182
+ const edges = useStore((s) => s.edges);
9089
9183
  const { getNode } = useReactFlow();
9090
- if (!adapters || adapters.length === 0) return null;
9091
- return /* @__PURE__ */ jsx("div", { className: "left-0 w-full flex justify-around mt-[6.5px]", children: adapters.map((adapter) => {
9092
- const adapterEdges = edges.filter(
9093
- (e) => e.source === nodeId && e.sourceHandle === adapter.name
9094
- );
9095
- const connectionCount = adapterEdges.length;
9096
- const isAtMaxConnections = adapter.maxConnections != null && adapter.maxConnections !== void 0 && connectionCount >= adapter.maxConnections;
9097
- const hasConnection = connectionCount > 0;
9098
- const diamondColor = hasConnection ? "bg-accent" : "bg-accent/60";
9099
- const lineColor = hasConnection ? "before:bg-accent" : "before:bg-accent/60";
9100
- return /* @__PURE__ */ jsx("div", { className: "relative", children: /* @__PURE__ */ jsxs(
9101
- "div",
9102
- {
9103
- className: `p-0.5 m-0.5 text-center before:content-[''] before:h-[95%] before:-z-10 before:left-1/2 before:-translate-x-1/2 before:w-0.5 ${lineColor} before:absolute before:top-0`,
9104
- children: [
9105
- /* @__PURE__ */ jsx("div", { className: "absolute -top-3 left-1/2 transform -translate-x-1/2", children: /* @__PURE__ */ jsx(
9184
+ const insertNode = useInsertNode();
9185
+ const onConnect = useFlowStore((s) => s.actions.edges.onConnect);
9186
+ const [pickerOpen, setPickerOpen] = useState(false);
9187
+ const candidates = useCompatibleSubNodes(adapter);
9188
+ const connectionCount = edges.filter(
9189
+ (e) => e.source === nodeId && e.sourceHandle === adapter.name
9190
+ ).length;
9191
+ const isAtMaxConnections = adapter.maxConnections != null && adapter.maxConnections !== void 0 && connectionCount >= adapter.maxConnections;
9192
+ const hasConnection = connectionCount > 0;
9193
+ const diamondColor = hasConnection ? "bg-[var(--color-accent-primary)]" : "bg-[var(--color-text-muted)]";
9194
+ const lineColor = hasConnection ? "before:bg-[var(--color-accent-primary)]" : "before:bg-[var(--color-border-strong)]";
9195
+ const addSubNode = useCallback(
9196
+ (candidate) => {
9197
+ setPickerOpen(false);
9198
+ const parent = getNode(nodeId);
9199
+ const origin = parent?.position ?? { x: 0, y: 0 };
9200
+ const parentHeight = parent?.measured?.height ?? 180;
9201
+ const SPACING = 180;
9202
+ const position = {
9203
+ x: origin.x + (index - (total - 1) / 2) * SPACING,
9204
+ y: origin.y + parentHeight + 190
9205
+ };
9206
+ const created = insertNode(
9207
+ candidate.type,
9208
+ position,
9209
+ candidate.adapterOperation
9210
+ );
9211
+ if (!created?.id) return;
9212
+ onConnect({
9213
+ source: nodeId,
9214
+ sourceHandle: adapter.name,
9215
+ target: created.id,
9216
+ targetHandle: "target"
9217
+ });
9218
+ },
9219
+ [getNode, nodeId, index, total, insertNode, onConnect, adapter.name]
9220
+ );
9221
+ return /* @__PURE__ */ jsx("div", { className: "relative", children: /* @__PURE__ */ jsxs(
9222
+ "div",
9223
+ {
9224
+ className: `p-0.5 m-0.5 text-center before:content-[''] before:h-[95%] before:left-1/2 before:-translate-x-1/2 before:w-0.5 ${lineColor} before:absolute before:top-0 before:pointer-events-none`,
9225
+ children: [
9226
+ /* @__PURE__ */ jsx("div", { className: "absolute -top-3 left-1/2 transform -translate-x-1/2 pointer-events-none", children: /* @__PURE__ */ jsx(
9227
+ "div",
9228
+ {
9229
+ className: `w-3 h-3 ${diamondColor} rotate-45 transition-transform hover:scale-110`
9230
+ }
9231
+ ) }),
9232
+ /* @__PURE__ */ jsx("div", { className: "mt-3 z-10 absolute left-1/2 transform -translate-x-1/2 font-medium bg-surface h-fit pointer-events-none", children: /* @__PURE__ */ jsxs("span", { className: "text-xs max-w-fit relative font-medium text-[var(--color-text-secondary)] whitespace-nowrap", children: [
9233
+ adapter?.name,
9234
+ adapter?.required && /* @__PURE__ */ jsx("span", { className: "text-[var(--color-status-error-text)] absolute -right-2 top-[1px]", children: "*" })
9235
+ ] }) }),
9236
+ /* @__PURE__ */ jsxs("div", { className: "mt-16 flex flex-col items-center gap-1.5", children: [
9237
+ !isAtMaxConnections && /* @__PURE__ */ jsx(
9238
+ "button",
9239
+ {
9240
+ type: "button",
9241
+ title: `Add ${adapter.name}`,
9242
+ "aria-label": `Add ${adapter.name}`,
9243
+ onClick: (e) => {
9244
+ e.stopPropagation();
9245
+ setPickerOpen((v) => !v);
9246
+ },
9247
+ className: "w-5 h-5 border-2 border-[var(--color-border-strong)] rounded text-[var(--color-text-secondary)] text-lg leading-none font-bold bg-surface flex items-center justify-center transition-colors hover:border-[var(--color-accent-primary)] hover:text-[var(--color-accent-primary)] cursor-pointer",
9248
+ children: "+"
9249
+ }
9250
+ ),
9251
+ isAtMaxConnections && /* @__PURE__ */ jsx(
9106
9252
  "div",
9107
9253
  {
9108
- className: `w-2.5 h-2.5 ${diamondColor} rotate-45 transition-transform hover:scale-110`
9254
+ title: `${adapter.name} is full`,
9255
+ className: "w-5 h-5 border-2 border-[var(--color-border-subtle)] rounded text-[var(--color-text-disabled)] text-lg leading-none font-bold bg-surface flex items-center justify-center",
9256
+ children: "\u2022"
9109
9257
  }
9110
- ) }),
9111
- /* @__PURE__ */ jsx("div", { className: "mt-3 z-10 absolute left-1/2 transform -translate-x-1/2 text-accent font-medium bg-surface h-fit", children: /* @__PURE__ */ jsxs("span", { className: "text-xs max-w-fit relative font-medium text-accent whitespace-nowrap", children: [
9112
- adapter?.name,
9113
- adapter?.required && /* @__PURE__ */ jsx("span", { className: "text-[var(--color-status-error-text)] absolute -right-2 top-[1px]", children: "*" })
9114
- ] }) }),
9115
- /* @__PURE__ */ jsxs("div", { className: "mt-16 flex justify-center", children: [
9116
- !isAtMaxConnections && /* @__PURE__ */ jsx("div", { className: "w-5 h-5 border-2 border-accent/60 rounded text-accent text-2xl font-bold bg-surface flex items-center justify-center transition-colors hover:bg-accent/10 cursor-pointer", children: "+" }),
9117
- isAtMaxConnections && /* @__PURE__ */ jsx("div", { className: "w-5 h-5 border-2 border-accent/30 rounded text-accent/30 text-2xl font-bold bg-surface flex items-center justify-center", children: "\u2022" }),
9118
- /* @__PURE__ */ jsx(
9119
- Handle,
9120
- {
9121
- type: "source",
9122
- position: Position.Bottom,
9123
- id: adapter?.name,
9124
- className: "mb-[15px] text-accent bg-accent",
9125
- isConnectable: !isAtMaxConnections,
9126
- isValidConnection: (connection) => {
9127
- if (!adapter.type && !adapter.filter) return true;
9128
- const targetNode = getNode(connection.target);
9129
- if (!targetNode) return true;
9130
- const targetData = targetNode.data;
9131
- const targetNodeData = targetData?.nodeData;
9132
- return isAdapterCompatible(
9133
- adapter.filter,
9134
- adapter.type,
9135
- targetNodeData?.kind,
9136
- targetNodeData?.adapterOutputType,
9137
- targetNode.type
9138
- );
9139
- }
9258
+ ),
9259
+ /* @__PURE__ */ jsx(
9260
+ Handle,
9261
+ {
9262
+ type: "source",
9263
+ position: Position.Bottom,
9264
+ id: adapter?.name,
9265
+ className: "!relative !top-auto !left-auto !right-auto !bottom-auto !transform-none !w-2.5 !h-2.5 !min-w-0 !min-h-0 !rounded-full !border-0 bg-[var(--color-accent-primary)]",
9266
+ isConnectable: !isAtMaxConnections,
9267
+ isValidConnection: (connection) => {
9268
+ if (!adapter.type && !adapter.filter) return true;
9269
+ const targetNode = getNode(connection.target);
9270
+ if (!targetNode) return true;
9271
+ const targetData = targetNode.data;
9272
+ const targetNodeData = targetData?.nodeData;
9273
+ return isAdapterCompatible(
9274
+ adapter.filter,
9275
+ adapter.type,
9276
+ targetNodeData?.kind,
9277
+ targetNodeData?.adapterOutputType,
9278
+ targetNode.type
9279
+ );
9140
9280
  }
9141
- )
9281
+ }
9282
+ )
9283
+ ] }),
9284
+ pickerOpen && /* @__PURE__ */ jsxs(Fragment, { children: [
9285
+ /* @__PURE__ */ jsx(
9286
+ "div",
9287
+ {
9288
+ className: "fixed inset-0 z-40",
9289
+ onClick: () => setPickerOpen(false)
9290
+ }
9291
+ ),
9292
+ /* @__PURE__ */ jsxs("div", { className: "absolute z-50 top-[86px] left-1/2 -translate-x-1/2 w-60 rounded-lg border border-[var(--color-border-default)] bg-[var(--color-surface-elevated)] shadow-xl overflow-hidden text-left nodrag nowheel", children: [
9293
+ /* @__PURE__ */ jsxs("div", { className: "px-3 py-2 border-b border-[var(--color-border-subtle)]", children: [
9294
+ /* @__PURE__ */ jsxs("p", { className: "text-xs font-semibold text-[var(--color-text-primary)]", children: [
9295
+ "Add ",
9296
+ adapter.name
9297
+ ] }),
9298
+ /* @__PURE__ */ jsxs("p", { className: "text-[10px] text-[var(--color-text-muted)]", children: [
9299
+ candidates.length,
9300
+ " compatible node",
9301
+ candidates.length === 1 ? "" : "s"
9302
+ ] })
9303
+ ] }),
9304
+ /* @__PURE__ */ jsxs("div", { className: "max-h-56 overflow-y-auto", children: [
9305
+ candidates.length === 0 && /* @__PURE__ */ jsx("p", { className: "px-3 py-3 text-[11px] text-[var(--color-text-muted)]", children: "No compatible node installed. Publish and install one from the Node Store first." }),
9306
+ candidates.map((c) => /* @__PURE__ */ jsxs(
9307
+ "button",
9308
+ {
9309
+ type: "button",
9310
+ onClick: (e) => {
9311
+ e.stopPropagation();
9312
+ addSubNode(c);
9313
+ },
9314
+ className: "w-full flex items-start gap-2 px-3 py-2 hover:bg-[var(--color-bg-elevated)] transition-colors text-left",
9315
+ children: [
9316
+ /* @__PURE__ */ jsx(
9317
+ Icon,
9318
+ {
9319
+ icon: c.icon,
9320
+ className: "size-4 mt-0.5 shrink-0 text-[var(--color-accent-primary)]"
9321
+ }
9322
+ ),
9323
+ /* @__PURE__ */ jsxs("span", { className: "min-w-0", children: [
9324
+ /* @__PURE__ */ jsx("span", { className: "block text-xs text-[var(--color-text-primary)] truncate", children: c.title }),
9325
+ c.description && /* @__PURE__ */ jsx("span", { className: "block text-[10px] text-[var(--color-text-muted)] line-clamp-2", children: c.description })
9326
+ ] })
9327
+ ]
9328
+ },
9329
+ c.type
9330
+ ))
9331
+ ] })
9142
9332
  ] })
9143
- ]
9144
- }
9145
- ) }, adapter.name);
9146
- }) });
9333
+ ] })
9334
+ ]
9335
+ }
9336
+ ) });
9337
+ }
9338
+ function AdapterConnectors({
9339
+ nodeId,
9340
+ adapters
9341
+ }) {
9342
+ if (!adapters || adapters.length === 0) return null;
9343
+ return /* @__PURE__ */ jsx("div", { className: "left-0 w-full flex justify-around mt-[6.5px]", children: adapters.map((adapter, i) => /* @__PURE__ */ jsx(
9344
+ AdapterPort,
9345
+ {
9346
+ nodeId,
9347
+ adapter,
9348
+ index: i,
9349
+ total: adapters.length
9350
+ },
9351
+ adapter.name
9352
+ )) });
9147
9353
  }
9148
9354
  function SubNodeComponent({
9149
9355
  id,
@@ -9175,26 +9381,26 @@ function SubNodeComponent({
9175
9381
  position: Position.Top,
9176
9382
  id: "target",
9177
9383
  isConnectable,
9178
- className: "size-2.5 bg-accent border-2 border-accent/60"
9384
+ className: "size-2.5 bg-[var(--color-accent-primary)] border-2 border-[var(--color-border-strong)]"
9179
9385
  }
9180
9386
  ),
9181
- /* @__PURE__ */ jsx("div", { className: "w-0.5 h-4 border-l-2 border-dashed border-accent/40" }),
9182
- /* @__PURE__ */ jsx("span", { className: "text-[10px] text-accent/70 font-medium mb-1", children: meta.title.includes("Model") ? "Model" : meta.title.includes("Memory") ? "Memory" : meta.title.includes("Tool") ? "Tool" : meta.title.includes("Parser") ? "Parser" : "Adapter" }),
9387
+ /* @__PURE__ */ jsx("div", { className: "w-0.5 h-4 border-l-2 border-dashed border-[var(--color-border-strong)]" }),
9388
+ /* @__PURE__ */ jsx("span", { className: "text-[10px] text-[var(--color-text-muted)] font-medium mb-1", children: meta.title.includes("Model") ? "Model" : meta.title.includes("Memory") ? "Memory" : meta.title.includes("Tool") ? "Tool" : meta.title.includes("Parser") ? "Parser" : "Adapter" }),
9183
9389
  /* @__PURE__ */ jsx(
9184
9390
  "div",
9185
9391
  {
9186
- className: `w-14 h-14 rounded-full bg-card border-2 border-accent/40 flex items-center justify-center shadow-lg cursor-pointer transition-all hover:border-accent/80 hover:shadow-xl ${statusRing}`,
9392
+ className: `w-14 h-14 rounded-full bg-[var(--color-surface-elevated)] border-2 border-[var(--color-border-strong)] flex items-center justify-center shadow-lg cursor-pointer transition-all hover:border-[var(--color-accent-primary)] hover:shadow-xl ${statusRing}`,
9187
9393
  onDoubleClick: handleShowNodeProperties,
9188
9394
  "data-selected": selected,
9189
9395
  children: /* @__PURE__ */ jsx(Icon, { icon: meta.icon, className: "w-7 h-7 text-accent opacity-80" })
9190
9396
  }
9191
9397
  ),
9192
- /* @__PURE__ */ jsx("span", { className: "mt-1.5 text-xs text-accent font-medium text-center max-w-24 leading-tight", children: meta.title }),
9398
+ /* @__PURE__ */ jsx("span", { className: "mt-1.5 text-xs text-[var(--color-text-secondary)] font-medium text-center max-w-24 leading-tight", children: meta.title }),
9193
9399
  /* @__PURE__ */ jsx(
9194
9400
  "button",
9195
9401
  {
9196
9402
  onClick: () => deleteNode(id),
9197
- className: "absolute -top-1 -right-1 w-4 h-4 rounded-full bg-destructive/80 text-destructive-foreground text-[10px] flex items-center justify-center opacity-0 group-hover:opacity-100 hover:bg-destructive transition-opacity",
9403
+ className: "absolute -top-1 -right-1 w-4 h-4 rounded-full bg-[var(--color-status-error)] text-white text-[10px] flex items-center justify-center opacity-0 group-hover:opacity-100 hover:bg-[var(--color-status-error)] transition-opacity",
9198
9404
  children: "\xD7"
9199
9405
  }
9200
9406
  ),
@@ -9751,6 +9957,6 @@ function registerWorkflowNodeTypes(workflowNodes) {
9751
9957
  }
9752
9958
  }
9753
9959
 
9754
- export { AVAILABLE_NODES, ConfigSchemaForm, ConnectionFormDialog, ConnectionSelector, NODES, NODES_METADATA, NODE_CONFIGS, NODE_TYPES, NodePropertyPanel, ProviderPicker, createNodeWithDefaultData, ensureNodeConfigsLoaded, fetchNodeManifest, getNodeDetail, getNodeMetadata, getProviderForm, isNodeConfigsInitialized, listCustomBlocks, onNodeTypesUpdate, refetchStoreNodes, registerCustomBlock, registerWorkflowNodeTypes, resolveUiSpec, stripSubmitActions, useConnection, useConnectionDialog, useConnections, useConnectionsByProvider, useCreateConnection, useInitiateOAuth, useNodeExecution, useProviderByKey, useProviderCatalog, useProviders, useSaveWorkflow };
9755
- //# sourceMappingURL=chunk-OZ5RXLEP.js.map
9756
- //# sourceMappingURL=chunk-OZ5RXLEP.js.map
9960
+ export { AVAILABLE_NODES, ConfigSchemaForm, ConnectionFormDialog, ConnectionSelector, NODES, NODES_METADATA, NODE_CONFIGS, NODE_TYPES, NodePropertyPanel, ProviderPicker, ensureNodeConfigsLoaded, fetchNodeManifest, getNodeDetail, getNodeMetadata, getProviderForm, isNodeConfigsInitialized, listCustomBlocks, onNodeTypesUpdate, refetchStoreNodes, registerCustomBlock, registerWorkflowNodeTypes, resolveUiSpec, stripSubmitActions, useConnection, useConnectionDialog, useConnections, useConnectionsByProvider, useCreateConnection, useInitiateOAuth, useInsertNode, useNodeExecution, useProviderByKey, useProviderCatalog, useProviders, useSaveWorkflow };
9961
+ //# sourceMappingURL=chunk-4IMAQMRN.js.map
9962
+ //# sourceMappingURL=chunk-4IMAQMRN.js.map