Skip to content

Align javascript-sdk docs with the java-sdk/python-sdk documentation-parity standard - #147

Merged
kowser-orkes merged 20 commits into
mainfrom
fix/align-documentation
Jul 29, 2026
Merged

Align javascript-sdk docs with the java-sdk/python-sdk documentation-parity standard#147
kowser-orkes merged 20 commits into
mainfrom
fix/align-documentation

Conversation

@kowser-orkes

@kowser-orkes kowser-orkes commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Pull Request Title: Align javascript-sdk docs with the java-sdk/python-sdk documentation-parity standard

Pull Request type

  • Bugfix
  • Feature
  • Refactoring (no functional changes, no api changes)
  • Build related changes
  • WHOSUSING.md
  • Other (please describe): Documentation

Changes in this PR

  • Removed a dead CI step: agentspan CLI binary download in agent-e2e.yml (nothing invoked it)
  • Reworded remaining "Agentspan"/"AgentSpan" prose to Conductor terminology in AGENTS.md, cli-bin/shared.ts, docs/agents/*.md
  • Added CONDUCTOR_* env var aliases for AgentConfig's 7 worker/streaming/liveness knobs, falling back to the existing AGENTSPAN_* names
  • Added docs/documentation-parity.md — 3-way JS/Java/Python gap map
  • Added docs/README.md — minimal documentation hub
  • Added CI docs job: lychee link check + a legacy-branding grep guard (scoped to README.md/AGENTS.md/docs//cli-bin/)
  • Fixed: removed 5 dead links in root README.md pointing at reference pages that were never written
  • Fixed: resolveOrkesConfig.ts's AGENTSPAN_SERVER_URL fallback tier, clobbered by an earlier find-replace (was checking CONDUCTOR_SERVER_URL twice instead of falling back to the legacy var); corrected the same corruption in two test files

Out of scope (tracked in docs/documentation-parity.md):

  • Full concepts//reference//frameworks/ doc-tree restructuring
  • ~200+ files of plain-prose "agentspan" mentions in src/agents/*.ts comments, examples/, e2e/

Issue #

Alternatives considered

Full structural restructuring in this same PR — rejected, it's a content-authoring effort on the order of python-sdk PR #441, sized for its own PR.

@codecov

codecov Bot commented Jul 28, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 95.45455% with 2 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/agents/runtime.ts 75.00% 1 Missing ⚠️
src/agents/stream.ts 50.00% 1 Missing ⚠️
Flag Coverage Δ
integration-v4-sm 41.47% <56.81%> (+<0.01%) ⬆️
integration-v5-sdkdev 43.88% <56.81%> (-0.19%) ⬇️
unit 73.83% <95.45%> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
src/agents/config.ts 100.00% <100.00%> (ø)
src/agents/errors.ts 89.61% <100.00%> (ø)
src/agents/tool.ts 97.97% <100.00%> (ø)
src/agents/worker.ts 96.93% <100.00%> (ø)
src/sdk/clients/agent/OrkesAgentClient.ts 65.82% <100.00%> (ø)
...reateConductorClient/helpers/resolveOrkesConfig.ts 100.00% <100.00%> (ø)
src/sdk/helpers/logger.ts 92.68% <100.00%> (-0.18%) ⬇️
src/agents/runtime.ts 72.73% <75.00%> (ø)
src/agents/stream.ts 84.83% <50.00%> (ø)

... and 2 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@kowser-orkes kowser-orkes changed the title Fix/align documentation Align javascript-sdk docs with the java-sdk/python-sdk documentation-parity standard Jul 28, 2026
Kowser and others added 20 commits July 28, 2026 21:42
Nothing in e2e/ ever invoked the downloaded `agentspan` binary (verified
via grep across test_suite3_cli_tools/test_suite15_skills), and the one
env var that would have wired it up (AGENTSPAN_CLI_PATH) was already
removed in b336962 with no replacement. AGENTSPAN_CLI_VERSION only fed
this now-dead step.
Reword remaining plain-prose "Agentspan"/"AgentSpan" product-name
mentions to Conductor terminology in AGENTS.md, cli-bin/shared.ts, and
docs/agents/{README,getting-started,framework-agents}.md.

Left untouched (real, not branding drift): the external `agentspan` CLI
binary name, AGENTSPAN_* env var identifiers (Stage 2), internal
`_agentspan` serializer markers, and the exported `AgentspanError` class.
…veness config

AgentConfig's 7 worker/streaming/liveness knobs only read AGENTSPAN_* env
vars, unlike resolveOrkesConfig.ts's CONDUCTOR_* -> AGENTSPAN_* fallback
for connection settings. Give them the same alias treatment, closing the
gap AGENTS.md itself flagged as "a possible follow-up." Additive and
backward compatible -- existing AGENTSPAN_*-only setups are unaffected.
documentation-parity.md is an honest 3-way map (unlike Java/Python's
2-way one) -- it records JS's current structural gap against the
Java/Python core/operations/agent-doc-tree split as tracked debt instead
of implying parity that doesn't exist yet. Also lists JS-only-by-design
pages and the shared (not JS-specific) LEASE_EXTENSION.md loose end.

docs/README.md is a minimal hub (JS has no core-guide split to index
yet) linking to the agent docs, API reference, and the parity map, so
neither new page is orphaned. Wired into the root README's existing
Documentation table, mirroring java-sdk/python-sdk's own hub link.
New `docs` job in pull_request.yml, mirroring java-sdk's ci.yml:
- lycheeverse/lychee-action against README.md + docs/ (--include-fragments
  to also validate #anchor links)
- a grep guard rejecting new "Agentspan"/"AgentSpan" prose

Unlike java-sdk's tree-wide branding guard, this one is scoped to
README.md/AGENTS.md/docs//cli-bin -- the areas the branding sweep
actually covers. examples/, e2e/, and src/ still carry the
intentionally-kept AGENTSPAN_* env var family and are out of scope here.
The "retired documentation references" guard is deferred: nothing is
retired yet (the flat docs/agents/*.md pages are still live).

Running lychee locally surfaced a real, pre-existing bug: README.md's
Documentation table linked to 5 docs/api-reference/*.md pages that were
never written (AuthorizationClient, IntegrationClient, PromptClient,
SchemaClient, SecretClient all exist in source with no reference page).
Removed the 5 dead links and recorded the missing pages as a tracked,
separately-scoped gap in documentation-parity.md.
Commit 8694426 ("Replace AGENTSPAN_SERVER_URL with CONDUCTOR_SERVER_URL")
was a blind find-replace across 174 files. It correctly updated the
files meant to migrate to CONDUCTOR_SERVER_URL, but also clobbered the
one spot meant to keep an AGENTSPAN_SERVER_URL *fallback tier* --
resolveOrkesConfig.ts ended up checking CONDUCTOR_SERVER_URL twice
instead of falling back to the legacy name, contradicting its own R3
comment and the identical pattern already used for auth key/secret two
lines below it.

Found via Stage 5's full unit-test run: 3 tests failed because their
env var assignments and expected precedence no longer matched what the
(also corrupted) test files asserted. Restored AGENTSPAN_SERVER_URL as
the third fallback tier in resolveOrkesConfig.ts, and fixed the two
test files' corrupted env var names/assignments to match.
Summarizes the parity map, docs hub, branding sweep, and new CI guards
(Stages 1-4) and the resolveOrkesConfig fallback-tier fix Stage 5's
validation surfaced. Ties back to java-sdk PR #144 / python-sdk PR #441.
…GENTSPAN_* fallback

Matches java-sdk/python-sdk exactly (CONDUCTOR_AGENT_WORKER_POLL_INTERVAL etc.,
no legacy fallback) -- neither reference SDK carries an AGENTSPAN_* alias for
these settings. Supersedes this branch's own prior CONDUCTOR_WORKER_* (no
_AGENT_ segment) + AGENTSPAN_* fallback, added earlier in this same branch and
never released.
Matches java-sdk's AgentException / python-sdk's ConductorAgentError --
neither reference SDK's base agent-error class carries the legacy product
name. Breaking API rename (pre-1.0, no released version to deprecate through).
- advanced.md / api-reference.md / writing-agents.md: single CONDUCTOR_AGENT_*
  name per knob (no more dual reference), matching java-sdk's runtime.md style
- getting-started.md: quickstart table now names the actual primary env vars
  (CONDUCTOR_AUTH_KEY/SECRET, not the AGENTSPAN_* fallback); dropped
  AGENTSPAN_API_KEY, a bearer-token option carried over from the original
  Agentspan TS SDK that nothing in this package reads
- AGENTS.md: split the connection-config vs. worker/streaming/liveness-knob
  sentence (only the former keeps an AGENTSPAN_* fallback; the latter is
  CONDUCTOR_AGENT_*-only per the prior two commits) without naming the legacy
  identifiers
- CI branding guard: dropped the now-unused AGENTSPAN_[A-Z_*]+/AgentspanError
  allowlist entries -- nothing in its scanned scope needs them any more
- CHANGELOG.md: corrected the Stage 2 entry (still Unreleased) to describe
  the final CONDUCTOR_AGENT_* naming instead of the superseded alias framing

Left untouched (separate, larger scope): AGENTSPAN_LLM_MODEL (~60 example
files + e2e/helpers.ts convention), _agentspan serializer markers
(framework-agents.md, source-coupled), resolveOrkesConfig.ts/logger.ts's
AGENTSPAN_* connection/log-level fallback (bigger blast radius, real
back-compat decision from the original merge).
…tirely

resolveOrkesConfig.ts (server URL, auth key/secret) and DefaultLogger's log
level no longer read AGENTSPAN_SERVER_URL/AGENTSPAN_AUTH_KEY/
AGENTSPAN_AUTH_SECRET/AGENTSPAN_LOG_LEVEL at all -- confirmed python-sdk's
base Configuration class has zero AGENTSPAN_* concept for these settings
either (grepped its actual config-resolution code, not just docs). Only
CONDUCTOR_* is read now, matching java-sdk/python-sdk exactly.

Breaking change for anyone migrating from the standalone
@conductor-oss/conductor-agent-sdk package who kept AGENTSPAN_* env vars set
-- rename to the CONDUCTOR_* equivalents. Updated tests to assert the legacy
vars are now inert rather than testing fallback precedence; updated doc
comments, examples/agents/README.md, and CHANGELOG.md to match.
…ding

- AGENTSPAN_SECONDARY_LLM_MODEL -> CONDUCTOR_AGENT_SECONDARY_LLM_MODEL
  (examples/agents/settings.ts, 58-scatter-gather.ts) -- same sibling
  convention as AGENTSPAN_LLM_MODEL, renamed separately
- AGENTSPAN_JUDGE_MODEL -> CONDUCTOR_AGENT_JUDGE_MODEL (e2e judge harness)
- drop dead AGENTSPAN_* entries from runtime.test.ts's env save/restore
  lists -- inert now that the fallback is fully removed
…irely

- CHANGELOG.md, AGENTS.md, config.ts, resolveOrkesConfig.ts, CI guard:
  reworded away from literal AGENTSPAN_* names, "matches java-sdk/
  python-sdk exactly" framing, and the word "legacy" -- plain statements
  of current behavior only
- deleted the 4 "ignores legacy AGENTSPAN_*" regression tests (config,
  createConductorClient, resolveOrkesConfig x2) and their now-dead env
  save/restore entries -- genericizing the env var name would have made
  them assert nothing meaningful, so removed rather than hollowed out
- CHANGELOG's breaking-change entries lose the exact old env var names
  as a result; accepted per explicit direction, migrators fall back to
  this diff/PR description for the rename table
examples/agents/ had no package.json, so tsx/esbuild fell back to the
repo root's (CJS, no "type" field) and rejected genuine top-level
await with "Top-level await is currently not supported with the cjs
output format" -- affected every example that doesn't wrap its body in
main() (02-tools, 06-hitl, 09-human-in-the-loop, 09d-human-tool,
12-long-running, 18-manual-selection, 32-human-guardrail,
57-plan-dry-run, 63-deploy, 63b/63c/63d/63e).

Added examples/agents/package.json with "type": "module", matching the
pattern already used by the adk/langgraph/openai/vercel-ai example
subdirs. Verified all 13 now run to completion against a live server;
01-basic-agent.ts (main()-wrapped style) still runs unaffected.
Split the flat advanced.md/api-reference.md/framework-agents.md/writing-agents.md
into docs/agents/{concepts,reference,frameworks}/ matching python-sdk's layout,
keeping JS's richer code-heavy content rather than shrinking to Python's terser
prose. Old flat pages kept as redirect stubs (Python's own pattern for superseded
pages) so existing links don't break.

A topic-by-topic content check against python-sdk's 23 concept/reference files
(not just file-existence) found and closed 4 real doc-only gaps: memory usage
guidance, a hand-authored agent-schema.json wire-contract reference (verified
against a live AgentConfigSerializer round-trip), naming the crash-recovery
pattern, and documenting the automatic SSE-fallback behavior.

Also corrected documentation-parity.md, which wrongly claimed JS lacks Google
ADK and OpenAI Agents SDK framework bridges -- both are supported via the same
detectFramework() duck-typing Python uses its own detection for.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Stage 9: add 19 short landing pages (server-setup, workers, workflows,
reliability, security, etc.) linking into existing README/api-reference/
METRICS/LEASE_EXTENSION content, matching python-sdk's own thin-landing-page
pattern over its deeper legacy docs. Rewrite docs/README.md to python-sdk's
Start-here/Build/Operate/Reference shape.

Stage 10: reconcile every file in python-sdk's docs/ tree, not just the
directories already compared. Add docs/workflow-message-queue.md (previously
undocumented outside a passing mention in the agent tools guide) after
confirming JS's pullWorkflowMessages/waitForMessageTool cover the receive
side but no client operation exists to push a message in (the generated
OpenAPI client has no such endpoint; java-sdk has the same receive-only
shape). Add the missing Pull Workflow Messages section to the pre-existing
task-generators.md, and fix a stale JSDoc in tool.ts referencing a
non-existent AgentRuntime.sendMessage method. Document Python's legacy
deep-reference docs and internal design docs file-by-file in
documentation-parity.md so nothing is unaccounted for.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@kowser-orkes
kowser-orkes force-pushed the fix/align-documentation branch from a503867 to 234516f Compare July 29, 2026 04:42
@kowser-orkes
kowser-orkes merged commit 5fae504 into main Jul 29, 2026
28 checks passed
@kowser-orkes
kowser-orkes deleted the fix/align-documentation branch July 29, 2026 04:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants