docs: update plugin runtime for vault capability
This commit is contained in:
parent
d7da8b4ee3
commit
fa52a0bfc3
|
|
@ -85,6 +85,9 @@ coreCaps := []string{
|
||||||
"verstak/core/events/v1",
|
"verstak/core/events/v1",
|
||||||
}
|
}
|
||||||
capRegistry.Register("verstak-desktop", coreCaps)
|
capRegistry.Register("verstak-desktop", coreCaps)
|
||||||
|
|
||||||
|
// Vault capability — регистрируется отдельно после vault initialization
|
||||||
|
capRegistry.Register("verstak-desktop", []string{"verstak/core/vault/v1"})
|
||||||
```
|
```
|
||||||
|
|
||||||
Это гарантирует, что любой plugin с `requires: ["verstak/core/plugin-manager/v1"]` будет загружен.
|
Это гарантирует, что любой plugin с `requires: ["verstak/core/plugin-manager/v1"]` будет загружен.
|
||||||
|
|
@ -185,6 +188,64 @@ foreach plugin:
|
||||||
|
|
||||||
Frontend вызывает это при нажатии "Reload" в Plugin Manager.
|
Frontend вызывает это при нажатии "Reload" в Plugin Manager.
|
||||||
|
|
||||||
|
## Vault Core Capability
|
||||||
|
|
||||||
|
- `verstak/core/vault/v1` — регистрируется в `main.go` после остальных core capabilities, когда vault инициализирован.
|
||||||
|
- Vault layout: `<base>/VerstakVault/.verstak/` с подпапками (см. ниже).
|
||||||
|
- Plugin namespace paths: `plugin-data/<id>`, `plugin-settings/<id>`, `plugin-cache/<id>`.
|
||||||
|
- Vault events: `vault.created`, `vault.opened`, `vault.closed`, `vault.error`.
|
||||||
|
- Vault status: `not-created`, `closed`, `open`, `error`.
|
||||||
|
- Path traversal protection через `ResolveSafePath`.
|
||||||
|
|
||||||
|
### Vault Directory Layout
|
||||||
|
|
||||||
|
```
|
||||||
|
<base>/
|
||||||
|
VerstakVault/ ← vault root (создаётся CreateVault)
|
||||||
|
.verstak/
|
||||||
|
vault.json ← VaultMeta (schemaVersion, vaultId, createdAt, app)
|
||||||
|
plugin-data/ ← per-plugin data namespaces
|
||||||
|
<plugin-id>/
|
||||||
|
plugin-settings/ ← per-plugin settings namespaces
|
||||||
|
<plugin-id>/
|
||||||
|
plugin-cache/ ← per-plugin cache namespaces
|
||||||
|
<plugin-id>/
|
||||||
|
trash/ ← soft-deleted items
|
||||||
|
logs/ ← vault-scoped logs
|
||||||
|
```
|
||||||
|
|
||||||
|
### Vault API
|
||||||
|
|
||||||
|
| Метод | Описание |
|
||||||
|
|---|---|
|
||||||
|
| `CreateVault(path)` | Создаёт `VerstakVault/` с `.verstak/` layout и `vault.json`. Публикует `vault.created`. |
|
||||||
|
| `OpenVault(path)` | Открывает существующий vault, валидирует `vault.json`. Публикует `vault.opened`. |
|
||||||
|
| `CloseVault()` | Закрывает vault, сбрасывает path/meta. Публикует `vault.closed`. |
|
||||||
|
| `GetVaultStatus()` | Возвращает текущий статус: `not-created`, `closed`, `open`, `error`. |
|
||||||
|
| `GetVaultPath()` | Возвращает путь к vault root. |
|
||||||
|
| `GetVaultMeta()` | Возвращает `VaultMeta` (vaultId, schemaVersion, timestamps). |
|
||||||
|
| `ResolveSafePath(rel)` | Безопасно резолвит относительный путь внутри vault. Блокирует path traversal. |
|
||||||
|
| `GetPluginDataPath(id)` | Возвращает (и создаёт) `plugin-data/<id>/`. |
|
||||||
|
| `GetPluginSettingsPath(id)` | Возвращает (и создаёт) `plugin-settings/<id>/`. |
|
||||||
|
| `GetPluginCachePath(id)` | Возвращает (и создаёт) `plugin-cache/<id>/`. |
|
||||||
|
|
||||||
|
### Vault Events
|
||||||
|
|
||||||
|
| Event | Когда публикуется | Payload |
|
||||||
|
|---|---|---|
|
||||||
|
| `vault.created` | После успешного `CreateVault` | `path`, `vaultId` |
|
||||||
|
| `vault.opened` | После успешного `OpenVault` | `path`, `vaultId` |
|
||||||
|
| `vault.closed` | После `CloseVault` | `vaultId` |
|
||||||
|
| `vault.error` | При ошибках операций | `error` |
|
||||||
|
|
||||||
|
### Vault Status Flow
|
||||||
|
|
||||||
|
```
|
||||||
|
not-created ──CreateVault──▶ open ──CloseVault──▶ closed
|
||||||
|
│ │
|
||||||
|
└──OpenVault─────────┘
|
||||||
|
```
|
||||||
|
|
||||||
## Файлы реализации
|
## Файлы реализации
|
||||||
|
|
||||||
| Файл | Назначение |
|
| Файл | Назначение |
|
||||||
|
|
@ -195,4 +256,6 @@ Frontend вызывает это при нажатии "Reload" в Plugin Manage
|
||||||
| `internal/core/permissions/registry.go` | PermissionsRegistry |
|
| `internal/core/permissions/registry.go` | PermissionsRegistry |
|
||||||
| `internal/core/events/bus.go` | EventBus |
|
| `internal/core/events/bus.go` | EventBus |
|
||||||
| `internal/api/app.go` | Wails API, ReloadPlugins |
|
| `internal/api/app.go` | Wails API, ReloadPlugins |
|
||||||
|
| `internal/core/vault/vault.go` | Vault service: CreateVault, OpenVault, CloseVault, ResolveSafePath, plugin namespace paths |
|
||||||
|
| `internal/core/vault/vault_test.go` | Vault tests: layout creation, open/close, path traversal, events |
|
||||||
| `main.go` | Инициализация, lifecycle orchestration |
|
| `main.go` | Инициализация, lifecycle orchestration |
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue