Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
aa847be
feat: Add SitioUno neon branding
Apr 24, 2026
f79fc3e
feat: Add Local Skills UI surface
Apr 24, 2026
ba0b86b
docs: Add strict Upstream Merge Policy for Alekhine
Apr 24, 2026
f9f0afc
docs: Add standard agent profiles and Node Onboarding guide
Apr 25, 2026
cb47327
fix: Properly render LocalSkillsTab content
Apr 25, 2026
f40d0b4
fix: Add missing translation keys for local_skills tab
Apr 25, 2026
6e7ac1f
fix: Finalize LocalSkillsTab component rendering without invalid props
Apr 25, 2026
cff3579
feat: Add Obsidian Wiki Launcher to Local Skills Tab
Apr 25, 2026
a5bfb7a
fix: Resolve TypeScript typing for LocalSkillsTab agent prop
Apr 25, 2026
98bc5a8
fix: Change Obsidian button behavior to alert the explicit path to av…
Apr 25, 2026
eb57715
fix: Rewrite Obsidian button to trigger system xdg-open via gateway A…
Apr 25, 2026
c911449
feat(branding): parametrize office title and branch label via env vars
Apr 25, 2026
9549cac
fix: Improve Obsidian routing logic and support vault parameter
Apr 25, 2026
9325b56
feat: Native Wiki Viewer with force-graph and markdown rendering
Apr 25, 2026
1922339
fix: Cleanup unused imports and variables to pass CI build
Apr 25, 2026
ca86e5e
feat: Connect WikiViewerModal to real filesystem via API exec gateway
Apr 25, 2026
f113e22
fix: WikiViewer robust mockup and close button to prevent API crashes
Apr 25, 2026
1593e71
refactor: Overhaul WikiViewer UX for fluid text-first navigation
Apr 25, 2026
e340f27
fix: resolve TS unused var error in WikiViewerModal
Apr 25, 2026
a8e149f
refactor: Overhaul WikiViewer UX for fluid text-first navigation
Apr 25, 2026
ebb5511
fix: Resolve unused var in new API fetcher UI
Apr 25, 2026
9ab9427
chore: Bump version to 2026.4.25-1 to force cache invalidation
Apr 25, 2026
7336181
feat: Connect WikiViewer to real filesystem API and fix neon brand label
Apr 25, 2026
bf4476c
fix: resolve TS unused var error in WikiViewerModal API payload
Apr 25, 2026
46ab896
fix: Rewrite WikiViewerModal API bridge using WebSocket adapter inste…
Apr 25, 2026
f1d06e4
fix: Rewrite WikiViewerModal to use native agentsFilesList API instea…
Apr 25, 2026
d29f333
fix: Correct import path for adapter-provider to resolve TS error
Apr 25, 2026
5b38973
fix: Align WikiViewer with official AgentFilesListResult API typings
Apr 25, 2026
fe2d535
feat: Redesign Wiki UX to offer both Web Viewer and native Obsidian l…
Apr 25, 2026
faae9b6
fix: Robust Obsidian launcher using vault id as primary mechanism
Apr 25, 2026
c6eb344
fix: Simplify Obsidian launcher to just open the app cleanly without …
Apr 25, 2026
19cdd9e
feat(ui): Setup GCP — pairing requests + channels admin (Pieza 2/3) (#1)
sitiouno Apr 26, 2026
f12aae2
feat(ui): re-point Setup GCP client to HQ sidecar over Tailscale (no …
sitiouno Apr 26, 2026
c61c005
fix(ui): Setup GCP no longer white-screens when sidecar unreachable (#3)
sitiouno Apr 27, 2026
08ca74d
fix(client): extract requests[]/channels[] from sidecar JSON envelope…
sitiouno Apr 27, 2026
69d0bd3
feat(ui): Setup GCP — OpenHands LLM profiles tab (Pieza G) (#5)
sitiouno Apr 30, 2026
68f5601
docs: define SitioUno repo boundaries
May 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
# OpenClaw Office 环境变量

# Branch customization
# VITE_OFFICE_TITLE=OpenClaw Office
# VITE_BRANCH_LABEL=SitioUno - Sucursal Miami
# 复制此文件为 .env.local 并填入实际值

# Gateway WebSocket 地址
Expand All @@ -9,3 +13,13 @@ VITE_GATEWAY_TOKEN=

# Mock 模式(设为 true 可不连接真实 Gateway 进行开发)
# VITE_MOCK=true

# --- Setup GCP (HQ sidecar on Tailscale) ---
# Used by the "Setup GCP" console page (pairing requests, notification
# channels, notify broadcast). The trust boundary is the Tailscale VPN: the
# HQ sidecar validates source identity server-side via `tailscale whois`,
# so NO bearer token is required and none should ever be shipped in the
# browser bundle. May also be injected at runtime via
# window.__OPENCLAW_CONFIG__.registryApiUrl.
# Default (when unset): http://openclaw-hq:8781
# VITE_REGISTRY_API_URL=http://openclaw-hq:8781
13 changes: 13 additions & 0 deletions ACP_PLAN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Tarea de Refactorización: WikiViewerModal
**Contexto:** El fundador rechazó el componente WikiViewerModal.tsx actual. La UI con el grafo (react-force-graph-2d) es muy lenta, se superpone el botón de cerrar y la experiencia general es mala.

**Objetivos:**
1. Desinstalar `react-force-graph-2d` y `d3-force` usando pnpm.
2. Refactorizar `src/components/console/agents/WikiViewerModal.tsx`:
- Elimina todo rastro del grafo y la variable `viewMode`.
- Crea un layout de dos columnas:
- Izquierda (Sidebar): Una lista de archivos mockeados (e.g., `index.md`, `SOUL.md`, `AGENTS.md`).
- Derecha (Main Content): Renderiza el texto Markdown simulado correspondiente al archivo seleccionado en la izquierda usando `react-markdown`.
- Repara el botón "X" de cerrar para que no quede montado sobre el título. Ponlo limpio en la esquina del modal.
3. Asegúrate de compilar con `pnpm build` para revisar errores de TypeScript.
4. Usa `git add .` y `git commit -m "refactor: Overhaul WikiViewer UX for fluid text-first navigation"`.
11 changes: 11 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,17 @@ This document provides context and rules for AI coding assistants (Codex, Claude

OpenClaw Office is the visual monitoring and management frontend for the [OpenClaw](https://github.com/openclaw/openclaw) Multi-Agent system. It connects to the OpenClaw Gateway via WebSocket to visualize Agent collaboration as a "digital office" and provides a full console management interface.

## SitioUno Repository Boundaries

This repo is the canonical home for the graphical/product UI only: React/Vite source, office visualization, console, chat workspace, assets, i18n, and frontend service scripts.

Do not add GCP Terraform, VM provisioning, Tailscale setup, branch registry code, MCP infrastructure, Zeus/Hermes runtime config, MiroFish product code, or software-factory code here. Use the repo map in `SITIOUNO-REPO-MAP.md`:

- `sitiouno/gcloud-office` for infra, node runbooks, branch registry, MCP routing, and Sicilia/Zeus/MiroFish node fichas.
- `SiteOneTech/sitiouno-software-factory-ai` for the software factory.
- `SiteOneTech/hermes-agent` for Zeus/Hermes implementation.
- `SiteOneTech/mirofish-original-ai-forecast` for MiroFish.

## Tech Stack

| Category | Technology |
Expand Down
13 changes: 13 additions & 0 deletions DEPLOY_LOCAL_NODES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Protocolo de Despliegue UI y Sincronización de Nodos Locales

Este documento establece las reglas para desplegar **este frontend** en nodos locales. La infraestructura del nodo, registry, MCP, VPN y contratos de delegación se mantienen en `sitiouno/gcloud-office`.

Ver tambien: [SITIOUNO-REPO-MAP.md](SITIOUNO-REPO-MAP.md).

## 1. Responsabilidad Estricta
Ningún agente DevOps local debe intentar conectarse por SSH, Bastion o VPN para hacer despliegues en infraestructura externa (HQ u otros nodos). Cada nodo debe tener su propio agente vigilante que haga un `pull` de este repositorio y compile los binarios localmente.

## 2. Sincronización de Skills Locales
La carpeta `/local-skills` dentro de este repositorio actúa como el canal de distribución para custom skills entre sucursales.
- **Acción requerida (DevOps Local):** Monitorear esta carpeta. Si hay cambios o nuevos skills, el agente debe copiarlos al directorio global local del nodo (`~/.local/npm-global/lib/node_modules/openclaw/skills/` o equivalente) para que OpenClaw los registre en el Gateway.
- Si un agente en un nodo crea un skill útil, el DevOps de ese nodo debe hacerle commit y push hacia esta carpeta `/local-skills` para compartirlo con el ecosistema.
31 changes: 31 additions & 0 deletions NODE_ONBOARDING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Guía de Onboarding UI para Nuevos Nodos (SitioUno)

Esta guía cubre solo la **parte gráfica/OpenClaw Office UI** que un nodo debe instalar para heredar la experiencia visual custom. El onboarding completo de infraestructura, VPN, registry, MCP, secrets y delegación vive en `sitiouno/gcloud-office`.

Mapa de repos: [SITIOUNO-REPO-MAP.md](SITIOUNO-REPO-MAP.md).

## Paso 1: Clonar este Repositorio Base
En el workspace del agente programador del nuevo nodo, ejecuta:
```bash
git clone https://github.com/sitiouno/openclaw-office.git
```

Antes de tocar servicios del nodo, verificar que el runbook de infraestructura correspondiente exista en `gcloud-office`.

## Paso 2: Crear al DevOps (Capablanca)
Todo nodo DEBE tener un agente llamado **Capablanca** dedicado a operaciones domésticas y de sistema.
1. Revisa `docs/ecosystem_agents/CAPABLANCA_DEVOPS.md`.
2. Utiliza la skill `prompt-architect` para generar sus archivos `IDENTITY.md`, `SOUL.md` y `AGENTS.md` con ese formato.

## Paso 3: Instalar Skills Locales
1. Capablanca debe entrar a `/local-skills` dentro de este repo.
2. Copiar todo el contenido a su carpeta global de sistema:
`cp -R local-skills/* ~/.local/npm-global/lib/node_modules/openclaw/skills/`
3. Reiniciar el gateway de OpenClaw. A partir de este momento, el nodo tiene acceso a `prompt-architect`, `llm-wiki`, etc.

## Paso 4: Despliegue de la Interfaz Customizada
1. Capablanca debe crear un script `deploy-office.sh` que ejecute `pnpm build` en este repo y copie el `/dist` a la ruta global del OpenClaw Office local.
2. Capablanca debe tener un `cron` asignado para que ejecute este sync automáticamente.

## Paso 5: El Programador
El nodo puede tener su propio programador o mantener el nombre "Alekhine". Su perfil debe configurarse leyendo `docs/ecosystem_agents/ARCHITECT_PROGRAMMER.md`. Este agente tendrá la misión de vigilar los repositorios y programar las herramientas específicas que requiera su sucursal, haciendo push a este repositorio para beneficio de todos.
4 changes: 4 additions & 0 deletions README.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@

**Core Metaphor:** Agent = Digital Employee | Office = Agent Runtime | Desk = Session | Meeting Pod = Collaboration Context

## SitioUno Fork Scope

This fork owns the graphical/product surface of OpenClaw Office: React UI, visual office, console, chat, assets, i18n, and frontend service scripts. GCP infrastructure, node runbooks, MCP routing, Zeus/Hermes, MiroFish, and the software factory live in their own repositories. See [SITIOUNO-REPO-MAP.md](SITIOUNO-REPO-MAP.md).

---

## Features
Expand Down
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@

**核心隐喻:** Agent = 数字员工 | 办公室 = Agent 运行时 | 工位 = Session | 会议室 = 协作上下文

## SitioUno Fork Scope

This fork owns the graphical/product surface of OpenClaw Office: React UI, visual office, console, chat, assets, i18n, and frontend service scripts. GCP infrastructure, node runbooks, MCP routing, Zeus/Hermes, MiroFish, and the software factory live in their own repositories. See [SITIOUNO-REPO-MAP.md](SITIOUNO-REPO-MAP.md).

---

## 功能概览
Expand Down
31 changes: 31 additions & 0 deletions SITIOUNO-REPO-MAP.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Mapa de Repositorios SitioUno / OpenClaw

Este repo es el **repo grafico y de producto UI**. Su trabajo es mostrar y operar OpenClaw Office desde el navegador: oficina visual, consola, chat, settings, i18n, assets y scripts de servicio del frontend.

## Dueño de Cada Cosa

| Area | Repo canonico | Que vive ahi |
| --- | --- | --- |
| UI grafica OpenClaw Office | `sitiouno/openclaw-office` | React/Vite, oficina 2D, consola, chat, assets, i18n, CLI `openclaw-office`, deploy local de UI. |
| Infra GCP y nodos | `sitiouno/gcloud-office` | Terraform, scripts GCP, registry, MCP `kaspar-tools`, contratos de delegacion, runbooks de sucursales, fichas de Sicilia/Zeus/MiroFish. |
| Software Factory | `SiteOneTech/sitiouno-software-factory-ai` | Oficina/servicio especializado para tareas de programacion y automatizacion de desarrollo. |
| Zeus / Hermes | `SiteOneTech/hermes-agent` | Fork/configuracion del producto Hermes Agent, despliegue Zeus, Honcho, MCPs propios de Zeus. |
| MiroFish | `SiteOneTech/mirofish-original-ai-forecast` | Producto simulador AI Forecast, backend/frontend del simulador y despliegues propios. |

## Regla Practica

- Si cambia una pantalla, componente, traduccion, asset, flujo visual, chat UI o consola: va en este repo.
- Si cambia una VM, VPN, Tailscale, systemd, Terraform, registry, MCP de infraestructura o runbook de nodo: va en `gcloud-office`.
- Si cambia una capacidad de programacion como servicio o una oficina de desarrollo: va en `sitiouno-software-factory-ai`.
- Si cambia la identidad/runtime de Zeus como agente Hermes: va en `hermes-agent`; este repo solo puede consumirlo o enlazarlo desde UI.
- Si cambia el simulador MiroFish: va en `mirofish-original-ai-forecast`; este repo solo puede enlazarlo o mostrar su estado.

## Local Skills

`local-skills/` queda como zona transicional para skills que el Office distribuye junto con la experiencia local. Nuevas skills de infraestructura multi-nodo deben preferir `gcloud-office` o el repo especifico del agente/servicio que las consume.

## No Guardar Aqui

- API keys, tokens de gateway, tokens Tailscale, credenciales GitHub o `.env`.
- Estado runtime de gateways, sesiones, logs, bases SQLite, backups o historiales de chat.
- Clones completos de `gcloud-office`, `hermes-agent`, `mirofish-original-ai-forecast` o la factory.
26 changes: 26 additions & 0 deletions UPSTREAM_MERGE_POLICY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Política de Mantenimiento de Fork (Upstream Merge Policy)

**Propietario / Responsable Técnico:** Alekhine (Erudito)
**Frecuencia de Revisión:** Semanal (vía CronJob)
**Upstream:** `https://github.com/WW-AI-Lab/openclaw-office.git`

Este repositorio es un **fork productivo** adaptado para las necesidades específicas de la sucursal Miami y la red global de *SitioUno*. Contiene customizaciones de marca (Branding Neón) y lógicas estructurales de arquitectura local (Local Skills, etc.).

## 0. Limite de Responsabilidad

Este fork mantiene la superficie grafica/producto de OpenClaw Office. No debe absorber infraestructura GCP, registry, MCP multi-nodo, Zeus/Hermes, MiroFish ni la factory de software. El mapa canonico esta en [SITIOUNO-REPO-MAP.md](SITIOUNO-REPO-MAP.md).

## 1. Misión de Mantenimiento
Alekhine debe revisar semanalmente los commits del repositorio original (Upstream) para incorporar parches de seguridad, optimizaciones de rendimiento y nuevos componentes estructurales que la comunidad oficial desarrolle.

## 2. Regla de Oro (Resolución de Conflictos)
Si un cambio oficial entra en conflicto con una modificación arquitectónica o visual creada por nosotros (ej. `TopBar.tsx` branding, `agents-store.ts` tabs):
- **PREVALECEN LOS CAMBIOS LOCALES.** Nuestras customizaciones no son negociables y no deben ser sobreescritas por el código vanilla.
- Alekhine debe aislar el código vanilla útil y adaptarlo a nuestro diseño, descartando la sobreescritura de nuestra UI.

## 3. Protocolo de Escalamiento (Escalation Path)
Si un refactor masivo de upstream rompe la compatibilidad estructural de nuestras vistas custom de tal forma que la resolución automática o el análisis estático de Alekhine sea inseguro:
1. **Pausa el merge.** No enviar a rama `main`.
2. **Notificar a Murphy (Foreman).** Murphy evaluará el impacto.
3. Si requiere reevaluación de arquitectura, Murphy lo pasará al Granmaster (Advisor Consult).
4. Como última instancia, el issue se escalará al CEO (Jean) para una decisión de negocio.
37 changes: 37 additions & 0 deletions docs/ecosystem_agents/ARCHITECT_PROGRAMMER.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Estándar de Agente Programador/Erudito

Aunque el nombre del agente programador puede variar por nodo (ej. Alekhine en Miami), su comportamiento y capacidades deben regirse por este Blueprint de Alta Densidad para garantizar código SOLID y Cloud-native.

## SOUL.md (Plantilla Base)
```markdown
<identity>
Eres el Arquitecto Principal y "Erudito" del código de esta sucursal de SitioUno.
Tu mente opera bajo los más altos estándares de ingeniería: principios SOLID, Clean Architecture, y seguridad por diseño.
</identity>

<communication_style>
- **Precisión Quirúrgica:** Respuestas densas en valor, sin validaciones conversacionales.
- **Enfoque Pragmático:** Diseñas para producción. Evalúas trade-offs (costo, latencia) antes de codificar.
- **Autoridad Técnica:** Si un diseño propuesto tiene fallas, lo señalas y propones la solución óptima.
</communication_style>

<behavioral_constraints>
- NUNCA uses código deprecated o inseguro.
- SIEMPRE asume infraestructura escalable.
- Para cambios en el frontend de OpenClaw Office, respeta SIEMPRE el `UPSTREAM_MERGE_POLICY.md` (las customizaciones de SitioUno tienen prioridad).
</behavioral_constraints>
```

## AGENTS.md (Plantilla Base)
```markdown
<role>
Arquitecto de Sistemas & Programador Avanzado
Model: Modelos de alto razonamiento profundo (pro/reasoning)
</role>

<capabilities>
1. Cloud & Infra: GCP, Docker.
2. Desarrollo: TypeScript (React/Vite/Zustand), Python (Asyncio).
3. Ecosistema: OpenClaw nativo.
</capabilities>
```
51 changes: 51 additions & 0 deletions docs/ecosystem_agents/CAPABLANCA_DEVOPS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Estándar de Agente DevOps: Capablanca

Para simplificar la infraestructura del ecosistema de SitioUno, **todos los nodos** deben tener un agente llamado `Capablanca` encargado exclusivamente de tareas DevOps y despliegue local.

## IDENTITY.md
```markdown
---
name: Capablanca
theme: system
emoji: ♞
---
```

## SOUL.md
```markdown
<identity>
Eres Capablanca, el DevOps y Supervisor de Pipelines de la Sucursal para SitioUno.
Tu filosofía es la automatización limpia y la vigilancia continua. Operas en las sombras asegurando que el código de los desarrolladores fluya desde el repositorio hasta producción sin fricción.
</identity>

<communication_style>
- **Conciso y Mecánico:** Reportas estados (UP, DOWN, SYNCED).
- **Tolerancia Cero al Error:** Si un despliegue rompe, aplicas rollback.
- **Verbosidad Mínima:** "Despliegue exitoso. Commit [hash]."
</communication_style>

<behavioral_constraints>
- NUNCA subas a producción código que no haya pasado linting/tests.
- SIEMPRE que configures un cron, documéntalo en el log del nodo.
- El despliegue a la UI Office se hace mediante bash scripting e inyección directa en ~/.local/npm-global/lib/node_modules/.
</behavioral_constraints>
```

## AGENTS.md
```markdown
<role>
Ingeniero DevOps y Vigilante de Pipelines (Doméstico)
ID: `capablanca` | Model: Modelos rápidos y deterministas (ej. flash)
</role>

<capabilities>
1. CI/CD Local: Git, Bash scripting, systemd.
2. Orquestación: Manejo de crons para vigilar repositorios.
3. Monitoreo: Uso de curl y tail logs.
</capabilities>

<workflow_rules>
- Ejecutar scripts de deploy local (ej. `deploy-office.sh`).
- Monitorear la carpeta `/local-skills` del repositorio. Si hay skills nuevos, copiarlos al directorio global local del nodo (`~/.local/npm-global/lib/node_modules/openclaw/skills/`). Si tu nodo crea skills, haz commit y súbelos para compartir.
</workflow_rules>
```
24 changes: 24 additions & 0 deletions local-skills/llm-wiki/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<skill>
<name>llm-wiki</name>
<description>Implementa el patrón de base de conocimiento persistente basado en Markdown (Karpathy 'llm-wiki'). Permite a un agente crear, mantener y consultar una Wiki para un proyecto o para todo el ecosistema. Mantiene un index.md (catálogo) y un log.md (registro cronológico), e integra nueva información sin sobrescribir o perder contexto previo.</description>
</skill>

# Patrón LLM-Wiki (Knowledge Base Persistente)

## 1. Anatomía de la Wiki
Cualquier instancia de Wiki debe contener:
- `/raw`: Directorio para fuentes inmutables (artículos, transcripciones, datos crudos).
- `index.md`: Catálogo de todas las páginas de la wiki, agrupadas por categorías, con descripciones de 1 línea.
- `log.md`: Registro cronológico ("append-only") de operaciones. Formato: `## [YYYY-MM-DD] accion | Target`.
- `/*.md`: Páginas de entidades, conceptos, resúmenes e integraciones.

## 2. Flujo de Ingesta (Ingest)
Cuando se agrega una fuente:
1. El agente lee el documento original en `/raw`.
2. Extrae las ideas clave, conceptos y entidades.
3. Actualiza o crea páginas `.md` en la wiki interconectándolas (cross-references).
4. Actualiza el `index.md` si se crearon páginas nuevas.
5. Añade una entrada al final de `log.md`.

## 3. Escalabilidad
Este patrón puede instanciarse a nivel global (ej. `~/openclaw-workspaces/wiki-global`) o dentro de un repositorio de código específico (ej. `/src/docs/wiki`).
18 changes: 18 additions & 0 deletions local-skills/prompt-architect/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<skill>
<name>prompt-architect</name>
<description>Skill activa de ingeniería de prompts de alta densidad. Utiliza estructuras XML (<identity>, <instructions>, <constraints>, <context>), delimitación de roles estrictos y control de verbosidad basado en los leaks de Codex/Claude y la arquitectura OpenClaw. Úsala para reescribir perfiles de agentes (AGENTS.md, SOUL.md, etc.) asegurando máxima obediencia, seguridad y capacidad analítica.</description>
</skill>

# Arquitectura de Prompts de Alta Densidad (Prompt Architect)

## 1. Principios Core
- **Cadena de Mando:** El `developer` manda. El prompt define la identidad y el estado operacional antes de cualquier input del `user`.
- **Delimitación XML:** Todo contexto, instrucción o ejemplo debe estar en tags (`<identity>`, `<rules>`, `<workspace>`, `<tools>`).
- **Verbosidad Calibrada:** Instruir al modelo explícitamente a omitir validaciones sociales (e.g. "Entendido", "Aquí tienes").

## 2. Estructura Estándar para Agentes OpenClaw
Todo perfil de agente debe contener:
- `<role>`: Quién es y su función en la red.
- `<capabilities>`: Qué sabe hacer (lenguajes, frameworks, integraciones).
- `<constraints>`: Límites de seguridad duros.
- `<output_format>`: Cómo debe hablar y entregar resultados.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@ww-ai-lab/openclaw-office",
"version": "2026.4.10-2",
"version": "2026.4.25-1",
"description": "Visual monitoring & management frontend for OpenClaw Multi-Agent system",
"keywords": [
"ai-agents",
Expand Down
11 changes: 11 additions & 0 deletions src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,10 @@ import { CronPage } from "@/components/pages/CronPage";
import { DashboardPage } from "@/components/pages/DashboardPage";
import { ChatPage } from "@/components/pages/ChatPage";
import { SettingsPage } from "@/components/pages/SettingsPage";
import { SetupGcpPage } from "@/components/pages/SetupGcpPage";
import { SkillsPage } from "@/components/pages/SkillsPage";
import { ChatWorkspaceBootstrap } from "@/components/chat/ChatWorkspaceBootstrap";
import { ErrorBoundary } from "@/components/shared/ErrorBoundary";
import type { PageId } from "@/gateway/types";
import { useGatewayConnection } from "@/hooks/useGatewayConnection";
import { useResponsive } from "@/hooks/useResponsive";
Expand Down Expand Up @@ -39,6 +41,7 @@ const PAGE_MAP: Record<string, PageId> = {
"/channels": "channels",
"/skills": "skills",
"/cron": "cron",
"/setup-gcp": "setupGcp",
"/settings": "settings",
};

Expand Down Expand Up @@ -111,6 +114,14 @@ export function App() {
<Route path="/channels" element={<ChannelsPage />} />
<Route path="/skills" element={<SkillsPage />} />
<Route path="/cron" element={<CronPage />} />
<Route
path="/setup-gcp"
element={
<ErrorBoundary title="Setup GCP">
<SetupGcpPage />
</ErrorBoundary>
}
/>
<Route path="/settings" element={<SettingsPage />} />
</Route>
<Route path="*" element={<Navigate to="/" replace />} />
Expand Down
Loading