@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,14 +1,16 @@
|
|
|
1
1
|
import { serializeImportMap } from '../../../utils/serialize-import-map.js';
|
|
2
2
|
import { generateCustomTypes } from '../../../utils/custom-types-generator.js';
|
|
3
|
-
export const serializeTypedRPCMap = (relativeToPath, packageMappings, typesMap, functionsMeta, rpcMeta) => {
|
|
3
|
+
export const serializeTypedRPCMap = (relativeToPath, packageMappings, typesMap, functionsMeta, rpcMeta, externalPackages) => {
|
|
4
4
|
const requiredTypes = new Set();
|
|
5
5
|
const serializedCustomTypes = generateCustomTypes(typesMap, requiredTypes);
|
|
6
6
|
const serializedRPCs = generateRPCs(rpcMeta, functionsMeta, typesMap, requiredTypes);
|
|
7
7
|
const serializedImportMap = serializeImportMap(relativeToPath, packageMappings, typesMap, requiredTypes);
|
|
8
|
+
const externalPackageImports = generateExternalPackageImports(externalPackages, relativeToPath);
|
|
9
|
+
const mergedRPCMap = generateMergedRPCMap(externalPackages);
|
|
8
10
|
return `/**
|
|
9
11
|
* This provides the structure needed for typescript to be aware of RPCs and their return types
|
|
10
12
|
*/
|
|
11
|
-
|
|
13
|
+
|
|
12
14
|
${serializedImportMap}
|
|
13
15
|
${serializedCustomTypes}
|
|
14
16
|
|
|
@@ -18,14 +20,16 @@ interface RPCHandler<I, O> {
|
|
|
18
20
|
}
|
|
19
21
|
|
|
20
22
|
${serializedRPCs}
|
|
23
|
+
${externalPackageImports}
|
|
24
|
+
${mergedRPCMap}
|
|
21
25
|
|
|
22
|
-
export type RPCInvoke = <Name extends keyof
|
|
26
|
+
export type RPCInvoke = <Name extends keyof FlattenedRPCMap>(
|
|
23
27
|
name: Name,
|
|
24
|
-
data:
|
|
28
|
+
data: FlattenedRPCMap[Name]['input'],
|
|
25
29
|
options?: {
|
|
26
30
|
location?: 'local' | 'remote' | 'auto'
|
|
27
31
|
}
|
|
28
|
-
) => Promise<
|
|
32
|
+
) => Promise<FlattenedRPCMap[Name]['output']>
|
|
29
33
|
|
|
30
34
|
// Import WorkflowMap for workflow typing
|
|
31
35
|
import type { WorkflowMap } from '../workflow/pikku-workflow-map.gen.js'
|
|
@@ -42,6 +46,46 @@ export type TypedPikkuRPC = {
|
|
|
42
46
|
}
|
|
43
47
|
`;
|
|
44
48
|
};
|
|
49
|
+
function generateExternalPackageImports(externalPackages, relativeToPath) {
|
|
50
|
+
if (!externalPackages || Object.keys(externalPackages).length === 0) {
|
|
51
|
+
return '';
|
|
52
|
+
}
|
|
53
|
+
let imports = '\n// External package RPC maps\n';
|
|
54
|
+
for (const [namespace, packageName] of Object.entries(externalPackages)) {
|
|
55
|
+
// Import the RPCMap from each external package's internal RPC map
|
|
56
|
+
// Use .js extension - package.json exports will resolve to .d.ts for types
|
|
57
|
+
imports += `import type { RPCMap as ${toPascalCase(namespace)}RPCMap } from '${packageName}/.pikku/rpc/pikku-rpc-wirings-map.internal.gen.js'\n`;
|
|
58
|
+
}
|
|
59
|
+
return imports;
|
|
60
|
+
}
|
|
61
|
+
function generateMergedRPCMap(externalPackages) {
|
|
62
|
+
if (!externalPackages || Object.keys(externalPackages).length === 0) {
|
|
63
|
+
return `
|
|
64
|
+
// No external packages, use RPCMap directly
|
|
65
|
+
export type FlattenedRPCMap = RPCMap
|
|
66
|
+
`;
|
|
67
|
+
}
|
|
68
|
+
// TypeScript utility to flatten namespaced RPC maps
|
|
69
|
+
const utilityTypes = `
|
|
70
|
+
// Utility type to prefix keys with namespace
|
|
71
|
+
type PrefixKeys<T, Prefix extends string> = {
|
|
72
|
+
[K in keyof T as \`\${Prefix}:\${string & K}\`]: T[K]
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// Merge all RPC maps with namespace prefixes
|
|
76
|
+
export type FlattenedRPCMap =
|
|
77
|
+
RPCMap${Object.keys(externalPackages)
|
|
78
|
+
.map((namespace) => ` & PrefixKeys<${toPascalCase(namespace)}RPCMap, '${namespace}'>`)
|
|
79
|
+
.join('')}
|
|
80
|
+
`;
|
|
81
|
+
return utilityTypes;
|
|
82
|
+
}
|
|
83
|
+
function toPascalCase(str) {
|
|
84
|
+
return str
|
|
85
|
+
.split(/[-_]/)
|
|
86
|
+
.map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
|
|
87
|
+
.join('');
|
|
88
|
+
}
|
|
45
89
|
function generateRPCs(rpcMeta, functionsMeta, typesMap, requiredTypes) {
|
|
46
90
|
// Initialize an object to collect RPCs
|
|
47
91
|
const rpcsObj = {};
|
|
@@ -54,14 +98,15 @@ function generateRPCs(rpcMeta, functionsMeta, typesMap, requiredTypes) {
|
|
|
54
98
|
const input = functionMeta.inputs ? functionMeta.inputs[0] : undefined;
|
|
55
99
|
const output = functionMeta.outputs ? functionMeta.outputs[0] : undefined;
|
|
56
100
|
// Store the input and output types for RPCHandler
|
|
57
|
-
//
|
|
101
|
+
// For zod-derived schemas, the type might not be in typesMap, so use the schema name directly
|
|
58
102
|
let inputType = 'null';
|
|
59
103
|
if (input) {
|
|
60
104
|
try {
|
|
61
105
|
inputType = typesMap.getTypeMeta(input).uniqueName;
|
|
62
106
|
}
|
|
63
107
|
catch {
|
|
64
|
-
|
|
108
|
+
// Type not in typesMap - use the name directly (e.g., zod-derived types)
|
|
109
|
+
inputType = input;
|
|
65
110
|
}
|
|
66
111
|
}
|
|
67
112
|
let outputType = 'null';
|
|
@@ -70,7 +115,8 @@ function generateRPCs(rpcMeta, functionsMeta, typesMap, requiredTypes) {
|
|
|
70
115
|
outputType = typesMap.getTypeMeta(output).uniqueName;
|
|
71
116
|
}
|
|
72
117
|
catch {
|
|
73
|
-
|
|
118
|
+
// Type not in typesMap - use the name directly (e.g., zod-derived types)
|
|
119
|
+
outputType = output;
|
|
74
120
|
}
|
|
75
121
|
}
|
|
76
122
|
requiredTypes.add(inputType);
|
|
@@ -4,12 +4,21 @@ import { writeFileInDir } from '../../../utils/file-writer.js';
|
|
|
4
4
|
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
|
|
5
5
|
import { serializeSchedulerMeta, serializeSchedulerMetaTS, } from './serialize-scheduler-meta.js';
|
|
6
6
|
import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
|
|
7
|
+
import { stripVerboseFields, hasVerboseFields, } from '../../../utils/strip-verbose-meta.js';
|
|
7
8
|
export const pikkuScheduler = pikkuSessionlessFunc({
|
|
8
9
|
func: async ({ logger, config, getInspectorState }) => {
|
|
9
10
|
const visitState = await getInspectorState();
|
|
10
11
|
const { schedulersWiringFile, schedulersWiringMetaFile, schedulersWiringMetaJsonFile, packageMappings, schema, } = config;
|
|
11
12
|
const { scheduledTasks } = visitState;
|
|
12
|
-
|
|
13
|
+
const fullMeta = serializeSchedulerMeta(scheduledTasks.meta);
|
|
14
|
+
// Write minimal JSON (runtime-only fields)
|
|
15
|
+
const minimalMeta = stripVerboseFields(fullMeta);
|
|
16
|
+
await writeFileInDir(logger, schedulersWiringMetaJsonFile, JSON.stringify(minimalMeta, null, 2));
|
|
17
|
+
// Write verbose JSON only if it has additional fields
|
|
18
|
+
if (hasVerboseFields(fullMeta)) {
|
|
19
|
+
const verbosePath = schedulersWiringMetaJsonFile.replace(/\.gen\.json$/, '-verbose.gen.json');
|
|
20
|
+
await writeFileInDir(logger, verbosePath, JSON.stringify(fullMeta, null, 2));
|
|
21
|
+
}
|
|
13
22
|
const jsonImportPath = getFileImportRelativePath(schedulersWiringMetaFile, schedulersWiringMetaJsonFile, packageMappings);
|
|
14
23
|
await writeFileInDir(logger, schedulersWiringMetaFile, serializeSchedulerMetaTS(scheduledTasks.meta, jsonImportPath, schema?.supportsImportAttributes ?? false));
|
|
15
24
|
await writeFileInDir(logger, schedulersWiringFile, serializeFileImports('addScheduledTasks', schedulersWiringFile, scheduledTasks.files, packageMappings));
|
|
@@ -10,7 +10,7 @@ export const serializeSchedulerMetaTS = (scheduledTasksMeta, jsonImportPath, sup
|
|
|
10
10
|
serializedOutput.push("import { ScheduledTasksMeta } from '@pikku/core/scheduler'");
|
|
11
11
|
serializedOutput.push(importStatement);
|
|
12
12
|
serializedOutput.push('');
|
|
13
|
-
serializedOutput.push("pikkuState('scheduler', 'meta', metaData as ScheduledTasksMeta)");
|
|
13
|
+
serializedOutput.push("pikkuState(null, 'scheduler', 'meta', metaData as ScheduledTasksMeta)");
|
|
14
14
|
serializedOutput.push('');
|
|
15
15
|
const scheduledTasksMetaValues = Object.values(scheduledTasksMeta);
|
|
16
16
|
if (scheduledTasksMetaValues.length > 0) {
|
|
@@ -1,22 +1,29 @@
|
|
|
1
1
|
import { pikkuSessionlessFunc } from '../../../../.pikku/pikku-types.gen.js';
|
|
2
|
-
import { ErrorCode } from '@pikku/inspector';
|
|
2
|
+
import { convertDslToGraph, ErrorCode } from '@pikku/inspector';
|
|
3
3
|
import { writeFileInDir } from '../../../utils/file-writer.js';
|
|
4
4
|
import { logCommandInfoAndTime } from '../../../middleware/log-command-info-and-time.js';
|
|
5
|
-
import { serializeWorkflowMeta, serializeWorkflowMetaTS, } from './serialize-workflow-meta.js';
|
|
6
5
|
import { serializeWorkflowTypes } from './serialize-workflow-types.js';
|
|
6
|
+
import { serializeWorkflowRegistration } from './serialize-workflow-registration.js';
|
|
7
7
|
import { serializeWorkflowMap } from './serialize-workflow-map.js';
|
|
8
|
+
import { serializeWorkflowMeta } from './serialize-workflow-meta.js';
|
|
8
9
|
import { serializeWorkflowWorkers } from './serialize-workflow-workers.js';
|
|
9
|
-
import { serializeWorkflowWirings } from './serialize-workflow-wirings.js';
|
|
10
10
|
import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
|
|
11
|
+
import { stripVerboseFields, hasVerboseFields, } from '../../../utils/strip-verbose-meta.js';
|
|
11
12
|
import { join } from 'path';
|
|
12
13
|
export const pikkuWorkflow = pikkuSessionlessFunc({
|
|
13
14
|
func: async ({ logger, config, getInspectorState }) => {
|
|
14
15
|
const visitState = await getInspectorState();
|
|
15
|
-
const { workflowsWiringFile, workflowsWiringMetaFile,
|
|
16
|
+
const { workflowsWiringFile, workflowsWiringMetaFile, workflowMetaDir, workflowMapDeclarationFile, workflowTypesFile, functionTypesFile, typesDeclarationFile, packageMappings, schema, } = config;
|
|
16
17
|
const { workflows, functions: functionState } = visitState;
|
|
17
18
|
const { typesMap } = functionState;
|
|
18
|
-
//
|
|
19
|
-
const
|
|
19
|
+
// Get all workflow names (both DSL and graph-based)
|
|
20
|
+
const dslWorkflowNames = Object.keys(workflows.meta);
|
|
21
|
+
const graphWorkflowNames = Object.keys(workflows.graphMeta);
|
|
22
|
+
const allWorkflowNames = [
|
|
23
|
+
...new Set([...dslWorkflowNames, ...graphWorkflowNames]),
|
|
24
|
+
];
|
|
25
|
+
const hasWorkflows = allWorkflowNames.length > 0;
|
|
26
|
+
// Validate that workflowService is configured if workflows are defined
|
|
20
27
|
if (hasWorkflows) {
|
|
21
28
|
const hasWorkflowState = visitState.serviceAggregation.allSingletonServices.includes('workflowService');
|
|
22
29
|
if (!hasWorkflowState) {
|
|
@@ -24,19 +31,50 @@ export const pikkuWorkflow = pikkuSessionlessFunc({
|
|
|
24
31
|
throw new Error('WorkflowState service not configured but workflows are defined');
|
|
25
32
|
}
|
|
26
33
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
+
// Generate individual JSON files for each workflow (convert DSL to graph format)
|
|
35
|
+
if (hasWorkflows && workflowMetaDir) {
|
|
36
|
+
// Write individual JSON files for DSL workflows
|
|
37
|
+
const dslMeta = workflows.meta;
|
|
38
|
+
for (const [name, meta] of Object.entries(dslMeta)) {
|
|
39
|
+
const graphMeta = convertDslToGraph(name, meta);
|
|
40
|
+
// Write minimal version (runtime-only fields)
|
|
41
|
+
const minimalMeta = stripVerboseFields(graphMeta);
|
|
42
|
+
const minimalPath = join(workflowMetaDir, `${name}.gen.json`);
|
|
43
|
+
await writeFileInDir(logger, minimalPath, JSON.stringify(minimalMeta, null, 2), { ignoreModifyComment: true });
|
|
44
|
+
// Write verbose version only if it has additional fields
|
|
45
|
+
if (hasVerboseFields(graphMeta)) {
|
|
46
|
+
const verbosePath = join(workflowMetaDir, `${name}-verbose.gen.json`);
|
|
47
|
+
await writeFileInDir(logger, verbosePath, JSON.stringify(graphMeta, null, 2), { ignoreModifyComment: true });
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// Write individual JSON files for graph workflows
|
|
51
|
+
for (const [name, graphMeta] of Object.entries(workflows.graphMeta)) {
|
|
52
|
+
// Write minimal version (runtime-only fields)
|
|
53
|
+
const minimalMeta = stripVerboseFields(graphMeta);
|
|
54
|
+
const minimalPath = join(workflowMetaDir, `${name}.gen.json`);
|
|
55
|
+
await writeFileInDir(logger, minimalPath, JSON.stringify(minimalMeta, null, 2), { ignoreModifyComment: true });
|
|
56
|
+
// Write verbose version only if it has additional fields
|
|
57
|
+
if (hasVerboseFields(graphMeta)) {
|
|
58
|
+
const verbosePath = join(workflowMetaDir, `${name}-verbose.gen.json`);
|
|
59
|
+
await writeFileInDir(logger, verbosePath, JSON.stringify(graphMeta, null, 2), { ignoreModifyComment: true });
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Generate workflow meta aggregation file
|
|
64
|
+
if (workflowsWiringMetaFile && workflowMetaDir) {
|
|
65
|
+
await writeFileInDir(logger, workflowsWiringMetaFile, serializeWorkflowMeta(workflowsWiringMetaFile, workflowMetaDir, allWorkflowNames, packageMappings, schema?.supportsImportAttributes ?? false, config.externalPackageName));
|
|
66
|
+
}
|
|
67
|
+
// Generate workflow registration (meta + DSL workflow registrations)
|
|
68
|
+
const metaImportPath = getFileImportRelativePath(workflowsWiringFile, workflowsWiringMetaFile, packageMappings);
|
|
69
|
+
await writeFileInDir(logger, workflowsWiringFile, serializeWorkflowRegistration(workflowsWiringFile, metaImportPath, allWorkflowNames, workflows.files, workflows.graphFiles, packageMappings, config.externalPackageName));
|
|
70
|
+
// Generate workflow types (DSL + graph helpers in one file)
|
|
34
71
|
const functionTypesImportPath = getFileImportRelativePath(workflowTypesFile, functionTypesFile, packageMappings);
|
|
35
|
-
// Get RPC map import path
|
|
36
72
|
const rpcMapImportPath = getFileImportRelativePath(workflowTypesFile, config.rpcInternalMapDeclarationFile, packageMappings);
|
|
37
73
|
await writeFileInDir(logger, workflowTypesFile, serializeWorkflowTypes(functionTypesImportPath, rpcMapImportPath));
|
|
38
|
-
//
|
|
74
|
+
// Generate workflow map (I/O types for type-safe client)
|
|
75
|
+
// Always generate even if empty - RPC map imports WorkflowMap
|
|
39
76
|
await writeFileInDir(logger, workflowMapDeclarationFile, serializeWorkflowMap(workflowMapDeclarationFile, packageMappings, typesMap, functionState.meta, workflows.meta));
|
|
77
|
+
// Generate workflow workers if configured
|
|
40
78
|
if (config.workflows) {
|
|
41
79
|
if (config.workflows.singleQueue) {
|
|
42
80
|
const workflowPath = join(config.rootDir, config.workflows.path);
|
|
@@ -48,12 +86,12 @@ export const pikkuWorkflow = pikkuSessionlessFunc({
|
|
|
48
86
|
return false;
|
|
49
87
|
}
|
|
50
88
|
}
|
|
51
|
-
return
|
|
89
|
+
return hasWorkflows;
|
|
52
90
|
},
|
|
53
91
|
middleware: [
|
|
54
92
|
logCommandInfoAndTime({
|
|
55
|
-
commandStart: '
|
|
56
|
-
commandEnd: '
|
|
93
|
+
commandStart: 'Generating Workflows',
|
|
94
|
+
commandEnd: 'Generated Workflows',
|
|
57
95
|
}),
|
|
58
96
|
],
|
|
59
97
|
});
|
|
@@ -2,11 +2,18 @@ import { serializeImportMap } from '../../../utils/serialize-import-map.js';
|
|
|
2
2
|
import { generateCustomTypes } from '../../../utils/custom-types-generator.js';
|
|
3
3
|
export const serializeWorkflowMap = (relativeToPath, packageMappings, typesMap, functionsMeta, workflowsMeta) => {
|
|
4
4
|
const requiredTypes = new Set();
|
|
5
|
-
|
|
5
|
+
// First generate workflows to collect required types
|
|
6
6
|
const serializedWorkflows = generateWorkflows(workflowsMeta, functionsMeta, typesMap, requiredTypes);
|
|
7
|
-
|
|
7
|
+
// Only generate custom types if we have workflows with types
|
|
8
|
+
const hasWorkflows = Object.keys(workflowsMeta).length > 0;
|
|
9
|
+
const serializedCustomTypes = hasWorkflows
|
|
10
|
+
? generateCustomTypes(typesMap, requiredTypes)
|
|
11
|
+
: '';
|
|
12
|
+
const serializedImportMap = hasWorkflows
|
|
13
|
+
? serializeImportMap(relativeToPath, packageMappings, typesMap, requiredTypes)
|
|
14
|
+
: '';
|
|
8
15
|
return `/**
|
|
9
|
-
*
|
|
16
|
+
* Workflow type map with input/output types for each workflow
|
|
10
17
|
*/
|
|
11
18
|
|
|
12
19
|
${serializedImportMap}
|
|
@@ -19,38 +26,19 @@ interface WorkflowHandler<I, O> {
|
|
|
19
26
|
|
|
20
27
|
${serializedWorkflows}
|
|
21
28
|
|
|
22
|
-
/**
|
|
23
|
-
* Type-safe workflow client API
|
|
24
|
-
*/
|
|
25
29
|
export type WorkflowClient<Name extends keyof WorkflowMap> = {
|
|
26
|
-
/**
|
|
27
|
-
* Start a new workflow run
|
|
28
|
-
*/
|
|
29
30
|
start: (input: WorkflowMap[Name]['input']) => Promise<{ runId: string }>;
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Get a workflow run by ID
|
|
33
|
-
*/
|
|
34
31
|
getRun: <output extends keyof WorkflowMap[Name]>(runId: string) => Promise<WorkflowMap[Name][output]>;
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Cancel a running workflow
|
|
38
|
-
*/
|
|
39
32
|
cancelRun: (runId: string) => Promise<boolean>;
|
|
40
33
|
}
|
|
41
34
|
|
|
42
|
-
/**
|
|
43
|
-
* Map of all registered workflows with type-safe client APIs
|
|
44
|
-
*/
|
|
45
35
|
export type TypedWorkflowClients = {
|
|
46
36
|
[Name in keyof WorkflowMap]: WorkflowClient<Name>;
|
|
47
37
|
}
|
|
48
|
-
|
|
38
|
+
`;
|
|
49
39
|
};
|
|
50
40
|
function generateWorkflows(workflowsMeta, functionsMeta, typesMap, requiredTypes) {
|
|
51
|
-
// Initialize an object to collect workflows
|
|
52
41
|
const workflowsObj = {};
|
|
53
|
-
// Iterate through workflow metadata
|
|
54
42
|
for (const [workflowName, { pikkuFuncName }] of Object.entries(workflowsMeta)) {
|
|
55
43
|
const functionMeta = functionsMeta[pikkuFuncName];
|
|
56
44
|
if (!functionMeta) {
|
|
@@ -58,18 +46,28 @@ function generateWorkflows(workflowsMeta, functionsMeta, typesMap, requiredTypes
|
|
|
58
46
|
}
|
|
59
47
|
const input = functionMeta.inputs ? functionMeta.inputs[0] : undefined;
|
|
60
48
|
const output = functionMeta.outputs ? functionMeta.outputs[0] : undefined;
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
49
|
+
let inputType = 'void';
|
|
50
|
+
if (input) {
|
|
51
|
+
try {
|
|
52
|
+
inputType = typesMap.getTypeMeta(input).uniqueName;
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
inputType = input;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
let outputType = 'void';
|
|
59
|
+
if (output) {
|
|
60
|
+
try {
|
|
61
|
+
outputType = typesMap.getTypeMeta(output).uniqueName;
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
outputType = output;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
64
67
|
requiredTypes.add(inputType);
|
|
65
68
|
requiredTypes.add(outputType);
|
|
66
|
-
|
|
67
|
-
workflowsObj[workflowName] = {
|
|
68
|
-
inputType,
|
|
69
|
-
outputType,
|
|
70
|
-
};
|
|
69
|
+
workflowsObj[workflowName] = { inputType, outputType };
|
|
71
70
|
}
|
|
72
|
-
// Build the Workflows object as a string
|
|
73
71
|
let workflowsStr = 'export type WorkflowMap = {\n';
|
|
74
72
|
for (const [workflowName, handler] of Object.entries(workflowsObj)) {
|
|
75
73
|
workflowsStr += ` readonly '${workflowName}': WorkflowHandler<${handler.inputType}, ${handler.outputType}>,\n`;
|
|
@@ -1,3 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const serializeWorkflowMeta: (workflowsMeta: WorkflowsMeta) => WorkflowsMeta;
|
|
3
|
-
export declare const serializeWorkflowMetaTS: (workflowsMeta: WorkflowsMeta, jsonImportPath: string, supportsImportAttributes: boolean) => string;
|
|
1
|
+
export declare const serializeWorkflowMeta: (outputPath: string, metaDir: string, workflowNames: string[], packageMappings: Record<string, string>, supportsImportAttributes: boolean, packageName?: string) => string;
|
|
@@ -1,20 +1,45 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Generate workflow meta aggregation file that imports individual workflow JSON files
|
|
3
|
+
* and registers them with pikkuState
|
|
4
|
+
*/
|
|
5
|
+
import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
|
|
6
|
+
export const serializeWorkflowMeta = (outputPath, metaDir, workflowNames, packageMappings, supportsImportAttributes, packageName) => {
|
|
7
|
+
const lines = [];
|
|
8
|
+
if (workflowNames.length === 0) {
|
|
9
|
+
// Empty meta file - still need to register empty meta
|
|
10
|
+
lines.push("import { pikkuState } from '@pikku/core'");
|
|
11
|
+
lines.push("import type { SerializedWorkflowGraphs } from '@pikku/inspector/workflow-graph'");
|
|
12
|
+
lines.push('');
|
|
13
|
+
lines.push('const workflowsMeta: SerializedWorkflowGraphs = {}');
|
|
14
|
+
lines.push('');
|
|
15
|
+
const packageNameValue = packageName ? `'${packageName}'` : 'null';
|
|
16
|
+
lines.push(`pikkuState(${packageNameValue}, 'workflows', 'meta', workflowsMeta)`);
|
|
17
|
+
return lines.join('\n');
|
|
18
|
+
}
|
|
19
|
+
// Imports
|
|
20
|
+
lines.push("import { pikkuState } from '@pikku/core'");
|
|
21
|
+
lines.push("import type { SerializedWorkflowGraphs } from '@pikku/inspector/workflow-graph'");
|
|
22
|
+
lines.push('');
|
|
23
|
+
// Import each workflow meta JSON
|
|
24
|
+
const sortedNames = [...workflowNames].sort();
|
|
25
|
+
for (const name of sortedNames) {
|
|
26
|
+
const jsonPath = `${metaDir}/${name}.gen.json`;
|
|
27
|
+
const importPath = getFileImportRelativePath(outputPath, jsonPath, packageMappings);
|
|
28
|
+
const importStatement = supportsImportAttributes
|
|
29
|
+
? `import ${name}Meta from '${importPath}' with { type: 'json' }`
|
|
30
|
+
: `import ${name}Meta from '${importPath}'`;
|
|
31
|
+
lines.push(importStatement);
|
|
32
|
+
}
|
|
33
|
+
lines.push('');
|
|
34
|
+
// Create aggregated meta object (cast JSON imports to proper types)
|
|
35
|
+
lines.push('const workflowsMeta = {');
|
|
36
|
+
for (const name of sortedNames) {
|
|
37
|
+
lines.push(` '${name}': ${name}Meta,`);
|
|
18
38
|
}
|
|
19
|
-
|
|
39
|
+
lines.push('} as SerializedWorkflowGraphs');
|
|
40
|
+
lines.push('');
|
|
41
|
+
// Register meta with pikkuState
|
|
42
|
+
const packageNameValue = packageName ? `'${packageName}'` : 'null';
|
|
43
|
+
lines.push(`pikkuState(${packageNameValue}, 'workflows', 'meta', workflowsMeta)`);
|
|
44
|
+
return lines.join('\n');
|
|
20
45
|
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const serializeWorkflowRegistration: (outputPath: string, metaImportPath: string, workflowNames: string[], workflowFiles: Map<string, {
|
|
2
|
+
path: string;
|
|
3
|
+
exportedName: string;
|
|
4
|
+
}>, graphFiles: Map<string, {
|
|
5
|
+
path: string;
|
|
6
|
+
exportedName: string;
|
|
7
|
+
}>, packageMappings: Record<string, string>, _packageName?: string) => string;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate workflow runtime registration
|
|
3
|
+
* Imports meta (which registers with pikkuState) and registers DSL workflows (addWorkflow) and graph workflows (addWorkflowGraph)
|
|
4
|
+
*/
|
|
5
|
+
import { getFileImportRelativePath } from '../../../utils/file-import-path.js';
|
|
6
|
+
export const serializeWorkflowRegistration = (outputPath, metaImportPath, workflowNames, workflowFiles, graphFiles, packageMappings, _packageName) => {
|
|
7
|
+
const lines = [];
|
|
8
|
+
const hasWorkflows = workflowNames.length > 0;
|
|
9
|
+
const hasDslWorkflows = workflowFiles.size > 0;
|
|
10
|
+
const hasGraphWorkflows = graphFiles.size > 0;
|
|
11
|
+
// Imports
|
|
12
|
+
const imports = [];
|
|
13
|
+
if (hasDslWorkflows) {
|
|
14
|
+
imports.push('addWorkflow');
|
|
15
|
+
}
|
|
16
|
+
if (hasGraphWorkflows) {
|
|
17
|
+
imports.push('addWorkflowGraph');
|
|
18
|
+
}
|
|
19
|
+
if (imports.length > 0) {
|
|
20
|
+
lines.push(`import { ${imports.join(', ')} } from '@pikku/core/workflow'`);
|
|
21
|
+
}
|
|
22
|
+
// Import meta file (which registers meta with pikkuState)
|
|
23
|
+
if (hasWorkflows) {
|
|
24
|
+
lines.push(`import '${metaImportPath}'`);
|
|
25
|
+
}
|
|
26
|
+
// Import DSL workflow functions
|
|
27
|
+
const sortedWorkflows = Array.from(workflowFiles.entries()).sort((a, b) => a[0].localeCompare(b[0]));
|
|
28
|
+
for (const [, { path, exportedName }] of sortedWorkflows) {
|
|
29
|
+
const importPath = getFileImportRelativePath(outputPath, path, packageMappings);
|
|
30
|
+
lines.push(`import { ${exportedName} } from '${importPath}'`);
|
|
31
|
+
}
|
|
32
|
+
// Import graph workflow definitions
|
|
33
|
+
const sortedGraphWorkflows = Array.from(graphFiles.entries()).sort((a, b) => a[0].localeCompare(b[0]));
|
|
34
|
+
for (const [, { path, exportedName }] of sortedGraphWorkflows) {
|
|
35
|
+
const importPath = getFileImportRelativePath(outputPath, path, packageMappings);
|
|
36
|
+
lines.push(`import { ${exportedName} } from '${importPath}'`);
|
|
37
|
+
}
|
|
38
|
+
lines.push('');
|
|
39
|
+
// Register DSL workflows
|
|
40
|
+
for (const [pikkuFuncName, { exportedName }] of sortedWorkflows) {
|
|
41
|
+
lines.push(`addWorkflow('${pikkuFuncName}', ${exportedName})`);
|
|
42
|
+
}
|
|
43
|
+
// Register graph workflows
|
|
44
|
+
for (const [workflowName, { exportedName }] of sortedGraphWorkflows) {
|
|
45
|
+
lines.push(`addWorkflowGraph('${workflowName}', ${exportedName})`);
|
|
46
|
+
}
|
|
47
|
+
// Export workflow names type
|
|
48
|
+
if (hasWorkflows) {
|
|
49
|
+
lines.push('');
|
|
50
|
+
lines.push(`export type WorkflowNames = '${workflowNames.join("' | '")}'`);
|
|
51
|
+
}
|
|
52
|
+
return lines.join('\n');
|
|
53
|
+
};
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Generate all workflow type helpers for authoring workflows
|
|
3
|
+
* Combines DSL helpers (pikkuWorkflowFunc, pikkuWorkflowComplexFunc) and
|
|
4
|
+
* graph helpers (pikkuWorkflowGraph) with unified wireWorkflow
|
|
3
5
|
*/
|
|
4
6
|
export declare const serializeWorkflowTypes: (functionTypesImportPath: string, rpcMapImportPath: string) => string;
|