@probelabs/visor 0.1.173 → 0.1.174-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 (105) hide show
  1. package/dist/docs/dashboards/README.md +73 -26
  2. package/dist/docs/dashboards/grafana-visor-overview.json +435 -15
  3. package/dist/docs/telemetry-reference.md +387 -0
  4. package/dist/docs/telemetry-setup.md +2 -0
  5. package/dist/generated/config-schema.d.ts +277 -7
  6. package/dist/generated/config-schema.d.ts.map +1 -1
  7. package/dist/generated/config-schema.json +3803 -0
  8. package/dist/index.js +2202 -51
  9. package/dist/sdk/{a2a-frontend-VHOQ45CR.mjs → a2a-frontend-FUJRKHJB.mjs} +3 -3
  10. package/dist/sdk/{check-provider-registry-65GO3SCO.mjs → check-provider-registry-53C2ZIXJ.mjs} +7 -7
  11. package/dist/sdk/{check-provider-registry-75O5XJMA.mjs → check-provider-registry-UPQNHHFF.mjs} +7 -7
  12. package/dist/sdk/{chunk-Y5MEQW2W.mjs → chunk-2PL2YH3B.mjs} +19 -19
  13. package/dist/sdk/{chunk-4TV2CVVI.mjs → chunk-34QX63WK.mjs} +16 -14
  14. package/dist/sdk/chunk-34QX63WK.mjs.map +1 -0
  15. package/dist/sdk/{chunk-2HXOGRAS.mjs → chunk-65SHRIQF.mjs} +3 -3
  16. package/dist/sdk/{chunk-2HXOGRAS.mjs.map → chunk-65SHRIQF.mjs.map} +1 -1
  17. package/dist/sdk/{chunk-VVHALCWV.mjs → chunk-EFNNJIMY.mjs} +3 -3
  18. package/dist/sdk/{chunk-7CWJNSL2.mjs → chunk-GKSSG5IM.mjs} +20 -20
  19. package/dist/sdk/{chunk-7CWJNSL2.mjs.map → chunk-GKSSG5IM.mjs.map} +1 -1
  20. package/dist/sdk/{chunk-HZEXCJGA.mjs → chunk-W4KCJM6J.mjs} +282 -8
  21. package/dist/sdk/chunk-W4KCJM6J.mjs.map +1 -0
  22. package/dist/sdk/{chunk-GVPMO6QD.mjs → chunk-WJIV7MKY.mjs} +3 -3
  23. package/dist/sdk/{config-UXRHADSE.mjs → config-BVL3KFMB.mjs} +2 -2
  24. package/dist/sdk/{failure-condition-evaluator-Q4KNMX6F.mjs → failure-condition-evaluator-DL6H57NX.mjs} +4 -4
  25. package/dist/sdk/{github-frontend-56UQTA47.mjs → github-frontend-F2YCPK6H.mjs} +4 -4
  26. package/dist/sdk/{host-QRGXXRDA.mjs → host-6TBS44ER.mjs} +3 -3
  27. package/dist/sdk/{host-VYPJ2UGQ.mjs → host-LRWIKURZ.mjs} +3 -3
  28. package/dist/sdk/knex-store-QCEW4I4R.mjs +527 -0
  29. package/dist/sdk/knex-store-QCEW4I4R.mjs.map +1 -0
  30. package/dist/sdk/loader-Q7K76ZIY.mjs +89 -0
  31. package/dist/sdk/loader-Q7K76ZIY.mjs.map +1 -0
  32. package/dist/sdk/{metrics-FU2G5SZ2.mjs → metrics-JTOG2HNO.mjs} +2 -2
  33. package/dist/sdk/opa-policy-engine-QCSSIMUF.mjs +655 -0
  34. package/dist/sdk/opa-policy-engine-QCSSIMUF.mjs.map +1 -0
  35. package/dist/sdk/{routing-DBQHPP2O.mjs → routing-GF2CF3JT.mjs} +5 -5
  36. package/dist/sdk/{schedule-tool-MHICRNCI.mjs → schedule-tool-5KDBDCFO.mjs} +7 -7
  37. package/dist/sdk/{schedule-tool-VRLX54J5.mjs → schedule-tool-UMDRCNO5.mjs} +7 -7
  38. package/dist/sdk/{schedule-tool-handler-3ES4WON7.mjs → schedule-tool-handler-5EPTHBLS.mjs} +7 -7
  39. package/dist/sdk/{schedule-tool-handler-FQGAWC5N.mjs → schedule-tool-handler-MUF5V36L.mjs} +7 -7
  40. package/dist/sdk/sdk.d.mts +137 -133
  41. package/dist/sdk/sdk.d.ts +137 -133
  42. package/dist/sdk/sdk.js +1952 -302
  43. package/dist/sdk/sdk.js.map +1 -1
  44. package/dist/sdk/sdk.mjs +6 -6
  45. package/dist/sdk/{trace-helpers-UKMYHQIK.mjs → trace-helpers-FKM2MEDW.mjs} +3 -3
  46. package/dist/sdk/validator-XTZJZZJH.mjs +134 -0
  47. package/dist/sdk/validator-XTZJZZJH.mjs.map +1 -0
  48. package/dist/sdk/{workflow-check-provider-F5DTEX6E.mjs → workflow-check-provider-EWMZEEES.mjs} +7 -7
  49. package/dist/sdk/{workflow-check-provider-VEOVTCVU.mjs → workflow-check-provider-RQUCBAYY.mjs} +7 -7
  50. package/dist/telemetry/metrics.d.ts.map +1 -1
  51. package/dist/types/config.d.ts +5 -4
  52. package/dist/types/config.d.ts.map +1 -1
  53. package/package.json +2 -2
  54. package/dist/output/traces/run-2026-03-09T15-21-25-122Z.ndjson +0 -138
  55. package/dist/output/traces/run-2026-03-09T15-22-05-255Z.ndjson +0 -2280
  56. package/dist/sdk/a2a-frontend-7CYN3X7M.mjs +0 -1658
  57. package/dist/sdk/a2a-frontend-VHOQ45CR.mjs.map +0 -1
  58. package/dist/sdk/check-provider-registry-DBTS7OXY.mjs +0 -30
  59. package/dist/sdk/chunk-4TV2CVVI.mjs.map +0 -1
  60. package/dist/sdk/chunk-AV6KML52.mjs +0 -45016
  61. package/dist/sdk/chunk-AV6KML52.mjs.map +0 -1
  62. package/dist/sdk/chunk-HZEXCJGA.mjs.map +0 -1
  63. package/dist/sdk/chunk-LTHHE6Z5.mjs +0 -516
  64. package/dist/sdk/chunk-LTHHE6Z5.mjs.map +0 -1
  65. package/dist/sdk/chunk-VK7FUBBU.mjs +0 -739
  66. package/dist/sdk/chunk-VVHALCWV.mjs.map +0 -1
  67. package/dist/sdk/chunk-WYFQQ445.mjs +0 -1502
  68. package/dist/sdk/chunk-WYFQQ445.mjs.map +0 -1
  69. package/dist/sdk/failure-condition-evaluator-SNR5XLGN.mjs +0 -18
  70. package/dist/sdk/github-frontend-OOP26667.mjs +0 -1386
  71. package/dist/sdk/github-frontend-OOP26667.mjs.map +0 -1
  72. package/dist/sdk/routing-ZAUCS3HJ.mjs +0 -26
  73. package/dist/sdk/schedule-tool-2FIVKPVJ.mjs +0 -36
  74. package/dist/sdk/schedule-tool-handler-FQGAWC5N.mjs.map +0 -1
  75. package/dist/sdk/schedule-tool-handler-KYUHU4JR.mjs +0 -40
  76. package/dist/sdk/schedule-tool-handler-KYUHU4JR.mjs.map +0 -1
  77. package/dist/sdk/trace-helpers-UKMYHQIK.mjs.map +0 -1
  78. package/dist/sdk/trace-helpers-ZFDJ55SH.mjs +0 -29
  79. package/dist/sdk/trace-helpers-ZFDJ55SH.mjs.map +0 -1
  80. package/dist/sdk/workflow-check-provider-5KQTXKWS.mjs +0 -30
  81. package/dist/sdk/workflow-check-provider-5KQTXKWS.mjs.map +0 -1
  82. package/dist/sdk/workflow-check-provider-F5DTEX6E.mjs.map +0 -1
  83. package/dist/sdk/workflow-check-provider-VEOVTCVU.mjs.map +0 -1
  84. package/dist/traces/run-2026-03-09T15-21-25-122Z.ndjson +0 -138
  85. package/dist/traces/run-2026-03-09T15-22-05-255Z.ndjson +0 -2280
  86. /package/dist/sdk/{a2a-frontend-7CYN3X7M.mjs.map → a2a-frontend-FUJRKHJB.mjs.map} +0 -0
  87. /package/dist/sdk/{check-provider-registry-65GO3SCO.mjs.map → check-provider-registry-53C2ZIXJ.mjs.map} +0 -0
  88. /package/dist/sdk/{check-provider-registry-75O5XJMA.mjs.map → check-provider-registry-UPQNHHFF.mjs.map} +0 -0
  89. /package/dist/sdk/{chunk-Y5MEQW2W.mjs.map → chunk-2PL2YH3B.mjs.map} +0 -0
  90. /package/dist/sdk/{chunk-VK7FUBBU.mjs.map → chunk-EFNNJIMY.mjs.map} +0 -0
  91. /package/dist/sdk/{chunk-GVPMO6QD.mjs.map → chunk-WJIV7MKY.mjs.map} +0 -0
  92. /package/dist/sdk/{check-provider-registry-DBTS7OXY.mjs.map → config-BVL3KFMB.mjs.map} +0 -0
  93. /package/dist/sdk/{config-UXRHADSE.mjs.map → failure-condition-evaluator-DL6H57NX.mjs.map} +0 -0
  94. /package/dist/sdk/{github-frontend-56UQTA47.mjs.map → github-frontend-F2YCPK6H.mjs.map} +0 -0
  95. /package/dist/sdk/{host-QRGXXRDA.mjs.map → host-6TBS44ER.mjs.map} +0 -0
  96. /package/dist/sdk/{host-VYPJ2UGQ.mjs.map → host-LRWIKURZ.mjs.map} +0 -0
  97. /package/dist/sdk/{failure-condition-evaluator-Q4KNMX6F.mjs.map → metrics-JTOG2HNO.mjs.map} +0 -0
  98. /package/dist/sdk/{failure-condition-evaluator-SNR5XLGN.mjs.map → routing-GF2CF3JT.mjs.map} +0 -0
  99. /package/dist/sdk/{metrics-FU2G5SZ2.mjs.map → schedule-tool-5KDBDCFO.mjs.map} +0 -0
  100. /package/dist/sdk/{routing-DBQHPP2O.mjs.map → schedule-tool-UMDRCNO5.mjs.map} +0 -0
  101. /package/dist/sdk/{routing-ZAUCS3HJ.mjs.map → schedule-tool-handler-5EPTHBLS.mjs.map} +0 -0
  102. /package/dist/sdk/{schedule-tool-2FIVKPVJ.mjs.map → schedule-tool-handler-MUF5V36L.mjs.map} +0 -0
  103. /package/dist/sdk/{schedule-tool-MHICRNCI.mjs.map → trace-helpers-FKM2MEDW.mjs.map} +0 -0
  104. /package/dist/sdk/{schedule-tool-VRLX54J5.mjs.map → workflow-check-provider-EWMZEEES.mjs.map} +0 -0
  105. /package/dist/sdk/{schedule-tool-handler-3ES4WON7.mjs.map → workflow-check-provider-RQUCBAYY.mjs.map} +0 -0
@@ -12,9 +12,9 @@ import {
12
12
  import {
13
13
  init_trace_helpers,
14
14
  withActiveSpan
15
- } from "./chunk-LTHHE6Z5.mjs";
15
+ } from "./chunk-65SHRIQF.mjs";
16
16
  import "./chunk-6VVXKXTI.mjs";
17
- import "./chunk-4TV2CVVI.mjs";
17
+ import "./chunk-34QX63WK.mjs";
18
18
  import {
19
19
  init_logger,
20
20
  logger
@@ -1655,4 +1655,4 @@ export {
1655
1655
  messageToWorkflowInput,
1656
1656
  resultToArtifacts
1657
1657
  };
1658
- //# sourceMappingURL=a2a-frontend-VHOQ45CR.mjs.map
1658
+ //# sourceMappingURL=a2a-frontend-FUJRKHJB.mjs.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  CheckProviderRegistry,
3
3
  init_check_provider_registry
4
- } from "./chunk-AV6KML52.mjs";
4
+ } from "./chunk-GKSSG5IM.mjs";
5
5
  import "./chunk-YSOIR46P.mjs";
6
6
  import "./chunk-PDQTEBOJ.mjs";
7
7
  import "./chunk-7VTZDC2X.mjs";
@@ -9,13 +9,13 @@ import "./chunk-B7BVQM5K.mjs";
9
9
  import "./chunk-XXAEN5KU.mjs";
10
10
  import "./chunk-RHKPFJLG.mjs";
11
11
  import "./chunk-UBTZE3FO.mjs";
12
- import "./chunk-HZEXCJGA.mjs";
12
+ import "./chunk-W4KCJM6J.mjs";
13
13
  import "./chunk-KWTCTEFT.mjs";
14
- import "./chunk-GVPMO6QD.mjs";
15
- import "./chunk-VVHALCWV.mjs";
16
- import "./chunk-LTHHE6Z5.mjs";
14
+ import "./chunk-WJIV7MKY.mjs";
15
+ import "./chunk-EFNNJIMY.mjs";
16
+ import "./chunk-65SHRIQF.mjs";
17
17
  import "./chunk-6VVXKXTI.mjs";
18
- import "./chunk-4TV2CVVI.mjs";
18
+ import "./chunk-34QX63WK.mjs";
19
19
  import "./chunk-PQWZ6NFL.mjs";
20
20
  import "./chunk-25IC7KXZ.mjs";
21
21
  import "./chunk-LW3INISN.mjs";
@@ -27,4 +27,4 @@ init_check_provider_registry();
27
27
  export {
28
28
  CheckProviderRegistry
29
29
  };
30
- //# sourceMappingURL=check-provider-registry-65GO3SCO.mjs.map
30
+ //# sourceMappingURL=check-provider-registry-53C2ZIXJ.mjs.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  CheckProviderRegistry,
3
3
  init_check_provider_registry
4
- } from "./chunk-Y5MEQW2W.mjs";
4
+ } from "./chunk-2PL2YH3B.mjs";
5
5
  import "./chunk-YSOIR46P.mjs";
6
6
  import "./chunk-PDQTEBOJ.mjs";
7
7
  import "./chunk-7VTZDC2X.mjs";
@@ -9,13 +9,13 @@ import "./chunk-B7BVQM5K.mjs";
9
9
  import "./chunk-XXAEN5KU.mjs";
10
10
  import "./chunk-RHKPFJLG.mjs";
11
11
  import "./chunk-UBTZE3FO.mjs";
12
- import "./chunk-HZEXCJGA.mjs";
12
+ import "./chunk-W4KCJM6J.mjs";
13
13
  import "./chunk-KWTCTEFT.mjs";
14
- import "./chunk-WYFQQ445.mjs";
15
- import "./chunk-VK7FUBBU.mjs";
16
- import "./chunk-2HXOGRAS.mjs";
14
+ import "./chunk-WJIV7MKY.mjs";
15
+ import "./chunk-EFNNJIMY.mjs";
16
+ import "./chunk-65SHRIQF.mjs";
17
17
  import "./chunk-6VVXKXTI.mjs";
18
- import "./chunk-4TV2CVVI.mjs";
18
+ import "./chunk-34QX63WK.mjs";
19
19
  import "./chunk-PQWZ6NFL.mjs";
20
20
  import "./chunk-25IC7KXZ.mjs";
21
21
  import "./chunk-LW3INISN.mjs";
@@ -27,4 +27,4 @@ init_check_provider_registry();
27
27
  export {
28
28
  CheckProviderRegistry
29
29
  };
30
- //# sourceMappingURL=check-provider-registry-75O5XJMA.mjs.map
30
+ //# sourceMappingURL=check-provider-registry-UPQNHHFF.mjs.map
@@ -43,7 +43,7 @@ import {
43
43
  import {
44
44
  config_exports,
45
45
  init_config
46
- } from "./chunk-HZEXCJGA.mjs";
46
+ } from "./chunk-W4KCJM6J.mjs";
47
47
  import {
48
48
  ExecutionJournal,
49
49
  checkLoopBudget,
@@ -52,11 +52,11 @@ import {
52
52
  init_routing,
53
53
  init_snapshot_store,
54
54
  snapshot_store_exports
55
- } from "./chunk-WYFQQ445.mjs";
55
+ } from "./chunk-WJIV7MKY.mjs";
56
56
  import {
57
57
  FailureConditionEvaluator,
58
58
  init_failure_condition_evaluator
59
- } from "./chunk-VK7FUBBU.mjs";
59
+ } from "./chunk-EFNNJIMY.mjs";
60
60
  import {
61
61
  addEvent,
62
62
  emitNdjsonFallback,
@@ -67,7 +67,7 @@ import {
67
67
  setSpanAttributes,
68
68
  trace_helpers_exports,
69
69
  withActiveSpan
70
- } from "./chunk-2HXOGRAS.mjs";
70
+ } from "./chunk-65SHRIQF.mjs";
71
71
  import {
72
72
  generateHumanId,
73
73
  init_human_id
@@ -76,7 +76,7 @@ import {
76
76
  addDiagramBlock,
77
77
  init_metrics,
78
78
  metrics_exports
79
- } from "./chunk-4TV2CVVI.mjs";
79
+ } from "./chunk-34QX63WK.mjs";
80
80
  import {
81
81
  createExtendedLiquid,
82
82
  init_liquid_extensions
@@ -4006,7 +4006,7 @@ async function executeWorkflowAsTool(workflowId, args, context2, argsOverrides)
4006
4006
  ...args,
4007
4007
  ...argsOverrides
4008
4008
  };
4009
- const { WorkflowCheckProvider: WorkflowCheckProvider2 } = await import("./workflow-check-provider-VEOVTCVU.mjs");
4009
+ const { WorkflowCheckProvider: WorkflowCheckProvider2 } = await import("./workflow-check-provider-EWMZEEES.mjs");
4010
4010
  const provider = new WorkflowCheckProvider2();
4011
4011
  const checkConfig = {
4012
4012
  type: "workflow",
@@ -9327,7 +9327,7 @@ async function executeCheckWithForEachItems2(checkId, forEachParent, forEachItem
9327
9327
  }
9328
9328
  }
9329
9329
  try {
9330
- const { evaluateTransitions } = await import("./routing-ZAUCS3HJ.mjs");
9330
+ const { evaluateTransitions } = await import("./routing-GF2CF3JT.mjs");
9331
9331
  const transTarget = await evaluateTransitions(
9332
9332
  onFinish.transitions,
9333
9333
  forEachParent,
@@ -9387,7 +9387,7 @@ async function executeCheckWithForEachItems2(checkId, forEachParent, forEachItem
9387
9387
  `[LevelDispatch] Error evaluating on_finish transitions for ${forEachParent}: ${e instanceof Error ? e.message : String(e)}`
9388
9388
  );
9389
9389
  }
9390
- const { evaluateGoto: evaluateGoto2 } = await import("./routing-ZAUCS3HJ.mjs");
9390
+ const { evaluateGoto: evaluateGoto2 } = await import("./routing-GF2CF3JT.mjs");
9391
9391
  if (context2.debug) {
9392
9392
  logger.info(
9393
9393
  `[LevelDispatch] Evaluating on_finish.goto_js for forEach parent: ${forEachParent}`
@@ -13348,7 +13348,7 @@ var init_state_machine_execution_engine = __esm({
13348
13348
  try {
13349
13349
  const map = options?.webhookContext?.webhookData;
13350
13350
  if (map) {
13351
- const { CheckProviderRegistry: CheckProviderRegistry2 } = await import("./check-provider-registry-75O5XJMA.mjs");
13351
+ const { CheckProviderRegistry: CheckProviderRegistry2 } = await import("./check-provider-registry-UPQNHHFF.mjs");
13352
13352
  const reg = CheckProviderRegistry2.getInstance();
13353
13353
  const p = reg.getProvider("http_input");
13354
13354
  if (p && typeof p.setWebhookContext === "function") p.setWebhookContext(map);
@@ -13461,7 +13461,7 @@ var init_state_machine_execution_engine = __esm({
13461
13461
  logger.info("[StateMachine] Using state machine engine");
13462
13462
  }
13463
13463
  if (!config) {
13464
- const { ConfigManager } = await import("./config-UXRHADSE.mjs");
13464
+ const { ConfigManager } = await import("./config-BVL3KFMB.mjs");
13465
13465
  const configManager = new ConfigManager();
13466
13466
  config = await configManager.getDefaultConfig();
13467
13467
  logger.debug("[StateMachine] Using default configuration (no config provided)");
@@ -13471,7 +13471,7 @@ var init_state_machine_execution_engine = __esm({
13471
13471
  tag_filter: tagFilter
13472
13472
  } : config;
13473
13473
  try {
13474
- const { CheckProviderRegistry: CheckProviderRegistry2 } = await import("./check-provider-registry-75O5XJMA.mjs");
13474
+ const { CheckProviderRegistry: CheckProviderRegistry2 } = await import("./check-provider-registry-UPQNHHFF.mjs");
13475
13475
  const registry = CheckProviderRegistry2.getInstance();
13476
13476
  registry.setCustomTools(configWithTagFilter.tools || {});
13477
13477
  } catch (error) {
@@ -13535,7 +13535,7 @@ var init_state_machine_execution_engine = __esm({
13535
13535
  try {
13536
13536
  const webhookData = this.executionContext?.webhookContext?.webhookData;
13537
13537
  if (webhookData instanceof Map) {
13538
- const { extractSlackContext: extractSlackContext2 } = await import("./schedule-tool-handler-KYUHU4JR.mjs");
13538
+ const { extractSlackContext: extractSlackContext2 } = await import("./schedule-tool-handler-5EPTHBLS.mjs");
13539
13539
  const slackCtx = extractSlackContext2(webhookData);
13540
13540
  if (slackCtx) {
13541
13541
  const payload = Array.from(webhookData.values())[0];
@@ -13564,7 +13564,7 @@ var init_state_machine_execution_engine = __esm({
13564
13564
  if (Array.isArray(configWithTagFilter.frontends) && configWithTagFilter.frontends.length > 0) {
13565
13565
  try {
13566
13566
  const { EventBus } = await import("./event-bus-5K3Y2FCS.mjs");
13567
- const { FrontendsHost } = await import("./host-QRGXXRDA.mjs");
13567
+ const { FrontendsHost } = await import("./host-6TBS44ER.mjs");
13568
13568
  const bus = new EventBus();
13569
13569
  context2.eventBus = bus;
13570
13570
  frontendsHost = new FrontendsHost(bus, logger);
@@ -13916,10 +13916,10 @@ var init_state_machine_execution_engine = __esm({
13916
13916
  * @returns Array of failure condition evaluation results
13917
13917
  */
13918
13918
  async evaluateFailureConditions(checkName, reviewSummary, config, previousOutputs, authorAssociation) {
13919
- const { FailureConditionEvaluator: FailureConditionEvaluator2 } = await import("./failure-condition-evaluator-SNR5XLGN.mjs");
13919
+ const { FailureConditionEvaluator: FailureConditionEvaluator2 } = await import("./failure-condition-evaluator-DL6H57NX.mjs");
13920
13920
  const evaluator = new FailureConditionEvaluator2();
13921
- const { addEvent: addEvent3 } = await import("./trace-helpers-UKMYHQIK.mjs");
13922
- const { addFailIfTriggered } = await import("./metrics-FU2G5SZ2.mjs");
13921
+ const { addEvent: addEvent3 } = await import("./trace-helpers-FKM2MEDW.mjs");
13922
+ const { addFailIfTriggered } = await import("./metrics-JTOG2HNO.mjs");
13923
13923
  const checkConfig = config.checks?.[checkName];
13924
13924
  if (!checkConfig) {
13925
13925
  return [];
@@ -41415,8 +41415,8 @@ function buildBuiltinGlobals(opts) {
41415
41415
  const asyncFunctionNames = /* @__PURE__ */ new Set();
41416
41416
  const scheduleFn = async (args = {}) => {
41417
41417
  try {
41418
- const { handleScheduleAction: handleScheduleAction2, buildScheduleToolContext: buildScheduleToolContext2 } = await import("./schedule-tool-VRLX54J5.mjs");
41419
- const { extractSlackContext: extractSlackContext2 } = await import("./schedule-tool-handler-KYUHU4JR.mjs");
41418
+ const { handleScheduleAction: handleScheduleAction2, buildScheduleToolContext: buildScheduleToolContext2 } = await import("./schedule-tool-UMDRCNO5.mjs");
41419
+ const { extractSlackContext: extractSlackContext2 } = await import("./schedule-tool-handler-5EPTHBLS.mjs");
41420
41420
  const parentCtx = opts.sessionInfo?._parentContext;
41421
41421
  const webhookData = parentCtx?.prInfo?.eventContext?.webhookData;
41422
41422
  const visorCfg = parentCtx?.config;
@@ -45013,4 +45013,4 @@ undici/lib/fetch/body.js:
45013
45013
  undici/lib/websocket/frame.js:
45014
45014
  (*! ws. MIT License. Einar Otto Stangvik <einaros@gmail.com> *)
45015
45015
  */
45016
- //# sourceMappingURL=chunk-Y5MEQW2W.mjs.map
45016
+ //# sourceMappingURL=chunk-2PL2YH3B.mjs.map
@@ -27,50 +27,53 @@ __export(metrics_exports, {
27
27
  resetRunAiCalls: () => resetRunAiCalls,
28
28
  resetTestMetricsSnapshot: () => resetTestMetricsSnapshot
29
29
  });
30
+ function getMeter() {
31
+ return metrics.getMeter("visor");
32
+ }
30
33
  function ensureInstruments() {
31
34
  if (initialized) return;
32
35
  try {
33
- checkDurationHist = meter.createHistogram("visor.check.duration_ms", {
36
+ checkDurationHist = getMeter().createHistogram("visor.check.duration_ms", {
34
37
  description: "Duration of a check execution in milliseconds",
35
38
  unit: "ms"
36
39
  });
37
- providerDurationHist = meter.createHistogram("visor.provider.duration_ms", {
40
+ providerDurationHist = getMeter().createHistogram("visor.provider.duration_ms", {
38
41
  description: "Duration of provider execution in milliseconds",
39
42
  unit: "ms"
40
43
  });
41
- foreachDurationHist = meter.createHistogram("visor.foreach.item.duration_ms", {
44
+ foreachDurationHist = getMeter().createHistogram("visor.foreach.item.duration_ms", {
42
45
  description: "Duration of a forEach item execution in milliseconds",
43
46
  unit: "ms"
44
47
  });
45
- issuesCounter = meter.createCounter("visor.check.issues", {
48
+ issuesCounter = getMeter().createCounter("visor.check.issues", {
46
49
  description: "Number of issues produced by checks",
47
50
  unit: "1"
48
51
  });
49
- activeChecks = meter.createUpDownCounter("visor.run.active_checks", {
52
+ activeChecks = getMeter().createUpDownCounter("visor.run.active_checks", {
50
53
  description: "Number of checks actively running",
51
54
  unit: "1"
52
55
  });
53
- failIfCounter = meter.createCounter("visor.fail_if.triggered", {
56
+ failIfCounter = getMeter().createCounter("visor.fail_if.triggered", {
54
57
  description: "Number of times fail_if condition triggered",
55
58
  unit: "1"
56
59
  });
57
- diagramBlocks = meter.createCounter("visor.diagram.blocks", {
60
+ diagramBlocks = getMeter().createCounter("visor.diagram.blocks", {
58
61
  description: "Number of Mermaid diagram blocks emitted",
59
62
  unit: "1"
60
63
  });
61
- runCounter = meter.createCounter("visor.run.total", {
64
+ runCounter = getMeter().createCounter("visor.run.total", {
62
65
  description: "Total number of visor runs (workflow executions)",
63
66
  unit: "1"
64
67
  });
65
- runDurationHist = meter.createHistogram("visor.run.duration_ms", {
68
+ runDurationHist = getMeter().createHistogram("visor.run.duration_ms", {
66
69
  description: "Duration of a complete visor run in milliseconds",
67
70
  unit: "ms"
68
71
  });
69
- aiCallCounter = meter.createCounter("visor.ai_call.total", {
72
+ aiCallCounter = getMeter().createCounter("visor.ai_call.total", {
70
73
  description: "Total number of AI provider calls",
71
74
  unit: "1"
72
75
  });
73
- runAiCallsHist = meter.createHistogram("visor.run.ai_calls", {
76
+ runAiCallsHist = getMeter().createHistogram("visor.run.ai_calls", {
74
77
  description: "Number of AI calls per visor run",
75
78
  unit: "1"
76
79
  });
@@ -207,12 +210,11 @@ function getTestMetricsSnapshot() {
207
210
  function resetTestMetricsSnapshot() {
208
211
  Object.keys(TEST_SNAPSHOT).forEach((k) => TEST_SNAPSHOT[k] = 0);
209
212
  }
210
- var initialized, meter, TEST_ENABLED, TEST_SNAPSHOT, checkDurationHist, providerDurationHist, foreachDurationHist, issuesCounter, activeChecks, failIfCounter, diagramBlocks, runCounter, runDurationHist, aiCallCounter, runAiCallsHist, _currentRunAiCalls;
213
+ var initialized, TEST_ENABLED, TEST_SNAPSHOT, checkDurationHist, providerDurationHist, foreachDurationHist, issuesCounter, activeChecks, failIfCounter, diagramBlocks, runCounter, runDurationHist, aiCallCounter, runAiCallsHist, _currentRunAiCalls;
211
214
  var init_metrics = __esm({
212
215
  "src/telemetry/metrics.ts"() {
213
216
  init_lazy_otel();
214
217
  initialized = false;
215
- meter = metrics.getMeter("visor");
216
218
  TEST_ENABLED = process.env.VISOR_TEST_METRICS === "true";
217
219
  TEST_SNAPSHOT = { fail_if_triggered: 0 };
218
220
  _currentRunAiCalls = 0;
@@ -239,4 +241,4 @@ export {
239
241
  metrics_exports,
240
242
  init_metrics
241
243
  };
242
- //# sourceMappingURL=chunk-4TV2CVVI.mjs.map
244
+ //# sourceMappingURL=chunk-34QX63WK.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/telemetry/metrics.ts"],"sourcesContent":["import { metrics } from './lazy-otel';\n\nlet initialized = false;\n// Lazy meter: acquired inside ensureInstruments() so that the MeterProvider\n// registered by NodeSDK (in initTelemetry) is available. Acquiring at\n// module-load time would return a no-op meter because the SDK hasn't started.\nfunction getMeter() {\n return metrics.getMeter('visor');\n}\n\n// Test helpers (enabled with VISOR_TEST_METRICS=true)\nconst TEST_ENABLED = process.env.VISOR_TEST_METRICS === 'true';\nconst TEST_SNAPSHOT: { [k: string]: number } = { fail_if_triggered: 0 };\n\n// Instruments (lazily created when first used)\nlet checkDurationHist: any;\nlet providerDurationHist: any;\nlet foreachDurationHist: any;\nlet issuesCounter: any;\nlet activeChecks: any;\nlet failIfCounter: any;\nlet diagramBlocks: any;\nlet runCounter: any;\nlet runDurationHist: any;\nlet aiCallCounter: any;\nlet runAiCallsHist: any;\n\nfunction ensureInstruments() {\n if (initialized) return;\n try {\n checkDurationHist = getMeter().createHistogram('visor.check.duration_ms', {\n description: 'Duration of a check execution in milliseconds',\n unit: 'ms',\n });\n providerDurationHist = getMeter().createHistogram('visor.provider.duration_ms', {\n description: 'Duration of provider execution in milliseconds',\n unit: 'ms',\n });\n foreachDurationHist = getMeter().createHistogram('visor.foreach.item.duration_ms', {\n description: 'Duration of a forEach item execution in milliseconds',\n unit: 'ms',\n });\n issuesCounter = getMeter().createCounter('visor.check.issues', {\n description: 'Number of issues produced by checks',\n unit: '1',\n });\n activeChecks = getMeter().createUpDownCounter('visor.run.active_checks', {\n description: 'Number of checks actively running',\n unit: '1',\n });\n failIfCounter = getMeter().createCounter('visor.fail_if.triggered', {\n description: 'Number of times fail_if condition triggered',\n unit: '1',\n });\n diagramBlocks = getMeter().createCounter('visor.diagram.blocks', {\n description: 'Number of Mermaid diagram blocks emitted',\n unit: '1',\n });\n runCounter = getMeter().createCounter('visor.run.total', {\n description: 'Total number of visor runs (workflow executions)',\n unit: '1',\n });\n runDurationHist = getMeter().createHistogram('visor.run.duration_ms', {\n description: 'Duration of a complete visor run in milliseconds',\n unit: 'ms',\n });\n aiCallCounter = getMeter().createCounter('visor.ai_call.total', {\n description: 'Total number of AI provider calls',\n unit: '1',\n });\n runAiCallsHist = getMeter().createHistogram('visor.run.ai_calls', {\n description: 'Number of AI calls per visor run',\n unit: '1',\n });\n initialized = true;\n } catch {\n // Metrics may be unavailable if SDK not initialized; ignore gracefully\n }\n}\n\nexport function recordCheckDuration(check: string, durationMs: number, group?: string) {\n ensureInstruments();\n try {\n checkDurationHist?.record(durationMs, {\n 'visor.check.id': check,\n 'visor.check.group': group || 'default',\n });\n } catch {}\n}\n\nexport function recordProviderDuration(check: string, providerType: string, durationMs: number) {\n ensureInstruments();\n try {\n providerDurationHist?.record(durationMs, {\n 'visor.check.id': check,\n 'visor.provider.type': providerType,\n });\n } catch {}\n}\n\nexport function recordForEachDuration(\n check: string,\n index: number,\n total: number,\n durationMs: number\n) {\n ensureInstruments();\n try {\n foreachDurationHist?.record(durationMs, {\n 'visor.check.id': check,\n 'visor.foreach.index': index,\n 'visor.foreach.total': total,\n });\n } catch {}\n}\n\nexport function addIssues(check: string, severity: string, count = 1) {\n ensureInstruments();\n try {\n issuesCounter?.add(count, {\n 'visor.check.id': check,\n severity,\n });\n } catch {}\n}\n\nexport function incActiveCheck(check: string) {\n ensureInstruments();\n try {\n activeChecks?.add(1, { 'visor.check.id': check });\n } catch {}\n}\n\nexport function decActiveCheck(check: string) {\n ensureInstruments();\n try {\n activeChecks?.add(-1, { 'visor.check.id': check });\n } catch {}\n}\n\nexport function addFailIfTriggered(check: string, scope: 'global' | 'check') {\n ensureInstruments();\n try {\n failIfCounter?.add(1, { 'visor.check.id': check, scope });\n } catch {}\n if (TEST_ENABLED) TEST_SNAPSHOT.fail_if_triggered++;\n}\n\nexport function addDiagramBlock(origin: 'content' | 'issue') {\n ensureInstruments();\n try {\n diagramBlocks?.add(1, { origin });\n } catch {}\n}\n\n/**\n * Record a visor run start. Call this when a visor.run span begins.\n * Attributes allow Grafana dashboards to break down by source, user, and workflow.\n */\nexport function recordRunStart(attrs: {\n source?: string;\n userId?: string;\n userName?: string;\n workflowId?: string;\n instanceId?: string;\n}) {\n ensureInstruments();\n try {\n const labels: Record<string, string> = {};\n if (attrs.source) labels['visor.run.source'] = attrs.source;\n if (attrs.userId) labels['visor.run.user_id'] = attrs.userId;\n if (attrs.userName) labels['visor.run.user_name'] = attrs.userName;\n if (attrs.workflowId) labels['visor.run.workflow'] = attrs.workflowId;\n if (attrs.instanceId) labels['visor.instance_id'] = attrs.instanceId;\n runCounter?.add(1, labels);\n } catch {}\n}\n\n/**\n * Record visor run duration on completion.\n */\nexport function recordRunDuration(\n durationMs: number,\n attrs: {\n source?: string;\n userId?: string;\n workflowId?: string;\n success?: boolean;\n }\n) {\n ensureInstruments();\n try {\n const labels: Record<string, string | boolean> = {};\n if (attrs.source) labels['visor.run.source'] = attrs.source;\n if (attrs.userId) labels['visor.run.user_id'] = attrs.userId;\n if (attrs.workflowId) labels['visor.run.workflow'] = attrs.workflowId;\n if (attrs.success !== undefined) labels['visor.run.success'] = attrs.success;\n runDurationHist?.record(durationMs, labels);\n } catch {}\n}\n\n// --- Per-run AI call tracking ---\n// Uses a simple global counter that withVisorRun resets/reads around each run.\nlet _currentRunAiCalls = 0;\n\n/**\n * Record an AI provider call. Call this every time an AI model is invoked.\n */\nexport function recordAiCall(attrs: { checkId?: string; model?: string; source?: string }) {\n ensureInstruments();\n _currentRunAiCalls++;\n try {\n const labels: Record<string, string> = {};\n if (attrs.checkId) labels['visor.check.id'] = attrs.checkId;\n if (attrs.model) labels['visor.ai.model'] = attrs.model;\n if (attrs.source) labels['visor.run.source'] = attrs.source;\n aiCallCounter?.add(1, labels);\n } catch {}\n}\n\n/**\n * Reset the per-run AI call counter. Call at the start of a visor run.\n */\nexport function resetRunAiCalls(): void {\n _currentRunAiCalls = 0;\n}\n\n/**\n * Record the per-run AI call count as a histogram observation. Call at run end.\n */\nexport function recordRunAiCalls(attrs: { source?: string; workflowId?: string }) {\n ensureInstruments();\n try {\n const labels: Record<string, string> = {};\n if (attrs.source) labels['visor.run.source'] = attrs.source;\n if (attrs.workflowId) labels['visor.run.workflow'] = attrs.workflowId;\n runAiCallsHist?.record(_currentRunAiCalls, labels);\n } catch {}\n}\n\n/**\n * Get the current per-run AI call count.\n */\nexport function getRunAiCalls(): number {\n return _currentRunAiCalls;\n}\n\nexport function getTestMetricsSnapshot() {\n return { ...TEST_SNAPSHOT };\n}\n\nexport function resetTestMetricsSnapshot() {\n Object.keys(TEST_SNAPSHOT).forEach(k => (TEST_SNAPSHOT[k] = 0));\n}\n"],"mappings":"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","names":[]}
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  init_metrics,
7
7
  metrics_exports
8
- } from "./chunk-4TV2CVVI.mjs";
8
+ } from "./chunk-34QX63WK.mjs";
9
9
  import {
10
10
  SpanStatusCode,
11
11
  context,
@@ -215,7 +215,7 @@ var require_package = __commonJS({
215
215
  "@opentelemetry/sdk-node": "^0.203.0",
216
216
  "@opentelemetry/sdk-trace-base": "^1.30.1",
217
217
  "@opentelemetry/semantic-conventions": "^1.30.1",
218
- "@probelabs/probe": "^0.6.0-rc290",
218
+ "@probelabs/probe": "^0.6.0-rc291",
219
219
  "@types/commander": "^2.12.0",
220
220
  "@types/uuid": "^10.0.0",
221
221
  acorn: "^8.16.0",
@@ -513,4 +513,4 @@ export {
513
513
  trace_helpers_exports,
514
514
  init_trace_helpers
515
515
  };
516
- //# sourceMappingURL=chunk-2HXOGRAS.mjs.map
516
+ //# sourceMappingURL=chunk-65SHRIQF.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/telemetry/fallback-ndjson.ts","../../package.json","../../src/telemetry/trace-helpers.ts"],"sourcesContent":["import * as fs from 'fs';\nimport * as path from 'path';\n\nlet CURRENT_FILE: string | null = null;\nlet dirReady = false;\nlet writeChain: Promise<void> = Promise.resolve();\nfunction resolveTargetPath(outDir: string): string {\n if (process.env.VISOR_FALLBACK_TRACE_FILE) {\n CURRENT_FILE = process.env.VISOR_FALLBACK_TRACE_FILE;\n return CURRENT_FILE;\n }\n if (CURRENT_FILE) return CURRENT_FILE;\n const ts = new Date().toISOString().replace(/[:.]/g, '-');\n CURRENT_FILE = path.join(outDir, `${ts}.ndjson`);\n return CURRENT_FILE;\n}\n\nfunction isEnabled(): boolean {\n // Enable when CLI set a fallback file (serverless mode), or when explicit file sink is enabled\n if (process.env.VISOR_FALLBACK_TRACE_FILE) return true;\n return (\n process.env.VISOR_TELEMETRY_ENABLED === 'true' &&\n (process.env.VISOR_TELEMETRY_SINK || 'file') === 'file'\n );\n}\n\nfunction appendAsync(outDir: string, line: string): void {\n writeChain = writeChain\n .then(async () => {\n if (!dirReady) {\n try {\n await fs.promises.mkdir(outDir, { recursive: true });\n } catch {}\n dirReady = true;\n }\n const target = resolveTargetPath(outDir);\n await fs.promises.appendFile(target, line, 'utf8');\n })\n .catch(() => {});\n}\n\nexport async function flushNdjson(): Promise<void> {\n try {\n await writeChain;\n } catch {}\n}\n\nexport function emitNdjsonFallback(name: string, attrs: Record<string, unknown>): void {\n try {\n if (!isEnabled()) return;\n const outDir = process.env.VISOR_TRACE_DIR || path.join(process.cwd(), 'output', 'traces');\n const line = JSON.stringify({ name, attributes: attrs }) + '\\n';\n appendAsync(outDir, line);\n } catch {\n // ignore\n }\n}\n\nexport function emitNdjsonSpanWithEvents(\n name: string,\n attrs: Record<string, unknown>,\n events: Array<{ name: string; attrs?: Record<string, unknown> }>\n): void {\n try {\n if (!isEnabled()) return;\n const outDir = process.env.VISOR_TRACE_DIR || path.join(process.cwd(), 'output', 'traces');\n const line = JSON.stringify({ name, attributes: attrs, events }) + '\\n';\n appendAsync(outDir, line);\n } catch {\n // ignore\n }\n}\n","{\n \"name\": \"@probelabs/visor\",\n \"version\": \"0.1.42\",\n \"main\": \"dist/index.js\",\n \"bin\": {\n \"visor\": \"./dist/index.js\"\n },\n \"exports\": {\n \".\": {\n \"require\": \"./dist/index.js\",\n \"import\": \"./dist/index.js\"\n },\n \"./sdk\": {\n \"types\": \"./dist/sdk/sdk.d.ts\",\n \"import\": \"./dist/sdk/sdk.mjs\",\n \"require\": \"./dist/sdk/sdk.js\"\n },\n \"./cli\": {\n \"require\": \"./dist/index.js\"\n }\n },\n \"files\": [\n \"dist/\",\n \"defaults/\",\n \"action.yml\",\n \"README.md\",\n \"LICENSE\"\n ],\n \"publishConfig\": {\n \"access\": \"public\",\n \"registry\": \"https://registry.npmjs.org/\"\n },\n \"scripts\": {\n \"build:cli\": \"ncc build src/index.ts -o dist && cp -r defaults dist/ && cp -r output dist/ && cp -r docs dist/ && cp -r examples dist/ && cp -r src/debug-visualizer/ui dist/debug-visualizer/ && node scripts/inject-version.js && echo '#!/usr/bin/env node' | cat - dist/index.js > temp && mv temp dist/index.js && chmod +x dist/index.js\",\n \"build:sdk\": \"tsup src/sdk.ts --dts --sourcemap --format esm,cjs --out-dir dist/sdk\",\n \"build\": \"./scripts/build-oss.sh\",\n \"build:ee\": \"npm run build:cli && npm run build:sdk\",\n \"test\": \"jest && npm run test:yaml\",\n \"test:unit\": \"jest\",\n \"prepublishOnly\": \"npm run build\",\n \"test:watch\": \"jest --watch\",\n \"test:coverage\": \"jest --coverage\",\n \"test:ee\": \"jest --testPathPatterns='tests/ee' --testPathIgnorePatterns='/node_modules/' --no-coverage\",\n \"test:manual:bash\": \"RUN_MANUAL_TESTS=true jest tests/manual/bash-config-manual.test.ts\",\n \"lint\": \"eslint src tests --ext .ts\",\n \"lint:fix\": \"eslint src tests --ext .ts --fix\",\n \"format\": \"prettier --write src tests\",\n \"format:check\": \"prettier --check src tests\",\n \"clean\": \"\",\n \"clean:traces\": \"node scripts/clean-traces.js\",\n \"prebuild\": \"npm run clean && node scripts/generate-config-schema.js\",\n \"pretest\": \"npm run clean:traces && node scripts/generate-config-schema.js && npm run build:cli\",\n \"pretest:unit\": \"npm run clean:traces && node scripts/generate-config-schema.js && npm run build:cli\",\n \"test:with-build\": \"npm run build:cli && jest\",\n \"test:yaml\": \"node dist/index.js test --progress compact\",\n \"test:yaml:parallel\": \"node dist/index.js test --progress compact --max-parallel 4\",\n \"prepare\": \"husky\",\n \"pre-commit\": \"lint-staged\",\n \"deploy:site\": \"cd site && npx wrangler pages deploy . --project-name=visor-site --commit-dirty=true\",\n \"deploy:worker\": \"npx wrangler deploy\",\n \"deploy\": \"npm run deploy:site && npm run deploy:worker\",\n \"publish:ee\": \"./scripts/publish-ee.sh\",\n \"release\": \"./scripts/release.sh\",\n \"release:patch\": \"./scripts/release.sh patch\",\n \"release:minor\": \"./scripts/release.sh minor\",\n \"release:major\": \"./scripts/release.sh major\",\n \"release:prerelease\": \"./scripts/release.sh prerelease\",\n \"docs:validate\": \"node scripts/validate-readme-links.js\",\n \"workshop:setup\": \"npm install -D reveal-md@6.1.2\",\n \"workshop:serve\": \"cd workshop && reveal-md slides.md -w\",\n \"workshop:export\": \"reveal-md workshop/slides.md --static workshop/build\",\n \"workshop:pdf\": \"reveal-md workshop/slides.md --print workshop/Visor-Workshop.pdf --print-size letter\",\n \"workshop:pdf:ci\": \"reveal-md workshop/slides.md --print workshop/Visor-Workshop.pdf --print-size letter --puppeteer-launch-args=\\\"--no-sandbox --disable-dev-shm-usage\\\"\",\n \"workshop:pdf:a4\": \"reveal-md workshop/slides.md --print workshop/Visor-Workshop-A4.pdf --print-size A4\",\n \"workshop:build\": \"npm run workshop:export && npm run workshop:pdf\",\n \"simulate:issue\": \"TS_NODE_TRANSPILE_ONLY=1 ts-node scripts/simulate-gh-run.ts --event issues --action opened --debug\",\n \"simulate:comment\": \"TS_NODE_TRANSPILE_ONLY=1 ts-node scripts/simulate-gh-run.ts --event issue_comment --action created --debug\"\n },\n \"keywords\": [\n \"code-review\",\n \"ai\",\n \"github-action\",\n \"cli\",\n \"pr-review\",\n \"visor\"\n ],\n \"author\": \"Probe Labs\",\n \"license\": \"MIT\",\n \"description\": \"AI workflow engine for code review, assistants, and automation — orchestrate checks, MCP tools, and AI providers with YAML-driven pipelines\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/probelabs/visor.git\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/probelabs/visor/issues\"\n },\n \"homepage\": \"https://github.com/probelabs/visor#readme\",\n \"dependencies\": {\n \"@actions/core\": \"^1.11.1\",\n \"@apidevtools/swagger-parser\": \"^12.1.0\",\n \"@grammyjs/runner\": \"^2.0.3\",\n \"@modelcontextprotocol/sdk\": \"^1.25.3\",\n \"@nyariv/sandboxjs\": \"github:probelabs/SandboxJS#23c4bb611f7d05f3cb8c523917b5f57103e48108\",\n \"@octokit/action\": \"^8.0.2\",\n \"@octokit/auth-app\": \"^8.1.0\",\n \"@octokit/core\": \"^7.0.3\",\n \"@octokit/rest\": \"^22.0.0\",\n \"@opentelemetry/api\": \"^1.9.0\",\n \"@opentelemetry/api-logs\": \"^0.203.0\",\n \"@opentelemetry/core\": \"^1.30.1\",\n \"@opentelemetry/exporter-logs-otlp-http\": \"^0.203.0\",\n \"@opentelemetry/exporter-metrics-otlp-http\": \"^0.203.0\",\n \"@opentelemetry/exporter-trace-otlp-grpc\": \"^0.203.0\",\n \"@opentelemetry/exporter-trace-otlp-http\": \"^0.203.0\",\n \"@opentelemetry/instrumentation\": \"^0.203.0\",\n \"@opentelemetry/resources\": \"^1.30.1\",\n \"@opentelemetry/sdk-logs\": \"^0.203.0\",\n \"@opentelemetry/sdk-metrics\": \"^1.30.1\",\n \"@opentelemetry/sdk-node\": \"^0.203.0\",\n \"@opentelemetry/sdk-trace-base\": \"^1.30.1\",\n \"@opentelemetry/semantic-conventions\": \"^1.30.1\",\n \"@probelabs/probe\": \"^0.6.0-rc290\",\n \"@types/commander\": \"^2.12.0\",\n \"@types/uuid\": \"^10.0.0\",\n \"acorn\": \"^8.16.0\",\n \"acorn-walk\": \"^8.3.5\",\n \"ajv\": \"^8.17.1\",\n \"ajv-formats\": \"^3.0.1\",\n \"better-sqlite3\": \"^11.0.0\",\n \"blessed\": \"^0.1.81\",\n \"botbuilder\": \"^4.23.3\",\n \"botframework-connector\": \"^4.23.3\",\n \"cli-table3\": \"^0.6.5\",\n \"commander\": \"^14.0.0\",\n \"deepmerge\": \"^4.3.1\",\n \"dotenv\": \"^17.2.3\",\n \"grammy\": \"^1.41.1\",\n \"ignore\": \"^7.0.5\",\n \"imapflow\": \"^1.2.12\",\n \"js-yaml\": \"^4.1.0\",\n \"jsonpath-plus\": \"^10.4.0\",\n \"liquidjs\": \"^10.21.1\",\n \"mailparser\": \"^3.9.3\",\n \"minimatch\": \"^10.2.2\",\n \"node-cron\": \"^3.0.3\",\n \"nodemailer\": \"^8.0.1\",\n \"open\": \"^9.1.0\",\n \"resend\": \"^6.9.3\",\n \"simple-git\": \"^3.28.0\",\n \"uuid\": \"^11.1.0\",\n \"ws\": \"^8.18.3\"\n },\n \"optionalDependencies\": {\n \"@anthropic/claude-code-sdk\": \"npm:null@*\",\n \"@open-policy-agent/opa-wasm\": \"^1.10.0\",\n \"knex\": \"^3.1.0\",\n \"mysql2\": \"^3.11.0\",\n \"pg\": \"^8.13.0\",\n \"tedious\": \"^19.0.0\"\n },\n \"devDependencies\": {\n \"@eslint/js\": \"^9.34.0\",\n \"@kie/act-js\": \"^2.6.2\",\n \"@kie/mock-github\": \"^2.0.1\",\n \"@swc/core\": \"^1.13.2\",\n \"@swc/jest\": \"^0.2.37\",\n \"@types/better-sqlite3\": \"^7.6.0\",\n \"@types/blessed\": \"^0.1.27\",\n \"@types/jest\": \"^30.0.0\",\n \"@types/js-yaml\": \"^4.0.9\",\n \"@types/mailparser\": \"^3.4.6\",\n \"@types/node\": \"^24.3.0\",\n \"@types/node-cron\": \"^3.0.11\",\n \"@types/nodemailer\": \"^7.0.11\",\n \"@types/ws\": \"^8.18.1\",\n \"@typescript-eslint/eslint-plugin\": \"^8.42.0\",\n \"@typescript-eslint/parser\": \"^8.42.0\",\n \"@vercel/ncc\": \"^0.38.4\",\n \"eslint\": \"^9.34.0\",\n \"eslint-config-prettier\": \"^10.1.8\",\n \"eslint-plugin-prettier\": \"^5.5.4\",\n \"husky\": \"^9.1.7\",\n \"jest\": \"^30.1.3\",\n \"lint-staged\": \"^16.1.6\",\n \"prettier\": \"^3.6.2\",\n \"reveal-md\": \"^6.1.2\",\n \"ts-json-schema-generator\": \"^1.5.1\",\n \"ts-node\": \"^10.9.2\",\n \"tsup\": \"^8.5.0\",\n \"typescript\": \"^5.9.2\",\n \"wrangler\": \"^3.0.0\"\n },\n \"peerDependenciesMeta\": {\n \"@anthropic/claude-code-sdk\": {\n \"optional\": true\n }\n },\n \"directories\": {\n \"test\": \"tests\"\n },\n \"lint-staged\": {\n \"src/**/*.{ts,js}\": [\n \"eslint --fix\",\n \"prettier --write\"\n ],\n \"tests/**/*.{ts,js}\": [\n \"eslint --fix\",\n \"prettier --write\"\n ],\n \"*.{json,md,yml,yaml}\": [\n \"prettier --write\"\n ]\n }\n}\n","import { context as otContext, Span, SpanStatusCode, trace, Attributes } from './lazy-otel';\nimport { getInstanceId } from '../utils/instance-id';\n\nexport function getTracer() {\n return trace.getTracer('visor');\n}\n\nexport async function withActiveSpan<T>(\n name: string,\n attrs: Record<string, unknown> | undefined,\n fn: (span: Span) => Promise<T>\n): Promise<T> {\n const tracer = getTracer();\n // Preserve parent context via tracer API; avoid logging parent IDs to stdout\n // Avoid noisy stdout logs that break JSON consumers\n return await new Promise<T>((resolve, reject) => {\n const callback = async (span: Span) => {\n // console.debug(`[trace] Span callback invoked for: [trace_id=${ctx.traceId} span_id=${ctx.spanId}] ${name} span: true`);\n try {\n const res = await fn(span);\n // console.debug('[trace] Span execution completed for:', name);\n resolve(res);\n } catch (err) {\n // console.debug('[trace] Span execution errored for:', name, err);\n try {\n if (err instanceof Error) span.recordException(err);\n span.setStatus({ code: SpanStatusCode.ERROR });\n } catch {}\n reject(err);\n } finally {\n try {\n // console.debug('[trace] Ending span:', name);\n span.end();\n } catch {}\n }\n };\n // startActiveSpan should use the current active context to set parent automatically\n const options = attrs ? { attributes: attrs as Attributes } : {};\n tracer.startActiveSpan(name, options, callback);\n });\n}\n\nexport function addEvent(name: string, attrs?: Record<string, unknown>): void {\n const span = trace.getSpan(otContext.active());\n if (span) {\n try {\n span.addEvent(name, attrs as Attributes);\n } catch {\n // ignore\n }\n }\n // Fallback NDJSON emission for serverless/file sink when SDK may be inactive\n try {\n const { emitNdjsonSpanWithEvents } = require('./fallback-ndjson');\n emitNdjsonSpanWithEvents('visor.event', {}, [{ name, attrs }]);\n if (name === 'fail_if.triggered') {\n emitNdjsonSpanWithEvents('visor.event', {}, [\n { name: 'fail_if.evaluated', attrs },\n { name: 'fail_if.triggered', attrs },\n ]);\n }\n } catch {}\n}\n\nexport function setSpanAttributes(attrs: Record<string, unknown>): void {\n const span = trace.getSpan(otContext.active());\n if (!span) return;\n try {\n for (const [k, v] of Object.entries(attrs)) span.setAttribute(k, v as never);\n } catch {\n // ignore\n }\n}\n\nexport function setSpanError(err: unknown): void {\n const span = trace.getSpan(otContext.active());\n if (!span) return;\n try {\n if (err instanceof Error) span.recordException(err);\n span.setStatus({ code: SpanStatusCode.ERROR });\n } catch {\n // ignore\n }\n}\n\n/**\n * Return standard visor.* resource attributes for the root `visor.run` span.\n * Reads version from package.json / env and git commit short SHA from env.\n */\nexport function getVisorRunAttributes(): Record<string, string> {\n const attrs: Record<string, string> = {};\n try {\n attrs['visor.version'] =\n process.env.VISOR_VERSION || (require('../../package.json')?.version ?? 'dev');\n } catch {\n attrs['visor.version'] = 'dev';\n }\n const commitShort = process.env.VISOR_COMMIT_SHORT || '';\n const commitFull = process.env.VISOR_COMMIT_SHA || process.env.VISOR_COMMIT || '';\n if (commitShort) {\n attrs['visor.commit'] = commitShort;\n }\n if (commitFull) {\n attrs['visor.commit.sha'] = commitFull;\n }\n attrs['visor.instance_id'] = getInstanceId();\n return attrs;\n}\n\n/**\n * Wraps a visor.run span with automatic run metrics (counter + duration histogram).\n * Use this instead of raw `withActiveSpan('visor.run', ...)` to get metrics for free.\n */\nexport async function withVisorRun<T>(\n attrs: Record<string, unknown>,\n runMeta: {\n source?: string;\n userId?: string;\n userName?: string;\n workflowId?: string;\n },\n fn: (span: Span) => Promise<T>\n): Promise<T> {\n const {\n recordRunStart,\n recordRunDuration,\n resetRunAiCalls,\n recordRunAiCalls,\n getRunAiCalls,\n } = require('./metrics');\n const instanceId = getInstanceId();\n recordRunStart({\n source: runMeta.source,\n userId: runMeta.userId,\n userName: runMeta.userName,\n workflowId: runMeta.workflowId,\n instanceId,\n });\n resetRunAiCalls();\n const startMs = Date.now();\n let success = true;\n try {\n return await withActiveSpan('visor.run', attrs, async span => {\n try {\n return await fn(span);\n } finally {\n // Record AI call count as span attribute for trace visibility\n try {\n span.setAttribute('visor.run.ai_calls', getRunAiCalls());\n span.setAttribute('visor.run.duration_ms', Date.now() - startMs);\n } catch {}\n }\n });\n } catch (err) {\n success = false;\n throw err;\n } finally {\n recordRunAiCalls({\n source: runMeta.source,\n workflowId: runMeta.workflowId,\n });\n recordRunDuration(Date.now() - startMs, {\n source: runMeta.source,\n userId: runMeta.userId,\n workflowId: runMeta.workflowId,\n success,\n });\n }\n}\n\n// Internal helper for tests: write a minimal run marker to NDJSON when using file sink\nlet __ndjsonPath: string | null = null;\nexport function __getOrCreateNdjsonPath(): string | null {\n try {\n // If sink is explicitly set to non-file, skip. If unset, still allow when a trace dir/file is configured.\n if (process.env.VISOR_TELEMETRY_SINK && process.env.VISOR_TELEMETRY_SINK !== 'file')\n return null;\n const path = require('path');\n const fs = require('fs');\n // Prefer explicit fallback file path if set by the CLI\n if (process.env.VISOR_FALLBACK_TRACE_FILE) {\n __ndjsonPath = process.env.VISOR_FALLBACK_TRACE_FILE;\n const dir = path.dirname(__ndjsonPath);\n if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });\n return __ndjsonPath;\n }\n const outDir = process.env.VISOR_TRACE_DIR || path.join(process.cwd(), 'output', 'traces');\n if (!fs.existsSync(outDir)) fs.mkdirSync(outDir, { recursive: true });\n if (!__ndjsonPath) {\n const ts = new Date().toISOString().replace(/[:.]/g, '-');\n __ndjsonPath = path.join(outDir, `${ts}.ndjson`);\n }\n return __ndjsonPath;\n } catch {\n return null;\n }\n}\nexport function _appendRunMarker(): void {\n try {\n const fs = require('fs');\n const p = __getOrCreateNdjsonPath();\n if (!p) return;\n const line = { name: 'visor.run', attributes: { started: true } };\n fs.appendFileSync(p, JSON.stringify(line) + '\\n', 'utf8');\n } catch {}\n}\n"],"mappings":"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","names":["emitNdjsonSpanWithEvents","path","fs"]}
1
+ {"version":3,"sources":["../../src/telemetry/fallback-ndjson.ts","../../package.json","../../src/telemetry/trace-helpers.ts"],"sourcesContent":["import * as fs from 'fs';\nimport * as path from 'path';\n\nlet CURRENT_FILE: string | null = null;\nlet dirReady = false;\nlet writeChain: Promise<void> = Promise.resolve();\nfunction resolveTargetPath(outDir: string): string {\n if (process.env.VISOR_FALLBACK_TRACE_FILE) {\n CURRENT_FILE = process.env.VISOR_FALLBACK_TRACE_FILE;\n return CURRENT_FILE;\n }\n if (CURRENT_FILE) return CURRENT_FILE;\n const ts = new Date().toISOString().replace(/[:.]/g, '-');\n CURRENT_FILE = path.join(outDir, `${ts}.ndjson`);\n return CURRENT_FILE;\n}\n\nfunction isEnabled(): boolean {\n // Enable when CLI set a fallback file (serverless mode), or when explicit file sink is enabled\n if (process.env.VISOR_FALLBACK_TRACE_FILE) return true;\n return (\n process.env.VISOR_TELEMETRY_ENABLED === 'true' &&\n (process.env.VISOR_TELEMETRY_SINK || 'file') === 'file'\n );\n}\n\nfunction appendAsync(outDir: string, line: string): void {\n writeChain = writeChain\n .then(async () => {\n if (!dirReady) {\n try {\n await fs.promises.mkdir(outDir, { recursive: true });\n } catch {}\n dirReady = true;\n }\n const target = resolveTargetPath(outDir);\n await fs.promises.appendFile(target, line, 'utf8');\n })\n .catch(() => {});\n}\n\nexport async function flushNdjson(): Promise<void> {\n try {\n await writeChain;\n } catch {}\n}\n\nexport function emitNdjsonFallback(name: string, attrs: Record<string, unknown>): void {\n try {\n if (!isEnabled()) return;\n const outDir = process.env.VISOR_TRACE_DIR || path.join(process.cwd(), 'output', 'traces');\n const line = JSON.stringify({ name, attributes: attrs }) + '\\n';\n appendAsync(outDir, line);\n } catch {\n // ignore\n }\n}\n\nexport function emitNdjsonSpanWithEvents(\n name: string,\n attrs: Record<string, unknown>,\n events: Array<{ name: string; attrs?: Record<string, unknown> }>\n): void {\n try {\n if (!isEnabled()) return;\n const outDir = process.env.VISOR_TRACE_DIR || path.join(process.cwd(), 'output', 'traces');\n const line = JSON.stringify({ name, attributes: attrs, events }) + '\\n';\n appendAsync(outDir, line);\n } catch {\n // ignore\n }\n}\n","{\n \"name\": \"@probelabs/visor\",\n \"version\": \"0.1.42\",\n \"main\": \"dist/index.js\",\n \"bin\": {\n \"visor\": \"./dist/index.js\"\n },\n \"exports\": {\n \".\": {\n \"require\": \"./dist/index.js\",\n \"import\": \"./dist/index.js\"\n },\n \"./sdk\": {\n \"types\": \"./dist/sdk/sdk.d.ts\",\n \"import\": \"./dist/sdk/sdk.mjs\",\n \"require\": \"./dist/sdk/sdk.js\"\n },\n \"./cli\": {\n \"require\": \"./dist/index.js\"\n }\n },\n \"files\": [\n \"dist/\",\n \"defaults/\",\n \"action.yml\",\n \"README.md\",\n \"LICENSE\"\n ],\n \"publishConfig\": {\n \"access\": \"public\",\n \"registry\": \"https://registry.npmjs.org/\"\n },\n \"scripts\": {\n \"build:cli\": \"ncc build src/index.ts -o dist && cp -r defaults dist/ && cp -r output dist/ && cp -r docs dist/ && cp -r examples dist/ && cp -r src/debug-visualizer/ui dist/debug-visualizer/ && node scripts/inject-version.js && echo '#!/usr/bin/env node' | cat - dist/index.js > temp && mv temp dist/index.js && chmod +x dist/index.js\",\n \"build:sdk\": \"tsup src/sdk.ts --dts --sourcemap --format esm,cjs --out-dir dist/sdk\",\n \"build\": \"./scripts/build-oss.sh\",\n \"build:ee\": \"npm run build:cli && npm run build:sdk\",\n \"test\": \"jest && npm run test:yaml\",\n \"test:unit\": \"jest\",\n \"prepublishOnly\": \"npm run build\",\n \"test:watch\": \"jest --watch\",\n \"test:coverage\": \"jest --coverage\",\n \"test:ee\": \"jest --testPathPatterns='tests/ee' --testPathIgnorePatterns='/node_modules/' --no-coverage\",\n \"test:manual:bash\": \"RUN_MANUAL_TESTS=true jest tests/manual/bash-config-manual.test.ts\",\n \"lint\": \"eslint src tests --ext .ts\",\n \"lint:fix\": \"eslint src tests --ext .ts --fix\",\n \"format\": \"prettier --write src tests\",\n \"format:check\": \"prettier --check src tests\",\n \"clean\": \"\",\n \"clean:traces\": \"node scripts/clean-traces.js\",\n \"prebuild\": \"npm run clean && node scripts/generate-config-schema.js\",\n \"pretest\": \"npm run clean:traces && node scripts/generate-config-schema.js && npm run build:cli\",\n \"pretest:unit\": \"npm run clean:traces && node scripts/generate-config-schema.js && npm run build:cli\",\n \"test:with-build\": \"npm run build:cli && jest\",\n \"test:yaml\": \"node dist/index.js test --progress compact\",\n \"test:yaml:parallel\": \"node dist/index.js test --progress compact --max-parallel 4\",\n \"prepare\": \"husky\",\n \"pre-commit\": \"lint-staged\",\n \"deploy:site\": \"cd site && npx wrangler pages deploy . --project-name=visor-site --commit-dirty=true\",\n \"deploy:worker\": \"npx wrangler deploy\",\n \"deploy\": \"npm run deploy:site && npm run deploy:worker\",\n \"publish:ee\": \"./scripts/publish-ee.sh\",\n \"release\": \"./scripts/release.sh\",\n \"release:patch\": \"./scripts/release.sh patch\",\n \"release:minor\": \"./scripts/release.sh minor\",\n \"release:major\": \"./scripts/release.sh major\",\n \"release:prerelease\": \"./scripts/release.sh prerelease\",\n \"docs:validate\": \"node scripts/validate-readme-links.js\",\n \"workshop:setup\": \"npm install -D reveal-md@6.1.2\",\n \"workshop:serve\": \"cd workshop && reveal-md slides.md -w\",\n \"workshop:export\": \"reveal-md workshop/slides.md --static workshop/build\",\n \"workshop:pdf\": \"reveal-md workshop/slides.md --print workshop/Visor-Workshop.pdf --print-size letter\",\n \"workshop:pdf:ci\": \"reveal-md workshop/slides.md --print workshop/Visor-Workshop.pdf --print-size letter --puppeteer-launch-args=\\\"--no-sandbox --disable-dev-shm-usage\\\"\",\n \"workshop:pdf:a4\": \"reveal-md workshop/slides.md --print workshop/Visor-Workshop-A4.pdf --print-size A4\",\n \"workshop:build\": \"npm run workshop:export && npm run workshop:pdf\",\n \"simulate:issue\": \"TS_NODE_TRANSPILE_ONLY=1 ts-node scripts/simulate-gh-run.ts --event issues --action opened --debug\",\n \"simulate:comment\": \"TS_NODE_TRANSPILE_ONLY=1 ts-node scripts/simulate-gh-run.ts --event issue_comment --action created --debug\"\n },\n \"keywords\": [\n \"code-review\",\n \"ai\",\n \"github-action\",\n \"cli\",\n \"pr-review\",\n \"visor\"\n ],\n \"author\": \"Probe Labs\",\n \"license\": \"MIT\",\n \"description\": \"AI workflow engine for code review, assistants, and automation — orchestrate checks, MCP tools, and AI providers with YAML-driven pipelines\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/probelabs/visor.git\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/probelabs/visor/issues\"\n },\n \"homepage\": \"https://github.com/probelabs/visor#readme\",\n \"dependencies\": {\n \"@actions/core\": \"^1.11.1\",\n \"@apidevtools/swagger-parser\": \"^12.1.0\",\n \"@grammyjs/runner\": \"^2.0.3\",\n \"@modelcontextprotocol/sdk\": \"^1.25.3\",\n \"@nyariv/sandboxjs\": \"github:probelabs/SandboxJS#23c4bb611f7d05f3cb8c523917b5f57103e48108\",\n \"@octokit/action\": \"^8.0.2\",\n \"@octokit/auth-app\": \"^8.1.0\",\n \"@octokit/core\": \"^7.0.3\",\n \"@octokit/rest\": \"^22.0.0\",\n \"@opentelemetry/api\": \"^1.9.0\",\n \"@opentelemetry/api-logs\": \"^0.203.0\",\n \"@opentelemetry/core\": \"^1.30.1\",\n \"@opentelemetry/exporter-logs-otlp-http\": \"^0.203.0\",\n \"@opentelemetry/exporter-metrics-otlp-http\": \"^0.203.0\",\n \"@opentelemetry/exporter-trace-otlp-grpc\": \"^0.203.0\",\n \"@opentelemetry/exporter-trace-otlp-http\": \"^0.203.0\",\n \"@opentelemetry/instrumentation\": \"^0.203.0\",\n \"@opentelemetry/resources\": \"^1.30.1\",\n \"@opentelemetry/sdk-logs\": \"^0.203.0\",\n \"@opentelemetry/sdk-metrics\": \"^1.30.1\",\n \"@opentelemetry/sdk-node\": \"^0.203.0\",\n \"@opentelemetry/sdk-trace-base\": \"^1.30.1\",\n \"@opentelemetry/semantic-conventions\": \"^1.30.1\",\n \"@probelabs/probe\": \"^0.6.0-rc291\",\n \"@types/commander\": \"^2.12.0\",\n \"@types/uuid\": \"^10.0.0\",\n \"acorn\": \"^8.16.0\",\n \"acorn-walk\": \"^8.3.5\",\n \"ajv\": \"^8.17.1\",\n \"ajv-formats\": \"^3.0.1\",\n \"better-sqlite3\": \"^11.0.0\",\n \"blessed\": \"^0.1.81\",\n \"botbuilder\": \"^4.23.3\",\n \"botframework-connector\": \"^4.23.3\",\n \"cli-table3\": \"^0.6.5\",\n \"commander\": \"^14.0.0\",\n \"deepmerge\": \"^4.3.1\",\n \"dotenv\": \"^17.2.3\",\n \"grammy\": \"^1.41.1\",\n \"ignore\": \"^7.0.5\",\n \"imapflow\": \"^1.2.12\",\n \"js-yaml\": \"^4.1.0\",\n \"jsonpath-plus\": \"^10.4.0\",\n \"liquidjs\": \"^10.21.1\",\n \"mailparser\": \"^3.9.3\",\n \"minimatch\": \"^10.2.2\",\n \"node-cron\": \"^3.0.3\",\n \"nodemailer\": \"^8.0.1\",\n \"open\": \"^9.1.0\",\n \"resend\": \"^6.9.3\",\n \"simple-git\": \"^3.28.0\",\n \"uuid\": \"^11.1.0\",\n \"ws\": \"^8.18.3\"\n },\n \"optionalDependencies\": {\n \"@anthropic/claude-code-sdk\": \"npm:null@*\",\n \"@open-policy-agent/opa-wasm\": \"^1.10.0\",\n \"knex\": \"^3.1.0\",\n \"mysql2\": \"^3.11.0\",\n \"pg\": \"^8.13.0\",\n \"tedious\": \"^19.0.0\"\n },\n \"devDependencies\": {\n \"@eslint/js\": \"^9.34.0\",\n \"@kie/act-js\": \"^2.6.2\",\n \"@kie/mock-github\": \"^2.0.1\",\n \"@swc/core\": \"^1.13.2\",\n \"@swc/jest\": \"^0.2.37\",\n \"@types/better-sqlite3\": \"^7.6.0\",\n \"@types/blessed\": \"^0.1.27\",\n \"@types/jest\": \"^30.0.0\",\n \"@types/js-yaml\": \"^4.0.9\",\n \"@types/mailparser\": \"^3.4.6\",\n \"@types/node\": \"^24.3.0\",\n \"@types/node-cron\": \"^3.0.11\",\n \"@types/nodemailer\": \"^7.0.11\",\n \"@types/ws\": \"^8.18.1\",\n \"@typescript-eslint/eslint-plugin\": \"^8.42.0\",\n \"@typescript-eslint/parser\": \"^8.42.0\",\n \"@vercel/ncc\": \"^0.38.4\",\n \"eslint\": \"^9.34.0\",\n \"eslint-config-prettier\": \"^10.1.8\",\n \"eslint-plugin-prettier\": \"^5.5.4\",\n \"husky\": \"^9.1.7\",\n \"jest\": \"^30.1.3\",\n \"lint-staged\": \"^16.1.6\",\n \"prettier\": \"^3.6.2\",\n \"reveal-md\": \"^6.1.2\",\n \"ts-json-schema-generator\": \"^1.5.1\",\n \"ts-node\": \"^10.9.2\",\n \"tsup\": \"^8.5.0\",\n \"typescript\": \"^5.9.2\",\n \"wrangler\": \"^3.0.0\"\n },\n \"peerDependenciesMeta\": {\n \"@anthropic/claude-code-sdk\": {\n \"optional\": true\n }\n },\n \"directories\": {\n \"test\": \"tests\"\n },\n \"lint-staged\": {\n \"src/**/*.{ts,js}\": [\n \"eslint --fix\",\n \"prettier --write\"\n ],\n \"tests/**/*.{ts,js}\": [\n \"eslint --fix\",\n \"prettier --write\"\n ],\n \"*.{json,md,yml,yaml}\": [\n \"prettier --write\"\n ]\n }\n}\n","import { context as otContext, Span, SpanStatusCode, trace, Attributes } from './lazy-otel';\nimport { getInstanceId } from '../utils/instance-id';\n\nexport function getTracer() {\n return trace.getTracer('visor');\n}\n\nexport async function withActiveSpan<T>(\n name: string,\n attrs: Record<string, unknown> | undefined,\n fn: (span: Span) => Promise<T>\n): Promise<T> {\n const tracer = getTracer();\n // Preserve parent context via tracer API; avoid logging parent IDs to stdout\n // Avoid noisy stdout logs that break JSON consumers\n return await new Promise<T>((resolve, reject) => {\n const callback = async (span: Span) => {\n // console.debug(`[trace] Span callback invoked for: [trace_id=${ctx.traceId} span_id=${ctx.spanId}] ${name} span: true`);\n try {\n const res = await fn(span);\n // console.debug('[trace] Span execution completed for:', name);\n resolve(res);\n } catch (err) {\n // console.debug('[trace] Span execution errored for:', name, err);\n try {\n if (err instanceof Error) span.recordException(err);\n span.setStatus({ code: SpanStatusCode.ERROR });\n } catch {}\n reject(err);\n } finally {\n try {\n // console.debug('[trace] Ending span:', name);\n span.end();\n } catch {}\n }\n };\n // startActiveSpan should use the current active context to set parent automatically\n const options = attrs ? { attributes: attrs as Attributes } : {};\n tracer.startActiveSpan(name, options, callback);\n });\n}\n\nexport function addEvent(name: string, attrs?: Record<string, unknown>): void {\n const span = trace.getSpan(otContext.active());\n if (span) {\n try {\n span.addEvent(name, attrs as Attributes);\n } catch {\n // ignore\n }\n }\n // Fallback NDJSON emission for serverless/file sink when SDK may be inactive\n try {\n const { emitNdjsonSpanWithEvents } = require('./fallback-ndjson');\n emitNdjsonSpanWithEvents('visor.event', {}, [{ name, attrs }]);\n if (name === 'fail_if.triggered') {\n emitNdjsonSpanWithEvents('visor.event', {}, [\n { name: 'fail_if.evaluated', attrs },\n { name: 'fail_if.triggered', attrs },\n ]);\n }\n } catch {}\n}\n\nexport function setSpanAttributes(attrs: Record<string, unknown>): void {\n const span = trace.getSpan(otContext.active());\n if (!span) return;\n try {\n for (const [k, v] of Object.entries(attrs)) span.setAttribute(k, v as never);\n } catch {\n // ignore\n }\n}\n\nexport function setSpanError(err: unknown): void {\n const span = trace.getSpan(otContext.active());\n if (!span) return;\n try {\n if (err instanceof Error) span.recordException(err);\n span.setStatus({ code: SpanStatusCode.ERROR });\n } catch {\n // ignore\n }\n}\n\n/**\n * Return standard visor.* resource attributes for the root `visor.run` span.\n * Reads version from package.json / env and git commit short SHA from env.\n */\nexport function getVisorRunAttributes(): Record<string, string> {\n const attrs: Record<string, string> = {};\n try {\n attrs['visor.version'] =\n process.env.VISOR_VERSION || (require('../../package.json')?.version ?? 'dev');\n } catch {\n attrs['visor.version'] = 'dev';\n }\n const commitShort = process.env.VISOR_COMMIT_SHORT || '';\n const commitFull = process.env.VISOR_COMMIT_SHA || process.env.VISOR_COMMIT || '';\n if (commitShort) {\n attrs['visor.commit'] = commitShort;\n }\n if (commitFull) {\n attrs['visor.commit.sha'] = commitFull;\n }\n attrs['visor.instance_id'] = getInstanceId();\n return attrs;\n}\n\n/**\n * Wraps a visor.run span with automatic run metrics (counter + duration histogram).\n * Use this instead of raw `withActiveSpan('visor.run', ...)` to get metrics for free.\n */\nexport async function withVisorRun<T>(\n attrs: Record<string, unknown>,\n runMeta: {\n source?: string;\n userId?: string;\n userName?: string;\n workflowId?: string;\n },\n fn: (span: Span) => Promise<T>\n): Promise<T> {\n const {\n recordRunStart,\n recordRunDuration,\n resetRunAiCalls,\n recordRunAiCalls,\n getRunAiCalls,\n } = require('./metrics');\n const instanceId = getInstanceId();\n recordRunStart({\n source: runMeta.source,\n userId: runMeta.userId,\n userName: runMeta.userName,\n workflowId: runMeta.workflowId,\n instanceId,\n });\n resetRunAiCalls();\n const startMs = Date.now();\n let success = true;\n try {\n return await withActiveSpan('visor.run', attrs, async span => {\n try {\n return await fn(span);\n } finally {\n // Record AI call count as span attribute for trace visibility\n try {\n span.setAttribute('visor.run.ai_calls', getRunAiCalls());\n span.setAttribute('visor.run.duration_ms', Date.now() - startMs);\n } catch {}\n }\n });\n } catch (err) {\n success = false;\n throw err;\n } finally {\n recordRunAiCalls({\n source: runMeta.source,\n workflowId: runMeta.workflowId,\n });\n recordRunDuration(Date.now() - startMs, {\n source: runMeta.source,\n userId: runMeta.userId,\n workflowId: runMeta.workflowId,\n success,\n });\n }\n}\n\n// Internal helper for tests: write a minimal run marker to NDJSON when using file sink\nlet __ndjsonPath: string | null = null;\nexport function __getOrCreateNdjsonPath(): string | null {\n try {\n // If sink is explicitly set to non-file, skip. If unset, still allow when a trace dir/file is configured.\n if (process.env.VISOR_TELEMETRY_SINK && process.env.VISOR_TELEMETRY_SINK !== 'file')\n return null;\n const path = require('path');\n const fs = require('fs');\n // Prefer explicit fallback file path if set by the CLI\n if (process.env.VISOR_FALLBACK_TRACE_FILE) {\n __ndjsonPath = process.env.VISOR_FALLBACK_TRACE_FILE;\n const dir = path.dirname(__ndjsonPath);\n if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });\n return __ndjsonPath;\n }\n const outDir = process.env.VISOR_TRACE_DIR || path.join(process.cwd(), 'output', 'traces');\n if (!fs.existsSync(outDir)) fs.mkdirSync(outDir, { recursive: true });\n if (!__ndjsonPath) {\n const ts = new Date().toISOString().replace(/[:.]/g, '-');\n __ndjsonPath = path.join(outDir, `${ts}.ndjson`);\n }\n return __ndjsonPath;\n } catch {\n return null;\n }\n}\nexport function _appendRunMarker(): void {\n try {\n const fs = require('fs');\n const p = __getOrCreateNdjsonPath();\n if (!p) return;\n const line = { name: 'visor.run', attributes: { started: true } };\n fs.appendFileSync(p, JSON.stringify(line) + '\\n', 'utf8');\n } catch {}\n}\n"],"mappings":"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","names":["emitNdjsonSpanWithEvents","path","fs"]}
@@ -3,11 +3,11 @@ import {
3
3
  fallback_ndjson_exports,
4
4
  init_fallback_ndjson,
5
5
  init_trace_helpers
6
- } from "./chunk-LTHHE6Z5.mjs";
6
+ } from "./chunk-65SHRIQF.mjs";
7
7
  import {
8
8
  addFailIfTriggered,
9
9
  init_metrics
10
- } from "./chunk-4TV2CVVI.mjs";
10
+ } from "./chunk-34QX63WK.mjs";
11
11
  import {
12
12
  createPermissionHelpers,
13
13
  detectLocalMode,
@@ -736,4 +736,4 @@ export {
736
736
  failure_condition_evaluator_exports,
737
737
  init_failure_condition_evaluator
738
738
  };
739
- //# sourceMappingURL=chunk-VVHALCWV.mjs.map
739
+ //# sourceMappingURL=chunk-EFNNJIMY.mjs.map