diff --git a/docs/architecture/task-agent-doc-manager.html b/docs/architecture/task-agent-doc-manager.html
index e717f17..593ec01 100644
--- a/docs/architecture/task-agent-doc-manager.html
+++ b/docs/architecture/task-agent-doc-manager.html
@@ -345,7 +345,7 @@ Option A: Learning profiles with recency bias
Automatic: Each task completion generates execution record
Learning: If decision had trade-offs, extract as ADR candidate
Curation: ProjectManager/Architect reviews and approves
-Archival: Stored in docs/architecture/adr/ (numbered, immutable)
+Archival: Stored in docs/adrs/ (numbered, immutable)
diff --git a/docs/architecture/task-agent-doc-manager.md b/docs/architecture/task-agent-doc-manager.md
index 0824313..4fcd317 100644
--- a/docs/architecture/task-agent-doc-manager.md
+++ b/docs/architecture/task-agent-doc-manager.md
@@ -203,7 +203,7 @@ Option A: Learning profiles with recency bias
1. **Automatic**: Each task completion generates execution record
2. **Learning**: If decision had trade-offs, extract as ADR candidate
3. **Curation**: ProjectManager/Architect reviews and approves
-4. **Archival**: Stored in docs/architecture/adr/ (numbered, immutable)
+4. **Archival**: Stored in docs/adrs/ (numbered, immutable)
---
diff --git a/docs/guides/rlm-usage-guide.md b/docs/guides/rlm-usage-guide.md
index e48efd8..ad99fd1 100644
--- a/docs/guides/rlm-usage-guide.md
+++ b/docs/guides/rlm-usage-guide.md
@@ -527,7 +527,7 @@ cargo run --example production_setup
## Referencias
-- **ADR**: `docs/architecture/decisions/008-recursive-language-models-integration.md`
+- **ADR**: `docs/adrs/0029-rlm-recursive-language-models.md`
- **Production Guide**: `crates/vapora-rlm/PRODUCTION.md`
- **API Docs**: `cargo doc --open -p vapora-rlm`
- **Tests**: `crates/vapora-rlm/tests/`
diff --git a/justfiles/distro.just b/justfiles/distro.just
index f8a13df..e69590a 100644
--- a/justfiles/distro.just
+++ b/justfiles/distro.just
@@ -3,7 +3,6 @@
# โ Targets, cross-compilation, and distribution โ
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
-# Help for distro module
distro-help:
@echo "DISTRIBUTION & TARGET MODULE"
@echo ""
@@ -17,18 +16,20 @@ distro-help:
@echo " just distro::build-all-targets Build for all installed targets"
@echo ""
@echo "Installation:"
- @echo " just distro::install Install binaries to ~/.local/bin"
+ @echo " just distro::install Install server binaries to ~/.local/bin"
@echo " just distro::install DIR=/path Install to custom directory"
+ @echo " just distro::install UI=true Also build frontend (trunk --release)"
+ @echo ""
+ @echo " Binaries installed: vapora-backend, vapora-agents, vapora-mcp-server,"
+ @echo " vapora-a2a, vapora (CLI)"
@echo ""
@echo "Utilities:"
@echo " just distro::clean-targets Clean target build artifacts"
-# Workspace root directory - justfile_directory() returns vapora directory when called from module
WORKSPACE_ROOT := justfile_directory()
# === TARGETS ===
-# List all installed Rust targets
[doc("List installed Rust targets")]
list-targets:
@echo "=== Installed Rust Targets ==="
@@ -40,9 +41,9 @@ list-targets:
@echo " aarch64-apple-darwin macOS ARM64 (Apple Silicon)"
@echo " aarch64-unknown-linux-gnu Linux ARM64"
@echo " x86_64-pc-windows-gnu Windows x86_64"
+ @echo " wasm32-unknown-unknown WebAssembly (frontend)"
-# Install common cross-compilation targets
-[doc("Install common cross-compile targets")]
+[doc("Install common cross-compile targets including wasm32")]
install-targets:
#!/usr/bin/env bash
set -e
@@ -53,14 +54,18 @@ install-targets:
"aarch64-apple-darwin"
"aarch64-unknown-linux-gnu"
"x86_64-pc-windows-gnu"
+ "wasm32-unknown-unknown"
)
for target in "${TARGETS[@]}"; do
- echo "Installing $target..."
- rustup target add "$target" || echo " โ $target (already installed)"
+ if rustup target list --installed | grep -q "$target"; then
+ echo " โ $target (already installed)"
+ else
+ echo " Installing $target..."
+ rustup target add "$target"
+ fi
done
echo "โ Targets installed"
-# Install specific Rust target
[doc("Install specific Rust target")]
install-target TARGET:
#!/usr/bin/env bash
@@ -71,7 +76,6 @@ install-target TARGET:
# === BUILD ===
-# Build for specific target
[doc("Build for specific target")]
build-target TARGET:
#!/usr/bin/env bash
@@ -81,14 +85,13 @@ build-target TARGET:
cargo build --release --target "{{TARGET}}" --workspace
echo "โ Build complete for {{TARGET}}"
-# Build for all installed targets
-[doc("Build for all installed targets")]
+[doc("Build for all installed targets (excludes wasm32 โ use frontend-build-release for that)")]
build-all-targets:
#!/usr/bin/env bash
set -e
- echo "=== Building for all targets ==="
+ echo "=== Building for all native targets ==="
cd "{{ WORKSPACE_ROOT }}"
- TARGETS=$(rustup target list | grep installed | awk '{print $1}')
+ TARGETS=$(rustup target list --installed | grep -v wasm32)
for target in $TARGETS; do
echo ""
echo "Building for $target..."
@@ -99,21 +102,27 @@ build-all-targets:
echo "โ $target complete"
done
echo ""
- echo "โ All target builds complete"
+ echo "โ All native target builds complete"
# === INSTALLATION ===
-# Build and install release binaries (default: ~/.local/bin)
-[doc("Build and install binaries (default: ~/.local/bin or DIR=)")]
-install DIR="":
+# Build and install all release binaries.
+#
+# Usage:
+# just distro::install โ ~/.local/bin, native only
+# just distro::install DIR=/usr/local/bin โ custom dir, native only
+# just distro::install UI=true โ ~/.local/bin + trunk --release
+# just distro::install DIR=/opt UI=true โ custom dir + trunk --release
+#
+# Binaries: vapora-backend, vapora-agents, vapora-mcp-server, vapora-a2a, vapora (CLI)
+[doc("Build and install server binaries (DIR=path, UI=true for frontend)")]
+install DIR="" UI="false":
#!/bin/bash
set -e
- # Normalize workspace path using shell
WORKSPACE="{{ WORKSPACE_ROOT }}"
WORKSPACE="$(cd "$WORKSPACE" && pwd)" || { echo "โ Failed to access workspace"; exit 1; }
- # Resolve install directory
if [ -z "{{ DIR }}" ]; then
INSTALL_DIR="$HOME/.local/bin"
else
@@ -121,77 +130,99 @@ install DIR="":
fi
echo "=== Building and Installing VAPORA binaries ==="
- echo "Build workspace: $WORKSPACE"
+ echo "Workspace: $WORKSPACE"
echo "Install directory: $INSTALL_DIR"
+ echo "Frontend (UI): {{ UI }}"
echo ""
- # First, build release binaries
- echo "๐ฆ Building release binaries..."
- cd "$WORKSPACE" || exit 1
- cargo build --release -p vapora-backend -p vapora-agents --quiet
- echo "โ Build complete"
+ # Build all server binaries in one pass (Cargo deduplicates shared deps)
+ echo "Building release binaries..."
+ cd "$WORKSPACE"
+ cargo build --release \
+ -p vapora-backend \
+ -p vapora-agents \
+ -p vapora-mcp-server \
+ -p vapora-a2a \
+ -p vapora-cli \
+ --quiet
+ echo "โ Native binaries built"
echo ""
- # Create installation directory
- mkdir -p "$INSTALL_DIR" || { echo "โ Failed to create directory"; exit 1; }
- echo "Installing binaries to $INSTALL_DIR..."
+ # Optionally build the Leptos frontend via trunk
+ if [ "{{ UI }}" = "true" ]; then
+ if ! command -v trunk &>/dev/null; then
+ echo "โ trunk not found. Install with: cargo install trunk"
+ exit 1
+ fi
+ echo "Building frontend (trunk --release)..."
+ cd "$WORKSPACE/crates/vapora-frontend"
+ trunk build --release
+ echo "โ Frontend built โ $WORKSPACE/crates/vapora-frontend/dist"
+ cd "$WORKSPACE"
+ echo ""
+ fi
- # Track installations
- INSTALLED=0
+ # Copy binaries to install dir
+ mkdir -p "$INSTALL_DIR" || { echo "โ Failed to create $INSTALL_DIR"; exit 1; }
+ echo "Installing to $INSTALL_DIR..."
- # Define all binaries to install
declare -a BINARIES=(
"vapora-backend"
"vapora-agents"
"vapora-mcp-server"
+ "vapora-a2a"
"vapora"
)
- # Install each binary
+ INSTALLED=0
+ MISSING=0
for BIN_NAME in "${BINARIES[@]}"; do
BIN_PATH="$WORKSPACE/target/release/$BIN_NAME"
-
if [ -f "$BIN_PATH" ]; then
cp "$BIN_PATH" "$INSTALL_DIR/"
chmod +x "$INSTALL_DIR/$BIN_NAME"
echo " โ $BIN_NAME"
INSTALLED=$((INSTALLED + 1))
+ else
+ echo " โ $BIN_NAME (not found in target/release โ build may have failed)"
+ MISSING=$((MISSING + 1))
fi
done
- # Show warning if no binaries found
- if [ $INSTALLED -eq 0 ]; then
- echo " โ No binaries found in $WORKSPACE/target/release"
- fi
-
echo ""
- if [ $INSTALLED -eq 0 ]; then
+ if [ "$INSTALLED" -eq 0 ]; then
echo "โ No binaries were installed"
exit 1
fi
- echo "โ Installation complete ($INSTALLED binaries installed)"
- echo ""
- echo "๐ Installation summary:"
- echo " Install dir: $INSTALL_DIR"
- echo " Binaries: $(ls -1 "$INSTALL_DIR"/vapora-* 2>/dev/null | xargs -I {} basename {})"
+ if [ "$MISSING" -gt 0 ]; then
+ echo "โ $MISSING binaries missing โ check build output above"
+ fi
+
+ echo "โ Installation complete ($INSTALLED/$((INSTALLED + MISSING)) binaries)"
echo ""
+ echo "Install dir: $INSTALL_DIR"
if echo "$INSTALL_DIR" | grep -q "\.local/bin"; then
- echo "โ ๏ธ Shell setup required:"
- echo " export PATH=\"\$PATH:$INSTALL_DIR\""
- echo " Or add to ~/.bashrc/.zshrc for persistent setup"
+ echo ""
+ echo "Ensure PATH includes $INSTALL_DIR:"
+ echo " export PATH=\"\$PATH:$INSTALL_DIR\""
fi
echo ""
- echo "๐งช Verify installation:"
- echo " $INSTALL_DIR/vapora-backend --help"
- echo " $INSTALL_DIR/vapora-agents --help"
+ echo "Verify:"
+ echo " $INSTALL_DIR/vapora-backend --help"
+ echo " $INSTALL_DIR/vapora-agents --help"
+ echo " $INSTALL_DIR/vapora-a2a --help"
+
+ if [ "{{ UI }}" = "true" ]; then
+ echo ""
+ echo "Frontend dist: $WORKSPACE/crates/vapora-frontend/dist"
+ fi
echo ""
# === UTILITIES ===
-# Clean target build artifacts
[doc("Clean all target build artifacts")]
clean-targets:
@echo "=== Cleaning target artifacts ==="