@probelabs/visor 0.1.165 → 0.1.166-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 (88) hide show
  1. package/dist/index.js +2363 -141
  2. package/dist/pr-analyzer.d.ts +2 -1
  3. package/dist/pr-analyzer.d.ts.map +1 -1
  4. package/dist/providers/http-client-provider.d.ts.map +1 -1
  5. package/dist/sdk/{check-provider-registry-6P2KJ423.mjs → check-provider-registry-PU67PWTU.mjs} +5 -5
  6. package/dist/sdk/{check-provider-registry-TTVN3V2O.mjs → check-provider-registry-TGPICTHD.mjs} +5 -5
  7. package/dist/sdk/{chunk-EO4IJNM7.mjs → chunk-E7NRUDWL.mjs} +2 -2
  8. package/dist/sdk/{chunk-G5JBWW3O.mjs → chunk-P5P6BOO7.mjs} +161 -21
  9. package/dist/sdk/chunk-P5P6BOO7.mjs.map +1 -0
  10. package/dist/sdk/{chunk-GMHSXC5K.mjs → chunk-RV5SK4FZ.mjs} +3 -3
  11. package/dist/sdk/{chunk-S47KBQQK.mjs → chunk-T5USZCCM.mjs} +2 -2
  12. package/dist/sdk/{chunk-S47KBQQK.mjs.map → chunk-T5USZCCM.mjs.map} +1 -1
  13. package/dist/sdk/{chunk-GOJRNYTV.mjs → chunk-WSYVK6ML.mjs} +188 -22
  14. package/dist/sdk/chunk-WSYVK6ML.mjs.map +1 -0
  15. package/dist/sdk/{failure-condition-evaluator-N3VNLWZD.mjs → failure-condition-evaluator-GPANOHP2.mjs} +3 -3
  16. package/dist/sdk/{github-frontend-ATORHHF6.mjs → github-frontend-P274ISBJ.mjs} +3 -3
  17. package/dist/sdk/{host-JROON6IT.mjs → host-AIMRV5YL.mjs} +2 -2
  18. package/dist/sdk/{host-OBXKDFT7.mjs → host-QYPOS4R6.mjs} +2 -2
  19. package/dist/sdk/knex-store-CRORFJE6.mjs +527 -0
  20. package/dist/sdk/knex-store-CRORFJE6.mjs.map +1 -0
  21. package/dist/sdk/loader-NJCF7DUS.mjs +89 -0
  22. package/dist/sdk/loader-NJCF7DUS.mjs.map +1 -0
  23. package/dist/sdk/opa-policy-engine-S2S2ULEI.mjs +655 -0
  24. package/dist/sdk/opa-policy-engine-S2S2ULEI.mjs.map +1 -0
  25. package/dist/sdk/{routing-QCDX43XD.mjs → routing-BXHP2E62.mjs} +4 -4
  26. package/dist/sdk/{schedule-tool-D5TSTGP2.mjs → schedule-tool-5FVFYH2A.mjs} +5 -5
  27. package/dist/sdk/{schedule-tool-XCGJI2VB.mjs → schedule-tool-MQHISNJ6.mjs} +5 -5
  28. package/dist/sdk/{schedule-tool-handler-DKHHPZAG.mjs → schedule-tool-handler-4TCT2P7A.mjs} +5 -5
  29. package/dist/sdk/{schedule-tool-handler-OKZ53WMC.mjs → schedule-tool-handler-TZYXM664.mjs} +5 -5
  30. package/dist/sdk/sdk.js +1779 -265
  31. package/dist/sdk/sdk.js.map +1 -1
  32. package/dist/sdk/sdk.mjs +4 -4
  33. package/dist/sdk/{trace-helpers-J5CJ4PUN.mjs → trace-helpers-UG6FOWVV.mjs} +2 -2
  34. package/dist/sdk/validator-XTZJZZJH.mjs +134 -0
  35. package/dist/sdk/validator-XTZJZZJH.mjs.map +1 -0
  36. package/dist/sdk/{workflow-check-provider-T6WFK4RB.mjs → workflow-check-provider-BE2SVYWW.mjs} +5 -5
  37. package/dist/sdk/{workflow-check-provider-WLUAJPAS.mjs → workflow-check-provider-QKHL6AFT.mjs} +5 -5
  38. package/dist/slack/socket-runner.d.ts +14 -0
  39. package/dist/slack/socket-runner.d.ts.map +1 -1
  40. package/dist/utils/oauth2-token-cache.d.ts +44 -0
  41. package/dist/utils/oauth2-token-cache.d.ts.map +1 -0
  42. package/package.json +2 -2
  43. package/dist/output/traces/run-2026-03-06T06-08-10-897Z.ndjson +0 -138
  44. package/dist/output/traces/run-2026-03-06T06-08-55-016Z.ndjson +0 -2235
  45. package/dist/sdk/check-provider-registry-4SHN3GSH.mjs +0 -29
  46. package/dist/sdk/chunk-G5JBWW3O.mjs.map +0 -1
  47. package/dist/sdk/chunk-GOJRNYTV.mjs.map +0 -1
  48. package/dist/sdk/chunk-J236ZVYX.mjs +0 -1502
  49. package/dist/sdk/chunk-J236ZVYX.mjs.map +0 -1
  50. package/dist/sdk/chunk-LDE33FGE.mjs +0 -443
  51. package/dist/sdk/chunk-LDE33FGE.mjs.map +0 -1
  52. package/dist/sdk/chunk-MYROK4LB.mjs +0 -43917
  53. package/dist/sdk/chunk-MYROK4LB.mjs.map +0 -1
  54. package/dist/sdk/chunk-XDIBL7QB.mjs +0 -739
  55. package/dist/sdk/chunk-XDIBL7QB.mjs.map +0 -1
  56. package/dist/sdk/failure-condition-evaluator-M6SIUQF4.mjs +0 -17
  57. package/dist/sdk/github-frontend-MHXL2Q2V.mjs +0 -1368
  58. package/dist/sdk/github-frontend-MHXL2Q2V.mjs.map +0 -1
  59. package/dist/sdk/routing-TGJD66Q5.mjs +0 -25
  60. package/dist/sdk/schedule-tool-C5QN5OQU.mjs +0 -35
  61. package/dist/sdk/schedule-tool-handler-OKZ53WMC.mjs.map +0 -1
  62. package/dist/sdk/schedule-tool-handler-ZUMPNAVY.mjs +0 -39
  63. package/dist/sdk/schedule-tool-handler-ZUMPNAVY.mjs.map +0 -1
  64. package/dist/sdk/trace-helpers-J5CJ4PUN.mjs.map +0 -1
  65. package/dist/sdk/trace-helpers-KFQJ7IAG.mjs +0 -25
  66. package/dist/sdk/trace-helpers-KFQJ7IAG.mjs.map +0 -1
  67. package/dist/sdk/workflow-check-provider-RBYA6ZGU.mjs +0 -29
  68. package/dist/sdk/workflow-check-provider-RBYA6ZGU.mjs.map +0 -1
  69. package/dist/sdk/workflow-check-provider-T6WFK4RB.mjs.map +0 -1
  70. package/dist/sdk/workflow-check-provider-WLUAJPAS.mjs.map +0 -1
  71. package/dist/traces/run-2026-03-06T06-08-10-897Z.ndjson +0 -138
  72. package/dist/traces/run-2026-03-06T06-08-55-016Z.ndjson +0 -2235
  73. /package/dist/sdk/{check-provider-registry-4SHN3GSH.mjs.map → check-provider-registry-PU67PWTU.mjs.map} +0 -0
  74. /package/dist/sdk/{check-provider-registry-6P2KJ423.mjs.map → check-provider-registry-TGPICTHD.mjs.map} +0 -0
  75. /package/dist/sdk/{chunk-EO4IJNM7.mjs.map → chunk-E7NRUDWL.mjs.map} +0 -0
  76. /package/dist/sdk/{chunk-GMHSXC5K.mjs.map → chunk-RV5SK4FZ.mjs.map} +0 -0
  77. /package/dist/sdk/{check-provider-registry-TTVN3V2O.mjs.map → failure-condition-evaluator-GPANOHP2.mjs.map} +0 -0
  78. /package/dist/sdk/{github-frontend-ATORHHF6.mjs.map → github-frontend-P274ISBJ.mjs.map} +0 -0
  79. /package/dist/sdk/{host-JROON6IT.mjs.map → host-AIMRV5YL.mjs.map} +0 -0
  80. /package/dist/sdk/{host-OBXKDFT7.mjs.map → host-QYPOS4R6.mjs.map} +0 -0
  81. /package/dist/sdk/{failure-condition-evaluator-M6SIUQF4.mjs.map → routing-BXHP2E62.mjs.map} +0 -0
  82. /package/dist/sdk/{failure-condition-evaluator-N3VNLWZD.mjs.map → schedule-tool-5FVFYH2A.mjs.map} +0 -0
  83. /package/dist/sdk/{routing-QCDX43XD.mjs.map → schedule-tool-MQHISNJ6.mjs.map} +0 -0
  84. /package/dist/sdk/{routing-TGJD66Q5.mjs.map → schedule-tool-handler-4TCT2P7A.mjs.map} +0 -0
  85. /package/dist/sdk/{schedule-tool-C5QN5OQU.mjs.map → schedule-tool-handler-TZYXM664.mjs.map} +0 -0
  86. /package/dist/sdk/{schedule-tool-D5TSTGP2.mjs.map → trace-helpers-UG6FOWVV.mjs.map} +0 -0
  87. /package/dist/sdk/{schedule-tool-XCGJI2VB.mjs.map → workflow-check-provider-BE2SVYWW.mjs.map} +0 -0
  88. /package/dist/sdk/{schedule-tool-handler-DKHHPZAG.mjs.map → workflow-check-provider-QKHL6AFT.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-MYROK4LB.mjs";
4
+ } from "./chunk-P5P6BOO7.mjs";
5
5
  import "./chunk-KFKHU6CM.mjs";
6
6
  import "./chunk-AVMMKGLQ.mjs";
7
7
  import "./chunk-LG4AUKHB.mjs";
@@ -14,9 +14,9 @@ import {
14
14
  init_config
15
15
  } from "./chunk-DEAPFYNX.mjs";
16
16
  import "./chunk-NCWIZVOT.mjs";
17
- import "./chunk-GMHSXC5K.mjs";
18
- import "./chunk-EO4IJNM7.mjs";
19
- import "./chunk-LDE33FGE.mjs";
17
+ import "./chunk-RV5SK4FZ.mjs";
18
+ import "./chunk-E7NRUDWL.mjs";
19
+ import "./chunk-T5USZCCM.mjs";
20
20
  import "./chunk-JL7JXCET.mjs";
21
21
  import "./chunk-ZUEQNCKB.mjs";
22
22
  import "./chunk-25IC7KXZ.mjs";
@@ -8,7 +8,7 @@ import {
8
8
  setSpanAttributes,
9
9
  setSpanError,
10
10
  withActiveSpan
11
- } from "./chunk-S47KBQQK.mjs";
11
+ } from "./chunk-T5USZCCM.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-J5CJ4PUN.mjs.map
25
+ //# sourceMappingURL=trace-helpers-UG6FOWVV.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-GOJRNYTV.mjs";
4
+ } from "./chunk-P5P6BOO7.mjs";
5
5
  import "./chunk-KFKHU6CM.mjs";
6
6
  import "./chunk-AVMMKGLQ.mjs";
7
7
  import "./chunk-LG4AUKHB.mjs";
@@ -11,9 +11,9 @@ import "./chunk-GEW6LS32.mjs";
11
11
  import "./chunk-NZADFXHE.mjs";
12
12
  import "./chunk-DEAPFYNX.mjs";
13
13
  import "./chunk-NCWIZVOT.mjs";
14
- import "./chunk-J236ZVYX.mjs";
15
- import "./chunk-XDIBL7QB.mjs";
16
- import "./chunk-S47KBQQK.mjs";
14
+ import "./chunk-RV5SK4FZ.mjs";
15
+ import "./chunk-E7NRUDWL.mjs";
16
+ import "./chunk-T5USZCCM.mjs";
17
17
  import "./chunk-JL7JXCET.mjs";
18
18
  import "./chunk-ZUEQNCKB.mjs";
19
19
  import "./chunk-25IC7KXZ.mjs";
@@ -26,4 +26,4 @@ init_workflow_check_provider();
26
26
  export {
27
27
  WorkflowCheckProvider
28
28
  };
29
- //# sourceMappingURL=workflow-check-provider-T6WFK4RB.mjs.map
29
+ //# sourceMappingURL=workflow-check-provider-BE2SVYWW.mjs.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  WorkflowCheckProvider,
3
3
  init_workflow_check_provider
4
- } from "./chunk-G5JBWW3O.mjs";
4
+ } from "./chunk-WSYVK6ML.mjs";
5
5
  import "./chunk-KFKHU6CM.mjs";
6
6
  import "./chunk-AVMMKGLQ.mjs";
7
7
  import "./chunk-LG4AUKHB.mjs";
@@ -11,9 +11,9 @@ import "./chunk-GEW6LS32.mjs";
11
11
  import "./chunk-NZADFXHE.mjs";
12
12
  import "./chunk-DEAPFYNX.mjs";
13
13
  import "./chunk-NCWIZVOT.mjs";
14
- import "./chunk-J236ZVYX.mjs";
15
- import "./chunk-XDIBL7QB.mjs";
16
- import "./chunk-S47KBQQK.mjs";
14
+ import "./chunk-RV5SK4FZ.mjs";
15
+ import "./chunk-E7NRUDWL.mjs";
16
+ import "./chunk-T5USZCCM.mjs";
17
17
  import "./chunk-JL7JXCET.mjs";
18
18
  import "./chunk-ZUEQNCKB.mjs";
19
19
  import "./chunk-25IC7KXZ.mjs";
@@ -26,4 +26,4 @@ init_workflow_check_provider();
26
26
  export {
27
27
  WorkflowCheckProvider
28
28
  };
29
- //# sourceMappingURL=workflow-check-provider-WLUAJPAS.mjs.map
29
+ //# sourceMappingURL=workflow-check-provider-QKHL6AFT.mjs.map
@@ -33,6 +33,9 @@ export declare class SlackSocketRunner {
33
33
  private genericScheduler?;
34
34
  private messageTriggerEvaluator?;
35
35
  private activeThreads;
36
+ private heartbeatTimer?;
37
+ private lastPong;
38
+ private closing;
36
39
  constructor(engine: StateMachineExecutionEngine, cfg: VisorConfig, opts: SlackSocketConfig);
37
40
  /** Hot-swap the config used for future requests (does not affect in-flight ones). */
38
41
  updateConfig(cfg: VisorConfig): void;
@@ -53,6 +56,17 @@ export declare class SlackSocketRunner {
53
56
  start(): Promise<void>;
54
57
  private openConnection;
55
58
  private connect;
59
+ /**
60
+ * Close the current WebSocket connection and stop heartbeat.
61
+ * Safe to call multiple times.
62
+ */
63
+ private closeWebSocket;
64
+ /**
65
+ * Start periodic WebSocket ping to detect dead connections.
66
+ * If no pong is received within 60s, force a reconnect.
67
+ */
68
+ private startHeartbeat;
69
+ private stopHeartbeat;
56
70
  private restart;
57
71
  private send;
58
72
  private matchesAllowlist;
@@ -1 +1 @@
1
- {"version":3,"file":"socket-runner.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/slack/socket-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"socket-runner.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/slack/socket-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * OAuth2 client_credentials auth configuration
3
+ */
4
+ export interface OAuth2ClientCredentialsConfig {
5
+ type: 'oauth2_client_credentials';
6
+ /** OAuth2 token endpoint URL */
7
+ token_url: string;
8
+ /** OAuth2 client ID (supports ${ENV_VAR} syntax) */
9
+ client_id: string;
10
+ /** OAuth2 client secret (supports ${ENV_VAR} syntax) */
11
+ client_secret: string;
12
+ /** Optional scopes to request */
13
+ scopes?: string[];
14
+ /** Buffer in seconds before expiry to trigger refresh (default: 300 = 5 min) */
15
+ token_ttl_buffer?: number;
16
+ }
17
+ /**
18
+ * Generic auth configuration — extensible for future auth types
19
+ */
20
+ export type AuthConfig = OAuth2ClientCredentialsConfig;
21
+ /**
22
+ * Singleton cache for OAuth2 tokens.
23
+ *
24
+ * - Keyed by hash(token_url + client_id) to support multiple providers
25
+ * - Lazy refresh: only fetches when expired or near-expiry
26
+ * - Deduplicates concurrent requests: if two calls hit with an expired token,
27
+ * both await the same fetch promise
28
+ */
29
+ export declare class OAuth2TokenCache {
30
+ private static instance;
31
+ private cache;
32
+ static getInstance(): OAuth2TokenCache;
33
+ /** Visible for testing */
34
+ static resetInstance(): void;
35
+ /**
36
+ * Get a valid Bearer token for the given config.
37
+ * Returns a cached token if still valid, otherwise fetches a new one.
38
+ */
39
+ getToken(config: OAuth2ClientCredentialsConfig): Promise<string>;
40
+ private fetchToken;
41
+ /** Clear all cached tokens (for testing or credential rotation) */
42
+ clear(): void;
43
+ }
44
+ //# sourceMappingURL=oauth2-token-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth2-token-cache.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/utils/oauth2-token-cache.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,2BAA2B,CAAC;IAClC,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,aAAa,EAAE,MAAM,CAAC;IACtB,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,gFAAgF;IAChF,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,6BAA6B,CAAC;AASvD;;;;;;;GAOG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAmB;IAC1C,OAAO,CAAC,KAAK,CAAkC;IAE/C,MAAM,CAAC,WAAW,IAAI,gBAAgB;IAOtC,0BAA0B;IAC1B,MAAM,CAAC,aAAa,IAAI,IAAI;IAI5B;;;OAGG;IACG,QAAQ,CAAC,MAAM,EAAE,6BAA6B,GAAG,OAAO,CAAC,MAAM,CAAC;YA+CxD,UAAU;IA0DxB,mEAAmE;IACnE,KAAK,IAAI,IAAI;CAGd"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@probelabs/visor",
3
- "version": "0.1.165",
3
+ "version": "0.1.166-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-rc278",
117
+ "@probelabs/probe": "^0.6.0-rc280",
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":"dark-cat-bqj5"}}]}
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":"dark-cat-bqj5"}}]}
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":"dark-cat-bqj5"}}]}
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":"dark-cat-bqj5"}}]}
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":"dark-cat-bqj5"}}]}
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":"dark-cat-bqj5"}}]}
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\":1772777291693}},\"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\":1772777291693}},\"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\":1772777291693}},\"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\":1772777291693}},\"args\":{}}"},"events":[]}
22
- {"name":"visor.check","attributes":{"visor.check.id":"performance","visor.check.output":"{\"issues\":[],\"sessionId\":\"visor-2026-03-06T06-08-11-699Z-performance\"}"},"events":[]}
23
- {"name":"visor.check","attributes":{"visor.check.id":"architecture","visor.check.output":"{\"issues\":[],\"sessionId\":\"visor-2026-03-06T06-08-11-699Z-architecture\"}"},"events":[]}
24
- {"name":"visor.check","attributes":{"visor.check.id":"security","visor.check.output":"{\"issues\":[],\"sessionId\":\"visor-2026-03-06T06-08-11-699Z-security\"}"},"events":[]}
25
- {"name":"visor.check","attributes":{"visor.check.id":"quality","visor.check.output":"{\"issues\":[],\"sessionId\":\"visor-2026-03-06T06-08-11-699Z-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":"dark-cat-bqj5"}}]}
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":"dark-cat-bqj5"}}]}
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":"dark-cat-bqj5"}}]}
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":"dark-cat-bqj5"}}]}
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":"dark-cat-bqj5"}}]}
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":"dark-cat-bqj5"}}]}
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":"warm-horse-wgpq"}}]}
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":"warm-horse-wgpq"}}]}
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":"warm-horse-wgpq"}}]}
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":"warm-horse-wgpq"}}]}
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":"warm-horse-wgpq"}}]}
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":"warm-horse-wgpq"}}]}
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\":1772777292232}},\"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\":1772777292232}},\"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\":1772777292232}},\"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\":1772777292232}},\"args\":{}}"},"events":[]}
53
- {"name":"visor.check","attributes":{"visor.check.id":"security","visor.check.output":"{\"issues\":[],\"sessionId\":\"visor-2026-03-06T06-08-12-235Z-security\"}"},"events":[]}
54
- {"name":"visor.check","attributes":{"visor.check.id":"architecture","visor.check.output":"{\"issues\":[],\"sessionId\":\"visor-2026-03-06T06-08-12-235Z-architecture\"}"},"events":[]}
55
- {"name":"visor.check","attributes":{"visor.check.id":"performance","visor.check.output":"{\"issues\":[],\"sessionId\":\"visor-2026-03-06T06-08-12-236Z-performance\"}"},"events":[]}
56
- {"name":"visor.check","attributes":{"visor.check.id":"quality","visor.check.output":"{\"issues\":[],\"sessionId\":\"visor-2026-03-06T06-08-12-236Z-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":"warm-horse-wgpq"}}]}
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":"warm-horse-wgpq"}}]}
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":"warm-horse-wgpq"}}]}
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":"warm-horse-wgpq"}}]}
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":"warm-horse-wgpq"}}]}
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":"warm-horse-wgpq"}}]}
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":"kind-snake-2nv6"}}]}
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":"kind-snake-2nv6"}}]}
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":"kind-snake-2nv6"}}]}
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":"kind-snake-2nv6"}}]}
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":"kind-snake-2nv6"}}]}
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":"kind-snake-2nv6"}}]}
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\":1772777292763}},\"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\":1772777292763}},\"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\":1772777292763}},\"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\":1772777292763}},\"args\":{}}"},"events":[]}
84
- {"name":"visor.check","attributes":{"visor.check.id":"security","visor.check.output":"{\"issues\":[],\"sessionId\":\"visor-2026-03-06T06-08-12-766Z-security\"}"},"events":[]}
85
- {"name":"visor.check","attributes":{"visor.check.id":"architecture","visor.check.output":"{\"issues\":[],\"sessionId\":\"visor-2026-03-06T06-08-12-766Z-architecture\"}"},"events":[]}
86
- {"name":"visor.check","attributes":{"visor.check.id":"performance","visor.check.output":"{\"issues\":[],\"sessionId\":\"visor-2026-03-06T06-08-12-766Z-performance\"}"},"events":[]}
87
- {"name":"visor.check","attributes":{"visor.check.id":"quality","visor.check.output":"{\"issues\":[],\"sessionId\":\"visor-2026-03-06T06-08-12-766Z-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":"kind-snake-2nv6"}}]}
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":"kind-snake-2nv6"}}]}
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":"kind-snake-2nv6"}}]}
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":"kind-snake-2nv6"}}]}
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":"kind-snake-2nv6"}}]}
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":"kind-snake-2nv6"}}]}
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":"rare-moth-b5vd"}}]}
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":"rare-moth-b5vd"}}]}
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":"rare-moth-b5vd"}}]}
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":"rare-moth-b5vd"}}]}
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":"rare-moth-b5vd"}}]}
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":"rare-moth-b5vd"}}]}
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\":1772777293290}},\"args\":{}}"},"events":[]}
109
- {"name":"visor.check","attributes":{"visor.check.id":"performance","visor.check.output":"{\"issues\":[],\"sessionId\":\"visor-2026-03-06T06-08-13-292Z-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":"rare-moth-b5vd"}}]}
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":"rare-moth-b5vd"}}]}
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":"rare-moth-b5vd"}}]}
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":"tidy-cow-whea"}}]}
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":"tidy-cow-whea"}}]}
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":"tidy-cow-whea"}}]}
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":"tidy-cow-whea"}}]}
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":"tidy-cow-whea"}}]}
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":"tidy-cow-whea"}}]}
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":"pure-spider-34b5"}}]}
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":"pure-spider-34b5"}}]}
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":"pure-spider-34b5"}}]}
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-03-06T06-08-14-110Z-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":"pure-spider-34b5"}}]}
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":"pure-spider-34b5"}}]}
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":"pure-spider-34b5"}}]}