Files
2026-07-22 01:38:31 +03:00

107 lines
6.2 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"$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"
}
]
}