# Repository Layout JWeBot is a monorepo with explicit boundaries between public contracts, privileged runtime code, reviewed plugins, deployment tooling, and local-only configuration. ```text JWeBot/ config/ templates/ schemas/ deploy/ defaults/ scripts/ systemd/ docs/ runbooks/ examples/ extensions/ official/ jwebot/ friends/ packages/ jwebot-config/ jwebot-sdk/ jwebot-kernel/ jwebot-extension-host/ jwebot-official-extensions/ tests/ tools/ jwebot_edge.py jwebot_edge_delivery.py wechat_local_ocr.py wechat_adaptive_recorder.py wechat_adaptive_gui_bridge.py wechat_health_watch.py wechat-gui-bridge ``` ## Package Responsibilities `jwebot-config` - validates profile packages; - compiles generated runtime files atomically; - imports and redacts profile archives; - migrates private context and diagnostic material out of old checkouts. `jwebot-sdk` - contains stable data contracts exposed to plugins; - has no process, filesystem, raw socket, GUI, or environment capability. `jwebot-kernel` - owns routing, command ownership, capability enforcement, ledger access, release verification, provider adapters, and delivery policy. `jwebot-extension-host` - executes one verified extension release per isolated invocation; - runs behind an AF_UNIX socket and systemd sandbox. `jwebot-official-extensions` - contains the reviewed local command engine; - provides generated adapters that return structured SDK plans; - owns the fixed-host Steam service profile, not raw plugin network access. ## Root Entrypoints Root Python and shell files remain compatibility entrypoints for systemd and existing operators. Business logic belongs in packages. Compatibility modules must stay thin and tested. ## Extension Collections - `extensions/official/`: platform-owned service adapters. - `extensions/jwebot/`: built-in reviewed commands. - `extensions/friends/`: contributor-owned plugins. The ownership inventory is authoritative. `tools/sync-local-extensions.py` generates manifests, adapters, package tests, and README files from it. ## Configuration Boundary The repository contains only templates and schemas. Real values live under `~/.config/jwebot/`; runtime/diagnostic data lives under `~/.local/state/jwebot/`. See `config/README.md`. ## Documentation Boundary Committed documentation describes architecture, contracts, generic operations, and sanitized examples. Machine-specific incident reports and debug logs are local profile state, not documentation source.