@foresthubai/workflow-core 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/NOTICE +14 -0
- package/README.md +63 -0
- package/dist/api/index.d.ts +7 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +2 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/workflow.d.ts +607 -0
- package/dist/api/workflow.d.ts.map +1 -0
- package/dist/api/workflow.js +6 -0
- package/dist/api/workflow.js.map +1 -0
- package/dist/channel/Channel.d.ts +10 -0
- package/dist/channel/Channel.d.ts.map +1 -0
- package/dist/channel/Channel.js +2 -0
- package/dist/channel/Channel.js.map +1 -0
- package/dist/channel/ChannelDefinition.d.ts +27 -0
- package/dist/channel/ChannelDefinition.d.ts.map +1 -0
- package/dist/channel/ChannelDefinition.js +50 -0
- package/dist/channel/ChannelDefinition.js.map +1 -0
- package/dist/channel/index.d.ts +7 -0
- package/dist/channel/index.d.ts.map +1 -0
- package/dist/channel/index.js +4 -0
- package/dist/channel/index.js.map +1 -0
- package/dist/channel/serialization.d.ts +17 -0
- package/dist/channel/serialization.d.ts.map +1 -0
- package/dist/channel/serialization.js +63 -0
- package/dist/channel/serialization.js.map +1 -0
- package/dist/deploy/index.d.ts +2 -0
- package/dist/deploy/index.d.ts.map +1 -0
- package/dist/deploy/index.js +2 -0
- package/dist/deploy/index.js.map +1 -0
- package/dist/deploy/requirements.d.ts +17 -0
- package/dist/deploy/requirements.d.ts.map +1 -0
- package/dist/deploy/requirements.js +41 -0
- package/dist/deploy/requirements.js.map +1 -0
- package/dist/diagnostics/__fixtures__/diagnosticFixtures.d.ts +28 -0
- package/dist/diagnostics/__fixtures__/diagnosticFixtures.d.ts.map +1 -0
- package/dist/diagnostics/__fixtures__/diagnosticFixtures.js +125 -0
- package/dist/diagnostics/__fixtures__/diagnosticFixtures.js.map +1 -0
- package/dist/diagnostics/diagnostics.d.ts +128 -0
- package/dist/diagnostics/diagnostics.d.ts.map +1 -0
- package/dist/diagnostics/diagnostics.js +783 -0
- package/dist/diagnostics/diagnostics.js.map +1 -0
- package/dist/diagnostics/index.d.ts +3 -0
- package/dist/diagnostics/index.d.ts.map +1 -0
- package/dist/diagnostics/index.js +2 -0
- package/dist/diagnostics/index.js.map +1 -0
- package/dist/edge/Edge.d.ts +22 -0
- package/dist/edge/Edge.d.ts.map +1 -0
- package/dist/edge/Edge.js +2 -0
- package/dist/edge/Edge.js.map +1 -0
- package/dist/edge/EdgeDefinition.d.ts +10 -0
- package/dist/edge/EdgeDefinition.d.ts.map +1 -0
- package/dist/edge/EdgeDefinition.js +36 -0
- package/dist/edge/EdgeDefinition.js.map +1 -0
- package/dist/edge/EdgeType.d.ts +6 -0
- package/dist/edge/EdgeType.d.ts.map +1 -0
- package/dist/edge/EdgeType.js +7 -0
- package/dist/edge/EdgeType.js.map +1 -0
- package/dist/edge/index.d.ts +6 -0
- package/dist/edge/index.d.ts.map +1 -0
- package/dist/edge/index.js +6 -0
- package/dist/edge/index.js.map +1 -0
- package/dist/edge/serialization.d.ts +18 -0
- package/dist/edge/serialization.d.ts.map +1 -0
- package/dist/edge/serialization.js +76 -0
- package/dist/edge/serialization.js.map +1 -0
- package/dist/expression/index.d.ts +5 -0
- package/dist/expression/index.d.ts.map +1 -0
- package/dist/expression/index.js +3 -0
- package/dist/expression/index.js.map +1 -0
- package/dist/expression/parser.d.ts +14 -0
- package/dist/expression/parser.d.ts.map +1 -0
- package/dist/expression/parser.js +309 -0
- package/dist/expression/parser.js.map +1 -0
- package/dist/expression/types.d.ts +11 -0
- package/dist/expression/types.d.ts.map +1 -0
- package/dist/expression/types.js +20 -0
- package/dist/expression/types.js.map +1 -0
- package/dist/function/FunctionDeclaration.d.ts +43 -0
- package/dist/function/FunctionDeclaration.d.ts.map +1 -0
- package/dist/function/FunctionDeclaration.js +17 -0
- package/dist/function/FunctionDeclaration.js.map +1 -0
- package/dist/function/index.d.ts +4 -0
- package/dist/function/index.d.ts.map +1 -0
- package/dist/function/index.js +3 -0
- package/dist/function/index.js.map +1 -0
- package/dist/function/serialization.d.ts +20 -0
- package/dist/function/serialization.d.ts.map +1 -0
- package/dist/function/serialization.js +26 -0
- package/dist/function/serialization.js.map +1 -0
- package/dist/id/index.d.ts +7 -0
- package/dist/id/index.d.ts.map +1 -0
- package/dist/id/index.js +9 -0
- package/dist/id/index.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/memory/Memory.d.ts +12 -0
- package/dist/memory/Memory.d.ts.map +1 -0
- package/dist/memory/Memory.js +2 -0
- package/dist/memory/Memory.js.map +1 -0
- package/dist/memory/MemoryDefinition.d.ts +16 -0
- package/dist/memory/MemoryDefinition.d.ts.map +1 -0
- package/dist/memory/MemoryDefinition.js +2 -0
- package/dist/memory/MemoryDefinition.js.map +1 -0
- package/dist/memory/MemoryFileDefinition.d.ts +8 -0
- package/dist/memory/MemoryFileDefinition.d.ts.map +1 -0
- package/dist/memory/MemoryFileDefinition.js +36 -0
- package/dist/memory/MemoryFileDefinition.js.map +1 -0
- package/dist/memory/MemoryRegistry.d.ts +17 -0
- package/dist/memory/MemoryRegistry.d.ts.map +1 -0
- package/dist/memory/MemoryRegistry.js +29 -0
- package/dist/memory/MemoryRegistry.js.map +1 -0
- package/dist/memory/VectorDatabaseDefinition.d.ts +7 -0
- package/dist/memory/VectorDatabaseDefinition.d.ts.map +1 -0
- package/dist/memory/VectorDatabaseDefinition.js +20 -0
- package/dist/memory/VectorDatabaseDefinition.js.map +1 -0
- package/dist/memory/index.d.ts +9 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +6 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/serialization.d.ts +11 -0
- package/dist/memory/serialization.d.ts.map +1 -0
- package/dist/memory/serialization.js +44 -0
- package/dist/memory/serialization.js.map +1 -0
- package/dist/migration/index.d.ts +5 -0
- package/dist/migration/index.d.ts.map +1 -0
- package/dist/migration/index.js +4 -0
- package/dist/migration/index.js.map +1 -0
- package/dist/migration/migrate.d.ts +11 -0
- package/dist/migration/migrate.d.ts.map +1 -0
- package/dist/migration/migrate.js +52 -0
- package/dist/migration/migrate.js.map +1 -0
- package/dist/migration/migrations.d.ts +22 -0
- package/dist/migration/migrations.d.ts.map +1 -0
- package/dist/migration/migrations.js +10 -0
- package/dist/migration/migrations.js.map +1 -0
- package/dist/migration/version.d.ts +9 -0
- package/dist/migration/version.d.ts.map +1 -0
- package/dist/migration/version.js +9 -0
- package/dist/migration/version.js.map +1 -0
- package/dist/model/LLMModelDefinition.d.ts +7 -0
- package/dist/model/LLMModelDefinition.d.ts.map +1 -0
- package/dist/model/LLMModelDefinition.js +11 -0
- package/dist/model/LLMModelDefinition.js.map +1 -0
- package/dist/model/Model.d.ts +21 -0
- package/dist/model/Model.d.ts.map +1 -0
- package/dist/model/Model.js +15 -0
- package/dist/model/Model.js.map +1 -0
- package/dist/model/ModelDefinition.d.ts +15 -0
- package/dist/model/ModelDefinition.d.ts.map +1 -0
- package/dist/model/ModelDefinition.js +2 -0
- package/dist/model/ModelDefinition.js.map +1 -0
- package/dist/model/ModelRegistry.d.ts +17 -0
- package/dist/model/ModelRegistry.d.ts.map +1 -0
- package/dist/model/ModelRegistry.js +27 -0
- package/dist/model/ModelRegistry.js.map +1 -0
- package/dist/model/index.d.ts +8 -0
- package/dist/model/index.d.ts.map +1 -0
- package/dist/model/index.js +5 -0
- package/dist/model/index.js.map +1 -0
- package/dist/model/serialization.d.ts +8 -0
- package/dist/model/serialization.d.ts.map +1 -0
- package/dist/model/serialization.js +25 -0
- package/dist/model/serialization.js.map +1 -0
- package/dist/node/AgentNode.d.ts +21 -0
- package/dist/node/AgentNode.d.ts.map +1 -0
- package/dist/node/AgentNode.js +60 -0
- package/dist/node/AgentNode.js.map +1 -0
- package/dist/node/DataNode.d.ts +14 -0
- package/dist/node/DataNode.d.ts.map +1 -0
- package/dist/node/DataNode.js +26 -0
- package/dist/node/DataNode.js.map +1 -0
- package/dist/node/FunctionNode.d.ts +24 -0
- package/dist/node/FunctionNode.d.ts.map +1 -0
- package/dist/node/FunctionNode.js +44 -0
- package/dist/node/FunctionNode.js.map +1 -0
- package/dist/node/InputNode.d.ts +46 -0
- package/dist/node/InputNode.d.ts.map +1 -0
- package/dist/node/InputNode.js +133 -0
- package/dist/node/InputNode.js.map +1 -0
- package/dist/node/LogicNode.d.ts +13 -0
- package/dist/node/LogicNode.d.ts.map +1 -0
- package/dist/node/LogicNode.js +19 -0
- package/dist/node/LogicNode.js.map +1 -0
- package/dist/node/MqttNode.d.ts +27 -0
- package/dist/node/MqttNode.d.ts.map +1 -0
- package/dist/node/MqttNode.js +96 -0
- package/dist/node/MqttNode.js.map +1 -0
- package/dist/node/Node.d.ts +49 -0
- package/dist/node/Node.d.ts.map +1 -0
- package/dist/node/Node.js +9 -0
- package/dist/node/Node.js.map +1 -0
- package/dist/node/NodeDefinition.d.ts +30 -0
- package/dist/node/NodeDefinition.d.ts.map +1 -0
- package/dist/node/NodeDefinition.js +2 -0
- package/dist/node/NodeDefinition.js.map +1 -0
- package/dist/node/NodeRegistry.d.ts +19 -0
- package/dist/node/NodeRegistry.d.ts.map +1 -0
- package/dist/node/NodeRegistry.js +65 -0
- package/dist/node/NodeRegistry.js.map +1 -0
- package/dist/node/OutputNode.d.ts +23 -0
- package/dist/node/OutputNode.d.ts.map +1 -0
- package/dist/node/OutputNode.js +62 -0
- package/dist/node/OutputNode.js.map +1 -0
- package/dist/node/ToolNode.d.ts +12 -0
- package/dist/node/ToolNode.d.ts.map +1 -0
- package/dist/node/ToolNode.js +18 -0
- package/dist/node/ToolNode.js.map +1 -0
- package/dist/node/TriggerNode.d.ts +67 -0
- package/dist/node/TriggerNode.d.ts.map +1 -0
- package/dist/node/TriggerNode.js +172 -0
- package/dist/node/TriggerNode.js.map +1 -0
- package/dist/node/constants.d.ts +16 -0
- package/dist/node/constants.d.ts.map +1 -0
- package/dist/node/constants.js +18 -0
- package/dist/node/constants.js.map +1 -0
- package/dist/node/index.d.ts +12 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.js +9 -0
- package/dist/node/index.js.map +1 -0
- package/dist/node/methods.d.ts +73 -0
- package/dist/node/methods.d.ts.map +1 -0
- package/dist/node/methods.js +261 -0
- package/dist/node/methods.js.map +1 -0
- package/dist/node/serialization.d.ts +25 -0
- package/dist/node/serialization.d.ts.map +1 -0
- package/dist/node/serialization.js +525 -0
- package/dist/node/serialization.js.map +1 -0
- package/dist/parameter/OutputParameter.d.ts +69 -0
- package/dist/parameter/OutputParameter.d.ts.map +1 -0
- package/dist/parameter/OutputParameter.js +6 -0
- package/dist/parameter/OutputParameter.js.map +1 -0
- package/dist/parameter/Parameter.d.ts +152 -0
- package/dist/parameter/Parameter.d.ts.map +1 -0
- package/dist/parameter/Parameter.js +86 -0
- package/dist/parameter/Parameter.js.map +1 -0
- package/dist/parameter/index.d.ts +5 -0
- package/dist/parameter/index.d.ts.map +1 -0
- package/dist/parameter/index.js +3 -0
- package/dist/parameter/index.js.map +1 -0
- package/dist/variable/Variable.d.ts +25 -0
- package/dist/variable/Variable.d.ts.map +1 -0
- package/dist/variable/Variable.js +2 -0
- package/dist/variable/Variable.js.map +1 -0
- package/dist/variable/index.d.ts +3 -0
- package/dist/variable/index.d.ts.map +1 -0
- package/dist/variable/index.js +5 -0
- package/dist/variable/index.js.map +1 -0
- package/dist/variable/operations.d.ts +37 -0
- package/dist/variable/operations.d.ts.map +1 -0
- package/dist/variable/operations.js +88 -0
- package/dist/variable/operations.js.map +1 -0
- package/dist/workflow/Workflow.d.ts +38 -0
- package/dist/workflow/Workflow.d.ts.map +1 -0
- package/dist/workflow/Workflow.js +8 -0
- package/dist/workflow/Workflow.js.map +1 -0
- package/dist/workflow/index.d.ts +4 -0
- package/dist/workflow/index.d.ts.map +1 -0
- package/dist/workflow/index.js +3 -0
- package/dist/workflow/index.js.map +1 -0
- package/dist/workflow/serialization.d.ts +43 -0
- package/dist/workflow/serialization.d.ts.map +1 -0
- package/dist/workflow/serialization.js +215 -0
- package/dist/workflow/serialization.js.map +1 -0
- package/package.json +105 -0
- package/src/api/index.ts +11 -0
- package/src/api/workflow.ts +607 -0
- package/src/channel/Channel.ts +11 -0
- package/src/channel/ChannelDefinition.ts +76 -0
- package/src/channel/index.ts +6 -0
- package/src/channel/serialization.ts +68 -0
- package/src/deploy/index.ts +1 -0
- package/src/deploy/requirements.test.ts +61 -0
- package/src/deploy/requirements.ts +41 -0
- package/src/diagnostics/__fixtures__/diagnosticFixtures.ts +158 -0
- package/src/diagnostics/diagnostics.test.ts +878 -0
- package/src/diagnostics/diagnostics.ts +936 -0
- package/src/diagnostics/index.ts +11 -0
- package/src/edge/Edge.ts +23 -0
- package/src/edge/EdgeDefinition.ts +45 -0
- package/src/edge/EdgeType.ts +19 -0
- package/src/edge/index.ts +8 -0
- package/src/edge/serialization.ts +83 -0
- package/src/expression/index.ts +4 -0
- package/src/expression/parser.ts +362 -0
- package/src/expression/types.ts +30 -0
- package/src/function/FunctionDeclaration.ts +54 -0
- package/src/function/index.ts +3 -0
- package/src/function/serialization.ts +40 -0
- package/src/globals.d.ts +9 -0
- package/src/id/index.ts +8 -0
- package/src/index.ts +22 -0
- package/src/memory/Memory.ts +15 -0
- package/src/memory/MemoryDefinition.ts +16 -0
- package/src/memory/MemoryFileDefinition.ts +37 -0
- package/src/memory/MemoryRegistry.ts +35 -0
- package/src/memory/VectorDatabaseDefinition.ts +21 -0
- package/src/memory/index.ts +8 -0
- package/src/memory/serialization.ts +47 -0
- package/src/migration/index.ts +4 -0
- package/src/migration/migrate.test.ts +44 -0
- package/src/migration/migrate.ts +58 -0
- package/src/migration/migrations.ts +24 -0
- package/src/migration/version.ts +9 -0
- package/src/model/LLMModelDefinition.ts +12 -0
- package/src/model/Model.ts +39 -0
- package/src/model/ModelDefinition.ts +15 -0
- package/src/model/ModelRegistry.ts +33 -0
- package/src/model/index.ts +7 -0
- package/src/model/serialization.ts +30 -0
- package/src/node/AgentNode.ts +82 -0
- package/src/node/DataNode.ts +41 -0
- package/src/node/FunctionNode.ts +76 -0
- package/src/node/InputNode.ts +185 -0
- package/src/node/LogicNode.ts +33 -0
- package/src/node/MqttNode.ts +127 -0
- package/src/node/Node.ts +61 -0
- package/src/node/NodeDefinition.ts +37 -0
- package/src/node/NodeRegistry.ts +85 -0
- package/src/node/OutputNode.ts +87 -0
- package/src/node/ToolNode.ts +32 -0
- package/src/node/TriggerNode.ts +272 -0
- package/src/node/constants.ts +16 -0
- package/src/node/index.ts +26 -0
- package/src/node/methods.ts +278 -0
- package/src/node/serialization.ts +544 -0
- package/src/parameter/OutputParameter.ts +68 -0
- package/src/parameter/Parameter.ts +243 -0
- package/src/parameter/index.ts +33 -0
- package/src/variable/Variable.ts +10 -0
- package/src/variable/index.ts +16 -0
- package/src/variable/operations.ts +106 -0
- package/src/workflow/Workflow.ts +41 -0
- package/src/workflow/index.ts +3 -0
- package/src/workflow/serialization.test.ts +240 -0
- package/src/workflow/serialization.ts +242 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { NodeBase } from "./Node";
|
|
2
|
+
import type { Expression } from "../api";
|
|
3
|
+
import { NodeCategory, NodeTag } from "./constants";
|
|
4
|
+
import { NodeDefinition } from "./NodeDefinition";
|
|
5
|
+
|
|
6
|
+
export interface WritePinNode extends NodeBase {
|
|
7
|
+
type: "WritePin";
|
|
8
|
+
arguments: {
|
|
9
|
+
pinReference: string | undefined;
|
|
10
|
+
signalType: "digital" | "analog";
|
|
11
|
+
value: Expression;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface SerialWriteNode extends NodeBase {
|
|
16
|
+
type: "SerialWrite";
|
|
17
|
+
arguments: {
|
|
18
|
+
portReference: string | undefined;
|
|
19
|
+
value: Expression; // Expression for the value to write
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export type OutputNodeType = "WritePin" | "SerialWrite";
|
|
24
|
+
export type OutputNode = WritePinNode | SerialWriteNode;
|
|
25
|
+
|
|
26
|
+
// Node Definitions
|
|
27
|
+
|
|
28
|
+
export const WritePinNodeDefinition: NodeDefinition = {
|
|
29
|
+
type: "WritePin",
|
|
30
|
+
label: "Write Pin",
|
|
31
|
+
category: NodeCategory.Output,
|
|
32
|
+
tags: [NodeTag.Pin],
|
|
33
|
+
description: "Write data to a pin",
|
|
34
|
+
parameters: [
|
|
35
|
+
{
|
|
36
|
+
id: "pinReference",
|
|
37
|
+
label: "Pin",
|
|
38
|
+
description: "IO pin to write to",
|
|
39
|
+
type: "channelSelect",
|
|
40
|
+
channelType: (args) => ((args as WritePinNode["arguments"]).signalType === "digital" ? ["GPIOOUT"] : ["PWM", "DAC"]),
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
id: "signalType",
|
|
44
|
+
label: "Signal Type",
|
|
45
|
+
description: "Type of signal",
|
|
46
|
+
type: "selection",
|
|
47
|
+
default: "digital",
|
|
48
|
+
options: [
|
|
49
|
+
{ value: "digital", label: "Digital" },
|
|
50
|
+
{ value: "analog", label: "Analog" },
|
|
51
|
+
],
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
id: "value",
|
|
55
|
+
label: "Value",
|
|
56
|
+
description: "What value to write to the pin",
|
|
57
|
+
type: "expression",
|
|
58
|
+
expressionType: (args) => ((args as WritePinNode["arguments"]).signalType === "digital" ? "bool" : "int"),
|
|
59
|
+
default: { expression: "", references: [], dataType: "bool" },
|
|
60
|
+
},
|
|
61
|
+
],
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
export const SerialWriteNodeDefinition: NodeDefinition = {
|
|
65
|
+
type: "SerialWrite",
|
|
66
|
+
label: "Serial Write",
|
|
67
|
+
category: NodeCategory.Output,
|
|
68
|
+
tags: [NodeTag.Serial],
|
|
69
|
+
description: "Write string to serial port",
|
|
70
|
+
parameters: [
|
|
71
|
+
{
|
|
72
|
+
id: "portReference",
|
|
73
|
+
label: "Port",
|
|
74
|
+
description: "Serial port to write to",
|
|
75
|
+
type: "channelSelect",
|
|
76
|
+
channelType: ["UART"],
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
id: "value",
|
|
80
|
+
label: "Value",
|
|
81
|
+
description: "Expression for the value to write",
|
|
82
|
+
type: "expression",
|
|
83
|
+
expressionType: "string",
|
|
84
|
+
default: { expression: "", references: [], dataType: "string" },
|
|
85
|
+
},
|
|
86
|
+
],
|
|
87
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { NodeBase } from "./Node";
|
|
2
|
+
import { NodeCategory } from "./constants";
|
|
3
|
+
import { NodeDefinition } from "./NodeDefinition";
|
|
4
|
+
|
|
5
|
+
// Web Search Tool - provides web search capability to agents
|
|
6
|
+
export interface WebSearchToolNode extends NodeBase {
|
|
7
|
+
type: "WebSearchTool";
|
|
8
|
+
arguments: {
|
|
9
|
+
maxResults?: number;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export type ToolNodeType = "WebSearchTool";
|
|
14
|
+
export type ToolNode = WebSearchToolNode;
|
|
15
|
+
|
|
16
|
+
// Node Definitions
|
|
17
|
+
|
|
18
|
+
export const WebSearchToolNodeDefinition: NodeDefinition = {
|
|
19
|
+
type: "WebSearchTool",
|
|
20
|
+
label: "Web Search",
|
|
21
|
+
category: NodeCategory.Tool,
|
|
22
|
+
description: "Provides web search capability to connected agents",
|
|
23
|
+
parameters: [
|
|
24
|
+
{
|
|
25
|
+
id: "maxResults",
|
|
26
|
+
label: "Max Results",
|
|
27
|
+
description: "Maximum number of search results to return per call (capped at 20)",
|
|
28
|
+
type: "int",
|
|
29
|
+
optional: true,
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
|
+
};
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
import { NodeBase } from "./Node";
|
|
2
|
+
import type { Reference } from "../api";
|
|
3
|
+
import { OutputBinding } from "../parameter";
|
|
4
|
+
import { NodeCategory, NodeTag } from "./constants";
|
|
5
|
+
import { NodeDefinition } from "./NodeDefinition";
|
|
6
|
+
|
|
7
|
+
// On Function Call Trigger - fires when a user-defined function is called
|
|
8
|
+
export interface OnFunctionCallNode extends NodeBase {
|
|
9
|
+
type: "OnFunctionCall";
|
|
10
|
+
arguments: Record<string, never>;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
// Delay Node - pauses execution for a specified duration
|
|
14
|
+
export interface DelayNode extends NodeBase {
|
|
15
|
+
type: "Delay";
|
|
16
|
+
arguments: {
|
|
17
|
+
delayMs: number;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// Ticker Trigger - fires repeatedly at a specified interval
|
|
22
|
+
export interface TickerNode extends NodeBase {
|
|
23
|
+
type: "Ticker";
|
|
24
|
+
arguments: {
|
|
25
|
+
intervalValue: number | undefined;
|
|
26
|
+
intervalUnit: "milliseconds" | "seconds" | "minutes" | "hours";
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Alarm Trigger - fires at a scheduled time on selected days
|
|
31
|
+
export interface AlarmNode extends NodeBase {
|
|
32
|
+
type: "Alarm";
|
|
33
|
+
arguments: {
|
|
34
|
+
time: string;
|
|
35
|
+
days: string[];
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// On Startup Trigger - fires once when device powers on
|
|
40
|
+
export interface OnStartupNode extends NodeBase {
|
|
41
|
+
type: "OnStartup";
|
|
42
|
+
arguments: Record<string, never>;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// On Pin Edge Trigger - fires when a digital pin transitions
|
|
46
|
+
export interface OnPinEdgeNode extends NodeBase {
|
|
47
|
+
type: "OnPinEdge";
|
|
48
|
+
arguments: {
|
|
49
|
+
pinReference: string | undefined;
|
|
50
|
+
edge: "rising" | "falling" | "both";
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// On Serial Receive Trigger - fires when serial data arrives
|
|
55
|
+
export interface OnSerialReceiveNode extends NodeBase {
|
|
56
|
+
type: "OnSerialReceive";
|
|
57
|
+
arguments: {
|
|
58
|
+
portReference: string | undefined;
|
|
59
|
+
output: OutputBinding;
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// On Threshold Trigger - fires when a numeric variable crosses a threshold
|
|
64
|
+
export interface OnThresholdNode extends NodeBase {
|
|
65
|
+
type: "OnThreshold";
|
|
66
|
+
arguments: {
|
|
67
|
+
variable: Reference | undefined;
|
|
68
|
+
threshold: number | undefined;
|
|
69
|
+
direction: "rising" | "falling" | "both";
|
|
70
|
+
deadband: number | undefined;
|
|
71
|
+
output: OutputBinding;
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export type TriggerNodeType =
|
|
76
|
+
| "OnFunctionCall"
|
|
77
|
+
| "Delay"
|
|
78
|
+
| "Ticker"
|
|
79
|
+
| "Alarm"
|
|
80
|
+
| "OnStartup"
|
|
81
|
+
| "OnPinEdge"
|
|
82
|
+
| "OnSerialReceive"
|
|
83
|
+
| "OnThreshold";
|
|
84
|
+
export type TriggerNode =
|
|
85
|
+
| OnFunctionCallNode
|
|
86
|
+
| DelayNode
|
|
87
|
+
| TickerNode
|
|
88
|
+
| AlarmNode
|
|
89
|
+
| OnStartupNode
|
|
90
|
+
| OnPinEdgeNode
|
|
91
|
+
| OnSerialReceiveNode
|
|
92
|
+
| OnThresholdNode;
|
|
93
|
+
|
|
94
|
+
// Node Definitions
|
|
95
|
+
|
|
96
|
+
export const OnFunctionCallNodeDefinition: NodeDefinition = {
|
|
97
|
+
type: "OnFunctionCall",
|
|
98
|
+
label: "On Function Call",
|
|
99
|
+
category: NodeCategory.Trigger,
|
|
100
|
+
description: "Fires when this function is invoked by a Function Call node",
|
|
101
|
+
parameters: [],
|
|
102
|
+
isUnremovable: true, // Cannot be added or removed by user
|
|
103
|
+
isSingleton: true,
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
export const DelayNodeDefinition: NodeDefinition = {
|
|
107
|
+
type: "Delay",
|
|
108
|
+
label: "Delay",
|
|
109
|
+
category: NodeCategory.Trigger,
|
|
110
|
+
description:
|
|
111
|
+
"Pauses execution for a specified duration and triggers once the delay is complete. During this pause other node chains may run.",
|
|
112
|
+
parameters: [
|
|
113
|
+
{
|
|
114
|
+
id: "delayMs",
|
|
115
|
+
label: "Delay (ms)",
|
|
116
|
+
description: "Time in milliseconds to pause execution",
|
|
117
|
+
type: "int",
|
|
118
|
+
default: 1000,
|
|
119
|
+
},
|
|
120
|
+
],
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
export const TickerNodeDefinition: NodeDefinition = {
|
|
124
|
+
type: "Ticker",
|
|
125
|
+
label: "Ticker",
|
|
126
|
+
category: NodeCategory.Trigger,
|
|
127
|
+
description: "Fires repeatedly at a specified interval",
|
|
128
|
+
parameters: [
|
|
129
|
+
{
|
|
130
|
+
id: "intervalValue",
|
|
131
|
+
label: "Interval",
|
|
132
|
+
description: "How many units between ticks",
|
|
133
|
+
type: "int",
|
|
134
|
+
default: 1,
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
id: "intervalUnit",
|
|
138
|
+
label: "Unit",
|
|
139
|
+
description: "Time unit for the interval",
|
|
140
|
+
type: "selection",
|
|
141
|
+
options: [
|
|
142
|
+
{ value: "milliseconds", label: "Milliseconds" },
|
|
143
|
+
{ value: "seconds", label: "Seconds" },
|
|
144
|
+
{ value: "minutes", label: "Minutes" },
|
|
145
|
+
{ value: "hours", label: "Hours" },
|
|
146
|
+
],
|
|
147
|
+
default: "seconds",
|
|
148
|
+
},
|
|
149
|
+
],
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
export const AlarmNodeDefinition: NodeDefinition = {
|
|
153
|
+
type: "Alarm",
|
|
154
|
+
label: "Alarm",
|
|
155
|
+
category: NodeCategory.Trigger,
|
|
156
|
+
description: "Fires at a scheduled time on selected days of the week",
|
|
157
|
+
parameters: [
|
|
158
|
+
{
|
|
159
|
+
id: "time",
|
|
160
|
+
label: "Time",
|
|
161
|
+
description: "Time of day to fire (24h format)",
|
|
162
|
+
type: "time",
|
|
163
|
+
default: "12:00",
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
id: "days",
|
|
167
|
+
label: "Days",
|
|
168
|
+
description: "Days of the week to fire on (empty = every day)",
|
|
169
|
+
type: "weekdays",
|
|
170
|
+
default: [],
|
|
171
|
+
},
|
|
172
|
+
],
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
export const OnStartupNodeDefinition: NodeDefinition = {
|
|
176
|
+
type: "OnStartup",
|
|
177
|
+
label: "On Startup",
|
|
178
|
+
category: NodeCategory.Trigger,
|
|
179
|
+
description: "Fires once when the device powers on",
|
|
180
|
+
parameters: [],
|
|
181
|
+
isSingleton: true,
|
|
182
|
+
};
|
|
183
|
+
|
|
184
|
+
export const OnPinEdgeNodeDefinition: NodeDefinition = {
|
|
185
|
+
type: "OnPinEdge",
|
|
186
|
+
label: "On Pin Edge",
|
|
187
|
+
category: NodeCategory.Trigger,
|
|
188
|
+
tags: [NodeTag.Pin],
|
|
189
|
+
description: "Fires when a digital pin transitions",
|
|
190
|
+
parameters: [
|
|
191
|
+
{
|
|
192
|
+
id: "pinReference",
|
|
193
|
+
label: "Pin",
|
|
194
|
+
description: "Digital pin to watch",
|
|
195
|
+
type: "channelSelect",
|
|
196
|
+
channelType: ["GPIOIN"],
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
id: "edge",
|
|
200
|
+
label: "Edge",
|
|
201
|
+
description: "Edge transition that fires the trigger",
|
|
202
|
+
type: "selection",
|
|
203
|
+
options: [
|
|
204
|
+
{ value: "rising", label: "Rising" },
|
|
205
|
+
{ value: "falling", label: "Falling" },
|
|
206
|
+
{ value: "both", label: "Both" },
|
|
207
|
+
],
|
|
208
|
+
default: "both",
|
|
209
|
+
},
|
|
210
|
+
],
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
export const OnSerialReceiveNodeDefinition: NodeDefinition = {
|
|
214
|
+
type: "OnSerialReceive",
|
|
215
|
+
label: "On Serial Receive",
|
|
216
|
+
category: NodeCategory.Trigger,
|
|
217
|
+
tags: [NodeTag.Serial],
|
|
218
|
+
description: "Fires when serial data arrives",
|
|
219
|
+
outputs: [{ id: "output", label: "Serial Data", type: "static", dataType: "string" }],
|
|
220
|
+
parameters: [
|
|
221
|
+
{
|
|
222
|
+
id: "portReference",
|
|
223
|
+
label: "Port",
|
|
224
|
+
description: "Serial port to listen on",
|
|
225
|
+
type: "channelSelect",
|
|
226
|
+
channelType: ["UART"],
|
|
227
|
+
},
|
|
228
|
+
],
|
|
229
|
+
};
|
|
230
|
+
|
|
231
|
+
export const OnThresholdNodeDefinition: NodeDefinition = {
|
|
232
|
+
type: "OnThreshold",
|
|
233
|
+
label: "On Threshold",
|
|
234
|
+
category: NodeCategory.Trigger,
|
|
235
|
+
description: "Fires when a numeric variable crosses a threshold",
|
|
236
|
+
outputs: [{ id: "output", label: "Triggering Value", type: "static", dataType: "float" }],
|
|
237
|
+
parameters: [
|
|
238
|
+
{
|
|
239
|
+
id: "variable",
|
|
240
|
+
label: "Variable",
|
|
241
|
+
description: "Numeric variable to watch for threshold crossings",
|
|
242
|
+
type: "variableSelect",
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
id: "threshold",
|
|
246
|
+
label: "Threshold",
|
|
247
|
+
description: "Value the variable crosses to fire the trigger",
|
|
248
|
+
type: "float",
|
|
249
|
+
default: 0,
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
id: "direction",
|
|
253
|
+
label: "Direction",
|
|
254
|
+
description: "Crossing direction to fire on",
|
|
255
|
+
type: "selection",
|
|
256
|
+
options: [
|
|
257
|
+
{ value: "rising", label: "Rising" },
|
|
258
|
+
{ value: "falling", label: "Falling" },
|
|
259
|
+
{ value: "both", label: "Both" },
|
|
260
|
+
],
|
|
261
|
+
default: "both",
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
id: "deadband",
|
|
265
|
+
label: "Deadband",
|
|
266
|
+
description: "Hysteresis band width around threshold (0 disables)",
|
|
267
|
+
type: "float",
|
|
268
|
+
default: 0,
|
|
269
|
+
optional: true,
|
|
270
|
+
},
|
|
271
|
+
],
|
|
272
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export enum NodeCategory {
|
|
2
|
+
Input = "Input",
|
|
3
|
+
Output = "Output",
|
|
4
|
+
Logic = "Logic",
|
|
5
|
+
Data = "Data",
|
|
6
|
+
Trigger = "Trigger",
|
|
7
|
+
Tool = "Tool",
|
|
8
|
+
AI = "AI",
|
|
9
|
+
Function = "Function",
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export enum NodeTag {
|
|
13
|
+
Network = "Network",
|
|
14
|
+
Pin = "Pin",
|
|
15
|
+
Serial = "Serial",
|
|
16
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// Base domain node types
|
|
2
|
+
export type {
|
|
3
|
+
NodeOutput,
|
|
4
|
+
NodeType,
|
|
5
|
+
NodeData,
|
|
6
|
+
Node,
|
|
7
|
+
NodeBase,
|
|
8
|
+
} from "./Node";
|
|
9
|
+
|
|
10
|
+
// Constants & registry
|
|
11
|
+
export { NodeCategory, NodeTag } from "./constants";
|
|
12
|
+
export { NodeRegistry } from "./NodeRegistry";
|
|
13
|
+
export type { NodeDefinition, Port, PortDefinitions } from "./NodeDefinition";
|
|
14
|
+
export type { OutputParameter, StaticOutput, OutputList, OutputBinding, OutputDeclaration } from "../parameter";
|
|
15
|
+
|
|
16
|
+
// NodeMethods — read helpers over a NodeData
|
|
17
|
+
export { getPorts, getArguments, getNodeOutput, getNodeAvailableOutput, getOutputBinding, getInput, isNodeUsedAsTool } from "./methods";
|
|
18
|
+
export type { ExternalInput } from "./methods";
|
|
19
|
+
|
|
20
|
+
// FunctionCall — special node whose definition is built from FunctionInfo
|
|
21
|
+
export type { FunctionCallNode, FunctionCallNodeType, FunctionNodeDefinition } from "./FunctionNode";
|
|
22
|
+
export { buildFunctionNodeDef } from "./FunctionNode";
|
|
23
|
+
|
|
24
|
+
// Serialization — domain Node <-> api
|
|
25
|
+
export { serialize, deserialize } from "./serialization";
|
|
26
|
+
export type { ApiNode } from "./serialization";
|