a2a-rails 0.3.0.rc1 → 0.3.0
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +29 -3
- data/README.md +23 -6
- data/lib/a2a/rails/version.rb +1 -1
- metadata +7 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c92f9dcc050b23c2c9c94ac191bfc71826aa486140f348f19d878733f1c50e0d
|
|
4
|
+
data.tar.gz: 3d628d83f6a58c438702c6bb47fabf4c0f99d0f7feaf4c7188cdd286e522b9f5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2c7219a18e0488c9ba0bce72fc896c3d963ee76a58e4d1012c63e1f3fbd70b561c97cc479365ac448d570546f8aba6ebc04fd8eda17439c776081cd8085203a5
|
|
7
|
+
data.tar.gz: 3de85240921dd0d61b2236f782f814105b23e96e8c6892d69d050de4e562e0f7fa2068a9fd9c23d98450ad1013848569201817ccd16fd83d0897ec2fdd50cfa0
|
data/CHANGELOG.md
CHANGED
|
@@ -4,7 +4,32 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
-
## [0.3.0
|
|
7
|
+
## [0.3.0] — Rails Server compatibility and outbound Client
|
|
8
|
+
|
|
9
|
+
`0.3.0` advances the outbound A2A Client tested in `0.3.0.rc1` while retaining the existing Rails A2A Server default. [Release verification record](docs/release/v0.3.0-stable-candidate-record.md) and [Step 31 tracking issue](https://github.com/cuichangquan/a2a-rails/issues/120) contain the dated CI/provenance history. Consult [GitHub Releases](https://github.com/cuichangquan/a2a-rails/releases) or [RubyGems versions](https://rubygems.org/gems/a2a-rails/versions) for actual publication status; source versions and CI artifacts alone are not public releases.
|
|
10
|
+
|
|
11
|
+
### Added and retained behavior
|
|
12
|
+
|
|
13
|
+
- Outbound `A2A::Rails::Client` for secure HTTPS Agent Card discovery and A2A v1.0 JSON-RPC `SendMessage`, `GetTask`, `ListTasks`, and `CancelTask`; immutable Ruby DTOs preserve Task, direct Message, rich Parts, cursors and protocol errors.
|
|
14
|
+
- Client-only Rails hosts can set `config.server_enabled = false`. Existing Server applications keep `server_enabled = true` by default and retain the authenticated Task Store, ActiveRecord and ActiveJob behavior shipped in `0.2.0`.
|
|
15
|
+
- Public outbound Client has exact HTTPS-origin allowlisting, DNS and pinned public-IPv4 socket checks, peer/hostname/SNI certificate verification, Card/RPC credential separation, bounded HTTP and parsing, and no automatic side-effect retries.
|
|
16
|
+
|
|
17
|
+
### Dependency security and compatibility
|
|
18
|
+
|
|
19
|
+
- The direct `json` dependency now requires **`>= 2.19.9, < 3`** after an early `0.3.0` candidate audit caught vulnerable older resolved versions. Ruby 3.3/3.4/4.0 and Rails 8.0/8.1 host compatibility is exercised in CI.
|
|
20
|
+
- A full Rails host can independently resolve an affected `net-imap` release via its mail stack. The six-host candidate audit selects patched `net-imap ~> 0.5.15`; `net-imap` is **not** a direct dependency of this Gem. **Consumers must update/audit their own Gemfile.lock**.
|
|
21
|
+
- The final candidate's six audited host lockfiles had no matching advisories in RubySec at the time of the 2026-10-10 check; this is **not** a guarantee about future advisories, other lockfiles, host Ruby/OS or independently audited security.
|
|
22
|
+
- Existing local test-only TLS adapters are not supported production Client bypasses. No streaming/SSE, push, gRPC, IPv6-only outgoing hosts, generic retries/polling, OAuth issuer or universal production identity/tenant configuration is included.
|
|
23
|
+
|
|
24
|
+
### Documentation and evidence
|
|
25
|
+
|
|
26
|
+
- [Upgrade guide from v0.2.0](docs/release/upgrading-v0.2.0-to-v0.3.md), [RC1 feedback snapshot](docs/release/v0.3.0-rc1-feedback-and-upgrade-readiness.md), [candidate provenance](docs/release/v0.3.0-stable-candidate-record.md) and [confidential security reporting](SECURITY.md).
|
|
27
|
+
- Official pinned A2A TCK baseline remains **63 passed / 1 known upstream-fixture failure / 171 skipped / 30 deselected**; green informational workflow does not establish full A2A certification.
|
|
28
|
+
- Gem publication and exposing a public/no-auth A2A Server are **separate decisions**. Deployment requires host IdP, business authorization, rate limits, durable workers/storage and safe logging per [Issue #11](https://github.com/cuichangquan/a2a-rails/issues/11).
|
|
29
|
+
|
|
30
|
+
## [0.3.0.rc1] - 2026-10-10 (published pre-release)
|
|
31
|
+
|
|
32
|
+
> **Published after explicit owner GO:** [RubyGems RC1](https://rubygems.org/gems/a2a-rails/versions/0.3.0.rc1) and [GitHub Pre-release](https://github.com/cuichangquan/a2a-rails/releases/tag/v0.3.0-rc1), from source `664a201e6df9173e1656bb5f25b503821c0be2b5`, using the same build-once Gem. SHA256: `e5b184e615f9f59c3db770d150b96e847fa5df83ca152e274ae55c656b68feda`. See the [publication record](docs/release/v0.3.0-rc1-publication-record.md). At the time of the `0.3.0.rc1` pre-release announcement, stable `0.3.0` was not yet released.
|
|
8
33
|
|
|
9
34
|
> **Pre-release candidate, not a stable-production security certification.**
|
|
10
35
|
> This candidate contains the previously unreleased outbound Client changes
|
|
@@ -37,8 +62,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
|
37
62
|
SendMessage/CancelTask timeout and nested response validation.
|
|
38
63
|
- **Go SDK follow-up:** Step 29-5q verified authenticated Go ListTasks pagination with two scoped test users and isolated Task visibility; anonymous callers still receive `-31401`.
|
|
39
64
|
- **Release evidence and limitations:** Exact-version source and Gem are
|
|
40
|
-
|
|
41
|
-
native Python/Go interoperability and security regression checks
|
|
65
|
+
verified by build-once/SHA256, installed Ruby/Rails/PostgreSQL,
|
|
66
|
+
native Python/Go interoperability and security regression checks; the
|
|
67
|
+
public RubyGems download matches the verified Gem byte-for-byte.
|
|
42
68
|
[Step 29-5u risk-based release policy](docs/release/step-29-5u-risk-based-oss-release-policy.md)
|
|
43
69
|
makes third-party security audit **optional** and does not assert a
|
|
44
70
|
certification. No known unresolved Critical/High code defect is acceptable
|
data/README.md
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
# a2a-rails
|
|
2
|
+
|
|
3
|
+
> **Versions and release evidence:** This source contains the `0.3.0` code, including the outbound A2A Client. To check whether a specific version has been **published**, consult [RubyGems versions](https://rubygems.org/gems/a2a-rails/versions) and [GitHub Releases](https://github.com/cuichangquan/a2a-rails/releases). The [Step 31 candidate record](docs/release/v0.3.0-stable-candidate-record.md) tracks the prepublication build/hash; successful CI is not permission to expose a production Agent publicly.
|
|
2
4
|
<img src="docs/assets/a2a-rails-infographics.png">
|
|
3
5
|
<br/>
|
|
4
6
|
<br/>
|
|
@@ -6,17 +8,20 @@
|
|
|
6
8
|
|
|
7
9
|
Rails-native integration for exposing Rails applications as A2A v1.0 agents.
|
|
8
10
|
|
|
11
|
+
> **v0.3.0.rc1 prerelease history (2026-10-10):** `0.3.0.rc1` is published on [RubyGems](https://rubygems.org/gems/a2a-rails/versions/0.3.0.rc1) and as a [GitHub Pre-release](https://github.com/cuichangquan/a2a-rails/releases/tag/v0.3.0-rc1). It adds the outbound Rails Client and Client-only mode. Install with `gem install a2a-rails -v 0.3.0.rc1`, or pin `gem "a2a-rails", "0.3.0.rc1"` in your Gemfile. Stable `0.2.0` remains available. RC1 is not stable `0.3.0`, an independent audit, or public-production approval; see the [publication record](docs/release/v0.3.0-rc1-publication-record.md) and [Client guide](docs/guides/outbound-a2a-client.md).
|
|
12
|
+
|
|
9
13
|
> **Release status (2026-10-08):** **`0.2.0` is published as a stable release** on [RubyGems](https://rubygems.org/gems/a2a-rails/versions/0.2.0) and [GitHub](https://github.com/cuichangquan/a2a-rails/releases/tag/v0.2.0). It includes the Rails/Zeitwerk and migration-generator fixes after rc2. The public Gem matches the verified artifact byte-for-byte; see the [publication record](docs/release/v0.2.0-publication-record.md).
|
|
10
14
|
|
|
11
15
|
- RubyGems: https://rubygems.org/gems/a2a-rails
|
|
12
|
-
- Published
|
|
16
|
+
- Published version list: https://rubygems.org/gems/a2a-rails/versions
|
|
17
|
+
- Earlier stable release `0.2.0`: https://github.com/cuichangquan/a2a-rails/releases/tag/v0.2.0
|
|
13
18
|
- Previous stable release: https://github.com/cuichangquan/a2a-rails/releases/tag/v0.1.0
|
|
14
19
|
- Changelog: [CHANGELOG.md](CHANGELOG.md)
|
|
15
20
|
- Release record: [v0.2.0 publication record](docs/release/v0.2.0-publication-record.md)
|
|
16
21
|
- **Security policy / 脆弱性報告:** [SECURITY.md](SECURITY.md) — confidential vulnerability reporting, current assurance boundaries and production responsibilities.
|
|
17
|
-
- **v0.3.x prerelease policy:** [Risk-based release gates](docs/release/step-29-5u-risk-based-oss-release-policy.md) — independently commissioned external audit is **recommended but optional**, not a known vulnerability or RubyGems requirement. Technical security checks, no known unresolved Critical/High findings, exact Gem provenance and explicit maintainer release approval remain mandatory; [optional community review #113](https://github.com/cuichangquan/a2a-rails/issues/113). **
|
|
18
|
-
- **Release
|
|
19
|
-
- **Roadmap / 次にやること:** [ROADMAP.md](ROADMAP.md)
|
|
22
|
+
- **v0.3.x prerelease policy:** [Risk-based release gates](docs/release/step-29-5u-risk-based-oss-release-policy.md) — independently commissioned external audit is **recommended but optional**, not a known vulnerability or RubyGems requirement. Technical security checks, no known unresolved Critical/High findings, exact Gem provenance and explicit maintainer release approval remain mandatory; [optional community review #113](https://github.com/cuichangquan/a2a-rails/issues/113). **Check the published-version list for the current stable version; package publication and public-production deployment are separate decisions.**
|
|
23
|
+
- **Release evidence & upgrading:** [Step 31 release-readiness record](docs/release/v0.3.0-stable-readiness.md) · [RC1 feedback snapshot](docs/release/v0.3.0-rc1-feedback-and-upgrade-readiness.md) · [v0.2.0 → v0.3.0 upgrade guide](docs/release/upgrading-v0.2.0-to-v0.3.md) · [v0.1.0 → v0.2.0 guide](docs/release/upgrading-v0.1.0-to-v0.2.md). Check [RubyGems](https://rubygems.org/gems/a2a-rails/versions) for availability. Gem distribution does **not** authorize public Agent exposure.
|
|
24
|
+
- **Roadmap / 次にやること:** [ROADMAP.md](ROADMAP.md) · [Step 31 / Issue #120](https://github.com/cuichangquan/a2a-rails/issues/120) for the `0.3.0` release-evaluation and publication decisions. [Issue #11](https://github.com/cuichangquan/a2a-rails/issues/11) still governs public-production deployment; the [historical `0.2.0` release record](docs/release/v0.2.0-stable-readiness.md) is separate.
|
|
20
25
|
- **Official A2A TCK results:** [Pinned JSON-RPC MUST report and reproduction](docs/testing/official-a2a-tck.md) — after Step 17-4: **63 passed / 1 failed / 171 skipped / 30 deselected** (pytest). The remaining `CORE-SEND-003` mismatch is tracked [upstream in #202](https://github.com/a2aproject/a2a-tck/issues/202). The TCK workflow is informational, **not** an A2A conformance certificate.
|
|
21
26
|
|
|
22
27
|
- [A2Aの全体像(日本語・A4 1枚PDF)](docs/guides/a2a-protocol-overview-ja.pdf) — 登場人物・依頼の流れ・主要用語・MCPとの違いをまとめた学習資料。
|
|
@@ -32,6 +37,13 @@ Run a complete standalone Rails Agent using the **published RubyGems `a2a-rails
|
|
|
32
37
|
- [Demo GitHub Actions smoke](https://github.com/cuichangquan/a2a-rails-demo/actions/workflows/smoke.yml) — independent Rails 8.1.0 / Ruby 3.4.10 HTTP smoke **16/16 checks passed** against published Gem `0.2.0` ([Step 28 Demo PR #2, merged](https://github.com/cuichangquan/a2a-rails-demo/pull/2), [passing PR CI](https://github.com/cuichangquan/a2a-rails-demo/actions/runs/37736426834)). The CI also confirms `A2A::Rails::VERSION == "0.2.0"`, RubyGems as the dependency source, and the demo's production-startup refusal.
|
|
33
38
|
- **Local-only development/test** demo: no trusted verifier or durable Task store, **not** an internet-facing production template. See [production security](docs/guides/production-security.md).
|
|
34
39
|
|
|
40
|
+
### Outbound Client-only Rails Demo / 外部A2A Agentを呼び出すサンプル
|
|
41
|
+
|
|
42
|
+
**[a2a-rails-client-demo — standalone Rails 8 Client](https://github.com/cuichangquan/a2a-rails-client-demo)**
|
|
43
|
+
|
|
44
|
+
Independent Rails application using **published RubyGems `a2a-rails = 0.3.0.rc1`** with `server_enabled = false`. Demonstrates Agent Card discovery, SendMessage **Task or direct Message**, GetTask and ListTasks with exact HTTPS origin allowlisting. [Client-only CI PASS](https://github.com/cuichangquan/a2a-rails-client-demo/actions/runs/38048228531) and [independent Rails-to-Rails pinned-TLS CI PASS](https://github.com/cuichangquan/a2a-rails-client-demo/actions/runs/38048228488): the published RC1 Client calls an independently installed **published 0.2.0 Server** over real TLS using a **loopback-only test bridge and test-only pinned policy override**, including actual Echo business logic. This is **not** a public-DNS/public-CA, no-injection or production deployment test. The existing Server demo and shipped security policy remain unchanged; see [Step 30 #117](https://github.com/cuichangquan/a2a-rails/issues/117).
|
|
45
|
+
|
|
46
|
+
|
|
35
47
|
## What is a2a-rails?
|
|
36
48
|
|
|
37
49
|
`a2a-rails` lets a Rails application expose an A2A-compatible Agent without making application code depend directly on SDK-specific request and response objects.
|
|
@@ -57,12 +69,13 @@ The Gem provides:
|
|
|
57
69
|
- SDK-independent Handler inputs;
|
|
58
70
|
- a process-local MemoryStore by default, plus an optional durable ActiveRecordStore in `0.2.0`;
|
|
59
71
|
- Rails generators for initial setup;
|
|
60
|
-
- an internal Protocol Adapter boundary around the upstream SDK
|
|
72
|
+
- an internal Protocol Adapter boundary around the upstream SDK;
|
|
73
|
+
- **in 0.3.x**, a Rails outbound `A2A::Rails::Client` with strict HTTPS Agent Card discovery, A2A v1.0 JSON-RPC communication and optional Client-only mode.
|
|
61
74
|
|
|
62
75
|
v0.1 is intentionally **server-first** and **non-streaming**.
|
|
63
76
|
|
|
64
77
|
> [!WARNING]
|
|
65
|
-
> **
|
|
78
|
+
> **Versioned security note:** The original **v0.1.0** did not implement per-caller Task authorization. **0.2.0 and the subsequent 0.3.x line** include a host-owned authentication hook, principal-scoped Task operations and fail-closed non-development/test behavior. **Neither version supplies your identity provider or business authorization, and publication does not approve an anonymously exposed production endpoint.** See [SECURITY.md](SECURITY.md), [authentication guide](docs/guides/authentication.md) and [deployment #11](https://github.com/cuichangquan/a2a-rails/issues/11).
|
|
66
79
|
|
|
67
80
|
## Requirements
|
|
68
81
|
|
|
@@ -521,6 +534,10 @@ Known warning-enabled output from upstream `agent2agent 2.0.0` can include circu
|
|
|
521
534
|
## Release Documents
|
|
522
535
|
|
|
523
536
|
- [CHANGELOG](CHANGELOG.md)
|
|
537
|
+
- [Current 0.3.0 stable readiness (NOT released)](docs/release/v0.3.0-stable-readiness.md)
|
|
538
|
+
- [Step 31-4 RC1 feedback evidence and risks](docs/release/v0.3.0-rc1-feedback-and-upgrade-readiness.md)
|
|
539
|
+
- [Upgrading from v0.2.0 to planned v0.3.0](docs/release/upgrading-v0.2.0-to-v0.3.md)
|
|
540
|
+
- [RC1 feedback / bug report template](https://github.com/cuichangquan/a2a-rails/issues/new?template=rc1-feedback.md)
|
|
524
541
|
- [v0.1.0 Release Notes](docs/release/v0.1.0.md)
|
|
525
542
|
- [v0.1.0 Release Checklist](docs/release/v0.1.0-checklist.md)
|
|
526
543
|
- [v0.1.0 Release Record](docs/release/v0.1.0-record.md)
|
data/lib/a2a/rails/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: a2a-rails
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.3.0
|
|
4
|
+
version: 0.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- cuichangquan
|
|
@@ -67,6 +67,9 @@ dependencies:
|
|
|
67
67
|
name: json
|
|
68
68
|
requirement: !ruby/object:Gem::Requirement
|
|
69
69
|
requirements:
|
|
70
|
+
- - ">="
|
|
71
|
+
- !ruby/object:Gem::Version
|
|
72
|
+
version: 2.19.9
|
|
70
73
|
- - "<"
|
|
71
74
|
- !ruby/object:Gem::Version
|
|
72
75
|
version: '3'
|
|
@@ -74,6 +77,9 @@ dependencies:
|
|
|
74
77
|
prerelease: false
|
|
75
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
76
79
|
requirements:
|
|
80
|
+
- - ">="
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: 2.19.9
|
|
77
83
|
- - "<"
|
|
78
84
|
- !ruby/object:Gem::Version
|
|
79
85
|
version: '3'
|