From dcb63328fadeee035588ffbc708b9a551fcf45ee Mon Sep 17 00:00:00 2001 From: Orca Date: Sun, 16 Aug 2026 14:52:42 +0800 Subject: [PATCH] feat(compose): template/skills library + compose (deploy slice 1) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Slice 1 of the accepted agent-deployment ADR (#63): the compose seam. Author a template/overlay/skills library and preview the composed {path -> bytes} agent bundle. Studio-local, zero AWS/upstream. - crates/studio-compose: pure compose core (template ⊕ overlay + skills by-reference -> deterministic Bundle + image tag), last-writer-wins (overlay > skills > template), sha256 bundle digest. 17 unit tests. - src-tauri: compose_library_get/set + compose_preview commands; library persisted as one JSON doc under app config dir (like config.rs). - console: Compose tab (JSON library editor + template/overlay picker + bundle preview). Pure render helpers unit-tested. Verified: cargo test -p studio-compose (17), console tsc + 65 vitest + vite build. src-tauri Rust compiles under bundle-macos CI (GTK dep). Co-Authored-By: Claude Opus 4.8 --- Cargo.toml | 2 +- console/index.html | 47 +++ console/src/compose.test.ts | 65 ++++ console/src/compose.ts | 211 ++++++++++ console/src/main.ts | 4 + console/src/styles.css | 133 +++++++ crates/studio-compose/Cargo.toml | 15 + crates/studio-compose/src/lib.rs | 638 +++++++++++++++++++++++++++++++ src-tauri/Cargo.toml | 6 + src-tauri/src/compose.rs | 60 +++ src-tauri/src/lib.rs | 37 ++ 11 files changed, 1217 insertions(+), 1 deletion(-) create mode 100644 console/src/compose.test.ts create mode 100644 console/src/compose.ts create mode 100644 crates/studio-compose/Cargo.toml create mode 100644 crates/studio-compose/src/lib.rs create mode 100644 src-tauri/src/compose.rs diff --git a/Cargo.toml b/Cargo.toml index 361b1a9..7f80650 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace] -members = ["crates/agent-lifecycle", "crates/oabctl", "crates/studio-cp", "crates/oab-mcp", "crates/acp-tunnel"] +members = ["crates/agent-lifecycle", "crates/oabctl", "crates/studio-cp", "crates/studio-compose", "crates/oab-mcp", "crates/acp-tunnel"] resolver = "2" # Fast profile for the CI-built `oab-mcp` sidecar (desktop.yml). The sidecar is an diff --git a/console/index.html b/console/index.html index 34eb947..8dccee8 100644 --- a/console/index.html +++ b/console/index.html @@ -50,10 +50,57 @@
+