@probelabs/visor 0.1.159 → 0.1.160
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/defaults/assistant.yaml +143 -0
- package/defaults/skills/code-explorer.yaml +41 -0
- package/dist/defaults/assistant.yaml +143 -0
- package/dist/defaults/skills/code-explorer.yaml +41 -0
- package/dist/index.js +174 -24
- package/dist/output/traces/{run-2026-03-05T15-45-37-714Z.ndjson → run-2026-03-05T18-38-19-897Z.ndjson} +84 -84
- package/dist/output/traces/{run-2026-03-05T15-46-23-118Z.ndjson → run-2026-03-05T18-39-04-213Z.ndjson} +1915 -1877
- package/dist/providers/workflow-check-provider.d.ts.map +1 -1
- package/dist/sdk/{check-provider-registry-UVLGKORU.mjs → check-provider-registry-KSXUR6EX.mjs} +5 -5
- package/dist/sdk/{check-provider-registry-74VLAETF.mjs → check-provider-registry-YKW7KIYX.mjs} +5 -5
- package/dist/sdk/{chunk-5N33URMM.mjs → chunk-2LL6GIEU.mjs} +3 -3
- package/dist/sdk/{chunk-PSZI5NZL.mjs → chunk-5YC7JCOE.mjs} +2 -2
- package/dist/sdk/{chunk-IVTSD7ZW.mjs → chunk-BIURECPI.mjs} +111 -22
- package/dist/sdk/{chunk-AW3IHBCI.mjs.map → chunk-BIURECPI.mjs.map} +1 -1
- package/dist/sdk/{chunk-AW3IHBCI.mjs → chunk-CBCL664N.mjs} +111 -22
- package/dist/sdk/{chunk-IVTSD7ZW.mjs.map → chunk-CBCL664N.mjs.map} +1 -1
- package/dist/sdk/{chunk-PZONH3RK.mjs → chunk-CYIKOFJZ.mjs} +3 -3
- package/dist/sdk/chunk-CYIKOFJZ.mjs.map +1 -0
- package/dist/sdk/chunk-HB2PBNBH.mjs +1502 -0
- package/dist/sdk/chunk-HB2PBNBH.mjs.map +1 -0
- package/dist/sdk/chunk-HT3EFZ75.mjs +739 -0
- package/dist/sdk/chunk-HT3EFZ75.mjs.map +1 -0
- package/dist/sdk/chunk-ZQ7T4YX7.mjs +443 -0
- package/dist/sdk/{chunk-PZONH3RK.mjs.map → chunk-ZQ7T4YX7.mjs.map} +1 -1
- package/dist/sdk/{failure-condition-evaluator-LQ5NUFZN.mjs → failure-condition-evaluator-3Q45T5EW.mjs} +3 -3
- package/dist/sdk/failure-condition-evaluator-MX6RHBVS.mjs +17 -0
- package/dist/sdk/{github-frontend-YSRVB5FS.mjs → github-frontend-4FQRZSJN.mjs} +3 -3
- package/dist/sdk/github-frontend-SZBGCH43.mjs +1368 -0
- package/dist/sdk/github-frontend-SZBGCH43.mjs.map +1 -0
- package/dist/sdk/{host-YG6LPL6H.mjs → host-FB2HG74L.mjs} +2 -2
- package/dist/sdk/host-YZA5S2U2.mjs +63 -0
- package/dist/sdk/host-YZA5S2U2.mjs.map +1 -0
- package/dist/sdk/{routing-ZJSROSUU.mjs → routing-GGZBWOLZ.mjs} +4 -4
- package/dist/sdk/routing-WPBWIPF4.mjs +25 -0
- package/dist/sdk/{schedule-tool-2GSWLIWA.mjs → schedule-tool-2UDBXPLN.mjs} +5 -5
- package/dist/sdk/{schedule-tool-QCJWLYS3.mjs → schedule-tool-7GDLFKEV.mjs} +5 -5
- package/dist/sdk/{schedule-tool-handler-HWHHAHJD.mjs → schedule-tool-handler-7RWPVVKD.mjs} +5 -5
- package/dist/sdk/{schedule-tool-handler-K2LO33KU.mjs → schedule-tool-handler-QAM5ORVM.mjs} +5 -5
- package/dist/sdk/sdk.js +98 -9
- package/dist/sdk/sdk.js.map +1 -1
- package/dist/sdk/sdk.mjs +4 -4
- package/dist/sdk/{trace-helpers-23KC3NGK.mjs → trace-helpers-AXJZLLWE.mjs} +2 -2
- package/dist/sdk/trace-helpers-W572V66T.mjs +25 -0
- package/dist/sdk/trace-helpers-W572V66T.mjs.map +1 -0
- package/dist/sdk/{workflow-check-provider-DHNWJKYK.mjs → workflow-check-provider-FREHQYRZ.mjs} +5 -5
- package/dist/sdk/workflow-check-provider-FREHQYRZ.mjs.map +1 -0
- package/dist/sdk/{workflow-check-provider-OUREVWAI.mjs → workflow-check-provider-QSFEPL6Z.mjs} +5 -5
- package/dist/sdk/workflow-check-provider-QSFEPL6Z.mjs.map +1 -0
- package/dist/traces/{run-2026-03-05T15-45-37-714Z.ndjson → run-2026-03-05T18-38-19-897Z.ndjson} +84 -84
- package/dist/traces/{run-2026-03-05T15-46-23-118Z.ndjson → run-2026-03-05T18-39-04-213Z.ndjson} +1915 -1877
- package/package.json +2 -2
- /package/dist/sdk/{check-provider-registry-74VLAETF.mjs.map → check-provider-registry-KSXUR6EX.mjs.map} +0 -0
- /package/dist/sdk/{check-provider-registry-UVLGKORU.mjs.map → check-provider-registry-YKW7KIYX.mjs.map} +0 -0
- /package/dist/sdk/{chunk-5N33URMM.mjs.map → chunk-2LL6GIEU.mjs.map} +0 -0
- /package/dist/sdk/{chunk-PSZI5NZL.mjs.map → chunk-5YC7JCOE.mjs.map} +0 -0
- /package/dist/sdk/{failure-condition-evaluator-LQ5NUFZN.mjs.map → failure-condition-evaluator-3Q45T5EW.mjs.map} +0 -0
- /package/dist/sdk/{routing-ZJSROSUU.mjs.map → failure-condition-evaluator-MX6RHBVS.mjs.map} +0 -0
- /package/dist/sdk/{github-frontend-YSRVB5FS.mjs.map → github-frontend-4FQRZSJN.mjs.map} +0 -0
- /package/dist/sdk/{host-YG6LPL6H.mjs.map → host-FB2HG74L.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-2GSWLIWA.mjs.map → routing-GGZBWOLZ.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-QCJWLYS3.mjs.map → routing-WPBWIPF4.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-handler-HWHHAHJD.mjs.map → schedule-tool-2UDBXPLN.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-handler-K2LO33KU.mjs.map → schedule-tool-7GDLFKEV.mjs.map} +0 -0
- /package/dist/sdk/{trace-helpers-23KC3NGK.mjs.map → schedule-tool-handler-7RWPVVKD.mjs.map} +0 -0
- /package/dist/sdk/{workflow-check-provider-DHNWJKYK.mjs.map → schedule-tool-handler-QAM5ORVM.mjs.map} +0 -0
- /package/dist/sdk/{workflow-check-provider-OUREVWAI.mjs.map → trace-helpers-AXJZLLWE.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.160';
|
|
3
|
+
process.env.PROBE_VERSION = '0.6.0-rc275';
|
|
4
|
+
process.env.VISOR_COMMIT_SHA = '9e7322acd7e3cc1f894977a15731383084320de7';
|
|
5
|
+
process.env.VISOR_COMMIT_SHORT = '9e7322acd';
|
|
6
6
|
/******/ (() => { // webpackBootstrap
|
|
7
7
|
/******/ var __webpack_modules__ = ({
|
|
8
8
|
|
|
@@ -189455,27 +189455,141 @@ class WorkflowCheckProvider extends check_provider_interface_1.CheckProvider {
|
|
|
189455
189455
|
process.cwd();
|
|
189456
189456
|
// Create a Liquid engine for loadConfig that supports {% readfile %} with basePath
|
|
189457
189457
|
const loadConfigLiquid = (0, liquid_extensions_1.createExtendedLiquid)();
|
|
189458
|
+
// Deep merge utility for extends support: objects merge recursively, arrays/primitives override
|
|
189459
|
+
const deepMerge = (base, override) => {
|
|
189460
|
+
if (!base ||
|
|
189461
|
+
!override ||
|
|
189462
|
+
typeof base !== 'object' ||
|
|
189463
|
+
typeof override !== 'object' ||
|
|
189464
|
+
Array.isArray(base) ||
|
|
189465
|
+
Array.isArray(override)) {
|
|
189466
|
+
return override;
|
|
189467
|
+
}
|
|
189468
|
+
const result = { ...base };
|
|
189469
|
+
for (const key of Object.keys(override)) {
|
|
189470
|
+
if (key in result &&
|
|
189471
|
+
typeof result[key] === 'object' &&
|
|
189472
|
+
result[key] !== null &&
|
|
189473
|
+
!Array.isArray(result[key]) &&
|
|
189474
|
+
typeof override[key] === 'object' &&
|
|
189475
|
+
override[key] !== null &&
|
|
189476
|
+
!Array.isArray(override[key])) {
|
|
189477
|
+
result[key] = deepMerge(result[key], override[key]);
|
|
189478
|
+
}
|
|
189479
|
+
else {
|
|
189480
|
+
result[key] = override[key];
|
|
189481
|
+
}
|
|
189482
|
+
}
|
|
189483
|
+
return result;
|
|
189484
|
+
};
|
|
189485
|
+
// Resolve visor:// and visor-ee:// paths to the defaults/ directory shipped with the package
|
|
189486
|
+
// In ncc bundle: __dirname is dist/, defaults/ is sibling → resolve(__dirname, '..', 'defaults')
|
|
189487
|
+
// In source/test: __dirname is src/providers/, defaults/ is two levels up → resolve(__dirname, '..', '..', 'defaults')
|
|
189488
|
+
const resolveVisorPath = (filePath) => {
|
|
189489
|
+
if (!filePath.startsWith('visor://') && !filePath.startsWith('visor-ee://')) {
|
|
189490
|
+
return null;
|
|
189491
|
+
}
|
|
189492
|
+
const relativePath = filePath.replace(/^visor(?:-ee)?:\/\//, '');
|
|
189493
|
+
// Try bundle path first (most common in production), then source path
|
|
189494
|
+
const candidates = [
|
|
189495
|
+
path.resolve(__dirname, '..', 'defaults'),
|
|
189496
|
+
path.resolve(__dirname, '..', '..', 'defaults'),
|
|
189497
|
+
];
|
|
189498
|
+
let defaultsDir;
|
|
189499
|
+
for (const candidate of candidates) {
|
|
189500
|
+
if ((__nccwpck_require__(79896).existsSync)(candidate)) {
|
|
189501
|
+
defaultsDir = candidate;
|
|
189502
|
+
break;
|
|
189503
|
+
}
|
|
189504
|
+
}
|
|
189505
|
+
if (!defaultsDir) {
|
|
189506
|
+
throw new Error(`loadConfig: cannot find defaults directory for visor:// paths`);
|
|
189507
|
+
}
|
|
189508
|
+
const resolved = path.resolve(defaultsDir, relativePath);
|
|
189509
|
+
if (!resolved.startsWith(defaultsDir + path.sep) && resolved !== defaultsDir) {
|
|
189510
|
+
throw new Error(`loadConfig: visor:// path escapes defaults directory`);
|
|
189511
|
+
}
|
|
189512
|
+
return { resolvedPath: resolved, configDir: path.dirname(resolved) };
|
|
189513
|
+
};
|
|
189514
|
+
// Shared depth counter for loadConfig calls (tracks total nesting across expression + extends)
|
|
189515
|
+
let loadConfigCallDepth = 0;
|
|
189516
|
+
// Recursively resolve { expression: "..." } nodes and extends in parsed config
|
|
189517
|
+
const resolveExpressions = (value, depth) => {
|
|
189518
|
+
if (depth > 10) {
|
|
189519
|
+
throw new Error('loadConfig: maximum expression nesting depth (10) exceeded');
|
|
189520
|
+
}
|
|
189521
|
+
if (Array.isArray(value)) {
|
|
189522
|
+
return value.map(item => resolveExpressions(item, depth + 1));
|
|
189523
|
+
}
|
|
189524
|
+
if (value && typeof value === 'object' && !Array.isArray(value)) {
|
|
189525
|
+
const obj = value;
|
|
189526
|
+
// Handle { expression: "..." } single-key objects
|
|
189527
|
+
const keys = Object.keys(obj);
|
|
189528
|
+
if (keys.length === 1 && keys[0] === 'expression' && typeof obj.expression === 'string') {
|
|
189529
|
+
const sandbox = (0, sandbox_1.createSecureSandbox)();
|
|
189530
|
+
const result = (0, sandbox_1.compileAndRun)(sandbox, obj.expression, templateContext, {
|
|
189531
|
+
injectLog: true,
|
|
189532
|
+
logPrefix: 'loadConfig.expression',
|
|
189533
|
+
});
|
|
189534
|
+
return resolveExpressions(result, depth + 1);
|
|
189535
|
+
}
|
|
189536
|
+
// Handle extends: load base config and deep merge
|
|
189537
|
+
if ('extends' in obj && typeof obj.extends === 'string') {
|
|
189538
|
+
const extendsPath = obj.extends;
|
|
189539
|
+
const overrideObj = { ...obj };
|
|
189540
|
+
delete overrideObj.extends;
|
|
189541
|
+
// Recursively resolve the override object first
|
|
189542
|
+
const resolvedOverride = resolveExpressions(overrideObj, depth + 1);
|
|
189543
|
+
// Load the base config (loadConfig itself handles visor:// and expressions)
|
|
189544
|
+
const baseConfig = loadConfig(extendsPath);
|
|
189545
|
+
return deepMerge(baseConfig, resolvedOverride);
|
|
189546
|
+
}
|
|
189547
|
+
// Recursively walk all values
|
|
189548
|
+
const result = {};
|
|
189549
|
+
for (const [k, v] of Object.entries(obj)) {
|
|
189550
|
+
result[k] = resolveExpressions(v, depth + 1);
|
|
189551
|
+
}
|
|
189552
|
+
return result;
|
|
189553
|
+
}
|
|
189554
|
+
return value;
|
|
189555
|
+
};
|
|
189458
189556
|
// loadConfig helper - synchronously reads, renders Liquid templates, and parses YAML/JSON
|
|
189459
189557
|
// Usage in expressions: loadConfig('config/intents.yaml')
|
|
189460
189558
|
// Supports {% readfile "path" %} directives that resolve relative to the config file's directory
|
|
189559
|
+
// Supports visor:// paths for loading framework defaults
|
|
189560
|
+
// Recursively resolves { expression: "..." } nodes and extends fields
|
|
189461
189561
|
const loadConfig = (filePath) => {
|
|
189462
189562
|
try {
|
|
189463
|
-
|
|
189464
|
-
|
|
189465
|
-
|
|
189466
|
-
|
|
189467
|
-
|
|
189468
|
-
|
|
189469
|
-
//
|
|
189470
|
-
|
|
189471
|
-
|
|
189472
|
-
|
|
189473
|
-
|
|
189474
|
-
|
|
189475
|
-
|
|
189476
|
-
|
|
189477
|
-
|
|
189478
|
-
|
|
189563
|
+
loadConfigCallDepth++;
|
|
189564
|
+
if (loadConfigCallDepth > 10) {
|
|
189565
|
+
throw new Error('maximum loadConfig nesting depth (10) exceeded');
|
|
189566
|
+
}
|
|
189567
|
+
let resolvedPath;
|
|
189568
|
+
let configDir;
|
|
189569
|
+
// Check for visor:// or visor-ee:// paths
|
|
189570
|
+
const visorResolved = resolveVisorPath(filePath);
|
|
189571
|
+
if (visorResolved) {
|
|
189572
|
+
resolvedPath = visorResolved.resolvedPath;
|
|
189573
|
+
configDir = visorResolved.configDir;
|
|
189574
|
+
}
|
|
189575
|
+
else {
|
|
189576
|
+
// Normalize basePath for security validation
|
|
189577
|
+
const normalizedBasePath = path.normalize(basePath);
|
|
189578
|
+
// Resolve path relative to basePath (or use absolute path)
|
|
189579
|
+
resolvedPath = path.isAbsolute(filePath)
|
|
189580
|
+
? path.normalize(filePath)
|
|
189581
|
+
: path.normalize(path.resolve(basePath, filePath));
|
|
189582
|
+
// Security: Validate that resolved path stays within basePath
|
|
189583
|
+
// This prevents path traversal attacks (e.g., ../../../etc/passwd)
|
|
189584
|
+
const basePathWithSep = normalizedBasePath.endsWith(path.sep)
|
|
189585
|
+
? normalizedBasePath
|
|
189586
|
+
: normalizedBasePath + path.sep;
|
|
189587
|
+
if (!resolvedPath.startsWith(basePathWithSep) && resolvedPath !== normalizedBasePath) {
|
|
189588
|
+
throw new Error(`Path '${filePath}' escapes base directory`);
|
|
189589
|
+
}
|
|
189590
|
+
// Get the directory of the config file for resolving relative paths in {% readfile %}
|
|
189591
|
+
configDir = path.dirname(resolvedPath);
|
|
189592
|
+
}
|
|
189479
189593
|
// Use sync read for sandbox expression context (expressions can't be async)
|
|
189480
189594
|
const rawContent = (__nccwpck_require__(79896).readFileSync)(resolvedPath, 'utf-8');
|
|
189481
189595
|
// Render Liquid templates (e.g., {% readfile "docs/file.md" %}) with basePath context
|
|
@@ -189485,13 +189599,18 @@ class WorkflowCheckProvider extends check_provider_interface_1.CheckProvider {
|
|
|
189485
189599
|
});
|
|
189486
189600
|
// Parse as YAML with JSON_SCHEMA for security (prevents custom type execution)
|
|
189487
189601
|
// JSON_SCHEMA is safer than DEFAULT but still parses basic types (numbers, booleans, null)
|
|
189488
|
-
|
|
189602
|
+
const parsed = yaml.load(renderedContent, { schema: yaml.JSON_SCHEMA });
|
|
189603
|
+
// Recursively resolve expressions and extends in the parsed result
|
|
189604
|
+
return resolveExpressions(parsed, 0);
|
|
189489
189605
|
}
|
|
189490
189606
|
catch (error) {
|
|
189491
189607
|
const msg = error instanceof Error ? error.message : String(error);
|
|
189492
189608
|
logger_1.logger.error(`[WorkflowProvider] loadConfig failed for '${filePath}': ${msg}`);
|
|
189493
189609
|
throw new Error(`loadConfig('${filePath}') failed: ${msg}`);
|
|
189494
189610
|
}
|
|
189611
|
+
finally {
|
|
189612
|
+
loadConfigCallDepth--;
|
|
189613
|
+
}
|
|
189495
189614
|
};
|
|
189496
189615
|
const templateContext = {
|
|
189497
189616
|
pr: prInfo,
|
|
@@ -278670,13 +278789,44 @@ var init_TaskManager = __esm({
|
|
|
278670
278789
|
this.tasks = newTasks;
|
|
278671
278790
|
}
|
|
278672
278791
|
/**
|
|
278673
|
-
* Create multiple tasks in batch
|
|
278792
|
+
* Create multiple tasks in batch, resolving user-provided IDs to auto-generated IDs.
|
|
278793
|
+
* If any task fails validation, no tasks are created (atomic operation).
|
|
278674
278794
|
* @param {Object[]} tasksData - Array of task data objects
|
|
278675
278795
|
* @returns {Task[]} Created tasks
|
|
278676
278796
|
*/
|
|
278677
278797
|
createTasks(tasksData) {
|
|
278678
|
-
const
|
|
278798
|
+
const idMap = /* @__PURE__ */ new Map();
|
|
278799
|
+
const batchAutoIds = /* @__PURE__ */ new Set();
|
|
278800
|
+
let nextCounter = this.taskCounter;
|
|
278679
278801
|
for (const taskData of tasksData) {
|
|
278802
|
+
nextCounter++;
|
|
278803
|
+
const autoId = `task-${nextCounter}`;
|
|
278804
|
+
batchAutoIds.add(autoId);
|
|
278805
|
+
if (taskData.id) {
|
|
278806
|
+
idMap.set(taskData.id, autoId);
|
|
278807
|
+
}
|
|
278808
|
+
}
|
|
278809
|
+
const resolvedTasksData = tasksData.map((taskData) => {
|
|
278810
|
+
const resolved = { ...taskData };
|
|
278811
|
+
delete resolved.id;
|
|
278812
|
+
if (resolved.dependencies) {
|
|
278813
|
+
resolved.dependencies = resolved.dependencies.map((depId) => {
|
|
278814
|
+
if (idMap.has(depId)) return idMap.get(depId);
|
|
278815
|
+
if (this.tasks.has(depId) || batchAutoIds.has(depId)) return depId;
|
|
278816
|
+
throw new Error(`Dependency "${depId}" does not exist. Available tasks: ${this._getAvailableTaskIds()}${idMap.size > 0 ? `, batch IDs: ${Array.from(idMap.keys()).join(", ")}` : ""}`);
|
|
278817
|
+
});
|
|
278818
|
+
}
|
|
278819
|
+
if (resolved.after) {
|
|
278820
|
+
if (idMap.has(resolved.after)) {
|
|
278821
|
+
resolved.after = idMap.get(resolved.after);
|
|
278822
|
+
} else if (!this.tasks.has(resolved.after) && !batchAutoIds.has(resolved.after)) {
|
|
278823
|
+
throw new Error(`Task "${resolved.after}" does not exist. Cannot insert after non-existent task. Available tasks: ${this._getAvailableTaskIds()}${idMap.size > 0 ? `, batch IDs: ${Array.from(idMap.keys()).join(", ")}` : ""}`);
|
|
278824
|
+
}
|
|
278825
|
+
}
|
|
278826
|
+
return resolved;
|
|
278827
|
+
});
|
|
278828
|
+
const createdTasks = [];
|
|
278829
|
+
for (const taskData of resolvedTasksData) {
|
|
278680
278830
|
const task = this.createTask(taskData);
|
|
278681
278831
|
createdTasks.push(task);
|
|
278682
278832
|
}
|
|
@@ -395515,7 +395665,7 @@ module.exports = /*#__PURE__*/JSON.parse('{"100":"Continue","101":"Switching Pro
|
|
|
395515
395665
|
/***/ ((module) => {
|
|
395516
395666
|
|
|
395517
395667
|
"use strict";
|
|
395518
|
-
module.exports = /*#__PURE__*/JSON.parse('{"name":"@probelabs/visor","version":"0.1.
|
|
395668
|
+
module.exports = /*#__PURE__*/JSON.parse('{"name":"@probelabs/visor","version":"0.1.160","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","@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","@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","@probelabs/probe":"^0.6.0-rc275","@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","cli-table3":"^0.6.5","commander":"^14.0.0","deepmerge":"^4.3.1","dotenv":"^17.2.3","ignore":"^7.0.5","js-yaml":"^4.1.0","jsonpath-plus":"^10.4.0","liquidjs":"^10.21.1","minimatch":"^10.2.2","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@*","@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/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"]}}');
|
|
395519
395669
|
|
|
395520
395670
|
/***/ })
|
|
395521
395671
|
|