@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,181 +0,0 @@
|
|
|
1
|
-
import type { PikkuRawWire } from '../../types/core.types.js'
|
|
2
|
-
import type { CoreQueueWorker, QueueJob, PikkuQueue } from './queue.types.js'
|
|
3
|
-
import type {
|
|
4
|
-
CorePikkuFunctionConfig,
|
|
5
|
-
CorePikkuFunctionSessionless,
|
|
6
|
-
} from '../../function/functions.types.js'
|
|
7
|
-
import { getErrorResponse, PikkuError } from '../../errors/error-handler.js'
|
|
8
|
-
import { PikkuMissingMetaError } from '../../errors/errors.js'
|
|
9
|
-
import {
|
|
10
|
-
getSingletonServices,
|
|
11
|
-
getCreateWireServices,
|
|
12
|
-
pikkuState,
|
|
13
|
-
} from '../../pikku-state.js'
|
|
14
|
-
import { addFunction, runPikkuFunc } from '../../function/function-runner.js'
|
|
15
|
-
import { resolveQueueJobIdentity } from './queue-identity.js'
|
|
16
|
-
|
|
17
|
-
class QueueWorkerNotFoundError extends PikkuError {
|
|
18
|
-
constructor(name: string) {
|
|
19
|
-
super(`Queue processor not found: ${name}`)
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export class QueueJobFailedError extends PikkuError {
|
|
24
|
-
constructor(jobId: string, reason?: string) {
|
|
25
|
-
super(`Queue job ${jobId} failed${reason ? `: ${reason}` : ''}`)
|
|
26
|
-
this.name = 'QueueJobFailedError'
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export class QueueJobDiscardedError extends PikkuError {
|
|
31
|
-
constructor(jobId: string, reason?: string) {
|
|
32
|
-
super(`Queue job ${jobId} discarded${reason ? `: ${reason}` : ''}`)
|
|
33
|
-
this.name = 'QueueJobDiscardedError'
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export const wireQueueWorker = <
|
|
38
|
-
InputData = any,
|
|
39
|
-
OutputData = any,
|
|
40
|
-
PikkuFunctionConfig extends CorePikkuFunctionConfig<
|
|
41
|
-
CorePikkuFunctionSessionless<InputData, OutputData>
|
|
42
|
-
> = CorePikkuFunctionConfig<
|
|
43
|
-
CorePikkuFunctionSessionless<InputData, OutputData>
|
|
44
|
-
>,
|
|
45
|
-
>(
|
|
46
|
-
queueWorker: CoreQueueWorker<PikkuFunctionConfig>
|
|
47
|
-
) => {
|
|
48
|
-
const meta = pikkuState(null, 'queue', 'meta')
|
|
49
|
-
const processorMeta = meta[queueWorker.name]
|
|
50
|
-
if (!processorMeta) {
|
|
51
|
-
console.warn(
|
|
52
|
-
`[pikku] Skipping queue worker '${queueWorker.name}' — metadata not found. Consider moving this wiring to its own file.`
|
|
53
|
-
)
|
|
54
|
-
return
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
addFunction(processorMeta.pikkuFuncId, {
|
|
58
|
-
func: queueWorker.func.func,
|
|
59
|
-
auth: queueWorker.func.auth,
|
|
60
|
-
permissions: queueWorker.func.permissions,
|
|
61
|
-
middleware: queueWorker.func.middleware,
|
|
62
|
-
tags: queueWorker.func.tags,
|
|
63
|
-
})
|
|
64
|
-
|
|
65
|
-
const registrations = pikkuState(null, 'queue', 'registrations')
|
|
66
|
-
registrations.set(queueWorker.name, queueWorker)
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
export function getQueueWorkers(): Map<string, CoreQueueWorker> {
|
|
70
|
-
return pikkuState(null, 'queue', 'registrations')
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
export async function removeQueueWorker(name: string): Promise<void> {
|
|
74
|
-
const registrations = pikkuState(null, 'queue', 'registrations')
|
|
75
|
-
const registration = registrations.get(name)
|
|
76
|
-
|
|
77
|
-
if (!registration) {
|
|
78
|
-
throw new QueueWorkerNotFoundError(name)
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
registrations.delete(name)
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
export async function runQueueJob({
|
|
85
|
-
job,
|
|
86
|
-
updateProgress,
|
|
87
|
-
traceId,
|
|
88
|
-
}: {
|
|
89
|
-
job: QueueJob
|
|
90
|
-
updateProgress?: (progress: number | string | object) => Promise<void>
|
|
91
|
-
traceId?: string
|
|
92
|
-
}): Promise<void> {
|
|
93
|
-
const singletonServices = getSingletonServices()
|
|
94
|
-
const createWireServices = getCreateWireServices()
|
|
95
|
-
const resolvedTraceId = traceId ?? `q-${job.id}`
|
|
96
|
-
const logger =
|
|
97
|
-
singletonServices.logger.scope?.(resolvedTraceId) ??
|
|
98
|
-
singletonServices.logger
|
|
99
|
-
|
|
100
|
-
const meta = pikkuState(null, 'queue', 'meta')
|
|
101
|
-
const processorMeta = meta[job.queueName]
|
|
102
|
-
if (!processorMeta) {
|
|
103
|
-
throw new PikkuMissingMetaError(
|
|
104
|
-
`Missing generated metadata for queue worker '${job.queueName}'`
|
|
105
|
-
)
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
const registrations = pikkuState(null, 'queue', 'registrations')
|
|
109
|
-
const queueWorker = registrations.get(job.queueName)
|
|
110
|
-
if (!queueWorker) {
|
|
111
|
-
throw new Error(`Queue worker registration not found for: ${job.queueName}`)
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
// knowledge: decisions/security/queue-job-identities-are-signed-at-enqueue.md
|
|
115
|
-
const pikkuUserId = await resolveQueueJobIdentity({
|
|
116
|
-
claimedIdentity: job.pikkuUserId,
|
|
117
|
-
binding: { queueName: job.queueName, jobId: job.id, data: job.data },
|
|
118
|
-
secrets: singletonServices.secrets,
|
|
119
|
-
logger,
|
|
120
|
-
})
|
|
121
|
-
|
|
122
|
-
const queue: PikkuQueue = {
|
|
123
|
-
queueName: job.queueName,
|
|
124
|
-
jobId: job.id,
|
|
125
|
-
pikkuUserId,
|
|
126
|
-
updateProgress:
|
|
127
|
-
updateProgress ||
|
|
128
|
-
(async (progress: number | string | object) => {
|
|
129
|
-
logger.info(`Job ${job.id} progress: ${progress}`)
|
|
130
|
-
}),
|
|
131
|
-
fail: async (reason?: string) => {
|
|
132
|
-
throw new QueueJobFailedError(job.id, reason)
|
|
133
|
-
},
|
|
134
|
-
discard: async (reason?: string) => {
|
|
135
|
-
throw new QueueJobDiscardedError(job.id, reason)
|
|
136
|
-
},
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
try {
|
|
140
|
-
logger.info(`Processing job ${job.id} in queue ${job.queueName}`)
|
|
141
|
-
|
|
142
|
-
const wire: PikkuRawWire = {
|
|
143
|
-
traceId: resolvedTraceId,
|
|
144
|
-
queue,
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
const result = await runPikkuFunc(
|
|
148
|
-
'queue',
|
|
149
|
-
job.queueName,
|
|
150
|
-
processorMeta.pikkuFuncId,
|
|
151
|
-
{
|
|
152
|
-
singletonServices,
|
|
153
|
-
createWireServices,
|
|
154
|
-
auth: false,
|
|
155
|
-
data: () => job.data,
|
|
156
|
-
inheritedMiddleware: processorMeta.middleware,
|
|
157
|
-
wireMiddleware: queueWorker.middleware,
|
|
158
|
-
tags: queueWorker.tags,
|
|
159
|
-
wire,
|
|
160
|
-
}
|
|
161
|
-
)
|
|
162
|
-
|
|
163
|
-
logger.debug(
|
|
164
|
-
`Successfully processed job ${job.id} in queue ${job.queueName}`
|
|
165
|
-
)
|
|
166
|
-
|
|
167
|
-
return result
|
|
168
|
-
} catch (error: any) {
|
|
169
|
-
logger.error(
|
|
170
|
-
`Error processing job ${job.id} in queue ${job.queueName}:`,
|
|
171
|
-
error
|
|
172
|
-
)
|
|
173
|
-
|
|
174
|
-
const errorResponse = getErrorResponse(error)
|
|
175
|
-
if (errorResponse != null) {
|
|
176
|
-
logger.error('Processed error response:', errorResponse)
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
throw error
|
|
180
|
-
}
|
|
181
|
-
}
|
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
import type { CommonWireMeta } from '../../types/core.types.js'
|
|
2
|
-
import type { CorePikkuFunctionConfig } from '../../function/functions.types.js'
|
|
3
|
-
import type { QueueConfigMapping } from './validate-worker-config.js'
|
|
4
|
-
import type { Safe } from '../../classification/secret-value.js'
|
|
5
|
-
|
|
6
|
-
export interface PikkuWorkerConfig {
|
|
7
|
-
name?: string
|
|
8
|
-
/** Total worker concurrency. */
|
|
9
|
-
batchSize?: number
|
|
10
|
-
prefetch?: number
|
|
11
|
-
/** Milliseconds. */
|
|
12
|
-
pollInterval?: number
|
|
13
|
-
/** Seconds. */
|
|
14
|
-
visibilityTimeout?: number
|
|
15
|
-
/** Milliseconds. */
|
|
16
|
-
lockDuration?: number
|
|
17
|
-
/** Seconds. */
|
|
18
|
-
drainDelay?: number
|
|
19
|
-
/** Number of completed jobs to retain, not an age. */
|
|
20
|
-
removeOnComplete?: number
|
|
21
|
-
/** Number of failed jobs to retain, not an age. */
|
|
22
|
-
removeOnFail?: number
|
|
23
|
-
maxStalledCount?: number
|
|
24
|
-
autorun?: boolean
|
|
25
|
-
/** Must not exceed {@link batchSize}. */
|
|
26
|
-
groupConcurrency?: number | GroupConcurrencyConfig
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export interface GroupConcurrencyConfig {
|
|
30
|
-
/** Limit applied to any group without a matching tier. */
|
|
31
|
-
default: number
|
|
32
|
-
/** Keyed by {@link JobGroup.tier}. */
|
|
33
|
-
tiers?: Record<string, number>
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export interface JobGroup {
|
|
37
|
-
id: string
|
|
38
|
-
tier?: string
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export interface PikkuJobConfig {
|
|
42
|
-
retryAttempts?: number
|
|
43
|
-
/** Milliseconds. */
|
|
44
|
-
retryDelay?: number
|
|
45
|
-
retryBackoff?: 'linear' | 'exponential' | 'fixed'
|
|
46
|
-
deadLetterQueue?: string
|
|
47
|
-
/** Seconds. */
|
|
48
|
-
messageRetention?: number
|
|
49
|
-
/** Higher numbers run first. */
|
|
50
|
-
priority?: number
|
|
51
|
-
fifo?: boolean
|
|
52
|
-
/** Milliseconds. */
|
|
53
|
-
timeout?: number
|
|
54
|
-
/** Milliseconds. */
|
|
55
|
-
delay?: number
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
export interface ConfigValidationResult {
|
|
59
|
-
applied: Partial<PikkuWorkerConfig>
|
|
60
|
-
ignored: Partial<PikkuWorkerConfig>
|
|
61
|
-
warnings: string[]
|
|
62
|
-
fallbacks: { [key: string]: any }
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
export type QueueJobStatus =
|
|
66
|
-
'waiting' | 'active' | 'completed' | 'failed' | 'delayed'
|
|
67
|
-
|
|
68
|
-
export type QueueJobMetadata = {
|
|
69
|
-
progress?: number | string | object | undefined | boolean
|
|
70
|
-
attemptsMade?: number
|
|
71
|
-
maxAttempts?: number
|
|
72
|
-
processedAt?: Date
|
|
73
|
-
completedAt?: Date
|
|
74
|
-
failedAt?: Date
|
|
75
|
-
error?: string
|
|
76
|
-
createdAt: Date
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
export interface QueueJob<T = any, R = any> {
|
|
80
|
-
id: string
|
|
81
|
-
queueName: string
|
|
82
|
-
status: () => Promise<QueueJobStatus> | QueueJobStatus
|
|
83
|
-
data: T
|
|
84
|
-
result?: R
|
|
85
|
-
waitForCompletion?: (ttl?: number) => Promise<R>
|
|
86
|
-
metadata?: () => Promise<QueueJobMetadata> | QueueJobMetadata
|
|
87
|
-
pikkuUserId?: string
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
export interface JobOptions {
|
|
91
|
-
priority?: number
|
|
92
|
-
delay?: number
|
|
93
|
-
attempts?: number
|
|
94
|
-
backoff?: string | { type: string; delay?: number }
|
|
95
|
-
removeOnComplete?: number
|
|
96
|
-
removeOnFail?: number
|
|
97
|
-
jobId?: string
|
|
98
|
-
// knowledge: decisions/security/queue-jobs-carry-the-producers-pikku-user-id.md
|
|
99
|
-
pikkuUserId?: string
|
|
100
|
-
/** Counts against the worker's {@link PikkuWorkerConfig.groupConcurrency}. */
|
|
101
|
-
group?: JobGroup
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
export interface QueueService {
|
|
105
|
-
readonly supportsResults: boolean
|
|
106
|
-
|
|
107
|
-
add<T>(
|
|
108
|
-
queueName: string,
|
|
109
|
-
data: Safe<T>,
|
|
110
|
-
options?: JobOptions
|
|
111
|
-
): Promise<string>
|
|
112
|
-
|
|
113
|
-
getJob<T, R>(queueName: string, jobId: string): Promise<QueueJob<T, R> | null>
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
export interface QueueWorkers {
|
|
117
|
-
name: string
|
|
118
|
-
|
|
119
|
-
supportsResults: boolean
|
|
120
|
-
|
|
121
|
-
configMappings: QueueConfigMapping
|
|
122
|
-
|
|
123
|
-
registerQueues(): Promise<Record<string, ConfigValidationResult[]>>
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
export type QueueWorkersMeta = Record<
|
|
127
|
-
string,
|
|
128
|
-
CommonWireMeta & {
|
|
129
|
-
name: string
|
|
130
|
-
config?: PikkuWorkerConfig
|
|
131
|
-
}
|
|
132
|
-
>
|
|
133
|
-
|
|
134
|
-
export type CoreQueueWorker<
|
|
135
|
-
PikkuFunctionConfig extends CorePikkuFunctionConfig<any, any, any> =
|
|
136
|
-
CorePikkuFunctionConfig<any, any, any>,
|
|
137
|
-
> = {
|
|
138
|
-
/** The queue this worker consumes. Whoever enqueues a job names the same string, so it is the contract between producer and consumer. */
|
|
139
|
-
name: string
|
|
140
|
-
/** The function to run per job. Its `input` schema is the job payload's schema — a job that does not match is rejected before the body runs. */
|
|
141
|
-
func: PikkuFunctionConfig
|
|
142
|
-
/** Concurrency, retry and backoff, passed through to the queue service backing this worker. Defaults come from the service, not from here. */
|
|
143
|
-
config?: PikkuWorkerConfig
|
|
144
|
-
/** Names of error classes that mean the job is bad rather than the run — thrown, they fail the job permanently instead of being retried. */
|
|
145
|
-
errors?: string[]
|
|
146
|
-
/** Filters this worker in and out of a build — see the `tags` option on `pikku all`. It has no effect at runtime. */
|
|
147
|
-
tags?: string[]
|
|
148
|
-
/** Wraps every job. There is no request to read from, so this is for tracing, locking and teardown rather than auth. */
|
|
149
|
-
middleware?: PikkuFunctionConfig['middleware']
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
export interface PikkuQueue {
|
|
153
|
-
queueName: string
|
|
154
|
-
jobId: string
|
|
155
|
-
pikkuUserId?: string
|
|
156
|
-
updateProgress: (progress: number | string | object) => Promise<void>
|
|
157
|
-
/** Never returns — throws QueueJobFailedError. */
|
|
158
|
-
fail: (reason?: string) => Promise<void>
|
|
159
|
-
/** Never returns — throws QueueJobDiscardedError. */
|
|
160
|
-
discard: (reason?: string) => Promise<void>
|
|
161
|
-
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import type { ConfigValidationResult, CoreQueueWorker } from './queue.types.js'
|
|
2
|
-
import { getQueueWorkers } from './queue-runner.js'
|
|
3
|
-
import type { QueueConfigMapping } from './validate-worker-config.js'
|
|
4
|
-
import { validateWorkerConfig } from './validate-worker-config.js'
|
|
5
|
-
import type { Logger } from '../../services/logger.js'
|
|
6
|
-
|
|
7
|
-
export type QueueRegistrationCallback<T = any> = (
|
|
8
|
-
queueName: string,
|
|
9
|
-
processor: CoreQueueWorker
|
|
10
|
-
) => Promise<T>
|
|
11
|
-
|
|
12
|
-
export async function registerQueueWorkers<T = any>(
|
|
13
|
-
configMappings: QueueConfigMapping,
|
|
14
|
-
logger: Logger,
|
|
15
|
-
registerCallback: QueueRegistrationCallback<T>
|
|
16
|
-
): Promise<Record<string, ConfigValidationResult[]>> {
|
|
17
|
-
const configValidation: Record<string, ConfigValidationResult[]> = {}
|
|
18
|
-
const queueWorkers = getQueueWorkers()
|
|
19
|
-
|
|
20
|
-
for (const [queueName, processor] of queueWorkers) {
|
|
21
|
-
logger?.info(`Registering queue processor: ${queueName}`)
|
|
22
|
-
const validationResult = validateWorkerConfig(
|
|
23
|
-
configMappings,
|
|
24
|
-
processor.config
|
|
25
|
-
)
|
|
26
|
-
|
|
27
|
-
configValidation[queueName] = configValidation[queueName] || []
|
|
28
|
-
configValidation[queueName].push(validationResult)
|
|
29
|
-
|
|
30
|
-
if (validationResult.warnings.length > 0) {
|
|
31
|
-
logger?.warn(
|
|
32
|
-
`Configuration warnings for queue ${queueName}:`,
|
|
33
|
-
validationResult.warnings
|
|
34
|
-
)
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
try {
|
|
38
|
-
await registerCallback(queueName, processor)
|
|
39
|
-
logger?.info(`Successfully registered queue processor: ${queueName}`)
|
|
40
|
-
} catch (error) {
|
|
41
|
-
logger?.error(`Failed to register queue processor ${queueName}:`, error)
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
return configValidation
|
|
46
|
-
}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import type { Safe } from '../../classification/secret-value.js'
|
|
2
|
-
import type { Logger } from '../../services/logger.js'
|
|
3
|
-
import type { SecretService } from '../../services/secret-service.js'
|
|
4
|
-
import {
|
|
5
|
-
getQueueIdentitySecret,
|
|
6
|
-
signQueueIdentity,
|
|
7
|
-
warnQueueIdentitySecretMissing,
|
|
8
|
-
} from './queue-identity.js'
|
|
9
|
-
import type { JobOptions, QueueJob, QueueService } from './queue.types.js'
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Wraps any {@link QueueService} so `JobOptions.pikkuUserId` leaves the process
|
|
13
|
-
* as a signed claim that `runQueueJob` can verify.
|
|
14
|
-
*/
|
|
15
|
-
export class SignedQueueService implements QueueService {
|
|
16
|
-
constructor(
|
|
17
|
-
private readonly queueService: QueueService,
|
|
18
|
-
private readonly secrets: SecretService,
|
|
19
|
-
private readonly logger: Logger
|
|
20
|
-
) {}
|
|
21
|
-
|
|
22
|
-
get supportsResults(): boolean {
|
|
23
|
-
return this.queueService.supportsResults
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
public async add<T>(
|
|
27
|
-
queueName: string,
|
|
28
|
-
data: Safe<T>,
|
|
29
|
-
options?: JobOptions
|
|
30
|
-
): Promise<string> {
|
|
31
|
-
const pikkuUserId = options?.pikkuUserId
|
|
32
|
-
if (!pikkuUserId) {
|
|
33
|
-
return this.queueService.add(queueName, data, options)
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
const secret = await getQueueIdentitySecret(this.secrets)
|
|
37
|
-
if (!secret) {
|
|
38
|
-
warnQueueIdentitySecretMissing(this.logger)
|
|
39
|
-
const { pikkuUserId: _unsigned, ...rest } = options as JobOptions
|
|
40
|
-
return this.queueService.add(queueName, data, rest)
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
const signed = await signQueueIdentity(secret, pikkuUserId, {
|
|
44
|
-
queueName,
|
|
45
|
-
jobId: undefined,
|
|
46
|
-
data,
|
|
47
|
-
})
|
|
48
|
-
return this.queueService.add(queueName, data, {
|
|
49
|
-
...options,
|
|
50
|
-
pikkuUserId: signed,
|
|
51
|
-
})
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
public async getJob<T, R>(
|
|
55
|
-
queueName: string,
|
|
56
|
-
jobId: string
|
|
57
|
-
): Promise<QueueJob<T, R> | null> {
|
|
58
|
-
return this.queueService.getJob<T, R>(queueName, jobId)
|
|
59
|
-
}
|
|
60
|
-
}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import { describe, test } from 'node:test'
|
|
2
|
-
import assert from 'node:assert'
|
|
3
|
-
import { validateWorkerConfig } from './validate-worker-config.js'
|
|
4
|
-
import type { QueueConfigMapping } from './validate-worker-config.js'
|
|
5
|
-
|
|
6
|
-
const createTestMapping = (): QueueConfigMapping => ({
|
|
7
|
-
supported: {
|
|
8
|
-
concurrency: {
|
|
9
|
-
queueProperty: 'concurrency',
|
|
10
|
-
description: 'Number of concurrent workers',
|
|
11
|
-
},
|
|
12
|
-
maxRetries: {
|
|
13
|
-
queueProperty: 'maxRetries',
|
|
14
|
-
description: 'Maximum retry attempts',
|
|
15
|
-
},
|
|
16
|
-
},
|
|
17
|
-
unsupported: {
|
|
18
|
-
rateLimitMax: {
|
|
19
|
-
reason: 'Not supported',
|
|
20
|
-
explanation: 'This queue does not support rate limiting',
|
|
21
|
-
},
|
|
22
|
-
},
|
|
23
|
-
fallbacks: {
|
|
24
|
-
retryDelay: {
|
|
25
|
-
reason: 'Partial support',
|
|
26
|
-
explanation: 'Uses fixed delay instead of exponential',
|
|
27
|
-
fallbackValue: '1000ms fixed',
|
|
28
|
-
},
|
|
29
|
-
},
|
|
30
|
-
})
|
|
31
|
-
|
|
32
|
-
describe('validateWorkerConfig', () => {
|
|
33
|
-
test('should return empty results for empty config', () => {
|
|
34
|
-
const mapping = createTestMapping()
|
|
35
|
-
const result = validateWorkerConfig(mapping, {})
|
|
36
|
-
assert.deepStrictEqual(result.applied, {})
|
|
37
|
-
assert.deepStrictEqual(result.ignored, {})
|
|
38
|
-
assert.deepStrictEqual(result.warnings, [])
|
|
39
|
-
assert.deepStrictEqual(result.fallbacks, {})
|
|
40
|
-
})
|
|
41
|
-
|
|
42
|
-
test('should return empty results for undefined config', () => {
|
|
43
|
-
const mapping = createTestMapping()
|
|
44
|
-
const result = validateWorkerConfig(mapping)
|
|
45
|
-
assert.deepStrictEqual(result.applied, {})
|
|
46
|
-
assert.deepStrictEqual(result.ignored, {})
|
|
47
|
-
})
|
|
48
|
-
|
|
49
|
-
test('should apply supported configurations', () => {
|
|
50
|
-
const mapping = createTestMapping()
|
|
51
|
-
const result = validateWorkerConfig(mapping, { concurrency: 5 } as any)
|
|
52
|
-
assert.deepStrictEqual(result.applied, { concurrency: 5 })
|
|
53
|
-
assert.deepStrictEqual(result.ignored, {})
|
|
54
|
-
assert.strictEqual(result.warnings.length, 0)
|
|
55
|
-
})
|
|
56
|
-
|
|
57
|
-
test('should ignore unsupported configurations with warning', () => {
|
|
58
|
-
const mapping = createTestMapping()
|
|
59
|
-
const result = validateWorkerConfig(mapping, { rateLimitMax: 100 } as any)
|
|
60
|
-
assert.deepStrictEqual(result.ignored, { rateLimitMax: 100 })
|
|
61
|
-
assert.strictEqual(result.warnings.length, 1)
|
|
62
|
-
assert.ok(result.warnings[0].includes('Not supported'))
|
|
63
|
-
})
|
|
64
|
-
|
|
65
|
-
test('should handle fallback configurations', () => {
|
|
66
|
-
const mapping = createTestMapping()
|
|
67
|
-
const result = validateWorkerConfig(mapping, { retryDelay: 2000 } as any)
|
|
68
|
-
assert.deepStrictEqual(result.applied, { retryDelay: 2000 })
|
|
69
|
-
assert.deepStrictEqual(result.fallbacks, { retryDelay: '1000ms fixed' })
|
|
70
|
-
assert.strictEqual(result.warnings.length, 1)
|
|
71
|
-
assert.ok(result.warnings[0].includes('Partial support'))
|
|
72
|
-
})
|
|
73
|
-
|
|
74
|
-
test('should warn about unknown configurations', () => {
|
|
75
|
-
const mapping = createTestMapping()
|
|
76
|
-
const result = validateWorkerConfig(mapping, {
|
|
77
|
-
unknownOption: 'val',
|
|
78
|
-
} as any)
|
|
79
|
-
assert.deepStrictEqual(result.ignored, { unknownOption: 'val' })
|
|
80
|
-
assert.strictEqual(result.warnings.length, 1)
|
|
81
|
-
assert.ok(result.warnings[0].includes('Unknown configuration'))
|
|
82
|
-
})
|
|
83
|
-
|
|
84
|
-
test('should skip undefined values', () => {
|
|
85
|
-
const mapping = createTestMapping()
|
|
86
|
-
const result = validateWorkerConfig(mapping, {
|
|
87
|
-
concurrency: undefined,
|
|
88
|
-
} as any)
|
|
89
|
-
assert.deepStrictEqual(result.applied, {})
|
|
90
|
-
})
|
|
91
|
-
|
|
92
|
-
test('should handle mixed supported and unsupported configs', () => {
|
|
93
|
-
const mapping = createTestMapping()
|
|
94
|
-
const result = validateWorkerConfig(mapping, {
|
|
95
|
-
concurrency: 3,
|
|
96
|
-
maxRetries: 5,
|
|
97
|
-
rateLimitMax: 100,
|
|
98
|
-
retryDelay: 1000,
|
|
99
|
-
} as any)
|
|
100
|
-
assert.deepStrictEqual(result.applied, {
|
|
101
|
-
concurrency: 3,
|
|
102
|
-
maxRetries: 5,
|
|
103
|
-
retryDelay: 1000,
|
|
104
|
-
})
|
|
105
|
-
assert.deepStrictEqual(result.ignored, { rateLimitMax: 100 })
|
|
106
|
-
assert.strictEqual(result.warnings.length, 2)
|
|
107
|
-
})
|
|
108
|
-
})
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
PikkuWorkerConfig,
|
|
3
|
-
ConfigValidationResult,
|
|
4
|
-
} from './queue.types.js'
|
|
5
|
-
|
|
6
|
-
export interface QueueConfigMapping {
|
|
7
|
-
supported: Partial<
|
|
8
|
-
Record<
|
|
9
|
-
keyof PikkuWorkerConfig,
|
|
10
|
-
{
|
|
11
|
-
queueProperty?: string
|
|
12
|
-
transform?: (value: any) => any
|
|
13
|
-
description: string
|
|
14
|
-
}
|
|
15
|
-
>
|
|
16
|
-
>
|
|
17
|
-
|
|
18
|
-
/** Rejected: the value is dropped and a warning raised. */
|
|
19
|
-
unsupported: Partial<
|
|
20
|
-
Record<
|
|
21
|
-
keyof PikkuWorkerConfig,
|
|
22
|
-
{
|
|
23
|
-
reason: string
|
|
24
|
-
explanation: string
|
|
25
|
-
}
|
|
26
|
-
>
|
|
27
|
-
>
|
|
28
|
-
|
|
29
|
-
/** Applied anyway, but with a warning describing the substituted behaviour. */
|
|
30
|
-
fallbacks: Partial<
|
|
31
|
-
Record<
|
|
32
|
-
keyof PikkuWorkerConfig,
|
|
33
|
-
{
|
|
34
|
-
reason: string
|
|
35
|
-
explanation: string
|
|
36
|
-
fallbackValue: string
|
|
37
|
-
}
|
|
38
|
-
>
|
|
39
|
-
>
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export function validateWorkerConfig(
|
|
43
|
-
configMapping: QueueConfigMapping,
|
|
44
|
-
config: PikkuWorkerConfig = {}
|
|
45
|
-
): ConfigValidationResult {
|
|
46
|
-
const applied: Partial<PikkuWorkerConfig> = {}
|
|
47
|
-
const ignored: Partial<PikkuWorkerConfig> = {}
|
|
48
|
-
const warnings: string[] = []
|
|
49
|
-
const fallbacks: { [key: string]: any } = {}
|
|
50
|
-
|
|
51
|
-
for (const [key, value] of Object.entries(config)) {
|
|
52
|
-
if (value === undefined) continue
|
|
53
|
-
|
|
54
|
-
const configKey = key as keyof PikkuWorkerConfig
|
|
55
|
-
|
|
56
|
-
if (configKey in configMapping.supported) {
|
|
57
|
-
applied[configKey] = value
|
|
58
|
-
continue
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
if (configKey in configMapping.fallbacks) {
|
|
62
|
-
const fallbackMapping = configMapping.fallbacks[configKey]!
|
|
63
|
-
applied[configKey] = value
|
|
64
|
-
fallbacks[key] = fallbackMapping.fallbackValue
|
|
65
|
-
warnings.push(
|
|
66
|
-
`${key}: ${fallbackMapping.reason}. ${fallbackMapping.explanation}`
|
|
67
|
-
)
|
|
68
|
-
continue
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
if (configKey in configMapping.unsupported) {
|
|
72
|
-
ignored[configKey] = value
|
|
73
|
-
const mapping = configMapping.unsupported[configKey]!
|
|
74
|
-
warnings.push(`${key}: ${mapping.reason}. ${mapping.explanation}`)
|
|
75
|
-
continue
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
ignored[configKey] = value
|
|
79
|
-
warnings.push(
|
|
80
|
-
`${key}: Unknown configuration option for this queue implementation`
|
|
81
|
-
)
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
return {
|
|
85
|
-
applied,
|
|
86
|
-
ignored,
|
|
87
|
-
warnings,
|
|
88
|
-
fallbacks,
|
|
89
|
-
}
|
|
90
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import type { CoreSystemRoles } from './role.types.js'
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* No-op function for declaring system roles.
|
|
5
|
-
* This exists purely for TypeScript type checking and will be tree-shaken.
|
|
6
|
-
* The CLI extracts metadata via AST parsing and generates a `SystemRoleName`
|
|
7
|
-
* union, so a persona naming an undeclared role fails the build.
|
|
8
|
-
*
|
|
9
|
-
* A system role is a role that ships with the product: the console may grant
|
|
10
|
-
* it, but cannot rename, re-scope or delete it. Roles an admin composes in the
|
|
11
|
-
* console are unaffected and are not declared here.
|
|
12
|
-
*
|
|
13
|
-
* Removal is deliberately not destructive. Deleting a declaration leaves the
|
|
14
|
-
* row in the store, marked undeclared and inert, until `pikku roles prune` —
|
|
15
|
-
* the same additive contract `defineScope` has, and for the same reason: a
|
|
16
|
-
* mid-deploy revocation is not something a code edit should be able to cause.
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
* ```typescript
|
|
20
|
-
* defineSystemRole({
|
|
21
|
-
* buyer: {
|
|
22
|
-
* displayName: 'Buyer',
|
|
23
|
-
* description: 'Can browse the catalogue and place orders',
|
|
24
|
-
* scopes: ['catalogue:read', 'orders:create'],
|
|
25
|
-
* },
|
|
26
|
-
* admin: {
|
|
27
|
-
* description: 'Everything',
|
|
28
|
-
* scopes: ['admin'],
|
|
29
|
-
* },
|
|
30
|
-
* })
|
|
31
|
-
* ```
|
|
32
|
-
*/
|
|
33
|
-
export const defineSystemRole = (_config: CoreSystemRoles): void => {}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export { defineSystemRole } from './define-system-role.js'
|
|
2
|
-
export {
|
|
3
|
-
flattenSystemRoleDefinitions,
|
|
4
|
-
validateAndBuildSystemRoleDefinitionsMeta,
|
|
5
|
-
} from './validate-role-definitions.js'
|
|
6
|
-
export type {
|
|
7
|
-
CoreSystemRole,
|
|
8
|
-
CoreSystemRoles,
|
|
9
|
-
SystemRole,
|
|
10
|
-
SystemRoleDefinitionMeta,
|
|
11
|
-
SystemRoleDefinitions,
|
|
12
|
-
SystemRoleDefinitionsMeta,
|
|
13
|
-
} from './role.types.js'
|