@probelabs/visor 0.1.96 → 0.1.98

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 (88) hide show
  1. package/README.md +20 -19
  2. package/defaults/.visor.yaml +3 -2
  3. package/dist/{168.index.js → 136.index.js} +5 -5
  4. package/dist/{272.index.js → 146.index.js} +5 -5
  5. package/dist/{13.index.js → 160.index.js} +5 -5
  6. package/dist/{421.index.js → 179.index.js} +3 -3
  7. package/dist/{85.index.js → 191.index.js} +5 -5
  8. package/dist/{544.index.js → 384.index.js} +3 -3
  9. package/dist/{861.index.js → 405.index.js} +3 -3
  10. package/dist/{320.index.js → 42.index.js} +3 -3
  11. package/dist/448.index.js +48 -0
  12. package/dist/{878.index.js → 491.index.js} +5 -5
  13. package/dist/663.index.js +321 -0
  14. package/dist/69.index.js +38 -0
  15. package/dist/{54.index.js → 760.index.js} +5 -5
  16. package/dist/80.index.js +263 -0
  17. package/dist/886.index.js +81 -0
  18. package/dist/917.index.js +82 -0
  19. package/dist/955.index.js +82 -0
  20. package/dist/ai-review-service.d.ts +2 -3
  21. package/dist/ai-review-service.d.ts.map +1 -1
  22. package/dist/check-execution-engine.d.ts.map +1 -1
  23. package/dist/cli.d.ts.map +1 -1
  24. package/dist/config.d.ts +5 -0
  25. package/dist/config.d.ts.map +1 -1
  26. package/dist/defaults/.visor.yaml +3 -2
  27. package/dist/generated/config-schema.d.ts +24 -3
  28. package/dist/generated/config-schema.d.ts.map +1 -1
  29. package/dist/generated/config-schema.json +28 -3
  30. package/dist/index.js +198171 -161819
  31. package/dist/proto/protoc-gen-validate/LICENSE +202 -0
  32. package/dist/proto/protoc-gen-validate/validate/validate.proto +797 -0
  33. package/dist/proto/xds/LICENSE +201 -0
  34. package/dist/proto/xds/xds/data/orca/v3/orca_load_report.proto +58 -0
  35. package/dist/proto/xds/xds/service/orca/v3/orca.proto +36 -0
  36. package/dist/protoc-gen-validate/LICENSE +202 -0
  37. package/dist/protoc-gen-validate/validate/validate.proto +797 -0
  38. package/dist/providers/check-provider-registry.d.ts.map +1 -1
  39. package/dist/providers/index.d.ts +1 -0
  40. package/dist/providers/index.d.ts.map +1 -1
  41. package/dist/providers/mcp-check-provider.d.ts +102 -0
  42. package/dist/providers/mcp-check-provider.d.ts.map +1 -0
  43. package/dist/sdk/check-execution-engine-W5FLIWZL.mjs +11 -0
  44. package/dist/sdk/chunk-IG3BFIIN.mjs +174 -0
  45. package/dist/sdk/chunk-IG3BFIIN.mjs.map +1 -0
  46. package/dist/sdk/{chunk-Q4S5A5TO.mjs → chunk-POYXI3MQ.mjs} +610 -21
  47. package/dist/sdk/chunk-POYXI3MQ.mjs.map +1 -0
  48. package/dist/sdk/chunk-YXOWIDEF.mjs +60 -0
  49. package/dist/sdk/chunk-YXOWIDEF.mjs.map +1 -0
  50. package/dist/sdk/{mermaid-telemetry-LZGDD35I.mjs → mermaid-telemetry-4DUEYCLE.mjs} +2 -2
  51. package/dist/sdk/sdk.d.mts +16 -3
  52. package/dist/sdk/sdk.d.ts +16 -3
  53. package/dist/sdk/sdk.js +994 -1513
  54. package/dist/sdk/sdk.js.map +1 -1
  55. package/dist/sdk/sdk.mjs +70 -13
  56. package/dist/sdk/sdk.mjs.map +1 -1
  57. package/dist/sdk/{tracer-init-O7RLXMJ3.mjs → tracer-init-RJGAIOBP.mjs} +2 -2
  58. package/dist/session-registry.d.ts +2 -3
  59. package/dist/session-registry.d.ts.map +1 -1
  60. package/dist/traces/run-2025-10-19T19-05-29-328Z.ndjson +40 -0
  61. package/dist/traces/run-2025-10-19T19-05-42-253Z.ndjson +40 -0
  62. package/dist/traces/run-2025-10-19T19-05-42-805Z.ndjson +40 -0
  63. package/dist/traces/run-2025-10-19T19-05-43-323Z.ndjson +40 -0
  64. package/dist/traces/run-2025-10-19T19-05-43-841Z.ndjson +12 -0
  65. package/dist/types/config.d.ts +16 -3
  66. package/dist/types/config.d.ts.map +1 -1
  67. package/dist/utils/config-loader.d.ts +5 -0
  68. package/dist/utils/config-loader.d.ts.map +1 -1
  69. package/dist/utils/tracer-init.d.ts +3 -4
  70. package/dist/utils/tracer-init.d.ts.map +1 -1
  71. package/dist/xds/LICENSE +201 -0
  72. package/dist/xds/xds/data/orca/v3/orca_load_report.proto +58 -0
  73. package/dist/xds/xds/service/orca/v3/orca.proto +36 -0
  74. package/package.json +15 -8
  75. package/dist/sdk/check-execution-engine-NMPXJ7FQ.mjs +0 -11
  76. package/dist/sdk/chunk-KVHVCGY6.mjs +0 -103
  77. package/dist/sdk/chunk-KVHVCGY6.mjs.map +0 -1
  78. package/dist/sdk/chunk-Q4S5A5TO.mjs.map +0 -1
  79. package/dist/sdk/chunk-TWJKAYT6.mjs +0 -1124
  80. package/dist/sdk/chunk-TWJKAYT6.mjs.map +0 -1
  81. /package/dist/{traces/run-2025-10-18T20-24-27-886Z.ndjson → output/traces/run-2025-10-19T19-05-29-328Z.ndjson} +0 -0
  82. /package/dist/{traces/run-2025-10-18T20-24-38-817Z.ndjson → output/traces/run-2025-10-19T19-05-42-253Z.ndjson} +0 -0
  83. /package/dist/{traces/run-2025-10-18T20-24-39-361Z.ndjson → output/traces/run-2025-10-19T19-05-42-805Z.ndjson} +0 -0
  84. /package/dist/{traces/run-2025-10-18T20-24-39-852Z.ndjson → output/traces/run-2025-10-19T19-05-43-323Z.ndjson} +0 -0
  85. /package/dist/{traces/run-2025-10-18T20-24-40-335Z.ndjson → output/traces/run-2025-10-19T19-05-43-841Z.ndjson} +0 -0
  86. /package/dist/sdk/{check-execution-engine-NMPXJ7FQ.mjs.map → check-execution-engine-W5FLIWZL.mjs.map} +0 -0
  87. /package/dist/sdk/{mermaid-telemetry-LZGDD35I.mjs.map → mermaid-telemetry-4DUEYCLE.mjs.map} +0 -0
  88. /package/dist/sdk/{tracer-init-O7RLXMJ3.mjs.map → tracer-init-RJGAIOBP.mjs.map} +0 -0
@@ -0,0 +1,60 @@
1
+ import {
2
+ __esm
3
+ } from "./chunk-WMJKH4XE.mjs";
4
+
5
+ // src/utils/tracer-init.ts
6
+ import * as path from "path";
7
+ import * as fs from "fs";
8
+ import { SimpleTelemetry, SimpleAppTracer } from "@probelabs/probe";
9
+ async function initializeTracer(sessionId, checkName) {
10
+ try {
11
+ if (SimpleTelemetry && SimpleAppTracer) {
12
+ const sanitizedCheckName = checkName ? path.basename(checkName) : "check";
13
+ const timestamp = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-");
14
+ const traceDir = process.env.GITHUB_WORKSPACE ? path.join(process.env.GITHUB_WORKSPACE, "debug-artifacts") : path.join(process.cwd(), "debug-artifacts");
15
+ if (!fs.existsSync(traceDir)) {
16
+ fs.mkdirSync(traceDir, { recursive: true });
17
+ }
18
+ const traceFilePath = path.join(traceDir, `trace-${sanitizedCheckName}-${timestamp}.jsonl`);
19
+ const resolvedTracePath = path.resolve(traceFilePath);
20
+ const resolvedTraceDir = path.resolve(traceDir);
21
+ if (!resolvedTracePath.startsWith(resolvedTraceDir)) {
22
+ console.error(
23
+ `\u26A0\uFE0F Security: Attempted path traversal detected. Check name: ${checkName}, resolved path: ${resolvedTracePath}`
24
+ );
25
+ return null;
26
+ }
27
+ const telemetry = new SimpleTelemetry({
28
+ enableFile: true,
29
+ filePath: traceFilePath,
30
+ enableConsole: false
31
+ });
32
+ const tracer = new SimpleAppTracer(telemetry, sessionId);
33
+ console.error(`\u{1F4CA} Simple tracing enabled, will save to: ${traceFilePath}`);
34
+ if (process.env.GITHUB_ACTIONS) {
35
+ console.log(`::notice title=AI Trace::Trace will be saved to ${traceFilePath}`);
36
+ console.log(`::set-output name=trace-path::${traceFilePath}`);
37
+ }
38
+ return {
39
+ tracer,
40
+ telemetryConfig: telemetry,
41
+ filePath: traceFilePath
42
+ };
43
+ }
44
+ console.error("\u26A0\uFE0F Telemetry classes not available in ProbeAgent, skipping tracing");
45
+ return null;
46
+ } catch (error) {
47
+ console.error("\u26A0\uFE0F Warning: Failed to initialize tracing:", error);
48
+ return null;
49
+ }
50
+ }
51
+ var init_tracer_init = __esm({
52
+ "src/utils/tracer-init.ts"() {
53
+ }
54
+ });
55
+
56
+ export {
57
+ initializeTracer,
58
+ init_tracer_init
59
+ };
60
+ //# sourceMappingURL=chunk-YXOWIDEF.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/tracer-init.ts"],"sourcesContent":["import * as path from 'path';\nimport * as fs from 'fs';\nimport { SimpleTelemetry, SimpleAppTracer } from '@probelabs/probe';\n\n/**\n * Safely initialize a tracer for ProbeAgent with proper path sanitization\n * Uses SimpleTelemetry for lightweight tracing\n * This prevents path traversal vulnerabilities by sanitizing the checkName\n */\nexport async function initializeTracer(\n sessionId: string,\n checkName?: string\n): Promise<{ tracer: unknown; telemetryConfig: unknown; filePath: string } | null> {\n try {\n // Use SimpleTelemetry (probe no longer exports full OpenTelemetry classes)\n if (SimpleTelemetry && SimpleAppTracer) {\n // SECURITY: Sanitize checkName to prevent path traversal attacks\n const sanitizedCheckName = checkName ? path.basename(checkName) : 'check';\n\n // Create trace file path in debug-artifacts directory\n const timestamp = new Date().toISOString().replace(/[:.]/g, '-');\n const traceDir = process.env.GITHUB_WORKSPACE\n ? path.join(process.env.GITHUB_WORKSPACE, 'debug-artifacts')\n : path.join(process.cwd(), 'debug-artifacts');\n\n // Create traces directory if it doesn't exist\n if (!fs.existsSync(traceDir)) {\n fs.mkdirSync(traceDir, { recursive: true });\n }\n\n // SECURITY: Use path.join to safely construct the path\n const traceFilePath = path.join(traceDir, `trace-${sanitizedCheckName}-${timestamp}.jsonl`);\n\n // SECURITY: Verify the resolved path is within the intended directory\n const resolvedTracePath = path.resolve(traceFilePath);\n const resolvedTraceDir = path.resolve(traceDir);\n if (!resolvedTracePath.startsWith(resolvedTraceDir)) {\n console.error(\n `⚠️ Security: Attempted path traversal detected. Check name: ${checkName}, resolved path: ${resolvedTracePath}`\n );\n return null;\n }\n\n // Initialize simple telemetry\n const telemetry = new SimpleTelemetry({\n enableFile: true,\n filePath: traceFilePath,\n enableConsole: false,\n });\n\n const tracer = new SimpleAppTracer(telemetry, sessionId);\n\n console.error(`📊 Simple tracing enabled, will save to: ${traceFilePath}`);\n\n // If in GitHub Actions, log the path for artifact upload\n if (process.env.GITHUB_ACTIONS) {\n console.log(`::notice title=AI Trace::Trace will be saved to ${traceFilePath}`);\n console.log(`::set-output name=trace-path::${traceFilePath}`);\n }\n\n // Return with SimpleTelemetry\n return {\n tracer,\n telemetryConfig: telemetry,\n filePath: traceFilePath,\n };\n }\n\n console.error('⚠️ Telemetry classes not available in ProbeAgent, skipping tracing');\n return null;\n } catch (error) {\n console.error('⚠️ Warning: Failed to initialize tracing:', error);\n return null;\n }\n}\n"],"mappings":";;;;;AAAA,YAAY,UAAU;AACtB,YAAY,QAAQ;AACpB,SAAS,iBAAiB,uBAAuB;AAOjD,eAAsB,iBACpB,WACA,WACiF;AACjF,MAAI;AAEF,QAAI,mBAAmB,iBAAiB;AAEtC,YAAM,qBAAqB,YAAiB,cAAS,SAAS,IAAI;AAGlE,YAAM,aAAY,oBAAI,KAAK,GAAE,YAAY,EAAE,QAAQ,SAAS,GAAG;AAC/D,YAAM,WAAW,QAAQ,IAAI,mBACpB,UAAK,QAAQ,IAAI,kBAAkB,iBAAiB,IACpD,UAAK,QAAQ,IAAI,GAAG,iBAAiB;AAG9C,UAAI,CAAI,cAAW,QAAQ,GAAG;AAC5B,QAAG,aAAU,UAAU,EAAE,WAAW,KAAK,CAAC;AAAA,MAC5C;AAGA,YAAM,gBAAqB,UAAK,UAAU,SAAS,kBAAkB,IAAI,SAAS,QAAQ;AAG1F,YAAM,oBAAyB,aAAQ,aAAa;AACpD,YAAM,mBAAwB,aAAQ,QAAQ;AAC9C,UAAI,CAAC,kBAAkB,WAAW,gBAAgB,GAAG;AACnD,gBAAQ;AAAA,UACN,yEAA+D,SAAS,oBAAoB,iBAAiB;AAAA,QAC/G;AACA,eAAO;AAAA,MACT;AAGA,YAAM,YAAY,IAAI,gBAAgB;AAAA,QACpC,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,MACjB,CAAC;AAED,YAAM,SAAS,IAAI,gBAAgB,WAAW,SAAS;AAEvD,cAAQ,MAAM,mDAA4C,aAAa,EAAE;AAGzE,UAAI,QAAQ,IAAI,gBAAgB;AAC9B,gBAAQ,IAAI,mDAAmD,aAAa,EAAE;AAC9E,gBAAQ,IAAI,iCAAiC,aAAa,EAAE;AAAA,MAC9D;AAGA,aAAO;AAAA,QACL;AAAA,QACA,iBAAiB;AAAA,QACjB,UAAU;AAAA,MACZ;AAAA,IACF;AAEA,YAAQ,MAAM,8EAAoE;AAClF,WAAO;AAAA,EACT,SAAS,OAAO;AACd,YAAQ,MAAM,uDAA6C,KAAK;AAChE,WAAO;AAAA,EACT;AACF;AA1EA;AAAA;AAAA;AAAA;","names":[]}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  addDiagramBlock,
3
3
  addEvent
4
- } from "./chunk-TWJKAYT6.mjs";
4
+ } from "./chunk-IG3BFIIN.mjs";
5
5
  import "./chunk-WMJKH4XE.mjs";
6
6
 
7
7
  // src/utils/mermaid-telemetry.ts
@@ -58,4 +58,4 @@ function emitMermaidFromMarkdown(checkName, markdown, origin) {
58
58
  export {
59
59
  emitMermaidFromMarkdown
60
60
  };
61
- //# sourceMappingURL=mermaid-telemetry-LZGDD35I.mjs.map
61
+ //# sourceMappingURL=mermaid-telemetry-4DUEYCLE.mjs.map
@@ -120,7 +120,7 @@ interface FailureConditionResult {
120
120
  /**
121
121
  * Valid check types in configuration
122
122
  */
123
- type ConfigCheckType = 'ai' | 'command' | 'http' | 'http_input' | 'http_client' | 'noop' | 'log' | 'memory' | 'github' | 'claude-code';
123
+ type ConfigCheckType = 'ai' | 'command' | 'http' | 'http_input' | 'http_client' | 'noop' | 'log' | 'memory' | 'github' | 'claude-code' | 'mcp';
124
124
  /**
125
125
  * Valid event triggers for checks
126
126
  */
@@ -314,6 +314,17 @@ interface CheckConfig {
314
314
  op?: string;
315
315
  /** Values for GitHub operations (can be array or single value) */
316
316
  values?: string[] | string;
317
+ /**
318
+ * MCP provider specific options (optional, only used when type === 'mcp').
319
+ */
320
+ /** Transport type for MCP: stdio (default), sse (legacy), or http (streamable HTTP) */
321
+ transport?: 'stdio' | 'sse' | 'http';
322
+ /** Arguments to pass to the MCP method (supports Liquid templates) */
323
+ methodArgs?: Record<string, unknown>;
324
+ /** Transform template for method arguments (Liquid) */
325
+ argsTransform?: string;
326
+ /** Session ID for HTTP transport (optional, server may generate one) */
327
+ sessionId?: string;
317
328
  }
318
329
  /**
319
330
  * Backoff policy for retries
@@ -527,8 +538,10 @@ interface VisorConfig {
527
538
  version: string;
528
539
  /** Extends from other configurations - can be file path, HTTP(S) URL, or "default" */
529
540
  extends?: string | string[];
530
- /** Check configurations */
531
- checks: Record<string, CheckConfig>;
541
+ /** Step configurations (recommended) */
542
+ steps?: Record<string, CheckConfig>;
543
+ /** Check configurations (legacy, use 'steps' instead) - always populated after normalization */
544
+ checks?: Record<string, CheckConfig>;
532
545
  /** Output configuration */
533
546
  output: OutputConfig;
534
547
  /** HTTP server configuration for receiving webhooks */
package/dist/sdk/sdk.d.ts CHANGED
@@ -120,7 +120,7 @@ interface FailureConditionResult {
120
120
  /**
121
121
  * Valid check types in configuration
122
122
  */
123
- type ConfigCheckType = 'ai' | 'command' | 'http' | 'http_input' | 'http_client' | 'noop' | 'log' | 'memory' | 'github' | 'claude-code';
123
+ type ConfigCheckType = 'ai' | 'command' | 'http' | 'http_input' | 'http_client' | 'noop' | 'log' | 'memory' | 'github' | 'claude-code' | 'mcp';
124
124
  /**
125
125
  * Valid event triggers for checks
126
126
  */
@@ -314,6 +314,17 @@ interface CheckConfig {
314
314
  op?: string;
315
315
  /** Values for GitHub operations (can be array or single value) */
316
316
  values?: string[] | string;
317
+ /**
318
+ * MCP provider specific options (optional, only used when type === 'mcp').
319
+ */
320
+ /** Transport type for MCP: stdio (default), sse (legacy), or http (streamable HTTP) */
321
+ transport?: 'stdio' | 'sse' | 'http';
322
+ /** Arguments to pass to the MCP method (supports Liquid templates) */
323
+ methodArgs?: Record<string, unknown>;
324
+ /** Transform template for method arguments (Liquid) */
325
+ argsTransform?: string;
326
+ /** Session ID for HTTP transport (optional, server may generate one) */
327
+ sessionId?: string;
317
328
  }
318
329
  /**
319
330
  * Backoff policy for retries
@@ -527,8 +538,10 @@ interface VisorConfig {
527
538
  version: string;
528
539
  /** Extends from other configurations - can be file path, HTTP(S) URL, or "default" */
529
540
  extends?: string | string[];
530
- /** Check configurations */
531
- checks: Record<string, CheckConfig>;
541
+ /** Step configurations (recommended) */
542
+ steps?: Record<string, CheckConfig>;
543
+ /** Check configurations (legacy, use 'steps' instead) - always populated after normalization */
544
+ checks?: Record<string, CheckConfig>;
532
545
  /** Output configuration */
533
546
  output: OutputConfig;
534
547
  /** HTTP server configuration for receiving webhooks */