Files
JWeBot/docs/repository-layout.md
T

96 lines
2.5 KiB
Markdown

# 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.