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.
Files changed (396) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +22 -0
  3. package/dist/ast/nodes.d.ts +83 -4
  4. package/dist/ast/nodes.js +14 -0
  5. package/dist/auth/circuit-breaker.js +7 -6
  6. package/dist/auth/rate-limiter.d.ts +4 -0
  7. package/dist/auth/rate-limiter.js +9 -16
  8. package/dist/cli.d.ts +13 -0
  9. package/dist/cli.js +84 -4
  10. package/dist/config/constants.d.ts +141 -0
  11. package/dist/config/constants.js +128 -0
  12. package/dist/config/index.d.ts +4 -0
  13. package/dist/config/index.js +4 -0
  14. package/dist/control/index.d.ts +2 -0
  15. package/dist/control/index.js +1 -0
  16. package/dist/control/server.d.ts +88 -0
  17. package/dist/control/server.js +238 -0
  18. package/dist/control/types.d.ts +55 -0
  19. package/dist/control/types.js +7 -0
  20. package/dist/debug/cli-debugger.d.ts +17 -0
  21. package/dist/debug/cli-debugger.js +180 -0
  22. package/dist/debug/controller.d.ts +94 -0
  23. package/dist/debug/controller.js +45 -0
  24. package/dist/debug/index.d.ts +6 -0
  25. package/dist/debug/index.js +5 -0
  26. package/dist/errors/index.d.ts +67 -0
  27. package/dist/errors/index.js +89 -1
  28. package/dist/execution/index.d.ts +1 -1
  29. package/dist/execution/state.d.ts +24 -0
  30. package/dist/index.d.ts +21 -1
  31. package/dist/index.js +33 -2
  32. package/dist/interpreter/context.d.ts +14 -0
  33. package/dist/interpreter/context.js +15 -0
  34. package/dist/interpreter/evaluator.d.ts +63 -1
  35. package/dist/interpreter/evaluator.js +186 -39
  36. package/dist/interpreter/executor.d.ts +70 -14
  37. package/dist/interpreter/executor.js +503 -174
  38. package/dist/interpreter/fetch-handler.d.ts +9 -0
  39. package/dist/interpreter/fetch-handler.js +133 -24
  40. package/dist/interpreter/http.d.ts +5 -0
  41. package/dist/interpreter/http.js +26 -12
  42. package/dist/interpreter/index.d.ts +3 -1
  43. package/dist/interpreter/index.js +2 -0
  44. package/dist/interpreter/pagination.d.ts +11 -2
  45. package/dist/interpreter/pagination.js +95 -31
  46. package/dist/interpreter/signals.d.ts +8 -0
  47. package/dist/interpreter/signals.js +12 -0
  48. package/dist/interpreter/source-manager.d.ts +75 -0
  49. package/dist/interpreter/source-manager.js +157 -0
  50. package/dist/interpreter/step-handlers/apply-handler.d.ts +29 -0
  51. package/dist/interpreter/step-handlers/apply-handler.js +79 -0
  52. package/dist/interpreter/step-handlers/for-handler.d.ts +13 -0
  53. package/dist/interpreter/step-handlers/for-handler.js +71 -4
  54. package/dist/interpreter/step-handlers/index.d.ts +4 -2
  55. package/dist/interpreter/step-handlers/index.js +4 -2
  56. package/dist/interpreter/step-handlers/match-handler.d.ts +9 -0
  57. package/dist/interpreter/step-handlers/match-handler.js +43 -16
  58. package/dist/interpreter/step-handlers/pause-handler.d.ts +52 -0
  59. package/dist/interpreter/step-handlers/pause-handler.js +87 -0
  60. package/dist/interpreter/step-handlers/store-handler.d.ts +11 -1
  61. package/dist/interpreter/step-handlers/store-handler.js +45 -13
  62. package/dist/interpreter/step-handlers/types.d.ts +3 -0
  63. package/dist/interpreter/step-handlers/validate-handler.d.ts +2 -1
  64. package/dist/interpreter/step-handlers/validate-handler.js +4 -2
  65. package/dist/interpreter/step-handlers/webhook-handler.d.ts +3 -0
  66. package/dist/interpreter/step-handlers/webhook-handler.js +18 -2
  67. package/dist/interpreter/store-manager.d.ts +46 -0
  68. package/dist/interpreter/store-manager.js +66 -0
  69. package/dist/lexer/index.d.ts +11 -4
  70. package/dist/lexer/index.js +11 -4
  71. package/dist/lexer/tokens.d.ts +17 -1
  72. package/dist/lexer/tokens.js +36 -0
  73. package/dist/mcp/index.d.ts +11 -0
  74. package/dist/mcp/index.js +11 -0
  75. package/dist/mcp/server.d.ts +17 -0
  76. package/dist/mcp/server.js +451 -0
  77. package/dist/oas/index.d.ts +2 -0
  78. package/dist/oas/index.js +1 -0
  79. package/dist/oas/mock-generator.d.ts +12 -0
  80. package/dist/oas/mock-generator.js +187 -0
  81. package/dist/observability/events.d.ts +244 -0
  82. package/dist/observability/events.js +90 -0
  83. package/dist/observability/index.d.ts +15 -0
  84. package/dist/observability/index.js +12 -0
  85. package/dist/observability/logger.d.ts +106 -0
  86. package/dist/observability/logger.js +259 -0
  87. package/dist/observability/otel.d.ts +135 -0
  88. package/dist/observability/otel.js +386 -0
  89. package/dist/parser/action-parser.d.ts +105 -0
  90. package/dist/parser/action-parser.js +645 -0
  91. package/dist/parser/expressions.d.ts +13 -0
  92. package/dist/parser/expressions.js +72 -2
  93. package/dist/parser/fetch-parser.d.ts +27 -0
  94. package/dist/parser/fetch-parser.js +269 -0
  95. package/dist/parser/index.d.ts +17 -0
  96. package/dist/parser/index.js +17 -0
  97. package/dist/parser/parser.d.ts +44 -46
  98. package/dist/parser/parser.js +122 -1070
  99. package/dist/parser/pipeline-parser.d.ts +12 -0
  100. package/dist/parser/pipeline-parser.js +52 -0
  101. package/dist/parser/schedule-parser.d.ts +7 -0
  102. package/dist/parser/schedule-parser.js +137 -0
  103. package/dist/parser/source-parser.d.ts +9 -0
  104. package/dist/parser/source-parser.js +151 -0
  105. package/dist/pause/index.d.ts +14 -0
  106. package/dist/pause/index.js +11 -0
  107. package/dist/pause/manager.d.ts +118 -0
  108. package/dist/pause/manager.js +245 -0
  109. package/dist/pause/state.d.ts +93 -0
  110. package/dist/pause/state.js +103 -0
  111. package/dist/pause/store.d.ts +61 -0
  112. package/dist/pause/store.js +156 -0
  113. package/dist/plugin.d.ts +9 -12
  114. package/dist/plugin.js +10 -13
  115. package/dist/stores/factory.d.ts +1 -1
  116. package/dist/stores/factory.js +3 -2
  117. package/dist/stores/file.d.ts +26 -0
  118. package/dist/stores/file.js +64 -10
  119. package/dist/stores/index.d.ts +16 -1
  120. package/dist/stores/index.js +16 -1
  121. package/dist/stores/memory.d.ts +4 -0
  122. package/dist/stores/memory.js +11 -0
  123. package/dist/stores/types.d.ts +17 -0
  124. package/dist/stores/types.js +12 -0
  125. package/dist/trace/index.d.ts +16 -0
  126. package/dist/trace/index.js +12 -0
  127. package/dist/trace/recorder.d.ts +71 -0
  128. package/dist/trace/recorder.js +144 -0
  129. package/dist/trace/replay.d.ts +132 -0
  130. package/dist/trace/replay.js +264 -0
  131. package/dist/trace/state.d.ts +102 -0
  132. package/dist/trace/state.js +86 -0
  133. package/dist/trace/store.d.ts +69 -0
  134. package/dist/trace/store.js +225 -0
  135. package/dist/utils/index.d.ts +1 -0
  136. package/dist/utils/index.js +1 -0
  137. package/dist/utils/type-guards.d.ts +58 -0
  138. package/dist/utils/type-guards.js +92 -0
  139. package/dist/webhook/server.js +7 -6
  140. package/package.json +55 -6
  141. package/.claude/settings.local.json +0 -31
  142. package/.claude/skills/api-integration.md +0 -125
  143. package/.claude/skills/database-schema.md +0 -51
  144. package/.claude/skills/dsl-design.md +0 -80
  145. package/.claude/skills/property-testing.md +0 -143
  146. package/.claude/skills/reqon/SKILL.md +0 -44
  147. package/.claude/skills/reqon/references/examples.md +0 -206
  148. package/.claude/skills/reqon/references/syntax.md +0 -263
  149. package/.claude/skills/vscode-extension.md +0 -113
  150. package/.github/dependabot.yml +0 -32
  151. package/.github/pull_request_template.md +0 -21
  152. package/.github/workflows/ci.yml +0 -174
  153. package/.github/workflows/release.yml +0 -73
  154. package/CLAUDE.md +0 -72
  155. package/CONTRIBUTING.md +0 -161
  156. package/TODO.md +0 -51
  157. package/dist/auth/auth.test.d.ts +0 -1
  158. package/dist/auth/auth.test.js +0 -255
  159. package/dist/errors/errors.test.d.ts +0 -1
  160. package/dist/errors/errors.test.js +0 -165
  161. package/dist/execution/execution.test.d.ts +0 -1
  162. package/dist/execution/execution.test.js +0 -246
  163. package/dist/integration.test.d.ts +0 -1
  164. package/dist/integration.test.js +0 -168
  165. package/dist/interpreter/evaluator.test.d.ts +0 -1
  166. package/dist/interpreter/evaluator.test.js +0 -512
  167. package/dist/interpreter/http.test.d.ts +0 -1
  168. package/dist/interpreter/http.test.js +0 -299
  169. package/dist/interpreter/progress.test.d.ts +0 -1
  170. package/dist/interpreter/progress.test.js +0 -216
  171. package/dist/interpreter/schema-matcher.test.d.ts +0 -1
  172. package/dist/interpreter/schema-matcher.test.js +0 -122
  173. package/dist/lexer/lexer.d.ts +0 -24
  174. package/dist/lexer/lexer.js +0 -264
  175. package/dist/lexer/lexer.test.d.ts +0 -1
  176. package/dist/lexer/lexer.test.js +0 -259
  177. package/dist/loader/loader.test.d.ts +0 -1
  178. package/dist/loader/loader.test.js +0 -287
  179. package/dist/oas/oas.test.d.ts +0 -1
  180. package/dist/oas/oas.test.js +0 -218
  181. package/dist/parser/expressions.test.d.ts +0 -1
  182. package/dist/parser/expressions.test.js +0 -378
  183. package/dist/parser/match.test.d.ts +0 -1
  184. package/dist/parser/match.test.js +0 -254
  185. package/dist/parser/parser.test.d.ts +0 -1
  186. package/dist/parser/parser.test.js +0 -333
  187. package/dist/parser/schedule.test.d.ts +0 -1
  188. package/dist/parser/schedule.test.js +0 -241
  189. package/dist/scheduler/cron-parser.test.d.ts +0 -1
  190. package/dist/scheduler/cron-parser.test.js +0 -188
  191. package/dist/stores/file.test.d.ts +0 -1
  192. package/dist/stores/file.test.js +0 -165
  193. package/dist/stores/memory.test.d.ts +0 -1
  194. package/dist/stores/memory.test.js +0 -157
  195. package/dist/stores/stores.test.d.ts +0 -1
  196. package/dist/stores/stores.test.js +0 -158
  197. package/dist/sync/sync.test.d.ts +0 -1
  198. package/dist/sync/sync.test.js +0 -221
  199. package/docusaurus/README.md +0 -41
  200. package/docusaurus/docs/advanced/execution-state.md +0 -283
  201. package/docusaurus/docs/advanced/extending-reqon.md +0 -388
  202. package/docusaurus/docs/advanced/multi-file-missions.md +0 -250
  203. package/docusaurus/docs/advanced/parallel-execution.md +0 -353
  204. package/docusaurus/docs/api-reference.md +0 -443
  205. package/docusaurus/docs/authentication/api-key.md +0 -339
  206. package/docusaurus/docs/authentication/basic.md +0 -276
  207. package/docusaurus/docs/authentication/bearer.md +0 -282
  208. package/docusaurus/docs/authentication/oauth2.md +0 -317
  209. package/docusaurus/docs/authentication/overview.md +0 -251
  210. package/docusaurus/docs/cli.md +0 -229
  211. package/docusaurus/docs/core-concepts/actions.md +0 -286
  212. package/docusaurus/docs/core-concepts/missions.md +0 -264
  213. package/docusaurus/docs/core-concepts/schemas.md +0 -353
  214. package/docusaurus/docs/core-concepts/sources.md +0 -339
  215. package/docusaurus/docs/core-concepts/stores.md +0 -332
  216. package/docusaurus/docs/dsl-syntax/expressions.md +0 -361
  217. package/docusaurus/docs/dsl-syntax/fetch.md +0 -293
  218. package/docusaurus/docs/dsl-syntax/for-loops.md +0 -324
  219. package/docusaurus/docs/dsl-syntax/map.md +0 -345
  220. package/docusaurus/docs/dsl-syntax/match.md +0 -387
  221. package/docusaurus/docs/dsl-syntax/pipelines.md +0 -397
  222. package/docusaurus/docs/dsl-syntax/validate.md +0 -401
  223. package/docusaurus/docs/error-handling/dead-letter-queues.md +0 -399
  224. package/docusaurus/docs/error-handling/flow-control.md +0 -337
  225. package/docusaurus/docs/error-handling/retry-strategies.md +0 -368
  226. package/docusaurus/docs/examples.md +0 -488
  227. package/docusaurus/docs/getting-started.md +0 -256
  228. package/docusaurus/docs/http/circuit-breaker.md +0 -401
  229. package/docusaurus/docs/http/incremental-sync.md +0 -394
  230. package/docusaurus/docs/http/pagination.md +0 -361
  231. package/docusaurus/docs/http/rate-limiting.md +0 -383
  232. package/docusaurus/docs/http/requests.md +0 -328
  233. package/docusaurus/docs/http/retry.md +0 -402
  234. package/docusaurus/docs/intro.md +0 -90
  235. package/docusaurus/docs/openapi/loading-specs.md +0 -305
  236. package/docusaurus/docs/openapi/operation-calls.md +0 -314
  237. package/docusaurus/docs/openapi/overview.md +0 -212
  238. package/docusaurus/docs/openapi/response-validation.md +0 -344
  239. package/docusaurus/docs/scheduling/cron.md +0 -305
  240. package/docusaurus/docs/scheduling/daemon-mode.md +0 -317
  241. package/docusaurus/docs/scheduling/intervals.md +0 -289
  242. package/docusaurus/docs/scheduling/overview.md +0 -231
  243. package/docusaurus/docs/stores/custom-adapters.md +0 -376
  244. package/docusaurus/docs/stores/file.md +0 -236
  245. package/docusaurus/docs/stores/memory.md +0 -193
  246. package/docusaurus/docs/stores/overview.md +0 -274
  247. package/docusaurus/docs/stores/postgrest.md +0 -316
  248. package/docusaurus/docusaurus.config.ts +0 -148
  249. package/docusaurus/package-lock.json +0 -18029
  250. package/docusaurus/package.json +0 -47
  251. package/docusaurus/sidebars.ts +0 -155
  252. package/docusaurus/src/components/HomepageFeatures/index.tsx +0 -105
  253. package/docusaurus/src/components/HomepageFeatures/styles.module.css +0 -12
  254. package/docusaurus/src/css/custom.css +0 -169
  255. package/docusaurus/src/pages/index.module.css +0 -48
  256. package/docusaurus/src/pages/index.tsx +0 -110
  257. package/docusaurus/src/pages/markdown-page.md +0 -7
  258. package/docusaurus/static/.nojekyll +0 -0
  259. package/docusaurus/static/img/docusaurus-social-card.jpg +0 -0
  260. package/docusaurus/static/img/docusaurus.png +0 -0
  261. package/docusaurus/static/img/favicon.ico +0 -0
  262. package/docusaurus/static/img/logo.svg +0 -10
  263. package/docusaurus/static/img/undraw_docusaurus_mountain.svg +0 -171
  264. package/docusaurus/static/img/undraw_docusaurus_react.svg +0 -170
  265. package/docusaurus/static/img/undraw_docusaurus_tree.svg +0 -40
  266. package/docusaurus/tsconfig.json +0 -8
  267. package/examples/README.md +0 -112
  268. package/examples/error-handling/README.md +0 -150
  269. package/examples/error-handling/payment-processor.vague +0 -287
  270. package/examples/github-sync/README.md +0 -74
  271. package/examples/github-sync/fetch-issues.vague +0 -47
  272. package/examples/github-sync/fetch-prs.vague +0 -40
  273. package/examples/github-sync/mission.vague +0 -101
  274. package/examples/github-sync/normalize.vague +0 -70
  275. package/examples/jsonplaceholder/README.md +0 -28
  276. package/examples/jsonplaceholder/posts.vague +0 -48
  277. package/examples/petstore/README.md +0 -35
  278. package/examples/petstore/openapi.yaml +0 -97
  279. package/examples/petstore/sync.vague +0 -52
  280. package/examples/temporal-comparison/README.md +0 -297
  281. package/examples/temporal-comparison/reconciliation.vague +0 -355
  282. package/examples/temporal-comparison/temporal/activities/index.ts +0 -8
  283. package/examples/temporal-comparison/temporal/activities/shipstation.ts +0 -225
  284. package/examples/temporal-comparison/temporal/activities/shopify.ts +0 -257
  285. package/examples/temporal-comparison/temporal/activities/storage.ts +0 -198
  286. package/examples/temporal-comparison/temporal/activities/stripe.ts +0 -169
  287. package/examples/temporal-comparison/temporal/activities/validation.ts +0 -205
  288. package/examples/temporal-comparison/temporal/client/schedule.ts +0 -218
  289. package/examples/temporal-comparison/temporal/config/retry.ts +0 -63
  290. package/examples/temporal-comparison/temporal/types/index.ts +0 -129
  291. package/examples/temporal-comparison/temporal/workers/main.ts +0 -130
  292. package/examples/temporal-comparison/temporal/workflows/orderReconciliation.ts +0 -262
  293. package/examples/xero/README.md +0 -88
  294. package/examples/xero/invoices.vague +0 -189
  295. package/src/api-integration.test.ts +0 -954
  296. package/src/ast/index.ts +0 -1
  297. package/src/ast/nodes.ts +0 -310
  298. package/src/auth/auth.test.ts +0 -326
  299. package/src/auth/circuit-breaker.test.ts +0 -390
  300. package/src/auth/circuit-breaker.ts +0 -379
  301. package/src/auth/credentials.test.ts +0 -273
  302. package/src/auth/credentials.ts +0 -246
  303. package/src/auth/index.ts +0 -40
  304. package/src/auth/oauth2-provider.ts +0 -177
  305. package/src/auth/rate-limiter.ts +0 -459
  306. package/src/auth/token-store.ts +0 -177
  307. package/src/auth/types.ts +0 -159
  308. package/src/benchmark/e2e.bench.ts +0 -288
  309. package/src/benchmark/evaluator.bench.ts +0 -331
  310. package/src/benchmark/fixtures.ts +0 -295
  311. package/src/benchmark/index.ts +0 -108
  312. package/src/benchmark/lexer.bench.ts +0 -69
  313. package/src/benchmark/parser.bench.ts +0 -103
  314. package/src/benchmark/resilience.bench.ts +0 -193
  315. package/src/benchmark/store.bench.ts +0 -147
  316. package/src/benchmark/utils.ts +0 -230
  317. package/src/cli.ts +0 -313
  318. package/src/errors/errors.test.ts +0 -234
  319. package/src/errors/index.ts +0 -223
  320. package/src/execution/execution.test.ts +0 -307
  321. package/src/execution/index.ts +0 -21
  322. package/src/execution/state.ts +0 -207
  323. package/src/execution/store.ts +0 -188
  324. package/src/index.ts +0 -169
  325. package/src/integration.test.ts +0 -192
  326. package/src/interpreter/context.ts +0 -57
  327. package/src/interpreter/evaluator.test.ts +0 -796
  328. package/src/interpreter/evaluator.ts +0 -245
  329. package/src/interpreter/executor.ts +0 -946
  330. package/src/interpreter/fetch-handler.ts +0 -302
  331. package/src/interpreter/http.test.ts +0 -423
  332. package/src/interpreter/http.ts +0 -308
  333. package/src/interpreter/index.ts +0 -32
  334. package/src/interpreter/pagination.ts +0 -207
  335. package/src/interpreter/progress.test.ts +0 -276
  336. package/src/interpreter/schema-matcher.test.ts +0 -160
  337. package/src/interpreter/schema-matcher.ts +0 -168
  338. package/src/interpreter/signals.ts +0 -73
  339. package/src/interpreter/step-handlers/for-handler.ts +0 -65
  340. package/src/interpreter/step-handlers/index.ts +0 -17
  341. package/src/interpreter/step-handlers/map-handler.ts +0 -24
  342. package/src/interpreter/step-handlers/match-handler.ts +0 -101
  343. package/src/interpreter/step-handlers/store-handler.ts +0 -78
  344. package/src/interpreter/step-handlers/types.ts +0 -17
  345. package/src/interpreter/step-handlers/validate-handler.ts +0 -30
  346. package/src/interpreter/step-handlers/webhook-handler.ts +0 -142
  347. package/src/lexer/index.ts +0 -18
  348. package/src/lexer/lexer.test.ts +0 -316
  349. package/src/lexer/tokens.ts +0 -179
  350. package/src/loader/index.ts +0 -288
  351. package/src/loader/loader.test.ts +0 -360
  352. package/src/oas/index.ts +0 -4
  353. package/src/oas/loader.ts +0 -126
  354. package/src/oas/oas.test.ts +0 -254
  355. package/src/oas/validator.ts +0 -299
  356. package/src/parser/base.ts +0 -124
  357. package/src/parser/expressions.test.ts +0 -525
  358. package/src/parser/expressions.ts +0 -314
  359. package/src/parser/index.ts +0 -3
  360. package/src/parser/match.test.ts +0 -296
  361. package/src/parser/parser.test.ts +0 -739
  362. package/src/parser/parser.ts +0 -1469
  363. package/src/parser/schedule.test.ts +0 -287
  364. package/src/parser/webhook.test.ts +0 -248
  365. package/src/plugin.ts +0 -83
  366. package/src/scheduler/cron-parser.test.ts +0 -236
  367. package/src/scheduler/cron-parser.ts +0 -236
  368. package/src/scheduler/index.ts +0 -10
  369. package/src/scheduler/scheduler.ts +0 -443
  370. package/src/scheduler/types.ts +0 -71
  371. package/src/stores/factory.ts +0 -104
  372. package/src/stores/file.test.ts +0 -276
  373. package/src/stores/file.ts +0 -211
  374. package/src/stores/index.ts +0 -6
  375. package/src/stores/memory.test.ts +0 -238
  376. package/src/stores/memory.ts +0 -63
  377. package/src/stores/postgrest.test.ts +0 -488
  378. package/src/stores/postgrest.ts +0 -263
  379. package/src/stores/stores.test.ts +0 -197
  380. package/src/stores/types.ts +0 -58
  381. package/src/sync/index.ts +0 -16
  382. package/src/sync/state.ts +0 -126
  383. package/src/sync/store.ts +0 -139
  384. package/src/sync/sync.test.ts +0 -271
  385. package/src/utils/async.ts +0 -10
  386. package/src/utils/file.ts +0 -106
  387. package/src/utils/index.ts +0 -14
  388. package/src/utils/logger.ts +0 -53
  389. package/src/utils/path.ts +0 -47
  390. package/src/webhook/index.ts +0 -15
  391. package/src/webhook/server.test.ts +0 -253
  392. package/src/webhook/server.ts +0 -389
  393. package/src/webhook/store.ts +0 -239
  394. package/src/webhook/types.ts +0 -93
  395. package/tsconfig.json +0 -17
  396. package/vitest.config.ts +0 -39
@@ -1,305 +0,0 @@
1
- ---
2
- sidebar_position: 2
3
- ---
4
-
5
- # Cron Expressions
6
-
7
- Reqon supports full cron expression syntax for precise scheduling.
8
-
9
- ## Syntax
10
-
11
- ```vague
12
- schedule: cron "minute hour day month weekday"
13
- ```
14
-
15
- ## Field Reference
16
-
17
- | Field | Values | Special Characters |
18
- |-------|--------|-------------------|
19
- | Minute | 0-59 | * , - / |
20
- | Hour | 0-23 | * , - / |
21
- | Day of Month | 1-31 | * , - / |
22
- | Month | 1-12 | * , - / |
23
- | Day of Week | 0-6 (0=Sunday) | * , - / |
24
-
25
- ## Special Characters
26
-
27
- | Character | Meaning | Example |
28
- |-----------|---------|---------|
29
- | `*` | Any value | `* * * * *` = every minute |
30
- | `,` | Value list | `0,30 * * * *` = minute 0 and 30 |
31
- | `-` | Range | `0 9-17 * * *` = 9am to 5pm |
32
- | `/` | Step | `*/15 * * * *` = every 15 minutes |
33
-
34
- ## Common Patterns
35
-
36
- ### Every Minute
37
-
38
- ```vague
39
- schedule: cron "* * * * *"
40
- ```
41
-
42
- ### Every Hour
43
-
44
- ```vague
45
- // At minute 0
46
- schedule: cron "0 * * * *"
47
- ```
48
-
49
- ### Every N Minutes
50
-
51
- ```vague
52
- // Every 5 minutes
53
- schedule: cron "*/5 * * * *"
54
-
55
- // Every 15 minutes
56
- schedule: cron "*/15 * * * *"
57
-
58
- // Every 30 minutes
59
- schedule: cron "*/30 * * * *"
60
- ```
61
-
62
- ### Every N Hours
63
-
64
- ```vague
65
- // Every 2 hours
66
- schedule: cron "0 */2 * * *"
67
-
68
- // Every 6 hours
69
- schedule: cron "0 */6 * * *"
70
-
71
- // Every 12 hours
72
- schedule: cron "0 */12 * * *"
73
- ```
74
-
75
- ### Daily
76
-
77
- ```vague
78
- // At midnight
79
- schedule: cron "0 0 * * *"
80
-
81
- // At 6am
82
- schedule: cron "0 6 * * *"
83
-
84
- // At 9am
85
- schedule: cron "0 9 * * *"
86
-
87
- // At 11pm
88
- schedule: cron "0 23 * * *"
89
- ```
90
-
91
- ### Multiple Times Per Day
92
-
93
- ```vague
94
- // At 9am and 5pm
95
- schedule: cron "0 9,17 * * *"
96
-
97
- // At midnight, 8am, 4pm
98
- schedule: cron "0 0,8,16 * * *"
99
- ```
100
-
101
- ### Weekly
102
-
103
- ```vague
104
- // Every Sunday at midnight
105
- schedule: cron "0 0 * * 0"
106
-
107
- // Every Monday at 9am
108
- schedule: cron "0 9 * * 1"
109
-
110
- // Every Friday at 5pm
111
- schedule: cron "0 17 * * 5"
112
- ```
113
-
114
- ### Weekdays Only
115
-
116
- ```vague
117
- // Weekdays at 9am
118
- schedule: cron "0 9 * * 1-5"
119
-
120
- // Weekdays every hour during business hours
121
- schedule: cron "0 9-17 * * 1-5"
122
- ```
123
-
124
- ### Weekends Only
125
-
126
- ```vague
127
- // Weekends at noon
128
- schedule: cron "0 12 * * 0,6"
129
- ```
130
-
131
- ### Monthly
132
-
133
- ```vague
134
- // First of month at midnight
135
- schedule: cron "0 0 1 * *"
136
-
137
- // First of month at 6am
138
- schedule: cron "0 6 1 * *"
139
-
140
- // 15th of month at noon
141
- schedule: cron "0 12 15 * *"
142
-
143
- // Last day approach: run on 28th
144
- schedule: cron "0 0 28 * *"
145
- ```
146
-
147
- ### Quarterly
148
-
149
- ```vague
150
- // First day of quarter at 6am
151
- schedule: cron "0 6 1 1,4,7,10 *"
152
- ```
153
-
154
- ### Yearly
155
-
156
- ```vague
157
- // January 1st at midnight
158
- schedule: cron "0 0 1 1 *"
159
-
160
- // First Monday of year (approximate)
161
- schedule: cron "0 9 1-7 1 1"
162
- ```
163
-
164
- ## Complex Examples
165
-
166
- ### Business Hours Only
167
-
168
- ```vague
169
- // Every 30 minutes, 9am-5pm, weekdays
170
- schedule: cron "*/30 9-17 * * 1-5"
171
- ```
172
-
173
- ### Night Batch Jobs
174
-
175
- ```vague
176
- // At 2am every day
177
- schedule: cron "0 2 * * *"
178
- ```
179
-
180
- ### Multiple Specific Times
181
-
182
- ```vague
183
- // 8am, 12pm, 6pm every day
184
- schedule: cron "0 8,12,18 * * *"
185
- ```
186
-
187
- ### End of Month (Approximation)
188
-
189
- ```vague
190
- // 28th of every month
191
- schedule: cron "0 0 28 * *"
192
- ```
193
-
194
- ## Timezone Handling
195
-
196
- Cron expressions use the system timezone by default.
197
-
198
- ### Specify Timezone
199
-
200
- ```vague
201
- mission TimezoneSync {
202
- schedule: cron "0 9 * * *"
203
- timezone: "America/New_York"
204
- }
205
- ```
206
-
207
- ### UTC
208
-
209
- ```vague
210
- mission UTCSync {
211
- schedule: cron "0 9 * * *"
212
- timezone: "UTC"
213
- }
214
- ```
215
-
216
- ## Testing Cron Expressions
217
-
218
- ### Dry Run
219
-
220
- ```bash
221
- reqon ./mission.vague --dry-run
222
- # Shows: Next run at: 2024-01-20 09:00:00
223
- ```
224
-
225
- ### Validate Expression
226
-
227
- ```bash
228
- reqon --validate-cron "0 9 * * *"
229
- # Valid cron expression
230
- # Next 5 runs:
231
- # 2024-01-20 09:00:00
232
- # 2024-01-21 09:00:00
233
- # 2024-01-22 09:00:00
234
- # 2024-01-23 09:00:00
235
- # 2024-01-24 09:00:00
236
- ```
237
-
238
- ## Best Practices
239
-
240
- ### Avoid Midnight
241
-
242
- Many systems run jobs at midnight, causing load spikes:
243
-
244
- ```vague
245
- // Instead of 0 0 * * *
246
- schedule: cron "0 3 * * *" // 3am
247
- ```
248
-
249
- ### Spread Load
250
-
251
- Stagger related jobs:
252
-
253
- ```vague
254
- mission SyncCustomers {
255
- schedule: cron "0 * * * *" // On the hour
256
- }
257
-
258
- mission SyncOrders {
259
- schedule: cron "15 * * * *" // 15 past
260
- }
261
-
262
- mission SyncProducts {
263
- schedule: cron "30 * * * *" // 30 past
264
- }
265
- ```
266
-
267
- ### Consider Execution Time
268
-
269
- Account for job duration:
270
-
271
- ```vague
272
- // If job takes 10 minutes, don't schedule every 5
273
- schedule: cron "*/15 * * * *" // Every 15 minutes
274
-
275
- // Or use skipIfRunning
276
- skipIfRunning: true
277
- ```
278
-
279
- ## Troubleshooting
280
-
281
- ### Wrong Times
282
-
283
- Check timezone settings:
284
-
285
- ```bash
286
- date # System time
287
- TZ=UTC date # UTC time
288
- ```
289
-
290
- ### Missed Runs
291
-
292
- If daemon was down, jobs don't backfill. Consider:
293
-
294
- ```vague
295
- retryOnFailure: { maxAttempts: 3 }
296
- ```
297
-
298
- ### Expression Errors
299
-
300
- Validate syntax:
301
-
302
- ```bash
303
- reqon --validate-cron "invalid"
304
- # Error: Invalid cron expression
305
- ```
@@ -1,317 +0,0 @@
1
- ---
2
- sidebar_position: 4
3
- ---
4
-
5
- # Daemon Mode
6
-
7
- Daemon mode runs Reqon as a long-running service, executing scheduled missions automatically.
8
-
9
- ## Starting the Daemon
10
-
11
- ```bash
12
- reqon ./missions/ --daemon
13
- ```
14
-
15
- ## How It Works
16
-
17
- 1. Daemon loads all missions from the specified path
18
- 2. Parses schedule configurations
19
- 3. Runs missions according to their schedules
20
- 4. Continues until stopped
21
-
22
- ## Command Options
23
-
24
- ```bash
25
- reqon ./missions/ --daemon [options]
26
-
27
- Options:
28
- --auth <file> Credentials file
29
- --verbose Enable detailed logging
30
- --check-interval How often to check schedules (default: 1000ms)
31
- ```
32
-
33
- ## Example Setup
34
-
35
- ### Mission Files
36
-
37
- ```
38
- missions/
39
- ├── sync-customers.vague
40
- ├── sync-orders.vague
41
- └── daily-report.vague
42
- ```
43
-
44
- ### sync-customers.vague
45
-
46
- ```vague
47
- mission SyncCustomers {
48
- schedule: every 15 minutes
49
-
50
- source API { auth: bearer, base: "https://api.example.com" }
51
- store customers: file("customers")
52
-
53
- action Sync {
54
- get "/customers" { since: lastSync }
55
- store response -> customers { key: .id, upsert: true }
56
- }
57
-
58
- run Sync
59
- }
60
- ```
61
-
62
- ### Running
63
-
64
- ```bash
65
- reqon ./missions/ --daemon --auth ./credentials.json --verbose
66
- ```
67
-
68
- ## Process Management
69
-
70
- ### Foreground
71
-
72
- ```bash
73
- reqon ./missions/ --daemon
74
- ```
75
-
76
- Press Ctrl+C to stop.
77
-
78
- ### Background (Linux)
79
-
80
- ```bash
81
- nohup reqon ./missions/ --daemon > reqon.log 2>&1 &
82
- ```
83
-
84
- ### Systemd Service
85
-
86
- Create `/etc/systemd/system/reqon.service`:
87
-
88
- ```ini
89
- [Unit]
90
- Description=Reqon Data Sync Daemon
91
- After=network.target
92
-
93
- [Service]
94
- Type=simple
95
- User=reqon
96
- WorkingDirectory=/opt/reqon
97
- ExecStart=/usr/bin/npx reqon ./missions/ --daemon --auth ./credentials.json
98
- Restart=on-failure
99
- RestartSec=10
100
-
101
- [Install]
102
- WantedBy=multi-user.target
103
- ```
104
-
105
- Enable and start:
106
-
107
- ```bash
108
- sudo systemctl enable reqon
109
- sudo systemctl start reqon
110
- ```
111
-
112
- ### Docker
113
-
114
- Dockerfile:
115
-
116
- ```dockerfile
117
- FROM node:20-alpine
118
-
119
- WORKDIR /app
120
- COPY package*.json ./
121
- RUN npm install
122
-
123
- COPY . .
124
-
125
- CMD ["npx", "reqon", "./missions/", "--daemon"]
126
- ```
127
-
128
- docker-compose.yml:
129
-
130
- ```yaml
131
- version: '3'
132
- services:
133
- reqon:
134
- build: .
135
- volumes:
136
- - ./missions:/app/missions
137
- - ./credentials.json:/app/credentials.json
138
- - reqon-data:/app/.vague-data
139
- environment:
140
- - NODE_ENV=production
141
- restart: unless-stopped
142
-
143
- volumes:
144
- reqon-data:
145
- ```
146
-
147
- ## Graceful Shutdown
148
-
149
- Reqon handles SIGINT and SIGTERM:
150
-
151
- 1. Stops accepting new runs
152
- 2. Waits for in-progress missions to complete
153
- 3. Saves state
154
- 4. Exits cleanly
155
-
156
- ```bash
157
- # Graceful stop
158
- kill -TERM $(pgrep -f "reqon.*daemon")
159
-
160
- # Or with systemd
161
- systemctl stop reqon
162
- ```
163
-
164
- ## Health Checks
165
-
166
- ### Status Endpoint
167
-
168
- Enable HTTP health endpoint:
169
-
170
- ```bash
171
- reqon ./missions/ --daemon --health-port 8080
172
- ```
173
-
174
- Check health:
175
-
176
- ```bash
177
- curl http://localhost:8080/health
178
- # {"status":"ok","uptime":3600,"missionsLoaded":3}
179
- ```
180
-
181
- ### File-Based Health
182
-
183
- ```vague
184
- mission HealthCheck {
185
- schedule: every 1 minute
186
-
187
- action Check {
188
- store { status: "ok", timestamp: now() } -> health
189
- }
190
- }
191
- ```
192
-
193
- Monitor the health store file.
194
-
195
- ## Logging
196
-
197
- ### Log Levels
198
-
199
- ```bash
200
- # Default logging
201
- reqon ./missions/ --daemon
202
-
203
- # Verbose logging
204
- reqon ./missions/ --daemon --verbose
205
-
206
- # Environment variable
207
- REQON_LOG_LEVEL=debug reqon ./missions/ --daemon
208
- ```
209
-
210
- ### Log Output
211
-
212
- ```
213
- [2024-01-20 09:00:00] [INFO] Starting Reqon daemon
214
- [2024-01-20 09:00:00] [INFO] Loaded 3 missions
215
- [2024-01-20 09:00:00] [INFO] SyncCustomers: Next run at 09:15:00
216
- [2024-01-20 09:00:00] [INFO] SyncOrders: Next run at 09:05:00
217
- [2024-01-20 09:00:00] [INFO] DailyReport: Next run at 2024-01-21 00:00:00
218
- [2024-01-20 09:05:00] [INFO] SyncOrders: Starting run
219
- [2024-01-20 09:05:02] [INFO] SyncOrders: Completed (2.1s)
220
- ```
221
-
222
- ### Structured Logging
223
-
224
- ```bash
225
- REQON_LOG_FORMAT=json reqon ./missions/ --daemon
226
- ```
227
-
228
- ```json
229
- {"timestamp":"2024-01-20T09:00:00Z","level":"info","message":"Starting run","mission":"SyncCustomers"}
230
- ```
231
-
232
- ## Monitoring
233
-
234
- ### Metrics
235
-
236
- Export metrics with `--metrics-port`:
237
-
238
- ```bash
239
- reqon ./missions/ --daemon --metrics-port 9090
240
- ```
241
-
242
- Prometheus format:
243
-
244
- ```
245
- # HELP reqon_mission_runs_total Total mission runs
246
- reqon_mission_runs_total{mission="SyncCustomers",status="success"} 142
247
- reqon_mission_runs_total{mission="SyncCustomers",status="failure"} 3
248
-
249
- # HELP reqon_mission_duration_seconds Mission run duration
250
- reqon_mission_duration_seconds{mission="SyncCustomers",quantile="0.5"} 2.1
251
- ```
252
-
253
- ### Alerting
254
-
255
- Create alerting rules:
256
-
257
- ```yaml
258
- groups:
259
- - name: reqon
260
- rules:
261
- - alert: ReqonMissionFailing
262
- expr: rate(reqon_mission_runs_total{status="failure"}[5m]) > 0.1
263
- for: 10m
264
- labels:
265
- severity: warning
266
- annotations:
267
- summary: "Mission {{ $labels.mission }} is failing"
268
- ```
269
-
270
- ## Best Practices
271
-
272
- ### Use Separate Credentials
273
-
274
- ```bash
275
- # Production credentials
276
- reqon ./missions/ --daemon --auth ./prod-credentials.json
277
- ```
278
-
279
- ### Run as Non-Root
280
-
281
- ```bash
282
- # Create dedicated user
283
- useradd -r -s /bin/false reqon
284
-
285
- # Run as that user
286
- sudo -u reqon reqon ./missions/ --daemon
287
- ```
288
-
289
- ### Persistent Storage
290
-
291
- Ensure `.vague-data` is on persistent storage:
292
-
293
- ```yaml
294
- volumes:
295
- - /var/lib/reqon:/app/.vague-data
296
- ```
297
-
298
- ### Health Monitoring
299
-
300
- Always enable health checks:
301
-
302
- ```bash
303
- reqon ./missions/ --daemon --health-port 8080
304
- ```
305
-
306
- ### Log Rotation
307
-
308
- ```bash
309
- # Use logrotate
310
- /var/log/reqon/*.log {
311
- daily
312
- rotate 7
313
- compress
314
- missingok
315
- notifempty
316
- }
317
- ```