@pikku/cli 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/cli.schema.json +1 -1
- package/console-app/android-chrome-192x192.png +0 -0
- package/console-app/android-chrome-512x512.png +0 -0
- package/console-app/apple-touch-icon.png +0 -0
- package/console-app/assets/index-0Ui5UudO.css +1 -0
- package/console-app/assets/index-C19L3UJu.js +637 -0
- package/console-app/favicon-16x16.png +0 -0
- package/console-app/favicon-32x32.png +0 -0
- package/console-app/favicon.ico +0 -0
- package/console-app/index.html +29 -0
- package/console-app/pikku-console-logo.png +0 -0
- package/console-app/site.webmanifest +19 -0
- package/console-app/wiring-icons/cron.svg +6 -0
- package/console-app/wiring-icons/function.png +0 -0
- package/console-app/wiring-icons/http.svg +2 -0
- package/console-app/wiring-icons/mcp.svg +1 -0
- package/console-app/wiring-icons/queue.svg +18 -0
- package/console-app/wiring-icons/sse.svg +5 -0
- package/console-app/wiring-icons/websocket.svg +8 -0
- package/dist/.pikku/agent/pikku-agent-types.gen.d.ts +19 -0
- package/dist/.pikku/agent/pikku-agent-types.gen.js +4 -0
- package/dist/.pikku/agent/pikku-agent-wirings-meta.gen.js +6 -0
- package/dist/.pikku/agent/pikku-agent-wirings-meta.gen.json +3 -0
- package/dist/.pikku/agent/pikku-agent-wirings.gen.d.ts +4 -0
- package/dist/.pikku/agent/pikku-agent-wirings.gen.js +4 -0
- package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +65 -10
- package/dist/.pikku/channel/pikku-channel-types.gen.js +23 -16
- 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 +18 -3
- 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 +9 -1
- package/dist/.pikku/cli/pikku-cli-types.gen.js +12 -2
- package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.js +2 -2
- package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.json +45 -12
- 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 -5
- package/dist/.pikku/cli/pikku-cli.gen.js +1 -5
- package/dist/.pikku/console/pikku-node-types.gen.d.ts +6 -0
- package/dist/.pikku/console/pikku-node-types.gen.js +1 -0
- package/dist/.pikku/function/pikku-function-types.gen.d.ts +180 -37
- package/dist/.pikku/function/pikku-function-types.gen.js +63 -53
- package/dist/.pikku/function/pikku-functions-meta.gen.js +2 -2
- package/dist/.pikku/function/pikku-functions-meta.gen.json +624 -506
- package/dist/.pikku/function/pikku-functions.gen.d.ts +1 -0
- package/dist/.pikku/function/pikku-functions.gen.js +119 -0
- package/dist/.pikku/http/pikku-http-types.gen.d.ts +54 -3
- package/dist/.pikku/http/pikku-http-types.gen.js +11 -2
- 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 +68 -29
- package/dist/.pikku/mcp/pikku-mcp-types.gen.js +8 -42
- 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 +2 -2
- package/dist/.pikku/node/pikku-node-types.gen.d.ts +1 -0
- package/dist/.pikku/node/pikku-node-types.gen.js +1 -0
- package/dist/.pikku/pikku-bootstrap.gen.d.ts +9 -10
- package/dist/.pikku/pikku-bootstrap.gen.js +17 -8
- package/dist/.pikku/pikku-services.gen.d.ts +7 -2
- package/dist/.pikku/pikku-services.gen.js +5 -0
- package/dist/.pikku/pikku-types.gen.d.ts +4 -1
- package/dist/.pikku/pikku-types.gen.js +7 -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 +2 -2
- 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 +6 -3
- package/dist/.pikku/rpc/pikku-remote-rpc-workers.gen.js +6 -3
- package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.d.ts +1 -0
- package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +6 -0
- package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.json +61 -0
- package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +1 -1
- package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +2 -2
- 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 +33 -15
- package/dist/.pikku/schemas/schemas/BootstrapInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/ConsoleCommandInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuAIAgentOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuConsoleFunctionsOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuNodesMetaOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuPackageOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuPublicAgentOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuSchemasOutput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuTriggerOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuVersionsInitInput.schema.json +1 -0
- package/dist/.pikku/secrets/pikku-secret-types.gen.d.ts +5 -0
- package/dist/.pikku/secrets/pikku-secret-types.gen.js +4 -0
- package/dist/.pikku/secrets/pikku-secrets.gen.d.ts +11 -0
- package/dist/.pikku/secrets/pikku-secrets.gen.js +10 -0
- package/dist/.pikku/trigger/pikku-trigger-types.gen.d.ts +113 -0
- package/dist/.pikku/trigger/pikku-trigger-types.gen.js +33 -0
- package/dist/.pikku/variables/pikku-variable-types.gen.d.ts +5 -0
- package/dist/.pikku/variables/pikku-variable-types.gen.js +4 -0
- package/dist/.pikku/variables/pikku-variables.gen.d.ts +11 -0
- package/dist/.pikku/variables/pikku-variables.gen.js +10 -0
- package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +71 -53
- package/dist/.pikku/workflow/pikku-workflow-types.gen.js +23 -35
- 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/bin/pikku.js +20 -47
- package/dist/src/cli.wiring.js +29 -2
- package/dist/src/functions/commands/all.d.ts +1 -1
- package/dist/src/functions/commands/all.js +109 -168
- package/dist/src/functions/commands/bootstrap.d.ts +1 -1
- package/dist/src/functions/commands/bootstrap.js +13 -29
- package/dist/src/functions/commands/console.d.ts +7 -0
- package/dist/src/functions/commands/console.js +106 -0
- package/dist/src/functions/commands/pikku-command-bootstrap.d.ts +4 -0
- package/dist/src/functions/commands/pikku-command-bootstrap.js +67 -0
- package/dist/src/functions/commands/pikku-command-summary.d.ts +1 -0
- package/dist/src/functions/commands/pikku-command-summary.js +55 -0
- package/dist/src/functions/commands/versions-check.d.ts +1 -0
- package/dist/src/functions/commands/versions-check.js +17 -0
- package/dist/src/functions/commands/versions-init.d.ts +7 -0
- package/dist/src/functions/commands/versions-init.js +15 -0
- package/dist/src/functions/commands/versions-update.d.ts +1 -0
- package/dist/src/functions/commands/versions-update.js +20 -0
- package/dist/src/functions/commands/watch.d.ts +1 -1
- package/dist/src/functions/commands/watch.js +4 -5
- package/dist/src/functions/runtimes/fetch/index.d.ts +1 -0
- package/dist/src/functions/{wirings → runtimes}/fetch/index.js +3 -3
- package/dist/src/functions/runtimes/nextjs/pikku-command-nextjs.d.ts +1 -1
- package/dist/src/functions/runtimes/nextjs/pikku-command-nextjs.js +6 -8
- package/dist/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.d.ts +1 -1
- package/dist/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.js +49 -43
- package/dist/src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.js +45 -35
- package/dist/src/functions/runtimes/websocket/pikku-command-websocket-typed.d.ts +1 -0
- package/dist/src/functions/{wirings/channels → runtimes/websocket}/pikku-command-websocket-typed.js +2 -2
- package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent-types.d.ts +1 -0
- package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent-types.js +19 -0
- package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent.d.ts +1 -0
- package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent.js +68 -0
- package/dist/src/functions/wirings/ai-agent/pikku-command-public-agent.d.ts +1 -0
- package/dist/src/functions/wirings/ai-agent/pikku-command-public-agent.js +23 -0
- package/dist/src/functions/wirings/ai-agent/serialize-agent-map.d.ts +4 -0
- package/dist/src/functions/wirings/ai-agent/serialize-agent-map.js +48 -0
- package/dist/src/functions/wirings/ai-agent/serialize-ai-agent-types.d.ts +1 -0
- package/dist/src/functions/wirings/ai-agent/serialize-ai-agent-types.js +31 -0
- package/dist/src/functions/wirings/ai-agent/serialize-public-agent.d.ts +1 -0
- package/dist/src/functions/wirings/ai-agent/serialize-public-agent.js +90 -0
- package/dist/src/functions/wirings/channels/pikku-channels.d.ts +1 -1
- package/dist/src/functions/wirings/channels/pikku-channels.js +2 -2
- package/dist/src/functions/wirings/channels/pikku-command-channel-types.d.ts +1 -1
- package/dist/src/functions/wirings/channels/pikku-command-channel-types.js +3 -3
- package/dist/src/functions/wirings/channels/pikku-command-channels-map.d.ts +1 -1
- package/dist/src/functions/wirings/channels/pikku-command-channels-map.js +2 -2
- package/dist/src/functions/wirings/channels/pikku-command-channels.d.ts +1 -1
- package/dist/src/functions/wirings/channels/pikku-command-channels.js +19 -3
- package/dist/src/functions/wirings/channels/serialize-channel-types.d.ts +1 -1
- package/dist/src/functions/wirings/channels/serialize-channel-types.js +97 -10
- package/dist/src/functions/wirings/channels/serialize-typed-channel-map.d.ts +2 -1
- package/dist/src/functions/wirings/channels/serialize-typed-channel-map.js +9 -10
- package/dist/src/functions/wirings/cli/pikku-command-cli-entry.d.ts +1 -1
- package/dist/src/functions/wirings/cli/pikku-command-cli-entry.js +3 -7
- package/dist/src/functions/wirings/cli/pikku-command-cli-types.d.ts +1 -1
- package/dist/src/functions/wirings/cli/pikku-command-cli-types.js +1 -1
- package/dist/src/functions/wirings/cli/pikku-command-cli.d.ts +1 -1
- package/dist/src/functions/wirings/cli/pikku-command-cli.js +11 -3
- package/dist/src/functions/wirings/cli/serialize-channel-cli.js +8 -8
- package/dist/src/functions/wirings/cli/serialize-cli-types.js +14 -1
- package/dist/src/functions/wirings/cli/serialize-local-cli-bootstrap.d.ts +2 -2
- package/dist/src/functions/wirings/cli/serialize-local-cli-bootstrap.js +10 -11
- package/dist/src/functions/wirings/console/pikku-command-console-functions.d.ts +1 -0
- package/dist/src/functions/wirings/console/pikku-command-console-functions.js +23 -0
- package/dist/src/functions/wirings/console/pikku-command-node-types.d.ts +1 -0
- package/dist/src/functions/wirings/console/pikku-command-node-types.js +21 -0
- package/dist/src/functions/wirings/console/pikku-command-nodes-meta.d.ts +1 -0
- package/dist/src/functions/wirings/console/pikku-command-nodes-meta.js +79 -0
- package/dist/src/functions/wirings/console/serialize-console-functions.d.ts +1 -0
- package/dist/src/functions/wirings/console/serialize-console-functions.js +229 -0
- package/dist/src/functions/wirings/console/serialize-node-types.d.ts +1 -0
- package/dist/src/functions/wirings/console/serialize-node-types.js +11 -0
- package/dist/src/functions/wirings/functions/pikku-command-external-types.d.ts +1 -0
- package/dist/src/functions/wirings/functions/pikku-command-external-types.js +33 -0
- package/dist/src/functions/wirings/functions/pikku-command-function-types-split.d.ts +1 -1
- package/dist/src/functions/wirings/functions/pikku-command-function-types-split.js +2 -2
- package/dist/src/functions/wirings/functions/pikku-command-function-types.d.ts +1 -1
- package/dist/src/functions/wirings/functions/pikku-command-function-types.js +8 -3
- package/dist/src/functions/wirings/functions/pikku-command-functions.d.ts +1 -1
- package/dist/src/functions/wirings/functions/pikku-command-functions.js +34 -19
- package/dist/src/functions/wirings/functions/pikku-command-services.d.ts +1 -1
- package/dist/src/functions/wirings/functions/pikku-command-services.js +2 -2
- package/dist/src/functions/wirings/functions/schemas.d.ts +1 -4
- package/dist/src/functions/wirings/functions/schemas.js +8 -9
- package/dist/src/functions/wirings/functions/serialize-external-types.d.ts +1 -0
- package/dist/src/functions/wirings/functions/serialize-external-types.js +77 -0
- package/dist/src/functions/wirings/functions/serialize-function-imports.d.ts +4 -3
- package/dist/src/functions/wirings/functions/serialize-function-imports.js +16 -19
- package/dist/src/functions/wirings/functions/serialize-function-types.d.ts +1 -1
- package/dist/src/functions/wirings/functions/serialize-function-types.js +256 -42
- 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 +22 -21
- package/dist/src/functions/wirings/http/pikku-command-http-map.d.ts +1 -1
- package/dist/src/functions/wirings/http/pikku-command-http-map.js +4 -4
- package/dist/src/functions/wirings/http/pikku-command-http-routes.d.ts +1 -1
- package/dist/src/functions/wirings/http/pikku-command-http-routes.js +19 -3
- package/dist/src/functions/wirings/http/pikku-command-http-types.d.ts +1 -1
- package/dist/src/functions/wirings/http/pikku-command-http-types.js +1 -1
- package/dist/src/functions/wirings/http/pikku-command-openapi.d.ts +1 -1
- package/dist/src/functions/wirings/http/pikku-command-openapi.js +11 -9
- package/dist/src/functions/wirings/http/pikku-http-routes.d.ts +1 -1
- package/dist/src/functions/wirings/http/pikku-http-routes.js +2 -2
- package/dist/src/functions/wirings/http/serialize-http-types.js +64 -3
- package/dist/src/functions/wirings/http/serialize-typed-http-map.d.ts +5 -2
- package/dist/src/functions/wirings/http/serialize-typed-http-map.js +43 -31
- package/dist/src/functions/wirings/mcp/pikku-command-mcp-json.d.ts +1 -1
- package/dist/src/functions/wirings/mcp/pikku-command-mcp-json.js +5 -6
- package/dist/src/functions/wirings/mcp/pikku-command-mcp-types.d.ts +1 -1
- package/dist/src/functions/wirings/mcp/pikku-command-mcp-types.js +1 -1
- package/dist/src/functions/wirings/mcp/pikku-command-mcp.d.ts +1 -1
- package/dist/src/functions/wirings/mcp/pikku-command-mcp.js +28 -10
- package/dist/src/functions/wirings/mcp/serialize-mcp-types.js +81 -38
- package/dist/src/functions/wirings/middleware/pikku-command-middleware.d.ts +1 -1
- package/dist/src/functions/wirings/middleware/pikku-command-middleware.js +11 -31
- package/dist/src/functions/wirings/middleware/serialize-middleware-imports.js +19 -24
- package/dist/src/functions/wirings/package/pikku-command-package-types.d.ts +2 -0
- package/dist/src/functions/wirings/package/pikku-command-package-types.js +30 -0
- 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-types.d.ts +2 -0
- package/dist/src/functions/wirings/package/serialize-package-types.js +10 -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/permissions/pikku-command-permissions.d.ts +1 -1
- package/dist/src/functions/wirings/permissions/pikku-command-permissions.js +10 -5
- package/dist/src/functions/wirings/queue/pikku-command-queue-map.d.ts +1 -1
- package/dist/src/functions/wirings/queue/pikku-command-queue-map.js +3 -3
- package/dist/src/functions/wirings/queue/pikku-command-queue-service.d.ts +1 -1
- package/dist/src/functions/wirings/queue/pikku-command-queue-service.js +2 -2
- package/dist/src/functions/wirings/queue/pikku-command-queue-types.d.ts +1 -1
- package/dist/src/functions/wirings/queue/pikku-command-queue-types.js +1 -1
- package/dist/src/functions/wirings/queue/pikku-command-queue.d.ts +1 -1
- package/dist/src/functions/wirings/queue/pikku-command-queue.js +11 -3
- package/dist/src/functions/wirings/queue/pikku-queue-map.d.ts +1 -1
- package/dist/src/functions/wirings/queue/pikku-queue-map.js +3 -3
- package/dist/src/functions/wirings/queue/pikku-queue.d.ts +1 -1
- package/dist/src/functions/wirings/queue/pikku-queue.js +2 -10
- package/dist/src/functions/wirings/queue/serialize-queue-map.d.ts +5 -2
- package/dist/src/functions/wirings/queue/serialize-queue-map.js +13 -24
- package/dist/src/functions/wirings/queue/serialize-queue-meta.js +9 -10
- package/dist/src/functions/wirings/queue/serialize-queue-types.js +1 -1
- package/dist/src/functions/wirings/rpc/pikku-command-public-rpc.d.ts +1 -1
- package/dist/src/functions/wirings/rpc/pikku-command-public-rpc.js +2 -2
- package/dist/src/functions/wirings/rpc/pikku-command-remote-rpc.d.ts +1 -1
- package/dist/src/functions/wirings/rpc/pikku-command-remote-rpc.js +1 -1
- package/dist/src/functions/wirings/rpc/pikku-command-rpc-client.d.ts +1 -1
- package/dist/src/functions/wirings/rpc/pikku-command-rpc-client.js +2 -2
- package/dist/src/functions/wirings/rpc/pikku-command-rpc-map.d.ts +2 -2
- package/dist/src/functions/wirings/rpc/pikku-command-rpc-map.js +12 -7
- package/dist/src/functions/wirings/rpc/pikku-command-rpc.d.ts +1 -1
- package/dist/src/functions/wirings/rpc/pikku-command-rpc.js +5 -2
- package/dist/src/functions/wirings/rpc/serialize-public-rpc.d.ts +1 -1
- package/dist/src/functions/wirings/rpc/serialize-public-rpc.js +11 -6
- package/dist/src/functions/wirings/rpc/serialize-remote-rpc.js +5 -2
- package/dist/src/functions/wirings/rpc/serialize-rpc-wrapper.js +19 -8
- package/dist/src/functions/wirings/rpc/serialize-typed-rpc-map.d.ts +6 -3
- package/dist/src/functions/wirings/rpc/serialize-typed-rpc-map.js +130 -59
- package/dist/src/functions/wirings/scheduler/pikku-command-scheduler-types.d.ts +1 -1
- package/dist/src/functions/wirings/scheduler/pikku-command-scheduler-types.js +1 -1
- package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.d.ts +1 -1
- package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.js +11 -2
- package/dist/src/functions/wirings/scheduler/serialize-scheduler-meta.d.ts +1 -1
- package/dist/src/functions/wirings/scheduler/serialize-scheduler-meta.js +13 -12
- package/dist/src/functions/wirings/scheduler/serialize-scheduler-types.js +1 -1
- package/dist/src/functions/wirings/secrets/pikku-command-secrets.d.ts +1 -0
- package/dist/src/functions/wirings/secrets/pikku-command-secrets.js +31 -0
- package/dist/src/functions/wirings/secrets/serialize-secrets-types.d.ts +9 -0
- package/dist/src/functions/wirings/secrets/serialize-secrets-types.js +64 -0
- package/dist/src/functions/wirings/triggers/pikku-command-trigger-types.d.ts +1 -0
- package/dist/src/functions/wirings/triggers/pikku-command-trigger-types.js +24 -0
- package/dist/src/functions/wirings/triggers/pikku-command-trigger.d.ts +1 -0
- package/dist/src/functions/wirings/triggers/pikku-command-trigger.js +40 -0
- package/dist/src/functions/wirings/triggers/serialize-trigger-meta.d.ts +5 -0
- package/dist/src/functions/wirings/triggers/serialize-trigger-meta.js +35 -0
- package/dist/src/functions/wirings/triggers/serialize-trigger-types.d.ts +4 -0
- package/dist/src/functions/wirings/triggers/serialize-trigger-types.js +163 -0
- package/dist/src/functions/wirings/variables/pikku-command-variables.d.ts +1 -0
- package/dist/src/functions/wirings/variables/pikku-command-variables.js +31 -0
- package/dist/src/functions/wirings/variables/serialize-variables-types.d.ts +9 -0
- package/dist/src/functions/wirings/variables/serialize-variables-types.js +53 -0
- package/dist/src/functions/wirings/workflow/pikku-command-workflow.d.ts +1 -1
- package/dist/src/functions/wirings/workflow/pikku-command-workflow.js +29 -20
- package/dist/src/functions/wirings/workflow/serialize-workflow-map.d.ts +7 -2
- package/dist/src/functions/wirings/workflow/serialize-workflow-map.js +87 -38
- package/dist/src/functions/wirings/workflow/serialize-workflow-meta.d.ts +1 -3
- package/dist/src/functions/wirings/workflow/serialize-workflow-meta.js +42 -18
- package/dist/src/functions/wirings/workflow/serialize-workflow-registration.d.ts +7 -0
- package/dist/src/functions/wirings/workflow/serialize-workflow-registration.js +26 -0
- package/dist/src/functions/wirings/workflow/serialize-workflow-types.d.ts +1 -4
- package/dist/src/functions/wirings/workflow/serialize-workflow-types.js +121 -63
- package/dist/src/functions/wirings/workflow/serialize-workflow-workers.d.ts +1 -1
- package/dist/src/functions/wirings/workflow/serialize-workflow-workers.js +15 -28
- package/dist/src/services/cli-logger-forwarder.service.d.ts +1 -1
- package/dist/src/services/cli-logger-forwarder.service.js +1 -1
- package/dist/src/services/cli-logger.service.d.ts +1 -1
- package/dist/src/services/cli-logger.service.js +1 -1
- package/dist/src/services.d.ts +1 -1
- package/dist/src/services.js +56 -6
- package/dist/src/utils/command-summary.d.ts +3 -0
- package/dist/src/utils/command-summary.js +3 -0
- package/dist/src/utils/contract-versions.d.ts +6 -0
- package/dist/src/utils/contract-versions.js +25 -0
- package/dist/src/utils/file-import-path.js +20 -6
- package/dist/src/utils/generate-bootstrap-file.js +1 -1
- package/dist/src/utils/pikku-cli-config.js +104 -13
- package/dist/src/utils/pikku-files-and-methods.d.ts +0 -1
- package/dist/src/utils/pikku-files-and-methods.js +15 -60
- package/dist/src/utils/serialize-import-map.d.ts +2 -1
- package/dist/src/utils/serialize-import-map.js +3 -54
- package/dist/src/utils/serialize-meta-ts.d.ts +8 -0
- package/dist/src/utils/serialize-meta-ts.js +12 -0
- package/dist/src/utils/serialize-schemas.d.ts +3 -0
- package/dist/src/utils/serialize-schemas.js +38 -0
- 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 +20 -8
- package/.pikku/channel/pikku-channel-types.gen.ts +0 -91
- package/.pikku/channel/pikku-channels-map.gen.d.ts +0 -47
- package/.pikku/channel/pikku-channels-meta.gen.ts +0 -5
- package/.pikku/channel/pikku-channels.gen.ts +0 -4
- package/.pikku/cli/pikku-cli-channel.ts +0 -92
- package/.pikku/cli/pikku-cli-client.gen.ts +0 -54
- package/.pikku/cli/pikku-cli-types.gen.ts +0 -92
- package/.pikku/cli/pikku-cli-wirings-meta.gen.json +0 -146
- package/.pikku/cli/pikku-cli-wirings-meta.gen.ts +0 -7
- package/.pikku/cli/pikku-cli-wirings.gen.ts +0 -6
- package/.pikku/cli/pikku-cli.gen.ts +0 -41
- package/.pikku/function/pikku-function-types.gen.ts +0 -426
- package/.pikku/function/pikku-functions-meta.gen.json +0 -988
- package/.pikku/function/pikku-functions-meta.gen.ts +0 -6
- package/.pikku/function/pikku-functions-meta.min.gen.json +0 -212
- package/.pikku/function/pikku-functions-meta.min.gen.ts +0 -6
- package/.pikku/http/pikku-http-types.gen.ts +0 -86
- package/.pikku/http/pikku-http-wirings-map.gen.d.ts +0 -46
- package/.pikku/http/pikku-http-wirings-meta.gen.ts +0 -13
- package/.pikku/http/pikku-http-wirings.gen.ts +0 -4
- package/.pikku/mcp/pikku-mcp-types.gen.ts +0 -140
- package/.pikku/mcp/pikku-mcp-wirings-meta.gen.json +0 -5
- package/.pikku/mcp/pikku-mcp-wirings-meta.gen.ts +0 -9
- package/.pikku/mcp/pikku-mcp-wirings.gen.ts +0 -4
- package/.pikku/mcp/pikku-mcp.gen.json +0 -5
- package/.pikku/pikku-bootstrap.gen.ts +0 -19
- package/.pikku/pikku-services.gen.ts +0 -27
- package/.pikku/pikku-types.gen.ts +0 -27
- package/.pikku/pikku-websocket.gen.ts +0 -90
- package/.pikku/queue/pikku-queue-types.gen.ts +0 -27
- package/.pikku/queue/pikku-queue-workers-wirings-map.gen.d.ts +0 -60
- package/.pikku/queue/pikku-queue-workers-wirings-meta.gen.json +0 -1
- package/.pikku/queue/pikku-queue-workers-wirings-meta.gen.ts +0 -8
- package/.pikku/queue/pikku-queue-workers-wirings.gen.ts +0 -4
- package/.pikku/rpc/pikku-remote-rpc-workers.gen.ts +0 -27
- package/.pikku/rpc/pikku-rpc-wirings-map.gen.d.ts +0 -57
- package/.pikku/rpc/pikku-rpc-wirings-map.internal.gen.d.ts +0 -99
- package/.pikku/scheduler/pikku-scheduler-types.gen.ts +0 -25
- package/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.json +0 -1
- package/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.ts +0 -8
- package/.pikku/scheduler/pikku-schedulers-wirings.gen.ts +0 -4
- package/.pikku/schemas/register.gen.ts +0 -63
- package/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +0 -1
- package/.pikku/schemas/schemas/PikkuCLIOutput.schema.json +0 -1
- package/.pikku/schemas/schemas/PikkuChannelsOutput.schema.json +0 -1
- package/.pikku/schemas/schemas/PikkuFunctionsOutput.schema.json +0 -1
- package/.pikku/schemas/schemas/PikkuHTTPOutput.schema.json +0 -1
- package/.pikku/schemas/schemas/PikkuMCPOutput.schema.json +0 -1
- package/.pikku/schemas/schemas/PikkuMiddlewareOutput.schema.json +0 -1
- package/.pikku/schemas/schemas/PikkuPermissionsOutput.schema.json +0 -1
- package/.pikku/schemas/schemas/PikkuPublicRPCOutput.schema.json +0 -1
- package/.pikku/schemas/schemas/PikkuQueueOutput.schema.json +0 -1
- package/.pikku/schemas/schemas/PikkuRPCOutput.schema.json +0 -1
- package/.pikku/schemas/schemas/PikkuRemoteRPCOutput.schema.json +0 -1
- package/.pikku/schemas/schemas/PikkuSchedulerOutput.schema.json +0 -1
- package/.pikku/schemas/schemas/PikkuSchemasOutput.schema.json +0 -1
- package/.pikku/schemas/schemas/PikkuWorkflowOutput.schema.json +0 -1
- package/.pikku/services/config.gen.json +0 -99
- package/.pikku/services/getInspectorState.gen.json +0 -10
- package/.pikku/services/jwt.gen.json +0 -13
- package/.pikku/services/logger.gen.json +0 -25
- package/.pikku/services/queueService.gen.json +0 -14
- package/.pikku/services/schedulerService.gen.json +0 -17
- package/.pikku/services/schema.gen.json +0 -14
- package/.pikku/services/variables.gen.json +0 -13
- package/.pikku/services/workflowService.gen.json +0 -31
- package/.pikku/workflow/pikku-workflow-map.gen.d.ts +0 -62
- package/.pikku/workflow/pikku-workflow-types.gen.ts +0 -97
- package/.pikku/workflow/pikku-workflow-wirings-meta.gen.json +0 -1
- package/.pikku/workflow/pikku-workflow-wirings-meta.gen.ts +0 -8
- package/.pikku/workflow/pikku-workflow-wirings.gen.ts +0 -8
- package/CHANGELOG.md +0 -935
- package/bin/pikku.ts +0 -88
- package/build.sh +0 -75
- 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/channels/pikku-command-websocket-typed.d.ts +0 -1
- package/dist/src/functions/wirings/fetch/index.d.ts +0 -1
- package/dist/src/functions/wirings/functions/pikku-function-types.d.ts +0 -1
- package/dist/src/functions/wirings/functions/pikku-function-types.js +0 -18
- package/dist/src/functions/wirings/http/openapi-spec-generator.d.ts +0 -81
- package/dist/src/functions/wirings/http/openapi-spec-generator.js +0 -152
- package/dist/src/functions/wirings/mcp/serialize-mcp-json.d.ts +0 -5
- package/dist/src/functions/wirings/mcp/serialize-mcp-json.js +0 -101
- package/dist/src/functions/wirings/middleware/serialize-middleware-groups-meta.d.ts +0 -11
- package/dist/src/functions/wirings/middleware/serialize-middleware-groups-meta.js +0 -36
- package/dist/src/functions/wirings/services/pikku-command-service-metadata.d.ts +0 -1
- package/dist/src/functions/wirings/services/pikku-command-service-metadata.js +0 -22
- 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/dist/src/utils/custom-types-generator.d.ts +0 -2
- package/dist/src/utils/custom-types-generator.js +0 -43
- package/dist/src/utils/schema-generator.d.ts +0 -6
- package/dist/src/utils/schema-generator.js +0 -118
- package/pikku.config.json +0 -29
- package/run-tests.sh +0 -53
- package/src/cli.wiring.ts +0 -112
- package/src/functions/commands/all.ts +0 -266
- package/src/functions/commands/bootstrap.ts +0 -43
- package/src/functions/commands/watch.ts +0 -61
- package/src/functions/runtimes/nextjs/pikku-command-nextjs.ts +0 -132
- package/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.ts +0 -268
- package/src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.ts +0 -201
- package/src/functions/wirings/channels/pikku-channels.ts +0 -59
- package/src/functions/wirings/channels/pikku-command-channel-types.ts +0 -25
- package/src/functions/wirings/channels/pikku-command-channels-map.ts +0 -26
- package/src/functions/wirings/channels/pikku-command-channels.ts +0 -40
- package/src/functions/wirings/channels/pikku-command-websocket-typed.ts +0 -37
- package/src/functions/wirings/channels/serialize-channel-types.ts +0 -94
- package/src/functions/wirings/channels/serialize-typed-channel-map.ts +0 -172
- package/src/functions/wirings/channels/serialize-websocket-wrapper.ts +0 -89
- package/src/functions/wirings/cli/pikku-command-cli-entry.ts +0 -216
- package/src/functions/wirings/cli/pikku-command-cli-types.ts +0 -48
- package/src/functions/wirings/cli/pikku-command-cli.ts +0 -62
- package/src/functions/wirings/cli/serialize-channel-cli-client.ts +0 -184
- package/src/functions/wirings/cli/serialize-channel-cli.ts +0 -134
- package/src/functions/wirings/cli/serialize-cli-types.ts +0 -101
- package/src/functions/wirings/cli/serialize-local-cli-bootstrap.ts +0 -80
- package/src/functions/wirings/fetch/index.ts +0 -36
- package/src/functions/wirings/functions/pikku-command-function-types-split.ts +0 -60
- package/src/functions/wirings/functions/pikku-command-function-types.ts +0 -43
- package/src/functions/wirings/functions/pikku-command-functions.ts +0 -94
- package/src/functions/wirings/functions/pikku-command-services.ts +0 -140
- package/src/functions/wirings/functions/pikku-function-types.ts +0 -43
- package/src/functions/wirings/functions/schemas.ts +0 -46
- package/src/functions/wirings/functions/serialize-function-imports.ts +0 -71
- package/src/functions/wirings/functions/serialize-function-types.ts +0 -439
- package/src/functions/wirings/functions/serialize-pikku-types-hub.ts +0 -38
- package/src/functions/wirings/http/openapi-spec-generator.ts +0 -265
- package/src/functions/wirings/http/pikku-command-http-map.ts +0 -27
- package/src/functions/wirings/http/pikku-command-http-routes.ts +0 -36
- package/src/functions/wirings/http/pikku-command-http-types.ts +0 -25
- package/src/functions/wirings/http/pikku-command-openapi.ts +0 -63
- package/src/functions/wirings/http/pikku-http-routes.ts +0 -61
- package/src/functions/wirings/http/serialize-fetch-wrapper.ts +0 -67
- package/src/functions/wirings/http/serialize-http-types.ts +0 -89
- package/src/functions/wirings/http/serialize-typed-http-map.ts +0 -154
- package/src/functions/wirings/mcp/pikku-command-mcp-json.ts +0 -33
- package/src/functions/wirings/mcp/pikku-command-mcp-types.ts +0 -25
- package/src/functions/wirings/mcp/pikku-command-mcp.ts +0 -140
- package/src/functions/wirings/mcp/serialize-mcp-json.ts +0 -159
- package/src/functions/wirings/mcp/serialize-mcp-types.ts +0 -143
- package/src/functions/wirings/middleware/pikku-command-middleware.ts +0 -85
- package/src/functions/wirings/middleware/serialize-middleware-groups-meta.ts +0 -40
- package/src/functions/wirings/middleware/serialize-middleware-imports.ts +0 -78
- package/src/functions/wirings/permissions/pikku-command-permissions.ts +0 -49
- package/src/functions/wirings/permissions/serialize-permissions-imports.test.ts +0 -274
- package/src/functions/wirings/permissions/serialize-permissions-imports.ts +0 -78
- package/src/functions/wirings/queue/pikku-command-queue-map.ts +0 -26
- package/src/functions/wirings/queue/pikku-command-queue-service.ts +0 -37
- package/src/functions/wirings/queue/pikku-command-queue-types.ts +0 -25
- package/src/functions/wirings/queue/pikku-command-queue.ts +0 -66
- package/src/functions/wirings/queue/pikku-queue-map.ts +0 -26
- package/src/functions/wirings/queue/pikku-queue.ts +0 -75
- package/src/functions/wirings/queue/serialize-queue-map.ts +0 -119
- package/src/functions/wirings/queue/serialize-queue-meta.ts +0 -24
- package/src/functions/wirings/queue/serialize-queue-types.ts +0 -30
- package/src/functions/wirings/queue/serialize-queue-wrapper.ts +0 -35
- package/src/functions/wirings/rpc/pikku-command-public-rpc.ts +0 -32
- package/src/functions/wirings/rpc/pikku-command-remote-rpc.ts +0 -35
- package/src/functions/wirings/rpc/pikku-command-rpc-client.ts +0 -35
- package/src/functions/wirings/rpc/pikku-command-rpc-map.ts +0 -48
- package/src/functions/wirings/rpc/pikku-command-rpc.ts +0 -49
- package/src/functions/wirings/rpc/serialize-public-rpc.ts +0 -37
- package/src/functions/wirings/rpc/serialize-remote-rpc.ts +0 -30
- package/src/functions/wirings/rpc/serialize-rpc-wrapper.ts +0 -68
- package/src/functions/wirings/rpc/serialize-typed-rpc-map.ts +0 -128
- package/src/functions/wirings/scheduler/pikku-command-scheduler-types.ts +0 -25
- package/src/functions/wirings/scheduler/pikku-command-scheduler.ts +0 -67
- package/src/functions/wirings/scheduler/serialize-scheduler-meta.ts +0 -37
- package/src/functions/wirings/scheduler/serialize-scheduler-types.ts +0 -28
- package/src/functions/wirings/services/pikku-command-service-metadata.ts +0 -25
- 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/pikku-command-workflow.ts +0 -151
- package/src/functions/wirings/workflow/serialize-workflow-map.ts +0 -123
- package/src/functions/wirings/workflow/serialize-workflow-meta.ts +0 -33
- package/src/functions/wirings/workflow/serialize-workflow-types.ts +0 -103
- package/src/functions/wirings/workflow/serialize-workflow-wirings.ts +0 -47
- package/src/functions/wirings/workflow/serialize-workflow-workers.ts +0 -60
- package/src/middleware/log-command-info-and-time.ts +0 -35
- package/src/services/cli-logger-forwarder.service.ts +0 -99
- package/src/services/cli-logger.service.ts +0 -108
- package/src/services.ts +0 -315
- package/src/utils/check-required-types.ts +0 -65
- package/src/utils/command-summary.ts +0 -103
- package/src/utils/custom-types-generator.ts +0 -55
- package/src/utils/file-import-path.test.ts +0 -175
- package/src/utils/file-import-path.ts +0 -53
- package/src/utils/file-imports-serializer.ts +0 -25
- package/src/utils/file-writer.ts +0 -72
- package/src/utils/generate-bootstrap-file.ts +0 -43
- package/src/utils/get-cli-version.ts +0 -28
- package/src/utils/pikku-cli-config.ts +0 -462
- package/src/utils/pikku-files-and-methods.ts +0 -145
- package/src/utils/schema-generator.ts +0 -172
- package/src/utils/serialize-import-map.ts +0 -102
- package/tsconfig.json +0 -21
- package/types/application-types.d.ts +0 -27
- package/types/config.d.ts +0 -270
- /package/dist/.pikku/{function/pikku-functions-meta.min.gen.d.ts → agent/pikku-agent-wirings-meta.gen.d.ts} +0 -0
- /package/dist/.pikku/{workflow/pikku-workflow-wirings-meta.gen.json → channel/pikku-channels-meta.gen.json} +0 -0
- /package/dist/src/functions/{wirings/channels → runtimes/websocket}/serialize-websocket-wrapper.d.ts +0 -0
- /package/dist/src/functions/{wirings/channels → runtimes/websocket}/serialize-websocket-wrapper.js +0 -0
|
@@ -6,9 +6,9 @@ export const serializeHTTPTypes = (functionTypesImportPath) => {
|
|
|
6
6
|
* HTTP-specific type definitions for tree-shaking optimization
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import { AssertHTTPWiringParams, wireHTTP as wireHTTPCore, addHTTPMiddleware as addHTTPMiddlewareCore, addHTTPPermission as addHTTPPermissionCore } from '@pikku/core/http'
|
|
10
|
-
import type { PikkuFunction, PikkuFunctionSessionless, PikkuPermission, PikkuMiddleware } from '${functionTypesImportPath}'
|
|
11
|
-
import type { CoreHTTPFunctionWiring } from '@pikku/core/http'
|
|
9
|
+
import { AssertHTTPWiringParams, wireHTTP as wireHTTPCore, addHTTPMiddleware as addHTTPMiddlewareCore, addHTTPPermission as addHTTPPermissionCore, wireHTTPRoutes as wireHTTPRoutesCore, defineHTTPRoutes as defineHTTPRoutesCore } from '@pikku/core/http'
|
|
10
|
+
import type { PikkuFunction, PikkuFunctionSessionless, PikkuPermission, PikkuMiddleware, PikkuFunctionConfig } from '${functionTypesImportPath}'
|
|
11
|
+
import type { CoreHTTPFunctionWiring, HTTPMethod, HTTPRouteBaseConfig } from '@pikku/core/http'
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Type definition for HTTP API wirings with type-safe path parameters.
|
|
@@ -85,5 +85,66 @@ export const addHTTPPermission = <In = unknown>(
|
|
|
85
85
|
) => {
|
|
86
86
|
addHTTPPermissionCore(pattern, permissions as any)
|
|
87
87
|
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Route configuration for wireHTTPRoutes with proper typing
|
|
91
|
+
*/
|
|
92
|
+
type HTTPRouteConfig = HTTPRouteBaseConfig & {
|
|
93
|
+
method: HTTPMethod
|
|
94
|
+
route: string
|
|
95
|
+
func: PikkuFunctionConfig<any, any, any, any, any, any>
|
|
96
|
+
auth?: boolean
|
|
97
|
+
permissions?: Record<string, PikkuPermission | PikkuPermission[]>
|
|
98
|
+
middleware?: PikkuMiddleware[]
|
|
99
|
+
sse?: boolean
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Typed route map for wireHTTPRoutes
|
|
104
|
+
*/
|
|
105
|
+
type TypedHTTPRouteMap = {
|
|
106
|
+
[key: string]: HTTPRouteConfig | TypedHTTPRouteMap | TypedHTTPRouteContract
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Typed route contract for defineHTTPRoutes
|
|
111
|
+
*/
|
|
112
|
+
type TypedHTTPRouteContract<T extends TypedHTTPRouteMap = TypedHTTPRouteMap> = TypedHTTPRoutesGroupConfig & {
|
|
113
|
+
routes: T
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Group config with typed middleware/permissions
|
|
118
|
+
*/
|
|
119
|
+
type TypedHTTPRoutesGroupConfig = {
|
|
120
|
+
basePath?: string
|
|
121
|
+
tags?: string[]
|
|
122
|
+
auth?: boolean
|
|
123
|
+
middleware?: PikkuMiddleware[]
|
|
124
|
+
permissions?: Record<string, PikkuPermission | PikkuPermission[]>
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Full config for wireHTTPRoutes
|
|
129
|
+
*/
|
|
130
|
+
type TypedWireHTTPRoutesConfig = TypedHTTPRoutesGroupConfig & {
|
|
131
|
+
routes: TypedHTTPRouteMap | HTTPRouteConfig[]
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Type-safe helper for defining route contracts that can be composed.
|
|
136
|
+
*/
|
|
137
|
+
export function defineHTTPRoutes<T extends TypedHTTPRouteMap>(routes: T): TypedHTTPRouteContract<T>
|
|
138
|
+
export function defineHTTPRoutes<T extends TypedHTTPRouteMap>(config: TypedHTTPRoutesGroupConfig & { routes: T }): TypedHTTPRouteContract<T>
|
|
139
|
+
export function defineHTTPRoutes<T extends TypedHTTPRouteMap>(configOrRoutes: T | (TypedHTTPRoutesGroupConfig & { routes: T })): TypedHTTPRouteContract<T> {
|
|
140
|
+
return defineHTTPRoutesCore(configOrRoutes as any) as unknown as TypedHTTPRouteContract<T>
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Wires multiple HTTP routes from a nested map or array configuration.
|
|
145
|
+
*/
|
|
146
|
+
export const wireHTTPRoutes = (config: TypedWireHTTPRoutesConfig): void => {
|
|
147
|
+
wireHTTPRoutesCore(config as any)
|
|
148
|
+
}
|
|
88
149
|
`;
|
|
89
150
|
};
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { HTTPWiringsMeta } from '@pikku/core/http';
|
|
2
2
|
import { MetaInputTypes, TypesMap } from '@pikku/inspector';
|
|
3
|
-
import {
|
|
4
|
-
export declare const serializeTypedHTTPWiringsMap: (relativeToPath: string, packageMappings: Record<string, string>, typesMap: TypesMap,
|
|
3
|
+
import { Logger } from '@pikku/core/services';
|
|
4
|
+
export declare const serializeTypedHTTPWiringsMap: (logger: Logger, relativeToPath: string, packageMappings: Record<string, string>, typesMap: TypesMap, wiringsMeta: HTTPWiringsMeta, metaTypes: MetaInputTypes, resolvedIOTypes: Record<string, {
|
|
5
|
+
inputType: string;
|
|
6
|
+
outputType: string;
|
|
7
|
+
}>, rpcInternalMapDeclarationFile: string) => string;
|
|
@@ -1,17 +1,34 @@
|
|
|
1
1
|
import { serializeImportMap } from '../../../utils/serialize-import-map.js';
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
|
|
3
|
+
import { generateCustomTypes } from '@pikku/inspector';
|
|
4
|
+
export const serializeTypedHTTPWiringsMap = (logger, relativeToPath, packageMappings, typesMap, wiringsMeta, metaTypes, resolvedIOTypes, rpcInternalMapDeclarationFile) => {
|
|
4
5
|
const requiredTypes = new Set();
|
|
5
6
|
const serializedCustomTypes = generateCustomTypes(typesMap, requiredTypes);
|
|
6
|
-
const serializedMetaTypes = generateMetaTypes(metaTypes, typesMap);
|
|
7
|
-
const serializedHTTPWirings = generateHTTPWirings(wiringsMeta,
|
|
8
|
-
const
|
|
7
|
+
const serializedMetaTypes = generateMetaTypes(metaTypes, typesMap, requiredTypes);
|
|
8
|
+
const serializedHTTPWirings = generateHTTPWirings(wiringsMeta, resolvedIOTypes, requiredTypes);
|
|
9
|
+
const needsFlattenedRPCMap = Array.from(requiredTypes).some((t) => t.includes('FlattenedRPCMap'));
|
|
10
|
+
if (needsFlattenedRPCMap) {
|
|
11
|
+
for (const t of Array.from(requiredTypes)) {
|
|
12
|
+
if (t.includes('FlattenedRPCMap')) {
|
|
13
|
+
requiredTypes.delete(t);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
const serializedImportMap = serializeImportMap(logger, relativeToPath, packageMappings, typesMap, requiredTypes);
|
|
18
|
+
const rpcMapImport = needsFlattenedRPCMap
|
|
19
|
+
? `import type { FlattenedRPCMap } from '${getFileImportRelativePath(relativeToPath, rpcInternalMapDeclarationFile, packageMappings)}'`
|
|
20
|
+
: '';
|
|
21
|
+
const serializedCustomTypesDeclarationsOnly = serializedCustomTypes
|
|
22
|
+
.split('\n')
|
|
23
|
+
.filter((line) => !line.startsWith('import '))
|
|
24
|
+
.join('\n');
|
|
9
25
|
return `/**
|
|
10
26
|
* This provides the structure needed for typescript to be aware of routes and their return types
|
|
11
27
|
*/
|
|
12
|
-
|
|
28
|
+
|
|
13
29
|
${serializedImportMap}
|
|
14
|
-
${
|
|
30
|
+
${rpcMapImport}
|
|
31
|
+
${serializedCustomTypesDeclarationsOnly}
|
|
15
32
|
${serializedMetaTypes}
|
|
16
33
|
|
|
17
34
|
interface HTTPWiringHandler<I, O> {
|
|
@@ -31,34 +48,21 @@ export type HTTPWiringsWithMethod<Method extends string> = {
|
|
|
31
48
|
}[keyof HTTPWiringsMap];
|
|
32
49
|
`;
|
|
33
50
|
};
|
|
34
|
-
function generateHTTPWirings(routesMeta,
|
|
35
|
-
// Initialize an object to collect routes
|
|
51
|
+
function generateHTTPWirings(routesMeta, resolvedIOTypes, requiredTypes) {
|
|
36
52
|
const routesObj = {};
|
|
37
53
|
for (const methods of Object.values(routesMeta)) {
|
|
38
54
|
for (const meta of Object.values(methods)) {
|
|
39
|
-
const { route, method,
|
|
40
|
-
const functionMeta = functionsMeta[pikkuFuncName];
|
|
41
|
-
if (!functionMeta) {
|
|
42
|
-
throw new Error(`Function ${pikkuFuncName} not found in functionsMeta. Please check your configuration.`);
|
|
43
|
-
}
|
|
44
|
-
const input = functionMeta.inputs ? functionMeta.inputs[0] : undefined;
|
|
45
|
-
const output = functionMeta.outputs ? functionMeta.outputs[0] : undefined;
|
|
46
|
-
// Initialize the route entry if it doesn't exist
|
|
55
|
+
const { route, method, pikkuFuncId } = meta;
|
|
47
56
|
if (!routesObj[route]) {
|
|
48
57
|
routesObj[route] = {};
|
|
49
58
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
requiredTypes.add(
|
|
56
|
-
|
|
57
|
-
// Add method entry
|
|
58
|
-
routesObj[route][method] = {
|
|
59
|
-
inputType,
|
|
60
|
-
outputType,
|
|
61
|
-
};
|
|
59
|
+
const resolved = resolvedIOTypes[pikkuFuncId];
|
|
60
|
+
if (!resolved) {
|
|
61
|
+
throw new Error(`Function ${pikkuFuncId} not found in resolvedIOTypes. Please check your configuration.`);
|
|
62
|
+
}
|
|
63
|
+
requiredTypes.add(resolved.inputType);
|
|
64
|
+
requiredTypes.add(resolved.outputType);
|
|
65
|
+
routesObj[route][method] = resolved;
|
|
62
66
|
}
|
|
63
67
|
}
|
|
64
68
|
// Build the routes object as a string
|
|
@@ -73,9 +77,17 @@ function generateHTTPWirings(routesMeta, functionsMeta, typesMap, requiredTypes)
|
|
|
73
77
|
routesStr += '};';
|
|
74
78
|
return routesStr;
|
|
75
79
|
}
|
|
76
|
-
const generateMetaTypes = (metaTypes, typesMap) => {
|
|
80
|
+
const generateMetaTypes = (metaTypes, typesMap, requiredTypes) => {
|
|
77
81
|
const nameToTypeMap = Array.from(metaTypes.entries()).reduce((result, [_name, { query, body, params }]) => {
|
|
78
|
-
|
|
82
|
+
let uniqueName;
|
|
83
|
+
try {
|
|
84
|
+
uniqueName = typesMap.getTypeMeta(_name).uniqueName;
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
// Zod-derived schema - use the name directly
|
|
88
|
+
uniqueName = _name;
|
|
89
|
+
}
|
|
90
|
+
requiredTypes.add(uniqueName);
|
|
79
91
|
const queryType = query && query.length > 0
|
|
80
92
|
? `Pick<${uniqueName}, '${query?.join("' | '")}'>`
|
|
81
93
|
: undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const pikkuMCPJSON:
|
|
1
|
+
export declare const pikkuMCPJSON: import("#pikku").PikkuFunctionConfig<void, void, "session" | "rpc", import("#pikku").PikkuFunctionSessionless<void, void, "session" | "rpc", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "session" | "rpc", import("#pikku").Services>, undefined, undefined>;
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import { pikkuSessionlessFunc } from '
|
|
1
|
+
import { pikkuSessionlessFunc } from '#pikku';
|
|
2
2
|
import { writeFileInDir } from '../../../utils/file-writer.js';
|
|
3
3
|
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
|
|
4
|
-
import { serializeMCPJson } from '
|
|
4
|
+
import { serializeMCPJson } from '@pikku/inspector';
|
|
5
5
|
export const pikkuMCPJSON = pikkuSessionlessFunc({
|
|
6
6
|
func: async ({ logger, config, getInspectorState }) => {
|
|
7
|
-
const
|
|
8
|
-
const { mcpJsonFile
|
|
9
|
-
// Generate MCP JSON file
|
|
7
|
+
const state = await getInspectorState();
|
|
8
|
+
const { mcpJsonFile } = config;
|
|
10
9
|
if (mcpJsonFile) {
|
|
11
|
-
const mcpJson =
|
|
10
|
+
const mcpJson = serializeMCPJson(logger, state);
|
|
12
11
|
await writeFileInDir(logger, mcpJsonFile, mcpJson, {
|
|
13
12
|
ignoreModifyComment: true,
|
|
14
13
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const pikkuMCPTypes:
|
|
1
|
+
export declare const pikkuMCPTypes: import("#pikku").PikkuFunctionConfig<void, void, "session" | "rpc", import("#pikku").PikkuFunctionSessionless<void, void, "session" | "rpc", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "session" | "rpc", import("#pikku").Services>, undefined, undefined>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { pikkuSessionlessFunc } from '
|
|
1
|
+
import { pikkuSessionlessFunc } from '#pikku';
|
|
2
2
|
import { writeFileInDir } from '../../../utils/file-writer.js';
|
|
3
3
|
import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
|
|
4
4
|
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const pikkuMCP:
|
|
1
|
+
export declare const pikkuMCP: import("#pikku").PikkuFunctionConfig<void, boolean | undefined, "session" | "rpc", import("#pikku").PikkuFunctionSessionless<void, boolean | undefined, "session" | "rpc", import("#pikku").Services> | import("#pikku").PikkuFunction<void, boolean | undefined, "session" | "rpc", import("#pikku").Services>, undefined, undefined>;
|
|
@@ -1,22 +1,32 @@
|
|
|
1
|
-
import { pikkuSessionlessFunc } from '
|
|
1
|
+
import { pikkuSessionlessFunc } from '#pikku';
|
|
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
5
|
import { readFile } from 'fs/promises';
|
|
6
6
|
import { join } from 'path';
|
|
7
7
|
import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
|
|
8
|
+
import { stripVerboseFields, hasVerboseFields, } from '../../../utils/strip-verbose-meta.js';
|
|
8
9
|
// Helper function to generate arguments from schema
|
|
9
10
|
const generateArgumentsFromSchema = async (inputSchema, schemaDirectory, typesMap, logger) => {
|
|
10
11
|
if (!inputSchema)
|
|
11
12
|
return [];
|
|
12
|
-
if ([
|
|
13
|
+
if ([
|
|
14
|
+
'boolean',
|
|
15
|
+
'string',
|
|
16
|
+
'number',
|
|
17
|
+
'null',
|
|
18
|
+
'undefined',
|
|
19
|
+
'void',
|
|
20
|
+
'unknown',
|
|
21
|
+
'never',
|
|
22
|
+
].includes(inputSchema)) {
|
|
13
23
|
return [];
|
|
14
24
|
}
|
|
15
25
|
const uniqueName = typesMap.getUniqueName(inputSchema);
|
|
16
26
|
if (!uniqueName)
|
|
17
27
|
return [];
|
|
28
|
+
const schemaPath = join(schemaDirectory, 'schemas', `${uniqueName}.schema.json`);
|
|
18
29
|
try {
|
|
19
|
-
const schemaPath = join(schemaDirectory, 'schemas', `${uniqueName}.schema.json`);
|
|
20
30
|
const schemaContent = await readFile(schemaPath, 'utf-8');
|
|
21
31
|
const schema = JSON.parse(schemaContent);
|
|
22
32
|
const argumentsArray = [];
|
|
@@ -34,7 +44,8 @@ const generateArgumentsFromSchema = async (inputSchema, schemaDirectory, typesMa
|
|
|
34
44
|
return argumentsArray;
|
|
35
45
|
}
|
|
36
46
|
catch (e) {
|
|
37
|
-
logger.warn(`Could not load schema for type: ${uniqueName}`);
|
|
47
|
+
logger.warn(`Command MCP: Could not load schema for type: ${uniqueName} from ${schemaPath}`);
|
|
48
|
+
console.error(e);
|
|
38
49
|
return [];
|
|
39
50
|
}
|
|
40
51
|
};
|
|
@@ -42,11 +53,11 @@ export const pikkuMCP = pikkuSessionlessFunc({
|
|
|
42
53
|
func: async ({ logger, config, getInspectorState }) => {
|
|
43
54
|
const { mcpEndpoints, functions } = await getInspectorState();
|
|
44
55
|
const { mcpWiringsFile, mcpWiringsMetaFile, packageMappings, schemaDirectory, schema, } = config;
|
|
45
|
-
await writeFileInDir(logger, mcpWiringsFile, serializeFileImports('wireMCPResource
|
|
56
|
+
await writeFileInDir(logger, mcpWiringsFile, serializeFileImports('wireMCPResource', mcpWiringsFile, mcpEndpoints.files, packageMappings));
|
|
46
57
|
// Populate arguments for prompts meta before serializing
|
|
47
58
|
const promptsMetaWithArguments = { ...mcpEndpoints.promptsMeta };
|
|
48
59
|
for (const promptMeta of Object.values(promptsMetaWithArguments)) {
|
|
49
|
-
const functionMeta = functions.meta[promptMeta.
|
|
60
|
+
const functionMeta = functions.meta[promptMeta.pikkuFuncId];
|
|
50
61
|
if (functionMeta) {
|
|
51
62
|
const inputType = functionMeta.inputs?.[0];
|
|
52
63
|
promptMeta.arguments = await generateArgumentsFromSchema(inputType || null, schemaDirectory || '', functions.typesMap, logger);
|
|
@@ -57,7 +68,14 @@ export const pikkuMCP = pikkuSessionlessFunc({
|
|
|
57
68
|
toolsMeta: mcpEndpoints.toolsMeta,
|
|
58
69
|
promptsMeta: promptsMetaWithArguments,
|
|
59
70
|
};
|
|
60
|
-
|
|
71
|
+
// Write minimal JSON (runtime-only fields)
|
|
72
|
+
const minimalMeta = stripVerboseFields(metaData);
|
|
73
|
+
await writeFileInDir(logger, config.mcpWiringsMetaJsonFile, JSON.stringify(minimalMeta, null, 2));
|
|
74
|
+
// Write verbose JSON only if it has additional fields
|
|
75
|
+
if (hasVerboseFields(metaData)) {
|
|
76
|
+
const verbosePath = config.mcpWiringsMetaJsonFile.replace(/\.gen\.json$/, '-verbose.gen.json');
|
|
77
|
+
await writeFileInDir(logger, verbosePath, JSON.stringify(metaData, null, 2));
|
|
78
|
+
}
|
|
61
79
|
const jsonImportPath = getFileImportRelativePath(mcpWiringsMetaFile, config.mcpWiringsMetaJsonFile, packageMappings);
|
|
62
80
|
const supportsImportAttributes = schema?.supportsImportAttributes ?? false;
|
|
63
81
|
const importStatement = supportsImportAttributes
|
|
@@ -66,9 +84,9 @@ export const pikkuMCP = pikkuSessionlessFunc({
|
|
|
66
84
|
await writeFileInDir(logger, mcpWiringsMetaFile, `import { pikkuState } from '@pikku/core'
|
|
67
85
|
import type { MCPResourceMeta, MCPToolMeta, MCPPromptMeta } from '@pikku/core/mcp'
|
|
68
86
|
${importStatement}
|
|
69
|
-
pikkuState('mcp', 'resourcesMeta', metaData.resourcesMeta as MCPResourceMeta)
|
|
70
|
-
pikkuState('mcp', 'toolsMeta', metaData.toolsMeta as MCPToolMeta)
|
|
71
|
-
pikkuState('mcp', 'promptsMeta', metaData.promptsMeta as MCPPromptMeta)`);
|
|
87
|
+
pikkuState(null, 'mcp', 'resourcesMeta', metaData.resourcesMeta as MCPResourceMeta)
|
|
88
|
+
pikkuState(null, 'mcp', 'toolsMeta', metaData.toolsMeta as MCPToolMeta)
|
|
89
|
+
pikkuState(null, 'mcp', 'promptsMeta', metaData.promptsMeta as MCPPromptMeta)`);
|
|
72
90
|
return true;
|
|
73
91
|
},
|
|
74
92
|
middleware: [
|
|
@@ -8,10 +8,8 @@ export const serializeMCPTypes = (functionTypesImportPath) => {
|
|
|
8
8
|
|
|
9
9
|
import {
|
|
10
10
|
CoreMCPResource,
|
|
11
|
-
CoreMCPTool,
|
|
12
11
|
CoreMCPPrompt,
|
|
13
12
|
wireMCPResource as wireMCPResourceCore,
|
|
14
|
-
wireMCPTool as wireMCPToolCore,
|
|
15
13
|
wireMCPPrompt as wireMCPPromptCore,
|
|
16
14
|
MCPResourceResponse,
|
|
17
15
|
MCPToolResponse,
|
|
@@ -19,7 +17,9 @@ import {
|
|
|
19
17
|
AssertMCPResourceURIParams
|
|
20
18
|
} from '@pikku/core/mcp'
|
|
21
19
|
|
|
22
|
-
import type { PikkuFunctionConfig, PikkuFunctionSessionless } from '${functionTypesImportPath}'
|
|
20
|
+
import type { PikkuFunctionConfig, PikkuFunctionSessionless, PikkuMiddleware, PikkuPermission, InferSchemaOutput } from '${functionTypesImportPath}'
|
|
21
|
+
import type { CorePermissionGroup } from '@pikku/core'
|
|
22
|
+
import type { StandardSchemaV1 } from '@standard-schema/spec'
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
25
|
* Type definition for MCP resources that provide data to AI models.
|
|
@@ -29,13 +29,6 @@ import type { PikkuFunctionConfig, PikkuFunctionSessionless } from '${functionTy
|
|
|
29
29
|
*/
|
|
30
30
|
type MCPResourceWiring<In, URI extends string> = CoreMCPResource<PikkuFunctionConfig<In, MCPResourceResponse, 'rpc' | 'session' | 'mcp'>> & { uri: URI }
|
|
31
31
|
|
|
32
|
-
/**
|
|
33
|
-
* Type definition for MCP tools that AI models can invoke.
|
|
34
|
-
*
|
|
35
|
-
* @template In - Input type for the tool invocation
|
|
36
|
-
*/
|
|
37
|
-
type MCPToolWiring<In> = CoreMCPTool<PikkuFunctionConfig<In, MCPToolResponse, 'rpc' | 'session' | 'mcp'>>
|
|
38
|
-
|
|
39
32
|
/**
|
|
40
33
|
* Type definition for MCP prompts that provide templates to AI models.
|
|
41
34
|
*
|
|
@@ -57,19 +50,6 @@ export const wireMCPResource = <In, URI extends string>(
|
|
|
57
50
|
wireMCPResourceCore(mcpResource as any)
|
|
58
51
|
}
|
|
59
52
|
|
|
60
|
-
/**
|
|
61
|
-
* Registers an MCP tool with the Pikku framework.
|
|
62
|
-
* Tools are functions that AI models can invoke.
|
|
63
|
-
*
|
|
64
|
-
* @template In - Input type for the tool invocation
|
|
65
|
-
* @param mcpTool - MCP tool definition with action function
|
|
66
|
-
*/
|
|
67
|
-
export const wireMCPTool = <In>(
|
|
68
|
-
mcpTool: MCPToolWiring<In>
|
|
69
|
-
) => {
|
|
70
|
-
wireMCPToolCore(mcpTool as any)
|
|
71
|
-
}
|
|
72
|
-
|
|
73
53
|
/**
|
|
74
54
|
* Registers an MCP prompt with the Pikku framework.
|
|
75
55
|
* Prompts provide templates that AI models can use.
|
|
@@ -83,60 +63,123 @@ export const wireMCPPrompt = <In>(
|
|
|
83
63
|
wireMCPPromptCore(mcpPrompt as any)
|
|
84
64
|
}
|
|
85
65
|
|
|
66
|
+
/**
|
|
67
|
+
* Configuration for MCP prompt with Zod schema input validation.
|
|
68
|
+
*/
|
|
69
|
+
type MCPPromptFuncConfigWithSchema<InputSchema extends StandardSchemaV1> = {
|
|
70
|
+
func: PikkuFunctionSessionless<InferSchemaOutput<InputSchema>, MCPPromptResponse, 'mcp' | 'rpc'>
|
|
71
|
+
name?: string
|
|
72
|
+
input: InputSchema
|
|
73
|
+
}
|
|
74
|
+
|
|
86
75
|
/**
|
|
87
76
|
* Creates a function for handling MCP prompt requests.
|
|
88
77
|
* These functions generate prompt templates for AI models.
|
|
89
78
|
*
|
|
90
|
-
*
|
|
79
|
+
* Supports two patterns:
|
|
80
|
+
* 1. Generic types: \`pikkuMCPPromptFunc<Input>({ func: ... })\`
|
|
81
|
+
* 2. Zod schemas: \`pikkuMCPPromptFunc({ input: z.object(...), func: ... })\`
|
|
82
|
+
*
|
|
83
|
+
* @template In - Input type for the prompt parameters (inferred from schema if provided)
|
|
91
84
|
* @param func - Function definition, either direct function or configuration object
|
|
92
85
|
* @returns The unwrapped function for internal use
|
|
93
86
|
*/
|
|
94
|
-
export
|
|
87
|
+
export function pikkuMCPPromptFunc<InputSchema extends StandardSchemaV1>(
|
|
88
|
+
config: MCPPromptFuncConfigWithSchema<InputSchema>
|
|
89
|
+
): PikkuFunctionConfig<InferSchemaOutput<InputSchema>, MCPPromptResponse, 'mcp' | 'rpc'>
|
|
90
|
+
export function pikkuMCPPromptFunc<In>(
|
|
95
91
|
func:
|
|
96
|
-
| PikkuFunctionSessionless<In, MCPPromptResponse, 'mcp'>
|
|
92
|
+
| PikkuFunctionSessionless<In, MCPPromptResponse, 'mcp' | 'rpc'>
|
|
97
93
|
| {
|
|
98
|
-
func: PikkuFunctionSessionless<In, MCPPromptResponse, 'mcp'>
|
|
94
|
+
func: PikkuFunctionSessionless<In, MCPPromptResponse, 'mcp' | 'rpc'>
|
|
99
95
|
name?: string
|
|
100
96
|
}
|
|
101
|
-
): PikkuFunctionConfig<In, MCPPromptResponse, 'mcp'
|
|
97
|
+
): PikkuFunctionConfig<In, MCPPromptResponse, 'mcp' | 'rpc'>
|
|
98
|
+
export function pikkuMCPPromptFunc(func: any): any {
|
|
102
99
|
return typeof func === 'function' ? { func } : func
|
|
103
100
|
}
|
|
104
101
|
|
|
102
|
+
/**
|
|
103
|
+
* Configuration for MCP tool with Zod schema input validation.
|
|
104
|
+
*/
|
|
105
|
+
type MCPToolFuncConfigWithSchema<InputSchema extends StandardSchemaV1> = {
|
|
106
|
+
func: PikkuFunctionSessionless<InferSchemaOutput<InputSchema>, MCPToolResponse, 'mcp' | 'rpc'>
|
|
107
|
+
description?: string
|
|
108
|
+
tags?: string[]
|
|
109
|
+
title?: string
|
|
110
|
+
summary?: string
|
|
111
|
+
name?: string
|
|
112
|
+
middleware?: PikkuMiddleware[]
|
|
113
|
+
permissions?: CorePermissionGroup<PikkuPermission<InferSchemaOutput<InputSchema>>>
|
|
114
|
+
input: InputSchema
|
|
115
|
+
}
|
|
116
|
+
|
|
105
117
|
/**
|
|
106
118
|
* Creates a function for handling MCP tool invocations.
|
|
107
119
|
* These functions perform actions that AI models can request.
|
|
108
120
|
*
|
|
109
|
-
*
|
|
121
|
+
* Supports two patterns:
|
|
122
|
+
* 1. Generic types: \`pikkuMCPToolFunc<Input>({ func: ... })\`
|
|
123
|
+
* 2. Zod schemas: \`pikkuMCPToolFunc({ input: z.object(...), func: ... })\`
|
|
124
|
+
*
|
|
125
|
+
* @template In - Input type for the tool invocation (inferred from schema if provided)
|
|
110
126
|
* @param func - Function definition, either direct function or configuration object
|
|
111
127
|
* @returns The unwrapped function for internal use
|
|
112
128
|
*/
|
|
113
|
-
export
|
|
129
|
+
export function pikkuMCPToolFunc<InputSchema extends StandardSchemaV1>(
|
|
130
|
+
config: MCPToolFuncConfigWithSchema<InputSchema>
|
|
131
|
+
): PikkuFunctionConfig<InferSchemaOutput<InputSchema>, MCPToolResponse, 'mcp' | 'rpc'>
|
|
132
|
+
export function pikkuMCPToolFunc<In>(
|
|
114
133
|
func:
|
|
115
|
-
| PikkuFunctionSessionless<In, MCPToolResponse, 'mcp'>
|
|
134
|
+
| PikkuFunctionSessionless<In, MCPToolResponse, 'mcp' | 'rpc'>
|
|
116
135
|
| {
|
|
117
|
-
func: PikkuFunctionSessionless<In, MCPToolResponse, 'mcp'>
|
|
136
|
+
func: PikkuFunctionSessionless<In, MCPToolResponse, 'mcp' | 'rpc'>
|
|
137
|
+
description?: string
|
|
138
|
+
tags?: string[]
|
|
139
|
+
title?: string
|
|
140
|
+
summary?: string
|
|
118
141
|
name?: string
|
|
142
|
+
middleware?: PikkuMiddleware[]
|
|
143
|
+
permissions?: CorePermissionGroup<PikkuPermission<In>>
|
|
119
144
|
}
|
|
120
|
-
): PikkuFunctionConfig<In, MCPToolResponse, 'mcp'
|
|
145
|
+
): PikkuFunctionConfig<In, MCPToolResponse, 'mcp' | 'rpc'>
|
|
146
|
+
export function pikkuMCPToolFunc(func: any): any {
|
|
121
147
|
return typeof func === 'function' ? { func } : func
|
|
122
148
|
}
|
|
123
149
|
|
|
150
|
+
/**
|
|
151
|
+
* Configuration for MCP resource with Zod schema input validation.
|
|
152
|
+
*/
|
|
153
|
+
type MCPResourceFuncConfigWithSchema<InputSchema extends StandardSchemaV1> = {
|
|
154
|
+
func: PikkuFunctionSessionless<InferSchemaOutput<InputSchema>, MCPResourceResponse, 'mcp' | 'rpc'>
|
|
155
|
+
name?: string
|
|
156
|
+
input: InputSchema
|
|
157
|
+
}
|
|
158
|
+
|
|
124
159
|
/**
|
|
125
160
|
* Creates a function for handling MCP resource requests.
|
|
126
161
|
* These functions provide data that AI models can access.
|
|
127
162
|
*
|
|
128
|
-
*
|
|
163
|
+
* Supports two patterns:
|
|
164
|
+
* 1. Generic types: \`pikkuMCPResourceFunc<Input>({ func: ... })\`
|
|
165
|
+
* 2. Zod schemas: \`pikkuMCPResourceFunc({ input: z.object(...), func: ... })\`
|
|
166
|
+
*
|
|
167
|
+
* @template In - Input type for the resource request (inferred from schema if provided)
|
|
129
168
|
* @param func - Function definition, either direct function or configuration object
|
|
130
169
|
* @returns The unwrapped function for internal use
|
|
131
170
|
*/
|
|
132
|
-
export
|
|
171
|
+
export function pikkuMCPResourceFunc<InputSchema extends StandardSchemaV1>(
|
|
172
|
+
config: MCPResourceFuncConfigWithSchema<InputSchema>
|
|
173
|
+
): PikkuFunctionConfig<InferSchemaOutput<InputSchema>, MCPResourceResponse, 'mcp' | 'rpc'>
|
|
174
|
+
export function pikkuMCPResourceFunc<In>(
|
|
133
175
|
func:
|
|
134
|
-
| PikkuFunctionSessionless<In, MCPResourceResponse, 'mcp'>
|
|
176
|
+
| PikkuFunctionSessionless<In, MCPResourceResponse, 'mcp' | 'rpc'>
|
|
135
177
|
| {
|
|
136
|
-
func: PikkuFunctionSessionless<In, MCPResourceResponse, 'mcp'>
|
|
178
|
+
func: PikkuFunctionSessionless<In, MCPResourceResponse, 'mcp' | 'rpc'>
|
|
137
179
|
name?: string
|
|
138
180
|
}
|
|
139
|
-
): PikkuFunctionConfig<In, MCPResourceResponse, 'mcp'
|
|
181
|
+
): PikkuFunctionConfig<In, MCPResourceResponse, 'mcp' | 'rpc'>
|
|
182
|
+
export function pikkuMCPResourceFunc(func: any): any {
|
|
140
183
|
return typeof func === 'function' ? { func } : func
|
|
141
184
|
}
|
|
142
185
|
`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const pikkuMiddleware:
|
|
1
|
+
export declare const pikkuMiddleware: import("#pikku").PikkuFunctionConfig<void, boolean | undefined, "session" | "rpc", import("#pikku").PikkuFunctionSessionless<void, boolean | undefined, "session" | "rpc", import("#pikku").Services> | import("#pikku").PikkuFunction<void, boolean | undefined, "session" | "rpc", import("#pikku").Services>, undefined, undefined>;
|
|
@@ -1,45 +1,25 @@
|
|
|
1
|
-
import { pikkuSessionlessFunc } from '
|
|
1
|
+
import { pikkuSessionlessFunc } from '#pikku';
|
|
2
2
|
import { writeFileInDir } from '../../../utils/file-writer.js';
|
|
3
3
|
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
|
|
4
4
|
import { serializeMiddlewareImports } from './serialize-middleware-imports.js';
|
|
5
|
-
import { serializeMiddlewareGroupsMeta } from './serialize-middleware-groups-meta.js';
|
|
6
|
-
import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
|
|
7
5
|
export const pikkuMiddleware = pikkuSessionlessFunc({
|
|
8
6
|
func: async ({ logger, config, getInspectorState }) => {
|
|
9
7
|
const state = await getInspectorState();
|
|
10
8
|
const { middleware } = state;
|
|
11
|
-
const { middlewareFile, packageMappings
|
|
9
|
+
const { middlewareFile, packageMappings } = config;
|
|
12
10
|
let filesGenerated = false;
|
|
13
|
-
// Check if there are any middleware groups
|
|
14
11
|
const hasHTTPGroups = state.http.routeMiddleware.size > 0;
|
|
15
12
|
const hasTagGroups = state.middleware.tagMiddleware.size > 0;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
13
|
+
const hasDefinitions = Object.keys(state.middleware.definitions).length > 0;
|
|
14
|
+
const hasChannelMiddleware = state.channelMiddleware.tagMiddleware.size > 0 ||
|
|
15
|
+
Object.keys(state.channelMiddleware.definitions).length > 0;
|
|
16
|
+
if (hasHTTPGroups ||
|
|
17
|
+
hasTagGroups ||
|
|
18
|
+
hasDefinitions ||
|
|
19
|
+
hasChannelMiddleware) {
|
|
20
|
+
const metaData = state.middlewareGroupsMeta;
|
|
19
21
|
await writeFileInDir(logger, config.middlewareGroupsMetaJsonFile, JSON.stringify(metaData, null, 2));
|
|
20
|
-
|
|
21
|
-
const jsonImportPath = getFileImportRelativePath(config.middlewareGroupsMetaFile, config.middlewareGroupsMetaJsonFile, packageMappings);
|
|
22
|
-
// Write TypeScript file that imports JSON
|
|
23
|
-
const supportsImportAttributes = schema?.supportsImportAttributes ?? false;
|
|
24
|
-
const importStatement = supportsImportAttributes
|
|
25
|
-
? `import metaData from '${jsonImportPath}' with { type: 'json' }`
|
|
26
|
-
: `import metaData from '${jsonImportPath}'`;
|
|
27
|
-
const tsContent = `import { pikkuState } from '@pikku/core'
|
|
28
|
-
${importStatement}
|
|
29
|
-
|
|
30
|
-
// HTTP middleware groups metadata
|
|
31
|
-
if (metaData.httpGroups && Object.keys(metaData.httpGroups).length > 0) {
|
|
32
|
-
pikkuState('middleware', 'httpGroupMeta', metaData.httpGroups)
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
// Tag middleware groups metadata
|
|
36
|
-
if (metaData.tagGroups && Object.keys(metaData.tagGroups).length > 0) {
|
|
37
|
-
pikkuState('middleware', 'tagGroupMeta', metaData.tagGroups)
|
|
38
|
-
}
|
|
39
|
-
`;
|
|
40
|
-
await writeFileInDir(logger, config.middlewareGroupsMetaFile, tsContent);
|
|
41
|
-
// Always generate middleware imports file when groups exist (even if empty)
|
|
42
|
-
await writeFileInDir(logger, middlewareFile, serializeMiddlewareImports(middlewareFile, middleware, state.http, packageMappings));
|
|
22
|
+
await writeFileInDir(logger, middlewareFile, serializeMiddlewareImports(middlewareFile, middleware, state.http, packageMappings, state));
|
|
43
23
|
filesGenerated = true;
|
|
44
24
|
}
|
|
45
25
|
return filesGenerated;
|
|
@@ -1,43 +1,38 @@
|
|
|
1
1
|
import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
|
|
2
|
-
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
// Collect factory imports and calls for HTTP middleware groups
|
|
6
|
-
const httpFactories = new Map();
|
|
7
|
-
for (const [, groupMeta] of httpState.routeMiddleware.entries()) {
|
|
8
|
-
if (groupMeta.exportName && groupMeta.isFactory) {
|
|
9
|
-
const filePath = getFileImportRelativePath(outputPath, groupMeta.sourceFile, packageMappings);
|
|
10
|
-
httpFactories.set(groupMeta.exportName, {
|
|
11
|
-
exportName: groupMeta.exportName,
|
|
12
|
-
filePath,
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
// Collect factory imports and calls for tag middleware groups
|
|
17
|
-
const tagFactories = new Map();
|
|
18
|
-
for (const [, groupMeta] of middlewareState.tagMiddleware.entries()) {
|
|
2
|
+
const collectFactories = (groupMap, outputPath, packageMappings) => {
|
|
3
|
+
const factories = new Map();
|
|
4
|
+
for (const [, groupMeta] of groupMap.entries()) {
|
|
19
5
|
if (groupMeta.exportName && groupMeta.isFactory) {
|
|
20
6
|
const filePath = getFileImportRelativePath(outputPath, groupMeta.sourceFile, packageMappings);
|
|
21
|
-
|
|
7
|
+
factories.set(groupMeta.exportName, {
|
|
22
8
|
exportName: groupMeta.exportName,
|
|
23
9
|
filePath,
|
|
24
10
|
});
|
|
25
11
|
}
|
|
26
12
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
13
|
+
return factories;
|
|
14
|
+
};
|
|
15
|
+
export const serializeMiddlewareImports = (outputPath, middlewareState, httpState, packageMappings = {}, fullState) => {
|
|
16
|
+
const serializedImports = [];
|
|
17
|
+
const serializedFactoryCalls = [];
|
|
18
|
+
const httpFactories = collectFactories(httpState.routeMiddleware, outputPath, packageMappings);
|
|
19
|
+
const tagFactories = collectFactories(middlewareState.tagMiddleware, outputPath, packageMappings);
|
|
20
|
+
const channelMiddlewareFactories = fullState
|
|
21
|
+
? collectFactories(fullState.channelMiddleware.tagMiddleware, outputPath, packageMappings)
|
|
22
|
+
: new Map();
|
|
23
|
+
const allFactories = new Map([
|
|
24
|
+
...httpFactories,
|
|
25
|
+
...tagFactories,
|
|
26
|
+
...channelMiddlewareFactories,
|
|
27
|
+
]);
|
|
30
28
|
if (allFactories.size > 0) {
|
|
31
29
|
serializedImports.push('/* Call middleware group factories to register at module evaluation */');
|
|
32
|
-
// Import factories
|
|
33
30
|
for (const [exportName, { filePath }] of allFactories) {
|
|
34
31
|
serializedImports.push(`import { ${exportName} } from '${filePath}'`);
|
|
35
32
|
}
|
|
36
|
-
// Call factories
|
|
37
33
|
for (const [exportName] of allFactories) {
|
|
38
34
|
serializedFactoryCalls.push(`${exportName}()`);
|
|
39
35
|
}
|
|
40
36
|
}
|
|
41
|
-
// Return combined output
|
|
42
37
|
return [...serializedImports, ...serializedFactoryCalls].join('\n');
|
|
43
38
|
};
|