@probelabs/visor 0.1.107 → 0.1.111

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 (235) hide show
  1. package/README.md +6 -0
  2. package/defaults/task-refinement.yaml +7 -3
  3. package/defaults/visor.tests.yaml +13 -2
  4. package/defaults/visor.yaml +1 -0
  5. package/dist/663.index.js +3 -2
  6. package/dist/80.index.js +3 -2
  7. package/dist/ai-review-service.d.ts +13 -9
  8. package/dist/ai-review-service.d.ts.map +1 -1
  9. package/dist/cli-main.d.ts.map +1 -1
  10. package/dist/cli.d.ts.map +1 -1
  11. package/dist/config.d.ts.map +1 -1
  12. package/dist/debug-visualizer/ws-server.d.ts +7 -1
  13. package/dist/debug-visualizer/ws-server.d.ts.map +1 -1
  14. package/dist/defaults/task-refinement.yaml +7 -3
  15. package/dist/defaults/visor.tests.yaml +13 -2
  16. package/dist/defaults/visor.yaml +1 -0
  17. package/dist/docs/advanced-ai.md +60 -1
  18. package/dist/docs/ai-configuration.md +67 -0
  19. package/dist/docs/ai-custom-tools-usage.md +261 -0
  20. package/dist/docs/ai-custom-tools.md +392 -0
  21. package/dist/docs/bot-transports-rfc.md +23 -0
  22. package/dist/docs/configuration.md +21 -0
  23. package/dist/docs/engine-pause-resume-rfc.md +192 -0
  24. package/dist/docs/lifecycle-hooks.md +253 -0
  25. package/dist/docs/liquid-templates.md +143 -0
  26. package/dist/docs/providers/git-checkout.md +589 -0
  27. package/dist/docs/recipes.md +458 -5
  28. package/dist/docs/rfc/git-checkout-step.md +601 -0
  29. package/dist/docs/rfc/on_init-hook.md +1294 -0
  30. package/dist/docs/rfc/workspace-isolation.md +216 -0
  31. package/dist/docs/router-patterns.md +339 -0
  32. package/dist/event-bus/types.d.ts +14 -0
  33. package/dist/event-bus/types.d.ts.map +1 -1
  34. package/dist/examples/ai-custom-tools-example.yaml +206 -0
  35. package/dist/examples/ai-custom-tools-simple.yaml +76 -0
  36. package/dist/examples/git-checkout-basic.yaml +32 -0
  37. package/dist/examples/git-checkout-compare.yaml +59 -0
  38. package/dist/examples/git-checkout-cross-repo.yaml +76 -0
  39. package/dist/examples/on-init-import-demo.yaml +179 -0
  40. package/dist/examples/reusable-tools.yaml +92 -0
  41. package/dist/examples/reusable-workflows.yaml +88 -0
  42. package/dist/examples/session-reuse-self.yaml +81 -0
  43. package/dist/examples/slack-simple-chat.yaml +775 -0
  44. package/dist/failure-condition-evaluator.d.ts +2 -0
  45. package/dist/failure-condition-evaluator.d.ts.map +1 -1
  46. package/dist/frontends/github-frontend.d.ts +20 -0
  47. package/dist/frontends/github-frontend.d.ts.map +1 -1
  48. package/dist/frontends/host.d.ts +4 -0
  49. package/dist/frontends/host.d.ts.map +1 -1
  50. package/dist/frontends/slack-frontend.d.ts +58 -0
  51. package/dist/frontends/slack-frontend.d.ts.map +1 -0
  52. package/dist/generated/config-schema.d.ts +409 -41
  53. package/dist/generated/config-schema.d.ts.map +1 -1
  54. package/dist/generated/config-schema.json +436 -47
  55. package/dist/github-comments.d.ts +2 -0
  56. package/dist/github-comments.d.ts.map +1 -1
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +83587 -56085
  59. package/dist/liquid-extensions.d.ts.map +1 -1
  60. package/dist/logger.d.ts +1 -0
  61. package/dist/logger.d.ts.map +1 -1
  62. package/dist/output/traces/{run-2025-11-21T11-50-46-505Z.ndjson → run-2026-01-20T19-22-58-043Z.ndjson} +91 -91
  63. package/dist/output/traces/run-2026-01-20T19-23-52-175Z.ndjson +1067 -0
  64. package/dist/output-formatters.d.ts.map +1 -1
  65. package/dist/providers/ai-check-provider.d.ts +12 -0
  66. package/dist/providers/ai-check-provider.d.ts.map +1 -1
  67. package/dist/providers/check-provider-registry.d.ts.map +1 -1
  68. package/dist/providers/check-provider.interface.d.ts +9 -0
  69. package/dist/providers/check-provider.interface.d.ts.map +1 -1
  70. package/dist/providers/command-check-provider.d.ts.map +1 -1
  71. package/dist/providers/custom-tool-executor.d.ts.map +1 -1
  72. package/dist/providers/git-checkout-provider.d.ts +25 -0
  73. package/dist/providers/git-checkout-provider.d.ts.map +1 -0
  74. package/dist/providers/http-client-provider.d.ts +3 -0
  75. package/dist/providers/http-client-provider.d.ts.map +1 -1
  76. package/dist/providers/human-input-check-provider.d.ts +2 -0
  77. package/dist/providers/human-input-check-provider.d.ts.map +1 -1
  78. package/dist/providers/log-check-provider.d.ts.map +1 -1
  79. package/dist/providers/mcp-check-provider.d.ts +1 -1
  80. package/dist/providers/mcp-check-provider.d.ts.map +1 -1
  81. package/dist/providers/mcp-custom-sse-server.d.ts +66 -0
  82. package/dist/providers/mcp-custom-sse-server.d.ts.map +1 -0
  83. package/dist/providers/memory-check-provider.d.ts.map +1 -1
  84. package/dist/providers/script-check-provider.d.ts.map +1 -1
  85. package/dist/providers/workflow-check-provider.d.ts.map +1 -1
  86. package/dist/reviewer.d.ts.map +1 -1
  87. package/dist/sdk/check-provider-registry-534KL5HT.mjs +27 -0
  88. package/dist/sdk/chunk-23L3QRYX.mjs +16872 -0
  89. package/dist/sdk/chunk-23L3QRYX.mjs.map +1 -0
  90. package/dist/sdk/{chunk-OOZITMRU.mjs → chunk-3OMWVM6J.mjs} +11 -1
  91. package/dist/sdk/{chunk-OOZITMRU.mjs.map → chunk-3OMWVM6J.mjs.map} +1 -1
  92. package/dist/sdk/{chunk-37ZSCMFC.mjs → chunk-7UK3NIIT.mjs} +2 -2
  93. package/dist/sdk/{chunk-VMPLF6FT.mjs → chunk-AGIZJ4UZ.mjs} +50 -4
  94. package/dist/sdk/chunk-AGIZJ4UZ.mjs.map +1 -0
  95. package/dist/sdk/{chunk-IEO6CFLG.mjs → chunk-AIVFBIS4.mjs} +161 -5
  96. package/dist/sdk/chunk-AIVFBIS4.mjs.map +1 -0
  97. package/dist/sdk/chunk-AK6BVWIT.mjs +426 -0
  98. package/dist/sdk/chunk-AK6BVWIT.mjs.map +1 -0
  99. package/dist/sdk/chunk-AUT26LHW.mjs +139 -0
  100. package/dist/sdk/chunk-AUT26LHW.mjs.map +1 -0
  101. package/dist/sdk/chunk-BOVFH3LI.mjs +232 -0
  102. package/dist/sdk/chunk-BOVFH3LI.mjs.map +1 -0
  103. package/dist/sdk/chunk-HTOKWMPO.mjs +157 -0
  104. package/dist/sdk/chunk-HTOKWMPO.mjs.map +1 -0
  105. package/dist/sdk/{chunk-6Y4YTKCF.mjs → chunk-NAW3DB3I.mjs} +2 -2
  106. package/dist/sdk/{chunk-OWUVOILT.mjs → chunk-QR7MOMJH.mjs} +4 -3
  107. package/dist/sdk/{chunk-OWUVOILT.mjs.map → chunk-QR7MOMJH.mjs.map} +1 -1
  108. package/dist/sdk/{chunk-PTL3K3PN.mjs → chunk-QY2XYPEV.mjs} +488 -60
  109. package/dist/sdk/chunk-QY2XYPEV.mjs.map +1 -0
  110. package/dist/sdk/{chunk-OZJ263FM.mjs → chunk-SIWNBRTK.mjs} +29 -215
  111. package/dist/sdk/chunk-SIWNBRTK.mjs.map +1 -0
  112. package/dist/sdk/command-executor-TYUV6HUS.mjs +14 -0
  113. package/dist/sdk/{config-M4ZNO6NU.mjs → config-YNC2EOOT.mjs} +5 -3
  114. package/dist/sdk/{failure-condition-evaluator-NBO5YRXW.mjs → failure-condition-evaluator-YGTF2GHG.mjs} +6 -5
  115. package/dist/sdk/{github-frontend-4AWRJT7D.mjs → github-frontend-SIAEOCON.mjs} +190 -12
  116. package/dist/sdk/github-frontend-SIAEOCON.mjs.map +1 -0
  117. package/dist/sdk/{host-7GBC3S7L.mjs → host-DXUYTNMU.mjs} +5 -2
  118. package/dist/sdk/host-DXUYTNMU.mjs.map +1 -0
  119. package/dist/sdk/{liquid-extensions-C7EG3YKH.mjs → liquid-extensions-PKWCKK7E.mjs} +5 -4
  120. package/dist/sdk/memory-store-XGBB7LX7.mjs +12 -0
  121. package/dist/sdk/prompt-state-YRJY6QAL.mjs +16 -0
  122. package/dist/sdk/{renderer-schema-6RF26VUS.mjs → renderer-schema-LPKN5UJS.mjs} +3 -2
  123. package/dist/sdk/{renderer-schema-6RF26VUS.mjs.map → renderer-schema-LPKN5UJS.mjs.map} +1 -1
  124. package/dist/sdk/{routing-RP56JTV2.mjs → routing-6N45MJ4F.mjs} +7 -6
  125. package/dist/sdk/sdk.d.mts +219 -5
  126. package/dist/sdk/sdk.d.ts +219 -5
  127. package/dist/sdk/sdk.js +21329 -14908
  128. package/dist/sdk/sdk.js.map +1 -1
  129. package/dist/sdk/sdk.mjs +407 -12874
  130. package/dist/sdk/sdk.mjs.map +1 -1
  131. package/dist/sdk/{session-registry-N5FFYFTM.mjs → session-registry-4E6YRQ77.mjs} +2 -2
  132. package/dist/sdk/session-registry-4E6YRQ77.mjs.map +1 -0
  133. package/dist/sdk/slack-frontend-BVKW3GD5.mjs +735 -0
  134. package/dist/sdk/slack-frontend-BVKW3GD5.mjs.map +1 -0
  135. package/dist/sdk/{tracer-init-WP4X46IF.mjs → tracer-init-GSLPPLCD.mjs} +2 -2
  136. package/dist/sdk/tracer-init-GSLPPLCD.mjs.map +1 -0
  137. package/dist/sdk/workflow-registry-R6KSACFR.mjs +12 -0
  138. package/dist/sdk/workflow-registry-R6KSACFR.mjs.map +1 -0
  139. package/dist/slack/adapter.d.ts +36 -0
  140. package/dist/slack/adapter.d.ts.map +1 -0
  141. package/dist/slack/cache-prewarmer.d.ts +31 -0
  142. package/dist/slack/cache-prewarmer.d.ts.map +1 -0
  143. package/dist/slack/client.d.ts +77 -0
  144. package/dist/slack/client.d.ts.map +1 -0
  145. package/dist/slack/markdown.d.ts +45 -0
  146. package/dist/slack/markdown.d.ts.map +1 -0
  147. package/dist/slack/prompt-state.d.ts +33 -0
  148. package/dist/slack/prompt-state.d.ts.map +1 -0
  149. package/dist/slack/rate-limiter.d.ts +56 -0
  150. package/dist/slack/rate-limiter.d.ts.map +1 -0
  151. package/dist/slack/signature.d.ts +2 -0
  152. package/dist/slack/signature.d.ts.map +1 -0
  153. package/dist/slack/socket-runner.d.ts +42 -0
  154. package/dist/slack/socket-runner.d.ts.map +1 -0
  155. package/dist/slack/thread-cache.d.ts +51 -0
  156. package/dist/slack/thread-cache.d.ts.map +1 -0
  157. package/dist/state-machine/context/build-engine-context.d.ts +8 -0
  158. package/dist/state-machine/context/build-engine-context.d.ts.map +1 -1
  159. package/dist/state-machine/dispatch/execution-invoker.d.ts.map +1 -1
  160. package/dist/state-machine/dispatch/foreach-processor.d.ts.map +1 -1
  161. package/dist/state-machine/dispatch/on-init-handlers.d.ts +43 -0
  162. package/dist/state-machine/dispatch/on-init-handlers.d.ts.map +1 -0
  163. package/dist/state-machine/dispatch/stats-manager.d.ts.map +1 -1
  164. package/dist/state-machine/dispatch/template-renderer.d.ts.map +1 -1
  165. package/dist/state-machine/runner.d.ts +6 -0
  166. package/dist/state-machine/runner.d.ts.map +1 -1
  167. package/dist/state-machine/states/level-dispatch.d.ts.map +1 -1
  168. package/dist/state-machine/states/plan-ready.d.ts.map +1 -1
  169. package/dist/state-machine/states/routing.d.ts.map +1 -1
  170. package/dist/state-machine/states/wave-planning.d.ts.map +1 -1
  171. package/dist/state-machine/workflow-projection.d.ts.map +1 -1
  172. package/dist/state-machine-execution-engine.d.ts +21 -9
  173. package/dist/state-machine-execution-engine.d.ts.map +1 -1
  174. package/dist/telemetry/state-capture.d.ts +5 -0
  175. package/dist/telemetry/state-capture.d.ts.map +1 -1
  176. package/dist/test-runner/core/flow-stage.d.ts.map +1 -1
  177. package/dist/test-runner/core/test-execution-wrapper.d.ts.map +1 -1
  178. package/dist/test-runner/evaluators.d.ts +37 -4
  179. package/dist/test-runner/evaluators.d.ts.map +1 -1
  180. package/dist/test-runner/index.d.ts +7 -0
  181. package/dist/test-runner/index.d.ts.map +1 -1
  182. package/dist/test-runner/recorders/slack-recorder.d.ts +17 -0
  183. package/dist/test-runner/recorders/slack-recorder.d.ts.map +1 -0
  184. package/dist/test-runner/validator.d.ts.map +1 -1
  185. package/dist/traces/{run-2025-11-21T11-50-46-505Z.ndjson → run-2026-01-20T19-22-58-043Z.ndjson} +91 -91
  186. package/dist/traces/run-2026-01-20T19-23-52-175Z.ndjson +1067 -0
  187. package/dist/types/bot.d.ts +109 -0
  188. package/dist/types/bot.d.ts.map +1 -0
  189. package/dist/types/cli.d.ts +4 -0
  190. package/dist/types/cli.d.ts.map +1 -1
  191. package/dist/types/config.d.ts +182 -5
  192. package/dist/types/config.d.ts.map +1 -1
  193. package/dist/types/engine.d.ts +5 -0
  194. package/dist/types/engine.d.ts.map +1 -1
  195. package/dist/types/git-checkout.d.ts +76 -0
  196. package/dist/types/git-checkout.d.ts.map +1 -0
  197. package/dist/utils/json-text-extractor.d.ts +17 -0
  198. package/dist/utils/json-text-extractor.d.ts.map +1 -0
  199. package/dist/utils/sandbox.d.ts +10 -0
  200. package/dist/utils/sandbox.d.ts.map +1 -1
  201. package/dist/utils/template-context.d.ts +1 -0
  202. package/dist/utils/template-context.d.ts.map +1 -1
  203. package/dist/utils/tracer-init.d.ts.map +1 -1
  204. package/dist/utils/workspace-manager.d.ts +118 -0
  205. package/dist/utils/workspace-manager.d.ts.map +1 -0
  206. package/dist/utils/worktree-cleanup.d.ts +33 -0
  207. package/dist/utils/worktree-cleanup.d.ts.map +1 -0
  208. package/dist/utils/worktree-manager.d.ts +153 -0
  209. package/dist/utils/worktree-manager.d.ts.map +1 -0
  210. package/dist/webhook-server.d.ts.map +1 -1
  211. package/dist/workflow-executor.d.ts.map +1 -1
  212. package/dist/workflow-registry.d.ts.map +1 -1
  213. package/package.json +4 -2
  214. package/dist/output/traces/run-2025-11-21T11-51-33-674Z.ndjson +0 -839
  215. package/dist/sdk/chunk-IEO6CFLG.mjs.map +0 -1
  216. package/dist/sdk/chunk-JEHPDJIF.mjs +0 -223
  217. package/dist/sdk/chunk-JEHPDJIF.mjs.map +0 -1
  218. package/dist/sdk/chunk-OZJ263FM.mjs.map +0 -1
  219. package/dist/sdk/chunk-PTL3K3PN.mjs.map +0 -1
  220. package/dist/sdk/chunk-VMPLF6FT.mjs.map +0 -1
  221. package/dist/sdk/github-frontend-4AWRJT7D.mjs.map +0 -1
  222. package/dist/sdk/host-7GBC3S7L.mjs.map +0 -1
  223. package/dist/sdk/memory-store-GJACZC2A.mjs +0 -11
  224. package/dist/sdk/workflow-registry-2YIIXQCK.mjs +0 -11
  225. package/dist/traces/run-2025-11-21T11-51-33-674Z.ndjson +0 -839
  226. /package/dist/sdk/{config-M4ZNO6NU.mjs.map → check-provider-registry-534KL5HT.mjs.map} +0 -0
  227. /package/dist/sdk/{chunk-37ZSCMFC.mjs.map → chunk-7UK3NIIT.mjs.map} +0 -0
  228. /package/dist/sdk/{chunk-6Y4YTKCF.mjs.map → chunk-NAW3DB3I.mjs.map} +0 -0
  229. /package/dist/sdk/{failure-condition-evaluator-NBO5YRXW.mjs.map → command-executor-TYUV6HUS.mjs.map} +0 -0
  230. /package/dist/sdk/{liquid-extensions-C7EG3YKH.mjs.map → config-YNC2EOOT.mjs.map} +0 -0
  231. /package/dist/sdk/{memory-store-GJACZC2A.mjs.map → failure-condition-evaluator-YGTF2GHG.mjs.map} +0 -0
  232. /package/dist/sdk/{routing-RP56JTV2.mjs.map → liquid-extensions-PKWCKK7E.mjs.map} +0 -0
  233. /package/dist/sdk/{session-registry-N5FFYFTM.mjs.map → memory-store-XGBB7LX7.mjs.map} +0 -0
  234. /package/dist/sdk/{tracer-init-WP4X46IF.mjs.map → prompt-state-YRJY6QAL.mjs.map} +0 -0
  235. /package/dist/sdk/{workflow-registry-2YIIXQCK.mjs.map → routing-6N45MJ4F.mjs.map} +0 -0
@@ -46,6 +46,20 @@ export declare const configSchema: {
46
46
  };
47
47
  readonly description: "Import workflow definitions from external files or URLs";
48
48
  };
49
+ readonly inputs: {
50
+ readonly type: "array";
51
+ readonly items: {
52
+ readonly $ref: "#/definitions/WorkflowInput";
53
+ };
54
+ readonly description: "Workflow inputs (for standalone reusable workflows)";
55
+ };
56
+ readonly outputs: {
57
+ readonly type: "array";
58
+ readonly items: {
59
+ readonly $ref: "#/definitions/WorkflowOutput";
60
+ };
61
+ readonly description: "Workflow outputs (for standalone reusable workflows)";
62
+ };
49
63
  readonly steps: {
50
64
  readonly $ref: "#/definitions/Record%3Cstring%2CCheckConfig%3E";
51
65
  readonly description: "Step configurations (recommended)";
@@ -56,7 +70,7 @@ export declare const configSchema: {
56
70
  };
57
71
  readonly output: {
58
72
  readonly $ref: "#/definitions/OutputConfig";
59
- readonly description: "Output configuration";
73
+ readonly description: "Output configuration (optional - defaults provided)";
60
74
  };
61
75
  readonly http_server: {
62
76
  readonly $ref: "#/definitions/HttpServerConfig";
@@ -128,8 +142,16 @@ export declare const configSchema: {
128
142
  };
129
143
  readonly description: "Optional integrations: event-driven frontends (e.g., ndjson-sink, github)";
130
144
  };
145
+ readonly workspace: {
146
+ readonly $ref: "#/definitions/WorkspaceConfig";
147
+ readonly description: "Workspace isolation configuration for sandboxed execution";
148
+ };
149
+ readonly slack: {
150
+ readonly $ref: "#/definitions/SlackConfig";
151
+ readonly description: "Slack configuration";
152
+ };
131
153
  };
132
- readonly required: readonly ["output", "version"];
154
+ readonly required: readonly ["version"];
133
155
  readonly patternProperties: {
134
156
  readonly '^x-': {};
135
157
  };
@@ -232,6 +254,63 @@ export declare const configSchema: {
232
254
  readonly type: "string";
233
255
  };
234
256
  };
257
+ readonly WorkflowInput: {
258
+ readonly type: "object";
259
+ readonly properties: {
260
+ readonly name: {
261
+ readonly type: "string";
262
+ readonly description: "Input parameter name";
263
+ };
264
+ readonly schema: {
265
+ readonly $ref: "#/definitions/Record%3Cstring%2Cunknown%3E";
266
+ readonly description: "JSON Schema for the input";
267
+ };
268
+ readonly required: {
269
+ readonly type: "boolean";
270
+ readonly description: "Whether this input is required";
271
+ };
272
+ readonly default: {
273
+ readonly description: "Default value if not provided";
274
+ };
275
+ readonly description: {
276
+ readonly type: "string";
277
+ readonly description: "Human-readable description";
278
+ };
279
+ };
280
+ readonly required: readonly ["name"];
281
+ readonly additionalProperties: false;
282
+ readonly description: "Workflow input definition for standalone reusable workflows";
283
+ readonly patternProperties: {
284
+ readonly '^x-': {};
285
+ };
286
+ };
287
+ readonly WorkflowOutput: {
288
+ readonly type: "object";
289
+ readonly properties: {
290
+ readonly name: {
291
+ readonly type: "string";
292
+ readonly description: "Output name";
293
+ };
294
+ readonly description: {
295
+ readonly type: "string";
296
+ readonly description: "Human-readable description";
297
+ };
298
+ readonly value: {
299
+ readonly type: "string";
300
+ readonly description: "Value using Liquid template syntax (references step outputs)";
301
+ };
302
+ readonly value_js: {
303
+ readonly type: "string";
304
+ readonly description: "Value using JavaScript expression (alternative to value)";
305
+ };
306
+ };
307
+ readonly required: readonly ["name"];
308
+ readonly additionalProperties: false;
309
+ readonly description: "Workflow output definition for standalone reusable workflows";
310
+ readonly patternProperties: {
311
+ readonly '^x-': {};
312
+ };
313
+ };
235
314
  readonly 'Record<string,CheckConfig>': {
236
315
  readonly type: "object";
237
316
  readonly additionalProperties: {
@@ -351,6 +430,13 @@ export declare const configSchema: {
351
430
  readonly $ref: "#/definitions/Record%3Cstring%2CMcpServerConfig%3E";
352
431
  readonly description: "MCP servers for this AI check - overrides global setting";
353
432
  };
433
+ readonly ai_custom_tools: {
434
+ readonly type: "array";
435
+ readonly items: {
436
+ readonly type: "string";
437
+ };
438
+ readonly description: "List of custom tool names to expose to this AI check via ephemeral SSE MCP server";
439
+ };
354
440
  readonly claude_code: {
355
441
  readonly $ref: "#/definitions/ClaudeCodeConfig";
356
442
  readonly description: "Claude Code configuration (for claude-code type checks)";
@@ -364,11 +450,15 @@ export declare const configSchema: {
364
450
  readonly description: "Timeout in seconds for command execution (default: 60)";
365
451
  };
366
452
  readonly depends_on: {
367
- readonly type: "array";
368
- readonly items: {
453
+ readonly anyOf: readonly [{
369
454
  readonly type: "string";
370
- };
371
- readonly description: "Check IDs that this check depends on (optional)";
455
+ }, {
456
+ readonly type: "array";
457
+ readonly items: {
458
+ readonly type: "string";
459
+ };
460
+ }];
461
+ readonly description: "Check IDs that this check depends on (optional). Accepts single string or array.";
372
462
  };
373
463
  readonly group: {
374
464
  readonly type: "string";
@@ -440,6 +530,10 @@ export declare const configSchema: {
440
530
  readonly type: "boolean";
441
531
  readonly description: "Alias for fanout: 'reduce'";
442
532
  };
533
+ readonly on_init: {
534
+ readonly $ref: "#/definitions/OnInitConfig";
535
+ readonly description: "Init routing configuration for this check (runs before execution/preprocessing)";
536
+ };
443
537
  readonly on_fail: {
444
538
  readonly $ref: "#/definitions/OnFailConfig";
445
539
  readonly description: "Failure routing configuration for this check (retry/goto/run)";
@@ -592,13 +686,89 @@ export declare const configSchema: {
592
686
  readonly description: "Arguments/inputs for the workflow";
593
687
  };
594
688
  readonly overrides: {
595
- readonly $ref: "#/definitions/Record%3Cstring%2CPartial%3Cinterface-src_types_config.ts-10692-20779-src_types_config.ts-0-34222%3E%3E";
689
+ readonly $ref: "#/definitions/Record%3Cstring%2CPartial%3Cinterface-src_types_config.ts-11359-23556-src_types_config.ts-0-40845%3E%3E";
596
690
  readonly description: "Override specific step configurations in the workflow";
597
691
  };
598
692
  readonly output_mapping: {
599
693
  readonly $ref: "#/definitions/Record%3Cstring%2Cstring%3E";
600
694
  readonly description: "Map workflow outputs to check outputs";
601
695
  };
696
+ readonly workflow_inputs: {
697
+ readonly $ref: "#/definitions/Record%3Cstring%2Cunknown%3E";
698
+ readonly description: "Alias for args - workflow inputs (backward compatibility)";
699
+ };
700
+ readonly config: {
701
+ readonly type: "string";
702
+ readonly description: "Config file path - alternative to workflow ID (loads a Visor config file as workflow)";
703
+ };
704
+ readonly workflow_overrides: {
705
+ readonly $ref: "#/definitions/Record%3Cstring%2CPartial%3Cinterface-src_types_config.ts-11359-23556-src_types_config.ts-0-40845%3E%3E";
706
+ readonly description: "Alias for overrides - workflow step overrides (backward compatibility)";
707
+ };
708
+ readonly ref: {
709
+ readonly type: "string";
710
+ readonly description: "Git reference to checkout (branch, tag, commit SHA) - supports templates";
711
+ };
712
+ readonly repository: {
713
+ readonly type: "string";
714
+ readonly description: "Repository URL or owner/repo format (defaults to current repository)";
715
+ };
716
+ readonly token: {
717
+ readonly type: "string";
718
+ readonly description: "GitHub token for private repositories (defaults to GITHUB_TOKEN env)";
719
+ };
720
+ readonly fetch_depth: {
721
+ readonly type: "number";
722
+ readonly description: "Number of commits to fetch (0 for full history, default: 1)";
723
+ };
724
+ readonly fetch_tags: {
725
+ readonly type: "boolean";
726
+ readonly description: "Whether to fetch tags (default: false)";
727
+ };
728
+ readonly submodules: {
729
+ readonly anyOf: readonly [{
730
+ readonly type: "boolean";
731
+ }, {
732
+ readonly type: "string";
733
+ readonly const: "recursive";
734
+ }];
735
+ readonly description: "Checkout submodules: false, true, or 'recursive'";
736
+ };
737
+ readonly working_directory: {
738
+ readonly type: "string";
739
+ readonly description: "Working directory for the checkout (defaults to temp directory)";
740
+ };
741
+ readonly use_worktree: {
742
+ readonly type: "boolean";
743
+ readonly description: "Use git worktree for efficient parallel checkouts (default: true)";
744
+ };
745
+ readonly clean: {
746
+ readonly type: "boolean";
747
+ readonly description: "Clean the working directory before checkout (default: true)";
748
+ };
749
+ readonly sparse_checkout: {
750
+ readonly type: "array";
751
+ readonly items: {
752
+ readonly type: "string";
753
+ };
754
+ readonly description: "Sparse checkout paths - only checkout specific directories/files";
755
+ };
756
+ readonly lfs: {
757
+ readonly type: "boolean";
758
+ readonly description: "Enable Git LFS (Large File Storage)";
759
+ };
760
+ readonly clone_timeout_ms: {
761
+ readonly type: "number";
762
+ readonly description: "Timeout in ms for cloning the bare repository (default: 300000 = 5 min)";
763
+ };
764
+ readonly cleanup_on_failure: {
765
+ readonly type: "boolean";
766
+ readonly description: "Clean up worktree on failure (default: true)";
767
+ };
768
+ readonly persist_worktree: {
769
+ readonly type: "boolean";
770
+ readonly description: "Keep worktree after workflow completion (default: false)";
771
+ };
602
772
  };
603
773
  readonly additionalProperties: false;
604
774
  readonly description: "Configuration for a single check";
@@ -608,7 +778,7 @@ export declare const configSchema: {
608
778
  };
609
779
  readonly ConfigCheckType: {
610
780
  readonly type: "string";
611
- readonly enum: readonly ["ai", "command", "script", "http", "http_input", "http_client", "noop", "log", "memory", "github", "claude-code", "mcp", "human-input", "workflow"];
781
+ readonly enum: readonly ["ai", "command", "script", "http", "http_input", "http_client", "noop", "log", "memory", "github", "claude-code", "mcp", "human-input", "workflow", "git-checkout"];
612
782
  readonly description: "Valid check types in configuration";
613
783
  };
614
784
  readonly EventTrigger: {
@@ -656,6 +826,14 @@ export declare const configSchema: {
656
826
  readonly type: "boolean";
657
827
  readonly description: "Skip adding code context (diffs, files, PR info) to the prompt";
658
828
  };
829
+ readonly skip_slack_context: {
830
+ readonly type: "boolean";
831
+ readonly description: "Skip adding Slack conversation context to the prompt (when running under Slack)";
832
+ };
833
+ readonly skip_transport_context: {
834
+ readonly type: "boolean";
835
+ readonly description: "Skip adding transport-specific context (e.g., GitHub PR/issue XML, Slack conversation XML) to the prompt. When true, this behaves like setting both skip_code_context and skip_slack_context to true, unless those are explicitly overridden.";
836
+ };
659
837
  readonly mcpServers: {
660
838
  readonly $ref: "#/definitions/Record%3Cstring%2CMcpServerConfig%3E";
661
839
  readonly description: "MCP servers configuration";
@@ -695,6 +873,10 @@ export declare const configSchema: {
695
873
  readonly $ref: "#/definitions/BashConfig";
696
874
  readonly description: "Advanced bash command execution configuration";
697
875
  };
876
+ readonly completion_prompt: {
877
+ readonly type: "string";
878
+ readonly description: "Completion prompt for post-completion validation/review (runs after attempt_completion)";
879
+ };
698
880
  };
699
881
  readonly additionalProperties: false;
700
882
  readonly description: "AI provider configuration";
@@ -1012,6 +1194,156 @@ export declare const configSchema: {
1012
1194
  readonly enum: readonly ["error", "warning", "info"];
1013
1195
  readonly description: "Failure condition severity levels";
1014
1196
  };
1197
+ readonly OnInitConfig: {
1198
+ readonly type: "object";
1199
+ readonly properties: {
1200
+ readonly run: {
1201
+ readonly type: "array";
1202
+ readonly items: {
1203
+ readonly $ref: "#/definitions/OnInitRunItem";
1204
+ };
1205
+ readonly description: "Items to run before this check executes";
1206
+ };
1207
+ readonly run_js: {
1208
+ readonly type: "string";
1209
+ readonly description: "Dynamic init items: JS expression returning OnInitRunItem[]";
1210
+ };
1211
+ readonly transitions: {
1212
+ readonly type: "array";
1213
+ readonly items: {
1214
+ readonly $ref: "#/definitions/TransitionRule";
1215
+ };
1216
+ readonly description: "Declarative transitions (optional, for advanced use cases)";
1217
+ };
1218
+ };
1219
+ readonly additionalProperties: false;
1220
+ readonly description: "Init routing configuration per check Runs BEFORE the check executes (preprocessing/setup)";
1221
+ readonly patternProperties: {
1222
+ readonly '^x-': {};
1223
+ };
1224
+ };
1225
+ readonly OnInitRunItem: {
1226
+ readonly anyOf: readonly [{
1227
+ readonly $ref: "#/definitions/OnInitToolInvocation";
1228
+ }, {
1229
+ readonly $ref: "#/definitions/OnInitStepInvocation";
1230
+ }, {
1231
+ readonly $ref: "#/definitions/OnInitWorkflowInvocation";
1232
+ }, {
1233
+ readonly type: "string";
1234
+ }];
1235
+ readonly description: "Unified on_init run item - can be tool, step, workflow, or plain string";
1236
+ };
1237
+ readonly OnInitToolInvocation: {
1238
+ readonly type: "object";
1239
+ readonly properties: {
1240
+ readonly tool: {
1241
+ readonly type: "string";
1242
+ readonly description: "Tool name (must exist in tools: section)";
1243
+ };
1244
+ readonly with: {
1245
+ readonly $ref: "#/definitions/Record%3Cstring%2Cunknown%3E";
1246
+ readonly description: "Arguments to pass to the tool (Liquid templates supported)";
1247
+ };
1248
+ readonly as: {
1249
+ readonly type: "string";
1250
+ readonly description: "Custom output name (defaults to tool name)";
1251
+ };
1252
+ };
1253
+ readonly required: readonly ["tool"];
1254
+ readonly additionalProperties: false;
1255
+ readonly description: "Invoke a custom tool (from tools: section)";
1256
+ readonly patternProperties: {
1257
+ readonly '^x-': {};
1258
+ };
1259
+ };
1260
+ readonly OnInitStepInvocation: {
1261
+ readonly type: "object";
1262
+ readonly properties: {
1263
+ readonly step: {
1264
+ readonly type: "string";
1265
+ readonly description: "Step name (must exist in steps: section)";
1266
+ };
1267
+ readonly with: {
1268
+ readonly $ref: "#/definitions/Record%3Cstring%2Cunknown%3E";
1269
+ readonly description: "Arguments to pass to the step (Liquid templates supported)";
1270
+ };
1271
+ readonly as: {
1272
+ readonly type: "string";
1273
+ readonly description: "Custom output name (defaults to step name)";
1274
+ };
1275
+ };
1276
+ readonly required: readonly ["step"];
1277
+ readonly additionalProperties: false;
1278
+ readonly description: "Invoke a helper step (regular check)";
1279
+ readonly patternProperties: {
1280
+ readonly '^x-': {};
1281
+ };
1282
+ };
1283
+ readonly OnInitWorkflowInvocation: {
1284
+ readonly type: "object";
1285
+ readonly properties: {
1286
+ readonly workflow: {
1287
+ readonly type: "string";
1288
+ readonly description: "Workflow ID or path";
1289
+ };
1290
+ readonly with: {
1291
+ readonly $ref: "#/definitions/Record%3Cstring%2Cunknown%3E";
1292
+ readonly description: "Workflow inputs (Liquid templates supported)";
1293
+ };
1294
+ readonly as: {
1295
+ readonly type: "string";
1296
+ readonly description: "Custom output name (defaults to workflow name)";
1297
+ };
1298
+ readonly overrides: {
1299
+ readonly $ref: "#/definitions/Record%3Cstring%2CPartial%3Cinterface-src_types_config.ts-11359-23556-src_types_config.ts-0-40845%3E%3E";
1300
+ readonly description: "Step overrides";
1301
+ };
1302
+ readonly output_mapping: {
1303
+ readonly $ref: "#/definitions/Record%3Cstring%2Cstring%3E";
1304
+ readonly description: "Output mapping";
1305
+ };
1306
+ };
1307
+ readonly required: readonly ["workflow"];
1308
+ readonly additionalProperties: false;
1309
+ readonly description: "Invoke a reusable workflow";
1310
+ readonly patternProperties: {
1311
+ readonly '^x-': {};
1312
+ };
1313
+ };
1314
+ readonly 'Record<string,Partial<interface-src_types_config.ts-11359-23556-src_types_config.ts-0-40845>>': {
1315
+ readonly type: "object";
1316
+ readonly additionalProperties: {
1317
+ readonly $ref: "#/definitions/Partial%3Cinterface-src_types_config.ts-11359-23556-src_types_config.ts-0-40845%3E";
1318
+ };
1319
+ };
1320
+ readonly 'Partial<interface-src_types_config.ts-11359-23556-src_types_config.ts-0-40845>': {
1321
+ readonly type: "object";
1322
+ readonly additionalProperties: false;
1323
+ };
1324
+ readonly TransitionRule: {
1325
+ readonly type: "object";
1326
+ readonly properties: {
1327
+ readonly when: {
1328
+ readonly type: "string";
1329
+ readonly description: "JavaScript expression evaluated in the same sandbox as goto_js; truthy enables the rule.";
1330
+ };
1331
+ readonly to: {
1332
+ readonly type: readonly ["string", "null"];
1333
+ readonly description: "Target step ID, or null to explicitly prevent goto.";
1334
+ };
1335
+ readonly goto_event: {
1336
+ readonly $ref: "#/definitions/EventTrigger";
1337
+ readonly description: "Optional event override when performing goto.";
1338
+ };
1339
+ };
1340
+ readonly required: readonly ["when"];
1341
+ readonly additionalProperties: false;
1342
+ readonly description: "Declarative transition rule for on_* blocks.";
1343
+ readonly patternProperties: {
1344
+ readonly '^x-': {};
1345
+ };
1346
+ };
1015
1347
  readonly OnFailConfig: {
1016
1348
  readonly type: "object";
1017
1349
  readonly properties: {
@@ -1093,29 +1425,6 @@ export declare const configSchema: {
1093
1425
  readonly '^x-': {};
1094
1426
  };
1095
1427
  };
1096
- readonly TransitionRule: {
1097
- readonly type: "object";
1098
- readonly properties: {
1099
- readonly when: {
1100
- readonly type: "string";
1101
- readonly description: "JavaScript expression evaluated in the same sandbox as goto_js; truthy enables the rule.";
1102
- };
1103
- readonly to: {
1104
- readonly type: readonly ["string", "null"];
1105
- readonly description: "Target step ID, or null to explicitly prevent goto.";
1106
- };
1107
- readonly goto_event: {
1108
- readonly $ref: "#/definitions/EventTrigger";
1109
- readonly description: "Optional event override when performing goto.";
1110
- };
1111
- };
1112
- readonly required: readonly ["when"];
1113
- readonly additionalProperties: false;
1114
- readonly description: "Declarative transition rule for on_* blocks.";
1115
- readonly patternProperties: {
1116
- readonly '^x-': {};
1117
- };
1118
- };
1119
1428
  readonly OnSuccessConfig: {
1120
1429
  readonly type: "object";
1121
1430
  readonly properties: {
@@ -1196,16 +1505,6 @@ export declare const configSchema: {
1196
1505
  readonly '^x-': {};
1197
1506
  };
1198
1507
  };
1199
- readonly 'Record<string,Partial<interface-src_types_config.ts-10692-20779-src_types_config.ts-0-34222>>': {
1200
- readonly type: "object";
1201
- readonly additionalProperties: {
1202
- readonly $ref: "#/definitions/Partial%3Cinterface-src_types_config.ts-10692-20779-src_types_config.ts-0-34222%3E";
1203
- };
1204
- };
1205
- readonly 'Partial<interface-src_types_config.ts-10692-20779-src_types_config.ts-0-34222>': {
1206
- readonly type: "object";
1207
- readonly additionalProperties: false;
1208
- };
1209
1508
  readonly OutputConfig: {
1210
1509
  readonly type: "object";
1211
1510
  readonly properties: {
@@ -1236,6 +1535,10 @@ export declare const configSchema: {
1236
1535
  readonly PrCommentOutput: {
1237
1536
  readonly type: "object";
1238
1537
  readonly properties: {
1538
+ readonly enabled: {
1539
+ readonly type: "boolean";
1540
+ readonly description: "Whether PR comments are enabled";
1541
+ };
1239
1542
  readonly format: {
1240
1543
  readonly $ref: "#/definitions/ConfigOutputFormat";
1241
1544
  readonly description: "Format of the output";
@@ -1568,6 +1871,71 @@ export declare const configSchema: {
1568
1871
  readonly '^x-': {};
1569
1872
  };
1570
1873
  };
1874
+ readonly WorkspaceConfig: {
1875
+ readonly type: "object";
1876
+ readonly properties: {
1877
+ readonly enabled: {
1878
+ readonly type: "boolean";
1879
+ readonly description: "Enable workspace isolation (default: true when config present)";
1880
+ };
1881
+ readonly base_path: {
1882
+ readonly type: "string";
1883
+ readonly description: "Base path for workspaces (default: /tmp/visor-workspaces)";
1884
+ };
1885
+ readonly cleanup_on_exit: {
1886
+ readonly type: "boolean";
1887
+ readonly description: "Clean up workspace on exit (default: true)";
1888
+ };
1889
+ };
1890
+ readonly additionalProperties: false;
1891
+ readonly description: "Workspace isolation configuration";
1892
+ readonly patternProperties: {
1893
+ readonly '^x-': {};
1894
+ };
1895
+ };
1896
+ readonly SlackConfig: {
1897
+ readonly type: "object";
1898
+ readonly properties: {
1899
+ readonly version: {
1900
+ readonly type: "string";
1901
+ readonly description: "Slack API version";
1902
+ };
1903
+ readonly mentions: {
1904
+ readonly type: "string";
1905
+ readonly description: "Mention handling: 'all', 'direct', etc.";
1906
+ };
1907
+ readonly threads: {
1908
+ readonly type: "string";
1909
+ readonly description: "Thread handling: 'required', 'optional', etc.";
1910
+ };
1911
+ readonly show_raw_output: {
1912
+ readonly type: "boolean";
1913
+ readonly description: "Show raw output in Slack responses";
1914
+ };
1915
+ readonly telemetry: {
1916
+ readonly $ref: "#/definitions/SlackTelemetryConfig";
1917
+ readonly description: "Append telemetry identifiers to Slack replies.";
1918
+ };
1919
+ };
1920
+ readonly additionalProperties: false;
1921
+ readonly description: "Slack configuration";
1922
+ readonly patternProperties: {
1923
+ readonly '^x-': {};
1924
+ };
1925
+ };
1926
+ readonly SlackTelemetryConfig: {
1927
+ readonly type: "object";
1928
+ readonly properties: {
1929
+ readonly enabled: {
1930
+ readonly type: "boolean";
1931
+ readonly description: "Enable telemetry ID suffix in Slack messages";
1932
+ };
1933
+ };
1934
+ readonly additionalProperties: false;
1935
+ readonly patternProperties: {
1936
+ readonly '^x-': {};
1937
+ };
1938
+ };
1571
1939
  };
1572
1940
  };
1573
1941
  export default configSchema;
@@ -1 +1 @@
1
- {"version":3,"file":"config-schema.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/generated/config-schema.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6nDf,CAAC;AACX,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"config-schema.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/generated/config-schema.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAigEf,CAAC;AACX,eAAe,YAAY,CAAC"}