@probelabs/visor 0.1.126 → 0.1.127
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/ai-review-service.d.ts +1 -0
- package/dist/ai-review-service.d.ts.map +1 -1
- package/dist/docs/ai-configuration.md +23 -0
- package/dist/docs/workflows.md +30 -1
- package/dist/failure-condition-evaluator.d.ts.map +1 -1
- package/dist/generated/config-schema.d.ts +14 -6
- package/dist/generated/config-schema.d.ts.map +1 -1
- package/dist/generated/config-schema.json +14 -6
- package/dist/index.js +240 -261
- package/dist/liquid-extensions.d.ts.map +1 -1
- package/dist/output/traces/{run-2026-01-31T16-37-22-321Z.ndjson → run-2026-02-01T09-59-08-165Z.ndjson} +84 -84
- package/dist/output/traces/{run-2026-01-31T16-38-06-031Z.ndjson → run-2026-02-01T09-59-52-595Z.ndjson} +1015 -1015
- package/dist/providers/ai-check-provider.d.ts.map +1 -1
- package/dist/providers/command-check-provider.d.ts.map +1 -1
- package/dist/providers/custom-tool-executor.d.ts.map +1 -1
- package/dist/providers/http-client-provider.d.ts.map +1 -1
- package/dist/providers/mcp-check-provider.d.ts.map +1 -1
- package/dist/providers/memory-check-provider.d.ts.map +1 -1
- package/dist/providers/workflow-check-provider.d.ts.map +1 -1
- package/dist/sdk/{check-provider-registry-IYILYY35.mjs → check-provider-registry-CVUONJ5A.mjs} +7 -7
- package/dist/sdk/{chunk-7GUAFV6L.mjs → chunk-BHOKBQPB.mjs} +15 -10
- package/dist/sdk/chunk-BHOKBQPB.mjs.map +1 -0
- package/dist/sdk/{chunk-2CPMMNIX.mjs → chunk-EORMDOZU.mjs} +17 -61
- package/dist/sdk/{chunk-2CPMMNIX.mjs.map → chunk-EORMDOZU.mjs.map} +1 -1
- package/dist/sdk/{chunk-SWEEZ5D5.mjs → chunk-MPS4HVQI.mjs} +11 -77
- package/dist/sdk/chunk-MPS4HVQI.mjs.map +1 -0
- package/dist/sdk/{chunk-PJ7K5UFC.mjs → chunk-TS6BUNAI.mjs} +37 -47
- package/dist/sdk/chunk-TS6BUNAI.mjs.map +1 -0
- package/dist/sdk/{chunk-5LI6T4O3.mjs → chunk-XWJPT5KQ.mjs} +15 -7
- package/dist/sdk/chunk-XWJPT5KQ.mjs.map +1 -0
- package/dist/sdk/{config-5AUYQFHE.mjs → config-DXX64GD3.mjs} +2 -2
- package/dist/sdk/{failure-condition-evaluator-HB35XRLZ.mjs → failure-condition-evaluator-G4HMJPXF.mjs} +3 -3
- package/dist/sdk/{github-frontend-BZ4N3BFZ.mjs → github-frontend-5PCKKHVC.mjs} +3 -3
- package/dist/sdk/{host-4MT3EW2I.mjs → host-H3AWNZ2F.mjs} +2 -2
- package/dist/sdk/{liquid-extensions-DFDEBMUI.mjs → liquid-extensions-I7O7KMHF.mjs} +3 -2
- package/dist/sdk/{routing-7FXPULTO.mjs → routing-QHTGDIXF.mjs} +4 -4
- package/dist/sdk/sdk.d.mts +4 -0
- package/dist/sdk/sdk.d.ts +4 -0
- package/dist/sdk/sdk.js +62 -172
- package/dist/sdk/sdk.js.map +1 -1
- package/dist/sdk/sdk.mjs +10 -10
- package/dist/sdk/{workflow-check-provider-H3CUOLUD.mjs → workflow-check-provider-3IWBAZP7.mjs} +7 -7
- package/dist/state-machine/states/routing.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/traces/{run-2026-01-31T16-37-22-321Z.ndjson → run-2026-02-01T09-59-08-165Z.ndjson} +84 -84
- package/dist/traces/{run-2026-01-31T16-38-06-031Z.ndjson → run-2026-02-01T09-59-52-595Z.ndjson} +1015 -1015
- package/dist/types/config.d.ts +4 -0
- package/dist/types/config.d.ts.map +1 -1
- package/package.json +5 -6
- package/dist/sdk/check-provider-registry-3KI5RKXT.mjs +0 -28
- package/dist/sdk/chunk-5LI6T4O3.mjs.map +0 -1
- package/dist/sdk/chunk-7GUAFV6L.mjs.map +0 -1
- package/dist/sdk/chunk-A4PGHURG.mjs +0 -17667
- package/dist/sdk/chunk-A4PGHURG.mjs.map +0 -1
- package/dist/sdk/chunk-J6EVEXC2.mjs +0 -558
- package/dist/sdk/chunk-J6EVEXC2.mjs.map +0 -1
- package/dist/sdk/chunk-PJ7K5UFC.mjs.map +0 -1
- package/dist/sdk/chunk-PXFIALUH.mjs +0 -1458
- package/dist/sdk/chunk-PXFIALUH.mjs.map +0 -1
- package/dist/sdk/chunk-RTKJXNZS.mjs +0 -3591
- package/dist/sdk/chunk-RTKJXNZS.mjs.map +0 -1
- package/dist/sdk/chunk-SWEEZ5D5.mjs.map +0 -1
- package/dist/sdk/config-6CUVEH7H.mjs +0 -16
- package/dist/sdk/host-NYWXLIFC.mjs +0 -52
- package/dist/sdk/host-NYWXLIFC.mjs.map +0 -1
- package/dist/sdk/routing-6R42GXUO.mjs +0 -24
- package/dist/sdk/routing-6R42GXUO.mjs.map +0 -1
- package/dist/sdk/routing-7FXPULTO.mjs.map +0 -1
- package/dist/sdk/slack-frontend-J442FJWZ.mjs +0 -793
- package/dist/sdk/slack-frontend-J442FJWZ.mjs.map +0 -1
- package/dist/sdk/workflow-check-provider-H3CUOLUD.mjs.map +0 -1
- package/dist/sdk/workflow-check-provider-YUNNF4KC.mjs +0 -28
- package/dist/sdk/workflow-check-provider-YUNNF4KC.mjs.map +0 -1
- package/dist/sdk/workflow-registry-6LZKCWHP.mjs +0 -12
- package/dist/sdk/workflow-registry-6LZKCWHP.mjs.map +0 -1
- /package/dist/sdk/{check-provider-registry-3KI5RKXT.mjs.map → check-provider-registry-CVUONJ5A.mjs.map} +0 -0
- /package/dist/sdk/{check-provider-registry-IYILYY35.mjs.map → config-DXX64GD3.mjs.map} +0 -0
- /package/dist/sdk/{config-5AUYQFHE.mjs.map → failure-condition-evaluator-G4HMJPXF.mjs.map} +0 -0
- /package/dist/sdk/{github-frontend-BZ4N3BFZ.mjs.map → github-frontend-5PCKKHVC.mjs.map} +0 -0
- /package/dist/sdk/{host-4MT3EW2I.mjs.map → host-H3AWNZ2F.mjs.map} +0 -0
- /package/dist/sdk/{config-6CUVEH7H.mjs.map → liquid-extensions-I7O7KMHF.mjs.map} +0 -0
- /package/dist/sdk/{failure-condition-evaluator-HB35XRLZ.mjs.map → routing-QHTGDIXF.mjs.map} +0 -0
- /package/dist/sdk/{liquid-extensions-DFDEBMUI.mjs.map → workflow-check-provider-3IWBAZP7.mjs.map} +0 -0
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.127';
|
|
3
|
+
process.env.PROBE_VERSION = '0.6.0-rc207';
|
|
4
|
+
process.env.VISOR_COMMIT_SHA = 'd4f4b043f6ede6c1a0aabfc6baeb93e2cac5a406';
|
|
5
|
+
process.env.VISOR_COMMIT_SHORT = 'd4f4b04';
|
|
6
6
|
/******/ (() => { // webpackBootstrap
|
|
7
7
|
/******/ var __webpack_modules__ = ({
|
|
8
8
|
|
|
@@ -26213,6 +26213,7 @@ var SandboxExec = __nccwpck_require__(32126);
|
|
|
26213
26213
|
function createEvalContext() {
|
|
26214
26214
|
return {
|
|
26215
26215
|
sandboxFunction,
|
|
26216
|
+
sandboxAsyncFunction,
|
|
26216
26217
|
sandboxedEval,
|
|
26217
26218
|
sandboxedSetTimeout,
|
|
26218
26219
|
sandboxedSetInterval,
|
|
@@ -26231,6 +26232,18 @@ function sandboxFunction(context, ticks) {
|
|
|
26231
26232
|
}, undefined, 'anonymous');
|
|
26232
26233
|
}
|
|
26233
26234
|
}
|
|
26235
|
+
function sandboxAsyncFunction(context, ticks) {
|
|
26236
|
+
return SandboxAsyncFunction;
|
|
26237
|
+
function SandboxAsyncFunction(...params) {
|
|
26238
|
+
const code = params.pop() || '';
|
|
26239
|
+
const parsed = parser.default(code);
|
|
26240
|
+
return executor.createFunctionAsync(params, parsed.tree, ticks || executor.currentTicks.current, {
|
|
26241
|
+
...context,
|
|
26242
|
+
constants: parsed.constants,
|
|
26243
|
+
tree: parsed.tree,
|
|
26244
|
+
}, undefined, 'anonymous');
|
|
26245
|
+
}
|
|
26246
|
+
}
|
|
26234
26247
|
function sandboxedEval(func) {
|
|
26235
26248
|
return sandboxEval;
|
|
26236
26249
|
function sandboxEval(code) {
|
|
@@ -26730,7 +26743,7 @@ addOps(1 /* LispType.Prop */, (exec, done, ticks, a, b, obj, context, scope) =>
|
|
|
26730
26743
|
}
|
|
26731
26744
|
if (prototypeAccess) {
|
|
26732
26745
|
if (isFunction) {
|
|
26733
|
-
if (!['name', 'length', 'constructor'].includes(b) &&
|
|
26746
|
+
if (!['name', 'length', 'constructor'].includes(b) && a.hasOwnProperty(b)) {
|
|
26734
26747
|
const whitelist = context.ctx.prototypeWhitelist.get(a.prototype);
|
|
26735
26748
|
const replace = context.ctx.options.prototypeReplacements.get(a);
|
|
26736
26749
|
if (replace) {
|
|
@@ -26742,7 +26755,7 @@ addOps(1 /* LispType.Prop */, (exec, done, ticks, a, b, obj, context, scope) =>
|
|
|
26742
26755
|
}
|
|
26743
26756
|
}
|
|
26744
26757
|
}
|
|
26745
|
-
|
|
26758
|
+
if (b !== 'constructor') {
|
|
26746
26759
|
let prot = a;
|
|
26747
26760
|
while ((prot = Object.getPrototypeOf(prot))) {
|
|
26748
26761
|
if (prot.hasOwnProperty(b)) {
|
|
@@ -26924,7 +26937,7 @@ addOps(35 /* LispType.GlobalSymbol */, (exec, done, ticks, a, b) => {
|
|
|
26924
26937
|
addOps(7 /* LispType.Number */, (exec, done, ticks, a, b) => done(undefined, Number(b)));
|
|
26925
26938
|
addOps(83 /* LispType.BigInt */, (exec, done, ticks, a, b) => done(undefined, BigInt(b)));
|
|
26926
26939
|
addOps(2 /* LispType.StringIndex */, (exec, done, ticks, a, b, obj, context) => done(undefined, context.constants.strings[parseInt(b)]));
|
|
26927
|
-
addOps(
|
|
26940
|
+
addOps(86 /* LispType.RegexIndex */, (exec, done, ticks, a, b, obj, context) => {
|
|
26928
26941
|
const reg = context.constants.regexes[parseInt(b)];
|
|
26929
26942
|
if (!context.ctx.globalsWhitelist.has(RegExp)) {
|
|
26930
26943
|
throw new utils.SandboxError('Regex not permitted');
|
|
@@ -27049,6 +27062,7 @@ addOps(53 /* LispType.NotEqual */, (exec, done, ticks, a, b) => done(undefined,
|
|
|
27049
27062
|
addOps(31 /* LispType.StrictNotEqual */, (exec, done, ticks, a, b) => done(undefined, a !== b));
|
|
27050
27063
|
addOps(29 /* LispType.And */, (exec, done, ticks, a, b) => done(undefined, a && b));
|
|
27051
27064
|
addOps(30 /* LispType.Or */, (exec, done, ticks, a, b) => done(undefined, a || b));
|
|
27065
|
+
addOps(85 /* LispType.NullishCoalescing */, (exec, done, ticks, a, b) => done(undefined, a ?? b));
|
|
27052
27066
|
addOps(77 /* LispType.BitAnd */, (exec, done, ticks, a, b) => done(undefined, a & b));
|
|
27053
27067
|
addOps(78 /* LispType.BitOr */, (exec, done, ticks, a, b) => done(undefined, a | b));
|
|
27054
27068
|
addOps(33 /* LispType.Plus */, (exec, done, ticks, a, b) => done(undefined, a + b));
|
|
@@ -27120,7 +27134,7 @@ addOps(37 /* LispType.Function */, (exec, done, ticks, a, b, obj, context, scope
|
|
|
27120
27134
|
const isAsync = a.shift();
|
|
27121
27135
|
const name = a.shift();
|
|
27122
27136
|
let func;
|
|
27123
|
-
if (isAsync ===
|
|
27137
|
+
if (isAsync === 89 /* LispType.True */) {
|
|
27124
27138
|
func = createFunctionAsync(a, b, ticks, context, scope, name);
|
|
27125
27139
|
}
|
|
27126
27140
|
else {
|
|
@@ -27146,7 +27160,7 @@ addOps(10 /* LispType.InlineFunction */, (exec, done, ticks, a, b, obj, context,
|
|
|
27146
27160
|
scope = new utils.Scope(scope, {});
|
|
27147
27161
|
}
|
|
27148
27162
|
let func;
|
|
27149
|
-
if (isAsync ===
|
|
27163
|
+
if (isAsync === 89 /* LispType.True */) {
|
|
27150
27164
|
func = createFunctionAsync(a, b, ticks, context, scope, name);
|
|
27151
27165
|
}
|
|
27152
27166
|
else {
|
|
@@ -27225,7 +27239,7 @@ addOps(38 /* LispType.Loop */, (exec, done, ticks, a, b, obj, context, scope) =>
|
|
|
27225
27239
|
done();
|
|
27226
27240
|
}
|
|
27227
27241
|
});
|
|
27228
|
-
addOps(
|
|
27242
|
+
addOps(87 /* LispType.LoopAction */, (exec, done, ticks, a, b, obj, context, scope, bobj, inLoopOrSwitch) => {
|
|
27229
27243
|
if ((inLoopOrSwitch === 'switch' && a === 'continue') || !inLoopOrSwitch) {
|
|
27230
27244
|
throw new utils.SandboxError('Illegal ' + a + ' statement');
|
|
27231
27245
|
}
|
|
@@ -27321,7 +27335,7 @@ addOps(39 /* LispType.Try */, (exec, done, ticks, a, b, obj, context, scope, bob
|
|
|
27321
27335
|
}, ticks, context, finallyBody, [new utils.Scope(scope, {})]);
|
|
27322
27336
|
}, ticks, context, a, [new utils.Scope(scope)], inLoopOrSwitch);
|
|
27323
27337
|
});
|
|
27324
|
-
addOps(
|
|
27338
|
+
addOps(88 /* LispType.Void */, (exec, done) => {
|
|
27325
27339
|
done();
|
|
27326
27340
|
});
|
|
27327
27341
|
addOps(45 /* LispType.New */, (exec, done, ticks, a, b, obj, context) => {
|
|
@@ -27996,14 +28010,14 @@ const expectTypes = {
|
|
|
27996
28010
|
opHigh: /^(\/|\*\*|\*(?!\*)|%)(?!=)/,
|
|
27997
28011
|
op: /^(\+(?!(\+))|-(?!(-)))(?!=)/,
|
|
27998
28012
|
comparitor: /^(<=|>=|<(?!<)|>(?!>)|!==|!=(?!=)|===|==)/,
|
|
27999
|
-
boolOp: /^(
|
|
28013
|
+
boolOp: /^(&&|\|\||\?\?|instanceof(?![\w$])|in(?![\w$]))/,
|
|
28000
28014
|
bitwise: /^(&(?!&)|\|(?!\|)|\^|<<|>>(?!>)|>>>)(?!=)/,
|
|
28001
28015
|
},
|
|
28002
28016
|
next: ['modifier', 'value', 'prop', 'incrementerBefore'],
|
|
28003
28017
|
},
|
|
28004
28018
|
inlineIf: {
|
|
28005
28019
|
types: {
|
|
28006
|
-
inlineIf: /^\?(
|
|
28020
|
+
inlineIf: /^\?(?!\?|\.(?!\d))/,
|
|
28007
28021
|
},
|
|
28008
28022
|
next: ['expEnd'],
|
|
28009
28023
|
},
|
|
@@ -28429,6 +28443,7 @@ setLispType(['incrementerAfter'], (constants, type, part, res, expect, ctx) => {
|
|
|
28429
28443
|
const adderTypes = {
|
|
28430
28444
|
'&&': 29 /* LispType.And */,
|
|
28431
28445
|
'||': 30 /* LispType.Or */,
|
|
28446
|
+
'??': 85 /* LispType.NullishCoalescing */,
|
|
28432
28447
|
instanceof: 62 /* LispType.Instanceof */,
|
|
28433
28448
|
in: 63 /* LispType.In */,
|
|
28434
28449
|
'=': 9 /* LispType.Assign */,
|
|
@@ -28703,7 +28718,7 @@ setLispType(['string', 'literal', 'regex'], (constants, type, part, res, expect,
|
|
|
28703
28718
|
? 2 /* LispType.StringIndex */
|
|
28704
28719
|
: type === 'literal'
|
|
28705
28720
|
? 84 /* LispType.LiteralIndex */
|
|
28706
|
-
:
|
|
28721
|
+
: 86 /* LispType.RegexIndex */,
|
|
28707
28722
|
a: 0 /* LispType.None */,
|
|
28708
28723
|
b: res[1],
|
|
28709
28724
|
}));
|
|
@@ -28729,7 +28744,7 @@ setLispType(['function', 'inlineFunction', 'arrowFunction', 'arrowFunctionSingle
|
|
|
28729
28744
|
const isArrow = type !== 'function' && type !== 'inlineFunction';
|
|
28730
28745
|
const isReturn = isArrow && !res[res.length - 1];
|
|
28731
28746
|
const argPos = isArrow ? 2 : 3;
|
|
28732
|
-
const isAsync = res[1] ?
|
|
28747
|
+
const isAsync = res[1] ? 89 /* LispType.True */ : 0 /* LispType.None */;
|
|
28733
28748
|
const args = res[argPos] ? res[argPos].replace(/\s+/g, '').split(/,/g) : [];
|
|
28734
28749
|
if (!isArrow) {
|
|
28735
28750
|
args.unshift((res[2] || '').trimStart());
|
|
@@ -28756,13 +28771,13 @@ setLispType(['function', 'inlineFunction', 'arrowFunction', 'arrowFunctionSingle
|
|
|
28756
28771
|
const iteratorRegex = /^((let|var|const)\s+)?\s*([a-zA-Z$_][a-zA-Z\d$_]*)\s+(in|of)(?![\w$])/;
|
|
28757
28772
|
setLispType(['for', 'do', 'while'], (constants, type, part, res, expect, ctx) => {
|
|
28758
28773
|
let i = 0;
|
|
28759
|
-
let startStep =
|
|
28774
|
+
let startStep = 89 /* LispType.True */;
|
|
28760
28775
|
let startInternal = [];
|
|
28761
28776
|
let getIterator = 0 /* LispType.None */;
|
|
28762
28777
|
let beforeStep = 0 /* LispType.None */;
|
|
28763
|
-
let checkFirst =
|
|
28778
|
+
let checkFirst = 89 /* LispType.True */;
|
|
28764
28779
|
let condition;
|
|
28765
|
-
let step =
|
|
28780
|
+
let step = 89 /* LispType.True */;
|
|
28766
28781
|
let body;
|
|
28767
28782
|
switch (type) {
|
|
28768
28783
|
case 'while': {
|
|
@@ -28847,7 +28862,7 @@ setLispType(['block'], (constants, type, part, res, expect, ctx) => {
|
|
|
28847
28862
|
});
|
|
28848
28863
|
setLispType(['loopAction'], (constants, type, part, res, expect, ctx) => {
|
|
28849
28864
|
ctx.lispTree = createLisp({
|
|
28850
|
-
op:
|
|
28865
|
+
op: 87 /* LispType.LoopAction */,
|
|
28851
28866
|
a: res[1],
|
|
28852
28867
|
b: 0 /* LispType.None */,
|
|
28853
28868
|
});
|
|
@@ -28887,7 +28902,7 @@ setLispType(['try'], (constants, type, part, res, expect, ctx) => {
|
|
|
28887
28902
|
setLispType(['void', 'await'], (constants, type, part, res, expect, ctx) => {
|
|
28888
28903
|
const extract = restOfExp(constants, part.substring(res[0].length), [/^([^\s.?\w$]|\?[^.])/]);
|
|
28889
28904
|
ctx.lispTree = lispify(constants, part.substring(res[0].length + extract.length), expectTypes[expect].next, createLisp({
|
|
28890
|
-
op: type === 'void' ?
|
|
28905
|
+
op: type === 'void' ? 88 /* LispType.Void */ : 44 /* LispType.Await */,
|
|
28891
28906
|
a: lispify(constants, extract),
|
|
28892
28907
|
b: 0 /* LispType.None */,
|
|
28893
28908
|
}));
|
|
@@ -29337,6 +29352,10 @@ exports.testMultiple = testMultiple;
|
|
|
29337
29352
|
"use strict";
|
|
29338
29353
|
|
|
29339
29354
|
|
|
29355
|
+
// Reusable AsyncFunction constructor reference
|
|
29356
|
+
const AsyncFunction = Object.getPrototypeOf(async function () { }).constructor;
|
|
29357
|
+
const GeneratorFunction = Object.getPrototypeOf(function* () { }).constructor;
|
|
29358
|
+
const AsyncGeneratorFunction = Object.getPrototypeOf(async function* () { }).constructor;
|
|
29340
29359
|
const SandboxGlobal = function SandboxGlobal(globals) {
|
|
29341
29360
|
if (globals === globalThis)
|
|
29342
29361
|
return globalThis;
|
|
@@ -29378,7 +29397,11 @@ function createExecContext(sandbox, executionTree, evalContext) {
|
|
|
29378
29397
|
const execContext = new ExecContext(sandbox.context, executionTree.constants, executionTree.tree, new Set(), new WeakMap(), new WeakMap(), sandbox.setSubscriptions, sandbox.changeSubscriptions, evals, (fn) => sandbox.sandboxFunctions.set(fn, execContext), !!evalContext, evalContext);
|
|
29379
29398
|
if (evalContext) {
|
|
29380
29399
|
const func = evalContext.sandboxFunction(execContext);
|
|
29400
|
+
const asyncFunc = evalContext.sandboxAsyncFunction(execContext);
|
|
29381
29401
|
evals.set(Function, func);
|
|
29402
|
+
evals.set(AsyncFunction, asyncFunc);
|
|
29403
|
+
evals.set(GeneratorFunction, func);
|
|
29404
|
+
evals.set(AsyncGeneratorFunction, asyncFunc);
|
|
29382
29405
|
evals.set(eval, evalContext.sandboxedEval(func));
|
|
29383
29406
|
evals.set(setTimeout, evalContext.sandboxedSetTimeout(func));
|
|
29384
29407
|
evals.set(setInterval, evalContext.sandboxedSetInterval(func));
|
|
@@ -29593,7 +29616,7 @@ function isLisp(item) {
|
|
|
29593
29616
|
return (Array.isArray(item) &&
|
|
29594
29617
|
typeof item[0] === 'number' &&
|
|
29595
29618
|
item[0] !== 0 /* LispType.None */ &&
|
|
29596
|
-
item[0] !==
|
|
29619
|
+
item[0] !== 89 /* LispType.True */);
|
|
29597
29620
|
}
|
|
29598
29621
|
class Prop {
|
|
29599
29622
|
constructor(context, prop, isConst = false, isGlobal = false, isVariable = false) {
|
|
@@ -29614,9 +29637,12 @@ class Prop {
|
|
|
29614
29637
|
}
|
|
29615
29638
|
}
|
|
29616
29639
|
|
|
29640
|
+
exports.AsyncFunction = AsyncFunction;
|
|
29641
|
+
exports.AsyncGeneratorFunction = AsyncGeneratorFunction;
|
|
29617
29642
|
exports.CodeString = CodeString;
|
|
29618
29643
|
exports.ExecContext = ExecContext;
|
|
29619
29644
|
exports.FunctionScope = FunctionScope;
|
|
29645
|
+
exports.GeneratorFunction = GeneratorFunction;
|
|
29620
29646
|
exports.LocalScope = LocalScope;
|
|
29621
29647
|
exports.Prop = Prop;
|
|
29622
29648
|
exports.SandboxError = SandboxError;
|
|
@@ -146412,6 +146438,9 @@ ${'='.repeat(60)}
|
|
|
146412
146438
|
// Use systemPrompt (native in rc168+) with fallback to customPrompt for backward compat
|
|
146413
146439
|
systemPrompt: systemPrompt || this.config.systemPrompt || this.config.customPrompt,
|
|
146414
146440
|
};
|
|
146441
|
+
if (this.config.maxIterations !== undefined) {
|
|
146442
|
+
options.maxIterations = this.config.maxIterations;
|
|
146443
|
+
}
|
|
146415
146444
|
// Enable tracing in debug mode for better diagnostics
|
|
146416
146445
|
// This uses SimpleTelemetry for lightweight tracing
|
|
146417
146446
|
let traceFilePath = '';
|
|
@@ -146955,12 +146984,15 @@ ${'='.repeat(60)}
|
|
|
146955
146984
|
catch (parseErr) {
|
|
146956
146985
|
const errMsg = parseErr instanceof Error ? parseErr.message : String(parseErr);
|
|
146957
146986
|
log(`🔍 Direct JSON parsing failed: ${errMsg}`);
|
|
146958
|
-
// If the response
|
|
146987
|
+
// If the response indicates refusal, return it as plain text output
|
|
146959
146988
|
if (response.toLowerCase().includes('i cannot') ||
|
|
146960
146989
|
response.toLowerCase().includes('unable to')) {
|
|
146961
|
-
console.error('🚫 AI refused to analyze - returning
|
|
146990
|
+
console.error('🚫 AI refused to analyze - returning refusal as output');
|
|
146991
|
+
const trimmed = response.trim();
|
|
146962
146992
|
return {
|
|
146963
146993
|
issues: [],
|
|
146994
|
+
output: trimmed ? { text: trimmed } : {},
|
|
146995
|
+
debug: debugInfo,
|
|
146964
146996
|
};
|
|
146965
146997
|
}
|
|
146966
146998
|
// Not valid JSON - treat entire response as text output
|
|
@@ -152070,87 +152102,15 @@ class FailureConditionEvaluator {
|
|
|
152070
152102
|
if (!this.sandbox) {
|
|
152071
152103
|
this.sandbox = this.createSecureSandbox();
|
|
152072
152104
|
}
|
|
152073
|
-
let
|
|
152074
|
-
// Primary path: SandboxJS
|
|
152105
|
+
let exec;
|
|
152075
152106
|
try {
|
|
152076
|
-
|
|
152077
|
-
try {
|
|
152078
|
-
exec = this.sandbox.compile(`return (${raw});`);
|
|
152079
|
-
}
|
|
152080
|
-
catch {
|
|
152081
|
-
const normalizedExpr = normalize(condition);
|
|
152082
|
-
exec = this.sandbox.compile(`return (${normalizedExpr});`);
|
|
152083
|
-
}
|
|
152084
|
-
result = exec(scope).run();
|
|
152107
|
+
exec = this.sandbox.compile(`return (${raw});`);
|
|
152085
152108
|
}
|
|
152086
|
-
catch
|
|
152087
|
-
|
|
152088
|
-
|
|
152089
|
-
try {
|
|
152090
|
-
const vm = __nccwpck_require__(30714);
|
|
152091
|
-
const ctx = {
|
|
152092
|
-
// Scope vars
|
|
152093
|
-
output,
|
|
152094
|
-
outputs,
|
|
152095
|
-
debug: debugData,
|
|
152096
|
-
memory: memoryAccessor,
|
|
152097
|
-
issues,
|
|
152098
|
-
metadata,
|
|
152099
|
-
criticalIssues,
|
|
152100
|
-
errorIssues,
|
|
152101
|
-
totalIssues,
|
|
152102
|
-
warningIssues,
|
|
152103
|
-
infoIssues,
|
|
152104
|
-
checkName,
|
|
152105
|
-
schema,
|
|
152106
|
-
group,
|
|
152107
|
-
branch,
|
|
152108
|
-
baseBranch,
|
|
152109
|
-
filesChanged,
|
|
152110
|
-
filesCount,
|
|
152111
|
-
event,
|
|
152112
|
-
env,
|
|
152113
|
-
inputs,
|
|
152114
|
-
// Helpers
|
|
152115
|
-
contains,
|
|
152116
|
-
startsWith,
|
|
152117
|
-
endsWith,
|
|
152118
|
-
length,
|
|
152119
|
-
always,
|
|
152120
|
-
success,
|
|
152121
|
-
failure,
|
|
152122
|
-
log,
|
|
152123
|
-
hasIssue,
|
|
152124
|
-
countIssues,
|
|
152125
|
-
hasFileMatching,
|
|
152126
|
-
hasIssueWith,
|
|
152127
|
-
hasFileWith,
|
|
152128
|
-
hasMinPermission,
|
|
152129
|
-
isOwner,
|
|
152130
|
-
isMember,
|
|
152131
|
-
isCollaborator,
|
|
152132
|
-
isContributor,
|
|
152133
|
-
isFirstTimer,
|
|
152134
|
-
Math,
|
|
152135
|
-
JSON,
|
|
152136
|
-
};
|
|
152137
|
-
const context = vm.createContext(ctx);
|
|
152138
|
-
// Try raw first; if it throws due to semicolons/newlines, normalize
|
|
152139
|
-
let code = `(${raw})`;
|
|
152140
|
-
try {
|
|
152141
|
-
result = new vm.Script(code).runInContext(context, { timeout: 50 });
|
|
152142
|
-
}
|
|
152143
|
-
catch {
|
|
152144
|
-
const normalizedExpr = normalize(condition);
|
|
152145
|
-
code = `(${normalizedExpr})`;
|
|
152146
|
-
result = new vm.Script(code).runInContext(context, { timeout: 50 });
|
|
152147
|
-
}
|
|
152148
|
-
}
|
|
152149
|
-
catch (vmErr) {
|
|
152150
|
-
console.error('❌ Failed to evaluate expression:', condition, vmErr);
|
|
152151
|
-
throw vmErr;
|
|
152152
|
-
}
|
|
152109
|
+
catch {
|
|
152110
|
+
const normalizedExpr = normalize(condition);
|
|
152111
|
+
exec = this.sandbox.compile(`return (${normalizedExpr});`);
|
|
152153
152112
|
}
|
|
152113
|
+
const result = exec(scope).run();
|
|
152154
152114
|
try {
|
|
152155
152115
|
(__nccwpck_require__(86999).logger).debug(` fail_if: result=${Boolean(result)}`);
|
|
152156
152116
|
}
|
|
@@ -154120,6 +154080,10 @@ exports.configSchema = {
|
|
|
154120
154080
|
type: 'string',
|
|
154121
154081
|
description: 'Probe promptType for this check (underscore style)',
|
|
154122
154082
|
},
|
|
154083
|
+
ai_max_iterations: {
|
|
154084
|
+
type: 'number',
|
|
154085
|
+
description: 'Maximum tool iterations for ProbeAgent (underscore style)',
|
|
154086
|
+
},
|
|
154123
154087
|
ai_system_prompt: {
|
|
154124
154088
|
type: 'string',
|
|
154125
154089
|
description: 'System prompt for this check (underscore style)',
|
|
@@ -154403,7 +154367,7 @@ exports.configSchema = {
|
|
|
154403
154367
|
description: 'Arguments/inputs for the workflow',
|
|
154404
154368
|
},
|
|
154405
154369
|
overrides: {
|
|
154406
|
-
$ref: '#/definitions/Record%3Cstring%2CPartial%3Cinterface-src_types_config.ts-
|
|
154370
|
+
$ref: '#/definitions/Record%3Cstring%2CPartial%3Cinterface-src_types_config.ts-11434-23754-src_types_config.ts-0-41453%3E%3E',
|
|
154407
154371
|
description: 'Override specific step configurations in the workflow',
|
|
154408
154372
|
},
|
|
154409
154373
|
output_mapping: {
|
|
@@ -154419,7 +154383,7 @@ exports.configSchema = {
|
|
|
154419
154383
|
description: 'Config file path - alternative to workflow ID (loads a Visor config file as workflow)',
|
|
154420
154384
|
},
|
|
154421
154385
|
workflow_overrides: {
|
|
154422
|
-
$ref: '#/definitions/Record%3Cstring%2CPartial%3Cinterface-src_types_config.ts-
|
|
154386
|
+
$ref: '#/definitions/Record%3Cstring%2CPartial%3Cinterface-src_types_config.ts-11434-23754-src_types_config.ts-0-41453%3E%3E',
|
|
154423
154387
|
description: 'Alias for overrides - workflow step overrides (backward compatibility)',
|
|
154424
154388
|
},
|
|
154425
154389
|
ref: {
|
|
@@ -154551,6 +154515,10 @@ exports.configSchema = {
|
|
|
154551
154515
|
type: 'number',
|
|
154552
154516
|
description: 'Request timeout in milliseconds',
|
|
154553
154517
|
},
|
|
154518
|
+
max_iterations: {
|
|
154519
|
+
type: 'number',
|
|
154520
|
+
description: 'Maximum tool iterations for ProbeAgent',
|
|
154521
|
+
},
|
|
154554
154522
|
debug: {
|
|
154555
154523
|
type: 'boolean',
|
|
154556
154524
|
description: 'Enable debug mode',
|
|
@@ -155049,7 +155017,7 @@ exports.configSchema = {
|
|
|
155049
155017
|
description: 'Custom output name (defaults to workflow name)',
|
|
155050
155018
|
},
|
|
155051
155019
|
overrides: {
|
|
155052
|
-
$ref: '#/definitions/Record%3Cstring%2CPartial%3Cinterface-src_types_config.ts-
|
|
155020
|
+
$ref: '#/definitions/Record%3Cstring%2CPartial%3Cinterface-src_types_config.ts-11434-23754-src_types_config.ts-0-41453%3E%3E',
|
|
155053
155021
|
description: 'Step overrides',
|
|
155054
155022
|
},
|
|
155055
155023
|
output_mapping: {
|
|
@@ -155064,13 +155032,13 @@ exports.configSchema = {
|
|
|
155064
155032
|
'^x-': {},
|
|
155065
155033
|
},
|
|
155066
155034
|
},
|
|
155067
|
-
'Record<string,Partial<interface-src_types_config.ts-
|
|
155035
|
+
'Record<string,Partial<interface-src_types_config.ts-11434-23754-src_types_config.ts-0-41453>>': {
|
|
155068
155036
|
type: 'object',
|
|
155069
155037
|
additionalProperties: {
|
|
155070
|
-
$ref: '#/definitions/Partial%3Cinterface-src_types_config.ts-
|
|
155038
|
+
$ref: '#/definitions/Partial%3Cinterface-src_types_config.ts-11434-23754-src_types_config.ts-0-41453%3E',
|
|
155071
155039
|
},
|
|
155072
155040
|
},
|
|
155073
|
-
'Partial<interface-src_types_config.ts-
|
|
155041
|
+
'Partial<interface-src_types_config.ts-11434-23754-src_types_config.ts-0-41453>': {
|
|
155074
155042
|
type: 'object',
|
|
155075
155043
|
additionalProperties: false,
|
|
155076
155044
|
},
|
|
@@ -158679,6 +158647,7 @@ const promises_1 = __importDefault(__nccwpck_require__(91943));
|
|
|
158679
158647
|
const path_1 = __importDefault(__nccwpck_require__(16928));
|
|
158680
158648
|
const author_permissions_1 = __nccwpck_require__(53859);
|
|
158681
158649
|
const memory_store_1 = __nccwpck_require__(18216);
|
|
158650
|
+
const sandbox_1 = __nccwpck_require__(12630);
|
|
158682
158651
|
/**
|
|
158683
158652
|
* Sanitize label strings to only allow [A-Za-z0-9:/\- ] characters (including spaces and hyphens)
|
|
158684
158653
|
* @param value - Label value to sanitize
|
|
@@ -158956,20 +158925,24 @@ function configureLiquidWithExtensions(liquid) {
|
|
|
158956
158925
|
const name = typeof varName === 'string' && varName.trim() ? varName.trim() : 'i';
|
|
158957
158926
|
const body = String(expr || '');
|
|
158958
158927
|
try {
|
|
158959
|
-
//
|
|
158960
|
-
const
|
|
158928
|
+
// Use sandbox for secure evaluation
|
|
158929
|
+
const sandbox = (0, sandbox_1.createSecureSandbox)();
|
|
158961
158930
|
const out = [];
|
|
158962
158931
|
for (let idx = 0; idx < arr.length; idx++) {
|
|
158963
|
-
const
|
|
158932
|
+
const item = arr[idx];
|
|
158964
158933
|
let ok = false;
|
|
158965
158934
|
try {
|
|
158966
|
-
|
|
158935
|
+
const scope = { [name]: item, idx, arr };
|
|
158936
|
+
ok = !!(0, sandbox_1.compileAndRun)(sandbox, body, scope, {
|
|
158937
|
+
injectLog: false,
|
|
158938
|
+
wrapFunction: true,
|
|
158939
|
+
});
|
|
158967
158940
|
}
|
|
158968
158941
|
catch {
|
|
158969
158942
|
ok = false;
|
|
158970
158943
|
}
|
|
158971
158944
|
if (ok)
|
|
158972
|
-
out.push(
|
|
158945
|
+
out.push(item);
|
|
158973
158946
|
}
|
|
158974
158947
|
return out;
|
|
158975
158948
|
}
|
|
@@ -162099,6 +162072,10 @@ class AICheckProvider extends check_provider_interface_1.CheckProvider {
|
|
|
162099
162072
|
if (aiAny.timeout !== undefined) {
|
|
162100
162073
|
aiConfig.timeout = aiAny.timeout;
|
|
162101
162074
|
}
|
|
162075
|
+
if (aiAny.max_iterations !== undefined || aiAny.maxIterations !== undefined) {
|
|
162076
|
+
const raw = aiAny.max_iterations ?? aiAny.maxIterations;
|
|
162077
|
+
aiConfig.maxIterations = Number(raw);
|
|
162078
|
+
}
|
|
162102
162079
|
if (aiAny.provider !== undefined) {
|
|
162103
162080
|
aiConfig.provider = aiAny.provider;
|
|
162104
162081
|
}
|
|
@@ -162260,6 +162237,9 @@ class AICheckProvider extends check_provider_interface_1.CheckProvider {
|
|
|
162260
162237
|
if (config.ai_provider !== undefined) {
|
|
162261
162238
|
aiConfig.provider = config.ai_provider;
|
|
162262
162239
|
}
|
|
162240
|
+
if (config.ai_max_iterations !== undefined && aiConfig.maxIterations === undefined) {
|
|
162241
|
+
aiConfig.maxIterations = config.ai_max_iterations;
|
|
162242
|
+
}
|
|
162263
162243
|
// Get custom prompt from config - REQUIRED, no fallbacks
|
|
162264
162244
|
const customPrompt = config.prompt;
|
|
162265
162245
|
if (!customPrompt) {
|
|
@@ -162671,6 +162651,7 @@ class AICheckProvider extends check_provider_interface_1.CheckProvider {
|
|
|
162671
162651
|
'ai.model',
|
|
162672
162652
|
'ai.apiKey',
|
|
162673
162653
|
'ai.timeout',
|
|
162654
|
+
'ai.max_iterations',
|
|
162674
162655
|
'ai.mcpServers',
|
|
162675
162656
|
'ai.enableDelegate',
|
|
162676
162657
|
// legacy persona/prompt keys supported in config
|
|
@@ -162678,6 +162659,7 @@ class AICheckProvider extends check_provider_interface_1.CheckProvider {
|
|
|
162678
162659
|
'ai_prompt_type',
|
|
162679
162660
|
'ai_custom_prompt',
|
|
162680
162661
|
'ai_system_prompt',
|
|
162662
|
+
'ai_max_iterations',
|
|
162681
162663
|
// new provider resilience and tools toggles
|
|
162682
162664
|
'ai.retry',
|
|
162683
162665
|
'ai.fallback',
|
|
@@ -163532,43 +163514,10 @@ async function safeImport(moduleName) {
|
|
|
163532
163514
|
/***/ }),
|
|
163533
163515
|
|
|
163534
163516
|
/***/ 11878:
|
|
163535
|
-
/***/ (
|
|
163517
|
+
/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
|
|
163536
163518
|
|
|
163537
163519
|
"use strict";
|
|
163538
163520
|
|
|
163539
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
163540
|
-
if (k2 === undefined) k2 = k;
|
|
163541
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
163542
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
163543
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
163544
|
-
}
|
|
163545
|
-
Object.defineProperty(o, k2, desc);
|
|
163546
|
-
}) : (function(o, m, k, k2) {
|
|
163547
|
-
if (k2 === undefined) k2 = k;
|
|
163548
|
-
o[k2] = m[k];
|
|
163549
|
-
}));
|
|
163550
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
163551
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
163552
|
-
}) : function(o, v) {
|
|
163553
|
-
o["default"] = v;
|
|
163554
|
-
});
|
|
163555
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
163556
|
-
var ownKeys = function(o) {
|
|
163557
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
163558
|
-
var ar = [];
|
|
163559
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
163560
|
-
return ar;
|
|
163561
|
-
};
|
|
163562
|
-
return ownKeys(o);
|
|
163563
|
-
};
|
|
163564
|
-
return function (mod) {
|
|
163565
|
-
if (mod && mod.__esModule) return mod;
|
|
163566
|
-
var result = {};
|
|
163567
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
163568
|
-
__setModuleDefault(result, mod);
|
|
163569
|
-
return result;
|
|
163570
|
-
};
|
|
163571
|
-
})();
|
|
163572
163521
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
163573
163522
|
exports.CommandCheckProvider = void 0;
|
|
163574
163523
|
const check_provider_interface_1 = __nccwpck_require__(14131);
|
|
@@ -164050,29 +163999,6 @@ ${bodyWithReturn}
|
|
|
164050
163999
|
else {
|
|
164051
164000
|
finalOutput = (0, sandbox_1.compileAndRun)(this.sandbox, code, { scope: jsContext }, { injectLog: false, wrapFunction: false });
|
|
164052
164001
|
}
|
|
164053
|
-
// Fallback: if sandbox could not preserve primitives (e.g., booleans lost),
|
|
164054
|
-
// attempt to re-evaluate the transform in a locked Node VM context to get plain JS values.
|
|
164055
|
-
try {
|
|
164056
|
-
if (finalOutput &&
|
|
164057
|
-
typeof finalOutput === 'object' &&
|
|
164058
|
-
!Array.isArray(finalOutput) &&
|
|
164059
|
-
(finalOutput.error === undefined ||
|
|
164060
|
-
finalOutput.issues === undefined)) {
|
|
164061
|
-
const vm = await Promise.resolve().then(() => __importStar(__nccwpck_require__(30714)));
|
|
164062
|
-
const vmContext = vm.createContext({ scope: jsContext });
|
|
164063
|
-
const vmCode = `
|
|
164064
|
-
(function(){
|
|
164065
|
-
const output = scope.output; const pr = scope.pr; const files = scope.files; const outputs = scope.outputs; const env = scope.env; const log = ()=>{};
|
|
164066
|
-
${bodyWithReturn}
|
|
164067
|
-
})()
|
|
164068
|
-
`;
|
|
164069
|
-
const vmResult = vm.runInContext(vmCode, vmContext, { timeout: 1000 });
|
|
164070
|
-
if (vmResult && typeof vmResult === 'object') {
|
|
164071
|
-
finalOutput = vmResult;
|
|
164072
|
-
}
|
|
164073
|
-
}
|
|
164074
|
-
}
|
|
164075
|
-
catch { }
|
|
164076
164002
|
// Create a plain JSON snapshot of the transform result to avoid proxy/getter surprises
|
|
164077
164003
|
// Prefer JSON stringify inside the sandbox realm (so it knows how to serialize its own objects),
|
|
164078
164004
|
// then fall back to host-side JSON clone and finally to a shallow copy of own enumerable properties.
|
|
@@ -165386,9 +165312,7 @@ class CustomToolExecutor {
|
|
|
165386
165312
|
* Apply JavaScript transform to output
|
|
165387
165313
|
*/
|
|
165388
165314
|
async applyJavaScriptTransform(transformJs, output, context) {
|
|
165389
|
-
|
|
165390
|
-
this.sandbox = (0, sandbox_1.createSecureSandbox)();
|
|
165391
|
-
}
|
|
165315
|
+
this.sandbox = (0, sandbox_1.createSecureSandbox)();
|
|
165392
165316
|
const code = `
|
|
165393
165317
|
const output = ${JSON.stringify(output)};
|
|
165394
165318
|
const context = ${JSON.stringify(context)};
|
|
@@ -166683,9 +166607,7 @@ class HttpClientProvider extends check_provider_interface_1.CheckProvider {
|
|
|
166683
166607
|
// Apply JavaScript transformation if specified
|
|
166684
166608
|
if (transformJs) {
|
|
166685
166609
|
try {
|
|
166686
|
-
|
|
166687
|
-
this.sandbox = this.createSecureSandbox();
|
|
166688
|
-
}
|
|
166610
|
+
this.sandbox = this.createSecureSandbox();
|
|
166689
166611
|
// Create scope for JavaScript transform (scope, not context)
|
|
166690
166612
|
const jsScope = {
|
|
166691
166613
|
output: data,
|
|
@@ -168115,9 +168037,7 @@ class McpCheckProvider extends check_provider_interface_1.CheckProvider {
|
|
|
168115
168037
|
// Apply JavaScript transform using secure sandbox
|
|
168116
168038
|
if (cfg.transform_js) {
|
|
168117
168039
|
try {
|
|
168118
|
-
|
|
168119
|
-
this.sandbox = this.createSecureSandbox();
|
|
168120
|
-
}
|
|
168040
|
+
this.sandbox = this.createSecureSandbox();
|
|
168121
168041
|
// Build scope with all context variables
|
|
168122
168042
|
const scope = {
|
|
168123
168043
|
output: finalOutput,
|
|
@@ -169234,9 +169154,7 @@ class MemoryCheckProvider extends check_provider_interface_1.CheckProvider {
|
|
|
169234
169154
|
* Evaluate JavaScript expression in context using SandboxJS for secure execution
|
|
169235
169155
|
*/
|
|
169236
169156
|
evaluateJavaScript(expression, context) {
|
|
169237
|
-
|
|
169238
|
-
this.sandbox = this.createSecureSandbox();
|
|
169239
|
-
}
|
|
169157
|
+
this.sandbox = this.createSecureSandbox();
|
|
169240
169158
|
try {
|
|
169241
169159
|
const scope = { ...context };
|
|
169242
169160
|
return (0, sandbox_1.compileAndRun)(this.sandbox, `return (${expression});`, scope, {
|
|
@@ -170046,7 +169964,6 @@ class WorkflowCheckProvider extends check_provider_interface_1.CheckProvider {
|
|
|
170046
169964
|
if (!workflow.outputs) {
|
|
170047
169965
|
return outputs;
|
|
170048
169966
|
}
|
|
170049
|
-
const sandbox = (0, sandbox_1.createSecureSandbox)();
|
|
170050
169967
|
// Flatten GroupedCheckResults (group -> CheckResult[]) to a simple map
|
|
170051
169968
|
// of checkName -> { output, issues } so workflow-level value_js can
|
|
170052
169969
|
// reference outputs["security"].issues, etc.
|
|
@@ -170070,6 +169987,7 @@ class WorkflowCheckProvider extends check_provider_interface_1.CheckProvider {
|
|
|
170070
169987
|
for (const output of workflow.outputs) {
|
|
170071
169988
|
if (output.value_js) {
|
|
170072
169989
|
// JavaScript expression
|
|
169990
|
+
const sandbox = (0, sandbox_1.createSecureSandbox)();
|
|
170073
169991
|
outputs[output.name] = (0, sandbox_1.compileAndRun)(sandbox, output.value_js, {
|
|
170074
169992
|
inputs,
|
|
170075
169993
|
outputs: outputsMap,
|
|
@@ -181395,18 +181313,10 @@ async function evaluateRunJs(runJs, checkId, checkConfig, result, context, _stat
|
|
|
181395
181313
|
const evalResult = (0, sandbox_1.compileAndRun)(sandbox, code, { scope: scopeObj }, { injectLog: false, wrapFunction: false });
|
|
181396
181314
|
return Array.isArray(evalResult) ? evalResult.filter(Boolean) : [];
|
|
181397
181315
|
}
|
|
181398
|
-
catch (
|
|
181399
|
-
|
|
181400
|
-
|
|
181401
|
-
|
|
181402
|
-
const context = vm.createContext({ scope: scopeObj, console: { log: () => { } } });
|
|
181403
|
-
const src = `(() => { ${runJs}\n })()`;
|
|
181404
|
-
const val = new vm.Script(src).runInContext(context, { timeout: 100 });
|
|
181405
|
-
return Array.isArray(val) ? val.filter((x) => typeof x === 'string' && x) : [];
|
|
181406
|
-
}
|
|
181407
|
-
catch (_vmErr) {
|
|
181408
|
-
return [];
|
|
181409
|
-
}
|
|
181316
|
+
catch (error) {
|
|
181317
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
181318
|
+
logger_1.logger.error(`[Routing] Error in run_js sandbox evaluation: ${msg}`);
|
|
181319
|
+
return [];
|
|
181410
181320
|
}
|
|
181411
181321
|
}
|
|
181412
181322
|
catch (error) {
|
|
@@ -181525,28 +181435,10 @@ async function evaluateGoto(gotoJs, gotoStatic, checkId, checkConfig, result, co
|
|
|
181525
181435
|
return evalResult;
|
|
181526
181436
|
}
|
|
181527
181437
|
}
|
|
181528
|
-
catch (
|
|
181529
|
-
|
|
181530
|
-
|
|
181531
|
-
|
|
181532
|
-
const contextObj = {
|
|
181533
|
-
step: scopeObj.step,
|
|
181534
|
-
outputs: scopeObj.outputs,
|
|
181535
|
-
outputs_history: scopeObj.outputs_history,
|
|
181536
|
-
output: scopeObj.output,
|
|
181537
|
-
memory: scopeObj.memory,
|
|
181538
|
-
event: scopeObj.event,
|
|
181539
|
-
forEach: scopeObj.forEach,
|
|
181540
|
-
};
|
|
181541
|
-
const vmctx = vm.createContext(contextObj);
|
|
181542
|
-
const src = `(() => { ${gotoJs}\n })()`;
|
|
181543
|
-
const res = new vm.Script(src).runInContext(vmctx, { timeout: 100 });
|
|
181544
|
-
if (typeof res === 'string' && res)
|
|
181545
|
-
return res;
|
|
181546
|
-
}
|
|
181547
|
-
catch (_vmErr) {
|
|
181548
|
-
// ignore; fall through to static goto
|
|
181549
|
-
}
|
|
181438
|
+
catch (error) {
|
|
181439
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
181440
|
+
logger_1.logger.error(`[Routing] Error in goto_js sandbox evaluation: ${msg}`);
|
|
181441
|
+
// Fall through to static goto
|
|
181550
181442
|
}
|
|
181551
181443
|
}
|
|
181552
181444
|
catch (error) {
|
|
@@ -181635,31 +181527,10 @@ async function evaluateTransitions(transitions, checkId, checkConfig, result, co
|
|
|
181635
181527
|
try {
|
|
181636
181528
|
matched = (0, sandbox_1.compileAndRun)(sandbox, code, { scope: scopeObj }, { injectLog: false, wrapFunction: false });
|
|
181637
181529
|
}
|
|
181638
|
-
catch (
|
|
181639
|
-
|
|
181640
|
-
|
|
181641
|
-
|
|
181642
|
-
const helpersFns = {
|
|
181643
|
-
any: (arr, pred) => Array.isArray(arr) && arr.some(pred),
|
|
181644
|
-
all: (arr, pred) => Array.isArray(arr) && arr.every(pred),
|
|
181645
|
-
none: (arr, pred) => Array.isArray(arr) && !arr.some(pred),
|
|
181646
|
-
count: (arr, pred) => Array.isArray(arr) ? arr.filter(pred).length : 0,
|
|
181647
|
-
};
|
|
181648
|
-
const context = vm.createContext({
|
|
181649
|
-
step: scopeObj.step,
|
|
181650
|
-
outputs: scopeObj.outputs,
|
|
181651
|
-
outputs_history: scopeObj.outputs_history,
|
|
181652
|
-
output: scopeObj.output,
|
|
181653
|
-
memory: scopeObj.memory,
|
|
181654
|
-
event: scopeObj.event,
|
|
181655
|
-
...helpersFns,
|
|
181656
|
-
});
|
|
181657
|
-
const res = new vm.Script(`(${rule.when})`).runInContext(context, { timeout: 50 });
|
|
181658
|
-
matched = !!res;
|
|
181659
|
-
}
|
|
181660
|
-
catch (_vmErr) {
|
|
181661
|
-
matched = false;
|
|
181662
|
-
}
|
|
181530
|
+
catch (error) {
|
|
181531
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
181532
|
+
logger_1.logger.warn(`[Routing] Error evaluating transition 'when' clause: ${msg}`);
|
|
181533
|
+
matched = false;
|
|
181663
181534
|
}
|
|
181664
181535
|
if (matched) {
|
|
181665
181536
|
if (rule.to === null)
|
|
@@ -185508,6 +185379,7 @@ const environment_1 = __nccwpck_require__(13228);
|
|
|
185508
185379
|
const mocks_1 = __nccwpck_require__(20490);
|
|
185509
185380
|
const fixture_1 = __nccwpck_require__(29716);
|
|
185510
185381
|
const validator_1 = __nccwpck_require__(8075);
|
|
185382
|
+
const sandbox_1 = __nccwpck_require__(12630);
|
|
185511
185383
|
function ensureTestEnvDefaults() {
|
|
185512
185384
|
if (!process.env.VISOR_TEST_MODE)
|
|
185513
185385
|
process.env.VISOR_TEST_MODE = 'true';
|
|
@@ -185937,15 +185809,13 @@ class VisorTestRunner {
|
|
|
185937
185809
|
continue;
|
|
185938
185810
|
try {
|
|
185939
185811
|
if (outputDef.value_js) {
|
|
185940
|
-
// Evaluate JavaScript expression
|
|
185941
|
-
const
|
|
185942
|
-
|
|
185943
|
-
|
|
185944
|
-
|
|
185945
|
-
|
|
185946
|
-
|
|
185947
|
-
`);
|
|
185948
|
-
computed[outputDef.name] = fn(steps, outputs, results);
|
|
185812
|
+
// Evaluate JavaScript expression using sandbox
|
|
185813
|
+
const sandbox = (0, sandbox_1.createSecureSandbox)();
|
|
185814
|
+
const scope = { steps, outputs, results };
|
|
185815
|
+
computed[outputDef.name] = (0, sandbox_1.compileAndRun)(sandbox, outputDef.value_js, scope, {
|
|
185816
|
+
injectLog: false,
|
|
185817
|
+
wrapFunction: true,
|
|
185818
|
+
});
|
|
185949
185819
|
}
|
|
185950
185820
|
else if (outputDef.value) {
|
|
185951
185821
|
// Evaluate Liquid template with extended filters and tags
|
|
@@ -187165,6 +187035,9 @@ const schema = {
|
|
|
187165
187035
|
include: {
|
|
187166
187036
|
oneOf: [{ type: 'string' }, { type: 'array', items: { type: 'string' } }],
|
|
187167
187037
|
},
|
|
187038
|
+
imports: {
|
|
187039
|
+
oneOf: [{ type: 'string' }, { type: 'array', items: { type: 'string' } }],
|
|
187040
|
+
},
|
|
187168
187041
|
// Optional: co-located config (ignored by tests DSL validator)
|
|
187169
187042
|
steps: { type: 'object' },
|
|
187170
187043
|
checks: { type: 'object' },
|
|
@@ -193702,14 +193575,6 @@ module.exports = require("node:util");
|
|
|
193702
193575
|
|
|
193703
193576
|
/***/ }),
|
|
193704
193577
|
|
|
193705
|
-
/***/ 30714:
|
|
193706
|
-
/***/ ((module) => {
|
|
193707
|
-
|
|
193708
|
-
"use strict";
|
|
193709
|
-
module.exports = require("node:vm");
|
|
193710
|
-
|
|
193711
|
-
/***/ }),
|
|
193712
|
-
|
|
193713
193578
|
/***/ 70857:
|
|
193714
193579
|
/***/ ((module) => {
|
|
193715
193580
|
|
|
@@ -248694,6 +248559,22 @@ function detectUnrecognizedToolCall(xmlString, validTools) {
|
|
|
248694
248559
|
return toolName;
|
|
248695
248560
|
}
|
|
248696
248561
|
}
|
|
248562
|
+
const allToolNames = [.../* @__PURE__ */ new Set([...knownToolNames, ...validTools])];
|
|
248563
|
+
for (const toolName of allToolNames) {
|
|
248564
|
+
const escapedToolName = toolName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
248565
|
+
const wrapperPatterns = [
|
|
248566
|
+
new RegExp(`<tool_name>\\s*${escapedToolName}\\s*</tool_name>`, "i"),
|
|
248567
|
+
new RegExp(`<function>\\s*${escapedToolName}\\s*</function>`, "i"),
|
|
248568
|
+
new RegExp(`<name>\\s*${escapedToolName}\\s*</name>`, "i"),
|
|
248569
|
+
// Also check for tool name immediately after api_call or call opening tag
|
|
248570
|
+
new RegExp(`<(?:api_call|call)[^>]*>[\\s\\S]*?<tool_name>\\s*${escapedToolName}`, "i")
|
|
248571
|
+
];
|
|
248572
|
+
for (const pattern of wrapperPatterns) {
|
|
248573
|
+
if (pattern.test(xmlString)) {
|
|
248574
|
+
return `wrapped_tool:${toolName}`;
|
|
248575
|
+
}
|
|
248576
|
+
}
|
|
248577
|
+
}
|
|
248697
248578
|
return null;
|
|
248698
248579
|
}
|
|
248699
248580
|
function parseTargets(targets) {
|
|
@@ -305968,6 +305849,27 @@ var ProbeAgent_exports = {};
|
|
|
305968
305849
|
__export(ProbeAgent_exports, {
|
|
305969
305850
|
ProbeAgent: () => ProbeAgent
|
|
305970
305851
|
});
|
|
305852
|
+
function extractWrappedToolName(wrappedToolError) {
|
|
305853
|
+
if (!wrappedToolError || typeof wrappedToolError !== "string") {
|
|
305854
|
+
return "unknown";
|
|
305855
|
+
}
|
|
305856
|
+
const colonIndex = wrappedToolError.indexOf(":");
|
|
305857
|
+
return colonIndex !== -1 ? wrappedToolError.slice(colonIndex + 1) : "unknown";
|
|
305858
|
+
}
|
|
305859
|
+
function isWrappedToolError(error2) {
|
|
305860
|
+
return error2 && typeof error2 === "string" && error2.startsWith("wrapped_tool:");
|
|
305861
|
+
}
|
|
305862
|
+
function createWrappedToolErrorMessage(wrappedToolName) {
|
|
305863
|
+
return `Your response contained an incorrectly formatted tool call (${wrappedToolName} wrapped in XML tags). This cannot be used.
|
|
305864
|
+
|
|
305865
|
+
Please use the CORRECT format:
|
|
305866
|
+
|
|
305867
|
+
<${wrappedToolName}>
|
|
305868
|
+
Your content here
|
|
305869
|
+
</${wrappedToolName}>
|
|
305870
|
+
|
|
305871
|
+
Do NOT wrap in other tags like <api_call>, <tool_name>, <function>, etc.`;
|
|
305872
|
+
}
|
|
305971
305873
|
var import_dotenv, import_anthropic2, import_openai2, import_google2, import_ai3, import_crypto8, import_events4, import_fs11, import_promises6, import_path13, MAX_TOOL_ITERATIONS, MAX_HISTORY_MESSAGES, MAX_IMAGE_FILE_SIZE, ProbeAgent;
|
|
305972
305874
|
var init_ProbeAgent = __esm({
|
|
305973
305875
|
"src/agent/ProbeAgent.js"() {
|
|
@@ -307978,6 +307880,9 @@ You are working with a repository located at: ${searchDirectory}
|
|
|
307978
307880
|
console.log(`[DEBUG] Schema provided, using extended iteration limit: ${maxIterations} (base: ${baseMaxIterations})`);
|
|
307979
307881
|
}
|
|
307980
307882
|
}
|
|
307883
|
+
let lastFormatErrorType = null;
|
|
307884
|
+
let sameFormatErrorCount = 0;
|
|
307885
|
+
const MAX_REPEATED_FORMAT_ERRORS = 3;
|
|
307981
307886
|
while (currentIteration < maxIterations && !completionAttempted) {
|
|
307982
307887
|
currentIteration++;
|
|
307983
307888
|
if (this.cancelled) throw new Error("Request was cancelled by the user");
|
|
@@ -308176,7 +308081,22 @@ You are working with a repository located at: ${searchDirectory}
|
|
|
308176
308081
|
(msg) => msg.role === "assistant" && msg.content && !(this.mcpBridge ? parseHybridXmlToolCall(msg.content, validTools, this.mcpBridge) : parseXmlToolCallWithThinking(msg.content, validTools))
|
|
308177
308082
|
);
|
|
308178
308083
|
if (lastAssistantMessage) {
|
|
308179
|
-
|
|
308084
|
+
const prevContent = lastAssistantMessage.content;
|
|
308085
|
+
const wrappedToolError = detectUnrecognizedToolCall(prevContent, validTools);
|
|
308086
|
+
if (isWrappedToolError(wrappedToolError)) {
|
|
308087
|
+
const wrappedToolName = extractWrappedToolName(wrappedToolError);
|
|
308088
|
+
if (this.debug) {
|
|
308089
|
+
console.log(`[DEBUG] Previous response contains wrapped tool '${wrappedToolName}' - rejecting for __PREVIOUS_RESPONSE__`);
|
|
308090
|
+
}
|
|
308091
|
+
currentMessages.push({ role: "assistant", content: assistantResponseContent });
|
|
308092
|
+
currentMessages.push({
|
|
308093
|
+
role: "user",
|
|
308094
|
+
content: createWrappedToolErrorMessage(wrappedToolName)
|
|
308095
|
+
});
|
|
308096
|
+
completionAttempted = false;
|
|
308097
|
+
continue;
|
|
308098
|
+
}
|
|
308099
|
+
finalResult = prevContent;
|
|
308180
308100
|
if (this.debug) console.log(`[DEBUG] Using previous response as completion: ${finalResult.substring(0, 100)}...`);
|
|
308181
308101
|
} else {
|
|
308182
308102
|
finalResult = "Error: No previous response found to use as completion.";
|
|
@@ -308447,7 +308367,33 @@ ${errorXml}
|
|
|
308447
308367
|
currentMessages.push({ role: "assistant", content: assistantResponseContent });
|
|
308448
308368
|
const unrecognizedTool = detectUnrecognizedToolCall(assistantResponseContent, validTools);
|
|
308449
308369
|
let reminderContent;
|
|
308450
|
-
if (unrecognizedTool) {
|
|
308370
|
+
if (isWrappedToolError(unrecognizedTool)) {
|
|
308371
|
+
const wrappedToolName = extractWrappedToolName(unrecognizedTool);
|
|
308372
|
+
if (this.debug) {
|
|
308373
|
+
console.log(`[DEBUG] Detected wrapped tool '${wrappedToolName}' in assistant response - wrong XML format.`);
|
|
308374
|
+
}
|
|
308375
|
+
const toolError = new ParameterError(
|
|
308376
|
+
`Tool '${wrappedToolName}' found but in WRONG FORMAT - do not wrap tools in other XML tags.`,
|
|
308377
|
+
{
|
|
308378
|
+
suggestion: `Use the tool tag DIRECTLY without any wrapper:
|
|
308379
|
+
|
|
308380
|
+
CORRECT FORMAT:
|
|
308381
|
+
<${wrappedToolName}>
|
|
308382
|
+
<param>value</param>
|
|
308383
|
+
</${wrappedToolName}>
|
|
308384
|
+
|
|
308385
|
+
WRONG (what you did - do not wrap in other tags):
|
|
308386
|
+
<api_call><tool_name>${wrappedToolName}</tool_name>...</api_call>
|
|
308387
|
+
<function>${wrappedToolName}</function>
|
|
308388
|
+
<call name="${wrappedToolName}">...</call>
|
|
308389
|
+
|
|
308390
|
+
Remove ALL wrapper tags and use <${wrappedToolName}> directly as the outermost tag.`
|
|
308391
|
+
}
|
|
308392
|
+
);
|
|
308393
|
+
reminderContent = `<tool_result>
|
|
308394
|
+
${formatErrorForAI(toolError)}
|
|
308395
|
+
</tool_result>`;
|
|
308396
|
+
} else if (unrecognizedTool) {
|
|
308451
308397
|
if (this.debug) {
|
|
308452
308398
|
console.log(`[DEBUG] Detected unrecognized tool '${unrecognizedTool}' in assistant response.`);
|
|
308453
308399
|
}
|
|
@@ -308458,6 +308404,20 @@ ${errorXml}
|
|
|
308458
308404
|
${formatErrorForAI(toolError)}
|
|
308459
308405
|
</tool_result>`;
|
|
308460
308406
|
} else {
|
|
308407
|
+
if (currentIteration >= maxIterations) {
|
|
308408
|
+
let cleanedResponse = assistantResponseContent;
|
|
308409
|
+
cleanedResponse = cleanedResponse.replace(/<thinking>[\s\S]*?<\/thinking>/gi, "").trim();
|
|
308410
|
+
cleanedResponse = cleanedResponse.replace(/<thinking>[\s\S]*$/gi, "").trim();
|
|
308411
|
+
const hasSubstantialContent = cleanedResponse.length > 50 && !cleanedResponse.includes("<api_call>") && !cleanedResponse.includes("<tool_name>") && !cleanedResponse.includes("<function>");
|
|
308412
|
+
if (hasSubstantialContent) {
|
|
308413
|
+
if (this.debug) {
|
|
308414
|
+
console.log(`[DEBUG] Max iterations reached - accepting AI response as final answer (${cleanedResponse.length} chars)`);
|
|
308415
|
+
}
|
|
308416
|
+
finalResult = cleanedResponse;
|
|
308417
|
+
completionAttempted = true;
|
|
308418
|
+
break;
|
|
308419
|
+
}
|
|
308420
|
+
}
|
|
308461
308421
|
reminderContent = `Please use one of the available tools to help answer the question, or use attempt_completion if you have enough information to provide a final answer.
|
|
308462
308422
|
|
|
308463
308423
|
Remember: Use proper XML format with BOTH opening and closing tags:
|
|
@@ -308487,6 +308447,25 @@ Note: <attempt_complete></attempt_complete> reuses your PREVIOUS assistant messa
|
|
|
308487
308447
|
console.log(`[DEBUG] No tool call detected in assistant response. Prompting for tool use.`);
|
|
308488
308448
|
}
|
|
308489
308449
|
}
|
|
308450
|
+
if (unrecognizedTool) {
|
|
308451
|
+
const isWrapped = isWrappedToolError(unrecognizedTool);
|
|
308452
|
+
const errorCategory = isWrapped ? "wrapped_tool" : unrecognizedTool;
|
|
308453
|
+
if (errorCategory === lastFormatErrorType) {
|
|
308454
|
+
sameFormatErrorCount++;
|
|
308455
|
+
if (sameFormatErrorCount >= MAX_REPEATED_FORMAT_ERRORS) {
|
|
308456
|
+
const errorDesc = isWrapped ? "wrapped tool format" : unrecognizedTool;
|
|
308457
|
+
console.error(`[ERROR] Format error category '${errorCategory}' repeated ${sameFormatErrorCount} times. Breaking loop early to prevent infinite iteration.`);
|
|
308458
|
+
finalResult = `Error: Unable to complete request. The AI model repeatedly used incorrect tool call format (${errorDesc}). Please try rephrasing your question or using a different model.`;
|
|
308459
|
+
break;
|
|
308460
|
+
}
|
|
308461
|
+
} else {
|
|
308462
|
+
lastFormatErrorType = errorCategory;
|
|
308463
|
+
sameFormatErrorCount = 1;
|
|
308464
|
+
}
|
|
308465
|
+
} else {
|
|
308466
|
+
lastFormatErrorType = null;
|
|
308467
|
+
sameFormatErrorCount = 0;
|
|
308468
|
+
}
|
|
308490
308469
|
}
|
|
308491
308470
|
if (currentMessages.length > MAX_HISTORY_MESSAGES) {
|
|
308492
308471
|
const messagesBefore = currentMessages.length;
|
|
@@ -345065,7 +345044,7 @@ module.exports = /*#__PURE__*/JSON.parse('{"100":"Continue","101":"Switching Pro
|
|
|
345065
345044
|
/***/ ((module) => {
|
|
345066
345045
|
|
|
345067
345046
|
"use strict";
|
|
345068
|
-
module.exports = /*#__PURE__*/JSON.parse('{"name":"@probelabs/visor","version":"0.1.
|
|
345047
|
+
module.exports = /*#__PURE__*/JSON.parse('{"name":"@probelabs/visor","version":"0.1.127","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":"npm run build:cli && npm run build:sdk","test":"jest && npm run test:yaml","prepublishOnly":"npm run build","test:watch":"jest --watch","test:coverage":"jest --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":"","prebuild":"npm run clean && node scripts/generate-config-schema.js","pretest":"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","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-powered code review tool for GitHub Pull Requests - CLI and GitHub Action","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","@modelcontextprotocol/sdk":"^1.25.3","@nyariv/sandboxjs":"github:probelabs/SandboxJS#f1c13b8eee98734a8ea024061eada4aa9a9ff2e9","@octokit/action":"^8.0.2","@octokit/auth-app":"^8.1.0","@octokit/core":"^7.0.3","@octokit/rest":"^22.0.0","@probelabs/probe":"^0.6.0-rc207","@types/commander":"^2.12.0","@types/uuid":"^10.0.0","ajv":"^8.17.1","ajv-formats":"^3.0.1","blessed":"^0.1.81","cli-table3":"^0.6.5","commander":"^14.0.0","dotenv":"^17.2.3","ignore":"^7.0.5","js-yaml":"^4.1.0","liquidjs":"^10.21.1","node-cron":"^3.0.3","open":"^9.1.0","simple-git":"^3.28.0","uuid":"^11.1.0","ws":"^8.18.3"},"optionalDependencies":{"@anthropic/claude-code-sdk":"npm:null@*","@opentelemetry/api":"^1.9.0","@opentelemetry/core":"^1.30.1","@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-metrics":"^1.30.1","@opentelemetry/sdk-node":"^0.203.0","@opentelemetry/sdk-trace-base":"^1.30.1","@opentelemetry/semantic-conventions":"^1.30.1"},"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/blessed":"^0.1.27","@types/jest":"^30.0.0","@types/js-yaml":"^4.0.9","@types/node":"^24.3.0","@types/node-cron":"^3.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"]}}');
|
|
345069
345048
|
|
|
345070
345049
|
/***/ })
|
|
345071
345050
|
|