TaskPact — монорепозиторий на основе npm workspaces и TypeScript.
Основные команды для работы с задачами:
taskpact task create <number> <title>— создать задачу.taskpact task transition <number> <state>— изменить состояние.taskpact task list [state]— вывести список задач или только выбранный статус.taskpact task get <number>— показать задачу по номеру.taskpact version,taskpact --version,taskpact -v— вывести версию CLI.taskpact task report— вывести агрегированный отчёт по состояниям.taskpact help,taskpact --help,taskpact -h— вывести справочный текст.
Пример отчёта:
taskpact task create T-123 "Документация архитектуры"
taskpact task transition T-123 InProgress
taskpact task report
# {
# "total": 1,
# "byState": {
# "InProgress": 1
# }
# }Базовый порядок сборки:
npm run buildСкрипты для отдельных частей:
npm run build:ui # общий интерфейс @taskpact/ui
npm run build:taskpact # пакет taskpact
npm run build:cli # CLI-обёртка
npm run build:host # host-обёртка
npm run build:vscode # VS Code shell
npm run build:desktop # Electron shellnpm run build выполняет сборку всех workspace-пакетов.
build:vscode и build:desktop формируют артефакты оболочек для локальной отладки их экранов с общим интерфейсом в apps/vscode/dist и apps/desktop/dist.
Для проверки поведения UI в двух поверхностях используется единый код:
npm run start:vscode # собрать сборку VS Code и запустить расширение
npm run start:desktop # собрать Electron-оболочку и запустить еёДополнительно доступны:
npm run start:vscode -- --no-build # запуск без предварительной сборки
npm run start:desktop -- --project <путь-проекта> --no-buildСоздать локальные артефакты для оболочек:
npm run package:shell-artifactsКоманда строит shell-части и кладёт результат npm pack в директорию artifacts/.
Перед упаковкой используется профиль scripts/shell-artifact-profile.json, который фиксирует публичную идентичность VSIX и профиль Electron-билда для локальной проверки.
Дополнительные опции:
# Собрать только VS Code-оболочку (npm pack + VSIX)
npm run package:shell-artifacts -- --no-desktop-pack
# Собрать только Electron-оболочку (npm pack + electron-packager)
npm run package:shell-artifacts -- --no-vscode-pack
# Собрать только VS Code-оболочку
npm run package:shell-artifacts -- --vscode-only
# Собрать только Electron-оболочку
npm run package:shell-artifacts -- --desktop-only
# Пропустить этап сборки, если артефакты уже готовы
npm run package:shell-artifacts -- --no-buildДля локальной упаковки требуется наличие @vscode/vsce и electron-packager в доступной среде npm exec.
Все успешные команды выводят JSON-объект:
{
"ok": true,
"value": "<результат команды>"
}Ошибки выводят JSON-объект:
{
"ok": false,
"error": {
"code": "CLI_USAGE_ERROR",
"message": "..."
}
}Вывод:
stdout— только успешный ответ.stderr— ошибки,fail-ответы и справочнаяusage.
Коды ошибок:
CLI_USAGE_ERROR— неверный формат аргументов.CLI_PARSE_ERROR— ошибка разбора CLI (например,--storeбез пути).CLI_UNKNOWN_COMMAND— неизвестная верхнеуровневая команда.CLI_UNKNOWN_TASK_COMMAND— неизвестная команда в группеtask.CLI_OPERATION_FAILED— сбой доменной операции (create/transition/list/get/report).
Типы ответа (CliSuccess, CliFailure, CliResponse, CliFailureCode) экспортируются из пакета taskpact и могут использоваться для валидации результата в интеграционных сценариях:
import type { CliResponse, CliSuccess, CliFailure, CliFailureCode } from "taskpact";
function isCliSuccess<T>(response: CliResponse<T>): response is CliSuccess<T> {
return response.ok === true;
}
function isCliFailure(response: CliResponse<unknown>): response is CliFailure {
return response.ok === false;
}Пример:
taskpact task create T-123 "Документация архитектуры"
# {
# "ok": true,
# "value": {
# "number": "T-123",
# "title": "Документация архитектуры",
# "state": "Draft",
# "createdAt": "2026-08-17T00:00:00.000Z"
# }
# }