Agent Sandbox Registry

agent-sandbox

Completeness review: the project split (original single repo -> cli/ + python-sdk/{client-sdk,server-sdk})

无中文版

parity/review/completeness-sdk-split.md

Completeness review: the project split (original single repo -> cli/ + python-sdk/{client-sdk,server-sdk})

Inventory source: every git-tracked file of the original repo (622 files) classified by inventory/split_files.py (path-exact, src -> client-sdk/src or server-sdk/src, .py -> .ts/.mjs/.test.ts, basename fallback, content diffstat). Complete row-by-row mapping (original path -> new path(s) + diffstat): inventory/out/split-files.tsv. Regenerate with inventory/run_all.sh.

Status Files Meaning
SAME 362 byte-identical copy at the new path(s)
CHANGED 172 exists at the new path with edits (version, repo URLs, CLI->Node references, new features)
PORTED 70 Python CLI source/test file -> TypeScript file in cli/
RELOCATED 11 moved + renamed (table below)
MISSING 7 none is a real omission (table below)

1. MISSING (7) and RELOCATED (11)

Original Status New / reason
.aicoding-chat-workspace dropped empty editor artefact
benchmarks/__init__.py dropped package marker for a directory that is no longer a Python package
src/agent_sandbox/cli/__init__.py, cli/commands/__init__.py dropped CLI moved to Node (cli/src/cli/index.ts, cli/src/cli/commands/index.ts); user-approved
tests/test_cli/__init__.py dropped pytest package marker
tests/test_cli_evidence/__init__.py, conftest.py dropped replaced by cli/tests/test_cli_evidence/{evidence_cases.ts,capture_cli_evidence.capture.ts} + vitest
benchmarks/bench_cli_startup.py relocated cli/benchmarks/bench_cli_startup.mjs
benchmarks/bench_create.py, bench_import.py relocated python-sdk/client-sdk/benchmarks/
scripts/capture_cli_evidence.py relocated (rewritten) cli/scripts/capture-cli-evidence.mjs (note: cli/AGENTS.md:193 still says it "stays in python-sdk", finding F-02)
scripts/evidence_cases.py relocated cli/tests/test_cli_evidence/evidence_cases.ts
scripts/cloud_e2e_test.py, e2e_build_and_test.py, quick_build_test.py relocated python-sdk/scripts/e2e/
tests/test_cli/conftest.py relocated cli/tests/test_cli/conftest.ts
two .agents/notes/** ADRs about the single-distribution [cli] extra / PyPI packaging relocated cli/.agents/notes/superseded/, python-sdk/.agents/notes/superseded/ (marked superseded)

2. Per-area mapping (counts by top-level area of the original)

Original area Files Destination
src/agent_sandbox/{agent,api,compat,declarative,extensions,models,protocol,session,transport,utils} (non-CLI-only modules) see split-files.tsv python-sdk/client-sdk/src/agent_sandbox/**; the CLI-reachable ones are also ported 1:1 to cli/src/**
src/agent_sandbox/server/** 13 (2 SAME, 11 CHANGED) python-sdk/server-sdk/src/agent_sandbox/server/** (namespace package)
src/agent_sandbox/cli/** + 7 agent/* CLI-only modules (adopt, clarify, codegen, coding_agent, dockerfile_sources, qwen_code, template_guide) 25 cli/src/cli/**, cli/src/agent/** (PORTED)
src/agent_sandbox/py.typed 1 client-sdk, server-sdk (own py.typed)
tests/** 244 1647 collected test ids -> python-sdk/*/tests; 1333 -> cli/tests (see section 3)
docs/{en,zh}/** 77 17 SAME + 60 CHANGED, none missing (section 5)
examples/** 22 all 22 under python-sdk/examples/ (8 CHANGED: CLI->Node wording, repo URLs)
scripts/** 9 section 1 + build_binary.mjs, build_hermes.sh, deploy_all_templates.sh, deploy_remaining.sh in cli/scripts/
benchmarks/** 4 section 1
.github/** 15 section 6
.githooks/**, .pre-commit-config.yaml, .secrets.baseline, .env.example, .gitignore, LICENSE, NOTICE, Makefile, AGENTS.md, CHANGELOG.md, README{,.zh-CN}.md, llms.txt, SKILL.md, .python-version, pyproject.toml 20 copied/adapted into both subprojects (SKILL.md -> cli/ only; .python-version -> python-sdk/ only; pyproject.toml -> split)
.agents/** (128 notes/evidence) 128 python-sdk/.agents/** and cli/.agents/** (30 CHANGED, 96 SAME, 2 RELOCATED)

3. Tests: original vs new

4. Symbol-level split check (SDK side)

py_symbols_split.py compares every top-level symbol/signature of the original src/ with client-sdk/src + server-sdk/src: 79 modules compared; 25 absent (all CLI-owned: ported to Node); 6 removed, all private helpers of transport/config.py (_coerce_value, _load_dotenv_file, _read_env_vars, _env_dict_to_fields, _ENV_VAR_MAP, _NUMERIC_FIELDS) replaced by the layered resolver utils/config_keys.py; 21 signature changes, all additive keyword parameters (provider, provider_options, sandbox_* canonical names, scopes, ctx, policy, limit, route). No public symbol of the original SDK was removed.

5. pyproject / packaging

Item Original New Verdict
distributions agent-sandbox 0.2.0 agent-sandbox 0.3.0 (hard dependency agent-sandbox-server==0.3.0) + agent-sandbox-server by design
extras cli, mcp, fast, declarative, session, alicloud, binary, all fast, session, mcp, declarative, alicloud, server (empty alias), all cli, binary removed - user-approved (CLI moved to Node), documented in docs/en/guide/migrating-from-0.2.md; server is a new empty alias (agent-sandbox-server is now a hard dependency); all rewritten to fast,session,mcp,declarative,alicloud,server
entry points abx = agent_sandbox.cli.main:cli none in client; agent-sandbox-server = agent_sandbox.server.__main__:main in server; abx -> cli/package.json#bin by design
package data py.typed (wheel artifact) py.typed in client and server wheels present
sdist content src/, tests/, README, SKILL.md, LICENSE, NOTICE, CHANGELOG src/, tests/, README, LICENSE (+ per-dist) SKILL.md ships in the npm package; tests rewritten (test_packaging.py)
templates / schemas none shipped as package data (only py.typed) same n/a
llms.txt repo root, excluded from sdist by test cli/llms.txt, python-sdk/llms.txt, still excluded same
npm package - bin.abx, files dist, README.md, SKILL.md, LICENSE, NOTICE (342 files by npm pack --dry-run) complete

6. GitHub / CI / hygiene

Original New
.github/workflows/ci.yml (lint, test, build) python-sdk/.github/workflows/ci.yml (hygiene, client-sdk, server-sdk, build) and cli/.github/workflows/ci.yml (lint, test, build)
publish.yml (PyPI) python-sdk/.github/workflows/publish.yml (both dists) + cli/.github/workflows/release.yml (npm)
release-binary.yml cli/.github/workflows/release-binary.yml
(new) docs-links.yml in both
ISSUE_TEMPLATE/{bug_report,config,docs_improvement,feature_request,template_request}.yml, PULL_REQUEST_TEMPLATE.md, DISCUSSION_TEMPLATE/welcome.md, discussions/welcome-post.md, CODE_OF_CONDUCT.md, CONTRIBUTING.md, SECURITY.md, dependabot.yml all present in both cli/.github and python-sdk/.github (dependabot.yml adapted: npm + github-actions for cli, pip /client-sdk + /server-sdk + github-actions for python-sdk)
.githooks/{pre-commit,check-secrets.sh}, .pre-commit-config.yaml, .secrets.baseline present in both
(new) CODEOWNERS, .editorconfig, scripts/check-*.sh, check_dists.py, e2e-cleanup.py python-sdk only

7. Docs (en/zh), examples, scripts, awesome-templates

8. Non-source artefacts

.mypy_cache/, __pycache__/ appear in python-sdk but are git-ignored (python-sdk/.gitignore:30, :2); scripts/local-paths.private is git-ignored (.gitignore:74) and is a 33-byte local file. No tracked artefact leaked.

Verdict (split)

0 original files, symbols or tests are lost. Every deletion is a CLI-moved-to-Node deletion with a Node replacement. Remaining issues are documentation consistency, listed in completeness.md.