@probelabs/visor 0.1.187-ee → 0.1.187

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 (410) hide show
  1. package/dist/{102.index.js → 140.index.js} +3 -3
  2. package/dist/{736.index.js → 142.index.js} +36 -36
  3. package/dist/{961.index.js → 223.index.js} +16 -16
  4. package/dist/{840.index.js → 676.index.js} +12 -12
  5. package/dist/{663.index.js → 85.index.js} +15 -15
  6. package/dist/action-cli-bridge.d.ts.map +1 -1
  7. package/dist/agent-protocol/a2a-frontend.d.ts.map +1 -1
  8. package/dist/agent-protocol/index.d.ts.map +1 -1
  9. package/dist/agent-protocol/push-notification-manager.d.ts.map +1 -1
  10. package/dist/agent-protocol/state-transitions.d.ts.map +1 -1
  11. package/dist/agent-protocol/task-evaluator.d.ts.map +1 -1
  12. package/dist/agent-protocol/task-live-update-slack.d.ts.map +1 -1
  13. package/dist/agent-protocol/task-live-update-teams.d.ts.map +1 -1
  14. package/dist/agent-protocol/task-live-update-telegram.d.ts.map +1 -1
  15. package/dist/agent-protocol/task-live-updates.d.ts.map +1 -1
  16. package/dist/agent-protocol/task-progress-tool.d.ts.map +1 -1
  17. package/dist/agent-protocol/task-queue.d.ts.map +1 -1
  18. package/dist/agent-protocol/task-store.d.ts.map +1 -1
  19. package/dist/agent-protocol/task-stream-manager.d.ts.map +1 -1
  20. package/dist/agent-protocol/task-trace-resolution.d.ts.map +1 -1
  21. package/dist/agent-protocol/tasks-cli-handler.d.ts.map +1 -1
  22. package/dist/agent-protocol/tasks-tui.d.ts.map +1 -1
  23. package/dist/agent-protocol/trace-serializer.d.ts.map +1 -1
  24. package/dist/agent-protocol/track-execution.d.ts.map +1 -1
  25. package/dist/agent-protocol/types.d.ts.map +1 -1
  26. package/dist/ai-review-service.d.ts.map +1 -1
  27. package/dist/check-execution-engine.d.ts.map +1 -1
  28. package/dist/cli-main.d.ts.map +1 -1
  29. package/dist/cli.d.ts.map +1 -1
  30. package/dist/commands.d.ts.map +1 -1
  31. package/dist/config/cli-handler.d.ts.map +1 -1
  32. package/dist/config/config-reloader.d.ts.map +1 -1
  33. package/dist/config/config-snapshot-store.d.ts.map +1 -1
  34. package/dist/config/config-watcher.d.ts.map +1 -1
  35. package/dist/config/types.d.ts.map +1 -1
  36. package/dist/config.d.ts.map +1 -1
  37. package/dist/cron-scheduler.d.ts.map +1 -1
  38. package/dist/debug-visualizer/debug-span-exporter.d.ts.map +1 -1
  39. package/dist/debug-visualizer/trace-reader.d.ts.map +1 -1
  40. package/dist/debug-visualizer/ws-server.d.ts.map +1 -1
  41. package/dist/dependency-resolver.d.ts.map +1 -1
  42. package/dist/email/adapter.d.ts.map +1 -1
  43. package/dist/email/client.d.ts.map +1 -1
  44. package/dist/email/markdown.d.ts.map +1 -1
  45. package/dist/email/polling-runner.d.ts.map +1 -1
  46. package/dist/engine/on-finish/orchestrator.d.ts.map +1 -1
  47. package/dist/engine/on-finish/utils.d.ts.map +1 -1
  48. package/dist/event-bus/event-bus.d.ts.map +1 -1
  49. package/dist/event-bus/types.d.ts.map +1 -1
  50. package/dist/event-mapper.d.ts.map +1 -1
  51. package/dist/failure-condition-evaluator.d.ts.map +1 -1
  52. package/dist/footer.d.ts.map +1 -1
  53. package/dist/frontends/email-frontend.d.ts.map +1 -1
  54. package/dist/frontends/github-frontend.d.ts.map +1 -1
  55. package/dist/frontends/host.d.ts.map +1 -1
  56. package/dist/frontends/ndjson-sink.d.ts.map +1 -1
  57. package/dist/frontends/slack-frontend.d.ts.map +1 -1
  58. package/dist/frontends/teams-frontend.d.ts.map +1 -1
  59. package/dist/frontends/telegram-frontend.d.ts.map +1 -1
  60. package/dist/frontends/whatsapp-frontend.d.ts.map +1 -1
  61. package/dist/generated/config-schema.d.ts.map +1 -1
  62. package/dist/git-repository-analyzer.d.ts.map +1 -1
  63. package/dist/github-auth.d.ts.map +1 -1
  64. package/dist/github-check-service.d.ts.map +1 -1
  65. package/dist/github-comments.d.ts.map +1 -1
  66. package/dist/github-reactions.d.ts.map +1 -1
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +8154 -9971
  69. package/dist/issue-filter.d.ts.map +1 -1
  70. package/dist/liquid-extensions.d.ts.map +1 -1
  71. package/dist/logger.d.ts.map +1 -1
  72. package/dist/mcp-job-manager.d.ts.map +1 -1
  73. package/dist/mcp-server.d.ts.map +1 -1
  74. package/dist/memory-store.d.ts.map +1 -1
  75. package/dist/output/traces/run-2026-08-20T13-50-06-218Z.ndjson +3148 -0
  76. package/dist/output-formatters.d.ts.map +1 -1
  77. package/dist/policy/default-engine.d.ts.map +1 -1
  78. package/dist/policy/index.d.ts.map +1 -1
  79. package/dist/policy/policy-check-command.d.ts.map +1 -1
  80. package/dist/policy/types.d.ts.map +1 -1
  81. package/dist/pr-analyzer.d.ts.map +1 -1
  82. package/dist/pr-detector.d.ts.map +1 -1
  83. package/dist/providers/a2a-check-provider.d.ts.map +1 -1
  84. package/dist/providers/ai-check-provider.d.ts.map +1 -1
  85. package/dist/providers/api-tool-executor.d.ts.map +1 -1
  86. package/dist/providers/check-provider-registry.d.ts.map +1 -1
  87. package/dist/providers/check-provider.interface.d.ts.map +1 -1
  88. package/dist/providers/claude-code-check-provider.d.ts.map +1 -1
  89. package/dist/providers/claude-code-types.d.ts.map +1 -1
  90. package/dist/providers/command-check-provider.d.ts.map +1 -1
  91. package/dist/providers/custom-tool-executor.d.ts.map +1 -1
  92. package/dist/providers/git-checkout-provider.d.ts.map +1 -1
  93. package/dist/providers/github-ops-provider.d.ts.map +1 -1
  94. package/dist/providers/http-check-provider.d.ts.map +1 -1
  95. package/dist/providers/http-client-provider.d.ts.map +1 -1
  96. package/dist/providers/http-input-provider.d.ts.map +1 -1
  97. package/dist/providers/human-input-check-provider.d.ts.map +1 -1
  98. package/dist/providers/index.d.ts.map +1 -1
  99. package/dist/providers/log-check-provider.d.ts.map +1 -1
  100. package/dist/providers/mcp-check-provider.d.ts.map +1 -1
  101. package/dist/providers/mcp-custom-sse-server.d.ts.map +1 -1
  102. package/dist/providers/mcp-tools.d.ts.map +1 -1
  103. package/dist/providers/memory-check-provider.d.ts.map +1 -1
  104. package/dist/providers/noop-check-provider.d.ts.map +1 -1
  105. package/dist/providers/script-check-provider.d.ts.map +1 -1
  106. package/dist/providers/utcp-check-provider.d.ts.map +1 -1
  107. package/dist/providers/workflow-check-provider.d.ts.map +1 -1
  108. package/dist/providers/workflow-tool-executor.d.ts.map +1 -1
  109. package/dist/reviewer.d.ts.map +1 -1
  110. package/dist/runners/config-reload-runtime.d.ts.map +1 -1
  111. package/dist/runners/graceful-restart.d.ts.map +1 -1
  112. package/dist/runners/mcp-server-runner.d.ts.map +1 -1
  113. package/dist/runners/process-cli-handler.d.ts.map +1 -1
  114. package/dist/runners/process-discovery.d.ts.map +1 -1
  115. package/dist/runners/runner-factory.d.ts.map +1 -1
  116. package/dist/runners/runner-host.d.ts.map +1 -1
  117. package/dist/runners/runner.d.ts.map +1 -1
  118. package/dist/runners/telemetry-init.d.ts.map +1 -1
  119. package/dist/sandbox/bubblewrap-sandbox.d.ts.map +1 -1
  120. package/dist/sandbox/cache-volume-manager.d.ts.map +1 -1
  121. package/dist/sandbox/check-runner.d.ts.map +1 -1
  122. package/dist/sandbox/compose-generator.d.ts.map +1 -1
  123. package/dist/sandbox/docker-compose-sandbox.d.ts.map +1 -1
  124. package/dist/sandbox/docker-image-sandbox.d.ts.map +1 -1
  125. package/dist/sandbox/env-filter.d.ts.map +1 -1
  126. package/dist/sandbox/index.d.ts.map +1 -1
  127. package/dist/sandbox/sandbox-manager.d.ts.map +1 -1
  128. package/dist/sandbox/sandbox-telemetry.d.ts.map +1 -1
  129. package/dist/sandbox/seatbelt-sandbox.d.ts.map +1 -1
  130. package/dist/sandbox/trace-ingester.d.ts.map +1 -1
  131. package/dist/sandbox/types.d.ts.map +1 -1
  132. package/dist/scheduler/cli-handler.d.ts.map +1 -1
  133. package/dist/scheduler/index.d.ts.map +1 -1
  134. package/dist/scheduler/message-trigger.d.ts.map +1 -1
  135. package/dist/scheduler/schedule-parser.d.ts.map +1 -1
  136. package/dist/scheduler/schedule-store.d.ts.map +1 -1
  137. package/dist/scheduler/schedule-tool.d.ts.map +1 -1
  138. package/dist/scheduler/scheduler.d.ts.map +1 -1
  139. package/dist/scheduler/store/index.d.ts.map +1 -1
  140. package/dist/scheduler/store/json-migrator.d.ts.map +1 -1
  141. package/dist/scheduler/store/sqlite-store.d.ts.map +1 -1
  142. package/dist/scheduler/store/types.d.ts.map +1 -1
  143. package/dist/sdk/{a2a-frontend-QVKJ7MVW.mjs → a2a-frontend-XCQ4CQUF.mjs} +3 -3
  144. package/dist/sdk/{check-provider-registry-QUUL6JI2.mjs → check-provider-registry-2D3MCWP3.mjs} +6 -6
  145. package/dist/sdk/{chunk-6LQEODDA.mjs → chunk-B2LQT6QU.mjs} +2 -2
  146. package/dist/sdk/chunk-B2LQT6QU.mjs.map +1 -0
  147. package/dist/sdk/{chunk-PZADRRLX.mjs → chunk-S3GSZRYC.mjs} +2 -2
  148. package/dist/sdk/{chunk-HQCCT6WP.mjs → chunk-TGQBEM3Y.mjs} +203 -203
  149. package/dist/sdk/chunk-TGQBEM3Y.mjs.map +1 -0
  150. package/dist/sdk/{chunk-BBLBZVWC.mjs → chunk-VS3JE2DL.mjs} +3 -3
  151. package/dist/sdk/{chunk-QLT42TX7.mjs → chunk-YETG675X.mjs} +2 -2
  152. package/dist/sdk/{dist-YLO6HUFD.mjs → dist-VBYEFQ6T.mjs} +85 -311
  153. package/dist/sdk/dist-VBYEFQ6T.mjs.map +1 -0
  154. package/dist/sdk/{email-frontend-6O454VL5.mjs → email-frontend-AE5TYWNC.mjs} +2 -2
  155. package/dist/sdk/{failure-condition-evaluator-USY3ISVA.mjs → failure-condition-evaluator-66PWLV3D.mjs} +4 -4
  156. package/dist/sdk/{github-frontend-2T5PWYD5.mjs → github-frontend-BBFKCY4M.mjs} +4 -4
  157. package/dist/sdk/{host-UZESVA6Z.mjs → host-UQRZDLT7.mjs} +4 -4
  158. package/dist/sdk/{routing-TYXT3STD.mjs → routing-Q647KUMO.mjs} +5 -5
  159. package/dist/sdk/{schedule-tool-ODMIDBMT.mjs → schedule-tool-WMGSM6IT.mjs} +6 -6
  160. package/dist/sdk/{schedule-tool-handler-IQSKBFLS.mjs → schedule-tool-handler-JMDHCGZ2.mjs} +6 -6
  161. package/dist/sdk/sdk.js +916 -2290
  162. package/dist/sdk/sdk.js.map +1 -1
  163. package/dist/sdk/sdk.mjs +5 -5
  164. package/dist/sdk/{trace-helpers-AM2QE5UZ.mjs → trace-helpers-AIUGQLK5.mjs} +3 -3
  165. package/dist/sdk/{track-execution-VJJVJH6K.mjs → track-execution-CFRZXMEC.mjs} +2 -2
  166. package/dist/sdk/{workflow-check-provider-XOWQYWTC.mjs → workflow-check-provider-G7A67EPP.mjs} +6 -6
  167. package/dist/sdk.d.ts.map +1 -1
  168. package/dist/session-registry.d.ts.map +1 -1
  169. package/dist/slack/adapter.d.ts.map +1 -1
  170. package/dist/slack/cache-prewarmer.d.ts.map +1 -1
  171. package/dist/slack/client.d.ts.map +1 -1
  172. package/dist/slack/markdown.d.ts.map +1 -1
  173. package/dist/slack/prompt-state.d.ts.map +1 -1
  174. package/dist/slack/rate-limiter.d.ts.map +1 -1
  175. package/dist/slack/schedule-tool-handler.d.ts.map +1 -1
  176. package/dist/slack/signature.d.ts.map +1 -1
  177. package/dist/slack/slack-output-adapter.d.ts.map +1 -1
  178. package/dist/slack/socket-runner.d.ts.map +1 -1
  179. package/dist/slack/thread-cache.d.ts.map +1 -1
  180. package/dist/snapshot-store.d.ts.map +1 -1
  181. package/dist/state-machine/context/build-engine-context.d.ts.map +1 -1
  182. package/dist/state-machine/context/workflow-inputs.d.ts.map +1 -1
  183. package/dist/state-machine/dispatch/debounce-manager.d.ts.map +1 -1
  184. package/dist/state-machine/dispatch/dependency-gating.d.ts.map +1 -1
  185. package/dist/state-machine/dispatch/execution-invoker.d.ts.map +1 -1
  186. package/dist/state-machine/dispatch/foreach-processor.d.ts.map +1 -1
  187. package/dist/state-machine/dispatch/history-snapshot.d.ts.map +1 -1
  188. package/dist/state-machine/dispatch/on-init-handlers.d.ts.map +1 -1
  189. package/dist/state-machine/dispatch/policy-gate.d.ts.map +1 -1
  190. package/dist/state-machine/dispatch/renderer-schema.d.ts.map +1 -1
  191. package/dist/state-machine/dispatch/sandbox-routing.d.ts.map +1 -1
  192. package/dist/state-machine/dispatch/stats-manager.d.ts.map +1 -1
  193. package/dist/state-machine/dispatch/template-renderer.d.ts.map +1 -1
  194. package/dist/state-machine/execution/summary.d.ts.map +1 -1
  195. package/dist/state-machine/runner.d.ts.map +1 -1
  196. package/dist/state-machine/states/check-running.d.ts.map +1 -1
  197. package/dist/state-machine/states/completed.d.ts.map +1 -1
  198. package/dist/state-machine/states/error.d.ts.map +1 -1
  199. package/dist/state-machine/states/init.d.ts.map +1 -1
  200. package/dist/state-machine/states/level-dispatch.d.ts.map +1 -1
  201. package/dist/state-machine/states/plan-ready.d.ts.map +1 -1
  202. package/dist/state-machine/states/routing.d.ts.map +1 -1
  203. package/dist/state-machine/states/wave-planning.d.ts.map +1 -1
  204. package/dist/state-machine/workflow-projection.d.ts.map +1 -1
  205. package/dist/state-machine-execution-engine.d.ts.map +1 -1
  206. package/dist/teams/adapter.d.ts.map +1 -1
  207. package/dist/teams/client.d.ts.map +1 -1
  208. package/dist/teams/markdown.d.ts.map +1 -1
  209. package/dist/teams/webhook-runner.d.ts.map +1 -1
  210. package/dist/telegram/adapter.d.ts.map +1 -1
  211. package/dist/telegram/client.d.ts.map +1 -1
  212. package/dist/telegram/markdown.d.ts.map +1 -1
  213. package/dist/telegram/polling-runner.d.ts.map +1 -1
  214. package/dist/telemetry/fallback-ndjson.d.ts.map +1 -1
  215. package/dist/telemetry/file-span-exporter.d.ts.map +1 -1
  216. package/dist/telemetry/lazy-otel.d.ts.map +1 -1
  217. package/dist/telemetry/metrics.d.ts.map +1 -1
  218. package/dist/telemetry/opentelemetry.d.ts.map +1 -1
  219. package/dist/telemetry/state-capture.d.ts.map +1 -1
  220. package/dist/telemetry/trace-helpers.d.ts.map +1 -1
  221. package/dist/telemetry/trace-report-exporter.d.ts.map +1 -1
  222. package/dist/test-runner/assertions.d.ts.map +1 -1
  223. package/dist/test-runner/conversation-sugar.d.ts.map +1 -1
  224. package/dist/test-runner/core/environment.d.ts.map +1 -1
  225. package/dist/test-runner/core/fixture.d.ts.map +1 -1
  226. package/dist/test-runner/core/flow-stage.d.ts.map +1 -1
  227. package/dist/test-runner/core/mocks.d.ts.map +1 -1
  228. package/dist/test-runner/core/test-execution-wrapper.d.ts.map +1 -1
  229. package/dist/test-runner/evaluators.d.ts.map +1 -1
  230. package/dist/test-runner/fixture-loader.d.ts.map +1 -1
  231. package/dist/test-runner/index.d.ts.map +1 -1
  232. package/dist/test-runner/llm-judge.d.ts.map +1 -1
  233. package/dist/test-runner/recorders/github-recorder.d.ts.map +1 -1
  234. package/dist/test-runner/recorders/global-recorder.d.ts.map +1 -1
  235. package/dist/test-runner/recorders/slack-recorder.d.ts.map +1 -1
  236. package/dist/test-runner/utils/selectors.d.ts.map +1 -1
  237. package/dist/test-runner/validator.d.ts.map +1 -1
  238. package/dist/traces/run-2026-08-20T13-50-06-218Z.ndjson +3148 -0
  239. package/dist/tui/chat-runner.d.ts.map +1 -1
  240. package/dist/tui/chat-state.d.ts.map +1 -1
  241. package/dist/tui/chat-tui.d.ts.map +1 -1
  242. package/dist/tui/components/chat-box.d.ts.map +1 -1
  243. package/dist/tui/components/input-bar.d.ts.map +1 -1
  244. package/dist/tui/components/status-bar.d.ts.map +1 -1
  245. package/dist/tui/components/trace-viewer.d.ts.map +1 -1
  246. package/dist/tui/index.d.ts.map +1 -1
  247. package/dist/tui/tui-frontend.d.ts.map +1 -1
  248. package/dist/types/bot.d.ts.map +1 -1
  249. package/dist/types/cli.d.ts.map +1 -1
  250. package/dist/types/config.d.ts.map +1 -1
  251. package/dist/types/engine.d.ts.map +1 -1
  252. package/dist/types/execution.d.ts.map +1 -1
  253. package/dist/types/git-checkout.d.ts.map +1 -1
  254. package/dist/types/github.d.ts.map +1 -1
  255. package/dist/types/workflow.d.ts.map +1 -1
  256. package/dist/utils/author-permissions.d.ts.map +1 -1
  257. package/dist/utils/child-process-error-handler.d.ts.map +1 -1
  258. package/dist/utils/command-executor.d.ts.map +1 -1
  259. package/dist/utils/comment-metadata.d.ts.map +1 -1
  260. package/dist/utils/config-loader.d.ts.map +1 -1
  261. package/dist/utils/config-merger.d.ts.map +1 -1
  262. package/dist/utils/diff-processor.d.ts.map +1 -1
  263. package/dist/utils/env-exposure.d.ts.map +1 -1
  264. package/dist/utils/env-resolver.d.ts.map +1 -1
  265. package/dist/utils/fair-concurrency-limiter.d.ts.map +1 -1
  266. package/dist/utils/file-exclusion.d.ts.map +1 -1
  267. package/dist/utils/head-sha.d.ts.map +1 -1
  268. package/dist/utils/human-id.d.ts.map +1 -1
  269. package/dist/utils/instance-id.d.ts.map +1 -1
  270. package/dist/utils/interactive-prompt.d.ts.map +1 -1
  271. package/dist/utils/issue-normalizer.d.ts.map +1 -1
  272. package/dist/utils/json-text-extractor.d.ts.map +1 -1
  273. package/dist/utils/mermaid-telemetry.d.ts.map +1 -1
  274. package/dist/utils/oauth2-token-cache.d.ts.map +1 -1
  275. package/dist/utils/rate-limiter.d.ts.map +1 -1
  276. package/dist/utils/sandbox.d.ts.map +1 -1
  277. package/dist/utils/script-memory-ops.d.ts.map +1 -1
  278. package/dist/utils/script-tool-environment.d.ts.map +1 -1
  279. package/dist/utils/stdin-reader.d.ts.map +1 -1
  280. package/dist/utils/template-context.d.ts.map +1 -1
  281. package/dist/utils/tool-resolver.d.ts.map +1 -1
  282. package/dist/utils/toolkit-expander.d.ts.map +1 -1
  283. package/dist/utils/tracer-init.d.ts.map +1 -1
  284. package/dist/utils/ui-helpers.d.ts.map +1 -1
  285. package/dist/utils/user-facing-error.d.ts.map +1 -1
  286. package/dist/utils/workspace-manager.d.ts.map +1 -1
  287. package/dist/utils/worktree-cleanup.d.ts.map +1 -1
  288. package/dist/utils/worktree-manager.d.ts.map +1 -1
  289. package/dist/webhook-server.d.ts.map +1 -1
  290. package/dist/whatsapp/adapter.d.ts.map +1 -1
  291. package/dist/whatsapp/client.d.ts.map +1 -1
  292. package/dist/whatsapp/markdown.d.ts.map +1 -1
  293. package/dist/whatsapp/webhook-runner.d.ts.map +1 -1
  294. package/dist/workflow-executor.d.ts.map +1 -1
  295. package/dist/workflow-registry.d.ts.map +1 -1
  296. package/package.json +1 -1
  297. package/dist/enterprise/license/validator.d.ts +0 -39
  298. package/dist/enterprise/license/validator.d.ts.map +0 -1
  299. package/dist/enterprise/loader.d.ts +0 -25
  300. package/dist/enterprise/loader.d.ts.map +0 -1
  301. package/dist/enterprise/policy/opa-compiler.d.ts +0 -37
  302. package/dist/enterprise/policy/opa-compiler.d.ts.map +0 -1
  303. package/dist/enterprise/policy/opa-http-evaluator.d.ts +0 -36
  304. package/dist/enterprise/policy/opa-http-evaluator.d.ts.map +0 -1
  305. package/dist/enterprise/policy/opa-policy-engine.d.ts +0 -48
  306. package/dist/enterprise/policy/opa-policy-engine.d.ts.map +0 -1
  307. package/dist/enterprise/policy/opa-wasm-evaluator.d.ts +0 -34
  308. package/dist/enterprise/policy/opa-wasm-evaluator.d.ts.map +0 -1
  309. package/dist/enterprise/policy/policy-input-builder.d.ts +0 -122
  310. package/dist/enterprise/policy/policy-input-builder.d.ts.map +0 -1
  311. package/dist/enterprise/scheduler/knex-store.d.ts +0 -47
  312. package/dist/enterprise/scheduler/knex-store.d.ts.map +0 -1
  313. package/dist/sdk/a2a-frontend-7EGXSULE.mjs +0 -1751
  314. package/dist/sdk/a2a-frontend-7EGXSULE.mjs.map +0 -1
  315. package/dist/sdk/check-provider-registry-IGNTM4MW.mjs +0 -32
  316. package/dist/sdk/chunk-6DDNEBZ7.mjs +0 -6119
  317. package/dist/sdk/chunk-6DDNEBZ7.mjs.map +0 -1
  318. package/dist/sdk/chunk-6LQEODDA.mjs.map +0 -1
  319. package/dist/sdk/chunk-7XKHFRPN.mjs +0 -739
  320. package/dist/sdk/chunk-D6O5SCPC.mjs +0 -621
  321. package/dist/sdk/chunk-D6O5SCPC.mjs.map +0 -1
  322. package/dist/sdk/chunk-H2ZWNJJO.mjs +0 -204
  323. package/dist/sdk/chunk-H2ZWNJJO.mjs.map +0 -1
  324. package/dist/sdk/chunk-HMVD3AEC.mjs +0 -47064
  325. package/dist/sdk/chunk-HMVD3AEC.mjs.map +0 -1
  326. package/dist/sdk/chunk-HQCCT6WP.mjs.map +0 -1
  327. package/dist/sdk/chunk-IY5PQ5EN.mjs +0 -1724
  328. package/dist/sdk/chunk-IY5PQ5EN.mjs.map +0 -1
  329. package/dist/sdk/chunk-PDQTEBOJ.mjs +0 -213
  330. package/dist/sdk/chunk-PDQTEBOJ.mjs.map +0 -1
  331. package/dist/sdk/chunk-PUHU6UY6.mjs +0 -391
  332. package/dist/sdk/chunk-PUHU6UY6.mjs.map +0 -1
  333. package/dist/sdk/chunk-PZADRRLX.mjs.map +0 -1
  334. package/dist/sdk/chunk-RQDLVMER.mjs +0 -1507
  335. package/dist/sdk/chunk-RQDLVMER.mjs.map +0 -1
  336. package/dist/sdk/chunk-TSX3YS3F.mjs +0 -825
  337. package/dist/sdk/chunk-TSX3YS3F.mjs.map +0 -1
  338. package/dist/sdk/chunk-WZQMTD7W.mjs +0 -33
  339. package/dist/sdk/chunk-WZQMTD7W.mjs.map +0 -1
  340. package/dist/sdk/chunk-XXAEN5KU.mjs +0 -197
  341. package/dist/sdk/chunk-XXAEN5KU.mjs.map +0 -1
  342. package/dist/sdk/chunk-ZCBVXBKG.mjs +0 -1150
  343. package/dist/sdk/chunk-ZCBVXBKG.mjs.map +0 -1
  344. package/dist/sdk/config-BI5ZXG6D.mjs +0 -16
  345. package/dist/sdk/dist-NERCHNRR.mjs +0 -7955
  346. package/dist/sdk/dist-NERCHNRR.mjs.map +0 -1
  347. package/dist/sdk/dist-YLO6HUFD.mjs.map +0 -1
  348. package/dist/sdk/email-frontend-JE7H3LBC.mjs +0 -701
  349. package/dist/sdk/email-frontend-JE7H3LBC.mjs.map +0 -1
  350. package/dist/sdk/failure-condition-evaluator-7WHZUYDC.mjs +0 -18
  351. package/dist/sdk/github-frontend-RGK4DPRI.mjs +0 -1394
  352. package/dist/sdk/github-frontend-RGK4DPRI.mjs.map +0 -1
  353. package/dist/sdk/host-YWXWROIE.mjs +0 -87
  354. package/dist/sdk/host-YWXWROIE.mjs.map +0 -1
  355. package/dist/sdk/knex-store-KCMFAMH5.mjs +0 -527
  356. package/dist/sdk/knex-store-KCMFAMH5.mjs.map +0 -1
  357. package/dist/sdk/loader-35YWX5UQ.mjs +0 -89
  358. package/dist/sdk/loader-35YWX5UQ.mjs.map +0 -1
  359. package/dist/sdk/opa-policy-engine-FY5D45YS.mjs +0 -655
  360. package/dist/sdk/opa-policy-engine-FY5D45YS.mjs.map +0 -1
  361. package/dist/sdk/routing-PHHRW2C7.mjs +0 -26
  362. package/dist/sdk/schedule-tool-ITD445EO.mjs +0 -38
  363. package/dist/sdk/schedule-tool-ITD445EO.mjs.map +0 -1
  364. package/dist/sdk/schedule-tool-ODMIDBMT.mjs.map +0 -1
  365. package/dist/sdk/schedule-tool-handler-5WPHFBOG.mjs +0 -42
  366. package/dist/sdk/schedule-tool-handler-5WPHFBOG.mjs.map +0 -1
  367. package/dist/sdk/schedule-tool-handler-IQSKBFLS.mjs.map +0 -1
  368. package/dist/sdk/session-registry-6PV6SGEJ.mjs +0 -10
  369. package/dist/sdk/session-registry-6PV6SGEJ.mjs.map +0 -1
  370. package/dist/sdk/slack-frontend-H7PX5GE7.mjs +0 -985
  371. package/dist/sdk/slack-frontend-H7PX5GE7.mjs.map +0 -1
  372. package/dist/sdk/task-evaluator-H3BXC7SE.mjs +0 -263
  373. package/dist/sdk/task-evaluator-H3BXC7SE.mjs.map +0 -1
  374. package/dist/sdk/teams-frontend-HCT4MTY4.mjs +0 -342
  375. package/dist/sdk/teams-frontend-HCT4MTY4.mjs.map +0 -1
  376. package/dist/sdk/telegram-frontend-YQRYDKPN.mjs +0 -586
  377. package/dist/sdk/telegram-frontend-YQRYDKPN.mjs.map +0 -1
  378. package/dist/sdk/trace-helpers-AM2QE5UZ.mjs.map +0 -1
  379. package/dist/sdk/trace-helpers-OMF4C24T.mjs +0 -31
  380. package/dist/sdk/trace-helpers-OMF4C24T.mjs.map +0 -1
  381. package/dist/sdk/trace-reader-OVE4DL2D.mjs +0 -270
  382. package/dist/sdk/trace-reader-OVE4DL2D.mjs.map +0 -1
  383. package/dist/sdk/trace-serializer-EBHTHZYT.mjs +0 -24
  384. package/dist/sdk/trace-serializer-EBHTHZYT.mjs.map +0 -1
  385. package/dist/sdk/track-execution-BULXL2XD.mjs +0 -249
  386. package/dist/sdk/track-execution-BULXL2XD.mjs.map +0 -1
  387. package/dist/sdk/utcp-check-provider-Q4PD5EP2.mjs +0 -16
  388. package/dist/sdk/utcp-check-provider-Q4PD5EP2.mjs.map +0 -1
  389. package/dist/sdk/validator-XTZJZZJH.mjs +0 -134
  390. package/dist/sdk/validator-XTZJZZJH.mjs.map +0 -1
  391. package/dist/sdk/whatsapp-frontend-72XEIUIR.mjs +0 -438
  392. package/dist/sdk/whatsapp-frontend-72XEIUIR.mjs.map +0 -1
  393. package/dist/sdk/workflow-check-provider-OVZDCL4E.mjs +0 -32
  394. package/dist/sdk/workflow-check-provider-OVZDCL4E.mjs.map +0 -1
  395. package/dist/sdk/workflow-check-provider-XOWQYWTC.mjs.map +0 -1
  396. /package/dist/sdk/{a2a-frontend-QVKJ7MVW.mjs.map → a2a-frontend-XCQ4CQUF.mjs.map} +0 -0
  397. /package/dist/sdk/{check-provider-registry-IGNTM4MW.mjs.map → check-provider-registry-2D3MCWP3.mjs.map} +0 -0
  398. /package/dist/sdk/{chunk-7XKHFRPN.mjs.map → chunk-S3GSZRYC.mjs.map} +0 -0
  399. /package/dist/sdk/{chunk-BBLBZVWC.mjs.map → chunk-VS3JE2DL.mjs.map} +0 -0
  400. /package/dist/sdk/{chunk-QLT42TX7.mjs.map → chunk-YETG675X.mjs.map} +0 -0
  401. /package/dist/sdk/{email-frontend-6O454VL5.mjs.map → email-frontend-AE5TYWNC.mjs.map} +0 -0
  402. /package/dist/sdk/{check-provider-registry-QUUL6JI2.mjs.map → failure-condition-evaluator-66PWLV3D.mjs.map} +0 -0
  403. /package/dist/sdk/{github-frontend-2T5PWYD5.mjs.map → github-frontend-BBFKCY4M.mjs.map} +0 -0
  404. /package/dist/sdk/{host-UZESVA6Z.mjs.map → host-UQRZDLT7.mjs.map} +0 -0
  405. /package/dist/sdk/{config-BI5ZXG6D.mjs.map → routing-Q647KUMO.mjs.map} +0 -0
  406. /package/dist/sdk/{failure-condition-evaluator-7WHZUYDC.mjs.map → schedule-tool-WMGSM6IT.mjs.map} +0 -0
  407. /package/dist/sdk/{failure-condition-evaluator-USY3ISVA.mjs.map → schedule-tool-handler-JMDHCGZ2.mjs.map} +0 -0
  408. /package/dist/sdk/{routing-PHHRW2C7.mjs.map → trace-helpers-AIUGQLK5.mjs.map} +0 -0
  409. /package/dist/sdk/{track-execution-VJJVJH6K.mjs.map → track-execution-CFRZXMEC.mjs.map} +0 -0
  410. /package/dist/sdk/{routing-TYXT3STD.mjs.map → workflow-check-provider-G7A67EPP.mjs.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/email/client.ts","../../src/email/markdown.ts","../../src/frontends/email-frontend.ts"],"sourcesContent":["// Multi-backend email client for Visor.\n// Supports IMAP+SMTP (universal) and Resend (managed) for send/receive.\n//\n// Receive backends:\n// - IMAP (imapflow): connect, fetchNewMessages, IDLE for push\n// - Resend polling: GET /emails/receiving to list inbound, then GET /emails/{id} for full content\n// - Resend webhook: webhook metadata → GET /emails/{id} for full content+headers\n//\n// Send backends:\n// - SMTP (nodemailer): createTransport once, multipart/alternative\n// - Resend (resend SDK): resend.emails.send() with threading headers\n\nimport { createHash, randomUUID } from 'crypto';\n\nexport interface EmailMessage {\n id: string; // internal ID (IMAP UID or Resend email_id)\n messageId: string; // Message-ID header\n inReplyTo?: string; // In-Reply-To header\n references?: string[]; // References header chain\n from: string;\n to: string[];\n cc?: string[];\n subject: string;\n text: string;\n html?: string;\n date: Date;\n}\n\nexport interface EmailSendOptions {\n to: string | string[];\n subject: string;\n text: string;\n html?: string;\n inReplyTo?: string;\n references?: string[];\n messageId?: string;\n}\n\nexport interface EmailSendResult {\n ok: boolean;\n messageId?: string;\n error?: string;\n}\n\nexport interface ImapConfig {\n host: string;\n port?: number;\n auth: { user: string; pass: string };\n secure?: boolean;\n pollInterval?: number; // seconds (default: 30)\n folder?: string; // default: 'INBOX'\n markRead?: boolean; // default: true\n}\n\nexport interface SmtpConfig {\n host: string;\n port?: number;\n auth: { user: string; pass: string };\n secure?: boolean;\n from: string;\n}\n\nexport interface ResendConfig {\n apiKey: string;\n from?: string; // for sending\n webhookSecret?: string; // for inbound verification\n}\n\ntype ReceiveBackend = 'imap' | 'resend';\ntype SendBackend = 'smtp' | 'resend';\n\nexport class EmailClient {\n private receiveBackend: ReceiveBackend;\n private sendBackend: SendBackend;\n\n // IMAP\n private imapConfig?: ImapConfig;\n private imapClient?: any; // ImapFlow instance (lazily created)\n\n // SMTP\n private smtpConfig?: SmtpConfig;\n private smtpTransport?: any; // nodemailer transport\n\n // Resend\n private resendConfig?: ResendConfig;\n private resendClient?: any; // Resend instance\n\n private fromAddress: string;\n\n constructor(opts: {\n receive?: { type?: string } & Partial<ImapConfig> & Partial<ResendConfig>;\n send?: { type?: string } & Partial<SmtpConfig> & Partial<ResendConfig>;\n }) {\n this.receiveBackend = (opts.receive?.type as ReceiveBackend) || 'imap';\n this.sendBackend = (opts.send?.type as SendBackend) || 'smtp';\n\n // Configure IMAP (only when receive config is provided)\n if (this.receiveBackend === 'imap' && opts.receive) {\n const r = opts.receive;\n if (!r.host && !process.env.EMAIL_IMAP_HOST) {\n throw new Error('IMAP host is required (set receive.host or EMAIL_IMAP_HOST)');\n }\n this.imapConfig = {\n host: r.host || process.env.EMAIL_IMAP_HOST!,\n port: r.port || parseInt(process.env.EMAIL_IMAP_PORT || '993'),\n auth: {\n user: r.auth?.user || process.env.EMAIL_USER || '',\n pass: r.auth?.pass || process.env.EMAIL_PASSWORD || '',\n },\n secure: r.secure ?? true,\n pollInterval: r.pollInterval || parseInt(process.env.EMAIL_POLL_INTERVAL || '30'),\n folder: r.folder || 'INBOX',\n markRead: r.markRead ?? true,\n };\n }\n\n // Configure Resend for receive\n if (this.receiveBackend === 'resend') {\n const r = opts.receive!;\n const apiKey = (r as any).api_key || r.apiKey || process.env.RESEND_API_KEY;\n if (!apiKey) throw new Error('Resend API key is required for receive');\n this.resendConfig = {\n apiKey,\n webhookSecret:\n (r as any).webhook_secret || r.webhookSecret || process.env.RESEND_WEBHOOK_SECRET,\n };\n }\n\n // Configure SMTP\n if (this.sendBackend === 'smtp') {\n const s = opts.send!;\n if (!s.host && !process.env.EMAIL_SMTP_HOST) {\n throw new Error('SMTP host is required (set send.host or EMAIL_SMTP_HOST)');\n }\n this.smtpConfig = {\n host: s.host || process.env.EMAIL_SMTP_HOST!,\n port: s.port || parseInt(process.env.EMAIL_SMTP_PORT || '587'),\n auth: {\n user: s.auth?.user || process.env.EMAIL_USER || '',\n pass: s.auth?.pass || process.env.EMAIL_PASSWORD || '',\n },\n secure: s.secure ?? true,\n from: s.from || process.env.EMAIL_FROM || '',\n };\n }\n\n // Configure Resend for send\n if (this.sendBackend === 'resend') {\n const s = opts.send!;\n const apiKey = (s as any).api_key || s.apiKey || process.env.RESEND_API_KEY;\n if (!apiKey) throw new Error('Resend API key is required for send');\n if (!this.resendConfig) {\n this.resendConfig = { apiKey };\n }\n this.resendConfig.from = s.from || process.env.EMAIL_FROM;\n }\n\n // Determine from address\n this.fromAddress =\n opts.send?.from ||\n process.env.EMAIL_FROM ||\n this.smtpConfig?.from ||\n this.resendConfig?.from ||\n '';\n }\n\n /** Get the configured from address */\n getFromAddress(): string {\n return this.fromAddress;\n }\n\n /** Get the receive backend type */\n getReceiveBackend(): ReceiveBackend {\n return this.receiveBackend;\n }\n\n // ─── IMAP Receive ───\n\n /** Connect to IMAP server */\n async connectImap(): Promise<void> {\n if (this.receiveBackend !== 'imap' || !this.imapConfig) return;\n const { ImapFlow } = await import('imapflow');\n this.imapClient = new ImapFlow({\n host: this.imapConfig.host,\n port: this.imapConfig.port || 993,\n secure: this.imapConfig.secure ?? true,\n auth: this.imapConfig.auth,\n logger: false,\n });\n await this.imapClient.connect();\n }\n\n /** Fetch unseen messages from IMAP */\n async fetchNewMessages(): Promise<EmailMessage[]> {\n if (!this.imapClient || !this.imapConfig) return [];\n const { simpleParser } = await import('mailparser');\n\n const lock = await this.imapClient.getMailboxLock(this.imapConfig.folder || 'INBOX');\n try {\n const messages: EmailMessage[] = [];\n for await (const msg of this.imapClient.fetch({ seen: false }, { source: true, uid: true })) {\n const parsed = await simpleParser(msg.source);\n const messageId = parsed.messageId || `<${randomUUID()}@visor>`;\n const inReplyTo = typeof parsed.inReplyTo === 'string' ? parsed.inReplyTo : undefined;\n const references = parsed.references\n ? Array.isArray(parsed.references)\n ? parsed.references\n : [parsed.references]\n : undefined;\n\n messages.push({\n id: String(msg.uid),\n messageId,\n inReplyTo,\n references,\n from: typeof parsed.from?.text === 'string' ? parsed.from.text : '',\n to: parsed.to\n ? Array.isArray(parsed.to)\n ? parsed.to.map((a: any) => a.text || '')\n : [parsed.to.text || '']\n : [],\n cc: parsed.cc\n ? Array.isArray(parsed.cc)\n ? parsed.cc.map((a: any) => a.text || '')\n : [parsed.cc.text || '']\n : undefined,\n subject: parsed.subject || '',\n text: parsed.text || '',\n html: parsed.html || undefined,\n date: parsed.date || new Date(),\n });\n\n // Mark as read\n if (this.imapConfig.markRead !== false) {\n try {\n await this.imapClient.messageFlagsAdd({ uid: msg.uid }, ['\\\\Seen'], { uid: true });\n } catch {}\n }\n }\n return messages;\n } finally {\n lock.release();\n }\n }\n\n /** Disconnect IMAP */\n async disconnectImap(): Promise<void> {\n if (this.imapClient) {\n try {\n await this.imapClient.logout();\n } catch {}\n this.imapClient = undefined;\n }\n }\n\n // ─── Resend Receive ───\n\n /** Fetch full email content from Resend by ID */\n async fetchResendEmail(emailId: string): Promise<EmailMessage | null> {\n try {\n const resend = await this.getResendClient();\n const result = await resend.emails.get(emailId);\n const email: any = (result as any).data || result;\n if (!email) return null;\n\n // Extract threading headers\n const headers: Record<string, string> = {};\n if (Array.isArray(email.headers)) {\n for (const h of email.headers) {\n if (h.name && h.value) headers[h.name.toLowerCase()] = h.value;\n }\n } else if (email.headers && typeof email.headers === 'object') {\n for (const [k, v] of Object.entries(email.headers)) {\n headers[k.toLowerCase()] = String(v);\n }\n }\n\n const references = headers['references']\n ? headers['references'].split(/\\s+/).filter(Boolean)\n : undefined;\n\n return {\n id: emailId,\n messageId: headers['message-id'] || `<${emailId}@resend>`,\n inReplyTo: headers['in-reply-to'] || undefined,\n references,\n from: typeof email.from === 'string' ? email.from : email.from?.email || '',\n to: Array.isArray(email.to)\n ? email.to.map((t: any) => (typeof t === 'string' ? t : t?.email || ''))\n : [String(email.to || '')],\n subject: email.subject || '',\n text: email.text || email.body || '',\n html: email.html || undefined,\n date: email.created_at ? new Date(email.created_at) : new Date(),\n };\n } catch (err) {\n console.warn(`[EmailClient] Failed to fetch Resend email ${emailId}: ${err}`);\n return null;\n }\n }\n\n /**\n * List received inbound emails from Resend via polling.\n * Uses GET /emails/receiving with cursor-based pagination.\n * Returns email summaries (call fetchResendEmail for full content).\n */\n async listReceivedEmails(opts?: { limit?: number; after?: string }): Promise<{\n emails: Array<{\n id: string;\n from: string;\n to: string[];\n subject: string;\n created_at: string;\n message_id?: string;\n }>;\n hasMore: boolean;\n lastId?: string;\n }> {\n if (!this.resendConfig?.apiKey) {\n return { emails: [], hasMore: false };\n }\n\n try {\n const params = new URLSearchParams();\n if (opts?.limit) params.set('limit', String(opts.limit));\n if (opts?.after) params.set('after', opts.after);\n const qs = params.toString();\n const url = `https://api.resend.com/emails/receiving${qs ? `?${qs}` : ''}`;\n\n const resp = await fetch(url, {\n headers: {\n Authorization: `Bearer ${this.resendConfig.apiKey}`,\n 'Content-Type': 'application/json',\n },\n });\n\n if (!resp.ok) {\n console.warn(\n `[EmailClient] Resend list received failed: ${resp.status} ${resp.statusText}`\n );\n return { emails: [], hasMore: false };\n }\n\n const body: any = await resp.json();\n const data = Array.isArray(body.data) ? body.data : [];\n const emails = data.map((e: any) => ({\n id: e.id,\n from: typeof e.from === 'string' ? e.from : e.from?.email || '',\n to: Array.isArray(e.to)\n ? e.to.map((t: any) => (typeof t === 'string' ? t : t?.email || ''))\n : [],\n subject: e.subject || '',\n created_at: e.created_at || '',\n message_id: e.message_id,\n }));\n\n const lastId = emails.length > 0 ? emails[emails.length - 1].id : undefined;\n return {\n emails,\n hasMore: !!body.has_more,\n lastId,\n };\n } catch (err) {\n console.warn(`[EmailClient] Resend list received error: ${err}`);\n return { emails: [], hasMore: false };\n }\n }\n\n /** Verify Resend webhook signature */\n async verifyResendWebhook(payload: string, headers: Record<string, string>): Promise<boolean> {\n if (!this.resendConfig?.webhookSecret) return true; // no secret = skip verification\n try {\n const { Webhook } = await import('svix');\n const wh = new Webhook(this.resendConfig.webhookSecret);\n wh.verify(payload, {\n 'svix-id': headers['svix-id'] || '',\n 'svix-timestamp': headers['svix-timestamp'] || '',\n 'svix-signature': headers['svix-signature'] || '',\n });\n return true;\n } catch {\n return false;\n }\n }\n\n // ─── Send ───\n\n /** Send an email via configured backend (SMTP or Resend) */\n async sendEmail(opts: EmailSendOptions): Promise<EmailSendResult> {\n const messageId = opts.messageId || `<${randomUUID()}@visor>`;\n\n if (this.sendBackend === 'resend') {\n return this.sendViaResend(opts, messageId);\n }\n return this.sendViaSmtp(opts, messageId);\n }\n\n private async sendViaSmtp(opts: EmailSendOptions, messageId: string): Promise<EmailSendResult> {\n try {\n const transport = await this.getSmtpTransport();\n const to = Array.isArray(opts.to) ? opts.to.join(', ') : opts.to;\n\n const mailOpts: Record<string, any> = {\n from: this.fromAddress,\n to,\n subject: opts.subject,\n text: opts.text,\n messageId,\n };\n\n if (opts.html) mailOpts.html = opts.html;\n if (opts.inReplyTo) mailOpts.inReplyTo = opts.inReplyTo;\n if (opts.references && opts.references.length > 0) {\n mailOpts.references = opts.references.join(' ');\n }\n\n const info = await transport.sendMail(mailOpts);\n return {\n ok: true,\n messageId: info.messageId || messageId,\n };\n } catch (err: any) {\n const errMsg = err?.message || String(err);\n console.warn(`[EmailClient] SMTP send failed: ${errMsg}`);\n return { ok: false, error: errMsg };\n }\n }\n\n private async sendViaResend(opts: EmailSendOptions, messageId: string): Promise<EmailSendResult> {\n try {\n const resend = await this.getResendClient();\n const to = Array.isArray(opts.to) ? opts.to : [opts.to];\n\n const headers: Record<string, string> = {};\n headers['Message-ID'] = messageId;\n if (opts.inReplyTo) headers['In-Reply-To'] = opts.inReplyTo;\n if (opts.references && opts.references.length > 0) {\n headers['References'] = opts.references.join(' ');\n }\n\n const sendOpts: Record<string, any> = {\n from: this.fromAddress,\n to,\n subject: opts.subject,\n text: opts.text,\n headers,\n };\n if (opts.html) sendOpts.html = opts.html;\n\n const result = await resend.emails.send(sendOpts);\n const data: any = (result as any).data || result;\n return {\n ok: true,\n messageId: data?.id ? `<${data.id}@resend>` : messageId,\n };\n } catch (err: any) {\n const errMsg = err?.message || String(err);\n console.warn(`[EmailClient] Resend send failed: ${errMsg}`);\n return { ok: false, error: errMsg };\n }\n }\n\n // ─── Lazy initialization helpers ───\n\n private async getSmtpTransport(): Promise<any> {\n if (this.smtpTransport) return this.smtpTransport;\n const nodemailer = await import('nodemailer');\n this.smtpTransport = nodemailer.createTransport({\n host: this.smtpConfig!.host,\n port: this.smtpConfig!.port || 587,\n secure: this.smtpConfig!.secure ?? true,\n auth: this.smtpConfig!.auth,\n });\n return this.smtpTransport;\n }\n\n private async getResendClient(): Promise<any> {\n if (this.resendClient) return this.resendClient;\n const { Resend } = await import('resend');\n this.resendClient = new Resend(this.resendConfig!.apiKey);\n return this.resendClient;\n }\n\n /** Generate a deterministic thread ID from a Message-ID chain */\n static deriveThreadId(rootMessageId: string): string {\n return createHash('sha256').update(rootMessageId).digest('hex').slice(0, 16);\n }\n}\n","// Markdown → email HTML converter.\n// Converts AI Markdown output to email-compatible HTML with inline styles.\n//\n// Supported conversions:\n// - # Header → <h1 style=\"...\">Header</h1>\n// - **bold** → <strong>bold</strong>\n// - *italic* → <em>italic</em>\n// - ~~strike~~ → <del>strike</del>\n// - `code` → <code style=\"...\">code</code>\n// - ```block``` → <pre style=\"...\"><code>block</code></pre>\n// - [label](url) → <a href=\"url\">label</a>\n// - > blockquote → <blockquote style=\"...\">text</blockquote>\n// - - item → <ul><li>item</li></ul>\n// - 1. item → <ol><li>item</li></ol>\n// - --- → <hr>\n// HTML entities escaped: & < >\n\n/** Escape HTML entities in text */\nexport function escapeHtml(text: string): string {\n return text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n}\n\n/**\n * Convert Markdown text to email-compatible HTML.\n * Processes line-by-line, respecting fenced code blocks.\n */\nexport function markdownToEmailHtml(text: string): string {\n if (!text || typeof text !== 'string') return '';\n\n const lines = text.split(/\\r?\\n/);\n const result: string[] = [];\n let inCodeBlock = false;\n let codeBlockLang = '';\n let codeLines: string[] = [];\n let inBlockquote = false;\n let blockquoteLines: string[] = [];\n const listStack: ('ul' | 'ol')[] = [];\n\n const flushBlockquote = () => {\n if (blockquoteLines.length > 0) {\n result.push(\n `<blockquote style=\"border-left:3px solid #ccc;margin:8px 0;padding:4px 12px;color:#555;\">${blockquoteLines.join('<br>')}</blockquote>`\n );\n blockquoteLines = [];\n inBlockquote = false;\n }\n };\n\n const flushList = () => {\n while (listStack.length > 0) {\n const tag = listStack.pop()!;\n result.push(`</${tag}>`);\n }\n };\n\n for (let i = 0; i < lines.length; i++) {\n const trimmed = lines[i].trimStart();\n\n // Track fenced code blocks\n if (/^```/.test(trimmed)) {\n if (!inCodeBlock) {\n flushBlockquote();\n flushList();\n inCodeBlock = true;\n codeBlockLang = trimmed.slice(3).trim();\n codeLines = [];\n } else {\n const escaped = codeLines.map(l => escapeHtml(l)).join('\\n');\n const langAttr = codeBlockLang ? ` class=\"language-${escapeHtml(codeBlockLang)}\"` : '';\n result.push(\n `<pre style=\"background:#f4f4f4;padding:12px;border-radius:4px;overflow-x:auto;font-size:13px;\"><code${langAttr}>${escaped}</code></pre>`\n );\n inCodeBlock = false;\n codeBlockLang = '';\n codeLines = [];\n }\n continue;\n }\n if (inCodeBlock) {\n codeLines.push(lines[i]);\n continue;\n }\n\n // Blockquotes: > text\n const bqMatch = /^>\\s?(.*)$/.exec(trimmed);\n if (bqMatch) {\n flushList();\n inBlockquote = true;\n blockquoteLines.push(convertInline(bqMatch[1]));\n continue;\n } else if (inBlockquote) {\n flushBlockquote();\n }\n\n // Bullet lists: \"- item\" or \"* item\"\n const bulletMatch = /^(\\s*)([-*])\\s+(.+)$/.exec(lines[i]);\n if (bulletMatch) {\n if (listStack.length === 0 || listStack[listStack.length - 1] !== 'ul') {\n flushList();\n listStack.push('ul');\n result.push('<ul style=\"margin:4px 0;padding-left:24px;\">');\n }\n result.push(`<li>${convertInline(bulletMatch[3])}</li>`);\n continue;\n }\n\n // Numbered lists: \"1. item\"\n const numMatch = /^(\\s*)(\\d+)\\.\\s+(.+)$/.exec(lines[i]);\n if (numMatch) {\n if (listStack.length === 0 || listStack[listStack.length - 1] !== 'ol') {\n flushList();\n listStack.push('ol');\n result.push('<ol style=\"margin:4px 0;padding-left:24px;\">');\n }\n result.push(`<li>${convertInline(numMatch[3])}</li>`);\n continue;\n }\n\n // Close any open list if we hit a non-list line\n if (listStack.length > 0) flushList();\n\n const line = lines[i];\n\n // Headers: # Header → <h1>...</h1> etc.\n const headerMatch = /^(#{1,6})\\s+(.+)$/.exec(line.trimStart());\n if (headerMatch) {\n const level = headerMatch[1].length;\n const sizes: Record<number, string> = {\n 1: '24px',\n 2: '20px',\n 3: '18px',\n 4: '16px',\n 5: '14px',\n 6: '13px',\n };\n result.push(\n `<h${level} style=\"font-size:${sizes[level]};margin:16px 0 8px 0;\">${convertInline(headerMatch[2].trim())}</h${level}>`\n );\n continue;\n }\n\n // Horizontal rules\n if (/^[-*_]{3,}\\s*$/.test(trimmed)) {\n result.push('<hr style=\"border:none;border-top:1px solid #ddd;margin:16px 0;\">');\n continue;\n }\n\n // Empty lines → <br>\n if (trimmed === '') {\n result.push('<br>');\n continue;\n }\n\n // Regular line: apply inline conversions\n result.push(`<p style=\"margin:4px 0;\">${convertInline(line)}</p>`);\n }\n\n // Close any unclosed code block\n if (inCodeBlock && codeLines.length > 0) {\n const escaped = codeLines.map(l => escapeHtml(l)).join('\\n');\n result.push(\n `<pre style=\"background:#f4f4f4;padding:12px;border-radius:4px;overflow-x:auto;font-size:13px;\"><code>${escaped}</code></pre>`\n );\n }\n flushBlockquote();\n flushList();\n\n return result.join('\\n');\n}\n\n/**\n * Apply inline Markdown conversions to a single line.\n * Order matters: escape HTML first, then apply formatting.\n */\nfunction convertInline(line: string): string {\n // First, identify and protect inline code spans\n const codeSpans: string[] = [];\n let processed = line.replace(/`([^`]+)`/g, (_m, code: string) => {\n const idx = codeSpans.length;\n codeSpans.push(\n `<code style=\"background:#f0f0f0;padding:1px 4px;border-radius:3px;font-size:13px;\">${escapeHtml(code)}</code>`\n );\n return `\\x00CODE${idx}\\x00`;\n });\n\n // Escape HTML in non-code portions\n processed = escapeHtml(processed);\n\n // Images: ![alt](url)\n processed = processed.replace(\n /!\\[([^\\]]*)\\]\\(([^)\\s]+)(?:\\s+&quot;[^&]*&quot;)?\\)/g,\n (_m, alt: string, url: string) =>\n `<img src=\"${url}\" alt=\"${alt || 'image'}\" style=\"max-width:100%;\">`\n );\n\n // Links: [label](url) → <a href=\"url\">label</a>\n processed = processed.replace(\n /\\[([^\\]]+)\\]\\(([^)\\s]+)(?:\\s+&quot;[^&]*&quot;)?\\)/g,\n (_m, label: string, url: string) => `<a href=\"${url}\" style=\"color:#0066cc;\">${label}</a>`\n );\n\n // Bold: **text** or __text__\n processed = processed.replace(/\\*\\*([^*]+)\\*\\*/g, '<strong>$1</strong>');\n processed = processed.replace(/__([^_]+)__/g, '<strong>$1</strong>');\n\n // Italic: *text* (but not inside bold)\n processed = processed.replace(/(?<!\\*)\\*([^*]+)\\*(?!\\*)/g, '<em>$1</em>');\n\n // Strikethrough: ~~text~~\n processed = processed.replace(/~~([^~]+)~~/g, '<del>$1</del>');\n\n // Restore code spans\n processed = processed.replace(\n /\\x00CODE(\\d+)\\x00/g,\n (_m, idx: string) => codeSpans[parseInt(idx)]\n );\n\n return processed;\n}\n\n/**\n * Wrap body HTML in a complete email HTML template with inline CSS.\n */\nexport function wrapInEmailTemplate(bodyHtml: string): string {\n return `<!DOCTYPE html>\n<html>\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n</head>\n<body style=\"font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;font-size:14px;line-height:1.5;color:#333;max-width:600px;margin:0 auto;padding:16px;\">\n${bodyHtml}\n</body>\n</html>`;\n}\n\n/**\n * Format text as a plain-text email quote (prepend \"> \" to each line).\n */\nexport function formatEmailQuote(text: string): string {\n if (!text) return '';\n return text\n .split(/\\r?\\n/)\n .map(l => `> ${l}`)\n .join('\\n');\n}\n\n/**\n * Add \"Re: \" prefix to subject if not already present.\n */\nexport function addRePrefix(subject: string): string {\n if (!subject) return 'Re:';\n if (/^Re:/i.test(subject.trim())) return subject.trim();\n return `Re: ${subject.trim()}`;\n}\n\n/**\n * Main entry point: convert Markdown to email HTML body (not wrapped in template).\n */\nexport function formatEmailText(text: string): string {\n return markdownToEmailHtml(text);\n}\n","/**\n * Email Frontend for Visor workflows.\n *\n * Mirrors the TelegramFrontend pattern:\n * - Sends AI replies as threaded emails (In-Reply-To, References headers)\n * - Converts Markdown to email HTML format\n * - No reaction equivalent (CheckScheduled is a no-op)\n */\nimport type { Frontend, FrontendContext } from './host';\nimport { EmailClient, type EmailSendOptions } from '../email/client';\nimport { formatEmailText, wrapInEmailTemplate, addRePrefix } from '../email/markdown';\n\ntype EmailFrontendConfig = {\n send?: {\n type?: string;\n host?: string;\n port?: number;\n auth?: { user?: string; pass?: string };\n secure?: boolean;\n from?: string;\n api_key?: string;\n };\n};\n\nexport class EmailFrontend implements Frontend {\n public readonly name = 'email';\n private subs: Array<{ unsubscribe(): void }> = [];\n private cfg: EmailFrontendConfig;\n private errorNotified: boolean = false;\n\n constructor(config?: EmailFrontendConfig) {\n this.cfg = config || {};\n }\n\n start(ctx: FrontendContext): void {\n const bus = ctx.eventBus;\n\n try {\n ctx.logger.info(`[email-frontend] started`);\n } catch {}\n\n // CheckCompleted: send reply email\n this.subs.push(\n bus.on('CheckCompleted', async (env: any) => {\n const ev = (env && env.payload) || env;\n await this.maybePostDirectReply(ctx, ev.checkId, ev.result).catch(() => {});\n })\n );\n\n // CheckErrored: send error email\n this.subs.push(\n bus.on('CheckErrored', async (env: any) => {\n const ev = (env && env.payload) || env;\n const message = ev?.error?.message || 'Execution error';\n await this.maybePostError(ctx, 'Check failed', message, ev?.checkId).catch(() => {});\n })\n );\n\n // Shutdown: send fatal error email\n this.subs.push(\n bus.on('Shutdown', async (env: any) => {\n const ev = (env && env.payload) || env;\n const message = ev?.error?.message || 'Fatal error';\n await this.maybePostError(ctx, 'Run failed', message).catch(() => {});\n })\n );\n\n // CheckScheduled: no-op for email (no reaction equivalent)\n // StateTransition: no-op for email\n }\n\n stop(): void {\n for (const s of this.subs) s.unsubscribe();\n this.subs = [];\n }\n\n private getEmailClient(ctx: FrontendContext): EmailClient | undefined {\n // Prefer injected client (for tests or shared runner context)\n const injected = (ctx as any).emailClient;\n if (injected) return injected;\n // Lazy-create from config\n try {\n const emailConfig = (ctx as any).webhookContext?.webhookData?.get('/bots/email/message');\n const sendCfg = this.cfg.send || (emailConfig as any)?.sendConfig;\n if (sendCfg || process.env.EMAIL_SMTP_HOST || process.env.RESEND_API_KEY) {\n return new EmailClient({\n send: sendCfg || {\n type: process.env.RESEND_API_KEY ? 'resend' : 'smtp',\n },\n });\n }\n } catch {}\n return undefined;\n }\n\n private getInboundEmailPayload(ctx: FrontendContext): any | null {\n try {\n const endpoint = '/bots/email/message';\n return (ctx as any).webhookContext?.webhookData?.get(endpoint) || null;\n } catch {\n return null;\n }\n }\n\n private async maybePostError(\n ctx: FrontendContext,\n title: string,\n message: string,\n checkId?: string\n ): Promise<void> {\n if (this.errorNotified) return;\n const client = this.getEmailClient(ctx);\n if (!client) return;\n const payload = this.getInboundEmailPayload(ctx);\n const ev: any = payload?.event;\n if (!ev?.from) return;\n\n let text = `${title}`;\n if (checkId) text += `\\nCheck: ${checkId}`;\n if (message) text += `\\n${message}`;\n\n const sendOpts: EmailSendOptions = {\n to: ev.from,\n subject: ev.subject ? addRePrefix(ev.subject) : `Visor: ${title}`,\n text,\n html: wrapInEmailTemplate(`<p><strong>${title}</strong></p><p>${message}</p>`),\n };\n\n // Thread the reply\n if (ev.messageId) {\n sendOpts.inReplyTo = ev.messageId;\n sendOpts.references = ev.references ? [...ev.references, ev.messageId] : [ev.messageId];\n }\n\n await client.sendEmail(sendOpts);\n this.errorNotified = true;\n }\n\n private async maybePostDirectReply(\n ctx: FrontendContext,\n checkId: string,\n result: { output?: any; content?: string }\n ): Promise<void> {\n try {\n const cfg: any = ctx.config || {};\n const checkCfg: any = cfg.checks?.[checkId];\n if (!checkCfg) return;\n\n const providerType = (checkCfg.type as string) || '';\n const isAi = providerType === 'ai';\n const isLogChat = providerType === 'log' && checkCfg.group === 'chat';\n const isWorkflow = providerType === 'workflow';\n if (!isAi && !isLogChat && !isWorkflow) return;\n if (checkCfg.criticality === 'internal') return;\n\n // For AI checks, only post simple schemas\n if (isAi) {\n const schema = checkCfg.schema;\n if (typeof schema === 'string') {\n const simpleSchemas = ['code-review', 'markdown', 'text', 'plain'];\n if (!simpleSchemas.includes(schema)) return;\n }\n }\n\n const client = this.getEmailClient(ctx);\n if (!client) return;\n\n const payload = this.getInboundEmailPayload(ctx);\n const ev: any = payload?.event;\n if (!ev?.from) {\n ctx.logger.warn(`[email-frontend] skip posting reply for ${checkId}: missing from address`);\n return;\n }\n\n // Extract text (same logic as TelegramFrontend/SlackFrontend)\n const out: any = (result as any)?.output;\n let text: string | undefined;\n if (out && typeof out.text === 'string' && out.text.trim().length > 0) {\n text = out.text.trim();\n } else if (isAi && typeof checkCfg.schema === 'string') {\n if (\n typeof (result as any)?.content === 'string' &&\n (result as any).content.trim().length > 0\n ) {\n text = (result as any).content.trim();\n }\n } else if (isLogChat && typeof (result as any)?.logOutput === 'string') {\n const raw = (result as any).logOutput;\n if (raw.trim().length > 0) text = raw.trim();\n }\n\n // Append raw output\n if (out && typeof out._rawOutput === 'string' && out._rawOutput.trim().length > 0) {\n text = (text || '') + '\\n\\n' + out._rawOutput.trim();\n }\n\n if (!text) {\n ctx.logger.info(`[email-frontend] skip posting reply for ${checkId}: no renderable text`);\n return;\n }\n\n // Normalize literal \\n escape sequences\n text = text.replace(/\\\\n/g, '\\n');\n\n const htmlBody = formatEmailText(text);\n const sendOpts: EmailSendOptions = {\n to: ev.from,\n subject: ev.subject ? addRePrefix(ev.subject) : `Re: Visor response`,\n text,\n html: wrapInEmailTemplate(htmlBody),\n };\n\n // Thread the reply\n if (ev.messageId) {\n sendOpts.inReplyTo = ev.messageId;\n sendOpts.references = ev.references ? [...ev.references, ev.messageId] : [ev.messageId];\n }\n\n const sendResult = await client.sendEmail(sendOpts);\n\n if (!sendResult.ok) {\n ctx.logger.warn(\n `[email-frontend] failed to send reply for ${checkId}: ${sendResult.error}`\n );\n return;\n }\n ctx.logger.info(\n `[email-frontend] sent reply for ${checkId} to ${ev.from} (messageId=${sendResult.messageId})`\n );\n } catch (err) {\n try {\n ctx.logger.warn(\n `[email-frontend] maybePostDirectReply failed for ${checkId}: ${\n err instanceof Error ? err.message : String(err)\n }`\n );\n } catch {}\n }\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,18 +0,0 @@
1
- import {
2
- FailureConditionEvaluator,
3
- init_failure_condition_evaluator
4
- } from "./chunk-PZADRRLX.mjs";
5
- import "./chunk-ZCBVXBKG.mjs";
6
- import "./chunk-6LQEODDA.mjs";
7
- import "./chunk-FWWLD555.mjs";
8
- import "./chunk-25IC7KXZ.mjs";
9
- import "./chunk-LW3INISN.mjs";
10
- import "./chunk-4MHHELVZ.mjs";
11
- import "./chunk-6E625R3C.mjs";
12
- import "./chunk-B2OUZAWY.mjs";
13
- import "./chunk-J7LXIPZS.mjs";
14
- init_failure_condition_evaluator();
15
- export {
16
- FailureConditionEvaluator
17
- };
18
- //# sourceMappingURL=failure-condition-evaluator-7WHZUYDC.mjs.map