@probelabs/visor 0.1.183-ee → 0.1.184-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 (241) hide show
  1. package/dist/agent-protocol/task-live-update-slack.d.ts +24 -0
  2. package/dist/agent-protocol/task-live-update-slack.d.ts.map +1 -0
  3. package/dist/agent-protocol/task-live-update-teams.d.ts +25 -0
  4. package/dist/agent-protocol/task-live-update-teams.d.ts.map +1 -0
  5. package/dist/agent-protocol/task-live-update-telegram.d.ts +25 -0
  6. package/dist/agent-protocol/task-live-update-telegram.d.ts.map +1 -0
  7. package/dist/agent-protocol/task-live-updates.d.ts +102 -0
  8. package/dist/agent-protocol/task-live-updates.d.ts.map +1 -0
  9. package/dist/agent-protocol/task-progress-tool.d.ts.map +1 -1
  10. package/dist/agent-protocol/task-trace-resolution.d.ts +11 -0
  11. package/dist/agent-protocol/task-trace-resolution.d.ts.map +1 -0
  12. package/dist/agent-protocol/trace-serializer.d.ts.map +1 -1
  13. package/dist/agent-protocol/track-execution.d.ts +8 -0
  14. package/dist/agent-protocol/track-execution.d.ts.map +1 -1
  15. package/dist/cli-main.d.ts.map +1 -1
  16. package/dist/cli.d.ts.map +1 -1
  17. package/dist/config.d.ts.map +1 -1
  18. package/dist/frontends/slack-frontend.d.ts +2 -0
  19. package/dist/frontends/slack-frontend.d.ts.map +1 -1
  20. package/dist/frontends/teams-frontend.d.ts.map +1 -1
  21. package/dist/frontends/telegram-frontend.d.ts.map +1 -1
  22. package/dist/generated/config-schema.d.ts +110 -6
  23. package/dist/generated/config-schema.d.ts.map +1 -1
  24. package/dist/index.js +2239 -261
  25. package/dist/logger.d.ts +4 -1
  26. package/dist/logger.d.ts.map +1 -1
  27. package/dist/mcp-job-manager.d.ts +70 -0
  28. package/dist/mcp-job-manager.d.ts.map +1 -0
  29. package/dist/mcp-server.d.ts +6 -0
  30. package/dist/mcp-server.d.ts.map +1 -1
  31. package/dist/runners/mcp-server-runner.d.ts +4 -0
  32. package/dist/runners/mcp-server-runner.d.ts.map +1 -1
  33. package/dist/runners/runner-factory.d.ts.map +1 -1
  34. package/dist/sdk/{a2a-frontend-5YDHFQXD.mjs → a2a-frontend-OI4OVSKC.mjs} +4 -4
  35. package/dist/sdk/check-provider-registry-RITJW67U.mjs +32 -0
  36. package/dist/sdk/check-provider-registry-ZZ6N4GDP.mjs +32 -0
  37. package/dist/sdk/{chunk-4BN2XI4X.mjs → chunk-4HIWZA6M.mjs} +2 -2
  38. package/dist/sdk/{chunk-RI4ONH5X.mjs → chunk-4MHHELVZ.mjs} +2 -2
  39. package/dist/sdk/{chunk-J27D43HS.mjs → chunk-4ZLYHSN4.mjs} +2 -2
  40. package/dist/sdk/{chunk-ZPYODGYA.mjs → chunk-6E625R3C.mjs} +19 -4
  41. package/dist/sdk/chunk-6E625R3C.mjs.map +1 -0
  42. package/dist/sdk/{chunk-GA2TYKSR.mjs → chunk-7XKHFRPN.mjs} +4 -4
  43. package/dist/sdk/{chunk-6C3R6E42.mjs → chunk-IY5PQ5EN.mjs} +30 -6
  44. package/dist/sdk/chunk-IY5PQ5EN.mjs.map +1 -0
  45. package/dist/sdk/{chunk-MFXPJUUE.mjs → chunk-PUHU6UY6.mjs} +4 -3
  46. package/dist/sdk/chunk-PUHU6UY6.mjs.map +1 -0
  47. package/dist/sdk/{chunk-XOAEKFKB.mjs → chunk-QLT42TX7.mjs} +2 -2
  48. package/dist/sdk/chunk-SRU5TFNY.mjs +620 -0
  49. package/dist/sdk/chunk-SRU5TFNY.mjs.map +1 -0
  50. package/dist/sdk/{chunk-P2K4VOMU.mjs → chunk-TSX3YS3F.mjs} +3 -3
  51. package/dist/sdk/{chunk-WKLJ57WF.mjs → chunk-UM7LGO2P.mjs} +6 -6
  52. package/dist/sdk/{chunk-7VTZDC2X.mjs → chunk-VPPBOKBQ.mjs} +2 -2
  53. package/dist/sdk/chunk-WZQMTD7W.mjs +33 -0
  54. package/dist/sdk/chunk-WZQMTD7W.mjs.map +1 -0
  55. package/dist/sdk/{chunk-ZOF5QT6U.mjs → chunk-YBXNG75V.mjs} +118 -10
  56. package/dist/sdk/chunk-YBXNG75V.mjs.map +1 -0
  57. package/dist/sdk/{chunk-UXB4XWEE.mjs → chunk-YYFSAAD6.mjs} +53 -51
  58. package/dist/sdk/chunk-YYFSAAD6.mjs.map +1 -0
  59. package/dist/sdk/{chunk-RHKPFJLG.mjs → chunk-ZNKL6ESZ.mjs} +2 -2
  60. package/dist/sdk/{chunk-IDL3AA3G.mjs → chunk-ZYDRR6PZ.mjs} +1150 -403
  61. package/dist/sdk/chunk-ZYDRR6PZ.mjs.map +1 -0
  62. package/dist/sdk/{command-executor-YNJOS77A.mjs → command-executor-LHUW77GR.mjs} +3 -3
  63. package/dist/sdk/{config-PCP6O6Y6.mjs → config-TVU5RWR5.mjs} +3 -3
  64. package/dist/sdk/{dist-3UGGEZB3.mjs → dist-PN5UHL6A.mjs} +429 -429
  65. package/dist/sdk/dist-PN5UHL6A.mjs.map +1 -0
  66. package/dist/sdk/{email-frontend-WSNADJPI.mjs → email-frontend-ECHQCFTR.mjs} +2 -2
  67. package/dist/sdk/{failure-condition-evaluator-IRFKTYZD.mjs → failure-condition-evaluator-USY3ISVA.mjs} +6 -6
  68. package/dist/sdk/{github-auth-BJQBLK2V.mjs → github-auth-UO4DMNCC.mjs} +2 -2
  69. package/dist/sdk/{github-frontend-DECYOBRN.mjs → github-frontend-2T5PWYD5.mjs} +6 -6
  70. package/dist/sdk/{host-CFM2ASDI.mjs → host-OJSMCLKK.mjs} +6 -6
  71. package/dist/sdk/{host-T4LNVU2H.mjs → host-RM6UJEPP.mjs} +7 -7
  72. package/dist/sdk/{knex-store-OEWSZEBY.mjs → knex-store-KCMFAMH5.mjs} +2 -2
  73. package/dist/sdk/{liquid-extensions-E3AKRX7P.mjs → liquid-extensions-KZIRR4OY.mjs} +4 -4
  74. package/dist/sdk/{loader-WRGI244P.mjs → loader-35YWX5UQ.mjs} +4 -4
  75. package/dist/sdk/{memory-store-OHUIXCWJ.mjs → memory-store-3JONK7AF.mjs} +3 -3
  76. package/dist/sdk/{opa-policy-engine-IVMCGVNA.mjs → opa-policy-engine-FY5D45YS.mjs} +2 -2
  77. package/dist/sdk/{prompt-state-LN57DQF3.mjs → prompt-state-VVJMONT3.mjs} +3 -3
  78. package/dist/sdk/{renderer-schema-BT2IXMLW.mjs → renderer-schema-JZRRU5CW.mjs} +2 -2
  79. package/dist/sdk/{routing-H2PQ57OA.mjs → routing-NNQQSLWA.mjs} +8 -8
  80. package/dist/sdk/{schedule-tool-2DPNSU63.mjs → schedule-tool-ADZ2ON4I.mjs} +15 -14
  81. package/dist/sdk/schedule-tool-EMNF3FPQ.mjs +38 -0
  82. package/dist/sdk/{schedule-tool-handler-NBEO46RV.mjs → schedule-tool-handler-3R3IC6VA.mjs} +15 -14
  83. package/dist/sdk/{schedule-tool-handler-KLHE2SOW.mjs → schedule-tool-handler-F76ZD2WU.mjs} +17 -16
  84. package/dist/sdk/sdk.d.mts +40 -0
  85. package/dist/sdk/sdk.d.ts +40 -0
  86. package/dist/sdk/sdk.js +1154 -176
  87. package/dist/sdk/sdk.js.map +1 -1
  88. package/dist/sdk/sdk.mjs +14 -13
  89. package/dist/sdk/sdk.mjs.map +1 -1
  90. package/dist/sdk/{slack-frontend-DF5VL4OF.mjs → slack-frontend-K3TPGERM.mjs} +65 -9
  91. package/dist/sdk/slack-frontend-K3TPGERM.mjs.map +1 -0
  92. package/dist/sdk/{task-evaluator-OVMG7S56.mjs → task-evaluator-H3BXC7SE.mjs} +3 -3
  93. package/dist/sdk/{teams-frontend-DNW5GZP3.mjs → teams-frontend-6RRW533K.mjs} +54 -1
  94. package/dist/sdk/teams-frontend-6RRW533K.mjs.map +1 -0
  95. package/dist/sdk/{telegram-frontend-GA7OLADB.mjs → telegram-frontend-5UA77YAT.mjs} +48 -1
  96. package/dist/sdk/telegram-frontend-5UA77YAT.mjs.map +1 -0
  97. package/dist/sdk/{trace-helpers-26ZCAE2V.mjs → trace-helpers-OMF4C24T.mjs} +3 -3
  98. package/dist/sdk/{trace-serializer-KKBJHM7J.mjs → trace-serializer-EBHTHZYT.mjs} +3 -3
  99. package/dist/sdk/track-execution-3CHMGEPH.mjs +249 -0
  100. package/dist/sdk/track-execution-3CHMGEPH.mjs.map +1 -0
  101. package/dist/sdk/{utcp-check-provider-WI3QZ3W6.mjs → utcp-check-provider-Q4PD5EP2.mjs} +5 -5
  102. package/dist/sdk/workflow-check-provider-TC2G33WF.mjs +32 -0
  103. package/dist/sdk/workflow-check-provider-U4UXZ5YS.mjs +32 -0
  104. package/dist/sdk/{workflow-registry-YCZ3FCJC.mjs → workflow-registry-K56UTX36.mjs} +3 -3
  105. package/dist/slack/client.d.ts +14 -0
  106. package/dist/slack/client.d.ts.map +1 -1
  107. package/dist/slack/socket-runner.d.ts.map +1 -1
  108. package/dist/teams/client.d.ts +16 -0
  109. package/dist/teams/client.d.ts.map +1 -1
  110. package/dist/teams/webhook-runner.d.ts.map +1 -1
  111. package/dist/telegram/client.d.ts +17 -0
  112. package/dist/telegram/client.d.ts.map +1 -1
  113. package/dist/telegram/polling-runner.d.ts.map +1 -1
  114. package/dist/types/cli.d.ts +2 -0
  115. package/dist/types/cli.d.ts.map +1 -1
  116. package/dist/types/config.d.ts +40 -0
  117. package/dist/types/config.d.ts.map +1 -1
  118. package/package.json +4 -3
  119. package/dist/generated/config-schema.json +0 -4027
  120. package/dist/sdk/a2a-frontend-6LWBIPMS.mjs +0 -1734
  121. package/dist/sdk/a2a-frontend-6LWBIPMS.mjs.map +0 -1
  122. package/dist/sdk/check-provider-registry-WSEVHJEV.mjs +0 -31
  123. package/dist/sdk/check-provider-registry-YRADEEQY.mjs +0 -31
  124. package/dist/sdk/chunk-34QX63WK.mjs +0 -244
  125. package/dist/sdk/chunk-34QX63WK.mjs.map +0 -1
  126. package/dist/sdk/chunk-54KOAC4W.mjs +0 -665
  127. package/dist/sdk/chunk-6C3R6E42.mjs.map +0 -1
  128. package/dist/sdk/chunk-7W5QCO4Y.mjs +0 -5943
  129. package/dist/sdk/chunk-7W5QCO4Y.mjs.map +0 -1
  130. package/dist/sdk/chunk-7XRSCOKE.mjs +0 -825
  131. package/dist/sdk/chunk-FT3I25QV.mjs +0 -251
  132. package/dist/sdk/chunk-FT3I25QV.mjs.map +0 -1
  133. package/dist/sdk/chunk-G7GSN3SK.mjs +0 -390
  134. package/dist/sdk/chunk-G7GSN3SK.mjs.map +0 -1
  135. package/dist/sdk/chunk-IDL3AA3G.mjs.map +0 -1
  136. package/dist/sdk/chunk-J27D43HS.mjs.map +0 -1
  137. package/dist/sdk/chunk-MEB2TTIE.mjs +0 -157
  138. package/dist/sdk/chunk-MEB2TTIE.mjs.map +0 -1
  139. package/dist/sdk/chunk-MFXPJUUE.mjs.map +0 -1
  140. package/dist/sdk/chunk-NPSLGKXB.mjs +0 -1502
  141. package/dist/sdk/chunk-P2K4VOMU.mjs.map +0 -1
  142. package/dist/sdk/chunk-PQWZ6NFL.mjs +0 -459
  143. package/dist/sdk/chunk-PQWZ6NFL.mjs.map +0 -1
  144. package/dist/sdk/chunk-S5FSRHMY.mjs +0 -139
  145. package/dist/sdk/chunk-S5FSRHMY.mjs.map +0 -1
  146. package/dist/sdk/chunk-TFUQ2D5L.mjs +0 -307
  147. package/dist/sdk/chunk-TFUQ2D5L.mjs.map +0 -1
  148. package/dist/sdk/chunk-UCMJJ3IM.mjs +0 -227
  149. package/dist/sdk/chunk-UCMJJ3IM.mjs.map +0 -1
  150. package/dist/sdk/chunk-UFHOIB3R.mjs +0 -482
  151. package/dist/sdk/chunk-UFHOIB3R.mjs.map +0 -1
  152. package/dist/sdk/chunk-UXB4XWEE.mjs.map +0 -1
  153. package/dist/sdk/chunk-V45TITKX.mjs +0 -739
  154. package/dist/sdk/chunk-V45TITKX.mjs.map +0 -1
  155. package/dist/sdk/chunk-WKLJ57WF.mjs.map +0 -1
  156. package/dist/sdk/chunk-ZOF5QT6U.mjs.map +0 -1
  157. package/dist/sdk/chunk-ZPYODGYA.mjs.map +0 -1
  158. package/dist/sdk/command-executor-3AHGIYQG.mjs +0 -14
  159. package/dist/sdk/config-JE4HKTWW.mjs +0 -16
  160. package/dist/sdk/dist-3UGGEZB3.mjs.map +0 -1
  161. package/dist/sdk/failure-condition-evaluator-H3PBFBYT.mjs +0 -18
  162. package/dist/sdk/github-auth-27SZGPEC.mjs +0 -196
  163. package/dist/sdk/github-auth-BJQBLK2V.mjs.map +0 -1
  164. package/dist/sdk/github-frontend-TZRBOQCN.mjs +0 -1394
  165. package/dist/sdk/github-frontend-TZRBOQCN.mjs.map +0 -1
  166. package/dist/sdk/lazy-otel-5NH4ZJJM.mjs +0 -24
  167. package/dist/sdk/liquid-extensions-P6KDYILF.mjs +0 -25
  168. package/dist/sdk/memory-store-K5N7MC7U.mjs +0 -12
  169. package/dist/sdk/metrics-JTOG2HNO.mjs +0 -41
  170. package/dist/sdk/prompt-state-YPICX7PI.mjs +0 -16
  171. package/dist/sdk/renderer-schema-KOIH75RZ.mjs +0 -51
  172. package/dist/sdk/renderer-schema-KOIH75RZ.mjs.map +0 -1
  173. package/dist/sdk/routing-JMZ7HDCC.mjs +0 -26
  174. package/dist/sdk/schedule-tool-4M45RK3E.mjs +0 -37
  175. package/dist/sdk/schedule-tool-4M45RK3E.mjs.map +0 -1
  176. package/dist/sdk/schedule-tool-handler-KLHE2SOW.mjs.map +0 -1
  177. package/dist/sdk/schedule-tool-handler-NBEO46RV.mjs.map +0 -1
  178. package/dist/sdk/slack-frontend-BPWXNIHE.mjs +0 -929
  179. package/dist/sdk/slack-frontend-BPWXNIHE.mjs.map +0 -1
  180. package/dist/sdk/slack-frontend-DF5VL4OF.mjs.map +0 -1
  181. package/dist/sdk/task-evaluator-GQYDOSGT.mjs +0 -1392
  182. package/dist/sdk/task-evaluator-GQYDOSGT.mjs.map +0 -1
  183. package/dist/sdk/teams-frontend-DNW5GZP3.mjs.map +0 -1
  184. package/dist/sdk/telegram-frontend-GA7OLADB.mjs.map +0 -1
  185. package/dist/sdk/trace-helpers-26ZCAE2V.mjs.map +0 -1
  186. package/dist/sdk/trace-helpers-XV5GAX5L.mjs +0 -29
  187. package/dist/sdk/trace-helpers-XV5GAX5L.mjs.map +0 -1
  188. package/dist/sdk/trace-serializer-KKBJHM7J.mjs.map +0 -1
  189. package/dist/sdk/track-execution-3EC24C2X.mjs +0 -163
  190. package/dist/sdk/track-execution-3EC24C2X.mjs.map +0 -1
  191. package/dist/sdk/track-execution-66RLL6QT.mjs +0 -143
  192. package/dist/sdk/track-execution-66RLL6QT.mjs.map +0 -1
  193. package/dist/sdk/utcp-check-provider-JLIYF5HH.mjs +0 -16
  194. package/dist/sdk/utcp-check-provider-JLIYF5HH.mjs.map +0 -1
  195. package/dist/sdk/utcp-check-provider-WI3QZ3W6.mjs.map +0 -1
  196. package/dist/sdk/workflow-check-provider-X2UREEH7.mjs +0 -31
  197. package/dist/sdk/workflow-check-provider-X2UREEH7.mjs.map +0 -1
  198. package/dist/sdk/workflow-check-provider-YXALZNAQ.mjs +0 -31
  199. package/dist/sdk/workflow-check-provider-YXALZNAQ.mjs.map +0 -1
  200. package/dist/sdk/workflow-registry-X2IPY35M.mjs +0 -12
  201. package/dist/sdk/workflow-registry-X2IPY35M.mjs.map +0 -1
  202. package/dist/sdk/workflow-registry-YCZ3FCJC.mjs.map +0 -1
  203. /package/dist/sdk/{a2a-frontend-5YDHFQXD.mjs.map → a2a-frontend-OI4OVSKC.mjs.map} +0 -0
  204. /package/dist/sdk/{check-provider-registry-WSEVHJEV.mjs.map → check-provider-registry-RITJW67U.mjs.map} +0 -0
  205. /package/dist/sdk/{check-provider-registry-YRADEEQY.mjs.map → check-provider-registry-ZZ6N4GDP.mjs.map} +0 -0
  206. /package/dist/sdk/{chunk-4BN2XI4X.mjs.map → chunk-4HIWZA6M.mjs.map} +0 -0
  207. /package/dist/sdk/{chunk-RI4ONH5X.mjs.map → chunk-4MHHELVZ.mjs.map} +0 -0
  208. /package/dist/sdk/{chunk-54KOAC4W.mjs.map → chunk-4ZLYHSN4.mjs.map} +0 -0
  209. /package/dist/sdk/{chunk-GA2TYKSR.mjs.map → chunk-7XKHFRPN.mjs.map} +0 -0
  210. /package/dist/sdk/{chunk-XOAEKFKB.mjs.map → chunk-QLT42TX7.mjs.map} +0 -0
  211. /package/dist/sdk/{chunk-7XRSCOKE.mjs.map → chunk-TSX3YS3F.mjs.map} +0 -0
  212. /package/dist/sdk/{chunk-NPSLGKXB.mjs.map → chunk-UM7LGO2P.mjs.map} +0 -0
  213. /package/dist/sdk/{chunk-7VTZDC2X.mjs.map → chunk-VPPBOKBQ.mjs.map} +0 -0
  214. /package/dist/sdk/{chunk-RHKPFJLG.mjs.map → chunk-ZNKL6ESZ.mjs.map} +0 -0
  215. /package/dist/sdk/{command-executor-3AHGIYQG.mjs.map → command-executor-LHUW77GR.mjs.map} +0 -0
  216. /package/dist/sdk/{command-executor-YNJOS77A.mjs.map → config-TVU5RWR5.mjs.map} +0 -0
  217. /package/dist/sdk/{email-frontend-WSNADJPI.mjs.map → email-frontend-ECHQCFTR.mjs.map} +0 -0
  218. /package/dist/sdk/{config-JE4HKTWW.mjs.map → failure-condition-evaluator-USY3ISVA.mjs.map} +0 -0
  219. /package/dist/sdk/{github-auth-27SZGPEC.mjs.map → github-auth-UO4DMNCC.mjs.map} +0 -0
  220. /package/dist/sdk/{github-frontend-DECYOBRN.mjs.map → github-frontend-2T5PWYD5.mjs.map} +0 -0
  221. /package/dist/sdk/{host-CFM2ASDI.mjs.map → host-OJSMCLKK.mjs.map} +0 -0
  222. /package/dist/sdk/{host-T4LNVU2H.mjs.map → host-RM6UJEPP.mjs.map} +0 -0
  223. /package/dist/sdk/{knex-store-OEWSZEBY.mjs.map → knex-store-KCMFAMH5.mjs.map} +0 -0
  224. /package/dist/sdk/{config-PCP6O6Y6.mjs.map → liquid-extensions-KZIRR4OY.mjs.map} +0 -0
  225. /package/dist/sdk/{loader-WRGI244P.mjs.map → loader-35YWX5UQ.mjs.map} +0 -0
  226. /package/dist/sdk/{failure-condition-evaluator-H3PBFBYT.mjs.map → memory-store-3JONK7AF.mjs.map} +0 -0
  227. /package/dist/sdk/{opa-policy-engine-IVMCGVNA.mjs.map → opa-policy-engine-FY5D45YS.mjs.map} +0 -0
  228. /package/dist/sdk/{failure-condition-evaluator-IRFKTYZD.mjs.map → prompt-state-VVJMONT3.mjs.map} +0 -0
  229. /package/dist/sdk/{renderer-schema-BT2IXMLW.mjs.map → renderer-schema-JZRRU5CW.mjs.map} +0 -0
  230. /package/dist/sdk/{lazy-otel-5NH4ZJJM.mjs.map → routing-NNQQSLWA.mjs.map} +0 -0
  231. /package/dist/sdk/{liquid-extensions-E3AKRX7P.mjs.map → schedule-tool-ADZ2ON4I.mjs.map} +0 -0
  232. /package/dist/sdk/{liquid-extensions-P6KDYILF.mjs.map → schedule-tool-EMNF3FPQ.mjs.map} +0 -0
  233. /package/dist/sdk/{memory-store-K5N7MC7U.mjs.map → schedule-tool-handler-3R3IC6VA.mjs.map} +0 -0
  234. /package/dist/sdk/{memory-store-OHUIXCWJ.mjs.map → schedule-tool-handler-F76ZD2WU.mjs.map} +0 -0
  235. /package/dist/sdk/{task-evaluator-OVMG7S56.mjs.map → task-evaluator-H3BXC7SE.mjs.map} +0 -0
  236. /package/dist/sdk/{metrics-JTOG2HNO.mjs.map → trace-helpers-OMF4C24T.mjs.map} +0 -0
  237. /package/dist/sdk/{prompt-state-LN57DQF3.mjs.map → trace-serializer-EBHTHZYT.mjs.map} +0 -0
  238. /package/dist/sdk/{prompt-state-YPICX7PI.mjs.map → utcp-check-provider-Q4PD5EP2.mjs.map} +0 -0
  239. /package/dist/sdk/{routing-H2PQ57OA.mjs.map → workflow-check-provider-TC2G33WF.mjs.map} +0 -0
  240. /package/dist/sdk/{routing-JMZ7HDCC.mjs.map → workflow-check-provider-U4UXZ5YS.mjs.map} +0 -0
  241. /package/dist/sdk/{schedule-tool-2DPNSU63.mjs.map → workflow-registry-K56UTX36.mjs.map} +0 -0
@@ -1,163 +0,0 @@
1
- import {
2
- getInstanceId,
3
- init_instance_id,
4
- require_package
5
- } from "./chunk-G7GSN3SK.mjs";
6
- import {
7
- init_logger,
8
- logger
9
- } from "./chunk-ZPYODGYA.mjs";
10
- import {
11
- init_lazy_otel,
12
- trace
13
- } from "./chunk-B2OUZAWY.mjs";
14
- import {
15
- __esm
16
- } from "./chunk-J7LXIPZS.mjs";
17
-
18
- // src/agent-protocol/track-execution.ts
19
- import crypto from "crypto";
20
- import fs from "fs";
21
- import path from "path";
22
- function getPackageVersion() {
23
- try {
24
- return require_package()?.version || "dev";
25
- } catch {
26
- return "dev";
27
- }
28
- }
29
- async function readTraceIdFromFallbackFile(traceFile) {
30
- if (!traceFile || !fs.existsSync(traceFile)) return void 0;
31
- try {
32
- const { readTraceIdFromFile } = await import("./trace-serializer-KKBJHM7J.mjs");
33
- return await readTraceIdFromFile(traceFile) || void 0;
34
- } catch {
35
- return void 0;
36
- }
37
- }
38
- async function trackExecution(opts, executor) {
39
- const { taskStore, source, configPath, metadata, messageText } = opts;
40
- const configName = configPath ? path.basename(configPath, path.extname(configPath)) : void 0;
41
- const workflowId = configName && opts.workflowId ? `${configName}#${opts.workflowId}` : opts.workflowId;
42
- const requestMessage = {
43
- message_id: crypto.randomUUID(),
44
- role: "user",
45
- parts: [{ text: messageText }]
46
- };
47
- const traceFile = process.env.VISOR_FALLBACK_TRACE_FILE || void 0;
48
- const task = taskStore.createTask({
49
- contextId: crypto.randomUUID(),
50
- requestMessage,
51
- workflowId,
52
- requestMetadata: {
53
- source,
54
- instance_id: getInstanceId(),
55
- visor_version: process.env.VISOR_VERSION || getPackageVersion(),
56
- ...process.env.VISOR_COMMIT_SHORT ? { visor_commit: process.env.VISOR_COMMIT_SHORT } : {},
57
- trace_id: trace.getActiveSpan()?.spanContext().traceId || void 0,
58
- ...traceFile ? { trace_file: traceFile } : {},
59
- ...metadata
60
- }
61
- });
62
- const instanceId = getInstanceId();
63
- taskStore.updateTaskState(task.id, "working");
64
- taskStore.claimTask(task.id, instanceId);
65
- logger.info(
66
- `[TaskTracking] Task ${task.id} started (source=${source}, workflow=${workflowId || "-"}, instance=${instanceId})`
67
- );
68
- const HEARTBEAT_INTERVAL = 6e4;
69
- const heartbeatTimer = setInterval(() => {
70
- try {
71
- taskStore.heartbeat(task.id);
72
- } catch {
73
- }
74
- }, HEARTBEAT_INTERVAL);
75
- try {
76
- const result = await executor();
77
- try {
78
- const activeTraceId = trace.getActiveSpan()?.spanContext().traceId;
79
- const persistedTraceId = (activeTraceId && activeTraceId !== "" ? activeTraceId : void 0) || await readTraceIdFromFallbackFile(traceFile);
80
- if (persistedTraceId && !task.metadata?.trace_id) {
81
- taskStore.updateMetadata(task.id, { trace_id: persistedTraceId });
82
- }
83
- } catch {
84
- }
85
- let responseText = "Execution completed";
86
- try {
87
- const history = result?.reviewSummary?.history;
88
- if (history) {
89
- const entries = Object.values(history);
90
- for (let i = entries.length - 1; i >= 0; i--) {
91
- const outputs = entries[i];
92
- if (!Array.isArray(outputs)) continue;
93
- for (let j = outputs.length - 1; j >= 0; j--) {
94
- const text = outputs[j]?.text;
95
- if (typeof text === "string" && text.trim().length > 0) {
96
- responseText = text.trim();
97
- break;
98
- }
99
- }
100
- if (responseText !== "Execution completed") break;
101
- }
102
- }
103
- } catch {
104
- }
105
- const completedMsg = {
106
- message_id: crypto.randomUUID(),
107
- role: "agent",
108
- parts: [{ text: responseText }]
109
- };
110
- try {
111
- taskStore.updateTaskState(task.id, "completed", completedMsg);
112
- logger.info(`[TaskTracking] Task ${task.id} completed`);
113
- } catch (stateErr) {
114
- logger.warn(
115
- `[TaskTracking] Task ${task.id} completed but state transition failed: ${stateErr instanceof Error ? stateErr.message : stateErr}`
116
- );
117
- }
118
- if (opts.autoEvaluate || process.env.VISOR_TASK_EVALUATE === "true") {
119
- scheduleEvaluation(task.id, taskStore);
120
- }
121
- return { task, result };
122
- } catch (err) {
123
- const errorText = err instanceof Error ? err.message : String(err);
124
- const failMessage = {
125
- message_id: crypto.randomUUID(),
126
- role: "agent",
127
- parts: [{ text: errorText }]
128
- };
129
- try {
130
- taskStore.updateTaskState(task.id, "failed", failMessage);
131
- logger.info(`[TaskTracking] Task ${task.id} failed: ${errorText}`);
132
- } catch {
133
- }
134
- throw err;
135
- } finally {
136
- clearInterval(heartbeatTimer);
137
- }
138
- }
139
- function scheduleEvaluation(taskId, taskStore) {
140
- setTimeout(async () => {
141
- try {
142
- const { evaluateAndStore } = await import("./task-evaluator-OVMG7S56.mjs");
143
- await evaluateAndStore(taskId, taskStore);
144
- logger.info(`[TaskEvaluator] Auto-evaluation completed for task ${taskId}`);
145
- } catch (err) {
146
- logger.warn(
147
- `[TaskEvaluator] Auto-evaluation failed for task ${taskId}: ${err instanceof Error ? err.message : err}`
148
- );
149
- }
150
- }, 5e3);
151
- }
152
- var init_track_execution = __esm({
153
- "src/agent-protocol/track-execution.ts"() {
154
- init_logger();
155
- init_lazy_otel();
156
- init_instance_id();
157
- }
158
- });
159
- init_track_execution();
160
- export {
161
- trackExecution
162
- };
163
- //# sourceMappingURL=track-execution-3EC24C2X.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/agent-protocol/track-execution.ts"],"sourcesContent":["/**\n * Shared execution tracking helper.\n *\n * Wraps any engine execution call with task lifecycle management:\n * creates a task in 'submitted' state, transitions to 'working',\n * runs the executor, then sets terminal state (completed/failed).\n *\n * Used by CLI, Slack, TUI, and Scheduler frontends when task_tracking is enabled.\n */\n\nimport crypto from 'crypto';\nimport fs from 'fs';\nimport path from 'path';\nimport { logger } from '../logger';\nimport { trace } from '../telemetry/lazy-otel';\nimport { getInstanceId } from '../utils/instance-id';\nimport type { TaskStore } from './task-store';\nimport type { AgentMessage, AgentTask } from './types';\n\nfunction getPackageVersion(): string {\n try {\n return require('../../package.json')?.version || 'dev';\n } catch {\n return 'dev';\n }\n}\n\nasync function readTraceIdFromFallbackFile(traceFile?: string): Promise<string | undefined> {\n if (!traceFile || !fs.existsSync(traceFile)) return undefined;\n\n try {\n const { readTraceIdFromFile } = await import('./trace-serializer');\n return (await readTraceIdFromFile(traceFile)) || undefined;\n } catch {\n return undefined;\n }\n}\n\nexport type TaskSource =\n | 'cli'\n | 'slack'\n | 'telegram'\n | 'email'\n | 'whatsapp'\n | 'teams'\n | 'a2a'\n | 'mcp'\n | 'tui'\n | 'scheduler'\n | 'webhook'\n | 'test';\n\nexport interface TrackExecutionOptions {\n taskStore: TaskStore;\n source: TaskSource;\n workflowId?: string;\n /** Config file path — used to prefix workflowId as \"config.yaml#workflow\" */\n configPath?: string;\n metadata?: Record<string, unknown>;\n /** Human-readable description of what's being executed */\n messageText: string;\n /** Run LLM evaluation after task completion (non-blocking). */\n autoEvaluate?: boolean;\n}\n\n/**\n * Wrap an engine execution call with task lifecycle tracking.\n *\n * Creates a task, transitions to 'working', runs the executor,\n * then sets terminal state. Returns both the task and the original result.\n * Re-throws any executor error after marking the task as failed.\n */\nexport async function trackExecution<T>(\n opts: TrackExecutionOptions,\n executor: () => Promise<T>\n): Promise<{ task: AgentTask; result: T }> {\n const { taskStore, source, configPath, metadata, messageText } = opts;\n const configName = configPath ? path.basename(configPath, path.extname(configPath)) : undefined;\n const workflowId =\n configName && opts.workflowId ? `${configName}#${opts.workflowId}` : opts.workflowId;\n\n const requestMessage: AgentMessage = {\n message_id: crypto.randomUUID(),\n role: 'user',\n parts: [{ text: messageText }],\n };\n\n // Capture trace file path if telemetry is writing to a file\n const traceFile = process.env.VISOR_FALLBACK_TRACE_FILE || undefined;\n\n const task = taskStore.createTask({\n contextId: crypto.randomUUID(),\n requestMessage,\n workflowId,\n requestMetadata: {\n source,\n instance_id: getInstanceId(),\n visor_version: process.env.VISOR_VERSION || getPackageVersion(),\n ...(process.env.VISOR_COMMIT_SHORT ? { visor_commit: process.env.VISOR_COMMIT_SHORT } : {}),\n trace_id: trace.getActiveSpan()?.spanContext().traceId || undefined,\n ...(traceFile ? { trace_file: traceFile } : {}),\n ...metadata,\n },\n });\n\n const instanceId = getInstanceId();\n taskStore.updateTaskState(task.id, 'working');\n taskStore.claimTask(task.id, instanceId);\n logger.info(\n `[TaskTracking] Task ${task.id} started (source=${source}, workflow=${workflowId || '-'}, instance=${instanceId})`\n );\n\n // Heartbeat: periodically touch updated_at so stale-task detection\n // can distinguish live tasks from orphans (works across nodes).\n const HEARTBEAT_INTERVAL = 60_000; // 1 minute\n const heartbeatTimer = setInterval(() => {\n try {\n taskStore.heartbeat(task.id);\n } catch {\n // best-effort — don't crash the task over a heartbeat failure\n }\n }, HEARTBEAT_INTERVAL);\n\n try {\n const result = await executor();\n\n // Now that execution is done, capture the trace ID from the active span.\n // At task creation time the span may not have been active yet, so we\n // update metadata post-execution to ensure trace_id is stored.\n try {\n const activeTraceId = trace.getActiveSpan()?.spanContext().traceId;\n const persistedTraceId =\n (activeTraceId && activeTraceId !== '' ? activeTraceId : undefined) ||\n (await readTraceIdFromFallbackFile(traceFile));\n if (persistedTraceId && !task.metadata?.trace_id) {\n taskStore.updateMetadata(task.id, { trace_id: persistedTraceId });\n }\n } catch {\n // best-effort — don't fail the task over metadata\n }\n\n // Extract AI response text from the result.\n // result.reviewSummary.history is keyed by checkId with arrays of outputs.\n // We want the LAST check's text output (the final AI response), not the\n // first (which is typically the intent router).\n let responseText = 'Execution completed';\n try {\n const history = (result as any)?.reviewSummary?.history as\n | Record<string, unknown[]>\n | undefined;\n if (history) {\n const entries = Object.values(history);\n // Iterate in reverse — last check output is the final response\n for (let i = entries.length - 1; i >= 0; i--) {\n const outputs = entries[i];\n if (!Array.isArray(outputs)) continue;\n // Within a check, look at the last output first too\n for (let j = outputs.length - 1; j >= 0; j--) {\n const text = (outputs[j] as any)?.text;\n if (typeof text === 'string' && text.trim().length > 0) {\n responseText = text.trim();\n break;\n }\n }\n if (responseText !== 'Execution completed') break;\n }\n }\n } catch {\n // ignore extraction errors\n }\n\n const completedMsg: AgentMessage = {\n message_id: crypto.randomUUID(),\n role: 'agent',\n parts: [{ text: responseText }],\n };\n try {\n taskStore.updateTaskState(task.id, 'completed', completedMsg);\n logger.info(`[TaskTracking] Task ${task.id} completed`);\n } catch (stateErr) {\n // Another process (e.g. stale sweep) may have already marked this task as failed.\n // Log a warning but do NOT re-throw — the execution itself succeeded.\n logger.warn(\n `[TaskTracking] Task ${task.id} completed but state transition failed: ${stateErr instanceof Error ? stateErr.message : stateErr}`\n );\n }\n\n // Fire-and-forget LLM evaluation (non-blocking)\n // Enabled via opts.autoEvaluate (from config.task_evaluate) or VISOR_TASK_EVALUATE env var\n if (opts.autoEvaluate || process.env.VISOR_TASK_EVALUATE === 'true') {\n scheduleEvaluation(task.id, taskStore);\n }\n\n return { task, result };\n } catch (err) {\n const errorText = err instanceof Error ? err.message : String(err);\n const failMessage: AgentMessage = {\n message_id: crypto.randomUUID(),\n role: 'agent',\n parts: [{ text: errorText }],\n };\n try {\n taskStore.updateTaskState(task.id, 'failed', failMessage);\n logger.info(`[TaskTracking] Task ${task.id} failed: ${errorText}`);\n } catch {\n // ignore double-failure\n }\n throw err; // re-throw to preserve original behavior\n } finally {\n clearInterval(heartbeatTimer);\n }\n}\n\n// ---------------------------------------------------------------------------\n// Non-blocking auto-evaluation\n// ---------------------------------------------------------------------------\n\nfunction scheduleEvaluation(taskId: string, taskStore: TaskStore): void {\n // Delay slightly to let OTEL spans flush before we try to read the trace\n setTimeout(async () => {\n try {\n const { evaluateAndStore } = await import('./task-evaluator');\n await evaluateAndStore(taskId, taskStore as any);\n logger.info(`[TaskEvaluator] Auto-evaluation completed for task ${taskId}`);\n } catch (err) {\n logger.warn(\n `[TaskEvaluator] Auto-evaluation failed for task ${taskId}: ${err instanceof Error ? err.message : err}`\n );\n }\n }, 5000);\n}\n"],"mappings":"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","names":[]}
@@ -1,143 +0,0 @@
1
- import {
2
- getInstanceId,
3
- init_instance_id,
4
- require_package
5
- } from "./chunk-MFXPJUUE.mjs";
6
- import {
7
- init_logger,
8
- logger
9
- } from "./chunk-FT3I25QV.mjs";
10
- import {
11
- init_lazy_otel,
12
- trace
13
- } from "./chunk-UCMJJ3IM.mjs";
14
- import {
15
- __esm
16
- } from "./chunk-J7LXIPZS.mjs";
17
-
18
- // src/agent-protocol/track-execution.ts
19
- import crypto from "crypto";
20
- import path from "path";
21
- function getPackageVersion() {
22
- try {
23
- return require_package()?.version || "dev";
24
- } catch {
25
- return "dev";
26
- }
27
- }
28
- async function trackExecution(opts, executor) {
29
- const { taskStore, source, configPath, metadata, messageText } = opts;
30
- const configName = configPath ? path.basename(configPath, path.extname(configPath)) : void 0;
31
- const workflowId = configName && opts.workflowId ? `${configName}#${opts.workflowId}` : opts.workflowId;
32
- const requestMessage = {
33
- message_id: crypto.randomUUID(),
34
- role: "user",
35
- parts: [{ text: messageText }]
36
- };
37
- const traceFile = process.env.VISOR_FALLBACK_TRACE_FILE || void 0;
38
- const task = taskStore.createTask({
39
- contextId: crypto.randomUUID(),
40
- requestMessage,
41
- workflowId,
42
- requestMetadata: {
43
- source,
44
- instance_id: getInstanceId(),
45
- visor_version: process.env.VISOR_VERSION || getPackageVersion(),
46
- ...process.env.VISOR_COMMIT_SHORT ? { visor_commit: process.env.VISOR_COMMIT_SHORT } : {},
47
- trace_id: trace.getActiveSpan()?.spanContext().traceId || void 0,
48
- ...traceFile ? { trace_file: traceFile } : {},
49
- ...metadata
50
- }
51
- });
52
- const instanceId = getInstanceId();
53
- taskStore.updateTaskState(task.id, "working");
54
- taskStore.claimTask(task.id, instanceId);
55
- logger.info(
56
- `[TaskTracking] Task ${task.id} started (source=${source}, workflow=${workflowId || "-"}, instance=${instanceId})`
57
- );
58
- try {
59
- const result = await executor();
60
- try {
61
- const activeTraceId = trace.getActiveSpan()?.spanContext().traceId;
62
- if (activeTraceId && activeTraceId !== "" && !task.metadata?.trace_id) {
63
- taskStore.updateMetadata(task.id, { trace_id: activeTraceId });
64
- }
65
- } catch {
66
- }
67
- let responseText = "Execution completed";
68
- try {
69
- const history = result?.reviewSummary?.history;
70
- if (history) {
71
- const entries = Object.values(history);
72
- for (let i = entries.length - 1; i >= 0; i--) {
73
- const outputs = entries[i];
74
- if (!Array.isArray(outputs)) continue;
75
- for (let j = outputs.length - 1; j >= 0; j--) {
76
- const text = outputs[j]?.text;
77
- if (typeof text === "string" && text.trim().length > 0) {
78
- responseText = text.trim();
79
- break;
80
- }
81
- }
82
- if (responseText !== "Execution completed") break;
83
- }
84
- }
85
- } catch {
86
- }
87
- const completedMsg = {
88
- message_id: crypto.randomUUID(),
89
- role: "agent",
90
- parts: [{ text: responseText }]
91
- };
92
- try {
93
- taskStore.updateTaskState(task.id, "completed", completedMsg);
94
- logger.info(`[TaskTracking] Task ${task.id} completed`);
95
- } catch (stateErr) {
96
- logger.warn(
97
- `[TaskTracking] Task ${task.id} completed but state transition failed: ${stateErr instanceof Error ? stateErr.message : stateErr}`
98
- );
99
- }
100
- if (opts.autoEvaluate || process.env.VISOR_TASK_EVALUATE === "true") {
101
- scheduleEvaluation(task.id, taskStore);
102
- }
103
- return { task, result };
104
- } catch (err) {
105
- const errorText = err instanceof Error ? err.message : String(err);
106
- const failMessage = {
107
- message_id: crypto.randomUUID(),
108
- role: "agent",
109
- parts: [{ text: errorText }]
110
- };
111
- try {
112
- taskStore.updateTaskState(task.id, "failed", failMessage);
113
- logger.info(`[TaskTracking] Task ${task.id} failed: ${errorText}`);
114
- } catch {
115
- }
116
- throw err;
117
- }
118
- }
119
- function scheduleEvaluation(taskId, taskStore) {
120
- setTimeout(async () => {
121
- try {
122
- const { evaluateAndStore } = await import("./task-evaluator-GQYDOSGT.mjs");
123
- await evaluateAndStore(taskId, taskStore);
124
- logger.info(`[TaskEvaluator] Auto-evaluation completed for task ${taskId}`);
125
- } catch (err) {
126
- logger.warn(
127
- `[TaskEvaluator] Auto-evaluation failed for task ${taskId}: ${err instanceof Error ? err.message : err}`
128
- );
129
- }
130
- }, 5e3);
131
- }
132
- var init_track_execution = __esm({
133
- "src/agent-protocol/track-execution.ts"() {
134
- init_logger();
135
- init_lazy_otel();
136
- init_instance_id();
137
- }
138
- });
139
- init_track_execution();
140
- export {
141
- trackExecution
142
- };
143
- //# sourceMappingURL=track-execution-66RLL6QT.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/agent-protocol/track-execution.ts"],"sourcesContent":["/**\n * Shared execution tracking helper.\n *\n * Wraps any engine execution call with task lifecycle management:\n * creates a task in 'submitted' state, transitions to 'working',\n * runs the executor, then sets terminal state (completed/failed).\n *\n * Used by CLI, Slack, TUI, and Scheduler frontends when task_tracking is enabled.\n */\n\nimport crypto from 'crypto';\nimport path from 'path';\nimport { logger } from '../logger';\nimport { trace } from '../telemetry/lazy-otel';\nimport { getInstanceId } from '../utils/instance-id';\nimport type { TaskStore } from './task-store';\nimport type { AgentMessage, AgentTask } from './types';\n\nfunction getPackageVersion(): string {\n try {\n return require('../../package.json')?.version || 'dev';\n } catch {\n return 'dev';\n }\n}\n\nexport type TaskSource =\n | 'cli'\n | 'slack'\n | 'telegram'\n | 'email'\n | 'whatsapp'\n | 'teams'\n | 'a2a'\n | 'mcp'\n | 'tui'\n | 'scheduler'\n | 'webhook';\n\nexport interface TrackExecutionOptions {\n taskStore: TaskStore;\n source: TaskSource;\n workflowId?: string;\n /** Config file path — used to prefix workflowId as \"config.yaml#workflow\" */\n configPath?: string;\n metadata?: Record<string, unknown>;\n /** Human-readable description of what's being executed */\n messageText: string;\n /** Run LLM evaluation after task completion (non-blocking). */\n autoEvaluate?: boolean;\n}\n\n/**\n * Wrap an engine execution call with task lifecycle tracking.\n *\n * Creates a task, transitions to 'working', runs the executor,\n * then sets terminal state. Returns both the task and the original result.\n * Re-throws any executor error after marking the task as failed.\n */\nexport async function trackExecution<T>(\n opts: TrackExecutionOptions,\n executor: () => Promise<T>\n): Promise<{ task: AgentTask; result: T }> {\n const { taskStore, source, configPath, metadata, messageText } = opts;\n const configName = configPath ? path.basename(configPath, path.extname(configPath)) : undefined;\n const workflowId =\n configName && opts.workflowId ? `${configName}#${opts.workflowId}` : opts.workflowId;\n\n const requestMessage: AgentMessage = {\n message_id: crypto.randomUUID(),\n role: 'user',\n parts: [{ text: messageText }],\n };\n\n // Capture trace file path if telemetry is writing to a file\n const traceFile = process.env.VISOR_FALLBACK_TRACE_FILE || undefined;\n\n const task = taskStore.createTask({\n contextId: crypto.randomUUID(),\n requestMessage,\n workflowId,\n requestMetadata: {\n source,\n instance_id: getInstanceId(),\n visor_version: process.env.VISOR_VERSION || getPackageVersion(),\n ...(process.env.VISOR_COMMIT_SHORT ? { visor_commit: process.env.VISOR_COMMIT_SHORT } : {}),\n trace_id: trace.getActiveSpan()?.spanContext().traceId || undefined,\n ...(traceFile ? { trace_file: traceFile } : {}),\n ...metadata,\n },\n });\n\n const instanceId = getInstanceId();\n taskStore.updateTaskState(task.id, 'working');\n taskStore.claimTask(task.id, instanceId);\n logger.info(\n `[TaskTracking] Task ${task.id} started (source=${source}, workflow=${workflowId || '-'}, instance=${instanceId})`\n );\n\n try {\n const result = await executor();\n\n // Now that execution is done, capture the trace ID from the active span.\n // At task creation time the span may not have been active yet, so we\n // update metadata post-execution to ensure trace_id is stored.\n try {\n const activeTraceId = trace.getActiveSpan()?.spanContext().traceId;\n if (activeTraceId && activeTraceId !== '' && !task.metadata?.trace_id) {\n taskStore.updateMetadata(task.id, { trace_id: activeTraceId });\n }\n } catch {\n // best-effort — don't fail the task over metadata\n }\n\n // Extract AI response text from the result.\n // result.reviewSummary.history is keyed by checkId with arrays of outputs.\n // We want the LAST check's text output (the final AI response), not the\n // first (which is typically the intent router).\n let responseText = 'Execution completed';\n try {\n const history = (result as any)?.reviewSummary?.history as\n | Record<string, unknown[]>\n | undefined;\n if (history) {\n const entries = Object.values(history);\n // Iterate in reverse — last check output is the final response\n for (let i = entries.length - 1; i >= 0; i--) {\n const outputs = entries[i];\n if (!Array.isArray(outputs)) continue;\n // Within a check, look at the last output first too\n for (let j = outputs.length - 1; j >= 0; j--) {\n const text = (outputs[j] as any)?.text;\n if (typeof text === 'string' && text.trim().length > 0) {\n responseText = text.trim();\n break;\n }\n }\n if (responseText !== 'Execution completed') break;\n }\n }\n } catch {\n // ignore extraction errors\n }\n\n const completedMsg: AgentMessage = {\n message_id: crypto.randomUUID(),\n role: 'agent',\n parts: [{ text: responseText }],\n };\n try {\n taskStore.updateTaskState(task.id, 'completed', completedMsg);\n logger.info(`[TaskTracking] Task ${task.id} completed`);\n } catch (stateErr) {\n // Another process (e.g. stale sweep) may have already marked this task as failed.\n // Log a warning but do NOT re-throw — the execution itself succeeded.\n logger.warn(\n `[TaskTracking] Task ${task.id} completed but state transition failed: ${stateErr instanceof Error ? stateErr.message : stateErr}`\n );\n }\n\n // Fire-and-forget LLM evaluation (non-blocking)\n // Enabled via opts.autoEvaluate (from config.task_evaluate) or VISOR_TASK_EVALUATE env var\n if (opts.autoEvaluate || process.env.VISOR_TASK_EVALUATE === 'true') {\n scheduleEvaluation(task.id, taskStore);\n }\n\n return { task, result };\n } catch (err) {\n const errorText = err instanceof Error ? err.message : String(err);\n const failMessage: AgentMessage = {\n message_id: crypto.randomUUID(),\n role: 'agent',\n parts: [{ text: errorText }],\n };\n try {\n taskStore.updateTaskState(task.id, 'failed', failMessage);\n logger.info(`[TaskTracking] Task ${task.id} failed: ${errorText}`);\n } catch {\n // ignore double-failure\n }\n throw err; // re-throw to preserve original behavior\n }\n}\n\n// ---------------------------------------------------------------------------\n// Non-blocking auto-evaluation\n// ---------------------------------------------------------------------------\n\nfunction scheduleEvaluation(taskId: string, taskStore: TaskStore): void {\n // Delay slightly to let OTEL spans flush before we try to read the trace\n setTimeout(async () => {\n try {\n const { evaluateAndStore } = await import('./task-evaluator');\n await evaluateAndStore(taskId, taskStore as any);\n logger.info(`[TaskEvaluator] Auto-evaluation completed for task ${taskId}`);\n } catch (err) {\n logger.warn(\n `[TaskEvaluator] Auto-evaluation failed for task ${taskId}: ${err instanceof Error ? err.message : err}`\n );\n }\n }, 5000);\n}\n"],"mappings":"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","names":[]}
@@ -1,16 +0,0 @@
1
- import {
2
- UtcpCheckProvider,
3
- init_utcp_check_provider
4
- } from "./chunk-7XRSCOKE.mjs";
5
- import "./chunk-PQWZ6NFL.mjs";
6
- import "./chunk-25IC7KXZ.mjs";
7
- import "./chunk-LW3INISN.mjs";
8
- import "./chunk-UFHOIB3R.mjs";
9
- import "./chunk-FT3I25QV.mjs";
10
- import "./chunk-UCMJJ3IM.mjs";
11
- import "./chunk-J7LXIPZS.mjs";
12
- init_utcp_check_provider();
13
- export {
14
- UtcpCheckProvider
15
- };
16
- //# sourceMappingURL=utcp-check-provider-JLIYF5HH.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,31 +0,0 @@
1
- import {
2
- WorkflowCheckProvider,
3
- init_workflow_check_provider
4
- } from "./chunk-UXB4XWEE.mjs";
5
- import "./chunk-YSOIR46P.mjs";
6
- import "./chunk-PDQTEBOJ.mjs";
7
- import "./chunk-P2K4VOMU.mjs";
8
- import "./chunk-MEB2TTIE.mjs";
9
- import "./chunk-B7BVQM5K.mjs";
10
- import "./chunk-XXAEN5KU.mjs";
11
- import "./chunk-S5FSRHMY.mjs";
12
- import "./chunk-54KOAC4W.mjs";
13
- import "./chunk-7W5QCO4Y.mjs";
14
- import "./chunk-KWTCTEFT.mjs";
15
- import "./chunk-WKLJ57WF.mjs";
16
- import "./chunk-GA2TYKSR.mjs";
17
- import "./chunk-XOAEKFKB.mjs";
18
- import "./chunk-G7GSN3SK.mjs";
19
- import "./chunk-FWWLD555.mjs";
20
- import "./chunk-4BN2XI4X.mjs";
21
- import "./chunk-25IC7KXZ.mjs";
22
- import "./chunk-LW3INISN.mjs";
23
- import "./chunk-RI4ONH5X.mjs";
24
- import "./chunk-ZPYODGYA.mjs";
25
- import "./chunk-B2OUZAWY.mjs";
26
- import "./chunk-J7LXIPZS.mjs";
27
- init_workflow_check_provider();
28
- export {
29
- WorkflowCheckProvider
30
- };
31
- //# sourceMappingURL=workflow-check-provider-X2UREEH7.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,31 +0,0 @@
1
- import {
2
- WorkflowCheckProvider,
3
- init_workflow_check_provider
4
- } from "./chunk-IDL3AA3G.mjs";
5
- import "./chunk-YSOIR46P.mjs";
6
- import "./chunk-PDQTEBOJ.mjs";
7
- import "./chunk-7XRSCOKE.mjs";
8
- import "./chunk-7VTZDC2X.mjs";
9
- import "./chunk-B7BVQM5K.mjs";
10
- import "./chunk-XXAEN5KU.mjs";
11
- import "./chunk-RHKPFJLG.mjs";
12
- import "./chunk-J27D43HS.mjs";
13
- import "./chunk-ZOF5QT6U.mjs";
14
- import "./chunk-KWTCTEFT.mjs";
15
- import "./chunk-NPSLGKXB.mjs";
16
- import "./chunk-V45TITKX.mjs";
17
- import "./chunk-TFUQ2D5L.mjs";
18
- import "./chunk-MFXPJUUE.mjs";
19
- import "./chunk-34QX63WK.mjs";
20
- import "./chunk-PQWZ6NFL.mjs";
21
- import "./chunk-25IC7KXZ.mjs";
22
- import "./chunk-LW3INISN.mjs";
23
- import "./chunk-UFHOIB3R.mjs";
24
- import "./chunk-FT3I25QV.mjs";
25
- import "./chunk-UCMJJ3IM.mjs";
26
- import "./chunk-J7LXIPZS.mjs";
27
- init_workflow_check_provider();
28
- export {
29
- WorkflowCheckProvider
30
- };
31
- //# sourceMappingURL=workflow-check-provider-YXALZNAQ.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,12 +0,0 @@
1
- import {
2
- WorkflowRegistry,
3
- init_workflow_registry
4
- } from "./chunk-J27D43HS.mjs";
5
- import "./chunk-FT3I25QV.mjs";
6
- import "./chunk-UCMJJ3IM.mjs";
7
- import "./chunk-J7LXIPZS.mjs";
8
- init_workflow_registry();
9
- export {
10
- WorkflowRegistry
11
- };
12
- //# sourceMappingURL=workflow-registry-X2IPY35M.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}