@speclife/core 0.1.7 → 0.3.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 (72) hide show
  1. package/dist/adapters/git-adapter.d.ts +15 -2
  2. package/dist/adapters/git-adapter.d.ts.map +1 -1
  3. package/dist/adapters/git-adapter.js +75 -4
  4. package/dist/adapters/git-adapter.js.map +1 -1
  5. package/dist/adapters/github-adapter.d.ts +39 -26
  6. package/dist/adapters/github-adapter.d.ts.map +1 -1
  7. package/dist/adapters/github-adapter.js +154 -93
  8. package/dist/adapters/github-adapter.js.map +1 -1
  9. package/dist/adapters/index.d.ts +5 -4
  10. package/dist/adapters/index.d.ts.map +1 -1
  11. package/dist/adapters/index.js +6 -5
  12. package/dist/adapters/index.js.map +1 -1
  13. package/dist/config.d.ts +52 -4
  14. package/dist/config.d.ts.map +1 -1
  15. package/dist/config.js +58 -0
  16. package/dist/config.js.map +1 -1
  17. package/dist/index.d.ts +2 -1
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +3 -1
  20. package/dist/index.js.map +1 -1
  21. package/dist/types.d.ts +124 -15
  22. package/dist/types.d.ts.map +1 -1
  23. package/dist/types.js.map +1 -1
  24. package/dist/utils/format.d.ts +57 -0
  25. package/dist/utils/format.d.ts.map +1 -0
  26. package/dist/utils/format.js +154 -0
  27. package/dist/utils/format.js.map +1 -0
  28. package/dist/utils/index.d.ts +5 -0
  29. package/dist/utils/index.d.ts.map +1 -0
  30. package/dist/utils/index.js +5 -0
  31. package/dist/utils/index.js.map +1 -0
  32. package/dist/workflows/implement.d.ts +24 -16
  33. package/dist/workflows/implement.d.ts.map +1 -1
  34. package/dist/workflows/implement.js +70 -258
  35. package/dist/workflows/implement.js.map +1 -1
  36. package/dist/workflows/index.d.ts +6 -0
  37. package/dist/workflows/index.d.ts.map +1 -1
  38. package/dist/workflows/index.js +7 -0
  39. package/dist/workflows/index.js.map +1 -1
  40. package/dist/workflows/init.d.ts +11 -7
  41. package/dist/workflows/init.d.ts.map +1 -1
  42. package/dist/workflows/init.js +16 -107
  43. package/dist/workflows/init.js.map +1 -1
  44. package/dist/workflows/merge.d.ts +9 -13
  45. package/dist/workflows/merge.d.ts.map +1 -1
  46. package/dist/workflows/merge.js +11 -103
  47. package/dist/workflows/merge.js.map +1 -1
  48. package/dist/workflows/release.d.ts +28 -0
  49. package/dist/workflows/release.d.ts.map +1 -0
  50. package/dist/workflows/release.js +212 -0
  51. package/dist/workflows/release.js.map +1 -0
  52. package/dist/workflows/submit.d.ts +7 -1
  53. package/dist/workflows/submit.d.ts.map +1 -1
  54. package/dist/workflows/submit.js +92 -4
  55. package/dist/workflows/submit.js.map +1 -1
  56. package/dist/workflows/worktree.d.ts +62 -0
  57. package/dist/workflows/worktree.d.ts.map +1 -0
  58. package/dist/workflows/worktree.js +97 -0
  59. package/dist/workflows/worktree.js.map +1 -0
  60. package/package.json +2 -2
  61. package/dist/adapters/claude-cli-adapter.d.ts +0 -72
  62. package/dist/adapters/claude-cli-adapter.d.ts.map +0 -1
  63. package/dist/adapters/claude-cli-adapter.js +0 -232
  64. package/dist/adapters/claude-cli-adapter.js.map +0 -1
  65. package/dist/adapters/claude-sdk-adapter.d.ts +0 -49
  66. package/dist/adapters/claude-sdk-adapter.d.ts.map +0 -1
  67. package/dist/adapters/claude-sdk-adapter.js +0 -278
  68. package/dist/adapters/claude-sdk-adapter.js.map +0 -1
  69. package/dist/adapters/cursor-adapter.d.ts +0 -26
  70. package/dist/adapters/cursor-adapter.d.ts.map +0 -1
  71. package/dist/adapters/cursor-adapter.js +0 -54
  72. package/dist/adapters/cursor-adapter.js.map +0 -1
@@ -1,72 +0,0 @@
1
- /**
2
- * Claude CLI adapter for implementation
3
- *
4
- * Uses the Claude CLI which supports MCP servers natively.
5
- * This is the primary/recommended implementation mode.
6
- */
7
- /** Options for running Claude CLI */
8
- export interface ClaudeCliOptions {
9
- /** Working directory for the CLI */
10
- cwd: string;
11
- /** Model to use (optional, uses CLI default if not specified) */
12
- model?: string;
13
- /** Maximum tokens to generate */
14
- maxTokens?: number;
15
- /** Whether to print to stdout/stderr */
16
- print?: boolean;
17
- }
18
- /** Result from Claude CLI execution */
19
- export interface ClaudeCliResult {
20
- /** Exit code from the process */
21
- exitCode: number;
22
- /** Standard output */
23
- stdout: string;
24
- /** Standard error */
25
- stderr: string;
26
- /** Whether execution was successful */
27
- success: boolean;
28
- }
29
- /** Claude CLI adapter interface */
30
- export interface ClaudeCliAdapter {
31
- /** Check if Claude CLI is available */
32
- isAvailable(): Promise<boolean>;
33
- /** Get Claude CLI version */
34
- getVersion(): Promise<string | null>;
35
- /** Run Claude CLI with a prompt */
36
- run(prompt: string, options: ClaudeCliOptions): Promise<ClaudeCliResult>;
37
- /** Run Claude CLI with streaming output */
38
- runStreaming(prompt: string, options: ClaudeCliOptions, onOutput?: (chunk: string) => void): Promise<ClaudeCliResult>;
39
- }
40
- /**
41
- * Create a Claude CLI adapter
42
- */
43
- export declare function createClaudeCliAdapter(): ClaudeCliAdapter;
44
- /**
45
- * Generate an implementation prompt for Claude CLI
46
- */
47
- export declare function generateImplementationPrompt(context: {
48
- changeId: string;
49
- proposal: string;
50
- tasks: string;
51
- design?: string;
52
- contextFiles?: Array<{
53
- path: string;
54
- content: string;
55
- }>;
56
- }): string;
57
- /**
58
- * Generate a version analysis prompt for Claude CLI
59
- */
60
- export declare function generateVersionAnalysisPrompt(context: {
61
- changeId: string;
62
- proposal: string;
63
- diff: string;
64
- }): string;
65
- /**
66
- * Parse version analysis response from Claude
67
- */
68
- export declare function parseVersionAnalysisResponse(response: string): {
69
- bump: 'patch' | 'minor' | 'major';
70
- reasoning: string;
71
- } | null;
72
- //# sourceMappingURL=claude-cli-adapter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude-cli-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/claude-cli-adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,qCAAqC;AACrC,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wCAAwC;IACxC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,uCAAuC;AACvC,MAAM,WAAW,eAAe;IAC9B,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,mCAAmC;AACnC,MAAM,WAAW,gBAAgB;IAC/B,uCAAuC;IACvC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAEhC,6BAA6B;IAC7B,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAErC,mCAAmC;IACnC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAEzE,2CAA2C;IAC3C,YAAY,CACV,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,gBAAgB,EACzB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GACjC,OAAO,CAAC,eAAe,CAAC,CAAC;CAC7B;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,gBAAgB,CAgGzD;AAsBD;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE;IACpD,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzD,GAAG,MAAM,CAmDT;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE;IACrD,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,MAAM,CAkDT;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAqB9H"}
@@ -1,232 +0,0 @@
1
- /**
2
- * Claude CLI adapter for implementation
3
- *
4
- * Uses the Claude CLI which supports MCP servers natively.
5
- * This is the primary/recommended implementation mode.
6
- */
7
- import { execa } from 'execa';
8
- /**
9
- * Create a Claude CLI adapter
10
- */
11
- export function createClaudeCliAdapter() {
12
- return {
13
- async isAvailable() {
14
- try {
15
- await execa('claude', ['--version']);
16
- return true;
17
- }
18
- catch {
19
- return false;
20
- }
21
- },
22
- async getVersion() {
23
- try {
24
- const result = await execa('claude', ['--version']);
25
- return result.stdout.trim();
26
- }
27
- catch {
28
- return null;
29
- }
30
- },
31
- async run(prompt, options) {
32
- const args = buildArgs(options);
33
- try {
34
- const result = await execa('claude', args, {
35
- cwd: options.cwd,
36
- input: prompt,
37
- reject: false,
38
- });
39
- const exitCode = result.exitCode ?? 1;
40
- return {
41
- exitCode,
42
- stdout: result.stdout,
43
- stderr: result.stderr,
44
- success: exitCode === 0,
45
- };
46
- }
47
- catch (error) {
48
- const message = error instanceof Error ? error.message : String(error);
49
- return {
50
- exitCode: 1,
51
- stdout: '',
52
- stderr: message,
53
- success: false,
54
- };
55
- }
56
- },
57
- async runStreaming(prompt, options, onOutput) {
58
- const args = buildArgs(options);
59
- try {
60
- const subprocess = execa('claude', args, {
61
- cwd: options.cwd,
62
- input: prompt,
63
- reject: false,
64
- });
65
- // Stream stdout if callback provided
66
- if (onOutput && subprocess.stdout) {
67
- subprocess.stdout.on('data', (chunk) => {
68
- onOutput(chunk.toString());
69
- });
70
- }
71
- // Also optionally stream stderr
72
- if (onOutput && subprocess.stderr) {
73
- subprocess.stderr.on('data', (chunk) => {
74
- onOutput(chunk.toString());
75
- });
76
- }
77
- const result = await subprocess;
78
- const exitCode = result.exitCode ?? 1;
79
- return {
80
- exitCode,
81
- stdout: result.stdout,
82
- stderr: result.stderr,
83
- success: exitCode === 0,
84
- };
85
- }
86
- catch (error) {
87
- const message = error instanceof Error ? error.message : String(error);
88
- return {
89
- exitCode: 1,
90
- stdout: '',
91
- stderr: message,
92
- success: false,
93
- };
94
- }
95
- },
96
- };
97
- }
98
- /**
99
- * Build CLI arguments from options
100
- */
101
- function buildArgs(options) {
102
- const args = [];
103
- // Use print mode for non-interactive execution
104
- args.push('--print');
105
- if (options.model) {
106
- args.push('--model', options.model);
107
- }
108
- if (options.maxTokens) {
109
- args.push('--max-tokens', String(options.maxTokens));
110
- }
111
- return args;
112
- }
113
- /**
114
- * Generate an implementation prompt for Claude CLI
115
- */
116
- export function generateImplementationPrompt(context) {
117
- const sections = [];
118
- sections.push(`# Implementation Request: ${context.changeId}`);
119
- sections.push('');
120
- sections.push('You are implementing a change based on the following proposal and tasks.');
121
- sections.push('Please implement each uncompleted task, writing code and running tests as needed.');
122
- sections.push('');
123
- sections.push('## Proposal');
124
- sections.push('```markdown');
125
- sections.push(context.proposal);
126
- sections.push('```');
127
- sections.push('');
128
- sections.push('## Tasks');
129
- sections.push('```markdown');
130
- sections.push(context.tasks);
131
- sections.push('```');
132
- sections.push('');
133
- if (context.design) {
134
- sections.push('## Design');
135
- sections.push('```markdown');
136
- sections.push(context.design);
137
- sections.push('```');
138
- sections.push('');
139
- }
140
- if (context.contextFiles && context.contextFiles.length > 0) {
141
- sections.push('## Context Files');
142
- for (const file of context.contextFiles) {
143
- sections.push(`### ${file.path}`);
144
- sections.push('```');
145
- sections.push(file.content);
146
- sections.push('```');
147
- sections.push('');
148
- }
149
- }
150
- sections.push('## Instructions');
151
- sections.push('');
152
- sections.push('1. Work through each uncompleted task (marked with `[ ]`)');
153
- sections.push('2. Write the necessary code changes');
154
- sections.push('3. Run tests to verify your changes work');
155
- sections.push('4. If tests fail, analyze the failure and fix the code');
156
- sections.push('5. Continue until all tasks are complete or you encounter a blocking issue');
157
- sections.push('');
158
- sections.push('Begin implementation now.');
159
- return sections.join('\n');
160
- }
161
- /**
162
- * Generate a version analysis prompt for Claude CLI
163
- */
164
- export function generateVersionAnalysisPrompt(context) {
165
- const sections = [];
166
- sections.push('# Version Bump Analysis');
167
- sections.push('');
168
- sections.push('Analyze the following change and determine the appropriate semantic version bump.');
169
- sections.push('');
170
- sections.push('## Change Proposal');
171
- sections.push('```markdown');
172
- sections.push(context.proposal);
173
- sections.push('```');
174
- sections.push('');
175
- sections.push('## Code Changes (Diff)');
176
- sections.push('```diff');
177
- sections.push(context.diff);
178
- sections.push('```');
179
- sections.push('');
180
- sections.push('## Semantic Versioning Guidelines');
181
- sections.push('');
182
- sections.push('- **major**: Breaking changes that require users to update their code');
183
- sections.push(' - Removed or renamed public APIs, types, or exports');
184
- sections.push(' - Changed function signatures or behavior in incompatible ways');
185
- sections.push(' - Removed support for previously supported features');
186
- sections.push('');
187
- sections.push('- **minor**: New features that are backwards compatible');
188
- sections.push(' - New exports, functions, types, or options');
189
- sections.push(' - New optional parameters with defaults');
190
- sections.push(' - Additive changes that don\'t break existing code');
191
- sections.push('');
192
- sections.push('- **patch**: Bug fixes and internal changes');
193
- sections.push(' - Bug fixes that don\'t change the API');
194
- sections.push(' - Documentation updates');
195
- sections.push(' - Internal refactoring without API changes');
196
- sections.push(' - Dependency updates');
197
- sections.push(' - Performance improvements');
198
- sections.push('');
199
- sections.push('## Instructions');
200
- sections.push('');
201
- sections.push('Respond with ONLY a JSON object (no markdown code fences, no explanation outside the JSON):');
202
- sections.push('');
203
- sections.push('{');
204
- sections.push(' "bump": "patch" | "minor" | "major",');
205
- sections.push(' "reasoning": "Brief explanation of why this bump type is appropriate"');
206
- sections.push('}');
207
- return sections.join('\n');
208
- }
209
- /**
210
- * Parse version analysis response from Claude
211
- */
212
- export function parseVersionAnalysisResponse(response) {
213
- try {
214
- // Try to extract JSON from the response
215
- const jsonMatch = response.match(/\{[\s\S]*"bump"[\s\S]*"reasoning"[\s\S]*\}/);
216
- if (!jsonMatch) {
217
- return null;
218
- }
219
- const parsed = JSON.parse(jsonMatch[0]);
220
- if (!['patch', 'minor', 'major'].includes(parsed.bump)) {
221
- return null;
222
- }
223
- return {
224
- bump: parsed.bump,
225
- reasoning: String(parsed.reasoning || 'No reasoning provided'),
226
- };
227
- }
228
- catch {
229
- return null;
230
- }
231
- }
232
- //# sourceMappingURL=claude-cli-adapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude-cli-adapter.js","sourceRoot":"","sources":["../../src/adapters/claude-cli-adapter.ts"],"names":[],"mappings":"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"}
@@ -1,49 +0,0 @@
1
- /**
2
- * Claude SDK adapter for fully automated implementation
3
- *
4
- * Uses the Anthropic SDK directly with tool-use for a fully automated
5
- * agentic loop that can read/write files and execute shell commands.
6
- */
7
- import { type ProgressCallback } from '../types.js';
8
- /** Options for the agentic loop */
9
- export interface AgenticLoopOptions {
10
- /** Working directory */
11
- cwd: string;
12
- /** Model to use */
13
- model: string;
14
- /** Maximum iterations for the agentic loop */
15
- maxIterations?: number;
16
- /** Maximum tokens per response */
17
- maxTokens?: number;
18
- /** Progress callback */
19
- onProgress?: ProgressCallback;
20
- }
21
- /** Result from the agentic loop */
22
- export interface AgenticLoopResult {
23
- /** Whether the loop completed successfully */
24
- success: boolean;
25
- /** Number of iterations performed */
26
- iterations: number;
27
- /** Files that were modified */
28
- filesModified: string[];
29
- /** Final response from Claude */
30
- finalResponse: string;
31
- /** Any errors encountered */
32
- errors: string[];
33
- }
34
- /** Claude SDK adapter interface */
35
- export interface ClaudeSdkAdapter {
36
- /** Check if API key is configured */
37
- isConfigured(): boolean;
38
- /** Run the agentic loop with tool-use */
39
- runAgenticLoop(systemPrompt: string, userPrompt: string, options: AgenticLoopOptions): Promise<AgenticLoopResult>;
40
- }
41
- /**
42
- * Create a Claude SDK adapter
43
- */
44
- export declare function createClaudeSdkAdapter(): ClaudeSdkAdapter;
45
- /**
46
- * Generate system prompt for the agentic implementation loop
47
- */
48
- export declare function generateAgenticSystemPrompt(): string;
49
- //# sourceMappingURL=claude-sdk-adapter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude-sdk-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/claude-sdk-adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAoBpD,mCAAmC;AACnC,MAAM,WAAW,kBAAkB;IACjC,wBAAwB;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,mBAAmB;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wBAAwB;IACxB,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B;AAED,mCAAmC;AACnC,MAAM,WAAW,iBAAiB;IAChC,8CAA8C;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,iCAAiC;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,6BAA6B;IAC7B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,mCAAmC;AACnC,MAAM,WAAW,gBAAgB;IAC/B,qCAAqC;IACrC,YAAY,IAAI,OAAO,CAAC;IAExB,yCAAyC;IACzC,cAAc,CACZ,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,gBAAgB,CA0IzD;AA4ID;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,CAkBpD"}
@@ -1,278 +0,0 @@
1
- /**
2
- * Claude SDK adapter for fully automated implementation
3
- *
4
- * Uses the Anthropic SDK directly with tool-use for a fully automated
5
- * agentic loop that can read/write files and execute shell commands.
6
- */
7
- import Anthropic from '@anthropic-ai/sdk';
8
- import { readFile, writeFile, mkdir } from 'fs/promises';
9
- import { dirname, join } from 'path';
10
- import { execa } from 'execa';
11
- /**
12
- * Create a Claude SDK adapter
13
- */
14
- export function createClaudeSdkAdapter() {
15
- const apiKey = process.env.ANTHROPIC_API_KEY;
16
- return {
17
- isConfigured() {
18
- return !!apiKey;
19
- },
20
- async runAgenticLoop(systemPrompt, userPrompt, options) {
21
- if (!apiKey) {
22
- return {
23
- success: false,
24
- iterations: 0,
25
- filesModified: [],
26
- finalResponse: '',
27
- errors: ['ANTHROPIC_API_KEY environment variable is not set'],
28
- };
29
- }
30
- const client = new Anthropic({ apiKey });
31
- const tools = buildToolDefinitions();
32
- const maxIterations = options.maxIterations ?? 50;
33
- const maxTokens = options.maxTokens ?? 4096;
34
- const messages = [
35
- { role: 'user', content: userPrompt },
36
- ];
37
- const filesModified = new Set();
38
- const errors = [];
39
- let iterations = 0;
40
- let finalResponse = '';
41
- while (iterations < maxIterations) {
42
- iterations++;
43
- options.onProgress?.({
44
- type: 'step_completed',
45
- message: `Agentic loop iteration ${iterations}`,
46
- data: { iteration: iterations },
47
- });
48
- try {
49
- const response = await client.messages.create({
50
- model: options.model,
51
- max_tokens: maxTokens,
52
- system: systemPrompt,
53
- tools: tools,
54
- messages,
55
- });
56
- // Check if we're done (no more tool use)
57
- if (response.stop_reason === 'end_turn') {
58
- // Extract final text response
59
- for (const block of response.content) {
60
- if (block.type === 'text') {
61
- finalResponse = block.text;
62
- }
63
- }
64
- break;
65
- }
66
- // Process tool calls
67
- const assistantContent = [];
68
- const toolResults = [];
69
- for (const block of response.content) {
70
- if (block.type === 'text') {
71
- assistantContent.push({ type: 'text', text: block.text });
72
- }
73
- else if (block.type === 'tool_use') {
74
- assistantContent.push({
75
- type: 'tool_use',
76
- id: block.id,
77
- name: block.name,
78
- input: block.input,
79
- });
80
- // Execute the tool
81
- const result = await executeTool(block.name, block.input, options.cwd);
82
- // Track modified files
83
- if (block.name === 'write_file' && result.success) {
84
- const input = block.input;
85
- if (input.path) {
86
- filesModified.add(input.path);
87
- }
88
- }
89
- if (!result.success && result.error) {
90
- errors.push(result.error);
91
- }
92
- options.onProgress?.({
93
- type: 'step_completed',
94
- message: `Tool ${block.name}: ${result.success ? 'success' : 'failed'}`,
95
- data: { tool: block.name, success: result.success },
96
- });
97
- toolResults.push({
98
- type: 'tool_result',
99
- tool_use_id: block.id,
100
- content: result.output,
101
- });
102
- }
103
- }
104
- // Add assistant message
105
- messages.push({ role: 'assistant', content: assistantContent });
106
- // Add tool results
107
- if (toolResults.length > 0) {
108
- messages.push({ role: 'user', content: toolResults });
109
- }
110
- }
111
- catch (error) {
112
- const message = error instanceof Error ? error.message : String(error);
113
- errors.push(`API error: ${message}`);
114
- break;
115
- }
116
- }
117
- return {
118
- success: errors.length === 0,
119
- iterations,
120
- filesModified: Array.from(filesModified),
121
- finalResponse,
122
- errors,
123
- };
124
- },
125
- };
126
- }
127
- /**
128
- * Build tool definitions for the agentic loop
129
- */
130
- function buildToolDefinitions() {
131
- return [
132
- {
133
- name: 'read_file',
134
- description: 'Read the contents of a file at the given path',
135
- input_schema: {
136
- type: 'object',
137
- properties: {
138
- path: {
139
- type: 'string',
140
- description: 'The file path to read, relative to the working directory',
141
- },
142
- },
143
- required: ['path'],
144
- },
145
- },
146
- {
147
- name: 'write_file',
148
- description: 'Write content to a file at the given path. Creates directories if needed.',
149
- input_schema: {
150
- type: 'object',
151
- properties: {
152
- path: {
153
- type: 'string',
154
- description: 'The file path to write, relative to the working directory',
155
- },
156
- content: {
157
- type: 'string',
158
- description: 'The content to write to the file',
159
- },
160
- },
161
- required: ['path', 'content'],
162
- },
163
- },
164
- {
165
- name: 'run_command',
166
- description: 'Run a shell command and return its output. Use for running tests, builds, etc.',
167
- input_schema: {
168
- type: 'object',
169
- properties: {
170
- command: {
171
- type: 'string',
172
- description: 'The shell command to execute',
173
- },
174
- },
175
- required: ['command'],
176
- },
177
- },
178
- {
179
- name: 'list_directory',
180
- description: 'List files and directories at the given path',
181
- input_schema: {
182
- type: 'object',
183
- properties: {
184
- path: {
185
- type: 'string',
186
- description: 'The directory path to list, relative to the working directory',
187
- },
188
- },
189
- required: ['path'],
190
- },
191
- },
192
- ];
193
- }
194
- /**
195
- * Execute a tool and return the result
196
- */
197
- async function executeTool(name, input, cwd) {
198
- try {
199
- switch (name) {
200
- case 'read_file': {
201
- const path = join(cwd, input.path);
202
- const content = await readFile(path, 'utf-8');
203
- return { success: true, output: content };
204
- }
205
- case 'write_file': {
206
- const path = join(cwd, input.path);
207
- const content = input.content;
208
- await mkdir(dirname(path), { recursive: true });
209
- await writeFile(path, content, 'utf-8');
210
- return { success: true, output: `File written: ${input.path}` };
211
- }
212
- case 'run_command': {
213
- const command = input.command;
214
- const result = await execa(command, {
215
- cwd,
216
- shell: true,
217
- reject: false,
218
- });
219
- const output = [
220
- `Exit code: ${result.exitCode}`,
221
- result.stdout ? `stdout:\n${result.stdout}` : '',
222
- result.stderr ? `stderr:\n${result.stderr}` : '',
223
- ].filter(Boolean).join('\n');
224
- return {
225
- success: result.exitCode === 0,
226
- output,
227
- error: result.exitCode !== 0 ? `Command failed with exit code ${result.exitCode}` : undefined,
228
- };
229
- }
230
- case 'list_directory': {
231
- const path = join(cwd, input.path);
232
- const { readdir } = await import('fs/promises');
233
- const entries = await readdir(path, { withFileTypes: true });
234
- const output = entries
235
- .map(e => `${e.isDirectory() ? 'd' : 'f'} ${e.name}`)
236
- .join('\n');
237
- return { success: true, output };
238
- }
239
- default:
240
- return {
241
- success: false,
242
- output: '',
243
- error: `Unknown tool: ${name}`,
244
- };
245
- }
246
- }
247
- catch (error) {
248
- const message = error instanceof Error ? error.message : String(error);
249
- return {
250
- success: false,
251
- output: '',
252
- error: message,
253
- };
254
- }
255
- }
256
- /**
257
- * Generate system prompt for the agentic implementation loop
258
- */
259
- export function generateAgenticSystemPrompt() {
260
- return `You are an expert software engineer implementing changes based on a proposal and task list.
261
-
262
- Your capabilities:
263
- - read_file: Read file contents
264
- - write_file: Create or modify files
265
- - run_command: Execute shell commands (tests, builds, etc.)
266
- - list_directory: Explore the codebase structure
267
-
268
- Guidelines:
269
- 1. Work through each uncompleted task systematically
270
- 2. Read relevant files before making changes
271
- 3. Make minimal, focused changes to complete each task
272
- 4. Run tests after making changes to verify correctness
273
- 5. If tests fail, analyze the output and fix the issues
274
- 6. Continue until all tasks are complete or you encounter a blocking issue
275
-
276
- When you've completed all tasks or cannot proceed further, provide a summary of what was accomplished.`;
277
- }
278
- //# sourceMappingURL=claude-sdk-adapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude-sdk-adapter.js","sourceRoot":"","sources":["../../src/adapters/claude-sdk-adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AA8D9B;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAE7C,OAAO;QACL,YAAY;YACV,OAAO,CAAC,CAAC,MAAM,CAAC;QAClB,CAAC;QAED,KAAK,CAAC,cAAc,CAClB,YAAoB,EACpB,UAAkB,EAClB,OAA2B;YAE3B,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,UAAU,EAAE,CAAC;oBACb,aAAa,EAAE,EAAE;oBACjB,aAAa,EAAE,EAAE;oBACjB,MAAM,EAAE,CAAC,mDAAmD,CAAC;iBAC9D,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YACzC,MAAM,KAAK,GAAG,oBAAoB,EAAE,CAAC;YACrC,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;YAClD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC;YAE5C,MAAM,QAAQ,GAAsC;gBAClD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE;aACtC,CAAC;YAEF,MAAM,aAAa,GAAgB,IAAI,GAAG,EAAE,CAAC;YAC7C,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,aAAa,GAAG,EAAE,CAAC;YAEvB,OAAO,UAAU,GAAG,aAAa,EAAE,CAAC;gBAClC,UAAU,EAAE,CAAC;gBAEb,OAAO,CAAC,UAAU,EAAE,CAAC;oBACnB,IAAI,EAAE,gBAAgB;oBACtB,OAAO,EAAE,0BAA0B,UAAU,EAAE;oBAC/C,IAAI,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;iBAChC,CAAC,CAAC;gBAEH,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;wBAC5C,KAAK,EAAE,OAAO,CAAC,KAAK;wBACpB,UAAU,EAAE,SAAS;wBACrB,MAAM,EAAE,YAAY;wBACpB,KAAK,EAAE,KAAkC;wBACzC,QAAQ;qBACT,CAAC,CAAC;oBAEH,yCAAyC;oBACzC,IAAI,QAAQ,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;wBACxC,8BAA8B;wBAC9B,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;4BACrC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gCAC1B,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC;4BAC7B,CAAC;wBACH,CAAC;wBACD,MAAM;oBACR,CAAC;oBAED,qBAAqB;oBACrB,MAAM,gBAAgB,GAAoF,EAAE,CAAC;oBAC7G,MAAM,WAAW,GAA8C,EAAE,CAAC;oBAElE,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;wBACrC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;4BAC1B,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;wBAC5D,CAAC;6BAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;4BACrC,gBAAgB,CAAC,IAAI,CAAC;gCACpB,IAAI,EAAE,UAAU;gCAChB,EAAE,EAAE,KAAK,CAAC,EAAE;gCACZ,IAAI,EAAE,KAAK,CAAC,IAAI;gCAChB,KAAK,EAAE,KAAK,CAAC,KAAgC;6BAC9C,CAAC,CAAC;4BAEH,mBAAmB;4BACnB,MAAM,MAAM,GAAG,MAAM,WAAW,CAC9B,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,KAAgC,EACtC,OAAO,CAAC,GAAG,CACZ,CAAC;4BAEF,uBAAuB;4BACvB,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gCAClD,MAAM,KAAK,GAAG,KAAK,CAAC,KAA0B,CAAC;gCAC/C,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oCACf,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gCAChC,CAAC;4BACH,CAAC;4BAED,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gCACpC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;4BAC5B,CAAC;4BAED,OAAO,CAAC,UAAU,EAAE,CAAC;gCACnB,IAAI,EAAE,gBAAgB;gCACtB,OAAO,EAAE,QAAQ,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;gCACvE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE;6BACpD,CAAC,CAAC;4BAEH,WAAW,CAAC,IAAI,CAAC;gCACf,IAAI,EAAE,aAAa;gCACnB,WAAW,EAAE,KAAK,CAAC,EAAE;gCACrB,OAAO,EAAE,MAAM,CAAC,MAAM;6BACvB,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;oBAED,wBAAwB;oBACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;oBAEhE,mBAAmB;oBACnB,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;oBACxD,CAAC;gBAEH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACvE,MAAM,CAAC,IAAI,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC;oBACrC,MAAM;gBACR,CAAC;YACH,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;gBAC5B,UAAU;gBACV,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC;gBACxC,aAAa;gBACb,MAAM;aACP,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB;IAC3B,OAAO;QACL;YACE,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,+CAA+C;YAC5D,YAAY,EAAE;gBACZ,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,IAAI,EAAE;wBACJ,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,0DAA0D;qBACxE;iBACF;gBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;aACnB;SACF;QACD;YACE,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,2EAA2E;YACxF,YAAY,EAAE;gBACZ,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,IAAI,EAAE;wBACJ,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,2DAA2D;qBACzE;oBACD,OAAO,EAAE;wBACP,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,kCAAkC;qBAChD;iBACF;gBACD,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;aAC9B;SACF;QACD;YACE,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,gFAAgF;YAC7F,YAAY,EAAE;gBACZ,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,OAAO,EAAE;wBACP,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,8BAA8B;qBAC5C;iBACF;gBACD,QAAQ,EAAE,CAAC,SAAS,CAAC;aACtB;SACF;QACD;YACE,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,8CAA8C;YAC3D,YAAY,EAAE;gBACZ,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,IAAI,EAAE;wBACJ,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,+DAA+D;qBAC7E;iBACF;gBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;aACnB;SACF;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,WAAW,CACxB,IAAY,EACZ,KAA8B,EAC9B,GAAW;IAEX,IAAI,CAAC;QACH,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAc,CAAC,CAAC;gBAC7C,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC9C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;YAC5C,CAAC;YAED,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAc,CAAC,CAAC;gBAC7C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAiB,CAAC;gBACxC,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAChD,MAAM,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;gBACxC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,iBAAiB,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAClE,CAAC;YAED,KAAK,aAAa,CAAC,CAAC,CAAC;gBACnB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAiB,CAAC;gBACxC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE;oBAClC,GAAG;oBACH,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,KAAK;iBACd,CAAC,CAAC;gBACH,MAAM,MAAM,GAAG;oBACb,cAAc,MAAM,CAAC,QAAQ,EAAE;oBAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;oBAChD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;iBACjD,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC7B,OAAO;oBACL,OAAO,EAAE,MAAM,CAAC,QAAQ,KAAK,CAAC;oBAC9B,MAAM;oBACN,KAAK,EAAE,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,iCAAiC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;iBAC9F,CAAC;YACJ,CAAC;YAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;gBACtB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAc,CAAC,CAAC;gBAC7C,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;gBAChD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC7D,MAAM,MAAM,GAAG,OAAO;qBACnB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;qBACpD,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YACnC,CAAC;YAED;gBACE,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,EAAE;oBACV,KAAK,EAAE,iBAAiB,IAAI,EAAE;iBAC/B,CAAC;QACN,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,OAAO;SACf,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B;IACzC,OAAO;;;;;;;;;;;;;;;;uGAgB8F,CAAC;AACxG,CAAC"}