@pikku/cli 0.11.2 → 0.11.3
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/.pikku/channel/pikku-channel-types.gen.ts +63 -6
- package/.pikku/channel/pikku-channels-map.gen.d.ts +4 -4
- package/.pikku/channel/pikku-channels-meta.gen.ts +4 -2
- package/.pikku/channel/pikku-channels.gen.ts +1 -1
- package/.pikku/cli/pikku-cli-channel.ts +1 -1
- package/.pikku/cli/pikku-cli-client.gen.ts +1 -1
- package/.pikku/cli/pikku-cli-types.gen.ts +1 -1
- package/.pikku/cli/pikku-cli-wirings-meta.gen.json +2 -1
- package/.pikku/cli/pikku-cli-wirings-meta.gen.ts +2 -2
- package/.pikku/cli/pikku-cli-wirings.gen.ts +1 -1
- package/.pikku/cli/pikku-cli.gen.ts +1 -1
- package/.pikku/forge/pikku-forge-types.gen.ts +83 -0
- package/.pikku/function/pikku-function-types.gen.ts +181 -35
- package/.pikku/function/pikku-functions-meta-verbose.gen.json +1030 -0
- package/.pikku/function/pikku-functions-meta.gen.json +88 -420
- package/.pikku/function/pikku-functions-meta.gen.ts +2 -2
- package/.pikku/http/pikku-http-types.gen.ts +19 -3
- package/.pikku/http/pikku-http-wirings-map.gen.d.ts +4 -4
- package/.pikku/http/pikku-http-wirings-meta.gen.json +9 -0
- package/.pikku/http/pikku-http-wirings-meta.gen.ts +4 -10
- package/.pikku/http/pikku-http-wirings.gen.ts +1 -1
- package/.pikku/mcp/pikku-mcp-types.gen.ts +69 -17
- package/.pikku/mcp/pikku-mcp-wirings-meta.gen.ts +4 -4
- package/.pikku/mcp/pikku-mcp-wirings.gen.ts +1 -1
- package/.pikku/pikku-bootstrap.gen.ts +7 -9
- package/.pikku/pikku-services.gen.ts +3 -2
- package/.pikku/pikku-types.gen.ts +4 -1
- package/.pikku/pikku-websocket.gen.ts +1 -1
- package/.pikku/queue/pikku-queue-types.gen.ts +1 -1
- package/.pikku/queue/pikku-queue-workers-wirings-map.gen.d.ts +4 -4
- package/.pikku/queue/pikku-queue-workers-wirings-meta.gen.ts +2 -2
- package/.pikku/queue/pikku-queue-workers-wirings.gen.ts +1 -1
- package/.pikku/rpc/pikku-remote-rpc-workers.gen.ts +4 -1
- package/.pikku/rpc/pikku-rpc-wirings-map.gen.d.ts +12 -7
- package/.pikku/rpc/pikku-rpc-wirings-map.internal.gen.d.ts +15 -9
- package/.pikku/scheduler/pikku-scheduler-types.gen.ts +1 -1
- package/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.ts +2 -2
- package/.pikku/scheduler/pikku-schedulers-wirings.gen.ts +1 -1
- package/.pikku/schemas/register.gen.ts +9 -1
- package/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -1
- package/.pikku/schemas/schemas/PikkuCLIOutput.schema.json +1 -1
- package/.pikku/schemas/schemas/PikkuChannelsOutput.schema.json +1 -1
- package/.pikku/schemas/schemas/PikkuForgeNodesOutput.schema.json +1 -0
- package/.pikku/schemas/schemas/PikkuFunctionsOutput.schema.json +1 -1
- package/.pikku/schemas/schemas/PikkuHTTPOutput.schema.json +1 -1
- package/.pikku/schemas/schemas/PikkuMCPOutput.schema.json +1 -1
- package/.pikku/schemas/schemas/PikkuMiddlewareOutput.schema.json +1 -1
- package/.pikku/schemas/schemas/PikkuPackageOutput.schema.json +1 -0
- package/.pikku/schemas/schemas/PikkuPermissionsOutput.schema.json +1 -1
- package/.pikku/schemas/schemas/PikkuPublicRPCOutput.schema.json +1 -1
- package/.pikku/schemas/schemas/PikkuQueueOutput.schema.json +1 -1
- package/.pikku/schemas/schemas/PikkuRPCOutput.schema.json +1 -1
- package/.pikku/schemas/schemas/PikkuRemoteRPCOutput.schema.json +1 -1
- package/.pikku/schemas/schemas/PikkuSchedulerOutput.schema.json +1 -1
- package/.pikku/schemas/schemas/PikkuSchemasOutput.schema.json +1 -1
- package/.pikku/schemas/schemas/PikkuWorkflowOutput.schema.json +1 -1
- package/.pikku/services/config.gen.json +11 -6
- package/.pikku/services/getInspectorState.gen.json +2 -2
- package/.pikku/services/jwt.gen.json +2 -2
- package/.pikku/services/logger.gen.json +2 -2
- package/.pikku/services/queueService.gen.json +2 -2
- package/.pikku/services/schedulerService.gen.json +2 -2
- package/.pikku/services/schema.gen.json +2 -2
- package/.pikku/services/secrets.gen.json +13 -0
- package/.pikku/services/variables.gen.json +2 -2
- package/.pikku/services/workflowService.gen.json +6 -6
- package/.pikku/workflow/pikku-workflow-map.gen.d.ts +2 -36
- package/.pikku/workflow/pikku-workflow-types.gen.ts +297 -45
- package/.pikku/workflow/pikku-workflow-wirings-meta.gen.ts +5 -4
- package/.pikku/workflow/pikku-workflow-wirings.gen.ts +1 -6
- package/CHANGELOG.md +23 -1
- package/cli.schema.json +1 -1
- package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +47 -5
- package/dist/.pikku/channel/pikku-channel-types.gen.js +3 -13
- package/dist/.pikku/channel/pikku-channels-meta.gen.js +3 -2
- package/dist/.pikku/channel/pikku-channels.gen.d.ts +1 -1
- package/dist/.pikku/channel/pikku-channels.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli-channel.js +1 -1
- package/dist/.pikku/cli/pikku-cli-client.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli-client.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli-types.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli-types.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.js +2 -2
- package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.json +2 -1
- package/dist/.pikku/cli/pikku-cli-wirings.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli-wirings.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli.gen.js +1 -1
- package/dist/.pikku/forge/pikku-forge-types.gen.d.ts +72 -0
- package/dist/.pikku/forge/pikku-forge-types.gen.js +55 -0
- package/dist/.pikku/function/pikku-function-types.gen.d.ts +123 -31
- package/dist/.pikku/function/pikku-function-types.gen.js +37 -51
- package/dist/.pikku/function/pikku-functions-meta.gen.js +2 -2
- package/dist/.pikku/function/pikku-functions-meta.gen.json +88 -420
- package/dist/.pikku/http/pikku-http-types.gen.d.ts +18 -3
- package/dist/.pikku/http/pikku-http-types.gen.js +1 -1
- package/dist/.pikku/http/pikku-http-wirings-meta.gen.js +3 -10
- package/dist/.pikku/http/pikku-http-wirings-meta.gen.json +9 -0
- package/dist/.pikku/http/pikku-http-wirings.gen.d.ts +1 -1
- package/dist/.pikku/http/pikku-http-wirings.gen.js +1 -1
- package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +54 -14
- package/dist/.pikku/mcp/pikku-mcp-types.gen.js +7 -31
- package/dist/.pikku/mcp/pikku-mcp-wirings-meta.gen.js +4 -4
- package/dist/.pikku/mcp/pikku-mcp-wirings.gen.d.ts +1 -1
- package/dist/.pikku/mcp/pikku-mcp-wirings.gen.js +1 -1
- package/dist/.pikku/pikku-bootstrap.gen.d.ts +7 -9
- package/dist/.pikku/pikku-bootstrap.gen.js +7 -9
- package/dist/.pikku/pikku-services.gen.d.ts +3 -2
- package/dist/.pikku/pikku-services.gen.js +1 -0
- package/dist/.pikku/pikku-types.gen.d.ts +2 -1
- package/dist/.pikku/pikku-types.gen.js +3 -1
- package/dist/.pikku/pikku-websocket.gen.d.ts +1 -1
- package/dist/.pikku/pikku-websocket.gen.js +1 -1
- package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +1 -1
- package/dist/.pikku/queue/pikku-queue-types.gen.js +1 -1
- package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.js +2 -2
- package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.d.ts +1 -1
- package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.js +1 -1
- package/dist/.pikku/rpc/pikku-remote-rpc-workers.gen.d.ts +4 -1
- package/dist/.pikku/rpc/pikku-remote-rpc-workers.gen.js +4 -1
- package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +1 -1
- package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +1 -1
- package/dist/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.js +2 -2
- package/dist/.pikku/scheduler/pikku-schedulers-wirings.gen.d.ts +1 -1
- package/dist/.pikku/scheduler/pikku-schedulers-wirings.gen.js +1 -1
- package/dist/.pikku/schemas/register.gen.js +5 -1
- package/dist/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuCLIOutput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuChannelsOutput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuForgeNodesOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuFunctionsOutput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuHTTPOutput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuMCPOutput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuMiddlewareOutput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuPackageOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuPermissionsOutput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuPublicRPCOutput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuQueueOutput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuRPCOutput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuRemoteRPCOutput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuSchedulerOutput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuSchemasOutput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuWorkflowOutput.schema.json +1 -1
- package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +207 -37
- package/dist/.pikku/workflow/pikku-workflow-types.gen.js +104 -28
- package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +3 -3
- package/dist/.pikku/workflow/pikku-workflow-wirings.gen.d.ts +2 -6
- package/dist/.pikku/workflow/pikku-workflow-wirings.gen.js +2 -6
- package/dist/src/functions/commands/all.js +117 -79
- package/dist/src/functions/commands/bootstrap.js +2 -9
- package/dist/src/functions/runtimes/nextjs/pikku-command-nextjs.js +0 -1
- package/dist/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.js +49 -35
- package/dist/src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.js +49 -35
- package/dist/src/functions/wirings/channels/pikku-channels.js +1 -1
- package/dist/src/functions/wirings/channels/pikku-command-channels.js +18 -2
- package/dist/src/functions/wirings/channels/serialize-channel-types.js +62 -5
- package/dist/src/functions/wirings/channels/serialize-typed-channel-map.js +1 -2
- package/dist/src/functions/wirings/cli/pikku-command-cli.js +10 -2
- package/dist/src/functions/wirings/forge/pikku-command-forge-nodes.d.ts +1 -0
- package/dist/src/functions/wirings/forge/pikku-command-forge-nodes.js +90 -0
- package/dist/src/functions/wirings/forge/pikku-command-forge-types.d.ts +1 -0
- package/dist/src/functions/wirings/forge/pikku-command-forge-types.js +26 -0
- package/dist/src/functions/wirings/forge/serialize-forge-types.d.ts +4 -0
- package/dist/src/functions/wirings/forge/serialize-forge-types.js +90 -0
- package/dist/src/functions/wirings/functions/pikku-command-function-types-split.js +1 -1
- package/dist/src/functions/wirings/functions/pikku-command-function-types.js +7 -2
- package/dist/src/functions/wirings/functions/pikku-command-functions.js +33 -18
- package/dist/src/functions/wirings/functions/pikku-command-services.js +1 -1
- package/dist/src/functions/wirings/functions/pikku-function-types.js +2 -2
- package/dist/src/functions/wirings/functions/schemas.d.ts +1 -1
- package/dist/src/functions/wirings/functions/schemas.js +5 -4
- package/dist/src/functions/wirings/functions/serialize-function-imports.d.ts +3 -1
- package/dist/src/functions/wirings/functions/serialize-function-imports.js +7 -3
- package/dist/src/functions/wirings/functions/serialize-function-types.d.ts +1 -1
- package/dist/src/functions/wirings/functions/serialize-function-types.js +181 -34
- package/dist/src/functions/wirings/functions/serialize-pikku-types-hub.d.ts +1 -1
- package/dist/src/functions/wirings/functions/serialize-pikku-types-hub.js +19 -21
- package/dist/src/functions/wirings/http/openapi-spec-generator.js +1 -1
- package/dist/src/functions/wirings/http/pikku-command-http-routes.js +18 -2
- package/dist/src/functions/wirings/http/pikku-command-openapi.js +2 -2
- package/dist/src/functions/wirings/http/pikku-http-routes.js +1 -1
- package/dist/src/functions/wirings/http/serialize-http-types.js +18 -2
- package/dist/src/functions/wirings/http/serialize-typed-http-map.js +33 -8
- package/dist/src/functions/wirings/mcp/pikku-command-mcp.js +15 -6
- package/dist/src/functions/wirings/mcp/serialize-mcp-json.js +3 -2
- package/dist/src/functions/wirings/mcp/serialize-mcp-types.js +68 -16
- package/dist/src/functions/wirings/middleware/pikku-command-middleware.js +5 -2
- package/dist/src/functions/wirings/package/pikku-command-package.d.ts +1 -0
- package/dist/src/functions/wirings/package/pikku-command-package.js +58 -0
- package/dist/src/functions/wirings/package/serialize-package.d.ts +5 -0
- package/dist/src/functions/wirings/package/serialize-package.js +32 -0
- package/dist/src/functions/wirings/queue/pikku-command-queue.js +10 -2
- package/dist/src/functions/wirings/queue/pikku-queue.js +1 -9
- package/dist/src/functions/wirings/queue/serialize-queue-map.js +20 -3
- package/dist/src/functions/wirings/queue/serialize-queue-meta.js +1 -1
- package/dist/src/functions/wirings/rpc/pikku-command-rpc-map.js +4 -4
- package/dist/src/functions/wirings/rpc/pikku-command-rpc.js +1 -1
- package/dist/src/functions/wirings/rpc/serialize-remote-rpc.js +3 -0
- package/dist/src/functions/wirings/rpc/serialize-rpc-wrapper.js +1 -1
- package/dist/src/functions/wirings/rpc/serialize-typed-rpc-map.d.ts +1 -1
- package/dist/src/functions/wirings/rpc/serialize-typed-rpc-map.js +54 -8
- package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.js +10 -1
- package/dist/src/functions/wirings/scheduler/serialize-scheduler-meta.js +1 -1
- package/dist/src/functions/wirings/workflow/pikku-command-workflow.js +56 -18
- package/dist/src/functions/wirings/workflow/serialize-workflow-map.d.ts +3 -0
- package/dist/src/functions/wirings/workflow/serialize-workflow-map.js +30 -32
- package/dist/src/functions/wirings/workflow/serialize-workflow-meta.d.ts +1 -3
- package/dist/src/functions/wirings/workflow/serialize-workflow-meta.js +43 -18
- package/dist/src/functions/wirings/workflow/serialize-workflow-registration.d.ts +7 -0
- package/dist/src/functions/wirings/workflow/serialize-workflow-registration.js +53 -0
- package/dist/src/functions/wirings/workflow/serialize-workflow-types.d.ts +3 -1
- package/dist/src/functions/wirings/workflow/serialize-workflow-types.js +299 -45
- package/dist/src/functions/wirings/workflow/serialize-workflow-workers.d.ts +1 -1
- package/dist/src/functions/wirings/workflow/serialize-workflow-workers.js +14 -27
- package/dist/src/services.js +4 -1
- package/dist/src/utils/command-summary.d.ts +2 -0
- package/dist/src/utils/command-summary.js +2 -0
- package/dist/src/utils/custom-types-generator.js +13 -15
- package/dist/src/utils/generate-bootstrap-file.js +1 -1
- package/dist/src/utils/pikku-cli-config.js +37 -9
- package/dist/src/utils/schema-generator.d.ts +4 -3
- package/dist/src/utils/schema-generator.js +135 -15
- package/dist/src/utils/strip-verbose-meta.d.ts +43 -0
- package/dist/src/utils/strip-verbose-meta.js +210 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -4
- package/src/functions/commands/all.ts +144 -97
- package/src/functions/commands/bootstrap.ts +2 -10
- package/src/functions/runtimes/nextjs/pikku-command-nextjs.ts +0 -1
- package/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.ts +49 -35
- package/src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.ts +49 -35
- package/src/functions/wirings/channels/pikku-channels.ts +1 -1
- package/src/functions/wirings/channels/pikku-command-channels.ts +46 -3
- package/src/functions/wirings/channels/serialize-channel-types.ts +62 -5
- package/src/functions/wirings/channels/serialize-typed-channel-map.ts +3 -2
- package/src/functions/wirings/cli/pikku-command-cli.ts +21 -2
- package/src/functions/wirings/forge/pikku-command-forge-nodes.ts +135 -0
- package/src/functions/wirings/forge/pikku-command-forge-types.ts +38 -0
- package/src/functions/wirings/forge/serialize-forge-types.ts +94 -0
- package/src/functions/wirings/functions/pikku-command-function-types-split.ts +3 -2
- package/src/functions/wirings/functions/pikku-command-function-types.ts +17 -10
- package/src/functions/wirings/functions/pikku-command-functions.ts +47 -37
- package/src/functions/wirings/functions/pikku-command-services.ts +1 -1
- package/src/functions/wirings/functions/pikku-function-types.ts +3 -1
- package/src/functions/wirings/functions/schemas.ts +14 -4
- package/src/functions/wirings/functions/serialize-function-imports.ts +12 -3
- package/src/functions/wirings/functions/serialize-function-types.ts +182 -34
- package/src/functions/wirings/functions/serialize-pikku-types-hub.ts +27 -26
- package/src/functions/wirings/http/openapi-spec-generator.ts +1 -1
- package/src/functions/wirings/http/pikku-command-http-routes.ts +46 -2
- package/src/functions/wirings/http/pikku-command-openapi.ts +3 -2
- package/src/functions/wirings/http/pikku-http-routes.ts +1 -1
- package/src/functions/wirings/http/serialize-http-types.ts +18 -2
- package/src/functions/wirings/http/serialize-typed-http-map.ts +32 -8
- package/src/functions/wirings/mcp/pikku-command-mcp.ts +32 -10
- package/src/functions/wirings/mcp/serialize-mcp-json.ts +8 -6
- package/src/functions/wirings/mcp/serialize-mcp-types.ts +68 -16
- package/src/functions/wirings/middleware/pikku-command-middleware.ts +6 -2
- package/src/functions/wirings/package/pikku-command-package.ts +81 -0
- package/src/functions/wirings/package/serialize-package.ts +69 -0
- package/src/functions/wirings/queue/pikku-command-queue.ts +22 -2
- package/src/functions/wirings/queue/pikku-queue.ts +1 -10
- package/src/functions/wirings/queue/serialize-queue-map.ts +18 -3
- package/src/functions/wirings/queue/serialize-queue-meta.ts +1 -1
- package/src/functions/wirings/rpc/pikku-command-rpc-map.ts +7 -4
- package/src/functions/wirings/rpc/pikku-command-rpc.ts +1 -1
- package/src/functions/wirings/rpc/serialize-remote-rpc.ts +3 -0
- package/src/functions/wirings/rpc/serialize-rpc-wrapper.ts +1 -1
- package/src/functions/wirings/rpc/serialize-typed-rpc-map.ts +74 -8
- package/src/functions/wirings/scheduler/pikku-command-scheduler.ts +22 -1
- package/src/functions/wirings/scheduler/serialize-scheduler-meta.ts +1 -1
- package/src/functions/wirings/workflow/pikku-command-workflow.ts +104 -37
- package/src/functions/wirings/workflow/serialize-workflow-map.ts +38 -40
- package/src/functions/wirings/workflow/serialize-workflow-meta.ts +66 -26
- package/src/functions/wirings/workflow/serialize-workflow-registration.ts +83 -0
- package/src/functions/wirings/workflow/serialize-workflow-types.ts +299 -45
- package/src/functions/wirings/workflow/serialize-workflow-workers.ts +14 -27
- package/src/services.ts +8 -1
- package/src/utils/command-summary.ts +4 -0
- package/src/utils/custom-types-generator.ts +15 -15
- package/src/utils/generate-bootstrap-file.ts +1 -1
- package/src/utils/pikku-cli-config.ts +51 -18
- package/src/utils/schema-generator.ts +185 -22
- package/src/utils/strip-verbose-meta.ts +254 -0
- package/types/config.d.ts +37 -3
- package/.pikku/function/pikku-functions-meta.min.gen.json +0 -212
- package/.pikku/function/pikku-functions-meta.min.gen.ts +0 -6
- package/dist/.pikku/function/pikku-functions-meta.min.gen.d.ts +0 -1
- package/dist/.pikku/function/pikku-functions-meta.min.gen.js +0 -6
- package/dist/.pikku/function/pikku-functions-meta.min.gen.json +0 -212
- package/dist/src/functions/wirings/workflow/pikku-command-workflow-map.d.ts +0 -1
- package/dist/src/functions/wirings/workflow/pikku-command-workflow-map.js +0 -12
- package/dist/src/functions/wirings/workflow/pikku-command-workflow-types.d.ts +0 -1
- package/dist/src/functions/wirings/workflow/pikku-command-workflow-types.js +0 -13
- package/dist/src/functions/wirings/workflow/serialize-workflow-wirings.d.ts +0 -8
- package/dist/src/functions/wirings/workflow/serialize-workflow-wirings.js +0 -30
- package/src/functions/wirings/workflow/pikku-command-workflow-map.ts +0 -24
- package/src/functions/wirings/workflow/pikku-command-workflow-types.ts +0 -29
- package/src/functions/wirings/workflow/serialize-workflow-wirings.ts +0 -47
- /package/.pikku/{workflow/pikku-workflow-wirings-meta.gen.json → channel/pikku-channels-meta.gen.json} +0 -0
- /package/dist/.pikku/{workflow/pikku-workflow-wirings-meta.gen.json → channel/pikku-channels-meta.gen.json} +0 -0
|
@@ -10,13 +10,15 @@ export const serializeFunctionTypes = (
|
|
|
10
10
|
wireServicesTypeName: string,
|
|
11
11
|
rpcMapTypeImport: string,
|
|
12
12
|
requiredServicesTypeImport: string,
|
|
13
|
-
configTypeImport: string
|
|
13
|
+
configTypeImport: string,
|
|
14
|
+
packageName?: string
|
|
14
15
|
) => {
|
|
16
|
+
const packageNameValue = packageName ? `'${packageName}'` : 'null'
|
|
15
17
|
return `/**
|
|
16
18
|
* Core function, middleware, and permission types for all wirings
|
|
17
19
|
*/
|
|
18
20
|
|
|
19
|
-
import { CorePikkuFunctionConfig, CorePikkuPermission, CorePikkuMiddleware, CorePermissionGroup, addMiddleware as addMiddlewareCore, addPermission as addPermissionCore, PikkuWire, PickRequired } from '@pikku/core'
|
|
21
|
+
import { CorePikkuFunctionConfig, CorePikkuPermission, CorePikkuMiddleware, CorePermissionGroup, addMiddleware as addMiddlewareCore, addPermission as addPermissionCore, PikkuWire, PickRequired, ZodLike, CreateWireServices } from '@pikku/core'
|
|
20
22
|
import { CorePikkuFunction, CorePikkuFunctionSessionless } from '@pikku/core/function'
|
|
21
23
|
|
|
22
24
|
${userSessionTypeImport}
|
|
@@ -218,6 +220,11 @@ export type PikkuFunction<
|
|
|
218
220
|
PickRequired<PikkuWire<In, Out, true, Session, TypedPikkuRPC, null, any>, RequiredWires>
|
|
219
221
|
>
|
|
220
222
|
|
|
223
|
+
/**
|
|
224
|
+
* Helper type to infer the output type from a Zod schema
|
|
225
|
+
*/
|
|
226
|
+
export type InferZodOutput<T> = T extends ZodLike<infer U> ? U : never
|
|
227
|
+
|
|
221
228
|
/**
|
|
222
229
|
* Configuration object for Pikku functions with optional middleware, permissions, tags, and documentation.
|
|
223
230
|
* This type wraps CorePikkuFunctionConfig with the user's custom types.
|
|
@@ -230,64 +237,166 @@ export type PikkuFunctionConfig<
|
|
|
230
237
|
In = unknown,
|
|
231
238
|
Out = unknown,
|
|
232
239
|
RequiredWires extends keyof PikkuWire = never,
|
|
233
|
-
PikkuFunc extends PikkuFunction<In, Out, RequiredWires> | PikkuFunctionSessionless<In, Out, RequiredWires> = PikkuFunction<In, Out, RequiredWires> | PikkuFunctionSessionless<In, Out, RequiredWires
|
|
234
|
-
|
|
240
|
+
PikkuFunc extends PikkuFunction<In, Out, RequiredWires> | PikkuFunctionSessionless<In, Out, RequiredWires> = PikkuFunction<In, Out, RequiredWires> | PikkuFunctionSessionless<In, Out, RequiredWires>,
|
|
241
|
+
InputSchema extends ZodLike | undefined = undefined,
|
|
242
|
+
OutputSchema extends ZodLike | undefined = undefined
|
|
243
|
+
> = CorePikkuFunctionConfig<PikkuFunc, PikkuPermission<In>, PikkuMiddleware, InputSchema, OutputSchema>
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* Configuration object for Pikku functions with Zod schema validation.
|
|
247
|
+
* Use this when you want to define input/output schemas using Zod.
|
|
248
|
+
* Types are automatically inferred from the schemas.
|
|
249
|
+
*/
|
|
250
|
+
export type PikkuFunctionConfigWithSchema<
|
|
251
|
+
InputSchema extends ZodLike,
|
|
252
|
+
OutputSchema extends ZodLike | undefined = undefined,
|
|
253
|
+
RequiredWires extends keyof PikkuWire = never
|
|
254
|
+
> = {
|
|
255
|
+
name?: string
|
|
256
|
+
tags?: string[]
|
|
257
|
+
expose?: boolean
|
|
258
|
+
internal?: boolean
|
|
259
|
+
func: PikkuFunction<
|
|
260
|
+
InferZodOutput<InputSchema>,
|
|
261
|
+
OutputSchema extends ZodLike ? InferZodOutput<OutputSchema> : unknown,
|
|
262
|
+
RequiredWires
|
|
263
|
+
> | PikkuFunctionSessionless<
|
|
264
|
+
InferZodOutput<InputSchema>,
|
|
265
|
+
OutputSchema extends ZodLike ? InferZodOutput<OutputSchema> : unknown,
|
|
266
|
+
RequiredWires
|
|
267
|
+
>
|
|
268
|
+
auth?: boolean
|
|
269
|
+
permissions?: CorePermissionGroup<PikkuPermission<InferZodOutput<InputSchema>>>
|
|
270
|
+
middleware?: PikkuMiddleware[]
|
|
271
|
+
input: InputSchema
|
|
272
|
+
output?: OutputSchema
|
|
273
|
+
}
|
|
235
274
|
|
|
236
275
|
/**
|
|
237
276
|
* Creates a Pikku function that can be either session-aware or sessionless.
|
|
238
277
|
* This is the main function wrapper for creating API endpoints.
|
|
239
278
|
*
|
|
240
|
-
*
|
|
241
|
-
*
|
|
279
|
+
* Supports two patterns:
|
|
280
|
+
* 1. Generic types: \`pikkuFunc<Input, Output>({ func: ... })\`
|
|
281
|
+
* 2. Zod schemas: \`pikkuFunc({ input: z.object(...), output: z.object(...), func: ... })\`
|
|
282
|
+
*
|
|
283
|
+
* @template In - Input type for the function (inferred from schema if provided)
|
|
284
|
+
* @template Out - Output type for the function (inferred from schema if provided)
|
|
242
285
|
* @param func - Function definition, either direct function or configuration object
|
|
243
286
|
* @returns The normalized configuration object
|
|
244
287
|
*
|
|
245
288
|
* @example
|
|
246
|
-
*
|
|
247
|
-
*
|
|
248
|
-
*
|
|
249
|
-
*
|
|
250
|
-
* logger.info('Creating user', input.name)
|
|
289
|
+
* \`\`\`typescript
|
|
290
|
+
* // Pattern 1: Using generic types
|
|
291
|
+
* const createUser = pikkuFunc<{name: string, email: string}, {id: number}>({
|
|
292
|
+
* func: async ({db}, input) => {
|
|
251
293
|
* const user = await db.users.create(input)
|
|
252
|
-
* return {id: user.id
|
|
253
|
-
* }
|
|
254
|
-
* auth: true
|
|
294
|
+
* return { id: user.id }
|
|
295
|
+
* }
|
|
255
296
|
* })
|
|
256
|
-
*
|
|
297
|
+
*
|
|
298
|
+
* // Pattern 2: Using Zod schemas (types inferred automatically)
|
|
299
|
+
* const createUserInput = z.object({ name: z.string(), email: z.string() })
|
|
300
|
+
* const createUserOutput = z.object({ id: z.number() })
|
|
301
|
+
*
|
|
302
|
+
* const createUser = pikkuFunc({
|
|
303
|
+
* input: createUserInput,
|
|
304
|
+
* output: createUserOutput,
|
|
305
|
+
* func: async ({db}, input) => {
|
|
306
|
+
* // input is typed as { name: string, email: string }
|
|
307
|
+
* const user = await db.users.create(input)
|
|
308
|
+
* return { id: user.id } // must match output schema
|
|
309
|
+
* }
|
|
310
|
+
* })
|
|
311
|
+
* \`\`\`
|
|
257
312
|
*/
|
|
258
|
-
export
|
|
313
|
+
export function pikkuFunc<
|
|
314
|
+
InputSchema extends ZodLike,
|
|
315
|
+
OutputSchema extends ZodLike | undefined = undefined
|
|
316
|
+
>(
|
|
317
|
+
config: PikkuFunctionConfigWithSchema<InputSchema, OutputSchema, 'session' | 'rpc'>
|
|
318
|
+
): PikkuFunctionConfig<InferZodOutput<InputSchema>, OutputSchema extends ZodLike ? InferZodOutput<OutputSchema> : unknown, 'session' | 'rpc'>
|
|
319
|
+
export function pikkuFunc<In, Out = unknown>(
|
|
259
320
|
func:
|
|
260
321
|
| PikkuFunction<In, Out, 'session' | 'rpc'>
|
|
261
322
|
| PikkuFunctionConfig<In, Out, 'session' | 'rpc'>
|
|
262
|
-
)
|
|
323
|
+
): PikkuFunctionConfig<In, Out, 'session' | 'rpc'>
|
|
324
|
+
export function pikkuFunc(func: any) {
|
|
263
325
|
return typeof func === 'function' ? { func } : func
|
|
264
326
|
}
|
|
265
327
|
|
|
328
|
+
/**
|
|
329
|
+
* Configuration object for sessionless Pikku functions with Zod schema validation.
|
|
330
|
+
*/
|
|
331
|
+
export type PikkuFunctionSessionlessConfigWithSchema<
|
|
332
|
+
InputSchema extends ZodLike,
|
|
333
|
+
OutputSchema extends ZodLike | undefined = undefined,
|
|
334
|
+
RequiredWires extends keyof PikkuWire = never
|
|
335
|
+
> = {
|
|
336
|
+
name?: string
|
|
337
|
+
description?: string
|
|
338
|
+
tags?: string[]
|
|
339
|
+
expose?: boolean
|
|
340
|
+
internal?: boolean
|
|
341
|
+
func: PikkuFunctionSessionless<
|
|
342
|
+
InferZodOutput<InputSchema>,
|
|
343
|
+
OutputSchema extends ZodLike ? InferZodOutput<OutputSchema> : unknown,
|
|
344
|
+
RequiredWires
|
|
345
|
+
>
|
|
346
|
+
auth?: boolean
|
|
347
|
+
permissions?: CorePermissionGroup<PikkuPermission<InferZodOutput<InputSchema>>>
|
|
348
|
+
middleware?: PikkuMiddleware[]
|
|
349
|
+
input: InputSchema
|
|
350
|
+
output?: OutputSchema
|
|
351
|
+
}
|
|
352
|
+
|
|
266
353
|
/**
|
|
267
354
|
* Creates a sessionless Pikku function that doesn't require user authentication.
|
|
268
355
|
* Use this for public endpoints, webhooks, or background tasks.
|
|
269
356
|
*
|
|
270
|
-
*
|
|
271
|
-
*
|
|
357
|
+
* Supports two patterns:
|
|
358
|
+
* 1. Generic types: \`pikkuSessionlessFunc<Input, Output>({ func: ... })\`
|
|
359
|
+
* 2. Zod schemas: \`pikkuSessionlessFunc({ input: z.object(...), func: ... })\`
|
|
360
|
+
*
|
|
361
|
+
* @template In - Input type for the function (inferred from schema if provided)
|
|
362
|
+
* @template Out - Output type for the function (inferred from schema if provided)
|
|
272
363
|
* @param func - Function definition, either direct function or configuration object
|
|
273
364
|
* @returns The normalized configuration object
|
|
274
365
|
*
|
|
275
366
|
* @example
|
|
276
|
-
*
|
|
277
|
-
*
|
|
278
|
-
*
|
|
279
|
-
*
|
|
280
|
-
* return {status: 'healthy'
|
|
281
|
-
* }
|
|
282
|
-
*
|
|
367
|
+
* \`\`\`typescript
|
|
368
|
+
* // Pattern 1: Using generic types
|
|
369
|
+
* const healthCheck = pikkuSessionlessFunc<void, {status: string}>({
|
|
370
|
+
* func: async ({logger}) => {
|
|
371
|
+
* return { status: 'healthy' }
|
|
372
|
+
* }
|
|
373
|
+
* })
|
|
374
|
+
*
|
|
375
|
+
* // Pattern 2: Using Zod schemas
|
|
376
|
+
* const greetInput = z.object({ name: z.string() })
|
|
377
|
+
* const greetOutput = z.object({ message: z.string() })
|
|
378
|
+
*
|
|
379
|
+
* const greet = pikkuSessionlessFunc({
|
|
380
|
+
* input: greetInput,
|
|
381
|
+
* output: greetOutput,
|
|
382
|
+
* func: async (_services, { name }) => {
|
|
383
|
+
* return { message: \`Hello, \${name}!\` }
|
|
384
|
+
* }
|
|
283
385
|
* })
|
|
284
|
-
*
|
|
386
|
+
* \`\`\`
|
|
285
387
|
*/
|
|
286
|
-
export
|
|
388
|
+
export function pikkuSessionlessFunc<
|
|
389
|
+
InputSchema extends ZodLike,
|
|
390
|
+
OutputSchema extends ZodLike | undefined = undefined
|
|
391
|
+
>(
|
|
392
|
+
config: PikkuFunctionSessionlessConfigWithSchema<InputSchema, OutputSchema, 'session' | 'rpc'>
|
|
393
|
+
): PikkuFunctionConfig<InferZodOutput<InputSchema>, OutputSchema extends ZodLike ? InferZodOutput<OutputSchema> : unknown, 'session' | 'rpc'>
|
|
394
|
+
export function pikkuSessionlessFunc<In, Out = unknown>(
|
|
287
395
|
func:
|
|
288
396
|
| PikkuFunctionSessionless<In, Out, 'session' | 'rpc'>
|
|
289
397
|
| PikkuFunctionConfig<In, Out, 'session' | 'rpc'>
|
|
290
|
-
)
|
|
398
|
+
): PikkuFunctionConfig<In, Out, 'session' | 'rpc'>
|
|
399
|
+
export function pikkuSessionlessFunc(func: any) {
|
|
291
400
|
return typeof func === 'function' ? { func } : func
|
|
292
401
|
}
|
|
293
402
|
|
|
@@ -299,13 +408,13 @@ export const pikkuSessionlessFunc = <In, Out = unknown>(
|
|
|
299
408
|
* @returns The normalized configuration object
|
|
300
409
|
*
|
|
301
410
|
* @example
|
|
302
|
-
*
|
|
411
|
+
* \`\`\`typescript
|
|
303
412
|
* const cleanupTempFiles = pikkuVoidFunc(async ({fileSystem, logger}) => {
|
|
304
413
|
* logger.info('Starting cleanup of temporary files')
|
|
305
414
|
* await fileSystem.deleteDirectory('/tmp/uploads')
|
|
306
415
|
* logger.info('Cleanup completed')
|
|
307
416
|
* })
|
|
308
|
-
*
|
|
417
|
+
* \`\`\`
|
|
309
418
|
*/
|
|
310
419
|
export const pikkuVoidFunc = (
|
|
311
420
|
func:
|
|
@@ -315,6 +424,45 @@ export const pikkuVoidFunc = (
|
|
|
315
424
|
return typeof func === 'function' ? { func } : func
|
|
316
425
|
}
|
|
317
426
|
|
|
427
|
+
/**
|
|
428
|
+
* Creates a wrapper function for external package functions that are exposed via RPC.
|
|
429
|
+
* This allows you to wire external functions to any wiring type (HTTP, queue, etc.)
|
|
430
|
+
* without type compatibility issues.
|
|
431
|
+
*
|
|
432
|
+
* @template Name - The RPC method name (must be a key in FlattenedRPCMap)
|
|
433
|
+
* @param rpcName - The name of the RPC method to invoke
|
|
434
|
+
* @returns A Pikku function that proxies calls to the external RPC method
|
|
435
|
+
*
|
|
436
|
+
* @example
|
|
437
|
+
* \`\`\`typescript
|
|
438
|
+
* // Wire an external function via HTTP
|
|
439
|
+
* wireHTTP({
|
|
440
|
+
* auth: false,
|
|
441
|
+
* method: 'get',
|
|
442
|
+
* route: '/external/hello',
|
|
443
|
+
* func: external('ext:hello'),
|
|
444
|
+
* tags: ['external'],
|
|
445
|
+
* })
|
|
446
|
+
* \`\`\`
|
|
447
|
+
*/
|
|
448
|
+
export const external = <Name extends keyof FlattenedRPCMap>(
|
|
449
|
+
rpcName: Name
|
|
450
|
+
): PikkuFunctionConfig<
|
|
451
|
+
FlattenedRPCMap[Name]['input'],
|
|
452
|
+
FlattenedRPCMap[Name]['output'],
|
|
453
|
+
'session' | 'rpc'
|
|
454
|
+
> => {
|
|
455
|
+
return {
|
|
456
|
+
func: (async (_services: any, data: any, { rpc }: any) => {
|
|
457
|
+
return rpc.invoke(rpcName, data)
|
|
458
|
+
}) as any
|
|
459
|
+
} as PikkuFunctionConfig<
|
|
460
|
+
FlattenedRPCMap[Name]['input'],
|
|
461
|
+
FlattenedRPCMap[Name]['output'],
|
|
462
|
+
'session' | 'rpc'
|
|
463
|
+
>
|
|
464
|
+
}
|
|
465
|
+
|
|
318
466
|
/**
|
|
319
467
|
* Creates a Pikku config factory.
|
|
320
468
|
* Use this to define your application's configuration factory.
|
|
@@ -380,7 +528,7 @@ export const pikkuWireServices = (
|
|
|
380
528
|
services: SingletonServices,
|
|
381
529
|
wire: any
|
|
382
530
|
) => Promise<RequiredWireServices>
|
|
383
|
-
) => func
|
|
531
|
+
): CreateWireServices => func as unknown as CreateWireServices
|
|
384
532
|
|
|
385
533
|
/**
|
|
386
534
|
* Adds global middleware for a specific tag.
|
|
@@ -406,7 +554,7 @@ export const pikkuWireServices = (
|
|
|
406
554
|
* \`\`\`
|
|
407
555
|
*/
|
|
408
556
|
export const addMiddleware = (tag: string, middleware: PikkuMiddleware[]) => {
|
|
409
|
-
addMiddlewareCore(tag, middleware as any)
|
|
557
|
+
addMiddlewareCore(tag, middleware as any, ${packageNameValue})
|
|
410
558
|
}
|
|
411
559
|
|
|
412
560
|
/**
|
|
@@ -433,7 +581,7 @@ export const addMiddleware = (tag: string, middleware: PikkuMiddleware[]) => {
|
|
|
433
581
|
* \`\`\`
|
|
434
582
|
*/
|
|
435
583
|
export const addPermission = <In = unknown>(tag: string, permissions: CorePermissionGroup<PikkuPermission<In>> | PikkuPermission<In>[]) => {
|
|
436
|
-
addPermissionCore(tag, permissions as any)
|
|
584
|
+
addPermissionCore(tag, permissions as any, ${packageNameValue})
|
|
437
585
|
}
|
|
438
586
|
`
|
|
439
587
|
}
|
|
@@ -3,36 +3,37 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const serializePikkuTypesHub = (
|
|
5
5
|
functionTypesImportPath: string,
|
|
6
|
-
httpTypesImportPath: string,
|
|
7
|
-
channelTypesImportPath: string,
|
|
8
|
-
schedulerTypesImportPath: string,
|
|
9
|
-
queueTypesImportPath: string,
|
|
10
|
-
mcpTypesImportPath: string,
|
|
11
|
-
cliTypesImportPath: string
|
|
6
|
+
httpTypesImportPath: string | null,
|
|
7
|
+
channelTypesImportPath: string | null,
|
|
8
|
+
schedulerTypesImportPath: string | null,
|
|
9
|
+
queueTypesImportPath: string | null,
|
|
10
|
+
mcpTypesImportPath: string | null,
|
|
11
|
+
cliTypesImportPath: string | null,
|
|
12
|
+
forgeTypesImportPath: string | null
|
|
12
13
|
) => {
|
|
14
|
+
const exports = [
|
|
15
|
+
{
|
|
16
|
+
comment: 'Core function, middleware, and permission types',
|
|
17
|
+
path: functionTypesImportPath,
|
|
18
|
+
},
|
|
19
|
+
{ comment: 'HTTP wiring types', path: httpTypesImportPath },
|
|
20
|
+
{ comment: 'Channel wiring types', path: channelTypesImportPath },
|
|
21
|
+
{ comment: 'Scheduler wiring types', path: schedulerTypesImportPath },
|
|
22
|
+
{ comment: 'Queue wiring types', path: queueTypesImportPath },
|
|
23
|
+
{ comment: 'MCP wiring types', path: mcpTypesImportPath },
|
|
24
|
+
{ comment: 'CLI wiring types', path: cliTypesImportPath },
|
|
25
|
+
{ comment: 'Forge wiring types', path: forgeTypesImportPath },
|
|
26
|
+
]
|
|
27
|
+
|
|
28
|
+
const exportStatements = exports
|
|
29
|
+
.filter((e) => e.path)
|
|
30
|
+
.map((e) => `// ${e.comment}\nexport * from '${e.path}'`)
|
|
31
|
+
.join('\n\n')
|
|
32
|
+
|
|
13
33
|
return `/**
|
|
14
34
|
* Main type export hub - re-exports all wiring-specific types
|
|
15
35
|
*/
|
|
16
36
|
|
|
17
|
-
|
|
18
|
-
export * from '${functionTypesImportPath}'
|
|
19
|
-
|
|
20
|
-
// HTTP wiring types
|
|
21
|
-
export * from '${httpTypesImportPath}'
|
|
22
|
-
|
|
23
|
-
// Channel wiring types
|
|
24
|
-
export * from '${channelTypesImportPath}'
|
|
25
|
-
|
|
26
|
-
// Scheduler wiring types
|
|
27
|
-
export * from '${schedulerTypesImportPath}'
|
|
28
|
-
|
|
29
|
-
// Queue wiring types
|
|
30
|
-
export * from '${queueTypesImportPath}'
|
|
31
|
-
|
|
32
|
-
// MCP wiring types
|
|
33
|
-
export * from '${mcpTypesImportPath}'
|
|
34
|
-
|
|
35
|
-
// CLI wiring types
|
|
36
|
-
export * from '${cliTypesImportPath}'
|
|
37
|
+
${exportStatements}
|
|
37
38
|
`
|
|
38
39
|
}
|
|
@@ -68,7 +68,7 @@ export interface OpenAPISpecInfo {
|
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
const getErrorResponseForConstructorName = (constructorName: string) => {
|
|
71
|
-
const errors = Array.from(pikkuState('misc', 'errors').entries())
|
|
71
|
+
const errors = Array.from(pikkuState(null, 'misc', 'errors').entries())
|
|
72
72
|
const foundError = errors.find(([e]) => e.name === constructorName)
|
|
73
73
|
if (foundError) {
|
|
74
74
|
return foundError[1]
|
|
@@ -2,11 +2,22 @@ import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js'
|
|
|
2
2
|
import { serializeFileImports } from '../../../utils/file-imports-serializer.js'
|
|
3
3
|
import { writeFileInDir } from '../../../utils/file-writer.js'
|
|
4
4
|
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js'
|
|
5
|
+
import { getFileImportRelativePath } from '../../../utils/file-import-path.js'
|
|
6
|
+
import {
|
|
7
|
+
stripVerboseFields,
|
|
8
|
+
hasVerboseFields,
|
|
9
|
+
} from '../../../utils/strip-verbose-meta.js'
|
|
5
10
|
|
|
6
11
|
export const pikkuHTTP: any = pikkuSessionlessFunc<void, boolean | undefined>({
|
|
7
12
|
func: async ({ logger, config, getInspectorState }) => {
|
|
8
13
|
const visitState = await getInspectorState()
|
|
9
|
-
const {
|
|
14
|
+
const {
|
|
15
|
+
httpWiringsFile,
|
|
16
|
+
httpWiringMetaFile,
|
|
17
|
+
httpWiringMetaJsonFile,
|
|
18
|
+
packageMappings,
|
|
19
|
+
schema,
|
|
20
|
+
} = config
|
|
10
21
|
const { http } = visitState
|
|
11
22
|
|
|
12
23
|
await writeFileInDir(
|
|
@@ -19,10 +30,43 @@ export const pikkuHTTP: any = pikkuSessionlessFunc<void, boolean | undefined>({
|
|
|
19
30
|
packageMappings
|
|
20
31
|
)
|
|
21
32
|
)
|
|
33
|
+
|
|
34
|
+
// Write minimal JSON (runtime-only fields)
|
|
35
|
+
const minimalMeta = stripVerboseFields(http.meta)
|
|
36
|
+
await writeFileInDir(
|
|
37
|
+
logger,
|
|
38
|
+
httpWiringMetaJsonFile,
|
|
39
|
+
JSON.stringify(minimalMeta, null, 2)
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
// Write verbose JSON only if it has additional fields
|
|
43
|
+
if (hasVerboseFields(http.meta)) {
|
|
44
|
+
const verbosePath = httpWiringMetaJsonFile.replace(
|
|
45
|
+
/\.gen\.json$/,
|
|
46
|
+
'-verbose.gen.json'
|
|
47
|
+
)
|
|
48
|
+
await writeFileInDir(
|
|
49
|
+
logger,
|
|
50
|
+
verbosePath,
|
|
51
|
+
JSON.stringify(http.meta, null, 2)
|
|
52
|
+
)
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Generate TypeScript file that imports the minimal JSON
|
|
56
|
+
const jsonImportPath = getFileImportRelativePath(
|
|
57
|
+
httpWiringMetaFile,
|
|
58
|
+
httpWiringMetaJsonFile,
|
|
59
|
+
packageMappings
|
|
60
|
+
)
|
|
61
|
+
const supportsImportAttributes = schema?.supportsImportAttributes ?? false
|
|
62
|
+
const importStatement = supportsImportAttributes
|
|
63
|
+
? `import metaData from '${jsonImportPath}' with { type: 'json' }`
|
|
64
|
+
: `import metaData from '${jsonImportPath}'`
|
|
65
|
+
|
|
22
66
|
await writeFileInDir(
|
|
23
67
|
logger,
|
|
24
68
|
httpWiringMetaFile,
|
|
25
|
-
`import { pikkuState } from '@pikku/core'\npikkuState('http', 'meta',
|
|
69
|
+
`import { pikkuState } from '@pikku/core'\nimport type { HTTPWiringsMeta } from '@pikku/core/http'\n${importStatement}\npikkuState(null, 'http', 'meta', metaData as HTTPWiringsMeta)`
|
|
26
70
|
)
|
|
27
71
|
|
|
28
72
|
return true
|
|
@@ -19,7 +19,7 @@ export const pikkuOpenAPI: any = pikkuSessionlessFunc<void, void>({
|
|
|
19
19
|
return
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
const { http, functions } = await getInspectorState()
|
|
22
|
+
const { http, functions, zodLookup } = await getInspectorState()
|
|
23
23
|
|
|
24
24
|
const schemas = await generateSchemas(
|
|
25
25
|
logger,
|
|
@@ -28,7 +28,8 @@ export const pikkuOpenAPI: any = pikkuSessionlessFunc<void, void>({
|
|
|
28
28
|
functions.meta,
|
|
29
29
|
http.meta,
|
|
30
30
|
schemasFromTypes,
|
|
31
|
-
config.schema?.additionalProperties
|
|
31
|
+
config.schema?.additionalProperties,
|
|
32
|
+
zodLookup
|
|
32
33
|
)
|
|
33
34
|
const openAPISpec = await generateOpenAPISpec(
|
|
34
35
|
logger,
|
|
@@ -47,7 +47,7 @@ export const pikkuHTTP: any = pikkuSessionlessFunc<void, boolean>({
|
|
|
47
47
|
await writeFileInDir(
|
|
48
48
|
logger,
|
|
49
49
|
httpWiringMetaFile,
|
|
50
|
-
`import { pikkuState, HTTPWiringsMeta } from '@pikku/core'\n${importStatement}\npikkuState('http', 'meta', metaData as HTTPWiringsMeta)`
|
|
50
|
+
`import { pikkuState, HTTPWiringsMeta } from '@pikku/core'\n${importStatement}\npikkuState(null, 'http', 'meta', metaData as HTTPWiringsMeta)`
|
|
51
51
|
)
|
|
52
52
|
|
|
53
53
|
return true
|
|
@@ -8,7 +8,7 @@ export const serializeHTTPTypes = (functionTypesImportPath: string) => {
|
|
|
8
8
|
|
|
9
9
|
import { AssertHTTPWiringParams, wireHTTP as wireHTTPCore, addHTTPMiddleware as addHTTPMiddlewareCore, addHTTPPermission as addHTTPPermissionCore } from '@pikku/core/http'
|
|
10
10
|
import type { PikkuFunction, PikkuFunctionSessionless, PikkuPermission, PikkuMiddleware } from '${functionTypesImportPath}'
|
|
11
|
-
import type { CoreHTTPFunctionWiring } from '@pikku/core/http'
|
|
11
|
+
import type { CoreHTTPFunctionWiring, HTTPMethod } from '@pikku/core/http'
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Type definition for HTTP API wirings with type-safe path parameters.
|
|
@@ -20,6 +20,22 @@ import type { CoreHTTPFunctionWiring } from '@pikku/core/http'
|
|
|
20
20
|
*/
|
|
21
21
|
type HTTPWiring<In, Out, Route extends string> = CoreHTTPFunctionWiring<In, Out, Route, PikkuFunction<In, Out, 'rpc' | 'session'>, PikkuFunctionSessionless<In, Out, 'rpc' | 'session'>, PikkuPermission<In>, PikkuMiddleware>
|
|
22
22
|
|
|
23
|
+
/**
|
|
24
|
+
* HTTP wiring for workflow triggers (no function needed)
|
|
25
|
+
*/
|
|
26
|
+
type HTTPWorkflowWiring<Route extends string> = {
|
|
27
|
+
route: Route
|
|
28
|
+
method: HTTPMethod
|
|
29
|
+
workflow: true
|
|
30
|
+
func?: undefined
|
|
31
|
+
permissions?: undefined
|
|
32
|
+
auth?: undefined
|
|
33
|
+
tags?: undefined
|
|
34
|
+
middleware?: undefined
|
|
35
|
+
returnsJSON?: undefined
|
|
36
|
+
sse?: boolean
|
|
37
|
+
}
|
|
38
|
+
|
|
23
39
|
/**
|
|
24
40
|
* Registers an HTTP wiring with the Pikku framework.
|
|
25
41
|
*
|
|
@@ -29,7 +45,7 @@ type HTTPWiring<In, Out, Route extends string> = CoreHTTPFunctionWiring<In, Out,
|
|
|
29
45
|
* @param httpWiring - HTTP wiring definition with handler, method, and optional middleware
|
|
30
46
|
*/
|
|
31
47
|
export const wireHTTP = <In, Out, Route extends string>(
|
|
32
|
-
httpWiring: HTTPWiring<In, Out, Route> & AssertHTTPWiringParams<In, Route>
|
|
48
|
+
httpWiring: (HTTPWiring<In, Out, Route> & AssertHTTPWiringParams<In, Route>) | HTTPWorkflowWiring<Route>
|
|
33
49
|
) => {
|
|
34
50
|
wireHTTPCore(httpWiring as any)
|
|
35
51
|
}
|
|
@@ -32,7 +32,7 @@ export const serializeTypedHTTPWiringsMap = (
|
|
|
32
32
|
return `/**
|
|
33
33
|
* This provides the structure needed for typescript to be aware of routes and their return types
|
|
34
34
|
*/
|
|
35
|
-
|
|
35
|
+
|
|
36
36
|
${serializedImportMap}
|
|
37
37
|
${serializedCustomTypes}
|
|
38
38
|
${serializedMetaTypes}
|
|
@@ -70,6 +70,12 @@ function generateHTTPWirings(
|
|
|
70
70
|
for (const methods of Object.values(routesMeta)) {
|
|
71
71
|
for (const meta of Object.values(methods)) {
|
|
72
72
|
const { route, method, pikkuFuncName } = meta
|
|
73
|
+
|
|
74
|
+
// Skip workflow-triggered routes (they don't have a function)
|
|
75
|
+
if (meta.workflow) {
|
|
76
|
+
continue
|
|
77
|
+
}
|
|
78
|
+
|
|
73
79
|
const functionMeta = functionsMeta[pikkuFuncName]
|
|
74
80
|
if (!functionMeta) {
|
|
75
81
|
throw new Error(
|
|
@@ -79,16 +85,28 @@ function generateHTTPWirings(
|
|
|
79
85
|
const input = functionMeta.inputs ? functionMeta.inputs[0] : undefined
|
|
80
86
|
const output = functionMeta.outputs ? functionMeta.outputs[0] : undefined
|
|
81
87
|
|
|
82
|
-
// Initialize the route entry if it doesn't exist
|
|
83
88
|
if (!routesObj[route]) {
|
|
84
89
|
routesObj[route] = {}
|
|
85
90
|
}
|
|
86
91
|
|
|
87
|
-
//
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
+
// For zod-derived schemas, the type might not be in typesMap, so use the schema name directly
|
|
93
|
+
let inputType = 'null'
|
|
94
|
+
if (input) {
|
|
95
|
+
try {
|
|
96
|
+
inputType = typesMap.getTypeMeta(input).uniqueName
|
|
97
|
+
} catch {
|
|
98
|
+
inputType = input
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
let outputType = 'null'
|
|
102
|
+
if (output) {
|
|
103
|
+
try {
|
|
104
|
+
outputType = typesMap.getTypeMeta(output).uniqueName
|
|
105
|
+
} catch {
|
|
106
|
+
// Zod-derived schema - use the schema name directly
|
|
107
|
+
outputType = output
|
|
108
|
+
}
|
|
109
|
+
}
|
|
92
110
|
|
|
93
111
|
requiredTypes.add(inputType)
|
|
94
112
|
requiredTypes.add(outputType)
|
|
@@ -121,7 +139,13 @@ const generateMetaTypes = (metaTypes: MetaInputTypes, typesMap: TypesMap) => {
|
|
|
121
139
|
const nameToTypeMap = Array.from(metaTypes.entries()).reduce<
|
|
122
140
|
Map<string, string>
|
|
123
141
|
>((result, [_name, { query, body, params }]) => {
|
|
124
|
-
|
|
142
|
+
let uniqueName: string
|
|
143
|
+
try {
|
|
144
|
+
uniqueName = typesMap.getTypeMeta(_name).uniqueName
|
|
145
|
+
} catch {
|
|
146
|
+
// Zod-derived schema - use the name directly
|
|
147
|
+
uniqueName = _name
|
|
148
|
+
}
|
|
125
149
|
const queryType =
|
|
126
150
|
query && query.length > 0
|
|
127
151
|
? `Pick<${uniqueName}, '${query?.join("' | '")}'>`
|
|
@@ -5,6 +5,10 @@ import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-
|
|
|
5
5
|
import { readFile } from 'fs/promises'
|
|
6
6
|
import { join } from 'path'
|
|
7
7
|
import { getFileImportRelativePath } from '../../../utils/file-import-path.js'
|
|
8
|
+
import {
|
|
9
|
+
stripVerboseFields,
|
|
10
|
+
hasVerboseFields,
|
|
11
|
+
} from '../../../utils/strip-verbose-meta.js'
|
|
8
12
|
|
|
9
13
|
// Helper function to generate arguments from schema
|
|
10
14
|
const generateArgumentsFromSchema = async (
|
|
@@ -26,12 +30,13 @@ const generateArgumentsFromSchema = async (
|
|
|
26
30
|
const uniqueName = typesMap.getUniqueName(inputSchema)
|
|
27
31
|
if (!uniqueName) return []
|
|
28
32
|
|
|
33
|
+
const schemaPath = join(
|
|
34
|
+
schemaDirectory,
|
|
35
|
+
'schemas',
|
|
36
|
+
`${uniqueName}.schema.json`
|
|
37
|
+
)
|
|
38
|
+
|
|
29
39
|
try {
|
|
30
|
-
const schemaPath = join(
|
|
31
|
-
schemaDirectory,
|
|
32
|
-
'schemas',
|
|
33
|
-
`${uniqueName}.schema.json`
|
|
34
|
-
)
|
|
35
40
|
const schemaContent = await readFile(schemaPath, 'utf-8')
|
|
36
41
|
const schema = JSON.parse(schemaContent)
|
|
37
42
|
|
|
@@ -54,7 +59,8 @@ const generateArgumentsFromSchema = async (
|
|
|
54
59
|
}
|
|
55
60
|
return argumentsArray
|
|
56
61
|
} catch (e) {
|
|
57
|
-
logger.warn(`Could not load schema for type: ${uniqueName}`)
|
|
62
|
+
logger.warn(`Command MCP: Could not load schema for type: ${uniqueName} from ${schemaPath}`)
|
|
63
|
+
console.error(e)
|
|
58
64
|
return []
|
|
59
65
|
}
|
|
60
66
|
}
|
|
@@ -101,12 +107,28 @@ export const pikkuMCP: any = pikkuSessionlessFunc<void, boolean | undefined>({
|
|
|
101
107
|
toolsMeta: mcpEndpoints.toolsMeta,
|
|
102
108
|
promptsMeta: promptsMetaWithArguments,
|
|
103
109
|
}
|
|
110
|
+
|
|
111
|
+
// Write minimal JSON (runtime-only fields)
|
|
112
|
+
const minimalMeta = stripVerboseFields(metaData)
|
|
104
113
|
await writeFileInDir(
|
|
105
114
|
logger,
|
|
106
115
|
config.mcpWiringsMetaJsonFile,
|
|
107
|
-
JSON.stringify(
|
|
116
|
+
JSON.stringify(minimalMeta, null, 2)
|
|
108
117
|
)
|
|
109
118
|
|
|
119
|
+
// Write verbose JSON only if it has additional fields
|
|
120
|
+
if (hasVerboseFields(metaData)) {
|
|
121
|
+
const verbosePath = config.mcpWiringsMetaJsonFile.replace(
|
|
122
|
+
/\.gen\.json$/,
|
|
123
|
+
'-verbose.gen.json'
|
|
124
|
+
)
|
|
125
|
+
await writeFileInDir(
|
|
126
|
+
logger,
|
|
127
|
+
verbosePath,
|
|
128
|
+
JSON.stringify(metaData, null, 2)
|
|
129
|
+
)
|
|
130
|
+
}
|
|
131
|
+
|
|
110
132
|
const jsonImportPath = getFileImportRelativePath(
|
|
111
133
|
mcpWiringsMetaFile,
|
|
112
134
|
config.mcpWiringsMetaJsonFile,
|
|
@@ -124,9 +146,9 @@ export const pikkuMCP: any = pikkuSessionlessFunc<void, boolean | undefined>({
|
|
|
124
146
|
`import { pikkuState } from '@pikku/core'
|
|
125
147
|
import type { MCPResourceMeta, MCPToolMeta, MCPPromptMeta } from '@pikku/core/mcp'
|
|
126
148
|
${importStatement}
|
|
127
|
-
pikkuState('mcp', 'resourcesMeta', metaData.resourcesMeta as MCPResourceMeta)
|
|
128
|
-
pikkuState('mcp', 'toolsMeta', metaData.toolsMeta as MCPToolMeta)
|
|
129
|
-
pikkuState('mcp', 'promptsMeta', metaData.promptsMeta as MCPPromptMeta)`
|
|
149
|
+
pikkuState(null, 'mcp', 'resourcesMeta', metaData.resourcesMeta as MCPResourceMeta)
|
|
150
|
+
pikkuState(null, 'mcp', 'toolsMeta', metaData.toolsMeta as MCPToolMeta)
|
|
151
|
+
pikkuState(null, 'mcp', 'promptsMeta', metaData.promptsMeta as MCPPromptMeta)`
|
|
130
152
|
)
|
|
131
153
|
|
|
132
154
|
return true
|