@pikku/core 0.11.2 → 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 +33 -2
- package/dist/crypto-utils.d.ts +2 -0
- package/dist/crypto-utils.js +78 -0
- 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 +7 -1
- package/dist/function/function-runner.js +82 -23
- package/dist/function/functions.types.d.ts +31 -87
- package/dist/function/functions.types.js +16 -46
- 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 +28 -26
- package/dist/index.js +18 -29
- package/dist/middleware/auth-apikey.d.ts +2 -2
- package/dist/middleware/auth-apikey.js +3 -3
- package/dist/middleware/auth-bearer.d.ts +2 -2
- package/dist/middleware/auth-bearer.js +3 -6
- package/dist/middleware/auth-cookie.d.ts +2 -2
- 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 +2 -2
- package/dist/middleware-runner.js +8 -10
- package/dist/permissions.js +11 -15
- package/dist/pikku-state.d.ts +1 -0
- package/dist/pikku-state.js +18 -8
- package/dist/schema.js +12 -11
- 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 +9 -4
- package/dist/types/core.types.d.ts +48 -12
- package/dist/types/core.types.js +8 -1
- package/dist/types/state.types.d.ts +43 -51
- package/dist/utils.d.ts +3 -2
- package/dist/utils.js +15 -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 +12 -3
- 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 +7 -7
- 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/serverless/index.d.ts +1 -1
- package/dist/wirings/channel/serverless/index.js +1 -1
- package/dist/wirings/channel/serverless/serverless-channel-runner.js +15 -4
- 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 +12 -8
- package/dist/wirings/cli/cli.types.d.ts +6 -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.js +49 -23
- package/dist/wirings/http/http.types.d.ts +78 -38
- package/dist/wirings/http/index.d.ts +5 -4
- package/dist/wirings/http/index.js +4 -3
- 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 +25 -39
- 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 +17 -6
- 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 +33 -5
- package/dist/wirings/rpc/rpc-runner.js +134 -16
- package/dist/wirings/rpc/rpc-types.d.ts +8 -4
- package/dist/wirings/scheduler/index.d.ts +3 -3
- package/dist/wirings/scheduler/index.js +2 -3
- package/dist/wirings/scheduler/scheduler-runner.d.ts +5 -0
- package/dist/wirings/scheduler/scheduler-runner.js +23 -5
- 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 -2
- package/dist/wirings/trigger/index.js +2 -2
- 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 +21 -8
- package/dist/wirings/trigger/trigger-runner.js +46 -18
- package/dist/wirings/trigger/trigger.types.d.ts +99 -11
- package/dist/wirings/trigger/trigger.types.js +40 -1
- 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 +1 -1
- package/dist/wirings/workflow/dsl/workflow-dsl.types.d.ts +7 -1
- package/dist/wirings/workflow/dsl/workflow-runner.js +3 -2
- package/dist/wirings/workflow/graph/graph-node.d.ts +1 -6
- package/dist/wirings/workflow/graph/graph-runner.d.ts +5 -31
- package/dist/wirings/workflow/graph/graph-runner.js +384 -296
- package/dist/wirings/workflow/graph/index.d.ts +4 -3
- package/dist/wirings/workflow/graph/index.js +3 -3
- 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 +0 -13
- package/dist/wirings/workflow/index.d.ts +6 -6
- package/dist/wirings/workflow/index.js +6 -4
- package/dist/wirings/workflow/pikku-workflow-service.d.ts +28 -14
- package/dist/wirings/workflow/pikku-workflow-service.js +200 -56
- 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 -23
- package/dist/wirings/workflow/workflow-utils.js +1 -66
- package/dist/wirings/workflow/workflow.types.d.ts +40 -93
- package/package.json +13 -15
- package/run-tests.sh +4 -1
- package/src/crypto-utils.ts +99 -0
- 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 +4 -11
- package/src/function/function-runner.ts +114 -29
- package/src/function/functions.types.ts +62 -132
- package/src/function/index.ts +5 -2
- package/src/handle-error.ts +2 -10
- package/src/index.ts +99 -25
- 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 +12 -12
- package/src/permissions.test.ts +81 -7
- package/src/permissions.ts +15 -17
- package/src/pikku-state.ts +20 -8
- package/src/run-tests-script.test.ts +49 -0
- package/src/schema.ts +18 -15
- 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 +22 -2
- package/src/types/core.types.ts +76 -11
- package/src/types/state.types.ts +37 -63
- package/src/utils.ts +20 -6
- 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 +17 -4
- package/src/wirings/channel/channel-middleware-runner.ts +119 -0
- package/src/wirings/channel/channel-runner.ts +9 -10
- 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 +44 -1
- package/src/wirings/channel/local/local-channel-runner.ts +22 -6
- package/src/wirings/channel/serverless/index.ts +5 -1
- package/src/wirings/channel/serverless/serverless-channel-runner.ts +20 -4
- package/src/wirings/cli/channel/index.ts +1 -1
- package/src/wirings/cli/cli-runner.test.ts +9 -9
- package/src/wirings/cli/cli-runner.ts +17 -10
- package/src/wirings/cli/cli.types.ts +11 -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 +3 -3
- package/src/wirings/http/http-runner.ts +63 -29
- package/src/wirings/http/http.types.ts +121 -37
- package/src/wirings/http/index.ts +16 -4
- 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 +39 -50
- 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 +97 -55
- package/src/wirings/queue/queue-runner.ts +33 -7
- package/src/wirings/queue/queue.types.ts +12 -2
- package/src/wirings/rpc/index.ts +1 -1
- package/src/wirings/rpc/rpc-runner.ts +187 -17
- package/src/wirings/rpc/rpc-types.ts +13 -4
- package/src/wirings/scheduler/index.ts +7 -4
- package/src/wirings/scheduler/scheduler-runner.test.ts +70 -26
- package/src/wirings/scheduler/scheduler-runner.ts +45 -5
- 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 -2
- package/src/wirings/trigger/pikku-trigger-service.ts +134 -0
- package/src/wirings/trigger/trigger-runner.ts +80 -38
- package/src/wirings/trigger/trigger.types.ts +144 -22
- 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 +1 -0
- package/src/wirings/workflow/dsl/workflow-dsl.types.ts +9 -1
- package/src/wirings/workflow/dsl/workflow-runner.ts +4 -3
- package/src/wirings/workflow/graph/graph-node.ts +1 -6
- package/src/wirings/workflow/graph/graph-runner.test.ts +495 -0
- package/src/wirings/workflow/graph/graph-runner.ts +496 -374
- package/src/wirings/workflow/graph/index.ts +14 -3
- 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 +0 -22
- package/src/wirings/workflow/index.ts +21 -10
- package/src/wirings/workflow/pikku-workflow-service.test.ts +212 -0
- package/src/wirings/workflow/pikku-workflow-service.ts +285 -66
- package/src/wirings/workflow/workflow-helpers.ts +79 -0
- package/src/wirings/workflow/workflow-utils.ts +0 -120
- package/src/wirings/workflow/workflow.types.ts +45 -90
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/wirings/forge-node/forge-node.types.d.ts +0 -120
- package/dist/wirings/forge-node/forge-node.types.js +0 -38
- package/dist/wirings/forge-node/index.d.ts +0 -1
- package/dist/wirings/forge-node/index.js +0 -1
- package/dist/wirings/workflow/wire-workflow.d.ts +0 -42
- package/dist/wirings/workflow/wire-workflow.js +0 -53
- package/src/wirings/forge-node/forge-node.types.ts +0 -135
- package/src/wirings/forge-node/index.ts +0 -1
- package/src/wirings/workflow/wire-workflow.ts +0 -94
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import { pikkuState } from '../../pikku-state.js'
|
|
2
|
-
import { NotFoundError } from '../../errors/errors.js'
|
|
3
|
-
import {
|
|
4
|
-
PikkuWire,
|
|
5
|
-
CreateWireServices,
|
|
6
|
-
CoreSingletonServices,
|
|
7
|
-
CoreServices,
|
|
8
|
-
CoreUserSession,
|
|
9
|
-
} from '../../types/core.types.js'
|
|
10
|
-
import { HTTPWiringMeta } from '../http/http.types.js'
|
|
11
|
-
import { ContextAwareRPCService } from '../rpc/rpc-runner.js'
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Result of finding a workflow by HTTP wire
|
|
15
|
-
*/
|
|
16
|
-
export interface WorkflowHttpMatch {
|
|
17
|
-
workflowName: string
|
|
18
|
-
startNode?: string
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Find workflow name by matching route and method against workflow wires
|
|
23
|
-
*/
|
|
24
|
-
export const findWorkflowByHttpWire = (
|
|
25
|
-
route: string,
|
|
26
|
-
method: string
|
|
27
|
-
): WorkflowHttpMatch | undefined => {
|
|
28
|
-
const wirings = pikkuState(null, 'workflows', 'wirings')
|
|
29
|
-
const graphWirings = pikkuState(null, 'workflows', 'graphWirings')
|
|
30
|
-
|
|
31
|
-
// Check DSL workflow wirings
|
|
32
|
-
for (const [, wiring] of wirings) {
|
|
33
|
-
const httpWires = wiring.wires?.http
|
|
34
|
-
if (httpWires) {
|
|
35
|
-
const matchedWire = httpWires.find(
|
|
36
|
-
(w) => w.route === route && w.method === method
|
|
37
|
-
)
|
|
38
|
-
if (matchedWire) {
|
|
39
|
-
const meta = pikkuState(null, 'workflows', 'meta')
|
|
40
|
-
for (const [name, workflowMeta] of Object.entries(meta)) {
|
|
41
|
-
if (workflowMeta.source !== 'graph') {
|
|
42
|
-
const registrations = pikkuState(null, 'workflows', 'registrations')
|
|
43
|
-
if (registrations.has(name)) {
|
|
44
|
-
return { workflowName: name, startNode: matchedWire.startNode }
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// Check graph workflow wirings
|
|
53
|
-
for (const [, wiring] of graphWirings) {
|
|
54
|
-
const httpWires = wiring.wires?.http
|
|
55
|
-
if (httpWires) {
|
|
56
|
-
const matchedWire = httpWires.find(
|
|
57
|
-
(w) => w.route === route && w.method === method
|
|
58
|
-
)
|
|
59
|
-
if (matchedWire) {
|
|
60
|
-
const meta = pikkuState(null, 'workflows', 'meta')
|
|
61
|
-
for (const [name, workflowMeta] of Object.entries(meta)) {
|
|
62
|
-
if (workflowMeta.source === 'graph') {
|
|
63
|
-
return { workflowName: name, startNode: matchedWire.startNode }
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
return undefined
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Start a workflow triggered by an HTTP wire
|
|
75
|
-
* The workflow is responsible for handling the HTTP response
|
|
76
|
-
*/
|
|
77
|
-
export const startWorkflowByHttpWire = async (
|
|
78
|
-
singletonServices: CoreSingletonServices,
|
|
79
|
-
createWireServices:
|
|
80
|
-
| CreateWireServices<
|
|
81
|
-
CoreSingletonServices,
|
|
82
|
-
CoreServices<CoreSingletonServices>,
|
|
83
|
-
CoreUserSession
|
|
84
|
-
>
|
|
85
|
-
| undefined,
|
|
86
|
-
matchedRoute: {
|
|
87
|
-
matchedPath: any
|
|
88
|
-
params: any
|
|
89
|
-
route: any
|
|
90
|
-
meta: HTTPWiringMeta
|
|
91
|
-
},
|
|
92
|
-
wire: PikkuWire
|
|
93
|
-
): Promise<void> => {
|
|
94
|
-
const { meta } = matchedRoute
|
|
95
|
-
|
|
96
|
-
const match = findWorkflowByHttpWire(meta.route, meta.method)
|
|
97
|
-
if (!match) {
|
|
98
|
-
throw new NotFoundError(
|
|
99
|
-
`No workflow found for route ${meta.method.toUpperCase()} ${meta.route}`
|
|
100
|
-
)
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
const workflowService = singletonServices.workflowService
|
|
104
|
-
if (!workflowService) {
|
|
105
|
-
throw new Error('WorkflowService not available')
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
const data = await wire.http!.request!.data()
|
|
109
|
-
|
|
110
|
-
const wireServices = createWireServices?.(singletonServices, wire)
|
|
111
|
-
const rpcService = new ContextAwareRPCService(
|
|
112
|
-
{ ...singletonServices, ...wireServices },
|
|
113
|
-
wire,
|
|
114
|
-
{}
|
|
115
|
-
)
|
|
116
|
-
await workflowService.startWorkflow(match.workflowName, data, rpcService, {
|
|
117
|
-
inline: true,
|
|
118
|
-
startNode: match.startNode,
|
|
119
|
-
})
|
|
120
|
-
}
|
|
@@ -10,6 +10,7 @@ export type {
|
|
|
10
10
|
WorkflowWireDoRPC,
|
|
11
11
|
WorkflowWireDoInline,
|
|
12
12
|
WorkflowWireSleep,
|
|
13
|
+
WorkflowWireSuspend,
|
|
13
14
|
InputSource,
|
|
14
15
|
OutputBinding,
|
|
15
16
|
RpcStepMeta,
|
|
@@ -35,6 +36,12 @@ export type {
|
|
|
35
36
|
|
|
36
37
|
import type { WorkflowStepMeta } from './dsl/workflow-dsl.types.js'
|
|
37
38
|
|
|
39
|
+
export interface WorkflowRunWire {
|
|
40
|
+
type: string
|
|
41
|
+
id?: string
|
|
42
|
+
parentRunId?: string
|
|
43
|
+
}
|
|
44
|
+
|
|
38
45
|
export interface WorkflowServiceConfig {
|
|
39
46
|
retries: number
|
|
40
47
|
retryDelay: number
|
|
@@ -43,94 +50,15 @@ export interface WorkflowServiceConfig {
|
|
|
43
50
|
sleeperRPCName: string
|
|
44
51
|
}
|
|
45
52
|
|
|
46
|
-
/**
|
|
47
|
-
* HTTP wire configuration for workflows
|
|
48
|
-
*/
|
|
49
|
-
export interface WorkflowHTTPWire {
|
|
50
|
-
route: string
|
|
51
|
-
method: 'get' | 'post' | 'put' | 'patch' | 'delete'
|
|
52
|
-
startNode: string
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Channel wire configuration for workflows
|
|
57
|
-
*/
|
|
58
|
-
export interface WorkflowChannelWire {
|
|
59
|
-
name: string
|
|
60
|
-
onConnect?: string
|
|
61
|
-
onDisconnect?: string
|
|
62
|
-
onMessage?: string
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* Queue wire configuration for workflows
|
|
67
|
-
*/
|
|
68
|
-
export interface WorkflowQueueWire {
|
|
69
|
-
name: string
|
|
70
|
-
startNode: string
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* CLI wire configuration for workflows
|
|
75
|
-
*/
|
|
76
|
-
export interface WorkflowCliWire {
|
|
77
|
-
command: string
|
|
78
|
-
startNode: string
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* MCP wire configurations for workflows
|
|
83
|
-
*/
|
|
84
|
-
export interface WorkflowMcpWires {
|
|
85
|
-
tool?: Array<{ name: string; startNode: string }>
|
|
86
|
-
prompt?: Array<{ name: string; startNode: string }>
|
|
87
|
-
resource?: Array<{ uri: string; startNode: string }>
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Schedule wire configuration for workflows
|
|
92
|
-
*/
|
|
93
|
-
export interface WorkflowScheduleWire {
|
|
94
|
-
cron?: string
|
|
95
|
-
interval?: string
|
|
96
|
-
startNode: string
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Trigger wire configuration for workflows
|
|
101
|
-
*/
|
|
102
|
-
export interface WorkflowTriggerWire {
|
|
103
|
-
name: string
|
|
104
|
-
startNode: string
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* Wire configuration for workflows
|
|
109
|
-
* Defines how a workflow can be triggered
|
|
110
|
-
*/
|
|
111
|
-
export interface WorkflowWires {
|
|
112
|
-
/** API entry point - node ID for startWorkflow() calls */
|
|
113
|
-
api?: string
|
|
114
|
-
/** HTTP triggers */
|
|
115
|
-
http?: WorkflowHTTPWire[]
|
|
116
|
-
/** Channel triggers */
|
|
117
|
-
channel?: WorkflowChannelWire[]
|
|
118
|
-
/** Queue triggers */
|
|
119
|
-
queue?: WorkflowQueueWire[]
|
|
120
|
-
/** CLI triggers */
|
|
121
|
-
cli?: WorkflowCliWire[]
|
|
122
|
-
/** MCP triggers (tool, prompt, resource) */
|
|
123
|
-
mcp?: WorkflowMcpWires
|
|
124
|
-
/** Schedule triggers */
|
|
125
|
-
schedule?: WorkflowScheduleWire[]
|
|
126
|
-
/** Named trigger wires */
|
|
127
|
-
trigger?: WorkflowTriggerWire[]
|
|
128
|
-
}
|
|
129
|
-
|
|
130
53
|
/**
|
|
131
54
|
* Workflow run status
|
|
132
55
|
*/
|
|
133
|
-
export type WorkflowStatus =
|
|
56
|
+
export type WorkflowStatus =
|
|
57
|
+
| 'running'
|
|
58
|
+
| 'suspended'
|
|
59
|
+
| 'completed'
|
|
60
|
+
| 'failed'
|
|
61
|
+
| 'cancelled'
|
|
134
62
|
|
|
135
63
|
/**
|
|
136
64
|
* Workflow step status
|
|
@@ -141,6 +69,7 @@ export type StepStatus =
|
|
|
141
69
|
| 'scheduled'
|
|
142
70
|
| 'succeeded'
|
|
143
71
|
| 'failed'
|
|
72
|
+
| 'suspended'
|
|
144
73
|
|
|
145
74
|
/**
|
|
146
75
|
* Workflow run representation
|
|
@@ -160,6 +89,10 @@ export interface WorkflowRun {
|
|
|
160
89
|
error?: SerializedError
|
|
161
90
|
/** If true, workflow executes inline without queues */
|
|
162
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
|
|
163
96
|
/** Creation timestamp */
|
|
164
97
|
createdAt: Date
|
|
165
98
|
/** Last update timestamp */
|
|
@@ -198,6 +131,28 @@ export interface StepState {
|
|
|
198
131
|
failedAt?: Date
|
|
199
132
|
}
|
|
200
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
|
+
|
|
201
156
|
/**
|
|
202
157
|
* Core workflow definition
|
|
203
158
|
*/
|
|
@@ -255,7 +210,7 @@ export type WorkflowContext = Record<string, ContextVariable>
|
|
|
255
210
|
export type WorkflowsMeta = Record<
|
|
256
211
|
string,
|
|
257
212
|
CommonWireMeta & {
|
|
258
|
-
|
|
213
|
+
name: string
|
|
259
214
|
steps: WorkflowStepMeta[]
|
|
260
215
|
context?: WorkflowContext
|
|
261
216
|
dsl?: boolean
|
|
@@ -271,19 +226,19 @@ export interface WorkflowRuntimeMeta {
|
|
|
271
226
|
/** Workflow name (used as key in registrations) */
|
|
272
227
|
name: string
|
|
273
228
|
/** Pikku function name (for execution) */
|
|
274
|
-
|
|
229
|
+
pikkuFuncId: string
|
|
275
230
|
/** Source type: 'dsl' (serializable), 'complex' (has inline steps), 'graph' */
|
|
276
|
-
source
|
|
231
|
+
source: 'dsl' | 'complex' | 'graph'
|
|
277
232
|
/** Optional description */
|
|
278
233
|
description?: string
|
|
279
234
|
/** Tags for organization */
|
|
280
235
|
tags?: string[]
|
|
281
|
-
/** Wires - how the workflow is triggered */
|
|
282
|
-
wires?: WorkflowWires
|
|
283
236
|
/** Serialized nodes */
|
|
284
237
|
nodes?: Record<string, any>
|
|
285
238
|
/** Entry node IDs for graph workflows (computed at build time) */
|
|
286
239
|
entryNodeIds?: string[]
|
|
240
|
+
/** Hash of graph topology (nodes, edges, input mappings) */
|
|
241
|
+
graphHash?: string
|
|
287
242
|
}
|
|
288
243
|
|
|
289
244
|
/**
|