@pikku/core 0.12.72 → 0.12.77
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 +1171 -0
- package/dist/column-form.d.ts +32 -0
- package/dist/column-form.js +42 -0
- package/dist/crypto-utils.d.ts +43 -7
- package/dist/crypto-utils.js +163 -42
- package/dist/data-classification.d.ts +44 -0
- 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 +37 -32
- package/dist/function/functions.types.d.ts +57 -136
- package/dist/function/functions.types.js +0 -58
- package/dist/function/index.d.ts +1 -1
- package/dist/function/list.types.d.ts +12 -62
- package/dist/function/list.types.js +4 -25
- package/dist/handle-error.d.ts +0 -13
- package/dist/handle-error.js +0 -18
- package/dist/index.d.ts +11 -5
- package/dist/index.js +7 -2
- 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 +5 -41
- 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 +4 -3
- 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 +9 -8
- package/dist/schema.d.ts +5 -39
- package/dist/schema.js +5 -39
- package/dist/scopes.d.ts +4 -23
- package/dist/scopes.js +7 -48
- package/dist/secret-value.d.ts +56 -0
- package/dist/secret-value.js +46 -0
- 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.d.ts +74 -4
- package/dist/services/audit-service.js +8 -7
- package/dist/services/content-service.d.ts +1 -46
- package/dist/services/credential-service.d.ts +3 -40
- package/dist/services/credential-wire-service.d.ts +5 -0
- package/dist/services/credential-wire-service.js +9 -1
- package/dist/services/deployment-service.d.ts +3 -9
- package/dist/services/email-service.d.ts +2 -1
- 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 +8 -9
- package/dist/services/index.js +3 -6
- 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-request-handler.d.ts +29 -0
- package/dist/services/local-content-request-handler.js +176 -0
- 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 +4 -7
- package/dist/services/local-secrets.js +7 -7
- package/dist/services/logger-console.d.ts +3 -7
- package/dist/services/logger-console.js +3 -7
- package/dist/services/logger.d.ts +22 -40
- 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 +10 -42
- 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 +4 -7
- 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 +12 -35
- 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 +5 -11
- 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 +21 -64
- package/dist/services/webhook-service.js +6 -20
- package/dist/services/workflow-service.d.ts +3 -15
- package/dist/testing/service-tests.js +6 -23
- package/dist/time-utils.d.ts +0 -16
- package/dist/time-utils.js +1 -19
- package/dist/types/core.types.d.ts +120 -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 +46 -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 +65 -132
- 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 +63 -22
- package/dist/wirings/ai-agent/ai-agent-stream.d.ts +25 -2
- package/dist/wirings/ai-agent/ai-agent-stream.js +180 -64
- package/dist/wirings/ai-agent/ai-agent.types.d.ts +124 -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 +59 -1
- package/dist/wirings/ai-agent/voice-input.js +90 -12
- package/dist/wirings/ai-agent/voice-output.d.ts +69 -1
- package/dist/wirings/ai-agent/voice-output.js +162 -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 +38 -0
- package/dist/wirings/cli/channel/cli-raw-client-runner.js +129 -0
- package/dist/wirings/cli/channel/index.d.ts +5 -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 +0 -99
- package/dist/wirings/http/http-runner.js +9 -165
- package/dist/wirings/http/http.types.d.ts +14 -55
- 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 +0 -40
- package/dist/wirings/http/pikku-fetch-http-request.js +0 -58
- 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 +1 -4
- package/dist/wirings/mcp/mcp-runner.js +1 -14
- 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 +32 -0
- package/dist/wirings/persona/define-personas.js +31 -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 +136 -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 +103 -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 +20 -90
- 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 +17 -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 +3 -13
- package/dist/wirings/rpc/remote-addon-auth.js +7 -11
- 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 +30 -0
- package/dist/wirings/virtual-user/index.js +10 -0
- package/dist/wirings/virtual-user/prepare-virtual-user-run.d.ts +54 -0
- package/dist/wirings/virtual-user/prepare-virtual-user-run.js +49 -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-run-store.d.ts +90 -0
- package/dist/wirings/virtual-user/virtual-user-run-store.js +1 -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 +19 -15
- 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 -43
- 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 +1 -19
- 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 +84 -12
- 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 +5 -195
- 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/a-virtual-user-run-is-not-a-workflow-and-not-a-queued-job.md +48 -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-column-form-is-an-axis-of-its-own.md +84 -0
- package/knowledge/decisions/internals/core-data-classification-brand-is-an-optional-property.md +41 -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 +117 -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/one-project-shape-check-two-validators.md +53 -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/scenarios-live-in-files-named-for-them.md +48 -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/validate-checks-personas-through-a-shared-module.md +43 -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 +6 -2
- package/run-tests.sh +0 -0
- package/src/column-form.test.ts +97 -0
- package/src/column-form.ts +58 -0
- package/src/crypto-utils.test.ts +460 -19
- package/src/crypto-utils.ts +306 -59
- package/src/data-classification.ts +45 -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 +0 -7
- package/src/function/function-runner.ts +62 -32
- package/src/function/functions.types.ts +95 -138
- package/src/function/index.ts +1 -0
- package/src/function/list.types.test.ts +3 -25
- package/src/function/list.types.ts +12 -62
- package/src/handle-error.ts +0 -18
- package/src/index.ts +84 -3
- package/src/middleware/auth-apikey.test.ts +0 -1
- package/src/middleware/auth-apikey.ts +0 -17
- package/src/middleware/auth-bearer.test.ts +3 -5
- package/src/middleware/auth-bearer.ts +5 -41
- 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 +26 -10
- package/src/middleware/remote-auth.ts +11 -3
- 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 +173 -0
- package/src/remote.ts +18 -8
- package/src/schema.ts +5 -39
- package/src/scopes.ts +7 -48
- package/src/secret-value.test.ts +204 -0
- package/src/secret-value.ts +111 -0
- 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 +88 -11
- 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/credential-wire-service.ts +9 -1
- package/src/services/deployment-service.ts +3 -9
- package/src/services/email-service.ts +3 -1
- 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 +23 -18
- package/src/services/istanbul-coverage-service.ts +2 -8
- package/src/services/jwt-service.ts +1 -16
- package/src/services/local-content-request-handler.test.ts +202 -0
- package/src/services/local-content-request-handler.ts +267 -0
- 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.test.ts +20 -5
- package/src/services/local-secrets.ts +15 -11
- package/src/services/logger-console.test.ts +0 -1
- package/src/services/logger-console.ts +3 -7
- package/src/services/logger.ts +31 -46
- 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.test.ts +2 -1
- package/src/services/queue-webhook-service.ts +10 -42
- 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 +4 -7
- 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 +12 -35
- 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 +12 -14
- package/src/services/v8-coverage-service.ts +3 -6
- package/src/services/variables-service.ts +1 -8
- package/src/services/webhook-service.ts +23 -64
- package/src/services/workflow-service.ts +3 -20
- package/src/testing/service-tests.ts +6 -32
- package/src/time-utils.ts +1 -19
- package/src/types/core.types.ts +137 -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 +91 -10
- package/src/wirings/ai-agent/ai-agent-agui.ts +49 -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 +89 -139
- 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 +85 -35
- package/src/wirings/ai-agent/ai-agent-stream.test.ts +205 -103
- package/src/wirings/ai-agent/ai-agent-stream.ts +224 -76
- package/src/wirings/ai-agent/ai-agent-thread-ownership.test.ts +301 -0
- package/src/wirings/ai-agent/ai-agent.types.ts +130 -5
- package/src/wirings/ai-agent/index.ts +37 -3
- package/src/wirings/ai-agent/voice-input.test.ts +137 -7
- package/src/wirings/ai-agent/voice-input.ts +96 -12
- package/src/wirings/ai-agent/voice-output.test.ts +512 -0
- package/src/wirings/ai-agent/voice-output.ts +243 -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 +185 -0
- package/src/wirings/cli/channel/index.ts +13 -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 +8 -167
- package/src/wirings/http/http.types.ts +15 -62
- package/src/wirings/http/log-http-routes.ts +0 -4
- package/src/wirings/http/pikku-fetch-http-request.test.ts +2 -10
- package/src/wirings/http/pikku-fetch-http-request.ts +0 -58
- 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.ts +2 -17
- 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 +33 -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 +142 -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 +454 -0
- package/src/wirings/queue/queue-identity.ts +176 -0
- package/src/wirings/queue/queue-runner.ts +12 -31
- package/src/wirings/queue/queue.types.ts +25 -90
- package/src/wirings/queue/register-queue-helper.ts +0 -14
- package/src/wirings/queue/signed-queue-service.ts +60 -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 +9 -16
- package/src/wirings/rpc/rpc-runner.test.ts +192 -6
- 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 +88 -0
- package/src/wirings/virtual-user/prepare-virtual-user-run.test.ts +115 -0
- package/src/wirings/virtual-user/prepare-virtual-user-run.ts +95 -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-run-store.ts +98 -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 +19 -20
- 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 -61
- 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.test.ts +5 -7
- package/src/wirings/workflow/scenario-prose.ts +1 -29
- package/src/wirings/workflow/scenario-service.test.ts +2 -10
- package/src/wirings/workflow/scenario-step-guards.ts +1 -14
- package/src/wirings/workflow/scenario-step.test.ts +163 -19
- package/src/wirings/workflow/scenario-step.types.ts +94 -12
- package/src/wirings/workflow/scenario-surface.test.ts +146 -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 +5 -201
- package/tsconfig.tsbuildinfo +1 -1
- package/tsconfig.type-tests.json +12 -0
- package/src/middleware/timeout.ts +0 -22
- package/src/pikku-response.ts +0 -5
- 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,11 +20,12 @@ 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';
|
|
27
27
|
import type { AgentRunService } from '../wirings/ai-agent/ai-agent.types.js';
|
|
28
|
+
import type { VirtualUserRunStore } from '../wirings/virtual-user/virtual-user-run-store.js';
|
|
28
29
|
import type { PikkuAIMiddlewareHooks } from '../wirings/ai-agent/ai-agent.types.js';
|
|
29
30
|
import type { WorkflowRunService } from '../wirings/workflow/workflow.types.js';
|
|
30
31
|
import type { CredentialService } from '../services/credential-service.js';
|
|
@@ -44,12 +45,6 @@ export interface FunctionWiresMeta {
|
|
|
44
45
|
optimized: boolean;
|
|
45
46
|
wires: string[];
|
|
46
47
|
}
|
|
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
48
|
export type MiddlewareMetadata = {
|
|
54
49
|
type: 'http';
|
|
55
50
|
route: string;
|
|
@@ -62,16 +57,8 @@ export type MiddlewareMetadata = {
|
|
|
62
57
|
inline?: boolean;
|
|
63
58
|
};
|
|
64
59
|
/**
|
|
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.
|
|
60
|
+
* A reference to a permission function, resolved by name. Function-scoped
|
|
61
|
+
* only: there are no wire- or tag-level permission references.
|
|
75
62
|
*/
|
|
76
63
|
export type PermissionMetadata = {
|
|
77
64
|
type: 'wire';
|
|
@@ -85,21 +72,29 @@ export type FunctionRuntimeMeta = {
|
|
|
85
72
|
/** Scopes the session must hold to run this function. All are required (AND). */
|
|
86
73
|
scopes?: string[];
|
|
87
74
|
expose?: boolean;
|
|
75
|
+
/**
|
|
76
|
+
* A sessionless function's own `auth: true`. `sessionless` carries the
|
|
77
|
+
* baseline — a `pikkuFunc` always requires a session — and this carries the
|
|
78
|
+
* tightening a `pikkuSessionlessFunc` applies to itself. Both are needed to
|
|
79
|
+
* know whether a function is gated without running it.
|
|
80
|
+
*/
|
|
81
|
+
auth?: boolean;
|
|
82
|
+
/**
|
|
83
|
+
* The author's declaration that this function's permission check lives in its
|
|
84
|
+
* own body. Carries no runtime effect — it records a gate codegen cannot see,
|
|
85
|
+
* so an audit is not left to guess whether a sessionless function is open.
|
|
86
|
+
* Refused unless `allow.permissionsInBody` is set in `pikku.config.json`.
|
|
87
|
+
*/
|
|
88
|
+
permissionsInBody?: boolean;
|
|
88
89
|
remote?: boolean;
|
|
89
90
|
/**
|
|
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.
|
|
91
|
+
* A step RPC: invoked by name only from a scenario run and refused
|
|
92
|
+
* everywhere else, so it is never network-callable.
|
|
96
93
|
*/
|
|
97
94
|
scenarioStep?: boolean;
|
|
98
95
|
/**
|
|
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.
|
|
96
|
+
* The body of a `pikkuScenario(...)`. Only ever run by `pikku scenario run`,
|
|
97
|
+
* so it is held back from the app bootstrap and from every deployed unit.
|
|
103
98
|
*/
|
|
104
99
|
scenario?: boolean;
|
|
105
100
|
mcp?: boolean;
|
|
@@ -112,10 +107,43 @@ export type FunctionRuntimeMeta = {
|
|
|
112
107
|
workflowRetries?: number;
|
|
113
108
|
/** Timeout when this function is used as a workflow step (e.g. '30s', '5m'). */
|
|
114
109
|
workflowTimeout?: string;
|
|
115
|
-
/**
|
|
116
|
-
|
|
110
|
+
/**
|
|
111
|
+
* Scenario steps only: which surfaces this step declares a binding for.
|
|
112
|
+
*
|
|
113
|
+
* The reporter derives coverage from this — a `then` with no binding for the
|
|
114
|
+
* surface the run targeted was never actually witnessed there, which is a gap
|
|
115
|
+
* worth counting rather than excusing.
|
|
116
|
+
*/
|
|
117
|
+
scenarioStepSurfaces?: ScenarioSurface[];
|
|
118
|
+
/**
|
|
119
|
+
* Scenario steps only: who acts. Absent means `persona` — the ordinary step,
|
|
120
|
+
* and the only kind that existed before the other two.
|
|
121
|
+
*
|
|
122
|
+
* A `platform` or `addon` step is the app or a third-party system acting, and
|
|
123
|
+
* it must never reach a virtual user's catalogue. That is not tidiness: a
|
|
124
|
+
* virtual user that can invoke "Stripe's webhook arrives" can forge its own
|
|
125
|
+
* payment success, and every finding downstream of that is worthless.
|
|
126
|
+
*/
|
|
127
|
+
scenarioStepKind?: ScenarioStepKind;
|
|
128
|
+
/** Addon steps only: the addon whose system acts — `wireAddon`'s `name`. */
|
|
129
|
+
scenarioStepAddon?: string;
|
|
117
130
|
/** Scenario steps only: the prose a reporter renders, with `{placeholders}` filled from the step's recorded input. */
|
|
118
131
|
scenarioStepTemplate?: string;
|
|
132
|
+
/**
|
|
133
|
+
* The function's `audit` config, resolved — `audit: true` reads as
|
|
134
|
+
* `{ durability: 'best-effort' }`. Absent means the function records nothing:
|
|
135
|
+
* `auditLog.write()` from an unmarked function is dropped with a warning, so
|
|
136
|
+
* this is the only place a reader can see which functions have a trail at all
|
|
137
|
+
* without running them.
|
|
138
|
+
*
|
|
139
|
+
* Informational. The runner resolves audit from the live function config, not
|
|
140
|
+
* from here, so meta and runtime cannot disagree about whether audit is on.
|
|
141
|
+
*/
|
|
142
|
+
audit?: {
|
|
143
|
+
durability: AuditDurability;
|
|
144
|
+
};
|
|
145
|
+
/** Keeps the full `SecretService`. Set by the inspector, read by the runner. */
|
|
146
|
+
secretBroker?: boolean;
|
|
119
147
|
version?: number;
|
|
120
148
|
approvalRequired?: boolean;
|
|
121
149
|
approvalDescription?: string;
|
|
@@ -126,7 +154,8 @@ export type FunctionRuntimeMeta = {
|
|
|
126
154
|
};
|
|
127
155
|
export type FunctionMeta = FunctionRuntimeMeta & Partial<{
|
|
128
156
|
name: string;
|
|
129
|
-
|
|
157
|
+
/** `remote`: a contract with no local body, answered by a connected client. */
|
|
158
|
+
functionType: 'user' | 'inline' | 'helper' | 'remote';
|
|
130
159
|
funcWrapper: string;
|
|
131
160
|
services: FunctionServicesMeta;
|
|
132
161
|
wires: FunctionWiresMeta;
|
|
@@ -147,35 +176,18 @@ export type FunctionMeta = FunctionRuntimeMeta & Partial<{
|
|
|
147
176
|
export type FunctionsRuntimeMeta = Record<string, FunctionRuntimeMeta>;
|
|
148
177
|
export type FunctionsMeta = Record<string, FunctionMeta>;
|
|
149
178
|
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
179
|
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
180
|
export type JSONValue = JSONPrimitive | JSONValue[] | {
|
|
158
181
|
[key: string]: JSONValue;
|
|
159
182
|
};
|
|
160
|
-
/**
|
|
161
|
-
* Utility type for making certain keys required and leaving the rest as optional.
|
|
162
|
-
*/
|
|
163
183
|
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
184
|
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
185
|
export type RequireAtLeastOne<T> = {
|
|
172
186
|
[K in keyof T]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<keyof T, K>>>;
|
|
173
187
|
}[keyof T];
|
|
174
188
|
/**
|
|
175
|
-
* Runtime
|
|
176
|
-
*
|
|
177
|
-
* contract the CLI's db commands read); this block is purely runtime pool
|
|
178
|
-
* tuning that the CLI never touches.
|
|
189
|
+
* Runtime pool tuning for the Postgres adapter. The connection string stays
|
|
190
|
+
* the flat `postgresUrl` config field — the contract the CLI's db commands read.
|
|
179
191
|
*/
|
|
180
192
|
export interface PostgresConfig {
|
|
181
193
|
/** Max connections in the postgres.js pool. Defaults to postgres.js's 10. */
|
|
@@ -201,23 +213,16 @@ export interface PostgresConfig {
|
|
|
201
213
|
*/
|
|
202
214
|
prepare?: boolean;
|
|
203
215
|
}
|
|
204
|
-
/**
|
|
205
|
-
* Interface for the core configuration settings of Pikku.
|
|
206
|
-
*/
|
|
207
216
|
export type CoreConfig<Config extends Record<string, unknown> = {}> = {
|
|
208
|
-
/** The log level for the application. */
|
|
209
217
|
logLevel?: LogLevel;
|
|
210
|
-
|
|
211
|
-
|
|
218
|
+
secrets?: {
|
|
219
|
+
/** Refuse a secret that declares no `allowedHosts` rather than treating it as unrestricted. */
|
|
220
|
+
requireAllowedHosts?: boolean;
|
|
221
|
+
};
|
|
212
222
|
workflow?: WorkflowServiceConfig;
|
|
213
|
-
/** Default retry and signing settings for outgoing webhooks. */
|
|
214
223
|
webhook?: WebhookServiceConfig;
|
|
215
|
-
/** Runtime Postgres adapter options (pool sizing). */
|
|
216
224
|
postgres?: PostgresConfig;
|
|
217
225
|
} & Config;
|
|
218
|
-
/**
|
|
219
|
-
* Represents a core user session, which can be extended for more specific session information.
|
|
220
|
-
*/
|
|
221
226
|
export interface CoreUserSession {
|
|
222
227
|
userId?: string;
|
|
223
228
|
orgId?: string;
|
|
@@ -225,109 +230,76 @@ export interface CoreUserSession {
|
|
|
225
230
|
actor?: boolean;
|
|
226
231
|
/**
|
|
227
232
|
* 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.
|
|
233
|
+
* Populated by whoever builds the session — core reads them, never fetches.
|
|
230
234
|
*/
|
|
231
235
|
scopes?: string[];
|
|
232
236
|
}
|
|
233
237
|
/**
|
|
234
|
-
*
|
|
235
|
-
*
|
|
236
|
-
* methods. Kept structural so core stays independent of any one auth package —
|
|
237
|
-
* `@pikku/better-auth`'s `BetterAuthInstance` is this type.
|
|
238
|
+
* Kept structural so core stays independent of any one auth package —
|
|
239
|
+
* `@pikku/better-auth`'s `BetterAuthInstance` satisfies it.
|
|
238
240
|
*/
|
|
239
241
|
export interface AuthInstance {
|
|
240
242
|
handler: (request: Request) => Promise<Response>;
|
|
241
243
|
api: Record<string, any>;
|
|
242
|
-
/**
|
|
243
|
-
* The auth library's resolved context. Optional because a hand-built instance
|
|
244
|
-
* may omit it.
|
|
245
|
-
*/
|
|
246
244
|
$context?: Promise<any>;
|
|
247
245
|
}
|
|
248
|
-
/**
|
|
249
|
-
* Interface for core singleton services provided by Pikku.
|
|
250
|
-
*/
|
|
251
246
|
export interface CoreSingletonServices<Config extends CoreConfig = CoreConfig> {
|
|
252
|
-
/** The schema library used to validate data */
|
|
253
247
|
schema?: SchemaService;
|
|
254
|
-
/** The JWT service used to encode and decode tokens */
|
|
255
248
|
jwt?: JWTService;
|
|
256
|
-
/** The core configuration for the application. */
|
|
257
249
|
config: Config;
|
|
258
|
-
/** The logger used by the application. */
|
|
259
250
|
logger: Logger;
|
|
260
|
-
/** The variable service to be used */
|
|
261
251
|
variables: VariablesService;
|
|
262
|
-
/** The secrets service to retrieve secrets */
|
|
263
252
|
secrets: SecretService;
|
|
264
|
-
/** The workflow orchestrator service */
|
|
265
253
|
workflowService?: WorkflowService;
|
|
266
|
-
/** The queue service */
|
|
267
254
|
queueService?: QueueService;
|
|
268
|
-
/** Event hub for realtime pub/sub across channels */
|
|
269
255
|
eventHub?: EventHubService<Record<string, any>>;
|
|
270
|
-
/** The scheduler service */
|
|
271
256
|
schedulerService?: SchedulerService;
|
|
272
|
-
/** The deployment service for service discovery */
|
|
273
257
|
deploymentService?: DeploymentService;
|
|
274
|
-
/** AI agent storage service (threads, messages, working memory) */
|
|
275
258
|
aiStorage?: AIStorageService;
|
|
276
|
-
/** Content service for file storage and retrieval */
|
|
277
259
|
content?: ContentService;
|
|
278
|
-
/** AI agent runner service (model calls + tool loop) */
|
|
279
260
|
aiAgentRunner?: AIAgentRunnerService;
|
|
280
|
-
/** Dedicated embedding service (vector stores use it at index & query time) */
|
|
281
261
|
aiEmbedding?: AIEmbeddingService;
|
|
282
|
-
/** AI run state service (run lifecycle + approval persistence) */
|
|
283
262
|
aiRunState?: AIRunStateService;
|
|
284
|
-
/** Agent run service (listing threads, runs, steps) */
|
|
285
263
|
agentRunService?: AgentRunService;
|
|
286
|
-
/** Workflow run service (listing workflow runs) */
|
|
287
264
|
workflowRunService?: WorkflowRunService;
|
|
288
|
-
/** Credential service for dynamic/managed credentials (OAuth tokens, per-user API keys) */
|
|
289
265
|
credentialService?: CredentialService;
|
|
290
|
-
/** Email service for outbound messages and template-backed delivery */
|
|
291
266
|
emailService?: EmailService;
|
|
292
267
|
/**
|
|
293
|
-
*
|
|
294
|
-
*
|
|
295
|
-
* history; the queue-only default throws on the delivery-read methods.
|
|
268
|
+
* Queue-backed outgoing webhook delivery. The queue-only default throws on
|
|
269
|
+
* the delivery-read methods; a store-backed implementation records history.
|
|
296
270
|
*/
|
|
297
271
|
webhookService?: WebhookService;
|
|
298
|
-
/** Meta service for reading .pikku metadata files (filesystem on Node, R2/KV on CF) */
|
|
299
272
|
metaService?: MetaService;
|
|
273
|
+
/**
|
|
274
|
+
* Where virtual-user runs are recorded. A run is dispatched and answered for
|
|
275
|
+
* later, so this store is the only trace it leaves — see
|
|
276
|
+
* {@link VirtualUserRunStore}.
|
|
277
|
+
*/
|
|
278
|
+
virtualUserRunStore?: VirtualUserRunStore;
|
|
300
279
|
/** V8 precise-coverage collector (`pikku dev --coverage` only) */
|
|
301
280
|
coverageService?: CoverageService;
|
|
302
|
-
/** Audit service for durable or staged audit event capture */
|
|
303
281
|
audit?: AuditService;
|
|
304
282
|
/**
|
|
305
|
-
*
|
|
306
|
-
*
|
|
307
|
-
*
|
|
308
|
-
* from `audit` (the durable sink): this is the request-scoped buffer that
|
|
309
|
-
* writes into it.
|
|
283
|
+
* Request-scoped audit buffer that writes into `audit` (the durable sink).
|
|
284
|
+
* Returned as a wire service so the runner flushes it via `close()` when the
|
|
285
|
+
* invocation ends.
|
|
310
286
|
*/
|
|
311
287
|
auditLog?: AuditLog;
|
|
312
288
|
/** Session store for persisting user sessions keyed by pikkuUserId */
|
|
313
289
|
sessionStore?: SessionStore;
|
|
314
290
|
/**
|
|
315
|
-
* Resolves and administers user scopes. Called when building a session
|
|
316
|
-
*
|
|
291
|
+
* Resolves and administers user scopes. Called when building a session,
|
|
292
|
+
* never by the function runner.
|
|
317
293
|
*/
|
|
318
294
|
scopeService?: ScopeService;
|
|
319
295
|
/**
|
|
320
|
-
*
|
|
321
|
-
*
|
|
322
|
-
*
|
|
323
|
-
* returning it themselves. Absent when the project wires no auth.
|
|
296
|
+
* Built once by the factory an auth package registers and injected by the
|
|
297
|
+
* generated `pikkuServices` wrapper — service factories must not return it
|
|
298
|
+
* themselves. Absent when the project wires no auth.
|
|
324
299
|
*/
|
|
325
300
|
auth?: () => Promise<AuthInstance>;
|
|
326
301
|
}
|
|
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> = {
|
|
302
|
+
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
303
|
/** Always present — lazily initialised on first access for every function invocation */
|
|
332
304
|
rpc: TypedRPC;
|
|
333
305
|
} & Partial<{
|
|
@@ -335,21 +307,19 @@ export type PikkuWire<In = unknown, Out = unknown, HasInitialSession extends boo
|
|
|
335
307
|
wireId: string;
|
|
336
308
|
/** Trace ID for distributed tracing — propagated across remote RPC calls via x-trace-id header */
|
|
337
309
|
traceId: string;
|
|
338
|
-
/** Function id for the current invocation */
|
|
339
310
|
functionId: string;
|
|
340
|
-
/** The addon instance namespace (wireAddon name) currently executing, if any */
|
|
341
311
|
addonNamespace: string;
|
|
342
312
|
http: PikkuHTTP<In>;
|
|
343
313
|
mcp: PikkuMCP<MCPTools>;
|
|
344
|
-
channel: [IsChannel] extends [null] ? PikkuChannel<unknown, Out> : PikkuChannel<unknown, Out> | undefined;
|
|
314
|
+
channel: [IsChannel] extends [null] ? PikkuChannel<unknown, Out, TypedRPC['remote']> : PikkuChannel<unknown, Out, TypedRPC['remote']> | undefined;
|
|
345
315
|
scheduledTask: PikkuScheduledTask;
|
|
346
316
|
queue: PikkuQueue;
|
|
347
|
-
cli: PikkuCLI
|
|
317
|
+
cli: PikkuCLI<TypedRPC['remote']>;
|
|
348
318
|
workflow: TypedWorkflow;
|
|
349
319
|
scenario: TypedScenario;
|
|
350
320
|
actors: TypedActors;
|
|
351
321
|
/** Present on every scenario step invocation */
|
|
352
|
-
scenarioStep: PikkuScenarioStepWire<
|
|
322
|
+
scenarioStep: PikkuScenarioStepWire<ScenarioPersonaOf<TypedActors>>;
|
|
353
323
|
/** Present only when the runner provisioned a browser for this step */
|
|
354
324
|
browser: PikkuBrowserWire;
|
|
355
325
|
workflowStep: WorkflowStepWire;
|
|
@@ -357,15 +327,11 @@ export type PikkuWire<In = unknown, Out = unknown, HasInitialSession extends boo
|
|
|
357
327
|
trigger: PikkuTrigger<TriggerOutput>;
|
|
358
328
|
gateway: PikkuGateway;
|
|
359
329
|
session: HasInitialSession extends true ? UserSession : UserSession | undefined;
|
|
360
|
-
/** Update and persist the current session */
|
|
361
330
|
setSession: (session: UserSession) => Promise<void> | void;
|
|
362
|
-
/** Clear and persist the current session */
|
|
363
331
|
clearSession: () => Promise<void> | void;
|
|
364
332
|
/** Fetch the latest session (may read from backing store) */
|
|
365
333
|
getSession: () => Promise<UserSession> | UserSession | undefined;
|
|
366
|
-
/** Whether the session was modified during this run */
|
|
367
334
|
hasSessionChanged: () => boolean;
|
|
368
|
-
/** The resolved user identity for credential lookups */
|
|
369
335
|
pikkuUserId: string;
|
|
370
336
|
/** Set a credential value (available in middleware) */
|
|
371
337
|
setCredential: (name: string, value: unknown) => void;
|
|
@@ -373,131 +339,62 @@ export type PikkuWire<In = unknown, Out = unknown, HasInitialSession extends boo
|
|
|
373
339
|
getCredential: <T = unknown>(name: string) => T | null | Promise<T | null>;
|
|
374
340
|
/** Get all resolved credentials — lazy-loads from CredentialService on first call, sync thereafter */
|
|
375
341
|
getCredentials: () => Record<string, unknown> | Promise<Record<string, unknown>>;
|
|
376
|
-
/** Resolved function audit metadata for this invocation, if enabled */
|
|
377
342
|
audit: {
|
|
378
343
|
durability: AuditDurability;
|
|
379
344
|
};
|
|
345
|
+
/**
|
|
346
|
+
* Declare that everything after this line changes something.
|
|
347
|
+
*
|
|
348
|
+
* Present only on functions that are not `readonly` — a read has nothing to
|
|
349
|
+
* declare. Throws `AbandonedError` if whatever asked for this work has
|
|
350
|
+
* already gone away (an interrupted agent run, a disconnected client), so the
|
|
351
|
+
* mutation never runs and the abort is clean. Otherwise it marks the call as
|
|
352
|
+
* mutating, so an interrupt landing after this point is reported rather than
|
|
353
|
+
* silently discarded.
|
|
354
|
+
*
|
|
355
|
+
* Cooperative: a function that never calls it is assumed to have changed
|
|
356
|
+
* something, which is the safe default.
|
|
357
|
+
*/
|
|
358
|
+
beginChanges: () => Promise<void>;
|
|
380
359
|
}>;
|
|
381
|
-
/**
|
|
382
|
-
* Wire object as constructed by runners, before rpc is lazily added by the function runner.
|
|
383
|
-
*/
|
|
360
|
+
/** Wire as constructed by runners, before the function runner lazily adds `rpc`. */
|
|
384
361
|
export type PikkuRawWire = Omit<PikkuWire, 'rpc'>;
|
|
385
|
-
/**
|
|
386
|
-
* A function that can wrap an wire and be called before or after
|
|
387
|
-
*/
|
|
388
362
|
export type CorePikkuMiddleware<SingletonServices extends CoreSingletonServices = CoreSingletonServices, UserSession extends CoreUserSession = CoreUserSession> = (services: SingletonServices, wires: PikkuWire, next: () => Promise<void>) => Promise<void>;
|
|
389
363
|
/**
|
|
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.
|
|
364
|
+
* Execution order: `highest` runs first (outermost in the onion), `lowest`
|
|
365
|
+
* runs last, closest to the function.
|
|
398
366
|
*/
|
|
399
367
|
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
368
|
export type CorePikkuMiddlewareConfig<SingletonServices extends CoreSingletonServices = CoreSingletonServices, UserSession extends CoreUserSession = CoreUserSession> = {
|
|
407
|
-
/** The middleware function */
|
|
408
369
|
func: CorePikkuMiddleware<SingletonServices, UserSession>;
|
|
409
|
-
/** Optional human-readable name for the middleware */
|
|
410
370
|
name?: string;
|
|
411
|
-
/** Optional description of what the middleware does */
|
|
412
371
|
description?: string;
|
|
413
372
|
/** Execution priority. Lower runs first (outermost). Defaults to 'medium'. */
|
|
414
373
|
priority?: MiddlewarePriority;
|
|
415
374
|
};
|
|
416
|
-
/**
|
|
417
|
-
* A factory function that takes input and returns middleware
|
|
418
|
-
* Used when middleware needs configuration/input parameters
|
|
419
|
-
*/
|
|
420
375
|
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
376
|
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
377
|
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
378
|
export declare const pikkuMiddlewareFactory: <In = any>(factory: CorePikkuMiddlewareFactory<In>) => CorePikkuMiddlewareFactory<In>;
|
|
470
379
|
export declare const pikkuChannelMiddleware: <SingletonServices extends CoreSingletonServices = CoreSingletonServices, Event = unknown>(middleware: CorePikkuChannelMiddleware<SingletonServices, Event>) => CorePikkuChannelMiddleware<SingletonServices, Event>;
|
|
471
380
|
export declare const pikkuChannelMiddlewareFactory: <In = any>(factory: CorePikkuChannelMiddlewareFactory<In>) => CorePikkuChannelMiddlewareFactory<In>;
|
|
472
381
|
export type { PikkuAIMiddlewareHooks } from '../wirings/ai-agent/ai-agent.types.js';
|
|
473
382
|
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
383
|
export type CoreServices<SingletonServices = CoreSingletonServices> = SingletonServices;
|
|
384
|
+
/** Strips `secrets` from a services type. */
|
|
385
|
+
export type SecretlessServices<Services> = Omit<Services, 'secrets'>;
|
|
386
|
+
/** The constraint every function-, permission- and auth-facing type is bounded by. */
|
|
387
|
+
export type CoreSecretlessSingletonServices<Config extends CoreConfig = CoreConfig> = SecretlessServices<CoreSingletonServices<Config>>;
|
|
478
388
|
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
389
|
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
390
|
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
391
|
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
392
|
export type ServerLifecycle<SingletonServices extends CoreSingletonServices = CoreSingletonServices> = {
|
|
493
393
|
beforeStart?: (services: SingletonServices) => void | Promise<void>;
|
|
494
394
|
afterStart?: (services: SingletonServices) => void | Promise<void>;
|
|
495
395
|
beforeStop?: (services: SingletonServices) => void | Promise<void>;
|
|
496
396
|
afterStop?: (services: SingletonServices) => void | Promise<void>;
|
|
497
397
|
};
|
|
498
|
-
/**
|
|
499
|
-
* Represents the documentation for a route, including summary, description, tags, and errors.
|
|
500
|
-
*/
|
|
501
398
|
export type CommonWireMeta = {
|
|
502
399
|
pikkuFuncId: string;
|
|
503
400
|
packageName?: string;
|
|
@@ -510,9 +407,8 @@ export type CommonWireMeta = {
|
|
|
510
407
|
permissions?: PermissionMetadata[];
|
|
511
408
|
};
|
|
512
409
|
/**
|
|
513
|
-
*
|
|
514
|
-
*
|
|
515
|
-
* console addon (reader), and the console UI (renderer).
|
|
410
|
+
* The shape of `.pikku/audit.json`. Shared by the CLI (writer), the console
|
|
411
|
+
* addon (reader) and the console UI (renderer).
|
|
516
412
|
*/
|
|
517
413
|
export type SecuritySeverity = 'critical' | 'high' | 'moderate' | 'low' | 'info';
|
|
518
414
|
export type SecurityUpdateLevel = 'major' | 'minor' | 'patch' | 'unknown';
|
|
@@ -553,9 +449,6 @@ export interface SecurityAuditReport {
|
|
|
553
449
|
updates: SecurityAuditUpdate[];
|
|
554
450
|
summary: SecurityAuditSummary;
|
|
555
451
|
}
|
|
556
|
-
/**
|
|
557
|
-
* Serialized error for storage
|
|
558
|
-
*/
|
|
559
452
|
export interface SerializedError {
|
|
560
453
|
message: string;
|
|
561
454
|
stack?: string;
|
|
@@ -563,3 +456,11 @@ export interface SerializedError {
|
|
|
563
456
|
expected?: boolean;
|
|
564
457
|
[key: string]: any;
|
|
565
458
|
}
|
|
459
|
+
/**
|
|
460
|
+
* A generated schema's declaration site, used by the credential/secret/variable
|
|
461
|
+
* definition validators to point conflicting definitions at their source.
|
|
462
|
+
*/
|
|
463
|
+
export interface SchemaRefLike {
|
|
464
|
+
variableName: string;
|
|
465
|
+
sourceFile: string;
|
|
466
|
+
}
|
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
|
};
|