glm-5.3-flash
|
3a906cbd6a
|
feat(adapters): from_wss consumer adapter behind the wss feature (ADR-070)
- FromWss: dial wss:// -> split_tungstenite_to_bytes (client-side twin
of the axum WS byte-adapter; one seam, both directions, OQ-01) ->
Connection::from_bidi(b"alk/channels") -> alkcall ChannelClient
(channel 0 install + dispatch loop) -> alkcall from_call importer.
No protocol fork: specs mirror the remote, provenance FromCall.
- Drop semantics (OQ-03 v1): session drop -> monitor fails all
in-flight pendings retryable CONNECTION_CLOSED (WsPumps::read_eof
Notify); no 30s-deadline hang.
- Bearer token via constructor/assembly layer (ADR-014 no-env-vars).
Production fix in the WS server half (upgrade.rs): the upgrade
identity now propagates to channel 0's CallConnection (was
AuthContext::anonymous -> dispatcher saw no identity, ACL checks ran
unauthenticated; services/list filtered scoped ops for all callers).
9 in-module tests incl. full round-trip consumer<->server (both halves
of the adapter together), ACL end-to-end, drop-no-hang.
Verified: cargo test (227 lib default), --all-features (227 lib + 5
MCP + 10 WS integration), clippy -D warnings (both), fmt.
|
2026-08-28 14:54:09 +00:00 |
|
glm-5.3-flash
|
4ac337c3a5
|
feat(adapters): from_mcp + to_mcp behind the mcp feature (rmcp 1.8)
from_mcp (src/adapters/from_mcp/):
- tools/list discovery over streamable HTTP; per-tool
HandlerRegistration (Mutation, Once, FromMCP leaf, Internal;
ADR-015/022)
- structuredContent-preferred output, ContentBlock-union fallback,
isError -> MCP_TOOL_ERROR with content blocks as details (ADR-023)
- bearer token flows via capabilities key 'mcp' (ADR-014 no-env-vars)
- 19 unit tests + tests/from_mcp_integration.rs (5 tests vs a real
rmcp streamable-HTTP MCP server)
to_mcp (src/adapters/to_mcp.rs):
- 4 fixed gateway tools (search/schema/call/batch, ADR-041); Sub ops
excluded from search and uncallable (MCP is request/response)
- identity survives rmcp framing: bearer_auth_middleware stashes
Option<Identity> in http::request::Parts extensions, call_tool reads
it back from RequestContext extensions
- StreamableHttpService nested at /mcp in HttpAdapter's router,
bearer middleware around it (feature-gated)
Streamable HTTP only (ADR-037): rmcp default-features off, no stdio.
Default build compiles without rmcp (cargo tree: 0 hits).
Verified: cargo test (182 lib default / 218 all-features) + 5 MCP
integration + 10 WS, clippy -D warnings (both), fmt.
|
2026-08-28 14:14:09 +00:00 |
|
glm-5.3-flash
|
7be91987ca
|
feat(adapters): from_openapi adapter (parse + forwarding handlers)
Ported FromOpenAPI on the pre-staged foundations:
- openapi_spec.rs (from_json/from_yaml/from_str JSON-first per ADR-051,
$ref resolution) — already shared with to_openapi
- forward.rs shared forwarding core (build_request/forward/
forward_stream/parse_sse_frames) — already shared with from_jsonschema
New in this port:
- FromOpenAPI adapter: op-id normalization (declared or
{method}_{path}), op-type detection (GET->Query, else Mutation;
200/201 text/event-stream -> Sub), input schema from parameters +
requestBody 'body', error schemas as HTTP_<status> (ADR-023),
Internal visibility + FromOpenAPI provenance (ADR-015/022),
Query/Mutation -> Once, Sub -> Stream (Pub never produced, v1)
- 47 in-module tests: wire-level integration over real TCP
(echo + capturing servers), bearer/api-key/basic credential
injection from Capabilities (ADR-014 no-env-vars), SSE streaming,
YAML + from_str + ADR-051 yes-string guards
- removed dead_code allows from openapi_spec.rs (now consumed)
Verified: cargo test (182 lib), test --all-features (182+10 WS),
clippy -D warnings (both), fmt.
|
2026-08-28 14:04:48 +00:00 |
|
glm-5.3-flash
|
42239a0af5
|
feat(gateway,adapters): /publish endpoint (ADR-068) + to_openapi 6-endpoint projection
gateway-publish:
- GatewayDispatch::invoke_sink (internal:false, forwarded_for:None)
- POST /publish: NDJSON body, first line {operation, chunk} (OQ-02
resolved: first-line convention; terminal errors = plain HTTP status
+ JSON body, not NDJSON lines); 404 internal/unknown, 401/403 ACL,
400 INVALID_OPERATION_TYPE for non-Pub
- ADR-068 + open-questions.md updated with the OQ-02 resolution
adapter-to-openapi:
- src/adapters/openapi_spec.rs: OpenAPISpec model (JSON/YAML/from_str
JSON-first per ADR-051, $ref resolution) shared by from/to_openapi
- src/adapters/to_openapi.rs: 6-endpoint projection, info.version
1.0.0 -> 1.1.0 (minor: /publish addition per ADR-045), /publish
NDJSON doc with 400 oneOf (INVALID_INPUT + INVALID_OPERATION_TYPE),
ADR-023 error fidelity (protocol statuses, HTTP_<status> passthrough,
internal-op exclusion)
- GET /openapi.json wired into HttpAdapter's router (bearer-auth layer)
Verified: cargo test (136 lib), test --all-features (136+10 WS),
clippy -D warnings (both), fmt. Doc validates against openapiv3.
|
2026-08-28 13:54:49 +00:00 |
|
glm-5.3-flash
|
ad975408e7
|
feat(adapters): from_jsonschema single-endpoint adapter + shared forwarding core
- src/adapters/forward.rs: shared HTTP forwarding core (extracted from
old from_openapi) — HttpServiceConfig/HttpAuthScheme, build_request
with capabilities-based credential injection (no env vars), forward
+ forward_stream (SSE projection), parse_sse_frames
- src/adapters/from_jsonschema.rs: FromJsonSchema OperationAdapter
(ADR-066) — one registration per call, FromJsonSchema provenance
(leaf, Internal default), Sub -> HandlerKind::Stream (text/event-stream)
- adapted to alkcall 0.1.1: OperationType::Sub, alkcall::client
adapter traits
Verified: cargo test (106 lib tests), clippy -D warnings, fmt.
|
2026-08-28 13:43:35 +00:00 |
|
glm-5.3-flash
|
320ea87b08
|
docs: port architecture specs and ADRs from alknet-http; write new alkhttp ADRs 067-070
Phase 1 (SDD) — architecture documentation:
Ported specs (adapted for alkcall, producer/consumer terms, 6-endpoint
gateway, channels-over-WS, Sub/Pub operation types):
- overview.md, http-server.md, http-adapters.md, http-mcp.md
- README.md index (rewritten for alkhttp)
New ADRs:
- 067: WebSocket carries the channels protocol (8-byte chunk demux,
channel 0 = alk/call, upgrade path /alk/channels)
- 068: gateway /publish endpoint for Pub operations (NDJSON body)
- 069: WebTransport out of scope in alkhttp (alknet concern)
- 070: from_wss consumer adapter (wss feature, tokio-tungstenite)
Ported ADRs (25, same numbers, port notes + amendments where the
extraction changed facts): 001-004, 010, 014, 015, 017, 022, 023, 027,
034, 036, 037, 039, 041, 042, 044, 045, 046, 047, 048, 049, 051, 066.
websocket.md rewritten for the channels session; open-questions.md
seeded (OQ-01 WS byte-stream adapter, OQ-02 /publish framing,
OQ-03 from_wss reconnect, OQ-04 browser client ownership).
Verified: cargo test, clippy -D warnings, fmt, doc --no-deps.
|
2026-08-27 14:19:24 +00:00 |
|
glm-5.3-flash
|
28c521b2f3
|
feat: scaffold crate with alkcall 0.1.1 dependency
Empty module tree (adapters, client, gateway, server, websocket) matching
the AGENTS.md subsystem map. Features: h2/http1 (default), mcp (rmcp),
wss (tokio-tungstenite, for the from_wss consumer adapter).
Verified: cargo check (default), cargo check --all-features.
|
2026-08-27 12:50:43 +00:00 |
|