@probelabs/visor 0.1.182-ee → 0.1.183-ee
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/defaults/assistant.yaml +2 -1
- package/defaults/code-talk.yaml +6 -0
- package/defaults/skills/task-progress.yaml +39 -0
- package/dist/agent-protocol/task-evaluator.d.ts +2 -1
- package/dist/agent-protocol/task-evaluator.d.ts.map +1 -1
- package/dist/agent-protocol/task-progress-tool.d.ts +29 -0
- package/dist/agent-protocol/task-progress-tool.d.ts.map +1 -0
- package/dist/agent-protocol/task-store.d.ts +8 -0
- 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/trace-serializer.d.ts +5 -2
- package/dist/agent-protocol/trace-serializer.d.ts.map +1 -1
- package/dist/agent-protocol/track-execution.d.ts +1 -1
- package/dist/agent-protocol/track-execution.d.ts.map +1 -1
- package/dist/ai-review-service.d.ts.map +1 -1
- package/dist/cli-main.d.ts.map +1 -1
- package/dist/debug-visualizer/trace-reader.d.ts.map +1 -1
- package/dist/defaults/assistant.yaml +2 -1
- package/dist/defaults/code-talk.yaml +6 -0
- package/dist/defaults/skills/task-progress.yaml +39 -0
- package/dist/docs/telemetry-live-spans-plan.md +510 -0
- package/dist/generated/config-schema.json +43 -6
- package/dist/index.js +3545 -701
- package/dist/providers/ai-check-provider.d.ts.map +1 -1
- package/dist/providers/git-checkout-provider.d.ts.map +1 -1
- package/dist/providers/mcp-custom-sse-server.d.ts.map +1 -1
- package/dist/reviewer.d.ts +2 -0
- package/dist/reviewer.d.ts.map +1 -1
- package/dist/runners/process-cli-handler.d.ts +2 -0
- package/dist/runners/process-cli-handler.d.ts.map +1 -0
- package/dist/runners/process-discovery.d.ts +29 -0
- package/dist/runners/process-discovery.d.ts.map +1 -0
- package/dist/sandbox/check-runner.d.ts.map +1 -1
- package/dist/sandbox/sandbox-telemetry.d.ts +7 -0
- package/dist/sandbox/sandbox-telemetry.d.ts.map +1 -1
- package/dist/sandbox/trace-ingester.d.ts +28 -15
- package/dist/sandbox/trace-ingester.d.ts.map +1 -1
- package/dist/scheduler/schedule-tool.d.ts +5 -0
- package/dist/scheduler/schedule-tool.d.ts.map +1 -1
- package/dist/sdk/{a2a-frontend-MU5EO2HZ.mjs → a2a-frontend-5YDHFQXD.mjs} +47 -8
- package/dist/sdk/{a2a-frontend-MU5EO2HZ.mjs.map → a2a-frontend-5YDHFQXD.mjs.map} +1 -1
- package/dist/sdk/{a2a-frontend-4LP3MLTS.mjs → a2a-frontend-6LWBIPMS.mjs} +19 -3
- package/dist/sdk/a2a-frontend-6LWBIPMS.mjs.map +1 -0
- package/dist/sdk/check-provider-registry-WSEVHJEV.mjs +31 -0
- package/dist/sdk/{check-provider-registry-I4BCWKRU.mjs → check-provider-registry-YRADEEQY.mjs} +6 -6
- package/dist/sdk/chunk-4BN2XI4X.mjs +459 -0
- package/dist/sdk/chunk-4BN2XI4X.mjs.map +1 -0
- package/dist/sdk/chunk-54KOAC4W.mjs +665 -0
- package/dist/sdk/chunk-54KOAC4W.mjs.map +1 -0
- package/dist/sdk/chunk-6C3R6E42.mjs +1700 -0
- package/dist/sdk/chunk-6C3R6E42.mjs.map +1 -0
- package/dist/sdk/{chunk-4I3TJ7UJ.mjs → chunk-7W5QCO4Y.mjs} +47 -10
- package/dist/sdk/chunk-7W5QCO4Y.mjs.map +1 -0
- package/dist/sdk/chunk-B2OUZAWY.mjs +237 -0
- package/dist/sdk/chunk-B2OUZAWY.mjs.map +1 -0
- package/dist/sdk/chunk-FWWLD555.mjs +244 -0
- package/dist/sdk/chunk-FWWLD555.mjs.map +1 -0
- package/dist/sdk/{chunk-QXT47ZHR.mjs → chunk-G7GSN3SK.mjs} +2 -2
- package/dist/sdk/{chunk-QXT47ZHR.mjs.map → chunk-G7GSN3SK.mjs.map} +1 -1
- package/dist/sdk/{chunk-DHETLQIX.mjs → chunk-GA2TYKSR.mjs} +5 -5
- package/dist/sdk/{chunk-6DPPP7LD.mjs → chunk-IDL3AA3G.mjs} +203 -42
- package/dist/sdk/chunk-IDL3AA3G.mjs.map +1 -0
- package/dist/sdk/chunk-MEB2TTIE.mjs +157 -0
- package/dist/sdk/chunk-MEB2TTIE.mjs.map +1 -0
- package/dist/sdk/{chunk-3JFK6KCD.mjs → chunk-MFXPJUUE.mjs} +150 -280
- package/dist/sdk/chunk-MFXPJUUE.mjs.map +1 -0
- package/dist/sdk/{chunk-KBGQJKIZ.mjs → chunk-NPSLGKXB.mjs} +3 -3
- package/dist/sdk/chunk-P2K4VOMU.mjs +825 -0
- package/dist/sdk/chunk-P2K4VOMU.mjs.map +1 -0
- package/dist/sdk/chunk-RI4ONH5X.mjs +482 -0
- package/dist/sdk/chunk-RI4ONH5X.mjs.map +1 -0
- package/dist/sdk/chunk-S5FSRHMY.mjs +139 -0
- package/dist/sdk/chunk-S5FSRHMY.mjs.map +1 -0
- package/dist/sdk/{chunk-7ERVRLDV.mjs → chunk-TFUQ2D5L.mjs} +13 -2
- package/dist/sdk/chunk-TFUQ2D5L.mjs.map +1 -0
- package/dist/sdk/{chunk-TQQNSHQV.mjs → chunk-UXB4XWEE.mjs} +1044 -179
- package/dist/sdk/chunk-UXB4XWEE.mjs.map +1 -0
- package/dist/sdk/{chunk-U6K5SK7X.mjs → chunk-V45TITKX.mjs} +2 -2
- package/dist/sdk/{chunk-ANUT54HW.mjs → chunk-WKLJ57WF.mjs} +6 -6
- package/dist/sdk/chunk-XOAEKFKB.mjs +1150 -0
- package/dist/sdk/chunk-XOAEKFKB.mjs.map +1 -0
- package/dist/sdk/chunk-ZPYODGYA.mjs +251 -0
- package/dist/sdk/chunk-ZPYODGYA.mjs.map +1 -0
- package/dist/sdk/command-executor-YNJOS77A.mjs +14 -0
- package/dist/sdk/{config-2STD74CJ.mjs → config-PCP6O6Y6.mjs} +4 -4
- package/dist/sdk/{failure-condition-evaluator-FFWJRAEQ.mjs → failure-condition-evaluator-H3PBFBYT.mjs} +4 -4
- package/dist/sdk/failure-condition-evaluator-IRFKTYZD.mjs +18 -0
- package/dist/sdk/github-auth-BJQBLK2V.mjs +196 -0
- package/dist/sdk/github-auth-BJQBLK2V.mjs.map +1 -0
- package/dist/sdk/{github-frontend-L3F5JXPJ.mjs → github-frontend-DECYOBRN.mjs} +8 -8
- package/dist/sdk/{github-frontend-KGV2R5Z6.mjs → github-frontend-TZRBOQCN.mjs} +4 -4
- package/dist/sdk/{host-QBJ7TOWG.mjs → host-CFM2ASDI.mjs} +4 -4
- package/dist/sdk/{host-X5ZZCEWN.mjs → host-T4LNVU2H.mjs} +3 -3
- package/dist/sdk/{knex-store-QCEW4I4R.mjs → knex-store-OEWSZEBY.mjs} +3 -3
- package/dist/sdk/lazy-otel-5RDTVS5L.mjs +24 -0
- package/dist/sdk/liquid-extensions-E3AKRX7P.mjs +25 -0
- package/dist/sdk/{loader-ZNKKJEZ3.mjs → loader-WRGI244P.mjs} +5 -5
- package/dist/sdk/memory-store-OHUIXCWJ.mjs +12 -0
- package/dist/sdk/metrics-MYUPQBBV.mjs +41 -0
- package/dist/sdk/{opa-policy-engine-QCSSIMUF.mjs → opa-policy-engine-IVMCGVNA.mjs} +3 -3
- package/dist/sdk/prompt-state-LN57DQF3.mjs +16 -0
- package/dist/sdk/renderer-schema-BT2IXMLW.mjs +51 -0
- package/dist/sdk/renderer-schema-BT2IXMLW.mjs.map +1 -0
- package/dist/sdk/routing-H2PQ57OA.mjs +26 -0
- package/dist/sdk/{routing-CVQT4KHX.mjs → routing-JMZ7HDCC.mjs} +5 -5
- package/dist/sdk/schedule-tool-2DPNSU63.mjs +37 -0
- package/dist/sdk/{schedule-tool-AECLFHSY.mjs → schedule-tool-4M45RK3E.mjs} +6 -6
- package/dist/sdk/{schedule-tool-handler-6QLZRTQA.mjs → schedule-tool-handler-KLHE2SOW.mjs} +6 -6
- package/dist/sdk/schedule-tool-handler-KLHE2SOW.mjs.map +1 -0
- package/dist/sdk/{schedule-tool-handler-J4NUETJ6.mjs → schedule-tool-handler-NBEO46RV.mjs} +16 -16
- package/dist/sdk/schedule-tool-handler-NBEO46RV.mjs.map +1 -0
- package/dist/sdk/sdk.d.mts +2 -0
- package/dist/sdk/sdk.d.ts +2 -0
- package/dist/sdk/sdk.js +3125 -666
- package/dist/sdk/sdk.js.map +1 -1
- package/dist/sdk/sdk.mjs +15 -15
- package/dist/sdk/slack-frontend-DF5VL4OF.mjs +929 -0
- package/dist/sdk/slack-frontend-DF5VL4OF.mjs.map +1 -0
- package/dist/sdk/{task-evaluator-HLNXKKVV.mjs → task-evaluator-GQYDOSGT.mjs} +138 -24
- package/dist/sdk/task-evaluator-GQYDOSGT.mjs.map +1 -0
- package/dist/sdk/task-evaluator-OVMG7S56.mjs +263 -0
- package/dist/sdk/task-evaluator-OVMG7S56.mjs.map +1 -0
- package/dist/sdk/{trace-helpers-WJXYVV4S.mjs → trace-helpers-26ZCAE2V.mjs} +7 -5
- package/dist/sdk/trace-helpers-26ZCAE2V.mjs.map +1 -0
- package/dist/sdk/{trace-helpers-3FFAI7X3.mjs → trace-helpers-XV5GAX5L.mjs} +3 -3
- package/dist/sdk/trace-helpers-XV5GAX5L.mjs.map +1 -0
- package/dist/sdk/{trace-reader-ZY77OFNM.mjs → trace-reader-OVE4DL2D.mjs} +6 -2
- package/dist/sdk/trace-reader-OVE4DL2D.mjs.map +1 -0
- package/dist/sdk/trace-serializer-KKBJHM7J.mjs +24 -0
- package/dist/sdk/trace-serializer-KKBJHM7J.mjs.map +1 -0
- package/dist/sdk/{track-execution-AMQQNXKE.mjs → track-execution-3EC24C2X.mjs} +68 -7
- package/dist/sdk/track-execution-3EC24C2X.mjs.map +1 -0
- package/dist/sdk/{track-execution-MKIQXP2C.mjs → track-execution-66RLL6QT.mjs} +10 -3
- package/dist/sdk/track-execution-66RLL6QT.mjs.map +1 -0
- package/dist/sdk/utcp-check-provider-WI3QZ3W6.mjs +16 -0
- package/dist/sdk/utcp-check-provider-WI3QZ3W6.mjs.map +1 -0
- package/dist/sdk/workflow-check-provider-X2UREEH7.mjs +31 -0
- package/dist/sdk/workflow-check-provider-X2UREEH7.mjs.map +1 -0
- package/dist/sdk/{workflow-check-provider-EXMC6JIS.mjs → workflow-check-provider-YXALZNAQ.mjs} +6 -6
- package/dist/sdk/workflow-check-provider-YXALZNAQ.mjs.map +1 -0
- package/dist/sdk/workflow-registry-YCZ3FCJC.mjs +12 -0
- package/dist/sdk/workflow-registry-YCZ3FCJC.mjs.map +1 -0
- package/dist/slack/socket-runner.d.ts.map +1 -1
- package/dist/state-machine/dispatch/sandbox-routing.d.ts.map +1 -1
- package/dist/state-machine/states/level-dispatch.d.ts.map +1 -1
- package/dist/telemetry/fallback-ndjson.d.ts +21 -0
- package/dist/telemetry/fallback-ndjson.d.ts.map +1 -1
- package/dist/telemetry/lazy-otel.d.ts +2 -0
- package/dist/telemetry/lazy-otel.d.ts.map +1 -1
- package/dist/telemetry/opentelemetry.d.ts +5 -0
- package/dist/telemetry/opentelemetry.d.ts.map +1 -1
- package/dist/telemetry/trace-helpers.d.ts +10 -0
- package/dist/telemetry/trace-helpers.d.ts.map +1 -1
- package/dist/test-runner/conversation-sugar.d.ts +7 -0
- package/dist/test-runner/conversation-sugar.d.ts.map +1 -1
- package/dist/test-runner/core/flow-stage.d.ts.map +1 -1
- package/dist/test-runner/index.d.ts.map +1 -1
- package/dist/test-runner/validator.d.ts.map +1 -1
- package/dist/types/git-checkout.d.ts +2 -0
- package/dist/types/git-checkout.d.ts.map +1 -1
- package/dist/utils/script-tool-environment.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/sdk/a2a-frontend-4LP3MLTS.mjs.map +0 -1
- package/dist/sdk/check-provider-registry-RRWCXSTG.mjs +0 -31
- package/dist/sdk/chunk-3JFK6KCD.mjs.map +0 -1
- package/dist/sdk/chunk-4I3TJ7UJ.mjs.map +0 -1
- package/dist/sdk/chunk-6DPPP7LD.mjs.map +0 -1
- package/dist/sdk/chunk-6VVXKXTI.mjs +0 -164
- package/dist/sdk/chunk-6VVXKXTI.mjs.map +0 -1
- package/dist/sdk/chunk-7ERVRLDV.mjs.map +0 -1
- package/dist/sdk/chunk-TQQNSHQV.mjs.map +0 -1
- package/dist/sdk/failure-condition-evaluator-5DZYMCGW.mjs +0 -18
- package/dist/sdk/routing-XALEDC2G.mjs +0 -26
- package/dist/sdk/schedule-tool-Z6QYL2B3.mjs +0 -37
- package/dist/sdk/task-evaluator-HLNXKKVV.mjs.map +0 -1
- package/dist/sdk/trace-reader-ZY77OFNM.mjs.map +0 -1
- package/dist/sdk/track-execution-AMQQNXKE.mjs.map +0 -1
- package/dist/sdk/track-execution-MKIQXP2C.mjs.map +0 -1
- package/dist/sdk/workflow-check-provider-VKYGI5GK.mjs +0 -31
- /package/dist/sdk/{check-provider-registry-I4BCWKRU.mjs.map → check-provider-registry-WSEVHJEV.mjs.map} +0 -0
- /package/dist/sdk/{check-provider-registry-RRWCXSTG.mjs.map → check-provider-registry-YRADEEQY.mjs.map} +0 -0
- /package/dist/sdk/{chunk-DHETLQIX.mjs.map → chunk-GA2TYKSR.mjs.map} +0 -0
- /package/dist/sdk/{chunk-ANUT54HW.mjs.map → chunk-NPSLGKXB.mjs.map} +0 -0
- /package/dist/sdk/{chunk-U6K5SK7X.mjs.map → chunk-V45TITKX.mjs.map} +0 -0
- /package/dist/sdk/{chunk-KBGQJKIZ.mjs.map → chunk-WKLJ57WF.mjs.map} +0 -0
- /package/dist/sdk/{config-2STD74CJ.mjs.map → command-executor-YNJOS77A.mjs.map} +0 -0
- /package/dist/sdk/{failure-condition-evaluator-5DZYMCGW.mjs.map → config-PCP6O6Y6.mjs.map} +0 -0
- /package/dist/sdk/{failure-condition-evaluator-FFWJRAEQ.mjs.map → failure-condition-evaluator-H3PBFBYT.mjs.map} +0 -0
- /package/dist/sdk/{routing-CVQT4KHX.mjs.map → failure-condition-evaluator-IRFKTYZD.mjs.map} +0 -0
- /package/dist/sdk/{github-frontend-KGV2R5Z6.mjs.map → github-frontend-DECYOBRN.mjs.map} +0 -0
- /package/dist/sdk/{github-frontend-L3F5JXPJ.mjs.map → github-frontend-TZRBOQCN.mjs.map} +0 -0
- /package/dist/sdk/{host-QBJ7TOWG.mjs.map → host-CFM2ASDI.mjs.map} +0 -0
- /package/dist/sdk/{host-X5ZZCEWN.mjs.map → host-T4LNVU2H.mjs.map} +0 -0
- /package/dist/sdk/{knex-store-QCEW4I4R.mjs.map → knex-store-OEWSZEBY.mjs.map} +0 -0
- /package/dist/sdk/{routing-XALEDC2G.mjs.map → lazy-otel-5RDTVS5L.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-AECLFHSY.mjs.map → liquid-extensions-E3AKRX7P.mjs.map} +0 -0
- /package/dist/sdk/{loader-ZNKKJEZ3.mjs.map → loader-WRGI244P.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-Z6QYL2B3.mjs.map → memory-store-OHUIXCWJ.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-handler-6QLZRTQA.mjs.map → metrics-MYUPQBBV.mjs.map} +0 -0
- /package/dist/sdk/{opa-policy-engine-QCSSIMUF.mjs.map → opa-policy-engine-IVMCGVNA.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-handler-J4NUETJ6.mjs.map → prompt-state-LN57DQF3.mjs.map} +0 -0
- /package/dist/sdk/{trace-helpers-3FFAI7X3.mjs.map → routing-H2PQ57OA.mjs.map} +0 -0
- /package/dist/sdk/{trace-helpers-WJXYVV4S.mjs.map → routing-JMZ7HDCC.mjs.map} +0 -0
- /package/dist/sdk/{workflow-check-provider-EXMC6JIS.mjs.map → schedule-tool-2DPNSU63.mjs.map} +0 -0
- /package/dist/sdk/{workflow-check-provider-VKYGI5GK.mjs.map → schedule-tool-4M45RK3E.mjs.map} +0 -0
|
@@ -2,6 +2,7 @@ import {
|
|
|
2
2
|
__getOrCreateNdjsonPath,
|
|
3
3
|
_appendRunMarker,
|
|
4
4
|
addEvent,
|
|
5
|
+
emitImmediateSpan,
|
|
5
6
|
getTracer,
|
|
6
7
|
getVisorRunAttributes,
|
|
7
8
|
init_trace_helpers,
|
|
@@ -9,16 +10,17 @@ import {
|
|
|
9
10
|
setSpanError,
|
|
10
11
|
withActiveSpan,
|
|
11
12
|
withVisorRun
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
13
|
+
} from "./chunk-XOAEKFKB.mjs";
|
|
14
|
+
import "./chunk-G7GSN3SK.mjs";
|
|
15
|
+
import "./chunk-FWWLD555.mjs";
|
|
16
|
+
import "./chunk-B2OUZAWY.mjs";
|
|
16
17
|
import "./chunk-J7LXIPZS.mjs";
|
|
17
18
|
init_trace_helpers();
|
|
18
19
|
export {
|
|
19
20
|
__getOrCreateNdjsonPath,
|
|
20
21
|
_appendRunMarker,
|
|
21
22
|
addEvent,
|
|
23
|
+
emitImmediateSpan,
|
|
22
24
|
getTracer,
|
|
23
25
|
getVisorRunAttributes,
|
|
24
26
|
setSpanAttributes,
|
|
@@ -26,4 +28,4 @@ export {
|
|
|
26
28
|
withActiveSpan,
|
|
27
29
|
withVisorRun
|
|
28
30
|
};
|
|
29
|
-
//# sourceMappingURL=trace-helpers-
|
|
31
|
+
//# sourceMappingURL=trace-helpers-26ZCAE2V.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -9,8 +9,8 @@ import {
|
|
|
9
9
|
setSpanError,
|
|
10
10
|
withActiveSpan,
|
|
11
11
|
withVisorRun
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-TFUQ2D5L.mjs";
|
|
13
|
+
import "./chunk-MFXPJUUE.mjs";
|
|
14
14
|
import "./chunk-34QX63WK.mjs";
|
|
15
15
|
import "./chunk-UCMJJ3IM.mjs";
|
|
16
16
|
import "./chunk-J7LXIPZS.mjs";
|
|
@@ -26,4 +26,4 @@ export {
|
|
|
26
26
|
withActiveSpan,
|
|
27
27
|
withVisorRun
|
|
28
28
|
};
|
|
29
|
-
//# sourceMappingURL=trace-helpers-
|
|
29
|
+
//# sourceMappingURL=trace-helpers-XV5GAX5L.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -91,6 +91,7 @@ function buildExecutionTree(spans) {
|
|
|
91
91
|
nodeMap.set(span.spanId, node);
|
|
92
92
|
}
|
|
93
93
|
let rootNode;
|
|
94
|
+
const orphans = [];
|
|
94
95
|
for (const span of spans) {
|
|
95
96
|
const node = nodeMap.get(span.spanId);
|
|
96
97
|
if (!span.parentSpanId) {
|
|
@@ -100,7 +101,7 @@ function buildExecutionTree(spans) {
|
|
|
100
101
|
if (parent) {
|
|
101
102
|
parent.children.push(node);
|
|
102
103
|
} else {
|
|
103
|
-
|
|
104
|
+
orphans.push(node);
|
|
104
105
|
}
|
|
105
106
|
}
|
|
106
107
|
}
|
|
@@ -116,6 +117,9 @@ function buildExecutionTree(spans) {
|
|
|
116
117
|
state: {}
|
|
117
118
|
};
|
|
118
119
|
}
|
|
120
|
+
if (orphans.length > 0 && rootNode) {
|
|
121
|
+
rootNode.children.push(...orphans);
|
|
122
|
+
}
|
|
119
123
|
return rootNode;
|
|
120
124
|
}
|
|
121
125
|
function createExecutionNode(span) {
|
|
@@ -263,4 +267,4 @@ export {
|
|
|
263
267
|
extractStateSnapshots,
|
|
264
268
|
parseNDJSONTrace
|
|
265
269
|
};
|
|
266
|
-
//# sourceMappingURL=trace-reader-
|
|
270
|
+
//# sourceMappingURL=trace-reader-OVE4DL2D.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/debug-visualizer/trace-reader.ts"],"sourcesContent":["/**\n * Trace File Reader & Processor\n *\n * Reads OpenTelemetry NDJSON trace files and reconstructs execution tree structure\n * for the Debug Visualizer.\n *\n * Milestone 2: Trace File Reader\n */\n\nimport * as fs from 'fs';\nimport * as readline from 'readline';\n\n// ============================================================================\n// Core Data Structures\n// ============================================================================\n\n/**\n * OTEL span event with attributes\n */\nexport interface SpanEvent {\n name: string;\n time: [number, number]; // [seconds, nanoseconds]\n timestamp?: string; // ISO timestamp for convenience\n attributes?: Record<string, any>;\n}\n\n/**\n * Processed OTEL span with clean structure\n */\nexport interface ProcessedSpan {\n traceId: string;\n spanId: string;\n parentSpanId?: string;\n name: string;\n startTime: [number, number]; // [seconds, nanoseconds]\n endTime: [number, number]; // [seconds, nanoseconds]\n duration: number; // milliseconds\n attributes: Record<string, any>;\n events: SpanEvent[];\n status: 'ok' | 'error';\n}\n\n/**\n * Hierarchical execution tree node\n */\nexport interface ExecutionNode {\n checkId: string;\n type: string; // 'run', 'check', 'provider'\n status: 'pending' | 'running' | 'completed' | 'error' | 'skipped';\n children: ExecutionNode[];\n span: ProcessedSpan;\n state: {\n inputContext?: any;\n output?: any;\n errors?: string[];\n metadata?: Record<string, any>;\n };\n}\n\n/**\n * State snapshot for time-travel debugging\n */\nexport interface StateSnapshot {\n checkId: string;\n timestamp: string;\n timestampNanos: [number, number];\n outputs: Record<string, any>;\n memory: Record<string, any>;\n}\n\n/**\n * Timeline event for visualization\n */\nexport interface TimelineEvent {\n type: 'check.started' | 'check.completed' | 'check.failed' | 'state.snapshot' | 'event';\n checkId?: string;\n timestamp: string;\n timestampNanos: [number, number];\n duration?: number;\n status?: string;\n metadata?: Record<string, any>;\n}\n\n/**\n * Complete parsed execution trace\n */\nexport interface ExecutionTrace {\n runId: string;\n traceId: string;\n spans: ProcessedSpan[];\n tree: ExecutionNode;\n timeline: TimelineEvent[];\n snapshots: StateSnapshot[];\n metadata: {\n startTime: string;\n endTime: string;\n duration: number; // milliseconds\n totalSpans: number;\n totalSnapshots: number;\n };\n}\n\n// ============================================================================\n// NDJSON Parser\n// ============================================================================\n\n/**\n * Parse NDJSON trace file and return structured execution trace\n *\n * @param filePath - Path to NDJSON trace file\n * @returns Parsed execution trace with tree, timeline, and snapshots\n */\nexport async function parseNDJSONTrace(filePath: string): Promise<ExecutionTrace> {\n const spans: ProcessedSpan[] = [];\n let lineNumber = 0;\n\n // Read file line by line\n const fileStream = fs.createReadStream(filePath);\n const rl = readline.createInterface({\n input: fileStream,\n crlfDelay: Infinity,\n });\n\n for await (const line of rl) {\n lineNumber++;\n\n // Skip empty lines\n if (!line.trim()) {\n continue;\n }\n\n try {\n const rawSpan = JSON.parse(line);\n const processedSpan = processRawSpan(rawSpan);\n spans.push(processedSpan);\n } catch (error) {\n console.warn(`[trace-reader] Malformed JSON at line ${lineNumber}: ${error}`);\n // Continue parsing remaining lines\n }\n }\n\n if (spans.length === 0) {\n throw new Error('No valid spans found in trace file');\n }\n\n // Build execution tree\n const tree = buildExecutionTree(spans);\n\n // Extract state snapshots\n const snapshots = extractStateSnapshots(spans);\n\n // Compute timeline\n const timeline = computeTimeline(spans);\n\n // Calculate metadata\n const sortedSpans = [...spans].sort((a, b) => compareTimeValues(a.startTime, b.startTime));\n const firstSpan = sortedSpans[0];\n const lastSpan = sortedSpans[sortedSpans.length - 1];\n\n const startTimeMs = timeValueToMillis(firstSpan.startTime);\n const endTimeMs = timeValueToMillis(lastSpan.endTime);\n\n return {\n runId: tree.checkId,\n traceId: firstSpan.traceId,\n spans,\n tree,\n timeline,\n snapshots,\n metadata: {\n startTime: timeValueToISO(firstSpan.startTime),\n endTime: timeValueToISO(lastSpan.endTime),\n duration: endTimeMs - startTimeMs,\n totalSpans: spans.length,\n totalSnapshots: snapshots.length,\n },\n };\n}\n\n/**\n * Process raw OTEL span into clean structure\n */\nfunction processRawSpan(rawSpan: any): ProcessedSpan {\n // Extract span IDs\n const traceId = rawSpan.traceId || '';\n const spanId = rawSpan.spanId || '';\n const parentSpanId = rawSpan.parentSpanId || undefined;\n\n // Extract name\n const name = rawSpan.name || 'unknown';\n\n // Extract times\n const startTime = rawSpan.startTime || [0, 0];\n const endTime = rawSpan.endTime || rawSpan.startTime || [0, 0];\n\n // Calculate duration in milliseconds\n const startMs = timeValueToMillis(startTime);\n const endMs = timeValueToMillis(endTime);\n const duration = endMs - startMs;\n\n // Extract attributes\n const attributes = rawSpan.attributes || {};\n\n // Extract events\n const events: SpanEvent[] = (rawSpan.events || []).map((evt: any) => ({\n name: evt.name || 'unknown',\n time: evt.time || [0, 0],\n timestamp: evt.timestamp || timeValueToISO(evt.time || [0, 0]),\n attributes: evt.attributes || {},\n }));\n\n // Determine status\n const status = rawSpan.status?.code === 2 ? 'error' : 'ok';\n\n return {\n traceId,\n spanId,\n parentSpanId,\n name,\n startTime,\n endTime,\n duration,\n attributes,\n events,\n status,\n };\n}\n\n// ============================================================================\n// Execution Tree Builder\n// ============================================================================\n\n/**\n * Build hierarchical execution tree from flat list of spans\n *\n * @param spans - List of processed spans\n * @returns Root execution node with children\n */\nexport function buildExecutionTree(spans: ProcessedSpan[]): ExecutionNode {\n // Create map of spanId -> ExecutionNode\n const nodeMap = new Map<string, ExecutionNode>();\n\n // First pass: create all nodes\n for (const span of spans) {\n const node = createExecutionNode(span);\n nodeMap.set(span.spanId, node);\n }\n\n // Second pass: build parent-child relationships\n let rootNode: ExecutionNode | undefined;\n const orphans: ExecutionNode[] = [];\n\n for (const span of spans) {\n const node = nodeMap.get(span.spanId)!;\n\n if (!span.parentSpanId) {\n // This is the root node (visor.run)\n rootNode = node;\n } else {\n // Find parent and add as child\n const parent = nodeMap.get(span.parentSpanId);\n if (parent) {\n parent.children.push(node);\n } else {\n // Orphaned span — parent not in this trace; attach to root later\n orphans.push(node);\n }\n }\n }\n\n if (!rootNode) {\n // No root found, create synthetic root\n console.warn('[trace-reader] No root span found, creating synthetic root');\n rootNode = {\n checkId: 'synthetic-root',\n type: 'run',\n status: 'completed',\n children: Array.from(nodeMap.values()).filter(n => !n.span.parentSpanId),\n span: spans[0], // Use first span as placeholder\n state: {},\n };\n }\n\n // Attach orphaned spans (e.g. probe-internal spans whose parent is outside\n // this trace) to the root so they appear in the visualization.\n if (orphans.length > 0 && rootNode) {\n rootNode.children.push(...orphans);\n }\n\n return rootNode;\n}\n\n/**\n * Create execution node from span\n */\nfunction createExecutionNode(span: ProcessedSpan): ExecutionNode {\n const attrs = span.attributes;\n\n // Extract check ID\n const checkId = attrs['visor.check.id'] || attrs['visor.run.id'] || span.spanId;\n\n // Determine type\n let type = 'unknown';\n if (span.name === 'visor.run') {\n type = 'run';\n } else if (span.name === 'visor.check') {\n type = 'check';\n } else if (span.name.startsWith('visor.provider.')) {\n type = 'provider';\n }\n\n // Determine status\n let status: ExecutionNode['status'] = 'completed';\n if (span.status === 'error') {\n status = 'error';\n } else if (attrs['visor.check.skipped'] === true) {\n status = 'skipped';\n }\n\n // Extract state\n const state: ExecutionNode['state'] = {};\n\n // Input context\n if (attrs['visor.check.input.context']) {\n try {\n state.inputContext = JSON.parse(attrs['visor.check.input.context']);\n } catch {\n state.inputContext = attrs['visor.check.input.context'];\n }\n }\n\n // Output\n if (attrs['visor.check.output']) {\n try {\n state.output = JSON.parse(attrs['visor.check.output']);\n } catch {\n state.output = attrs['visor.check.output'];\n }\n }\n\n // Errors\n if (span.status === 'error' || attrs['visor.check.error']) {\n state.errors = [attrs['visor.check.error'] || 'Unknown error'];\n }\n\n // Additional metadata\n state.metadata = {\n type: attrs['visor.check.type'],\n duration: span.duration,\n provider: attrs['visor.provider.type'],\n };\n\n return {\n checkId,\n type,\n status,\n children: [],\n span,\n state,\n };\n}\n\n// ============================================================================\n// State Snapshot Extractor\n// ============================================================================\n\n/**\n * Extract state snapshots from spans for time-travel debugging\n *\n * @param spans - List of processed spans\n * @returns Array of state snapshots sorted by timestamp\n */\nexport function extractStateSnapshots(spans: ProcessedSpan[]): StateSnapshot[] {\n const snapshots: StateSnapshot[] = [];\n\n for (const span of spans) {\n // Find state.snapshot events\n for (const event of span.events) {\n if (event.name === 'state.snapshot') {\n const attrs = event.attributes || {};\n\n const snapshot: StateSnapshot = {\n checkId:\n attrs['visor.snapshot.check_id'] || span.attributes['visor.check.id'] || 'unknown',\n timestamp:\n attrs['visor.snapshot.timestamp'] || event.timestamp || timeValueToISO(event.time),\n timestampNanos: event.time,\n outputs: parseJSON(attrs['visor.snapshot.outputs'], {}),\n memory: parseJSON(attrs['visor.snapshot.memory'], {}),\n };\n\n snapshots.push(snapshot);\n }\n }\n }\n\n // Sort by timestamp\n snapshots.sort((a, b) => compareTimeValues(a.timestampNanos, b.timestampNanos));\n\n return snapshots;\n}\n\n// ============================================================================\n// Timeline Generator\n// ============================================================================\n\n/**\n * Compute chronological timeline of execution events\n *\n * @param spans - List of processed spans\n * @returns Array of timeline events sorted chronologically\n */\nexport function computeTimeline(spans: ProcessedSpan[]): TimelineEvent[] {\n const events: TimelineEvent[] = [];\n\n for (const span of spans) {\n const checkId = span.attributes['visor.check.id'] || span.spanId;\n\n // Check started event\n events.push({\n type: 'check.started',\n checkId,\n timestamp: timeValueToISO(span.startTime),\n timestampNanos: span.startTime,\n metadata: {\n name: span.name,\n type: span.attributes['visor.check.type'],\n },\n });\n\n // Check completed/failed event\n events.push({\n type: span.status === 'error' ? 'check.failed' : 'check.completed',\n checkId,\n timestamp: timeValueToISO(span.endTime),\n timestampNanos: span.endTime,\n duration: span.duration,\n status: span.status,\n metadata: {\n name: span.name,\n },\n });\n\n // Add span events (state.snapshot, etc.)\n for (const evt of span.events) {\n events.push({\n type: evt.name === 'state.snapshot' ? 'state.snapshot' : 'event',\n checkId: evt.attributes?.['visor.snapshot.check_id'] || checkId,\n timestamp: evt.timestamp || timeValueToISO(evt.time),\n timestampNanos: evt.time,\n metadata: {\n eventName: evt.name,\n attributes: evt.attributes,\n },\n });\n }\n }\n\n // Sort chronologically\n events.sort((a, b) => compareTimeValues(a.timestampNanos, b.timestampNanos));\n\n return events;\n}\n\n// ============================================================================\n// Utility Functions\n// ============================================================================\n\n/**\n * Convert OTEL time value [seconds, nanoseconds] to milliseconds\n */\nfunction timeValueToMillis(timeValue: [number, number]): number {\n const [seconds, nanos] = timeValue;\n return seconds * 1000 + nanos / 1_000_000;\n}\n\n/**\n * Convert OTEL time value to ISO timestamp string\n */\nfunction timeValueToISO(timeValue: [number, number]): string {\n const millis = timeValueToMillis(timeValue);\n return new Date(millis).toISOString();\n}\n\n/**\n * Compare two time values for sorting\n * Returns: -1 if a < b, 0 if a === b, 1 if a > b\n */\nfunction compareTimeValues(a: [number, number], b: [number, number]): number {\n if (a[0] !== b[0]) {\n return a[0] - b[0];\n }\n return a[1] - b[1];\n}\n\n/**\n * Safely parse JSON string, return default on error\n */\nfunction parseJSON<T>(value: any, defaultValue: T): T {\n if (typeof value !== 'string') {\n return defaultValue;\n }\n\n try {\n return JSON.parse(value);\n } catch {\n return defaultValue;\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import {
|
|
2
|
+
fetchTraceSpans,
|
|
3
|
+
findTraceFile,
|
|
4
|
+
init_trace_serializer,
|
|
5
|
+
readTraceIdFromFile,
|
|
6
|
+
renderSpanTree,
|
|
7
|
+
renderSpanYaml,
|
|
8
|
+
renderTraceTree,
|
|
9
|
+
serializeTraceForPrompt
|
|
10
|
+
} from "./chunk-6C3R6E42.mjs";
|
|
11
|
+
import "./chunk-ZPYODGYA.mjs";
|
|
12
|
+
import "./chunk-B2OUZAWY.mjs";
|
|
13
|
+
import "./chunk-J7LXIPZS.mjs";
|
|
14
|
+
init_trace_serializer();
|
|
15
|
+
export {
|
|
16
|
+
fetchTraceSpans,
|
|
17
|
+
findTraceFile,
|
|
18
|
+
readTraceIdFromFile,
|
|
19
|
+
renderSpanTree,
|
|
20
|
+
renderSpanYaml,
|
|
21
|
+
renderTraceTree,
|
|
22
|
+
serializeTraceForPrompt
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=trace-serializer-KKBJHM7J.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1,22 +1,40 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getInstanceId,
|
|
3
|
-
init_instance_id
|
|
4
|
-
|
|
3
|
+
init_instance_id,
|
|
4
|
+
require_package
|
|
5
|
+
} from "./chunk-G7GSN3SK.mjs";
|
|
5
6
|
import {
|
|
6
7
|
init_logger,
|
|
7
8
|
logger
|
|
8
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-ZPYODGYA.mjs";
|
|
9
10
|
import {
|
|
10
11
|
init_lazy_otel,
|
|
11
12
|
trace
|
|
12
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-B2OUZAWY.mjs";
|
|
13
14
|
import {
|
|
14
15
|
__esm
|
|
15
16
|
} from "./chunk-J7LXIPZS.mjs";
|
|
16
17
|
|
|
17
18
|
// src/agent-protocol/track-execution.ts
|
|
18
19
|
import crypto from "crypto";
|
|
20
|
+
import fs from "fs";
|
|
19
21
|
import path from "path";
|
|
22
|
+
function getPackageVersion() {
|
|
23
|
+
try {
|
|
24
|
+
return require_package()?.version || "dev";
|
|
25
|
+
} catch {
|
|
26
|
+
return "dev";
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
async function readTraceIdFromFallbackFile(traceFile) {
|
|
30
|
+
if (!traceFile || !fs.existsSync(traceFile)) return void 0;
|
|
31
|
+
try {
|
|
32
|
+
const { readTraceIdFromFile } = await import("./trace-serializer-KKBJHM7J.mjs");
|
|
33
|
+
return await readTraceIdFromFile(traceFile) || void 0;
|
|
34
|
+
} catch {
|
|
35
|
+
return void 0;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
20
38
|
async function trackExecution(opts, executor) {
|
|
21
39
|
const { taskStore, source, configPath, metadata, messageText } = opts;
|
|
22
40
|
const configName = configPath ? path.basename(configPath, path.extname(configPath)) : void 0;
|
|
@@ -26,6 +44,7 @@ async function trackExecution(opts, executor) {
|
|
|
26
44
|
role: "user",
|
|
27
45
|
parts: [{ text: messageText }]
|
|
28
46
|
};
|
|
47
|
+
const traceFile = process.env.VISOR_FALLBACK_TRACE_FILE || void 0;
|
|
29
48
|
const task = taskStore.createTask({
|
|
30
49
|
contextId: crypto.randomUUID(),
|
|
31
50
|
requestMessage,
|
|
@@ -33,7 +52,10 @@ async function trackExecution(opts, executor) {
|
|
|
33
52
|
requestMetadata: {
|
|
34
53
|
source,
|
|
35
54
|
instance_id: getInstanceId(),
|
|
55
|
+
visor_version: process.env.VISOR_VERSION || getPackageVersion(),
|
|
56
|
+
...process.env.VISOR_COMMIT_SHORT ? { visor_commit: process.env.VISOR_COMMIT_SHORT } : {},
|
|
36
57
|
trace_id: trace.getActiveSpan()?.spanContext().traceId || void 0,
|
|
58
|
+
...traceFile ? { trace_file: traceFile } : {},
|
|
37
59
|
...metadata
|
|
38
60
|
}
|
|
39
61
|
});
|
|
@@ -43,8 +65,23 @@ async function trackExecution(opts, executor) {
|
|
|
43
65
|
logger.info(
|
|
44
66
|
`[TaskTracking] Task ${task.id} started (source=${source}, workflow=${workflowId || "-"}, instance=${instanceId})`
|
|
45
67
|
);
|
|
68
|
+
const HEARTBEAT_INTERVAL = 6e4;
|
|
69
|
+
const heartbeatTimer = setInterval(() => {
|
|
70
|
+
try {
|
|
71
|
+
taskStore.heartbeat(task.id);
|
|
72
|
+
} catch {
|
|
73
|
+
}
|
|
74
|
+
}, HEARTBEAT_INTERVAL);
|
|
46
75
|
try {
|
|
47
76
|
const result = await executor();
|
|
77
|
+
try {
|
|
78
|
+
const activeTraceId = trace.getActiveSpan()?.spanContext().traceId;
|
|
79
|
+
const persistedTraceId = (activeTraceId && activeTraceId !== "" ? activeTraceId : void 0) || await readTraceIdFromFallbackFile(traceFile);
|
|
80
|
+
if (persistedTraceId && !task.metadata?.trace_id) {
|
|
81
|
+
taskStore.updateMetadata(task.id, { trace_id: persistedTraceId });
|
|
82
|
+
}
|
|
83
|
+
} catch {
|
|
84
|
+
}
|
|
48
85
|
let responseText = "Execution completed";
|
|
49
86
|
try {
|
|
50
87
|
const history = result?.reviewSummary?.history;
|
|
@@ -70,8 +107,17 @@ async function trackExecution(opts, executor) {
|
|
|
70
107
|
role: "agent",
|
|
71
108
|
parts: [{ text: responseText }]
|
|
72
109
|
};
|
|
73
|
-
|
|
74
|
-
|
|
110
|
+
try {
|
|
111
|
+
taskStore.updateTaskState(task.id, "completed", completedMsg);
|
|
112
|
+
logger.info(`[TaskTracking] Task ${task.id} completed`);
|
|
113
|
+
} catch (stateErr) {
|
|
114
|
+
logger.warn(
|
|
115
|
+
`[TaskTracking] Task ${task.id} completed but state transition failed: ${stateErr instanceof Error ? stateErr.message : stateErr}`
|
|
116
|
+
);
|
|
117
|
+
}
|
|
118
|
+
if (opts.autoEvaluate || process.env.VISOR_TASK_EVALUATE === "true") {
|
|
119
|
+
scheduleEvaluation(task.id, taskStore);
|
|
120
|
+
}
|
|
75
121
|
return { task, result };
|
|
76
122
|
} catch (err) {
|
|
77
123
|
const errorText = err instanceof Error ? err.message : String(err);
|
|
@@ -86,8 +132,23 @@ async function trackExecution(opts, executor) {
|
|
|
86
132
|
} catch {
|
|
87
133
|
}
|
|
88
134
|
throw err;
|
|
135
|
+
} finally {
|
|
136
|
+
clearInterval(heartbeatTimer);
|
|
89
137
|
}
|
|
90
138
|
}
|
|
139
|
+
function scheduleEvaluation(taskId, taskStore) {
|
|
140
|
+
setTimeout(async () => {
|
|
141
|
+
try {
|
|
142
|
+
const { evaluateAndStore } = await import("./task-evaluator-OVMG7S56.mjs");
|
|
143
|
+
await evaluateAndStore(taskId, taskStore);
|
|
144
|
+
logger.info(`[TaskEvaluator] Auto-evaluation completed for task ${taskId}`);
|
|
145
|
+
} catch (err) {
|
|
146
|
+
logger.warn(
|
|
147
|
+
`[TaskEvaluator] Auto-evaluation failed for task ${taskId}: ${err instanceof Error ? err.message : err}`
|
|
148
|
+
);
|
|
149
|
+
}
|
|
150
|
+
}, 5e3);
|
|
151
|
+
}
|
|
91
152
|
var init_track_execution = __esm({
|
|
92
153
|
"src/agent-protocol/track-execution.ts"() {
|
|
93
154
|
init_logger();
|
|
@@ -99,4 +160,4 @@ init_track_execution();
|
|
|
99
160
|
export {
|
|
100
161
|
trackExecution
|
|
101
162
|
};
|
|
102
|
-
//# sourceMappingURL=track-execution-
|
|
163
|
+
//# sourceMappingURL=track-execution-3EC24C2X.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 fs from 'fs';\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\nasync function readTraceIdFromFallbackFile(traceFile?: string): Promise<string | undefined> {\n if (!traceFile || !fs.existsSync(traceFile)) return undefined;\n\n try {\n const { readTraceIdFromFile } = await import('./trace-serializer');\n return (await readTraceIdFromFile(traceFile)) || undefined;\n } catch {\n return undefined;\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 | 'test';\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 // Heartbeat: periodically touch updated_at so stale-task detection\n // can distinguish live tasks from orphans (works across nodes).\n const HEARTBEAT_INTERVAL = 60_000; // 1 minute\n const heartbeatTimer = setInterval(() => {\n try {\n taskStore.heartbeat(task.id);\n } catch {\n // best-effort — don't crash the task over a heartbeat failure\n }\n }, HEARTBEAT_INTERVAL);\n\n try {\n const result = await executor();\n\n // Now that execution is done, capture the trace ID from the active span.\n // At task creation time the span may not have been active yet, so we\n // update metadata post-execution to ensure trace_id is stored.\n try {\n const activeTraceId = trace.getActiveSpan()?.spanContext().traceId;\n const persistedTraceId =\n (activeTraceId && activeTraceId !== '' ? activeTraceId : undefined) ||\n (await readTraceIdFromFallbackFile(traceFile));\n if (persistedTraceId && !task.metadata?.trace_id) {\n taskStore.updateMetadata(task.id, { trace_id: persistedTraceId });\n }\n } catch {\n // best-effort — don't fail the task over metadata\n }\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 } finally {\n clearInterval(heartbeatTimer);\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":[]}
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
getInstanceId,
|
|
3
3
|
init_instance_id,
|
|
4
4
|
require_package
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-MFXPJUUE.mjs";
|
|
6
6
|
import {
|
|
7
7
|
init_logger,
|
|
8
8
|
logger
|
|
@@ -57,6 +57,13 @@ async function trackExecution(opts, executor) {
|
|
|
57
57
|
);
|
|
58
58
|
try {
|
|
59
59
|
const result = await executor();
|
|
60
|
+
try {
|
|
61
|
+
const activeTraceId = trace.getActiveSpan()?.spanContext().traceId;
|
|
62
|
+
if (activeTraceId && activeTraceId !== "" && !task.metadata?.trace_id) {
|
|
63
|
+
taskStore.updateMetadata(task.id, { trace_id: activeTraceId });
|
|
64
|
+
}
|
|
65
|
+
} catch {
|
|
66
|
+
}
|
|
60
67
|
let responseText = "Execution completed";
|
|
61
68
|
try {
|
|
62
69
|
const history = result?.reviewSummary?.history;
|
|
@@ -112,7 +119,7 @@ async function trackExecution(opts, executor) {
|
|
|
112
119
|
function scheduleEvaluation(taskId, taskStore) {
|
|
113
120
|
setTimeout(async () => {
|
|
114
121
|
try {
|
|
115
|
-
const { evaluateAndStore } = await import("./task-evaluator-
|
|
122
|
+
const { evaluateAndStore } = await import("./task-evaluator-GQYDOSGT.mjs");
|
|
116
123
|
await evaluateAndStore(taskId, taskStore);
|
|
117
124
|
logger.info(`[TaskEvaluator] Auto-evaluation completed for task ${taskId}`);
|
|
118
125
|
} catch (err) {
|
|
@@ -133,4 +140,4 @@ init_track_execution();
|
|
|
133
140
|
export {
|
|
134
141
|
trackExecution
|
|
135
142
|
};
|
|
136
|
-
//# sourceMappingURL=track-execution-
|
|
143
|
+
//# sourceMappingURL=track-execution-66RLL6QT.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 // Now that execution is done, capture the trace ID from the active span.\n // At task creation time the span may not have been active yet, so we\n // update metadata post-execution to ensure trace_id is stored.\n try {\n const activeTraceId = trace.getActiveSpan()?.spanContext().traceId;\n if (activeTraceId && activeTraceId !== '' && !task.metadata?.trace_id) {\n taskStore.updateMetadata(task.id, { trace_id: activeTraceId });\n }\n } catch {\n // best-effort — don't fail the task over metadata\n }\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;AAK9B,QAAI;AACF,YAAM,gBAAgB,MAAM,cAAc,GAAG,YAAY,EAAE;AAC3D,UAAI,iBAAiB,kBAAkB,MAAM,CAAC,KAAK,UAAU,UAAU;AACrE,kBAAU,eAAe,KAAK,IAAI,EAAE,UAAU,cAAc,CAAC;AAAA,MAC/D;AAAA,IACF,QAAQ;AAAA,IAER;AAMA,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;AAzMA;AAAA;AAYA;AACA;AACA;AAAA;AAAA;","names":[]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import {
|
|
2
|
+
UtcpCheckProvider,
|
|
3
|
+
init_utcp_check_provider
|
|
4
|
+
} from "./chunk-P2K4VOMU.mjs";
|
|
5
|
+
import "./chunk-4BN2XI4X.mjs";
|
|
6
|
+
import "./chunk-25IC7KXZ.mjs";
|
|
7
|
+
import "./chunk-LW3INISN.mjs";
|
|
8
|
+
import "./chunk-RI4ONH5X.mjs";
|
|
9
|
+
import "./chunk-ZPYODGYA.mjs";
|
|
10
|
+
import "./chunk-B2OUZAWY.mjs";
|
|
11
|
+
import "./chunk-J7LXIPZS.mjs";
|
|
12
|
+
init_utcp_check_provider();
|
|
13
|
+
export {
|
|
14
|
+
UtcpCheckProvider
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=utcp-check-provider-WI3QZ3W6.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import {
|
|
2
|
+
WorkflowCheckProvider,
|
|
3
|
+
init_workflow_check_provider
|
|
4
|
+
} from "./chunk-UXB4XWEE.mjs";
|
|
5
|
+
import "./chunk-YSOIR46P.mjs";
|
|
6
|
+
import "./chunk-PDQTEBOJ.mjs";
|
|
7
|
+
import "./chunk-P2K4VOMU.mjs";
|
|
8
|
+
import "./chunk-MEB2TTIE.mjs";
|
|
9
|
+
import "./chunk-B7BVQM5K.mjs";
|
|
10
|
+
import "./chunk-XXAEN5KU.mjs";
|
|
11
|
+
import "./chunk-S5FSRHMY.mjs";
|
|
12
|
+
import "./chunk-54KOAC4W.mjs";
|
|
13
|
+
import "./chunk-7W5QCO4Y.mjs";
|
|
14
|
+
import "./chunk-KWTCTEFT.mjs";
|
|
15
|
+
import "./chunk-WKLJ57WF.mjs";
|
|
16
|
+
import "./chunk-GA2TYKSR.mjs";
|
|
17
|
+
import "./chunk-XOAEKFKB.mjs";
|
|
18
|
+
import "./chunk-G7GSN3SK.mjs";
|
|
19
|
+
import "./chunk-FWWLD555.mjs";
|
|
20
|
+
import "./chunk-4BN2XI4X.mjs";
|
|
21
|
+
import "./chunk-25IC7KXZ.mjs";
|
|
22
|
+
import "./chunk-LW3INISN.mjs";
|
|
23
|
+
import "./chunk-RI4ONH5X.mjs";
|
|
24
|
+
import "./chunk-ZPYODGYA.mjs";
|
|
25
|
+
import "./chunk-B2OUZAWY.mjs";
|
|
26
|
+
import "./chunk-J7LXIPZS.mjs";
|
|
27
|
+
init_workflow_check_provider();
|
|
28
|
+
export {
|
|
29
|
+
WorkflowCheckProvider
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=workflow-check-provider-X2UREEH7.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/dist/sdk/{workflow-check-provider-EXMC6JIS.mjs → workflow-check-provider-YXALZNAQ.mjs}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
WorkflowCheckProvider,
|
|
3
3
|
init_workflow_check_provider
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-IDL3AA3G.mjs";
|
|
5
5
|
import "./chunk-YSOIR46P.mjs";
|
|
6
6
|
import "./chunk-PDQTEBOJ.mjs";
|
|
7
7
|
import "./chunk-7XRSCOKE.mjs";
|
|
@@ -12,10 +12,10 @@ import "./chunk-RHKPFJLG.mjs";
|
|
|
12
12
|
import "./chunk-J27D43HS.mjs";
|
|
13
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-NPSLGKXB.mjs";
|
|
16
|
+
import "./chunk-V45TITKX.mjs";
|
|
17
|
+
import "./chunk-TFUQ2D5L.mjs";
|
|
18
|
+
import "./chunk-MFXPJUUE.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-YXALZNAQ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import {
|
|
2
|
+
WorkflowRegistry,
|
|
3
|
+
init_workflow_registry
|
|
4
|
+
} from "./chunk-54KOAC4W.mjs";
|
|
5
|
+
import "./chunk-ZPYODGYA.mjs";
|
|
6
|
+
import "./chunk-B2OUZAWY.mjs";
|
|
7
|
+
import "./chunk-J7LXIPZS.mjs";
|
|
8
|
+
init_workflow_registry();
|
|
9
|
+
export {
|
|
10
|
+
WorkflowRegistry
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=workflow-registry-YCZ3FCJC.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -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;AAoBF,qBAAa,iBAAkB,YAAW,MAAM;IAC9C,QAAQ,CAAC,IAAI,WAAW;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,EAAE,CAAC,CAAY;IACvB,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,MAAM,CAAC,CAAc;IAC7B,OAAO,CAAC,OAAO,CAAC,CAAc;IAC9B,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,aAAa,CASP;IACd,OAAO,CAAC,OAAO,CAAC,CAAe;IAC/B,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,gBAAgB,CAAC,CAAY;IACrC,OAAO,CAAC,uBAAuB,CAAC,CAA0B;IAC1D,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,cAAc,CAAC,CAAiC;IACxD,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAC,CAAmD;IACrE,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAC,CAAiC;gBAE5C,MAAM,EAAE,2BAA2B,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB;IAsB1F,oDAAoD;IACpD,YAAY,CAAC,KAAK,EAAE,OAAO,8BAA8B,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAKhG,qFAAqF;IACrF,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IASpC;;;OAGG;IACH,OAAO,CAAC,6BAA6B;IAYrC;;OAEG;YACW,wBAAwB;IA8BtC;;;OAGG;YACW,YAAY;IAYpB,KAAK,IAAI,OAAO,CAAC,IAAI,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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox-routing.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/state-machine/dispatch/sandbox-routing.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"sandbox-routing.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/state-machine/dispatch/sandbox-routing.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAIhD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,qBAAqB,EAAE,oBAAoB,CAAC,CAAC;IAC9E,uDAAuD;IACvD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,WAAW,EAAE,CAqC/F;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,MAAM,GAAG,GAAG,EACpB,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,EAC7C,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,WAAW,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,EACzC,WAAW,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,GACxC,OAAO,CAAC,aAAa,CAAC,CAsGxB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"level-dispatch.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/state-machine/states/level-dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,QAAQ,EACR,WAAW,EACX,WAAW,EAEZ,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"level-dispatch.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/state-machine/states/level-dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,QAAQ,EACR,WAAW,EACX,WAAW,EAEZ,MAAM,oBAAoB,CAAC;AA6T5B,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,QAAQ,EACf,UAAU,EAAE,CAAC,QAAQ,EAAE,WAAW,KAAK,IAAI,EAC3C,SAAS,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GACtC,OAAO,CAAC,IAAI,CAAC,CAyFf"}
|
|
@@ -4,4 +4,25 @@ export declare function emitNdjsonSpanWithEvents(name: string, attrs: Record<str
|
|
|
4
4
|
name: string;
|
|
5
5
|
attrs?: Record<string, unknown>;
|
|
6
6
|
}>): void;
|
|
7
|
+
/**
|
|
8
|
+
* Emit a full span record to fallback NDJSON including traceId, spanId,
|
|
9
|
+
* parentSpanId, and timing — compatible with the trace serializer's
|
|
10
|
+
* parseLocalNDJSONSpans format.
|
|
11
|
+
*/
|
|
12
|
+
export declare function emitNdjsonFullSpan(record: {
|
|
13
|
+
name: string;
|
|
14
|
+
traceId?: string;
|
|
15
|
+
spanId?: string;
|
|
16
|
+
parentSpanId?: string;
|
|
17
|
+
startTime?: [number, number];
|
|
18
|
+
endTime?: [number, number];
|
|
19
|
+
attributes?: Record<string, unknown>;
|
|
20
|
+
events?: Array<{
|
|
21
|
+
name: string;
|
|
22
|
+
attributes?: Record<string, unknown>;
|
|
23
|
+
}>;
|
|
24
|
+
status?: {
|
|
25
|
+
code?: number;
|
|
26
|
+
};
|
|
27
|
+
}): void;
|
|
7
28
|
//# sourceMappingURL=fallback-ndjson.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fallback-ndjson.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/telemetry/fallback-ndjson.ts"],"names":[],"mappings":"AAyCA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAIjD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CASrF;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,MAAM,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,GAC/D,IAAI,CASN"}
|
|
1
|
+
{"version":3,"file":"fallback-ndjson.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/telemetry/fallback-ndjson.ts"],"names":[],"mappings":"AAyCA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAIjD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CASrF;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,MAAM,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,GAC/D,IAAI,CASN;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;IACvE,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5B,GAAG,IAAI,CASP"}
|
|
@@ -7,6 +7,8 @@ export declare const trace: {
|
|
|
7
7
|
getTracer(name: string, version?: string): any;
|
|
8
8
|
getSpan(context: any): any;
|
|
9
9
|
getActiveSpan(): any;
|
|
10
|
+
setSpan(context: any, span: any): any;
|
|
11
|
+
setSpanContext(context: any, spanContext: any): any;
|
|
10
12
|
};
|
|
11
13
|
export declare const context: {
|
|
12
14
|
active(): any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lazy-otel.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/telemetry/lazy-otel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA4BH,eAAO,MAAM,KAAK;oBACA,MAAM,YAAY,MAAM;qBAKvB,GAAG;;
|
|
1
|
+
{"version":3,"file":"lazy-otel.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/telemetry/lazy-otel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA4BH,eAAO,MAAM,KAAK;oBACA,MAAM,YAAY,MAAM;qBAKvB,GAAG;;qBAUH,GAAG,QAAQ,GAAG;4BAKP,GAAG,eAAe,GAAG;CAK9C,CAAC;AAGF,eAAO,MAAM,OAAO;;kBAMJ,GAAG,MAAM,QAAQ,YAAY,GAAG,WAAW,GAAG,EAAE;CAK/D,CAAC;AAGF,eAAO,MAAM,OAAO;mBACH,MAAM,YAAY,MAAM;CAKxC,CAAC;AAGF,eAAO,MAAM,cAAc;;;;CAa1B,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;;;CAqBpB,CAAC;AAGF,eAAO,MAAM,IAAI;sBACG,GAAG,UAAU,GAAG;CAKnC,CAAC;AAGF,eAAO,MAAM,iBAAiB;;CAK7B,CAAC;AAEF,eAAO,MAAM,YAAY;;;;;;;;CA6BxB,CAAC;AAGF,MAAM,MAAM,IAAI,GAAG,GAAG,CAAC;AACvB,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC7C,MAAM,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC"}
|
|
@@ -35,5 +35,10 @@ export declare function getOtelLoggerProvider(): any;
|
|
|
35
35
|
* processes to ensure they are exported before the next batch interval.
|
|
36
36
|
*/
|
|
37
37
|
export declare function forceFlushTelemetry(): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Best-effort non-blocking flush for lifecycle/helper spans.
|
|
40
|
+
* Rate-limited to avoid exporter pressure in long-running processes.
|
|
41
|
+
*/
|
|
42
|
+
export declare function requestThrottledTelemetryFlush(): void;
|
|
38
43
|
export declare function shutdownTelemetry(): Promise<void>;
|
|
39
44
|
//# sourceMappingURL=opentelemetry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opentelemetry.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/telemetry/opentelemetry.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAQ3E,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACnC,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAC3E,IAAI,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,qBAAqB,CAAC;CACrC;
|
|
1
|
+
{"version":3,"file":"opentelemetry.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/telemetry/opentelemetry.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAQ3E,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACnC,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAC3E,IAAI,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,qBAAqB,CAAC;CACrC;AASD;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAG/C;AAED,wBAAsB,aAAa,CAAC,IAAI,GAAE,oBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyQlF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,GAAG,CAE3C;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CASzD;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,IAAI,IAAI,CAyBrD;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAsCvD"}
|
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import { Span } from './lazy-otel';
|
|
2
2
|
export declare function getTracer(): any;
|
|
3
3
|
export declare function withActiveSpan<T>(name: string, attrs: Record<string, unknown> | undefined, fn: (span: Span) => Promise<T>): Promise<T>;
|
|
4
|
+
export declare function emitImmediateSpan(name: string, attrs?: Record<string, unknown>, options?: {
|
|
5
|
+
events?: Array<{
|
|
6
|
+
name: string;
|
|
7
|
+
attrs?: Record<string, unknown>;
|
|
8
|
+
}>;
|
|
9
|
+
status?: {
|
|
10
|
+
code?: number;
|
|
11
|
+
message?: string;
|
|
12
|
+
};
|
|
13
|
+
}): void;
|
|
4
14
|
export declare function addEvent(name: string, attrs?: Record<string, unknown>): void;
|
|
5
15
|
export declare function setSpanAttributes(attrs: Record<string, unknown>): void;
|
|
6
16
|
export declare function setSpanError(err: unknown): void;
|