Документация: добавлен README.ru.md с шапкой
This commit is contained in:
parent
2b2936121d
commit
ac29fa5c78
18
README.md
18
README.md
|
|
@ -1,12 +1,24 @@
|
||||||
|
<div align="center">
|
||||||
|
|
||||||
# Verstak Plugin SDK
|
# Verstak Plugin SDK
|
||||||
|
|
||||||
|
### TypeScript API, JSON schemas and contract tests for Verstak plugins.
|
||||||
|
|
||||||
|
**English** · [Русский](README.ru.md)
|
||||||
|
|
||||||
|
[](https://github.com/mirivlad/verstak-sdk/releases)
|
||||||
|

|
||||||
|
[](LICENSE)
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
> **Alpha contract.** Keep SDK, Desktop and official-plugin versions in the
|
||||||
|
> same release line while APIs are evolving.
|
||||||
|
|
||||||
TypeScript API, JSON schemas and contract tests for plugins running in Verstak
|
TypeScript API, JSON schemas and contract tests for plugins running in Verstak
|
||||||
Desktop. The SDK is versioned independently so plugin authors can validate
|
Desktop. The SDK is versioned independently so plugin authors can validate
|
||||||
their manifests and compile against the public host API.
|
their manifests and compile against the public host API.
|
||||||
|
|
||||||
> **Alpha contract.** This is the first public alpha. Keep SDK, Desktop and
|
|
||||||
> official-plugin versions in the same release line while APIs are evolving.
|
|
||||||
|
|
||||||
## Install and verify
|
## Install and verify
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,105 @@
|
||||||
|
<div align="center">
|
||||||
|
|
||||||
|
# Verstak Plugin SDK
|
||||||
|
|
||||||
|
### TypeScript API, JSON-схемы и контрактные тесты для плагинов Верстака.
|
||||||
|
|
||||||
|
[English](README.md) · **Русский**
|
||||||
|
|
||||||
|
[](https://github.com/mirivlad/verstak-sdk/releases)
|
||||||
|

|
||||||
|
[](LICENSE)
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
> **Контракт alpha-версии.** Держите SDK, Desktop и официальные плагины
|
||||||
|
> в одной релизной линейке, пока API развиваются.
|
||||||
|
|
||||||
|
TypeScript API, JSON-схемы и контрактные тесты для плагинов в Verstak Desktop.
|
||||||
|
SDK версионируется независимо, чтобы авторы плагинов могли валидировать
|
||||||
|
свои manifest и компилироваться против публичного host API.
|
||||||
|
|
||||||
|
## Установка и проверка
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm ci
|
||||||
|
npm run lint
|
||||||
|
npm test
|
||||||
|
npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
Сборка создаёт `dist/`. Упакованный npm-артефакт можно сделать локально:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/release.sh v0.1.0
|
||||||
|
```
|
||||||
|
|
||||||
|
Скрипт проверяет версию на соответствие `package.json`, затем записывает
|
||||||
|
npm-тарбол и `SHA256SUMS` в `release/`.
|
||||||
|
|
||||||
|
## Публикация GitHub Release
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/publish-github-release.sh v0.1.0
|
||||||
|
```
|
||||||
|
|
||||||
|
Выполняет локальную упаковку, затем требует чистый актуальный `main` и
|
||||||
|
авторизованный [`gh`](https://cli.github.com/) CLI. Создаёт и отправляет
|
||||||
|
аннотированный тег, затем загружает npm-тарбол и `SHA256SUMS` в GitHub Releases.
|
||||||
|
Запрошенная версия должна совпадать с `package.json`.
|
||||||
|
|
||||||
|
## Контракты, актуальные для alpha
|
||||||
|
|
||||||
|
- Дела имеют постоянные UUID-идентификаторы; пути — это адреса, а не идентификаторы.
|
||||||
|
- Активность может быть привязана к `workspaceId` или к явной области `unassigned`.
|
||||||
|
- `hostname-normalization-v1.json` определяет общее каноническое представление
|
||||||
|
доменов браузера, используемое Desktop и расширением.
|
||||||
|
- Пакеты активности браузера содержат только нормализованный домен и ограниченную
|
||||||
|
длительность. Ручные захваты используют отдельный протокол Inbox.
|
||||||
|
|
||||||
|
## Контракт синхронизации
|
||||||
|
|
||||||
|
`schemas/sync.json` описывает формат журнала операций, используемый Desktop core
|
||||||
|
и sync-сервером. Сервер упорядочивает операции по `server_sequence`, не сливает
|
||||||
|
содержимое файлов и не становится источником истины.
|
||||||
|
|
||||||
|
- Операции с файлами и папками: `create`, `update`, `delete`, `move`. Небольшой
|
||||||
|
UTF-8 текст может быть встроенным; бинарные и большие файлы содержат ссылку
|
||||||
|
`blob` `{sha256,size}`.
|
||||||
|
- Операции с делами (`Deal`) — это сущности `workspace`, принадлежащие core:
|
||||||
|
`create`, `rename`, `trash`, `restore` с постоянным `workspaceId`.
|
||||||
|
- Pull использует `since_sequence` и `page_limit`; клиент сохраняет курсор
|
||||||
|
только после успешного применения каждой операции и останавливается на первой
|
||||||
|
неудачной.
|
||||||
|
- Файл, превышающий лимит blob или иначе неподдерживаемый, не помечается
|
||||||
|
синхронизированным и повторяется при следующих сканированиях.
|
||||||
|
|
||||||
|
## Контракт Frontend API
|
||||||
|
|
||||||
|
Verstak Desktop создаёт реальный API через `createPluginAPI(pluginId)` и
|
||||||
|
передаёт его компонентам плагинов при монтировании. SDK экспортирует
|
||||||
|
TypeScript-типы для этого объекта:
|
||||||
|
|
||||||
|
- `settings.read/write/writeAll`
|
||||||
|
- `capabilities.list/get/has`
|
||||||
|
- `commands.register/execute/executeFor`
|
||||||
|
- `contributions.list`
|
||||||
|
- `events.publish/subscribe`
|
||||||
|
- `files.list/metadata/readText/readBytes/writeText/createFolder/move/trash/listTrash/restoreTrash/deleteTrash`
|
||||||
|
- `workbench.openResource/editResource`
|
||||||
|
- опциональный `dispose`
|
||||||
|
|
||||||
|
Пути к файлам — канонические vault-относительные слеш-пути. Обратные слеши,
|
||||||
|
абсолютные пути Windows/UNC, переходы по директориям, нулевые байты, варианты
|
||||||
|
`.verstak` и операции через symlink отклоняются. Чтение/запись текста — только
|
||||||
|
UTF-8; `readText` ограничен 2 МБ, `readBytes` возвращает base64 для обычных
|
||||||
|
файлов до 8 МБ.
|
||||||
|
|
||||||
|
Bundled frontend-плагины являются доверенными и выполняются в контексте JS
|
||||||
|
рабочего стола. Текущие проверки прав — это контрактные проверки, а не граница
|
||||||
|
безопасности; настоящая изоляция — в будущем milestone sidecar/sandbox.
|
||||||
|
|
||||||
|
## Лицензия
|
||||||
|
|
||||||
|
Copyright © 2026 Verstak contributors. Распространяется на условиях
|
||||||
|
[GNU AGPLv3 или новее](LICENSE).
|
||||||
Loading…
Reference in New Issue