@pikku/core 0.12.107 → 0.12.112
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 +357 -0
- package/dist/analytics/analytics.d.ts +6 -0
- package/dist/analytics/analytics.js +58 -0
- package/dist/analytics/analytics.types.d.ts +156 -0
- package/dist/analytics/analytics.types.js +1 -0
- package/dist/analytics/anonymous-analytics-identity.d.ts +23 -0
- package/dist/analytics/anonymous-analytics-identity.js +27 -0
- package/dist/analytics/compose-analytics-identity.d.ts +14 -0
- package/dist/analytics/compose-analytics-identity.js +33 -0
- package/dist/analytics/cookie-analytics-identity.d.ts +24 -0
- package/dist/analytics/cookie-analytics-identity.js +37 -0
- package/dist/analytics/define-analytics-events.d.ts +22 -0
- package/dist/analytics/define-analytics-events.js +9 -0
- package/dist/analytics/fan-out-analytics.d.ts +15 -0
- package/dist/analytics/fan-out-analytics.js +36 -0
- package/dist/analytics/index.d.ts +13 -0
- package/dist/analytics/index.js +8 -0
- package/dist/analytics/logger-analytics-service.d.ts +14 -0
- package/dist/analytics/logger-analytics-service.js +23 -0
- package/dist/analytics/mint-cookie.d.ts +44 -0
- package/dist/analytics/mint-cookie.js +55 -0
- package/dist/dev/hot-reload.d.ts +0 -1
- package/dist/dev/hot-reload.js +4 -25
- package/dist/dev/module-runner.js +104 -25
- package/dist/errors/errors.d.ts +7 -0
- package/dist/errors/errors.js +17 -0
- package/dist/function/function-meta.types.d.ts +2 -0
- package/dist/function/function-runner.js +29 -0
- package/dist/function/functions.types.d.ts +22 -3
- package/dist/middleware/auth-apikey.d.ts +1 -1
- package/dist/pikku-state.d.ts +1 -1
- package/dist/scopes.d.ts +11 -0
- package/dist/scopes.js +17 -0
- package/dist/services/credential-wire-service.d.ts +1 -1
- package/dist/services/feature-flag-service.d.ts +100 -0
- package/dist/services/feature-flag-service.js +1 -0
- package/dist/services/index.d.ts +1 -0
- package/dist/services/meta-service.d.ts +16 -0
- package/dist/services/meta-service.js +19 -0
- package/dist/services/webhook-service.d.ts +7 -2
- package/dist/services/webhook-service.js +11 -6
- package/dist/testing/service-tests/agent-run-service-tests.d.ts +2 -2
- package/dist/testing/service-tests/agent-storage-service-tests.d.ts +1 -1
- package/dist/testing/service-tests/channel-store-tests.d.ts +1 -1
- package/dist/testing/service-tests/credential-service-tests.d.ts +1 -1
- package/dist/testing/service-tests/deployment-service-tests.d.ts +1 -1
- package/dist/testing/service-tests/event-hub-store-tests.d.ts +1 -1
- package/dist/testing/service-tests/secret-service-tests.d.ts +1 -1
- package/dist/testing/service-tests/session-store-tests.d.ts +1 -1
- package/dist/testing/service-tests/workflow-run-service-tests.d.ts +1 -1
- package/dist/testing/service-tests/workflow-service-tests.d.ts +1 -1
- package/dist/types/core.types.d.ts +23 -0
- package/dist/wirings/agent/agent-rpc.d.ts +1 -1
- package/dist/wirings/agent/agent-turn.d.ts +1 -1
- package/dist/wirings/agent-scorer/agent-scorer-live.d.ts +1 -1
- package/dist/wirings/channel/channel-common.d.ts +1 -1
- package/dist/wirings/channel/channel-rpc-validators.d.ts +2 -2
- package/dist/wirings/channel/channel-runner.d.ts +1 -1
- package/dist/wirings/channel/local/local-channel-runner.d.ts +1 -1
- package/dist/wirings/channel/serverless/serverless-channel-runner.d.ts +1 -1
- package/dist/wirings/cli/channel/cli-approval.d.ts +2 -2
- package/dist/wirings/flag/assert-feature-available.d.ts +15 -0
- package/dist/wirings/flag/assert-feature-available.js +23 -0
- package/dist/wirings/flag/cached-flag-source.d.ts +73 -0
- package/dist/wirings/flag/cached-flag-source.js +96 -0
- package/dist/wirings/flag/define-feature-flags.d.ts +33 -0
- package/dist/wirings/flag/define-feature-flags.js +32 -0
- package/dist/wirings/flag/flag.types.d.ts +97 -0
- package/dist/wirings/flag/flag.types.js +1 -0
- package/dist/wirings/flag/index.d.ts +7 -0
- package/dist/wirings/flag/index.js +5 -0
- package/dist/wirings/flag/resolve-flag.d.ts +52 -0
- package/dist/wirings/flag/resolve-flag.js +90 -0
- package/dist/wirings/flag/validate-flag-definitions.d.ts +26 -0
- package/dist/wirings/flag/validate-flag-definitions.js +103 -0
- package/dist/wirings/virtual-user/virtual-user-scaffold.d.ts +8 -8
- package/dist/wirings/virtual-user/virtual-user-schedule.d.ts +1 -1
- package/dist/wirings/workflow/workflow-queue-routing.d.ts +1 -1
- package/knowledge/decisions/internals/a-reset-suite-makes-the-dev-seed-the-fixture.md +50 -0
- package/knowledge/decisions/internals/hot-reload-reads-the-changed-source-never-a-compiled-copy.md +38 -0
- package/knowledge/decisions/internals/index.md +2 -0
- package/package.json +11 -5
- package/run-tests.sh +17 -9
- package/src/public-surface.json +26 -0
- package/src/agent-naming.test.ts +0 -68
- package/src/api-report.test.ts +0 -138
- package/src/app-alias-surface.test.ts +0 -179
- package/src/app-leaf-surface.test.ts +0 -222
- package/src/bootstrap-compat/root.ts +0 -20
- package/src/classification/column-form.test.ts +0 -97
- package/src/classification/column-form.ts +0 -55
- package/src/classification/data-classification.ts +0 -73
- package/src/classification/index.ts +0 -40
- package/src/classification/key-ids.ts +0 -2
- package/src/classification/secret-value.test.ts +0 -204
- package/src/classification/secret-value.ts +0 -106
- package/src/crypto-utils.test.ts +0 -668
- package/src/crypto-utils.ts +0 -460
- package/src/dev/hot-reload.test.ts +0 -587
- package/src/dev/hot-reload.ts +0 -225
- package/src/dev/module-runner.test.ts +0 -235
- package/src/dev/module-runner.ts +0 -138
- package/src/dev/reload-meta.test.ts +0 -183
- package/src/dev/reload-meta.ts +0 -144
- package/src/ecosystem-tier-removed.test.ts +0 -72
- package/src/env.ts +0 -1
- package/src/errors/error-handler.ts +0 -77
- package/src/errors/error.test.ts +0 -229
- package/src/errors/errors.ts +0 -393
- package/src/errors/index.ts +0 -11
- package/src/errors/serialized-error.ts +0 -12
- package/src/factory-functions.test.ts +0 -111
- package/src/function/abort-scope.test.ts +0 -97
- package/src/function/abort-scope.ts +0 -80
- package/src/function/function-meta.types.ts +0 -151
- package/src/function/function-runner.test.ts +0 -1619
- package/src/function/function-runner.ts +0 -499
- package/src/function/functions.types.ts +0 -319
- package/src/function/index.ts +0 -40
- package/src/function/list.types.test.ts +0 -100
- package/src/function/list.types.ts +0 -69
- package/src/function/pikku-request.test.ts +0 -35
- package/src/function/pikku-request.ts +0 -17
- package/src/gopass-secrets-removed.test.ts +0 -51
- package/src/handle-error.test.ts +0 -532
- package/src/handle-error.ts +0 -64
- package/src/middleware/auth-apikey.test.ts +0 -362
- package/src/middleware/auth-apikey.ts +0 -39
- package/src/middleware/auth-bearer.test.ts +0 -566
- package/src/middleware/auth-bearer.ts +0 -83
- package/src/middleware/auth-cookie.test.ts +0 -572
- package/src/middleware/auth-cookie.ts +0 -107
- package/src/middleware/cors.test.ts +0 -579
- package/src/middleware/cors.ts +0 -103
- package/src/middleware/index.ts +0 -30
- package/src/middleware/middleware-factories.ts +0 -76
- package/src/middleware/middleware.types.ts +0 -61
- package/src/middleware/remote-auth.test.ts +0 -547
- package/src/middleware/remote-auth.ts +0 -95
- package/src/middleware/remote-jobs-secret.ts +0 -35
- package/src/middleware/require-origin.test.ts +0 -115
- package/src/middleware/require-origin.ts +0 -79
- package/src/middleware/telemetry.ts +0 -83
- package/src/middleware-runner.test.ts +0 -578
- package/src/middleware-runner.ts +0 -232
- package/src/no-any-casts.test.ts +0 -57
- package/src/no-root-barrel.test.ts +0 -122
- package/src/permissions.test.ts +0 -256
- package/src/permissions.ts +0 -217
- package/src/pikku-state.test.ts +0 -198
- package/src/pikku-state.ts +0 -206
- package/src/production-barrels-stay-lean.test.ts +0 -110
- package/src/public-surface.test.ts +0 -133
- package/src/remote.test.ts +0 -173
- package/src/remote.ts +0 -56
- package/src/removed-legacy-exports.test.ts +0 -66
- package/src/run-tests-script.test.ts +0 -67
- package/src/schema.test.ts +0 -430
- package/src/schema.ts +0 -204
- package/src/scopes.test.ts +0 -203
- package/src/scopes.ts +0 -67
- package/src/services/agent-run-state-service.ts +0 -37
- package/src/services/agent-runner-service.ts +0 -238
- package/src/services/agent-storage-service.ts +0 -39
- package/src/services/ai-embedding-service.ts +0 -9
- package/src/services/audit-service.test.ts +0 -44
- package/src/services/audit-service.ts +0 -280
- package/src/services/content-service.ts +0 -65
- package/src/services/credential-service.ts +0 -20
- package/src/services/credential-wire-service.test.ts +0 -235
- package/src/services/credential-wire-service.ts +0 -120
- package/src/services/deployment-service.ts +0 -32
- package/src/services/email-service.test.ts +0 -100
- package/src/services/email-service.ts +0 -60
- package/src/services/email-template.test.ts +0 -311
- package/src/services/email-template.ts +0 -254
- package/src/services/file-scenario-run-store.test.ts +0 -349
- package/src/services/file-scenario-run-store.ts +0 -282
- package/src/services/gateway-service.ts +0 -5
- package/src/services/http-personas-converse.test.ts +0 -274
- package/src/services/http-personas.test.ts +0 -379
- package/src/services/http-personas.ts +0 -508
- package/src/services/in-memory-agent-run-state-service.ts +0 -87
- package/src/services/in-memory-queue-service.test.ts +0 -162
- package/src/services/in-memory-queue-service.ts +0 -78
- package/src/services/in-memory-session-store.test.ts +0 -58
- package/src/services/in-memory-session-store.ts +0 -20
- package/src/services/in-memory-trigger-service.ts +0 -47
- package/src/services/in-memory-workflow-service.test.ts +0 -430
- package/src/services/in-memory-workflow-service.ts +0 -595
- package/src/services/index.ts +0 -192
- package/src/services/istanbul-coverage-service.test.ts +0 -66
- package/src/services/istanbul-coverage-service.ts +0 -59
- package/src/services/jwt-service.ts +0 -15
- package/src/services/local-content-request-handler.test.ts +0 -240
- package/src/services/local-content-request-handler.ts +0 -295
- package/src/services/local-content.test.ts +0 -186
- package/src/services/local-content.ts +0 -242
- package/src/services/local-credential-service.ts +0 -63
- package/src/services/local-email-service.test.ts +0 -182
- package/src/services/local-email-service.ts +0 -43
- package/src/services/local-gateway-service.ts +0 -51
- package/src/services/local-secrets.test.ts +0 -95
- package/src/services/local-secrets.ts +0 -71
- package/src/services/local-variables.test.ts +0 -61
- package/src/services/local-variables.ts +0 -45
- package/src/services/logger-console.test.ts +0 -117
- package/src/services/logger-console.ts +0 -174
- package/src/services/logger.ts +0 -48
- package/src/services/meta-service.test.ts +0 -75
- package/src/services/meta-service.ts +0 -767
- package/src/services/persona-actor-secret.test.ts +0 -68
- package/src/services/persona-actor-secret.ts +0 -70
- package/src/services/persona-sign-in.test.ts +0 -219
- package/src/services/persona-sign-in.ts +0 -238
- package/src/services/personas-service.ts +0 -191
- package/src/services/pikku-user-id.test.ts +0 -62
- package/src/services/pikku-user-id.ts +0 -13
- package/src/services/queue-webhook-service.test.ts +0 -409
- package/src/services/queue-webhook-service.ts +0 -150
- package/src/services/remote-jobs.test.ts +0 -106
- package/src/services/remote-jobs.ts +0 -92
- package/src/services/scheduler-service.ts +0 -37
- package/src/services/schema-service.ts +0 -10
- package/src/services/scope-service.ts +0 -91
- package/src/services/scoped-credential-service.test.ts +0 -86
- package/src/services/scoped-credential-service.ts +0 -63
- package/src/services/scoped-secret-service.test.ts +0 -93
- package/src/services/scoped-secret-service.ts +0 -40
- package/src/services/secret-host-binding.test.ts +0 -138
- package/src/services/secret-host-binding.ts +0 -51
- package/src/services/secret-service.ts +0 -25
- package/src/services/secretless.test.ts +0 -54
- package/src/services/secretless.ts +0 -29
- package/src/services/session-store.ts +0 -9
- package/src/services/stub-tracker.test.ts +0 -104
- package/src/services/stub-tracker.ts +0 -175
- package/src/services/system-role-guard.test.ts +0 -96
- package/src/services/system-role-guard.ts +0 -71
- package/src/services/temporary-file-service.ts +0 -76
- package/src/services/trigger-service.ts +0 -5
- package/src/services/typed-credential-service.ts +0 -83
- package/src/services/typed-secret-service.test.ts +0 -204
- package/src/services/typed-secret-service.ts +0 -132
- package/src/services/typed-variables-service.test.ts +0 -166
- package/src/services/typed-variables-service.ts +0 -166
- package/src/services/user-session-service.test.ts +0 -147
- package/src/services/user-session-service.ts +0 -85
- package/src/services/v8-coverage-service.test.ts +0 -69
- package/src/services/v8-coverage-service.ts +0 -163
- package/src/services/variables-service.ts +0 -13
- package/src/services/webhook-service.ts +0 -147
- package/src/services/workflow-service.ts +0 -120
- package/src/side-effects-are-declared.test.ts +0 -84
- package/src/source-files-stay-composable.test.ts +0 -41
- package/src/template-alias-surface.test.ts +0 -240
- package/src/test-utils.ts +0 -38
- package/src/testing/index.ts +0 -3
- package/src/testing/service-tests/agent-run-service-tests.ts +0 -98
- package/src/testing/service-tests/agent-storage-service-tests.ts +0 -379
- package/src/testing/service-tests/channel-store-tests.ts +0 -98
- package/src/testing/service-tests/credential-service-tests.ts +0 -143
- package/src/testing/service-tests/deployment-service-tests.ts +0 -33
- package/src/testing/service-tests/event-hub-store-tests.ts +0 -48
- package/src/testing/service-tests/secret-service-tests.ts +0 -105
- package/src/testing/service-tests/session-store-tests.ts +0 -62
- package/src/testing/service-tests/workflow-run-service-tests.ts +0 -59
- package/src/testing/service-tests/workflow-service-tests.ts +0 -308
- package/src/testing/service-tests.ts +0 -95
- package/src/time-utils.test.ts +0 -56
- package/src/time-utils.ts +0 -89
- package/src/types/core.types.ts +0 -446
- package/src/types/index.ts +0 -25
- package/src/types/state.types.ts +0 -226
- package/src/types/typed-credentials.test.ts +0 -72
- package/src/utils/hash.test.ts +0 -68
- package/src/utils/hash.ts +0 -26
- package/src/utils/hmac.ts +0 -21
- package/src/utils/node-host-resolver.ts +0 -20
- package/src/utils/safe-fetch.test.ts +0 -515
- package/src/utils/safe-fetch.ts +0 -347
- package/src/utils.test.ts +0 -359
- package/src/utils.ts +0 -165
- package/src/version.test.ts +0 -80
- package/src/version.ts +0 -25
- package/src/wirings/actor-flow/actor-flow.types.ts +0 -40
- package/src/wirings/actor-flow/index.ts +0 -10
- package/src/wirings/actor-flow/run-conversation.test.ts +0 -187
- package/src/wirings/actor-flow/run-conversation.ts +0 -280
- package/src/wirings/addon/addon-auth-tags.test.ts +0 -219
- package/src/wirings/addon/addon-runner.ts +0 -236
- package/src/wirings/addon/addon-scopes.test.ts +0 -225
- package/src/wirings/addon/addon-secrets.test.ts +0 -391
- package/src/wirings/addon/index.ts +0 -12
- package/src/wirings/addon/remote-addon-auth.ts +0 -65
- package/src/wirings/addon/wire-addon.test.ts +0 -102
- package/src/wirings/addon/wire-addon.ts +0 -202
- package/src/wirings/addon/wire-remote-addon.ts +0 -41
- package/src/wirings/agent/agent-agui.test.ts +0 -1213
- package/src/wirings/agent/agent-agui.ts +0 -405
- package/src/wirings/agent/agent-authorization.test.ts +0 -208
- package/src/wirings/agent/agent-finalize.test.ts +0 -187
- package/src/wirings/agent/agent-finalize.ts +0 -197
- package/src/wirings/agent/agent-helpers.test.ts +0 -215
- package/src/wirings/agent/agent-helpers.ts +0 -96
- package/src/wirings/agent/agent-interrupt.test.ts +0 -833
- package/src/wirings/agent/agent-interrupt.ts +0 -400
- package/src/wirings/agent/agent-memory.test.ts +0 -397
- package/src/wirings/agent/agent-memory.ts +0 -496
- package/src/wirings/agent/agent-middleware.types.test.ts +0 -41
- package/src/wirings/agent/agent-model-config.test.ts +0 -103
- package/src/wirings/agent/agent-model-config.ts +0 -59
- package/src/wirings/agent/agent-prepare.test.ts +0 -977
- package/src/wirings/agent/agent-prepare.ts +0 -1083
- package/src/wirings/agent/agent-registry.test.ts +0 -455
- package/src/wirings/agent/agent-registry.ts +0 -99
- package/src/wirings/agent/agent-resume-authorization.test.ts +0 -206
- package/src/wirings/agent/agent-rpc.ts +0 -116
- package/src/wirings/agent/agent-runner.test.ts +0 -1229
- package/src/wirings/agent/agent-runner.ts +0 -858
- package/src/wirings/agent/agent-stream-delegate.test.ts +0 -381
- package/src/wirings/agent/agent-stream-output-hooks.test.ts +0 -353
- package/src/wirings/agent/agent-stream.test.ts +0 -1800
- package/src/wirings/agent/agent-stream.ts +0 -1639
- package/src/wirings/agent/agent-thread-ownership.test.ts +0 -297
- package/src/wirings/agent/agent-turn.test.ts +0 -65
- package/src/wirings/agent/agent-turn.ts +0 -122
- package/src/wirings/agent/agent-utils.ts +0 -20
- package/src/wirings/agent/agent.types.ts +0 -676
- package/src/wirings/agent/index.ts +0 -58
- package/src/wirings/agent/voice-input.test.ts +0 -220
- package/src/wirings/agent/voice-input.ts +0 -180
- package/src/wirings/agent/voice-output.test.ts +0 -510
- package/src/wirings/agent/voice-output.ts +0 -311
- package/src/wirings/agent-scorer/agent-scorer-grade.test.ts +0 -106
- package/src/wirings/agent-scorer/agent-scorer-grade.ts +0 -55
- package/src/wirings/agent-scorer/agent-scorer-judge.test.ts +0 -285
- package/src/wirings/agent-scorer/agent-scorer-judge.ts +0 -180
- package/src/wirings/agent-scorer/agent-scorer-live.test.ts +0 -174
- package/src/wirings/agent-scorer/agent-scorer-live.ts +0 -56
- package/src/wirings/agent-scorer/agent-scorer-registry.ts +0 -66
- package/src/wirings/agent-scorer/agent-scorer-sampling.test.ts +0 -34
- package/src/wirings/agent-scorer/agent-scorer-sampling.ts +0 -36
- package/src/wirings/agent-scorer/agent-scorer-snapshots.test.ts +0 -49
- package/src/wirings/agent-scorer/agent-scorer-snapshots.ts +0 -46
- package/src/wirings/agent-scorer/agent-scorer-worker.test.ts +0 -122
- package/src/wirings/agent-scorer/agent-scorer-worker.ts +0 -71
- package/src/wirings/agent-scorer/agent-scorer.ts +0 -102
- package/src/wirings/agent-scorer/agent-scorer.types.ts +0 -128
- package/src/wirings/agent-scorer/index.ts +0 -23
- package/src/wirings/channel/channel-common.ts +0 -102
- package/src/wirings/channel/channel-handler-shapes.test.ts +0 -72
- package/src/wirings/channel/channel-handler.test.ts +0 -322
- package/src/wirings/channel/channel-handler.ts +0 -259
- package/src/wirings/channel/channel-host-rpc.test.ts +0 -150
- package/src/wirings/channel/channel-host-rpc.ts +0 -69
- package/src/wirings/channel/channel-middleware-runner.test.ts +0 -188
- package/src/wirings/channel/channel-middleware-runner.ts +0 -126
- package/src/wirings/channel/channel-rpc-registry.ts +0 -116
- package/src/wirings/channel/channel-rpc-responder.ts +0 -117
- package/src/wirings/channel/channel-rpc-service.ts +0 -132
- package/src/wirings/channel/channel-rpc-validators.ts +0 -65
- package/src/wirings/channel/channel-rpc.test.ts +0 -841
- package/src/wirings/channel/channel-rpc.ts +0 -5
- package/src/wirings/channel/channel-rpc.types.ts +0 -160
- package/src/wirings/channel/channel-runner.ts +0 -164
- package/src/wirings/channel/channel-store.ts +0 -35
- package/src/wirings/channel/channel.types.ts +0 -193
- package/src/wirings/channel/define-channel-routes.ts +0 -5
- package/src/wirings/channel/eventhub-service.ts +0 -16
- package/src/wirings/channel/eventhub-store.ts +0 -13
- package/src/wirings/channel/index.ts +0 -40
- package/src/wirings/channel/local/index.ts +0 -3
- package/src/wirings/channel/local/local-channel-handler.ts +0 -98
- package/src/wirings/channel/local/local-channel-runner.test.ts +0 -339
- package/src/wirings/channel/local/local-channel-runner.ts +0 -271
- package/src/wirings/channel/local/local-eventhub-service.test.ts +0 -77
- package/src/wirings/channel/local/local-eventhub-service.ts +0 -69
- package/src/wirings/channel/log-channels.ts +0 -16
- package/src/wirings/channel/pikku-abstract-channel-handler.test.ts +0 -135
- package/src/wirings/channel/pikku-abstract-channel-handler.ts +0 -60
- package/src/wirings/channel/serverless/index.ts +0 -6
- package/src/wirings/channel/serverless/serverless-channel-runner.ts +0 -328
- package/src/wirings/cli/channel/cli-approval.test.ts +0 -177
- package/src/wirings/cli/channel/cli-approval.ts +0 -135
- package/src/wirings/cli/channel/cli-channel-runner.ts +0 -118
- package/src/wirings/cli/channel/cli-raw-channel-runner.test.ts +0 -192
- package/src/wirings/cli/channel/cli-raw-channel-runner.ts +0 -148
- package/src/wirings/cli/channel/cli-raw-client-runner.test.ts +0 -480
- package/src/wirings/cli/channel/cli-raw-client-runner.ts +0 -188
- package/src/wirings/cli/channel/index.ts +0 -6
- package/src/wirings/cli/cli-runner.test.ts +0 -969
- package/src/wirings/cli/cli-runner.ts +0 -538
- package/src/wirings/cli/cli.types.ts +0 -388
- package/src/wirings/cli/command-parser.test.ts +0 -1120
- package/src/wirings/cli/command-parser.ts +0 -713
- package/src/wirings/cli/define-cli-commands.ts +0 -13
- package/src/wirings/cli/format-cli-error.test.ts +0 -91
- package/src/wirings/cli/format-cli-error.ts +0 -96
- package/src/wirings/cli/index.ts +0 -19
- package/src/wirings/credential/credential.types.ts +0 -37
- package/src/wirings/credential/define-credential.ts +0 -49
- package/src/wirings/credential/index.ts +0 -7
- package/src/wirings/credential/validate-credential-definitions.ts +0 -63
- package/src/wirings/gateway/gateway-authorization.test.ts +0 -575
- package/src/wirings/gateway/gateway-channel-meta.test.ts +0 -44
- package/src/wirings/gateway/gateway-runner.test.ts +0 -581
- package/src/wirings/gateway/gateway-runner.ts +0 -411
- package/src/wirings/gateway/gateway.types.ts +0 -137
- package/src/wirings/gateway/index.ts +0 -15
- package/src/wirings/http/http-routes.test.ts +0 -318
- package/src/wirings/http/http-routes.ts +0 -111
- package/src/wirings/http/http-runner-addon-ref.test.ts +0 -238
- package/src/wirings/http/http-runner.test.ts +0 -503
- package/src/wirings/http/http-runner.ts +0 -462
- package/src/wirings/http/http.types.ts +0 -307
- package/src/wirings/http/index.ts +0 -27
- package/src/wirings/http/log-http-routes.ts +0 -18
- package/src/wirings/http/pikku-fetch-http-request.test.ts +0 -318
- package/src/wirings/http/pikku-fetch-http-request.ts +0 -260
- package/src/wirings/http/pikku-fetch-http-response.test.ts +0 -123
- package/src/wirings/http/pikku-fetch-http-response.ts +0 -149
- package/src/wirings/http/routers/http-router.ts +0 -13
- package/src/wirings/http/routers/path-to-regex.test.ts +0 -306
- package/src/wirings/http/routers/path-to-regex.ts +0 -115
- package/src/wirings/http/web-request.test.ts +0 -382
- package/src/wirings/http/web-request.ts +0 -162
- package/src/wirings/mcp/index.ts +0 -26
- package/src/wirings/mcp/mcp-endpoint-registry.test.ts +0 -388
- package/src/wirings/mcp/mcp-endpoint-registry.ts +0 -159
- package/src/wirings/mcp/mcp-runner.test.ts +0 -588
- package/src/wirings/mcp/mcp-runner.ts +0 -330
- package/src/wirings/mcp/mcp.types.ts +0 -199
- package/src/wirings/node/index.ts +0 -2
- package/src/wirings/node/node.types.ts +0 -23
- package/src/wirings/oauth2/index.ts +0 -1
- package/src/wirings/oauth2/oauth2.types.ts +0 -12
- package/src/wirings/persona/define-personas.ts +0 -33
- package/src/wirings/persona/index.ts +0 -75
- package/src/wirings/persona/persona-app-scopes.test.ts +0 -47
- package/src/wirings/persona/persona-app-scopes.ts +0 -74
- package/src/wirings/persona/persona-email.ts +0 -87
- package/src/wirings/persona/persona-environments.test.ts +0 -194
- package/src/wirings/persona/persona-environments.ts +0 -138
- package/src/wirings/persona/persona-mailbox.ts +0 -156
- package/src/wirings/persona/persona.test.ts +0 -230
- package/src/wirings/persona/persona.types.ts +0 -156
- package/src/wirings/persona/validate-personas.ts +0 -137
- package/src/wirings/queue/index.ts +0 -29
- package/src/wirings/queue/queue-identity.test.ts +0 -454
- package/src/wirings/queue/queue-identity.ts +0 -176
- package/src/wirings/queue/queue-runner.test.ts +0 -705
- package/src/wirings/queue/queue-runner.ts +0 -181
- package/src/wirings/queue/queue.types.ts +0 -161
- package/src/wirings/queue/register-queue-helper.ts +0 -46
- package/src/wirings/queue/signed-queue-service.ts +0 -60
- package/src/wirings/queue/validate-worker-config.test.ts +0 -108
- package/src/wirings/queue/validate-worker-config.ts +0 -90
- package/src/wirings/role/define-system-role.ts +0 -33
- package/src/wirings/role/index.ts +0 -13
- package/src/wirings/role/role.test.ts +0 -104
- package/src/wirings/role/role.types.ts +0 -47
- package/src/wirings/role/validate-role-definitions.ts +0 -93
- package/src/wirings/rpc/index.ts +0 -8
- package/src/wirings/rpc/rpc-runner.test.ts +0 -1130
- package/src/wirings/rpc/rpc-runner.ts +0 -569
- package/src/wirings/rpc/rpc-types.ts +0 -87
- package/src/wirings/scheduler/index.ts +0 -11
- package/src/wirings/scheduler/log-schedulers.ts +0 -16
- package/src/wirings/scheduler/scheduler-runner.test.ts +0 -835
- package/src/wirings/scheduler/scheduler-runner.ts +0 -138
- package/src/wirings/scheduler/scheduler.types.ts +0 -42
- package/src/wirings/scope/define-scope.ts +0 -33
- package/src/wirings/scope/index.ts +0 -15
- package/src/wirings/scope/scope.test.ts +0 -159
- package/src/wirings/scope/scope.types.ts +0 -42
- package/src/wirings/scope/validate-scope-definitions.ts +0 -107
- package/src/wirings/secret/index.ts +0 -9
- package/src/wirings/secret/secret.types.ts +0 -70
- package/src/wirings/secret/validate-secret-definitions.test.ts +0 -232
- package/src/wirings/secret/validate-secret-definitions.ts +0 -88
- package/src/wirings/trigger/index.ts +0 -9
- package/src/wirings/trigger/pikku-trigger-service.ts +0 -107
- package/src/wirings/trigger/trigger-runner.test.ts +0 -78
- package/src/wirings/trigger/trigger-runner.ts +0 -113
- package/src/wirings/trigger/trigger.types.ts +0 -100
- package/src/wirings/variable/index.ts +0 -8
- package/src/wirings/variable/validate-variable-definitions.test.ts +0 -115
- package/src/wirings/variable/validate-variable-definitions.ts +0 -71
- package/src/wirings/variable/variable.types.ts +0 -40
- package/src/wirings/virtual-user/index.ts +0 -107
- package/src/wirings/virtual-user/prepare-virtual-user-run.test.ts +0 -115
- package/src/wirings/virtual-user/prepare-virtual-user-run.ts +0 -95
- package/src/wirings/virtual-user/run-virtual-user.test.ts +0 -774
- package/src/wirings/virtual-user/run-virtual-user.ts +0 -684
- package/src/wirings/virtual-user/virtual-user-agents.test.ts +0 -72
- package/src/wirings/virtual-user/virtual-user-agents.ts +0 -62
- package/src/wirings/virtual-user/virtual-user-catalogue.test.ts +0 -215
- package/src/wirings/virtual-user/virtual-user-catalogue.ts +0 -184
- package/src/wirings/virtual-user/virtual-user-derive.test.ts +0 -426
- package/src/wirings/virtual-user/virtual-user-derive.ts +0 -161
- package/src/wirings/virtual-user/virtual-user-dispositions.test.ts +0 -68
- package/src/wirings/virtual-user/virtual-user-dispositions.ts +0 -210
- package/src/wirings/virtual-user/virtual-user-intents.test.ts +0 -218
- package/src/wirings/virtual-user/virtual-user-intents.ts +0 -185
- package/src/wirings/virtual-user/virtual-user-rng.test.ts +0 -72
- package/src/wirings/virtual-user/virtual-user-rng.ts +0 -50
- package/src/wirings/virtual-user/virtual-user-run-store.ts +0 -131
- package/src/wirings/virtual-user/virtual-user-scaffold.test.ts +0 -854
- package/src/wirings/virtual-user/virtual-user-scaffold.ts +0 -664
- package/src/wirings/virtual-user/virtual-user-schedule-store.ts +0 -93
- package/src/wirings/virtual-user/virtual-user-schedule.test.ts +0 -280
- package/src/wirings/virtual-user/virtual-user-schedule.ts +0 -156
- package/src/wirings/virtual-user/virtual-user-target.ts +0 -47
- package/src/wirings/virtual-user/virtual-user.types.ts +0 -215
- package/src/wirings/workflow/dsl/workflow-dsl.types.ts +0 -709
- package/src/wirings/workflow/dsl/workflow-runner.ts +0 -25
- package/src/wirings/workflow/feature.test.ts +0 -131
- package/src/wirings/workflow/feature.ts +0 -59
- package/src/wirings/workflow/graph/graph-foreach-queued.test.ts +0 -569
- package/src/wirings/workflow/graph/graph-foreach.test.ts +0 -626
- package/src/wirings/workflow/graph/graph-node.ts +0 -115
- package/src/wirings/workflow/graph/graph-runner.test.ts +0 -1049
- package/src/wirings/workflow/graph/graph-runner.ts +0 -1376
- package/src/wirings/workflow/graph/graph-validation.test.ts +0 -27
- package/src/wirings/workflow/graph/graph-validation.ts +0 -41
- package/src/wirings/workflow/graph/template.test.ts +0 -49
- package/src/wirings/workflow/graph/template.ts +0 -42
- package/src/wirings/workflow/graph/wire-workflow-graph.ts +0 -39
- package/src/wirings/workflow/graph/workflow-graph.types.ts +0 -75
- package/src/wirings/workflow/index.ts +0 -107
- package/src/wirings/workflow/pikku-scenario-service.ts +0 -1013
- package/src/wirings/workflow/pikku-workflow-service.test.ts +0 -963
- package/src/wirings/workflow/pikku-workflow-service.ts +0 -1993
- package/src/wirings/workflow/run-timeline.test.ts +0 -199
- package/src/wirings/workflow/run-timeline.ts +0 -185
- package/src/wirings/workflow/scenario-cookie-jar.test.ts +0 -107
- package/src/wirings/workflow/scenario-cookie-jar.ts +0 -57
- package/src/wirings/workflow/scenario-expectations.test.ts +0 -238
- package/src/wirings/workflow/scenario-hooks.test.ts +0 -259
- package/src/wirings/workflow/scenario-poll.test.ts +0 -64
- package/src/wirings/workflow/scenario-poll.ts +0 -27
- package/src/wirings/workflow/scenario-prose.test.ts +0 -275
- package/src/wirings/workflow/scenario-prose.ts +0 -86
- package/src/wirings/workflow/scenario-run.types.ts +0 -193
- package/src/wirings/workflow/scenario-service.test.ts +0 -147
- package/src/wirings/workflow/scenario-step-guards.ts +0 -23
- package/src/wirings/workflow/scenario-step.test.ts +0 -800
- package/src/wirings/workflow/scenario-step.types.ts +0 -262
- package/src/wirings/workflow/scenario-surface.test.ts +0 -146
- package/src/wirings/workflow/scenario-surface.ts +0 -71
- package/src/wirings/workflow/scenario.types.ts +0 -63
- package/src/wirings/workflow/workflow-approval-audit.ts +0 -47
- package/src/wirings/workflow/workflow-approval-policy.test.ts +0 -594
- package/src/wirings/workflow/workflow-approval-policy.ts +0 -68
- package/src/wirings/workflow/workflow-approval.ts +0 -290
- package/src/wirings/workflow/workflow-child-run-session.test.ts +0 -168
- package/src/wirings/workflow/workflow-constants.ts +0 -66
- package/src/wirings/workflow/workflow-dispatch-durability.test.ts +0 -116
- package/src/wirings/workflow/workflow-dispatch-payload.test.ts +0 -55
- package/src/wirings/workflow/workflow-dispatch-relay.test.ts +0 -128
- package/src/wirings/workflow/workflow-errors.ts +0 -132
- package/src/wirings/workflow/workflow-inline-authority.test.ts +0 -175
- package/src/wirings/workflow/workflow-invocation-id.test.ts +0 -51
- package/src/wirings/workflow/workflow-invocation-id.ts +0 -28
- package/src/wirings/workflow/workflow-meta-resolver.ts +0 -45
- package/src/wirings/workflow/workflow-mirror.test.ts +0 -171
- package/src/wirings/workflow/workflow-missing-meta.test.ts +0 -92
- package/src/wirings/workflow/workflow-on-error.test.ts +0 -145
- package/src/wirings/workflow/workflow-queue-routing.ts +0 -129
- package/src/wirings/workflow/workflow-queue-wiring.ts +0 -149
- package/src/wirings/workflow/workflow-queue-workers.test.ts +0 -131
- package/src/wirings/workflow/workflow-queue-workers.ts +0 -66
- package/src/wirings/workflow/workflow-recovery.ts +0 -192
- package/src/wirings/workflow/workflow-replay-snapshot.test.ts +0 -140
- package/src/wirings/workflow/workflow-retry-policy.test.ts +0 -113
- package/src/wirings/workflow/workflow-run-authority.test.ts +0 -212
- package/src/wirings/workflow/workflow-run-context.test.ts +0 -172
- package/src/wirings/workflow/workflow-run-engine.types.ts +0 -92
- package/src/wirings/workflow/workflow-run-ownership.ts +0 -37
- package/src/wirings/workflow/workflow-run-polling.test.ts +0 -127
- package/src/wirings/workflow/workflow-stalled-recovery.test.ts +0 -152
- package/src/wirings/workflow/workflow-status-stream.test.ts +0 -354
- package/src/wirings/workflow/workflow-status-stream.ts +0 -144
- package/src/wirings/workflow/workflow-step-claim.ts +0 -46
- package/src/wirings/workflow/workflow-step-ordinal.test.ts +0 -94
- package/src/wirings/workflow/workflow-step-session.test.ts +0 -87
- package/src/wirings/workflow/workflow-suspend.ts +0 -61
- package/src/wirings/workflow/workflow-terminal-run-guard.test.ts +0 -105
- package/src/wirings/workflow/workflow.types.ts +0 -268
- package/src/wirings-stay-decoupled.test.ts +0 -130
- package/tsconfig.json +0 -14
- package/tsconfig.tsbuildinfo +0 -1
- package/tsconfig.type-tests.json +0 -15
|
@@ -1,709 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DSL (Domain Specific Language) workflow types
|
|
3
|
-
* These types define the step-based workflow format extracted by the inspector
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import type { StandardSchemaV1 } from '@standard-schema/spec'
|
|
7
|
-
|
|
8
|
-
import type { WorkflowRun } from '../workflow.types.js'
|
|
9
|
-
import type { ScenarioPersona } from '../../../services/personas-service.js'
|
|
10
|
-
import type {
|
|
11
|
-
ScenarioStepOptions,
|
|
12
|
-
ScenarioStepPhase,
|
|
13
|
-
ScenarioSurface,
|
|
14
|
-
} from '../scenario-step.types.js'
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Workflow step options
|
|
18
|
-
*/
|
|
19
|
-
export interface WorkflowStepOptions {
|
|
20
|
-
/** Display name for logs/UI (optional, doesn't affect execution) */
|
|
21
|
-
description?: string
|
|
22
|
-
/** Number of retry attempts for failed steps (only applies to local execution) */
|
|
23
|
-
retries?: number
|
|
24
|
-
/** Delay between retry attempts (e.g., '1s', '2s', '2min') */
|
|
25
|
-
retryDelay?: string | number
|
|
26
|
-
/**
|
|
27
|
-
* RPC to invoke for compensation when this step fails after exhausting its
|
|
28
|
-
* retries. Mirrors a graph node's `onError`: the handler receives
|
|
29
|
-
* `{ error: { message } }` and the original error is still thrown, so the
|
|
30
|
-
* workflow fails — this is compensation, not recovery.
|
|
31
|
-
*/
|
|
32
|
-
onError?: string
|
|
33
|
-
/**
|
|
34
|
-
* Run this step as an actor (scenarios). The RPC is sent through the
|
|
35
|
-
* actor's authenticated client over the REAL transport — never dispatched
|
|
36
|
-
* internally — so auth middleware and permissions are exercised end-to-end.
|
|
37
|
-
* The step is recorded durably like any RPC step.
|
|
38
|
-
*/
|
|
39
|
-
actor?: ScenarioPersona
|
|
40
|
-
// Future: timeout, failFast, priority
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Options for workflow.expectEventually() — a durable polling step used by
|
|
45
|
-
* scenarios to await async effects (a notification landing, a job finishing).
|
|
46
|
-
*/
|
|
47
|
-
export interface WorkflowExpectEventuallyOptions extends WorkflowStepOptions {
|
|
48
|
-
/** Give up after this long (e.g. '30s'). Default '30s'. */
|
|
49
|
-
within?: string | number
|
|
50
|
-
/** Poll interval (e.g. '1s'). Default '1s'. */
|
|
51
|
-
interval?: string | number
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
/** Options for workflow.expectError() */
|
|
55
|
-
export interface WorkflowExpectErrorOptions extends WorkflowStepOptions {
|
|
56
|
-
/** Assert the error message matches (string = substring match). */
|
|
57
|
-
matches?: string | RegExp
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/** Options for workflow.expectService() */
|
|
61
|
-
export interface WorkflowExpectServiceOptions extends WorkflowStepOptions {
|
|
62
|
-
/** Assert a recorded call's first argument deep-equals this value. */
|
|
63
|
-
calledWith?: unknown
|
|
64
|
-
/** Assert the exact number of matching calls. Default: at least one. */
|
|
65
|
-
times?: number
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/** Options for workflow.expectScore() */
|
|
69
|
-
export interface WorkflowExpectScoreOptions extends WorkflowStepOptions {
|
|
70
|
-
/** Fail below this score. Defaults to 0.5 — a scorer that answered at all. */
|
|
71
|
-
atLeast?: number
|
|
72
|
-
/** Fail above this score, for a scorer where high is the failure. */
|
|
73
|
-
atMost?: number
|
|
74
|
-
/**
|
|
75
|
-
* The known-correct answer, which is what a reference-based judge grades
|
|
76
|
-
* against. Live traffic has no answer key, so a judge declared
|
|
77
|
-
* `requiresReference` is only ever reachable from a scenario.
|
|
78
|
-
*/
|
|
79
|
-
reference?: string
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* Type signature for workflow.do() RPC form - used by inspector
|
|
84
|
-
*/
|
|
85
|
-
export type WorkflowWireDoRPC = <TOutput = any, TInput = any>(
|
|
86
|
-
stepName: string,
|
|
87
|
-
rpcName: string,
|
|
88
|
-
data: TInput,
|
|
89
|
-
options?: WorkflowStepOptions
|
|
90
|
-
) => Promise<TOutput>
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Type signature for workflow.do() inline form - used by inspector
|
|
94
|
-
*/
|
|
95
|
-
export type WorkflowWireDoInline = <T>(
|
|
96
|
-
stepName: string,
|
|
97
|
-
fn: () => Promise<T> | T,
|
|
98
|
-
options?: WorkflowStepOptions
|
|
99
|
-
) => Promise<T>
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* Type signature for scenario.given/when/then - used by inspector.
|
|
103
|
-
*
|
|
104
|
-
* Deliberately mirrors WorkflowWireDoRPC's shape: the target is a string, not
|
|
105
|
-
* an imported symbol, so the extractor reads it as a literal.
|
|
106
|
-
*/
|
|
107
|
-
export type ScenarioStepInvocation = <TOutput = any, TInput = any>(
|
|
108
|
-
stepName: string,
|
|
109
|
-
stepFunc: string,
|
|
110
|
-
data?: TInput,
|
|
111
|
-
options?: ScenarioStepOptions
|
|
112
|
-
) => Promise<TOutput>
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* Type signature for workflow.sleep() - used by inspector
|
|
116
|
-
*/
|
|
117
|
-
export type WorkflowWireSleep = (
|
|
118
|
-
stepName: string,
|
|
119
|
-
duration: string
|
|
120
|
-
) => Promise<void>
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* Type signature for workflow.suspend() - used by inspector.
|
|
124
|
-
* `reason` is both the human-readable message stored on the suspended run and
|
|
125
|
-
* the suspend point's stable identity (used raw as the durable step name), so a
|
|
126
|
-
* workflow can have multiple independent suspends — including dynamic reasons in
|
|
127
|
-
* loops, like dynamic `do()` step names.
|
|
128
|
-
*/
|
|
129
|
-
export type WorkflowWireSuspend = (reason: string) => Promise<void>
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* Who is allowed to answer an approval gate, relative to the user who started
|
|
133
|
-
* the run.
|
|
134
|
-
*
|
|
135
|
-
* - `any` — anyone the approve entrypoint lets through. The gate is a pause for
|
|
136
|
-
* a decision, not an authorization boundary.
|
|
137
|
-
* - `owner` — only the user who started the run, so a gate can be used to
|
|
138
|
-
* confirm an action against the same person who requested it.
|
|
139
|
-
* - `not-initiator` — anyone *except* the user who started the run: four-eyes.
|
|
140
|
-
* A run with no recorded initiator has nobody to exclude, so this degrades to
|
|
141
|
-
* requiring a signed-in decider.
|
|
142
|
-
*/
|
|
143
|
-
export type WorkflowApprovalApprovers = 'any' | 'owner' | 'not-initiator'
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* Who may answer an approval gate. Declared on the gate rather than the
|
|
147
|
-
* entrypoint because it is a property of the decision being made, and because
|
|
148
|
-
* one workflow can hold several gates with different requirements.
|
|
149
|
-
*/
|
|
150
|
-
export interface WorkflowApprovalPolicy {
|
|
151
|
-
/**
|
|
152
|
-
* Defaults to `any`. See {@link WorkflowApprovalApprovers}.
|
|
153
|
-
*/
|
|
154
|
-
approvers?: WorkflowApprovalApprovers
|
|
155
|
-
/**
|
|
156
|
-
* Additionally require the decider's session to hold this scope, so
|
|
157
|
-
* "a second pair of eyes" can be narrowed to "a second pair of *senior*
|
|
158
|
-
* eyes". Combines with `approvers` — both must pass.
|
|
159
|
-
*/
|
|
160
|
-
approverScope?: string
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
/**
|
|
164
|
-
* The decider, reduced to the two facts a policy can be expressed in terms of.
|
|
165
|
-
* Recorded alongside the decision so the gate can be judged on replay — the
|
|
166
|
-
* session itself is long gone by then — and carried into the settled outcome so
|
|
167
|
-
* the answer keeps its provenance.
|
|
168
|
-
*/
|
|
169
|
-
export interface ApprovalDecider {
|
|
170
|
-
userId?: string
|
|
171
|
-
scopes?: string[]
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
/**
|
|
175
|
-
* Options for workflow.approval().
|
|
176
|
-
*/
|
|
177
|
-
export interface WorkflowApprovalOptions<
|
|
178
|
-
TSchema extends StandardSchemaV1 = StandardSchemaV1,
|
|
179
|
-
> extends WorkflowApprovalPolicy {
|
|
180
|
-
/**
|
|
181
|
-
* Schema the decision payload is validated against. This is a VALUE, not a
|
|
182
|
-
* type generic: the payload arrives from an untrusted caller over the approve
|
|
183
|
-
* wire, and a generic is erased at compile time — it would validate nothing.
|
|
184
|
-
* Any standard-schema library (zod, valibot, arktype) satisfies this.
|
|
185
|
-
*/
|
|
186
|
-
schema: TSchema
|
|
187
|
-
/**
|
|
188
|
-
* Give up waiting after this long (e.g. '3d'), yielding `{ status: 'expired' }`
|
|
189
|
-
* instead of waiting forever. Evaluated on replay from a recorded deadline, so
|
|
190
|
-
* the answer is correct even if the wake-up timer is never delivered.
|
|
191
|
-
*/
|
|
192
|
-
expiry?: string | number
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
/**
|
|
196
|
-
* The result of an approval gate. A union rather than a throw so that callers
|
|
197
|
-
* must handle the deadline case, and so "skip it and carry on" stays trivial.
|
|
198
|
-
* `decided` means a human answered — whether that answer was yes or no is
|
|
199
|
-
* carried in `data` and is the application's business, not the framework's.
|
|
200
|
-
*/
|
|
201
|
-
export type ApprovalOutcome<T> =
|
|
202
|
-
| {
|
|
203
|
-
status: 'decided'
|
|
204
|
-
data: T
|
|
205
|
-
/**
|
|
206
|
-
* Who answered, and when. Run state holds the decision only while the gate
|
|
207
|
-
* is open — it is overwritten by the next write and cleared outright when a
|
|
208
|
-
* decision is refused — so the settled answer carries its own provenance
|
|
209
|
-
* into the step result, which is append-only.
|
|
210
|
-
*/
|
|
211
|
-
decidedBy?: ApprovalDecider
|
|
212
|
-
decidedAt?: string
|
|
213
|
-
}
|
|
214
|
-
| { status: 'expired' }
|
|
215
|
-
|
|
216
|
-
/**
|
|
217
|
-
* Type signature for workflow.approval() - used by inspector.
|
|
218
|
-
* Like {@link WorkflowWireSuspend}, `reason` is the approval point's stable
|
|
219
|
-
* durable identity. Unlike suspend, the gate stays closed until a decision is
|
|
220
|
-
* recorded against it, and the decision is handed back to the caller.
|
|
221
|
-
*/
|
|
222
|
-
export type WorkflowWireApproval = <TSchema extends StandardSchemaV1>(
|
|
223
|
-
reason: string,
|
|
224
|
-
options: WorkflowApprovalOptions<TSchema>
|
|
225
|
-
) => Promise<ApprovalOutcome<StandardSchemaV1.InferOutput<TSchema>>>
|
|
226
|
-
|
|
227
|
-
/**
|
|
228
|
-
* Input source for step arguments in DSL workflows
|
|
229
|
-
*/
|
|
230
|
-
export type InputSource =
|
|
231
|
-
| { from: 'input'; path: string }
|
|
232
|
-
| { from: 'outputVar'; name: string; path?: string }
|
|
233
|
-
| { from: 'item'; path: string }
|
|
234
|
-
| { from: 'literal'; value: unknown }
|
|
235
|
-
| { from: 'template'; parts: string[]; expressions: InputSource[] }
|
|
236
|
-
|
|
237
|
-
/**
|
|
238
|
-
* Output binding for return statements in DSL workflows
|
|
239
|
-
*/
|
|
240
|
-
export type OutputBinding =
|
|
241
|
-
| { from: 'outputVar'; name: string; path?: string }
|
|
242
|
-
| { from: 'stateVar'; name: string; path?: string }
|
|
243
|
-
| { from: 'input'; path: string }
|
|
244
|
-
| { from: 'literal'; value: unknown }
|
|
245
|
-
| { from: 'expression'; expression: string }
|
|
246
|
-
|
|
247
|
-
/**
|
|
248
|
-
* RPC step metadata (base form)
|
|
249
|
-
*/
|
|
250
|
-
export interface RpcStepMeta {
|
|
251
|
-
/** RPC form - generates queue worker */
|
|
252
|
-
type: 'rpc'
|
|
253
|
-
/** Cache key (stepName from workflow.do) */
|
|
254
|
-
stepName: string
|
|
255
|
-
/** RPC to invoke */
|
|
256
|
-
rpcName: string
|
|
257
|
-
/** Output variable name (if assigned) */
|
|
258
|
-
outputVar?: string
|
|
259
|
-
/** Input source mappings, or 'passthrough' when entire data is passed */
|
|
260
|
-
inputs?: Record<string, InputSource> | 'passthrough'
|
|
261
|
-
/** Step options */
|
|
262
|
-
options?: WorkflowStepOptions
|
|
263
|
-
/** Scenario actor name this step runs as ({ actor: actors.x }) */
|
|
264
|
-
actor?: string
|
|
265
|
-
/** True for workflow.expectEventually polling steps */
|
|
266
|
-
expectEventually?: boolean
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
/**
|
|
270
|
-
* Scenario step metadata — a call to `scenario.given/when/then`.
|
|
271
|
-
*
|
|
272
|
-
* Distinct from RpcStepMeta on purpose: a step runs locally through
|
|
273
|
-
* runPikkuFunc and must never be treated as dispatchable on the queue/replay
|
|
274
|
-
* path, nor registered as a callable RPC (a browser-driving step must not be
|
|
275
|
-
* network-invocable).
|
|
276
|
-
*/
|
|
277
|
-
export interface ScenarioStepMeta {
|
|
278
|
-
type: 'scenarioStep'
|
|
279
|
-
/** Cache key (first argument), ordinal-suffixed by the engine when repeated */
|
|
280
|
-
stepName: string
|
|
281
|
-
/** Registered name of the step function being run */
|
|
282
|
-
stepFunc: string
|
|
283
|
-
/** Which keyword the reporter prefixes — Given, When or Then */
|
|
284
|
-
phase: ScenarioStepPhase
|
|
285
|
-
/** Output variable name (if assigned) */
|
|
286
|
-
outputVar?: string
|
|
287
|
-
/** Input source mappings, or 'passthrough' when entire data is passed */
|
|
288
|
-
inputs?: Record<string, InputSource> | 'passthrough'
|
|
289
|
-
/** Step options */
|
|
290
|
-
options?: WorkflowStepOptions
|
|
291
|
-
/** Scenario actor name this step runs as ({ actor: actors.x }) */
|
|
292
|
-
actor?: string
|
|
293
|
-
/** Mirrors the surfaces the step function declares a binding for */
|
|
294
|
-
surfaces?: ScenarioSurface[]
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
/**
|
|
298
|
-
* Simple condition expression (leaf node)
|
|
299
|
-
*/
|
|
300
|
-
export interface SimpleCondition {
|
|
301
|
-
type: 'simple'
|
|
302
|
-
expression: string
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
/**
|
|
306
|
-
* Nested condition structure supporting AND/OR operations
|
|
307
|
-
*/
|
|
308
|
-
export type Condition =
|
|
309
|
-
| SimpleCondition
|
|
310
|
-
| { type: 'and'; conditions: Condition[] }
|
|
311
|
-
| { type: 'or'; conditions: Condition[] }
|
|
312
|
-
|
|
313
|
-
/**
|
|
314
|
-
* A single branch in an if/else-if chain
|
|
315
|
-
*/
|
|
316
|
-
export interface BranchCase {
|
|
317
|
-
/** Condition for this branch */
|
|
318
|
-
condition: Condition
|
|
319
|
-
/** Steps to execute when condition is true */
|
|
320
|
-
steps: WorkflowStepMeta[]
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
/**
|
|
324
|
-
* Branch step metadata (if/else-if/else control flow)
|
|
325
|
-
*/
|
|
326
|
-
export interface BranchStepMeta {
|
|
327
|
-
type: 'branch'
|
|
328
|
-
/** Branches in order: first is "if", rest are "else if" */
|
|
329
|
-
branches: BranchCase[]
|
|
330
|
-
/** Else branch steps (when no conditions match) */
|
|
331
|
-
elseSteps?: WorkflowStepMeta[]
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
/**
|
|
335
|
-
* Parallel group step metadata (Promise.all with multiple steps)
|
|
336
|
-
*/
|
|
337
|
-
export interface ParallelGroupStepMeta {
|
|
338
|
-
type: 'parallel'
|
|
339
|
-
/** Child steps to execute in parallel */
|
|
340
|
-
children: Array<RpcStepMeta | ScenarioStepMeta>
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
/**
|
|
344
|
-
* Fanout step metadata (parallel or sequential iteration)
|
|
345
|
-
*/
|
|
346
|
-
export interface FanoutStepMeta {
|
|
347
|
-
type: 'fanout'
|
|
348
|
-
/**
|
|
349
|
-
* Step name for this fanout. Optional: a fanout is not itself a cached step,
|
|
350
|
-
* and node ids are step names — borrowing a body step's name would give the
|
|
351
|
-
* loop and that step the same id, collapsing one onto the other.
|
|
352
|
-
*/
|
|
353
|
-
stepName?: string
|
|
354
|
-
/** Source array variable name */
|
|
355
|
-
sourceVar: string
|
|
356
|
-
/** Iterator variable name */
|
|
357
|
-
itemVar: string
|
|
358
|
-
/** Execution mode */
|
|
359
|
-
mode: 'parallel' | 'sequential'
|
|
360
|
-
/** Steps to execute inline per iteration, in order */
|
|
361
|
-
body: Array<RpcStepMeta | SleepStepMeta | SuspendStepMeta | ScenarioStepMeta>
|
|
362
|
-
/** Time between iterations (sequential mode only) */
|
|
363
|
-
timeBetween?: string
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
/**
|
|
367
|
-
* Return step metadata (workflow output)
|
|
368
|
-
*/
|
|
369
|
-
export interface ReturnStepMeta {
|
|
370
|
-
type: 'return'
|
|
371
|
-
/** Output bindings */
|
|
372
|
-
outputs: Record<string, OutputBinding>
|
|
373
|
-
/**
|
|
374
|
-
* Variables spread into the returned object (`return { ...r }`), or the sole
|
|
375
|
-
* returned variable (`return r`). Their fields are not enumerable statically,
|
|
376
|
-
* so they are recorded by name rather than expanded into `outputs`.
|
|
377
|
-
*/
|
|
378
|
-
spread?: string[]
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
/**
|
|
382
|
-
* Inline step metadata
|
|
383
|
-
*/
|
|
384
|
-
export interface InlineStepMeta {
|
|
385
|
-
/** Inline form - local execution */
|
|
386
|
-
type: 'inline'
|
|
387
|
-
/** Cache key (stepName from workflow.do) */
|
|
388
|
-
stepName: string
|
|
389
|
-
/** Display name */
|
|
390
|
-
description?: string
|
|
391
|
-
/** Step options */
|
|
392
|
-
options?: WorkflowStepOptions
|
|
393
|
-
}
|
|
394
|
-
|
|
395
|
-
/**
|
|
396
|
-
* Sleep step metadata
|
|
397
|
-
*/
|
|
398
|
-
export interface SleepStepMeta {
|
|
399
|
-
/** Sleep step */
|
|
400
|
-
type: 'sleep'
|
|
401
|
-
/** Cache key (stepName from workflow.sleep) */
|
|
402
|
-
stepName: string
|
|
403
|
-
/** Sleep duration */
|
|
404
|
-
duration: string | number
|
|
405
|
-
/**
|
|
406
|
-
* Source text of a duration only known at runtime (e.g. a loop variable).
|
|
407
|
-
* The closure evaluates it, so it is legal DSL; it is kept separate from
|
|
408
|
-
* `duration` so regenerated code emits it raw rather than as a string
|
|
409
|
-
* literal, exactly as `expression` does on a set step.
|
|
410
|
-
*/
|
|
411
|
-
expression?: string
|
|
412
|
-
}
|
|
413
|
-
|
|
414
|
-
/**
|
|
415
|
-
* Cancel step metadata
|
|
416
|
-
*/
|
|
417
|
-
export interface CancelStepMeta {
|
|
418
|
-
/** Cancel step */
|
|
419
|
-
type: 'cancel'
|
|
420
|
-
/** Optional cancellation reason */
|
|
421
|
-
reason?: string
|
|
422
|
-
}
|
|
423
|
-
|
|
424
|
-
/**
|
|
425
|
-
* Set step metadata (context variable assignment)
|
|
426
|
-
*/
|
|
427
|
-
export interface SetStepMeta {
|
|
428
|
-
/** Set step */
|
|
429
|
-
type: 'set'
|
|
430
|
-
/** Variable name to set (must be in context) */
|
|
431
|
-
variable: string
|
|
432
|
-
/** Literal value to assign. Mutually exclusive with `expression`. */
|
|
433
|
-
value?: unknown
|
|
434
|
-
/**
|
|
435
|
-
* Source text of a non-literal assignment (e.g. `count + 1`). Kept separate
|
|
436
|
-
* from `value` so regenerated code can emit it raw — a string `value` is a
|
|
437
|
-
* string literal, an `expression` is code.
|
|
438
|
-
*/
|
|
439
|
-
expression?: string
|
|
440
|
-
}
|
|
441
|
-
|
|
442
|
-
/**
|
|
443
|
-
* Switch case metadata
|
|
444
|
-
*/
|
|
445
|
-
export interface SwitchCaseMeta {
|
|
446
|
-
/** Case value (literal) or expression */
|
|
447
|
-
value?: string | number | boolean | null
|
|
448
|
-
/** Case expression (for complex cases) */
|
|
449
|
-
expression?: string
|
|
450
|
-
/** Steps to execute for this case */
|
|
451
|
-
steps: WorkflowStepMeta[]
|
|
452
|
-
}
|
|
453
|
-
|
|
454
|
-
/**
|
|
455
|
-
* Switch step metadata (switch/case control flow)
|
|
456
|
-
*/
|
|
457
|
-
export interface SwitchStepMeta {
|
|
458
|
-
type: 'switch'
|
|
459
|
-
/** Expression being switched on */
|
|
460
|
-
expression: string
|
|
461
|
-
/** Case branches */
|
|
462
|
-
cases: SwitchCaseMeta[]
|
|
463
|
-
/** Default case steps (optional) */
|
|
464
|
-
defaultSteps?: WorkflowStepMeta[]
|
|
465
|
-
}
|
|
466
|
-
|
|
467
|
-
/**
|
|
468
|
-
* Suspend step metadata (workflow.suspend())
|
|
469
|
-
*/
|
|
470
|
-
export interface SuspendStepMeta {
|
|
471
|
-
type: 'suspend'
|
|
472
|
-
/** Reason string passed to workflow.suspend() — becomes the durable step key */
|
|
473
|
-
reason: string
|
|
474
|
-
}
|
|
475
|
-
|
|
476
|
-
/**
|
|
477
|
-
* Approval step metadata (workflow.approval())
|
|
478
|
-
*/
|
|
479
|
-
export interface ApprovalStepMeta {
|
|
480
|
-
type: 'approval'
|
|
481
|
-
/** Reason string passed to workflow.approval() — becomes the durable step key */
|
|
482
|
-
reason: string
|
|
483
|
-
/** Output variable name (if assigned) */
|
|
484
|
-
outputVar?: string
|
|
485
|
-
/** Expiry duration, when one was given */
|
|
486
|
-
expiry?: string | number
|
|
487
|
-
/** Who may answer the gate, when the default was not used */
|
|
488
|
-
approvers?: WorkflowApprovalApprovers
|
|
489
|
-
/** Scope the decider must hold, when one was required */
|
|
490
|
-
approverScope?: string
|
|
491
|
-
}
|
|
492
|
-
|
|
493
|
-
/**
|
|
494
|
-
* Filter step metadata (array.filter)
|
|
495
|
-
*/
|
|
496
|
-
export interface FilterStepMeta {
|
|
497
|
-
type: 'filter'
|
|
498
|
-
/** Source array variable name */
|
|
499
|
-
sourceVar: string
|
|
500
|
-
/** Iterator variable name */
|
|
501
|
-
itemVar: string
|
|
502
|
-
/** Filter condition */
|
|
503
|
-
condition: Condition
|
|
504
|
-
/** Output variable name (if assigned) */
|
|
505
|
-
outputVar?: string
|
|
506
|
-
}
|
|
507
|
-
|
|
508
|
-
/**
|
|
509
|
-
* Array predicate step metadata (array.some, array.every)
|
|
510
|
-
*/
|
|
511
|
-
export interface ArrayPredicateStepMeta {
|
|
512
|
-
type: 'arrayPredicate'
|
|
513
|
-
/** Predicate mode */
|
|
514
|
-
mode: 'some' | 'every'
|
|
515
|
-
/** Source array variable name */
|
|
516
|
-
sourceVar: string
|
|
517
|
-
/** Iterator variable name */
|
|
518
|
-
itemVar: string
|
|
519
|
-
/** Predicate condition */
|
|
520
|
-
condition: Condition
|
|
521
|
-
/** Output variable name (if assigned) */
|
|
522
|
-
outputVar?: string
|
|
523
|
-
}
|
|
524
|
-
|
|
525
|
-
/**
|
|
526
|
-
* Workflow step metadata (extracted by inspector)
|
|
527
|
-
*/
|
|
528
|
-
export type WorkflowStepMeta =
|
|
529
|
-
| RpcStepMeta
|
|
530
|
-
| ScenarioStepMeta
|
|
531
|
-
| BranchStepMeta
|
|
532
|
-
| ParallelGroupStepMeta
|
|
533
|
-
| FanoutStepMeta
|
|
534
|
-
| ReturnStepMeta
|
|
535
|
-
| InlineStepMeta
|
|
536
|
-
| SleepStepMeta
|
|
537
|
-
| CancelStepMeta
|
|
538
|
-
| SuspendStepMeta
|
|
539
|
-
| ApprovalStepMeta
|
|
540
|
-
| SwitchStepMeta
|
|
541
|
-
| FilterStepMeta
|
|
542
|
-
| ArrayPredicateStepMeta
|
|
543
|
-
| SetStepMeta
|
|
544
|
-
|
|
545
|
-
/**
|
|
546
|
-
* Workflow step wire context for RPC functions
|
|
547
|
-
* Provides step-level metadata including retry attempt tracking
|
|
548
|
-
*/
|
|
549
|
-
export interface WorkflowStepWire {
|
|
550
|
-
/** The workflow run ID */
|
|
551
|
-
runId: string
|
|
552
|
-
/**
|
|
553
|
-
* The step row ID. Whether it stays the same or is minted fresh per attempt is
|
|
554
|
-
* STORE-SPECIFIC (in-memory mints a new one each attempt; the SQL store reuses
|
|
555
|
-
* the row) — do NOT use it as a dedupe key. Use `invocationId`.
|
|
556
|
-
*/
|
|
557
|
-
stepId: string
|
|
558
|
-
/**
|
|
559
|
-
* Stable identity of this step invocation — the idempotency / dedupe key.
|
|
560
|
-
* Identical across every retry of the same call (derived from runId + step
|
|
561
|
-
* name) regardless of storage backend, so a step can `ON CONFLICT (invocationId)`
|
|
562
|
-
* or pass it as an external idempotency key and have retries collapse onto the
|
|
563
|
-
* first attempt.
|
|
564
|
-
*/
|
|
565
|
-
invocationId: string
|
|
566
|
-
/** Current attempt number (1-indexed, increments on retry) */
|
|
567
|
-
attemptCount: number
|
|
568
|
-
/**
|
|
569
|
-
* Invocation ID of the predecessor step this one was reached from (the walked
|
|
570
|
-
* transition/edge). Undefined for entry steps. Lets a step know its origin —
|
|
571
|
-
* e.g. in a cyclic graph `a → b → a → c`, the second `a` carries `b`'s id.
|
|
572
|
-
*/
|
|
573
|
-
fromInvocationId?: string
|
|
574
|
-
}
|
|
575
|
-
|
|
576
|
-
/**
|
|
577
|
-
* Workflow wire object for DSL workflows
|
|
578
|
-
* Provides workflow-specific capabilities to function execution
|
|
579
|
-
*/
|
|
580
|
-
export interface PikkuWorkflowWire {
|
|
581
|
-
/** The workflow name */
|
|
582
|
-
name: string
|
|
583
|
-
/** The current run ID */
|
|
584
|
-
runId: string
|
|
585
|
-
/** Pikku user ID propagated from the originating request for credential resolution */
|
|
586
|
-
pikkuUserId?: string
|
|
587
|
-
/** Get the current workflow run */
|
|
588
|
-
getRun: () => Promise<WorkflowRun>
|
|
589
|
-
|
|
590
|
-
/** Execute a workflow step (overloaded - RPC or inline form) */
|
|
591
|
-
do: WorkflowWireDoRPC & WorkflowWireDoInline
|
|
592
|
-
|
|
593
|
-
/** Sleep for a duration */
|
|
594
|
-
sleep: WorkflowWireSleep
|
|
595
|
-
|
|
596
|
-
/** Suspend workflow until explicitly resumed */
|
|
597
|
-
suspend: WorkflowWireSuspend
|
|
598
|
-
|
|
599
|
-
/** Suspend workflow until a human records a decision against this gate */
|
|
600
|
-
approval: WorkflowWireApproval
|
|
601
|
-
}
|
|
602
|
-
|
|
603
|
-
/**
|
|
604
|
-
* What a scenario has accumulated so far, shared by its body and its hooks.
|
|
605
|
-
*
|
|
606
|
-
* `Partial` because a scenario can fail at any step: `Out` describes what a
|
|
607
|
-
* *completed* run produces, and the context holds however much of it this run
|
|
608
|
-
* reached.
|
|
609
|
-
*
|
|
610
|
-
* The `0 extends 1 & Out` branch keeps `any` collapsing to `any` rather than to
|
|
611
|
-
* the union of the other two. `PikkuWire` and `PikkuFunctionConfig` both use
|
|
612
|
-
* this type as a generic *constraint*, and a constraint carrying a concrete
|
|
613
|
-
* context would reject every wire whose scenario output differs from it.
|
|
614
|
-
*/
|
|
615
|
-
export type ScenarioContext<Out = unknown> = 0 extends 1 & Out
|
|
616
|
-
? any
|
|
617
|
-
: Out extends object
|
|
618
|
-
? Partial<Out>
|
|
619
|
-
: Record<string, unknown>
|
|
620
|
-
|
|
621
|
-
export interface PikkuScenarioWire<Out = unknown> extends PikkuWorkflowWire {
|
|
622
|
-
/**
|
|
623
|
-
* Scratch the body writes and the `before`/`after` hooks read. A hook is a
|
|
624
|
-
* separate function and cannot see the body's locals, so this is how teardown
|
|
625
|
-
* learns the ids the body minted.
|
|
626
|
-
*
|
|
627
|
-
* Deliberately *not* a world: it is scoped to one run, and scenario steps
|
|
628
|
-
* cannot reach it. Steps stay pure functions of their declared inputs, so the
|
|
629
|
-
* ladder in the report remains a complete account of what a step saw.
|
|
630
|
-
*/
|
|
631
|
-
context: ScenarioContext<Out>
|
|
632
|
-
|
|
633
|
-
/**
|
|
634
|
-
* Durable polling step: invoke `rpcName` (as an actor when `options.actor`
|
|
635
|
-
* is set) until `predicate` passes or `options.within` elapses.
|
|
636
|
-
*/
|
|
637
|
-
expectEventually: <TOutput = any, TInput = any>(
|
|
638
|
-
stepName: string,
|
|
639
|
-
rpcName: string,
|
|
640
|
-
data: TInput,
|
|
641
|
-
predicate: (output: TOutput) => boolean,
|
|
642
|
-
options?: WorkflowExpectEventuallyOptions
|
|
643
|
-
) => Promise<TOutput>
|
|
644
|
-
|
|
645
|
-
/** Error-path step: succeeds only when the RPC throws; returns the message */
|
|
646
|
-
expectError: <TInput = any>(
|
|
647
|
-
stepName: string,
|
|
648
|
-
rpcName: string,
|
|
649
|
-
data: TInput,
|
|
650
|
-
options?: WorkflowExpectErrorOptions
|
|
651
|
-
) => Promise<string>
|
|
652
|
-
|
|
653
|
-
/** Stub-assertion step: asserts `service.method` was called on the target server */
|
|
654
|
-
expectService: (
|
|
655
|
-
stepName: string,
|
|
656
|
-
serviceMethod: string,
|
|
657
|
-
options?: WorkflowExpectServiceOptions
|
|
658
|
-
) => Promise<void>
|
|
659
|
-
|
|
660
|
-
/**
|
|
661
|
-
* Grade-assertion step: runs one declared scorer against a finished agent run
|
|
662
|
-
* and asserts the score. Returns the grade, so a scenario can report the
|
|
663
|
-
* reason a judge gave rather than only that it fell short.
|
|
664
|
-
*/
|
|
665
|
-
expectScore: (
|
|
666
|
-
stepName: string,
|
|
667
|
-
runId: string,
|
|
668
|
-
scorerName: string,
|
|
669
|
-
options?: WorkflowExpectScoreOptions
|
|
670
|
-
) => Promise<{ score: number; reason?: string }>
|
|
671
|
-
|
|
672
|
-
/**
|
|
673
|
-
* Run a registered scenario step, as the setup the scenario starts from.
|
|
674
|
-
*
|
|
675
|
-
* Shaped exactly like `do`'s RPC form — `(stepName, target, data, options)` —
|
|
676
|
-
* so the inspector reads the target as a string literal rather than resolving
|
|
677
|
-
* an imported symbol.
|
|
678
|
-
*
|
|
679
|
-
* The generated `TypedScenario` narrows these over `FlattenedScenarioStepMap`.
|
|
680
|
-
*/
|
|
681
|
-
given(
|
|
682
|
-
stepName: string,
|
|
683
|
-
stepFunc: string,
|
|
684
|
-
data?: any,
|
|
685
|
-
options?: ScenarioStepOptions
|
|
686
|
-
): Promise<any>
|
|
687
|
-
|
|
688
|
-
/** `when`: the same call as `given`, rendered as the action under test */
|
|
689
|
-
when(
|
|
690
|
-
stepName: string,
|
|
691
|
-
stepFunc: string,
|
|
692
|
-
data?: any,
|
|
693
|
-
options?: ScenarioStepOptions
|
|
694
|
-
): Promise<any>
|
|
695
|
-
|
|
696
|
-
/**
|
|
697
|
-
* `then`: a claim about what the action left behind. Unlike `given`/`when`
|
|
698
|
-
* this is not prose alone — the step's bindings become witnesses, so every
|
|
699
|
-
* declared surface is observed and the observations must agree.
|
|
700
|
-
*/
|
|
701
|
-
then(
|
|
702
|
-
stepName: string,
|
|
703
|
-
stepFunc: string,
|
|
704
|
-
data?: any,
|
|
705
|
-
options?: ScenarioStepOptions
|
|
706
|
-
): Promise<any>
|
|
707
|
-
|
|
708
|
-
runScheduledTask: (name: string) => Promise<unknown>
|
|
709
|
-
}
|