@burdenoff/fluidgrids-fe-sdk 2026.1104.3 → 2026.1105.2

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 (69) hide show
  1. package/README.md +38 -0
  2. package/dist/ExecutionDetailPage-HQB2SWBP.js +28 -0
  3. package/dist/ExecutionsListPage-RSLL634L.js +22 -0
  4. package/dist/WorkflowBuilder-E3PNZX74.js +32 -0
  5. package/dist/WorkflowsList-473FRRP2.js +21 -0
  6. package/dist/{agentTools-SZZN6TP3.js → agentTools-5N3ZEZDW.js} +8 -7
  7. package/dist/{chunk-NIY6R42C.js → chunk-2KUZBEWW.js} +7 -5
  8. package/dist/{chunk-NTWG3CJX.js → chunk-3IXU7WUC.js} +32 -21
  9. package/dist/{chunk-AAIZ6S6E.js → chunk-3QCRKKTI.js} +70 -88
  10. package/dist/{chunk-WTV6SQYK.js → chunk-3XUWPDKJ.js} +616 -25
  11. package/dist/{chunk-XCSCD3IU.js → chunk-5CFCFA6O.js} +8 -7
  12. package/dist/{chunk-DFIX6YWP.js → chunk-62CCBMDC.js} +40 -21
  13. package/dist/{chunk-KHXRYQYP.js → chunk-64JN2TVX.js} +4 -3
  14. package/dist/{chunk-NYBL5WHP.js → chunk-6IS7EXIY.js} +3 -3
  15. package/dist/{chunk-YYVRBROH.js → chunk-6ZK4MRVA.js} +1 -1
  16. package/dist/{chunk-4YCMMBSK.js → chunk-AJVU5YW6.js} +3 -3
  17. package/dist/{chunk-NGXJHYV5.js → chunk-AMXJLVZN.js} +2 -2
  18. package/dist/{chunk-PXIFUMLA.js → chunk-AU7LACOY.js} +16 -11
  19. package/dist/{chunk-GEY7RXRZ.js → chunk-CH3YUGWR.js} +4 -4
  20. package/dist/{chunk-XNU2PLJ2.js → chunk-CNKTQ5MG.js} +189 -9
  21. package/dist/{chunk-BIB7IH26.js → chunk-EYQ7GJRW.js} +5 -5
  22. package/dist/{chunk-X6PIU7FE.js → chunk-GKFMK7FF.js} +4 -3
  23. package/dist/{chunk-NJRCAE6K.js → chunk-HK76ZUAK.js} +5 -5
  24. package/dist/{chunk-F7LQL43U.js → chunk-IL343FKX.js} +2 -2
  25. package/dist/{chunk-5D4XS3WJ.js → chunk-J3YQCEP3.js} +18 -4
  26. package/dist/{chunk-4EUEKSEQ.js → chunk-L2N6DDOI.js} +2 -2
  27. package/dist/chunk-NZAYYUQ4.js +172 -0
  28. package/dist/{chunk-ON7LK6QH.js → chunk-O7CJJNW6.js} +278 -197
  29. package/dist/{chunk-ZDCJPQ5M.js → chunk-OXXXUAWM.js} +2 -2
  30. package/dist/{chunk-D4WA2M2N.js → chunk-QFC6E3WD.js} +4 -3
  31. package/dist/{chunk-AFX3EKFN.js → chunk-QFGZXWTM.js} +16 -4
  32. package/dist/{chunk-IK7IGG6T.js → chunk-QPLFALVV.js} +9 -8
  33. package/dist/{chunk-MF7JLSJX.js → chunk-SALZ3LQB.js} +11 -2
  34. package/dist/{chunk-SS7Y66P5.js → chunk-TCIBTMJI.js} +70 -4
  35. package/dist/{chunk-OMB3WMDQ.js → chunk-TNFBRXU7.js} +11 -10
  36. package/dist/chunk-UEG2WC3G.js +502 -0
  37. package/dist/chunk-US5QSLPV.js +316 -0
  38. package/dist/{chunk-5UHAB75U.js → chunk-W5WML3OO.js} +1 -1
  39. package/dist/chunk-WZ3EJVS6.js +93 -0
  40. package/dist/{chunk-Q72EOY4T.js → chunk-X25NCWG2.js} +9 -3
  41. package/dist/{chunk-VDJFTZ2H.js → chunk-XFH6SLDK.js} +4 -93
  42. package/dist/{chunk-TBHAZK52.js → chunk-Y6M7K4UG.js} +1 -1
  43. package/dist/{chunk-AVHBWJRY.js → chunk-Z3ABLERJ.js} +3 -1
  44. package/dist/client-YVZMLEQX.js +3 -0
  45. package/dist/config-66FUPSG5.js +1 -0
  46. package/dist/executions.js +18 -15
  47. package/dist/global-client-N5EIFW6T.js +3 -0
  48. package/dist/history.js +9 -8
  49. package/dist/index.d.ts +172 -133
  50. package/dist/index.js +95 -74
  51. package/dist/{node-detail-view-GAGSLHAO.js → node-detail-view-WIWW5N6N.js} +36 -11
  52. package/dist/nodes.js +5 -3
  53. package/dist/observability.js +10 -8
  54. package/dist/{quick-config-panel-44RBX6YR.js → quick-config-panel-O64TXXK3.js} +10 -8
  55. package/dist/settings.js +11 -9
  56. package/dist/templates.js +15 -14
  57. package/dist/{workflow-builder-BMGVSwpy.d.ts → workflow-builder-7vv9dCdp.d.ts} +413 -2
  58. package/dist/workflow-builder.d.ts +2 -1
  59. package/dist/workflow-builder.js +17 -16
  60. package/dist/workflows-list.js +11 -10
  61. package/package.json +1 -1
  62. package/dist/ExecutionDetailPage-ND2VMU45.js +0 -25
  63. package/dist/ExecutionsListPage-EZ65FXER.js +0 -20
  64. package/dist/WorkflowBuilder-4I44FWII.js +0 -31
  65. package/dist/WorkflowsList-YFD2RKKQ.js +0 -20
  66. package/dist/chunk-6AMNEX2Y.js +0 -214
  67. package/dist/client-EYQDMR4O.js +0 -1
  68. package/dist/config-3DBXLCK3.js +0 -1
  69. package/dist/global-client-O2HCG5CJ.js +0 -1
@@ -1,15 +1,16 @@
1
- import { CreateWorkflowRefusalDialog, firstWorkflowProgress, GUIDED_TOUR_STATE, builderPathFor } from './chunk-TBHAZK52.js';
2
- import { useExecutions } from './chunk-5D4XS3WJ.js';
3
- import { useExportWorkflowAs, WorkflowShareDialog, downloadWorkflowExport, importAcceptAttribute, canEditWorkflow, canShareWorkflow, QuotaExhaustedDialog, importFileKind, parseWorkflowImport, CODE_EXPORT_FORMATS, ImportSourceError, assertImportByteSize, MAX_IMPORT_ARCHIVE_BYTES, readProjectArchive, checkTypeScriptImport, MAX_IMPORT_SOURCE_BYTES, typeScriptModuleFile, typeScriptImportSource, workflowNameFromFile, primaryImportModule } from './chunk-X6PIU7FE.js';
1
+ import { CreateWorkflowRefusalDialog, firstWorkflowProgress, GUIDED_TOUR_STATE, builderPathFor } from './chunk-Y6M7K4UG.js';
2
+ import { useExecutions } from './chunk-J3YQCEP3.js';
3
+ import { useExportWorkflowAs, WorkflowShareDialog, downloadWorkflowExport, importAcceptAttribute, canEditWorkflow, canShareWorkflow, QuotaExhaustedDialog, importFileKind, parseWorkflowImport, CODE_EXPORT_FORMATS, ImportSourceError, assertImportByteSize, MAX_IMPORT_ARCHIVE_BYTES, readProjectArchive, checkTypeScriptImport, MAX_IMPORT_SOURCE_BYTES, typeScriptModuleFile, typeScriptImportSource, workflowNameFromFile, primaryImportModule } from './chunk-GKFMK7FF.js';
4
4
  import { workflowsListControls } from './chunk-FNZZ5JJL.js';
5
- import { useCreateWorkflow, useWorkflowDefinitions, useLazyWorkflowDefinition, useImportWorkflow, usePreviewN8nImport, useDuplicateWorkflow, useDeleteWorkflow } from './chunk-AFX3EKFN.js';
5
+ import { useCreateWorkflow, useWorkflowDefinitions, useLazyWorkflowDefinition, useImportWorkflow, usePreviewN8nImport, useDuplicateWorkflow, useDeleteWorkflow } from './chunk-QFGZXWTM.js';
6
6
  import { useFluidGridsPageControls } from './chunk-PJAWNFJV.js';
7
7
  import { FluidGridsDocsLink } from './chunk-4VJ3MDOV.js';
8
- import { createThenOpen, FluidGridsContext, useFluidGridsFlag, FLUIDGRIDS_FLAGS, BILLING_PLANS_PATH, describeOperationError, useFlowStore, throwIfResultError, isQuotaExhaustedFailure } from './chunk-AAIZ6S6E.js';
8
+ import { createThenOpen, FluidGridsContext, useFluidGridsFlag, FLUIDGRIDS_FLAGS, BILLING_PLANS_PATH, useFlowStore, isQuotaExhaustedFailure } from './chunk-3QCRKKTI.js';
9
9
  import { useFluidGridsPermission, FLUIDGRIDS_PERMISSIONS, SdkPermissionButton, SdkPermissionGate } from './chunk-5375NUIO.js';
10
- import { WorkflowFoldersDocument, CreateWorkflowFolderDocument, RenameWorkflowFolderDocument, MoveWorkflowFolderDocument, DeleteWorkflowFolderDocument, WorkflowProjectsDocument, CreateWorkflowProjectDocument, RenameWorkflowProjectDocument, DeleteWorkflowProjectDocument, BulkMoveWorkflowsToFolderDocument, BulkAssignWorkflowsToProjectDocument, BulkDeleteWorkflowsDocument } from './chunk-AVHBWJRY.js';
10
+ import { WorkflowFoldersDocument, CreateWorkflowFolderDocument, RenameWorkflowFolderDocument, MoveWorkflowFolderDocument, DeleteWorkflowFolderDocument, WorkflowProjectsDocument, CreateWorkflowProjectDocument, RenameWorkflowProjectDocument, DeleteWorkflowProjectDocument, BulkMoveWorkflowsToFolderDocument, BulkAssignWorkflowsToProjectDocument, BulkDeleteWorkflowsDocument } from './chunk-Z3ABLERJ.js';
11
11
  import { useTr } from './chunk-UULVIT25.js';
12
- import { getFluidGridsClient } from './chunk-NTWG3CJX.js';
12
+ import { getFluidGridsClient } from './chunk-3IXU7WUC.js';
13
+ import { describeOperationError, throwIfResultError } from './chunk-US5QSLPV.js';
13
14
  import { useState, useRef, useCallback, useContext, useMemo, useEffect } from 'react';
14
15
  import { useNavigate } from 'react-router';
15
16
  import { v4 } from 'uuid';
@@ -3,26 +3,27 @@ import { templatePreview } from './chunk-B6CCE2RW.js';
3
3
  import { Input } from './chunk-IEVSFCFS.js';
4
4
  import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter as DialogFooter$1 } from './chunk-YXMFRQYV.js';
5
5
  import { Badge as Badge$1, Button } from './chunk-BQXVT32O.js';
6
- import { LogsPanel } from './chunk-YYVRBROH.js';
7
- import { computeAttachPosition, firstInputHandleId } from './chunk-5UHAB75U.js';
8
- import { QuotaExhaustedDialog, WorkflowShareDialog, useWorkflowCodeExport, orderedExportFiles, fileBaseName, downloadWorkflowCodeExport, isLosslessReport, sortFidelityItems, isLossyFidelityItem, lineOfNode } from './chunk-X6PIU7FE.js';
9
- import { emptyTestCaseDraft, EntityTagPicker, useWorkflowProposal, WorkflowProposalCard, useWorkflowTests, pinnedOutputsFromCanvas, enabledCaseIds, isTestRunOpen, MAX_TEST_CASES, draftFromTestCase, testRunSummaryText, testStatusLabel, TEST_STATUS_TONE_CLASS, testStatusTone, MAX_CASE_NAME, nextSortOrder, draftToInput } from './chunk-BIB7IH26.js';
10
- import { buildNodeDisplayMap } from './chunk-F7LQL43U.js';
6
+ import { LogsPanel } from './chunk-6ZK4MRVA.js';
7
+ import { computeAttachPosition, firstInputHandleId } from './chunk-W5WML3OO.js';
8
+ import { QuotaExhaustedDialog, WorkflowShareDialog, useWorkflowCodeExport, orderedExportFiles, fileBaseName, downloadWorkflowCodeExport, isLosslessReport, sortFidelityItems, isLossyFidelityItem, lineOfNode } from './chunk-GKFMK7FF.js';
9
+ import { emptyTestCaseDraft, EntityTagPicker, useWorkflowProposal, WorkflowProposalCard, useWorkflowTests, pinnedOutputsFromCanvas, enabledCaseIds, isTestRunOpen, MAX_TEST_CASES, draftFromTestCase, testRunSummaryText, testStatusLabel, TEST_STATUS_TONE_CLASS, testStatusTone, MAX_CASE_NAME, nextSortOrder, draftToInput } from './chunk-EYQ7GJRW.js';
10
+ import { buildNodeDisplayMap } from './chunk-IL343FKX.js';
11
11
  import { AiCreditBalanceSlot } from './chunk-Y53CVZVV.js';
12
- import { countLifecycle, VersionLifecycleBar, VersionDiffDialog } from './chunk-KHXRYQYP.js';
13
- import { useRestoreWorkflowVersion, useWorkflowVersions, useActivateWorkflow, useDeleteWorkflow, useDeactivateWorkflow } from './chunk-AFX3EKFN.js';
12
+ import { countLifecycle, VersionLifecycleBar, VersionDiffDialog } from './chunk-64JN2TVX.js';
13
+ import { useRestoreWorkflowVersion, useWorkflowVersions, useActivateWorkflow, useDeleteWorkflow, useDeactivateWorkflow } from './chunk-QFGZXWTM.js';
14
14
  import { useRequestedProposal } from './chunk-GLYINMOR.js';
15
15
  import { FluidGridsDocsLink } from './chunk-4VJ3MDOV.js';
16
- import { leaseCallQueue, RUNS_QUOTA_NAME, useFlowStore, BILLING_PLANS_PATH, emitUpgradeClicked, FluidGridsContext, throwIfResultError, emitWorkflowCreated, emitTemplateUsed, describeOperationError, ensureNodeConfigsLoaded, NODE_CONFIGS, useEditLeaseStore, useEditLeaseLocked, registerWorkflowNodeTypes, emitNodeInstalled, useNodeExecution, usePaletteGates, onNodeTypesUpdate, NODE_TYPES, getNodeMetadata, useIsValidConnection, refetchStoreNodes, AVAILABLE_NODES, EDIT_SESSION_ID, useInsertNode, NODE_TYPE_DRAG_DATA_FORMAT, NODE_OPERATION_DRAG_DATA_FORMAT, useSaveStatusStore, useManualSave, useDurableFunctionNodesEnabled, CODE_WORKFLOW_NODE_TYPE, bannerOf, editStateFor, useSaveWorkflow, STICKY_NOTE_TYPE, filterPaletteNodes, useFluidGridsAnalytics, useGuardedNavigate, sessionBeforeReload, forgetSessionForReload, releasesOnClose, touchesSavedFields, isLocked, watchLeavingLosesChanges, workflowFingerprint, savedEverythingBeforeLeaving, buildStickyNode, NODES_METADATA, NodeTypeIcon, shouldReleaseForIdle, tickAction, rememberSessionForReload, leavingLosesChanges, buildOperationSeed, useDurableParityEnabled, useConnections, ConnectionFormDialog, useWorkflowTestsEnabled, useFluidGridsFlag, FLUIDGRIDS_FLAGS, useFlowValidator, saveIndicatorOf, departingSave, inAppLeaveTarget, isNodeConfigsInitialized, phaseAfterAcquire, rememberOwnStatusChange, useRunGuard, getNodeDetail, isImageIcon, NODES, synchronizeOperationUpdate, NodePropertyPanel, loadDefinitionJson, canAutosave, isNodeTypeHiddenFromPalette, isTriggerOperation, canRenderOperationPanel, resolveOperationName, ConnectionSelector, AUTOSAVE_RETRY_DELAYS_MS, AUTOSAVE_DEBOUNCE_MS, editingLeaseLocked, autosaveAllowedFor, isFlowComplete, rememberRevision, phaseAfterTakeOver } from './chunk-AAIZ6S6E.js';
16
+ import { leaseCallQueue, RUNS_QUOTA_NAME, useFlowStore, BILLING_PLANS_PATH, emitUpgradeClicked, FluidGridsContext, emitWorkflowCreated, emitTemplateUsed, ensureNodeConfigsLoaded, NODE_CONFIGS, useEditLeaseStore, useEditLeaseLocked, registerWorkflowNodeTypes, emitNodeInstalled, useNodeExecution, usePaletteGates, onNodeTypesUpdate, NODE_TYPES, getNodeMetadata, useIsValidConnection, refetchStoreNodes, AVAILABLE_NODES, EDIT_SESSION_ID, useInsertNode, NODE_TYPE_DRAG_DATA_FORMAT, NODE_OPERATION_DRAG_DATA_FORMAT, useSaveStatusStore, useManualSave, useDurableFunctionNodesEnabled, CODE_WORKFLOW_NODE_TYPE, bannerOf, editStateFor, useSaveWorkflow, STICKY_NOTE_TYPE, filterPaletteNodes, useFluidGridsAnalytics, useGuardedNavigate, sessionBeforeReload, forgetSessionForReload, releasesOnClose, touchesSavedFields, isLocked, watchLeavingLosesChanges, workflowFingerprint, savedEverythingBeforeLeaving, buildStickyNode, NODES_METADATA, NodeTypeIcon, shouldReleaseForIdle, tickAction, rememberSessionForReload, leavingLosesChanges, buildOperationSeed, useDurableParityEnabled, useConnections, ConnectionFormDialog, useWorkflowTestsEnabled, useFluidGridsFlag, FLUIDGRIDS_FLAGS, useFlowValidator, saveIndicatorOf, departingSave, inAppLeaveTarget, isNodeConfigsInitialized, phaseAfterAcquire, rememberOwnStatusChange, useRunGuard, getNodeDetail, isImageIcon, NODES, synchronizeOperationUpdate, NodePropertyPanel, loadDefinitionJson, canAutosave, isNodeTypeHiddenFromPalette, isTriggerOperation, canRenderOperationPanel, resolveOperationName, ConnectionSelector, AUTOSAVE_RETRY_DELAYS_MS, AUTOSAVE_DEBOUNCE_MS, editingLeaseLocked, autosaveAllowedFor, isFlowComplete, rememberRevision, phaseAfterTakeOver } from './chunk-3QCRKKTI.js';
17
17
  import { SdkPermissionButton, FLUIDGRIDS_PERMISSIONS, useFluidGridsPermission, SdkPermissionGate } from './chunk-5375NUIO.js';
18
18
  import { cn } from './chunk-JL7CASN5.js';
19
19
  import { BuilderReadOnlyProvider, useBuilderReadOnly } from './chunk-OCJTTHTS.js';
20
- import { getGlobalStoreClient } from './chunk-PXIFUMLA.js';
21
- import { getFluidGridsConfig } from './chunk-6AMNEX2Y.js';
20
+ import { getGlobalStoreClient } from './chunk-AU7LACOY.js';
22
21
  import { GetMyNodeInstallationsDocument, BrowseWorkflowTemplatesDocument, InstallWorkflowNodeDocument, SubmitWorkflowTemplateDocument, MyWorkflowTemplateSubmissionsDocument, WithdrawWorkflowTemplateSubmissionDocument, InstallPurchasedNodeDocument, BrowseWorkflowNodesDocument, UninstallWorkflowNodeDocument, CreateStoreOrderDocument, GetNodeInstallableVersionsDocument, OrganizationPrivateNodesDocument, InstallOrganizationPrivateNodeDocument, UninstallOrganizationPrivateNodeDocument } from './chunk-G77IGC3Y.js';
23
- import { WorkspaceRunsQuotaDocument, WorkflowGenerationTemplatesDocument, ReleaseWorkflowEditLeaseDocument, NodeSchemaIntrospectionDocument, AcquireWorkflowEditLeaseDocument, WorkflowEnvironmentsDocument, WorkflowPromotionRequestsDocument, DeployWorkflowVersionToDevDocument, RequestWorkflowPromotionDocument, ApproveWorkflowPromotionDocument, RejectWorkflowPromotionDocument, CancelWorkflowPromotionDocument, UpdateWorkflowEnvironmentPolicyDocument, WorkflowGitRepositoryDocument, WorkflowGitPushesDocument, WorkflowGitCommitsDocument, LinkWorkflowGitRepositoryDocument, UnlinkWorkflowGitRepositoryDocument, PushWorkflowToGitDocument, WorkflowGitDiffDocument, RestoreWorkflowFromGitDocument, WorkflowAuthoringDocument, WorkflowEditLeaseDocument, WorkflowVersioningDocument, WorkflowVersionDrainageDocument, ActivateWorkflowVersionCheckedDocument, WorkflowDefinitionDocument, NodeUsageStatusDocument, RemoveNodeFromWorkflowsDocument, SetWorkflowRolloutDocument, DeleteWorkflowRolloutDocument, TakeOverWorkflowEditLeaseDocument } from './chunk-AVHBWJRY.js';
22
+ import { WorkspaceRunsQuotaDocument, WorkflowGenerationTemplatesDocument, ReleaseWorkflowEditLeaseDocument, NodeSchemaIntrospectionDocument, AcquireWorkflowEditLeaseDocument, WorkflowEnvironmentsDocument, WorkflowPromotionRequestsDocument, DeployWorkflowVersionToDevDocument, RequestWorkflowPromotionDocument, ApproveWorkflowPromotionDocument, RejectWorkflowPromotionDocument, CancelWorkflowPromotionDocument, UpdateWorkflowEnvironmentPolicyDocument, WorkflowGitRepositoryDocument, WorkflowGitPushesDocument, WorkflowGitCommitsDocument, LinkWorkflowGitRepositoryDocument, UnlinkWorkflowGitRepositoryDocument, PushWorkflowToGitDocument, WorkflowGitDiffDocument, RestoreWorkflowFromGitDocument, WorkflowAuthoringDocument, WorkflowEditLeaseDocument, WorkflowVersioningDocument, WorkflowVersionDrainageDocument, ActivateWorkflowVersionCheckedDocument, WorkflowDefinitionDocument, NodeUsageStatusDocument, RemoveNodeFromWorkflowsDocument, SetWorkflowRolloutDocument, DeleteWorkflowRolloutDocument, TakeOverWorkflowEditLeaseDocument } from './chunk-Z3ABLERJ.js';
24
23
  import { useTr } from './chunk-UULVIT25.js';
25
- import { waitForFluidGridsClient, getFluidGridsClient } from './chunk-NTWG3CJX.js';
24
+ import { waitForFluidGridsClient, getFluidGridsClient } from './chunk-3IXU7WUC.js';
25
+ import { throwIfResultError, describeOperationError, emitFluidGridsEvent } from './chunk-US5QSLPV.js';
26
+ import { getFluidGridsConfig } from './chunk-UEG2WC3G.js';
26
27
  import * as React3 from 'react';
27
28
  import React3__default, { forwardRef, lazy, memo, createContext, useState, useRef, useCallback, useEffect, useContext, useMemo, useLayoutEffect, Suspense, useDeferredValue } from 'react';
28
29
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -5529,9 +5530,9 @@ function DesktopSidebarFragment({
5529
5530
  (n) => !!n.storeProductId
5530
5531
  );
5531
5532
  if (nodesToInstall.length > 0) {
5532
- const { getGlobalStoreClient: getStore } = await import('./global-client-O2HCG5CJ.js');
5533
+ const { getGlobalStoreClient: getStore } = await import('./global-client-N5EIFW6T.js');
5533
5534
  const { InstallWorkflowNodeDocument: InstallWorkflowNodeDocument2 } = await import('./global-operations-BZDHTSYP.js');
5534
- const { getFluidGridsConfig: getFluidGridsConfig3 } = await import('./config-3DBXLCK3.js');
5535
+ const { getFluidGridsConfig: getFluidGridsConfig3 } = await import('./config-66FUPSG5.js');
5535
5536
  const storeClient = getStore();
5536
5537
  const cfg = getFluidGridsConfig3();
5537
5538
  for (let i = 0; i < nodesToInstall.length; i++) {
@@ -5591,8 +5592,8 @@ function DesktopSidebarFragment({
5591
5592
  overrides.templateInputs
5592
5593
  );
5593
5594
  }
5594
- const { getFluidGridsClient: getFluidGridsClient2 } = await import('./client-EYQDMR4O.js');
5595
- const { getFluidGridsConfig: getFluidGridsConfig2 } = await import('./config-3DBXLCK3.js');
5595
+ const { getFluidGridsClient: getFluidGridsClient2 } = await import('./client-YVZMLEQX.js');
5596
+ const { getFluidGridsConfig: getFluidGridsConfig2 } = await import('./config-66FUPSG5.js');
5596
5597
  const { gql: gql5 } = await import('@apollo/client/core');
5597
5598
  const IMPORT_MUTATION = gql5`
5598
5599
  mutation ImportWorkflowTemplate(
@@ -5649,7 +5650,7 @@ function DesktopSidebarFragment({
5649
5650
  category: content.defaultCategory || template.category
5650
5651
  });
5651
5652
  try {
5652
- const { getGlobalStoreClient: getStoreClient } = await import('./global-client-O2HCG5CJ.js');
5653
+ const { getGlobalStoreClient: getStoreClient } = await import('./global-client-N5EIFW6T.js');
5653
5654
  const { InstallWorkflowNodeDocument: InstallWorkflowNodeDocument2 } = await import('./global-operations-BZDHTSYP.js');
5654
5655
  const storeClient = getStoreClient();
5655
5656
  if (storeClient) {
@@ -5749,7 +5750,7 @@ function DesktopSidebarFragment({
5749
5750
  ),
5750
5751
  { id: "template-load" }
5751
5752
  );
5752
- const { getGlobalStoreClient: getGlobalStoreClient2 } = await import('./global-client-O2HCG5CJ.js');
5753
+ const { getGlobalStoreClient: getGlobalStoreClient2 } = await import('./global-client-N5EIFW6T.js');
5753
5754
  const { gql: gql5 } = await import('@apollo/client/core');
5754
5755
  const GET_TEMPLATE_DETAIL = gql5`
5755
5756
  query GetWorkflowTemplateDetail($id: ID!) {
@@ -6005,6 +6006,23 @@ function useDeleteKeyCode() {
6005
6006
  });
6006
6007
  return deleteKeyCode;
6007
6008
  }
6009
+ function nodeSelectionPayload(nodes) {
6010
+ if (nodes.length === 0) return { nodeId: null };
6011
+ if (nodes.length > 1) return void 0;
6012
+ const [node] = nodes;
6013
+ if (!node) return void 0;
6014
+ return { nodeId: node.id, nodeType: node.type };
6015
+ }
6016
+ function useNodeSelectedEvent() {
6017
+ const lastReported = useRef(null);
6018
+ const onChange = useCallback(({ nodes }) => {
6019
+ const payload = nodeSelectionPayload(nodes);
6020
+ if (!payload || payload.nodeId === lastReported.current) return;
6021
+ lastReported.current = payload.nodeId;
6022
+ emitFluidGridsEvent("node:selected", payload);
6023
+ }, []);
6024
+ useOnSelectionChange({ onChange });
6025
+ }
6008
6026
  function useOnNodesDelete(nodes) {
6009
6027
  const [nodePropertiesSelectedNode, nodePropertiesSetSelectedNode] = useFlowStore(
6010
6028
  useShallow((state) => [
@@ -21222,12 +21240,12 @@ function EditLeaseBanner() {
21222
21240
  );
21223
21241
  }
21224
21242
  var LazyNodeDetailView = lazy(
21225
- () => import('./node-detail-view-GAGSLHAO.js').then((m) => ({
21243
+ () => import('./node-detail-view-WIWW5N6N.js').then((m) => ({
21226
21244
  default: m.NodeDetailView
21227
21245
  }))
21228
21246
  );
21229
21247
  var LazyQuickConfigPanel = lazy(
21230
- () => import('./quick-config-panel-44RBX6YR.js').then((m) => ({
21248
+ () => import('./quick-config-panel-O64TXXK3.js').then((m) => ({
21231
21249
  default: m.QuickConfigPanel
21232
21250
  }))
21233
21251
  );
@@ -21289,7 +21307,7 @@ var FlowBuilder = ({ readOnly = false }) => {
21289
21307
  );
21290
21308
  useEffect(() => {
21291
21309
  let cancelled = false;
21292
- void import('./agentTools-SZZN6TP3.js').then(({ createBuilderAgentTools }) => {
21310
+ void import('./agentTools-5N3ZEZDW.js').then(({ createBuilderAgentTools }) => {
21293
21311
  if (cancelled) return;
21294
21312
  setAgentTools(
21295
21313
  createBuilderAgentTools({
@@ -21352,6 +21370,7 @@ var FlowBuilder = ({ readOnly = false }) => {
21352
21370
  handleAddConnectedNode
21353
21371
  } = useAddNodeOnEdgeDrop();
21354
21372
  const deleteKeyCode = useDeleteKeyCode();
21373
+ useNodeSelectedEvent();
21355
21374
  const onNodesDelete = useOnNodesDelete(nodes);
21356
21375
  const [onDragOver, onDrop] = useDragDropFlowBuilder();
21357
21376
  const isValidConnection = useIsValidConnection(nodes, edges);
@@ -1,7 +1,8 @@
1
- import { mergeStickyNotes, describeOperationError, throwIfResultError } from './chunk-AAIZ6S6E.js';
2
- import { WorkflowDefinitionDocument, WorkflowVersionDiffDocument } from './chunk-AVHBWJRY.js';
1
+ import { mergeStickyNotes } from './chunk-3QCRKKTI.js';
2
+ import { WorkflowDefinitionDocument, WorkflowVersionDiffDocument } from './chunk-Z3ABLERJ.js';
3
3
  import { useTr } from './chunk-UULVIT25.js';
4
- import { getFluidGridsClient } from './chunk-NTWG3CJX.js';
4
+ import { getFluidGridsClient } from './chunk-3IXU7WUC.js';
5
+ import { describeOperationError, throwIfResultError } from './chunk-US5QSLPV.js';
5
6
  import { memo, useState, useEffect, useMemo, useRef, useCallback } from 'react';
6
7
  import { ArrowLeftRight, Eye, RotateCcw, Loader2 } from 'lucide-react';
7
8
  import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, Button, Badge, AlertDialog, AlertDialogContent, AlertDialogHeader, AlertDialogTitle, AlertDialogDescription, AlertDialogFooter, AlertDialogCancel, AlertDialogAction, Tabs, TabsList, TabsTrigger, TabsContent } from '@burdenoff/fe-libs/ui';
@@ -1,10 +1,10 @@
1
- import { versionsOfWorkflow, VersionDiffDialog } from './chunk-KHXRYQYP.js';
1
+ import { versionsOfWorkflow, VersionDiffDialog } from './chunk-64JN2TVX.js';
2
2
  import { historyControls } from './chunk-FNZZ5JJL.js';
3
- import { useWorkflowDefinitions, useRestoreWorkflowVersion } from './chunk-AFX3EKFN.js';
3
+ import { useWorkflowDefinitions, useRestoreWorkflowVersion } from './chunk-QFGZXWTM.js';
4
4
  import { useFluidGridsPageControls } from './chunk-PJAWNFJV.js';
5
5
  import { FluidGridsDocsLink } from './chunk-4VJ3MDOV.js';
6
- import { getFluidGridsConfig } from './chunk-6AMNEX2Y.js';
7
6
  import { useTr } from './chunk-UULVIT25.js';
7
+ import { getFluidGridsConfig } from './chunk-UEG2WC3G.js';
8
8
  import { useState, useMemo, useCallback } from 'react';
9
9
  import { useNavigate } from 'react-router';
10
10
  import { Icon } from '@iconify/react';
@@ -1,4 +1,4 @@
1
- import { useFlowStore } from './chunk-AAIZ6S6E.js';
1
+ import { useFlowStore } from './chunk-3QCRKKTI.js';
2
2
  import { useTr } from './chunk-UULVIT25.js';
3
3
  import { useState, useRef, useCallback, useEffect } from 'react';
4
4
  import { cn } from '@burdenoff/fe-libs/utils';
@@ -1,8 +1,8 @@
1
- import { structuredParameterType, parseParameterValue, liveInternalOperations, resolveNodeOperation, readDisplayOptions, getNodeDetail, useFlowStore, useNodeRegistryRevision, fieldsFromIO, pathToExpression, NODE_CONFIGS, resolveUiSpec, fieldsFromValue, declaredOutputFields, subscribeWorkflowSaved } from './chunk-AAIZ6S6E.js';
1
+ import { structuredParameterType, parseParameterValue, liveInternalOperations, resolveNodeOperation, readDisplayOptions, getNodeDetail, useFlowStore, useNodeRegistryRevision, fieldsFromIO, pathToExpression, NODE_CONFIGS, resolveUiSpec, fieldsFromValue, declaredOutputFields, subscribeWorkflowSaved } from './chunk-3QCRKKTI.js';
2
2
  import { useBuilderReadOnly } from './chunk-OCJTTHTS.js';
3
- import { EventRegistrationsDocument } from './chunk-AVHBWJRY.js';
3
+ import { EventRegistrationsDocument } from './chunk-Z3ABLERJ.js';
4
4
  import { useTr } from './chunk-UULVIT25.js';
5
- import { getFluidGridsClientSafe } from './chunk-NTWG3CJX.js';
5
+ import { getFluidGridsClientSafe } from './chunk-3IXU7WUC.js';
6
6
  import { useMemo, useState, useEffect, useRef, useCallback } from 'react';
7
7
  import { Icon } from '@iconify/react';
8
8
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -1,6 +1,6 @@
1
- import { throwIfResultError, describeOperationError } from './chunk-AAIZ6S6E.js';
2
1
  import { useTr } from './chunk-UULVIT25.js';
3
- import { getFluidGridsClient } from './chunk-NTWG3CJX.js';
2
+ import { getFluidGridsClient } from './chunk-3IXU7WUC.js';
3
+ import { throwIfResultError, describeOperationError } from './chunk-US5QSLPV.js';
4
4
  import { useState, useCallback, useEffect, useMemo } from 'react';
5
5
  import { gql } from '@apollo/client';
6
6
  import { Button } from '@burdenoff/fe-libs/button';
@@ -1,3 +1,4 @@
1
+ import { createLiveTokenReader, createFluidGridsTokenRefreshLink } from './chunk-US5QSLPV.js';
1
2
  import { createHttpLink, ApolloClient, InMemoryCache } from '@apollo/client/core';
2
3
  import { setContext } from '@apollo/client/link/context';
3
4
 
@@ -15,19 +16,23 @@ function createGlobalStoreClient(config) {
15
16
  const httpLink = createHttpLink({
16
17
  uri: config.globalApiUrl
17
18
  });
18
- const authLink = setContext((_, { headers }) => ({
19
- headers: {
20
- ...headers,
21
- ...config.authToken && { authorization: `Bearer ${config.authToken}` },
22
- "x-workspace-id": config.workspaceId,
23
- ...config.tenantId && { "x-tenant-id": config.tenantId },
24
- ...config.organizationId && {
25
- "x-organization-id": config.organizationId
19
+ const readTokens = createLiveTokenReader({ authToken: config.authToken });
20
+ const authLink = setContext((_, { headers }) => {
21
+ const { authToken } = readTokens();
22
+ return {
23
+ headers: {
24
+ ...headers,
25
+ ...authToken && { authorization: `Bearer ${authToken}` },
26
+ "x-workspace-id": config.workspaceId,
27
+ ...config.tenantId && { "x-tenant-id": config.tenantId },
28
+ ...config.organizationId && {
29
+ "x-organization-id": config.organizationId
30
+ }
26
31
  }
27
- }
28
- }));
32
+ };
33
+ });
29
34
  return new ApolloClient({
30
- link: authLink.concat(httpLink),
35
+ link: createFluidGridsTokenRefreshLink().concat(authLink).concat(httpLink),
31
36
  cache: new InMemoryCache(),
32
37
  defaultOptions: {
33
38
  watchQuery: {
@@ -1,10 +1,10 @@
1
- import { useImportWorkflowTemplate, FlowBuilderPage, useWorkflowTemplates, TEMPLATE_STORE_CATEGORIES, TemplateCard, useTemplateSubmissions, usePublishToStore } from './chunk-DFIX6YWP.js';
2
- import { QuotaExhaustedDialog } from './chunk-X6PIU7FE.js';
1
+ import { useImportWorkflowTemplate, FlowBuilderPage, useWorkflowTemplates, TEMPLATE_STORE_CATEGORIES, TemplateCard, useTemplateSubmissions, usePublishToStore } from './chunk-62CCBMDC.js';
2
+ import { QuotaExhaustedDialog } from './chunk-GKFMK7FF.js';
3
3
  import { templatesControls } from './chunk-FNZZ5JJL.js';
4
- import { useWorkflowDefinitions, useDuplicateWorkflow, useLazyWorkflowDefinition } from './chunk-AFX3EKFN.js';
4
+ import { useWorkflowDefinitions, useDuplicateWorkflow, useLazyWorkflowDefinition } from './chunk-QFGZXWTM.js';
5
5
  import { useFluidGridsPageControls } from './chunk-PJAWNFJV.js';
6
6
  import { FluidGridsDocsLink } from './chunk-4VJ3MDOV.js';
7
- import { BILLING_PLANS_PATH, useFluidGridsAnalytics, emitTemplateUsed, isQuotaExhaustedFailure } from './chunk-AAIZ6S6E.js';
7
+ import { BILLING_PLANS_PATH, useFluidGridsAnalytics, emitTemplateUsed, isQuotaExhaustedFailure } from './chunk-3QCRKKTI.js';
8
8
  import { SdkPermissionButton, FLUIDGRIDS_PERMISSIONS } from './chunk-5375NUIO.js';
9
9
  import { useTr } from './chunk-UULVIT25.js';
10
10
  import { useState, useEffect, useCallback, useMemo } from 'react';
@@ -1,12 +1,14 @@
1
- import { validateDateRange, statusCountFilter, STATUS_COUNT_GROUP_BY, statusCountsOf } from './chunk-5D4XS3WJ.js';
2
- import { useAvailableTags, formatRunVersion, nodeDisplayTitle } from './chunk-F7LQL43U.js';
1
+ import { validateDateRange, statusCountFilter, STATUS_COUNT_GROUP_BY, statusCountsOf } from './chunk-J3YQCEP3.js';
2
+ import { isAgentNodeType } from './chunk-WZ3EJVS6.js';
3
+ import { useAvailableTags, formatRunVersion, nodeDisplayTitle } from './chunk-IL343FKX.js';
3
4
  import { executionsControls } from './chunk-FNZZ5JJL.js';
4
5
  import { useFluidGridsPageControls } from './chunk-PJAWNFJV.js';
5
- import { useDurableParityEnabled, throwIfResultError, describeOperationError } from './chunk-AAIZ6S6E.js';
6
- import { useExecutionsStore } from './chunk-6AMNEX2Y.js';
7
- import { SetWorkflowRunVersioningOverrideDocument, WorkflowRunsCountDocument, DurableParityRunFieldsDocument, WorkflowRunPendingDocument, WorkflowRunMetadataDocument } from './chunk-AVHBWJRY.js';
6
+ import { useDurableParityEnabled } from './chunk-3QCRKKTI.js';
7
+ import { SetWorkflowRunVersioningOverrideDocument, WorkflowRunsCountDocument, DurableParityRunFieldsDocument, WorkflowRunPendingDocument, WorkflowRunMetadataDocument } from './chunk-Z3ABLERJ.js';
8
8
  import { useTr } from './chunk-UULVIT25.js';
9
- import { getFluidGridsClient } from './chunk-NTWG3CJX.js';
9
+ import { getFluidGridsClient } from './chunk-3IXU7WUC.js';
10
+ import { throwIfResultError, describeOperationError } from './chunk-US5QSLPV.js';
11
+ import { useExecutionsStore } from './chunk-UEG2WC3G.js';
10
12
  import { Icon } from '@iconify/react';
11
13
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
12
14
  import { useMemo, useState, useCallback, useRef, useEffect } from 'react';
@@ -1821,6 +1823,168 @@ function ExecutionTimeline({
1821
1823
  ] })
1822
1824
  ] }, dateLabel)) });
1823
1825
  }
1826
+
1827
+ // src/modules/executions/utils/agent-trace.ts
1828
+ function isRecord(value) {
1829
+ return typeof value === "object" && value !== null && !Array.isArray(value);
1830
+ }
1831
+ function asRecord(value) {
1832
+ if (isRecord(value)) return value;
1833
+ if (typeof value === "string") {
1834
+ const parsed = tryParseJson(value);
1835
+ return isRecord(parsed) ? parsed : null;
1836
+ }
1837
+ return null;
1838
+ }
1839
+ function tryParseJson(text) {
1840
+ const trimmed = text.trim();
1841
+ if (!trimmed || trimmed[0] !== "{" && trimmed[0] !== "[") return void 0;
1842
+ try {
1843
+ return JSON.parse(trimmed);
1844
+ } catch {
1845
+ return void 0;
1846
+ }
1847
+ }
1848
+ function stringOrNull(value) {
1849
+ return typeof value === "string" && value.length > 0 ? value : null;
1850
+ }
1851
+ function finiteOrNull(value) {
1852
+ return typeof value === "number" && Number.isFinite(value) ? value : null;
1853
+ }
1854
+ function prettyValue(value) {
1855
+ if (value === null || value === void 0) return null;
1856
+ if (typeof value === "string") {
1857
+ if (!value.length) return null;
1858
+ const parsed = tryParseJson(value);
1859
+ return parsed === void 0 ? value : JSON.stringify(parsed, null, 2);
1860
+ }
1861
+ try {
1862
+ return JSON.stringify(value, null, 2) ?? null;
1863
+ } catch {
1864
+ return String(value);
1865
+ }
1866
+ }
1867
+ function classifyObservation(observation) {
1868
+ const record = asRecord(observation);
1869
+ if (!record) return { outcome: "ok", reason: null };
1870
+ if (record.error === "tool_call_rejected") {
1871
+ return { outcome: "rejected", reason: stringOrNull(record.reason) };
1872
+ }
1873
+ const keys = Object.keys(record);
1874
+ if (typeof record.error === "string" && record.error.length > 0 && keys.every((key) => key === "error" || key === "reason")) {
1875
+ return { outcome: "failed", reason: record.error };
1876
+ }
1877
+ return { outcome: "ok", reason: null };
1878
+ }
1879
+ function toStep(raw, index) {
1880
+ if (!isRecord(raw)) return null;
1881
+ const tool = stringOrNull(raw.tool) ?? stringOrNull(raw.toolName) ?? stringOrNull(raw.action) ?? stringOrNull(raw.name);
1882
+ if (!tool) return null;
1883
+ const observationRaw = raw.observation ?? raw.output ?? raw.result;
1884
+ const { outcome, reason } = classifyObservation(observationRaw);
1885
+ const seconds = finiteOrNull(raw.duration);
1886
+ return {
1887
+ index,
1888
+ tool,
1889
+ args: prettyValue(raw.args ?? raw.input ?? raw.actionInput ?? raw.argsJson),
1890
+ observation: prettyValue(observationRaw),
1891
+ outcome,
1892
+ reason,
1893
+ // The Python node records seconds; the worker records no duration.
1894
+ durationMs: seconds === null ? null : Math.round(seconds * 1e3)
1895
+ };
1896
+ }
1897
+ function toSteps(raw) {
1898
+ if (!Array.isArray(raw)) return [];
1899
+ const steps = [];
1900
+ for (const item of raw) {
1901
+ const step = toStep(item, steps.length);
1902
+ if (step) steps.push(step);
1903
+ }
1904
+ return steps;
1905
+ }
1906
+ function toPendingApprovals(raw) {
1907
+ if (!Array.isArray(raw)) return [];
1908
+ const pending = [];
1909
+ for (const item of raw) {
1910
+ if (!isRecord(item)) continue;
1911
+ const tool = stringOrNull(item.name) ?? stringOrNull(item.tool);
1912
+ if (!tool) continue;
1913
+ const callId = stringOrNull(item.id) ?? stringOrNull(item.callId);
1914
+ pending.push({
1915
+ key: callId ?? `pending-${pending.length}`,
1916
+ callId,
1917
+ tool,
1918
+ args: prettyValue(item.argsJson ?? item.args)
1919
+ });
1920
+ }
1921
+ return pending;
1922
+ }
1923
+ var PAYLOAD_KEYS = [
1924
+ "steps",
1925
+ "response",
1926
+ "iterationCount",
1927
+ "tokensUsed",
1928
+ "toolCalls",
1929
+ "intermediateSteps"
1930
+ ];
1931
+ function looksLikeAgentPayload(value) {
1932
+ return isRecord(value) && PAYLOAD_KEYS.some((key) => key in value);
1933
+ }
1934
+ function findAgentPayload(output) {
1935
+ if (looksLikeAgentPayload(output))
1936
+ return { operation: null, payload: output };
1937
+ for (const [key, value] of Object.entries(output)) {
1938
+ if (key.startsWith("_")) continue;
1939
+ if (looksLikeAgentPayload(value)) return { operation: key, payload: value };
1940
+ }
1941
+ return { operation: null, payload: null };
1942
+ }
1943
+ function durationOf(node) {
1944
+ const recorded = finiteOrNull(node.duration);
1945
+ if (recorded !== null) return recorded;
1946
+ if (!node.startTime || !node.endTime) return null;
1947
+ const ms = new Date(node.endTime).getTime() - new Date(node.startTime).getTime();
1948
+ return Number.isFinite(ms) && ms >= 0 ? ms : null;
1949
+ }
1950
+ function parseAgentNodeState(node) {
1951
+ const output = asRecord(node.output) ?? {};
1952
+ const { operation, payload } = findAgentPayload(output);
1953
+ const resumeState = asRecord(output._agentResumeState);
1954
+ const waitingForApproval = output._waiting === "tool_approval" || output._agentApprovalWaiting === true;
1955
+ let steps = toSteps(payload?.steps);
1956
+ if (!steps.length) steps = toSteps(resumeState?.steps);
1957
+ if (!steps.length) steps = toSteps(payload?.toolCalls);
1958
+ if (!steps.length) steps = toSteps(payload?.intermediateSteps);
1959
+ const pendingApprovals = waitingForApproval ? toPendingApprovals(
1960
+ output._pendingApprovals ?? resumeState?.pendingToolCalls
1961
+ ) : [];
1962
+ const iterationCount = finiteOrNull(payload?.iterationCount) ?? (resumeState && finiteOrNull(resumeState.iteration) !== null ? (finiteOrNull(resumeState.iteration) ?? 0) + 1 : null);
1963
+ return {
1964
+ nodeStateId: node.id,
1965
+ nodeId: node.nodeId,
1966
+ nodeType: node.nodeType,
1967
+ status: node.status,
1968
+ operation,
1969
+ response: prettyValue(payload?.response),
1970
+ error: stringOrNull(payload?.error) ?? stringOrNull(node.error),
1971
+ tokensUsed: finiteOrNull(payload?.tokensUsed) ?? finiteOrNull(resumeState?.totalTokens),
1972
+ iterationCount,
1973
+ steps,
1974
+ waitingForApproval,
1975
+ pendingApprovals,
1976
+ startTime: node.startTime ?? null,
1977
+ endTime: node.endTime ?? null,
1978
+ durationMs: durationOf(node),
1979
+ attemptCount: finiteOrNull(node.attemptCount)
1980
+ };
1981
+ }
1982
+ function hasAgentNodeState(nodeStates) {
1983
+ return !!nodeStates?.some((node) => isAgentNodeType(node.nodeType));
1984
+ }
1985
+ function agentNodeTraces(nodeStates) {
1986
+ return (nodeStates ?? []).filter((node) => isAgentNodeType(node.nodeType)).map(parseAgentNodeState);
1987
+ }
1824
1988
  function orderNodesByExecution(nodeStates, triggerNodeId) {
1825
1989
  const rankOf = (node) => {
1826
1990
  const stamp = node.startTime ?? node.endTime;
@@ -1841,7 +2005,8 @@ function NodeTimeline({
1841
2005
  loading,
1842
2006
  triggerNodeId,
1843
2007
  onRetryNode,
1844
- onViewChildRun
2008
+ onViewChildRun,
2009
+ onViewAgentTrace
1845
2010
  }) {
1846
2011
  const tr = useTr();
1847
2012
  const [expandedNodes, setExpandedNodes] = useState(/* @__PURE__ */ new Set());
@@ -2045,7 +2210,7 @@ function NodeTimeline({
2045
2210
  ] }),
2046
2211
  /* @__PURE__ */ jsx("p", { className: "text-sm text-[var(--color-status-error-text)]", children: node.error })
2047
2212
  ] }),
2048
- /* @__PURE__ */ jsxs("div", { className: "mt-3 flex justify-end gap-2", children: [
2213
+ /* @__PURE__ */ jsxs("div", { className: "mt-3 flex flex-wrap justify-end gap-2", children: [
2049
2214
  hasChildRun && onViewChildRun && /* @__PURE__ */ jsxs(
2050
2215
  "button",
2051
2216
  {
@@ -2060,6 +2225,21 @@ function NodeTimeline({
2060
2225
  ]
2061
2226
  }
2062
2227
  ),
2228
+ onViewAgentTrace && isAgentNodeType(node.nodeType) && /* @__PURE__ */ jsxs(
2229
+ "button",
2230
+ {
2231
+ type: "button",
2232
+ onClick: () => onViewAgentTrace(node.nodeId),
2233
+ className: "px-3 py-1.5 text-sm border border-border-secondary text-text-primary rounded hover:bg-background-tertiary flex items-center gap-1.5",
2234
+ children: [
2235
+ /* @__PURE__ */ jsx(Icon, { icon: "mdi:robot-outline", width: 16 }),
2236
+ tr(
2237
+ "fluidgrids.executions.nodeTimeline.viewAgentTrace",
2238
+ "View trace"
2239
+ )
2240
+ ]
2241
+ }
2242
+ ),
2063
2243
  node.status === "FAILED" && onRetryNode && /* @__PURE__ */ jsxs(
2064
2244
  "button",
2065
2245
  {
@@ -2847,4 +3027,4 @@ function useRunStatusCounts(input, enabled) {
2847
3027
  return enabled ? { ...state, error, refetch } : { total: null, counts: [], error: null, refetch };
2848
3028
  }
2849
3029
 
2850
- export { ExecutionCards, ExecutionFilters, ExecutionStats, ExecutionStatusBadge, ExecutionTable, ExecutionTimeline, NodeTimeline, Pagination, RunLogViewer, TagFilterSelect, runStatusLabels, setRunVersioningOverride, useDurableParityRunFields, useRunMetadata, useRunPending, useRunStatusCounts };
3030
+ export { ExecutionCards, ExecutionFilters, ExecutionStats, ExecutionStatusBadge, ExecutionTable, ExecutionTimeline, NodeStatusBadge, NodeTimeline, Pagination, RunLogViewer, TagFilterSelect, agentNodeTraces, hasAgentNodeState, orderNodesByExecution, runStatusLabels, setRunVersioningOverride, useDurableParityRunFields, useRunMetadata, useRunPending, useRunStatusCounts };
@@ -1,12 +1,12 @@
1
1
  import { operatorSpec, normaliseAssertRules, describeAssertRuleProblem } from './chunk-JDLQ6QIB.js';
2
- import { useEntityTags, useTagEntity, useUntagEntity } from './chunk-F7LQL43U.js';
2
+ import { useEntityTags, useTagEntity, useUntagEntity } from './chunk-IL343FKX.js';
3
3
  import { notifyFluidGridsAiCreditsUpdated } from './chunk-Y53CVZVV.js';
4
4
  import { ErrorType } from './chunk-H4ERTSMX.js';
5
- import { throwIfResultError, isForbiddenError } from './chunk-AAIZ6S6E.js';
6
- import { getFluidGridsConfig } from './chunk-6AMNEX2Y.js';
7
- import { WorkflowProposalDocument, ProposeRunFixDocument, ProposeWorkflowChangeDocument, ApplyWorkflowProposalDocument, RejectWorkflowProposalDocument, CancelWorkflowProposalDocument, WorkflowTestCasesDocument, WorkflowTestRunsDocument, WorkflowTestRunDocument, CreateWorkflowTestCaseDocument, UpdateWorkflowTestCaseDocument, DeleteWorkflowTestCaseDocument, RunWorkflowTestsDocument, CreateWorkflowTestCaseFromRunDocument } from './chunk-AVHBWJRY.js';
5
+ import { WorkflowProposalDocument, ProposeRunFixDocument, ProposeWorkflowChangeDocument, ApplyWorkflowProposalDocument, RejectWorkflowProposalDocument, CancelWorkflowProposalDocument, WorkflowTestCasesDocument, WorkflowTestRunsDocument, WorkflowTestRunDocument, CreateWorkflowTestCaseDocument, UpdateWorkflowTestCaseDocument, DeleteWorkflowTestCaseDocument, RunWorkflowTestsDocument, CreateWorkflowTestCaseFromRunDocument } from './chunk-Z3ABLERJ.js';
8
6
  import { useTr } from './chunk-UULVIT25.js';
9
- import { getFluidGridsClient } from './chunk-NTWG3CJX.js';
7
+ import { getFluidGridsClient } from './chunk-3IXU7WUC.js';
8
+ import { throwIfResultError, isForbiddenError } from './chunk-US5QSLPV.js';
9
+ import { getFluidGridsConfig } from './chunk-UEG2WC3G.js';
10
10
  import { useState, useRef, useEffect, useCallback } from 'react';
11
11
  import { TagBadge, TagsWidget } from '@burdenoff/fe-libs/tag';
12
12
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -1,7 +1,8 @@
1
- import { describeOperationError, useFluidGridsAnalytics, emitWorkflowLimitHit, emitUpgradeClicked, WORKFLOWS_QUOTA_NAME, throwIfResultError } from './chunk-AAIZ6S6E.js';
2
- import { ExportWorkflowCodeDocument, ShareWorkflowDocument, WorkflowSharingDocument } from './chunk-AVHBWJRY.js';
1
+ import { useFluidGridsAnalytics, emitWorkflowLimitHit, emitUpgradeClicked, WORKFLOWS_QUOTA_NAME } from './chunk-3QCRKKTI.js';
2
+ import { ExportWorkflowCodeDocument, ShareWorkflowDocument, WorkflowSharingDocument } from './chunk-Z3ABLERJ.js';
3
3
  import { useTr } from './chunk-UULVIT25.js';
4
- import { getFluidGridsClient } from './chunk-NTWG3CJX.js';
4
+ import { getFluidGridsClient } from './chunk-3IXU7WUC.js';
5
+ import { describeOperationError, throwIfResultError } from './chunk-US5QSLPV.js';
5
6
  import { useState, useRef, useCallback, useEffect, useMemo } from 'react';
6
7
  import { createSharePrincipalLister, ResourceShareDialog } from '@burdenoff/fe-libs/connections';
7
8
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -1,10 +1,10 @@
1
- import { useRunStatusCounts, ExecutionStats, ExecutionFilters, ExecutionTable, ExecutionCards, ExecutionTimeline, Pagination, runStatusLabels } from './chunk-XNU2PLJ2.js';
2
- import { useExecutionsWithStore, useExecutionStats, useExecutionActions, useAutoRefresh, WORKFLOW_ID_MAX_LENGTH } from './chunk-5D4XS3WJ.js';
3
- import { useWorkflowDefinitions } from './chunk-AFX3EKFN.js';
1
+ import { useRunStatusCounts, ExecutionStats, ExecutionFilters, ExecutionTable, ExecutionCards, ExecutionTimeline, Pagination, runStatusLabels } from './chunk-CNKTQ5MG.js';
2
+ import { useExecutionsWithStore, useExecutionStats, useExecutionActions, useAutoRefresh, WORKFLOW_ID_MAX_LENGTH } from './chunk-J3YQCEP3.js';
3
+ import { useWorkflowDefinitions } from './chunk-QFGZXWTM.js';
4
4
  import { FluidGridsDocsLink } from './chunk-4VJ3MDOV.js';
5
- import { useDurableParityEnabled } from './chunk-AAIZ6S6E.js';
6
- import { useExecutionsStore } from './chunk-6AMNEX2Y.js';
5
+ import { useDurableParityEnabled } from './chunk-3QCRKKTI.js';
7
6
  import { useTr } from './chunk-UULVIT25.js';
7
+ import { useExecutionsStore } from './chunk-UEG2WC3G.js';
8
8
  import { useRef, useCallback, useMemo, useState, useEffect } from 'react';
9
9
  import { useNavigate, useSearchParams } from 'react-router';
10
10
  import { Icon } from '@iconify/react';
@@ -1,5 +1,5 @@
1
- import { FluidgridsEntityTagsDocument, AvailableFluidgridsTagsDocument, SearchFluidgridsTagsDocument, TagFluidgridsEntityDocument, UntagFluidgridsEntityDocument, ReplaceFluidgridsEntityTagsDocument, CreateFluidgridsTagDocument, DataTablesTagsDocument } from './chunk-AVHBWJRY.js';
2
- import { getFluidGridsClient } from './chunk-NTWG3CJX.js';
1
+ import { FluidgridsEntityTagsDocument, AvailableFluidgridsTagsDocument, SearchFluidgridsTagsDocument, TagFluidgridsEntityDocument, UntagFluidgridsEntityDocument, ReplaceFluidgridsEntityTagsDocument, CreateFluidgridsTagDocument, DataTablesTagsDocument } from './chunk-Z3ABLERJ.js';
2
+ import { getFluidGridsClient } from './chunk-3IXU7WUC.js';
3
3
  import { useState, useCallback, useEffect } from 'react';
4
4
 
5
5
  var FLUIDGRIDS_ENTITY_TYPES = [