openplanr 0.9.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 (222) hide show
  1. package/README.md +142 -58
  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 +38 -3
  44. package/dist/ai/prompts/prompt-builder.js.map +1 -1
  45. package/dist/ai/prompts/system-prompts.d.ts +4 -2
  46. package/dist/ai/prompts/system-prompts.d.ts.map +1 -1
  47. package/dist/ai/prompts/system-prompts.js +72 -12
  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 +3 -1
  54. package/dist/ai/types.d.ts.map +1 -1
  55. package/dist/ai/types.js +2 -0
  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 +29 -23
  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.js +6 -4
  84. package/dist/cli/commands/export.js.map +1 -1
  85. package/dist/cli/commands/feature.js +9 -9
  86. package/dist/cli/commands/feature.js.map +1 -1
  87. package/dist/cli/commands/github.d.ts.map +1 -1
  88. package/dist/cli/commands/github.js +30 -27
  89. package/dist/cli/commands/github.js.map +1 -1
  90. package/dist/cli/commands/plan.d.ts.map +1 -1
  91. package/dist/cli/commands/plan.js +27 -42
  92. package/dist/cli/commands/plan.js.map +1 -1
  93. package/dist/cli/commands/quick.d.ts.map +1 -1
  94. package/dist/cli/commands/quick.js +37 -107
  95. package/dist/cli/commands/quick.js.map +1 -1
  96. package/dist/cli/commands/refine.js +21 -21
  97. package/dist/cli/commands/refine.js.map +1 -1
  98. package/dist/cli/commands/search.d.ts.map +1 -1
  99. package/dist/cli/commands/search.js +18 -7
  100. package/dist/cli/commands/search.js.map +1 -1
  101. package/dist/cli/commands/sprint.d.ts +9 -0
  102. package/dist/cli/commands/sprint.d.ts.map +1 -0
  103. package/dist/cli/commands/sprint.js +519 -0
  104. package/dist/cli/commands/sprint.js.map +1 -0
  105. package/dist/cli/commands/status.d.ts.map +1 -1
  106. package/dist/cli/commands/status.js +77 -32
  107. package/dist/cli/commands/status.js.map +1 -1
  108. package/dist/cli/commands/story.js +15 -15
  109. package/dist/cli/commands/story.js.map +1 -1
  110. package/dist/cli/commands/sync.js +11 -7
  111. package/dist/cli/commands/sync.js.map +1 -1
  112. package/dist/cli/commands/task.d.ts +0 -2
  113. package/dist/cli/commands/task.d.ts.map +1 -1
  114. package/dist/cli/commands/task.js +14 -169
  115. package/dist/cli/commands/task.js.map +1 -1
  116. package/dist/cli/commands/template.d.ts +10 -0
  117. package/dist/cli/commands/template.d.ts.map +1 -0
  118. package/dist/cli/commands/template.js +269 -0
  119. package/dist/cli/commands/template.js.map +1 -0
  120. package/dist/cli/helpers/task-creation.d.ts +89 -0
  121. package/dist/cli/helpers/task-creation.d.ts.map +1 -0
  122. package/dist/cli/helpers/task-creation.js +140 -0
  123. package/dist/cli/helpers/task-creation.js.map +1 -0
  124. package/dist/cli/index.js +25 -2
  125. package/dist/cli/index.js.map +1 -1
  126. package/dist/models/schema.d.ts +2 -0
  127. package/dist/models/schema.d.ts.map +1 -1
  128. package/dist/models/schema.js +2 -0
  129. package/dist/models/schema.js.map +1 -1
  130. package/dist/models/types.d.ts +32 -1
  131. package/dist/models/types.d.ts.map +1 -1
  132. package/dist/services/artifact-gathering.d.ts +2 -0
  133. package/dist/services/artifact-gathering.d.ts.map +1 -1
  134. package/dist/services/artifact-gathering.js +26 -7
  135. package/dist/services/artifact-gathering.js.map +1 -1
  136. package/dist/services/artifact-service.d.ts +5 -5
  137. package/dist/services/artifact-service.d.ts.map +1 -1
  138. package/dist/services/artifact-service.js +4 -0
  139. package/dist/services/artifact-service.js.map +1 -1
  140. package/dist/services/config-service.d.ts.map +1 -1
  141. package/dist/services/config-service.js +2 -0
  142. package/dist/services/config-service.js.map +1 -1
  143. package/dist/services/credential-backends.d.ts.map +1 -1
  144. package/dist/services/credential-backends.js +15 -7
  145. package/dist/services/credential-backends.js.map +1 -1
  146. package/dist/services/credentials-service.d.ts.map +1 -1
  147. package/dist/services/credentials-service.js +6 -3
  148. package/dist/services/credentials-service.js.map +1 -1
  149. package/dist/services/github-service.d.ts +2 -2
  150. package/dist/services/github-service.d.ts.map +1 -1
  151. package/dist/services/github-service.js +9 -4
  152. package/dist/services/github-service.js.map +1 -1
  153. package/dist/services/template-service.d.ts +2 -1
  154. package/dist/services/template-service.d.ts.map +1 -1
  155. package/dist/services/template-service.js +2 -1
  156. package/dist/services/template-service.js.map +1 -1
  157. package/dist/templates/backlog/backlog-item.md.hbs +40 -0
  158. package/dist/templates/checklists/agile-checklist.md.hbs +1 -1
  159. package/dist/templates/quick/quick-task.md.hbs +1 -1
  160. package/dist/templates/rules/claude/CLAUDE.md.hbs +78 -35
  161. package/dist/templates/rules/codex/AGENTS.md.hbs +73 -17
  162. package/dist/templates/rules/cursor/2101-implement-task-list.mdc.hbs +66 -14
  163. package/dist/templates/sprints/sprint.md.hbs +42 -0
  164. package/dist/templates/task-templates/api-integration.json +45 -0
  165. package/dist/templates/task-templates/auth-flow.json +48 -0
  166. package/dist/templates/task-templates/database-migration.json +44 -0
  167. package/dist/templates/task-templates/react-component.json +45 -0
  168. package/dist/templates/task-templates/rest-endpoint.json +53 -0
  169. package/dist/templates/tasks/task-list.md.hbs +1 -1
  170. package/dist/utils/constants.d.ts +4 -0
  171. package/dist/utils/constants.d.ts.map +1 -1
  172. package/dist/utils/constants.js +4 -0
  173. package/dist/utils/constants.js.map +1 -1
  174. package/dist/utils/logger.d.ts +31 -1
  175. package/dist/utils/logger.d.ts.map +1 -1
  176. package/dist/utils/logger.js +92 -9
  177. package/dist/utils/logger.js.map +1 -1
  178. package/dist/utils/markdown.d.ts +3 -2
  179. package/dist/utils/markdown.d.ts.map +1 -1
  180. package/dist/utils/markdown.js +3 -1
  181. package/dist/utils/markdown.js.map +1 -1
  182. package/dist/utils/slugify.d.ts +8 -1
  183. package/dist/utils/slugify.d.ts.map +1 -1
  184. package/dist/utils/slugify.js +18 -2
  185. package/dist/utils/slugify.js.map +1 -1
  186. package/package.json +14 -3
  187. package/dist/agents/agent-factory.d.ts +0 -7
  188. package/dist/agents/agent-factory.d.ts.map +0 -1
  189. package/dist/agents/agent-factory.js +0 -22
  190. package/dist/agents/agent-factory.js.map +0 -1
  191. package/dist/agents/claude-agent.d.ts +0 -18
  192. package/dist/agents/claude-agent.d.ts.map +0 -1
  193. package/dist/agents/claude-agent.js +0 -183
  194. package/dist/agents/claude-agent.js.map +0 -1
  195. package/dist/agents/codex-agent.d.ts +0 -17
  196. package/dist/agents/codex-agent.d.ts.map +0 -1
  197. package/dist/agents/codex-agent.js +0 -124
  198. package/dist/agents/codex-agent.js.map +0 -1
  199. package/dist/agents/cursor-agent.d.ts +0 -14
  200. package/dist/agents/cursor-agent.d.ts.map +0 -1
  201. package/dist/agents/cursor-agent.js +0 -49
  202. package/dist/agents/cursor-agent.js.map +0 -1
  203. package/dist/agents/implementation-bridge.d.ts +0 -30
  204. package/dist/agents/implementation-bridge.d.ts.map +0 -1
  205. package/dist/agents/implementation-bridge.js +0 -256
  206. package/dist/agents/implementation-bridge.js.map +0 -1
  207. package/dist/agents/progress.d.ts +0 -62
  208. package/dist/agents/progress.d.ts.map +0 -1
  209. package/dist/agents/progress.js +0 -155
  210. package/dist/agents/progress.js.map +0 -1
  211. package/dist/agents/prompt-composer.d.ts +0 -30
  212. package/dist/agents/prompt-composer.d.ts.map +0 -1
  213. package/dist/agents/prompt-composer.js +0 -81
  214. package/dist/agents/prompt-composer.js.map +0 -1
  215. package/dist/agents/types.d.ts +0 -25
  216. package/dist/agents/types.d.ts.map +0 -1
  217. package/dist/agents/types.js +0 -8
  218. package/dist/agents/types.js.map +0 -1
  219. package/dist/utils/error-context.d.ts +0 -23
  220. package/dist/utils/error-context.d.ts.map +0 -1
  221. package/dist/utils/error-context.js +0 -94
  222. package/dist/utils/error-context.js.map +0 -1
@@ -1,124 +0,0 @@
1
- /**
2
- * OpenAI Codex CLI agent adapter.
3
- *
4
- * Invokes `codex exec --full-auto --json` for non-interactive mode with
5
- * write access. Parses JSONL events for real-time progress display.
6
- * Includes retry logic for transient errors.
7
- */
8
- import { spawn } from 'node:child_process';
9
- import { createReadStream } from 'node:fs';
10
- import { unlink, writeFile } from 'node:fs/promises';
11
- import { tmpdir } from 'node:os';
12
- import path from 'node:path';
13
- import chalk from 'chalk';
14
- import { createProgressSpinner, describeCodexActivity } from './progress.js';
15
- import { isRetryableError, MAX_RETRIES, RETRY_DELAY_MS, sleep, which } from './utils.js';
16
- export class CodexAgent {
17
- name = 'codex';
18
- async isAvailable() {
19
- return (await which('codex')) !== null;
20
- }
21
- async execute(prompt, options) {
22
- const tmpFile = path.join(tmpdir(), `planr-prompt-${Date.now()}.txt`);
23
- await writeFile(tmpFile, prompt, 'utf-8');
24
- try {
25
- let lastExitCode = 1;
26
- for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {
27
- if (attempt > 0) {
28
- const delaySec = (RETRY_DELAY_MS * attempt) / 1000;
29
- process.stderr.write(`\n⟳ Retrying (attempt ${attempt + 1}/${MAX_RETRIES + 1}) in ${delaySec}s...\n`);
30
- await sleep(RETRY_DELAY_MS * attempt);
31
- }
32
- const result = await this.spawnCodex(tmpFile, options);
33
- lastExitCode = result.exitCode;
34
- if (result.exitCode === 0)
35
- return result;
36
- if (result.stderr && isRetryableError(result.stderr))
37
- continue;
38
- return result;
39
- }
40
- return { output: '', exitCode: lastExitCode };
41
- }
42
- finally {
43
- await unlink(tmpFile).catch(() => { });
44
- }
45
- }
46
- spawnCodex(tmpFile, options) {
47
- return new Promise((resolve, reject) => {
48
- const args = this.buildArgs(options);
49
- const child = spawn('codex', args, {
50
- cwd: options.cwd,
51
- stdio: ['pipe', 'pipe', 'pipe'],
52
- env: { ...process.env },
53
- });
54
- // Stream the temp file into stdin
55
- const fileStream = createReadStream(tmpFile, 'utf-8');
56
- fileStream.pipe(child.stdin);
57
- const { spinner, stderrChunks, resultRef } = this.attachListeners(child);
58
- child.on('error', (err) => {
59
- spinner.stop();
60
- reject(new Error(`Failed to launch codex CLI: ${err.message}`));
61
- });
62
- child.on('close', (code) => {
63
- spinner.stop();
64
- if (resultRef.text) {
65
- console.log(resultRef.text);
66
- }
67
- if (code !== 0) {
68
- const stderr = stderrChunks.join('');
69
- if (stderr)
70
- process.stderr.write(stderr);
71
- }
72
- resolve({
73
- output: resultRef.text,
74
- exitCode: code ?? 1,
75
- stderr: stderrChunks.join(''),
76
- });
77
- });
78
- });
79
- }
80
- buildArgs(options) {
81
- if (options.continueSession) {
82
- return ['exec', 'resume', '--last'];
83
- }
84
- return ['exec', '--full-auto', '--json'];
85
- }
86
- attachListeners(child) {
87
- const spinner = createProgressSpinner();
88
- const stderrChunks = [];
89
- const resultRef = { text: '' };
90
- let jsonBuffer = '';
91
- child.stdout?.on('data', (data) => {
92
- jsonBuffer += data.toString();
93
- const lines = jsonBuffer.split('\n');
94
- jsonBuffer = lines.pop() || '';
95
- for (const line of lines) {
96
- const trimmed = line.trim();
97
- if (!trimmed)
98
- continue;
99
- try {
100
- const event = JSON.parse(trimmed);
101
- const activity = describeCodexActivity(event);
102
- if (activity) {
103
- spinner.setActivity(activity);
104
- process.stderr.write(`\r\x1b[K${chalk.green('✓')} ${chalk.dim(activity)}\n`);
105
- }
106
- // Capture the last agent message as the result text
107
- if (event.type === 'item.completed' &&
108
- event.item?.type === 'agent_message' &&
109
- event.item.text) {
110
- resultRef.text = event.item.text;
111
- }
112
- }
113
- catch {
114
- // Incomplete JSON line — skip
115
- }
116
- }
117
- });
118
- child.stderr?.on('data', (data) => {
119
- stderrChunks.push(data.toString());
120
- });
121
- return { spinner, stderrChunks, resultRef };
122
- }
123
- }
124
- //# sourceMappingURL=codex-agent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex-agent.js","sourceRoot":"","sources":["../../src/agents/codex-agent.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- /**
2
- * Cursor agent adapter.
3
- *
4
- * Since Cursor is GUI-based, this agent writes the implementation
5
- * prompt to a file that Cursor can read from its Composer panel.
6
- * For follow-up/fix prompts, it appends to the same file.
7
- */
8
- import type { AgentOptions, AgentResult, CodingAgent } from './types.js';
9
- export declare class CursorAgent implements CodingAgent {
10
- readonly name = "cursor";
11
- isAvailable(): Promise<boolean>;
12
- execute(prompt: string, options: AgentOptions): Promise<AgentResult>;
13
- }
14
- //# sourceMappingURL=cursor-agent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cursor-agent.d.ts","sourceRoot":"","sources":["../../src/agents/cursor-agent.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzE,qBAAa,WAAY,YAAW,WAAW;IAC7C,QAAQ,CAAC,IAAI,YAAY;IAEnB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAO/B,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;CAqC3E"}
@@ -1,49 +0,0 @@
1
- /**
2
- * Cursor agent adapter.
3
- *
4
- * Since Cursor is GUI-based, this agent writes the implementation
5
- * prompt to a file that Cursor can read from its Composer panel.
6
- * For follow-up/fix prompts, it appends to the same file.
7
- */
8
- import { access } from 'node:fs/promises';
9
- import path from 'node:path';
10
- import { ensureDir, writeFile } from '../utils/fs.js';
11
- import { logger } from '../utils/logger.js';
12
- export class CursorAgent {
13
- name = 'cursor';
14
- async isAvailable() {
15
- // Cursor is available if the project has a .cursor directory
16
- return access(path.join(process.cwd(), '.cursor'))
17
- .then(() => true)
18
- .catch(() => false);
19
- }
20
- async execute(prompt, options) {
21
- const promptDir = path.join(options.cwd, '.cursor', 'prompts');
22
- await ensureDir(promptDir);
23
- // Extract task ID from prompt for a meaningful filename
24
- const taskMatch = prompt.match(/TASK-\d{3}/);
25
- const filename = taskMatch ? `${taskMatch[0]}.md` : `implement-${Date.now()}.md`;
26
- const filePath = path.join(promptDir, filename);
27
- const header = options.continueSession ? '<!-- Follow-up / Fix prompt -->\n\n' : '';
28
- await writeFile(filePath, header + prompt);
29
- const action = options.continueSession ? 'Fix' : 'Implementation';
30
- const output = [
31
- `${action} prompt saved to: ${filePath}`,
32
- '',
33
- 'To use in Cursor:',
34
- ' 1. Open Cursor in this project',
35
- ' 2. Open Composer (Cmd+I / Ctrl+I)',
36
- ` 3. Reference the file: @${path.relative(options.cwd, filePath)}`,
37
- ' 4. Or copy-paste the prompt directly into Composer',
38
- ].join('\n');
39
- if (options.stream) {
40
- console.log(output);
41
- }
42
- if (options.continueSession) {
43
- logger.dim('Note: Cursor does not support session continuation.');
44
- logger.dim('The fix prompt has been saved as a new file — paste it into your existing Composer thread.');
45
- }
46
- return { output, exitCode: 0 };
47
- }
48
- }
49
- //# sourceMappingURL=cursor-agent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cursor-agent.js","sourceRoot":"","sources":["../../src/agents/cursor-agent.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG5C,MAAM,OAAO,WAAW;IACb,IAAI,GAAG,QAAQ,CAAC;IAEzB,KAAK,CAAC,WAAW;QACf,6DAA6D;QAC7D,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;aAC/C,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;aAChB,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,OAAqB;QACjD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAC/D,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC;QAE3B,wDAAwD;QACxD,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;QACjF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAEhD,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEpF,MAAM,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;QAE3C,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC;QAClE,MAAM,MAAM,GAAG;YACb,GAAG,MAAM,qBAAqB,QAAQ,EAAE;YACxC,EAAE;YACF,mBAAmB;YACnB,kCAAkC;YAClC,qCAAqC;YACrC,6BAA6B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE;YACnE,sDAAsD;SACvD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;QAED,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YAC5B,MAAM,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;YAClE,MAAM,CAAC,GAAG,CACR,4FAA4F,CAC7F,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IACjC,CAAC;CACF"}
@@ -1,30 +0,0 @@
1
- /**
2
- * Task implementation bridge.
3
- *
4
- * Orchestrates the full flow:
5
- * 1. Read and parse the task artifact
6
- * 2. Resolve target subtask(s)
7
- * 3. Gather parent chain context (story → feature → epic)
8
- * 4. Build codebase context
9
- * 5. Compose the implementation prompt
10
- * 6. Dispatch to the configured coding agent
11
- */
12
- import type { OpenPlanrConfig } from '../models/types.js';
13
- export interface ImplementOptions {
14
- subtask?: string;
15
- next?: boolean;
16
- agent?: string;
17
- dryRun?: boolean;
18
- markDone?: boolean;
19
- }
20
- export declare function executeImplementation(projectDir: string, config: OpenPlanrConfig, taskId: string, opts: ImplementOptions): Promise<void>;
21
- export interface FollowUpOptions {
22
- agent?: string;
23
- }
24
- /**
25
- * Send a follow-up message to the coding agent, continuing the
26
- * previous session. This is the feedback loop for fixing issues
27
- * found after implementation.
28
- */
29
- export declare function executeFollowUp(projectDir: string, config: OpenPlanrConfig, message: string, opts: FollowUpOptions): Promise<void>;
30
- //# sourceMappingURL=implementation-bridge.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"implementation-bridge.d.ts","sourceRoot":"","sources":["../../src/agents/implementation-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAmB,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAiB3E,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,IAAI,CAAC,CA2Kf;AAoCD,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,IAAI,CAAC,CAsCf"}
@@ -1,256 +0,0 @@
1
- /**
2
- * Task implementation bridge.
3
- *
4
- * Orchestrates the full flow:
5
- * 1. Read and parse the task artifact
6
- * 2. Resolve target subtask(s)
7
- * 3. Gather parent chain context (story → feature → epic)
8
- * 4. Build codebase context
9
- * 5. Compose the implementation prompt
10
- * 6. Dispatch to the configured coding agent
11
- */
12
- import chalk from 'chalk';
13
- import { getParentChain, readArtifact, readArtifactRaw, updateArtifact, } from '../services/artifact-service.js';
14
- import { logger } from '../utils/logger.js';
15
- import { createAgent } from './agent-factory.js';
16
- import { composeImplementationPrompt } from './prompt-composer.js';
17
- import { findSubtasks, formatSubtaskList, getNextPending, parseTaskMarkdown, } from './task-parser.js';
18
- export async function executeImplementation(projectDir, config, taskId, opts) {
19
- // 1. Read the task artifact (supports both TASK-xxx and QT-xxx)
20
- const artifactType = taskId.startsWith('QT-') ? 'quick' : 'task';
21
- const taskData = await readArtifact(projectDir, config, artifactType, taskId);
22
- if (!taskData) {
23
- logger.error(`Task list ${taskId} not found.`);
24
- process.exit(1);
25
- }
26
- logger.heading(`Implement: ${taskId}`);
27
- // 2. Parse subtasks
28
- const allSubtasks = parseTaskMarkdown(taskData.content);
29
- if (allSubtasks.length === 0) {
30
- logger.warn('No subtasks found in this task list.');
31
- logger.info('Task list content:');
32
- console.log(taskData.content);
33
- return;
34
- }
35
- // 3. Resolve target subtask(s)
36
- let targetSubtasks = allSubtasks;
37
- if (opts.next) {
38
- const next = getNextPending(allSubtasks);
39
- if (!next) {
40
- logger.success('All subtasks are completed!');
41
- return;
42
- }
43
- targetSubtasks = [next];
44
- logger.info(`Next pending: ${next.id} ${next.title}`);
45
- }
46
- else if (opts.subtask) {
47
- const matches = findSubtasks(allSubtasks, opts.subtask);
48
- if (matches.length === 0) {
49
- logger.error(`No subtask matching "${opts.subtask}" found.`);
50
- logger.dim('Available subtasks:');
51
- console.log(formatSubtaskList(allSubtasks));
52
- return;
53
- }
54
- targetSubtasks = matches;
55
- logger.info(`Matched ${matches.length} subtask(s):`);
56
- for (const m of matches) {
57
- logger.dim(` ${m.id} ${m.title}`);
58
- }
59
- }
60
- else {
61
- // Implementing all subtasks
62
- logger.info(`Implementing all ${allSubtasks.length} subtasks`);
63
- }
64
- // 4. Gather parent chain context
65
- logger.info('Preparing implementation context...');
66
- const parents = await getParentChain(projectDir, config, artifactType, taskId);
67
- logger.success(`Read ${taskId} (${allSubtasks.length} subtasks)`);
68
- let storyContent;
69
- let featureContent;
70
- let epicContent;
71
- const storyId = taskData.data.storyId;
72
- if (storyId) {
73
- storyContent = (await readArtifactRaw(projectDir, config, 'story', storyId)) || undefined;
74
- if (storyContent)
75
- logger.success(`Read parent story (${storyId})`);
76
- }
77
- if (parents.feature) {
78
- const featureId = parents.story?.data?.featureId;
79
- if (featureId) {
80
- featureContent =
81
- (await readArtifactRaw(projectDir, config, 'feature', featureId)) || undefined;
82
- if (featureContent)
83
- logger.success(`Read parent feature (${featureId})`);
84
- }
85
- }
86
- if (parents.epic) {
87
- const epicId = parents.feature?.data?.epicId;
88
- if (epicId) {
89
- epicContent = (await readArtifactRaw(projectDir, config, 'epic', epicId)) || undefined;
90
- if (epicContent)
91
- logger.success(`Read parent epic (${epicId})`);
92
- }
93
- }
94
- // 5. Build codebase context
95
- let codebaseContext;
96
- try {
97
- const { buildCodebaseContext, formatCodebaseContext, extractKeywords } = await import('../ai/codebase/index.js');
98
- const textToAnalyze = [taskData.content, storyContent || '', featureContent || ''].join(' ');
99
- const keywords = extractKeywords(textToAnalyze);
100
- const ctx = await buildCodebaseContext(projectDir, keywords);
101
- codebaseContext = formatCodebaseContext(ctx);
102
- const stackInfo = ctx.techStack
103
- ? ` — ${ctx.techStack.language}${ctx.techStack.framework ? ` + ${ctx.techStack.framework}` : ''}`
104
- : '';
105
- logger.success(`Scanned codebase${stackInfo}`);
106
- }
107
- catch {
108
- // Codebase scanning is best-effort
109
- }
110
- // 6. Compose prompt
111
- const prompt = composeImplementationPrompt({
112
- taskId,
113
- taskTitle: taskData.data.title || taskId,
114
- taskContent: taskData.content,
115
- targetSubtasks,
116
- allSubtasks,
117
- storyContent,
118
- featureContent,
119
- epicContent,
120
- codebaseContext,
121
- });
122
- // 7. Handle dry run
123
- if (opts.dryRun) {
124
- logger.heading('Dry Run — Composed Prompt:');
125
- console.log(chalk.dim('━'.repeat(60)));
126
- console.log(prompt);
127
- console.log(chalk.dim('━'.repeat(60)));
128
- logger.dim(`Prompt length: ${prompt.length} chars (~${Math.ceil(prompt.length / 4)} tokens)`);
129
- return;
130
- }
131
- // 8. Resolve and launch coding agent
132
- const agentName = (opts.agent || config.defaultAgent || 'claude');
133
- const agent = await createAgent(agentName);
134
- const available = await agent.isAvailable();
135
- if (!available) {
136
- logger.error(`Coding agent "${agentName}" is not available on this machine.`);
137
- logger.dim(`Make sure the "${agentName}" CLI is installed and in your PATH.`);
138
- logger.dim('');
139
- logger.dim('Install instructions:');
140
- logger.dim(' Claude: npm install -g @anthropic-ai/claude-code');
141
- logger.dim(' Codex: npm install -g @openai/codex');
142
- logger.dim(' Cursor: Install from https://cursor.sh');
143
- logger.dim('');
144
- logger.dim('Or use --dry-run to see the prompt without executing.');
145
- return;
146
- }
147
- logger.dim(`Prompt: ${prompt.length.toLocaleString()} chars (~${Math.ceil(prompt.length / 4).toLocaleString()} tokens)`);
148
- logger.heading(`Launching ${agentName}...`);
149
- console.log(chalk.dim('━'.repeat(60)));
150
- const result = await agent.execute(prompt, {
151
- cwd: projectDir,
152
- stream: true,
153
- dryRun: false,
154
- });
155
- console.log(chalk.dim('━'.repeat(60)));
156
- if (result.exitCode === 0) {
157
- // Mark implemented subtasks as done in the task file
158
- await markSubtasksDone(projectDir, config, artifactType, taskId, targetSubtasks);
159
- logger.success(`${agentName} completed successfully.`);
160
- logger.dim('');
161
- logger.dim('If something needs fixing, run:');
162
- logger.dim(' planr task fix "describe the issue"');
163
- logger.dim(' make build 2>&1 | planr task fix');
164
- }
165
- else {
166
- logger.warn(`${agentName} exited with code ${result.exitCode}.`);
167
- }
168
- }
169
- // ---------------------------------------------------------------------------
170
- // Mark subtasks as done
171
- // ---------------------------------------------------------------------------
172
- async function markSubtasksDone(projectDir, config, artifactType, taskId, subtasks) {
173
- const raw = await readArtifactRaw(projectDir, config, artifactType, taskId);
174
- if (!raw)
175
- return;
176
- const ids = new Set(subtasks.map((s) => s.id));
177
- let updated = raw;
178
- for (const id of ids) {
179
- // Match: `- [ ] 1.1 Title` (with optional leading whitespace for indented subtasks)
180
- const pattern = new RegExp(`^(\\s*- )\\[ \\](\\s+${id.replace('.', '\\.')}\\s)`, 'm');
181
- updated = updated.replace(pattern, '$1[x]$2');
182
- }
183
- if (updated !== raw) {
184
- await updateArtifact(projectDir, config, artifactType, taskId, updated);
185
- const count = ids.size;
186
- logger.success(`Marked ${count} subtask${count > 1 ? 's' : ''} as done in ${taskId}`);
187
- }
188
- }
189
- /**
190
- * Send a follow-up message to the coding agent, continuing the
191
- * previous session. This is the feedback loop for fixing issues
192
- * found after implementation.
193
- */
194
- export async function executeFollowUp(projectDir, config, message, opts) {
195
- logger.heading('Fix / Follow-up');
196
- // Compose a focused fix prompt
197
- const prompt = composeFixPrompt(message);
198
- logger.dim(`Prompt: ${prompt.length.toLocaleString()} chars (~${Math.ceil(prompt.length / 4).toLocaleString()} tokens)`);
199
- const agentName = (opts.agent || config.defaultAgent || 'claude');
200
- const agent = await createAgent(agentName);
201
- const available = await agent.isAvailable();
202
- if (!available) {
203
- logger.error(`Coding agent "${agentName}" is not available.`);
204
- return;
205
- }
206
- logger.heading(`Continuing ${agentName} session...`);
207
- console.log(chalk.dim('━'.repeat(60)));
208
- const result = await agent.execute(prompt, {
209
- cwd: projectDir,
210
- stream: true,
211
- dryRun: false,
212
- continueSession: true,
213
- });
214
- console.log(chalk.dim('━'.repeat(60)));
215
- if (result.exitCode === 0) {
216
- logger.success(`${agentName} completed fix successfully.`);
217
- logger.dim('');
218
- logger.dim('Still broken? Run planr task fix again with the new error.');
219
- }
220
- else {
221
- logger.warn(`${agentName} exited with code ${result.exitCode}.`);
222
- }
223
- }
224
- /**
225
- * Compose a follow-up prompt that includes the error/issue context
226
- * and clear instructions to fix the previously implemented code.
227
- */
228
- function composeFixPrompt(userMessage) {
229
- const sections = [];
230
- sections.push('# Fix Required\n');
231
- sections.push('The previously implemented code has an issue that needs fixing.\n');
232
- // Detect if the message looks like error output (long, has stack traces, etc.)
233
- const isErrorOutput = userMessage.length > 200 ||
234
- userMessage.includes('Error:') ||
235
- userMessage.includes('error:') ||
236
- userMessage.includes('FAIL') ||
237
- userMessage.includes('exit code');
238
- if (isErrorOutput) {
239
- sections.push('## Error Output\n');
240
- sections.push('```');
241
- sections.push(userMessage.trim());
242
- sections.push('```');
243
- }
244
- else {
245
- sections.push('## Issue Description\n');
246
- sections.push(userMessage.trim());
247
- }
248
- sections.push('\n## Instructions\n');
249
- sections.push('1. Analyze the error/issue above.');
250
- sections.push('2. Identify the root cause in the code you previously created.');
251
- sections.push('3. Fix ONLY what is needed — do not rewrite unrelated code.');
252
- sections.push('4. Verify the fix addresses the reported issue.');
253
- sections.push('5. If the error involves missing dependencies, use compatible versions.');
254
- return sections.join('\n');
255
- }
256
- //# sourceMappingURL=implementation-bridge.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"implementation-bridge.js","sourceRoot":"","sources":["../../src/agents/implementation-bridge.ts"],"names":[],"mappings":"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"}
@@ -1,62 +0,0 @@
1
- /**
2
- * Progress display for coding agent execution.
3
- *
4
- * Provides a dynamic spinner with rotating messages, elapsed time,
5
- * and real-time activity updates parsed from Claude's stream-json events.
6
- * Extracted as a shared module so any agent adapter can reuse it.
7
- */
8
- export interface ProgressSpinner {
9
- /** Update the spinner with a specific tool-activity message */
10
- setActivity(msg: string): void;
11
- /** Stop the spinner and clear the line */
12
- stop(): void;
13
- }
14
- export declare function formatElapsed(seconds: number): string;
15
- /**
16
- * Create a dynamic progress spinner that:
17
- * - Rotates through varied waiting messages every 8 seconds
18
- * - Switches to a specific activity when `setActivity()` is called
19
- * - Always shows elapsed time
20
- */
21
- export declare function createProgressSpinner(): ProgressSpinner;
22
- /** Minimal shape of the Claude stream-json events we need */
23
- export interface StreamEvent {
24
- type: string;
25
- message?: {
26
- content?: Array<{
27
- type: string;
28
- name?: string;
29
- input?: Record<string, unknown>;
30
- }>;
31
- };
32
- result?: string;
33
- }
34
- /**
35
- * Parse a stream-json event into a human-readable activity description.
36
- * Returns `null` for events that don't represent a notable tool action.
37
- */
38
- export declare function describeActivity(event: StreamEvent): string | null;
39
- /** Minimal shape of Codex exec --json events */
40
- export interface CodexEvent {
41
- type: string;
42
- item?: {
43
- id?: string;
44
- type?: string;
45
- text?: string;
46
- command?: string;
47
- aggregated_output?: string;
48
- exit_code?: number | null;
49
- status?: string;
50
- };
51
- usage?: {
52
- input_tokens?: number;
53
- cached_input_tokens?: number;
54
- output_tokens?: number;
55
- };
56
- }
57
- /**
58
- * Parse a Codex JSONL event into a human-readable activity description.
59
- * Returns `null` for events that don't represent a notable action.
60
- */
61
- export declare function describeCodexActivity(event: CodexEvent): string | null;
62
- //# sourceMappingURL=progress.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/agents/progress.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA+BH,MAAM,WAAW,eAAe;IAC9B,+DAA+D;IAC/D,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,0CAA0C;IAC1C,IAAI,IAAI,IAAI,CAAC;CACd;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAKrD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,CAwCvD;AAMD,6DAA6D;AAC7D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,KAAK,CAAC;YACd,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACjC,CAAC,CAAC;KACJ,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CA8BlE;AAaD,gDAAgD;AAChD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE;QACL,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,KAAK,CAAC,EAAE;QACN,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CA6BtE"}