verstak-docs/05_Official_Plugins.md

5.6 KiB
Raw Permalink Blame History

Official Plugins

Официальные плагины - это базовый набор инструментов Верстака. Они не должны быть скрытыми частями core. Их задача - показать, что платформа действительно работает через capabilities и contribution points.

1. official.files

Назначение:

  • дерево/список файлов внутри дела;
  • добавление файлов;
  • перемещение/копирование в vault;
  • открытие системным приложением;
  • file metadata;
  • file actions registry consumer.

Provides:

workspace.files
vault.files
entity.file
file.browser

Optional requires:

editor.text
viewer.file
preview.file
search.provider

Поведение:

  • если есть подходящий editor capability, показывает "Edit";
  • если есть viewer/preview capability, показывает "Preview";
  • если нет, оставляет "Open externally".

2. official.notes

Назначение:

  • markdown notes as first-class Verstak entities;
  • canonical Notes/ folder inside case/project;
  • Overview note;
  • note metadata;
  • note links.

Provides:

workspace.notes
entity.note
note.registry

Requires:

vault.files

Optional requires:

editor.text.markdown
preview.markdown
search.provider

Важное правило:

  • title и filename должны оставаться синхронизированными;
  • filename - человекочитаемая проекция title;
  • при конфликте имени не добавлять _2 молча, а показывать понятный conflict dialog.

3. official.markdown-editor

Назначение:

  • редактирование markdown/text;
  • toolbar;
  • save flow;
  • dirty state;
  • keyboard shortcuts.

Provides:

editor.text
editor.text.markdown
editor.note.markdown

Optional requires:

preview.markdown

Не должен:

  • сам решать, где хранятся notes;
  • напрямую зависеть от official.notes;
  • тащить file manager внутрь себя.

4. official.markdown-preview

Назначение:

  • безопасный markdown render;
  • internal verstak:// links;
  • optional syntax highlight.

Provides:

preview.markdown
viewer.markdown

Optional requires:

link.resolver

5. official.file-preview

Назначение:

  • просмотр изображений;
  • просмотр text-like файлов;
  • базовый PDF/image metadata preview, если возможно;
  • fallback to system open.

Provides:

viewer.file
viewer.image
viewer.text
preview.file

6. official.activity

Назначение:

  • сбор activity events;
  • отображение истории;
  • реконструкция работы;
  • подсказки для worklog.

Provides:

activity.log
activity.provider
activity.reconstruction

Subscribes:

file.opened
file.changed
note.saved
action.started
browser.capture.received
case.selected

7. official.journal

Назначение:

  • ручной журнал работ;
  • billable/non-billable;
  • отчеты по делу/клиенту;
  • принятие suggested time из activity.

Provides:

worklog
journal
report.worklog

Optional requires:

activity.reconstruction

8. official.browser-inbox

Назначение:

  • прием ссылок, выделенного текста, страниц и snippets из browser extension;
  • pending queue;
  • привязка доменов к делам;
  • создание inbox entries;
  • превращение inbox entry в note/link/file/activity.

Provides:

capture.browser
browser.inbox
domain.binding

Requires:

network.local

Optional requires:

workspace.notes
activity.log
search.provider

9. official.search

Назначение:

  • общий поиск по vault;
  • индекс notes/files/activity/worklog;
  • providers from plugins;
  • typo/layout tolerant search later.

Provides:

search
search.provider
search.indexer

10. official.secrets

Назначение:

  • защищенное хранилище клиентских доступов;
  • SSH/CMS/VPS/database/API secrets;
  • bridge secret, sync token, device private key, pairing token;
  • permissions for secret access.

Provides:

secret-store
secrets.read-ui
secrets.write-ui

Важное правило:

  • секреты не должны храниться как обычный markdown/plain text;
  • доступ к secret-store должен идти через permissions;
  • плагины не получают secrets.read автоматически.

11. official.templates

Назначение:

  • шаблоны дел;
  • client/project/server/device structures;
  • initial folder/note/action layout.

Provides:

case.templates

Optional requires:

workspace.notes
workspace.files

12. Первый минимальный набор

Для первого платформенного этапа достаточно:

  • official.files;
  • official.notes;
  • official.markdown-editor;
  • official.markdown-preview;
  • official.activity;
  • official.browser-inbox;

Но все они должны быть настоящими динамическими плагинами, даже если поставляются вместе с приложением.