107 lines
6.2 KiB
JSON
107 lines
6.2 KiB
JSON
{
|
||
"$schema": "metaagent-task-manifest",
|
||
"version": "1.0",
|
||
"session_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||
"goal": "Проанализировать существующий Obsidian-плагин zeroq-qol-modules (v1.1.4) и подготовить манифест задач для исполнительного агента.",
|
||
"created_at": "2026-07-22T00:00:00.000Z",
|
||
"tasks": [
|
||
{
|
||
"id": "T1",
|
||
"title": "Настроить ESLint и Prettier",
|
||
"description": "Добавить конфигурацию ESLint (typescript-eslint) и Prettier для единого стиля кода. Настроить скрипты lint/format в package.json.",
|
||
"type": "config",
|
||
"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). Линтер/форматтер отсутствует.",
|
||
"status": "pending"
|
||
},
|
||
{
|
||
"id": "T2",
|
||
"title": "Написать тесты для BaseModule",
|
||
"description": "Добавить unit-тесты для BaseModule: проверка registerCleanup, onunload (очистка всех функций), defaultSettings.",
|
||
"type": "test",
|
||
"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.",
|
||
"status": "pending"
|
||
},
|
||
{
|
||
"id": "T3",
|
||
"title": "Написать тесты для Attachment Clean Paste модуля",
|
||
"description": "Добавить unit-тесты для AttachmentCleanPasteModule: проверка shouldProcess (фильтрация расширений), обработка paste/drop событий.",
|
||
"type": "test",
|
||
"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 (копирование + создание ссылки).",
|
||
"status": "pending"
|
||
},
|
||
{
|
||
"id": "T4",
|
||
"title": "Написать тесты для Preserve Link Aliases модуля",
|
||
"description": "Добавить unit-тесты для PreserveLinkAliasesModule: проверка processContent (замена алиасов), getFilesToProcess (фильтрация файлов), обработка rename.",
|
||
"type": "test",
|
||
"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).",
|
||
"status": "pending"
|
||
},
|
||
{
|
||
"id": "T5",
|
||
"title": "Добавить CI workflow для тестов и линтинга",
|
||
"description": "Добавить GitHub Actions workflow для автоматического запуска тестов и ESLint на push/PR в main/dev.",
|
||
"type": "config",
|
||
"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.",
|
||
"status": "pending"
|
||
}
|
||
]
|
||
}
|