@burdenoff/fluidgrids-fe-sdk 2026.1113.9 → 2026.1113.10

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 (51) hide show
  1. package/dist/{AiStudioPage-D9vovsZE.js → AiStudioPage-VxCnlq_r.js} +4 -4
  2. package/dist/{DataSinkDashboardPage-CXb1uNau.js → DataSinkDashboardPage-CDwbkGHh.js} +1 -1
  3. package/dist/{ExecutionDetailPage-BuU66VvK.js → ExecutionDetailPage-HtS19b0X.js} +100 -40
  4. package/dist/{ExecutionsListPage-DMAOPJCa.js → ExecutionsListPage-CJqBT2xe.js} +4 -4
  5. package/dist/{FluidGridsProvider-BOBuK7kj.js → FluidGridsProvider-BXQTsUUW.js} +55 -6
  6. package/dist/{HistoryPage-DUcPEycb.js → HistoryPage-Bjl0YbNG.js} +1 -1
  7. package/dist/{InsightsPage-C3FjaLKN.js → InsightsPage-B9DQ1yA8.js} +1 -1
  8. package/dist/{PaidTemplateConfirm-Dop_rxCQ.js → PaidTemplateConfirm-CIDph--N.js} +1 -1
  9. package/dist/{QuotaExhaustedDialog-CijT1MyD.js → QuotaExhaustedDialog-CRd7SYXz.js} +1 -1
  10. package/dist/{SettingsPage-C4G9OlJV.js → SettingsPage-S8_SgU9s.js} +4 -4
  11. package/dist/{TemplateCard-7rE1VAIC.js → TemplateCard-BqWjHUzk.js} +2 -2
  12. package/dist/{TemplatePreview-CSA9W-e1.js → TemplatePreview-BZVn6L-8.js} +4 -4
  13. package/dist/{TemplatesPage-C_trA48U.js → TemplatesPage-9_44jYuL.js} +6 -6
  14. package/dist/{WorkflowBuilder-DZWmp9Vg.js → WorkflowBuilder-DVtVPQkq.js} +6 -6
  15. package/dist/{WorkflowBuilder-CkoZDS1_.js → WorkflowBuilder-moMdJ83j.js} +4 -4
  16. package/dist/{WorkflowSearchRedirect-DQj9_HqI.js → WorkflowSearchRedirect-Ddv1GDOl.js} +1 -1
  17. package/dist/{WorkflowsList-BOTt7lX5.js → WorkflowsList-DqNyX65P.js} +6 -6
  18. package/dist/{agentTools-CSoCNDRx.js → agentTools-C6PPmcJz.js} +3 -3
  19. package/dist/{askAboutBridge-kpcjcR9Y.js → askAboutBridge-ByYsQams.js} +36 -2
  20. package/dist/assistant.d.ts +2 -0
  21. package/dist/assistant.js +1 -1
  22. package/dist/{attach-node-helpers-CtV1mej0.js → attach-node-helpers-CCWFS75V.js} +1 -1
  23. package/dist/{canvasNoteTools-DTc3EKvg.js → canvasNoteTools-CJzCcA-A.js} +2 -2
  24. package/dist/executions.js +2 -2
  25. package/dist/{flow-builder-CYlYHdhf.js → flow-builder-DSKuzsVe.js} +15 -15
  26. package/dist/history.js +1 -1
  27. package/dist/index.js +28 -28
  28. package/dist/{logs-panel-Cn4gGng9.js → logs-panel-_Dl5Nrdn.js} +1 -1
  29. package/dist/{node-detail-view-N6n3qegt.js → node-detail-view-BCG3MA47.js} +6 -6
  30. package/dist/{node-editor-tab-body-CivWI2hg.js → node-editor-tab-body-D1mGxSFV.js} +3 -3
  31. package/dist/{node-operation-selection-BGj5YwAS.js → node-operation-selection-bFx9s45-.js} +16 -4
  32. package/dist/observability.js +2 -2
  33. package/dist/{popover-a8WKNgPP.js → popover-CDOlW_mU.js} +2 -2
  34. package/dist/{quick-config-panel-DABEVJR9.js → quick-config-panel-Ds3_l-3-.js} +4 -4
  35. package/dist/{schedule-panel--u7WXnaC.js → schedule-panel-DExtrJhg.js} +5 -5
  36. package/dist/settings.js +1 -1
  37. package/dist/{sidebar-node-editor-BHqtoMC5.js → sidebar-node-editor-sig409hs.js} +4 -4
  38. package/dist/templates.js +2 -2
  39. package/dist/{useAgentDefinitions-DykIYrep.js → useAgentDefinitions-JeTU3Axe.js} +1 -1
  40. package/dist/{useDurableParity-sS0LIJ_l.js → useDurableParity-BIh8h9oO.js} +1 -1
  41. package/dist/{useExecutions-GgjDOgcd.js → useExecutions-CtpcnNXY.js} +1 -1
  42. package/dist/{useGlobalStoreClient-BfmKmeIx.js → useGlobalStoreClient-BrBZo54N.js} +1 -1
  43. package/dist/{useObservability-AMDVk_hX.js → useObservability-D3c2BemM.js} +1 -1
  44. package/dist/{useRunHistory-gnqIoJnZ.js → useRunHistory-C9To9FVu.js} +1 -1
  45. package/dist/{useWorkflowCodeExport-DrcfDTcD.js → useWorkflowCodeExport-CEYZ0_Po.js} +1 -1
  46. package/dist/{useWorkflows-DSZUrK_o.js → useWorkflows-BLG1ycnl.js} +1 -1
  47. package/dist/workflow-builder.js +5 -5
  48. package/dist/workflow-pages.js +13 -13
  49. package/dist/workflow-preview.js +1 -1
  50. package/dist/workflows-list.js +1 -1
  51. package/package.json +1 -1
@@ -1,15 +1,15 @@
1
1
  "use client";
2
2
  import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
3
3
  import { t as ThemeProvider } from "./theme-provider-B3mIuz2d.js";
4
- import { a as useAiWorkflowTemplates, i as enrichDraftNodes, n as AI_DRAFT_MAX_PROMPT_LENGTH, r as draftToCanvas, t as FlowBuilderPage } from "./flow-builder-CYlYHdhf.js";
5
- import { D as buildOperationSeed, _t as classifyCreateRefusal, gt as builderPathOf, u as ensureNodeTypesLoaded } from "./FluidGridsProvider-BOBuK7kj.js";
4
+ import { a as useAiWorkflowTemplates, i as enrichDraftNodes, n as AI_DRAFT_MAX_PROMPT_LENGTH, r as draftToCanvas, t as FlowBuilderPage } from "./flow-builder-DSKuzsVe.js";
5
+ import { bt as builderPathOf, j as buildOperationSeed, u as ensureNodeTypesLoaded, xt as classifyCreateRefusal } from "./FluidGridsProvider-BXQTsUUW.js";
6
6
  import { n as getFluidGridsClient } from "./client-Ctl4jmY3.js";
7
7
  import { o as throwIfResultError } from "./errors-xPZ-IbQd.js";
8
8
  import { a as notifyFluidGridsAiCreditsUpdated, t as AiCreditBalanceSlot } from "./aiCreditsBridge-BuE92tKo.js";
9
- import { n as useCreateWorkflow } from "./useWorkflows-DSZUrK_o.js";
9
+ import { n as useCreateWorkflow } from "./useWorkflows-BLG1ycnl.js";
10
10
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
11
11
  import { t as BILLING_PLANS_PATH } from "./quota-Cdt8yz7N.js";
12
- import { c as CreateWorkflowRefusalDialog } from "./useWorkflowCodeExport-DrcfDTcD.js";
12
+ import { c as CreateWorkflowRefusalDialog } from "./useWorkflowCodeExport-CEYZ0_Po.js";
13
13
  import { s as useFluidGridsPermission, t as FLUIDGRIDS_PERMISSIONS } from "./constants-dcxg6zG6.js";
14
14
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
15
15
  import { useNavigate } from "react-router";
@@ -2,7 +2,7 @@
2
2
  import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
3
3
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
4
4
  import { n as useNavigationV2 } from "./useNavigationV2-C2WeqN7d.js";
5
- import { n as useDataSinks, t as useDataSinkData } from "./useObservability-AMDVk_hX.js";
5
+ import { n as useDataSinks, t as useDataSinkData } from "./useObservability-D3c2BemM.js";
6
6
  import { c as prettyJson, r as formatTimestamp, t as formatBytes } from "./utils-C0dtnN4R.js";
7
7
  import { useEffect, useMemo, useState } from "react";
8
8
  import { Icon } from "@iconify/react";
@@ -1,14 +1,14 @@
1
1
  "use client";
2
2
  import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
3
- import { c as errorAdvice, d as NodeStatusBadge, i as useRunPending, l as needsReconnect, n as useDurableParityRunFields, o as ConfirmStopRunDialog, r as useRunMetadata, t as setRunVersioningOverride, u as ExecutionStatusBadge } from "./useDurableParity-sS0LIJ_l.js";
3
+ import { c as errorAdvice, d as NodeStatusBadge, i as useRunPending, l as needsReconnect, n as useDurableParityRunFields, o as ConfirmStopRunDialog, r as useRunMetadata, t as setRunVersioningOverride, u as ExecutionStatusBadge } from "./useDurableParity-BIh8h9oO.js";
4
4
  import { n as formatRunVersion, r as nodeDisplayTitle, t as buildNodeDisplayMap } from "./run-display-UjLAoYqQ.js";
5
5
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
6
6
  import { c as RunLogAppendedDocument, l as RunLogsDocument, s as isAgentNodeType } from "./agent-form-D0uLvzx4.js";
7
- import { $t as runDurationMs, C as describeRun, Qt as nodeStateDurationMs, T as describeRunStep, Zt as formatElapsedMs, hn as durableInterfaceOf, pn as canSignalRun, vn as runSignalTargets, w as describeRunError } from "./FluidGridsProvider-BOBuK7kj.js";
8
- import { i as useFgAskableSelection, r as useFgAskable } from "./askAboutBridge-kpcjcR9Y.js";
7
+ import { C as failureQuestions, D as describeRun, E as runStepQuestions, O as describeRunError, Sn as runSignalTargets, T as runQuestions, _n as canSignalRun, k as describeRunStep, nn as nodeStateDurationMs, rn as runDurationMs, tn as formatElapsedMs, w as isFailedStatus, yn as durableInterfaceOf } from "./FluidGridsProvider-BXQTsUUW.js";
8
+ import { i as useFgAskable, o as useFgAskableSelection, r as useFgAskAssistant } from "./askAboutBridge-ByYsQams.js";
9
9
  import { n as useNavigationV2 } from "./useNavigationV2-C2WeqN7d.js";
10
10
  import { t as TechnicalDetails } from "./TechnicalDetails-r5JXr1jZ.js";
11
- import { _ as shortRunId, g as runChainLinks, h as parseMetadataDefinition, m as overrideRequestOf, n as useExecution, p as callbackTone, r as useExecutionActions, s as buildRetryTriggerInput, t as useAutoRefresh } from "./useExecutions-GgjDOgcd.js";
11
+ import { _ as shortRunId, g as runChainLinks, h as parseMetadataDefinition, m as overrideRequestOf, n as useExecution, p as callbackTone, r as useExecutionActions, s as buildRetryTriggerInput, t as useAutoRefresh } from "./useExecutions-CtpcnNXY.js";
12
12
  import { t as RunActionsMenu } from "./RunActionsMenu-BZY4NreS.js";
13
13
  import { n as getFluidGridsClient, r as getFluidGridsClientSafe } from "./client-Ctl4jmY3.js";
14
14
  import { o as throwIfResultError, t as describeOperationError } from "./errors-xPZ-IbQd.js";
@@ -23,7 +23,7 @@ import { t as useWorkflowProposal } from "./useWorkflowProposal-B9vXLKef.js";
23
23
  import { t as WorkflowProposalCard } from "./WorkflowProposalCard-SmRv_Egf.js";
24
24
  import { t as AiCreditBalanceSlot } from "./aiCreditsBridge-BuE92tKo.js";
25
25
  import { a as fetchRunFailureClusters, i as dismissRunFailureCluster, r as OPEN_STATUSES, t as BUCKET_LABELS } from "./FailureTriagePanel-DA91XKVj.js";
26
- import { a as useDurableRunFields, i as useDeterminismStatus, n as SignalRunDialog, o as useRunStackTrace, r as terminateDurableRun, s as RunHistoryView, t as useRunHistory } from "./useRunHistory-gnqIoJnZ.js";
26
+ import { a as useDurableRunFields, i as useDeterminismStatus, n as SignalRunDialog, o as useRunStackTrace, r as terminateDurableRun, s as RunHistoryView, t as useRunHistory } from "./useRunHistory-C9To9FVu.js";
27
27
  import { $P as VersioningBehavior, L as AgentStepKind, LI as WorkflowUpdateWaitFor, jd as ErrorType, yI as WorkflowQueryRejectCondition } from "./graphql-types-C5Tr6508.js";
28
28
  import { _ as agentTokenStreamsFor, g as agentLiveReplyState, h as useAgentTokenStream, i as canSaveRunAsTestCase, t as saveRunAsTestCase } from "./use-workflow-tests-BUzndyWO.js";
29
29
  import { a as formatTokens, d as formatMicroUsd, o as modelLabel, r as aiCost } from "./ai-usage-D7SjIkUZ.js";
@@ -31,7 +31,7 @@ import { _ as useWorkflowTestsEnabled, l as useDurableFunctionNodesEnabled, m as
31
31
  import { A as revokeSignalToken, B as updateActivityOptions, D as resetActivities, E as queryRun, N as sendRunUpdate, O as resetRun, R as unpauseActivities, S as fetchSignalTokens, V as upsertRunSearchAttributes, _ as fetchPauseRules, b as fetchRunUpdate, d as failActivityById, g as fetchCodecServerSettings, i as completeActivityById, k as resetRunToLastCleanTask, s as createSignalToken, v as fetchRunControlFields, w as pauseActivities, y as fetchRunHistoryArchive } from "./api-CEnNq15C.js";
32
32
  import { a as fetchTaskQueueStats } from "./api-DKfMt0IX.js";
33
33
  import { a as RUN_CONTROL_DIALOG_STYLE, c as parseJsonInput, i as NativeSelect, l as parseJsonObjectInput, n as JsonBlock, o as StatusPill, r as JsonField, s as newRunControlId, t as FieldError, u as useResource } from "./shared-C0LCTtyh.js";
34
- import { v as useWorkflowVersions } from "./useWorkflows-DSZUrK_o.js";
34
+ import { v as useWorkflowVersions } from "./useWorkflows-BLG1ycnl.js";
35
35
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
36
36
  import { Link, useNavigate, useParams, useSearchParams } from "react-router";
37
37
  import { Icon } from "@iconify/react";
@@ -1960,16 +1960,19 @@ function NodeTimeline({ nodeStates, nodeDisplay, loading, triggerNodeId, onRetry
1960
1960
  const isWaitingSubworkflow = node.status === "WAITING_SUBWORKFLOW";
1961
1961
  const hasChildRun = Boolean(node.childRunId);
1962
1962
  const stepName = nodeDisplayTitle(nodeDisplay?.[node.nodeId], node.nodeId);
1963
- const describeStep = () => askRun ? describeRunStep({
1964
- run: askRun,
1965
- stepId: node.nodeId,
1966
- stepName,
1967
- stepType: node.nodeType,
1968
- stepVersion: node.nodeVersion,
1969
- status: node.status,
1970
- errorType: node.errorType,
1971
- error: nodeError
1972
- }) : null;
1963
+ const describeStep = () => askRun ? {
1964
+ ...describeRunStep({
1965
+ run: askRun,
1966
+ stepId: node.nodeId,
1967
+ stepName,
1968
+ stepType: node.nodeType,
1969
+ stepVersion: node.nodeVersion,
1970
+ status: node.status,
1971
+ errorType: node.errorType,
1972
+ error: nodeError
1973
+ }),
1974
+ suggestions: isFailedStatus(node.status) || nodeError?.trim() ? failureQuestions(tr) : runStepQuestions(tr)
1975
+ } : null;
1973
1976
  return /* @__PURE__ */ jsxs("div", {
1974
1977
  className: "relative flex gap-4",
1975
1978
  children: [/* @__PURE__ */ jsxs("div", {
@@ -3392,7 +3395,7 @@ function RunBudgetPanel({ budget }) {
3392
3395
  *
3393
3396
  * Renders nothing for a run that has not failed.
3394
3397
  */
3395
- function RunAiAssistPanel({ runId, status, canPropose, canApply, onOpenWorkflow }) {
3398
+ function RunAiAssistPanel({ runId, status, canPropose, canApply, onOpenWorkflow, askAbout }) {
3396
3399
  const tr = useTr();
3397
3400
  const [explanation, setExplanation] = useState(null);
3398
3401
  const [explaining, setExplaining] = useState(false);
@@ -3470,23 +3473,9 @@ function RunAiAssistPanel({ runId, status, canPropose, canApply, onOpenWorkflow
3470
3473
  className: "mt-3 text-sm text-[var(--color-status-error-text)]",
3471
3474
  children: explainError
3472
3475
  }),
3473
- explanation && /* @__PURE__ */ jsxs("div", {
3474
- className: "mt-3 space-y-2",
3475
- "data-testid": "run-ai-explanation",
3476
- children: [
3477
- /* @__PURE__ */ jsx("p", {
3478
- className: "text-sm text-text-primary",
3479
- children: explanation.cause
3480
- }),
3481
- explanation.evidence.length > 0 && /* @__PURE__ */ jsx("pre", {
3482
- className: "max-h-40 overflow-auto whitespace-pre-wrap rounded bg-surface p-2 text-xs text-text-secondary",
3483
- children: explanation.evidence.join("\n")
3484
- }),
3485
- explanation.suggestions.length > 0 && /* @__PURE__ */ jsx("ul", {
3486
- className: "list-disc space-y-0.5 pl-5 text-sm text-text-primary",
3487
- children: explanation.suggestions.map((suggestion) => /* @__PURE__ */ jsx("li", { children: suggestion }, suggestion))
3488
- })
3489
- ]
3476
+ explanation && /* @__PURE__ */ jsx(RunExplanationView, {
3477
+ explanation,
3478
+ askAbout
3490
3479
  }),
3491
3480
  proposal.error && /* @__PURE__ */ jsx("p", {
3492
3481
  className: "mt-3 text-sm text-[var(--color-status-error-text)]",
@@ -3510,6 +3499,65 @@ function RunAiAssistPanel({ runId, status, canPropose, canApply, onOpenWorkflow
3510
3499
  ]
3511
3500
  });
3512
3501
  }
3502
+ /**
3503
+ * The diagnosis "Explain failure" returned, and (BOFF-13381) "Ask AI about
3504
+ * this" to follow it up in the assistant: the run's error picked, with the
3505
+ * diagnosis and its suggested fixes first in what the assistant is told, so it
3506
+ * starts from them rather than diagnosing again.
3507
+ */
3508
+ function RunExplanationView({ explanation, askAbout }) {
3509
+ const tr = useTr();
3510
+ const askAssistant = useFgAskAssistant();
3511
+ const ref = useRef(null);
3512
+ const followUp = askAssistant && askAbout ? () => {
3513
+ const base = askAbout();
3514
+ askAssistant({
3515
+ ...base,
3516
+ facts: [
3517
+ {
3518
+ label: "Diagnosis",
3519
+ value: explanation.cause
3520
+ },
3521
+ ...explanation.suggestions.slice(0, 3).map((suggestion, index) => ({
3522
+ label: `Suggested fix ${index + 1}`,
3523
+ value: suggestion
3524
+ })),
3525
+ ...base.facts ?? []
3526
+ ]
3527
+ }, ref.current);
3528
+ } : null;
3529
+ return /* @__PURE__ */ jsxs("div", {
3530
+ ref,
3531
+ className: "mt-3 space-y-2",
3532
+ "data-testid": "run-ai-explanation",
3533
+ children: [
3534
+ /* @__PURE__ */ jsx("p", {
3535
+ className: "text-sm text-text-primary",
3536
+ children: explanation.cause
3537
+ }),
3538
+ explanation.evidence.length > 0 && /* @__PURE__ */ jsx("pre", {
3539
+ className: "max-h-40 overflow-auto whitespace-pre-wrap rounded bg-surface p-2 text-xs text-text-secondary",
3540
+ children: explanation.evidence.join("\n")
3541
+ }),
3542
+ explanation.suggestions.length > 0 && /* @__PURE__ */ jsx("ul", {
3543
+ className: "list-disc space-y-0.5 pl-5 text-sm text-text-primary",
3544
+ children: explanation.suggestions.map((suggestion) => /* @__PURE__ */ jsx("li", { children: suggestion }, suggestion))
3545
+ }),
3546
+ followUp && /* @__PURE__ */ jsxs(Button, {
3547
+ size: "sm",
3548
+ variant: "outline",
3549
+ onClick: followUp,
3550
+ "data-agent": "deny",
3551
+ "data-testid": "run-ai-explanation-ask",
3552
+ children: [/* @__PURE__ */ jsx(Icon, {
3553
+ icon: "lucide:sparkles",
3554
+ width: 14,
3555
+ className: "mr-1"
3556
+ }), tr("fluidgrids.ai.runAssist.askFollowUp", "Ask AI about this")]
3557
+ })
3558
+ ]
3559
+ });
3560
+ }
3513
3561
 
3514
3562
  // src/modules/executions/components/RunFailureClusterCard.tsx
3515
3563
  /**
@@ -8354,6 +8402,17 @@ function ExecutionDetailPage() {
8354
8402
  workflowName: execution.workflow?.name ?? null,
8355
8403
  stoppedAt: stoppedAtNode ? nodeDisplayTitle(nodeDisplay[stoppedAtNode.nodeId], stoppedAtNode.nodeId) : null
8356
8404
  };
8405
+ const askAboutRunError = () => ({
8406
+ ...describeRunError(askRun),
8407
+ suggestions: failureQuestions(tr)
8408
+ });
8409
+ const askAboutRun = () => {
8410
+ const focus = describeRun(askRun);
8411
+ return {
8412
+ ...focus,
8413
+ suggestions: focus.kind === "run error" ? failureQuestions(tr) : runQuestions(tr)
8414
+ };
8415
+ };
8357
8416
  return /* @__PURE__ */ jsxs("div", {
8358
8417
  className: "p-4 pb-24 sm:p-6 sm:pb-24 bg-surface-canvas min-h-screen",
8359
8418
  children: [
@@ -8386,7 +8445,7 @@ function ExecutionDetailPage() {
8386
8445
  className: "flex flex-col lg:flex-row lg:items-start lg:justify-between gap-4 mb-6",
8387
8446
  children: [/* @__PURE__ */ jsxs("div", { children: [
8388
8447
  /* @__PURE__ */ jsxs(AskableDiv, {
8389
- describe: () => describeRun(askRun),
8448
+ describe: askAboutRun,
8390
8449
  "data-testid": "run-title-askable",
8391
8450
  className: "flex items-center gap-3 mb-2",
8392
8451
  ...runSuggestAnchorProps(execution.id),
@@ -8711,7 +8770,7 @@ function ExecutionDetailPage() {
8711
8770
  })]
8712
8771
  }),
8713
8772
  summary && /* @__PURE__ */ jsx(AskableDiv, {
8714
- describe: () => describeRun(askRun),
8773
+ describe: askAboutRun,
8715
8774
  "data-testid": "run-summary-askable",
8716
8775
  children: /* @__PURE__ */ jsx(RunSummaryCard, {
8717
8776
  status: execution.status,
@@ -8800,11 +8859,11 @@ function ExecutionDetailPage() {
8800
8859
  ]
8801
8860
  }),
8802
8861
  v2 && execution.errorMessage && /* @__PURE__ */ jsx(AskableDiv, {
8803
- describe: () => describeRunError(askRun),
8862
+ describe: askAboutRunError,
8804
8863
  "data-testid": "run-error-banner",
8805
8864
  className: "mb-6",
8806
8865
  children: /* @__PURE__ */ jsx(TechnicalDetails, { children: /* @__PURE__ */ jsx(AskableSelectionDiv, {
8807
- describe: () => describeRunError(askRun),
8866
+ describe: askAboutRunError,
8808
8867
  children: /* @__PURE__ */ jsxs("p", {
8809
8868
  className: "text-sm text-[var(--color-status-error-text)] break-words",
8810
8869
  children: [
@@ -8817,7 +8876,7 @@ function ExecutionDetailPage() {
8817
8876
  }) })
8818
8877
  }),
8819
8878
  !v2 && execution.errorMessage && /* @__PURE__ */ jsxs(AskableDiv, {
8820
- describe: () => describeRunError(askRun),
8879
+ describe: askAboutRunError,
8821
8880
  "data-testid": "run-error-banner",
8822
8881
  className: "mb-6 p-4 bg-[var(--color-status-error-bg-subtle)] border border-[var(--color-status-error-border)] rounded-lg",
8823
8882
  children: [/* @__PURE__ */ jsxs("div", {
@@ -8830,7 +8889,7 @@ function ExecutionDetailPage() {
8830
8889
  children: [tr("fluidgrids.executions.executionDetail.errorLabel", "Error"), execution.errorType ? ` (${execution.errorType})` : ""]
8831
8890
  })]
8832
8891
  }), /* @__PURE__ */ jsx(AskableSelectionDiv, {
8833
- describe: () => describeRunError(askRun),
8892
+ describe: askAboutRunError,
8834
8893
  children: /* @__PURE__ */ jsx("p", {
8835
8894
  className: "text-[var(--color-status-error-text)]",
8836
8895
  children: execution.errorMessage
@@ -8851,6 +8910,7 @@ function ExecutionDetailPage() {
8851
8910
  status: execution.status,
8852
8911
  canPropose: canProposeFix,
8853
8912
  canApply: canApplyFix,
8913
+ askAbout: askAboutRunError,
8854
8914
  onOpenWorkflow: (workflowKey, version) => navigate(`../workflow/${encodeURIComponent(workflowKey)}/${encodeURIComponent(version)}`)
8855
8915
  }),
8856
8916
  /* @__PURE__ */ jsx(RunFailureClusterCard, {
@@ -1,23 +1,23 @@
1
1
  "use client";
2
2
  import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
3
3
  import { g as useExecutionsStore, h as DEFAULT_EXECUTIONS_FILTER } from "./config-X97zrIvn.js";
4
- import { b as validateDateRange, c as EMPTY_SEARCH_FILTER, d as searchFilterConflicts, i as useExecutionStats, l as OPERATORS_BY_TYPE, o as useExecutionsWithStore, r as useExecutionActions, t as useAutoRefresh, u as buildSearchAttributeFilter } from "./useExecutions-GgjDOgcd.js";
4
+ import { b as validateDateRange, c as EMPTY_SEARCH_FILTER, d as searchFilterConflicts, i as useExecutionStats, l as OPERATORS_BY_TYPE, o as useExecutionsWithStore, r as useExecutionActions, t as useAutoRefresh, u as buildSearchAttributeFilter } from "./useExecutions-CtpcnNXY.js";
5
5
  import { m as usePhaseCFlags, u as useDurableParityEnabled } from "./feature-flags-B_b8PJ6Z.js";
6
6
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
7
7
  import { n as useFluidGridsPageControls } from "./pageControlsBridge-0pX9s-3k.js";
8
8
  import { t as executionsControls } from "./pageControlSpecs-DZJ9K37m.js";
9
9
  import { t as TagFilterSelect } from "./TagFilterSelect-CAShgvbS.js";
10
10
  import { n as useNavigationV2 } from "./useNavigationV2-C2WeqN7d.js";
11
- import { a as useRunStatusCounts, c as errorAdvice, f as runStatusLabels, o as ConfirmStopRunDialog, p as RUN_STATUS_CONFIG, s as ADVICE_ERROR_TYPES, u as ExecutionStatusBadge } from "./useDurableParity-sS0LIJ_l.js";
11
+ import { a as useRunStatusCounts, c as errorAdvice, f as runStatusLabels, o as ConfirmStopRunDialog, p as RUN_STATUS_CONFIG, s as ADVICE_ERROR_TYPES, u as ExecutionStatusBadge } from "./useDurableParity-BIh8h9oO.js";
12
12
  import { t as Disclosure } from "./Disclosure-CsxDspR7.js";
13
13
  import { n as formatRunVersion } from "./run-display-UjLAoYqQ.js";
14
14
  import { r as runSuggestAnchorProps } from "./entities-I_0kio3q.js";
15
- import { $t as runDurationMs, Zt as formatElapsedMs } from "./FluidGridsProvider-BOBuK7kj.js";
15
+ import { rn as runDurationMs, tn as formatElapsedMs } from "./FluidGridsProvider-BXQTsUUW.js";
16
16
  import { r as useRunHumanRequests } from "./useHumanRequests-DwG2tQ3f.js";
17
17
  import { n as runListLinkKey, t as runListFilterFromSearch } from "./run-list-links-DZ8Q5l35.js";
18
18
  import { t as TechnicalDetails } from "./TechnicalDetails-r5JXr1jZ.js";
19
19
  import { t as RunActionsMenu } from "./RunActionsMenu-BZY4NreS.js";
20
- import { h as useWorkflowDefinitions } from "./useWorkflows-DSZUrK_o.js";
20
+ import { h as useWorkflowDefinitions } from "./useWorkflows-BLG1ycnl.js";
21
21
  import { t as FluidGridsDocsLink } from "./FluidGridsDocsLink-JxkBpOeb.js";
22
22
  import { s as useFluidGridsPermission, t as FLUIDGRIDS_PERMISSIONS } from "./constants-dcxg6zG6.js";
23
23
  import { C as jsonArg, F as startBatchOperation, I as startBatchTerminate, P as startBatchExport, m as fetchBatchOperations, n as cancelBatchOperation, p as fetchBatchOperation, x as fetchSearchAttributes } from "./api-CEnNq15C.js";
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { a as resetFluidGridsClient, n as getFluidGridsClient, o as setFluidGridsClient, r as getFluidGridsClientSafe, s as waitForFluidGridsClient, t as createFluidGridsClient } from "./client-Ctl4jmY3.js";
3
3
  import { a as setGlobalStoreClient, i as resetGlobalStoreClient, n as getGlobalStoreClient, t as createGlobalStoreClient } from "./global-client-DP_Wxe5t.js";
4
- import { A as useFlowStore, C as outputHandlesSpacerHeight, D as NodeCardBody, E as NodeCard, M as isNodeTrigger, O as NodeCardHeader, S as nodeAdaptersOf, T as resolveOutputHandles, _ as InputHandles, b as hasNodeManifest, g as LogicNodeCard, i as WAIT_FOR_SIGNAL_NODE_TYPE, k as nodeAccent, l as interfaceFields, m as readSignalName, n as synchronizeOperationUpdate, p as readCodeWorkflowState, r as CODE_WORKFLOW_NODE_TYPE, t as resolveOperationName, u as interfaceHandlers, v as OutputHandles, w as resolveInputHandles, y as alignPlainOutputEdges } from "./node-operation-selection-BGj5YwAS.js";
4
+ import { A as useFlowStore, C as outputHandlesSpacerHeight, D as NodeCardBody, E as NodeCard, M as isNodeTrigger, O as NodeCardHeader, S as nodeAdaptersOf, T as resolveOutputHandles, _ as InputHandles, b as hasNodeManifest, g as LogicNodeCard, i as WAIT_FOR_SIGNAL_NODE_TYPE, k as nodeAccent, l as interfaceFields, m as readSignalName, n as synchronizeOperationUpdate, p as readCodeWorkflowState, r as CODE_WORKFLOW_NODE_TYPE, t as resolveOperationName, u as interfaceHandlers, v as OutputHandles, w as resolveInputHandles, y as alignPlainOutputEdges } from "./node-operation-selection-bFx9s45-.js";
5
5
  import { n as useBuilderReadOnly } from "./read-only-context-Dt9N9SIG.js";
6
6
  import { a as resolveStickyColor, i as partitionStickyNotes, l as STICKY_NOTE_TYPE, n as STICKY_COLORS, o as stickySurfaceStyle, t as DEFAULT_STICKY_COLOR } from "./sticky-notes-23j-wL6Q.js";
7
7
  import { n as FluidGridsTranslationProvider, r as useTr, t as ENGLISH_FALLBACK_TRANSLATOR } from "./TranslationBridge-Da-TPgQm.js";
@@ -13,7 +13,7 @@ import { a as emitOperationErrorEvent, i as emitFluidGridsEvent, o as emitRunCom
13
13
  import { i as emitRunStarted, n as emitRunFailed, r as emitRunLimitHit, s as emitWorkflowCreated } from "./fluidgridsEvents-Dm5CaHtr.js";
14
14
  import { a as collectExtensions, n as QUOTA_EXHAUSTED_CODE, o as errorCodesOf, r as RUNS_QUOTA_NAME, s as findQuotaRefusal } from "./quota-Cdt8yz7N.js";
15
15
  import { c as setFluidGridsConfig, l as validateTrustedOrigin, o as resetFluidGridsConfig, r as getFluidGridsConfig, s as resetFluidGridsExecutionState } from "./config-X97zrIvn.js";
16
- import { r as useFgAskable } from "./askAboutBridge-kpcjcR9Y.js";
16
+ import { a as useFgAskableAction } from "./askAboutBridge-ByYsQams.js";
17
17
  import { i as readableNodeType } from "./run-display-UjLAoYqQ.js";
18
18
  import { t as provideNodeRegistryRefresh } from "./node-registry-refresh-s3okf83X.js";
19
19
  import { createContext, memo, useCallback, useContext, useEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
@@ -9593,6 +9593,52 @@ function describeRun(run) {
9593
9593
  };
9594
9594
  }
9595
9595
 
9596
+ // src/askAbout/askQuestions.ts
9597
+ /**
9598
+ * ★ BOFF-13381: the questions offered under the chip when a person picks
9599
+ * something to ask the assistant about. They start a question in the person's
9600
+ * own words: choosing one only fills the message box. A few, short, and about
9601
+ * what the thing is showing (a failed step is asked why it failed).
9602
+ */
9603
+ /** A step on the canvas: what it does, why it is not ready, why it failed. */
9604
+ function canvasStepQuestions(tr, step) {
9605
+ const failed = step.runStatus === "error" || Boolean(step.latestFailedRun?.errorMessage?.trim());
9606
+ const notReady = (step.missingSettings?.length ?? 0) > 0 || step.missingConnection === true;
9607
+ return [
9608
+ ...failed ? [tr("fluidgrids.askAbout.questions.stepFailed", "Why did this step fail?")] : [],
9609
+ ...notReady ? [tr("fluidgrids.askAbout.questions.stepNotReady", "What is this step still missing?")] : [],
9610
+ tr("fluidgrids.askAbout.questions.stepWhat", "What does this step do?"),
9611
+ tr("fluidgrids.askAbout.questions.stepImprove", "How can I make this step better?")
9612
+ ].slice(0, 3);
9613
+ }
9614
+ /** A run's error, or a step of a run that failed: why, and how to fix it. */
9615
+ function failureQuestions(tr) {
9616
+ return [
9617
+ tr("fluidgrids.askAbout.questions.whyFailed", "Why did this fail?"),
9618
+ tr("fluidgrids.askAbout.questions.howFix", "How do I fix this?"),
9619
+ tr("fluidgrids.askAbout.questions.preventAgain", "How do I stop this from happening again?")
9620
+ ];
9621
+ }
9622
+ /** A step of a run that did not fail. */
9623
+ function runStepQuestions(tr) {
9624
+ return [tr("fluidgrids.askAbout.questions.runStepWhat", "What did this step do in this run?"), tr("fluidgrids.askAbout.questions.runStepOutput", "What did this step pass on to the next one?")];
9625
+ }
9626
+ /** A whole run that did not fail. */
9627
+ function runQuestions(tr) {
9628
+ return [tr("fluidgrids.askAbout.questions.runWhat", "What happened in this run?"), tr("fluidgrids.askAbout.questions.runFaster", "How can I make this workflow faster?")];
9629
+ }
9630
+ /** The status words a run or run step fails with. */
9631
+ function isFailedStatus(status) {
9632
+ return /^(FAILED|ERROR|TIMED_OUT|TERMINATED)$/i.test(status?.trim() ?? "");
9633
+ }
9634
+ /** A canvas step as the assistant is told about it, with its questions. */
9635
+ function askAboutCanvasStep(tr, step) {
9636
+ return {
9637
+ ...describeCanvasStep(step),
9638
+ suggestions: canvasStepQuestions(tr, step)
9639
+ };
9640
+ }
9641
+
9596
9642
  // src/askAbout/latestFailedRun.ts
9597
9643
  /**
9598
9644
  * ★ BOFF-13267: the saved workflow's latest failed run, for "Ask AI about this"
@@ -10127,7 +10173,7 @@ const getNodeMetadata = (value) => {
10127
10173
  ]);
10128
10174
  const describeStep = useCallback(() => {
10129
10175
  const { execution, workflow } = useFlowStore.getState();
10130
- return describeCanvasStep(canvasStepFactsOf({
10176
+ return askAboutCanvasStep(tr, canvasStepFactsOf({
10131
10177
  id,
10132
10178
  type: value?.type,
10133
10179
  data,
@@ -10155,10 +10201,11 @@ const getNodeMetadata = (value) => {
10155
10201
  id,
10156
10202
  missingCredentials,
10157
10203
  missingParameters,
10204
+ tr,
10158
10205
  value?.type
10159
10206
  ]);
10160
- const askable = useFgAskable(describeStep);
10161
- const askableRef = useCallback((element) => askable(element?.closest(".react-flow__node") ?? element), [askable]);
10207
+ const askable = useFgAskableAction(describeStep);
10208
+ const askableRef = useCallback((element) => askable.ref(element?.closest(".react-flow__node") ?? element), [askable.ref]);
10162
10209
  if (isAdapterSubNode) return /* @__PURE__ */ jsx(SubNodeComponent, {
10163
10210
  ...props,
10164
10211
  nodeType: value?.type
@@ -10229,6 +10276,7 @@ const getNodeMetadata = (value) => {
10229
10276
  infoButton: /* @__PURE__ */ jsx(NodeInfoButtonWithModal, { metadata: nodeInfoMetadata }),
10230
10277
  disabled: isDisabled,
10231
10278
  onToggleDisabled: readOnly ? void 0 : handleToggleDisabled,
10279
+ onAskAi: askable.ask,
10232
10280
  isRenaming: isRenamingThisNode && !readOnly,
10233
10281
  onStartRename: readOnly ? void 0 : handleStartRename,
10234
10282
  onCommitRename: handleCommitRename,
@@ -10261,6 +10309,7 @@ const getNodeMetadata = (value) => {
10261
10309
  infoButton: /* @__PURE__ */ jsx(NodeInfoButtonWithModal, { metadata: nodeInfoMetadata }),
10262
10310
  disabled: isDisabled,
10263
10311
  onToggleDisabled: readOnly ? void 0 : handleToggleDisabled,
10312
+ onAskAi: askable.ask,
10264
10313
  children: [
10265
10314
  /* @__PURE__ */ jsx(NodeCardHeader, {
10266
10315
  icon: cardIcon,
@@ -11381,4 +11430,4 @@ function useFluidGridsContext() {
11381
11430
  return context;
11382
11431
  }
11383
11432
 
11384
- export { latestNodeLog as $, runDurationMs as $t, MissingParametersDialog as A, ExecutionsListDocument as An, phaseAfterTakeOver as At, selectedOperationOf as B, buildStickyNode as Bn, revisionOf as Bt, describeRun as C, EventRegistrationsDocument as Cn, useEditLeaseLocked as Ct, buildOperationSeed as D, SaveWorkflowDraftDocument as Dn, leaseCallQueue as Dt, SENSITIVE_PARAM as E, TriggerWorkflowDocument as En, isLocked as Et, fixedParameterState as F, isOptionalAdapter as Fn, forgetSessionForReload as Ft, optionListText as G, findSaveConflict as Gt, resolveUiSpec as H, useMarkdownRenderer as Hn, AUTOSAVE_RETRY_DELAYS_MS as Ht, nodeSubtitle as I, matchesAdapterProvider as In, rememberSessionForReload as It, ConditionTreeBuilder as J, saveFailureActionOf as Jt, optionListValues as K, inAppLeaveTarget as Kt, nodeTitle as L, newConnectionProviderKey as Ln, sessionBeforeReload as Lt, workflowParameterIssues as M, RunFromNodeDocument as Mn, shouldReleaseForIdle as Mt, asRecord as N, ExecuteStepDocument as Nn, tickAction as Nt, createConfiguredNode as O, CreateWorkflowVersionDocument as On, leaseCallSequence as Ot, coerceNumber as P, connectionsForAdapter as Pn, EDIT_SESSION_ID as Pt, parseMappingValue as Q, nodeStateDurationMs as Qt, optionText as R, replaceAdapterConnections as Rn, rememberOwnStatusChange as Rt, useLatestFailedRun as S, NodeEndpointConfigsDocument as Sn, workflowSaveQueue as St, describeRunStep as T, BuilderRunNodeDetailsDocument as Tn, bannerOf as Tt, stripSubmitActions as U, canAutosave as Ut, useNodeConfig as V, loadMarkdown as Vn, AUTOSAVE_DEBOUNCE_MS as Vt, isStringOptionList as W, codeBuildIdOf as Wt, casesFromRules as X, useNodeExecution as Xt, SwitchRulesEditor as Y, workflowFingerprint as Yt, FieldTree as Z, formatElapsedMs as Zt, registryNodeData as _, payloadFromCardValues as _n, classifyCreateRefusal as _t, NODES_METADATA as a, isParamVisible as an, departingSave as at, fetchAllNodeEndpointConfigs as b, NodePaletteEntriesDocument as bn, saveIndicatorOf as bt, ensureInstalledNodeTypesLoaded as c, useCanvasEdges as cn, leavingLosesChanges as ct, ensureRegistryNodeTypesLoaded as d, loadDefinitionJson as dn, watchLeavingLosesChanges as dt, formatParameterValue as en, boundFieldsOf as et, isNodeConfigsInitialized as f, useCodeWorkflowInterface as fn, isFlowComplete as ft, registerWorkflowNodeTypes as g, parseRawSignalPayload as gn, builderPathOf as gt, registerNodeManifests as h, durableInterfaceOf as hn, blankWorkflowCreateInput as ht, AVAILABLE_NODES as i, resolveNodeOperation as in, autosaveAllowedFor as it, useRunGuard as j, ExecutionDetailDocument as jn, releasesOnClose as jt, useInsertNode as k, CreateWorkflowDefinitionDocument as kn, phaseAfterAcquire as kt, ensureNodeConfigsLoaded as l, useNodeRegistryRevision as ln, savedEverythingBeforeLeaving as lt, refetchStoreNodes as m, declaredSignals as mn, useSaveWorkflow as mt, FluidGridsProvider as n, structuredParameterType as nn, useGuardedNavigate as nt, NODE_CONFIGS as o, useFluidGridsAnalytics as on, editStateFor as ot, onNodeTypesUpdate as p, canSignalRun as pn, useFlowValidator as pt, resolveLoadOptionsSpec as q, resettledBaseline as qt, useFluidGridsContext as r, fieldsFromValue as rn, useManualSave as rt, NODE_TYPES as s, openRunQuotaUpgradePrompt as sn, editingLeaseLocked as st, FluidGridsContext as t, parseParameterValue as tn, missingRequiredParameters as tt, ensureNodeTypesLoaded as u, clearCodeWorkflowDefinitionCache as un, touchesSavedFields as ut, scheduleNodePaletteLoad as v, runSignalTargets as vn, createThenOpen as vt, describeRunError as w, BuilderRunStatusDocument as wn, useEditLeaseStore as wt, getNodeMetadata as x, NodeManifestsDocument as xn, useSaveStatusStore as xt, GetMyNodeInstallationsDocument as y, signalPayloadCard as yn, refusalOfQuota as yt, paramsFromOperation as z, getNodeDetail as zn, rememberRevision as zt };
11433
+ export { SwitchRulesEditor as $, workflowFingerprint as $t, SENSITIVE_PARAM as A, TriggerWorkflowDocument as An, isLocked as At, nodeSubtitle as B, matchesAdapterProvider as Bn, rememberSessionForReload as Bt, failureQuestions as C, signalPayloadCard as Cn, refusalOfQuota as Ct, describeRun as D, EventRegistrationsDocument as Dn, useEditLeaseLocked as Dt, runStepQuestions as E, NodeEndpointConfigsDocument as En, workflowSaveQueue as Et, useRunGuard as F, ExecutionDetailDocument as Fn, releasesOnClose as Ft, useNodeConfig as G, loadMarkdown as Gn, AUTOSAVE_DEBOUNCE_MS as Gt, optionText as H, replaceAdapterConnections as Hn, rememberOwnStatusChange as Ht, workflowParameterIssues as I, RunFromNodeDocument as In, shouldReleaseForIdle as It, isStringOptionList as J, codeBuildIdOf as Jt, resolveUiSpec as K, useMarkdownRenderer as Kn, AUTOSAVE_RETRY_DELAYS_MS as Kt, asRecord as L, ExecuteStepDocument as Ln, tickAction as Lt, createConfiguredNode as M, CreateWorkflowVersionDocument as Mn, leaseCallSequence as Mt, useInsertNode as N, CreateWorkflowDefinitionDocument as Nn, phaseAfterAcquire as Nt, describeRunError as O, BuilderRunStatusDocument as On, useEditLeaseStore as Ot, MissingParametersDialog as P, ExecutionsListDocument as Pn, phaseAfterTakeOver as Pt, ConditionTreeBuilder as Q, saveFailureActionOf as Qt, coerceNumber as R, connectionsForAdapter as Rn, EDIT_SESSION_ID as Rt, useLatestFailedRun as S, runSignalTargets as Sn, createThenOpen as St, runQuestions as T, NodeManifestsDocument as Tn, useSaveStatusStore as Tt, paramsFromOperation as U, getNodeDetail as Un, rememberRevision as Ut, nodeTitle as V, newConnectionProviderKey as Vn, sessionBeforeReload as Vt, selectedOperationOf as W, buildStickyNode as Wn, revisionOf as Wt, optionListValues as X, inAppLeaveTarget as Xt, optionListText as Y, findSaveConflict as Yt, resolveLoadOptionsSpec as Z, resettledBaseline as Zt, registryNodeData as _, canSignalRun as _n, useFlowValidator as _t, NODES_METADATA as a, parseParameterValue as an, missingRequiredParameters as at, fetchAllNodeEndpointConfigs as b, parseRawSignalPayload as bn, builderPathOf as bt, ensureInstalledNodeTypesLoaded as c, resolveNodeOperation as cn, autosaveAllowedFor as ct, ensureRegistryNodeTypesLoaded as d, openRunQuotaUpgradePrompt as dn, editingLeaseLocked as dt, useNodeExecution as en, casesFromRules as et, isNodeConfigsInitialized as f, useCanvasEdges as fn, leavingLosesChanges as ft, registerWorkflowNodeTypes as g, useCodeWorkflowInterface as gn, isFlowComplete as gt, registerNodeManifests as h, loadDefinitionJson as hn, watchLeavingLosesChanges as ht, AVAILABLE_NODES as i, formatParameterValue as in, boundFieldsOf as it, buildOperationSeed as j, SaveWorkflowDraftDocument as jn, leaseCallQueue as jt, describeRunStep as k, BuilderRunNodeDetailsDocument as kn, bannerOf as kt, ensureNodeConfigsLoaded as l, isParamVisible as ln, departingSave as lt, refetchStoreNodes as m, clearCodeWorkflowDefinitionCache as mn, touchesSavedFields as mt, FluidGridsProvider as n, nodeStateDurationMs as nn, parseMappingValue as nt, NODE_CONFIGS as o, structuredParameterType as on, useGuardedNavigate as ot, onNodeTypesUpdate as p, useNodeRegistryRevision as pn, savedEverythingBeforeLeaving as pt, stripSubmitActions as q, canAutosave as qt, useFluidGridsContext as r, runDurationMs as rn, latestNodeLog as rt, NODE_TYPES as s, fieldsFromValue as sn, useManualSave as st, FluidGridsContext as t, formatElapsedMs as tn, FieldTree as tt, ensureNodeTypesLoaded as u, useFluidGridsAnalytics as un, editStateFor as ut, scheduleNodePaletteLoad as v, declaredSignals as vn, useSaveWorkflow as vt, isFailedStatus as w, NodePaletteEntriesDocument as wn, saveIndicatorOf as wt, getNodeMetadata as x, payloadFromCardValues as xn, classifyCreateRefusal as xt, GetMyNodeInstallationsDocument as y, durableInterfaceOf as yn, blankWorkflowCreateInput as yt, fixedParameterState as z, isOptionalAdapter as zn, forgetSessionForReload as zt };
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
3
- import { d as useRestoreWorkflowVersion, h as useWorkflowDefinitions } from "./useWorkflows-DSZUrK_o.js";
3
+ import { d as useRestoreWorkflowVersion, h as useWorkflowDefinitions } from "./useWorkflows-BLG1ycnl.js";
4
4
  import { t as VersionDiffDialog } from "./VersionDiffDialog-D9W5Fm56.js";
5
5
  import { c as versionsOfWorkflow } from "./VersionLifecycleBar-DuphLOT0.js";
6
6
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
@@ -3,7 +3,7 @@ import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
3
3
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
4
4
  import { n as useNavigationV2 } from "./useNavigationV2-C2WeqN7d.js";
5
5
  import { t as TechnicalDetails } from "./TechnicalDetails-r5JXr1jZ.js";
6
- import { o as useRunReplayActions, r as useInsightsData } from "./useObservability-AMDVk_hX.js";
6
+ import { o as useRunReplayActions, r as useInsightsData } from "./useObservability-D3c2BemM.js";
7
7
  import { a as getTopFailingNodes, i as getFailureBreakdown, l as rankedFailingWorkflows, n as formatDuration, o as getTopFailingWorkflows, s as percentage, u as summarySuccessRate } from "./utils-C0dtnN4R.js";
8
8
  import { n as FailureTriagePanel } from "./FailureTriagePanel-DA91XKVj.js";
9
9
  import { c as useContinuousOptimisationEnabled } from "./feature-flags-B_b8PJ6Z.js";
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
3
- import { n as formatTemplatePrice } from "./TemplateCard-7rE1VAIC.js";
3
+ import { n as formatTemplatePrice } from "./TemplateCard-BqWjHUzk.js";
4
4
  import { t as ConfirmActionDialog } from "./ConfirmActionDialog-D9Pir3bc.js";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
 
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
3
- import { on as useFluidGridsAnalytics } from "./FluidGridsProvider-BOBuK7kj.js";
3
+ import { un as useFluidGridsAnalytics } from "./FluidGridsProvider-BXQTsUUW.js";
4
4
  import { c as emitWorkflowLimitHit, o as emitUpgradeClicked } from "./fluidgridsEvents-Dm5CaHtr.js";
5
5
  import { i as WORKFLOWS_QUOTA_NAME } from "./quota-Cdt8yz7N.js";
6
6
  import { useEffect, useRef } from "react";
@@ -11,11 +11,11 @@ import { d as useFluidGridsFlag, m as usePhaseCFlags, t as FLUIDGRIDS_FLAGS, u a
11
11
  import { M as saveCodecServerSettings, _ as fetchPauseRules, a as createPauseRule, c as deletePauseRule, f as fetchArchiveSettings, g as fetchCodecServerSettings, j as saveArchiveSettings, l as deleteSearchAttribute, o as createSearchAttribute, r as clearArchiveSettings, x as fetchSearchAttributes } from "./api-CEnNq15C.js";
12
12
  import { i as NativeSelect, o as StatusPill, t as FieldError, u as useResource } from "./shared-C0LCTtyh.js";
13
13
  import { OI as WorkflowSearchAttributeType } from "./graphql-types-C5Tr6508.js";
14
- import { A as useFlowStore } from "./node-operation-selection-BGj5YwAS.js";
15
- import { Gt as findSaveConflict, xt as useSaveStatusStore } from "./FluidGridsProvider-BOBuK7kj.js";
16
- import { a as useLogStreamDestinations, i as useLogStreamDestinationActions } from "./useObservability-AMDVk_hX.js";
14
+ import { A as useFlowStore } from "./node-operation-selection-bFx9s45-.js";
15
+ import { Tt as useSaveStatusStore, Yt as findSaveConflict } from "./FluidGridsProvider-BXQTsUUW.js";
16
+ import { a as useLogStreamDestinations, i as useLogStreamDestinationActions } from "./useObservability-D3c2BemM.js";
17
17
  import { n as useConnections } from "./useConnections-BlB0gbOB.js";
18
- import { Nt as useUpdateWorkflowDefinitionMutation, Rt as useWorkflowDefinitionQuery, Vt as useWorkflowDefinitionsQuery, n as useAgentDefinitions } from "./useAgentDefinitions-DykIYrep.js";
18
+ import { Nt as useUpdateWorkflowDefinitionMutation, Rt as useWorkflowDefinitionQuery, Vt as useWorkflowDefinitionsQuery, n as useAgentDefinitions } from "./useAgentDefinitions-JeTU3Axe.js";
19
19
  import { a as formToInput$2, i as emptyAgentForm, n as agentToForm, o as grantDays, r as describeRule, t as AgentFormError } from "./agent-form-D0uLvzx4.js";
20
20
  import { r as getFluidGridsConfig } from "./config-X97zrIvn.js";
21
21
  import { n as getGlobalStoreClient } from "./global-client-DP_Wxe5t.js";
@@ -3,7 +3,7 @@ import { r as getFluidGridsConfig } from "./config-X97zrIvn.js";
3
3
  import { o as throwIfResultError } from "./errors-xPZ-IbQd.js";
4
4
  import { n as getFluidGridsClient } from "./client-Ctl4jmY3.js";
5
5
  import { n as getGlobalStoreClient } from "./global-client-DP_Wxe5t.js";
6
- import { c as ensureInstalledNodeTypesLoaded, d as ensureRegistryNodeTypesLoaded, i as AVAILABLE_NODES, o as NODE_CONFIGS, on as useFluidGridsAnalytics, t as FluidGridsContext, y as GetMyNodeInstallationsDocument } from "./FluidGridsProvider-BOBuK7kj.js";
6
+ import { c as ensureInstalledNodeTypesLoaded, d as ensureRegistryNodeTypesLoaded, i as AVAILABLE_NODES, o as NODE_CONFIGS, t as FluidGridsContext, un as useFluidGridsAnalytics, y as GetMyNodeInstallationsDocument } from "./FluidGridsProvider-BXQTsUUW.js";
7
7
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
8
8
  import { o as isNodeTypeHiddenFromPalette } from "./durable-nodes-DXCCQYWD.js";
9
9
  import { h as usePhaseDFlags } from "./feature-flags-B_b8PJ6Z.js";
@@ -13,7 +13,7 @@ import { n as InstallWorkflowNodeDocument } from "./global-operations-7pvXw_j9.j
13
13
  import { t as cn } from "./cn-QqidFIgr.js";
14
14
  import { t as Button } from "./button-DG7y_FVJ.js";
15
15
  import { i as SdkPermissionButton, t as FLUIDGRIDS_PERMISSIONS } from "./constants-dcxg6zG6.js";
16
- import { t as useGlobalStoreClient } from "./useGlobalStoreClient-BfmKmeIx.js";
16
+ import { t as useGlobalStoreClient } from "./useGlobalStoreClient-BrBZo54N.js";
17
17
  import { r as templateInstallSource } from "./template-code-CobAYaeH.js";
18
18
  import { t as Badge } from "./badge-CXfPhoMH.js";
19
19
  import { t as templatePreview } from "./template-preview-C01KV277.js";
@@ -1,9 +1,9 @@
1
1
  "use client";
2
2
  import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
3
3
  import { t as ThemeProvider } from "./theme-provider-B3mIuz2d.js";
4
- import { t as FlowBuilderPage } from "./flow-builder-CYlYHdhf.js";
5
- import { _ as useInstalledNodes, a as buildNodeCheck, c as useImportWorkflowTemplate, i as useTemplateImportFlow, n as formatTemplatePrice, o as buildRequiredNodeTypes, r as isPaidTemplate } from "./TemplateCard-7rE1VAIC.js";
6
- import { t as QuotaExhaustedDialog } from "./QuotaExhaustedDialog-CijT1MyD.js";
4
+ import { t as FlowBuilderPage } from "./flow-builder-DSKuzsVe.js";
5
+ import { _ as useInstalledNodes, a as buildNodeCheck, c as useImportWorkflowTemplate, i as useTemplateImportFlow, n as formatTemplatePrice, o as buildRequiredNodeTypes, r as isPaidTemplate } from "./TemplateCard-BqWjHUzk.js";
6
+ import { t as QuotaExhaustedDialog } from "./QuotaExhaustedDialog-CRd7SYXz.js";
7
7
  import { n as WithOpenTemplateAsCode } from "./OpenTemplateAsCodeButton-BdcTxemq.js";
8
8
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
9
9
  import { i as SdkPermissionButton, s as useFluidGridsPermission, t as FLUIDGRIDS_PERMISSIONS } from "./constants-dcxg6zG6.js";
@@ -12,7 +12,7 @@ import { n as useNavigationV2 } from "./useNavigationV2-C2WeqN7d.js";
12
12
  import { t as describeOperationError } from "./errors-xPZ-IbQd.js";
13
13
  import { t as Disclosure } from "./Disclosure-CsxDspR7.js";
14
14
  import { c as useVariables, t as useCreateVariable } from "./useVariables-DFdZofLQ.js";
15
- import { t as PaidTemplateConfirm } from "./PaidTemplateConfirm-Dop_rxCQ.js";
15
+ import { t as PaidTemplateConfirm } from "./PaidTemplateConfirm-CIDph--N.js";
16
16
  import { useEffect, useMemo, useState } from "react";
17
17
  import { useLocation, useNavigate, useParams } from "react-router";
18
18
  import { Icon } from "@iconify/react";
@@ -1,23 +1,23 @@
1
1
  "use client";
2
2
  import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
3
- import { h as useWorkflowDefinitions, l as useLazyWorkflowDefinition, s as useDuplicateWorkflow } from "./useWorkflows-DSZUrK_o.js";
4
- import { i as useTemplateImportFlow, l as useWorkflowTemplates, r as isPaidTemplate, t as TemplateCard } from "./TemplateCard-7rE1VAIC.js";
3
+ import { h as useWorkflowDefinitions, l as useLazyWorkflowDefinition, s as useDuplicateWorkflow } from "./useWorkflows-BLG1ycnl.js";
4
+ import { i as useTemplateImportFlow, l as useWorkflowTemplates, r as isPaidTemplate, t as TemplateCard } from "./TemplateCard-BqWjHUzk.js";
5
5
  import { jI as WorkflowStatus } from "./graphql-types-C5Tr6508.js";
6
6
  import { i as SdkPermissionButton, t as FLUIDGRIDS_PERMISSIONS } from "./constants-dcxg6zG6.js";
7
- import { t as QuotaExhaustedDialog } from "./QuotaExhaustedDialog-CijT1MyD.js";
7
+ import { t as QuotaExhaustedDialog } from "./QuotaExhaustedDialog-CRd7SYXz.js";
8
8
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
9
- import { on as useFluidGridsAnalytics, t as FluidGridsContext } from "./FluidGridsProvider-BOBuK7kj.js";
9
+ import { t as FluidGridsContext, un as useFluidGridsAnalytics } from "./FluidGridsProvider-BXQTsUUW.js";
10
10
  import { a as emitTemplateUsed } from "./fluidgridsEvents-Dm5CaHtr.js";
11
11
  import { n as useFluidGridsPageControls } from "./pageControlsBridge-0pX9s-3k.js";
12
12
  import { r as templatesControls } from "./pageControlSpecs-DZJ9K37m.js";
13
13
  import { c as isQuotaExhaustedFailure, t as BILLING_PLANS_PATH } from "./quota-Cdt8yz7N.js";
14
14
  import { t as FluidGridsDocsLink } from "./FluidGridsDocsLink-JxkBpOeb.js";
15
- import { t as useGlobalStoreClient } from "./useGlobalStoreClient-BfmKmeIx.js";
15
+ import { t as useGlobalStoreClient } from "./useGlobalStoreClient-BrBZo54N.js";
16
16
  import { o as throwIfResultError, t as describeOperationError } from "./errors-xPZ-IbQd.js";
17
17
  import { n as formatRunVersion } from "./run-display-UjLAoYqQ.js";
18
18
  import { n as useNavigationV2 } from "./useNavigationV2-C2WeqN7d.js";
19
19
  import { t as TechnicalDetails } from "./TechnicalDetails-r5JXr1jZ.js";
20
- import { t as PaidTemplateConfirm } from "./PaidTemplateConfirm-Dop_rxCQ.js";
20
+ import { t as PaidTemplateConfirm } from "./PaidTemplateConfirm-CIDph--N.js";
21
21
  import { r as getFluidGridsConfig } from "./config-X97zrIvn.js";
22
22
  import { t as cn } from "./cn-QqidFIgr.js";
23
23
  import { useCallback, useContext, useEffect, useMemo, useState } from "react";
@@ -1,21 +1,21 @@
1
1
  "use client";
2
2
  import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
3
- import { d as releaseLeaseKeptForReload, f as useWorkflowReloadStore, t as FlowBuilderPage } from "./flow-builder-CYlYHdhf.js";
3
+ import { d as releaseLeaseKeptForReload, f as useWorkflowReloadStore, t as FlowBuilderPage } from "./flow-builder-DSKuzsVe.js";
4
4
  import { n as registerLiveCanvasHandler } from "./liveCanvas-D5ytXDp8.js";
5
5
  import { r as getFluidGridsConfig } from "./config-X97zrIvn.js";
6
6
  import { n as getFluidGridsClient } from "./client-Ctl4jmY3.js";
7
7
  import { o as throwIfResultError } from "./errors-xPZ-IbQd.js";
8
8
  import { t as WorkflowDefinitionDocument } from "./WorkflowDefinitionDocument-DZLbTPUZ.js";
9
9
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
10
- import { O as createConfiguredNode, Wt as codeBuildIdOf, Yt as workflowFingerprint, _t as classifyCreateRefusal, g as registerWorkflowNodeTypes, h as registerNodeManifests, ht as blankWorkflowCreateInput, in as resolveNodeOperation, m as refetchStoreNodes, o as NODE_CONFIGS, u as ensureNodeTypesLoaded, xt as useSaveStatusStore, z as paramsFromOperation, zt as rememberRevision } from "./FluidGridsProvider-BOBuK7kj.js";
11
- import { A as useFlowStore } from "./node-operation-selection-BGj5YwAS.js";
10
+ import { $t as workflowFingerprint, Jt as codeBuildIdOf, M as createConfiguredNode, Tt as useSaveStatusStore, U as paramsFromOperation, Ut as rememberRevision, cn as resolveNodeOperation, g as registerWorkflowNodeTypes, h as registerNodeManifests, m as refetchStoreNodes, o as NODE_CONFIGS, u as ensureNodeTypesLoaded, xt as classifyCreateRefusal, yt as blankWorkflowCreateInput } from "./FluidGridsProvider-BXQTsUUW.js";
11
+ import { A as useFlowStore } from "./node-operation-selection-bFx9s45-.js";
12
12
  import { t as canvasFromDefinition } from "./definition-canvas-DL25_6NH.js";
13
- import { l as useLazyWorkflowDefinition, n as useCreateWorkflow } from "./useWorkflows-DSZUrK_o.js";
14
- import { _ as useInstalledNodes, a as buildNodeCheck, o as buildRequiredNodeTypes, s as getWorkflowNodeTypes } from "./TemplateCard-7rE1VAIC.js";
13
+ import { l as useLazyWorkflowDefinition, n as useCreateWorkflow } from "./useWorkflows-BLG1ycnl.js";
14
+ import { _ as useInstalledNodes, a as buildNodeCheck, o as buildRequiredNodeTypes, s as getWorkflowNodeTypes } from "./TemplateCard-BqWjHUzk.js";
15
15
  import { r as mergeStickyNotes } from "./sticky-notes-23j-wL6Q.js";
16
16
  import { c as withoutGuidedTourIntent, l as decideMissingWorkflow, o as isGuidedTourIntent, s as pickGuidedTour, u as isCreateIntent } from "./firstWorkflow-C_h0KMB2.js";
17
17
  import { t as BILLING_PLANS_PATH } from "./quota-Cdt8yz7N.js";
18
- import { c as CreateWorkflowRefusalDialog } from "./useWorkflowCodeExport-DrcfDTcD.js";
18
+ import { c as CreateWorkflowRefusalDialog } from "./useWorkflowCodeExport-CEYZ0_Po.js";
19
19
  import { Suspense, lazy, useCallback, useEffect, useMemo, useRef, useState } from "react";
20
20
  import { useLocation, useNavigate, useParams } from "react-router";
21
21
  import { Icon } from "@iconify/react";