@pikku/core 0.12.71 → 0.12.74
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/CHANGELOG.md +848 -0
- package/dist/crypto-utils.d.ts +30 -5
- package/dist/crypto-utils.js +146 -41
- package/dist/dev/hot-reload.js +11 -30
- package/dist/dev/module-runner.d.ts +3 -7
- package/dist/dev/module-runner.js +4 -10
- package/dist/dev/reload-meta.d.ts +8 -20
- package/dist/dev/reload-meta.js +9 -29
- package/dist/errors/error-handler.d.ts +5 -30
- package/dist/errors/error-handler.js +16 -32
- package/dist/errors/errors.d.ts +32 -151
- package/dist/errors/errors.js +55 -157
- package/dist/function/abort-scope.d.ts +47 -0
- package/dist/function/abort-scope.js +63 -0
- package/dist/function/function-runner.js +40 -30
- package/dist/function/functions.types.d.ts +44 -136
- package/dist/function/functions.types.js +0 -58
- package/dist/function/list.types.d.ts +12 -62
- package/dist/function/list.types.js +4 -25
- package/dist/handle-error.d.ts +0 -11
- package/dist/handle-error.js +6 -18
- package/dist/index.d.ts +5 -2
- package/dist/index.js +4 -1
- package/dist/middleware/auth-apikey.d.ts +3 -18
- package/dist/middleware/auth-apikey.js +0 -17
- package/dist/middleware/auth-bearer.d.ts +6 -41
- package/dist/middleware/auth-bearer.js +3 -40
- package/dist/middleware/auth-cookie.d.ts +5 -27
- package/dist/middleware/auth-cookie.js +2 -26
- package/dist/middleware/cors.d.ts +7 -34
- package/dist/middleware/cors.js +7 -34
- package/dist/middleware/remote-auth.d.ts +3 -1
- package/dist/middleware/remote-auth.js +3 -2
- package/dist/middleware/telemetry.d.ts +8 -33
- package/dist/middleware/telemetry.js +2 -31
- package/dist/middleware-runner.d.ts +4 -55
- package/dist/middleware-runner.js +5 -74
- package/dist/permissions.d.ts +3 -44
- package/dist/permissions.js +19 -71
- package/dist/pikku-request.d.ts +0 -6
- package/dist/pikku-request.js +0 -6
- package/dist/pikku-state.d.ts +0 -26
- package/dist/pikku-state.js +2 -30
- package/dist/remote.d.ts +3 -5
- package/dist/remote.js +8 -7
- package/dist/schema.d.ts +7 -17
- package/dist/schema.js +30 -18
- package/dist/scopes.d.ts +4 -23
- package/dist/scopes.js +7 -48
- package/dist/services/ai-agent-runner-service.d.ts +20 -0
- package/dist/services/ai-embedding-service.d.ts +2 -25
- package/dist/services/audit-service.js +1 -2
- package/dist/services/content-service.d.ts +1 -46
- package/dist/services/credential-service.d.ts +3 -40
- package/dist/services/deployment-service.d.ts +3 -9
- package/dist/services/gateway-service.d.ts +0 -15
- package/dist/services/http-personas.d.ts +80 -0
- package/dist/services/http-personas.js +233 -0
- package/dist/services/in-memory-queue-service.d.ts +0 -14
- package/dist/services/in-memory-queue-service.js +1 -15
- package/dist/services/in-memory-trigger-service.d.ts +0 -18
- package/dist/services/in-memory-trigger-service.js +1 -18
- package/dist/services/in-memory-workflow-service.d.ts +0 -16
- package/dist/services/in-memory-workflow-service.js +4 -33
- package/dist/services/index.d.ts +5 -6
- package/dist/services/index.js +2 -5
- package/dist/services/istanbul-coverage-service.d.ts +1 -5
- package/dist/services/istanbul-coverage-service.js +2 -8
- package/dist/services/jwt-service.d.ts +1 -16
- package/dist/services/local-content.d.ts +13 -2
- package/dist/services/local-content.js +40 -13
- package/dist/services/local-gateway-service.d.ts +0 -16
- package/dist/services/local-gateway-service.js +2 -17
- package/dist/services/local-secrets.d.ts +0 -4
- package/dist/services/local-secrets.js +0 -4
- package/dist/services/logger-console.d.ts +3 -7
- package/dist/services/logger-console.js +3 -7
- package/dist/services/logger.d.ts +2 -37
- package/dist/services/meta-service.d.ts +23 -26
- package/dist/services/meta-service.js +22 -36
- package/dist/services/personas-service.d.ts +134 -0
- package/dist/services/personas-service.js +40 -0
- package/dist/services/pikku-user-id.js +0 -4
- package/dist/services/queue-webhook-service.d.ts +2 -36
- package/dist/services/queue-webhook-service.js +9 -41
- package/dist/services/scheduler-service.d.ts +1 -50
- package/dist/services/scheduler-service.js +0 -10
- package/dist/services/schema-service.d.ts +1 -24
- package/dist/services/scope-service.d.ts +49 -34
- package/dist/services/scoped-secret-service.d.ts +0 -4
- package/dist/services/scoped-secret-service.js +0 -4
- package/dist/services/secret-host-binding.d.ts +8 -0
- package/dist/services/secret-host-binding.js +36 -0
- package/dist/services/secret-service.d.ts +5 -33
- package/dist/services/secretless.d.ts +6 -0
- package/dist/services/secretless.js +21 -0
- package/dist/services/stub-tracker.d.ts +7 -18
- package/dist/services/stub-tracker.js +8 -18
- package/dist/services/system-role-guard.d.ts +33 -0
- package/dist/services/system-role-guard.js +38 -0
- package/dist/services/trigger-service.d.ts +0 -12
- package/dist/services/typed-secret-service.d.ts +0 -7
- package/dist/services/typed-secret-service.js +1 -7
- package/dist/services/v8-coverage-service.d.ts +2 -3
- package/dist/services/v8-coverage-service.js +1 -2
- package/dist/services/variables-service.d.ts +1 -8
- package/dist/services/webhook-service.d.ts +19 -63
- package/dist/services/webhook-service.js +6 -20
- package/dist/services/workflow-service.d.ts +3 -15
- package/dist/testing/service-tests.js +0 -17
- package/dist/time-utils.d.ts +0 -16
- package/dist/time-utils.js +1 -19
- package/dist/types/core.types.d.ts +99 -219
- package/dist/types/core.types.js +0 -42
- package/dist/types/state.types.d.ts +4 -9
- package/dist/utils/hmac.d.ts +4 -10
- package/dist/utils/hmac.js +4 -10
- package/dist/utils/safe-fetch.d.ts +7 -35
- package/dist/utils/safe-fetch.js +13 -53
- package/dist/utils.d.ts +1 -6
- package/dist/utils.js +6 -15
- package/dist/wirings/actor-flow/actor-flow.types.d.ts +1 -34
- package/dist/wirings/actor-flow/index.d.ts +0 -9
- package/dist/wirings/actor-flow/run-conversation.d.ts +5 -5
- package/dist/wirings/actor-flow/run-conversation.js +14 -7
- package/dist/wirings/ai-agent/ai-agent-agui.d.ts +0 -5
- package/dist/wirings/ai-agent/ai-agent-agui.js +34 -12
- package/dist/wirings/ai-agent/ai-agent-helpers.d.ts +7 -0
- package/dist/wirings/ai-agent/ai-agent-helpers.js +7 -0
- package/dist/wirings/ai-agent/ai-agent-interrupt.d.ts +153 -0
- package/dist/wirings/ai-agent/ai-agent-interrupt.js +256 -0
- package/dist/wirings/ai-agent/ai-agent-memory.js +0 -2
- package/dist/wirings/ai-agent/ai-agent-model-config.d.ts +0 -9
- package/dist/wirings/ai-agent/ai-agent-model-config.js +1 -9
- package/dist/wirings/ai-agent/ai-agent-prepare.d.ts +10 -99
- package/dist/wirings/ai-agent/ai-agent-prepare.js +58 -131
- package/dist/wirings/ai-agent/ai-agent-registry.d.ts +2 -1
- package/dist/wirings/ai-agent/ai-agent-registry.js +5 -1
- package/dist/wirings/ai-agent/ai-agent-runner.js +49 -20
- package/dist/wirings/ai-agent/ai-agent-stream.d.ts +25 -2
- package/dist/wirings/ai-agent/ai-agent-stream.js +153 -63
- package/dist/wirings/ai-agent/ai-agent.types.d.ts +84 -4
- package/dist/wirings/ai-agent/index.d.ts +6 -4
- package/dist/wirings/ai-agent/index.js +5 -4
- package/dist/wirings/ai-agent/voice-input.d.ts +39 -1
- package/dist/wirings/ai-agent/voice-input.js +46 -3
- package/dist/wirings/ai-agent/voice-output.d.ts +54 -1
- package/dist/wirings/ai-agent/voice-output.js +153 -50
- package/dist/wirings/channel/channel-common.d.ts +7 -20
- package/dist/wirings/channel/channel-common.js +7 -21
- package/dist/wirings/channel/channel-handler.js +25 -6
- package/dist/wirings/channel/channel-host-rpc.d.ts +25 -0
- package/dist/wirings/channel/channel-host-rpc.js +38 -0
- package/dist/wirings/channel/channel-middleware-runner.d.ts +0 -12
- package/dist/wirings/channel/channel-middleware-runner.js +0 -12
- package/dist/wirings/channel/channel-rpc-registry.d.ts +31 -0
- package/dist/wirings/channel/channel-rpc-registry.js +89 -0
- package/dist/wirings/channel/channel-rpc-responder.d.ts +15 -0
- package/dist/wirings/channel/channel-rpc-responder.js +71 -0
- package/dist/wirings/channel/channel-rpc-service.d.ts +40 -0
- package/dist/wirings/channel/channel-rpc-service.js +106 -0
- package/dist/wirings/channel/channel-rpc-validators.d.ts +14 -0
- package/dist/wirings/channel/channel-rpc-validators.js +30 -0
- package/dist/wirings/channel/channel-rpc.d.ts +5 -0
- package/dist/wirings/channel/channel-rpc.js +5 -0
- package/dist/wirings/channel/channel-rpc.types.d.ts +90 -0
- package/dist/wirings/channel/channel-rpc.types.js +50 -0
- package/dist/wirings/channel/channel-runner.d.ts +0 -4
- package/dist/wirings/channel/channel-runner.js +0 -14
- package/dist/wirings/channel/channel-store.d.ts +0 -10
- package/dist/wirings/channel/channel.types.d.ts +12 -1
- package/dist/wirings/channel/define-channel-routes.d.ts +0 -20
- package/dist/wirings/channel/define-channel-routes.js +0 -20
- package/dist/wirings/channel/eventhub-service.d.ts +0 -18
- package/dist/wirings/channel/index.d.ts +4 -1
- package/dist/wirings/channel/index.js +2 -0
- package/dist/wirings/channel/local/local-channel-runner.js +3 -1
- package/dist/wirings/channel/local/local-eventhub-service.d.ts +0 -33
- package/dist/wirings/channel/local/local-eventhub-service.js +2 -36
- package/dist/wirings/channel/log-channels.d.ts +0 -4
- package/dist/wirings/channel/log-channels.js +0 -4
- package/dist/wirings/channel/pikku-abstract-channel-handler.js +6 -0
- package/dist/wirings/channel/serverless/serverless-channel-runner.js +2 -5
- package/dist/wirings/cli/channel/cli-approval.d.ts +41 -0
- package/dist/wirings/cli/channel/cli-approval.js +81 -0
- package/dist/wirings/cli/channel/cli-channel-runner.d.ts +0 -4
- package/dist/wirings/cli/channel/cli-channel-runner.js +3 -25
- package/dist/wirings/cli/channel/cli-raw-channel-runner.d.ts +47 -9
- package/dist/wirings/cli/channel/cli-raw-channel-runner.js +24 -16
- package/dist/wirings/cli/channel/cli-raw-client-runner.d.ts +20 -0
- package/dist/wirings/cli/channel/cli-raw-client-runner.js +121 -0
- package/dist/wirings/cli/channel/index.d.ts +4 -0
- package/dist/wirings/cli/channel/index.js +2 -0
- package/dist/wirings/cli/cli-runner.d.ts +20 -20
- package/dist/wirings/cli/cli-runner.js +28 -89
- package/dist/wirings/cli/cli.types.d.ts +14 -3
- package/dist/wirings/cli/command-parser.d.ts +1 -10
- package/dist/wirings/cli/command-parser.js +10 -87
- package/dist/wirings/cli/define-cli-commands.d.ts +1 -17
- package/dist/wirings/cli/define-cli-commands.js +1 -17
- package/dist/wirings/credential/credential.types.d.ts +0 -12
- package/dist/wirings/credential/define-credential.d.ts +48 -0
- package/dist/wirings/credential/define-credential.js +47 -0
- package/dist/wirings/credential/index.d.ts +1 -1
- package/dist/wirings/credential/index.js +1 -1
- package/dist/wirings/credential/validate-credential-definitions.d.ts +2 -4
- package/dist/wirings/gateway/gateway-runner.d.ts +1 -20
- package/dist/wirings/gateway/gateway-runner.js +8 -105
- package/dist/wirings/gateway/gateway.types.d.ts +7 -80
- package/dist/wirings/http/http-routes.d.ts +0 -63
- package/dist/wirings/http/http-routes.js +0 -63
- package/dist/wirings/http/http-runner.d.ts +1 -100
- package/dist/wirings/http/http-runner.js +12 -166
- package/dist/wirings/http/http.types.d.ts +16 -55
- package/dist/wirings/http/index.d.ts +2 -1
- package/dist/wirings/http/index.js +1 -1
- package/dist/wirings/http/log-http-routes.d.ts +0 -4
- package/dist/wirings/http/log-http-routes.js +0 -4
- package/dist/wirings/http/pikku-fetch-http-request.d.ts +6 -36
- package/dist/wirings/http/pikku-fetch-http-request.js +56 -50
- package/dist/wirings/http/pikku-fetch-http-response.js +0 -3
- package/dist/wirings/http/routers/path-to-regex.js +2 -13
- package/dist/wirings/http/web-request.d.ts +0 -8
- package/dist/wirings/http/web-request.js +25 -17
- package/dist/wirings/mcp/mcp-runner.d.ts +2 -0
- package/dist/wirings/mcp/mcp-runner.js +6 -16
- package/dist/wirings/mcp/mcp.types.d.ts +2 -35
- package/dist/wirings/oauth2/oauth2.types.d.ts +0 -28
- package/dist/wirings/oauth2/oauth2.types.js +0 -3
- package/dist/wirings/persona/define-personas.d.ts +28 -0
- package/dist/wirings/persona/define-personas.js +27 -0
- package/dist/wirings/persona/index.d.ts +21 -0
- package/dist/wirings/persona/index.js +17 -0
- package/dist/wirings/persona/persona-email.d.ts +37 -0
- package/dist/wirings/persona/persona-email.js +69 -0
- package/dist/wirings/persona/persona-environments.d.ts +45 -0
- package/dist/wirings/persona/persona-environments.js +81 -0
- package/dist/wirings/persona/persona-mailbox.d.ts +101 -0
- package/dist/wirings/persona/persona-mailbox.js +53 -0
- package/dist/wirings/persona/persona.types.d.ts +125 -0
- package/dist/wirings/persona/persona.types.js +1 -0
- package/dist/wirings/persona/validate-personas.d.ts +53 -0
- package/dist/wirings/persona/validate-personas.js +94 -0
- package/dist/wirings/queue/index.d.ts +3 -0
- package/dist/wirings/queue/index.js +2 -3
- package/dist/wirings/queue/queue-identity.d.ts +28 -0
- package/dist/wirings/queue/queue-identity.js +102 -0
- package/dist/wirings/queue/queue-runner.d.ts +0 -19
- package/dist/wirings/queue/queue-runner.js +9 -30
- package/dist/wirings/queue/queue.types.d.ts +18 -89
- package/dist/wirings/queue/register-queue-helper.d.ts +0 -12
- package/dist/wirings/queue/register-queue-helper.js +0 -11
- package/dist/wirings/queue/signed-queue-service.d.ts +16 -0
- package/dist/wirings/queue/signed-queue-service.js +42 -0
- package/dist/wirings/queue/validate-worker-config.d.ts +2 -23
- package/dist/wirings/queue/validate-worker-config.js +0 -14
- package/dist/wirings/role/define-system-role.d.ts +32 -0
- package/dist/wirings/role/define-system-role.js +31 -0
- package/dist/wirings/role/index.d.ts +3 -0
- package/dist/wirings/role/index.js +2 -0
- package/dist/wirings/role/role.types.d.ts +43 -0
- package/dist/wirings/role/role.types.js +1 -0
- package/dist/wirings/role/validate-role-definitions.d.ts +21 -0
- package/dist/wirings/role/validate-role-definitions.js +71 -0
- package/dist/wirings/rpc/addon-runner.d.ts +0 -19
- package/dist/wirings/rpc/addon-runner.js +0 -51
- package/dist/wirings/rpc/remote-addon-auth.d.ts +1 -12
- package/dist/wirings/rpc/remote-addon-auth.js +1 -9
- package/dist/wirings/rpc/rpc-runner.d.ts +11 -18
- package/dist/wirings/rpc/rpc-runner.js +88 -105
- package/dist/wirings/rpc/rpc-types.d.ts +7 -6
- package/dist/wirings/rpc/wire-addon.d.ts +25 -0
- package/dist/wirings/rpc/wire-addon.js +62 -0
- package/dist/wirings/rpc/wire-remote-addon.d.ts +3 -28
- package/dist/wirings/rpc/wire-remote-addon.js +0 -8
- package/dist/wirings/scheduler/log-schedulers.d.ts +0 -4
- package/dist/wirings/scheduler/log-schedulers.js +0 -4
- package/dist/wirings/scheduler/scheduler-runner.d.ts +0 -1
- package/dist/wirings/scheduler/scheduler-runner.js +0 -1
- package/dist/wirings/scheduler/scheduler.types.d.ts +1 -14
- package/dist/wirings/scope/define-scope.d.ts +32 -0
- package/dist/wirings/scope/define-scope.js +31 -0
- package/dist/wirings/scope/index.d.ts +1 -1
- package/dist/wirings/scope/index.js +1 -1
- package/dist/wirings/scope/scope.types.d.ts +7 -9
- package/dist/wirings/scope/validate-scope-definitions.d.ts +2 -21
- package/dist/wirings/scope/validate-scope-definitions.js +3 -21
- package/dist/wirings/secret/index.d.ts +1 -1
- package/dist/wirings/secret/index.js +1 -1
- package/dist/wirings/secret/secret.types.d.ts +19 -15
- package/dist/wirings/secret/secret.types.js +1 -1
- package/dist/wirings/secret/validate-secret-definitions.d.ts +2 -4
- package/dist/wirings/trigger/trigger-runner.d.ts +0 -27
- package/dist/wirings/trigger/trigger-runner.js +1 -24
- package/dist/wirings/trigger/trigger.types.d.ts +1 -82
- package/dist/wirings/trigger/trigger.types.js +0 -34
- package/dist/wirings/variable/index.d.ts +1 -1
- package/dist/wirings/variable/index.js +1 -1
- package/dist/wirings/variable/validate-variable-definitions.d.ts +2 -4
- package/dist/wirings/variable/variable.types.d.ts +1 -13
- package/dist/wirings/variable/variable.types.js +1 -1
- package/dist/wirings/virtual-user/index.d.ts +27 -0
- package/dist/wirings/virtual-user/index.js +8 -0
- package/dist/wirings/virtual-user/run-virtual-user.d.ts +92 -0
- package/dist/wirings/virtual-user/run-virtual-user.js +478 -0
- package/dist/wirings/virtual-user/virtual-user-agents.d.ts +38 -0
- package/dist/wirings/virtual-user/virtual-user-agents.js +24 -0
- package/dist/wirings/virtual-user/virtual-user-catalogue.d.ts +92 -0
- package/dist/wirings/virtual-user/virtual-user-catalogue.js +134 -0
- package/dist/wirings/virtual-user/virtual-user-derive.d.ts +26 -0
- package/dist/wirings/virtual-user/virtual-user-derive.js +137 -0
- package/dist/wirings/virtual-user/virtual-user-dispositions.d.ts +79 -0
- package/dist/wirings/virtual-user/virtual-user-dispositions.js +128 -0
- package/dist/wirings/virtual-user/virtual-user-intents.d.ts +78 -0
- package/dist/wirings/virtual-user/virtual-user-intents.js +142 -0
- package/dist/wirings/virtual-user/virtual-user-rng.d.ts +24 -0
- package/dist/wirings/virtual-user/virtual-user-rng.js +44 -0
- package/dist/wirings/virtual-user/virtual-user-target.d.ts +21 -0
- package/dist/wirings/virtual-user/virtual-user-target.js +34 -0
- package/dist/wirings/virtual-user/virtual-user.types.d.ts +199 -0
- package/dist/wirings/virtual-user/virtual-user.types.js +8 -0
- package/dist/wirings/workflow/dsl/workflow-dsl.types.d.ts +5 -5
- package/dist/wirings/workflow/dsl/workflow-runner.d.ts +0 -4
- package/dist/wirings/workflow/dsl/workflow-runner.js +0 -4
- package/dist/wirings/workflow/feature.d.ts +0 -19
- package/dist/wirings/workflow/feature.js +0 -19
- package/dist/wirings/workflow/graph/graph-node.d.ts +0 -98
- package/dist/wirings/workflow/graph/graph-node.js +0 -34
- package/dist/wirings/workflow/graph/graph-runner.js +6 -41
- package/dist/wirings/workflow/graph/wire-workflow-graph.d.ts +0 -4
- package/dist/wirings/workflow/graph/workflow-graph.types.d.ts +0 -58
- package/dist/wirings/workflow/graph/workflow-graph.types.js +0 -6
- package/dist/wirings/workflow/index.d.ts +5 -7
- package/dist/wirings/workflow/index.js +3 -17
- package/dist/wirings/workflow/pikku-scenario-service.d.ts +87 -5
- package/dist/wirings/workflow/pikku-scenario-service.js +204 -42
- package/dist/wirings/workflow/pikku-workflow-service.d.ts +7 -459
- package/dist/wirings/workflow/pikku-workflow-service.js +58 -551
- package/dist/wirings/workflow/run-timeline.d.ts +0 -47
- package/dist/wirings/workflow/run-timeline.js +0 -22
- package/dist/wirings/workflow/scenario-cookie-jar.d.ts +0 -23
- package/dist/wirings/workflow/scenario-cookie-jar.js +0 -16
- package/dist/wirings/workflow/scenario-poll.d.ts +0 -15
- package/dist/wirings/workflow/scenario-poll.js +0 -12
- package/dist/wirings/workflow/scenario-prose.d.ts +0 -28
- package/dist/wirings/workflow/scenario-prose.js +0 -18
- package/dist/wirings/workflow/scenario-step-guards.d.ts +0 -13
- package/dist/wirings/workflow/scenario-step-guards.js +1 -14
- package/dist/wirings/workflow/scenario-step.types.d.ts +72 -6
- package/dist/wirings/workflow/scenario-step.types.js +5 -1
- package/dist/wirings/workflow/scenario-surface.d.ts +16 -0
- package/dist/wirings/workflow/scenario-surface.js +56 -0
- package/dist/wirings/workflow/workflow-invocation-id.d.ts +0 -18
- package/dist/wirings/workflow/workflow-invocation-id.js +2 -22
- package/dist/wirings/workflow/workflow-queue-workers.d.ts +0 -20
- package/dist/wirings/workflow/workflow-queue-workers.js +0 -19
- package/dist/wirings/workflow/workflow.types.d.ts +0 -197
- package/knowledge/decisions/index.md +19 -0
- package/knowledge/decisions/internals/a-secret-that-fails-to-decrypt-fails-the-whole-read.md +49 -0
- package/knowledge/decisions/internals/actor-flow-conversations-seed-a-hidden-kickoff-message.md +23 -0
- package/knowledge/decisions/internals/actor-flow-drives-the-target-through-a-transport-seam.md +24 -0
- package/knowledge/decisions/internals/actor-flow-verdicts-are-llm-self-evaluations.md +25 -0
- package/knowledge/decisions/internals/addon-package-roots-resolve-by-walking-node-module-search-paths.md +26 -0
- package/knowledge/decisions/internals/addon-singleton-services-are-cached-per-namespace-not-per-package.md +33 -0
- package/knowledge/decisions/internals/addon-workflow-names-are-prefixed-with-the-consumer-namespace.md +28 -0
- package/knowledge/decisions/internals/ai-agent-agui-bridge-obeys-the-client-ordering-contract.md +29 -0
- package/knowledge/decisions/internals/ai-agent-audio-chunks-carry-the-format-the-provider-returned.md +20 -0
- package/knowledge/decisions/internals/ai-agent-credential-suspensions-hide-the-tool-result.md +26 -0
- package/knowledge/decisions/internals/ai-agent-delegate-and-supervise-hide-different-text.md +26 -0
- package/knowledge/decisions/internals/ai-agent-llm-tool-arguments-have-nulls-stripped.md +23 -0
- package/knowledge/decisions/internals/ai-agent-model-config-stays-a-single-resolution-seam.md +25 -0
- package/knowledge/decisions/internals/ai-agent-onerror-hooks-cannot-change-the-failure.md +22 -0
- package/knowledge/decisions/internals/ai-agent-runner-methods-must-keep-their-receiver.md +22 -0
- package/knowledge/decisions/internals/ai-agent-stream-persistence-is-best-effort.md +27 -0
- package/knowledge/decisions/internals/ai-agent-sub-agents-inherit-the-parent-context-block.md +26 -0
- package/knowledge/decisions/internals/ai-agent-tool-execute-failures-are-logged-unconditionally.md +25 -0
- package/knowledge/decisions/internals/ai-agent-voice-input-transcribes-audio-parts-in-place.md +22 -0
- package/knowledge/decisions/internals/ai-agent-working-memory-is-persisted-only-when-valid.md +25 -0
- package/knowledge/decisions/internals/channel-message-handlers-accept-three-config-shapes.md +30 -0
- package/knowledge/decisions/internals/channel-middleware-caches-only-statically-resolved-middleware.md +31 -0
- package/knowledge/decisions/internals/channel-state-is-per-socket-session-state-is-per-user.md +29 -0
- package/knowledge/decisions/internals/channel-user-id-is-persisted-after-onconnect-middleware-runs.md +28 -0
- package/knowledge/decisions/internals/cli-option-names-are-camelcase-in-state-and-kebab-on-the-command-line.md +27 -0
- package/knowledge/decisions/internals/cli-parse-errors-are-routed-by-message-prefix.md +28 -0
- package/knowledge/decisions/internals/cli-stdout-is-reserved-for-machine-readable-output.md +34 -0
- package/knowledge/decisions/internals/cli-unknown-long-options-warn-instead-of-failing.md +29 -0
- package/knowledge/decisions/internals/core-data-classification-brand-is-an-optional-property.md +34 -0
- package/knowledge/decisions/internals/core-function-runner-restores-the-wire-fields-it-overwrites.md +44 -0
- package/knowledge/decisions/internals/core-hot-reload-merges-generated-meta-never-replaces-it.md +39 -0
- package/knowledge/decisions/internals/core-hot-reload-owns-its-module-registry.md +42 -0
- package/knowledge/decisions/internals/core-middleware-order-is-scope-then-priority.md +39 -0
- package/knowledge/decisions/internals/core-schema-defaults-apply-on-every-transport.md +43 -0
- package/knowledge/decisions/internals/core-scopes-are-an-and-gate-separate-from-permissions.md +38 -0
- package/knowledge/decisions/internals/core-state-is-a-global-map-written-only-at-registration-time.md +44 -0
- package/knowledge/decisions/internals/email-meta-is-read-uncached-because-codegen-rewrites-it-mid-session.md +27 -0
- package/knowledge/decisions/internals/gateway-adapters-resolve-lazily-and-are-promise-cached.md +32 -0
- package/knowledge/decisions/internals/gateway-webhook-challenges-echo-bytes-not-json.md +28 -0
- package/knowledge/decisions/internals/gateway-wiring-is-a-meta-wiring-over-http-and-channels.md +31 -0
- package/knowledge/decisions/internals/generated-src-paths-in-pikku-meta-are-absolute.md +26 -0
- package/knowledge/decisions/internals/http-request-bodies-are-read-once-and-shared.md +32 -0
- package/knowledge/decisions/internals/http-route-groups-cascade-config-in-a-fixed-order.md +28 -0
- package/knowledge/decisions/internals/http-router-matches-normalized-paths-but-returns-registered-ones.md +30 -0
- package/knowledge/decisions/internals/http-runner-logs-through-a-trace-scoped-logger-functions-do-not.md +26 -0
- package/knowledge/decisions/internals/http-set-cookie-headers-are-appended-never-joined.md +28 -0
- package/knowledge/decisions/internals/http-sse-streams-flush-headers-only-after-middleware.md +32 -0
- package/knowledge/decisions/internals/http-wiring-without-metadata-is-skipped-not-fatal.md +26 -0
- package/knowledge/decisions/internals/in-a-scenario-a-4xx-is-data-not-an-exception.md +25 -0
- package/knowledge/decisions/internals/in-memory-workflow-history-aliases-the-live-step-object.md +26 -0
- package/knowledge/decisions/internals/index.md +113 -0
- package/knowledge/decisions/internals/istanbul-statement-counts-attach-to-the-start-line-only.md +25 -0
- package/knowledge/decisions/internals/local-trigger-and-gateway-services-assume-a-single-process.md +26 -0
- package/knowledge/decisions/internals/node-only-builtins-are-imported-dynamically.md +24 -0
- package/knowledge/decisions/internals/queue-group-concurrency-keeps-one-shared-queue-fair.md +28 -0
- package/knowledge/decisions/internals/queue-jobs-always-carry-an-explicit-attempts-count.md +27 -0
- package/knowledge/decisions/internals/remote-addons-dispatch-over-http-instead-of-local-meta.md +31 -0
- package/knowledge/decisions/internals/rpc-names-resolve-through-package-scope-before-root.md +32 -0
- package/knowledge/decisions/internals/scenario-agent-calls-sign-in-on-401-only.md +27 -0
- package/knowledge/decisions/internals/scenario-meta-lives-apart-from-app-meta-but-merges-when-read-off-disk.md +26 -0
- package/knowledge/decisions/internals/scenario-steps-return-drained-response-records.md +27 -0
- package/knowledge/decisions/internals/scope-roots-may-be-co-declared-by-an-addon-and-its-host-app.md +30 -0
- package/knowledge/decisions/internals/serverless-channel-disconnect-must-tolerate-a-missing-channel.md +28 -0
- package/knowledge/decisions/internals/the-dev-queue-copies-prod-timing-and-serialization-semantics.md +30 -0
- package/knowledge/decisions/internals/the-embedding-model-is-pinned-per-service-and-doc-query-embedding-is-split.md +29 -0
- package/knowledge/decisions/internals/the-in-memory-workflow-service-is-inline-only-and-single-process.md +27 -0
- package/knowledge/decisions/internals/the-kek-salt-is-scoped-to-the-key-version.md +40 -0
- package/knowledge/decisions/internals/the-schema-service-is-never-stubbed.md +26 -0
- package/knowledge/decisions/internals/trigger-declaration-is-split-from-trigger-source.md +33 -0
- package/knowledge/decisions/internals/typed-secret-service-caches-for-the-process-lifetime.md +26 -0
- package/knowledge/decisions/internals/webhook-delivery-history-records-every-attempt-best-effort.md +26 -0
- package/knowledge/decisions/internals/webhook-service-collaborators-are-constructor-args-not-locator-lookups.md +25 -0
- package/knowledge/decisions/internals/whether-a-run-is-inline-is-read-from-the-run-record.md +58 -0
- package/knowledge/decisions/internals/workflow-approval-expiry-is-decided-from-a-recorded-deadline.md +34 -0
- package/knowledge/decisions/internals/workflow-core-never-imports-a-browser-driver.md +42 -0
- package/knowledge/decisions/internals/workflow-dsl-meta-separates-runtime-expressions-from-literals.md +38 -0
- package/knowledge/decisions/internals/workflow-features-resolve-scenarios-by-object-identity.md +29 -0
- package/knowledge/decisions/internals/workflow-graph-inline-and-queued-runs-share-one-planner.md +42 -0
- package/knowledge/decisions/internals/workflow-graph-node-notes-are-excluded-from-the-graph-hash.md +25 -0
- package/knowledge/decisions/internals/workflow-inline-runs-report-their-run-id-before-they-can-fail.md +29 -0
- package/knowledge/decisions/internals/workflow-invocation-id-is-the-dedupe-key-not-step-id.md +43 -0
- package/knowledge/decisions/internals/workflow-queued-step-dispatch-requires-an-explicit-opt-in.md +29 -0
- package/knowledge/decisions/internals/workflow-queues-are-per-workflow-by-default.md +42 -0
- package/knowledge/decisions/internals/workflow-repeated-step-names-get-an-ordinal-suffix.md +33 -0
- package/knowledge/decisions/internals/workflow-replay-reads-its-steps-once-and-caches-only-the-immutable-half.md +32 -0
- package/knowledge/decisions/internals/workflow-retries-are-owned-by-the-workflow-not-the-queue.md +31 -0
- package/knowledge/decisions/internals/workflow-run-capabilities-are-extensions-not-subclasses.md +39 -0
- package/knowledge/decisions/internals/workflow-run-mirror-is-never-a-source-of-truth.md +29 -0
- package/knowledge/decisions/internals/workflow-run-polling-backs-off-to-the-callers-ceiling.md +33 -0
- package/knowledge/decisions/internals/workflow-run-timeline-is-a-pure-fold-over-durable-history.md +37 -0
- package/knowledge/decisions/internals/workflow-scenario-assertions-never-retry-and-record-one-step.md +50 -0
- package/knowledge/decisions/internals/workflow-scenario-hooks-are-a-scenario-only-affordance.md +43 -0
- package/knowledge/decisions/internals/workflow-scenario-prose-is-rendered-from-typed-calls-not-parsed-from-english.md +32 -0
- package/knowledge/decisions/internals/workflow-scenario-quarantine-reason-lives-in-code.md +18 -0
- package/knowledge/decisions/internals/workflow-scenario-step-targets-are-string-literals-for-the-inspector.md +34 -0
- package/knowledge/decisions/internals/workflow-step-compensation-runs-as-its-own-durable-step.md +26 -0
- package/knowledge/decisions/internals/workflow-step-dispatch-failure-is-transient-not-a-run-failure.md +33 -0
- package/knowledge/decisions/internals/workflow-step-lock-is-held-only-to-claim-the-step.md +27 -0
- package/knowledge/decisions/internals/workflow-step-rpc-name-is-provenance-only.md +34 -0
- package/knowledge/decisions/internals/workflow-suspend-and-approval-reasons-are-durable-step-identities.md +38 -0
- package/knowledge/decisions/internals/workflow-suspended-runs-keep-their-in-process-context.md +30 -0
- package/knowledge/decisions/security/a-dropped-audit-write-is-always-logged.md +26 -0
- package/knowledge/decisions/security/actor-flow-missing-approval-decisions-default-to-denied.md +22 -0
- package/knowledge/decisions/security/actor-sign-in-is-proven-by-set-cookie-not-a-non-empty-jar.md +27 -0
- package/knowledge/decisions/security/actor-sign-in-only-works-for-actor-flagged-users.md +27 -0
- package/knowledge/decisions/security/addon-auth-and-tags-only-tighten.md +43 -0
- package/knowledge/decisions/security/addon-config-gates-apply-only-at-the-namespaced-rpc-boundary.md +52 -0
- package/knowledge/decisions/security/addon-scopes-are-resolved-where-the-function-runs.md +46 -0
- package/knowledge/decisions/security/ai-agent-approval-forwarding-requires-a-symbol-brand.md +27 -0
- package/knowledge/decisions/security/ai-agent-credential-requests-are-symbol-branded.md +37 -0
- package/knowledge/decisions/security/ai-agent-gate-requires-a-session-only-when-auth-is-true.md +31 -0
- package/knowledge/decisions/security/ai-agent-ownership-failures-never-echo-the-resource.md +23 -0
- package/knowledge/decisions/security/ai-agent-resume-re-runs-the-authorization-gate.md +22 -0
- package/knowledge/decisions/security/ai-agent-sessionless-deployments-have-no-thread-ownership.md +39 -0
- package/knowledge/decisions/security/ai-agent-thread-ownership-composes-the-session-principal.md +30 -0
- package/knowledge/decisions/security/ai-agent-tool-filtering-reads-the-live-function-config.md +24 -0
- package/knowledge/decisions/security/an-empty-owners-constraint-matches-nothing.md +30 -0
- package/knowledge/decisions/security/an-exposed-ungated-function-is-a-codegen-warning.md +49 -0
- package/knowledge/decisions/security/console-addon-privileged-functions-gate-themselves.md +76 -0
- package/knowledge/decisions/security/core-safe-fetch-blocks-ssrf-by-host-literal-not-dns.md +39 -0
- package/knowledge/decisions/security/core-secrets-use-a-per-secret-dek-wrapped-by-a-kek.md +37 -0
- package/knowledge/decisions/security/gateway-handlers-run-through-the-function-runner-gate.md +31 -0
- package/knowledge/decisions/security/gateway-middleware-sessions-must-be-bridged-onto-the-wire.md +30 -0
- package/knowledge/decisions/security/global-permissions-and-function-permissions-are-independent-gates.md +40 -0
- package/knowledge/decisions/security/http-error-detail-is-withheld-from-clients-in-production.md +33 -0
- package/knowledge/decisions/security/http-request-bodies-are-bounded-before-they-are-buffered.md +46 -0
- package/knowledge/decisions/security/index.md +55 -0
- package/knowledge/decisions/security/mcp-internal-error-details-are-double-gated-on-production.md +27 -0
- package/knowledge/decisions/security/passphrases-are-stretched-key-material-is-expanded.md +40 -0
- package/knowledge/decisions/security/permission-auth-filtering-requires-live-permission-functions.md +31 -0
- package/knowledge/decisions/security/pikku-carries-actor-scopes-as-data-and-the-app-grants-them.md +26 -0
- package/knowledge/decisions/security/queue-job-identities-are-signed-at-enqueue.md +69 -0
- package/knowledge/decisions/security/queue-jobs-carry-the-producers-pikku-user-id.md +39 -0
- package/knowledge/decisions/security/remote-addon-tokens-are-client-credentials-not-mesh-trust.md +34 -0
- package/knowledge/decisions/security/scaffold-features-are-authenticated-unless-opted-out.md +49 -0
- package/knowledge/decisions/security/scenario-step-functions-are-never-externally-invocable.md +30 -0
- package/knowledge/decisions/security/scope-resolution-happens-at-the-session-boundary-and-sync-never-deletes.md +28 -0
- package/knowledge/decisions/security/self-authentication-is-declared-not-detected.md +34 -0
- package/knowledge/decisions/security/signed-content-urls-bind-the-request-path.md +37 -0
- package/knowledge/decisions/security/webhook-bodies-are-signed-before-they-are-enqueued.md +25 -0
- package/knowledge/decisions/security/workflow-actor-steps-always-use-the-real-transport.md +34 -0
- package/knowledge/decisions/security/workflow-approval-payloads-are-validated-on-replay-inside-the-workflow.md +40 -0
- package/knowledge/decisions/security/workflow-queued-steps-rehydrate-their-session-from-the-run-wire.md +32 -0
- package/knowledge/decisions/security/workflow-scenario-sessions-are-isolated-per-actor-and-per-scenario.md +32 -0
- package/knowledge/decisions/security/workflow-scenario-steps-are-never-network-invocable.md +31 -0
- package/knowledge/index.md +24 -0
- package/knowledge/questions/index.md +15 -0
- package/package.json +4 -2
- package/run-tests.sh +0 -0
- package/src/crypto-utils.test.ts +460 -19
- package/src/crypto-utils.ts +283 -55
- package/src/data-classification.ts +1 -7
- package/src/dev/hot-reload.test.ts +0 -4
- package/src/dev/hot-reload.ts +11 -30
- package/src/dev/module-runner.ts +7 -32
- package/src/dev/reload-meta.ts +9 -29
- package/src/errors/error-handler.ts +20 -35
- package/src/errors/error.test.ts +30 -1
- package/src/errors/errors.ts +73 -157
- package/src/function/abort-scope.test.ts +97 -0
- package/src/function/abort-scope.ts +80 -0
- package/src/function/function-runner.test.ts +75 -7
- package/src/function/function-runner.ts +73 -30
- package/src/function/functions.types.ts +56 -136
- package/src/function/list.types.test.ts +3 -25
- package/src/function/list.types.ts +12 -62
- package/src/gopass-secrets-removed.test.ts +51 -0
- package/src/handle-error.test.ts +108 -1
- package/src/handle-error.ts +8 -18
- package/src/index.ts +60 -1
- package/src/middleware/auth-apikey.test.ts +0 -1
- package/src/middleware/auth-apikey.ts +0 -17
- package/src/middleware/auth-bearer.test.ts +0 -3
- package/src/middleware/auth-bearer.ts +3 -40
- package/src/middleware/auth-cookie.test.ts +0 -6
- package/src/middleware/auth-cookie.ts +2 -26
- package/src/middleware/cors.test.ts +34 -0
- package/src/middleware/cors.ts +12 -33
- package/src/middleware/remote-auth.test.ts +24 -9
- package/src/middleware/remote-auth.ts +10 -2
- package/src/middleware/telemetry.ts +2 -31
- package/src/middleware-runner.test.ts +0 -2
- package/src/middleware-runner.ts +5 -74
- package/src/permissions.test.ts +30 -0
- package/src/permissions.ts +24 -74
- package/src/pikku-request.ts +0 -6
- package/src/pikku-state.ts +2 -30
- package/src/production-barrels-stay-lean.test.ts +110 -0
- package/src/remote.test.ts +172 -0
- package/src/remote.ts +17 -7
- package/src/schema.test.ts +103 -0
- package/src/schema.ts +35 -18
- package/src/scopes.ts +7 -48
- package/src/services/ai-agent-runner-service.ts +20 -0
- package/src/services/ai-embedding-service.ts +3 -25
- package/src/services/audit-service.ts +1 -2
- package/src/services/content-service.ts +1 -46
- package/src/services/credential-service.ts +3 -40
- package/src/services/credential-wire-service.test.ts +0 -2
- package/src/services/deployment-service.ts +3 -9
- package/src/services/gateway-service.ts +0 -15
- package/src/services/{http-scenario-actors-converse.test.ts → http-personas-converse.test.ts} +38 -9
- package/src/services/{http-scenario-actors.test.ts → http-personas.test.ts} +39 -22
- package/src/services/{http-scenario-actors.ts → http-personas.ts} +85 -45
- package/src/services/in-memory-queue-service.ts +1 -15
- package/src/services/in-memory-trigger-service.ts +1 -18
- package/src/services/in-memory-workflow-service.test.ts +0 -13
- package/src/services/in-memory-workflow-service.ts +4 -38
- package/src/services/index.ts +20 -15
- package/src/services/istanbul-coverage-service.ts +2 -8
- package/src/services/jwt-service.ts +1 -16
- package/src/services/local-content.test.ts +159 -27
- package/src/services/local-content.ts +55 -23
- package/src/services/local-gateway-service.ts +2 -17
- package/src/services/local-secrets.ts +0 -4
- package/src/services/logger-console.test.ts +0 -1
- package/src/services/logger-console.ts +3 -7
- package/src/services/logger.ts +2 -37
- package/src/services/meta-service.test.ts +1 -5
- package/src/services/meta-service.ts +41 -61
- package/src/services/{scenario-actors-service.ts → personas-service.ts} +48 -43
- package/src/services/pikku-user-id.ts +0 -4
- package/src/services/queue-webhook-service.ts +9 -41
- package/src/services/scheduler-service.ts +1 -50
- package/src/services/schema-service.ts +1 -24
- package/src/services/scope-service.ts +50 -34
- package/src/services/scoped-secret-service.ts +0 -4
- package/src/services/secret-host-binding.test.ts +138 -0
- package/src/services/secret-host-binding.ts +51 -0
- package/src/services/secret-service.ts +5 -33
- package/src/services/secretless.test.ts +54 -0
- package/src/services/secretless.ts +29 -0
- package/src/services/stub-tracker.ts +8 -18
- package/src/services/system-role-guard.test.ts +93 -0
- package/src/services/system-role-guard.ts +71 -0
- package/src/services/trigger-service.ts +0 -12
- package/src/services/typed-secret-service.ts +1 -7
- package/src/services/v8-coverage-service.ts +3 -6
- package/src/services/variables-service.ts +1 -8
- package/src/services/webhook-service.ts +19 -63
- package/src/services/workflow-service.ts +3 -20
- package/src/testing/service-tests.ts +0 -26
- package/src/time-utils.ts +1 -19
- package/src/types/core.types.ts +116 -229
- package/src/types/state.types.ts +7 -9
- package/src/utils/hmac.ts +4 -10
- package/src/utils/safe-fetch.ts +13 -54
- package/src/utils.test.ts +11 -2
- package/src/utils.ts +6 -15
- package/src/wirings/actor-flow/actor-flow.types.ts +1 -34
- package/src/wirings/actor-flow/index.ts +0 -9
- package/src/wirings/actor-flow/run-conversation.test.ts +11 -6
- package/src/wirings/actor-flow/run-conversation.ts +19 -12
- package/src/wirings/ai-agent/ai-agent-agui.test.ts +75 -10
- package/src/wirings/ai-agent/ai-agent-agui.ts +36 -17
- package/src/wirings/ai-agent/ai-agent-helpers.ts +20 -0
- package/src/wirings/ai-agent/ai-agent-interrupt.test.ts +842 -0
- package/src/wirings/ai-agent/ai-agent-interrupt.ts +399 -0
- package/src/wirings/ai-agent/ai-agent-memory.ts +0 -2
- package/src/wirings/ai-agent/ai-agent-model-config.ts +1 -9
- package/src/wirings/ai-agent/ai-agent-prepare.test.ts +202 -31
- package/src/wirings/ai-agent/ai-agent-prepare.ts +82 -138
- package/src/wirings/ai-agent/ai-agent-registry.test.ts +191 -6
- package/src/wirings/ai-agent/ai-agent-registry.ts +18 -1
- package/src/wirings/ai-agent/ai-agent-resume-authorization.test.ts +0 -2
- package/src/wirings/ai-agent/ai-agent-runner.test.ts +11 -9
- package/src/wirings/ai-agent/ai-agent-runner.ts +67 -33
- package/src/wirings/ai-agent/ai-agent-stream.test.ts +205 -103
- package/src/wirings/ai-agent/ai-agent-stream.ts +192 -75
- package/src/wirings/ai-agent/ai-agent-thread-ownership.test.ts +301 -0
- package/src/wirings/ai-agent/ai-agent.types.ts +85 -4
- package/src/wirings/ai-agent/index.ts +35 -3
- package/src/wirings/ai-agent/voice-input.test.ts +72 -7
- package/src/wirings/ai-agent/voice-input.ts +48 -3
- package/src/wirings/ai-agent/voice-output.test.ts +422 -0
- package/src/wirings/ai-agent/voice-output.ts +216 -56
- package/src/wirings/channel/channel-common.ts +15 -20
- package/src/wirings/channel/channel-handler.test.ts +50 -0
- package/src/wirings/channel/channel-handler.ts +32 -11
- package/src/wirings/channel/channel-host-rpc.test.ts +150 -0
- package/src/wirings/channel/channel-host-rpc.ts +69 -0
- package/src/wirings/channel/channel-middleware-runner.test.ts +0 -1
- package/src/wirings/channel/channel-middleware-runner.ts +0 -12
- package/src/wirings/channel/channel-rpc-registry.ts +116 -0
- package/src/wirings/channel/channel-rpc-responder.ts +117 -0
- package/src/wirings/channel/channel-rpc-service.ts +146 -0
- package/src/wirings/channel/channel-rpc-validators.ts +65 -0
- package/src/wirings/channel/channel-rpc.test.ts +820 -0
- package/src/wirings/channel/channel-rpc.ts +5 -0
- package/src/wirings/channel/channel-rpc.types.ts +150 -0
- package/src/wirings/channel/channel-runner.ts +0 -14
- package/src/wirings/channel/channel-store.ts +0 -10
- package/src/wirings/channel/channel.types.ts +19 -8
- package/src/wirings/channel/define-channel-routes.ts +0 -20
- package/src/wirings/channel/eventhub-service.ts +0 -18
- package/src/wirings/channel/index.ts +35 -0
- package/src/wirings/channel/local/local-channel-handler.ts +3 -1
- package/src/wirings/channel/local/local-channel-runner.test.ts +0 -10
- package/src/wirings/channel/local/local-channel-runner.ts +3 -1
- package/src/wirings/channel/local/local-eventhub-service.test.ts +0 -13
- package/src/wirings/channel/local/local-eventhub-service.ts +2 -37
- package/src/wirings/channel/log-channels.ts +0 -4
- package/src/wirings/channel/pikku-abstract-channel-handler.test.ts +83 -2
- package/src/wirings/channel/pikku-abstract-channel-handler.ts +7 -0
- package/src/wirings/channel/serverless/serverless-channel-runner.ts +2 -5
- package/src/wirings/cli/channel/cli-approval.test.ts +177 -0
- package/src/wirings/cli/channel/cli-approval.ts +135 -0
- package/src/wirings/cli/channel/cli-channel-runner.ts +4 -26
- package/src/wirings/cli/channel/cli-raw-channel-runner.test.ts +169 -0
- package/src/wirings/cli/channel/cli-raw-channel-runner.ts +59 -16
- package/src/wirings/cli/channel/cli-raw-client-runner.test.ts +480 -0
- package/src/wirings/cli/channel/cli-raw-client-runner.ts +155 -0
- package/src/wirings/cli/channel/index.ts +9 -0
- package/src/wirings/cli/cli-runner.test.ts +0 -1
- package/src/wirings/cli/cli-runner.ts +46 -88
- package/src/wirings/cli/cli.types.ts +14 -3
- package/src/wirings/cli/command-parser.test.ts +0 -4
- package/src/wirings/cli/command-parser.ts +11 -91
- package/src/wirings/cli/define-cli-commands.ts +1 -17
- package/src/wirings/credential/credential.types.ts +0 -12
- package/src/wirings/credential/{wire-credential.ts → define-credential.ts} +7 -7
- package/src/wirings/credential/index.ts +1 -1
- package/src/wirings/credential/validate-credential-definitions.ts +2 -4
- package/src/wirings/gateway/gateway-runner.test.ts +1 -21
- package/src/wirings/gateway/gateway-runner.ts +8 -110
- package/src/wirings/gateway/gateway.types.ts +7 -80
- package/src/wirings/http/http-routes.test.ts +0 -3
- package/src/wirings/http/http-routes.ts +0 -86
- package/src/wirings/http/http-runner.test.ts +0 -1
- package/src/wirings/http/http-runner.ts +12 -168
- package/src/wirings/http/http.types.ts +17 -62
- package/src/wirings/http/index.ts +5 -1
- package/src/wirings/http/log-http-routes.ts +0 -4
- package/src/wirings/http/pikku-fetch-http-request.test.ts +88 -7
- package/src/wirings/http/pikku-fetch-http-request.ts +74 -50
- package/src/wirings/http/pikku-fetch-http-response.test.ts +1 -1
- package/src/wirings/http/pikku-fetch-http-response.ts +0 -3
- package/src/wirings/http/routers/path-to-regex.test.ts +4 -17
- package/src/wirings/http/routers/path-to-regex.ts +2 -13
- package/src/wirings/http/web-request.test.ts +33 -2
- package/src/wirings/http/web-request.ts +30 -17
- package/src/wirings/mcp/mcp-endpoint-registry.test.ts +0 -1
- package/src/wirings/mcp/mcp-runner.test.ts +40 -0
- package/src/wirings/mcp/mcp-runner.ts +9 -15
- package/src/wirings/mcp/mcp.types.ts +7 -42
- package/src/wirings/oauth2/oauth2.types.ts +0 -30
- package/src/wirings/persona/define-personas.ts +29 -0
- package/src/wirings/persona/index.ts +62 -0
- package/src/wirings/persona/persona-email.ts +87 -0
- package/src/wirings/persona/persona-environments.test.ts +183 -0
- package/src/wirings/persona/persona-environments.ts +138 -0
- package/src/wirings/persona/persona-mailbox.ts +156 -0
- package/src/wirings/persona/persona.test.ts +220 -0
- package/src/wirings/persona/persona.types.ts +131 -0
- package/src/wirings/persona/validate-personas.ts +133 -0
- package/src/wirings/queue/index.ts +13 -3
- package/src/wirings/queue/queue-identity.test.ts +453 -0
- package/src/wirings/queue/queue-identity.ts +173 -0
- package/src/wirings/queue/queue-runner.ts +12 -31
- package/src/wirings/queue/queue.types.ts +19 -89
- package/src/wirings/queue/register-queue-helper.ts +0 -14
- package/src/wirings/queue/signed-queue-service.ts +59 -0
- package/src/wirings/queue/validate-worker-config.ts +2 -28
- package/src/wirings/role/define-system-role.ts +33 -0
- package/src/wirings/role/index.ts +13 -0
- package/src/wirings/role/role.test.ts +104 -0
- package/src/wirings/role/role.types.ts +47 -0
- package/src/wirings/role/validate-role-definitions.ts +93 -0
- package/src/wirings/rpc/addon-auth-tags.test.ts +223 -0
- package/src/wirings/rpc/addon-runner.ts +0 -56
- package/src/wirings/rpc/addon-scopes.test.ts +225 -0
- package/src/wirings/rpc/remote-addon-auth.ts +1 -13
- package/src/wirings/rpc/rpc-runner.test.ts +186 -2
- package/src/wirings/rpc/rpc-runner.ts +145 -127
- package/src/wirings/rpc/rpc-types.ts +11 -6
- package/src/wirings/rpc/wire-addon.test.ts +43 -1
- package/src/wirings/rpc/wire-addon.ts +99 -0
- package/src/wirings/rpc/wire-remote-addon.ts +9 -29
- package/src/wirings/scheduler/log-schedulers.ts +0 -4
- package/src/wirings/scheduler/scheduler-runner.test.ts +1 -8
- package/src/wirings/scheduler/scheduler-runner.ts +0 -2
- package/src/wirings/scheduler/scheduler.types.ts +1 -14
- package/src/wirings/scope/{wire-scope.ts → define-scope.ts} +5 -6
- package/src/wirings/scope/index.ts +1 -1
- package/src/wirings/scope/scope.test.ts +1 -2
- package/src/wirings/scope/scope.types.ts +7 -9
- package/src/wirings/scope/validate-scope-definitions.ts +3 -21
- package/src/wirings/secret/index.ts +1 -1
- package/src/wirings/secret/secret.types.ts +19 -15
- package/src/wirings/secret/validate-secret-definitions.ts +2 -4
- package/src/wirings/trigger/trigger-runner.ts +1 -27
- package/src/wirings/trigger/trigger.types.ts +1 -82
- package/src/wirings/variable/index.ts +1 -1
- package/src/wirings/variable/validate-variable-definitions.ts +2 -4
- package/src/wirings/variable/variable.types.ts +1 -13
- package/src/wirings/virtual-user/index.ts +76 -0
- package/src/wirings/virtual-user/run-virtual-user.test.ts +765 -0
- package/src/wirings/virtual-user/run-virtual-user.ts +671 -0
- package/src/wirings/virtual-user/virtual-user-agents.test.ts +65 -0
- package/src/wirings/virtual-user/virtual-user-agents.ts +57 -0
- package/src/wirings/virtual-user/virtual-user-catalogue.test.ts +215 -0
- package/src/wirings/virtual-user/virtual-user-catalogue.ts +184 -0
- package/src/wirings/virtual-user/virtual-user-derive.test.ts +398 -0
- package/src/wirings/virtual-user/virtual-user-derive.ts +173 -0
- package/src/wirings/virtual-user/virtual-user-dispositions.test.ts +63 -0
- package/src/wirings/virtual-user/virtual-user-dispositions.ts +213 -0
- package/src/wirings/virtual-user/virtual-user-intents.test.ts +208 -0
- package/src/wirings/virtual-user/virtual-user-intents.ts +185 -0
- package/src/wirings/virtual-user/virtual-user-rng.test.ts +72 -0
- package/src/wirings/virtual-user/virtual-user-rng.ts +50 -0
- package/src/wirings/virtual-user/virtual-user-target.ts +47 -0
- package/src/wirings/virtual-user/virtual-user.types.ts +219 -0
- package/src/wirings/workflow/dsl/workflow-dsl.types.ts +5 -4
- package/src/wirings/workflow/dsl/workflow-runner.ts +0 -4
- package/src/wirings/workflow/feature.ts +0 -19
- package/src/wirings/workflow/graph/graph-node.ts +0 -136
- package/src/wirings/workflow/graph/graph-runner.test.ts +20 -19
- package/src/wirings/workflow/graph/graph-runner.ts +6 -41
- package/src/wirings/workflow/graph/wire-workflow-graph.ts +0 -4
- package/src/wirings/workflow/graph/workflow-graph.types.ts +0 -58
- package/src/wirings/workflow/index.ts +10 -44
- package/src/wirings/workflow/pikku-scenario-service.ts +235 -52
- package/src/wirings/workflow/pikku-workflow-service.test.ts +0 -39
- package/src/wirings/workflow/pikku-workflow-service.ts +77 -674
- package/src/wirings/workflow/run-timeline.test.ts +7 -19
- package/src/wirings/workflow/run-timeline.ts +0 -56
- package/src/wirings/workflow/scenario-cookie-jar.test.ts +0 -1
- package/src/wirings/workflow/scenario-cookie-jar.ts +0 -25
- package/src/wirings/workflow/scenario-expectations.test.ts +2 -7
- package/src/wirings/workflow/scenario-hooks.test.ts +2 -7
- package/src/wirings/workflow/scenario-poll.test.ts +0 -2
- package/src/wirings/workflow/scenario-poll.ts +0 -15
- package/src/wirings/workflow/scenario-prose.ts +0 -28
- package/src/wirings/workflow/scenario-service.test.ts +2 -9
- package/src/wirings/workflow/scenario-step-guards.ts +1 -14
- package/src/wirings/workflow/scenario-step.test.ts +159 -14
- package/src/wirings/workflow/scenario-step.types.ts +82 -6
- package/src/wirings/workflow/scenario-surface.test.ts +145 -0
- package/src/wirings/workflow/scenario-surface.ts +71 -0
- package/src/wirings/workflow/workflow-dispatch-durability.test.ts +14 -15
- package/src/wirings/workflow/workflow-dispatch-payload.test.ts +0 -4
- package/src/wirings/workflow/workflow-inline-authority.test.ts +169 -0
- package/src/wirings/workflow/workflow-invocation-id.test.ts +0 -2
- package/src/wirings/workflow/workflow-invocation-id.ts +2 -22
- package/src/wirings/workflow/workflow-mirror.test.ts +0 -7
- package/src/wirings/workflow/workflow-on-error.test.ts +0 -9
- package/src/wirings/workflow/workflow-queue-workers.ts +0 -21
- package/src/wirings/workflow/workflow-replay-snapshot.test.ts +8 -7
- package/src/wirings/workflow/workflow-retry-policy.test.ts +0 -5
- package/src/wirings/workflow/workflow-run-context.test.ts +5 -10
- package/src/wirings/workflow/workflow-run-polling.test.ts +0 -5
- package/src/wirings/workflow/workflow-step-ordinal.test.ts +19 -4
- package/src/wirings/workflow/workflow-step-session.test.ts +0 -7
- package/src/wirings/workflow/workflow.types.ts +0 -203
- package/tsconfig.tsbuildinfo +1 -1
- package/src/middleware/timeout.ts +0 -22
- package/src/pikku-response.ts +0 -5
- package/src/services/gopass-secrets.ts +0 -78
- package/src/wirings/mcp/mcp-endpoint-registry.test.d.ts +0 -1
- package/src/wirings/workflow/dsl/index.ts +0 -36
- package/src/wirings/workflow/graph/index.ts +0 -15
|
@@ -12,7 +12,7 @@ import type { PikkuScheduledTask } from '../wirings/scheduler/scheduler.types.js
|
|
|
12
12
|
import type { PikkuQueue, QueueService } from '../wirings/queue/queue.types.js';
|
|
13
13
|
import type { PikkuCLI } from '../wirings/cli/cli.types.js';
|
|
14
14
|
import type { PikkuWorkflowWire, PikkuScenarioWire, WorkflowService, WorkflowServiceConfig, WorkflowStepWire } from '../wirings/workflow/workflow.types.js';
|
|
15
|
-
import type { PikkuBrowserWire, PikkuScenarioStepWire } from '../wirings/workflow/scenario-step.types.js';
|
|
15
|
+
import type { PikkuBrowserWire, PikkuScenarioStepWire, ScenarioStepKind, ScenarioSurface } from '../wirings/workflow/scenario-step.types.js';
|
|
16
16
|
import type { PikkuGraphWire } from '../wirings/workflow/graph/workflow-graph.types.js';
|
|
17
17
|
import type { PikkuTrigger } from '../wirings/trigger/trigger.types.js';
|
|
18
18
|
import type { PikkuGateway } from '../wirings/gateway/gateway.types.js';
|
|
@@ -20,7 +20,7 @@ import type { SchedulerService } from '../services/scheduler-service.js';
|
|
|
20
20
|
import type { DeploymentService } from '../services/deployment-service.js';
|
|
21
21
|
import type { AIStorageService } from '../services/ai-storage-service.js';
|
|
22
22
|
import type { ContentService } from '../services/content-service.js';
|
|
23
|
-
import type {
|
|
23
|
+
import type { ScenarioPersonaOf, ScenarioPersonas } from '../services/personas-service.js';
|
|
24
24
|
import type { AIAgentRunnerService } from '../services/ai-agent-runner-service.js';
|
|
25
25
|
import type { AIEmbeddingService } from '../services/ai-embedding-service.js';
|
|
26
26
|
import type { AIRunStateService } from '../services/ai-run-state-service.js';
|
|
@@ -44,12 +44,6 @@ export interface FunctionWiresMeta {
|
|
|
44
44
|
optimized: boolean;
|
|
45
45
|
wires: string[];
|
|
46
46
|
}
|
|
47
|
-
/**
|
|
48
|
-
* Metadata for middleware at any level
|
|
49
|
-
* - type: 'http' = HTTP route middleware group (references httpGroup in pikkuState)
|
|
50
|
-
* - type: 'tag' = Tag-based middleware group (references tagGroup in pikkuState)
|
|
51
|
-
* - type: 'wire' = Wire-level individual middleware
|
|
52
|
-
*/
|
|
53
47
|
export type MiddlewareMetadata = {
|
|
54
48
|
type: 'http';
|
|
55
49
|
route: string;
|
|
@@ -62,16 +56,8 @@ export type MiddlewareMetadata = {
|
|
|
62
56
|
inline?: boolean;
|
|
63
57
|
};
|
|
64
58
|
/**
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
* - type: 'tag' = Tag-based permission group (references tagGroup in pikkuState)
|
|
68
|
-
* - type: 'wire' = Wire-level individual permission
|
|
69
|
-
*/
|
|
70
|
-
/**
|
|
71
|
-
* A reference to a permission function a function declares, resolved by name.
|
|
72
|
-
* Used at filter time (e.g. listing agent tools) to run the session-only
|
|
73
|
-
* (pikkuAuth) predicates without request data. Permissions are function-scoped
|
|
74
|
-
* only — there are no wire- or tag-level permission references.
|
|
59
|
+
* A reference to a permission function, resolved by name. Function-scoped
|
|
60
|
+
* only: there are no wire- or tag-level permission references.
|
|
75
61
|
*/
|
|
76
62
|
export type PermissionMetadata = {
|
|
77
63
|
type: 'wire';
|
|
@@ -85,21 +71,28 @@ export type FunctionRuntimeMeta = {
|
|
|
85
71
|
/** Scopes the session must hold to run this function. All are required (AND). */
|
|
86
72
|
scopes?: string[];
|
|
87
73
|
expose?: boolean;
|
|
74
|
+
/**
|
|
75
|
+
* A sessionless function's own `auth: true`. `sessionless` carries the
|
|
76
|
+
* baseline — a `pikkuFunc` always requires a session — and this carries the
|
|
77
|
+
* tightening a `pikkuSessionlessFunc` applies to itself. Both are needed to
|
|
78
|
+
* know whether a function is gated without running it.
|
|
79
|
+
*/
|
|
80
|
+
auth?: boolean;
|
|
81
|
+
/**
|
|
82
|
+
* The author's declaration that this function authorizes callers in its own
|
|
83
|
+
* body. Carries no runtime effect — it records a gate codegen cannot see, so
|
|
84
|
+
* an audit is not left to guess whether a sessionless function is open.
|
|
85
|
+
*/
|
|
86
|
+
selfAuthenticated?: boolean;
|
|
88
87
|
remote?: boolean;
|
|
89
88
|
/**
|
|
90
|
-
* A step RPC:
|
|
91
|
-
* else
|
|
92
|
-
* rather than a separate concept — a step is invoked by name exactly as an
|
|
93
|
-
* RPC is, which is why a run records the step function in its `rpcName`.
|
|
94
|
-
* What makes it its own kind is that it is never network-callable: a step
|
|
95
|
-
* may drive a browser or assert against fixtures.
|
|
89
|
+
* A step RPC: invoked by name only from a scenario run and refused
|
|
90
|
+
* everywhere else, so it is never network-callable.
|
|
96
91
|
*/
|
|
97
92
|
scenarioStep?: boolean;
|
|
98
93
|
/**
|
|
99
|
-
* The
|
|
100
|
-
*
|
|
101
|
-
* `scenarioStep`: a scenario is only ever run by `pikku scenario run`, so it
|
|
102
|
-
* has to be held back from the app bootstrap and from every deployed unit.
|
|
94
|
+
* The body of a `pikkuScenario(...)`. Only ever run by `pikku scenario run`,
|
|
95
|
+
* so it is held back from the app bootstrap and from every deployed unit.
|
|
103
96
|
*/
|
|
104
97
|
scenario?: boolean;
|
|
105
98
|
mcp?: boolean;
|
|
@@ -112,10 +105,30 @@ export type FunctionRuntimeMeta = {
|
|
|
112
105
|
workflowRetries?: number;
|
|
113
106
|
/** Timeout when this function is used as a workflow step (e.g. '30s', '5m'). */
|
|
114
107
|
workflowTimeout?: string;
|
|
115
|
-
/**
|
|
116
|
-
|
|
108
|
+
/**
|
|
109
|
+
* Scenario steps only: which surfaces this step declares a binding for.
|
|
110
|
+
*
|
|
111
|
+
* The reporter derives coverage from this — a `then` with no binding for the
|
|
112
|
+
* surface the run targeted was never actually witnessed there, which is a gap
|
|
113
|
+
* worth counting rather than excusing.
|
|
114
|
+
*/
|
|
115
|
+
scenarioStepSurfaces?: ScenarioSurface[];
|
|
116
|
+
/**
|
|
117
|
+
* Scenario steps only: who acts. Absent means `persona` — the ordinary step,
|
|
118
|
+
* and the only kind that existed before the other two.
|
|
119
|
+
*
|
|
120
|
+
* A `platform` or `addon` step is the app or a third-party system acting, and
|
|
121
|
+
* it must never reach a virtual user's catalogue. That is not tidiness: a
|
|
122
|
+
* virtual user that can invoke "Stripe's webhook arrives" can forge its own
|
|
123
|
+
* payment success, and every finding downstream of that is worthless.
|
|
124
|
+
*/
|
|
125
|
+
scenarioStepKind?: ScenarioStepKind;
|
|
126
|
+
/** Addon steps only: the addon whose system acts — `wireAddon`'s `name`. */
|
|
127
|
+
scenarioStepAddon?: string;
|
|
117
128
|
/** Scenario steps only: the prose a reporter renders, with `{placeholders}` filled from the step's recorded input. */
|
|
118
129
|
scenarioStepTemplate?: string;
|
|
130
|
+
/** Keeps the full `SecretService`. Set by the inspector, read by the runner. */
|
|
131
|
+
secretBroker?: boolean;
|
|
119
132
|
version?: number;
|
|
120
133
|
approvalRequired?: boolean;
|
|
121
134
|
approvalDescription?: string;
|
|
@@ -126,7 +139,8 @@ export type FunctionRuntimeMeta = {
|
|
|
126
139
|
};
|
|
127
140
|
export type FunctionMeta = FunctionRuntimeMeta & Partial<{
|
|
128
141
|
name: string;
|
|
129
|
-
|
|
142
|
+
/** `remote`: a contract with no local body, answered by a connected client. */
|
|
143
|
+
functionType: 'user' | 'inline' | 'helper' | 'remote';
|
|
130
144
|
funcWrapper: string;
|
|
131
145
|
services: FunctionServicesMeta;
|
|
132
146
|
wires: FunctionWiresMeta;
|
|
@@ -147,35 +161,18 @@ export type FunctionMeta = FunctionRuntimeMeta & Partial<{
|
|
|
147
161
|
export type FunctionsRuntimeMeta = Record<string, FunctionRuntimeMeta>;
|
|
148
162
|
export type FunctionsMeta = Record<string, FunctionMeta>;
|
|
149
163
|
export type MakeRequired<T, K extends keyof T> = Omit<T, K> & Required<Pick<T, K>>;
|
|
150
|
-
/**
|
|
151
|
-
* Represents a JSON primitive type which can be a string, number, boolean, null, or undefined.
|
|
152
|
-
*/
|
|
153
164
|
export type JSONPrimitive = string | number | boolean | null | undefined;
|
|
154
|
-
/**
|
|
155
|
-
* Represents a JSON value which can be a primitive, an array, or an object.
|
|
156
|
-
*/
|
|
157
165
|
export type JSONValue = JSONPrimitive | JSONValue[] | {
|
|
158
166
|
[key: string]: JSONValue;
|
|
159
167
|
};
|
|
160
|
-
/**
|
|
161
|
-
* Utility type for making certain keys required and leaving the rest as optional.
|
|
162
|
-
*/
|
|
163
168
|
export type PickRequired<T, K extends keyof T> = T & Required<Pick<T, K>>;
|
|
164
|
-
/**
|
|
165
|
-
* Utility type for making certain keys optional while keeping the rest required.
|
|
166
|
-
*/
|
|
167
169
|
export type PickOptional<T, K extends keyof T> = Partial<T> & Pick<T, K>;
|
|
168
|
-
/**
|
|
169
|
-
* Utility type that ensures at least one key in the given type `T` is required.
|
|
170
|
-
*/
|
|
171
170
|
export type RequireAtLeastOne<T> = {
|
|
172
171
|
[K in keyof T]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<keyof T, K>>>;
|
|
173
172
|
}[keyof T];
|
|
174
173
|
/**
|
|
175
|
-
* Runtime
|
|
176
|
-
*
|
|
177
|
-
* contract the CLI's db commands read); this block is purely runtime pool
|
|
178
|
-
* tuning that the CLI never touches.
|
|
174
|
+
* Runtime pool tuning for the Postgres adapter. The connection string stays
|
|
175
|
+
* the flat `postgresUrl` config field — the contract the CLI's db commands read.
|
|
179
176
|
*/
|
|
180
177
|
export interface PostgresConfig {
|
|
181
178
|
/** Max connections in the postgres.js pool. Defaults to postgres.js's 10. */
|
|
@@ -201,23 +198,16 @@ export interface PostgresConfig {
|
|
|
201
198
|
*/
|
|
202
199
|
prepare?: boolean;
|
|
203
200
|
}
|
|
204
|
-
/**
|
|
205
|
-
* Interface for the core configuration settings of Pikku.
|
|
206
|
-
*/
|
|
207
201
|
export type CoreConfig<Config extends Record<string, unknown> = {}> = {
|
|
208
|
-
/** The log level for the application. */
|
|
209
202
|
logLevel?: LogLevel;
|
|
210
|
-
|
|
211
|
-
|
|
203
|
+
secrets?: {
|
|
204
|
+
/** Refuse a secret that declares no `allowedHosts` rather than treating it as unrestricted. */
|
|
205
|
+
requireAllowedHosts?: boolean;
|
|
206
|
+
};
|
|
212
207
|
workflow?: WorkflowServiceConfig;
|
|
213
|
-
/** Default retry and signing settings for outgoing webhooks. */
|
|
214
208
|
webhook?: WebhookServiceConfig;
|
|
215
|
-
/** Runtime Postgres adapter options (pool sizing). */
|
|
216
209
|
postgres?: PostgresConfig;
|
|
217
210
|
} & Config;
|
|
218
|
-
/**
|
|
219
|
-
* Represents a core user session, which can be extended for more specific session information.
|
|
220
|
-
*/
|
|
221
211
|
export interface CoreUserSession {
|
|
222
212
|
userId?: string;
|
|
223
213
|
orgId?: string;
|
|
@@ -225,109 +215,70 @@ export interface CoreUserSession {
|
|
|
225
215
|
actor?: boolean;
|
|
226
216
|
/**
|
|
227
217
|
* Scopes granted to this session, checked against a function's `scopes`.
|
|
228
|
-
* Populated by whoever builds the session
|
|
229
|
-
* resolving them via a ScopeService) — core reads them and never fetches.
|
|
218
|
+
* Populated by whoever builds the session — core reads them, never fetches.
|
|
230
219
|
*/
|
|
231
220
|
scopes?: string[];
|
|
232
221
|
}
|
|
233
222
|
/**
|
|
234
|
-
*
|
|
235
|
-
*
|
|
236
|
-
* methods. Kept structural so core stays independent of any one auth package —
|
|
237
|
-
* `@pikku/better-auth`'s `BetterAuthInstance` is this type.
|
|
223
|
+
* Kept structural so core stays independent of any one auth package —
|
|
224
|
+
* `@pikku/better-auth`'s `BetterAuthInstance` satisfies it.
|
|
238
225
|
*/
|
|
239
226
|
export interface AuthInstance {
|
|
240
227
|
handler: (request: Request) => Promise<Response>;
|
|
241
228
|
api: Record<string, any>;
|
|
242
|
-
/**
|
|
243
|
-
* The auth library's resolved context. Optional because a hand-built instance
|
|
244
|
-
* may omit it.
|
|
245
|
-
*/
|
|
246
229
|
$context?: Promise<any>;
|
|
247
230
|
}
|
|
248
|
-
/**
|
|
249
|
-
* Interface for core singleton services provided by Pikku.
|
|
250
|
-
*/
|
|
251
231
|
export interface CoreSingletonServices<Config extends CoreConfig = CoreConfig> {
|
|
252
|
-
/** The schema library used to validate data */
|
|
253
232
|
schema?: SchemaService;
|
|
254
|
-
/** The JWT service used to encode and decode tokens */
|
|
255
233
|
jwt?: JWTService;
|
|
256
|
-
/** The core configuration for the application. */
|
|
257
234
|
config: Config;
|
|
258
|
-
/** The logger used by the application. */
|
|
259
235
|
logger: Logger;
|
|
260
|
-
/** The variable service to be used */
|
|
261
236
|
variables: VariablesService;
|
|
262
|
-
/** The secrets service to retrieve secrets */
|
|
263
237
|
secrets: SecretService;
|
|
264
|
-
/** The workflow orchestrator service */
|
|
265
238
|
workflowService?: WorkflowService;
|
|
266
|
-
/** The queue service */
|
|
267
239
|
queueService?: QueueService;
|
|
268
|
-
/** Event hub for realtime pub/sub across channels */
|
|
269
240
|
eventHub?: EventHubService<Record<string, any>>;
|
|
270
|
-
/** The scheduler service */
|
|
271
241
|
schedulerService?: SchedulerService;
|
|
272
|
-
/** The deployment service for service discovery */
|
|
273
242
|
deploymentService?: DeploymentService;
|
|
274
|
-
/** AI agent storage service (threads, messages, working memory) */
|
|
275
243
|
aiStorage?: AIStorageService;
|
|
276
|
-
/** Content service for file storage and retrieval */
|
|
277
244
|
content?: ContentService;
|
|
278
|
-
/** AI agent runner service (model calls + tool loop) */
|
|
279
245
|
aiAgentRunner?: AIAgentRunnerService;
|
|
280
|
-
/** Dedicated embedding service (vector stores use it at index & query time) */
|
|
281
246
|
aiEmbedding?: AIEmbeddingService;
|
|
282
|
-
/** AI run state service (run lifecycle + approval persistence) */
|
|
283
247
|
aiRunState?: AIRunStateService;
|
|
284
|
-
/** Agent run service (listing threads, runs, steps) */
|
|
285
248
|
agentRunService?: AgentRunService;
|
|
286
|
-
/** Workflow run service (listing workflow runs) */
|
|
287
249
|
workflowRunService?: WorkflowRunService;
|
|
288
|
-
/** Credential service for dynamic/managed credentials (OAuth tokens, per-user API keys) */
|
|
289
250
|
credentialService?: CredentialService;
|
|
290
|
-
/** Email service for outbound messages and template-backed delivery */
|
|
291
251
|
emailService?: EmailService;
|
|
292
252
|
/**
|
|
293
|
-
*
|
|
294
|
-
*
|
|
295
|
-
* history; the queue-only default throws on the delivery-read methods.
|
|
253
|
+
* Queue-backed outgoing webhook delivery. The queue-only default throws on
|
|
254
|
+
* the delivery-read methods; a store-backed implementation records history.
|
|
296
255
|
*/
|
|
297
256
|
webhookService?: WebhookService;
|
|
298
|
-
/** Meta service for reading .pikku metadata files (filesystem on Node, R2/KV on CF) */
|
|
299
257
|
metaService?: MetaService;
|
|
300
258
|
/** V8 precise-coverage collector (`pikku dev --coverage` only) */
|
|
301
259
|
coverageService?: CoverageService;
|
|
302
|
-
/** Audit service for durable or staged audit event capture */
|
|
303
260
|
audit?: AuditService;
|
|
304
261
|
/**
|
|
305
|
-
*
|
|
306
|
-
*
|
|
307
|
-
*
|
|
308
|
-
* from `audit` (the durable sink): this is the request-scoped buffer that
|
|
309
|
-
* writes into it.
|
|
262
|
+
* Request-scoped audit buffer that writes into `audit` (the durable sink).
|
|
263
|
+
* Returned as a wire service so the runner flushes it via `close()` when the
|
|
264
|
+
* invocation ends.
|
|
310
265
|
*/
|
|
311
266
|
auditLog?: AuditLog;
|
|
312
267
|
/** Session store for persisting user sessions keyed by pikkuUserId */
|
|
313
268
|
sessionStore?: SessionStore;
|
|
314
269
|
/**
|
|
315
|
-
* Resolves and administers user scopes. Called when building a session
|
|
316
|
-
*
|
|
270
|
+
* Resolves and administers user scopes. Called when building a session,
|
|
271
|
+
* never by the function runner.
|
|
317
272
|
*/
|
|
318
273
|
scopeService?: ScopeService;
|
|
319
274
|
/**
|
|
320
|
-
*
|
|
321
|
-
*
|
|
322
|
-
*
|
|
323
|
-
* returning it themselves. Absent when the project wires no auth.
|
|
275
|
+
* Built once by the factory an auth package registers and injected by the
|
|
276
|
+
* generated `pikkuServices` wrapper — service factories must not return it
|
|
277
|
+
* themselves. Absent when the project wires no auth.
|
|
324
278
|
*/
|
|
325
279
|
auth?: () => Promise<AuthInstance>;
|
|
326
280
|
}
|
|
327
|
-
|
|
328
|
-
* Represents different forms of wire within Pikku and the outside world.
|
|
329
|
-
*/
|
|
330
|
-
export type PikkuWire<In = unknown, Out = unknown, HasInitialSession extends boolean = false, UserSession extends CoreUserSession = CoreUserSession, TypedRPC extends PikkuRPC = PikkuRPC, IsChannel extends true | null = null, MCPTools extends string | never = never, TypedWorkflow extends PikkuWorkflowWire | never = PikkuWorkflowWire, TriggerOutput = unknown, TypedScenario extends PikkuScenarioWire | never = PikkuScenarioWire, TypedActors extends ScenarioActors = ScenarioActors> = {
|
|
281
|
+
export type PikkuWire<In = unknown, Out = unknown, HasInitialSession extends boolean = false, UserSession extends CoreUserSession = CoreUserSession, TypedRPC extends PikkuRPC = PikkuRPC, IsChannel extends true | null = null, MCPTools extends string | never = never, TypedWorkflow extends PikkuWorkflowWire | never = PikkuWorkflowWire, TriggerOutput = unknown, TypedScenario extends PikkuScenarioWire | never = PikkuScenarioWire, TypedActors extends ScenarioPersonas = ScenarioPersonas> = {
|
|
331
282
|
/** Always present — lazily initialised on first access for every function invocation */
|
|
332
283
|
rpc: TypedRPC;
|
|
333
284
|
} & Partial<{
|
|
@@ -335,21 +286,19 @@ export type PikkuWire<In = unknown, Out = unknown, HasInitialSession extends boo
|
|
|
335
286
|
wireId: string;
|
|
336
287
|
/** Trace ID for distributed tracing — propagated across remote RPC calls via x-trace-id header */
|
|
337
288
|
traceId: string;
|
|
338
|
-
/** Function id for the current invocation */
|
|
339
289
|
functionId: string;
|
|
340
|
-
/** The addon instance namespace (wireAddon name) currently executing, if any */
|
|
341
290
|
addonNamespace: string;
|
|
342
291
|
http: PikkuHTTP<In>;
|
|
343
292
|
mcp: PikkuMCP<MCPTools>;
|
|
344
|
-
channel: [IsChannel] extends [null] ? PikkuChannel<unknown, Out> : PikkuChannel<unknown, Out> | undefined;
|
|
293
|
+
channel: [IsChannel] extends [null] ? PikkuChannel<unknown, Out, TypedRPC['remote']> : PikkuChannel<unknown, Out, TypedRPC['remote']> | undefined;
|
|
345
294
|
scheduledTask: PikkuScheduledTask;
|
|
346
295
|
queue: PikkuQueue;
|
|
347
|
-
cli: PikkuCLI
|
|
296
|
+
cli: PikkuCLI<TypedRPC['remote']>;
|
|
348
297
|
workflow: TypedWorkflow;
|
|
349
298
|
scenario: TypedScenario;
|
|
350
299
|
actors: TypedActors;
|
|
351
300
|
/** Present on every scenario step invocation */
|
|
352
|
-
scenarioStep: PikkuScenarioStepWire<
|
|
301
|
+
scenarioStep: PikkuScenarioStepWire<ScenarioPersonaOf<TypedActors>>;
|
|
353
302
|
/** Present only when the runner provisioned a browser for this step */
|
|
354
303
|
browser: PikkuBrowserWire;
|
|
355
304
|
workflowStep: WorkflowStepWire;
|
|
@@ -357,15 +306,11 @@ export type PikkuWire<In = unknown, Out = unknown, HasInitialSession extends boo
|
|
|
357
306
|
trigger: PikkuTrigger<TriggerOutput>;
|
|
358
307
|
gateway: PikkuGateway;
|
|
359
308
|
session: HasInitialSession extends true ? UserSession : UserSession | undefined;
|
|
360
|
-
/** Update and persist the current session */
|
|
361
309
|
setSession: (session: UserSession) => Promise<void> | void;
|
|
362
|
-
/** Clear and persist the current session */
|
|
363
310
|
clearSession: () => Promise<void> | void;
|
|
364
311
|
/** Fetch the latest session (may read from backing store) */
|
|
365
312
|
getSession: () => Promise<UserSession> | UserSession | undefined;
|
|
366
|
-
/** Whether the session was modified during this run */
|
|
367
313
|
hasSessionChanged: () => boolean;
|
|
368
|
-
/** The resolved user identity for credential lookups */
|
|
369
314
|
pikkuUserId: string;
|
|
370
315
|
/** Set a credential value (available in middleware) */
|
|
371
316
|
setCredential: (name: string, value: unknown) => void;
|
|
@@ -373,131 +318,62 @@ export type PikkuWire<In = unknown, Out = unknown, HasInitialSession extends boo
|
|
|
373
318
|
getCredential: <T = unknown>(name: string) => T | null | Promise<T | null>;
|
|
374
319
|
/** Get all resolved credentials — lazy-loads from CredentialService on first call, sync thereafter */
|
|
375
320
|
getCredentials: () => Record<string, unknown> | Promise<Record<string, unknown>>;
|
|
376
|
-
/** Resolved function audit metadata for this invocation, if enabled */
|
|
377
321
|
audit: {
|
|
378
322
|
durability: AuditDurability;
|
|
379
323
|
};
|
|
324
|
+
/**
|
|
325
|
+
* Declare that everything after this line changes something.
|
|
326
|
+
*
|
|
327
|
+
* Present only on functions that are not `readonly` — a read has nothing to
|
|
328
|
+
* declare. Throws `AbandonedError` if whatever asked for this work has
|
|
329
|
+
* already gone away (an interrupted agent run, a disconnected client), so the
|
|
330
|
+
* mutation never runs and the abort is clean. Otherwise it marks the call as
|
|
331
|
+
* mutating, so an interrupt landing after this point is reported rather than
|
|
332
|
+
* silently discarded.
|
|
333
|
+
*
|
|
334
|
+
* Cooperative: a function that never calls it is assumed to have changed
|
|
335
|
+
* something, which is the safe default.
|
|
336
|
+
*/
|
|
337
|
+
beginChanges: () => Promise<void>;
|
|
380
338
|
}>;
|
|
381
|
-
/**
|
|
382
|
-
* Wire object as constructed by runners, before rpc is lazily added by the function runner.
|
|
383
|
-
*/
|
|
339
|
+
/** Wire as constructed by runners, before the function runner lazily adds `rpc`. */
|
|
384
340
|
export type PikkuRawWire = Omit<PikkuWire, 'rpc'>;
|
|
385
|
-
/**
|
|
386
|
-
* A function that can wrap an wire and be called before or after
|
|
387
|
-
*/
|
|
388
341
|
export type CorePikkuMiddleware<SingletonServices extends CoreSingletonServices = CoreSingletonServices, UserSession extends CoreUserSession = CoreUserSession> = (services: SingletonServices, wires: PikkuWire, next: () => Promise<void>) => Promise<void>;
|
|
389
342
|
/**
|
|
390
|
-
*
|
|
391
|
-
*
|
|
392
|
-
*
|
|
393
|
-
* - `highest` — Runs first (outermost). Use for telemetry, request tracing.
|
|
394
|
-
* - `high` — Runs early. Use for CORS, rate limiting.
|
|
395
|
-
* - `medium` — Default. Use for auth, most user middleware.
|
|
396
|
-
* - `low` — Runs late. Use for post-auth processing.
|
|
397
|
-
* - `lowest` — Runs last (innermost, closest to function). Use for inner telemetry.
|
|
343
|
+
* Execution order: `highest` runs first (outermost in the onion), `lowest`
|
|
344
|
+
* runs last, closest to the function.
|
|
398
345
|
*/
|
|
399
346
|
export type MiddlewarePriority = 'highest' | 'high' | 'medium' | 'low' | 'lowest';
|
|
400
|
-
/**
|
|
401
|
-
* Configuration object for creating middleware with metadata
|
|
402
|
-
*
|
|
403
|
-
* @template SingletonServices - The singleton services type
|
|
404
|
-
* @template UserSession - The user session type
|
|
405
|
-
*/
|
|
406
347
|
export type CorePikkuMiddlewareConfig<SingletonServices extends CoreSingletonServices = CoreSingletonServices, UserSession extends CoreUserSession = CoreUserSession> = {
|
|
407
|
-
/** The middleware function */
|
|
408
348
|
func: CorePikkuMiddleware<SingletonServices, UserSession>;
|
|
409
|
-
/** Optional human-readable name for the middleware */
|
|
410
349
|
name?: string;
|
|
411
|
-
/** Optional description of what the middleware does */
|
|
412
350
|
description?: string;
|
|
413
351
|
/** Execution priority. Lower runs first (outermost). Defaults to 'medium'. */
|
|
414
352
|
priority?: MiddlewarePriority;
|
|
415
353
|
};
|
|
416
|
-
/**
|
|
417
|
-
* A factory function that takes input and returns middleware
|
|
418
|
-
* Used when middleware needs configuration/input parameters
|
|
419
|
-
*/
|
|
420
354
|
export type CorePikkuMiddlewareFactory<In = any, SingletonServices extends CoreSingletonServices = CoreSingletonServices, UserSession extends CoreUserSession = CoreUserSession> = (input: In) => CorePikkuMiddleware<SingletonServices, UserSession>;
|
|
421
|
-
/**
|
|
422
|
-
* A group of middleware (combination of regular middleware and factories)
|
|
423
|
-
* Used with addMiddleware() and addHTTPMiddleware() to group related middleware together
|
|
424
|
-
*/
|
|
425
355
|
export type CorePikkuMiddlewareGroup<SingletonServices extends CoreSingletonServices = CoreSingletonServices, UserSession extends CoreUserSession = CoreUserSession> = Array<CorePikkuMiddleware<SingletonServices, UserSession> | CorePikkuMiddlewareFactory<any, SingletonServices, UserSession>>;
|
|
426
|
-
/**
|
|
427
|
-
* Factory function for creating middleware with tree-shaking support
|
|
428
|
-
* Supports both direct function and configuration object syntax
|
|
429
|
-
*
|
|
430
|
-
* @example
|
|
431
|
-
* ```typescript
|
|
432
|
-
* // Direct function syntax
|
|
433
|
-
* export const logMiddleware = pikkuMiddleware(
|
|
434
|
-
* async ({ logger }, next) => {
|
|
435
|
-
* logger.info('Request started')
|
|
436
|
-
* await next()
|
|
437
|
-
* }
|
|
438
|
-
* )
|
|
439
|
-
*
|
|
440
|
-
* // Configuration object syntax with metadata
|
|
441
|
-
* export const logMiddleware = pikkuMiddleware({
|
|
442
|
-
* name: 'Request Logger',
|
|
443
|
-
* description: 'Logs request information',
|
|
444
|
-
* func: async ({ logger }, next) => {
|
|
445
|
-
* logger.info('Request started')
|
|
446
|
-
* await next()
|
|
447
|
-
* }
|
|
448
|
-
* })
|
|
449
|
-
* ```
|
|
450
|
-
*/
|
|
451
356
|
export declare const pikkuMiddleware: <SingletonServices extends CoreSingletonServices = CoreSingletonServices, UserSession extends CoreUserSession = CoreUserSession>(middleware: CorePikkuMiddleware<SingletonServices, UserSession> | CorePikkuMiddlewareConfig<SingletonServices, UserSession>) => CorePikkuMiddleware<SingletonServices, UserSession>;
|
|
452
|
-
/**
|
|
453
|
-
* Factory function for creating middleware factories
|
|
454
|
-
* Use this when your middleware needs configuration/input parameters
|
|
455
|
-
*
|
|
456
|
-
* @example
|
|
457
|
-
* ```typescript
|
|
458
|
-
* export const logMiddleware = pikkuMiddlewareFactory<LogOptions>(({
|
|
459
|
-
* message,
|
|
460
|
-
* level = 'info'
|
|
461
|
-
* }) => {
|
|
462
|
-
* return pikkuMiddleware(async ({ logger }, next) => {
|
|
463
|
-
* logger[level](message)
|
|
464
|
-
* await next()
|
|
465
|
-
* })
|
|
466
|
-
* })
|
|
467
|
-
* ```
|
|
468
|
-
*/
|
|
469
357
|
export declare const pikkuMiddlewareFactory: <In = any>(factory: CorePikkuMiddlewareFactory<In>) => CorePikkuMiddlewareFactory<In>;
|
|
470
358
|
export declare const pikkuChannelMiddleware: <SingletonServices extends CoreSingletonServices = CoreSingletonServices, Event = unknown>(middleware: CorePikkuChannelMiddleware<SingletonServices, Event>) => CorePikkuChannelMiddleware<SingletonServices, Event>;
|
|
471
359
|
export declare const pikkuChannelMiddlewareFactory: <In = any>(factory: CorePikkuChannelMiddlewareFactory<In>) => CorePikkuChannelMiddlewareFactory<In>;
|
|
472
360
|
export type { PikkuAIMiddlewareHooks } from '../wirings/ai-agent/ai-agent.types.js';
|
|
473
361
|
export declare const pikkuAIMiddleware: <State extends Record<string, unknown> = Record<string, unknown>, SingletonServices extends CoreSingletonServices = CoreSingletonServices>(hooks: PikkuAIMiddlewareHooks<State, SingletonServices>) => PikkuAIMiddlewareHooks<State, SingletonServices>;
|
|
474
|
-
/**
|
|
475
|
-
* Represents the core services used by Pikku, including singleton services.
|
|
476
|
-
*/
|
|
477
362
|
export type CoreServices<SingletonServices = CoreSingletonServices> = SingletonServices;
|
|
363
|
+
/** Strips `secrets` from a services type. */
|
|
364
|
+
export type SecretlessServices<Services> = Omit<Services, 'secrets'>;
|
|
365
|
+
/** The constraint every function-, permission- and auth-facing type is bounded by. */
|
|
366
|
+
export type CoreSecretlessSingletonServices<Config extends CoreConfig = CoreConfig> = SecretlessServices<CoreSingletonServices<Config>>;
|
|
478
367
|
export type WireServices<SingletonServices extends CoreSingletonServices = CoreSingletonServices, Services = CoreServices<SingletonServices>> = Omit<Services, keyof SingletonServices | 'session'>;
|
|
479
|
-
/**
|
|
480
|
-
* Defines a function type for creating singleton services from the given configuration.
|
|
481
|
-
*/
|
|
482
368
|
export type CreateSingletonServices<Config extends CoreConfig, SingletonServices extends CoreSingletonServices> = (config: Config, existingServices?: Partial<SingletonServices>) => Promise<SingletonServices>;
|
|
483
|
-
/**
|
|
484
|
-
* Defines a function type for creating session-specific services.
|
|
485
|
-
*/
|
|
486
369
|
export type CreateWireServices<SingletonServices extends CoreSingletonServices = CoreSingletonServices, Services extends CoreServices<SingletonServices> = CoreServices<SingletonServices>, UserSession extends CoreUserSession = CoreUserSession> = (services: SingletonServices, wire: PikkuRawWire) => Promise<WireServices<Services, SingletonServices>>;
|
|
487
|
-
/**
|
|
488
|
-
* Defines a function type for creating config.
|
|
489
|
-
*/
|
|
490
370
|
export type CreateConfig<Config extends CoreConfig, RemainingArgs extends any[] = unknown[]> = (variables?: VariablesService, ...args: RemainingArgs) => Promise<Config>;
|
|
491
|
-
/** Server lifecycle hooks for startup and shutdown phases. */
|
|
492
371
|
export type ServerLifecycle<SingletonServices extends CoreSingletonServices = CoreSingletonServices> = {
|
|
493
372
|
beforeStart?: (services: SingletonServices) => void | Promise<void>;
|
|
494
373
|
afterStart?: (services: SingletonServices) => void | Promise<void>;
|
|
495
374
|
beforeStop?: (services: SingletonServices) => void | Promise<void>;
|
|
496
375
|
afterStop?: (services: SingletonServices) => void | Promise<void>;
|
|
497
376
|
};
|
|
498
|
-
/**
|
|
499
|
-
* Represents the documentation for a route, including summary, description, tags, and errors.
|
|
500
|
-
*/
|
|
501
377
|
export type CommonWireMeta = {
|
|
502
378
|
pikkuFuncId: string;
|
|
503
379
|
packageName?: string;
|
|
@@ -510,9 +386,8 @@ export type CommonWireMeta = {
|
|
|
510
386
|
permissions?: PermissionMetadata[];
|
|
511
387
|
};
|
|
512
388
|
/**
|
|
513
|
-
*
|
|
514
|
-
*
|
|
515
|
-
* console addon (reader), and the console UI (renderer).
|
|
389
|
+
* The shape of `.pikku/audit.json`. Shared by the CLI (writer), the console
|
|
390
|
+
* addon (reader) and the console UI (renderer).
|
|
516
391
|
*/
|
|
517
392
|
export type SecuritySeverity = 'critical' | 'high' | 'moderate' | 'low' | 'info';
|
|
518
393
|
export type SecurityUpdateLevel = 'major' | 'minor' | 'patch' | 'unknown';
|
|
@@ -553,9 +428,6 @@ export interface SecurityAuditReport {
|
|
|
553
428
|
updates: SecurityAuditUpdate[];
|
|
554
429
|
summary: SecurityAuditSummary;
|
|
555
430
|
}
|
|
556
|
-
/**
|
|
557
|
-
* Serialized error for storage
|
|
558
|
-
*/
|
|
559
431
|
export interface SerializedError {
|
|
560
432
|
message: string;
|
|
561
433
|
stack?: string;
|
|
@@ -563,3 +435,11 @@ export interface SerializedError {
|
|
|
563
435
|
expected?: boolean;
|
|
564
436
|
[key: string]: any;
|
|
565
437
|
}
|
|
438
|
+
/**
|
|
439
|
+
* A generated schema's declaration site, used by the credential/secret/variable
|
|
440
|
+
* definition validators to point conflicting definitions at their source.
|
|
441
|
+
*/
|
|
442
|
+
export interface SchemaRefLike {
|
|
443
|
+
variableName: string;
|
|
444
|
+
sourceFile: string;
|
|
445
|
+
}
|
package/dist/types/core.types.js
CHANGED
|
@@ -1,28 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Factory function for creating middleware with tree-shaking support
|
|
3
|
-
* Supports both direct function and configuration object syntax
|
|
4
|
-
*
|
|
5
|
-
* @example
|
|
6
|
-
* ```typescript
|
|
7
|
-
* // Direct function syntax
|
|
8
|
-
* export const logMiddleware = pikkuMiddleware(
|
|
9
|
-
* async ({ logger }, next) => {
|
|
10
|
-
* logger.info('Request started')
|
|
11
|
-
* await next()
|
|
12
|
-
* }
|
|
13
|
-
* )
|
|
14
|
-
*
|
|
15
|
-
* // Configuration object syntax with metadata
|
|
16
|
-
* export const logMiddleware = pikkuMiddleware({
|
|
17
|
-
* name: 'Request Logger',
|
|
18
|
-
* description: 'Logs request information',
|
|
19
|
-
* func: async ({ logger }, next) => {
|
|
20
|
-
* logger.info('Request started')
|
|
21
|
-
* await next()
|
|
22
|
-
* }
|
|
23
|
-
* })
|
|
24
|
-
* ```
|
|
25
|
-
*/
|
|
26
1
|
export const pikkuMiddleware = (middleware) => {
|
|
27
2
|
if (typeof middleware === 'function')
|
|
28
3
|
return middleware;
|
|
@@ -32,23 +7,6 @@ export const pikkuMiddleware = (middleware) => {
|
|
|
32
7
|
}
|
|
33
8
|
return func;
|
|
34
9
|
};
|
|
35
|
-
/**
|
|
36
|
-
* Factory function for creating middleware factories
|
|
37
|
-
* Use this when your middleware needs configuration/input parameters
|
|
38
|
-
*
|
|
39
|
-
* @example
|
|
40
|
-
* ```typescript
|
|
41
|
-
* export const logMiddleware = pikkuMiddlewareFactory<LogOptions>(({
|
|
42
|
-
* message,
|
|
43
|
-
* level = 'info'
|
|
44
|
-
* }) => {
|
|
45
|
-
* return pikkuMiddleware(async ({ logger }, next) => {
|
|
46
|
-
* logger[level](message)
|
|
47
|
-
* await next()
|
|
48
|
-
* })
|
|
49
|
-
* })
|
|
50
|
-
* ```
|
|
51
|
-
*/
|
|
52
10
|
export const pikkuMiddlewareFactory = (factory) => {
|
|
53
11
|
return factory;
|
|
54
12
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { PikkuErrorConstructor, ErrorDetails } from '../errors/error-handler.js';
|
|
2
2
|
import type { CorePikkuFunctionConfig, CorePermissionGroup, CorePikkuPermission } from '../function/functions.types.js';
|
|
3
3
|
import type { CorePikkuTriggerFunctionConfig } from '../wirings/trigger/trigger.types.js';
|
|
4
4
|
import type { CoreChannel, ChannelsMeta } from '../wirings/channel/channel.types.js';
|
|
@@ -13,9 +13,6 @@ import type { CoreWorkflow, CoreFeature, WorkflowsRuntimeMeta } from '../wirings
|
|
|
13
13
|
import type { CoreTrigger, CoreTriggerSource, TriggerMeta, TriggerSourceMeta } from '../wirings/trigger/trigger.types.js';
|
|
14
14
|
import type { FunctionsMeta, CorePikkuMiddleware, CorePikkuMiddlewareGroup, CreateConfig, CreateSingletonServices, CreateWireServices, CoreConfig, CoreSingletonServices, CoreServices, CoreUserSession } from './core.types.js';
|
|
15
15
|
import type { CorePikkuChannelMiddleware } from '../wirings/channel/channel.types.js';
|
|
16
|
-
/**
|
|
17
|
-
* State structure for an individual package
|
|
18
|
-
*/
|
|
19
16
|
export interface PikkuPackageState {
|
|
20
17
|
function: {
|
|
21
18
|
meta: FunctionsMeta;
|
|
@@ -35,6 +32,8 @@ export interface PikkuPackageState {
|
|
|
35
32
|
rpcEndpoint?: string;
|
|
36
33
|
auth?: boolean;
|
|
37
34
|
tags?: string[];
|
|
35
|
+
/** Required of every function in this package, on top of the function's own */
|
|
36
|
+
scopes?: string[];
|
|
38
37
|
/** Per-instance name-aliases: logical name the addon reads -> actual project secret name */
|
|
39
38
|
secretOverrides?: Record<string, string>;
|
|
40
39
|
/** Per-instance name-aliases: logical name the addon reads -> actual project variable name */
|
|
@@ -119,32 +118,28 @@ export interface PikkuPackageState {
|
|
|
119
118
|
global: (CorePermissionGroup | CorePikkuPermission)[];
|
|
120
119
|
};
|
|
121
120
|
misc: {
|
|
122
|
-
errors: Map<
|
|
121
|
+
errors: Map<PikkuErrorConstructor, ErrorDetails>;
|
|
123
122
|
schemas: Map<string, any>;
|
|
124
123
|
middleware: Record<string, CorePikkuMiddleware[]>;
|
|
125
124
|
channelMiddleware: Record<string, CorePikkuChannelMiddleware[]>;
|
|
126
125
|
permissions: Record<string, CorePermissionGroup | CorePikkuPermission[]>;
|
|
127
126
|
};
|
|
128
127
|
package: {
|
|
129
|
-
/** Service factory functions for addon packages */
|
|
130
128
|
factories: {
|
|
131
129
|
createConfig?: CreateConfig<CoreConfig>;
|
|
132
130
|
createSingletonServices?: CreateSingletonServices<CoreConfig, CoreSingletonServices>;
|
|
133
131
|
createWireServices?: CreateWireServices<CoreSingletonServices, CoreServices, CoreUserSession>;
|
|
134
132
|
} | null;
|
|
135
|
-
/** Cached singleton services for this package */
|
|
136
133
|
singletonServices: CoreSingletonServices | null;
|
|
137
134
|
/** The pikkuBetterAuth factory, self-registered when auth.ts is evaluated.
|
|
138
135
|
* pikkuServices reads it to build and inject the `auth` singleton. */
|
|
139
136
|
authFactory: ((services: CoreSingletonServices) => unknown | Promise<unknown>) | null;
|
|
140
|
-
/** Credential metadata for this addon package */
|
|
141
137
|
credentialsMeta: Record<string, {
|
|
142
138
|
name: string;
|
|
143
139
|
displayName: string;
|
|
144
140
|
type: string;
|
|
145
141
|
oauth2?: boolean;
|
|
146
142
|
}> | null;
|
|
147
|
-
/** Services this addon needs from the parent project */
|
|
148
143
|
requiredParentServices: string[] | null;
|
|
149
144
|
};
|
|
150
145
|
}
|