@probelabs/visor 0.1.182-ee → 0.1.183-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 (205) hide show
  1. package/defaults/assistant.yaml +2 -1
  2. package/defaults/code-talk.yaml +6 -0
  3. package/defaults/skills/task-progress.yaml +39 -0
  4. package/dist/agent-protocol/task-evaluator.d.ts +2 -1
  5. package/dist/agent-protocol/task-evaluator.d.ts.map +1 -1
  6. package/dist/agent-protocol/task-progress-tool.d.ts +29 -0
  7. package/dist/agent-protocol/task-progress-tool.d.ts.map +1 -0
  8. package/dist/agent-protocol/task-store.d.ts +8 -0
  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/trace-serializer.d.ts +5 -2
  12. package/dist/agent-protocol/trace-serializer.d.ts.map +1 -1
  13. package/dist/agent-protocol/track-execution.d.ts +1 -1
  14. package/dist/agent-protocol/track-execution.d.ts.map +1 -1
  15. package/dist/ai-review-service.d.ts.map +1 -1
  16. package/dist/cli-main.d.ts.map +1 -1
  17. package/dist/debug-visualizer/trace-reader.d.ts.map +1 -1
  18. package/dist/defaults/assistant.yaml +2 -1
  19. package/dist/defaults/code-talk.yaml +6 -0
  20. package/dist/defaults/skills/task-progress.yaml +39 -0
  21. package/dist/docs/telemetry-live-spans-plan.md +510 -0
  22. package/dist/generated/config-schema.json +43 -6
  23. package/dist/index.js +3545 -701
  24. package/dist/providers/ai-check-provider.d.ts.map +1 -1
  25. package/dist/providers/git-checkout-provider.d.ts.map +1 -1
  26. package/dist/providers/mcp-custom-sse-server.d.ts.map +1 -1
  27. package/dist/reviewer.d.ts +2 -0
  28. package/dist/reviewer.d.ts.map +1 -1
  29. package/dist/runners/process-cli-handler.d.ts +2 -0
  30. package/dist/runners/process-cli-handler.d.ts.map +1 -0
  31. package/dist/runners/process-discovery.d.ts +29 -0
  32. package/dist/runners/process-discovery.d.ts.map +1 -0
  33. package/dist/sandbox/check-runner.d.ts.map +1 -1
  34. package/dist/sandbox/sandbox-telemetry.d.ts +7 -0
  35. package/dist/sandbox/sandbox-telemetry.d.ts.map +1 -1
  36. package/dist/sandbox/trace-ingester.d.ts +28 -15
  37. package/dist/sandbox/trace-ingester.d.ts.map +1 -1
  38. package/dist/scheduler/schedule-tool.d.ts +5 -0
  39. package/dist/scheduler/schedule-tool.d.ts.map +1 -1
  40. package/dist/sdk/{a2a-frontend-MU5EO2HZ.mjs → a2a-frontend-5YDHFQXD.mjs} +47 -8
  41. package/dist/sdk/{a2a-frontend-MU5EO2HZ.mjs.map → a2a-frontend-5YDHFQXD.mjs.map} +1 -1
  42. package/dist/sdk/{a2a-frontend-4LP3MLTS.mjs → a2a-frontend-6LWBIPMS.mjs} +19 -3
  43. package/dist/sdk/a2a-frontend-6LWBIPMS.mjs.map +1 -0
  44. package/dist/sdk/check-provider-registry-WSEVHJEV.mjs +31 -0
  45. package/dist/sdk/{check-provider-registry-I4BCWKRU.mjs → check-provider-registry-YRADEEQY.mjs} +6 -6
  46. package/dist/sdk/chunk-4BN2XI4X.mjs +459 -0
  47. package/dist/sdk/chunk-4BN2XI4X.mjs.map +1 -0
  48. package/dist/sdk/chunk-54KOAC4W.mjs +665 -0
  49. package/dist/sdk/chunk-54KOAC4W.mjs.map +1 -0
  50. package/dist/sdk/chunk-6C3R6E42.mjs +1700 -0
  51. package/dist/sdk/chunk-6C3R6E42.mjs.map +1 -0
  52. package/dist/sdk/{chunk-4I3TJ7UJ.mjs → chunk-7W5QCO4Y.mjs} +47 -10
  53. package/dist/sdk/chunk-7W5QCO4Y.mjs.map +1 -0
  54. package/dist/sdk/chunk-B2OUZAWY.mjs +237 -0
  55. package/dist/sdk/chunk-B2OUZAWY.mjs.map +1 -0
  56. package/dist/sdk/chunk-FWWLD555.mjs +244 -0
  57. package/dist/sdk/chunk-FWWLD555.mjs.map +1 -0
  58. package/dist/sdk/{chunk-QXT47ZHR.mjs → chunk-G7GSN3SK.mjs} +2 -2
  59. package/dist/sdk/{chunk-QXT47ZHR.mjs.map → chunk-G7GSN3SK.mjs.map} +1 -1
  60. package/dist/sdk/{chunk-DHETLQIX.mjs → chunk-GA2TYKSR.mjs} +5 -5
  61. package/dist/sdk/{chunk-6DPPP7LD.mjs → chunk-IDL3AA3G.mjs} +203 -42
  62. package/dist/sdk/chunk-IDL3AA3G.mjs.map +1 -0
  63. package/dist/sdk/chunk-MEB2TTIE.mjs +157 -0
  64. package/dist/sdk/chunk-MEB2TTIE.mjs.map +1 -0
  65. package/dist/sdk/{chunk-3JFK6KCD.mjs → chunk-MFXPJUUE.mjs} +150 -280
  66. package/dist/sdk/chunk-MFXPJUUE.mjs.map +1 -0
  67. package/dist/sdk/{chunk-KBGQJKIZ.mjs → chunk-NPSLGKXB.mjs} +3 -3
  68. package/dist/sdk/chunk-P2K4VOMU.mjs +825 -0
  69. package/dist/sdk/chunk-P2K4VOMU.mjs.map +1 -0
  70. package/dist/sdk/chunk-RI4ONH5X.mjs +482 -0
  71. package/dist/sdk/chunk-RI4ONH5X.mjs.map +1 -0
  72. package/dist/sdk/chunk-S5FSRHMY.mjs +139 -0
  73. package/dist/sdk/chunk-S5FSRHMY.mjs.map +1 -0
  74. package/dist/sdk/{chunk-7ERVRLDV.mjs → chunk-TFUQ2D5L.mjs} +13 -2
  75. package/dist/sdk/chunk-TFUQ2D5L.mjs.map +1 -0
  76. package/dist/sdk/{chunk-TQQNSHQV.mjs → chunk-UXB4XWEE.mjs} +1044 -179
  77. package/dist/sdk/chunk-UXB4XWEE.mjs.map +1 -0
  78. package/dist/sdk/{chunk-U6K5SK7X.mjs → chunk-V45TITKX.mjs} +2 -2
  79. package/dist/sdk/{chunk-ANUT54HW.mjs → chunk-WKLJ57WF.mjs} +6 -6
  80. package/dist/sdk/chunk-XOAEKFKB.mjs +1150 -0
  81. package/dist/sdk/chunk-XOAEKFKB.mjs.map +1 -0
  82. package/dist/sdk/chunk-ZPYODGYA.mjs +251 -0
  83. package/dist/sdk/chunk-ZPYODGYA.mjs.map +1 -0
  84. package/dist/sdk/command-executor-YNJOS77A.mjs +14 -0
  85. package/dist/sdk/{config-2STD74CJ.mjs → config-PCP6O6Y6.mjs} +4 -4
  86. package/dist/sdk/{failure-condition-evaluator-FFWJRAEQ.mjs → failure-condition-evaluator-H3PBFBYT.mjs} +4 -4
  87. package/dist/sdk/failure-condition-evaluator-IRFKTYZD.mjs +18 -0
  88. package/dist/sdk/github-auth-BJQBLK2V.mjs +196 -0
  89. package/dist/sdk/github-auth-BJQBLK2V.mjs.map +1 -0
  90. package/dist/sdk/{github-frontend-L3F5JXPJ.mjs → github-frontend-DECYOBRN.mjs} +8 -8
  91. package/dist/sdk/{github-frontend-KGV2R5Z6.mjs → github-frontend-TZRBOQCN.mjs} +4 -4
  92. package/dist/sdk/{host-QBJ7TOWG.mjs → host-CFM2ASDI.mjs} +4 -4
  93. package/dist/sdk/{host-X5ZZCEWN.mjs → host-T4LNVU2H.mjs} +3 -3
  94. package/dist/sdk/{knex-store-QCEW4I4R.mjs → knex-store-OEWSZEBY.mjs} +3 -3
  95. package/dist/sdk/lazy-otel-5RDTVS5L.mjs +24 -0
  96. package/dist/sdk/liquid-extensions-E3AKRX7P.mjs +25 -0
  97. package/dist/sdk/{loader-ZNKKJEZ3.mjs → loader-WRGI244P.mjs} +5 -5
  98. package/dist/sdk/memory-store-OHUIXCWJ.mjs +12 -0
  99. package/dist/sdk/metrics-MYUPQBBV.mjs +41 -0
  100. package/dist/sdk/{opa-policy-engine-QCSSIMUF.mjs → opa-policy-engine-IVMCGVNA.mjs} +3 -3
  101. package/dist/sdk/prompt-state-LN57DQF3.mjs +16 -0
  102. package/dist/sdk/renderer-schema-BT2IXMLW.mjs +51 -0
  103. package/dist/sdk/renderer-schema-BT2IXMLW.mjs.map +1 -0
  104. package/dist/sdk/routing-H2PQ57OA.mjs +26 -0
  105. package/dist/sdk/{routing-CVQT4KHX.mjs → routing-JMZ7HDCC.mjs} +5 -5
  106. package/dist/sdk/schedule-tool-2DPNSU63.mjs +37 -0
  107. package/dist/sdk/{schedule-tool-AECLFHSY.mjs → schedule-tool-4M45RK3E.mjs} +6 -6
  108. package/dist/sdk/{schedule-tool-handler-6QLZRTQA.mjs → schedule-tool-handler-KLHE2SOW.mjs} +6 -6
  109. package/dist/sdk/schedule-tool-handler-KLHE2SOW.mjs.map +1 -0
  110. package/dist/sdk/{schedule-tool-handler-J4NUETJ6.mjs → schedule-tool-handler-NBEO46RV.mjs} +16 -16
  111. package/dist/sdk/schedule-tool-handler-NBEO46RV.mjs.map +1 -0
  112. package/dist/sdk/sdk.d.mts +2 -0
  113. package/dist/sdk/sdk.d.ts +2 -0
  114. package/dist/sdk/sdk.js +3125 -666
  115. package/dist/sdk/sdk.js.map +1 -1
  116. package/dist/sdk/sdk.mjs +15 -15
  117. package/dist/sdk/slack-frontend-DF5VL4OF.mjs +929 -0
  118. package/dist/sdk/slack-frontend-DF5VL4OF.mjs.map +1 -0
  119. package/dist/sdk/{task-evaluator-HLNXKKVV.mjs → task-evaluator-GQYDOSGT.mjs} +138 -24
  120. package/dist/sdk/task-evaluator-GQYDOSGT.mjs.map +1 -0
  121. package/dist/sdk/task-evaluator-OVMG7S56.mjs +263 -0
  122. package/dist/sdk/task-evaluator-OVMG7S56.mjs.map +1 -0
  123. package/dist/sdk/{trace-helpers-WJXYVV4S.mjs → trace-helpers-26ZCAE2V.mjs} +7 -5
  124. package/dist/sdk/trace-helpers-26ZCAE2V.mjs.map +1 -0
  125. package/dist/sdk/{trace-helpers-3FFAI7X3.mjs → trace-helpers-XV5GAX5L.mjs} +3 -3
  126. package/dist/sdk/trace-helpers-XV5GAX5L.mjs.map +1 -0
  127. package/dist/sdk/{trace-reader-ZY77OFNM.mjs → trace-reader-OVE4DL2D.mjs} +6 -2
  128. package/dist/sdk/trace-reader-OVE4DL2D.mjs.map +1 -0
  129. package/dist/sdk/trace-serializer-KKBJHM7J.mjs +24 -0
  130. package/dist/sdk/trace-serializer-KKBJHM7J.mjs.map +1 -0
  131. package/dist/sdk/{track-execution-AMQQNXKE.mjs → track-execution-3EC24C2X.mjs} +68 -7
  132. package/dist/sdk/track-execution-3EC24C2X.mjs.map +1 -0
  133. package/dist/sdk/{track-execution-MKIQXP2C.mjs → track-execution-66RLL6QT.mjs} +10 -3
  134. package/dist/sdk/track-execution-66RLL6QT.mjs.map +1 -0
  135. package/dist/sdk/utcp-check-provider-WI3QZ3W6.mjs +16 -0
  136. package/dist/sdk/utcp-check-provider-WI3QZ3W6.mjs.map +1 -0
  137. package/dist/sdk/workflow-check-provider-X2UREEH7.mjs +31 -0
  138. package/dist/sdk/workflow-check-provider-X2UREEH7.mjs.map +1 -0
  139. package/dist/sdk/{workflow-check-provider-EXMC6JIS.mjs → workflow-check-provider-YXALZNAQ.mjs} +6 -6
  140. package/dist/sdk/workflow-check-provider-YXALZNAQ.mjs.map +1 -0
  141. package/dist/sdk/workflow-registry-YCZ3FCJC.mjs +12 -0
  142. package/dist/sdk/workflow-registry-YCZ3FCJC.mjs.map +1 -0
  143. package/dist/slack/socket-runner.d.ts.map +1 -1
  144. package/dist/state-machine/dispatch/sandbox-routing.d.ts.map +1 -1
  145. package/dist/state-machine/states/level-dispatch.d.ts.map +1 -1
  146. package/dist/telemetry/fallback-ndjson.d.ts +21 -0
  147. package/dist/telemetry/fallback-ndjson.d.ts.map +1 -1
  148. package/dist/telemetry/lazy-otel.d.ts +2 -0
  149. package/dist/telemetry/lazy-otel.d.ts.map +1 -1
  150. package/dist/telemetry/opentelemetry.d.ts +5 -0
  151. package/dist/telemetry/opentelemetry.d.ts.map +1 -1
  152. package/dist/telemetry/trace-helpers.d.ts +10 -0
  153. package/dist/telemetry/trace-helpers.d.ts.map +1 -1
  154. package/dist/test-runner/conversation-sugar.d.ts +7 -0
  155. package/dist/test-runner/conversation-sugar.d.ts.map +1 -1
  156. package/dist/test-runner/core/flow-stage.d.ts.map +1 -1
  157. package/dist/test-runner/index.d.ts.map +1 -1
  158. package/dist/test-runner/validator.d.ts.map +1 -1
  159. package/dist/types/git-checkout.d.ts +2 -0
  160. package/dist/types/git-checkout.d.ts.map +1 -1
  161. package/dist/utils/script-tool-environment.d.ts.map +1 -1
  162. package/package.json +2 -2
  163. package/dist/sdk/a2a-frontend-4LP3MLTS.mjs.map +0 -1
  164. package/dist/sdk/check-provider-registry-RRWCXSTG.mjs +0 -31
  165. package/dist/sdk/chunk-3JFK6KCD.mjs.map +0 -1
  166. package/dist/sdk/chunk-4I3TJ7UJ.mjs.map +0 -1
  167. package/dist/sdk/chunk-6DPPP7LD.mjs.map +0 -1
  168. package/dist/sdk/chunk-6VVXKXTI.mjs +0 -164
  169. package/dist/sdk/chunk-6VVXKXTI.mjs.map +0 -1
  170. package/dist/sdk/chunk-7ERVRLDV.mjs.map +0 -1
  171. package/dist/sdk/chunk-TQQNSHQV.mjs.map +0 -1
  172. package/dist/sdk/failure-condition-evaluator-5DZYMCGW.mjs +0 -18
  173. package/dist/sdk/routing-XALEDC2G.mjs +0 -26
  174. package/dist/sdk/schedule-tool-Z6QYL2B3.mjs +0 -37
  175. package/dist/sdk/task-evaluator-HLNXKKVV.mjs.map +0 -1
  176. package/dist/sdk/trace-reader-ZY77OFNM.mjs.map +0 -1
  177. package/dist/sdk/track-execution-AMQQNXKE.mjs.map +0 -1
  178. package/dist/sdk/track-execution-MKIQXP2C.mjs.map +0 -1
  179. package/dist/sdk/workflow-check-provider-VKYGI5GK.mjs +0 -31
  180. /package/dist/sdk/{check-provider-registry-I4BCWKRU.mjs.map → check-provider-registry-WSEVHJEV.mjs.map} +0 -0
  181. /package/dist/sdk/{check-provider-registry-RRWCXSTG.mjs.map → check-provider-registry-YRADEEQY.mjs.map} +0 -0
  182. /package/dist/sdk/{chunk-DHETLQIX.mjs.map → chunk-GA2TYKSR.mjs.map} +0 -0
  183. /package/dist/sdk/{chunk-ANUT54HW.mjs.map → chunk-NPSLGKXB.mjs.map} +0 -0
  184. /package/dist/sdk/{chunk-U6K5SK7X.mjs.map → chunk-V45TITKX.mjs.map} +0 -0
  185. /package/dist/sdk/{chunk-KBGQJKIZ.mjs.map → chunk-WKLJ57WF.mjs.map} +0 -0
  186. /package/dist/sdk/{config-2STD74CJ.mjs.map → command-executor-YNJOS77A.mjs.map} +0 -0
  187. /package/dist/sdk/{failure-condition-evaluator-5DZYMCGW.mjs.map → config-PCP6O6Y6.mjs.map} +0 -0
  188. /package/dist/sdk/{failure-condition-evaluator-FFWJRAEQ.mjs.map → failure-condition-evaluator-H3PBFBYT.mjs.map} +0 -0
  189. /package/dist/sdk/{routing-CVQT4KHX.mjs.map → failure-condition-evaluator-IRFKTYZD.mjs.map} +0 -0
  190. /package/dist/sdk/{github-frontend-KGV2R5Z6.mjs.map → github-frontend-DECYOBRN.mjs.map} +0 -0
  191. /package/dist/sdk/{github-frontend-L3F5JXPJ.mjs.map → github-frontend-TZRBOQCN.mjs.map} +0 -0
  192. /package/dist/sdk/{host-QBJ7TOWG.mjs.map → host-CFM2ASDI.mjs.map} +0 -0
  193. /package/dist/sdk/{host-X5ZZCEWN.mjs.map → host-T4LNVU2H.mjs.map} +0 -0
  194. /package/dist/sdk/{knex-store-QCEW4I4R.mjs.map → knex-store-OEWSZEBY.mjs.map} +0 -0
  195. /package/dist/sdk/{routing-XALEDC2G.mjs.map → lazy-otel-5RDTVS5L.mjs.map} +0 -0
  196. /package/dist/sdk/{schedule-tool-AECLFHSY.mjs.map → liquid-extensions-E3AKRX7P.mjs.map} +0 -0
  197. /package/dist/sdk/{loader-ZNKKJEZ3.mjs.map → loader-WRGI244P.mjs.map} +0 -0
  198. /package/dist/sdk/{schedule-tool-Z6QYL2B3.mjs.map → memory-store-OHUIXCWJ.mjs.map} +0 -0
  199. /package/dist/sdk/{schedule-tool-handler-6QLZRTQA.mjs.map → metrics-MYUPQBBV.mjs.map} +0 -0
  200. /package/dist/sdk/{opa-policy-engine-QCSSIMUF.mjs.map → opa-policy-engine-IVMCGVNA.mjs.map} +0 -0
  201. /package/dist/sdk/{schedule-tool-handler-J4NUETJ6.mjs.map → prompt-state-LN57DQF3.mjs.map} +0 -0
  202. /package/dist/sdk/{trace-helpers-3FFAI7X3.mjs.map → routing-H2PQ57OA.mjs.map} +0 -0
  203. /package/dist/sdk/{trace-helpers-WJXYVV4S.mjs.map → routing-JMZ7HDCC.mjs.map} +0 -0
  204. /package/dist/sdk/{workflow-check-provider-EXMC6JIS.mjs.map → schedule-tool-2DPNSU63.mjs.map} +0 -0
  205. /package/dist/sdk/{workflow-check-provider-VKYGI5GK.mjs.map → schedule-tool-4M45RK3E.mjs.map} +0 -0
@@ -3,11 +3,11 @@ import {
3
3
  fallback_ndjson_exports,
4
4
  init_fallback_ndjson,
5
5
  init_trace_helpers
6
- } from "./chunk-7ERVRLDV.mjs";
6
+ } from "./chunk-XOAEKFKB.mjs";
7
7
  import {
8
8
  addFailIfTriggered,
9
9
  init_metrics
10
- } from "./chunk-34QX63WK.mjs";
10
+ } from "./chunk-FWWLD555.mjs";
11
11
  import {
12
12
  createPermissionHelpers,
13
13
  detectLocalMode,
@@ -20,11 +20,11 @@ import {
20
20
  import {
21
21
  MemoryStore,
22
22
  init_memory_store
23
- } from "./chunk-UFHOIB3R.mjs";
23
+ } from "./chunk-RI4ONH5X.mjs";
24
24
  import {
25
25
  init_logger,
26
26
  logger_exports
27
- } from "./chunk-FT3I25QV.mjs";
27
+ } from "./chunk-ZPYODGYA.mjs";
28
28
  import {
29
29
  __esm,
30
30
  __export,
@@ -736,4 +736,4 @@ export {
736
736
  failure_condition_evaluator_exports,
737
737
  init_failure_condition_evaluator
738
738
  };
739
- //# sourceMappingURL=chunk-DHETLQIX.mjs.map
739
+ //# sourceMappingURL=chunk-GA2TYKSR.mjs.map
@@ -58,7 +58,7 @@ import {
58
58
  import {
59
59
  config_exports,
60
60
  init_config
61
- } from "./chunk-4I3TJ7UJ.mjs";
61
+ } from "./chunk-ZOF5QT6U.mjs";
62
62
  import {
63
63
  ExecutionJournal,
64
64
  checkLoopBudget,
@@ -67,14 +67,15 @@ import {
67
67
  init_routing,
68
68
  init_snapshot_store,
69
69
  snapshot_store_exports
70
- } from "./chunk-KBGQJKIZ.mjs";
70
+ } from "./chunk-NPSLGKXB.mjs";
71
71
  import {
72
72
  FailureConditionEvaluator,
73
73
  init_failure_condition_evaluator
74
- } from "./chunk-U6K5SK7X.mjs";
74
+ } from "./chunk-V45TITKX.mjs";
75
75
  import {
76
76
  addEvent,
77
77
  emitNdjsonFallback,
78
+ emitNdjsonFullSpan,
78
79
  emitNdjsonSpanWithEvents,
79
80
  fallback_ndjson_exports,
80
81
  init_fallback_ndjson,
@@ -82,11 +83,11 @@ import {
82
83
  setSpanAttributes,
83
84
  trace_helpers_exports,
84
85
  withActiveSpan
85
- } from "./chunk-3JFK6KCD.mjs";
86
+ } from "./chunk-TFUQ2D5L.mjs";
86
87
  import {
87
88
  generateHumanId,
88
89
  init_human_id
89
- } from "./chunk-6VVXKXTI.mjs";
90
+ } from "./chunk-MFXPJUUE.mjs";
90
91
  import {
91
92
  addDiagramBlock,
92
93
  init_metrics,
@@ -265,8 +266,13 @@ function createProbeTracerAdapter(fallbackTracer) {
265
266
  "delegation.start",
266
267
  "delegation.complete",
267
268
  "graceful_stop.invoked",
269
+ "graceful_stop.initiated",
268
270
  "probe.timeout_configured",
269
- "negotiated_timeout.observer"
271
+ "negotiated_timeout.observer",
272
+ "negotiated_timeout.observer_extended",
273
+ "negotiated_timeout.observer_declined",
274
+ "negotiated_timeout.observer_exhausted",
275
+ "negotiated_timeout.abort_summary"
270
276
  ]);
271
277
  const emitEvent = (name, attrs) => {
272
278
  try {
@@ -289,12 +295,64 @@ function createProbeTracerAdapter(fallbackTracer) {
289
295
  }
290
296
  };
291
297
  return {
292
- withSpan: async (name, fn, attrs) => withActiveSpan(name, attrs, async (span) => {
293
- if (fallback && typeof fallback.withSpan === "function") {
294
- return await fallback.withSpan(name, async () => fn(span), attrs);
295
- }
296
- return await fn(span);
297
- }),
298
+ withSpan: async (name, fn, attrs, onResult) => {
299
+ const startHr = process.hrtime();
300
+ return withActiveSpan(name, attrs, async (span) => {
301
+ let result;
302
+ if (fallback && typeof fallback.withSpan === "function") {
303
+ result = await fallback.withSpan(name, async () => fn(span), attrs);
304
+ } else {
305
+ result = await fn(span);
306
+ }
307
+ const extraAttrs = {};
308
+ if (onResult) {
309
+ try {
310
+ const capturingSpan = {
311
+ setAttributes: (a) => {
312
+ Object.assign(extraAttrs, a);
313
+ try {
314
+ span.setAttributes(a);
315
+ } catch {
316
+ }
317
+ },
318
+ setAttribute: (k, v) => {
319
+ extraAttrs[k] = v;
320
+ try {
321
+ span.setAttribute(k, v);
322
+ } catch {
323
+ }
324
+ },
325
+ addEvent: (...args) => {
326
+ try {
327
+ span.addEvent(...args);
328
+ } catch {
329
+ }
330
+ }
331
+ };
332
+ onResult(capturingSpan, result);
333
+ } catch {
334
+ }
335
+ }
336
+ try {
337
+ const endHr = process.hrtime();
338
+ const ctx = span.spanContext?.() || {};
339
+ const parentCtx = span.parentSpanContext || span._parentSpanContext;
340
+ emitNdjsonFullSpan({
341
+ name,
342
+ traceId: ctx.traceId,
343
+ spanId: ctx.spanId,
344
+ parentSpanId: parentCtx?.spanId,
345
+ startTime: [startHr[0], startHr[1]],
346
+ endTime: [endHr[0], endHr[1]],
347
+ attributes: { ...flattenAttrs(attrs), ...flattenAttrs(extraAttrs) },
348
+ events: [],
349
+ status: { code: 1 }
350
+ });
351
+ } catch {
352
+ }
353
+ return result;
354
+ });
355
+ },
298
356
  recordEvent: (name, attrs) => {
299
357
  emitEvent(name, attrs);
300
358
  if (fallback && typeof fallback.recordEvent === "function") {
@@ -398,10 +456,19 @@ function createProbeTracerAdapter(fallbackTracer) {
398
456
  }
399
457
  if (!span && fallbackSpan) return fallbackSpan;
400
458
  if (!span) return null;
459
+ const accumulated = {
460
+ "delegation.session_id": sessionId,
461
+ "delegation.task": task
462
+ };
463
+ const delegStartHr = process.hrtime();
464
+ let delegStatus = 1;
401
465
  return {
402
466
  setAttributes: (attrs) => {
403
467
  try {
404
- if (attrs) span.setAttributes(attrs);
468
+ if (attrs) {
469
+ Object.assign(accumulated, attrs);
470
+ span.setAttributes(attrs);
471
+ }
405
472
  } catch {
406
473
  }
407
474
  if (fallbackSpan && typeof fallbackSpan.setAttributes === "function") {
@@ -413,6 +480,8 @@ function createProbeTracerAdapter(fallbackTracer) {
413
480
  },
414
481
  setStatus: (status) => {
415
482
  try {
483
+ const code = status?.code;
484
+ if (code === 2) delegStatus = 2;
416
485
  span.setStatus(status);
417
486
  } catch {
418
487
  }
@@ -434,6 +503,23 @@ function createProbeTracerAdapter(fallbackTracer) {
434
503
  } catch {
435
504
  }
436
505
  }
506
+ try {
507
+ const delegEndHr = process.hrtime();
508
+ const ctx = span.spanContext?.() || {};
509
+ emitNdjsonFullSpan({
510
+ name: "probe.delegation",
511
+ traceId: ctx.traceId,
512
+ spanId: ctx.spanId,
513
+ parentSpanId: void 0,
514
+ // delegation spans are roots within probe
515
+ startTime: [delegStartHr[0], delegStartHr[1]],
516
+ endTime: [delegEndHr[0], delegEndHr[1]],
517
+ attributes: flattenAttrs(accumulated) || {},
518
+ events: [],
519
+ status: { code: delegStatus }
520
+ });
521
+ } catch {
522
+ }
437
523
  }
438
524
  };
439
525
  },
@@ -481,6 +567,7 @@ var init_ai_review_service = __esm({
481
567
  init_logger();
482
568
  init_lazy_otel();
483
569
  init_trace_helpers();
570
+ init_fallback_ndjson();
484
571
  init_tracer_init();
485
572
  init_diff_processor();
486
573
  init_comment_metadata();
@@ -1817,6 +1904,15 @@ ${"=".repeat(60)}
1817
1904
  if (!systemPrompt && schema !== "code-review" && !this.config.promptType) {
1818
1905
  systemPrompt = "You are general assistant, follow user instructions.";
1819
1906
  }
1907
+ if (systemPrompt && (this.config.aiTimeout || this.config.timeoutBehavior)) {
1908
+ systemPrompt += `
1909
+
1910
+ IMPORTANT \u2014 Time-limit behavior:
1911
+ If you receive a message that the time limit has been reached or your operation is being interrupted, this means YOUR ALLOCATED TIME BUDGET for this task has been exhausted. The system is NOT shutting down or going offline.
1912
+ - Frame it as: "I ran out of the allocated time for this task."
1913
+ - NEVER say "the system is shutting down", "try again when the system is back online", or similar misleading language.
1914
+ - Summarize what you accomplished, what you didn't finish, and any actionable recommendations the user can follow up on.`;
1915
+ }
1820
1916
  log(
1821
1917
  `\u{1F527} AIReviewService config: allowEdit=${this.config.allowEdit}, allowBash=${this.config.allowBash}, promptType=${this.config.promptType}`
1822
1918
  );
@@ -4295,7 +4391,7 @@ async function executeWorkflowAsTool(workflowId, args, context2, argsOverrides)
4295
4391
  ...args,
4296
4392
  ...argsOverrides
4297
4393
  };
4298
- const { WorkflowCheckProvider: WorkflowCheckProvider2 } = await import("./workflow-check-provider-VKYGI5GK.mjs");
4394
+ const { WorkflowCheckProvider: WorkflowCheckProvider2 } = await import("./workflow-check-provider-YXALZNAQ.mjs");
4299
4395
  const provider = new WorkflowCheckProvider2();
4300
4396
  const checkConfig = {
4301
4397
  type: "workflow",
@@ -10890,7 +10986,7 @@ async function executeCheckWithForEachItems2(checkId, forEachParent, forEachItem
10890
10986
  }
10891
10987
  }
10892
10988
  try {
10893
- const { evaluateTransitions } = await import("./routing-XALEDC2G.mjs");
10989
+ const { evaluateTransitions } = await import("./routing-JMZ7HDCC.mjs");
10894
10990
  const transTarget = await evaluateTransitions(
10895
10991
  onFinish.transitions,
10896
10992
  forEachParent,
@@ -10950,7 +11046,7 @@ async function executeCheckWithForEachItems2(checkId, forEachParent, forEachItem
10950
11046
  `[LevelDispatch] Error evaluating on_finish transitions for ${forEachParent}: ${e instanceof Error ? e.message : String(e)}`
10951
11047
  );
10952
11048
  }
10953
- const { evaluateGoto: evaluateGoto2 } = await import("./routing-XALEDC2G.mjs");
11049
+ const { evaluateGoto: evaluateGoto2 } = await import("./routing-JMZ7HDCC.mjs");
10954
11050
  if (context2.debug) {
10955
11051
  logger.info(
10956
11052
  `[LevelDispatch] Evaluating on_finish.goto_js for forEach parent: ${forEachParent}`
@@ -14041,7 +14137,7 @@ var init_state_machine_execution_engine = __esm({
14041
14137
  try {
14042
14138
  const map = options?.webhookContext?.webhookData;
14043
14139
  if (map) {
14044
- const { CheckProviderRegistry: CheckProviderRegistry2 } = await import("./check-provider-registry-RRWCXSTG.mjs");
14140
+ const { CheckProviderRegistry: CheckProviderRegistry2 } = await import("./check-provider-registry-YRADEEQY.mjs");
14045
14141
  const reg = CheckProviderRegistry2.getInstance();
14046
14142
  const p = reg.getProvider("http_input");
14047
14143
  if (p && typeof p.setWebhookContext === "function") p.setWebhookContext(map);
@@ -14154,7 +14250,7 @@ var init_state_machine_execution_engine = __esm({
14154
14250
  logger.info("[StateMachine] Using state machine engine");
14155
14251
  }
14156
14252
  if (!config) {
14157
- const { ConfigManager } = await import("./config-2STD74CJ.mjs");
14253
+ const { ConfigManager } = await import("./config-JE4HKTWW.mjs");
14158
14254
  const configManager = new ConfigManager();
14159
14255
  config = await configManager.getDefaultConfig();
14160
14256
  logger.debug("[StateMachine] Using default configuration (no config provided)");
@@ -14164,7 +14260,7 @@ var init_state_machine_execution_engine = __esm({
14164
14260
  tag_filter: tagFilter
14165
14261
  } : config;
14166
14262
  try {
14167
- const { CheckProviderRegistry: CheckProviderRegistry2 } = await import("./check-provider-registry-RRWCXSTG.mjs");
14263
+ const { CheckProviderRegistry: CheckProviderRegistry2 } = await import("./check-provider-registry-YRADEEQY.mjs");
14168
14264
  const registry = CheckProviderRegistry2.getInstance();
14169
14265
  registry.setCustomTools(configWithTagFilter.tools || {});
14170
14266
  } catch (error) {
@@ -14228,7 +14324,7 @@ var init_state_machine_execution_engine = __esm({
14228
14324
  try {
14229
14325
  const webhookData = this.executionContext?.webhookContext?.webhookData;
14230
14326
  if (webhookData instanceof Map) {
14231
- const { extractSlackContext: extractSlackContext2 } = await import("./schedule-tool-handler-J4NUETJ6.mjs");
14327
+ const { extractSlackContext: extractSlackContext2 } = await import("./schedule-tool-handler-KLHE2SOW.mjs");
14232
14328
  const slackCtx = extractSlackContext2(webhookData);
14233
14329
  if (slackCtx) {
14234
14330
  const payload = Array.from(webhookData.values())[0];
@@ -14257,7 +14353,7 @@ var init_state_machine_execution_engine = __esm({
14257
14353
  if (Array.isArray(configWithTagFilter.frontends) && configWithTagFilter.frontends.length > 0) {
14258
14354
  try {
14259
14355
  const { EventBus } = await import("./event-bus-5K3Y2FCS.mjs");
14260
- const { FrontendsHost } = await import("./host-X5ZZCEWN.mjs");
14356
+ const { FrontendsHost } = await import("./host-T4LNVU2H.mjs");
14261
14357
  const bus = new EventBus();
14262
14358
  context2.eventBus = bus;
14263
14359
  frontendsHost = new FrontendsHost(bus, logger);
@@ -14609,9 +14705,9 @@ var init_state_machine_execution_engine = __esm({
14609
14705
  * @returns Array of failure condition evaluation results
14610
14706
  */
14611
14707
  async evaluateFailureConditions(checkName, reviewSummary, config, previousOutputs, authorAssociation) {
14612
- const { FailureConditionEvaluator: FailureConditionEvaluator2 } = await import("./failure-condition-evaluator-FFWJRAEQ.mjs");
14708
+ const { FailureConditionEvaluator: FailureConditionEvaluator2 } = await import("./failure-condition-evaluator-H3PBFBYT.mjs");
14613
14709
  const evaluator = new FailureConditionEvaluator2();
14614
- const { addEvent: addEvent3 } = await import("./trace-helpers-3FFAI7X3.mjs");
14710
+ const { addEvent: addEvent3 } = await import("./trace-helpers-XV5GAX5L.mjs");
14615
14711
  const { addFailIfTriggered } = await import("./metrics-JTOG2HNO.mjs");
14616
14712
  const checkConfig = config.checks?.[checkName];
14617
14713
  if (!checkConfig) {
@@ -15447,7 +15543,7 @@ var init_scheduler = __esm({
15447
15543
  inputs: schedule.workflowInputs
15448
15544
  });
15449
15545
  if (this.taskStore) {
15450
- const { trackExecution } = await import("./track-execution-AMQQNXKE.mjs");
15546
+ const { trackExecution } = await import("./track-execution-66RLL6QT.mjs");
15451
15547
  await trackExecution(
15452
15548
  {
15453
15549
  taskStore: this.taskStore,
@@ -15576,7 +15672,7 @@ Please provide an updated response based on the reminder above. You may referenc
15576
15672
  debug: process.env.VISOR_DEBUG === "true"
15577
15673
  });
15578
15674
  if (this.taskStore) {
15579
- const { trackExecution } = await import("./track-execution-AMQQNXKE.mjs");
15675
+ const { trackExecution } = await import("./track-execution-66RLL6QT.mjs");
15580
15676
  await trackExecution(
15581
15677
  {
15582
15678
  taskStore: this.taskStore,
@@ -15846,6 +15942,13 @@ async function handleScheduleAction(args, context2) {
15846
15942
  }
15847
15943
  }
15848
15944
  async function handleCreate(args, context2, store) {
15945
+ if (context2.executionSource === "scheduler") {
15946
+ return {
15947
+ success: false,
15948
+ message: "Scheduled runs cannot create new schedules",
15949
+ error: "Creating schedules from a scheduler-triggered execution is not allowed to prevent recursive scheduling."
15950
+ };
15951
+ }
15849
15952
  if (!args.reminder_text && !args.workflow) {
15850
15953
  return {
15851
15954
  success: false,
@@ -16095,6 +16198,13 @@ function formatTrigger(trigger) {
16095
16198
  return `\`${trigger.id.substring(0, 8)}\` - channels: ${channels} \u2192 workflow: "${trigger.workflow}"${filterStr}${status}`;
16096
16199
  }
16097
16200
  async function handleCreateTrigger(args, context2, store) {
16201
+ if (context2.executionSource === "scheduler") {
16202
+ return {
16203
+ success: false,
16204
+ message: "Scheduled runs cannot create new triggers",
16205
+ error: "Creating message triggers from a scheduler-triggered execution is not allowed to prevent recursive scheduling."
16206
+ };
16207
+ }
16098
16208
  const workflow = args.workflow || "default";
16099
16209
  if (context2.availableWorkflows && !context2.availableWorkflows.includes(workflow)) {
16100
16210
  return {
@@ -16532,6 +16642,7 @@ function slackChannelTypeToScheduleType(channelType) {
16532
16642
  }
16533
16643
  }
16534
16644
  function buildScheduleToolContext(sources, availableWorkflows, permissions, outputInfo) {
16645
+ const executionSource = sources.schedulerContext ? "scheduler" : "user";
16535
16646
  if (sources.slackContext) {
16536
16647
  const contextType = `slack:${sources.slackContext.userId}`;
16537
16648
  const scheduleType = determineScheduleType(
@@ -16555,7 +16666,8 @@ function buildScheduleToolContext(sources, availableWorkflows, permissions, outp
16555
16666
  availableWorkflows,
16556
16667
  scheduleType: finalScheduleType,
16557
16668
  permissions,
16558
- allowedScheduleType
16669
+ allowedScheduleType,
16670
+ executionSource
16559
16671
  };
16560
16672
  }
16561
16673
  if (sources.githubContext) {
@@ -16567,8 +16679,9 @@ function buildScheduleToolContext(sources, availableWorkflows, permissions, outp
16567
16679
  availableWorkflows,
16568
16680
  scheduleType: "personal",
16569
16681
  permissions,
16570
- allowedScheduleType: "personal"
16682
+ allowedScheduleType: "personal",
16571
16683
  // GitHub context only allows personal schedules
16684
+ executionSource
16572
16685
  };
16573
16686
  }
16574
16687
  return {
@@ -16578,8 +16691,9 @@ function buildScheduleToolContext(sources, availableWorkflows, permissions, outp
16578
16691
  availableWorkflows,
16579
16692
  scheduleType: "personal",
16580
16693
  permissions,
16581
- allowedScheduleType: "personal"
16694
+ allowedScheduleType: "personal",
16582
16695
  // CLI context only allows personal schedules
16696
+ executionSource
16583
16697
  };
16584
16698
  }
16585
16699
  var init_schedule_tool = __esm({
@@ -16795,6 +16909,7 @@ var init_mcp_custom_sse_server = __esm({
16795
16909
  workflowContext;
16796
16910
  keepaliveInterval = null;
16797
16911
  activeToolCalls = 0;
16912
+ inFlightToolCalls = /* @__PURE__ */ new Set();
16798
16913
  lastActivityAt = Date.now();
16799
16914
  gracefulStopRequested = false;
16800
16915
  static KEEPALIVE_INTERVAL_MS = 3e4;
@@ -16925,6 +17040,53 @@ var init_mcp_custom_sse_server = __esm({
16925
17040
  this.keepaliveInterval = null;
16926
17041
  }
16927
17042
  }
17043
+ beginToolCall(toolName, workspace) {
17044
+ if (workspace) {
17045
+ workspace.acquire();
17046
+ }
17047
+ const toolCall = {
17048
+ toolName,
17049
+ startedAt: Date.now(),
17050
+ workspace,
17051
+ counted: true,
17052
+ released: false
17053
+ };
17054
+ this.inFlightToolCalls.add(toolCall);
17055
+ this.activeToolCalls++;
17056
+ this.lastActivityAt = Date.now();
17057
+ return toolCall;
17058
+ }
17059
+ finalizeToolCall(toolCall, reason) {
17060
+ if (toolCall.counted) {
17061
+ this.activeToolCalls = Math.max(0, this.activeToolCalls - 1);
17062
+ toolCall.counted = false;
17063
+ }
17064
+ if (toolCall.workspace && !toolCall.released) {
17065
+ toolCall.workspace.release();
17066
+ toolCall.released = true;
17067
+ }
17068
+ this.inFlightToolCalls.delete(toolCall);
17069
+ this.lastActivityAt = Date.now();
17070
+ if (reason === "forced-stop") {
17071
+ logger.warn(
17072
+ `[CustomToolsSSEServer:${this.sessionId}] Force-released stranded tool call '${toolCall.toolName}' after ${Date.now() - toolCall.startedAt}ms`
17073
+ );
17074
+ }
17075
+ }
17076
+ forceDrainToolCalls() {
17077
+ if (this.inFlightToolCalls.size === 0) {
17078
+ if (this.activeToolCalls > 0) {
17079
+ logger.warn(
17080
+ `[CustomToolsSSEServer:${this.sessionId}] Resetting active tool counter with no in-flight records (${this.activeToolCalls})`
17081
+ );
17082
+ this.activeToolCalls = 0;
17083
+ }
17084
+ return;
17085
+ }
17086
+ for (const toolCall of Array.from(this.inFlightToolCalls)) {
17087
+ this.finalizeToolCall(toolCall, "forced-stop");
17088
+ }
17089
+ }
16928
17090
  /**
16929
17091
  * Stop the server and cleanup resources
16930
17092
  */
@@ -16955,6 +17117,7 @@ var init_mcp_custom_sse_server = __esm({
16955
17117
  logger.warn(
16956
17118
  `[CustomToolsSSEServer:${this.sessionId}] Drain timeout reached; stopping with ${this.activeToolCalls} active tool call(s)`
16957
17119
  );
17120
+ this.forceDrainToolCalls();
16958
17121
  }
16959
17122
  }
16960
17123
  if (this.debug) {
@@ -17339,11 +17502,7 @@ var init_mcp_custom_sse_server = __esm({
17339
17502
  */
17340
17503
  async handleToolCall(id, toolName, args) {
17341
17504
  const workspace = this.workflowContext?.workspace;
17342
- if (workspace) {
17343
- workspace.acquire();
17344
- }
17345
- this.activeToolCalls++;
17346
- this.lastActivityAt = Date.now();
17505
+ const toolCall = this.beginToolCall(toolName, workspace);
17347
17506
  try {
17348
17507
  if (this.debug) {
17349
17508
  logger.debug(
@@ -17436,6 +17595,7 @@ var init_mcp_custom_sse_server = __esm({
17436
17595
  try {
17437
17596
  if (isScheduleTool(toolName)) {
17438
17597
  const webhookData = this.workflowContext?.executionContext?.webhookContext?.webhookData;
17598
+ const webhookEventType = this.workflowContext?.executionContext?.webhookContext?.eventType;
17439
17599
  const slackContext = webhookData ? extractSlackContext(webhookData) : null;
17440
17600
  const visorCfg = this.workflowContext?.visorConfig;
17441
17601
  const availableWorkflows = visorCfg?.checks ? Object.keys(visorCfg.checks) : void 0;
@@ -17454,6 +17614,9 @@ var init_mcp_custom_sse_server = __esm({
17454
17614
  userName: slackContext.userName,
17455
17615
  timezone: slackContext.timezone,
17456
17616
  channelType: slackContext.channelType
17617
+ } : void 0,
17618
+ schedulerContext: webhookEventType === "schedule" ? {
17619
+ scheduleId: this.workflowContext?.executionContext?.inputs?.schedule?.id
17457
17620
  } : void 0
17458
17621
  },
17459
17622
  availableWorkflows,
@@ -17630,11 +17793,7 @@ var init_mcp_custom_sse_server = __esm({
17630
17793
  }
17631
17794
  };
17632
17795
  } finally {
17633
- this.activeToolCalls = Math.max(0, this.activeToolCalls - 1);
17634
- this.lastActivityAt = Date.now();
17635
- if (workspace) {
17636
- workspace.release();
17637
- }
17796
+ this.finalizeToolCall(toolCall, "completed");
17638
17797
  }
17639
17798
  }
17640
17799
  /**
@@ -42425,10 +42584,11 @@ function buildBuiltinGlobals(opts) {
42425
42584
  const asyncFunctionNames = /* @__PURE__ */ new Set();
42426
42585
  const scheduleFn = async (args = {}) => {
42427
42586
  try {
42428
- const { handleScheduleAction: handleScheduleAction2, buildScheduleToolContext: buildScheduleToolContext2 } = await import("./schedule-tool-Z6QYL2B3.mjs");
42429
- const { extractSlackContext: extractSlackContext2 } = await import("./schedule-tool-handler-J4NUETJ6.mjs");
42587
+ const { handleScheduleAction: handleScheduleAction2, buildScheduleToolContext: buildScheduleToolContext2 } = await import("./schedule-tool-4M45RK3E.mjs");
42588
+ const { extractSlackContext: extractSlackContext2 } = await import("./schedule-tool-handler-KLHE2SOW.mjs");
42430
42589
  const parentCtx = opts.sessionInfo?._parentContext;
42431
42590
  const webhookData = parentCtx?.prInfo?.eventContext?.webhookData;
42591
+ const webhookEventType = parentCtx?.webhookContext?.eventType || parentCtx?.prInfo?.eventContext?.eventType;
42432
42592
  const visorCfg = parentCtx?.config;
42433
42593
  const slackContext = webhookData ? extractSlackContext2(webhookData) : null;
42434
42594
  const availableWorkflows = visorCfg?.checks ? Object.keys(visorCfg.checks) : void 0;
@@ -42436,7 +42596,8 @@ function buildBuiltinGlobals(opts) {
42436
42596
  const context2 = buildScheduleToolContext2(
42437
42597
  {
42438
42598
  slackContext: slackContext || void 0,
42439
- cliContext: slackContext ? void 0 : { userId: "script" }
42599
+ cliContext: slackContext ? void 0 : { userId: "script" },
42600
+ schedulerContext: webhookEventType === "schedule" ? { scheduleId: parentCtx?.inputs?.schedule?.id } : void 0
42440
42601
  },
42441
42602
  availableWorkflows,
42442
42603
  permissions
@@ -46150,4 +46311,4 @@ undici/lib/fetch/body.js:
46150
46311
  undici/lib/websocket/frame.js:
46151
46312
  (*! ws. MIT License. Einar Otto Stangvik <einaros@gmail.com> *)
46152
46313
  */
46153
- //# sourceMappingURL=chunk-6DPPP7LD.mjs.map
46314
+ //# sourceMappingURL=chunk-IDL3AA3G.mjs.map