metaagent integration
This commit is contained in:
@@ -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.
|
||||
Reference in New Issue
Block a user