reqon-dsl 0.2.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/.claude/settings.local.json +31 -0
- package/.claude/skills/api-integration.md +125 -0
- package/.claude/skills/database-schema.md +51 -0
- package/.claude/skills/dsl-design.md +80 -0
- package/.claude/skills/property-testing.md +143 -0
- package/.claude/skills/reqon/SKILL.md +44 -0
- package/.claude/skills/reqon/references/examples.md +206 -0
- package/.claude/skills/reqon/references/syntax.md +263 -0
- package/.claude/skills/vscode-extension.md +113 -0
- package/.github/dependabot.yml +32 -0
- package/.github/pull_request_template.md +21 -0
- package/.github/workflows/ci.yml +174 -0
- package/.github/workflows/release.yml +73 -0
- package/CLAUDE.md +72 -0
- package/CONTRIBUTING.md +161 -0
- package/README.md +235 -0
- package/TODO.md +51 -0
- package/dist/ast/index.d.ts +1 -0
- package/dist/ast/index.js +1 -0
- package/dist/ast/nodes.d.ts +237 -0
- package/dist/ast/nodes.js +12 -0
- package/dist/auth/auth.test.d.ts +1 -0
- package/dist/auth/auth.test.js +255 -0
- package/dist/auth/circuit-breaker.d.ts +115 -0
- package/dist/auth/circuit-breaker.js +267 -0
- package/dist/auth/credentials.d.ts +91 -0
- package/dist/auth/credentials.js +169 -0
- package/dist/auth/index.d.ts +5 -0
- package/dist/auth/index.js +8 -0
- package/dist/auth/oauth2-provider.d.ts +41 -0
- package/dist/auth/oauth2-provider.js +131 -0
- package/dist/auth/rate-limiter.d.ts +61 -0
- package/dist/auth/rate-limiter.js +380 -0
- package/dist/auth/token-store.d.ts +30 -0
- package/dist/auth/token-store.js +148 -0
- package/dist/auth/types.d.ts +142 -0
- package/dist/auth/types.js +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +270 -0
- package/dist/errors/errors.test.d.ts +1 -0
- package/dist/errors/errors.test.js +165 -0
- package/dist/errors/index.d.ts +83 -0
- package/dist/errors/index.js +159 -0
- package/dist/execution/execution.test.d.ts +1 -0
- package/dist/execution/execution.test.js +246 -0
- package/dist/execution/index.d.ts +4 -0
- package/dist/execution/index.js +2 -0
- package/dist/execution/state.d.ts +136 -0
- package/dist/execution/state.js +82 -0
- package/dist/execution/store.d.ts +52 -0
- package/dist/execution/store.js +120 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.js +57 -0
- package/dist/integration.test.d.ts +1 -0
- package/dist/integration.test.js +168 -0
- package/dist/interpreter/context.d.ts +15 -0
- package/dist/interpreter/context.js +29 -0
- package/dist/interpreter/evaluator.d.ts +5 -0
- package/dist/interpreter/evaluator.js +223 -0
- package/dist/interpreter/evaluator.test.d.ts +1 -0
- package/dist/interpreter/evaluator.test.js +512 -0
- package/dist/interpreter/executor.d.ts +131 -0
- package/dist/interpreter/executor.js +663 -0
- package/dist/interpreter/fetch-handler.d.ts +43 -0
- package/dist/interpreter/fetch-handler.js +203 -0
- package/dist/interpreter/http.d.ts +57 -0
- package/dist/interpreter/http.js +210 -0
- package/dist/interpreter/http.test.d.ts +1 -0
- package/dist/interpreter/http.test.js +299 -0
- package/dist/interpreter/index.d.ts +7 -0
- package/dist/interpreter/index.js +7 -0
- package/dist/interpreter/pagination.d.ts +63 -0
- package/dist/interpreter/pagination.js +155 -0
- package/dist/interpreter/progress.test.d.ts +1 -0
- package/dist/interpreter/progress.test.js +216 -0
- package/dist/interpreter/schema-matcher.d.ts +16 -0
- package/dist/interpreter/schema-matcher.js +136 -0
- package/dist/interpreter/schema-matcher.test.d.ts +1 -0
- package/dist/interpreter/schema-matcher.test.js +122 -0
- package/dist/interpreter/signals.d.ts +57 -0
- package/dist/interpreter/signals.js +73 -0
- package/dist/interpreter/step-handlers/for-handler.d.ts +17 -0
- package/dist/interpreter/step-handlers/for-handler.js +51 -0
- package/dist/interpreter/step-handlers/index.d.ts +8 -0
- package/dist/interpreter/step-handlers/index.js +8 -0
- package/dist/interpreter/step-handlers/map-handler.d.ts +10 -0
- package/dist/interpreter/step-handlers/map-handler.js +20 -0
- package/dist/interpreter/step-handlers/match-handler.d.ts +27 -0
- package/dist/interpreter/step-handlers/match-handler.js +61 -0
- package/dist/interpreter/step-handlers/store-handler.d.ts +13 -0
- package/dist/interpreter/step-handlers/store-handler.js +66 -0
- package/dist/interpreter/step-handlers/types.d.ts +15 -0
- package/dist/interpreter/step-handlers/types.js +1 -0
- package/dist/interpreter/step-handlers/validate-handler.d.ts +10 -0
- package/dist/interpreter/step-handlers/validate-handler.js +26 -0
- package/dist/interpreter/step-handlers/webhook-handler.d.ts +36 -0
- package/dist/interpreter/step-handlers/webhook-handler.js +104 -0
- package/dist/lexer/index.d.ts +10 -0
- package/dist/lexer/index.js +12 -0
- package/dist/lexer/lexer.d.ts +24 -0
- package/dist/lexer/lexer.js +264 -0
- package/dist/lexer/lexer.test.d.ts +1 -0
- package/dist/lexer/lexer.test.js +259 -0
- package/dist/lexer/tokens.d.ts +69 -0
- package/dist/lexer/tokens.js +146 -0
- package/dist/loader/index.d.ts +36 -0
- package/dist/loader/index.js +220 -0
- package/dist/loader/loader.test.d.ts +1 -0
- package/dist/loader/loader.test.js +287 -0
- package/dist/oas/index.d.ts +4 -0
- package/dist/oas/index.js +2 -0
- package/dist/oas/loader.d.ts +21 -0
- package/dist/oas/loader.js +82 -0
- package/dist/oas/oas.test.d.ts +1 -0
- package/dist/oas/oas.test.js +218 -0
- package/dist/oas/validator.d.ts +12 -0
- package/dist/oas/validator.js +227 -0
- package/dist/parser/base.d.ts +33 -0
- package/dist/parser/base.js +97 -0
- package/dist/parser/expressions.d.ts +27 -0
- package/dist/parser/expressions.js +248 -0
- package/dist/parser/expressions.test.d.ts +1 -0
- package/dist/parser/expressions.test.js +378 -0
- package/dist/parser/index.d.ts +3 -0
- package/dist/parser/index.js +3 -0
- package/dist/parser/match.test.d.ts +1 -0
- package/dist/parser/match.test.js +254 -0
- package/dist/parser/parser.d.ts +68 -0
- package/dist/parser/parser.js +1229 -0
- package/dist/parser/parser.test.d.ts +1 -0
- package/dist/parser/parser.test.js +333 -0
- package/dist/parser/schedule.test.d.ts +1 -0
- package/dist/parser/schedule.test.js +241 -0
- package/dist/plugin.d.ts +35 -0
- package/dist/plugin.js +68 -0
- package/dist/scheduler/cron-parser.d.ts +32 -0
- package/dist/scheduler/cron-parser.js +198 -0
- package/dist/scheduler/cron-parser.test.d.ts +1 -0
- package/dist/scheduler/cron-parser.test.js +188 -0
- package/dist/scheduler/index.d.ts +3 -0
- package/dist/scheduler/index.js +2 -0
- package/dist/scheduler/scheduler.d.ts +81 -0
- package/dist/scheduler/scheduler.js +376 -0
- package/dist/scheduler/types.d.ts +65 -0
- package/dist/scheduler/types.js +1 -0
- package/dist/stores/factory.d.ts +36 -0
- package/dist/stores/factory.js +73 -0
- package/dist/stores/file.d.ts +60 -0
- package/dist/stores/file.js +173 -0
- package/dist/stores/file.test.d.ts +1 -0
- package/dist/stores/file.test.js +165 -0
- package/dist/stores/index.d.ts +6 -0
- package/dist/stores/index.js +5 -0
- package/dist/stores/memory.d.ts +19 -0
- package/dist/stores/memory.js +51 -0
- package/dist/stores/memory.test.d.ts +1 -0
- package/dist/stores/memory.test.js +157 -0
- package/dist/stores/postgrest.d.ts +55 -0
- package/dist/stores/postgrest.js +217 -0
- package/dist/stores/stores.test.d.ts +1 -0
- package/dist/stores/stores.test.js +158 -0
- package/dist/stores/types.d.ts +31 -0
- package/dist/stores/types.js +26 -0
- package/dist/sync/index.d.ts +4 -0
- package/dist/sync/index.js +2 -0
- package/dist/sync/state.d.ts +69 -0
- package/dist/sync/state.js +66 -0
- package/dist/sync/store.d.ts +49 -0
- package/dist/sync/store.js +93 -0
- package/dist/sync/sync.test.d.ts +1 -0
- package/dist/sync/sync.test.js +221 -0
- package/dist/utils/async.d.ts +7 -0
- package/dist/utils/async.js +9 -0
- package/dist/utils/file.d.ts +38 -0
- package/dist/utils/file.js +92 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/logger.d.ts +34 -0
- package/dist/utils/logger.js +39 -0
- package/dist/utils/path.d.ts +12 -0
- package/dist/utils/path.js +41 -0
- package/dist/webhook/index.d.ts +8 -0
- package/dist/webhook/index.js +7 -0
- package/dist/webhook/server.d.ts +84 -0
- package/dist/webhook/server.js +319 -0
- package/dist/webhook/store.d.ts +67 -0
- package/dist/webhook/store.js +193 -0
- package/dist/webhook/types.d.ts +88 -0
- package/dist/webhook/types.js +6 -0
- package/docusaurus/README.md +41 -0
- package/docusaurus/docs/advanced/execution-state.md +283 -0
- package/docusaurus/docs/advanced/extending-reqon.md +388 -0
- package/docusaurus/docs/advanced/multi-file-missions.md +250 -0
- package/docusaurus/docs/advanced/parallel-execution.md +353 -0
- package/docusaurus/docs/api-reference.md +443 -0
- package/docusaurus/docs/authentication/api-key.md +339 -0
- package/docusaurus/docs/authentication/basic.md +276 -0
- package/docusaurus/docs/authentication/bearer.md +282 -0
- package/docusaurus/docs/authentication/oauth2.md +317 -0
- package/docusaurus/docs/authentication/overview.md +251 -0
- package/docusaurus/docs/cli.md +229 -0
- package/docusaurus/docs/core-concepts/actions.md +286 -0
- package/docusaurus/docs/core-concepts/missions.md +264 -0
- package/docusaurus/docs/core-concepts/schemas.md +353 -0
- package/docusaurus/docs/core-concepts/sources.md +339 -0
- package/docusaurus/docs/core-concepts/stores.md +332 -0
- package/docusaurus/docs/dsl-syntax/expressions.md +361 -0
- package/docusaurus/docs/dsl-syntax/fetch.md +293 -0
- package/docusaurus/docs/dsl-syntax/for-loops.md +324 -0
- package/docusaurus/docs/dsl-syntax/map.md +345 -0
- package/docusaurus/docs/dsl-syntax/match.md +387 -0
- package/docusaurus/docs/dsl-syntax/pipelines.md +397 -0
- package/docusaurus/docs/dsl-syntax/validate.md +401 -0
- package/docusaurus/docs/error-handling/dead-letter-queues.md +399 -0
- package/docusaurus/docs/error-handling/flow-control.md +337 -0
- package/docusaurus/docs/error-handling/retry-strategies.md +368 -0
- package/docusaurus/docs/examples.md +488 -0
- package/docusaurus/docs/getting-started.md +256 -0
- package/docusaurus/docs/http/circuit-breaker.md +401 -0
- package/docusaurus/docs/http/incremental-sync.md +394 -0
- package/docusaurus/docs/http/pagination.md +361 -0
- package/docusaurus/docs/http/rate-limiting.md +383 -0
- package/docusaurus/docs/http/requests.md +328 -0
- package/docusaurus/docs/http/retry.md +402 -0
- package/docusaurus/docs/intro.md +90 -0
- package/docusaurus/docs/openapi/loading-specs.md +305 -0
- package/docusaurus/docs/openapi/operation-calls.md +314 -0
- package/docusaurus/docs/openapi/overview.md +212 -0
- package/docusaurus/docs/openapi/response-validation.md +344 -0
- package/docusaurus/docs/scheduling/cron.md +305 -0
- package/docusaurus/docs/scheduling/daemon-mode.md +317 -0
- package/docusaurus/docs/scheduling/intervals.md +289 -0
- package/docusaurus/docs/scheduling/overview.md +231 -0
- package/docusaurus/docs/stores/custom-adapters.md +376 -0
- package/docusaurus/docs/stores/file.md +236 -0
- package/docusaurus/docs/stores/memory.md +193 -0
- package/docusaurus/docs/stores/overview.md +274 -0
- package/docusaurus/docs/stores/postgrest.md +316 -0
- package/docusaurus/docusaurus.config.ts +148 -0
- package/docusaurus/package-lock.json +18029 -0
- package/docusaurus/package.json +47 -0
- package/docusaurus/sidebars.ts +155 -0
- package/docusaurus/src/components/HomepageFeatures/index.tsx +105 -0
- package/docusaurus/src/components/HomepageFeatures/styles.module.css +12 -0
- package/docusaurus/src/css/custom.css +169 -0
- package/docusaurus/src/pages/index.module.css +48 -0
- package/docusaurus/src/pages/index.tsx +110 -0
- package/docusaurus/src/pages/markdown-page.md +7 -0
- 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 +10 -0
- package/docusaurus/static/img/undraw_docusaurus_mountain.svg +171 -0
- package/docusaurus/static/img/undraw_docusaurus_react.svg +170 -0
- package/docusaurus/static/img/undraw_docusaurus_tree.svg +40 -0
- package/docusaurus/tsconfig.json +8 -0
- package/examples/README.md +112 -0
- package/examples/error-handling/README.md +150 -0
- package/examples/error-handling/payment-processor.vague +287 -0
- package/examples/github-sync/README.md +74 -0
- package/examples/github-sync/fetch-issues.vague +47 -0
- package/examples/github-sync/fetch-prs.vague +40 -0
- package/examples/github-sync/mission.vague +101 -0
- package/examples/github-sync/normalize.vague +70 -0
- package/examples/jsonplaceholder/README.md +28 -0
- package/examples/jsonplaceholder/posts.vague +48 -0
- package/examples/petstore/README.md +35 -0
- package/examples/petstore/openapi.yaml +97 -0
- package/examples/petstore/sync.vague +52 -0
- package/examples/temporal-comparison/README.md +297 -0
- package/examples/temporal-comparison/reconciliation.vague +355 -0
- package/examples/temporal-comparison/temporal/activities/index.ts +8 -0
- package/examples/temporal-comparison/temporal/activities/shipstation.ts +225 -0
- package/examples/temporal-comparison/temporal/activities/shopify.ts +257 -0
- package/examples/temporal-comparison/temporal/activities/storage.ts +198 -0
- package/examples/temporal-comparison/temporal/activities/stripe.ts +169 -0
- package/examples/temporal-comparison/temporal/activities/validation.ts +205 -0
- package/examples/temporal-comparison/temporal/client/schedule.ts +218 -0
- package/examples/temporal-comparison/temporal/config/retry.ts +63 -0
- package/examples/temporal-comparison/temporal/types/index.ts +129 -0
- package/examples/temporal-comparison/temporal/workers/main.ts +130 -0
- package/examples/temporal-comparison/temporal/workflows/orderReconciliation.ts +262 -0
- package/examples/xero/README.md +88 -0
- package/examples/xero/invoices.vague +189 -0
- package/package.json +40 -0
- package/src/api-integration.test.ts +954 -0
- package/src/ast/index.ts +1 -0
- package/src/ast/nodes.ts +310 -0
- package/src/auth/auth.test.ts +326 -0
- package/src/auth/circuit-breaker.test.ts +390 -0
- package/src/auth/circuit-breaker.ts +379 -0
- package/src/auth/credentials.test.ts +273 -0
- package/src/auth/credentials.ts +246 -0
- package/src/auth/index.ts +40 -0
- package/src/auth/oauth2-provider.ts +177 -0
- package/src/auth/rate-limiter.ts +459 -0
- package/src/auth/token-store.ts +177 -0
- package/src/auth/types.ts +159 -0
- package/src/benchmark/e2e.bench.ts +288 -0
- package/src/benchmark/evaluator.bench.ts +331 -0
- package/src/benchmark/fixtures.ts +295 -0
- package/src/benchmark/index.ts +108 -0
- package/src/benchmark/lexer.bench.ts +69 -0
- package/src/benchmark/parser.bench.ts +103 -0
- package/src/benchmark/resilience.bench.ts +193 -0
- package/src/benchmark/store.bench.ts +147 -0
- package/src/benchmark/utils.ts +230 -0
- package/src/cli.ts +313 -0
- package/src/errors/errors.test.ts +234 -0
- package/src/errors/index.ts +223 -0
- package/src/execution/execution.test.ts +307 -0
- package/src/execution/index.ts +21 -0
- package/src/execution/state.ts +207 -0
- package/src/execution/store.ts +188 -0
- package/src/index.ts +169 -0
- package/src/integration.test.ts +192 -0
- package/src/interpreter/context.ts +57 -0
- package/src/interpreter/evaluator.test.ts +796 -0
- package/src/interpreter/evaluator.ts +245 -0
- package/src/interpreter/executor.ts +946 -0
- package/src/interpreter/fetch-handler.ts +302 -0
- package/src/interpreter/http.test.ts +423 -0
- package/src/interpreter/http.ts +308 -0
- package/src/interpreter/index.ts +32 -0
- package/src/interpreter/pagination.ts +207 -0
- package/src/interpreter/progress.test.ts +276 -0
- package/src/interpreter/schema-matcher.test.ts +160 -0
- package/src/interpreter/schema-matcher.ts +168 -0
- package/src/interpreter/signals.ts +73 -0
- package/src/interpreter/step-handlers/for-handler.ts +65 -0
- package/src/interpreter/step-handlers/index.ts +17 -0
- package/src/interpreter/step-handlers/map-handler.ts +24 -0
- package/src/interpreter/step-handlers/match-handler.ts +101 -0
- package/src/interpreter/step-handlers/store-handler.ts +78 -0
- package/src/interpreter/step-handlers/types.ts +17 -0
- package/src/interpreter/step-handlers/validate-handler.ts +30 -0
- package/src/interpreter/step-handlers/webhook-handler.ts +142 -0
- package/src/lexer/index.ts +18 -0
- package/src/lexer/lexer.test.ts +316 -0
- package/src/lexer/tokens.ts +179 -0
- package/src/loader/index.ts +288 -0
- package/src/loader/loader.test.ts +360 -0
- package/src/oas/index.ts +4 -0
- package/src/oas/loader.ts +126 -0
- package/src/oas/oas.test.ts +254 -0
- package/src/oas/validator.ts +299 -0
- package/src/parser/base.ts +124 -0
- package/src/parser/expressions.test.ts +525 -0
- package/src/parser/expressions.ts +314 -0
- package/src/parser/index.ts +3 -0
- package/src/parser/match.test.ts +296 -0
- package/src/parser/parser.test.ts +739 -0
- package/src/parser/parser.ts +1469 -0
- package/src/parser/schedule.test.ts +287 -0
- package/src/parser/webhook.test.ts +248 -0
- package/src/plugin.ts +83 -0
- package/src/scheduler/cron-parser.test.ts +236 -0
- package/src/scheduler/cron-parser.ts +236 -0
- package/src/scheduler/index.ts +10 -0
- package/src/scheduler/scheduler.ts +443 -0
- package/src/scheduler/types.ts +71 -0
- package/src/stores/factory.ts +104 -0
- package/src/stores/file.test.ts +276 -0
- package/src/stores/file.ts +211 -0
- package/src/stores/index.ts +6 -0
- package/src/stores/memory.test.ts +238 -0
- package/src/stores/memory.ts +63 -0
- package/src/stores/postgrest.test.ts +488 -0
- package/src/stores/postgrest.ts +263 -0
- package/src/stores/stores.test.ts +197 -0
- package/src/stores/types.ts +58 -0
- package/src/sync/index.ts +16 -0
- package/src/sync/state.ts +126 -0
- package/src/sync/store.ts +139 -0
- package/src/sync/sync.test.ts +271 -0
- package/src/utils/async.ts +10 -0
- package/src/utils/file.ts +106 -0
- package/src/utils/index.ts +14 -0
- package/src/utils/logger.ts +53 -0
- package/src/utils/path.ts +47 -0
- package/src/webhook/index.ts +15 -0
- package/src/webhook/server.test.ts +253 -0
- package/src/webhook/server.ts +389 -0
- package/src/webhook/store.ts +239 -0
- package/src/webhook/types.ts +93 -0
- package/tsconfig.json +17 -0
- package/vitest.config.ts +39 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Webhook Module Types
|
|
3
|
+
*
|
|
4
|
+
* Types for webhook server and storage components.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Represents a pending webhook registration
|
|
8
|
+
*/
|
|
9
|
+
export interface WebhookRegistration {
|
|
10
|
+
/** Unique ID for this webhook registration */
|
|
11
|
+
id: string;
|
|
12
|
+
/** Execution ID that registered this webhook */
|
|
13
|
+
executionId: string;
|
|
14
|
+
/** Path for the webhook endpoint */
|
|
15
|
+
path: string;
|
|
16
|
+
/** When the registration was created */
|
|
17
|
+
createdAt: Date;
|
|
18
|
+
/** When the registration expires */
|
|
19
|
+
expiresAt: Date;
|
|
20
|
+
/** Number of events expected */
|
|
21
|
+
expectedEvents: number;
|
|
22
|
+
/** Number of events received so far */
|
|
23
|
+
receivedEvents: number;
|
|
24
|
+
/** Filter expression (serialized) */
|
|
25
|
+
filter?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Represents a received webhook event
|
|
29
|
+
*/
|
|
30
|
+
export interface WebhookEvent {
|
|
31
|
+
/** Unique ID for this event */
|
|
32
|
+
id: string;
|
|
33
|
+
/** Registration ID this event belongs to */
|
|
34
|
+
registrationId: string;
|
|
35
|
+
/** Received timestamp */
|
|
36
|
+
receivedAt: Date;
|
|
37
|
+
/** HTTP method used */
|
|
38
|
+
method: string;
|
|
39
|
+
/** Request headers */
|
|
40
|
+
headers: Record<string, string>;
|
|
41
|
+
/** Request body (parsed if JSON) */
|
|
42
|
+
body: unknown;
|
|
43
|
+
/** Raw body string */
|
|
44
|
+
rawBody: string;
|
|
45
|
+
/** Query parameters */
|
|
46
|
+
query: Record<string, string>;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Configuration for the webhook server
|
|
50
|
+
*/
|
|
51
|
+
export interface WebhookServerConfig {
|
|
52
|
+
/** Port to listen on (default: 3000) */
|
|
53
|
+
port?: number;
|
|
54
|
+
/** Host to bind to (default: '0.0.0.0') */
|
|
55
|
+
host?: string;
|
|
56
|
+
/** Base URL for webhook endpoints (e.g., 'https://example.com/webhooks') */
|
|
57
|
+
baseUrl?: string;
|
|
58
|
+
/** Default timeout for webhook registrations in ms (default: 300000 = 5 min) */
|
|
59
|
+
defaultTimeout?: number;
|
|
60
|
+
/** Enable verbose logging */
|
|
61
|
+
verbose?: boolean;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Callbacks for webhook server events
|
|
65
|
+
*/
|
|
66
|
+
export interface WebhookServerCallbacks {
|
|
67
|
+
/** Called when a webhook is received */
|
|
68
|
+
onWebhookReceived?: (event: WebhookEvent) => void;
|
|
69
|
+
/** Called when a registration is created */
|
|
70
|
+
onRegistrationCreated?: (registration: WebhookRegistration) => void;
|
|
71
|
+
/** Called when a registration expires */
|
|
72
|
+
onRegistrationExpired?: (registration: WebhookRegistration) => void;
|
|
73
|
+
/** Called when all expected events are received */
|
|
74
|
+
onRegistrationComplete?: (registration: WebhookRegistration, events: WebhookEvent[]) => void;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Result of waiting for webhook events
|
|
78
|
+
*/
|
|
79
|
+
export interface WaitResult {
|
|
80
|
+
/** Whether the wait was successful */
|
|
81
|
+
success: boolean;
|
|
82
|
+
/** Events received */
|
|
83
|
+
events: WebhookEvent[];
|
|
84
|
+
/** Error message if failed */
|
|
85
|
+
error?: string;
|
|
86
|
+
/** Whether timed out */
|
|
87
|
+
timedOut?: boolean;
|
|
88
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Website
|
|
2
|
+
|
|
3
|
+
This website is built using [Docusaurus](https://docusaurus.io/), a modern static website generator.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
yarn
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Local Development
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
yarn start
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
|
|
18
|
+
|
|
19
|
+
## Build
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
yarn build
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
This command generates static content into the `build` directory and can be served using any static contents hosting service.
|
|
26
|
+
|
|
27
|
+
## Deployment
|
|
28
|
+
|
|
29
|
+
Using SSH:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
USE_SSH=true yarn deploy
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Not using SSH:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
GIT_USER=<Your GitHub username> yarn deploy
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch.
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
---
|
|
2
|
+
sidebar_position: 2
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Execution State
|
|
6
|
+
|
|
7
|
+
Reqon maintains execution state for resumable missions and audit trails.
|
|
8
|
+
|
|
9
|
+
## State Storage
|
|
10
|
+
|
|
11
|
+
State is stored in `.vague-data/`:
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
.vague-data/
|
|
15
|
+
├── execution/
|
|
16
|
+
│ ├── CustomerSync-2024-01-20T09-00-00.json
|
|
17
|
+
│ └── CustomerSync-2024-01-20T10-00-00.json
|
|
18
|
+
├── sync-checkpoints.json
|
|
19
|
+
└── stores/
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Execution Record
|
|
23
|
+
|
|
24
|
+
Each execution creates a record:
|
|
25
|
+
|
|
26
|
+
```json
|
|
27
|
+
{
|
|
28
|
+
"executionId": "exec_abc123",
|
|
29
|
+
"mission": "CustomerSync",
|
|
30
|
+
"startedAt": "2024-01-20T09:00:00Z",
|
|
31
|
+
"completedAt": "2024-01-20T09:02:30Z",
|
|
32
|
+
"status": "completed",
|
|
33
|
+
"actionsRun": ["FetchCustomers", "TransformCustomers"],
|
|
34
|
+
"errors": [],
|
|
35
|
+
"stores": {
|
|
36
|
+
"customers": {
|
|
37
|
+
"count": 1523,
|
|
38
|
+
"added": 42,
|
|
39
|
+
"updated": 18
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## State Fields
|
|
46
|
+
|
|
47
|
+
| Field | Description |
|
|
48
|
+
|-------|-------------|
|
|
49
|
+
| `executionId` | Unique execution identifier |
|
|
50
|
+
| `mission` | Mission name |
|
|
51
|
+
| `startedAt` | Start timestamp |
|
|
52
|
+
| `completedAt` | Completion timestamp |
|
|
53
|
+
| `status` | `running`, `completed`, `failed`, `interrupted` |
|
|
54
|
+
| `actionsRun` | Actions that completed |
|
|
55
|
+
| `activeStep` | Currently running step (if in progress) |
|
|
56
|
+
| `errors` | Array of errors encountered |
|
|
57
|
+
|
|
58
|
+
## Checkpoints
|
|
59
|
+
|
|
60
|
+
### Sync Checkpoints
|
|
61
|
+
|
|
62
|
+
Track incremental sync progress:
|
|
63
|
+
|
|
64
|
+
```json
|
|
65
|
+
{
|
|
66
|
+
"API-/customers": {
|
|
67
|
+
"lastSync": "2024-01-20T09:00:00Z",
|
|
68
|
+
"itemsSynced": 1523
|
|
69
|
+
},
|
|
70
|
+
"API-/orders": {
|
|
71
|
+
"lastSync": "2024-01-20T08:45:00Z",
|
|
72
|
+
"itemsSynced": 8721
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Action Checkpoints
|
|
78
|
+
|
|
79
|
+
Track progress within long-running actions:
|
|
80
|
+
|
|
81
|
+
```json
|
|
82
|
+
{
|
|
83
|
+
"FetchCustomers": {
|
|
84
|
+
"page": 15,
|
|
85
|
+
"itemsProcessed": 1500
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Resumable Execution
|
|
91
|
+
|
|
92
|
+
### Automatic Resume
|
|
93
|
+
|
|
94
|
+
If a mission is interrupted, Reqon can resume:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
reqon ./missions/ --resume
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Resume Point Detection
|
|
101
|
+
|
|
102
|
+
```json
|
|
103
|
+
{
|
|
104
|
+
"executionId": "exec_abc123",
|
|
105
|
+
"status": "interrupted",
|
|
106
|
+
"activeStep": {
|
|
107
|
+
"action": "TransformCustomers",
|
|
108
|
+
"index": 523,
|
|
109
|
+
"item": { "id": "cust_524" }
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Resume starts from `item 523` in `TransformCustomers`.
|
|
115
|
+
|
|
116
|
+
## Accessing State
|
|
117
|
+
|
|
118
|
+
### Programmatically
|
|
119
|
+
|
|
120
|
+
```typescript
|
|
121
|
+
import { execute, getExecutionState } from 'reqon';
|
|
122
|
+
|
|
123
|
+
// Get last execution
|
|
124
|
+
const lastState = await getExecutionState('CustomerSync');
|
|
125
|
+
|
|
126
|
+
// Get specific execution
|
|
127
|
+
const state = await getExecutionState('CustomerSync', 'exec_abc123');
|
|
128
|
+
|
|
129
|
+
// Get all executions
|
|
130
|
+
const history = await getExecutionHistory('CustomerSync', { limit: 10 });
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Via CLI
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
# Show last execution
|
|
137
|
+
reqon status CustomerSync
|
|
138
|
+
|
|
139
|
+
# Show execution history
|
|
140
|
+
reqon history CustomerSync --limit 10
|
|
141
|
+
|
|
142
|
+
# Show specific execution
|
|
143
|
+
reqon status CustomerSync --execution exec_abc123
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## State Cleanup
|
|
147
|
+
|
|
148
|
+
### Automatic Cleanup
|
|
149
|
+
|
|
150
|
+
```vague
|
|
151
|
+
mission CustomerSync {
|
|
152
|
+
stateRetention: 7 days // Keep 7 days of history
|
|
153
|
+
}
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Manual Cleanup
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
# Clear old state
|
|
160
|
+
reqon cleanup --older-than 30d
|
|
161
|
+
|
|
162
|
+
# Clear specific mission
|
|
163
|
+
reqon cleanup CustomerSync --all
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## Monitoring
|
|
167
|
+
|
|
168
|
+
### Execution Callbacks
|
|
169
|
+
|
|
170
|
+
```typescript
|
|
171
|
+
import { execute } from 'reqon';
|
|
172
|
+
|
|
173
|
+
const result = await execute(source, {
|
|
174
|
+
progressCallbacks: {
|
|
175
|
+
onActionStart: (action) => {
|
|
176
|
+
console.log(`Starting: ${action}`);
|
|
177
|
+
},
|
|
178
|
+
onActionComplete: (action, duration) => {
|
|
179
|
+
console.log(`Completed: ${action} in ${duration}ms`);
|
|
180
|
+
},
|
|
181
|
+
onError: (error) => {
|
|
182
|
+
console.error(`Error: ${error.message}`);
|
|
183
|
+
},
|
|
184
|
+
onProgress: (progress) => {
|
|
185
|
+
console.log(`Progress: ${progress.current}/${progress.total}`);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Metrics Export
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
reqon ./missions/ --daemon --metrics-port 9090
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
Exposes Prometheus metrics:
|
|
198
|
+
|
|
199
|
+
```
|
|
200
|
+
reqon_execution_duration_seconds{mission="CustomerSync"}
|
|
201
|
+
reqon_execution_items_processed{mission="CustomerSync"}
|
|
202
|
+
reqon_execution_errors_total{mission="CustomerSync"}
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
## State Persistence
|
|
206
|
+
|
|
207
|
+
### File-Based (Default)
|
|
208
|
+
|
|
209
|
+
```vague
|
|
210
|
+
mission CustomerSync {
|
|
211
|
+
stateStore: file // Default
|
|
212
|
+
}
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
### Custom State Store
|
|
216
|
+
|
|
217
|
+
```typescript
|
|
218
|
+
import { execute, setStateStore } from 'reqon';
|
|
219
|
+
|
|
220
|
+
setStateStore({
|
|
221
|
+
async save(state) {
|
|
222
|
+
await database.insert('execution_state', state);
|
|
223
|
+
},
|
|
224
|
+
async load(executionId) {
|
|
225
|
+
return database.findOne('execution_state', { executionId });
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
## Best Practices
|
|
231
|
+
|
|
232
|
+
### Enable for Long-Running Missions
|
|
233
|
+
|
|
234
|
+
```vague
|
|
235
|
+
mission LongSync {
|
|
236
|
+
enableState: true
|
|
237
|
+
stateRetention: 30 days
|
|
238
|
+
}
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### Use Checkpoints for Large Datasets
|
|
242
|
+
|
|
243
|
+
```vague
|
|
244
|
+
action ProcessLargeDataset {
|
|
245
|
+
for item in items checkpoint every 100 {
|
|
246
|
+
// State saved every 100 items
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### Monitor Execution Health
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
# Set up alerting for failed executions
|
|
255
|
+
reqon ./missions/ --daemon --alert-on-failure
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
## Troubleshooting
|
|
259
|
+
|
|
260
|
+
### State Not Persisting
|
|
261
|
+
|
|
262
|
+
Check directory permissions:
|
|
263
|
+
|
|
264
|
+
```bash
|
|
265
|
+
ls -la .vague-data/
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
### Resume Not Working
|
|
269
|
+
|
|
270
|
+
Verify state file exists:
|
|
271
|
+
|
|
272
|
+
```bash
|
|
273
|
+
cat .vague-data/execution/CustomerSync-*.json | jq '.status'
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
### State Too Large
|
|
277
|
+
|
|
278
|
+
Reduce retention or clean up:
|
|
279
|
+
|
|
280
|
+
```bash
|
|
281
|
+
du -sh .vague-data/
|
|
282
|
+
reqon cleanup --older-than 7d
|
|
283
|
+
```
|