@probelabs/visor 0.1.174 → 0.1.175
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/README.md +3 -2
- package/dist/cli-main.d.ts.map +1 -1
- package/dist/docs/guides/tdd-assistant-workflows.md +519 -0
- package/dist/docs/testing/dsl-reference.md +93 -0
- package/dist/examples/lifecycle-hooks.tests.yaml +62 -0
- package/dist/generated/config-schema.d.ts +28 -7
- package/dist/generated/config-schema.d.ts.map +1 -1
- package/dist/generated/config-schema.json +31 -7
- package/dist/index.js +331 -26
- package/dist/output/traces/{run-2026-03-09T15-44-30-340Z.ndjson → run-2026-03-09T18-49-07-663Z.ndjson} +84 -84
- package/dist/output/traces/{run-2026-03-09T15-45-10-778Z.ndjson → run-2026-03-09T18-49-46-345Z.ndjson} +1917 -1901
- package/dist/providers/ai-check-provider.d.ts.map +1 -1
- package/dist/providers/mcp-custom-sse-server.d.ts +4 -0
- package/dist/providers/mcp-custom-sse-server.d.ts.map +1 -1
- package/dist/sdk/{a2a-frontend-5L6H7ZVF.mjs → a2a-frontend-ORLAU5GK.mjs} +2 -2
- package/dist/sdk/{check-provider-registry-UPQNHHFF.mjs → check-provider-registry-7JPPJHVM.mjs} +3 -3
- package/dist/sdk/{check-provider-registry-YVQI4IOR.mjs → check-provider-registry-O36CQEGD.mjs} +3 -3
- package/dist/sdk/{check-provider-registry-UM762L7S.mjs → check-provider-registry-QCDV3SI6.mjs} +6 -6
- package/dist/sdk/{chunk-ZI3SEHWA.mjs → chunk-4FGX4SA6.mjs} +2 -2
- package/dist/sdk/{chunk-ZI3SEHWA.mjs.map → chunk-4FGX4SA6.mjs.map} +1 -1
- package/dist/sdk/{chunk-2PL2YH3B.mjs → chunk-FZPCP444.mjs} +153 -14
- package/dist/sdk/chunk-FZPCP444.mjs.map +1 -0
- package/dist/sdk/{chunk-UTBSBJFV.mjs → chunk-HNK5ZJ2L.mjs} +2 -2
- package/dist/sdk/{chunk-W4KCJM6J.mjs → chunk-MLXGCLZJ.mjs} +29 -8
- package/dist/sdk/chunk-MLXGCLZJ.mjs.map +1 -0
- package/dist/sdk/{chunk-YEARBXYT.mjs → chunk-QAO73GUX.mjs} +3 -3
- package/dist/sdk/{chunk-I6GKXMQ5.mjs → chunk-TAK5HLAR.mjs} +153 -14
- package/dist/sdk/chunk-TAK5HLAR.mjs.map +1 -0
- package/dist/sdk/{chunk-EP7PQ4IX.mjs → chunk-YVVOG7RP.mjs} +161 -22
- package/dist/sdk/chunk-YVVOG7RP.mjs.map +1 -0
- package/dist/sdk/{config-BVL3KFMB.mjs → config-4JMBJKWS.mjs} +2 -2
- package/dist/sdk/{failure-condition-evaluator-4O6BTC4Q.mjs → failure-condition-evaluator-RM5JJS4Q.mjs} +3 -3
- package/dist/sdk/{github-frontend-UXL73NKB.mjs → github-frontend-O5IAWXL5.mjs} +3 -3
- package/dist/sdk/{host-KJTXX76P.mjs → host-WTJBWO4T.mjs} +3 -3
- package/dist/sdk/{routing-AWYB2YX3.mjs → routing-AWOHU2WP.mjs} +4 -4
- package/dist/sdk/{schedule-tool-UMDRCNO5.mjs → schedule-tool-DF5WUVYV.mjs} +3 -3
- package/dist/sdk/{schedule-tool-SGCYDSHL.mjs → schedule-tool-L5G2BRIG.mjs} +6 -6
- package/dist/sdk/{schedule-tool-IEY2CFLU.mjs → schedule-tool-XVSYLH4Z.mjs} +3 -3
- package/dist/sdk/{schedule-tool-handler-5EPTHBLS.mjs → schedule-tool-handler-CFMFHDUL.mjs} +3 -3
- package/dist/sdk/{schedule-tool-handler-HMEGLYJF.mjs → schedule-tool-handler-JGWA4N3C.mjs} +3 -3
- package/dist/sdk/{schedule-tool-handler-5QVUZ5EZ.mjs → schedule-tool-handler-UJ4RFTW2.mjs} +6 -6
- package/dist/sdk/sdk.d.mts +9 -1
- package/dist/sdk/sdk.d.ts +9 -1
- package/dist/sdk/sdk.js +173 -13
- package/dist/sdk/sdk.js.map +1 -1
- package/dist/sdk/sdk.mjs +5 -5
- package/dist/sdk/{trace-helpers-6TEWG7RK.mjs → trace-helpers-4ERTVCZG.mjs} +2 -2
- package/dist/sdk/{workflow-check-provider-VJ7VIMCQ.mjs → workflow-check-provider-ETM452BO.mjs} +3 -3
- package/dist/sdk/{workflow-check-provider-7VNIO6L5.mjs → workflow-check-provider-I3XLJP6V.mjs} +6 -6
- package/dist/sdk/{workflow-check-provider-EWMZEEES.mjs → workflow-check-provider-Z6U7FZAF.mjs} +3 -3
- package/dist/test-runner/conversation-sugar.d.ts.map +1 -1
- package/dist/test-runner/index.d.ts +19 -0
- package/dist/test-runner/index.d.ts.map +1 -1
- package/dist/test-runner/validator.d.ts.map +1 -1
- package/dist/traces/{run-2026-03-09T15-44-30-340Z.ndjson → run-2026-03-09T18-49-07-663Z.ndjson} +84 -84
- package/dist/traces/{run-2026-03-09T15-45-10-778Z.ndjson → run-2026-03-09T18-49-46-345Z.ndjson} +1917 -1901
- package/dist/types/config.d.ts +9 -1
- package/dist/types/config.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/sdk/chunk-2PL2YH3B.mjs.map +0 -1
- package/dist/sdk/chunk-EP7PQ4IX.mjs.map +0 -1
- package/dist/sdk/chunk-I6GKXMQ5.mjs.map +0 -1
- package/dist/sdk/chunk-W4KCJM6J.mjs.map +0 -1
- /package/dist/sdk/{a2a-frontend-5L6H7ZVF.mjs.map → a2a-frontend-ORLAU5GK.mjs.map} +0 -0
- /package/dist/sdk/{check-provider-registry-UM762L7S.mjs.map → check-provider-registry-7JPPJHVM.mjs.map} +0 -0
- /package/dist/sdk/{check-provider-registry-UPQNHHFF.mjs.map → check-provider-registry-O36CQEGD.mjs.map} +0 -0
- /package/dist/sdk/{check-provider-registry-YVQI4IOR.mjs.map → check-provider-registry-QCDV3SI6.mjs.map} +0 -0
- /package/dist/sdk/{chunk-UTBSBJFV.mjs.map → chunk-HNK5ZJ2L.mjs.map} +0 -0
- /package/dist/sdk/{chunk-YEARBXYT.mjs.map → chunk-QAO73GUX.mjs.map} +0 -0
- /package/dist/sdk/{config-BVL3KFMB.mjs.map → config-4JMBJKWS.mjs.map} +0 -0
- /package/dist/sdk/{failure-condition-evaluator-4O6BTC4Q.mjs.map → failure-condition-evaluator-RM5JJS4Q.mjs.map} +0 -0
- /package/dist/sdk/{github-frontend-UXL73NKB.mjs.map → github-frontend-O5IAWXL5.mjs.map} +0 -0
- /package/dist/sdk/{host-KJTXX76P.mjs.map → host-WTJBWO4T.mjs.map} +0 -0
- /package/dist/sdk/{routing-AWYB2YX3.mjs.map → routing-AWOHU2WP.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-IEY2CFLU.mjs.map → schedule-tool-DF5WUVYV.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-SGCYDSHL.mjs.map → schedule-tool-L5G2BRIG.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-UMDRCNO5.mjs.map → schedule-tool-XVSYLH4Z.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-handler-5EPTHBLS.mjs.map → schedule-tool-handler-CFMFHDUL.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-handler-5QVUZ5EZ.mjs.map → schedule-tool-handler-JGWA4N3C.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-handler-HMEGLYJF.mjs.map → schedule-tool-handler-UJ4RFTW2.mjs.map} +0 -0
- /package/dist/sdk/{trace-helpers-6TEWG7RK.mjs.map → trace-helpers-4ERTVCZG.mjs.map} +0 -0
- /package/dist/sdk/{workflow-check-provider-7VNIO6L5.mjs.map → workflow-check-provider-ETM452BO.mjs.map} +0 -0
- /package/dist/sdk/{workflow-check-provider-EWMZEEES.mjs.map → workflow-check-provider-I3XLJP6V.mjs.map} +0 -0
- /package/dist/sdk/{workflow-check-provider-VJ7VIMCQ.mjs.map → workflow-check-provider-Z6U7FZAF.mjs.map} +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
FailureConditionEvaluator,
|
|
3
3
|
init_failure_condition_evaluator
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-HNK5ZJ2L.mjs";
|
|
5
5
|
import {
|
|
6
6
|
addEvent,
|
|
7
7
|
init_trace_helpers
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-4FGX4SA6.mjs";
|
|
9
9
|
import {
|
|
10
10
|
createExtendedLiquid,
|
|
11
11
|
init_liquid_extensions
|
|
@@ -1499,4 +1499,4 @@ export {
|
|
|
1499
1499
|
evaluateTransitions,
|
|
1500
1500
|
init_routing
|
|
1501
1501
|
};
|
|
1502
|
-
//# sourceMappingURL=chunk-
|
|
1502
|
+
//# sourceMappingURL=chunk-QAO73GUX.mjs.map
|
|
@@ -43,7 +43,7 @@ import {
|
|
|
43
43
|
import {
|
|
44
44
|
config_exports,
|
|
45
45
|
init_config
|
|
46
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-MLXGCLZJ.mjs";
|
|
47
47
|
import {
|
|
48
48
|
ExecutionJournal,
|
|
49
49
|
checkLoopBudget,
|
|
@@ -4006,7 +4006,7 @@ async function executeWorkflowAsTool(workflowId, args, context2, argsOverrides)
|
|
|
4006
4006
|
...args,
|
|
4007
4007
|
...argsOverrides
|
|
4008
4008
|
};
|
|
4009
|
-
const { WorkflowCheckProvider: WorkflowCheckProvider2 } = await import("./workflow-check-provider-
|
|
4009
|
+
const { WorkflowCheckProvider: WorkflowCheckProvider2 } = await import("./workflow-check-provider-Z6U7FZAF.mjs");
|
|
4010
4010
|
const provider = new WorkflowCheckProvider2();
|
|
4011
4011
|
const checkConfig = {
|
|
4012
4012
|
type: "workflow",
|
|
@@ -13348,7 +13348,7 @@ var init_state_machine_execution_engine = __esm({
|
|
|
13348
13348
|
try {
|
|
13349
13349
|
const map = options?.webhookContext?.webhookData;
|
|
13350
13350
|
if (map) {
|
|
13351
|
-
const { CheckProviderRegistry: CheckProviderRegistry2 } = await import("./check-provider-registry-
|
|
13351
|
+
const { CheckProviderRegistry: CheckProviderRegistry2 } = await import("./check-provider-registry-7JPPJHVM.mjs");
|
|
13352
13352
|
const reg = CheckProviderRegistry2.getInstance();
|
|
13353
13353
|
const p = reg.getProvider("http_input");
|
|
13354
13354
|
if (p && typeof p.setWebhookContext === "function") p.setWebhookContext(map);
|
|
@@ -13461,7 +13461,7 @@ var init_state_machine_execution_engine = __esm({
|
|
|
13461
13461
|
logger.info("[StateMachine] Using state machine engine");
|
|
13462
13462
|
}
|
|
13463
13463
|
if (!config) {
|
|
13464
|
-
const { ConfigManager } = await import("./config-
|
|
13464
|
+
const { ConfigManager } = await import("./config-4JMBJKWS.mjs");
|
|
13465
13465
|
const configManager = new ConfigManager();
|
|
13466
13466
|
config = await configManager.getDefaultConfig();
|
|
13467
13467
|
logger.debug("[StateMachine] Using default configuration (no config provided)");
|
|
@@ -13471,7 +13471,7 @@ var init_state_machine_execution_engine = __esm({
|
|
|
13471
13471
|
tag_filter: tagFilter
|
|
13472
13472
|
} : config;
|
|
13473
13473
|
try {
|
|
13474
|
-
const { CheckProviderRegistry: CheckProviderRegistry2 } = await import("./check-provider-registry-
|
|
13474
|
+
const { CheckProviderRegistry: CheckProviderRegistry2 } = await import("./check-provider-registry-7JPPJHVM.mjs");
|
|
13475
13475
|
const registry = CheckProviderRegistry2.getInstance();
|
|
13476
13476
|
registry.setCustomTools(configWithTagFilter.tools || {});
|
|
13477
13477
|
} catch (error) {
|
|
@@ -13535,7 +13535,7 @@ var init_state_machine_execution_engine = __esm({
|
|
|
13535
13535
|
try {
|
|
13536
13536
|
const webhookData = this.executionContext?.webhookContext?.webhookData;
|
|
13537
13537
|
if (webhookData instanceof Map) {
|
|
13538
|
-
const { extractSlackContext: extractSlackContext2 } = await import("./schedule-tool-handler-
|
|
13538
|
+
const { extractSlackContext: extractSlackContext2 } = await import("./schedule-tool-handler-JGWA4N3C.mjs");
|
|
13539
13539
|
const slackCtx = extractSlackContext2(webhookData);
|
|
13540
13540
|
if (slackCtx) {
|
|
13541
13541
|
const payload = Array.from(webhookData.values())[0];
|
|
@@ -16069,6 +16069,9 @@ var init_schedule_tool_handler = __esm({
|
|
|
16069
16069
|
// src/providers/mcp-custom-sse-server.ts
|
|
16070
16070
|
import http from "http";
|
|
16071
16071
|
import { EventEmitter } from "events";
|
|
16072
|
+
function isHttpClientTool(tool) {
|
|
16073
|
+
return Boolean(tool && tool.type === "http_client" && (tool.base_url || tool.url));
|
|
16074
|
+
}
|
|
16072
16075
|
var CustomToolsSSEServer;
|
|
16073
16076
|
var init_mcp_custom_sse_server = __esm({
|
|
16074
16077
|
"src/providers/mcp-custom-sse-server.ts"() {
|
|
@@ -16080,6 +16083,7 @@ var init_mcp_custom_sse_server = __esm({
|
|
|
16080
16083
|
init_workflow_registry();
|
|
16081
16084
|
init_schedule_tool();
|
|
16082
16085
|
init_schedule_tool_handler();
|
|
16086
|
+
init_env_resolver();
|
|
16083
16087
|
CustomToolsSSEServer = class _CustomToolsSSEServer {
|
|
16084
16088
|
server = null;
|
|
16085
16089
|
port = 0;
|
|
@@ -16113,10 +16117,12 @@ var init_mcp_custom_sse_server = __esm({
|
|
|
16113
16117
|
}
|
|
16114
16118
|
}
|
|
16115
16119
|
for (const [name, tool] of this.tools.entries()) {
|
|
16116
|
-
if (
|
|
16117
|
-
|
|
16120
|
+
if (isWorkflowTool(tool) || isHttpClientTool(tool)) {
|
|
16121
|
+
if (isWorkflowTool(tool)) {
|
|
16122
|
+
workflowToolNames.push(name);
|
|
16123
|
+
}
|
|
16118
16124
|
} else {
|
|
16119
|
-
|
|
16125
|
+
toolsRecord[name] = tool;
|
|
16120
16126
|
}
|
|
16121
16127
|
}
|
|
16122
16128
|
if (workflowToolNames.length > 0 && !workflowContext) {
|
|
@@ -16596,7 +16602,12 @@ var init_mcp_custom_sse_server = __esm({
|
|
|
16596
16602
|
description: tool.description || `Execute ${tool.name}`,
|
|
16597
16603
|
inputSchema: normalizeInputSchema(tool.inputSchema)
|
|
16598
16604
|
}));
|
|
16599
|
-
const
|
|
16605
|
+
const httpClientTools = Array.from(this.tools.values()).filter(isHttpClientTool).map((tool) => ({
|
|
16606
|
+
name: tool.name,
|
|
16607
|
+
description: tool.description || `Call ${tool.name} HTTP API`,
|
|
16608
|
+
inputSchema: normalizeInputSchema(tool.inputSchema)
|
|
16609
|
+
}));
|
|
16610
|
+
const allTools = [...regularTools, ...workflowTools, ...httpClientTools];
|
|
16600
16611
|
if (this.debug) {
|
|
16601
16612
|
logger.debug(
|
|
16602
16613
|
`[CustomToolsSSEServer:${this.sessionId}] Listing ${allTools.length} tools: ${allTools.map((t) => t.name).join(", ")}`
|
|
@@ -16720,6 +16731,8 @@ var init_mcp_custom_sse_server = __esm({
|
|
|
16720
16731
|
this.workflowContext,
|
|
16721
16732
|
workflowTool.__argsOverrides
|
|
16722
16733
|
);
|
|
16734
|
+
} else if (tool && isHttpClientTool(tool)) {
|
|
16735
|
+
result = await this.executeHttpClientTool(tool, args);
|
|
16723
16736
|
} else {
|
|
16724
16737
|
result = await this.toolExecutor.execute(toolName, args);
|
|
16725
16738
|
}
|
|
@@ -16783,6 +16796,83 @@ var init_mcp_custom_sse_server = __esm({
|
|
|
16783
16796
|
}
|
|
16784
16797
|
}
|
|
16785
16798
|
}
|
|
16799
|
+
/**
|
|
16800
|
+
* Execute an http_client tool — proxy REST API calls through the configured base URL.
|
|
16801
|
+
*/
|
|
16802
|
+
async executeHttpClientTool(tool, args) {
|
|
16803
|
+
const baseUrl = (tool.base_url || tool.url).replace(/\/+$/, "");
|
|
16804
|
+
const apiPath = args.path || "";
|
|
16805
|
+
const method = (args.method || "GET").toUpperCase();
|
|
16806
|
+
const queryParams = args.query || {};
|
|
16807
|
+
const body = args.body;
|
|
16808
|
+
const toolHeaders = tool.headers || {};
|
|
16809
|
+
const timeout = tool.timeout || 3e4;
|
|
16810
|
+
let url = apiPath.startsWith("http") ? apiPath : `${baseUrl}/${apiPath.replace(/^\/+/, "")}`;
|
|
16811
|
+
if (Object.keys(queryParams).length > 0) {
|
|
16812
|
+
const qs = new URLSearchParams(queryParams).toString();
|
|
16813
|
+
url += `${url.includes("?") ? "&" : "?"}${qs}`;
|
|
16814
|
+
}
|
|
16815
|
+
const resolvedHeaders = {};
|
|
16816
|
+
for (const [key, value] of Object.entries(toolHeaders)) {
|
|
16817
|
+
resolvedHeaders[key] = String(EnvironmentResolver.resolveValue(value));
|
|
16818
|
+
}
|
|
16819
|
+
if (tool.auth) {
|
|
16820
|
+
const authType = tool.auth.type;
|
|
16821
|
+
if (authType === "bearer" && tool.auth.token) {
|
|
16822
|
+
const token = String(EnvironmentResolver.resolveValue(tool.auth.token));
|
|
16823
|
+
resolvedHeaders["Authorization"] = `Bearer ${token}`;
|
|
16824
|
+
}
|
|
16825
|
+
}
|
|
16826
|
+
if (this.debug) {
|
|
16827
|
+
logger.debug(`[CustomToolsSSEServer:${this.sessionId}] HTTP client: ${method} ${url}`);
|
|
16828
|
+
}
|
|
16829
|
+
const controller = new AbortController();
|
|
16830
|
+
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
16831
|
+
try {
|
|
16832
|
+
const requestOptions = {
|
|
16833
|
+
method,
|
|
16834
|
+
headers: resolvedHeaders,
|
|
16835
|
+
signal: controller.signal
|
|
16836
|
+
};
|
|
16837
|
+
if (method !== "GET" && body) {
|
|
16838
|
+
requestOptions.body = typeof body === "string" ? body : JSON.stringify(body);
|
|
16839
|
+
if (!resolvedHeaders["Content-Type"] && !resolvedHeaders["content-type"]) {
|
|
16840
|
+
resolvedHeaders["Content-Type"] = "application/json";
|
|
16841
|
+
}
|
|
16842
|
+
}
|
|
16843
|
+
const response = await fetch(url, requestOptions);
|
|
16844
|
+
clearTimeout(timeoutId);
|
|
16845
|
+
if (!response.ok) {
|
|
16846
|
+
let errorBody = "";
|
|
16847
|
+
try {
|
|
16848
|
+
errorBody = await response.text();
|
|
16849
|
+
} catch {
|
|
16850
|
+
}
|
|
16851
|
+
throw new Error(
|
|
16852
|
+
`HTTP ${response.status}: ${response.statusText}${errorBody ? ` - ${errorBody.substring(0, 500)}` : ""}`
|
|
16853
|
+
);
|
|
16854
|
+
}
|
|
16855
|
+
const contentType = response.headers.get("content-type");
|
|
16856
|
+
if (contentType && contentType.includes("application/json")) {
|
|
16857
|
+
return await response.json();
|
|
16858
|
+
}
|
|
16859
|
+
const text = await response.text();
|
|
16860
|
+
if (text.trim().startsWith("{") || text.trim().startsWith("[")) {
|
|
16861
|
+
try {
|
|
16862
|
+
return JSON.parse(text);
|
|
16863
|
+
} catch {
|
|
16864
|
+
return text;
|
|
16865
|
+
}
|
|
16866
|
+
}
|
|
16867
|
+
return text;
|
|
16868
|
+
} catch (error) {
|
|
16869
|
+
clearTimeout(timeoutId);
|
|
16870
|
+
if (error instanceof Error && error.name === "AbortError") {
|
|
16871
|
+
throw new Error(`HTTP client request timed out after ${timeout}ms`);
|
|
16872
|
+
}
|
|
16873
|
+
throw error;
|
|
16874
|
+
}
|
|
16875
|
+
}
|
|
16786
16876
|
/**
|
|
16787
16877
|
* Convert a type: 'workflow' tool definition into a WorkflowToolDefinition marker.
|
|
16788
16878
|
*
|
|
@@ -17866,6 +17956,7 @@ ${preview}`);
|
|
|
17866
17956
|
}
|
|
17867
17957
|
const workflowEntriesFromMcp = [];
|
|
17868
17958
|
const toolEntriesFromMcp = [];
|
|
17959
|
+
const httpClientEntriesFromMcp = [];
|
|
17869
17960
|
const mcpEntriesToRemove = [];
|
|
17870
17961
|
for (const [serverName, serverConfig] of Object.entries(mcpServers)) {
|
|
17871
17962
|
const cfg = serverConfig;
|
|
@@ -17879,6 +17970,12 @@ ${preview}`);
|
|
|
17879
17970
|
logger.debug(
|
|
17880
17971
|
`[AICheckProvider] Extracted workflow tool '${serverName}' (workflow=${cfg.workflow}) from ai_mcp_servers`
|
|
17881
17972
|
);
|
|
17973
|
+
} else if (cfg.type === "http_client" && (cfg.base_url || cfg.url)) {
|
|
17974
|
+
httpClientEntriesFromMcp.push({ name: serverName, config: cfg });
|
|
17975
|
+
mcpEntriesToRemove.push(serverName);
|
|
17976
|
+
logger.debug(
|
|
17977
|
+
`[AICheckProvider] Extracted http_client tool '${serverName}' (base_url=${cfg.base_url || cfg.url}) from ai_mcp_servers`
|
|
17978
|
+
);
|
|
17882
17979
|
} else if (cfg.tool && typeof cfg.tool === "string") {
|
|
17883
17980
|
toolEntriesFromMcp.push(cfg.tool);
|
|
17884
17981
|
mcpEntriesToRemove.push(serverName);
|
|
@@ -17931,7 +18028,7 @@ ${preview}`);
|
|
|
17931
18028
|
logger.debug(`[AICheckProvider] Schedule tool requested (${contextInfo})`);
|
|
17932
18029
|
}
|
|
17933
18030
|
const scheduleToolEnabled = scheduleToolRequested || config.ai?.enable_scheduler === true && !config.ai?.disableTools;
|
|
17934
|
-
if ((customToolsToLoad.length > 0 || scheduleToolEnabled) && (customToolsServerName || scheduleToolEnabled) && !config.ai?.disableTools) {
|
|
18031
|
+
if ((customToolsToLoad.length > 0 || scheduleToolEnabled || httpClientEntriesFromMcp.length > 0) && (customToolsServerName || scheduleToolEnabled || httpClientEntriesFromMcp.length > 0) && !config.ai?.disableTools) {
|
|
17935
18032
|
if (!customToolsServerName) {
|
|
17936
18033
|
customToolsServerName = "__tools__";
|
|
17937
18034
|
}
|
|
@@ -17963,6 +18060,48 @@ ${preview}`);
|
|
|
17963
18060
|
customTools.set(scheduleTool.name, scheduleTool);
|
|
17964
18061
|
logger.debug(`[AICheckProvider] Added built-in schedule tool`);
|
|
17965
18062
|
}
|
|
18063
|
+
for (const entry of httpClientEntriesFromMcp) {
|
|
18064
|
+
const httpTool = {
|
|
18065
|
+
name: entry.name,
|
|
18066
|
+
type: "http_client",
|
|
18067
|
+
description: entry.config.description || `Call ${entry.name} HTTP API (base: ${entry.config.base_url || entry.config.url})`,
|
|
18068
|
+
base_url: entry.config.base_url || entry.config.url,
|
|
18069
|
+
auth: entry.config.auth,
|
|
18070
|
+
headers: entry.config.headers,
|
|
18071
|
+
timeout: entry.config.timeout || 3e4,
|
|
18072
|
+
inputSchema: {
|
|
18073
|
+
type: "object",
|
|
18074
|
+
properties: {
|
|
18075
|
+
path: {
|
|
18076
|
+
type: "string",
|
|
18077
|
+
description: "API path (e.g. /jobs, /candidates/{id})"
|
|
18078
|
+
},
|
|
18079
|
+
method: {
|
|
18080
|
+
type: "string",
|
|
18081
|
+
description: "HTTP method (default: GET)",
|
|
18082
|
+
enum: ["GET", "POST", "PUT", "PATCH", "DELETE"]
|
|
18083
|
+
},
|
|
18084
|
+
query: {
|
|
18085
|
+
type: "object",
|
|
18086
|
+
description: "Query string parameters",
|
|
18087
|
+
additionalProperties: { type: "string" }
|
|
18088
|
+
},
|
|
18089
|
+
body: {
|
|
18090
|
+
type: "object",
|
|
18091
|
+
description: "Request body for POST/PUT/PATCH"
|
|
18092
|
+
}
|
|
18093
|
+
},
|
|
18094
|
+
required: ["path"]
|
|
18095
|
+
}
|
|
18096
|
+
};
|
|
18097
|
+
customTools.set(entry.name, httpTool);
|
|
18098
|
+
logger.debug(
|
|
18099
|
+
`[AICheckProvider] Added http_client tool '${entry.name}' (base_url=${httpTool.base_url})`
|
|
18100
|
+
);
|
|
18101
|
+
}
|
|
18102
|
+
if (httpClientEntriesFromMcp.length > 0 && !customToolsServerName) {
|
|
18103
|
+
customToolsServerName = "__tools__";
|
|
18104
|
+
}
|
|
17966
18105
|
if (customTools.size > 0) {
|
|
17967
18106
|
const sessionId = config.checkName || `ai-check-${Date.now()}`;
|
|
17968
18107
|
const debug = aiConfig.debug || process.env.VISOR_DEBUG === "true";
|
|
@@ -41415,8 +41554,8 @@ function buildBuiltinGlobals(opts) {
|
|
|
41415
41554
|
const asyncFunctionNames = /* @__PURE__ */ new Set();
|
|
41416
41555
|
const scheduleFn = async (args = {}) => {
|
|
41417
41556
|
try {
|
|
41418
|
-
const { handleScheduleAction: handleScheduleAction2, buildScheduleToolContext: buildScheduleToolContext2 } = await import("./schedule-tool-
|
|
41419
|
-
const { extractSlackContext: extractSlackContext2 } = await import("./schedule-tool-handler-
|
|
41557
|
+
const { handleScheduleAction: handleScheduleAction2, buildScheduleToolContext: buildScheduleToolContext2 } = await import("./schedule-tool-DF5WUVYV.mjs");
|
|
41558
|
+
const { extractSlackContext: extractSlackContext2 } = await import("./schedule-tool-handler-JGWA4N3C.mjs");
|
|
41420
41559
|
const parentCtx = opts.sessionInfo?._parentContext;
|
|
41421
41560
|
const webhookData = parentCtx?.prInfo?.eventContext?.webhookData;
|
|
41422
41561
|
const visorCfg = parentCtx?.config;
|
|
@@ -45013,4 +45152,4 @@ undici/lib/fetch/body.js:
|
|
|
45013
45152
|
undici/lib/websocket/frame.js:
|
|
45014
45153
|
(*! ws. MIT License. Einar Otto Stangvik <einaros@gmail.com> *)
|
|
45015
45154
|
*/
|
|
45016
|
-
//# sourceMappingURL=chunk-
|
|
45155
|
+
//# sourceMappingURL=chunk-TAK5HLAR.mjs.map
|