@probelabs/visor 0.1.97 → 0.1.100

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.
Files changed (110) hide show
  1. package/README.md +16 -15
  2. package/action.yml +7 -2
  3. package/defaults/.visor.yaml +7 -6
  4. package/dist/action-cli-bridge.d.ts +1 -0
  5. package/dist/action-cli-bridge.d.ts.map +1 -1
  6. package/dist/ai-review-service.d.ts.map +1 -1
  7. package/dist/check-execution-engine.d.ts +8 -2
  8. package/dist/check-execution-engine.d.ts.map +1 -1
  9. package/dist/cli-main.d.ts.map +1 -1
  10. package/dist/cli.d.ts.map +1 -1
  11. package/dist/config.d.ts +5 -0
  12. package/dist/config.d.ts.map +1 -1
  13. package/dist/debug-visualizer/debug-span-exporter.d.ts +47 -0
  14. package/dist/debug-visualizer/debug-span-exporter.d.ts.map +1 -0
  15. package/dist/debug-visualizer/trace-reader.d.ts +117 -0
  16. package/dist/debug-visualizer/trace-reader.d.ts.map +1 -0
  17. package/dist/debug-visualizer/ui/index.html +2568 -0
  18. package/dist/debug-visualizer/ws-server.d.ts +99 -0
  19. package/dist/debug-visualizer/ws-server.d.ts.map +1 -0
  20. package/dist/defaults/.visor.yaml +7 -6
  21. package/dist/failure-condition-evaluator.d.ts.map +1 -1
  22. package/dist/generated/config-schema.d.ts +7 -3
  23. package/dist/generated/config-schema.d.ts.map +1 -1
  24. package/dist/generated/config-schema.json +7 -3
  25. package/dist/git-repository-analyzer.d.ts +1 -7
  26. package/dist/git-repository-analyzer.d.ts.map +1 -1
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +17668 -1760
  29. package/dist/liquid-extensions.d.ts +1 -1
  30. package/dist/liquid-extensions.d.ts.map +1 -1
  31. package/dist/output/code-review/schema.json +2 -2
  32. package/dist/output/traces/run-2025-10-22T10-40-34-055Z.ndjson +218 -0
  33. package/dist/pr-analyzer.d.ts +2 -1
  34. package/dist/pr-analyzer.d.ts.map +1 -1
  35. package/dist/providers/ai-check-provider.d.ts.map +1 -1
  36. package/dist/providers/check-provider-registry.d.ts.map +1 -1
  37. package/dist/providers/check-provider.interface.d.ts +17 -6
  38. package/dist/providers/check-provider.interface.d.ts.map +1 -1
  39. package/dist/providers/command-check-provider.d.ts.map +1 -1
  40. package/dist/providers/github-ops-provider.d.ts.map +1 -1
  41. package/dist/providers/http-check-provider.d.ts.map +1 -1
  42. package/dist/providers/human-input-check-provider.d.ts +78 -0
  43. package/dist/providers/human-input-check-provider.d.ts.map +1 -0
  44. package/dist/providers/index.d.ts +2 -1
  45. package/dist/providers/index.d.ts.map +1 -1
  46. package/dist/providers/mcp-check-provider.d.ts.map +1 -1
  47. package/dist/providers/memory-check-provider.d.ts.map +1 -1
  48. package/dist/sdk/check-execution-engine-F3662LY7.mjs +11 -0
  49. package/dist/sdk/{chunk-I3GQJIR7.mjs → chunk-B5QBV2QJ.mjs} +2 -2
  50. package/dist/sdk/chunk-B5QBV2QJ.mjs.map +1 -0
  51. package/dist/sdk/{chunk-IG3BFIIN.mjs → chunk-FVS5CJ5S.mjs} +30 -1
  52. package/dist/sdk/chunk-FVS5CJ5S.mjs.map +1 -0
  53. package/dist/sdk/{chunk-YXOWIDEF.mjs → chunk-TUTOLSFV.mjs} +15 -3
  54. package/dist/sdk/chunk-TUTOLSFV.mjs.map +1 -0
  55. package/dist/sdk/{chunk-4VK6WTYU.mjs → chunk-X2JKUOE5.mjs} +1375 -570
  56. package/dist/sdk/chunk-X2JKUOE5.mjs.map +1 -0
  57. package/dist/sdk/{liquid-extensions-GMEGEGC3.mjs → liquid-extensions-KVL4MKRH.mjs} +2 -2
  58. package/dist/sdk/{mermaid-telemetry-4DUEYCLE.mjs → mermaid-telemetry-FBF6D35S.mjs} +2 -2
  59. package/dist/sdk/sdk.d.mts +62 -4
  60. package/dist/sdk/sdk.d.ts +62 -4
  61. package/dist/sdk/sdk.js +1658 -723
  62. package/dist/sdk/sdk.js.map +1 -1
  63. package/dist/sdk/sdk.mjs +60 -15
  64. package/dist/sdk/sdk.mjs.map +1 -1
  65. package/dist/sdk/{tracer-init-RJGAIOBP.mjs → tracer-init-WC75N5NW.mjs} +2 -2
  66. package/dist/sdk.d.ts +5 -2
  67. package/dist/sdk.d.ts.map +1 -1
  68. package/dist/telemetry/file-span-exporter.d.ts.map +1 -1
  69. package/dist/telemetry/opentelemetry.d.ts +2 -0
  70. package/dist/telemetry/opentelemetry.d.ts.map +1 -1
  71. package/dist/telemetry/state-capture.d.ts +53 -0
  72. package/dist/telemetry/state-capture.d.ts.map +1 -0
  73. package/dist/telemetry/trace-helpers.d.ts.map +1 -1
  74. package/dist/traces/run-2025-10-22T10-40-34-055Z.ndjson +218 -0
  75. package/dist/types/cli.d.ts +6 -0
  76. package/dist/types/cli.d.ts.map +1 -1
  77. package/dist/types/config.d.ts +44 -3
  78. package/dist/types/config.d.ts.map +1 -1
  79. package/dist/utils/config-loader.d.ts +5 -0
  80. package/dist/utils/config-loader.d.ts.map +1 -1
  81. package/dist/utils/file-exclusion.d.ts +50 -0
  82. package/dist/utils/file-exclusion.d.ts.map +1 -0
  83. package/dist/utils/interactive-prompt.d.ts +26 -0
  84. package/dist/utils/interactive-prompt.d.ts.map +1 -0
  85. package/dist/utils/sandbox.d.ts +26 -0
  86. package/dist/utils/sandbox.d.ts.map +1 -0
  87. package/dist/utils/stdin-reader.d.ts +22 -0
  88. package/dist/utils/stdin-reader.d.ts.map +1 -0
  89. package/dist/utils/tracer-init.d.ts +0 -5
  90. package/dist/utils/tracer-init.d.ts.map +1 -1
  91. package/package.json +8 -4
  92. package/dist/output/traces/run-2025-10-19T14-24-36-341Z.ndjson +0 -40
  93. package/dist/output/traces/run-2025-10-19T14-24-48-674Z.ndjson +0 -40
  94. package/dist/output/traces/run-2025-10-19T14-24-49-238Z.ndjson +0 -40
  95. package/dist/output/traces/run-2025-10-19T14-24-49-761Z.ndjson +0 -40
  96. package/dist/output/traces/run-2025-10-19T14-24-50-279Z.ndjson +0 -12
  97. package/dist/sdk/check-execution-engine-S7BFPVWA.mjs +0 -11
  98. package/dist/sdk/chunk-4VK6WTYU.mjs.map +0 -1
  99. package/dist/sdk/chunk-I3GQJIR7.mjs.map +0 -1
  100. package/dist/sdk/chunk-IG3BFIIN.mjs.map +0 -1
  101. package/dist/sdk/chunk-YXOWIDEF.mjs.map +0 -1
  102. package/dist/traces/run-2025-10-19T14-24-36-341Z.ndjson +0 -40
  103. package/dist/traces/run-2025-10-19T14-24-48-674Z.ndjson +0 -40
  104. package/dist/traces/run-2025-10-19T14-24-49-238Z.ndjson +0 -40
  105. package/dist/traces/run-2025-10-19T14-24-49-761Z.ndjson +0 -40
  106. package/dist/traces/run-2025-10-19T14-24-50-279Z.ndjson +0 -12
  107. /package/dist/sdk/{check-execution-engine-S7BFPVWA.mjs.map → check-execution-engine-F3662LY7.mjs.map} +0 -0
  108. /package/dist/sdk/{liquid-extensions-GMEGEGC3.mjs.map → liquid-extensions-KVL4MKRH.mjs.map} +0 -0
  109. /package/dist/sdk/{mermaid-telemetry-4DUEYCLE.mjs.map → mermaid-telemetry-FBF6D35S.mjs.map} +0 -0
  110. /package/dist/sdk/{tracer-init-RJGAIOBP.mjs.map → tracer-init-WC75N5NW.mjs.map} +0 -0
package/dist/sdk/sdk.mjs CHANGED
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  CheckExecutionEngine
3
- } from "./chunk-4VK6WTYU.mjs";
4
- import "./chunk-YXOWIDEF.mjs";
3
+ } from "./chunk-X2JKUOE5.mjs";
4
+ import "./chunk-TUTOLSFV.mjs";
5
5
  import {
6
6
  init_logger,
7
7
  logger
8
- } from "./chunk-I3GQJIR7.mjs";
9
- import "./chunk-IG3BFIIN.mjs";
8
+ } from "./chunk-B5QBV2QJ.mjs";
9
+ import "./chunk-FVS5CJ5S.mjs";
10
10
  import {
11
11
  ConfigMerger
12
12
  } from "./chunk-U5D2LY66.mjs";
@@ -52,9 +52,13 @@ var init_config_schema = __esm({
52
52
  ],
53
53
  description: 'Extends from other configurations - can be file path, HTTP(S) URL, or "default"'
54
54
  },
55
+ steps: {
56
+ $ref: "#/definitions/Record%3Cstring%2CCheckConfig%3E",
57
+ description: "Step configurations (recommended)"
58
+ },
55
59
  checks: {
56
60
  $ref: "#/definitions/Record%3Cstring%2CCheckConfig%3E",
57
- description: "Check configurations"
61
+ description: "Check configurations (legacy, use 'steps' instead) - always populated after normalization"
58
62
  },
59
63
  output: {
60
64
  $ref: "#/definitions/OutputConfig",
@@ -109,7 +113,7 @@ var init_config_schema = __esm({
109
113
  description: "Optional routing defaults for retry/goto/run policies"
110
114
  }
111
115
  },
112
- required: ["version", "checks", "output"],
116
+ required: ["version", "output"],
113
117
  additionalProperties: false,
114
118
  description: "Main Visor configuration",
115
119
  patternProperties: {
@@ -393,7 +397,8 @@ var init_config_schema = __esm({
393
397
  "memory",
394
398
  "github",
395
399
  "claude-code",
396
- "mcp"
400
+ "mcp",
401
+ "human-input"
397
402
  ],
398
403
  description: "Valid check types in configuration"
399
404
  },
@@ -1296,10 +1301,11 @@ var ConfigLoader = class {
1296
1301
  if (defaultConfigPath && fs.existsSync(defaultConfigPath)) {
1297
1302
  console.error(`\u{1F4E6} Loading bundled default configuration from ${defaultConfigPath}`);
1298
1303
  const content = fs.readFileSync(defaultConfigPath, "utf8");
1299
- const config = yaml.load(content);
1304
+ let config = yaml.load(content);
1300
1305
  if (!config || typeof config !== "object") {
1301
1306
  throw new Error("Invalid default configuration");
1302
1307
  }
1308
+ config = this.normalizeStepsAndChecks(config);
1303
1309
  if (config.extends) {
1304
1310
  return await this.processExtends(config);
1305
1311
  }
@@ -1430,6 +1436,20 @@ var ConfigLoader = class {
1430
1436
  this.loadedConfigs.clear();
1431
1437
  this.clearCache();
1432
1438
  }
1439
+ /**
1440
+ * Normalize 'checks' and 'steps' keys for backward compatibility
1441
+ * Ensures both keys are present and contain the same data
1442
+ */
1443
+ normalizeStepsAndChecks(config) {
1444
+ if (config.steps && config.checks) {
1445
+ config.checks = config.steps;
1446
+ } else if (config.steps && !config.checks) {
1447
+ config.checks = config.steps;
1448
+ } else if (config.checks && !config.steps) {
1449
+ config.steps = config.checks;
1450
+ }
1451
+ return config;
1452
+ }
1433
1453
  };
1434
1454
 
1435
1455
  // src/config.ts
@@ -1449,6 +1469,7 @@ var ConfigManager = class {
1449
1469
  validCheckTypes = [
1450
1470
  "ai",
1451
1471
  "claude-code",
1472
+ "mcp",
1452
1473
  "command",
1453
1474
  "http",
1454
1475
  "http_input",
@@ -1457,7 +1478,8 @@ var ConfigManager = class {
1457
1478
  "noop",
1458
1479
  "log",
1459
1480
  "memory",
1460
- "github"
1481
+ "github",
1482
+ "human-input"
1461
1483
  ];
1462
1484
  validEventTriggers = [...VALID_EVENT_TRIGGERS];
1463
1485
  validOutputFormats = ["table", "json", "markdown", "sarif"];
@@ -1503,6 +1525,7 @@ var ConfigManager = class {
1503
1525
  parsedConfig = merger.merge(mergedConfig, configWithoutExtends);
1504
1526
  parsedConfig = merger.removeDisabledChecks(parsedConfig);
1505
1527
  }
1528
+ parsedConfig = this.normalizeStepsAndChecks(parsedConfig);
1506
1529
  if (validate) {
1507
1530
  this.validateConfig(parsedConfig);
1508
1531
  }
@@ -1569,7 +1592,9 @@ var ConfigManager = class {
1569
1592
  async getDefaultConfig() {
1570
1593
  return {
1571
1594
  version: "1.0",
1595
+ steps: {},
1572
1596
  checks: {},
1597
+ // Keep for backward compatibility
1573
1598
  max_parallelism: 3,
1574
1599
  output: {
1575
1600
  pr_comment: {
@@ -1612,10 +1637,11 @@ var ConfigManager = class {
1612
1637
  if (bundledConfigPath && fs2.existsSync(bundledConfigPath)) {
1613
1638
  console.error(`\u{1F4E6} Loading bundled default configuration from ${bundledConfigPath}`);
1614
1639
  const configContent = fs2.readFileSync(bundledConfigPath, "utf8");
1615
- const parsedConfig = yaml2.load(configContent);
1640
+ let parsedConfig = yaml2.load(configContent);
1616
1641
  if (!parsedConfig || typeof parsedConfig !== "object") {
1617
1642
  return null;
1618
1643
  }
1644
+ parsedConfig = this.normalizeStepsAndChecks(parsedConfig);
1619
1645
  this.validateConfig(parsedConfig);
1620
1646
  return this.mergeWithDefaults(parsedConfig);
1621
1647
  }
@@ -1647,6 +1673,20 @@ var ConfigManager = class {
1647
1673
  }
1648
1674
  return null;
1649
1675
  }
1676
+ /**
1677
+ * Normalize 'checks' and 'steps' keys for backward compatibility
1678
+ * Ensures both keys are present and contain the same data
1679
+ */
1680
+ normalizeStepsAndChecks(config) {
1681
+ if (config.steps && config.checks) {
1682
+ config.checks = config.steps;
1683
+ } else if (config.steps && !config.checks) {
1684
+ config.checks = config.steps;
1685
+ } else if (config.checks && !config.steps) {
1686
+ config.steps = config.checks;
1687
+ }
1688
+ return config;
1689
+ }
1650
1690
  /**
1651
1691
  * Merge configuration with CLI options
1652
1692
  */
@@ -1702,13 +1742,15 @@ var ConfigManager = class {
1702
1742
  message: "Missing required field: version"
1703
1743
  });
1704
1744
  }
1705
- if (!config.checks) {
1745
+ if (!config.checks && !config.steps) {
1706
1746
  errors.push({
1707
- field: "checks",
1708
- message: "Missing required field: checks"
1747
+ field: "checks/steps",
1748
+ message: 'Missing required field: either "checks" or "steps" must be defined. "steps" is recommended for new configurations.'
1709
1749
  });
1710
- } else {
1711
- for (const [checkName, checkConfig] of Object.entries(config.checks)) {
1750
+ }
1751
+ const checksToValidate = config.checks || config.steps;
1752
+ if (checksToValidate) {
1753
+ for (const [checkName, checkConfig] of Object.entries(checksToValidate)) {
1712
1754
  if (!checkConfig.type) {
1713
1755
  checkConfig.type = "ai";
1714
1756
  }
@@ -2317,6 +2359,9 @@ async function runChecks(opts = {}) {
2317
2359
  }
2318
2360
  const checks = opts.checks && opts.checks.length > 0 ? resolveChecks(opts.checks, config) : Object.keys(config.checks || {});
2319
2361
  const engine = new CheckExecutionEngine(opts.cwd);
2362
+ if (opts.executionContext) {
2363
+ engine.setExecutionContext(opts.executionContext);
2364
+ }
2320
2365
  const result = await engine.executeChecks({
2321
2366
  checks,
2322
2367
  workingDirectory: opts.cwd,