@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
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { FunctionsMeta, JSONValue } from '@pikku/core';
|
|
2
2
|
import { HTTPWiringsMeta } from '@pikku/core/http';
|
|
3
|
-
import { TypesMap } from '@pikku/inspector';
|
|
3
|
+
import { TypesMap, ZodSchemaRef } from '@pikku/inspector';
|
|
4
4
|
import { CLILogger } from '../services/cli-logger.service.js';
|
|
5
|
-
export declare function generateSchemas(logger: CLILogger, tsconfig: string, typesMap: TypesMap, functionMeta: FunctionsMeta, httpWiringsMeta: HTTPWiringsMeta, additionalTypes?: string[], additionalProperties?: boolean): Promise<Record<string, JSONValue>>;
|
|
6
|
-
export declare function
|
|
5
|
+
export declare function generateSchemas(logger: CLILogger, tsconfig: string, typesMap: TypesMap, functionMeta: FunctionsMeta, httpWiringsMeta: HTTPWiringsMeta, additionalTypes?: string[], additionalProperties?: boolean, zodLookup?: Map<string, ZodSchemaRef>): Promise<Record<string, JSONValue>>;
|
|
6
|
+
export declare function generateZodSchemas(logger: CLILogger, zodLookup: Map<string, ZodSchemaRef>, typesMap: TypesMap): Promise<Record<string, JSONValue>>;
|
|
7
|
+
export declare function saveSchemas(logger: CLILogger, schemaParentDir: string, schemas: Record<string, JSONValue>, typesMap: TypesMap, functionsMeta: FunctionsMeta, supportsImportAttributes: boolean, additionalTypes?: string[], zodLookup?: Map<string, ZodSchemaRef>, packageName?: string | null): Promise<void>;
|
|
@@ -2,7 +2,68 @@ import { createGenerator, RootlessError } from 'ts-json-schema-generator';
|
|
|
2
2
|
import { writeFileInDir } from './file-writer.js';
|
|
3
3
|
import { mkdir, writeFile } from 'fs/promises';
|
|
4
4
|
import { ErrorCode } from '@pikku/inspector';
|
|
5
|
-
|
|
5
|
+
import { tsImport } from 'tsx/esm/api';
|
|
6
|
+
import * as z from 'zod';
|
|
7
|
+
import { zodToTs, createAuxiliaryTypeStore } from 'zod-to-ts';
|
|
8
|
+
import { createPrinter, createSourceFile, EmitHint, ScriptKind, ScriptTarget, } from 'typescript';
|
|
9
|
+
/**
|
|
10
|
+
* Convert a name to a valid JavaScript identifier.
|
|
11
|
+
* Replaces hyphens and other invalid characters with underscores.
|
|
12
|
+
*/
|
|
13
|
+
function toValidIdentifier(name) {
|
|
14
|
+
let result = name.replace(/[-./]/g, '_');
|
|
15
|
+
if (/^\d/.test(result)) {
|
|
16
|
+
result = '_' + result;
|
|
17
|
+
}
|
|
18
|
+
return result;
|
|
19
|
+
}
|
|
20
|
+
const PRIMITIVE_TYPES = new Set([
|
|
21
|
+
'boolean',
|
|
22
|
+
'string',
|
|
23
|
+
'number',
|
|
24
|
+
'null',
|
|
25
|
+
'undefined',
|
|
26
|
+
'void',
|
|
27
|
+
'any',
|
|
28
|
+
'unknown',
|
|
29
|
+
'never',
|
|
30
|
+
]);
|
|
31
|
+
/** Map TypeScript type strings to JSON Schema. Returns null if no schema should be generated. */
|
|
32
|
+
function primitiveTypeToSchema(typeStr) {
|
|
33
|
+
const normalized = typeStr.trim();
|
|
34
|
+
// void/undefined/never mean no data - don't generate a schema
|
|
35
|
+
if (normalized === 'void' ||
|
|
36
|
+
normalized === 'undefined' ||
|
|
37
|
+
normalized === 'never') {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
// Handle boolean literals
|
|
41
|
+
if (normalized === 'boolean' ||
|
|
42
|
+
normalized === 'false | true' ||
|
|
43
|
+
normalized === 'true | false') {
|
|
44
|
+
return { type: 'boolean' };
|
|
45
|
+
}
|
|
46
|
+
if (normalized === 'true') {
|
|
47
|
+
return { const: true };
|
|
48
|
+
}
|
|
49
|
+
if (normalized === 'false') {
|
|
50
|
+
return { const: false };
|
|
51
|
+
}
|
|
52
|
+
// Handle string
|
|
53
|
+
if (normalized === 'string') {
|
|
54
|
+
return { type: 'string' };
|
|
55
|
+
}
|
|
56
|
+
// Handle number
|
|
57
|
+
if (normalized === 'number') {
|
|
58
|
+
return { type: 'number' };
|
|
59
|
+
}
|
|
60
|
+
// Handle null
|
|
61
|
+
if (normalized === 'null') {
|
|
62
|
+
return { type: 'null' };
|
|
63
|
+
}
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
export async function generateSchemas(logger, tsconfig, typesMap, functionMeta, httpWiringsMeta, additionalTypes, additionalProperties = false, zodLookup) {
|
|
6
67
|
const schemasSet = new Set(typesMap.customTypes.keys());
|
|
7
68
|
for (const { inputs, outputs } of Object.values(functionMeta)) {
|
|
8
69
|
const types = [...(inputs || []), ...(outputs || [])];
|
|
@@ -31,7 +92,6 @@ export async function generateSchemas(logger, tsconfig, typesMap, functionMeta,
|
|
|
31
92
|
}
|
|
32
93
|
}
|
|
33
94
|
}
|
|
34
|
-
// Add additional types from schemasFromTypes config
|
|
35
95
|
if (additionalTypes) {
|
|
36
96
|
for (const type of additionalTypes) {
|
|
37
97
|
schemasSet.add(type);
|
|
@@ -51,21 +111,70 @@ export async function generateSchemas(logger, tsconfig, typesMap, functionMeta,
|
|
|
51
111
|
});
|
|
52
112
|
const schemas = {};
|
|
53
113
|
schemasSet.forEach((schema) => {
|
|
114
|
+
if (PRIMITIVE_TYPES.has(schema)) {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
if (zodLookup?.has(schema)) {
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
54
120
|
try {
|
|
55
121
|
schemas[schema] = generator.createSchema(schema);
|
|
56
122
|
}
|
|
57
123
|
catch (e) {
|
|
58
|
-
// Ignore rootless errors
|
|
59
124
|
if (e instanceof RootlessError) {
|
|
60
|
-
|
|
125
|
+
const customType = typesMap.customTypes.get(schema);
|
|
126
|
+
if (customType) {
|
|
127
|
+
const primitiveSchema = primitiveTypeToSchema(customType.type);
|
|
128
|
+
if (primitiveSchema) {
|
|
129
|
+
schemas[schema] = primitiveSchema;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
61
132
|
return;
|
|
62
133
|
}
|
|
63
|
-
|
|
134
|
+
const customType = typesMap.customTypes.get(schema);
|
|
135
|
+
logger.error(`[${ErrorCode.SCHEMA_GENERATION_ERROR}] Error generating schema: ${schema}. Message: ${e.message}. Type info: ${customType ? `type=${customType.type}` : 'not in typesMap'}`);
|
|
64
136
|
}
|
|
65
137
|
});
|
|
66
138
|
return schemas;
|
|
67
139
|
}
|
|
68
|
-
export async function
|
|
140
|
+
export async function generateZodSchemas(logger, zodLookup, typesMap) {
|
|
141
|
+
const schemas = {};
|
|
142
|
+
const auxiliaryTypeStore = createAuxiliaryTypeStore();
|
|
143
|
+
const printer = createPrinter();
|
|
144
|
+
const fakeSourceFile = createSourceFile('zod-types.ts', '', ScriptTarget.ESNext, false, ScriptKind.TS);
|
|
145
|
+
for (const [schemaName, ref] of zodLookup.entries()) {
|
|
146
|
+
try {
|
|
147
|
+
const module = await tsImport(ref.sourceFile, import.meta.url);
|
|
148
|
+
const zodSchema = module[ref.variableName];
|
|
149
|
+
if (!zodSchema) {
|
|
150
|
+
logger.warn(`Could not find exported schema '${ref.variableName}' in ${ref.sourceFile} for ${schemaName}. Available exports: ${Object.keys(module).join(', ')}`);
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
const schema = z.toJSONSchema(zodSchema);
|
|
154
|
+
// Remove fields with defaults from the required array
|
|
155
|
+
// Fields with defaults are semantically optional in input validation
|
|
156
|
+
if (schema.required && schema.properties) {
|
|
157
|
+
schema.required = schema.required.filter((fieldName) => {
|
|
158
|
+
const prop = schema.properties[fieldName];
|
|
159
|
+
return prop && prop.default === undefined;
|
|
160
|
+
});
|
|
161
|
+
if (schema.required.length === 0) {
|
|
162
|
+
delete schema.required;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
schemas[schemaName] = schema;
|
|
166
|
+
const { node: tsType } = zodToTs(zodSchema, { auxiliaryTypeStore });
|
|
167
|
+
const typeText = printer.printNode(EmitHint.Unspecified, tsType, fakeSourceFile);
|
|
168
|
+
typesMap.addCustomType(schemaName, typeText, []);
|
|
169
|
+
logger.info(`• Generated schema from Zod: ${schemaName}`);
|
|
170
|
+
}
|
|
171
|
+
catch (e) {
|
|
172
|
+
logger.warn(`Could not convert Zod schema '${schemaName}': ${e instanceof Error ? e.message : e}`);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
return schemas;
|
|
176
|
+
}
|
|
177
|
+
export async function saveSchemas(logger, schemaParentDir, schemas, typesMap, functionsMeta, supportsImportAttributes, additionalTypes, zodLookup, packageName) {
|
|
69
178
|
await writeFileInDir(logger, `${schemaParentDir}/register.gen.ts`, 'export const empty = null;');
|
|
70
179
|
const desiredSchemas = new Set([
|
|
71
180
|
...Object.values(functionsMeta)
|
|
@@ -76,7 +185,8 @@ export async function saveSchemas(logger, schemaParentDir, schemas, typesMap, fu
|
|
|
76
185
|
types.push(typesMap.getUniqueName(inputs[0]));
|
|
77
186
|
}
|
|
78
187
|
catch {
|
|
79
|
-
// Skip types not in typesMap
|
|
188
|
+
// Skip types not in typesMap - might be a zod schema name
|
|
189
|
+
types.push(inputs[0]);
|
|
80
190
|
}
|
|
81
191
|
}
|
|
82
192
|
if (outputs?.[0]) {
|
|
@@ -84,16 +194,17 @@ export async function saveSchemas(logger, schemaParentDir, schemas, typesMap, fu
|
|
|
84
194
|
types.push(typesMap.getUniqueName(outputs[0]));
|
|
85
195
|
}
|
|
86
196
|
catch {
|
|
87
|
-
// Skip types not in typesMap
|
|
197
|
+
// Skip types not in typesMap - might be a zod schema name
|
|
198
|
+
types.push(outputs[0]);
|
|
88
199
|
}
|
|
89
200
|
}
|
|
90
201
|
return types;
|
|
91
202
|
})
|
|
92
203
|
.flat()
|
|
93
|
-
.filter((s) => !!s &&
|
|
94
|
-
!['boolean', 'string', 'number', 'null', 'undefined'].includes(s)),
|
|
204
|
+
.filter((s) => !!s && !PRIMITIVE_TYPES.has(s)),
|
|
95
205
|
...typesMap.customTypes.keys(),
|
|
96
206
|
...(additionalTypes || []),
|
|
207
|
+
...(zodLookup ? Array.from(zodLookup.keys()) : []),
|
|
97
208
|
]);
|
|
98
209
|
if (desiredSchemas.size === 0) {
|
|
99
210
|
logger.info(`• Skipping schemas since none found.\x1b[0m`);
|
|
@@ -107,12 +218,21 @@ export async function saveSchemas(logger, schemaParentDir, schemas, typesMap, fu
|
|
|
107
218
|
}));
|
|
108
219
|
// Only include schemas that were successfully generated
|
|
109
220
|
const availableSchemas = Array.from(desiredSchemas).filter((schema) => schemas[schema]);
|
|
221
|
+
// Generate the packageName argument for addSchema calls
|
|
222
|
+
const packageNameArg = packageName ? `, '${packageName}'` : '';
|
|
110
223
|
const schemaImports = availableSchemas
|
|
111
|
-
.map((schema) =>
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
`
|
|
224
|
+
.map((schema) => {
|
|
225
|
+
const identifier = toValidIdentifier(schema);
|
|
226
|
+
return `
|
|
227
|
+
import * as ${identifier} from './schemas/${schema}.schema.json' ${supportsImportAttributes ? `with { type: 'json' }` : ''}
|
|
228
|
+
addSchema('${schema}', ${identifier}${packageNameArg})
|
|
229
|
+
`;
|
|
230
|
+
})
|
|
115
231
|
.join('\n');
|
|
116
|
-
|
|
232
|
+
// Only import addSchema if there are schemas to register
|
|
233
|
+
const importStatement = availableSchemas.length > 0
|
|
234
|
+
? `import { addSchema } from '@pikku/core/schema'`
|
|
235
|
+
: '// No schemas to register';
|
|
236
|
+
await writeFileInDir(logger, `${schemaParentDir}/register.gen.ts`, `${importStatement}
|
|
117
237
|
${schemaImports}`, { logWrite: true });
|
|
118
238
|
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions to strip verbose/visualization-only fields from meta objects
|
|
3
|
+
* for creating minimal runtime-only versions.
|
|
4
|
+
*
|
|
5
|
+
* Verbose fields are those used for UI/visualization but not needed at runtime:
|
|
6
|
+
* - tags, description, summary, errors
|
|
7
|
+
* - title, displayName
|
|
8
|
+
* - usedWires, isDirectFunction, services
|
|
9
|
+
* - stepName (in workflow nodes)
|
|
10
|
+
*
|
|
11
|
+
* Note: middleware and permissions are NOT verbose - they're needed at runtime
|
|
12
|
+
* for resolving tag middleware and permissions in function-runner.ts
|
|
13
|
+
*
|
|
14
|
+
* IMPORTANT: We only strip verbose fields at the direct meta entry level.
|
|
15
|
+
* For most meta types (HTTP, Queue, Scheduler, etc.), entries have pikkuFuncName.
|
|
16
|
+
* For workflow graphs, we strip at the root level AND from nodes.
|
|
17
|
+
* We do NOT strip from deeply nested structures like CLI options where 'description' is required.
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* Strip verbose fields from a meta object.
|
|
21
|
+
*
|
|
22
|
+
* Handles different meta structure patterns:
|
|
23
|
+
* 1. Single workflow graph: { name, pikkuFuncName, nodes: {...}, description, tags }
|
|
24
|
+
* -> Strips description, tags at root; strips stepName from each node
|
|
25
|
+
* 2. Record of meta entries: { "entryName": { pikkuFuncName, description, tags, ... } }
|
|
26
|
+
* -> Strips description, tags from each entry (one level deep only)
|
|
27
|
+
* 3. CLI meta and others with complex nesting: preserved as-is except for pikkuFuncName entries
|
|
28
|
+
*/
|
|
29
|
+
export declare function stripVerboseFields<T>(obj: T): T;
|
|
30
|
+
/**
|
|
31
|
+
* Check if an object has any verbose fields that would be stripped
|
|
32
|
+
*/
|
|
33
|
+
export declare function hasVerboseFields(obj: unknown): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Write both minimal and verbose meta files
|
|
36
|
+
* Only writes verbose file if it differs from minimal
|
|
37
|
+
*
|
|
38
|
+
* @returns Object with paths that were written
|
|
39
|
+
*/
|
|
40
|
+
export declare function writeMetaFiles(writeFile: (path: string, content: string) => Promise<void>, basePath: string, meta: unknown): Promise<{
|
|
41
|
+
minimal: string;
|
|
42
|
+
verbose?: string;
|
|
43
|
+
}>;
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions to strip verbose/visualization-only fields from meta objects
|
|
3
|
+
* for creating minimal runtime-only versions.
|
|
4
|
+
*
|
|
5
|
+
* Verbose fields are those used for UI/visualization but not needed at runtime:
|
|
6
|
+
* - tags, description, summary, errors
|
|
7
|
+
* - title, displayName
|
|
8
|
+
* - usedWires, isDirectFunction, services
|
|
9
|
+
* - stepName (in workflow nodes)
|
|
10
|
+
*
|
|
11
|
+
* Note: middleware and permissions are NOT verbose - they're needed at runtime
|
|
12
|
+
* for resolving tag middleware and permissions in function-runner.ts
|
|
13
|
+
*
|
|
14
|
+
* IMPORTANT: We only strip verbose fields at the direct meta entry level.
|
|
15
|
+
* For most meta types (HTTP, Queue, Scheduler, etc.), entries have pikkuFuncName.
|
|
16
|
+
* For workflow graphs, we strip at the root level AND from nodes.
|
|
17
|
+
* We do NOT strip from deeply nested structures like CLI options where 'description' is required.
|
|
18
|
+
*/
|
|
19
|
+
const VERBOSE_FIELDS = new Set([
|
|
20
|
+
'tags',
|
|
21
|
+
'description',
|
|
22
|
+
'summary',
|
|
23
|
+
'errors',
|
|
24
|
+
'title',
|
|
25
|
+
'displayName',
|
|
26
|
+
// Note: middleware and permissions are NOT verbose - they're needed at runtime
|
|
27
|
+
// for resolving tag middleware and permissions in function-runner.ts
|
|
28
|
+
'usedWires',
|
|
29
|
+
'isDirectFunction',
|
|
30
|
+
'services',
|
|
31
|
+
]);
|
|
32
|
+
/**
|
|
33
|
+
* Fields that are verbose only at the node level (workflow nodes)
|
|
34
|
+
*/
|
|
35
|
+
const NODE_VERBOSE_FIELDS = new Set(['stepName']);
|
|
36
|
+
/**
|
|
37
|
+
* Strip verbose fields from an object (shallow - only direct properties)
|
|
38
|
+
*/
|
|
39
|
+
function stripVerboseShallow(obj, additionalFields) {
|
|
40
|
+
if (obj === null ||
|
|
41
|
+
obj === undefined ||
|
|
42
|
+
typeof obj !== 'object' ||
|
|
43
|
+
Array.isArray(obj)) {
|
|
44
|
+
return obj;
|
|
45
|
+
}
|
|
46
|
+
const result = {};
|
|
47
|
+
const fieldsToStrip = additionalFields
|
|
48
|
+
? new Set([...VERBOSE_FIELDS, ...additionalFields])
|
|
49
|
+
: VERBOSE_FIELDS;
|
|
50
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
51
|
+
if (fieldsToStrip.has(key)) {
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
result[key] = value;
|
|
55
|
+
}
|
|
56
|
+
return result;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Check if an object has any verbose fields (shallow check)
|
|
60
|
+
*/
|
|
61
|
+
function hasVerboseShallow(obj, additionalFields) {
|
|
62
|
+
if (obj === null ||
|
|
63
|
+
obj === undefined ||
|
|
64
|
+
typeof obj !== 'object' ||
|
|
65
|
+
Array.isArray(obj)) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
const fieldsToCheck = additionalFields
|
|
69
|
+
? new Set([...VERBOSE_FIELDS, ...additionalFields])
|
|
70
|
+
: VERBOSE_FIELDS;
|
|
71
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
72
|
+
if (fieldsToCheck.has(key) && value !== undefined) {
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Strip verbose fields from a meta object.
|
|
80
|
+
*
|
|
81
|
+
* Handles different meta structure patterns:
|
|
82
|
+
* 1. Single workflow graph: { name, pikkuFuncName, nodes: {...}, description, tags }
|
|
83
|
+
* -> Strips description, tags at root; strips stepName from each node
|
|
84
|
+
* 2. Record of meta entries: { "entryName": { pikkuFuncName, description, tags, ... } }
|
|
85
|
+
* -> Strips description, tags from each entry (one level deep only)
|
|
86
|
+
* 3. CLI meta and others with complex nesting: preserved as-is except for pikkuFuncName entries
|
|
87
|
+
*/
|
|
88
|
+
export function stripVerboseFields(obj) {
|
|
89
|
+
if (obj === null || obj === undefined || typeof obj !== 'object') {
|
|
90
|
+
return obj;
|
|
91
|
+
}
|
|
92
|
+
if (Array.isArray(obj)) {
|
|
93
|
+
// Array of entries - strip from each
|
|
94
|
+
return obj.map((item) => {
|
|
95
|
+
if (typeof item === 'object' &&
|
|
96
|
+
item !== null &&
|
|
97
|
+
'pikkuFuncName' in item) {
|
|
98
|
+
return stripVerboseShallow(item);
|
|
99
|
+
}
|
|
100
|
+
return item;
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
const objRecord = obj;
|
|
104
|
+
// Case 1: Single workflow graph (has 'nodes' and 'pikkuFuncName' at root)
|
|
105
|
+
if ('nodes' in objRecord && 'pikkuFuncName' in objRecord) {
|
|
106
|
+
const result = {};
|
|
107
|
+
for (const [key, value] of Object.entries(objRecord)) {
|
|
108
|
+
if (VERBOSE_FIELDS.has(key)) {
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
if (key === 'nodes' && typeof value === 'object' && value !== null) {
|
|
112
|
+
// Strip stepName from each node
|
|
113
|
+
const nodes = {};
|
|
114
|
+
for (const [nodeId, node] of Object.entries(value)) {
|
|
115
|
+
nodes[nodeId] = stripVerboseShallow(node, NODE_VERBOSE_FIELDS);
|
|
116
|
+
}
|
|
117
|
+
result[key] = nodes;
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
result[key] = value;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return result;
|
|
124
|
+
}
|
|
125
|
+
// Case 2: Record of meta entries (each entry has pikkuFuncName)
|
|
126
|
+
// Only strip at exactly one level deep - the immediate children
|
|
127
|
+
const result = {};
|
|
128
|
+
for (const [key, value] of Object.entries(objRecord)) {
|
|
129
|
+
if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
|
|
130
|
+
const valueObj = value;
|
|
131
|
+
// Only strip from entries that look like meta entries (have pikkuFuncName)
|
|
132
|
+
if ('pikkuFuncName' in valueObj) {
|
|
133
|
+
result[key] = stripVerboseShallow(value);
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
// Keep nested structures as-is (e.g., CLI programs, options)
|
|
137
|
+
result[key] = value;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
result[key] = value;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return result;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Check if an object has any verbose fields that would be stripped
|
|
148
|
+
*/
|
|
149
|
+
export function hasVerboseFields(obj) {
|
|
150
|
+
if (obj === null || obj === undefined || typeof obj !== 'object') {
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
if (Array.isArray(obj)) {
|
|
154
|
+
return obj.some((item) => {
|
|
155
|
+
if (typeof item === 'object' &&
|
|
156
|
+
item !== null &&
|
|
157
|
+
'pikkuFuncName' in item) {
|
|
158
|
+
return hasVerboseShallow(item);
|
|
159
|
+
}
|
|
160
|
+
return false;
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
const objRecord = obj;
|
|
164
|
+
// Case 1: Single workflow graph
|
|
165
|
+
if ('nodes' in objRecord && 'pikkuFuncName' in objRecord) {
|
|
166
|
+
// Check root level
|
|
167
|
+
if (hasVerboseShallow(objRecord)) {
|
|
168
|
+
return true;
|
|
169
|
+
}
|
|
170
|
+
// Check nodes for stepName
|
|
171
|
+
const nodes = objRecord.nodes;
|
|
172
|
+
if (typeof nodes === 'object' && nodes !== null) {
|
|
173
|
+
for (const node of Object.values(nodes)) {
|
|
174
|
+
if (hasVerboseShallow(node, NODE_VERBOSE_FIELDS)) {
|
|
175
|
+
return true;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return false;
|
|
180
|
+
}
|
|
181
|
+
// Case 2: Record of meta entries
|
|
182
|
+
for (const value of Object.values(objRecord)) {
|
|
183
|
+
if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
|
|
184
|
+
const valueObj = value;
|
|
185
|
+
if ('pikkuFuncName' in valueObj && hasVerboseShallow(value)) {
|
|
186
|
+
return true;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return false;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Write both minimal and verbose meta files
|
|
194
|
+
* Only writes verbose file if it differs from minimal
|
|
195
|
+
*
|
|
196
|
+
* @returns Object with paths that were written
|
|
197
|
+
*/
|
|
198
|
+
export async function writeMetaFiles(writeFile, basePath, meta) {
|
|
199
|
+
const minimalMeta = stripVerboseFields(meta);
|
|
200
|
+
const minimalPath = basePath.replace(/\.gen\.json$/, '.gen.json');
|
|
201
|
+
const verbosePath = basePath.replace(/\.gen\.json$/, '-verbose.gen.json');
|
|
202
|
+
// Always write minimal
|
|
203
|
+
await writeFile(minimalPath, JSON.stringify(minimalMeta, null, 2));
|
|
204
|
+
// Only write verbose if it has additional fields
|
|
205
|
+
if (hasVerboseFields(meta)) {
|
|
206
|
+
await writeFile(verbosePath, JSON.stringify(meta, null, 2));
|
|
207
|
+
return { minimal: minimalPath, verbose: verbosePath };
|
|
208
|
+
}
|
|
209
|
+
return { minimal: minimalPath };
|
|
210
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../bin/pikku.ts","../src/cli.wiring.ts","../src/services.ts","../src/functions/commands/all.ts","../src/functions/commands/bootstrap.ts","../src/functions/commands/watch.ts","../src/functions/runtimes/nextjs/pikku-command-nextjs.ts","../src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.ts","../src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.ts","../src/functions/wirings/channels/pikku-channels.ts","../src/functions/wirings/channels/pikku-command-channel-types.ts","../src/functions/wirings/channels/pikku-command-channels-map.ts","../src/functions/wirings/channels/pikku-command-channels.ts","../src/functions/wirings/channels/pikku-command-websocket-typed.ts","../src/functions/wirings/channels/serialize-channel-types.ts","../src/functions/wirings/channels/serialize-typed-channel-map.ts","../src/functions/wirings/channels/serialize-websocket-wrapper.ts","../src/functions/wirings/cli/pikku-command-cli-entry.ts","../src/functions/wirings/cli/pikku-command-cli-types.ts","../src/functions/wirings/cli/pikku-command-cli.ts","../src/functions/wirings/cli/serialize-channel-cli-client.ts","../src/functions/wirings/cli/serialize-channel-cli.ts","../src/functions/wirings/cli/serialize-cli-types.ts","../src/functions/wirings/cli/serialize-local-cli-bootstrap.ts","../src/functions/wirings/fetch/index.ts","../src/functions/wirings/functions/pikku-command-function-types-split.ts","../src/functions/wirings/functions/pikku-command-function-types.ts","../src/functions/wirings/functions/pikku-command-functions.ts","../src/functions/wirings/functions/pikku-command-services.ts","../src/functions/wirings/functions/pikku-function-types.ts","../src/functions/wirings/functions/schemas.ts","../src/functions/wirings/functions/serialize-function-imports.ts","../src/functions/wirings/functions/serialize-function-types.ts","../src/functions/wirings/functions/serialize-pikku-types-hub.ts","../src/functions/wirings/http/openapi-spec-generator.ts","../src/functions/wirings/http/pikku-command-http-map.ts","../src/functions/wirings/http/pikku-command-http-routes.ts","../src/functions/wirings/http/pikku-command-http-types.ts","../src/functions/wirings/http/pikku-command-openapi.ts","../src/functions/wirings/http/pikku-http-routes.ts","../src/functions/wirings/http/serialize-fetch-wrapper.ts","../src/functions/wirings/http/serialize-http-types.ts","../src/functions/wirings/http/serialize-typed-http-map.ts","../src/functions/wirings/mcp/pikku-command-mcp-json.ts","../src/functions/wirings/mcp/pikku-command-mcp-types.ts","../src/functions/wirings/mcp/pikku-command-mcp.ts","../src/functions/wirings/mcp/serialize-mcp-json.ts","../src/functions/wirings/mcp/serialize-mcp-types.ts","../src/functions/wirings/middleware/pikku-command-middleware.ts","../src/functions/wirings/middleware/serialize-middleware-groups-meta.ts","../src/functions/wirings/middleware/serialize-middleware-imports.ts","../src/functions/wirings/permissions/pikku-command-permissions.ts","../src/functions/wirings/permissions/serialize-permissions-imports.ts","../src/functions/wirings/queue/pikku-command-queue-map.ts","../src/functions/wirings/queue/pikku-command-queue-service.ts","../src/functions/wirings/queue/pikku-command-queue-types.ts","../src/functions/wirings/queue/pikku-command-queue.ts","../src/functions/wirings/queue/pikku-queue-map.ts","../src/functions/wirings/queue/pikku-queue.ts","../src/functions/wirings/queue/serialize-queue-map.ts","../src/functions/wirings/queue/serialize-queue-meta.ts","../src/functions/wirings/queue/serialize-queue-types.ts","../src/functions/wirings/queue/serialize-queue-wrapper.ts","../src/functions/wirings/rpc/pikku-command-public-rpc.ts","../src/functions/wirings/rpc/pikku-command-remote-rpc.ts","../src/functions/wirings/rpc/pikku-command-rpc-client.ts","../src/functions/wirings/rpc/pikku-command-rpc-map.ts","../src/functions/wirings/rpc/pikku-command-rpc.ts","../src/functions/wirings/rpc/serialize-public-rpc.ts","../src/functions/wirings/rpc/serialize-remote-rpc.ts","../src/functions/wirings/rpc/serialize-rpc-wrapper.ts","../src/functions/wirings/rpc/serialize-typed-rpc-map.ts","../src/functions/wirings/scheduler/pikku-command-scheduler-types.ts","../src/functions/wirings/scheduler/pikku-command-scheduler.ts","../src/functions/wirings/scheduler/serialize-scheduler-meta.ts","../src/functions/wirings/scheduler/serialize-scheduler-types.ts","../src/functions/wirings/services/pikku-command-service-metadata.ts","../src/functions/wirings/workflow/pikku-command-workflow
|
|
1
|
+
{"root":["../bin/pikku.ts","../src/cli.wiring.ts","../src/services.ts","../src/functions/commands/all.ts","../src/functions/commands/bootstrap.ts","../src/functions/commands/watch.ts","../src/functions/runtimes/nextjs/pikku-command-nextjs.ts","../src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.ts","../src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.ts","../src/functions/wirings/channels/pikku-channels.ts","../src/functions/wirings/channels/pikku-command-channel-types.ts","../src/functions/wirings/channels/pikku-command-channels-map.ts","../src/functions/wirings/channels/pikku-command-channels.ts","../src/functions/wirings/channels/pikku-command-websocket-typed.ts","../src/functions/wirings/channels/serialize-channel-types.ts","../src/functions/wirings/channels/serialize-typed-channel-map.ts","../src/functions/wirings/channels/serialize-websocket-wrapper.ts","../src/functions/wirings/cli/pikku-command-cli-entry.ts","../src/functions/wirings/cli/pikku-command-cli-types.ts","../src/functions/wirings/cli/pikku-command-cli.ts","../src/functions/wirings/cli/serialize-channel-cli-client.ts","../src/functions/wirings/cli/serialize-channel-cli.ts","../src/functions/wirings/cli/serialize-cli-types.ts","../src/functions/wirings/cli/serialize-local-cli-bootstrap.ts","../src/functions/wirings/fetch/index.ts","../src/functions/wirings/forge/pikku-command-forge-nodes.ts","../src/functions/wirings/forge/pikku-command-forge-types.ts","../src/functions/wirings/forge/serialize-forge-types.ts","../src/functions/wirings/functions/pikku-command-function-types-split.ts","../src/functions/wirings/functions/pikku-command-function-types.ts","../src/functions/wirings/functions/pikku-command-functions.ts","../src/functions/wirings/functions/pikku-command-services.ts","../src/functions/wirings/functions/pikku-function-types.ts","../src/functions/wirings/functions/schemas.ts","../src/functions/wirings/functions/serialize-function-imports.ts","../src/functions/wirings/functions/serialize-function-types.ts","../src/functions/wirings/functions/serialize-pikku-types-hub.ts","../src/functions/wirings/http/openapi-spec-generator.ts","../src/functions/wirings/http/pikku-command-http-map.ts","../src/functions/wirings/http/pikku-command-http-routes.ts","../src/functions/wirings/http/pikku-command-http-types.ts","../src/functions/wirings/http/pikku-command-openapi.ts","../src/functions/wirings/http/pikku-http-routes.ts","../src/functions/wirings/http/serialize-fetch-wrapper.ts","../src/functions/wirings/http/serialize-http-types.ts","../src/functions/wirings/http/serialize-typed-http-map.ts","../src/functions/wirings/mcp/pikku-command-mcp-json.ts","../src/functions/wirings/mcp/pikku-command-mcp-types.ts","../src/functions/wirings/mcp/pikku-command-mcp.ts","../src/functions/wirings/mcp/serialize-mcp-json.ts","../src/functions/wirings/mcp/serialize-mcp-types.ts","../src/functions/wirings/middleware/pikku-command-middleware.ts","../src/functions/wirings/middleware/serialize-middleware-groups-meta.ts","../src/functions/wirings/middleware/serialize-middleware-imports.ts","../src/functions/wirings/package/pikku-command-package.ts","../src/functions/wirings/package/serialize-package.ts","../src/functions/wirings/permissions/pikku-command-permissions.ts","../src/functions/wirings/permissions/serialize-permissions-imports.ts","../src/functions/wirings/queue/pikku-command-queue-map.ts","../src/functions/wirings/queue/pikku-command-queue-service.ts","../src/functions/wirings/queue/pikku-command-queue-types.ts","../src/functions/wirings/queue/pikku-command-queue.ts","../src/functions/wirings/queue/pikku-queue-map.ts","../src/functions/wirings/queue/pikku-queue.ts","../src/functions/wirings/queue/serialize-queue-map.ts","../src/functions/wirings/queue/serialize-queue-meta.ts","../src/functions/wirings/queue/serialize-queue-types.ts","../src/functions/wirings/queue/serialize-queue-wrapper.ts","../src/functions/wirings/rpc/pikku-command-public-rpc.ts","../src/functions/wirings/rpc/pikku-command-remote-rpc.ts","../src/functions/wirings/rpc/pikku-command-rpc-client.ts","../src/functions/wirings/rpc/pikku-command-rpc-map.ts","../src/functions/wirings/rpc/pikku-command-rpc.ts","../src/functions/wirings/rpc/serialize-public-rpc.ts","../src/functions/wirings/rpc/serialize-remote-rpc.ts","../src/functions/wirings/rpc/serialize-rpc-wrapper.ts","../src/functions/wirings/rpc/serialize-typed-rpc-map.ts","../src/functions/wirings/scheduler/pikku-command-scheduler-types.ts","../src/functions/wirings/scheduler/pikku-command-scheduler.ts","../src/functions/wirings/scheduler/serialize-scheduler-meta.ts","../src/functions/wirings/scheduler/serialize-scheduler-types.ts","../src/functions/wirings/services/pikku-command-service-metadata.ts","../src/functions/wirings/workflow/pikku-command-workflow.ts","../src/functions/wirings/workflow/serialize-workflow-map.ts","../src/functions/wirings/workflow/serialize-workflow-meta.ts","../src/functions/wirings/workflow/serialize-workflow-registration.ts","../src/functions/wirings/workflow/serialize-workflow-types.ts","../src/functions/wirings/workflow/serialize-workflow-workers.ts","../src/middleware/log-command-info-and-time.ts","../src/services/cli-logger-forwarder.service.ts","../src/services/cli-logger.service.ts","../src/utils/check-required-types.ts","../src/utils/command-summary.ts","../src/utils/custom-types-generator.ts","../src/utils/file-import-path.ts","../src/utils/file-imports-serializer.ts","../src/utils/file-writer.ts","../src/utils/generate-bootstrap-file.ts","../src/utils/get-cli-version.ts","../src/utils/pikku-cli-config.ts","../src/utils/pikku-files-and-methods.ts","../src/utils/schema-generator.ts","../src/utils/serialize-import-map.ts","../src/utils/strip-verbose-meta.ts","../.pikku/pikku-bootstrap.gen.ts","../.pikku/pikku-services.gen.ts","../.pikku/pikku-types.gen.ts","../.pikku/pikku-websocket.gen.ts","../.pikku/channel/pikku-channel-types.gen.ts","../.pikku/channel/pikku-channels-map.gen.d.ts","../.pikku/channel/pikku-channels-meta.gen.ts","../.pikku/channel/pikku-channels.gen.ts","../.pikku/cli/pikku-cli-channel.ts","../.pikku/cli/pikku-cli-client.gen.ts","../.pikku/cli/pikku-cli-types.gen.ts","../.pikku/cli/pikku-cli-wirings-meta.gen.ts","../.pikku/cli/pikku-cli-wirings.gen.ts","../.pikku/cli/pikku-cli.gen.ts","../.pikku/forge/pikku-forge-types.gen.ts","../.pikku/function/pikku-function-types.gen.ts","../.pikku/function/pikku-functions-meta.gen.ts","../.pikku/http/pikku-http-types.gen.ts","../.pikku/http/pikku-http-wirings-map.gen.d.ts","../.pikku/http/pikku-http-wirings-meta.gen.ts","../.pikku/http/pikku-http-wirings.gen.ts","../.pikku/mcp/pikku-mcp-types.gen.ts","../.pikku/mcp/pikku-mcp-wirings-meta.gen.ts","../.pikku/mcp/pikku-mcp-wirings.gen.ts","../.pikku/queue/pikku-queue-types.gen.ts","../.pikku/queue/pikku-queue-workers-wirings-map.gen.d.ts","../.pikku/queue/pikku-queue-workers-wirings-meta.gen.ts","../.pikku/queue/pikku-queue-workers-wirings.gen.ts","../.pikku/rpc/pikku-remote-rpc-workers.gen.ts","../.pikku/rpc/pikku-rpc-wirings-map.gen.d.ts","../.pikku/rpc/pikku-rpc-wirings-map.internal.gen.d.ts","../.pikku/scheduler/pikku-scheduler-types.gen.ts","../.pikku/scheduler/pikku-schedulers-wirings-meta.gen.ts","../.pikku/scheduler/pikku-schedulers-wirings.gen.ts","../.pikku/schemas/register.gen.ts","../.pikku/workflow/pikku-workflow-map.gen.d.ts","../.pikku/workflow/pikku-workflow-types.gen.ts","../.pikku/workflow/pikku-workflow-wirings-meta.gen.ts","../.pikku/workflow/pikku-workflow-wirings.gen.ts","../types/application-types.d.ts","../types/config.d.ts"],"version":"5.9.3"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pikku/cli",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.3",
|
|
4
4
|
"author": "yasser.fadl@gmail.com",
|
|
5
5
|
"license": "BUSL-1.1",
|
|
6
6
|
"bin": {
|
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@openapi-contrib/json-schema-to-openapi-schema": "^4.3.0",
|
|
24
|
-
"@pikku/core": "^0.11.
|
|
25
|
-
"@pikku/inspector": "^0.11.
|
|
24
|
+
"@pikku/core": "^0.11.2",
|
|
25
|
+
"@pikku/inspector": "^0.11.2",
|
|
26
26
|
"@types/cookie": "^1.0.0",
|
|
27
27
|
"@types/json-schema": "^7.0.15",
|
|
28
28
|
"chalk": "^5.6.2",
|
|
@@ -32,8 +32,11 @@
|
|
|
32
32
|
"path-to-regexp": "^8.3.0",
|
|
33
33
|
"tinyglobby": "^0.2.12",
|
|
34
34
|
"ts-json-schema-generator": "^2.4.0",
|
|
35
|
+
"tsx": "^4.19.0",
|
|
35
36
|
"typescript": "^5.9",
|
|
36
|
-
"yaml": "^2.8.1"
|
|
37
|
+
"yaml": "^2.8.1",
|
|
38
|
+
"zod": "^4.0.0",
|
|
39
|
+
"zod-to-ts": "^2.0.0"
|
|
37
40
|
},
|
|
38
41
|
"devDependencies": {
|
|
39
42
|
"@types/node": "^24.10.1"
|