Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
7a4a9b4
feat(transport): Phase 1+2 — AdcpHttpClient and error taxonomy
MichielBugherJelli May 18, 2026
bc969b6
feat(transport): Phase 3 — AgentConfig, auth types, and token resolver
MichielBugherJelli May 18, 2026
a6705a2
feat(transport): Phase 4 — MCP caller, connection manager, version en…
MichielBugherJelli May 18, 2026
b0e48fa
feat(transport): Phase 5 — AdcpClient with generic callTool dispatch
MichielBugherJelli May 18, 2026
efa517e
feat(server): add MCP server-side transport (AdcpPlatform SPI + builder)
MichielBugherJelli May 18, 2026
729e492
test(testing): add integration tests for server builder and client
MichielBugherJelli May 18, 2026
6d698cf
fix(transport): audit fixes for security, thread safety, and correctness
MichielBugherJelli May 19, 2026
8ee7af3
fix(security): comprehensive security hardening across transport layer
MichielBugherJelli May 19, 2026
20254da
fix(transport): comprehensive audit fixes for correctness and API design
MichielBugherJelli May 19, 2026
9fb9d9b
fix(transport): final audit fixes — locale, CRLF, resource leak, caus…
MichielBugherJelli May 19, 2026
f87be43
fix(security): second security audit — SSRF bypass, DoS cap, info leak
MichielBugherJelli May 19, 2026
450b68f
fix(transport): third code audit — MCP spec compliance, correctness, …
MichielBugherJelli May 19, 2026
6795d8e
fix(security): fourth adversarial audit — cache isolation, stream lea…
MichielBugherJelli May 19, 2026
8fe95ef
fix(transport): fifth adversarial audit — lock contention, OOM guard,…
MichielBugherJelli May 19, 2026
6f69c70
fix(transport): prevent unbounded keyLocks growth on token rotation
MichielBugherJelli May 19, 2026
57e9f35
fix(transport): sixth adversarial audit — lock race, close race, erro…
MichielBugherJelli May 19, 2026
e853918
fix(transport): seventh adversarial audit — striped semaphores, reque…
MichielBugherJelli May 19, 2026
88c8402
fix: address bokelley PR review findings and fix CI lockfiles
MichielBugherJelli May 19, 2026
ae90074
fix: guard MCP integration test behind ADCP_MCP_SERVER_URL
MichielBugherJelli May 19, 2026
445826f
docs: add cosign as a build prerequisite
MichielBugherJelli May 19, 2026
9115b75
fix: address remaining bokelley review findings (M4, N4, N5, N6)
MichielBugherJelli May 19, 2026
25b0a30
test(server): add handleToolCall unit tests for B6 completeness
MichielBugherJelli May 19, 2026
cb9894d
fix: add null guard on AdcpClient.callTool args parameter
MichielBugherJelli May 19, 2026
b80aab4
feat(adcp): add per-instance adcpVersion string API with cross-major …
MichielDean May 19, 2026
0716674
fix(transport): address B1 DNS pinning regression from bokelley review
MichielBugherJelli May 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ If a task contradicts a confirmed decision, **stop and ask** before coding aroun

## Build commands

JDK 21 required. The Gradle wrapper is committed.
JDK 21 and [cosign](https://docs.sigstore.dev/cosign/system_config/installation/) required. The Gradle wrapper is committed. Install cosign via `brew install cosign` (macOS) — the build uses it to verify schema bundle signatures.

```bash
./gradlew build # full build, all 8 modules
Expand Down
1 change: 1 addition & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ Before designing anything new, read the [21 confirmed post-RFC decisions](ROADMA

Requirements:
- JDK 21 (Temurin recommended)
- [cosign](https://docs.sigstore.dev/cosign/system_config/installation/) — the build shells out to `cosign verify-blob` to verify the schema bundle signature (per D4). Install via `brew install cosign` (macOS) or `go install github.com/sigstore/cosign/v2/cmd/cosign@latest`.
- The Gradle wrapper (committed) — don't install Gradle separately.

Local build:
Expand Down
4 changes: 2 additions & 2 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ The RFC's M+12 target is the realistic line. Pre-committing M+9 and slipping is

### Track 3 — L0 transport: MCP + A2A

**ID:** `transport` | **Owner:** TBD | **Size:** 1.5 person-months
**ID:** `transport` | **Owner:** @MichielDean (#17) | **Size:** 1.5 person-months

**Scope:**

Expand Down Expand Up @@ -528,6 +528,6 @@ Additional decisions added post-RFC that remain open:
| Implementation plan drafted | ✅ (this doc) |
| Confirmed decisions D1–D21 locked | ✅ |
| Funding / staffing confirmed | ⏳ Decision pending |
| Tracks claimed | 0 / 14 |
| Tracks claimed | 3 / 14 — `infra` (Track 1, #2), `codegen` (Track 2, #11), `transport` (Track 3, #17) |
| Pre-contributor harness | 🟡 In progress — Gradle skeleton, codegen MVP, SSRF skeleton, schema fetcher, mock-server CI gate, IPR workflow, commitlint, changesets, MCP prototype findings all landed. Foundation admin actions outstanding: IPR Bot install, DNS TXT for Sonatype, @MichielDean collaborator. |
| v0.1 alpha | Not Started |
23 changes: 16 additions & 7 deletions adcp-cli/gradle.lockfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,21 @@
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
com.ethlo.time:itu:1.10.3=runtimeClasspath,testRuntimeClasspath
com.fasterxml.jackson.core:jackson-annotations:2.18.2=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.fasterxml.jackson.core:jackson-core:2.18.2=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.fasterxml.jackson.core:jackson-databind:2.18.2=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.18.2=runtimeClasspath,testRuntimeClasspath
com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.18.2=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.fasterxml.jackson:jackson-bom:2.18.2=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.fasterxml.jackson.core:jackson-annotations:2.18.2=compileClasspath,testCompileClasspath
com.fasterxml.jackson.core:jackson-annotations:2.20=runtimeClasspath,testRuntimeClasspath
com.fasterxml.jackson.core:jackson-core:2.18.2=compileClasspath,testCompileClasspath
com.fasterxml.jackson.core:jackson-core:2.20.1=runtimeClasspath,testRuntimeClasspath
com.fasterxml.jackson.core:jackson-databind:2.18.2=compileClasspath,testCompileClasspath
com.fasterxml.jackson.core:jackson-databind:2.20.1=runtimeClasspath,testRuntimeClasspath
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.20.1=runtimeClasspath,testRuntimeClasspath
com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.18.2=compileClasspath,testCompileClasspath
com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.20.1=runtimeClasspath,testRuntimeClasspath
com.fasterxml.jackson:jackson-bom:2.18.2=compileClasspath,testCompileClasspath
com.fasterxml.jackson:jackson-bom:2.20.1=runtimeClasspath,testRuntimeClasspath
com.networknt:json-schema-validator:1.5.6=runtimeClasspath,testRuntimeClasspath
io.modelcontextprotocol.sdk:mcp-core:1.1.2=runtimeClasspath,testRuntimeClasspath
io.modelcontextprotocol.sdk:mcp-json-jackson2:1.1.2=runtimeClasspath,testRuntimeClasspath
io.projectreactor:reactor-core:3.7.0=runtimeClasspath,testRuntimeClasspath
org.apiguardian:apiguardian-api:1.1.2=compileClasspath,testCompileClasspath
org.jspecify:jspecify:1.0.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.junit.jupiter:junit-jupiter-api:5.11.4=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
Expand All @@ -19,7 +27,8 @@ org.junit.platform:junit-platform-engine:1.11.4=testRuntimeClasspath
org.junit.platform:junit-platform-launcher:1.11.4=testRuntimeClasspath
org.junit:junit-bom:5.11.4=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.opentest4j:opentest4j:1.3.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.reactivestreams:reactive-streams:1.0.4=runtimeClasspath,testRuntimeClasspath
org.slf4j:slf4j-api:2.0.16=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.slf4j:slf4j-simple:2.0.16=runtimeClasspath,testRuntimeClasspath
org.yaml:snakeyaml:2.3=runtimeClasspath,testRuntimeClasspath
org.yaml:snakeyaml:2.4=runtimeClasspath,testRuntimeClasspath
empty=annotationProcessor,testAnnotationProcessor
23 changes: 16 additions & 7 deletions adcp-kotlin/gradle.lockfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,21 @@
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
com.ethlo.time:itu:1.10.3=runtimeClasspath,testRuntimeClasspath
com.fasterxml.jackson.core:jackson-annotations:2.18.2=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
com.fasterxml.jackson.core:jackson-core:2.18.2=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
com.fasterxml.jackson.core:jackson-databind:2.18.2=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.18.2=runtimeClasspath,testRuntimeClasspath
com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.18.2=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
com.fasterxml.jackson:jackson-bom:2.18.2=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
com.fasterxml.jackson.core:jackson-annotations:2.18.2=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata
com.fasterxml.jackson.core:jackson-annotations:2.20=runtimeClasspath,testRuntimeClasspath
com.fasterxml.jackson.core:jackson-core:2.18.2=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata
com.fasterxml.jackson.core:jackson-core:2.20.1=runtimeClasspath,testRuntimeClasspath
com.fasterxml.jackson.core:jackson-databind:2.18.2=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata
com.fasterxml.jackson.core:jackson-databind:2.20.1=runtimeClasspath,testRuntimeClasspath
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.20.1=runtimeClasspath,testRuntimeClasspath
com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.18.2=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata
com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.20.1=runtimeClasspath,testRuntimeClasspath
com.fasterxml.jackson:jackson-bom:2.18.2=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,testCompileClasspath,testImplementationDependenciesMetadata
com.fasterxml.jackson:jackson-bom:2.20.1=runtimeClasspath,testRuntimeClasspath
com.networknt:json-schema-validator:1.5.6=runtimeClasspath,testRuntimeClasspath
io.modelcontextprotocol.sdk:mcp-core:1.1.2=runtimeClasspath,testRuntimeClasspath
io.modelcontextprotocol.sdk:mcp-json-jackson2:1.1.2=runtimeClasspath,testRuntimeClasspath
io.projectreactor:reactor-core:3.7.0=runtimeClasspath,testRuntimeClasspath
org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath,testImplementationDependenciesMetadata
org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
org.jetbrains.kotlin:kotlin-build-common:2.1.10=kotlinBuildToolsApiClasspath
Expand Down Expand Up @@ -43,6 +51,7 @@ org.junit.platform:junit-platform-engine:1.11.4=testRuntimeClasspath
org.junit.platform:junit-platform-launcher:1.11.4=testRuntimeClasspath
org.junit:junit-bom:5.11.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
org.opentest4j:opentest4j:1.3.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
org.reactivestreams:reactive-streams:1.0.4=runtimeClasspath,testRuntimeClasspath
org.slf4j:slf4j-api:2.0.16=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath
org.yaml:snakeyaml:2.3=runtimeClasspath,testRuntimeClasspath
org.yaml:snakeyaml:2.4=runtimeClasspath,testRuntimeClasspath
empty=annotationProcessor,intransitiveDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinNativeCompilerPluginClasspath,kotlinScriptDefExtensions,testAnnotationProcessor,testApiDependenciesMetadata,testCompileOnlyDependenciesMetadata,testIntransitiveDependenciesMetadata,testKotlinScriptDefExtensions
23 changes: 16 additions & 7 deletions adcp-mutiny/gradle.lockfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,21 @@
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
com.ethlo.time:itu:1.10.3=runtimeClasspath,testRuntimeClasspath
com.fasterxml.jackson.core:jackson-annotations:2.18.2=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.fasterxml.jackson.core:jackson-core:2.18.2=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.fasterxml.jackson.core:jackson-databind:2.18.2=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.18.2=runtimeClasspath,testRuntimeClasspath
com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.18.2=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.fasterxml.jackson:jackson-bom:2.18.2=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.fasterxml.jackson.core:jackson-annotations:2.18.2=compileClasspath,testCompileClasspath
com.fasterxml.jackson.core:jackson-annotations:2.20=runtimeClasspath,testRuntimeClasspath
com.fasterxml.jackson.core:jackson-core:2.18.2=compileClasspath,testCompileClasspath
com.fasterxml.jackson.core:jackson-core:2.20.1=runtimeClasspath,testRuntimeClasspath
com.fasterxml.jackson.core:jackson-databind:2.18.2=compileClasspath,testCompileClasspath
com.fasterxml.jackson.core:jackson-databind:2.20.1=runtimeClasspath,testRuntimeClasspath
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.20.1=runtimeClasspath,testRuntimeClasspath
com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.18.2=compileClasspath,testCompileClasspath
com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.20.1=runtimeClasspath,testRuntimeClasspath
com.fasterxml.jackson:jackson-bom:2.18.2=compileClasspath,testCompileClasspath
com.fasterxml.jackson:jackson-bom:2.20.1=runtimeClasspath,testRuntimeClasspath
com.networknt:json-schema-validator:1.5.6=runtimeClasspath,testRuntimeClasspath
io.modelcontextprotocol.sdk:mcp-core:1.1.2=runtimeClasspath,testRuntimeClasspath
io.modelcontextprotocol.sdk:mcp-json-jackson2:1.1.2=runtimeClasspath,testRuntimeClasspath
io.projectreactor:reactor-core:3.7.0=runtimeClasspath,testRuntimeClasspath
io.smallrye.common:smallrye-common-annotation:2.8.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.smallrye.reactive:mutiny:2.7.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath
Expand All @@ -22,6 +30,7 @@ org.junit.platform:junit-platform-engine:1.11.4=testRuntimeClasspath
org.junit.platform:junit-platform-launcher:1.11.4=testRuntimeClasspath
org.junit:junit-bom:5.11.4=testCompileClasspath,testRuntimeClasspath
org.opentest4j:opentest4j:1.3.0=testCompileClasspath,testRuntimeClasspath
org.reactivestreams:reactive-streams:1.0.4=runtimeClasspath,testRuntimeClasspath
org.slf4j:slf4j-api:2.0.16=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.yaml:snakeyaml:2.3=runtimeClasspath,testRuntimeClasspath
org.yaml:snakeyaml:2.4=runtimeClasspath,testRuntimeClasspath
empty=annotationProcessor,testAnnotationProcessor
21 changes: 14 additions & 7 deletions adcp-reactor/gradle.lockfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,20 @@
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
com.ethlo.time:itu:1.10.3=runtimeClasspath,testRuntimeClasspath
com.fasterxml.jackson.core:jackson-annotations:2.18.2=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.fasterxml.jackson.core:jackson-core:2.18.2=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.fasterxml.jackson.core:jackson-databind:2.18.2=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.18.2=runtimeClasspath,testRuntimeClasspath
com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.18.2=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.fasterxml.jackson:jackson-bom:2.18.2=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.fasterxml.jackson.core:jackson-annotations:2.18.2=compileClasspath,testCompileClasspath
com.fasterxml.jackson.core:jackson-annotations:2.20=runtimeClasspath,testRuntimeClasspath
com.fasterxml.jackson.core:jackson-core:2.18.2=compileClasspath,testCompileClasspath
com.fasterxml.jackson.core:jackson-core:2.20.1=runtimeClasspath,testRuntimeClasspath
com.fasterxml.jackson.core:jackson-databind:2.18.2=compileClasspath,testCompileClasspath
com.fasterxml.jackson.core:jackson-databind:2.20.1=runtimeClasspath,testRuntimeClasspath
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.20.1=runtimeClasspath,testRuntimeClasspath
com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.18.2=compileClasspath,testCompileClasspath
com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.20.1=runtimeClasspath,testRuntimeClasspath
com.fasterxml.jackson:jackson-bom:2.18.2=compileClasspath,testCompileClasspath
com.fasterxml.jackson:jackson-bom:2.20.1=runtimeClasspath,testRuntimeClasspath
com.networknt:json-schema-validator:1.5.6=runtimeClasspath,testRuntimeClasspath
io.modelcontextprotocol.sdk:mcp-core:1.1.2=runtimeClasspath,testRuntimeClasspath
io.modelcontextprotocol.sdk:mcp-json-jackson2:1.1.2=runtimeClasspath,testRuntimeClasspath
io.projectreactor:reactor-core:3.7.2=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath
org.jspecify:jspecify:1.0.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
Expand All @@ -22,5 +29,5 @@ org.junit:junit-bom:5.11.4=testCompileClasspath,testRuntimeClasspath
org.opentest4j:opentest4j:1.3.0=testCompileClasspath,testRuntimeClasspath
org.reactivestreams:reactive-streams:1.0.4=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.slf4j:slf4j-api:2.0.16=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.yaml:snakeyaml:2.3=runtimeClasspath,testRuntimeClasspath
org.yaml:snakeyaml:2.4=runtimeClasspath,testRuntimeClasspath
empty=annotationProcessor,testAnnotationProcessor
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package org.adcontextprotocol.adcp.server;

import org.adcontextprotocol.adcp.AdcpVersion;
import org.jspecify.annotations.Nullable;

import java.util.Map;

/**
* Context passed to {@link AdcpPlatform} tool handlers.
*
* <p>Carries per-request metadata: the caller's identity, the negotiated
* protocol version, and any headers the handler might need.
*
* @param adcpVersion the protocol version from the request envelope
* @param headers all inbound request headers
* @param requestId the MCP request ID (for correlation)
*/
public record AdcpContext(
@Nullable AdcpVersion adcpVersion,
Map<String, String> headers,
@Nullable String requestId
) {

public AdcpContext {
headers = Map.copyOf(headers);
}
}
Loading
Loading