@probelabs/visor 0.1.181 → 0.1.182
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/defaults/code-talk.yaml +80 -14
- package/defaults/engineer.yaml +33 -15
- package/defaults/skills/code-explorer.yaml +5 -0
- package/dist/agent-protocol/a2a-frontend.d.ts +10 -0
- package/dist/agent-protocol/a2a-frontend.d.ts.map +1 -1
- package/dist/agent-protocol/task-evaluator.d.ts +52 -0
- package/dist/agent-protocol/task-evaluator.d.ts.map +1 -0
- package/dist/agent-protocol/task-store.d.ts +5 -3
- package/dist/agent-protocol/task-store.d.ts.map +1 -1
- package/dist/agent-protocol/tasks-cli-handler.d.ts.map +1 -1
- package/dist/agent-protocol/tasks-tui.d.ts +34 -0
- package/dist/agent-protocol/tasks-tui.d.ts.map +1 -0
- package/dist/agent-protocol/trace-serializer.d.ts +90 -0
- package/dist/agent-protocol/trace-serializer.d.ts.map +1 -0
- package/dist/agent-protocol/track-execution.d.ts +2 -0
- package/dist/agent-protocol/track-execution.d.ts.map +1 -1
- package/dist/cli-main.d.ts.map +1 -1
- package/dist/defaults/code-talk.yaml +80 -14
- package/dist/defaults/engineer.yaml +33 -15
- package/dist/defaults/skills/code-explorer.yaml +5 -0
- package/dist/docs/commands.md +57 -14
- package/dist/docs/configuration.md +2 -0
- package/dist/docs/guides/graceful-restart.md +178 -0
- package/dist/docs/observability.md +69 -0
- package/dist/docs/production-deployment.md +17 -0
- package/dist/email/polling-runner.d.ts +4 -0
- package/dist/email/polling-runner.d.ts.map +1 -1
- package/dist/generated/config-schema.d.ts +70 -6
- package/dist/generated/config-schema.d.ts.map +1 -1
- package/dist/generated/config-schema.json +73 -6
- package/dist/index.js +5006 -886
- package/dist/output/traces/{run-2026-03-17T13-58-29-402Z.ndjson → run-2026-03-18T19-02-50-465Z.ndjson} +84 -84
- package/dist/{traces/run-2026-03-17T13-59-10-403Z.ndjson → output/traces/run-2026-03-18T19-03-30-428Z.ndjson} +2037 -2037
- 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/runners/graceful-restart.d.ts +46 -0
- package/dist/runners/graceful-restart.d.ts.map +1 -0
- package/dist/runners/mcp-server-runner.d.ts +12 -0
- package/dist/runners/mcp-server-runner.d.ts.map +1 -1
- package/dist/runners/runner-factory.d.ts.map +1 -1
- package/dist/runners/runner-host.d.ts +12 -0
- package/dist/runners/runner-host.d.ts.map +1 -1
- package/dist/runners/runner.d.ts +12 -0
- package/dist/runners/runner.d.ts.map +1 -1
- package/dist/sdk/{a2a-frontend-IWOUJOIZ.mjs → a2a-frontend-4LP3MLTS.mjs} +47 -5
- package/dist/sdk/a2a-frontend-4LP3MLTS.mjs.map +1 -0
- package/dist/sdk/a2a-frontend-5J3UNFY4.mjs +1718 -0
- package/dist/sdk/a2a-frontend-5J3UNFY4.mjs.map +1 -0
- package/dist/sdk/{a2a-frontend-BDACLGMA.mjs → a2a-frontend-MU5EO2HZ.mjs} +35 -1
- package/dist/sdk/a2a-frontend-MU5EO2HZ.mjs.map +1 -0
- package/dist/sdk/{check-provider-registry-4YKTEDKF.mjs → check-provider-registry-MHXQGUNN.mjs} +7 -7
- package/dist/sdk/{check-provider-registry-4YFVBGYU.mjs → check-provider-registry-RRWCXSTG.mjs} +3 -3
- package/dist/sdk/{check-provider-registry-67ZLGDDQ.mjs → check-provider-registry-Y33CRFVD.mjs} +7 -7
- package/dist/sdk/{chunk-DGIH6EX3.mjs → chunk-4AXAVXG5.mjs} +151 -281
- package/dist/sdk/chunk-4AXAVXG5.mjs.map +1 -0
- package/dist/sdk/{chunk-VMVIM4JB.mjs → chunk-4I3TJ7UJ.mjs} +37 -7
- package/dist/sdk/chunk-4I3TJ7UJ.mjs.map +1 -0
- package/dist/sdk/{chunk-VXC2XNQJ.mjs → chunk-5J3DNRF7.mjs} +3 -3
- package/dist/sdk/{chunk-7YZSSO4X.mjs → chunk-6DPPP7LD.mjs} +10 -10
- package/dist/sdk/chunk-7ERVRLDV.mjs +296 -0
- package/dist/sdk/chunk-7ERVRLDV.mjs.map +1 -0
- package/dist/sdk/{chunk-4DVP6KVC.mjs → chunk-7Z2WHX2J.mjs} +71 -30
- package/dist/sdk/chunk-7Z2WHX2J.mjs.map +1 -0
- package/dist/sdk/chunk-ANUT54HW.mjs +1502 -0
- package/dist/sdk/chunk-ANUT54HW.mjs.map +1 -0
- package/dist/sdk/{chunk-J73GEFPT.mjs → chunk-DHETLQIX.mjs} +2 -2
- package/dist/sdk/{chunk-QGBASDYP.mjs → chunk-JCOSKBMP.mjs} +71 -30
- package/dist/sdk/chunk-JCOSKBMP.mjs.map +1 -0
- package/dist/sdk/chunk-MK7ONH47.mjs +739 -0
- package/dist/sdk/chunk-MK7ONH47.mjs.map +1 -0
- package/dist/sdk/chunk-QXT47ZHR.mjs +390 -0
- package/dist/sdk/chunk-QXT47ZHR.mjs.map +1 -0
- package/dist/sdk/chunk-V75NEIXL.mjs +296 -0
- package/dist/sdk/chunk-V75NEIXL.mjs.map +1 -0
- package/dist/sdk/chunk-ZOF5QT6U.mjs +5943 -0
- package/dist/sdk/chunk-ZOF5QT6U.mjs.map +1 -0
- package/dist/sdk/{config-TSA5FUOM.mjs → config-2STD74CJ.mjs} +2 -2
- package/dist/sdk/config-JE4HKTWW.mjs +16 -0
- package/dist/sdk/{failure-condition-evaluator-HTPB5FYW.mjs → failure-condition-evaluator-5DZYMCGW.mjs} +4 -4
- package/dist/sdk/failure-condition-evaluator-R6DCDJAV.mjs +18 -0
- package/dist/sdk/{github-frontend-3SDFCCKI.mjs → github-frontend-3PSCKPAJ.mjs} +4 -4
- package/dist/sdk/github-frontend-L3F5JXPJ.mjs +1394 -0
- package/dist/sdk/github-frontend-L3F5JXPJ.mjs.map +1 -0
- package/dist/sdk/{host-QE4L7UXE.mjs → host-54CHV2LW.mjs} +3 -3
- package/dist/sdk/{host-VBBSLUWG.mjs → host-WAU6CT42.mjs} +3 -3
- package/dist/sdk/{host-CVH2CSHM.mjs → host-X5ZZCEWN.mjs} +2 -2
- package/dist/sdk/{routing-YVMTKFDZ.mjs → routing-CVQT4KHX.mjs} +5 -5
- package/dist/sdk/routing-EBAE5SSO.mjs +26 -0
- package/dist/sdk/{schedule-tool-Z5VG67JK.mjs → schedule-tool-POY3CDZL.mjs} +7 -7
- package/dist/sdk/{schedule-tool-ADUXTCY7.mjs → schedule-tool-R2OAATUS.mjs} +7 -7
- package/dist/sdk/{schedule-tool-ZMX3Y7LF.mjs → schedule-tool-Z6QYL2B3.mjs} +3 -3
- package/dist/sdk/{schedule-tool-handler-N7UNABOA.mjs → schedule-tool-handler-J4NUETJ6.mjs} +3 -3
- package/dist/sdk/{schedule-tool-handler-PCERK6ZZ.mjs → schedule-tool-handler-JMAKHPI7.mjs} +7 -7
- package/dist/sdk/{schedule-tool-handler-QOJVFRB4.mjs → schedule-tool-handler-MWFUIQKR.mjs} +7 -7
- package/dist/sdk/sdk.d.mts +33 -0
- package/dist/sdk/sdk.d.ts +33 -0
- package/dist/sdk/sdk.js +2058 -342
- package/dist/sdk/sdk.js.map +1 -1
- package/dist/sdk/sdk.mjs +6 -6
- package/dist/sdk/task-evaluator-HLNXKKVV.mjs +1278 -0
- package/dist/sdk/task-evaluator-HLNXKKVV.mjs.map +1 -0
- package/dist/sdk/{trace-helpers-KXDOJWBL.mjs → trace-helpers-HL5FBX65.mjs} +3 -3
- package/dist/sdk/trace-helpers-WJXYVV4S.mjs +29 -0
- package/dist/sdk/trace-helpers-WJXYVV4S.mjs.map +1 -0
- package/dist/sdk/trace-reader-ZY77OFNM.mjs +266 -0
- package/dist/sdk/trace-reader-ZY77OFNM.mjs.map +1 -0
- package/dist/sdk/track-execution-MKIQXP2C.mjs +136 -0
- package/dist/sdk/track-execution-MKIQXP2C.mjs.map +1 -0
- package/dist/sdk/track-execution-YUXQ6WQH.mjs +136 -0
- package/dist/sdk/track-execution-YUXQ6WQH.mjs.map +1 -0
- package/dist/sdk/{workflow-check-provider-NTHC5ZBF.mjs → workflow-check-provider-SE5I7EMA.mjs} +7 -7
- package/dist/sdk/workflow-check-provider-SE5I7EMA.mjs.map +1 -0
- package/dist/sdk/{workflow-check-provider-SRIMWKLQ.mjs → workflow-check-provider-VKYGI5GK.mjs} +3 -3
- package/dist/sdk/workflow-check-provider-VKYGI5GK.mjs.map +1 -0
- package/dist/sdk/{workflow-check-provider-CJXW2Z4F.mjs → workflow-check-provider-YDGZRI3Z.mjs} +7 -7
- package/dist/sdk/workflow-check-provider-YDGZRI3Z.mjs.map +1 -0
- package/dist/slack/socket-runner.d.ts +12 -0
- package/dist/slack/socket-runner.d.ts.map +1 -1
- package/dist/teams/webhook-runner.d.ts +4 -0
- package/dist/teams/webhook-runner.d.ts.map +1 -1
- package/dist/telegram/polling-runner.d.ts +2 -0
- package/dist/telegram/polling-runner.d.ts.map +1 -1
- package/dist/traces/{run-2026-03-17T13-58-29-402Z.ndjson → run-2026-03-18T19-02-50-465Z.ndjson} +84 -84
- package/dist/{output/traces/run-2026-03-17T13-59-10-403Z.ndjson → traces/run-2026-03-18T19-03-30-428Z.ndjson} +2037 -2037
- package/dist/types/config.d.ts +33 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/whatsapp/webhook-runner.d.ts +4 -0
- package/dist/whatsapp/webhook-runner.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/sdk/a2a-frontend-BDACLGMA.mjs.map +0 -1
- package/dist/sdk/a2a-frontend-IWOUJOIZ.mjs.map +0 -1
- package/dist/sdk/chunk-4DVP6KVC.mjs.map +0 -1
- package/dist/sdk/chunk-DGIH6EX3.mjs.map +0 -1
- package/dist/sdk/chunk-QGBASDYP.mjs.map +0 -1
- package/dist/sdk/chunk-VMVIM4JB.mjs.map +0 -1
- /package/dist/sdk/{check-provider-registry-4YFVBGYU.mjs.map → check-provider-registry-MHXQGUNN.mjs.map} +0 -0
- /package/dist/sdk/{check-provider-registry-4YKTEDKF.mjs.map → check-provider-registry-RRWCXSTG.mjs.map} +0 -0
- /package/dist/sdk/{check-provider-registry-67ZLGDDQ.mjs.map → check-provider-registry-Y33CRFVD.mjs.map} +0 -0
- /package/dist/sdk/{chunk-VXC2XNQJ.mjs.map → chunk-5J3DNRF7.mjs.map} +0 -0
- /package/dist/sdk/{chunk-7YZSSO4X.mjs.map → chunk-6DPPP7LD.mjs.map} +0 -0
- /package/dist/sdk/{chunk-J73GEFPT.mjs.map → chunk-DHETLQIX.mjs.map} +0 -0
- /package/dist/sdk/{config-TSA5FUOM.mjs.map → config-2STD74CJ.mjs.map} +0 -0
- /package/dist/sdk/{failure-condition-evaluator-HTPB5FYW.mjs.map → config-JE4HKTWW.mjs.map} +0 -0
- /package/dist/sdk/{routing-YVMTKFDZ.mjs.map → failure-condition-evaluator-5DZYMCGW.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-ADUXTCY7.mjs.map → failure-condition-evaluator-R6DCDJAV.mjs.map} +0 -0
- /package/dist/sdk/{github-frontend-3SDFCCKI.mjs.map → github-frontend-3PSCKPAJ.mjs.map} +0 -0
- /package/dist/sdk/{host-CVH2CSHM.mjs.map → host-54CHV2LW.mjs.map} +0 -0
- /package/dist/sdk/{host-QE4L7UXE.mjs.map → host-WAU6CT42.mjs.map} +0 -0
- /package/dist/sdk/{host-VBBSLUWG.mjs.map → host-X5ZZCEWN.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-Z5VG67JK.mjs.map → routing-CVQT4KHX.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-ZMX3Y7LF.mjs.map → routing-EBAE5SSO.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-handler-N7UNABOA.mjs.map → schedule-tool-POY3CDZL.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-handler-PCERK6ZZ.mjs.map → schedule-tool-R2OAATUS.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-handler-QOJVFRB4.mjs.map → schedule-tool-Z6QYL2B3.mjs.map} +0 -0
- /package/dist/sdk/{trace-helpers-KXDOJWBL.mjs.map → schedule-tool-handler-J4NUETJ6.mjs.map} +0 -0
- /package/dist/sdk/{workflow-check-provider-CJXW2Z4F.mjs.map → schedule-tool-handler-JMAKHPI7.mjs.map} +0 -0
- /package/dist/sdk/{workflow-check-provider-NTHC5ZBF.mjs.map → schedule-tool-handler-MWFUIQKR.mjs.map} +0 -0
- /package/dist/sdk/{workflow-check-provider-SRIMWKLQ.mjs.map → trace-helpers-HL5FBX65.mjs.map} +0 -0
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getInstanceId,
|
|
3
|
+
init_instance_id,
|
|
4
|
+
require_package
|
|
5
|
+
} from "./chunk-QXT47ZHR.mjs";
|
|
6
|
+
import {
|
|
7
|
+
init_logger,
|
|
8
|
+
logger
|
|
9
|
+
} from "./chunk-FT3I25QV.mjs";
|
|
10
|
+
import {
|
|
11
|
+
init_lazy_otel,
|
|
12
|
+
trace
|
|
13
|
+
} from "./chunk-UCMJJ3IM.mjs";
|
|
14
|
+
import {
|
|
15
|
+
__esm
|
|
16
|
+
} from "./chunk-J7LXIPZS.mjs";
|
|
17
|
+
|
|
18
|
+
// src/agent-protocol/track-execution.ts
|
|
19
|
+
import crypto from "crypto";
|
|
20
|
+
import path from "path";
|
|
21
|
+
function getPackageVersion() {
|
|
22
|
+
try {
|
|
23
|
+
return require_package()?.version || "dev";
|
|
24
|
+
} catch {
|
|
25
|
+
return "dev";
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
async function trackExecution(opts, executor) {
|
|
29
|
+
const { taskStore, source, configPath, metadata, messageText } = opts;
|
|
30
|
+
const configName = configPath ? path.basename(configPath, path.extname(configPath)) : void 0;
|
|
31
|
+
const workflowId = configName && opts.workflowId ? `${configName}#${opts.workflowId}` : opts.workflowId;
|
|
32
|
+
const requestMessage = {
|
|
33
|
+
message_id: crypto.randomUUID(),
|
|
34
|
+
role: "user",
|
|
35
|
+
parts: [{ text: messageText }]
|
|
36
|
+
};
|
|
37
|
+
const traceFile = process.env.VISOR_FALLBACK_TRACE_FILE || void 0;
|
|
38
|
+
const task = taskStore.createTask({
|
|
39
|
+
contextId: crypto.randomUUID(),
|
|
40
|
+
requestMessage,
|
|
41
|
+
workflowId,
|
|
42
|
+
requestMetadata: {
|
|
43
|
+
source,
|
|
44
|
+
instance_id: getInstanceId(),
|
|
45
|
+
visor_version: process.env.VISOR_VERSION || getPackageVersion(),
|
|
46
|
+
...process.env.VISOR_COMMIT_SHORT ? { visor_commit: process.env.VISOR_COMMIT_SHORT } : {},
|
|
47
|
+
trace_id: trace.getActiveSpan()?.spanContext().traceId || void 0,
|
|
48
|
+
...traceFile ? { trace_file: traceFile } : {},
|
|
49
|
+
...metadata
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
const instanceId = getInstanceId();
|
|
53
|
+
taskStore.updateTaskState(task.id, "working");
|
|
54
|
+
taskStore.claimTask(task.id, instanceId);
|
|
55
|
+
logger.info(
|
|
56
|
+
`[TaskTracking] Task ${task.id} started (source=${source}, workflow=${workflowId || "-"}, instance=${instanceId})`
|
|
57
|
+
);
|
|
58
|
+
try {
|
|
59
|
+
const result = await executor();
|
|
60
|
+
let responseText = "Execution completed";
|
|
61
|
+
try {
|
|
62
|
+
const history = result?.reviewSummary?.history;
|
|
63
|
+
if (history) {
|
|
64
|
+
const entries = Object.values(history);
|
|
65
|
+
for (let i = entries.length - 1; i >= 0; i--) {
|
|
66
|
+
const outputs = entries[i];
|
|
67
|
+
if (!Array.isArray(outputs)) continue;
|
|
68
|
+
for (let j = outputs.length - 1; j >= 0; j--) {
|
|
69
|
+
const text = outputs[j]?.text;
|
|
70
|
+
if (typeof text === "string" && text.trim().length > 0) {
|
|
71
|
+
responseText = text.trim();
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (responseText !== "Execution completed") break;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
} catch {
|
|
79
|
+
}
|
|
80
|
+
const completedMsg = {
|
|
81
|
+
message_id: crypto.randomUUID(),
|
|
82
|
+
role: "agent",
|
|
83
|
+
parts: [{ text: responseText }]
|
|
84
|
+
};
|
|
85
|
+
try {
|
|
86
|
+
taskStore.updateTaskState(task.id, "completed", completedMsg);
|
|
87
|
+
logger.info(`[TaskTracking] Task ${task.id} completed`);
|
|
88
|
+
} catch (stateErr) {
|
|
89
|
+
logger.warn(
|
|
90
|
+
`[TaskTracking] Task ${task.id} completed but state transition failed: ${stateErr instanceof Error ? stateErr.message : stateErr}`
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
if (opts.autoEvaluate || process.env.VISOR_TASK_EVALUATE === "true") {
|
|
94
|
+
scheduleEvaluation(task.id, taskStore);
|
|
95
|
+
}
|
|
96
|
+
return { task, result };
|
|
97
|
+
} catch (err) {
|
|
98
|
+
const errorText = err instanceof Error ? err.message : String(err);
|
|
99
|
+
const failMessage = {
|
|
100
|
+
message_id: crypto.randomUUID(),
|
|
101
|
+
role: "agent",
|
|
102
|
+
parts: [{ text: errorText }]
|
|
103
|
+
};
|
|
104
|
+
try {
|
|
105
|
+
taskStore.updateTaskState(task.id, "failed", failMessage);
|
|
106
|
+
logger.info(`[TaskTracking] Task ${task.id} failed: ${errorText}`);
|
|
107
|
+
} catch {
|
|
108
|
+
}
|
|
109
|
+
throw err;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
function scheduleEvaluation(taskId, taskStore) {
|
|
113
|
+
setTimeout(async () => {
|
|
114
|
+
try {
|
|
115
|
+
const { evaluateAndStore } = await import("./task-evaluator-HLNXKKVV.mjs");
|
|
116
|
+
await evaluateAndStore(taskId, taskStore);
|
|
117
|
+
logger.info(`[TaskEvaluator] Auto-evaluation completed for task ${taskId}`);
|
|
118
|
+
} catch (err) {
|
|
119
|
+
logger.warn(
|
|
120
|
+
`[TaskEvaluator] Auto-evaluation failed for task ${taskId}: ${err instanceof Error ? err.message : err}`
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
}, 5e3);
|
|
124
|
+
}
|
|
125
|
+
var init_track_execution = __esm({
|
|
126
|
+
"src/agent-protocol/track-execution.ts"() {
|
|
127
|
+
init_logger();
|
|
128
|
+
init_lazy_otel();
|
|
129
|
+
init_instance_id();
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
init_track_execution();
|
|
133
|
+
export {
|
|
134
|
+
trackExecution
|
|
135
|
+
};
|
|
136
|
+
//# sourceMappingURL=track-execution-MKIQXP2C.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/agent-protocol/track-execution.ts"],"sourcesContent":["/**\n * Shared execution tracking helper.\n *\n * Wraps any engine execution call with task lifecycle management:\n * creates a task in 'submitted' state, transitions to 'working',\n * runs the executor, then sets terminal state (completed/failed).\n *\n * Used by CLI, Slack, TUI, and Scheduler frontends when task_tracking is enabled.\n */\n\nimport crypto from 'crypto';\nimport path from 'path';\nimport { logger } from '../logger';\nimport { trace } from '../telemetry/lazy-otel';\nimport { getInstanceId } from '../utils/instance-id';\nimport type { TaskStore } from './task-store';\nimport type { AgentMessage, AgentTask } from './types';\n\nfunction getPackageVersion(): string {\n try {\n return require('../../package.json')?.version || 'dev';\n } catch {\n return 'dev';\n }\n}\n\nexport type TaskSource =\n | 'cli'\n | 'slack'\n | 'telegram'\n | 'email'\n | 'whatsapp'\n | 'teams'\n | 'a2a'\n | 'mcp'\n | 'tui'\n | 'scheduler'\n | 'webhook';\n\nexport interface TrackExecutionOptions {\n taskStore: TaskStore;\n source: TaskSource;\n workflowId?: string;\n /** Config file path — used to prefix workflowId as \"config.yaml#workflow\" */\n configPath?: string;\n metadata?: Record<string, unknown>;\n /** Human-readable description of what's being executed */\n messageText: string;\n /** Run LLM evaluation after task completion (non-blocking). */\n autoEvaluate?: boolean;\n}\n\n/**\n * Wrap an engine execution call with task lifecycle tracking.\n *\n * Creates a task, transitions to 'working', runs the executor,\n * then sets terminal state. Returns both the task and the original result.\n * Re-throws any executor error after marking the task as failed.\n */\nexport async function trackExecution<T>(\n opts: TrackExecutionOptions,\n executor: () => Promise<T>\n): Promise<{ task: AgentTask; result: T }> {\n const { taskStore, source, configPath, metadata, messageText } = opts;\n const configName = configPath ? path.basename(configPath, path.extname(configPath)) : undefined;\n const workflowId =\n configName && opts.workflowId ? `${configName}#${opts.workflowId}` : opts.workflowId;\n\n const requestMessage: AgentMessage = {\n message_id: crypto.randomUUID(),\n role: 'user',\n parts: [{ text: messageText }],\n };\n\n // Capture trace file path if telemetry is writing to a file\n const traceFile = process.env.VISOR_FALLBACK_TRACE_FILE || undefined;\n\n const task = taskStore.createTask({\n contextId: crypto.randomUUID(),\n requestMessage,\n workflowId,\n requestMetadata: {\n source,\n instance_id: getInstanceId(),\n visor_version: process.env.VISOR_VERSION || getPackageVersion(),\n ...(process.env.VISOR_COMMIT_SHORT ? { visor_commit: process.env.VISOR_COMMIT_SHORT } : {}),\n trace_id: trace.getActiveSpan()?.spanContext().traceId || undefined,\n ...(traceFile ? { trace_file: traceFile } : {}),\n ...metadata,\n },\n });\n\n const instanceId = getInstanceId();\n taskStore.updateTaskState(task.id, 'working');\n taskStore.claimTask(task.id, instanceId);\n logger.info(\n `[TaskTracking] Task ${task.id} started (source=${source}, workflow=${workflowId || '-'}, instance=${instanceId})`\n );\n\n try {\n const result = await executor();\n\n // Extract AI response text from the result.\n // result.reviewSummary.history is keyed by checkId with arrays of outputs.\n // We want the LAST check's text output (the final AI response), not the\n // first (which is typically the intent router).\n let responseText = 'Execution completed';\n try {\n const history = (result as any)?.reviewSummary?.history as\n | Record<string, unknown[]>\n | undefined;\n if (history) {\n const entries = Object.values(history);\n // Iterate in reverse — last check output is the final response\n for (let i = entries.length - 1; i >= 0; i--) {\n const outputs = entries[i];\n if (!Array.isArray(outputs)) continue;\n // Within a check, look at the last output first too\n for (let j = outputs.length - 1; j >= 0; j--) {\n const text = (outputs[j] as any)?.text;\n if (typeof text === 'string' && text.trim().length > 0) {\n responseText = text.trim();\n break;\n }\n }\n if (responseText !== 'Execution completed') break;\n }\n }\n } catch {\n // ignore extraction errors\n }\n\n const completedMsg: AgentMessage = {\n message_id: crypto.randomUUID(),\n role: 'agent',\n parts: [{ text: responseText }],\n };\n try {\n taskStore.updateTaskState(task.id, 'completed', completedMsg);\n logger.info(`[TaskTracking] Task ${task.id} completed`);\n } catch (stateErr) {\n // Another process (e.g. stale sweep) may have already marked this task as failed.\n // Log a warning but do NOT re-throw — the execution itself succeeded.\n logger.warn(\n `[TaskTracking] Task ${task.id} completed but state transition failed: ${stateErr instanceof Error ? stateErr.message : stateErr}`\n );\n }\n\n // Fire-and-forget LLM evaluation (non-blocking)\n // Enabled via opts.autoEvaluate (from config.task_evaluate) or VISOR_TASK_EVALUATE env var\n if (opts.autoEvaluate || process.env.VISOR_TASK_EVALUATE === 'true') {\n scheduleEvaluation(task.id, taskStore);\n }\n\n return { task, result };\n } catch (err) {\n const errorText = err instanceof Error ? err.message : String(err);\n const failMessage: AgentMessage = {\n message_id: crypto.randomUUID(),\n role: 'agent',\n parts: [{ text: errorText }],\n };\n try {\n taskStore.updateTaskState(task.id, 'failed', failMessage);\n logger.info(`[TaskTracking] Task ${task.id} failed: ${errorText}`);\n } catch {\n // ignore double-failure\n }\n throw err; // re-throw to preserve original behavior\n }\n}\n\n// ---------------------------------------------------------------------------\n// Non-blocking auto-evaluation\n// ---------------------------------------------------------------------------\n\nfunction scheduleEvaluation(taskId: string, taskStore: TaskStore): void {\n // Delay slightly to let OTEL spans flush before we try to read the trace\n setTimeout(async () => {\n try {\n const { evaluateAndStore } = await import('./task-evaluator');\n await evaluateAndStore(taskId, taskStore as any);\n logger.info(`[TaskEvaluator] Auto-evaluation completed for task ${taskId}`);\n } catch (err) {\n logger.warn(\n `[TaskEvaluator] Auto-evaluation failed for task ${taskId}: ${err instanceof Error ? err.message : err}`\n );\n }\n }, 5000);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAUA,OAAO,YAAY;AACnB,OAAO,UAAU;AAOjB,SAAS,oBAA4B;AACnC,MAAI;AACF,WAAO,mBAA+B,WAAW;AAAA,EACnD,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAmCA,eAAsB,eACpB,MACA,UACyC;AACzC,QAAM,EAAE,WAAW,QAAQ,YAAY,UAAU,YAAY,IAAI;AACjE,QAAM,aAAa,aAAa,KAAK,SAAS,YAAY,KAAK,QAAQ,UAAU,CAAC,IAAI;AACtF,QAAM,aACJ,cAAc,KAAK,aAAa,GAAG,UAAU,IAAI,KAAK,UAAU,KAAK,KAAK;AAE5E,QAAM,iBAA+B;AAAA,IACnC,YAAY,OAAO,WAAW;AAAA,IAC9B,MAAM;AAAA,IACN,OAAO,CAAC,EAAE,MAAM,YAAY,CAAC;AAAA,EAC/B;AAGA,QAAM,YAAY,QAAQ,IAAI,6BAA6B;AAE3D,QAAM,OAAO,UAAU,WAAW;AAAA,IAChC,WAAW,OAAO,WAAW;AAAA,IAC7B;AAAA,IACA;AAAA,IACA,iBAAiB;AAAA,MACf;AAAA,MACA,aAAa,cAAc;AAAA,MAC3B,eAAe,QAAQ,IAAI,iBAAiB,kBAAkB;AAAA,MAC9D,GAAI,QAAQ,IAAI,qBAAqB,EAAE,cAAc,QAAQ,IAAI,mBAAmB,IAAI,CAAC;AAAA,MACzF,UAAU,MAAM,cAAc,GAAG,YAAY,EAAE,WAAW;AAAA,MAC1D,GAAI,YAAY,EAAE,YAAY,UAAU,IAAI,CAAC;AAAA,MAC7C,GAAG;AAAA,IACL;AAAA,EACF,CAAC;AAED,QAAM,aAAa,cAAc;AACjC,YAAU,gBAAgB,KAAK,IAAI,SAAS;AAC5C,YAAU,UAAU,KAAK,IAAI,UAAU;AACvC,SAAO;AAAA,IACL,uBAAuB,KAAK,EAAE,oBAAoB,MAAM,cAAc,cAAc,GAAG,cAAc,UAAU;AAAA,EACjH;AAEA,MAAI;AACF,UAAM,SAAS,MAAM,SAAS;AAM9B,QAAI,eAAe;AACnB,QAAI;AACF,YAAM,UAAW,QAAgB,eAAe;AAGhD,UAAI,SAAS;AACX,cAAM,UAAU,OAAO,OAAO,OAAO;AAErC,iBAAS,IAAI,QAAQ,SAAS,GAAG,KAAK,GAAG,KAAK;AAC5C,gBAAM,UAAU,QAAQ,CAAC;AACzB,cAAI,CAAC,MAAM,QAAQ,OAAO,EAAG;AAE7B,mBAAS,IAAI,QAAQ,SAAS,GAAG,KAAK,GAAG,KAAK;AAC5C,kBAAM,OAAQ,QAAQ,CAAC,GAAW;AAClC,gBAAI,OAAO,SAAS,YAAY,KAAK,KAAK,EAAE,SAAS,GAAG;AACtD,6BAAe,KAAK,KAAK;AACzB;AAAA,YACF;AAAA,UACF;AACA,cAAI,iBAAiB,sBAAuB;AAAA,QAC9C;AAAA,MACF;AAAA,IACF,QAAQ;AAAA,IAER;AAEA,UAAM,eAA6B;AAAA,MACjC,YAAY,OAAO,WAAW;AAAA,MAC9B,MAAM;AAAA,MACN,OAAO,CAAC,EAAE,MAAM,aAAa,CAAC;AAAA,IAChC;AACA,QAAI;AACF,gBAAU,gBAAgB,KAAK,IAAI,aAAa,YAAY;AAC5D,aAAO,KAAK,uBAAuB,KAAK,EAAE,YAAY;AAAA,IACxD,SAAS,UAAU;AAGjB,aAAO;AAAA,QACL,uBAAuB,KAAK,EAAE,2CAA2C,oBAAoB,QAAQ,SAAS,UAAU,QAAQ;AAAA,MAClI;AAAA,IACF;AAIA,QAAI,KAAK,gBAAgB,QAAQ,IAAI,wBAAwB,QAAQ;AACnE,yBAAmB,KAAK,IAAI,SAAS;AAAA,IACvC;AAEA,WAAO,EAAE,MAAM,OAAO;AAAA,EACxB,SAAS,KAAK;AACZ,UAAM,YAAY,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AACjE,UAAM,cAA4B;AAAA,MAChC,YAAY,OAAO,WAAW;AAAA,MAC9B,MAAM;AAAA,MACN,OAAO,CAAC,EAAE,MAAM,UAAU,CAAC;AAAA,IAC7B;AACA,QAAI;AACF,gBAAU,gBAAgB,KAAK,IAAI,UAAU,WAAW;AACxD,aAAO,KAAK,uBAAuB,KAAK,EAAE,YAAY,SAAS,EAAE;AAAA,IACnE,QAAQ;AAAA,IAER;AACA,UAAM;AAAA,EACR;AACF;AAMA,SAAS,mBAAmB,QAAgB,WAA4B;AAEtE,aAAW,YAAY;AACrB,QAAI;AACF,YAAM,EAAE,iBAAiB,IAAI,MAAM,OAAO,+BAAkB;AAC5D,YAAM,iBAAiB,QAAQ,SAAgB;AAC/C,aAAO,KAAK,sDAAsD,MAAM,EAAE;AAAA,IAC5E,SAAS,KAAK;AACZ,aAAO;AAAA,QACL,mDAAmD,MAAM,KAAK,eAAe,QAAQ,IAAI,UAAU,GAAG;AAAA,MACxG;AAAA,IACF;AAAA,EACF,GAAG,GAAI;AACT;AA7LA;AAAA;AAYA;AACA;AACA;AAAA;AAAA;","names":[]}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getInstanceId,
|
|
3
|
+
init_instance_id,
|
|
4
|
+
require_package
|
|
5
|
+
} from "./chunk-4AXAVXG5.mjs";
|
|
6
|
+
import {
|
|
7
|
+
init_logger,
|
|
8
|
+
logger
|
|
9
|
+
} from "./chunk-FT3I25QV.mjs";
|
|
10
|
+
import {
|
|
11
|
+
init_lazy_otel,
|
|
12
|
+
trace
|
|
13
|
+
} from "./chunk-UCMJJ3IM.mjs";
|
|
14
|
+
import {
|
|
15
|
+
__esm
|
|
16
|
+
} from "./chunk-J7LXIPZS.mjs";
|
|
17
|
+
|
|
18
|
+
// src/agent-protocol/track-execution.ts
|
|
19
|
+
import crypto from "crypto";
|
|
20
|
+
import path from "path";
|
|
21
|
+
function getPackageVersion() {
|
|
22
|
+
try {
|
|
23
|
+
return require_package()?.version || "dev";
|
|
24
|
+
} catch {
|
|
25
|
+
return "dev";
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
async function trackExecution(opts, executor) {
|
|
29
|
+
const { taskStore, source, configPath, metadata, messageText } = opts;
|
|
30
|
+
const configName = configPath ? path.basename(configPath, path.extname(configPath)) : void 0;
|
|
31
|
+
const workflowId = configName && opts.workflowId ? `${configName}#${opts.workflowId}` : opts.workflowId;
|
|
32
|
+
const requestMessage = {
|
|
33
|
+
message_id: crypto.randomUUID(),
|
|
34
|
+
role: "user",
|
|
35
|
+
parts: [{ text: messageText }]
|
|
36
|
+
};
|
|
37
|
+
const traceFile = process.env.VISOR_FALLBACK_TRACE_FILE || void 0;
|
|
38
|
+
const task = taskStore.createTask({
|
|
39
|
+
contextId: crypto.randomUUID(),
|
|
40
|
+
requestMessage,
|
|
41
|
+
workflowId,
|
|
42
|
+
requestMetadata: {
|
|
43
|
+
source,
|
|
44
|
+
instance_id: getInstanceId(),
|
|
45
|
+
visor_version: process.env.VISOR_VERSION || getPackageVersion(),
|
|
46
|
+
...process.env.VISOR_COMMIT_SHORT ? { visor_commit: process.env.VISOR_COMMIT_SHORT } : {},
|
|
47
|
+
trace_id: trace.getActiveSpan()?.spanContext().traceId || void 0,
|
|
48
|
+
...traceFile ? { trace_file: traceFile } : {},
|
|
49
|
+
...metadata
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
const instanceId = getInstanceId();
|
|
53
|
+
taskStore.updateTaskState(task.id, "working");
|
|
54
|
+
taskStore.claimTask(task.id, instanceId);
|
|
55
|
+
logger.info(
|
|
56
|
+
`[TaskTracking] Task ${task.id} started (source=${source}, workflow=${workflowId || "-"}, instance=${instanceId})`
|
|
57
|
+
);
|
|
58
|
+
try {
|
|
59
|
+
const result = await executor();
|
|
60
|
+
let responseText = "Execution completed";
|
|
61
|
+
try {
|
|
62
|
+
const history = result?.reviewSummary?.history;
|
|
63
|
+
if (history) {
|
|
64
|
+
const entries = Object.values(history);
|
|
65
|
+
for (let i = entries.length - 1; i >= 0; i--) {
|
|
66
|
+
const outputs = entries[i];
|
|
67
|
+
if (!Array.isArray(outputs)) continue;
|
|
68
|
+
for (let j = outputs.length - 1; j >= 0; j--) {
|
|
69
|
+
const text = outputs[j]?.text;
|
|
70
|
+
if (typeof text === "string" && text.trim().length > 0) {
|
|
71
|
+
responseText = text.trim();
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (responseText !== "Execution completed") break;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
} catch {
|
|
79
|
+
}
|
|
80
|
+
const completedMsg = {
|
|
81
|
+
message_id: crypto.randomUUID(),
|
|
82
|
+
role: "agent",
|
|
83
|
+
parts: [{ text: responseText }]
|
|
84
|
+
};
|
|
85
|
+
try {
|
|
86
|
+
taskStore.updateTaskState(task.id, "completed", completedMsg);
|
|
87
|
+
logger.info(`[TaskTracking] Task ${task.id} completed`);
|
|
88
|
+
} catch (stateErr) {
|
|
89
|
+
logger.warn(
|
|
90
|
+
`[TaskTracking] Task ${task.id} completed but state transition failed: ${stateErr instanceof Error ? stateErr.message : stateErr}`
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
if (opts.autoEvaluate || process.env.VISOR_TASK_EVALUATE === "true") {
|
|
94
|
+
scheduleEvaluation(task.id, taskStore);
|
|
95
|
+
}
|
|
96
|
+
return { task, result };
|
|
97
|
+
} catch (err) {
|
|
98
|
+
const errorText = err instanceof Error ? err.message : String(err);
|
|
99
|
+
const failMessage = {
|
|
100
|
+
message_id: crypto.randomUUID(),
|
|
101
|
+
role: "agent",
|
|
102
|
+
parts: [{ text: errorText }]
|
|
103
|
+
};
|
|
104
|
+
try {
|
|
105
|
+
taskStore.updateTaskState(task.id, "failed", failMessage);
|
|
106
|
+
logger.info(`[TaskTracking] Task ${task.id} failed: ${errorText}`);
|
|
107
|
+
} catch {
|
|
108
|
+
}
|
|
109
|
+
throw err;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
function scheduleEvaluation(taskId, taskStore) {
|
|
113
|
+
setTimeout(async () => {
|
|
114
|
+
try {
|
|
115
|
+
const { evaluateAndStore } = await import("./task-evaluator-HLNXKKVV.mjs");
|
|
116
|
+
await evaluateAndStore(taskId, taskStore);
|
|
117
|
+
logger.info(`[TaskEvaluator] Auto-evaluation completed for task ${taskId}`);
|
|
118
|
+
} catch (err) {
|
|
119
|
+
logger.warn(
|
|
120
|
+
`[TaskEvaluator] Auto-evaluation failed for task ${taskId}: ${err instanceof Error ? err.message : err}`
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
}, 5e3);
|
|
124
|
+
}
|
|
125
|
+
var init_track_execution = __esm({
|
|
126
|
+
"src/agent-protocol/track-execution.ts"() {
|
|
127
|
+
init_logger();
|
|
128
|
+
init_lazy_otel();
|
|
129
|
+
init_instance_id();
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
init_track_execution();
|
|
133
|
+
export {
|
|
134
|
+
trackExecution
|
|
135
|
+
};
|
|
136
|
+
//# sourceMappingURL=track-execution-YUXQ6WQH.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/agent-protocol/track-execution.ts"],"sourcesContent":["/**\n * Shared execution tracking helper.\n *\n * Wraps any engine execution call with task lifecycle management:\n * creates a task in 'submitted' state, transitions to 'working',\n * runs the executor, then sets terminal state (completed/failed).\n *\n * Used by CLI, Slack, TUI, and Scheduler frontends when task_tracking is enabled.\n */\n\nimport crypto from 'crypto';\nimport path from 'path';\nimport { logger } from '../logger';\nimport { trace } from '../telemetry/lazy-otel';\nimport { getInstanceId } from '../utils/instance-id';\nimport type { TaskStore } from './task-store';\nimport type { AgentMessage, AgentTask } from './types';\n\nfunction getPackageVersion(): string {\n try {\n return require('../../package.json')?.version || 'dev';\n } catch {\n return 'dev';\n }\n}\n\nexport type TaskSource =\n | 'cli'\n | 'slack'\n | 'telegram'\n | 'email'\n | 'whatsapp'\n | 'teams'\n | 'a2a'\n | 'mcp'\n | 'tui'\n | 'scheduler'\n | 'webhook';\n\nexport interface TrackExecutionOptions {\n taskStore: TaskStore;\n source: TaskSource;\n workflowId?: string;\n /** Config file path — used to prefix workflowId as \"config.yaml#workflow\" */\n configPath?: string;\n metadata?: Record<string, unknown>;\n /** Human-readable description of what's being executed */\n messageText: string;\n /** Run LLM evaluation after task completion (non-blocking). */\n autoEvaluate?: boolean;\n}\n\n/**\n * Wrap an engine execution call with task lifecycle tracking.\n *\n * Creates a task, transitions to 'working', runs the executor,\n * then sets terminal state. Returns both the task and the original result.\n * Re-throws any executor error after marking the task as failed.\n */\nexport async function trackExecution<T>(\n opts: TrackExecutionOptions,\n executor: () => Promise<T>\n): Promise<{ task: AgentTask; result: T }> {\n const { taskStore, source, configPath, metadata, messageText } = opts;\n const configName = configPath ? path.basename(configPath, path.extname(configPath)) : undefined;\n const workflowId =\n configName && opts.workflowId ? `${configName}#${opts.workflowId}` : opts.workflowId;\n\n const requestMessage: AgentMessage = {\n message_id: crypto.randomUUID(),\n role: 'user',\n parts: [{ text: messageText }],\n };\n\n // Capture trace file path if telemetry is writing to a file\n const traceFile = process.env.VISOR_FALLBACK_TRACE_FILE || undefined;\n\n const task = taskStore.createTask({\n contextId: crypto.randomUUID(),\n requestMessage,\n workflowId,\n requestMetadata: {\n source,\n instance_id: getInstanceId(),\n visor_version: process.env.VISOR_VERSION || getPackageVersion(),\n ...(process.env.VISOR_COMMIT_SHORT ? { visor_commit: process.env.VISOR_COMMIT_SHORT } : {}),\n trace_id: trace.getActiveSpan()?.spanContext().traceId || undefined,\n ...(traceFile ? { trace_file: traceFile } : {}),\n ...metadata,\n },\n });\n\n const instanceId = getInstanceId();\n taskStore.updateTaskState(task.id, 'working');\n taskStore.claimTask(task.id, instanceId);\n logger.info(\n `[TaskTracking] Task ${task.id} started (source=${source}, workflow=${workflowId || '-'}, instance=${instanceId})`\n );\n\n try {\n const result = await executor();\n\n // Extract AI response text from the result.\n // result.reviewSummary.history is keyed by checkId with arrays of outputs.\n // We want the LAST check's text output (the final AI response), not the\n // first (which is typically the intent router).\n let responseText = 'Execution completed';\n try {\n const history = (result as any)?.reviewSummary?.history as\n | Record<string, unknown[]>\n | undefined;\n if (history) {\n const entries = Object.values(history);\n // Iterate in reverse — last check output is the final response\n for (let i = entries.length - 1; i >= 0; i--) {\n const outputs = entries[i];\n if (!Array.isArray(outputs)) continue;\n // Within a check, look at the last output first too\n for (let j = outputs.length - 1; j >= 0; j--) {\n const text = (outputs[j] as any)?.text;\n if (typeof text === 'string' && text.trim().length > 0) {\n responseText = text.trim();\n break;\n }\n }\n if (responseText !== 'Execution completed') break;\n }\n }\n } catch {\n // ignore extraction errors\n }\n\n const completedMsg: AgentMessage = {\n message_id: crypto.randomUUID(),\n role: 'agent',\n parts: [{ text: responseText }],\n };\n try {\n taskStore.updateTaskState(task.id, 'completed', completedMsg);\n logger.info(`[TaskTracking] Task ${task.id} completed`);\n } catch (stateErr) {\n // Another process (e.g. stale sweep) may have already marked this task as failed.\n // Log a warning but do NOT re-throw — the execution itself succeeded.\n logger.warn(\n `[TaskTracking] Task ${task.id} completed but state transition failed: ${stateErr instanceof Error ? stateErr.message : stateErr}`\n );\n }\n\n // Fire-and-forget LLM evaluation (non-blocking)\n // Enabled via opts.autoEvaluate (from config.task_evaluate) or VISOR_TASK_EVALUATE env var\n if (opts.autoEvaluate || process.env.VISOR_TASK_EVALUATE === 'true') {\n scheduleEvaluation(task.id, taskStore);\n }\n\n return { task, result };\n } catch (err) {\n const errorText = err instanceof Error ? err.message : String(err);\n const failMessage: AgentMessage = {\n message_id: crypto.randomUUID(),\n role: 'agent',\n parts: [{ text: errorText }],\n };\n try {\n taskStore.updateTaskState(task.id, 'failed', failMessage);\n logger.info(`[TaskTracking] Task ${task.id} failed: ${errorText}`);\n } catch {\n // ignore double-failure\n }\n throw err; // re-throw to preserve original behavior\n }\n}\n\n// ---------------------------------------------------------------------------\n// Non-blocking auto-evaluation\n// ---------------------------------------------------------------------------\n\nfunction scheduleEvaluation(taskId: string, taskStore: TaskStore): void {\n // Delay slightly to let OTEL spans flush before we try to read the trace\n setTimeout(async () => {\n try {\n const { evaluateAndStore } = await import('./task-evaluator');\n await evaluateAndStore(taskId, taskStore as any);\n logger.info(`[TaskEvaluator] Auto-evaluation completed for task ${taskId}`);\n } catch (err) {\n logger.warn(\n `[TaskEvaluator] Auto-evaluation failed for task ${taskId}: ${err instanceof Error ? err.message : err}`\n );\n }\n }, 5000);\n}\n"],"mappings":"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","names":[]}
|
package/dist/sdk/{workflow-check-provider-NTHC5ZBF.mjs → workflow-check-provider-SE5I7EMA.mjs}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
WorkflowCheckProvider,
|
|
3
3
|
init_workflow_check_provider
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-JCOSKBMP.mjs";
|
|
5
5
|
import "./chunk-YSOIR46P.mjs";
|
|
6
6
|
import "./chunk-PDQTEBOJ.mjs";
|
|
7
7
|
import "./chunk-7XRSCOKE.mjs";
|
|
@@ -10,12 +10,12 @@ import "./chunk-B7BVQM5K.mjs";
|
|
|
10
10
|
import "./chunk-XXAEN5KU.mjs";
|
|
11
11
|
import "./chunk-RHKPFJLG.mjs";
|
|
12
12
|
import "./chunk-J27D43HS.mjs";
|
|
13
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-ZOF5QT6U.mjs";
|
|
14
14
|
import "./chunk-KWTCTEFT.mjs";
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-ANUT54HW.mjs";
|
|
16
|
+
import "./chunk-DHETLQIX.mjs";
|
|
17
|
+
import "./chunk-7ERVRLDV.mjs";
|
|
18
|
+
import "./chunk-QXT47ZHR.mjs";
|
|
19
19
|
import "./chunk-34QX63WK.mjs";
|
|
20
20
|
import "./chunk-PQWZ6NFL.mjs";
|
|
21
21
|
import "./chunk-25IC7KXZ.mjs";
|
|
@@ -28,4 +28,4 @@ init_workflow_check_provider();
|
|
|
28
28
|
export {
|
|
29
29
|
WorkflowCheckProvider
|
|
30
30
|
};
|
|
31
|
-
//# sourceMappingURL=workflow-check-provider-
|
|
31
|
+
//# sourceMappingURL=workflow-check-provider-SE5I7EMA.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/dist/sdk/{workflow-check-provider-SRIMWKLQ.mjs → workflow-check-provider-VKYGI5GK.mjs}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
WorkflowCheckProvider,
|
|
3
3
|
init_workflow_check_provider
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-6DPPP7LD.mjs";
|
|
5
5
|
import "./chunk-YSOIR46P.mjs";
|
|
6
6
|
import "./chunk-PDQTEBOJ.mjs";
|
|
7
7
|
import "./chunk-7XRSCOKE.mjs";
|
|
@@ -10,7 +10,7 @@ import "./chunk-B7BVQM5K.mjs";
|
|
|
10
10
|
import "./chunk-XXAEN5KU.mjs";
|
|
11
11
|
import "./chunk-RHKPFJLG.mjs";
|
|
12
12
|
import "./chunk-J27D43HS.mjs";
|
|
13
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-4I3TJ7UJ.mjs";
|
|
14
14
|
import "./chunk-KWTCTEFT.mjs";
|
|
15
15
|
import "./chunk-KBGQJKIZ.mjs";
|
|
16
16
|
import "./chunk-U6K5SK7X.mjs";
|
|
@@ -28,4 +28,4 @@ init_workflow_check_provider();
|
|
|
28
28
|
export {
|
|
29
29
|
WorkflowCheckProvider
|
|
30
30
|
};
|
|
31
|
-
//# sourceMappingURL=workflow-check-provider-
|
|
31
|
+
//# sourceMappingURL=workflow-check-provider-VKYGI5GK.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/dist/sdk/{workflow-check-provider-CJXW2Z4F.mjs → workflow-check-provider-YDGZRI3Z.mjs}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
WorkflowCheckProvider,
|
|
3
3
|
init_workflow_check_provider
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-7Z2WHX2J.mjs";
|
|
5
5
|
import "./chunk-YSOIR46P.mjs";
|
|
6
6
|
import "./chunk-PDQTEBOJ.mjs";
|
|
7
7
|
import "./chunk-7XRSCOKE.mjs";
|
|
@@ -10,12 +10,12 @@ import "./chunk-B7BVQM5K.mjs";
|
|
|
10
10
|
import "./chunk-XXAEN5KU.mjs";
|
|
11
11
|
import "./chunk-RHKPFJLG.mjs";
|
|
12
12
|
import "./chunk-J27D43HS.mjs";
|
|
13
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-ZOF5QT6U.mjs";
|
|
14
14
|
import "./chunk-KWTCTEFT.mjs";
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-5J3DNRF7.mjs";
|
|
16
|
+
import "./chunk-MK7ONH47.mjs";
|
|
17
|
+
import "./chunk-V75NEIXL.mjs";
|
|
18
|
+
import "./chunk-4AXAVXG5.mjs";
|
|
19
19
|
import "./chunk-34QX63WK.mjs";
|
|
20
20
|
import "./chunk-PQWZ6NFL.mjs";
|
|
21
21
|
import "./chunk-25IC7KXZ.mjs";
|
|
@@ -28,4 +28,4 @@ init_workflow_check_provider();
|
|
|
28
28
|
export {
|
|
29
29
|
WorkflowCheckProvider
|
|
30
30
|
};
|
|
31
|
-
//# sourceMappingURL=workflow-check-provider-
|
|
31
|
+
//# sourceMappingURL=workflow-check-provider-YDGZRI3Z.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -38,6 +38,7 @@ export declare class SlackSocketRunner implements Runner {
|
|
|
38
38
|
private heartbeatTimer?;
|
|
39
39
|
private lastPong;
|
|
40
40
|
private closing;
|
|
41
|
+
private draining;
|
|
41
42
|
private taskStore?;
|
|
42
43
|
private configPath?;
|
|
43
44
|
private staleTaskTimer?;
|
|
@@ -115,6 +116,17 @@ export declare class SlackSocketRunner implements Runner {
|
|
|
115
116
|
name: string;
|
|
116
117
|
description?: string;
|
|
117
118
|
}[]): unknown[];
|
|
119
|
+
/**
|
|
120
|
+
* Stop listening for new messages. Closes the WebSocket and stops the scheduler,
|
|
121
|
+
* but does NOT wait for in-flight work to complete. Frees the connection so
|
|
122
|
+
* a new process can connect to Slack immediately.
|
|
123
|
+
*/
|
|
124
|
+
stopListening(): Promise<void>;
|
|
125
|
+
/**
|
|
126
|
+
* Enter drain mode: stop accepting new messages, wait for active threads to complete.
|
|
127
|
+
* @param timeoutMs - Max wait time. 0 = unlimited (default).
|
|
128
|
+
*/
|
|
129
|
+
drain(timeoutMs?: number): Promise<void>;
|
|
118
130
|
/**
|
|
119
131
|
* Stop the socket runner and clean up resources
|
|
120
132
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-runner.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/slack/socket-runner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAmB,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAOhF,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAM3E,OAAO,EAAyB,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAEtF,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC5B,OAAO,CAAC,EAAE,UAAU,GAAG,KAAK,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;
|
|
1
|
+
{"version":3,"file":"socket-runner.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/slack/socket-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,7 @@ export declare class TeamsWebhookRunner implements Runner {
|
|
|
24
24
|
private host;
|
|
25
25
|
private taskStore?;
|
|
26
26
|
private configPath?;
|
|
27
|
+
private activeRequests;
|
|
27
28
|
constructor(engine: StateMachineExecutionEngine, cfg: VisorConfig, opts: TeamsWebhookConfig);
|
|
28
29
|
/** Get the TeamsClient instance (for shared access) */
|
|
29
30
|
getClient(): TeamsClient;
|
|
@@ -32,8 +33,11 @@ export declare class TeamsWebhookRunner implements Runner {
|
|
|
32
33
|
/** Hot-swap config for future requests */
|
|
33
34
|
updateConfig(cfg: VisorConfig): void;
|
|
34
35
|
start(): Promise<void>;
|
|
36
|
+
stopListening(): Promise<void>;
|
|
37
|
+
drain(timeoutMs?: number): Promise<void>;
|
|
35
38
|
stop(): Promise<void>;
|
|
36
39
|
private handleMessage;
|
|
40
|
+
private handleMessageInner;
|
|
37
41
|
/** Ensure teams frontend is in the config for this run */
|
|
38
42
|
private prepareConfigForRun;
|
|
39
43
|
/** Deduplication: track processed activities by ID */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook-runner.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/teams/webhook-runner.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAIvC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,qBAAa,kBAAmB,YAAW,MAAM;IAC/C,QAAQ,CAAC,IAAI,WAAW;IACxB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,mBAAmB,CAAkC;IAC7D,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,SAAS,CAAC,CAAmD;IACrE,OAAO,CAAC,UAAU,CAAC,CAAS;
|
|
1
|
+
{"version":3,"file":"webhook-runner.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/teams/webhook-runner.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAIvC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,qBAAa,kBAAmB,YAAW,MAAM;IAC/C,QAAQ,CAAC,IAAI,WAAW;IACxB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,mBAAmB,CAAkC;IAC7D,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,SAAS,CAAC,CAAmD;IACrE,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAK;gBAEf,MAAM,EAAE,2BAA2B,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB;IAmB3F,uDAAuD;IACvD,SAAS,IAAI,WAAW;IAIxB,mDAAmD;IACnD,YAAY,CAAC,KAAK,EAAE,OAAO,8BAA8B,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAKhG,0CAA0C;IAC1C,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAI9B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkEtB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAY9B,KAAK,CAAC,SAAS,SAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBnC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAWb,aAAa;YASb,kBAAkB;IA4GhC,0DAA0D;IAC1D,OAAO,CAAC,mBAAmB;IAc3B,sDAAsD;IACtD,OAAO,CAAC,WAAW;CAWpB"}
|
|
@@ -30,6 +30,8 @@ export declare class TelegramPollingRunner implements Runner {
|
|
|
30
30
|
/** Hot-swap config for future requests */
|
|
31
31
|
updateConfig(cfg: VisorConfig): void;
|
|
32
32
|
start(): Promise<void>;
|
|
33
|
+
stopListening(): Promise<void>;
|
|
34
|
+
drain(timeoutMs?: number): Promise<void>;
|
|
33
35
|
stop(): Promise<void>;
|
|
34
36
|
private handleMessage;
|
|
35
37
|
/** Ensure telegram frontend is in the config for this run */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"polling-runner.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/telegram/polling-runner.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAM1C,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACpC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,qBAAa,qBAAsB,YAAW,MAAM;IAClD,QAAQ,CAAC,IAAI,cAAc;IAC3B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,YAAY,CAAC,CAAe;IACpC,OAAO,CAAC,gBAAgB,CAAkC;IAC1D,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,SAAS,CAAC,CAAmD;IACrE,OAAO,CAAC,UAAU,CAAC,CAAS;gBAEhB,MAAM,EAAE,2BAA2B,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,qBAAqB;IAY9F,0DAA0D;IAC1D,SAAS,IAAI,cAAc;IAI3B,mDAAmD;IACnD,YAAY,CAAC,KAAK,EAAE,OAAO,8BAA8B,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAKhG,0CAA0C;IAC1C,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAI9B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA6DtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAOb,aAAa;IA0H3B,6DAA6D;IAC7D,OAAO,CAAC,mBAAmB;IAc3B,mEAAmE;IACnE,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,WAAW;CAGpB"}
|
|
1
|
+
{"version":3,"file":"polling-runner.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/telegram/polling-runner.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAM1C,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACpC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,qBAAa,qBAAsB,YAAW,MAAM;IAClD,QAAQ,CAAC,IAAI,cAAc;IAC3B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,YAAY,CAAC,CAAe;IACpC,OAAO,CAAC,gBAAgB,CAAkC;IAC1D,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,SAAS,CAAC,CAAmD;IACrE,OAAO,CAAC,UAAU,CAAC,CAAS;gBAEhB,MAAM,EAAE,2BAA2B,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,qBAAqB;IAY9F,0DAA0D;IAC1D,SAAS,IAAI,cAAc;IAI3B,mDAAmD;IACnD,YAAY,CAAC,KAAK,EAAE,OAAO,8BAA8B,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAKhG,0CAA0C;IAC1C,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAI9B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA6DtB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B,KAAK,CAAC,SAAS,SAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAenC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAOb,aAAa;IA0H3B,6DAA6D;IAC7D,OAAO,CAAC,mBAAmB;IAc3B,mEAAmE;IACnE,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,WAAW;CAGpB"}
|