@probelabs/visor 0.1.149-ee → 0.1.150-ee

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 (100) hide show
  1. package/README.md +52 -1
  2. package/dist/909.index.js +27117 -0
  3. package/dist/ai-review-service.d.ts.map +1 -1
  4. package/dist/config.d.ts.map +1 -1
  5. package/dist/docs/assistant-workflows.md +805 -0
  6. package/dist/docs/event-triggers.md +25 -0
  7. package/dist/docs/scheduler.md +156 -0
  8. package/dist/docs/slack-integration.md +48 -0
  9. package/dist/enterprise/scheduler/knex-store.d.ts +7 -1
  10. package/dist/enterprise/scheduler/knex-store.d.ts.map +1 -1
  11. package/dist/examples/code-talk-as-tool.yaml +76 -0
  12. package/dist/examples/code-talk-workflow.yaml +68 -0
  13. package/dist/examples/intent-router-workflow.yaml +66 -0
  14. package/dist/examples/slack-message-triggers.yaml +270 -0
  15. package/dist/generated/config-schema.d.ts +102 -7
  16. package/dist/generated/config-schema.d.ts.map +1 -1
  17. package/dist/generated/config-schema.json +116 -7
  18. package/dist/git-repository-analyzer.d.ts +8 -0
  19. package/dist/git-repository-analyzer.d.ts.map +1 -1
  20. package/dist/index.js +4150 -4735
  21. package/dist/scheduler/message-trigger.d.ts +47 -0
  22. package/dist/scheduler/message-trigger.d.ts.map +1 -0
  23. package/dist/scheduler/schedule-store.d.ts +31 -1
  24. package/dist/scheduler/schedule-store.d.ts.map +1 -1
  25. package/dist/scheduler/schedule-tool.d.ts +17 -1
  26. package/dist/scheduler/schedule-tool.d.ts.map +1 -1
  27. package/dist/scheduler/store/sqlite-store.d.ts +7 -1
  28. package/dist/scheduler/store/sqlite-store.d.ts.map +1 -1
  29. package/dist/scheduler/store/types.d.ts +45 -0
  30. package/dist/scheduler/store/types.d.ts.map +1 -1
  31. package/dist/sdk/{check-provider-registry-LVLC4EPF.mjs → check-provider-registry-RRYBG6AU.mjs} +6 -6
  32. package/dist/sdk/{check-provider-registry-TJAJVSMY.mjs → check-provider-registry-VHM53BTI.mjs} +6 -6
  33. package/dist/sdk/{chunk-V6GI4U2M.mjs → chunk-AADKUA6L.mjs} +585 -29
  34. package/dist/sdk/{chunk-NYFTDVG5.mjs.map → chunk-AADKUA6L.mjs.map} +1 -1
  35. package/dist/sdk/{chunk-YYZAN5NK.mjs → chunk-FYK2DJK6.mjs} +106 -9
  36. package/dist/sdk/chunk-FYK2DJK6.mjs.map +1 -0
  37. package/dist/sdk/{chunk-RJLJUTSU.mjs → chunk-FZEQ744M.mjs} +2 -2
  38. package/dist/sdk/{chunk-CISJ6DJW.mjs → chunk-GLROSEYJ.mjs} +3 -3
  39. package/dist/sdk/{chunk-NYFTDVG5.mjs → chunk-O4H5KZ7Y.mjs} +586 -30
  40. package/dist/sdk/{chunk-V6GI4U2M.mjs.map → chunk-O4H5KZ7Y.mjs.map} +1 -1
  41. package/dist/sdk/{chunk-62TNF5PJ.mjs → chunk-PETLPNRA.mjs} +2 -2
  42. package/dist/sdk/{chunk-62TNF5PJ.mjs.map → chunk-PETLPNRA.mjs.map} +1 -1
  43. package/dist/sdk/{config-KQH254CA.mjs → config-MTEIGCOQ.mjs} +2 -2
  44. package/dist/sdk/{failure-condition-evaluator-IVCTD4BZ.mjs → failure-condition-evaluator-XV2ZMFFY.mjs} +3 -3
  45. package/dist/sdk/{git-repository-analyzer-QFMW6WIS.mjs → git-repository-analyzer-TWNJUN42.mjs} +34 -3
  46. package/dist/sdk/git-repository-analyzer-TWNJUN42.mjs.map +1 -0
  47. package/dist/sdk/{github-frontend-DFT5G32K.mjs → github-frontend-A2R7D4N6.mjs} +3 -3
  48. package/dist/sdk/{host-H7IX4GBK.mjs → host-BRZQLVCH.mjs} +2 -2
  49. package/dist/sdk/{host-NZXGBBJI.mjs → host-MR7L57QI.mjs} +2 -2
  50. package/dist/sdk/{knex-store-HPXJILBL.mjs → knex-store-CRORFJE6.mjs} +117 -1
  51. package/dist/sdk/knex-store-CRORFJE6.mjs.map +1 -0
  52. package/dist/sdk/{loader-YSRMVXC3.mjs → loader-NJCF7DUS.mjs} +2 -2
  53. package/dist/sdk/{routing-LU5PAREW.mjs → routing-V3MYZAOH.mjs} +4 -4
  54. package/dist/sdk/{schedule-tool-4U32CSH6.mjs → schedule-tool-4QDBJV74.mjs} +6 -6
  55. package/dist/sdk/{schedule-tool-NX75VKGA.mjs → schedule-tool-NYLNJUEW.mjs} +6 -6
  56. package/dist/sdk/{schedule-tool-handler-6S2DNP26.mjs → schedule-tool-handler-27XEVLSY.mjs} +6 -6
  57. package/dist/sdk/{schedule-tool-handler-KKN7XJYT.mjs → schedule-tool-handler-EFQIYD3W.mjs} +6 -6
  58. package/dist/sdk/sdk.d.mts +38 -1
  59. package/dist/sdk/sdk.d.ts +38 -1
  60. package/dist/sdk/sdk.js +821 -21
  61. package/dist/sdk/sdk.js.map +1 -1
  62. package/dist/sdk/sdk.mjs +5 -5
  63. package/dist/sdk/{trace-helpers-6ROJR7N3.mjs → trace-helpers-6NSZBC35.mjs} +2 -2
  64. package/dist/sdk/{workflow-check-provider-AGZ5JY2I.mjs → workflow-check-provider-3MVUCEJR.mjs} +6 -6
  65. package/dist/sdk/{workflow-check-provider-FDNGOBBG.mjs → workflow-check-provider-XLH7N4FV.mjs} +6 -6
  66. package/dist/slack/socket-runner.d.ts +14 -0
  67. package/dist/slack/socket-runner.d.ts.map +1 -1
  68. package/dist/test-runner/core/flow-stage.d.ts.map +1 -1
  69. package/dist/test-runner/fixture-loader.d.ts +1 -1
  70. package/dist/test-runner/fixture-loader.d.ts.map +1 -1
  71. package/dist/test-runner/index.d.ts.map +1 -1
  72. package/dist/test-runner/validator.d.ts.map +1 -1
  73. package/dist/types/config.d.ts +38 -1
  74. package/dist/types/config.d.ts.map +1 -1
  75. package/dist/utils/workspace-manager.d.ts +4 -0
  76. package/dist/utils/workspace-manager.d.ts.map +1 -1
  77. package/dist/utils/worktree-manager.d.ts +15 -1
  78. package/dist/utils/worktree-manager.d.ts.map +1 -1
  79. package/package.json +2 -2
  80. package/dist/sdk/chunk-YYZAN5NK.mjs.map +0 -1
  81. package/dist/sdk/git-repository-analyzer-QFMW6WIS.mjs.map +0 -1
  82. package/dist/sdk/knex-store-HPXJILBL.mjs.map +0 -1
  83. /package/dist/sdk/{check-provider-registry-LVLC4EPF.mjs.map → check-provider-registry-RRYBG6AU.mjs.map} +0 -0
  84. /package/dist/sdk/{check-provider-registry-TJAJVSMY.mjs.map → check-provider-registry-VHM53BTI.mjs.map} +0 -0
  85. /package/dist/sdk/{chunk-RJLJUTSU.mjs.map → chunk-FZEQ744M.mjs.map} +0 -0
  86. /package/dist/sdk/{chunk-CISJ6DJW.mjs.map → chunk-GLROSEYJ.mjs.map} +0 -0
  87. /package/dist/sdk/{config-KQH254CA.mjs.map → config-MTEIGCOQ.mjs.map} +0 -0
  88. /package/dist/sdk/{failure-condition-evaluator-IVCTD4BZ.mjs.map → failure-condition-evaluator-XV2ZMFFY.mjs.map} +0 -0
  89. /package/dist/sdk/{github-frontend-DFT5G32K.mjs.map → github-frontend-A2R7D4N6.mjs.map} +0 -0
  90. /package/dist/sdk/{host-H7IX4GBK.mjs.map → host-BRZQLVCH.mjs.map} +0 -0
  91. /package/dist/sdk/{host-NZXGBBJI.mjs.map → host-MR7L57QI.mjs.map} +0 -0
  92. /package/dist/sdk/{loader-YSRMVXC3.mjs.map → loader-NJCF7DUS.mjs.map} +0 -0
  93. /package/dist/sdk/{routing-LU5PAREW.mjs.map → routing-V3MYZAOH.mjs.map} +0 -0
  94. /package/dist/sdk/{schedule-tool-4U32CSH6.mjs.map → schedule-tool-4QDBJV74.mjs.map} +0 -0
  95. /package/dist/sdk/{schedule-tool-NX75VKGA.mjs.map → schedule-tool-NYLNJUEW.mjs.map} +0 -0
  96. /package/dist/sdk/{schedule-tool-handler-6S2DNP26.mjs.map → schedule-tool-handler-27XEVLSY.mjs.map} +0 -0
  97. /package/dist/sdk/{schedule-tool-handler-KKN7XJYT.mjs.map → schedule-tool-handler-EFQIYD3W.mjs.map} +0 -0
  98. /package/dist/sdk/{trace-helpers-6ROJR7N3.mjs.map → trace-helpers-6NSZBC35.mjs.map} +0 -0
  99. /package/dist/sdk/{workflow-check-provider-AGZ5JY2I.mjs.map → workflow-check-provider-3MVUCEJR.mjs.map} +0 -0
  100. /package/dist/sdk/{workflow-check-provider-FDNGOBBG.mjs.map → workflow-check-provider-XLH7N4FV.mjs.map} +0 -0
@@ -73,7 +73,7 @@ async function loadEnterpriseStoreBackend(driver, storageConfig, haConfig) {
73
73
  "[visor:enterprise] License has expired but is within the 72-hour grace period. Please renew your license."
74
74
  );
75
75
  }
76
- const { KnexStoreBackend } = await import("./knex-store-HPXJILBL.mjs");
76
+ const { KnexStoreBackend } = await import("./knex-store-CRORFJE6.mjs");
77
77
  return new KnexStoreBackend(driver, storageConfig, haConfig);
78
78
  }
79
79
  var init_loader = __esm({
@@ -86,4 +86,4 @@ export {
86
86
  loadEnterprisePolicyEngine,
87
87
  loadEnterpriseStoreBackend
88
88
  };
89
- //# sourceMappingURL=loader-YSRMVXC3.mjs.map
89
+ //# sourceMappingURL=loader-NJCF7DUS.mjs.map
@@ -4,9 +4,9 @@ import {
4
4
  evaluateTransitions,
5
5
  handleRouting,
6
6
  init_routing
7
- } from "./chunk-CISJ6DJW.mjs";
8
- import "./chunk-RJLJUTSU.mjs";
9
- import "./chunk-62TNF5PJ.mjs";
7
+ } from "./chunk-GLROSEYJ.mjs";
8
+ import "./chunk-FZEQ744M.mjs";
9
+ import "./chunk-PETLPNRA.mjs";
10
10
  import "./chunk-JL7JXCET.mjs";
11
11
  import "./chunk-ZUEQNCKB.mjs";
12
12
  import "./chunk-25IC7KXZ.mjs";
@@ -22,4 +22,4 @@ export {
22
22
  evaluateTransitions,
23
23
  handleRouting
24
24
  };
25
- //# sourceMappingURL=routing-LU5PAREW.mjs.map
25
+ //# sourceMappingURL=routing-V3MYZAOH.mjs.map
@@ -4,7 +4,7 @@ import {
4
4
  handleScheduleAction,
5
5
  init_schedule_tool,
6
6
  isScheduleTool
7
- } from "./chunk-NYFTDVG5.mjs";
7
+ } from "./chunk-O4H5KZ7Y.mjs";
8
8
  import "./chunk-KFKHU6CM.mjs";
9
9
  import "./chunk-M3BYMES6.mjs";
10
10
  import "./chunk-LG4AUKHB.mjs";
@@ -12,11 +12,11 @@ import "./chunk-B7BVQM5K.mjs";
12
12
  import "./chunk-XXAEN5KU.mjs";
13
13
  import "./chunk-GEW6LS32.mjs";
14
14
  import "./chunk-DNDS7R3N.mjs";
15
- import "./chunk-YYZAN5NK.mjs";
15
+ import "./chunk-FYK2DJK6.mjs";
16
16
  import "./chunk-NCWIZVOT.mjs";
17
- import "./chunk-CISJ6DJW.mjs";
18
- import "./chunk-RJLJUTSU.mjs";
19
- import "./chunk-62TNF5PJ.mjs";
17
+ import "./chunk-GLROSEYJ.mjs";
18
+ import "./chunk-FZEQ744M.mjs";
19
+ import "./chunk-PETLPNRA.mjs";
20
20
  import "./chunk-JL7JXCET.mjs";
21
21
  import "./chunk-ZUEQNCKB.mjs";
22
22
  import "./chunk-25IC7KXZ.mjs";
@@ -32,4 +32,4 @@ export {
32
32
  handleScheduleAction,
33
33
  isScheduleTool
34
34
  };
35
- //# sourceMappingURL=schedule-tool-4U32CSH6.mjs.map
35
+ //# sourceMappingURL=schedule-tool-4QDBJV74.mjs.map
@@ -4,7 +4,7 @@ import {
4
4
  handleScheduleAction,
5
5
  init_schedule_tool,
6
6
  isScheduleTool
7
- } from "./chunk-V6GI4U2M.mjs";
7
+ } from "./chunk-AADKUA6L.mjs";
8
8
  import "./chunk-KFKHU6CM.mjs";
9
9
  import "./chunk-M3BYMES6.mjs";
10
10
  import "./chunk-LG4AUKHB.mjs";
@@ -12,11 +12,11 @@ import "./chunk-B7BVQM5K.mjs";
12
12
  import "./chunk-XXAEN5KU.mjs";
13
13
  import "./chunk-GEW6LS32.mjs";
14
14
  import "./chunk-DNDS7R3N.mjs";
15
- import "./chunk-YYZAN5NK.mjs";
15
+ import "./chunk-FYK2DJK6.mjs";
16
16
  import "./chunk-NCWIZVOT.mjs";
17
- import "./chunk-CISJ6DJW.mjs";
18
- import "./chunk-RJLJUTSU.mjs";
19
- import "./chunk-62TNF5PJ.mjs";
17
+ import "./chunk-GLROSEYJ.mjs";
18
+ import "./chunk-FZEQ744M.mjs";
19
+ import "./chunk-PETLPNRA.mjs";
20
20
  import "./chunk-JL7JXCET.mjs";
21
21
  import "./chunk-ZUEQNCKB.mjs";
22
22
  import "./chunk-25IC7KXZ.mjs";
@@ -32,4 +32,4 @@ export {
32
32
  handleScheduleAction,
33
33
  isScheduleTool
34
34
  };
35
- //# sourceMappingURL=schedule-tool-NX75VKGA.mjs.map
35
+ //# sourceMappingURL=schedule-tool-NYLNJUEW.mjs.map
@@ -6,7 +6,7 @@ import {
6
6
  extractSlackContext,
7
7
  init_schedule_tool_handler,
8
8
  isScheduleToolCall
9
- } from "./chunk-NYFTDVG5.mjs";
9
+ } from "./chunk-O4H5KZ7Y.mjs";
10
10
  import "./chunk-KFKHU6CM.mjs";
11
11
  import "./chunk-M3BYMES6.mjs";
12
12
  import "./chunk-LG4AUKHB.mjs";
@@ -14,11 +14,11 @@ import "./chunk-B7BVQM5K.mjs";
14
14
  import "./chunk-XXAEN5KU.mjs";
15
15
  import "./chunk-GEW6LS32.mjs";
16
16
  import "./chunk-DNDS7R3N.mjs";
17
- import "./chunk-YYZAN5NK.mjs";
17
+ import "./chunk-FYK2DJK6.mjs";
18
18
  import "./chunk-NCWIZVOT.mjs";
19
- import "./chunk-CISJ6DJW.mjs";
20
- import "./chunk-RJLJUTSU.mjs";
21
- import "./chunk-62TNF5PJ.mjs";
19
+ import "./chunk-GLROSEYJ.mjs";
20
+ import "./chunk-FZEQ744M.mjs";
21
+ import "./chunk-PETLPNRA.mjs";
22
22
  import "./chunk-JL7JXCET.mjs";
23
23
  import "./chunk-ZUEQNCKB.mjs";
24
24
  import "./chunk-25IC7KXZ.mjs";
@@ -36,4 +36,4 @@ export {
36
36
  extractSlackContext,
37
37
  isScheduleToolCall
38
38
  };
39
- //# sourceMappingURL=schedule-tool-handler-6S2DNP26.mjs.map
39
+ //# sourceMappingURL=schedule-tool-handler-27XEVLSY.mjs.map
@@ -6,7 +6,7 @@ import {
6
6
  extractSlackContext,
7
7
  init_schedule_tool_handler,
8
8
  isScheduleToolCall
9
- } from "./chunk-V6GI4U2M.mjs";
9
+ } from "./chunk-AADKUA6L.mjs";
10
10
  import "./chunk-KFKHU6CM.mjs";
11
11
  import "./chunk-M3BYMES6.mjs";
12
12
  import "./chunk-LG4AUKHB.mjs";
@@ -14,11 +14,11 @@ import "./chunk-B7BVQM5K.mjs";
14
14
  import "./chunk-XXAEN5KU.mjs";
15
15
  import "./chunk-GEW6LS32.mjs";
16
16
  import "./chunk-DNDS7R3N.mjs";
17
- import "./chunk-YYZAN5NK.mjs";
17
+ import "./chunk-FYK2DJK6.mjs";
18
18
  import "./chunk-NCWIZVOT.mjs";
19
- import "./chunk-CISJ6DJW.mjs";
20
- import "./chunk-RJLJUTSU.mjs";
21
- import "./chunk-62TNF5PJ.mjs";
19
+ import "./chunk-GLROSEYJ.mjs";
20
+ import "./chunk-FZEQ744M.mjs";
21
+ import "./chunk-PETLPNRA.mjs";
22
22
  import "./chunk-JL7JXCET.mjs";
23
23
  import "./chunk-ZUEQNCKB.mjs";
24
24
  import "./chunk-25IC7KXZ.mjs";
@@ -36,4 +36,4 @@ export {
36
36
  extractSlackContext,
37
37
  isScheduleToolCall
38
38
  };
39
- //# sourceMappingURL=schedule-tool-handler-KKN7XJYT.mjs.map
39
+ //# sourceMappingURL=schedule-tool-handler-EFQIYD3W.mjs.map
@@ -223,7 +223,7 @@ type ConfigCheckType = 'ai' | 'command' | 'script' | 'http' | 'http_input' | 'ht
223
223
  /**
224
224
  * Valid event triggers for checks
225
225
  */
226
- type EventTrigger = 'pr_opened' | 'pr_updated' | 'pr_closed' | 'issue_opened' | 'issue_comment' | 'manual' | 'schedule' | 'webhook_received';
226
+ type EventTrigger = 'pr_opened' | 'pr_updated' | 'pr_closed' | 'issue_opened' | 'issue_comment' | 'manual' | 'schedule' | 'webhook_received' | 'slack_message';
227
227
  /**
228
228
  * Valid output formats
229
229
  */
@@ -1205,6 +1205,41 @@ interface SandboxDefaults {
1205
1205
  /** Base env var patterns for all sandboxes (replaces hardcoded defaults when set) */
1206
1206
  env_passthrough?: string[];
1207
1207
  }
1208
+ /**
1209
+ * Slack message trigger for reactive workflow execution
1210
+ * Triggers workflows based on Slack messages matching configured filters
1211
+ */
1212
+ interface SlackMessageTrigger {
1213
+ /** Channel IDs to monitor (supports wildcard suffix, e.g., "CENG*") */
1214
+ channels?: string[];
1215
+ /** Only trigger on messages from these user IDs */
1216
+ from?: string[];
1217
+ /** Allow bot messages to trigger (default: false) */
1218
+ from_bots?: boolean;
1219
+ /** Keyword match - any keyword triggers (case-insensitive OR) */
1220
+ contains?: string[];
1221
+ /** Regex pattern to match against message text */
1222
+ match?: string;
1223
+ /** Thread scope filter (default: 'any') */
1224
+ threads?: 'root_only' | 'thread_only' | 'any';
1225
+ /** Workflow/check ID to execute */
1226
+ workflow: string;
1227
+ /** Optional workflow inputs */
1228
+ inputs?: Record<string, unknown>;
1229
+ /** Output destination configuration */
1230
+ output?: {
1231
+ /** Output type: slack, github, webhook, or none */
1232
+ type: 'slack' | 'github' | 'webhook' | 'none';
1233
+ /** Target (channel name, repo, URL) */
1234
+ target?: string;
1235
+ /** Thread ID for threaded outputs */
1236
+ thread_id?: string;
1237
+ };
1238
+ /** Description for logging/display */
1239
+ description?: string;
1240
+ /** Enable/disable this trigger (default: true) */
1241
+ enabled?: boolean;
1242
+ }
1208
1243
  /**
1209
1244
  * Static cron job defined in YAML configuration
1210
1245
  * These are always executed by the scheduler daemon
@@ -1339,6 +1374,8 @@ interface SchedulerConfig {
1339
1374
  permissions?: SchedulerPermissionsConfig;
1340
1375
  /** Static cron jobs defined in configuration (always executed) */
1341
1376
  cron?: Record<string, StaticCronJob>;
1377
+ /** Slack message triggers for reactive workflow execution */
1378
+ on_message?: Record<string, SlackMessageTrigger>;
1342
1379
  }
1343
1380
  /**
1344
1381
  * Main Visor configuration
package/dist/sdk/sdk.d.ts CHANGED
@@ -223,7 +223,7 @@ type ConfigCheckType = 'ai' | 'command' | 'script' | 'http' | 'http_input' | 'ht
223
223
  /**
224
224
  * Valid event triggers for checks
225
225
  */
226
- type EventTrigger = 'pr_opened' | 'pr_updated' | 'pr_closed' | 'issue_opened' | 'issue_comment' | 'manual' | 'schedule' | 'webhook_received';
226
+ type EventTrigger = 'pr_opened' | 'pr_updated' | 'pr_closed' | 'issue_opened' | 'issue_comment' | 'manual' | 'schedule' | 'webhook_received' | 'slack_message';
227
227
  /**
228
228
  * Valid output formats
229
229
  */
@@ -1205,6 +1205,41 @@ interface SandboxDefaults {
1205
1205
  /** Base env var patterns for all sandboxes (replaces hardcoded defaults when set) */
1206
1206
  env_passthrough?: string[];
1207
1207
  }
1208
+ /**
1209
+ * Slack message trigger for reactive workflow execution
1210
+ * Triggers workflows based on Slack messages matching configured filters
1211
+ */
1212
+ interface SlackMessageTrigger {
1213
+ /** Channel IDs to monitor (supports wildcard suffix, e.g., "CENG*") */
1214
+ channels?: string[];
1215
+ /** Only trigger on messages from these user IDs */
1216
+ from?: string[];
1217
+ /** Allow bot messages to trigger (default: false) */
1218
+ from_bots?: boolean;
1219
+ /** Keyword match - any keyword triggers (case-insensitive OR) */
1220
+ contains?: string[];
1221
+ /** Regex pattern to match against message text */
1222
+ match?: string;
1223
+ /** Thread scope filter (default: 'any') */
1224
+ threads?: 'root_only' | 'thread_only' | 'any';
1225
+ /** Workflow/check ID to execute */
1226
+ workflow: string;
1227
+ /** Optional workflow inputs */
1228
+ inputs?: Record<string, unknown>;
1229
+ /** Output destination configuration */
1230
+ output?: {
1231
+ /** Output type: slack, github, webhook, or none */
1232
+ type: 'slack' | 'github' | 'webhook' | 'none';
1233
+ /** Target (channel name, repo, URL) */
1234
+ target?: string;
1235
+ /** Thread ID for threaded outputs */
1236
+ thread_id?: string;
1237
+ };
1238
+ /** Description for logging/display */
1239
+ description?: string;
1240
+ /** Enable/disable this trigger (default: true) */
1241
+ enabled?: boolean;
1242
+ }
1208
1243
  /**
1209
1244
  * Static cron job defined in YAML configuration
1210
1245
  * These are always executed by the scheduler daemon
@@ -1339,6 +1374,8 @@ interface SchedulerConfig {
1339
1374
  permissions?: SchedulerPermissionsConfig;
1340
1375
  /** Static cron jobs defined in configuration (always executed) */
1341
1376
  cron?: Record<string, StaticCronJob>;
1377
+ /** Slack message triggers for reactive workflow execution */
1378
+ on_message?: Record<string, SlackMessageTrigger>;
1342
1379
  }
1343
1380
  /**
1344
1381
  * Main Visor configuration