|
|
@@ -0,0 +1,145 @@
|
|
|
+# Release Notes
|
|
|
+
|
|
|
+## v1.0.0-rc1 — 2026-06-06
|
|
|
+
|
|
|
+First public release candidate of **lambdagentpaas** — a full-stack platform
|
|
|
+for building, deploying, and serving AI agents defined in a Lambda-calculus
|
|
|
+DSL. The release follows a structured audit
|
|
|
+([`docs/AUDIT_2026-06-05.md`](docs/AUDIT_2026-06-05.md)) and 4 focused fix
|
|
|
+phases tagged in the git history.
|
|
|
+
|
|
|
+### Highlights
|
|
|
+
|
|
|
+- **lambdagent DSL kernel** — 152 exports, 11 Lambda-calculus constructs,
|
|
|
+ CEK machine, cost vectors, algebraic-law proofs (Paper II), instance
|
|
|
+ mechanism, run-workspace isolation. 175 kernel tests passing.
|
|
|
+- **agentpaas PaaS layer** — REST API for agent CRUD / run / streaming SSE /
|
|
|
+ cancellation / knowledge bases, with auth + multi-tenant data model.
|
|
|
+ 83 mounted routes. **+7 new HTTP-level integration tests** in this rc1
|
|
|
+ (auth dependency, cross-tenant isolation, loopback `/bootstrap` guard).
|
|
|
+- **webui** — React + Vite frontend covering chat, agent editor, run
|
|
|
+ inspector, knowledge-base UI, agent workspace browser. Builds clean
|
|
|
+ under `tsc --noEmit`.
|
|
|
+- **agentexample** — `agent67`, `physics67` (12-step research pipeline
|
|
|
+ with artifact gates), `qaagent67*` (RAG QA), `travelagent67`,
|
|
|
+ `pptagent67`, `research67`.
|
|
|
+- **CI** — `gitleaks` secret scan with 6 China-side provider rules + dev
|
|
|
+ doc placeholders allowlist; pytest matrix on Python 3.10/3.11/3.12;
|
|
|
+ Node 20 webui build; package-surface smoke import.
|
|
|
+
|
|
|
+### Audit-driven security & robustness improvements
|
|
|
+
|
|
|
+Of 84 audit findings (7 critical / 33 high / 29 medium / 15 low), this rc1
|
|
|
+closes **5 critical and 6 high** in 4 commits:
|
|
|
+
|
|
|
+- `9a3f22b` **Phase 0** — Delete unsafe surface, harden `/bootstrap`
|
|
|
+ - **Audit critical #2** — Removed unauthenticated Feishu bot integration
|
|
|
+ (`agentpaas/api/v1/feishu.py` + `agentpaas/services/feishu.py`); had no
|
|
|
+ signature verification and process-wide bot rebind.
|
|
|
+ - **Audit critical #3 + #7** — Removed `agentexample/agent67/tools/shell_executor.py`
|
|
|
+ (LLM-controlled `shell=True` with bypassable substring blocklist).
|
|
|
+ - **Audit critical #1** — `POST /api/v1/setup/bootstrap` now refuses
|
|
|
+ non-loopback callers (returns 404). For production deploys behind a
|
|
|
+ reverse proxy, use the `agentpaas` CLI to bootstrap the initial tenant.
|
|
|
+
|
|
|
+- `a942525` **Phase 1** — `agentpaas` src-layout + declare `lambdagent` dep
|
|
|
+ - **Audit critical #4 + high #18** — `agentpaas/pyproject.toml` previously
|
|
|
+ used `where = [".."]` which empirically shipped a 1.2 KB metadata-only
|
|
|
+ wheel. Migrated to src-layout (`agentpaas/src/agentpaas/`), declared
|
|
|
+ `lambdagent>=0.1.0` as a real dependency. `python -m build --wheel`
|
|
|
+ now produces a 144 KB wheel containing all source.
|
|
|
+
|
|
|
+- `63ea55b` **Phase 2** — Robustness fixes
|
|
|
+ - **Audit high #8** — `lambdagent.agentruntime.async_executor` now forks
|
|
|
+ Context per parallel branch (mirroring the sync `multiagent.py:681`
|
|
|
+ path). Restores Paper II Prop 30 confluence on the async path.
|
|
|
+ - **Audit high #9** — sub-agent caller in `lambdagent.fromconfig.compiler`
|
|
|
+ no longer swallows `CancelledRun`; the host's `/cancel` endpoint can
|
|
|
+ now actually stop a sub-agent.
|
|
|
+ - **Audit high #10** — both `/api/v1/agents/run` and the in-process
|
|
|
+ sandbox path offload sync `term.apply()` to `run_in_executor`,
|
|
|
+ unblocking the FastAPI event loop. Per-worker concurrency restored.
|
|
|
+ - **Audit high #15** — `Chat.tsx` adds an unmount-only `useEffect` that
|
|
|
+ POSTs `/cancel`, stopping backend claude subprocess money-burn when
|
|
|
+ a user navigates away mid-stream.
|
|
|
+ - Carry-over WIP folded in: `_FAILURE_KEYWORDS` substring fail markers
|
|
|
+ in agents.py; `_compile_react` capability gate; claude-code provider
|
|
|
+ `_StallError` + idle-timeout helper.
|
|
|
+
|
|
|
+- `7d629b1` **Phase 3** — HTTP integration test skeleton
|
|
|
+ - **Audit critical #6** — Added 7 integration tests using
|
|
|
+ `fastapi.testclient.TestClient` + isolated `sqlite:///:memory:` DB.
|
|
|
+ Covers auth dependency (401 paths + happy path), Phase 0 loopback
|
|
|
+ guard verification, cross-tenant isolation on GET-by-id and LIST.
|
|
|
+ - Side fix: `agentpaas/db/models.py` migration loop now skips
|
|
|
+ migrations whose target table doesn't yet exist (caught when running
|
|
|
+ against a fresh `:memory:` DB).
|
|
|
+
|
|
|
+### Documentation
|
|
|
+
|
|
|
+- `README.md` — new **v1.0 scope** section listing deliberate non-goals;
|
|
|
+ Quick Start examples fixed (Loop `max_steps` + `condition(result, step)`,
|
|
|
+ Memory `store=`, nl2agent at `experiments/`); repository layout table
|
|
|
+ corrected for `deploy/` (native scripts, not Docker Compose).
|
|
|
+- `CONTRIBUTING.md` — license corrected from MIT to BUSL-1.1.
|
|
|
+- `docs/AUDIT_2026-06-05.md` — 84-finding audit report (Chinese), kept
|
|
|
+ local-only; use as a roadmap for v1.1+ work.
|
|
|
+
|
|
|
+### Installation
|
|
|
+
|
|
|
+```bash
|
|
|
+git clone https://github.com/kenny67nju/lambdagentpaas
|
|
|
+cd lambdagentpaas
|
|
|
+
|
|
|
+# Editable installs against the local source
|
|
|
+pip install -e ./lambdagent/
|
|
|
+pip install -e ./agentpaas/[dev]
|
|
|
+
|
|
|
+# Run the API server
|
|
|
+python -m agentpaas serve
|
|
|
+
|
|
|
+# (Optional) build the web UI
|
|
|
+cd webui && npm install && npm run build
|
|
|
+```
|
|
|
+
|
|
|
+### Known limitations
|
|
|
+
|
|
|
+These remain on the **post-rc1 backlog** ([`docs/AUDIT_2026-06-05.md`](docs/AUDIT_2026-06-05.md)
|
|
|
+for the full list):
|
|
|
+
|
|
|
+- **Multi-tenancy** — data model and most queries scope by `tenant_id`,
|
|
|
+ but only GET-by-id and LIST endpoints are integration-tested for
|
|
|
+ isolation. v1.0 is **intended for single-tenant deployments**.
|
|
|
+- **Four parallel beta-reduction interpreters** (`Term.apply`,
|
|
|
+ `async_core` monkey-patch, `executor`, `cek_machine`) — audit #20.
|
|
|
+ Adding a new constructor requires touching 4 files. Refactor deferred
|
|
|
+ to v1.1.
|
|
|
+- **`compiler.py` is a 1654-LOC god module** (audit #21); the 474-line
|
|
|
+ `_compile_react` closure should split into `agentruntime/react_loop.py`.
|
|
|
+- **`secrets/vault.py`** uses unsalted SHA-256 as the KDF (audit #12);
|
|
|
+ works but should be PBKDF2/scrypt before any non-trivial production use.
|
|
|
+- **`POST /run` sync path is functional but capped at 1 concurrent run
|
|
|
+ per FastAPI worker** until the event-loop offload (Phase 2 fix #10)
|
|
|
+ is verified under load.
|
|
|
+- **Feishu integration removed**; will be re-added in v2 with proper
|
|
|
+ X-Lark-Signature verification.
|
|
|
+
|
|
|
+### Migration
|
|
|
+
|
|
|
+This is the first release — nothing to migrate from. Internal users on
|
|
|
+the `gogs.seec.seecoder.cn` mirror should switch to the GitHub remote;
|
|
|
+the git history was rewritten with `git filter-repo` to scrub two leaked
|
|
|
+API keys (`docs/AUDIT_2026-06-05.md` critical #5), so commit hashes
|
|
|
+differ from the gogs history.
|
|
|
+
|
|
|
+### License
|
|
|
+
|
|
|
+[Business Source License 1.1](LICENSE) — non-production use (development,
|
|
|
+testing, personal projects, academic research) is always permitted.
|
|
|
+Production use is free for organizations with ≤10 individual users or
|
|
|
+employees. On **2031-04-05** (the Change Date), the license automatically
|
|
|
+converts to Apache License 2.0.
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+🤖 This release was prepared with [Claude Code](https://claude.com/claude-code).
|