@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,79 @@
|
|
|
1
|
+
import { WorkflowRunNotFoundError } from './pikku-workflow-service.js'
|
|
2
|
+
|
|
3
|
+
export function workflow<
|
|
4
|
+
TWorkflowMap extends Record<string, { input: any; output: any }>,
|
|
5
|
+
>(
|
|
6
|
+
workflowName: string & keyof TWorkflowMap,
|
|
7
|
+
options?: { pollIntervalMs?: number }
|
|
8
|
+
): { func: (services: any, data: any, wire: any) => Promise<any> } {
|
|
9
|
+
return {
|
|
10
|
+
func: async (services: any, data: any, { rpc }: any) => {
|
|
11
|
+
return services.workflowService.runToCompletion(
|
|
12
|
+
workflowName,
|
|
13
|
+
data,
|
|
14
|
+
rpc,
|
|
15
|
+
options
|
|
16
|
+
)
|
|
17
|
+
},
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export function workflowStart<
|
|
22
|
+
TWorkflowMap extends Record<string, { input: any; output: any }>,
|
|
23
|
+
>(
|
|
24
|
+
workflowName: string & keyof TWorkflowMap
|
|
25
|
+
): {
|
|
26
|
+
func: (services: any, data: any, wire: any) => Promise<{ runId: string }>
|
|
27
|
+
} {
|
|
28
|
+
return {
|
|
29
|
+
func: async (_services: any, data: any, { rpc }: any) => {
|
|
30
|
+
return rpc.startWorkflow(workflowName, data)
|
|
31
|
+
},
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export function workflowStatus<
|
|
36
|
+
TWorkflowMap extends Record<string, { input: any; output: any }>,
|
|
37
|
+
>(
|
|
38
|
+
_workflowName: string & keyof TWorkflowMap
|
|
39
|
+
): {
|
|
40
|
+
func: (
|
|
41
|
+
services: any,
|
|
42
|
+
data: { runId: string }
|
|
43
|
+
) => Promise<{
|
|
44
|
+
id: string
|
|
45
|
+
status: 'running' | 'suspended' | 'completed' | 'failed' | 'cancelled'
|
|
46
|
+
output?: any
|
|
47
|
+
error?: { message?: string }
|
|
48
|
+
}>
|
|
49
|
+
} {
|
|
50
|
+
return {
|
|
51
|
+
func: async (services: any, data: { runId: string }) => {
|
|
52
|
+
const run = await services.workflowService.getRun(data.runId)
|
|
53
|
+
if (!run) {
|
|
54
|
+
throw new WorkflowRunNotFoundError(data.runId)
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
id: run.id,
|
|
58
|
+
status: run.status,
|
|
59
|
+
output: run.output,
|
|
60
|
+
error: run.error ? { message: run.error.message } : undefined,
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export function graphStart<
|
|
67
|
+
TGraphsMap extends Record<string, Record<string, any>>,
|
|
68
|
+
>(
|
|
69
|
+
graphName: string & keyof TGraphsMap,
|
|
70
|
+
startNode: string
|
|
71
|
+
): {
|
|
72
|
+
func: (services: any, data: any, wire: any) => Promise<{ runId: string }>
|
|
73
|
+
} {
|
|
74
|
+
return {
|
|
75
|
+
func: async (_services: any, data: any, { rpc }: any) => {
|
|
76
|
+
return rpc.startWorkflow(graphName, data, { startNode })
|
|
77
|
+
},
|
|
78
|
+
}
|
|
79
|
+
}
|
|
File without changes
|
|
@@ -1,12 +1,47 @@
|
|
|
1
|
-
import {
|
|
2
|
-
SerializedError,
|
|
3
|
-
CoreSingletonServices,
|
|
4
|
-
CreateWireServices,
|
|
5
|
-
CoreConfig,
|
|
6
|
-
CommonWireMeta,
|
|
7
|
-
} from '../../types/core.types.js'
|
|
1
|
+
import { SerializedError, CommonWireMeta } from '../../types/core.types.js'
|
|
8
2
|
import { CorePikkuFunctionConfig } from '../../function/functions.types.js'
|
|
9
3
|
|
|
4
|
+
// Re-export WorkflowService from services module
|
|
5
|
+
export type { WorkflowService } from '../../services/workflow-service.js'
|
|
6
|
+
|
|
7
|
+
// Re-export DSL types from dsl module
|
|
8
|
+
export type {
|
|
9
|
+
WorkflowStepOptions,
|
|
10
|
+
WorkflowWireDoRPC,
|
|
11
|
+
WorkflowWireDoInline,
|
|
12
|
+
WorkflowWireSleep,
|
|
13
|
+
WorkflowWireSuspend,
|
|
14
|
+
InputSource,
|
|
15
|
+
OutputBinding,
|
|
16
|
+
RpcStepMeta,
|
|
17
|
+
SimpleCondition,
|
|
18
|
+
Condition,
|
|
19
|
+
BranchCase,
|
|
20
|
+
BranchStepMeta,
|
|
21
|
+
ParallelGroupStepMeta,
|
|
22
|
+
FanoutStepMeta,
|
|
23
|
+
ReturnStepMeta,
|
|
24
|
+
InlineStepMeta,
|
|
25
|
+
SleepStepMeta,
|
|
26
|
+
CancelStepMeta,
|
|
27
|
+
SetStepMeta,
|
|
28
|
+
SwitchCaseMeta,
|
|
29
|
+
SwitchStepMeta,
|
|
30
|
+
FilterStepMeta,
|
|
31
|
+
ArrayPredicateStepMeta,
|
|
32
|
+
WorkflowStepMeta,
|
|
33
|
+
WorkflowStepWire,
|
|
34
|
+
PikkuWorkflowWire,
|
|
35
|
+
} from './dsl/workflow-dsl.types.js'
|
|
36
|
+
|
|
37
|
+
import type { WorkflowStepMeta } from './dsl/workflow-dsl.types.js'
|
|
38
|
+
|
|
39
|
+
export interface WorkflowRunWire {
|
|
40
|
+
type: string
|
|
41
|
+
id?: string
|
|
42
|
+
parentRunId?: string
|
|
43
|
+
}
|
|
44
|
+
|
|
10
45
|
export interface WorkflowServiceConfig {
|
|
11
46
|
retries: number
|
|
12
47
|
retryDelay: number
|
|
@@ -18,7 +53,12 @@ export interface WorkflowServiceConfig {
|
|
|
18
53
|
/**
|
|
19
54
|
* Workflow run status
|
|
20
55
|
*/
|
|
21
|
-
export type WorkflowStatus =
|
|
56
|
+
export type WorkflowStatus =
|
|
57
|
+
| 'running'
|
|
58
|
+
| 'suspended'
|
|
59
|
+
| 'completed'
|
|
60
|
+
| 'failed'
|
|
61
|
+
| 'cancelled'
|
|
22
62
|
|
|
23
63
|
/**
|
|
24
64
|
* Workflow step status
|
|
@@ -29,6 +69,7 @@ export type StepStatus =
|
|
|
29
69
|
| 'scheduled'
|
|
30
70
|
| 'succeeded'
|
|
31
71
|
| 'failed'
|
|
72
|
+
| 'suspended'
|
|
32
73
|
|
|
33
74
|
/**
|
|
34
75
|
* Workflow run representation
|
|
@@ -46,6 +87,12 @@ export interface WorkflowRun {
|
|
|
46
87
|
output?: any
|
|
47
88
|
/** Error (if failed) */
|
|
48
89
|
error?: SerializedError
|
|
90
|
+
/** If true, workflow executes inline without queues */
|
|
91
|
+
inline?: boolean
|
|
92
|
+
/** Graph hash of the workflow definition at run creation time */
|
|
93
|
+
graphHash?: string
|
|
94
|
+
/** Wire origin info (how this run was started) */
|
|
95
|
+
wire: WorkflowRunWire
|
|
49
96
|
/** Creation timestamp */
|
|
50
97
|
createdAt: Date
|
|
51
98
|
/** Last update timestamp */
|
|
@@ -84,6 +131,28 @@ export interface StepState {
|
|
|
84
131
|
failedAt?: Date
|
|
85
132
|
}
|
|
86
133
|
|
|
134
|
+
export interface WorkflowRunService {
|
|
135
|
+
listRuns(options?: {
|
|
136
|
+
workflowName?: string
|
|
137
|
+
status?: string
|
|
138
|
+
limit?: number
|
|
139
|
+
offset?: number
|
|
140
|
+
}): Promise<WorkflowRun[]>
|
|
141
|
+
getRun(id: string): Promise<WorkflowRun | null>
|
|
142
|
+
getRunSteps(
|
|
143
|
+
runId: string
|
|
144
|
+
): Promise<
|
|
145
|
+
Array<StepState & { stepName: string; rpcName?: string; data?: any }>
|
|
146
|
+
>
|
|
147
|
+
getRunHistory(runId: string): Promise<Array<StepState & { stepName: string }>>
|
|
148
|
+
getDistinctWorkflowNames(): Promise<string[]>
|
|
149
|
+
getWorkflowVersion(
|
|
150
|
+
name: string,
|
|
151
|
+
graphHash: string
|
|
152
|
+
): Promise<{ graph: any; source: string } | null>
|
|
153
|
+
deleteRun(id: string): Promise<boolean>
|
|
154
|
+
}
|
|
155
|
+
|
|
87
156
|
/**
|
|
88
157
|
* Core workflow definition
|
|
89
158
|
*/
|
|
@@ -106,215 +175,6 @@ export type CoreWorkflow<
|
|
|
106
175
|
tags?: string[]
|
|
107
176
|
}
|
|
108
177
|
|
|
109
|
-
/**
|
|
110
|
-
* Workflow step options
|
|
111
|
-
*/
|
|
112
|
-
export interface WorkflowStepOptions {
|
|
113
|
-
/** Display name for logs/UI (optional, doesn't affect execution) */
|
|
114
|
-
description?: string
|
|
115
|
-
/** Number of retry attempts for failed steps (only applies to local execution) */
|
|
116
|
-
retries?: number
|
|
117
|
-
/** Delay between retry attempts (e.g., '1s', '2s', '2min') */
|
|
118
|
-
retryDelay?: string | number
|
|
119
|
-
// Future: timeout, failFast, priority
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* Type signature for workflow.do() RPC form - used by inspector
|
|
124
|
-
*/
|
|
125
|
-
export type WorkflowWireDoRPC = <TOutput = any, TInput = any>(
|
|
126
|
-
stepName: string,
|
|
127
|
-
rpcName: string,
|
|
128
|
-
data: TInput,
|
|
129
|
-
options?: WorkflowStepOptions
|
|
130
|
-
) => Promise<TOutput>
|
|
131
|
-
|
|
132
|
-
/**
|
|
133
|
-
* Type signature for workflow.do() inline form - used by inspector
|
|
134
|
-
*/
|
|
135
|
-
export type WorkflowWireDoInline = <T>(
|
|
136
|
-
stepName: string,
|
|
137
|
-
fn: () => Promise<T> | T,
|
|
138
|
-
options?: WorkflowStepOptions
|
|
139
|
-
) => Promise<T>
|
|
140
|
-
|
|
141
|
-
/**
|
|
142
|
-
* Type signature for workflow.sleep() - used by inspector
|
|
143
|
-
*/
|
|
144
|
-
export type WorkflowWireSleep = (
|
|
145
|
-
stepName: string,
|
|
146
|
-
duration: string
|
|
147
|
-
) => Promise<void>
|
|
148
|
-
|
|
149
|
-
/**
|
|
150
|
-
* Input source for step arguments in simple workflows
|
|
151
|
-
*/
|
|
152
|
-
export type InputSource =
|
|
153
|
-
| { from: 'input'; path: string }
|
|
154
|
-
| { from: 'outputVar'; name: string; path?: string }
|
|
155
|
-
| { from: 'item'; path: string }
|
|
156
|
-
| { from: 'literal'; value: unknown }
|
|
157
|
-
|
|
158
|
-
/**
|
|
159
|
-
* Output binding for return statements in simple workflows
|
|
160
|
-
*/
|
|
161
|
-
export interface OutputBinding {
|
|
162
|
-
from: 'outputVar' | 'input'
|
|
163
|
-
name?: string
|
|
164
|
-
path?: string
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
/**
|
|
168
|
-
* RPC step metadata (base form)
|
|
169
|
-
*/
|
|
170
|
-
export interface RpcStepMeta {
|
|
171
|
-
/** RPC form - generates queue worker */
|
|
172
|
-
type: 'rpc'
|
|
173
|
-
/** Cache key (stepName from workflow.do) */
|
|
174
|
-
stepName: string
|
|
175
|
-
/** RPC to invoke */
|
|
176
|
-
rpcName: string
|
|
177
|
-
/** Output variable name (if assigned) */
|
|
178
|
-
outputVar?: string
|
|
179
|
-
/** Input source mappings */
|
|
180
|
-
inputs?: Record<string, InputSource>
|
|
181
|
-
/** Step options */
|
|
182
|
-
options?: WorkflowStepOptions
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
/**
|
|
186
|
-
* Branch step metadata (if/else control flow)
|
|
187
|
-
*/
|
|
188
|
-
export interface BranchStepMeta {
|
|
189
|
-
type: 'branch'
|
|
190
|
-
/** Condition expression (as source string) */
|
|
191
|
-
condition: string
|
|
192
|
-
/** Branch paths */
|
|
193
|
-
branches: {
|
|
194
|
-
then: WorkflowStepMeta[]
|
|
195
|
-
else?: WorkflowStepMeta[]
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
/**
|
|
200
|
-
* Parallel group step metadata (Promise.all with multiple steps)
|
|
201
|
-
*/
|
|
202
|
-
export interface ParallelGroupStepMeta {
|
|
203
|
-
type: 'parallel'
|
|
204
|
-
/** Child steps to execute in parallel */
|
|
205
|
-
children: RpcStepMeta[]
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
/**
|
|
209
|
-
* Fanout step metadata (parallel or sequential iteration)
|
|
210
|
-
*/
|
|
211
|
-
export interface FanoutStepMeta {
|
|
212
|
-
type: 'fanout'
|
|
213
|
-
/** Step name for this fanout */
|
|
214
|
-
stepName: string
|
|
215
|
-
/** Source array variable name */
|
|
216
|
-
sourceVar: string
|
|
217
|
-
/** Iterator variable name */
|
|
218
|
-
itemVar: string
|
|
219
|
-
/** Execution mode */
|
|
220
|
-
mode: 'parallel' | 'sequential'
|
|
221
|
-
/** Child step to execute per iteration */
|
|
222
|
-
child: RpcStepMeta
|
|
223
|
-
/** Time between iterations (sequential mode only) */
|
|
224
|
-
timeBetween?: string
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
/**
|
|
228
|
-
* Return step metadata (workflow output)
|
|
229
|
-
*/
|
|
230
|
-
export interface ReturnStepMeta {
|
|
231
|
-
type: 'return'
|
|
232
|
-
/** Output bindings */
|
|
233
|
-
outputs: Record<string, OutputBinding>
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
/**
|
|
237
|
-
* Inline step metadata (legacy support)
|
|
238
|
-
*/
|
|
239
|
-
export interface InlineStepMeta {
|
|
240
|
-
/** Inline form - local execution */
|
|
241
|
-
type: 'inline'
|
|
242
|
-
/** Cache key (stepName from workflow.do) */
|
|
243
|
-
stepName: string
|
|
244
|
-
/** Display name */
|
|
245
|
-
description?: string
|
|
246
|
-
/** Step options */
|
|
247
|
-
options?: WorkflowStepOptions
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
/**
|
|
251
|
-
* Sleep step metadata
|
|
252
|
-
*/
|
|
253
|
-
export interface SleepStepMeta {
|
|
254
|
-
/** Sleep step */
|
|
255
|
-
type: 'sleep'
|
|
256
|
-
/** Cache key (stepName from workflow.sleep) */
|
|
257
|
-
stepName: string
|
|
258
|
-
/** Sleep duration */
|
|
259
|
-
duration: string | number
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
/**
|
|
263
|
-
* Cancel step metadata
|
|
264
|
-
*/
|
|
265
|
-
export interface CancelStepMeta {
|
|
266
|
-
/** Cancel step */
|
|
267
|
-
type: 'cancel'
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
/**
|
|
271
|
-
* Workflow step metadata (extracted by inspector)
|
|
272
|
-
*/
|
|
273
|
-
export type WorkflowStepMeta =
|
|
274
|
-
| RpcStepMeta
|
|
275
|
-
| BranchStepMeta
|
|
276
|
-
| ParallelGroupStepMeta
|
|
277
|
-
| FanoutStepMeta
|
|
278
|
-
| ReturnStepMeta
|
|
279
|
-
| InlineStepMeta
|
|
280
|
-
| SleepStepMeta
|
|
281
|
-
| CancelStepMeta
|
|
282
|
-
|
|
283
|
-
/**
|
|
284
|
-
* Workflow step wire context for RPC functions
|
|
285
|
-
* Provides step-level metadata including retry attempt tracking
|
|
286
|
-
*/
|
|
287
|
-
export interface WorkflowStepWire {
|
|
288
|
-
/** The workflow run ID */
|
|
289
|
-
runId: string
|
|
290
|
-
/** The unique step ID */
|
|
291
|
-
stepId: string
|
|
292
|
-
/** Current attempt number (1-indexed, increments on retry) */
|
|
293
|
-
attemptCount: number
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
/**
|
|
297
|
-
* Workflow wire object for middleware
|
|
298
|
-
* Provides workflow-specific capabilities to function execution
|
|
299
|
-
*/
|
|
300
|
-
export interface PikkuWorkflowWire {
|
|
301
|
-
/** The workflow name */
|
|
302
|
-
workflowName: string
|
|
303
|
-
/** The current run ID */
|
|
304
|
-
runId: string
|
|
305
|
-
/** Get the current workflow run */
|
|
306
|
-
getRun: () => Promise<WorkflowRun>
|
|
307
|
-
|
|
308
|
-
/** Execute a workflow step (overloaded - RPC or inline form) */
|
|
309
|
-
do: WorkflowWireDoRPC & WorkflowWireDoInline
|
|
310
|
-
|
|
311
|
-
/** Sleep for a duration */
|
|
312
|
-
sleep: WorkflowWireSleep
|
|
313
|
-
|
|
314
|
-
/** Cancel the current workflow run */
|
|
315
|
-
cancel: (reason?: string) => Promise<void>
|
|
316
|
-
}
|
|
317
|
-
|
|
318
178
|
/**
|
|
319
179
|
* Workflow client interface
|
|
320
180
|
*/
|
|
@@ -328,80 +188,64 @@ export interface PikkuWorkflow {
|
|
|
328
188
|
}
|
|
329
189
|
|
|
330
190
|
/**
|
|
331
|
-
*
|
|
191
|
+
* Context variable definition (serialized from Zod schema or type inference)
|
|
192
|
+
*/
|
|
193
|
+
export interface ContextVariable {
|
|
194
|
+
/** Variable type */
|
|
195
|
+
type: 'string' | 'number' | 'boolean' | 'object' | 'array'
|
|
196
|
+
/** Default value */
|
|
197
|
+
default?: unknown
|
|
198
|
+
/** Description for UI/docs */
|
|
199
|
+
description?: string
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Workflow context - state variables with defaults and types
|
|
204
|
+
*/
|
|
205
|
+
export type WorkflowContext = Record<string, ContextVariable>
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Workflows metadata for inspector/CLI (DSL step-based format)
|
|
332
209
|
*/
|
|
333
210
|
export type WorkflowsMeta = Record<
|
|
334
211
|
string,
|
|
335
212
|
CommonWireMeta & {
|
|
336
|
-
|
|
213
|
+
name: string
|
|
337
214
|
steps: WorkflowStepMeta[]
|
|
338
|
-
|
|
339
|
-
|
|
215
|
+
context?: WorkflowContext
|
|
216
|
+
dsl?: boolean
|
|
340
217
|
}
|
|
341
218
|
>
|
|
342
219
|
|
|
343
220
|
/**
|
|
344
|
-
*
|
|
345
|
-
*
|
|
221
|
+
* Unified workflow runtime meta (used by runtime to execute workflows)
|
|
222
|
+
* This is the format stored in pikkuState('workflows', 'meta')
|
|
223
|
+
* Both DSL and graph-based workflows are converted to this format
|
|
346
224
|
*/
|
|
347
|
-
export interface
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
singletonServices: CoreSingletonServices,
|
|
365
|
-
createWireServices: CreateWireServices,
|
|
366
|
-
config: CoreConfig
|
|
367
|
-
): void
|
|
368
|
-
startWorkflow<I>(
|
|
369
|
-
name: string,
|
|
370
|
-
input: I,
|
|
371
|
-
rpcService: any
|
|
372
|
-
): Promise<{ runId: string }>
|
|
373
|
-
runWorkflowJob(runId: string, rpcService: any): Promise<void>
|
|
374
|
-
orchestrateWorkflow(runId: string, rpcService: any): Promise<void>
|
|
375
|
-
executeWorkflowSleep(runId: string, stepId: string): Promise<void>
|
|
376
|
-
|
|
377
|
-
// Step-level state operations
|
|
378
|
-
insertStepState(
|
|
379
|
-
runId: string,
|
|
380
|
-
stepName: string,
|
|
381
|
-
rpcName: string,
|
|
382
|
-
data: any,
|
|
383
|
-
stepOptions?: { retries?: number; retryDelay?: string | number }
|
|
384
|
-
): Promise<StepState>
|
|
385
|
-
getStepState(runId: string, stepName: string): Promise<StepState>
|
|
386
|
-
setStepRunning(stepId: string): Promise<void>
|
|
387
|
-
setStepScheduled(stepId: string): Promise<void>
|
|
388
|
-
setStepResult(stepId: string, result: any): Promise<void>
|
|
389
|
-
setStepError(stepId: string, error: Error): Promise<void>
|
|
390
|
-
createRetryAttempt(
|
|
391
|
-
stepId: string,
|
|
392
|
-
status: 'pending' | 'running'
|
|
393
|
-
): Promise<StepState>
|
|
394
|
-
|
|
395
|
-
// Step execution
|
|
396
|
-
executeWorkflowStep(
|
|
397
|
-
runId: string,
|
|
398
|
-
stepName: string,
|
|
399
|
-
rpcName: string | null,
|
|
400
|
-
data: any,
|
|
401
|
-
rpcService: any
|
|
402
|
-
): Promise<void>
|
|
225
|
+
export interface WorkflowRuntimeMeta {
|
|
226
|
+
/** Workflow name (used as key in registrations) */
|
|
227
|
+
name: string
|
|
228
|
+
/** Pikku function name (for execution) */
|
|
229
|
+
pikkuFuncId: string
|
|
230
|
+
/** Source type: 'dsl' (serializable), 'complex' (has inline steps), 'graph' */
|
|
231
|
+
source: 'dsl' | 'complex' | 'graph'
|
|
232
|
+
/** Optional description */
|
|
233
|
+
description?: string
|
|
234
|
+
/** Tags for organization */
|
|
235
|
+
tags?: string[]
|
|
236
|
+
/** Serialized nodes */
|
|
237
|
+
nodes?: Record<string, any>
|
|
238
|
+
/** Entry node IDs for graph workflows (computed at build time) */
|
|
239
|
+
entryNodeIds?: string[]
|
|
240
|
+
/** Hash of graph topology (nodes, edges, input mappings) */
|
|
241
|
+
graphHash?: string
|
|
403
242
|
}
|
|
404
243
|
|
|
244
|
+
/**
|
|
245
|
+
* Unified workflow runtime metadata map
|
|
246
|
+
*/
|
|
247
|
+
export type WorkflowsRuntimeMeta = Record<string, WorkflowRuntimeMeta>
|
|
248
|
+
|
|
405
249
|
/**
|
|
406
250
|
* Worker input types for generated queue workers
|
|
407
251
|
*/
|