Skip to content

Commit 48371f1

Browse files
claudeZhiXiao-Lin
authored andcommitted
chore: bump all SDK versions to 2.6.0 + CHANGELOG
Aligns the release surface for v2.6.0: - core/Cargo.toml, sdk/node/Cargo.toml, sdk/python/Cargo.toml: package version + a3s-code-core dependency version. - sdk/python/pyproject.toml: project version. - sdk/node/package.json: root version + all 6 optionalDependencies (@a3s-lab/code-{darwin-arm64,linux-{x64,arm64}-{gnu,musl},win32-x64-msvc}). - sdk/node/package-lock.json and sdk/node/examples/package-lock.json. - Cargo.lock: a3s-code-core / a3s-code-node / a3s-code-py entries. - CHANGELOG.md: v2.6.0 entry covering the workspace abstraction refactor and the new S3WorkspaceBackend feature. scripts/check_release_versions.sh 2.6.0 → pass.
1 parent 0e8490f commit 48371f1

9 files changed

Lines changed: 102 additions & 29 deletions

File tree

CHANGELOG.md

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,79 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
### Added
11+
12+
- Added `S3WorkspaceBackend` — an S3-compatible workspace backend that lets
13+
built-in file tools (`read`, `write`, `edit`, `patch`, `ls`) operate
14+
directly against any S3-compatible endpoint (AWS S3, MinIO, RustFS, R2,
15+
Backblaze B2, ...). Gated behind the new `s3` Cargo feature.
16+
- Added `S3BackendConfig` builder for configuring endpoint, region, static
17+
or session-token credentials, force-path-style, request timeout, and
18+
bucket prefix.
19+
- Added `WorkspaceServices::s3()` factory and `WorkspaceServices::from_s3_backend()`
20+
helper. The factory installs a 60s default per-operation timeout and
21+
declines `bash`, `git`, `grep`, and `glob` capabilities — capability
22+
gating automatically hides those tools from the model so it cannot
23+
call operations the backend cannot service.
24+
- Exposed `S3WorkspaceBackend` in the Node and Python SDKs alongside
25+
`LocalWorkspaceBackend`. Configuration uses the same option surface
26+
(`workspaceBackend` / `workspace_backend`).
27+
28+
### Changed
29+
30+
- Restructured `core/src/workspace.rs` into a `workspace/` module with
31+
`workspace/mod.rs` (abstract traits + `WorkspaceServices`),
32+
`workspace/local.rs` (`LocalWorkspaceBackend`), and `workspace/s3.rs`
33+
(`S3WorkspaceBackend`). No behavioural change for existing callers.
34+
35+
## [2.6.0] - 2026-05-18
36+
37+
### Added
38+
39+
- Added `WorkspaceServices` capability abstraction (`core/src/workspace.rs`)
40+
that lets the host supply file system, command runner, search, and Git
41+
providers behind the stable built-in tool contract. The default
42+
`LocalWorkspaceBackend` preserves existing local-filesystem behavior, while
43+
DFS, browser, container, and remote backends can be assembled via
44+
`WorkspaceServicesBuilder`.
45+
- Added `SessionOptions::with_workspace_backend()` (alias
46+
`with_workspace_services`) so callers can opt-in to non-local workspaces
47+
without changing tool schemas.
48+
- Added capability-driven tool gating: `bash`, `grep`, `glob`, and `git` are
49+
only registered when the workspace backend declares the matching capability,
50+
preventing models from invoking tools the backend cannot service.
51+
- Added `Session::write_file`, `Session::ls`, `Session::edit_file`, and
52+
`Session::patch_file` direct-tool APIs in core, Node, and Python SDKs,
53+
alongside the existing `read_file` / `bash` / `glob` / `grep`.
54+
- Added `LocalWorkspaceBackend` class to the Node and Python SDKs as the
55+
explicit typed form of the default backend and the option surface for future
56+
remote/browser/DFS workspaces.
57+
- Added `workspace_services` to `ChildRunContext` so child runs inherit the
58+
parent's workspace backend.
59+
- Added 17 unit + integration tests covering virtual path resolution, capability
60+
downgrade, contract-level tool routing for files / search / bash / git
61+
through pluggable backends, and session-level direct-tool dispatch.
62+
63+
### Changed
64+
65+
- Refactored built-in tools `read`, `write`, `edit`, `patch`, `ls`, `bash`,
66+
`grep`, `glob`, and `git` to route operations through `WorkspaceServices`
67+
instead of hard-coded local filesystem calls. Local behavior is unchanged.
68+
- Centralized workspace-boundary path checks in
69+
`ToolContext::resolve_workspace_path`, removing duplicated canonicalization
70+
logic from `ToolExecutor::execute`.
71+
72+
### Fixed
73+
74+
- Removed two `clippy::useless_conversion` warnings in
75+
`core/tests/test_ahp_idle_with_llm.rs` so `cargo clippy --all-targets` is
76+
clean.
77+
78+
### Documentation
79+
80+
- Updated `README.md`, Node SDK README, and Python SDK README with workspace
81+
backend usage and the new direct-tool API surface.
82+
1083
## [2.5.0] - 2026-05-12
1184

1285
### Added

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

core/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "a3s-code-core"
3-
version = "2.5.0"
3+
version = "2.6.0"
44
edition = "2021"
55
authors = ["A3S Lab Team"]
66
license = "MIT"

sdk/node/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "a3s-code-node"
3-
version = "2.5.0"
3+
version = "2.6.0"
44
edition = "2021"
55
authors = ["A3S Lab Team"]
66
license = "MIT"
@@ -11,7 +11,7 @@ description = "A3S Code Node.js bindings - Native addon via napi-rs"
1111
crate-type = ["cdylib"]
1212

1313
[dependencies]
14-
a3s-code-core = { version = "2.5.0", path = "../../core", features = ["ahp", "s3"] }
14+
a3s-code-core = { version = "2.6.0", path = "../../core", features = ["ahp", "s3"] }
1515
napi = { version = "2", features = ["async", "napi6", "serde-json"] }
1616
napi-derive = "2"
1717
tokio = { version = "1.35", features = ["full"] }

sdk/node/examples/package-lock.json

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

sdk/node/package-lock.json

Lines changed: 8 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

sdk/node/package.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@a3s-lab/code",
3-
"version": "2.5.0",
3+
"version": "2.6.0",
44
"description": "A3S Code - Native Node.js bindings for the coding-agent runtime",
55
"main": "index.js",
66
"types": "index.d.ts",
@@ -40,11 +40,11 @@
4040
"test:helpers": "node test-helpers.mjs"
4141
},
4242
"optionalDependencies": {
43-
"@a3s-lab/code-darwin-arm64": "2.5.0",
44-
"@a3s-lab/code-linux-x64-gnu": "2.5.0",
45-
"@a3s-lab/code-linux-x64-musl": "2.5.0",
46-
"@a3s-lab/code-linux-arm64-gnu": "2.5.0",
47-
"@a3s-lab/code-linux-arm64-musl": "2.5.0",
48-
"@a3s-lab/code-win32-x64-msvc": "2.5.0"
43+
"@a3s-lab/code-darwin-arm64": "2.6.0",
44+
"@a3s-lab/code-linux-x64-gnu": "2.6.0",
45+
"@a3s-lab/code-linux-x64-musl": "2.6.0",
46+
"@a3s-lab/code-linux-arm64-gnu": "2.6.0",
47+
"@a3s-lab/code-linux-arm64-musl": "2.6.0",
48+
"@a3s-lab/code-win32-x64-msvc": "2.6.0"
4949
}
5050
}

sdk/python/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "a3s-code-py"
3-
version = "2.5.0"
3+
version = "2.6.0"
44
edition = "2021"
55
authors = ["A3S Lab Team"]
66
license = "MIT"
@@ -12,7 +12,7 @@ name = "a3s_code"
1212
crate-type = ["cdylib"]
1313

1414
[dependencies]
15-
a3s-code-core = { version = "2.5.0", path = "../../core", features = ["ahp", "s3"] }
15+
a3s-code-core = { version = "2.6.0", path = "../../core", features = ["ahp", "s3"] }
1616
pyo3 = "0.23"
1717
tokio = { version = "1.35", features = ["full"] }
1818
serde_json = "1.0"

sdk/python/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "maturin"
44

55
[project]
66
name = "a3s-code"
7-
version = "2.5.0"
7+
version = "2.6.0"
88
description = "A3S Code - Native Python bindings for the coding-agent runtime"
99
readme = "README.md"
1010
license = {text = "MIT"}

0 commit comments

Comments
 (0)