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.
- package/README.md +142 -58
- package/dist/agents/index.d.ts +1 -5
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +1 -4
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/task-parser.d.ts +4 -1
- package/dist/agents/task-parser.d.ts.map +1 -1
- package/dist/agents/task-parser.js +6 -3
- package/dist/agents/task-parser.js.map +1 -1
- package/dist/agents/utils.d.ts +0 -4
- package/dist/agents/utils.d.ts.map +1 -1
- package/dist/agents/utils.js +3 -24
- package/dist/agents/utils.js.map +1 -1
- package/dist/ai/codebase/context-builder.d.ts +22 -3
- package/dist/ai/codebase/context-builder.d.ts.map +1 -1
- package/dist/ai/codebase/context-builder.js +202 -14
- package/dist/ai/codebase/context-builder.js.map +1 -1
- package/dist/ai/codebase/file-reader.d.ts.map +1 -1
- package/dist/ai/codebase/file-reader.js +7 -3
- package/dist/ai/codebase/file-reader.js.map +1 -1
- package/dist/ai/codebase/index.d.ts +3 -1
- package/dist/ai/codebase/index.d.ts.map +1 -1
- package/dist/ai/codebase/index.js +3 -1
- package/dist/ai/codebase/index.js.map +1 -1
- package/dist/ai/codebase/pattern-rules.d.ts +28 -0
- package/dist/ai/codebase/pattern-rules.d.ts.map +1 -0
- package/dist/ai/codebase/pattern-rules.js +186 -0
- package/dist/ai/codebase/pattern-rules.js.map +1 -0
- package/dist/ai/codebase/rules-reader.d.ts +14 -0
- package/dist/ai/codebase/rules-reader.d.ts.map +1 -0
- package/dist/ai/codebase/rules-reader.js +25 -0
- package/dist/ai/codebase/rules-reader.js.map +1 -0
- package/dist/ai/codebase/stack-detector.d.ts.map +1 -1
- package/dist/ai/codebase/stack-detector.js +4 -1
- package/dist/ai/codebase/stack-detector.js.map +1 -1
- package/dist/ai/codebase/tree-generator.d.ts.map +1 -1
- package/dist/ai/codebase/tree-generator.js +5 -2
- package/dist/ai/codebase/tree-generator.js.map +1 -1
- package/dist/ai/errors.js +1 -1
- package/dist/ai/errors.js.map +1 -1
- package/dist/ai/prompts/prompt-builder.d.ts +12 -0
- package/dist/ai/prompts/prompt-builder.d.ts.map +1 -1
- package/dist/ai/prompts/prompt-builder.js +38 -3
- package/dist/ai/prompts/prompt-builder.js.map +1 -1
- package/dist/ai/prompts/system-prompts.d.ts +4 -2
- package/dist/ai/prompts/system-prompts.d.ts.map +1 -1
- package/dist/ai/prompts/system-prompts.js +72 -12
- package/dist/ai/prompts/system-prompts.js.map +1 -1
- package/dist/ai/schemas/ai-response-schemas.d.ts +48 -2
- package/dist/ai/schemas/ai-response-schemas.d.ts.map +1 -1
- package/dist/ai/schemas/ai-response-schemas.js +19 -0
- package/dist/ai/schemas/ai-response-schemas.js.map +1 -1
- package/dist/ai/types.d.ts +3 -1
- package/dist/ai/types.d.ts.map +1 -1
- package/dist/ai/types.js +2 -0
- package/dist/ai/types.js.map +1 -1
- package/dist/ai/validation/dependency-chains.d.ts +21 -0
- package/dist/ai/validation/dependency-chains.d.ts.map +1 -0
- package/dist/ai/validation/dependency-chains.js +114 -0
- package/dist/ai/validation/dependency-chains.js.map +1 -0
- package/dist/ai/validation/index.d.ts +3 -0
- package/dist/ai/validation/index.d.ts.map +1 -0
- package/dist/ai/validation/index.js +3 -0
- package/dist/ai/validation/index.js.map +1 -0
- package/dist/ai/validation/task-validator.d.ts +37 -0
- package/dist/ai/validation/task-validator.d.ts.map +1 -0
- package/dist/ai/validation/task-validator.js +89 -0
- package/dist/ai/validation/task-validator.js.map +1 -0
- package/dist/cli/commands/backlog.d.ts +10 -0
- package/dist/cli/commands/backlog.d.ts.map +1 -0
- package/dist/cli/commands/backlog.js +292 -0
- package/dist/cli/commands/backlog.js.map +1 -0
- package/dist/cli/commands/checklist.js +4 -4
- package/dist/cli/commands/checklist.js.map +1 -1
- package/dist/cli/commands/config.js +13 -13
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/epic.d.ts.map +1 -1
- package/dist/cli/commands/epic.js +29 -23
- package/dist/cli/commands/epic.js.map +1 -1
- package/dist/cli/commands/estimate.d.ts.map +1 -1
- package/dist/cli/commands/estimate.js +40 -39
- package/dist/cli/commands/estimate.js.map +1 -1
- package/dist/cli/commands/export.js +6 -4
- package/dist/cli/commands/export.js.map +1 -1
- package/dist/cli/commands/feature.js +9 -9
- package/dist/cli/commands/feature.js.map +1 -1
- package/dist/cli/commands/github.d.ts.map +1 -1
- package/dist/cli/commands/github.js +30 -27
- package/dist/cli/commands/github.js.map +1 -1
- package/dist/cli/commands/plan.d.ts.map +1 -1
- package/dist/cli/commands/plan.js +27 -42
- package/dist/cli/commands/plan.js.map +1 -1
- package/dist/cli/commands/quick.d.ts.map +1 -1
- package/dist/cli/commands/quick.js +37 -107
- package/dist/cli/commands/quick.js.map +1 -1
- package/dist/cli/commands/refine.js +21 -21
- package/dist/cli/commands/refine.js.map +1 -1
- package/dist/cli/commands/search.d.ts.map +1 -1
- package/dist/cli/commands/search.js +18 -7
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/sprint.d.ts +9 -0
- package/dist/cli/commands/sprint.d.ts.map +1 -0
- package/dist/cli/commands/sprint.js +519 -0
- package/dist/cli/commands/sprint.js.map +1 -0
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +77 -32
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/story.js +15 -15
- package/dist/cli/commands/story.js.map +1 -1
- package/dist/cli/commands/sync.js +11 -7
- package/dist/cli/commands/sync.js.map +1 -1
- package/dist/cli/commands/task.d.ts +0 -2
- package/dist/cli/commands/task.d.ts.map +1 -1
- package/dist/cli/commands/task.js +14 -169
- package/dist/cli/commands/task.js.map +1 -1
- package/dist/cli/commands/template.d.ts +10 -0
- package/dist/cli/commands/template.d.ts.map +1 -0
- package/dist/cli/commands/template.js +269 -0
- package/dist/cli/commands/template.js.map +1 -0
- package/dist/cli/helpers/task-creation.d.ts +89 -0
- package/dist/cli/helpers/task-creation.d.ts.map +1 -0
- package/dist/cli/helpers/task-creation.js +140 -0
- package/dist/cli/helpers/task-creation.js.map +1 -0
- package/dist/cli/index.js +25 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/models/schema.d.ts +2 -0
- package/dist/models/schema.d.ts.map +1 -1
- package/dist/models/schema.js +2 -0
- package/dist/models/schema.js.map +1 -1
- package/dist/models/types.d.ts +32 -1
- package/dist/models/types.d.ts.map +1 -1
- package/dist/services/artifact-gathering.d.ts +2 -0
- package/dist/services/artifact-gathering.d.ts.map +1 -1
- package/dist/services/artifact-gathering.js +26 -7
- package/dist/services/artifact-gathering.js.map +1 -1
- package/dist/services/artifact-service.d.ts +5 -5
- package/dist/services/artifact-service.d.ts.map +1 -1
- package/dist/services/artifact-service.js +4 -0
- package/dist/services/artifact-service.js.map +1 -1
- package/dist/services/config-service.d.ts.map +1 -1
- package/dist/services/config-service.js +2 -0
- package/dist/services/config-service.js.map +1 -1
- package/dist/services/credential-backends.d.ts.map +1 -1
- package/dist/services/credential-backends.js +15 -7
- package/dist/services/credential-backends.js.map +1 -1
- package/dist/services/credentials-service.d.ts.map +1 -1
- package/dist/services/credentials-service.js +6 -3
- package/dist/services/credentials-service.js.map +1 -1
- package/dist/services/github-service.d.ts +2 -2
- package/dist/services/github-service.d.ts.map +1 -1
- package/dist/services/github-service.js +9 -4
- package/dist/services/github-service.js.map +1 -1
- package/dist/services/template-service.d.ts +2 -1
- package/dist/services/template-service.d.ts.map +1 -1
- package/dist/services/template-service.js +2 -1
- package/dist/services/template-service.js.map +1 -1
- package/dist/templates/backlog/backlog-item.md.hbs +40 -0
- package/dist/templates/checklists/agile-checklist.md.hbs +1 -1
- package/dist/templates/quick/quick-task.md.hbs +1 -1
- package/dist/templates/rules/claude/CLAUDE.md.hbs +78 -35
- package/dist/templates/rules/codex/AGENTS.md.hbs +73 -17
- package/dist/templates/rules/cursor/2101-implement-task-list.mdc.hbs +66 -14
- package/dist/templates/sprints/sprint.md.hbs +42 -0
- package/dist/templates/task-templates/api-integration.json +45 -0
- package/dist/templates/task-templates/auth-flow.json +48 -0
- package/dist/templates/task-templates/database-migration.json +44 -0
- package/dist/templates/task-templates/react-component.json +45 -0
- package/dist/templates/task-templates/rest-endpoint.json +53 -0
- package/dist/templates/tasks/task-list.md.hbs +1 -1
- package/dist/utils/constants.d.ts +4 -0
- package/dist/utils/constants.d.ts.map +1 -1
- package/dist/utils/constants.js +4 -0
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/logger.d.ts +31 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +92 -9
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/markdown.d.ts +3 -2
- package/dist/utils/markdown.d.ts.map +1 -1
- package/dist/utils/markdown.js +3 -1
- package/dist/utils/markdown.js.map +1 -1
- package/dist/utils/slugify.d.ts +8 -1
- package/dist/utils/slugify.d.ts.map +1 -1
- package/dist/utils/slugify.js +18 -2
- package/dist/utils/slugify.js.map +1 -1
- package/package.json +14 -3
- package/dist/agents/agent-factory.d.ts +0 -7
- package/dist/agents/agent-factory.d.ts.map +0 -1
- package/dist/agents/agent-factory.js +0 -22
- package/dist/agents/agent-factory.js.map +0 -1
- package/dist/agents/claude-agent.d.ts +0 -18
- package/dist/agents/claude-agent.d.ts.map +0 -1
- package/dist/agents/claude-agent.js +0 -183
- package/dist/agents/claude-agent.js.map +0 -1
- package/dist/agents/codex-agent.d.ts +0 -17
- package/dist/agents/codex-agent.d.ts.map +0 -1
- package/dist/agents/codex-agent.js +0 -124
- package/dist/agents/codex-agent.js.map +0 -1
- package/dist/agents/cursor-agent.d.ts +0 -14
- package/dist/agents/cursor-agent.d.ts.map +0 -1
- package/dist/agents/cursor-agent.js +0 -49
- package/dist/agents/cursor-agent.js.map +0 -1
- package/dist/agents/implementation-bridge.d.ts +0 -30
- package/dist/agents/implementation-bridge.d.ts.map +0 -1
- package/dist/agents/implementation-bridge.js +0 -256
- package/dist/agents/implementation-bridge.js.map +0 -1
- package/dist/agents/progress.d.ts +0 -62
- package/dist/agents/progress.d.ts.map +0 -1
- package/dist/agents/progress.js +0 -155
- package/dist/agents/progress.js.map +0 -1
- package/dist/agents/prompt-composer.d.ts +0 -30
- package/dist/agents/prompt-composer.d.ts.map +0 -1
- package/dist/agents/prompt-composer.js +0 -81
- package/dist/agents/prompt-composer.js.map +0 -1
- package/dist/agents/types.d.ts +0 -25
- package/dist/agents/types.d.ts.map +0 -1
- package/dist/agents/types.js +0 -8
- package/dist/agents/types.js.map +0 -1
- package/dist/utils/error-context.d.ts +0 -23
- package/dist/utils/error-context.d.ts.map +0 -1
- package/dist/utils/error-context.js +0 -94
- package/dist/utils/error-context.js.map +0 -1
package/dist/agents/progress.js
DELETED
|
@@ -1,155 +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
|
-
import chalk from 'chalk';
|
|
9
|
-
// ---------------------------------------------------------------------------
|
|
10
|
-
// Spinner
|
|
11
|
-
// ---------------------------------------------------------------------------
|
|
12
|
-
const SPINNER_FRAMES = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
|
|
13
|
-
const WAITING_MESSAGES = [
|
|
14
|
-
'Warming up...',
|
|
15
|
-
'Analyzing the task...',
|
|
16
|
-
'Planning implementation...',
|
|
17
|
-
'Thinking about the approach...',
|
|
18
|
-
'Working on it...',
|
|
19
|
-
'Crafting the solution...',
|
|
20
|
-
'Reviewing the codebase...',
|
|
21
|
-
'Preparing changes...',
|
|
22
|
-
'Designing the architecture...',
|
|
23
|
-
'Almost ready...',
|
|
24
|
-
'Putting it all together...',
|
|
25
|
-
'Fine-tuning the details...',
|
|
26
|
-
'Working through the requirements...',
|
|
27
|
-
'Building the implementation...',
|
|
28
|
-
'Connecting the pieces...',
|
|
29
|
-
];
|
|
30
|
-
/** How often to rotate the generic waiting message (ms) */
|
|
31
|
-
const MESSAGE_ROTATE_MS = 8000;
|
|
32
|
-
export function formatElapsed(seconds) {
|
|
33
|
-
if (seconds < 60)
|
|
34
|
-
return `${seconds}s`;
|
|
35
|
-
const m = Math.floor(seconds / 60);
|
|
36
|
-
const s = seconds % 60;
|
|
37
|
-
return `${m}m${s > 0 ? ` ${s}s` : ''}`;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Create a dynamic progress spinner that:
|
|
41
|
-
* - Rotates through varied waiting messages every 8 seconds
|
|
42
|
-
* - Switches to a specific activity when `setActivity()` is called
|
|
43
|
-
* - Always shows elapsed time
|
|
44
|
-
*/
|
|
45
|
-
export function createProgressSpinner() {
|
|
46
|
-
let frameIndex = 0;
|
|
47
|
-
let messageIndex = 0;
|
|
48
|
-
let currentActivity = '';
|
|
49
|
-
let lastMessageChange = Date.now();
|
|
50
|
-
const startTime = Date.now();
|
|
51
|
-
const write = () => {
|
|
52
|
-
const frame = chalk.cyan(SPINNER_FRAMES[frameIndex % SPINNER_FRAMES.length]);
|
|
53
|
-
const elapsed = Math.floor((Date.now() - startTime) / 1000);
|
|
54
|
-
const timeStr = chalk.dim(`(${formatElapsed(elapsed)})`);
|
|
55
|
-
let msg;
|
|
56
|
-
if (currentActivity) {
|
|
57
|
-
msg = currentActivity;
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
const now = Date.now();
|
|
61
|
-
if (now - lastMessageChange > MESSAGE_ROTATE_MS) {
|
|
62
|
-
messageIndex = (messageIndex + 1) % WAITING_MESSAGES.length;
|
|
63
|
-
lastMessageChange = now;
|
|
64
|
-
}
|
|
65
|
-
msg = WAITING_MESSAGES[messageIndex];
|
|
66
|
-
}
|
|
67
|
-
process.stderr.write(`\r\x1b[K${frame} ${chalk.dim(msg)} ${timeStr}`);
|
|
68
|
-
frameIndex++;
|
|
69
|
-
};
|
|
70
|
-
write();
|
|
71
|
-
const interval = setInterval(write, 80);
|
|
72
|
-
return {
|
|
73
|
-
setActivity(msg) {
|
|
74
|
-
currentActivity = msg;
|
|
75
|
-
},
|
|
76
|
-
stop() {
|
|
77
|
-
clearInterval(interval);
|
|
78
|
-
process.stderr.write('\r\x1b[K');
|
|
79
|
-
},
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Parse a stream-json event into a human-readable activity description.
|
|
84
|
-
* Returns `null` for events that don't represent a notable tool action.
|
|
85
|
-
*/
|
|
86
|
-
export function describeActivity(event) {
|
|
87
|
-
if (event.type !== 'assistant' || !event.message?.content)
|
|
88
|
-
return null;
|
|
89
|
-
for (const block of event.message.content) {
|
|
90
|
-
if (block.type !== 'tool_use')
|
|
91
|
-
continue;
|
|
92
|
-
const input = block.input;
|
|
93
|
-
switch (block.name) {
|
|
94
|
-
case 'Write':
|
|
95
|
-
return `Creating ${shortPath(input?.file_path)}`;
|
|
96
|
-
case 'Edit':
|
|
97
|
-
return `Editing ${shortPath(input?.file_path)}`;
|
|
98
|
-
case 'Read':
|
|
99
|
-
return `Reading ${shortPath(input?.file_path)}`;
|
|
100
|
-
case 'Bash': {
|
|
101
|
-
const cmd = input?.command || '';
|
|
102
|
-
const firstLine = cmd.split('\n')[0] || 'command';
|
|
103
|
-
const display = firstLine.length > 80 ? `${firstLine.slice(0, 77)}...` : firstLine;
|
|
104
|
-
return `$ ${display}`;
|
|
105
|
-
}
|
|
106
|
-
case 'Glob':
|
|
107
|
-
return 'Searching files...';
|
|
108
|
-
case 'Grep':
|
|
109
|
-
return 'Searching code...';
|
|
110
|
-
default:
|
|
111
|
-
return `Using ${block.name}...`;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
return null;
|
|
115
|
-
}
|
|
116
|
-
/** Shorten a file path to its last two segments for display */
|
|
117
|
-
function shortPath(filePath) {
|
|
118
|
-
if (!filePath)
|
|
119
|
-
return 'file';
|
|
120
|
-
const parts = filePath.split('/');
|
|
121
|
-
return parts.length > 2 ? parts.slice(-2).join('/') : filePath;
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Parse a Codex JSONL event into a human-readable activity description.
|
|
125
|
-
* Returns `null` for events that don't represent a notable action.
|
|
126
|
-
*/
|
|
127
|
-
export function describeCodexActivity(event) {
|
|
128
|
-
if (!event.item)
|
|
129
|
-
return null;
|
|
130
|
-
if (event.type === 'item.started' && event.item.type === 'command_execution') {
|
|
131
|
-
const cmd = event.item.command || '';
|
|
132
|
-
// Strip the shell wrapper (e.g., `/bin/zsh -lc "..."`)
|
|
133
|
-
const inner = cmd.replace(/^\/bin\/\w+\s+-\w+\s+/, '').replace(/^["']|["']$/g, '');
|
|
134
|
-
const firstLine = inner.split('\n')[0] || 'command';
|
|
135
|
-
const display = firstLine.length > 80 ? `${firstLine.slice(0, 77)}...` : firstLine;
|
|
136
|
-
return `$ ${display}`;
|
|
137
|
-
}
|
|
138
|
-
if (event.type === 'item.completed' && event.item.type === 'command_execution') {
|
|
139
|
-
const code = event.item.exit_code;
|
|
140
|
-
if (code !== null && code !== undefined && code !== 0) {
|
|
141
|
-
return `Command exited with code ${code}`;
|
|
142
|
-
}
|
|
143
|
-
return null; // Successful command completion — already shown at start
|
|
144
|
-
}
|
|
145
|
-
if (event.type === 'item.completed' && event.item.type === 'agent_message') {
|
|
146
|
-
const text = event.item.text || '';
|
|
147
|
-
// Show a brief preview of what the agent is saying
|
|
148
|
-
const firstLine = text.split('\n')[0] || '';
|
|
149
|
-
if (firstLine.length > 80)
|
|
150
|
-
return `${firstLine.slice(0, 77)}...`;
|
|
151
|
-
return firstLine || null;
|
|
152
|
-
}
|
|
153
|
-
return null;
|
|
154
|
-
}
|
|
155
|
-
//# sourceMappingURL=progress.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/agents/progress.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Composes rich implementation prompts for coding agents.
|
|
3
|
-
*
|
|
4
|
-
* Assembles a structured prompt from:
|
|
5
|
-
* 1. Target subtask details
|
|
6
|
-
* 2. Full task list context (what's done, what's next)
|
|
7
|
-
* 3. Parent story and feature context
|
|
8
|
-
* 4. Codebase context (tech stack, folder tree, related files)
|
|
9
|
-
*
|
|
10
|
-
* The output is a detailed markdown prompt that any coding agent
|
|
11
|
-
* (Claude, Cursor, Codex) can understand and act on.
|
|
12
|
-
*/
|
|
13
|
-
import type { ParsedSubtask } from './task-parser.js';
|
|
14
|
-
export interface ImplementationContext {
|
|
15
|
-
taskId: string;
|
|
16
|
-
taskTitle: string;
|
|
17
|
-
taskContent: string;
|
|
18
|
-
targetSubtasks: ParsedSubtask[];
|
|
19
|
-
allSubtasks: ParsedSubtask[];
|
|
20
|
-
storyContent?: string;
|
|
21
|
-
featureContent?: string;
|
|
22
|
-
epicContent?: string;
|
|
23
|
-
codebaseContext?: string;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Compose a complete implementation prompt from gathered context.
|
|
27
|
-
* Returns a markdown string ready to be sent to a coding agent.
|
|
28
|
-
*/
|
|
29
|
-
export declare function composeImplementationPrompt(ctx: ImplementationContext): string;
|
|
30
|
-
//# sourceMappingURL=prompt-composer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-composer.d.ts","sourceRoot":"","sources":["../../src/agents/prompt-composer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGtD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,WAAW,EAAE,aAAa,EAAE,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,qBAAqB,GAAG,MAAM,CAmE9E"}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Composes rich implementation prompts for coding agents.
|
|
3
|
-
*
|
|
4
|
-
* Assembles a structured prompt from:
|
|
5
|
-
* 1. Target subtask details
|
|
6
|
-
* 2. Full task list context (what's done, what's next)
|
|
7
|
-
* 3. Parent story and feature context
|
|
8
|
-
* 4. Codebase context (tech stack, folder tree, related files)
|
|
9
|
-
*
|
|
10
|
-
* The output is a detailed markdown prompt that any coding agent
|
|
11
|
-
* (Claude, Cursor, Codex) can understand and act on.
|
|
12
|
-
*/
|
|
13
|
-
import { formatSubtaskList } from './task-parser.js';
|
|
14
|
-
/**
|
|
15
|
-
* Compose a complete implementation prompt from gathered context.
|
|
16
|
-
* Returns a markdown string ready to be sent to a coding agent.
|
|
17
|
-
*/
|
|
18
|
-
export function composeImplementationPrompt(ctx) {
|
|
19
|
-
const sections = [];
|
|
20
|
-
// Header
|
|
21
|
-
sections.push(`# Implementation Task: ${ctx.taskId}`);
|
|
22
|
-
// Target subtask(s)
|
|
23
|
-
if (ctx.targetSubtasks.length > 0) {
|
|
24
|
-
sections.push('## Target Subtask(s)\n');
|
|
25
|
-
sections.push('Implement ONLY the following subtask(s):');
|
|
26
|
-
sections.push('');
|
|
27
|
-
for (const st of ctx.targetSubtasks) {
|
|
28
|
-
sections.push(`- **${st.id}**: ${st.title}`);
|
|
29
|
-
}
|
|
30
|
-
// Parent group context
|
|
31
|
-
const parentId = ctx.targetSubtasks[0]?.parentId;
|
|
32
|
-
if (parentId) {
|
|
33
|
-
const parentGroup = ctx.allSubtasks.find((t) => t.id === parentId);
|
|
34
|
-
if (parentGroup) {
|
|
35
|
-
sections.push(`\nParent task group: **${parentGroup.id}** ${parentGroup.title}`);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
// Full task list (shows what's done and what's pending)
|
|
40
|
-
sections.push('\n## Full Task List\n');
|
|
41
|
-
sections.push('```');
|
|
42
|
-
const _targetIds = new Set(ctx.targetSubtasks.map((t) => t.id));
|
|
43
|
-
const firstTargetId = ctx.targetSubtasks[0]?.id;
|
|
44
|
-
sections.push(formatSubtaskList(ctx.allSubtasks, firstTargetId));
|
|
45
|
-
sections.push('```');
|
|
46
|
-
// Parent story context
|
|
47
|
-
if (ctx.storyContent) {
|
|
48
|
-
sections.push('\n## User Story Context\n');
|
|
49
|
-
sections.push(truncate(ctx.storyContent, 3000));
|
|
50
|
-
}
|
|
51
|
-
// Parent feature context
|
|
52
|
-
if (ctx.featureContent) {
|
|
53
|
-
sections.push('\n## Feature Context\n');
|
|
54
|
-
sections.push(truncate(ctx.featureContent, 2000));
|
|
55
|
-
}
|
|
56
|
-
// Parent epic context (brief)
|
|
57
|
-
if (ctx.epicContent) {
|
|
58
|
-
sections.push('\n## Epic Context (summary)\n');
|
|
59
|
-
sections.push(truncate(ctx.epicContent, 1000));
|
|
60
|
-
}
|
|
61
|
-
// Codebase context
|
|
62
|
-
if (ctx.codebaseContext) {
|
|
63
|
-
sections.push('\n## Codebase Context\n');
|
|
64
|
-
sections.push(ctx.codebaseContext);
|
|
65
|
-
}
|
|
66
|
-
// Instructions
|
|
67
|
-
sections.push('\n## Instructions\n');
|
|
68
|
-
sections.push('1. Implement ONLY the target subtask(s) listed above.');
|
|
69
|
-
sections.push('2. Follow existing code patterns and conventions in the codebase.');
|
|
70
|
-
sections.push('3. Write clean, well-documented code.');
|
|
71
|
-
sections.push('4. Include appropriate error handling.');
|
|
72
|
-
sections.push('5. Add or update tests for the changes.');
|
|
73
|
-
sections.push('6. Do NOT modify code unrelated to the target subtask(s).');
|
|
74
|
-
return sections.join('\n');
|
|
75
|
-
}
|
|
76
|
-
function truncate(text, maxChars) {
|
|
77
|
-
if (text.length <= maxChars)
|
|
78
|
-
return text;
|
|
79
|
-
return `${text.slice(0, maxChars)}\n\n... (truncated)`;
|
|
80
|
-
}
|
|
81
|
-
//# sourceMappingURL=prompt-composer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-composer.js","sourceRoot":"","sources":["../../src/agents/prompt-composer.ts"],"names":[],"mappings":"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"}
|
package/dist/agents/types.d.ts
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Coding agent abstraction types.
|
|
3
|
-
*
|
|
4
|
-
* Each supported coding agent (Claude CLI, Cursor, Codex) implements
|
|
5
|
-
* the CodingAgent interface for unified task implementation dispatch.
|
|
6
|
-
*/
|
|
7
|
-
export interface AgentOptions {
|
|
8
|
-
cwd: string;
|
|
9
|
-
stream: boolean;
|
|
10
|
-
dryRun: boolean;
|
|
11
|
-
/** Continue a previous session instead of starting fresh */
|
|
12
|
-
continueSession?: boolean;
|
|
13
|
-
}
|
|
14
|
-
export interface AgentResult {
|
|
15
|
-
output: string;
|
|
16
|
-
exitCode: number;
|
|
17
|
-
}
|
|
18
|
-
export interface CodingAgent {
|
|
19
|
-
readonly name: string;
|
|
20
|
-
/** Check if the coding agent CLI/tool is available on this machine. */
|
|
21
|
-
isAvailable(): Promise<boolean>;
|
|
22
|
-
/** Execute an implementation prompt via the coding agent. */
|
|
23
|
-
execute(prompt: string, options: AgentOptions): Promise<AgentResult>;
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agents/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,4DAA4D;IAC5D,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,uEAAuE;IACvE,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAEhC,6DAA6D;IAC7D,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACtE"}
|
package/dist/agents/types.js
DELETED
package/dist/agents/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/agents/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Error context extraction and multi-line input utilities.
|
|
3
|
-
*
|
|
4
|
-
* Used by `planr task fix` to intelligently truncate verbose build/test
|
|
5
|
-
* output down to the error-relevant portion before sending to an AI agent.
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* Extract only the error-relevant portion from verbose build output.
|
|
9
|
-
*
|
|
10
|
-
* - Input ≤ 150 lines → returned as-is
|
|
11
|
-
* - Error marker found → keeps 20 lines of context before it + up to 130 after
|
|
12
|
-
* - No marker found → keeps the last 150 lines (tail)
|
|
13
|
-
*/
|
|
14
|
-
export declare function extractErrorContext(raw: string): string;
|
|
15
|
-
/**
|
|
16
|
-
* Read multi-line input from the terminal.
|
|
17
|
-
*
|
|
18
|
-
* The user types or pastes text and submits by pressing Enter on an
|
|
19
|
-
* empty line (double Enter). Large pastes are automatically truncated
|
|
20
|
-
* to the error-relevant portion.
|
|
21
|
-
*/
|
|
22
|
-
export declare function readMultilineInput(): Promise<string>;
|
|
23
|
-
//# sourceMappingURL=error-context.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error-context.d.ts","sourceRoot":"","sources":["../../src/utils/error-context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA2BH;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAwBvD;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAgC1D"}
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Error context extraction and multi-line input utilities.
|
|
3
|
-
*
|
|
4
|
-
* Used by `planr task fix` to intelligently truncate verbose build/test
|
|
5
|
-
* output down to the error-relevant portion before sending to an AI agent.
|
|
6
|
-
*/
|
|
7
|
-
/** Maximum lines to send to the agent from piped input */
|
|
8
|
-
const MAX_ERROR_LINES = 150;
|
|
9
|
-
/** Context lines to keep before the first error marker */
|
|
10
|
-
const CONTEXT_BEFORE = 20;
|
|
11
|
-
/** Patterns that indicate the start of an error section */
|
|
12
|
-
const ERROR_MARKERS = [
|
|
13
|
-
/^error/i,
|
|
14
|
-
/^FAIL/i,
|
|
15
|
-
/=> ERROR/,
|
|
16
|
-
/^\s*[✗✘]/,
|
|
17
|
-
/^fatal:/i,
|
|
18
|
-
/^panic:/,
|
|
19
|
-
/Traceback/,
|
|
20
|
-
/^npm ERR!/,
|
|
21
|
-
/^SyntaxError/,
|
|
22
|
-
/^TypeError/,
|
|
23
|
-
/^ReferenceError/,
|
|
24
|
-
/Could not/i,
|
|
25
|
-
/No matching/i,
|
|
26
|
-
/exit code: \d+/,
|
|
27
|
-
/did not complete successfully/,
|
|
28
|
-
];
|
|
29
|
-
/**
|
|
30
|
-
* Extract only the error-relevant portion from verbose build output.
|
|
31
|
-
*
|
|
32
|
-
* - Input ≤ 150 lines → returned as-is
|
|
33
|
-
* - Error marker found → keeps 20 lines of context before it + up to 130 after
|
|
34
|
-
* - No marker found → keeps the last 150 lines (tail)
|
|
35
|
-
*/
|
|
36
|
-
export function extractErrorContext(raw) {
|
|
37
|
-
const lines = raw.split('\n');
|
|
38
|
-
if (lines.length <= MAX_ERROR_LINES)
|
|
39
|
-
return raw;
|
|
40
|
-
const firstErrorIdx = lines.findIndex((line) => ERROR_MARKERS.some((re) => re.test(line)));
|
|
41
|
-
if (firstErrorIdx === -1) {
|
|
42
|
-
const tail = lines.slice(-MAX_ERROR_LINES);
|
|
43
|
-
return `... (${lines.length - MAX_ERROR_LINES} lines trimmed)\n${tail.join('\n')}`;
|
|
44
|
-
}
|
|
45
|
-
const start = Math.max(0, firstErrorIdx - CONTEXT_BEFORE);
|
|
46
|
-
const extracted = lines.slice(start, start + MAX_ERROR_LINES);
|
|
47
|
-
const parts = [];
|
|
48
|
-
if (start > 0) {
|
|
49
|
-
parts.push(`... (${start} lines trimmed)`);
|
|
50
|
-
}
|
|
51
|
-
parts.push(extracted.join('\n'));
|
|
52
|
-
if (start + MAX_ERROR_LINES < lines.length) {
|
|
53
|
-
parts.push(`... (${lines.length - start - MAX_ERROR_LINES} lines trimmed)`);
|
|
54
|
-
}
|
|
55
|
-
return parts.join('\n');
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Read multi-line input from the terminal.
|
|
59
|
-
*
|
|
60
|
-
* The user types or pastes text and submits by pressing Enter on an
|
|
61
|
-
* empty line (double Enter). Large pastes are automatically truncated
|
|
62
|
-
* to the error-relevant portion.
|
|
63
|
-
*/
|
|
64
|
-
export async function readMultilineInput() {
|
|
65
|
-
const { createInterface } = await import('node:readline');
|
|
66
|
-
return new Promise((resolve) => {
|
|
67
|
-
const rl = createInterface({
|
|
68
|
-
input: process.stdin,
|
|
69
|
-
output: process.stdout,
|
|
70
|
-
prompt: '',
|
|
71
|
-
});
|
|
72
|
-
const lines = [];
|
|
73
|
-
let consecutiveEmpty = 0;
|
|
74
|
-
rl.on('line', (line) => {
|
|
75
|
-
if (line.trim() === '') {
|
|
76
|
-
consecutiveEmpty++;
|
|
77
|
-
if (consecutiveEmpty >= 2) {
|
|
78
|
-
rl.close();
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
lines.push(line);
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
consecutiveEmpty = 0;
|
|
85
|
-
lines.push(line);
|
|
86
|
-
}
|
|
87
|
-
});
|
|
88
|
-
rl.on('close', () => {
|
|
89
|
-
const raw = lines.join('\n').trim();
|
|
90
|
-
resolve(raw.split('\n').length > MAX_ERROR_LINES ? extractErrorContext(raw) : raw);
|
|
91
|
-
});
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
//# sourceMappingURL=error-context.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error-context.js","sourceRoot":"","sources":["../../src/utils/error-context.ts"],"names":[],"mappings":"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"}
|