From 129bc8fa7b4cd3f09fbfb56fb19b5f6c28fc01d6 Mon Sep 17 00:00:00 2001 From: Crunchyman-ralph <35776126+Crunchyman-ralph@users.noreply.github.com> Date: Thu, 15 Jan 2026 16:58:36 +0000 Subject: [PATCH 01/20] chore: rc version bump [skip ci] --- .changeset/pre.json | 25 +++++++++++++++++++ CHANGELOG.md | 49 +++++++++++++++++++++++++++++++++++++ apps/extension/package.json | 2 +- package.json | 2 +- 4 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 .changeset/pre.json diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 00000000..b41f36ef --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,25 @@ +{ + "mode": "pre", + "tag": "rc", + "initialVersions": { + "task-master-ai": "0.41.0", + "@tm/cli": "", + "docs": "0.0.16", + "extension": "0.26.0", + "@tm/mcp": "", + "@tm/ai-sdk-provider-grok-cli": "", + "@tm/build-config": "", + "@tm/claude-code-plugin": "0.0.10", + "@tm/bridge": "", + "@tm/core": "", + "@tm/profiles": "" + }, + "changesets": [ + "adopt-modifyjson-pattern", + "fix-file-locking", + "list-blocks-ready-filter", + "loop-error-handling", + "loop-sandbox-optional", + "update-codex-cli-models" + ] +} diff --git a/CHANGELOG.md b/CHANGELOG.md index d3ac2dc8..8bcccb7c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,54 @@ # task-master-ai +## 0.42.0-rc.0 + +### Minor Changes + +- [#1533](https://github.com/eyaltoledano/claude-task-master/pull/1533) [`6c3a92c`](https://github.com/eyaltoledano/claude-task-master/commit/6c3a92c439d4573ff5046e3d251a4a26d85d0deb) Thanks [@bjcoombs](https://github.com/bjcoombs)! - Add --ready and --blocking filters to list command for identifying parallelizable tasks + - Add `--ready` filter to show only tasks with satisfied dependencies (ready to work on) + - Add `--blocking` filter to show only tasks that block other tasks + - Combine `--ready --blocking` to find high-impact tasks (ready AND blocking others) + - Add "Blocks" column to task table showing which tasks depend on each task + - Blocks field included in JSON output for programmatic access + - Add "Ready" column to `tags` command showing count of ready tasks per tag + - Add `--ready` filter to `tags` command to show only tags with available work + - Excludes deferred/blocked tasks from ready count (only actionable statuses) + - Add `--all-tags` option to list ready tasks across all tags (use with `--ready`) + - Tag column shown as first column when using `--all-tags` for easy scanning + +### Patch Changes + +- [#1569](https://github.com/eyaltoledano/claude-task-master/pull/1569) [`4cfde1c`](https://github.com/eyaltoledano/claude-task-master/commit/4cfde1c3d54b94701e0fcfc8dbdedbc3bbaf4339) Thanks [@bjcoombs](https://github.com/bjcoombs)! - Improve concurrency safety by adopting modifyJson pattern in file-storage + - Refactor saveTasks, createTag, deleteTag, renameTag to use modifyJson for atomic read-modify-write operations + - This prevents lost updates when multiple processes concurrently modify tasks.json + - Complements the cross-process file locking added in PR #1566 + +- [#1566](https://github.com/eyaltoledano/claude-task-master/pull/1566) [`3cc6174`](https://github.com/eyaltoledano/claude-task-master/commit/3cc6174b471fc1ea7f12955095d0d35b4dc5904c) Thanks [@bjcoombs](https://github.com/bjcoombs)! - Fix race condition when multiple Claude Code windows write to tasks.json simultaneously + - Add cross-process file locking to prevent concurrent write collisions + - Implement atomic writes using temp file + rename pattern to prevent partial writes + - Re-read file inside lock to get current state, preventing lost updates from stale snapshots + - Add stale lock detection and automatic cleanup (10-second timeout) + - Export `withFileLock` and `withFileLockSync` utilities for use by other modules + + This fix prevents data loss that could occur when multiple Task Master instances (e.g., multiple Claude Code windows) access the same tasks.json file concurrently. + +- [#1576](https://github.com/eyaltoledano/claude-task-master/pull/1576) [`097c8ed`](https://github.com/eyaltoledano/claude-task-master/commit/097c8edcb0ca065218e9b51758ad370ac7475f1a) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Improve loop command error handling and use dangerously-skip-permissions + - Add proper spawn error handling (ENOENT, EACCES) with actionable messages + - Return error info from checkSandboxAuth and runInteractiveAuth instead of silent failures + - Use --dangerously-skip-permissions for unattended loop execution + - Fix null exit code masking issue + +- [#1577](https://github.com/eyaltoledano/claude-task-master/pull/1577) [`e762e4f`](https://github.com/eyaltoledano/claude-task-master/commit/e762e4f64608a77d248ac8ce5eeb218000b51907) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Make Docker sandbox mode opt-in for loop command + - Add `--sandbox` flag to `task-master loop` (default: use plain `claude -p`) + - Preserve progress.txt between runs (append instead of overwrite) + - Display execution mode in loop startup output + +- [#1580](https://github.com/eyaltoledano/claude-task-master/pull/1580) [`940ab58`](https://github.com/eyaltoledano/claude-task-master/commit/940ab587e50cff43c3a2639bbbd210fdd577c3f1) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Update Codex CLI supported models to match current available models + - Remove deprecated models: gpt-5, gpt-5-codex, gpt-5.1 + - Add gpt-5.2-codex as the current default model + - Add gpt-5.1-codex-mini for faster, cheaper option + - Keep gpt-5.1-codex-max and gpt-5.2 + ## 0.41.0 ### Minor Changes diff --git a/apps/extension/package.json b/apps/extension/package.json index 09bf01a0..dd33bdf6 100644 --- a/apps/extension/package.json +++ b/apps/extension/package.json @@ -275,7 +275,7 @@ "tailwindcss": "4.1.11", "typescript": "^5.9.2", "@tm/core": "*", - "task-master-ai": "*" + "task-master-ai": "0.42.0-rc.0" }, "overrides": { "glob@<8": "^10.4.5", diff --git a/package.json b/package.json index 3f36fa4d..6a7fa295 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "task-master-ai", - "version": "0.41.0", + "version": "0.42.0-rc.0", "description": "A task management system for ambitious AI-driven development that doesn't overwhelm and confuse Cursor.", "main": "index.js", "type": "module", From 4b515c60b21bf2de8d90fec991fdd89e44efe668 Mon Sep 17 00:00:00 2001 From: Ben Coombs Date: Wed, 21 Jan 2026 17:46:31 +0000 Subject: [PATCH 02/20] fix: Add missing loadTUI function for no-argument invocation (#1592) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Ben Coombs Fixes #1589 --- .changeset/adopt-modifyjson-pattern.md | 9 ----- .changeset/fix-file-locking.md | 13 ------- .changeset/list-blocks-ready-filter.md | 16 --------- .changeset/loop-error-handling.md | 10 ------ .changeset/loop-sandbox-optional.md | 9 ----- .changeset/update-codex-cli-models.md | 10 ------ CHANGELOG.md | 49 ++++++++++++++++++++++++++ package-lock.json | 4 +-- package.json | 2 +- scripts/modules/commands.js | 15 +++++--- 10 files changed, 63 insertions(+), 74 deletions(-) delete mode 100644 .changeset/adopt-modifyjson-pattern.md delete mode 100644 .changeset/fix-file-locking.md delete mode 100644 .changeset/list-blocks-ready-filter.md delete mode 100644 .changeset/loop-error-handling.md delete mode 100644 .changeset/loop-sandbox-optional.md delete mode 100644 .changeset/update-codex-cli-models.md diff --git a/.changeset/adopt-modifyjson-pattern.md b/.changeset/adopt-modifyjson-pattern.md deleted file mode 100644 index 6cdd4731..00000000 --- a/.changeset/adopt-modifyjson-pattern.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"task-master-ai": patch ---- - -Improve concurrency safety by adopting modifyJson pattern in file-storage - -- Refactor saveTasks, createTag, deleteTag, renameTag to use modifyJson for atomic read-modify-write operations -- This prevents lost updates when multiple processes concurrently modify tasks.json -- Complements the cross-process file locking added in PR #1566 diff --git a/.changeset/fix-file-locking.md b/.changeset/fix-file-locking.md deleted file mode 100644 index 4ffebd13..00000000 --- a/.changeset/fix-file-locking.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -"task-master-ai": patch ---- - -Fix race condition when multiple Claude Code windows write to tasks.json simultaneously - -- Add cross-process file locking to prevent concurrent write collisions -- Implement atomic writes using temp file + rename pattern to prevent partial writes -- Re-read file inside lock to get current state, preventing lost updates from stale snapshots -- Add stale lock detection and automatic cleanup (10-second timeout) -- Export `withFileLock` and `withFileLockSync` utilities for use by other modules - -This fix prevents data loss that could occur when multiple Task Master instances (e.g., multiple Claude Code windows) access the same tasks.json file concurrently. diff --git a/.changeset/list-blocks-ready-filter.md b/.changeset/list-blocks-ready-filter.md deleted file mode 100644 index 03f192d5..00000000 --- a/.changeset/list-blocks-ready-filter.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -"task-master-ai": minor ---- - -Add --ready and --blocking filters to list command for identifying parallelizable tasks - -- Add `--ready` filter to show only tasks with satisfied dependencies (ready to work on) -- Add `--blocking` filter to show only tasks that block other tasks -- Combine `--ready --blocking` to find high-impact tasks (ready AND blocking others) -- Add "Blocks" column to task table showing which tasks depend on each task -- Blocks field included in JSON output for programmatic access -- Add "Ready" column to `tags` command showing count of ready tasks per tag -- Add `--ready` filter to `tags` command to show only tags with available work -- Excludes deferred/blocked tasks from ready count (only actionable statuses) -- Add `--all-tags` option to list ready tasks across all tags (use with `--ready`) -- Tag column shown as first column when using `--all-tags` for easy scanning diff --git a/.changeset/loop-error-handling.md b/.changeset/loop-error-handling.md deleted file mode 100644 index 4f0445b7..00000000 --- a/.changeset/loop-error-handling.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"task-master-ai": "patch" ---- - -Improve loop command error handling and use dangerously-skip-permissions - -- Add proper spawn error handling (ENOENT, EACCES) with actionable messages -- Return error info from checkSandboxAuth and runInteractiveAuth instead of silent failures -- Use --dangerously-skip-permissions for unattended loop execution -- Fix null exit code masking issue diff --git a/.changeset/loop-sandbox-optional.md b/.changeset/loop-sandbox-optional.md deleted file mode 100644 index b1bfe944..00000000 --- a/.changeset/loop-sandbox-optional.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"task-master-ai": patch ---- - -Make Docker sandbox mode opt-in for loop command - -- Add `--sandbox` flag to `task-master loop` (default: use plain `claude -p`) -- Preserve progress.txt between runs (append instead of overwrite) -- Display execution mode in loop startup output diff --git a/.changeset/update-codex-cli-models.md b/.changeset/update-codex-cli-models.md deleted file mode 100644 index 30db424e..00000000 --- a/.changeset/update-codex-cli-models.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"task-master-ai": patch ---- - -Update Codex CLI supported models to match current available models - -- Remove deprecated models: gpt-5, gpt-5-codex, gpt-5.1 -- Add gpt-5.2-codex as the current default model -- Add gpt-5.1-codex-mini for faster, cheaper option -- Keep gpt-5.1-codex-max and gpt-5.2 diff --git a/CHANGELOG.md b/CHANGELOG.md index 8bcccb7c..040ce3ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,54 @@ # task-master-ai +## 0.42.0 + +### Minor Changes + +- [#1533](https://github.com/eyaltoledano/claude-task-master/pull/1533) [`6c3a92c`](https://github.com/eyaltoledano/claude-task-master/commit/6c3a92c439d4573ff5046e3d251a4a26d85d0deb) Thanks [@bjcoombs](https://github.com/bjcoombs)! - Add --ready and --blocking filters to list command for identifying parallelizable tasks + - Add `--ready` filter to show only tasks with satisfied dependencies (ready to work on) + - Add `--blocking` filter to show only tasks that block other tasks + - Combine `--ready --blocking` to find high-impact tasks (ready AND blocking others) + - Add "Blocks" column to task table showing which tasks depend on each task + - Blocks field included in JSON output for programmatic access + - Add "Ready" column to `tags` command showing count of ready tasks per tag + - Add `--ready` filter to `tags` command to show only tags with available work + - Excludes deferred/blocked tasks from ready count (only actionable statuses) + - Add `--all-tags` option to list ready tasks across all tags (use with `--ready`) + - Tag column shown as first column when using `--all-tags` for easy scanning + +### Patch Changes + +- [#1569](https://github.com/eyaltoledano/claude-task-master/pull/1569) [`4cfde1c`](https://github.com/eyaltoledano/claude-task-master/commit/4cfde1c3d54b94701e0fcfc8dbdedbc3bbaf4339) Thanks [@bjcoombs](https://github.com/bjcoombs)! - Improve concurrency safety by adopting modifyJson pattern in file-storage + - Refactor saveTasks, createTag, deleteTag, renameTag to use modifyJson for atomic read-modify-write operations + - This prevents lost updates when multiple processes concurrently modify tasks.json + - Complements the cross-process file locking added in PR #1566 + +- [#1566](https://github.com/eyaltoledano/claude-task-master/pull/1566) [`3cc6174`](https://github.com/eyaltoledano/claude-task-master/commit/3cc6174b471fc1ea7f12955095d0d35b4dc5904c) Thanks [@bjcoombs](https://github.com/bjcoombs)! - Fix race condition when multiple Claude Code windows write to tasks.json simultaneously + - Add cross-process file locking to prevent concurrent write collisions + - Implement atomic writes using temp file + rename pattern to prevent partial writes + - Re-read file inside lock to get current state, preventing lost updates from stale snapshots + - Add stale lock detection and automatic cleanup (10-second timeout) + - Export `withFileLock` and `withFileLockSync` utilities for use by other modules + + This fix prevents data loss that could occur when multiple Task Master instances (e.g., multiple Claude Code windows) access the same tasks.json file concurrently. + +- [#1576](https://github.com/eyaltoledano/claude-task-master/pull/1576) [`097c8ed`](https://github.com/eyaltoledano/claude-task-master/commit/097c8edcb0ca065218e9b51758ad370ac7475f1a) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Improve loop command error handling and use dangerously-skip-permissions + - Add proper spawn error handling (ENOENT, EACCES) with actionable messages + - Return error info from checkSandboxAuth and runInteractiveAuth instead of silent failures + - Use --dangerously-skip-permissions for unattended loop execution + - Fix null exit code masking issue + +- [#1577](https://github.com/eyaltoledano/claude-task-master/pull/1577) [`e762e4f`](https://github.com/eyaltoledano/claude-task-master/commit/e762e4f64608a77d248ac8ce5eeb218000b51907) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Make Docker sandbox mode opt-in for loop command + - Add `--sandbox` flag to `task-master loop` (default: use plain `claude -p`) + - Preserve progress.txt between runs (append instead of overwrite) + - Display execution mode in loop startup output + +- [#1580](https://github.com/eyaltoledano/claude-task-master/pull/1580) [`940ab58`](https://github.com/eyaltoledano/claude-task-master/commit/940ab587e50cff43c3a2639bbbd210fdd577c3f1) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Update Codex CLI supported models to match current available models + - Remove deprecated models: gpt-5, gpt-5-codex, gpt-5.1 + - Add gpt-5.2-codex as the current default model + - Add gpt-5.1-codex-mini for faster, cheaper option + - Keep gpt-5.1-codex-max and gpt-5.2 + ## 0.42.0-rc.0 ### Minor Changes diff --git a/package-lock.json b/package-lock.json index 27ba2d33..12fdde1b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "task-master-ai", - "version": "0.40.1", + "version": "0.42.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "task-master-ai", - "version": "0.40.1", + "version": "0.42.0", "license": "MIT WITH Commons-Clause", "workspaces": [ "apps/*", diff --git a/package.json b/package.json index 6a7fa295..0e827f1c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "task-master-ai", - "version": "0.42.0-rc.0", + "version": "0.42.0", "description": "A task management system for ambitious AI-driven development that doesn't overwhelm and confuse Cursor.", "main": "index.js", "type": "module", diff --git a/scripts/modules/commands.js b/scripts/modules/commands.js index e3ca7061..3474d0a7 100644 --- a/scripts/modules/commands.js +++ b/scripts/modules/commands.js @@ -5249,6 +5249,15 @@ Examples: return programInstance; } +/** + * Load the TUI module (coming soon) + * @returns {Promise} null - TUI not yet available + */ +async function loadTUI() { + // TUI is coming soon - return null for now + return null; +} + /** * Launch the interactive TUI REPL */ @@ -5257,10 +5266,8 @@ async function launchREPL() { const tui = await loadTUI(); if (!tui) { - // Fallback to help if TUI not available - console.log( - chalk.yellow('TUI mode not available. Install @tm/tui to enable.') - ); + // TUI coming soon - show help for now + console.log(chalk.yellow('TUI mode coming soon!')); console.log(chalk.dim('Showing help instead...\n')); if (isConnectedToHamster()) { displayHamsterHelp(); From 6eaa84179e1bc90304fc87631b0eb8fd1bdeec27 Mon Sep 17 00:00:00 2001 From: Utkarsh Kankal Date: Fri, 23 Jan 2026 22:50:25 +0530 Subject: [PATCH 03/20] fix: claude typo (#1604) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- docs/examples/claude-code-usage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/examples/claude-code-usage.md b/docs/examples/claude-code-usage.md index 92349b9a..ff37e2ce 100644 --- a/docs/examples/claude-code-usage.md +++ b/docs/examples/claude-code-usage.md @@ -131,7 +131,7 @@ The Claude Code settings can be specified globally in the `claudeCode` section o } ``` -- For a full list of Cluaude Code settings, see the [Claude Code Settings documentation](https://docs.anthropic.com/en/docs/claude-code/settings). +- For a full list of Claude Code settings, see the [Claude Code Settings documentation](https://docs.anthropic.com/en/docs/claude-code/settings). - For a full list of AI powered command names, see this file: `src/constants/commands.js` ### Why These Settings Matter From e689fcf2a20cada4a19ee31fed723b6f35f2c13d Mon Sep 17 00:00:00 2001 From: Bryan Thompson Date: Fri, 23 Jan 2026 11:20:59 -0600 Subject: [PATCH 04/20] feat: Add MCPB bundle for Claude Desktop installation (#1599) Co-authored-by: triepod-ai <199543909+triepod-ai@users.noreply.github.com> --- .changeset/add-mcpb-bundle.md | 10 ++++ .mcpbignore | 31 ++++++++++++ claude-task-master-0.42.0.mcpb | Bin 0 -> 7854 bytes icon.png | Bin 0 -> 5663 bytes manifest.json | 89 +++++++++++++++++++++++++++++++++ 5 files changed, 130 insertions(+) create mode 100644 .changeset/add-mcpb-bundle.md create mode 100644 .mcpbignore create mode 100644 claude-task-master-0.42.0.mcpb create mode 100644 icon.png create mode 100644 manifest.json diff --git a/.changeset/add-mcpb-bundle.md b/.changeset/add-mcpb-bundle.md new file mode 100644 index 00000000..fb3d8974 --- /dev/null +++ b/.changeset/add-mcpb-bundle.md @@ -0,0 +1,10 @@ +--- +"task-master-ai": minor +--- + +Add MCPB bundle for single-click Claude Desktop installation + +- Added `manifest.json` for MCP Bundle (MCPB) specification v0.3 +- Added `.mcpbignore` to exclude development files from bundle +- Added `icon.png` (512x512) for Claude Desktop display +- Enables users to install Task Master MCP server directly in Claude Desktop without manual configuration diff --git a/.mcpbignore b/.mcpbignore new file mode 100644 index 00000000..451725c1 --- /dev/null +++ b/.mcpbignore @@ -0,0 +1,31 @@ +# Exclude everything except manifest and icon +# This is an npx-based bundle - no source code needed + +# All source code +*.js +*.ts +*.mjs +*.cjs +*.jsx +*.tsx +*.json +!manifest.json + +# All directories +*/ + +# All other files +*.md +*.txt +*.yml +*.yaml +*.lock +*.log +.git* +.env* +.eslint* +.prettier* +.editorconfig +LICENSE* +Makefile +Dockerfile diff --git a/claude-task-master-0.42.0.mcpb b/claude-task-master-0.42.0.mcpb new file mode 100644 index 0000000000000000000000000000000000000000..166b7d0546c99d57e194b99c3f141c1e5ca9d1d4 GIT binary patch literal 7854 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 CTZOj( literal 0 HcmV?d00001 diff --git a/icon.png b/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..68df68e2c318c9ce7ebdc015687e007aea6dafaf GIT binary patch literal 5663 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 literal 0 HcmV?d00001 diff --git a/manifest.json b/manifest.json new file mode 100644 index 00000000..61e890f8 --- /dev/null +++ b/manifest.json @@ -0,0 +1,89 @@ +{ + "manifest_version": "0.3", + "name": "Claude Task Master", + "version": "0.42.0", + "description": "AI-powered task management for structured development workflows. Parse PRDs, generate tasks with AI, track dependencies, and manage complexity.", + "author": { + "name": "Eyal Toledano", + "url": "https://github.com/eyaltoledano" + }, + "repository": { + "type": "git", + "url": "https://github.com/eyaltoledano/claude-task-master" + }, + "icon": "icon.png", + "server": { + "type": "node", + "entry_point": "dist/mcp-server.js", + "mcp_config": { + "command": "npx", + "args": ["-y", "--package=task-master-ai", "task-master-mcp"], + "env": { + "ANTHROPIC_API_KEY": "${user_config.anthropic_api_key}", + "PERPLEXITY_API_KEY": "${user_config.perplexity_api_key}", + "OPENAI_API_KEY": "${user_config.openai_api_key}", + "TASK_MASTER_TOOLS": "${user_config.task_master_tools}" + } + } + }, + "user_config": { + "anthropic_api_key": { + "type": "string", + "title": "Anthropic API Key", + "description": "API key for Claude models - get from console.anthropic.com (recommended)", + "required": false, + "sensitive": true + }, + "perplexity_api_key": { + "type": "string", + "title": "Perplexity API Key", + "description": "API key for research features - get from perplexity.ai (optional)", + "required": false, + "sensitive": true + }, + "openai_api_key": { + "type": "string", + "title": "OpenAI API Key", + "description": "API key for GPT models - get from platform.openai.com (optional)", + "required": false, + "sensitive": true + }, + "task_master_tools": { + "type": "string", + "title": "Tool Set", + "description": "Which tools to enable: core (7 tools), standard (15 tools), or all (44 tools)", + "required": false, + "default": "core" + } + }, + "tools": [ + { + "name": "get_tasks", + "description": "Get all tasks with optional status filter" + }, + { + "name": "next_task", + "description": "Get the next recommended task to work on" + }, + { + "name": "get_task", + "description": "Get details for a specific task by ID" + }, + { + "name": "set_task_status", + "description": "Set the status of one or more tasks or subtasks" + }, + { + "name": "update_subtask", + "description": "Update a subtask with implementation details" + }, + { + "name": "parse_prd", + "description": "Parse a Product Requirements Document to generate initial tasks" + }, + { + "name": "expand_task", + "description": "Expand a task into subtasks for detailed implementation" + } + ] +} From 0d628ca9514f22607c0a6495b701e4cde743b45c Mon Sep 17 00:00:00 2001 From: Ben Coombs Date: Sun, 25 Jan 2026 10:32:23 +0000 Subject: [PATCH 05/20] feat: Add modifyJSON for atomic operations in legacy utils.js (#1587) Co-authored-by: Ben Coombs fix for #1585 (part 2: legacy utils.js pattern) --- .changeset/add-modifyjson-utils.md | 5 ++++ packages/tm-core/src/index.ts | 3 +++ scripts/modules/utils.js | 39 ++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+) create mode 100644 .changeset/add-modifyjson-utils.md diff --git a/.changeset/add-modifyjson-utils.md b/.changeset/add-modifyjson-utils.md new file mode 100644 index 00000000..01721485 --- /dev/null +++ b/.changeset/add-modifyjson-utils.md @@ -0,0 +1,5 @@ +--- +"task-master-ai": patch +--- + +Add modifyJSON function for safer file updates diff --git a/packages/tm-core/src/index.ts b/packages/tm-core/src/index.ts index 14636e6d..4314a491 100644 --- a/packages/tm-core/src/index.ts +++ b/packages/tm-core/src/index.ts @@ -49,6 +49,9 @@ export type { // Storage adapters - FileStorage for direct local file access export { FileStorage } from './modules/storage/index.js'; +// File operations - for atomic file modifications +export { FileOperations } from './modules/storage/adapters/file-storage/file-operations.js'; + // Constants export * from './common/constants/index.js'; diff --git a/scripts/modules/utils.js b/scripts/modules/utils.js index 5ef1f814..51365a4f 100644 --- a/scripts/modules/utils.js +++ b/scripts/modules/utils.js @@ -14,6 +14,8 @@ import { } from '../../src/constants/paths.js'; // Import specific config getters needed here import { getDebugFlag, getLogLevel } from './config-manager.js'; +// Import FileOperations from tm-core for atomic file modifications +import { FileOperations } from '@tm/core'; import * as gitUtils from './utils/git-utils.js'; // Global silent mode flag @@ -973,9 +975,45 @@ function markMigrationForNotice(tasksJsonPath) { } } +// Shared FileOperations instance for modifyJSON +let _fileOps = null; + +/** + * Gets or creates the shared FileOperations instance + * @returns {FileOperations} The shared FileOperations instance + */ +function getFileOps() { + if (!_fileOps) { + _fileOps = new FileOperations(); + } + return _fileOps; +} + +/** + * Atomically modifies a JSON file using a callback pattern. + * This is the safe way to update JSON files - it reads, modifies, and writes + * all within a single lock, preventing race conditions. + * + * Uses FileOperations from @tm/core for proper cross-process locking. + * + * @param {string} filepath - Path to the JSON file + * @param {Function} modifier - Async callback that receives current data and returns modified data. + * Signature: (currentData: Object) => Object | Promise + * @returns {Promise} + */ +async function modifyJSON(filepath, modifier) { + const fileOps = getFileOps(); + await fileOps.modifyJson(filepath, modifier); +} + /** * Writes and saves a JSON file. Handles tagged task lists properly. * Uses cross-process file locking and atomic writes to prevent race conditions. + * + * @deprecated For new code, prefer modifyJSON() which provides atomic read-modify-write. + * This function is maintained for backwards compatibility but callers should migrate + * to modifyJSON() to prevent race conditions from stale reads. + * * @param {string} filepath - Path to the JSON file * @param {Object} data - Data to write (can be resolved tag data or raw tagged data) * @param {string} projectRoot - Optional project root for tag context @@ -1921,6 +1959,7 @@ export { log, readJSON, writeJSON, + modifyJSON, sanitizePrompt, readComplexityReport, findTaskInComplexityReport, From 28c491cca118a27157ff654605e74a5314b616bd Mon Sep 17 00:00:00 2001 From: Ralph Khreish <35776126+Crunchyman-ralph@users.noreply.github.com> Date: Sun, 25 Jan 2026 11:41:27 +0100 Subject: [PATCH 06/20] chore: update versioning in manifest and package files, add sync script (#1606) --- .github/scripts/sync-manifest-version.mjs | 93 +++ apps/extension/package.json | 2 +- claude-task-master-0.42.0.mcpb | Bin 7854 -> 0 bytes manifest.json | 2 +- package-lock.json | 890 ++++++++++++++++++++++ package.json | 7 +- taskmaster.mcpb | Bin 0 -> 305833 bytes 7 files changed, 989 insertions(+), 5 deletions(-) create mode 100644 .github/scripts/sync-manifest-version.mjs delete mode 100644 claude-task-master-0.42.0.mcpb create mode 100644 taskmaster.mcpb diff --git a/.github/scripts/sync-manifest-version.mjs b/.github/scripts/sync-manifest-version.mjs new file mode 100644 index 00000000..00579140 --- /dev/null +++ b/.github/scripts/sync-manifest-version.mjs @@ -0,0 +1,93 @@ +#!/usr/bin/env node +import { spawnSync } from 'node:child_process'; +import { + existsSync, + readFileSync, + readdirSync, + unlinkSync, + writeFileSync +} from 'node:fs'; +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { findRootDir } from './utils.mjs'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +const rootDir = findRootDir(__dirname); + +// Read the root package.json version +const pkgPath = join(rootDir, 'package.json'); +const manifestPath = join(rootDir, 'manifest.json'); + +let pkg; +try { + pkg = JSON.parse(readFileSync(pkgPath, 'utf8')); +} catch (error) { + console.error('Failed to read package.json:', error.message); + process.exit(1); +} + +let manifest; +try { + manifest = JSON.parse(readFileSync(manifestPath, 'utf8')); +} catch (error) { + console.error('Failed to read manifest.json:', error.message); + process.exit(1); +} + +// Sync manifest version if different +if (manifest.version !== pkg.version) { + console.log( + `Syncing manifest.json version: ${manifest.version} → ${pkg.version}` + ); + manifest.version = pkg.version; + + try { + writeFileSync( + manifestPath, + JSON.stringify(manifest, null, '\t') + '\n', + 'utf8' + ); + console.log(`✅ Updated manifest.json version to ${pkg.version}`); + } catch (error) { + console.error('Failed to write manifest.json:', error.message); + process.exit(1); + } +} else { + console.log( + `✓ manifest.json version already matches package.json (${pkg.version})` + ); +} + +// Remove old .mcpb files +const files = readdirSync(rootDir); +for (const file of files) { + if (file.endsWith('.mcpb')) { + const filePath = join(rootDir, file); + console.log(`Removing old bundle: ${file}`); + unlinkSync(filePath); + } +} + +// Generate new .mcpb bundle +const bundleName = 'taskmaster.mcpb'; +console.log(`Generating ${bundleName} for version ${pkg.version}...`); +const result = spawnSync('npx', ['mcpb', 'pack', '.', bundleName], { + cwd: rootDir, + encoding: 'utf8', + stdio: 'inherit' +}); + +if (result.status !== 0) { + console.error('Failed to generate MCPB bundle'); + process.exit(1); +} + +// Verify the new bundle was created +if (existsSync(join(rootDir, bundleName))) { + console.log(`✅ Generated ${bundleName}`); +} else { + console.error(`Expected bundle ${bundleName} was not created`); + process.exit(1); +} diff --git a/apps/extension/package.json b/apps/extension/package.json index dd33bdf6..09bf01a0 100644 --- a/apps/extension/package.json +++ b/apps/extension/package.json @@ -275,7 +275,7 @@ "tailwindcss": "4.1.11", "typescript": "^5.9.2", "@tm/core": "*", - "task-master-ai": "0.42.0-rc.0" + "task-master-ai": "*" }, "overrides": { "glob@<8": "^10.4.5", diff --git a/claude-task-master-0.42.0.mcpb b/claude-task-master-0.42.0.mcpb deleted file mode 100644 index 166b7d0546c99d57e194b99c3f141c1e5ca9d1d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7854 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 CTZOj( diff --git a/manifest.json b/manifest.json index 61e890f8..daa622f0 100644 --- a/manifest.json +++ b/manifest.json @@ -17,7 +17,7 @@ "entry_point": "dist/mcp-server.js", "mcp_config": { "command": "npx", - "args": ["-y", "--package=task-master-ai", "task-master-mcp"], + "args": ["-y", "task-master-ai"], "env": { "ANTHROPIC_API_KEY": "${user_config.anthropic_api_key}", "PERPLEXITY_API_KEY": "${user_config.perplexity_api_key}", diff --git a/package-lock.json b/package-lock.json index 12fdde1b..8cedca5a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -82,6 +82,7 @@ "task-master-mcp": "dist/mcp-server.js" }, "devDependencies": { + "@anthropic-ai/mcpb": "^2.1.2", "@biomejs/biome": "^1.9.4", "@changesets/changelog-github": "^0.5.1", "@changesets/cli": "^2.28.1", @@ -1950,6 +1951,429 @@ "url": "https://opencollective.com/express" } }, + "apps/extension/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "apps/extension/node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "apps/extension/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "apps/extension/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "apps/extension/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "apps/extension/node_modules/task-master-ai": { + "version": "0.42.0-rc.0", + "resolved": "https://registry.npmjs.org/task-master-ai/-/task-master-ai-0.42.0-rc.0.tgz", + "integrity": "sha512-CYHRFumTfCnFkmYPLjwp9V2+wTDmk/fSTEexbOIu4FBFgRxzeqMICVQYsaDukw1tYwBXh7MO1VTwD8Dp1Lnpvg==", + "dev": true, + "license": "MIT WITH Commons-Clause", + "workspaces": [ + "apps/*", + "packages/*", + "." + ], + "dependencies": { + "@ai-sdk/amazon-bedrock": "^3.0.23", + "@ai-sdk/anthropic": "^2.0.18", + "@ai-sdk/azure": "^2.0.89", + "@ai-sdk/google": "^2.0.16", + "@ai-sdk/google-vertex": "^3.0.86", + "@ai-sdk/groq": "^2.0.21", + "@ai-sdk/mistral": "^2.0.16", + "@ai-sdk/openai": "^2.0.34", + "@ai-sdk/openai-compatible": "^1.0.25", + "@ai-sdk/perplexity": "^2.0.10", + "@ai-sdk/provider": "^2.0.0", + "@ai-sdk/provider-utils": "^3.0.10", + "@ai-sdk/xai": "^2.0.22", + "@aws-sdk/credential-providers": "^3.895.0", + "@inquirer/search": "^3.0.15", + "@openrouter/ai-sdk-provider": "^1.2.0", + "@sentry/node": "^10.27.0", + "@streamparser/json": "^0.0.22", + "@supabase/supabase-js": "^2.57.4", + "@types/turndown": "^5.0.6", + "ai": "^5.0.51", + "ai-sdk-provider-claude-code": "^2.2.4", + "ai-sdk-provider-codex-cli": "^0.7.0", + "ai-sdk-provider-gemini-cli": "^1.4.0", + "ajv": "^8.17.1", + "ajv-formats": "^3.0.1", + "boxen": "^8.0.1", + "chalk": "5.6.2", + "cli-highlight": "^2.1.11", + "cli-progress": "^3.12.0", + "cli-table3": "^0.6.5", + "commander": "^12.1.0", + "cors": "^2.8.5", + "date-fns": "^4.1.0", + "dotenv": "^16.6.1", + "express": "^4.21.2", + "fastmcp": "^3.23.1", + "figlet": "^1.8.0", + "fs-extra": "^11.3.0", + "fuse.js": "^7.1.0", + "gpt-tokens": "^1.3.14", + "gradient-string": "^3.0.0", + "helmet": "^8.1.0", + "inquirer": "^12.5.0", + "jsonc-parser": "^3.3.1", + "jsonrepair": "^3.13.0", + "jsonwebtoken": "^9.0.2", + "lru-cache": "^10.2.0", + "marked": "^15.0.12", + "marked-terminal": "^7.3.0", + "ollama-ai-provider-v2": "^1.3.1", + "open": "^10.2.0", + "ora": "^8.2.0", + "proper-lockfile": "^4.1.2", + "simple-git": "^3.28.0", + "steno": "^4.0.2", + "terminal-link": "^5.0.0", + "turndown": "^7.2.2", + "undici": "^7.16.0", + "uuid": "^11.1.0", + "zod": "^4.1.12" + }, + "bin": { + "task-master": "dist/task-master.js", + "task-master-ai": "dist/mcp-server.js", + "task-master-mcp": "dist/mcp-server.js" + }, + "engines": { + "node": ">=20.0.0" + }, + "optionalDependencies": { + "@anthropic-ai/claude-code": "^2.0.59", + "@biomejs/cli-linux-x64": "^1.9.4" + } + }, + "apps/extension/node_modules/task-master-ai/node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "apps/extension/node_modules/task-master-ai/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "apps/extension/node_modules/task-master-ai/node_modules/body-parser": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", + "type-is": "~1.6.18", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "apps/extension/node_modules/task-master-ai/node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "apps/extension/node_modules/task-master-ai/node_modules/cookie-signature": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", + "dev": true, + "license": "MIT" + }, + "apps/extension/node_modules/task-master-ai/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "apps/extension/node_modules/task-master-ai/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "apps/extension/node_modules/task-master-ai/node_modules/express": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", + "content-type": "~1.0.4", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "~0.1.12", + "proxy-addr": "~2.0.7", + "qs": "~6.14.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "~0.19.0", + "serve-static": "~1.16.2", + "setprototypeof": "1.2.0", + "statuses": "~2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "apps/extension/node_modules/task-master-ai/node_modules/finalhandler": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "statuses": "~2.0.2", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "apps/extension/node_modules/task-master-ai/node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "apps/extension/node_modules/task-master-ai/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "apps/extension/node_modules/task-master-ai/node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "apps/extension/node_modules/task-master-ai/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "apps/extension/node_modules/task-master-ai/node_modules/raw-body": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "apps/extension/node_modules/task-master-ai/node_modules/send": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.4.1", + "range-parser": "~1.2.1", + "statuses": "~2.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "apps/extension/node_modules/task-master-ai/node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "~0.19.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "apps/extension/node_modules/task-master-ai/node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "apps/extension/node_modules/task-master-ai/node_modules/zod": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", + "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, "apps/extension/node_modules/undici-types": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", @@ -2431,6 +2855,308 @@ "@img/sharp-win32-x64": "^0.33.5" } }, + "node_modules/@anthropic-ai/mcpb": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@anthropic-ai/mcpb/-/mcpb-2.1.2.tgz", + "integrity": "sha512-goRbBC8ySo7SWb7tRzr+tL6FxDc4JPTRCdgfD2omba7freofvjq5rom1lBnYHZHo6Mizs1jAHJeN53aZbDoy8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/prompts": "^6.0.1", + "commander": "^13.1.0", + "fflate": "^0.8.2", + "galactus": "^1.0.0", + "ignore": "^7.0.5", + "node-forge": "^1.3.2", + "pretty-bytes": "^5.6.0", + "zod": "^3.25.67", + "zod-to-json-schema": "^3.24.6" + }, + "bin": { + "mcpb": "dist/cli/cli.js" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/@inquirer/checkbox": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-3.0.1.tgz", + "integrity": "sha512-0hm2nrToWUdD6/UHnel/UKGdk1//ke5zGUpHIvk5ZWmaKezlGxZkOJXNSWsdxO/rEqTkbB3lNC2J6nBElV2aAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.2.1", + "@inquirer/figures": "^1.0.6", + "@inquirer/type": "^2.0.0", + "ansi-escapes": "^4.3.2", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/@inquirer/confirm": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-4.0.1.tgz", + "integrity": "sha512-46yL28o2NJ9doViqOy0VDcoTzng7rAb6yPQKU7VDLqkmbCaH4JqK4yk4XqlzNWy9PVC5pG1ZUXPBQv+VqnYs2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/@inquirer/core": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-9.2.1.tgz", + "integrity": "sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/figures": "^1.0.6", + "@inquirer/type": "^2.0.0", + "@types/mute-stream": "^0.0.4", + "@types/node": "^22.5.5", + "@types/wrap-ansi": "^3.0.0", + "ansi-escapes": "^4.3.2", + "cli-width": "^4.1.0", + "mute-stream": "^1.0.0", + "signal-exit": "^4.1.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/@inquirer/editor": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-3.0.1.tgz", + "integrity": "sha512-VA96GPFaSOVudjKFraokEEmUQg/Lub6OXvbIEZU1SDCmBzRkHGhxoFAVaF30nyiB4m5cEbDgiI2QRacXZ2hw9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0", + "external-editor": "^3.1.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/@inquirer/expand": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-3.0.1.tgz", + "integrity": "sha512-ToG8d6RIbnVpbdPdiN7BCxZGiHOTomOX94C2FaT5KOHupV40tKEDozp12res6cMIfRKrXLJyexAZhWVHgbALSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/@inquirer/input": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-3.0.1.tgz", + "integrity": "sha512-BDuPBmpvi8eMCxqC5iacloWqv+5tQSJlUafYWUe31ow1BVXjW2a5qe3dh4X/Z25Wp22RwvcaLCc2siHobEOfzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/@inquirer/number": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-2.0.1.tgz", + "integrity": "sha512-QpR8jPhRjSmlr/mD2cw3IR8HRO7lSVOnqUvQa8scv1Lsr3xoAMMworcYW3J13z3ppjBFBD2ef1Ci6AE5Qn8goQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/@inquirer/password": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-3.0.1.tgz", + "integrity": "sha512-haoeEPUisD1NeE2IanLOiFr4wcTXGWrBOyAyPZi1FfLJuXOzNmxCJPgUrGYKVh+Y8hfGJenIfz5Wb/DkE9KkMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0", + "ansi-escapes": "^4.3.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/@inquirer/prompts": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-6.0.1.tgz", + "integrity": "sha512-yl43JD/86CIj3Mz5mvvLJqAOfIup7ncxfJ0Btnl0/v5TouVUyeEdcpknfgc+yMevS/48oH9WAkkw93m7otLb/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/checkbox": "^3.0.1", + "@inquirer/confirm": "^4.0.1", + "@inquirer/editor": "^3.0.1", + "@inquirer/expand": "^3.0.1", + "@inquirer/input": "^3.0.1", + "@inquirer/number": "^2.0.1", + "@inquirer/password": "^3.0.1", + "@inquirer/rawlist": "^3.0.1", + "@inquirer/search": "^2.0.1", + "@inquirer/select": "^3.0.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/@inquirer/rawlist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-3.0.1.tgz", + "integrity": "sha512-VgRtFIwZInUzTiPLSfDXK5jLrnpkuSOh1ctfaoygKAdPqjcjKYmGh6sCY1pb0aGnCGsmhUxoqLDUAU0ud+lGXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/@inquirer/search": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-2.0.1.tgz", + "integrity": "sha512-r5hBKZk3g5MkIzLVoSgE4evypGqtOannnB3PKTG9NRZxyFRKcfzrdxXXPcoJQsxJPzvdSU2Rn7pB7lw0GCmGAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.2.1", + "@inquirer/figures": "^1.0.6", + "@inquirer/type": "^2.0.0", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/@inquirer/select": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-3.0.1.tgz", + "integrity": "sha512-lUDGUxPhdWMkN/fHy1Lk7pF3nK1fh/gqeyWXmctefhxLYxlDsc7vsPBEpxrfVGDsVdyYJsiJoD4bJ1b623cV1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.2.1", + "@inquirer/figures": "^1.0.6", + "@inquirer/type": "^2.0.0", + "ansi-escapes": "^4.3.2", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/@inquirer/type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-2.0.0.tgz", + "integrity": "sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==", + "dev": true, + "license": "MIT", + "dependencies": { + "mute-stream": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/@types/node": { + "version": "22.19.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.7.tgz", + "integrity": "sha512-MciR4AKGHWl7xwxkBa6xUGxQJ4VBOmPTF7sL+iGzuahOFaO0jHCsuEfS80pan1ef4gWId1oWOweIhrDEYLuaOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/commander": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/mute-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", + "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@anthropic-ai/mcpb/node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, "node_modules/@apm-js-collab/code-transformer": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/@apm-js-collab/code-transformer/-/code-transformer-0.8.2.tgz", @@ -13654,6 +14380,16 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/mute-stream": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@types/mute-stream/-/mute-stream-0.0.4.tgz", + "integrity": "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/mysql": { "version": "2.15.27", "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.27.tgz", @@ -13866,6 +14602,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/wrap-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz", + "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/ws": { "version": "8.18.1", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", @@ -19640,6 +20383,54 @@ "resolved": "apps/extension", "link": true }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "license": "MIT", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/external-editor/node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true, + "license": "MIT" + }, + "node_modules/external-editor/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/external-editor/node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", @@ -20072,6 +20863,13 @@ } } }, + "node_modules/fflate": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", + "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", + "dev": true, + "license": "MIT" + }, "node_modules/figlet": { "version": "1.9.4", "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.9.4.tgz", @@ -20228,6 +21026,35 @@ "flat": "cli.js" } }, + "node_modules/flora-colossus": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/flora-colossus/-/flora-colossus-2.0.0.tgz", + "integrity": "sha512-dz4HxH6pOvbUzZpZ/yXhafjbR2I8cenK5xL0KtBFb7U2ADsR+OwXifnxZjij/pZWF775uSCMzWVd+jDik2H2IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "fs-extra": "^10.1.0" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/flora-colossus/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/follow-redirects": { "version": "1.15.11", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", @@ -20560,6 +21387,36 @@ "integrity": "sha512-Tt4kuxLXFKHy8KT40zwsUPUkg1CrsgY25FxA2U/j/0WgEDCk3ddc/zLTCCcbSHX9FcKtLuVaDGtGE/STWC+j3Q==", "license": "BSD-3-Clause" }, + "node_modules/galactus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/galactus/-/galactus-1.0.0.tgz", + "integrity": "sha512-R1fam6D4CyKQGNlvJne4dkNF+PvUUl7TAJInvTGa9fti9qAv95quQz29GXapA4d8Ec266mJJxFVh82M4GIIGDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "flora-colossus": "^2.0.0", + "fs-extra": "^10.1.0" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/galactus/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/gaxios": { "version": "6.7.1", "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz", @@ -28110,6 +28967,16 @@ } } }, + "node_modules/node-forge": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.3.tgz", + "integrity": "sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==", + "dev": true, + "license": "(BSD-3-Clause OR GPL-2.0)", + "engines": { + "node": ">= 6.13.0" + } + }, "node_modules/node-gyp-build": { "version": "4.8.4", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", @@ -28668,6 +29535,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/outdent": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/outdent/-/outdent-0.5.0.tgz", @@ -29578,6 +30455,19 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", diff --git a/package.json b/package.json index 0e827f1c..9231e235 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "postpack": "chmod +x dist/task-master.js dist/mcp-server.js", "changeset": "changeset", "changeset:validate": "node .github/scripts/validate-changesets.mjs", - "version": "changeset version", + "version": "changeset version && node ./.github/scripts/sync-manifest-version.mjs && npm i --package-lock-only", "release": "node ./.github/scripts/release.mjs", "publish-packages": "turbo run build lint test && changeset version && changeset publish", "inspector": "npx @modelcontextprotocol/inspector node dist/mcp-server.js", @@ -114,14 +114,14 @@ "ollama-ai-provider-v2": "^1.3.1", "open": "^10.2.0", "ora": "^8.2.0", + "proper-lockfile": "^4.1.2", "simple-git": "^3.28.0", "steno": "^4.0.2", "terminal-link": "^5.0.0", "turndown": "^7.2.2", "undici": "^7.16.0", "uuid": "^11.1.0", - "zod": "^4.1.12", - "proper-lockfile": "^4.1.2" + "zod": "^4.1.12" }, "optionalDependencies": { "@anthropic-ai/claude-code": "^2.0.59", @@ -151,6 +151,7 @@ "whatwg-url": "^11.0.0" }, "devDependencies": { + "@anthropic-ai/mcpb": "^2.1.2", "@biomejs/biome": "^1.9.4", "@changesets/changelog-github": "^0.5.1", "@changesets/cli": "^2.28.1", diff --git a/taskmaster.mcpb b/taskmaster.mcpb new file mode 100644 index 0000000000000000000000000000000000000000..dadd0c70da47b2cad6e123591082703ff4315ba5 GIT binary patch literal 305833 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

{YL=9zXnB*8XLd72L|wWCrZfL)ACWrX|mrl_g0y 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

}b9%TB1qn*QpqhtB3 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

hZP&wek{pMACpwT^7U3LHqwEHP4|(&P8%3U z5^R>v$#CTRJNFO0+7w_RwGA|)JY8lZj@B#}c)vtqvPWTqs9HOTdV0(u(1dmh@ybZO z5?b|nwbjJ(9P|gtONH2(Y;Mv+nF!Os?t^1G8^Qme3%x-h59zYwvreZiIQkyDwi2!4 zv3s>C+QglBcsH6&%Jy@WEx_Q3+%E{)VrFG^%sQP}ojG+D%xZ+O8?)7FV|JRJ)uJ2W zV$X_hRD)Jq-kL|*uo)uW2y%O-CbwtBmbeV`hXy+Q{H;DGCY3%P<8!MM|z4By1=5_NQc-05sghDYl62HyWk{r*b+#dLjxB|6GyEVhu} zDVF{tr@^9B3-ygU+$gJh@d(@DX~a@H`nT=Lyy?_}i1u}>Jmv^hCP3r%#KL1*uZzYY z+^n8IGkRRHyT-z9E<3Wz&dn^(+{*G~BlF&&!? zn(>>q9r8EQzs$l&t9Jh8@|B*~_ysJvImIjw(#K5l{8yahBjb~&`593w)TB-2TMY^) zQ;EvyH77U<5nw7^)gTUf&dz0;qAPnGPbOTZA3(%Pu4`(j4B8%tgzh4icGQqpHfmyX zA3c;kHd>QCHfqQoQ^{(hcJ94V1NWXum6z6*UoIE@QcP)U;9qGc>=K85D5Az^5Yixu zSh7A4lSR>}fYX>okK54FrsmMD*09&bbzhb>vmRbGP`dJ-Ux0k4O^1{rDezj>zeqIjjk9o@{ zh1}mTKFLq>GqzSBpVTI>^sAFORt6PmNo*h0dPX*COotd2d%8crQ|DF|Q=dlFfRYql z${YY4qH>U#3ni;BlpLmE);JCGhy36XNE9&*t%obqa1`Wn8s>T$*8SHb)`#;#QM-X2 z-cww?58`%_7X@VHi^qOe4!GsB#C_LxjqoASB46zLk(q%0){G{ADxg3F z$smMHXv)urpEjgtWJu5VvG(bj)*0~Wb2t(`%9GDo;&nRwG&!q6eZnW#vB zBPj#UvfzE}7V0e8@+6C90@^gIedb$ZPOykR2z#Z)37eupcABIax2{7d0z@5-0(;C0 zuoW8+n;=b!Xo?%SPY}1MTtny!8evB5E?*Rv{#L(lXVh+$5aJ|*a7NW29Nbn^`j^2Q z7-K@YFOY6yi}*}@9F6X6Mr$ChPB0J!hL%Nk3a^B`jUjbc2O`+!!DshTg{R1+rcuVB zA+FKCY$Gf)n%5^O$SOb5O7Gnf&(qlwRpxu>20z5eYKsn5Jx)o>eq2gJ>^V$FNKK^p zu$j#+mn+9ZjjcBcMl5^uP)9h_j}19`{D9P$#D^POzT5O{R)3al^f9DJ2hb245t_1R zYOF?Cn&({*8#cwRJtW!MA))m$u8azJjA!wv$U!9^*aC6AyRc$ekdZBGD^1vj_&uR! zvwNckN=!`sm=#fmIqOq&vS8*qgiuI;$;UT5NxSMBVOf(nKQ>4l3jvUvJI3A`gZqRl z8bDh2anqtlZQGB5vF)@tdk_ZiQD+x{WEWRrBy(%0D$1uiQdNEWG$L!Mxv4bOWuvVc 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

t*@12i+wek{C2 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 V5dU{#pa4*S;_psem;GnH{tw7PsHp$| literal 0 HcmV?d00001 From efedc85cb1110a75748f3df0e530f3c9e27d2155 Mon Sep 17 00:00:00 2001 From: Ralph Khreish <35776126+Crunchyman-ralph@users.noreply.github.com> Date: Sun, 25 Jan 2026 11:50:07 +0100 Subject: [PATCH 07/20] feat(loop): add streaming output mode with --stream flag (#1605) --- .changeset/cuddly-wings-drop.md | 9 + apps/cli/src/commands/loop.command.spec.ts | 3 + apps/cli/src/commands/loop.command.ts | 64 ++- packages/tm-core/src/index.ts | 3 +- packages/tm-core/src/modules/loop/index.ts | 3 +- .../tm-core/src/modules/loop/loop-domain.ts | 6 +- .../__snapshots__/presets.spec.ts.snap | 10 +- .../src/modules/loop/presets/default.ts | 4 +- .../src/modules/loop/presets/duplication.ts | 4 +- .../src/modules/loop/presets/entropy.ts | 2 +- .../src/modules/loop/presets/linting.ts | 4 +- .../src/modules/loop/presets/test-coverage.ts | 4 +- .../loop/services/loop.service.spec.ts | 7 +- .../src/modules/loop/services/loop.service.ts | 425 +++++++++++++++--- packages/tm-core/src/modules/loop/types.ts | 71 +++ tests/setup.js | 13 + 16 files changed, 554 insertions(+), 78 deletions(-) create mode 100644 .changeset/cuddly-wings-drop.md diff --git a/.changeset/cuddly-wings-drop.md b/.changeset/cuddly-wings-drop.md new file mode 100644 index 00000000..d14f2a61 --- /dev/null +++ b/.changeset/cuddly-wings-drop.md @@ -0,0 +1,9 @@ +--- +"task-master-ai": minor +--- + +Add verbose output mode to loop command with `--verbose` flag + +- New `-v, --verbose` flag shows Claude's work in real-time (thinking, tool calls) rather than waiting until the iteration completes +- New `--no-output` flag excludes full Claude output from iteration results to save memory +- Improved error handling with proper validation for incompatible options (verbose + sandbox) diff --git a/apps/cli/src/commands/loop.command.spec.ts b/apps/cli/src/commands/loop.command.spec.ts index 45702506..4cd9817a 100644 --- a/apps/cli/src/commands/loop.command.spec.ts +++ b/apps/cli/src/commands/loop.command.spec.ts @@ -91,6 +91,9 @@ describe('LoopCommand', () => { getStorageType: vi.fn().mockReturnValue('local'), getNext: vi.fn().mockResolvedValue({ id: '1', title: 'Test Task' }), getCount: vi.fn().mockResolvedValue(0) + }, + auth: { + getContext: vi.fn().mockReturnValue(null) } }; diff --git a/apps/cli/src/commands/loop.command.ts b/apps/cli/src/commands/loop.command.ts index 95c2931e..c419c1c9 100644 --- a/apps/cli/src/commands/loop.command.ts +++ b/apps/cli/src/commands/loop.command.ts @@ -5,6 +5,8 @@ import path from 'node:path'; import { type LoopConfig, + type LoopIteration, + type LoopOutputCallbacks, type LoopResult, PRESET_NAMES, type TmCore, @@ -23,6 +25,8 @@ export interface LoopCommandOptions { tag?: string; project?: string; sandbox?: boolean; + output?: boolean; + verbose?: boolean; } export class LoopCommand extends Command { @@ -49,6 +53,11 @@ export class LoopCommand extends Command { 'Project root directory (auto-detected if not provided)' ) .option('--sandbox', 'Run Claude in Docker sandbox mode') + .option( + '--no-output', + 'Exclude full Claude output from iteration results' + ) + .option('-v, --verbose', "Show Claude's work in real-time") .action((options: LoopCommandOptions) => this.execute(options)); } @@ -109,12 +118,21 @@ export class LoopCommand extends Command { } console.log(); + // Auto-detect brief name from auth context (if available) + const briefName = this.tmCore.auth.getContext()?.briefName; + const config: Partial = { iterations, prompt, progressFile, tag: options.tag, - sandbox: options.sandbox + sandbox: options.sandbox, + // CLI defaults to including output (users typically want to see it) + // Domain defaults to false (library consumers opt-in explicitly) + includeOutput: options.output ?? true, + verbose: options.verbose ?? false, + brief: briefName, + callbacks: this.createOutputCallbacks() }; const result = await this.tmCore.loop.run(config); @@ -161,6 +179,47 @@ export class LoopCommand extends Command { } } + private createOutputCallbacks(): LoopOutputCallbacks { + return { + onIterationStart: (iteration: number, total: number) => { + console.log(); + console.log(chalk.cyan(`━━━ Iteration ${iteration} of ${total} ━━━`)); + }, + onText: (text: string) => { + console.log(text); + }, + onToolUse: (toolName: string) => { + console.log(chalk.dim(` → ${toolName}`)); + }, + onError: (message: string, severity?: 'warning' | 'error') => { + if (severity === 'warning') { + console.error(chalk.yellow(`[Loop Warning] ${message}`)); + } else { + console.error(chalk.red(`[Loop Error] ${message}`)); + } + }, + onStderr: (iteration: number, text: string) => { + process.stderr.write(chalk.dim(`[Iteration ${iteration}] `) + text); + }, + onOutput: (output: string) => { + console.log(output); + }, + onIterationEnd: (iteration: LoopIteration) => { + const statusColor = + iteration.status === 'success' + ? chalk.green + : iteration.status === 'error' + ? chalk.red + : chalk.yellow; + console.log( + statusColor( + ` Iteration ${iteration.iteration} completed: ${iteration.status}` + ) + ); + } + }; + } + private displayResult(result: LoopResult): void { console.log(); console.log(chalk.bold('Loop Complete')); @@ -168,6 +227,9 @@ export class LoopCommand extends Command { console.log(`Total iterations: ${result.totalIterations}`); console.log(`Tasks completed: ${result.tasksCompleted}`); console.log(`Final status: ${this.formatStatus(result.finalStatus)}`); + if (result.errorMessage) { + console.log(chalk.red(`Error: ${result.errorMessage}`)); + } } private formatStatus(status: LoopResult['finalStatus']): string { diff --git a/packages/tm-core/src/index.ts b/packages/tm-core/src/index.ts index 4314a491..35df919d 100644 --- a/packages/tm-core/src/index.ts +++ b/packages/tm-core/src/index.ts @@ -155,7 +155,8 @@ export type { LoopPreset, LoopConfig, LoopIteration, - LoopResult + LoopResult, + LoopOutputCallbacks } from './modules/loop/index.js'; export { LoopDomain, PRESET_NAMES } from './modules/loop/index.js'; diff --git a/packages/tm-core/src/modules/loop/index.ts b/packages/tm-core/src/modules/loop/index.ts index ab3a8e16..de74015b 100644 --- a/packages/tm-core/src/modules/loop/index.ts +++ b/packages/tm-core/src/modules/loop/index.ts @@ -15,7 +15,8 @@ export type { LoopPreset, LoopConfig, LoopIteration, - LoopResult + LoopResult, + LoopOutputCallbacks } from './types.js'; // Presets - content and helpers diff --git a/packages/tm-core/src/modules/loop/loop-domain.ts b/packages/tm-core/src/modules/loop/loop-domain.ts index 342fa011..8fdbfd02 100644 --- a/packages/tm-core/src/modules/loop/loop-domain.ts +++ b/packages/tm-core/src/modules/loop/loop-domain.ts @@ -190,7 +190,11 @@ export class LoopDomain { path.join(this.projectRoot, '.taskmaster', 'progress.txt'), sleepSeconds: partial.sleepSeconds ?? 5, tag: partial.tag, - sandbox: partial.sandbox ?? false + sandbox: partial.sandbox ?? false, + includeOutput: partial.includeOutput ?? false, + verbose: partial.verbose ?? false, + brief: partial.brief, + callbacks: partial.callbacks }; } } diff --git a/packages/tm-core/src/modules/loop/presets/__snapshots__/presets.spec.ts.snap b/packages/tm-core/src/modules/loop/presets/__snapshots__/presets.spec.ts.snap index 7a0e6195..93d201fb 100644 --- a/packages/tm-core/src/modules/loop/presets/__snapshots__/presets.spec.ts.snap +++ b/packages/tm-core/src/modules/loop/presets/__snapshots__/presets.spec.ts.snap @@ -3,7 +3,7 @@ exports[`Preset Snapshots > default preset matches snapshot 1`] = ` "SETUP: If task-master command not found, run: npm i -g task-master-ai -TASK: Implement ONE task/subtask from the Task Master backlog. +TASK: Implement ONE task/subtask from the Taskmaster backlog. PROCESS: 1. Run task-master next (or use MCP) to get the next available task/subtask. @@ -26,7 +26,7 @@ IMPORTANT: `; exports[`Preset Snapshots > duplication preset matches snapshot 1`] = ` -"# Task Master Loop - Duplication +"# Taskmaster Loop - Duplication Find duplicated code and refactor into shared utilities. ONE refactor per session. @@ -60,7 +60,7 @@ Find duplicated code and refactor into shared utilities. ONE refactor per sessio `; exports[`Preset Snapshots > entropy preset matches snapshot 1`] = ` -"# Task Master Loop - Entropy (Code Smells) +"# Taskmaster Loop - Entropy (Code Smells) Find code smells and clean them up. ONE cleanup per session. @@ -102,7 +102,7 @@ Find code smells and clean them up. ONE cleanup per session. `; exports[`Preset Snapshots > linting preset matches snapshot 1`] = ` -"# Task Master Loop - Linting +"# Taskmaster Loop - Linting Fix lint errors and type errors one by one. ONE fix per session. @@ -136,7 +136,7 @@ Fix lint errors and type errors one by one. ONE fix per session. `; exports[`Preset Snapshots > test-coverage preset matches snapshot 1`] = ` -"# Task Master Loop - Test Coverage +"# Taskmaster Loop - Test Coverage Find uncovered code and write meaningful tests. ONE test per session. diff --git a/packages/tm-core/src/modules/loop/presets/default.ts b/packages/tm-core/src/modules/loop/presets/default.ts index 6660600e..f9588eb6 100644 --- a/packages/tm-core/src/modules/loop/presets/default.ts +++ b/packages/tm-core/src/modules/loop/presets/default.ts @@ -1,10 +1,10 @@ /** - * Default preset for Task Master loop - general task completion + * Default preset for Taskmaster loop - general task completion * Matches the structure of scripts/loop.sh prompt */ export const DEFAULT_PRESET = `SETUP: If task-master command not found, run: npm i -g task-master-ai -TASK: Implement ONE task/subtask from the Task Master backlog. +TASK: Implement ONE task/subtask from the Taskmaster backlog. PROCESS: 1. Run task-master next (or use MCP) to get the next available task/subtask. diff --git a/packages/tm-core/src/modules/loop/presets/duplication.ts b/packages/tm-core/src/modules/loop/presets/duplication.ts index b523b5ed..f43e12e2 100644 --- a/packages/tm-core/src/modules/loop/presets/duplication.ts +++ b/packages/tm-core/src/modules/loop/presets/duplication.ts @@ -1,7 +1,7 @@ /** - * Duplication preset for Task Master loop - code deduplication + * Duplication preset for Taskmaster loop - code deduplication */ -export const DUPLICATION_PRESET = `# Task Master Loop - Duplication +export const DUPLICATION_PRESET = `# Taskmaster Loop - Duplication Find duplicated code and refactor into shared utilities. ONE refactor per session. diff --git a/packages/tm-core/src/modules/loop/presets/entropy.ts b/packages/tm-core/src/modules/loop/presets/entropy.ts index d7b6cd25..4e25114f 100644 --- a/packages/tm-core/src/modules/loop/presets/entropy.ts +++ b/packages/tm-core/src/modules/loop/presets/entropy.ts @@ -2,7 +2,7 @@ * @fileoverview Entropy (Code Smells) preset for loop module */ -export const ENTROPY_PRESET = `# Task Master Loop - Entropy (Code Smells) +export const ENTROPY_PRESET = `# Taskmaster Loop - Entropy (Code Smells) Find code smells and clean them up. ONE cleanup per session. diff --git a/packages/tm-core/src/modules/loop/presets/linting.ts b/packages/tm-core/src/modules/loop/presets/linting.ts index d33df6f0..181d8778 100644 --- a/packages/tm-core/src/modules/loop/presets/linting.ts +++ b/packages/tm-core/src/modules/loop/presets/linting.ts @@ -1,7 +1,7 @@ /** - * Linting preset for Task Master loop - fix lint and type errors + * Linting preset for Taskmaster loop - fix lint and type errors */ -export const LINTING_PRESET = `# Task Master Loop - Linting +export const LINTING_PRESET = `# Taskmaster Loop - Linting Fix lint errors and type errors one by one. ONE fix per session. diff --git a/packages/tm-core/src/modules/loop/presets/test-coverage.ts b/packages/tm-core/src/modules/loop/presets/test-coverage.ts index 3a2c625a..a7491917 100644 --- a/packages/tm-core/src/modules/loop/presets/test-coverage.ts +++ b/packages/tm-core/src/modules/loop/presets/test-coverage.ts @@ -1,7 +1,7 @@ /** - * Test coverage preset for Task Master loop - writing meaningful tests + * Test coverage preset for Taskmaster loop - writing meaningful tests */ -export const TEST_COVERAGE_PRESET = `# Task Master Loop - Test Coverage +export const TEST_COVERAGE_PRESET = `# Taskmaster Loop - Test Coverage Find uncovered code and write meaningful tests. ONE test per session. diff --git a/packages/tm-core/src/modules/loop/services/loop.service.spec.ts b/packages/tm-core/src/modules/loop/services/loop.service.spec.ts index 48e9ab92..640ab8a7 100644 --- a/packages/tm-core/src/modules/loop/services/loop.service.spec.ts +++ b/packages/tm-core/src/modules/loop/services/loop.service.spec.ts @@ -394,7 +394,7 @@ describe('LoopService', () => { // Uses appendFile instead of writeFile to preserve existing progress expect(fsPromises.appendFile).toHaveBeenCalledWith( '/test/progress.txt', - expect.stringContaining('# Task Master Loop Progress'), + expect.stringContaining('# Taskmaster Loop Progress'), 'utf-8' ); }); @@ -619,12 +619,13 @@ describe('LoopService', () => { expect(header).toContain('@/test/progress.txt'); }); - it('should include tasks file reference', () => { + it('should NOT include tasks file reference (preset controls task source)', () => { const header = buildContextHeader( { iterations: 1, progressFile: '/test/progress.txt' }, 1 ); - expect(header).toContain('@.taskmaster/tasks/tasks.json'); + // tasks.json intentionally excluded - let preset control task source to avoid confusion + expect(header).not.toContain('tasks.json'); }); it('should include tag filter when provided', () => { diff --git a/packages/tm-core/src/modules/loop/services/loop.service.ts b/packages/tm-core/src/modules/loop/services/loop.service.ts index fd08d6d6..3533d482 100644 --- a/packages/tm-core/src/modules/loop/services/loop.service.ts +++ b/packages/tm-core/src/modules/loop/services/loop.service.ts @@ -2,13 +2,15 @@ * @fileoverview Loop Service - Orchestrates running Claude Code iterations (sandbox or CLI mode) */ -import { spawnSync } from 'node:child_process'; +import { spawn, spawnSync } from 'node:child_process'; import { appendFile, mkdir, readFile } from 'node:fs/promises'; import path from 'node:path'; +import { getLogger } from '../../../common/logger/index.js'; import { PRESETS, isPreset as checkIsPreset } from '../presets/index.js'; import type { LoopConfig, LoopIteration, + LoopOutputCallbacks, LoopPreset, LoopResult } from '../types.js'; @@ -19,6 +21,7 @@ export interface LoopServiceOptions { export class LoopService { private readonly projectRoot: string; + private readonly logger = getLogger('LoopService'); private _isRunning = false; constructor(options: LoopServiceOptions) { @@ -109,6 +112,20 @@ export class LoopService { /** Run a loop with the given configuration */ async run(config: LoopConfig): Promise { + // Validate incompatible options early - fail once, not per iteration + if (config.verbose && config.sandbox) { + const errorMsg = + 'Verbose mode is not supported with sandbox mode. Use --verbose without --sandbox, or remove --verbose.'; + this.reportError(config.callbacks, errorMsg); + return { + iterations: [], + totalIterations: 0, + tasksCompleted: 0, + finalStatus: 'error', + errorMessage: errorMsg + }; + } + this._isRunning = true; const iterations: LoopIteration[] = []; let tasksCompleted = 0; @@ -116,18 +133,23 @@ export class LoopService { await this.initProgressFile(config); for (let i = 1; i <= config.iterations && this._isRunning; i++) { - // Show iteration header - console.log(); - console.log(`━━━ Iteration ${i} of ${config.iterations} ━━━`); + // Notify presentation layer of iteration start + config.callbacks?.onIterationStart?.(i, config.iterations); const prompt = await this.buildPrompt(config, i); - const iteration = this.executeIteration( + const iteration = await this.executeIteration( prompt, i, - config.sandbox ?? false + config.sandbox ?? false, + config.includeOutput ?? false, + config.verbose ?? false, + config.callbacks ); iterations.push(iteration); + // Notify presentation layer of iteration completion + config.callbacks?.onIterationEnd?.(iteration); + // Check for early exit conditions if (iteration.status === 'complete') { return this.finalize( @@ -177,21 +199,41 @@ export class LoopService { return result; } + /** + * Report an error via callback if provided, otherwise log to the logger. + * Ensures errors are never silently swallowed when callbacks aren't configured. + */ + private reportError( + callbacks: LoopOutputCallbacks | undefined, + message: string, + severity: 'warning' | 'error' = 'error' + ): void { + if (callbacks?.onError) { + callbacks.onError(message, severity); + } else if (severity === 'warning') { + this.logger.warn(message); + } else { + this.logger.error(message); + } + } + private async initProgressFile(config: LoopConfig): Promise { await mkdir(path.dirname(config.progressFile), { recursive: true }); - const tagLine = config.tag ? `# Tag: ${config.tag}\n` : ''; + const lines = [ + '# Taskmaster Loop Progress', + `# Started: ${new Date().toISOString()}`, + ...(config.brief ? [`# Brief: ${config.brief}`] : []), + `# Preset: ${config.prompt}`, + `# Max Iterations: ${config.iterations}`, + ...(config.tag ? [`# Tag: ${config.tag}`] : []), + '', + '---', + '' + ]; // Append to existing progress file instead of overwriting await appendFile( config.progressFile, - ` -# Task Master Loop Progress -# Started: ${new Date().toISOString()} -# Preset: ${config.prompt} -# Max Iterations: ${config.iterations} -${tagLine} ---- - -`, + '\n' + lines.join('\n') + '\n', 'utf-8' ); } @@ -230,7 +272,8 @@ ${tagLine} private buildContextHeader(config: LoopConfig, iteration: number): string { const tagInfo = config.tag ? ` (tag: ${config.tag})` : ''; - return `@${config.progressFile} @.taskmaster/tasks/tasks.json @CLAUDE.md + // Note: tasks.json reference removed - let the preset control task source to avoid confusion + return `@${config.progressFile} @CLAUDE.md Loop iteration ${iteration} of ${config.iterations}${tagInfo}`; } @@ -262,63 +305,56 @@ Loop iteration ${iteration} of ${config.iterations}${tagInfo}`; return { status: 'success' }; } - private executeIteration( + private async executeIteration( prompt: string, iterationNum: number, - sandbox: boolean - ): LoopIteration { + sandbox: boolean, + includeOutput = false, + verbose = false, + callbacks?: LoopOutputCallbacks + ): Promise { const startTime = Date.now(); - - // Use docker sandbox or plain claude based on config const command = sandbox ? 'docker' : 'claude'; - const args = sandbox - ? ['sandbox', 'run', 'claude', '-p', prompt] - : ['-p', prompt, '--dangerously-skip-permissions']; + if (verbose) { + return this.executeVerboseIteration( + prompt, + iterationNum, + command, + sandbox, + includeOutput, + startTime, + callbacks + ); + } + + const args = this.buildCommandArgs(prompt, sandbox, false); const result = spawnSync(command, args, { cwd: this.projectRoot, encoding: 'utf-8', - maxBuffer: 50 * 1024 * 1024, // 50MB buffer + maxBuffer: 50 * 1024 * 1024, stdio: ['inherit', 'pipe', 'pipe'] }); - // Check for spawn-level errors (command not found, permission denied, etc.) if (result.error) { - const code = (result.error as NodeJS.ErrnoException).code; - let errorMessage: string; - - if (code === 'ENOENT') { - errorMessage = sandbox - ? 'Docker is not installed. Install Docker Desktop to use --sandbox mode.' - : 'Claude CLI is not installed. Install with: npm install -g @anthropic-ai/claude-code'; - } else if (code === 'EACCES') { - errorMessage = `Permission denied executing '${command}'`; - } else { - errorMessage = `Failed to execute '${command}': ${result.error.message}`; - } - - console.error(`[Loop Error] ${errorMessage}`); - return { - iteration: iterationNum, - status: 'error', - duration: Date.now() - startTime, - message: errorMessage - }; + const errorMessage = this.formatCommandError( + result.error, + command, + sandbox + ); + this.reportError(callbacks, errorMessage); + return this.createErrorIteration(iterationNum, startTime, errorMessage); } const output = (result.stdout || '') + (result.stderr || ''); + if (output) { + callbacks?.onOutput?.(output); + } - // Print output to console (spawnSync with pipe captures but doesn't display) - if (output) console.log(output); - - // Handle null status (spawn failed but no error object - shouldn't happen but be safe) if (result.status === null) { - return { - iteration: iterationNum, - status: 'error', - duration: Date.now() - startTime, - message: 'Command terminated abnormally (no exit code)' - }; + const errorMsg = 'Command terminated abnormally (no exit code)'; + this.reportError(callbacks, errorMsg); + return this.createErrorIteration(iterationNum, startTime, errorMsg); } const { status, message } = this.parseCompletion(output, result.status); @@ -326,7 +362,282 @@ Loop iteration ${iteration} of ${config.iterations}${tagInfo}`; iteration: iterationNum, status, duration: Date.now() - startTime, + message, + ...(includeOutput && { output }) + }; + } + + /** + * Execute an iteration with verbose output (shows Claude's work in real-time). + * Uses Claude's stream-json format to display assistant messages as they arrive. + * @param prompt - The prompt to send to Claude + * @param iterationNum - Current iteration number (1-indexed) + * @param command - The command to execute ('claude' or 'docker') + * @param sandbox - Whether running in Docker sandbox mode + * @param includeOutput - Whether to include full output in the result + * @param startTime - Timestamp when iteration started (for duration calculation) + * @param callbacks - Optional callbacks for presentation layer output + * @returns Promise resolving to the iteration result + */ + private executeVerboseIteration( + prompt: string, + iterationNum: number, + command: string, + sandbox: boolean, + includeOutput: boolean, + startTime: number, + callbacks?: LoopOutputCallbacks + ): Promise { + const args = this.buildCommandArgs(prompt, sandbox, true); + + return new Promise((resolve) => { + // Prevent multiple resolutions from race conditions between error/close events + let isResolved = false; + const resolveOnce = (result: LoopIteration): void => { + if (!isResolved) { + isResolved = true; + resolve(result); + } + }; + + const child = spawn(command, args, { + cwd: this.projectRoot, + stdio: ['inherit', 'pipe', 'pipe'] + }); + + // Track stdout completion to handle race between data and close events + let stdoutEnded = false; + let finalResult = ''; + let buffer = ''; + + const processLine = (line: string): void => { + if (!line.startsWith('{')) return; + + try { + const event = JSON.parse(line); + + // Validate event structure before accessing properties + if (!this.isValidStreamEvent(event)) { + return; + } + + this.handleStreamEvent(event, callbacks); + + // Capture final result for includeOutput feature + if (event.type === 'result') { + finalResult = typeof event.result === 'string' ? event.result : ''; + } + } catch (error) { + // Log malformed JSON for debugging (non-JSON lines like system output are expected) + if (line.trim().startsWith('{')) { + const parseError = `Failed to parse JSON event: ${error instanceof Error ? error.message : 'Unknown error'}. Line: ${line.substring(0, 100)}...`; + this.reportError(callbacks, parseError, 'warning'); + } + } + }; + + // Handle null stdout (shouldn't happen with pipe, but be defensive) + if (!child.stdout) { + resolveOnce( + this.createErrorIteration( + iterationNum, + startTime, + 'Failed to capture stdout from child process' + ) + ); + return; + } + + child.stdout.on('data', (data: Buffer) => { + try { + const lines = this.processBufferedLines( + buffer, + data.toString('utf-8') + ); + buffer = lines.remaining; + for (const line of lines.complete) { + processLine(line); + } + } catch (error) { + this.reportError( + callbacks, + `Failed to process stdout data: ${error instanceof Error ? error.message : 'Unknown error'}`, + 'warning' + ); + } + }); + + child.stdout.on('end', () => { + stdoutEnded = true; + // Process any remaining buffer when stdout ends + if (buffer) { + processLine(buffer); + buffer = ''; + } + }); + + child.stderr?.on('data', (data: Buffer) => { + const stderrText = data.toString('utf-8'); + callbacks?.onStderr?.(iterationNum, stderrText); + }); + + child.on('error', (error: NodeJS.ErrnoException) => { + const errorMessage = this.formatCommandError(error, command, sandbox); + this.reportError(callbacks, errorMessage); + + // Cleanup: remove listeners and kill process if still running + child.stdout?.removeAllListeners(); + child.stderr?.removeAllListeners(); + if (!child.killed) { + try { + child.kill('SIGTERM'); + } catch { + // Process may have already exited + } + } + + resolveOnce( + this.createErrorIteration(iterationNum, startTime, errorMessage) + ); + }); + + child.on('close', (exitCode: number | null) => { + // Process remaining buffer only if stdout hasn't already ended + if (!stdoutEnded && buffer) { + processLine(buffer); + } + + if (exitCode === null) { + const errorMsg = 'Command terminated abnormally (no exit code)'; + this.reportError(callbacks, errorMsg); + resolveOnce( + this.createErrorIteration(iterationNum, startTime, errorMsg) + ); + return; + } + + const { status, message } = this.parseCompletion(finalResult, exitCode); + resolveOnce({ + iteration: iterationNum, + status, + duration: Date.now() - startTime, + message, + ...(includeOutput && { output: finalResult }) + }); + }); + }); + } + + /** + * Validate that a parsed JSON object has the expected stream event structure. + */ + private isValidStreamEvent(event: unknown): event is { + type: string; + message?: { + content?: Array<{ type: string; text?: string; name?: string }>; + }; + result?: string; + } { + if (!event || typeof event !== 'object') { + return false; + } + + const e = event as Record; + if (!('type' in e) || typeof e.type !== 'string') { + return false; + } + + // Validate message structure if present + if ('message' in e && e.message !== undefined) { + if (typeof e.message !== 'object' || e.message === null) { + return false; + } + const msg = e.message as Record; + if ('content' in msg && !Array.isArray(msg.content)) { + return false; + } + } + + return true; + } + + private buildCommandArgs( + prompt: string, + sandbox: boolean, + verbose: boolean + ): string[] { + if (sandbox) { + return ['sandbox', 'run', 'claude', '-p', prompt]; + } + + const args = ['-p', prompt, '--dangerously-skip-permissions']; + if (verbose) { + // Use stream-json format to show Claude's work in real-time + args.push('--output-format', 'stream-json', '--verbose'); + } + return args; + } + + private formatCommandError( + error: NodeJS.ErrnoException, + command: string, + sandbox: boolean + ): string { + if (error.code === 'ENOENT') { + return sandbox + ? 'Docker is not installed. Install Docker Desktop to use --sandbox mode.' + : 'Claude CLI is not installed. Install with: npm install -g @anthropic-ai/claude-code'; + } + + if (error.code === 'EACCES') { + return `Permission denied executing '${command}'`; + } + + return `Failed to execute '${command}': ${error.message}`; + } + + private createErrorIteration( + iterationNum: number, + startTime: number, + message: string + ): LoopIteration { + return { + iteration: iterationNum, + status: 'error', + duration: Date.now() - startTime, message }; } + + private handleStreamEvent( + event: { + type: string; + message?: { + content?: Array<{ type: string; text?: string; name?: string }>; + }; + }, + callbacks?: LoopOutputCallbacks + ): void { + if (event.type !== 'assistant' || !event.message?.content) return; + + for (const block of event.message.content) { + if (block.type === 'text' && block.text) { + callbacks?.onText?.(block.text); + } else if (block.type === 'tool_use' && block.name) { + callbacks?.onToolUse?.(block.name); + } + } + } + + private processBufferedLines( + buffer: string, + newData: string + ): { complete: string[]; remaining: string } { + const combined = buffer + newData; + const lines = combined.split('\n'); + return { + complete: lines.slice(0, -1), + remaining: lines[lines.length - 1] + }; + } } diff --git a/packages/tm-core/src/modules/loop/types.ts b/packages/tm-core/src/modules/loop/types.ts index 452deeec..b5375d53 100644 --- a/packages/tm-core/src/modules/loop/types.ts +++ b/packages/tm-core/src/modules/loop/types.ts @@ -12,6 +12,33 @@ export type LoopPreset = | 'duplication' | 'entropy'; +/** + * Output callbacks for loop execution. + * These allow the caller (CLI/MCP) to handle presentation while + * the service stays focused on business logic. + * + * Callback modes: + * - `onIterationStart`, `onIterationEnd`, `onError`, `onStderr`: Called in both verbose and non-verbose modes + * - `onText`, `onToolUse`: Called only in VERBOSE mode (--verbose flag) + * - `onOutput`: Called only in NON-VERBOSE mode (default) + */ +export interface LoopOutputCallbacks { + /** Called at the start of each iteration (both modes) */ + onIterationStart?: (iteration: number, total: number) => void; + /** Called when Claude outputs text (VERBOSE MODE ONLY) */ + onText?: (text: string) => void; + /** Called when Claude invokes a tool (VERBOSE MODE ONLY) */ + onToolUse?: (toolName: string) => void; + /** Called when an error occurs (both modes) */ + onError?: (message: string, severity?: 'warning' | 'error') => void; + /** Called for stderr output (both modes) */ + onStderr?: (iteration: number, text: string) => void; + /** Called when non-verbose iteration completes with output (NON-VERBOSE MODE ONLY) */ + onOutput?: (output: string) => void; + /** Called at the end of each iteration with the result (both modes) */ + onIterationEnd?: (iteration: LoopIteration) => void; +} + /** * Configuration options for a loop execution */ @@ -28,6 +55,39 @@ export interface LoopConfig { tag?: string; /** Run Claude in Docker sandbox mode (default: false) */ sandbox?: boolean; + /** + * Include full Claude output in iteration results (default: false) + * + * When true: `LoopIteration.output` will contain full stdout+stderr text + * When false: `LoopIteration.output` will be undefined (saves memory) + * + * Can be combined with `verbose=true` to both display and capture output. + * Note: Output can be large (up to 50MB per iteration). + */ + includeOutput?: boolean; + /** + * Show Claude's work in real-time instead of just the result (default: false) + * + * When true: Output appears as Claude generates it (shows thinking, tool calls) + * When false: Output appears only after iteration completes + * + * Independent of `includeOutput` - controls display timing, not capture. + * Note: NOT compatible with `sandbox=true` (will return error). + */ + verbose?: boolean; + /** + * Brief title describing the current initiative/goal (optional) + * + * If provided, included in the progress file header to give Claude + * context about the bigger picture across iterations. + * Example: "Implement streaming output for loop command" + */ + brief?: string; + /** + * Output callbacks for presentation layer (CLI/MCP). + * If not provided, the service runs silently (no console output). + */ + callbacks?: LoopOutputCallbacks; } /** @@ -44,6 +104,15 @@ export interface LoopIteration { message?: string; /** Duration of this iteration in milliseconds */ duration?: number; + /** + * Full Claude output text + * + * ONLY present when `LoopConfig.includeOutput=true`. + * Contains concatenated stdout and stderr from Claude CLI execution. + * May include ANSI color codes and tool call output. + * Can be large - use `includeOutput=false` to save memory. + */ + output?: string; } /** @@ -58,4 +127,6 @@ export interface LoopResult { tasksCompleted: number; /** Final status of the loop */ finalStatus: 'all_complete' | 'max_iterations' | 'blocked' | 'error'; + /** Error message when finalStatus is 'error' (optional) */ + errorMessage?: string; } diff --git a/tests/setup.js b/tests/setup.js index 52af0669..420d17ac 100644 --- a/tests/setup.js +++ b/tests/setup.js @@ -51,3 +51,16 @@ if (process.env.SILENCE_CONSOLE === 'true') { error: () => {} }; } + +// Clean up signal-exit listeners after all tests to prevent open handle warnings +// This is needed because packages like proper-lockfile register signal handlers +afterAll(async () => { + // Give any pending async operations time to complete + await new Promise((resolve) => setImmediate(resolve)); + + // Clean up any registered signal handlers from signal-exit + const listeners = ['SIGINT', 'SIGTERM', 'SIGHUP']; + for (const signal of listeners) { + process.removeAllListeners(signal); + } +}); From 5f1fbba85ecb1a3317c925b349285ff0f1f9fb20 Mon Sep 17 00:00:00 2001 From: Crunchyman-ralph <35776126+Crunchyman-ralph@users.noreply.github.com> Date: Thu, 15 Jan 2026 16:58:36 +0000 Subject: [PATCH 08/20] chore: rc version bump [skip ci] --- .changeset/pre.json | 25 +++++++++++++++++++++++++ apps/extension/package.json | 2 +- 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 .changeset/pre.json diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 00000000..b41f36ef --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,25 @@ +{ + "mode": "pre", + "tag": "rc", + "initialVersions": { + "task-master-ai": "0.41.0", + "@tm/cli": "", + "docs": "0.0.16", + "extension": "0.26.0", + "@tm/mcp": "", + "@tm/ai-sdk-provider-grok-cli": "", + "@tm/build-config": "", + "@tm/claude-code-plugin": "0.0.10", + "@tm/bridge": "", + "@tm/core": "", + "@tm/profiles": "" + }, + "changesets": [ + "adopt-modifyjson-pattern", + "fix-file-locking", + "list-blocks-ready-filter", + "loop-error-handling", + "loop-sandbox-optional", + "update-codex-cli-models" + ] +} diff --git a/apps/extension/package.json b/apps/extension/package.json index 09bf01a0..dd33bdf6 100644 --- a/apps/extension/package.json +++ b/apps/extension/package.json @@ -275,7 +275,7 @@ "tailwindcss": "4.1.11", "typescript": "^5.9.2", "@tm/core": "*", - "task-master-ai": "*" + "task-master-ai": "0.42.0-rc.0" }, "overrides": { "glob@<8": "^10.4.5", From 95eeb48561e05432aa9555d21c432abdd219269c Mon Sep 17 00:00:00 2001 From: Ben Coombs Date: Wed, 21 Jan 2026 17:46:31 +0000 Subject: [PATCH 09/20] fix: Add missing loadTUI function for no-argument invocation (#1592) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Ben Coombs Fixes #1589 --- CHANGELOG.md | 49 +++++++++++++++++++++++++++++++++++++ scripts/modules/commands.js | 15 +++++++++--- 2 files changed, 60 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 09793de2..040ce3ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,55 @@ ### Patch Changes +- [#1569](https://github.com/eyaltoledano/claude-task-master/pull/1569) [`4cfde1c`](https://github.com/eyaltoledano/claude-task-master/commit/4cfde1c3d54b94701e0fcfc8dbdedbc3bbaf4339) Thanks [@bjcoombs](https://github.com/bjcoombs)! - Improve concurrency safety by adopting modifyJson pattern in file-storage + - Refactor saveTasks, createTag, deleteTag, renameTag to use modifyJson for atomic read-modify-write operations + - This prevents lost updates when multiple processes concurrently modify tasks.json + - Complements the cross-process file locking added in PR #1566 + +- [#1566](https://github.com/eyaltoledano/claude-task-master/pull/1566) [`3cc6174`](https://github.com/eyaltoledano/claude-task-master/commit/3cc6174b471fc1ea7f12955095d0d35b4dc5904c) Thanks [@bjcoombs](https://github.com/bjcoombs)! - Fix race condition when multiple Claude Code windows write to tasks.json simultaneously + - Add cross-process file locking to prevent concurrent write collisions + - Implement atomic writes using temp file + rename pattern to prevent partial writes + - Re-read file inside lock to get current state, preventing lost updates from stale snapshots + - Add stale lock detection and automatic cleanup (10-second timeout) + - Export `withFileLock` and `withFileLockSync` utilities for use by other modules + + This fix prevents data loss that could occur when multiple Task Master instances (e.g., multiple Claude Code windows) access the same tasks.json file concurrently. + +- [#1576](https://github.com/eyaltoledano/claude-task-master/pull/1576) [`097c8ed`](https://github.com/eyaltoledano/claude-task-master/commit/097c8edcb0ca065218e9b51758ad370ac7475f1a) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Improve loop command error handling and use dangerously-skip-permissions + - Add proper spawn error handling (ENOENT, EACCES) with actionable messages + - Return error info from checkSandboxAuth and runInteractiveAuth instead of silent failures + - Use --dangerously-skip-permissions for unattended loop execution + - Fix null exit code masking issue + +- [#1577](https://github.com/eyaltoledano/claude-task-master/pull/1577) [`e762e4f`](https://github.com/eyaltoledano/claude-task-master/commit/e762e4f64608a77d248ac8ce5eeb218000b51907) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Make Docker sandbox mode opt-in for loop command + - Add `--sandbox` flag to `task-master loop` (default: use plain `claude -p`) + - Preserve progress.txt between runs (append instead of overwrite) + - Display execution mode in loop startup output + +- [#1580](https://github.com/eyaltoledano/claude-task-master/pull/1580) [`940ab58`](https://github.com/eyaltoledano/claude-task-master/commit/940ab587e50cff43c3a2639bbbd210fdd577c3f1) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Update Codex CLI supported models to match current available models + - Remove deprecated models: gpt-5, gpt-5-codex, gpt-5.1 + - Add gpt-5.2-codex as the current default model + - Add gpt-5.1-codex-mini for faster, cheaper option + - Keep gpt-5.1-codex-max and gpt-5.2 + +## 0.42.0-rc.0 + +### Minor Changes + +- [#1533](https://github.com/eyaltoledano/claude-task-master/pull/1533) [`6c3a92c`](https://github.com/eyaltoledano/claude-task-master/commit/6c3a92c439d4573ff5046e3d251a4a26d85d0deb) Thanks [@bjcoombs](https://github.com/bjcoombs)! - Add --ready and --blocking filters to list command for identifying parallelizable tasks + - Add `--ready` filter to show only tasks with satisfied dependencies (ready to work on) + - Add `--blocking` filter to show only tasks that block other tasks + - Combine `--ready --blocking` to find high-impact tasks (ready AND blocking others) + - Add "Blocks" column to task table showing which tasks depend on each task + - Blocks field included in JSON output for programmatic access + - Add "Ready" column to `tags` command showing count of ready tasks per tag + - Add `--ready` filter to `tags` command to show only tags with available work + - Excludes deferred/blocked tasks from ready count (only actionable statuses) + - Add `--all-tags` option to list ready tasks across all tags (use with `--ready`) + - Tag column shown as first column when using `--all-tags` for easy scanning + +### Patch Changes + - [#1569](https://github.com/eyaltoledano/claude-task-master/pull/1569) [`4cfde1c`](https://github.com/eyaltoledano/claude-task-master/commit/4cfde1c3d54b94701e0fcfc8dbdedbc3bbaf4339) Thanks [@bjcoombs](https://github.com/bjcoombs)! - Improve concurrency safety by adopting modifyJson pattern in file-storage - Refactor saveTasks, createTag, deleteTag, renameTag to use modifyJson for atomic read-modify-write operations - This prevents lost updates when multiple processes concurrently modify tasks.json diff --git a/scripts/modules/commands.js b/scripts/modules/commands.js index e3ca7061..3474d0a7 100644 --- a/scripts/modules/commands.js +++ b/scripts/modules/commands.js @@ -5249,6 +5249,15 @@ Examples: return programInstance; } +/** + * Load the TUI module (coming soon) + * @returns {Promise} null - TUI not yet available + */ +async function loadTUI() { + // TUI is coming soon - return null for now + return null; +} + /** * Launch the interactive TUI REPL */ @@ -5257,10 +5266,8 @@ async function launchREPL() { const tui = await loadTUI(); if (!tui) { - // Fallback to help if TUI not available - console.log( - chalk.yellow('TUI mode not available. Install @tm/tui to enable.') - ); + // TUI coming soon - show help for now + console.log(chalk.yellow('TUI mode coming soon!')); console.log(chalk.dim('Showing help instead...\n')); if (isConnectedToHamster()) { displayHamsterHelp(); From 154ad80c1f7a0971d166d693e63c28720af46e13 Mon Sep 17 00:00:00 2001 From: Utkarsh Kankal Date: Fri, 23 Jan 2026 22:50:25 +0530 Subject: [PATCH 10/20] fix: claude typo (#1604) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- docs/examples/claude-code-usage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/examples/claude-code-usage.md b/docs/examples/claude-code-usage.md index 92349b9a..ff37e2ce 100644 --- a/docs/examples/claude-code-usage.md +++ b/docs/examples/claude-code-usage.md @@ -131,7 +131,7 @@ The Claude Code settings can be specified globally in the `claudeCode` section o } ``` -- For a full list of Cluaude Code settings, see the [Claude Code Settings documentation](https://docs.anthropic.com/en/docs/claude-code/settings). +- For a full list of Claude Code settings, see the [Claude Code Settings documentation](https://docs.anthropic.com/en/docs/claude-code/settings). - For a full list of AI powered command names, see this file: `src/constants/commands.js` ### Why These Settings Matter From bb767383387b5d8dab9854df95b197ee2e0dc264 Mon Sep 17 00:00:00 2001 From: Bryan Thompson Date: Fri, 23 Jan 2026 11:20:59 -0600 Subject: [PATCH 11/20] feat: Add MCPB bundle for Claude Desktop installation (#1599) Co-authored-by: triepod-ai <199543909+triepod-ai@users.noreply.github.com> --- .changeset/add-mcpb-bundle.md | 10 ++++ .mcpbignore | 31 ++++++++++++ claude-task-master-0.42.0.mcpb | Bin 0 -> 7854 bytes icon.png | Bin 0 -> 5663 bytes manifest.json | 89 +++++++++++++++++++++++++++++++++ 5 files changed, 130 insertions(+) create mode 100644 .changeset/add-mcpb-bundle.md create mode 100644 .mcpbignore create mode 100644 claude-task-master-0.42.0.mcpb create mode 100644 icon.png create mode 100644 manifest.json diff --git a/.changeset/add-mcpb-bundle.md b/.changeset/add-mcpb-bundle.md new file mode 100644 index 00000000..fb3d8974 --- /dev/null +++ b/.changeset/add-mcpb-bundle.md @@ -0,0 +1,10 @@ +--- +"task-master-ai": minor +--- + +Add MCPB bundle for single-click Claude Desktop installation + +- Added `manifest.json` for MCP Bundle (MCPB) specification v0.3 +- Added `.mcpbignore` to exclude development files from bundle +- Added `icon.png` (512x512) for Claude Desktop display +- Enables users to install Task Master MCP server directly in Claude Desktop without manual configuration diff --git a/.mcpbignore b/.mcpbignore new file mode 100644 index 00000000..451725c1 --- /dev/null +++ b/.mcpbignore @@ -0,0 +1,31 @@ +# Exclude everything except manifest and icon +# This is an npx-based bundle - no source code needed + +# All source code +*.js +*.ts +*.mjs +*.cjs +*.jsx +*.tsx +*.json +!manifest.json + +# All directories +*/ + +# All other files +*.md +*.txt +*.yml +*.yaml +*.lock +*.log +.git* +.env* +.eslint* +.prettier* +.editorconfig +LICENSE* +Makefile +Dockerfile diff --git a/claude-task-master-0.42.0.mcpb b/claude-task-master-0.42.0.mcpb new file mode 100644 index 0000000000000000000000000000000000000000..166b7d0546c99d57e194b99c3f141c1e5ca9d1d4 GIT binary patch literal 7854 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 CTZOj( literal 0 HcmV?d00001 diff --git a/icon.png b/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..68df68e2c318c9ce7ebdc015687e007aea6dafaf GIT binary patch literal 5663 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 literal 0 HcmV?d00001 diff --git a/manifest.json b/manifest.json new file mode 100644 index 00000000..61e890f8 --- /dev/null +++ b/manifest.json @@ -0,0 +1,89 @@ +{ + "manifest_version": "0.3", + "name": "Claude Task Master", + "version": "0.42.0", + "description": "AI-powered task management for structured development workflows. Parse PRDs, generate tasks with AI, track dependencies, and manage complexity.", + "author": { + "name": "Eyal Toledano", + "url": "https://github.com/eyaltoledano" + }, + "repository": { + "type": "git", + "url": "https://github.com/eyaltoledano/claude-task-master" + }, + "icon": "icon.png", + "server": { + "type": "node", + "entry_point": "dist/mcp-server.js", + "mcp_config": { + "command": "npx", + "args": ["-y", "--package=task-master-ai", "task-master-mcp"], + "env": { + "ANTHROPIC_API_KEY": "${user_config.anthropic_api_key}", + "PERPLEXITY_API_KEY": "${user_config.perplexity_api_key}", + "OPENAI_API_KEY": "${user_config.openai_api_key}", + "TASK_MASTER_TOOLS": "${user_config.task_master_tools}" + } + } + }, + "user_config": { + "anthropic_api_key": { + "type": "string", + "title": "Anthropic API Key", + "description": "API key for Claude models - get from console.anthropic.com (recommended)", + "required": false, + "sensitive": true + }, + "perplexity_api_key": { + "type": "string", + "title": "Perplexity API Key", + "description": "API key for research features - get from perplexity.ai (optional)", + "required": false, + "sensitive": true + }, + "openai_api_key": { + "type": "string", + "title": "OpenAI API Key", + "description": "API key for GPT models - get from platform.openai.com (optional)", + "required": false, + "sensitive": true + }, + "task_master_tools": { + "type": "string", + "title": "Tool Set", + "description": "Which tools to enable: core (7 tools), standard (15 tools), or all (44 tools)", + "required": false, + "default": "core" + } + }, + "tools": [ + { + "name": "get_tasks", + "description": "Get all tasks with optional status filter" + }, + { + "name": "next_task", + "description": "Get the next recommended task to work on" + }, + { + "name": "get_task", + "description": "Get details for a specific task by ID" + }, + { + "name": "set_task_status", + "description": "Set the status of one or more tasks or subtasks" + }, + { + "name": "update_subtask", + "description": "Update a subtask with implementation details" + }, + { + "name": "parse_prd", + "description": "Parse a Product Requirements Document to generate initial tasks" + }, + { + "name": "expand_task", + "description": "Expand a task into subtasks for detailed implementation" + } + ] +} From df5364de19cfdb40a0788a30af5e6bc3cb53dba1 Mon Sep 17 00:00:00 2001 From: Ben Coombs Date: Sun, 25 Jan 2026 10:32:23 +0000 Subject: [PATCH 12/20] feat: Add modifyJSON for atomic operations in legacy utils.js (#1587) Co-authored-by: Ben Coombs fix for #1585 (part 2: legacy utils.js pattern) --- .changeset/add-modifyjson-utils.md | 5 ++++ packages/tm-core/src/index.ts | 3 +++ scripts/modules/utils.js | 39 ++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+) create mode 100644 .changeset/add-modifyjson-utils.md diff --git a/.changeset/add-modifyjson-utils.md b/.changeset/add-modifyjson-utils.md new file mode 100644 index 00000000..01721485 --- /dev/null +++ b/.changeset/add-modifyjson-utils.md @@ -0,0 +1,5 @@ +--- +"task-master-ai": patch +--- + +Add modifyJSON function for safer file updates diff --git a/packages/tm-core/src/index.ts b/packages/tm-core/src/index.ts index 14636e6d..4314a491 100644 --- a/packages/tm-core/src/index.ts +++ b/packages/tm-core/src/index.ts @@ -49,6 +49,9 @@ export type { // Storage adapters - FileStorage for direct local file access export { FileStorage } from './modules/storage/index.js'; +// File operations - for atomic file modifications +export { FileOperations } from './modules/storage/adapters/file-storage/file-operations.js'; + // Constants export * from './common/constants/index.js'; diff --git a/scripts/modules/utils.js b/scripts/modules/utils.js index 5ef1f814..51365a4f 100644 --- a/scripts/modules/utils.js +++ b/scripts/modules/utils.js @@ -14,6 +14,8 @@ import { } from '../../src/constants/paths.js'; // Import specific config getters needed here import { getDebugFlag, getLogLevel } from './config-manager.js'; +// Import FileOperations from tm-core for atomic file modifications +import { FileOperations } from '@tm/core'; import * as gitUtils from './utils/git-utils.js'; // Global silent mode flag @@ -973,9 +975,45 @@ function markMigrationForNotice(tasksJsonPath) { } } +// Shared FileOperations instance for modifyJSON +let _fileOps = null; + +/** + * Gets or creates the shared FileOperations instance + * @returns {FileOperations} The shared FileOperations instance + */ +function getFileOps() { + if (!_fileOps) { + _fileOps = new FileOperations(); + } + return _fileOps; +} + +/** + * Atomically modifies a JSON file using a callback pattern. + * This is the safe way to update JSON files - it reads, modifies, and writes + * all within a single lock, preventing race conditions. + * + * Uses FileOperations from @tm/core for proper cross-process locking. + * + * @param {string} filepath - Path to the JSON file + * @param {Function} modifier - Async callback that receives current data and returns modified data. + * Signature: (currentData: Object) => Object | Promise + * @returns {Promise} + */ +async function modifyJSON(filepath, modifier) { + const fileOps = getFileOps(); + await fileOps.modifyJson(filepath, modifier); +} + /** * Writes and saves a JSON file. Handles tagged task lists properly. * Uses cross-process file locking and atomic writes to prevent race conditions. + * + * @deprecated For new code, prefer modifyJSON() which provides atomic read-modify-write. + * This function is maintained for backwards compatibility but callers should migrate + * to modifyJSON() to prevent race conditions from stale reads. + * * @param {string} filepath - Path to the JSON file * @param {Object} data - Data to write (can be resolved tag data or raw tagged data) * @param {string} projectRoot - Optional project root for tag context @@ -1921,6 +1959,7 @@ export { log, readJSON, writeJSON, + modifyJSON, sanitizePrompt, readComplexityReport, findTaskInComplexityReport, From 9d838cb8219e5968c0dda7f894ddc04271e321b8 Mon Sep 17 00:00:00 2001 From: Ralph Khreish <35776126+Crunchyman-ralph@users.noreply.github.com> Date: Sun, 25 Jan 2026 11:41:27 +0100 Subject: [PATCH 13/20] chore: update versioning in manifest and package files, add sync script (#1606) --- .github/scripts/sync-manifest-version.mjs | 93 +++ apps/extension/package.json | 2 +- claude-task-master-0.42.0.mcpb | Bin 7854 -> 0 bytes manifest.json | 2 +- package-lock.json | 890 ++++++++++++++++++++++ package.json | 7 +- taskmaster.mcpb | Bin 0 -> 305833 bytes 7 files changed, 989 insertions(+), 5 deletions(-) create mode 100644 .github/scripts/sync-manifest-version.mjs delete mode 100644 claude-task-master-0.42.0.mcpb create mode 100644 taskmaster.mcpb diff --git a/.github/scripts/sync-manifest-version.mjs b/.github/scripts/sync-manifest-version.mjs new file mode 100644 index 00000000..00579140 --- /dev/null +++ b/.github/scripts/sync-manifest-version.mjs @@ -0,0 +1,93 @@ +#!/usr/bin/env node +import { spawnSync } from 'node:child_process'; +import { + existsSync, + readFileSync, + readdirSync, + unlinkSync, + writeFileSync +} from 'node:fs'; +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { findRootDir } from './utils.mjs'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +const rootDir = findRootDir(__dirname); + +// Read the root package.json version +const pkgPath = join(rootDir, 'package.json'); +const manifestPath = join(rootDir, 'manifest.json'); + +let pkg; +try { + pkg = JSON.parse(readFileSync(pkgPath, 'utf8')); +} catch (error) { + console.error('Failed to read package.json:', error.message); + process.exit(1); +} + +let manifest; +try { + manifest = JSON.parse(readFileSync(manifestPath, 'utf8')); +} catch (error) { + console.error('Failed to read manifest.json:', error.message); + process.exit(1); +} + +// Sync manifest version if different +if (manifest.version !== pkg.version) { + console.log( + `Syncing manifest.json version: ${manifest.version} → ${pkg.version}` + ); + manifest.version = pkg.version; + + try { + writeFileSync( + manifestPath, + JSON.stringify(manifest, null, '\t') + '\n', + 'utf8' + ); + console.log(`✅ Updated manifest.json version to ${pkg.version}`); + } catch (error) { + console.error('Failed to write manifest.json:', error.message); + process.exit(1); + } +} else { + console.log( + `✓ manifest.json version already matches package.json (${pkg.version})` + ); +} + +// Remove old .mcpb files +const files = readdirSync(rootDir); +for (const file of files) { + if (file.endsWith('.mcpb')) { + const filePath = join(rootDir, file); + console.log(`Removing old bundle: ${file}`); + unlinkSync(filePath); + } +} + +// Generate new .mcpb bundle +const bundleName = 'taskmaster.mcpb'; +console.log(`Generating ${bundleName} for version ${pkg.version}...`); +const result = spawnSync('npx', ['mcpb', 'pack', '.', bundleName], { + cwd: rootDir, + encoding: 'utf8', + stdio: 'inherit' +}); + +if (result.status !== 0) { + console.error('Failed to generate MCPB bundle'); + process.exit(1); +} + +// Verify the new bundle was created +if (existsSync(join(rootDir, bundleName))) { + console.log(`✅ Generated ${bundleName}`); +} else { + console.error(`Expected bundle ${bundleName} was not created`); + process.exit(1); +} diff --git a/apps/extension/package.json b/apps/extension/package.json index dd33bdf6..09bf01a0 100644 --- a/apps/extension/package.json +++ b/apps/extension/package.json @@ -275,7 +275,7 @@ "tailwindcss": "4.1.11", "typescript": "^5.9.2", "@tm/core": "*", - "task-master-ai": "0.42.0-rc.0" + "task-master-ai": "*" }, "overrides": { "glob@<8": "^10.4.5", diff --git a/claude-task-master-0.42.0.mcpb b/claude-task-master-0.42.0.mcpb deleted file mode 100644 index 166b7d0546c99d57e194b99c3f141c1e5ca9d1d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7854 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 CTZOj( diff --git a/manifest.json b/manifest.json index 61e890f8..daa622f0 100644 --- a/manifest.json +++ b/manifest.json @@ -17,7 +17,7 @@ "entry_point": "dist/mcp-server.js", "mcp_config": { "command": "npx", - "args": ["-y", "--package=task-master-ai", "task-master-mcp"], + "args": ["-y", "task-master-ai"], "env": { "ANTHROPIC_API_KEY": "${user_config.anthropic_api_key}", "PERPLEXITY_API_KEY": "${user_config.perplexity_api_key}", diff --git a/package-lock.json b/package-lock.json index 12fdde1b..8cedca5a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -82,6 +82,7 @@ "task-master-mcp": "dist/mcp-server.js" }, "devDependencies": { + "@anthropic-ai/mcpb": "^2.1.2", "@biomejs/biome": "^1.9.4", "@changesets/changelog-github": "^0.5.1", "@changesets/cli": "^2.28.1", @@ -1950,6 +1951,429 @@ "url": "https://opencollective.com/express" } }, + "apps/extension/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "apps/extension/node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "apps/extension/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "apps/extension/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "apps/extension/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "apps/extension/node_modules/task-master-ai": { + "version": "0.42.0-rc.0", + "resolved": "https://registry.npmjs.org/task-master-ai/-/task-master-ai-0.42.0-rc.0.tgz", + "integrity": "sha512-CYHRFumTfCnFkmYPLjwp9V2+wTDmk/fSTEexbOIu4FBFgRxzeqMICVQYsaDukw1tYwBXh7MO1VTwD8Dp1Lnpvg==", + "dev": true, + "license": "MIT WITH Commons-Clause", + "workspaces": [ + "apps/*", + "packages/*", + "." + ], + "dependencies": { + "@ai-sdk/amazon-bedrock": "^3.0.23", + "@ai-sdk/anthropic": "^2.0.18", + "@ai-sdk/azure": "^2.0.89", + "@ai-sdk/google": "^2.0.16", + "@ai-sdk/google-vertex": "^3.0.86", + "@ai-sdk/groq": "^2.0.21", + "@ai-sdk/mistral": "^2.0.16", + "@ai-sdk/openai": "^2.0.34", + "@ai-sdk/openai-compatible": "^1.0.25", + "@ai-sdk/perplexity": "^2.0.10", + "@ai-sdk/provider": "^2.0.0", + "@ai-sdk/provider-utils": "^3.0.10", + "@ai-sdk/xai": "^2.0.22", + "@aws-sdk/credential-providers": "^3.895.0", + "@inquirer/search": "^3.0.15", + "@openrouter/ai-sdk-provider": "^1.2.0", + "@sentry/node": "^10.27.0", + "@streamparser/json": "^0.0.22", + "@supabase/supabase-js": "^2.57.4", + "@types/turndown": "^5.0.6", + "ai": "^5.0.51", + "ai-sdk-provider-claude-code": "^2.2.4", + "ai-sdk-provider-codex-cli": "^0.7.0", + "ai-sdk-provider-gemini-cli": "^1.4.0", + "ajv": "^8.17.1", + "ajv-formats": "^3.0.1", + "boxen": "^8.0.1", + "chalk": "5.6.2", + "cli-highlight": "^2.1.11", + "cli-progress": "^3.12.0", + "cli-table3": "^0.6.5", + "commander": "^12.1.0", + "cors": "^2.8.5", + "date-fns": "^4.1.0", + "dotenv": "^16.6.1", + "express": "^4.21.2", + "fastmcp": "^3.23.1", + "figlet": "^1.8.0", + "fs-extra": "^11.3.0", + "fuse.js": "^7.1.0", + "gpt-tokens": "^1.3.14", + "gradient-string": "^3.0.0", + "helmet": "^8.1.0", + "inquirer": "^12.5.0", + "jsonc-parser": "^3.3.1", + "jsonrepair": "^3.13.0", + "jsonwebtoken": "^9.0.2", + "lru-cache": "^10.2.0", + "marked": "^15.0.12", + "marked-terminal": "^7.3.0", + "ollama-ai-provider-v2": "^1.3.1", + "open": "^10.2.0", + "ora": "^8.2.0", + "proper-lockfile": "^4.1.2", + "simple-git": "^3.28.0", + "steno": "^4.0.2", + "terminal-link": "^5.0.0", + "turndown": "^7.2.2", + "undici": "^7.16.0", + "uuid": "^11.1.0", + "zod": "^4.1.12" + }, + "bin": { + "task-master": "dist/task-master.js", + "task-master-ai": "dist/mcp-server.js", + "task-master-mcp": "dist/mcp-server.js" + }, + "engines": { + "node": ">=20.0.0" + }, + "optionalDependencies": { + "@anthropic-ai/claude-code": "^2.0.59", + "@biomejs/cli-linux-x64": "^1.9.4" + } + }, + "apps/extension/node_modules/task-master-ai/node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "apps/extension/node_modules/task-master-ai/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "apps/extension/node_modules/task-master-ai/node_modules/body-parser": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", + "type-is": "~1.6.18", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "apps/extension/node_modules/task-master-ai/node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "apps/extension/node_modules/task-master-ai/node_modules/cookie-signature": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", + "dev": true, + "license": "MIT" + }, + "apps/extension/node_modules/task-master-ai/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "apps/extension/node_modules/task-master-ai/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "apps/extension/node_modules/task-master-ai/node_modules/express": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", + "content-type": "~1.0.4", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "~0.1.12", + "proxy-addr": "~2.0.7", + "qs": "~6.14.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "~0.19.0", + "serve-static": "~1.16.2", + "setprototypeof": "1.2.0", + "statuses": "~2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "apps/extension/node_modules/task-master-ai/node_modules/finalhandler": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "statuses": "~2.0.2", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "apps/extension/node_modules/task-master-ai/node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "apps/extension/node_modules/task-master-ai/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "apps/extension/node_modules/task-master-ai/node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "apps/extension/node_modules/task-master-ai/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "apps/extension/node_modules/task-master-ai/node_modules/raw-body": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "apps/extension/node_modules/task-master-ai/node_modules/send": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.4.1", + "range-parser": "~1.2.1", + "statuses": "~2.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "apps/extension/node_modules/task-master-ai/node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "~0.19.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "apps/extension/node_modules/task-master-ai/node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "apps/extension/node_modules/task-master-ai/node_modules/zod": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", + "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, "apps/extension/node_modules/undici-types": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", @@ -2431,6 +2855,308 @@ "@img/sharp-win32-x64": "^0.33.5" } }, + "node_modules/@anthropic-ai/mcpb": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@anthropic-ai/mcpb/-/mcpb-2.1.2.tgz", + "integrity": "sha512-goRbBC8ySo7SWb7tRzr+tL6FxDc4JPTRCdgfD2omba7freofvjq5rom1lBnYHZHo6Mizs1jAHJeN53aZbDoy8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/prompts": "^6.0.1", + "commander": "^13.1.0", + "fflate": "^0.8.2", + "galactus": "^1.0.0", + "ignore": "^7.0.5", + "node-forge": "^1.3.2", + "pretty-bytes": "^5.6.0", + "zod": "^3.25.67", + "zod-to-json-schema": "^3.24.6" + }, + "bin": { + "mcpb": "dist/cli/cli.js" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/@inquirer/checkbox": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-3.0.1.tgz", + "integrity": "sha512-0hm2nrToWUdD6/UHnel/UKGdk1//ke5zGUpHIvk5ZWmaKezlGxZkOJXNSWsdxO/rEqTkbB3lNC2J6nBElV2aAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.2.1", + "@inquirer/figures": "^1.0.6", + "@inquirer/type": "^2.0.0", + "ansi-escapes": "^4.3.2", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/@inquirer/confirm": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-4.0.1.tgz", + "integrity": "sha512-46yL28o2NJ9doViqOy0VDcoTzng7rAb6yPQKU7VDLqkmbCaH4JqK4yk4XqlzNWy9PVC5pG1ZUXPBQv+VqnYs2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/@inquirer/core": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-9.2.1.tgz", + "integrity": "sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/figures": "^1.0.6", + "@inquirer/type": "^2.0.0", + "@types/mute-stream": "^0.0.4", + "@types/node": "^22.5.5", + "@types/wrap-ansi": "^3.0.0", + "ansi-escapes": "^4.3.2", + "cli-width": "^4.1.0", + "mute-stream": "^1.0.0", + "signal-exit": "^4.1.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/@inquirer/editor": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-3.0.1.tgz", + "integrity": "sha512-VA96GPFaSOVudjKFraokEEmUQg/Lub6OXvbIEZU1SDCmBzRkHGhxoFAVaF30nyiB4m5cEbDgiI2QRacXZ2hw9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0", + "external-editor": "^3.1.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/@inquirer/expand": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-3.0.1.tgz", + "integrity": "sha512-ToG8d6RIbnVpbdPdiN7BCxZGiHOTomOX94C2FaT5KOHupV40tKEDozp12res6cMIfRKrXLJyexAZhWVHgbALSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/@inquirer/input": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-3.0.1.tgz", + "integrity": "sha512-BDuPBmpvi8eMCxqC5iacloWqv+5tQSJlUafYWUe31ow1BVXjW2a5qe3dh4X/Z25Wp22RwvcaLCc2siHobEOfzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/@inquirer/number": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-2.0.1.tgz", + "integrity": "sha512-QpR8jPhRjSmlr/mD2cw3IR8HRO7lSVOnqUvQa8scv1Lsr3xoAMMworcYW3J13z3ppjBFBD2ef1Ci6AE5Qn8goQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/@inquirer/password": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-3.0.1.tgz", + "integrity": "sha512-haoeEPUisD1NeE2IanLOiFr4wcTXGWrBOyAyPZi1FfLJuXOzNmxCJPgUrGYKVh+Y8hfGJenIfz5Wb/DkE9KkMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0", + "ansi-escapes": "^4.3.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/@inquirer/prompts": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-6.0.1.tgz", + "integrity": "sha512-yl43JD/86CIj3Mz5mvvLJqAOfIup7ncxfJ0Btnl0/v5TouVUyeEdcpknfgc+yMevS/48oH9WAkkw93m7otLb/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/checkbox": "^3.0.1", + "@inquirer/confirm": "^4.0.1", + "@inquirer/editor": "^3.0.1", + "@inquirer/expand": "^3.0.1", + "@inquirer/input": "^3.0.1", + "@inquirer/number": "^2.0.1", + "@inquirer/password": "^3.0.1", + "@inquirer/rawlist": "^3.0.1", + "@inquirer/search": "^2.0.1", + "@inquirer/select": "^3.0.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/@inquirer/rawlist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-3.0.1.tgz", + "integrity": "sha512-VgRtFIwZInUzTiPLSfDXK5jLrnpkuSOh1ctfaoygKAdPqjcjKYmGh6sCY1pb0aGnCGsmhUxoqLDUAU0ud+lGXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/@inquirer/search": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-2.0.1.tgz", + "integrity": "sha512-r5hBKZk3g5MkIzLVoSgE4evypGqtOannnB3PKTG9NRZxyFRKcfzrdxXXPcoJQsxJPzvdSU2Rn7pB7lw0GCmGAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.2.1", + "@inquirer/figures": "^1.0.6", + "@inquirer/type": "^2.0.0", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/@inquirer/select": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-3.0.1.tgz", + "integrity": "sha512-lUDGUxPhdWMkN/fHy1Lk7pF3nK1fh/gqeyWXmctefhxLYxlDsc7vsPBEpxrfVGDsVdyYJsiJoD4bJ1b623cV1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.2.1", + "@inquirer/figures": "^1.0.6", + "@inquirer/type": "^2.0.0", + "ansi-escapes": "^4.3.2", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/@inquirer/type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-2.0.0.tgz", + "integrity": "sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==", + "dev": true, + "license": "MIT", + "dependencies": { + "mute-stream": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/@types/node": { + "version": "22.19.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.7.tgz", + "integrity": "sha512-MciR4AKGHWl7xwxkBa6xUGxQJ4VBOmPTF7sL+iGzuahOFaO0jHCsuEfS80pan1ef4gWId1oWOweIhrDEYLuaOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/commander": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/mute-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", + "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@anthropic-ai/mcpb/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@anthropic-ai/mcpb/node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, "node_modules/@apm-js-collab/code-transformer": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/@apm-js-collab/code-transformer/-/code-transformer-0.8.2.tgz", @@ -13654,6 +14380,16 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/mute-stream": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@types/mute-stream/-/mute-stream-0.0.4.tgz", + "integrity": "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/mysql": { "version": "2.15.27", "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.27.tgz", @@ -13866,6 +14602,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/wrap-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz", + "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/ws": { "version": "8.18.1", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", @@ -19640,6 +20383,54 @@ "resolved": "apps/extension", "link": true }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "license": "MIT", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/external-editor/node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true, + "license": "MIT" + }, + "node_modules/external-editor/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/external-editor/node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", @@ -20072,6 +20863,13 @@ } } }, + "node_modules/fflate": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", + "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", + "dev": true, + "license": "MIT" + }, "node_modules/figlet": { "version": "1.9.4", "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.9.4.tgz", @@ -20228,6 +21026,35 @@ "flat": "cli.js" } }, + "node_modules/flora-colossus": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/flora-colossus/-/flora-colossus-2.0.0.tgz", + "integrity": "sha512-dz4HxH6pOvbUzZpZ/yXhafjbR2I8cenK5xL0KtBFb7U2ADsR+OwXifnxZjij/pZWF775uSCMzWVd+jDik2H2IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "fs-extra": "^10.1.0" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/flora-colossus/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/follow-redirects": { "version": "1.15.11", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", @@ -20560,6 +21387,36 @@ "integrity": "sha512-Tt4kuxLXFKHy8KT40zwsUPUkg1CrsgY25FxA2U/j/0WgEDCk3ddc/zLTCCcbSHX9FcKtLuVaDGtGE/STWC+j3Q==", "license": "BSD-3-Clause" }, + "node_modules/galactus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/galactus/-/galactus-1.0.0.tgz", + "integrity": "sha512-R1fam6D4CyKQGNlvJne4dkNF+PvUUl7TAJInvTGa9fti9qAv95quQz29GXapA4d8Ec266mJJxFVh82M4GIIGDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "flora-colossus": "^2.0.0", + "fs-extra": "^10.1.0" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/galactus/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/gaxios": { "version": "6.7.1", "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz", @@ -28110,6 +28967,16 @@ } } }, + "node_modules/node-forge": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.3.tgz", + "integrity": "sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==", + "dev": true, + "license": "(BSD-3-Clause OR GPL-2.0)", + "engines": { + "node": ">= 6.13.0" + } + }, "node_modules/node-gyp-build": { "version": "4.8.4", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", @@ -28668,6 +29535,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/outdent": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/outdent/-/outdent-0.5.0.tgz", @@ -29578,6 +30455,19 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", diff --git a/package.json b/package.json index 0e827f1c..9231e235 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "postpack": "chmod +x dist/task-master.js dist/mcp-server.js", "changeset": "changeset", "changeset:validate": "node .github/scripts/validate-changesets.mjs", - "version": "changeset version", + "version": "changeset version && node ./.github/scripts/sync-manifest-version.mjs && npm i --package-lock-only", "release": "node ./.github/scripts/release.mjs", "publish-packages": "turbo run build lint test && changeset version && changeset publish", "inspector": "npx @modelcontextprotocol/inspector node dist/mcp-server.js", @@ -114,14 +114,14 @@ "ollama-ai-provider-v2": "^1.3.1", "open": "^10.2.0", "ora": "^8.2.0", + "proper-lockfile": "^4.1.2", "simple-git": "^3.28.0", "steno": "^4.0.2", "terminal-link": "^5.0.0", "turndown": "^7.2.2", "undici": "^7.16.0", "uuid": "^11.1.0", - "zod": "^4.1.12", - "proper-lockfile": "^4.1.2" + "zod": "^4.1.12" }, "optionalDependencies": { "@anthropic-ai/claude-code": "^2.0.59", @@ -151,6 +151,7 @@ "whatwg-url": "^11.0.0" }, "devDependencies": { + "@anthropic-ai/mcpb": "^2.1.2", "@biomejs/biome": "^1.9.4", "@changesets/changelog-github": "^0.5.1", "@changesets/cli": "^2.28.1", diff --git a/taskmaster.mcpb b/taskmaster.mcpb new file mode 100644 index 0000000000000000000000000000000000000000..dadd0c70da47b2cad6e123591082703ff4315ba5 GIT binary patch literal 305833 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

{YL=9zXnB*8XLd72L|wWCrZfL)ACWrX|mrl_g0y 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

}b9%TB1qn*QpqhtB3 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

hZP&wek{pMACpwT^7U3LHqwEHP4|(&P8%3U z5^R>v$#CTRJNFO0+7w_RwGA|)JY8lZj@B#}c)vtqvPWTqs9HOTdV0(u(1dmh@ybZO z5?b|nwbjJ(9P|gtONH2(Y;Mv+nF!Os?t^1G8^Qme3%x-h59zYwvreZiIQkyDwi2!4 zv3s>C+QglBcsH6&%Jy@WEx_Q3+%E{)VrFG^%sQP}ojG+D%xZ+O8?)7FV|JRJ)uJ2W zV$X_hRD)Jq-kL|*uo)uW2y%O-CbwtBmbeV`hXy+Q{H;DGCY3%P<8!MM|z4By1=5_NQc-05sghDYl62HyWk{r*b+#dLjxB|6GyEVhu} zDVF{tr@^9B3-ygU+$gJh@d(@DX~a@H`nT=Lyy?_}i1u}>Jmv^hCP3r%#KL1*uZzYY z+^n8IGkRRHyT-z9E<3Wz&dn^(+{*G~BlF&&!? zn(>>q9r8EQzs$l&t9Jh8@|B*~_ysJvImIjw(#K5l{8yahBjb~&`593w)TB-2TMY^) zQ;EvyH77U<5nw7^)gTUf&dz0;qAPnGPbOTZA3(%Pu4`(j4B8%tgzh4icGQqpHfmyX zA3c;kHd>QCHfqQoQ^{(hcJ94V1NWXum6z6*UoIE@QcP)U;9qGc>=K85D5Az^5Yixu zSh7A4lSR>}fYX>okK54FrsmMD*09&bbzhb>vmRbGP`dJ-Ux0k4O^1{rDezj>zeqIjjk9o@{ zh1}mTKFLq>GqzSBpVTI>^sAFORt6PmNo*h0dPX*COotd2d%8crQ|DF|Q=dlFfRYql z${YY4qH>U#3ni;BlpLmE);JCGhy36XNE9&*t%obqa1`Wn8s>T$*8SHb)`#;#QM-X2 z-cww?58`%_7X@VHi^qOe4!GsB#C_LxjqoASB46zLk(q%0){G{ADxg3F z$smMHXv)urpEjgtWJu5VvG(bj)*0~Wb2t(`%9GDo;&nRwG&!q6eZnW#vB zBPj#UvfzE}7V0e8@+6C90@^gIedb$ZPOykR2z#Z)37eupcABIax2{7d0z@5-0(;C0 zuoW8+n;=b!Xo?%SPY}1MTtny!8evB5E?*Rv{#L(lXVh+$5aJ|*a7NW29Nbn^`j^2Q z7-K@YFOY6yi}*}@9F6X6Mr$ChPB0J!hL%Nk3a^B`jUjbc2O`+!!DshTg{R1+rcuVB zA+FKCY$Gf)n%5^O$SOb5O7Gnf&(qlwRpxu>20z5eYKsn5Jx)o>eq2gJ>^V$FNKK^p zu$j#+mn+9ZjjcBcMl5^uP)9h_j}19`{D9P$#D^POzT5O{R)3al^f9DJ2hb245t_1R zYOF?Cn&({*8#cwRJtW!MA))m$u8azJjA!wv$U!9^*aC6AyRc$ekdZBGD^1vj_&uR! zvwNckN=!`sm=#fmIqOq&vS8*qgiuI;$;UT5NxSMBVOf(nKQ>4l3jvUvJI3A`gZqRl z8bDh2anqtlZQGB5vF)@tdk_ZiQD+x{WEWRrBy(%0D$1uiQdNEWG$L!Mxv4bOWuvVc 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

t*@12i+wek{C2 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 V5dU{#pa4*S;_psem;GnH{tw7PsHp$| literal 0 HcmV?d00001 From e8a341a97321119293034d5c930acee2d506e2fb Mon Sep 17 00:00:00 2001 From: Ralph Khreish <35776126+Crunchyman-ralph@users.noreply.github.com> Date: Sun, 25 Jan 2026 11:50:07 +0100 Subject: [PATCH 14/20] feat(loop): add streaming output mode with --stream flag (#1605) --- .changeset/cuddly-wings-drop.md | 9 + apps/cli/src/commands/loop.command.spec.ts | 3 + apps/cli/src/commands/loop.command.ts | 64 ++- packages/tm-core/src/index.ts | 3 +- packages/tm-core/src/modules/loop/index.ts | 3 +- .../tm-core/src/modules/loop/loop-domain.ts | 6 +- .../__snapshots__/presets.spec.ts.snap | 10 +- .../src/modules/loop/presets/default.ts | 4 +- .../src/modules/loop/presets/duplication.ts | 4 +- .../src/modules/loop/presets/entropy.ts | 2 +- .../src/modules/loop/presets/linting.ts | 4 +- .../src/modules/loop/presets/test-coverage.ts | 4 +- .../loop/services/loop.service.spec.ts | 7 +- .../src/modules/loop/services/loop.service.ts | 425 +++++++++++++++--- packages/tm-core/src/modules/loop/types.ts | 71 +++ tests/setup.js | 13 + 16 files changed, 554 insertions(+), 78 deletions(-) create mode 100644 .changeset/cuddly-wings-drop.md diff --git a/.changeset/cuddly-wings-drop.md b/.changeset/cuddly-wings-drop.md new file mode 100644 index 00000000..d14f2a61 --- /dev/null +++ b/.changeset/cuddly-wings-drop.md @@ -0,0 +1,9 @@ +--- +"task-master-ai": minor +--- + +Add verbose output mode to loop command with `--verbose` flag + +- New `-v, --verbose` flag shows Claude's work in real-time (thinking, tool calls) rather than waiting until the iteration completes +- New `--no-output` flag excludes full Claude output from iteration results to save memory +- Improved error handling with proper validation for incompatible options (verbose + sandbox) diff --git a/apps/cli/src/commands/loop.command.spec.ts b/apps/cli/src/commands/loop.command.spec.ts index 45702506..4cd9817a 100644 --- a/apps/cli/src/commands/loop.command.spec.ts +++ b/apps/cli/src/commands/loop.command.spec.ts @@ -91,6 +91,9 @@ describe('LoopCommand', () => { getStorageType: vi.fn().mockReturnValue('local'), getNext: vi.fn().mockResolvedValue({ id: '1', title: 'Test Task' }), getCount: vi.fn().mockResolvedValue(0) + }, + auth: { + getContext: vi.fn().mockReturnValue(null) } }; diff --git a/apps/cli/src/commands/loop.command.ts b/apps/cli/src/commands/loop.command.ts index 95c2931e..c419c1c9 100644 --- a/apps/cli/src/commands/loop.command.ts +++ b/apps/cli/src/commands/loop.command.ts @@ -5,6 +5,8 @@ import path from 'node:path'; import { type LoopConfig, + type LoopIteration, + type LoopOutputCallbacks, type LoopResult, PRESET_NAMES, type TmCore, @@ -23,6 +25,8 @@ export interface LoopCommandOptions { tag?: string; project?: string; sandbox?: boolean; + output?: boolean; + verbose?: boolean; } export class LoopCommand extends Command { @@ -49,6 +53,11 @@ export class LoopCommand extends Command { 'Project root directory (auto-detected if not provided)' ) .option('--sandbox', 'Run Claude in Docker sandbox mode') + .option( + '--no-output', + 'Exclude full Claude output from iteration results' + ) + .option('-v, --verbose', "Show Claude's work in real-time") .action((options: LoopCommandOptions) => this.execute(options)); } @@ -109,12 +118,21 @@ export class LoopCommand extends Command { } console.log(); + // Auto-detect brief name from auth context (if available) + const briefName = this.tmCore.auth.getContext()?.briefName; + const config: Partial = { iterations, prompt, progressFile, tag: options.tag, - sandbox: options.sandbox + sandbox: options.sandbox, + // CLI defaults to including output (users typically want to see it) + // Domain defaults to false (library consumers opt-in explicitly) + includeOutput: options.output ?? true, + verbose: options.verbose ?? false, + brief: briefName, + callbacks: this.createOutputCallbacks() }; const result = await this.tmCore.loop.run(config); @@ -161,6 +179,47 @@ export class LoopCommand extends Command { } } + private createOutputCallbacks(): LoopOutputCallbacks { + return { + onIterationStart: (iteration: number, total: number) => { + console.log(); + console.log(chalk.cyan(`━━━ Iteration ${iteration} of ${total} ━━━`)); + }, + onText: (text: string) => { + console.log(text); + }, + onToolUse: (toolName: string) => { + console.log(chalk.dim(` → ${toolName}`)); + }, + onError: (message: string, severity?: 'warning' | 'error') => { + if (severity === 'warning') { + console.error(chalk.yellow(`[Loop Warning] ${message}`)); + } else { + console.error(chalk.red(`[Loop Error] ${message}`)); + } + }, + onStderr: (iteration: number, text: string) => { + process.stderr.write(chalk.dim(`[Iteration ${iteration}] `) + text); + }, + onOutput: (output: string) => { + console.log(output); + }, + onIterationEnd: (iteration: LoopIteration) => { + const statusColor = + iteration.status === 'success' + ? chalk.green + : iteration.status === 'error' + ? chalk.red + : chalk.yellow; + console.log( + statusColor( + ` Iteration ${iteration.iteration} completed: ${iteration.status}` + ) + ); + } + }; + } + private displayResult(result: LoopResult): void { console.log(); console.log(chalk.bold('Loop Complete')); @@ -168,6 +227,9 @@ export class LoopCommand extends Command { console.log(`Total iterations: ${result.totalIterations}`); console.log(`Tasks completed: ${result.tasksCompleted}`); console.log(`Final status: ${this.formatStatus(result.finalStatus)}`); + if (result.errorMessage) { + console.log(chalk.red(`Error: ${result.errorMessage}`)); + } } private formatStatus(status: LoopResult['finalStatus']): string { diff --git a/packages/tm-core/src/index.ts b/packages/tm-core/src/index.ts index 4314a491..35df919d 100644 --- a/packages/tm-core/src/index.ts +++ b/packages/tm-core/src/index.ts @@ -155,7 +155,8 @@ export type { LoopPreset, LoopConfig, LoopIteration, - LoopResult + LoopResult, + LoopOutputCallbacks } from './modules/loop/index.js'; export { LoopDomain, PRESET_NAMES } from './modules/loop/index.js'; diff --git a/packages/tm-core/src/modules/loop/index.ts b/packages/tm-core/src/modules/loop/index.ts index ab3a8e16..de74015b 100644 --- a/packages/tm-core/src/modules/loop/index.ts +++ b/packages/tm-core/src/modules/loop/index.ts @@ -15,7 +15,8 @@ export type { LoopPreset, LoopConfig, LoopIteration, - LoopResult + LoopResult, + LoopOutputCallbacks } from './types.js'; // Presets - content and helpers diff --git a/packages/tm-core/src/modules/loop/loop-domain.ts b/packages/tm-core/src/modules/loop/loop-domain.ts index 342fa011..8fdbfd02 100644 --- a/packages/tm-core/src/modules/loop/loop-domain.ts +++ b/packages/tm-core/src/modules/loop/loop-domain.ts @@ -190,7 +190,11 @@ export class LoopDomain { path.join(this.projectRoot, '.taskmaster', 'progress.txt'), sleepSeconds: partial.sleepSeconds ?? 5, tag: partial.tag, - sandbox: partial.sandbox ?? false + sandbox: partial.sandbox ?? false, + includeOutput: partial.includeOutput ?? false, + verbose: partial.verbose ?? false, + brief: partial.brief, + callbacks: partial.callbacks }; } } diff --git a/packages/tm-core/src/modules/loop/presets/__snapshots__/presets.spec.ts.snap b/packages/tm-core/src/modules/loop/presets/__snapshots__/presets.spec.ts.snap index 7a0e6195..93d201fb 100644 --- a/packages/tm-core/src/modules/loop/presets/__snapshots__/presets.spec.ts.snap +++ b/packages/tm-core/src/modules/loop/presets/__snapshots__/presets.spec.ts.snap @@ -3,7 +3,7 @@ exports[`Preset Snapshots > default preset matches snapshot 1`] = ` "SETUP: If task-master command not found, run: npm i -g task-master-ai -TASK: Implement ONE task/subtask from the Task Master backlog. +TASK: Implement ONE task/subtask from the Taskmaster backlog. PROCESS: 1. Run task-master next (or use MCP) to get the next available task/subtask. @@ -26,7 +26,7 @@ IMPORTANT: `; exports[`Preset Snapshots > duplication preset matches snapshot 1`] = ` -"# Task Master Loop - Duplication +"# Taskmaster Loop - Duplication Find duplicated code and refactor into shared utilities. ONE refactor per session. @@ -60,7 +60,7 @@ Find duplicated code and refactor into shared utilities. ONE refactor per sessio `; exports[`Preset Snapshots > entropy preset matches snapshot 1`] = ` -"# Task Master Loop - Entropy (Code Smells) +"# Taskmaster Loop - Entropy (Code Smells) Find code smells and clean them up. ONE cleanup per session. @@ -102,7 +102,7 @@ Find code smells and clean them up. ONE cleanup per session. `; exports[`Preset Snapshots > linting preset matches snapshot 1`] = ` -"# Task Master Loop - Linting +"# Taskmaster Loop - Linting Fix lint errors and type errors one by one. ONE fix per session. @@ -136,7 +136,7 @@ Fix lint errors and type errors one by one. ONE fix per session. `; exports[`Preset Snapshots > test-coverage preset matches snapshot 1`] = ` -"# Task Master Loop - Test Coverage +"# Taskmaster Loop - Test Coverage Find uncovered code and write meaningful tests. ONE test per session. diff --git a/packages/tm-core/src/modules/loop/presets/default.ts b/packages/tm-core/src/modules/loop/presets/default.ts index 6660600e..f9588eb6 100644 --- a/packages/tm-core/src/modules/loop/presets/default.ts +++ b/packages/tm-core/src/modules/loop/presets/default.ts @@ -1,10 +1,10 @@ /** - * Default preset for Task Master loop - general task completion + * Default preset for Taskmaster loop - general task completion * Matches the structure of scripts/loop.sh prompt */ export const DEFAULT_PRESET = `SETUP: If task-master command not found, run: npm i -g task-master-ai -TASK: Implement ONE task/subtask from the Task Master backlog. +TASK: Implement ONE task/subtask from the Taskmaster backlog. PROCESS: 1. Run task-master next (or use MCP) to get the next available task/subtask. diff --git a/packages/tm-core/src/modules/loop/presets/duplication.ts b/packages/tm-core/src/modules/loop/presets/duplication.ts index b523b5ed..f43e12e2 100644 --- a/packages/tm-core/src/modules/loop/presets/duplication.ts +++ b/packages/tm-core/src/modules/loop/presets/duplication.ts @@ -1,7 +1,7 @@ /** - * Duplication preset for Task Master loop - code deduplication + * Duplication preset for Taskmaster loop - code deduplication */ -export const DUPLICATION_PRESET = `# Task Master Loop - Duplication +export const DUPLICATION_PRESET = `# Taskmaster Loop - Duplication Find duplicated code and refactor into shared utilities. ONE refactor per session. diff --git a/packages/tm-core/src/modules/loop/presets/entropy.ts b/packages/tm-core/src/modules/loop/presets/entropy.ts index d7b6cd25..4e25114f 100644 --- a/packages/tm-core/src/modules/loop/presets/entropy.ts +++ b/packages/tm-core/src/modules/loop/presets/entropy.ts @@ -2,7 +2,7 @@ * @fileoverview Entropy (Code Smells) preset for loop module */ -export const ENTROPY_PRESET = `# Task Master Loop - Entropy (Code Smells) +export const ENTROPY_PRESET = `# Taskmaster Loop - Entropy (Code Smells) Find code smells and clean them up. ONE cleanup per session. diff --git a/packages/tm-core/src/modules/loop/presets/linting.ts b/packages/tm-core/src/modules/loop/presets/linting.ts index d33df6f0..181d8778 100644 --- a/packages/tm-core/src/modules/loop/presets/linting.ts +++ b/packages/tm-core/src/modules/loop/presets/linting.ts @@ -1,7 +1,7 @@ /** - * Linting preset for Task Master loop - fix lint and type errors + * Linting preset for Taskmaster loop - fix lint and type errors */ -export const LINTING_PRESET = `# Task Master Loop - Linting +export const LINTING_PRESET = `# Taskmaster Loop - Linting Fix lint errors and type errors one by one. ONE fix per session. diff --git a/packages/tm-core/src/modules/loop/presets/test-coverage.ts b/packages/tm-core/src/modules/loop/presets/test-coverage.ts index 3a2c625a..a7491917 100644 --- a/packages/tm-core/src/modules/loop/presets/test-coverage.ts +++ b/packages/tm-core/src/modules/loop/presets/test-coverage.ts @@ -1,7 +1,7 @@ /** - * Test coverage preset for Task Master loop - writing meaningful tests + * Test coverage preset for Taskmaster loop - writing meaningful tests */ -export const TEST_COVERAGE_PRESET = `# Task Master Loop - Test Coverage +export const TEST_COVERAGE_PRESET = `# Taskmaster Loop - Test Coverage Find uncovered code and write meaningful tests. ONE test per session. diff --git a/packages/tm-core/src/modules/loop/services/loop.service.spec.ts b/packages/tm-core/src/modules/loop/services/loop.service.spec.ts index 48e9ab92..640ab8a7 100644 --- a/packages/tm-core/src/modules/loop/services/loop.service.spec.ts +++ b/packages/tm-core/src/modules/loop/services/loop.service.spec.ts @@ -394,7 +394,7 @@ describe('LoopService', () => { // Uses appendFile instead of writeFile to preserve existing progress expect(fsPromises.appendFile).toHaveBeenCalledWith( '/test/progress.txt', - expect.stringContaining('# Task Master Loop Progress'), + expect.stringContaining('# Taskmaster Loop Progress'), 'utf-8' ); }); @@ -619,12 +619,13 @@ describe('LoopService', () => { expect(header).toContain('@/test/progress.txt'); }); - it('should include tasks file reference', () => { + it('should NOT include tasks file reference (preset controls task source)', () => { const header = buildContextHeader( { iterations: 1, progressFile: '/test/progress.txt' }, 1 ); - expect(header).toContain('@.taskmaster/tasks/tasks.json'); + // tasks.json intentionally excluded - let preset control task source to avoid confusion + expect(header).not.toContain('tasks.json'); }); it('should include tag filter when provided', () => { diff --git a/packages/tm-core/src/modules/loop/services/loop.service.ts b/packages/tm-core/src/modules/loop/services/loop.service.ts index fd08d6d6..3533d482 100644 --- a/packages/tm-core/src/modules/loop/services/loop.service.ts +++ b/packages/tm-core/src/modules/loop/services/loop.service.ts @@ -2,13 +2,15 @@ * @fileoverview Loop Service - Orchestrates running Claude Code iterations (sandbox or CLI mode) */ -import { spawnSync } from 'node:child_process'; +import { spawn, spawnSync } from 'node:child_process'; import { appendFile, mkdir, readFile } from 'node:fs/promises'; import path from 'node:path'; +import { getLogger } from '../../../common/logger/index.js'; import { PRESETS, isPreset as checkIsPreset } from '../presets/index.js'; import type { LoopConfig, LoopIteration, + LoopOutputCallbacks, LoopPreset, LoopResult } from '../types.js'; @@ -19,6 +21,7 @@ export interface LoopServiceOptions { export class LoopService { private readonly projectRoot: string; + private readonly logger = getLogger('LoopService'); private _isRunning = false; constructor(options: LoopServiceOptions) { @@ -109,6 +112,20 @@ export class LoopService { /** Run a loop with the given configuration */ async run(config: LoopConfig): Promise { + // Validate incompatible options early - fail once, not per iteration + if (config.verbose && config.sandbox) { + const errorMsg = + 'Verbose mode is not supported with sandbox mode. Use --verbose without --sandbox, or remove --verbose.'; + this.reportError(config.callbacks, errorMsg); + return { + iterations: [], + totalIterations: 0, + tasksCompleted: 0, + finalStatus: 'error', + errorMessage: errorMsg + }; + } + this._isRunning = true; const iterations: LoopIteration[] = []; let tasksCompleted = 0; @@ -116,18 +133,23 @@ export class LoopService { await this.initProgressFile(config); for (let i = 1; i <= config.iterations && this._isRunning; i++) { - // Show iteration header - console.log(); - console.log(`━━━ Iteration ${i} of ${config.iterations} ━━━`); + // Notify presentation layer of iteration start + config.callbacks?.onIterationStart?.(i, config.iterations); const prompt = await this.buildPrompt(config, i); - const iteration = this.executeIteration( + const iteration = await this.executeIteration( prompt, i, - config.sandbox ?? false + config.sandbox ?? false, + config.includeOutput ?? false, + config.verbose ?? false, + config.callbacks ); iterations.push(iteration); + // Notify presentation layer of iteration completion + config.callbacks?.onIterationEnd?.(iteration); + // Check for early exit conditions if (iteration.status === 'complete') { return this.finalize( @@ -177,21 +199,41 @@ export class LoopService { return result; } + /** + * Report an error via callback if provided, otherwise log to the logger. + * Ensures errors are never silently swallowed when callbacks aren't configured. + */ + private reportError( + callbacks: LoopOutputCallbacks | undefined, + message: string, + severity: 'warning' | 'error' = 'error' + ): void { + if (callbacks?.onError) { + callbacks.onError(message, severity); + } else if (severity === 'warning') { + this.logger.warn(message); + } else { + this.logger.error(message); + } + } + private async initProgressFile(config: LoopConfig): Promise { await mkdir(path.dirname(config.progressFile), { recursive: true }); - const tagLine = config.tag ? `# Tag: ${config.tag}\n` : ''; + const lines = [ + '# Taskmaster Loop Progress', + `# Started: ${new Date().toISOString()}`, + ...(config.brief ? [`# Brief: ${config.brief}`] : []), + `# Preset: ${config.prompt}`, + `# Max Iterations: ${config.iterations}`, + ...(config.tag ? [`# Tag: ${config.tag}`] : []), + '', + '---', + '' + ]; // Append to existing progress file instead of overwriting await appendFile( config.progressFile, - ` -# Task Master Loop Progress -# Started: ${new Date().toISOString()} -# Preset: ${config.prompt} -# Max Iterations: ${config.iterations} -${tagLine} ---- - -`, + '\n' + lines.join('\n') + '\n', 'utf-8' ); } @@ -230,7 +272,8 @@ ${tagLine} private buildContextHeader(config: LoopConfig, iteration: number): string { const tagInfo = config.tag ? ` (tag: ${config.tag})` : ''; - return `@${config.progressFile} @.taskmaster/tasks/tasks.json @CLAUDE.md + // Note: tasks.json reference removed - let the preset control task source to avoid confusion + return `@${config.progressFile} @CLAUDE.md Loop iteration ${iteration} of ${config.iterations}${tagInfo}`; } @@ -262,63 +305,56 @@ Loop iteration ${iteration} of ${config.iterations}${tagInfo}`; return { status: 'success' }; } - private executeIteration( + private async executeIteration( prompt: string, iterationNum: number, - sandbox: boolean - ): LoopIteration { + sandbox: boolean, + includeOutput = false, + verbose = false, + callbacks?: LoopOutputCallbacks + ): Promise { const startTime = Date.now(); - - // Use docker sandbox or plain claude based on config const command = sandbox ? 'docker' : 'claude'; - const args = sandbox - ? ['sandbox', 'run', 'claude', '-p', prompt] - : ['-p', prompt, '--dangerously-skip-permissions']; + if (verbose) { + return this.executeVerboseIteration( + prompt, + iterationNum, + command, + sandbox, + includeOutput, + startTime, + callbacks + ); + } + + const args = this.buildCommandArgs(prompt, sandbox, false); const result = spawnSync(command, args, { cwd: this.projectRoot, encoding: 'utf-8', - maxBuffer: 50 * 1024 * 1024, // 50MB buffer + maxBuffer: 50 * 1024 * 1024, stdio: ['inherit', 'pipe', 'pipe'] }); - // Check for spawn-level errors (command not found, permission denied, etc.) if (result.error) { - const code = (result.error as NodeJS.ErrnoException).code; - let errorMessage: string; - - if (code === 'ENOENT') { - errorMessage = sandbox - ? 'Docker is not installed. Install Docker Desktop to use --sandbox mode.' - : 'Claude CLI is not installed. Install with: npm install -g @anthropic-ai/claude-code'; - } else if (code === 'EACCES') { - errorMessage = `Permission denied executing '${command}'`; - } else { - errorMessage = `Failed to execute '${command}': ${result.error.message}`; - } - - console.error(`[Loop Error] ${errorMessage}`); - return { - iteration: iterationNum, - status: 'error', - duration: Date.now() - startTime, - message: errorMessage - }; + const errorMessage = this.formatCommandError( + result.error, + command, + sandbox + ); + this.reportError(callbacks, errorMessage); + return this.createErrorIteration(iterationNum, startTime, errorMessage); } const output = (result.stdout || '') + (result.stderr || ''); + if (output) { + callbacks?.onOutput?.(output); + } - // Print output to console (spawnSync with pipe captures but doesn't display) - if (output) console.log(output); - - // Handle null status (spawn failed but no error object - shouldn't happen but be safe) if (result.status === null) { - return { - iteration: iterationNum, - status: 'error', - duration: Date.now() - startTime, - message: 'Command terminated abnormally (no exit code)' - }; + const errorMsg = 'Command terminated abnormally (no exit code)'; + this.reportError(callbacks, errorMsg); + return this.createErrorIteration(iterationNum, startTime, errorMsg); } const { status, message } = this.parseCompletion(output, result.status); @@ -326,7 +362,282 @@ Loop iteration ${iteration} of ${config.iterations}${tagInfo}`; iteration: iterationNum, status, duration: Date.now() - startTime, + message, + ...(includeOutput && { output }) + }; + } + + /** + * Execute an iteration with verbose output (shows Claude's work in real-time). + * Uses Claude's stream-json format to display assistant messages as they arrive. + * @param prompt - The prompt to send to Claude + * @param iterationNum - Current iteration number (1-indexed) + * @param command - The command to execute ('claude' or 'docker') + * @param sandbox - Whether running in Docker sandbox mode + * @param includeOutput - Whether to include full output in the result + * @param startTime - Timestamp when iteration started (for duration calculation) + * @param callbacks - Optional callbacks for presentation layer output + * @returns Promise resolving to the iteration result + */ + private executeVerboseIteration( + prompt: string, + iterationNum: number, + command: string, + sandbox: boolean, + includeOutput: boolean, + startTime: number, + callbacks?: LoopOutputCallbacks + ): Promise { + const args = this.buildCommandArgs(prompt, sandbox, true); + + return new Promise((resolve) => { + // Prevent multiple resolutions from race conditions between error/close events + let isResolved = false; + const resolveOnce = (result: LoopIteration): void => { + if (!isResolved) { + isResolved = true; + resolve(result); + } + }; + + const child = spawn(command, args, { + cwd: this.projectRoot, + stdio: ['inherit', 'pipe', 'pipe'] + }); + + // Track stdout completion to handle race between data and close events + let stdoutEnded = false; + let finalResult = ''; + let buffer = ''; + + const processLine = (line: string): void => { + if (!line.startsWith('{')) return; + + try { + const event = JSON.parse(line); + + // Validate event structure before accessing properties + if (!this.isValidStreamEvent(event)) { + return; + } + + this.handleStreamEvent(event, callbacks); + + // Capture final result for includeOutput feature + if (event.type === 'result') { + finalResult = typeof event.result === 'string' ? event.result : ''; + } + } catch (error) { + // Log malformed JSON for debugging (non-JSON lines like system output are expected) + if (line.trim().startsWith('{')) { + const parseError = `Failed to parse JSON event: ${error instanceof Error ? error.message : 'Unknown error'}. Line: ${line.substring(0, 100)}...`; + this.reportError(callbacks, parseError, 'warning'); + } + } + }; + + // Handle null stdout (shouldn't happen with pipe, but be defensive) + if (!child.stdout) { + resolveOnce( + this.createErrorIteration( + iterationNum, + startTime, + 'Failed to capture stdout from child process' + ) + ); + return; + } + + child.stdout.on('data', (data: Buffer) => { + try { + const lines = this.processBufferedLines( + buffer, + data.toString('utf-8') + ); + buffer = lines.remaining; + for (const line of lines.complete) { + processLine(line); + } + } catch (error) { + this.reportError( + callbacks, + `Failed to process stdout data: ${error instanceof Error ? error.message : 'Unknown error'}`, + 'warning' + ); + } + }); + + child.stdout.on('end', () => { + stdoutEnded = true; + // Process any remaining buffer when stdout ends + if (buffer) { + processLine(buffer); + buffer = ''; + } + }); + + child.stderr?.on('data', (data: Buffer) => { + const stderrText = data.toString('utf-8'); + callbacks?.onStderr?.(iterationNum, stderrText); + }); + + child.on('error', (error: NodeJS.ErrnoException) => { + const errorMessage = this.formatCommandError(error, command, sandbox); + this.reportError(callbacks, errorMessage); + + // Cleanup: remove listeners and kill process if still running + child.stdout?.removeAllListeners(); + child.stderr?.removeAllListeners(); + if (!child.killed) { + try { + child.kill('SIGTERM'); + } catch { + // Process may have already exited + } + } + + resolveOnce( + this.createErrorIteration(iterationNum, startTime, errorMessage) + ); + }); + + child.on('close', (exitCode: number | null) => { + // Process remaining buffer only if stdout hasn't already ended + if (!stdoutEnded && buffer) { + processLine(buffer); + } + + if (exitCode === null) { + const errorMsg = 'Command terminated abnormally (no exit code)'; + this.reportError(callbacks, errorMsg); + resolveOnce( + this.createErrorIteration(iterationNum, startTime, errorMsg) + ); + return; + } + + const { status, message } = this.parseCompletion(finalResult, exitCode); + resolveOnce({ + iteration: iterationNum, + status, + duration: Date.now() - startTime, + message, + ...(includeOutput && { output: finalResult }) + }); + }); + }); + } + + /** + * Validate that a parsed JSON object has the expected stream event structure. + */ + private isValidStreamEvent(event: unknown): event is { + type: string; + message?: { + content?: Array<{ type: string; text?: string; name?: string }>; + }; + result?: string; + } { + if (!event || typeof event !== 'object') { + return false; + } + + const e = event as Record; + if (!('type' in e) || typeof e.type !== 'string') { + return false; + } + + // Validate message structure if present + if ('message' in e && e.message !== undefined) { + if (typeof e.message !== 'object' || e.message === null) { + return false; + } + const msg = e.message as Record; + if ('content' in msg && !Array.isArray(msg.content)) { + return false; + } + } + + return true; + } + + private buildCommandArgs( + prompt: string, + sandbox: boolean, + verbose: boolean + ): string[] { + if (sandbox) { + return ['sandbox', 'run', 'claude', '-p', prompt]; + } + + const args = ['-p', prompt, '--dangerously-skip-permissions']; + if (verbose) { + // Use stream-json format to show Claude's work in real-time + args.push('--output-format', 'stream-json', '--verbose'); + } + return args; + } + + private formatCommandError( + error: NodeJS.ErrnoException, + command: string, + sandbox: boolean + ): string { + if (error.code === 'ENOENT') { + return sandbox + ? 'Docker is not installed. Install Docker Desktop to use --sandbox mode.' + : 'Claude CLI is not installed. Install with: npm install -g @anthropic-ai/claude-code'; + } + + if (error.code === 'EACCES') { + return `Permission denied executing '${command}'`; + } + + return `Failed to execute '${command}': ${error.message}`; + } + + private createErrorIteration( + iterationNum: number, + startTime: number, + message: string + ): LoopIteration { + return { + iteration: iterationNum, + status: 'error', + duration: Date.now() - startTime, message }; } + + private handleStreamEvent( + event: { + type: string; + message?: { + content?: Array<{ type: string; text?: string; name?: string }>; + }; + }, + callbacks?: LoopOutputCallbacks + ): void { + if (event.type !== 'assistant' || !event.message?.content) return; + + for (const block of event.message.content) { + if (block.type === 'text' && block.text) { + callbacks?.onText?.(block.text); + } else if (block.type === 'tool_use' && block.name) { + callbacks?.onToolUse?.(block.name); + } + } + } + + private processBufferedLines( + buffer: string, + newData: string + ): { complete: string[]; remaining: string } { + const combined = buffer + newData; + const lines = combined.split('\n'); + return { + complete: lines.slice(0, -1), + remaining: lines[lines.length - 1] + }; + } } diff --git a/packages/tm-core/src/modules/loop/types.ts b/packages/tm-core/src/modules/loop/types.ts index 452deeec..b5375d53 100644 --- a/packages/tm-core/src/modules/loop/types.ts +++ b/packages/tm-core/src/modules/loop/types.ts @@ -12,6 +12,33 @@ export type LoopPreset = | 'duplication' | 'entropy'; +/** + * Output callbacks for loop execution. + * These allow the caller (CLI/MCP) to handle presentation while + * the service stays focused on business logic. + * + * Callback modes: + * - `onIterationStart`, `onIterationEnd`, `onError`, `onStderr`: Called in both verbose and non-verbose modes + * - `onText`, `onToolUse`: Called only in VERBOSE mode (--verbose flag) + * - `onOutput`: Called only in NON-VERBOSE mode (default) + */ +export interface LoopOutputCallbacks { + /** Called at the start of each iteration (both modes) */ + onIterationStart?: (iteration: number, total: number) => void; + /** Called when Claude outputs text (VERBOSE MODE ONLY) */ + onText?: (text: string) => void; + /** Called when Claude invokes a tool (VERBOSE MODE ONLY) */ + onToolUse?: (toolName: string) => void; + /** Called when an error occurs (both modes) */ + onError?: (message: string, severity?: 'warning' | 'error') => void; + /** Called for stderr output (both modes) */ + onStderr?: (iteration: number, text: string) => void; + /** Called when non-verbose iteration completes with output (NON-VERBOSE MODE ONLY) */ + onOutput?: (output: string) => void; + /** Called at the end of each iteration with the result (both modes) */ + onIterationEnd?: (iteration: LoopIteration) => void; +} + /** * Configuration options for a loop execution */ @@ -28,6 +55,39 @@ export interface LoopConfig { tag?: string; /** Run Claude in Docker sandbox mode (default: false) */ sandbox?: boolean; + /** + * Include full Claude output in iteration results (default: false) + * + * When true: `LoopIteration.output` will contain full stdout+stderr text + * When false: `LoopIteration.output` will be undefined (saves memory) + * + * Can be combined with `verbose=true` to both display and capture output. + * Note: Output can be large (up to 50MB per iteration). + */ + includeOutput?: boolean; + /** + * Show Claude's work in real-time instead of just the result (default: false) + * + * When true: Output appears as Claude generates it (shows thinking, tool calls) + * When false: Output appears only after iteration completes + * + * Independent of `includeOutput` - controls display timing, not capture. + * Note: NOT compatible with `sandbox=true` (will return error). + */ + verbose?: boolean; + /** + * Brief title describing the current initiative/goal (optional) + * + * If provided, included in the progress file header to give Claude + * context about the bigger picture across iterations. + * Example: "Implement streaming output for loop command" + */ + brief?: string; + /** + * Output callbacks for presentation layer (CLI/MCP). + * If not provided, the service runs silently (no console output). + */ + callbacks?: LoopOutputCallbacks; } /** @@ -44,6 +104,15 @@ export interface LoopIteration { message?: string; /** Duration of this iteration in milliseconds */ duration?: number; + /** + * Full Claude output text + * + * ONLY present when `LoopConfig.includeOutput=true`. + * Contains concatenated stdout and stderr from Claude CLI execution. + * May include ANSI color codes and tool call output. + * Can be large - use `includeOutput=false` to save memory. + */ + output?: string; } /** @@ -58,4 +127,6 @@ export interface LoopResult { tasksCompleted: number; /** Final status of the loop */ finalStatus: 'all_complete' | 'max_iterations' | 'blocked' | 'error'; + /** Error message when finalStatus is 'error' (optional) */ + errorMessage?: string; } diff --git a/tests/setup.js b/tests/setup.js index 52af0669..420d17ac 100644 --- a/tests/setup.js +++ b/tests/setup.js @@ -51,3 +51,16 @@ if (process.env.SILENCE_CONSOLE === 'true') { error: () => {} }; } + +// Clean up signal-exit listeners after all tests to prevent open handle warnings +// This is needed because packages like proper-lockfile register signal handlers +afterAll(async () => { + // Give any pending async operations time to complete + await new Promise((resolve) => setImmediate(resolve)); + + // Clean up any registered signal handlers from signal-exit + const listeners = ['SIGINT', 'SIGTERM', 'SIGHUP']; + for (const signal of listeners) { + process.removeAllListeners(signal); + } +}); From d6e9b15492b43c9eba672d2f14667cb4e410d153 Mon Sep 17 00:00:00 2001 From: Ralph Khreish <35776126+Crunchyman-ralph@users.noreply.github.com> Date: Sun, 25 Jan 2026 12:01:56 +0100 Subject: [PATCH 15/20] chore: exit pre --- .changeset/pre.json | 25 ------------------------- 1 file changed, 25 deletions(-) delete mode 100644 .changeset/pre.json diff --git a/.changeset/pre.json b/.changeset/pre.json deleted file mode 100644 index b41f36ef..00000000 --- a/.changeset/pre.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "mode": "pre", - "tag": "rc", - "initialVersions": { - "task-master-ai": "0.41.0", - "@tm/cli": "", - "docs": "0.0.16", - "extension": "0.26.0", - "@tm/mcp": "", - "@tm/ai-sdk-provider-grok-cli": "", - "@tm/build-config": "", - "@tm/claude-code-plugin": "0.0.10", - "@tm/bridge": "", - "@tm/core": "", - "@tm/profiles": "" - }, - "changesets": [ - "adopt-modifyjson-pattern", - "fix-file-locking", - "list-blocks-ready-filter", - "loop-error-handling", - "loop-sandbox-optional", - "update-codex-cli-models" - ] -} From f406c86966eb5cf84d6622abba082b6be8ec9945 Mon Sep 17 00:00:00 2001 From: Ralph Khreish <35776126+Crunchyman-ralph@users.noreply.github.com> Date: Sun, 25 Jan 2026 12:04:32 +0100 Subject: [PATCH 16/20] chore: exit pre-mode --- .changeset/pre.json | 25 ------------------------- 1 file changed, 25 deletions(-) delete mode 100644 .changeset/pre.json diff --git a/.changeset/pre.json b/.changeset/pre.json deleted file mode 100644 index b41f36ef..00000000 --- a/.changeset/pre.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "mode": "pre", - "tag": "rc", - "initialVersions": { - "task-master-ai": "0.41.0", - "@tm/cli": "", - "docs": "0.0.16", - "extension": "0.26.0", - "@tm/mcp": "", - "@tm/ai-sdk-provider-grok-cli": "", - "@tm/build-config": "", - "@tm/claude-code-plugin": "0.0.10", - "@tm/bridge": "", - "@tm/core": "", - "@tm/profiles": "" - }, - "changesets": [ - "adopt-modifyjson-pattern", - "fix-file-locking", - "list-blocks-ready-filter", - "loop-error-handling", - "loop-sandbox-optional", - "update-codex-cli-models" - ] -} From 364a1607751bbf2dffc8188e7f8aabe99789700a Mon Sep 17 00:00:00 2001 From: Ralph Khreish <35776126+Crunchyman-ralph@users.noreply.github.com> Date: Mon, 26 Jan 2026 15:32:33 +0100 Subject: [PATCH 17/20] chore: add forward-port CI for merges into main-next --- .github/workflows/forward-port.yml | 169 +++++++++++++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100644 .github/workflows/forward-port.yml diff --git a/.github/workflows/forward-port.yml b/.github/workflows/forward-port.yml new file mode 100644 index 00000000..8e533c07 --- /dev/null +++ b/.github/workflows/forward-port.yml @@ -0,0 +1,169 @@ +name: Forward Port to Next + +on: + push: + branches: + - main + +concurrency: + group: forward-port + cancel-in-progress: false + +permissions: + contents: write + pull-requests: write + +jobs: + forward-port: + runs-on: ubuntu-latest + env: + DISCORD_WEBHOOK: ${{ secrets.DISCORD_METRICS_WEBHOOK }} + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Check for existing PR + id: check-pr + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + EXISTING_PR=$(gh pr list --base next --head main --state open --json number --jq '.[0].number // empty') + if [ -n "$EXISTING_PR" ]; then + echo "existing_pr=$EXISTING_PR" >> $GITHUB_OUTPUT + echo "PR #$EXISTING_PR already exists for main → next" + else + echo "existing_pr=" >> $GITHUB_OUTPUT + echo "No existing PR found" + fi + + - name: Check if main has changes not in next + id: check-diff + if: steps.check-pr.outputs.existing_pr == '' + run: | + git fetch origin next + DIFF_COUNT=$(git rev-list --count origin/next..origin/main) + echo "diff_count=$DIFF_COUNT" >> $GITHUB_OUTPUT + if [ "$DIFF_COUNT" -gt 0 ]; then + echo "Found $DIFF_COUNT commit(s) in main not in next" + else + echo "No new commits to forward port" + fi + + - name: Check for merge conflicts + id: check-conflicts + if: steps.check-pr.outputs.existing_pr == '' && steps.check-diff.outputs.diff_count != '0' + run: | + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + + # Try a test merge to detect conflicts + git checkout origin/next + if git merge --no-commit --no-ff origin/main 2>/dev/null; then + echo "has_conflicts=false" >> $GITHUB_OUTPUT + echo "No merge conflicts detected" + else + echo "has_conflicts=true" >> $GITHUB_OUTPUT + # Get list of conflicting files + CONFLICTING_FILES=$(git diff --name-only --diff-filter=U | head -10) + echo "conflicting_files<> $GITHUB_OUTPUT + echo "$CONFLICTING_FILES" >> $GITHUB_OUTPUT + echo "EOF" >> $GITHUB_OUTPUT + echo "Merge conflicts detected in: $CONFLICTING_FILES" + fi + git merge --abort 2>/dev/null || true + + - name: Create forward-port PR + id: create-pr + if: steps.check-pr.outputs.existing_pr == '' && steps.check-diff.outputs.diff_count != '0' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + # Get the commits being forward-ported for the PR body + COMMITS=$(git log origin/next..origin/main --oneline --no-decorate | head -20) + COMMIT_COUNT=$(git rev-list --count origin/next..origin/main) + + # Build conflict warning if needed + CONFLICT_WARNING="" + if [ "${{ steps.check-conflicts.outputs.has_conflicts }}" = "true" ]; then + CONFLICT_WARNING=" + > [!WARNING] + > **Merge conflicts detected.** Manual resolution required. + > + > Conflicting files: + > \`\`\` + > ${{ steps.check-conflicts.outputs.conflicting_files }} + > \`\`\` + + ### How to resolve + + \`\`\`bash + # Option 1: Resolve in a temporary branch (recommended) + git fetch origin + git checkout -b resolve-forward-port origin/next + git merge origin/main + # Fix conflicts in your editor, then: + git add . + git commit + git push origin resolve-forward-port + # Create PR from resolve-forward-port → next, then close this PR + + # Option 2: Resolve directly on next + git checkout next + git pull origin next + git merge origin/main + # Fix conflicts, commit, and push + \`\`\` + " + fi + + # Create PR body + BODY="## Forward Port: main → next + + This PR forward-ports changes from \`main\` to \`next\` to ensure hotfixes and releases are included in the next development branch. + $CONFLICT_WARNING + ### Commits ($COMMIT_COUNT total) + \`\`\` + $COMMITS + \`\`\` + $([ "$COMMIT_COUNT" -gt 20 ] && echo "... and $((COMMIT_COUNT - 20)) more") + + --- + *Auto-generated by forward-port workflow*" + + # Create the PR + PR_URL=$(gh pr create \ + --base next \ + --head main \ + --title "chore: forward port main to next" \ + --label "forward-port" \ + --label "automated" \ + --body "$BODY") + + PR_NUMBER=$(echo "$PR_URL" | grep -oE '[0-9]+$') + echo "pr_number=$PR_NUMBER" >> $GITHUB_OUTPUT + echo "pr_url=$PR_URL" >> $GITHUB_OUTPUT + + # Add conflict label if needed + if [ "${{ steps.check-conflicts.outputs.has_conflicts }}" = "true" ]; then + gh pr edit "$PR_NUMBER" --add-label "has-conflicts" + fi + + - name: Send Discord notification + if: steps.create-pr.outputs.pr_url != '' && env.DISCORD_WEBHOOK != '' + uses: sarisia/actions-status-discord@v1 + with: + webhook: ${{ env.DISCORD_WEBHOOK }} + status: ${{ steps.check-conflicts.outputs.has_conflicts == 'true' && 'Warning' || 'Success' }} + title: "🔄 Forward Port PR Created" + description: | + **main → next** + + ${{ steps.check-conflicts.outputs.has_conflicts == 'true' && '⚠️ **Merge conflicts detected** - manual resolution required' || '✅ No conflicts - ready for review' }} + + **Commits:** ${{ steps.check-diff.outputs.diff_count }} + **PR:** ${{ steps.create-pr.outputs.pr_url }} + color: ${{ steps.check-conflicts.outputs.has_conflicts == 'true' && '0xFFA500' || '0x58AFFF' }} + username: Task Master Bot + avatar_url: https://raw.githubusercontent.com/eyaltoledano/claude-task-master/main/images/logo.png From c798639d1a6b492de1b7cc82a28a13ddfba23eb8 Mon Sep 17 00:00:00 2001 From: Ralph Khreish <35776126+Crunchyman-ralph@users.noreply.github.com> Date: Mon, 26 Jan 2026 17:41:33 +0100 Subject: [PATCH 18/20] feat: add user-defined metadata field to tasks (#1555) (#1611) Co-authored-by: Claude Opus 4.5 Co-authored-by: Cedric Hurst Closes #1555 --- .changeset/task-metadata-field.md | 40 ++ apps/docs/capabilities/task-structure.mdx | 216 ++++++- apps/mcp/src/shared/utils.ts | 60 ++ .../direct-functions/update-subtask-by-id.js | 18 +- .../direct-functions/update-task-by-id.js | 27 +- mcp-server/src/tools/update-subtask.js | 33 +- mcp-server/src/tools/update-task.js | 33 +- packages/tm-bridge/src/update-bridge.ts | 10 +- packages/tm-core/src/common/types/index.ts | 7 + .../adapters/file-storage/file-storage.ts | 31 +- .../tasks/entities/task.entity.spec.ts | 345 +++++++++++ .../src/modules/tasks/entities/task.entity.ts | 5 +- .../metadata-preservation.test.ts | 481 ++++++++++++++++ .../mcp-tools/metadata-updates.test.ts | 540 ++++++++++++++++++ .../storage/file-storage-metadata.test.ts | 472 +++++++++++++++ .../storage/task-metadata-extraction.test.ts | 153 +++++ .../task-manager/update-subtask-by-id.js | 50 +- .../modules/task-manager/update-task-by-id.js | 74 ++- src/schemas/base-schemas.js | 5 + 19 files changed, 2541 insertions(+), 59 deletions(-) create mode 100644 .changeset/task-metadata-field.md create mode 100644 packages/tm-core/src/modules/tasks/entities/task.entity.spec.ts create mode 100644 packages/tm-core/tests/integration/ai-operations/metadata-preservation.test.ts create mode 100644 packages/tm-core/tests/integration/mcp-tools/metadata-updates.test.ts create mode 100644 packages/tm-core/tests/integration/storage/file-storage-metadata.test.ts diff --git a/.changeset/task-metadata-field.md b/.changeset/task-metadata-field.md new file mode 100644 index 00000000..a6fe79f3 --- /dev/null +++ b/.changeset/task-metadata-field.md @@ -0,0 +1,40 @@ +--- +"task-master-ai": minor +--- + +Add optional `metadata` field to tasks for storing user-defined custom data + +Tasks and subtasks now support an optional `metadata` field that allows storing arbitrary JSON data such as: +- External IDs (GitHub issues, Jira tickets, Linear issues) +- Workflow data (sprints, story points, custom statuses) +- Integration data (sync timestamps, external system references) +- Custom tracking (UUIDs, version numbers, audit information) + +Key features: +- **AI-Safe**: Metadata is preserved through all AI operations (update-task, expand, etc.) because AI schemas intentionally exclude this field +- **Flexible Schema**: Store any JSON-serializable data without schema changes +- **Backward Compatible**: The field is optional; existing tasks work without modification +- **Subtask Support**: Both tasks and subtasks can have their own metadata +- **MCP Tool Support**: Use `update_task` and `update_subtask` with the `metadata` parameter to update metadata (requires `TASK_MASTER_ALLOW_METADATA_UPDATES=true` in MCP server environment) + +Example usage: +```json +{ + "id": 1, + "title": "Implement authentication", + "metadata": { + "githubIssue": 42, + "sprint": "Q1-S3", + "storyPoints": 5 + } +} +``` + +MCP metadata update example: +```javascript +// With TASK_MASTER_ALLOW_METADATA_UPDATES=true set in MCP env +update_task({ + id: "1", + metadata: '{"githubIssue": 42, "sprint": "Q1-S3"}' +}) +``` diff --git a/apps/docs/capabilities/task-structure.mdx b/apps/docs/capabilities/task-structure.mdx index dd8394fb..3ea3c5eb 100644 --- a/apps/docs/capabilities/task-structure.mdx +++ b/apps/docs/capabilities/task-structure.mdx @@ -8,17 +8,18 @@ description: "Tasks in Task Master follow a specific format designed to provide Tasks in tasks.json have the following structure: -| Field | Description | Example | -| -------------- | ---------------------------------------------- | ------------------------------------------------------ | -| `id` | Unique identifier for the task. | `1` | -| `title` | Brief, descriptive title. | `"Initialize Repo"` | -| `description` | What the task involves. | `"Create a new repository, set up initial structure."` | -| `status` | Current state. | `"pending"`, `"done"`, `"deferred"` | +| Field | Description | Example | +| -------------- | ----------------------------------------------- | ------------------------------------------------------ | +| `id` | Unique identifier for the task. | `1` | +| `title` | Brief, descriptive title. | `"Initialize Repo"` | +| `description` | What the task involves. | `"Create a new repository, set up initial structure."` | +| `status` | Current state. | `"pending"`, `"done"`, `"deferred"` | | `dependencies` | Prerequisite task IDs. ✅ Completed, ⏱️ Pending | `[1, 2]` | -| `priority` | Task importance. | `"high"`, `"medium"`, `"low"` | -| `details` | Implementation instructions. | `"Use GitHub client ID/secret, handle callback..."` | -| `testStrategy` | How to verify success. | `"Deploy and confirm 'Hello World' response."` | -| `subtasks` | Nested subtasks related to the main task. | `[{"id": 1, "title": "Configure OAuth", ...}]` | +| `priority` | Task importance. | `"high"`, `"medium"`, `"low"` | +| `details` | Implementation instructions. | `"Use GitHub client ID/secret, handle callback..."` | +| `testStrategy` | How to verify success. | `"Deploy and confirm 'Hello World' response."` | +| `subtasks` | Nested subtasks related to the main task. | `[{"id": 1, "title": "Configure OAuth", ...}]` | +| `metadata` | Optional user-defined data (see below). | `{"githubIssue": 42, "sprint": "Q1-S3"}` | ## Task File Format @@ -38,6 +39,158 @@ Individual task files follow this format: ``` +## User-Defined Metadata Field + +The `metadata` field allows you to store arbitrary custom data on tasks without requiring schema changes. This is useful for: + +- **External IDs**: Link tasks to GitHub issues, Jira tickets, Linear issues, etc. +- **Workflow data**: Track sprints, story points, custom statuses +- **Integration data**: Store sync timestamps, external system references +- **Custom tracking**: UUIDs, version numbers, audit information + +### Key Characteristics + + + + The field is optional. Existing tasks work without it. + + + + AI operations preserve your metadata - it's never overwritten by AI. + + + + Store any JSON-serializable data: strings, numbers, objects, arrays. + + + + Both tasks and subtasks can have their own metadata. + + + +### Usage Examples + +**GitHub Issue Linking** + +```json +{ + "id": 1, + "title": "Implement authentication", + "metadata": { + "githubIssue": 42, + "githubIssueUrl": "https://github.com/org/repo/issues/42" + } +} +``` + +**Sprint & Project Management** + +```json +{ + "id": 2, + "title": "Refactor API endpoints", + "metadata": { + "sprint": "Q1-S3", + "storyPoints": 5, + "epic": "API Modernization" + } +} +``` + +**External System Integration** + +```json +{ + "id": 3, + "title": "Fix login bug", + "metadata": { + "jira": { + "key": "PROJ-123", + "type": "bug", + "priority": "P1" + }, + "importedAt": "2024-01-15T10:30:00Z", + "lastSyncedAt": "2024-01-20T14:00:00Z" + } +} +``` + +**Stable UUID Tracking** + +```json +{ + "id": 4, + "title": "Add user preferences", + "metadata": { + "uuid": "550e8400-e29b-41d4-a716-446655440000", + "version": 2, + "createdBy": "import-script" + } +} +``` + + + **Security Note**: Do not store secrets, API keys, or sensitive credentials in + the metadata field. Task data may be visible in logs, exports, or shared with + AI providers. + + +### Metadata Behavior + +| Operation | Metadata Behavior | +| ---------------- | ------------------------------------------------------------ | +| `parse-prd` | New tasks are created without metadata | +| `update-task` | Existing metadata is preserved unless explicitly changed | +| `expand` | Parent task metadata is preserved; subtasks don't inherit it | +| `update-subtask` | Subtask metadata is preserved | +| Manual edit | You can add/modify metadata directly in tasks.json | +| MCP (with flag) | Use the `metadata` parameter to explicitly update metadata | + +### Updating Metadata via MCP + +The `update_task` and `update_subtask` MCP tools support a `metadata` parameter for updating task metadata. This feature is disabled by default for safety. + +**To enable MCP metadata updates:** + +Add `TASK_MASTER_ALLOW_METADATA_UPDATES=true` to your MCP server environment configuration in `.mcp.json`: + +```json +{ + "mcpServers": { + "task-master-ai": { + "command": "npx", + "args": ["-y", "task-master-ai"], + "env": { + "TASK_MASTER_ALLOW_METADATA_UPDATES": "true", + "ANTHROPIC_API_KEY": "your_key_here" + } + } + } +} +``` + +**Usage example:** + +```javascript +// Update task metadata (merges with existing) +update_task({ + id: "1", + projectRoot: "/path/to/project", + metadata: '{"githubIssue": 42, "sprint": "Q1-S3"}' +}) + +// Update only metadata (no prompt required) +update_task({ + id: "1", + projectRoot: "/path/to/project", + metadata: '{"status": "reviewed"}' +}) +``` + + + The `metadata` parameter accepts a JSON string. The new metadata is merged with existing metadata, allowing you to update specific fields without losing others. + + ## Features in Detail @@ -56,7 +209,7 @@ The generated report contains: - Recommended number of subtasks based on complexity - AI-generated expansion prompts customized for each task - Ready-to-run expansion commands directly within each task analysis - + The `complexity-report` command: @@ -67,7 +220,7 @@ The `complexity-report` command: - Highlights tasks recommended for expansion based on threshold score - Includes ready-to-use expansion commands for each complex task - If no report exists, offers to generate one on the spot - + The `expand` command automatically checks for and uses the complexity report: @@ -93,6 +246,7 @@ task-master expand --id=8 # or expand all tasks task-master expand --all ``` + @@ -108,7 +262,7 @@ The `next` command: - Command to mark the task as in-progress - Command to mark the task as done - Commands for working with subtasks - + The `show` command: @@ -119,7 +273,7 @@ The `show` command: - For subtasks, shows parent task relationship - Provides contextual action suggestions based on the task's state - Works with both regular tasks and subtasks (using the format taskId.subtaskId) - + ## Best Practices for AI-Driven Development @@ -128,36 +282,42 @@ The `show` command: The more detailed your PRD, the better the generated tasks will be. - + - After parsing the PRD, review the tasks to ensure they make sense and have appropriate dependencies. + After parsing the PRD, review the tasks to ensure they make sense and have + appropriate dependencies. - + - Use the complexity analysis feature to identify which tasks should be broken down further. + Use the complexity analysis feature to identify which tasks should be broken + down further. - + Always respect task dependencies - the Cursor agent will help with this. - + - If your implementation diverges from the plan, use the update command to keep future tasks aligned. + If your implementation diverges from the plan, use the update command to + keep future tasks aligned. - + Use the expand command to break down complex tasks into manageable subtasks. - + - After any updates to tasks.json, regenerate the task files to keep them in sync. + After any updates to tasks.json, regenerate the task files to keep them in + sync. - + - When asking the Cursor agent to help with a task, provide context about what you're trying to achieve. + When asking the Cursor agent to help with a task, provide context about what + you're trying to achieve. - + - Periodically run the validate-dependencies command to check for invalid or circular dependencies. + Periodically run the validate-dependencies command to check for invalid or + circular dependencies. diff --git a/apps/mcp/src/shared/utils.ts b/apps/mcp/src/shared/utils.ts index 141ad537..e9ec5d50 100644 --- a/apps/mcp/src/shared/utils.ts +++ b/apps/mcp/src/shared/utils.ts @@ -442,3 +442,63 @@ export function withToolContext( } ); } + +/** + * Validates and parses metadata string for MCP tools. + * Checks environment flag, validates JSON format, and ensures metadata is a plain object. + * + * @param metadataString - JSON string to parse and validate + * @param errorResponseFn - Function to create error response + * @returns Object with parsed metadata or error + */ +export function validateMcpMetadata( + metadataString: string | null | undefined, + errorResponseFn: (message: string) => ContentResult +): { parsedMetadata: Record | null; error?: ContentResult } { + // Return null if no metadata provided + if (!metadataString) { + return { parsedMetadata: null }; + } + + // Check if metadata updates are allowed via environment variable + const allowMetadataUpdates = + process.env.TASK_MASTER_ALLOW_METADATA_UPDATES === 'true'; + if (!allowMetadataUpdates) { + return { + parsedMetadata: null, + error: errorResponseFn( + 'Metadata updates are disabled. Set TASK_MASTER_ALLOW_METADATA_UPDATES=true in your MCP server environment to enable metadata modifications.' + ) + }; + } + + // Parse and validate JSON + try { + const parsedMetadata = JSON.parse(metadataString); + + // Ensure it's a plain object (not null, not array) + if ( + typeof parsedMetadata !== 'object' || + parsedMetadata === null || + Array.isArray(parsedMetadata) + ) { + return { + parsedMetadata: null, + error: errorResponseFn( + 'Invalid metadata: must be a JSON object (not null or array)' + ) + }; + } + + return { parsedMetadata }; + } catch (parseError: unknown) { + const message = + parseError instanceof Error ? parseError.message : 'Unknown parse error'; + return { + parsedMetadata: null, + error: errorResponseFn( + `Invalid metadata JSON: ${message}. Provide a valid JSON object string.` + ) + }; + } +} diff --git a/mcp-server/src/core/direct-functions/update-subtask-by-id.js b/mcp-server/src/core/direct-functions/update-subtask-by-id.js index a8d8a6ba..a09a1c02 100644 --- a/mcp-server/src/core/direct-functions/update-subtask-by-id.js +++ b/mcp-server/src/core/direct-functions/update-subtask-by-id.js @@ -17,8 +17,9 @@ import { createLogWrapper } from '../../tools/utils.js'; * @param {Object} args - Command arguments containing id, prompt, useResearch, tasksJsonPath, and projectRoot. * @param {string} args.tasksJsonPath - Explicit path to the tasks.json file. * @param {string} args.id - Subtask ID in format "parent.sub". - * @param {string} args.prompt - Information to append to the subtask. + * @param {string} [args.prompt] - Information to append to the subtask. Required unless only updating metadata. * @param {boolean} [args.research] - Whether to use research role. + * @param {Object} [args.metadata] - Parsed metadata object to merge into subtask metadata. * @param {string} [args.projectRoot] - Project root path. * @param {string} [args.tag] - Tag for the task (optional) * @param {Object} log - Logger object. @@ -27,8 +28,9 @@ import { createLogWrapper } from '../../tools/utils.js'; */ export async function updateSubtaskByIdDirect(args, log, context = {}) { const { session } = context; - // Destructure expected args, including projectRoot - const { tasksJsonPath, id, prompt, research, projectRoot, tag } = args; + // Destructure expected args, including projectRoot and metadata + const { tasksJsonPath, id, prompt, research, metadata, projectRoot, tag } = + args; const logWrapper = createLogWrapper(log); @@ -60,9 +62,10 @@ export async function updateSubtaskByIdDirect(args, log, context = {}) { }; } - if (!prompt) { + // At least prompt or metadata is required (validated in MCP tool layer) + if (!prompt && !metadata) { const errorMessage = - 'No prompt specified. Please provide the information to append.'; + 'No prompt or metadata specified. Please provide information to append or metadata to update.'; logWrapper.error(errorMessage); return { success: false, @@ -77,7 +80,7 @@ export async function updateSubtaskByIdDirect(args, log, context = {}) { const useResearch = research === true; log.info( - `Updating subtask with ID ${subtaskIdStr} with prompt "${prompt}" and research: ${useResearch}` + `Updating subtask with ID ${subtaskIdStr} with prompt "${prompt || '(metadata-only)'}" and research: ${useResearch}` ); const wasSilent = isSilentMode(); @@ -98,7 +101,8 @@ export async function updateSubtaskByIdDirect(args, log, context = {}) { projectRoot, tag, commandName: 'update-subtask', - outputType: 'mcp' + outputType: 'mcp', + metadata }, 'json' ); diff --git a/mcp-server/src/core/direct-functions/update-task-by-id.js b/mcp-server/src/core/direct-functions/update-task-by-id.js index 04f7e85b..fb8e8806 100644 --- a/mcp-server/src/core/direct-functions/update-task-by-id.js +++ b/mcp-server/src/core/direct-functions/update-task-by-id.js @@ -18,9 +18,10 @@ import { findTasksPath } from '../utils/path-utils.js'; * @param {Object} args - Command arguments containing id, prompt, useResearch, tasksJsonPath, and projectRoot. * @param {string} args.tasksJsonPath - Explicit path to the tasks.json file. * @param {string} args.id - Task ID (or subtask ID like "1.2"). - * @param {string} args.prompt - New information/context prompt. + * @param {string} [args.prompt] - New information/context prompt. Required unless only updating metadata. * @param {boolean} [args.research] - Whether to use research role. * @param {boolean} [args.append] - Whether to append timestamped information instead of full update. + * @param {Object} [args.metadata] - Parsed metadata object to merge into task metadata. * @param {string} [args.projectRoot] - Project root path. * @param {string} [args.tag] - Tag for the task (optional) * @param {Object} log - Logger object. @@ -29,9 +30,17 @@ import { findTasksPath } from '../utils/path-utils.js'; */ export async function updateTaskByIdDirect(args, log, context = {}) { const { session } = context; - // Destructure expected args, including projectRoot - const { tasksJsonPath, id, prompt, research, append, projectRoot, tag } = - args; + // Destructure expected args, including projectRoot and metadata + const { + tasksJsonPath, + id, + prompt, + research, + append, + metadata, + projectRoot, + tag + } = args; const logWrapper = createLogWrapper(log); @@ -51,9 +60,10 @@ export async function updateTaskByIdDirect(args, log, context = {}) { }; } - if (!prompt) { + // At least prompt or metadata is required (validated in MCP tool layer) + if (!prompt && !metadata) { const errorMessage = - 'No prompt specified. Please provide a prompt with new information for the task update.'; + 'No prompt or metadata specified. Please provide a prompt with new information or metadata for the task update.'; logWrapper.error(errorMessage); return { success: false, @@ -95,7 +105,7 @@ export async function updateTaskByIdDirect(args, log, context = {}) { const useResearch = research === true; logWrapper.info( - `Updating task with ID ${taskId} with prompt "${prompt}" and research: ${useResearch}` + `Updating task with ID ${taskId} with prompt "${prompt || '(metadata-only)'}" and research: ${useResearch}` ); const wasSilent = isSilentMode(); @@ -116,7 +126,8 @@ export async function updateTaskByIdDirect(args, log, context = {}) { projectRoot, tag, commandName: 'update-task', - outputType: 'mcp' + outputType: 'mcp', + metadata }, 'json', append || false diff --git a/mcp-server/src/tools/update-subtask.js b/mcp-server/src/tools/update-subtask.js index 54366367..512a1a53 100644 --- a/mcp-server/src/tools/update-subtask.js +++ b/mcp-server/src/tools/update-subtask.js @@ -7,7 +7,8 @@ import { TaskIdSchemaForMcp } from '@tm/core'; import { createErrorResponse, handleApiResult, - withNormalizedProjectRoot + withNormalizedProjectRoot, + validateMcpMetadata } from '@tm/mcp'; import { z } from 'zod'; import { resolveTag } from '../../../scripts/modules/utils.js'; @@ -27,11 +28,22 @@ export function registerUpdateSubtaskTool(server) { id: TaskIdSchemaForMcp.describe( 'ID of the subtask to update in format "parentId.subtaskId" (e.g., "5.2"). Parent ID is the ID of the task that contains the subtask.' ), - prompt: z.string().describe('Information to add to the subtask'), + prompt: z + .string() + .optional() + .describe( + 'Information to add to the subtask. Required unless only updating metadata.' + ), research: z .boolean() .optional() .describe('Use Perplexity AI for research-backed updates'), + metadata: z + .string() + .optional() + .describe( + 'JSON string of metadata to merge into subtask metadata. Example: \'{"ticketId": "JIRA-456", "reviewed": true}\'. Requires TASK_MASTER_ALLOW_METADATA_UPDATES=true in MCP environment.' + ), file: z.string().optional().describe('Absolute path to the tasks file'), projectRoot: z .string() @@ -65,12 +77,29 @@ export function registerUpdateSubtaskTool(server) { ); } + // Validate metadata if provided + const validationResult = validateMcpMetadata( + args.metadata, + createErrorResponse + ); + if (validationResult.error) { + return validationResult.error; + } + const parsedMetadata = validationResult.parsedMetadata; + // Validate that at least prompt or metadata is provided + if (!args.prompt && !parsedMetadata) { + return createErrorResponse( + 'Either prompt or metadata must be provided for update-subtask' + ); + } + const result = await updateSubtaskByIdDirect( { tasksJsonPath: tasksJsonPath, id: args.id, prompt: args.prompt, research: args.research, + metadata: parsedMetadata, projectRoot: args.projectRoot, tag: resolvedTag }, diff --git a/mcp-server/src/tools/update-task.js b/mcp-server/src/tools/update-task.js index 129d8a9a..ccbc8d7b 100644 --- a/mcp-server/src/tools/update-task.js +++ b/mcp-server/src/tools/update-task.js @@ -6,7 +6,8 @@ import { createErrorResponse, handleApiResult, - withNormalizedProjectRoot + withNormalizedProjectRoot, + validateMcpMetadata } from '@tm/mcp'; import { z } from 'zod'; import { resolveTag } from '../../../scripts/modules/utils.js'; @@ -30,7 +31,10 @@ export function registerUpdateTaskTool(server) { ), prompt: z .string() - .describe('New information or context to incorporate into the task'), + .optional() + .describe( + 'New information or context to incorporate into the task. Required unless only updating metadata.' + ), research: z .boolean() .optional() @@ -41,6 +45,12 @@ export function registerUpdateTaskTool(server) { .describe( 'Append timestamped information to task details instead of full update' ), + metadata: z + .string() + .optional() + .describe( + 'JSON string of metadata to merge into task metadata. Example: \'{"githubIssue": 42, "sprint": "Q1-S3"}\'. Requires TASK_MASTER_ALLOW_METADATA_UPDATES=true in MCP environment.' + ), file: z.string().optional().describe('Absolute path to the tasks file'), projectRoot: z .string() @@ -76,7 +86,23 @@ export function registerUpdateTaskTool(server) { ); } - // 3. Call Direct Function - Include projectRoot + // Validate metadata if provided + const validationResult = validateMcpMetadata( + args.metadata, + createErrorResponse + ); + if (validationResult.error) { + return validationResult.error; + } + const parsedMetadata = validationResult.parsedMetadata; + // Validate that at least prompt or metadata is provided + if (!args.prompt && !parsedMetadata) { + return createErrorResponse( + 'Either prompt or metadata must be provided for update-task' + ); + } + + // Call Direct Function - Include projectRoot and metadata const result = await updateTaskByIdDirect( { tasksJsonPath: tasksJsonPath, @@ -84,6 +110,7 @@ export function registerUpdateTaskTool(server) { prompt: args.prompt, research: args.research, append: args.append, + metadata: parsedMetadata, projectRoot: args.projectRoot, tag: resolvedTag }, diff --git a/packages/tm-bridge/src/update-bridge.ts b/packages/tm-bridge/src/update-bridge.ts index 728d919f..08ea45e7 100644 --- a/packages/tm-bridge/src/update-bridge.ts +++ b/packages/tm-bridge/src/update-bridge.ts @@ -12,6 +12,10 @@ export interface UpdateBridgeParams extends BaseBridgeParams { prompt: string; /** Whether to append or full update (default: false) */ appendMode?: boolean; + /** Whether to use research mode (default: false) */ + useResearch?: boolean; + /** Metadata to merge into task (for metadata-only updates or alongside prompt) */ + metadata?: Record; } /** @@ -45,6 +49,8 @@ export async function tryUpdateViaRemote( projectRoot, tag, appendMode = false, + useResearch = false, + metadata, isMCP = false, outputFormat = 'text', report @@ -76,7 +82,9 @@ export async function tryUpdateViaRemote( try { // Call the API storage method which handles the remote update await tmCore.tasks.updateWithPrompt(String(taskId), prompt, tag, { - mode + mode, + useResearch, + ...(metadata && { metadata }) }); if (spinner) { diff --git a/packages/tm-core/src/common/types/index.ts b/packages/tm-core/src/common/types/index.ts index cfedf665..ac86f30c 100644 --- a/packages/tm-core/src/common/types/index.ts +++ b/packages/tm-core/src/common/types/index.ts @@ -156,6 +156,13 @@ export interface Task extends TaskImplementationMetadata { recommendedSubtasks?: number; expansionPrompt?: string; complexityReasoning?: string; + + /** + * User-defined metadata that survives all task operations. + * Use for external IDs, custom workflow data, integrations, etc. + * This field is preserved through AI operations, updates, and serialization. + */ + metadata?: Record; } /** diff --git a/packages/tm-core/src/modules/storage/adapters/file-storage/file-storage.ts b/packages/tm-core/src/modules/storage/adapters/file-storage/file-storage.ts index e84342d5..9f6d7f4c 100644 --- a/packages/tm-core/src/modules/storage/adapters/file-storage/file-storage.ts +++ b/packages/tm-core/src/modules/storage/adapters/file-storage/file-storage.ts @@ -283,6 +283,7 @@ export class FileStorage implements IStorage { /** * Normalize task IDs - keep Task IDs as strings, Subtask IDs as numbers + * Note: Uses spread operator to preserve all task properties including user-defined metadata */ private normalizeTaskIds(tasks: Task[]): Task[] { return tasks.map((task) => ({ @@ -372,9 +373,37 @@ export class FileStorage implements IStorage { throw new Error(`Task ${taskId} not found`); } + const existingTask = tasks[taskIndex]; + + // Preserve subtask metadata when subtasks are updated + // AI operations don't include metadata in returned subtasks + let mergedSubtasks = updates.subtasks; + if (updates.subtasks && existingTask.subtasks) { + mergedSubtasks = updates.subtasks.map((updatedSubtask) => { + // Type-coerce IDs for comparison; fall back to title match if IDs don't match + const originalSubtask = existingTask.subtasks?.find( + (st) => + String(st.id) === String(updatedSubtask.id) || + (updatedSubtask.title && st.title === updatedSubtask.title) + ); + // Merge metadata: preserve original and add/override with new + if (originalSubtask?.metadata || updatedSubtask.metadata) { + return { + ...updatedSubtask, + metadata: { + ...(originalSubtask?.metadata || {}), + ...(updatedSubtask.metadata || {}) + } + }; + } + return updatedSubtask; + }); + } + tasks[taskIndex] = { - ...tasks[taskIndex], + ...existingTask, ...updates, + ...(mergedSubtasks && { subtasks: mergedSubtasks }), id: String(taskId) // Keep consistent with normalizeTaskIds }; await this.saveTasks(tasks, tag); diff --git a/packages/tm-core/src/modules/tasks/entities/task.entity.spec.ts b/packages/tm-core/src/modules/tasks/entities/task.entity.spec.ts new file mode 100644 index 00000000..84335fd0 --- /dev/null +++ b/packages/tm-core/src/modules/tasks/entities/task.entity.spec.ts @@ -0,0 +1,345 @@ +/** + * @fileoverview Unit tests for TaskEntity metadata handling + * + * Tests the preservation of user-defined metadata through all TaskEntity operations + * including construction, serialization, and deserialization. + */ + +import { describe, expect, it } from 'vitest'; +import { TaskEntity } from './task.entity.js'; +import type { Task } from '../../../common/types/index.js'; + +/** + * Creates a minimal valid task for testing + */ +function createMinimalTask(overrides: Partial = {}): Task { + return { + id: '1', + title: 'Test Task', + description: 'Test description', + status: 'pending', + priority: 'medium', + dependencies: [], + details: 'Task details', + testStrategy: 'Test strategy', + subtasks: [], + ...overrides + }; +} + +describe('TaskEntity', () => { + describe('metadata property', () => { + it('should preserve metadata through constructor', () => { + const metadata = { uuid: '123', custom: 'value' }; + const task = createMinimalTask({ metadata }); + + const entity = new TaskEntity(task); + + expect(entity.metadata).toEqual(metadata); + }); + + it('should handle undefined metadata', () => { + const task = createMinimalTask(); + // Explicitly not setting metadata + + const entity = new TaskEntity(task); + + expect(entity.metadata).toBeUndefined(); + }); + + it('should handle empty metadata object', () => { + const task = createMinimalTask({ metadata: {} }); + + const entity = new TaskEntity(task); + + expect(entity.metadata).toEqual({}); + }); + + it('should preserve metadata with string values', () => { + const metadata = { externalId: 'EXT-123', source: 'jira' }; + const task = createMinimalTask({ metadata }); + + const entity = new TaskEntity(task); + + expect(entity.metadata).toEqual(metadata); + }); + + it('should preserve metadata with number values', () => { + const metadata = { priority: 5, score: 100 }; + const task = createMinimalTask({ metadata }); + + const entity = new TaskEntity(task); + + expect(entity.metadata).toEqual(metadata); + }); + + it('should preserve metadata with boolean values', () => { + const metadata = { isBlocking: true, reviewed: false }; + const task = createMinimalTask({ metadata }); + + const entity = new TaskEntity(task); + + expect(entity.metadata).toEqual(metadata); + }); + + it('should preserve metadata with nested objects', () => { + const metadata = { + jira: { + key: 'PROJ-123', + sprint: { + id: 5, + name: 'Sprint 5' + } + } + }; + const task = createMinimalTask({ metadata }); + + const entity = new TaskEntity(task); + + expect(entity.metadata).toEqual(metadata); + }); + + it('should preserve metadata with arrays', () => { + const metadata = { + labels: ['bug', 'high-priority'], + relatedIds: [1, 2, 3] + }; + const task = createMinimalTask({ metadata }); + + const entity = new TaskEntity(task); + + expect(entity.metadata).toEqual(metadata); + }); + + it('should preserve metadata with null values', () => { + const metadata = { deletedAt: null, archivedBy: null }; + const task = createMinimalTask({ metadata }); + + const entity = new TaskEntity(task); + + expect(entity.metadata).toEqual(metadata); + }); + + it('should preserve complex mixed metadata', () => { + const metadata = { + externalId: 'EXT-456', + score: 85, + isUrgent: true, + tags: ['frontend', 'refactor'], + integration: { + source: 'github', + issueNumber: 123, + labels: ['enhancement'] + }, + timestamps: { + importedAt: '2024-01-15T10:00:00Z', + lastSynced: null + } + }; + const task = createMinimalTask({ metadata }); + + const entity = new TaskEntity(task); + + expect(entity.metadata).toEqual(metadata); + }); + }); + + describe('toJSON() with metadata', () => { + it('should include metadata in toJSON output', () => { + const metadata = { uuid: '123', custom: 'value' }; + const task = createMinimalTask({ metadata }); + const entity = new TaskEntity(task); + + const json = entity.toJSON(); + + expect(json.metadata).toEqual(metadata); + }); + + it('should include undefined metadata in toJSON output', () => { + const task = createMinimalTask(); + const entity = new TaskEntity(task); + + const json = entity.toJSON(); + + expect(json.metadata).toBeUndefined(); + }); + + it('should include empty metadata object in toJSON output', () => { + const task = createMinimalTask({ metadata: {} }); + const entity = new TaskEntity(task); + + const json = entity.toJSON(); + + expect(json.metadata).toEqual({}); + }); + + it('should preserve nested metadata through toJSON', () => { + const metadata = { + integration: { + source: 'linear', + config: { + apiKey: 'redacted', + projectId: 'proj_123' + } + } + }; + const task = createMinimalTask({ metadata }); + const entity = new TaskEntity(task); + + const json = entity.toJSON(); + + expect(json.metadata).toEqual(metadata); + }); + }); + + describe('round-trip preservation', () => { + it('should preserve metadata through full round-trip', () => { + const originalMetadata = { + uuid: '550e8400-e29b-41d4-a716-446655440000', + externalSystem: 'jira', + customField: { nested: 'value' } + }; + const originalTask = createMinimalTask({ metadata: originalMetadata }); + + // Task -> TaskEntity -> toJSON() -> TaskEntity -> toJSON() + const entity1 = new TaskEntity(originalTask); + const json1 = entity1.toJSON(); + const entity2 = new TaskEntity(json1); + const json2 = entity2.toJSON(); + + expect(json2.metadata).toEqual(originalMetadata); + }); + + it('should preserve all task fields alongside metadata', () => { + const metadata = { custom: 'data' }; + const task = createMinimalTask({ + id: '42', + title: 'Important Task', + description: 'Do the thing', + status: 'in-progress', + priority: 'high', + dependencies: ['1', '2'], + details: 'Detailed info', + testStrategy: 'Unit tests', + tags: ['urgent'], + metadata + }); + + const entity = new TaskEntity(task); + const json = entity.toJSON(); + + expect(json.id).toBe('42'); + expect(json.title).toBe('Important Task'); + expect(json.description).toBe('Do the thing'); + expect(json.status).toBe('in-progress'); + expect(json.priority).toBe('high'); + expect(json.dependencies).toEqual(['1', '2']); + expect(json.details).toBe('Detailed info'); + expect(json.testStrategy).toBe('Unit tests'); + expect(json.tags).toEqual(['urgent']); + expect(json.metadata).toEqual(metadata); + }); + }); + + describe('fromObject() with metadata', () => { + it('should preserve metadata through fromObject', () => { + const metadata = { externalId: 'EXT-789' }; + const task = createMinimalTask({ metadata }); + + const entity = TaskEntity.fromObject(task); + + expect(entity.metadata).toEqual(metadata); + }); + + it('should handle undefined metadata in fromObject', () => { + const task = createMinimalTask(); + + const entity = TaskEntity.fromObject(task); + + expect(entity.metadata).toBeUndefined(); + }); + }); + + describe('fromArray() with metadata', () => { + it('should preserve metadata on all tasks through fromArray', () => { + const task1 = createMinimalTask({ + id: '1', + metadata: { source: 'import1' } + }); + const task2 = createMinimalTask({ + id: '2', + metadata: { source: 'import2' } + }); + const task3 = createMinimalTask({ id: '3' }); // No metadata + + const entities = TaskEntity.fromArray([task1, task2, task3]); + + expect(entities).toHaveLength(3); + expect(entities[0].metadata).toEqual({ source: 'import1' }); + expect(entities[1].metadata).toEqual({ source: 'import2' }); + expect(entities[2].metadata).toBeUndefined(); + }); + + it('should preserve different metadata structures across tasks', () => { + const tasks = [ + createMinimalTask({ id: '1', metadata: { simple: 'value' } }), + createMinimalTask({ + id: '2', + metadata: { nested: { deep: { value: 123 } } } + }), + createMinimalTask({ id: '3', metadata: { array: [1, 2, 3] } }), + createMinimalTask({ id: '4', metadata: {} }) + ]; + + const entities = TaskEntity.fromArray(tasks); + const jsons = entities.map((e) => e.toJSON()); + + expect(jsons[0].metadata).toEqual({ simple: 'value' }); + expect(jsons[1].metadata).toEqual({ nested: { deep: { value: 123 } } }); + expect(jsons[2].metadata).toEqual({ array: [1, 2, 3] }); + expect(jsons[3].metadata).toEqual({}); + }); + }); + + describe('no corruption of other fields', () => { + it('should not affect other task fields when metadata is present', () => { + const taskWithMetadata = createMinimalTask({ + id: '99', + title: 'Original Title', + metadata: { someKey: 'someValue' } + }); + + const entity = new TaskEntity(taskWithMetadata); + + expect(entity.id).toBe('99'); + expect(entity.title).toBe('Original Title'); + expect(entity.status).toBe('pending'); + expect(entity.priority).toBe('medium'); + }); + + it('should not affect subtasks when metadata is present', () => { + const taskWithSubtasks = createMinimalTask({ + metadata: { tracked: true }, + subtasks: [ + { + id: 1, + parentId: '1', + title: 'Subtask 1', + description: 'Subtask desc', + status: 'pending', + priority: 'low', + dependencies: [], + details: '', + testStrategy: '' + } + ] + }); + + const entity = new TaskEntity(taskWithSubtasks); + + expect(entity.subtasks).toHaveLength(1); + expect(entity.subtasks[0].title).toBe('Subtask 1'); + expect(entity.metadata).toEqual({ tracked: true }); + }); + }); +}); diff --git a/packages/tm-core/src/modules/tasks/entities/task.entity.ts b/packages/tm-core/src/modules/tasks/entities/task.entity.ts index 3e17f83e..e7b98555 100644 --- a/packages/tm-core/src/modules/tasks/entities/task.entity.ts +++ b/packages/tm-core/src/modules/tasks/entities/task.entity.ts @@ -36,6 +36,7 @@ export class TaskEntity implements Task { recommendedSubtasks?: number; expansionPrompt?: string; complexityReasoning?: string; + metadata?: Record; constructor(data: Task | (Omit & { id: number | string })) { this.validate(data); @@ -68,6 +69,7 @@ export class TaskEntity implements Task { this.recommendedSubtasks = data.recommendedSubtasks; this.expansionPrompt = data.expansionPrompt; this.complexityReasoning = data.complexityReasoning; + this.metadata = data.metadata; } /** @@ -255,7 +257,8 @@ export class TaskEntity implements Task { complexity: this.complexity, recommendedSubtasks: this.recommendedSubtasks, expansionPrompt: this.expansionPrompt, - complexityReasoning: this.complexityReasoning + complexityReasoning: this.complexityReasoning, + metadata: this.metadata }; } diff --git a/packages/tm-core/tests/integration/ai-operations/metadata-preservation.test.ts b/packages/tm-core/tests/integration/ai-operations/metadata-preservation.test.ts new file mode 100644 index 00000000..d93be9ba --- /dev/null +++ b/packages/tm-core/tests/integration/ai-operations/metadata-preservation.test.ts @@ -0,0 +1,481 @@ +/** + * @fileoverview Integration tests for metadata preservation across AI operations + * + * Tests that user-defined metadata survives all AI operations including: + * - update-task: AI updates task fields but doesn't include metadata in response + * - expand-task: AI generates subtasks but parent task metadata is preserved + * - parse-prd: AI generates new tasks without metadata field + * + * Key insight: AI schemas (base-schemas.js) intentionally EXCLUDE the metadata field. + * This means AI responses never include metadata, and the spread operator in + * storage/service layers preserves existing metadata during updates. + * + * These tests simulate what happens when AI operations update tasks - the AI + * returns a task object without a metadata field, and we verify that the + * existing metadata is preserved through the storage layer. + */ + +import { afterEach, beforeEach, describe, expect, it } from 'vitest'; +import * as fs from 'fs'; +import * as path from 'path'; +import * as os from 'os'; +import { FileStorage } from '../../../src/modules/storage/adapters/file-storage/file-storage.js'; +import type { Task, Subtask } from '../../../src/common/types/index.js'; + +/** + * Creates a minimal valid task for testing + */ +function createTask(id: string, overrides: Partial = {}): Task { + return { + id, + title: `Task ${id}`, + description: `Description for task ${id}`, + status: 'pending', + priority: 'medium', + dependencies: [], + details: '', + testStrategy: '', + subtasks: [], + ...overrides + }; +} + +/** + * Creates a realistic metadata object like external integrations would produce + */ +function createRealisticMetadata(): Record { + return { + uuid: '550e8400-e29b-41d4-a716-446655440000', + githubIssue: 42, + sprint: 'Q1-S3', + jira: { + key: 'PROJ-123', + type: 'story', + epic: 'EPIC-45' + }, + importedAt: '2024-01-15T10:30:00Z', + source: 'github-sync', + labels: ['frontend', 'refactor', 'high-priority'] + }; +} + +describe('AI Operation Metadata Preservation - Integration Tests', () => { + let tempDir: string; + let storage: FileStorage; + + beforeEach(() => { + // Create a temp directory for each test + tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'taskmaster-ai-test-')); + // Create .taskmaster/tasks directory structure + const taskmasterDir = path.join(tempDir, '.taskmaster', 'tasks'); + fs.mkdirSync(taskmasterDir, { recursive: true }); + storage = new FileStorage(tempDir); + }); + + afterEach(() => { + // Clean up temp directory + fs.rmSync(tempDir, { recursive: true, force: true }); + }); + + describe('update-task operation simulation', () => { + it('should preserve metadata when AI returns task without metadata field', async () => { + // Setup: Task with user metadata + const originalMetadata = createRealisticMetadata(); + const tasks: Task[] = [ + createTask('1', { + title: 'Original Title', + description: 'Original description', + metadata: originalMetadata + }) + ]; + await storage.saveTasks(tasks); + + // Simulate AI response: AI updates title/description but doesn't include metadata + // This is the exact pattern from update-task-by-id.js + const aiGeneratedUpdate: Partial = { + title: 'AI Updated Title', + description: 'AI refined description with more detail', + details: 'AI generated implementation details', + testStrategy: 'AI suggested test approach' + // Note: NO metadata field - AI schemas don't include it + }; + + // Apply update through FileStorage (simulating what AI operations do) + await storage.updateTask('1', aiGeneratedUpdate); + + // Verify: AI fields updated, metadata preserved + const loadedTasks = await storage.loadTasks(); + expect(loadedTasks[0].title).toBe('AI Updated Title'); + expect(loadedTasks[0].description).toBe( + 'AI refined description with more detail' + ); + expect(loadedTasks[0].details).toBe( + 'AI generated implementation details' + ); + expect(loadedTasks[0].testStrategy).toBe('AI suggested test approach'); + // Critical: metadata must be preserved + expect(loadedTasks[0].metadata).toEqual(originalMetadata); + }); + + it('should preserve metadata through multiple sequential AI updates', async () => { + const metadata = { externalId: 'EXT-999', version: 1 }; + const tasks: Task[] = [createTask('1', { metadata })]; + await storage.saveTasks(tasks); + + // First AI update + await storage.updateTask('1', { title: 'First AI Update' }); + + // Second AI update + await storage.updateTask('1', { + description: 'Second AI Update adds details' + }); + + // Third AI update + await storage.updateTask('1', { priority: 'high' }); + + // Verify metadata survived all updates + const loadedTasks = await storage.loadTasks(); + expect(loadedTasks[0].title).toBe('First AI Update'); + expect(loadedTasks[0].description).toBe('Second AI Update adds details'); + expect(loadedTasks[0].priority).toBe('high'); + expect(loadedTasks[0].metadata).toEqual(metadata); + }); + + it('should preserve realistic integration metadata during AI operations', async () => { + const realisticMetadata = createRealisticMetadata(); + const tasks: Task[] = [ + createTask('1', { + title: 'Sync from GitHub', + metadata: realisticMetadata + }) + ]; + await storage.saveTasks(tasks); + + // AI enriches the task + await storage.updateTask('1', { + title: 'Implement user authentication', + description: 'Set up JWT-based authentication system', + details: ` +## Implementation Plan +1. Create auth middleware +2. Implement JWT token generation +3. Add refresh token logic +4. Set up protected routes + `.trim(), + testStrategy: + 'Unit tests for JWT functions, integration tests for auth flow' + }); + + const loadedTasks = await storage.loadTasks(); + // All AI updates applied + expect(loadedTasks[0].title).toBe('Implement user authentication'); + expect(loadedTasks[0].details).toContain('Implementation Plan'); + // Realistic metadata preserved with all its nested structure + expect(loadedTasks[0].metadata).toEqual(realisticMetadata); + expect( + (loadedTasks[0].metadata as Record).githubIssue + ).toBe(42); + expect( + ( + (loadedTasks[0].metadata as Record).jira as Record< + string, + unknown + > + ).key + ).toBe('PROJ-123'); + }); + }); + + describe('expand-task operation simulation', () => { + it('should preserve parent task metadata when adding AI-generated subtasks', async () => { + const parentMetadata = { tracked: true, source: 'import' }; + const tasks: Task[] = [ + createTask('1', { + metadata: parentMetadata, + subtasks: [] + }) + ]; + await storage.saveTasks(tasks); + + // Simulate expand-task: AI generates subtasks (without metadata) + const aiGeneratedSubtasks: Subtask[] = [ + { + id: 1, + parentId: '1', + title: 'AI Subtask 1', + description: 'First step generated by AI', + status: 'pending', + priority: 'medium', + dependencies: [], + details: 'Implementation details', + testStrategy: 'Test approach' + // No metadata - AI doesn't generate it + }, + { + id: 2, + parentId: '1', + title: 'AI Subtask 2', + description: 'Second step generated by AI', + status: 'pending', + priority: 'medium', + dependencies: ['1'], + details: 'More details', + testStrategy: 'More tests' + } + ]; + + // Apply subtasks update + await storage.updateTask('1', { subtasks: aiGeneratedSubtasks }); + + // Verify parent metadata preserved + const loadedTasks = await storage.loadTasks(); + expect(loadedTasks[0].metadata).toEqual(parentMetadata); + expect(loadedTasks[0].subtasks).toHaveLength(2); + // Subtasks don't inherit parent metadata + expect(loadedTasks[0].subtasks[0].metadata).toBeUndefined(); + expect(loadedTasks[0].subtasks[1].metadata).toBeUndefined(); + }); + + it('should preserve subtask metadata when parent is updated', async () => { + const tasks: Task[] = [ + createTask('1', { + metadata: { parentMeta: 'parent-value' }, + subtasks: [ + { + id: 1, + parentId: '1', + title: 'Subtask with metadata', + description: 'Has its own metadata', + status: 'pending', + priority: 'medium', + dependencies: [], + details: '', + testStrategy: '', + metadata: { subtaskMeta: 'subtask-value' } + } + ] + }) + ]; + await storage.saveTasks(tasks); + + // AI updates parent task (not subtasks) + await storage.updateTask('1', { + title: 'Parent Updated by AI', + description: 'New description' + }); + + const loadedTasks = await storage.loadTasks(); + // Parent metadata preserved + expect(loadedTasks[0].metadata).toEqual({ parentMeta: 'parent-value' }); + // Subtask and its metadata preserved + expect(loadedTasks[0].subtasks[0].metadata).toEqual({ + subtaskMeta: 'subtask-value' + }); + }); + }); + + describe('parse-prd operation simulation', () => { + it('should generate tasks without metadata field (as AI would)', async () => { + // Simulate parse-prd output: AI generates tasks without metadata + const aiGeneratedTasks: Task[] = [ + { + id: '1', + title: 'Set up project structure', + description: 'Initialize the project with proper folder structure', + status: 'pending', + priority: 'high', + dependencies: [], + details: 'Create src/, tests/, docs/ directories', + testStrategy: 'Verify directories exist', + subtasks: [] + // No metadata - AI doesn't generate it + }, + { + id: '2', + title: 'Implement core functionality', + description: 'Build the main features', + status: 'pending', + priority: 'high', + dependencies: ['1'], + details: 'Implement main modules', + testStrategy: 'Unit tests for each module', + subtasks: [] + } + ]; + + await storage.saveTasks(aiGeneratedTasks); + + // Verify tasks saved correctly without metadata + const loadedTasks = await storage.loadTasks(); + expect(loadedTasks).toHaveLength(2); + expect(loadedTasks[0].metadata).toBeUndefined(); + expect(loadedTasks[1].metadata).toBeUndefined(); + // Later, user can add metadata + await storage.updateTask('1', { + metadata: { externalId: 'USER-ADDED-123' } + }); + const updatedTasks = await storage.loadTasks(); + expect(updatedTasks[0].metadata).toEqual({ + externalId: 'USER-ADDED-123' + }); + }); + }); + + describe('update-subtask operation simulation', () => { + it('should preserve subtask metadata when appending info', async () => { + const tasks: Task[] = [ + createTask('1', { + subtasks: [ + { + id: 1, + parentId: '1', + title: 'Tracked subtask', + description: 'Has metadata from import', + status: 'pending', + priority: 'medium', + dependencies: [], + details: 'Initial details', + testStrategy: '', + metadata: { importedFrom: 'jira', ticketId: 'JIRA-456' } + } + ] + }) + ]; + await storage.saveTasks(tasks); + + // Update subtask details (like update-subtask command does) + const updatedSubtask: Subtask = { + id: 1, + parentId: '1', + title: 'Tracked subtask', + description: 'Has metadata from import', + status: 'in-progress', + priority: 'medium', + dependencies: [], + details: + 'Initial details\n\n\nImplementation notes from AI\n', + testStrategy: 'AI suggested tests', + metadata: { importedFrom: 'jira', ticketId: 'JIRA-456' } + }; + + await storage.updateTask('1', { subtasks: [updatedSubtask] }); + + const loadedTasks = await storage.loadTasks(); + expect(loadedTasks[0].subtasks[0].metadata).toEqual({ + importedFrom: 'jira', + ticketId: 'JIRA-456' + }); + expect(loadedTasks[0].subtasks[0].details).toContain( + 'Implementation notes from AI' + ); + }); + }); + + describe('mixed AI and storage metadata coexistence', () => { + it('should preserve user metadata alongside AI-generated task fields', async () => { + const tasks: Task[] = [ + createTask('1', { + // AI-generated fields + relevantFiles: [ + { + path: 'src/auth.ts', + description: 'Auth module', + action: 'modify' + } + ], + category: 'development', + skills: ['TypeScript', 'Security'], + acceptanceCriteria: ['Tests pass', 'Code reviewed'], + // User-defined metadata (from import) + metadata: { + externalId: 'JIRA-789', + storyPoints: 5, + sprint: 'Sprint 10' + } + }) + ]; + await storage.saveTasks(tasks); + + // AI updates the task (doesn't touch metadata) + await storage.updateTask('1', { + relevantFiles: [ + { path: 'src/auth.ts', description: 'Auth module', action: 'modify' }, + { + path: 'src/middleware.ts', + description: 'Added middleware', + action: 'create' + } + ], + skills: ['TypeScript', 'Security', 'JWT'] + }); + + const loadedTasks = await storage.loadTasks(); + // AI fields updated + expect(loadedTasks[0].relevantFiles).toHaveLength(2); + expect(loadedTasks[0].skills).toContain('JWT'); + // User metadata preserved + expect(loadedTasks[0].metadata).toEqual({ + externalId: 'JIRA-789', + storyPoints: 5, + sprint: 'Sprint 10' + }); + }); + }); + + describe('edge cases for AI operations', () => { + it('should handle task with only metadata being updated by AI', async () => { + // Task has ONLY metadata set (sparse task) + const tasks: Task[] = [ + createTask('1', { + metadata: { sparse: true, tracking: 'minimal' } + }) + ]; + await storage.saveTasks(tasks); + + // AI fills in all the other fields + await storage.updateTask('1', { + title: 'AI Generated Title', + description: 'AI Generated Description', + details: 'AI Generated Details', + testStrategy: 'AI Generated Test Strategy', + priority: 'high' + }); + + const loadedTasks = await storage.loadTasks(); + expect(loadedTasks[0].title).toBe('AI Generated Title'); + expect(loadedTasks[0].priority).toBe('high'); + expect(loadedTasks[0].metadata).toEqual({ + sparse: true, + tracking: 'minimal' + }); + }); + + it('should preserve deeply nested metadata through AI operations', async () => { + const deepMetadata = { + integration: { + source: { + type: 'github', + repo: { + owner: 'org', + name: 'repo', + issue: { + number: 123, + labels: ['bug', 'priority-1'] + } + } + } + } + }; + const tasks: Task[] = [createTask('1', { metadata: deepMetadata })]; + await storage.saveTasks(tasks); + + // Multiple AI operations + await storage.updateTask('1', { title: 'Update 1' }); + await storage.updateTask('1', { description: 'Update 2' }); + await storage.updateTask('1', { status: 'in-progress' }); + + const loadedTasks = await storage.loadTasks(); + expect(loadedTasks[0].metadata).toEqual(deepMetadata); + }); + }); +}); diff --git a/packages/tm-core/tests/integration/mcp-tools/metadata-updates.test.ts b/packages/tm-core/tests/integration/mcp-tools/metadata-updates.test.ts new file mode 100644 index 00000000..3cd271b8 --- /dev/null +++ b/packages/tm-core/tests/integration/mcp-tools/metadata-updates.test.ts @@ -0,0 +1,540 @@ +/** + * @fileoverview Integration tests for MCP tool metadata updates + * + * Tests that metadata updates via update-task and update-subtask MCP tools + * work correctly with the TASK_MASTER_ALLOW_METADATA_UPDATES flag. + * + * These tests validate the metadata flow from MCP tool layer through + * direct functions to the legacy scripts and storage layer. + * + * NOTE: These tests focus on validation logic (JSON parsing, env flags, merge behavior) + * rather than full end-to-end MCP tool calls. End-to-end behavior is covered by: + * - FileStorage metadata tests (storage layer) + * - AI operation metadata preservation tests (full workflow) + * - Direct function integration (covered by the validation tests here) + */ + +import { afterEach, beforeEach, describe, expect, it } from 'vitest'; +import * as fs from 'fs'; +import * as path from 'path'; +import * as os from 'os'; +import { validateMcpMetadata } from '@tm/mcp'; + +describe('MCP Tool Metadata Updates - Integration Tests', () => { + let tempDir: string; + let tasksJsonPath: string; + + beforeEach(() => { + // Create a temp directory for each test + tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'taskmaster-mcp-test-')); + // Create .taskmaster/tasks directory structure + const taskmasterDir = path.join(tempDir, '.taskmaster', 'tasks'); + fs.mkdirSync(taskmasterDir, { recursive: true }); + tasksJsonPath = path.join(taskmasterDir, 'tasks.json'); + }); + + afterEach(() => { + // Clean up temp directory + fs.rmSync(tempDir, { recursive: true, force: true }); + // Reset env vars + delete process.env.TASK_MASTER_ALLOW_METADATA_UPDATES; + }); + + describe('metadata JSON validation', () => { + it('should validate metadata is a valid JSON object', () => { + // Test valid JSON objects + const validMetadata = [ + '{"key": "value"}', + '{"githubIssue": 42, "sprint": "Q1"}', + '{"nested": {"deep": true}}' + ]; + + for (const meta of validMetadata) { + const parsed = JSON.parse(meta); + expect(typeof parsed).toBe('object'); + expect(parsed).not.toBeNull(); + expect(Array.isArray(parsed)).toBe(false); + } + }); + + it('should reject invalid metadata formats', () => { + const invalidMetadata = [ + '"string"', // Just a string + '123', // Just a number + 'true', // Just a boolean + 'null', // Null + '[1, 2, 3]' // Array + ]; + + for (const meta of invalidMetadata) { + const parsed = JSON.parse(meta); + const isValidObject = + typeof parsed === 'object' && + parsed !== null && + !Array.isArray(parsed); + expect(isValidObject).toBe(false); + } + }); + + it('should reject invalid JSON strings', () => { + const invalidJson = [ + '{key: "value"}', // Missing quotes + "{'key': 'value'}", // Single quotes + '{"key": }' // Incomplete + ]; + + for (const json of invalidJson) { + expect(() => JSON.parse(json)).toThrow(); + } + }); + }); + + describe('TASK_MASTER_ALLOW_METADATA_UPDATES flag', () => { + it('should block metadata updates when flag is not set', () => { + delete process.env.TASK_MASTER_ALLOW_METADATA_UPDATES; + const allowMetadataUpdates = + process.env.TASK_MASTER_ALLOW_METADATA_UPDATES === 'true'; + expect(allowMetadataUpdates).toBe(false); + }); + + it('should block metadata updates when flag is set to false', () => { + process.env.TASK_MASTER_ALLOW_METADATA_UPDATES = 'false'; + const allowMetadataUpdates = + process.env.TASK_MASTER_ALLOW_METADATA_UPDATES === 'true'; + expect(allowMetadataUpdates).toBe(false); + }); + + it('should allow metadata updates when flag is set to true', () => { + process.env.TASK_MASTER_ALLOW_METADATA_UPDATES = 'true'; + const allowMetadataUpdates = + process.env.TASK_MASTER_ALLOW_METADATA_UPDATES === 'true'; + expect(allowMetadataUpdates).toBe(true); + }); + + it('should be case-sensitive (TRUE should not work)', () => { + process.env.TASK_MASTER_ALLOW_METADATA_UPDATES = 'TRUE'; + const allowMetadataUpdates = + process.env.TASK_MASTER_ALLOW_METADATA_UPDATES === 'true'; + expect(allowMetadataUpdates).toBe(false); + }); + }); + + describe('metadata merge logic', () => { + it('should merge new metadata with existing metadata', () => { + const existingMetadata = { githubIssue: 42, sprint: 'Q1' }; + const newMetadata = { storyPoints: 5, reviewed: true }; + + const merged = { + ...(existingMetadata || {}), + ...(newMetadata || {}) + }; + + expect(merged).toEqual({ + githubIssue: 42, + sprint: 'Q1', + storyPoints: 5, + reviewed: true + }); + }); + + it('should override existing keys with new values', () => { + const existingMetadata = { githubIssue: 42, sprint: 'Q1' }; + const newMetadata = { sprint: 'Q2' }; // Override sprint + + const merged = { + ...(existingMetadata || {}), + ...(newMetadata || {}) + }; + + expect(merged).toEqual({ + githubIssue: 42, + sprint: 'Q2' // Overridden + }); + }); + + it('should handle empty existing metadata', () => { + const existingMetadata = undefined; + const newMetadata = { key: 'value' }; + + const merged = { + ...(existingMetadata || {}), + ...(newMetadata || {}) + }; + + expect(merged).toEqual({ key: 'value' }); + }); + + it('should handle empty new metadata', () => { + const existingMetadata = { key: 'value' }; + const newMetadata = undefined; + + const merged = { + ...(existingMetadata || {}), + ...(newMetadata || {}) + }; + + expect(merged).toEqual({ key: 'value' }); + }); + + it('should preserve nested objects in metadata', () => { + const existingMetadata = { + jira: { key: 'PROJ-123' }, + other: 'data' + }; + const newMetadata = { + jira: { key: 'PROJ-456', type: 'bug' } // Replace entire jira object + }; + + const merged = { + ...(existingMetadata || {}), + ...(newMetadata || {}) + }; + + expect(merged).toEqual({ + jira: { key: 'PROJ-456', type: 'bug' }, // Entire jira object replaced + other: 'data' + }); + }); + }); + + describe('metadata-only update detection', () => { + it('should detect metadata-only update when prompt is empty', () => { + const prompt: string = ''; + const metadata = { key: 'value' }; + + const isMetadataOnly = metadata && (!prompt || prompt.trim() === ''); + expect(isMetadataOnly).toBe(true); + }); + + it('should detect metadata-only update when prompt is whitespace', () => { + const prompt: string = ' '; + const metadata = { key: 'value' }; + + const isMetadataOnly = metadata && (!prompt || prompt.trim() === ''); + expect(isMetadataOnly).toBe(true); + }); + + it('should not be metadata-only when prompt is provided', () => { + const prompt: string = 'Update task details'; + const metadata = { key: 'value' }; + + const isMetadataOnly = metadata && (!prompt || prompt.trim() === ''); + expect(isMetadataOnly).toBe(false); + }); + + it('should not be metadata-only when neither is provided', () => { + const prompt: string = ''; + const metadata = null; + + const isMetadataOnly = metadata && (!prompt || prompt.trim() === ''); + expect(isMetadataOnly).toBeFalsy(); // metadata is null, so falsy + }); + }); + + describe('tasks.json file format with metadata', () => { + it('should write and read metadata correctly in tasks.json', () => { + const tasksData = { + tasks: [ + { + id: 1, + title: 'Test Task', + description: 'Description', + status: 'pending', + priority: 'medium', + dependencies: [], + details: '', + testStrategy: '', + subtasks: [], + metadata: { + githubIssue: 42, + sprint: 'Q1-S3', + storyPoints: 5 + } + } + ], + metadata: { + version: '1.0.0', + lastModified: new Date().toISOString(), + taskCount: 1, + completedCount: 0 + } + }; + + // Write + fs.writeFileSync(tasksJsonPath, JSON.stringify(tasksData, null, 2)); + + // Read and verify + const rawContent = fs.readFileSync(tasksJsonPath, 'utf-8'); + const parsed = JSON.parse(rawContent); + + expect(parsed.tasks[0].metadata).toEqual({ + githubIssue: 42, + sprint: 'Q1-S3', + storyPoints: 5 + }); + }); + + it('should write and read subtask metadata correctly', () => { + const tasksData = { + tasks: [ + { + id: 1, + title: 'Parent Task', + description: 'Description', + status: 'pending', + priority: 'medium', + dependencies: [], + details: '', + testStrategy: '', + subtasks: [ + { + id: 1, + parentId: 1, + title: 'Subtask', + description: 'Subtask description', + status: 'pending', + priority: 'medium', + dependencies: [], + details: '', + testStrategy: '', + metadata: { + linkedTicket: 'JIRA-456', + reviewed: true + } + } + ] + } + ], + metadata: { + version: '1.0.0', + lastModified: new Date().toISOString(), + taskCount: 1, + completedCount: 0 + } + }; + + // Write + fs.writeFileSync(tasksJsonPath, JSON.stringify(tasksData, null, 2)); + + // Read and verify + const rawContent = fs.readFileSync(tasksJsonPath, 'utf-8'); + const parsed = JSON.parse(rawContent); + + expect(parsed.tasks[0].subtasks[0].metadata).toEqual({ + linkedTicket: 'JIRA-456', + reviewed: true + }); + }); + }); + + describe('error message formatting', () => { + it('should provide clear error for disabled metadata updates', () => { + const errorMessage = + 'Metadata updates are disabled. Set TASK_MASTER_ALLOW_METADATA_UPDATES=true in your MCP server environment to enable metadata modifications.'; + + expect(errorMessage).toContain('TASK_MASTER_ALLOW_METADATA_UPDATES'); + expect(errorMessage).toContain('true'); + expect(errorMessage).toContain('MCP server environment'); + }); + + it('should provide clear error for invalid JSON', () => { + const invalidJson = '{key: value}'; + const errorMessage = `Invalid metadata JSON: ${invalidJson}. Provide a valid JSON object string.`; + + expect(errorMessage).toContain(invalidJson); + expect(errorMessage).toContain('valid JSON object'); + }); + + it('should provide clear error for non-object JSON', () => { + const errorMessage = + 'Invalid metadata: must be a JSON object (not null or array)'; + + expect(errorMessage).toContain('JSON object'); + expect(errorMessage).toContain('not null or array'); + }); + }); +}); + +/** + * Unit tests for the actual validateMcpMetadata function from @tm/mcp + * These tests verify the security gate behavior for MCP metadata updates. + */ +describe('validateMcpMetadata function', () => { + // Mock error response creator that matches the MCP ContentResult format + const mockCreateErrorResponse = (message: string) => ({ + content: [{ type: 'text' as const, text: `Error: ${message}` }], + isError: true + }); + + // Helper to safely extract text from content + const getErrorText = ( + error: { content: Array<{ type: string; text?: string }> } | undefined + ): string => { + if (!error?.content?.[0]) return ''; + const content = error.content[0]; + return 'text' in content ? (content.text ?? '') : ''; + }; + + afterEach(() => { + delete process.env.TASK_MASTER_ALLOW_METADATA_UPDATES; + }); + + describe('when metadataString is null/undefined', () => { + it('should return null parsedMetadata for undefined input', () => { + const result = validateMcpMetadata(undefined, mockCreateErrorResponse); + expect(result.parsedMetadata).toBeNull(); + expect(result.error).toBeUndefined(); + }); + + it('should return null parsedMetadata for null input', () => { + const result = validateMcpMetadata(null, mockCreateErrorResponse); + expect(result.parsedMetadata).toBeNull(); + expect(result.error).toBeUndefined(); + }); + + it('should return null parsedMetadata for empty string', () => { + const result = validateMcpMetadata('', mockCreateErrorResponse); + expect(result.parsedMetadata).toBeNull(); + expect(result.error).toBeUndefined(); + }); + }); + + describe('when TASK_MASTER_ALLOW_METADATA_UPDATES is not set', () => { + beforeEach(() => { + delete process.env.TASK_MASTER_ALLOW_METADATA_UPDATES; + }); + + it('should return error when flag is not set', () => { + const result = validateMcpMetadata( + '{"key": "value"}', + mockCreateErrorResponse + ); + expect(result.error).toBeDefined(); + expect(result.error?.isError).toBe(true); + expect(getErrorText(result.error)).toContain( + 'TASK_MASTER_ALLOW_METADATA_UPDATES' + ); + }); + + it('should return error when flag is set to "false"', () => { + process.env.TASK_MASTER_ALLOW_METADATA_UPDATES = 'false'; + const result = validateMcpMetadata( + '{"key": "value"}', + mockCreateErrorResponse + ); + expect(result.error).toBeDefined(); + expect(result.error?.isError).toBe(true); + }); + + it('should return error when flag is "TRUE" (case sensitive)', () => { + process.env.TASK_MASTER_ALLOW_METADATA_UPDATES = 'TRUE'; + const result = validateMcpMetadata( + '{"key": "value"}', + mockCreateErrorResponse + ); + expect(result.error).toBeDefined(); + expect(result.error?.isError).toBe(true); + }); + + it('should return error when flag is "True" (case sensitive)', () => { + process.env.TASK_MASTER_ALLOW_METADATA_UPDATES = 'True'; + const result = validateMcpMetadata( + '{"key": "value"}', + mockCreateErrorResponse + ); + expect(result.error).toBeDefined(); + expect(result.error?.isError).toBe(true); + }); + }); + + describe('when TASK_MASTER_ALLOW_METADATA_UPDATES is "true"', () => { + beforeEach(() => { + process.env.TASK_MASTER_ALLOW_METADATA_UPDATES = 'true'; + }); + + it('should return parsed metadata for valid JSON object', () => { + const result = validateMcpMetadata( + '{"key": "value"}', + mockCreateErrorResponse + ); + expect(result.parsedMetadata).toEqual({ key: 'value' }); + expect(result.error).toBeUndefined(); + }); + + it('should return parsed metadata for complex nested object', () => { + const complexMeta = { + githubIssue: 42, + sprint: 'Q1-S3', + nested: { deep: { value: true } }, + array: [1, 2, 3] + }; + const result = validateMcpMetadata( + JSON.stringify(complexMeta), + mockCreateErrorResponse + ); + expect(result.parsedMetadata).toEqual(complexMeta); + expect(result.error).toBeUndefined(); + }); + + it('should return parsed metadata for empty object', () => { + const result = validateMcpMetadata('{}', mockCreateErrorResponse); + expect(result.parsedMetadata).toEqual({}); + expect(result.error).toBeUndefined(); + }); + + it('should return error for invalid JSON string', () => { + const result = validateMcpMetadata( + '{key: "value"}', + mockCreateErrorResponse + ); + expect(result.error).toBeDefined(); + expect(result.error?.isError).toBe(true); + expect(getErrorText(result.error)).toContain('Invalid metadata JSON'); + }); + + it('should return error for JSON array', () => { + const result = validateMcpMetadata('[1, 2, 3]', mockCreateErrorResponse); + expect(result.error).toBeDefined(); + expect(result.error?.isError).toBe(true); + expect(getErrorText(result.error)).toContain( + 'must be a JSON object (not null or array)' + ); + }); + + it('should return error for JSON null', () => { + const result = validateMcpMetadata('null', mockCreateErrorResponse); + expect(result.error).toBeDefined(); + expect(result.error?.isError).toBe(true); + expect(getErrorText(result.error)).toContain( + 'must be a JSON object (not null or array)' + ); + }); + + it('should return error for JSON string primitive', () => { + const result = validateMcpMetadata('"string"', mockCreateErrorResponse); + expect(result.error).toBeDefined(); + expect(result.error?.isError).toBe(true); + expect(getErrorText(result.error)).toContain( + 'must be a JSON object (not null or array)' + ); + }); + + it('should return error for JSON number primitive', () => { + const result = validateMcpMetadata('123', mockCreateErrorResponse); + expect(result.error).toBeDefined(); + expect(result.error?.isError).toBe(true); + expect(getErrorText(result.error)).toContain( + 'must be a JSON object (not null or array)' + ); + }); + + it('should return error for JSON boolean primitive', () => { + const result = validateMcpMetadata('true', mockCreateErrorResponse); + expect(result.error).toBeDefined(); + expect(result.error?.isError).toBe(true); + expect(getErrorText(result.error)).toContain( + 'must be a JSON object (not null or array)' + ); + }); + }); +}); diff --git a/packages/tm-core/tests/integration/storage/file-storage-metadata.test.ts b/packages/tm-core/tests/integration/storage/file-storage-metadata.test.ts new file mode 100644 index 00000000..5f957eba --- /dev/null +++ b/packages/tm-core/tests/integration/storage/file-storage-metadata.test.ts @@ -0,0 +1,472 @@ +/** + * @fileoverview Integration tests for FileStorage metadata preservation + * + * Tests that user-defined metadata survives all FileStorage CRUD operations + * including load, save, update, and append. + */ + +import { afterEach, beforeEach, describe, expect, it } from 'vitest'; +import * as fs from 'fs'; +import * as path from 'path'; +import * as os from 'os'; +import { FileStorage } from '../../../src/modules/storage/adapters/file-storage/file-storage.js'; +import type { Task } from '../../../src/common/types/index.js'; + +/** + * Creates a minimal valid task for testing + */ +function createTask(id: string, overrides: Partial = {}): Task { + return { + id, + title: `Task ${id}`, + description: `Description for task ${id}`, + status: 'pending', + priority: 'medium', + dependencies: [], + details: '', + testStrategy: '', + subtasks: [], + ...overrides + }; +} + +describe('FileStorage Metadata Preservation - Integration Tests', () => { + let tempDir: string; + let storage: FileStorage; + + beforeEach(() => { + // Create a temp directory for each test + tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'taskmaster-test-')); + // Create .taskmaster/tasks directory structure + const taskmasterDir = path.join(tempDir, '.taskmaster', 'tasks'); + fs.mkdirSync(taskmasterDir, { recursive: true }); + storage = new FileStorage(tempDir); + }); + + afterEach(() => { + // Clean up temp directory + fs.rmSync(tempDir, { recursive: true, force: true }); + }); + + describe('saveTasks() and loadTasks() round-trip', () => { + it('should preserve metadata through save and load cycle', async () => { + const tasks: Task[] = [ + createTask('1', { + metadata: { + externalId: 'JIRA-123', + source: 'import', + customField: { nested: 'value' } + } + }), + createTask('2', { + metadata: { + score: 85, + isUrgent: true + } + }) + ]; + + await storage.saveTasks(tasks); + const loadedTasks = await storage.loadTasks(); + + expect(loadedTasks).toHaveLength(2); + expect(loadedTasks[0].metadata).toEqual({ + externalId: 'JIRA-123', + source: 'import', + customField: { nested: 'value' } + }); + expect(loadedTasks[1].metadata).toEqual({ + score: 85, + isUrgent: true + }); + }); + + it('should preserve empty metadata object', async () => { + const tasks: Task[] = [createTask('1', { metadata: {} })]; + + await storage.saveTasks(tasks); + const loadedTasks = await storage.loadTasks(); + + expect(loadedTasks[0].metadata).toEqual({}); + }); + + it('should handle tasks without metadata', async () => { + const tasks: Task[] = [createTask('1')]; // No metadata + + await storage.saveTasks(tasks); + const loadedTasks = await storage.loadTasks(); + + expect(loadedTasks[0].metadata).toBeUndefined(); + }); + + it('should preserve complex metadata with various types', async () => { + const complexMetadata = { + string: 'value', + number: 42, + float: 3.14, + boolean: true, + nullValue: null, + array: [1, 'two', { three: 3 }], + nested: { + deep: { + deeper: { + value: 'found' + } + } + } + }; + + const tasks: Task[] = [createTask('1', { metadata: complexMetadata })]; + + await storage.saveTasks(tasks); + const loadedTasks = await storage.loadTasks(); + + expect(loadedTasks[0].metadata).toEqual(complexMetadata); + }); + + it('should preserve metadata on subtasks', async () => { + const tasks: Task[] = [ + createTask('1', { + metadata: { parentMeta: 'value' }, + subtasks: [ + { + id: 1, + parentId: '1', + title: 'Subtask 1', + description: 'Description', + status: 'pending', + priority: 'medium', + dependencies: [], + details: '', + testStrategy: '', + metadata: { subtaskMeta: 'subtask-value' } + } + ] + }) + ]; + + await storage.saveTasks(tasks); + const loadedTasks = await storage.loadTasks(); + + expect(loadedTasks[0].metadata).toEqual({ parentMeta: 'value' }); + expect(loadedTasks[0].subtasks[0].metadata).toEqual({ + subtaskMeta: 'subtask-value' + }); + }); + }); + + describe('updateTask() metadata preservation', () => { + it('should preserve existing metadata when updating other fields', async () => { + const originalMetadata = { externalId: 'EXT-123', version: 1 }; + const tasks: Task[] = [createTask('1', { metadata: originalMetadata })]; + + await storage.saveTasks(tasks); + + // Update title only, not metadata + await storage.updateTask('1', { title: 'Updated Title' }); + + const loadedTasks = await storage.loadTasks(); + expect(loadedTasks[0].title).toBe('Updated Title'); + expect(loadedTasks[0].metadata).toEqual(originalMetadata); + }); + + it('should allow updating metadata field directly', async () => { + const tasks: Task[] = [createTask('1', { metadata: { original: true } })]; + + await storage.saveTasks(tasks); + + // Update metadata + await storage.updateTask('1', { + metadata: { original: true, updated: true, newField: 'value' } + }); + + const loadedTasks = await storage.loadTasks(); + expect(loadedTasks[0].metadata).toEqual({ + original: true, + updated: true, + newField: 'value' + }); + }); + + it('should allow replacing metadata entirely', async () => { + const tasks: Task[] = [ + createTask('1', { metadata: { oldField: 'old' } }) + ]; + + await storage.saveTasks(tasks); + + // Replace metadata entirely + await storage.updateTask('1', { metadata: { newField: 'new' } }); + + const loadedTasks = await storage.loadTasks(); + expect(loadedTasks[0].metadata).toEqual({ newField: 'new' }); + }); + + it('should preserve metadata when updating status', async () => { + const tasks: Task[] = [createTask('1', { metadata: { tracked: true } })]; + + await storage.saveTasks(tasks); + await storage.updateTask('1', { status: 'in-progress' }); + + const loadedTasks = await storage.loadTasks(); + expect(loadedTasks[0].status).toBe('in-progress'); + expect(loadedTasks[0].metadata).toEqual({ tracked: true }); + }); + }); + + describe('appendTasks() metadata preservation', () => { + it('should preserve metadata on existing tasks when appending', async () => { + const existingTasks: Task[] = [ + createTask('1', { metadata: { existing: true } }) + ]; + + await storage.saveTasks(existingTasks); + + // Append new tasks + const newTasks: Task[] = [ + createTask('2', { metadata: { newTask: true } }) + ]; + + await storage.appendTasks(newTasks); + + const loadedTasks = await storage.loadTasks(); + expect(loadedTasks).toHaveLength(2); + expect(loadedTasks.find((t) => t.id === '1')?.metadata).toEqual({ + existing: true + }); + expect(loadedTasks.find((t) => t.id === '2')?.metadata).toEqual({ + newTask: true + }); + }); + }); + + describe('loadTask() single task metadata', () => { + it('should preserve metadata when loading single task', async () => { + const tasks: Task[] = [ + createTask('1', { metadata: { specific: 'metadata' } }), + createTask('2', { metadata: { other: 'data' } }) + ]; + + await storage.saveTasks(tasks); + const task = await storage.loadTask('1'); + + expect(task).toBeDefined(); + expect(task?.metadata).toEqual({ specific: 'metadata' }); + }); + }); + + describe('metadata alongside AI implementation metadata', () => { + it('should preserve both user metadata and AI metadata', async () => { + const tasks: Task[] = [ + createTask('1', { + // AI implementation metadata + relevantFiles: [ + { + path: 'src/test.ts', + description: 'Test file', + action: 'modify' + } + ], + category: 'development', + skills: ['TypeScript'], + acceptanceCriteria: ['Tests pass'], + // User-defined metadata + metadata: { + externalId: 'JIRA-456', + importedAt: '2024-01-15T10:00:00Z' + } + }) + ]; + + await storage.saveTasks(tasks); + const loadedTasks = await storage.loadTasks(); + + // AI metadata preserved + expect(loadedTasks[0].relevantFiles).toHaveLength(1); + expect(loadedTasks[0].category).toBe('development'); + expect(loadedTasks[0].skills).toEqual(['TypeScript']); + + // User metadata preserved + expect(loadedTasks[0].metadata).toEqual({ + externalId: 'JIRA-456', + importedAt: '2024-01-15T10:00:00Z' + }); + }); + }); + + describe('AI operation metadata preservation', () => { + it('should preserve metadata when updating task with AI-like partial update', async () => { + // Simulate existing task with user metadata + const tasks: Task[] = [ + createTask('1', { + title: 'Original Title', + metadata: { externalId: 'JIRA-123', version: 1 } + }) + ]; + + await storage.saveTasks(tasks); + + // Simulate AI update - only updates specific fields, no metadata field + // This mimics what happens when AI processes update-task + const aiUpdate: Partial = { + title: 'AI Updated Title', + description: 'AI generated description', + details: 'AI generated details' + // Note: no metadata field - AI schemas don't include it + }; + + await storage.updateTask('1', aiUpdate); + + const loadedTasks = await storage.loadTasks(); + expect(loadedTasks[0].title).toBe('AI Updated Title'); + expect(loadedTasks[0].description).toBe('AI generated description'); + // User metadata must be preserved + expect(loadedTasks[0].metadata).toEqual({ + externalId: 'JIRA-123', + version: 1 + }); + }); + + it('should preserve metadata when adding AI-generated subtasks', async () => { + const tasks: Task[] = [ + createTask('1', { + metadata: { tracked: true, source: 'import' }, + subtasks: [] + }) + ]; + + await storage.saveTasks(tasks); + + // Simulate expand-task adding subtasks + // Subtasks from AI don't have metadata field + const updatedTask: Partial = { + subtasks: [ + { + id: 1, + parentId: '1', + title: 'AI Generated Subtask', + description: 'Description', + status: 'pending', + priority: 'medium', + dependencies: [], + details: 'Details', + testStrategy: 'Tests' + // No metadata - AI doesn't generate it + } + ] + }; + + await storage.updateTask('1', updatedTask); + + const loadedTasks = await storage.loadTasks(); + // Parent task metadata preserved + expect(loadedTasks[0].metadata).toEqual({ + tracked: true, + source: 'import' + }); + // Subtask has no metadata (as expected from AI) + expect(loadedTasks[0].subtasks[0].metadata).toBeUndefined(); + }); + + it('should handle multiple sequential AI updates preserving metadata', async () => { + const tasks: Task[] = [ + createTask('1', { + metadata: { originalField: 'preserved' } + }) + ]; + + await storage.saveTasks(tasks); + + // First AI update + await storage.updateTask('1', { title: 'First Update' }); + // Second AI update + await storage.updateTask('1', { description: 'Second Update' }); + // Third AI update + await storage.updateTask('1', { priority: 'high' }); + + const loadedTasks = await storage.loadTasks(); + expect(loadedTasks[0].title).toBe('First Update'); + expect(loadedTasks[0].description).toBe('Second Update'); + expect(loadedTasks[0].priority).toBe('high'); + // Metadata preserved through all updates + expect(loadedTasks[0].metadata).toEqual({ originalField: 'preserved' }); + }); + + it('should preserve metadata when update object omits metadata field entirely', async () => { + // This is how AI operations work - they simply don't include metadata + const tasks: Task[] = [ + createTask('1', { + metadata: { important: 'data' } + }) + ]; + + await storage.saveTasks(tasks); + + // Update WITHOUT metadata field (AI schemas don't include it) + const updateWithoutMetadata: Partial = { title: 'Updated' }; + await storage.updateTask('1', updateWithoutMetadata); + + const loadedTasks = await storage.loadTasks(); + // When metadata field is absent from updates, existing metadata is preserved + expect(loadedTasks[0].metadata).toEqual({ important: 'data' }); + }); + }); + + describe('file format verification', () => { + it('should write metadata to JSON file correctly', async () => { + const tasks: Task[] = [createTask('1', { metadata: { written: true } })]; + + await storage.saveTasks(tasks); + + // Read raw file to verify format + const filePath = path.join(tempDir, '.taskmaster', 'tasks', 'tasks.json'); + const rawContent = fs.readFileSync(filePath, 'utf-8'); + const parsed = JSON.parse(rawContent); + + expect(parsed.tasks[0].metadata).toEqual({ written: true }); + }); + + it('should load metadata from pre-existing JSON file', async () => { + // Write a tasks.json file manually + const tasksDir = path.join(tempDir, '.taskmaster', 'tasks'); + const filePath = path.join(tasksDir, 'tasks.json'); + + const fileContent = { + tasks: [ + { + id: '1', + title: 'Pre-existing task', + description: 'Description', + status: 'pending', + priority: 'medium', + dependencies: [], + details: '', + testStrategy: '', + subtasks: [], + metadata: { + preExisting: true, + importedFrom: 'external-system' + } + } + ], + metadata: { + version: '1.0.0', + lastModified: new Date().toISOString(), + taskCount: 1, + completedCount: 0 + } + }; + + fs.writeFileSync(filePath, JSON.stringify(fileContent, null, 2)); + + // Load through FileStorage + const loadedTasks = await storage.loadTasks(); + + expect(loadedTasks).toHaveLength(1); + expect(loadedTasks[0].metadata).toEqual({ + preExisting: true, + importedFrom: 'external-system' + }); + }); + }); +}); diff --git a/packages/tm-core/tests/integration/storage/task-metadata-extraction.test.ts b/packages/tm-core/tests/integration/storage/task-metadata-extraction.test.ts index 5f0a1c9c..d761ed4e 100644 --- a/packages/tm-core/tests/integration/storage/task-metadata-extraction.test.ts +++ b/packages/tm-core/tests/integration/storage/task-metadata-extraction.test.ts @@ -492,4 +492,157 @@ describe('Task Metadata Extraction - Integration Tests', () => { expect(validCategories).toContain(task.category); }); }); + + describe('User-Defined Metadata Field', () => { + it('should preserve user-defined metadata through JSON serialization', () => { + const taskWithMetadata: Task = { + id: '1', + title: 'Task with custom metadata', + description: 'Test description', + status: 'pending', + priority: 'high', + dependencies: [], + details: '', + testStrategy: '', + subtasks: [], + metadata: { + externalId: 'JIRA-123', + source: 'import', + customField: { nested: 'value' } + } + }; + + const serialized = JSON.stringify(taskWithMetadata); + const deserialized: Task = JSON.parse(serialized); + + expect(deserialized.metadata).toEqual(taskWithMetadata.metadata); + expect(deserialized.metadata?.externalId).toBe('JIRA-123'); + expect(deserialized.metadata?.customField).toEqual({ nested: 'value' }); + }); + + it('should preserve metadata on subtasks through JSON serialization', () => { + const taskWithSubtasks: Task = { + id: '1', + title: 'Parent task', + description: 'Test', + status: 'pending', + priority: 'medium', + dependencies: [], + details: '', + testStrategy: '', + metadata: { parentMeta: true }, + subtasks: [ + { + id: 1, + parentId: '1', + title: 'Subtask 1', + description: 'Test', + status: 'pending', + priority: 'medium', + dependencies: [], + details: '', + testStrategy: '', + metadata: { subtaskMeta: 'value1' } + } + ] + }; + + const serialized = JSON.stringify(taskWithSubtasks); + const deserialized: Task = JSON.parse(serialized); + + expect(deserialized.metadata).toEqual({ parentMeta: true }); + expect(deserialized.subtasks[0].metadata).toEqual({ + subtaskMeta: 'value1' + }); + }); + + it('should handle empty metadata object', () => { + const task: Task = { + id: '1', + title: 'Task', + description: 'Test', + status: 'pending', + priority: 'medium', + dependencies: [], + details: '', + testStrategy: '', + subtasks: [], + metadata: {} + }; + + const serialized = JSON.stringify(task); + const deserialized: Task = JSON.parse(serialized); + + expect(deserialized.metadata).toEqual({}); + }); + + it('should handle complex metadata with various types', () => { + const task: Task = { + id: '1', + title: 'Task', + description: 'Test', + status: 'pending', + priority: 'medium', + dependencies: [], + details: '', + testStrategy: '', + subtasks: [], + metadata: { + string: 'value', + number: 42, + boolean: true, + nullValue: null, + array: [1, 2, 3], + nested: { + deep: { + value: 'found' + } + } + } + }; + + const serialized = JSON.stringify(task); + const deserialized: Task = JSON.parse(serialized); + + expect(deserialized.metadata?.string).toBe('value'); + expect(deserialized.metadata?.number).toBe(42); + expect(deserialized.metadata?.boolean).toBe(true); + expect(deserialized.metadata?.nullValue).toBeNull(); + expect(deserialized.metadata?.array).toEqual([1, 2, 3]); + expect((deserialized.metadata?.nested as any)?.deep?.value).toBe('found'); + }); + + it('should preserve metadata alongside AI implementation metadata', () => { + const task: Task = { + id: '1', + title: 'Task', + description: 'Test', + status: 'pending', + priority: 'medium', + dependencies: [], + details: 'Some details', + testStrategy: 'Unit tests', + subtasks: [], + // AI implementation metadata + relevantFiles: [ + { path: 'src/test.ts', description: 'Test file', action: 'modify' } + ], + category: 'development', + skills: ['TypeScript'], + // User-defined metadata + metadata: { + externalId: 'EXT-456', + importedAt: '2024-01-15T10:00:00Z' + } + }; + + const serialized = JSON.stringify(task); + const deserialized: Task = JSON.parse(serialized); + + // Both types of metadata should be preserved + expect(deserialized.relevantFiles).toHaveLength(1); + expect(deserialized.category).toBe('development'); + expect(deserialized.metadata?.externalId).toBe('EXT-456'); + }); + }); }); diff --git a/scripts/modules/task-manager/update-subtask-by-id.js b/scripts/modules/task-manager/update-subtask-by-id.js index f5a3f6b8..2717ba1f 100644 --- a/scripts/modules/task-manager/update-subtask-by-id.js +++ b/scripts/modules/task-manager/update-subtask-by-id.js @@ -48,7 +48,13 @@ async function updateSubtaskById( context = {}, outputFormat = context.mcpLog ? 'json' : 'text' ) { - const { session, mcpLog, projectRoot: providedProjectRoot, tag } = context; + const { + session, + mcpLog, + projectRoot: providedProjectRoot, + tag, + metadata + } = context; const logFn = mcpLog || consoleLog; const isMCP = !!mcpLog; @@ -71,10 +77,13 @@ async function updateSubtaskById( if (!subtaskId || typeof subtaskId !== 'string') { throw new Error('Subtask ID cannot be empty.'); } - - if (!prompt || typeof prompt !== 'string' || prompt.trim() === '') { + // Allow metadata-only updates (no prompt required if metadata is provided) + if ( + (!prompt || typeof prompt !== 'string' || prompt.trim() === '') && + !metadata + ) { throw new Error( - 'Prompt cannot be empty. Please provide context for the subtask update.' + 'Prompt cannot be empty unless metadata is provided. Please provide context for the subtask update or metadata to merge.' ); } @@ -93,6 +102,7 @@ async function updateSubtaskById( tag, appendMode: true, // Subtask updates are always append mode useResearch, + metadata, isMCP, outputFormat, report @@ -164,6 +174,30 @@ async function updateSubtaskById( const subtask = parentTask.subtasks[subtaskIndex]; + // --- Metadata-Only Update (Fast Path) --- + // If only metadata is provided (no prompt), skip AI and just update metadata + if (metadata && (!prompt || prompt.trim() === '')) { + report('info', `Metadata-only update for subtask ${subtaskId}`); + // Merge new metadata with existing + subtask.metadata = { + ...(subtask.metadata || {}), + ...metadata + }; + parentTask.subtasks[subtaskIndex] = subtask; + writeJSON(tasksPath, data, projectRoot, tag); + report( + 'success', + `Successfully updated metadata for subtask ${subtaskId}` + ); + + return { + updatedSubtask: subtask, + telemetryData: null, + tagInfo: { tag } + }; + } + // --- End Metadata-Only Update --- + // --- Context Gathering --- let gatheredContext = ''; try { @@ -334,6 +368,14 @@ async function updateSubtaskById( const updatedSubtask = parentTask.subtasks[subtaskIndex]; + // Merge metadata if provided (preserve existing metadata) + if (metadata) { + updatedSubtask.metadata = { + ...(updatedSubtask.metadata || {}), + ...metadata + }; + } + if (outputFormat === 'text' && getDebugFlag(session)) { console.log( '>>> DEBUG: Subtask details AFTER AI update:', diff --git a/scripts/modules/task-manager/update-task-by-id.js b/scripts/modules/task-manager/update-task-by-id.js index 4049c268..10cc953c 100644 --- a/scripts/modules/task-manager/update-task-by-id.js +++ b/scripts/modules/task-manager/update-task-by-id.js @@ -58,7 +58,13 @@ async function updateTaskById( outputFormat = 'text', appendMode = false ) { - const { session, mcpLog, projectRoot: providedProjectRoot, tag } = context; + const { + session, + mcpLog, + projectRoot: providedProjectRoot, + tag, + metadata + } = context; const { report, isMCP } = createBridgeLogger(mcpLog, session); try { @@ -70,8 +76,15 @@ async function updateTaskById( if (taskId === null || taskId === undefined || String(taskId).trim() === '') throw new Error('Task ID cannot be empty.'); - if (!prompt || typeof prompt !== 'string' || prompt.trim() === '') - throw new Error('Prompt cannot be empty.'); + // Allow metadata-only updates (prompt can be empty if metadata is provided) + if ( + (!prompt || typeof prompt !== 'string' || prompt.trim() === '') && + !metadata + ) { + throw new Error( + 'Prompt cannot be empty unless metadata is provided for update.' + ); + } // Determine project root first (needed for API key checks) const projectRoot = providedProjectRoot || findProjectRoot(); @@ -99,6 +112,7 @@ async function updateTaskById( tag, appendMode, useResearch, + metadata, isMCP, outputFormat, report @@ -166,6 +180,27 @@ async function updateTaskById( } // --- End Task Loading --- + // --- Metadata-Only Update (Fast Path) --- + // If only metadata is provided (no prompt), skip AI and just update metadata + if (metadata && (!prompt || prompt.trim() === '')) { + report('info', `Metadata-only update for task ${taskId}`); + // Merge new metadata with existing + taskToUpdate.metadata = { + ...(taskToUpdate.metadata || {}), + ...metadata + }; + data.tasks[taskIndex] = taskToUpdate; + writeJSON(tasksPath, data, projectRoot, tag); + report('success', `Successfully updated metadata for task ${taskId}`); + + return { + updatedTask: taskToUpdate, + telemetryData: null, + tagInfo: { tag } + }; + } + // --- End Metadata-Only Update --- + // --- Context Gathering --- let gatheredContext = ''; try { @@ -385,6 +420,14 @@ async function updateTaskById( } } + // Merge metadata if provided + if (metadata) { + taskToUpdate.metadata = { + ...(taskToUpdate.metadata || {}), + ...metadata + }; + } + // Write the updated task back to file data.tasks[taskIndex] = taskToUpdate; writeJSON(tasksPath, data, projectRoot, tag); @@ -455,6 +498,14 @@ async function updateTaskById( if (updatedTask.subtasks && Array.isArray(updatedTask.subtasks)) { let currentSubtaskId = 1; updatedTask.subtasks = updatedTask.subtasks.map((subtask) => { + // Find original subtask to preserve its metadata + // Use type-coerced ID matching (AI may return string IDs vs numeric) + // Also match by title as fallback (subtask titles are typically unique) + const originalSubtask = taskToUpdate.subtasks?.find( + (st) => + String(st.id) === String(subtask.id) || + (subtask.title && st.title === subtask.title) + ); // Fix AI-generated subtask IDs that might be strings or use parent ID as prefix const correctedSubtask = { ...subtask, @@ -472,7 +523,11 @@ async function updateTaskById( ) : [], status: subtask.status || 'pending', - testStrategy: subtask.testStrategy ?? null + testStrategy: subtask.testStrategy ?? null, + // Preserve subtask metadata from original (AI schema excludes metadata) + ...(originalSubtask?.metadata && { + metadata: originalSubtask.metadata + }) }; currentSubtaskId++; return correctedSubtask; @@ -529,6 +584,17 @@ async function updateTaskById( } // --- End Task Validation/Correction --- + // --- Preserve and Merge Metadata --- + // AI responses don't include metadata (AI schema excludes it) + // Preserve existing metadata from original task and merge new metadata if provided + if (taskToUpdate.metadata || metadata) { + updatedTask.metadata = { + ...(taskToUpdate.metadata || {}), + ...(metadata || {}) + }; + } + // --- End Preserve and Merge Metadata --- + // --- Update Task Data (Keep existing) --- data.tasks[taskIndex] = updatedTask; // --- End Update Task Data --- diff --git a/src/schemas/base-schemas.js b/src/schemas/base-schemas.js index 90df91e2..13a9fe33 100644 --- a/src/schemas/base-schemas.js +++ b/src/schemas/base-schemas.js @@ -10,6 +10,11 @@ import { z } from 'zod'; * * Other providers (Anthropic, Google, etc.) safely ignore this constraint. * See: https://platform.openai.com/docs/guides/structured-outputs + * + * NOTE: The `metadata` field (user-defined task metadata) is intentionally EXCLUDED + * from all AI schemas. This ensures AI operations cannot overwrite user metadata. + * When tasks are updated via AI, the spread operator preserves existing metadata + * since AI responses won't include a metadata field. */ export const TaskStatusSchema = z.enum([ 'pending', From 83dc5b5f126cf5b8ff339857eb24b191de97c508 Mon Sep 17 00:00:00 2001 From: Ralph Khreish <35776126+Crunchyman-ralph@users.noreply.github.com> Date: Mon, 26 Jan 2026 18:07:05 +0100 Subject: [PATCH 19/20] fix: remove leading whitespace from Accordion closing tags in docs (#1612) The MDX parser was interpreting indented tags as list items, causing deployment failures. --- apps/docs/capabilities/task-structure.mdx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/docs/capabilities/task-structure.mdx b/apps/docs/capabilities/task-structure.mdx index 3ea3c5eb..82331b79 100644 --- a/apps/docs/capabilities/task-structure.mdx +++ b/apps/docs/capabilities/task-structure.mdx @@ -209,7 +209,7 @@ The generated report contains: - Recommended number of subtasks based on complexity - AI-generated expansion prompts customized for each task - Ready-to-run expansion commands directly within each task analysis - + The `complexity-report` command: @@ -220,7 +220,7 @@ The `complexity-report` command: - Highlights tasks recommended for expansion based on threshold score - Includes ready-to-use expansion commands for each complex task - If no report exists, offers to generate one on the spot - + The `expand` command automatically checks for and uses the complexity report: @@ -262,7 +262,7 @@ The `next` command: - Command to mark the task as in-progress - Command to mark the task as done - Commands for working with subtasks - + The `show` command: @@ -273,7 +273,7 @@ The `show` command: - For subtasks, shows parent task relationship - Provides contextual action suggestions based on the task's state - Works with both regular tasks and subtasks (using the format taskId.subtaskId) - + ## Best Practices for AI-Driven Development From 712a0789d6d584adf5dbb27732c783cd240014b2 Mon Sep 17 00:00:00 2001 From: Ed Sumerfield Date: Mon, 26 Jan 2026 17:58:56 -0500 Subject: [PATCH 20/20] Add --no-banner argument to clean up the output (#1600) Co-authored-by: Ed Sumerfield --- .changeset/fair-heads-report.md | 5 +++++ scripts/modules/commands.js | 7 +++++-- 2 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 .changeset/fair-heads-report.md diff --git a/.changeset/fair-heads-report.md b/.changeset/fair-heads-report.md new file mode 100644 index 00000000..f25ed1ad --- /dev/null +++ b/.changeset/fair-heads-report.md @@ -0,0 +1,5 @@ +--- +"task-master-ai": patch +--- + +Add --no-banner to suppress the startup banner. diff --git a/scripts/modules/commands.js b/scripts/modules/commands.js index 3474d0a7..e1851ca5 100644 --- a/scripts/modules/commands.js +++ b/scripts/modules/commands.js @@ -5405,7 +5405,8 @@ async function runCLI(argv = process.argv) { // Display banner if not in a pipe (except for init/start/repl commands which have their own) const isInitCommand = argv.includes('init'); const isREPLCommand = argv.includes('tui') || argv.includes('repl'); - if (process.stdout.isTTY && !isInitCommand && !isREPLCommand) { + const noBanner = argv.includes('--no-banner'); + if (process.stdout.isTTY && !isInitCommand && !isREPLCommand && !noBanner) { displayBanner(); } @@ -5442,7 +5443,9 @@ async function runCLI(argv = process.argv) { // NOTE: getConfig() might be called during setupCLI->registerCommands if commands need config // This means the ConfigurationError might be thrown here if configuration file is missing. const programInstance = setupCLI(); - await programInstance.parseAsync(argv); + // Filter out --no-banner since it's handled above and not a Commander option + const filteredArgv = argv.filter((arg) => arg !== '--no-banner'); + await programInstance.parseAsync(filteredArgv); // Check if migration has occurred and show FYI notice once try {