@probelabs/visor 0.1.181 → 0.1.182-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 (144) hide show
  1. package/defaults/code-talk.yaml +80 -14
  2. package/defaults/engineer.yaml +33 -15
  3. package/defaults/skills/code-explorer.yaml +5 -0
  4. package/dist/agent-protocol/a2a-frontend.d.ts +10 -0
  5. package/dist/agent-protocol/a2a-frontend.d.ts.map +1 -1
  6. package/dist/agent-protocol/task-evaluator.d.ts +52 -0
  7. package/dist/agent-protocol/task-evaluator.d.ts.map +1 -0
  8. package/dist/agent-protocol/task-store.d.ts +5 -3
  9. package/dist/agent-protocol/task-store.d.ts.map +1 -1
  10. package/dist/agent-protocol/tasks-cli-handler.d.ts.map +1 -1
  11. package/dist/agent-protocol/tasks-tui.d.ts +34 -0
  12. package/dist/agent-protocol/tasks-tui.d.ts.map +1 -0
  13. package/dist/agent-protocol/trace-serializer.d.ts +90 -0
  14. package/dist/agent-protocol/trace-serializer.d.ts.map +1 -0
  15. package/dist/agent-protocol/track-execution.d.ts +2 -0
  16. package/dist/agent-protocol/track-execution.d.ts.map +1 -1
  17. package/dist/cli-main.d.ts.map +1 -1
  18. package/dist/defaults/code-talk.yaml +80 -14
  19. package/dist/defaults/engineer.yaml +33 -15
  20. package/dist/defaults/skills/code-explorer.yaml +5 -0
  21. package/dist/docs/commands.md +57 -14
  22. package/dist/docs/configuration.md +2 -0
  23. package/dist/docs/guides/graceful-restart.md +178 -0
  24. package/dist/docs/observability.md +69 -0
  25. package/dist/docs/production-deployment.md +17 -0
  26. package/dist/email/polling-runner.d.ts +4 -0
  27. package/dist/email/polling-runner.d.ts.map +1 -1
  28. package/dist/generated/config-schema.d.ts +70 -6
  29. package/dist/generated/config-schema.d.ts.map +1 -1
  30. package/dist/generated/config-schema.json +36 -6
  31. package/dist/index.js +7420 -1483
  32. package/dist/providers/mcp-custom-sse-server.d.ts +4 -0
  33. package/dist/providers/mcp-custom-sse-server.d.ts.map +1 -1
  34. package/dist/runners/graceful-restart.d.ts +46 -0
  35. package/dist/runners/graceful-restart.d.ts.map +1 -0
  36. package/dist/runners/mcp-server-runner.d.ts +12 -0
  37. package/dist/runners/mcp-server-runner.d.ts.map +1 -1
  38. package/dist/runners/runner-factory.d.ts.map +1 -1
  39. package/dist/runners/runner-host.d.ts +12 -0
  40. package/dist/runners/runner-host.d.ts.map +1 -1
  41. package/dist/runners/runner.d.ts +12 -0
  42. package/dist/runners/runner.d.ts.map +1 -1
  43. package/dist/sdk/{a2a-frontend-IWOUJOIZ.mjs → a2a-frontend-4LP3MLTS.mjs} +47 -5
  44. package/dist/sdk/a2a-frontend-4LP3MLTS.mjs.map +1 -0
  45. package/dist/sdk/{a2a-frontend-BDACLGMA.mjs → a2a-frontend-MU5EO2HZ.mjs} +35 -1
  46. package/dist/sdk/a2a-frontend-MU5EO2HZ.mjs.map +1 -0
  47. package/dist/sdk/{check-provider-registry-4YKTEDKF.mjs → check-provider-registry-I4BCWKRU.mjs} +7 -7
  48. package/dist/sdk/{check-provider-registry-4YFVBGYU.mjs → check-provider-registry-RRWCXSTG.mjs} +3 -3
  49. package/dist/sdk/{chunk-VMVIM4JB.mjs → chunk-4I3TJ7UJ.mjs} +37 -7
  50. package/dist/sdk/chunk-4I3TJ7UJ.mjs.map +1 -0
  51. package/dist/sdk/{chunk-7YZSSO4X.mjs → chunk-6DPPP7LD.mjs} +10 -10
  52. package/dist/sdk/chunk-7ERVRLDV.mjs +296 -0
  53. package/dist/sdk/chunk-7ERVRLDV.mjs.map +1 -0
  54. package/dist/sdk/{chunk-VXC2XNQJ.mjs → chunk-ANUT54HW.mjs} +3 -3
  55. package/dist/sdk/{chunk-J73GEFPT.mjs → chunk-DHETLQIX.mjs} +2 -2
  56. package/dist/sdk/{chunk-DGIH6EX3.mjs → chunk-QXT47ZHR.mjs} +151 -281
  57. package/dist/sdk/chunk-QXT47ZHR.mjs.map +1 -0
  58. package/dist/sdk/{chunk-4DVP6KVC.mjs → chunk-TQQNSHQV.mjs} +72 -31
  59. package/dist/sdk/chunk-TQQNSHQV.mjs.map +1 -0
  60. package/dist/sdk/chunk-ZOF5QT6U.mjs +5943 -0
  61. package/dist/sdk/chunk-ZOF5QT6U.mjs.map +1 -0
  62. package/dist/sdk/{config-TSA5FUOM.mjs → config-2STD74CJ.mjs} +2 -2
  63. package/dist/sdk/config-JE4HKTWW.mjs +16 -0
  64. package/dist/sdk/{failure-condition-evaluator-HTPB5FYW.mjs → failure-condition-evaluator-5DZYMCGW.mjs} +4 -4
  65. package/dist/sdk/{github-frontend-3SDFCCKI.mjs → github-frontend-L3F5JXPJ.mjs} +4 -4
  66. package/dist/sdk/{host-QE4L7UXE.mjs → host-QBJ7TOWG.mjs} +3 -3
  67. package/dist/sdk/{host-CVH2CSHM.mjs → host-X5ZZCEWN.mjs} +2 -2
  68. package/dist/sdk/knex-store-QCEW4I4R.mjs +527 -0
  69. package/dist/sdk/knex-store-QCEW4I4R.mjs.map +1 -0
  70. package/dist/sdk/loader-ZNKKJEZ3.mjs +89 -0
  71. package/dist/sdk/loader-ZNKKJEZ3.mjs.map +1 -0
  72. package/dist/sdk/opa-policy-engine-QCSSIMUF.mjs +655 -0
  73. package/dist/sdk/opa-policy-engine-QCSSIMUF.mjs.map +1 -0
  74. package/dist/sdk/{routing-YVMTKFDZ.mjs → routing-CVQT4KHX.mjs} +5 -5
  75. package/dist/sdk/{schedule-tool-Z5VG67JK.mjs → schedule-tool-AECLFHSY.mjs} +7 -7
  76. package/dist/sdk/{schedule-tool-ZMX3Y7LF.mjs → schedule-tool-Z6QYL2B3.mjs} +3 -3
  77. package/dist/sdk/{schedule-tool-handler-PCERK6ZZ.mjs → schedule-tool-handler-6QLZRTQA.mjs} +7 -7
  78. package/dist/sdk/{schedule-tool-handler-N7UNABOA.mjs → schedule-tool-handler-J4NUETJ6.mjs} +3 -3
  79. package/dist/sdk/sdk.d.mts +33 -0
  80. package/dist/sdk/sdk.d.ts +33 -0
  81. package/dist/sdk/sdk.js +3545 -455
  82. package/dist/sdk/sdk.js.map +1 -1
  83. package/dist/sdk/sdk.mjs +6 -6
  84. package/dist/sdk/task-evaluator-HLNXKKVV.mjs +1278 -0
  85. package/dist/sdk/task-evaluator-HLNXKKVV.mjs.map +1 -0
  86. package/dist/sdk/{trace-helpers-KXDOJWBL.mjs → trace-helpers-WJXYVV4S.mjs} +3 -3
  87. package/dist/sdk/trace-reader-ZY77OFNM.mjs +266 -0
  88. package/dist/sdk/trace-reader-ZY77OFNM.mjs.map +1 -0
  89. package/dist/sdk/track-execution-MKIQXP2C.mjs +136 -0
  90. package/dist/sdk/track-execution-MKIQXP2C.mjs.map +1 -0
  91. package/dist/sdk/validator-XTZJZZJH.mjs +134 -0
  92. package/dist/sdk/validator-XTZJZZJH.mjs.map +1 -0
  93. package/dist/sdk/{workflow-check-provider-NTHC5ZBF.mjs → workflow-check-provider-EXMC6JIS.mjs} +7 -7
  94. package/dist/sdk/{workflow-check-provider-SRIMWKLQ.mjs → workflow-check-provider-VKYGI5GK.mjs} +3 -3
  95. package/dist/slack/socket-runner.d.ts +12 -0
  96. package/dist/slack/socket-runner.d.ts.map +1 -1
  97. package/dist/teams/webhook-runner.d.ts +4 -0
  98. package/dist/teams/webhook-runner.d.ts.map +1 -1
  99. package/dist/telegram/polling-runner.d.ts +2 -0
  100. package/dist/telegram/polling-runner.d.ts.map +1 -1
  101. package/dist/types/config.d.ts +33 -0
  102. package/dist/types/config.d.ts.map +1 -1
  103. package/dist/whatsapp/webhook-runner.d.ts +4 -0
  104. package/dist/whatsapp/webhook-runner.d.ts.map +1 -1
  105. package/package.json +2 -2
  106. package/dist/output/traces/run-2026-03-17T13-58-29-402Z.ndjson +0 -157
  107. package/dist/output/traces/run-2026-03-17T13-59-10-403Z.ndjson +0 -2333
  108. package/dist/sdk/a2a-frontend-BDACLGMA.mjs.map +0 -1
  109. package/dist/sdk/a2a-frontend-IWOUJOIZ.mjs.map +0 -1
  110. package/dist/sdk/check-provider-registry-67ZLGDDQ.mjs +0 -31
  111. package/dist/sdk/chunk-4DVP6KVC.mjs.map +0 -1
  112. package/dist/sdk/chunk-DGIH6EX3.mjs.map +0 -1
  113. package/dist/sdk/chunk-QGBASDYP.mjs +0 -46153
  114. package/dist/sdk/chunk-QGBASDYP.mjs.map +0 -1
  115. package/dist/sdk/chunk-VMVIM4JB.mjs.map +0 -1
  116. package/dist/sdk/host-VBBSLUWG.mjs +0 -87
  117. package/dist/sdk/host-VBBSLUWG.mjs.map +0 -1
  118. package/dist/sdk/schedule-tool-ADUXTCY7.mjs +0 -37
  119. package/dist/sdk/schedule-tool-handler-QOJVFRB4.mjs +0 -41
  120. package/dist/sdk/workflow-check-provider-CJXW2Z4F.mjs +0 -31
  121. package/dist/sdk/workflow-check-provider-CJXW2Z4F.mjs.map +0 -1
  122. package/dist/sdk/workflow-check-provider-NTHC5ZBF.mjs.map +0 -1
  123. package/dist/sdk/workflow-check-provider-SRIMWKLQ.mjs.map +0 -1
  124. package/dist/traces/run-2026-03-17T13-58-29-402Z.ndjson +0 -157
  125. package/dist/traces/run-2026-03-17T13-59-10-403Z.ndjson +0 -2333
  126. /package/dist/sdk/{check-provider-registry-4YFVBGYU.mjs.map → check-provider-registry-I4BCWKRU.mjs.map} +0 -0
  127. /package/dist/sdk/{check-provider-registry-4YKTEDKF.mjs.map → check-provider-registry-RRWCXSTG.mjs.map} +0 -0
  128. /package/dist/sdk/{chunk-7YZSSO4X.mjs.map → chunk-6DPPP7LD.mjs.map} +0 -0
  129. /package/dist/sdk/{chunk-VXC2XNQJ.mjs.map → chunk-ANUT54HW.mjs.map} +0 -0
  130. /package/dist/sdk/{chunk-J73GEFPT.mjs.map → chunk-DHETLQIX.mjs.map} +0 -0
  131. /package/dist/sdk/{check-provider-registry-67ZLGDDQ.mjs.map → config-2STD74CJ.mjs.map} +0 -0
  132. /package/dist/sdk/{config-TSA5FUOM.mjs.map → config-JE4HKTWW.mjs.map} +0 -0
  133. /package/dist/sdk/{failure-condition-evaluator-HTPB5FYW.mjs.map → failure-condition-evaluator-5DZYMCGW.mjs.map} +0 -0
  134. /package/dist/sdk/{github-frontend-3SDFCCKI.mjs.map → github-frontend-L3F5JXPJ.mjs.map} +0 -0
  135. /package/dist/sdk/{host-CVH2CSHM.mjs.map → host-QBJ7TOWG.mjs.map} +0 -0
  136. /package/dist/sdk/{host-QE4L7UXE.mjs.map → host-X5ZZCEWN.mjs.map} +0 -0
  137. /package/dist/sdk/{routing-YVMTKFDZ.mjs.map → routing-CVQT4KHX.mjs.map} +0 -0
  138. /package/dist/sdk/{schedule-tool-ADUXTCY7.mjs.map → schedule-tool-AECLFHSY.mjs.map} +0 -0
  139. /package/dist/sdk/{schedule-tool-Z5VG67JK.mjs.map → schedule-tool-Z6QYL2B3.mjs.map} +0 -0
  140. /package/dist/sdk/{schedule-tool-ZMX3Y7LF.mjs.map → schedule-tool-handler-6QLZRTQA.mjs.map} +0 -0
  141. /package/dist/sdk/{schedule-tool-handler-N7UNABOA.mjs.map → schedule-tool-handler-J4NUETJ6.mjs.map} +0 -0
  142. /package/dist/sdk/{schedule-tool-handler-PCERK6ZZ.mjs.map → trace-helpers-WJXYVV4S.mjs.map} +0 -0
  143. /package/dist/sdk/{schedule-tool-handler-QOJVFRB4.mjs.map → workflow-check-provider-EXMC6JIS.mjs.map} +0 -0
  144. /package/dist/sdk/{trace-helpers-KXDOJWBL.mjs.map → workflow-check-provider-VKYGI5GK.mjs.map} +0 -0
@@ -1,93 +1,157 @@
1
- import {
2
- getInstanceId,
3
- init_instance_id
4
- } from "./chunk-6VVXKXTI.mjs";
5
- import {
6
- init_metrics,
7
- metrics_exports
8
- } from "./chunk-34QX63WK.mjs";
9
- import {
10
- SpanStatusCode,
11
- context,
12
- init_lazy_otel,
13
- trace
14
- } from "./chunk-UCMJJ3IM.mjs";
15
1
  import {
16
2
  __commonJS,
17
- __esm,
18
- __export,
19
- __require,
20
- __toCommonJS
3
+ __esm
21
4
  } from "./chunk-J7LXIPZS.mjs";
22
5
 
23
- // src/telemetry/fallback-ndjson.ts
24
- var fallback_ndjson_exports = {};
25
- __export(fallback_ndjson_exports, {
26
- emitNdjsonFallback: () => emitNdjsonFallback,
27
- emitNdjsonSpanWithEvents: () => emitNdjsonSpanWithEvents,
28
- flushNdjson: () => flushNdjson
29
- });
30
- import * as fs from "fs";
31
- import * as path from "path";
32
- function resolveTargetPath(outDir) {
33
- if (process.env.VISOR_FALLBACK_TRACE_FILE) {
34
- CURRENT_FILE = process.env.VISOR_FALLBACK_TRACE_FILE;
35
- return CURRENT_FILE;
6
+ // src/utils/human-id.ts
7
+ function randomSuffix() {
8
+ const chars = "abcdefghjkmnpqrstuvwxyz23456789";
9
+ let result = "";
10
+ for (let i = 0; i < 4; i++) {
11
+ result += chars[Math.floor(Math.random() * chars.length)];
36
12
  }
37
- if (CURRENT_FILE) return CURRENT_FILE;
38
- const ts = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-");
39
- CURRENT_FILE = path.join(outDir, `${ts}.ndjson`);
40
- return CURRENT_FILE;
13
+ return result;
41
14
  }
42
- function isEnabled() {
43
- if (process.env.VISOR_FALLBACK_TRACE_FILE) return true;
44
- return process.env.VISOR_TELEMETRY_ENABLED === "true" && (process.env.VISOR_TELEMETRY_SINK || "file") === "file";
15
+ function generateHumanId() {
16
+ const adj = adjectives[Math.floor(Math.random() * adjectives.length)];
17
+ const noun = nouns[Math.floor(Math.random() * nouns.length)];
18
+ const suffix = randomSuffix();
19
+ return `${adj}-${noun}-${suffix}`;
45
20
  }
46
- function appendAsync(outDir, line) {
47
- writeChain = writeChain.then(async () => {
48
- if (!dirReady) {
49
- try {
50
- await fs.promises.mkdir(outDir, { recursive: true });
51
- } catch {
52
- }
53
- dirReady = true;
54
- }
55
- const target = resolveTargetPath(outDir);
56
- await fs.promises.appendFile(target, line, "utf8");
57
- }).catch(() => {
58
- });
21
+ function generateShortHumanId() {
22
+ const adj = adjectives[Math.floor(Math.random() * adjectives.length)];
23
+ const noun = nouns[Math.floor(Math.random() * nouns.length)];
24
+ return `${adj}-${noun}`;
59
25
  }
60
- async function flushNdjson() {
61
- try {
62
- await writeChain;
63
- } catch {
64
- }
65
- }
66
- function emitNdjsonFallback(name, attrs) {
67
- try {
68
- if (!isEnabled()) return;
69
- const outDir = process.env.VISOR_TRACE_DIR || path.join(process.cwd(), "output", "traces");
70
- const line = JSON.stringify({ name, attributes: attrs }) + "\n";
71
- appendAsync(outDir, line);
72
- } catch {
26
+ var adjectives, nouns;
27
+ var init_human_id = __esm({
28
+ "src/utils/human-id.ts"() {
29
+ "use strict";
30
+ adjectives = [
31
+ "bold",
32
+ "calm",
33
+ "cool",
34
+ "dark",
35
+ "fast",
36
+ "gold",
37
+ "green",
38
+ "happy",
39
+ "kind",
40
+ "loud",
41
+ "mild",
42
+ "neat",
43
+ "nice",
44
+ "pink",
45
+ "pure",
46
+ "quick",
47
+ "rare",
48
+ "rich",
49
+ "safe",
50
+ "slim",
51
+ "soft",
52
+ "tall",
53
+ "tidy",
54
+ "tiny",
55
+ "warm",
56
+ "wise",
57
+ "young",
58
+ "able",
59
+ "blue",
60
+ "brave",
61
+ "busy",
62
+ "clean",
63
+ "crisp",
64
+ "eager",
65
+ "fair",
66
+ "fresh",
67
+ "glad",
68
+ "grand",
69
+ "keen",
70
+ "lush",
71
+ "prime",
72
+ "proud",
73
+ "sharp",
74
+ "sleek",
75
+ "smart",
76
+ "solid",
77
+ "swift",
78
+ "vivid",
79
+ "wild",
80
+ "witty",
81
+ "zesty"
82
+ ];
83
+ nouns = [
84
+ "ant",
85
+ "bat",
86
+ "bear",
87
+ "bee",
88
+ "bird",
89
+ "bull",
90
+ "cat",
91
+ "cow",
92
+ "crab",
93
+ "crow",
94
+ "deer",
95
+ "dog",
96
+ "dove",
97
+ "duck",
98
+ "eagle",
99
+ "elk",
100
+ "fish",
101
+ "fox",
102
+ "frog",
103
+ "goat",
104
+ "hawk",
105
+ "hare",
106
+ "horse",
107
+ "jay",
108
+ "lark",
109
+ "lion",
110
+ "lynx",
111
+ "mole",
112
+ "moth",
113
+ "mouse",
114
+ "newt",
115
+ "owl",
116
+ "panda",
117
+ "pig",
118
+ "puma",
119
+ "rat",
120
+ "raven",
121
+ "seal",
122
+ "shark",
123
+ "sheep",
124
+ "sloth",
125
+ "snail",
126
+ "snake",
127
+ "spider",
128
+ "swan",
129
+ "tiger",
130
+ "toad",
131
+ "trout",
132
+ "viper",
133
+ "wasp",
134
+ "whale",
135
+ "wolf",
136
+ "wren",
137
+ "yak",
138
+ "zebra"
139
+ ];
73
140
  }
74
- }
75
- function emitNdjsonSpanWithEvents(name, attrs, events) {
76
- try {
77
- if (!isEnabled()) return;
78
- const outDir = process.env.VISOR_TRACE_DIR || path.join(process.cwd(), "output", "traces");
79
- const line = JSON.stringify({ name, attributes: attrs, events }) + "\n";
80
- appendAsync(outDir, line);
81
- } catch {
141
+ });
142
+
143
+ // src/utils/instance-id.ts
144
+ function getInstanceId() {
145
+ if (!_instanceId) {
146
+ _instanceId = generateHumanId();
82
147
  }
148
+ return _instanceId;
83
149
  }
84
- var CURRENT_FILE, dirReady, writeChain;
85
- var init_fallback_ndjson = __esm({
86
- "src/telemetry/fallback-ndjson.ts"() {
150
+ var _instanceId;
151
+ var init_instance_id = __esm({
152
+ "src/utils/instance-id.ts"() {
87
153
  "use strict";
88
- CURRENT_FILE = null;
89
- dirReady = false;
90
- writeChain = Promise.resolve();
154
+ init_human_id();
91
155
  }
92
156
  });
93
157
 
@@ -96,7 +160,7 @@ var require_package = __commonJS({
96
160
  "package.json"(exports, module) {
97
161
  module.exports = {
98
162
  name: "@probelabs/visor",
99
- version: "0.1.181",
163
+ version: "0.1.42",
100
164
  main: "dist/index.js",
101
165
  bin: {
102
166
  visor: "./dist/index.js"
@@ -215,7 +279,7 @@ var require_package = __commonJS({
215
279
  "@opentelemetry/sdk-node": "^0.203.0",
216
280
  "@opentelemetry/sdk-trace-base": "^1.30.1",
217
281
  "@opentelemetry/semantic-conventions": "^1.30.1",
218
- "@probelabs/probe": "^0.6.0-rc297",
282
+ "@probelabs/probe": "^0.6.0-rc300",
219
283
  "@types/commander": "^2.12.0",
220
284
  "@types/uuid": "^10.0.0",
221
285
  "@utcp/file": "^1.1.0",
@@ -315,206 +379,12 @@ var require_package = __commonJS({
315
379
  }
316
380
  });
317
381
 
318
- // src/telemetry/trace-helpers.ts
319
- var trace_helpers_exports = {};
320
- __export(trace_helpers_exports, {
321
- __getOrCreateNdjsonPath: () => __getOrCreateNdjsonPath,
322
- _appendRunMarker: () => _appendRunMarker,
323
- addEvent: () => addEvent,
324
- getTracer: () => getTracer,
325
- getVisorRunAttributes: () => getVisorRunAttributes,
326
- setSpanAttributes: () => setSpanAttributes,
327
- setSpanError: () => setSpanError,
328
- withActiveSpan: () => withActiveSpan,
329
- withVisorRun: () => withVisorRun
330
- });
331
- function getTracer() {
332
- return trace.getTracer("visor");
333
- }
334
- async function withActiveSpan(name, attrs, fn) {
335
- const tracer = getTracer();
336
- return await new Promise((resolve, reject) => {
337
- const callback = async (span) => {
338
- try {
339
- const res = await fn(span);
340
- resolve(res);
341
- } catch (err) {
342
- try {
343
- if (err instanceof Error) span.recordException(err);
344
- span.setStatus({ code: SpanStatusCode.ERROR });
345
- } catch {
346
- }
347
- reject(err);
348
- } finally {
349
- try {
350
- span.end();
351
- } catch {
352
- }
353
- }
354
- };
355
- const options = attrs ? { attributes: attrs } : {};
356
- tracer.startActiveSpan(name, options, callback);
357
- });
358
- }
359
- function addEvent(name, attrs) {
360
- const span = trace.getSpan(context.active());
361
- if (span) {
362
- try {
363
- span.addEvent(name, attrs);
364
- } catch {
365
- }
366
- }
367
- try {
368
- const { emitNdjsonSpanWithEvents: emitNdjsonSpanWithEvents2 } = (init_fallback_ndjson(), __toCommonJS(fallback_ndjson_exports));
369
- emitNdjsonSpanWithEvents2("visor.event", {}, [{ name, attrs }]);
370
- if (name === "fail_if.triggered") {
371
- emitNdjsonSpanWithEvents2("visor.event", {}, [
372
- { name: "fail_if.evaluated", attrs },
373
- { name: "fail_if.triggered", attrs }
374
- ]);
375
- }
376
- } catch {
377
- }
378
- }
379
- function setSpanAttributes(attrs) {
380
- const span = trace.getSpan(context.active());
381
- if (!span) return;
382
- try {
383
- for (const [k, v] of Object.entries(attrs)) span.setAttribute(k, v);
384
- } catch {
385
- }
386
- }
387
- function setSpanError(err) {
388
- const span = trace.getSpan(context.active());
389
- if (!span) return;
390
- try {
391
- if (err instanceof Error) span.recordException(err);
392
- span.setStatus({ code: SpanStatusCode.ERROR });
393
- } catch {
394
- }
395
- }
396
- function getVisorRunAttributes() {
397
- const attrs = {};
398
- try {
399
- attrs["visor.version"] = process.env.VISOR_VERSION || (require_package()?.version ?? "dev");
400
- } catch {
401
- attrs["visor.version"] = "dev";
402
- }
403
- const commitShort = process.env.VISOR_COMMIT_SHORT || "";
404
- const commitFull = process.env.VISOR_COMMIT_SHA || process.env.VISOR_COMMIT || "";
405
- if (commitShort) {
406
- attrs["visor.commit"] = commitShort;
407
- }
408
- if (commitFull) {
409
- attrs["visor.commit.sha"] = commitFull;
410
- }
411
- attrs["visor.instance_id"] = getInstanceId();
412
- return attrs;
413
- }
414
- async function withVisorRun(attrs, runMeta, fn) {
415
- const {
416
- recordRunStart,
417
- recordRunDuration,
418
- resetRunAiCalls,
419
- recordRunAiCalls,
420
- getRunAiCalls
421
- } = (init_metrics(), __toCommonJS(metrics_exports));
422
- const instanceId = getInstanceId();
423
- recordRunStart({
424
- source: runMeta.source,
425
- userId: runMeta.userId,
426
- userName: runMeta.userName,
427
- workflowId: runMeta.workflowId,
428
- instanceId
429
- });
430
- resetRunAiCalls();
431
- const startMs = Date.now();
432
- let success = true;
433
- try {
434
- return await withActiveSpan("visor.run", attrs, async (span) => {
435
- try {
436
- return await fn(span);
437
- } finally {
438
- try {
439
- span.setAttribute("visor.run.ai_calls", getRunAiCalls());
440
- span.setAttribute("visor.run.duration_ms", Date.now() - startMs);
441
- } catch {
442
- }
443
- }
444
- });
445
- } catch (err) {
446
- success = false;
447
- throw err;
448
- } finally {
449
- recordRunAiCalls({
450
- source: runMeta.source,
451
- workflowId: runMeta.workflowId
452
- });
453
- recordRunDuration(Date.now() - startMs, {
454
- source: runMeta.source,
455
- userId: runMeta.userId,
456
- workflowId: runMeta.workflowId,
457
- success
458
- });
459
- }
460
- }
461
- function __getOrCreateNdjsonPath() {
462
- try {
463
- if (process.env.VISOR_TELEMETRY_SINK && process.env.VISOR_TELEMETRY_SINK !== "file")
464
- return null;
465
- const path2 = __require("path");
466
- const fs2 = __require("fs");
467
- if (process.env.VISOR_FALLBACK_TRACE_FILE) {
468
- __ndjsonPath = process.env.VISOR_FALLBACK_TRACE_FILE;
469
- const dir = path2.dirname(__ndjsonPath);
470
- if (!fs2.existsSync(dir)) fs2.mkdirSync(dir, { recursive: true });
471
- return __ndjsonPath;
472
- }
473
- const outDir = process.env.VISOR_TRACE_DIR || path2.join(process.cwd(), "output", "traces");
474
- if (!fs2.existsSync(outDir)) fs2.mkdirSync(outDir, { recursive: true });
475
- if (!__ndjsonPath) {
476
- const ts = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-");
477
- __ndjsonPath = path2.join(outDir, `${ts}.ndjson`);
478
- }
479
- return __ndjsonPath;
480
- } catch {
481
- return null;
482
- }
483
- }
484
- function _appendRunMarker() {
485
- try {
486
- const fs2 = __require("fs");
487
- const p = __getOrCreateNdjsonPath();
488
- if (!p) return;
489
- const line = { name: "visor.run", attributes: { started: true } };
490
- fs2.appendFileSync(p, JSON.stringify(line) + "\n", "utf8");
491
- } catch {
492
- }
493
- }
494
- var __ndjsonPath;
495
- var init_trace_helpers = __esm({
496
- "src/telemetry/trace-helpers.ts"() {
497
- init_lazy_otel();
498
- init_instance_id();
499
- __ndjsonPath = null;
500
- }
501
- });
502
-
503
382
  export {
504
- emitNdjsonFallback,
505
- emitNdjsonSpanWithEvents,
506
- fallback_ndjson_exports,
507
- init_fallback_ndjson,
508
- getTracer,
509
- withActiveSpan,
510
- addEvent,
511
- setSpanAttributes,
512
- setSpanError,
513
- getVisorRunAttributes,
514
- withVisorRun,
515
- __getOrCreateNdjsonPath,
516
- _appendRunMarker,
517
- trace_helpers_exports,
518
- init_trace_helpers
383
+ generateHumanId,
384
+ generateShortHumanId,
385
+ init_human_id,
386
+ getInstanceId,
387
+ init_instance_id,
388
+ require_package
519
389
  };
520
- //# sourceMappingURL=chunk-DGIH6EX3.mjs.map
390
+ //# sourceMappingURL=chunk-QXT47ZHR.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/human-id.ts","../../src/utils/instance-id.ts","../../package.json"],"sourcesContent":["/**\n * Generate human-readable IDs like Kubernetes (e.g., \"happy-panda-7x3k\")\n */\n\nconst adjectives = [\n 'bold',\n 'calm',\n 'cool',\n 'dark',\n 'fast',\n 'gold',\n 'green',\n 'happy',\n 'kind',\n 'loud',\n 'mild',\n 'neat',\n 'nice',\n 'pink',\n 'pure',\n 'quick',\n 'rare',\n 'rich',\n 'safe',\n 'slim',\n 'soft',\n 'tall',\n 'tidy',\n 'tiny',\n 'warm',\n 'wise',\n 'young',\n 'able',\n 'blue',\n 'brave',\n 'busy',\n 'clean',\n 'crisp',\n 'eager',\n 'fair',\n 'fresh',\n 'glad',\n 'grand',\n 'keen',\n 'lush',\n 'prime',\n 'proud',\n 'sharp',\n 'sleek',\n 'smart',\n 'solid',\n 'swift',\n 'vivid',\n 'wild',\n 'witty',\n 'zesty',\n];\n\nconst nouns = [\n 'ant',\n 'bat',\n 'bear',\n 'bee',\n 'bird',\n 'bull',\n 'cat',\n 'cow',\n 'crab',\n 'crow',\n 'deer',\n 'dog',\n 'dove',\n 'duck',\n 'eagle',\n 'elk',\n 'fish',\n 'fox',\n 'frog',\n 'goat',\n 'hawk',\n 'hare',\n 'horse',\n 'jay',\n 'lark',\n 'lion',\n 'lynx',\n 'mole',\n 'moth',\n 'mouse',\n 'newt',\n 'owl',\n 'panda',\n 'pig',\n 'puma',\n 'rat',\n 'raven',\n 'seal',\n 'shark',\n 'sheep',\n 'sloth',\n 'snail',\n 'snake',\n 'spider',\n 'swan',\n 'tiger',\n 'toad',\n 'trout',\n 'viper',\n 'wasp',\n 'whale',\n 'wolf',\n 'wren',\n 'yak',\n 'zebra',\n];\n\n/**\n * Generate a random alphanumeric suffix (4 chars)\n */\nfunction randomSuffix(): string {\n const chars = 'abcdefghjkmnpqrstuvwxyz23456789'; // no i,l,o,0,1 to avoid confusion\n let result = '';\n for (let i = 0; i < 4; i++) {\n result += chars[Math.floor(Math.random() * chars.length)];\n }\n return result;\n}\n\n/**\n * Generate a human-readable ID like \"happy-panda-7x3k\"\n */\nexport function generateHumanId(): string {\n const adj = adjectives[Math.floor(Math.random() * adjectives.length)];\n const noun = nouns[Math.floor(Math.random() * nouns.length)];\n const suffix = randomSuffix();\n return `${adj}-${noun}-${suffix}`;\n}\n\n/**\n * Generate a short human-readable ID like \"happy-panda\" (no suffix)\n */\nexport function generateShortHumanId(): string {\n const adj = adjectives[Math.floor(Math.random() * adjectives.length)];\n const noun = nouns[Math.floor(Math.random() * nouns.length)];\n return `${adj}-${noun}`;\n}\n","/**\n * Visor instance ID — unique per process lifetime.\n *\n * Used to identify which visor instance created/owns a task,\n * especially in multi-node environments.\n */\n\nimport { generateHumanId } from './human-id';\n\nlet _instanceId: string | undefined;\n\n/** Get or generate the visor instance ID for this process. */\nexport function getInstanceId(): string {\n if (!_instanceId) {\n _instanceId = generateHumanId();\n }\n return _instanceId;\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-rc300\",\n \"@types/commander\": \"^2.12.0\",\n \"@types/uuid\": \"^10.0.0\",\n \"@utcp/file\": \"^1.1.0\",\n \"@utcp/http\": \"^1.1.0\",\n \"@utcp/sdk\": \"^1.1.0\",\n \"@utcp/text\": \"^1.1.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"],"mappings":"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","names":[]}