@pikku/core 0.11.1 → 0.12.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/CHANGELOG.md +55 -0
- package/dist/crypto-utils.d.ts +2 -0
- package/dist/crypto-utils.js +78 -0
- package/dist/errors/error-handler.js +3 -3
- package/dist/errors/errors.d.ts +8 -0
- package/dist/errors/errors.js +16 -0
- package/dist/errors/index.d.ts +0 -1
- package/dist/errors/index.js +0 -1
- package/dist/function/function-runner.d.ts +10 -3
- package/dist/function/function-runner.js +136 -31
- package/dist/function/functions.types.d.ts +35 -12
- package/dist/function/functions.types.js +16 -6
- package/dist/function/index.d.ts +2 -2
- package/dist/function/index.js +1 -2
- package/dist/handle-error.js +1 -10
- package/dist/index.d.ts +30 -24
- package/dist/index.js +19 -27
- package/dist/middleware/auth-apikey.d.ts +1 -1
- package/dist/middleware/auth-apikey.js +3 -3
- package/dist/middleware/auth-bearer.d.ts +1 -1
- package/dist/middleware/auth-bearer.js +3 -6
- package/dist/middleware/auth-cookie.d.ts +1 -1
- package/dist/middleware/auth-cookie.js +6 -8
- package/dist/middleware/cors.d.ts +46 -0
- package/dist/middleware/cors.js +73 -0
- package/dist/middleware/index.d.ts +5 -3
- package/dist/middleware/index.js +5 -3
- package/dist/middleware/remote-auth.d.ts +5 -0
- package/dist/middleware/remote-auth.js +55 -0
- package/dist/middleware/timeout.d.ts +1 -1
- package/dist/middleware-runner.d.ts +3 -14
- package/dist/middleware-runner.js +14 -16
- package/dist/permissions.d.ts +3 -86
- package/dist/permissions.js +20 -80
- package/dist/pikku-state.d.ts +33 -104
- package/dist/pikku-state.js +150 -66
- package/dist/schema.d.ts +8 -6
- package/dist/schema.js +31 -18
- package/dist/services/ai-agent-runner-service.d.ts +24 -0
- package/dist/services/ai-agent-runner-service.js +1 -0
- package/dist/services/ai-run-state-service.d.ts +13 -0
- package/dist/services/ai-run-state-service.js +1 -0
- package/dist/services/ai-storage-service.d.ts +18 -0
- package/dist/services/ai-storage-service.js +1 -0
- package/dist/services/deployment-service.d.ts +19 -0
- package/dist/services/deployment-service.js +1 -0
- package/dist/services/gopass-secrets.d.ts +47 -0
- package/dist/services/gopass-secrets.js +94 -0
- package/dist/services/in-memory-trigger-service.d.ts +23 -0
- package/dist/services/in-memory-trigger-service.js +50 -0
- package/dist/services/in-memory-workflow-service.d.ts +59 -0
- package/dist/services/in-memory-workflow-service.js +287 -0
- package/dist/services/index.d.ts +25 -11
- package/dist/services/index.js +10 -13
- package/dist/services/local-secrets.d.ts +23 -0
- package/dist/services/local-secrets.js +45 -0
- package/dist/services/local-variables.d.ts +5 -0
- package/dist/services/local-variables.js +18 -0
- package/dist/services/scheduler-service.d.ts +21 -1
- package/dist/services/scheduler-service.js +14 -0
- package/dist/services/schema-service.d.ts +6 -0
- package/dist/services/scoped-secret-service.d.ts +16 -0
- package/dist/services/scoped-secret-service.js +35 -0
- package/dist/services/secret-service.d.ts +25 -4
- package/dist/services/trigger-service.d.ts +23 -0
- package/dist/services/trigger-service.js +1 -0
- package/dist/services/typed-secret-service.d.ts +30 -0
- package/dist/services/typed-secret-service.js +40 -0
- package/dist/services/typed-variables-service.d.ts +27 -0
- package/dist/services/typed-variables-service.js +46 -0
- package/dist/services/user-session-service.d.ts +13 -0
- package/dist/services/user-session-service.js +17 -0
- package/dist/services/variables-service.d.ts +5 -0
- package/dist/services/workflow-service.d.ts +43 -0
- package/dist/services/workflow-service.js +1 -0
- package/dist/types/core.types.d.ts +54 -10
- package/dist/types/core.types.js +7 -0
- package/dist/types/state.types.d.ts +127 -0
- package/dist/types/state.types.js +1 -0
- package/dist/utils.d.ts +10 -1
- package/dist/utils.js +60 -3
- package/dist/version.d.ts +6 -0
- package/dist/version.js +19 -0
- package/dist/wirings/ai-agent/ai-agent-memory.d.ts +29 -0
- package/dist/wirings/ai-agent/ai-agent-memory.js +199 -0
- package/dist/wirings/ai-agent/ai-agent-model-config.d.ts +9 -0
- package/dist/wirings/ai-agent/ai-agent-model-config.js +36 -0
- package/dist/wirings/ai-agent/ai-agent-prepare.d.ts +60 -0
- package/dist/wirings/ai-agent/ai-agent-prepare.js +312 -0
- package/dist/wirings/ai-agent/ai-agent-registry.d.ts +15 -0
- package/dist/wirings/ai-agent/ai-agent-registry.js +47 -0
- package/dist/wirings/ai-agent/ai-agent-runner.d.ts +3 -0
- package/dist/wirings/ai-agent/ai-agent-runner.js +96 -0
- package/dist/wirings/ai-agent/ai-agent-stream.d.ts +11 -0
- package/dist/wirings/ai-agent/ai-agent-stream.js +503 -0
- package/dist/wirings/ai-agent/ai-agent.types.d.ts +254 -0
- package/dist/wirings/ai-agent/ai-agent.types.js +1 -0
- package/dist/wirings/ai-agent/index.d.ts +5 -0
- package/dist/wirings/ai-agent/index.js +4 -0
- package/dist/wirings/channel/channel-common.d.ts +7 -4
- package/dist/wirings/channel/channel-common.js +15 -8
- package/dist/wirings/channel/channel-handler.js +13 -4
- package/dist/wirings/channel/channel-middleware-runner.d.ts +9 -0
- package/dist/wirings/channel/channel-middleware-runner.js +73 -0
- package/dist/wirings/channel/channel-runner.js +12 -12
- package/dist/wirings/channel/channel.types.d.ts +5 -1
- package/dist/wirings/channel/define-channel-routes.d.ts +21 -0
- package/dist/wirings/channel/define-channel-routes.js +23 -0
- package/dist/wirings/channel/index.d.ts +10 -8
- package/dist/wirings/channel/index.js +7 -8
- package/dist/wirings/channel/local/index.d.ts +3 -3
- package/dist/wirings/channel/local/index.js +3 -3
- package/dist/wirings/channel/local/local-channel-runner.js +18 -6
- package/dist/wirings/channel/log-channels.js +1 -1
- package/dist/wirings/channel/serverless/index.d.ts +1 -1
- package/dist/wirings/channel/serverless/index.js +1 -1
- package/dist/wirings/channel/serverless/serverless-channel-runner.js +17 -6
- package/dist/wirings/cli/channel/cli-channel-runner.js +3 -2
- package/dist/wirings/cli/channel/index.d.ts +1 -1
- package/dist/wirings/cli/channel/index.js +1 -1
- package/dist/wirings/cli/cli-runner.d.ts +1 -1
- package/dist/wirings/cli/cli-runner.js +22 -18
- package/dist/wirings/cli/cli.types.d.ts +7 -6
- package/dist/wirings/cli/define-cli-commands.d.ts +19 -0
- package/dist/wirings/cli/define-cli-commands.js +20 -0
- package/dist/wirings/cli/index.d.ts +2 -3
- package/dist/wirings/cli/index.js +1 -3
- package/dist/wirings/http/http-routes.d.ts +69 -0
- package/dist/wirings/http/http-routes.js +139 -0
- package/dist/wirings/http/http-runner.d.ts +2 -2
- package/dist/wirings/http/http-runner.js +62 -27
- package/dist/wirings/http/http.types.d.ts +77 -24
- package/dist/wirings/http/index.d.ts +5 -4
- package/dist/wirings/http/index.js +4 -3
- package/dist/wirings/http/log-http-routes.js +1 -1
- package/dist/wirings/http/routers/path-to-regex.js +2 -2
- package/dist/wirings/mcp/index.d.ts +4 -3
- package/dist/wirings/mcp/index.js +3 -3
- package/dist/wirings/mcp/mcp-runner.d.ts +1 -3
- package/dist/wirings/mcp/mcp-runner.js +42 -56
- package/dist/wirings/mcp/mcp.types.d.ts +3 -3
- package/dist/wirings/node/index.d.ts +2 -0
- package/dist/wirings/node/index.js +1 -0
- package/dist/wirings/node/node.types.d.ts +20 -0
- package/dist/wirings/node/node.types.js +1 -0
- package/dist/wirings/oauth2/index.d.ts +3 -0
- package/dist/wirings/oauth2/index.js +2 -0
- package/dist/wirings/oauth2/oauth2-client.d.ts +47 -0
- package/dist/wirings/oauth2/oauth2-client.js +267 -0
- package/dist/wirings/oauth2/oauth2.types.d.ts +65 -0
- package/dist/wirings/oauth2/oauth2.types.js +4 -0
- package/dist/wirings/oauth2/wire-oauth2-credential.d.ts +20 -0
- package/dist/wirings/oauth2/wire-oauth2-credential.js +21 -0
- package/dist/wirings/queue/index.d.ts +2 -2
- package/dist/wirings/queue/index.js +1 -1
- package/dist/wirings/queue/queue-runner.d.ts +7 -0
- package/dist/wirings/queue/queue-runner.js +23 -12
- package/dist/wirings/queue/queue.types.d.ts +8 -2
- package/dist/wirings/rpc/index.d.ts +1 -1
- package/dist/wirings/rpc/index.js +1 -1
- package/dist/wirings/rpc/rpc-runner.d.ts +40 -13
- package/dist/wirings/rpc/rpc-runner.js +191 -25
- package/dist/wirings/rpc/rpc-types.d.ts +15 -4
- package/dist/wirings/scheduler/index.d.ts +3 -3
- package/dist/wirings/scheduler/index.js +2 -3
- package/dist/wirings/scheduler/log-schedulers.js +1 -1
- package/dist/wirings/scheduler/scheduler-runner.d.ts +5 -0
- package/dist/wirings/scheduler/scheduler-runner.js +28 -10
- package/dist/wirings/secret/index.d.ts +3 -0
- package/dist/wirings/secret/index.js +2 -0
- package/dist/wirings/secret/secret.types.d.ts +27 -0
- package/dist/wirings/secret/secret.types.js +1 -0
- package/dist/wirings/secret/validate-secret-definitions.d.ts +6 -0
- package/dist/wirings/secret/validate-secret-definitions.js +55 -0
- package/dist/wirings/trigger/index.d.ts +3 -0
- package/dist/wirings/trigger/index.js +2 -0
- package/dist/wirings/trigger/pikku-trigger-service.d.ts +26 -0
- package/dist/wirings/trigger/pikku-trigger-service.js +75 -0
- package/dist/wirings/trigger/trigger-runner.d.ts +42 -0
- package/dist/wirings/trigger/trigger-runner.js +85 -0
- package/dist/wirings/trigger/trigger.types.d.ts +130 -0
- package/dist/wirings/trigger/trigger.types.js +40 -0
- package/dist/wirings/variable/index.d.ts +3 -0
- package/dist/wirings/variable/index.js +2 -0
- package/dist/wirings/variable/validate-variable-definitions.d.ts +6 -0
- package/dist/wirings/variable/validate-variable-definitions.js +45 -0
- package/dist/wirings/variable/variable.types.d.ts +18 -0
- package/dist/wirings/variable/variable.types.js +1 -0
- package/dist/wirings/workflow/dsl/index.d.ts +5 -0
- package/dist/wirings/workflow/dsl/index.js +4 -0
- package/dist/wirings/workflow/dsl/workflow-dsl.types.d.ts +292 -0
- package/dist/wirings/workflow/dsl/workflow-dsl.types.js +5 -0
- package/dist/wirings/workflow/dsl/workflow-runner.d.ts +5 -0
- package/dist/wirings/workflow/dsl/workflow-runner.js +23 -0
- package/dist/wirings/workflow/graph/graph-node.d.ts +117 -0
- package/dist/wirings/workflow/graph/graph-node.js +58 -0
- package/dist/wirings/workflow/graph/graph-runner.d.ts +9 -0
- package/dist/wirings/workflow/graph/graph-runner.js +540 -0
- package/dist/wirings/workflow/graph/index.d.ts +4 -0
- package/dist/wirings/workflow/graph/index.js +3 -0
- package/dist/wirings/workflow/graph/template.d.ts +15 -0
- package/dist/wirings/workflow/graph/template.js +27 -0
- package/dist/wirings/workflow/graph/wire-workflow-graph.d.ts +15 -0
- package/dist/wirings/workflow/graph/wire-workflow-graph.js +8 -0
- package/dist/wirings/workflow/graph/workflow-graph.types.d.ts +82 -0
- package/dist/wirings/workflow/graph/workflow-graph.types.js +15 -0
- package/dist/wirings/workflow/index.d.ts +7 -12
- package/dist/wirings/workflow/index.js +8 -11
- package/dist/wirings/workflow/pikku-workflow-service.d.ts +114 -10
- package/dist/wirings/workflow/pikku-workflow-service.js +386 -115
- package/dist/wirings/workflow/workflow-helpers.d.ts +36 -0
- package/dist/wirings/workflow/workflow-helpers.js +38 -0
- package/dist/wirings/workflow/workflow-utils.d.ts +1 -0
- package/dist/wirings/workflow/workflow-utils.js +1 -0
- package/dist/wirings/workflow/workflow.types.d.ts +83 -214
- package/package.json +13 -6
- package/run-tests.sh +4 -1
- package/src/crypto-utils.ts +99 -0
- package/src/errors/error-handler.ts +3 -3
- package/src/errors/errors.ts +17 -0
- package/src/errors/index.ts +0 -1
- package/src/factory-functions.test.ts +42 -2
- package/src/function/function-runner.test.ts +5 -12
- package/src/function/function-runner.ts +195 -40
- package/src/function/functions.types.ts +66 -14
- package/src/function/index.ts +5 -2
- package/src/handle-error.ts +2 -10
- package/src/index.ts +106 -27
- package/src/middleware/auth-apikey.test.ts +15 -12
- package/src/middleware/auth-apikey.ts +3 -3
- package/src/middleware/auth-bearer.test.ts +17 -14
- package/src/middleware/auth-bearer.ts +25 -27
- package/src/middleware/auth-cookie.test.ts +16 -13
- package/src/middleware/auth-cookie.ts +6 -8
- package/src/middleware/cors.ts +96 -0
- package/src/middleware/index.ts +5 -3
- package/src/middleware/remote-auth.ts +68 -0
- package/src/middleware-runner.test.ts +122 -0
- package/src/middleware-runner.ts +24 -17
- package/src/permissions.test.ts +102 -86
- package/src/permissions.ts +32 -93
- package/src/pikku-state.ts +168 -201
- package/src/run-tests-script.test.ts +49 -0
- package/src/schema.ts +50 -18
- package/src/services/ai-agent-runner-service.ts +29 -0
- package/src/services/ai-run-state-service.ts +20 -0
- package/src/services/ai-storage-service.ts +39 -0
- package/src/services/deployment-service.ts +22 -0
- package/src/services/gopass-secrets.ts +95 -0
- package/src/services/in-memory-trigger-service.ts +68 -0
- package/src/services/in-memory-workflow-service.ts +395 -0
- package/src/services/index.ts +49 -14
- package/src/services/local-secrets.ts +51 -0
- package/src/services/local-variables.ts +22 -0
- package/src/services/scheduler-service.ts +29 -1
- package/src/services/schema-service.ts +7 -0
- package/src/services/scoped-secret-service.ts +41 -0
- package/src/services/secret-service.ts +25 -4
- package/src/services/trigger-service.ts +38 -0
- package/src/services/typed-secret-service.ts +70 -0
- package/src/services/typed-variables-service.ts +81 -0
- package/src/services/user-session-service.ts +23 -0
- package/src/services/variables-service.ts +5 -0
- package/src/services/workflow-service.ts +94 -0
- package/src/types/core.types.ts +82 -8
- package/src/types/state.types.ts +169 -0
- package/src/utils.ts +74 -5
- package/src/version.test.ts +80 -0
- package/src/version.ts +25 -0
- package/src/wirings/ai-agent/ai-agent-memory.ts +300 -0
- package/src/wirings/ai-agent/ai-agent-model-config.ts +43 -0
- package/src/wirings/ai-agent/ai-agent-prepare.ts +470 -0
- package/src/wirings/ai-agent/ai-agent-registry.test.ts +37 -0
- package/src/wirings/ai-agent/ai-agent-registry.ts +82 -0
- package/src/wirings/ai-agent/ai-agent-runner.test.ts +75 -0
- package/src/wirings/ai-agent/ai-agent-runner.ts +137 -0
- package/src/wirings/ai-agent/ai-agent-stream.test.ts +246 -0
- package/src/wirings/ai-agent/ai-agent-stream.ts +774 -0
- package/src/wirings/ai-agent/ai-agent.types.ts +273 -0
- package/src/wirings/ai-agent/index.ts +28 -0
- package/src/wirings/channel/channel-common.ts +32 -19
- package/src/wirings/channel/channel-handler.ts +18 -5
- package/src/wirings/channel/channel-middleware-runner.ts +119 -0
- package/src/wirings/channel/channel-runner.ts +14 -15
- package/src/wirings/channel/channel.types.ts +17 -1
- package/src/wirings/channel/define-channel-routes.ts +25 -0
- package/src/wirings/channel/index.ts +23 -8
- package/src/wirings/channel/local/index.ts +3 -3
- package/src/wirings/channel/local/local-channel-runner.test.ts +47 -2
- package/src/wirings/channel/local/local-channel-runner.ts +22 -6
- package/src/wirings/channel/log-channels.ts +1 -1
- package/src/wirings/channel/serverless/index.ts +5 -1
- package/src/wirings/channel/serverless/serverless-channel-runner.ts +22 -6
- package/src/wirings/cli/channel/cli-channel-runner.ts +4 -3
- package/src/wirings/cli/channel/index.ts +1 -1
- package/src/wirings/cli/cli-runner.test.ts +28 -28
- package/src/wirings/cli/cli-runner.ts +27 -19
- package/src/wirings/cli/cli.types.ts +12 -11
- package/src/wirings/cli/command-parser.test.ts +8 -8
- package/src/wirings/cli/define-cli-commands.ts +24 -0
- package/src/wirings/cli/index.ts +10 -4
- package/src/wirings/http/http-routes.test.ts +322 -0
- package/src/wirings/http/http-routes.ts +198 -0
- package/src/wirings/http/http-runner.test.ts +5 -5
- package/src/wirings/http/http-runner.ts +80 -29
- package/src/wirings/http/http.types.ts +121 -23
- package/src/wirings/http/index.ts +16 -4
- package/src/wirings/http/log-http-routes.ts +1 -1
- package/src/wirings/http/routers/path-to-regex.test.ts +30 -19
- package/src/wirings/http/routers/path-to-regex.ts +2 -2
- package/src/wirings/mcp/index.ts +27 -3
- package/src/wirings/mcp/mcp-endpoint-registry.test.ts +3 -3
- package/src/wirings/mcp/mcp-runner.ts +56 -67
- package/src/wirings/mcp/mcp.types.ts +3 -3
- package/src/wirings/node/index.ts +2 -0
- package/src/wirings/node/node.types.ts +23 -0
- package/src/wirings/oauth2/index.ts +3 -0
- package/src/wirings/oauth2/oauth2-client.test.ts +929 -0
- package/src/wirings/oauth2/oauth2-client.ts +335 -0
- package/src/wirings/oauth2/oauth2.types.ts +69 -0
- package/src/wirings/oauth2/wire-oauth2-credential.ts +23 -0
- package/src/wirings/queue/index.ts +14 -2
- package/src/wirings/queue/queue-runner.test.ts +115 -73
- package/src/wirings/queue/queue-runner.ts +39 -13
- package/src/wirings/queue/queue.types.ts +12 -2
- package/src/wirings/rpc/index.ts +1 -1
- package/src/wirings/rpc/rpc-runner.ts +270 -34
- package/src/wirings/rpc/rpc-types.ts +21 -4
- package/src/wirings/scheduler/index.ts +7 -4
- package/src/wirings/scheduler/log-schedulers.ts +1 -1
- package/src/wirings/scheduler/scheduler-runner.test.ts +97 -53
- package/src/wirings/scheduler/scheduler-runner.ts +50 -10
- package/src/wirings/secret/index.ts +9 -0
- package/src/wirings/secret/secret.types.ts +32 -0
- package/src/wirings/secret/validate-secret-definitions.ts +82 -0
- package/src/wirings/trigger/index.ts +10 -0
- package/src/wirings/trigger/pikku-trigger-service.ts +134 -0
- package/src/wirings/trigger/trigger-runner.ts +138 -0
- package/src/wirings/trigger/trigger.types.ts +178 -0
- package/src/wirings/variable/index.ts +8 -0
- package/src/wirings/variable/validate-variable-definitions.ts +69 -0
- package/src/wirings/variable/variable.types.ts +22 -0
- package/src/wirings/workflow/dsl/index.ts +31 -0
- package/src/wirings/workflow/dsl/workflow-dsl.types.ts +320 -0
- package/src/wirings/workflow/dsl/workflow-runner.ts +28 -0
- package/src/wirings/workflow/graph/graph-node.ts +222 -0
- package/src/wirings/workflow/graph/graph-runner.test.ts +495 -0
- package/src/wirings/workflow/graph/graph-runner.ts +816 -0
- package/src/wirings/workflow/graph/index.ts +14 -0
- package/src/wirings/workflow/graph/template.ts +42 -0
- package/src/wirings/workflow/graph/wire-workflow-graph.ts +29 -0
- package/src/wirings/workflow/graph/workflow-graph.types.ts +104 -0
- package/src/wirings/workflow/index.ts +64 -26
- package/src/wirings/workflow/pikku-workflow-service.test.ts +212 -0
- package/src/wirings/workflow/pikku-workflow-service.ts +571 -136
- package/src/wirings/workflow/workflow-helpers.ts +79 -0
- package/src/wirings/workflow/workflow-utils.ts +0 -0
- package/src/wirings/workflow/workflow.types.ts +123 -279
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/wirings/workflow/workflow-runner.d.ts +0 -34
- package/dist/wirings/workflow/workflow-runner.js +0 -65
- package/src/function/function-runner.ts.bak +0 -188
- package/src/wirings/workflow/workflow-runner.ts +0 -72
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ref value - internal representation after input callback is evaluated
|
|
3
|
+
*/
|
|
4
|
+
export interface RefValue {
|
|
5
|
+
__isRef: true;
|
|
6
|
+
nodeId: string;
|
|
7
|
+
path?: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Helper to create a ref value
|
|
11
|
+
*/
|
|
12
|
+
export declare const createRef: (nodeId: string, path?: string) => RefValue;
|
|
13
|
+
/**
|
|
14
|
+
* Check if a value is a ref
|
|
15
|
+
*/
|
|
16
|
+
export declare const isRef: (value: unknown) => value is RefValue;
|
|
17
|
+
/**
|
|
18
|
+
* Input reference for fetching step results
|
|
19
|
+
*/
|
|
20
|
+
export interface InputRef {
|
|
21
|
+
nodeId: string;
|
|
22
|
+
path?: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Ref function type - provides type-safe references to other nodes' outputs
|
|
26
|
+
* The actual typing is done at the pikkuWorkflowGraph level
|
|
27
|
+
*/
|
|
28
|
+
export type RefFn<NodeIds extends string = string> = (nodeId: NodeIds, path?: string) => RefValue;
|
|
29
|
+
/**
|
|
30
|
+
* Next node configuration - fully serializable
|
|
31
|
+
* - string: single next node
|
|
32
|
+
* - string[]: parallel execution (all run concurrently)
|
|
33
|
+
* - Record<string, string | string[]>: branching (function calls graph.branch('key'))
|
|
34
|
+
*/
|
|
35
|
+
export type NextConfig<NodeIds extends string = string> = NodeIds | NodeIds[] | Record<string, NodeIds | NodeIds[]>;
|
|
36
|
+
/**
|
|
37
|
+
* Graph node configuration - references functions by RPC name
|
|
38
|
+
*/
|
|
39
|
+
export interface GraphNodeConfig<NodeIds extends string = string> {
|
|
40
|
+
/** RPC function name */
|
|
41
|
+
func: string;
|
|
42
|
+
/** Input mapping callback - receives ref function, returns input object */
|
|
43
|
+
input?: (ref: RefFn<NodeIds>) => Record<string, unknown>;
|
|
44
|
+
/** Next nodes - string, array, or record for branching */
|
|
45
|
+
next?: NextConfig<NodeIds>;
|
|
46
|
+
/** Error routing - node(s) to execute on error */
|
|
47
|
+
onError?: NodeIds | NodeIds[];
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Graph wire context - available to functions running in a workflow graph
|
|
51
|
+
*/
|
|
52
|
+
export interface PikkuGraphWire {
|
|
53
|
+
/** Workflow run ID */
|
|
54
|
+
runId: string;
|
|
55
|
+
/** Graph name */
|
|
56
|
+
graphName: string;
|
|
57
|
+
/** Current node ID */
|
|
58
|
+
nodeId: string;
|
|
59
|
+
/**
|
|
60
|
+
* Select which branch to take for Record-based next config.
|
|
61
|
+
* Must be called if the node has a Record `next` configuration.
|
|
62
|
+
* @param key - The branch key to take (must match a key in the next Record)
|
|
63
|
+
*/
|
|
64
|
+
branch: (key: string) => void;
|
|
65
|
+
/**
|
|
66
|
+
* Set a state variable value.
|
|
67
|
+
* @param name - Variable name
|
|
68
|
+
* @param value - Value to store
|
|
69
|
+
*/
|
|
70
|
+
setState: (name: string, value: unknown) => Promise<void>;
|
|
71
|
+
/**
|
|
72
|
+
* Get the entire state object.
|
|
73
|
+
* @returns The state object with all variables
|
|
74
|
+
*/
|
|
75
|
+
getState: () => Promise<Record<string, unknown>>;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Internal mutable state for graph wire (used by runner to capture branch)
|
|
79
|
+
*/
|
|
80
|
+
export interface GraphWireState {
|
|
81
|
+
branchKey?: string;
|
|
82
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helper to create a ref value
|
|
3
|
+
*/
|
|
4
|
+
export const createRef = (nodeId, path) => ({
|
|
5
|
+
__isRef: true,
|
|
6
|
+
nodeId,
|
|
7
|
+
path,
|
|
8
|
+
});
|
|
9
|
+
/**
|
|
10
|
+
* Check if a value is a ref
|
|
11
|
+
*/
|
|
12
|
+
export const isRef = (value) => typeof value === 'object' &&
|
|
13
|
+
value !== null &&
|
|
14
|
+
'__isRef' in value &&
|
|
15
|
+
value.__isRef === true;
|
|
@@ -1,15 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Workflow module exports
|
|
3
3
|
*/
|
|
4
|
-
export
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
*/
|
|
12
|
-
export declare const wireWorkflow: <T extends {
|
|
13
|
-
name: string;
|
|
14
|
-
func: any;
|
|
15
|
-
}>(workflow: T) => void;
|
|
4
|
+
export { PikkuWorkflowService, WorkflowCancelledException, WorkflowSuspendedException, WorkflowNotFoundError, WorkflowRunNotFoundError, } from './pikku-workflow-service.js';
|
|
5
|
+
export { addWorkflow } from './dsl/workflow-runner.js';
|
|
6
|
+
export { template, type TemplateString } from './graph/template.js';
|
|
7
|
+
export { pikkuWorkflowGraph, type PikkuWorkflowGraphConfig, type PikkuWorkflowGraphResult, } from './graph/wire-workflow-graph.js';
|
|
8
|
+
export { workflow, workflowStart, workflowStatus, graphStart, } from './workflow-helpers.js';
|
|
9
|
+
export type { WorkflowService, WorkflowServiceConfig, WorkflowRunWire, WorkflowStatus, StepStatus, WorkflowRun, StepState, WorkflowRunService, CoreWorkflow, PikkuWorkflow, ContextVariable, WorkflowContext, WorkflowsMeta, WorkflowRuntimeMeta, WorkflowsRuntimeMeta, WorkflowStepInput, WorkflowOrchestratorInput, WorkflowSleeperInput, } from './workflow.types.js';
|
|
10
|
+
export type { WorkflowStepOptions, WorkflowWireDoRPC, WorkflowWireDoInline, WorkflowWireSleep, WorkflowWireSuspend, InputSource, OutputBinding, RpcStepMeta, SimpleCondition, Condition, BranchCase, BranchStepMeta, ParallelGroupStepMeta, FanoutStepMeta, ReturnStepMeta, InlineStepMeta, SleepStepMeta, CancelStepMeta, SetStepMeta, SwitchCaseMeta, SwitchStepMeta, FilterStepMeta, ArrayPredicateStepMeta, WorkflowStepMeta, WorkflowStepWire, PikkuWorkflowWire, } from './workflow.types.js';
|
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Workflow module exports
|
|
3
3
|
*/
|
|
4
|
-
export { PikkuWorkflowService } from './pikku-workflow-service.js';
|
|
5
|
-
// Internal registration
|
|
6
|
-
export { addWorkflow } from './workflow-runner.js';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
export const wireWorkflow = (workflow) => {
|
|
13
|
-
// Empty function - no longer used, kept for backwards compatibility
|
|
14
|
-
};
|
|
4
|
+
export { PikkuWorkflowService, WorkflowCancelledException, WorkflowSuspendedException, WorkflowNotFoundError, WorkflowRunNotFoundError, } from './pikku-workflow-service.js';
|
|
5
|
+
// Internal registration functions (used by generated code)
|
|
6
|
+
export { addWorkflow } from './dsl/workflow-runner.js';
|
|
7
|
+
// Graph helpers (template, pikkuWorkflowGraph)
|
|
8
|
+
export { template } from './graph/template.js';
|
|
9
|
+
export { pikkuWorkflowGraph, } from './graph/wire-workflow-graph.js';
|
|
10
|
+
// Workflow helpers (runtime factories for HTTP handlers)
|
|
11
|
+
export { workflow, workflowStart, workflowStatus, graphStart, } from './workflow-helpers.js';
|
|
@@ -1,5 +1,40 @@
|
|
|
1
1
|
import { CoreConfig, CoreSingletonServices, CreateWireServices, SerializedError } from '../../types/core.types.js';
|
|
2
|
-
import type { StepState, WorkflowRun,
|
|
2
|
+
import type { StepState, WorkflowRun, WorkflowRunWire, WorkflowStatus, WorkflowStepOptions } from './workflow.types.js';
|
|
3
|
+
import { WorkflowService } from '../../services/workflow-service.js';
|
|
4
|
+
import { PikkuError } from '../../errors/error-handler.js';
|
|
5
|
+
/**
|
|
6
|
+
* Exception thrown when workflow needs to pause for async step
|
|
7
|
+
*/
|
|
8
|
+
export declare class WorkflowAsyncException extends Error {
|
|
9
|
+
readonly runId: string;
|
|
10
|
+
readonly stepName: string;
|
|
11
|
+
constructor(runId: string, stepName: string);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Exception thrown when workflow is cancelled
|
|
15
|
+
*/
|
|
16
|
+
export declare class WorkflowCancelledException extends Error {
|
|
17
|
+
readonly runId: string;
|
|
18
|
+
readonly reason?: string | undefined;
|
|
19
|
+
constructor(runId: string, reason?: string | undefined);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Exception thrown when workflow is suspended
|
|
23
|
+
*/
|
|
24
|
+
export declare class WorkflowSuspendedException extends Error {
|
|
25
|
+
readonly runId: string;
|
|
26
|
+
readonly reason: string;
|
|
27
|
+
constructor(runId: string, reason: string);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Error class for workflow not found
|
|
31
|
+
*/
|
|
32
|
+
export declare class WorkflowNotFoundError extends PikkuError {
|
|
33
|
+
constructor(name: string);
|
|
34
|
+
}
|
|
35
|
+
export declare class WorkflowRunNotFoundError extends PikkuError {
|
|
36
|
+
constructor(runId: string);
|
|
37
|
+
}
|
|
3
38
|
export declare class WorkflowServiceNotInitialized extends Error {
|
|
4
39
|
}
|
|
5
40
|
export declare class WorkflowStepNameNotString extends Error {
|
|
@@ -14,15 +49,23 @@ export declare abstract class PikkuWorkflowService implements WorkflowService {
|
|
|
14
49
|
private config;
|
|
15
50
|
private singletonServices;
|
|
16
51
|
private createWireServices;
|
|
52
|
+
private inlineRuns;
|
|
17
53
|
constructor();
|
|
18
|
-
setServices(singletonServices: CoreSingletonServices, createWireServices: CreateWireServices, { workflow }: CoreConfig): void;
|
|
19
54
|
/**
|
|
20
|
-
*
|
|
21
|
-
* @param name - Workflow name
|
|
22
|
-
* @param input - Input data for the workflow
|
|
23
|
-
* @returns Run ID
|
|
55
|
+
* Check if a run is executing inline (without queues)
|
|
24
56
|
*/
|
|
25
|
-
|
|
57
|
+
protected isInline(runId: string): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Register a run as inline (for graph-runner to use)
|
|
60
|
+
*/
|
|
61
|
+
registerInlineRun(runId: string): void;
|
|
62
|
+
/**
|
|
63
|
+
* Unregister a run from inline tracking
|
|
64
|
+
*/
|
|
65
|
+
unregisterInlineRun(runId: string): void;
|
|
66
|
+
setServices(singletonServices: CoreSingletonServices, createWireServices: CreateWireServices | undefined, { workflow }: CoreConfig): void;
|
|
67
|
+
registerWorkflowVersions(): Promise<void>;
|
|
68
|
+
abstract createRun(workflowName: string, input: any, inline: boolean, graphHash: string, wire: WorkflowRunWire): Promise<string>;
|
|
26
69
|
/**
|
|
27
70
|
* Get a workflow run by ID
|
|
28
71
|
* @param id - Run ID
|
|
@@ -115,17 +158,66 @@ export declare abstract class PikkuWorkflowService implements WorkflowService {
|
|
|
115
158
|
* Close any open connections
|
|
116
159
|
*/
|
|
117
160
|
abstract close(): Promise<void>;
|
|
161
|
+
/**
|
|
162
|
+
* Get completed graph state (lightweight - no results)
|
|
163
|
+
* @param runId - Run ID
|
|
164
|
+
* @returns Completed node IDs and their branch keys
|
|
165
|
+
*/
|
|
166
|
+
abstract getCompletedGraphState(runId: string): Promise<{
|
|
167
|
+
completedNodeIds: string[];
|
|
168
|
+
failedNodeIds: string[];
|
|
169
|
+
branchKeys: Record<string, string>;
|
|
170
|
+
}>;
|
|
171
|
+
/**
|
|
172
|
+
* Filter candidate nodes to only those without existing steps
|
|
173
|
+
* @param runId - Run ID
|
|
174
|
+
* @param nodeIds - Candidate node IDs to check
|
|
175
|
+
* @returns Node IDs that don't have a step yet
|
|
176
|
+
*/
|
|
177
|
+
abstract getNodesWithoutSteps(runId: string, nodeIds: string[]): Promise<string[]>;
|
|
178
|
+
/**
|
|
179
|
+
* Get results for specific nodes
|
|
180
|
+
* @param runId - Run ID
|
|
181
|
+
* @param nodeIds - Node IDs to fetch results for
|
|
182
|
+
* @returns Map of nodeId to result
|
|
183
|
+
*/
|
|
184
|
+
abstract getNodeResults(runId: string, nodeIds: string[]): Promise<Record<string, any>>;
|
|
185
|
+
/**
|
|
186
|
+
* Set the branch key for a graph node step
|
|
187
|
+
* @param stepId - Step ID
|
|
188
|
+
* @param branchKey - Branch key selected by graph.branch()
|
|
189
|
+
*/
|
|
190
|
+
abstract setBranchTaken(stepId: string, branchKey: string): Promise<void>;
|
|
191
|
+
/**
|
|
192
|
+
* Update a state variable in the workflow run's state
|
|
193
|
+
* @param runId - Run ID
|
|
194
|
+
* @param name - Variable name
|
|
195
|
+
* @param value - Value to store
|
|
196
|
+
*/
|
|
197
|
+
abstract updateRunState(runId: string, name: string, value: unknown): Promise<void>;
|
|
198
|
+
/**
|
|
199
|
+
* Get the entire state object for a workflow run
|
|
200
|
+
* @param runId - Run ID
|
|
201
|
+
* @returns The state object with all variables
|
|
202
|
+
*/
|
|
203
|
+
abstract getRunState(runId: string): Promise<Record<string, unknown>>;
|
|
204
|
+
abstract upsertWorkflowVersion(name: string, graphHash: string, graph: any, source: string): Promise<void>;
|
|
205
|
+
abstract getWorkflowVersion(name: string, graphHash: string): Promise<{
|
|
206
|
+
graph: any;
|
|
207
|
+
source: string;
|
|
208
|
+
} | null>;
|
|
118
209
|
/**
|
|
119
210
|
* Resume a paused workflow by triggering the orchestrator
|
|
120
211
|
* @param runId - Run ID
|
|
121
212
|
*/
|
|
122
213
|
resumeWorkflow(runId: string): Promise<void>;
|
|
214
|
+
queueStepWorker(runId: string, stepName: string, rpcName: string, data: any): Promise<void>;
|
|
123
215
|
/**
|
|
124
216
|
* Execute a workflow sleep step completion
|
|
125
217
|
* Sets the step result to null and resumes the workflow
|
|
126
218
|
* @param data - Sleeper input data
|
|
127
219
|
*/
|
|
128
|
-
|
|
220
|
+
executeWorkflowSleepCompleted(runId: string, stepId: string): Promise<void>;
|
|
129
221
|
/**
|
|
130
222
|
* Schedule orchestrator retry with delay
|
|
131
223
|
* @param runId - Run ID
|
|
@@ -134,11 +226,22 @@ export declare abstract class PikkuWorkflowService implements WorkflowService {
|
|
|
134
226
|
protected scheduleOrchestratorRetry(runId: string, retryDelay?: number | string): Promise<void>;
|
|
135
227
|
/**
|
|
136
228
|
* Start a new workflow run
|
|
229
|
+
* Automatically detects workflow type (DSL or graph) from meta and executes accordingly
|
|
230
|
+
* @param options.inline - If true, execute workflow directly without queue service
|
|
231
|
+
* @param options.startNode - Starting node ID for graph workflows (from wire config)
|
|
137
232
|
*/
|
|
138
|
-
startWorkflow<I>(name: string, input: I, rpcService: any
|
|
233
|
+
startWorkflow<I>(name: string, input: I, wire: WorkflowRunWire, rpcService: any, options?: {
|
|
234
|
+
inline?: boolean;
|
|
235
|
+
startNode?: string;
|
|
236
|
+
}): Promise<{
|
|
139
237
|
runId: string;
|
|
140
238
|
}>;
|
|
239
|
+
runToCompletion<I>(name: string, input: I, rpcService: any, options?: {
|
|
240
|
+
pollIntervalMs?: number;
|
|
241
|
+
wire?: WorkflowRunWire;
|
|
242
|
+
}): Promise<any>;
|
|
141
243
|
runWorkflowJob(runId: string, rpcService: any): Promise<void>;
|
|
244
|
+
private runVersionMismatchFallback;
|
|
142
245
|
/**
|
|
143
246
|
* Execute a single workflow step (called by worker)
|
|
144
247
|
* Handles idempotency, RPC execution, result storage, retry logic, and orchestrator triggering
|
|
@@ -153,7 +256,8 @@ export declare abstract class PikkuWorkflowService implements WorkflowService {
|
|
|
153
256
|
private rpcStep;
|
|
154
257
|
private inlineStep;
|
|
155
258
|
private sleepStep;
|
|
156
|
-
private
|
|
259
|
+
private getSuspendStepName;
|
|
260
|
+
private suspendStep;
|
|
157
261
|
private createWorkflowWire;
|
|
158
262
|
private verifyStepName;
|
|
159
263
|
private getConfig;
|