@burdenoff/microfe-workflows 2026.1021.1 → 2026.1022.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.
package/README.md CHANGED
@@ -52,15 +52,27 @@ Routes are relative to `basePath`:
52
52
  - `workflow/:id/:version`: existing workflow builder
53
53
  - `runs` and `runs/:runId`: current user's product-scoped runs
54
54
  - `insights`, `templates`, `nodes`, `settings`: shared SDK pages
55
+ - any unknown path redirects to `list`
55
56
 
56
57
  Product-specific bot or application bindings use the workspace gateway and
57
58
  navigate to these routes; they do not own SDK configuration.
58
59
 
59
60
  ## Development
60
61
 
61
- Run `bun install` and `bun run sanity` to validate lint, formatting, types and the
62
- published library build. GraphQL operations are owned by the SDK; this wrapper
63
- has no separate generated operation layer.
62
+ Run `bun install` and `bun run sanity` to validate lint, formatting, types, unit
63
+ tests and the published library build. GraphQL operations are owned by the SDK;
64
+ this wrapper has no separate generated operation layer, so it carries no schema
65
+ snapshot.
66
+
67
+ `bun run test` runs the bun unit suite under `src/` (happy-dom, see
68
+ `src/test-support/`): the route table and its permission gates, nav and footer
69
+ registration, the provider session boundary, the translation hook, and a check
70
+ that every `tr(key, fallback)` call has its key in `src/translations/en.ts`. The
71
+ same suite gates the PR check and the publish workflow.
72
+
73
+ React Doctor runs on every pull request (`.github/workflows/react-doctor.yml`,
74
+ config in `doctor.config.json`, reviewed findings in
75
+ `.react-doctor/false-positives.md`). Locally: `npx -y react-doctor@latest . --verbose`.
64
76
 
65
77
  The complete reusable guide is in the dev repository:
66
78
  `platform/context/automation/fluidgrids/HOW_TO_INTEGRATE_FLUIDGRIDS.md`.
@@ -5,9 +5,9 @@ import { AccessDenied as r, PermissionGate as i } from "@burdenoff/fe-libs/share
5
5
  import { GlassCard as a } from "@burdenoff/fe-libs/ui";
6
6
  import { ApprovalInboxPage as o, DataSinkDashboardPage as s, DataTablesPage as c, ErrorAnalyticsPage as l, ExecutionDetailPage as u, ExecutionsListPage as d, HistoryPage as f, InsightsPage as p, NodesPage as m, RunnersPage as h, SettingsPage as g, TemplatePreview as _, TemplatesPage as v, VariablesPage as y, WorkflowBuilderPage as b, WorkflowSearchRedirect as x, WorkflowsList as S } from "@burdenoff/fluidgrids-fe-sdk";
7
7
  import { jsx as C, jsxs as w } from "react/jsx-runtime";
8
- import { Navigate as T, Route as E, Routes as D, useParams as O } from "react-router";
8
+ import { Navigate as T, Route as E, Routes as D, useLocation as O, useParams as k } from "react-router";
9
9
  //#region src/WorkflowsRoutes.tsx
10
- function k() {
10
+ function A() {
11
11
  let t = e();
12
12
  return /* @__PURE__ */ w("div", {
13
13
  className: "mx-auto flex w-full max-w-6xl flex-col gap-6 px-4 py-6 sm:px-6",
@@ -55,16 +55,23 @@ function k() {
55
55
  ]
56
56
  });
57
57
  }
58
- function A() {
59
- let { runId: e } = O();
58
+ function j() {
59
+ let { runId: e } = k();
60
60
  return /* @__PURE__ */ C(T, {
61
61
  to: `../runs/${e}`,
62
62
  replace: !0
63
63
  });
64
64
  }
65
- function j() {
65
+ function M() {
66
+ let { pathname: e } = O(), t = k()["*"] ?? "", n = t && e.endsWith(t) ? e.slice(0, -t.length) : e;
67
+ return /* @__PURE__ */ C(T, {
68
+ to: `${n.endsWith("/") ? n : `${n}/`}list`,
69
+ replace: !0
70
+ });
71
+ }
72
+ function N() {
66
73
  return /* @__PURE__ */ C(n, {
67
- fallback: /* @__PURE__ */ C(k, {}),
74
+ fallback: /* @__PURE__ */ C(A, {}),
68
75
  children: /* @__PURE__ */ w(D, { children: [
69
76
  /* @__PURE__ */ C(E, {
70
77
  index: !0,
@@ -189,7 +196,7 @@ function j() {
189
196
  }),
190
197
  /* @__PURE__ */ C(E, {
191
198
  path: "executions/:runId",
192
- element: /* @__PURE__ */ C(A, {})
199
+ element: /* @__PURE__ */ C(j, {})
193
200
  }),
194
201
  /* @__PURE__ */ C(E, {
195
202
  path: "credentials",
@@ -207,13 +214,10 @@ function j() {
207
214
  }),
208
215
  /* @__PURE__ */ C(E, {
209
216
  path: "*",
210
- element: /* @__PURE__ */ C(T, {
211
- to: "list",
212
- replace: !0
213
- })
217
+ element: /* @__PURE__ */ C(M, {})
214
218
  })
215
219
  ] })
216
220
  });
217
221
  }
218
222
  //#endregion
219
- export { j as WorkflowsRoutes };
223
+ export { N as WorkflowsRoutes };
@@ -5,9 +5,14 @@ var e = { workflows: {
5
5
  myWorkflows: "My Workflows",
6
6
  builder: "Builder",
7
7
  runs: "Runs",
8
+ insights: "Insights",
9
+ dataSinks: "DataSinks",
10
+ dataTables: "Data Tables",
8
11
  history: "History",
9
12
  templates: "Templates",
10
13
  nodes: "Nodes",
14
+ variables: "Variables",
15
+ runners: "Runners",
11
16
  settings: "Settings"
12
17
  },
13
18
  footer: { status: "Workflows Ready" },
package/dist/workflows.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { config as e, resetWorkflowsConfig as t, setWorkflowsConfig as n } from "./config/index.js";
2
2
  import { WorkflowsRoot as r } from "./WorkflowsRoot.js";
3
3
  import { enTranslations as i } from "./translations/en.js";
4
- import { ExecutionDetailPage as a, ExecutionsListPage as o, FluidGridsProvider as s, FluidGridsRoot as c, HistoryPage as l, NodesPage as u, SettingsPage as d, TemplatePreview as f, TemplatesPage as p, WorkflowBuilder as m, WorkflowBuilderCore as h, WorkflowBuilderPage as g, WorkflowSearchRedirect as _, WorkflowsList as v, cn as y, createFluidGridsClient as b, fetchAllNodesWithManifests as x, getFluidGridsClient as S, getFluidGridsClient as C, getFluidGridsClientSafe as w, isFluidGridsClientReady as T, resetFluidGridsClient as E, setFluidGridsClient as D, setFluidGridsClient as O, setFluidGridsConfig as k, useCreateWorkflow as A, useCreateWorkflowVersion as j, useDashboardSummary as M, useDeleteWorkflow as N, useDuplicateWorkflow as P, useFlowStore as F, useFluidGridsContext as I, useLazyNodeManifest as L, useLazyWorkflowDefinition as R, useNodeEndpoint as z, useNodeEndpoints as B, useNodeManifest as V, useTriggerWorkflow as H, useUpdateWorkflow as U, useWorkflowDefinition as W, useWorkflowDefinitions as G, useWorkflowRun as K, useWorkflowRuns as q, useWorkflowVersions as J, waitForFluidGridsClient as Y } from "@burdenoff/fluidgrids-fe-sdk";
5
- export { m as EmbeddableWorkflowBuilder, h as EmbeddableWorkflowBuilderCore, s as EmbeddableWorkflowProvider, c as EmbeddableWorkflowRoot, a as ExecutionDetailPage, o as ExecutionsListPage, l as HistoryPage, u as NodesPage, d as SettingsPage, f as TemplatePreview, p as TemplatesPage, g as WorkflowBuilderPage, _ as WorkflowSearchRedirect, v as WorkflowsList, r as WorkflowsRoot, y as cn, e as config, b as createEmbeddableClient, i as enTranslations, x as fetchAllNodesWithManifests, C as getEmbeddableClient, S as getFluidGridsClient, w as getFluidGridsClientSafe, T as isFluidGridsClientReady, E as resetFluidGridsClient, t as resetWorkflowsConfig, O as setEmbeddableClient, k as setEmbeddableConfig, D as setFluidGridsClient, n as setWorkflowsConfig, A as useCreateWorkflow, j as useCreateWorkflowVersion, M as useDashboardSummary, N as useDeleteWorkflow, P as useDuplicateWorkflow, I as useEmbeddableContext, F as useEmbeddableFlowStore, L as useLazyNodeManifest, R as useLazyWorkflowDefinition, z as useNodeEndpoint, B as useNodeEndpoints, V as useNodeManifest, H as useTriggerWorkflow, U as useUpdateWorkflow, W as useWorkflowDefinition, G as useWorkflowDefinitions, K as useWorkflowRun, q as useWorkflowRuns, J as useWorkflowVersions, Y as waitForFluidGridsClient };
4
+ import { ExecutionDetailPage as a, ExecutionsListPage as o, FLUIDGRIDS_FLAGS as s, FluidGridsProvider as c, FluidGridsRoot as l, HistoryPage as u, NodesPage as d, SettingsPage as f, TemplatePreview as p, TemplatesPage as m, WorkflowBuilder as h, WorkflowBuilderCore as g, WorkflowBuilderPage as _, WorkflowSearchRedirect as v, WorkflowsList as y, cn as b, createFluidGridsClient as x, fetchAllNodesWithManifests as S, getFluidGridsClient as C, getFluidGridsClient as w, getFluidGridsClientSafe as T, isFluidGridsClientReady as E, resetFluidGridsClient as D, setFluidGridsClient as O, setFluidGridsClient as k, setFluidGridsConfig as A, useCreateWorkflow as j, useCreateWorkflowVersion as M, useDashboardSummary as N, useDeleteWorkflow as P, useDuplicateWorkflow as F, useFlowStore as I, useFluidGridsContext as L, useFluidGridsFlag as R, useLazyNodeManifest as z, useLazyWorkflowDefinition as B, useNodeEndpoint as V, useNodeEndpoints as H, useNodeManifest as U, useTriggerWorkflow as W, useUpdateWorkflow as G, useWorkflowDefinition as K, useWorkflowDefinitions as q, useWorkflowRun as J, useWorkflowRuns as Y, useWorkflowVersions as X, waitForFluidGridsClient as Z } from "@burdenoff/fluidgrids-fe-sdk";
5
+ export { h as EmbeddableWorkflowBuilder, g as EmbeddableWorkflowBuilderCore, c as EmbeddableWorkflowProvider, l as EmbeddableWorkflowRoot, a as ExecutionDetailPage, o as ExecutionsListPage, s as FLUIDGRIDS_FLAGS, u as HistoryPage, d as NodesPage, f as SettingsPage, p as TemplatePreview, m as TemplatesPage, _ as WorkflowBuilderPage, v as WorkflowSearchRedirect, y as WorkflowsList, r as WorkflowsRoot, b as cn, e as config, x as createEmbeddableClient, i as enTranslations, S as fetchAllNodesWithManifests, w as getEmbeddableClient, C as getFluidGridsClient, T as getFluidGridsClientSafe, E as isFluidGridsClientReady, D as resetFluidGridsClient, t as resetWorkflowsConfig, k as setEmbeddableClient, A as setEmbeddableConfig, O as setFluidGridsClient, n as setWorkflowsConfig, j as useCreateWorkflow, M as useCreateWorkflowVersion, N as useDashboardSummary, P as useDeleteWorkflow, F as useDuplicateWorkflow, L as useEmbeddableContext, I as useEmbeddableFlowStore, R as useFluidGridsFlag, z as useLazyNodeManifest, B as useLazyWorkflowDefinition, V as useNodeEndpoint, H as useNodeEndpoints, U as useNodeManifest, W as useTriggerWorkflow, G as useUpdateWorkflow, K as useWorkflowDefinition, q as useWorkflowDefinitions, J as useWorkflowRun, Y as useWorkflowRuns, X as useWorkflowVersions, Z as waitForFluidGridsClient };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burdenoff/microfe-workflows",
3
- "version": "2026.1021.1",
3
+ "version": "2026.1022.2",
4
4
  "description": "Workflows microfrontend for Burdenoff products - thin shell over @burdenoff/fluidgrids-fe-sdk",
5
5
  "type": "module",
6
6
  "exports": {
@@ -16,7 +16,8 @@
16
16
  "lint:sanity": "if [ \"${CI:-}\" = \"true\" ]; then bun run lint; else bun run lint -- --cache --cache-location .eslintcache; fi",
17
17
  "format": "prettier --write \"src/**/*.{ts,tsx}\"",
18
18
  "type:check": "bash scripts/build-limits.sh tsc --noEmit",
19
- "sanity": "bash scripts/build-limits.sh --gate bash -c 'bun run codegen && bun run lint:sanity && bun run format && bun run build'",
19
+ "test": "bun test ./src",
20
+ "sanity": "bash scripts/build-limits.sh --gate bash -c 'bun run codegen && bun run lint:sanity && bun run format && bun run type:check && bun run test && bun run build'",
20
21
  "schema:pull": "echo \"No GraphQL operations — skipping schema:pull\"",
21
22
  "codegen": "echo \"No GraphQL operations — skipping codegen\"",
22
23
  "codegen:all": "echo \"No GraphQL operations — skipping codegen:all\"",
@@ -28,15 +29,16 @@
28
29
  "format:check": "prettier --check \"src/**/*.{ts,tsx}\""
29
30
  },
30
31
  "dependencies": {
31
- "@burdenoff/fe-libs": "2026.1021.14",
32
+ "@burdenoff/fe-libs": "2026.1021.15",
32
33
  "lucide-react": "^0.468.0",
33
34
  "react": "^19.0.0",
34
35
  "react-dom": "^19.0.0",
35
36
  "react-router": "^8.3.0"
36
37
  },
37
38
  "devDependencies": {
38
- "@burdenoff/fluidgrids-fe-sdk": "2026.1021.7",
39
+ "@burdenoff/fluidgrids-fe-sdk": "2026.1021.11",
39
40
  "@eslint/js": "^9.39.2",
41
+ "@types/bun": "^1.3.9",
40
42
  "@types/react": "^19.0.2",
41
43
  "@types/react-dom": "^19.0.2",
42
44
  "@vitejs/plugin-react": "^4.3.4",
@@ -45,6 +47,7 @@
45
47
  "eslint-plugin-react": "^7.37.5",
46
48
  "eslint-plugin-react-hooks": "^7.0.1",
47
49
  "globals": "^17.3.0",
50
+ "happy-dom": "20.14.5",
48
51
  "lefthook": "^2.1.1",
49
52
  "postcss": "^8.4.49",
50
53
  "prettier": "^3.4.2",
@@ -55,7 +58,7 @@
55
58
  "vite-plugin-dts": "3.9.1"
56
59
  },
57
60
  "peerDependencies": {
58
- "@burdenoff/fluidgrids-fe-sdk": "2026.1021.7",
61
+ "@burdenoff/fluidgrids-fe-sdk": "2026.1021.11",
59
62
  "react": "^19.0.0",
60
63
  "react-dom": "^19.0.0"
61
64
  },