@burdenoff/fluidgrids-fe-sdk 2026.1111.16 → 2026.1111.18

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 (119) hide show
  1. package/README.md +41 -0
  2. package/dist/AiStudioPage-BHVEU4Wp.js +774 -0
  3. package/dist/ApprovalInboxPage-dbBDSJ-f.js +558 -0
  4. package/dist/DataSinkDashboardPage-1h2QsMzH.js +270 -0
  5. package/dist/DataTablesPage-BZy2z0LB.js +1690 -0
  6. package/dist/EntityTagPicker-BqRNsLCQ.js +135 -0
  7. package/dist/{ExecutionDetailPage-D-0_POAf.js → ExecutionDetailPage-BdcZmLT4.js} +799 -4420
  8. package/dist/ExecutionDetailPage-DvQ667OE.d.ts +10 -0
  9. package/dist/ExecutionsListPage-BCUJoAIE.js +2742 -0
  10. package/dist/{FailureTriagePanel-BHiduL7A.js → FailureTriagePanel-B9hDQymi.js} +4 -97
  11. package/dist/{FluidGridsProvider-DmvFADFa.js → FluidGridsProvider-dvZSNtSW.js} +10 -350
  12. package/dist/HistoryPage-BLoRpJ1R.d.ts +6 -0
  13. package/dist/{HistoryPage-BbUgxx1I.js → HistoryPage-U0tqupBN.js} +6 -4
  14. package/dist/HumanRequestCard-D-ooVPDn.js +439 -0
  15. package/dist/{InsightsPage-s6f5bU-8.js → InsightsPage-CALo16eB.js} +17 -328
  16. package/dist/ManagedAiPolicyAuthority-BxwJ3ptd.js +40 -0
  17. package/dist/{ManagedAiPolicyAuthority-CGux_DaV.d.ts → ManagedAiPolicyAuthority-DM3t3wNr.d.ts} +1 -5
  18. package/dist/ManagedAiPolicyAuthorityContext-CNkxIOZ1.js +10 -0
  19. package/dist/{MissingNodesInstallModal-B-9gHy2K.js → MissingNodesInstallModal-CMybsI8h.js} +3 -2
  20. package/dist/{NodesPage-ClvhUfbh.js → NodesPage-Bf5PhfBK.js} +7 -3
  21. package/dist/NodesPage-DEbnz9iU.d.ts +6 -0
  22. package/dist/{PublishCustomNodeAction-D2F7oN0S.js → PublishCustomNodeAction-5XXnSA3H.js} +3 -45
  23. package/dist/QuotaExhaustedDialog-7IFSaLyi.js +54 -0
  24. package/dist/RunnerStatusPill-Ctg4TJcP.js +187 -0
  25. package/dist/RunnersPage-CLCOCclc.js +467 -0
  26. package/dist/{ManagedAiPolicyAuthority-DsSaz-vg.js → SettingsPage-CJLZvv4J.js} +743 -773
  27. package/dist/SettingsPage-DMHQFj5-.d.ts +9 -0
  28. package/dist/TagFilterSelect-DCBOH6Ou.js +41 -0
  29. package/dist/TaskQueuesPage-9VgSnLdL.js +951 -0
  30. package/dist/TemplateCard-DsC0KNH1.js +1416 -0
  31. package/dist/{TemplateConfigurationModal-D_Mvgxqa.js → TemplateConfigurationModal-BhGWIzpm.js} +3 -2
  32. package/dist/{TemplateDetailPanel-DfFfUcOe.js → TemplateDetailPanel-D4cUVr-m.js} +3 -3
  33. package/dist/TemplatePreview-FayF6jxh.js +231 -0
  34. package/dist/TemplatesPage-BG3H-6v6.d.ts +10 -0
  35. package/dist/{TemplatesPage-Cku13bav.js → TemplatesPage-CsDNT54N.js} +11 -228
  36. package/dist/VariablesPage-67WR_lVE.js +949 -0
  37. package/dist/{VersionDiffDialog-Dq2xlPFI.js → VersionDiffDialog-DSN0mU0f.js} +2 -1
  38. package/dist/WorkflowBuilder-CPnXEL5J.js +555 -0
  39. package/dist/{WorkflowSearchRedirect-CaoOOpEl.js → WorkflowBuilder-YXRysvZc.js} +19 -585
  40. package/dist/{WorkflowProposalCard-8Vr56kQa.js → WorkflowProposalCard-qrEeNyYG.js} +4 -405
  41. package/dist/WorkflowSearchRedirect-DwDNZ_q5.js +36 -0
  42. package/dist/WorkflowShareDialog-mbIwRQUY.js +168 -0
  43. package/dist/WorkflowsList-CcNDQge5.d.ts +6 -0
  44. package/dist/{WorkflowsList-B2j1Pehb.js → WorkflowsList-DiiGyZkT.js} +12 -6
  45. package/dist/agent-form-Bfvm32j1.js +83 -0
  46. package/dist/{agentTools-DJ5o2ekg.js → agentTools-8s_25Q_F.js} +3 -2
  47. package/dist/{ai-usage-D5p7ZeRR.js → ai-usage-glCwHyQz.js} +1 -1
  48. package/dist/api-BrCHB5oA.js +224 -0
  49. package/dist/api-C8e0iV-Q.js +55 -0
  50. package/dist/button-DG7y_FVJ.js +48 -0
  51. package/dist/{canvasNoteTools-D3zUdEeg.js → canvasNoteTools-B6pYARgU.js} +2 -2
  52. package/dist/client-C9XSzSXr.js +1147 -0
  53. package/dist/code-editor-field-9-GdVE_8.js +111 -0
  54. package/dist/{codec-client-DstqyzTN.js → codec-client-CJ95Rmqo.js} +1 -1
  55. package/dist/constants-B2lhWNoN.js +202 -0
  56. package/dist/constants-XdvUxeWK.d.ts +162 -0
  57. package/dist/dialog-Cjb4lB4D.js +105 -0
  58. package/dist/executions.d.ts +1 -1
  59. package/dist/executions.js +2 -1
  60. package/dist/feature-flags-DM5myWaD.js +296 -0
  61. package/dist/flags.d.ts +3 -0
  62. package/dist/flags.js +4 -0
  63. package/dist/{flow-builder-DEzT8TQu.js → flow-builder-CZDKRc6f.js} +662 -10716
  64. package/dist/{node-endpoint-configs-DHFGA5MQ.js → graphql-operation-types-kX-MMjgW.js} +1 -1194
  65. package/dist/{graphql-types-XcDLtFwU.js → graphql-types-CDKVWH2R.js} +2 -202
  66. package/dist/history.d.ts +1 -1
  67. package/dist/history.js +1 -1
  68. package/dist/{index-DRf25-D3.d.ts → index-6JR2vD9J.d.ts} +33 -215
  69. package/dist/index-72XFgvbn.d.ts +132 -0
  70. package/dist/index-BcdtKBM-.d.ts +56 -0
  71. package/dist/{index-B3BWqafN.d.ts → index-DjiFgEQl.d.ts} +5 -131
  72. package/dist/index.d.ts +13 -9
  73. package/dist/index.js +52 -5300
  74. package/dist/{node-detail-view-LNqeIqN-.js → node-detail-view-CV4ZRwqh.js} +13 -8
  75. package/dist/node-editor-tab-body-DU-dh35X.js +174 -0
  76. package/dist/node-endpoint-configs-B5bjNMDW.js +37 -0
  77. package/dist/node-registry-refresh-Dy0uRg9f.js +84 -0
  78. package/dist/nodes.d.ts +1 -1
  79. package/dist/nodes.js +1 -1
  80. package/dist/observability.d.ts +1 -1
  81. package/dist/observability.js +2 -1
  82. package/dist/popover-BJHvrFGR.js +472 -0
  83. package/dist/{quick-config-panel-D3ogsaFL.js → quick-config-panel-ws3pLvbt.js} +3 -2
  84. package/dist/rolldown-runtime-hDbaFkMy.js +18 -0
  85. package/dist/run-display-BycKYSU0.js +46 -0
  86. package/dist/run-list-links-ByYC0OlV.js +98 -0
  87. package/dist/schedule-panel-C0mfGQSD.js +7542 -0
  88. package/dist/settings.d.ts +2 -1
  89. package/dist/settings.js +2 -1
  90. package/dist/shared-CMfn30xT.js +196 -0
  91. package/dist/sidebar-node-editor-CR1PiZO-.js +177 -0
  92. package/dist/templates.d.ts +1 -1
  93. package/dist/templates.js +2 -1
  94. package/dist/theme-provider-B3mIuz2d.js +11 -0
  95. package/dist/{useAgentDefinitions-NFtLytDR.js → useAgentDefinitions-B0dam3_o.js} +3 -397
  96. package/dist/useConnections-Cs7LCWEM.js +401 -0
  97. package/dist/useDurableParity-CzUQMFJ3.js +415 -0
  98. package/dist/useEntityTags-DhnsZcTl.js +236 -0
  99. package/dist/{useExecutions-DAzeWHS6.js → useExecutions-9aLuOt1c.js} +4 -3
  100. package/dist/{useObservability-COCZ0hUS.js → useObservability-CfEw3ZFD.js} +2 -2
  101. package/dist/{useRunHistory-CsYUbouO.js → useRunHistory-B1xJDwl1.js} +4 -3
  102. package/dist/{WorkflowShareDialog-6RRDe-_v.js → useWorkflowCodeExport-Bu2QYJzA.js} +7 -210
  103. package/dist/{useWorkflows-w4Dx2fF2.js → useWorkflows-BlVVu8NM.js} +3 -2
  104. package/dist/utils-uaL5UVxb.js +65 -0
  105. package/dist/workflow-builder.d.ts +1 -1
  106. package/dist/workflow-builder.js +4 -2
  107. package/dist/workflow-host.d.ts +6 -0
  108. package/dist/workflow-host.js +9 -0
  109. package/dist/workflow-pages.d.ts +55 -0
  110. package/dist/workflow-pages.js +113 -0
  111. package/dist/workflows-list.d.ts +1 -1
  112. package/dist/workflows-list.js +1 -1
  113. package/package.json +13 -1
  114. package/dist/ExecutionDetailPage-MvsnOnE1.d.ts +0 -4
  115. package/dist/HistoryPage-BqUizaFv.d.ts +0 -3
  116. package/dist/NodesPage-C97-9K2Y.d.ts +0 -3
  117. package/dist/TemplatesPage-D0qnXzHh.d.ts +0 -4
  118. package/dist/WorkflowsList-0d5GSKdh.d.ts +0 -3
  119. package/dist/agent-form-BvMWhQ42.js +0 -496
@@ -1,14 +1,19 @@
1
1
  "use client";
2
2
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
3
3
  import { H as useFlowStore, a as changedSourceFiles, c as diagnosticsByPath, d as isEditableSourcePath, f as projectLanguage, h as sourceLanguageOf, l as interfaceFields, o as childRunIdOf, p as readCodeWorkflowState, r as CODE_WORKFLOW_NODE_TYPE, s as defaultSourcePath, u as interfaceHandlers } from "./node-operation-selection--oy-yEq_.js";
4
- import { G as nodeSubtitle, K as nodeTitle, Kn as getNodeDetail, Nn as useDurableFunctionNodesEnabled, Rn as usePhaseCFlags, X as useNodeConfig, _n as clearCodeWorkflowDefinitionCache, ct as latestNodeLog, dt as useGuardedNavigate, ot as FieldTree, rn as useNodeExecution, un as fieldsFromValue, xn as declaredSignals, yn as useCodeWorkflowInterface } from "./FluidGridsProvider-DmvFADFa.js";
5
- import { Q as NDV_Z_INDEX, U as NodeSettingsPanel, V as NodeExecutionActions, X as NodeParamsForm, _ as JsonView, at as ReadOnlyFieldset, ct as SchedulePanel, nt as CodeEditorField, st as SCHEDULE_NODE_TYPE, ut as TabButton, v as TableView } from "./flow-builder-DEzT8TQu.js";
6
- import { Bi as describeOperationError, Er as WorkflowCodeSourceDocument, Mr as WorkflowEditLeaseStatusDocument, Nt as NodeStatesDocument, Oi as getFluidGridsClient, Ui as throwIfResultError, gt as FileDownloadUrlDocument, ki as getFluidGridsClientSafe, m as BuildWorkflowCodeDocument } from "./node-endpoint-configs-DHFGA5MQ.js";
7
- import { $t as useWorkflowPinnedDataQuery, Lt as useUnpinNodeDataMutation, pt as usePinNodeDataMutation } from "./useAgentDefinitions-NFtLytDR.js";
8
- import { hI as FLUIDGRIDS_PERMISSIONS, xI as useFluidGridsPermission } from "./graphql-types-XcDLtFwU.js";
9
- import { M as fetchCodeBundleSdk, s as isAgentNodeType } from "./agent-form-BvMWhQ42.js";
10
- import { n as SignalRunDialog, s as RunHistoryView, t as useRunHistory } from "./useRunHistory-CsYUbouO.js";
11
- import { n as agentTracePath } from "./ai-usage-D5p7ZeRR.js";
4
+ import { G as nodeSubtitle, K as nodeTitle, Mn as getNodeDetail, X as useNodeConfig, _n as clearCodeWorkflowDefinitionCache, ct as latestNodeLog, dt as useGuardedNavigate, ot as FieldTree, rn as useNodeExecution, un as fieldsFromValue, xn as declaredSignals, yn as useCodeWorkflowInterface } from "./FluidGridsProvider-dvZSNtSW.js";
5
+ import { a as TabButton, c as NDV_Z_INDEX, i as ReadOnlyFieldset, n as SchedulePanel, o as NodeSettingsPanel, r as NodeExecutionActions, s as NodeParamsForm, t as SCHEDULE_NODE_TYPE } from "./schedule-panel-C0mfGQSD.js";
6
+ import { _ as throwIfResultError, m as describeOperationError, n as getFluidGridsClient, r as getFluidGridsClientSafe } from "./client-C9XSzSXr.js";
7
+ import { Mt as NodeStatesDocument, Tr as WorkflowCodeSourceDocument, ht as FileDownloadUrlDocument, jr as WorkflowEditLeaseStatusDocument, p as BuildWorkflowCodeDocument } from "./graphql-operation-types-kX-MMjgW.js";
8
+ import { v as JsonView, y as TableView } from "./flow-builder-CZDKRc6f.js";
9
+ import { jt as useUnpinNodeDataMutation, qt as useWorkflowPinnedDataQuery, st as usePinNodeDataMutation } from "./useAgentDefinitions-B0dam3_o.js";
10
+ import { f as usePhaseCFlags, s as useDurableFunctionNodesEnabled } from "./feature-flags-DM5myWaD.js";
11
+ import { s as useFluidGridsPermission, t as FLUIDGRIDS_PERMISSIONS } from "./constants-B2lhWNoN.js";
12
+ import { t as CodeEditorField } from "./code-editor-field-9-GdVE_8.js";
13
+ import { h as fetchCodeBundleSdk } from "./api-BrCHB5oA.js";
14
+ import { n as SignalRunDialog, s as RunHistoryView, t as useRunHistory } from "./useRunHistory-B1xJDwl1.js";
15
+ import { s as isAgentNodeType } from "./agent-form-Bfvm32j1.js";
16
+ import { n as agentTracePath } from "./ai-usage-glCwHyQz.js";
12
17
  import * as React$1 from "react";
13
18
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
14
19
  import { useNavigate } from "react-router";
@@ -0,0 +1,174 @@
1
+ "use client";
2
+ import { H as useFlowStore } from "./node-operation-selection--oy-yEq_.js";
3
+ import { K as nodeTitle, ot as FieldTree } from "./FluidGridsProvider-dvZSNtSW.js";
4
+ import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
5
+ import { f as usePhaseCFlags } from "./feature-flags-DM5myWaD.js";
6
+ import { s as useFluidGridsPermission, t as FLUIDGRIDS_PERMISSIONS } from "./constants-B2lhWNoN.js";
7
+ import { a as TabButton, i as ReadOnlyFieldset, n as SchedulePanel, o as NodeSettingsPanel, s as NodeParamsForm, t as SCHEDULE_NODE_TYPE } from "./schedule-panel-C0mfGQSD.js";
8
+ import { useState } from "react";
9
+ import { Icon } from "@iconify/react";
10
+ import { cn } from "@burdenoff/fe-libs/utils";
11
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
12
+
13
+ // src/builder/components/ndv/node-input-fields.tsx
14
+ /**
15
+ * The input-data mapper body: pick the upstream node, then drag its declared
16
+ * output fields onto a parameter. Shared by the quick panel's flyout and the
17
+ * sidebar node editor so the two can't drift (BOFF-11325).
18
+ */
19
+ function NodeInputFields({ config, testIdPrefix }) {
20
+ const tr = useTr();
21
+ const { nodes, sourceIds, selectedSource, setSelectedSource, inputFields } = config;
22
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
23
+ /* @__PURE__ */ jsxs("div", {
24
+ className: "flex shrink-0 items-center gap-2 border-b border-border px-3 py-2",
25
+ children: [
26
+ /* @__PURE__ */ jsx(Icon, {
27
+ icon: "mdi:tray-arrow-down",
28
+ className: "size-3.5 text-muted-foreground"
29
+ }),
30
+ /* @__PURE__ */ jsx("span", {
31
+ className: "text-[11px] font-semibold uppercase tracking-[0.12em] text-muted-foreground",
32
+ children: tr("fluidgrids.builder.quickConfigPanel.inputHeading", "Input")
33
+ }),
34
+ sourceIds.length > 0 && /* @__PURE__ */ jsx("select", {
35
+ className: "ml-auto max-w-[55%] truncate rounded-md border border-border-default bg-bg-surface px-1.5 py-0.5 text-[11px] text-text-primary scheme-normal dark:scheme-dark outline-none focus:border-action-primary-border [&_option]:bg-bg-surface [&_option]:text-text-primary",
36
+ value: selectedSource ?? "",
37
+ onChange: (e) => setSelectedSource(e.target.value),
38
+ "aria-label": tr("fluidgrids.builder.quickConfigPanel.inputHeading", "Input"),
39
+ "data-testid": `${testIdPrefix}-source-selector`,
40
+ children: sourceIds.map((sid) => {
41
+ const sn = nodes.find((n) => n.id === sid);
42
+ return /* @__PURE__ */ jsx("option", {
43
+ value: sid,
44
+ children: nodeTitle(sn)
45
+ }, sid);
46
+ })
47
+ })
48
+ ]
49
+ }),
50
+ /* @__PURE__ */ jsx("div", {
51
+ className: "min-h-0 flex-1 overflow-auto px-2 py-2",
52
+ children: inputFields.length > 0 ? /* @__PURE__ */ jsx(FieldTree, {
53
+ fields: inputFields,
54
+ draggable: true
55
+ }) : /* @__PURE__ */ jsx("p", {
56
+ className: "px-2 py-4 text-center text-xs text-muted-foreground",
57
+ children: sourceIds.length === 0 ? tr("fluidgrids.builder.quickConfigPanel.noUpstreamNode", "Connect an upstream node to map its fields.") : tr("fluidgrids.builder.quickConfigPanel.noOutputFields", "The selected source has no declared output fields.")
58
+ })
59
+ }),
60
+ /* @__PURE__ */ jsx("p", {
61
+ className: "shrink-0 border-t border-border px-3 py-1.5 text-[10px] leading-snug text-muted-foreground",
62
+ children: tr("fluidgrids.builder.quickConfigPanel.dragFieldHint", "Drag a field onto a parameter to map it.")
63
+ })
64
+ ] });
65
+ }
66
+
67
+ // src/builder/components/ndv/node-editor-tabs.tsx
68
+ /**
69
+ * The Parameters / Schedule / Settings row of the compact node editors (quick
70
+ * panel, sidebar), matching the NDV's tabs (BOFF-11325). Tab state comes from
71
+ * `useNodeEditorTab` in node-editor-tab-state.ts.
72
+ */
73
+ function NodeEditorTabs({ active, onChange, hasSchedule, testIdPrefix, className }) {
74
+ const tr = useTr();
75
+ return /* @__PURE__ */ jsxs("div", {
76
+ className: cn("flex shrink-0 items-center gap-4 border-b border-border px-3", className),
77
+ children: [
78
+ /* @__PURE__ */ jsx(TabButton, {
79
+ active: active === "parameters",
80
+ onClick: () => onChange("parameters"),
81
+ testId: `${testIdPrefix}-tab-parameters`,
82
+ children: tr("fluidgrids.builder.nodeDetailView.tabParameters", "Parameters")
83
+ }),
84
+ hasSchedule && /* @__PURE__ */ jsx(TabButton, {
85
+ active: active === "schedule",
86
+ onClick: () => onChange("schedule"),
87
+ testId: `${testIdPrefix}-tab-schedule`,
88
+ children: tr("fluidgrids.builder.nodeDetailView.tabSchedule", "Schedule")
89
+ }),
90
+ /* @__PURE__ */ jsx(TabButton, {
91
+ active: active === "settings",
92
+ onClick: () => onChange("settings"),
93
+ testId: `${testIdPrefix}-tab-settings`,
94
+ children: tr("fluidgrids.builder.nodeDetailView.tabSettings", "Settings")
95
+ })
96
+ ]
97
+ });
98
+ }
99
+
100
+ // src/builder/components/ndv/node-editor-tab-state.ts
101
+ /**
102
+ * The tab to show: Schedule only exists for a Schedule Trigger while the
103
+ * schedule-policies flag is on, so a stale "schedule" falls back to
104
+ * Parameters (for example after the flag turns off).
105
+ */
106
+ function activeNodeEditorTab(tab, hasSchedule) {
107
+ return tab === "schedule" && !hasSchedule ? "parameters" : tab;
108
+ }
109
+ /** True when a node of this type gets the Schedule tab (BOFF-9906). */
110
+ function nodeHasScheduleTab(nodeType, schedulePolicies) {
111
+ return schedulePolicies && nodeType === "internal:schedule";
112
+ }
113
+ /** Tab state for a compact node editor. Call before any early return. */
114
+ function useNodeEditorTab(nodeType) {
115
+ const { schedulePolicies } = usePhaseCFlags();
116
+ const hasSchedule = nodeHasScheduleTab(nodeType, schedulePolicies);
117
+ const [tab, setTab] = useState("parameters");
118
+ return {
119
+ tab: activeNodeEditorTab(tab, hasSchedule),
120
+ setTab,
121
+ hasSchedule
122
+ };
123
+ }
124
+
125
+ // src/builder/components/ndv/node-editor-tab-body.tsx
126
+ /**
127
+ * The selected tab's content in a compact node editor (quick panel, sidebar):
128
+ * the shared parameter form, the node settings, or a Schedule Trigger's
129
+ * schedule, exactly as the NDV renders them (BOFF-11325).
130
+ */
131
+ function NodeEditorTabBody({ tab, config, nodeId, testIdPrefix }) {
132
+ if (tab === "schedule") return /* @__PURE__ */ jsx(NodeEditorSchedule, {
133
+ config,
134
+ nodeId,
135
+ testIdPrefix
136
+ });
137
+ if (tab === "settings") return /* @__PURE__ */ jsx("div", {
138
+ className: "p-3",
139
+ "data-testid": `${testIdPrefix}-settings`,
140
+ children: /* @__PURE__ */ jsx(ReadOnlyFieldset, { children: /* @__PURE__ */ jsx(NodeSettingsPanel, { config }) })
141
+ });
142
+ return /* @__PURE__ */ jsx("div", {
143
+ className: "space-y-4 p-3",
144
+ "data-testid": `${testIdPrefix}-params`,
145
+ children: /* @__PURE__ */ jsx(ReadOnlyFieldset, {
146
+ className: "space-y-4",
147
+ children: /* @__PURE__ */ jsx(NodeParamsForm, {
148
+ config,
149
+ nodeType: config.node?.type,
150
+ testIdPrefix
151
+ })
152
+ })
153
+ });
154
+ }
155
+ /** A Schedule Trigger's Schedule tab, with the NDV's permission gates. */
156
+ function NodeEditorSchedule({ config, nodeId, testIdPrefix }) {
157
+ const workflowKey = useFlowStore((s) => s.workflow.workflowKey);
158
+ const workflowDbId = useFlowStore((s) => s.workflow.dbId);
159
+ const { allowed: canExecute } = useFluidGridsPermission(FLUIDGRIDS_PERMISSIONS.WORKFLOW_RUN_EXECUTE);
160
+ const { allowed: canUpdate } = useFluidGridsPermission(FLUIDGRIDS_PERMISSIONS.WORKFLOW_UPDATE);
161
+ return /* @__PURE__ */ jsx("div", {
162
+ "data-testid": `${testIdPrefix}-schedule`,
163
+ children: /* @__PURE__ */ jsx(SchedulePanel, {
164
+ state: config.argsState,
165
+ writeField: config.writeFixed,
166
+ workflowKey: workflowDbId && workflowKey ? workflowKey : null,
167
+ triggerNodeId: nodeId,
168
+ canExecute,
169
+ canUpdate
170
+ })
171
+ });
172
+ }
173
+
174
+ export { NodeInputFields as i, useNodeEditorTab as n, NodeEditorTabs as r, NodeEditorTabBody as t };
@@ -0,0 +1,37 @@
1
+ "use client";
2
+ import { Dt as NodeEndpointConfigsDocument } from "./graphql-operation-types-kX-MMjgW.js";
3
+
4
+ // src/utils/node-endpoint-configs.ts
5
+ const NODE_CONFIG_PAGE_SIZE = 500;
6
+ /** Stops a server that keeps answering `hasMore: true` from looping forever. */
7
+ const NODE_CONFIG_MAX_PAGES = 20;
8
+ /**
9
+ * `query` is any `nodeEndpointConfigs` document with the same variables: the builder
10
+ * palette uses a listing without the operations JSON (BOFF-10387).
11
+ */
12
+ async function fetchAllNodeEndpointConfigs(client, filters = {}, fetchPolicy = "network-only", query = NodeEndpointConfigsDocument) {
13
+ const byId = /* @__PURE__ */ new Map();
14
+ let offset = 0;
15
+ for (let page = 0; page < 20; page++) {
16
+ const { data } = await client.query({
17
+ query,
18
+ variables: {
19
+ ...filters,
20
+ pagination: {
21
+ limit: 500,
22
+ offset
23
+ }
24
+ },
25
+ fetchPolicy
26
+ });
27
+ const result = data?.nodeEndpointConfigs;
28
+ const configs = result?.configs ?? [];
29
+ for (const config of configs) if (config?.id && !byId.has(config.id)) byId.set(config.id, config);
30
+ if (!result?.pagination?.hasMore || configs.length === 0) return [...byId.values()];
31
+ offset += configs.length;
32
+ }
33
+ console.warn(`[Workflows] Stopped loading node configs after ${20} pages; the catalog may be incomplete.`);
34
+ return [...byId.values()];
35
+ }
36
+
37
+ export { fetchAllNodeEndpointConfigs as t };
@@ -0,0 +1,84 @@
1
+ "use client";
2
+ import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
3
+ import { c as createFluidGridsTokenRefreshLink, v as createLiveTokenReader } from "./client-C9XSzSXr.js";
4
+ import { ApolloClient, InMemoryCache, createHttpLink } from "@apollo/client/core";
5
+ import { setContext } from "@apollo/client/link/context";
6
+
7
+ // src/graphql/global-client.ts
8
+ var global_client_exports = /* @__PURE__ */ __exportAll({ getGlobalStoreClient: () => getGlobalStoreClient });
9
+ let globalClientInstance = null;
10
+ /**
11
+ * Set the global Apollo client singleton
12
+ */
13
+ function setGlobalStoreClient(client) {
14
+ globalClientInstance = client;
15
+ }
16
+ /**
17
+ * Get the current global Apollo client
18
+ */
19
+ function getGlobalStoreClient() {
20
+ return globalClientInstance;
21
+ }
22
+ /**
23
+ * Reset/clear the global Apollo client
24
+ */
25
+ function resetGlobalStoreClient() {
26
+ globalClientInstance = null;
27
+ }
28
+ /**
29
+ * Create a new Apollo client for Global Gateway (Store operations)
30
+ *
31
+ * The auth token is read per request and follows a token refreshed through
32
+ * `auth.onTokenExpired`; expired-token responses are refreshed and retried
33
+ * once (see `createFluidGridsTokenRefreshLink`).
34
+ * @param config - Configuration including globalApiUrl, auth, and context IDs
35
+ */
36
+ function createGlobalStoreClient(config) {
37
+ const httpLink = createHttpLink({ uri: config.globalApiUrl });
38
+ const readTokens = createLiveTokenReader({ authToken: config.authToken });
39
+ const authLink = setContext((_, { headers }) => {
40
+ const { authToken } = readTokens();
41
+ return { headers: {
42
+ ...headers,
43
+ ...authToken && { authorization: `Bearer ${authToken}` },
44
+ "x-workspace-id": config.workspaceId,
45
+ ...config.tenantId && { "x-tenant-id": config.tenantId },
46
+ ...config.organizationId && { "x-organization-id": config.organizationId }
47
+ } };
48
+ });
49
+ return new ApolloClient({
50
+ link: createFluidGridsTokenRefreshLink().concat(authLink).concat(httpLink),
51
+ cache: new InMemoryCache(),
52
+ defaultOptions: {
53
+ watchQuery: { fetchPolicy: "cache-and-network" },
54
+ query: { fetchPolicy: "network-only" }
55
+ }
56
+ });
57
+ }
58
+
59
+ // src/builder/node-registry-refresh.ts
60
+ /**
61
+ * Refreshing the builder's node registry without loading it (BOFF-11826).
62
+ *
63
+ * A host calls `refreshNodeRegistry()` when it sets the workspace's clients, so
64
+ * a registry that is already loaded reloads for the new workspace. The registry
65
+ * itself (`blocks/index.ts`) is part of the builder's code. Importing it for
66
+ * this call put the builder's registry, its node components and every GraphQL
67
+ * document into each workflow page's first load. While the registry module has
68
+ * not loaded there is nothing loaded to refresh, so this module only holds the
69
+ * refresh the registry hands it when it loads.
70
+ */
71
+ let refresh = null;
72
+ /** Called once by the registry module when it loads. */
73
+ function provideNodeRegistryRefresh(fn) {
74
+ refresh = fn;
75
+ }
76
+ /**
77
+ * Reloads the node registry if it has loaded; otherwise there is nothing to
78
+ * refresh and it resolves at once. The builder loads the registry on demand.
79
+ */
80
+ function refreshNodeRegistry() {
81
+ return refresh ? refresh() : Promise.resolve();
82
+ }
83
+
84
+ export { global_client_exports as a, getGlobalStoreClient as i, refreshNodeRegistry as n, resetGlobalStoreClient as o, createGlobalStoreClient as r, setGlobalStoreClient as s, provideNodeRegistryRefresh as t };
package/dist/nodes.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
 
2
- import { t as NodesPage } from "./NodesPage-C97-9K2Y.js";
2
+ import { t as NodesPage } from "./NodesPage-DEbnz9iU.js";
3
3
  export { NodesPage };
package/dist/nodes.js CHANGED
@@ -1,4 +1,4 @@
1
1
  "use client";
2
- import { t as NodesPage } from "./NodesPage-ClvhUfbh.js";
2
+ import { t as NodesPage } from "./NodesPage-Bf5PhfBK.js";
3
3
 
4
4
  export { NodesPage };
@@ -1,3 +1,3 @@
1
1
 
2
- import { Co as FailedRun, Do as LogStreamProvider, Eo as LogStreamEventType, Oo as NodeUsageStat, So as DataSinkSummary, To as LogStreamDestinationInput, bo as DashboardSummary, ija as DataSinkDashboardPage, nja as ErrorAnalyticsPage, rja as InsightsPage, wo as LogStreamDestination, xo as DataSinkData } from "./index-DRf25-D3.js";
2
+ import { Aa as DataSinkData, Fa as LogStreamEventType, Ia as LogStreamProvider, La as NodeUsageStat, Ma as FailedRun, Na as LogStreamDestination, Pa as LogStreamDestinationInput, ja as DataSinkSummary, ka as DashboardSummary, oAa as ErrorAnalyticsPage, sAa as InsightsPage, uAa as DataSinkDashboardPage } from "./index-6JR2vD9J.js";
3
3
  export { type DashboardSummary, DataSinkDashboardPage, type DataSinkData, type DataSinkSummary, ErrorAnalyticsPage, type FailedRun, InsightsPage, type LogStreamDestination, type LogStreamDestinationInput, type LogStreamEventType, type LogStreamProvider, type NodeUsageStat };
@@ -1,4 +1,5 @@
1
1
  "use client";
2
- import { n as InsightsPage, r as DataSinkDashboardPage, t as ErrorAnalyticsPage } from "./InsightsPage-s6f5bU-8.js";
2
+ import { t as DataSinkDashboardPage } from "./DataSinkDashboardPage-1h2QsMzH.js";
3
+ import { n as InsightsPage, t as ErrorAnalyticsPage } from "./InsightsPage-CALo16eB.js";
3
4
 
4
5
  export { DataSinkDashboardPage, ErrorAnalyticsPage, InsightsPage };