@probelabs/visor 0.1.169 → 0.1.170

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 (48) hide show
  1. package/README.md +64 -7
  2. package/defaults/assistant.yaml +1 -1
  3. package/defaults/code-talk.yaml +2 -2
  4. package/dist/defaults/assistant.yaml +1 -1
  5. package/dist/defaults/code-talk.yaml +2 -2
  6. package/dist/docs/a2a-provider.md +672 -0
  7. package/dist/docs/architecture.md +174 -12
  8. package/dist/docs/commands.md +36 -0
  9. package/dist/docs/configuration.md +1 -0
  10. package/dist/docs/index.md +9 -2
  11. package/dist/docs/pluggable.md +16 -1
  12. package/dist/index.js +4 -4
  13. package/dist/output/traces/{run-2026-03-07T13-37-21-566Z.ndjson → run-2026-03-07T15-43-18-430Z.ndjson} +84 -84
  14. package/dist/output/traces/{run-2026-03-07T13-37-59-420Z.ndjson → run-2026-03-07T15-43-56-196Z.ndjson} +1818 -1818
  15. package/dist/sdk/{a2a-frontend-XFCSNQR5.mjs → a2a-frontend-IPLHACI6.mjs} +2 -2
  16. package/dist/sdk/{check-provider-registry-XEU5BSRJ.mjs → check-provider-registry-STRAOYRJ.mjs} +5 -5
  17. package/dist/sdk/{chunk-VPPW2TFI.mjs → chunk-47WAHGHK.mjs} +3 -3
  18. package/dist/sdk/{chunk-ROMY3ZN3.mjs → chunk-NYQTQYGU.mjs} +15 -15
  19. package/dist/sdk/{chunk-WGZNS5IB.mjs → chunk-WNLCRRQO.mjs} +2 -2
  20. package/dist/sdk/{chunk-HBT572VG.mjs → chunk-ZM7ALGTE.mjs} +2 -2
  21. package/dist/sdk/{chunk-HBT572VG.mjs.map → chunk-ZM7ALGTE.mjs.map} +1 -1
  22. package/dist/sdk/{failure-condition-evaluator-WYDAZT3H.mjs → failure-condition-evaluator-T67YFO2Z.mjs} +3 -3
  23. package/dist/sdk/{github-frontend-BVM7MHBJ.mjs → github-frontend-BAPXDLBB.mjs} +3 -3
  24. package/dist/sdk/{host-MHYGIPDP.mjs → host-K6IZWJG3.mjs} +3 -3
  25. package/dist/sdk/{routing-K2U7U3OO.mjs → routing-SAGHEUOA.mjs} +4 -4
  26. package/dist/sdk/{schedule-tool-RYYNPLDH.mjs → schedule-tool-TGWPINHO.mjs} +5 -5
  27. package/dist/sdk/{schedule-tool-handler-NFNY6BVX.mjs → schedule-tool-handler-OEBLE5AB.mjs} +5 -5
  28. package/dist/sdk/sdk.js +1 -1
  29. package/dist/sdk/sdk.js.map +1 -1
  30. package/dist/sdk/sdk.mjs +4 -4
  31. package/dist/sdk/{trace-helpers-DQYOGQT5.mjs → trace-helpers-M7RVAZQ2.mjs} +2 -2
  32. package/dist/sdk/{workflow-check-provider-OM5L5FJX.mjs → workflow-check-provider-VDSZR7Y5.mjs} +5 -5
  33. package/dist/traces/{run-2026-03-07T13-37-21-566Z.ndjson → run-2026-03-07T15-43-18-430Z.ndjson} +84 -84
  34. package/dist/traces/{run-2026-03-07T13-37-59-420Z.ndjson → run-2026-03-07T15-43-56-196Z.ndjson} +1818 -1818
  35. package/package.json +1 -1
  36. /package/dist/sdk/{a2a-frontend-XFCSNQR5.mjs.map → a2a-frontend-IPLHACI6.mjs.map} +0 -0
  37. /package/dist/sdk/{check-provider-registry-XEU5BSRJ.mjs.map → check-provider-registry-STRAOYRJ.mjs.map} +0 -0
  38. /package/dist/sdk/{chunk-VPPW2TFI.mjs.map → chunk-47WAHGHK.mjs.map} +0 -0
  39. /package/dist/sdk/{chunk-ROMY3ZN3.mjs.map → chunk-NYQTQYGU.mjs.map} +0 -0
  40. /package/dist/sdk/{chunk-WGZNS5IB.mjs.map → chunk-WNLCRRQO.mjs.map} +0 -0
  41. /package/dist/sdk/{failure-condition-evaluator-WYDAZT3H.mjs.map → failure-condition-evaluator-T67YFO2Z.mjs.map} +0 -0
  42. /package/dist/sdk/{github-frontend-BVM7MHBJ.mjs.map → github-frontend-BAPXDLBB.mjs.map} +0 -0
  43. /package/dist/sdk/{host-MHYGIPDP.mjs.map → host-K6IZWJG3.mjs.map} +0 -0
  44. /package/dist/sdk/{routing-K2U7U3OO.mjs.map → routing-SAGHEUOA.mjs.map} +0 -0
  45. /package/dist/sdk/{schedule-tool-RYYNPLDH.mjs.map → schedule-tool-TGWPINHO.mjs.map} +0 -0
  46. /package/dist/sdk/{schedule-tool-handler-NFNY6BVX.mjs.map → schedule-tool-handler-OEBLE5AB.mjs.map} +0 -0
  47. /package/dist/sdk/{trace-helpers-DQYOGQT5.mjs.map → trace-helpers-M7RVAZQ2.mjs.map} +0 -0
  48. /package/dist/sdk/{workflow-check-provider-OM5L5FJX.mjs.map → workflow-check-provider-VDSZR7Y5.mjs.map} +0 -0
package/README.md CHANGED
@@ -7,19 +7,20 @@
7
7
  [![Node](https://img.shields.io/badge/Node.js-18%2B-green)](https://nodejs.org/)
8
8
  [![License](https://img.shields.io/badge/license-MIT-blue)](LICENSE)
9
9
 
10
- Orchestrate checks, MCP tools, and AI providers with YAML-driven pipelines.
11
- Runs as GitHub Action, CLI, Slack bot, or HTTP API.
10
+ Orchestrate checks, MCP tools, AI providers, and A2A agents with YAML-driven pipelines.
11
+ Runs as GitHub Action, CLI, Slack bot, HTTP API, or A2A agent server.
12
12
  </div>
13
13
 
14
14
  ---
15
15
 
16
- Visor is an open-source workflow engine that lets you define multi-step AI pipelines in YAML. Wire up shell commands, AI providers, MCP tools, HTTP calls, and custom scripts into dependency-aware DAGs — then run them from your terminal, CI, Slack, or an HTTP endpoint.
16
+ Visor is an open-source workflow engine that lets you define multi-step AI pipelines in YAML. Wire up shell commands, AI providers, MCP tools, A2A agents, HTTP calls, and custom scripts into dependency-aware DAGs — then run them from your terminal, CI, Slack, an HTTP endpoint, or as a standards-compliant A2A agent server.
17
17
 
18
18
  **What you get out of the box:**
19
19
 
20
20
  - **YAML-driven pipelines** — define checks, transforms, routing, and AI prompts in a single config file.
21
- - **4 runtime modes** — CLI, GitHub Action, Slack bot, HTTP server — same config, any surface.
22
- - **12+ provider types** — `ai`, `command`, `script`, `mcp`, `http`, `claude-code`, `github`, `memory`, `workflow`, and more.
21
+ - **5 runtime modes** — CLI, GitHub Action, Slack bot, HTTP server, A2A agent server — same config, any surface.
22
+ - **15+ provider types** — `ai`, `a2a`, `command`, `script`, `mcp`, `http`, `claude-code`, `github`, `memory`, `workflow`, and more.
23
+ - **Agent interoperability** — A2A protocol support: expose workflows as discoverable agents, or call external A2A agents from your pipelines.
23
24
  - **AI orchestration** — multi-provider (Gemini, Claude, OpenAI, Bedrock), session reuse, MCP tool calling, retry & fallback.
24
25
  - **Execution engine** — dependency DAGs, parallel waves, forEach fan-out, conditional routing, failure auto-remediation.
25
26
  - **Built-in testing** — YAML-native integration tests with fixtures, mocks, and assertions.
@@ -34,6 +35,7 @@ Visor is an open-source workflow engine that lets you define multi-step AI pipel
34
35
  - [Provider Types](#-provider-types)
35
36
  - [Orchestration](#-orchestration)
36
37
  - [AI & MCP](#-ai--mcp)
38
+ - [Agent Protocol (A2A)](#-agent-protocol-a2a)
37
39
  - [GitHub Provider](#-github-provider)
38
40
  - [Templating & Transforms](#-templating--transforms)
39
41
  - [Suppressing Warnings](#-suppressing-warnings)
@@ -163,7 +165,7 @@ Learn more: [docs/assistant-workflows.md](docs/assistant-workflows.md) | Example
163
165
 
164
166
  ## 🖥️ Runtime Modes
165
167
 
166
- Visor runs the same YAML config across four surfaces:
168
+ Visor runs the same YAML config across five surfaces:
167
169
 
168
170
  | Mode | How to run | Best for |
169
171
  |------|-----------|----------|
@@ -171,6 +173,7 @@ Visor runs the same YAML config across four surfaces:
171
173
  | **GitHub Action** | `uses: probelabs/visor@v1` | PR reviews, issue triage, annotations |
172
174
  | **Slack bot** | `visor --slack --config .visor.yaml` | Team assistants, ChatOps |
173
175
  | **HTTP server** | `http_server: { enabled: true, port: 8080 }` | Webhooks, API integrations |
176
+ | **A2A agent** | `visor --a2a --config .visor.yaml` | Agent interoperability, multi-agent systems |
174
177
 
175
178
  Additional modes:
176
179
  - **TUI** — interactive chat-style terminal UI: `visor --tui`
@@ -185,6 +188,8 @@ visor --analyze-branch-diff # PR-style diff analysis
185
188
  visor --event pr_updated # Simulate GitHub events
186
189
  visor --tui --config ./workflow.yaml # Interactive TUI
187
190
  visor --debug-server --debug-port 3456 # Live web debugger
191
+ visor --a2a --config workflow.yaml # A2A agent server
192
+ visor tasks list --watch # Monitor A2A task queue
188
193
  visor config snapshots # Config version history
189
194
  visor validate # Validate config
190
195
  visor test --progress compact # Run integration tests
@@ -227,6 +232,7 @@ Learn more: [docs/commands.md](docs/commands.md)
227
232
  | Provider | Description | Example use |
228
233
  |----------|------------|------------|
229
234
  | `ai` | Multi-provider AI (Gemini, Claude, OpenAI, Bedrock) | Code review, analysis, generation |
235
+ | `a2a` | Call external A2A agents | Agent delegation, multi-agent workflows |
230
236
  | `command` | Shell commands with Liquid templating | Run tests, build, lint |
231
237
  | `script` | JavaScript in a secure sandbox | Transform data, custom logic |
232
238
  | `mcp` | MCP tool execution (stdio/SSE/HTTP) | External tool integration |
@@ -434,6 +440,57 @@ steps:
434
440
 
435
441
  Learn more: [docs/claude-code.md](docs/claude-code.md) · [docs/mcp-provider.md](docs/mcp-provider.md) · [docs/advanced-ai.md](docs/advanced-ai.md)
436
442
 
443
+ ## 🤝 Agent Protocol (A2A)
444
+
445
+ Visor implements the [A2A (Agent-to-Agent) protocol](https://github.com/google/A2A) for agent interoperability. Every Visor workflow can become a discoverable, standards-compliant agent — and every A2A agent in the ecosystem becomes a callable step in your workflows.
446
+
447
+ ### Server: Expose Workflows as an A2A Agent
448
+
449
+ ```yaml
450
+ agent_protocol:
451
+ enabled: true
452
+ protocol: a2a
453
+ port: 9000
454
+ agent_card_inline:
455
+ name: "Code Review Agent"
456
+ description: "AI-powered code review"
457
+ skills:
458
+ - id: security
459
+ name: Security Review
460
+ description: Analyze code for vulnerabilities
461
+ skill_routing:
462
+ security: security-review
463
+ default_workflow: general-review
464
+ auth:
465
+ type: bearer
466
+ token_env: AGENT_AUTH_TOKEN
467
+ ```
468
+
469
+ ```bash
470
+ visor --a2a --config .visor.yaml # Start A2A server on port 9000
471
+ visor tasks list --watch # Monitor task queue
472
+ ```
473
+
474
+ ### Client: Call External A2A Agents
475
+
476
+ ```yaml
477
+ steps:
478
+ compliance-scan:
479
+ type: a2a
480
+ agent_url: "http://compliance-agent:9000"
481
+ message: |
482
+ Review PR #{{ pr.number }}: {{ pr.title }}
483
+ blocking: true
484
+ timeout: 60000
485
+
486
+ summarize:
487
+ type: ai
488
+ depends_on: [compliance-scan]
489
+ prompt: "Summarize: {{ outputs['compliance-scan'] | json }}"
490
+ ```
491
+
492
+ Learn more: [docs/a2a-provider.md](docs/a2a-provider.md) · [RFC: A2A Protocol Support](rfc/001-a2a-protocol-support.md) · [Example config](examples/a2a-agent-example.yaml)
493
+
437
494
  ## 🧰 GitHub Provider
438
495
 
439
496
  Native GitHub operations (labels, comments, checks) without shelling out to `gh`:
@@ -709,7 +766,7 @@ Learn more: [docs/enterprise-policy.md](docs/enterprise-policy.md)
709
766
  [Assistant workflows](docs/assistant-workflows.md) · [CLI commands](docs/commands.md) · [Configuration](docs/configuration.md) · [AI config](docs/ai-configuration.md) · [Dependencies](docs/dependencies.md) · [forEach propagation](docs/foreach-dependency-propagation.md) · [Failure routing](docs/failure-routing.md) · [Liquid templates](docs/liquid-templates.md) · [Schema-template system](docs/schema-templates.md) · [Fail conditions](docs/fail-if.md) · [Timeouts](docs/timeouts.md) · [Execution limits](docs/limits.md) · [Output formats](docs/output-formats.md) · [Output formatting](docs/output-formatting.md) · [HTTP integration](docs/http.md) · [Scheduler](docs/scheduler.md)
710
767
 
711
768
  **Providers:**
712
- [Command](docs/command-provider.md) · [Script](docs/script.md) · [MCP](docs/mcp-provider.md) · [MCP tools for AI](docs/mcp.md) · [Claude Code](docs/claude-code.md) · [GitHub ops](docs/github-ops.md) · [Custom providers](docs/pluggable.md)
769
+ [A2A](docs/a2a-provider.md) · [Command](docs/command-provider.md) · [Script](docs/script.md) · [MCP](docs/mcp-provider.md) · [MCP tools for AI](docs/mcp.md) · [Claude Code](docs/claude-code.md) · [GitHub ops](docs/github-ops.md) · [Custom providers](docs/pluggable.md)
713
770
 
714
771
  **Operations:**
715
772
  [GitHub Action reference](docs/action-reference.md) · [Security](docs/security.md) · [Performance](docs/performance.md) · [Observability](docs/observability.md) · [Debugging](docs/debugging.md) · [Debug visualizer](docs/debug-visualizer.md) · [Troubleshooting](docs/troubleshooting.md) · [Suppressions](docs/suppressions.md) · [GitHub checks](docs/GITHUB_CHECKS.md)
@@ -766,7 +766,7 @@ steps:
766
766
  # ProbeAgent resolves "*" and "!" patterns natively.
767
767
  ai_allowed_tools_js: |
768
768
  // Start with wildcard — allow all tools by default
769
- const excluded = ['search', 'query', 'extract', 'listFiles', 'searchFiles', 'delegate'];
769
+ const excluded = ['search', 'query', 'extract', 'listFiles', 'searchFiles', 'delegate', 'analyze_all'];
770
770
  const bashEnabled = outputs['build-config']?.bash_enabled === true;
771
771
  if (!bashEnabled) {
772
772
  excluded.push('bash');
@@ -472,7 +472,7 @@ steps:
472
472
  ai:
473
473
  skip_code_context: true
474
474
  enableDelegate: true
475
- enableExecutePlan: true
475
+ enableExecutePlan: false
476
476
  max_iterations: 40
477
477
  prompt_type: code-explorer
478
478
  allowBash: true
@@ -524,7 +524,7 @@ steps:
524
524
  - "curl:-s:*"
525
525
  - "curl:*"
526
526
  timeout: 60000
527
- completion_prompt: |
527
+ _completion_prompt: |
528
528
  Before finalizing your answer, triple-check everything:
529
529
 
530
530
  Challenge assumptions:
@@ -766,7 +766,7 @@ steps:
766
766
  # ProbeAgent resolves "*" and "!" patterns natively.
767
767
  ai_allowed_tools_js: |
768
768
  // Start with wildcard — allow all tools by default
769
- const excluded = ['search', 'query', 'extract', 'listFiles', 'searchFiles', 'delegate'];
769
+ const excluded = ['search', 'query', 'extract', 'listFiles', 'searchFiles', 'delegate', 'analyze_all'];
770
770
  const bashEnabled = outputs['build-config']?.bash_enabled === true;
771
771
  if (!bashEnabled) {
772
772
  excluded.push('bash');
@@ -472,7 +472,7 @@ steps:
472
472
  ai:
473
473
  skip_code_context: true
474
474
  enableDelegate: true
475
- enableExecutePlan: true
475
+ enableExecutePlan: false
476
476
  max_iterations: 40
477
477
  prompt_type: code-explorer
478
478
  allowBash: true
@@ -524,7 +524,7 @@ steps:
524
524
  - "curl:-s:*"
525
525
  - "curl:*"
526
526
  timeout: 60000
527
- completion_prompt: |
527
+ _completion_prompt: |
528
528
  Before finalizing your answer, triple-check everything:
529
529
 
530
530
  Challenge assumptions: