@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,5 +1,6 @@
|
|
|
1
1
|
import type { SerializeOptions } from 'cookie'
|
|
2
|
-
import type {
|
|
2
|
+
import type { StandardSchemaV1 } from '@standard-schema/spec'
|
|
3
|
+
import { PikkuError } from '../../errors/error-handler.js'
|
|
3
4
|
import type {
|
|
4
5
|
CoreServices,
|
|
5
6
|
CoreSingletonServices,
|
|
@@ -44,7 +45,7 @@ export type RunHTTPWiringOptions = Partial<{
|
|
|
44
45
|
|
|
45
46
|
export type RunHTTPWiringParams = {
|
|
46
47
|
singletonServices: CoreSingletonServices
|
|
47
|
-
createWireServices
|
|
48
|
+
createWireServices?: CreateWireServices<
|
|
48
49
|
CoreSingletonServices,
|
|
49
50
|
CoreServices<CoreSingletonServices>,
|
|
50
51
|
CoreUserSession
|
|
@@ -53,7 +54,7 @@ export type RunHTTPWiringParams = {
|
|
|
53
54
|
|
|
54
55
|
/**
|
|
55
56
|
* Represents the HTTP methods supported for API HTTP wirings.
|
|
56
|
-
|
|
57
|
+
*/
|
|
57
58
|
export type HTTPMethod =
|
|
58
59
|
| 'post'
|
|
59
60
|
| 'get'
|
|
@@ -64,21 +65,41 @@ export type HTTPMethod =
|
|
|
64
65
|
| 'options'
|
|
65
66
|
|
|
66
67
|
/**
|
|
67
|
-
*
|
|
68
|
+
* Header schema type for request header validation.
|
|
69
|
+
* Uses Standard Schema interface - works with Zod, Valibot, ArkType, Effect Schema, etc.
|
|
70
|
+
*/
|
|
71
|
+
export type HTTPHeadersSchema = StandardSchemaV1<
|
|
72
|
+
Record<string, string | string[] | undefined>
|
|
73
|
+
>
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Documentation config for OpenAPI generation
|
|
77
|
+
*/
|
|
78
|
+
export type HTTPRouteDocsConfig = {
|
|
79
|
+
description?: string
|
|
80
|
+
response?: string
|
|
81
|
+
errors?: Array<typeof PikkuError>
|
|
82
|
+
tags?: string[]
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Common HTTP route configuration shared between wireHTTP and wireHTTPRoutes
|
|
68
87
|
*/
|
|
69
|
-
export type
|
|
88
|
+
export type HTTPRouteBaseConfig = {
|
|
70
89
|
contentType?: 'xml' | 'json'
|
|
90
|
+
timeout?: number
|
|
91
|
+
tags?: string[]
|
|
92
|
+
headers?: HTTPHeadersSchema
|
|
93
|
+
docs?: HTTPRouteDocsConfig
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Represents an API HTTP wiring without a function, including metadata such as content type, route, and timeout settings.
|
|
98
|
+
*/
|
|
99
|
+
export type CoreHTTPFunction = HTTPRouteBaseConfig & {
|
|
71
100
|
route: string
|
|
72
101
|
eventChannel?: false
|
|
73
102
|
returnsJSON?: false
|
|
74
|
-
timeout?: number
|
|
75
|
-
tags?: string[]
|
|
76
|
-
docs?: Partial<{
|
|
77
|
-
description: string
|
|
78
|
-
response: string
|
|
79
|
-
errors: Array<typeof PikkuError>
|
|
80
|
-
tags: string[]
|
|
81
|
-
}>
|
|
82
103
|
}
|
|
83
104
|
/**
|
|
84
105
|
* Represents a http wire within Pikku, including a request and response.
|
|
@@ -121,12 +142,14 @@ export type CoreHTTPFunctionWiring<
|
|
|
121
142
|
In,
|
|
122
143
|
Out,
|
|
123
144
|
any,
|
|
145
|
+
any,
|
|
124
146
|
any
|
|
125
147
|
> = CorePikkuFunction<In, Out>,
|
|
126
148
|
PikkuFunctionSessionless extends CorePikkuFunctionSessionless<
|
|
127
149
|
In,
|
|
128
150
|
Out,
|
|
129
151
|
any,
|
|
152
|
+
any,
|
|
130
153
|
any
|
|
131
154
|
> = CorePikkuFunctionSessionless<In, Out>,
|
|
132
155
|
PikkuPermission extends CorePikkuPermission<
|
|
@@ -149,7 +172,6 @@ export type CoreHTTPFunctionWiring<
|
|
|
149
172
|
>
|
|
150
173
|
permissions?: CorePermissionGroup<PikkuPermission>
|
|
151
174
|
auth?: true
|
|
152
|
-
tags?: string[]
|
|
153
175
|
middleware?: PikkuMiddleware[]
|
|
154
176
|
sse?: undefined
|
|
155
177
|
})
|
|
@@ -163,7 +185,6 @@ export type CoreHTTPFunctionWiring<
|
|
|
163
185
|
>
|
|
164
186
|
permissions?: undefined
|
|
165
187
|
auth?: false
|
|
166
|
-
tags?: string[]
|
|
167
188
|
middleware?: PikkuMiddleware[]
|
|
168
189
|
sse?: undefined
|
|
169
190
|
})
|
|
@@ -177,9 +198,8 @@ export type CoreHTTPFunctionWiring<
|
|
|
177
198
|
>
|
|
178
199
|
permissions?: CorePermissionGroup<PikkuPermission>
|
|
179
200
|
auth?: true
|
|
180
|
-
sse?: boolean
|
|
181
|
-
tags?: string[]
|
|
182
201
|
middleware?: PikkuMiddleware[]
|
|
202
|
+
sse?: boolean
|
|
183
203
|
})
|
|
184
204
|
| (CoreHTTPFunction & {
|
|
185
205
|
route: R
|
|
@@ -191,9 +211,8 @@ export type CoreHTTPFunctionWiring<
|
|
|
191
211
|
>
|
|
192
212
|
permissions?: undefined
|
|
193
213
|
auth?: false
|
|
194
|
-
sse?: boolean
|
|
195
|
-
tags?: string[]
|
|
196
214
|
middleware?: PikkuMiddleware[]
|
|
215
|
+
sse?: boolean
|
|
197
216
|
})
|
|
198
217
|
| (CoreHTTPFunction & {
|
|
199
218
|
route: R
|
|
@@ -205,9 +224,8 @@ export type CoreHTTPFunctionWiring<
|
|
|
205
224
|
>
|
|
206
225
|
permissions?: CorePermissionGroup<PikkuPermission>
|
|
207
226
|
auth?: true
|
|
208
|
-
query?: Array<keyof In>
|
|
209
|
-
tags?: string[]
|
|
210
227
|
middleware?: PikkuMiddleware[]
|
|
228
|
+
query?: Array<keyof In>
|
|
211
229
|
sse?: undefined
|
|
212
230
|
})
|
|
213
231
|
| (CoreHTTPFunction & {
|
|
@@ -220,24 +238,10 @@ export type CoreHTTPFunctionWiring<
|
|
|
220
238
|
>
|
|
221
239
|
permissions?: undefined
|
|
222
240
|
auth?: false
|
|
223
|
-
query?: Array<keyof In>
|
|
224
|
-
tags?: string[]
|
|
225
241
|
middleware?: PikkuMiddleware[]
|
|
242
|
+
query?: Array<keyof In>
|
|
226
243
|
sse?: undefined
|
|
227
244
|
})
|
|
228
|
-
| {
|
|
229
|
-
/** Route triggers a workflow matched by route/method from workflow wires.http */
|
|
230
|
-
route: R
|
|
231
|
-
method: HTTPMethod
|
|
232
|
-
workflow: true
|
|
233
|
-
func?: undefined
|
|
234
|
-
permissions?: undefined
|
|
235
|
-
auth?: undefined
|
|
236
|
-
tags?: undefined
|
|
237
|
-
middleware?: undefined
|
|
238
|
-
returnsJSON?: undefined
|
|
239
|
-
sse?: boolean
|
|
240
|
-
}
|
|
241
245
|
|
|
242
246
|
/**
|
|
243
247
|
* Represents the input types for HTTP wiring metadata, including parameters, query, and body types.
|
|
@@ -257,8 +261,9 @@ export type HTTPWiringMeta = CommonWireMeta & {
|
|
|
257
261
|
params?: string[]
|
|
258
262
|
query?: string[]
|
|
259
263
|
inputTypes?: HTTPFunctionMetaInputTypes
|
|
264
|
+
headersSchemaName?: string
|
|
260
265
|
sse?: true
|
|
261
|
-
|
|
266
|
+
groupBasePath?: string
|
|
262
267
|
}
|
|
263
268
|
export type HTTPWiringsMeta = Record<HTTPMethod, Record<string, HTTPWiringMeta>>
|
|
264
269
|
|
|
@@ -305,3 +310,82 @@ export interface PikkuHTTPResponse<Out = unknown> {
|
|
|
305
310
|
close?: () => void
|
|
306
311
|
setMode?: (mode: 'stream') => void
|
|
307
312
|
}
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* Single route configuration - supports all wireHTTP options
|
|
316
|
+
*/
|
|
317
|
+
export type HTTPRouteConfig<
|
|
318
|
+
PikkuFunction extends
|
|
319
|
+
| CorePikkuFunction<any, any, any, any, any>
|
|
320
|
+
| CorePikkuFunctionSessionless<any, any, any, any, any> =
|
|
321
|
+
| CorePikkuFunction<any, any, any, any, any>
|
|
322
|
+
| CorePikkuFunctionSessionless<any, any, any, any, any>,
|
|
323
|
+
PikkuPermission extends CorePikkuPermission<
|
|
324
|
+
any,
|
|
325
|
+
any,
|
|
326
|
+
any
|
|
327
|
+
> = CorePikkuPermission<any>,
|
|
328
|
+
PikkuMiddleware extends CorePikkuMiddleware<any, any> = CorePikkuMiddleware<
|
|
329
|
+
any,
|
|
330
|
+
any
|
|
331
|
+
>,
|
|
332
|
+
> = HTTPRouteBaseConfig & {
|
|
333
|
+
// Required
|
|
334
|
+
method: HTTPMethod
|
|
335
|
+
route: string
|
|
336
|
+
func: CorePikkuFunctionConfig<PikkuFunction, PikkuPermission, PikkuMiddleware>
|
|
337
|
+
|
|
338
|
+
// Auth & permissions
|
|
339
|
+
auth?: boolean
|
|
340
|
+
permissions?: CorePermissionGroup<PikkuPermission>
|
|
341
|
+
|
|
342
|
+
// Middleware
|
|
343
|
+
middleware?: PikkuMiddleware[]
|
|
344
|
+
|
|
345
|
+
// SSE support
|
|
346
|
+
sse?: boolean
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
/**
|
|
350
|
+
* Group-level configuration applied to all routes
|
|
351
|
+
*/
|
|
352
|
+
export type HTTPRoutesGroupConfig<
|
|
353
|
+
PikkuPermission extends CorePikkuPermission<
|
|
354
|
+
any,
|
|
355
|
+
any,
|
|
356
|
+
any
|
|
357
|
+
> = CorePikkuPermission<any>,
|
|
358
|
+
PikkuMiddleware extends CorePikkuMiddleware<any, any> = CorePikkuMiddleware<
|
|
359
|
+
any,
|
|
360
|
+
any
|
|
361
|
+
>,
|
|
362
|
+
> = {
|
|
363
|
+
basePath?: string
|
|
364
|
+
tags?: string[]
|
|
365
|
+
auth?: boolean
|
|
366
|
+
middleware?: PikkuMiddleware[]
|
|
367
|
+
permissions?: CorePermissionGroup<PikkuPermission>
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
/**
|
|
371
|
+
* Nested route map - allows hierarchical organization
|
|
372
|
+
* Can contain individual routes, nested maps, or contracts with config
|
|
373
|
+
*/
|
|
374
|
+
export type HTTPRouteMap = {
|
|
375
|
+
[key: string]: HTTPRouteConfig | HTTPRouteMap | HTTPRouteContract
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
/**
|
|
379
|
+
* A route contract with optional group config (returned by defineRoutes)
|
|
380
|
+
*/
|
|
381
|
+
export type HTTPRouteContract<T extends HTTPRouteMap = HTTPRouteMap> =
|
|
382
|
+
HTTPRoutesGroupConfig & {
|
|
383
|
+
routes: T
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
/**
|
|
387
|
+
* Full configuration for wireHTTPRoutes
|
|
388
|
+
*/
|
|
389
|
+
export type WireHTTPRoutesConfig = HTTPRoutesGroupConfig & {
|
|
390
|
+
routes: HTTPRouteMap | HTTPRouteConfig[]
|
|
391
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export
|
|
1
|
+
export { PikkuFetchHTTPRequest } from './pikku-fetch-http-request.js'
|
|
2
|
+
export { PikkuFetchHTTPResponse } from './pikku-fetch-http-response.js'
|
|
3
|
+
export { logRoutes } from './log-http-routes.js'
|
|
4
4
|
|
|
5
5
|
export {
|
|
6
6
|
fetch,
|
|
@@ -10,4 +10,16 @@ export {
|
|
|
10
10
|
addHTTPPermission,
|
|
11
11
|
} from './http-runner.js'
|
|
12
12
|
|
|
13
|
-
export
|
|
13
|
+
export { wireHTTPRoutes, defineHTTPRoutes } from './http-routes.js'
|
|
14
|
+
|
|
15
|
+
export type {
|
|
16
|
+
AssertHTTPWiringParams,
|
|
17
|
+
CoreHTTPFunctionWiring,
|
|
18
|
+
HTTPMethod,
|
|
19
|
+
HTTPRouteBaseConfig,
|
|
20
|
+
HTTPWiringsMeta,
|
|
21
|
+
PikkuHTTPRequest,
|
|
22
|
+
PikkuHTTPResponse,
|
|
23
|
+
PikkuQuery,
|
|
24
|
+
RunHTTPWiringOptions,
|
|
25
|
+
} from './http.types.js'
|
package/src/wirings/mcp/index.ts
CHANGED
|
@@ -1,3 +1,27 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
|
|
1
|
+
export { MCPEndpointRegistry } from './mcp-endpoint-registry.js'
|
|
2
|
+
export {
|
|
3
|
+
MCPError,
|
|
4
|
+
wireMCPResource,
|
|
5
|
+
wireMCPPrompt,
|
|
6
|
+
runMCPResource,
|
|
7
|
+
runMCPTool,
|
|
8
|
+
runMCPPrompt,
|
|
9
|
+
} from './mcp-runner.js'
|
|
10
|
+
export {
|
|
11
|
+
getMCPResourcesMeta,
|
|
12
|
+
getMCPToolsMeta,
|
|
13
|
+
getMCPPromptsMeta,
|
|
14
|
+
} from './mcp-runner.js'
|
|
15
|
+
export type {
|
|
16
|
+
AssertMCPResourceURIParams,
|
|
17
|
+
CoreMCPPrompt,
|
|
18
|
+
CoreMCPResource,
|
|
19
|
+
CoreMCPTool,
|
|
20
|
+
MCPPromptResponse,
|
|
21
|
+
MCPResourceMeta,
|
|
22
|
+
MCPResourceResponse,
|
|
23
|
+
MCPToolMeta,
|
|
24
|
+
MCPToolResponse,
|
|
25
|
+
MCPPromptMeta,
|
|
26
|
+
PikkuMCP,
|
|
27
|
+
} from './mcp.types.js'
|
|
@@ -147,7 +147,7 @@ describe('MCPEndpointRegistry', () => {
|
|
|
147
147
|
uri: 'file://test.txt',
|
|
148
148
|
title: 'Test Resource',
|
|
149
149
|
description: 'Test description',
|
|
150
|
-
|
|
150
|
+
pikkuFuncId: 'testResource',
|
|
151
151
|
inputSchema: null,
|
|
152
152
|
outputSchema: null,
|
|
153
153
|
mimeType: 'text/plain',
|
|
@@ -164,7 +164,7 @@ describe('MCPEndpointRegistry', () => {
|
|
|
164
164
|
name: 'test-tool',
|
|
165
165
|
title: 'Test Tool',
|
|
166
166
|
description: 'Test description',
|
|
167
|
-
|
|
167
|
+
pikkuFuncId: 'testTool',
|
|
168
168
|
inputSchema: null,
|
|
169
169
|
outputSchema: null,
|
|
170
170
|
},
|
|
@@ -179,7 +179,7 @@ describe('MCPEndpointRegistry', () => {
|
|
|
179
179
|
'test-prompt': {
|
|
180
180
|
name: 'test-prompt',
|
|
181
181
|
description: 'Test Prompt',
|
|
182
|
-
|
|
182
|
+
pikkuFuncId: 'testPrompt',
|
|
183
183
|
inputSchema: null,
|
|
184
184
|
outputSchema: null,
|
|
185
185
|
arguments: [],
|
|
@@ -7,7 +7,6 @@ import {
|
|
|
7
7
|
} from '../../types/core.types.js'
|
|
8
8
|
import type {
|
|
9
9
|
CoreMCPResource,
|
|
10
|
-
CoreMCPTool,
|
|
11
10
|
CoreMCPPrompt,
|
|
12
11
|
JsonRpcRequest,
|
|
13
12
|
JsonRpcResponse,
|
|
@@ -22,8 +21,15 @@ import { getErrorResponse } from '../../errors/error-handler.js'
|
|
|
22
21
|
import { closeWireServices } from '../../utils.js'
|
|
23
22
|
import { pikkuState } from '../../pikku-state.js'
|
|
24
23
|
import { addFunction, runPikkuFunc } from '../../function/function-runner.js'
|
|
25
|
-
import {
|
|
26
|
-
|
|
24
|
+
import {
|
|
25
|
+
BadRequestError,
|
|
26
|
+
NotFoundError,
|
|
27
|
+
PikkuMissingMetaError,
|
|
28
|
+
} from '../../errors/errors.js'
|
|
29
|
+
import {
|
|
30
|
+
PikkuSessionService,
|
|
31
|
+
createMiddlewareSessionWireProps,
|
|
32
|
+
} from '../../services/user-session-service.js'
|
|
27
33
|
|
|
28
34
|
export class MCPError extends Error {
|
|
29
35
|
constructor(public readonly error: JsonRpcErrorResponse) {
|
|
@@ -59,9 +65,11 @@ export const wireMCPResource = <
|
|
|
59
65
|
const resourcesMeta = pikkuState(null, 'mcp', 'resourcesMeta')
|
|
60
66
|
const mcpResourceMeta = resourcesMeta[mcpResource.uri]
|
|
61
67
|
if (!mcpResourceMeta) {
|
|
62
|
-
throw new
|
|
68
|
+
throw new PikkuMissingMetaError(
|
|
69
|
+
`Missing generated metadata for MCP resource '${mcpResource.uri}'`
|
|
70
|
+
)
|
|
63
71
|
}
|
|
64
|
-
addFunction(mcpResourceMeta.
|
|
72
|
+
addFunction(mcpResourceMeta.pikkuFuncId, mcpResource.func as any)
|
|
65
73
|
const resources = pikkuState(null, 'mcp', 'resources')
|
|
66
74
|
if (resources.has(mcpResource.uri)) {
|
|
67
75
|
throw new Error(`MCP resource already exists: ${mcpResource.uri}`)
|
|
@@ -69,26 +77,6 @@ export const wireMCPResource = <
|
|
|
69
77
|
resources.set(mcpResource.uri, mcpResource)
|
|
70
78
|
}
|
|
71
79
|
|
|
72
|
-
export const wireMCPTool = <
|
|
73
|
-
PikkuFunctionConfig extends CorePikkuFunctionConfig<
|
|
74
|
-
CorePikkuFunctionSessionless<any, any>
|
|
75
|
-
> = CorePikkuFunctionConfig<CorePikkuFunctionSessionless<any, any>>,
|
|
76
|
-
>(
|
|
77
|
-
mcpTool: CoreMCPTool<PikkuFunctionConfig>
|
|
78
|
-
) => {
|
|
79
|
-
const toolsMeta = pikkuState(null, 'mcp', 'toolsMeta')
|
|
80
|
-
const mcpToolMeta = toolsMeta[mcpTool.name]
|
|
81
|
-
if (!mcpToolMeta) {
|
|
82
|
-
throw new Error(`MCP tool metadata not found for '${mcpTool.name}'`)
|
|
83
|
-
}
|
|
84
|
-
addFunction(mcpToolMeta.pikkuFuncName, mcpTool.func as any)
|
|
85
|
-
const tools = pikkuState(null, 'mcp', 'tools')
|
|
86
|
-
if (tools.has(mcpTool.name)) {
|
|
87
|
-
throw new Error(`MCP tool already exists: ${mcpTool.name}`)
|
|
88
|
-
}
|
|
89
|
-
tools.set(mcpTool.name, mcpTool)
|
|
90
|
-
}
|
|
91
|
-
|
|
92
80
|
export const wireMCPPrompt = <
|
|
93
81
|
PikkuFunctionConfig extends CorePikkuFunctionConfig<
|
|
94
82
|
CorePikkuFunctionSessionless<any, any>
|
|
@@ -99,9 +87,11 @@ export const wireMCPPrompt = <
|
|
|
99
87
|
const promptsMeta = pikkuState(null, 'mcp', 'promptsMeta')
|
|
100
88
|
const mcpPromptMeta = promptsMeta[mcpPrompt.name]
|
|
101
89
|
if (!mcpPromptMeta) {
|
|
102
|
-
throw new
|
|
90
|
+
throw new PikkuMissingMetaError(
|
|
91
|
+
`Missing generated metadata for MCP prompt '${mcpPrompt.name}'`
|
|
92
|
+
)
|
|
103
93
|
}
|
|
104
|
-
addFunction(mcpPromptMeta.
|
|
94
|
+
addFunction(mcpPromptMeta.pikkuFuncId, mcpPrompt.func as any)
|
|
105
95
|
const prompts = pikkuState(null, 'mcp', 'prompts')
|
|
106
96
|
if (prompts.has(mcpPrompt.name)) {
|
|
107
97
|
throw new Error(`MCP prompt already exists: ${mcpPrompt.name}`)
|
|
@@ -115,7 +105,7 @@ export async function runMCPResource(
|
|
|
115
105
|
uri: string
|
|
116
106
|
) {
|
|
117
107
|
let endpoint: CoreMCPResource | undefined
|
|
118
|
-
let
|
|
108
|
+
let pikkuFuncId: string | undefined
|
|
119
109
|
let extractedParams: Record<string, string> = {}
|
|
120
110
|
|
|
121
111
|
const metas = pikkuState(null, 'mcp', 'resourcesMeta')
|
|
@@ -123,7 +113,7 @@ export async function runMCPResource(
|
|
|
123
113
|
|
|
124
114
|
if (endpoints.has(uri)) {
|
|
125
115
|
endpoint = endpoints.get(uri)
|
|
126
|
-
|
|
116
|
+
pikkuFuncId = metas[uri]?.pikkuFuncId
|
|
127
117
|
} else {
|
|
128
118
|
for (const [uriTemplate, value] of endpoints.entries()) {
|
|
129
119
|
// Extract parameter names from the template
|
|
@@ -139,7 +129,7 @@ export async function runMCPResource(
|
|
|
139
129
|
|
|
140
130
|
if (match) {
|
|
141
131
|
endpoint = value
|
|
142
|
-
|
|
132
|
+
pikkuFuncId = metas[uriTemplate]?.pikkuFuncId
|
|
143
133
|
|
|
144
134
|
// Extract parameter values and create params object
|
|
145
135
|
for (let i = 0; i < paramNames.length; i++) {
|
|
@@ -158,7 +148,7 @@ export async function runMCPResource(
|
|
|
158
148
|
'resource',
|
|
159
149
|
uri,
|
|
160
150
|
endpoint,
|
|
161
|
-
|
|
151
|
+
pikkuFuncId,
|
|
162
152
|
{ ...params, mcp: { ...params.mcp, uri } } as RunMCPEndpointParams<
|
|
163
153
|
keyof CoreMCPResource
|
|
164
154
|
>
|
|
@@ -170,14 +160,13 @@ export async function runMCPTool(
|
|
|
170
160
|
params: RunMCPEndpointParams,
|
|
171
161
|
name: string
|
|
172
162
|
) {
|
|
173
|
-
const endpoint = pikkuState(null, 'mcp', 'tools').get(name)
|
|
174
163
|
const meta = pikkuState(null, 'mcp', 'toolsMeta')[name]
|
|
175
164
|
return await runMCPPikkuFunc(
|
|
176
165
|
request,
|
|
177
166
|
'tool',
|
|
178
167
|
name,
|
|
179
|
-
|
|
180
|
-
meta?.
|
|
168
|
+
undefined,
|
|
169
|
+
meta?.pikkuFuncId,
|
|
181
170
|
params
|
|
182
171
|
)
|
|
183
172
|
}
|
|
@@ -194,7 +183,7 @@ export async function runMCPPrompt(
|
|
|
194
183
|
'prompt',
|
|
195
184
|
name,
|
|
196
185
|
endpoint,
|
|
197
|
-
meta?.
|
|
186
|
+
meta?.pikkuFuncId,
|
|
198
187
|
params
|
|
199
188
|
)
|
|
200
189
|
}
|
|
@@ -206,27 +195,26 @@ async function runMCPPikkuFunc(
|
|
|
206
195
|
request: JsonRpcRequest,
|
|
207
196
|
type: 'resource' | 'tool' | 'prompt',
|
|
208
197
|
name: string,
|
|
209
|
-
mcp: CoreMCPResource |
|
|
210
|
-
|
|
198
|
+
mcp: CoreMCPResource | CoreMCPPrompt | undefined,
|
|
199
|
+
pikkuFuncId: string | undefined,
|
|
211
200
|
{ singletonServices, createWireServices, mcp: mcpWire }: RunMCPEndpointParams
|
|
212
201
|
): Promise<JsonRpcResponse> {
|
|
213
202
|
let wireServices: any
|
|
214
203
|
|
|
215
204
|
try {
|
|
216
|
-
// Validate JSON-RPC request structure
|
|
217
205
|
if (request.jsonrpc !== '2.0') {
|
|
218
206
|
throw new BadRequestError(
|
|
219
207
|
'Invalid JSON-RPC version, only supoorted version is 2.0'
|
|
220
208
|
)
|
|
221
209
|
}
|
|
222
210
|
|
|
223
|
-
if (
|
|
211
|
+
if (mcp === undefined && type !== 'tool') {
|
|
224
212
|
throw new NotFoundError(
|
|
225
213
|
`MCP '${type}' registration not found for '${name}'`
|
|
226
214
|
)
|
|
227
215
|
}
|
|
228
216
|
|
|
229
|
-
if (!
|
|
217
|
+
if (!pikkuFuncId) {
|
|
230
218
|
throw new NotFoundError(
|
|
231
219
|
`MCP '${type}' PikkuFunction Mapping not found for '${name}'`
|
|
232
220
|
)
|
|
@@ -234,12 +222,12 @@ async function runMCPPikkuFunc(
|
|
|
234
222
|
|
|
235
223
|
singletonServices.logger.debug(`Running MCP ${type}: ${name}`)
|
|
236
224
|
|
|
225
|
+
const mcpSessionService = new PikkuSessionService()
|
|
237
226
|
const wire: PikkuWire = {
|
|
238
227
|
mcp: mcpWire,
|
|
239
|
-
|
|
228
|
+
...createMiddlewareSessionWireProps(mcpSessionService),
|
|
240
229
|
}
|
|
241
230
|
|
|
242
|
-
// Get metadata for the MCP endpoint to access pre-resolved middleware
|
|
243
231
|
let meta: any
|
|
244
232
|
if (type === 'resource') {
|
|
245
233
|
meta = pikkuState(null, 'mcp', 'resourcesMeta')[name]
|
|
@@ -249,18 +237,23 @@ async function runMCPPikkuFunc(
|
|
|
249
237
|
meta = pikkuState(null, 'mcp', 'promptsMeta')[name]
|
|
250
238
|
}
|
|
251
239
|
|
|
252
|
-
|
|
240
|
+
let result = await runPikkuFunc('mcp', `${type}:${name}`, pikkuFuncId, {
|
|
253
241
|
singletonServices,
|
|
254
242
|
createWireServices,
|
|
255
243
|
data: () => request.params,
|
|
256
244
|
inheritedMiddleware: meta?.middleware,
|
|
257
|
-
wireMiddleware: mcp
|
|
245
|
+
wireMiddleware: mcp?.middleware,
|
|
258
246
|
inheritedPermissions: meta?.permissions,
|
|
259
|
-
wirePermissions: mcp
|
|
260
|
-
tags: mcp
|
|
247
|
+
wirePermissions: mcp?.permissions,
|
|
248
|
+
tags: mcp?.tags,
|
|
261
249
|
wire,
|
|
250
|
+
sessionService: mcpSessionService,
|
|
262
251
|
})
|
|
263
252
|
|
|
253
|
+
if (type === 'tool' && meta?.outputSchema !== 'MCPToolResponse') {
|
|
254
|
+
result = [{ type: 'text', text: JSON.stringify(result) }]
|
|
255
|
+
}
|
|
256
|
+
|
|
264
257
|
return {
|
|
265
258
|
id: request.id,
|
|
266
259
|
result,
|
|
@@ -297,10 +290,6 @@ async function runMCPPikkuFunc(
|
|
|
297
290
|
}
|
|
298
291
|
}
|
|
299
292
|
|
|
300
|
-
export const getMCPTools = () => {
|
|
301
|
-
return pikkuState(null, 'mcp', 'tools')
|
|
302
|
-
}
|
|
303
|
-
|
|
304
293
|
export const getMCPResources = () => {
|
|
305
294
|
return pikkuState(null, 'mcp', 'resources')
|
|
306
295
|
}
|
|
@@ -50,7 +50,7 @@ export type PikkuMCP<Tools extends string = any> = {
|
|
|
50
50
|
export type MCPResourceMeta = Record<
|
|
51
51
|
string,
|
|
52
52
|
Omit<CoreMCPResource, 'func' | 'middleware' | 'permissions'> & {
|
|
53
|
-
|
|
53
|
+
pikkuFuncId: string
|
|
54
54
|
inputSchema: string | null
|
|
55
55
|
outputSchema: string | null
|
|
56
56
|
middleware?: MiddlewareMetadata[] // Pre-resolved middleware chain (tag + explicit)
|
|
@@ -64,7 +64,7 @@ export type MCPResourceMeta = Record<
|
|
|
64
64
|
export type MCPToolMeta = Record<
|
|
65
65
|
string,
|
|
66
66
|
Omit<CoreMCPTool, 'func' | 'middleware' | 'permissions'> & {
|
|
67
|
-
|
|
67
|
+
pikkuFuncId: string
|
|
68
68
|
inputSchema: string | null
|
|
69
69
|
outputSchema: string | null
|
|
70
70
|
middleware?: MiddlewareMetadata[] // Pre-resolved middleware chain (tag + explicit)
|
|
@@ -78,7 +78,7 @@ export type MCPToolMeta = Record<
|
|
|
78
78
|
export type MCPPromptMeta = Record<
|
|
79
79
|
string,
|
|
80
80
|
Omit<CoreMCPPrompt, 'func' | 'middleware' | 'permissions'> & {
|
|
81
|
-
|
|
81
|
+
pikkuFuncId: string
|
|
82
82
|
inputSchema: string | null
|
|
83
83
|
outputSchema: string | null
|
|
84
84
|
arguments: Array<{
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export type NodeType = 'trigger' | 'action' | 'end'
|
|
2
|
+
|
|
3
|
+
export type CoreNodeConfig = {
|
|
4
|
+
displayName: string
|
|
5
|
+
category: string
|
|
6
|
+
type: NodeType
|
|
7
|
+
errorOutput?: boolean
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export type NodeMeta = {
|
|
11
|
+
name: string
|
|
12
|
+
displayName: string
|
|
13
|
+
category: string
|
|
14
|
+
type: NodeType
|
|
15
|
+
rpc: string
|
|
16
|
+
description?: string
|
|
17
|
+
errorOutput: boolean
|
|
18
|
+
inputSchemaName: string | null
|
|
19
|
+
outputSchemaName: string | null
|
|
20
|
+
tags?: string[]
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export type NodesMeta = Record<string, NodeMeta>
|