@probelabs/visor 0.1.87 → 0.1.88

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/README.md CHANGED
@@ -30,7 +30,7 @@ Visor ships with a ready-to-run configuration at `defaults/.visor.yaml`, so you
30
30
  # .github/workflows/visor.yml
31
31
  name: Visor
32
32
  on:
33
- pull_request: { types: [opened, synchronize] }
33
+ pull_request: { types: [opened, synchronize] } # For fork PRs, see docs/GITHUB_CHECKS.md
34
34
  issues: { types: [opened] }
35
35
  issue_comment: { types: [created] }
36
36
  permissions:
@@ -50,6 +50,7 @@ jobs:
50
50
 
51
51
  ### Open a PR
52
52
  - Visor posts a PR summary, creates GitHub Check runs, and annotates lines.
53
+ - **Note**: For external contributor PRs from forks, check runs may not be available due to GitHub security restrictions. Visor will gracefully fall back to PR comments. See [Fork PR Support](docs/GITHUB_CHECKS.md#fork-pr-support) for how to enable check runs for forks.
53
54
 
54
55
  ### Optional: Add `.visor.yaml`
55
56
 
@@ -415,7 +416,11 @@ Learn more: [docs/claude-code.md](docs/claude-code.md)
415
416
 
416
417
  ## 🔄 AI Session Reuse
417
418
 
418
- Reuse context between dependent AI checks for smarter follow‑ups.
419
+ Reuse conversation context between dependent AI checks for smarter follow‑ups.
420
+
421
+ **Two modes available:**
422
+ - **`clone` (default)**: Independent copy of history for parallel follow-ups
423
+ - **`append`**: Shared conversation thread for sequential multi-turn dialogue
419
424
 
420
425
  Example:
421
426
  ```yaml
@@ -424,7 +429,12 @@ checks:
424
429
  remediation:
425
430
  type: ai
426
431
  depends_on: [security]
432
+ reuse_ai_session: true # Clones history by default
433
+ verify:
434
+ type: ai
435
+ depends_on: [remediation]
427
436
  reuse_ai_session: true
437
+ session_mode: append # Shares history for full conversation
428
438
  ```
429
439
 
430
440
  Learn more: [docs/advanced-ai.md](docs/advanced-ai.md)
@@ -65,8 +65,9 @@ export declare class AIReviewService {
65
65
  executeReview(prInfo: PRInfo, customPrompt: string, schema?: string | Record<string, unknown>, _checkName?: string, sessionId?: string): Promise<ReviewSummary>;
66
66
  /**
67
67
  * Execute AI review using session reuse - reuses an existing ProbeAgent session
68
+ * @param sessionMode - 'clone' (default) clones history, 'append' shares history
68
69
  */
69
- executeReviewWithSessionReuse(prInfo: PRInfo, customPrompt: string, parentSessionId: string, schema?: string | Record<string, unknown>, checkName?: string): Promise<ReviewSummary>;
70
+ executeReviewWithSessionReuse(prInfo: PRInfo, customPrompt: string, parentSessionId: string, schema?: string | Record<string, unknown>, checkName?: string, sessionMode?: 'clone' | 'append'): Promise<ReviewSummary>;
70
71
  /**
71
72
  * Register a new AI session in the session registry
72
73
  */
@@ -1 +1 @@
1
- {"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/ai-review-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,aAAa,EAAe,MAAM,YAAY,CAAC;AAWxD,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,aAAa,CAAC;IAClF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,CAAC;IAExD,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,gBAAgB,EAAE,eAAe,CAAC,CAAC;CACvE;AAED,MAAM,WAAW,WAAW;IAC1B,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,kCAAkC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,qCAAqC;IACrC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,0CAA0C;IAC1C,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mCAAmC;IACnC,cAAc,CAAC,EAAE,KAAK,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,cAAc,EAAE,MAAM,CAAC;QACvB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC,CAAC;CACJ;AAmBD,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,eAAe,CAAkB;gBAE7B,MAAM,GAAE,cAAmB;IAyCvC;;OAEG;IACG,aAAa,CACjB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzC,UAAU,CAAC,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC;IA+GzB;;OAEG;IACG,6BAA6B,CACjC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,EACvB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC;IAsFzB;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAI3D;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIvC;;OAEG;YACW,iBAAiB;IAuF/B;;OAEG;IACH,OAAO,CAAC,eAAe;IAgSvB;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;OAEG;YACW,iCAAiC;IAuE/C;;OAEG;YACW,cAAc;IA4L5B;;OAEG;YACW,iBAAiB;IAiE/B;;OAEG;IACH,OAAO,CAAC,eAAe;IAkPvB;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAc/B;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAqDnC;;OAEG;YACW,oBAAoB;IAgDlC;;OAEG;IACH,OAAO,CAAC,eAAe;CAuBxB"}
1
+ {"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/ai-review-service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/check-execution-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/check-execution-engine.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/config.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,WAAW,EAOX,oBAAoB,EACpB,YAAY,EACZ,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAMzC;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,eAAe,CASrB;IACF,OAAO,CAAC,kBAAkB,CASxB;IACF,OAAO,CAAC,kBAAkB,CAAgE;IAC1F,OAAO,CAAC,mBAAmB,CAAkD;IAE7E;;OAEG;IACU,UAAU,CACrB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,WAAW,CAAC;IA2FvB;;OAEG;IACU,iBAAiB,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,WAAW,CAAC;IAyBrF;;OAEG;YACW,qBAAqB;IAiBnC;;OAEG;IACU,gBAAgB,IAAI,OAAO,CAAC,WAAW,CAAC;IAerD;;OAEG;IACI,wBAAwB,IAAI,WAAW,GAAG,IAAI;IA4DrD;;OAEG;IACH,OAAO,CAAC,eAAe;IAuBvB;;OAEG;IACI,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,UAAU,GAAG,YAAY;IAqB9F;;OAEG;IACU,0BAA0B,IAAI,OAAO,CAAC;QACjD,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,oBAAoB,EAAE,oBAAoB,CAAC;KAC5C,CAAC;IA2BF;;OAEG;IACH,OAAO,CAAC,cAAc;IAsKtB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA+K3B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA0DhC;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAyE7B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA6DzB;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA6EhC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA+B5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAY9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;CA6B1B"}
1
+ {"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/config.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,WAAW,EAOX,oBAAoB,EACpB,YAAY,EACZ,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAMzC;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,eAAe,CASrB;IACF,OAAO,CAAC,kBAAkB,CASxB;IACF,OAAO,CAAC,kBAAkB,CAAgE;IAC1F,OAAO,CAAC,mBAAmB,CAAkD;IAE7E;;OAEG;IACU,UAAU,CACrB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,WAAW,CAAC;IA2FvB;;OAEG;IACU,iBAAiB,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,WAAW,CAAC;IAyBrF;;OAEG;YACW,qBAAqB;IAiBnC;;OAEG;IACU,gBAAgB,IAAI,OAAO,CAAC,WAAW,CAAC;IAerD;;OAEG;IACI,wBAAwB,IAAI,WAAW,GAAG,IAAI;IA4DrD;;OAEG;IACH,OAAO,CAAC,eAAe;IAuBvB;;OAEG;IACI,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,UAAU,GAAG,YAAY;IAqB9F;;OAEG;IACU,0BAA0B,IAAI,OAAO,CAAC;QACjD,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,oBAAoB,EAAE,oBAAoB,CAAC;KAC5C,CAAC;IA2BF;;OAEG;IACH,OAAO,CAAC,cAAc;IAsKtB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAmM3B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA0DhC;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAyE7B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA6DzB;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA6EhC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA+B5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAY9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;CA6B1B"}
@@ -222,6 +222,11 @@ export declare const configSchema: {
222
222
  readonly type: readonly ["string", "boolean"];
223
223
  readonly description: "Check name to reuse AI session from, or true to use first dependency (only works with depends_on)";
224
224
  };
225
+ readonly session_mode: {
226
+ readonly type: "string";
227
+ readonly enum: readonly ["clone", "append"];
228
+ readonly description: "How to reuse AI session: 'clone' (default, copy history) or 'append' (share history)";
229
+ };
225
230
  readonly fail_if: {
226
231
  readonly type: "string";
227
232
  readonly description: "Simple fail condition - fails check if expression evaluates to true";
@@ -1 +1 @@
1
- {"version":3,"file":"config-schema.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/generated/config-schema.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAg7Bf,CAAC;AACX,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"config-schema.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/generated/config-schema.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAs7Bf,CAAC;AACX,eAAe,YAAY,CAAC"}
@@ -235,6 +235,14 @@
235
235
  ],
236
236
  "description": "Check name to reuse AI session from, or true to use first dependency (only works with depends_on)"
237
237
  },
238
+ "session_mode": {
239
+ "type": "string",
240
+ "enum": [
241
+ "clone",
242
+ "append"
243
+ ],
244
+ "description": "How to reuse AI session: 'clone' (default, copy history) or 'append' (share history)"
245
+ },
238
246
  "fail_if": {
239
247
  "type": "string",
240
248
  "description": "Simple fail condition - fails check if expression evaluates to true"
@@ -1 +1 @@
1
- {"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/github-check-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/github-check-service.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- process.env.VISOR_VERSION = '0.1.87';
2
+ process.env.VISOR_VERSION = '0.1.88';
3
3
  process.env.PROBE_VERSION = '0.6.0-rc124';
4
4
  /******/ (() => { // webpackBootstrap
5
5
  /******/ var __webpack_modules__ = ({
@@ -99834,8 +99834,9 @@ class AIReviewService {
99834
99834
  }
99835
99835
  /**
99836
99836
  * Execute AI review using session reuse - reuses an existing ProbeAgent session
99837
+ * @param sessionMode - 'clone' (default) clones history, 'append' shares history
99837
99838
  */
99838
- async executeReviewWithSessionReuse(prInfo, customPrompt, parentSessionId, schema, checkName) {
99839
+ async executeReviewWithSessionReuse(prInfo, customPrompt, parentSessionId, schema, checkName, sessionMode = 'clone') {
99839
99840
  const startTime = Date.now();
99840
99841
  const timestamp = new Date().toISOString();
99841
99842
  // Get the existing session
@@ -99845,7 +99846,25 @@ class AIReviewService {
99845
99846
  }
99846
99847
  // Build prompt from custom instructions
99847
99848
  const prompt = await this.buildCustomPrompt(prInfo, customPrompt, schema);
99848
- log(`🔄 Reusing AI session ${parentSessionId} for review...`);
99849
+ // Determine which agent to use based on session mode
99850
+ let agentToUse;
99851
+ let currentSessionId;
99852
+ if (sessionMode === 'clone') {
99853
+ // Clone the session - creates a new agent with copied history
99854
+ currentSessionId = `${parentSessionId}-clone-${Date.now()}`;
99855
+ log(`📋 Cloning AI session ${parentSessionId} → ${currentSessionId}...`);
99856
+ const clonedAgent = await this.sessionRegistry.cloneSession(parentSessionId, currentSessionId);
99857
+ if (!clonedAgent) {
99858
+ throw new Error(`Failed to clone session ${parentSessionId}. Falling back to append mode.`);
99859
+ }
99860
+ agentToUse = clonedAgent;
99861
+ }
99862
+ else {
99863
+ // Append mode - use the same agent instance
99864
+ log(`🔄 Appending to AI session ${parentSessionId} (shared history)...`);
99865
+ agentToUse = existingAgent;
99866
+ currentSessionId = parentSessionId;
99867
+ }
99849
99868
  log(`🔧 Debug: Raw schema parameter: ${JSON.stringify(schema)} (type: ${typeof schema})`);
99850
99869
  log(`Schema type: ${schema || 'none (no schema)'}`);
99851
99870
  let debugInfo;
@@ -99867,8 +99886,8 @@ class AIReviewService {
99867
99886
  };
99868
99887
  }
99869
99888
  try {
99870
- // Use existing agent's answer method instead of creating new agent
99871
- const { response, effectiveSchema } = await this.callProbeAgentWithExistingSession(existingAgent, prompt, schema, debugInfo, checkName);
99889
+ // Use the determined agent (cloned or original)
99890
+ const { response, effectiveSchema } = await this.callProbeAgentWithExistingSession(agentToUse, prompt, schema, debugInfo, checkName);
99872
99891
  const processingTime = Date.now() - startTime;
99873
99892
  if (debugInfo) {
99874
99893
  debugInfo.rawResponse = response;
@@ -99879,6 +99898,11 @@ class AIReviewService {
99879
99898
  if (debugInfo) {
99880
99899
  result.debug = debugInfo;
99881
99900
  }
99901
+ // Include the session ID in the result for cleanup tracking
99902
+ // Only include if we created a new cloned session
99903
+ if (sessionMode === 'clone' && currentSessionId !== parentSessionId) {
99904
+ result.sessionId = currentSessionId;
99905
+ }
99882
99906
  return result;
99883
99907
  }
99884
99908
  catch (error) {
@@ -102693,6 +102717,13 @@ class CheckExecutionEngine {
102693
102717
  if (debug) {
102694
102718
  log(`🔧 Debug: Completed check: ${checkName}, issues found: ${(finalResult.issues || []).length}`);
102695
102719
  }
102720
+ // Track cloned session IDs for cleanup
102721
+ if (finalResult.sessionId) {
102722
+ sessionIds.set(checkName, finalResult.sessionId);
102723
+ if (debug) {
102724
+ log(`🔧 Debug: Tracked cloned session for cleanup: ${finalResult.sessionId}`);
102725
+ }
102726
+ }
102696
102727
  }
102697
102728
  // Add checkName, group, schema, template info and timestamp to issues from config
102698
102729
  const enrichedIssues = (finalResult.issues || []).map(issue => ({
@@ -105493,6 +105524,24 @@ class ConfigManager {
105493
105524
  }
105494
105525
  }
105495
105526
  }
105527
+ // Validate session_mode configuration
105528
+ if (checkConfig.session_mode !== undefined) {
105529
+ if (checkConfig.session_mode !== 'clone' && checkConfig.session_mode !== 'append') {
105530
+ errors.push({
105531
+ field: `checks.${checkName}.session_mode`,
105532
+ message: `Invalid session_mode value for "${checkName}": must be 'clone' or 'append'`,
105533
+ value: checkConfig.session_mode,
105534
+ });
105535
+ }
105536
+ // session_mode only makes sense with reuse_ai_session
105537
+ if (!checkConfig.reuse_ai_session) {
105538
+ errors.push({
105539
+ field: `checks.${checkName}.session_mode`,
105540
+ message: `Check "${checkName}" has session_mode but no reuse_ai_session. session_mode requires reuse_ai_session to be set.`,
105541
+ value: checkConfig.session_mode,
105542
+ });
105543
+ }
105544
+ }
105496
105545
  // Validate tags configuration
105497
105546
  if (checkConfig.tags !== undefined) {
105498
105547
  if (!Array.isArray(checkConfig.tags)) {
@@ -106871,6 +106920,11 @@ exports.configSchema = {
106871
106920
  type: ['string', 'boolean'],
106872
106921
  description: 'Check name to reuse AI session from, or true to use first dependency (only works with depends_on)',
106873
106922
  },
106923
+ session_mode: {
106924
+ type: 'string',
106925
+ enum: ['clone', 'append'],
106926
+ description: "How to reuse AI session: 'clone' (default, copy history) or 'append' (share history)",
106927
+ },
106874
106928
  fail_if: {
106875
106929
  type: 'string',
106876
106930
  description: 'Simple fail condition - fails check if expression evaluates to true',
@@ -107997,11 +108051,13 @@ class GitHubCheckService {
107997
108051
  await this.clearOldAnnotations(owner, repo, prNumber, checkName, currentCommitSha, check_run_id);
107998
108052
  }
107999
108053
  const { conclusion, summary } = this.determineCheckRunConclusion(checkName, failureResults, reviewIssues, executionError);
108054
+ // Filter out system-level issues (fail_if conditions, internal errors)
108055
+ // These should not appear as annotations but affect the check conclusion
108056
+ let filteredIssues = reviewIssues.filter(issue => !(issue.file === 'system' && issue.line === 0));
108000
108057
  // Filter annotations to only include files changed in this commit
108001
108058
  // This prevents old annotations from previous commits showing up in the Files tab
108002
- let filteredIssues = reviewIssues;
108003
108059
  if (filesChangedInCommit && filesChangedInCommit.length > 0) {
108004
- filteredIssues = reviewIssues.filter(issue => filesChangedInCommit.some(changedFile => issue.file === changedFile));
108060
+ filteredIssues = filteredIssues.filter(issue => filesChangedInCommit.some(changedFile => issue.file === changedFile));
108005
108061
  }
108006
108062
  const annotations = this.convertIssuesToAnnotations(filteredIssues);
108007
108063
  await this.octokit.rest.checks.update({
@@ -108984,7 +109040,39 @@ async function handleEvent(octokit, inputs, eventName, context, config) {
108984
109040
  if (!owner || !repo) {
108985
109041
  throw new Error('Owner and repo are required');
108986
109042
  }
108987
- console.log(`Event: ${eventName}, Owner: ${owner}, Repo: ${repo}`);
109043
+ // Determine context type for better logging
109044
+ const isPullRequest = eventName === 'pull_request';
109045
+ const isIssue = eventName === 'issues';
109046
+ const isIssueComment = eventName === 'issue_comment';
109047
+ const isManualCLI = !eventName || eventName === 'unknown';
109048
+ // Map GitHub event to our event trigger format
109049
+ const eventType = mapGitHubEventToTrigger(eventName, context.event?.action);
109050
+ // Enhanced event logging with context
109051
+ if (isManualCLI) {
109052
+ console.log(`🖥️ Mode: Manual CLI`);
109053
+ console.log(`📂 Repository: ${owner}/${repo}`);
109054
+ }
109055
+ else {
109056
+ console.log(`🤖 Mode: GitHub Action`);
109057
+ console.log(`📂 Repository: ${owner}/${repo}`);
109058
+ console.log(`📋 Event: ${eventName}${context.event?.action ? ` (action: ${context.event?.action})` : ''}`);
109059
+ console.log(`🎯 Trigger: ${eventType}`);
109060
+ // Show context-specific information
109061
+ if (isPullRequest) {
109062
+ const prNumber = context.event?.pull_request?.number;
109063
+ console.log(`🔀 Context: Pull Request #${prNumber}`);
109064
+ }
109065
+ else if (isIssue) {
109066
+ const issueNumber = context.event?.issue?.number;
109067
+ console.log(`🎫 Context: Issue #${issueNumber}`);
109068
+ }
109069
+ else if (isIssueComment) {
109070
+ const issueOrPR = context.event?.issue;
109071
+ const isPR = issueOrPR?.pull_request ? true : false;
109072
+ const number = issueOrPR?.number;
109073
+ console.log(`💬 Context: Comment on ${isPR ? 'Pull Request' : 'Issue'} #${number}`);
109074
+ }
109075
+ }
108988
109076
  // Debug: Log the checks that are available in the loaded config
108989
109077
  const allChecks = Object.keys(config.checks || {});
108990
109078
  console.log(`📚 Total checks in loaded config: ${allChecks.length}`);
@@ -108992,8 +109080,6 @@ async function handleEvent(octokit, inputs, eventName, context, config) {
108992
109080
  // Only log check names if there aren't too many
108993
109081
  console.log(`📚 Available checks: ${allChecks.join(', ')}`);
108994
109082
  }
108995
- // Map GitHub event to our event trigger format
108996
- const eventType = mapGitHubEventToTrigger(eventName, context.event?.action);
108997
109083
  // Find checks that should run for this event
108998
109084
  let checksToRun = [];
108999
109085
  // First, get all checks that are configured for this event type
@@ -109117,7 +109203,7 @@ async function handleIssueEvent(octokit, owner, repo, context, inputs, config, c
109117
109203
  console.log('Skipping PR-related issue event');
109118
109204
  return;
109119
109205
  }
109120
- console.log(`Processing issue #${issue.number} event: ${action} with checks: ${checksToRun.join(', ')}`);
109206
+ console.log(`📋 Processing issue #${issue.number} event: ${action} with ${checksToRun.length} check(s): ${checksToRun.join(', ')}`);
109121
109207
  // For issue events, we need to create a PR-like structure for the checks to process
109122
109208
  // This allows us to reuse the existing check infrastructure
109123
109209
  const prInfo = {
@@ -109156,6 +109242,19 @@ async function handleIssueEvent(octokit, owner, repo, context, inputs, config, c
109156
109242
  config, undefined, // outputFormat
109157
109243
  inputs.debug === 'true');
109158
109244
  const { results } = executionResult;
109245
+ // Log execution results for debugging (only in debug mode)
109246
+ if (inputs.debug === 'true') {
109247
+ console.log(`📊 Check execution completed: ${Object.keys(results).length} group(s)`);
109248
+ for (const [group, checks] of Object.entries(results)) {
109249
+ console.log(` Group "${group}": ${checks.length} check(s)`);
109250
+ for (const check of checks) {
109251
+ const hasContent = check.content && check.content.trim();
109252
+ const contentLength = hasContent ? check.content.trim().length : 0;
109253
+ const issueCount = check.issues?.length || 0;
109254
+ console.log(` - ${check.checkName}: ${hasContent ? `${contentLength} chars` : 'empty'}, ${issueCount} issue(s)`);
109255
+ }
109256
+ }
109257
+ }
109159
109258
  // Format and post results as a comment on the issue
109160
109259
  if (Object.keys(results).length > 0) {
109161
109260
  let commentBody = '';
@@ -109167,18 +109266,24 @@ async function handleIssueEvent(octokit, owner, repo, context, inputs, config, c
109167
109266
  }
109168
109267
  }
109169
109268
  }
109170
- commentBody += `\n---\n*Powered by [Visor](https://github.com/probelabs/visor)*`;
109171
- // Post comment to the issue
109172
- await octokit.rest.issues.createComment({
109173
- owner,
109174
- repo,
109175
- issue_number: issue.number,
109176
- body: commentBody,
109177
- });
109178
- console.log(`✅ Posted issue assistant results to issue #${issue.number}`);
109269
+ // Only post if there's actual content (not just empty checks)
109270
+ if (commentBody.trim()) {
109271
+ commentBody += `\n---\n*Powered by [Visor](https://github.com/probelabs/visor)*`;
109272
+ // Post comment to the issue
109273
+ await octokit.rest.issues.createComment({
109274
+ owner,
109275
+ repo,
109276
+ issue_number: issue.number,
109277
+ body: commentBody,
109278
+ });
109279
+ console.log(`✅ Posted issue assistant results to issue #${issue.number}`);
109280
+ }
109281
+ else {
109282
+ console.log('ℹ️ No content to post - all checks returned empty results');
109283
+ }
109179
109284
  }
109180
109285
  else {
109181
- console.log('No results from issue assistant checks');
109286
+ console.log('⚠️ No results from issue assistant checks');
109182
109287
  }
109183
109288
  // Set outputs for GitHub Actions
109184
109289
  (0, core_1.setOutput)('review-completed', 'true');
@@ -109208,7 +109313,7 @@ async function handleIssueComment(octokit, owner, repo, context, inputs, actionC
109208
109313
  comment.body.includes('*Powered by [Visor](https://probelabs.com/visor)') ||
109209
109314
  comment.body.includes('*Powered by [Visor](https://github.com/probelabs/visor)'));
109210
109315
  if (isVisorBot || hasVisorMarkers) {
109211
- console.log(`Skipping visor comment to prevent recursion. Author: ${comment.user?.login}, Type: ${comment.user?.type}, Has markers: ${hasVisorMarkers}`);
109316
+ console.log(`✓ Skipping bot's own comment to prevent recursion. Author: ${comment.user?.login}, Type: ${comment.user?.type}, Has markers: ${hasVisorMarkers}`);
109212
109317
  return;
109213
109318
  }
109214
109319
  // Process comments on both issues and PRs
@@ -109635,7 +109740,11 @@ async function createGitHubChecks(octokit, inputs, owner, repo, headSha, checksT
109635
109740
  console.log(`✅ Created check run for ${checkName}: ${checkRun.url}`);
109636
109741
  }
109637
109742
  catch (error) {
109638
- console.error(`❌ Failed to create check run for ${checkName}:`, error);
109743
+ const errorMessage = error instanceof Error ? error.message : String(error);
109744
+ // Extract just the meaningful error message without stack trace
109745
+ const cleanMessage = errorMessage.split('\n')[0].replace('Error: ', '');
109746
+ console.error(`⚠️ Could not create check run for ${checkName}: ${cleanMessage}`);
109747
+ console.log('💬 Review will continue using PR comments instead');
109639
109748
  // Continue with other checks even if one fails
109640
109749
  }
109641
109750
  }
@@ -109661,7 +109770,10 @@ async function createGitHubChecks(octokit, inputs, owner, repo, headSha, checksT
109661
109770
  console.log(`✅ Created combined check run: ${checkRun.url}`);
109662
109771
  }
109663
109772
  catch (error) {
109664
- console.error(`❌ Failed to create combined check run:`, error);
109773
+ const errorMessage = error instanceof Error ? error.message : String(error);
109774
+ const cleanMessage = errorMessage.split('\n')[0].replace('Error: ', '');
109775
+ console.error(`⚠️ Could not create combined check run: ${cleanMessage}`);
109776
+ console.log('💬 Review will continue using PR comments instead');
109665
109777
  }
109666
109778
  }
109667
109779
  return {
@@ -109685,7 +109797,10 @@ async function createGitHubChecks(octokit, inputs, owner, repo, headSha, checksT
109685
109797
  };
109686
109798
  }
109687
109799
  else {
109688
- console.error('❌ Failed to create GitHub check runs:', error);
109800
+ const errorMessage = error instanceof Error ? error.message : String(error);
109801
+ const cleanMessage = errorMessage.split('\n')[0].replace('Error: ', '');
109802
+ console.error(`⚠️ Could not create GitHub check runs: ${cleanMessage}`);
109803
+ console.log('💬 Review will continue using PR comments instead');
109689
109804
  return {
109690
109805
  checkRunMap: null,
109691
109806
  checksApiAvailable: false,
@@ -110351,8 +110466,9 @@ class OutputFormatters {
110351
110466
  static formatAsTable(result, options = {}) {
110352
110467
  const { showDetails = false, groupByCategory = true } = options;
110353
110468
  let output = '';
110354
- // Calculate metrics from issues once at the top
110355
- const issues = result.reviewSummary.issues || [];
110469
+ // Filter out system-level issues (fail_if conditions, internal errors)
110470
+ // These should not appear in user-facing output
110471
+ const issues = (result.reviewSummary.issues || []).filter(issue => !(issue.file === 'system' && issue.line === 0));
110356
110472
  const totalIssues = issues.length;
110357
110473
  const criticalIssues = issues.filter(i => i.severity === 'critical').length;
110358
110474
  // Check if this is a code review context
@@ -110502,8 +110618,8 @@ class OutputFormatters {
110502
110618
  * Format analysis results as JSON
110503
110619
  */
110504
110620
  static formatAsJSON(result, options = {}) {
110505
- // Calculate metrics from issues
110506
- const issues = result.reviewSummary.issues;
110621
+ // Filter out system-level issues (fail_if conditions, internal errors)
110622
+ const issues = (result.reviewSummary.issues || []).filter(issue => !(issue.file === 'system' && issue.line === 0));
110507
110623
  const totalIssues = (0, reviewer_1.calculateTotalIssues)(issues);
110508
110624
  const criticalIssues = (0, reviewer_1.calculateCriticalIssues)(issues);
110509
110625
  const jsonResult = {
@@ -110538,8 +110654,8 @@ class OutputFormatters {
110538
110654
  * Format analysis results as SARIF 2.1.0
110539
110655
  */
110540
110656
  static formatAsSarif(result, _options = {}) {
110541
- // Get issues from result
110542
- const issues = result.reviewSummary.issues;
110657
+ // Filter out system-level issues (fail_if conditions, internal errors)
110658
+ const issues = (result.reviewSummary.issues || []).filter(issue => !(issue.file === 'system' && issue.line === 0));
110543
110659
  // Generate unique rule definitions for each issue category
110544
110660
  const rules = [
110545
110661
  {
@@ -110661,8 +110777,8 @@ class OutputFormatters {
110661
110777
  static formatAsMarkdown(result, options = {}) {
110662
110778
  const { showDetails = false, groupByCategory = true } = options;
110663
110779
  let output = '';
110664
- // Calculate metrics from issues
110665
- const issues = result.reviewSummary.issues;
110780
+ // Filter out system-level issues (fail_if conditions, internal errors)
110781
+ const issues = (result.reviewSummary.issues || []).filter(issue => !(issue.file === 'system' && issue.line === 0));
110666
110782
  const totalIssues = (0, reviewer_1.calculateTotalIssues)(issues);
110667
110783
  const criticalIssues = (0, reviewer_1.calculateCriticalIssues)(issues);
110668
110784
  // Header with summary
@@ -111635,10 +111751,12 @@ class AICheckProvider extends check_provider_interface_1.CheckProvider {
111635
111751
  let result;
111636
111752
  // Check if we should use session reuse
111637
111753
  if (sessionInfo?.reuseSession && sessionInfo.parentSessionId) {
111754
+ // Get session_mode from config, default to 'clone'
111755
+ const sessionMode = config.session_mode || 'clone';
111638
111756
  if (aiConfig.debug) {
111639
- console.error(`🔄 Debug: Using session reuse with parent session: ${sessionInfo.parentSessionId}`);
111757
+ console.error(`🔄 Debug: Using session reuse with parent session: ${sessionInfo.parentSessionId} (mode: ${sessionMode})`);
111640
111758
  }
111641
- result = await service.executeReviewWithSessionReuse(prInfo, processedPrompt, sessionInfo.parentSessionId, schema, config.checkName);
111759
+ result = await service.executeReviewWithSessionReuse(prInfo, processedPrompt, sessionInfo.parentSessionId, schema, config.checkName, sessionMode);
111642
111760
  }
111643
111761
  else {
111644
111762
  if (aiConfig.debug) {
@@ -114417,10 +114535,43 @@ exports.PRReviewer = PRReviewer;
114417
114535
  /***/ }),
114418
114536
 
114419
114537
  /***/ 46059:
114420
- /***/ ((__unused_webpack_module, exports) => {
114538
+ /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
114421
114539
 
114422
114540
  "use strict";
114423
114541
 
114542
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
114543
+ if (k2 === undefined) k2 = k;
114544
+ var desc = Object.getOwnPropertyDescriptor(m, k);
114545
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
114546
+ desc = { enumerable: true, get: function() { return m[k]; } };
114547
+ }
114548
+ Object.defineProperty(o, k2, desc);
114549
+ }) : (function(o, m, k, k2) {
114550
+ if (k2 === undefined) k2 = k;
114551
+ o[k2] = m[k];
114552
+ }));
114553
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
114554
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
114555
+ }) : function(o, v) {
114556
+ o["default"] = v;
114557
+ });
114558
+ var __importStar = (this && this.__importStar) || (function () {
114559
+ var ownKeys = function(o) {
114560
+ ownKeys = Object.getOwnPropertyNames || function (o) {
114561
+ var ar = [];
114562
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
114563
+ return ar;
114564
+ };
114565
+ return ownKeys(o);
114566
+ };
114567
+ return function (mod) {
114568
+ if (mod && mod.__esModule) return mod;
114569
+ var result = {};
114570
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
114571
+ __setModuleDefault(result, mod);
114572
+ return result;
114573
+ };
114574
+ })();
114424
114575
  Object.defineProperty(exports, "__esModule", ({ value: true }));
114425
114576
  exports.SessionRegistry = void 0;
114426
114577
  /**
@@ -114513,6 +114664,59 @@ class SessionRegistry {
114513
114664
  hasSession(sessionId) {
114514
114665
  return this.sessions.has(sessionId);
114515
114666
  }
114667
+ /**
114668
+ * Clone a session with a new session ID
114669
+ * Creates a new ProbeAgent with a copy of the conversation history
114670
+ */
114671
+ async cloneSession(sourceSessionId, newSessionId) {
114672
+ const sourceAgent = this.sessions.get(sourceSessionId);
114673
+ if (!sourceAgent) {
114674
+ console.error(`⚠️ Cannot clone session: ${sourceSessionId} not found`);
114675
+ return undefined;
114676
+ }
114677
+ try {
114678
+ // Access the conversation history from the source agent
114679
+ // ProbeAgent stores history in a private field, we need to access it via 'any'
114680
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
114681
+ const sourceHistory = sourceAgent.conversationHistory || [];
114682
+ // Create a new agent with the same configuration
114683
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
114684
+ const sourceOptions = sourceAgent.options || {};
114685
+ // Import ProbeAgent dynamically to create new instance
114686
+ const { ProbeAgent: ProbeAgentClass } = await Promise.resolve().then(() => __importStar(__nccwpck_require__(83841)));
114687
+ const clonedAgent = new ProbeAgentClass({
114688
+ ...sourceOptions,
114689
+ sessionId: newSessionId,
114690
+ });
114691
+ // Deep copy the conversation history to ensure complete isolation
114692
+ // Use JSON serialization for deep cloning to prevent shared object references
114693
+ if (sourceHistory.length > 0) {
114694
+ try {
114695
+ // Deep clone the history array and all message objects within it
114696
+ const deepClonedHistory = JSON.parse(JSON.stringify(sourceHistory));
114697
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
114698
+ clonedAgent.conversationHistory = deepClonedHistory;
114699
+ console.error(`📋 Cloned session ${sourceSessionId} → ${newSessionId} (${sourceHistory.length} messages, deep copy)`);
114700
+ }
114701
+ catch (cloneError) {
114702
+ // Fallback to shallow copy if deep clone fails (e.g., circular references)
114703
+ console.error(`⚠️ Warning: Deep clone failed for session ${sourceSessionId}, using shallow copy: ${cloneError}`);
114704
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
114705
+ clonedAgent.conversationHistory = [...sourceHistory];
114706
+ }
114707
+ }
114708
+ else {
114709
+ console.error(`📋 Cloned session ${sourceSessionId} → ${newSessionId} (no history)`);
114710
+ }
114711
+ // Register the cloned session
114712
+ this.registerSession(newSessionId, clonedAgent);
114713
+ return clonedAgent;
114714
+ }
114715
+ catch (error) {
114716
+ console.error(`⚠️ Failed to clone session ${sourceSessionId}: ${error}`);
114717
+ return undefined;
114718
+ }
114719
+ }
114516
114720
  /**
114517
114721
  * Register process exit handlers to cleanup sessions on exit
114518
114722
  */
@@ -232077,7 +232281,7 @@ module.exports = /*#__PURE__*/JSON.parse('{"application/1d-interleaved-parityfec
232077
232281
  /***/ ((module) => {
232078
232282
 
232079
232283
  "use strict";
232080
- module.exports = {"rE":"0.1.87"};
232284
+ module.exports = {"rE":"0.1.88"};
232081
232285
 
232082
232286
  /***/ })
232083
232287