@probelabs/visor 0.1.165 → 0.1.166

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 (81) hide show
  1. package/dist/index.js +525 -120
  2. package/dist/output/traces/{run-2026-03-06T06-08-10-897Z.ndjson → run-2026-03-06T13-08-34-152Z.ndjson} +84 -84
  3. package/dist/output/traces/{run-2026-03-06T06-08-55-016Z.ndjson → run-2026-03-06T13-09-10-593Z.ndjson} +1894 -1894
  4. package/dist/pr-analyzer.d.ts +2 -1
  5. package/dist/pr-analyzer.d.ts.map +1 -1
  6. package/dist/providers/http-client-provider.d.ts.map +1 -1
  7. package/dist/sdk/{check-provider-registry-6P2KJ423.mjs → check-provider-registry-TGPICTHD.mjs} +5 -5
  8. package/dist/sdk/{check-provider-registry-TTVN3V2O.mjs → check-provider-registry-V6C4LUYJ.mjs} +5 -5
  9. package/dist/sdk/{check-provider-registry-4SHN3GSH.mjs → check-provider-registry-WXEBJWXY.mjs} +5 -5
  10. package/dist/sdk/{chunk-EO4IJNM7.mjs → chunk-E7NRUDWL.mjs} +2 -2
  11. package/dist/sdk/{chunk-LDE33FGE.mjs → chunk-HFCOZPAS.mjs} +3 -3
  12. package/dist/sdk/{chunk-LDE33FGE.mjs.map → chunk-HFCOZPAS.mjs.map} +1 -1
  13. package/dist/sdk/{chunk-XDIBL7QB.mjs → chunk-KBTFMYZQ.mjs} +2 -2
  14. package/dist/sdk/{chunk-G5JBWW3O.mjs → chunk-KKGMGB4X.mjs} +160 -20
  15. package/dist/sdk/chunk-KKGMGB4X.mjs.map +1 -0
  16. package/dist/sdk/{chunk-GMHSXC5K.mjs → chunk-OQ3CML4F.mjs} +3 -3
  17. package/dist/sdk/{chunk-J236ZVYX.mjs → chunk-RV5SK4FZ.mjs} +3 -3
  18. package/dist/sdk/{chunk-S47KBQQK.mjs → chunk-T5USZCCM.mjs} +2 -2
  19. package/dist/sdk/{chunk-S47KBQQK.mjs.map → chunk-T5USZCCM.mjs.map} +1 -1
  20. package/dist/sdk/{chunk-GOJRNYTV.mjs → chunk-WSYVK6ML.mjs} +188 -22
  21. package/dist/sdk/chunk-WSYVK6ML.mjs.map +1 -0
  22. package/dist/sdk/{chunk-MYROK4LB.mjs → chunk-ZQR4AGS3.mjs} +160 -20
  23. package/dist/sdk/chunk-ZQR4AGS3.mjs.map +1 -0
  24. package/dist/sdk/{failure-condition-evaluator-N3VNLWZD.mjs → failure-condition-evaluator-5EAESM44.mjs} +3 -3
  25. package/dist/sdk/{failure-condition-evaluator-M6SIUQF4.mjs → failure-condition-evaluator-GPANOHP2.mjs} +3 -3
  26. package/dist/sdk/{github-frontend-ATORHHF6.mjs → github-frontend-BPRRUIGB.mjs} +3 -3
  27. package/dist/sdk/{github-frontend-MHXL2Q2V.mjs → github-frontend-P274ISBJ.mjs} +3 -3
  28. package/dist/sdk/{host-JROON6IT.mjs → host-753E6PKF.mjs} +2 -2
  29. package/dist/sdk/{host-OBXKDFT7.mjs → host-AIMRV5YL.mjs} +2 -2
  30. package/dist/sdk/{routing-QCDX43XD.mjs → routing-BXHP2E62.mjs} +4 -4
  31. package/dist/sdk/{routing-TGJD66Q5.mjs → routing-QHWSMAIH.mjs} +4 -4
  32. package/dist/sdk/{schedule-tool-D5TSTGP2.mjs → schedule-tool-MQHISNJ6.mjs} +5 -5
  33. package/dist/sdk/{schedule-tool-XCGJI2VB.mjs → schedule-tool-OCZGLKMJ.mjs} +5 -5
  34. package/dist/sdk/{schedule-tool-C5QN5OQU.mjs → schedule-tool-ZVOSSFN2.mjs} +5 -5
  35. package/dist/sdk/{schedule-tool-handler-DKHHPZAG.mjs → schedule-tool-handler-4NCS4ARE.mjs} +5 -5
  36. package/dist/sdk/{schedule-tool-handler-OKZ53WMC.mjs → schedule-tool-handler-BGOL2TOP.mjs} +5 -5
  37. package/dist/sdk/{schedule-tool-handler-ZUMPNAVY.mjs → schedule-tool-handler-TZYXM664.mjs} +5 -5
  38. package/dist/sdk/sdk.js +147 -7
  39. package/dist/sdk/sdk.js.map +1 -1
  40. package/dist/sdk/sdk.mjs +4 -4
  41. package/dist/sdk/{trace-helpers-J5CJ4PUN.mjs → trace-helpers-CTHTK6V5.mjs} +2 -2
  42. package/dist/sdk/{trace-helpers-KFQJ7IAG.mjs → trace-helpers-UG6FOWVV.mjs} +2 -2
  43. package/dist/sdk/{workflow-check-provider-T6WFK4RB.mjs → workflow-check-provider-3M5LXLLX.mjs} +5 -5
  44. package/dist/sdk/{workflow-check-provider-WLUAJPAS.mjs → workflow-check-provider-QKHL6AFT.mjs} +5 -5
  45. package/dist/sdk/{workflow-check-provider-RBYA6ZGU.mjs → workflow-check-provider-UTNO6XN6.mjs} +5 -5
  46. package/dist/slack/socket-runner.d.ts +14 -0
  47. package/dist/slack/socket-runner.d.ts.map +1 -1
  48. package/dist/traces/{run-2026-03-06T06-08-10-897Z.ndjson → run-2026-03-06T13-08-34-152Z.ndjson} +84 -84
  49. package/dist/traces/{run-2026-03-06T06-08-55-016Z.ndjson → run-2026-03-06T13-09-10-593Z.ndjson} +1894 -1894
  50. package/dist/utils/oauth2-token-cache.d.ts +44 -0
  51. package/dist/utils/oauth2-token-cache.d.ts.map +1 -0
  52. package/package.json +2 -2
  53. package/dist/sdk/chunk-G5JBWW3O.mjs.map +0 -1
  54. package/dist/sdk/chunk-GOJRNYTV.mjs.map +0 -1
  55. package/dist/sdk/chunk-MYROK4LB.mjs.map +0 -1
  56. /package/dist/sdk/{check-provider-registry-4SHN3GSH.mjs.map → check-provider-registry-TGPICTHD.mjs.map} +0 -0
  57. /package/dist/sdk/{check-provider-registry-6P2KJ423.mjs.map → check-provider-registry-V6C4LUYJ.mjs.map} +0 -0
  58. /package/dist/sdk/{check-provider-registry-TTVN3V2O.mjs.map → check-provider-registry-WXEBJWXY.mjs.map} +0 -0
  59. /package/dist/sdk/{chunk-EO4IJNM7.mjs.map → chunk-E7NRUDWL.mjs.map} +0 -0
  60. /package/dist/sdk/{chunk-XDIBL7QB.mjs.map → chunk-KBTFMYZQ.mjs.map} +0 -0
  61. /package/dist/sdk/{chunk-GMHSXC5K.mjs.map → chunk-OQ3CML4F.mjs.map} +0 -0
  62. /package/dist/sdk/{chunk-J236ZVYX.mjs.map → chunk-RV5SK4FZ.mjs.map} +0 -0
  63. /package/dist/sdk/{failure-condition-evaluator-M6SIUQF4.mjs.map → failure-condition-evaluator-5EAESM44.mjs.map} +0 -0
  64. /package/dist/sdk/{failure-condition-evaluator-N3VNLWZD.mjs.map → failure-condition-evaluator-GPANOHP2.mjs.map} +0 -0
  65. /package/dist/sdk/{github-frontend-ATORHHF6.mjs.map → github-frontend-BPRRUIGB.mjs.map} +0 -0
  66. /package/dist/sdk/{github-frontend-MHXL2Q2V.mjs.map → github-frontend-P274ISBJ.mjs.map} +0 -0
  67. /package/dist/sdk/{host-JROON6IT.mjs.map → host-753E6PKF.mjs.map} +0 -0
  68. /package/dist/sdk/{host-OBXKDFT7.mjs.map → host-AIMRV5YL.mjs.map} +0 -0
  69. /package/dist/sdk/{routing-QCDX43XD.mjs.map → routing-BXHP2E62.mjs.map} +0 -0
  70. /package/dist/sdk/{routing-TGJD66Q5.mjs.map → routing-QHWSMAIH.mjs.map} +0 -0
  71. /package/dist/sdk/{schedule-tool-C5QN5OQU.mjs.map → schedule-tool-MQHISNJ6.mjs.map} +0 -0
  72. /package/dist/sdk/{schedule-tool-D5TSTGP2.mjs.map → schedule-tool-OCZGLKMJ.mjs.map} +0 -0
  73. /package/dist/sdk/{schedule-tool-XCGJI2VB.mjs.map → schedule-tool-ZVOSSFN2.mjs.map} +0 -0
  74. /package/dist/sdk/{schedule-tool-handler-DKHHPZAG.mjs.map → schedule-tool-handler-4NCS4ARE.mjs.map} +0 -0
  75. /package/dist/sdk/{schedule-tool-handler-OKZ53WMC.mjs.map → schedule-tool-handler-BGOL2TOP.mjs.map} +0 -0
  76. /package/dist/sdk/{schedule-tool-handler-ZUMPNAVY.mjs.map → schedule-tool-handler-TZYXM664.mjs.map} +0 -0
  77. /package/dist/sdk/{trace-helpers-J5CJ4PUN.mjs.map → trace-helpers-CTHTK6V5.mjs.map} +0 -0
  78. /package/dist/sdk/{trace-helpers-KFQJ7IAG.mjs.map → trace-helpers-UG6FOWVV.mjs.map} +0 -0
  79. /package/dist/sdk/{workflow-check-provider-RBYA6ZGU.mjs.map → workflow-check-provider-3M5LXLLX.mjs.map} +0 -0
  80. /package/dist/sdk/{workflow-check-provider-T6WFK4RB.mjs.map → workflow-check-provider-QKHL6AFT.mjs.map} +0 -0
  81. /package/dist/sdk/{workflow-check-provider-WLUAJPAS.mjs.map → workflow-check-provider-UTNO6XN6.mjs.map} +0 -0
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  FailureConditionEvaluator,
3
3
  init_failure_condition_evaluator
4
- } from "./chunk-XDIBL7QB.mjs";
5
- import "./chunk-S47KBQQK.mjs";
4
+ } from "./chunk-KBTFMYZQ.mjs";
5
+ import "./chunk-HFCOZPAS.mjs";
6
6
  import "./chunk-JL7JXCET.mjs";
7
7
  import "./chunk-25IC7KXZ.mjs";
8
8
  import "./chunk-LW3INISN.mjs";
@@ -14,4 +14,4 @@ init_failure_condition_evaluator();
14
14
  export {
15
15
  FailureConditionEvaluator
16
16
  };
17
- //# sourceMappingURL=failure-condition-evaluator-N3VNLWZD.mjs.map
17
+ //# sourceMappingURL=failure-condition-evaluator-5EAESM44.mjs.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  FailureConditionEvaluator,
3
3
  init_failure_condition_evaluator
4
- } from "./chunk-EO4IJNM7.mjs";
5
- import "./chunk-LDE33FGE.mjs";
4
+ } from "./chunk-E7NRUDWL.mjs";
5
+ import "./chunk-T5USZCCM.mjs";
6
6
  import "./chunk-JL7JXCET.mjs";
7
7
  import "./chunk-25IC7KXZ.mjs";
8
8
  import "./chunk-LW3INISN.mjs";
@@ -14,4 +14,4 @@ init_failure_condition_evaluator();
14
14
  export {
15
15
  FailureConditionEvaluator
16
16
  };
17
- //# sourceMappingURL=failure-condition-evaluator-M6SIUQF4.mjs.map
17
+ //# sourceMappingURL=failure-condition-evaluator-GPANOHP2.mjs.map
@@ -9,8 +9,8 @@ import {
9
9
  import {
10
10
  failure_condition_evaluator_exports,
11
11
  init_failure_condition_evaluator
12
- } from "./chunk-XDIBL7QB.mjs";
13
- import "./chunk-S47KBQQK.mjs";
12
+ } from "./chunk-KBTFMYZQ.mjs";
13
+ import "./chunk-HFCOZPAS.mjs";
14
14
  import "./chunk-JL7JXCET.mjs";
15
15
  import "./chunk-25IC7KXZ.mjs";
16
16
  import "./chunk-LW3INISN.mjs";
@@ -1365,4 +1365,4 @@ init_github_frontend();
1365
1365
  export {
1366
1366
  GitHubFrontend
1367
1367
  };
1368
- //# sourceMappingURL=github-frontend-ATORHHF6.mjs.map
1368
+ //# sourceMappingURL=github-frontend-BPRRUIGB.mjs.map
@@ -9,8 +9,8 @@ import {
9
9
  import {
10
10
  failure_condition_evaluator_exports,
11
11
  init_failure_condition_evaluator
12
- } from "./chunk-EO4IJNM7.mjs";
13
- import "./chunk-LDE33FGE.mjs";
12
+ } from "./chunk-E7NRUDWL.mjs";
13
+ import "./chunk-T5USZCCM.mjs";
14
14
  import "./chunk-JL7JXCET.mjs";
15
15
  import "./chunk-25IC7KXZ.mjs";
16
16
  import "./chunk-LW3INISN.mjs";
@@ -1365,4 +1365,4 @@ init_github_frontend();
1365
1365
  export {
1366
1366
  GitHubFrontend
1367
1367
  };
1368
- //# sourceMappingURL=github-frontend-MHXL2Q2V.mjs.map
1368
+ //# sourceMappingURL=github-frontend-P274ISBJ.mjs.map
@@ -21,7 +21,7 @@ var init_host = __esm({
21
21
  const { NdjsonSink } = await import("./ndjson-sink-FD2PSXGD.mjs");
22
22
  this.frontends.push(new NdjsonSink(spec.config));
23
23
  } else if (spec.name === "github") {
24
- const { GitHubFrontend } = await import("./github-frontend-MHXL2Q2V.mjs");
24
+ const { GitHubFrontend } = await import("./github-frontend-BPRRUIGB.mjs");
25
25
  this.frontends.push(new GitHubFrontend());
26
26
  } else if (spec.name === "slack") {
27
27
  const { SlackFrontend } = await import("./slack-frontend-QO7LW5BH.mjs");
@@ -60,4 +60,4 @@ init_host();
60
60
  export {
61
61
  FrontendsHost
62
62
  };
63
- //# sourceMappingURL=host-JROON6IT.mjs.map
63
+ //# sourceMappingURL=host-753E6PKF.mjs.map
@@ -21,7 +21,7 @@ var init_host = __esm({
21
21
  const { NdjsonSink } = await import("./ndjson-sink-FD2PSXGD.mjs");
22
22
  this.frontends.push(new NdjsonSink(spec.config));
23
23
  } else if (spec.name === "github") {
24
- const { GitHubFrontend } = await import("./github-frontend-ATORHHF6.mjs");
24
+ const { GitHubFrontend } = await import("./github-frontend-P274ISBJ.mjs");
25
25
  this.frontends.push(new GitHubFrontend());
26
26
  } else if (spec.name === "slack") {
27
27
  const { SlackFrontend } = await import("./slack-frontend-QO7LW5BH.mjs");
@@ -60,4 +60,4 @@ init_host();
60
60
  export {
61
61
  FrontendsHost
62
62
  };
63
- //# sourceMappingURL=host-OBXKDFT7.mjs.map
63
+ //# sourceMappingURL=host-AIMRV5YL.mjs.map
@@ -4,9 +4,9 @@ import {
4
4
  evaluateTransitions,
5
5
  handleRouting,
6
6
  init_routing
7
- } from "./chunk-GMHSXC5K.mjs";
8
- import "./chunk-EO4IJNM7.mjs";
9
- import "./chunk-LDE33FGE.mjs";
7
+ } from "./chunk-RV5SK4FZ.mjs";
8
+ import "./chunk-E7NRUDWL.mjs";
9
+ import "./chunk-T5USZCCM.mjs";
10
10
  import "./chunk-JL7JXCET.mjs";
11
11
  import "./chunk-ZUEQNCKB.mjs";
12
12
  import "./chunk-25IC7KXZ.mjs";
@@ -22,4 +22,4 @@ export {
22
22
  evaluateTransitions,
23
23
  handleRouting
24
24
  };
25
- //# sourceMappingURL=routing-QCDX43XD.mjs.map
25
+ //# sourceMappingURL=routing-BXHP2E62.mjs.map
@@ -4,9 +4,9 @@ import {
4
4
  evaluateTransitions,
5
5
  handleRouting,
6
6
  init_routing
7
- } from "./chunk-J236ZVYX.mjs";
8
- import "./chunk-XDIBL7QB.mjs";
9
- import "./chunk-S47KBQQK.mjs";
7
+ } from "./chunk-OQ3CML4F.mjs";
8
+ import "./chunk-KBTFMYZQ.mjs";
9
+ import "./chunk-HFCOZPAS.mjs";
10
10
  import "./chunk-JL7JXCET.mjs";
11
11
  import "./chunk-ZUEQNCKB.mjs";
12
12
  import "./chunk-25IC7KXZ.mjs";
@@ -22,4 +22,4 @@ export {
22
22
  evaluateTransitions,
23
23
  handleRouting
24
24
  };
25
- //# sourceMappingURL=routing-TGJD66Q5.mjs.map
25
+ //# sourceMappingURL=routing-QHWSMAIH.mjs.map
@@ -4,7 +4,7 @@ import {
4
4
  handleScheduleAction,
5
5
  init_schedule_tool,
6
6
  isScheduleTool
7
- } from "./chunk-GOJRNYTV.mjs";
7
+ } from "./chunk-WSYVK6ML.mjs";
8
8
  import "./chunk-KFKHU6CM.mjs";
9
9
  import "./chunk-AVMMKGLQ.mjs";
10
10
  import "./chunk-LG4AUKHB.mjs";
@@ -14,9 +14,9 @@ import "./chunk-GEW6LS32.mjs";
14
14
  import "./chunk-NZADFXHE.mjs";
15
15
  import "./chunk-DEAPFYNX.mjs";
16
16
  import "./chunk-NCWIZVOT.mjs";
17
- import "./chunk-J236ZVYX.mjs";
18
- import "./chunk-XDIBL7QB.mjs";
19
- import "./chunk-S47KBQQK.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";
@@ -32,4 +32,4 @@ export {
32
32
  handleScheduleAction,
33
33
  isScheduleTool
34
34
  };
35
- //# sourceMappingURL=schedule-tool-D5TSTGP2.mjs.map
35
+ //# sourceMappingURL=schedule-tool-MQHISNJ6.mjs.map
@@ -4,7 +4,7 @@ import {
4
4
  handleScheduleAction,
5
5
  init_schedule_tool,
6
6
  isScheduleTool
7
- } from "./chunk-G5JBWW3O.mjs";
7
+ } from "./chunk-KKGMGB4X.mjs";
8
8
  import "./chunk-KFKHU6CM.mjs";
9
9
  import "./chunk-AVMMKGLQ.mjs";
10
10
  import "./chunk-LG4AUKHB.mjs";
@@ -14,9 +14,9 @@ import "./chunk-GEW6LS32.mjs";
14
14
  import "./chunk-NZADFXHE.mjs";
15
15
  import "./chunk-DEAPFYNX.mjs";
16
16
  import "./chunk-NCWIZVOT.mjs";
17
- import "./chunk-J236ZVYX.mjs";
18
- import "./chunk-XDIBL7QB.mjs";
19
- import "./chunk-S47KBQQK.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";
@@ -32,4 +32,4 @@ export {
32
32
  handleScheduleAction,
33
33
  isScheduleTool
34
34
  };
35
- //# sourceMappingURL=schedule-tool-XCGJI2VB.mjs.map
35
+ //# sourceMappingURL=schedule-tool-OCZGLKMJ.mjs.map
@@ -4,7 +4,7 @@ import {
4
4
  handleScheduleAction,
5
5
  init_schedule_tool,
6
6
  isScheduleTool
7
- } from "./chunk-MYROK4LB.mjs";
7
+ } from "./chunk-ZQR4AGS3.mjs";
8
8
  import "./chunk-KFKHU6CM.mjs";
9
9
  import "./chunk-AVMMKGLQ.mjs";
10
10
  import "./chunk-LG4AUKHB.mjs";
@@ -14,9 +14,9 @@ import "./chunk-GEW6LS32.mjs";
14
14
  import "./chunk-NZADFXHE.mjs";
15
15
  import "./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-OQ3CML4F.mjs";
18
+ import "./chunk-KBTFMYZQ.mjs";
19
+ import "./chunk-HFCOZPAS.mjs";
20
20
  import "./chunk-JL7JXCET.mjs";
21
21
  import "./chunk-ZUEQNCKB.mjs";
22
22
  import "./chunk-25IC7KXZ.mjs";
@@ -32,4 +32,4 @@ export {
32
32
  handleScheduleAction,
33
33
  isScheduleTool
34
34
  };
35
- //# sourceMappingURL=schedule-tool-C5QN5OQU.mjs.map
35
+ //# sourceMappingURL=schedule-tool-ZVOSSFN2.mjs.map
@@ -6,7 +6,7 @@ import {
6
6
  extractSlackContext,
7
7
  init_schedule_tool_handler,
8
8
  isScheduleToolCall
9
- } from "./chunk-GOJRNYTV.mjs";
9
+ } from "./chunk-ZQR4AGS3.mjs";
10
10
  import "./chunk-KFKHU6CM.mjs";
11
11
  import "./chunk-AVMMKGLQ.mjs";
12
12
  import "./chunk-LG4AUKHB.mjs";
@@ -16,9 +16,9 @@ import "./chunk-GEW6LS32.mjs";
16
16
  import "./chunk-NZADFXHE.mjs";
17
17
  import "./chunk-DEAPFYNX.mjs";
18
18
  import "./chunk-NCWIZVOT.mjs";
19
- import "./chunk-J236ZVYX.mjs";
20
- import "./chunk-XDIBL7QB.mjs";
21
- import "./chunk-S47KBQQK.mjs";
19
+ import "./chunk-OQ3CML4F.mjs";
20
+ import "./chunk-KBTFMYZQ.mjs";
21
+ import "./chunk-HFCOZPAS.mjs";
22
22
  import "./chunk-JL7JXCET.mjs";
23
23
  import "./chunk-ZUEQNCKB.mjs";
24
24
  import "./chunk-25IC7KXZ.mjs";
@@ -36,4 +36,4 @@ export {
36
36
  extractSlackContext,
37
37
  isScheduleToolCall
38
38
  };
39
- //# sourceMappingURL=schedule-tool-handler-DKHHPZAG.mjs.map
39
+ //# sourceMappingURL=schedule-tool-handler-4NCS4ARE.mjs.map
@@ -6,7 +6,7 @@ import {
6
6
  extractSlackContext,
7
7
  init_schedule_tool_handler,
8
8
  isScheduleToolCall
9
- } from "./chunk-G5JBWW3O.mjs";
9
+ } from "./chunk-KKGMGB4X.mjs";
10
10
  import "./chunk-KFKHU6CM.mjs";
11
11
  import "./chunk-AVMMKGLQ.mjs";
12
12
  import "./chunk-LG4AUKHB.mjs";
@@ -16,9 +16,9 @@ import "./chunk-GEW6LS32.mjs";
16
16
  import "./chunk-NZADFXHE.mjs";
17
17
  import "./chunk-DEAPFYNX.mjs";
18
18
  import "./chunk-NCWIZVOT.mjs";
19
- import "./chunk-J236ZVYX.mjs";
20
- import "./chunk-XDIBL7QB.mjs";
21
- import "./chunk-S47KBQQK.mjs";
19
+ import "./chunk-RV5SK4FZ.mjs";
20
+ import "./chunk-E7NRUDWL.mjs";
21
+ import "./chunk-T5USZCCM.mjs";
22
22
  import "./chunk-JL7JXCET.mjs";
23
23
  import "./chunk-ZUEQNCKB.mjs";
24
24
  import "./chunk-25IC7KXZ.mjs";
@@ -36,4 +36,4 @@ export {
36
36
  extractSlackContext,
37
37
  isScheduleToolCall
38
38
  };
39
- //# sourceMappingURL=schedule-tool-handler-OKZ53WMC.mjs.map
39
+ //# sourceMappingURL=schedule-tool-handler-BGOL2TOP.mjs.map
@@ -6,7 +6,7 @@ import {
6
6
  extractSlackContext,
7
7
  init_schedule_tool_handler,
8
8
  isScheduleToolCall
9
- } from "./chunk-MYROK4LB.mjs";
9
+ } from "./chunk-WSYVK6ML.mjs";
10
10
  import "./chunk-KFKHU6CM.mjs";
11
11
  import "./chunk-AVMMKGLQ.mjs";
12
12
  import "./chunk-LG4AUKHB.mjs";
@@ -16,9 +16,9 @@ import "./chunk-GEW6LS32.mjs";
16
16
  import "./chunk-NZADFXHE.mjs";
17
17
  import "./chunk-DEAPFYNX.mjs";
18
18
  import "./chunk-NCWIZVOT.mjs";
19
- import "./chunk-GMHSXC5K.mjs";
20
- import "./chunk-EO4IJNM7.mjs";
21
- import "./chunk-LDE33FGE.mjs";
19
+ import "./chunk-RV5SK4FZ.mjs";
20
+ import "./chunk-E7NRUDWL.mjs";
21
+ import "./chunk-T5USZCCM.mjs";
22
22
  import "./chunk-JL7JXCET.mjs";
23
23
  import "./chunk-ZUEQNCKB.mjs";
24
24
  import "./chunk-25IC7KXZ.mjs";
@@ -36,4 +36,4 @@ export {
36
36
  extractSlackContext,
37
37
  isScheduleToolCall
38
38
  };
39
- //# sourceMappingURL=schedule-tool-handler-ZUMPNAVY.mjs.map
39
+ //# sourceMappingURL=schedule-tool-handler-TZYXM664.mjs.map
package/dist/sdk/sdk.js CHANGED
@@ -646,7 +646,7 @@ var require_package = __commonJS({
646
646
  "package.json"(exports2, module2) {
647
647
  module2.exports = {
648
648
  name: "@probelabs/visor",
649
- version: "0.1.165",
649
+ version: "0.1.166",
650
650
  main: "dist/index.js",
651
651
  bin: {
652
652
  visor: "./dist/index.js"
@@ -760,7 +760,7 @@ var require_package = __commonJS({
760
760
  "@opentelemetry/sdk-node": "^0.203.0",
761
761
  "@opentelemetry/sdk-trace-base": "^1.30.1",
762
762
  "@opentelemetry/semantic-conventions": "^1.30.1",
763
- "@probelabs/probe": "^0.6.0-rc278",
763
+ "@probelabs/probe": "^0.6.0-rc280",
764
764
  "@types/commander": "^2.12.0",
765
765
  "@types/uuid": "^10.0.0",
766
766
  acorn: "^8.16.0",
@@ -24114,6 +24114,112 @@ var init_template_context = __esm({
24114
24114
  }
24115
24115
  });
24116
24116
 
24117
+ // src/utils/oauth2-token-cache.ts
24118
+ var OAuth2TokenCache;
24119
+ var init_oauth2_token_cache = __esm({
24120
+ "src/utils/oauth2-token-cache.ts"() {
24121
+ "use strict";
24122
+ init_logger();
24123
+ init_env_resolver();
24124
+ OAuth2TokenCache = class _OAuth2TokenCache {
24125
+ static instance;
24126
+ cache = /* @__PURE__ */ new Map();
24127
+ static getInstance() {
24128
+ if (!_OAuth2TokenCache.instance) {
24129
+ _OAuth2TokenCache.instance = new _OAuth2TokenCache();
24130
+ }
24131
+ return _OAuth2TokenCache.instance;
24132
+ }
24133
+ /** Visible for testing */
24134
+ static resetInstance() {
24135
+ _OAuth2TokenCache.instance = void 0;
24136
+ }
24137
+ /**
24138
+ * Get a valid Bearer token for the given config.
24139
+ * Returns a cached token if still valid, otherwise fetches a new one.
24140
+ */
24141
+ async getToken(config) {
24142
+ const clientId = String(EnvironmentResolver.resolveValue(config.client_id));
24143
+ const clientSecret = String(EnvironmentResolver.resolveValue(config.client_secret));
24144
+ const tokenUrl = String(EnvironmentResolver.resolveValue(config.token_url));
24145
+ const bufferMs = (config.token_ttl_buffer ?? 300) * 1e3;
24146
+ const cacheKey = `${tokenUrl}|${clientId}`;
24147
+ const cached = this.cache.get(cacheKey);
24148
+ if (cached && cached.expires_at - bufferMs > Date.now()) {
24149
+ logger.verbose("[oauth2] Using cached token");
24150
+ return cached.access_token;
24151
+ }
24152
+ if (cached?.refreshPromise) {
24153
+ logger.verbose("[oauth2] Awaiting in-flight token refresh");
24154
+ return cached.refreshPromise;
24155
+ }
24156
+ const refreshPromise = this.fetchToken(tokenUrl, clientId, clientSecret, config.scopes);
24157
+ if (cached) {
24158
+ cached.refreshPromise = refreshPromise;
24159
+ } else {
24160
+ this.cache.set(cacheKey, {
24161
+ access_token: "",
24162
+ expires_at: 0,
24163
+ refreshPromise
24164
+ });
24165
+ }
24166
+ try {
24167
+ const token = await refreshPromise;
24168
+ return token;
24169
+ } finally {
24170
+ const entry = this.cache.get(cacheKey);
24171
+ if (entry) {
24172
+ entry.refreshPromise = void 0;
24173
+ }
24174
+ }
24175
+ }
24176
+ async fetchToken(tokenUrl, clientId, clientSecret, scopes) {
24177
+ logger.verbose(`[oauth2] Fetching token from ${tokenUrl}`);
24178
+ const credentials = Buffer.from(`${clientId}:${clientSecret}`).toString("base64");
24179
+ const bodyParams = new URLSearchParams({ grant_type: "client_credentials" });
24180
+ if (scopes?.length) {
24181
+ bodyParams.set("scope", scopes.join(" "));
24182
+ }
24183
+ const response = await fetch(tokenUrl, {
24184
+ method: "POST",
24185
+ headers: {
24186
+ "Content-Type": "application/x-www-form-urlencoded",
24187
+ Authorization: `Basic ${credentials}`
24188
+ },
24189
+ body: bodyParams.toString()
24190
+ });
24191
+ if (!response.ok) {
24192
+ let errorDetail = "";
24193
+ try {
24194
+ errorDetail = await response.text();
24195
+ } catch {
24196
+ }
24197
+ throw new Error(
24198
+ `OAuth2 token request failed: HTTP ${response.status} ${response.statusText}${errorDetail ? ` - ${errorDetail.substring(0, 200)}` : ""}`
24199
+ );
24200
+ }
24201
+ const data = await response.json();
24202
+ if (!data.access_token) {
24203
+ throw new Error("OAuth2 token response missing access_token");
24204
+ }
24205
+ const expiresIn = data.expires_in ?? 3600;
24206
+ const expiresAt = Date.now() + expiresIn * 1e3;
24207
+ const cacheKey = `${tokenUrl}|${clientId}`;
24208
+ this.cache.set(cacheKey, {
24209
+ access_token: data.access_token,
24210
+ expires_at: expiresAt
24211
+ });
24212
+ logger.verbose(`[oauth2] Token acquired, expires in ${expiresIn}s`);
24213
+ return data.access_token;
24214
+ }
24215
+ /** Clear all cached tokens (for testing or credential rotation) */
24216
+ clear() {
24217
+ this.cache.clear();
24218
+ }
24219
+ };
24220
+ }
24221
+ });
24222
+
24117
24223
  // src/providers/http-client-provider.ts
24118
24224
  var fs15, path18, HttpClientProvider;
24119
24225
  var init_http_client_provider = __esm({
@@ -24124,6 +24230,7 @@ var init_http_client_provider = __esm({
24124
24230
  init_env_resolver();
24125
24231
  init_sandbox();
24126
24232
  init_template_context();
24233
+ init_oauth2_token_cache();
24127
24234
  init_logger();
24128
24235
  fs15 = __toESM(require("fs"));
24129
24236
  path18 = __toESM(require("path"));
@@ -24151,24 +24258,43 @@ var init_http_client_provider = __esm({
24151
24258
  if (cfg.type !== "http_client") {
24152
24259
  return false;
24153
24260
  }
24154
- if (typeof cfg.url !== "string" || !cfg.url) {
24261
+ const hasUrl = typeof cfg.url === "string" && cfg.url;
24262
+ const hasBaseUrl = typeof cfg.base_url === "string" && cfg.base_url;
24263
+ if (!hasUrl && !hasBaseUrl) {
24155
24264
  return false;
24156
24265
  }
24157
24266
  try {
24158
- new URL(cfg.url);
24267
+ new URL(hasUrl ? cfg.url : cfg.base_url);
24159
24268
  return true;
24160
24269
  } catch {
24161
24270
  return false;
24162
24271
  }
24163
24272
  }
24164
24273
  async execute(prInfo, config, dependencyResults, context2) {
24165
- const url = config.url;
24274
+ const baseUrl = config.base_url;
24275
+ const rawPath = config.path;
24276
+ const pathParams = config.params || {};
24277
+ const queryParams = config.query || {};
24278
+ const authConfig = config.auth;
24279
+ let url;
24280
+ if (baseUrl && rawPath) {
24281
+ let resolvedPath = rawPath;
24282
+ for (const [key, value] of Object.entries(pathParams)) {
24283
+ resolvedPath = resolvedPath.replace(`{${key}}`, encodeURIComponent(value));
24284
+ }
24285
+ url = `${baseUrl.replace(/\/+$/, "")}/${resolvedPath.replace(/^\/+/, "")}`;
24286
+ if (Object.keys(queryParams).length > 0) {
24287
+ const qs = new URLSearchParams(queryParams).toString();
24288
+ url += `${url.includes("?") ? "&" : "?"}${qs}`;
24289
+ }
24290
+ } else {
24291
+ url = config.url;
24292
+ }
24166
24293
  const method = config.method || "GET";
24167
24294
  const headers = config.headers || {};
24168
24295
  const timeout = config.timeout || 3e4;
24169
24296
  const transform = config.transform;
24170
24297
  const transformJs = config.transform_js;
24171
- const bodyTemplate = config.body;
24172
24298
  const outputFileTemplate = config.output_file;
24173
24299
  const skipIfExists = config.skip_if_exists !== false;
24174
24300
  let resolvedUrlForErrors = url;
@@ -24192,7 +24318,11 @@ var init_http_client_provider = __esm({
24192
24318
  resolvedUrlForErrors = renderedUrl;
24193
24319
  }
24194
24320
  let requestBody;
24195
- if (bodyTemplate) {
24321
+ const rawBody = config.body;
24322
+ const bodyTemplate = typeof rawBody === "string" ? rawBody : void 0;
24323
+ if (rawBody && typeof rawBody === "object") {
24324
+ requestBody = JSON.stringify(rawBody);
24325
+ } else if (bodyTemplate) {
24196
24326
  let resolvedBody = String(EnvironmentResolver.resolveValue(bodyTemplate));
24197
24327
  if (resolvedBody.includes("{{") || resolvedBody.includes("{%")) {
24198
24328
  resolvedBody = await this.liquid.parseAndRender(resolvedBody, templateContext);
@@ -24211,6 +24341,11 @@ var init_http_client_provider = __esm({
24211
24341
  logger.verbose(`[http_client] ${key}: ${maskedValue}`);
24212
24342
  }
24213
24343
  }
24344
+ if (authConfig?.type === "oauth2_client_credentials") {
24345
+ const tokenCache = OAuth2TokenCache.getInstance();
24346
+ const token = await tokenCache.getToken(authConfig);
24347
+ resolvedHeaders["Authorization"] = `Bearer ${token}`;
24348
+ }
24214
24349
  let resolvedOutputFile;
24215
24350
  if (outputFileTemplate) {
24216
24351
  let outputPath = String(EnvironmentResolver.resolveValue(outputFileTemplate));
@@ -24489,6 +24624,11 @@ var init_http_client_provider = __esm({
24489
24624
  return [
24490
24625
  "type",
24491
24626
  "url",
24627
+ "base_url",
24628
+ "path",
24629
+ "params",
24630
+ "query",
24631
+ "auth",
24492
24632
  "method",
24493
24633
  "headers",
24494
24634
  "body",