@probelabs/visor 0.1.176 → 0.1.177
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/frontends/slack-frontend.d.ts.map +1 -1
- package/dist/index.js +126 -23
- package/dist/output/traces/{run-2026-03-10T15-37-04-236Z.ndjson → run-2026-03-10T16-21-38-082Z.ndjson} +84 -84
- package/dist/output/traces/{run-2026-03-10T15-37-44-748Z.ndjson → run-2026-03-10T16-22-15-059Z.ndjson} +1812 -1812
- package/dist/sdk/{a2a-frontend-W54ZZ32L.mjs → a2a-frontend-BPWLYLCG.mjs} +2 -2
- package/dist/sdk/a2a-frontend-HBUSNE3K.mjs +1658 -0
- package/dist/sdk/a2a-frontend-HBUSNE3K.mjs.map +1 -0
- package/dist/sdk/{check-provider-registry-7HSDAKHQ.mjs → check-provider-registry-HW4QPPSA.mjs} +2 -2
- package/dist/sdk/{check-provider-registry-MJYNLB37.mjs → check-provider-registry-OY2EESIO.mjs} +5 -5
- package/dist/sdk/{check-provider-registry-VE6LQPLY.mjs → check-provider-registry-TRHN5ZBY.mjs} +5 -5
- package/dist/sdk/{chunk-4E34HRCW.mjs → chunk-2LCF5H5K.mjs} +73 -28
- package/dist/sdk/chunk-2LCF5H5K.mjs.map +1 -0
- package/dist/sdk/{chunk-66PTDQAO.mjs → chunk-ADQVGGKA.mjs} +3 -3
- package/dist/sdk/{chunk-SEA2FWEC.mjs → chunk-BWC5R2UB.mjs} +2 -2
- package/dist/sdk/{chunk-Y2DYDGGY.mjs → chunk-FNBSDOQM.mjs} +3 -3
- package/dist/sdk/{chunk-Y2DYDGGY.mjs.map → chunk-FNBSDOQM.mjs.map} +1 -1
- package/dist/sdk/chunk-GVTWESYN.mjs +516 -0
- package/dist/sdk/chunk-GVTWESYN.mjs.map +1 -0
- package/dist/sdk/chunk-OHOBWVPP.mjs +1502 -0
- package/dist/sdk/chunk-OHOBWVPP.mjs.map +1 -0
- package/dist/sdk/chunk-OPI632LK.mjs +739 -0
- package/dist/sdk/chunk-OPI632LK.mjs.map +1 -0
- package/dist/sdk/{chunk-R3FNZRE4.mjs → chunk-XLDVWRKQ.mjs} +73 -28
- package/dist/sdk/chunk-XLDVWRKQ.mjs.map +1 -0
- package/dist/sdk/{chunk-OK4MLC3R.mjs → chunk-Y6PVSFCS.mjs} +49 -9
- package/dist/sdk/chunk-Y6PVSFCS.mjs.map +1 -0
- package/dist/sdk/{failure-condition-evaluator-RTT5SLVL.mjs → failure-condition-evaluator-63BECZYF.mjs} +3 -3
- package/dist/sdk/failure-condition-evaluator-HL33X7MH.mjs +18 -0
- package/dist/sdk/{github-frontend-C4GG62PI.mjs → github-frontend-FP6WKNZR.mjs} +3 -3
- package/dist/sdk/github-frontend-U2U42CKV.mjs +1386 -0
- package/dist/sdk/github-frontend-U2U42CKV.mjs.map +1 -0
- package/dist/sdk/{host-6GGO2BQE.mjs → host-6SBCE4VK.mjs} +4 -4
- package/dist/sdk/host-NYUSWEE4.mjs +87 -0
- package/dist/sdk/host-NYUSWEE4.mjs.map +1 -0
- package/dist/sdk/{routing-DXVYOXAS.mjs → routing-PFFCQJV2.mjs} +4 -4
- package/dist/sdk/routing-SFP4D6O3.mjs +26 -0
- package/dist/sdk/{schedule-tool-R7NSHTPJ.mjs → schedule-tool-45NAALKS.mjs} +2 -2
- package/dist/sdk/{schedule-tool-LL7XDILD.mjs → schedule-tool-DN2DSXIX.mjs} +5 -5
- package/dist/sdk/{schedule-tool-GKKVOQB7.mjs → schedule-tool-KVZN5LP6.mjs} +5 -5
- package/dist/sdk/{schedule-tool-handler-O3L2R5OJ.mjs → schedule-tool-handler-57JBEICD.mjs} +5 -5
- package/dist/sdk/{schedule-tool-handler-5GTQ6SFI.mjs → schedule-tool-handler-6MPP5DXK.mjs} +2 -2
- package/dist/sdk/{schedule-tool-handler-ZZGJ3UFR.mjs → schedule-tool-handler-GEXHYH3X.mjs} +5 -5
- package/dist/sdk/sdk.js +75 -15
- package/dist/sdk/sdk.js.map +1 -1
- package/dist/sdk/sdk.mjs +4 -4
- package/dist/sdk/slack-frontend-XKSIOUXB.mjs +910 -0
- package/dist/sdk/slack-frontend-XKSIOUXB.mjs.map +1 -0
- package/dist/sdk/{trace-helpers-CECHXDLI.mjs → trace-helpers-L3EOYW5P.mjs} +2 -2
- package/dist/sdk/trace-helpers-MYH2GPXF.mjs +29 -0
- package/dist/sdk/{workflow-check-provider-EY6VSMNG.mjs → workflow-check-provider-JNEFAECH.mjs} +5 -5
- package/dist/sdk/workflow-check-provider-JNEFAECH.mjs.map +1 -0
- package/dist/sdk/{workflow-check-provider-AX7IRQEZ.mjs → workflow-check-provider-OA33MESM.mjs} +2 -2
- package/dist/sdk/workflow-check-provider-OA33MESM.mjs.map +1 -0
- package/dist/sdk/{workflow-check-provider-HZQGJFOU.mjs → workflow-check-provider-U3UIYLU7.mjs} +5 -5
- package/dist/sdk/workflow-check-provider-U3UIYLU7.mjs.map +1 -0
- package/dist/traces/{run-2026-03-10T15-37-04-236Z.ndjson → run-2026-03-10T16-21-38-082Z.ndjson} +84 -84
- package/dist/traces/{run-2026-03-10T15-37-44-748Z.ndjson → run-2026-03-10T16-22-15-059Z.ndjson} +1812 -1812
- package/dist/utils/workspace-manager.d.ts +5 -1
- package/dist/utils/workspace-manager.d.ts.map +1 -1
- package/dist/utils/worktree-manager.d.ts +5 -1
- package/dist/utils/worktree-manager.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/sdk/chunk-4E34HRCW.mjs.map +0 -1
- package/dist/sdk/chunk-OK4MLC3R.mjs.map +0 -1
- package/dist/sdk/chunk-R3FNZRE4.mjs.map +0 -1
- /package/dist/sdk/{a2a-frontend-W54ZZ32L.mjs.map → a2a-frontend-BPWLYLCG.mjs.map} +0 -0
- /package/dist/sdk/{check-provider-registry-7HSDAKHQ.mjs.map → check-provider-registry-HW4QPPSA.mjs.map} +0 -0
- /package/dist/sdk/{check-provider-registry-MJYNLB37.mjs.map → check-provider-registry-OY2EESIO.mjs.map} +0 -0
- /package/dist/sdk/{check-provider-registry-VE6LQPLY.mjs.map → check-provider-registry-TRHN5ZBY.mjs.map} +0 -0
- /package/dist/sdk/{chunk-66PTDQAO.mjs.map → chunk-ADQVGGKA.mjs.map} +0 -0
- /package/dist/sdk/{chunk-SEA2FWEC.mjs.map → chunk-BWC5R2UB.mjs.map} +0 -0
- /package/dist/sdk/{failure-condition-evaluator-RTT5SLVL.mjs.map → failure-condition-evaluator-63BECZYF.mjs.map} +0 -0
- /package/dist/sdk/{routing-DXVYOXAS.mjs.map → failure-condition-evaluator-HL33X7MH.mjs.map} +0 -0
- /package/dist/sdk/{github-frontend-C4GG62PI.mjs.map → github-frontend-FP6WKNZR.mjs.map} +0 -0
- /package/dist/sdk/{host-6GGO2BQE.mjs.map → host-6SBCE4VK.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-GKKVOQB7.mjs.map → routing-PFFCQJV2.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-LL7XDILD.mjs.map → routing-SFP4D6O3.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-R7NSHTPJ.mjs.map → schedule-tool-45NAALKS.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-handler-5GTQ6SFI.mjs.map → schedule-tool-DN2DSXIX.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-handler-O3L2R5OJ.mjs.map → schedule-tool-KVZN5LP6.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-handler-ZZGJ3UFR.mjs.map → schedule-tool-handler-57JBEICD.mjs.map} +0 -0
- /package/dist/sdk/{trace-helpers-CECHXDLI.mjs.map → schedule-tool-handler-6MPP5DXK.mjs.map} +0 -0
- /package/dist/sdk/{workflow-check-provider-AX7IRQEZ.mjs.map → schedule-tool-handler-GEXHYH3X.mjs.map} +0 -0
- /package/dist/sdk/{workflow-check-provider-EY6VSMNG.mjs.map → trace-helpers-L3EOYW5P.mjs.map} +0 -0
- /package/dist/sdk/{workflow-check-provider-HZQGJFOU.mjs.map → trace-helpers-MYH2GPXF.mjs.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack-frontend.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/frontends/slack-frontend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAYxD,KAAK,mBAAmB,GAAG;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE;QACV,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;CACH,CAAC;AAEF,qBAAa,aAAc,YAAW,QAAQ;IAC5C,SAAgB,IAAI,WAAW;IAC/B,OAAO,CAAC,IAAI,CAAsC;IAClD,OAAO,CAAC,GAAG,CAAsB;IAEjC,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,MAAM,CAAgD;IAC9D,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,eAAe,CAAoD;gBAE/D,MAAM,CAAC,EAAE,mBAAmB;IAIxC,KAAK,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;IA6JjC,IAAI,IAAI,IAAI;IAKZ,OAAO,CAAC,QAAQ;IAchB,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,kBAAkB;YAcZ,cAAc;IA2D5B,OAAO,CAAC,uBAAuB;YAcjB,yBAAyB;YAgCzB,qBAAqB;YAsCrB,iBAAiB;IA6B/B;;;;OAIG;YACW,oBAAoB;
|
|
1
|
+
{"version":3,"file":"slack-frontend.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/frontends/slack-frontend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAYxD,KAAK,mBAAmB,GAAG;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE;QACV,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;CACH,CAAC;AAEF,qBAAa,aAAc,YAAW,QAAQ;IAC5C,SAAgB,IAAI,WAAW;IAC/B,OAAO,CAAC,IAAI,CAAsC;IAClD,OAAO,CAAC,GAAG,CAAsB;IAEjC,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,MAAM,CAAgD;IAC9D,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,eAAe,CAAoD;gBAE/D,MAAM,CAAC,EAAE,mBAAmB;IAIxC,KAAK,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;IA6JjC,IAAI,IAAI,IAAI;IAKZ,OAAO,CAAC,QAAQ;IAchB,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,kBAAkB;YAcZ,cAAc;IA2D5B,OAAO,CAAC,uBAAuB;YAcjB,yBAAyB;YAgCzB,qBAAqB;YAsCrB,iBAAiB;IA6B/B;;;;OAIG;YACW,oBAAoB;IA0QlC,OAAO,CAAC,YAAY;CAWrB"}
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
process.env.VISOR_VERSION = '0.1.
|
|
3
|
-
process.env.PROBE_VERSION = '0.6.0-
|
|
4
|
-
process.env.VISOR_COMMIT_SHA = '
|
|
5
|
-
process.env.VISOR_COMMIT_SHORT = '
|
|
2
|
+
process.env.VISOR_VERSION = '0.1.177';
|
|
3
|
+
process.env.PROBE_VERSION = '0.6.0-rc292';
|
|
4
|
+
process.env.VISOR_COMMIT_SHA = '5ceed041c645b4c6f1ed2b2cf327a7f376437656';
|
|
5
|
+
process.env.VISOR_COMMIT_SHORT = '5ceed041';
|
|
6
6
|
/******/ (() => { // webpackBootstrap
|
|
7
7
|
/******/ var __webpack_modules__ = ({
|
|
8
8
|
|
|
@@ -313350,6 +313350,20 @@ class SlackFrontend {
|
|
|
313350
313350
|
if (out && typeof out._rawOutput === 'string' && out._rawOutput.trim().length > 0) {
|
|
313351
313351
|
text = (text || '') + '\n\n' + out._rawOutput.trim();
|
|
313352
313352
|
}
|
|
313353
|
+
// Fallback: if no text was extracted, check for error issues (e.g. timeout)
|
|
313354
|
+
// and post an error message so the user isn't left with silence.
|
|
313355
|
+
if (!text) {
|
|
313356
|
+
const issues = result?.issues || [];
|
|
313357
|
+
const errorIssues = issues.filter((i) => i.severity === 'error' &&
|
|
313358
|
+
(i.ruleId?.startsWith('system/') || i.ruleId?.endsWith('/error')));
|
|
313359
|
+
if (errorIssues.length > 0) {
|
|
313360
|
+
const errorMessages = errorIssues.map((i) => i.message).join('\n');
|
|
313361
|
+
text = `:warning: Something went wrong while processing your request:\n${errorMessages}`;
|
|
313362
|
+
// Prevent maybePostExecutionFailure from double-posting the same error
|
|
313363
|
+
this.errorNotified = true;
|
|
313364
|
+
ctx.logger.warn(`[slack-frontend] posting error fallback for ${checkId}: ${errorIssues.length} system error(s)`);
|
|
313365
|
+
}
|
|
313366
|
+
}
|
|
313353
313367
|
if (!text) {
|
|
313354
313368
|
ctx.logger.info(`[slack-frontend] skip posting AI reply for ${checkId}: no renderable text in check output`);
|
|
313355
313369
|
return;
|
|
@@ -348574,7 +348588,7 @@ async function executeSingleCheck(checkId, context, state, emitEvent, transition
|
|
|
348574
348588
|
workflowInputs,
|
|
348575
348589
|
ai: {
|
|
348576
348590
|
...(checkConfig.ai || {}),
|
|
348577
|
-
timeout: checkConfig.ai?.timeout || 1800000,
|
|
348591
|
+
timeout: checkConfig.timeout || checkConfig.ai?.timeout || 1800000,
|
|
348578
348592
|
debug: !!context.debug,
|
|
348579
348593
|
},
|
|
348580
348594
|
};
|
|
@@ -348667,7 +348681,7 @@ async function executeSingleCheck(checkId, context, state, emitEvent, transition
|
|
|
348667
348681
|
session_id: context.sessionId,
|
|
348668
348682
|
wave: state.wave,
|
|
348669
348683
|
}, async (span) => {
|
|
348670
|
-
const res = await (0, sandbox_routing_1.executeWithSandboxRouting)(checkId, checkConfig, context, prInfo, dependencyResults, checkConfig.ai?.timeout || 1800000, () => provider.execute(prInfo, providerConfig, dependencyResults, executionContext));
|
|
348684
|
+
const res = await (0, sandbox_routing_1.executeWithSandboxRouting)(checkId, checkConfig, context, prInfo, dependencyResults, checkConfig.timeout || checkConfig.ai?.timeout || 1800000, () => provider.execute(prInfo, providerConfig, dependencyResults, executionContext));
|
|
348671
348685
|
// Capture output in span for trace visualization
|
|
348672
348686
|
try {
|
|
348673
348687
|
(0, state_capture_1.captureCheckOutput)(span, res.output);
|
|
@@ -349035,7 +349049,7 @@ async function executeCheckWithForEachItems(checkId, forEachParent, forEachItems
|
|
|
349035
349049
|
workflowInputs,
|
|
349036
349050
|
ai: {
|
|
349037
349051
|
...(checkConfig.ai || {}),
|
|
349038
|
-
timeout: checkConfig.ai?.timeout || 1800000,
|
|
349052
|
+
timeout: checkConfig.timeout || checkConfig.ai?.timeout || 1800000,
|
|
349039
349053
|
debug: !!context.debug,
|
|
349040
349054
|
},
|
|
349041
349055
|
};
|
|
@@ -349115,7 +349129,7 @@ async function executeCheckWithForEachItems(checkId, forEachParent, forEachItems
|
|
|
349115
349129
|
session_id: context.sessionId,
|
|
349116
349130
|
wave: state.wave,
|
|
349117
349131
|
}, async (span) => {
|
|
349118
|
-
const res = await (0, sandbox_routing_1.executeWithSandboxRouting)(checkId, checkConfig, context, prInfo, dependencyResults, checkConfig.ai?.timeout || 1800000, () => provider.execute(prInfo, providerConfig, dependencyResults, executionContext));
|
|
349132
|
+
const res = await (0, sandbox_routing_1.executeWithSandboxRouting)(checkId, checkConfig, context, prInfo, dependencyResults, checkConfig.timeout || checkConfig.ai?.timeout || 1800000, () => provider.execute(prInfo, providerConfig, dependencyResults, executionContext));
|
|
349119
349133
|
try {
|
|
349120
349134
|
(0, state_capture_1.captureCheckOutput)(span, res.output);
|
|
349121
349135
|
}
|
|
@@ -349606,7 +349620,7 @@ async function executeInvocation(item, context, scope, prInfo, dependencyResults
|
|
|
349606
349620
|
__outputHistory: outputHistory,
|
|
349607
349621
|
ai: {
|
|
349608
349622
|
...(stepConfig.ai || {}),
|
|
349609
|
-
timeout: stepConfig.ai?.timeout || 1800000,
|
|
349623
|
+
timeout: stepConfig.timeout || stepConfig.ai?.timeout || 1800000,
|
|
349610
349624
|
debug: !!context.debug,
|
|
349611
349625
|
},
|
|
349612
349626
|
};
|
|
@@ -351493,7 +351507,7 @@ async function executeCheckWithForEachItems(checkId, forEachParent, forEachItems
|
|
|
351493
351507
|
workflowInputs,
|
|
351494
351508
|
ai: {
|
|
351495
351509
|
...(checkConfig.ai || {}),
|
|
351496
|
-
timeout: checkConfig.ai?.timeout || 1800000,
|
|
351510
|
+
timeout: checkConfig.timeout || checkConfig.ai?.timeout || 1800000,
|
|
351497
351511
|
debug: !!context.debug,
|
|
351498
351512
|
},
|
|
351499
351513
|
};
|
|
@@ -351524,16 +351538,17 @@ async function executeCheckWithForEachItems(checkId, forEachParent, forEachItems
|
|
|
351524
351538
|
const conv = slackConv || telegramConv;
|
|
351525
351539
|
if (conv) {
|
|
351526
351540
|
const event = payload?.event;
|
|
351527
|
-
const messageCount = Array.isArray(conv?.messages)
|
|
351528
|
-
? conv.messages.length
|
|
351529
|
-
: 0;
|
|
351541
|
+
const messageCount = Array.isArray(conv?.messages) ? conv.messages.length : 0;
|
|
351530
351542
|
if (context.debug) {
|
|
351531
351543
|
logger_1.logger.info(`[LevelDispatch] Conversation extracted (${conv?.transport || 'unknown'}): ${messageCount} messages`);
|
|
351532
351544
|
}
|
|
351533
351545
|
// Build transport-specific context
|
|
351534
351546
|
const transportCtx = slackConv
|
|
351535
351547
|
? { slack: { event: event || {}, conversation: slackConv } }
|
|
351536
|
-
: {
|
|
351548
|
+
: {
|
|
351549
|
+
telegram: { event: event || {}, conversation: telegramConv },
|
|
351550
|
+
webhook: payload,
|
|
351551
|
+
};
|
|
351537
351552
|
providerConfig.eventContext = {
|
|
351538
351553
|
...providerConfig.eventContext,
|
|
351539
351554
|
...transportCtx,
|
|
@@ -351708,7 +351723,7 @@ async function executeCheckWithForEachItems(checkId, forEachParent, forEachItems
|
|
|
351708
351723
|
session_id: context.sessionId,
|
|
351709
351724
|
wave: state.wave,
|
|
351710
351725
|
}, async (span) => {
|
|
351711
|
-
const res = await (0, sandbox_routing_1.executeWithSandboxRouting)(checkId, checkConfig, context, prInfo, dependencyResults, checkConfig.ai?.timeout || 1800000, () => provider.execute(prInfo, providerConfig, dependencyResults, executionContext));
|
|
351726
|
+
const res = await (0, sandbox_routing_1.executeWithSandboxRouting)(checkId, checkConfig, context, prInfo, dependencyResults, checkConfig.timeout || checkConfig.ai?.timeout || 1800000, () => provider.execute(prInfo, providerConfig, dependencyResults, executionContext));
|
|
351712
351727
|
try {
|
|
351713
351728
|
(0, state_capture_1.captureCheckOutput)(span, res.output);
|
|
351714
351729
|
}
|
|
@@ -352727,7 +352742,7 @@ async function executeSingleCheck(checkId, context, state, emitEvent, transition
|
|
|
352727
352742
|
workflowInputs,
|
|
352728
352743
|
ai: {
|
|
352729
352744
|
...(checkConfig.ai || {}),
|
|
352730
|
-
timeout: checkConfig.ai?.timeout || 1800000,
|
|
352745
|
+
timeout: checkConfig.timeout || checkConfig.ai?.timeout || 1800000,
|
|
352731
352746
|
debug: !!context.debug,
|
|
352732
352747
|
},
|
|
352733
352748
|
};
|
|
@@ -352909,7 +352924,7 @@ async function executeSingleCheck(checkId, context, state, emitEvent, transition
|
|
|
352909
352924
|
session_id: context.sessionId,
|
|
352910
352925
|
wave: state.wave,
|
|
352911
352926
|
}, async (span) => {
|
|
352912
|
-
const res = await (0, sandbox_routing_1.executeWithSandboxRouting)(checkId, checkConfig, context, prInfo, dependencyResults, checkConfig.ai?.timeout || 1800000, () => provider.execute(prInfo, providerConfig, dependencyResults, executionContext));
|
|
352927
|
+
const res = await (0, sandbox_routing_1.executeWithSandboxRouting)(checkId, checkConfig, context, prInfo, dependencyResults, checkConfig.timeout || checkConfig.ai?.timeout || 1800000, () => provider.execute(prInfo, providerConfig, dependencyResults, executionContext));
|
|
352913
352928
|
try {
|
|
352914
352929
|
(0, state_capture_1.captureCheckOutput)(span, res.output);
|
|
352915
352930
|
}
|
|
@@ -372702,10 +372717,26 @@ class WorkspaceManager {
|
|
|
372702
372717
|
await this.deleteLocalBranches(worktreePath);
|
|
372703
372718
|
}
|
|
372704
372719
|
/**
|
|
372705
|
-
* Delete
|
|
372720
|
+
* Delete local branches in a worktree that are safe to remove.
|
|
372721
|
+
* IMPORTANT: Git worktrees share the branch namespace with the main repo
|
|
372722
|
+
* and all other worktrees. We must NOT delete branches that are checked out
|
|
372723
|
+
* in the main working tree or any other worktree — doing so would destroy
|
|
372724
|
+
* the user's work.
|
|
372706
372725
|
*/
|
|
372707
372726
|
async deleteLocalBranches(worktreePath) {
|
|
372708
372727
|
const escapedPath = shellEscape(worktreePath);
|
|
372728
|
+
// First, discover which branches are checked out in ANY worktree (including main).
|
|
372729
|
+
// `git worktree list --porcelain` output contains "branch refs/heads/<name>" lines.
|
|
372730
|
+
const worktreeListResult = await command_executor_1.commandExecutor.execute(`git -C ${escapedPath} worktree list --porcelain`, { timeout: 10000 });
|
|
372731
|
+
const protectedBranches = new Set();
|
|
372732
|
+
if (worktreeListResult.exitCode === 0) {
|
|
372733
|
+
for (const line of worktreeListResult.stdout.split('\n')) {
|
|
372734
|
+
const match = line.match(/^branch refs\/heads\/(.+)$/);
|
|
372735
|
+
if (match) {
|
|
372736
|
+
protectedBranches.add(match[1]);
|
|
372737
|
+
}
|
|
372738
|
+
}
|
|
372739
|
+
}
|
|
372709
372740
|
const listResult = await command_executor_1.commandExecutor.execute(`git -C ${escapedPath} branch --list --format='%(refname:short)'`, { timeout: 10000 });
|
|
372710
372741
|
if (listResult.exitCode !== 0 || !listResult.stdout.trim()) {
|
|
372711
372742
|
return;
|
|
@@ -372716,6 +372747,10 @@ class WorkspaceManager {
|
|
|
372716
372747
|
.map(b => b.trim())
|
|
372717
372748
|
.filter(b => b.length > 0);
|
|
372718
372749
|
for (const branch of branches) {
|
|
372750
|
+
if (protectedBranches.has(branch)) {
|
|
372751
|
+
logger_1.logger.debug(`[Workspace] Skipping branch '${branch}' — checked out in another worktree`);
|
|
372752
|
+
continue;
|
|
372753
|
+
}
|
|
372719
372754
|
const deleteResult = await command_executor_1.commandExecutor.execute(`git -C ${escapedPath} branch -D ${shellEscape(branch)}`, { timeout: 10000 });
|
|
372720
372755
|
if (deleteResult.exitCode === 0) {
|
|
372721
372756
|
logger_1.logger.debug(`[Workspace] Deleted local branch '${branch}' from worktree`);
|
|
@@ -373415,11 +373450,28 @@ class WorktreeManager {
|
|
|
373415
373450
|
await this.deleteLocalBranches(worktreePath);
|
|
373416
373451
|
}
|
|
373417
373452
|
/**
|
|
373418
|
-
* Delete
|
|
373453
|
+
* Delete local branches in a worktree that are safe to remove.
|
|
373419
373454
|
* Worktrees are always used in detached HEAD state, so any local branches
|
|
373420
373455
|
* were unintentionally created and should be cleaned up.
|
|
373456
|
+
* IMPORTANT: Git worktrees share the branch namespace with the main repo
|
|
373457
|
+
* and all other worktrees. We must NOT delete branches that are checked out
|
|
373458
|
+
* in the main working tree or any other worktree — doing so would destroy
|
|
373459
|
+
* the user's work.
|
|
373421
373460
|
*/
|
|
373422
373461
|
async deleteLocalBranches(worktreePath) {
|
|
373462
|
+
// First, discover which branches are checked out in ANY worktree (including main).
|
|
373463
|
+
// `git worktree list --porcelain` output contains "branch refs/heads/<name>" lines.
|
|
373464
|
+
const worktreeListCmd = `git -C ${this.escapeShellArg(worktreePath)} worktree list --porcelain`;
|
|
373465
|
+
const worktreeListResult = await this.executeGitCommand(worktreeListCmd, { timeout: 10000 });
|
|
373466
|
+
const protectedBranches = new Set();
|
|
373467
|
+
if (worktreeListResult.exitCode === 0) {
|
|
373468
|
+
for (const line of worktreeListResult.stdout.split('\n')) {
|
|
373469
|
+
const match = line.match(/^branch refs\/heads\/(.+)$/);
|
|
373470
|
+
if (match) {
|
|
373471
|
+
protectedBranches.add(match[1]);
|
|
373472
|
+
}
|
|
373473
|
+
}
|
|
373474
|
+
}
|
|
373423
373475
|
const listCmd = `git -C ${this.escapeShellArg(worktreePath)} branch --list --format='%(refname:short)'`;
|
|
373424
373476
|
const listResult = await this.executeGitCommand(listCmd, { timeout: 10000 });
|
|
373425
373477
|
if (listResult.exitCode !== 0 || !listResult.stdout.trim()) {
|
|
@@ -373431,6 +373483,10 @@ class WorktreeManager {
|
|
|
373431
373483
|
.map(b => b.trim())
|
|
373432
373484
|
.filter(b => b.length > 0);
|
|
373433
373485
|
for (const branch of branches) {
|
|
373486
|
+
if (protectedBranches.has(branch)) {
|
|
373487
|
+
logger_1.logger.debug(`Skipping branch '${branch}' — checked out in another worktree`);
|
|
373488
|
+
continue;
|
|
373489
|
+
}
|
|
373434
373490
|
const deleteCmd = `git -C ${this.escapeShellArg(worktreePath)} branch -D ${this.escapeShellArg(branch)}`;
|
|
373435
373491
|
const deleteResult = await this.executeGitCommand(deleteCmd, { timeout: 10000 });
|
|
373436
373492
|
if (deleteResult.exitCode === 0) {
|
|
@@ -540249,7 +540305,12 @@ function generateSandboxGlobals(options) {
|
|
|
540249
540305
|
}
|
|
540250
540306
|
return tryParseJSONValue(text);
|
|
540251
540307
|
};
|
|
540252
|
-
|
|
540308
|
+
const tracedFn = traceToolCall(name15, rawMcpFn, tracer, logFn);
|
|
540309
|
+
globals[name15] = tracedFn;
|
|
540310
|
+
const sanitized = name15.replace(/[^a-zA-Z0-9_$]/g, "_");
|
|
540311
|
+
if (sanitized !== name15) {
|
|
540312
|
+
globals[sanitized] = tracedFn;
|
|
540313
|
+
}
|
|
540253
540314
|
}
|
|
540254
540315
|
}
|
|
540255
540316
|
if (llmCall) {
|
|
@@ -540604,9 +540665,17 @@ ${validation.errors.join("\n")}`,
|
|
|
540604
540665
|
"dsl.duration_ms": elapsed,
|
|
540605
540666
|
"dsl.error": e.message?.substring(0, 500)
|
|
540606
540667
|
});
|
|
540668
|
+
let errorMsg = `Execution failed: ${e.message}`;
|
|
540669
|
+
if (e.message && e.message.includes("is not defined")) {
|
|
540670
|
+
const globalNames = Object.keys(toolGlobals).sort();
|
|
540671
|
+
errorMsg += `
|
|
540672
|
+
Available functions: ${globalNames.join(", ")}`;
|
|
540673
|
+
errorMsg += `
|
|
540674
|
+
Note: Tools with hyphens (e.g. "my-tool") are available with underscores: my_tool()`;
|
|
540675
|
+
}
|
|
540607
540676
|
return {
|
|
540608
540677
|
status: "error",
|
|
540609
|
-
error:
|
|
540678
|
+
error: errorMsg,
|
|
540610
540679
|
logs
|
|
540611
540680
|
};
|
|
540612
540681
|
}
|
|
@@ -549923,7 +549992,14 @@ function lineTrimmedMatch(contentLines, searchLines) {
|
|
|
549923
549992
|
}
|
|
549924
549993
|
}
|
|
549925
549994
|
if (allMatch) {
|
|
549926
|
-
const
|
|
549995
|
+
const windowLines = contentLines.slice(i, i + windowSize);
|
|
549996
|
+
const windowMinIndent = getMinIndent(windowLines);
|
|
549997
|
+
const searchMinIndent = getMinIndent(searchLines);
|
|
549998
|
+
const indentDiff = Math.abs(windowMinIndent - searchMinIndent);
|
|
549999
|
+
if (isIndentDiffTooLarge(windowLines, searchLines, indentDiff)) {
|
|
550000
|
+
continue;
|
|
550001
|
+
}
|
|
550002
|
+
const matchedText = windowLines.join("\n");
|
|
549927
550003
|
matches.push(matchedText);
|
|
549928
550004
|
}
|
|
549929
550005
|
}
|
|
@@ -549953,6 +550029,15 @@ function whitespaceNormalizedMatch(content, search2) {
|
|
|
549953
550029
|
actualEnd++;
|
|
549954
550030
|
}
|
|
549955
550031
|
const matchedText = content.substring(originalStart, actualEnd);
|
|
550032
|
+
const matchedLines = matchedText.split("\n");
|
|
550033
|
+
const searchLines = search2.split("\n");
|
|
550034
|
+
const matchMinIndent = getMinIndent(matchedLines);
|
|
550035
|
+
const searchMinIndent = getMinIndent(searchLines);
|
|
550036
|
+
const indentDiff = Math.abs(matchMinIndent - searchMinIndent);
|
|
550037
|
+
if (isIndentDiffTooLarge(matchedLines, searchLines, indentDiff)) {
|
|
550038
|
+
searchStart = idx + 1;
|
|
550039
|
+
continue;
|
|
550040
|
+
}
|
|
549956
550041
|
matches.push(matchedText);
|
|
549957
550042
|
searchStart = idx + 1;
|
|
549958
550043
|
}
|
|
@@ -550004,6 +550089,10 @@ function indentFlexibleMatch(contentLines, searchLines) {
|
|
|
550004
550089
|
}
|
|
550005
550090
|
}
|
|
550006
550091
|
if (allMatch) {
|
|
550092
|
+
const indentDiff = Math.abs(windowMinIndent - searchMinIndent);
|
|
550093
|
+
if (isIndentDiffTooLarge(windowLines, searchLines, indentDiff)) {
|
|
550094
|
+
continue;
|
|
550095
|
+
}
|
|
550007
550096
|
const matchedText = windowLines.join("\n");
|
|
550008
550097
|
matches.push(matchedText);
|
|
550009
550098
|
}
|
|
@@ -550014,6 +550103,14 @@ function indentFlexibleMatch(contentLines, searchLines) {
|
|
|
550014
550103
|
count: matches.length
|
|
550015
550104
|
};
|
|
550016
550105
|
}
|
|
550106
|
+
function isIndentDiffTooLarge(linesA, linesB, indentDiff) {
|
|
550107
|
+
if (indentDiff <= 0) return false;
|
|
550108
|
+
const sampleA = linesA.find((l) => l.trim().length > 0) || "";
|
|
550109
|
+
const sampleB = linesB.find((l) => l.trim().length > 0) || "";
|
|
550110
|
+
const useTabs = sampleA.startsWith(" ") || sampleB.startsWith(" ");
|
|
550111
|
+
const maxAllowedDiff = useTabs ? 1 : 4;
|
|
550112
|
+
return indentDiff > maxAllowedDiff;
|
|
550113
|
+
}
|
|
550017
550114
|
function getMinIndent(lines) {
|
|
550018
550115
|
let min = Infinity;
|
|
550019
550116
|
for (const line of lines) {
|
|
@@ -550088,6 +550185,12 @@ function restoreIndentation(newStr, originalLines) {
|
|
|
550088
550185
|
const targetIndent = detectBaseIndent(originalCode);
|
|
550089
550186
|
const newIndent = detectBaseIndent(newStr);
|
|
550090
550187
|
if (targetIndent !== newIndent) {
|
|
550188
|
+
const indentDiff = Math.abs(targetIndent.length - newIndent.length);
|
|
550189
|
+
const useTabs = targetIndent.includes(" ") || newIndent.includes(" ");
|
|
550190
|
+
const maxAllowedDiff = useTabs ? 1 : 4;
|
|
550191
|
+
if (indentDiff > maxAllowedDiff) {
|
|
550192
|
+
return { result: newStr, modifications };
|
|
550193
|
+
}
|
|
550091
550194
|
const reindented = reindent(newStr, targetIndent);
|
|
550092
550195
|
if (reindented !== newStr) {
|
|
550093
550196
|
modifications.push(`reindented from "${newIndent}" to "${targetIndent}"`);
|
|
@@ -608760,7 +608863,7 @@ module.exports = /*#__PURE__*/JSON.parse('["aaa","aarp","abb","abbott","abbvie",
|
|
|
608760
608863
|
/***/ ((module) => {
|
|
608761
608864
|
|
|
608762
608865
|
"use strict";
|
|
608763
|
-
module.exports = /*#__PURE__*/JSON.parse('{"name":"@probelabs/visor","version":"0.1.
|
|
608866
|
+
module.exports = /*#__PURE__*/JSON.parse('{"name":"@probelabs/visor","version":"0.1.177","main":"dist/index.js","bin":{"visor":"./dist/index.js"},"exports":{".":{"require":"./dist/index.js","import":"./dist/index.js"},"./sdk":{"types":"./dist/sdk/sdk.d.ts","import":"./dist/sdk/sdk.mjs","require":"./dist/sdk/sdk.js"},"./cli":{"require":"./dist/index.js"}},"files":["dist/","defaults/","action.yml","README.md","LICENSE"],"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"scripts":{"build:cli":"ncc build src/index.ts -o dist && cp -r defaults dist/ && cp -r output dist/ && cp -r docs dist/ && cp -r examples dist/ && cp -r src/debug-visualizer/ui dist/debug-visualizer/ && node scripts/inject-version.js && echo \'#!/usr/bin/env node\' | cat - dist/index.js > temp && mv temp dist/index.js && chmod +x dist/index.js","build:sdk":"tsup src/sdk.ts --dts --sourcemap --format esm,cjs --out-dir dist/sdk","build":"./scripts/build-oss.sh","build:ee":"npm run build:cli && npm run build:sdk","test":"jest && npm run test:yaml","test:unit":"jest","prepublishOnly":"npm run build","test:watch":"jest --watch","test:coverage":"jest --coverage","test:ee":"jest --testPathPatterns=\'tests/ee\' --testPathIgnorePatterns=\'/node_modules/\' --no-coverage","test:manual:bash":"RUN_MANUAL_TESTS=true jest tests/manual/bash-config-manual.test.ts","lint":"eslint src tests --ext .ts","lint:fix":"eslint src tests --ext .ts --fix","format":"prettier --write src tests","format:check":"prettier --check src tests","clean":"","clean:traces":"node scripts/clean-traces.js","prebuild":"npm run clean && node scripts/generate-config-schema.js","pretest":"npm run clean:traces && node scripts/generate-config-schema.js && npm run build:cli","pretest:unit":"npm run clean:traces && node scripts/generate-config-schema.js && npm run build:cli","test:with-build":"npm run build:cli && jest","test:yaml":"node dist/index.js test --progress compact","test:yaml:parallel":"node dist/index.js test --progress compact --max-parallel 4","prepare":"husky","pre-commit":"lint-staged","deploy:site":"cd site && npx wrangler pages deploy . --project-name=visor-site --commit-dirty=true","deploy:worker":"npx wrangler deploy","deploy":"npm run deploy:site && npm run deploy:worker","publish:ee":"./scripts/publish-ee.sh","release":"./scripts/release.sh","release:patch":"./scripts/release.sh patch","release:minor":"./scripts/release.sh minor","release:major":"./scripts/release.sh major","release:prerelease":"./scripts/release.sh prerelease","docs:validate":"node scripts/validate-readme-links.js","workshop:setup":"npm install -D reveal-md@6.1.2","workshop:serve":"cd workshop && reveal-md slides.md -w","workshop:export":"reveal-md workshop/slides.md --static workshop/build","workshop:pdf":"reveal-md workshop/slides.md --print workshop/Visor-Workshop.pdf --print-size letter","workshop:pdf:ci":"reveal-md workshop/slides.md --print workshop/Visor-Workshop.pdf --print-size letter --puppeteer-launch-args=\\"--no-sandbox --disable-dev-shm-usage\\"","workshop:pdf:a4":"reveal-md workshop/slides.md --print workshop/Visor-Workshop-A4.pdf --print-size A4","workshop:build":"npm run workshop:export && npm run workshop:pdf","simulate:issue":"TS_NODE_TRANSPILE_ONLY=1 ts-node scripts/simulate-gh-run.ts --event issues --action opened --debug","simulate:comment":"TS_NODE_TRANSPILE_ONLY=1 ts-node scripts/simulate-gh-run.ts --event issue_comment --action created --debug"},"keywords":["code-review","ai","github-action","cli","pr-review","visor"],"author":"Probe Labs","license":"MIT","description":"AI workflow engine for code review, assistants, and automation — orchestrate checks, MCP tools, and AI providers with YAML-driven pipelines","repository":{"type":"git","url":"git+https://github.com/probelabs/visor.git"},"bugs":{"url":"https://github.com/probelabs/visor/issues"},"homepage":"https://github.com/probelabs/visor#readme","dependencies":{"@actions/core":"^1.11.1","@apidevtools/swagger-parser":"^12.1.0","@grammyjs/runner":"^2.0.3","@modelcontextprotocol/sdk":"^1.25.3","@nyariv/sandboxjs":"github:probelabs/SandboxJS#23c4bb611f7d05f3cb8c523917b5f57103e48108","@octokit/action":"^8.0.2","@octokit/auth-app":"^8.1.0","@octokit/core":"^7.0.3","@octokit/rest":"^22.0.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.203.0","@opentelemetry/core":"^1.30.1","@opentelemetry/exporter-logs-otlp-http":"^0.203.0","@opentelemetry/exporter-metrics-otlp-http":"^0.203.0","@opentelemetry/exporter-trace-otlp-grpc":"^0.203.0","@opentelemetry/exporter-trace-otlp-http":"^0.203.0","@opentelemetry/instrumentation":"^0.203.0","@opentelemetry/resources":"^1.30.1","@opentelemetry/sdk-logs":"^0.203.0","@opentelemetry/sdk-metrics":"^1.30.1","@opentelemetry/sdk-node":"^0.203.0","@opentelemetry/sdk-trace-base":"^1.30.1","@opentelemetry/semantic-conventions":"^1.30.1","@probelabs/probe":"^0.6.0-rc292","@types/commander":"^2.12.0","@types/uuid":"^10.0.0","acorn":"^8.16.0","acorn-walk":"^8.3.5","ajv":"^8.17.1","ajv-formats":"^3.0.1","better-sqlite3":"^11.0.0","blessed":"^0.1.81","botbuilder":"^4.23.3","botframework-connector":"^4.23.3","cli-table3":"^0.6.5","commander":"^14.0.0","deepmerge":"^4.3.1","dotenv":"^17.2.3","grammy":"^1.41.1","ignore":"^7.0.5","imapflow":"^1.2.12","js-yaml":"^4.1.0","jsonpath-plus":"^10.4.0","liquidjs":"^10.21.1","mailparser":"^3.9.3","minimatch":"^10.2.2","node-cron":"^3.0.3","nodemailer":"^8.0.1","open":"^9.1.0","resend":"^6.9.3","simple-git":"^3.28.0","uuid":"^11.1.0","ws":"^8.18.3"},"optionalDependencies":{"@anthropic/claude-code-sdk":"npm:null@*","@open-policy-agent/opa-wasm":"^1.10.0","knex":"^3.1.0","mysql2":"^3.11.0","pg":"^8.13.0","tedious":"^19.0.0"},"devDependencies":{"@eslint/js":"^9.34.0","@kie/act-js":"^2.6.2","@kie/mock-github":"^2.0.1","@swc/core":"^1.13.2","@swc/jest":"^0.2.37","@types/better-sqlite3":"^7.6.0","@types/blessed":"^0.1.27","@types/jest":"^30.0.0","@types/js-yaml":"^4.0.9","@types/mailparser":"^3.4.6","@types/node":"^24.3.0","@types/node-cron":"^3.0.11","@types/nodemailer":"^7.0.11","@types/ws":"^8.18.1","@typescript-eslint/eslint-plugin":"^8.42.0","@typescript-eslint/parser":"^8.42.0","@vercel/ncc":"^0.38.4","eslint":"^9.34.0","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","husky":"^9.1.7","jest":"^30.1.3","lint-staged":"^16.1.6","prettier":"^3.6.2","reveal-md":"^6.1.2","ts-json-schema-generator":"^1.5.1","ts-node":"^10.9.2","tsup":"^8.5.0","typescript":"^5.9.2","wrangler":"^3.0.0"},"peerDependenciesMeta":{"@anthropic/claude-code-sdk":{"optional":true}},"directories":{"test":"tests"},"lint-staged":{"src/**/*.{ts,js}":["eslint --fix","prettier --write"],"tests/**/*.{ts,js}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml}":["prettier --write"]}}');
|
|
608764
608867
|
|
|
608765
608868
|
/***/ })
|
|
608766
608869
|
|