@burdenoff/fluidgrids-fe-sdk 2026.1114.4 → 2026.1114.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6963,6 +6963,82 @@ function EncodedPayloadChip({ payload, codecServer, fetchImpl }) {
6963
6963
  });
6964
6964
  }
6965
6965
 
6966
+ // src/modules/run-control/components/ArchivedRunView.tsx
6967
+ function ArchivedRunView({ runId, enabled, fallback, backLink, onViewChildRun }) {
6968
+ const tr = useTr();
6969
+ const archive = useResource(`archived-run:${runId}`, enabled, () => fetchRunHistoryArchive(runId));
6970
+ const archived = archive.data?.archived === true;
6971
+ const history = useRunHistory(runId, {
6972
+ enabled: archived,
6973
+ live: false
6974
+ });
6975
+ if (!enabled) return /* @__PURE__ */ jsx(Fragment$1, { children: fallback });
6976
+ if (!archive.data && !archive.error) return /* @__PURE__ */ jsxs("div", {
6977
+ className: "animate-pulse p-4 sm:p-6",
6978
+ "data-testid": "archived-run-loading",
6979
+ "aria-busy": "true",
6980
+ children: [/* @__PURE__ */ jsx("div", { className: "mb-4 h-8 w-48 rounded bg-surface-sunken" }), /* @__PURE__ */ jsx("div", { className: "h-64 rounded-lg bg-surface-sunken" })]
6981
+ });
6982
+ if (!archived) return /* @__PURE__ */ jsx(Fragment$1, { children: fallback });
6983
+ const ref = archive.data?.archiveRef ?? tr("fluidgrids.runControl.archive.unknownRef", "the workspace's archive bucket");
6984
+ const archivedCount = archive.data?.historyLength ?? 0;
6985
+ const unreadable = !history.loading && !history.error && history.events.length === 0 && archivedCount > 0;
6986
+ return /* @__PURE__ */ jsxs("div", {
6987
+ className: "space-y-4 p-4 sm:p-6",
6988
+ "data-testid": "archived-run",
6989
+ children: [
6990
+ backLink,
6991
+ /* @__PURE__ */ jsxs("div", {
6992
+ className: "flex flex-wrap items-center gap-2",
6993
+ children: [/* @__PURE__ */ jsx("h1", {
6994
+ className: "font-mono text-lg font-semibold text-text-primary",
6995
+ children: runId
6996
+ }), /* @__PURE__ */ jsxs("span", {
6997
+ className: "inline-flex items-center gap-1 rounded-full border border-border-default bg-surface-elevated px-2 py-0.5 text-xs text-text-secondary",
6998
+ children: [/* @__PURE__ */ jsx(Icon, {
6999
+ icon: "mdi:archive-outline",
7000
+ width: 14
7001
+ }), tr("fluidgrids.runControl.archive.badge", "Archived")]
7002
+ })]
7003
+ }),
7004
+ /* @__PURE__ */ jsxs("div", {
7005
+ role: "status",
7006
+ className: "flex items-start gap-2 rounded-md border border-border-default bg-surface-elevated p-3 text-sm text-text-primary",
7007
+ "data-testid": "run-archived",
7008
+ children: [/* @__PURE__ */ jsx(Icon, {
7009
+ icon: "mdi:archive-outline",
7010
+ width: 18,
7011
+ className: "mt-0.5 shrink-0 text-text-secondary"
7012
+ }), /* @__PURE__ */ jsx("span", { children: tr("fluidgrids.runControl.archive.readBack", "Retention purged this run after archiving it to {{ref}}. Its history below is read back from the archive.", { ref }) })]
7013
+ }),
7014
+ unreadable ? /* @__PURE__ */ jsxs("div", {
7015
+ role: "alert",
7016
+ className: "flex items-start gap-2 rounded-md border border-status-warning-border bg-status-warning-bg-subtle p-3 text-sm text-status-warning-text",
7017
+ "data-testid": "archived-run-unreadable",
7018
+ children: [/* @__PURE__ */ jsx(Icon, {
7019
+ icon: "mdi:lock-outline",
7020
+ width: 18,
7021
+ className: "mt-0.5 shrink-0"
7022
+ }), /* @__PURE__ */ jsx("span", { children: tr("fluidgrids.runControl.archive.unreadable", "{{count}} events were archived, but they could not be read back. Allow s3:GetObject on the archive prefix to the archive role, or read the files in {{ref}} directly.", {
7023
+ count: archivedCount,
7024
+ ref
7025
+ }) })]
7026
+ }) : /* @__PURE__ */ jsx(RunHistoryView, {
7027
+ events: history.events,
7028
+ loading: history.loading,
7029
+ error: history.error,
7030
+ active: false,
7031
+ streaming: false,
7032
+ truncated: history.truncated,
7033
+ historyLength: history.historyLength,
7034
+ onRefresh: () => void history.refetch(),
7035
+ onViewChildRun,
7036
+ "data-testid": "archived-run-history"
7037
+ })
7038
+ ]
7039
+ });
7040
+ }
7041
+
6966
7042
  // src/modules/run-control/components/RunArchivedNotice.tsx
6967
7043
  /**
6968
7044
  * A run whose history was archived to the workspace's bucket and then purged
@@ -8035,43 +8111,60 @@ function ExecutionDetailPage() {
8035
8111
  ]
8036
8112
  })]
8037
8113
  });
8038
- if (!execution) return /* @__PURE__ */ jsxs("div", {
8039
- className: "p-4 sm:p-6 bg-surface-canvas min-h-screen",
8040
- children: [/* @__PURE__ */ jsxs(Link, {
8041
- to: "../runs",
8042
- className: "text-text-link hover:text-text-linkHover hover:underline text-sm mb-4 inline-block",
8043
- children: [
8044
- "←",
8045
- " ",
8046
- tr("fluidgrids.executions.executionDetail.backToExecutions", "Back to Executions")
8047
- ]
8048
- }), /* @__PURE__ */ jsxs("div", {
8049
- className: "bg-surface border border-border-default rounded-lg p-6 text-center",
8050
- children: [
8051
- /* @__PURE__ */ jsx(Icon, {
8052
- icon: "mdi:file-find-outline",
8053
- className: "mx-auto text-text-secondary mb-4",
8054
- width: 48
8055
- }),
8056
- /* @__PURE__ */ jsx("h2", {
8057
- className: "text-lg font-medium text-text-primary mb-2",
8058
- children: tr("fluidgrids.executions.executionDetail.notFoundTitle", "Execution not found")
8059
- }),
8060
- /* @__PURE__ */ jsxs("p", {
8061
- className: "text-text-secondary",
8062
- children: [
8063
- tr("fluidgrids.executions.executionDetail.notFoundDescriptionPrefix", "The execution with ID"),
8064
- " ",
8065
- "\"",
8066
- runId,
8067
- "\"",
8068
- " ",
8069
- tr("fluidgrids.executions.executionDetail.notFoundDescriptionSuffix", "could not be found.")
8070
- ]
8071
- })
8072
- ]
8073
- })]
8074
- });
8114
+ if (!execution) {
8115
+ const notFound = /* @__PURE__ */ jsxs("div", {
8116
+ className: "p-4 sm:p-6 bg-surface-canvas min-h-screen",
8117
+ children: [/* @__PURE__ */ jsxs(Link, {
8118
+ to: "../runs",
8119
+ className: "text-text-link hover:text-text-linkHover hover:underline text-sm mb-4 inline-block",
8120
+ children: [
8121
+ "←",
8122
+ " ",
8123
+ tr("fluidgrids.executions.executionDetail.backToExecutions", "Back to Executions")
8124
+ ]
8125
+ }), /* @__PURE__ */ jsxs("div", {
8126
+ className: "bg-surface border border-border-default rounded-lg p-6 text-center",
8127
+ children: [
8128
+ /* @__PURE__ */ jsx(Icon, {
8129
+ icon: "mdi:file-find-outline",
8130
+ className: "mx-auto text-text-secondary mb-4",
8131
+ width: 48
8132
+ }),
8133
+ /* @__PURE__ */ jsx("h2", {
8134
+ className: "text-lg font-medium text-text-primary mb-2",
8135
+ children: tr("fluidgrids.executions.executionDetail.notFoundTitle", "Execution not found")
8136
+ }),
8137
+ /* @__PURE__ */ jsxs("p", {
8138
+ className: "text-text-secondary",
8139
+ children: [
8140
+ tr("fluidgrids.executions.executionDetail.notFoundDescriptionPrefix", "The execution with ID"),
8141
+ " ",
8142
+ "\"",
8143
+ runId,
8144
+ "\"",
8145
+ " ",
8146
+ tr("fluidgrids.executions.executionDetail.notFoundDescriptionSuffix", "could not be found.")
8147
+ ]
8148
+ })
8149
+ ]
8150
+ })]
8151
+ });
8152
+ return /* @__PURE__ */ jsx(ArchivedRunView, {
8153
+ runId: runId ?? "",
8154
+ enabled: phaseC.runArchival && !!runId,
8155
+ fallback: notFound,
8156
+ backLink: /* @__PURE__ */ jsxs(Link, {
8157
+ to: "../runs",
8158
+ className: "text-text-link hover:text-text-linkHover hover:underline text-sm inline-block",
8159
+ children: [
8160
+ "←",
8161
+ " ",
8162
+ tr("fluidgrids.executions.executionDetail.backToExecutions", "Back to Executions")
8163
+ ]
8164
+ }),
8165
+ onViewChildRun: handleViewChildRun
8166
+ });
8167
+ }
8075
8168
  const tabs = [
8076
8169
  {
8077
8170
  id: "timeline",
@@ -1,5 +1,5 @@
1
1
  "use client";
2
2
  import { t as ExecutionsListPage } from "./ExecutionsListPage-Ky3TAL9U.js";
3
- import { t as ExecutionDetailPage } from "./ExecutionDetailPage-BbvY2bcb.js";
3
+ import { t as ExecutionDetailPage } from "./ExecutionDetailPage-heD4wBjg.js";
4
4
 
5
5
  export { ExecutionDetailPage, ExecutionsListPage };
package/dist/index.js CHANGED
@@ -15,7 +15,7 @@ import { _ as WorkflowRunsCountDocument, b as DurableParityRunFieldsDocument, v
15
15
  import { c as RunEventAppendedDocument, d as WorkflowRunDeterminismStatusDocument, f as DurableRunFieldsDocument, l as WorkflowRunStackTraceDocument, m as SignalWorkflowRunDocument, p as TerminateWorkflowRunDocument, u as WorkflowRunHistoryDocument } from "./useRunHistory-Be-GggNA.js";
16
16
  import { a as getGraphQLEndpoint, c as setFluidGridsConfig, d as applyFluidGridsTheme, f as sanitizeThemeValue, m as themeToCssVariables, o as resetFluidGridsConfig, p as themeKey, r as getFluidGridsConfig, s as resetFluidGridsExecutionState, t as config, u as FLUIDGRIDS_THEME_TOKEN_MAP } from "./config-X97zrIvn.js";
17
17
  import { r as WorkflowBatchOperationUpdatedDocument, t as ExecutionsListPage } from "./ExecutionsListPage-Ky3TAL9U.js";
18
- import { a as AgentStepUpdatedDocument, c as AgentTraceDocument, i as ExplainRunDocument, o as WorkflowRunHierarchyDocument, r as RunHumanRequests, s as RunAiUsageDocument, t as ExecutionDetailPage } from "./ExecutionDetailPage-BbvY2bcb.js";
18
+ import { a as AgentStepUpdatedDocument, c as AgentTraceDocument, i as ExplainRunDocument, o as WorkflowRunHierarchyDocument, r as RunHumanRequests, s as RunAiUsageDocument, t as ExecutionDetailPage } from "./ExecutionDetailPage-heD4wBjg.js";
19
19
  import { i as FileDownloadUrlDocument, n as WorkflowCodeSourceDocument, r as BuildWorkflowCodeDocument, t as WorkflowEditLeaseStatusDocument } from "./WorkflowEditLeaseStatusDocument-Dp62med3.js";
20
20
  import { c as RunLogAppendedDocument, l as RunLogsDocument } from "./agent-form-D0uLvzx4.js";
21
21
  import { C as CreateWorkflowTestCaseFromRunDocument, D as AgentTokenDeltaDocument, E as CreateWorkflowTestCaseDocument, S as RunWorkflowTestsDocument, T as UpdateWorkflowTestCaseDocument, b as WorkflowTestRunDocument, w as DeleteWorkflowTestCaseDocument, x as WorkflowTestCasesDocument, y as WorkflowTestRunsDocument } from "./use-workflow-tests-Dkij09vJ.js";
@@ -5254,7 +5254,7 @@ const FluidgridsAvailableTagFieldsFragmentDoc = {
5254
5254
  const WorkflowsList$1 = lazy(() => import("./WorkflowsList-4VADoiz_.js").then((n) => n.n).then((m) => ({ default: m.WorkflowsList })));
5255
5255
  const WorkflowBuilder$2 = lazy(() => import("./WorkflowBuilder-DkzzbrNn.js").then((n) => n.n).then((m) => ({ default: m.WorkflowBuilder })));
5256
5256
  const ExecutionsListPage$1 = lazy(() => import("./ExecutionsListPage-Ky3TAL9U.js").then((n) => n.n).then((m) => ({ default: m.ExecutionsListPage })));
5257
- const ExecutionDetailPage$1 = lazy(() => import("./ExecutionDetailPage-BbvY2bcb.js").then((n) => n.n).then((m) => ({ default: m.ExecutionDetailPage })));
5257
+ const ExecutionDetailPage$1 = lazy(() => import("./ExecutionDetailPage-heD4wBjg.js").then((n) => n.n).then((m) => ({ default: m.ExecutionDetailPage })));
5258
5258
  const PageLoader = () => /* @__PURE__ */ jsx("div", {
5259
5259
  className: "flex items-center justify-center h-64",
5260
5260
  children: /* @__PURE__ */ jsx("div", { className: "animate-spin rounded-full h-8 w-8 border-b-2 border-primary" })
@@ -1,8 +1,8 @@
1
1
 
2
2
  import { n as WorkflowsList_d_exports } from "./WorkflowsList-CcNDQge5.js";
3
- import { Da as VariablesPage_d_exports, Pi as ApprovalInboxPage_d_exports, QRa as InsightsPage_d_exports, Wi as TaskQueuesPage_d_exports, ZRa as InsightsPageProps, bza as AiStudioPage_d_exports, di as DataTablesPage_d_exports, eza as DataSinkDashboardPage_d_exports, ra as RunnersPage_d_exports } from "./index-BY0V255h.js";
4
3
  import { a as WorkflowSearchRedirect_d_exports, o as WorkflowBuilder } from "./index-RWAuYE2j.js";
5
4
  import { i as TemplatePreview_d_exports, n as TemplatesPage_d_exports } from "./TemplatesPage-BG3H-6v6.js";
5
+ import { Da as VariablesPage_d_exports, Pi as ApprovalInboxPage_d_exports, QRa as InsightsPage_d_exports, Wi as TaskQueuesPage_d_exports, ZRa as InsightsPageProps, bza as AiStudioPage_d_exports, di as DataTablesPage_d_exports, eza as DataSinkDashboardPage_d_exports, ra as RunnersPage_d_exports } from "./index-BY0V255h.js";
6
6
  import { i as ExecutionsListPage_d_exports, n as ExecutionDetailPage_d_exports } from "./ExecutionDetailPage-DvQ667OE.js";
7
7
  import { n as HistoryPage_d_exports } from "./HistoryPage-BLoRpJ1R.js";
8
8
  import { n as NodesPage_d_exports } from "./NodesPage-DEbnz9iU.js";
@@ -60,7 +60,7 @@ const pages = createWorkflowPages({
60
60
  TemplatePreview: () => import("./TemplatePreview-DwdGa8bH.js").then((n) => n.n),
61
61
  AiStudioPage: () => import("./AiStudioPage-C2SBRqab.js").then((n) => n.n),
62
62
  ExecutionsListPage: () => import("./ExecutionsListPage-Ky3TAL9U.js").then((n) => n.n),
63
- ExecutionDetailPage: () => import("./ExecutionDetailPage-BbvY2bcb.js").then((n) => n.n),
63
+ ExecutionDetailPage: () => import("./ExecutionDetailPage-heD4wBjg.js").then((n) => n.n),
64
64
  HistoryPage: () => import("./HistoryPage-D4rkw4zu.js").then((n) => n.n),
65
65
  TemplatesPage: () => import("./TemplatesPage-DF5PK7CB.js").then((n) => n.n),
66
66
  NodesPage: () => import("./NodesPage-C3sh0aL9.js").then((n) => n.n),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burdenoff/fluidgrids-fe-sdk",
3
- "version": "2026.1114.4",
3
+ "version": "2026.1114.5",
4
4
  "description": "FluidGrids Workflow Builder SDK - Embeddable visual workflow automation",
5
5
  "type": "module",
6
6
  "imports": {