@probelabs/visor 0.1.181-ee → 0.1.182-ee

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/defaults/code-talk.yaml +80 -14
  2. package/defaults/engineer.yaml +33 -15
  3. package/defaults/skills/code-explorer.yaml +5 -0
  4. package/dist/agent-protocol/a2a-frontend.d.ts +10 -0
  5. package/dist/agent-protocol/a2a-frontend.d.ts.map +1 -1
  6. package/dist/agent-protocol/task-evaluator.d.ts +52 -0
  7. package/dist/agent-protocol/task-evaluator.d.ts.map +1 -0
  8. package/dist/agent-protocol/task-store.d.ts +5 -3
  9. package/dist/agent-protocol/task-store.d.ts.map +1 -1
  10. package/dist/agent-protocol/tasks-cli-handler.d.ts.map +1 -1
  11. package/dist/agent-protocol/tasks-tui.d.ts +34 -0
  12. package/dist/agent-protocol/tasks-tui.d.ts.map +1 -0
  13. package/dist/agent-protocol/trace-serializer.d.ts +90 -0
  14. package/dist/agent-protocol/trace-serializer.d.ts.map +1 -0
  15. package/dist/agent-protocol/track-execution.d.ts +2 -0
  16. package/dist/agent-protocol/track-execution.d.ts.map +1 -1
  17. package/dist/cli-main.d.ts.map +1 -1
  18. package/dist/defaults/code-talk.yaml +80 -14
  19. package/dist/defaults/engineer.yaml +33 -15
  20. package/dist/defaults/skills/code-explorer.yaml +5 -0
  21. package/dist/docs/commands.md +57 -14
  22. package/dist/docs/configuration.md +2 -0
  23. package/dist/docs/guides/graceful-restart.md +178 -0
  24. package/dist/docs/observability.md +69 -0
  25. package/dist/docs/production-deployment.md +17 -0
  26. package/dist/email/polling-runner.d.ts +4 -0
  27. package/dist/email/polling-runner.d.ts.map +1 -1
  28. package/dist/generated/config-schema.d.ts +70 -6
  29. package/dist/generated/config-schema.d.ts.map +1 -1
  30. package/dist/generated/config-schema.json +36 -6
  31. package/dist/index.js +5006 -886
  32. package/dist/providers/mcp-custom-sse-server.d.ts +4 -0
  33. package/dist/providers/mcp-custom-sse-server.d.ts.map +1 -1
  34. package/dist/runners/graceful-restart.d.ts +46 -0
  35. package/dist/runners/graceful-restart.d.ts.map +1 -0
  36. package/dist/runners/mcp-server-runner.d.ts +12 -0
  37. package/dist/runners/mcp-server-runner.d.ts.map +1 -1
  38. package/dist/runners/runner-factory.d.ts.map +1 -1
  39. package/dist/runners/runner-host.d.ts +12 -0
  40. package/dist/runners/runner-host.d.ts.map +1 -1
  41. package/dist/runners/runner.d.ts +12 -0
  42. package/dist/runners/runner.d.ts.map +1 -1
  43. package/dist/sdk/a2a-frontend-4LP3MLTS.mjs +1718 -0
  44. package/dist/sdk/a2a-frontend-4LP3MLTS.mjs.map +1 -0
  45. package/dist/sdk/{a2a-frontend-BDACLGMA.mjs → a2a-frontend-MU5EO2HZ.mjs} +35 -1
  46. package/dist/sdk/a2a-frontend-MU5EO2HZ.mjs.map +1 -0
  47. package/dist/sdk/{check-provider-registry-4YKTEDKF.mjs → check-provider-registry-I4BCWKRU.mjs} +7 -7
  48. package/dist/sdk/{check-provider-registry-Z7EHECLC.mjs → check-provider-registry-RRWCXSTG.mjs} +3 -3
  49. package/dist/sdk/{chunk-VMVIM4JB.mjs → chunk-4I3TJ7UJ.mjs} +37 -7
  50. package/dist/sdk/chunk-4I3TJ7UJ.mjs.map +1 -0
  51. package/dist/sdk/{chunk-7YZSSO4X.mjs → chunk-6DPPP7LD.mjs} +10 -10
  52. package/dist/sdk/chunk-7ERVRLDV.mjs +296 -0
  53. package/dist/sdk/chunk-7ERVRLDV.mjs.map +1 -0
  54. package/dist/sdk/chunk-ANUT54HW.mjs +1502 -0
  55. package/dist/sdk/chunk-ANUT54HW.mjs.map +1 -0
  56. package/dist/sdk/chunk-DHETLQIX.mjs +739 -0
  57. package/dist/sdk/chunk-DHETLQIX.mjs.map +1 -0
  58. package/dist/sdk/chunk-QXT47ZHR.mjs +390 -0
  59. package/dist/sdk/chunk-QXT47ZHR.mjs.map +1 -0
  60. package/dist/sdk/{chunk-6HLDM4OB.mjs → chunk-TQQNSHQV.mjs} +71 -30
  61. package/dist/sdk/chunk-TQQNSHQV.mjs.map +1 -0
  62. package/dist/sdk/chunk-ZOF5QT6U.mjs +5943 -0
  63. package/dist/sdk/chunk-ZOF5QT6U.mjs.map +1 -0
  64. package/dist/sdk/{config-TSA5FUOM.mjs → config-2STD74CJ.mjs} +2 -2
  65. package/dist/sdk/config-JE4HKTWW.mjs +16 -0
  66. package/dist/sdk/failure-condition-evaluator-5DZYMCGW.mjs +18 -0
  67. package/dist/sdk/github-frontend-L3F5JXPJ.mjs +1394 -0
  68. package/dist/sdk/github-frontend-L3F5JXPJ.mjs.map +1 -0
  69. package/dist/sdk/{host-6QBBL3QW.mjs → host-QBJ7TOWG.mjs} +3 -3
  70. package/dist/sdk/{host-CVH2CSHM.mjs → host-X5ZZCEWN.mjs} +2 -2
  71. package/dist/sdk/routing-CVQT4KHX.mjs +26 -0
  72. package/dist/sdk/{schedule-tool-ADUXTCY7.mjs → schedule-tool-AECLFHSY.mjs} +7 -7
  73. package/dist/sdk/{schedule-tool-5XBASQVY.mjs → schedule-tool-Z6QYL2B3.mjs} +3 -3
  74. package/dist/sdk/{schedule-tool-handler-N7UNABOA.mjs → schedule-tool-handler-6QLZRTQA.mjs} +7 -7
  75. package/dist/sdk/{schedule-tool-handler-GBIJS376.mjs → schedule-tool-handler-J4NUETJ6.mjs} +3 -3
  76. package/dist/sdk/schedule-tool-handler-J4NUETJ6.mjs.map +1 -0
  77. package/dist/sdk/sdk.d.mts +33 -0
  78. package/dist/sdk/sdk.d.ts +33 -0
  79. package/dist/sdk/sdk.js +2120 -404
  80. package/dist/sdk/sdk.js.map +1 -1
  81. package/dist/sdk/sdk.mjs +6 -6
  82. package/dist/sdk/task-evaluator-HLNXKKVV.mjs +1278 -0
  83. package/dist/sdk/task-evaluator-HLNXKKVV.mjs.map +1 -0
  84. package/dist/sdk/trace-helpers-WJXYVV4S.mjs +29 -0
  85. package/dist/sdk/trace-helpers-WJXYVV4S.mjs.map +1 -0
  86. package/dist/sdk/trace-reader-ZY77OFNM.mjs +266 -0
  87. package/dist/sdk/trace-reader-ZY77OFNM.mjs.map +1 -0
  88. package/dist/sdk/track-execution-MKIQXP2C.mjs +136 -0
  89. package/dist/sdk/track-execution-MKIQXP2C.mjs.map +1 -0
  90. package/dist/sdk/{workflow-check-provider-SRIMWKLQ.mjs → workflow-check-provider-EXMC6JIS.mjs} +7 -7
  91. package/dist/sdk/workflow-check-provider-EXMC6JIS.mjs.map +1 -0
  92. package/dist/sdk/{workflow-check-provider-3IXIADSV.mjs → workflow-check-provider-VKYGI5GK.mjs} +3 -3
  93. package/dist/sdk/workflow-check-provider-VKYGI5GK.mjs.map +1 -0
  94. package/dist/slack/socket-runner.d.ts +12 -0
  95. package/dist/slack/socket-runner.d.ts.map +1 -1
  96. package/dist/teams/webhook-runner.d.ts +4 -0
  97. package/dist/teams/webhook-runner.d.ts.map +1 -1
  98. package/dist/telegram/polling-runner.d.ts +2 -0
  99. package/dist/telegram/polling-runner.d.ts.map +1 -1
  100. package/dist/types/config.d.ts +33 -0
  101. package/dist/types/config.d.ts.map +1 -1
  102. package/dist/whatsapp/webhook-runner.d.ts +4 -0
  103. package/dist/whatsapp/webhook-runner.d.ts.map +1 -1
  104. package/package.json +2 -2
  105. package/dist/sdk/a2a-frontend-BDACLGMA.mjs.map +0 -1
  106. package/dist/sdk/chunk-6HLDM4OB.mjs.map +0 -1
  107. package/dist/sdk/chunk-VMVIM4JB.mjs.map +0 -1
  108. /package/dist/sdk/{check-provider-registry-4YKTEDKF.mjs.map → check-provider-registry-I4BCWKRU.mjs.map} +0 -0
  109. /package/dist/sdk/{check-provider-registry-Z7EHECLC.mjs.map → check-provider-registry-RRWCXSTG.mjs.map} +0 -0
  110. /package/dist/sdk/{chunk-7YZSSO4X.mjs.map → chunk-6DPPP7LD.mjs.map} +0 -0
  111. /package/dist/sdk/{config-TSA5FUOM.mjs.map → config-2STD74CJ.mjs.map} +0 -0
  112. /package/dist/sdk/{schedule-tool-5XBASQVY.mjs.map → config-JE4HKTWW.mjs.map} +0 -0
  113. /package/dist/sdk/{schedule-tool-ADUXTCY7.mjs.map → failure-condition-evaluator-5DZYMCGW.mjs.map} +0 -0
  114. /package/dist/sdk/{host-6QBBL3QW.mjs.map → host-QBJ7TOWG.mjs.map} +0 -0
  115. /package/dist/sdk/{host-CVH2CSHM.mjs.map → host-X5ZZCEWN.mjs.map} +0 -0
  116. /package/dist/sdk/{schedule-tool-handler-GBIJS376.mjs.map → routing-CVQT4KHX.mjs.map} +0 -0
  117. /package/dist/sdk/{schedule-tool-handler-N7UNABOA.mjs.map → schedule-tool-AECLFHSY.mjs.map} +0 -0
  118. /package/dist/sdk/{workflow-check-provider-3IXIADSV.mjs.map → schedule-tool-Z6QYL2B3.mjs.map} +0 -0
  119. /package/dist/sdk/{workflow-check-provider-SRIMWKLQ.mjs.map → schedule-tool-handler-6QLZRTQA.mjs.map} +0 -0
@@ -136,18 +136,59 @@ outputs:
136
136
  value_js: |
137
137
  const result = outputs?.['explore-code'];
138
138
  if (result?.answer) return result.answer;
139
- const routeOutput = outputs?.['setup-projects']?.routing_decision;
140
- // Handle proper notes field
141
- const routeNotes = routeOutput?.notes;
142
- if (typeof routeNotes === 'string' && routeNotes.trim().length > 0) {
143
- return { text: routeNotes };
139
+ const resultText = typeof result?.text === 'string' ? result.text.trim() : '';
140
+ if (resultText.length > 0) {
141
+ return { text: resultText };
144
142
  }
145
- // Fallback: if AI returned {text: "..."} instead of proper schema
146
- const routeText = routeOutput?.text;
147
- if (typeof routeText === 'string' && routeText.trim().length > 0) {
148
- return { text: routeText };
143
+ const routeNotes = outputs?.['setup-projects']?.routing_decision?.notes;
144
+ const checkoutProjects = outputs?.['setup-projects']?.checkout_projects;
145
+ if (
146
+ (!Array.isArray(checkoutProjects) || checkoutProjects.length === 0) &&
147
+ typeof routeNotes === 'string' &&
148
+ routeNotes.trim().length > 0
149
+ ) {
150
+ return { text: routeNotes.trim() };
151
+ }
152
+ return { text: 'Code exploration did not produce an answer.' };
153
+
154
+ - name: exploration_status
155
+ description: Outcome of the exploration step
156
+ value_js: |
157
+ const result = outputs?.['explore-code'];
158
+ if (result?.answer?.text) return 'success';
159
+ const resultText = typeof result?.text === 'string' ? result.text.trim() : '';
160
+ if (resultText.length > 0) {
161
+ if (/timed out/i.test(resultText)) return 'timeout';
162
+ return 'failed';
149
163
  }
150
- return null;
164
+ const routeNotes = outputs?.['setup-projects']?.routing_decision?.notes;
165
+ const checkoutProjects = outputs?.['setup-projects']?.checkout_projects;
166
+ if (
167
+ (!Array.isArray(checkoutProjects) || checkoutProjects.length === 0) &&
168
+ typeof routeNotes === 'string' &&
169
+ routeNotes.trim().length > 0
170
+ ) {
171
+ return 'no_projects';
172
+ }
173
+ return 'failed';
174
+
175
+ - name: exploration_error
176
+ description: Timeout or failure detail when exploration did not return a real answer
177
+ value_js: |
178
+ const result = outputs?.['explore-code'];
179
+ if (result?.answer?.text) return '';
180
+ const resultText = typeof result?.text === 'string' ? result.text.trim() : '';
181
+ if (resultText.length > 0) return resultText;
182
+ const routeNotes = outputs?.['setup-projects']?.routing_decision?.notes;
183
+ const checkoutProjects = outputs?.['setup-projects']?.checkout_projects;
184
+ if (
185
+ (!Array.isArray(checkoutProjects) || checkoutProjects.length === 0) &&
186
+ typeof routeNotes === 'string' &&
187
+ routeNotes.trim().length > 0
188
+ ) {
189
+ return routeNotes.trim();
190
+ }
191
+ return 'Code exploration did not produce an answer.';
151
192
 
152
193
  - name: references
153
194
  description: Code/doc references from exploration
@@ -174,11 +215,20 @@ outputs:
174
215
  const result = outputs?.['explore-code'];
175
216
  const confidence = result?.confidence;
176
217
  const reason = result?.confidence_reason;
177
- if (typeof reason === 'string') return reason;
218
+ if (typeof reason === 'string' && reason.trim().length > 0) return reason;
178
219
  if (confidence === 'high') return '';
220
+ const resultText = typeof result?.text === 'string' ? result.text.trim() : '';
221
+ if (resultText.length > 0) return resultText;
179
222
  const routeNotes = outputs?.['setup-projects']?.routing_decision?.notes;
180
- if (typeof routeNotes === 'string' && routeNotes.trim().length > 0) return routeNotes;
181
- return 'No confidence explanation was provided by explore-code.';
223
+ const checkoutProjects = outputs?.['setup-projects']?.checkout_projects;
224
+ if (
225
+ (!Array.isArray(checkoutProjects) || checkoutProjects.length === 0) &&
226
+ typeof routeNotes === 'string' &&
227
+ routeNotes.trim().length > 0
228
+ ) {
229
+ return routeNotes.trim();
230
+ }
231
+ return 'Code exploration did not produce an answer.';
182
232
 
183
233
  - name: projects_explored
184
234
  description: Which project IDs were checked out
@@ -261,7 +311,7 @@ steps:
261
311
  skip_code_context: true
262
312
  enableDelegate: true
263
313
  enableExecutePlan: false
264
- max_iterations: 50
314
+ max_iterations: 100
265
315
  prompt_type: code-explorer
266
316
  allowBash: true
267
317
  bashConfig:
@@ -415,8 +465,17 @@ steps:
415
465
  - Each delegate should answer ONE specific question (not "look at the code")
416
466
  - Run multiple delegates in PARALLEL for different hypotheses or components
417
467
  - Ask delegates to return specific file paths and line numbers
468
+ - Do NOT delegate or re-search the same question twice in one investigation
469
+ - If a delegate returns enough evidence for the current claim, stop and use it
418
470
 
419
471
  Relay complete data from tools — do not summarize or compress tool output.
472
+
473
+ Investigation scope:
474
+ - Stop once you have enough evidence to answer the question accurately
475
+ - If this is an implementation handoff for engineer, optimize for the minimum
476
+ sufficient handoff: repo, branch/ref, target files, relevant tests, and the
477
+ key evidence explaining why those files matter
478
+ - Prefer one search followed by targeted extract over repeated broad searches
420
479
  </instructions>
421
480
 
422
481
  {% if inputs.exploration_prompt %}
@@ -468,6 +527,13 @@ steps:
468
527
  implementation, then consult docs to confirm semantics. When multiple projects
469
528
  are involved, trace data and config flow across them.
470
529
 
530
+ Efficiency rules for this investigation:
531
+ - Reuse evidence already found in earlier tool results
532
+ - If the question is narrow and the relevant files are already identified,
533
+ stop exploring and answer
534
+ - If the next consumer is engineer, avoid broad code archaeology once the
535
+ implementation target and validation path are clear
536
+
471
537
  Synthesize a single answer:
472
538
  - Ground everything in code/docs evidence
473
539
  - End with a "## References" section with clickable GitHub links:
@@ -338,19 +338,25 @@ steps:
338
338
  <delegation>
339
339
  Use the delegate tool for parallel work, plan validation, and build discovery.
340
340
 
341
- MANDATORY FIRST STEP delegate "Discover build system" for each repository:
341
+ FIRST decide whether delegation is needed.
342
+
343
+ Delegate "Discover build system" ONLY when the exact commands are not already
344
+ available in the provided context, code-explorer output, project metadata, or
345
+ recent tool results.
342
346
  - Check: Makefile, package.json (scripts), Cargo.toml, go.mod, pyproject.toml
343
347
  - Check: CI config (.github/workflows/, .gitlab-ci.yml, Jenkinsfile)
344
348
  - Check: README for build/test/lint instructions
345
349
  - Return the EXACT commands for: build, test, lint/format, and any pre-commit hooks
346
350
  - Example output: "build: make, test: make test, lint: gofmt -l . && golangci-lint run"
347
- Use these commands throughout the session. Do NOT guess use what the delegate found.
351
+ - Reuse these commands throughout the session. Do NOT rediscover them once known.
348
352
 
349
- MANDATORY BEFORE IMPLEMENTATION delegate "Plan validation":
353
+ Delegate "Plan validation" ONLY when the task is broad, high-risk, multi-repo,
354
+ or the implementation path is still unclear after reviewing existing context.
350
355
  - Describe: files to change, approach, patterns to follow
351
356
  - Ask the delegate to verify: do these files exist? Are there existing tests?
352
357
  Are there related utilities or patterns to reuse? Any API contracts to respect?
353
- - Wait for the response before writing code
358
+ - Skip this delegate for narrow single-repo changes when code-explorer or direct
359
+ inspection already identified the target files, branch, and validation path.
354
360
 
355
361
  Also delegate for:
356
362
  - Multi-repo changes (one delegate per repo, in parallel)
@@ -361,9 +367,12 @@ steps:
361
367
  - Sequential dependent work (step B needs step A's output)
362
368
  - Simple single-file edits (fewer than 5 iterations)
363
369
  - Git operations (commit, push, PR) — always do these yourself
370
+ - Questions you already delegated once in this session
364
371
 
365
372
  Delegates have fewer iterations and no access to your conversation.
366
373
  Provide all necessary context in the delegate prompt.
374
+ If a delegate returns empty output, times out, or repeats information already
375
+ known, do NOT call the same delegate again. Fall back to direct tools.
367
376
  </delegation>
368
377
 
369
378
  <git-workflow>
@@ -372,12 +381,17 @@ steps:
372
381
 
373
382
  Before your final response, verify:
374
383
  □ Build passes (using exact commands from "Discover build system" delegate)
375
- □ Tests pass (run the full test suite, not just your new tests)
384
+ □ Tests pass (start with the narrowest relevant tests; run broader suites only
385
+ when required by repo policy, when the change is cross-cutting, or when focused
386
+ tests indicate wider impact)
376
387
  □ Lint/format passes (if the project has a linter)
377
388
  □ git add <files>
378
389
  □ git commit -m "descriptive message"
379
390
  □ git push -u origin <branch-name>
380
391
  □ gh pr create (for new PRs) or update existing PR
392
+ - For a new branch: ALWAYS push first, then use `gh pr create --head <branch-name>`
393
+ - If PR creation fails, inspect stderr, fix the missing prerequisite, and retry once
394
+ - Do NOT repeat the same `gh pr create` command after the same error
381
395
  No PR URL = failed task. Report errors honestly, never claim false success.
382
396
 
383
397
  If build/test/lint fails, fix the issue before committing. If you cannot fix it,
@@ -397,19 +411,23 @@ steps:
397
411
  <efficiency>
398
412
  - Use context data directly — don't re-read files or re-run searches for
399
413
  information already provided by code-explorer.
414
+ - If code-explorer already identified the repo, branch, files, tests, or exact
415
+ commands, treat that as the default source of truth unless a tool result proves
416
+ it wrong.
400
417
  - If a project has <setup> commands listed, run them FIRST (in the project's
401
418
  directory) before any other work. These are prerequisites (e.g., `npm install`,
402
419
  `make deps`, database migrations).
403
- - Use tasks to track multi-step work. Create these tasks at minimum:
404
- 1. "Run setup commands" execute <setup> commands for each project (if any)
405
- 2. "Discover build system" (delegate) — find exact build/test/lint commands
406
- 3. "Plan validation" (delegate) — verify approach before coding
407
- 4. "Implement changes" — the actual code/file changes
408
- 5. "Verify build" run build, test, and lint commands; fix any failures
409
- 6. "Create pull request" git branch, add, commit, push, gh pr create
410
- Mark in_progress/completed as you go. Do NOT skip "Verify build".
411
- - If a bash command fails, try a different approach. Don't retry the same
412
- command or get stuck in loops.
420
+ - Use tasks to track real phases of work, not every obvious micro-step.
421
+ - For narrow single-repo changes, keep the task list minimal:
422
+ 1. "Implement changes"
423
+ 2. "Verify build"
424
+ 3. "Create pull request"
425
+ - Add "Run setup commands", "Discover build system", or "Plan validation"
426
+ ONLY when you actually need to perform those steps.
427
+ - Mark in_progress/completed as you go. Do NOT skip "Verify build".
428
+ - If a bash command fails, diagnose the cause before retrying.
429
+ - Do NOT repeat the same logical action after the same error unless you changed
430
+ a prerequisite (for example: push before re-running `gh pr create`).
413
431
  </efficiency>
414
432
  {% assign has_trace = inputs.trace_id | size %}
415
433
  {% assign has_slack_user = inputs.slack_user_id | size %}
@@ -29,6 +29,11 @@ knowledge: |
29
29
  - If confidence "high", trust the answer — do NOT re-call with rephrased question
30
30
  - Only call again for a genuinely DIFFERENT aspect of the codebase
31
31
  - If confidence "medium" or "low", check confidence_reason for what to refine
32
+ - If `exploration_status` is `timeout`, `failed`, or `no_projects`, do NOT re-call
33
+ with a paraphrase of the same question. Report the failure honestly and only retry
34
+ if you can narrow the question or change the scope.
35
+ - If `references` is empty and confidence is low, treat that as "not answered yet",
36
+ not as a usable code answer.
32
37
 
33
38
  ## Usage Instructions
34
39
  1. Call the `code-explorer` tool with the user's question — do NOT try to answer code questions yourself
@@ -39,6 +39,16 @@ export declare class A2AFrontend implements ActiveFrontend {
39
39
  /** Set the full Visor config (needed for check definitions). */
40
40
  setVisorConfig(config: VisorConfig): void;
41
41
  start(ctx: FrontendContext): Promise<void>;
42
+ /**
43
+ * Stop listening for new connections and free the port.
44
+ * In-flight tasks continue processing.
45
+ */
46
+ stopListening(): Promise<void>;
47
+ /**
48
+ * Drain: stop accepting new tasks, wait for in-flight tasks to complete.
49
+ * @param timeoutMs - Max wait time. 0 = unlimited (default).
50
+ */
51
+ drain(timeoutMs?: number): Promise<void>;
42
52
  stop(): Promise<void>;
43
53
  private handleRequest;
44
54
  private serveAgentCard;
@@ -1 +1 @@
1
- {"version":3,"file":"a2a-frontend.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/agent-protocol/a2a-frontend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAOH,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EACV,SAAS,EACT,mBAAmB,EACnB,YAAY,EAGZ,SAAS,EACT,aAAa,EAGb,SAAS,EAGV,MAAM,SAAS,CAAC;AAajB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAkGnD,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,SAAS,GACd,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA4BzB;AAED,+EAA+E;AAC/E,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,EAAE,CAmCxF;AAMD,qBAAa,WAAY,YAAW,cAAc;IAChD,QAAQ,CAAC,IAAI,SAAS;IAEtB,OAAO,CAAC,MAAM,CAA2C;IACzD,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,YAAY,CAA+C;IACnE,OAAO,CAAC,IAAI,CAAgC;IAC5C,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,SAAS,CAA0B;IAE3C,OAAO,CAAC,UAAU,CAAK;gBAEX,MAAM,EAAE,mBAAmB,EAAE,SAAS,CAAC,EAAE,SAAS;IAK9D,iFAAiF;IACjF,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,sDAAsD;IACtD,SAAS,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI;IAI5B,gEAAgE;IAChE,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAInC,KAAK,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAgJ1C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAoBb,aAAa;IA2G3B,OAAO,CAAC,cAAc;YAOR,iBAAiB;YAyEjB,qBAAqB;IAwEnC,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,gBAAgB;YAaV,0BAA0B;IA2CxC,OAAO,CAAC,qBAAqB;YAiCf,sBAAsB;IAwBpC,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,sBAAsB;IAY9B,kFAAkF;IAClF,eAAe,CACb,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE;QAAE,KAAK,EAAE,SAAS,CAAC;QAAC,OAAO,CAAC,EAAE,YAAY,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GACtE,IAAI;IAaP,gFAAgF;IAChF,iBAAiB,CACf,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,OAAO,GACjB,IAAI;IAmBP;;OAEG;YACW,mBAAmB;IA+CjC;;;OAGG;YACW,oBAAoB;IA8HlC;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IA2B1B,OAAO,CAAC,qBAAqB;IAoB7B,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,gBAAgB;IAWxB,YAAY,IAAI,SAAS;IAIzB,YAAY,IAAI,SAAS,GAAG,IAAI;CAGjC"}
1
+ {"version":3,"file":"a2a-frontend.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/agent-protocol/a2a-frontend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Task Response Evaluator with LLM Judge + Trace Analysis.
3
+ *
4
+ * Evaluates completed agent tasks on two axes:
5
+ * 1. Response quality (relevance, completeness, actionability)
6
+ * 2. Execution quality (tool call efficiency, unnecessary delegations)
7
+ *
8
+ * Uses ProbeAgent in single-shot mode (same pattern as llm-judge.ts).
9
+ */
10
+ import type { SqliteTaskStore } from './task-store';
11
+ export interface ResponseQuality {
12
+ rating: number;
13
+ category: 'excellent' | 'good' | 'adequate' | 'poor' | 'off-topic' | 'error';
14
+ relevance: boolean;
15
+ completeness: boolean;
16
+ actionable: boolean;
17
+ reasoning: string;
18
+ }
19
+ export interface ExecutionQuality {
20
+ rating: number;
21
+ category: 'efficient' | 'adequate' | 'wasteful' | 'error';
22
+ unnecessary_tool_calls?: number;
23
+ reasoning: string;
24
+ }
25
+ export interface TaskEvaluationResult {
26
+ response_quality: ResponseQuality;
27
+ execution_quality?: ExecutionQuality;
28
+ overall_rating: number;
29
+ summary: string;
30
+ }
31
+ export interface TaskEvaluatorConfig {
32
+ model?: string;
33
+ provider?: string;
34
+ apiKey?: string;
35
+ prompt?: string;
36
+ traceDir?: string;
37
+ }
38
+ export declare const DEFAULT_EVALUATION_PROMPT = "You are a task response quality evaluator for an AI agent system called Visor.\n\nYou will receive the user's original request and an execution trace inside <execution_trace> tags. The trace is a YAML-formatted view of the entire agent execution, including the final response. When no trace is available, the agent response is provided directly.\n\n## How to Read the Execution Trace\n\nThe trace is a tree of spans representing the agent's execution pipeline:\n\n**Top-level: `visor.run`** \u2014 The root span with metadata:\n- `trace_id`: Unique execution identifier\n- `visor` / `probe`: Software versions\n- `source`: Where the request came from (e.g., \"slack\", \"cli\")\n- `duration`: Total wall-clock time\n\n**Checks** \u2014 Named processing steps (e.g., `route-intent`, `explore-code`, `generate-response`):\n- `type`: \"ai\" (LLM-powered), \"script\" (deterministic), or \"workflow\" (sub-pipeline)\n- `duration`: How long this step took\n- `input`: What was passed to this check \u2014 may include an `intent` (the user's question as understood by the router) and dependency outputs\n- `output`: The check's result \u2014 may be structured JSON or plain text\n\n**AI blocks** (`ai: model-name`) \u2014 Individual LLM calls within checks:\n- Shows model used, duration, and token counts (input/output)\n- `intent`: The question or instruction sent to the LLM\n\n**Tool calls** \u2014 Listed as `- toolName(input) \u2192 size`:\n- `search(\"query\" in repo)`: Code search. \"\u2192 no results\" means nothing was found; otherwise shows result size\n- `extract(file/path)`: File content extraction with result size\n- `listFiles(dir)`: Directory listing\n- `bash()`: Shell command execution\n\n**Delegations** (`search.delegate(\"query\")`) \u2014 Sub-agent searches:\n- Contains their own AI blocks and tool calls\n- Used for complex multi-step code exploration\n\n**The `response` field** at the end of the trace is the final answer sent back to the user. This is the primary output to evaluate.\n\n**Symbols:**\n- `\u2717` marks failed/error spans\n- `= check-name` means output is identical to that check's output (deduplication)\n\n## Evaluation Criteria\n\n**Response Quality** (1-5):\n- **Relevance**: Does the response directly address what the user asked? A response about the wrong topic or that misunderstands the question scores low.\n- **Completeness**: Does it fully answer the question? Partial answers, missing key details, or surface-level responses score lower.\n- **Actionable**: Can the user act on this information? Vague or generic advice scores lower than specific, concrete answers with code references.\n- Rating: 5=excellent (thorough, specific, directly useful), 4=good (answers well but minor gaps), 3=adequate (addresses question but lacks depth), 2=poor (partially relevant or very incomplete), 1=off-topic or error\n\n**Execution Quality** (1-5, only when trace is provided):\n- **Efficiency**: Were tool calls necessary and well-targeted? Good search queries that find results on the first try score high.\n- **Redundancy**: Were there duplicate searches, unnecessary re-searches with slightly different queries, or tools called for information already available?\n- **Delegation quality**: Were search delegations productive? Did they explore relevant code paths?\n- **Token usage**: Was input context kept reasonable, or did the agent load excessive amounts of code?\n- Rating: 5=efficient (minimal, targeted tool use), 4=adequate (minor redundancy), 3=some waste (noticeable unnecessary calls), 2=wasteful (many redundant searches or delegations), 1=error/broken execution\n\n**Overall Rating** (1-5): Weighted combination \u2014 response quality matters most, execution quality is secondary. A perfect response from a wasteful execution still scores 3-4 overall.\n\nYou MUST respond with valid JSON matching the provided schema. Be specific in your reasoning \u2014 reference actual check names, tool calls, or response content.";
39
+ /**
40
+ * Evaluate a completed task using an LLM judge.
41
+ *
42
+ * @param taskId - Task ID (full or prefix)
43
+ * @param store - Initialized SqliteTaskStore
44
+ * @param config - Optional evaluator configuration
45
+ * @returns Evaluation result with ratings and reasoning
46
+ */
47
+ export declare function evaluateTask(taskId: string, store: SqliteTaskStore, config?: TaskEvaluatorConfig): Promise<TaskEvaluationResult>;
48
+ /**
49
+ * Run evaluation and store result as a task artifact.
50
+ */
51
+ export declare function evaluateAndStore(taskId: string, store: SqliteTaskStore, config?: TaskEvaluatorConfig): Promise<TaskEvaluationResult>;
52
+ //# sourceMappingURL=task-evaluator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-evaluator.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/agent-protocol/task-evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAOpD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC;IAC7E,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,WAAW,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC;IAC1D,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,EAAE,eAAe,CAAC;IAClC,iBAAiB,CAAC,EAAE,gBAAgB,CAAC;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAMD,eAAO,MAAM,yBAAyB,44HAyDwH,CAAC;AAoD/J;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,eAAe,EACtB,MAAM,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,oBAAoB,CAAC,CAqI/B;AAMD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,eAAe,EACtB,MAAM,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,oBAAoB,CAAC,CAe/B"}
@@ -60,8 +60,10 @@ export interface TaskStore {
60
60
  rows: TaskQueueRow[];
61
61
  total: number;
62
62
  };
63
- /** Mark all 'working' tasks as 'failed' (crash recovery on startup). */
64
- failStaleTasks(reason?: string): number;
63
+ /** Mark 'working' tasks as 'failed' (crash recovery on startup).
64
+ * When `claimedBy` is provided, only fails tasks owned by that instance.
65
+ * Without it, only fails **unclaimed** working tasks (safe default). */
66
+ failStaleTasks(reason?: string, claimedBy?: string): number;
65
67
  /** Mark 'working' tasks older than the given age as 'failed' (runtime stale detection). */
66
68
  failStaleTasksByAge(olderThanMs: number, reason?: string): number;
67
69
  /** Delete completed/failed/canceled tasks older than the given age. */
@@ -95,7 +97,7 @@ export declare class SqliteTaskStore implements TaskStore {
95
97
  claimNextSubmitted(workerId: string): AgentTask | null;
96
98
  reclaimStaleTasks(_workerId: string, staleTimeoutMs?: number): AgentTask[];
97
99
  releaseClaim(taskId: string): void;
98
- failStaleTasks(reason?: string): number;
100
+ failStaleTasks(reason?: string, claimedBy?: string): number;
99
101
  failStaleTasksByAge(olderThanMs: number, reason?: string): number;
100
102
  purgeOldTasks(olderThanMs: number): number;
101
103
  deleteExpiredTasks(): string[];
@@ -1 +1 @@
1
- {"version":3,"file":"task-store.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/agent-protocol/task-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task-store.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/agent-protocol/task-store.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tasks-cli-handler.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/agent-protocol/tasks-cli-handler.ts"],"names":[],"mappings":"AAslBA,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0CtE"}
1
+ {"version":3,"file":"tasks-cli-handler.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/agent-protocol/tasks-cli-handler.ts"],"names":[],"mappings":"AAs7BA,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgHtE"}
@@ -0,0 +1,34 @@
1
+ import { SqliteTaskStore, type ListTasksFilter } from './task-store';
2
+ export declare class TasksTUI {
3
+ private screen;
4
+ private listBox;
5
+ private detailBox;
6
+ private statusBar;
7
+ private store;
8
+ private filter;
9
+ private instanceId;
10
+ private items;
11
+ private total;
12
+ private selectedIndex;
13
+ private scrollOffset;
14
+ private mode;
15
+ private detailScrollOffset;
16
+ private detailLines;
17
+ private refreshInterval?;
18
+ private destroyed;
19
+ constructor(store: SqliteTaskStore, filter: ListTasksFilter);
20
+ private setupKeyBindings;
21
+ private getVisibleHeight;
22
+ private moveSelection;
23
+ private ensureVisible;
24
+ private scrollDetail;
25
+ private loadTasks;
26
+ private enterDetail;
27
+ private render;
28
+ private renderDetail;
29
+ private wrapText;
30
+ start(): Promise<void>;
31
+ destroy(): void;
32
+ }
33
+ export declare function runTasksTUI(filter: ListTasksFilter): Promise<void>;
34
+ //# sourceMappingURL=tasks-tui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks-tui.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/agent-protocol/tasks-tui.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,KAAK,eAAe,EAAqB,MAAM,cAAc,CAAC;AAmGxF,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,UAAU,CAAS;IAE3B,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,IAAI,CAAoB;IAChC,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,WAAW,CAAgB;IAEnC,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,SAAS,CAAS;gBAEd,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,eAAe;IA2E3D,OAAO,CAAC,gBAAgB;IAkHxB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,MAAM;IA2Ed,OAAO,CAAC,YAAY;IA8GpB,OAAO,CAAC,QAAQ;IAoBV,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB5B,OAAO,IAAI,IAAI;CAahB;AAMD,wBAAsB,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAUxE"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Trace serializer for LLM evaluation prompts and CLI display.
3
+ *
4
+ * Supports multiple trace backends:
5
+ * 1. Grafana Tempo (via Grafana datasource proxy or direct Tempo API)
6
+ * 2. Jaeger (via Jaeger HTTP API)
7
+ * 3. Local NDJSON files (Visor's file-span-exporter OTEL format)
8
+ *
9
+ * Auto-detects the backend from environment variables:
10
+ * - OTEL_EXPORTER_OTLP_ENDPOINT + VISOR_TELEMETRY_SINK=otlp → probe Grafana/Jaeger
11
+ * - VISOR_TRACE_BACKEND=grafana|jaeger|file (explicit override)
12
+ * - GRAFANA_URL, GRAFANA_TEMPO_DATASOURCE_ID → Grafana Tempo
13
+ * - JAEGER_URL → Jaeger
14
+ * - Falls back to local file scan
15
+ */
16
+ export interface TraceBackendConfig {
17
+ type: 'grafana' | 'jaeger' | 'file' | 'auto';
18
+ /** Grafana base URL, e.g. http://localhost:3000 */
19
+ grafanaUrl?: string;
20
+ /** Grafana Tempo datasource ID (default: auto-detect) */
21
+ grafanaDatasourceId?: string | number;
22
+ /** Jaeger base URL, e.g. http://localhost:16686 */
23
+ jaegerUrl?: string;
24
+ /** Local trace directory (default: output/traces) */
25
+ traceDir?: string;
26
+ /** Auth token for remote APIs */
27
+ authToken?: string;
28
+ }
29
+ interface NormalizedSpan {
30
+ traceId: string;
31
+ spanId: string;
32
+ parentSpanId?: string;
33
+ name: string;
34
+ startTimeMs: number;
35
+ endTimeMs: number;
36
+ durationMs: number;
37
+ attributes: Record<string, string | number | boolean>;
38
+ events: Array<{
39
+ name: string;
40
+ attributes: Record<string, string | number | boolean>;
41
+ }>;
42
+ status: 'ok' | 'error';
43
+ }
44
+ interface SpanTree {
45
+ span: NormalizedSpan;
46
+ children: SpanTree[];
47
+ }
48
+ /**
49
+ * Fetch trace spans by trace ID. Tries backends in order:
50
+ * 1. Explicit backend (config.type)
51
+ * 2. Grafana Tempo (auto-detect)
52
+ * 3. Jaeger (auto-detect)
53
+ * 4. Local NDJSON files
54
+ */
55
+ export declare function fetchTraceSpans(traceId: string, config?: Partial<TraceBackendConfig>): Promise<NormalizedSpan[]>;
56
+ /**
57
+ * Find the NDJSON trace file matching a given trace ID.
58
+ * Scans the first line of each `.ndjson` file in the trace directory.
59
+ */
60
+ export declare function findTraceFile(traceId: string, traceDir?: string): Promise<string | null>;
61
+ export interface RenderTreeOptions {
62
+ maxDepth?: number;
63
+ maxChars?: number;
64
+ /** Fallback intent text for AI spans whose input is too truncated */
65
+ fallbackIntent?: string;
66
+ /** When true, don't truncate output/intent previews */
67
+ fullOutput?: boolean;
68
+ /** Final task response from the task store (full, not OTEL-truncated) */
69
+ taskResponse?: string;
70
+ }
71
+ /**
72
+ * Serialize a trace (by ID) into a compact text tree for LLM prompts.
73
+ * Auto-detects the backend (Grafana Tempo, Jaeger, local files).
74
+ */
75
+ export declare function serializeTraceForPrompt(traceIdOrPath: string, maxChars?: number, backendConfig?: Partial<TraceBackendConfig>,
76
+ /** Final task response from the task store (not truncated by OTEL) */
77
+ taskResponse?: string): Promise<string>;
78
+ /**
79
+ * Render a span tree as a compact ASCII tree with durations and details.
80
+ */
81
+ export declare function renderSpanTree(tree: SpanTree, opts?: RenderTreeOptions): string;
82
+ export declare function renderTraceTree(tree: any, // ExecutionNode from trace-reader
83
+ opts?: RenderTreeOptions): string;
84
+ /**
85
+ * Render a span tree as YAML-like structured output.
86
+ * More readable than ASCII tree for JSON inputs/outputs.
87
+ */
88
+ export declare function renderSpanYaml(tree: SpanTree, allSpans: NormalizedSpan[], opts?: RenderTreeOptions): string;
89
+ export {};
90
+ //# sourceMappingURL=trace-serializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-serializer.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/agent-protocol/trace-serializer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAWH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IAC7C,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,mBAAmB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAmBD,UAAU,cAAc;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACtD,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;IACvF,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;CACxB;AAED,UAAU,QAAQ;IAChB,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,EAAE,QAAQ,EAAE,CAAC;CACtB;AAqKD;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GACnC,OAAO,CAAC,cAAc,EAAE,CAAC,CA0B3B;AA2ID;;;GAGG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmB9F;AAgJD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uDAAuD;IACvD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AA4CD;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,aAAa,EAAE,MAAM,EACrB,QAAQ,CAAC,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC;AAC3C,sEAAsE;AACtE,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,CA+BjB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAwB/E;AAGD,wBAAgB,eAAe,CAC7B,IAAI,EAAE,GAAG,EAAE,kCAAkC;AAC7C,IAAI,CAAC,EAAE,iBAAiB,GACvB,MAAM,CAqBR;AAMD;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,cAAc,EAAE,EAC1B,IAAI,CAAC,EAAE,iBAAiB,GACvB,MAAM,CA+BR"}
@@ -19,6 +19,8 @@ export interface TrackExecutionOptions {
19
19
  metadata?: Record<string, unknown>;
20
20
  /** Human-readable description of what's being executed */
21
21
  messageText: string;
22
+ /** Run LLM evaluation after task completion (non-blocking). */
23
+ autoEvaluate?: boolean;
22
24
  }
23
25
  /**
24
26
  * Wrap an engine execution call with task lifecycle tracking.
@@ -1 +1 @@
1
- {"version":3,"file":"track-execution.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/agent-protocol/track-execution.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAgB,SAAS,EAAE,MAAM,SAAS,CAAC;AAEvD,MAAM,MAAM,UAAU,GAClB,KAAK,GACL,OAAO,GACP,UAAU,GACV,OAAO,GACP,UAAU,GACV,OAAO,GACP,KAAK,GACL,KAAK,GACL,KAAK,GACL,WAAW,GACX,SAAS,CAAC;AAEd,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,CAAC,EACpC,IAAI,EAAE,qBAAqB,EAC3B,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACzB,OAAO,CAAC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,CAAC,CAAA;CAAE,CAAC,CAwFzC"}
1
+ {"version":3,"file":"track-execution.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/agent-protocol/track-execution.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAgB,SAAS,EAAE,MAAM,SAAS,CAAC;AAUvD,MAAM,MAAM,UAAU,GAClB,KAAK,GACL,OAAO,GACP,UAAU,GACV,OAAO,GACP,UAAU,GACV,OAAO,GACP,KAAK,GACL,KAAK,GACL,KAAK,GACL,WAAW,GACX,SAAS,CAAC;AAEd,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,CAAC,EACpC,IAAI,EAAE,qBAAqB,EAC3B,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACzB,OAAO,CAAC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,CAAC,CAAA;CAAE,CAAC,CA4GzC"}
@@ -1 +1 @@
1
- {"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/cli-main.ts"],"names":[],"mappings":"AA2qCA;;GAEG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAmiD1C"}
1
+ {"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/cli-main.ts"],"names":[],"mappings":"AA2qCA;;GAEG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAskD1C"}