reqon-dsl 0.2.0 → 0.3.0
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 +7 -0
- package/README.md +22 -0
- package/dist/ast/nodes.d.ts +83 -4
- package/dist/ast/nodes.js +14 -0
- package/dist/auth/circuit-breaker.js +7 -6
- package/dist/auth/rate-limiter.d.ts +4 -0
- package/dist/auth/rate-limiter.js +9 -16
- package/dist/cli.d.ts +13 -0
- package/dist/cli.js +84 -4
- package/dist/config/constants.d.ts +141 -0
- package/dist/config/constants.js +128 -0
- package/dist/config/index.d.ts +4 -0
- package/dist/config/index.js +4 -0
- package/dist/control/index.d.ts +2 -0
- package/dist/control/index.js +1 -0
- package/dist/control/server.d.ts +88 -0
- package/dist/control/server.js +238 -0
- package/dist/control/types.d.ts +55 -0
- package/dist/control/types.js +7 -0
- package/dist/debug/cli-debugger.d.ts +17 -0
- package/dist/debug/cli-debugger.js +180 -0
- package/dist/debug/controller.d.ts +94 -0
- package/dist/debug/controller.js +45 -0
- package/dist/debug/index.d.ts +6 -0
- package/dist/debug/index.js +5 -0
- package/dist/errors/index.d.ts +67 -0
- package/dist/errors/index.js +89 -1
- package/dist/execution/index.d.ts +1 -1
- package/dist/execution/state.d.ts +24 -0
- package/dist/index.d.ts +21 -1
- package/dist/index.js +33 -2
- package/dist/interpreter/context.d.ts +14 -0
- package/dist/interpreter/context.js +15 -0
- package/dist/interpreter/evaluator.d.ts +63 -1
- package/dist/interpreter/evaluator.js +186 -39
- package/dist/interpreter/executor.d.ts +70 -14
- package/dist/interpreter/executor.js +503 -174
- package/dist/interpreter/fetch-handler.d.ts +9 -0
- package/dist/interpreter/fetch-handler.js +133 -24
- package/dist/interpreter/http.d.ts +5 -0
- package/dist/interpreter/http.js +26 -12
- package/dist/interpreter/index.d.ts +3 -1
- package/dist/interpreter/index.js +2 -0
- package/dist/interpreter/pagination.d.ts +11 -2
- package/dist/interpreter/pagination.js +95 -31
- package/dist/interpreter/signals.d.ts +8 -0
- package/dist/interpreter/signals.js +12 -0
- package/dist/interpreter/source-manager.d.ts +75 -0
- package/dist/interpreter/source-manager.js +157 -0
- package/dist/interpreter/step-handlers/apply-handler.d.ts +29 -0
- package/dist/interpreter/step-handlers/apply-handler.js +79 -0
- package/dist/interpreter/step-handlers/for-handler.d.ts +13 -0
- package/dist/interpreter/step-handlers/for-handler.js +71 -4
- package/dist/interpreter/step-handlers/index.d.ts +4 -2
- package/dist/interpreter/step-handlers/index.js +4 -2
- package/dist/interpreter/step-handlers/match-handler.d.ts +9 -0
- package/dist/interpreter/step-handlers/match-handler.js +43 -16
- package/dist/interpreter/step-handlers/pause-handler.d.ts +52 -0
- package/dist/interpreter/step-handlers/pause-handler.js +87 -0
- package/dist/interpreter/step-handlers/store-handler.d.ts +11 -1
- package/dist/interpreter/step-handlers/store-handler.js +45 -13
- package/dist/interpreter/step-handlers/types.d.ts +3 -0
- package/dist/interpreter/step-handlers/validate-handler.d.ts +2 -1
- package/dist/interpreter/step-handlers/validate-handler.js +4 -2
- package/dist/interpreter/step-handlers/webhook-handler.d.ts +3 -0
- package/dist/interpreter/step-handlers/webhook-handler.js +18 -2
- package/dist/interpreter/store-manager.d.ts +46 -0
- package/dist/interpreter/store-manager.js +66 -0
- package/dist/lexer/index.d.ts +11 -4
- package/dist/lexer/index.js +11 -4
- package/dist/lexer/tokens.d.ts +17 -1
- package/dist/lexer/tokens.js +36 -0
- package/dist/mcp/index.d.ts +11 -0
- package/dist/mcp/index.js +11 -0
- package/dist/mcp/server.d.ts +17 -0
- package/dist/mcp/server.js +451 -0
- package/dist/oas/index.d.ts +2 -0
- package/dist/oas/index.js +1 -0
- package/dist/oas/mock-generator.d.ts +12 -0
- package/dist/oas/mock-generator.js +187 -0
- package/dist/observability/events.d.ts +244 -0
- package/dist/observability/events.js +90 -0
- package/dist/observability/index.d.ts +15 -0
- package/dist/observability/index.js +12 -0
- package/dist/observability/logger.d.ts +106 -0
- package/dist/observability/logger.js +259 -0
- package/dist/observability/otel.d.ts +135 -0
- package/dist/observability/otel.js +386 -0
- package/dist/parser/action-parser.d.ts +105 -0
- package/dist/parser/action-parser.js +645 -0
- package/dist/parser/expressions.d.ts +13 -0
- package/dist/parser/expressions.js +72 -2
- package/dist/parser/fetch-parser.d.ts +27 -0
- package/dist/parser/fetch-parser.js +269 -0
- package/dist/parser/index.d.ts +17 -0
- package/dist/parser/index.js +17 -0
- package/dist/parser/parser.d.ts +44 -46
- package/dist/parser/parser.js +122 -1070
- package/dist/parser/pipeline-parser.d.ts +12 -0
- package/dist/parser/pipeline-parser.js +52 -0
- package/dist/parser/schedule-parser.d.ts +7 -0
- package/dist/parser/schedule-parser.js +137 -0
- package/dist/parser/source-parser.d.ts +9 -0
- package/dist/parser/source-parser.js +151 -0
- package/dist/pause/index.d.ts +14 -0
- package/dist/pause/index.js +11 -0
- package/dist/pause/manager.d.ts +118 -0
- package/dist/pause/manager.js +245 -0
- package/dist/pause/state.d.ts +93 -0
- package/dist/pause/state.js +103 -0
- package/dist/pause/store.d.ts +61 -0
- package/dist/pause/store.js +156 -0
- package/dist/plugin.d.ts +9 -12
- package/dist/plugin.js +10 -13
- package/dist/stores/factory.d.ts +1 -1
- package/dist/stores/factory.js +3 -2
- package/dist/stores/file.d.ts +26 -0
- package/dist/stores/file.js +64 -10
- package/dist/stores/index.d.ts +16 -1
- package/dist/stores/index.js +16 -1
- package/dist/stores/memory.d.ts +4 -0
- package/dist/stores/memory.js +11 -0
- package/dist/stores/types.d.ts +17 -0
- package/dist/stores/types.js +12 -0
- package/dist/trace/index.d.ts +16 -0
- package/dist/trace/index.js +12 -0
- package/dist/trace/recorder.d.ts +71 -0
- package/dist/trace/recorder.js +144 -0
- package/dist/trace/replay.d.ts +132 -0
- package/dist/trace/replay.js +264 -0
- package/dist/trace/state.d.ts +102 -0
- package/dist/trace/state.js +86 -0
- package/dist/trace/store.d.ts +69 -0
- package/dist/trace/store.js +225 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/type-guards.d.ts +58 -0
- package/dist/utils/type-guards.js +92 -0
- package/dist/webhook/server.js +7 -6
- package/package.json +55 -6
- package/.claude/settings.local.json +0 -31
- package/.claude/skills/api-integration.md +0 -125
- package/.claude/skills/database-schema.md +0 -51
- package/.claude/skills/dsl-design.md +0 -80
- package/.claude/skills/property-testing.md +0 -143
- package/.claude/skills/reqon/SKILL.md +0 -44
- package/.claude/skills/reqon/references/examples.md +0 -206
- package/.claude/skills/reqon/references/syntax.md +0 -263
- package/.claude/skills/vscode-extension.md +0 -113
- package/.github/dependabot.yml +0 -32
- package/.github/pull_request_template.md +0 -21
- package/.github/workflows/ci.yml +0 -174
- package/.github/workflows/release.yml +0 -73
- package/CLAUDE.md +0 -72
- package/CONTRIBUTING.md +0 -161
- package/TODO.md +0 -51
- package/dist/auth/auth.test.d.ts +0 -1
- package/dist/auth/auth.test.js +0 -255
- package/dist/errors/errors.test.d.ts +0 -1
- package/dist/errors/errors.test.js +0 -165
- package/dist/execution/execution.test.d.ts +0 -1
- package/dist/execution/execution.test.js +0 -246
- package/dist/integration.test.d.ts +0 -1
- package/dist/integration.test.js +0 -168
- package/dist/interpreter/evaluator.test.d.ts +0 -1
- package/dist/interpreter/evaluator.test.js +0 -512
- package/dist/interpreter/http.test.d.ts +0 -1
- package/dist/interpreter/http.test.js +0 -299
- package/dist/interpreter/progress.test.d.ts +0 -1
- package/dist/interpreter/progress.test.js +0 -216
- package/dist/interpreter/schema-matcher.test.d.ts +0 -1
- package/dist/interpreter/schema-matcher.test.js +0 -122
- package/dist/lexer/lexer.d.ts +0 -24
- package/dist/lexer/lexer.js +0 -264
- package/dist/lexer/lexer.test.d.ts +0 -1
- package/dist/lexer/lexer.test.js +0 -259
- package/dist/loader/loader.test.d.ts +0 -1
- package/dist/loader/loader.test.js +0 -287
- package/dist/oas/oas.test.d.ts +0 -1
- package/dist/oas/oas.test.js +0 -218
- package/dist/parser/expressions.test.d.ts +0 -1
- package/dist/parser/expressions.test.js +0 -378
- package/dist/parser/match.test.d.ts +0 -1
- package/dist/parser/match.test.js +0 -254
- package/dist/parser/parser.test.d.ts +0 -1
- package/dist/parser/parser.test.js +0 -333
- package/dist/parser/schedule.test.d.ts +0 -1
- package/dist/parser/schedule.test.js +0 -241
- package/dist/scheduler/cron-parser.test.d.ts +0 -1
- package/dist/scheduler/cron-parser.test.js +0 -188
- package/dist/stores/file.test.d.ts +0 -1
- package/dist/stores/file.test.js +0 -165
- package/dist/stores/memory.test.d.ts +0 -1
- package/dist/stores/memory.test.js +0 -157
- package/dist/stores/stores.test.d.ts +0 -1
- package/dist/stores/stores.test.js +0 -158
- package/dist/sync/sync.test.d.ts +0 -1
- package/dist/sync/sync.test.js +0 -221
- package/docusaurus/README.md +0 -41
- package/docusaurus/docs/advanced/execution-state.md +0 -283
- package/docusaurus/docs/advanced/extending-reqon.md +0 -388
- package/docusaurus/docs/advanced/multi-file-missions.md +0 -250
- package/docusaurus/docs/advanced/parallel-execution.md +0 -353
- package/docusaurus/docs/api-reference.md +0 -443
- package/docusaurus/docs/authentication/api-key.md +0 -339
- package/docusaurus/docs/authentication/basic.md +0 -276
- package/docusaurus/docs/authentication/bearer.md +0 -282
- package/docusaurus/docs/authentication/oauth2.md +0 -317
- package/docusaurus/docs/authentication/overview.md +0 -251
- package/docusaurus/docs/cli.md +0 -229
- package/docusaurus/docs/core-concepts/actions.md +0 -286
- package/docusaurus/docs/core-concepts/missions.md +0 -264
- package/docusaurus/docs/core-concepts/schemas.md +0 -353
- package/docusaurus/docs/core-concepts/sources.md +0 -339
- package/docusaurus/docs/core-concepts/stores.md +0 -332
- package/docusaurus/docs/dsl-syntax/expressions.md +0 -361
- package/docusaurus/docs/dsl-syntax/fetch.md +0 -293
- package/docusaurus/docs/dsl-syntax/for-loops.md +0 -324
- package/docusaurus/docs/dsl-syntax/map.md +0 -345
- package/docusaurus/docs/dsl-syntax/match.md +0 -387
- package/docusaurus/docs/dsl-syntax/pipelines.md +0 -397
- package/docusaurus/docs/dsl-syntax/validate.md +0 -401
- package/docusaurus/docs/error-handling/dead-letter-queues.md +0 -399
- package/docusaurus/docs/error-handling/flow-control.md +0 -337
- package/docusaurus/docs/error-handling/retry-strategies.md +0 -368
- package/docusaurus/docs/examples.md +0 -488
- package/docusaurus/docs/getting-started.md +0 -256
- package/docusaurus/docs/http/circuit-breaker.md +0 -401
- package/docusaurus/docs/http/incremental-sync.md +0 -394
- package/docusaurus/docs/http/pagination.md +0 -361
- package/docusaurus/docs/http/rate-limiting.md +0 -383
- package/docusaurus/docs/http/requests.md +0 -328
- package/docusaurus/docs/http/retry.md +0 -402
- package/docusaurus/docs/intro.md +0 -90
- package/docusaurus/docs/openapi/loading-specs.md +0 -305
- package/docusaurus/docs/openapi/operation-calls.md +0 -314
- package/docusaurus/docs/openapi/overview.md +0 -212
- package/docusaurus/docs/openapi/response-validation.md +0 -344
- package/docusaurus/docs/scheduling/cron.md +0 -305
- package/docusaurus/docs/scheduling/daemon-mode.md +0 -317
- package/docusaurus/docs/scheduling/intervals.md +0 -289
- package/docusaurus/docs/scheduling/overview.md +0 -231
- package/docusaurus/docs/stores/custom-adapters.md +0 -376
- package/docusaurus/docs/stores/file.md +0 -236
- package/docusaurus/docs/stores/memory.md +0 -193
- package/docusaurus/docs/stores/overview.md +0 -274
- package/docusaurus/docs/stores/postgrest.md +0 -316
- package/docusaurus/docusaurus.config.ts +0 -148
- package/docusaurus/package-lock.json +0 -18029
- package/docusaurus/package.json +0 -47
- package/docusaurus/sidebars.ts +0 -155
- package/docusaurus/src/components/HomepageFeatures/index.tsx +0 -105
- package/docusaurus/src/components/HomepageFeatures/styles.module.css +0 -12
- package/docusaurus/src/css/custom.css +0 -169
- package/docusaurus/src/pages/index.module.css +0 -48
- package/docusaurus/src/pages/index.tsx +0 -110
- package/docusaurus/src/pages/markdown-page.md +0 -7
- package/docusaurus/static/.nojekyll +0 -0
- package/docusaurus/static/img/docusaurus-social-card.jpg +0 -0
- package/docusaurus/static/img/docusaurus.png +0 -0
- package/docusaurus/static/img/favicon.ico +0 -0
- package/docusaurus/static/img/logo.svg +0 -10
- package/docusaurus/static/img/undraw_docusaurus_mountain.svg +0 -171
- package/docusaurus/static/img/undraw_docusaurus_react.svg +0 -170
- package/docusaurus/static/img/undraw_docusaurus_tree.svg +0 -40
- package/docusaurus/tsconfig.json +0 -8
- package/examples/README.md +0 -112
- package/examples/error-handling/README.md +0 -150
- package/examples/error-handling/payment-processor.vague +0 -287
- package/examples/github-sync/README.md +0 -74
- package/examples/github-sync/fetch-issues.vague +0 -47
- package/examples/github-sync/fetch-prs.vague +0 -40
- package/examples/github-sync/mission.vague +0 -101
- package/examples/github-sync/normalize.vague +0 -70
- package/examples/jsonplaceholder/README.md +0 -28
- package/examples/jsonplaceholder/posts.vague +0 -48
- package/examples/petstore/README.md +0 -35
- package/examples/petstore/openapi.yaml +0 -97
- package/examples/petstore/sync.vague +0 -52
- package/examples/temporal-comparison/README.md +0 -297
- package/examples/temporal-comparison/reconciliation.vague +0 -355
- package/examples/temporal-comparison/temporal/activities/index.ts +0 -8
- package/examples/temporal-comparison/temporal/activities/shipstation.ts +0 -225
- package/examples/temporal-comparison/temporal/activities/shopify.ts +0 -257
- package/examples/temporal-comparison/temporal/activities/storage.ts +0 -198
- package/examples/temporal-comparison/temporal/activities/stripe.ts +0 -169
- package/examples/temporal-comparison/temporal/activities/validation.ts +0 -205
- package/examples/temporal-comparison/temporal/client/schedule.ts +0 -218
- package/examples/temporal-comparison/temporal/config/retry.ts +0 -63
- package/examples/temporal-comparison/temporal/types/index.ts +0 -129
- package/examples/temporal-comparison/temporal/workers/main.ts +0 -130
- package/examples/temporal-comparison/temporal/workflows/orderReconciliation.ts +0 -262
- package/examples/xero/README.md +0 -88
- package/examples/xero/invoices.vague +0 -189
- package/src/api-integration.test.ts +0 -954
- package/src/ast/index.ts +0 -1
- package/src/ast/nodes.ts +0 -310
- package/src/auth/auth.test.ts +0 -326
- package/src/auth/circuit-breaker.test.ts +0 -390
- package/src/auth/circuit-breaker.ts +0 -379
- package/src/auth/credentials.test.ts +0 -273
- package/src/auth/credentials.ts +0 -246
- package/src/auth/index.ts +0 -40
- package/src/auth/oauth2-provider.ts +0 -177
- package/src/auth/rate-limiter.ts +0 -459
- package/src/auth/token-store.ts +0 -177
- package/src/auth/types.ts +0 -159
- package/src/benchmark/e2e.bench.ts +0 -288
- package/src/benchmark/evaluator.bench.ts +0 -331
- package/src/benchmark/fixtures.ts +0 -295
- package/src/benchmark/index.ts +0 -108
- package/src/benchmark/lexer.bench.ts +0 -69
- package/src/benchmark/parser.bench.ts +0 -103
- package/src/benchmark/resilience.bench.ts +0 -193
- package/src/benchmark/store.bench.ts +0 -147
- package/src/benchmark/utils.ts +0 -230
- package/src/cli.ts +0 -313
- package/src/errors/errors.test.ts +0 -234
- package/src/errors/index.ts +0 -223
- package/src/execution/execution.test.ts +0 -307
- package/src/execution/index.ts +0 -21
- package/src/execution/state.ts +0 -207
- package/src/execution/store.ts +0 -188
- package/src/index.ts +0 -169
- package/src/integration.test.ts +0 -192
- package/src/interpreter/context.ts +0 -57
- package/src/interpreter/evaluator.test.ts +0 -796
- package/src/interpreter/evaluator.ts +0 -245
- package/src/interpreter/executor.ts +0 -946
- package/src/interpreter/fetch-handler.ts +0 -302
- package/src/interpreter/http.test.ts +0 -423
- package/src/interpreter/http.ts +0 -308
- package/src/interpreter/index.ts +0 -32
- package/src/interpreter/pagination.ts +0 -207
- package/src/interpreter/progress.test.ts +0 -276
- package/src/interpreter/schema-matcher.test.ts +0 -160
- package/src/interpreter/schema-matcher.ts +0 -168
- package/src/interpreter/signals.ts +0 -73
- package/src/interpreter/step-handlers/for-handler.ts +0 -65
- package/src/interpreter/step-handlers/index.ts +0 -17
- package/src/interpreter/step-handlers/map-handler.ts +0 -24
- package/src/interpreter/step-handlers/match-handler.ts +0 -101
- package/src/interpreter/step-handlers/store-handler.ts +0 -78
- package/src/interpreter/step-handlers/types.ts +0 -17
- package/src/interpreter/step-handlers/validate-handler.ts +0 -30
- package/src/interpreter/step-handlers/webhook-handler.ts +0 -142
- package/src/lexer/index.ts +0 -18
- package/src/lexer/lexer.test.ts +0 -316
- package/src/lexer/tokens.ts +0 -179
- package/src/loader/index.ts +0 -288
- package/src/loader/loader.test.ts +0 -360
- package/src/oas/index.ts +0 -4
- package/src/oas/loader.ts +0 -126
- package/src/oas/oas.test.ts +0 -254
- package/src/oas/validator.ts +0 -299
- package/src/parser/base.ts +0 -124
- package/src/parser/expressions.test.ts +0 -525
- package/src/parser/expressions.ts +0 -314
- package/src/parser/index.ts +0 -3
- package/src/parser/match.test.ts +0 -296
- package/src/parser/parser.test.ts +0 -739
- package/src/parser/parser.ts +0 -1469
- package/src/parser/schedule.test.ts +0 -287
- package/src/parser/webhook.test.ts +0 -248
- package/src/plugin.ts +0 -83
- package/src/scheduler/cron-parser.test.ts +0 -236
- package/src/scheduler/cron-parser.ts +0 -236
- package/src/scheduler/index.ts +0 -10
- package/src/scheduler/scheduler.ts +0 -443
- package/src/scheduler/types.ts +0 -71
- package/src/stores/factory.ts +0 -104
- package/src/stores/file.test.ts +0 -276
- package/src/stores/file.ts +0 -211
- package/src/stores/index.ts +0 -6
- package/src/stores/memory.test.ts +0 -238
- package/src/stores/memory.ts +0 -63
- package/src/stores/postgrest.test.ts +0 -488
- package/src/stores/postgrest.ts +0 -263
- package/src/stores/stores.test.ts +0 -197
- package/src/stores/types.ts +0 -58
- package/src/sync/index.ts +0 -16
- package/src/sync/state.ts +0 -126
- package/src/sync/store.ts +0 -139
- package/src/sync/sync.test.ts +0 -271
- package/src/utils/async.ts +0 -10
- package/src/utils/file.ts +0 -106
- package/src/utils/index.ts +0 -14
- package/src/utils/logger.ts +0 -53
- package/src/utils/path.ts +0 -47
- package/src/webhook/index.ts +0 -15
- package/src/webhook/server.test.ts +0 -253
- package/src/webhook/server.ts +0 -389
- package/src/webhook/store.ts +0 -239
- package/src/webhook/types.ts +0 -93
- package/tsconfig.json +0 -17
- package/vitest.config.ts +0 -39
|
@@ -1,6 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ---
|
|
3
|
+
* purpose: Execution context - scoped state for variables, stores, sources
|
|
4
|
+
* exports:
|
|
5
|
+
* - ExecutionContext - interface for execution state
|
|
6
|
+
* - createContext, childContext - context factory functions
|
|
7
|
+
* - getVariable, setVariable - scoped variable access
|
|
8
|
+
* related:
|
|
9
|
+
* - ./executor.ts - creates and uses contexts
|
|
10
|
+
* - ./evaluator.ts - reads from context during expression evaluation
|
|
11
|
+
* - ../stores/types.ts - StoreAdapter interface
|
|
12
|
+
* ---
|
|
13
|
+
*/
|
|
1
14
|
export function createContext() {
|
|
2
15
|
return {
|
|
3
16
|
stores: new Map(),
|
|
17
|
+
storeTypes: new Map(),
|
|
4
18
|
sources: new Map(),
|
|
5
19
|
schemas: new Map(),
|
|
6
20
|
variables: new Map(),
|
|
@@ -9,6 +23,7 @@ export function createContext() {
|
|
|
9
23
|
export function childContext(parent) {
|
|
10
24
|
return {
|
|
11
25
|
stores: parent.stores,
|
|
26
|
+
storeTypes: parent.storeTypes,
|
|
12
27
|
sources: parent.sources,
|
|
13
28
|
schemas: parent.schemas,
|
|
14
29
|
variables: new Map(),
|
|
@@ -1,5 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ---
|
|
3
|
+
* purpose: Expression evaluator - evaluates Vague/Reqon expressions at runtime
|
|
4
|
+
* inputs:
|
|
5
|
+
* - Expression AST node (literals, identifiers, binary ops, function calls)
|
|
6
|
+
* - ExecutionContext with variables, response, stores
|
|
7
|
+
* - Optional current record for iteration contexts
|
|
8
|
+
* outputs:
|
|
9
|
+
* - Evaluated value (any JSON-compatible type)
|
|
10
|
+
* related:
|
|
11
|
+
* - ./context.ts - provides variable bindings
|
|
12
|
+
* - ./executor.ts - calls evaluate() for step expressions
|
|
13
|
+
* - ../parser/expressions.ts - IsExpression, ObjectLiteralExpression types
|
|
14
|
+
* ---
|
|
15
|
+
*/
|
|
1
16
|
import type { Expression } from 'vague-lang';
|
|
2
17
|
import type { ExecutionContext } from './context.js';
|
|
3
|
-
|
|
18
|
+
import type { IsExpression, ObjectLiteralExpression } from '../parser/expressions.js';
|
|
19
|
+
/**
|
|
20
|
+
* Evaluate a Reqon/Vague expression within an execution context.
|
|
21
|
+
*
|
|
22
|
+
* Supports all expression types from the Vague DSL including literals, identifiers,
|
|
23
|
+
* binary/logical/ternary expressions, function calls, and pattern matching.
|
|
24
|
+
*
|
|
25
|
+
* @param expr - The expression AST node to evaluate
|
|
26
|
+
* @param ctx - The execution context containing variables, response data, and stores
|
|
27
|
+
* @param current - Optional current record for iteration contexts (e.g., inside for/map)
|
|
28
|
+
* @returns The evaluated result, which can be any JSON-compatible value
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* // Evaluate a simple identifier
|
|
32
|
+
* const result = evaluate({ type: 'Identifier', name: 'foo' }, ctx);
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* // Evaluate with current record context
|
|
36
|
+
* const result = evaluate(expr, ctx, { id: 1, name: 'test' });
|
|
37
|
+
*/
|
|
38
|
+
export declare function evaluate(expr: Expression | IsExpression | ObjectLiteralExpression, ctx: ExecutionContext, current?: unknown): unknown;
|
|
39
|
+
/**
|
|
40
|
+
* Evaluate an expression and convert the result to a string.
|
|
41
|
+
*
|
|
42
|
+
* @param expr - The expression to evaluate
|
|
43
|
+
* @param ctx - The execution context
|
|
44
|
+
* @param current - Optional current record for iteration contexts
|
|
45
|
+
* @returns The string representation of the evaluated value
|
|
46
|
+
*/
|
|
4
47
|
export declare function evaluateToString(expr: Expression, ctx: ExecutionContext, current?: unknown): string;
|
|
48
|
+
/**
|
|
49
|
+
* Interpolate variables in a path string using {variable.path} syntax.
|
|
50
|
+
*
|
|
51
|
+
* Replaces placeholders like {id} or {user.name} with values from the
|
|
52
|
+
* current record or execution context variables.
|
|
53
|
+
*
|
|
54
|
+
* @param path - The path string with {placeholder} syntax
|
|
55
|
+
* @param ctx - The execution context
|
|
56
|
+
* @param current - Optional current record for iteration contexts
|
|
57
|
+
* @returns The interpolated path string
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* // Interpolate a simple variable
|
|
61
|
+
* interpolatePath('/users/{id}', ctx, { id: 123 }); // '/users/123'
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* // Interpolate a nested path
|
|
65
|
+
* interpolatePath('/orgs/{org.id}/users', ctx, { org: { id: 'acme' } }); // '/orgs/acme/users'
|
|
66
|
+
*/
|
|
5
67
|
export declare function interpolatePath(path: string, ctx: ExecutionContext, current?: unknown): string;
|
|
@@ -1,15 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ---
|
|
3
|
+
* purpose: Expression evaluator - evaluates Vague/Reqon expressions at runtime
|
|
4
|
+
* inputs:
|
|
5
|
+
* - Expression AST node (literals, identifiers, binary ops, function calls)
|
|
6
|
+
* - ExecutionContext with variables, response, stores
|
|
7
|
+
* - Optional current record for iteration contexts
|
|
8
|
+
* outputs:
|
|
9
|
+
* - Evaluated value (any JSON-compatible type)
|
|
10
|
+
* related:
|
|
11
|
+
* - ./context.ts - provides variable bindings
|
|
12
|
+
* - ./executor.ts - calls evaluate() for step expressions
|
|
13
|
+
* - ../parser/expressions.ts - IsExpression, ObjectLiteralExpression types
|
|
14
|
+
* ---
|
|
15
|
+
*/
|
|
1
16
|
import { getVariable } from './context.js';
|
|
17
|
+
import { isRecord } from '../utils/type-guards.js';
|
|
18
|
+
import { EvaluatorError, UnsupportedOperationError } from '../errors/index.js';
|
|
19
|
+
/**
|
|
20
|
+
* Evaluate a Reqon/Vague expression within an execution context.
|
|
21
|
+
*
|
|
22
|
+
* Supports all expression types from the Vague DSL including literals, identifiers,
|
|
23
|
+
* binary/logical/ternary expressions, function calls, and pattern matching.
|
|
24
|
+
*
|
|
25
|
+
* @param expr - The expression AST node to evaluate
|
|
26
|
+
* @param ctx - The execution context containing variables, response data, and stores
|
|
27
|
+
* @param current - Optional current record for iteration contexts (e.g., inside for/map)
|
|
28
|
+
* @returns The evaluated result, which can be any JSON-compatible value
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* // Evaluate a simple identifier
|
|
32
|
+
* const result = evaluate({ type: 'Identifier', name: 'foo' }, ctx);
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* // Evaluate with current record context
|
|
36
|
+
* const result = evaluate(expr, ctx, { id: 1, name: 'test' });
|
|
37
|
+
*/
|
|
2
38
|
export function evaluate(expr, ctx, current) {
|
|
39
|
+
// Handle IsExpression before the switch (custom Reqon type, not in vague-lang Expression union)
|
|
40
|
+
if (expr.type === 'IsExpression') {
|
|
41
|
+
const isExpr = expr;
|
|
42
|
+
const value = evaluate(isExpr.operand, ctx, current);
|
|
43
|
+
return checkType(value, isExpr.typeCheck);
|
|
44
|
+
}
|
|
45
|
+
// Handle ObjectLiteral before the switch (custom Reqon type)
|
|
46
|
+
if (expr.type === 'ObjectLiteral') {
|
|
47
|
+
const objExpr = expr;
|
|
48
|
+
const result = {};
|
|
49
|
+
for (const prop of objExpr.properties) {
|
|
50
|
+
result[prop.key] = evaluate(prop.value, ctx, current);
|
|
51
|
+
}
|
|
52
|
+
return result;
|
|
53
|
+
}
|
|
3
54
|
switch (expr.type) {
|
|
4
55
|
case 'Literal':
|
|
5
56
|
return expr.value;
|
|
6
57
|
case 'Identifier': {
|
|
7
58
|
// Check if it's a field on current object
|
|
8
|
-
if (current &&
|
|
9
|
-
|
|
10
|
-
if (expr.name in obj) {
|
|
11
|
-
return obj[expr.name];
|
|
12
|
-
}
|
|
59
|
+
if (isRecord(current) && expr.name in current) {
|
|
60
|
+
return current[expr.name];
|
|
13
61
|
}
|
|
14
62
|
// Check variables
|
|
15
63
|
const value = getVariable(ctx, expr.name);
|
|
@@ -20,20 +68,31 @@ export function evaluate(expr, ctx, current) {
|
|
|
20
68
|
return ctx.response;
|
|
21
69
|
}
|
|
22
70
|
// Check if the identifier is a field on response
|
|
23
|
-
if (ctx.response &&
|
|
24
|
-
|
|
25
|
-
if (expr.name in resp)
|
|
26
|
-
return resp[expr.name];
|
|
71
|
+
if (isRecord(ctx.response) && expr.name in ctx.response) {
|
|
72
|
+
return ctx.response[expr.name];
|
|
27
73
|
}
|
|
28
74
|
return undefined;
|
|
29
75
|
}
|
|
30
76
|
case 'QualifiedName': {
|
|
31
|
-
//
|
|
77
|
+
// Handle 'response.x.y' specially - start from ctx.response
|
|
78
|
+
if (expr.parts.length > 0 && expr.parts[0] === 'response') {
|
|
79
|
+
let value = ctx.response;
|
|
80
|
+
for (let i = 1; i < expr.parts.length; i++) {
|
|
81
|
+
if (isRecord(value)) {
|
|
82
|
+
value = value[expr.parts[i]];
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return value;
|
|
89
|
+
}
|
|
90
|
+
// Try from current/response first (common case for .field paths)
|
|
32
91
|
let value = current ?? ctx.response;
|
|
33
|
-
if (value
|
|
92
|
+
if (isRecord(value)) {
|
|
34
93
|
let found = true;
|
|
35
94
|
for (const part of expr.parts) {
|
|
36
|
-
if (value
|
|
95
|
+
if (isRecord(value)) {
|
|
37
96
|
value = value[part];
|
|
38
97
|
}
|
|
39
98
|
else {
|
|
@@ -50,7 +109,7 @@ export function evaluate(expr, ctx, current) {
|
|
|
50
109
|
value = getVariable(ctx, expr.parts[0]);
|
|
51
110
|
if (value !== undefined) {
|
|
52
111
|
for (let i = 1; i < expr.parts.length; i++) {
|
|
53
|
-
if (value
|
|
112
|
+
if (isRecord(value)) {
|
|
54
113
|
value = value[expr.parts[i]];
|
|
55
114
|
}
|
|
56
115
|
else {
|
|
@@ -67,27 +126,36 @@ export function evaluate(expr, ctx, current) {
|
|
|
67
126
|
const right = evaluate(expr.right, ctx, current);
|
|
68
127
|
switch (expr.operator) {
|
|
69
128
|
case '+':
|
|
70
|
-
|
|
129
|
+
// Allow string concatenation
|
|
130
|
+
if (typeof left === 'string' || typeof right === 'string') {
|
|
131
|
+
return String(left ?? '') + String(right ?? '');
|
|
132
|
+
}
|
|
133
|
+
return toNumber(left, '+') + toNumber(right, '+');
|
|
71
134
|
case '-':
|
|
72
|
-
return left - right;
|
|
135
|
+
return toNumber(left, '-') - toNumber(right, '-');
|
|
73
136
|
case '*':
|
|
74
|
-
return left * right;
|
|
75
|
-
case '/':
|
|
76
|
-
|
|
137
|
+
return toNumber(left, '*') * toNumber(right, '*');
|
|
138
|
+
case '/': {
|
|
139
|
+
const divisor = toNumber(right, '/');
|
|
140
|
+
if (divisor === 0) {
|
|
141
|
+
throw new EvaluatorError('Division by zero', { expression: '/' });
|
|
142
|
+
}
|
|
143
|
+
return toNumber(left, '/') / divisor;
|
|
144
|
+
}
|
|
77
145
|
case '==':
|
|
78
146
|
return left === right;
|
|
79
147
|
case '!=':
|
|
80
148
|
return left !== right;
|
|
81
149
|
case '<':
|
|
82
|
-
return left <
|
|
150
|
+
return compareNumbers(left, right, '<');
|
|
83
151
|
case '>':
|
|
84
|
-
return left >
|
|
152
|
+
return compareNumbers(left, right, '>');
|
|
85
153
|
case '<=':
|
|
86
|
-
return left <=
|
|
154
|
+
return compareNumbers(left, right, '<=');
|
|
87
155
|
case '>=':
|
|
88
|
-
return left >=
|
|
156
|
+
return compareNumbers(left, right, '>=');
|
|
89
157
|
default:
|
|
90
|
-
throw new
|
|
158
|
+
throw new UnsupportedOperationError(`operator: ${expr.operator}`, 'binary expression');
|
|
91
159
|
}
|
|
92
160
|
}
|
|
93
161
|
case 'LogicalExpression': {
|
|
@@ -104,9 +172,9 @@ export function evaluate(expr, ctx, current) {
|
|
|
104
172
|
case 'UnaryExpression': {
|
|
105
173
|
const operand = evaluate(expr.operand, ctx, current);
|
|
106
174
|
if (expr.operator === '-')
|
|
107
|
-
return -operand;
|
|
175
|
+
return -toNumber(operand, 'unary -');
|
|
108
176
|
if (expr.operator === '+')
|
|
109
|
-
return +
|
|
177
|
+
return toNumber(operand, 'unary +');
|
|
110
178
|
return operand;
|
|
111
179
|
}
|
|
112
180
|
case 'TernaryExpression': {
|
|
@@ -139,8 +207,12 @@ export function evaluate(expr, ctx, current) {
|
|
|
139
207
|
if (typeof args[0] === 'string')
|
|
140
208
|
return args[0].length;
|
|
141
209
|
return 0;
|
|
142
|
-
case 'sum':
|
|
143
|
-
|
|
210
|
+
case 'sum': {
|
|
211
|
+
if (!Array.isArray(args[0])) {
|
|
212
|
+
throw new EvaluatorError('sum() requires an array argument', { expression: 'sum' });
|
|
213
|
+
}
|
|
214
|
+
return args[0].reduce((acc, val) => acc + toNumber(val, 'sum'), 0);
|
|
215
|
+
}
|
|
144
216
|
case 'count':
|
|
145
217
|
return Array.isArray(args[0]) ? args[0].length : 0;
|
|
146
218
|
case 'first':
|
|
@@ -148,13 +220,17 @@ export function evaluate(expr, ctx, current) {
|
|
|
148
220
|
case 'last':
|
|
149
221
|
return Array.isArray(args[0]) ? args[0][args[0].length - 1] : undefined;
|
|
150
222
|
case 'round':
|
|
151
|
-
return Math.round(args[0]);
|
|
223
|
+
return Math.round(toNumber(args[0], 'round'));
|
|
152
224
|
case 'floor':
|
|
153
|
-
return Math.floor(args[0]);
|
|
225
|
+
return Math.floor(toNumber(args[0], 'floor'));
|
|
154
226
|
case 'ceil':
|
|
155
|
-
return Math.ceil(args[0]);
|
|
227
|
+
return Math.ceil(toNumber(args[0], 'ceil'));
|
|
228
|
+
case 'now':
|
|
229
|
+
return new Date().toISOString();
|
|
230
|
+
case 'env':
|
|
231
|
+
return process.env[args[0]] ?? '';
|
|
156
232
|
default:
|
|
157
|
-
throw new
|
|
233
|
+
throw new UnsupportedOperationError(`function: ${expr.callee}`, 'call expression');
|
|
158
234
|
}
|
|
159
235
|
}
|
|
160
236
|
case 'AnyOfExpression': {
|
|
@@ -166,27 +242,55 @@ export function evaluate(expr, ctx, current) {
|
|
|
166
242
|
}
|
|
167
243
|
return collection[Math.floor(Math.random() * collection.length)];
|
|
168
244
|
}
|
|
169
|
-
case '
|
|
170
|
-
//
|
|
171
|
-
const
|
|
172
|
-
|
|
173
|
-
return checkType(value, isExpr.typeCheck);
|
|
245
|
+
case 'OrderedSequenceType': {
|
|
246
|
+
// Inline array literal: [1, 2, 3]
|
|
247
|
+
const seqExpr = expr;
|
|
248
|
+
return seqExpr.elements.map((el) => evaluate(el, ctx, current));
|
|
174
249
|
}
|
|
175
250
|
default:
|
|
176
|
-
throw new
|
|
251
|
+
throw new EvaluatorError(`Cannot evaluate expression type: ${expr.type}`, {
|
|
252
|
+
expression: expr.type,
|
|
253
|
+
});
|
|
177
254
|
}
|
|
178
255
|
}
|
|
256
|
+
/**
|
|
257
|
+
* Evaluate an expression and convert the result to a string.
|
|
258
|
+
*
|
|
259
|
+
* @param expr - The expression to evaluate
|
|
260
|
+
* @param ctx - The execution context
|
|
261
|
+
* @param current - Optional current record for iteration contexts
|
|
262
|
+
* @returns The string representation of the evaluated value
|
|
263
|
+
*/
|
|
179
264
|
export function evaluateToString(expr, ctx, current) {
|
|
180
265
|
const value = evaluate(expr, ctx, current);
|
|
181
266
|
return String(value ?? '');
|
|
182
267
|
}
|
|
268
|
+
/**
|
|
269
|
+
* Interpolate variables in a path string using {variable.path} syntax.
|
|
270
|
+
*
|
|
271
|
+
* Replaces placeholders like {id} or {user.name} with values from the
|
|
272
|
+
* current record or execution context variables.
|
|
273
|
+
*
|
|
274
|
+
* @param path - The path string with {placeholder} syntax
|
|
275
|
+
* @param ctx - The execution context
|
|
276
|
+
* @param current - Optional current record for iteration contexts
|
|
277
|
+
* @returns The interpolated path string
|
|
278
|
+
*
|
|
279
|
+
* @example
|
|
280
|
+
* // Interpolate a simple variable
|
|
281
|
+
* interpolatePath('/users/{id}', ctx, { id: 123 }); // '/users/123'
|
|
282
|
+
*
|
|
283
|
+
* @example
|
|
284
|
+
* // Interpolate a nested path
|
|
285
|
+
* interpolatePath('/orgs/{org.id}/users', ctx, { org: { id: 'acme' } }); // '/orgs/acme/users'
|
|
286
|
+
*/
|
|
183
287
|
export function interpolatePath(path, ctx, current) {
|
|
184
288
|
return path.replace(/\{([^}]+)\}/g, (_, expr) => {
|
|
185
289
|
// Simple variable interpolation
|
|
186
290
|
const parts = expr.split('.');
|
|
187
291
|
let value = current;
|
|
188
292
|
for (const part of parts) {
|
|
189
|
-
if (value
|
|
293
|
+
if (isRecord(value)) {
|
|
190
294
|
value = value[part];
|
|
191
295
|
}
|
|
192
296
|
else {
|
|
@@ -196,6 +300,49 @@ export function interpolatePath(path, ctx, current) {
|
|
|
196
300
|
return String(value ?? '');
|
|
197
301
|
});
|
|
198
302
|
}
|
|
303
|
+
/**
|
|
304
|
+
* Coerce a value to a number for arithmetic operations.
|
|
305
|
+
* Returns NaN for values that cannot be meaningfully converted.
|
|
306
|
+
*/
|
|
307
|
+
function toNumber(value, operator) {
|
|
308
|
+
if (typeof value === 'number') {
|
|
309
|
+
return value;
|
|
310
|
+
}
|
|
311
|
+
if (typeof value === 'string') {
|
|
312
|
+
const parsed = Number(value);
|
|
313
|
+
if (!isNaN(parsed)) {
|
|
314
|
+
return parsed;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
if (typeof value === 'boolean') {
|
|
318
|
+
return value ? 1 : 0;
|
|
319
|
+
}
|
|
320
|
+
if (value === null || value === undefined) {
|
|
321
|
+
throw new EvaluatorError(`Cannot perform '${operator}' on ${value === null ? 'null' : 'undefined'}`, { expression: operator });
|
|
322
|
+
}
|
|
323
|
+
throw new EvaluatorError(`Cannot perform '${operator}' on ${typeof value} (expected number)`, {
|
|
324
|
+
expression: operator,
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Safely perform arithmetic comparison, with proper type coercion.
|
|
329
|
+
*/
|
|
330
|
+
function compareNumbers(left, right, operator) {
|
|
331
|
+
const leftNum = toNumber(left, operator);
|
|
332
|
+
const rightNum = toNumber(right, operator);
|
|
333
|
+
switch (operator) {
|
|
334
|
+
case '<':
|
|
335
|
+
return leftNum < rightNum;
|
|
336
|
+
case '>':
|
|
337
|
+
return leftNum > rightNum;
|
|
338
|
+
case '<=':
|
|
339
|
+
return leftNum <= rightNum;
|
|
340
|
+
case '>=':
|
|
341
|
+
return leftNum >= rightNum;
|
|
342
|
+
default:
|
|
343
|
+
return false;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
199
346
|
/** Type check functions map - more efficient than switch statement */
|
|
200
347
|
const TYPE_CHECKERS = new Map([
|
|
201
348
|
['array', (v) => Array.isArray(v)],
|
|
@@ -217,7 +364,7 @@ const TYPE_CHECKERS = new Map([
|
|
|
217
364
|
function checkType(value, typeName) {
|
|
218
365
|
const checker = TYPE_CHECKERS.get(typeName.toLowerCase());
|
|
219
366
|
if (!checker) {
|
|
220
|
-
throw new
|
|
367
|
+
throw new UnsupportedOperationError(`type check: ${typeName}`, "'is' expression");
|
|
221
368
|
}
|
|
222
369
|
return checker(value);
|
|
223
370
|
}
|
|
@@ -1,10 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ---
|
|
3
|
+
* purpose: Mission executor - orchestrates pipeline execution
|
|
4
|
+
* inputs:
|
|
5
|
+
* - ReqonProgram - parsed AST
|
|
6
|
+
* - ExecutorConfig - auth, stores, callbacks, debug settings
|
|
7
|
+
* outputs:
|
|
8
|
+
* - ExecutionResult - success/errors, stores, duration
|
|
9
|
+
* related:
|
|
10
|
+
* - ./context.ts - execution state (variables, stores, sources)
|
|
11
|
+
* - ./evaluator.ts - expression evaluation
|
|
12
|
+
* - ./fetch-handler.ts - HTTP requests
|
|
13
|
+
* - ./step-handlers/ - individual step type handlers
|
|
14
|
+
* - ./source-manager.ts - auth provider management
|
|
15
|
+
* ---
|
|
16
|
+
*/
|
|
1
17
|
import type { ReqonProgram } from '../ast/nodes.js';
|
|
2
18
|
import type { StoreAdapter } from '../stores/types.js';
|
|
19
|
+
import { type AuthConfig } from './source-manager.js';
|
|
3
20
|
import { type CircuitBreakerCallbacks } from '../auth/circuit-breaker.js';
|
|
4
21
|
import type { RateLimitCallbacks } from '../auth/types.js';
|
|
5
22
|
import { type ExecutionState, type ExecutionStore } from '../execution/index.js';
|
|
6
23
|
import { type SyncStore } from '../sync/index.js';
|
|
7
24
|
import type { WebhookServer } from '../webhook/index.js';
|
|
25
|
+
import type { EventEmitter, StructuredLogger } from '../observability/index.js';
|
|
26
|
+
import type { DebugController } from '../debug/index.js';
|
|
27
|
+
import type { ControlServer } from '../control/index.js';
|
|
28
|
+
import { type TraceStore } from '../trace/index.js';
|
|
29
|
+
import { type PauseManager, type PauseStore } from '../pause/index.js';
|
|
8
30
|
export interface ExecutionResult {
|
|
9
31
|
success: boolean;
|
|
10
32
|
duration: number;
|
|
@@ -15,6 +37,10 @@ export interface ExecutionResult {
|
|
|
15
37
|
executionId?: string;
|
|
16
38
|
/** Execution state (if persistence enabled) */
|
|
17
39
|
state?: ExecutionState;
|
|
40
|
+
/** Trace ID if tracing was enabled */
|
|
41
|
+
traceId?: string;
|
|
42
|
+
/** Pause ID if execution was paused */
|
|
43
|
+
pauseId?: string;
|
|
18
44
|
}
|
|
19
45
|
export interface ExecutionError {
|
|
20
46
|
action: string;
|
|
@@ -71,6 +97,7 @@ export interface ExecutorConfig {
|
|
|
71
97
|
stores?: Record<string, StoreAdapter>;
|
|
72
98
|
dryRun?: boolean;
|
|
73
99
|
verbose?: boolean;
|
|
100
|
+
missionDir?: string;
|
|
74
101
|
rateLimitCallbacks?: RateLimitCallbacks;
|
|
75
102
|
circuitBreakerCallbacks?: CircuitBreakerCallbacks;
|
|
76
103
|
developmentMode?: boolean;
|
|
@@ -82,29 +109,39 @@ export interface ExecutorConfig {
|
|
|
82
109
|
syncStore?: SyncStore;
|
|
83
110
|
progress?: ProgressCallbacks;
|
|
84
111
|
webhookServer?: WebhookServer;
|
|
112
|
+
eventEmitter?: EventEmitter;
|
|
113
|
+
logger?: StructuredLogger;
|
|
114
|
+
debugController?: DebugController;
|
|
115
|
+
controlServer?: ControlServer;
|
|
116
|
+
traceStore?: TraceStore;
|
|
117
|
+
pauseStore?: PauseStore;
|
|
118
|
+
pauseManager?: PauseManager;
|
|
85
119
|
}
|
|
86
|
-
|
|
87
|
-
type: 'bearer' | 'oauth2' | 'none';
|
|
88
|
-
token?: string;
|
|
89
|
-
accessToken?: string;
|
|
90
|
-
refreshToken?: string;
|
|
91
|
-
tokenEndpoint?: string;
|
|
92
|
-
clientId?: string;
|
|
93
|
-
clientSecret?: string;
|
|
94
|
-
}
|
|
120
|
+
export { type AuthConfig } from './source-manager.js';
|
|
95
121
|
export declare class MissionExecutor {
|
|
96
122
|
private config;
|
|
97
123
|
private ctx;
|
|
98
124
|
private errors;
|
|
99
125
|
private actionsRun;
|
|
100
|
-
private
|
|
101
|
-
private sourceConfigs;
|
|
126
|
+
private transforms;
|
|
102
127
|
private rateLimiter;
|
|
103
128
|
private circuitBreaker;
|
|
129
|
+
private sourceManager;
|
|
130
|
+
private storeManager;
|
|
104
131
|
private executionStore?;
|
|
105
132
|
private executionState?;
|
|
106
133
|
private syncStore?;
|
|
107
134
|
private missionName?;
|
|
135
|
+
private eventEmitter?;
|
|
136
|
+
private logger?;
|
|
137
|
+
private stepIndex;
|
|
138
|
+
private debugController?;
|
|
139
|
+
private traceRecorder?;
|
|
140
|
+
private traceStore?;
|
|
141
|
+
private pauseManager?;
|
|
142
|
+
private pauseStore?;
|
|
143
|
+
private currentStageIndex;
|
|
144
|
+
private currentPauseId?;
|
|
108
145
|
constructor(config?: ExecutorConfig);
|
|
109
146
|
execute(program: ReqonProgram): Promise<ExecutionResult>;
|
|
110
147
|
private initializeExecutionState;
|
|
@@ -114,8 +151,6 @@ export declare class MissionExecutor {
|
|
|
114
151
|
private getStageName;
|
|
115
152
|
private executeSequentialStage;
|
|
116
153
|
private executeParallelStage;
|
|
117
|
-
private initializeSource;
|
|
118
|
-
private initializeStore;
|
|
119
154
|
private executeAction;
|
|
120
155
|
private executeStep;
|
|
121
156
|
private executeFetch;
|
|
@@ -125,7 +160,28 @@ export declare class MissionExecutor {
|
|
|
125
160
|
private executeStore;
|
|
126
161
|
private executeMatch;
|
|
127
162
|
private executeLet;
|
|
163
|
+
private executeApply;
|
|
128
164
|
private executeWebhook;
|
|
165
|
+
private executePause;
|
|
129
166
|
private log;
|
|
167
|
+
/**
|
|
168
|
+
* Check if pause has been requested and handle it
|
|
169
|
+
* Should be called at safe pause points (between stages, loop iterations)
|
|
170
|
+
*/
|
|
171
|
+
private checkPause;
|
|
172
|
+
/**
|
|
173
|
+
* Update control server with current state
|
|
174
|
+
*/
|
|
175
|
+
private updateControlServerState;
|
|
176
|
+
private getStepType;
|
|
177
|
+
/** Get the event emitter (for external access) */
|
|
178
|
+
getEventEmitter(): EventEmitter | undefined;
|
|
179
|
+
/** Get the structured logger (for external access) */
|
|
180
|
+
getLogger(): StructuredLogger | undefined;
|
|
181
|
+
/** Get the debug controller (for external access) */
|
|
182
|
+
getDebugController(): DebugController | undefined;
|
|
183
|
+
/** Capture current execution state for debugging */
|
|
184
|
+
private captureDebugSnapshot;
|
|
185
|
+
/** Handle debug command and update state */
|
|
186
|
+
private handleDebugCommand;
|
|
130
187
|
}
|
|
131
|
-
export {};
|