From 1988b1920335c5f7f7466ac0d85e9bb27a47b5c4 Mon Sep 17 00:00:00 2001 From: Dawid Aksamski Date: Fri, 11 Sep 2026 16:16:39 +0200 Subject: [PATCH 01/22] chore(examples): scaffold the Temporal Code Exchange sample --- examples/workflow-builder-temporal/.gitignore | 6 + examples/workflow-builder-temporal/LICENSE | 201 ++++++++++++++++++ .../lint-staged.config.mjs | 7 + .../workflow-builder-temporal/package.json | 29 +++ .../workflow-builder-temporal/src/config.ts | 14 ++ .../workflow-builder-temporal/tsconfig.json | 18 ++ 6 files changed, 275 insertions(+) create mode 100644 examples/workflow-builder-temporal/.gitignore create mode 100644 examples/workflow-builder-temporal/LICENSE create mode 100644 examples/workflow-builder-temporal/lint-staged.config.mjs create mode 100644 examples/workflow-builder-temporal/package.json create mode 100644 examples/workflow-builder-temporal/src/config.ts create mode 100644 examples/workflow-builder-temporal/tsconfig.json diff --git a/examples/workflow-builder-temporal/.gitignore b/examples/workflow-builder-temporal/.gitignore new file mode 100644 index 000000000..aea3b07c9 --- /dev/null +++ b/examples/workflow-builder-temporal/.gitignore @@ -0,0 +1,6 @@ +node_modules +dist +*.local +*.tgz +# Cannot be generated against npm until @workflowbuilder/temporal is published; removed in the publish task. +/package-lock.json diff --git a/examples/workflow-builder-temporal/LICENSE b/examples/workflow-builder-temporal/LICENSE new file mode 100644 index 000000000..df87dddbb --- /dev/null +++ b/examples/workflow-builder-temporal/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright 2025-2026 Synergia Pro Sp. z o.o. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/examples/workflow-builder-temporal/lint-staged.config.mjs b/examples/workflow-builder-temporal/lint-staged.config.mjs new file mode 100644 index 000000000..c565d24b7 --- /dev/null +++ b/examples/workflow-builder-temporal/lint-staged.config.mjs @@ -0,0 +1,7 @@ +/** + * @type {import('lint-staged').Configuration} + */ +export default { + '*.{ts,tsx,js,json,css,astro,md,mdx}': (files) => `prettier --write --log-level=silent ${files.join(' ')}`, + '*.{ts,tsx}': [(files) => `eslint --max-warnings=0 --fix ${files.join(' ')}`, () => `tsc --noEmit`], +}; diff --git a/examples/workflow-builder-temporal/package.json b/examples/workflow-builder-temporal/package.json new file mode 100644 index 000000000..f9ffcc9ca --- /dev/null +++ b/examples/workflow-builder-temporal/package.json @@ -0,0 +1,29 @@ +{ + "name": "workflow-builder-temporal-sample", + "private": true, + "version": "0.0.0", + "type": "module", + "description": "Run a diagram drawn in the Workflow Builder editor as a durable Temporal Workflow Execution.", + "license": "Apache-2.0", + "engines": { + "node": ">=20" + }, + "scripts": { + "start": "tsx src/worker.ts", + "start.watch": "tsx watch src/worker.ts", + "workflow": "tsx src/client.ts", + "test": "tsx --test src/*.test.ts", + "typecheck": "tsc --noEmit" + }, + "dependencies": { + "@temporalio/activity": "1.23.0", + "@temporalio/client": "1.23.0", + "@temporalio/worker": "1.23.0", + "@workflowbuilder/temporal": "^0.1.0" + }, + "devDependencies": { + "@types/node": "^22.12.0", + "tsx": "^4.19.0", + "typescript": "~5.6.3" + } +} diff --git a/examples/workflow-builder-temporal/src/config.ts b/examples/workflow-builder-temporal/src/config.ts new file mode 100644 index 000000000..5f7116f6a --- /dev/null +++ b/examples/workflow-builder-temporal/src/config.ts @@ -0,0 +1,14 @@ +import { executionWorkflowId } from '@workflowbuilder/temporal'; + +export const TEMPORAL_ADDRESS = process.env.TEMPORAL_ADDRESS ?? '127.0.0.1:7233'; +export const TEMPORAL_NAMESPACE = process.env.TEMPORAL_NAMESPACE ?? 'default'; +export const TEMPORAL_UI_ORIGIN = process.env.TEMPORAL_UI_ORIGIN ?? 'http://localhost:8233'; +export const BRIDGE_PORT = Number(process.env.BRIDGE_PORT ?? 3210); + +// The Workflow Builder workflow (the diagram) this sample runs. Not a Temporal Workflow Id: +// those are derived per run by `executionWorkflowId`. +export const WORKFLOW_ID = 'workflow-builder-temporal-sample'; + +export function temporalUiUrl(executionId: string): string { + return `${TEMPORAL_UI_ORIGIN}/namespaces/${TEMPORAL_NAMESPACE}/workflows/${executionWorkflowId(executionId)}`; +} diff --git a/examples/workflow-builder-temporal/tsconfig.json b/examples/workflow-builder-temporal/tsconfig.json new file mode 100644 index 000000000..152c5d2d8 --- /dev/null +++ b/examples/workflow-builder-temporal/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "target": "ES2022", + "lib": ["ES2022"], + "module": "ESNext", + "moduleResolution": "bundler", + "types": ["node"], + "strict": true, + "skipLibCheck": true, + "esModuleInterop": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "noUnusedLocals": true, + "noUnusedParameters": true + }, + "include": ["src"] +} From 00b39fdd40fadf12cc09528e5d0c5d01a6c0a60e Mon Sep 17 00:00:00 2001 From: Dawid Aksamski Date: Fri, 11 Sep 2026 16:24:03 +0200 Subject: [PATCH 02/22] feat(examples): map an editor snapshot to a workflow definition --- .../workflow-builder-temporal/src/nodes.ts | 17 +++++ .../workflow-builder-temporal/src/protocol.ts | 35 ++++++++++ .../src/to-definition.test.ts | 64 +++++++++++++++++++ .../src/to-definition.ts | 47 ++++++++++++++ 4 files changed, 163 insertions(+) create mode 100644 examples/workflow-builder-temporal/src/nodes.ts create mode 100644 examples/workflow-builder-temporal/src/protocol.ts create mode 100644 examples/workflow-builder-temporal/src/to-definition.test.ts create mode 100644 examples/workflow-builder-temporal/src/to-definition.ts diff --git a/examples/workflow-builder-temporal/src/nodes.ts b/examples/workflow-builder-temporal/src/nodes.ts new file mode 100644 index 000000000..458764be7 --- /dev/null +++ b/examples/workflow-builder-temporal/src/nodes.ts @@ -0,0 +1,17 @@ +import type { BaseNode } from '@workflowbuilder/temporal'; + +// One variant per palette item in the editor. `config` is what the properties panel +// saved, minus the label, which the mapper lifts onto the node itself. +type SharedConfig = { description?: string; status?: string }; + +export type TriggerNode = BaseNode & { type: 'trigger'; config: SharedConfig }; +export type ActionNode = BaseNode & { type: 'action'; config: SharedConfig & { message?: string } }; +export type ConditionNode = BaseNode & { type: 'condition'; config: SharedConfig & { condition?: string } }; + +export type SampleNode = TriggerNode | ActionNode | ConditionNode; + +export const SAMPLE_NODE_TYPES = ['trigger', 'action', 'condition'] as const satisfies readonly SampleNode['type'][]; + +export function isSampleNodeType(type: string): type is SampleNode['type'] { + return (SAMPLE_NODE_TYPES as readonly string[]).includes(type); +} diff --git a/examples/workflow-builder-temporal/src/protocol.ts b/examples/workflow-builder-temporal/src/protocol.ts new file mode 100644 index 000000000..f3520cbd0 --- /dev/null +++ b/examples/workflow-builder-temporal/src/protocol.ts @@ -0,0 +1,35 @@ +// Shared with the editor through type-only imports, so nothing here reaches a bundle. + +export type SnapshotNode = { + id: string; + data: { + type: string; + isStartNode?: boolean; + properties?: Record; + }; +}; + +export type SnapshotEdge = { + id: string; + source: string; + target: string; + sourceHandle?: string | null; +}; + +export type DiagramSnapshot = { + nodes: SnapshotNode[]; + edges: SnapshotEdge[]; +}; + +export type RunRequest = DiagramSnapshot & { + triggerPayload?: Record; +}; + +export type RunResponse = { + executionId: string; + temporalUiUrl: string; +}; + +export type RunEvent = + | { kind: 'event'; sequence: number; type: string; nodeId?: string; payload?: unknown } + | { kind: 'status'; status: string; errorMessage?: string }; diff --git a/examples/workflow-builder-temporal/src/to-definition.test.ts b/examples/workflow-builder-temporal/src/to-definition.test.ts new file mode 100644 index 000000000..71d29658a --- /dev/null +++ b/examples/workflow-builder-temporal/src/to-definition.test.ts @@ -0,0 +1,64 @@ +import assert from 'node:assert/strict'; +import { test } from 'node:test'; + +import type { DiagramSnapshot } from './protocol'; +import { snapshotToDefinition } from './to-definition'; + +const snapshot: DiagramSnapshot = { + nodes: [ + { id: 'trigger-1', data: { type: 'trigger', properties: { label: ' New request ', description: 'Entry point' } } }, + { id: 'action-1', data: { type: 'action', properties: { label: 'Send email', message: 'Hi' } } }, + ], + edges: [{ id: 'e1', source: 'trigger-1', target: 'action-1', sourceHandle: 'source' }], +}; + +test('marks the trigger as the start node when no node carries the flag', () => { + const definition = snapshotToDefinition(snapshot, 'wf'); + assert.equal(definition.workflowId, 'wf'); + assert.equal(definition.nodes[0].role, 'start'); + assert.equal(definition.nodes[1].role, undefined); +}); + +test('prefers the isStartNode flag over the trigger type when any node carries it', () => { + const flagged: DiagramSnapshot = { + nodes: [ + { id: 'trigger-1', data: { type: 'trigger', properties: {} } }, + { id: 'action-1', data: { type: 'action', isStartNode: true, properties: {} } }, + ], + edges: [], + }; + const definition = snapshotToDefinition(flagged, 'wf'); + assert.equal(definition.nodes[0].role, undefined); + assert.equal(definition.nodes[1].role, 'start'); +}); + +test('lifts a trimmed label out of the properties and keeps the rest as config', () => { + const [trigger, action] = snapshotToDefinition(snapshot, 'wf').nodes; + assert.equal(trigger.label, 'New request'); + assert.deepEqual(trigger.config, { description: 'Entry point' }); + assert.equal(action.label, 'Send email'); + assert.deepEqual(action.config, { message: 'Hi' }); +}); + +test('maps edges to sourceNodeId and targetNodeId and keeps the handle', () => { + const [edge] = snapshotToDefinition(snapshot, 'wf').edges; + assert.deepEqual(edge, { id: 'e1', sourceNodeId: 'trigger-1', targetNodeId: 'action-1', sourceHandle: 'source' }); +}); + +test('drops a null handle instead of carrying it', () => { + const [edge] = snapshotToDefinition( + { nodes: snapshot.nodes, edges: [{ id: 'e1', source: 'trigger-1', target: 'action-1', sourceHandle: null }] }, + 'wf', + ).edges; + assert.equal('sourceHandle' in edge, false); +}); + +test('rejects a node type the worker has no executor for', () => { + const unknown: DiagramSnapshot = { nodes: [{ id: 'x', data: { type: 'mystery' } }], edges: [] }; + assert.throws(() => snapshotToDefinition(unknown, 'wf'), /Unknown node type "mystery"/); +}); + +test('rejects a diagram with no start node', () => { + const noStart: DiagramSnapshot = { nodes: [{ id: 'a', data: { type: 'action' } }], edges: [] }; + assert.throws(() => snapshotToDefinition(noStart, 'wf'), /no start node/); +}); diff --git a/examples/workflow-builder-temporal/src/to-definition.ts b/examples/workflow-builder-temporal/src/to-definition.ts new file mode 100644 index 000000000..80a8bb0a9 --- /dev/null +++ b/examples/workflow-builder-temporal/src/to-definition.ts @@ -0,0 +1,47 @@ +import type { WorkflowDefinition, WorkflowEdgeDefinition } from '@workflowbuilder/temporal'; + +import { SAMPLE_NODE_TYPES, type SampleNode, isSampleNodeType } from './nodes'; +import type { DiagramSnapshot, SnapshotEdge, SnapshotNode } from './protocol'; + +// The editor's snapshot is React Flow data; the plugin wants `{ id, type, config }` per node +// and `{ sourceNodeId, targetNodeId }` per edge. This is the only glue in the sample. +export function snapshotToDefinition(snapshot: DiagramSnapshot, workflowId: string): WorkflowDefinition { + // Newer editors stamp `isStartNode` on the entry node. The 2.3.0 editor this sample ships + // does not, so the trigger type stands in when no node carries the flag. + const flagged = snapshot.nodes.some((node) => node.data.isStartNode === true); + const isStart = (node: SnapshotNode) => (flagged ? node.data.isStartNode === true : node.data.type === 'trigger'); + + const nodes = snapshot.nodes.map((node) => toNode(node, isStart(node))); + if (!nodes.some((node) => node.role === 'start')) { + throw new Error('The diagram has no start node. Add a trigger node, or flag one node with isStartNode.'); + } + + return { workflowId, nodes, edges: snapshot.edges.map(toEdge) }; +} + +function toNode(node: SnapshotNode, isStart: boolean): SampleNode { + const { type } = node.data; + if (!isSampleNodeType(type)) { + throw new Error(`Unknown node type "${type}". This worker has executors for: ${SAMPLE_NODE_TYPES.join(', ')}.`); + } + + const { label, ...config } = node.data.properties ?? {}; + return { + id: node.id, + type, + config, + ...(typeof label === 'string' && label.trim() !== '' ? { label: label.trim() } : {}), + ...(isStart ? { role: 'start' as const } : {}), + } as SampleNode; +} + +function toEdge(edge: SnapshotEdge): WorkflowEdgeDefinition { + return { + id: edge.id, + sourceNodeId: edge.source, + targetNodeId: edge.target, + // The editor names its default output handle "source". The runner consults handles only + // when a node names a port, so for these nodes the handle is carried, never read. + ...(edge.sourceHandle ? { sourceHandle: edge.sourceHandle } : {}), + }; +} From c5ecadac07d3cee286e12dd88b306e9ee8a68718 Mon Sep 17 00:00:00 2001 From: Dawid Aksamski Date: Fri, 11 Sep 2026 16:30:32 +0200 Subject: [PATCH 03/22] feat(examples): evaluate the condition node's expression --- .../src/evaluate-condition.test.ts | 29 +++++++++++ .../src/evaluate-condition.ts | 50 +++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 examples/workflow-builder-temporal/src/evaluate-condition.test.ts create mode 100644 examples/workflow-builder-temporal/src/evaluate-condition.ts diff --git a/examples/workflow-builder-temporal/src/evaluate-condition.test.ts b/examples/workflow-builder-temporal/src/evaluate-condition.test.ts new file mode 100644 index 000000000..0367d742c --- /dev/null +++ b/examples/workflow-builder-temporal/src/evaluate-condition.test.ts @@ -0,0 +1,29 @@ +import { PermanentNodeExecutionError } from '@workflowbuilder/temporal'; +import assert from 'node:assert/strict'; +import { test } from 'node:test'; + +import { evaluateCondition } from './evaluate-condition'; + +test('compares numbers', () => { + assert.equal(evaluateCondition('amount > 100', { amount: 250 }), true); + assert.equal(evaluateCondition('amount > 100', { amount: 50 }), false); + assert.equal(evaluateCondition('amount >= 100', { amount: 100 }), true); + assert.equal(evaluateCondition('amount < 100', { amount: 100 }), false); + assert.equal(evaluateCondition('amount <= 100', { amount: 100 }), true); +}); + +test('compares with == and != using the literal as written, quotes stripped', () => { + assert.equal(evaluateCondition('customer == "Ada"', { customer: 'Ada' }), true); + assert.equal(evaluateCondition("customer != 'Ada'", { customer: 'Bob' }), true); + assert.equal(evaluateCondition('amount == 250', { amount: 250 }), true); +}); + +test('a missing field never satisfies a numeric comparison', () => { + assert.equal(evaluateCondition('amount > 100', {}), false); + assert.equal(evaluateCondition('amount < 100', {}), false); +}); + +test('rejects an expression it cannot read as a permanent error', () => { + assert.throws(() => evaluateCondition('amount is big', { amount: 1 }), PermanentNodeExecutionError); + assert.throws(() => evaluateCondition('', {}), /Cannot read condition ""/); +}); diff --git a/examples/workflow-builder-temporal/src/evaluate-condition.ts b/examples/workflow-builder-temporal/src/evaluate-condition.ts new file mode 100644 index 000000000..fc2a4928d --- /dev/null +++ b/examples/workflow-builder-temporal/src/evaluate-condition.ts @@ -0,0 +1,50 @@ +import { PermanentNodeExecutionError } from '@workflowbuilder/temporal'; + +const EXPRESSION = /^\s*([A-Za-z_][\w.]*)\s*(>=|<=|!=|==|>|<)\s*(.+?)\s*$/; + +// Deliberately tiny: one field of the trigger payload, one operator, one literal. A condition +// this parser rejects is a permanent error, which Temporal does not retry: no later attempt +// would read the text differently. +export function evaluateCondition(expression: string, payload: Record): boolean { + const match = EXPRESSION.exec(expression); + if (!match) { + throw new PermanentNodeExecutionError( + 'condition_invalid', + `Cannot read condition "${expression}". Expected " ", for example "amount > 100".`, + ); + } + + const left = payload[match[1]]; + const operator = match[2]; + const right = literal(match[3]); + + switch (operator) { + case '>': { + return Number(left) > Number(right); + } + case '>=': { + return Number(left) >= Number(right); + } + case '<': { + return Number(left) < Number(right); + } + case '<=': { + return Number(left) <= Number(right); + } + case '==': { + return String(left) === String(right); + } + case '!=': { + return String(left) !== String(right); + } + default: { + throw new PermanentNodeExecutionError('condition_invalid', `Unsupported operator "${operator}".`); + } + } +} + +function literal(raw: string): string | number { + const unquoted = raw.replace(/^(['"])(.*)\1$/, '$2'); + const asNumber = Number(unquoted); + return unquoted !== '' && !Number.isNaN(asNumber) ? asNumber : unquoted; +} From 37c91d75b2873e26205f166ec7be2938ca32b90e Mon Sep 17 00:00:00 2001 From: Dawid Aksamski Date: Fri, 11 Sep 2026 16:38:23 +0200 Subject: [PATCH 04/22] feat(examples): executors and a console store for the Temporal sample --- .../src/executors.ts | 28 +++++++++ .../src/store.test.ts | 53 ++++++++++++++++ .../workflow-builder-temporal/src/store.ts | 61 +++++++++++++++++++ 3 files changed, 142 insertions(+) create mode 100644 examples/workflow-builder-temporal/src/executors.ts create mode 100644 examples/workflow-builder-temporal/src/store.test.ts create mode 100644 examples/workflow-builder-temporal/src/store.ts diff --git a/examples/workflow-builder-temporal/src/executors.ts b/examples/workflow-builder-temporal/src/executors.ts new file mode 100644 index 000000000..109edbc05 --- /dev/null +++ b/examples/workflow-builder-temporal/src/executors.ts @@ -0,0 +1,28 @@ +import { Context } from '@temporalio/activity'; +import { type NodeExecutorRegistry, TransientNodeExecutionError } from '@workflowbuilder/temporal'; + +import { evaluateCondition } from './evaluate-condition'; +import type { SampleNode } from './nodes'; + +export const executors: NodeExecutorRegistry = { + trigger: (_node, context) => ({ output: context.triggerPayload }), + + action: (node) => { + // Executors run inside the plugin's executeNode Activity, so Temporal's activity context + // is available. Failing the first attempt on purpose makes the retry that follows visible + // in Event History; the retry itself is Temporal's, not this code's. + const { attempt } = Context.current().info; + if (attempt === 1) { + throw new TransientNodeExecutionError( + 'mail_server_busy', + 'Simulated outage on the first attempt. Temporal retries this activity.', + ); + } + return { output: { delivered: true, attempt, message: node.config.message ?? '' } }; + }, + + condition: (node, context) => { + const expression = node.config.condition ?? ''; + return { output: { expression, matched: evaluateCondition(expression, context.triggerPayload) } }; + }, +}; diff --git a/examples/workflow-builder-temporal/src/store.test.ts b/examples/workflow-builder-temporal/src/store.test.ts new file mode 100644 index 000000000..dcb459e4d --- /dev/null +++ b/examples/workflow-builder-temporal/src/store.test.ts @@ -0,0 +1,53 @@ +import assert from 'node:assert/strict'; +import { test } from 'node:test'; + +import type { RunEvent } from './protocol'; +import { createRunStore } from './store'; + +const silent = { log: () => {} }; + +test('records events and status changes in order and hands them to subscribers', async () => { + const store = createRunStore(silent); + const seen: RunEvent[] = []; + const unsubscribe = store.subscribe('run-1', (event) => seen.push(event)); + + await store.emitExecutionEvent('run-1', 1, 'execution_started'); + await store.emitExecutionEvent('run-1', 2, 'node_started', undefined, 'trigger-1'); + await store.updateExecutionStatus('run-1', 'running'); + unsubscribe(); + await store.updateExecutionStatus('run-1', 'completed'); + + assert.equal(seen.length, 3); + assert.deepEqual(store.history('run-1'), [ + { kind: 'event', sequence: 1, type: 'execution_started', nodeId: undefined, payload: undefined }, + { kind: 'event', sequence: 2, type: 'node_started', nodeId: 'trigger-1', payload: undefined }, + { kind: 'status', status: 'running', errorMessage: undefined }, + { kind: 'status', status: 'completed', errorMessage: undefined }, + ]); +}); + +test('ignores a redelivered event whose sequence it already holds', async () => { + const store = createRunStore(silent); + await store.emitExecutionEvent('run-1', 1, 'execution_started'); + await store.emitExecutionEvent('run-1', 1, 'execution_started'); + assert.equal(store.history('run-1').length, 1); +}); + +test('keeps runs apart', async () => { + const store = createRunStore(silent); + await store.emitExecutionEvent('run-1', 1, 'execution_started'); + await store.emitExecutionEvent('run-2', 1, 'execution_started'); + assert.equal(store.history('run-1').length, 1); + assert.equal(store.history('run-3').length, 0); +}); + +test('prints one line per event with the payload when there is one', async () => { + const lines: string[] = []; + const store = createRunStore({ log: (line) => lines.push(line) }); + await store.emitExecutionEvent('abcdef12-0000', 3, 'node_completed', { output: { ok: true } }, 'action-1'); + await store.updateExecutionStatus('abcdef12-0000', 'failed', 'boom'); + assert.deepEqual(lines, [ + '[abcdef12] # 3 node_completed (action-1) {"output":{"ok":true}}', + '[abcdef12] status failed: boom', + ]); +}); diff --git a/examples/workflow-builder-temporal/src/store.ts b/examples/workflow-builder-temporal/src/store.ts new file mode 100644 index 000000000..babef634f --- /dev/null +++ b/examples/workflow-builder-temporal/src/store.ts @@ -0,0 +1,61 @@ +import type { ExecutionStore } from '@workflowbuilder/temporal'; + +import type { RunEvent } from './protocol'; + +type Listener = (event: RunEvent) => void; + +export type RunStore = ExecutionStore & { + subscribe(executionId: string, listener: Listener): () => void; + history(executionId: string): RunEvent[]; +}; + +export type RunStoreOptions = { + log?: (line: string) => void; +}; + +// The plugin decides what is emitted and in which order; this is where it lands. Here: the +// terminal, plus anyone subscribed (the bridge's event streams). A real application writes +// rows here instead. The port is the same. +export function createRunStore({ log = console.log }: RunStoreOptions = {}): RunStore { + const histories = new Map(); + const listeners = new Map>(); + + function publish(executionId: string, event: RunEvent): void { + const history = histories.get(executionId) ?? []; + // Activities are at-least-once: a retried emit carries the same sequence, and keying on + // (executionId, sequence) is how delivery stays idempotent. + if (event.kind === 'event' && history.some((held) => held.kind === 'event' && held.sequence === event.sequence)) { + return; + } + history.push(event); + histories.set(executionId, history); + for (const listener of listeners.get(executionId) ?? []) listener(event); + } + + return { + async emitExecutionEvent(executionId, sequence, type, payload, nodeId) { + const where = nodeId ? ` (${nodeId})` : ''; + const what = payload === undefined ? '' : ` ${JSON.stringify(payload)}`; + log(`[${executionId.slice(0, 8)}] #${String(sequence).padStart(2, ' ')} ${type}${where}${what}`); + publish(executionId, { kind: 'event', sequence, type, nodeId, payload }); + }, + + async updateExecutionStatus(executionId, status, errorMessage) { + log(`[${executionId.slice(0, 8)}] status ${status}${errorMessage ? `: ${errorMessage}` : ''}`); + publish(executionId, { kind: 'status', status, errorMessage }); + }, + + subscribe(executionId, listener) { + const set = listeners.get(executionId) ?? new Set(); + set.add(listener); + listeners.set(executionId, set); + return () => { + set.delete(listener); + }; + }, + + history(executionId) { + return [...(histories.get(executionId) ?? [])]; + }, + }; +} From c1440f3fc99059b7ef94519959acd3a1f2d0f9b3 Mon Sep 17 00:00:00 2001 From: Dawid Aksamski Date: Fri, 11 Sep 2026 16:47:41 +0200 Subject: [PATCH 05/22] feat(examples): run the sample diagram on Temporal from the terminal --- .../workflow-builder-temporal/src/client.ts | 46 +++++++++++++ .../src/diagram.json | 67 +++++++++++++++++++ .../workflow-builder-temporal/src/worker.ts | 24 +++++++ .../src/workflows.ts | 3 + 4 files changed, 140 insertions(+) create mode 100644 examples/workflow-builder-temporal/src/client.ts create mode 100644 examples/workflow-builder-temporal/src/diagram.json create mode 100644 examples/workflow-builder-temporal/src/worker.ts create mode 100644 examples/workflow-builder-temporal/src/workflows.ts diff --git a/examples/workflow-builder-temporal/src/client.ts b/examples/workflow-builder-temporal/src/client.ts new file mode 100644 index 000000000..8d66c88cc --- /dev/null +++ b/examples/workflow-builder-temporal/src/client.ts @@ -0,0 +1,46 @@ +import { Client, Connection, WorkflowFailedError } from '@temporalio/client'; +import { executionWorkflowId } from '@workflowbuilder/temporal'; +import { TemporalWorkflowEngine } from '@workflowbuilder/temporal/client'; +import { randomUUID } from 'node:crypto'; +import { readFile } from 'node:fs/promises'; + +import { TEMPORAL_ADDRESS, TEMPORAL_NAMESPACE, WORKFLOW_ID, temporalUiUrl } from './config'; +import type { DiagramSnapshot } from './protocol'; +import { snapshotToDefinition } from './to-definition'; + +const snapshot = JSON.parse(await readFile(new URL('diagram.json', import.meta.url), 'utf8')) as DiagramSnapshot; +const definition = snapshotToDefinition(snapshot, WORKFLOW_ID); + +const client = new Client({ + connection: await Connection.connect({ address: TEMPORAL_ADDRESS }), + namespace: TEMPORAL_NAMESPACE, +}); +const engine = new TemporalWorkflowEngine({ client }); + +const executionId = randomUUID(); +await engine.submit({ + workflowId: WORKFLOW_ID, + executionId, + definition, + triggerPayload: { amount: 250, customer: 'Ada' }, + variables: {}, + global: {}, +}); + +console.log(`started ${executionWorkflowId(executionId)}`); +console.log(`watch it: ${temporalUiUrl(executionId)}`); + +// The engine starts the run by name and returns at once. Waiting for the outcome is ordinary +// Temporal client code, so the sample shows it as such. +const handle = client.workflow.getHandle(executionWorkflowId(executionId)); +try { + await handle.result(); + console.log('run completed'); +} catch (error) { + if (!(error instanceof WorkflowFailedError)) throw error; + const reason = error.cause instanceof Error ? error.cause.message : error.message; + console.error(`run failed: ${reason}`); + process.exitCode = 1; +} finally { + await client.connection.close(); +} diff --git a/examples/workflow-builder-temporal/src/diagram.json b/examples/workflow-builder-temporal/src/diagram.json new file mode 100644 index 000000000..e3803cc10 --- /dev/null +++ b/examples/workflow-builder-temporal/src/diagram.json @@ -0,0 +1,67 @@ +{ + "nodes": [ + { + "id": "trigger-1", + "type": "node", + "position": { "x": 80, "y": 176 }, + "data": { + "type": "trigger", + "icon": "Lightning", + "isStartNode": true, + "properties": { + "label": "New request", + "description": "Workflow entry point", + "status": "active" + } + } + }, + { + "id": "action-1", + "type": "node", + "position": { "x": 440, "y": 176 }, + "data": { + "type": "action", + "icon": "PlayCircle", + "properties": { + "label": "Send email", + "description": "Notify the customer", + "status": "active", + "message": "Thanks for reaching out - we are on it!" + } + } + }, + { + "id": "condition-1", + "type": "node", + "position": { "x": 800, "y": 176 }, + "data": { + "type": "condition", + "icon": "Faders", + "properties": { + "label": "Needs review?", + "description": "Checks the amount", + "status": "active", + "condition": "amount > 100" + } + } + } + ], + "edges": [ + { + "id": "edge-trigger-action", + "source": "trigger-1", + "sourceHandle": "source", + "target": "action-1", + "targetHandle": "target", + "type": "labelEdge" + }, + { + "id": "edge-action-condition", + "source": "action-1", + "sourceHandle": "source", + "target": "condition-1", + "targetHandle": "target", + "type": "labelEdge" + } + ] +} diff --git a/examples/workflow-builder-temporal/src/worker.ts b/examples/workflow-builder-temporal/src/worker.ts new file mode 100644 index 000000000..80b7d18d4 --- /dev/null +++ b/examples/workflow-builder-temporal/src/worker.ts @@ -0,0 +1,24 @@ +import { NativeConnection, Worker } from '@temporalio/worker'; +import { WorkflowBuilderPlugin } from '@workflowbuilder/temporal'; +import { fileURLToPath } from 'node:url'; + +import { TEMPORAL_ADDRESS, TEMPORAL_NAMESPACE } from './config'; +import { executors } from './executors'; +import { createRunStore } from './store'; + +const store = createRunStore(); + +// The plugin owns how a graph executes. What each node does (`executors`) and where events +// land (`store`) are this file's, and that is the whole split. +const plugin = new WorkflowBuilderPlugin({ executors, store }); + +const worker = await Worker.create({ + connection: await NativeConnection.connect({ address: TEMPORAL_ADDRESS }), + namespace: TEMPORAL_NAMESPACE, + taskQueue: plugin.taskQueue, + workflowsPath: fileURLToPath(new URL('workflows.ts', import.meta.url)), + plugins: [plugin], +}); + +console.log(`worker polling task queue "${plugin.taskQueue}" on ${TEMPORAL_ADDRESS}`); +await worker.run(); diff --git a/examples/workflow-builder-temporal/src/workflows.ts b/examples/workflow-builder-temporal/src/workflows.ts new file mode 100644 index 000000000..92d6bd9f5 --- /dev/null +++ b/examples/workflow-builder-temporal/src/workflows.ts @@ -0,0 +1,3 @@ +// Temporal compiles the workflow bundle from this one module, so a plugin cannot register a +// workflow on your behalf. Re-exporting it is how the bundle picks it up. +export { runWorkflow } from '@workflowbuilder/temporal/workflow'; From 1c1ef55d054b8f3339cd716d325fcebce8768dfc Mon Sep 17 00:00:00 2001 From: Dawid Aksamski Date: Fri, 11 Sep 2026 16:52:36 +0200 Subject: [PATCH 06/22] feat(examples): bridge canvas runs and stream events over SSE --- .../src/bridge.test.ts | 97 ++++++++++++++++++ .../workflow-builder-temporal/src/bridge.ts | 99 +++++++++++++++++++ .../workflow-builder-temporal/src/worker.ts | 14 ++- 3 files changed, 209 insertions(+), 1 deletion(-) create mode 100644 examples/workflow-builder-temporal/src/bridge.test.ts create mode 100644 examples/workflow-builder-temporal/src/bridge.ts diff --git a/examples/workflow-builder-temporal/src/bridge.test.ts b/examples/workflow-builder-temporal/src/bridge.test.ts new file mode 100644 index 000000000..bbdb0beaf --- /dev/null +++ b/examples/workflow-builder-temporal/src/bridge.test.ts @@ -0,0 +1,97 @@ +import type { WorkflowExecutionInput } from '@workflowbuilder/temporal'; +import assert from 'node:assert/strict'; +import type { AddressInfo } from 'node:net'; +import { after, before, test } from 'node:test'; + +import { type RunSubmitter, startBridge } from './bridge'; +import type { SampleNode } from './nodes'; +import type { RunEvent, RunResponse } from './protocol'; +import { createRunStore } from './store'; + +const submitted: WorkflowExecutionInput[] = []; +const engine: RunSubmitter = { + async submit(input) { + submitted.push(input); + }, +}; +const store = createRunStore({ log: () => {} }); + +let server: ReturnType; +let baseUrl = ''; + +before(async () => { + server = startBridge({ engine, store, port: 0 }); + await new Promise((resolve) => server.once('listening', resolve)); + baseUrl = `http://127.0.0.1:${(server.address() as AddressInfo).port}`; +}); + +after(() => new Promise((resolve) => server.close(() => resolve()))); + +const snapshot = { + nodes: [{ id: 'trigger-1', data: { type: 'trigger', properties: { label: 'New request' } } }], + edges: [], +}; + +function post(body: unknown) { + return fetch(`${baseUrl}/api/runs`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(body), + }); +} + +test('POST /api/runs maps the snapshot, submits it, and answers with the run id and UI link', async () => { + const response = await post({ ...snapshot, triggerPayload: { amount: 1 } }); + assert.equal(response.status, 201); + + const body = (await response.json()) as RunResponse; + assert.equal(submitted.length, 1); + assert.equal(submitted[0].executionId, body.executionId); + assert.equal(submitted[0].definition.nodes[0].role, 'start'); + assert.deepEqual(submitted[0].triggerPayload, { amount: 1 }); + assert.match(body.temporalUiUrl, new RegExp(`/workflows/execution-${body.executionId}$`)); +}); + +test('POST /api/runs answers 400 with the mapper message for a diagram it cannot run', async () => { + const response = await post({ nodes: [{ id: 'x', data: { type: 'mystery' } }], edges: [] }); + assert.equal(response.status, 400); + assert.match(((await response.json()) as { message: string }).message, /Unknown node type "mystery"/); +}); + +test('POST /api/runs answers 400 when the body is not a snapshot', async () => { + const response = await post({ hello: 'world' }); + assert.equal(response.status, 400); + assert.match(((await response.json()) as { message: string }).message, /nodes/); +}); + +test('unknown routes answer 404', async () => { + const response = await fetch(`${baseUrl}/api/nothing`); + assert.equal(response.status, 404); +}); + +test('GET /api/runs/:id/events replays history, then streams live events', async () => { + await store.emitExecutionEvent('run-1', 1, 'execution_started'); + + const response = await fetch(`${baseUrl}/api/runs/run-1/events`); + assert.equal(response.headers.get('content-type'), 'text/event-stream'); + const reader = response.body!.getReader(); + const decoder = new TextDecoder(); + let buffered = ''; + const nextEvent = async (): Promise => { + while (!buffered.includes('\n\n')) { + const { value, done } = await reader.read(); + if (done) throw new Error('stream ended'); + buffered += decoder.decode(value, { stream: true }); + } + const [frame, ...rest] = buffered.split('\n\n'); + buffered = rest.join('\n\n'); + return JSON.parse(frame.replace(/^data: /, '')) as RunEvent; + }; + + assert.deepEqual(await nextEvent(), { kind: 'event', sequence: 1, type: 'execution_started' }); + + await store.updateExecutionStatus('run-1', 'completed'); + assert.deepEqual(await nextEvent(), { kind: 'status', status: 'completed' }); + + await reader.cancel(); +}); diff --git a/examples/workflow-builder-temporal/src/bridge.ts b/examples/workflow-builder-temporal/src/bridge.ts new file mode 100644 index 000000000..905bf0dda --- /dev/null +++ b/examples/workflow-builder-temporal/src/bridge.ts @@ -0,0 +1,99 @@ +import type { WorkflowEnginePort } from '@workflowbuilder/temporal'; +import { randomUUID } from 'node:crypto'; +import { type IncomingMessage, type Server, type ServerResponse, createServer } from 'node:http'; + +import { WORKFLOW_ID, temporalUiUrl } from './config'; +import type { SampleNode } from './nodes'; +import type { RunEvent, RunRequest, RunResponse } from './protocol'; +import type { RunStore } from './store'; +import { snapshotToDefinition } from './to-definition'; + +// Only `submit` is needed here, so a fake in tests stays one method wide. +export type RunSubmitter = Pick, 'submit'>; + +export type BridgeOptions = { + engine: RunSubmitter; + store: RunStore; + port: number; +}; + +const EVENTS_PATH = /^\/api\/runs\/([^/]+)\/events$/; + +export function startBridge({ engine, store, port }: BridgeOptions): Server { + const server = createServer(async (request, response) => { + const path = new URL(request.url ?? '/', 'http://localhost').pathname; + try { + if (request.method === 'POST' && path === '/api/runs') { + await startRun(request, response, engine); + return; + } + const events = EVENTS_PATH.exec(path); + if (request.method === 'GET' && events) { + streamEvents(response, store, events[1]); + return; + } + sendJson(response, 404, { message: `No route for ${request.method} ${path}` }); + } catch (error) { + sendJson(response, 400, { message: error instanceof Error ? error.message : String(error) }); + } + }); + + server.listen(port, '127.0.0.1', () => { + const address = server.address(); + const bound = typeof address === 'object' && address ? address.port : port; + console.log(`bridge listening on http://127.0.0.1:${bound}`); + }); + return server; +} + +async function startRun(request: IncomingMessage, response: ServerResponse, engine: RunSubmitter): Promise { + const body = JSON.parse(await readBody(request)) as Partial; + if (!Array.isArray(body.nodes) || !Array.isArray(body.edges)) { + throw new TypeError('The body must be a diagram snapshot: { nodes: [], edges: [], triggerPayload?: {} }.'); + } + + const executionId = randomUUID(); + await engine.submit({ + workflowId: WORKFLOW_ID, + executionId, + definition: snapshotToDefinition({ nodes: body.nodes, edges: body.edges }, WORKFLOW_ID), + triggerPayload: body.triggerPayload ?? {}, + variables: {}, + global: {}, + }); + + const payload: RunResponse = { executionId, temporalUiUrl: temporalUiUrl(executionId) }; + sendJson(response, 201, payload); +} + +function streamEvents(response: ServerResponse, store: RunStore, executionId: string): void { + response.writeHead(200, { + 'Content-Type': 'text/event-stream', + 'Cache-Control': 'no-cache', + Connection: 'keep-alive', + }); + const send = (event: RunEvent) => response.write(`data: ${JSON.stringify(event)}\n\n`); + + // Replay first: the browser subscribes after the run has started, so the first events are + // already in the store's history. + for (const event of store.history(executionId)) send(event); + const unsubscribe = store.subscribe(executionId, send); + response.on('close', unsubscribe); +} + +function readBody(request: IncomingMessage): Promise { + return new Promise((resolve, reject) => { + let body = ''; + request.setEncoding('utf8'); + request.on('data', (chunk: string) => { + body += chunk; + }); + request.on('end', () => resolve(body)); + request.on('error', reject); + }); +} + +function sendJson(response: ServerResponse, status: number, payload: unknown): void { + response.writeHead(status, { 'Content-Type': 'application/json' }); + response.end(JSON.stringify(payload)); +} diff --git a/examples/workflow-builder-temporal/src/worker.ts b/examples/workflow-builder-temporal/src/worker.ts index 80b7d18d4..a9f27ba99 100644 --- a/examples/workflow-builder-temporal/src/worker.ts +++ b/examples/workflow-builder-temporal/src/worker.ts @@ -1,8 +1,11 @@ +import { Client, Connection } from '@temporalio/client'; import { NativeConnection, Worker } from '@temporalio/worker'; import { WorkflowBuilderPlugin } from '@workflowbuilder/temporal'; +import { TemporalWorkflowEngine } from '@workflowbuilder/temporal/client'; import { fileURLToPath } from 'node:url'; -import { TEMPORAL_ADDRESS, TEMPORAL_NAMESPACE } from './config'; +import { startBridge } from './bridge'; +import { BRIDGE_PORT, TEMPORAL_ADDRESS, TEMPORAL_NAMESPACE } from './config'; import { executors } from './executors'; import { createRunStore } from './store'; @@ -20,5 +23,14 @@ const worker = await Worker.create({ plugins: [plugin], }); +// The editor never talks to Temporal itself. It posts a canvas snapshot here and reads the +// store's events back, so the browser needs one origin and no Temporal client. +const engine = new TemporalWorkflowEngine({ + client: async () => + new Client({ connection: await Connection.connect({ address: TEMPORAL_ADDRESS }), namespace: TEMPORAL_NAMESPACE }), +}); +const bridge = startBridge({ engine, store, port: BRIDGE_PORT }); + console.log(`worker polling task queue "${plugin.taskQueue}" on ${TEMPORAL_ADDRESS}`); await worker.run(); +bridge.close(); From 43e93f01af303ad16d58fe3d11e2f7d1963ecf78 Mon Sep 17 00:00:00 2001 From: Dawid Aksamski Date: Fri, 11 Sep 2026 17:21:57 +0200 Subject: [PATCH 07/22] feat(examples): editor app for the Temporal sample --- .../editor/index.html | 12 + .../editor/package-lock.json | 3647 +++++++++++++++++ .../editor/package.json | 27 + .../editor/src/app.tsx | 21 + .../editor/src/diagram.ts | 8 + .../editor/src/main.tsx | 10 + .../editor/src/nodes/action/action.ts | 15 + .../nodes/action/default-properties-data.ts | 10 + .../editor/src/nodes/action/schema.ts | 13 + .../editor/src/nodes/action/uischema.ts | 31 + .../editor/src/nodes/condition/condition.ts | 15 + .../condition/default-properties-data.ts | 10 + .../editor/src/nodes/condition/schema.ts | 13 + .../editor/src/nodes/condition/uischema.ts | 30 + .../editor/src/nodes/index.ts | 9 + .../nodes/trigger/default-properties-data.ts | 9 + .../editor/src/nodes/trigger/schema.ts | 12 + .../editor/src/nodes/trigger/trigger.ts | 15 + .../editor/src/nodes/trigger/uischema.ts | 21 + .../editor/src/vite-env.d.ts | 1 + .../editor/tsconfig.json | 18 + .../editor/vite.config.ts | 12 + 22 files changed, 3959 insertions(+) create mode 100644 examples/workflow-builder-temporal/editor/index.html create mode 100644 examples/workflow-builder-temporal/editor/package-lock.json create mode 100644 examples/workflow-builder-temporal/editor/package.json create mode 100644 examples/workflow-builder-temporal/editor/src/app.tsx create mode 100644 examples/workflow-builder-temporal/editor/src/diagram.ts create mode 100644 examples/workflow-builder-temporal/editor/src/main.tsx create mode 100644 examples/workflow-builder-temporal/editor/src/nodes/action/action.ts create mode 100644 examples/workflow-builder-temporal/editor/src/nodes/action/default-properties-data.ts create mode 100644 examples/workflow-builder-temporal/editor/src/nodes/action/schema.ts create mode 100644 examples/workflow-builder-temporal/editor/src/nodes/action/uischema.ts create mode 100644 examples/workflow-builder-temporal/editor/src/nodes/condition/condition.ts create mode 100644 examples/workflow-builder-temporal/editor/src/nodes/condition/default-properties-data.ts create mode 100644 examples/workflow-builder-temporal/editor/src/nodes/condition/schema.ts create mode 100644 examples/workflow-builder-temporal/editor/src/nodes/condition/uischema.ts create mode 100644 examples/workflow-builder-temporal/editor/src/nodes/index.ts create mode 100644 examples/workflow-builder-temporal/editor/src/nodes/trigger/default-properties-data.ts create mode 100644 examples/workflow-builder-temporal/editor/src/nodes/trigger/schema.ts create mode 100644 examples/workflow-builder-temporal/editor/src/nodes/trigger/trigger.ts create mode 100644 examples/workflow-builder-temporal/editor/src/nodes/trigger/uischema.ts create mode 100644 examples/workflow-builder-temporal/editor/src/vite-env.d.ts create mode 100644 examples/workflow-builder-temporal/editor/tsconfig.json create mode 100644 examples/workflow-builder-temporal/editor/vite.config.ts diff --git a/examples/workflow-builder-temporal/editor/index.html b/examples/workflow-builder-temporal/editor/index.html new file mode 100644 index 000000000..7e39475c7 --- /dev/null +++ b/examples/workflow-builder-temporal/editor/index.html @@ -0,0 +1,12 @@ + + + + + + Workflow Builder on Temporal + + +
+ + + diff --git a/examples/workflow-builder-temporal/editor/package-lock.json b/examples/workflow-builder-temporal/editor/package-lock.json new file mode 100644 index 000000000..6009a3ce6 --- /dev/null +++ b/examples/workflow-builder-temporal/editor/package-lock.json @@ -0,0 +1,3647 @@ +{ + "name": "workflow-builder-temporal-sample-editor", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "workflow-builder-temporal-sample-editor", + "version": "0.0.0", + "license": "Apache-2.0", + "dependencies": { + "@phosphor-icons/react": "^2.1.7", + "@workflowbuilder/sdk": "2.3.0", + "@xyflow/react": "12.10.0", + "react": "19.1.0", + "react-dom": "19.1.0", + "zustand": "^5.0.1" + }, + "devDependencies": { + "@types/react": "^19.1.8", + "@types/react-dom": "^19.1.0", + "@vitejs/plugin-react": "^4.3.4", + "typescript": "~5.6.3", + "vite": "^6.0.7" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.29.7", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", + "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", + "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helpers": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.8.tgz", + "integrity": "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.8", + "@babel/types": "^7.29.8", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", + "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", + "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", + "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", + "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", + "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", + "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", + "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz", + "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.8" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.29.7.tgz", + "integrity": "sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.29.7.tgz", + "integrity": "sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz", + "integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.8.tgz", + "integrity": "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.8", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.8", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.8", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", + "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@cfworker/json-schema": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@cfworker/json-schema/-/json-schema-4.1.1.tgz", + "integrity": "sha512-gAmrUZSGtKc3AiBL71iNWxDsyUC5uMaKKGdvzYsBoTW/xi42JQHl7eKV2OYzCUqvc+D2RCcf7EXY2iCyFIk6og==", + "license": "MIT" + }, + "node_modules/@emotion/babel-plugin": { + "version": "11.13.5", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz", + "integrity": "sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/serialize": "^1.3.3", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "license": "MIT" + }, + "node_modules/@emotion/cache": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.14.0.tgz", + "integrity": "sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==", + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.9.0", + "@emotion/sheet": "^1.4.0", + "@emotion/utils": "^1.4.2", + "@emotion/weak-memoize": "^0.4.0", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==", + "license": "MIT" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.4.0.tgz", + "integrity": "sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw==", + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.9.0" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", + "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==", + "license": "MIT" + }, + "node_modules/@emotion/react": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz", + "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.13.5", + "@emotion/cache": "^11.14.0", + "@emotion/serialize": "^1.3.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", + "@emotion/utils": "^1.4.2", + "@emotion/weak-memoize": "^0.4.0", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.3.tgz", + "integrity": "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==", + "license": "MIT", + "dependencies": { + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/unitless": "^0.10.0", + "@emotion/utils": "^1.4.2", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/sheet": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", + "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==", + "license": "MIT" + }, + "node_modules/@emotion/styled": { + "version": "11.14.1", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.14.1.tgz", + "integrity": "sha512-qEEJt42DuToa3gurlH4Qqc1kVpNq8wO8cJtDzU46TjlzWjDlsVyevtYCRijVq3SrHsROS+gVQ8Fnea108GnKzw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.13.5", + "@emotion/is-prop-valid": "^1.3.0", + "@emotion/serialize": "^1.3.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", + "@emotion/utils": "^1.4.2" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/unitless": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz", + "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==", + "license": "MIT" + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz", + "integrity": "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.2.tgz", + "integrity": "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==", + "license": "MIT" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", + "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==", + "license": "MIT" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.8.0.tgz", + "integrity": "sha512-0CIZ5itps/8x7BG8dEIhs53BvCUH2PCoogtakwRTut+Arm58sJooJ0AuZhLw2HJYIR5cMLNPBSS728sPho2khQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.12" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.8.0.tgz", + "integrity": "sha512-yXSrzeHZBTZadLOlfyhCkJHNeLJnHRnRInwdZ40L7ZiaAtrBwoYlsDrX3v5zB1Utk7CLfzcOVnVVWoXEky7Ceg==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.8.0", + "@floating-ui/utils": "^0.2.12" + } + }, + "node_modules/@floating-ui/react": { + "version": "0.26.28", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.28.tgz", + "integrity": "sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.1.2", + "@floating-ui/utils": "^0.2.8", + "tabbable": "^6.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.9.tgz", + "integrity": "sha512-JDjEFGCpImxDCA7JJKviA0M9+RtmJdj0m/NVU5IMgBK+AmZouAQQ7/+2GLH0GXXY0YMw9oXPB8hKdbPYg5QLYg==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.8.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.12.tgz", + "integrity": "sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww==", + "license": "MIT" + }, + "node_modules/@fontsource/poppins": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@fontsource/poppins/-/poppins-5.3.0.tgz", + "integrity": "sha512-cms1nM7U6SN8epIV1WMVOV8VsA645aSm3wHfzIQnkk188U341ThbJGSl2Sv54V29gnDbT2arMPfLzvVIIVCceQ==", + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.6.0.tgz", + "integrity": "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jsonforms/core": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@jsonforms/core/-/core-3.8.0.tgz", + "integrity": "sha512-XSvaZuQSs/MceG5nDDcrE879onPHkGBy0xEuLeZMUkSM/M8wc1dEUrJtMOZVNSITocm9YXFY1qQ5gnsPP38zAg==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.3", + "ajv": "^8.18.0", + "ajv-formats": "^2.1.0", + "lodash": "^4.17.21" + } + }, + "node_modules/@jsonforms/react": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@jsonforms/react/-/react-3.8.0.tgz", + "integrity": "sha512-k81+yWLpCQl+3XizS1bLjXoBwYhW1OAkjSXFA8W5qNtfPZjSOXDgtiuMOGYDv4b60tu2e9RB8h2P2O7QhfkhiA==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.21" + }, + "peerDependencies": { + "@jsonforms/core": "3.8.0", + "react": "^16.12.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@mantine/core": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@mantine/core/-/core-7.17.8.tgz", + "integrity": "sha512-42sfdLZSCpsCYmLCjSuntuPcDg3PLbakSmmYfz5Auea8gZYLr+8SS5k647doVu0BRAecqYOytkX2QC5/u/8VHw==", + "license": "MIT", + "dependencies": { + "@floating-ui/react": "^0.26.28", + "clsx": "^2.1.1", + "react-number-format": "^5.4.3", + "react-remove-scroll": "^2.6.2", + "react-textarea-autosize": "8.5.9", + "type-fest": "^4.27.0" + }, + "peerDependencies": { + "@mantine/hooks": "7.17.8", + "react": "^18.x || ^19.x", + "react-dom": "^18.x || ^19.x" + } + }, + "node_modules/@mantine/dates": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@mantine/dates/-/dates-7.17.8.tgz", + "integrity": "sha512-KYog/YL83PnsMef7EZagpOFq9I2gfnK0eYSzC8YvV9Mb6t/x9InqRssGWVb0GIr+TNILpEkhKoGaSKZNy10Q1g==", + "license": "MIT", + "dependencies": { + "clsx": "^2.1.1" + }, + "peerDependencies": { + "@mantine/core": "7.17.8", + "@mantine/hooks": "7.17.8", + "dayjs": ">=1.0.0", + "react": "^18.x || ^19.x", + "react-dom": "^18.x || ^19.x" + } + }, + "node_modules/@mantine/hooks": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@mantine/hooks/-/hooks-7.17.8.tgz", + "integrity": "sha512-96qygbkTjRhdkzd5HDU8fMziemN/h758/EwrFu7TlWrEP10Vw076u+Ap/sG6OT4RGPZYYoHrTlT+mkCZblWHuw==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "react": "^18.x || ^19.x" + } + }, + "node_modules/@mui/core-downloads-tracker": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.5.0.tgz", + "integrity": "sha512-LGb8t8i6M2ZtS3Drn3GbTI1DVhDY6FJ9crEey2lZ0aN2EMZo8IZBZj9wRf4vqbZHaWjsYgtbOnJw5V8UWbmK2Q==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + } + }, + "node_modules/@mui/material": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.5.0.tgz", + "integrity": "sha512-yjvtXoFcrPLGtgKRxFaH6OQPtcLPhkloC0BML6rBG5UeldR0nPULR/2E2BfXdo5JNV7j7lOzrrLX2Qf/iSidow==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@mui/core-downloads-tracker": "^6.5.0", + "@mui/system": "^6.5.0", + "@mui/types": "~7.2.24", + "@mui/utils": "^6.4.9", + "@popperjs/core": "^2.11.8", + "@types/react-transition-group": "^4.4.12", + "clsx": "^2.1.1", + "csstype": "^3.1.3", + "prop-types": "^15.8.1", + "react-is": "^19.0.0", + "react-transition-group": "^4.4.5" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@mui/material-pigment-css": "^6.5.0", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@mui/material-pigment-css": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/private-theming": { + "version": "6.4.9", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.4.9.tgz", + "integrity": "sha512-LktcVmI5X17/Q5SkwjCcdOLBzt1hXuc14jYa7NPShog0GBDCDvKtcnP0V7a2s6EiVRlv7BzbWEJzH6+l/zaCxw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@mui/utils": "^6.4.9", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/styled-engine": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.5.0.tgz", + "integrity": "sha512-8woC2zAqF4qUDSPIBZ8v3sakj+WgweolpyM/FXf8jAx6FMls+IE4Y8VDZc+zS805J7PRz31vz73n2SovKGaYgw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@emotion/cache": "^11.13.5", + "@emotion/serialize": "^1.3.3", + "@emotion/sheet": "^1.4.0", + "csstype": "^3.1.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/@mui/system": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.5.0.tgz", + "integrity": "sha512-XcbBYxDS+h/lgsoGe78ExXFZXtuIlSBpn/KsZq8PtZcIkUNJInkuDqcLd2rVBQrDC1u+rvVovdaWPf2FHKJf3w==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@mui/private-theming": "^6.4.9", + "@mui/styled-engine": "^6.5.0", + "@mui/types": "~7.2.24", + "@mui/utils": "^6.4.9", + "clsx": "^2.1.1", + "csstype": "^3.1.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/types": { + "version": "7.2.24", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.24.tgz", + "integrity": "sha512-3c8tRt/CbWZ+pEg7QpSwbdxOk36EfmhbKf6AGZsD1EcLDLTSZoxxJ86FVtcjxvjuhdyBiWKSTGZFaXCnidO2kw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils": { + "version": "6.4.9", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.4.9.tgz", + "integrity": "sha512-Y12Q9hbK9g+ZY0T3Rxrx9m2m10gaphDuUMgWxyV5kNJevVxXYCLclYUCC9vXaIk1/NdNDTcW2Yfr2OGvNFNmHg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@mui/types": "~7.2.24", + "@types/prop-types": "^15.7.14", + "clsx": "^2.1.1", + "prop-types": "^15.8.1", + "react-is": "^19.0.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@napi-rs/lzma-linux-x64-gnu": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-x64-gnu/-/lzma-linux-x64-gnu-1.5.1.tgz", + "integrity": "sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^22.20 || ^24.12 || >=25" + } + }, + "node_modules/@phosphor-icons/react": { + "version": "2.1.10", + "resolved": "https://registry.npmjs.org/@phosphor-icons/react/-/react-2.1.10.tgz", + "integrity": "sha512-vt8Tvq8GLjheAZZYa+YG/pW7HDbov8El/MANW8pOAz4eGxrwhnbfrQZq0Cp4q8zBEu8NIhHdnr+r8thnfRSNYA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": ">= 16.8", + "react-dom": ">= 16.8" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.27", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", + "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.63.1.tgz", + "integrity": "sha512-UZ8sUxPTiHWYX9QNdJedb1kDZSpS1t/VPWBWGSgqHNi9w3Cu6IXvu2mzbhiTiPvtrqgTQJ+zqiAq2iPIPilpaQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.63.1.tgz", + "integrity": "sha512-cQ4nFQABN5cDvDpbvJ7bMStCpnaVxynZrRMfUJYgxcIk9Sh54FIO1vtfkg0B69REjER77ioZ/ov+eAApx/KmLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.63.1.tgz", + "integrity": "sha512-FQNqd1lRy/0QhDk3xeRIkSBiCpXCiDnZO3YLVdcDKN1UBiKToNftCzcXYNLshmPDUMlu2TdeS8tGcsU6f3YF1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.63.1.tgz", + "integrity": "sha512-pvD16V939D3CloK0+qikpGaxiPrDUXTe7Y5cWOMkMSy7m1cawa8EGy/kXYi/G/cKAC4HDAbSnzCIk1WmsoOKXg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.63.1.tgz", + "integrity": "sha512-pcFGeL2345VwdTnJhA6zLbew+YgWB0qBG2+dMtXjCicf6+rm6kO6cOoh5VnTe0ZMrMRgRyuHmCJxZWrIdzYuOw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.63.1.tgz", + "integrity": "sha512-mRJlqSRulVzcKq/LKA6ICSIc3K/l4fzlVn/gePn2nXIHy8seRi5z/eeRE0d/XMBxcMldiXtQTSpRj0tkkC3g8Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.63.1.tgz", + "integrity": "sha512-YDUNvVM85TI3g/1OpnqKP1h4NeW/j64DfWMf+G3M809xNk1bJSnpFp4sh83NpmVE5DXnkh8ULor4LTVZKoYLHw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.63.1.tgz", + "integrity": "sha512-7Mcn71p9ZuQFAj+h+dhQXy/yeLePRS2yKRnmW1DijA9thKO5qap0GNOIQK4yQ6iP3SU0Mrb/yWo8h8vgRba8lw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.63.1.tgz", + "integrity": "sha512-4YiLQTX6U4CSl0L9cluep9A9W6UmTfqBDc2/CH6wlu54pl4E7Jn3cOD8oxzvBDEGk/JMKgJ47C8g+radF7mwvg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.63.1.tgz", + "integrity": "sha512-2ra8F7w8OquwZN9z2/fKFnli69wa8PLwaVzRMIPGb13ByMJwC28Fbp8YcVGoUhlYMTt7j5j9bNgpysrN2UM+vw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.63.1.tgz", + "integrity": "sha512-Sy20ncyhjmBP0Ml+UvQbimjlk6VFgjW5uNP+qqwHB00mTE8Bl2C1TuHTlRwK2YoXeZbee5lP2XevBWVkAQAtSQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.63.1.tgz", + "integrity": "sha512-noITLp8oNjYliPnGWmLyelIHwULGqbHloQHGw1rtxbWhTuWooRpnZarZQJ1y9EUC4szuCusCc+HEpUtxpIwYvA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.63.1.tgz", + "integrity": "sha512-hlxxXd+F1mWiAcaFR7Sv9ZQT6m6UfI8+Vy/kFJzztq2pDMU/0wZ9sish0iszNZvsQDo8Gc0i5yuFEOz5dDf6fA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.63.1.tgz", + "integrity": "sha512-EF7OpqQTQ/BvGqLzUi4rEHuagCV9MugAUXSHemwPW5vxZ75RR+jxO/2j95Ph2dalMpFHSVECjRoioHZgA9zOYA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.63.1.tgz", + "integrity": "sha512-wQO3JesW9PRkwlabQ27y7sPfVOOTLRG73I4F2UYHG5PXun3J9U3y+b7ezVKSYbsvSKGQ1k1cq8Qlun4C9kLt3w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.63.1.tgz", + "integrity": "sha512-ouAGwhO6wHRXdnOVCOsB0tRFkA7nhNB2Nwax6oECXN0YiN8EYUTBAOudADOB1PI+yDL61TeNx/u7MVCzksNbkQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.63.1.tgz", + "integrity": "sha512-q2R38Sn+1J8RxhfJ+T54wSWmyKXWec+9jgDfqO2AtArEqHO5R2aeayp5H5OYLr5UYDVGsVaZPEFUooMhYCdz5A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.63.1.tgz", + "integrity": "sha512-gfI5T24WLLuFfSKw7Go/zDXjAAV0fny0swTaDv+WjK7vqcw4cRhFfdsyKL1n+ukI+ooBxn3bVQnyrn06WpI50w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.63.1.tgz", + "integrity": "sha512-4h6XqthmB4Hspji84wvgk+ElodTsGj+dbZqHJHHtKxj4mYq0ANSEEPX9ys3moJueqsRjwpaJYH7874Itwnj2ow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.63.1.tgz", + "integrity": "sha512-dlfCOa87o1VAYegLQ9EKilx2JCeRofiyPGhTCmqnuXZ6bMPiycO1rq1+sKoulAp7pGLIsTIw+1x5R+zgh5LhhA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.63.1.tgz", + "integrity": "sha512-cjkLbOlfcm3QGhMM1J5zaZjsw1GggbN6rw9UTSSRrPrR1KkcXnN7Uq9rPw34xImQ9VOY9GN+6u2Zj80B9ptkcw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.63.1.tgz", + "integrity": "sha512-Li1KdUnWGE4N3e1F/B4RTB1ms+nG4WBgjByO46pkeBVX/2UBsY53xf5vK9WygVmnH3RwncIST7lkSdLSY6P9lg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.63.1.tgz", + "integrity": "sha512-t4ZYOSoLTgwhuFMrmTMLx/+i1DQVK7HYqMc6kY46EApwi8X0nIVphzdNoThU3xt6n+N5urG1/gxBdCaKDLavfg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.63.1.tgz", + "integrity": "sha512-RgroPfMmKlD1RzSDxvwgcPiy2HNQKoYV7OmwIXDsk73uKW5t6B/V8KIy27SMv/FNXFo/oSBtWc9J0X7t91ezZg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.63.1.tgz", + "integrity": "sha512-at8QVep6S3h5Y6gSbdGU06bRY5WJkf6WUduM9YtvYMbYhB1MOFfUgc6kehitQXzOtMSaT70q7f9ydPhpqu821w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@synergycodes/overflow-ui": { + "version": "1.0.0-beta.27", + "resolved": "https://registry.npmjs.org/@synergycodes/overflow-ui/-/overflow-ui-1.0.0-beta.27.tgz", + "integrity": "sha512-Z8wDSlphLvLOA0JtzwFLrH0pO2PgmLwmG4OAmPewSh+Yet0L5dNNhWrs1AkuxkIxky74l+0Y11RVczLnuIGrAg==", + "license": "MIT", + "dependencies": { + "@emotion/styled": "^11.14.0", + "@floating-ui/react": "^0.26.28", + "@mantine/core": "^7.17.2", + "@mantine/dates": "^7.17.2", + "@mui/base": "5.0.0-beta.62", + "@mui/material": "^6.4.7", + "@phosphor-icons/react": "^2.1.7", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@synergycodes/overflow-ui/node_modules/@mui/base": { + "version": "5.0.0-beta.62", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.62.tgz", + "integrity": "sha512-TzJLCNlrMkSU4bTCdTT+TVUiGx4sjZLhH673UV6YN+rNNP8wJpkWfRSvjDB5HcbH2T0lUamnz643ZnV+8IiMjw==", + "deprecated": "This package has been replaced by @base-ui/react", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@floating-ui/react-dom": "^2.1.1", + "@mui/types": "^7.2.19", + "@mui/utils": "^6.1.8", + "@popperjs/core": "^2.11.8", + "clsx": "^2.1.1", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@synergycodes/overflow-ui/node_modules/@types/react": { + "version": "18.3.31", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.31.tgz", + "integrity": "sha512-vfEqpXTvwT91yhmwdfouStN2hSKwTvyRs8qpLfADyrq/kxDw0hZM7Wk9Ug1FELj8hIby+S/+kQCSRFF32nv2Qw==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.2.2" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" + }, + "node_modules/@types/d3-drag": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", + "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "license": "MIT", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-selection": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", + "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", + "license": "MIT" + }, + "node_modules/@types/d3-transition": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", + "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-zoom": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", + "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", + "license": "MIT", + "dependencies": { + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "license": "MIT" + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.15", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", + "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.3.0.tgz", + "integrity": "sha512-N0rFCuH9YoxG9/m61l9MfpJKfmLOVU0em7ipIz6TRgSSkvReLB9vL85GB+yr8Bs5leqpvg96JSwF4ZS1s4viQg==", + "license": "MIT", + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.3.0.tgz", + "integrity": "sha512-ZI7bU42mZXXKHn/qNLEw2IrbiINU7X5+vfgdixBHkCNpYWXjKgfQ/P+uyGb5CjOLB9UcnTeg3rylQtV2hym44Q==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.3.0" + } + }, + "node_modules/@types/react-transition-group": { + "version": "4.4.12", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz", + "integrity": "sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", + "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.28.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.27", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.17.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/@workflowbuilder/sdk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@workflowbuilder/sdk/-/sdk-2.3.0.tgz", + "integrity": "sha512-yRB4e0B6GJNVmvFtY0N8h/sAgw43Aiqmgswf6ld9gjtBLIQUG34RgdrM5EDlc6E8n/E6MHcMR6XL8xb4F6tMHw==", + "license": "Apache-2.0", + "dependencies": { + "@cfworker/json-schema": "4.1.1", + "@fontsource/poppins": "^5.2.7", + "@jsonforms/core": "^3.4.0", + "@jsonforms/react": "^3.4.0", + "@phosphor-icons/react": "^2.1.7", + "@synergycodes/overflow-ui": "1.0.0-beta.27", + "ace-builds": "^1.43.4", + "ajv": "^8.18.0", + "clsx": "^2.1.1", + "date-fns": "^4.1.0", + "i18next": "^24.0.0", + "i18next-browser-languagedetector": "^8.0.0", + "immer": "^10.0.0", + "notistack": "^3.0.1", + "react-ace": "^14.0.1", + "react-i18next": "^15.0.0", + "react-mentions-ts": "^5.4.7", + "remeda": "^2.19.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@xyflow/react": "^12.0.0", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0", + "zustand": "^5.0.0" + } + }, + "node_modules/@xyflow/react": { + "version": "12.10.0", + "resolved": "https://registry.npmjs.org/@xyflow/react/-/react-12.10.0.tgz", + "integrity": "sha512-eOtz3whDMWrB4KWVatIBrKuxECHqip6PfA8fTpaS2RUGVpiEAe+nqDKsLqkViVWxDGreq0lWX71Xth/SPAzXiw==", + "license": "MIT", + "dependencies": { + "@xyflow/system": "0.0.74", + "classcat": "^5.0.3", + "zustand": "^4.4.0" + }, + "peerDependencies": { + "react": ">=17", + "react-dom": ">=17" + } + }, + "node_modules/@xyflow/react/node_modules/zustand": { + "version": "4.5.7", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.7.tgz", + "integrity": "sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==", + "license": "MIT", + "dependencies": { + "use-sync-external-store": "^1.2.2" + }, + "engines": { + "node": ">=12.7.0" + }, + "peerDependencies": { + "@types/react": ">=16.8", + "immer": ">=9.0.6", + "react": ">=16.8" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + } + } + }, + "node_modules/@xyflow/system": { + "version": "0.0.74", + "resolved": "https://registry.npmjs.org/@xyflow/system/-/system-0.0.74.tgz", + "integrity": "sha512-7v7B/PkiVrkdZzSbL+inGAo6tkR/WQHHG0/jhSvLQToCsfa8YubOGmBYd1s08tpKpihdHDZFwzQZeR69QSBb4Q==", + "license": "MIT", + "dependencies": { + "@types/d3-drag": "^3.0.7", + "@types/d3-interpolate": "^3.0.4", + "@types/d3-selection": "^3.0.10", + "@types/d3-transition": "^3.0.8", + "@types/d3-zoom": "^3.0.8", + "d3-drag": "^3.0.0", + "d3-interpolate": "^3.0.1", + "d3-selection": "^3.0.0", + "d3-zoom": "^3.0.0" + } + }, + "node_modules/ace-builds": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.44.0.tgz", + "integrity": "sha512-PFNMSYqFdEUkul2Ntud0HvA09AgY+F1ag0UYdpMH60wNI/qOA8cB8tlTgoALMEwIdUPJK2CjrIQ7OnbiSS/ugQ==", + "license": "BSD-3-Clause" + }, + "node_modules/ajv": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.11.22", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.22.tgz", + "integrity": "sha512-pWc4w51fBFd7mav43/zKRC+RI6f4yfzQoVlfvE8dECePyfkn1bzLp01Fj0QACcyCZyFhiEMyD2qScfKRWgWibA==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/browserslist": { + "version": "4.28.9", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.9.tgz", + "integrity": "sha512-EWazOblFYUvlGZcfGhPUPmYh3nikUxBVb+y9MJun5f3hBi812X+8MSQTujLBtgK3cf51fJWbWfOjyeO954d+Eg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.11.20", + "caniuse-lite": "^1.0.30001810", + "electron-to-chromium": "^1.5.420", + "node-releases": "^2.0.54", + "update-browserslist-db": "^1.3.2" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001810", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001810.tgz", + "integrity": "sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/class-variance-authority": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", + "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "clsx": "^2.1.1" + }, + "funding": { + "url": "https://polar.sh/cva" + } + }, + "node_modules/classcat": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/classcat/-/classcat-5.0.5.tgz", + "integrity": "sha512-JhZUT7JFcQy/EzW605k/ktHtncoo9vnyW/2GspNYwFlN1C/WmjuV/xtS04e9SOkL2sTdw0VAZ2UGCcQ9lR6p6w==", + "license": "MIT" + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cosmiconfig/node_modules/yaml": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.3.tgz", + "integrity": "sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/date-fns": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.4.0.tgz", + "integrity": "sha512-+1UMbeh68lH1SegH83CGWwpb6OHHbpSgr3+s5Eww5M4CAgswBpoWS0AjTOfEJ33HiYKz1hdj/KTFprzXHmq/6w==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, + "node_modules/dayjs": { + "version": "1.11.23", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.23.tgz", + "integrity": "sha512-QDTCU0M0MxR3hQfnlDJfwekQiaanm1ubOD231u73WBckQ/fsamwRLiE2GBz6D3a/xF1NgfiDLJjXBa1hYOYTtQ==", + "license": "MIT", + "peer": true + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "license": "MIT" + }, + "node_modules/diff-match-patch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz", + "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==", + "license": "Apache-2.0" + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.427", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.427.tgz", + "integrity": "sha512-n14zb3FdsChZ2BNobqNHAJMcP3ifFv4paox2LvCrfVAQcqGiSURgbJl+PfMpHVCNFkStnNc+RRVtPBTVW5PDgw==", + "dev": true, + "license": "ISC" + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-equals": { + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.4.2.tgz", + "integrity": "sha512-Ywe6jodPTWOTL9/k0bV7gdfP8twKL5Y8I8CZ933fAY5gBekICZSUQTbyH6ut2NZCNyB05mSUwAuEqdEIaOOlDQ==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/fast-uri": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.7.tgz", + "integrity": "sha512-dOvZVzjdZdz7phd9v6jCbwxrBW3fK6n8Rc0CtdmM4bumzMnxywBYhuph6J819RRw/ku+rLbelwfMunktuzVVHg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "license": "MIT" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/goober": { + "version": "2.1.19", + "resolved": "https://registry.npmjs.org/goober/-/goober-2.1.19.tgz", + "integrity": "sha512-U7veizMqxyKlM58+Z5j2ngJBH/r9siDmxpvNxSw0PylF6WQvrASJEZrxh1hidRBJc2jqoBVSyOban5u8m+6Rxg==", + "license": "MIT", + "peerDependencies": { + "csstype": "^3.0.10" + } + }, + "node_modules/hasown": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT", + "peer": true + }, + "node_modules/html-parse-stringify": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.1.0.tgz", + "integrity": "sha512-E0oAXcELOtsXe+BmpJ2EZyedbldPpriV5vICzEuo6xjC/D1lDukOI7KrpfQGF2Qc4wWEy0nk3bFORS2K5ZAhFQ==", + "license": "MIT", + "dependencies": { + "void-elements": "3.1.0" + } + }, + "node_modules/i18next": { + "version": "24.2.3", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-24.2.3.tgz", + "integrity": "sha512-lfbf80OzkocvX7nmZtu7nSTNbrTYR52sLWxPtlXX1zAhVw8WEnFk4puUkCR4B1dNQwbSpEHHHemcZu//7EcB7A==", + "funding": [ + { + "type": "individual", + "url": "https://locize.com" + }, + { + "type": "individual", + "url": "https://locize.com/i18next.html" + }, + { + "type": "individual", + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + } + ], + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.10" + }, + "peerDependencies": { + "typescript": "^5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/i18next-browser-languagedetector": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-8.2.1.tgz", + "integrity": "sha512-bZg8+4bdmaOiApD7N7BPT9W8MLZG+nPTOFlLiJiT8uzKXFjhxw4v2ierCXOwB5sFDMtuA5G4kgYZ0AznZxQ/cw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.2" + } + }, + "node_modules/immer": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.2.0.tgz", + "integrity": "sha512-d/+XTN3zfODyjr89gM3mPq1WNX2B8pYsu7eORitdwyA2sBubnTl3laYlBk4sXY5FUa5qTZGBDPJICVbvqzjlbw==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" + }, + "node_modules/is-core-module": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz", + "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "node_modules/lodash": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.19", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.19.tgz", + "integrity": "sha512-Y2tUNy4ouw6tq5oDSKeQYGOyhkUBhNOcGV/02KC+6kd9eDGqdZd++mjMiIDilrBYvjEnCYvVtsuHCuP+okSfug==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.55", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.55.tgz", + "integrity": "sha512-mIrE/Cw9y+9Au6dS5vDKDhQza9YvG6w+ZrS6X+ZzA7yFW/soAeaups4Qzn1bL6g5FVy8WtP79+0j82oPIbqRjQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/notistack": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/notistack/-/notistack-3.0.2.tgz", + "integrity": "sha512-0R+/arLYbK5Hh7mEfR2adt0tyXJcCC9KkA2hc56FeWik2QN6Bm/S4uW+BjzDARsJth5u06nTjelSw/VSnB1YEA==", + "license": "MIT", + "dependencies": { + "clsx": "^1.1.0", + "goober": "^2.0.33" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/notistack" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/notistack/node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz", + "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.28", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.28.tgz", + "integrity": "sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.18", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/react": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", + "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-ace": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/react-ace/-/react-ace-14.1.0.tgz", + "integrity": "sha512-H+Tuw1oa3uP6zRoLBOayPVaMy5Le4G33OpEmLOfSVks75ajmrmFGbyWWEHfBYLCCpu5KfyFlod9jCEUc7i5ekw==", + "license": "MIT", + "dependencies": { + "ace-builds": "^1.36.3", + "diff-match-patch": "^1.0.5", + "fast-equals": "^5.3.3", + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "react": "^0.13.0 || ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^0.13.0 || ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-dom": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", + "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.26.0" + }, + "peerDependencies": { + "react": "^19.1.0" + } + }, + "node_modules/react-i18next": { + "version": "15.7.4", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-15.7.4.tgz", + "integrity": "sha512-nyU8iKNrI5uDJch0z9+Y5XEr34b0wkyYj3Rp+tfbahxtlswxSCjcUL9H0nqXo9IR3/t5Y5PKIA3fx3MfUyR9Xw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.27.6", + "html-parse-stringify": "^3.0.1" + }, + "peerDependencies": { + "i18next": ">= 23.4.0", + "react": ">= 16.8.0", + "typescript": "^5" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/react-is": { + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.3.0.tgz", + "integrity": "sha512-UpMYezM4v5/18F28aC66AEsjXIgE02kyEMH6yLdgLXu/UTfa1Ntwck/nNLrbqJsEXW7gPb0coNO9FQse9WTovA==", + "license": "MIT" + }, + "node_modules/react-mentions-ts": { + "version": "5.4.7", + "resolved": "https://registry.npmjs.org/react-mentions-ts/-/react-mentions-ts-5.4.7.tgz", + "integrity": "sha512-bTK6joPmyvLckVf1v7vE2xSSeqvL4ZwuzFvGZpt+IrtdDOdFZjiwTUBo5920kiE6WbH/v1PP81xAo6pQ0NQ0Pg==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=20" + }, + "peerDependencies": { + "class-variance-authority": ">=0.6.0", + "clsx": ">=2.0.0", + "react": ">=19.0.0", + "react-dom": ">=19.0.0", + "tailwind-merge": ">=3.0.0" + } + }, + "node_modules/react-number-format": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/react-number-format/-/react-number-format-5.4.5.tgz", + "integrity": "sha512-y8O2yHHj3w0aE9XO8d2BCcUOOdQTRSVq+WIuMlLVucAm5XNjJAy+BoOJiuQMldVYVOKTMyvVNfnbl2Oqp+YxGw==", + "license": "MIT", + "peerDependencies": { + "react": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-refresh": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", + "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-remove-scroll": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.2.tgz", + "integrity": "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==", + "license": "MIT", + "dependencies": { + "react-remove-scroll-bar": "^2.3.7", + "react-style-singleton": "^2.2.3", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "license": "MIT", + "dependencies": { + "react-style-singleton": "^2.2.2", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", + "license": "MIT", + "dependencies": { + "get-nonce": "^1.0.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-textarea-autosize": { + "version": "8.5.9", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.9.tgz", + "integrity": "sha512-U1DGlIQN5AwgjTyOEnI1oCcMuEr1pv1qOtklB2l4nyMGbHzWrI0eFsYK0zos2YWqAolJyG0IWJaqWmWj5ETh0A==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.20.13", + "use-composed-ref": "^1.3.0", + "use-latest": "^1.2.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/remeda": { + "version": "2.48.0", + "resolved": "https://registry.npmjs.org/remeda/-/remeda-2.48.0.tgz", + "integrity": "sha512-+tf74WyTpQT1lHI/zJeXOkMBqb6R9gNcd3T4DpXzjs26PdwEARCPKOjLAwJaQYrvSXS+nxsXMhEZD4NS40QuSg==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/remeda" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.12", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", + "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/rollup": { + "version": "4.63.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.63.1.tgz", + "integrity": "sha512-3Df9jsstwhccuEfmAMi9l8XUh/GOkVObmFTU7CCVBysEbcOZLl84jCtaAZMcPiMz2EGKsATzQcU+Xr3n/wU6cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.9" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@napi-rs/lzma-linux-x64-gnu": "1.5.1", + "@rollup/rollup-android-arm-eabi": "4.63.1", + "@rollup/rollup-android-arm64": "4.63.1", + "@rollup/rollup-darwin-arm64": "4.63.1", + "@rollup/rollup-darwin-x64": "4.63.1", + "@rollup/rollup-freebsd-arm64": "4.63.1", + "@rollup/rollup-freebsd-x64": "4.63.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.63.1", + "@rollup/rollup-linux-arm-musleabihf": "4.63.1", + "@rollup/rollup-linux-arm64-gnu": "4.63.1", + "@rollup/rollup-linux-arm64-musl": "4.63.1", + "@rollup/rollup-linux-loong64-gnu": "4.63.1", + "@rollup/rollup-linux-loong64-musl": "4.63.1", + "@rollup/rollup-linux-ppc64-gnu": "4.63.1", + "@rollup/rollup-linux-ppc64-musl": "4.63.1", + "@rollup/rollup-linux-riscv64-gnu": "4.63.1", + "@rollup/rollup-linux-riscv64-musl": "4.63.1", + "@rollup/rollup-linux-s390x-gnu": "4.63.1", + "@rollup/rollup-linux-x64-gnu": "4.63.1", + "@rollup/rollup-linux-x64-musl": "4.63.1", + "@rollup/rollup-openbsd-x64": "4.63.1", + "@rollup/rollup-openharmony-arm64": "4.63.1", + "@rollup/rollup-win32-arm64-msvc": "4.63.1", + "@rollup/rollup-win32-ia32-msvc": "4.63.1", + "@rollup/rollup-win32-x64-gnu": "4.63.1", + "@rollup/rollup-win32-x64-msvc": "4.63.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/scheduler": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", + "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", + "license": "MIT" + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tabbable": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.5.0.tgz", + "integrity": "sha512-wieBHXygIm7OyQOu5hQlkk62/WyCFYGlWg7L6/ZCUZwx0o398Zkn4pVmMyfYhfMG8kGrj/Krt8eIk6UKC6VzwA==", + "license": "MIT" + }, + "node_modules/tailwind-merge": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.6.0.tgz", + "integrity": "sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w==", + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "devOptional": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.3.tgz", + "integrity": "sha512-pJ2sYawQS0R/WI928Gj5GlPhTGzbMelq0+4INtSYNDV9ErKJcX6xjGWkoG/VnB3dpUm00zALaqkrUD77pO5TDQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-composed-ref": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.4.0.tgz", + "integrity": "sha512-djviaxuOOh7wkj0paeO1Q/4wMZ8Zrnag5H6yBvzN7AKKe8beOaED9SF5/ByLqsku8NP4zQqsvM2u3ew/tJK8/w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-isomorphic-layout-effect": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.2.1.tgz", + "integrity": "sha512-tpZZ+EX0gaghDAiFR37hj5MgY6ZN55kLiPkJsKxBMZ6GZdOSPJXiOzPM984oPYZ5AnehYx5WQp1+ME8I/P/pRA==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-latest": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.3.0.tgz", + "integrity": "sha512-mhg3xdm9NaM8q+gLT8KryJPnRFOz1/5XPBhmDEVZK1webPzDjrPk7f/mbpeLqTgB9msytYWANxgALOCJKnLvcQ==", + "license": "MIT", + "dependencies": { + "use-isomorphic-layout-effect": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "license": "MIT", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sync-external-store": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.7.0.tgz", + "integrity": "sha512-6L+EeigHMQhdaIPNIFUKwfWJSwWFQ8gJbJ2DLOs5sDIegTwR9fRxvnM3uciHKjIZhFz+KAv2emhWMRvDmMcY8A==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/vite": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.3.tgz", + "integrity": "sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", + "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", + "dev": true, + "license": "ISC", + "optional": true, + "peer": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, + "node_modules/zustand": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.15.tgz", + "integrity": "sha512-MpSEjRiBkA9crSYeOUH32rJC7SVqAbm0Fqcqge/bUi2PPoLcBWKOsG+C8mevmpr8TwXHBVkChbbJiyvkE+i/3A==", + "license": "MIT", + "engines": { + "node": ">=12.20.0" + }, + "peerDependencies": { + "@types/react": ">=18.0.0", + "immer": ">=9.0.6", + "react": ">=18.0.0", + "use-sync-external-store": ">=1.2.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + }, + "use-sync-external-store": { + "optional": true + } + } + } + } +} diff --git a/examples/workflow-builder-temporal/editor/package.json b/examples/workflow-builder-temporal/editor/package.json new file mode 100644 index 000000000..cd3779759 --- /dev/null +++ b/examples/workflow-builder-temporal/editor/package.json @@ -0,0 +1,27 @@ +{ + "name": "workflow-builder-temporal-sample-editor", + "private": true, + "version": "0.0.0", + "type": "module", + "license": "Apache-2.0", + "scripts": { + "dev": "vite", + "build": "tsc --noEmit && vite build", + "preview": "vite preview" + }, + "dependencies": { + "@phosphor-icons/react": "^2.1.7", + "@workflowbuilder/sdk": "2.3.0", + "@xyflow/react": "12.10.0", + "react": "19.1.0", + "react-dom": "19.1.0", + "zustand": "^5.0.1" + }, + "devDependencies": { + "@types/react": "^19.1.8", + "@types/react-dom": "^19.1.0", + "@vitejs/plugin-react": "^4.3.4", + "typescript": "~5.6.3", + "vite": "^6.0.7" + } +} diff --git a/examples/workflow-builder-temporal/editor/src/app.tsx b/examples/workflow-builder-temporal/editor/src/app.tsx new file mode 100644 index 000000000..8d9672cb7 --- /dev/null +++ b/examples/workflow-builder-temporal/editor/src/app.tsx @@ -0,0 +1,21 @@ +import { WorkflowBuilder, type WorkflowBuilderIsValidConnection } from '@workflowbuilder/sdk'; + +import '@workflowbuilder/sdk/style.css'; + +import { initialEdges, initialNodes } from './diagram'; +import { nodeTypes } from './nodes'; + +// A trigger starts the workflow, so nothing can connect into it. +const isValidConnection: WorkflowBuilderIsValidConnection = ({ targetNode }) => targetNode.data.type !== 'trigger'; + +export function App() { + return ( + + ); +} diff --git a/examples/workflow-builder-temporal/editor/src/diagram.ts b/examples/workflow-builder-temporal/editor/src/diagram.ts new file mode 100644 index 000000000..c3cf16fef --- /dev/null +++ b/examples/workflow-builder-temporal/editor/src/diagram.ts @@ -0,0 +1,8 @@ +import type { WorkflowBuilderEdge, WorkflowBuilderNode } from '@workflowbuilder/sdk'; + +import diagram from '../../src/diagram.json'; + +// One diagram file for both entry points: `npm run workflow` reads it from disk, the editor +// opens with it. JSON widens the icon names to `string`, hence the cast. +export const initialNodes = diagram.nodes as unknown as WorkflowBuilderNode[]; +export const initialEdges = diagram.edges as unknown as WorkflowBuilderEdge[]; diff --git a/examples/workflow-builder-temporal/editor/src/main.tsx b/examples/workflow-builder-temporal/editor/src/main.tsx new file mode 100644 index 000000000..717c60c77 --- /dev/null +++ b/examples/workflow-builder-temporal/editor/src/main.tsx @@ -0,0 +1,10 @@ +import { StrictMode } from 'react'; +import { createRoot } from 'react-dom/client'; + +import { App } from './app'; + +createRoot(document.querySelector('#root') as HTMLElement).render( + + + , +); diff --git a/examples/workflow-builder-temporal/editor/src/nodes/action/action.ts b/examples/workflow-builder-temporal/editor/src/nodes/action/action.ts new file mode 100644 index 000000000..5f89f77ae --- /dev/null +++ b/examples/workflow-builder-temporal/editor/src/nodes/action/action.ts @@ -0,0 +1,15 @@ +import type { PaletteItem } from '@workflowbuilder/sdk'; + +import { defaultPropertiesData } from './default-properties-data'; +import { type ActionNodeSchema, schema } from './schema'; +import { uischema } from './uischema'; + +export const action: PaletteItem = { + type: 'action', + icon: 'PlayCircle', + label: 'Action', + description: 'Performs a task', + defaultPropertiesData, + schema, + uischema, +}; diff --git a/examples/workflow-builder-temporal/editor/src/nodes/action/default-properties-data.ts b/examples/workflow-builder-temporal/editor/src/nodes/action/default-properties-data.ts new file mode 100644 index 000000000..c444f0509 --- /dev/null +++ b/examples/workflow-builder-temporal/editor/src/nodes/action/default-properties-data.ts @@ -0,0 +1,10 @@ +import type { NodeDataProperties } from '@workflowbuilder/sdk'; + +import type { ActionNodeSchema } from './schema'; + +export const defaultPropertiesData: Required> = { + label: 'Action', + description: 'Performs a task', + status: 'active', + message: '', +}; diff --git a/examples/workflow-builder-temporal/editor/src/nodes/action/schema.ts b/examples/workflow-builder-temporal/editor/src/nodes/action/schema.ts new file mode 100644 index 000000000..78fa1c41d --- /dev/null +++ b/examples/workflow-builder-temporal/editor/src/nodes/action/schema.ts @@ -0,0 +1,13 @@ +import { sharedProperties, statusOptions } from '@workflowbuilder/sdk'; +import type { NodeSchema } from '@workflowbuilder/sdk'; + +export const schema = { + type: 'object', + properties: { + ...sharedProperties, + status: { type: 'string', options: Object.values(statusOptions) }, + message: { type: 'string' }, + }, +} satisfies NodeSchema; + +export type ActionNodeSchema = typeof schema; diff --git a/examples/workflow-builder-temporal/editor/src/nodes/action/uischema.ts b/examples/workflow-builder-temporal/editor/src/nodes/action/uischema.ts new file mode 100644 index 000000000..d96dd442b --- /dev/null +++ b/examples/workflow-builder-temporal/editor/src/nodes/action/uischema.ts @@ -0,0 +1,31 @@ +import type { UISchema } from '@workflowbuilder/sdk'; +import { getScope, globalControls } from '@workflowbuilder/sdk'; + +import type { ActionNodeSchema } from './schema'; + +const scope = getScope; + +const generalInformation: UISchema = { + type: 'Accordion', + label: 'General Information', + elements: [ + { type: 'Text', scope: scope('properties.label'), label: 'Title' }, + { type: 'Select', scope: scope('properties.status'), label: 'Status' }, + { type: 'Text', scope: scope('properties.description'), label: 'Description' }, + ], +}; + +export const uischema: UISchema = { + type: 'VerticalLayout', + elements: [ + ...globalControls, + generalInformation, + { + type: 'TextArea', + scope: scope('properties.message'), + label: 'Message', + placeholder: 'What should this action do?', + minRows: 4, + }, + ], +}; diff --git a/examples/workflow-builder-temporal/editor/src/nodes/condition/condition.ts b/examples/workflow-builder-temporal/editor/src/nodes/condition/condition.ts new file mode 100644 index 000000000..614dc87ce --- /dev/null +++ b/examples/workflow-builder-temporal/editor/src/nodes/condition/condition.ts @@ -0,0 +1,15 @@ +import type { PaletteItem } from '@workflowbuilder/sdk'; + +import { defaultPropertiesData } from './default-properties-data'; +import { type ConditionNodeSchema, schema } from './schema'; +import { uischema } from './uischema'; + +export const condition: PaletteItem = { + type: 'condition', + icon: 'Faders', + label: 'Condition', + description: 'Evaluates a condition', + defaultPropertiesData, + schema, + uischema, +}; diff --git a/examples/workflow-builder-temporal/editor/src/nodes/condition/default-properties-data.ts b/examples/workflow-builder-temporal/editor/src/nodes/condition/default-properties-data.ts new file mode 100644 index 000000000..1935e3922 --- /dev/null +++ b/examples/workflow-builder-temporal/editor/src/nodes/condition/default-properties-data.ts @@ -0,0 +1,10 @@ +import type { NodeDataProperties } from '@workflowbuilder/sdk'; + +import type { ConditionNodeSchema } from './schema'; + +export const defaultPropertiesData: Required> = { + label: 'Condition', + description: 'Evaluates a condition', + status: 'active', + condition: '', +}; diff --git a/examples/workflow-builder-temporal/editor/src/nodes/condition/schema.ts b/examples/workflow-builder-temporal/editor/src/nodes/condition/schema.ts new file mode 100644 index 000000000..7a16f6a0c --- /dev/null +++ b/examples/workflow-builder-temporal/editor/src/nodes/condition/schema.ts @@ -0,0 +1,13 @@ +import { sharedProperties, statusOptions } from '@workflowbuilder/sdk'; +import type { NodeSchema } from '@workflowbuilder/sdk'; + +export const schema = { + type: 'object', + properties: { + ...sharedProperties, + status: { type: 'string', options: Object.values(statusOptions) }, + condition: { type: 'string' }, + }, +} satisfies NodeSchema; + +export type ConditionNodeSchema = typeof schema; diff --git a/examples/workflow-builder-temporal/editor/src/nodes/condition/uischema.ts b/examples/workflow-builder-temporal/editor/src/nodes/condition/uischema.ts new file mode 100644 index 000000000..d70f477fc --- /dev/null +++ b/examples/workflow-builder-temporal/editor/src/nodes/condition/uischema.ts @@ -0,0 +1,30 @@ +import type { UISchema } from '@workflowbuilder/sdk'; +import { getScope, globalControls } from '@workflowbuilder/sdk'; + +import type { ConditionNodeSchema } from './schema'; + +const scope = getScope; + +const generalInformation: UISchema = { + type: 'Accordion', + label: 'General Information', + elements: [ + { type: 'Text', scope: scope('properties.label'), label: 'Title' }, + { type: 'Select', scope: scope('properties.status'), label: 'Status' }, + { type: 'Text', scope: scope('properties.description'), label: 'Description' }, + ], +}; + +export const uischema: UISchema = { + type: 'VerticalLayout', + elements: [ + ...globalControls, + generalInformation, + { + type: 'Text', + scope: scope('properties.condition'), + label: 'Condition', + placeholder: 'e.g. amount > 100', + }, + ], +}; diff --git a/examples/workflow-builder-temporal/editor/src/nodes/index.ts b/examples/workflow-builder-temporal/editor/src/nodes/index.ts new file mode 100644 index 000000000..10a0b8c65 --- /dev/null +++ b/examples/workflow-builder-temporal/editor/src/nodes/index.ts @@ -0,0 +1,9 @@ +import type { PaletteItemOrGroup } from '@workflowbuilder/sdk'; + +import { action } from './action/action'; +import { condition } from './condition/condition'; +import { trigger } from './trigger/trigger'; + +// Passed to . Must stay a stable +// module-level reference - see the SDK docs on the `nodeTypes` prop. +export const nodeTypes: PaletteItemOrGroup[] = [trigger, action, condition]; diff --git a/examples/workflow-builder-temporal/editor/src/nodes/trigger/default-properties-data.ts b/examples/workflow-builder-temporal/editor/src/nodes/trigger/default-properties-data.ts new file mode 100644 index 000000000..b2deee78b --- /dev/null +++ b/examples/workflow-builder-temporal/editor/src/nodes/trigger/default-properties-data.ts @@ -0,0 +1,9 @@ +import type { NodeDataProperties } from '@workflowbuilder/sdk'; + +import type { TriggerNodeSchema } from './schema'; + +export const defaultPropertiesData: Required> = { + label: 'Trigger', + description: 'Starts the workflow', + status: 'active', +}; diff --git a/examples/workflow-builder-temporal/editor/src/nodes/trigger/schema.ts b/examples/workflow-builder-temporal/editor/src/nodes/trigger/schema.ts new file mode 100644 index 000000000..0264562b7 --- /dev/null +++ b/examples/workflow-builder-temporal/editor/src/nodes/trigger/schema.ts @@ -0,0 +1,12 @@ +import { sharedProperties, statusOptions } from '@workflowbuilder/sdk'; +import type { NodeSchema } from '@workflowbuilder/sdk'; + +export const schema = { + type: 'object', + properties: { + ...sharedProperties, + status: { type: 'string', options: Object.values(statusOptions) }, + }, +} satisfies NodeSchema; + +export type TriggerNodeSchema = typeof schema; diff --git a/examples/workflow-builder-temporal/editor/src/nodes/trigger/trigger.ts b/examples/workflow-builder-temporal/editor/src/nodes/trigger/trigger.ts new file mode 100644 index 000000000..a430e7897 --- /dev/null +++ b/examples/workflow-builder-temporal/editor/src/nodes/trigger/trigger.ts @@ -0,0 +1,15 @@ +import type { PaletteItem } from '@workflowbuilder/sdk'; + +import { defaultPropertiesData } from './default-properties-data'; +import { type TriggerNodeSchema, schema } from './schema'; +import { uischema } from './uischema'; + +export const trigger: PaletteItem = { + type: 'trigger', + icon: 'Lightning', + label: 'Trigger', + description: 'Starts the workflow', + defaultPropertiesData, + schema, + uischema, +}; diff --git a/examples/workflow-builder-temporal/editor/src/nodes/trigger/uischema.ts b/examples/workflow-builder-temporal/editor/src/nodes/trigger/uischema.ts new file mode 100644 index 000000000..95b97e147 --- /dev/null +++ b/examples/workflow-builder-temporal/editor/src/nodes/trigger/uischema.ts @@ -0,0 +1,21 @@ +import type { UISchema } from '@workflowbuilder/sdk'; +import { getScope, globalControls } from '@workflowbuilder/sdk'; + +import type { TriggerNodeSchema } from './schema'; + +const scope = getScope; + +const generalInformation: UISchema = { + type: 'Accordion', + label: 'General Information', + elements: [ + { type: 'Text', scope: scope('properties.label'), label: 'Title' }, + { type: 'Select', scope: scope('properties.status'), label: 'Status' }, + { type: 'Text', scope: scope('properties.description'), label: 'Description' }, + ], +}; + +export const uischema: UISchema = { + type: 'VerticalLayout', + elements: [...globalControls, generalInformation], +}; diff --git a/examples/workflow-builder-temporal/editor/src/vite-env.d.ts b/examples/workflow-builder-temporal/editor/src/vite-env.d.ts new file mode 100644 index 000000000..11f02fe2a --- /dev/null +++ b/examples/workflow-builder-temporal/editor/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/examples/workflow-builder-temporal/editor/tsconfig.json b/examples/workflow-builder-temporal/editor/tsconfig.json new file mode 100644 index 000000000..791714c03 --- /dev/null +++ b/examples/workflow-builder-temporal/editor/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "target": "ES2022", + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "module": "ESNext", + "moduleResolution": "bundler", + "jsx": "react-jsx", + "strict": true, + "skipLibCheck": true, + "esModuleInterop": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "noUnusedLocals": true, + "noUnusedParameters": true + }, + "include": ["src"] +} diff --git a/examples/workflow-builder-temporal/editor/vite.config.ts b/examples/workflow-builder-temporal/editor/vite.config.ts new file mode 100644 index 000000000..1b7a9ec56 --- /dev/null +++ b/examples/workflow-builder-temporal/editor/vite.config.ts @@ -0,0 +1,12 @@ +import react from '@vitejs/plugin-react'; +import { defineConfig } from 'vite'; + +export default defineConfig({ + plugins: [react()], + server: { + // The diagram lives one folder up so the CLI client and the editor read one file. + fs: { allow: ['..'] }, + // The worker process hosts the bridge; proxying keeps the browser on one origin. + proxy: { '/api': 'http://127.0.0.1:3210' }, + }, +}); From 7e49e5b88b1b352ebf565820d3eeccceeeea88fc Mon Sep 17 00:00:00 2001 From: Dawid Aksamski Date: Fri, 11 Sep 2026 18:00:02 +0200 Subject: [PATCH 08/22] feat(examples): show Temporal run status on the canvas --- .../editor/src/app.tsx | 5 ++ .../editor/src/execution/execution.css | 83 +++++++++++++++++++ .../editor/src/execution/node-markers.tsx | 26 ++++++ .../editor/src/execution/plugin.ts | 15 ++++ .../editor/src/execution/run-button.tsx | 27 ++++++ .../editor/src/execution/run-store.ts | 56 +++++++++++++ .../editor/src/execution/run.ts | 50 +++++++++++ 7 files changed, 262 insertions(+) create mode 100644 examples/workflow-builder-temporal/editor/src/execution/execution.css create mode 100644 examples/workflow-builder-temporal/editor/src/execution/node-markers.tsx create mode 100644 examples/workflow-builder-temporal/editor/src/execution/plugin.ts create mode 100644 examples/workflow-builder-temporal/editor/src/execution/run-button.tsx create mode 100644 examples/workflow-builder-temporal/editor/src/execution/run-store.ts create mode 100644 examples/workflow-builder-temporal/editor/src/execution/run.ts diff --git a/examples/workflow-builder-temporal/editor/src/app.tsx b/examples/workflow-builder-temporal/editor/src/app.tsx index 8d9672cb7..1e8c52497 100644 --- a/examples/workflow-builder-temporal/editor/src/app.tsx +++ b/examples/workflow-builder-temporal/editor/src/app.tsx @@ -3,11 +3,15 @@ import { WorkflowBuilder, type WorkflowBuilderIsValidConnection } from '@workflo import '@workflowbuilder/sdk/style.css'; import { initialEdges, initialNodes } from './diagram'; +import { executionPlugin } from './execution/plugin'; import { nodeTypes } from './nodes'; // A trigger starts the workflow, so nothing can connect into it. const isValidConnection: WorkflowBuilderIsValidConnection = ({ targetNode }) => targetNode.data.type !== 'trigger'; +// Plugin initializers run once on first mount; the array must be a stable reference. +const plugins = [executionPlugin]; + export function App() { return ( ); } diff --git a/examples/workflow-builder-temporal/editor/src/execution/execution.css b/examples/workflow-builder-temporal/editor/src/execution/execution.css new file mode 100644 index 000000000..ad1d2b048 --- /dev/null +++ b/examples/workflow-builder-temporal/editor/src/execution/execution.css @@ -0,0 +1,83 @@ +.run-controls { + display: flex; + align-items: center; + gap: 0.75rem; + margin-right: 0.75rem; + font-size: 0.875rem; +} + +.run-button { + display: inline-flex; + align-items: center; + gap: 0.375rem; + padding: 0.5rem 0.875rem; + border: 0; + border-radius: 0.5rem; + background: #2563eb; + color: #fff; + font: inherit; + font-weight: 600; + cursor: pointer; +} + +.run-button:disabled { + opacity: 0.6; + cursor: progress; +} + +.run-phase--failed, +.run-phase--error { + color: #dc2626; +} + +.run-phase--completed { + color: #16a34a; +} + +.run-link { + display: inline-flex; + align-items: center; + gap: 0.25rem; + color: inherit; +} + +/* Same spot and size as the SDK's own validity badge, so it reads as a status. */ +.run-marker { + position: absolute; + top: 0; + right: var(--ax-public-status-right, 0.75rem); + transform: translateY(-50%); + display: inline-flex; + align-items: center; + justify-content: center; + height: var(--ax-public-status-size, 1.25rem); + aspect-ratio: 1 / 1; + border-radius: 50%; + color: #fff; +} + +.run-marker--running { + background: #2563eb; +} + +.run-marker--running svg { + animation: run-marker-spin 1s linear infinite; +} + +.run-marker--completed { + background: #16a34a; +} + +.run-marker--failed { + background: #dc2626; +} + +.run-marker--skipped { + background: #6b7280; +} + +@keyframes run-marker-spin { + to { + transform: rotate(360deg); + } +} diff --git a/examples/workflow-builder-temporal/editor/src/execution/node-markers.tsx b/examples/workflow-builder-temporal/editor/src/execution/node-markers.tsx new file mode 100644 index 000000000..1534561f1 --- /dev/null +++ b/examples/workflow-builder-temporal/editor/src/execution/node-markers.tsx @@ -0,0 +1,26 @@ +import { CheckCircleIcon, type Icon, SkipForwardIcon, SpinnerGapIcon, XCircleIcon } from '@phosphor-icons/react'; + +import { type NodeRunStatus, useRunStore } from './run-store'; + +// Mounted in the SDK's OptionalNodeContent slot, once per node. `props` are the slot's own +// props; the slot passes the node id so a decorator can scope itself to one node. +type Props = { props?: { nodeId: string } }; + +const ICONS: Record = { + running: SpinnerGapIcon, + completed: CheckCircleIcon, + failed: XCircleIcon, + skipped: SkipForwardIcon, +}; + +export function NodeRunMarker({ props }: Props) { + const status = useRunStore((state) => (props ? state.nodeStatuses[props.nodeId] : undefined)); + if (!status) return null; + + const StatusIcon = ICONS[status]; + return ( + + + + ); +} diff --git a/examples/workflow-builder-temporal/editor/src/execution/plugin.ts b/examples/workflow-builder-temporal/editor/src/execution/plugin.ts new file mode 100644 index 000000000..4f84c874b --- /dev/null +++ b/examples/workflow-builder-temporal/editor/src/execution/plugin.ts @@ -0,0 +1,15 @@ +import { registerComponentDecorator } from '@workflowbuilder/sdk'; + +import './execution.css'; + +import { NodeRunMarker } from './node-markers'; +import { RunButton } from './run-button'; + +export function executionPlugin(): void { + registerComponentDecorator('OptionalAppBarControls', { + content: RunButton, + place: 'before', + name: 'run-on-temporal', + }); + registerComponentDecorator('OptionalNodeContent', { content: NodeRunMarker, place: 'after', name: 'run-markers' }); +} diff --git a/examples/workflow-builder-temporal/editor/src/execution/run-button.tsx b/examples/workflow-builder-temporal/editor/src/execution/run-button.tsx new file mode 100644 index 000000000..e0a84e1b3 --- /dev/null +++ b/examples/workflow-builder-temporal/editor/src/execution/run-button.tsx @@ -0,0 +1,27 @@ +import { ArrowSquareOutIcon, PlayIcon } from '@phosphor-icons/react'; + +import { runFromCanvas } from './run'; +import { useRunStore } from './run-store'; + +// Mounted in the SDK's OptionalAppBarControls slot. +export function RunButton() { + const phase = useRunStore((state) => state.phase); + const message = useRunStore((state) => state.message); + const temporalUiUrl = useRunStore((state) => state.temporalUiUrl); + const busy = phase === 'starting' || phase === 'running'; + + return ( +
+ + {phase !== 'idle' && {message ?? phase}} + {temporalUiUrl && ( + + Temporal UI + + )} +
+ ); +} diff --git a/examples/workflow-builder-temporal/editor/src/execution/run-store.ts b/examples/workflow-builder-temporal/editor/src/execution/run-store.ts new file mode 100644 index 000000000..cf48342e0 --- /dev/null +++ b/examples/workflow-builder-temporal/editor/src/execution/run-store.ts @@ -0,0 +1,56 @@ +import { create } from 'zustand'; + +import type { RunEvent } from '../../../src/protocol'; + +export type NodeRunStatus = 'running' | 'completed' | 'failed' | 'skipped'; +export type RunPhase = 'idle' | 'starting' | 'running' | 'completed' | 'incomplete' | 'failed' | 'cancelled' | 'error'; + +export type RunState = { + phase: RunPhase; + executionId?: string; + temporalUiUrl?: string; + message?: string; + nodeStatuses: Record; +}; + +const IDLE: RunState = { phase: 'idle', nodeStatuses: {} }; + +export const useRunStore = create(() => IDLE); + +export function runStarting(): void { + useRunStore.setState({ ...IDLE, phase: 'starting' }, true); +} + +export function runStarted(executionId: string, temporalUiUrl: string): void { + useRunStore.setState({ phase: 'running', executionId, temporalUiUrl }); +} + +export function runErrored(message: string): void { + useRunStore.setState({ phase: 'error', message }); +} + +const TERMINAL_PHASES: ReadonlySet = new Set(['completed', 'incomplete', 'failed', 'cancelled']); + +const NODE_STATUS_BY_EVENT: Record = { + node_started: 'running', + node_completed: 'completed', + node_failed: 'failed', + node_skipped: 'skipped', +}; + +// A retried activity emits no event, so a node keeps spinning through its attempts. The +// terminal status is written after the terminal event, so ending on it loses nothing. +export function applyRunEvent(event: RunEvent): void { + useRunStore.setState((state) => { + if (event.kind === 'status') { + return TERMINAL_PHASES.has(event.status) ? { phase: event.status as RunPhase, message: event.errorMessage } : {}; + } + const status = NODE_STATUS_BY_EVENT[event.type]; + if (!status || !event.nodeId) return {}; + return { nodeStatuses: { ...state.nodeStatuses, [event.nodeId]: status } }; + }); +} + +export function isRunOver(phase: RunPhase): boolean { + return TERMINAL_PHASES.has(phase) || phase === 'error'; +} diff --git a/examples/workflow-builder-temporal/editor/src/execution/run.ts b/examples/workflow-builder-temporal/editor/src/execution/run.ts new file mode 100644 index 000000000..085ecb5e0 --- /dev/null +++ b/examples/workflow-builder-temporal/editor/src/execution/run.ts @@ -0,0 +1,50 @@ +import { getStoreDataForIntegration } from '@workflowbuilder/sdk'; + +import type { RunEvent, RunRequest, RunResponse } from '../../../src/protocol'; +import { applyRunEvent, isRunOver, runErrored, runStarted, runStarting, useRunStore } from './run-store'; + +// What the trigger node hands downstream. Change `amount` to 50 and the condition node +// reports `matched: false`. +const TRIGGER_PAYLOAD = { amount: 250, customer: 'Ada' }; + +let stream: EventSource | undefined; + +export async function runFromCanvas(): Promise { + stream?.close(); + runStarting(); + + const { nodes, edges } = getStoreDataForIntegration(); + const request: RunRequest = { nodes, edges, triggerPayload: TRIGGER_PAYLOAD }; + + let response: Response; + try { + response = await fetch('/api/runs', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(request), + }); + } catch { + runErrored('Could not reach the bridge. Is `npm start` running in the sample folder?'); + return; + } + + if (!response.ok) { + const { message } = (await response.json().catch(() => ({}))) as { message?: string }; + runErrored(message ?? `The bridge answered ${response.status}. Is \`npm start\` running?`); + return; + } + + const { executionId, temporalUiUrl } = (await response.json()) as RunResponse; + runStarted(executionId, temporalUiUrl); + + stream = new EventSource(`/api/runs/${executionId}/events`); + stream.addEventListener('message', (message) => { + applyRunEvent(JSON.parse(String(message.data)) as RunEvent); + if (isRunOver(useRunStore.getState().phase)) stream?.close(); + }); + stream.addEventListener('error', () => { + if (isRunOver(useRunStore.getState().phase)) return; + runErrored('Lost the event stream. Is the worker still running?'); + stream?.close(); + }); +} From 76fc8c6a7b7dd5e4403cac1fbeea6b9e986da63c Mon Sep 17 00:00:00 2001 From: Dawid Aksamski Date: Fri, 11 Sep 2026 18:15:43 +0200 Subject: [PATCH 09/22] docs(examples): README for the Temporal sample --- README.md | 2 + examples/workflow-builder-temporal/README.md | 135 ++++++++++++++++++ .../docs/editor-run.png | Bin 0 -> 83296 bytes .../docs/temporal-ui-retry.png | Bin 0 -> 268293 bytes 4 files changed, 137 insertions(+) create mode 100644 examples/workflow-builder-temporal/README.md create mode 100644 examples/workflow-builder-temporal/docs/editor-run.png create mode 100644 examples/workflow-builder-temporal/docs/temporal-ui-retry.png diff --git a/README.md b/README.md index 4bec5f419..02974fa69 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,8 @@ Don't want to install or clone anything yet? [Try the live demo](https://app.wor [![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/fork/github/synergycodes/workflowbuilder/tree/main/examples/workflow-builder-starter?title=Workflow%20Builder%20Starter%20Example&file=src%2Fapp.tsx) +Want to see a diagram execute on Temporal without Docker? The [Temporal sample](examples/workflow-builder-temporal/) runs one from the terminal and, optionally, from the canvas. + ### Path A. Embed the SDK Use Workflow Builder inside your own React app. No clone, no Docker. Install the SDK and its peer dependencies from npm: diff --git a/examples/workflow-builder-temporal/README.md b/examples/workflow-builder-temporal/README.md new file mode 100644 index 000000000..5ae4663f1 --- /dev/null +++ b/examples/workflow-builder-temporal/README.md @@ -0,0 +1,135 @@ +# Workflow Builder on Temporal + +Run a workflow drawn in the Workflow Builder editor as a durable Temporal Workflow Execution: every node becomes an Activity, retries and history come from Temporal, and the canvas shows each node's status live. + +This sample wires the [`@workflowbuilder/temporal`](https://www.npmjs.com/package/@workflowbuilder/temporal) plugin into a Temporal Worker and executes a three-node diagram authored in the [Workflow Builder](https://www.workflowbuilder.io) editor. One node fails on its first attempt on purpose, so the retry you see in Event History is a real one. An optional editor lets you change the diagram and watch nodes light up while Temporal runs them. + +![Nodes lighting up in the editor while Temporal runs the flow](docs/editor-run.png) + +## What runs where + +``` +editor (browser, optional) --POST canvas snapshot--> worker + bridge (npm start) --> Temporal (temporal server start-dev) + ^ | executors: trigger, action, condition + +----------- SSE: node events ------------------------+ store: prints events, streams them to the editor + +npm run workflow ---- reads src/diagram.json, starts one run, waits for it ----> Temporal +``` + +The diagram: + +``` +New request (trigger) --> Send email (action, fails once on purpose) --> Needs review? (condition: amount > 100) +``` + +## Prerequisites + +- Node.js 22 (20 works). +- The Temporal CLI: install it from (`brew install temporal` on macOS). +- Nothing else. No Docker, no database, no API keys. + +## Run it + +Fetch just this folder: + +```bash +npx degit synergycodes/workflowbuilder/examples/workflow-builder-temporal workflow-builder-temporal +cd workflow-builder-temporal +``` + +Terminal 1, a local Temporal server: + +```bash +temporal server start-dev +``` + +Terminal 2, the Worker: + +```bash +npm install +npm start +``` + +Expected, between Temporal's own startup lines: + +``` +worker polling task queue "workflow-execution" on 127.0.0.1:7233 +bridge listening on http://127.0.0.1:3210 +``` + +Terminal 3, one run of the diagram: + +```bash +npm run workflow +``` + +Expected in terminal 3: + +``` +started execution-74ef6654-b27c-4585-81fd-212ed1a3720a +watch it: http://localhost:8233/namespaces/default/workflows/execution-74ef6654-b27c-4585-81fd-212ed1a3720a +run completed +``` + +Expected in terminal 2, the store printing what the workflow emitted. Temporal's own `Activity failed` warning for the first attempt appears between lines 4 and 5: + +``` +[74ef6654] # 1 execution_started {"workflowId":"workflow-builder-temporal-sample"} +[74ef6654] # 2 node_started (trigger-1) {"config":{"description":"Workflow entry point","status":"active"},"visibleNodeIds":[]} +[74ef6654] # 3 node_completed (trigger-1) {"output":{"amount":250,"customer":"Ada"}} +[74ef6654] # 4 node_started (action-1) {"config":{"description":"Notify the customer","status":"active","message":"Thanks for reaching out - we are on it!"},"visibleNodeIds":["trigger-1"]} +[74ef6654] # 5 node_completed (action-1) {"output":{"delivered":true,"attempt":2,"message":"Thanks for reaching out - we are on it!"}} +[74ef6654] # 6 node_started (condition-1) {"config":{"description":"Checks the amount","status":"active","condition":"amount > 100"},"visibleNodeIds":["trigger-1","action-1"]} +[74ef6654] # 7 node_completed (condition-1) {"output":{"expression":"amount > 100","matched":true}} +[74ef6654] # 8 execution_completed +[74ef6654] status completed +``` + +## What you will see in Temporal UI + +Open the `watch it:` link. The run is one Workflow Execution. Each node is an Activity named after its label, because the plugin sets the node's label as the activity summary. Click `Send email`: attempt 1 failed with `mail_server_busy`, attempt 2 succeeded. The retry is Temporal's, governed by the plugin's default node profile (10 minutes, 2 attempts), not by anything in this sample. + +![The Send email activity with two attempts](docs/temporal-ui-retry.png) + +## Optional: run it from the canvas + +Keep terminals 1 and 2 running. The editor posts the canvas to the worker's bridge and reads events back from it. + +```bash +cd editor +npm install +npm run dev +``` + +Open the printed URL (Vite defaults to ). The editor opens with the same diagram. Click **Run on Temporal** in the top bar: each node shows a spinner while its Activity runs, then a check. `Send email` spins through both attempts. The **Temporal UI** link opens the run. + +Then change things. Edit the message, set the condition to `amount > 1000` and see `matched: false` in the worker terminal, add a second Action from the palette. The editor keeps your edits in `localStorage`; reload to keep them, clear site data to get the original diagram back. + +## How it works + +Five places carry the whole integration. Each has a comment where the reason is not visible in the code. + +1. [`src/workflows.ts`](src/workflows.ts) re-exports `runWorkflow`. Temporal bundles workflow code from one module, so a plugin cannot register its workflow for you; the re-export is how the bundle picks it up. +2. [`src/worker.ts`](src/worker.ts) creates `WorkflowBuilderPlugin({ executors, store })` and hands it to `Worker.create`. The plugin contributes the activities that execute a graph. Connection, task queue, and shutdown stay yours. +3. [`src/executors.ts`](src/executors.ts) is one function per node type. Executors run inside the plugin's `executeNode` Activity, which is why `action` can read Temporal's attempt number and why throwing `TransientNodeExecutionError` gets it retried while `PermanentNodeExecutionError` does not. +4. [`src/store.ts`](src/store.ts) implements the store port: where events and status changes land. Here they go to the terminal and to the editor's event stream. In your application they go to a database; the port is the same. +5. [`src/to-definition.ts`](src/to-definition.ts) turns the editor's snapshot into the plugin's `WorkflowDefinition`. The plugin knows nothing about React Flow; this file is the only glue. + +[`src/client.ts`](src/client.ts) starts a run through `TemporalWorkflowEngine` from `@workflowbuilder/temporal/client` and then waits on an ordinary Temporal workflow handle. [`src/bridge.ts`](src/bridge.ts) does the same for the editor over HTTP and streams the store's events back as Server-Sent Events. + +## Make it yours + +- **Add a node type.** Add a palette item under `editor/src/nodes/` and register it in `editor/src/nodes/index.ts`; add a variant to `SampleNode` in `src/nodes.ts` and an executor in `src/executors.ts`. TypeScript refuses to compile until the executor exists. +- **Tune retries per node type.** Replace the re-export in `src/workflows.ts` with `createRunWorkflow({ nodeActivityProfiles })` and pass the same map to the plugin. The plugin README explains why both sides need it. +- **Point at Temporal Cloud.** `TEMPORAL_ADDRESS`, `TEMPORAL_NAMESPACE`, and `TEMPORAL_UI_ORIGIN` are read in `src/config.ts`. TLS and API keys go on the two connections in `src/worker.ts` and `src/client.ts`. +- **Persist events.** Replace `createRunStore()` with anything that implements `ExecutionStore`. + +## Learn more + +- [`@workflowbuilder/temporal` on npm](https://www.npmjs.com/package/@workflowbuilder/temporal): profiles, node labels in Event History, versioning and replay. +- [Workflow Builder documentation](https://www.workflowbuilder.io/docs/overview/) +- [Temporal TypeScript SDK](https://docs.temporal.io/develop/typescript) + +## License + +Apache-2.0. See [LICENSE](LICENSE). diff --git a/examples/workflow-builder-temporal/docs/editor-run.png b/examples/workflow-builder-temporal/docs/editor-run.png new file mode 100644 index 0000000000000000000000000000000000000000..e416ddcebd86d5aedad02167761178278425198c GIT binary patch literal 83296 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
$3g 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 aNdE_Bwo~i>T{aE?0000 Date: Mon, 14 Sep 2026 14:47:20 +0200 Subject: [PATCH 10/22] feat(examples): evaluate decision branches against trigger and node outputs --- .../src/evaluate-branches.test.ts | 109 +++++++++++++++++ .../src/evaluate-branches.ts | 115 ++++++++++++++++++ .../workflow-builder-temporal/src/nodes.ts | 27 ++++ 3 files changed, 251 insertions(+) create mode 100644 examples/workflow-builder-temporal/src/evaluate-branches.test.ts create mode 100644 examples/workflow-builder-temporal/src/evaluate-branches.ts diff --git a/examples/workflow-builder-temporal/src/evaluate-branches.test.ts b/examples/workflow-builder-temporal/src/evaluate-branches.test.ts new file mode 100644 index 000000000..60385312c --- /dev/null +++ b/examples/workflow-builder-temporal/src/evaluate-branches.test.ts @@ -0,0 +1,109 @@ +import { PermanentNodeExecutionError } from '@workflowbuilder/temporal'; +import assert from 'node:assert/strict'; +import { test } from 'node:test'; + +import { conditionsHold, pickBranch, resolveOperand } from './evaluate-branches'; +import type { SampleCondition, SampleDecisionBranch } from './nodes'; + +const context = { + triggerPayload: { amount: 250, customer: 'Ada', due: '2026-01-15' }, + nodeOutputs: { + 'trigger-1': { amount: 250, customer: 'Ada' }, + 'action-1': { delivered: true, attempt: 2, meta: { tag: 'x' } }, + }, +}; + +function row( + x: string, + comparisonOperator: SampleCondition['comparisonOperator'], + y: string, + logicalOperator: SampleCondition['logicalOperator'] = 'AND', +): SampleCondition { + return { x, comparisonOperator, y, logicalOperator }; +} + +function branch(label: string, conditions: SampleCondition[]): SampleDecisionBranch { + return { id: label, sourceHandle: `source:inner:${label}`, label, conditions }; +} + +function permanentWithCode(code: string) { + return (error: unknown) => error instanceof PermanentNodeExecutionError && error.code === code; +} + +const holds = row('{{trigger.amount}}', 'isGreaterThan', '100'); +const fails = row('{{trigger.amount}}', 'isLessThan', '100'); + +test('resolves trigger and node references, nested paths included, and keeps surrounding text', () => { + assert.equal(resolveOperand('{{trigger.customer}}', context), 'Ada'); + assert.equal(resolveOperand('{{nodes.action-1.meta.tag}}', context), 'x'); + assert.equal(resolveOperand('100', context), '100'); + assert.equal(resolveOperand('id {{nodes.trigger-1.amount}}', context), 'id 250'); +}); + +test('stringifies non-string values the way execution-core does', () => { + assert.equal(resolveOperand('{{trigger.amount}}', context), '250'); + assert.equal(resolveOperand('{{nodes.action-1.delivered}}', context), 'true'); + assert.equal(resolveOperand('{{nodes.action-1.meta}}', context), '{"tag":"x"}'); +}); + +test('rejects a reference it cannot read as a permanent error', () => { + assert.throws(() => resolveOperand('{{amount}}', context), permanentWithCode('operand_invalid')); + assert.throws(() => resolveOperand('{{global.x}}', context), permanentWithCode('operand_invalid')); +}); + +test('rejects a reference to a missing value as a permanent error', () => { + assert.throws(() => resolveOperand('{{trigger.missing}}', context), permanentWithCode('operand_unresolved')); + assert.throws(() => resolveOperand('{{nodes.nope.amount}}', context), permanentWithCode('operand_unresolved')); +}); + +test('compares numbers with isGreaterThan, isLessThan and the OrEqual forms', () => { + assert.equal(conditionsHold([row('{{trigger.amount}}', 'isGreaterThan', '100')], context), true); + assert.equal(conditionsHold([row('{{trigger.amount}}', 'isLessThan', '100')], context), false); + assert.equal(conditionsHold([row('{{trigger.amount}}', 'isGreaterThanOrEqual', '250')], context), true); + assert.equal(conditionsHold([row('{{trigger.amount}}', 'isLessThanOrEqual', '250')], context), true); + assert.equal(conditionsHold([row('{{trigger.amount}}', 'isGreaterThan', 'abc')], context), false); +}); + +test('compares text with isEqual and isNotEqual after resolving both sides', () => { + assert.equal(conditionsHold([row('{{trigger.customer}}', 'isEqual', 'Ada')], context), true); + assert.equal(conditionsHold([row('{{trigger.customer}}', 'isNotEqual', 'Ada')], context), false); + assert.equal(conditionsHold([row('{{trigger.amount}}', 'isEqual', '250')], context), true); +}); + +test('isContaining and isNotContaining ignore case', () => { + assert.equal(conditionsHold([row('{{trigger.customer}}', 'isContaining', 'ada')], context), true); + assert.equal(conditionsHold([row('{{trigger.customer}}', 'isNotContaining', 'ADA')], context), false); +}); + +test('isBefore and isAfter compare dates strictly and never hold for text that is not a date', () => { + assert.equal(conditionsHold([row('{{trigger.due}}', 'isBefore', '2026-02-01')], context), true); + assert.equal(conditionsHold([row('{{trigger.due}}', 'isAfter', '2026-02-01')], context), false); + assert.equal(conditionsHold([row('{{trigger.due}}', 'isBefore', '2026-01-15')], context), false); + assert.equal(conditionsHold([row('{{trigger.due}}', 'isAfter', '2026-01-15')], context), false); + assert.equal(conditionsHold([row('soon', 'isAfter', '2026-01-01')], context), false); +}); + +test("joins rows left to right with each row's own logical operator, ignoring the first row's", () => { + assert.equal(conditionsHold([holds, row('{{trigger.amount}}', 'isLessThan', '100', 'OR')], context), true); + assert.equal(conditionsHold([holds, row('{{trigger.amount}}', 'isLessThan', '100', 'AND')], context), false); + assert.equal(conditionsHold([row('{{trigger.amount}}', 'isLessThan', '100', 'OR'), holds], context), false); +}); + +test('a branch with no condition rows always holds', () => { + assert.equal(conditionsHold([], context), true); + assert.equal(pickBranch([branch('a', [fails]), branch('b', [])], context).label, 'b'); +}); + +test('the first branch whose conditions hold wins and later branches are not evaluated', () => { + const later = branch('c', [row('{{trigger.missing}}', 'isEqual', 'x')]); + assert.equal(pickBranch([branch('a', [fails]), branch('b', [holds]), later], context).label, 'b'); +}); + +test('throws no_branch_matched as a permanent error when nothing holds', () => { + assert.throws(() => pickBranch([branch('a', [fails])], context), permanentWithCode('no_branch_matched')); +}); + +test('rejects an unknown comparison operator as a permanent error', () => { + const unknown = row('1', 'isSomething' as SampleCondition['comparisonOperator'], '1'); + assert.throws(() => conditionsHold([unknown], context), permanentWithCode('operator_unknown')); +}); diff --git a/examples/workflow-builder-temporal/src/evaluate-branches.ts b/examples/workflow-builder-temporal/src/evaluate-branches.ts new file mode 100644 index 000000000..7550c50e1 --- /dev/null +++ b/examples/workflow-builder-temporal/src/evaluate-branches.ts @@ -0,0 +1,115 @@ +import { type ExecutionContext, PermanentNodeExecutionError } from '@workflowbuilder/temporal'; + +import type { SampleComparisonOperator, SampleCondition, SampleDecisionBranch } from './nodes'; + +export type OperandContext = Pick; + +const REFERENCE = /\{\{([^}]*)\}\}/g; +const PATH = /^\s*(nodes|trigger)\.([\w-]+(?:\.[\w-]+)*)\s*$/; + +// First branch whose rows all hold wins, and a branch with no rows always holds, so it belongs +// last. The reference worker in this repo never matches an empty branch; this rule is the one you +// can read off the canvas. +export function pickBranch(branches: SampleDecisionBranch[], context: OperandContext): SampleDecisionBranch { + const winner = branches.find((branch) => conditionsHold(branch.conditions, context)); + + if (!winner) { + throw new PermanentNodeExecutionError( + 'no_branch_matched', + `None of the ${branches.length} branch(es) matched. Add a last branch with no conditions to catch everything else.`, + ); + } + + return winner; +} + +export function conditionsHold(conditions: SampleCondition[], context: OperandContext): boolean { + let result = true; + + for (const [index, condition] of conditions.entries()) { + const holds = compare( + resolveOperand(condition.x, context), + condition.comparisonOperator, + resolveOperand(condition.y, context), + ); + + if (index === 0) { + result = holds; + } else { + result = condition.logicalOperator === 'OR' ? result || holds : result && holds; + } + } + + return result; +} + +export function resolveOperand(operand: string, context: OperandContext): string { + return operand.replaceAll(REFERENCE, (reference, body: string) => { + const match = PATH.exec(body); + if (!match) { + throw new PermanentNodeExecutionError( + 'operand_invalid', + `Cannot read "${reference}". Expected {{trigger.}} or {{nodes..}}.`, + ); + } + + const value = valueAtPath(match[1] === 'nodes' ? context.nodeOutputs : context.triggerPayload, match[2]!); + if (value === undefined) { + throw new PermanentNodeExecutionError('operand_unresolved', `Nothing at "${reference}" in this run.`); + } + + return typeof value === 'string' ? value : JSON.stringify(value); + }); +} + +function valueAtPath(root: unknown, path: string): unknown { + let current = root; + + for (const key of path.split('.')) { + if (current === null || typeof current !== 'object') return undefined; + current = (current as Record)[key]; + } + + return current; +} + +function compare(left: string, operator: SampleComparisonOperator, right: string): boolean { + switch (operator) { + case 'isEqual': { + return left === right; + } + case 'isNotEqual': { + return left !== right; + } + case 'isGreaterThan': { + return Number(left) > Number(right); + } + case 'isLessThan': { + return Number(left) < Number(right); + } + case 'isGreaterThanOrEqual': { + return Number(left) >= Number(right); + } + case 'isLessThanOrEqual': { + return Number(left) <= Number(right); + } + case 'isContaining': { + return left.toLowerCase().includes(right.toLowerCase()); + } + case 'isNotContaining': { + return !left.toLowerCase().includes(right.toLowerCase()); + } + case 'isBefore': { + return Date.parse(left) < Date.parse(right); + } + case 'isAfter': { + return Date.parse(left) > Date.parse(right); + } + default: { + throw new PermanentNodeExecutionError( + 'operator_unknown', + `Unsupported comparison operator "${String(operator)}".`, + ); + } + } +} diff --git a/examples/workflow-builder-temporal/src/nodes.ts b/examples/workflow-builder-temporal/src/nodes.ts index 458764be7..136937d0d 100644 --- a/examples/workflow-builder-temporal/src/nodes.ts +++ b/examples/workflow-builder-temporal/src/nodes.ts @@ -12,6 +12,33 @@ export type SampleNode = TriggerNode | ActionNode | ConditionNode; export const SAMPLE_NODE_TYPES = ['trigger', 'action', 'condition'] as const satisfies readonly SampleNode['type'][]; +// The SDK does not export its DecisionBranch type, so the worker declares the shape it reads. +export type SampleComparisonOperator = + | 'isEqual' + | 'isNotEqual' + | 'isGreaterThan' + | 'isLessThan' + | 'isLessThanOrEqual' + | 'isGreaterThanOrEqual' + | 'isContaining' + | 'isNotContaining' + | 'isBefore' + | 'isAfter'; + +export type SampleCondition = { + x: string; + comparisonOperator: SampleComparisonOperator; + y: string; + logicalOperator: 'AND' | 'OR'; +}; + +export type SampleDecisionBranch = { + id: string; + sourceHandle: string; + label: string; + conditions: SampleCondition[]; +}; + export function isSampleNodeType(type: string): type is SampleNode['type'] { return (SAMPLE_NODE_TYPES as readonly string[]).includes(type); } From 765b20d2cf5535c91914893b287d247c8e4a2ad6 Mon Sep 17 00:00:00 2001 From: Dawid Aksamski Date: Mon, 14 Sep 2026 15:01:50 +0200 Subject: [PATCH 11/22] feat(examples): route the sample diagram through a decision node --- .../src/amount.test.ts | 36 +++++++ .../workflow-builder-temporal/src/amount.ts | 18 ++++ .../workflow-builder-temporal/src/client.ts | 7 +- .../src/diagram.json | 93 ++++++++++++++++--- .../src/evaluate-condition.test.ts | 29 ------ .../src/evaluate-condition.ts | 50 ---------- .../src/executors.test.ts | 38 ++++++++ .../src/executors.ts | 10 +- .../workflow-builder-temporal/src/nodes.ts | 14 ++- .../src/to-definition.test.ts | 32 +++++++ .../src/to-definition.ts | 4 +- 11 files changed, 228 insertions(+), 103 deletions(-) create mode 100644 examples/workflow-builder-temporal/src/amount.test.ts create mode 100644 examples/workflow-builder-temporal/src/amount.ts delete mode 100644 examples/workflow-builder-temporal/src/evaluate-condition.test.ts delete mode 100644 examples/workflow-builder-temporal/src/evaluate-condition.ts create mode 100644 examples/workflow-builder-temporal/src/executors.test.ts diff --git a/examples/workflow-builder-temporal/src/amount.test.ts b/examples/workflow-builder-temporal/src/amount.test.ts new file mode 100644 index 000000000..e1fe98f50 --- /dev/null +++ b/examples/workflow-builder-temporal/src/amount.test.ts @@ -0,0 +1,36 @@ +import assert from 'node:assert/strict'; +import { test } from 'node:test'; + +import { AMOUNT_RANGE, drawAmount, parseAmount } from './amount'; + +test('draws whole amounts inside the range, on both sides of the threshold', () => { + const draws = Array.from({ length: 1000 }, () => drawAmount()); + + assert.equal( + draws.every((amount) => Number.isInteger(amount) && amount >= AMOUNT_RANGE.min && amount <= AMOUNT_RANGE.max), + true, + ); + assert.equal( + draws.some((amount) => amount > 100), + true, + ); + assert.equal( + draws.some((amount) => amount <= 100), + true, + ); +}); + +test('reads a forced amount from the command line', () => { + assert.equal(parseAmount('50'), 50); + assert.equal(parseAmount('1'), 1); +}); + +test('no argument means no forced amount', () => { + assert.equal(parseAmount(), undefined); +}); + +test('rejects anything that is not a positive whole number', () => { + for (const raw of ['abc', '0', '-5', '1.5', '']) { + assert.throws(() => parseAmount(raw), /positive whole number/); + } +}); diff --git a/examples/workflow-builder-temporal/src/amount.ts b/examples/workflow-builder-temporal/src/amount.ts new file mode 100644 index 000000000..9f7bc6042 --- /dev/null +++ b/examples/workflow-builder-temporal/src/amount.ts @@ -0,0 +1,18 @@ +// The range straddles the diagram's threshold of 100, so about half the runs take each branch. +export const AMOUNT_RANGE = { min: 1, max: 200 } as const; + +export function drawAmount(): number { + const span = AMOUNT_RANGE.max - AMOUNT_RANGE.min + 1; + return AMOUNT_RANGE.min + Math.floor(Math.random() * span); +} + +export function parseAmount(raw?: string | undefined): number | undefined { + if (raw === undefined) return undefined; + + const amount = Number(raw); + if (!Number.isInteger(amount) || amount < 1) { + throw new Error(`"${raw}" is not an amount. Pass a positive whole number, for example: npm run workflow -- 50`); + } + + return amount; +} diff --git a/examples/workflow-builder-temporal/src/client.ts b/examples/workflow-builder-temporal/src/client.ts index 8d66c88cc..3bda8a8e7 100644 --- a/examples/workflow-builder-temporal/src/client.ts +++ b/examples/workflow-builder-temporal/src/client.ts @@ -4,10 +4,14 @@ import { TemporalWorkflowEngine } from '@workflowbuilder/temporal/client'; import { randomUUID } from 'node:crypto'; import { readFile } from 'node:fs/promises'; +import { drawAmount, parseAmount } from './amount'; import { TEMPORAL_ADDRESS, TEMPORAL_NAMESPACE, WORKFLOW_ID, temporalUiUrl } from './config'; import type { DiagramSnapshot } from './protocol'; import { snapshotToDefinition } from './to-definition'; +const forcedAmount = parseAmount(process.argv[2]); +const amount = forcedAmount ?? drawAmount(); + const snapshot = JSON.parse(await readFile(new URL('diagram.json', import.meta.url), 'utf8')) as DiagramSnapshot; const definition = snapshotToDefinition(snapshot, WORKFLOW_ID); @@ -22,11 +26,12 @@ await engine.submit({ workflowId: WORKFLOW_ID, executionId, definition, - triggerPayload: { amount: 250, customer: 'Ada' }, + triggerPayload: { amount, customer: 'Ada' }, variables: {}, global: {}, }); +console.log(`amount ${amount}${forcedAmount === undefined ? ' (random; force one with: npm run workflow -- 50)' : ''}`); console.log(`started ${executionWorkflowId(executionId)}`); console.log(`watch it: ${temporalUiUrl(executionId)}`); diff --git a/examples/workflow-builder-temporal/src/diagram.json b/examples/workflow-builder-temporal/src/diagram.json index e3803cc10..531433aa6 100644 --- a/examples/workflow-builder-temporal/src/diagram.json +++ b/examples/workflow-builder-temporal/src/diagram.json @@ -3,7 +3,7 @@ { "id": "trigger-1", "type": "node", - "position": { "x": 80, "y": 176 }, + "position": { "x": 80, "y": 200 }, "data": { "type": "trigger", "icon": "Lightning", @@ -18,7 +18,7 @@ { "id": "action-1", "type": "node", - "position": { "x": 440, "y": 176 }, + "position": { "x": 440, "y": 200 }, "data": { "type": "action", "icon": "PlayCircle", @@ -26,22 +26,75 @@ "label": "Send email", "description": "Notify the customer", "status": "active", - "message": "Thanks for reaching out - we are on it!" + "message": "Thanks for reaching out - we are on it!", + "simulateOutage": true } } }, { - "id": "condition-1", - "type": "node", - "position": { "x": 800, "y": 176 }, + "id": "decision-1", + "type": "decision-node", + "position": { "x": 800, "y": 120 }, "data": { - "type": "condition", - "icon": "Faders", + "type": "decision", + "icon": "ArrowsSplit", "properties": { "label": "Needs review?", - "description": "Checks the amount", + "description": "Routes by amount", "status": "active", - "condition": "amount > 100" + "decisionBranches": [ + { + "id": "branch-review", + "sourceHandle": "source:inner:review", + "label": "Needs review", + "conditions": [ + { + "x": "{{nodes.trigger-1.amount}}", + "comparisonOperator": "isGreaterThan", + "y": "100", + "logicalOperator": "AND" + } + ] + }, + { + "id": "branch-otherwise", + "sourceHandle": "source:inner:otherwise", + "label": "Otherwise", + "conditions": [] + } + ] + } + } + }, + { + "id": "action-2", + "type": "node", + "position": { "x": 1200, "y": 40 }, + "data": { + "type": "action", + "icon": "PlayCircle", + "properties": { + "label": "Escalate to a human", + "description": "Large amounts get a second pair of eyes", + "status": "active", + "message": "Flagged for manual review", + "simulateOutage": false + } + } + }, + { + "id": "action-3", + "type": "node", + "position": { "x": 1200, "y": 360 }, + "data": { + "type": "action", + "icon": "PlayCircle", + "properties": { + "label": "Auto-approve", + "description": "Small amounts go straight through", + "status": "active", + "message": "Approved automatically", + "simulateOutage": false } } } @@ -56,10 +109,26 @@ "type": "labelEdge" }, { - "id": "edge-action-condition", + "id": "edge-action-decision", "source": "action-1", "sourceHandle": "source", - "target": "condition-1", + "target": "decision-1", + "targetHandle": "target", + "type": "labelEdge" + }, + { + "id": "edge-decision-review", + "source": "decision-1", + "sourceHandle": "source:inner:review", + "target": "action-2", + "targetHandle": "target", + "type": "labelEdge" + }, + { + "id": "edge-decision-otherwise", + "source": "decision-1", + "sourceHandle": "source:inner:otherwise", + "target": "action-3", "targetHandle": "target", "type": "labelEdge" } diff --git a/examples/workflow-builder-temporal/src/evaluate-condition.test.ts b/examples/workflow-builder-temporal/src/evaluate-condition.test.ts deleted file mode 100644 index 0367d742c..000000000 --- a/examples/workflow-builder-temporal/src/evaluate-condition.test.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { PermanentNodeExecutionError } from '@workflowbuilder/temporal'; -import assert from 'node:assert/strict'; -import { test } from 'node:test'; - -import { evaluateCondition } from './evaluate-condition'; - -test('compares numbers', () => { - assert.equal(evaluateCondition('amount > 100', { amount: 250 }), true); - assert.equal(evaluateCondition('amount > 100', { amount: 50 }), false); - assert.equal(evaluateCondition('amount >= 100', { amount: 100 }), true); - assert.equal(evaluateCondition('amount < 100', { amount: 100 }), false); - assert.equal(evaluateCondition('amount <= 100', { amount: 100 }), true); -}); - -test('compares with == and != using the literal as written, quotes stripped', () => { - assert.equal(evaluateCondition('customer == "Ada"', { customer: 'Ada' }), true); - assert.equal(evaluateCondition("customer != 'Ada'", { customer: 'Bob' }), true); - assert.equal(evaluateCondition('amount == 250', { amount: 250 }), true); -}); - -test('a missing field never satisfies a numeric comparison', () => { - assert.equal(evaluateCondition('amount > 100', {}), false); - assert.equal(evaluateCondition('amount < 100', {}), false); -}); - -test('rejects an expression it cannot read as a permanent error', () => { - assert.throws(() => evaluateCondition('amount is big', { amount: 1 }), PermanentNodeExecutionError); - assert.throws(() => evaluateCondition('', {}), /Cannot read condition ""/); -}); diff --git a/examples/workflow-builder-temporal/src/evaluate-condition.ts b/examples/workflow-builder-temporal/src/evaluate-condition.ts deleted file mode 100644 index fc2a4928d..000000000 --- a/examples/workflow-builder-temporal/src/evaluate-condition.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { PermanentNodeExecutionError } from '@workflowbuilder/temporal'; - -const EXPRESSION = /^\s*([A-Za-z_][\w.]*)\s*(>=|<=|!=|==|>|<)\s*(.+?)\s*$/; - -// Deliberately tiny: one field of the trigger payload, one operator, one literal. A condition -// this parser rejects is a permanent error, which Temporal does not retry: no later attempt -// would read the text differently. -export function evaluateCondition(expression: string, payload: Record): boolean { - const match = EXPRESSION.exec(expression); - if (!match) { - throw new PermanentNodeExecutionError( - 'condition_invalid', - `Cannot read condition "${expression}". Expected " ", for example "amount > 100".`, - ); - } - - const left = payload[match[1]]; - const operator = match[2]; - const right = literal(match[3]); - - switch (operator) { - case '>': { - return Number(left) > Number(right); - } - case '>=': { - return Number(left) >= Number(right); - } - case '<': { - return Number(left) < Number(right); - } - case '<=': { - return Number(left) <= Number(right); - } - case '==': { - return String(left) === String(right); - } - case '!=': { - return String(left) !== String(right); - } - default: { - throw new PermanentNodeExecutionError('condition_invalid', `Unsupported operator "${operator}".`); - } - } -} - -function literal(raw: string): string | number { - const unquoted = raw.replace(/^(['"])(.*)\1$/, '$2'); - const asNumber = Number(unquoted); - return unquoted !== '' && !Number.isNaN(asNumber) ? asNumber : unquoted; -} diff --git a/examples/workflow-builder-temporal/src/executors.test.ts b/examples/workflow-builder-temporal/src/executors.test.ts new file mode 100644 index 000000000..ab41b9186 --- /dev/null +++ b/examples/workflow-builder-temporal/src/executors.test.ts @@ -0,0 +1,38 @@ +import assert from 'node:assert/strict'; +import { test } from 'node:test'; + +import { executors } from './executors'; +import type { SampleDecisionBranch } from './nodes'; + +const decisionBranches: SampleDecisionBranch[] = [ + { + id: 'branch-review', + sourceHandle: 'source:inner:review', + label: 'Needs review', + conditions: [ + { x: '{{nodes.trigger-1.amount}}', comparisonOperator: 'isGreaterThan', y: '100', logicalOperator: 'AND' }, + ], + }, + { id: 'branch-otherwise', sourceHandle: 'source:inner:otherwise', label: 'Otherwise', conditions: [] }, +]; + +// The action executor is covered by the end-to-end run instead: it reads Temporal's activity +// context, which throws outside an Activity. +test('decision names the winning branch and its handle as the next port', async () => { + const result = await executors.decision( + { id: 'decision-1', type: 'decision', config: { decisionBranches } }, + { + workflowId: 'wf', + executionId: 'run', + triggerPayload: { amount: 50 }, + nodeOutputs: { 'trigger-1': { amount: 50 } }, + variables: {}, + global: {}, + }, + ); + + assert.deepEqual(result, { + output: { branch: 'Otherwise', sourceHandle: 'source:inner:otherwise' }, + nextPort: 'source:inner:otherwise', + }); +}); diff --git a/examples/workflow-builder-temporal/src/executors.ts b/examples/workflow-builder-temporal/src/executors.ts index 109edbc05..34d897565 100644 --- a/examples/workflow-builder-temporal/src/executors.ts +++ b/examples/workflow-builder-temporal/src/executors.ts @@ -1,7 +1,7 @@ import { Context } from '@temporalio/activity'; import { type NodeExecutorRegistry, TransientNodeExecutionError } from '@workflowbuilder/temporal'; -import { evaluateCondition } from './evaluate-condition'; +import { pickBranch } from './evaluate-branches'; import type { SampleNode } from './nodes'; export const executors: NodeExecutorRegistry = { @@ -12,7 +12,7 @@ export const executors: NodeExecutorRegistry = { // is available. Failing the first attempt on purpose makes the retry that follows visible // in Event History; the retry itself is Temporal's, not this code's. const { attempt } = Context.current().info; - if (attempt === 1) { + if (node.config.simulateOutage === true && attempt === 1) { throw new TransientNodeExecutionError( 'mail_server_busy', 'Simulated outage on the first attempt. Temporal retries this activity.', @@ -21,8 +21,8 @@ export const executors: NodeExecutorRegistry = { return { output: { delivered: true, attempt, message: node.config.message ?? '' } }; }, - condition: (node, context) => { - const expression = node.config.condition ?? ''; - return { output: { expression, matched: evaluateCondition(expression, context.triggerPayload) } }; + decision: (node, context) => { + const branch = pickBranch(node.config.decisionBranches ?? [], context); + return { output: { branch: branch.label, sourceHandle: branch.sourceHandle }, nextPort: branch.sourceHandle }; }, }; diff --git a/examples/workflow-builder-temporal/src/nodes.ts b/examples/workflow-builder-temporal/src/nodes.ts index 136937d0d..59f4bde59 100644 --- a/examples/workflow-builder-temporal/src/nodes.ts +++ b/examples/workflow-builder-temporal/src/nodes.ts @@ -5,12 +5,18 @@ import type { BaseNode } from '@workflowbuilder/temporal'; type SharedConfig = { description?: string; status?: string }; export type TriggerNode = BaseNode & { type: 'trigger'; config: SharedConfig }; -export type ActionNode = BaseNode & { type: 'action'; config: SharedConfig & { message?: string } }; -export type ConditionNode = BaseNode & { type: 'condition'; config: SharedConfig & { condition?: string } }; +export type ActionNode = BaseNode & { + type: 'action'; + config: SharedConfig & { message?: string; simulateOutage?: boolean }; +}; +export type DecisionNode = BaseNode & { + type: 'decision'; + config: SharedConfig & { decisionBranches?: SampleDecisionBranch[] }; +}; -export type SampleNode = TriggerNode | ActionNode | ConditionNode; +export type SampleNode = TriggerNode | ActionNode | DecisionNode; -export const SAMPLE_NODE_TYPES = ['trigger', 'action', 'condition'] as const satisfies readonly SampleNode['type'][]; +export const SAMPLE_NODE_TYPES = ['trigger', 'action', 'decision'] as const satisfies readonly SampleNode['type'][]; // The SDK does not export its DecisionBranch type, so the worker declares the shape it reads. export type SampleComparisonOperator = diff --git a/examples/workflow-builder-temporal/src/to-definition.test.ts b/examples/workflow-builder-temporal/src/to-definition.test.ts index 71d29658a..fbd6c1885 100644 --- a/examples/workflow-builder-temporal/src/to-definition.test.ts +++ b/examples/workflow-builder-temporal/src/to-definition.test.ts @@ -62,3 +62,35 @@ test('rejects a diagram with no start node', () => { const noStart: DiagramSnapshot = { nodes: [{ id: 'a', data: { type: 'action' } }], edges: [] }; assert.throws(() => snapshotToDefinition(noStart, 'wf'), /no start node/); }); + +test("keeps a decision node's branches in config so the executor can read them", () => { + const decisionBranches = [ + { + id: 'branch-review', + sourceHandle: 'source:inner:review', + label: 'Needs review', + conditions: [ + { x: '{{nodes.trigger-1.amount}}', comparisonOperator: 'isGreaterThan', y: '100', logicalOperator: 'AND' }, + ], + }, + { id: 'branch-otherwise', sourceHandle: 'source:inner:otherwise', label: 'Otherwise', conditions: [] }, + ]; + + const definition = snapshotToDefinition( + { + nodes: [ + ...snapshot.nodes, + { id: 'decision-1', data: { type: 'decision', properties: { label: 'Needs review?', decisionBranches } } }, + ], + edges: [], + }, + 'wf', + ); + + assert.deepEqual(definition.nodes[2], { + id: 'decision-1', + type: 'decision', + label: 'Needs review?', + config: { decisionBranches }, + }); +}); diff --git a/examples/workflow-builder-temporal/src/to-definition.ts b/examples/workflow-builder-temporal/src/to-definition.ts index 80a8bb0a9..581d3bdfa 100644 --- a/examples/workflow-builder-temporal/src/to-definition.ts +++ b/examples/workflow-builder-temporal/src/to-definition.ts @@ -40,8 +40,8 @@ function toEdge(edge: SnapshotEdge): WorkflowEdgeDefinition { id: edge.id, sourceNodeId: edge.source, targetNodeId: edge.target, - // The editor names its default output handle "source". The runner consults handles only - // when a node names a port, so for these nodes the handle is carried, never read. + // The runner fires an edge only when its handle equals the port the source named. The + // decision node names a branch handle; the others name none, so their "source" is never read. ...(edge.sourceHandle ? { sourceHandle: edge.sourceHandle } : {}), }; } From 62d8bb48bf011b67b2d7fd6068adc4f04d4c9340 Mon Sep 17 00:00:00 2001 From: Dawid Aksamski Date: Mon, 14 Sep 2026 15:09:01 +0200 Subject: [PATCH 12/22] feat(examples): decision palette item and outage switch in the sample editor --- .../editor/src/execution/execution.css | 10 +++++ .../editor/src/execution/run-button.tsx | 25 +++++++++++- .../editor/src/execution/run-store.ts | 5 ++- .../editor/src/execution/run.ts | 14 +++---- .../nodes/action/default-properties-data.ts | 1 + .../editor/src/nodes/action/schema.ts | 1 + .../editor/src/nodes/action/uischema.ts | 5 +++ .../editor/src/nodes/condition/condition.ts | 15 ------- .../condition/default-properties-data.ts | 10 ----- .../editor/src/nodes/condition/schema.ts | 13 ------- .../editor/src/nodes/decision/decision.ts | 22 +++++++++++ .../nodes/decision/default-properties-data.ts | 12 ++++++ .../editor/src/nodes/decision/schema.ts | 39 +++++++++++++++++++ .../nodes/{condition => decision}/uischema.ts | 11 ++---- .../editor/src/nodes/index.ts | 4 +- .../editor/src/nodes/trigger/trigger.ts | 9 +++++ .../src/diagram.json | 2 + 17 files changed, 139 insertions(+), 59 deletions(-) delete mode 100644 examples/workflow-builder-temporal/editor/src/nodes/condition/condition.ts delete mode 100644 examples/workflow-builder-temporal/editor/src/nodes/condition/default-properties-data.ts delete mode 100644 examples/workflow-builder-temporal/editor/src/nodes/condition/schema.ts create mode 100644 examples/workflow-builder-temporal/editor/src/nodes/decision/decision.ts create mode 100644 examples/workflow-builder-temporal/editor/src/nodes/decision/default-properties-data.ts create mode 100644 examples/workflow-builder-temporal/editor/src/nodes/decision/schema.ts rename examples/workflow-builder-temporal/editor/src/nodes/{condition => decision}/uischema.ts (71%) diff --git a/examples/workflow-builder-temporal/editor/src/execution/execution.css b/examples/workflow-builder-temporal/editor/src/execution/execution.css index ad1d2b048..1c4e59422 100644 --- a/examples/workflow-builder-temporal/editor/src/execution/execution.css +++ b/examples/workflow-builder-temporal/editor/src/execution/execution.css @@ -6,6 +6,16 @@ font-size: 0.875rem; } +.run-amount { + width: 5.5rem; + padding: 0.5rem 0.625rem; + border: 0.0625rem solid rgb(0 0 0 / 20%); + border-radius: 0.5rem; + background: transparent; + color: inherit; + font: inherit; +} + .run-button { display: inline-flex; align-items: center; diff --git a/examples/workflow-builder-temporal/editor/src/execution/run-button.tsx b/examples/workflow-builder-temporal/editor/src/execution/run-button.tsx index e0a84e1b3..c27a7ee0e 100644 --- a/examples/workflow-builder-temporal/editor/src/execution/run-button.tsx +++ b/examples/workflow-builder-temporal/editor/src/execution/run-button.tsx @@ -1,22 +1,43 @@ import { ArrowSquareOutIcon, PlayIcon } from '@phosphor-icons/react'; +import { useState } from 'react'; import { runFromCanvas } from './run'; import { useRunStore } from './run-store'; // Mounted in the SDK's OptionalAppBarControls slot. export function RunButton() { + const [forcedAmount, setForcedAmount] = useState(''); const phase = useRunStore((state) => state.phase); + const amount = useRunStore((state) => state.amount); const message = useRunStore((state) => state.message); const temporalUiUrl = useRunStore((state) => state.temporalUiUrl); const busy = phase === 'starting' || phase === 'running'; + const parsed = Number(forcedAmount); + const forced = forcedAmount !== '' && Number.isInteger(parsed) && parsed > 0 ? parsed : undefined; + return (
- - {phase !== 'idle' && {message ?? phase}} + {phase !== 'idle' && ( + + {amount === undefined ? '' : `amount ${amount} · `} + {message ?? phase} + + )} {temporalUiUrl && ( Temporal UI diff --git a/examples/workflow-builder-temporal/editor/src/execution/run-store.ts b/examples/workflow-builder-temporal/editor/src/execution/run-store.ts index cf48342e0..870b079d5 100644 --- a/examples/workflow-builder-temporal/editor/src/execution/run-store.ts +++ b/examples/workflow-builder-temporal/editor/src/execution/run-store.ts @@ -7,6 +7,7 @@ export type RunPhase = 'idle' | 'starting' | 'running' | 'completed' | 'incomple export type RunState = { phase: RunPhase; + amount?: number; executionId?: string; temporalUiUrl?: string; message?: string; @@ -21,8 +22,8 @@ export function runStarting(): void { useRunStore.setState({ ...IDLE, phase: 'starting' }, true); } -export function runStarted(executionId: string, temporalUiUrl: string): void { - useRunStore.setState({ phase: 'running', executionId, temporalUiUrl }); +export function runStarted(executionId: string, temporalUiUrl: string, amount: number): void { + useRunStore.setState({ phase: 'running', executionId, temporalUiUrl, amount }); } export function runErrored(message: string): void { diff --git a/examples/workflow-builder-temporal/editor/src/execution/run.ts b/examples/workflow-builder-temporal/editor/src/execution/run.ts index 085ecb5e0..cb88bc578 100644 --- a/examples/workflow-builder-temporal/editor/src/execution/run.ts +++ b/examples/workflow-builder-temporal/editor/src/execution/run.ts @@ -1,20 +1,20 @@ import { getStoreDataForIntegration } from '@workflowbuilder/sdk'; +import { drawAmount } from '../../../src/amount'; import type { RunEvent, RunRequest, RunResponse } from '../../../src/protocol'; import { applyRunEvent, isRunOver, runErrored, runStarted, runStarting, useRunStore } from './run-store'; -// What the trigger node hands downstream. Change `amount` to 50 and the condition node -// reports `matched: false`. -const TRIGGER_PAYLOAD = { amount: 250, customer: 'Ada' }; - let stream: EventSource | undefined; -export async function runFromCanvas(): Promise { +export async function runFromCanvas(forcedAmount?: number): Promise { stream?.close(); runStarting(); + // The decision node routes on this. Left to chance, about half the runs take each branch. + const amount = forcedAmount ?? drawAmount(); + const { nodes, edges } = getStoreDataForIntegration(); - const request: RunRequest = { nodes, edges, triggerPayload: TRIGGER_PAYLOAD }; + const request: RunRequest = { nodes, edges, triggerPayload: { amount, customer: 'Ada' } }; let response: Response; try { @@ -35,7 +35,7 @@ export async function runFromCanvas(): Promise { } const { executionId, temporalUiUrl } = (await response.json()) as RunResponse; - runStarted(executionId, temporalUiUrl); + runStarted(executionId, temporalUiUrl, amount); stream = new EventSource(`/api/runs/${executionId}/events`); stream.addEventListener('message', (message) => { diff --git a/examples/workflow-builder-temporal/editor/src/nodes/action/default-properties-data.ts b/examples/workflow-builder-temporal/editor/src/nodes/action/default-properties-data.ts index c444f0509..74cbac593 100644 --- a/examples/workflow-builder-temporal/editor/src/nodes/action/default-properties-data.ts +++ b/examples/workflow-builder-temporal/editor/src/nodes/action/default-properties-data.ts @@ -7,4 +7,5 @@ export const defaultPropertiesData: Required = { - type: 'condition', - icon: 'Faders', - label: 'Condition', - description: 'Evaluates a condition', - defaultPropertiesData, - schema, - uischema, -}; diff --git a/examples/workflow-builder-temporal/editor/src/nodes/condition/default-properties-data.ts b/examples/workflow-builder-temporal/editor/src/nodes/condition/default-properties-data.ts deleted file mode 100644 index 1935e3922..000000000 --- a/examples/workflow-builder-temporal/editor/src/nodes/condition/default-properties-data.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type { NodeDataProperties } from '@workflowbuilder/sdk'; - -import type { ConditionNodeSchema } from './schema'; - -export const defaultPropertiesData: Required> = { - label: 'Condition', - description: 'Evaluates a condition', - status: 'active', - condition: '', -}; diff --git a/examples/workflow-builder-temporal/editor/src/nodes/condition/schema.ts b/examples/workflow-builder-temporal/editor/src/nodes/condition/schema.ts deleted file mode 100644 index 7a16f6a0c..000000000 --- a/examples/workflow-builder-temporal/editor/src/nodes/condition/schema.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { sharedProperties, statusOptions } from '@workflowbuilder/sdk'; -import type { NodeSchema } from '@workflowbuilder/sdk'; - -export const schema = { - type: 'object', - properties: { - ...sharedProperties, - status: { type: 'string', options: Object.values(statusOptions) }, - condition: { type: 'string' }, - }, -} satisfies NodeSchema; - -export type ConditionNodeSchema = typeof schema; diff --git a/examples/workflow-builder-temporal/editor/src/nodes/decision/decision.ts b/examples/workflow-builder-temporal/editor/src/nodes/decision/decision.ts new file mode 100644 index 000000000..f4c787fc8 --- /dev/null +++ b/examples/workflow-builder-temporal/editor/src/nodes/decision/decision.ts @@ -0,0 +1,22 @@ +import { NodeType, type PaletteItem } from '@workflowbuilder/sdk'; + +import { defaultPropertiesData } from './default-properties-data'; +import { type DecisionNodeSchema, schema } from './schema'; +import { uischema } from './uischema'; + +export const decision: PaletteItem = { + type: 'decision', + icon: 'ArrowsSplit', + label: 'Decision', + description: 'Routes to one branch', + templateType: NodeType.DecisionNode, + defaultPropertiesData, + schema, + uischema, + outputSchema: { + type: 'default', + properties: { + branch: { type: 'string', label: 'Branch', description: 'Label of the branch that was taken' }, + }, + }, +}; diff --git a/examples/workflow-builder-temporal/editor/src/nodes/decision/default-properties-data.ts b/examples/workflow-builder-temporal/editor/src/nodes/decision/default-properties-data.ts new file mode 100644 index 000000000..9b0f36c9a --- /dev/null +++ b/examples/workflow-builder-temporal/editor/src/nodes/decision/default-properties-data.ts @@ -0,0 +1,12 @@ +import type { NodeDataProperties } from '@workflowbuilder/sdk'; + +import type { DecisionNodeSchema } from './schema'; + +// No branches by default: a branch seeded here would carry a reference to a node id that only +// exists in this sample's diagram. Add branches on the node itself or in the properties panel. +export const defaultPropertiesData: Required> = { + label: 'Decision', + description: 'Routes to one branch', + status: 'active', + decisionBranches: [], +}; diff --git a/examples/workflow-builder-temporal/editor/src/nodes/decision/schema.ts b/examples/workflow-builder-temporal/editor/src/nodes/decision/schema.ts new file mode 100644 index 000000000..d4761b438 --- /dev/null +++ b/examples/workflow-builder-temporal/editor/src/nodes/decision/schema.ts @@ -0,0 +1,39 @@ +import { sharedProperties, statusOptions } from '@workflowbuilder/sdk'; +import type { NodeSchema } from '@workflowbuilder/sdk'; + +const conditions = { + type: 'array', + items: { + type: 'object', + properties: { + x: { type: 'string' }, + comparisonOperator: { type: 'string' }, + y: { type: 'string' }, + logicalOperator: { type: 'string' }, + }, + }, +} as const; + +const decisionBranches = { + type: 'array', + items: { + type: 'object', + properties: { + id: { type: 'string' }, + sourceHandle: { type: 'string' }, + label: { type: 'string' }, + conditions, + }, + }, +} as const; + +export const schema = { + type: 'object', + properties: { + ...sharedProperties, + status: { type: 'string', options: Object.values(statusOptions) }, + decisionBranches, + }, +} satisfies NodeSchema; + +export type DecisionNodeSchema = typeof schema; diff --git a/examples/workflow-builder-temporal/editor/src/nodes/condition/uischema.ts b/examples/workflow-builder-temporal/editor/src/nodes/decision/uischema.ts similarity index 71% rename from examples/workflow-builder-temporal/editor/src/nodes/condition/uischema.ts rename to examples/workflow-builder-temporal/editor/src/nodes/decision/uischema.ts index d70f477fc..f4da2d7fe 100644 --- a/examples/workflow-builder-temporal/editor/src/nodes/condition/uischema.ts +++ b/examples/workflow-builder-temporal/editor/src/nodes/decision/uischema.ts @@ -1,9 +1,9 @@ import type { UISchema } from '@workflowbuilder/sdk'; import { getScope, globalControls } from '@workflowbuilder/sdk'; -import type { ConditionNodeSchema } from './schema'; +import type { DecisionNodeSchema } from './schema'; -const scope = getScope; +const scope = getScope; const generalInformation: UISchema = { type: 'Accordion', @@ -20,11 +20,6 @@ export const uischema: UISchema = { elements: [ ...globalControls, generalInformation, - { - type: 'Text', - scope: scope('properties.condition'), - label: 'Condition', - placeholder: 'e.g. amount > 100', - }, + { type: 'DecisionBranches', scope: scope('properties.decisionBranches') }, ], }; diff --git a/examples/workflow-builder-temporal/editor/src/nodes/index.ts b/examples/workflow-builder-temporal/editor/src/nodes/index.ts index 10a0b8c65..82dd79edd 100644 --- a/examples/workflow-builder-temporal/editor/src/nodes/index.ts +++ b/examples/workflow-builder-temporal/editor/src/nodes/index.ts @@ -1,9 +1,9 @@ import type { PaletteItemOrGroup } from '@workflowbuilder/sdk'; import { action } from './action/action'; -import { condition } from './condition/condition'; +import { decision } from './decision/decision'; import { trigger } from './trigger/trigger'; // Passed to . Must stay a stable // module-level reference - see the SDK docs on the `nodeTypes` prop. -export const nodeTypes: PaletteItemOrGroup[] = [trigger, action, condition]; +export const nodeTypes: PaletteItemOrGroup[] = [trigger, action, decision]; diff --git a/examples/workflow-builder-temporal/editor/src/nodes/trigger/trigger.ts b/examples/workflow-builder-temporal/editor/src/nodes/trigger/trigger.ts index a430e7897..b29d6af5f 100644 --- a/examples/workflow-builder-temporal/editor/src/nodes/trigger/trigger.ts +++ b/examples/workflow-builder-temporal/editor/src/nodes/trigger/trigger.ts @@ -12,4 +12,13 @@ export const trigger: PaletteItem = { defaultPropertiesData, schema, uischema, + // What the run's trigger payload carries. Listed so a decision node's condition editor + // offers these fields in its variable picker. + outputSchema: { + type: 'default', + properties: { + amount: { type: 'number', label: 'Amount', description: 'Value of the request' }, + customer: { type: 'string', label: 'Customer', description: 'Who sent it' }, + }, + }, }; diff --git a/examples/workflow-builder-temporal/src/diagram.json b/examples/workflow-builder-temporal/src/diagram.json index 531433aa6..1b9c935ba 100644 --- a/examples/workflow-builder-temporal/src/diagram.json +++ b/examples/workflow-builder-temporal/src/diagram.json @@ -120,6 +120,7 @@ "id": "edge-decision-review", "source": "decision-1", "sourceHandle": "source:inner:review", + "zIndex": 1001, "target": "action-2", "targetHandle": "target", "type": "labelEdge" @@ -128,6 +129,7 @@ "id": "edge-decision-otherwise", "source": "decision-1", "sourceHandle": "source:inner:otherwise", + "zIndex": 1001, "target": "action-3", "targetHandle": "target", "type": "labelEdge" From b21818d5aa36c4d8bf0b664a14cc08993f499f74 Mon Sep 17 00:00:00 2001 From: Dawid Aksamski Date: Mon, 14 Sep 2026 16:15:32 +0200 Subject: [PATCH 13/22] feat(examples): drop amount input --- .../editor/src/execution/execution.css | 10 ---------- .../editor/src/execution/run-button.tsx | 17 +---------------- .../editor/src/execution/run.ts | 4 ++-- .../src/amount.test.ts | 17 +---------------- .../workflow-builder-temporal/src/amount.ts | 11 ----------- .../workflow-builder-temporal/src/client.ts | 8 ++++---- 6 files changed, 8 insertions(+), 59 deletions(-) diff --git a/examples/workflow-builder-temporal/editor/src/execution/execution.css b/examples/workflow-builder-temporal/editor/src/execution/execution.css index 1c4e59422..ad1d2b048 100644 --- a/examples/workflow-builder-temporal/editor/src/execution/execution.css +++ b/examples/workflow-builder-temporal/editor/src/execution/execution.css @@ -6,16 +6,6 @@ font-size: 0.875rem; } -.run-amount { - width: 5.5rem; - padding: 0.5rem 0.625rem; - border: 0.0625rem solid rgb(0 0 0 / 20%); - border-radius: 0.5rem; - background: transparent; - color: inherit; - font: inherit; -} - .run-button { display: inline-flex; align-items: center; diff --git a/examples/workflow-builder-temporal/editor/src/execution/run-button.tsx b/examples/workflow-builder-temporal/editor/src/execution/run-button.tsx index c27a7ee0e..614408917 100644 --- a/examples/workflow-builder-temporal/editor/src/execution/run-button.tsx +++ b/examples/workflow-builder-temporal/editor/src/execution/run-button.tsx @@ -1,34 +1,19 @@ import { ArrowSquareOutIcon, PlayIcon } from '@phosphor-icons/react'; -import { useState } from 'react'; import { runFromCanvas } from './run'; import { useRunStore } from './run-store'; // Mounted in the SDK's OptionalAppBarControls slot. export function RunButton() { - const [forcedAmount, setForcedAmount] = useState(''); const phase = useRunStore((state) => state.phase); const amount = useRunStore((state) => state.amount); const message = useRunStore((state) => state.message); const temporalUiUrl = useRunStore((state) => state.temporalUiUrl); const busy = phase === 'starting' || phase === 'running'; - const parsed = Number(forcedAmount); - const forced = forcedAmount !== '' && Number.isInteger(parsed) && parsed > 0 ? parsed : undefined; - return (
- setForcedAmount(event.target.value)} - /> - diff --git a/examples/workflow-builder-temporal/editor/src/execution/run.ts b/examples/workflow-builder-temporal/editor/src/execution/run.ts index cb88bc578..2d13514ee 100644 --- a/examples/workflow-builder-temporal/editor/src/execution/run.ts +++ b/examples/workflow-builder-temporal/editor/src/execution/run.ts @@ -6,12 +6,12 @@ import { applyRunEvent, isRunOver, runErrored, runStarted, runStarting, useRunSt let stream: EventSource | undefined; -export async function runFromCanvas(forcedAmount?: number): Promise { +export async function runFromCanvas(): Promise { stream?.close(); runStarting(); // The decision node routes on this. Left to chance, about half the runs take each branch. - const amount = forcedAmount ?? drawAmount(); + const amount = drawAmount(); const { nodes, edges } = getStoreDataForIntegration(); const request: RunRequest = { nodes, edges, triggerPayload: { amount, customer: 'Ada' } }; diff --git a/examples/workflow-builder-temporal/src/amount.test.ts b/examples/workflow-builder-temporal/src/amount.test.ts index e1fe98f50..da0557d21 100644 --- a/examples/workflow-builder-temporal/src/amount.test.ts +++ b/examples/workflow-builder-temporal/src/amount.test.ts @@ -1,7 +1,7 @@ import assert from 'node:assert/strict'; import { test } from 'node:test'; -import { AMOUNT_RANGE, drawAmount, parseAmount } from './amount'; +import { AMOUNT_RANGE, drawAmount } from './amount'; test('draws whole amounts inside the range, on both sides of the threshold', () => { const draws = Array.from({ length: 1000 }, () => drawAmount()); @@ -19,18 +19,3 @@ test('draws whole amounts inside the range, on both sides of the threshold', () true, ); }); - -test('reads a forced amount from the command line', () => { - assert.equal(parseAmount('50'), 50); - assert.equal(parseAmount('1'), 1); -}); - -test('no argument means no forced amount', () => { - assert.equal(parseAmount(), undefined); -}); - -test('rejects anything that is not a positive whole number', () => { - for (const raw of ['abc', '0', '-5', '1.5', '']) { - assert.throws(() => parseAmount(raw), /positive whole number/); - } -}); diff --git a/examples/workflow-builder-temporal/src/amount.ts b/examples/workflow-builder-temporal/src/amount.ts index 9f7bc6042..948e36be1 100644 --- a/examples/workflow-builder-temporal/src/amount.ts +++ b/examples/workflow-builder-temporal/src/amount.ts @@ -5,14 +5,3 @@ export function drawAmount(): number { const span = AMOUNT_RANGE.max - AMOUNT_RANGE.min + 1; return AMOUNT_RANGE.min + Math.floor(Math.random() * span); } - -export function parseAmount(raw?: string | undefined): number | undefined { - if (raw === undefined) return undefined; - - const amount = Number(raw); - if (!Number.isInteger(amount) || amount < 1) { - throw new Error(`"${raw}" is not an amount. Pass a positive whole number, for example: npm run workflow -- 50`); - } - - return amount; -} diff --git a/examples/workflow-builder-temporal/src/client.ts b/examples/workflow-builder-temporal/src/client.ts index 3bda8a8e7..d3e9cb72f 100644 --- a/examples/workflow-builder-temporal/src/client.ts +++ b/examples/workflow-builder-temporal/src/client.ts @@ -4,13 +4,13 @@ import { TemporalWorkflowEngine } from '@workflowbuilder/temporal/client'; import { randomUUID } from 'node:crypto'; import { readFile } from 'node:fs/promises'; -import { drawAmount, parseAmount } from './amount'; +import { drawAmount } from './amount'; import { TEMPORAL_ADDRESS, TEMPORAL_NAMESPACE, WORKFLOW_ID, temporalUiUrl } from './config'; import type { DiagramSnapshot } from './protocol'; import { snapshotToDefinition } from './to-definition'; -const forcedAmount = parseAmount(process.argv[2]); -const amount = forcedAmount ?? drawAmount(); +// The decision node routes on this. Left to chance, about half the runs take each branch. +const amount = drawAmount(); const snapshot = JSON.parse(await readFile(new URL('diagram.json', import.meta.url), 'utf8')) as DiagramSnapshot; const definition = snapshotToDefinition(snapshot, WORKFLOW_ID); @@ -31,7 +31,7 @@ await engine.submit({ global: {}, }); -console.log(`amount ${amount}${forcedAmount === undefined ? ' (random; force one with: npm run workflow -- 50)' : ''}`); +console.log(`amount ${amount}`); console.log(`started ${executionWorkflowId(executionId)}`); console.log(`watch it: ${temporalUiUrl(executionId)}`); From c3a326a5b77612d025feb4d0d0201669161a7edc Mon Sep 17 00:00:00 2001 From: Dawid Aksamski Date: Mon, 14 Sep 2026 16:17:55 +0200 Subject: [PATCH 14/22] docs(examples): document the decision branch in the Temporal sample README --- examples/workflow-builder-temporal/README.md | 78 +++++++++++++----- .../docs/editor-run.png | Bin 83296 -> 110951 bytes 2 files changed, 56 insertions(+), 22 deletions(-) diff --git a/examples/workflow-builder-temporal/README.md b/examples/workflow-builder-temporal/README.md index 5ae4663f1..1d8031c56 100644 --- a/examples/workflow-builder-temporal/README.md +++ b/examples/workflow-builder-temporal/README.md @@ -2,7 +2,7 @@ Run a workflow drawn in the Workflow Builder editor as a durable Temporal Workflow Execution: every node becomes an Activity, retries and history come from Temporal, and the canvas shows each node's status live. -This sample wires the [`@workflowbuilder/temporal`](https://www.npmjs.com/package/@workflowbuilder/temporal) plugin into a Temporal Worker and executes a three-node diagram authored in the [Workflow Builder](https://www.workflowbuilder.io) editor. One node fails on its first attempt on purpose, so the retry you see in Event History is a real one. An optional editor lets you change the diagram and watch nodes light up while Temporal runs them. +This sample wires the [`@workflowbuilder/temporal`](https://www.npmjs.com/package/@workflowbuilder/temporal) plugin into a Temporal Worker and executes a five-node diagram authored in the [Workflow Builder](https://www.workflowbuilder.io) editor. One node fails on its first attempt on purpose, so the retry you see in Event History is a real one, and a decision node routes each run down one of two branches while the other is pruned. An optional editor lets you change the diagram and watch nodes light up while Temporal runs them. ![Nodes lighting up in the editor while Temporal runs the flow](docs/editor-run.png) @@ -10,7 +10,7 @@ This sample wires the [`@workflowbuilder/temporal`](https://www.npmjs.com/packag ``` editor (browser, optional) --POST canvas snapshot--> worker + bridge (npm start) --> Temporal (temporal server start-dev) - ^ | executors: trigger, action, condition + ^ | executors: trigger, action, decision +----------- SSE: node events ------------------------+ store: prints events, streams them to the editor npm run workflow ---- reads src/diagram.json, starts one run, waits for it ----> Temporal @@ -19,7 +19,11 @@ npm run workflow ---- reads src/diagram.json, starts one run, waits for it ---- The diagram: ``` -New request (trigger) --> Send email (action, fails once on purpose) --> Needs review? (condition: amount > 100) +New request (trigger) + --> Send email (action, simulates an outage on its first attempt) + --> Needs review? (decision) + |-- "Needs review" {{nodes.trigger-1.amount}} isGreaterThan 100 --> Escalate to a human (action) + '-- "Otherwise" no conditions ----------------------------------> Auto-approve (action) ``` ## Prerequisites @@ -57,7 +61,8 @@ worker polling task queue "workflow-execution" on 127.0.0.1:7233 bridge listening on http://127.0.0.1:3210 ``` -Terminal 3, one run of the diagram: +Terminal 3, one run of the diagram. Each run draws an amount between 1 and 200, and the decision node +routes on it, so about half the runs take each branch: ```bash npm run workflow @@ -66,28 +71,46 @@ npm run workflow Expected in terminal 3: ``` -started execution-74ef6654-b27c-4585-81fd-212ed1a3720a -watch it: http://localhost:8233/namespaces/default/workflows/execution-74ef6654-b27c-4585-81fd-212ed1a3720a +amount 130 +started execution-878ca8cc-44f8-44a9-a1a9-bb80faa12c76 +watch it: http://localhost:8233/namespaces/default/workflows/execution-878ca8cc-44f8-44a9-a1a9-bb80faa12c76 run completed ``` -Expected in terminal 2, the store printing what the workflow emitted. Temporal's own `Activity failed` warning for the first attempt appears between lines 4 and 5: +Expected in terminal 2, the store printing what the workflow emitted. Temporal's own `Activity failed` +warning for the first attempt appears between lines 4 and 5, and the `decision-1` config line is long +because it carries the branches as authored: ``` -[74ef6654] # 1 execution_started {"workflowId":"workflow-builder-temporal-sample"} -[74ef6654] # 2 node_started (trigger-1) {"config":{"description":"Workflow entry point","status":"active"},"visibleNodeIds":[]} -[74ef6654] # 3 node_completed (trigger-1) {"output":{"amount":250,"customer":"Ada"}} -[74ef6654] # 4 node_started (action-1) {"config":{"description":"Notify the customer","status":"active","message":"Thanks for reaching out - we are on it!"},"visibleNodeIds":["trigger-1"]} -[74ef6654] # 5 node_completed (action-1) {"output":{"delivered":true,"attempt":2,"message":"Thanks for reaching out - we are on it!"}} -[74ef6654] # 6 node_started (condition-1) {"config":{"description":"Checks the amount","status":"active","condition":"amount > 100"},"visibleNodeIds":["trigger-1","action-1"]} -[74ef6654] # 7 node_completed (condition-1) {"output":{"expression":"amount > 100","matched":true}} -[74ef6654] # 8 execution_completed -[74ef6654] status completed +[878ca8cc] # 1 execution_started {"workflowId":"workflow-builder-temporal-sample"} +[878ca8cc] # 2 node_started (trigger-1) {"config":{"description":"Workflow entry point","status":"active"},"visibleNodeIds":[]} +[878ca8cc] # 3 node_completed (trigger-1) {"output":{"amount":130,"customer":"Ada"}} +[878ca8cc] # 4 node_started (action-1) {"config":{"description":"Notify the customer","status":"active","message":"Thanks for reaching out - we are on it!","simulateOutage":true},"visibleNodeIds":["trigger-1"]} +[878ca8cc] # 5 node_completed (action-1) {"output":{"delivered":true,"attempt":2,"message":"Thanks for reaching out - we are on it!"}} +[878ca8cc] # 6 node_started (decision-1) {"config":{"description":"Routes by amount","status":"active","decisionBranches":[...]},"visibleNodeIds":["trigger-1","action-1"]} +[878ca8cc] # 7 node_completed (decision-1) {"output":{"branch":"Needs review","sourceHandle":"source:inner:review"}} +[878ca8cc] # 8 node_skipped (action-3) {"reason":"branch_not_taken"} +[878ca8cc] # 9 node_started (action-2) {"config":{"description":"Large amounts get a second pair of eyes","status":"active","message":"Flagged for manual review","simulateOutage":false},"visibleNodeIds":["trigger-1","action-1","decision-1"]} +[878ca8cc] #10 node_completed (action-2) {"output":{"delivered":true,"attempt":1,"message":"Flagged for manual review"}} +[878ca8cc] #11 execution_completed +[878ca8cc] status completed +``` + +Only `Send email` carries `"attempt":2`: it is the one node with the outage switch on. Run it again +until the amount comes out at 100 or below, and lines 7 to 10 take the other branch instead: + +``` +[734af0c9] # 7 node_completed (decision-1) {"output":{"branch":"Otherwise","sourceHandle":"source:inner:otherwise"}} +[734af0c9] # 8 node_skipped (action-2) {"reason":"branch_not_taken"} +[734af0c9] # 9 node_started (action-3) {"config":{"description":"Small amounts go straight through","status":"active","message":"Approved automatically","simulateOutage":false},"visibleNodeIds":["trigger-1","action-1","decision-1"]} +[734af0c9] #10 node_completed (action-3) {"output":{"delivered":true,"attempt":1,"message":"Approved automatically"}} ``` ## What you will see in Temporal UI -Open the `watch it:` link. The run is one Workflow Execution. Each node is an Activity named after its label, because the plugin sets the node's label as the activity summary. Click `Send email`: attempt 1 failed with `mail_server_busy`, attempt 2 succeeded. The retry is Temporal's, governed by the plugin's default node profile (10 minutes, 2 attempts), not by anything in this sample. +Open the `watch it:` link. The run is one Workflow Execution. Each node is an Activity named after its label, because the plugin sets the node's label as the activity summary. Click `Send email`: attempt 1 failed with `mail_server_busy`, attempt 2 succeeded. The retry is Temporal's, governed by the plugin's default node profile (10 minutes, 2 attempts), not by anything in this sample. The Workflow input carries the amount the run was given. + +The pruned branch leaves no trace here: there is an Activity for `Escalate to a human` and none at all for `Auto-approve`, because the workflow decided against that branch and never scheduled it. ![The Send email activity with two attempts](docs/temporal-ui-retry.png) @@ -101,19 +124,28 @@ npm install npm run dev ``` -Open the printed URL (Vite defaults to ). The editor opens with the same diagram. Click **Run on Temporal** in the top bar: each node shows a spinner while its Activity runs, then a check. `Send email` spins through both attempts. The **Temporal UI** link opens the run. +Open the printed URL (Vite defaults to ). The editor opens with the same diagram. Click **Run on Temporal**: the amount is drawn for that run and shown beside the button. Each node shows a spinner while its Activity runs, then a check; `Send email` spins through both attempts, and the branch that was not taken turns grey. Run it a few times and the grey node swaps sides. The **Temporal UI** link opens the run. + +Then change things. Edit a message, turn the outage switch on for another action, select **Needs review?** and edit its branches in the properties panel, or add a node from the palette. -Then change things. Edit the message, set the condition to `amount > 1000` and see `matched: false` in the worker terminal, add a second Action from the palette. The editor keeps your edits in `localStorage`; reload to keep them, clear site data to get the original diagram back. +The editor keeps your edits in `localStorage` and saves again when the page closes, so editing `src/diagram.json` afterwards appears to do nothing. To go back to the file, run this in the browser console and let the page reload: + +```js +addEventListener('beforeunload', (event) => event.stopImmediatePropagation(), { capture: true }); +localStorage.removeItem('workflowBuilderDiagram'); +location.reload(); +``` ## How it works -Five places carry the whole integration. Each has a comment where the reason is not visible in the code. +Six places carry the whole integration. Each has a comment where the reason is not visible in the code. 1. [`src/workflows.ts`](src/workflows.ts) re-exports `runWorkflow`. Temporal bundles workflow code from one module, so a plugin cannot register its workflow for you; the re-export is how the bundle picks it up. 2. [`src/worker.ts`](src/worker.ts) creates `WorkflowBuilderPlugin({ executors, store })` and hands it to `Worker.create`. The plugin contributes the activities that execute a graph. Connection, task queue, and shutdown stay yours. 3. [`src/executors.ts`](src/executors.ts) is one function per node type. Executors run inside the plugin's `executeNode` Activity, which is why `action` can read Temporal's attempt number and why throwing `TransientNodeExecutionError` gets it retried while `PermanentNodeExecutionError` does not. -4. [`src/store.ts`](src/store.ts) implements the store port: where events and status changes land. Here they go to the terminal and to the editor's event stream. In your application they go to a database; the port is the same. -5. [`src/to-definition.ts`](src/to-definition.ts) turns the editor's snapshot into the plugin's `WorkflowDefinition`. The plugin knows nothing about React Flow; this file is the only glue. +4. [`src/evaluate-branches.ts`](src/evaluate-branches.ts) picks a branch, and the decision executor returns its handle as `nextPort`. That is what makes the graph branch: the runner fires only the edge whose handle matches, marks the rest `node_skipped`, and if a named port has no edge at all the run ends `incomplete` rather than failing. The first branch whose conditions all hold wins, and a branch with no conditions always holds, so it belongs last. (The reference worker in the Workflow Builder repository never matches an empty branch; this sample prefers the rule you can read off the canvas.) +5. [`src/store.ts`](src/store.ts) implements the store port: where events and status changes land. Here they go to the terminal and to the editor's event stream. In your application they go to a database; the port is the same. +6. [`src/to-definition.ts`](src/to-definition.ts) turns the editor's snapshot into the plugin's `WorkflowDefinition`. The plugin knows nothing about React Flow; this file is the only glue. [`src/client.ts`](src/client.ts) starts a run through `TemporalWorkflowEngine` from `@workflowbuilder/temporal/client` and then waits on an ordinary Temporal workflow handle. [`src/bridge.ts`](src/bridge.ts) does the same for the editor over HTTP and streams the store's events back as Server-Sent Events. @@ -122,6 +154,8 @@ Five places carry the whole integration. Each has a comment where the reason is - **Add a node type.** Add a palette item under `editor/src/nodes/` and register it in `editor/src/nodes/index.ts`; add a variant to `SampleNode` in `src/nodes.ts` and an executor in `src/executors.ts`. TypeScript refuses to compile until the executor exists. - **Tune retries per node type.** Replace the re-export in `src/workflows.ts` with `createRunWorkflow({ nodeActivityProfiles })` and pass the same map to the plugin. The plugin README explains why both sides need it. - **Point at Temporal Cloud.** `TEMPORAL_ADDRESS`, `TEMPORAL_NAMESPACE`, and `TEMPORAL_UI_ORIGIN` are read in `src/config.ts`. TLS and API keys go on the two connections in `src/worker.ts` and `src/client.ts`. +- **Toggle the outage.** Every Action has a _Simulate an outage on the first attempt_ switch. Turn it on for `Auto-approve` and that node retries too. +- **Add a branch.** Select **Needs review?**, add a branch on the node or in the properties panel, give it a title and conditions, then drag its new handle to a node. Keep the branch with no conditions last, or it swallows every run. - **Persist events.** Replace `createRunStore()` with anything that implements `ExecutionStore`. ## Learn more diff --git a/examples/workflow-builder-temporal/docs/editor-run.png b/examples/workflow-builder-temporal/docs/editor-run.png index e416ddcebd86d5aedad02167761178278425198c..f721837441414149b89f3b7d8229f4d48cfe72ff 100644 GIT binary patch literal 110951 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 aU|oH0u6)A{%b8{1KV?PrQ>iB|-TGe#sC4xJ literal 83296 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 mChvA2nwvIj>=mD}`mtP$p0;#oKX~WwE@ Date: Mon, 14 Sep 2026 16:26:12 +0200 Subject: [PATCH 15/22] chore(examples): drop unit tests from the Temporal sample --- .../workflow-builder-temporal/package.json | 1 - .../src/amount.test.ts | 21 ---- .../workflow-builder-temporal/src/amount.ts | 2 +- .../src/bridge.test.ts | 97 ---------------- .../workflow-builder-temporal/src/bridge.ts | 11 +- .../src/evaluate-branches.test.ts | 109 ------------------ .../src/evaluate-branches.ts | 6 +- .../src/executors.test.ts | 38 ------ .../src/store.test.ts | 53 --------- .../workflow-builder-temporal/src/store.ts | 10 +- .../src/to-definition.test.ts | 96 --------------- 11 files changed, 13 insertions(+), 431 deletions(-) delete mode 100644 examples/workflow-builder-temporal/src/amount.test.ts delete mode 100644 examples/workflow-builder-temporal/src/bridge.test.ts delete mode 100644 examples/workflow-builder-temporal/src/evaluate-branches.test.ts delete mode 100644 examples/workflow-builder-temporal/src/executors.test.ts delete mode 100644 examples/workflow-builder-temporal/src/store.test.ts delete mode 100644 examples/workflow-builder-temporal/src/to-definition.test.ts diff --git a/examples/workflow-builder-temporal/package.json b/examples/workflow-builder-temporal/package.json index f9ffcc9ca..f9e6cdaa5 100644 --- a/examples/workflow-builder-temporal/package.json +++ b/examples/workflow-builder-temporal/package.json @@ -12,7 +12,6 @@ "start": "tsx src/worker.ts", "start.watch": "tsx watch src/worker.ts", "workflow": "tsx src/client.ts", - "test": "tsx --test src/*.test.ts", "typecheck": "tsc --noEmit" }, "dependencies": { diff --git a/examples/workflow-builder-temporal/src/amount.test.ts b/examples/workflow-builder-temporal/src/amount.test.ts deleted file mode 100644 index da0557d21..000000000 --- a/examples/workflow-builder-temporal/src/amount.test.ts +++ /dev/null @@ -1,21 +0,0 @@ -import assert from 'node:assert/strict'; -import { test } from 'node:test'; - -import { AMOUNT_RANGE, drawAmount } from './amount'; - -test('draws whole amounts inside the range, on both sides of the threshold', () => { - const draws = Array.from({ length: 1000 }, () => drawAmount()); - - assert.equal( - draws.every((amount) => Number.isInteger(amount) && amount >= AMOUNT_RANGE.min && amount <= AMOUNT_RANGE.max), - true, - ); - assert.equal( - draws.some((amount) => amount > 100), - true, - ); - assert.equal( - draws.some((amount) => amount <= 100), - true, - ); -}); diff --git a/examples/workflow-builder-temporal/src/amount.ts b/examples/workflow-builder-temporal/src/amount.ts index 948e36be1..17156d44e 100644 --- a/examples/workflow-builder-temporal/src/amount.ts +++ b/examples/workflow-builder-temporal/src/amount.ts @@ -1,5 +1,5 @@ // The range straddles the diagram's threshold of 100, so about half the runs take each branch. -export const AMOUNT_RANGE = { min: 1, max: 200 } as const; +const AMOUNT_RANGE = { min: 1, max: 200 } as const; export function drawAmount(): number { const span = AMOUNT_RANGE.max - AMOUNT_RANGE.min + 1; diff --git a/examples/workflow-builder-temporal/src/bridge.test.ts b/examples/workflow-builder-temporal/src/bridge.test.ts deleted file mode 100644 index bbdb0beaf..000000000 --- a/examples/workflow-builder-temporal/src/bridge.test.ts +++ /dev/null @@ -1,97 +0,0 @@ -import type { WorkflowExecutionInput } from '@workflowbuilder/temporal'; -import assert from 'node:assert/strict'; -import type { AddressInfo } from 'node:net'; -import { after, before, test } from 'node:test'; - -import { type RunSubmitter, startBridge } from './bridge'; -import type { SampleNode } from './nodes'; -import type { RunEvent, RunResponse } from './protocol'; -import { createRunStore } from './store'; - -const submitted: WorkflowExecutionInput[] = []; -const engine: RunSubmitter = { - async submit(input) { - submitted.push(input); - }, -}; -const store = createRunStore({ log: () => {} }); - -let server: ReturnType; -let baseUrl = ''; - -before(async () => { - server = startBridge({ engine, store, port: 0 }); - await new Promise((resolve) => server.once('listening', resolve)); - baseUrl = `http://127.0.0.1:${(server.address() as AddressInfo).port}`; -}); - -after(() => new Promise((resolve) => server.close(() => resolve()))); - -const snapshot = { - nodes: [{ id: 'trigger-1', data: { type: 'trigger', properties: { label: 'New request' } } }], - edges: [], -}; - -function post(body: unknown) { - return fetch(`${baseUrl}/api/runs`, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify(body), - }); -} - -test('POST /api/runs maps the snapshot, submits it, and answers with the run id and UI link', async () => { - const response = await post({ ...snapshot, triggerPayload: { amount: 1 } }); - assert.equal(response.status, 201); - - const body = (await response.json()) as RunResponse; - assert.equal(submitted.length, 1); - assert.equal(submitted[0].executionId, body.executionId); - assert.equal(submitted[0].definition.nodes[0].role, 'start'); - assert.deepEqual(submitted[0].triggerPayload, { amount: 1 }); - assert.match(body.temporalUiUrl, new RegExp(`/workflows/execution-${body.executionId}$`)); -}); - -test('POST /api/runs answers 400 with the mapper message for a diagram it cannot run', async () => { - const response = await post({ nodes: [{ id: 'x', data: { type: 'mystery' } }], edges: [] }); - assert.equal(response.status, 400); - assert.match(((await response.json()) as { message: string }).message, /Unknown node type "mystery"/); -}); - -test('POST /api/runs answers 400 when the body is not a snapshot', async () => { - const response = await post({ hello: 'world' }); - assert.equal(response.status, 400); - assert.match(((await response.json()) as { message: string }).message, /nodes/); -}); - -test('unknown routes answer 404', async () => { - const response = await fetch(`${baseUrl}/api/nothing`); - assert.equal(response.status, 404); -}); - -test('GET /api/runs/:id/events replays history, then streams live events', async () => { - await store.emitExecutionEvent('run-1', 1, 'execution_started'); - - const response = await fetch(`${baseUrl}/api/runs/run-1/events`); - assert.equal(response.headers.get('content-type'), 'text/event-stream'); - const reader = response.body!.getReader(); - const decoder = new TextDecoder(); - let buffered = ''; - const nextEvent = async (): Promise => { - while (!buffered.includes('\n\n')) { - const { value, done } = await reader.read(); - if (done) throw new Error('stream ended'); - buffered += decoder.decode(value, { stream: true }); - } - const [frame, ...rest] = buffered.split('\n\n'); - buffered = rest.join('\n\n'); - return JSON.parse(frame.replace(/^data: /, '')) as RunEvent; - }; - - assert.deepEqual(await nextEvent(), { kind: 'event', sequence: 1, type: 'execution_started' }); - - await store.updateExecutionStatus('run-1', 'completed'); - assert.deepEqual(await nextEvent(), { kind: 'status', status: 'completed' }); - - await reader.cancel(); -}); diff --git a/examples/workflow-builder-temporal/src/bridge.ts b/examples/workflow-builder-temporal/src/bridge.ts index 905bf0dda..5c0f780cc 100644 --- a/examples/workflow-builder-temporal/src/bridge.ts +++ b/examples/workflow-builder-temporal/src/bridge.ts @@ -8,11 +8,8 @@ import type { RunEvent, RunRequest, RunResponse } from './protocol'; import type { RunStore } from './store'; import { snapshotToDefinition } from './to-definition'; -// Only `submit` is needed here, so a fake in tests stays one method wide. -export type RunSubmitter = Pick, 'submit'>; - export type BridgeOptions = { - engine: RunSubmitter; + engine: WorkflowEnginePort; store: RunStore; port: number; }; @@ -46,7 +43,11 @@ export function startBridge({ engine, store, port }: BridgeOptions): Server { return server; } -async function startRun(request: IncomingMessage, response: ServerResponse, engine: RunSubmitter): Promise { +async function startRun( + request: IncomingMessage, + response: ServerResponse, + engine: WorkflowEnginePort, +): Promise { const body = JSON.parse(await readBody(request)) as Partial; if (!Array.isArray(body.nodes) || !Array.isArray(body.edges)) { throw new TypeError('The body must be a diagram snapshot: { nodes: [], edges: [], triggerPayload?: {} }.'); diff --git a/examples/workflow-builder-temporal/src/evaluate-branches.test.ts b/examples/workflow-builder-temporal/src/evaluate-branches.test.ts deleted file mode 100644 index 60385312c..000000000 --- a/examples/workflow-builder-temporal/src/evaluate-branches.test.ts +++ /dev/null @@ -1,109 +0,0 @@ -import { PermanentNodeExecutionError } from '@workflowbuilder/temporal'; -import assert from 'node:assert/strict'; -import { test } from 'node:test'; - -import { conditionsHold, pickBranch, resolveOperand } from './evaluate-branches'; -import type { SampleCondition, SampleDecisionBranch } from './nodes'; - -const context = { - triggerPayload: { amount: 250, customer: 'Ada', due: '2026-01-15' }, - nodeOutputs: { - 'trigger-1': { amount: 250, customer: 'Ada' }, - 'action-1': { delivered: true, attempt: 2, meta: { tag: 'x' } }, - }, -}; - -function row( - x: string, - comparisonOperator: SampleCondition['comparisonOperator'], - y: string, - logicalOperator: SampleCondition['logicalOperator'] = 'AND', -): SampleCondition { - return { x, comparisonOperator, y, logicalOperator }; -} - -function branch(label: string, conditions: SampleCondition[]): SampleDecisionBranch { - return { id: label, sourceHandle: `source:inner:${label}`, label, conditions }; -} - -function permanentWithCode(code: string) { - return (error: unknown) => error instanceof PermanentNodeExecutionError && error.code === code; -} - -const holds = row('{{trigger.amount}}', 'isGreaterThan', '100'); -const fails = row('{{trigger.amount}}', 'isLessThan', '100'); - -test('resolves trigger and node references, nested paths included, and keeps surrounding text', () => { - assert.equal(resolveOperand('{{trigger.customer}}', context), 'Ada'); - assert.equal(resolveOperand('{{nodes.action-1.meta.tag}}', context), 'x'); - assert.equal(resolveOperand('100', context), '100'); - assert.equal(resolveOperand('id {{nodes.trigger-1.amount}}', context), 'id 250'); -}); - -test('stringifies non-string values the way execution-core does', () => { - assert.equal(resolveOperand('{{trigger.amount}}', context), '250'); - assert.equal(resolveOperand('{{nodes.action-1.delivered}}', context), 'true'); - assert.equal(resolveOperand('{{nodes.action-1.meta}}', context), '{"tag":"x"}'); -}); - -test('rejects a reference it cannot read as a permanent error', () => { - assert.throws(() => resolveOperand('{{amount}}', context), permanentWithCode('operand_invalid')); - assert.throws(() => resolveOperand('{{global.x}}', context), permanentWithCode('operand_invalid')); -}); - -test('rejects a reference to a missing value as a permanent error', () => { - assert.throws(() => resolveOperand('{{trigger.missing}}', context), permanentWithCode('operand_unresolved')); - assert.throws(() => resolveOperand('{{nodes.nope.amount}}', context), permanentWithCode('operand_unresolved')); -}); - -test('compares numbers with isGreaterThan, isLessThan and the OrEqual forms', () => { - assert.equal(conditionsHold([row('{{trigger.amount}}', 'isGreaterThan', '100')], context), true); - assert.equal(conditionsHold([row('{{trigger.amount}}', 'isLessThan', '100')], context), false); - assert.equal(conditionsHold([row('{{trigger.amount}}', 'isGreaterThanOrEqual', '250')], context), true); - assert.equal(conditionsHold([row('{{trigger.amount}}', 'isLessThanOrEqual', '250')], context), true); - assert.equal(conditionsHold([row('{{trigger.amount}}', 'isGreaterThan', 'abc')], context), false); -}); - -test('compares text with isEqual and isNotEqual after resolving both sides', () => { - assert.equal(conditionsHold([row('{{trigger.customer}}', 'isEqual', 'Ada')], context), true); - assert.equal(conditionsHold([row('{{trigger.customer}}', 'isNotEqual', 'Ada')], context), false); - assert.equal(conditionsHold([row('{{trigger.amount}}', 'isEqual', '250')], context), true); -}); - -test('isContaining and isNotContaining ignore case', () => { - assert.equal(conditionsHold([row('{{trigger.customer}}', 'isContaining', 'ada')], context), true); - assert.equal(conditionsHold([row('{{trigger.customer}}', 'isNotContaining', 'ADA')], context), false); -}); - -test('isBefore and isAfter compare dates strictly and never hold for text that is not a date', () => { - assert.equal(conditionsHold([row('{{trigger.due}}', 'isBefore', '2026-02-01')], context), true); - assert.equal(conditionsHold([row('{{trigger.due}}', 'isAfter', '2026-02-01')], context), false); - assert.equal(conditionsHold([row('{{trigger.due}}', 'isBefore', '2026-01-15')], context), false); - assert.equal(conditionsHold([row('{{trigger.due}}', 'isAfter', '2026-01-15')], context), false); - assert.equal(conditionsHold([row('soon', 'isAfter', '2026-01-01')], context), false); -}); - -test("joins rows left to right with each row's own logical operator, ignoring the first row's", () => { - assert.equal(conditionsHold([holds, row('{{trigger.amount}}', 'isLessThan', '100', 'OR')], context), true); - assert.equal(conditionsHold([holds, row('{{trigger.amount}}', 'isLessThan', '100', 'AND')], context), false); - assert.equal(conditionsHold([row('{{trigger.amount}}', 'isLessThan', '100', 'OR'), holds], context), false); -}); - -test('a branch with no condition rows always holds', () => { - assert.equal(conditionsHold([], context), true); - assert.equal(pickBranch([branch('a', [fails]), branch('b', [])], context).label, 'b'); -}); - -test('the first branch whose conditions hold wins and later branches are not evaluated', () => { - const later = branch('c', [row('{{trigger.missing}}', 'isEqual', 'x')]); - assert.equal(pickBranch([branch('a', [fails]), branch('b', [holds]), later], context).label, 'b'); -}); - -test('throws no_branch_matched as a permanent error when nothing holds', () => { - assert.throws(() => pickBranch([branch('a', [fails])], context), permanentWithCode('no_branch_matched')); -}); - -test('rejects an unknown comparison operator as a permanent error', () => { - const unknown = row('1', 'isSomething' as SampleCondition['comparisonOperator'], '1'); - assert.throws(() => conditionsHold([unknown], context), permanentWithCode('operator_unknown')); -}); diff --git a/examples/workflow-builder-temporal/src/evaluate-branches.ts b/examples/workflow-builder-temporal/src/evaluate-branches.ts index 7550c50e1..02fd5de74 100644 --- a/examples/workflow-builder-temporal/src/evaluate-branches.ts +++ b/examples/workflow-builder-temporal/src/evaluate-branches.ts @@ -2,7 +2,7 @@ import { type ExecutionContext, PermanentNodeExecutionError } from '@workflowbui import type { SampleComparisonOperator, SampleCondition, SampleDecisionBranch } from './nodes'; -export type OperandContext = Pick; +type OperandContext = Pick; const REFERENCE = /\{\{([^}]*)\}\}/g; const PATH = /^\s*(nodes|trigger)\.([\w-]+(?:\.[\w-]+)*)\s*$/; @@ -23,7 +23,7 @@ export function pickBranch(branches: SampleDecisionBranch[], context: OperandCon return winner; } -export function conditionsHold(conditions: SampleCondition[], context: OperandContext): boolean { +function conditionsHold(conditions: SampleCondition[], context: OperandContext): boolean { let result = true; for (const [index, condition] of conditions.entries()) { @@ -43,7 +43,7 @@ export function conditionsHold(conditions: SampleCondition[], context: OperandCo return result; } -export function resolveOperand(operand: string, context: OperandContext): string { +function resolveOperand(operand: string, context: OperandContext): string { return operand.replaceAll(REFERENCE, (reference, body: string) => { const match = PATH.exec(body); if (!match) { diff --git a/examples/workflow-builder-temporal/src/executors.test.ts b/examples/workflow-builder-temporal/src/executors.test.ts deleted file mode 100644 index ab41b9186..000000000 --- a/examples/workflow-builder-temporal/src/executors.test.ts +++ /dev/null @@ -1,38 +0,0 @@ -import assert from 'node:assert/strict'; -import { test } from 'node:test'; - -import { executors } from './executors'; -import type { SampleDecisionBranch } from './nodes'; - -const decisionBranches: SampleDecisionBranch[] = [ - { - id: 'branch-review', - sourceHandle: 'source:inner:review', - label: 'Needs review', - conditions: [ - { x: '{{nodes.trigger-1.amount}}', comparisonOperator: 'isGreaterThan', y: '100', logicalOperator: 'AND' }, - ], - }, - { id: 'branch-otherwise', sourceHandle: 'source:inner:otherwise', label: 'Otherwise', conditions: [] }, -]; - -// The action executor is covered by the end-to-end run instead: it reads Temporal's activity -// context, which throws outside an Activity. -test('decision names the winning branch and its handle as the next port', async () => { - const result = await executors.decision( - { id: 'decision-1', type: 'decision', config: { decisionBranches } }, - { - workflowId: 'wf', - executionId: 'run', - triggerPayload: { amount: 50 }, - nodeOutputs: { 'trigger-1': { amount: 50 } }, - variables: {}, - global: {}, - }, - ); - - assert.deepEqual(result, { - output: { branch: 'Otherwise', sourceHandle: 'source:inner:otherwise' }, - nextPort: 'source:inner:otherwise', - }); -}); diff --git a/examples/workflow-builder-temporal/src/store.test.ts b/examples/workflow-builder-temporal/src/store.test.ts deleted file mode 100644 index dcb459e4d..000000000 --- a/examples/workflow-builder-temporal/src/store.test.ts +++ /dev/null @@ -1,53 +0,0 @@ -import assert from 'node:assert/strict'; -import { test } from 'node:test'; - -import type { RunEvent } from './protocol'; -import { createRunStore } from './store'; - -const silent = { log: () => {} }; - -test('records events and status changes in order and hands them to subscribers', async () => { - const store = createRunStore(silent); - const seen: RunEvent[] = []; - const unsubscribe = store.subscribe('run-1', (event) => seen.push(event)); - - await store.emitExecutionEvent('run-1', 1, 'execution_started'); - await store.emitExecutionEvent('run-1', 2, 'node_started', undefined, 'trigger-1'); - await store.updateExecutionStatus('run-1', 'running'); - unsubscribe(); - await store.updateExecutionStatus('run-1', 'completed'); - - assert.equal(seen.length, 3); - assert.deepEqual(store.history('run-1'), [ - { kind: 'event', sequence: 1, type: 'execution_started', nodeId: undefined, payload: undefined }, - { kind: 'event', sequence: 2, type: 'node_started', nodeId: 'trigger-1', payload: undefined }, - { kind: 'status', status: 'running', errorMessage: undefined }, - { kind: 'status', status: 'completed', errorMessage: undefined }, - ]); -}); - -test('ignores a redelivered event whose sequence it already holds', async () => { - const store = createRunStore(silent); - await store.emitExecutionEvent('run-1', 1, 'execution_started'); - await store.emitExecutionEvent('run-1', 1, 'execution_started'); - assert.equal(store.history('run-1').length, 1); -}); - -test('keeps runs apart', async () => { - const store = createRunStore(silent); - await store.emitExecutionEvent('run-1', 1, 'execution_started'); - await store.emitExecutionEvent('run-2', 1, 'execution_started'); - assert.equal(store.history('run-1').length, 1); - assert.equal(store.history('run-3').length, 0); -}); - -test('prints one line per event with the payload when there is one', async () => { - const lines: string[] = []; - const store = createRunStore({ log: (line) => lines.push(line) }); - await store.emitExecutionEvent('abcdef12-0000', 3, 'node_completed', { output: { ok: true } }, 'action-1'); - await store.updateExecutionStatus('abcdef12-0000', 'failed', 'boom'); - assert.deepEqual(lines, [ - '[abcdef12] # 3 node_completed (action-1) {"output":{"ok":true}}', - '[abcdef12] status failed: boom', - ]); -}); diff --git a/examples/workflow-builder-temporal/src/store.ts b/examples/workflow-builder-temporal/src/store.ts index babef634f..83cbe44dc 100644 --- a/examples/workflow-builder-temporal/src/store.ts +++ b/examples/workflow-builder-temporal/src/store.ts @@ -9,14 +9,10 @@ export type RunStore = ExecutionStore & { history(executionId: string): RunEvent[]; }; -export type RunStoreOptions = { - log?: (line: string) => void; -}; - // The plugin decides what is emitted and in which order; this is where it lands. Here: the // terminal, plus anyone subscribed (the bridge's event streams). A real application writes // rows here instead. The port is the same. -export function createRunStore({ log = console.log }: RunStoreOptions = {}): RunStore { +export function createRunStore(): RunStore { const histories = new Map(); const listeners = new Map>(); @@ -36,12 +32,12 @@ export function createRunStore({ log = console.log }: RunStoreOptions = {}): Run async emitExecutionEvent(executionId, sequence, type, payload, nodeId) { const where = nodeId ? ` (${nodeId})` : ''; const what = payload === undefined ? '' : ` ${JSON.stringify(payload)}`; - log(`[${executionId.slice(0, 8)}] #${String(sequence).padStart(2, ' ')} ${type}${where}${what}`); + console.log(`[${executionId.slice(0, 8)}] #${String(sequence).padStart(2, ' ')} ${type}${where}${what}`); publish(executionId, { kind: 'event', sequence, type, nodeId, payload }); }, async updateExecutionStatus(executionId, status, errorMessage) { - log(`[${executionId.slice(0, 8)}] status ${status}${errorMessage ? `: ${errorMessage}` : ''}`); + console.log(`[${executionId.slice(0, 8)}] status ${status}${errorMessage ? `: ${errorMessage}` : ''}`); publish(executionId, { kind: 'status', status, errorMessage }); }, diff --git a/examples/workflow-builder-temporal/src/to-definition.test.ts b/examples/workflow-builder-temporal/src/to-definition.test.ts deleted file mode 100644 index fbd6c1885..000000000 --- a/examples/workflow-builder-temporal/src/to-definition.test.ts +++ /dev/null @@ -1,96 +0,0 @@ -import assert from 'node:assert/strict'; -import { test } from 'node:test'; - -import type { DiagramSnapshot } from './protocol'; -import { snapshotToDefinition } from './to-definition'; - -const snapshot: DiagramSnapshot = { - nodes: [ - { id: 'trigger-1', data: { type: 'trigger', properties: { label: ' New request ', description: 'Entry point' } } }, - { id: 'action-1', data: { type: 'action', properties: { label: 'Send email', message: 'Hi' } } }, - ], - edges: [{ id: 'e1', source: 'trigger-1', target: 'action-1', sourceHandle: 'source' }], -}; - -test('marks the trigger as the start node when no node carries the flag', () => { - const definition = snapshotToDefinition(snapshot, 'wf'); - assert.equal(definition.workflowId, 'wf'); - assert.equal(definition.nodes[0].role, 'start'); - assert.equal(definition.nodes[1].role, undefined); -}); - -test('prefers the isStartNode flag over the trigger type when any node carries it', () => { - const flagged: DiagramSnapshot = { - nodes: [ - { id: 'trigger-1', data: { type: 'trigger', properties: {} } }, - { id: 'action-1', data: { type: 'action', isStartNode: true, properties: {} } }, - ], - edges: [], - }; - const definition = snapshotToDefinition(flagged, 'wf'); - assert.equal(definition.nodes[0].role, undefined); - assert.equal(definition.nodes[1].role, 'start'); -}); - -test('lifts a trimmed label out of the properties and keeps the rest as config', () => { - const [trigger, action] = snapshotToDefinition(snapshot, 'wf').nodes; - assert.equal(trigger.label, 'New request'); - assert.deepEqual(trigger.config, { description: 'Entry point' }); - assert.equal(action.label, 'Send email'); - assert.deepEqual(action.config, { message: 'Hi' }); -}); - -test('maps edges to sourceNodeId and targetNodeId and keeps the handle', () => { - const [edge] = snapshotToDefinition(snapshot, 'wf').edges; - assert.deepEqual(edge, { id: 'e1', sourceNodeId: 'trigger-1', targetNodeId: 'action-1', sourceHandle: 'source' }); -}); - -test('drops a null handle instead of carrying it', () => { - const [edge] = snapshotToDefinition( - { nodes: snapshot.nodes, edges: [{ id: 'e1', source: 'trigger-1', target: 'action-1', sourceHandle: null }] }, - 'wf', - ).edges; - assert.equal('sourceHandle' in edge, false); -}); - -test('rejects a node type the worker has no executor for', () => { - const unknown: DiagramSnapshot = { nodes: [{ id: 'x', data: { type: 'mystery' } }], edges: [] }; - assert.throws(() => snapshotToDefinition(unknown, 'wf'), /Unknown node type "mystery"/); -}); - -test('rejects a diagram with no start node', () => { - const noStart: DiagramSnapshot = { nodes: [{ id: 'a', data: { type: 'action' } }], edges: [] }; - assert.throws(() => snapshotToDefinition(noStart, 'wf'), /no start node/); -}); - -test("keeps a decision node's branches in config so the executor can read them", () => { - const decisionBranches = [ - { - id: 'branch-review', - sourceHandle: 'source:inner:review', - label: 'Needs review', - conditions: [ - { x: '{{nodes.trigger-1.amount}}', comparisonOperator: 'isGreaterThan', y: '100', logicalOperator: 'AND' }, - ], - }, - { id: 'branch-otherwise', sourceHandle: 'source:inner:otherwise', label: 'Otherwise', conditions: [] }, - ]; - - const definition = snapshotToDefinition( - { - nodes: [ - ...snapshot.nodes, - { id: 'decision-1', data: { type: 'decision', properties: { label: 'Needs review?', decisionBranches } } }, - ], - edges: [], - }, - 'wf', - ); - - assert.deepEqual(definition.nodes[2], { - id: 'decision-1', - type: 'decision', - label: 'Needs review?', - config: { decisionBranches }, - }); -}); From ac9084816895af8efd418e95a90e3c2400148b4f Mon Sep 17 00:00:00 2001 From: Dawid Aksamski Date: Mon, 14 Sep 2026 16:35:49 +0200 Subject: [PATCH 16/22] refactor(examples): split the Temporal sample into worker, editor and shared --- examples/workflow-builder-temporal/.gitignore | 2 +- examples/workflow-builder-temporal/README.md | 41 +++++++++---------- .../editor/src/diagram.ts | 2 +- .../editor/src/execution/run-store.ts | 2 +- .../editor/src/execution/run.ts | 4 +- .../editor/vite.config.ts | 2 +- .../lint-staged.config.mjs | 6 ++- .../{src => shared}/amount.ts | 0 .../{src => shared}/diagram.json | 0 .../{src => shared}/protocol.ts | 0 .../{ => worker}/package.json | 2 +- .../{ => worker}/src/bridge.ts | 2 +- .../{ => worker}/src/client.ts | 8 ++-- .../{ => worker}/src/config.ts | 0 .../{ => worker}/src/evaluate-branches.ts | 0 .../{ => worker}/src/executors.ts | 0 .../{ => worker}/src/nodes.ts | 0 .../{ => worker}/src/store.ts | 2 +- .../{ => worker}/src/to-definition.ts | 2 +- .../{ => worker}/src/worker.ts | 0 .../{ => worker}/src/workflows.ts | 0 .../{ => worker}/tsconfig.json | 0 22 files changed, 40 insertions(+), 35 deletions(-) rename examples/workflow-builder-temporal/{src => shared}/amount.ts (100%) rename examples/workflow-builder-temporal/{src => shared}/diagram.json (100%) rename examples/workflow-builder-temporal/{src => shared}/protocol.ts (100%) rename examples/workflow-builder-temporal/{ => worker}/package.json (92%) rename examples/workflow-builder-temporal/{ => worker}/src/bridge.ts (97%) rename examples/workflow-builder-temporal/{ => worker}/src/client.ts (87%) rename examples/workflow-builder-temporal/{ => worker}/src/config.ts (100%) rename examples/workflow-builder-temporal/{ => worker}/src/evaluate-branches.ts (100%) rename examples/workflow-builder-temporal/{ => worker}/src/executors.ts (100%) rename examples/workflow-builder-temporal/{ => worker}/src/nodes.ts (100%) rename examples/workflow-builder-temporal/{ => worker}/src/store.ts (97%) rename examples/workflow-builder-temporal/{ => worker}/src/to-definition.ts (98%) rename examples/workflow-builder-temporal/{ => worker}/src/worker.ts (100%) rename examples/workflow-builder-temporal/{ => worker}/src/workflows.ts (100%) rename examples/workflow-builder-temporal/{ => worker}/tsconfig.json (100%) diff --git a/examples/workflow-builder-temporal/.gitignore b/examples/workflow-builder-temporal/.gitignore index aea3b07c9..1536f086a 100644 --- a/examples/workflow-builder-temporal/.gitignore +++ b/examples/workflow-builder-temporal/.gitignore @@ -3,4 +3,4 @@ dist *.local *.tgz # Cannot be generated against npm until @workflowbuilder/temporal is published; removed in the publish task. -/package-lock.json +/worker/package-lock.json diff --git a/examples/workflow-builder-temporal/README.md b/examples/workflow-builder-temporal/README.md index 1d8031c56..d33f40953 100644 --- a/examples/workflow-builder-temporal/README.md +++ b/examples/workflow-builder-temporal/README.md @@ -13,9 +13,15 @@ editor (browser, optional) --POST canvas snapshot--> worker + bridge (npm star ^ | executors: trigger, action, decision +----------- SSE: node events ------------------------+ store: prints events, streams them to the editor -npm run workflow ---- reads src/diagram.json, starts one run, waits for it ----> Temporal +npm run workflow ---- reads shared/diagram.json, starts one run, waits for it ----> Temporal ``` +Three folders: + +- `shared/` is what the two processes agree on: the diagram (`diagram.json`), the wire types (`protocol.ts`) and the coin flip (`amount.ts`). +- `worker/` is the Node side: the Temporal Worker with the plugin, the bridge the editor talks to, and the CLI client. +- `editor/` is the optional browser app. + The diagram: ``` @@ -50,6 +56,7 @@ temporal server start-dev Terminal 2, the Worker: ```bash +cd worker npm install npm start ``` @@ -62,7 +69,7 @@ bridge listening on http://127.0.0.1:3210 ``` Terminal 3, one run of the diagram. Each run draws an amount between 1 and 200, and the decision node -routes on it, so about half the runs take each branch: +routes on it, so about half the runs take each branch. Also from `worker/`: ```bash npm run workflow @@ -116,7 +123,7 @@ The pruned branch leaves no trace here: there is an Activity for `Escalate to a ## Optional: run it from the canvas -Keep terminals 1 and 2 running. The editor posts the canvas to the worker's bridge and reads events back from it. +Keep terminals 1 and 2 running. The editor posts the canvas to the worker's bridge and reads events back from it. From the sample folder: ```bash cd editor @@ -128,32 +135,24 @@ Open the printed URL (Vite defaults to ). The editor open Then change things. Edit a message, turn the outage switch on for another action, select **Needs review?** and edit its branches in the properties panel, or add a node from the palette. -The editor keeps your edits in `localStorage` and saves again when the page closes, so editing `src/diagram.json` afterwards appears to do nothing. To go back to the file, run this in the browser console and let the page reload: - -```js -addEventListener('beforeunload', (event) => event.stopImmediatePropagation(), { capture: true }); -localStorage.removeItem('workflowBuilderDiagram'); -location.reload(); -``` - ## How it works Six places carry the whole integration. Each has a comment where the reason is not visible in the code. -1. [`src/workflows.ts`](src/workflows.ts) re-exports `runWorkflow`. Temporal bundles workflow code from one module, so a plugin cannot register its workflow for you; the re-export is how the bundle picks it up. -2. [`src/worker.ts`](src/worker.ts) creates `WorkflowBuilderPlugin({ executors, store })` and hands it to `Worker.create`. The plugin contributes the activities that execute a graph. Connection, task queue, and shutdown stay yours. -3. [`src/executors.ts`](src/executors.ts) is one function per node type. Executors run inside the plugin's `executeNode` Activity, which is why `action` can read Temporal's attempt number and why throwing `TransientNodeExecutionError` gets it retried while `PermanentNodeExecutionError` does not. -4. [`src/evaluate-branches.ts`](src/evaluate-branches.ts) picks a branch, and the decision executor returns its handle as `nextPort`. That is what makes the graph branch: the runner fires only the edge whose handle matches, marks the rest `node_skipped`, and if a named port has no edge at all the run ends `incomplete` rather than failing. The first branch whose conditions all hold wins, and a branch with no conditions always holds, so it belongs last. (The reference worker in the Workflow Builder repository never matches an empty branch; this sample prefers the rule you can read off the canvas.) -5. [`src/store.ts`](src/store.ts) implements the store port: where events and status changes land. Here they go to the terminal and to the editor's event stream. In your application they go to a database; the port is the same. -6. [`src/to-definition.ts`](src/to-definition.ts) turns the editor's snapshot into the plugin's `WorkflowDefinition`. The plugin knows nothing about React Flow; this file is the only glue. +1. [`worker/src/workflows.ts`](worker/src/workflows.ts) re-exports `runWorkflow`. Temporal bundles workflow code from one module, so a plugin cannot register its workflow for you; the re-export is how the bundle picks it up. +2. [`worker/src/worker.ts`](worker/src/worker.ts) creates `WorkflowBuilderPlugin({ executors, store })` and hands it to `Worker.create`. The plugin contributes the activities that execute a graph. Connection, task queue, and shutdown stay yours. +3. [`worker/src/executors.ts`](worker/src/executors.ts) is one function per node type. Executors run inside the plugin's `executeNode` Activity, which is why `action` can read Temporal's attempt number and why throwing `TransientNodeExecutionError` gets it retried while `PermanentNodeExecutionError` does not. +4. [`worker/src/evaluate-branches.ts`](worker/src/evaluate-branches.ts) picks a branch, and the decision executor returns its handle as `nextPort`. That is what makes the graph branch: the runner fires only the edge whose handle matches, marks the rest `node_skipped`, and if a named port has no edge at all the run ends `incomplete` rather than failing. The first branch whose conditions all hold wins, and a branch with no conditions always holds, so it belongs last. (The reference worker in the Workflow Builder repository never matches an empty branch; this sample prefers the rule you can read off the canvas.) +5. [`worker/src/store.ts`](worker/src/store.ts) implements the store port: where events and status changes land. Here they go to the terminal and to the editor's event stream. In your application they go to a database; the port is the same. +6. [`worker/src/to-definition.ts`](worker/src/to-definition.ts) turns the editor's snapshot into the plugin's `WorkflowDefinition`. The plugin knows nothing about React Flow; this file is the only glue. -[`src/client.ts`](src/client.ts) starts a run through `TemporalWorkflowEngine` from `@workflowbuilder/temporal/client` and then waits on an ordinary Temporal workflow handle. [`src/bridge.ts`](src/bridge.ts) does the same for the editor over HTTP and streams the store's events back as Server-Sent Events. +[`worker/src/client.ts`](worker/src/client.ts) starts a run through `TemporalWorkflowEngine` from `@workflowbuilder/temporal/client` and then waits on an ordinary Temporal workflow handle. [`worker/src/bridge.ts`](worker/src/bridge.ts) does the same for the editor over HTTP and streams the store's events back as Server-Sent Events. ## Make it yours -- **Add a node type.** Add a palette item under `editor/src/nodes/` and register it in `editor/src/nodes/index.ts`; add a variant to `SampleNode` in `src/nodes.ts` and an executor in `src/executors.ts`. TypeScript refuses to compile until the executor exists. -- **Tune retries per node type.** Replace the re-export in `src/workflows.ts` with `createRunWorkflow({ nodeActivityProfiles })` and pass the same map to the plugin. The plugin README explains why both sides need it. -- **Point at Temporal Cloud.** `TEMPORAL_ADDRESS`, `TEMPORAL_NAMESPACE`, and `TEMPORAL_UI_ORIGIN` are read in `src/config.ts`. TLS and API keys go on the two connections in `src/worker.ts` and `src/client.ts`. +- **Add a node type.** Add a palette item under `editor/src/nodes/` and register it in `editor/src/nodes/index.ts`; add a variant to `SampleNode` in `worker/src/nodes.ts` and an executor in `worker/src/executors.ts`. TypeScript refuses to compile until the executor exists. +- **Tune retries per node type.** Replace the re-export in `worker/src/workflows.ts` with `createRunWorkflow({ nodeActivityProfiles })` and pass the same map to the plugin. The plugin README explains why both sides need it. +- **Point at Temporal Cloud.** `TEMPORAL_ADDRESS`, `TEMPORAL_NAMESPACE`, and `TEMPORAL_UI_ORIGIN` are read in `worker/src/config.ts`. TLS and API keys go on the two connections in `worker/src/worker.ts` and `worker/src/client.ts`. - **Toggle the outage.** Every Action has a _Simulate an outage on the first attempt_ switch. Turn it on for `Auto-approve` and that node retries too. - **Add a branch.** Select **Needs review?**, add a branch on the node or in the properties panel, give it a title and conditions, then drag its new handle to a node. Keep the branch with no conditions last, or it swallows every run. - **Persist events.** Replace `createRunStore()` with anything that implements `ExecutionStore`. diff --git a/examples/workflow-builder-temporal/editor/src/diagram.ts b/examples/workflow-builder-temporal/editor/src/diagram.ts index c3cf16fef..9d497c1d8 100644 --- a/examples/workflow-builder-temporal/editor/src/diagram.ts +++ b/examples/workflow-builder-temporal/editor/src/diagram.ts @@ -1,6 +1,6 @@ import type { WorkflowBuilderEdge, WorkflowBuilderNode } from '@workflowbuilder/sdk'; -import diagram from '../../src/diagram.json'; +import diagram from '../../shared/diagram.json'; // One diagram file for both entry points: `npm run workflow` reads it from disk, the editor // opens with it. JSON widens the icon names to `string`, hence the cast. diff --git a/examples/workflow-builder-temporal/editor/src/execution/run-store.ts b/examples/workflow-builder-temporal/editor/src/execution/run-store.ts index 870b079d5..1676d5633 100644 --- a/examples/workflow-builder-temporal/editor/src/execution/run-store.ts +++ b/examples/workflow-builder-temporal/editor/src/execution/run-store.ts @@ -1,6 +1,6 @@ import { create } from 'zustand'; -import type { RunEvent } from '../../../src/protocol'; +import type { RunEvent } from '../../../shared/protocol'; export type NodeRunStatus = 'running' | 'completed' | 'failed' | 'skipped'; export type RunPhase = 'idle' | 'starting' | 'running' | 'completed' | 'incomplete' | 'failed' | 'cancelled' | 'error'; diff --git a/examples/workflow-builder-temporal/editor/src/execution/run.ts b/examples/workflow-builder-temporal/editor/src/execution/run.ts index 2d13514ee..7b463f189 100644 --- a/examples/workflow-builder-temporal/editor/src/execution/run.ts +++ b/examples/workflow-builder-temporal/editor/src/execution/run.ts @@ -1,7 +1,7 @@ import { getStoreDataForIntegration } from '@workflowbuilder/sdk'; -import { drawAmount } from '../../../src/amount'; -import type { RunEvent, RunRequest, RunResponse } from '../../../src/protocol'; +import { drawAmount } from '../../../shared/amount'; +import type { RunEvent, RunRequest, RunResponse } from '../../../shared/protocol'; import { applyRunEvent, isRunOver, runErrored, runStarted, runStarting, useRunStore } from './run-store'; let stream: EventSource | undefined; diff --git a/examples/workflow-builder-temporal/editor/vite.config.ts b/examples/workflow-builder-temporal/editor/vite.config.ts index 1b7a9ec56..ecc03fe8e 100644 --- a/examples/workflow-builder-temporal/editor/vite.config.ts +++ b/examples/workflow-builder-temporal/editor/vite.config.ts @@ -4,7 +4,7 @@ import { defineConfig } from 'vite'; export default defineConfig({ plugins: [react()], server: { - // The diagram lives one folder up so the CLI client and the editor read one file. + // shared/ lives one folder up: the diagram, the wire types and the coin flip both processes use. fs: { allow: ['..'] }, // The worker process hosts the bridge; proxying keeps the browser on one origin. proxy: { '/api': 'http://127.0.0.1:3210' }, diff --git a/examples/workflow-builder-temporal/lint-staged.config.mjs b/examples/workflow-builder-temporal/lint-staged.config.mjs index c565d24b7..0840ffd87 100644 --- a/examples/workflow-builder-temporal/lint-staged.config.mjs +++ b/examples/workflow-builder-temporal/lint-staged.config.mjs @@ -3,5 +3,9 @@ */ export default { '*.{ts,tsx,js,json,css,astro,md,mdx}': (files) => `prettier --write --log-level=silent ${files.join(' ')}`, - '*.{ts,tsx}': [(files) => `eslint --max-warnings=0 --fix ${files.join(' ')}`, () => `tsc --noEmit`], + '*.{ts,tsx}': [ + (files) => `eslint --max-warnings=0 --fix ${files.join(' ')}`, + () => 'tsc --noEmit -p worker/tsconfig.json', + () => 'tsc --noEmit -p editor/tsconfig.json', + ], }; diff --git a/examples/workflow-builder-temporal/src/amount.ts b/examples/workflow-builder-temporal/shared/amount.ts similarity index 100% rename from examples/workflow-builder-temporal/src/amount.ts rename to examples/workflow-builder-temporal/shared/amount.ts diff --git a/examples/workflow-builder-temporal/src/diagram.json b/examples/workflow-builder-temporal/shared/diagram.json similarity index 100% rename from examples/workflow-builder-temporal/src/diagram.json rename to examples/workflow-builder-temporal/shared/diagram.json diff --git a/examples/workflow-builder-temporal/src/protocol.ts b/examples/workflow-builder-temporal/shared/protocol.ts similarity index 100% rename from examples/workflow-builder-temporal/src/protocol.ts rename to examples/workflow-builder-temporal/shared/protocol.ts diff --git a/examples/workflow-builder-temporal/package.json b/examples/workflow-builder-temporal/worker/package.json similarity index 92% rename from examples/workflow-builder-temporal/package.json rename to examples/workflow-builder-temporal/worker/package.json index f9e6cdaa5..a6210499b 100644 --- a/examples/workflow-builder-temporal/package.json +++ b/examples/workflow-builder-temporal/worker/package.json @@ -1,5 +1,5 @@ { - "name": "workflow-builder-temporal-sample", + "name": "workflow-builder-temporal-sample-worker", "private": true, "version": "0.0.0", "type": "module", diff --git a/examples/workflow-builder-temporal/src/bridge.ts b/examples/workflow-builder-temporal/worker/src/bridge.ts similarity index 97% rename from examples/workflow-builder-temporal/src/bridge.ts rename to examples/workflow-builder-temporal/worker/src/bridge.ts index 5c0f780cc..1e0fbf38b 100644 --- a/examples/workflow-builder-temporal/src/bridge.ts +++ b/examples/workflow-builder-temporal/worker/src/bridge.ts @@ -2,9 +2,9 @@ import type { WorkflowEnginePort } from '@workflowbuilder/temporal'; import { randomUUID } from 'node:crypto'; import { type IncomingMessage, type Server, type ServerResponse, createServer } from 'node:http'; +import type { RunEvent, RunRequest, RunResponse } from '../../shared/protocol'; import { WORKFLOW_ID, temporalUiUrl } from './config'; import type { SampleNode } from './nodes'; -import type { RunEvent, RunRequest, RunResponse } from './protocol'; import type { RunStore } from './store'; import { snapshotToDefinition } from './to-definition'; diff --git a/examples/workflow-builder-temporal/src/client.ts b/examples/workflow-builder-temporal/worker/src/client.ts similarity index 87% rename from examples/workflow-builder-temporal/src/client.ts rename to examples/workflow-builder-temporal/worker/src/client.ts index d3e9cb72f..d83e7f0fe 100644 --- a/examples/workflow-builder-temporal/src/client.ts +++ b/examples/workflow-builder-temporal/worker/src/client.ts @@ -4,15 +4,17 @@ import { TemporalWorkflowEngine } from '@workflowbuilder/temporal/client'; import { randomUUID } from 'node:crypto'; import { readFile } from 'node:fs/promises'; -import { drawAmount } from './amount'; +import { drawAmount } from '../../shared/amount'; +import type { DiagramSnapshot } from '../../shared/protocol'; import { TEMPORAL_ADDRESS, TEMPORAL_NAMESPACE, WORKFLOW_ID, temporalUiUrl } from './config'; -import type { DiagramSnapshot } from './protocol'; import { snapshotToDefinition } from './to-definition'; // The decision node routes on this. Left to chance, about half the runs take each branch. const amount = drawAmount(); -const snapshot = JSON.parse(await readFile(new URL('diagram.json', import.meta.url), 'utf8')) as DiagramSnapshot; +const snapshot = JSON.parse( + await readFile(new URL('../../shared/diagram.json', import.meta.url), 'utf8'), +) as DiagramSnapshot; const definition = snapshotToDefinition(snapshot, WORKFLOW_ID); const client = new Client({ diff --git a/examples/workflow-builder-temporal/src/config.ts b/examples/workflow-builder-temporal/worker/src/config.ts similarity index 100% rename from examples/workflow-builder-temporal/src/config.ts rename to examples/workflow-builder-temporal/worker/src/config.ts diff --git a/examples/workflow-builder-temporal/src/evaluate-branches.ts b/examples/workflow-builder-temporal/worker/src/evaluate-branches.ts similarity index 100% rename from examples/workflow-builder-temporal/src/evaluate-branches.ts rename to examples/workflow-builder-temporal/worker/src/evaluate-branches.ts diff --git a/examples/workflow-builder-temporal/src/executors.ts b/examples/workflow-builder-temporal/worker/src/executors.ts similarity index 100% rename from examples/workflow-builder-temporal/src/executors.ts rename to examples/workflow-builder-temporal/worker/src/executors.ts diff --git a/examples/workflow-builder-temporal/src/nodes.ts b/examples/workflow-builder-temporal/worker/src/nodes.ts similarity index 100% rename from examples/workflow-builder-temporal/src/nodes.ts rename to examples/workflow-builder-temporal/worker/src/nodes.ts diff --git a/examples/workflow-builder-temporal/src/store.ts b/examples/workflow-builder-temporal/worker/src/store.ts similarity index 97% rename from examples/workflow-builder-temporal/src/store.ts rename to examples/workflow-builder-temporal/worker/src/store.ts index 83cbe44dc..03117ec93 100644 --- a/examples/workflow-builder-temporal/src/store.ts +++ b/examples/workflow-builder-temporal/worker/src/store.ts @@ -1,6 +1,6 @@ import type { ExecutionStore } from '@workflowbuilder/temporal'; -import type { RunEvent } from './protocol'; +import type { RunEvent } from '../../shared/protocol'; type Listener = (event: RunEvent) => void; diff --git a/examples/workflow-builder-temporal/src/to-definition.ts b/examples/workflow-builder-temporal/worker/src/to-definition.ts similarity index 98% rename from examples/workflow-builder-temporal/src/to-definition.ts rename to examples/workflow-builder-temporal/worker/src/to-definition.ts index 581d3bdfa..f845ab258 100644 --- a/examples/workflow-builder-temporal/src/to-definition.ts +++ b/examples/workflow-builder-temporal/worker/src/to-definition.ts @@ -1,7 +1,7 @@ import type { WorkflowDefinition, WorkflowEdgeDefinition } from '@workflowbuilder/temporal'; +import type { DiagramSnapshot, SnapshotEdge, SnapshotNode } from '../../shared/protocol'; import { SAMPLE_NODE_TYPES, type SampleNode, isSampleNodeType } from './nodes'; -import type { DiagramSnapshot, SnapshotEdge, SnapshotNode } from './protocol'; // The editor's snapshot is React Flow data; the plugin wants `{ id, type, config }` per node // and `{ sourceNodeId, targetNodeId }` per edge. This is the only glue in the sample. diff --git a/examples/workflow-builder-temporal/src/worker.ts b/examples/workflow-builder-temporal/worker/src/worker.ts similarity index 100% rename from examples/workflow-builder-temporal/src/worker.ts rename to examples/workflow-builder-temporal/worker/src/worker.ts diff --git a/examples/workflow-builder-temporal/src/workflows.ts b/examples/workflow-builder-temporal/worker/src/workflows.ts similarity index 100% rename from examples/workflow-builder-temporal/src/workflows.ts rename to examples/workflow-builder-temporal/worker/src/workflows.ts diff --git a/examples/workflow-builder-temporal/tsconfig.json b/examples/workflow-builder-temporal/worker/tsconfig.json similarity index 100% rename from examples/workflow-builder-temporal/tsconfig.json rename to examples/workflow-builder-temporal/worker/tsconfig.json From fb4951da7ffca43a239e787a4f266d8e72689916 Mon Sep 17 00:00:00 2001 From: Dawid Aksamski Date: Mon, 14 Sep 2026 16:53:22 +0200 Subject: [PATCH 17/22] feat(examples): reset the sample canvas back to the shipped diagram --- examples/workflow-builder-temporal/README.md | 2 ++ .../editor/src/app.tsx | 7 ++-- .../editor/src/diagram.ts | 10 ++++-- .../editor/src/execution/run-store.ts | 4 +++ .../editor/src/reset/plugin.ts | 13 ++++++++ .../editor/src/reset/reset-button.tsx | 32 +++++++++++++++++++ .../editor/src/reset/reset.css | 20 ++++++++++++ 7 files changed, 84 insertions(+), 4 deletions(-) create mode 100644 examples/workflow-builder-temporal/editor/src/reset/plugin.ts create mode 100644 examples/workflow-builder-temporal/editor/src/reset/reset-button.tsx create mode 100644 examples/workflow-builder-temporal/editor/src/reset/reset.css diff --git a/examples/workflow-builder-temporal/README.md b/examples/workflow-builder-temporal/README.md index d33f40953..72c707470 100644 --- a/examples/workflow-builder-temporal/README.md +++ b/examples/workflow-builder-temporal/README.md @@ -135,6 +135,8 @@ Open the printed URL (Vite defaults to ). The editor open Then change things. Edit a message, turn the outage switch on for another action, select **Needs review?** and edit its branches in the properties panel, or add a node from the palette. +The editor keeps your canvas in the browser between visits. **Reset diagram** puts back the diagram in [`shared/diagram.json`](shared/diagram.json), which is also the one `npm run workflow` submits. + ## How it works Six places carry the whole integration. Each has a comment where the reason is not visible in the code. diff --git a/examples/workflow-builder-temporal/editor/src/app.tsx b/examples/workflow-builder-temporal/editor/src/app.tsx index 1e8c52497..537a2d3f4 100644 --- a/examples/workflow-builder-temporal/editor/src/app.tsx +++ b/examples/workflow-builder-temporal/editor/src/app.tsx @@ -2,15 +2,18 @@ import { WorkflowBuilder, type WorkflowBuilderIsValidConnection } from '@workflo import '@workflowbuilder/sdk/style.css'; -import { initialEdges, initialNodes } from './diagram'; +import { defaultDiagram } from './diagram'; import { executionPlugin } from './execution/plugin'; import { nodeTypes } from './nodes'; +import { resetPlugin } from './reset/plugin'; // A trigger starts the workflow, so nothing can connect into it. const isValidConnection: WorkflowBuilderIsValidConnection = ({ targetNode }) => targetNode.data.type !== 'trigger'; // Plugin initializers run once on first mount; the array must be a stable reference. -const plugins = [executionPlugin]; +const plugins = [executionPlugin, resetPlugin]; + +const { nodes: initialNodes, edges: initialEdges } = defaultDiagram(); export function App() { return ( diff --git a/examples/workflow-builder-temporal/editor/src/diagram.ts b/examples/workflow-builder-temporal/editor/src/diagram.ts index 9d497c1d8..a9e92cc54 100644 --- a/examples/workflow-builder-temporal/editor/src/diagram.ts +++ b/examples/workflow-builder-temporal/editor/src/diagram.ts @@ -4,5 +4,11 @@ import diagram from '../../shared/diagram.json'; // One diagram file for both entry points: `npm run workflow` reads it from disk, the editor // opens with it. JSON widens the icon names to `string`, hence the cast. -export const initialNodes = diagram.nodes as unknown as WorkflowBuilderNode[]; -export const initialEdges = diagram.edges as unknown as WorkflowBuilderEdge[]; +// A copy per call, so an edited canvas can never write back into the imported module object. +export function defaultDiagram(): { nodes: WorkflowBuilderNode[]; edges: WorkflowBuilderEdge[] } { + const { nodes, edges } = structuredClone(diagram); + return { + nodes: nodes as unknown as WorkflowBuilderNode[], + edges: edges as unknown as WorkflowBuilderEdge[], + }; +} diff --git a/examples/workflow-builder-temporal/editor/src/execution/run-store.ts b/examples/workflow-builder-temporal/editor/src/execution/run-store.ts index 1676d5633..a5ee79b17 100644 --- a/examples/workflow-builder-temporal/editor/src/execution/run-store.ts +++ b/examples/workflow-builder-temporal/editor/src/execution/run-store.ts @@ -30,6 +30,10 @@ export function runErrored(message: string): void { useRunStore.setState({ phase: 'error', message }); } +export function runCleared(): void { + useRunStore.setState(IDLE, true); +} + const TERMINAL_PHASES: ReadonlySet = new Set(['completed', 'incomplete', 'failed', 'cancelled']); const NODE_STATUS_BY_EVENT: Record = { diff --git a/examples/workflow-builder-temporal/editor/src/reset/plugin.ts b/examples/workflow-builder-temporal/editor/src/reset/plugin.ts new file mode 100644 index 000000000..7e8a71541 --- /dev/null +++ b/examples/workflow-builder-temporal/editor/src/reset/plugin.ts @@ -0,0 +1,13 @@ +import { registerComponentDecorator } from '@workflowbuilder/sdk'; + +import './reset.css'; + +import { ResetButton } from './reset-button'; + +export function resetPlugin(): void { + registerComponentDecorator('OptionalAppBarControls', { + content: ResetButton, + place: 'before', + name: 'reset-diagram', + }); +} diff --git a/examples/workflow-builder-temporal/editor/src/reset/reset-button.tsx b/examples/workflow-builder-temporal/editor/src/reset/reset-button.tsx new file mode 100644 index 000000000..2911a56ef --- /dev/null +++ b/examples/workflow-builder-temporal/editor/src/reset/reset-button.tsx @@ -0,0 +1,32 @@ +import { ArrowCounterClockwiseIcon } from '@phosphor-icons/react'; +import { setStoreEdges, setStoreNodes, useFitView } from '@workflowbuilder/sdk'; + +import { defaultDiagram } from '../diagram'; +import { runCleared, useRunStore } from '../execution/run-store'; + +const CONFIRMATION = 'Discard the diagram on the canvas and load the one this sample ships with?'; + +// Mounted in the SDK's OptionalAppBarControls slot, beside the Run button. +export function ResetButton() { + const phase = useRunStore((state) => state.phase); + const fitView = useFitView(); + const busy = phase === 'starting' || phase === 'running'; + + function reset() { + if (!globalThis.confirm(CONFIRMATION)) return; + const { nodes, edges } = defaultDiagram(); + setStoreNodes(nodes); + setStoreEdges(edges); + runCleared(); + fitView(); + } + + // The editor keeps the canvas in localStorage and the SDK saves it when the tab closes, so + // replacing the store is enough: the next visit opens the diagram this put back. + return ( + + ); +} diff --git a/examples/workflow-builder-temporal/editor/src/reset/reset.css b/examples/workflow-builder-temporal/editor/src/reset/reset.css new file mode 100644 index 000000000..c05f3a684 --- /dev/null +++ b/examples/workflow-builder-temporal/editor/src/reset/reset.css @@ -0,0 +1,20 @@ +.reset-button { + display: inline-flex; + align-items: center; + gap: 0.375rem; + margin-right: 0.75rem; + padding: 0.5rem 0.875rem; + border: 1px solid var(--ax-public-button-secondary-border-color, #d4d4d8); + border-radius: 0.5rem; + background: transparent; + color: inherit; + font: inherit; + font-size: 0.875rem; + font-weight: 600; + cursor: pointer; +} + +.reset-button:disabled { + opacity: 0.6; + cursor: not-allowed; +} From 63dca5f6fa77f31c8e56568b6633422c247bdc1f Mon Sep 17 00:00:00 2001 From: Dawid Aksamski Date: Mon, 14 Sep 2026 17:04:39 +0200 Subject: [PATCH 18/22] build(examples): install the Temporal plugin from a vendored build --- examples/workflow-builder-temporal/.gitignore | 5 +- examples/workflow-builder-temporal/README.md | 4 + .../worker/package-lock.json | 2720 +++++++++++++++++ .../worker/package.json | 2 +- .../worker/vendor/README.md | 20 + .../vendor/workflowbuilder-temporal-0.0.0.tgz | Bin 0 -> 48623 bytes 6 files changed, 2748 insertions(+), 3 deletions(-) create mode 100644 examples/workflow-builder-temporal/worker/package-lock.json create mode 100644 examples/workflow-builder-temporal/worker/vendor/README.md create mode 100644 examples/workflow-builder-temporal/worker/vendor/workflowbuilder-temporal-0.0.0.tgz diff --git a/examples/workflow-builder-temporal/.gitignore b/examples/workflow-builder-temporal/.gitignore index 1536f086a..e09ee470d 100644 --- a/examples/workflow-builder-temporal/.gitignore +++ b/examples/workflow-builder-temporal/.gitignore @@ -2,5 +2,6 @@ node_modules dist *.local *.tgz -# Cannot be generated against npm until @workflowbuilder/temporal is published; removed in the publish task. -/worker/package-lock.json +# The plugin is not on npm yet, so the worker installs it from a packed build kept in the +# repository. This exception goes away when it ships; see worker/vendor/README.md. +!/worker/vendor/*.tgz diff --git a/examples/workflow-builder-temporal/README.md b/examples/workflow-builder-temporal/README.md index 72c707470..eb808f206 100644 --- a/examples/workflow-builder-temporal/README.md +++ b/examples/workflow-builder-temporal/README.md @@ -38,6 +38,10 @@ New request (trigger) - The Temporal CLI: install it from (`brew install temporal` on macOS). - Nothing else. No Docker, no database, no API keys. +`@workflowbuilder/temporal` is still in preview and not on npm, so `worker/` installs it from a +packed build committed under [`worker/vendor/`](worker/vendor/README.md). The steps below need +nothing extra; when the package ships, the dependency becomes an ordinary npm range. + ## Run it Fetch just this folder: diff --git a/examples/workflow-builder-temporal/worker/package-lock.json b/examples/workflow-builder-temporal/worker/package-lock.json new file mode 100644 index 000000000..2012abff3 --- /dev/null +++ b/examples/workflow-builder-temporal/worker/package-lock.json @@ -0,0 +1,2720 @@ +{ + "name": "workflow-builder-temporal-sample-worker", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "workflow-builder-temporal-sample-worker", + "version": "0.0.0", + "license": "Apache-2.0", + "dependencies": { + "@temporalio/activity": "1.23.0", + "@temporalio/client": "1.23.0", + "@temporalio/worker": "1.23.0", + "@workflowbuilder/temporal": "file:vendor/workflowbuilder-temporal-0.0.0.tgz" + }, + "devDependencies": { + "@types/node": "^22.12.0", + "tsx": "^4.19.0", + "typescript": "~5.6.3" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.2.tgz", + "integrity": "sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.2.tgz", + "integrity": "sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.2.tgz", + "integrity": "sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.2.tgz", + "integrity": "sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.2.tgz", + "integrity": "sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.2.tgz", + "integrity": "sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.2.tgz", + "integrity": "sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.2.tgz", + "integrity": "sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.2.tgz", + "integrity": "sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.2.tgz", + "integrity": "sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.2.tgz", + "integrity": "sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.2.tgz", + "integrity": "sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.2.tgz", + "integrity": "sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.2.tgz", + "integrity": "sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.2.tgz", + "integrity": "sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.2.tgz", + "integrity": "sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.2.tgz", + "integrity": "sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.2.tgz", + "integrity": "sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.2.tgz", + "integrity": "sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.2.tgz", + "integrity": "sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.2.tgz", + "integrity": "sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.2.tgz", + "integrity": "sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.2.tgz", + "integrity": "sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.2.tgz", + "integrity": "sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.2.tgz", + "integrity": "sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.2.tgz", + "integrity": "sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@grpc/grpc-js": { + "version": "1.14.4", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.14.4.tgz", + "integrity": "sha512-k9Dj3DV/itK9D06Y8f190Qgop7/Ui+D0njFV3LHMPwPT75DpXLQohE9Wmz0QElrJnzsjB7KPWiKJbOl7IPDArQ==", + "license": "Apache-2.0", + "dependencies": { + "@grpc/proto-loader": "^0.8.0", + "@js-sdsl/ordered-map": "^4.4.2" + }, + "engines": { + "node": ">=12.10.0" + } + }, + "node_modules/@grpc/proto-loader": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.8.1.tgz", + "integrity": "sha512-wtF6h+DY6M3YaDBPAmvuuA6jV8Sif9MjtOI5euKFWRgCDl5PeDpPsHR9u2l6St5ceY8AZgoNDww5+HvEsXFsGg==", + "license": "Apache-2.0", + "dependencies": { + "lodash.camelcase": "^4.3.0", + "long": "^5.0.0", + "protobufjs": "^7.5.5", + "yargs": "^17.7.2" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.6.0.tgz", + "integrity": "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@js-sdsl/ordered-map": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", + "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/buffers": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-17.67.0.tgz", + "integrity": "sha512-tfExRpYxBvi32vPs9ZHaTjSP4fHAfzSmcahOfNxtvGHcyJel+aibkPlGeBB+7AoC6hL7lXIE++8okecBxx7lcw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/codegen": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz", + "integrity": "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-core": { + "version": "4.78.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-core/-/fs-core-4.78.0.tgz", + "integrity": "sha512-0YE5XQj383AwNj5fG0Mm1gyx/ViVe2DJzS5FeVbJulw0pteEK9mfbeB0MWH3/ARoXb2AhHHuiiNthdWF0Y6EYQ==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-node-builtins": "4.78.0", + "@jsonjoy.com/fs-node-utils": "4.78.0", + "thingies": "^2.5.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-fsa": { + "version": "4.78.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-fsa/-/fs-fsa-4.78.0.tgz", + "integrity": "sha512-V1lUo5k4xUypsfdmvCrrUJ44BCixbgvpus71WI3a3BOQt39bK2LasU/HgpJ1P9or8a2d5mWR3kk26sRoehDlaw==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-core": "4.78.0", + "@jsonjoy.com/fs-node-builtins": "4.78.0", + "@jsonjoy.com/fs-node-utils": "4.78.0", + "thingies": "^2.5.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-node": { + "version": "4.78.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node/-/fs-node-4.78.0.tgz", + "integrity": "sha512-AhoKCEEzsTU5C+9pSegNkErrQijvpHj10kzVhaXIxjs/0taxjCCLG7zE+Y+EWCMNCVmgFEyca+oTQQWm2RO+sg==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-core": "4.78.0", + "@jsonjoy.com/fs-node-builtins": "4.78.0", + "@jsonjoy.com/fs-node-utils": "4.78.0", + "@jsonjoy.com/fs-print": "4.78.0", + "@jsonjoy.com/fs-snapshot": "4.78.0", + "glob-to-regex.js": "^1.3.1", + "thingies": "^2.5.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-node-builtins": { + "version": "4.78.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.78.0.tgz", + "integrity": "sha512-yiyMh9uKnQvRVDYzINP9P2AXZPdHYM2iVsQ/2U2V+g+gfTr4vPcT1Ox0aQs0IIXGQRAnksyA63KSqpOOJ/O3lA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-node-to-fsa": { + "version": "4.78.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.78.0.tgz", + "integrity": "sha512-L1e0UgRJ/igqt3JUDJh3z8YXTKqJc9r9MY4ZakEMOqqEDq/C5fmSZDDzq03d7HqdG1rehkmCDpKyXWqQEVpQGw==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-fsa": "4.78.0", + "@jsonjoy.com/fs-node-builtins": "4.78.0", + "@jsonjoy.com/fs-node-utils": "4.78.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-node-utils": { + "version": "4.78.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.78.0.tgz", + "integrity": "sha512-Am25+Y/rEFtkJBZCFgs84XPXqeqXq4FvXmCYMZ0bEC/M+vT0e6tHBU4Camp9/Yzuf6NoxaInC3iXIN791wVu9g==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-node-builtins": "4.78.0", + "glob-to-regex.js": "^1.3.1" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-print": { + "version": "4.78.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-print/-/fs-print-4.78.0.tgz", + "integrity": "sha512-Uwk0SvDN1X+5FNW3MxibrFVXXUnd0nTUP6qwvPikg3QDeXRiRww91mz34lXYa/xO5eVuUqa1WXmd0ljy1+Ej0w==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-node-utils": "4.78.0", + "tree-dump": "^1.1.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot": { + "version": "4.78.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.78.0.tgz", + "integrity": "sha512-+HvPGwV1IcXtwFFxMBK5x8rmqBuIkPpEFZMGkO8BolJH+AuSvQGVwvlKulUjQ9KECpN4GTCcgeQtyUvYC8heSA==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/buffers": "^17.65.0", + "@jsonjoy.com/fs-node-utils": "4.78.0", + "@jsonjoy.com/json-pack": "^17.65.0", + "@jsonjoy.com/util": "^17.65.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/base64": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-17.67.0.tgz", + "integrity": "sha512-5SEsJGsm15aP8TQGkDfJvz9axgPwAEm98S5DxOuYe8e1EbfajcDmgeXXzccEjh+mLnjqEKrkBdjHWS5vFNwDdw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/codegen": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-17.67.0.tgz", + "integrity": "sha512-idnkUplROpdBOV0HMcwhsCUS5TRUi9poagdGs70A6S4ux9+/aPuKbh8+UYRTLYQHtXvAdNfQWXDqZEx5k4Dj2Q==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pack": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-17.67.0.tgz", + "integrity": "sha512-t0ejURcGaZsn1ClbJ/3kFqSOjlryd92eQY465IYrezsXmPcfHPE/av4twRSxf6WE+TkZgLY+71vCZbiIiFKA/w==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/base64": "17.67.0", + "@jsonjoy.com/buffers": "17.67.0", + "@jsonjoy.com/codegen": "17.67.0", + "@jsonjoy.com/json-pointer": "17.67.0", + "@jsonjoy.com/util": "17.67.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0", + "tree-dump": "^1.1.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pointer": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-17.67.0.tgz", + "integrity": "sha512-+iqOFInH+QZGmSuaybBUNdh7yvNrXvqR+h3wjXm0N/3JK1EyyFAeGJvqnmQL61d1ARLlk/wJdFKSL+LHJ1eaUA==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/util": "17.67.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/util": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-17.67.0.tgz", + "integrity": "sha512-6+8xBaz1rLSohlGh68D1pdw3AwDi9xydm8QNlAFkvnavCJYSze+pxoW2VKP8p308jtlMRLs5NTHfPlZLd4w7ew==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/buffers": "17.67.0", + "@jsonjoy.com/codegen": "17.67.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz", + "integrity": "sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/base64": "^1.1.2", + "@jsonjoy.com/buffers": "^1.2.0", + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/json-pointer": "^1.0.2", + "@jsonjoy.com/util": "^1.9.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0", + "tree-dump": "^1.1.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pack/node_modules/@jsonjoy.com/buffers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz", + "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pointer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz", + "integrity": "sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/util": "^1.9.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/util": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz", + "integrity": "sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/buffers": "^1.0.0", + "@jsonjoy.com/codegen": "^1.0.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/util/node_modules/@jsonjoy.com/buffers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz", + "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.5.tgz", + "integrity": "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.1.tgz", + "integrity": "sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.1.tgz", + "integrity": "sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==", + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.2.tgz", + "integrity": "sha512-b1UQwcEZ4yCnMCD8DAL1VlbvBJE9/IX4FTIp7BG1xYpf29SLazLSrqUkj4w7Y5y7cCVP6E5tcqqcI0xemPkHug==", + "license": "BSD-3-Clause" + }, + "node_modules/@swc/core": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.16.2.tgz", + "integrity": "sha512-95I4kiSMeveI/Mhi+tE4fiWcWLUMfzfKrk0jtr8LRMqHgOgq+xHS+zExkDqoO4b5OeeuXHMWVdD5MeP3X6sULw==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.28" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.16.2", + "@swc/core-darwin-x64": "1.16.2", + "@swc/core-linux-arm-gnueabihf": "1.16.2", + "@swc/core-linux-arm64-gnu": "1.16.2", + "@swc/core-linux-arm64-musl": "1.16.2", + "@swc/core-linux-ppc64-gnu": "1.16.2", + "@swc/core-linux-s390x-gnu": "1.16.2", + "@swc/core-linux-x64-gnu": "1.16.2", + "@swc/core-linux-x64-musl": "1.16.2", + "@swc/core-win32-arm64-msvc": "1.16.2", + "@swc/core-win32-ia32-msvc": "1.16.2", + "@swc/core-win32-x64-msvc": "1.16.2" + }, + "peerDependencies": { + "@swc/helpers": ">=0.5.17" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.16.2.tgz", + "integrity": "sha512-i/j0HNbnn79qnTVPicvay92Nark8fW8NQqn1e2mGERjUXNpBV0+SwQxlRpk2zBhn6laJ8PDI6Kn1nHZhnz3LCA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.16.2.tgz", + "integrity": "sha512-HrwqHyEyHVXO3qTk8EkNK7/b6sOZSEoNh+pot6RdE5x0LbNqfo8LtJUvi3UTXr+5ja/o5HbJdW80eCXo+NjbiA==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.16.2.tgz", + "integrity": "sha512-MdXi83Z/gGp1LIrg+h7HKxiul/z/Bty/ZJSvYAFqDl9zteC1XLSAZdScquKtXPp50rdyXqritTDCqQBhwVfZKA==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.16.2.tgz", + "integrity": "sha512-/jcTmK6Ktz3owM3YtiKvjofV6p3VpHnYzTIrOGwDIOsDigRAAVuZ8east33wYO/7UTdKYFlyHNnJNT0WJqOA3Q==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.16.2.tgz", + "integrity": "sha512-4gFarKaFnlJTSlJYKmMhV4u+3YE4uYfiydpBoYjmgQhCf9lAieOq+WilZaK9vVSHeqLuQpTEiGULZqAdsRX5Dw==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-ppc64-gnu": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/@swc/core-linux-ppc64-gnu/-/core-linux-ppc64-gnu-1.16.2.tgz", + "integrity": "sha512-syqSLGd6KlZ1PciNzs6bIUlhOuFztZufebOHaERjc4N4SqNZxyqYd4I+jj/EfOYnpe0kNjccn9HJLN1p5dz3+w==", + "cpu": [ + "ppc64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-s390x-gnu": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/@swc/core-linux-s390x-gnu/-/core-linux-s390x-gnu-1.16.2.tgz", + "integrity": "sha512-ZBBLK+ewGyXLzWeMS7wbKtWBdnif6etn7xvPY/iOfbdsjX/+bgkp1pQt2lWF2wlu2hXYZuhJ/tHZE/QR8/apzg==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.16.2.tgz", + "integrity": "sha512-LyHJgxCA4Tje0ysBMbEb0tt/ie8kgUKoFE3JAKFhpevmTmhYEoC0H9s47WuDsqiFckF1ITUguZIXJG6K5e0dvg==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.16.2.tgz", + "integrity": "sha512-PghXJlVM1cgtLfNUR1vxFo1z+PDRAe8cWAJlZZ7spmeiN7BospGXg/MHUg7oNSgwSX7Zo//YKv9P5yD9apsFJQ==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.16.2.tgz", + "integrity": "sha512-StTOSefYBxemvNYYUI3UmO1a8y+hSPjjfHogC2TEHL+Z1PlEBim/XtLas5rS04jAzT9RrNmbtX911SZ42H9jSQ==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.16.2.tgz", + "integrity": "sha512-fycER209DYIzsibpTMC+chND05OfOjgztWL9U8OE6/uUlsOUZH3eh98isBLEnOymYUhlJLEt5++W1+KL/FOh5Q==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.16.2.tgz", + "integrity": "sha512-cSd1z6ivSrJPVr+moVwOHWjeKy6TpO4/Shwcv5KCrKYXCccxwh4pRy1C3fDioNx2PF1jPZWHKZjtXt+Be9VbaQ==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "license": "Apache-2.0" + }, + "node_modules/@swc/types": { + "version": "0.1.28", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.28.tgz", + "integrity": "sha512-V6Mnml8v09QALx6K0elJ7o9K/MkVDtW3t6L+7Ou/JcWtb3xwId2AH4FeOceySd2JaO87IMw4+6vSZxLm34LPbw==", + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3" + } + }, + "node_modules/@temporalio/activity": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@temporalio/activity/-/activity-1.23.0.tgz", + "integrity": "sha512-BVeiizVD08yk0Ls6MhKCK+g3fPIWbVM9MLx+o990KwhCaZtRM6o1+du1/qfIIShHl6YjHk+H0ewkx2x14QQ6bA==", + "license": "MIT", + "dependencies": { + "@temporalio/client": "1.23.0", + "@temporalio/common": "1.23.0" + }, + "engines": { + "node": ">= 20.3.0" + } + }, + "node_modules/@temporalio/client": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@temporalio/client/-/client-1.23.0.tgz", + "integrity": "sha512-E9nXZPiKDGEDbPpRi0EyQ9i1x70fEIG26aMXZO88kKslKZnEKNPphs06xIic7bhuDoSrPsgVfdDap6o3l6IO2A==", + "license": "MIT", + "dependencies": { + "@grpc/grpc-js": "^1.12.4", + "@temporalio/common": "1.23.0", + "@temporalio/proto": "1.23.0", + "abort-controller": "^3.0.0", + "long": "^5.3.2", + "nexus-rpc": "^0.0.3", + "uuid": "^11.1.0" + }, + "engines": { + "node": ">= 20.3.0" + } + }, + "node_modules/@temporalio/common": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@temporalio/common/-/common-1.23.0.tgz", + "integrity": "sha512-TaZYb/ruzgzJ8jd42EqRUCI4ispLZETt2Jigc9szES6q9edDmfncRw143HyvPi7b8n9naohYmA/IxTe9COH/dg==", + "license": "MIT", + "dependencies": { + "@temporalio/proto": "1.23.0", + "long": "^5.3.2", + "ms": "3.0.0-canary.1", + "nexus-rpc": "^0.0.3", + "protobufjs": "^8.7.1" + }, + "engines": { + "node": ">= 20.3.0" + } + }, + "node_modules/@temporalio/common/node_modules/protobufjs": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-8.8.0.tgz", + "integrity": "sha512-N3xhQ5yyBx3vQq4gubBfASzYhJGNzeDbjqBpu61g7UVylsN/qyffU96TKWD3GbbLOKF82VGNRNvv1+BFgE31Eg==", + "license": "BSD-3-Clause", + "dependencies": { + "long": "^5.3.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@temporalio/core-bridge": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@temporalio/core-bridge/-/core-bridge-1.23.0.tgz", + "integrity": "sha512-sid14odlYnci9WgB+iDLyxFbzkq+qBbRPp+CW9U1v+DLRfHlFJwpznQ1AZl4mHjtAZRGQFvDsDG0XNncl9ESSA==", + "license": "MIT", + "dependencies": { + "@grpc/grpc-js": "^1.12.4", + "@temporalio/common": "1.23.0" + }, + "engines": { + "node": ">= 20.3.0" + } + }, + "node_modules/@temporalio/nexus": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@temporalio/nexus/-/nexus-1.23.0.tgz", + "integrity": "sha512-mObGNp3thR+mTXdtKXpUvFpsdjEI9xpVjewhblKXao7Nqv6xrs7RpFiLdKfJhkEvDyfRgIk/dH5RkiCbZ58I9w==", + "license": "MIT", + "dependencies": { + "@temporalio/client": "1.23.0", + "@temporalio/common": "1.23.0", + "@temporalio/proto": "1.23.0", + "long": "^5.3.2", + "nexus-rpc": "^0.0.3" + }, + "engines": { + "node": ">= 20.3.0" + } + }, + "node_modules/@temporalio/plugin": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@temporalio/plugin/-/plugin-1.23.0.tgz", + "integrity": "sha512-sT3eXN4YG5G4UYo5TxBco/eUDxEn5nmrBYKdUyXwKRCRoqKMRq9oLR/iTmytbecfz07MnqGVW1glGBx0WPr9ow==", + "license": "MIT", + "engines": { + "node": ">= 20.3.0" + } + }, + "node_modules/@temporalio/proto": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@temporalio/proto/-/proto-1.23.0.tgz", + "integrity": "sha512-90JWnYEs1wyq97/SXkQGknRVMr/BCV9sZ0pOnK3fHTedVinfvz3/PBVFkeAJyU3CJqMQGnzRs9IIfsBTT1icrA==", + "license": "MIT", + "dependencies": { + "long": "^5.3.2", + "protobufjs": "^8.7.1" + }, + "engines": { + "node": ">= 20.3.0" + } + }, + "node_modules/@temporalio/proto/node_modules/protobufjs": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-8.8.0.tgz", + "integrity": "sha512-N3xhQ5yyBx3vQq4gubBfASzYhJGNzeDbjqBpu61g7UVylsN/qyffU96TKWD3GbbLOKF82VGNRNvv1+BFgE31Eg==", + "license": "BSD-3-Clause", + "dependencies": { + "long": "^5.3.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@temporalio/worker": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@temporalio/worker/-/worker-1.23.0.tgz", + "integrity": "sha512-k1MrK10lD1s7U66PFqAwGlQMRsVrfU5nCB+CjIAg5RyL7JpOzidDCz/E/jB2HobXzZnxtMcDBfBHh/BYUoyhxw==", + "license": "MIT", + "dependencies": { + "@grpc/grpc-js": "^1.12.4", + "@swc/core": "^1.3.102", + "@temporalio/activity": "1.23.0", + "@temporalio/client": "1.23.0", + "@temporalio/common": "1.23.0", + "@temporalio/core-bridge": "1.23.0", + "@temporalio/nexus": "1.23.0", + "@temporalio/proto": "1.23.0", + "@temporalio/workflow": "1.23.0", + "heap-js": "^2.6.0", + "memfs": "^4.6.0", + "nexus-rpc": "^0.0.3", + "protobufjs": "^8.7.1", + "rxjs": "^7.8.1", + "source-map": "^0.7.4", + "source-map-loader": "^5.0.0", + "supports-color": "^8.1.1", + "swc-loader": "^0.2.3", + "unionfs": "^4.5.1", + "webpack": "^5.108.4" + }, + "engines": { + "node": ">= 20.3.0" + } + }, + "node_modules/@temporalio/worker/node_modules/protobufjs": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-8.8.0.tgz", + "integrity": "sha512-N3xhQ5yyBx3vQq4gubBfASzYhJGNzeDbjqBpu61g7UVylsN/qyffU96TKWD3GbbLOKF82VGNRNvv1+BFgE31Eg==", + "license": "BSD-3-Clause", + "dependencies": { + "long": "^5.3.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@temporalio/workflow": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@temporalio/workflow/-/workflow-1.23.0.tgz", + "integrity": "sha512-dHQnYmxU/QN7VfTmdfCfpdfTS1w0hoW/NQ7Zefr55QnqLwZw+E0Vn6S4fAbJrpfHrsAmezUZQFVLi+Z4Sq+jzA==", + "license": "MIT", + "dependencies": { + "@temporalio/common": "1.23.0", + "@temporalio/proto": "1.23.0", + "nexus-rpc": "^0.0.3" + }, + "engines": { + "node": ">= 20.3.0" + } + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.20.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.20.2.tgz", + "integrity": "sha512-xlvWf4Vs9n1PEVYwP1n4vvG07M6y8WgvJ2t0vbrWTmijsIHp1cS+uJ2kMIRdY3nHZK0nCYKrPeD171+SzF4/zw==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@workflowbuilder/temporal": { + "version": "0.0.0", + "resolved": "file:vendor/workflowbuilder-temporal-0.0.0.tgz", + "integrity": "sha512-Tc68tzvrfc7pmF6RX+kkGY0CecT1PkiCPnLPnP1uAp3+8lqs/8ZsK07xvxFBOmyflEsQbwGZB3ZkqsUOfsY1JA==", + "license": "Apache-2.0", + "dependencies": { + "@temporalio/activity": "^1.23.0", + "@temporalio/client": "^1.23.0", + "@temporalio/plugin": "^1.23.0", + "@temporalio/workflow": "^1.23.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "@temporalio/worker": "^1.23.0" + }, + "peerDependenciesMeta": { + "@temporalio/worker": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "license": "Apache-2.0" + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/acorn": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz", + "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.11.23", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.23.tgz", + "integrity": "sha512-le521dGVfxM7yRX0EikCoSz+rOK+hHzdDt/E7mG1jOJB/6WAAUuwVroLwaB7ApaUsz5Q0kFlDXLSA9MheUIfRQ==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/browserslist": { + "version": "4.28.9", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.9.tgz", + "integrity": "sha512-EWazOblFYUvlGZcfGhPUPmYh3nikUxBVb+y9MJun5f3hBi812X+8MSQTujLBtgK3cf51fJWbWfOjyeO954d+Eg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.11.20", + "caniuse-lite": "^1.0.30001810", + "electron-to-chromium": "^1.5.420", + "node-releases": "^2.0.54", + "update-browserslist-db": "^1.3.2" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001810", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001810.tgz", + "integrity": "sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.427", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.427.tgz", + "integrity": "sha512-n14zb3FdsChZ2BNobqNHAJMcP3ifFv4paox2LvCrfVAQcqGiSURgbJl+PfMpHVCNFkStnNc+RRVtPBTVW5PDgw==", + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/enhanced-resolve": { + "version": "5.25.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.25.1.tgz", + "integrity": "sha512-nGXts5znJzmWPu+mIE9izCOzdg63oJca2mDzGWWTth7sr4aCToKcoyFVBQwN75Ij5Pf6p510EwkTqViTRzDV+w==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/es-module-lexer": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.2.tgz", + "integrity": "sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==", + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.2.tgz", + "integrity": "sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.28.2", + "@esbuild/android-arm": "0.28.2", + "@esbuild/android-arm64": "0.28.2", + "@esbuild/android-x64": "0.28.2", + "@esbuild/darwin-arm64": "0.28.2", + "@esbuild/darwin-x64": "0.28.2", + "@esbuild/freebsd-arm64": "0.28.2", + "@esbuild/freebsd-x64": "0.28.2", + "@esbuild/linux-arm": "0.28.2", + "@esbuild/linux-arm64": "0.28.2", + "@esbuild/linux-ia32": "0.28.2", + "@esbuild/linux-loong64": "0.28.2", + "@esbuild/linux-mips64el": "0.28.2", + "@esbuild/linux-ppc64": "0.28.2", + "@esbuild/linux-riscv64": "0.28.2", + "@esbuild/linux-s390x": "0.28.2", + "@esbuild/linux-x64": "0.28.2", + "@esbuild/netbsd-arm64": "0.28.2", + "@esbuild/netbsd-x64": "0.28.2", + "@esbuild/openbsd-arm64": "0.28.2", + "@esbuild/openbsd-x64": "0.28.2", + "@esbuild/openharmony-arm64": "0.28.2", + "@esbuild/sunos-x64": "0.28.2", + "@esbuild/win32-arm64": "0.28.2", + "@esbuild/win32-ia32": "0.28.2", + "@esbuild/win32-x64": "0.28.2" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.7.tgz", + "integrity": "sha512-dOvZVzjdZdz7phd9v6jCbwxrBW3fK6n8Rc0CtdmM4bumzMnxywBYhuph6J819RRw/ku+rLbelwfMunktuzVVHg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fs-monkey": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.1.0.tgz", + "integrity": "sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==", + "license": "Unlicense" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/glob-to-regex.js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.3.1.tgz", + "integrity": "sha512-zhWhMRsgnOym+1txhUmYJGD6eUsbUdrZv55gCYKuJX8t2p3+M8My23PD09bEIsreGUs5pnSa/idmcfp2/IlqGg==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/heap-js": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/heap-js/-/heap-js-2.7.1.tgz", + "integrity": "sha512-EQfezRg0NCZGNlhlDR3Evrw1FVL2G3LhU7EgPoxufQKruNBSYA8MiRPHeWbU+36o+Fhel0wMwM+sLEiBAlNLJA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "license": "MIT", + "engines": { + "node": ">=10.18" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "license": "MIT" + }, + "node_modules/long": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", + "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", + "license": "Apache-2.0" + }, + "node_modules/memfs": { + "version": "4.78.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.78.0.tgz", + "integrity": "sha512-gX14RGPP+fyNodL8g9jc5DfKtWNCronEMItOKDyZatTI3CPpMZDPtm7rAbftDqQAFovP4nzR0RO80sESSEnI4g==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-core": "4.78.0", + "@jsonjoy.com/fs-fsa": "4.78.0", + "@jsonjoy.com/fs-node": "4.78.0", + "@jsonjoy.com/fs-node-builtins": "4.78.0", + "@jsonjoy.com/fs-node-to-fsa": "4.78.0", + "@jsonjoy.com/fs-node-utils": "4.78.0", + "@jsonjoy.com/fs-print": "4.78.0", + "@jsonjoy.com/fs-snapshot": "4.78.0", + "@jsonjoy.com/json-pack": "^1.11.0", + "@jsonjoy.com/util": "^1.9.0", + "glob-to-regex.js": "^1.3.1", + "thingies": "^2.5.0", + "tree-dump": "^1.0.3", + "tslib": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimizer-webpack-plugin": { + "version": "5.10.1", + "resolved": "https://registry.npmjs.org/minimizer-webpack-plugin/-/minimizer-webpack-plugin-5.10.1.tgz", + "integrity": "sha512-+dsZEyTcy1lkq41lxdiOqvb26gXbYGgwY+30w37f9PqUVkuEBejBLDotsHOTjuga9xJyGLW2DqzKDUyJ4W/PMQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.31", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.3", + "terser": "^5.51.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@minify-html/node": { + "optional": true + }, + "@napi-rs/image": { + "optional": true + }, + "@swc/core": { + "optional": true + }, + "@swc/css": { + "optional": true + }, + "@swc/html": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "cssnano": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "html-minifier-terser": { + "optional": true + }, + "imagemin": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "postcss": { + "optional": true + }, + "sharp": { + "optional": true + }, + "svgo": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/ms": { + "version": "3.0.0-canary.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-3.0.0-canary.1.tgz", + "integrity": "sha512-kh8ARjh8rMN7Du2igDRO9QJnqCb2xYTJxyQYK7vJJS4TvLLmsbyhiKpSW+t+y26gyOyMd0riphX0GeWKU3ky5g==", + "license": "MIT", + "engines": { + "node": ">=12.13" + } + }, + "node_modules/nexus-rpc": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/nexus-rpc/-/nexus-rpc-0.0.3.tgz", + "integrity": "sha512-ksIBeYHDv6FHAR1h3Vwk0kQ6REhdo1STqDHXMzu/yn/VN/XzgOor2IUjewG6paoA7IgxlIPZoOU/PD78PC6HTg==", + "license": "MIT", + "engines": { + "node": ">= 20.0.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.55", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.55.tgz", + "integrity": "sha512-mIrE/Cw9y+9Au6dS5vDKDhQza9YvG6w+ZrS6X+ZzA7yFW/soAeaups4Qzn1bL6g5FVy8WtP79+0j82oPIbqRjQ==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/protobufjs": { + "version": "7.6.6", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.6.6.tgz", + "integrity": "sha512-dYDWdjSl5RNb7SgPxGQcRU+GtvP7s2fpkrY0r432PcOIaZ0/rBcxEZnQN67iJhFuQiVw754JDoPruPCNdGsbjg==", + "hasInstallScript": true, + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.5", + "@protobufjs/eventemitter": "^1.1.1", + "@protobufjs/fetch": "^1.1.1", + "@protobufjs/float": "^1.0.2", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.1", + "@types/node": ">=13.7.0", + "long": "^5.3.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/schema-utils": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.5.0.tgz", + "integrity": "sha512-zJlMCZ0cAR5p/Y4oVpRoqioDMJcGxaXRrQ/4rP4WyR84vc5z/DolXdbvXeDpTwbtocDFr2rhPqHPErDCUtz2kA==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.15", + "ajv": "^8.20.0", + "ajv-formats": "^3.0.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/source-map": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 12" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-5.0.0.tgz", + "integrity": "sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==", + "license": "MIT", + "dependencies": { + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.72.1" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/swc-loader": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.7.tgz", + "integrity": "sha512-nwYWw3Fh9ame3Rtm7StS9SBLpHRRnYcK7bnpF3UKZmesAK0gw2/ADvlURFAINmPvKtDLzp+GBiP9yLoEjg6S9w==", + "license": "MIT", + "dependencies": { + "@swc/counter": "^0.1.3" + }, + "peerDependencies": { + "@swc/core": "^1.2.147", + "webpack": ">=2" + } + }, + "node_modules/tapable": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", + "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser": { + "version": "5.51.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.51.2.tgz", + "integrity": "sha512-bWnjSNscmuI+GJze6ZupnHP8G/cTcsJF+bXCeQknk2SHQsgbNJnLrqiH9jZ2W4STPVXH2mDKKRX3iwPhc9Cn/Q==", + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/thingies": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.6.1.tgz", + "integrity": "sha512-cV/CMGTK3M4MlnJ/0At6ismOw/A0EEniDNScajjz/Br3c1sqE72YD01rGpPTKwd27wAxI5Pr+6+0w8yofzFRYw==", + "license": "MIT", + "engines": { + "node": ">=10.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "^2" + } + }, + "node_modules/tree-dump": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.1.0.tgz", + "integrity": "sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tsx": { + "version": "4.23.13", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.23.13.tgz", + "integrity": "sha512-BL5MGkRln6aDYhb0xbQlEAGw743BaZYWdbWtdJOBriYJboKgUUYCadFp2/FpBBZquBC/ezNBn7wMMPx7FDZUDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.28.0" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/typescript": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "license": "MIT" + }, + "node_modules/unionfs": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/unionfs/-/unionfs-4.6.0.tgz", + "integrity": "sha512-fJAy3gTHjFi5S3TP5EGdjs/OUMFFvI/ady3T8qVuZfkv8Qi8prV/Q8BuFEgODJslhZTT2z2qdD2lGdee9qjEnA==", + "dependencies": { + "fs-monkey": "^1.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.3.tgz", + "integrity": "sha512-pJ2sYawQS0R/WI928Gj5GlPhTGzbMelq0+4INtSYNDV9ErKJcX6xjGWkoG/VnB3dpUm00zALaqkrUD77pO5TDQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uuid": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.1.tgz", + "integrity": "sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, + "node_modules/watchpack": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.2.tgz", + "integrity": "sha512-6i/00NBjP4yGPs+caKSyRfpTF/8Torsu0MOW3mMzIbhgISFder8i7xbqgHlLMwJrdiN8ndBV3UA1/AfzPSr+jg==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack": { + "version": "5.111.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.111.0.tgz", + "integrity": "sha512-A2R74kfE6b3eLKS91iZiol03Ebx7avmJJBOyiP+4LePW9NNeNJGQkKeSQos4dk6R4H0YAMYlv+aOrs1CyWT3eA==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "browserslist": "^4.28.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.25.0", + "es-module-lexer": "^2.1.0", + "events": "^3.2.0", + "graceful-fs": "^4.2.11", + "mime-db": "^1.54.0", + "minimizer-webpack-plugin": "^5.7.0", + "schema-utils": "^4.5.0", + "tapable": "^2.3.0", + "watchpack": "^2.5.2", + "webpack-sources": "^3.5.1" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-sources": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.5.1.tgz", + "integrity": "sha512-jyuiGJdtvY434z5bUZrjz67v76/ePNvFZTp9Mdz29IlH4+GPsgyGjiv0fKI+M7BdkU6ADjulUcKAd3tUK3WlEw==", + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "17.7.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.3.tgz", + "integrity": "sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + } + } +} diff --git a/examples/workflow-builder-temporal/worker/package.json b/examples/workflow-builder-temporal/worker/package.json index a6210499b..dbf79b54f 100644 --- a/examples/workflow-builder-temporal/worker/package.json +++ b/examples/workflow-builder-temporal/worker/package.json @@ -18,7 +18,7 @@ "@temporalio/activity": "1.23.0", "@temporalio/client": "1.23.0", "@temporalio/worker": "1.23.0", - "@workflowbuilder/temporal": "^0.1.0" + "@workflowbuilder/temporal": "file:vendor/workflowbuilder-temporal-0.0.0.tgz" }, "devDependencies": { "@types/node": "^22.12.0", diff --git a/examples/workflow-builder-temporal/worker/vendor/README.md b/examples/workflow-builder-temporal/worker/vendor/README.md new file mode 100644 index 000000000..5e9b04142 --- /dev/null +++ b/examples/workflow-builder-temporal/worker/vendor/README.md @@ -0,0 +1,20 @@ +# Vendored plugin build + +`@workflowbuilder/temporal` is not on npm yet, so this folder carries a packed build of it and +[`worker/package.json`](../package.json) depends on that file. `npm install` in `worker/` needs +nothing else. + +Refresh the tarball after changing the plugin, from the Workflow Builder repository root: + +```bash +pnpm build:temporal +cd packages/temporal +pnpm pack --pack-destination ../../examples/workflow-builder-temporal/worker/vendor +``` + +Then run `npm install` in `worker/` so `package-lock.json` picks up the new integrity hash. Nothing +checks that the tarball matches the plugin source: a stale one runs old code without saying so. + +When the package reaches npm, delete this folder, depend on the published range instead, regenerate +the lockfile, and drop the `!/worker/vendor/*.tgz` exception from the sample's `.gitignore`. +(follow-up: temporal-sample-npm-dependency) diff --git a/examples/workflow-builder-temporal/worker/vendor/workflowbuilder-temporal-0.0.0.tgz b/examples/workflow-builder-temporal/worker/vendor/workflowbuilder-temporal-0.0.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..7aeb4e86101dee4d7d1cfbeb3a24703edf0a7a19 GIT binary patch literal 48623 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 X&)+|P|NQ+k>*xOi`m{)*0KNhMUI;`% literal 0 HcmV?d00001 From 5a2260586551f9a654f1bea1e507b328e5f73aad Mon Sep 17 00:00:00 2001 From: Dawid Aksamski Date: Mon, 14 Sep 2026 17:24:49 +0200 Subject: [PATCH 19/22] feat(examples): dim the node the decision skipped --- .../editor/src/execution/execution.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/examples/workflow-builder-temporal/editor/src/execution/execution.css b/examples/workflow-builder-temporal/editor/src/execution/execution.css index ad1d2b048..dcdabf2fe 100644 --- a/examples/workflow-builder-temporal/editor/src/execution/execution.css +++ b/examples/workflow-builder-temporal/editor/src/execution/execution.css @@ -76,6 +76,10 @@ background: #6b7280; } +.react-flow__node:has(.run-marker--skipped) { + opacity: 0.5; +} + @keyframes run-marker-spin { to { transform: rotate(360deg); From 8e8f39005db8cd29006c02fea86686b4880a6ca2 Mon Sep 17 00:00:00 2001 From: Dawid Aksamski Date: Mon, 14 Sep 2026 17:25:02 +0200 Subject: [PATCH 20/22] docs(examples): refresh the editor screenshot with the reset button & dimmed node --- examples/workflow-builder-temporal/README.md | 2 +- .../docs/editor-run.png | Bin 110951 -> 120794 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/workflow-builder-temporal/README.md b/examples/workflow-builder-temporal/README.md index eb808f206..38ffc7f09 100644 --- a/examples/workflow-builder-temporal/README.md +++ b/examples/workflow-builder-temporal/README.md @@ -4,7 +4,7 @@ Run a workflow drawn in the Workflow Builder editor as a durable Temporal Workfl This sample wires the [`@workflowbuilder/temporal`](https://www.npmjs.com/package/@workflowbuilder/temporal) plugin into a Temporal Worker and executes a five-node diagram authored in the [Workflow Builder](https://www.workflowbuilder.io) editor. One node fails on its first attempt on purpose, so the retry you see in Event History is a real one, and a decision node routes each run down one of two branches while the other is pruned. An optional editor lets you change the diagram and watch nodes light up while Temporal runs them. -![Nodes lighting up in the editor while Temporal runs the flow](docs/editor-run.png) +![A finished run in the editor: green on every node Temporal executed, grey on the branch it skipped](docs/editor-run.png) ## What runs where diff --git a/examples/workflow-builder-temporal/docs/editor-run.png b/examples/workflow-builder-temporal/docs/editor-run.png index f721837441414149b89f3b7d8229f4d48cfe72ff..aec66a3b6a61d3b291e8c0255886a837b2a1e522 100644 GIT binary patch literal 120794 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�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 ZU#Jifpt)OY_y_n;=92uyj0-pa{67`?CBOgx literal 110951 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 aU|oH0u6)A{%b8{1KV?PrQ>iB|-TGe#sC4xJ From f870364f301ae9534f83cab2ca16e155071e72ab Mon Sep 17 00:00:00 2001 From: Dawid Aksamski Date: Mon, 14 Sep 2026 17:25:11 +0200 Subject: [PATCH 21/22] ci: build and typecheck the Temporal sample on pull requests --- .github/workflows/pr-check.yml | 37 ++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/.github/workflows/pr-check.yml b/.github/workflows/pr-check.yml index 9e01a1c89..5e3f0e676 100644 --- a/.github/workflows/pr-check.yml +++ b/.github/workflows/pr-check.yml @@ -104,6 +104,43 @@ jobs: - name: Build run: npm run build + temporal-sample: + name: Temporal sample typecheck + build + runs-on: ubuntu-latest + # Two npm projects, neither in the pnpm workspace, so this job needs no pnpm and no + # workspace install. The worker resolves @workflowbuilder/temporal from the packed + # build committed under worker/vendor/ until the package reaches npm; a refreshed + # tarball that breaks the sample fails here. There are no tests to run: the sample + # demonstrates the plugin rather than testing it. + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: 22 + cache: npm + cache-dependency-path: | + examples/workflow-builder-temporal/worker/package-lock.json + examples/workflow-builder-temporal/editor/package-lock.json + + - name: Install worker dependencies + working-directory: examples/workflow-builder-temporal/worker + run: npm ci + + - name: Typecheck worker + working-directory: examples/workflow-builder-temporal/worker + run: npm run typecheck + + - name: Install editor dependencies + working-directory: examples/workflow-builder-temporal/editor + run: npm ci + + - name: Build editor + working-directory: examples/workflow-builder-temporal/editor + run: npm run build + temporal: name: Temporal plugin lint + typecheck + test + build runs-on: ubuntu-latest From 16e98e66a94483d68ab42ceac89a38d1c3e94fbc Mon Sep 17 00:00:00 2001 From: Dawid Aksamski Date: Wed, 16 Sep 2026 16:45:15 +0200 Subject: [PATCH 22/22] docs(examples): point the plugin links at the repository and document a port fallback --- examples/workflow-builder-temporal/README.md | 22 +++++++++++++++++-- .../worker/vendor/README.md | 11 ++++++++-- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/examples/workflow-builder-temporal/README.md b/examples/workflow-builder-temporal/README.md index 38ffc7f09..acdd57670 100644 --- a/examples/workflow-builder-temporal/README.md +++ b/examples/workflow-builder-temporal/README.md @@ -2,7 +2,7 @@ Run a workflow drawn in the Workflow Builder editor as a durable Temporal Workflow Execution: every node becomes an Activity, retries and history come from Temporal, and the canvas shows each node's status live. -This sample wires the [`@workflowbuilder/temporal`](https://www.npmjs.com/package/@workflowbuilder/temporal) plugin into a Temporal Worker and executes a five-node diagram authored in the [Workflow Builder](https://www.workflowbuilder.io) editor. One node fails on its first attempt on purpose, so the retry you see in Event History is a real one, and a decision node routes each run down one of two branches while the other is pruned. An optional editor lets you change the diagram and watch nodes light up while Temporal runs them. +This sample wires the [`@workflowbuilder/temporal`](https://github.com/synergycodes/workflowbuilder/tree/main/packages/temporal) plugin into a Temporal Worker and executes a five-node diagram authored in the [Workflow Builder](https://www.workflowbuilder.io) editor. One node fails on its first attempt on purpose, so the retry you see in Event History is a real one, and a decision node routes each run down one of two branches while the other is pruned. An optional editor lets you change the diagram and watch nodes light up while Temporal runs them. ![A finished run in the editor: green on every node Temporal executed, grey on the branch it skipped](docs/editor-run.png) @@ -57,6 +57,24 @@ Terminal 1, a local Temporal server: temporal server start-dev ``` +If something already holds 7233 or 8233 — another Temporal you started earlier — run this one +elsewhere: + +```bash +temporal server start-dev --port 7234 --ui-port 8234 +``` + +and put the addresses in front of both npm commands below, which +[`worker/src/config.ts`](worker/src/config.ts) reads: + +```bash +# terminal 2 +TEMPORAL_ADDRESS=127.0.0.1:7234 TEMPORAL_UI_ORIGIN=http://localhost:8234 npm start + +# terminal 3 +TEMPORAL_ADDRESS=127.0.0.1:7234 TEMPORAL_UI_ORIGIN=http://localhost:8234 npm run workflow +``` + Terminal 2, the Worker: ```bash @@ -165,7 +183,7 @@ Six places carry the whole integration. Each has a comment where the reason is n ## Learn more -- [`@workflowbuilder/temporal` on npm](https://www.npmjs.com/package/@workflowbuilder/temporal): profiles, node labels in Event History, versioning and replay. +- [`@workflowbuilder/temporal`](https://github.com/synergycodes/workflowbuilder/tree/main/packages/temporal): profiles, node labels in Event History, versioning and replay. - [Workflow Builder documentation](https://www.workflowbuilder.io/docs/overview/) - [Temporal TypeScript SDK](https://docs.temporal.io/develop/typescript) diff --git a/examples/workflow-builder-temporal/worker/vendor/README.md b/examples/workflow-builder-temporal/worker/vendor/README.md index 5e9b04142..d8af844f9 100644 --- a/examples/workflow-builder-temporal/worker/vendor/README.md +++ b/examples/workflow-builder-temporal/worker/vendor/README.md @@ -15,6 +15,13 @@ pnpm pack --pack-destination ../../examples/workflow-builder-temporal/worker/ven Then run `npm install` in `worker/` so `package-lock.json` picks up the new integrity hash. Nothing checks that the tarball matches the plugin source: a stale one runs old code without saying so. -When the package reaches npm, delete this folder, depend on the published range instead, regenerate -the lockfile, and drop the `!/worker/vendor/*.tgz` exception from the sample's `.gitignore`. +When the package reaches npm: + +1. Delete this folder. +2. Depend on the published range in [`worker/package.json`](../package.json) instead of the file. +3. Regenerate `worker/package-lock.json`. +4. Drop the `!/worker/vendor/*.tgz` exception from the sample's `.gitignore`. +5. Swap the two plugin links in the sample README — the opening paragraph and the Learn more list — + from this repository back to the npm page, and delete the preview note above "Run it". + (follow-up: temporal-sample-npm-dependency)