@taskforcehq/taskforce 0.3.324 → 0.3.326

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/Taskforce.module.css +39 -0
  2. package/dist/components/features/TaskSettings.js +26 -9
  3. package/dist/components/task/TaskKanban.d.ts +2 -2
  4. package/dist/components/views/StandaloneLayout.js +22 -22
  5. package/dist/components/views/panels/PlanningDrawer.d.ts +2 -2
  6. package/dist/components/views/panels/PlanningDrawer.js +26 -12
  7. package/dist/components/views/planningScope.d.ts +4 -0
  8. package/dist/components/views/planningScope.js +5 -0
  9. package/dist/core/AiProfileService.js +6 -1
  10. package/dist/hooks/useTaskforce.js +74 -17
  11. package/dist/hooks/workspace/workspaceLocalState.d.ts +25 -0
  12. package/dist/hooks/workspace/workspaceLocalState.js +38 -0
  13. package/dist/mcp/adminWorkspaceRegistrar.js +0 -10
  14. package/dist/mcp/clientIntegrations.d.ts +1 -1
  15. package/dist/mcp/clientIntegrations.js +50 -0
  16. package/dist/mcp/clientProfileDefaults.js +4 -0
  17. package/dist/mcp/collaborationRegistrar.js +3 -3
  18. package/dist/mcp/documentAssetRegistrar.js +24 -72
  19. package/dist/mcp/documentHelpers.d.ts +11 -4
  20. package/dist/mcp/documentHelpers.js +21 -17
  21. package/dist/mcp/runtime.d.ts +4 -0
  22. package/dist/mcp/runtime.js +466 -534
  23. package/dist/mcp/taskPlanningRegistrar.js +45 -81
  24. package/dist/mcp/toolProfiles.d.ts +7 -0
  25. package/dist/mcp/toolProfiles.js +36 -0
  26. package/dist/mcp/toolRegistry.d.ts +87 -609
  27. package/dist/mcp/toolRegistry.js +93 -88
  28. package/dist/resources/templates/workflow-sources/workflowDocs.mjs +10 -10
  29. package/dist/resources/templates/workflows/collaborate.yaml +2 -3
  30. package/dist/resources/templates/workflows/do.yaml +2 -3
  31. package/dist/resources/templates/workflows/evaluate.yaml +2 -3
  32. package/dist/resources/templates/workflows/execute.yaml +12 -15
  33. package/dist/resources/templates/workflows/plan.yaml +3 -4
  34. package/dist/resources/templates/workflows/review.yaml +2 -3
  35. package/dist/shared/taxonomyLibrary.js +1 -1
  36. package/dist/sync/cloudSyncApi.js +22 -3
  37. package/dist/types.js +1 -1
  38. package/dist/ui/assets/{AgentsModule-DvkbUHi0.js → AgentsModule-C4LcqhcZ.js} +1 -1
  39. package/dist/ui/assets/{AnnotatedAttachmentWorkspace-jhOhxqHT.js → AnnotatedAttachmentWorkspace-B-Dq22d2.js} +1 -1
  40. package/dist/ui/assets/{ContextAttachmentManager-BAmEyLHL.js → ContextAttachmentManager-DsXPTvi-.js} +1 -1
  41. package/dist/ui/assets/{DocumentWorkspace-X-CpD5OO.js → DocumentWorkspace-CxA1wO3U.js} +1 -1
  42. package/dist/ui/assets/{EntityActivityTimeline-DD33onAC.js → EntityActivityTimeline-B8nSe8l3.js} +1 -1
  43. package/dist/ui/assets/{InitiativesModule-5nDXtIjf.js → InitiativesModule-VY95v38E.js} +1 -1
  44. package/dist/ui/assets/{PlansPage-B8nDR1hQ.js → PlansPage-CQbKDv1a.js} +1 -1
  45. package/dist/ui/assets/{TaskContextUpload-DrGrXJHm.js → TaskContextUpload-DvDlNpHC.js} +1 -1
  46. package/dist/ui/assets/TaskSettings-CUWbYYtP.js +12 -0
  47. package/dist/ui/assets/{WorkflowsModule-DWCGhEWT.js → WorkflowsModule-CgM3Jako.js} +1 -1
  48. package/dist/ui/assets/documentReferences-Do9YjrS3.js +1 -0
  49. package/dist/ui/assets/index--mh3pktj.js +5 -0
  50. package/dist/ui/assets/index-BawaaEXS.css +1 -0
  51. package/dist/ui/index.html +2 -2
  52. package/dist/utils/theme.js +1 -1
  53. package/package.json +1 -1
  54. package/src/resources/templates/workflow-sources/workflowDocs.mjs +10 -10
  55. package/src/resources/templates/workflows/collaborate.yaml +2 -3
  56. package/src/resources/templates/workflows/do.yaml +2 -3
  57. package/src/resources/templates/workflows/evaluate.yaml +2 -3
  58. package/src/resources/templates/workflows/execute.yaml +12 -15
  59. package/src/resources/templates/workflows/plan.yaml +3 -4
  60. package/src/resources/templates/workflows/review.yaml +2 -3
  61. package/dist/ui/assets/TaskSettings-BXVvZZwH.js +0 -9
  62. package/dist/ui/assets/documentReferences-Crup321p.js +0 -1
  63. package/dist/ui/assets/index-B9k24Aym.js +0 -5
  64. package/dist/ui/assets/index-DNeR5dYW.css +0 -1
@@ -20,7 +20,7 @@ const baseContextPolicy = {
20
20
  mcp: {
21
21
  knownTaskIdTool: '{{MCP_PREFIX}}get_task',
22
22
  taskAttachmentListTool: '{{MCP_PREFIX}}get_task_attachments',
23
- taskAttachmentReadTool: '{{MCP_PREFIX}}read_task_attachment',
23
+ taskAttachmentReadTool: '{{MCP_PREFIX}}get_task_attachments',
24
24
  unknownTaskIdTools: ['{{MCP_PREFIX}}list_tasks', '{{MCP_PREFIX}}search_tasks']
25
25
  },
26
26
  mcpUnavailableAction: 'stop-and-request-user-action'
@@ -31,7 +31,7 @@ const protocolBlock = (label) => [
31
31
  '> 1. **MCP-first load**:',
32
32
  '> - If task ID is known, call `{{MCP_PREFIX}}get_task`.',
33
33
  '> - If task ID is unknown, use `{{MCP_PREFIX}}list_tasks` / `{{MCP_PREFIX}}search_tasks` to identify it.',
34
- '> - If task attachments may matter, call `{{MCP_PREFIX}}get_task_attachments` and then `{{MCP_PREFIX}}read_task_attachment` for the specific files you need.',
34
+ '> - If task attachments may matter, call `{{MCP_PREFIX}}get_task_attachments`; pass `attachmentId` to that same tool when you need one attachment body or download reference.',
35
35
  '> - Do not try to open task attachment HTTP paths directly when MCP attachment-read tools are available.',
36
36
  '> - If MCP is unavailable, stop and request user action.',
37
37
  '> 2. Print `prompts.startupChecklist`.'
@@ -57,7 +57,7 @@ export const workflowDocs = [
57
57
  compat: {
58
58
  minTaskforceVersion: MIN_VERSION,
59
59
  requiredToolsCritical: ['{{MCP_PREFIX}}get_task'],
60
- requiredToolsOptional: ['{{MCP_PREFIX}}list_tasks', '{{MCP_PREFIX}}search_tasks', '{{MCP_PREFIX}}get_task_attachments', '{{MCP_PREFIX}}read_task_attachment', '{{MCP_PREFIX}}link_task_context', '{{MCP_PREFIX}}save_task_attachment']
60
+ requiredToolsOptional: ['{{MCP_PREFIX}}list_tasks', '{{MCP_PREFIX}}search_tasks', '{{MCP_PREFIX}}get_task_attachments', '{{MCP_PREFIX}}link_task_context', '{{MCP_PREFIX}}save_task_attachment']
61
61
  },
62
62
  toolPolicy: baseToolPolicy(['{{MCP_PREFIX}}get_task']),
63
63
  contextPolicy: baseContextPolicy,
@@ -105,7 +105,7 @@ export const workflowDocs = [
105
105
  compat: {
106
106
  minTaskforceVersion: MIN_VERSION,
107
107
  requiredToolsCritical: ['{{MCP_PREFIX}}get_task', '{{MCP_PREFIX}}update_task', '{{MCP_PREFIX}}add_comment', '{{MCP_PREFIX}}finish_task'],
108
- requiredToolsOptional: ['{{MCP_PREFIX}}resolve_profile', '{{MCP_PREFIX}}list_assignees', '{{MCP_PREFIX}}list_tasks', '{{MCP_PREFIX}}search_tasks', '{{MCP_PREFIX}}get_task_attachments', '{{MCP_PREFIX}}read_task_attachment', '{{MCP_PREFIX}}get_config', '{{MCP_PREFIX}}create_task', '{{MCP_PREFIX}}link_task_context', '{{MCP_PREFIX}}save_task_attachment']
108
+ requiredToolsOptional: ['{{MCP_PREFIX}}resolve_profile', '{{MCP_PREFIX}}list_assignees', '{{MCP_PREFIX}}list_tasks', '{{MCP_PREFIX}}search_tasks', '{{MCP_PREFIX}}get_task_attachments', '{{MCP_PREFIX}}get_config', '{{MCP_PREFIX}}create_task', '{{MCP_PREFIX}}link_task_context', '{{MCP_PREFIX}}save_task_attachment']
109
109
  },
110
110
  toolPolicy: baseToolPolicy(
111
111
  ['{{MCP_PREFIX}}get_task', '{{MCP_PREFIX}}update_task', '{{MCP_PREFIX}}add_comment', '{{MCP_PREFIX}}finish_task'],
@@ -188,8 +188,8 @@ export const workflowDocs = [
188
188
  '1. Implement code changes.',
189
189
  '2. Run validation steps (automated tests + manual checks as needed).',
190
190
  '3. If user requests planning relationship work:',
191
- ' - Link/unlink a task to a workstream using `{{MCP_PREFIX}}set_task_workstream` or `{{MCP_PREFIX}}clear_task_workstream`.',
192
- ' - Link/unlink a workstream to an initiative using `{{MCP_PREFIX}}set_workstream_initiative` or `{{MCP_PREFIX}}clear_workstream_initiative`.',
191
+ ' - Link/unlink a task to a workstream using `{{MCP_PREFIX}}update_task_workstream`.',
192
+ ' - Link/unlink a workstream to an initiative using `{{MCP_PREFIX}}update_workstream_initiative`.',
193
193
  ' - Create new tasks/workstreams/initiatives only when they materially improve execution clarity.',
194
194
  '4. If blocked, switch to Collaborate mode and capture blocker context.',
195
195
  '',
@@ -220,7 +220,7 @@ export const workflowDocs = [
220
220
  compat: {
221
221
  minTaskforceVersion: MIN_VERSION,
222
222
  requiredToolsCritical: ['{{MCP_PREFIX}}get_task', '{{MCP_PREFIX}}update_task', '{{MCP_PREFIX}}add_comment'],
223
- requiredToolsOptional: ['{{MCP_PREFIX}}list_tasks', '{{MCP_PREFIX}}search_tasks', '{{MCP_PREFIX}}get_task_attachments', '{{MCP_PREFIX}}read_task_attachment', '{{MCP_PREFIX}}get_config', '{{MCP_PREFIX}}link_task_context', '{{MCP_PREFIX}}save_task_attachment']
223
+ requiredToolsOptional: ['{{MCP_PREFIX}}list_tasks', '{{MCP_PREFIX}}search_tasks', '{{MCP_PREFIX}}get_task_attachments', '{{MCP_PREFIX}}get_config', '{{MCP_PREFIX}}link_task_context', '{{MCP_PREFIX}}save_task_attachment']
224
224
  },
225
225
  toolPolicy: baseToolPolicy(
226
226
  ['{{MCP_PREFIX}}get_task', '{{MCP_PREFIX}}update_task', '{{MCP_PREFIX}}add_comment'],
@@ -302,7 +302,7 @@ export const workflowDocs = [
302
302
  compat: {
303
303
  minTaskforceVersion: MIN_VERSION,
304
304
  requiredToolsCritical: ['{{MCP_PREFIX}}get_task', '{{MCP_PREFIX}}add_comment'],
305
- requiredToolsOptional: ['{{MCP_PREFIX}}list_tasks', '{{MCP_PREFIX}}search_tasks', '{{MCP_PREFIX}}get_task_attachments', '{{MCP_PREFIX}}read_task_attachment', '{{MCP_PREFIX}}link_task_context', '{{MCP_PREFIX}}save_task_attachment']
305
+ requiredToolsOptional: ['{{MCP_PREFIX}}list_tasks', '{{MCP_PREFIX}}search_tasks', '{{MCP_PREFIX}}get_task_attachments', '{{MCP_PREFIX}}link_task_context', '{{MCP_PREFIX}}save_task_attachment']
306
306
  },
307
307
  toolPolicy: baseToolPolicy(
308
308
  ['{{MCP_PREFIX}}get_task', '{{MCP_PREFIX}}add_comment'],
@@ -378,7 +378,7 @@ export const workflowDocs = [
378
378
  compat: {
379
379
  minTaskforceVersion: MIN_VERSION,
380
380
  requiredToolsCritical: ['{{MCP_PREFIX}}get_task', '{{MCP_PREFIX}}update_task', '{{MCP_PREFIX}}add_comment'],
381
- requiredToolsOptional: ['{{MCP_PREFIX}}list_tasks', '{{MCP_PREFIX}}search_tasks', '{{MCP_PREFIX}}get_task_attachments', '{{MCP_PREFIX}}read_task_attachment', '{{MCP_PREFIX}}get_config', '{{MCP_PREFIX}}link_task_context', '{{MCP_PREFIX}}save_task_attachment']
381
+ requiredToolsOptional: ['{{MCP_PREFIX}}list_tasks', '{{MCP_PREFIX}}search_tasks', '{{MCP_PREFIX}}get_task_attachments', '{{MCP_PREFIX}}get_config', '{{MCP_PREFIX}}link_task_context', '{{MCP_PREFIX}}save_task_attachment']
382
382
  },
383
383
  toolPolicy: baseToolPolicy(
384
384
  ['{{MCP_PREFIX}}get_task', '{{MCP_PREFIX}}update_task', '{{MCP_PREFIX}}add_comment'],
@@ -458,7 +458,7 @@ export const workflowDocs = [
458
458
  compat: {
459
459
  minTaskforceVersion: MIN_VERSION,
460
460
  requiredToolsCritical: ['{{MCP_PREFIX}}get_task', '{{MCP_PREFIX}}add_comment'],
461
- requiredToolsOptional: ['{{MCP_PREFIX}}list_tasks', '{{MCP_PREFIX}}search_tasks', '{{MCP_PREFIX}}get_task_attachments', '{{MCP_PREFIX}}read_task_attachment', '{{MCP_PREFIX}}update_task', '{{MCP_PREFIX}}link_task_context', '{{MCP_PREFIX}}save_task_attachment']
461
+ requiredToolsOptional: ['{{MCP_PREFIX}}list_tasks', '{{MCP_PREFIX}}search_tasks', '{{MCP_PREFIX}}get_task_attachments', '{{MCP_PREFIX}}update_task', '{{MCP_PREFIX}}link_task_context', '{{MCP_PREFIX}}save_task_attachment']
462
462
  },
463
463
  toolPolicy: baseToolPolicy(
464
464
  ['{{MCP_PREFIX}}get_task', '{{MCP_PREFIX}}add_comment'],
@@ -18,7 +18,6 @@ compat:
18
18
  - "{{MCP_PREFIX}}list_tasks"
19
19
  - "{{MCP_PREFIX}}search_tasks"
20
20
  - "{{MCP_PREFIX}}get_task_attachments"
21
- - "{{MCP_PREFIX}}read_task_attachment"
22
21
  - "{{MCP_PREFIX}}link_task_context"
23
22
  - "{{MCP_PREFIX}}save_task_attachment"
24
23
  toolPolicy:
@@ -50,7 +49,7 @@ contextPolicy:
50
49
  mcp:
51
50
  knownTaskIdTool: "{{MCP_PREFIX}}get_task"
52
51
  taskAttachmentListTool: "{{MCP_PREFIX}}get_task_attachments"
53
- taskAttachmentReadTool: "{{MCP_PREFIX}}read_task_attachment"
52
+ taskAttachmentReadTool: "{{MCP_PREFIX}}get_task_attachments"
54
53
  unknownTaskIdTools:
55
54
  - "{{MCP_PREFIX}}list_tasks"
56
55
  - "{{MCP_PREFIX}}search_tasks"
@@ -69,7 +68,7 @@ content:
69
68
  > 1. **MCP-first load**:
70
69
  > - If task ID is known, call `{{MCP_PREFIX}}get_task`.
71
70
  > - If task ID is unknown, use `{{MCP_PREFIX}}list_tasks` / `{{MCP_PREFIX}}search_tasks` to identify it.
72
- > - If task attachments may matter, call `{{MCP_PREFIX}}get_task_attachments` and then `{{MCP_PREFIX}}read_task_attachment` for the specific files you need.
71
+ > - If task attachments may matter, call `{{MCP_PREFIX}}get_task_attachments`; pass `attachmentId` to that same tool when you need one attachment body or download reference.
73
72
  > - Do not try to open task attachment HTTP paths directly when MCP attachment-read tools are available.
74
73
  > - If MCP is unavailable, stop and request user action.
75
74
  > 2. Print `prompts.startupChecklist`.
@@ -24,7 +24,6 @@ compat:
24
24
  - "{{MCP_PREFIX}}list_tasks"
25
25
  - "{{MCP_PREFIX}}search_tasks"
26
26
  - "{{MCP_PREFIX}}get_task_attachments"
27
- - "{{MCP_PREFIX}}read_task_attachment"
28
27
  - "{{MCP_PREFIX}}link_task_context"
29
28
  - "{{MCP_PREFIX}}save_task_attachment"
30
29
  toolPolicy:
@@ -48,7 +47,7 @@ contextPolicy:
48
47
  mcp:
49
48
  knownTaskIdTool: "{{MCP_PREFIX}}get_task"
50
49
  taskAttachmentListTool: "{{MCP_PREFIX}}get_task_attachments"
51
- taskAttachmentReadTool: "{{MCP_PREFIX}}read_task_attachment"
50
+ taskAttachmentReadTool: "{{MCP_PREFIX}}get_task_attachments"
52
51
  unknownTaskIdTools:
53
52
  - "{{MCP_PREFIX}}list_tasks"
54
53
  - "{{MCP_PREFIX}}search_tasks"
@@ -68,7 +67,7 @@ content:
68
67
  > 1. **MCP-first load**:
69
68
  > - If task ID is known, call `{{MCP_PREFIX}}get_task`.
70
69
  > - If task ID is unknown, use `{{MCP_PREFIX}}list_tasks` / `{{MCP_PREFIX}}search_tasks` to identify it.
71
- > - If task attachments may matter, call `{{MCP_PREFIX}}get_task_attachments` and then `{{MCP_PREFIX}}read_task_attachment` for the specific files you need.
70
+ > - If task attachments may matter, call `{{MCP_PREFIX}}get_task_attachments`; pass `attachmentId` to that same tool when you need one attachment body or download reference.
72
71
  > - Do not try to open task attachment HTTP paths directly when MCP attachment-read tools are available.
73
72
  > - If MCP is unavailable, stop and request user action.
74
73
  > 2. Print `prompts.startupChecklist`.
@@ -19,7 +19,6 @@ compat:
19
19
  - "{{MCP_PREFIX}}list_tasks"
20
20
  - "{{MCP_PREFIX}}search_tasks"
21
21
  - "{{MCP_PREFIX}}get_task_attachments"
22
- - "{{MCP_PREFIX}}read_task_attachment"
23
22
  - "{{MCP_PREFIX}}get_config"
24
23
  - "{{MCP_PREFIX}}link_task_context"
25
24
  - "{{MCP_PREFIX}}save_task_attachment"
@@ -53,7 +52,7 @@ contextPolicy:
53
52
  mcp:
54
53
  knownTaskIdTool: "{{MCP_PREFIX}}get_task"
55
54
  taskAttachmentListTool: "{{MCP_PREFIX}}get_task_attachments"
56
- taskAttachmentReadTool: "{{MCP_PREFIX}}read_task_attachment"
55
+ taskAttachmentReadTool: "{{MCP_PREFIX}}get_task_attachments"
57
56
  unknownTaskIdTools:
58
57
  - "{{MCP_PREFIX}}list_tasks"
59
58
  - "{{MCP_PREFIX}}search_tasks"
@@ -72,7 +71,7 @@ content:
72
71
  > 1. **MCP-first load**:
73
72
  > - If task ID is known, call `{{MCP_PREFIX}}get_task`.
74
73
  > - If task ID is unknown, use `{{MCP_PREFIX}}list_tasks` / `{{MCP_PREFIX}}search_tasks` to identify it.
75
- > - If task attachments may matter, call `{{MCP_PREFIX}}get_task_attachments` and then `{{MCP_PREFIX}}read_task_attachment` for the specific files you need.
74
+ > - If task attachments may matter, call `{{MCP_PREFIX}}get_task_attachments`; pass `attachmentId` to that same tool when you need one attachment body or download reference.
76
75
  > - Do not try to open task attachment HTTP paths directly when MCP attachment-read tools are available.
77
76
  > - If MCP is unavailable, stop and request user action.
78
77
  > 2. Print `prompts.startupChecklist`.
@@ -23,7 +23,6 @@ compat:
23
23
  - "{{MCP_PREFIX}}list_tasks"
24
24
  - "{{MCP_PREFIX}}search_tasks"
25
25
  - "{{MCP_PREFIX}}get_task_attachments"
26
- - "{{MCP_PREFIX}}read_task_attachment"
27
26
  - "{{MCP_PREFIX}}get_config"
28
27
  - "{{MCP_PREFIX}}create_task"
29
28
  - "{{MCP_PREFIX}}link_task_context"
@@ -58,7 +57,7 @@ contextPolicy:
58
57
  mcp:
59
58
  knownTaskIdTool: "{{MCP_PREFIX}}get_task"
60
59
  taskAttachmentListTool: "{{MCP_PREFIX}}get_task_attachments"
61
- taskAttachmentReadTool: "{{MCP_PREFIX}}read_task_attachment"
60
+ taskAttachmentReadTool: "{{MCP_PREFIX}}get_task_attachments"
62
61
  unknownTaskIdTools:
63
62
  - "{{MCP_PREFIX}}list_tasks"
64
63
  - "{{MCP_PREFIX}}search_tasks"
@@ -73,7 +72,7 @@ prompts:
73
72
  - [ ] Used `done` when no explicit human validation was requested, or `review` when human validation/approval was needed
74
73
  - [ ] Summary comment added with `{{MCP_PREFIX}}add_comment`
75
74
  - [ ] `walkthrough.md` updated
76
- - [ ] Parent/child links changed only when explicitly requested
75
+ - [ ] Planning relationships changed only when explicitly requested
77
76
  - [ ] Did NOT call `{{MCP_PREFIX}}archive_task`
78
77
  - [ ] Did NOT set `cancelled` unless explicitly instructed
79
78
  content:
@@ -84,7 +83,7 @@ content:
84
83
  > 1. **MCP-first load**:
85
84
  > - If task ID is known, call `{{MCP_PREFIX}}get_task`.
86
85
  > - If task ID is unknown, use `{{MCP_PREFIX}}list_tasks` / `{{MCP_PREFIX}}search_tasks` to identify it.
87
- > - If task attachments may matter, call `{{MCP_PREFIX}}get_task_attachments` and then `{{MCP_PREFIX}}read_task_attachment` for the specific files you need.
86
+ > - If task attachments may matter, call `{{MCP_PREFIX}}get_task_attachments`; pass `attachmentId` to that same tool when you need one attachment body or download reference.
88
87
  > - Do not try to open task attachment HTTP paths directly when MCP attachment-read tools are available.
89
88
  > - If MCP is unavailable, stop and request user action.
90
89
  > 2. Print `prompts.startupChecklist`.
@@ -108,14 +107,14 @@ content:
108
107
  - If task complexity is `3` to `5`, create or refresh `implementation_plan.md` before major code edits.
109
108
  - If complexity is below `3`, planning is optional.
110
109
  2. **Task management mode gate (required before task mutations)**:
111
- - Choose a management approach and state it explicitly: single-task execution, checklist-driven execution, or planning-entity decomposition.
112
- - Default to checklist-driven execution for linear/short work.
113
- - Use planning-entity decomposition only when at least one is true:
110
+ - Choose exactly one mode and state it explicitly: `checklist_mode` or `planning_mode`.
111
+ - Default to `checklist_mode` for linear/short execution.
112
+ - Use `planning_mode` only when at least one is true:
114
113
  - multi-system or multi-owner work
115
114
  - meaningful parallelization
116
115
  - expected duration > 1 day
117
116
  - explicit dependency/risk tracking is needed
118
- - user explicitly asks for multiple tracked units of work
117
+ - user explicitly asks for more structural planning context
119
118
  3. **Identity + owner strategy gate (required before task creation/update)**:
120
119
  - Call `{{MCP_PREFIX}}resolve_profile` before creating tasks, assigning tasks, or adding agent-authored comments.
121
120
  - Stateless client pattern: call `{{MCP_PREFIX}}resolve_profile`, save the returned `profileToken`, and include `profileToken` on later mutating calls if the client does not preserve session state.
@@ -124,7 +123,7 @@ content:
124
123
  - Never use generic owner values like `agent` or `user`.
125
124
  - If unclear who should own the work, set `owner=unassigned` and add a clarification note.
126
125
  4. **Preflight confirmation gate (required before creating multiple tasks)**:
127
- - Confirm management approach: single task, checklist, or planning decomposition.
126
+ - Confirm mode: `checklist_mode` vs `planning_mode`.
128
127
  - Confirm owner default: a concrete assignee ID, `unassigned`, or a mixed plan with explicit IDs.
129
128
  - Confirm whether assignment should be set immediately.
130
129
  5. **Config gate**:
@@ -136,12 +135,10 @@ content:
136
135
  ### Phase B: Execution
137
136
  1. Implement code changes.
138
137
  2. Run validation steps (automated tests + manual checks as needed).
139
- 3. If user requests relationship work:
140
- - Link/unlink tasks to workstreams using `{{MCP_PREFIX}}set_task_workstream` or `{{MCP_PREFIX}}clear_task_workstream`.
141
- - Link/unlink workstreams to initiatives using `{{MCP_PREFIX}}set_workstream_initiative` or `{{MCP_PREFIX}}clear_workstream_initiative`.
142
- - Use `{{MCP_PREFIX}}replace_task_checklist` when the work should stay inside a single task with structured checklist tracking.
143
- - Every newly created task must include explicit `owner`/`assignee` using a concrete assignee ID or `unassigned`.
144
- - Change planning relationships only after explicit user confirmation.
138
+ 3. If user requests planning relationship work:
139
+ - Link/unlink a task to a workstream using `{{MCP_PREFIX}}update_task_workstream`.
140
+ - Link/unlink a workstream to an initiative using `{{MCP_PREFIX}}update_workstream_initiative`.
141
+ - Create new tasks/workstreams/initiatives only when they materially improve execution clarity.
145
142
  4. If blocked, switch to Collaborate mode and capture blocker context.
146
143
 
147
144
  ### Phase C: Handover
@@ -19,7 +19,6 @@ compat:
19
19
  - "{{MCP_PREFIX}}list_tasks"
20
20
  - "{{MCP_PREFIX}}search_tasks"
21
21
  - "{{MCP_PREFIX}}get_task_attachments"
22
- - "{{MCP_PREFIX}}read_task_attachment"
23
22
  - "{{MCP_PREFIX}}get_config"
24
23
  - "{{MCP_PREFIX}}link_task_context"
25
24
  - "{{MCP_PREFIX}}save_task_attachment"
@@ -53,7 +52,7 @@ contextPolicy:
53
52
  mcp:
54
53
  knownTaskIdTool: "{{MCP_PREFIX}}get_task"
55
54
  taskAttachmentListTool: "{{MCP_PREFIX}}get_task_attachments"
56
- taskAttachmentReadTool: "{{MCP_PREFIX}}read_task_attachment"
55
+ taskAttachmentReadTool: "{{MCP_PREFIX}}get_task_attachments"
57
56
  unknownTaskIdTools:
58
57
  - "{{MCP_PREFIX}}list_tasks"
59
58
  - "{{MCP_PREFIX}}search_tasks"
@@ -73,7 +72,7 @@ content:
73
72
  > 1. **MCP-first load**:
74
73
  > - If task ID is known, call `{{MCP_PREFIX}}get_task`.
75
74
  > - If task ID is unknown, use `{{MCP_PREFIX}}list_tasks` / `{{MCP_PREFIX}}search_tasks` to identify it.
76
- > - If task attachments may matter, call `{{MCP_PREFIX}}get_task_attachments` and then `{{MCP_PREFIX}}read_task_attachment` for the specific files you need.
75
+ > - If task attachments may matter, call `{{MCP_PREFIX}}get_task_attachments`; pass `attachmentId` to that same tool when you need one attachment body or download reference.
77
76
  > - Do not try to open task attachment HTTP paths directly when MCP attachment-read tools are available.
78
77
  > - If MCP is unavailable, stop and request user action.
79
78
  > 2. Print `prompts.startupChecklist`.
@@ -94,7 +93,7 @@ content:
94
93
 
95
94
  0. Choose and record task management mode for follow-on execution:
96
95
  - `checklist_mode` (single task + in-task checklist) for linear short work.
97
- - `planning_mode` (multiple tasks/workstreams/initiatives) only when dependencies, parallelism, or risk tracking justify decomposition.
96
+ - `planning_mode` (tasks grouped into workstreams/initiatives) only when structure improves clarity, dependencies, or ownership.
98
97
  - Record owner strategy as explicit assignee IDs, `unassigned`, or a mixed plan with explicit IDs.
99
98
 
100
99
  1. Define file-level change plan (exact files and intended changes).
@@ -18,7 +18,6 @@ compat:
18
18
  - "{{MCP_PREFIX}}list_tasks"
19
19
  - "{{MCP_PREFIX}}search_tasks"
20
20
  - "{{MCP_PREFIX}}get_task_attachments"
21
- - "{{MCP_PREFIX}}read_task_attachment"
22
21
  - "{{MCP_PREFIX}}update_task"
23
22
  - "{{MCP_PREFIX}}link_task_context"
24
23
  - "{{MCP_PREFIX}}save_task_attachment"
@@ -51,7 +50,7 @@ contextPolicy:
51
50
  mcp:
52
51
  knownTaskIdTool: "{{MCP_PREFIX}}get_task"
53
52
  taskAttachmentListTool: "{{MCP_PREFIX}}get_task_attachments"
54
- taskAttachmentReadTool: "{{MCP_PREFIX}}read_task_attachment"
53
+ taskAttachmentReadTool: "{{MCP_PREFIX}}get_task_attachments"
55
54
  unknownTaskIdTools:
56
55
  - "{{MCP_PREFIX}}list_tasks"
57
56
  - "{{MCP_PREFIX}}search_tasks"
@@ -70,7 +69,7 @@ content:
70
69
  > 1. **MCP-first load**:
71
70
  > - If task ID is known, call `{{MCP_PREFIX}}get_task`.
72
71
  > - If task ID is unknown, use `{{MCP_PREFIX}}list_tasks` / `{{MCP_PREFIX}}search_tasks` to identify it.
73
- > - If task attachments may matter, call `{{MCP_PREFIX}}get_task_attachments` and then `{{MCP_PREFIX}}read_task_attachment` for the specific files you need.
72
+ > - If task attachments may matter, call `{{MCP_PREFIX}}get_task_attachments`; pass `attachmentId` to that same tool when you need one attachment body or download reference.
74
73
  > - Do not try to open task attachment HTTP paths directly when MCP attachment-read tools are available.
75
74
  > - If MCP is unavailable, stop and request user action.
76
75
  > 2. Print `prompts.startupChecklist`.