π¦ EPIC: Trinity Chrome Extension β Rust Sidebar + MCP Bridge
Π¦Π΅Π»Ρ: ΠΠΎΡΡΠΎΡΠ½Π½ΡΠΉ Chrome ΡΠ°ΠΉΠ΄Π±Π°Ρ (ΠΊΠ°ΠΊ Ρ Claude/Copilot) Π½Π° ΡΠΈΡΡΠΎΠΌ Rust β Dioxus + Wasm, Ρ MCP-ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ ΠΊΠΎ Π²ΡΠ΅ΠΌ crates/* ΡΠ΅ΡΠ΅Π· ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠΈΠ½Ρ trios-bus.
π Π‘ΡΠ°ΡΡΡ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΡ
Π·Π°Π΄Π°Ρ
| # |
ΠΠ°Π΄Π°ΡΠ° |
Π‘Π»ΠΎΠΉ |
ΠΠ°Π²ΠΈΡΠΈΡ ΠΎΡ |
Π‘ΡΠ°ΡΡΡ |
| #107 |
trios-proto + trios-bus + trios-orchestrator β One-Shot ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ |
L0βL2 |
β |
π΄ TODO |
| #108 |
crates/trios-ext β Dioxus/Wasm ΡΠ°ΠΉΠ΄Π±Π°Ρ + ΡΠ°Ρ + MCP ΠΏΠ°Π½Π΅Π»Ρ |
L5 |
#107 |
π΄ TODO (Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½) |
| #61 |
feat: integrate Chrome Extension (ΡΡΠ°ΡΡΠΉ issue) |
β |
β |
β οΈ ΠΡΠ±Π»ΠΈΡΡΠ΅Ρ #108, Π·Π°ΠΊΡΡΡΡ |
ΠΠΎΡΡΠ΄ΠΎΠΊ: ΡΠ½Π°ΡΠ°Π»Π° #107 (ΠΏΡΠΎΡΠΎΠΊΠΎΠ» + ΡΠΈΠ½Π°), ΠΏΠΎΡΠΎΠΌ #108 (UI ΠΏΠΎΠ²Π΅ΡΡ
ΡΠΈΠ½Ρ). #61 β Π΄ΡΠ±Π»Ρ, Π·Π°ΠΊΡΡΡΡ ΠΊΠ°ΠΊ duplicate of #108.
ποΈ ΠΠΎΠ»Π½Π°Ρ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ° ΡΠΈΡΡΠ΅ΠΌΡ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CHROME BROWSER β
β ββββββββββββββββββββββββββββββββββββββββββββββββ β
β β side_panel (MV3) β β
β β ββββββββββββββββββββββββββββββββββββββββββ β β
β β β trios-ext (Rust/Dioxus/Wasm) β β β
β β β ββββββββββββ¬βββββββββββ¬βββββββββββββ β β β
β β β β Chat β Agents β MCP Tools β β β β
β β β ββββββ¬ββββββ΄βββββ¬ββββββ΄ββββββ¬βββββββ β β β
β β β β β β β β β
β β β WebSocket ws://localhost/mcp β β β
β β βββββββββββββββββββββ¬βββββββββββββββββββββ β β
β βββββββββββββββββββββββ¬β β β
ββββββββββββββββββββββββββΌβββββββββββββββββββββββββ β
β (localhost WebSocket) β
ββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββ€
β TRIOS WORKSPACE β β
β βββββββββββββββββββββββΌβββββββββββββββββββββββββββ β
β β trios-server (L5) β β
β β MCP endpoint: /mcp β β
β ββββββββββββββββββββ¬ββββββββββββββββββββββββββββββ β
β β Envelope<T> (trios-proto) β
β ββββββββββββββββββββΌββββββββββββββββββββββββββββββ β
β β trios-bus (L1) β TriosAgent trait β β
β β Bus: DashMap + broadcast + phi-priority β β
β ββββββ¬ββββββββββ¬ββββββββββββ¬βββββββββββ¬βββββββββββ β
β β β β β β
β trios-llm trios-agents trios-kg trios-physics β
β trios-vsa trios-hdc trios-model ... (31 crates) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π Π€Π°Π·Π° 1: #107 β ΠΡΠΎΡΠΎΠΊΠΎΠ» + Π¨ΠΈΠ½Π° + ΠΡΠΊΠ΅ΡΡΡΠ°ΡΠΎΡ
ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ: AGENT (Π»ΡΠ±ΠΎΠΉ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠΉ)
ΠΠ΅ΡΠΊΠ°: feat/trios-bus
ΠΠ»ΠΎΠΊΠΈΡΡΠ΅Ρ: #108
Π‘ΠΎΠ·Π΄Π°ΡΡ 3 Π½ΠΎΠ²ΡΡ
crate:
crates/trios-proto/ β Envelope<T>, PhiPriority, Routing, AgentId
crates/trios-bus/ β trait TriosAgent + Bus (DashMap + broadcast)
crates/trios-orchestrator/ β Orchestrator::boot() + autodiscovery
ΠΠΈΠ³ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅:
trios-agents: AgentMessage β Envelope<AgentPayload>
trios-llm: Π΄ΠΎΠ±Π°Π²ΠΈΡΡ impl TriosAgent
trios-phi-schedule: ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΠΊ Bus
ΠΠ±Π½ΠΎΠ²ΠΈΡΡ workspace Cargo.toml:
[workspace.dependencies]
ulid = "1"
dashmap = "6"
members = [
"crates/trios-proto",
"crates/trios-bus",
"crates/trios-orchestrator",
# ...existing...
]
Acceptance Criteria #107:
π Π€Π°Π·Π° 2: #108 β Chrome Extension Sidebar
ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ: AGENT (ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ #107)
ΠΠ΅ΡΠΊΠ°: feat/trios-ext
ΠΠ°Π²ΠΈΡΠΈΡ ΠΎΡ: #107 (trios-proto, trios-bus)
Π‘ΠΎΠ·Π΄Π°ΡΡ:
crates/trios-ext/
βββ Cargo.toml # cdylib, wasm32-unknown-unknown
βββ src/
β βββ lib.rs # wasm_bindgen entry
β βββ app.rs # Dioxus root
β βββ components/
β β βββ sidebar.rs # 3 Π²ΠΊΠ»Π°Π΄ΠΊΠΈ: Chat | Agents | MCP Tools
β β βββ chat.rs # async ΡΠ°Ρ β Envelope<AgentPayload::Task>
β β βββ agent_list.rs # ΡΠΏΠΈΡΠΎΠΊ Π°Π³Π΅Π½ΡΠΎΠ² Ρ ΡΡΠ°ΡΡΡΠ°ΠΌΠΈ
β β βββ mcp_panel.rs # ΡΠΏΠΈΡΠΎΠΊ tools + ΡΠΎΡΠΌΠ° Π²ΡΠ·ΠΎΠ²Π°
β βββ mcp/
β βββ client.rs # WebSocket β trios-server /mcp
extension/
βββ manifest.json # MV3, side_panel permission
βββ sidepanel.html # <div id="main"> + init() Wasm
βββ background.js # minimal service worker
βββ icons/
ΠΠ»ΡΡΠ΅Π²ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ (Cargo.toml):
dioxus = { version = "0.6", features = ["web"] }
wasm-bindgen = "0.2"
gloo-net = "0.6" # async WebSocket Π² wasm
trios-proto = { path = "../trios-proto" }
manifest.json (MV3 + side_panel):
{
"manifest_version": 3,
"permissions": ["sidePanel", "storage", "activeTab"],
"side_panel": { "default_path": "sidepanel.html" },
"action": { "default_title": "Open Trinity Sidebar" }
}
Build (Π±Π΅Π· .sh):
cargo build -p trios-ext --target wasm32-unknown-unknown --release
wasm-bindgen ... --out-dir extension/pkg --target web
CI (Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² .github/workflows/ci.yml):
- name: Build trios-ext (wasm)
run: |
rustup target add wasm32-unknown-unknown
cargo build -p trios-ext --target wasm32-unknown-unknown --release
Acceptance Criteria #108:
ποΈ ΠΠ°ΠΊΡΡΡΡ ΠΊΠ°ΠΊ Π΄ΡΠ±Π»Ρ:
#61 β feat: integrate Chrome Extension (Dioxus/Wasm) into Cargo Workspace β ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½ΡΡ ΠΈ ΠΌΠ΅Π½Π΅Π΅ Π΄Π΅ΡΠ°Π»ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ #108. ΠΠ°ΠΊΡΡΡΡ Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΌ:
Duplicate of #108. More detailed spec moved there. Closes #61.
π Π‘Π²ΡΠ·ΠΈ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠΏΠΈΠΊΠ°ΠΌΠΈ
| ΠΠΏΠΈΠΊ/Issue |
Π‘Π²ΡΠ·Ρ |
| #109 β PhD Monograph |
trios-ext β UI Π΄Π»Ρ Scholar Cat (#63) |
| #110 β Parameter Golf |
trios-bus Π½ΡΠΆΠ΅Π½ Π΄Π»Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈΠΈ Π°Π³Π΅Π½ΡΠΎΠ² ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ |
| #63 β Golden Chain Orchestrator |
trios-bus = Π΅Π³ΠΎ ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ½ΡΠΉ ΡΠ»ΠΎΠΉ |
| #106 β Queen Trinity |
trios-bus = cross-repo experience bus |
π
Timeline
| ΠΠ°ΡΠ° |
Milestone |
| Apr 21β23 |
Π€Π°Π·Π° 1: trios-proto + trios-bus (AGENT) |
| Apr 24β25 |
Π€Π°Π·Π° 1: trios-orchestrator + ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ Π°Π³Π΅Π½ΡΠΎΠ² |
| Apr 26β28 |
Π€Π°Π·Π° 2: trios-ext scaffold + Dioxus ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ |
| Apr 29β30 |
Π€Π°Π·Π° 2: MCP client + WebSocket + Extension build |
| May 1 |
Acceptance test Π² Chrome, merge |
Laws
| Law |
Rule |
| L1 |
ΠΠ΅Ρ .sh ΡΠ°ΠΉΠ»ΠΎΠ² β ΡΠΎΠ»ΡΠΊΠΎ Rust + TypeScript |
| L2 |
ΠΠ°ΠΆΠ΄ΡΠΉ PR Π·Π°ΠΊΡΡΠ²Π°Π΅Ρ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΉ issue (Closes #107 / Closes #108) |
| L3 |
cargo clippy -- -D warnings = 0 |
| L4 |
cargo test ΠΏΡΠΎΡ
ΠΎΠ΄ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ merge |
| L7 |
Experience log β .trinity/experience/ |
Sync ΠΏΡΠΎΡΠΎΠΊΠΎΠ» Π΄Π»Ρ Π°Π³Π΅Π½ΡΠΎΠ²
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΊΠ°ΠΊ Π²Π·ΡΡΡ Π·Π°Π΄Π°ΡΡ β Π½Π°ΠΏΠΈΡΠ°ΡΡ Π² ΡΡΠΎΠΌ issue:
π AGENT [name] CLAIMING: [Π€Π°Π·Π° 1 / Π€Π°Π·Π° 2] | Branch: feat/trios-bus ΠΈΠ»ΠΈ feat/trios-ext | Status: IN PROGRESS
π¦ EPIC: Trinity Chrome Extension β Rust Sidebar + MCP Bridge
π Π‘ΡΠ°ΡΡΡ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΡ Π·Π°Π΄Π°Ρ
trios-proto+trios-bus+trios-orchestratorβ One-Shot ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡcrates/trios-extβ Dioxus/Wasm ΡΠ°ΠΉΠ΄Π±Π°Ρ + ΡΠ°Ρ + MCP ΠΏΠ°Π½Π΅Π»Ρfeat: integrate Chrome Extension (ΡΡΠ°ΡΡΠΉ issue)ποΈ ΠΠΎΠ»Π½Π°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΡΠΈΡΡΠ΅ΠΌΡ
π Π€Π°Π·Π° 1: #107 β ΠΡΠΎΡΠΎΠΊΠΎΠ» + Π¨ΠΈΠ½Π° + ΠΡΠΊΠ΅ΡΡΡΠ°ΡΠΎΡ
ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ: AGENT (Π»ΡΠ±ΠΎΠΉ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠΉ)
ΠΠ΅ΡΠΊΠ°:
feat/trios-busΠΠ»ΠΎΠΊΠΈΡΡΠ΅Ρ: #108
Π‘ΠΎΠ·Π΄Π°ΡΡ 3 Π½ΠΎΠ²ΡΡ crate:
ΠΠΈΠ³ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅:
ΠΠ±Π½ΠΎΠ²ΠΈΡΡ workspace Cargo.toml:
Acceptance Criteria #107:
cargo build -p trios-protoOKcargo build -p trios-busOKcargo build -p trios-orchestratorOKTrios::boot()ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅Ρ ΡΠΈΡΡΠ΅ΠΌΡ Π·Π° β€ 500msimpl TriosAgentΠ·Π° β€ 10 ΡΡΡΠΎΠΊunwrap()Π² bus/orchestratorcargo clippy -- -D warningsPASSπ Π€Π°Π·Π° 2: #108 β Chrome Extension Sidebar
ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ: AGENT (ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ #107)
ΠΠ΅ΡΠΊΠ°:
feat/trios-extΠΠ°Π²ΠΈΡΠΈΡ ΠΎΡ: #107 (trios-proto, trios-bus)
Π‘ΠΎΠ·Π΄Π°ΡΡ:
ΠΠ»ΡΡΠ΅Π²ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ (Cargo.toml):
manifest.json (MV3 + side_panel):
{ "manifest_version": 3, "permissions": ["sidePanel", "storage", "activeTab"], "side_panel": { "default_path": "sidepanel.html" }, "action": { "default_title": "Open Trinity Sidebar" } }Build (Π±Π΅Π· .sh):
CI (Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² .github/workflows/ci.yml):
Acceptance Criteria #108:
cargo build -p trios-ext --target wasm32-unknown-unknownOKchrome://extensionsβ Load unpackedtrios-serverΠ½Π° localhostEnvelope<AgentPayload::Task>β ΠΎΡΠ²Π΅Ρ.shΡΠ°ΠΉΠ»ΠΎΠ² (L1)unwrap()Π² ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ ΠΏΡΡΡΡcargo clippy -p trios-extPASS.trinity/experience/trios-ext-YYYY-MM-DD.md(L7)ποΈ ΠΠ°ΠΊΡΡΡΡ ΠΊΠ°ΠΊ Π΄ΡΠ±Π»Ρ:
#61 β
feat: integrate Chrome Extension (Dioxus/Wasm) into Cargo Workspaceβ ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½ΡΡ ΠΈ ΠΌΠ΅Π½Π΅Π΅ Π΄Π΅ΡΠ°Π»ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ #108. ΠΠ°ΠΊΡΡΡΡ Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΌ:π Π‘Π²ΡΠ·ΠΈ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠΏΠΈΠΊΠ°ΠΌΠΈ
π Timeline
Laws
.shΡΠ°ΠΉΠ»ΠΎΠ² β ΡΠΎΠ»ΡΠΊΠΎ Rust + TypeScriptCloses #107/Closes #108)cargo clippy -- -D warnings= 0cargo testΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ merge.trinity/experience/Sync ΠΏΡΠΎΡΠΎΠΊΠΎΠ» Π΄Π»Ρ Π°Π³Π΅Π½ΡΠΎΠ²
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΊΠ°ΠΊ Π²Π·ΡΡΡ Π·Π°Π΄Π°ΡΡ β Π½Π°ΠΏΠΈΡΠ°ΡΡ Π² ΡΡΠΎΠΌ issue: