metaagent integration

This commit is contained in:
2026-07-22 01:38:31 +03:00
parent 09069047a6
commit 055edc7750
33 changed files with 3187 additions and 0 deletions
+128
View File
@@ -0,0 +1,128 @@
# Task Manifest
**Session:** a1b2c3d4-e5f6-7890-abcd-ef1234567890
**Goal:** Проанализировать существующий Obsidian-плагин zeroq-qol-modules (v1.1.4) и подготовить манифест задач для исполнительного агента.
**Date:** 2026-07-22T00:00:00.000Z
---
## Task Overview
| ID | Title | Type | Depends On | Status |
|---|---|---|---|---|
| T1 | Настроить ESLint и Prettier | config | — | pending |
| T2 | Написать тесты для BaseModule | test | — | pending |
| T3 | Написать тесты для Attachment Clean Paste модуля | test | T2 | pending |
| T4 | Написать тесты для Preserve Link Aliases модуля | test | T2 | pending |
| T5 | Добавить CI workflow для тестов и линтинга | config | T1, T3, T4 | pending |
**Total tasks:** 5
---
## Task Details
### T1: Настроить ESLint и Prettier
**Type:** config
**Description:** Добавить конфигурацию ESLint (typescript-eslint) и Prettier для единого стиля кода. Настроить скрипты lint/format в package.json.
**Files:**
- `package.json`
- `.eslintrc.json`
- `.prettierrc.json`
**Depends on:**
**Acceptance Criteria:**
- [ ] ESLint настроен с typescript-eslint, проходит без ошибок на src/
- [ ] Prettier настроен с tabs, проходит без ошибок на src/
- [ ] Скрипты lint и format добавлены в package.json
**Context:** В проекте используются tabs для отступов (см. review.md). Линтер/форматтер отсутствует.
---
### T2: Написать тесты для BaseModule
**Type:** test
**Description:** Добавить unit-тесты для BaseModule: проверка registerCleanup, onunload (очистка всех функций), defaultSettings.
**Files:**
- `src/modules/base-module.ts`
- `tests/modules/base-module.test.ts`
- `package.json`
- `tsconfig.json`
**Depends on:**
**Acceptance Criteria:**
- [ ] Тест проверяет, что registerCleanup добавляет функцию в очередь
- [ ] Тест проверяет, что onunload вызывает все зарегистрированные cleanup-функции
- [ ] Тест проверяет, что onunload очищает очередь после выполнения
- [ ] Тест проверяет, что defaultSettings возвращает пустой объект
- [ ] Все тесты проходят (npm test)
**Context:** BaseModule — абстрактный класс-основа для всех модулей. Находится в src/modules/base-module.ts. Для тестов нужно настроить тестовый раннер (jest или vitest) и mock-объект Plugin из obsidian.
---
### T3: Написать тесты для Attachment Clean Paste модуля
**Type:** test
**Description:** Добавить unit-тесты для AttachmentCleanPasteModule: проверка shouldProcess (фильтрация расширений), обработка paste/drop событий.
**Files:**
- `src/modules/attachment-clean-paste/index.ts`
- `tests/modules/attachment-clean-paste.test.ts`
**Depends on:** T2
**Acceptance Criteria:**
- [ ] Тест проверяет shouldProcess с разными расширениями и настройками
- [ ] Тест проверяет, что обработчик paste вызывает preventDefault для файлов с подходящими расширениями
- [ ] Тест проверяет, что модуль корректно создаёт ссылку [[path|name]]
- [ ] Все тесты проходят (npm test)
**Context:** Attachment Clean Paste обрабатывает editor-paste и editor-drop события. Основная логика: shouldProcess (фильтрация по extensions) и processFile (копирование + создание ссылки).
---
### T4: Написать тесты для Preserve Link Aliases модуля
**Type:** test
**Description:** Добавить unit-тесты для PreserveLinkAliasesModule: проверка processContent (замена алиасов), getFilesToProcess (фильтрация файлов), обработка rename.
**Files:**
- `src/modules/preserve-link-aliases/index.ts`
- `tests/modules/preserve-link-aliases.test.ts`
**Depends on:** T2
**Acceptance Criteria:**
- [ ] Тест проверяет processContent: замена алиаса при переименовании
- [ ] Тест проверяет processContent: игнорирование ссылок без алиаса
- [ ] Тест проверяет processContent: учёт флага processEmbeds
- [ ] Тест проверяет getFilesToProcess: включение canvas-файлов при processCanvas=true
- [ ] Все тесты проходят (npm test)
**Context:** Preserve Link Aliases обрабатывает vault rename. Основная логика: processContent (регулярное выражение для вики-ссылок) и getFilesToProcess (сбор markdown + опционально canvas).
---
### T5: Добавить CI workflow для тестов и линтинга
**Type:** config
**Description:** Добавить GitHub Actions workflow для автоматического запуска тестов и ESLint на push/PR в main/dev.
**Files:**
- `.github/workflows/ci.yml`
**Depends on:** T1, T3, T4
**Acceptance Criteria:**
- [ ] Workflow запускается на push и pull_request в main и dev
- [ ] Workflow выполняет npm ci, npm run lint, npm test
- [ ] Workflow завершается с ошибкой при падении тестов или линтера
**Context:** Существующий release.yml в .github/workflows/ — можно использовать как шаблон. Node 20, ubuntu-latest.