@pikku/cli 0.12.82 → 0.12.85
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cli.schema.json +1 -1
- package/console-app/assets/{index-ChcXIEhS.js → index-CEv-kj3J.js} +154 -147
- package/console-app/assets/index-CSzCJzBb.css +1 -0
- package/console-app/index.html +2 -2
- package/dist/.pikku/agent/pikku-agent-types.gen.d.ts +4 -2
- package/dist/.pikku/auth/auth.types.d.ts +4 -0
- package/dist/.pikku/auth/auth.types.js +5 -0
- package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +1 -1
- package/dist/.pikku/channel/pikku-channel-types.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli-channel.d.ts +4 -4
- package/dist/.pikku/cli/pikku-cli-channel.js +21 -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-contracts-meta.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli-contracts-meta.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 +1 -1
- package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.json +60 -3
- 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/console/pikku-node-types.gen.d.ts +1 -1
- package/dist/.pikku/function/pikku-function-types.gen.d.ts +29 -25
- package/dist/.pikku/function/pikku-function-types.gen.js +3 -12
- package/dist/.pikku/function/pikku-functions-meta.gen.js +1 -1
- package/dist/.pikku/function/pikku-functions-meta.gen.json +195 -32
- package/dist/.pikku/function/pikku-functions.gen.js +15 -3
- package/dist/.pikku/http/pikku-http-types.gen.d.ts +2 -24
- package/dist/.pikku/http/pikku-http-types.gen.js +2 -24
- package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +1 -1
- package/dist/.pikku/mcp/pikku-mcp-types.gen.js +1 -1
- package/dist/.pikku/pikku-bootstrap.gen.d.ts +1 -5
- package/dist/.pikku/pikku-bootstrap.gen.js +1 -5
- package/dist/.pikku/pikku-meta-service.gen.d.ts +1 -1
- package/dist/.pikku/pikku-meta-service.gen.js +1 -1
- package/dist/.pikku/pikku-services.gen.d.ts +4 -1
- package/dist/.pikku/pikku-services.gen.js +3 -0
- package/dist/.pikku/pikku-types.gen.d.ts +2 -1
- package/dist/.pikku/pikku-types.gen.js +3 -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/rpc/pikku-rpc-wirings-meta.internal.gen.js +1 -1
- package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.json +10 -2
- 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/schemas/register.gen.js +13 -7
- package/dist/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/PikkuGraphWiringsOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuImportN8nInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuScopesInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuWebhookOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/ScopesAuditInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/ScopesPruneInput.schema.json +1 -0
- package/dist/.pikku/scopes/pikku-scope-types.gen.d.ts +5 -0
- package/dist/.pikku/scopes/pikku-scope-types.gen.js +4 -0
- package/dist/.pikku/scopes/pikku-scopes-meta.gen.json +1 -0
- package/dist/.pikku/scopes/pikku-scopes.gen.d.ts +35 -0
- package/dist/.pikku/scopes/pikku-scopes.gen.js +27 -0
- package/dist/.pikku/secrets/pikku-secret-types.gen.d.ts +1 -1
- package/dist/.pikku/secrets/pikku-secret-types.gen.js +1 -1
- package/dist/.pikku/secrets/pikku-secrets-meta.gen.json +1 -0
- package/dist/.pikku/secrets/pikku-secrets.gen.d.ts +11 -1
- package/dist/.pikku/secrets/pikku-secrets.gen.js +11 -1
- package/dist/.pikku/trigger/pikku-trigger-types.gen.d.ts +1 -1
- package/dist/.pikku/trigger/pikku-trigger-types.gen.js +1 -1
- package/dist/.pikku/variables/pikku-variable-types.gen.d.ts +1 -1
- package/dist/.pikku/variables/pikku-variable-types.gen.js +1 -1
- package/dist/.pikku/variables/pikku-variables-meta.gen.json +1 -0
- package/dist/.pikku/variables/pikku-variables.gen.d.ts +11 -1
- package/dist/.pikku/variables/pikku-variables.gen.js +13 -3
- package/dist/.pikku/workflow/meta/allWorkflow.gen.json +49 -7
- package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +11 -2
- package/dist/.pikku/workflow/pikku-workflow-types.gen.js +1 -1
- package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +1 -1
- package/dist/.pikku/workflow/pikku-workflow-wirings.gen.js +1 -1
- package/dist/bin/pikku-bin.mjs +2 -2
- package/dist/src/cli.wiring.js +47 -4
- package/dist/src/deploy/analyzer/analyzer.js +6 -0
- package/dist/src/fabric/fabric-commands.d.ts +53 -53
- package/dist/src/fabric/functions/add.function.d.ts +2 -2
- package/dist/src/fabric/functions/addon-verify.function.d.ts +2 -2
- package/dist/src/fabric/functions/db-schema.function.d.ts +2 -2
- package/dist/src/fabric/functions/deploy-list.function.d.ts +2 -2
- package/dist/src/fabric/functions/deploy-units.function.d.ts +2 -2
- package/dist/src/fabric/functions/deploy.function.d.ts +4 -4
- package/dist/src/fabric/functions/domains-add.function.d.ts +2 -2
- package/dist/src/fabric/functions/domains-list.function.d.ts +2 -2
- package/dist/src/fabric/functions/domains-remove.function.d.ts +2 -2
- package/dist/src/fabric/functions/errors.function.d.ts +2 -2
- package/dist/src/fabric/functions/init.function.d.ts +2 -2
- package/dist/src/fabric/functions/link.function.d.ts +2 -2
- package/dist/src/fabric/functions/llm-key.function.d.ts +6 -6
- package/dist/src/fabric/functions/login.function.d.ts +2 -2
- package/dist/src/fabric/functions/logs.function.d.ts +2 -2
- package/dist/src/fabric/functions/metrics.function.d.ts +2 -2
- package/dist/src/fabric/functions/publish.function.d.ts +2 -2
- package/dist/src/fabric/functions/rollback.function.d.ts +2 -2
- package/dist/src/fabric/functions/secrets-list.function.d.ts +2 -2
- package/dist/src/fabric/functions/secrets-set.function.d.ts +2 -2
- package/dist/src/fabric/functions/smoke.function.d.ts +2 -2
- package/dist/src/fabric/functions/status.function.d.ts +2 -2
- package/dist/src/fabric/functions/trace.function.d.ts +2 -2
- package/dist/src/fabric/functions/validate.function.d.ts +2 -2
- package/dist/src/functions/commands/all.d.ts +1 -1
- package/dist/src/functions/commands/audit.d.ts +1 -1
- package/dist/src/functions/commands/binary.d.ts +2 -2
- package/dist/src/functions/commands/bootstrap.d.ts +1 -1
- package/dist/src/functions/commands/bootstrap.js +3 -0
- package/dist/src/functions/commands/db-audit.d.ts +1 -1
- package/dist/src/functions/commands/db-generate.d.ts +1 -1
- package/dist/src/functions/commands/db-migrate.d.ts +1 -1
- package/dist/src/functions/commands/db-reset.d.ts +1 -1
- package/dist/src/functions/commands/db-seed.d.ts +1 -1
- package/dist/src/functions/commands/deploy-apply.d.ts +2 -2
- package/dist/src/functions/commands/deploy-info.d.ts +1 -1
- package/dist/src/functions/commands/deploy-plan.d.ts +2 -2
- package/dist/src/functions/commands/dev.d.ts +2 -2
- package/dist/src/functions/commands/dev.js +14 -3
- package/dist/src/functions/commands/emails-init.d.ts +1 -1
- package/dist/src/functions/commands/enable.d.ts +8 -7
- package/dist/src/functions/commands/enable.js +10 -5
- package/dist/src/functions/commands/import-n8n.d.ts +10 -0
- package/dist/src/functions/commands/import-n8n.js +130 -0
- package/dist/src/functions/commands/info.d.ts +4 -4
- package/dist/src/functions/commands/info.js +0 -13
- package/dist/src/functions/commands/login.d.ts +5 -5
- package/dist/src/functions/commands/meta.d.ts +25 -25
- package/dist/src/functions/commands/new-addon.d.ts +13 -2
- package/dist/src/functions/commands/new-addon.js +71 -39
- package/dist/src/functions/commands/new-function.d.ts +2 -2
- package/dist/src/functions/commands/new-middleware.d.ts +2 -2
- package/dist/src/functions/commands/new-permission.d.ts +2 -2
- package/dist/src/functions/commands/new-wiring.d.ts +2 -2
- package/dist/src/functions/commands/pikku-command-bootstrap.d.ts +1 -1
- package/dist/src/functions/commands/pikku-command-bootstrap.js +6 -0
- package/dist/src/functions/commands/pikku-command-summary.d.ts +1 -1
- package/dist/src/functions/commands/scenario.d.ts +3 -3
- package/dist/src/functions/commands/scopes-audit.d.ts +1 -0
- package/dist/src/functions/commands/scopes-audit.js +37 -0
- package/dist/src/functions/commands/scopes-prune.d.ts +14 -0
- package/dist/src/functions/commands/scopes-prune.js +50 -0
- package/dist/src/functions/commands/scopes-shared.d.ts +39 -0
- package/dist/src/functions/commands/scopes-shared.js +83 -0
- package/dist/src/functions/commands/serve.d.ts +2 -2
- package/dist/src/functions/commands/serve.js +4 -2
- package/dist/src/functions/commands/skills.d.ts +4 -4
- package/dist/src/functions/commands/skills.js +18 -10
- package/dist/src/functions/commands/versions-check.d.ts +1 -1
- package/dist/src/functions/commands/versions-init.d.ts +2 -2
- package/dist/src/functions/commands/versions-update.d.ts +1 -1
- package/dist/src/functions/commands/watch.d.ts +2 -2
- package/dist/src/functions/commands/workspace-validate.d.ts +2 -2
- package/dist/src/functions/runtimes/fetch/index.d.ts +1 -1
- package/dist/src/functions/runtimes/nextjs/pikku-command-nextjs.d.ts +1 -1
- package/dist/src/functions/runtimes/tanstack-start/pikku-command-tanstack-start.d.ts +1 -1
- package/dist/src/functions/runtimes/websocket/pikku-command-websocket-typed.d.ts +1 -1
- package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent-types.d.ts +1 -1
- package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent-types.js +3 -2
- package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent.d.ts +1 -1
- package/dist/src/functions/wirings/ai-agent/pikku-command-public-agent.d.ts +1 -1
- package/dist/src/functions/wirings/ai-agent/serialize-ai-agent-types.d.ts +1 -1
- package/dist/src/functions/wirings/ai-agent/serialize-ai-agent-types.js +4 -2
- package/dist/src/functions/wirings/ai-agent/serialize-public-agent.js +55 -16
- package/dist/src/functions/wirings/auth/pikku-command-auth.d.ts +2 -2
- package/dist/src/functions/wirings/channels/pikku-channels.d.ts +1 -1
- package/dist/src/functions/wirings/channels/pikku-command-channel-types.d.ts +1 -1
- package/dist/src/functions/wirings/channels/pikku-command-channels-map.d.ts +1 -1
- package/dist/src/functions/wirings/channels/pikku-command-channels.d.ts +1 -1
- package/dist/src/functions/wirings/cli/pikku-command-cli-entry.d.ts +1 -1
- package/dist/src/functions/wirings/cli/pikku-command-cli-types.d.ts +1 -1
- package/dist/src/functions/wirings/cli/pikku-command-cli.d.ts +1 -1
- package/dist/src/functions/wirings/console/pikku-command-console-functions.d.ts +1 -1
- package/dist/src/functions/wirings/console/pikku-command-node-types.d.ts +1 -1
- package/dist/src/functions/wirings/console/pikku-command-nodes-meta.d.ts +1 -1
- package/dist/src/functions/wirings/console/serialize-console-functions.js +6 -0
- package/dist/src/functions/wirings/credentials/pikku-command-credentials.d.ts +1 -1
- package/dist/src/functions/wirings/credentials/serialize-credentials-types.js +22 -0
- package/dist/src/functions/wirings/emails/pikku-command-emails.d.ts +1 -1
- package/dist/src/functions/wirings/functions/pikku-command-addon-types.d.ts +1 -1
- package/dist/src/functions/wirings/functions/pikku-command-function-types-split.d.ts +2 -2
- package/dist/src/functions/wirings/functions/pikku-command-function-types-split.js +1 -1
- package/dist/src/functions/wirings/functions/pikku-command-function-types.d.ts +2 -2
- package/dist/src/functions/wirings/functions/pikku-command-function-types.js +2 -2
- package/dist/src/functions/wirings/functions/pikku-command-functions.d.ts +1 -1
- package/dist/src/functions/wirings/functions/pikku-command-services.d.ts +2 -2
- package/dist/src/functions/wirings/functions/pikku-command-services.js +9 -2
- package/dist/src/functions/wirings/functions/schemas.d.ts +1 -1
- package/dist/src/functions/wirings/functions/serialize-function-types.d.ts +1 -1
- package/dist/src/functions/wirings/functions/serialize-function-types.js +37 -28
- 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 +6 -2
- package/dist/src/functions/wirings/gateway/pikku-command-gateway.d.ts +1 -1
- package/dist/src/functions/wirings/graph/pikku-command-graph-wirings.d.ts +1 -0
- package/dist/src/functions/wirings/graph/pikku-command-graph-wirings.js +21 -0
- package/dist/src/functions/wirings/graph/serialize-graph-wirings.d.ts +5 -0
- package/dist/src/functions/wirings/graph/serialize-graph-wirings.js +14 -0
- package/dist/src/functions/wirings/http/pikku-command-http-map.d.ts +1 -1
- package/dist/src/functions/wirings/http/pikku-command-http-routes.d.ts +1 -1
- package/dist/src/functions/wirings/http/pikku-command-http-types.d.ts +1 -1
- package/dist/src/functions/wirings/http/pikku-command-openapi.d.ts +1 -1
- package/dist/src/functions/wirings/http/pikku-http-routes.d.ts +1 -1
- package/dist/src/functions/wirings/http/serialize-http-types.js +2 -30
- package/dist/src/functions/wirings/mcp/pikku-command-mcp-json.d.ts +1 -1
- package/dist/src/functions/wirings/mcp/pikku-command-mcp-types.d.ts +1 -1
- package/dist/src/functions/wirings/mcp/pikku-command-mcp.d.ts +1 -1
- package/dist/src/functions/wirings/middleware/pikku-command-middleware.d.ts +1 -1
- package/dist/src/functions/wirings/package/pikku-command-package-types.d.ts +3 -2
- package/dist/src/functions/wirings/package/pikku-command-package-types.js +14 -1
- package/dist/src/functions/wirings/package/pikku-command-package.d.ts +1 -1
- package/dist/src/functions/wirings/package/serialize-package-types.d.ts +1 -0
- package/dist/src/functions/wirings/package/serialize-package-types.js +5 -0
- package/dist/src/functions/wirings/permissions/pikku-command-permissions.d.ts +1 -1
- package/dist/src/functions/wirings/permissions/pikku-command-permissions.js +1 -3
- package/dist/src/functions/wirings/permissions/serialize-permissions-imports.d.ts +6 -1
- package/dist/src/functions/wirings/permissions/serialize-permissions-imports.js +7 -64
- package/dist/src/functions/wirings/queue/pikku-command-queue-map.d.ts +1 -1
- package/dist/src/functions/wirings/queue/pikku-command-queue-service.d.ts +1 -1
- package/dist/src/functions/wirings/queue/pikku-command-queue-types.d.ts +1 -1
- package/dist/src/functions/wirings/queue/pikku-command-queue.d.ts +1 -1
- package/dist/src/functions/wirings/queue/pikku-queue-map.d.ts +1 -1
- package/dist/src/functions/wirings/queue/pikku-queue.d.ts +1 -1
- package/dist/src/functions/wirings/realtime/pikku-command-events-scaffold.d.ts +1 -1
- package/dist/src/functions/wirings/realtime/pikku-command-realtime.d.ts +1 -1
- package/dist/src/functions/wirings/rpc/pikku-command-public-rpc.d.ts +1 -1
- package/dist/src/functions/wirings/rpc/pikku-command-react-query.d.ts +1 -1
- package/dist/src/functions/wirings/rpc/pikku-command-remote-rpc.d.ts +1 -1
- package/dist/src/functions/wirings/rpc/pikku-command-rpc-client.d.ts +1 -1
- package/dist/src/functions/wirings/rpc/pikku-command-rpc-map.d.ts +7 -2
- package/dist/src/functions/wirings/rpc/pikku-command-rpc-map.js +20 -0
- package/dist/src/functions/wirings/rpc/pikku-command-rpc.d.ts +1 -1
- package/dist/src/functions/wirings/rpc/serialize-typed-rpc-map.d.ts +1 -0
- package/dist/src/functions/wirings/rpc/serialize-typed-rpc-map.js +8 -3
- package/dist/src/functions/wirings/scenarios/pikku-command-scenario-functions.d.ts +1 -1
- package/dist/src/functions/wirings/scheduler/pikku-command-scheduler-types.d.ts +1 -1
- package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.d.ts +1 -1
- package/dist/src/functions/wirings/scopes/pikku-command-scopes.d.ts +7 -0
- package/dist/src/functions/wirings/scopes/pikku-command-scopes.js +34 -0
- package/dist/src/functions/wirings/scopes/serialize-scopes-types.d.ts +15 -0
- package/dist/src/functions/wirings/scopes/serialize-scopes-types.js +86 -0
- package/dist/src/functions/wirings/secrets/pikku-command-secrets.d.ts +1 -1
- package/dist/src/functions/wirings/secrets/serialize-secrets-types.js +13 -0
- package/dist/src/functions/wirings/triggers/pikku-command-trigger-types.d.ts +2 -2
- package/dist/src/functions/wirings/triggers/pikku-command-trigger.d.ts +1 -1
- package/dist/src/functions/wirings/variables/pikku-command-variables.d.ts +1 -1
- package/dist/src/functions/wirings/variables/serialize-variables-types.js +15 -2
- package/dist/src/functions/wirings/webhook/pikku-command-webhook.d.ts +1 -0
- package/dist/src/functions/wirings/webhook/pikku-command-webhook.js +25 -0
- package/dist/src/functions/wirings/webhook/serialize-webhook.d.ts +14 -0
- package/dist/src/functions/wirings/webhook/serialize-webhook.js +34 -0
- package/dist/src/functions/wirings/workflow/pikku-command-workflow-routes.d.ts +1 -1
- package/dist/src/functions/wirings/workflow/pikku-command-workflow.d.ts +1 -1
- package/dist/src/functions/wirings/workflow/pikku-command-workflow.js +2 -1
- package/dist/src/functions/wirings/workflow/serialize-workflow-routes.js +29 -0
- package/dist/src/functions/wirings/workflow/serialize-workflow-types.d.ts +1 -1
- package/dist/src/functions/wirings/workflow/serialize-workflow-types.js +11 -2
- package/dist/src/functions/workflows/all.workflow.js +23 -3
- package/dist/src/services.d.ts +1 -0
- package/dist/src/services.js +1 -0
- package/dist/src/utils/pikku-cli-config.js +20 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +9 -8
- package/skills/pikku-addon/SKILL.md +7 -3
- package/skills/pikku-ai-agent/SKILL.md +9 -6
- package/skills/pikku-ai-vercel/SKILL.md +6 -3
- package/skills/pikku-ai-voice/SKILL.md +6 -3
- package/skills/pikku-audit/SKILL.md +10 -3
- package/skills/pikku-aws/SKILL.md +9 -5
- package/skills/pikku-backblaze/SKILL.md +4 -3
- package/skills/pikku-better-auth/SKILL.md +10 -5
- package/skills/pikku-cli/SKILL.md +6 -3
- package/skills/pikku-concepts/SKILL.md +9 -4
- package/skills/pikku-concepts/references/concept-mapping.md +12 -10
- package/skills/pikku-config/SKILL.md +9 -5
- package/skills/pikku-cron/SKILL.md +6 -3
- package/skills/pikku-deploy-azure/SKILL.md +5 -3
- package/skills/pikku-deploy-cloudflare/SKILL.md +5 -3
- package/skills/pikku-deploy-express/SKILL.md +6 -3
- package/skills/pikku-deploy-fastify/SKILL.md +6 -3
- package/skills/pikku-deploy-lambda/SKILL.md +6 -3
- package/skills/pikku-deploy-nextjs/SKILL.md +5 -3
- package/skills/pikku-deploy-uws/SKILL.md +7 -4
- package/skills/pikku-deps/SKILL.md +13 -6
- package/skills/pikku-emails/SKILL.md +10 -5
- package/skills/pikku-feature/SKILL.md +1 -1
- package/skills/pikku-gateway-slack/SKILL.md +6 -3
- package/skills/pikku-http/SKILL.md +15 -21
- package/skills/pikku-http/references/http-options.md +0 -2
- package/skills/pikku-info/SKILL.md +9 -4
- package/skills/pikku-jose/SKILL.md +6 -3
- package/skills/pikku-kysely/SKILL.md +13 -5
- package/skills/pikku-machine-auth/SKILL.md +9 -3
- package/skills/pikku-mcp/SKILL.md +7 -3
- package/skills/pikku-middleware/SKILL.md +11 -6
- package/skills/pikku-mongodb/SKILL.md +8 -5
- package/skills/pikku-n8n-import/SKILL.md +109 -0
- package/skills/pikku-n8n-import/SPEC.md +84 -0
- package/skills/pikku-n8n-import/references/addon-mapping.md +121 -0
- package/skills/pikku-n8n-import/references/code-translation.md +121 -0
- package/skills/pikku-n8n-import/references/loops-and-control.md +87 -0
- package/skills/pikku-permissions/SKILL.md +26 -15
- package/skills/pikku-pino/SKILL.md +5 -3
- package/skills/pikku-product-second-opinion/README.md +43 -0
- package/skills/pikku-product-second-opinion/SKILL.md +158 -0
- package/skills/pikku-product-second-opinion/example/sample-report.md +90 -0
- package/skills/pikku-product-second-opinion/references/report-template.md +73 -0
- package/skills/pikku-queue/SKILL.md +7 -4
- package/skills/pikku-redis/SKILL.md +9 -6
- package/skills/pikku-rpc/SKILL.md +7 -4
- package/skills/pikku-rtl/SKILL.md +1 -1
- package/skills/pikku-scenario/SKILL.md +215 -0
- package/skills/pikku-schedule/SKILL.md +6 -3
- package/skills/pikku-schema-ajv/SKILL.md +5 -3
- package/skills/pikku-schema-cfworker/SKILL.md +6 -3
- package/skills/pikku-security/SKILL.md +8 -4
- package/skills/pikku-services/SKILL.md +42 -4
- package/skills/pikku-software-archaeology/README.md +70 -0
- package/skills/pikku-software-archaeology/SKILL.md +186 -0
- package/skills/pikku-software-archaeology/references/blueprint.schema.json +625 -0
- package/skills/pikku-software-archaeology/references/pikku-mapping.md +49 -0
- package/skills/pikku-software-archaeology/scripts/validate.mjs +173 -0
- package/skills/pikku-template-clone/SKILL.md +1 -1
- package/skills/pikku-trigger/SKILL.md +7 -3
- package/skills/pikku-versioning/SKILL.md +7 -3
- package/skills/pikku-websocket/SKILL.md +8 -4
- package/skills/pikku-workflow/SKILL.md +7 -3
- package/skills/pikku-ws/SKILL.md +5 -3
- package/console-app/assets/index-DwyRdRuZ.css +0 -1
- package/dist/.pikku/http/pikku-http-wirings-meta.gen.d.ts +0 -1
- package/dist/.pikku/http/pikku-http-wirings-meta.gen.js +0 -6
- package/dist/.pikku/http/pikku-http-wirings-meta.gen.json +0 -26
- package/dist/.pikku/http/pikku-http-wirings.gen.d.ts +0 -4
- package/dist/.pikku/http/pikku-http-wirings.gen.js +0 -5
- package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.d.ts +0 -1
- package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.js +0 -6
- package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.json +0 -10
- package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.d.ts +0 -4
- package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.js +0 -5
- package/dist/.pikku/schemas/schemas/RemoteRPCHandlerInput.schema.json +0 -1
- package/dist/src/scaffold/rpc-remote.gen.d.ts +0 -10
- package/dist/src/scaffold/rpc-remote.gen.js +0 -27
- package/skills/pikku-n8n-addon-map/SKILL.md +0 -178
- package/skills/pikku-n8n-code-translate/SKILL.md +0 -166
- package/skills/pikku-testing/SKILL.md +0 -328
- package/skills/pikku-testing/references/cucumber-bdd-testing.md +0 -176
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { existsSync } from 'fs';
|
|
2
|
+
import { basename, isAbsolute, join, resolve } from 'path';
|
|
3
|
+
import { mkdir, readdir, readFile, stat, writeFile } from 'fs/promises';
|
|
4
|
+
import { pikkuSessionlessFunc } from '#pikku';
|
|
5
|
+
import { parseN8n, generateWorkflowFromN8n } from '@pikku/n8n-import';
|
|
6
|
+
async function writeFiles(baseDir, files) {
|
|
7
|
+
const written = [];
|
|
8
|
+
for (const [relativePath, content] of Object.entries(files)) {
|
|
9
|
+
const fullPath = join(baseDir, relativePath);
|
|
10
|
+
await mkdir(join(fullPath, '..'), { recursive: true });
|
|
11
|
+
await writeFile(fullPath, content, 'utf-8');
|
|
12
|
+
written.push(fullPath);
|
|
13
|
+
}
|
|
14
|
+
return written;
|
|
15
|
+
}
|
|
16
|
+
// A single n8n export file may hold one workflow object, a bare array of
|
|
17
|
+
// workflows (n8n `export:workflow --all`), or a `{ workflows: [...] }` wrapper.
|
|
18
|
+
// Flatten whichever shape into one job per workflow.
|
|
19
|
+
function collectJobs(raw, nameHint, jobs) {
|
|
20
|
+
const list = Array.isArray(raw)
|
|
21
|
+
? raw
|
|
22
|
+
: raw && Array.isArray(raw.workflows)
|
|
23
|
+
? raw.workflows
|
|
24
|
+
: null;
|
|
25
|
+
if (list) {
|
|
26
|
+
list.forEach((wf, i) => {
|
|
27
|
+
const own = wf?.name?.trim();
|
|
28
|
+
jobs.push({ raw: wf, nameHint: own || `${nameHint}-${i + 1}` });
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
jobs.push({ raw, nameHint });
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
async function importOne({ raw, nameHint }, baseDir, logger) {
|
|
36
|
+
let parsed;
|
|
37
|
+
try {
|
|
38
|
+
parsed = parseN8n(raw, nameHint);
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
logger.error(`Failed to parse "${nameHint}": ${err.message}`);
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
const { files, manifest, credentialInstances, diagnostics } = generateWorkflowFromN8n(parsed);
|
|
45
|
+
// A single-file import can only resolve self-references; any cross-workflow
|
|
46
|
+
// sub-workflow reference is un-importable here. Report and skip rather than
|
|
47
|
+
// write a partial, un-runnable scaffold.
|
|
48
|
+
if (diagnostics.some((d) => d.type === 'error')) {
|
|
49
|
+
logger.error(`Cannot import "${parsed.name}":`);
|
|
50
|
+
for (const d of diagnostics) {
|
|
51
|
+
logger.error(` [${d.reason}] ${d.message}`);
|
|
52
|
+
}
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
const written = await writeFiles(baseDir, files);
|
|
56
|
+
logger.info(`Imported "${parsed.name}" (${parsed.shape}) → ${written.length} file(s) in ${baseDir}`);
|
|
57
|
+
if (manifest.length > 0) {
|
|
58
|
+
logger.info(` ${manifest.length} integration node(s) recorded in ${parsed.slug}.integrations.json`);
|
|
59
|
+
}
|
|
60
|
+
if (credentialInstances.length > 0) {
|
|
61
|
+
logger.info(` ${credentialInstances.length} addon instance(s) wired in ${parsed.slug}.addons.gen.ts: ${credentialInstances
|
|
62
|
+
.map((i) => i.instanceName)
|
|
63
|
+
.join(', ')}`);
|
|
64
|
+
}
|
|
65
|
+
const stubCount = written.filter((f) => f.includes('/functions/')).length;
|
|
66
|
+
if (stubCount > 0) {
|
|
67
|
+
logger.info(` ${stubCount} stub function(s) to implement — run the pikku-n8n-import skill to fill them in`);
|
|
68
|
+
}
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
export const pikkuImportN8n = pikkuSessionlessFunc({
|
|
72
|
+
func: async ({ logger, config }, { file, out }) => {
|
|
73
|
+
const inputPath = isAbsolute(file) ? file : resolve(process.cwd(), file);
|
|
74
|
+
if (!existsSync(inputPath)) {
|
|
75
|
+
logger.error(`n8n workflow file not found: ${inputPath}`);
|
|
76
|
+
process.exit(1);
|
|
77
|
+
}
|
|
78
|
+
const baseDir = out
|
|
79
|
+
? isAbsolute(out)
|
|
80
|
+
? out
|
|
81
|
+
: resolve(process.cwd(), out)
|
|
82
|
+
: config.scaffold?.functionDir || process.cwd();
|
|
83
|
+
const jobs = [];
|
|
84
|
+
if ((await stat(inputPath)).isDirectory()) {
|
|
85
|
+
const entries = (await readdir(inputPath))
|
|
86
|
+
.filter((f) => f.toLowerCase().endsWith('.json'))
|
|
87
|
+
.sort();
|
|
88
|
+
if (entries.length === 0) {
|
|
89
|
+
logger.error(`No .json workflow files found in ${inputPath}`);
|
|
90
|
+
process.exit(1);
|
|
91
|
+
}
|
|
92
|
+
for (const entry of entries) {
|
|
93
|
+
try {
|
|
94
|
+
const raw = JSON.parse(await readFile(join(inputPath, entry), 'utf-8'));
|
|
95
|
+
collectJobs(raw, entry.replace(/\.json$/i, ''), jobs);
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
logger.error(`Failed to read ${entry}: ${err.message}`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
let raw;
|
|
104
|
+
try {
|
|
105
|
+
raw = JSON.parse(await readFile(inputPath, 'utf-8'));
|
|
106
|
+
}
|
|
107
|
+
catch (err) {
|
|
108
|
+
logger.error(`Failed to parse n8n workflow: ${err.message}`);
|
|
109
|
+
process.exit(1);
|
|
110
|
+
}
|
|
111
|
+
collectJobs(raw, basename(inputPath).replace(/\.json$/i, ''), jobs);
|
|
112
|
+
}
|
|
113
|
+
if (jobs.length === 0) {
|
|
114
|
+
logger.error('No workflows found to import');
|
|
115
|
+
process.exit(1);
|
|
116
|
+
}
|
|
117
|
+
let failed = 0;
|
|
118
|
+
for (const job of jobs) {
|
|
119
|
+
if (!(await importOne(job, baseDir, logger)))
|
|
120
|
+
failed++;
|
|
121
|
+
}
|
|
122
|
+
if (jobs.length > 1) {
|
|
123
|
+
const ok = jobs.length - failed;
|
|
124
|
+
logger.info(`Imported ${ok}/${jobs.length} workflow(s) into ${baseDir}${failed > 0 ? ` — ${failed} failed` : ''}`);
|
|
125
|
+
}
|
|
126
|
+
if (failed > 0) {
|
|
127
|
+
process.exit(1);
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
});
|
|
@@ -2,8 +2,8 @@ type InfoInput = {
|
|
|
2
2
|
limit?: string;
|
|
3
3
|
verbose?: boolean;
|
|
4
4
|
};
|
|
5
|
-
export declare const pikkuInfoFunctions: import("#pikku").PikkuFunctionConfig<InfoInput, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<InfoInput, void, "rpc" | "session", import("#pikku").
|
|
6
|
-
export declare const pikkuInfoTags: import("#pikku").PikkuFunctionConfig<InfoInput, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<InfoInput, void, "rpc" | "session", import("#pikku").
|
|
7
|
-
export declare const pikkuInfoMiddleware: import("#pikku").PikkuFunctionConfig<InfoInput, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<InfoInput, void, "rpc" | "session", import("#pikku").
|
|
8
|
-
export declare const pikkuInfoPermissions: import("#pikku").PikkuFunctionConfig<InfoInput, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<InfoInput, void, "rpc" | "session", import("#pikku").
|
|
5
|
+
export declare const pikkuInfoFunctions: import("#pikku").PikkuFunctionConfig<InfoInput, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<InfoInput, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<InfoInput, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
6
|
+
export declare const pikkuInfoTags: import("#pikku").PikkuFunctionConfig<InfoInput, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<InfoInput, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<InfoInput, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
7
|
+
export declare const pikkuInfoMiddleware: import("#pikku").PikkuFunctionConfig<InfoInput, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<InfoInput, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<InfoInput, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
8
|
+
export declare const pikkuInfoPermissions: import("#pikku").PikkuFunctionConfig<InfoInput, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<InfoInput, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<InfoInput, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
9
9
|
export {};
|
|
@@ -159,19 +159,6 @@ export const pikkuInfoTags = pikkuSessionlessFunc({
|
|
|
159
159
|
tagMap.get(tag).middlewareNames.push(...(group.instanceIds ?? []));
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
|
-
const tagPermissions = state.permissions?.tagPermissions;
|
|
163
|
-
if (tagPermissions) {
|
|
164
|
-
for (const [tag, group] of tagPermissions) {
|
|
165
|
-
if (!tagMap.has(tag)) {
|
|
166
|
-
tagMap.set(tag, {
|
|
167
|
-
funcIds: [],
|
|
168
|
-
middlewareNames: [],
|
|
169
|
-
permissionNames: [],
|
|
170
|
-
});
|
|
171
|
-
}
|
|
172
|
-
tagMap.get(tag).permissionNames.push(...(group.instanceIds ?? []));
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
162
|
const tags = [...tagMap.entries()].sort((a, b) => a[0].localeCompare(b[0]));
|
|
176
163
|
if (tags.length === 0) {
|
|
177
164
|
console.log('No tags found.');
|
|
@@ -11,7 +11,7 @@ interface LoginOptions {
|
|
|
11
11
|
* `~/.pikku/session.json`; generated CLI/websocket clients pick it up
|
|
12
12
|
* automatically.
|
|
13
13
|
*/
|
|
14
|
-
export declare const login: import("#pikku").PikkuFunctionConfig<LoginOptions, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<LoginOptions, void, "rpc" | "session", import("#pikku").
|
|
14
|
+
export declare const login: import("#pikku").PikkuFunctionConfig<LoginOptions, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<LoginOptions, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<LoginOptions, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
15
15
|
/**
|
|
16
16
|
* `pikku logout` — remove a stored session (the given `--url`, or the current
|
|
17
17
|
* default).
|
|
@@ -20,9 +20,9 @@ export declare const logout: import("#pikku").PikkuFunctionConfig<{
|
|
|
20
20
|
url?: string;
|
|
21
21
|
}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{
|
|
22
22
|
url?: string;
|
|
23
|
-
}, void, "rpc" | "session", import("#pikku").
|
|
23
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{
|
|
24
24
|
url?: string;
|
|
25
|
-
}, void, "rpc" | "session", import("#pikku").
|
|
25
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
26
26
|
/**
|
|
27
27
|
* `pikku whoami` — show the current (or `--url`) stored session and whether it
|
|
28
28
|
* has expired.
|
|
@@ -31,7 +31,7 @@ export declare const whoami: import("#pikku").PikkuFunctionConfig<{
|
|
|
31
31
|
url?: string;
|
|
32
32
|
}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{
|
|
33
33
|
url?: string;
|
|
34
|
-
}, void, "rpc" | "session", import("#pikku").
|
|
34
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{
|
|
35
35
|
url?: string;
|
|
36
|
-
}, void, "rpc" | "session", import("#pikku").
|
|
36
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
37
37
|
export {};
|
|
@@ -1,56 +1,56 @@
|
|
|
1
|
-
export declare const pikkuMetaFunctionsList: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").
|
|
1
|
+
export declare const pikkuMetaFunctionsList: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
2
2
|
export declare const pikkuMetaFunctionsGet: import("#pikku").PikkuFunctionConfig<{
|
|
3
3
|
functionId: string;
|
|
4
4
|
}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{
|
|
5
5
|
functionId: string;
|
|
6
|
-
}, void, "rpc" | "session", import("#pikku").
|
|
6
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{
|
|
7
7
|
functionId: string;
|
|
8
|
-
}, void, "rpc" | "session", import("#pikku").
|
|
9
|
-
export declare const pikkuMetaSchemasList: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").
|
|
8
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
9
|
+
export declare const pikkuMetaSchemasList: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
10
10
|
export declare const pikkuMetaSchemasGet: import("#pikku").PikkuFunctionConfig<{
|
|
11
11
|
schemaName: string;
|
|
12
12
|
}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{
|
|
13
13
|
schemaName: string;
|
|
14
|
-
}, void, "rpc" | "session", import("#pikku").
|
|
14
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{
|
|
15
15
|
schemaName: string;
|
|
16
|
-
}, void, "rpc" | "session", import("#pikku").
|
|
17
|
-
export declare const pikkuMetaWorkflowsList: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").
|
|
16
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
17
|
+
export declare const pikkuMetaWorkflowsList: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
18
18
|
export declare const pikkuMetaWorkflowsGet: import("#pikku").PikkuFunctionConfig<{
|
|
19
19
|
workflowId: string;
|
|
20
20
|
}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{
|
|
21
21
|
workflowId: string;
|
|
22
|
-
}, void, "rpc" | "session", import("#pikku").
|
|
22
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{
|
|
23
23
|
workflowId: string;
|
|
24
|
-
}, void, "rpc" | "session", import("#pikku").
|
|
25
|
-
export declare const pikkuMetaMiddlewareList: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").
|
|
24
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
25
|
+
export declare const pikkuMetaMiddlewareList: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
26
26
|
export declare const pikkuMetaMiddlewareGet: import("#pikku").PikkuFunctionConfig<{
|
|
27
27
|
middlewareId: string;
|
|
28
28
|
}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{
|
|
29
29
|
middlewareId: string;
|
|
30
|
-
}, void, "rpc" | "session", import("#pikku").
|
|
30
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{
|
|
31
31
|
middlewareId: string;
|
|
32
|
-
}, void, "rpc" | "session", import("#pikku").
|
|
33
|
-
export declare const pikkuMetaPermissionsList: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").
|
|
32
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
33
|
+
export declare const pikkuMetaPermissionsList: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
34
34
|
export declare const pikkuMetaPermissionsGet: import("#pikku").PikkuFunctionConfig<{
|
|
35
35
|
permissionId: string;
|
|
36
36
|
}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{
|
|
37
37
|
permissionId: string;
|
|
38
|
-
}, void, "rpc" | "session", import("#pikku").
|
|
38
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{
|
|
39
39
|
permissionId: string;
|
|
40
|
-
}, void, "rpc" | "session", import("#pikku").
|
|
41
|
-
export declare const pikkuMetaWiresList: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").
|
|
40
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
41
|
+
export declare const pikkuMetaWiresList: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
42
42
|
export declare const pikkuMetaWiresType: import("#pikku").PikkuFunctionConfig<{
|
|
43
43
|
type: string;
|
|
44
44
|
}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{
|
|
45
45
|
type: string;
|
|
46
|
-
}, void, "rpc" | "session", import("#pikku").
|
|
46
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{
|
|
47
47
|
type: string;
|
|
48
|
-
}, void, "rpc" | "session", import("#pikku").
|
|
49
|
-
export declare const pikkuMetaWiresHttp: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").
|
|
50
|
-
export declare const pikkuMetaWiresScheduler: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").
|
|
51
|
-
export declare const pikkuMetaWiresQueue: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").
|
|
52
|
-
export declare const pikkuMetaWiresChannel: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").
|
|
53
|
-
export declare const pikkuMetaWiresTrigger: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").
|
|
48
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
49
|
+
export declare const pikkuMetaWiresHttp: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
50
|
+
export declare const pikkuMetaWiresScheduler: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
51
|
+
export declare const pikkuMetaWiresQueue: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
52
|
+
export declare const pikkuMetaWiresChannel: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
53
|
+
export declare const pikkuMetaWiresTrigger: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
54
54
|
/**
|
|
55
55
|
* Bulk context endpoint.
|
|
56
56
|
*
|
|
@@ -63,7 +63,7 @@ export declare const pikkuMetaWiresTrigger: import("#pikku").PikkuFunctionConfig
|
|
|
63
63
|
* Targeted `pikku meta * get` calls are still the right tool when the planner
|
|
64
64
|
* wants schema details (input/output JSON schemas) for a specific entry.
|
|
65
65
|
*/
|
|
66
|
-
export declare const pikkuMetaContext: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").
|
|
66
|
+
export declare const pikkuMetaContext: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
67
67
|
/**
|
|
68
68
|
* Frontend-targeted metadata.
|
|
69
69
|
*
|
|
@@ -79,4 +79,4 @@ export declare const pikkuMetaContext: import("#pikku").PikkuFunctionConfig<{},
|
|
|
79
79
|
* non-exposed functions, http wires) is a backend concern and stays in
|
|
80
80
|
* `pikku meta context`.
|
|
81
81
|
*/
|
|
82
|
-
export declare const pikkuMetaClients: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").
|
|
82
|
+
export declare const pikkuMetaClients: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pick the protocol the generated test app uses to depend on its parent addon.
|
|
3
|
+
*
|
|
4
|
+
* Inside a workspace this must be `workspace:*`. The `file:` protocol copies
|
|
5
|
+
* the whole parent directory rather than honouring its `files` field, so the
|
|
6
|
+
* copy includes the parent's own test/node_modules — which already holds a
|
|
7
|
+
* copy. Every install then adds another layer until the path exceeds the OS
|
|
8
|
+
* limit. Outside a workspace `workspace:*` cannot resolve, so `file:` remains
|
|
9
|
+
* the only option there.
|
|
10
|
+
*/
|
|
11
|
+
export declare function resolveAddonDepProtocol(baseDir: string): string;
|
|
1
12
|
export declare const pikkuNewAddon: import("#pikku").PikkuFunctionConfig<{
|
|
2
13
|
name: string;
|
|
3
14
|
displayName?: string;
|
|
@@ -28,7 +39,7 @@ export declare const pikkuNewAddon: import("#pikku").PikkuFunctionConfig<{
|
|
|
28
39
|
authConfig?: string;
|
|
29
40
|
mcp?: boolean;
|
|
30
41
|
camelCase?: boolean;
|
|
31
|
-
}, void, "rpc" | "session", import("#pikku").
|
|
42
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{
|
|
32
43
|
name: string;
|
|
33
44
|
displayName?: string;
|
|
34
45
|
description?: string;
|
|
@@ -43,4 +54,4 @@ export declare const pikkuNewAddon: import("#pikku").PikkuFunctionConfig<{
|
|
|
43
54
|
authConfig?: string;
|
|
44
55
|
mcp?: boolean;
|
|
45
56
|
camelCase?: boolean;
|
|
46
|
-
}, void, "rpc" | "session", import("#pikku").
|
|
57
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
@@ -1,9 +1,42 @@
|
|
|
1
|
-
import { existsSync } from 'fs';
|
|
2
|
-
import { join } from 'path';
|
|
1
|
+
import { existsSync, readFileSync } from 'fs';
|
|
2
|
+
import { dirname, join } from 'path';
|
|
3
3
|
import { mkdir, writeFile } from 'fs/promises';
|
|
4
4
|
import { createEmptyManifest, saveManifest, } from '../../utils/contract-versions.js';
|
|
5
5
|
import { pikkuSessionlessFunc } from '#pikku';
|
|
6
6
|
import { parseOpenAPISpec, computeContractHash, generateAddonFromOpenAPI, loadAuthConfig, } from '@pikku/openapi-parser';
|
|
7
|
+
/**
|
|
8
|
+
* Pick the protocol the generated test app uses to depend on its parent addon.
|
|
9
|
+
*
|
|
10
|
+
* Inside a workspace this must be `workspace:*`. The `file:` protocol copies
|
|
11
|
+
* the whole parent directory rather than honouring its `files` field, so the
|
|
12
|
+
* copy includes the parent's own test/node_modules — which already holds a
|
|
13
|
+
* copy. Every install then adds another layer until the path exceeds the OS
|
|
14
|
+
* limit. Outside a workspace `workspace:*` cannot resolve, so `file:` remains
|
|
15
|
+
* the only option there.
|
|
16
|
+
*/
|
|
17
|
+
export function resolveAddonDepProtocol(baseDir) {
|
|
18
|
+
let dir = baseDir;
|
|
19
|
+
while (true) {
|
|
20
|
+
const manifest = join(dir, 'package.json');
|
|
21
|
+
if (existsSync(manifest)) {
|
|
22
|
+
try {
|
|
23
|
+
const { workspaces } = JSON.parse(readFileSync(manifest, 'utf8'));
|
|
24
|
+
if (Array.isArray(workspaces) || Array.isArray(workspaces?.packages)) {
|
|
25
|
+
return 'workspace:*';
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
// A malformed manifest tells us nothing about the workspace layout;
|
|
30
|
+
// keep walking up rather than failing the scaffold.
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const parent = dirname(dir);
|
|
34
|
+
if (parent === dir) {
|
|
35
|
+
return 'file:..';
|
|
36
|
+
}
|
|
37
|
+
dir = parent;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
7
40
|
function toCamelCase(str) {
|
|
8
41
|
return str.replace(/-([a-z0-9])/g, (_, c) => c.toUpperCase());
|
|
9
42
|
}
|
|
@@ -227,18 +260,28 @@ export const createWireServices = pikkuAddonWireServices(
|
|
|
227
260
|
`;
|
|
228
261
|
}
|
|
229
262
|
else if (flags.oauth || flags.credential === 'oauth2') {
|
|
263
|
+
// The OAuth2 access token is owned and refreshed by the platform credential
|
|
264
|
+
// service (better-auth). Resolve a ready token per-request via the wire and
|
|
265
|
+
// hand it to the service — the addon does not do its own token exchange.
|
|
230
266
|
files['src/services.ts'] =
|
|
231
|
-
`import {
|
|
232
|
-
import {
|
|
267
|
+
`import { UnauthorizedError } from '@pikku/core/errors'
|
|
268
|
+
import { ${pascalName}Service } from './${name}-api.service.js'
|
|
269
|
+
import { pikkuAddonWireServices } from '#pikku'
|
|
233
270
|
|
|
234
|
-
export const
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
271
|
+
export const createWireServices = pikkuAddonWireServices(
|
|
272
|
+
async ({ variables }, wire) => {
|
|
273
|
+
if (!wire.getCredential) {
|
|
274
|
+
throw new Error('Credential resolution is not available in this runtime')
|
|
275
|
+
}
|
|
276
|
+
const cred = await wire.getCredential<{ accessToken: string }>('${camelName}')
|
|
277
|
+
if (!cred?.accessToken) {
|
|
278
|
+
throw new UnauthorizedError('No ${displayName} connection — connect ${displayName} first')
|
|
279
|
+
}
|
|
280
|
+
const ${camelName} = new ${pascalName}Service(cred, variables)
|
|
239
281
|
|
|
240
|
-
|
|
241
|
-
}
|
|
282
|
+
return { ${camelName} }
|
|
283
|
+
}
|
|
284
|
+
)
|
|
242
285
|
`;
|
|
243
286
|
}
|
|
244
287
|
else if (flags.secret) {
|
|
@@ -329,41 +372,30 @@ export class ${pascalName}Service {
|
|
|
329
372
|
`;
|
|
330
373
|
}
|
|
331
374
|
else if (flags.oauth) {
|
|
375
|
+
// The access token is resolved (and refreshed) by the platform credential
|
|
376
|
+
// service and injected via createWireServices — this service just uses it.
|
|
332
377
|
files[`src/${name}-api.service.ts`] =
|
|
333
|
-
`import {
|
|
334
|
-
import type { TypedSecretService } from '#pikku/secrets/pikku-secrets.gen.js'
|
|
378
|
+
`import type { TypedVariablesService } from '#pikku/variables/pikku-variables.gen.js'
|
|
335
379
|
|
|
336
380
|
const BASE_URL = 'https://api.example.com/v1'
|
|
337
381
|
|
|
338
|
-
export const ${screamingName}_OAUTH2_CONFIG = {
|
|
339
|
-
tokenSecretId: '${screamingName}_TOKENS',
|
|
340
|
-
authorizationUrl: 'https://example.com/oauth2/authorize',
|
|
341
|
-
tokenUrl: 'https://example.com/oauth2/token',
|
|
342
|
-
scopes: ['read', 'write'],
|
|
343
|
-
}
|
|
344
|
-
|
|
345
382
|
export interface RequestOptions {
|
|
346
383
|
body?: unknown
|
|
347
384
|
qs?: Record<string, string | number | boolean | undefined>
|
|
348
385
|
}
|
|
349
386
|
|
|
350
387
|
export class ${pascalName}Service {
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
${screamingName}_OAUTH2_CONFIG,
|
|
356
|
-
'${screamingName}_APP_CREDENTIALS',
|
|
357
|
-
secrets
|
|
358
|
-
)
|
|
359
|
-
}
|
|
388
|
+
constructor(
|
|
389
|
+
private creds: { accessToken: string },
|
|
390
|
+
_variables?: TypedVariablesService
|
|
391
|
+
) {}
|
|
360
392
|
|
|
361
393
|
async request<T>(
|
|
362
394
|
method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH',
|
|
363
395
|
endpoint: string,
|
|
364
396
|
options?: RequestOptions
|
|
365
397
|
): Promise<T> {
|
|
366
|
-
const url = new URL(
|
|
398
|
+
const url = new URL(endpoint, BASE_URL)
|
|
367
399
|
|
|
368
400
|
if (options?.qs) {
|
|
369
401
|
for (const [key, value] of Object.entries(options.qs)) {
|
|
@@ -373,10 +405,11 @@ export class ${pascalName}Service {
|
|
|
373
405
|
}
|
|
374
406
|
}
|
|
375
407
|
|
|
376
|
-
const response = await
|
|
408
|
+
const response = await fetch(url.toString(), {
|
|
377
409
|
method,
|
|
378
410
|
headers: {
|
|
379
411
|
'Content-Type': 'application/json',
|
|
412
|
+
'Authorization': \`Bearer \${this.creds.accessToken}\`,
|
|
380
413
|
},
|
|
381
414
|
body: options?.body ? JSON.stringify(options.body) : undefined,
|
|
382
415
|
})
|
|
@@ -386,11 +419,7 @@ export class ${pascalName}Service {
|
|
|
386
419
|
throw new Error(\`${displayName} API error (\${response.status}): \${errorText}\`)
|
|
387
420
|
}
|
|
388
421
|
|
|
389
|
-
|
|
390
|
-
if (!text) {
|
|
391
|
-
return {} as T
|
|
392
|
-
}
|
|
393
|
-
return JSON.parse(text) as T
|
|
422
|
+
return response.json() as Promise<T>
|
|
394
423
|
}
|
|
395
424
|
}
|
|
396
425
|
`;
|
|
@@ -630,7 +659,7 @@ wireVariable({
|
|
|
630
659
|
return files;
|
|
631
660
|
}
|
|
632
661
|
function getTestFiles(vars) {
|
|
633
|
-
const { name, camelName, pascalName, screamingName } = vars;
|
|
662
|
+
const { name, camelName, pascalName, screamingName, addonDepProtocol } = vars;
|
|
634
663
|
const files = {};
|
|
635
664
|
// test/package.json
|
|
636
665
|
files['package.json'] = JSON.stringify({
|
|
@@ -647,7 +676,7 @@ function getTestFiles(vars) {
|
|
|
647
676
|
},
|
|
648
677
|
dependencies: {
|
|
649
678
|
'@pikku/core': '*',
|
|
650
|
-
[`@pikku/addon-${name}`]:
|
|
679
|
+
[`@pikku/addon-${name}`]: addonDepProtocol,
|
|
651
680
|
},
|
|
652
681
|
devDependencies: {
|
|
653
682
|
'@pikku/cli': '*',
|
|
@@ -811,7 +840,9 @@ export const pikkuNewAddon = pikkuSessionlessFunc({
|
|
|
811
840
|
const resolvedDescription = description || `${resolvedDisplayName} integration for Pikku`;
|
|
812
841
|
// Resolve target directory
|
|
813
842
|
const baseDir = dir || config.scaffold?.addonDir || process.cwd();
|
|
814
|
-
|
|
843
|
+
// Folder mirrors the package name (@pikku/addon-<name>) so a packages/
|
|
844
|
+
// listing reads as packages/addon-<name>, distinct from app workspaces.
|
|
845
|
+
const addonDir = join(baseDir, `addon-${name}`);
|
|
815
846
|
if (existsSync(addonDir)) {
|
|
816
847
|
logger.error(`Directory already exists: ${addonDir}`);
|
|
817
848
|
process.exit(1);
|
|
@@ -824,6 +855,7 @@ export const pikkuNewAddon = pikkuSessionlessFunc({
|
|
|
824
855
|
displayName: resolvedDisplayName,
|
|
825
856
|
description: resolvedDescription,
|
|
826
857
|
category,
|
|
858
|
+
addonDepProtocol: resolveAddonDepProtocol(baseDir),
|
|
827
859
|
};
|
|
828
860
|
// Load the auth config (custom auth header / delegated login overrides)
|
|
829
861
|
let loadedAuthConfig;
|
|
@@ -4,7 +4,7 @@ export declare const pikkuNewFunction: import("#pikku").PikkuFunctionConfig<{
|
|
|
4
4
|
}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{
|
|
5
5
|
name: string;
|
|
6
6
|
type?: string;
|
|
7
|
-
}, void, "rpc" | "session", import("#pikku").
|
|
7
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{
|
|
8
8
|
name: string;
|
|
9
9
|
type?: string;
|
|
10
|
-
}, void, "rpc" | "session", import("#pikku").
|
|
10
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
@@ -4,7 +4,7 @@ export declare const pikkuNewMiddleware: import("#pikku").PikkuFunctionConfig<{
|
|
|
4
4
|
}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{
|
|
5
5
|
name: string;
|
|
6
6
|
type?: string;
|
|
7
|
-
}, void, "rpc" | "session", import("#pikku").
|
|
7
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{
|
|
8
8
|
name: string;
|
|
9
9
|
type?: string;
|
|
10
|
-
}, void, "rpc" | "session", import("#pikku").
|
|
10
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
@@ -4,7 +4,7 @@ export declare const pikkuNewPermission: import("#pikku").PikkuFunctionConfig<{
|
|
|
4
4
|
}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{
|
|
5
5
|
name: string;
|
|
6
6
|
type?: string;
|
|
7
|
-
}, void, "rpc" | "session", import("#pikku").
|
|
7
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{
|
|
8
8
|
name: string;
|
|
9
9
|
type?: string;
|
|
10
|
-
}, void, "rpc" | "session", import("#pikku").
|
|
10
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
@@ -4,7 +4,7 @@ export declare const pikkuNewWiring: import("#pikku").PikkuFunctionConfig<{
|
|
|
4
4
|
}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{
|
|
5
5
|
name: string;
|
|
6
6
|
type?: string;
|
|
7
|
-
}, void, "rpc" | "session", import("#pikku").
|
|
7
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{
|
|
8
8
|
name: string;
|
|
9
9
|
type?: string;
|
|
10
|
-
}, void, "rpc" | "session", import("#pikku").
|
|
10
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export type BootstrapInput = {
|
|
2
2
|
allImports: string[];
|
|
3
3
|
};
|
|
4
|
-
export declare const pikkuBootstrap: import("#pikku").PikkuFunctionConfig<BootstrapInput, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<BootstrapInput, void, "rpc" | "session", import("#pikku").
|
|
4
|
+
export declare const pikkuBootstrap: import("#pikku").PikkuFunctionConfig<BootstrapInput, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<BootstrapInput, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<BootstrapInput, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
@@ -9,6 +9,12 @@ export const pikkuBootstrap = pikkuSessionlessFunc({
|
|
|
9
9
|
const addonBootstraps = [];
|
|
10
10
|
for (const [, decl] of stateBeforeBootstrap.rpc?.wireAddonDeclarations ??
|
|
11
11
|
[]) {
|
|
12
|
+
// Remote addons (wireRemoteAddon) run on the host — never import their
|
|
13
|
+
// runtime bootstrap here; that would register their functions locally
|
|
14
|
+
// and drag in the runtime deps remote consumption exists to avoid. The
|
|
15
|
+
// consumer's own wireRemoteAddon() call registers the remote binding.
|
|
16
|
+
if (decl.remote)
|
|
17
|
+
continue;
|
|
12
18
|
addonBootstraps.push(`${decl.package}/.pikku/pikku-bootstrap.gen.js`);
|
|
13
19
|
logger.debug(`• Addon bootstrap: ${decl.package}`);
|
|
14
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const pikkuSummary: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").
|
|
1
|
+
export declare const pikkuSummary: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const scenarioList: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").
|
|
1
|
+
export declare const scenarioList: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
2
2
|
export declare const scenarioRun: import("#pikku").PikkuFunctionConfig<{
|
|
3
3
|
environment: string;
|
|
4
4
|
flows?: string;
|
|
@@ -9,9 +9,9 @@ export declare const scenarioRun: import("#pikku").PikkuFunctionConfig<{
|
|
|
9
9
|
flows?: string;
|
|
10
10
|
tags?: string;
|
|
11
11
|
coverage?: boolean;
|
|
12
|
-
}, void, "rpc" | "session", import("#pikku").
|
|
12
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{
|
|
13
13
|
environment: string;
|
|
14
14
|
flows?: string;
|
|
15
15
|
tags?: string;
|
|
16
16
|
coverage?: boolean;
|
|
17
|
-
}, void, "rpc" | "session", import("#pikku").
|
|
17
|
+
}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const scopesAudit: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").WiredServices> | import("#pikku").PikkuFunction<{}, void, "rpc" | "session", import("#pikku").WiredServices>, undefined, undefined>;
|