@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
package/src/types/core.types.ts
CHANGED
|
@@ -25,6 +25,8 @@ import type {
|
|
|
25
25
|
import type {
|
|
26
26
|
PikkuBrowserWire,
|
|
27
27
|
PikkuScenarioStepWire,
|
|
28
|
+
ScenarioStepKind,
|
|
29
|
+
ScenarioSurface,
|
|
28
30
|
} from '../wirings/workflow/scenario-step.types.js'
|
|
29
31
|
import type { PikkuGraphWire } from '../wirings/workflow/graph/workflow-graph.types.js'
|
|
30
32
|
import type { PikkuTrigger } from '../wirings/trigger/trigger.types.js'
|
|
@@ -35,9 +37,9 @@ import type { AIStorageService } from '../services/ai-storage-service.js'
|
|
|
35
37
|
|
|
36
38
|
import type { ContentService } from '../services/content-service.js'
|
|
37
39
|
import type {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
} from '../services/
|
|
40
|
+
ScenarioPersonaOf,
|
|
41
|
+
ScenarioPersonas,
|
|
42
|
+
} from '../services/personas-service.js'
|
|
41
43
|
import type { AIAgentRunnerService } from '../services/ai-agent-runner-service.js'
|
|
42
44
|
import type { AIEmbeddingService } from '../services/ai-embedding-service.js'
|
|
43
45
|
import type { AIRunStateService } from '../services/ai-run-state-service.js'
|
|
@@ -83,12 +85,6 @@ export interface FunctionWiresMeta {
|
|
|
83
85
|
wires: string[]
|
|
84
86
|
}
|
|
85
87
|
|
|
86
|
-
/**
|
|
87
|
-
* Metadata for middleware at any level
|
|
88
|
-
* - type: 'http' = HTTP route middleware group (references httpGroup in pikkuState)
|
|
89
|
-
* - type: 'tag' = Tag-based middleware group (references tagGroup in pikkuState)
|
|
90
|
-
* - type: 'wire' = Wire-level individual middleware
|
|
91
|
-
*/
|
|
92
88
|
export type MiddlewareMetadata =
|
|
93
89
|
| {
|
|
94
90
|
type: 'http'
|
|
@@ -96,30 +92,22 @@ export type MiddlewareMetadata =
|
|
|
96
92
|
}
|
|
97
93
|
| {
|
|
98
94
|
type: 'tag'
|
|
99
|
-
tag: string
|
|
95
|
+
tag: string
|
|
100
96
|
}
|
|
101
97
|
| {
|
|
102
98
|
type: 'wire'
|
|
103
99
|
name: string
|
|
104
|
-
inline?: boolean
|
|
100
|
+
inline?: boolean
|
|
105
101
|
}
|
|
106
102
|
|
|
107
103
|
/**
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
* - type: 'tag' = Tag-based permission group (references tagGroup in pikkuState)
|
|
111
|
-
* - type: 'wire' = Wire-level individual permission
|
|
112
|
-
*/
|
|
113
|
-
/**
|
|
114
|
-
* A reference to a permission function a function declares, resolved by name.
|
|
115
|
-
* Used at filter time (e.g. listing agent tools) to run the session-only
|
|
116
|
-
* (pikkuAuth) predicates without request data. Permissions are function-scoped
|
|
117
|
-
* only — there are no wire- or tag-level permission references.
|
|
104
|
+
* A reference to a permission function, resolved by name. Function-scoped
|
|
105
|
+
* only: there are no wire- or tag-level permission references.
|
|
118
106
|
*/
|
|
119
107
|
export type PermissionMetadata = {
|
|
120
108
|
type: 'wire'
|
|
121
109
|
name: string
|
|
122
|
-
inline?: boolean
|
|
110
|
+
inline?: boolean
|
|
123
111
|
}
|
|
124
112
|
|
|
125
113
|
export type FunctionRuntimeMeta = {
|
|
@@ -129,21 +117,28 @@ export type FunctionRuntimeMeta = {
|
|
|
129
117
|
/** Scopes the session must hold to run this function. All are required (AND). */
|
|
130
118
|
scopes?: string[]
|
|
131
119
|
expose?: boolean
|
|
120
|
+
/**
|
|
121
|
+
* A sessionless function's own `auth: true`. `sessionless` carries the
|
|
122
|
+
* baseline — a `pikkuFunc` always requires a session — and this carries the
|
|
123
|
+
* tightening a `pikkuSessionlessFunc` applies to itself. Both are needed to
|
|
124
|
+
* know whether a function is gated without running it.
|
|
125
|
+
*/
|
|
126
|
+
auth?: boolean
|
|
127
|
+
/**
|
|
128
|
+
* The author's declaration that this function authorizes callers in its own
|
|
129
|
+
* body. Carries no runtime effect — it records a gate codegen cannot see, so
|
|
130
|
+
* an audit is not left to guess whether a sessionless function is open.
|
|
131
|
+
*/
|
|
132
|
+
selfAuthenticated?: boolean
|
|
132
133
|
remote?: boolean
|
|
133
134
|
/**
|
|
134
|
-
* A step RPC:
|
|
135
|
-
* else
|
|
136
|
-
* rather than a separate concept — a step is invoked by name exactly as an
|
|
137
|
-
* RPC is, which is why a run records the step function in its `rpcName`.
|
|
138
|
-
* What makes it its own kind is that it is never network-callable: a step
|
|
139
|
-
* may drive a browser or assert against fixtures.
|
|
135
|
+
* A step RPC: invoked by name only from a scenario run and refused
|
|
136
|
+
* everywhere else, so it is never network-callable.
|
|
140
137
|
*/
|
|
141
138
|
scenarioStep?: boolean
|
|
142
139
|
/**
|
|
143
|
-
* The
|
|
144
|
-
*
|
|
145
|
-
* `scenarioStep`: a scenario is only ever run by `pikku scenario run`, so it
|
|
146
|
-
* has to be held back from the app bootstrap and from every deployed unit.
|
|
140
|
+
* The body of a `pikkuScenario(...)`. Only ever run by `pikku scenario run`,
|
|
141
|
+
* so it is held back from the app bootstrap and from every deployed unit.
|
|
147
142
|
*/
|
|
148
143
|
scenario?: boolean
|
|
149
144
|
mcp?: boolean
|
|
@@ -156,10 +151,30 @@ export type FunctionRuntimeMeta = {
|
|
|
156
151
|
workflowRetries?: number
|
|
157
152
|
/** Timeout when this function is used as a workflow step (e.g. '30s', '5m'). */
|
|
158
153
|
workflowTimeout?: string
|
|
159
|
-
/**
|
|
160
|
-
|
|
154
|
+
/**
|
|
155
|
+
* Scenario steps only: which surfaces this step declares a binding for.
|
|
156
|
+
*
|
|
157
|
+
* The reporter derives coverage from this — a `then` with no binding for the
|
|
158
|
+
* surface the run targeted was never actually witnessed there, which is a gap
|
|
159
|
+
* worth counting rather than excusing.
|
|
160
|
+
*/
|
|
161
|
+
scenarioStepSurfaces?: ScenarioSurface[]
|
|
162
|
+
/**
|
|
163
|
+
* Scenario steps only: who acts. Absent means `persona` — the ordinary step,
|
|
164
|
+
* and the only kind that existed before the other two.
|
|
165
|
+
*
|
|
166
|
+
* A `platform` or `addon` step is the app or a third-party system acting, and
|
|
167
|
+
* it must never reach a virtual user's catalogue. That is not tidiness: a
|
|
168
|
+
* virtual user that can invoke "Stripe's webhook arrives" can forge its own
|
|
169
|
+
* payment success, and every finding downstream of that is worthless.
|
|
170
|
+
*/
|
|
171
|
+
scenarioStepKind?: ScenarioStepKind
|
|
172
|
+
/** Addon steps only: the addon whose system acts — `wireAddon`'s `name`. */
|
|
173
|
+
scenarioStepAddon?: string
|
|
161
174
|
/** Scenario steps only: the prose a reporter renders, with `{placeholders}` filled from the step's recorded input. */
|
|
162
175
|
scenarioStepTemplate?: string
|
|
176
|
+
/** Keeps the full `SecretService`. Set by the inspector, read by the runner. */
|
|
177
|
+
secretBroker?: boolean
|
|
163
178
|
version?: number
|
|
164
179
|
approvalRequired?: boolean
|
|
165
180
|
approvalDescription?: string
|
|
@@ -173,7 +188,8 @@ export type FunctionMeta = FunctionRuntimeMeta &
|
|
|
173
188
|
Partial<
|
|
174
189
|
{
|
|
175
190
|
name: string
|
|
176
|
-
|
|
191
|
+
/** `remote`: a contract with no local body, answered by a connected client. */
|
|
192
|
+
functionType: 'user' | 'inline' | 'helper' | 'remote'
|
|
177
193
|
funcWrapper: string
|
|
178
194
|
services: FunctionServicesMeta
|
|
179
195
|
wires: FunctionWiresMeta
|
|
@@ -196,19 +212,11 @@ export type FunctionMeta = FunctionRuntimeMeta &
|
|
|
196
212
|
export type FunctionsRuntimeMeta = Record<string, FunctionRuntimeMeta>
|
|
197
213
|
export type FunctionsMeta = Record<string, FunctionMeta>
|
|
198
214
|
|
|
199
|
-
// Optimized runtime metadata with only essential fields
|
|
200
|
-
|
|
201
215
|
export type MakeRequired<T, K extends keyof T> = Omit<T, K> &
|
|
202
216
|
Required<Pick<T, K>>
|
|
203
217
|
|
|
204
|
-
/**
|
|
205
|
-
* Represents a JSON primitive type which can be a string, number, boolean, null, or undefined.
|
|
206
|
-
*/
|
|
207
218
|
export type JSONPrimitive = string | number | boolean | null | undefined
|
|
208
219
|
|
|
209
|
-
/**
|
|
210
|
-
* Represents a JSON value which can be a primitive, an array, or an object.
|
|
211
|
-
*/
|
|
212
220
|
export type JSONValue =
|
|
213
221
|
| JSONPrimitive
|
|
214
222
|
| JSONValue[]
|
|
@@ -216,28 +224,17 @@ export type JSONValue =
|
|
|
216
224
|
[key: string]: JSONValue
|
|
217
225
|
}
|
|
218
226
|
|
|
219
|
-
/**
|
|
220
|
-
* Utility type for making certain keys required and leaving the rest as optional.
|
|
221
|
-
*/
|
|
222
227
|
export type PickRequired<T, K extends keyof T> = T & Required<Pick<T, K>>
|
|
223
228
|
|
|
224
|
-
/**
|
|
225
|
-
* Utility type for making certain keys optional while keeping the rest required.
|
|
226
|
-
*/
|
|
227
229
|
export type PickOptional<T, K extends keyof T> = Partial<T> & Pick<T, K>
|
|
228
230
|
|
|
229
|
-
/**
|
|
230
|
-
* Utility type that ensures at least one key in the given type `T` is required.
|
|
231
|
-
*/
|
|
232
231
|
export type RequireAtLeastOne<T> = {
|
|
233
232
|
[K in keyof T]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<keyof T, K>>>
|
|
234
233
|
}[keyof T]
|
|
235
234
|
|
|
236
235
|
/**
|
|
237
|
-
* Runtime
|
|
238
|
-
*
|
|
239
|
-
* contract the CLI's db commands read); this block is purely runtime pool
|
|
240
|
-
* tuning that the CLI never touches.
|
|
236
|
+
* Runtime pool tuning for the Postgres adapter. The connection string stays
|
|
237
|
+
* the flat `postgresUrl` config field — the contract the CLI's db commands read.
|
|
241
238
|
*/
|
|
242
239
|
export interface PostgresConfig {
|
|
243
240
|
/** Max connections in the postgres.js pool. Defaults to postgres.js's 10. */
|
|
@@ -264,25 +261,18 @@ export interface PostgresConfig {
|
|
|
264
261
|
prepare?: boolean
|
|
265
262
|
}
|
|
266
263
|
|
|
267
|
-
/**
|
|
268
|
-
* Interface for the core configuration settings of Pikku.
|
|
269
|
-
*/
|
|
270
264
|
export type CoreConfig<Config extends Record<string, unknown> = {}> = {
|
|
271
|
-
/** The log level for the application. */
|
|
272
265
|
logLevel?: LogLevel
|
|
273
|
-
|
|
274
|
-
|
|
266
|
+
secrets?: {
|
|
267
|
+
/** Refuse a secret that declares no `allowedHosts` rather than treating it as unrestricted. */
|
|
268
|
+
requireAllowedHosts?: boolean
|
|
269
|
+
}
|
|
275
270
|
|
|
276
271
|
workflow?: WorkflowServiceConfig
|
|
277
|
-
/** Default retry and signing settings for outgoing webhooks. */
|
|
278
272
|
webhook?: WebhookServiceConfig
|
|
279
|
-
/** Runtime Postgres adapter options (pool sizing). */
|
|
280
273
|
postgres?: PostgresConfig
|
|
281
274
|
} & Config
|
|
282
275
|
|
|
283
|
-
/**
|
|
284
|
-
* Represents a core user session, which can be extended for more specific session information.
|
|
285
|
-
*/
|
|
286
276
|
export interface CoreUserSession {
|
|
287
277
|
userId?: string
|
|
288
278
|
orgId?: string
|
|
@@ -290,112 +280,73 @@ export interface CoreUserSession {
|
|
|
290
280
|
actor?: boolean
|
|
291
281
|
/**
|
|
292
282
|
* Scopes granted to this session, checked against a function's `scopes`.
|
|
293
|
-
* Populated by whoever builds the session
|
|
294
|
-
* resolving them via a ScopeService) — core reads them and never fetches.
|
|
283
|
+
* Populated by whoever builds the session — core reads them, never fetches.
|
|
295
284
|
*/
|
|
296
285
|
scopes?: string[]
|
|
297
286
|
}
|
|
298
287
|
|
|
299
288
|
/**
|
|
300
|
-
*
|
|
301
|
-
*
|
|
302
|
-
* methods. Kept structural so core stays independent of any one auth package —
|
|
303
|
-
* `@pikku/better-auth`'s `BetterAuthInstance` is this type.
|
|
289
|
+
* Kept structural so core stays independent of any one auth package —
|
|
290
|
+
* `@pikku/better-auth`'s `BetterAuthInstance` satisfies it.
|
|
304
291
|
*/
|
|
305
292
|
export interface AuthInstance {
|
|
306
293
|
handler: (request: Request) => Promise<Response>
|
|
307
294
|
api: Record<string, any>
|
|
308
|
-
/**
|
|
309
|
-
* The auth library's resolved context. Optional because a hand-built instance
|
|
310
|
-
* may omit it.
|
|
311
|
-
*/
|
|
312
295
|
$context?: Promise<any>
|
|
313
296
|
}
|
|
314
297
|
|
|
315
|
-
/**
|
|
316
|
-
* Interface for core singleton services provided by Pikku.
|
|
317
|
-
*/
|
|
318
298
|
export interface CoreSingletonServices<Config extends CoreConfig = CoreConfig> {
|
|
319
|
-
/** The schema library used to validate data */
|
|
320
299
|
schema?: SchemaService
|
|
321
|
-
/** The JWT service used to encode and decode tokens */
|
|
322
300
|
jwt?: JWTService
|
|
323
|
-
/** The core configuration for the application. */
|
|
324
301
|
config: Config
|
|
325
|
-
/** The logger used by the application. */
|
|
326
302
|
logger: Logger
|
|
327
|
-
/** The variable service to be used */
|
|
328
303
|
variables: VariablesService
|
|
329
|
-
/** The secrets service to retrieve secrets */
|
|
330
304
|
secrets: SecretService
|
|
331
|
-
/** The workflow orchestrator service */
|
|
332
305
|
workflowService?: WorkflowService
|
|
333
|
-
/** The queue service */
|
|
334
306
|
queueService?: QueueService
|
|
335
|
-
/** Event hub for realtime pub/sub across channels */
|
|
336
307
|
eventHub?: EventHubService<Record<string, any>>
|
|
337
|
-
/** The scheduler service */
|
|
338
308
|
schedulerService?: SchedulerService
|
|
339
|
-
/** The deployment service for service discovery */
|
|
340
309
|
deploymentService?: DeploymentService
|
|
341
|
-
/** AI agent storage service (threads, messages, working memory) */
|
|
342
310
|
aiStorage?: AIStorageService
|
|
343
311
|
|
|
344
|
-
/** Content service for file storage and retrieval */
|
|
345
312
|
content?: ContentService
|
|
346
|
-
/** AI agent runner service (model calls + tool loop) */
|
|
347
313
|
aiAgentRunner?: AIAgentRunnerService
|
|
348
|
-
/** Dedicated embedding service (vector stores use it at index & query time) */
|
|
349
314
|
aiEmbedding?: AIEmbeddingService
|
|
350
|
-
/** AI run state service (run lifecycle + approval persistence) */
|
|
351
315
|
aiRunState?: AIRunStateService
|
|
352
|
-
/** Agent run service (listing threads, runs, steps) */
|
|
353
316
|
agentRunService?: AgentRunService
|
|
354
|
-
/** Workflow run service (listing workflow runs) */
|
|
355
317
|
workflowRunService?: WorkflowRunService
|
|
356
|
-
/** Credential service for dynamic/managed credentials (OAuth tokens, per-user API keys) */
|
|
357
318
|
credentialService?: CredentialService
|
|
358
|
-
/** Email service for outbound messages and template-backed delivery */
|
|
359
319
|
emailService?: EmailService
|
|
360
320
|
/**
|
|
361
|
-
*
|
|
362
|
-
*
|
|
363
|
-
* history; the queue-only default throws on the delivery-read methods.
|
|
321
|
+
* Queue-backed outgoing webhook delivery. The queue-only default throws on
|
|
322
|
+
* the delivery-read methods; a store-backed implementation records history.
|
|
364
323
|
*/
|
|
365
324
|
webhookService?: WebhookService
|
|
366
|
-
/** Meta service for reading .pikku metadata files (filesystem on Node, R2/KV on CF) */
|
|
367
325
|
metaService?: MetaService
|
|
368
326
|
/** V8 precise-coverage collector (`pikku dev --coverage` only) */
|
|
369
327
|
coverageService?: CoverageService
|
|
370
|
-
/** Audit service for durable or staged audit event capture */
|
|
371
328
|
audit?: AuditService
|
|
372
329
|
/**
|
|
373
|
-
*
|
|
374
|
-
*
|
|
375
|
-
*
|
|
376
|
-
* from `audit` (the durable sink): this is the request-scoped buffer that
|
|
377
|
-
* writes into it.
|
|
330
|
+
* Request-scoped audit buffer that writes into `audit` (the durable sink).
|
|
331
|
+
* Returned as a wire service so the runner flushes it via `close()` when the
|
|
332
|
+
* invocation ends.
|
|
378
333
|
*/
|
|
379
334
|
auditLog?: AuditLog
|
|
380
335
|
/** Session store for persisting user sessions keyed by pikkuUserId */
|
|
381
336
|
sessionStore?: SessionStore
|
|
382
337
|
/**
|
|
383
|
-
* Resolves and administers user scopes. Called when building a session
|
|
384
|
-
*
|
|
338
|
+
* Resolves and administers user scopes. Called when building a session,
|
|
339
|
+
* never by the function runner.
|
|
385
340
|
*/
|
|
386
341
|
scopeService?: ScopeService
|
|
387
342
|
/**
|
|
388
|
-
*
|
|
389
|
-
*
|
|
390
|
-
*
|
|
391
|
-
* returning it themselves. Absent when the project wires no auth.
|
|
343
|
+
* Built once by the factory an auth package registers and injected by the
|
|
344
|
+
* generated `pikkuServices` wrapper — service factories must not return it
|
|
345
|
+
* themselves. Absent when the project wires no auth.
|
|
392
346
|
*/
|
|
393
347
|
auth?: () => Promise<AuthInstance>
|
|
394
348
|
}
|
|
395
349
|
|
|
396
|
-
/**
|
|
397
|
-
* Represents different forms of wire within Pikku and the outside world.
|
|
398
|
-
*/
|
|
399
350
|
export type PikkuWire<
|
|
400
351
|
In = unknown,
|
|
401
352
|
Out = unknown,
|
|
@@ -407,7 +358,7 @@ export type PikkuWire<
|
|
|
407
358
|
TypedWorkflow extends PikkuWorkflowWire | never = PikkuWorkflowWire,
|
|
408
359
|
TriggerOutput = unknown,
|
|
409
360
|
TypedScenario extends PikkuScenarioWire | never = PikkuScenarioWire,
|
|
410
|
-
TypedActors extends
|
|
361
|
+
TypedActors extends ScenarioPersonas = ScenarioPersonas,
|
|
411
362
|
> = {
|
|
412
363
|
/** Always present — lazily initialised on first access for every function invocation */
|
|
413
364
|
rpc: TypedRPC
|
|
@@ -416,23 +367,24 @@ export type PikkuWire<
|
|
|
416
367
|
wireId: string
|
|
417
368
|
/** Trace ID for distributed tracing — propagated across remote RPC calls via x-trace-id header */
|
|
418
369
|
traceId: string
|
|
419
|
-
/** Function id for the current invocation */
|
|
420
370
|
functionId: string
|
|
421
|
-
/** The addon instance namespace (wireAddon name) currently executing, if any */
|
|
422
371
|
addonNamespace: string
|
|
423
372
|
http: PikkuHTTP<In>
|
|
424
373
|
mcp: PikkuMCP<MCPTools>
|
|
374
|
+
// `channel.remote` is typed off the same generated map as `rpc.remote`, so
|
|
375
|
+
// calling back into the connected peer is checked against the app's own
|
|
376
|
+
// function contracts rather than being a string and an `any`.
|
|
425
377
|
channel: [IsChannel] extends [null]
|
|
426
|
-
? PikkuChannel<unknown, Out>
|
|
427
|
-
: PikkuChannel<unknown, Out> | undefined
|
|
378
|
+
? PikkuChannel<unknown, Out, TypedRPC['remote']>
|
|
379
|
+
: PikkuChannel<unknown, Out, TypedRPC['remote']> | undefined
|
|
428
380
|
scheduledTask: PikkuScheduledTask
|
|
429
381
|
queue: PikkuQueue
|
|
430
|
-
cli: PikkuCLI
|
|
382
|
+
cli: PikkuCLI<TypedRPC['remote']>
|
|
431
383
|
workflow: TypedWorkflow
|
|
432
384
|
scenario: TypedScenario
|
|
433
385
|
actors: TypedActors
|
|
434
386
|
/** Present on every scenario step invocation */
|
|
435
|
-
scenarioStep: PikkuScenarioStepWire<
|
|
387
|
+
scenarioStep: PikkuScenarioStepWire<ScenarioPersonaOf<TypedActors>>
|
|
436
388
|
/** Present only when the runner provisioned a browser for this step */
|
|
437
389
|
browser: PikkuBrowserWire
|
|
438
390
|
workflowStep: WorkflowStepWire
|
|
@@ -442,15 +394,11 @@ export type PikkuWire<
|
|
|
442
394
|
session: HasInitialSession extends true
|
|
443
395
|
? UserSession
|
|
444
396
|
: UserSession | undefined
|
|
445
|
-
/** Update and persist the current session */
|
|
446
397
|
setSession: (session: UserSession) => Promise<void> | void
|
|
447
|
-
/** Clear and persist the current session */
|
|
448
398
|
clearSession: () => Promise<void> | void
|
|
449
399
|
/** Fetch the latest session (may read from backing store) */
|
|
450
400
|
getSession: () => Promise<UserSession> | UserSession | undefined
|
|
451
|
-
/** Whether the session was modified during this run */
|
|
452
401
|
hasSessionChanged: () => boolean
|
|
453
|
-
/** The resolved user identity for credential lookups */
|
|
454
402
|
pikkuUserId: string
|
|
455
403
|
/** Set a credential value (available in middleware) */
|
|
456
404
|
setCredential: (name: string, value: unknown) => void
|
|
@@ -460,20 +408,28 @@ export type PikkuWire<
|
|
|
460
408
|
getCredentials: () =>
|
|
461
409
|
| Record<string, unknown>
|
|
462
410
|
| Promise<Record<string, unknown>>
|
|
463
|
-
/** Resolved function audit metadata for this invocation, if enabled */
|
|
464
411
|
audit: {
|
|
465
412
|
durability: AuditDurability
|
|
466
413
|
}
|
|
414
|
+
/**
|
|
415
|
+
* Declare that everything after this line changes something.
|
|
416
|
+
*
|
|
417
|
+
* Present only on functions that are not `readonly` — a read has nothing to
|
|
418
|
+
* declare. Throws `AbandonedError` if whatever asked for this work has
|
|
419
|
+
* already gone away (an interrupted agent run, a disconnected client), so the
|
|
420
|
+
* mutation never runs and the abort is clean. Otherwise it marks the call as
|
|
421
|
+
* mutating, so an interrupt landing after this point is reported rather than
|
|
422
|
+
* silently discarded.
|
|
423
|
+
*
|
|
424
|
+
* Cooperative: a function that never calls it is assumed to have changed
|
|
425
|
+
* something, which is the safe default.
|
|
426
|
+
*/
|
|
427
|
+
beginChanges: () => Promise<void>
|
|
467
428
|
}>
|
|
468
429
|
|
|
469
|
-
/**
|
|
470
|
-
* Wire object as constructed by runners, before rpc is lazily added by the function runner.
|
|
471
|
-
*/
|
|
430
|
+
/** Wire as constructed by runners, before the function runner lazily adds `rpc`. */
|
|
472
431
|
export type PikkuRawWire = Omit<PikkuWire, 'rpc'>
|
|
473
432
|
|
|
474
|
-
/**
|
|
475
|
-
* A function that can wrap an wire and be called before or after
|
|
476
|
-
*/
|
|
477
433
|
export type CorePikkuMiddleware<
|
|
478
434
|
SingletonServices extends CoreSingletonServices = CoreSingletonServices,
|
|
479
435
|
UserSession extends CoreUserSession = CoreUserSession,
|
|
@@ -484,14 +440,8 @@ export type CorePikkuMiddleware<
|
|
|
484
440
|
) => Promise<void>
|
|
485
441
|
|
|
486
442
|
/**
|
|
487
|
-
*
|
|
488
|
-
*
|
|
489
|
-
*
|
|
490
|
-
* - `highest` — Runs first (outermost). Use for telemetry, request tracing.
|
|
491
|
-
* - `high` — Runs early. Use for CORS, rate limiting.
|
|
492
|
-
* - `medium` — Default. Use for auth, most user middleware.
|
|
493
|
-
* - `low` — Runs late. Use for post-auth processing.
|
|
494
|
-
* - `lowest` — Runs last (innermost, closest to function). Use for inner telemetry.
|
|
443
|
+
* Execution order: `highest` runs first (outermost in the onion), `lowest`
|
|
444
|
+
* runs last, closest to the function.
|
|
495
445
|
*/
|
|
496
446
|
export type MiddlewarePriority =
|
|
497
447
|
| 'highest'
|
|
@@ -500,40 +450,23 @@ export type MiddlewarePriority =
|
|
|
500
450
|
| 'low'
|
|
501
451
|
| 'lowest'
|
|
502
452
|
|
|
503
|
-
/**
|
|
504
|
-
* Configuration object for creating middleware with metadata
|
|
505
|
-
*
|
|
506
|
-
* @template SingletonServices - The singleton services type
|
|
507
|
-
* @template UserSession - The user session type
|
|
508
|
-
*/
|
|
509
453
|
export type CorePikkuMiddlewareConfig<
|
|
510
454
|
SingletonServices extends CoreSingletonServices = CoreSingletonServices,
|
|
511
455
|
UserSession extends CoreUserSession = CoreUserSession,
|
|
512
456
|
> = {
|
|
513
|
-
/** The middleware function */
|
|
514
457
|
func: CorePikkuMiddleware<SingletonServices, UserSession>
|
|
515
|
-
/** Optional human-readable name for the middleware */
|
|
516
458
|
name?: string
|
|
517
|
-
/** Optional description of what the middleware does */
|
|
518
459
|
description?: string
|
|
519
460
|
/** Execution priority. Lower runs first (outermost). Defaults to 'medium'. */
|
|
520
461
|
priority?: MiddlewarePriority
|
|
521
462
|
}
|
|
522
463
|
|
|
523
|
-
/**
|
|
524
|
-
* A factory function that takes input and returns middleware
|
|
525
|
-
* Used when middleware needs configuration/input parameters
|
|
526
|
-
*/
|
|
527
464
|
export type CorePikkuMiddlewareFactory<
|
|
528
465
|
In = any,
|
|
529
466
|
SingletonServices extends CoreSingletonServices = CoreSingletonServices,
|
|
530
467
|
UserSession extends CoreUserSession = CoreUserSession,
|
|
531
468
|
> = (input: In) => CorePikkuMiddleware<SingletonServices, UserSession>
|
|
532
469
|
|
|
533
|
-
/**
|
|
534
|
-
* A group of middleware (combination of regular middleware and factories)
|
|
535
|
-
* Used with addMiddleware() and addHTTPMiddleware() to group related middleware together
|
|
536
|
-
*/
|
|
537
470
|
export type CorePikkuMiddlewareGroup<
|
|
538
471
|
SingletonServices extends CoreSingletonServices = CoreSingletonServices,
|
|
539
472
|
UserSession extends CoreUserSession = CoreUserSession,
|
|
@@ -542,31 +475,6 @@ export type CorePikkuMiddlewareGroup<
|
|
|
542
475
|
| CorePikkuMiddlewareFactory<any, SingletonServices, UserSession>
|
|
543
476
|
>
|
|
544
477
|
|
|
545
|
-
/**
|
|
546
|
-
* Factory function for creating middleware with tree-shaking support
|
|
547
|
-
* Supports both direct function and configuration object syntax
|
|
548
|
-
*
|
|
549
|
-
* @example
|
|
550
|
-
* ```typescript
|
|
551
|
-
* // Direct function syntax
|
|
552
|
-
* export const logMiddleware = pikkuMiddleware(
|
|
553
|
-
* async ({ logger }, next) => {
|
|
554
|
-
* logger.info('Request started')
|
|
555
|
-
* await next()
|
|
556
|
-
* }
|
|
557
|
-
* )
|
|
558
|
-
*
|
|
559
|
-
* // Configuration object syntax with metadata
|
|
560
|
-
* export const logMiddleware = pikkuMiddleware({
|
|
561
|
-
* name: 'Request Logger',
|
|
562
|
-
* description: 'Logs request information',
|
|
563
|
-
* func: async ({ logger }, next) => {
|
|
564
|
-
* logger.info('Request started')
|
|
565
|
-
* await next()
|
|
566
|
-
* }
|
|
567
|
-
* })
|
|
568
|
-
* ```
|
|
569
|
-
*/
|
|
570
478
|
export const pikkuMiddleware = <
|
|
571
479
|
SingletonServices extends CoreSingletonServices = CoreSingletonServices,
|
|
572
480
|
UserSession extends CoreUserSession = CoreUserSession,
|
|
@@ -586,23 +494,6 @@ export const pikkuMiddleware = <
|
|
|
586
494
|
return func
|
|
587
495
|
}
|
|
588
496
|
|
|
589
|
-
/**
|
|
590
|
-
* Factory function for creating middleware factories
|
|
591
|
-
* Use this when your middleware needs configuration/input parameters
|
|
592
|
-
*
|
|
593
|
-
* @example
|
|
594
|
-
* ```typescript
|
|
595
|
-
* export const logMiddleware = pikkuMiddlewareFactory<LogOptions>(({
|
|
596
|
-
* message,
|
|
597
|
-
* level = 'info'
|
|
598
|
-
* }) => {
|
|
599
|
-
* return pikkuMiddleware(async ({ logger }, next) => {
|
|
600
|
-
* logger[level](message)
|
|
601
|
-
* await next()
|
|
602
|
-
* })
|
|
603
|
-
* })
|
|
604
|
-
* ```
|
|
605
|
-
*/
|
|
606
497
|
export const pikkuMiddlewareFactory = <In = any>(
|
|
607
498
|
factory: CorePikkuMiddlewareFactory<In>
|
|
608
499
|
): CorePikkuMiddlewareFactory<In> => {
|
|
@@ -633,20 +524,22 @@ export const pikkuAIMiddleware = <
|
|
|
633
524
|
hooks: PikkuAIMiddlewareHooks<State, SingletonServices>
|
|
634
525
|
): PikkuAIMiddlewareHooks<State, SingletonServices> => hooks
|
|
635
526
|
|
|
636
|
-
/**
|
|
637
|
-
* Represents the core services used by Pikku, including singleton services.
|
|
638
|
-
*/
|
|
639
527
|
export type CoreServices<SingletonServices = CoreSingletonServices> =
|
|
640
528
|
SingletonServices
|
|
641
529
|
|
|
530
|
+
/** Strips `secrets` from a services type. */
|
|
531
|
+
export type SecretlessServices<Services> = Omit<Services, 'secrets'>
|
|
532
|
+
|
|
533
|
+
/** The constraint every function-, permission- and auth-facing type is bounded by. */
|
|
534
|
+
export type CoreSecretlessSingletonServices<
|
|
535
|
+
Config extends CoreConfig = CoreConfig,
|
|
536
|
+
> = SecretlessServices<CoreSingletonServices<Config>>
|
|
537
|
+
|
|
642
538
|
export type WireServices<
|
|
643
539
|
SingletonServices extends CoreSingletonServices = CoreSingletonServices,
|
|
644
540
|
Services = CoreServices<SingletonServices>,
|
|
645
541
|
> = Omit<Services, keyof SingletonServices | 'session'>
|
|
646
542
|
|
|
647
|
-
/**
|
|
648
|
-
* Defines a function type for creating singleton services from the given configuration.
|
|
649
|
-
*/
|
|
650
543
|
export type CreateSingletonServices<
|
|
651
544
|
Config extends CoreConfig,
|
|
652
545
|
SingletonServices extends CoreSingletonServices,
|
|
@@ -655,9 +548,6 @@ export type CreateSingletonServices<
|
|
|
655
548
|
existingServices?: Partial<SingletonServices>
|
|
656
549
|
) => Promise<SingletonServices>
|
|
657
550
|
|
|
658
|
-
/**
|
|
659
|
-
* Defines a function type for creating session-specific services.
|
|
660
|
-
*/
|
|
661
551
|
export type CreateWireServices<
|
|
662
552
|
SingletonServices extends CoreSingletonServices = CoreSingletonServices,
|
|
663
553
|
Services extends CoreServices<SingletonServices> =
|
|
@@ -668,15 +558,11 @@ export type CreateWireServices<
|
|
|
668
558
|
wire: PikkuRawWire
|
|
669
559
|
) => Promise<WireServices<Services, SingletonServices>>
|
|
670
560
|
|
|
671
|
-
/**
|
|
672
|
-
* Defines a function type for creating config.
|
|
673
|
-
*/
|
|
674
561
|
export type CreateConfig<
|
|
675
562
|
Config extends CoreConfig,
|
|
676
563
|
RemainingArgs extends any[] = unknown[],
|
|
677
564
|
> = (variables?: VariablesService, ...args: RemainingArgs) => Promise<Config>
|
|
678
565
|
|
|
679
|
-
/** Server lifecycle hooks for startup and shutdown phases. */
|
|
680
566
|
export type ServerLifecycle<
|
|
681
567
|
SingletonServices extends CoreSingletonServices = CoreSingletonServices,
|
|
682
568
|
> = {
|
|
@@ -686,9 +572,6 @@ export type ServerLifecycle<
|
|
|
686
572
|
afterStop?: (services: SingletonServices) => void | Promise<void>
|
|
687
573
|
}
|
|
688
574
|
|
|
689
|
-
/**
|
|
690
|
-
* Represents the documentation for a route, including summary, description, tags, and errors.
|
|
691
|
-
*/
|
|
692
575
|
export type CommonWireMeta = {
|
|
693
576
|
pikkuFuncId: string
|
|
694
577
|
packageName?: string
|
|
@@ -704,9 +587,8 @@ export type CommonWireMeta = {
|
|
|
704
587
|
}
|
|
705
588
|
|
|
706
589
|
/**
|
|
707
|
-
*
|
|
708
|
-
*
|
|
709
|
-
* console addon (reader), and the console UI (renderer).
|
|
590
|
+
* The shape of `.pikku/audit.json`. Shared by the CLI (writer), the console
|
|
591
|
+
* addon (reader) and the console UI (renderer).
|
|
710
592
|
*/
|
|
711
593
|
export type SecuritySeverity = 'critical' | 'high' | 'moderate' | 'low' | 'info'
|
|
712
594
|
export type SecurityUpdateLevel = 'major' | 'minor' | 'patch' | 'unknown'
|
|
@@ -752,16 +634,21 @@ export interface SecurityAuditReport {
|
|
|
752
634
|
summary: SecurityAuditSummary
|
|
753
635
|
}
|
|
754
636
|
|
|
755
|
-
/**
|
|
756
|
-
* Serialized error for storage
|
|
757
|
-
*/
|
|
758
637
|
export interface SerializedError {
|
|
759
638
|
message: string
|
|
760
639
|
stack?: string
|
|
761
640
|
code?: string
|
|
762
|
-
//
|
|
763
|
-
//
|
|
764
|
-
// can log the message alone instead of a stack trace. See isExpectedError.
|
|
641
|
+
// Set for a deliberate PikkuError; survives step-boundary rehydration so
|
|
642
|
+
// the workflow runner logs the message alone rather than a stack trace.
|
|
765
643
|
expected?: boolean
|
|
766
644
|
[key: string]: any
|
|
767
645
|
}
|
|
646
|
+
|
|
647
|
+
/**
|
|
648
|
+
* A generated schema's declaration site, used by the credential/secret/variable
|
|
649
|
+
* definition validators to point conflicting definitions at their source.
|
|
650
|
+
*/
|
|
651
|
+
export interface SchemaRefLike {
|
|
652
|
+
variableName: string
|
|
653
|
+
sourceFile: string
|
|
654
|
+
}
|