Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
75 commits
Select commit Hold shift + click to select a range
2de23d2
feat(eval): eval observability — runs, cases, datasets, UI (Issue #215)
vishesh-orkes May 20, 2026
6d7b920
Merge branch 'main' into feat/eval-observability-215
vishesh-orkes May 21, 2026
b31a9d8
fix(eval): use short-lived AsyncClient for push_dataset/post_eval_run…
vishesh-orkes May 21, 2026
92431c2
Merge branch 'main' into feat/eval-observability-215
vishesh-orkes May 21, 2026
a5134a4
Merge branch 'main' into feat/eval-observability-215
vishesh-orkes May 26, 2026
d77fc37
Merge branch 'main' into feat/eval-observability-215
vishesh-orkes May 27, 2026
6b82b05
feat(server): OCG sub-agent — system tasks + agent-driven auto-injection
NicholasDCole Jun 8, 2026
b1ac11f
feat(ocg): send bearer auth header on OCG requests
NicholasDCole Jun 8, 2026
6db7c32
refactor(server): generic auto-expose mechanism + fix OCG dispatch
NicholasDCole Jun 9, 2026
644f28e
refactor(ocg): strategy pattern + Apache Commons cleanup
NicholasDCole Jun 9, 2026
5cc0a7e
refactor(server): generic registry for server-registered agents
NicholasDCole Jun 9, 2026
d24531c
refactor(compiler): split mergeAutoExposedTools into focused helpers
NicholasDCole Jun 9, 2026
7d15f59
feat(ocg): bake current date into OCG sub-agent system prompt
NicholasDCole Jun 9, 2026
2d44cad
fix(ocg): import java.time classes instead of inline FQN
NicholasDCole Jun 9, 2026
ab2f7c0
Add docs
NicholasDCole Jun 9, 2026
345ddea
refactor(compiler): top-level-only auto-expose, constructor injection…
NicholasDCole Jun 10, 2026
52006f1
refactor(ocg): preserve interrupt flag, tighten throws, pin body shapes
NicholasDCole Jun 10, 2026
879851f
fix(compiler): stop registrar from snapshotting empty auto-expose cac…
NicholasDCole Jun 10, 2026
0b88cc4
style: apply spotless / palantir-java-format violations from CI
NicholasDCole Jun 10, 2026
1e590a2
style: collapse remaining spotless violation in OcgRequestTaskTest
NicholasDCole Jun 10, 2026
6d69f18
feat(ocg): require OCG_MODEL explicitly when OCG is enabled
NicholasDCole Jun 10, 2026
cd4cb8f
agentdef
v1r3n Jun 10, 2026
ca157ad
Support Agentspan Embedded in Orkes Conductor (#273)
bradyyie Jun 11, 2026
a0c71a9
Spotless
bradyyie Jun 11, 2026
6c0c9e0
Spotless
bradyyie Jun 11, 2026
cb63fbc
refactor(compiler): source auto-exposed tools from RegisteredAgent be…
NicholasDCole Jun 11, 2026
fd505f4
fix(ocg): anchor the sub-agent's "today" at execution time, not boot …
NicholasDCole Jun 11, 2026
2da2b4d
fix(ocg): tell the model to omit end_time for ranges that extend to now
NicholasDCole Jun 11, 2026
c45d8d2
Merge remote-tracking branch 'origin/server_split' into feature/OCG_S…
NicholasDCole Jun 11, 2026
bf9fcc7
Refactor files to fit new structure
NicholasDCole Jun 11, 2026
8c82206
Merge remote-tracking branch 'origin/server_split' into feature/OCG_S…
NicholasDCole Jun 11, 2026
79752d3
dummy
NicholasDCole Jun 11, 2026
d0f8c7b
Make changes compatible with core conductor
NicholasDCole Jun 12, 2026
67c005f
OCG as SDK-declared sub-agent: per-instance binding, auto-expose removed
NicholasDCole Jun 12, 2026
6414f0d
OCG tools compile to plain HTTP tasks; delete the OCG execution layer
NicholasDCole Jun 12, 2026
2ac990c
OCG live-tuning from dev runs; drop ocg_code_history; rewrite flow doc
NicholasDCole Jun 12, 2026
f5ed5d8
Remove unneeded files
NicholasDCole Jun 12, 2026
5cef0be
Rename test
NicholasDCole Jun 12, 2026
14c451b
Remove not needed files
NicholasDCole Jun 12, 2026
167e982
Delete the empty boot-time registry; doc URL touch-ups
NicholasDCole Jun 12, 2026
0ae15c1
docs: drop dead design-history link from ocg-agent-flow.md
NicholasDCole Jun 12, 2026
a06288e
Server split (#271)
v1r3n Jun 15, 2026
104dfa5
Merge branch 'main' into feature/OCG_System_Task
NicholasDCole Jun 15, 2026
159360f
Typo and default depth fix
NicholasDCole Jun 15, 2026
4045ab5
Update dependencies
NicholasDCole Jun 15, 2026
2d24287
chore(sdk/typescript): update lock files to match security overrides
NicholasDCole Jun 15, 2026
343989b
Fix e2e test
NicholasDCole Jun 15, 2026
efc07db
fixes
v1r3n Jun 20, 2026
1ab37ff
fix(server): forward tool_calls array on HITL WAITING SSE events (#226)
v1r3n Jun 20, 2026
60f7639
feat: OCG retrieval agents — SDK-declared, compiled to plain HTTP tas…
NicholasDCole Jun 20, 2026
ec26c1c
fix(ts): resolve high-severity undici/ws audit failures
v1r3n Jun 20, 2026
43bcd9d
Merge branch 'main' of https://github.com/agentspan-ai/agentspan into…
v1r3n Jun 20, 2026
ee9474f
ci: auto-retry transient python-e2e flakes with pytest-rerunfailures
v1r3n Jun 20, 2026
5c5a709
test(e2e): auto-retry transient python-e2e flakes (pytest-rerunfailur…
v1r3n Jun 20, 2026
9c23123
Add LLM Retry + Enhance OCG built-in agent
NicholasDCole Jun 23, 2026
d4179e9
Merge branch 'main' into feature/improve_ocg_agent
NicholasDCole Jun 23, 2026
340fdee
Fix linting
NicholasDCole Jun 24, 2026
72d14e1
ci: publish server to Maven Central on release + add GitHub Packages …
bradyyie Jun 24, 2026
f26e249
test(ts-e2e): converge #01 aout_regex_retry, widen Suite 17 poll budget
NicholasDCole Jun 24, 2026
2949d85
Merge branch 'main' into feature/improve_ocg_agent
NicholasDCole Jun 24, 2026
c151ba6
docs(server): scope version-drift to three consumption modes
ling-senpeng13 Jun 25, 2026
a54f83a
chore: ignore .vscode/ and .claude/ local config
ling-senpeng13 Jun 25, 2026
2c95869
docs(server): add §9.3 upgrade & adoption + validation-readiness notes
ling-senpeng13 Jun 25, 2026
0a24994
fix(python-sdk): Windows/cross-platform developer experience (install…
manan164 Jun 25, 2026
decff1b
Merge pull request #281 from agentspan-ai/feature/improve_ocg_agent
NicholasDCole Jun 25, 2026
d0af73c
Merge pull request #283 from agentspan-ai/docs/agentspan-library-vers…
ling-senpeng13 Jun 25, 2026
8cb3a8e
feat(sdk): cross-SDK parity + conductor-agent-sdk coordinates, Conduc…
v1r3n Jun 28, 2026
3b3a27e
refactor(ts): rename npm scope @conductoross -> @conductor-oss (#289)
v1r3n Jun 28, 2026
4a48c75
update version
v1r3n Jun 28, 2026
2a1a968
fix(ci): update NuGet publish workflow to correct C# project paths (#…
v1r3n Jun 28, 2026
1e1aa87
Add GitHub Actions workflow for deploying docs
v1r3n Jun 29, 2026
ccee222
Fix typo in workflow name for deploy-docs.yml
v1r3n Jun 29, 2026
d38aa0e
Merge remote-tracking branch 'origin/main' into feat/eval-observabili…
vishesh-orkes Jun 29, 2026
3b060e4
feat(eval): dataset↔run link, LLM-judge semantic checks, friendlier c…
vishesh-orkes Jul 1, 2026
ace0b64
Merge branch 'feat/eval-observability-215' into eval-observability-em…
vishesh-orkes Jul 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 6 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -256,9 +256,15 @@ jobs:

- name: Run Python e2e suites 1-13
working-directory: sdk/python
# These suites drive a real server + real LLM, so individual tests
# flake on transient latency/tool-call stalls (workflow still RUNNING
# at timeout, tool batch not returning, etc.). Auto-retry transient
# failures up to twice — a genuinely broken test still fails all 3
# attempts, while a one-off flake recovers. See #277 thread.
run: |
uv run pytest e2e/ -v --tb=short \
--junitxml=../../e2e-results/junit.xml \
--reruns 2 --reruns-delay 5 \
-n 3 --dist=loadgroup

- name: Generate Python HTML report
Expand Down
25 changes: 25 additions & 0 deletions .github/workflows/deploy-docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Publish docs via GitHub Pages

permissions:
contents: write

on:
push:
branches:
- main
workflow_dispatch:

jobs:
build:
name: Deploy docs
runs-on: ubuntu-latest
steps:
- name: Checkout main
uses: actions/checkout@v7

- name: Deploy docs
uses: mhausenblas/mkdocs-deploy-gh-pages@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CONFIG_FILE: mkdocs.yml
REQUIREMENTS: requirements.txt
14 changes: 10 additions & 4 deletions .github/workflows/release-csharp-sdk.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,16 @@ jobs:

- name: Pack
run: |
dotnet pack src/Agentspan/Agentspan.csproj \
--configuration Release \
-p:Version=${{ steps.version.outputs.version }} \
--output ./nupkg
for proj in \
src/Conductor.AI/Conductor.AI.csproj \
src/Conductor.AI.OpenAI/Conductor.AI.OpenAI.csproj \
src/Conductor.AI.SemanticKernel/Conductor.AI.SemanticKernel.csproj \
src/Conductor.AI.GoogleADK/Conductor.AI.GoogleADK.csproj; do
dotnet pack "$proj" \
--configuration Release \
-p:Version=${{ steps.version.outputs.version }} \
--output ./nupkg
done

- name: Publish to NuGet
run: |
Expand Down
57 changes: 55 additions & 2 deletions .github/workflows/release-server-maven.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
name: Publish Server to Maven Central

on:
release:
types: [created]
workflow_dispatch:
inputs:
version:
Expand Down Expand Up @@ -31,12 +33,17 @@ jobs:
- name: Determine version
id: version
run: |
VERSION="${{ inputs.version }}"
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
VERSION="${{ inputs.version }}"
else
TAG="${{ github.event.release.tag_name }}"
VERSION="${TAG#v}"
fi
echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
echo "Publishing version: ${VERSION}"

# Publishes both modules (conductor-agentspan, conductor-agentspan-server)
# under org.conductoross.conductor. The runnable fat jar is released
# under org.conductoross. The runnable fat jar is released
# separately via the S3/GitHub workflow, not to Maven Central.
- name: Publish to Maven Central
run: |
Expand All @@ -48,3 +55,49 @@ jobs:
ORG_GRADLE_PROJECT_signingInMemoryKeyId: ${{ secrets.SIGNING_KEY_ID }}
ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.SIGNING_KEY }}
ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.SIGNING_PASSWORD }}

publish-github-packages:
runs-on: ubuntu-latest
# Least privilege: GitHub Packages only needs to write packages with the
# built-in GITHUB_TOKEN. No Sonatype/signing secrets or protected
# environment required, so this is a separate job from Maven Central.
permissions:
contents: read
packages: write
defaults:
run:
working-directory: server

steps:
- uses: actions/checkout@v4

- name: Set up Zulu JDK 21
uses: actions/setup-java@v5
with:
distribution: "zulu"
java-version: "21"

- name: Determine version
id: version
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
VERSION="${{ inputs.version }}"
else
TAG="${{ github.event.release.tag_name }}"
VERSION="${TAG#v}"
fi
echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
echo "Publishing version: ${VERSION}"

# Publishes both modules to GitHub Packages
# (https://maven.pkg.github.com/${{ github.repository }}). Unsigned —
# GitHub Packages does not require GPG signatures, so no signing secrets
# are passed here (the vanniktech block only signs when a signing key is
# present). The runnable fat jar is released via the S3/GitHub workflow.
- name: Publish to GitHub Packages
run: |
./gradlew publishAllPublicationsToGitHubPackagesRepository --no-configuration-cache \
-Pversion=${{ steps.version.outputs.version }}
env:
GITHUB_ACTOR: ${{ github.actor }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2 changes: 1 addition & 1 deletion .github/workflows/release-server-s3.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ jobs:
run: ./gradlew bootJar -PbuildUI=true

- name: Prepare release asset
run: cp build/libs/agentspan-runtime.jar ../agentspan-server-${{ inputs.version }}.jar
run: cp conductor-agentspan-server/build/libs/agentspan-runtime.jar ../agentspan-server-${{ inputs.version }}.jar

- name: Upload to S3 (versioned and latest)
env:
Expand Down
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# OCG smoke test local venv
/e2e/ocg/venv/

.DS_Store
.idea/
__pycache__/
Expand Down Expand Up @@ -51,3 +54,7 @@ obj/
*.user
*.suo
.vs/

# Editor / tooling local config
.vscode/
.claude/
68 changes: 34 additions & 34 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ This file provides context for AI coding agents (Claude Code, Copilot, Cursor, e

## Project Overview

The `agentspan` Python SDK compiles Python `Agent` definitions into durable [Conductor](https://github.com/conductor-oss/conductor) executions. Agents survive process crashes, tools scale as distributed workers, and human-in-the-loop approvals can pause for days.
The Agentspan Python SDK compiles Python `Agent` definitions into durable [Conductor](https://github.com/conductor-oss/conductor) executions. Agents survive process crashes, tools scale as distributed workers, and human-in-the-loop approvals can pause for days.

**Package name (PyPI):** `agentspan`
**npm package:** `@agentspan-ai/agentspan`
**Import path:** `from agentspan.agents import ...`
**Package name (PyPI):** `conductor-agent-sdk`
**npm package:** `@conductor-oss/conductor-agent-sdk`
**Import path:** `from conductor.ai.agents import ...`
**Python:** 3.10+
**License:** MIT

Expand Down Expand Up @@ -38,28 +38,28 @@ When `run(agent, prompt)` is called:

| File | Purpose |
|---|---|
| `src/agentspan/agents/agent.py` | `Agent` class — the single orchestration primitive |
| `src/agentspan/agents/tool.py` | `@tool` decorator, `ToolDef`, `http_tool()`, `mcp_tool()` |
| `src/agentspan/agents/run.py` | Top-level `run()`, `start()`, `stream()`, `run_async()`, `plan()` with singleton runtime |
| `src/agentspan/agents/result.py` | `AgentResult`, `AgentHandle`, `AgentStatus`, `AgentEvent`, `EventType` |
| `src/agentspan/agents/guardrail.py` | `Guardrail`, `GuardrailResult`, `RegexGuardrail`, `LLMGuardrail` |
| `src/agentspan/agents/memory.py` | `ConversationMemory` — session message history |
| `src/agentspan/agents/semantic_memory.py` | `SemanticMemory`, `MemoryStore`, `MemoryEntry` — long-term memory |
| `src/agentspan/agents/termination.py` | `TerminationCondition` and composable subclasses (`&`, `|` operators) |
| `src/agentspan/agents/handoff.py` | `HandoffCondition`, `OnToolResult`, `OnTextMention`, `OnCondition` |
| `src/agentspan/agents/code_executor.py` | `CodeExecutor` — Local, Docker, Jupyter, Serverless |
| `src/agentspan/agents/ext.py` | `GPTAssistantAgent` |
| `src/agentspan/agents/tracing.py` | Optional OpenTelemetry integration |
| `src/agentspan/agents/__init__.py` | Public API surface — all exports |
| `src/agentspan/agents/compiler/agent_compiler.py` | Single agent compilation (DoWhile loops, tool dispatch) |
| `src/agentspan/agents/compiler/multi_agent_compiler.py` | Multi-agent strategies (handoff, sequential, parallel, router) |
| `src/agentspan/agents/compiler/tool_compiler.py` | `@tool` → TaskDef + ToolSpec + dispatch registration |
| `src/agentspan/agents/compiler/_dispatch.py` | Universal dispatch worker (fuzzy parsing, circuit breaker) |
| `src/agentspan/agents/runtime/runtime.py` | `AgentRuntime` — compile + execute + stream |
| `src/agentspan/agents/runtime/worker_manager.py` | Auto-register `@tool` as Conductor workers |
| `src/agentspan/agents/runtime/config.py` | `AgentConfig` — environment variable configuration |
| `src/agentspan/agents/_internal/model_parser.py` | Parse `"provider/model"` strings |
| `src/agentspan/agents/_internal/schema_utils.py` | JSON Schema generation from type hints |
| `src/conductor/ai/agents/agent.py` | `Agent` class — the single orchestration primitive |
| `src/conductor/ai/agents/tool.py` | `@tool` decorator, `ToolDef`, `http_tool()`, `mcp_tool()` |
| `src/conductor/ai/agents/run.py` | Top-level `run()`, `start()`, `stream()`, `run_async()`, `plan()` with singleton runtime |
| `src/conductor/ai/agents/result.py` | `AgentResult`, `AgentHandle`, `AgentStatus`, `AgentEvent`, `EventType` |
| `src/conductor/ai/agents/guardrail.py` | `Guardrail`, `GuardrailResult`, `RegexGuardrail`, `LLMGuardrail` |
| `src/conductor/ai/agents/memory.py` | `ConversationMemory` — session message history |
| `src/conductor/ai/agents/semantic_memory.py` | `SemanticMemory`, `MemoryStore`, `MemoryEntry` — long-term memory |
| `src/conductor/ai/agents/termination.py` | `TerminationCondition` and composable subclasses (`&`, `|` operators) |
| `src/conductor/ai/agents/handoff.py` | `HandoffCondition`, `OnToolResult`, `OnTextMention`, `OnCondition` |
| `src/conductor/ai/agents/code_executor.py` | `CodeExecutor` — Local, Docker, Jupyter, Serverless |
| `src/conductor/ai/agents/ext.py` | `GPTAssistantAgent` |
| `src/conductor/ai/agents/tracing.py` | Optional OpenTelemetry integration |
| `src/conductor/ai/agents/__init__.py` | Public API surface — all exports |
| `src/conductor/ai/agents/compiler/agent_compiler.py` | Single agent compilation (DoWhile loops, tool dispatch) |
| `src/conductor/ai/agents/compiler/multi_agent_compiler.py` | Multi-agent strategies (handoff, sequential, parallel, router) |
| `src/conductor/ai/agents/compiler/tool_compiler.py` | `@tool` → TaskDef + ToolSpec + dispatch registration |
| `src/conductor/ai/agents/compiler/_dispatch.py` | Universal dispatch worker (fuzzy parsing, circuit breaker) |
| `src/conductor/ai/agents/runtime/runtime.py` | `AgentRuntime` — compile + execute + stream |
| `src/conductor/ai/agents/runtime/worker_manager.py` | Auto-register `@tool` as Conductor workers |
| `src/conductor/ai/agents/runtime/config.py` | `AgentConfig` — environment variable configuration |
| `src/conductor/ai/agents/_internal/model_parser.py` | Parse `"provider/model"` strings |
| `src/conductor/ai/agents/_internal/schema_utils.py` | JSON Schema generation from type hints |

### Conductor Primitive Mapping

Expand Down Expand Up @@ -88,14 +88,14 @@ When `run(agent, prompt)` is called:

### Module-Level Patterns

- Every module uses `logging.getLogger("agentspan.agents.xxx")` for structured logging
- Every module uses `logging.getLogger("conductor.ai.agents.xxx")` for structured logging
- The dispatch worker (`_dispatch.py`) deliberately does NOT use `from __future__ import annotations` because Conductor's worker framework needs real type objects for parameter resolution
- The dispatch worker uses `object` type annotations (not `dict`/`list`) to avoid Conductor's `convert_from_dict_or_list()` issues
- Tool functions, error counts, and approval flags are stored in module-level registries (`_tool_registry`, `_tool_error_counts`, `_tool_approval_flags`)

### Public API

All public exports are listed in `src/agentspan/agents/__init__.py` and its `__all__` list. When adding a new public class or function, add it to both the imports and `__all__`.
All public exports are listed in `src/conductor/ai/agents/__init__.py` and its `__all__` list. When adding a new public class or function, add it to both the imports and `__all__`.

### Agent Strategies

Expand Down Expand Up @@ -127,7 +127,7 @@ python3 -m pytest tests/integration/ -v
ruff check src/

# Type check
mypy src/agentspan/agents/ --ignore-missing-imports --no-strict-optional
mypy src/conductor/ai/agents/ --ignore-missing-imports --no-strict-optional
```

### Test Files
Expand Down Expand Up @@ -157,14 +157,14 @@ This is not negotiable and not subject to per-session interpretation:

When a test reveals non-determinism that the test itself caused (timing-sensitive assertions, ordering assumptions), fix the **test** so it's robust. When the non-determinism is in the system under test (real race, real instability), fix the **system**. Don't add retries to mask either case.

**The narrow exception — upstream LLM provider variability.** Some e2e tests validate a non-LLM property (a strategy compiles, a sub-workflow fires, a worker registers) but depend on the LLM to drive the scenario (call a tool, pick a route). When gpt-4o-mini occasionally skips a tool call or paraphrases away a number, that's external provider variability — not Agentspan's bug and not the test's bug. For these cases:
**The narrow exception — upstream LLM provider variability.** Some e2e tests validate a non-LLM property (a strategy compiles, a sub-workflow fires, a worker registers) but depend on the LLM to drive the scenario (call a tool, pick a route). When gpt-4o-mini occasionally skips a tool call or paraphrases away a number, that's external provider variability — not Agentspan' bug and not the test's bug. For these cases:
- Strongly prefer asserting on deterministic server-side state (workflow status, task names, `outputData` shapes from `@tool` stubs that return fixed data).
- When that's not enough, `{ retry: 2 }` is acceptable, but only with a comment explaining *which* property is the real subject of the test and *why* LLM variability is incidental. See the pattern in `test_suite20_plan_execute.test.ts`.
- Never use retries to paper over a real race in the system or a brittle assertion in the test. The retry is a coping mechanism for upstream variability, not for our own bugs.

### Writing Tests

- Unit tests must run without an Agentspan server (mock all external calls)
- Unit tests must run without a Agentspan server (mock all external calls)
- Place unit tests in `tests/unit/`, integration tests in `tests/integration/`
- Follow existing naming: `test_{module}.py`
- Use `pytest` fixtures and parametrize where appropriate
Expand All @@ -190,7 +190,7 @@ Before merging any change:

1. **Unit tests pass:** `python3 -m pytest tests/unit/ -v`
2. **Lint clean:** `ruff check src/`
3. **Type check clean:** `mypy src/agentspan/agents/ --ignore-missing-imports --no-strict-optional`
3. **Type check clean:** `mypy src/conductor/ai/agents/ --ignore-missing-imports --no-strict-optional`
4. **Public API unchanged** (or intentionally extended): check `__init__.py` `__all__`
5. **Examples still work** for affected features (run against a live Agentspan server)
6. **Docs updated when needed:** `mkdocs build --strict`
Expand Down Expand Up @@ -269,7 +269,7 @@ cd server && ./gradlew build

## CLI (Go)

The `cli/` directory contains the AgentSpan CLI — a Go binary built with Cobra that manages the server and agents.
The `cli/` directory contains the Agentspan CLI — a Go binary built with Cobra that manages the server and agents.

### CLI Key Source Files

Expand Down Expand Up @@ -388,7 +388,7 @@ Environment variables:

| Variable | Description | Default |
|---|---|---|
| `AGENTSPAN_SERVER_URL` | AgentSpan server API URL | `http://localhost:6767/api` |
| `AGENTSPAN_SERVER_URL` | Agentspan server API URL | `http://localhost:6767/api` |
| `AGENTSPAN_AUTH_KEY` | Auth key (Orkes Cloud) | None |
| `AGENTSPAN_AUTH_SECRET` | Auth secret (Orkes Cloud) | None |
| `AGENTSPAN_AGENT_TIMEOUT` | Default execution timeout (seconds) | 300 |
Expand Down
Loading
Loading