openplanr 0.8.0 → 1.0.0

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 (227) hide show
  1. package/README.md +142 -52
  2. package/dist/agents/index.d.ts +1 -5
  3. package/dist/agents/index.d.ts.map +1 -1
  4. package/dist/agents/index.js +1 -4
  5. package/dist/agents/index.js.map +1 -1
  6. package/dist/agents/task-parser.d.ts +4 -1
  7. package/dist/agents/task-parser.d.ts.map +1 -1
  8. package/dist/agents/task-parser.js +6 -3
  9. package/dist/agents/task-parser.js.map +1 -1
  10. package/dist/agents/utils.d.ts +0 -4
  11. package/dist/agents/utils.d.ts.map +1 -1
  12. package/dist/agents/utils.js +3 -24
  13. package/dist/agents/utils.js.map +1 -1
  14. package/dist/ai/codebase/context-builder.d.ts +22 -3
  15. package/dist/ai/codebase/context-builder.d.ts.map +1 -1
  16. package/dist/ai/codebase/context-builder.js +202 -14
  17. package/dist/ai/codebase/context-builder.js.map +1 -1
  18. package/dist/ai/codebase/file-reader.d.ts.map +1 -1
  19. package/dist/ai/codebase/file-reader.js +7 -3
  20. package/dist/ai/codebase/file-reader.js.map +1 -1
  21. package/dist/ai/codebase/index.d.ts +3 -1
  22. package/dist/ai/codebase/index.d.ts.map +1 -1
  23. package/dist/ai/codebase/index.js +3 -1
  24. package/dist/ai/codebase/index.js.map +1 -1
  25. package/dist/ai/codebase/pattern-rules.d.ts +28 -0
  26. package/dist/ai/codebase/pattern-rules.d.ts.map +1 -0
  27. package/dist/ai/codebase/pattern-rules.js +186 -0
  28. package/dist/ai/codebase/pattern-rules.js.map +1 -0
  29. package/dist/ai/codebase/rules-reader.d.ts +14 -0
  30. package/dist/ai/codebase/rules-reader.d.ts.map +1 -0
  31. package/dist/ai/codebase/rules-reader.js +25 -0
  32. package/dist/ai/codebase/rules-reader.js.map +1 -0
  33. package/dist/ai/codebase/stack-detector.d.ts.map +1 -1
  34. package/dist/ai/codebase/stack-detector.js +4 -1
  35. package/dist/ai/codebase/stack-detector.js.map +1 -1
  36. package/dist/ai/codebase/tree-generator.d.ts.map +1 -1
  37. package/dist/ai/codebase/tree-generator.js +5 -2
  38. package/dist/ai/codebase/tree-generator.js.map +1 -1
  39. package/dist/ai/errors.js +1 -1
  40. package/dist/ai/errors.js.map +1 -1
  41. package/dist/ai/prompts/prompt-builder.d.ts +12 -0
  42. package/dist/ai/prompts/prompt-builder.d.ts.map +1 -1
  43. package/dist/ai/prompts/prompt-builder.js +45 -3
  44. package/dist/ai/prompts/prompt-builder.js.map +1 -1
  45. package/dist/ai/prompts/system-prompts.d.ts +5 -3
  46. package/dist/ai/prompts/system-prompts.d.ts.map +1 -1
  47. package/dist/ai/prompts/system-prompts.js +74 -13
  48. package/dist/ai/prompts/system-prompts.js.map +1 -1
  49. package/dist/ai/schemas/ai-response-schemas.d.ts +48 -2
  50. package/dist/ai/schemas/ai-response-schemas.d.ts.map +1 -1
  51. package/dist/ai/schemas/ai-response-schemas.js +19 -0
  52. package/dist/ai/schemas/ai-response-schemas.js.map +1 -1
  53. package/dist/ai/types.d.ts +4 -2
  54. package/dist/ai/types.d.ts.map +1 -1
  55. package/dist/ai/types.js +3 -1
  56. package/dist/ai/types.js.map +1 -1
  57. package/dist/ai/validation/dependency-chains.d.ts +21 -0
  58. package/dist/ai/validation/dependency-chains.d.ts.map +1 -0
  59. package/dist/ai/validation/dependency-chains.js +114 -0
  60. package/dist/ai/validation/dependency-chains.js.map +1 -0
  61. package/dist/ai/validation/index.d.ts +3 -0
  62. package/dist/ai/validation/index.d.ts.map +1 -0
  63. package/dist/ai/validation/index.js +3 -0
  64. package/dist/ai/validation/index.js.map +1 -0
  65. package/dist/ai/validation/task-validator.d.ts +37 -0
  66. package/dist/ai/validation/task-validator.d.ts.map +1 -0
  67. package/dist/ai/validation/task-validator.js +89 -0
  68. package/dist/ai/validation/task-validator.js.map +1 -0
  69. package/dist/cli/commands/backlog.d.ts +10 -0
  70. package/dist/cli/commands/backlog.d.ts.map +1 -0
  71. package/dist/cli/commands/backlog.js +292 -0
  72. package/dist/cli/commands/backlog.js.map +1 -0
  73. package/dist/cli/commands/checklist.js +4 -4
  74. package/dist/cli/commands/checklist.js.map +1 -1
  75. package/dist/cli/commands/config.js +13 -13
  76. package/dist/cli/commands/config.js.map +1 -1
  77. package/dist/cli/commands/epic.d.ts.map +1 -1
  78. package/dist/cli/commands/epic.js +41 -22
  79. package/dist/cli/commands/epic.js.map +1 -1
  80. package/dist/cli/commands/estimate.d.ts.map +1 -1
  81. package/dist/cli/commands/estimate.js +40 -39
  82. package/dist/cli/commands/estimate.js.map +1 -1
  83. package/dist/cli/commands/export.d.ts +8 -0
  84. package/dist/cli/commands/export.d.ts.map +1 -0
  85. package/dist/cli/commands/export.js +282 -0
  86. package/dist/cli/commands/export.js.map +1 -0
  87. package/dist/cli/commands/feature.js +9 -9
  88. package/dist/cli/commands/feature.js.map +1 -1
  89. package/dist/cli/commands/github.d.ts +8 -0
  90. package/dist/cli/commands/github.d.ts.map +1 -0
  91. package/dist/cli/commands/github.js +415 -0
  92. package/dist/cli/commands/github.js.map +1 -0
  93. package/dist/cli/commands/plan.d.ts.map +1 -1
  94. package/dist/cli/commands/plan.js +104 -50
  95. package/dist/cli/commands/plan.js.map +1 -1
  96. package/dist/cli/commands/quick.d.ts.map +1 -1
  97. package/dist/cli/commands/quick.js +37 -107
  98. package/dist/cli/commands/quick.js.map +1 -1
  99. package/dist/cli/commands/refine.js +21 -21
  100. package/dist/cli/commands/refine.js.map +1 -1
  101. package/dist/cli/commands/search.d.ts.map +1 -1
  102. package/dist/cli/commands/search.js +18 -7
  103. package/dist/cli/commands/search.js.map +1 -1
  104. package/dist/cli/commands/sprint.d.ts +9 -0
  105. package/dist/cli/commands/sprint.d.ts.map +1 -0
  106. package/dist/cli/commands/sprint.js +519 -0
  107. package/dist/cli/commands/sprint.js.map +1 -0
  108. package/dist/cli/commands/status.d.ts.map +1 -1
  109. package/dist/cli/commands/status.js +77 -32
  110. package/dist/cli/commands/status.js.map +1 -1
  111. package/dist/cli/commands/story.js +15 -15
  112. package/dist/cli/commands/story.js.map +1 -1
  113. package/dist/cli/commands/sync.js +11 -7
  114. package/dist/cli/commands/sync.js.map +1 -1
  115. package/dist/cli/commands/task.d.ts +0 -2
  116. package/dist/cli/commands/task.d.ts.map +1 -1
  117. package/dist/cli/commands/task.js +14 -169
  118. package/dist/cli/commands/task.js.map +1 -1
  119. package/dist/cli/commands/template.d.ts +10 -0
  120. package/dist/cli/commands/template.d.ts.map +1 -0
  121. package/dist/cli/commands/template.js +269 -0
  122. package/dist/cli/commands/template.js.map +1 -0
  123. package/dist/cli/helpers/task-creation.d.ts +89 -0
  124. package/dist/cli/helpers/task-creation.d.ts.map +1 -0
  125. package/dist/cli/helpers/task-creation.js +140 -0
  126. package/dist/cli/helpers/task-creation.js.map +1 -0
  127. package/dist/cli/index.js +29 -2
  128. package/dist/cli/index.js.map +1 -1
  129. package/dist/models/schema.d.ts +2 -0
  130. package/dist/models/schema.d.ts.map +1 -1
  131. package/dist/models/schema.js +2 -0
  132. package/dist/models/schema.js.map +1 -1
  133. package/dist/models/types.d.ts +32 -1
  134. package/dist/models/types.d.ts.map +1 -1
  135. package/dist/services/artifact-gathering.d.ts +2 -0
  136. package/dist/services/artifact-gathering.d.ts.map +1 -1
  137. package/dist/services/artifact-gathering.js +26 -7
  138. package/dist/services/artifact-gathering.js.map +1 -1
  139. package/dist/services/artifact-service.d.ts +5 -5
  140. package/dist/services/artifact-service.d.ts.map +1 -1
  141. package/dist/services/artifact-service.js +4 -0
  142. package/dist/services/artifact-service.js.map +1 -1
  143. package/dist/services/config-service.d.ts.map +1 -1
  144. package/dist/services/config-service.js +2 -0
  145. package/dist/services/config-service.js.map +1 -1
  146. package/dist/services/credential-backends.d.ts.map +1 -1
  147. package/dist/services/credential-backends.js +15 -7
  148. package/dist/services/credential-backends.js.map +1 -1
  149. package/dist/services/credentials-service.d.ts.map +1 -1
  150. package/dist/services/credentials-service.js +6 -3
  151. package/dist/services/credentials-service.js.map +1 -1
  152. package/dist/services/github-service.d.ts +83 -0
  153. package/dist/services/github-service.d.ts.map +1 -0
  154. package/dist/services/github-service.js +440 -0
  155. package/dist/services/github-service.js.map +1 -0
  156. package/dist/services/template-service.d.ts +2 -1
  157. package/dist/services/template-service.d.ts.map +1 -1
  158. package/dist/services/template-service.js +3 -1
  159. package/dist/services/template-service.js.map +1 -1
  160. package/dist/templates/backlog/backlog-item.md.hbs +40 -0
  161. package/dist/templates/checklists/agile-checklist.md.hbs +1 -1
  162. package/dist/templates/export/planning-report.html.hbs +230 -0
  163. package/dist/templates/export/planning-report.md.hbs +136 -0
  164. package/dist/templates/quick/quick-task.md.hbs +1 -1
  165. package/dist/templates/rules/claude/CLAUDE.md.hbs +78 -35
  166. package/dist/templates/rules/codex/AGENTS.md.hbs +73 -17
  167. package/dist/templates/rules/cursor/2101-implement-task-list.mdc.hbs +66 -14
  168. package/dist/templates/sprints/sprint.md.hbs +42 -0
  169. package/dist/templates/task-templates/api-integration.json +45 -0
  170. package/dist/templates/task-templates/auth-flow.json +48 -0
  171. package/dist/templates/task-templates/database-migration.json +44 -0
  172. package/dist/templates/task-templates/react-component.json +45 -0
  173. package/dist/templates/task-templates/rest-endpoint.json +53 -0
  174. package/dist/templates/tasks/task-list.md.hbs +1 -1
  175. package/dist/utils/constants.d.ts +4 -0
  176. package/dist/utils/constants.d.ts.map +1 -1
  177. package/dist/utils/constants.js +4 -0
  178. package/dist/utils/constants.js.map +1 -1
  179. package/dist/utils/logger.d.ts +31 -1
  180. package/dist/utils/logger.d.ts.map +1 -1
  181. package/dist/utils/logger.js +92 -9
  182. package/dist/utils/logger.js.map +1 -1
  183. package/dist/utils/markdown.d.ts +3 -2
  184. package/dist/utils/markdown.d.ts.map +1 -1
  185. package/dist/utils/markdown.js +3 -1
  186. package/dist/utils/markdown.js.map +1 -1
  187. package/dist/utils/slugify.d.ts +8 -1
  188. package/dist/utils/slugify.d.ts.map +1 -1
  189. package/dist/utils/slugify.js +18 -2
  190. package/dist/utils/slugify.js.map +1 -1
  191. package/package.json +14 -3
  192. package/dist/agents/agent-factory.d.ts +0 -7
  193. package/dist/agents/agent-factory.d.ts.map +0 -1
  194. package/dist/agents/agent-factory.js +0 -22
  195. package/dist/agents/agent-factory.js.map +0 -1
  196. package/dist/agents/claude-agent.d.ts +0 -18
  197. package/dist/agents/claude-agent.d.ts.map +0 -1
  198. package/dist/agents/claude-agent.js +0 -183
  199. package/dist/agents/claude-agent.js.map +0 -1
  200. package/dist/agents/codex-agent.d.ts +0 -17
  201. package/dist/agents/codex-agent.d.ts.map +0 -1
  202. package/dist/agents/codex-agent.js +0 -124
  203. package/dist/agents/codex-agent.js.map +0 -1
  204. package/dist/agents/cursor-agent.d.ts +0 -14
  205. package/dist/agents/cursor-agent.d.ts.map +0 -1
  206. package/dist/agents/cursor-agent.js +0 -49
  207. package/dist/agents/cursor-agent.js.map +0 -1
  208. package/dist/agents/implementation-bridge.d.ts +0 -30
  209. package/dist/agents/implementation-bridge.d.ts.map +0 -1
  210. package/dist/agents/implementation-bridge.js +0 -256
  211. package/dist/agents/implementation-bridge.js.map +0 -1
  212. package/dist/agents/progress.d.ts +0 -62
  213. package/dist/agents/progress.d.ts.map +0 -1
  214. package/dist/agents/progress.js +0 -155
  215. package/dist/agents/progress.js.map +0 -1
  216. package/dist/agents/prompt-composer.d.ts +0 -30
  217. package/dist/agents/prompt-composer.d.ts.map +0 -1
  218. package/dist/agents/prompt-composer.js +0 -81
  219. package/dist/agents/prompt-composer.js.map +0 -1
  220. package/dist/agents/types.d.ts +0 -25
  221. package/dist/agents/types.d.ts.map +0 -1
  222. package/dist/agents/types.js +0 -8
  223. package/dist/agents/types.js.map +0 -1
  224. package/dist/utils/error-context.d.ts +0 -23
  225. package/dist/utils/error-context.d.ts.map +0 -1
  226. package/dist/utils/error-context.js +0 -94
  227. package/dist/utils/error-context.js.map +0 -1
@@ -4,8 +4,6 @@
4
4
  * AI-powered by default for creation. Supports:
5
5
  * --story US-001 → tasks from a single story
6
6
  * --feature FEAT-001 → tasks from all stories in a feature
7
- *
8
- * The `implement` subcommand delegates to a configured coding agent.
9
7
  */
10
8
  import chalk from 'chalk';
11
9
  import { buildTasksPrompt } from '../../ai/prompts/prompt-builder.js';
@@ -16,8 +14,8 @@ import { gatherFeatureArtifacts, gatherStoryArtifacts } from '../../services/art
16
14
  import { addChildReference, createArtifact, listArtifacts, readArtifact, resolveArtifactFilename, } from '../../services/artifact-service.js';
17
15
  import { loadConfig } from '../../services/config-service.js';
18
16
  import { promptConfirm, promptMultiText, promptText } from '../../services/prompt-service.js';
19
- import { extractErrorContext, readMultilineInput } from '../../utils/error-context.js';
20
- import { logger } from '../../utils/logger.js';
17
+ import { display, logger } from '../../utils/logger.js';
18
+ import { buildTaskItems, countTaskItems, displayNextSteps, displayTaskPreview, displayValidationWarnings, handleAIError, } from '../helpers/task-creation.js';
21
19
  export function registerTaskCommand(program) {
22
20
  const task = program.command('task').description('Manage tasks');
23
21
  task
@@ -78,142 +76,13 @@ export function registerTaskCommand(program) {
78
76
  }
79
77
  logger.heading('Task Lists');
80
78
  for (const t of tasks) {
81
- console.log(` ${t.id} ${t.title}`);
82
- }
83
- });
84
- task
85
- .command('fix')
86
- .description('Send a follow-up prompt to fix issues from the last implementation')
87
- .argument('[message...]', 'describe the issue (or pipe error output)')
88
- .option('--agent <name>', 'override coding agent (claude, cursor, codex)')
89
- .action(async (messageParts, opts) => {
90
- const projectDir = program.opts().projectDir;
91
- const config = await loadConfig(projectDir);
92
- const { executeFollowUp } = await import('../../agents/implementation-bridge.js');
93
- // Collect the message from args, or prompt for it
94
- let message = messageParts.join(' ').trim();
95
- if (!message) {
96
- // Check if stdin has piped data
97
- if (!process.stdin.isTTY) {
98
- const chunks = [];
99
- for await (const chunk of process.stdin) {
100
- chunks.push(chunk.toString());
101
- }
102
- const rawInput = chunks.join('');
103
- // Smart truncation: keep only the error-relevant tail
104
- // Build logs can be thousands of lines; Claude only needs the error
105
- message = extractErrorContext(rawInput);
106
- if (rawInput.length !== message.length) {
107
- logger.dim(`Piped input: ${rawInput.split('\n').length} lines → trimmed to ${message.split('\n').length} relevant lines`);
108
- }
109
- }
110
- }
111
- if (!message) {
112
- logger.info('Describe the issue or paste error output.');
113
- logger.dim('Type your message, then press Enter twice (empty line) to submit:\n');
114
- message = await readMultilineInput();
115
- }
116
- if (!message.trim()) {
117
- logger.error('No message provided. Describe the issue to fix.');
118
- logger.dim('');
119
- logger.dim('Usage:');
120
- logger.dim(' planr task fix "Docker build fails with onnxruntime-gpu not found"');
121
- logger.dim(' make build 2>&1 | planr task fix');
122
- logger.dim(' planr task fix (interactive prompt)');
123
- return;
124
- }
125
- await executeFollowUp(projectDir, config, message, {
126
- agent: opts.agent,
127
- });
128
- });
129
- task
130
- .command('implement')
131
- .description('Implement a task using a coding agent')
132
- .argument('<taskId>', 'task list ID (e.g., TASK-001) or story ID with --all (e.g., US-001)')
133
- .option('-s, --subtask <id>', 'specific subtask ID or search term (e.g., 2.1 or "auth")')
134
- .option('--next', 'implement the next unchecked subtask')
135
- .option('--all', 'implement all task lists for the given story ID sequentially')
136
- .option('--agent <name>', 'override coding agent (claude, cursor, codex)')
137
- .option('--dry-run', 'show the composed prompt without executing')
138
- .option('--mark-done', 'mark subtask as done after implementation')
139
- .action(async (taskId, opts) => {
140
- const projectDir = program.opts().projectDir;
141
- const config = await loadConfig(projectDir);
142
- const { executeImplementation } = await import('../../agents/implementation-bridge.js');
143
- if (opts.all) {
144
- const allTasks = await listArtifacts(projectDir, config, 'task');
145
- const storyTasks = [];
146
- for (const t of allTasks) {
147
- const data = await readArtifact(projectDir, config, 'task', t.id);
148
- if (data && data.data.storyId === taskId) {
149
- storyTasks.push(t.id);
150
- }
151
- }
152
- if (storyTasks.length === 0) {
153
- logger.error(`No task lists found for story ${taskId}.`);
154
- return;
155
- }
156
- logger.heading(`Implementing all ${storyTasks.length} task lists for ${taskId}`);
157
- for (const tid of storyTasks) {
158
- logger.heading(`\n--- ${tid} ---`);
159
- await executeImplementation(projectDir, config, tid, {
160
- agent: opts.agent,
161
- dryRun: opts.dryRun,
162
- markDone: opts.markDone,
163
- });
164
- }
165
- }
166
- else {
167
- await executeImplementation(projectDir, config, taskId, {
168
- subtask: opts.subtask,
169
- next: opts.next,
170
- agent: opts.agent,
171
- dryRun: opts.dryRun,
172
- markDone: opts.markDone,
173
- });
79
+ display.line(` ${t.id} ${t.title}`);
174
80
  }
175
81
  });
176
82
  }
177
83
  // ---------------------------------------------------------------------------
178
84
  // Display helpers
179
85
  // ---------------------------------------------------------------------------
180
- function displayTaskPreview(result) {
181
- console.log(chalk.dim('━'.repeat(50)));
182
- for (const taskGroup of result.tasks) {
183
- console.log(chalk.bold(` ${taskGroup.id} ${taskGroup.title}`));
184
- for (const sub of taskGroup.subtasks || []) {
185
- console.log(chalk.dim(` ${sub.id} ${sub.title}`));
186
- }
187
- }
188
- if (result.acceptanceCriteriaMapping && result.acceptanceCriteriaMapping.length > 0) {
189
- console.log('');
190
- console.log(chalk.bold(' Acceptance Criteria Mapping:'));
191
- for (const ac of result.acceptanceCriteriaMapping) {
192
- console.log(chalk.dim(` ${ac.criterion} (${ac.sourceStoryId}) → [${ac.taskIds.join(', ')}]`));
193
- }
194
- }
195
- if (result.relevantFiles && result.relevantFiles.length > 0) {
196
- console.log('');
197
- console.log(chalk.bold(' Relevant Files:'));
198
- for (const f of result.relevantFiles) {
199
- console.log(chalk.dim(` ${f.path} — ${f.reason}`));
200
- }
201
- }
202
- console.log(chalk.dim('━'.repeat(50)));
203
- }
204
- function buildTaskItems(result) {
205
- return result.tasks.map((tg) => ({
206
- id: tg.id,
207
- title: tg.title,
208
- status: 'pending',
209
- subtasks: (tg.subtasks || []).map((st) => ({
210
- id: st.id,
211
- title: st.title,
212
- status: 'pending',
213
- subtasks: [],
214
- })),
215
- }));
216
- }
217
86
  function buildArtifactSources(ctx, config) {
218
87
  const sources = [];
219
88
  for (const s of ctx.stories) {
@@ -253,7 +122,7 @@ async function createTasksWithAI(projectDir, config, storyId) {
253
122
  if (storyTasks.length > 0) {
254
123
  logger.warn(`${storyId} already has ${storyTasks.length} task list(s):`);
255
124
  for (const t of storyTasks) {
256
- console.log(chalk.dim(` ${t.id}: ${t.title}`));
125
+ display.line(chalk.dim(` ${t.id}: ${t.title}`));
257
126
  }
258
127
  const continueCreate = await promptConfirm('Generate additional tasks?', false);
259
128
  if (!continueCreate) {
@@ -282,7 +151,8 @@ async function createTasksWithAI(projectDir, config, storyId) {
282
151
  maxTokens: TOKEN_BUDGETS.task,
283
152
  });
284
153
  displayTaskPreview(result);
285
- const total = result.tasks.reduce((sum, t) => sum + (t.subtasks || []).length + 1, 0);
154
+ await displayValidationWarnings(result.relevantFiles, ctx.codebaseRawContext);
155
+ const total = countTaskItems(result.tasks);
286
156
  const confirmCreate = await promptConfirm(`Create task list with ${total} items?`, true);
287
157
  if (!confirmCreate) {
288
158
  logger.info('Task creation cancelled.');
@@ -305,23 +175,10 @@ async function createTasksWithAI(projectDir, config, storyId) {
305
175
  logger.dim(` ${filePath}`);
306
176
  logger.dim(` ${total} tasks created`);
307
177
  logger.dim('');
308
- logger.heading('Next steps:');
309
- logger.dim(` planr task implement ${id} — Implement all tasks`);
310
- logger.dim(` planr task implement ${id} --next — Implement next pending subtask`);
311
- logger.dim(` planr task implement ${id} -s 1.1 — Implement specific subtask`);
312
- logger.dim(` planr task implement ${id} --dry-run — Preview the implementation prompt`);
178
+ displayNextSteps({ command: 'task', id });
313
179
  }
314
180
  catch (err) {
315
- const { AIError } = await import('../../ai/errors.js');
316
- if (err instanceof AIError) {
317
- logger.error(err.userMessage);
318
- }
319
- else if (err instanceof Error) {
320
- logger.error(err.message);
321
- }
322
- else {
323
- throw err;
324
- }
181
+ await handleAIError(err);
325
182
  }
326
183
  }
327
184
  // ---------------------------------------------------------------------------
@@ -341,7 +198,7 @@ async function createTasksFromFeature(projectDir, config, featureId) {
341
198
  if (featureTasks.length > 0) {
342
199
  logger.warn(`${featureId} already has ${featureTasks.length} task list(s):`);
343
200
  for (const t of featureTasks) {
344
- console.log(chalk.dim(` ${t.id}: ${t.title}`));
201
+ display.line(chalk.dim(` ${t.id}: ${t.title}`));
345
202
  }
346
203
  const continueCreate = await promptConfirm('Generate additional tasks?', false);
347
204
  if (!continueCreate) {
@@ -370,7 +227,8 @@ async function createTasksFromFeature(projectDir, config, featureId) {
370
227
  maxTokens: TOKEN_BUDGETS.taskFeature,
371
228
  });
372
229
  displayTaskPreview(result);
373
- const total = result.tasks.reduce((sum, t) => sum + (t.subtasks || []).length + 1, 0);
230
+ await displayValidationWarnings(result.relevantFiles, ctx.codebaseRawContext);
231
+ const total = countTaskItems(result.tasks);
374
232
  const confirmCreate = await promptConfirm(`Create task list with ${total} items?`, true);
375
233
  if (!confirmCreate) {
376
234
  logger.info('Task creation cancelled.');
@@ -396,23 +254,10 @@ async function createTasksFromFeature(projectDir, config, featureId) {
396
254
  logger.dim(` ${filePath}`);
397
255
  logger.dim(` ${total} tasks from ${ctx.stories.length} stories`);
398
256
  logger.dim('');
399
- logger.heading('Next steps:');
400
- logger.dim(` planr task implement ${id} — Implement all tasks`);
401
- logger.dim(` planr task implement ${id} --next — Implement next pending subtask`);
402
- logger.dim(` planr task implement ${id} -s 1.1 — Implement specific subtask`);
403
- logger.dim(` planr task implement ${id} --dry-run — Preview the implementation prompt`);
257
+ displayNextSteps({ command: 'task', id });
404
258
  }
405
259
  catch (err) {
406
- const { AIError } = await import('../../ai/errors.js');
407
- if (err instanceof AIError) {
408
- logger.error(err.userMessage);
409
- }
410
- else if (err instanceof Error) {
411
- logger.error(err.message);
412
- }
413
- else {
414
- throw err;
415
- }
260
+ await handleAIError(err);
416
261
  }
417
262
  }
418
263
  // ---------------------------------------------------------------------------
@@ -440,6 +285,6 @@ async function createTasksManually(projectDir, config, opts) {
440
285
  logger.dim(` ${filePath}`);
441
286
  logger.dim(` ${tasks.length} tasks created`);
442
287
  logger.dim('');
443
- logger.dim(`Next: planr task implement ${id}`);
288
+ logger.dim(`Next: planr task list`);
444
289
  }
445
290
  //# sourceMappingURL=task.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"task.js","sourceRoot":"","sources":["../../../src/cli/commands/task.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task.js","sourceRoot":"","sources":["../../../src/cli/commands/task.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * `planr template` command group.
3
+ *
4
+ * Reusable task patterns for common development tasks.
5
+ * Ships with 5 built-in templates and supports custom templates
6
+ * saved from existing task lists.
7
+ */
8
+ import type { Command } from 'commander';
9
+ export declare function registerTemplateCommand(program: Command): void;
10
+ //# sourceMappingURL=template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/template.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBzC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,QA+PvD"}
@@ -0,0 +1,269 @@
1
+ /**
2
+ * `planr template` command group.
3
+ *
4
+ * Reusable task patterns for common development tasks.
5
+ * Ships with 5 built-in templates and supports custom templates
6
+ * saved from existing task lists.
7
+ */
8
+ import path from 'node:path';
9
+ import chalk from 'chalk';
10
+ import { createArtifact, readArtifactRaw } from '../../services/artifact-service.js';
11
+ import { loadConfig } from '../../services/config-service.js';
12
+ import { promptConfirm, promptText } from '../../services/prompt-service.js';
13
+ import { getTemplatesDir } from '../../utils/constants.js';
14
+ import { ensureDir, fileExists, listFiles, readFile, writeFile } from '../../utils/fs.js';
15
+ import { display, logger } from '../../utils/logger.js';
16
+ export function registerTemplateCommand(program) {
17
+ const template = program
18
+ .command('template')
19
+ .description('Reusable task patterns for common development tasks');
20
+ // -----------------------------------------------------------------------
21
+ // planr template list
22
+ // -----------------------------------------------------------------------
23
+ template
24
+ .command('list')
25
+ .description('List available task templates')
26
+ .action(async () => {
27
+ const projectDir = program.opts().projectDir;
28
+ const config = await loadConfig(projectDir);
29
+ const templates = await loadAllTemplates(projectDir, config);
30
+ if (templates.length === 0) {
31
+ logger.info('No templates found.');
32
+ return;
33
+ }
34
+ logger.heading('Task Templates');
35
+ display.blank();
36
+ const builtIn = templates.filter((t) => t.source === 'built-in');
37
+ const custom = templates.filter((t) => t.source === 'custom');
38
+ if (builtIn.length > 0) {
39
+ display.heading(' Built-in:');
40
+ for (const t of builtIn) {
41
+ const taskCount = t.tasks.reduce((sum, tg) => sum + tg.subtasks.length + 1, 0);
42
+ display.line(` ${chalk.cyan(t.name)} ${chalk.dim(`— ${t.description} (${taskCount} tasks)`)}`);
43
+ }
44
+ }
45
+ if (custom.length > 0) {
46
+ display.blank();
47
+ display.heading(' Custom:');
48
+ for (const t of custom) {
49
+ const taskCount = t.tasks.reduce((sum, tg) => sum + tg.subtasks.length + 1, 0);
50
+ display.line(` ${chalk.green(t.name)} ${chalk.dim(`— ${t.description} (${taskCount} tasks)`)}`);
51
+ }
52
+ }
53
+ display.blank();
54
+ logger.dim('Use: planr template use <name> --title "My Task"');
55
+ });
56
+ // -----------------------------------------------------------------------
57
+ // planr template show <name>
58
+ // -----------------------------------------------------------------------
59
+ template
60
+ .command('show')
61
+ .description('Preview a template')
62
+ .argument('<name>', 'template name')
63
+ .action(async (name) => {
64
+ const projectDir = program.opts().projectDir;
65
+ const config = await loadConfig(projectDir);
66
+ const tpl = await findTemplate(name, projectDir, config);
67
+ if (!tpl) {
68
+ logger.error(`Template "${name}" not found. Run \`planr template list\` to see available templates.`);
69
+ return;
70
+ }
71
+ logger.heading(`Template: ${tpl.name}`);
72
+ display.line(chalk.dim(` ${tpl.description}`));
73
+ if (tpl.variables.length > 0) {
74
+ display.line(chalk.dim(` Variables: ${tpl.variables.join(', ')}`));
75
+ }
76
+ display.blank();
77
+ for (const taskGroup of tpl.tasks) {
78
+ display.heading(` ${taskGroup.id} ${taskGroup.title}`);
79
+ for (const sub of taskGroup.subtasks) {
80
+ display.line(chalk.dim(` ${sub.id} ${sub.title}`));
81
+ }
82
+ }
83
+ display.blank();
84
+ });
85
+ // -----------------------------------------------------------------------
86
+ // planr template use <name>
87
+ // -----------------------------------------------------------------------
88
+ template
89
+ .command('use')
90
+ .description('Generate a task list from a template')
91
+ .argument('<name>', 'template name')
92
+ .option('--title <title>', 'task list title')
93
+ .action(async (name, opts) => {
94
+ const projectDir = program.opts().projectDir;
95
+ const config = await loadConfig(projectDir);
96
+ const tpl = await findTemplate(name, projectDir, config);
97
+ if (!tpl) {
98
+ logger.error(`Template "${name}" not found.`);
99
+ return;
100
+ }
101
+ // Collect variable values
102
+ const vars = {};
103
+ for (const v of tpl.variables) {
104
+ vars[v] = await promptText(`${v}:`);
105
+ }
106
+ const title = opts.title || (await promptText('Task list title:'));
107
+ // Apply variable substitution
108
+ const tasks = tpl.tasks.map((tg) => ({
109
+ id: tg.id,
110
+ title: substituteVars(tg.title, vars),
111
+ status: 'pending',
112
+ subtasks: tg.subtasks.map((st) => ({
113
+ id: st.id,
114
+ title: substituteVars(st.title, vars),
115
+ status: 'pending',
116
+ subtasks: [],
117
+ })),
118
+ }));
119
+ // Preview
120
+ display.separator(50);
121
+ for (const tg of tasks) {
122
+ display.heading(` ${tg.id} ${tg.title}`);
123
+ for (const sub of tg.subtasks) {
124
+ display.line(chalk.dim(` ${sub.id} ${sub.title}`));
125
+ }
126
+ }
127
+ display.separator(50);
128
+ const totalItems = tasks.reduce((sum, t) => sum + t.subtasks.length + 1, 0);
129
+ const confirm = await promptConfirm(`Create quick task list with ${totalItems} items?`, true);
130
+ if (!confirm) {
131
+ logger.info('Cancelled.');
132
+ return;
133
+ }
134
+ const { id, filePath } = await createArtifact(projectDir, config, 'quick', 'quick/quick-task.md.hbs', { title, tasks });
135
+ logger.success(`Created ${id}: ${title}`);
136
+ logger.dim(` ${filePath}`);
137
+ logger.dim(` Template: ${tpl.name}`);
138
+ logger.dim('');
139
+ logger.dim(` Next: Open ${id} in your coding agent for implementation`);
140
+ });
141
+ // -----------------------------------------------------------------------
142
+ // planr template save <taskId>
143
+ // -----------------------------------------------------------------------
144
+ template
145
+ .command('save')
146
+ .description('Save an existing task list as a reusable template')
147
+ .argument('<taskId>', 'task ID to save as template (e.g., TASK-001, QT-003)')
148
+ .option('-n, --name <name>', 'template name (lowercase, hyphenated)')
149
+ .action(async (taskId, opts) => {
150
+ const projectDir = program.opts().projectDir;
151
+ const config = await loadConfig(projectDir);
152
+ // Determine artifact type from ID prefix
153
+ const prefix = taskId.split('-')[0];
154
+ const type = prefix === 'QT' ? 'quick' : prefix === 'TASK' ? 'task' : null;
155
+ if (!type) {
156
+ logger.error('Only TASK-* and QT-* IDs can be saved as templates.');
157
+ return;
158
+ }
159
+ const raw = await readArtifactRaw(projectDir, config, type, taskId);
160
+ if (!raw) {
161
+ logger.error(`${taskId} not found.`);
162
+ return;
163
+ }
164
+ const templateName = opts.name || (await promptText('Template name (lowercase, hyphenated):'));
165
+ const description = await promptText('Brief description:');
166
+ // Parse tasks from the markdown
167
+ const { parseTaskMarkdown } = await import('../../agents/task-parser.js');
168
+ const parsed = parseTaskMarkdown(raw);
169
+ // Convert to template format
170
+ const taskGroups = [];
171
+ let currentGroup = null;
172
+ for (const item of parsed) {
173
+ if (item.depth === 0) {
174
+ currentGroup = { id: item.id, title: item.title, subtasks: [] };
175
+ taskGroups.push(currentGroup);
176
+ }
177
+ else if (currentGroup) {
178
+ currentGroup.subtasks.push({ id: item.id, title: item.title });
179
+ }
180
+ }
181
+ const templateData = {
182
+ name: templateName,
183
+ description,
184
+ variables: [],
185
+ tasks: taskGroups,
186
+ };
187
+ // Save to custom templates directory
188
+ const customDir = path.join(projectDir, config.outputPaths.agile, 'templates');
189
+ await ensureDir(customDir);
190
+ const filePath = path.join(customDir, `${templateName}.json`);
191
+ await writeFile(filePath, `${JSON.stringify(templateData, null, 2)}\n`);
192
+ logger.success(`Saved template "${templateName}"`);
193
+ logger.dim(` ${filePath}`);
194
+ logger.dim(` ${taskGroups.length} task groups, ${parsed.length} total items`);
195
+ logger.dim('');
196
+ logger.dim(` Use it: planr template use ${templateName} --title "My Task"`);
197
+ });
198
+ // -----------------------------------------------------------------------
199
+ // planr template delete <name>
200
+ // -----------------------------------------------------------------------
201
+ template
202
+ .command('delete')
203
+ .description('Delete a custom template')
204
+ .argument('<name>', 'template name')
205
+ .action(async (name) => {
206
+ const projectDir = program.opts().projectDir;
207
+ const config = await loadConfig(projectDir);
208
+ const customDir = path.join(projectDir, config.outputPaths.agile, 'templates');
209
+ const filePath = path.join(customDir, `${name}.json`);
210
+ if (!(await fileExists(filePath))) {
211
+ logger.error(`Custom template "${name}" not found. Only custom templates can be deleted.`);
212
+ return;
213
+ }
214
+ const confirm = await promptConfirm(`Delete template "${name}"?`, false);
215
+ if (!confirm) {
216
+ logger.info('Cancelled.');
217
+ return;
218
+ }
219
+ const { rm } = await import('node:fs/promises');
220
+ await rm(filePath);
221
+ logger.success(`Deleted template "${name}"`);
222
+ });
223
+ }
224
+ // ---------------------------------------------------------------------------
225
+ // Helpers
226
+ // ---------------------------------------------------------------------------
227
+ async function loadBuiltInTemplates() {
228
+ const dir = path.join(getTemplatesDir(), 'task-templates');
229
+ const files = await listFiles(dir, /\.json$/);
230
+ const templates = [];
231
+ for (const file of files) {
232
+ const raw = await readFile(path.join(dir, file));
233
+ const data = JSON.parse(raw);
234
+ templates.push({ ...data, source: 'built-in' });
235
+ }
236
+ return templates;
237
+ }
238
+ async function loadCustomTemplates(projectDir, config) {
239
+ const dir = path.join(projectDir, config.outputPaths.agile, 'templates');
240
+ if (!(await fileExists(dir)))
241
+ return [];
242
+ const files = await listFiles(dir, /\.json$/);
243
+ const templates = [];
244
+ for (const file of files) {
245
+ const raw = await readFile(path.join(dir, file));
246
+ const data = JSON.parse(raw);
247
+ templates.push({ ...data, source: 'custom' });
248
+ }
249
+ return templates;
250
+ }
251
+ async function loadAllTemplates(projectDir, config) {
252
+ const [builtIn, custom] = await Promise.all([
253
+ loadBuiltInTemplates(),
254
+ loadCustomTemplates(projectDir, config),
255
+ ]);
256
+ return [...builtIn, ...custom];
257
+ }
258
+ async function findTemplate(name, projectDir, config) {
259
+ const all = await loadAllTemplates(projectDir, config);
260
+ return all.find((t) => t.name === name) ?? null;
261
+ }
262
+ function substituteVars(text, vars) {
263
+ let result = text;
264
+ for (const [key, value] of Object.entries(vars)) {
265
+ result = result.replaceAll(`{{${key}}}`, value);
266
+ }
267
+ return result;
268
+ }
269
+ //# sourceMappingURL=template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/cli/commands/template.ts"],"names":[],"mappings":"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"}