@probelabs/visor 0.1.173 → 0.1.174
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/docs/dashboards/README.md +73 -26
- package/dist/docs/dashboards/grafana-visor-overview.json +435 -15
- package/dist/docs/telemetry-reference.md +387 -0
- package/dist/docs/telemetry-setup.md +2 -0
- package/dist/generated/config-schema.d.ts +277 -7
- package/dist/generated/config-schema.d.ts.map +1 -1
- package/dist/generated/config-schema.json +3803 -0
- package/dist/index.js +364 -30
- package/dist/output/traces/{run-2026-03-09T15-21-25-122Z.ndjson → run-2026-03-09T15-44-30-340Z.ndjson} +84 -84
- package/dist/output/traces/{run-2026-03-09T15-22-05-255Z.ndjson → run-2026-03-09T15-45-10-778Z.ndjson} +1852 -1852
- package/dist/sdk/{a2a-frontend-VHOQ45CR.mjs → a2a-frontend-5L6H7ZVF.mjs} +3 -3
- package/dist/sdk/{a2a-frontend-7CYN3X7M.mjs → a2a-frontend-FUJRKHJB.mjs} +3 -3
- package/dist/sdk/{check-provider-registry-65GO3SCO.mjs → check-provider-registry-UM762L7S.mjs} +7 -7
- package/dist/sdk/{check-provider-registry-75O5XJMA.mjs → check-provider-registry-UPQNHHFF.mjs} +7 -7
- package/dist/sdk/{check-provider-registry-DBTS7OXY.mjs → check-provider-registry-YVQI4IOR.mjs} +7 -7
- package/dist/sdk/{chunk-Y5MEQW2W.mjs → chunk-2PL2YH3B.mjs} +19 -19
- package/dist/sdk/{chunk-4TV2CVVI.mjs → chunk-34QX63WK.mjs} +16 -14
- package/dist/sdk/chunk-34QX63WK.mjs.map +1 -0
- package/dist/sdk/{chunk-2HXOGRAS.mjs → chunk-65SHRIQF.mjs} +3 -3
- package/dist/sdk/{chunk-2HXOGRAS.mjs.map → chunk-65SHRIQF.mjs.map} +1 -1
- package/dist/sdk/{chunk-VVHALCWV.mjs → chunk-EFNNJIMY.mjs} +3 -3
- package/dist/sdk/{chunk-7CWJNSL2.mjs → chunk-EP7PQ4IX.mjs} +19 -19
- package/dist/sdk/{chunk-AV6KML52.mjs → chunk-I6GKXMQ5.mjs} +19 -19
- package/dist/sdk/{chunk-VK7FUBBU.mjs → chunk-UTBSBJFV.mjs} +3 -3
- package/dist/sdk/{chunk-HZEXCJGA.mjs → chunk-W4KCJM6J.mjs} +282 -8
- package/dist/sdk/chunk-W4KCJM6J.mjs.map +1 -0
- package/dist/sdk/{chunk-GVPMO6QD.mjs → chunk-WJIV7MKY.mjs} +3 -3
- package/dist/sdk/{chunk-WYFQQ445.mjs → chunk-YEARBXYT.mjs} +3 -3
- package/dist/sdk/{chunk-LTHHE6Z5.mjs → chunk-ZI3SEHWA.mjs} +4 -4
- package/dist/sdk/{chunk-LTHHE6Z5.mjs.map → chunk-ZI3SEHWA.mjs.map} +1 -1
- package/dist/sdk/{config-UXRHADSE.mjs → config-BVL3KFMB.mjs} +2 -2
- package/dist/sdk/{failure-condition-evaluator-Q4KNMX6F.mjs → failure-condition-evaluator-4O6BTC4Q.mjs} +4 -4
- package/dist/sdk/{failure-condition-evaluator-SNR5XLGN.mjs → failure-condition-evaluator-DL6H57NX.mjs} +4 -4
- package/dist/sdk/{github-frontend-56UQTA47.mjs → github-frontend-F2YCPK6H.mjs} +4 -4
- package/dist/sdk/{github-frontend-OOP26667.mjs → github-frontend-UXL73NKB.mjs} +4 -4
- package/dist/sdk/{host-QRGXXRDA.mjs → host-6TBS44ER.mjs} +3 -3
- package/dist/sdk/{host-VYPJ2UGQ.mjs → host-KJTXX76P.mjs} +3 -3
- package/dist/sdk/{metrics-FU2G5SZ2.mjs → metrics-JTOG2HNO.mjs} +2 -2
- package/dist/sdk/{routing-DBQHPP2O.mjs → routing-AWYB2YX3.mjs} +5 -5
- package/dist/sdk/{routing-ZAUCS3HJ.mjs → routing-GF2CF3JT.mjs} +5 -5
- package/dist/sdk/{schedule-tool-MHICRNCI.mjs → schedule-tool-IEY2CFLU.mjs} +7 -7
- package/dist/sdk/{schedule-tool-VRLX54J5.mjs → schedule-tool-SGCYDSHL.mjs} +7 -7
- package/dist/sdk/{schedule-tool-2FIVKPVJ.mjs → schedule-tool-UMDRCNO5.mjs} +7 -7
- package/dist/sdk/{schedule-tool-handler-3ES4WON7.mjs → schedule-tool-handler-5EPTHBLS.mjs} +7 -7
- package/dist/sdk/{schedule-tool-handler-FQGAWC5N.mjs → schedule-tool-handler-5QVUZ5EZ.mjs} +7 -7
- package/dist/sdk/{schedule-tool-handler-KYUHU4JR.mjs → schedule-tool-handler-HMEGLYJF.mjs} +7 -7
- package/dist/sdk/sdk.d.mts +137 -133
- package/dist/sdk/sdk.d.ts +137 -133
- package/dist/sdk/sdk.js +298 -22
- package/dist/sdk/sdk.js.map +1 -1
- package/dist/sdk/sdk.mjs +6 -6
- package/dist/sdk/{trace-helpers-UKMYHQIK.mjs → trace-helpers-6TEWG7RK.mjs} +3 -3
- package/dist/sdk/{trace-helpers-ZFDJ55SH.mjs → trace-helpers-FKM2MEDW.mjs} +3 -3
- package/dist/sdk/{workflow-check-provider-F5DTEX6E.mjs → workflow-check-provider-7VNIO6L5.mjs} +7 -7
- package/dist/sdk/{workflow-check-provider-VEOVTCVU.mjs → workflow-check-provider-EWMZEEES.mjs} +7 -7
- package/dist/sdk/{workflow-check-provider-5KQTXKWS.mjs → workflow-check-provider-VJ7VIMCQ.mjs} +7 -7
- package/dist/telemetry/metrics.d.ts.map +1 -1
- package/dist/traces/{run-2026-03-09T15-21-25-122Z.ndjson → run-2026-03-09T15-44-30-340Z.ndjson} +84 -84
- package/dist/traces/{run-2026-03-09T15-22-05-255Z.ndjson → run-2026-03-09T15-45-10-778Z.ndjson} +1852 -1852
- package/dist/types/config.d.ts +5 -4
- package/dist/types/config.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/sdk/chunk-4TV2CVVI.mjs.map +0 -1
- package/dist/sdk/chunk-HZEXCJGA.mjs.map +0 -1
- /package/dist/sdk/{a2a-frontend-7CYN3X7M.mjs.map → a2a-frontend-5L6H7ZVF.mjs.map} +0 -0
- /package/dist/sdk/{a2a-frontend-VHOQ45CR.mjs.map → a2a-frontend-FUJRKHJB.mjs.map} +0 -0
- /package/dist/sdk/{check-provider-registry-65GO3SCO.mjs.map → check-provider-registry-UM762L7S.mjs.map} +0 -0
- /package/dist/sdk/{check-provider-registry-75O5XJMA.mjs.map → check-provider-registry-UPQNHHFF.mjs.map} +0 -0
- /package/dist/sdk/{check-provider-registry-DBTS7OXY.mjs.map → check-provider-registry-YVQI4IOR.mjs.map} +0 -0
- /package/dist/sdk/{chunk-Y5MEQW2W.mjs.map → chunk-2PL2YH3B.mjs.map} +0 -0
- /package/dist/sdk/{chunk-VK7FUBBU.mjs.map → chunk-EFNNJIMY.mjs.map} +0 -0
- /package/dist/sdk/{chunk-7CWJNSL2.mjs.map → chunk-EP7PQ4IX.mjs.map} +0 -0
- /package/dist/sdk/{chunk-AV6KML52.mjs.map → chunk-I6GKXMQ5.mjs.map} +0 -0
- /package/dist/sdk/{chunk-VVHALCWV.mjs.map → chunk-UTBSBJFV.mjs.map} +0 -0
- /package/dist/sdk/{chunk-GVPMO6QD.mjs.map → chunk-WJIV7MKY.mjs.map} +0 -0
- /package/dist/sdk/{chunk-WYFQQ445.mjs.map → chunk-YEARBXYT.mjs.map} +0 -0
- /package/dist/sdk/{config-UXRHADSE.mjs.map → config-BVL3KFMB.mjs.map} +0 -0
- /package/dist/sdk/{failure-condition-evaluator-Q4KNMX6F.mjs.map → failure-condition-evaluator-4O6BTC4Q.mjs.map} +0 -0
- /package/dist/sdk/{failure-condition-evaluator-SNR5XLGN.mjs.map → failure-condition-evaluator-DL6H57NX.mjs.map} +0 -0
- /package/dist/sdk/{github-frontend-56UQTA47.mjs.map → github-frontend-F2YCPK6H.mjs.map} +0 -0
- /package/dist/sdk/{github-frontend-OOP26667.mjs.map → github-frontend-UXL73NKB.mjs.map} +0 -0
- /package/dist/sdk/{host-QRGXXRDA.mjs.map → host-6TBS44ER.mjs.map} +0 -0
- /package/dist/sdk/{host-VYPJ2UGQ.mjs.map → host-KJTXX76P.mjs.map} +0 -0
- /package/dist/sdk/{metrics-FU2G5SZ2.mjs.map → metrics-JTOG2HNO.mjs.map} +0 -0
- /package/dist/sdk/{routing-DBQHPP2O.mjs.map → routing-AWYB2YX3.mjs.map} +0 -0
- /package/dist/sdk/{routing-ZAUCS3HJ.mjs.map → routing-GF2CF3JT.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-2FIVKPVJ.mjs.map → schedule-tool-IEY2CFLU.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-MHICRNCI.mjs.map → schedule-tool-SGCYDSHL.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-VRLX54J5.mjs.map → schedule-tool-UMDRCNO5.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-handler-3ES4WON7.mjs.map → schedule-tool-handler-5EPTHBLS.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-handler-FQGAWC5N.mjs.map → schedule-tool-handler-5QVUZ5EZ.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-handler-KYUHU4JR.mjs.map → schedule-tool-handler-HMEGLYJF.mjs.map} +0 -0
- /package/dist/sdk/{trace-helpers-UKMYHQIK.mjs.map → trace-helpers-6TEWG7RK.mjs.map} +0 -0
- /package/dist/sdk/{trace-helpers-ZFDJ55SH.mjs.map → trace-helpers-FKM2MEDW.mjs.map} +0 -0
- /package/dist/sdk/{workflow-check-provider-5KQTXKWS.mjs.map → workflow-check-provider-7VNIO6L5.mjs.map} +0 -0
- /package/dist/sdk/{workflow-check-provider-F5DTEX6E.mjs.map → workflow-check-provider-EWMZEEES.mjs.map} +0 -0
- /package/dist/sdk/{workflow-check-provider-VEOVTCVU.mjs.map → workflow-check-provider-VJ7VIMCQ.mjs.map} +0 -0
package/dist/sdk/sdk.js
CHANGED
|
@@ -704,7 +704,7 @@ var require_package = __commonJS({
|
|
|
704
704
|
"package.json"(exports2, module2) {
|
|
705
705
|
module2.exports = {
|
|
706
706
|
name: "@probelabs/visor",
|
|
707
|
-
version: "0.1.
|
|
707
|
+
version: "0.1.174",
|
|
708
708
|
main: "dist/index.js",
|
|
709
709
|
bin: {
|
|
710
710
|
visor: "./dist/index.js"
|
|
@@ -823,7 +823,7 @@ var require_package = __commonJS({
|
|
|
823
823
|
"@opentelemetry/sdk-node": "^0.203.0",
|
|
824
824
|
"@opentelemetry/sdk-trace-base": "^1.30.1",
|
|
825
825
|
"@opentelemetry/semantic-conventions": "^1.30.1",
|
|
826
|
-
"@probelabs/probe": "^0.6.0-
|
|
826
|
+
"@probelabs/probe": "^0.6.0-rc291",
|
|
827
827
|
"@types/commander": "^2.12.0",
|
|
828
828
|
"@types/uuid": "^10.0.0",
|
|
829
829
|
acorn: "^8.16.0",
|
|
@@ -939,50 +939,53 @@ __export(metrics_exports, {
|
|
|
939
939
|
resetRunAiCalls: () => resetRunAiCalls,
|
|
940
940
|
resetTestMetricsSnapshot: () => resetTestMetricsSnapshot
|
|
941
941
|
});
|
|
942
|
+
function getMeter() {
|
|
943
|
+
return metrics.getMeter("visor");
|
|
944
|
+
}
|
|
942
945
|
function ensureInstruments() {
|
|
943
946
|
if (initialized) return;
|
|
944
947
|
try {
|
|
945
|
-
checkDurationHist =
|
|
948
|
+
checkDurationHist = getMeter().createHistogram("visor.check.duration_ms", {
|
|
946
949
|
description: "Duration of a check execution in milliseconds",
|
|
947
950
|
unit: "ms"
|
|
948
951
|
});
|
|
949
|
-
providerDurationHist =
|
|
952
|
+
providerDurationHist = getMeter().createHistogram("visor.provider.duration_ms", {
|
|
950
953
|
description: "Duration of provider execution in milliseconds",
|
|
951
954
|
unit: "ms"
|
|
952
955
|
});
|
|
953
|
-
foreachDurationHist =
|
|
956
|
+
foreachDurationHist = getMeter().createHistogram("visor.foreach.item.duration_ms", {
|
|
954
957
|
description: "Duration of a forEach item execution in milliseconds",
|
|
955
958
|
unit: "ms"
|
|
956
959
|
});
|
|
957
|
-
issuesCounter =
|
|
960
|
+
issuesCounter = getMeter().createCounter("visor.check.issues", {
|
|
958
961
|
description: "Number of issues produced by checks",
|
|
959
962
|
unit: "1"
|
|
960
963
|
});
|
|
961
|
-
activeChecks =
|
|
964
|
+
activeChecks = getMeter().createUpDownCounter("visor.run.active_checks", {
|
|
962
965
|
description: "Number of checks actively running",
|
|
963
966
|
unit: "1"
|
|
964
967
|
});
|
|
965
|
-
failIfCounter =
|
|
968
|
+
failIfCounter = getMeter().createCounter("visor.fail_if.triggered", {
|
|
966
969
|
description: "Number of times fail_if condition triggered",
|
|
967
970
|
unit: "1"
|
|
968
971
|
});
|
|
969
|
-
diagramBlocks =
|
|
972
|
+
diagramBlocks = getMeter().createCounter("visor.diagram.blocks", {
|
|
970
973
|
description: "Number of Mermaid diagram blocks emitted",
|
|
971
974
|
unit: "1"
|
|
972
975
|
});
|
|
973
|
-
runCounter =
|
|
976
|
+
runCounter = getMeter().createCounter("visor.run.total", {
|
|
974
977
|
description: "Total number of visor runs (workflow executions)",
|
|
975
978
|
unit: "1"
|
|
976
979
|
});
|
|
977
|
-
runDurationHist =
|
|
980
|
+
runDurationHist = getMeter().createHistogram("visor.run.duration_ms", {
|
|
978
981
|
description: "Duration of a complete visor run in milliseconds",
|
|
979
982
|
unit: "ms"
|
|
980
983
|
});
|
|
981
|
-
aiCallCounter =
|
|
984
|
+
aiCallCounter = getMeter().createCounter("visor.ai_call.total", {
|
|
982
985
|
description: "Total number of AI provider calls",
|
|
983
986
|
unit: "1"
|
|
984
987
|
});
|
|
985
|
-
runAiCallsHist =
|
|
988
|
+
runAiCallsHist = getMeter().createHistogram("visor.run.ai_calls", {
|
|
986
989
|
description: "Number of AI calls per visor run",
|
|
987
990
|
unit: "1"
|
|
988
991
|
});
|
|
@@ -1119,13 +1122,12 @@ function getTestMetricsSnapshot() {
|
|
|
1119
1122
|
function resetTestMetricsSnapshot() {
|
|
1120
1123
|
Object.keys(TEST_SNAPSHOT).forEach((k) => TEST_SNAPSHOT[k] = 0);
|
|
1121
1124
|
}
|
|
1122
|
-
var initialized,
|
|
1125
|
+
var initialized, TEST_ENABLED, TEST_SNAPSHOT, checkDurationHist, providerDurationHist, foreachDurationHist, issuesCounter, activeChecks, failIfCounter, diagramBlocks, runCounter, runDurationHist, aiCallCounter, runAiCallsHist, _currentRunAiCalls;
|
|
1123
1126
|
var init_metrics = __esm({
|
|
1124
1127
|
"src/telemetry/metrics.ts"() {
|
|
1125
1128
|
"use strict";
|
|
1126
1129
|
init_lazy_otel();
|
|
1127
1130
|
initialized = false;
|
|
1128
|
-
meter = metrics.getMeter("visor");
|
|
1129
1131
|
TEST_ENABLED = process.env.VISOR_TEST_METRICS === "true";
|
|
1130
1132
|
TEST_SNAPSHOT = { fail_if_triggered: 0 };
|
|
1131
1133
|
_currentRunAiCalls = 0;
|
|
@@ -12669,6 +12671,22 @@ var init_config_schema = __esm({
|
|
|
12669
12671
|
$ref: "#/definitions/SlackConfig",
|
|
12670
12672
|
description: "Slack configuration"
|
|
12671
12673
|
},
|
|
12674
|
+
telegram: {
|
|
12675
|
+
$ref: "#/definitions/TelegramConfig",
|
|
12676
|
+
description: "Telegram bot configuration"
|
|
12677
|
+
},
|
|
12678
|
+
email: {
|
|
12679
|
+
$ref: "#/definitions/EmailConfig",
|
|
12680
|
+
description: "Email integration configuration"
|
|
12681
|
+
},
|
|
12682
|
+
whatsapp: {
|
|
12683
|
+
$ref: "#/definitions/WhatsAppConfig",
|
|
12684
|
+
description: "WhatsApp bot configuration"
|
|
12685
|
+
},
|
|
12686
|
+
teams: {
|
|
12687
|
+
$ref: "#/definitions/TeamsConfig",
|
|
12688
|
+
description: "Microsoft Teams bot configuration"
|
|
12689
|
+
},
|
|
12672
12690
|
scheduler: {
|
|
12673
12691
|
$ref: "#/definitions/SchedulerConfig",
|
|
12674
12692
|
description: "Scheduler configuration for scheduled workflow execution"
|
|
@@ -13442,7 +13460,7 @@ var init_config_schema = __esm({
|
|
|
13442
13460
|
description: "Arguments/inputs for the workflow"
|
|
13443
13461
|
},
|
|
13444
13462
|
overrides: {
|
|
13445
|
-
$ref: "#/definitions/Record%3Cstring%2CPartial%3Cinterface-src_types_config.ts-
|
|
13463
|
+
$ref: "#/definitions/Record%3Cstring%2CPartial%3Cinterface-src_types_config.ts-14017-28611-src_types_config.ts-0-56833%3E%3E",
|
|
13446
13464
|
description: "Override specific step configurations in the workflow"
|
|
13447
13465
|
},
|
|
13448
13466
|
output_mapping: {
|
|
@@ -13458,7 +13476,7 @@ var init_config_schema = __esm({
|
|
|
13458
13476
|
description: "Config file path - alternative to workflow ID (loads a Visor config file as workflow)"
|
|
13459
13477
|
},
|
|
13460
13478
|
workflow_overrides: {
|
|
13461
|
-
$ref: "#/definitions/Record%3Cstring%2CPartial%3Cinterface-src_types_config.ts-
|
|
13479
|
+
$ref: "#/definitions/Record%3Cstring%2CPartial%3Cinterface-src_types_config.ts-14017-28611-src_types_config.ts-0-56833%3E%3E",
|
|
13462
13480
|
description: "Alias for overrides - workflow step overrides (backward compatibility)"
|
|
13463
13481
|
},
|
|
13464
13482
|
ref: {
|
|
@@ -13642,7 +13660,11 @@ var init_config_schema = __esm({
|
|
|
13642
13660
|
"manual",
|
|
13643
13661
|
"schedule",
|
|
13644
13662
|
"webhook_received",
|
|
13645
|
-
"slack_message"
|
|
13663
|
+
"slack_message",
|
|
13664
|
+
"telegram_message",
|
|
13665
|
+
"email_message",
|
|
13666
|
+
"whatsapp_message",
|
|
13667
|
+
"teams_message"
|
|
13646
13668
|
],
|
|
13647
13669
|
description: "Valid event triggers for checks"
|
|
13648
13670
|
},
|
|
@@ -14156,7 +14178,7 @@ var init_config_schema = __esm({
|
|
|
14156
14178
|
description: "Custom output name (defaults to workflow name)"
|
|
14157
14179
|
},
|
|
14158
14180
|
overrides: {
|
|
14159
|
-
$ref: "#/definitions/Record%3Cstring%2CPartial%3Cinterface-src_types_config.ts-
|
|
14181
|
+
$ref: "#/definitions/Record%3Cstring%2CPartial%3Cinterface-src_types_config.ts-14017-28611-src_types_config.ts-0-56833%3E%3E",
|
|
14160
14182
|
description: "Step overrides"
|
|
14161
14183
|
},
|
|
14162
14184
|
output_mapping: {
|
|
@@ -14171,13 +14193,13 @@ var init_config_schema = __esm({
|
|
|
14171
14193
|
"^x-": {}
|
|
14172
14194
|
}
|
|
14173
14195
|
},
|
|
14174
|
-
"Record<string,Partial<interface-src_types_config.ts-
|
|
14196
|
+
"Record<string,Partial<interface-src_types_config.ts-14017-28611-src_types_config.ts-0-56833>>": {
|
|
14175
14197
|
type: "object",
|
|
14176
14198
|
additionalProperties: {
|
|
14177
|
-
$ref: "#/definitions/Partial%3Cinterface-src_types_config.ts-
|
|
14199
|
+
$ref: "#/definitions/Partial%3Cinterface-src_types_config.ts-14017-28611-src_types_config.ts-0-56833%3E"
|
|
14178
14200
|
}
|
|
14179
14201
|
},
|
|
14180
|
-
"Partial<interface-src_types_config.ts-
|
|
14202
|
+
"Partial<interface-src_types_config.ts-14017-28611-src_types_config.ts-0-56833>": {
|
|
14181
14203
|
type: "object",
|
|
14182
14204
|
additionalProperties: false
|
|
14183
14205
|
},
|
|
@@ -15036,6 +15058,260 @@ var init_config_schema = __esm({
|
|
|
15036
15058
|
"^x-": {}
|
|
15037
15059
|
}
|
|
15038
15060
|
},
|
|
15061
|
+
TelegramConfig: {
|
|
15062
|
+
type: "object",
|
|
15063
|
+
properties: {
|
|
15064
|
+
bot_token: {
|
|
15065
|
+
type: "string",
|
|
15066
|
+
description: "Bot token from"
|
|
15067
|
+
},
|
|
15068
|
+
polling_timeout: {
|
|
15069
|
+
type: "number",
|
|
15070
|
+
description: "Polling timeout in seconds for getUpdates (default: 30)"
|
|
15071
|
+
},
|
|
15072
|
+
chat_allowlist: {
|
|
15073
|
+
type: "array",
|
|
15074
|
+
items: {
|
|
15075
|
+
type: ["string", "number"]
|
|
15076
|
+
},
|
|
15077
|
+
description: "Chat/group allowlist - numeric chat IDs that the bot responds in"
|
|
15078
|
+
},
|
|
15079
|
+
require_mention: {
|
|
15080
|
+
type: "boolean",
|
|
15081
|
+
description: "In groups, only respond when"
|
|
15082
|
+
},
|
|
15083
|
+
workflow: {
|
|
15084
|
+
type: "string",
|
|
15085
|
+
description: "Workflow to run when a message is received"
|
|
15086
|
+
}
|
|
15087
|
+
},
|
|
15088
|
+
additionalProperties: false,
|
|
15089
|
+
patternProperties: {
|
|
15090
|
+
"^x-": {}
|
|
15091
|
+
}
|
|
15092
|
+
},
|
|
15093
|
+
EmailConfig: {
|
|
15094
|
+
type: "object",
|
|
15095
|
+
properties: {
|
|
15096
|
+
receive: {
|
|
15097
|
+
type: "object",
|
|
15098
|
+
properties: {
|
|
15099
|
+
type: {
|
|
15100
|
+
type: "string",
|
|
15101
|
+
enum: ["imap", "resend"],
|
|
15102
|
+
description: "Backend type: 'imap' (universal) or 'resend' (managed webhook)"
|
|
15103
|
+
},
|
|
15104
|
+
host: {
|
|
15105
|
+
type: "string",
|
|
15106
|
+
description: "IMAP server hostname"
|
|
15107
|
+
},
|
|
15108
|
+
port: {
|
|
15109
|
+
type: "number",
|
|
15110
|
+
description: "IMAP server port (default: 993)"
|
|
15111
|
+
},
|
|
15112
|
+
auth: {
|
|
15113
|
+
type: "object",
|
|
15114
|
+
properties: {
|
|
15115
|
+
user: {
|
|
15116
|
+
type: "string"
|
|
15117
|
+
},
|
|
15118
|
+
pass: {
|
|
15119
|
+
type: "string"
|
|
15120
|
+
}
|
|
15121
|
+
},
|
|
15122
|
+
additionalProperties: false,
|
|
15123
|
+
description: "IMAP auth credentials",
|
|
15124
|
+
patternProperties: {
|
|
15125
|
+
"^x-": {}
|
|
15126
|
+
}
|
|
15127
|
+
},
|
|
15128
|
+
secure: {
|
|
15129
|
+
type: "boolean",
|
|
15130
|
+
description: "Use TLS (default: true)"
|
|
15131
|
+
},
|
|
15132
|
+
poll_interval: {
|
|
15133
|
+
type: "number",
|
|
15134
|
+
description: "Polling interval in seconds when IDLE not available (default: 30)"
|
|
15135
|
+
},
|
|
15136
|
+
folder: {
|
|
15137
|
+
type: "string",
|
|
15138
|
+
description: "IMAP folder to monitor (default: 'INBOX')"
|
|
15139
|
+
},
|
|
15140
|
+
mark_read: {
|
|
15141
|
+
type: "boolean",
|
|
15142
|
+
description: "Mark processed messages as read (default: true)"
|
|
15143
|
+
},
|
|
15144
|
+
api_key: {
|
|
15145
|
+
type: "string",
|
|
15146
|
+
description: "Resend API key (for type: 'resend')"
|
|
15147
|
+
},
|
|
15148
|
+
webhook_secret: {
|
|
15149
|
+
type: "string",
|
|
15150
|
+
description: "Resend webhook secret for signature verification"
|
|
15151
|
+
}
|
|
15152
|
+
},
|
|
15153
|
+
additionalProperties: false,
|
|
15154
|
+
description: "Receive backend configuration",
|
|
15155
|
+
patternProperties: {
|
|
15156
|
+
"^x-": {}
|
|
15157
|
+
}
|
|
15158
|
+
},
|
|
15159
|
+
send: {
|
|
15160
|
+
type: "object",
|
|
15161
|
+
properties: {
|
|
15162
|
+
type: {
|
|
15163
|
+
type: "string",
|
|
15164
|
+
enum: ["smtp", "resend"],
|
|
15165
|
+
description: "Backend type: 'smtp' (universal) or 'resend' (managed API)"
|
|
15166
|
+
},
|
|
15167
|
+
host: {
|
|
15168
|
+
type: "string",
|
|
15169
|
+
description: "SMTP server hostname"
|
|
15170
|
+
},
|
|
15171
|
+
port: {
|
|
15172
|
+
type: "number",
|
|
15173
|
+
description: "SMTP server port (default: 587)"
|
|
15174
|
+
},
|
|
15175
|
+
auth: {
|
|
15176
|
+
type: "object",
|
|
15177
|
+
properties: {
|
|
15178
|
+
user: {
|
|
15179
|
+
type: "string"
|
|
15180
|
+
},
|
|
15181
|
+
pass: {
|
|
15182
|
+
type: "string"
|
|
15183
|
+
}
|
|
15184
|
+
},
|
|
15185
|
+
additionalProperties: false,
|
|
15186
|
+
description: "SMTP auth credentials",
|
|
15187
|
+
patternProperties: {
|
|
15188
|
+
"^x-": {}
|
|
15189
|
+
}
|
|
15190
|
+
},
|
|
15191
|
+
secure: {
|
|
15192
|
+
type: "boolean",
|
|
15193
|
+
description: "Use TLS (default: true)"
|
|
15194
|
+
},
|
|
15195
|
+
from: {
|
|
15196
|
+
type: "string",
|
|
15197
|
+
description: 'Default sender address (e.g., "Bot <bot@example.com>")'
|
|
15198
|
+
},
|
|
15199
|
+
api_key: {
|
|
15200
|
+
type: "string",
|
|
15201
|
+
description: "Resend API key (for type: 'resend')"
|
|
15202
|
+
}
|
|
15203
|
+
},
|
|
15204
|
+
additionalProperties: false,
|
|
15205
|
+
description: "Send backend configuration",
|
|
15206
|
+
patternProperties: {
|
|
15207
|
+
"^x-": {}
|
|
15208
|
+
}
|
|
15209
|
+
},
|
|
15210
|
+
allowlist: {
|
|
15211
|
+
type: "array",
|
|
15212
|
+
items: {
|
|
15213
|
+
type: "string"
|
|
15214
|
+
},
|
|
15215
|
+
description: "Only process emails from these senders"
|
|
15216
|
+
},
|
|
15217
|
+
workflow: {
|
|
15218
|
+
type: "string",
|
|
15219
|
+
description: "Workflow to run when an email is received"
|
|
15220
|
+
}
|
|
15221
|
+
},
|
|
15222
|
+
additionalProperties: false,
|
|
15223
|
+
patternProperties: {
|
|
15224
|
+
"^x-": {}
|
|
15225
|
+
}
|
|
15226
|
+
},
|
|
15227
|
+
WhatsAppConfig: {
|
|
15228
|
+
type: "object",
|
|
15229
|
+
properties: {
|
|
15230
|
+
access_token: {
|
|
15231
|
+
type: "string",
|
|
15232
|
+
description: "WhatsApp Cloud API access token (or WHATSAPP_ACCESS_TOKEN env var)"
|
|
15233
|
+
},
|
|
15234
|
+
phone_number_id: {
|
|
15235
|
+
type: "string",
|
|
15236
|
+
description: "Phone Number ID from Meta Business Suite (or WHATSAPP_PHONE_NUMBER_ID env var)"
|
|
15237
|
+
},
|
|
15238
|
+
app_secret: {
|
|
15239
|
+
type: "string",
|
|
15240
|
+
description: "Meta App Secret for webhook signature verification (or WHATSAPP_APP_SECRET env var)"
|
|
15241
|
+
},
|
|
15242
|
+
verify_token: {
|
|
15243
|
+
type: "string",
|
|
15244
|
+
description: "Verify token for webhook subscription challenge (or WHATSAPP_VERIFY_TOKEN env var)"
|
|
15245
|
+
},
|
|
15246
|
+
api_version: {
|
|
15247
|
+
type: "string",
|
|
15248
|
+
description: "Graph API version (default: 'v21.0')"
|
|
15249
|
+
},
|
|
15250
|
+
port: {
|
|
15251
|
+
type: "number",
|
|
15252
|
+
description: "Port for webhook HTTP server (default: 8443)"
|
|
15253
|
+
},
|
|
15254
|
+
host: {
|
|
15255
|
+
type: "string",
|
|
15256
|
+
description: "Host for webhook HTTP server (default: '0.0.0.0')"
|
|
15257
|
+
},
|
|
15258
|
+
phone_allowlist: {
|
|
15259
|
+
type: "array",
|
|
15260
|
+
items: {
|
|
15261
|
+
type: "string"
|
|
15262
|
+
},
|
|
15263
|
+
description: "Phone number allowlist \u2014 only respond to these numbers"
|
|
15264
|
+
},
|
|
15265
|
+
workflow: {
|
|
15266
|
+
type: "string",
|
|
15267
|
+
description: "Workflow to run when a message is received"
|
|
15268
|
+
}
|
|
15269
|
+
},
|
|
15270
|
+
additionalProperties: false,
|
|
15271
|
+
patternProperties: {
|
|
15272
|
+
"^x-": {}
|
|
15273
|
+
}
|
|
15274
|
+
},
|
|
15275
|
+
TeamsConfig: {
|
|
15276
|
+
type: "object",
|
|
15277
|
+
properties: {
|
|
15278
|
+
app_id: {
|
|
15279
|
+
type: "string",
|
|
15280
|
+
description: "Azure AD App (client) ID (or TEAMS_APP_ID env var)"
|
|
15281
|
+
},
|
|
15282
|
+
app_password: {
|
|
15283
|
+
type: "string",
|
|
15284
|
+
description: "Azure AD App client secret (or TEAMS_APP_PASSWORD env var)"
|
|
15285
|
+
},
|
|
15286
|
+
tenant_id: {
|
|
15287
|
+
type: "string",
|
|
15288
|
+
description: "Azure AD Tenant ID for single-tenant apps (or TEAMS_TENANT_ID env var)"
|
|
15289
|
+
},
|
|
15290
|
+
port: {
|
|
15291
|
+
type: "number",
|
|
15292
|
+
description: "Port for webhook HTTP server (default: 3978)"
|
|
15293
|
+
},
|
|
15294
|
+
host: {
|
|
15295
|
+
type: "string",
|
|
15296
|
+
description: "Host for webhook HTTP server (default: '0.0.0.0')"
|
|
15297
|
+
},
|
|
15298
|
+
user_allowlist: {
|
|
15299
|
+
type: "array",
|
|
15300
|
+
items: {
|
|
15301
|
+
type: "string"
|
|
15302
|
+
},
|
|
15303
|
+
description: "User ID allowlist \u2014 only respond to these AAD user IDs"
|
|
15304
|
+
},
|
|
15305
|
+
workflow: {
|
|
15306
|
+
type: "string",
|
|
15307
|
+
description: "Workflow to run when a message is received"
|
|
15308
|
+
}
|
|
15309
|
+
},
|
|
15310
|
+
additionalProperties: false,
|
|
15311
|
+
patternProperties: {
|
|
15312
|
+
"^x-": {}
|
|
15313
|
+
}
|
|
15314
|
+
},
|
|
15039
15315
|
SchedulerConfig: {
|
|
15040
15316
|
type: "object",
|
|
15041
15317
|
properties: {
|