release: public alpha 0.6.0 baseline
This commit is contained in:
@@ -0,0 +1,163 @@
|
||||
# Capability Catalog
|
||||
|
||||
Status: API version 1.
|
||||
|
||||
Capabilities are denied by default and declared in `plugin.toml`.
|
||||
|
||||
## Commands
|
||||
|
||||
Manifest field:
|
||||
|
||||
```toml
|
||||
commands = ["/hello"]
|
||||
```
|
||||
|
||||
Rules:
|
||||
|
||||
- command names begin with one `/`;
|
||||
- one extension owns a reviewed namespace;
|
||||
- duplicates and undeclared registrations are rejected;
|
||||
- command extensions declare at least one command;
|
||||
- enrichment and scheduled extensions cannot declare commands.
|
||||
|
||||
Command plugins also carry non-capability display metadata:
|
||||
|
||||
```toml
|
||||
description = "Return a local greeting"
|
||||
help = ["/hello [name]"]
|
||||
```
|
||||
|
||||
The Kernel uses signed description/help metadata for automatic help and Host
|
||||
health validation. Display metadata never grants storage, network, or service
|
||||
access.
|
||||
|
||||
## Storage
|
||||
|
||||
Manifest field:
|
||||
|
||||
```toml
|
||||
storage = true
|
||||
```
|
||||
|
||||
The host exposes only a private key/value namespace for that extension.
|
||||
|
||||
It does not expose:
|
||||
|
||||
- filesystem paths;
|
||||
- another extension's state;
|
||||
- the edge ledger;
|
||||
- OCR history;
|
||||
- environment variables.
|
||||
|
||||
Storage quotas and persistence format remain kernel-owned.
|
||||
|
||||
## Approved Network Profiles
|
||||
|
||||
Manifest field:
|
||||
|
||||
```toml
|
||||
network_profiles = ["steam-api"]
|
||||
```
|
||||
|
||||
An approved profile owns:
|
||||
|
||||
- allowed hosts and paths;
|
||||
- credentials;
|
||||
- proxy policy;
|
||||
- timeout;
|
||||
- cache;
|
||||
- response-size limit;
|
||||
- error mapping.
|
||||
|
||||
Extensions receive profile names, not secrets. The current Steam behavior is the
|
||||
reference: Mihomo is mandatory and proxy failure never falls back to direct
|
||||
network access.
|
||||
|
||||
No network profile is currently part of the public example extension.
|
||||
|
||||
## Approved Service Profiles
|
||||
|
||||
Manifest field:
|
||||
|
||||
```toml
|
||||
service_profiles = ["coin"]
|
||||
```
|
||||
|
||||
Service profiles are narrow Kernel-owned operations used by reviewed local
|
||||
adapters. They do not expose raw Ledger or provider objects.
|
||||
|
||||
Current profiles:
|
||||
|
||||
- `person-memory`
|
||||
- `dice`
|
||||
- `coin`
|
||||
- `random-number`
|
||||
- `draw-lot`
|
||||
- `daily-fortune`
|
||||
- `guess-number`
|
||||
- `rock-paper-scissors`
|
||||
- `scan-ranking`
|
||||
- `repeat-ranking`
|
||||
- `history-search`
|
||||
- `server-status`
|
||||
- `jwebot-version`
|
||||
- `debug-telemetry`
|
||||
- `steam-presence`
|
||||
|
||||
`person-memory`, `server-status`, `jwebot-version`, and `debug-telemetry` are
|
||||
official-authored. The others are authored by JWeBot. Kernel direct commands
|
||||
(`/功能列表`, `/帮助`, `/help`, `/余额`) have no service profile. Other
|
||||
extensions do not receive these profiles by default. Every
|
||||
profile request requires capability review, and an unavailable broker fails
|
||||
closed.
|
||||
|
||||
## Facts
|
||||
|
||||
`FactWriter` and `ExtensionResult.facts` accept bounded fact candidates.
|
||||
|
||||
The kernel still controls:
|
||||
|
||||
- sensitive-content filtering;
|
||||
- group and person scope;
|
||||
- evidence requirements;
|
||||
- expiry;
|
||||
- deduplication;
|
||||
- cloud projection.
|
||||
|
||||
An extension cannot directly edit profile memory.
|
||||
|
||||
## Scheduling
|
||||
|
||||
The scheduler accepts a named future intent. The kernel owns the clock, durable
|
||||
queue, idempotency key, target group binding, and eventual delivery checks.
|
||||
|
||||
API version 1 does not permit arbitrary cron expressions or direct timers owned
|
||||
by extension code.
|
||||
|
||||
## Logging
|
||||
|
||||
The extension logger accepts short messages and structured fields.
|
||||
|
||||
Logs must not contain:
|
||||
|
||||
- message bodies;
|
||||
- group names;
|
||||
- reply text;
|
||||
- credentials;
|
||||
- environment values;
|
||||
- raw HTTP payloads.
|
||||
|
||||
## Explicitly Unavailable
|
||||
|
||||
The SDK intentionally has no capability for:
|
||||
|
||||
- GUI or VNC;
|
||||
- group selection;
|
||||
- raw OCR;
|
||||
- SQLite;
|
||||
- filesystem;
|
||||
- environment;
|
||||
- subprocess;
|
||||
- SSH or Docker;
|
||||
- unrestricted sockets or HTTP;
|
||||
- direct model credentials.
|
||||
Reference in New Issue
Block a user