@probelabs/visor 0.1.170 → 0.1.171-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 (130) hide show
  1. package/defaults/code-talk.yaml +39 -238
  2. package/defaults/intent-router.yaml +1 -0
  3. package/dist/agent-protocol/task-store.d.ts +5 -0
  4. package/dist/agent-protocol/task-store.d.ts.map +1 -1
  5. package/dist/agent-protocol/tasks-cli-handler.d.ts.map +1 -1
  6. package/dist/agent-protocol/track-execution.d.ts +34 -0
  7. package/dist/agent-protocol/track-execution.d.ts.map +1 -0
  8. package/dist/cli-main.d.ts.map +1 -1
  9. package/dist/cli.d.ts.map +1 -1
  10. package/dist/defaults/code-talk.yaml +39 -238
  11. package/dist/defaults/intent-router.yaml +1 -0
  12. package/dist/frontends/host.d.ts +2 -0
  13. package/dist/frontends/host.d.ts.map +1 -1
  14. package/dist/generated/config-schema.d.ts +10 -6
  15. package/dist/generated/config-schema.d.ts.map +1 -1
  16. package/dist/generated/config-schema.json +10 -6
  17. package/dist/index.js +2534 -116
  18. package/dist/scheduler/scheduler.d.ts +4 -0
  19. package/dist/scheduler/scheduler.d.ts.map +1 -1
  20. package/dist/sdk/{a2a-frontend-YTXQGUDH.mjs → a2a-frontend-GUEGI5SX.mjs} +20 -3
  21. package/dist/sdk/a2a-frontend-GUEGI5SX.mjs.map +1 -0
  22. package/dist/sdk/{check-provider-registry-5CMLUEFG.mjs → check-provider-registry-7P2QIKJR.mjs} +8 -8
  23. package/dist/sdk/{check-provider-registry-STRAOYRJ.mjs → check-provider-registry-ZUU7KSKR.mjs} +7 -7
  24. package/dist/sdk/{chunk-WNLCRRQO.mjs → chunk-5SBX4KLG.mjs} +2 -2
  25. package/dist/sdk/{chunk-2CNT2EB3.mjs → chunk-6FXVWL6M.mjs} +3 -3
  26. package/dist/sdk/{chunk-KFKHU6CM.mjs → chunk-6VVXKXTI.mjs} +19 -2
  27. package/dist/sdk/chunk-6VVXKXTI.mjs.map +1 -0
  28. package/dist/sdk/{chunk-SVBF7Y2R.mjs → chunk-A2YVTICA.mjs} +11 -7
  29. package/dist/sdk/chunk-A2YVTICA.mjs.map +1 -0
  30. package/dist/sdk/{chunk-DLO46M5M.mjs → chunk-CXA3WUOB.mjs} +62 -23
  31. package/dist/sdk/chunk-CXA3WUOB.mjs.map +1 -0
  32. package/dist/sdk/{chunk-62PXPI6Q.mjs → chunk-GGNR347O.mjs} +8 -2
  33. package/dist/sdk/chunk-GGNR347O.mjs.map +1 -0
  34. package/dist/sdk/{chunk-NYQTQYGU.mjs → chunk-YCPJBOJB.mjs} +68 -29
  35. package/dist/sdk/chunk-YCPJBOJB.mjs.map +1 -0
  36. package/dist/sdk/{config-IHECYTNT.mjs → config-6GWD673K.mjs} +2 -2
  37. package/dist/sdk/{failure-condition-evaluator-NJO6DSL4.mjs → failure-condition-evaluator-5HRNHZCC.mjs} +4 -3
  38. package/dist/sdk/{github-frontend-BAPXDLBB.mjs → github-frontend-ZZRU6P43.mjs} +7 -7
  39. package/dist/sdk/{host-6HV5FMD7.mjs → host-A7UNRBQU.mjs} +3 -3
  40. package/dist/sdk/host-A7UNRBQU.mjs.map +1 -0
  41. package/dist/sdk/{host-K6IZWJG3.mjs → host-ECXTIDWG.mjs} +3 -3
  42. package/dist/sdk/host-ECXTIDWG.mjs.map +1 -0
  43. package/dist/sdk/knex-store-CRORFJE6.mjs +527 -0
  44. package/dist/sdk/knex-store-CRORFJE6.mjs.map +1 -0
  45. package/dist/sdk/loader-QMJFFST6.mjs +89 -0
  46. package/dist/sdk/loader-QMJFFST6.mjs.map +1 -0
  47. package/dist/sdk/opa-policy-engine-S2S2ULEI.mjs +655 -0
  48. package/dist/sdk/opa-policy-engine-S2S2ULEI.mjs.map +1 -0
  49. package/dist/sdk/{routing-RWZEXSRZ.mjs → routing-AMRQYI7J.mjs} +5 -4
  50. package/dist/sdk/{schedule-tool-JCKV47FU.mjs → schedule-tool-DGVJDHJM.mjs} +7 -7
  51. package/dist/sdk/{schedule-tool-TGWPINHO.mjs → schedule-tool-I6VG3ZVA.mjs} +8 -8
  52. package/dist/sdk/{schedule-tool-handler-OEBLE5AB.mjs → schedule-tool-handler-DFUC5S55.mjs} +8 -8
  53. package/dist/sdk/{schedule-tool-handler-UQWDPFP6.mjs → schedule-tool-handler-XLCSBU3E.mjs} +7 -7
  54. package/dist/sdk/sdk.d.mts +4 -0
  55. package/dist/sdk/sdk.d.ts +4 -0
  56. package/dist/sdk/sdk.js +1926 -408
  57. package/dist/sdk/sdk.js.map +1 -1
  58. package/dist/sdk/sdk.mjs +7 -7
  59. package/dist/sdk/{trace-helpers-ZYN23GBG.mjs → trace-helpers-4ZBZWH5W.mjs} +3 -2
  60. package/dist/sdk/track-execution-VWLQIGY7.mjs +82 -0
  61. package/dist/sdk/track-execution-VWLQIGY7.mjs.map +1 -0
  62. package/dist/sdk/validator-XTZJZZJH.mjs +134 -0
  63. package/dist/sdk/validator-XTZJZZJH.mjs.map +1 -0
  64. package/dist/sdk/{workflow-check-provider-OAOD3A5U.mjs → workflow-check-provider-AKXDIL2Y.mjs} +8 -8
  65. package/dist/sdk/{workflow-check-provider-VDSZR7Y5.mjs → workflow-check-provider-KQNLEQEY.mjs} +7 -7
  66. package/dist/slack/socket-runner.d.ts +4 -0
  67. package/dist/slack/socket-runner.d.ts.map +1 -1
  68. package/dist/telemetry/trace-helpers.d.ts.map +1 -1
  69. package/dist/tui/chat-runner.d.ts +4 -0
  70. package/dist/tui/chat-runner.d.ts.map +1 -1
  71. package/dist/types/cli.d.ts +2 -0
  72. package/dist/types/cli.d.ts.map +1 -1
  73. package/dist/types/config.d.ts +4 -0
  74. package/dist/types/config.d.ts.map +1 -1
  75. package/dist/utils/instance-id.d.ts +9 -0
  76. package/dist/utils/instance-id.d.ts.map +1 -0
  77. package/package.json +2 -2
  78. package/dist/output/traces/run-2026-03-07T15-43-18-430Z.ndjson +0 -138
  79. package/dist/output/traces/run-2026-03-07T15-43-56-196Z.ndjson +0 -2266
  80. package/dist/sdk/a2a-frontend-IPLHACI6.mjs +0 -1605
  81. package/dist/sdk/a2a-frontend-IPLHACI6.mjs.map +0 -1
  82. package/dist/sdk/a2a-frontend-YTXQGUDH.mjs.map +0 -1
  83. package/dist/sdk/check-provider-registry-T5FWS4SW.mjs +0 -30
  84. package/dist/sdk/chunk-47WAHGHK.mjs +0 -1502
  85. package/dist/sdk/chunk-47WAHGHK.mjs.map +0 -1
  86. package/dist/sdk/chunk-62PXPI6Q.mjs.map +0 -1
  87. package/dist/sdk/chunk-DLO46M5M.mjs.map +0 -1
  88. package/dist/sdk/chunk-FTUGQP5L.mjs +0 -739
  89. package/dist/sdk/chunk-KFKHU6CM.mjs.map +0 -1
  90. package/dist/sdk/chunk-LB77GR4Q.mjs +0 -44771
  91. package/dist/sdk/chunk-LB77GR4Q.mjs.map +0 -1
  92. package/dist/sdk/chunk-NYQTQYGU.mjs.map +0 -1
  93. package/dist/sdk/chunk-SVBF7Y2R.mjs.map +0 -1
  94. package/dist/sdk/chunk-WNLCRRQO.mjs.map +0 -1
  95. package/dist/sdk/chunk-ZM7ALGTE.mjs +0 -443
  96. package/dist/sdk/chunk-ZM7ALGTE.mjs.map +0 -1
  97. package/dist/sdk/failure-condition-evaluator-T67YFO2Z.mjs +0 -17
  98. package/dist/sdk/github-frontend-WPTKI4AY.mjs +0 -1386
  99. package/dist/sdk/github-frontend-WPTKI4AY.mjs.map +0 -1
  100. package/dist/sdk/host-6HV5FMD7.mjs.map +0 -1
  101. package/dist/sdk/host-K6IZWJG3.mjs.map +0 -1
  102. package/dist/sdk/routing-SAGHEUOA.mjs +0 -25
  103. package/dist/sdk/schedule-tool-H4G5ITNL.mjs +0 -36
  104. package/dist/sdk/schedule-tool-handler-UQWDPFP6.mjs.map +0 -1
  105. package/dist/sdk/schedule-tool-handler-ZDAD6SWM.mjs +0 -40
  106. package/dist/sdk/schedule-tool-handler-ZDAD6SWM.mjs.map +0 -1
  107. package/dist/sdk/trace-helpers-M7RVAZQ2.mjs +0 -25
  108. package/dist/sdk/trace-helpers-M7RVAZQ2.mjs.map +0 -1
  109. package/dist/sdk/trace-helpers-ZYN23GBG.mjs.map +0 -1
  110. package/dist/sdk/workflow-check-provider-FAO4AUGB.mjs +0 -30
  111. package/dist/sdk/workflow-check-provider-FAO4AUGB.mjs.map +0 -1
  112. package/dist/sdk/workflow-check-provider-OAOD3A5U.mjs.map +0 -1
  113. package/dist/sdk/workflow-check-provider-VDSZR7Y5.mjs.map +0 -1
  114. package/dist/traces/run-2026-03-07T15-43-18-430Z.ndjson +0 -138
  115. package/dist/traces/run-2026-03-07T15-43-56-196Z.ndjson +0 -2266
  116. /package/dist/sdk/{check-provider-registry-5CMLUEFG.mjs.map → check-provider-registry-7P2QIKJR.mjs.map} +0 -0
  117. /package/dist/sdk/{check-provider-registry-STRAOYRJ.mjs.map → check-provider-registry-ZUU7KSKR.mjs.map} +0 -0
  118. /package/dist/sdk/{chunk-FTUGQP5L.mjs.map → chunk-5SBX4KLG.mjs.map} +0 -0
  119. /package/dist/sdk/{chunk-2CNT2EB3.mjs.map → chunk-6FXVWL6M.mjs.map} +0 -0
  120. /package/dist/sdk/{check-provider-registry-T5FWS4SW.mjs.map → config-6GWD673K.mjs.map} +0 -0
  121. /package/dist/sdk/{config-IHECYTNT.mjs.map → failure-condition-evaluator-5HRNHZCC.mjs.map} +0 -0
  122. /package/dist/sdk/{github-frontend-BAPXDLBB.mjs.map → github-frontend-ZZRU6P43.mjs.map} +0 -0
  123. /package/dist/sdk/{failure-condition-evaluator-NJO6DSL4.mjs.map → routing-AMRQYI7J.mjs.map} +0 -0
  124. /package/dist/sdk/{failure-condition-evaluator-T67YFO2Z.mjs.map → schedule-tool-DGVJDHJM.mjs.map} +0 -0
  125. /package/dist/sdk/{routing-RWZEXSRZ.mjs.map → schedule-tool-I6VG3ZVA.mjs.map} +0 -0
  126. /package/dist/sdk/{routing-SAGHEUOA.mjs.map → schedule-tool-handler-DFUC5S55.mjs.map} +0 -0
  127. /package/dist/sdk/{schedule-tool-H4G5ITNL.mjs.map → schedule-tool-handler-XLCSBU3E.mjs.map} +0 -0
  128. /package/dist/sdk/{schedule-tool-JCKV47FU.mjs.map → trace-helpers-4ZBZWH5W.mjs.map} +0 -0
  129. /package/dist/sdk/{schedule-tool-TGWPINHO.mjs.map → workflow-check-provider-AKXDIL2Y.mjs.map} +0 -0
  130. /package/dist/sdk/{schedule-tool-handler-OEBLE5AB.mjs.map → workflow-check-provider-KQNLEQEY.mjs.map} +0 -0
@@ -1,3 +1,7 @@
1
+ import {
2
+ getInstanceId,
3
+ init_instance_id
4
+ } from "./chunk-6VVXKXTI.mjs";
1
5
  import {
2
6
  SpanStatusCode,
3
7
  context,
@@ -202,7 +206,7 @@ var require_package = __commonJS({
202
206
  "@opentelemetry/sdk-node": "^0.203.0",
203
207
  "@opentelemetry/sdk-trace-base": "^1.30.1",
204
208
  "@opentelemetry/semantic-conventions": "^1.30.1",
205
- "@probelabs/probe": "^0.6.0-rc286",
209
+ "@probelabs/probe": "^0.6.0-rc290",
206
210
  "@types/commander": "^2.12.0",
207
211
  "@types/uuid": "^10.0.0",
208
212
  acorn: "^8.16.0",
@@ -381,6 +385,7 @@ function getVisorRunAttributes() {
381
385
  if (commitFull) {
382
386
  attrs["visor.commit.sha"] = commitFull;
383
387
  }
388
+ attrs["visor.instance_id"] = getInstanceId();
384
389
  return attrs;
385
390
  }
386
391
  function __getOrCreateNdjsonPath() {
@@ -420,6 +425,7 @@ var __ndjsonPath;
420
425
  var init_trace_helpers = __esm({
421
426
  "src/telemetry/trace-helpers.ts"() {
422
427
  init_lazy_otel();
428
+ init_instance_id();
423
429
  __ndjsonPath = null;
424
430
  }
425
431
  });
@@ -440,4 +446,4 @@ export {
440
446
  trace_helpers_exports,
441
447
  init_trace_helpers
442
448
  };
443
- //# sourceMappingURL=chunk-62PXPI6Q.mjs.map
449
+ //# sourceMappingURL=chunk-GGNR347O.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/telemetry/fallback-ndjson.ts","../../package.json","../../src/telemetry/trace-helpers.ts"],"sourcesContent":["import * as fs from 'fs';\nimport * as path from 'path';\n\nlet CURRENT_FILE: string | null = null;\nlet dirReady = false;\nlet writeChain: Promise<void> = Promise.resolve();\nfunction resolveTargetPath(outDir: string): string {\n if (process.env.VISOR_FALLBACK_TRACE_FILE) {\n CURRENT_FILE = process.env.VISOR_FALLBACK_TRACE_FILE;\n return CURRENT_FILE;\n }\n if (CURRENT_FILE) return CURRENT_FILE;\n const ts = new Date().toISOString().replace(/[:.]/g, '-');\n CURRENT_FILE = path.join(outDir, `${ts}.ndjson`);\n return CURRENT_FILE;\n}\n\nfunction isEnabled(): boolean {\n // Enable when CLI set a fallback file (serverless mode), or when explicit file sink is enabled\n if (process.env.VISOR_FALLBACK_TRACE_FILE) return true;\n return (\n process.env.VISOR_TELEMETRY_ENABLED === 'true' &&\n (process.env.VISOR_TELEMETRY_SINK || 'file') === 'file'\n );\n}\n\nfunction appendAsync(outDir: string, line: string): void {\n writeChain = writeChain\n .then(async () => {\n if (!dirReady) {\n try {\n await fs.promises.mkdir(outDir, { recursive: true });\n } catch {}\n dirReady = true;\n }\n const target = resolveTargetPath(outDir);\n await fs.promises.appendFile(target, line, 'utf8');\n })\n .catch(() => {});\n}\n\nexport async function flushNdjson(): Promise<void> {\n try {\n await writeChain;\n } catch {}\n}\n\nexport function emitNdjsonFallback(name: string, attrs: Record<string, unknown>): void {\n try {\n if (!isEnabled()) return;\n const outDir = process.env.VISOR_TRACE_DIR || path.join(process.cwd(), 'output', 'traces');\n const line = JSON.stringify({ name, attributes: attrs }) + '\\n';\n appendAsync(outDir, line);\n } catch {\n // ignore\n }\n}\n\nexport function emitNdjsonSpanWithEvents(\n name: string,\n attrs: Record<string, unknown>,\n events: Array<{ name: string; attrs?: Record<string, unknown> }>\n): void {\n try {\n if (!isEnabled()) return;\n const outDir = process.env.VISOR_TRACE_DIR || path.join(process.cwd(), 'output', 'traces');\n const line = JSON.stringify({ name, attributes: attrs, events }) + '\\n';\n appendAsync(outDir, line);\n } catch {\n // ignore\n }\n}\n","{\n \"name\": \"@probelabs/visor\",\n \"version\": \"0.1.42\",\n \"main\": \"dist/index.js\",\n \"bin\": {\n \"visor\": \"./dist/index.js\"\n },\n \"exports\": {\n \".\": {\n \"require\": \"./dist/index.js\",\n \"import\": \"./dist/index.js\"\n },\n \"./sdk\": {\n \"types\": \"./dist/sdk/sdk.d.ts\",\n \"import\": \"./dist/sdk/sdk.mjs\",\n \"require\": \"./dist/sdk/sdk.js\"\n },\n \"./cli\": {\n \"require\": \"./dist/index.js\"\n }\n },\n \"files\": [\n \"dist/\",\n \"defaults/\",\n \"action.yml\",\n \"README.md\",\n \"LICENSE\"\n ],\n \"publishConfig\": {\n \"access\": \"public\",\n \"registry\": \"https://registry.npmjs.org/\"\n },\n \"scripts\": {\n \"build:cli\": \"ncc build src/index.ts -o dist && cp -r defaults dist/ && cp -r output dist/ && cp -r docs dist/ && cp -r examples dist/ && cp -r src/debug-visualizer/ui dist/debug-visualizer/ && node scripts/inject-version.js && echo '#!/usr/bin/env node' | cat - dist/index.js > temp && mv temp dist/index.js && chmod +x dist/index.js\",\n \"build:sdk\": \"tsup src/sdk.ts --dts --sourcemap --format esm,cjs --out-dir dist/sdk\",\n \"build\": \"./scripts/build-oss.sh\",\n \"build:ee\": \"npm run build:cli && npm run build:sdk\",\n \"test\": \"jest && npm run test:yaml\",\n \"test:unit\": \"jest\",\n \"prepublishOnly\": \"npm run build\",\n \"test:watch\": \"jest --watch\",\n \"test:coverage\": \"jest --coverage\",\n \"test:ee\": \"jest --testPathPatterns='tests/ee' --testPathIgnorePatterns='/node_modules/' --no-coverage\",\n \"test:manual:bash\": \"RUN_MANUAL_TESTS=true jest tests/manual/bash-config-manual.test.ts\",\n \"lint\": \"eslint src tests --ext .ts\",\n \"lint:fix\": \"eslint src tests --ext .ts --fix\",\n \"format\": \"prettier --write src tests\",\n \"format:check\": \"prettier --check src tests\",\n \"clean\": \"\",\n \"clean:traces\": \"node scripts/clean-traces.js\",\n \"prebuild\": \"npm run clean && node scripts/generate-config-schema.js\",\n \"pretest\": \"npm run clean:traces && node scripts/generate-config-schema.js && npm run build:cli\",\n \"pretest:unit\": \"npm run clean:traces && node scripts/generate-config-schema.js && npm run build:cli\",\n \"test:with-build\": \"npm run build:cli && jest\",\n \"test:yaml\": \"node dist/index.js test --progress compact\",\n \"test:yaml:parallel\": \"node dist/index.js test --progress compact --max-parallel 4\",\n \"prepare\": \"husky\",\n \"pre-commit\": \"lint-staged\",\n \"deploy:site\": \"cd site && npx wrangler pages deploy . --project-name=visor-site --commit-dirty=true\",\n \"deploy:worker\": \"npx wrangler deploy\",\n \"deploy\": \"npm run deploy:site && npm run deploy:worker\",\n \"publish:ee\": \"./scripts/publish-ee.sh\",\n \"release\": \"./scripts/release.sh\",\n \"release:patch\": \"./scripts/release.sh patch\",\n \"release:minor\": \"./scripts/release.sh minor\",\n \"release:major\": \"./scripts/release.sh major\",\n \"release:prerelease\": \"./scripts/release.sh prerelease\",\n \"docs:validate\": \"node scripts/validate-readme-links.js\",\n \"workshop:setup\": \"npm install -D reveal-md@6.1.2\",\n \"workshop:serve\": \"cd workshop && reveal-md slides.md -w\",\n \"workshop:export\": \"reveal-md workshop/slides.md --static workshop/build\",\n \"workshop:pdf\": \"reveal-md workshop/slides.md --print workshop/Visor-Workshop.pdf --print-size letter\",\n \"workshop:pdf:ci\": \"reveal-md workshop/slides.md --print workshop/Visor-Workshop.pdf --print-size letter --puppeteer-launch-args=\\\"--no-sandbox --disable-dev-shm-usage\\\"\",\n \"workshop:pdf:a4\": \"reveal-md workshop/slides.md --print workshop/Visor-Workshop-A4.pdf --print-size A4\",\n \"workshop:build\": \"npm run workshop:export && npm run workshop:pdf\",\n \"simulate:issue\": \"TS_NODE_TRANSPILE_ONLY=1 ts-node scripts/simulate-gh-run.ts --event issues --action opened --debug\",\n \"simulate:comment\": \"TS_NODE_TRANSPILE_ONLY=1 ts-node scripts/simulate-gh-run.ts --event issue_comment --action created --debug\"\n },\n \"keywords\": [\n \"code-review\",\n \"ai\",\n \"github-action\",\n \"cli\",\n \"pr-review\",\n \"visor\"\n ],\n \"author\": \"Probe Labs\",\n \"license\": \"MIT\",\n \"description\": \"AI workflow engine for code review, assistants, and automation — orchestrate checks, MCP tools, and AI providers with YAML-driven pipelines\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/probelabs/visor.git\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/probelabs/visor/issues\"\n },\n \"homepage\": \"https://github.com/probelabs/visor#readme\",\n \"dependencies\": {\n \"@actions/core\": \"^1.11.1\",\n \"@apidevtools/swagger-parser\": \"^12.1.0\",\n \"@modelcontextprotocol/sdk\": \"^1.25.3\",\n \"@nyariv/sandboxjs\": \"github:probelabs/SandboxJS#f1c13b8eee98734a8ea024061eada4aa9a9ff2e9\",\n \"@octokit/action\": \"^8.0.2\",\n \"@octokit/auth-app\": \"^8.1.0\",\n \"@octokit/core\": \"^7.0.3\",\n \"@octokit/rest\": \"^22.0.0\",\n \"@opentelemetry/api\": \"^1.9.0\",\n \"@opentelemetry/core\": \"^1.30.1\",\n \"@opentelemetry/exporter-trace-otlp-grpc\": \"^0.203.0\",\n \"@opentelemetry/exporter-trace-otlp-http\": \"^0.203.0\",\n \"@opentelemetry/instrumentation\": \"^0.203.0\",\n \"@opentelemetry/resources\": \"^1.30.1\",\n \"@opentelemetry/sdk-metrics\": \"^1.30.1\",\n \"@opentelemetry/sdk-node\": \"^0.203.0\",\n \"@opentelemetry/sdk-trace-base\": \"^1.30.1\",\n \"@opentelemetry/semantic-conventions\": \"^1.30.1\",\n \"@probelabs/probe\": \"^0.6.0-rc290\",\n \"@types/commander\": \"^2.12.0\",\n \"@types/uuid\": \"^10.0.0\",\n \"acorn\": \"^8.16.0\",\n \"acorn-walk\": \"^8.3.5\",\n \"ajv\": \"^8.17.1\",\n \"ajv-formats\": \"^3.0.1\",\n \"better-sqlite3\": \"^11.0.0\",\n \"blessed\": \"^0.1.81\",\n \"cli-table3\": \"^0.6.5\",\n \"commander\": \"^14.0.0\",\n \"deepmerge\": \"^4.3.1\",\n \"dotenv\": \"^17.2.3\",\n \"ignore\": \"^7.0.5\",\n \"js-yaml\": \"^4.1.0\",\n \"jsonpath-plus\": \"^10.4.0\",\n \"liquidjs\": \"^10.21.1\",\n \"minimatch\": \"^10.2.2\",\n \"node-cron\": \"^3.0.3\",\n \"open\": \"^9.1.0\",\n \"simple-git\": \"^3.28.0\",\n \"uuid\": \"^11.1.0\",\n \"ws\": \"^8.18.3\"\n },\n \"optionalDependencies\": {\n \"@anthropic/claude-code-sdk\": \"npm:null@*\",\n \"@open-policy-agent/opa-wasm\": \"^1.10.0\",\n \"knex\": \"^3.1.0\",\n \"mysql2\": \"^3.11.0\",\n \"pg\": \"^8.13.0\",\n \"tedious\": \"^19.0.0\"\n },\n \"devDependencies\": {\n \"@eslint/js\": \"^9.34.0\",\n \"@kie/act-js\": \"^2.6.2\",\n \"@kie/mock-github\": \"^2.0.1\",\n \"@swc/core\": \"^1.13.2\",\n \"@swc/jest\": \"^0.2.37\",\n \"@types/better-sqlite3\": \"^7.6.0\",\n \"@types/blessed\": \"^0.1.27\",\n \"@types/jest\": \"^30.0.0\",\n \"@types/js-yaml\": \"^4.0.9\",\n \"@types/node\": \"^24.3.0\",\n \"@types/node-cron\": \"^3.0.11\",\n \"@types/ws\": \"^8.18.1\",\n \"@typescript-eslint/eslint-plugin\": \"^8.42.0\",\n \"@typescript-eslint/parser\": \"^8.42.0\",\n \"@vercel/ncc\": \"^0.38.4\",\n \"eslint\": \"^9.34.0\",\n \"eslint-config-prettier\": \"^10.1.8\",\n \"eslint-plugin-prettier\": \"^5.5.4\",\n \"husky\": \"^9.1.7\",\n \"jest\": \"^30.1.3\",\n \"lint-staged\": \"^16.1.6\",\n \"prettier\": \"^3.6.2\",\n \"reveal-md\": \"^6.1.2\",\n \"ts-json-schema-generator\": \"^1.5.1\",\n \"ts-node\": \"^10.9.2\",\n \"tsup\": \"^8.5.0\",\n \"typescript\": \"^5.9.2\",\n \"wrangler\": \"^3.0.0\"\n },\n \"peerDependenciesMeta\": {\n \"@anthropic/claude-code-sdk\": {\n \"optional\": true\n }\n },\n \"directories\": {\n \"test\": \"tests\"\n },\n \"lint-staged\": {\n \"src/**/*.{ts,js}\": [\n \"eslint --fix\",\n \"prettier --write\"\n ],\n \"tests/**/*.{ts,js}\": [\n \"eslint --fix\",\n \"prettier --write\"\n ],\n \"*.{json,md,yml,yaml}\": [\n \"prettier --write\"\n ]\n }\n}\n","import { context as otContext, Span, SpanStatusCode, trace, Attributes } from './lazy-otel';\nimport { getInstanceId } from '../utils/instance-id';\n\nexport function getTracer() {\n return trace.getTracer('visor');\n}\n\nexport async function withActiveSpan<T>(\n name: string,\n attrs: Record<string, unknown> | undefined,\n fn: (span: Span) => Promise<T>\n): Promise<T> {\n const tracer = getTracer();\n // Preserve parent context via tracer API; avoid logging parent IDs to stdout\n // Avoid noisy stdout logs that break JSON consumers\n return await new Promise<T>((resolve, reject) => {\n const callback = async (span: Span) => {\n // console.debug(`[trace] Span callback invoked for: [trace_id=${ctx.traceId} span_id=${ctx.spanId}] ${name} span: true`);\n try {\n const res = await fn(span);\n // console.debug('[trace] Span execution completed for:', name);\n resolve(res);\n } catch (err) {\n // console.debug('[trace] Span execution errored for:', name, err);\n try {\n if (err instanceof Error) span.recordException(err);\n span.setStatus({ code: SpanStatusCode.ERROR });\n } catch {}\n reject(err);\n } finally {\n try {\n // console.debug('[trace] Ending span:', name);\n span.end();\n } catch {}\n }\n };\n // startActiveSpan should use the current active context to set parent automatically\n const options = attrs ? { attributes: attrs as Attributes } : {};\n tracer.startActiveSpan(name, options, callback);\n });\n}\n\nexport function addEvent(name: string, attrs?: Record<string, unknown>): void {\n const span = trace.getSpan(otContext.active());\n if (span) {\n try {\n span.addEvent(name, attrs as Attributes);\n } catch {\n // ignore\n }\n }\n // Fallback NDJSON emission for serverless/file sink when SDK may be inactive\n try {\n const { emitNdjsonSpanWithEvents } = require('./fallback-ndjson');\n emitNdjsonSpanWithEvents('visor.event', {}, [{ name, attrs }]);\n if (name === 'fail_if.triggered') {\n emitNdjsonSpanWithEvents('visor.event', {}, [\n { name: 'fail_if.evaluated', attrs },\n { name: 'fail_if.triggered', attrs },\n ]);\n }\n } catch {}\n}\n\nexport function setSpanAttributes(attrs: Record<string, unknown>): void {\n const span = trace.getSpan(otContext.active());\n if (!span) return;\n try {\n for (const [k, v] of Object.entries(attrs)) span.setAttribute(k, v as never);\n } catch {\n // ignore\n }\n}\n\nexport function setSpanError(err: unknown): void {\n const span = trace.getSpan(otContext.active());\n if (!span) return;\n try {\n if (err instanceof Error) span.recordException(err);\n span.setStatus({ code: SpanStatusCode.ERROR });\n } catch {\n // ignore\n }\n}\n\n/**\n * Return standard visor.* resource attributes for the root `visor.run` span.\n * Reads version from package.json / env and git commit short SHA from env.\n */\nexport function getVisorRunAttributes(): Record<string, string> {\n const attrs: Record<string, string> = {};\n try {\n attrs['visor.version'] =\n process.env.VISOR_VERSION || (require('../../package.json')?.version ?? 'dev');\n } catch {\n attrs['visor.version'] = 'dev';\n }\n const commitShort = process.env.VISOR_COMMIT_SHORT || '';\n const commitFull = process.env.VISOR_COMMIT_SHA || process.env.VISOR_COMMIT || '';\n if (commitShort) {\n attrs['visor.commit'] = commitShort;\n }\n if (commitFull) {\n attrs['visor.commit.sha'] = commitFull;\n }\n attrs['visor.instance_id'] = getInstanceId();\n return attrs;\n}\n\n// Internal helper for tests: write a minimal run marker to NDJSON when using file sink\nlet __ndjsonPath: string | null = null;\nexport function __getOrCreateNdjsonPath(): string | null {\n try {\n // If sink is explicitly set to non-file, skip. If unset, still allow when a trace dir/file is configured.\n if (process.env.VISOR_TELEMETRY_SINK && process.env.VISOR_TELEMETRY_SINK !== 'file')\n return null;\n const path = require('path');\n const fs = require('fs');\n // Prefer explicit fallback file path if set by the CLI\n if (process.env.VISOR_FALLBACK_TRACE_FILE) {\n __ndjsonPath = process.env.VISOR_FALLBACK_TRACE_FILE;\n const dir = path.dirname(__ndjsonPath);\n if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });\n return __ndjsonPath;\n }\n const outDir = process.env.VISOR_TRACE_DIR || path.join(process.cwd(), 'output', 'traces');\n if (!fs.existsSync(outDir)) fs.mkdirSync(outDir, { recursive: true });\n if (!__ndjsonPath) {\n const ts = new Date().toISOString().replace(/[:.]/g, '-');\n __ndjsonPath = path.join(outDir, `${ts}.ndjson`);\n }\n return __ndjsonPath;\n } catch {\n return null;\n }\n}\nexport function _appendRunMarker(): void {\n try {\n const fs = require('fs');\n const p = __getOrCreateNdjsonPath();\n if (!p) return;\n const line = { name: 'visor.run', attributes: { started: true } };\n fs.appendFileSync(p, JSON.stringify(line) + '\\n', 'utf8');\n } catch {}\n}\n"],"mappings":"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","names":["emitNdjsonSpanWithEvents","path","fs"]}
@@ -1,12 +1,3 @@
1
- import {
2
- generateHumanId,
3
- init_human_id
4
- } from "./chunk-KFKHU6CM.mjs";
5
- import {
6
- extractFileSections,
7
- init_markdown,
8
- replaceFileSections
9
- } from "./chunk-AVMMKGLQ.mjs";
10
1
  import {
11
2
  A2AAuthRequiredError,
12
3
  A2AInputRequiredError,
@@ -21,6 +12,11 @@ import {
21
12
  init_types,
22
13
  isTerminalState
23
14
  } from "./chunk-YSOIR46P.mjs";
15
+ import {
16
+ extractFileSections,
17
+ init_markdown,
18
+ replaceFileSections
19
+ } from "./chunk-AVMMKGLQ.mjs";
24
20
  import {
25
21
  getPromptStateManager,
26
22
  init_prompt_state
@@ -47,7 +43,7 @@ import {
47
43
  import {
48
44
  config_exports,
49
45
  init_config
50
- } from "./chunk-SVBF7Y2R.mjs";
46
+ } from "./chunk-A2YVTICA.mjs";
51
47
  import {
52
48
  ExecutionJournal,
53
49
  checkLoopBudget,
@@ -56,11 +52,11 @@ import {
56
52
  init_routing,
57
53
  init_snapshot_store,
58
54
  snapshot_store_exports
59
- } from "./chunk-47WAHGHK.mjs";
55
+ } from "./chunk-6FXVWL6M.mjs";
60
56
  import {
61
57
  FailureConditionEvaluator,
62
58
  init_failure_condition_evaluator
63
- } from "./chunk-WNLCRRQO.mjs";
59
+ } from "./chunk-5SBX4KLG.mjs";
64
60
  import {
65
61
  addEvent,
66
62
  emitNdjsonFallback,
@@ -71,7 +67,11 @@ import {
71
67
  setSpanAttributes,
72
68
  trace_helpers_exports,
73
69
  withActiveSpan
74
- } from "./chunk-ZM7ALGTE.mjs";
70
+ } from "./chunk-GGNR347O.mjs";
71
+ import {
72
+ generateHumanId,
73
+ init_human_id
74
+ } from "./chunk-6VVXKXTI.mjs";
75
75
  import {
76
76
  addDiagramBlock,
77
77
  init_metrics
@@ -3979,7 +3979,7 @@ async function executeWorkflowAsTool(workflowId, args, context2, argsOverrides)
3979
3979
  ...args,
3980
3980
  ...argsOverrides
3981
3981
  };
3982
- const { WorkflowCheckProvider: WorkflowCheckProvider2 } = await import("./workflow-check-provider-VDSZR7Y5.mjs");
3982
+ const { WorkflowCheckProvider: WorkflowCheckProvider2 } = await import("./workflow-check-provider-AKXDIL2Y.mjs");
3983
3983
  const provider = new WorkflowCheckProvider2();
3984
3984
  const checkConfig = {
3985
3985
  type: "workflow",
@@ -9297,7 +9297,7 @@ async function executeCheckWithForEachItems2(checkId, forEachParent, forEachItem
9297
9297
  }
9298
9298
  }
9299
9299
  try {
9300
- const { evaluateTransitions } = await import("./routing-SAGHEUOA.mjs");
9300
+ const { evaluateTransitions } = await import("./routing-AMRQYI7J.mjs");
9301
9301
  const transTarget = await evaluateTransitions(
9302
9302
  onFinish.transitions,
9303
9303
  forEachParent,
@@ -9357,7 +9357,7 @@ async function executeCheckWithForEachItems2(checkId, forEachParent, forEachItem
9357
9357
  `[LevelDispatch] Error evaluating on_finish transitions for ${forEachParent}: ${e instanceof Error ? e.message : String(e)}`
9358
9358
  );
9359
9359
  }
9360
- const { evaluateGoto: evaluateGoto2 } = await import("./routing-SAGHEUOA.mjs");
9360
+ const { evaluateGoto: evaluateGoto2 } = await import("./routing-AMRQYI7J.mjs");
9361
9361
  if (context2.debug) {
9362
9362
  logger.info(
9363
9363
  `[LevelDispatch] Evaluating on_finish.goto_js for forEach parent: ${forEachParent}`
@@ -13315,7 +13315,7 @@ var init_state_machine_execution_engine = __esm({
13315
13315
  try {
13316
13316
  const map = options?.webhookContext?.webhookData;
13317
13317
  if (map) {
13318
- const { CheckProviderRegistry: CheckProviderRegistry2 } = await import("./check-provider-registry-STRAOYRJ.mjs");
13318
+ const { CheckProviderRegistry: CheckProviderRegistry2 } = await import("./check-provider-registry-7P2QIKJR.mjs");
13319
13319
  const reg = CheckProviderRegistry2.getInstance();
13320
13320
  const p = reg.getProvider("http_input");
13321
13321
  if (p && typeof p.setWebhookContext === "function") p.setWebhookContext(map);
@@ -13428,7 +13428,7 @@ var init_state_machine_execution_engine = __esm({
13428
13428
  logger.info("[StateMachine] Using state machine engine");
13429
13429
  }
13430
13430
  if (!config) {
13431
- const { ConfigManager } = await import("./config-IHECYTNT.mjs");
13431
+ const { ConfigManager } = await import("./config-6GWD673K.mjs");
13432
13432
  const configManager = new ConfigManager();
13433
13433
  config = await configManager.getDefaultConfig();
13434
13434
  logger.debug("[StateMachine] Using default configuration (no config provided)");
@@ -13438,7 +13438,7 @@ var init_state_machine_execution_engine = __esm({
13438
13438
  tag_filter: tagFilter
13439
13439
  } : config;
13440
13440
  try {
13441
- const { CheckProviderRegistry: CheckProviderRegistry2 } = await import("./check-provider-registry-STRAOYRJ.mjs");
13441
+ const { CheckProviderRegistry: CheckProviderRegistry2 } = await import("./check-provider-registry-7P2QIKJR.mjs");
13442
13442
  const registry = CheckProviderRegistry2.getInstance();
13443
13443
  registry.setCustomTools(configWithTagFilter.tools || {});
13444
13444
  } catch (error) {
@@ -13479,7 +13479,7 @@ var init_state_machine_execution_engine = __esm({
13479
13479
  logger.debug(
13480
13480
  `[PolicyEngine] Loading enterprise policy engine (engine=${configWithTagFilter.policy.engine})`
13481
13481
  );
13482
- const { loadEnterprisePolicyEngine } = await import("./enterprise/loader");
13482
+ const { loadEnterprisePolicyEngine } = await import("./loader-QMJFFST6.mjs");
13483
13483
  context2.policyEngine = await loadEnterprisePolicyEngine(configWithTagFilter.policy);
13484
13484
  logger.debug(
13485
13485
  `[PolicyEngine] Initialized: ${context2.policyEngine?.constructor?.name || "unknown"}`
@@ -13502,7 +13502,7 @@ var init_state_machine_execution_engine = __esm({
13502
13502
  try {
13503
13503
  const webhookData = this.executionContext?.webhookContext?.webhookData;
13504
13504
  if (webhookData instanceof Map) {
13505
- const { extractSlackContext: extractSlackContext2 } = await import("./schedule-tool-handler-OEBLE5AB.mjs");
13505
+ const { extractSlackContext: extractSlackContext2 } = await import("./schedule-tool-handler-DFUC5S55.mjs");
13506
13506
  const slackCtx = extractSlackContext2(webhookData);
13507
13507
  if (slackCtx) {
13508
13508
  const payload = Array.from(webhookData.values())[0];
@@ -13531,7 +13531,7 @@ var init_state_machine_execution_engine = __esm({
13531
13531
  if (Array.isArray(configWithTagFilter.frontends) && configWithTagFilter.frontends.length > 0) {
13532
13532
  try {
13533
13533
  const { EventBus } = await import("./event-bus-5K3Y2FCS.mjs");
13534
- const { FrontendsHost } = await import("./host-K6IZWJG3.mjs");
13534
+ const { FrontendsHost } = await import("./host-ECXTIDWG.mjs");
13535
13535
  const bus = new EventBus();
13536
13536
  context2.eventBus = bus;
13537
13537
  frontendsHost = new FrontendsHost(bus, logger);
@@ -13883,9 +13883,9 @@ var init_state_machine_execution_engine = __esm({
13883
13883
  * @returns Array of failure condition evaluation results
13884
13884
  */
13885
13885
  async evaluateFailureConditions(checkName, reviewSummary, config, previousOutputs, authorAssociation) {
13886
- const { FailureConditionEvaluator: FailureConditionEvaluator2 } = await import("./failure-condition-evaluator-T67YFO2Z.mjs");
13886
+ const { FailureConditionEvaluator: FailureConditionEvaluator2 } = await import("./failure-condition-evaluator-5HRNHZCC.mjs");
13887
13887
  const evaluator = new FailureConditionEvaluator2();
13888
- const { addEvent: addEvent3 } = await import("./trace-helpers-M7RVAZQ2.mjs");
13888
+ const { addEvent: addEvent3 } = await import("./trace-helpers-4ZBZWH5W.mjs");
13889
13889
  const { addFailIfTriggered } = await import("./metrics-I6A7IHG4.mjs");
13890
13890
  const checkConfig = config.checks?.[checkName];
13891
13891
  if (!checkConfig) {
@@ -14138,6 +14138,8 @@ var init_scheduler = __esm({
14138
14138
  outputAdapters = /* @__PURE__ */ new Map();
14139
14139
  executionContext = {};
14140
14140
  contextEnricher;
14141
+ taskStore;
14142
+ configPath;
14141
14143
  // HA fields
14142
14144
  haConfig;
14143
14145
  nodeId;
@@ -14163,6 +14165,11 @@ var init_scheduler = __esm({
14163
14165
  setEngine(engine) {
14164
14166
  this.engine = engine;
14165
14167
  }
14168
+ /** Set shared task store for execution tracking. */
14169
+ setTaskStore(store, configPath) {
14170
+ this.taskStore = store;
14171
+ this.configPath = configPath;
14172
+ }
14166
14173
  /**
14167
14174
  * Set the execution context (e.g., Slack client) for workflow executions
14168
14175
  */
@@ -14704,7 +14711,7 @@ var init_scheduler = __esm({
14704
14711
  } catch {
14705
14712
  }
14706
14713
  const { engine: runEngine, config: cfgForRun } = this.prepareExecution(schedule);
14707
- await runEngine.executeChecks({
14714
+ const schedExecFn = () => runEngine.executeChecks({
14708
14715
  checks: checksToRun,
14709
14716
  showDetails: true,
14710
14717
  outputFormat: "json",
@@ -14713,6 +14720,22 @@ var init_scheduler = __esm({
14713
14720
  debug: process.env.VISOR_DEBUG === "true",
14714
14721
  inputs: schedule.workflowInputs
14715
14722
  });
14723
+ if (this.taskStore) {
14724
+ const { trackExecution } = await import("./track-execution-VWLQIGY7.mjs");
14725
+ await trackExecution(
14726
+ {
14727
+ taskStore: this.taskStore,
14728
+ source: "scheduler",
14729
+ workflowId: schedule.workflow,
14730
+ configPath: this.configPath,
14731
+ messageText: `Scheduled: ${schedule.workflow} (${schedule.id})`,
14732
+ metadata: { schedule_id: schedule.id, is_recurring: schedule.isRecurring }
14733
+ },
14734
+ schedExecFn
14735
+ );
14736
+ } else {
14737
+ await schedExecFn();
14738
+ }
14716
14739
  return { message: "Workflow completed", workflow: schedule.workflow };
14717
14740
  }
14718
14741
  /**
@@ -14818,7 +14841,7 @@ Please provide an updated response based on the reminder above. You may referenc
14818
14841
  responseRef
14819
14842
  } = this.prepareExecution(schedule, reminderText);
14820
14843
  try {
14821
- await runEngine.executeChecks({
14844
+ const reminderExecFn = () => runEngine.executeChecks({
14822
14845
  checks: allChecks,
14823
14846
  showDetails: true,
14824
14847
  outputFormat: "json",
@@ -14826,6 +14849,22 @@ Please provide an updated response based on the reminder above. You may referenc
14826
14849
  webhookContext: { webhookData, eventType: "schedule" },
14827
14850
  debug: process.env.VISOR_DEBUG === "true"
14828
14851
  });
14852
+ if (this.taskStore) {
14853
+ const { trackExecution } = await import("./track-execution-VWLQIGY7.mjs");
14854
+ await trackExecution(
14855
+ {
14856
+ taskStore: this.taskStore,
14857
+ source: "scheduler",
14858
+ workflowId: schedule.workflow,
14859
+ configPath: this.configPath,
14860
+ messageText: reminderText || `Reminder: ${schedule.id}`,
14861
+ metadata: { schedule_id: schedule.id, is_recurring: schedule.isRecurring }
14862
+ },
14863
+ reminderExecFn
14864
+ );
14865
+ } else {
14866
+ await reminderExecFn();
14867
+ }
14829
14868
  if (schedule.isRecurring && responseRef.captured) {
14830
14869
  await this.store.updateAsync(schedule.id, { previousResponse: responseRef.captured });
14831
14870
  logger.info(
@@ -41212,8 +41251,8 @@ function buildBuiltinGlobals(opts) {
41212
41251
  const asyncFunctionNames = /* @__PURE__ */ new Set();
41213
41252
  const scheduleFn = async (args = {}) => {
41214
41253
  try {
41215
- const { handleScheduleAction: handleScheduleAction2, buildScheduleToolContext: buildScheduleToolContext2 } = await import("./schedule-tool-TGWPINHO.mjs");
41216
- const { extractSlackContext: extractSlackContext2 } = await import("./schedule-tool-handler-OEBLE5AB.mjs");
41254
+ const { handleScheduleAction: handleScheduleAction2, buildScheduleToolContext: buildScheduleToolContext2 } = await import("./schedule-tool-I6VG3ZVA.mjs");
41255
+ const { extractSlackContext: extractSlackContext2 } = await import("./schedule-tool-handler-DFUC5S55.mjs");
41217
41256
  const parentCtx = opts.sessionInfo?._parentContext;
41218
41257
  const webhookData = parentCtx?.prInfo?.eventContext?.webhookData;
41219
41258
  const visorCfg = parentCtx?.config;
@@ -44768,4 +44807,4 @@ undici/lib/fetch/body.js:
44768
44807
  undici/lib/websocket/frame.js:
44769
44808
  (*! ws. MIT License. Einar Otto Stangvik <einaros@gmail.com> *)
44770
44809
  */
44771
- //# sourceMappingURL=chunk-NYQTQYGU.mjs.map
44810
+ //# sourceMappingURL=chunk-YCPJBOJB.mjs.map