Baseline restart 2026-04-24: every workspace came up healthy (uvicorn listening, agent-card serving) but produced zero delegations for two maintenance cycles. Tracing revealed platform's ProxyA2A POSTs to `http://ws-<id>:8000/` (no path suffix, see workspace-server/internal/provisioner.InternalURL) while the runtime's JSON-RPC routes were mounted at `/api/v1/jsonrpc/` under the a2a-sdk 1.x API migration. Result was silent — every inbound A2A returned 404 Not Found, the platform logged "Not Found" at INFO level, but no error bubbled up because the SDK's jsonrpc route factory doesn't respond to root when mounted at a subpath. Agents stayed warm, crons fired, but no work flowed. Fix: `create_jsonrpc_routes(handler, "/")` — matches platform expectation and the agent-card self-advertisement (which also shows root as the JSON-RPC URL). Agent-card route keeps its hard-coded `/.well-known/agent-card.json` path so there's no collision. Bumped to 0.1.12. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
40 lines
1.1 KiB
TOML
40 lines
1.1 KiB
TOML
[build-system]
|
|
requires = ["setuptools>=68.0", "wheel"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "molecule-ai-workspace-runtime"
|
|
|
|
version = "0.1.12"
|
|
|
|
description = "Molecule AI workspace runtime — shared infrastructure for all agent adapters"
|
|
requires-python = ">=3.11"
|
|
license = {text = "BSL-1.1"}
|
|
readme = "README.md"
|
|
# Don't pin heavy deps — each adapter adds its own
|
|
dependencies = [
|
|
# Migrated to a2a-sdk 1.x (KI-009). A2AStarletteApplication replaced by
|
|
# Starlette route factory functions (create_agent_card_routes, create_jsonrpc_routes).
|
|
"a2a-sdk[http-server]>=0.3.25",
|
|
"httpx>=0.27.0",
|
|
"uvicorn>=0.30.0",
|
|
"starlette>=0.38.0",
|
|
"websockets>=12.0",
|
|
"pyyaml>=6.0",
|
|
"langchain-core>=0.3.0",
|
|
"opentelemetry-api>=1.24.0",
|
|
"opentelemetry-sdk>=1.24.0",
|
|
"opentelemetry-exporter-otlp-proto-http>=1.24.0",
|
|
"temporalio>=1.7.0",
|
|
]
|
|
|
|
[project.scripts]
|
|
molecule-runtime = "molecule_runtime.main:main_sync"
|
|
|
|
[tool.setuptools.packages.find]
|
|
where = ["."]
|
|
include = ["molecule_runtime*"]
|
|
|
|
[tool.setuptools.package-data]
|
|
"molecule_runtime" = ["py.typed", "scripts/*.sh"]
|