@probelabs/visor 0.1.147 → 0.1.148-ee

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 (93) hide show
  1. package/dist/frontends/github-frontend.d.ts +2 -1
  2. package/dist/frontends/github-frontend.d.ts.map +1 -1
  3. package/dist/index.js +2444 -134
  4. package/dist/providers/ai-check-provider.d.ts.map +1 -1
  5. package/dist/scheduler/schedule-tool.d.ts.map +1 -1
  6. package/dist/scheduler/scheduler.d.ts +5 -0
  7. package/dist/scheduler/scheduler.d.ts.map +1 -1
  8. package/dist/sdk/{check-provider-registry-CTZA3EVE.mjs → check-provider-registry-AMYY2ZJY.mjs} +5 -6
  9. package/dist/sdk/{check-provider-registry-SCPM6DIT.mjs → check-provider-registry-DVQDGTOE.mjs} +5 -6
  10. package/dist/sdk/{chunk-4F5UVWAN.mjs → chunk-62TNF5PJ.mjs} +2 -2
  11. package/dist/sdk/{chunk-4F5UVWAN.mjs.map → chunk-62TNF5PJ.mjs.map} +1 -1
  12. package/dist/sdk/{chunk-H23T7J6Y.mjs → chunk-75Q63UNX.mjs} +2743 -277
  13. package/dist/sdk/chunk-75Q63UNX.mjs.map +1 -0
  14. package/dist/sdk/{chunk-JKWLGLDR.mjs → chunk-CISJ6DJW.mjs} +3 -3
  15. package/dist/sdk/{chunk-EWGX7LI7.mjs → chunk-H4AYMOAT.mjs} +2742 -276
  16. package/dist/sdk/chunk-H4AYMOAT.mjs.map +1 -0
  17. package/dist/sdk/{chunk-2NFKN6CY.mjs → chunk-RJLJUTSU.mjs} +2 -2
  18. package/dist/sdk/{failure-condition-evaluator-FHNZL2US.mjs → failure-condition-evaluator-IVCTD4BZ.mjs} +3 -3
  19. package/dist/sdk/{github-frontend-V3WUHL6E.mjs → github-frontend-DFT5G32K.mjs} +16 -4
  20. package/dist/sdk/github-frontend-DFT5G32K.mjs.map +1 -0
  21. package/dist/sdk/{host-GVR4UGZ3.mjs → host-H7IX4GBK.mjs} +2 -2
  22. package/dist/sdk/{host-UQUQIYFG.mjs → host-NZXGBBJI.mjs} +2 -2
  23. package/dist/sdk/knex-store-HPXJILBL.mjs +411 -0
  24. package/dist/sdk/knex-store-HPXJILBL.mjs.map +1 -0
  25. package/dist/sdk/loader-YSRMVXC3.mjs +89 -0
  26. package/dist/sdk/loader-YSRMVXC3.mjs.map +1 -0
  27. package/dist/sdk/opa-policy-engine-S2S2ULEI.mjs +655 -0
  28. package/dist/sdk/opa-policy-engine-S2S2ULEI.mjs.map +1 -0
  29. package/dist/sdk/{routing-CZ36LVVS.mjs → routing-LU5PAREW.mjs} +4 -4
  30. package/dist/sdk/{check-provider-registry-CDL5AJSI.mjs → schedule-tool-4JMWZCCK.mjs} +15 -10
  31. package/dist/sdk/{workflow-check-provider-3K7732MW.mjs → schedule-tool-CONR4VW3.mjs} +15 -10
  32. package/dist/sdk/{schedule-tool-handler-KFYNV7HL.mjs → schedule-tool-handler-AXMR7NBI.mjs} +5 -6
  33. package/dist/sdk/{schedule-tool-handler-QUMAF2DJ.mjs → schedule-tool-handler-YUC6CAXX.mjs} +5 -6
  34. package/dist/sdk/sdk.js +2831 -371
  35. package/dist/sdk/sdk.js.map +1 -1
  36. package/dist/sdk/sdk.mjs +4 -5
  37. package/dist/sdk/sdk.mjs.map +1 -1
  38. package/dist/sdk/{trace-helpers-W7TF5ZKF.mjs → trace-helpers-6ROJR7N3.mjs} +2 -2
  39. package/dist/sdk/validator-XTZJZZJH.mjs +134 -0
  40. package/dist/sdk/validator-XTZJZZJH.mjs.map +1 -0
  41. package/dist/sdk/{workflow-check-provider-5453TW65.mjs → workflow-check-provider-DYSO3PML.mjs} +5 -6
  42. package/dist/sdk/{workflow-check-provider-HMABCGB5.mjs → workflow-check-provider-MMB7L3YG.mjs} +5 -6
  43. package/dist/state-machine/context/build-engine-context.d.ts.map +1 -1
  44. package/dist/utils/tool-resolver.d.ts.map +1 -1
  45. package/dist/utils/workspace-manager.d.ts +31 -8
  46. package/dist/utils/workspace-manager.d.ts.map +1 -1
  47. package/dist/utils/worktree-manager.d.ts +6 -0
  48. package/dist/utils/worktree-manager.d.ts.map +1 -1
  49. package/package.json +2 -2
  50. package/dist/output/traces/run-2026-02-27T11-27-22-261Z.ndjson +0 -138
  51. package/dist/output/traces/run-2026-02-27T11-28-08-546Z.ndjson +0 -1442
  52. package/dist/sdk/chunk-EWGX7LI7.mjs.map +0 -1
  53. package/dist/sdk/chunk-FBJ7MC7R.mjs +0 -1502
  54. package/dist/sdk/chunk-H23T7J6Y.mjs.map +0 -1
  55. package/dist/sdk/chunk-JKWLGLDR.mjs.map +0 -1
  56. package/dist/sdk/chunk-R77LN3OE.mjs +0 -40693
  57. package/dist/sdk/chunk-R77LN3OE.mjs.map +0 -1
  58. package/dist/sdk/chunk-V2QW6ECX.mjs +0 -739
  59. package/dist/sdk/chunk-V2QW6ECX.mjs.map +0 -1
  60. package/dist/sdk/chunk-XKCER23W.mjs +0 -1490
  61. package/dist/sdk/chunk-XKCER23W.mjs.map +0 -1
  62. package/dist/sdk/chunk-YQZW3D2V.mjs +0 -443
  63. package/dist/sdk/chunk-YQZW3D2V.mjs.map +0 -1
  64. package/dist/sdk/failure-condition-evaluator-2B5WY7QN.mjs +0 -17
  65. package/dist/sdk/github-frontend-47EU2HBY.mjs +0 -1356
  66. package/dist/sdk/github-frontend-47EU2HBY.mjs.map +0 -1
  67. package/dist/sdk/github-frontend-V3WUHL6E.mjs.map +0 -1
  68. package/dist/sdk/routing-THIWDEYY.mjs +0 -25
  69. package/dist/sdk/schedule-tool-2COUUTF7.mjs +0 -18
  70. package/dist/sdk/schedule-tool-handler-GEH62OUM.mjs +0 -40
  71. package/dist/sdk/trace-helpers-EHDZ42HH.mjs +0 -25
  72. package/dist/sdk/trace-helpers-EHDZ42HH.mjs.map +0 -1
  73. package/dist/sdk/trace-helpers-W7TF5ZKF.mjs.map +0 -1
  74. package/dist/sdk/workflow-check-provider-3K7732MW.mjs.map +0 -1
  75. package/dist/sdk/workflow-check-provider-5453TW65.mjs.map +0 -1
  76. package/dist/sdk/workflow-check-provider-HMABCGB5.mjs.map +0 -1
  77. package/dist/traces/run-2026-02-27T11-27-22-261Z.ndjson +0 -138
  78. package/dist/traces/run-2026-02-27T11-28-08-546Z.ndjson +0 -1442
  79. /package/dist/sdk/{check-provider-registry-CDL5AJSI.mjs.map → check-provider-registry-AMYY2ZJY.mjs.map} +0 -0
  80. /package/dist/sdk/{check-provider-registry-CTZA3EVE.mjs.map → check-provider-registry-DVQDGTOE.mjs.map} +0 -0
  81. /package/dist/sdk/{chunk-FBJ7MC7R.mjs.map → chunk-CISJ6DJW.mjs.map} +0 -0
  82. /package/dist/sdk/{chunk-2NFKN6CY.mjs.map → chunk-RJLJUTSU.mjs.map} +0 -0
  83. /package/dist/sdk/{check-provider-registry-SCPM6DIT.mjs.map → failure-condition-evaluator-IVCTD4BZ.mjs.map} +0 -0
  84. /package/dist/sdk/{host-GVR4UGZ3.mjs.map → host-H7IX4GBK.mjs.map} +0 -0
  85. /package/dist/sdk/{host-UQUQIYFG.mjs.map → host-NZXGBBJI.mjs.map} +0 -0
  86. /package/dist/sdk/{failure-condition-evaluator-2B5WY7QN.mjs.map → routing-LU5PAREW.mjs.map} +0 -0
  87. /package/dist/sdk/{failure-condition-evaluator-FHNZL2US.mjs.map → schedule-tool-4JMWZCCK.mjs.map} +0 -0
  88. /package/dist/sdk/{routing-CZ36LVVS.mjs.map → schedule-tool-CONR4VW3.mjs.map} +0 -0
  89. /package/dist/sdk/{routing-THIWDEYY.mjs.map → schedule-tool-handler-AXMR7NBI.mjs.map} +0 -0
  90. /package/dist/sdk/{schedule-tool-2COUUTF7.mjs.map → schedule-tool-handler-YUC6CAXX.mjs.map} +0 -0
  91. /package/dist/sdk/{schedule-tool-handler-GEH62OUM.mjs.map → trace-helpers-6ROJR7N3.mjs.map} +0 -0
  92. /package/dist/sdk/{schedule-tool-handler-KFYNV7HL.mjs.map → workflow-check-provider-DYSO3PML.mjs.map} +0 -0
  93. /package/dist/sdk/{schedule-tool-handler-QUMAF2DJ.mjs.map → workflow-check-provider-MMB7L3YG.mjs.map} +0 -0
package/dist/sdk/sdk.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  StateMachineExecutionEngine,
3
3
  init_state_machine_execution_engine
4
- } from "./chunk-R77LN3OE.mjs";
4
+ } from "./chunk-75Q63UNX.mjs";
5
5
  import "./chunk-KFKHU6CM.mjs";
6
6
  import "./chunk-M3BYMES6.mjs";
7
7
  import "./chunk-LG4AUKHB.mjs";
@@ -14,10 +14,9 @@ import {
14
14
  init_config
15
15
  } from "./chunk-XNTBSV6M.mjs";
16
16
  import "./chunk-NCWIZVOT.mjs";
17
- import "./chunk-XKCER23W.mjs";
18
- import "./chunk-JKWLGLDR.mjs";
19
- import "./chunk-2NFKN6CY.mjs";
20
- import "./chunk-YQZW3D2V.mjs";
17
+ import "./chunk-CISJ6DJW.mjs";
18
+ import "./chunk-RJLJUTSU.mjs";
19
+ import "./chunk-62TNF5PJ.mjs";
21
20
  import "./chunk-JL7JXCET.mjs";
22
21
  import "./chunk-ZUEQNCKB.mjs";
23
22
  import "./chunk-25IC7KXZ.mjs";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/sdk.ts"],"sourcesContent":["/*\n Thin SDK façade for programmatic use of Visor.\n - No new execution logic; delegates to existing engine and config manager.\n - Dual ESM/CJS bundle via tsup.\n*/\n\nimport { StateMachineExecutionEngine } from './state-machine-execution-engine';\nimport { ConfigManager } from './config';\nimport type { AnalysisResult } from './output-formatters';\nimport type { VisorConfig, TagFilter, HumanInputRequest } from './types/config';\nimport type { ExecutionContext } from './providers/check-provider.interface';\n\nexport type { VisorConfig, TagFilter, HumanInputRequest, ExecutionContext };\n\nexport interface VisorOptions {\n cwd?: string;\n debug?: boolean;\n maxParallelism?: number;\n failFast?: boolean;\n tagFilter?: TagFilter;\n}\n\nexport interface RunOptions extends VisorOptions {\n config?: VisorConfig;\n configPath?: string;\n checks?: string[]; // default: all checks from config\n timeoutMs?: number;\n output?: { format?: 'table' | 'json' | 'markdown' | 'sarif' };\n /** Strict mode: treat config warnings (like unknown keys) as errors (default: false) */\n strictValidation?: boolean;\n /** Execution context for providers (CLI message, hooks, etc.) */\n executionContext?: ExecutionContext;\n}\n\n/**\n * Load and validate a Visor config.\n * @param configOrPath - Config object, file path, or omit to discover defaults\n * @param options - Validation options\n * @returns Validated config with defaults applied\n */\nexport async function loadConfig(\n configOrPath?: string | Partial<VisorConfig>,\n options?: { strict?: boolean }\n): Promise<VisorConfig> {\n const cm = new ConfigManager();\n\n // If it's an object, validate and return with defaults\n if (typeof configOrPath === 'object' && configOrPath !== null) {\n cm.validateConfig(configOrPath, options?.strict ?? false);\n\n // Apply lightweight defaults without expensive file system operations\n const defaultConfig: Partial<VisorConfig> = {\n version: '1.0',\n checks: {},\n max_parallelism: 3,\n fail_fast: false,\n };\n\n return {\n ...defaultConfig,\n ...configOrPath,\n checks: configOrPath.checks || {},\n } as VisorConfig;\n }\n\n // If it's a string, load from file\n if (typeof configOrPath === 'string') {\n return cm.loadConfig(configOrPath);\n }\n\n // Otherwise discover default config file\n return cm.findAndLoadConfig();\n}\n\n/** Expand check IDs by including their dependencies (shallow->deep). */\nexport function resolveChecks(checkIds: string[], config: VisorConfig | undefined): string[] {\n if (!config?.checks) return Array.from(new Set(checkIds));\n const resolved = new Set<string>();\n const visiting = new Set<string>();\n const result: string[] = [];\n\n const dfs = (id: string, stack: string[] = []) => {\n if (resolved.has(id)) return;\n if (visiting.has(id)) {\n const cycle = [...stack, id].join(' -> ');\n throw new Error(`Circular dependency detected involving check: ${id} (path: ${cycle})`);\n }\n visiting.add(id);\n const deps = config.checks![id]?.depends_on || [];\n for (const d of deps) dfs(d, [...stack, id]);\n if (!result.includes(id)) result.push(id);\n visiting.delete(id);\n resolved.add(id);\n };\n\n for (const id of checkIds) dfs(id);\n return result;\n}\n\n/**\n * Run Visor checks programmatically. Returns the same AnalysisResult shape used by the CLI.\n * Thin wrapper around CheckExecutionEngine.executeChecks.\n */\nexport async function runChecks(opts: RunOptions = {}): Promise<AnalysisResult> {\n const cm = new ConfigManager();\n let config: VisorConfig;\n\n if (opts.config) {\n // Validate manually constructed config\n // In strict mode, unknown keys are treated as errors\n cm.validateConfig(opts.config, opts.strictValidation ?? false);\n config = opts.config;\n } else if (opts.configPath) {\n config = await cm.loadConfig(opts.configPath);\n } else {\n config = await cm.findAndLoadConfig();\n }\n\n const checks =\n opts.checks && opts.checks.length > 0\n ? resolveChecks(opts.checks, config)\n : Object.keys(config.checks || {});\n\n // Always use StateMachineExecutionEngine\n const engine = new StateMachineExecutionEngine(opts.cwd);\n\n // Set execution context if provided\n if (opts.executionContext) {\n engine.setExecutionContext(opts.executionContext);\n }\n\n const result = await engine.executeChecks({\n checks,\n workingDirectory: opts.cwd,\n timeout: opts.timeoutMs,\n maxParallelism: opts.maxParallelism,\n failFast: opts.failFast,\n outputFormat: opts.output?.format,\n config,\n debug: opts.debug,\n tagFilter: opts.tagFilter,\n });\n\n return result;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA;AACA;AAiCA,eAAsB,WACpB,cACA,SACsB;AACtB,QAAM,KAAK,IAAI,cAAc;AAG7B,MAAI,OAAO,iBAAiB,YAAY,iBAAiB,MAAM;AAC7D,OAAG,eAAe,cAAc,SAAS,UAAU,KAAK;AAGxD,UAAM,gBAAsC;AAAA,MAC1C,SAAS;AAAA,MACT,QAAQ,CAAC;AAAA,MACT,iBAAiB;AAAA,MACjB,WAAW;AAAA,IACb;AAEA,WAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAG;AAAA,MACH,QAAQ,aAAa,UAAU,CAAC;AAAA,IAClC;AAAA,EACF;AAGA,MAAI,OAAO,iBAAiB,UAAU;AACpC,WAAO,GAAG,WAAW,YAAY;AAAA,EACnC;AAGA,SAAO,GAAG,kBAAkB;AAC9B;AAGO,SAAS,cAAc,UAAoB,QAA2C;AAC3F,MAAI,CAAC,QAAQ,OAAQ,QAAO,MAAM,KAAK,IAAI,IAAI,QAAQ,CAAC;AACxD,QAAM,WAAW,oBAAI,IAAY;AACjC,QAAM,WAAW,oBAAI,IAAY;AACjC,QAAM,SAAmB,CAAC;AAE1B,QAAM,MAAM,CAAC,IAAY,QAAkB,CAAC,MAAM;AAChD,QAAI,SAAS,IAAI,EAAE,EAAG;AACtB,QAAI,SAAS,IAAI,EAAE,GAAG;AACpB,YAAM,QAAQ,CAAC,GAAG,OAAO,EAAE,EAAE,KAAK,MAAM;AACxC,YAAM,IAAI,MAAM,iDAAiD,EAAE,WAAW,KAAK,GAAG;AAAA,IACxF;AACA,aAAS,IAAI,EAAE;AACf,UAAM,OAAO,OAAO,OAAQ,EAAE,GAAG,cAAc,CAAC;AAChD,eAAW,KAAK,KAAM,KAAI,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC;AAC3C,QAAI,CAAC,OAAO,SAAS,EAAE,EAAG,QAAO,KAAK,EAAE;AACxC,aAAS,OAAO,EAAE;AAClB,aAAS,IAAI,EAAE;AAAA,EACjB;AAEA,aAAW,MAAM,SAAU,KAAI,EAAE;AACjC,SAAO;AACT;AAMA,eAAsB,UAAU,OAAmB,CAAC,GAA4B;AAC9E,QAAM,KAAK,IAAI,cAAc;AAC7B,MAAI;AAEJ,MAAI,KAAK,QAAQ;AAGf,OAAG,eAAe,KAAK,QAAQ,KAAK,oBAAoB,KAAK;AAC7D,aAAS,KAAK;AAAA,EAChB,WAAW,KAAK,YAAY;AAC1B,aAAS,MAAM,GAAG,WAAW,KAAK,UAAU;AAAA,EAC9C,OAAO;AACL,aAAS,MAAM,GAAG,kBAAkB;AAAA,EACtC;AAEA,QAAM,SACJ,KAAK,UAAU,KAAK,OAAO,SAAS,IAChC,cAAc,KAAK,QAAQ,MAAM,IACjC,OAAO,KAAK,OAAO,UAAU,CAAC,CAAC;AAGrC,QAAM,SAAS,IAAI,4BAA4B,KAAK,GAAG;AAGvD,MAAI,KAAK,kBAAkB;AACzB,WAAO,oBAAoB,KAAK,gBAAgB;AAAA,EAClD;AAEA,QAAM,SAAS,MAAM,OAAO,cAAc;AAAA,IACxC;AAAA,IACA,kBAAkB,KAAK;AAAA,IACvB,SAAS,KAAK;AAAA,IACd,gBAAgB,KAAK;AAAA,IACrB,UAAU,KAAK;AAAA,IACf,cAAc,KAAK,QAAQ;AAAA,IAC3B;AAAA,IACA,OAAO,KAAK;AAAA,IACZ,WAAW,KAAK;AAAA,EAClB,CAAC;AAED,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../src/sdk.ts"],"sourcesContent":["/*\n Thin SDK façade for programmatic use of Visor.\n - No new execution logic; delegates to existing engine and config manager.\n - Dual ESM/CJS bundle via tsup.\n*/\n\nimport { StateMachineExecutionEngine } from './state-machine-execution-engine';\nimport { ConfigManager } from './config';\nimport type { AnalysisResult } from './output-formatters';\nimport type { VisorConfig, TagFilter, HumanInputRequest } from './types/config';\nimport type { ExecutionContext } from './providers/check-provider.interface';\n\nexport type { VisorConfig, TagFilter, HumanInputRequest, ExecutionContext };\n\nexport interface VisorOptions {\n cwd?: string;\n debug?: boolean;\n maxParallelism?: number;\n failFast?: boolean;\n tagFilter?: TagFilter;\n}\n\nexport interface RunOptions extends VisorOptions {\n config?: VisorConfig;\n configPath?: string;\n checks?: string[]; // default: all checks from config\n timeoutMs?: number;\n output?: { format?: 'table' | 'json' | 'markdown' | 'sarif' };\n /** Strict mode: treat config warnings (like unknown keys) as errors (default: false) */\n strictValidation?: boolean;\n /** Execution context for providers (CLI message, hooks, etc.) */\n executionContext?: ExecutionContext;\n}\n\n/**\n * Load and validate a Visor config.\n * @param configOrPath - Config object, file path, or omit to discover defaults\n * @param options - Validation options\n * @returns Validated config with defaults applied\n */\nexport async function loadConfig(\n configOrPath?: string | Partial<VisorConfig>,\n options?: { strict?: boolean }\n): Promise<VisorConfig> {\n const cm = new ConfigManager();\n\n // If it's an object, validate and return with defaults\n if (typeof configOrPath === 'object' && configOrPath !== null) {\n cm.validateConfig(configOrPath, options?.strict ?? false);\n\n // Apply lightweight defaults without expensive file system operations\n const defaultConfig: Partial<VisorConfig> = {\n version: '1.0',\n checks: {},\n max_parallelism: 3,\n fail_fast: false,\n };\n\n return {\n ...defaultConfig,\n ...configOrPath,\n checks: configOrPath.checks || {},\n } as VisorConfig;\n }\n\n // If it's a string, load from file\n if (typeof configOrPath === 'string') {\n return cm.loadConfig(configOrPath);\n }\n\n // Otherwise discover default config file\n return cm.findAndLoadConfig();\n}\n\n/** Expand check IDs by including their dependencies (shallow->deep). */\nexport function resolveChecks(checkIds: string[], config: VisorConfig | undefined): string[] {\n if (!config?.checks) return Array.from(new Set(checkIds));\n const resolved = new Set<string>();\n const visiting = new Set<string>();\n const result: string[] = [];\n\n const dfs = (id: string, stack: string[] = []) => {\n if (resolved.has(id)) return;\n if (visiting.has(id)) {\n const cycle = [...stack, id].join(' -> ');\n throw new Error(`Circular dependency detected involving check: ${id} (path: ${cycle})`);\n }\n visiting.add(id);\n const deps = config.checks![id]?.depends_on || [];\n for (const d of deps) dfs(d, [...stack, id]);\n if (!result.includes(id)) result.push(id);\n visiting.delete(id);\n resolved.add(id);\n };\n\n for (const id of checkIds) dfs(id);\n return result;\n}\n\n/**\n * Run Visor checks programmatically. Returns the same AnalysisResult shape used by the CLI.\n * Thin wrapper around CheckExecutionEngine.executeChecks.\n */\nexport async function runChecks(opts: RunOptions = {}): Promise<AnalysisResult> {\n const cm = new ConfigManager();\n let config: VisorConfig;\n\n if (opts.config) {\n // Validate manually constructed config\n // In strict mode, unknown keys are treated as errors\n cm.validateConfig(opts.config, opts.strictValidation ?? false);\n config = opts.config;\n } else if (opts.configPath) {\n config = await cm.loadConfig(opts.configPath);\n } else {\n config = await cm.findAndLoadConfig();\n }\n\n const checks =\n opts.checks && opts.checks.length > 0\n ? resolveChecks(opts.checks, config)\n : Object.keys(config.checks || {});\n\n // Always use StateMachineExecutionEngine\n const engine = new StateMachineExecutionEngine(opts.cwd);\n\n // Set execution context if provided\n if (opts.executionContext) {\n engine.setExecutionContext(opts.executionContext);\n }\n\n const result = await engine.executeChecks({\n checks,\n workingDirectory: opts.cwd,\n timeout: opts.timeoutMs,\n maxParallelism: opts.maxParallelism,\n failFast: opts.failFast,\n outputFormat: opts.output?.format,\n config,\n debug: opts.debug,\n tagFilter: opts.tagFilter,\n });\n\n return result;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA;AACA;AAiCA,eAAsB,WACpB,cACA,SACsB;AACtB,QAAM,KAAK,IAAI,cAAc;AAG7B,MAAI,OAAO,iBAAiB,YAAY,iBAAiB,MAAM;AAC7D,OAAG,eAAe,cAAc,SAAS,UAAU,KAAK;AAGxD,UAAM,gBAAsC;AAAA,MAC1C,SAAS;AAAA,MACT,QAAQ,CAAC;AAAA,MACT,iBAAiB;AAAA,MACjB,WAAW;AAAA,IACb;AAEA,WAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAG;AAAA,MACH,QAAQ,aAAa,UAAU,CAAC;AAAA,IAClC;AAAA,EACF;AAGA,MAAI,OAAO,iBAAiB,UAAU;AACpC,WAAO,GAAG,WAAW,YAAY;AAAA,EACnC;AAGA,SAAO,GAAG,kBAAkB;AAC9B;AAGO,SAAS,cAAc,UAAoB,QAA2C;AAC3F,MAAI,CAAC,QAAQ,OAAQ,QAAO,MAAM,KAAK,IAAI,IAAI,QAAQ,CAAC;AACxD,QAAM,WAAW,oBAAI,IAAY;AACjC,QAAM,WAAW,oBAAI,IAAY;AACjC,QAAM,SAAmB,CAAC;AAE1B,QAAM,MAAM,CAAC,IAAY,QAAkB,CAAC,MAAM;AAChD,QAAI,SAAS,IAAI,EAAE,EAAG;AACtB,QAAI,SAAS,IAAI,EAAE,GAAG;AACpB,YAAM,QAAQ,CAAC,GAAG,OAAO,EAAE,EAAE,KAAK,MAAM;AACxC,YAAM,IAAI,MAAM,iDAAiD,EAAE,WAAW,KAAK,GAAG;AAAA,IACxF;AACA,aAAS,IAAI,EAAE;AACf,UAAM,OAAO,OAAO,OAAQ,EAAE,GAAG,cAAc,CAAC;AAChD,eAAW,KAAK,KAAM,KAAI,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC;AAC3C,QAAI,CAAC,OAAO,SAAS,EAAE,EAAG,QAAO,KAAK,EAAE;AACxC,aAAS,OAAO,EAAE;AAClB,aAAS,IAAI,EAAE;AAAA,EACjB;AAEA,aAAW,MAAM,SAAU,KAAI,EAAE;AACjC,SAAO;AACT;AAMA,eAAsB,UAAU,OAAmB,CAAC,GAA4B;AAC9E,QAAM,KAAK,IAAI,cAAc;AAC7B,MAAI;AAEJ,MAAI,KAAK,QAAQ;AAGf,OAAG,eAAe,KAAK,QAAQ,KAAK,oBAAoB,KAAK;AAC7D,aAAS,KAAK;AAAA,EAChB,WAAW,KAAK,YAAY;AAC1B,aAAS,MAAM,GAAG,WAAW,KAAK,UAAU;AAAA,EAC9C,OAAO;AACL,aAAS,MAAM,GAAG,kBAAkB;AAAA,EACtC;AAEA,QAAM,SACJ,KAAK,UAAU,KAAK,OAAO,SAAS,IAChC,cAAc,KAAK,QAAQ,MAAM,IACjC,OAAO,KAAK,OAAO,UAAU,CAAC,CAAC;AAGrC,QAAM,SAAS,IAAI,4BAA4B,KAAK,GAAG;AAGvD,MAAI,KAAK,kBAAkB;AACzB,WAAO,oBAAoB,KAAK,gBAAgB;AAAA,EAClD;AAEA,QAAM,SAAS,MAAM,OAAO,cAAc;AAAA,IACxC;AAAA,IACA,kBAAkB,KAAK;AAAA,IACvB,SAAS,KAAK;AAAA,IACd,gBAAgB,KAAK;AAAA,IACrB,UAAU,KAAK;AAAA,IACf,cAAc,KAAK,QAAQ;AAAA,IAC3B;AAAA,IACA,OAAO,KAAK;AAAA,IACZ,WAAW,KAAK;AAAA,EAClB,CAAC;AAED,SAAO;AACT;","names":[]}
@@ -8,7 +8,7 @@ import {
8
8
  setSpanAttributes,
9
9
  setSpanError,
10
10
  withActiveSpan
11
- } from "./chunk-YQZW3D2V.mjs";
11
+ } from "./chunk-62TNF5PJ.mjs";
12
12
  import "./chunk-UCMJJ3IM.mjs";
13
13
  import "./chunk-J7LXIPZS.mjs";
14
14
  init_trace_helpers();
@@ -22,4 +22,4 @@ export {
22
22
  setSpanError,
23
23
  withActiveSpan
24
24
  };
25
- //# sourceMappingURL=trace-helpers-W7TF5ZKF.mjs.map
25
+ //# sourceMappingURL=trace-helpers-6ROJR7N3.mjs.map
@@ -0,0 +1,134 @@
1
+ import {
2
+ __esm
3
+ } from "./chunk-J7LXIPZS.mjs";
4
+
5
+ // src/enterprise/license/validator.ts
6
+ import * as crypto from "crypto";
7
+ import * as fs from "fs";
8
+ import * as path from "path";
9
+ var LicenseValidator;
10
+ var init_validator = __esm({
11
+ "src/enterprise/license/validator.ts"() {
12
+ LicenseValidator = class _LicenseValidator {
13
+ /** Ed25519 public key for license verification (PEM format). */
14
+ static PUBLIC_KEY = "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEAI/Zd08EFmgIdrDm/HXd0l3/5GBt7R1PrdvhdmEXhJlU=\n-----END PUBLIC KEY-----\n";
15
+ cache = null;
16
+ static CACHE_TTL = 5 * 60 * 1e3;
17
+ // 5 minutes
18
+ static GRACE_PERIOD = 72 * 3600 * 1e3;
19
+ // 72 hours after expiry
20
+ /**
21
+ * Load and validate license from environment or file.
22
+ *
23
+ * Resolution order:
24
+ * 1. VISOR_LICENSE env var (JWT string)
25
+ * 2. VISOR_LICENSE_FILE env var (path to file)
26
+ * 3. .visor-license in project root (cwd)
27
+ * 4. .visor-license in ~/.config/visor/
28
+ */
29
+ async loadAndValidate() {
30
+ if (this.cache && Date.now() - this.cache.validatedAt < _LicenseValidator.CACHE_TTL) {
31
+ return this.cache.payload;
32
+ }
33
+ const token = this.resolveToken();
34
+ if (!token) return null;
35
+ const payload = this.verifyAndDecode(token);
36
+ if (!payload) return null;
37
+ this.cache = { payload, validatedAt: Date.now() };
38
+ return payload;
39
+ }
40
+ /** Check if a specific feature is licensed */
41
+ hasFeature(feature) {
42
+ if (!this.cache) return false;
43
+ return this.cache.payload.features.includes(feature);
44
+ }
45
+ /** Check if license is valid (with grace period) */
46
+ isValid() {
47
+ if (!this.cache) return false;
48
+ const now = Date.now();
49
+ const expiryMs = this.cache.payload.exp * 1e3;
50
+ return now < expiryMs + _LicenseValidator.GRACE_PERIOD;
51
+ }
52
+ /** Check if the license is within its grace period (expired but still valid) */
53
+ isInGracePeriod() {
54
+ if (!this.cache) return false;
55
+ const now = Date.now();
56
+ const expiryMs = this.cache.payload.exp * 1e3;
57
+ return now >= expiryMs && now < expiryMs + _LicenseValidator.GRACE_PERIOD;
58
+ }
59
+ resolveToken() {
60
+ if (process.env.VISOR_LICENSE) {
61
+ return process.env.VISOR_LICENSE.trim();
62
+ }
63
+ if (process.env.VISOR_LICENSE_FILE) {
64
+ const resolved = path.resolve(process.env.VISOR_LICENSE_FILE);
65
+ const home2 = process.env.HOME || process.env.USERPROFILE || "";
66
+ const allowedPrefixes = [path.normalize(process.cwd())];
67
+ if (home2) allowedPrefixes.push(path.normalize(path.join(home2, ".config", "visor")));
68
+ let realPath;
69
+ try {
70
+ realPath = fs.realpathSync(resolved);
71
+ } catch {
72
+ return null;
73
+ }
74
+ const isSafe = allowedPrefixes.some(
75
+ (prefix) => realPath === prefix || realPath.startsWith(prefix + path.sep)
76
+ );
77
+ if (!isSafe) return null;
78
+ return this.readFile(realPath);
79
+ }
80
+ const cwdPath = path.join(process.cwd(), ".visor-license");
81
+ const cwdToken = this.readFile(cwdPath);
82
+ if (cwdToken) return cwdToken;
83
+ const home = process.env.HOME || process.env.USERPROFILE || "";
84
+ if (home) {
85
+ const configPath = path.join(home, ".config", "visor", ".visor-license");
86
+ const configToken = this.readFile(configPath);
87
+ if (configToken) return configToken;
88
+ }
89
+ return null;
90
+ }
91
+ readFile(filePath) {
92
+ try {
93
+ return fs.readFileSync(filePath, "utf-8").trim();
94
+ } catch {
95
+ return null;
96
+ }
97
+ }
98
+ verifyAndDecode(token) {
99
+ try {
100
+ const parts = token.split(".");
101
+ if (parts.length !== 3) return null;
102
+ const [headerB64, payloadB64, signatureB64] = parts;
103
+ const header = JSON.parse(Buffer.from(headerB64, "base64url").toString());
104
+ if (header.alg !== "EdDSA") return null;
105
+ const data = `${headerB64}.${payloadB64}`;
106
+ const signature = Buffer.from(signatureB64, "base64url");
107
+ const publicKey = crypto.createPublicKey(_LicenseValidator.PUBLIC_KEY);
108
+ if (publicKey.asymmetricKeyType !== "ed25519") {
109
+ return null;
110
+ }
111
+ const isValid = crypto.verify(null, Buffer.from(data), publicKey, signature);
112
+ if (!isValid) return null;
113
+ const payload = JSON.parse(Buffer.from(payloadB64, "base64url").toString());
114
+ if (!payload.org || !Array.isArray(payload.features) || typeof payload.exp !== "number" || typeof payload.iat !== "number" || !payload.sub) {
115
+ return null;
116
+ }
117
+ const now = Date.now();
118
+ const expiryMs = payload.exp * 1e3;
119
+ if (now >= expiryMs + _LicenseValidator.GRACE_PERIOD) {
120
+ return null;
121
+ }
122
+ return payload;
123
+ } catch {
124
+ return null;
125
+ }
126
+ }
127
+ };
128
+ }
129
+ });
130
+ init_validator();
131
+ export {
132
+ LicenseValidator
133
+ };
134
+ //# sourceMappingURL=validator-XTZJZZJH.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/enterprise/license/validator.ts"],"sourcesContent":["/**\n * Copyright (c) ProbeLabs. All rights reserved.\n * Licensed under the Elastic License 2.0; you may not use this file except\n * in compliance with the Elastic License 2.0.\n */\n\nimport * as crypto from 'crypto';\nimport * as fs from 'fs';\nimport * as path from 'path';\n\nexport interface LicensePayload {\n org: string;\n features: string[];\n exp: number;\n iat: number;\n sub: string;\n}\n\nexport class LicenseValidator {\n /** Ed25519 public key for license verification (PEM format). */\n private static PUBLIC_KEY =\n '-----BEGIN PUBLIC KEY-----\\n' +\n 'MCowBQYDK2VwAyEAI/Zd08EFmgIdrDm/HXd0l3/5GBt7R1PrdvhdmEXhJlU=\\n' +\n '-----END PUBLIC KEY-----\\n';\n\n private cache: { payload: LicensePayload; validatedAt: number } | null = null;\n private static CACHE_TTL = 5 * 60 * 1000; // 5 minutes\n private static GRACE_PERIOD = 72 * 3600 * 1000; // 72 hours after expiry\n\n /**\n * Load and validate license from environment or file.\n *\n * Resolution order:\n * 1. VISOR_LICENSE env var (JWT string)\n * 2. VISOR_LICENSE_FILE env var (path to file)\n * 3. .visor-license in project root (cwd)\n * 4. .visor-license in ~/.config/visor/\n */\n async loadAndValidate(): Promise<LicensePayload | null> {\n // Return cached result if still fresh\n if (this.cache && Date.now() - this.cache.validatedAt < LicenseValidator.CACHE_TTL) {\n return this.cache.payload;\n }\n\n const token = this.resolveToken();\n if (!token) return null;\n\n const payload = this.verifyAndDecode(token);\n if (!payload) return null;\n\n this.cache = { payload, validatedAt: Date.now() };\n return payload;\n }\n\n /** Check if a specific feature is licensed */\n hasFeature(feature: string): boolean {\n if (!this.cache) return false;\n return this.cache.payload.features.includes(feature);\n }\n\n /** Check if license is valid (with grace period) */\n isValid(): boolean {\n if (!this.cache) return false;\n const now = Date.now();\n const expiryMs = this.cache.payload.exp * 1000;\n return now < expiryMs + LicenseValidator.GRACE_PERIOD;\n }\n\n /** Check if the license is within its grace period (expired but still valid) */\n isInGracePeriod(): boolean {\n if (!this.cache) return false;\n const now = Date.now();\n const expiryMs = this.cache.payload.exp * 1000;\n return now >= expiryMs && now < expiryMs + LicenseValidator.GRACE_PERIOD;\n }\n\n private resolveToken(): string | null {\n // 1. Direct env var\n if (process.env.VISOR_LICENSE) {\n return process.env.VISOR_LICENSE.trim();\n }\n\n // 2. File path from env (validate against path traversal)\n if (process.env.VISOR_LICENSE_FILE) {\n // path.resolve() produces an absolute path with all '..' segments resolved,\n // so a separate resolved.includes('..') check is unnecessary.\n const resolved = path.resolve(process.env.VISOR_LICENSE_FILE);\n const home = process.env.HOME || process.env.USERPROFILE || '';\n const allowedPrefixes = [path.normalize(process.cwd())];\n if (home) allowedPrefixes.push(path.normalize(path.join(home, '.config', 'visor')));\n\n // Resolve symlinks so an attacker cannot create a symlink inside an\n // allowed prefix that points to an arbitrary file outside it.\n let realPath: string;\n try {\n realPath = fs.realpathSync(resolved);\n } catch {\n return null; // File doesn't exist or isn't accessible\n }\n\n const isSafe = allowedPrefixes.some(\n prefix => realPath === prefix || realPath.startsWith(prefix + path.sep)\n );\n if (!isSafe) return null;\n return this.readFile(realPath);\n }\n\n // 3. .visor-license in cwd\n const cwdPath = path.join(process.cwd(), '.visor-license');\n const cwdToken = this.readFile(cwdPath);\n if (cwdToken) return cwdToken;\n\n // 4. ~/.config/visor/.visor-license\n const home = process.env.HOME || process.env.USERPROFILE || '';\n if (home) {\n const configPath = path.join(home, '.config', 'visor', '.visor-license');\n const configToken = this.readFile(configPath);\n if (configToken) return configToken;\n }\n\n return null;\n }\n\n private readFile(filePath: string): string | null {\n try {\n return fs.readFileSync(filePath, 'utf-8').trim();\n } catch {\n return null;\n }\n }\n\n private verifyAndDecode(token: string): LicensePayload | null {\n try {\n const parts = token.split('.');\n if (parts.length !== 3) return null;\n\n const [headerB64, payloadB64, signatureB64] = parts;\n\n // Decode header to verify algorithm\n const header = JSON.parse(Buffer.from(headerB64, 'base64url').toString());\n if (header.alg !== 'EdDSA') return null;\n\n // Verify signature\n const data = `${headerB64}.${payloadB64}`;\n const signature = Buffer.from(signatureB64, 'base64url');\n\n const publicKey = crypto.createPublicKey(LicenseValidator.PUBLIC_KEY);\n\n // Validate that the loaded public key is actually Ed25519 (OID 1.3.101.112).\n // This prevents algorithm-confusion attacks if the embedded key were ever\n // swapped to a different type.\n if (publicKey.asymmetricKeyType !== 'ed25519') {\n return null;\n }\n\n // Ed25519 verification: algorithm must be null because EdDSA performs its\n // own internal hashing (SHA-512) — passing a digest algorithm here would\n // cause Node.js to throw. The key type is validated above.\n const isValid = crypto.verify(null, Buffer.from(data), publicKey, signature);\n if (!isValid) return null;\n\n // Decode payload\n const payload: LicensePayload = JSON.parse(Buffer.from(payloadB64, 'base64url').toString());\n\n // Validate required fields\n if (\n !payload.org ||\n !Array.isArray(payload.features) ||\n typeof payload.exp !== 'number' ||\n typeof payload.iat !== 'number' ||\n !payload.sub\n ) {\n return null;\n }\n\n // Check expiry (with grace period)\n const now = Date.now();\n const expiryMs = payload.exp * 1000;\n if (now >= expiryMs + LicenseValidator.GRACE_PERIOD) {\n return null;\n }\n\n return payload;\n } catch {\n return null;\n }\n }\n}\n"],"mappings":"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","names":["home"]}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  WorkflowCheckProvider,
3
3
  init_workflow_check_provider
4
- } from "./chunk-EWGX7LI7.mjs";
4
+ } from "./chunk-H4AYMOAT.mjs";
5
5
  import "./chunk-KFKHU6CM.mjs";
6
6
  import "./chunk-M3BYMES6.mjs";
7
7
  import "./chunk-LG4AUKHB.mjs";
@@ -11,10 +11,9 @@ import "./chunk-GEW6LS32.mjs";
11
11
  import "./chunk-DIND4ZCV.mjs";
12
12
  import "./chunk-XNTBSV6M.mjs";
13
13
  import "./chunk-NCWIZVOT.mjs";
14
- import "./chunk-XKCER23W.mjs";
15
- import "./chunk-FBJ7MC7R.mjs";
16
- import "./chunk-V2QW6ECX.mjs";
17
- import "./chunk-4F5UVWAN.mjs";
14
+ import "./chunk-CISJ6DJW.mjs";
15
+ import "./chunk-RJLJUTSU.mjs";
16
+ import "./chunk-62TNF5PJ.mjs";
18
17
  import "./chunk-JL7JXCET.mjs";
19
18
  import "./chunk-ZUEQNCKB.mjs";
20
19
  import "./chunk-25IC7KXZ.mjs";
@@ -27,4 +26,4 @@ init_workflow_check_provider();
27
26
  export {
28
27
  WorkflowCheckProvider
29
28
  };
30
- //# sourceMappingURL=workflow-check-provider-5453TW65.mjs.map
29
+ //# sourceMappingURL=workflow-check-provider-DYSO3PML.mjs.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  WorkflowCheckProvider,
3
3
  init_workflow_check_provider
4
- } from "./chunk-H23T7J6Y.mjs";
4
+ } from "./chunk-75Q63UNX.mjs";
5
5
  import "./chunk-KFKHU6CM.mjs";
6
6
  import "./chunk-M3BYMES6.mjs";
7
7
  import "./chunk-LG4AUKHB.mjs";
@@ -11,10 +11,9 @@ import "./chunk-GEW6LS32.mjs";
11
11
  import "./chunk-DIND4ZCV.mjs";
12
12
  import "./chunk-XNTBSV6M.mjs";
13
13
  import "./chunk-NCWIZVOT.mjs";
14
- import "./chunk-XKCER23W.mjs";
15
- import "./chunk-FBJ7MC7R.mjs";
16
- import "./chunk-V2QW6ECX.mjs";
17
- import "./chunk-4F5UVWAN.mjs";
14
+ import "./chunk-CISJ6DJW.mjs";
15
+ import "./chunk-RJLJUTSU.mjs";
16
+ import "./chunk-62TNF5PJ.mjs";
18
17
  import "./chunk-JL7JXCET.mjs";
19
18
  import "./chunk-ZUEQNCKB.mjs";
20
19
  import "./chunk-25IC7KXZ.mjs";
@@ -27,4 +26,4 @@ init_workflow_check_provider();
27
26
  export {
28
27
  WorkflowCheckProvider
29
28
  };
30
- //# sourceMappingURL=workflow-check-provider-HMABCGB5.mjs.map
29
+ //# sourceMappingURL=workflow-check-provider-MMB7L3YG.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"build-engine-context.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/state-machine/context/build-engine-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAgB,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,oBAAoB,CAAC;AAwCvE;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,OAAO,EACf,cAAc,CAAC,EAAE,MAAM,EACvB,QAAQ,CAAC,EAAE,OAAO,EAClB,eAAe,CAAC,EAAE,MAAM,EAAE,GACzB,aAAa,CA2Ff;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAwDxF"}
1
+ {"version":3,"file":"build-engine-context.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/state-machine/context/build-engine-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAgB,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,oBAAoB,CAAC;AAwCvE;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,OAAO,EACf,cAAc,CAAC,EAAE,MAAM,EACvB,QAAQ,CAAC,EAAE,OAAO,EAClB,eAAe,CAAC,EAAE,MAAM,EAAE,GACzB,aAAa,CA2Ff;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAiExF"}
@@ -1 +1 @@
1
- {"version":3,"file":"tool-resolver.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/utils/tool-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAGL,qBAAqB,EACtB,MAAM,qCAAqC,CAAC;AAG7C;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE,KAAK,CAAC,MAAM,GAAG,qBAAqB,CAAC,EAChD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,EAClD,SAAS,SAAmB,GAC3B,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAkCnC"}
1
+ {"version":3,"file":"tool-resolver.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/utils/tool-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAGL,qBAAqB,EACtB,MAAM,qCAAqC,CAAC;AAI7C;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE,KAAK,CAAC,MAAM,GAAG,qBAAqB,CAAC,EAChD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,EAClD,SAAS,SAAmB,GAC3B,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CA+CnC"}
@@ -111,14 +111,37 @@ export declare class WorkspaceManager {
111
111
  */
112
112
  static cleanupStale(basePath?: string, maxAgeMs?: number): Promise<number>;
113
113
  /**
114
- * Create worktree for the main project
115
- *
116
- * visor-disable: architecture - Not using WorktreeManager here because:
117
- * 1. WorktreeManager expects remote URLs and clones to bare repos first
118
- * 2. This operates on the LOCAL repo we're already in (no cloning needed)
119
- * 3. Adding a "local mode" to WorktreeManager would add complexity for minimal benefit
120
- * The git commands here are simpler (just rev-parse + worktree add) vs WorktreeManager's
121
- * full clone/bare-repo/fetch/worktree pipeline.
114
+ * visor-disable: architecture - The helpers below (resolveUpstreamRef,
115
+ * fetchAndResolveUpstream, resetAndCleanWorktree, refreshWorktreeToUpstream)
116
+ * are NOT duplicates of WorktreeManager's fetchRef/getCommitShaForRef/cleanWorktree.
117
+ * WorktreeManager operates on BARE repo caches cloned from remote URLs, while
118
+ * WorkspaceManager operates on the LOCAL working repo the user already has checked out.
119
+ * The git commands differ (e.g. `fetch origin --prune` vs `fetch origin <ref>:<ref>`)
120
+ * and sharing code would require adding a "local mode" to WorktreeManager for no benefit.
121
+ */
122
+ /**
123
+ * Resolve the upstream default branch ref.
124
+ * Tries origin/HEAD (symbolic), then origin/main, then origin/master.
125
+ * Falls back to local HEAD if no remote is configured.
126
+ */
127
+ private resolveUpstreamRef;
128
+ /**
129
+ * Fetch latest from origin, resolve the upstream default branch, and return
130
+ * both the ref name and the resolved commit SHA.
131
+ */
132
+ private fetchAndResolveUpstream;
133
+ /**
134
+ * Reset a worktree to a specific commit and clean all modifications.
135
+ */
136
+ private resetAndCleanWorktree;
137
+ /**
138
+ * Refresh an existing worktree to the latest upstream default branch
139
+ * and ensure it has no modified or untracked files.
140
+ */
141
+ private refreshWorktreeToUpstream;
142
+ /**
143
+ * Create worktree for the main project.
144
+ * See visor-disable comment above resolveUpstreamRef for why this doesn't use WorktreeManager.
122
145
  */
123
146
  private createMainProjectWorktree;
124
147
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-manager.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/utils/workspace-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA+BH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,SAAS,CAA4C;IAEpE,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,QAAQ,CAAuC;IACvD,OAAO,CAAC,yBAAyB,CAAkB;IACnD,OAAO,CAAC,SAAS,CAA0B;IAG3C,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,gBAAgB,CAAyB;IAEjD,OAAO;IAuBP;;OAEG;IACH,MAAM,CAAC,WAAW,CAChB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAChC,gBAAgB;IAUnB;;OAEG;IACH,MAAM,CAAC,cAAc,IAAI,IAAI;IAI7B;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;;OAGG;IACH,OAAO,IAAI,IAAI;IAOf;;;OAGG;IACH,OAAO,IAAI,IAAI;IAiBf;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAI7B;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,gBAAgB,IAAI,aAAa,GAAG,IAAI;IAIxC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC;IA8E1C;;;OAGG;IACG,UAAU,CACd,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC;IAiDlB;;OAEG;IACH,YAAY,IAAI,WAAW,EAAE;IAI7B;;;;OAIG;IACG,OAAO,CAAC,OAAO,GAAE,MAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA+ErD;;OAEG;YACW,UAAU;IASxB;;;OAGG;WACU,YAAY,CACvB,QAAQ,GAAE,MAAoE,EAC9E,QAAQ,GAAE,MAA4B,GACrC,OAAO,CAAC,MAAM,CAAC;IA8ClB;;;;;;;;;OASG;YACW,yBAAyB;IA4BvC;;OAEG;YACW,yBAAyB;IAYvC;;OAEG;YACW,eAAe;IAc7B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;OAEG;IACH,OAAO,CAAC,eAAe;IAkBvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAerB;;OAEG;IACH,OAAO,CAAC,uBAAuB;CAWhC"}
1
+ {"version":3,"file":"workspace-manager.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/utils/workspace-manager.ts"],"names":[],"mappings":"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"}
@@ -99,6 +99,12 @@ export declare class WorktreeManager {
99
99
  * Remove a worktree
100
100
  */
101
101
  removeWorktree(worktreeId: string): Promise<void>;
102
+ /**
103
+ * Get the metadata file path for a worktree.
104
+ * Stored as a sibling file OUTSIDE the worktree to avoid being committed
105
+ * when agents run `git add .` inside the checked-out repo.
106
+ */
107
+ private getMetadataPath;
102
108
  /**
103
109
  * Save worktree metadata
104
110
  */
@@ -1 +1 @@
1
- {"version":3,"file":"worktree-manager.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/utils/worktree-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EAEV,mBAAmB,EACnB,YAAY,EAEb,MAAM,uBAAuB,CAAC;AAE/B,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkB;IACzC,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,yBAAyB,CAAkB;IAEnD,OAAO;IAuBP,MAAM,CAAC,WAAW,IAAI,eAAe;IAOrC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,IAAI;IAKrD,SAAS,IAAI,mBAAmB;IAIhC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,eAAe;IAIvB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;OAEG;IACG,mBAAmB,CACvB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC;IAyElB;;OAEG;YACW,cAAc;IAoB5B;;;;OAIG;YACW,oBAAoB;IA2DlC;;;;;;;;OAQG;YACW,sBAAsB;IAqBpC;;;;;;;;;;;OAWG;IACG,cAAc,CAClB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,cAAc,CAAC,EAAE,MAAM,CAAC;KACpB,GACL,OAAO,CAAC,YAAY,CAAC;IAsOxB;;;OAGG;YACW,cAAc;IAa5B;;OAEG;YACW,QAAQ;IAgBtB;;OAEG;YACW,aAAa;IAU3B;;;;;;;;OAQG;YACW,kBAAkB;IAiChC;;OAEG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCvD;;OAEG;YACW,YAAY;IAK1B;;OAEG;YACW,YAAY;IAgB1B;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IA+B9C;;OAEG;IACG,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B5C;;OAEG;IACG,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;IAc9C;;OAEG;IACH,OAAO,CAAC,cAAc;IAStB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAqC/B;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,cAAc;IAKtB;;OAEG;IACH,OAAO,CAAC,WAAW;IA0BnB;;OAEG;IACH,OAAO,CAAC,YAAY;IA8BpB;;OAEG;IACH,OAAO,CAAC,SAAS;IAMjB;;OAEG;YACW,iBAAiB;IA4B/B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAqB7B;;OAEG;IACH,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;CAa9D;AAGD,eAAO,MAAM,eAAe,iBAAgC,CAAC"}
1
+ {"version":3,"file":"worktree-manager.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/utils/worktree-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EAEV,mBAAmB,EACnB,YAAY,EAEb,MAAM,uBAAuB,CAAC;AAE/B,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkB;IACzC,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,yBAAyB,CAAkB;IAEnD,OAAO;IAuBP,MAAM,CAAC,WAAW,IAAI,eAAe;IAOrC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,IAAI;IAKrD,SAAS,IAAI,mBAAmB;IAIhC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,eAAe;IAIvB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;OAEG;IACG,mBAAmB,CACvB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC;IAyElB;;OAEG;YACW,cAAc;IAoB5B;;;;OAIG;YACW,oBAAoB;IA2DlC;;;;;;;;OAQG;YACW,sBAAsB;IAqBpC;;;;;;;;;;;OAWG;IACG,cAAc,CAClB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,cAAc,CAAC,EAAE,MAAM,CAAC;KACpB,GACL,OAAO,CAAC,YAAY,CAAC;IAsOxB;;;OAGG;YACW,cAAc;IAa5B;;OAEG;YACW,QAAQ;IAgBtB;;OAEG;YACW,aAAa;IAU3B;;;;;;;;OAQG;YACW,kBAAkB;IAiChC;;OAEG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0CvD;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAIvB;;OAEG;YACW,YAAY;IAK1B;;OAEG;YACW,YAAY;IAyB1B;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IA+B9C;;OAEG;IACG,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B5C;;OAEG;IACG,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;IAc9C;;OAEG;IACH,OAAO,CAAC,cAAc;IAStB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAqC/B;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,cAAc;IAKtB;;OAEG;IACH,OAAO,CAAC,WAAW;IA0BnB;;OAEG;IACH,OAAO,CAAC,YAAY;IA8BpB;;OAEG;IACH,OAAO,CAAC,SAAS;IAMjB;;OAEG;YACW,iBAAiB;IA4B/B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAqB7B;;OAEG;IACH,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;CAa9D;AAGD,eAAO,MAAM,eAAe,iBAAgC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@probelabs/visor",
3
- "version": "0.1.147",
3
+ "version": "0.1.148-ee",
4
4
  "main": "dist/index.js",
5
5
  "bin": {
6
6
  "visor": "./dist/index.js"
@@ -114,7 +114,7 @@
114
114
  "@opentelemetry/sdk-node": "^0.203.0",
115
115
  "@opentelemetry/sdk-trace-base": "^1.30.1",
116
116
  "@opentelemetry/semantic-conventions": "^1.30.1",
117
- "@probelabs/probe": "^0.6.0-rc262",
117
+ "@probelabs/probe": "^0.6.0-rc264",
118
118
  "@types/commander": "^2.12.0",
119
119
  "@types/uuid": "^10.0.0",
120
120
  "acorn": "^8.16.0",
@@ -1,138 +0,0 @@
1
- {"name":"visor.run","attributes":{"started":true}}
2
- {"name":"visor.run","attributes":{"started":true}}
3
- {"name":"visor.run","attributes":{"started":true}}
4
- {"name":"visor.run","attributes":{"started":true}}
5
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"Init","state_to":"PlanReady","engine_mode":"state-machine","wave":0,"session_id":"quick-puma-dzyh"}}]}
6
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"PlanReady","state_to":"WavePlanning","engine_mode":"state-machine","wave":0,"session_id":"quick-puma-dzyh"}}]}
7
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"LevelDispatch","engine_mode":"state-machine","wave":1,"session_id":"quick-puma-dzyh"}}]}
8
- {"name":"visor.provider","attributes":{"visor.check.id":"overview","visor.provider.type":"ai"}}
9
- {"name":"visor.check","attributes":{"visor.check.id":"overview","visor.check.input.context":"{\"pr\":{\"number\":0,\"title\":\"Local Analysis: unknown (No changes)\",\"author\":\"unknown\",\"branch\":\"unknown\",\"base\":\"main\"},\"files\":[],\"outputs\":{},\"args\":{}}"},"events":[]}
10
- {"name":"visor.check","attributes":{"visor.check.id":"overview","visor.check.output":"{\"issues\":[],\"text\":\"{\\\"issues\\\":[]}\"}"},"events":[]}
11
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"LevelDispatch","state_to":"WavePlanning","engine_mode":"state-machine","wave":1,"session_id":"quick-puma-dzyh"}}]}
12
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"WavePlanning","engine_mode":"state-machine","wave":1,"session_id":"quick-puma-dzyh"}}]}
13
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"LevelDispatch","engine_mode":"state-machine","wave":1,"session_id":"quick-puma-dzyh"}}]}
14
- {"name":"visor.provider","attributes":{"visor.check.id":"security","visor.provider.type":"ai"}}
15
- {"name":"visor.check","attributes":{"visor.check.id":"security","visor.check.input.context":"{\"pr\":{\"number\":0,\"title\":\"Local Analysis: unknown (No changes)\",\"author\":\"unknown\",\"branch\":\"unknown\",\"base\":\"main\"},\"files\":[],\"outputs\":{\"overview\":{\"issues\":[],\"text\":\"{\\\"issues\\\":[]}\",\"ts\":1772191643174}},\"args\":{}}"},"events":[]}
16
- {"name":"visor.provider","attributes":{"visor.check.id":"architecture","visor.provider.type":"ai"}}
17
- {"name":"visor.check","attributes":{"visor.check.id":"architecture","visor.check.input.context":"{\"pr\":{\"number\":0,\"title\":\"Local Analysis: unknown (No changes)\",\"author\":\"unknown\",\"branch\":\"unknown\",\"base\":\"main\"},\"files\":[],\"outputs\":{\"overview\":{\"issues\":[],\"text\":\"{\\\"issues\\\":[]}\",\"ts\":1772191643174}},\"args\":{}}"},"events":[]}
18
- {"name":"visor.provider","attributes":{"visor.check.id":"performance","visor.provider.type":"ai"}}
19
- {"name":"visor.check","attributes":{"visor.check.id":"performance","visor.check.input.context":"{\"pr\":{\"number\":0,\"title\":\"Local Analysis: unknown (No changes)\",\"author\":\"unknown\",\"branch\":\"unknown\",\"base\":\"main\"},\"files\":[],\"outputs\":{\"overview\":{\"issues\":[],\"text\":\"{\\\"issues\\\":[]}\",\"ts\":1772191643174}},\"args\":{}}"},"events":[]}
20
- {"name":"visor.provider","attributes":{"visor.check.id":"quality","visor.provider.type":"ai"}}
21
- {"name":"visor.check","attributes":{"visor.check.id":"quality","visor.check.input.context":"{\"pr\":{\"number\":0,\"title\":\"Local Analysis: unknown (No changes)\",\"author\":\"unknown\",\"branch\":\"unknown\",\"base\":\"main\"},\"files\":[],\"outputs\":{\"overview\":{\"issues\":[],\"text\":\"{\\\"issues\\\":[]}\",\"ts\":1772191643174}},\"args\":{}}"},"events":[]}
22
- {"name":"visor.check","attributes":{"visor.check.id":"security","visor.check.output":"{\"issues\":[],\"sessionId\":\"visor-2026-02-27T11-27-23-178Z-security\"}"},"events":[]}
23
- {"name":"visor.check","attributes":{"visor.check.id":"architecture","visor.check.output":"{\"issues\":[],\"sessionId\":\"visor-2026-02-27T11-27-23-178Z-architecture\"}"},"events":[]}
24
- {"name":"visor.check","attributes":{"visor.check.id":"performance","visor.check.output":"{\"issues\":[],\"sessionId\":\"visor-2026-02-27T11-27-23-178Z-performance\"}"},"events":[]}
25
- {"name":"visor.check","attributes":{"visor.check.id":"quality","visor.check.output":"{\"issues\":[],\"sessionId\":\"visor-2026-02-27T11-27-23-178Z-quality\"}"},"events":[]}
26
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"LevelDispatch","state_to":"WavePlanning","engine_mode":"state-machine","wave":1,"session_id":"quick-puma-dzyh"}}]}
27
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"WavePlanning","engine_mode":"state-machine","wave":1,"session_id":"quick-puma-dzyh"}}]}
28
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"WavePlanning","engine_mode":"state-machine","wave":1,"session_id":"quick-puma-dzyh"}}]}
29
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"WavePlanning","engine_mode":"state-machine","wave":1,"session_id":"quick-puma-dzyh"}}]}
30
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"WavePlanning","engine_mode":"state-machine","wave":1,"session_id":"quick-puma-dzyh"}}]}
31
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"Completed","engine_mode":"state-machine","wave":1,"session_id":"quick-puma-dzyh"}}]}
32
- {"name":"visor.run","attributes":{"started":true}}
33
- {"name":"visor.run","attributes":{"started":true}}
34
- {"name":"visor.run","attributes":{"started":true}}
35
- {"name":"visor.run","attributes":{"started":true}}
36
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"Init","state_to":"PlanReady","engine_mode":"state-machine","wave":0,"session_id":"safe-owl-7k4w"}}]}
37
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"PlanReady","state_to":"WavePlanning","engine_mode":"state-machine","wave":0,"session_id":"safe-owl-7k4w"}}]}
38
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"LevelDispatch","engine_mode":"state-machine","wave":1,"session_id":"safe-owl-7k4w"}}]}
39
- {"name":"visor.provider","attributes":{"visor.check.id":"overview","visor.provider.type":"ai"}}
40
- {"name":"visor.check","attributes":{"visor.check.id":"overview","visor.check.input.context":"{\"pr\":{\"number\":0,\"title\":\"Local Analysis: unknown (No changes)\",\"author\":\"unknown\",\"branch\":\"unknown\",\"base\":\"main\"},\"files\":[],\"outputs\":{},\"args\":{}}"},"events":[]}
41
- {"name":"visor.check","attributes":{"visor.check.id":"overview","visor.check.output":"{\"issues\":[],\"text\":\"{\\\"issues\\\":[]}\"}"},"events":[]}
42
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"LevelDispatch","state_to":"WavePlanning","engine_mode":"state-machine","wave":1,"session_id":"safe-owl-7k4w"}}]}
43
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"WavePlanning","engine_mode":"state-machine","wave":1,"session_id":"safe-owl-7k4w"}}]}
44
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"LevelDispatch","engine_mode":"state-machine","wave":1,"session_id":"safe-owl-7k4w"}}]}
45
- {"name":"visor.provider","attributes":{"visor.check.id":"security","visor.provider.type":"ai"}}
46
- {"name":"visor.check","attributes":{"visor.check.id":"security","visor.check.input.context":"{\"pr\":{\"number\":0,\"title\":\"Local Analysis: unknown (No changes)\",\"author\":\"unknown\",\"branch\":\"unknown\",\"base\":\"main\"},\"files\":[],\"outputs\":{\"overview\":{\"issues\":[],\"text\":\"{\\\"issues\\\":[]}\",\"ts\":1772191643897}},\"args\":{}}"},"events":[]}
47
- {"name":"visor.provider","attributes":{"visor.check.id":"architecture","visor.provider.type":"ai"}}
48
- {"name":"visor.check","attributes":{"visor.check.id":"architecture","visor.check.input.context":"{\"pr\":{\"number\":0,\"title\":\"Local Analysis: unknown (No changes)\",\"author\":\"unknown\",\"branch\":\"unknown\",\"base\":\"main\"},\"files\":[],\"outputs\":{\"overview\":{\"issues\":[],\"text\":\"{\\\"issues\\\":[]}\",\"ts\":1772191643897}},\"args\":{}}"},"events":[]}
49
- {"name":"visor.provider","attributes":{"visor.check.id":"performance","visor.provider.type":"ai"}}
50
- {"name":"visor.check","attributes":{"visor.check.id":"performance","visor.check.input.context":"{\"pr\":{\"number\":0,\"title\":\"Local Analysis: unknown (No changes)\",\"author\":\"unknown\",\"branch\":\"unknown\",\"base\":\"main\"},\"files\":[],\"outputs\":{\"overview\":{\"issues\":[],\"text\":\"{\\\"issues\\\":[]}\",\"ts\":1772191643897}},\"args\":{}}"},"events":[]}
51
- {"name":"visor.provider","attributes":{"visor.check.id":"quality","visor.provider.type":"ai"}}
52
- {"name":"visor.check","attributes":{"visor.check.id":"quality","visor.check.input.context":"{\"pr\":{\"number\":0,\"title\":\"Local Analysis: unknown (No changes)\",\"author\":\"unknown\",\"branch\":\"unknown\",\"base\":\"main\"},\"files\":[],\"outputs\":{\"overview\":{\"issues\":[],\"text\":\"{\\\"issues\\\":[]}\",\"ts\":1772191643897}},\"args\":{}}"},"events":[]}
53
- {"name":"visor.check","attributes":{"visor.check.id":"security","visor.check.output":"{\"issues\":[],\"sessionId\":\"visor-2026-02-27T11-27-23-900Z-security\"}"},"events":[]}
54
- {"name":"visor.check","attributes":{"visor.check.id":"architecture","visor.check.output":"{\"issues\":[],\"sessionId\":\"visor-2026-02-27T11-27-23-900Z-architecture\"}"},"events":[]}
55
- {"name":"visor.check","attributes":{"visor.check.id":"performance","visor.check.output":"{\"issues\":[],\"sessionId\":\"visor-2026-02-27T11-27-23-900Z-performance\"}"},"events":[]}
56
- {"name":"visor.check","attributes":{"visor.check.id":"quality","visor.check.output":"{\"issues\":[],\"sessionId\":\"visor-2026-02-27T11-27-23-900Z-quality\"}"},"events":[]}
57
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"LevelDispatch","state_to":"WavePlanning","engine_mode":"state-machine","wave":1,"session_id":"safe-owl-7k4w"}}]}
58
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"WavePlanning","engine_mode":"state-machine","wave":1,"session_id":"safe-owl-7k4w"}}]}
59
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"WavePlanning","engine_mode":"state-machine","wave":1,"session_id":"safe-owl-7k4w"}}]}
60
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"WavePlanning","engine_mode":"state-machine","wave":1,"session_id":"safe-owl-7k4w"}}]}
61
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"WavePlanning","engine_mode":"state-machine","wave":1,"session_id":"safe-owl-7k4w"}}]}
62
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"Completed","engine_mode":"state-machine","wave":1,"session_id":"safe-owl-7k4w"}}]}
63
- {"name":"visor.run","attributes":{"started":true}}
64
- {"name":"visor.run","attributes":{"started":true}}
65
- {"name":"visor.run","attributes":{"started":true}}
66
- {"name":"visor.run","attributes":{"started":true}}
67
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"Init","state_to":"PlanReady","engine_mode":"state-machine","wave":0,"session_id":"clean-bat-7ksz"}}]}
68
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"PlanReady","state_to":"WavePlanning","engine_mode":"state-machine","wave":0,"session_id":"clean-bat-7ksz"}}]}
69
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"LevelDispatch","engine_mode":"state-machine","wave":1,"session_id":"clean-bat-7ksz"}}]}
70
- {"name":"visor.provider","attributes":{"visor.check.id":"overview","visor.provider.type":"ai"}}
71
- {"name":"visor.check","attributes":{"visor.check.id":"overview","visor.check.input.context":"{\"pr\":{\"number\":0,\"title\":\"Local Analysis: unknown (No changes)\",\"author\":\"unknown\",\"branch\":\"unknown\",\"base\":\"main\"},\"files\":[],\"outputs\":{},\"args\":{}}"},"events":[]}
72
- {"name":"visor.check","attributes":{"visor.check.id":"overview","visor.check.output":"{\"issues\":[],\"text\":\"{\\\"issues\\\":[]}\"}"},"events":[]}
73
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"LevelDispatch","state_to":"WavePlanning","engine_mode":"state-machine","wave":1,"session_id":"clean-bat-7ksz"}}]}
74
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"WavePlanning","engine_mode":"state-machine","wave":1,"session_id":"clean-bat-7ksz"}}]}
75
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"LevelDispatch","engine_mode":"state-machine","wave":1,"session_id":"clean-bat-7ksz"}}]}
76
- {"name":"visor.provider","attributes":{"visor.check.id":"security","visor.provider.type":"ai"}}
77
- {"name":"visor.check","attributes":{"visor.check.id":"security","visor.check.input.context":"{\"pr\":{\"number\":0,\"title\":\"Local Analysis: unknown (No changes)\",\"author\":\"unknown\",\"branch\":\"unknown\",\"base\":\"main\"},\"files\":[],\"outputs\":{\"overview\":{\"issues\":[],\"text\":\"{\\\"issues\\\":[]}\",\"ts\":1772191644614}},\"args\":{}}"},"events":[]}
78
- {"name":"visor.provider","attributes":{"visor.check.id":"architecture","visor.provider.type":"ai"}}
79
- {"name":"visor.check","attributes":{"visor.check.id":"architecture","visor.check.input.context":"{\"pr\":{\"number\":0,\"title\":\"Local Analysis: unknown (No changes)\",\"author\":\"unknown\",\"branch\":\"unknown\",\"base\":\"main\"},\"files\":[],\"outputs\":{\"overview\":{\"issues\":[],\"text\":\"{\\\"issues\\\":[]}\",\"ts\":1772191644614}},\"args\":{}}"},"events":[]}
80
- {"name":"visor.provider","attributes":{"visor.check.id":"performance","visor.provider.type":"ai"}}
81
- {"name":"visor.check","attributes":{"visor.check.id":"performance","visor.check.input.context":"{\"pr\":{\"number\":0,\"title\":\"Local Analysis: unknown (No changes)\",\"author\":\"unknown\",\"branch\":\"unknown\",\"base\":\"main\"},\"files\":[],\"outputs\":{\"overview\":{\"issues\":[],\"text\":\"{\\\"issues\\\":[]}\",\"ts\":1772191644614}},\"args\":{}}"},"events":[]}
82
- {"name":"visor.provider","attributes":{"visor.check.id":"quality","visor.provider.type":"ai"}}
83
- {"name":"visor.check","attributes":{"visor.check.id":"quality","visor.check.input.context":"{\"pr\":{\"number\":0,\"title\":\"Local Analysis: unknown (No changes)\",\"author\":\"unknown\",\"branch\":\"unknown\",\"base\":\"main\"},\"files\":[],\"outputs\":{\"overview\":{\"issues\":[],\"text\":\"{\\\"issues\\\":[]}\",\"ts\":1772191644614}},\"args\":{}}"},"events":[]}
84
- {"name":"visor.check","attributes":{"visor.check.id":"security","visor.check.output":"{\"issues\":[],\"sessionId\":\"visor-2026-02-27T11-27-24-617Z-security\"}"},"events":[]}
85
- {"name":"visor.check","attributes":{"visor.check.id":"architecture","visor.check.output":"{\"issues\":[],\"sessionId\":\"visor-2026-02-27T11-27-24-617Z-architecture\"}"},"events":[]}
86
- {"name":"visor.check","attributes":{"visor.check.id":"performance","visor.check.output":"{\"issues\":[],\"sessionId\":\"visor-2026-02-27T11-27-24-617Z-performance\"}"},"events":[]}
87
- {"name":"visor.check","attributes":{"visor.check.id":"quality","visor.check.output":"{\"issues\":[],\"sessionId\":\"visor-2026-02-27T11-27-24-617Z-quality\"}"},"events":[]}
88
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"LevelDispatch","state_to":"WavePlanning","engine_mode":"state-machine","wave":1,"session_id":"clean-bat-7ksz"}}]}
89
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"WavePlanning","engine_mode":"state-machine","wave":1,"session_id":"clean-bat-7ksz"}}]}
90
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"WavePlanning","engine_mode":"state-machine","wave":1,"session_id":"clean-bat-7ksz"}}]}
91
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"WavePlanning","engine_mode":"state-machine","wave":1,"session_id":"clean-bat-7ksz"}}]}
92
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"WavePlanning","engine_mode":"state-machine","wave":1,"session_id":"clean-bat-7ksz"}}]}
93
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"Completed","engine_mode":"state-machine","wave":1,"session_id":"clean-bat-7ksz"}}]}
94
- {"name":"visor.run","attributes":{"started":true}}
95
- {"name":"visor.run","attributes":{"started":true}}
96
- {"name":"visor.run","attributes":{"started":true}}
97
- {"name":"visor.run","attributes":{"started":true}}
98
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"Init","state_to":"PlanReady","engine_mode":"state-machine","wave":0,"session_id":"smart-ant-6utg"}}]}
99
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"PlanReady","state_to":"WavePlanning","engine_mode":"state-machine","wave":0,"session_id":"smart-ant-6utg"}}]}
100
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"LevelDispatch","engine_mode":"state-machine","wave":1,"session_id":"smart-ant-6utg"}}]}
101
- {"name":"visor.provider","attributes":{"visor.check.id":"overview","visor.provider.type":"ai"}}
102
- {"name":"visor.check","attributes":{"visor.check.id":"overview","visor.check.input.context":"{\"pr\":{\"number\":0,\"title\":\"Local Analysis: unknown (No changes)\",\"author\":\"unknown\",\"branch\":\"unknown\",\"base\":\"main\"},\"files\":[],\"outputs\":{},\"args\":{}}"},"events":[]}
103
- {"name":"visor.check","attributes":{"visor.check.id":"overview","visor.check.output":"{\"issues\":[],\"text\":\"{\\\"issues\\\":[]}\"}"},"events":[]}
104
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"LevelDispatch","state_to":"WavePlanning","engine_mode":"state-machine","wave":1,"session_id":"smart-ant-6utg"}}]}
105
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"WavePlanning","engine_mode":"state-machine","wave":1,"session_id":"smart-ant-6utg"}}]}
106
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"LevelDispatch","engine_mode":"state-machine","wave":1,"session_id":"smart-ant-6utg"}}]}
107
- {"name":"visor.provider","attributes":{"visor.check.id":"performance","visor.provider.type":"ai"}}
108
- {"name":"visor.check","attributes":{"visor.check.id":"performance","visor.check.input.context":"{\"pr\":{\"number\":0,\"title\":\"Local Analysis: unknown (No changes)\",\"author\":\"unknown\",\"branch\":\"unknown\",\"base\":\"main\"},\"files\":[],\"outputs\":{\"overview\":{\"issues\":[],\"text\":\"{\\\"issues\\\":[]}\",\"ts\":1772191645327}},\"args\":{}}"},"events":[]}
109
- {"name":"visor.check","attributes":{"visor.check.id":"performance","visor.check.output":"{\"issues\":[],\"sessionId\":\"visor-2026-02-27T11-27-25-328Z-performance\"}"},"events":[]}
110
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"LevelDispatch","state_to":"WavePlanning","engine_mode":"state-machine","wave":1,"session_id":"smart-ant-6utg"}}]}
111
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"WavePlanning","engine_mode":"state-machine","wave":1,"session_id":"smart-ant-6utg"}}]}
112
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"Completed","engine_mode":"state-machine","wave":1,"session_id":"smart-ant-6utg"}}]}
113
- {"name":"visor.run","attributes":{"started":true}}
114
- {"name":"visor.run","attributes":{"started":true}}
115
- {"name":"visor.run","attributes":{"started":true}}
116
- {"name":"visor.run","attributes":{"started":true}}
117
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"Init","state_to":"PlanReady","engine_mode":"state-machine","wave":0,"session_id":"crisp-rat-2aht"}}]}
118
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"PlanReady","state_to":"WavePlanning","engine_mode":"state-machine","wave":0,"session_id":"crisp-rat-2aht"}}]}
119
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"LevelDispatch","engine_mode":"state-machine","wave":1,"session_id":"crisp-rat-2aht"}}]}
120
- {"name":"visor.provider","attributes":{"visor.check.id":"invalid-type","visor.provider.type":"ai"}}
121
- {"name":"visor.check","attributes":{"visor.check.id":"invalid-type","visor.check.input.context":"{\"pr\":{\"number\":0,\"title\":\"Local Analysis: unknown (No changes)\",\"author\":\"unknown\",\"branch\":\"unknown\",\"base\":\"main\"},\"files\":[],\"outputs\":{},\"args\":{}}"},"events":[]}
122
- {"name":"visor.check","attributes":{"visor.check.id":"invalid-type","visor.check.output":"{\"text\":\"{\\\"issues\\\":[]}\"}"},"events":[]}
123
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"LevelDispatch","state_to":"WavePlanning","engine_mode":"state-machine","wave":1,"session_id":"crisp-rat-2aht"}}]}
124
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"WavePlanning","engine_mode":"state-machine","wave":1,"session_id":"crisp-rat-2aht"}}]}
125
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"Completed","engine_mode":"state-machine","wave":1,"session_id":"crisp-rat-2aht"}}]}
126
- {"name":"visor.run","attributes":{"started":true}}
127
- {"name":"visor.run","attributes":{"started":true}}
128
- {"name":"visor.run","attributes":{"started":true}}
129
- {"name":"visor.run","attributes":{"started":true}}
130
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"Init","state_to":"PlanReady","engine_mode":"state-machine","wave":0,"session_id":"loud-fish-6deh"}}]}
131
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"PlanReady","state_to":"WavePlanning","engine_mode":"state-machine","wave":0,"session_id":"loud-fish-6deh"}}]}
132
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"LevelDispatch","engine_mode":"state-machine","wave":1,"session_id":"loud-fish-6deh"}}]}
133
- {"name":"visor.provider","attributes":{"visor.check.id":"performance","visor.provider.type":"ai"}}
134
- {"name":"visor.check","attributes":{"visor.check.id":"performance","visor.check.input.context":"{\"pr\":{\"number\":0,\"title\":\"Local Analysis: unknown (No changes)\",\"author\":\"unknown\",\"branch\":\"unknown\",\"base\":\"main\"},\"files\":[],\"outputs\":{},\"args\":{}}"},"events":[]}
135
- {"name":"visor.check","attributes":{"visor.check.id":"performance","visor.check.output":"{\"issues\":[],\"sessionId\":\"visor-2026-02-27T11-27-26-580Z-performance\"}"},"events":[]}
136
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"LevelDispatch","state_to":"WavePlanning","engine_mode":"state-machine","wave":1,"session_id":"loud-fish-6deh"}}]}
137
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"WavePlanning","engine_mode":"state-machine","wave":1,"session_id":"loud-fish-6deh"}}]}
138
- {"name":"visor.event","attributes":{},"events":[{"name":"engine.state_transition","attrs":{"state_from":"WavePlanning","state_to":"Completed","engine_mode":"state-machine","wave":1,"session_id":"loud-fish-6deh"}}]}